HelloWorld.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .data 0000000e 00800100 000003e0 00000474 2**0 CONTENTS, ALLOC, LOAD, DATA 1 .text 000003e0 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .bss 0000006f 0080010e 0080010e 00000482 2**0 ALLOC 3 .stab 000006f0 00000000 00000000 00000484 2**2 CONTENTS, READONLY, DEBUGGING 4 .stabstr 000003ae 00000000 00000000 00000b74 2**0 CONTENTS, READONLY, DEBUGGING 5 .comment 00000011 00000000 00000000 00000f22 2**0 CONTENTS, READONLY 6 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00000f34 2**2 CONTENTS, READONLY 7 .debug_info 000005f4 00000000 00000000 00000f74 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_abbrev 000005a2 00000000 00000000 00001568 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_line 0000001a 00000000 00000000 00001b0a 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_str 00000208 00000000 00000000 00001b24 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 3a 00 jmp 0x74 ; 0x74 <__ctors_end> 4: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 8: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> c: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 10: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 14: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 18: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 1c: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 20: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 24: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 28: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 2c: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 30: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 34: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 38: 0c 94 f2 00 jmp 0x1e4 ; 0x1e4 <__vector_14> 3c: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 40: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 44: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 48: 0c 94 09 01 jmp 0x212 ; 0x212 <__vector_18> 4c: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 50: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 54: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 58: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 5c: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 60: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 64: 0c 94 57 00 jmp 0xae ; 0xae <__bad_interrupt> 00000068 <__trampolines_end>: 68: 48 65 ori r20, 0x58 ; 88 6a: 6c 6c ori r22, 0xCC ; 204 6c: 6f 20 and r6, r15 6e: 57 6f ori r21, 0xF7 ; 247 70: 72 6c ori r23, 0xC2 ; 194 72: 64 00 .word 0x0064 ; ???? 00000074 <__ctors_end>: 74: 11 24 eor r1, r1 76: 1f be out 0x3f, r1 ; 63 78: cf ef ldi r28, 0xFF ; 255 7a: d8 e0 ldi r29, 0x08 ; 8 7c: de bf out 0x3e, r29 ; 62 7e: cd bf out 0x3d, r28 ; 61 00000080 <__do_clear_bss>: 80: 21 e0 ldi r18, 0x01 ; 1 82: ae e0 ldi r26, 0x0E ; 14 84: b1 e0 ldi r27, 0x01 ; 1 86: 01 c0 rjmp .+2 ; 0x8a <.do_clear_bss_start> 00000088 <.do_clear_bss_loop>: 88: 1d 92 st X+, r1 0000008a <.do_clear_bss_start>: 8a: ad 37 cpi r26, 0x7D ; 125 8c: b2 07 cpc r27, r18 8e: e1 f7 brne .-8 ; 0x88 <.do_clear_bss_loop> 00000090 <__do_copy_data>: 90: 11 e0 ldi r17, 0x01 ; 1 92: a0 e0 ldi r26, 0x00 ; 0 94: b1 e0 ldi r27, 0x01 ; 1 96: e0 ee ldi r30, 0xE0 ; 224 98: f3 e0 ldi r31, 0x03 ; 3 9a: 02 c0 rjmp .+4 ; 0xa0 <__do_copy_data+0x10> 9c: 05 90 lpm r0, Z+ 9e: 0d 92 st X+, r0 a0: ae 30 cpi r26, 0x0E ; 14 a2: b1 07 cpc r27, r17 a4: d9 f7 brne .-10 ; 0x9c <__do_copy_data+0xc> a6: 0e 94 86 00 call 0x10c ; 0x10c
aa: 0c 94 ee 01 jmp 0x3dc ; 0x3dc <_exit> 000000ae <__bad_interrupt>: ae: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 000000b2 : // Write a character to the serial port static int serial_write(char c, FILE *f) { #if TERMINAL_MODE if (c=='\n') b2: 8a 30 cpi r24, 0x0A ; 10 b4: 41 f4 brne .+16 ; 0xc6 { // wait until transmitter is ready #ifdef USE_SERIAL0 loop_until_bit_is_set(UCSR0A, UDRE0); b6: e0 ec ldi r30, 0xC0 ; 192 b8: f0 e0 ldi r31, 0x00 ; 0 ba: 90 81 ld r25, Z bc: 95 ff sbrs r25, 5 be: fd cf rjmp .-6 ; 0xba UDR0='\r'; c0: 9d e0 ldi r25, 0x0D ; 13 c2: 90 93 c6 00 sts 0x00C6, r25 ; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7f80c6> #endif } #endif // wait until transmitter is ready #ifdef USE_SERIAL0 loop_until_bit_is_set(UCSR0A, UDRE0); c6: e0 ec ldi r30, 0xC0 ; 192 c8: f0 e0 ldi r31, 0x00 ; 0 ca: 90 81 ld r25, Z cc: 95 ff sbrs r25, 5 ce: fd cf rjmp .-6 ; 0xca UDR0 = c; d0: 80 93 c6 00 sts 0x00C6, r24 ; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7f80c6> #ifdef USE_SERIAL3 loop_until_bit_is_set(UCSR3A, UDRE3); UDR3 = c; #endif return 0; } d4: 80 e0 ldi r24, 0x00 ; 0 d6: 90 e0 ldi r25, 0x00 ; 0 d8: 08 95 ret 000000da : // Read a character from serial port static int serial_read(FILE *f) { // wait until something is received while (inputStart==inputEnd); da: 90 91 74 01 lds r25, 0x0174 ; 0x800174 de: 80 91 73 01 lds r24, 0x0173 ; 0x800173 e2: 98 17 cp r25, r24 e4: d1 f3 breq .-12 ; 0xda char c=inputBuffer[inputStart]; e6: e0 91 74 01 lds r30, 0x0174 ; 0x800174 ea: f0 e0 ldi r31, 0x00 ; 0 ec: e2 5f subi r30, 0xF2 ; 242 ee: fe 4f sbci r31, 0xFE ; 254 f0: 80 81 ld r24, Z if (++inputStart>=SERIAL_INPUT_BUFFER_SIZE) f2: 90 91 74 01 lds r25, 0x0174 ; 0x800174 f6: 9f 5f subi r25, 0xFF ; 255 f8: 90 93 74 01 sts 0x0174, r25 ; 0x800174 fc: 94 36 cpi r25, 0x64 ; 100 fe: 10 f0 brcs .+4 ; 0x104 { inputStart=0; 100: 10 92 74 01 sts 0x0174, r1 ; 0x800174 } return c; } 104: 08 2e mov r0, r24 106: 00 0c add r0, r0 108: 99 0b sbc r25, r25 10a: 08 95 ret 0000010c
: PORTB &= ~(1< 112: 00 d0 rcall .+0 ; 0x114 114: 00 d0 rcall .+0 ; 0x116 116: cd b7 in r28, 0x3d ; 61 118: de b7 in r29, 0x3e ; 62 // Initialize the serial port void initSerialConsole(void) { #ifdef USE_SERIAL0 // set baudrate UBRR0H = UBRRH_VALUE; 11a: 81 e0 ldi r24, 0x01 ; 1 11c: 80 93 c5 00 sts 0x00C5, r24 ; 0x8000c5 <__TEXT_REGION_LENGTH__+0x7f80c5> UBRR0L = UBRRL_VALUE; 120: 80 ea ldi r24, 0xA0 ; 160 122: 80 93 c4 00 sts 0x00C4, r24 ; 0x8000c4 <__TEXT_REGION_LENGTH__+0x7f80c4> #if USE_2X UCSR0A |= (1 << U2X0); #else UCSR0A &= ~(1 << U2X0); 126: e0 ec ldi r30, 0xC0 ; 192 128: f0 e0 ldi r31, 0x00 ; 0 12a: 80 81 ld r24, Z 12c: 8d 7f andi r24, 0xFD ; 253 12e: 80 83 st Z, r24 #endif // framing format 8N1 #ifdef URSEL UCSR0C = (1< #endif // enable receiver and transmitter UCSR0B = (1< UCSR3C = (1< inputEnd=0; 152: 10 92 73 01 sts 0x0173, r1 ; 0x800173 defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) || \ defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || \ defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) void initSystemTimer(void) { cli(); 156: f8 94 cli TCCR0A = (1<16000000 TCCR0B = (1<2000000 TCCR0B = (1< 176: 30 91 76 01 lds r19, 0x0176 ; 0x800176 sei(); 17a: 78 94 sei // Return the current system timer value timer_t milliseconds(void) { timer_t tmp; cli(); 17c: f8 94 cli tmp=timerCounter; 17e: 80 91 75 01 lds r24, 0x0175 ; 0x800175 182: 90 91 76 01 lds r25, 0x0176 ; 0x800176 sei(); 186: 78 94 sei // Pause a number of milliseconds void delay(timer_t millis) { timer_t start=milliseconds(); while (milliseconds()-start #include "driver/serialconsole.h" #include "driver/systemtimer.h" void led_on() { DDRB |= (1< // Return the current system timer value timer_t milliseconds(void) { timer_t tmp; cli(); 19e: f8 94 cli tmp=timerCounter; 1a0: 20 91 75 01 lds r18, 0x0175 ; 0x800175 1a4: 30 91 76 01 lds r19, 0x0176 ; 0x800176 sei(); 1a8: 78 94 sei // Return the current system timer value timer_t milliseconds(void) { timer_t tmp; cli(); 1aa: f8 94 cli tmp=timerCounter; 1ac: 80 91 75 01 lds r24, 0x0175 ; 0x800175 1b0: 90 91 76 01 lds r25, 0x0176 ; 0x800176 sei(); 1b4: 78 94 sei // Pause a number of milliseconds void delay(timer_t millis) { timer_t start=milliseconds(); while (milliseconds()-start PORTB |= (1< 1c8: 90 91 76 01 lds r25, 0x0176 ; 0x800176 sei(); 1cc: 78 94 sei } else if (__radix < 2 || __radix > 36) { *__s = 0; return __s; } else { extern char *__utoa_ncheck (unsigned int, char *, unsigned char); return __utoa_ncheck (__val, __s, __radix); 1ce: 4a e0 ldi r20, 0x0A ; 10 1d0: be 01 movw r22, r28 1d2: 6f 5f subi r22, 0xFF ; 255 1d4: 7f 4f sbci r23, 0xFF ; 255 1d6: 0e 94 63 01 call 0x2c6 ; 0x2c6 <__utoa_ncheck> // printf("%d",milliseconds()); // alternative without printf, needs less memory: char buffer[6]; utoa(milliseconds(),buffer,10); puts(buffer); 1da: ce 01 movw r24, r28 1dc: 01 96 adiw r24, 0x01 ; 1 1de: 0e 94 be 01 call 0x37c ; 0x37c 1e2: c6 cf rjmp .-116 ; 0x170 000001e4 <__vector_14>: timerCounter++; } #elif defined(TIMER0_COMPA_vect) ISR(TIMER0_COMPA_vect) { 1e4: 1f 92 push r1 1e6: 0f 92 push r0 1e8: 0f b6 in r0, 0x3f ; 63 1ea: 0f 92 push r0 1ec: 11 24 eor r1, r1 1ee: 8f 93 push r24 1f0: 9f 93 push r25 timerCounter++; 1f2: 80 91 75 01 lds r24, 0x0175 ; 0x800175 1f6: 90 91 76 01 lds r25, 0x0176 ; 0x800176 1fa: 01 96 adiw r24, 0x01 ; 1 1fc: 90 93 76 01 sts 0x0176, r25 ; 0x800176 200: 80 93 75 01 sts 0x0175, r24 ; 0x800175 } 204: 9f 91 pop r25 206: 8f 91 pop r24 208: 0f 90 pop r0 20a: 0f be out 0x3f, r0 ; 63 20c: 0f 90 pop r0 20e: 1f 90 pop r1 210: 18 95 reti 00000212 <__vector_18>: } // USART Receive interrupt #ifdef USE_SERIAL0 ISR ( USART0_RX_vect ) { 212: 1f 92 push r1 214: 0f 92 push r0 216: 0f b6 in r0, 0x3f ; 63 218: 0f 92 push r0 21a: 11 24 eor r1, r1 21c: 8f 93 push r24 21e: 9f 93 push r25 220: ef 93 push r30 222: ff 93 push r31 gotchar(UDR0); 224: 80 91 c6 00 lds r24, 0x00C6 ; 0x8000c6 <__TEXT_REGION_LENGTH__+0x7f80c6> static void gotchar(char c) { #if TERMINAL_MODE // If received a backspace character, then discard the last // received character if (c=='\b') 228: 88 30 cpi r24, 0x08 ; 8 22a: 61 f4 brne .+24 ; 0x244 <__vector_18+0x32> { if (inputStart!=inputEnd) 22c: 90 91 74 01 lds r25, 0x0174 ; 0x800174 230: 80 91 73 01 lds r24, 0x0173 ; 0x800173 234: 98 17 cp r25, r24 236: f1 f1 breq .+124 ; 0x2b4 <__vector_18+0xa2> { if (--inputEnd<0) 238: 80 91 73 01 lds r24, 0x0173 ; 0x800173 23c: 81 50 subi r24, 0x01 ; 1 23e: 80 93 73 01 sts 0x0173, r24 ; 0x800173 242: 38 c0 rjmp .+112 ; 0x2b4 <__vector_18+0xa2> #endif return; } // If received a line feed and the previous character was a // carriage-return (or vice versa) then ignore the new character if ((c=='\n' && prevChar=='\r') || (c=='\r' && prevChar=='\n')) 244: 8a 30 cpi r24, 0x0A ; 10 246: 29 f4 brne .+10 ; 0x252 <__vector_18+0x40> 248: 90 91 72 01 lds r25, 0x0172 ; 0x800172 24c: 9d 30 cpi r25, 0x0D ; 13 24e: 41 f4 brne .+16 ; 0x260 <__vector_18+0x4e> 250: 31 c0 rjmp .+98 ; 0x2b4 <__vector_18+0xa2> 252: 8d 30 cpi r24, 0x0D ; 13 254: 39 f5 brne .+78 ; 0x2a4 <__vector_18+0x92> 256: 80 91 72 01 lds r24, 0x0172 ; 0x800172 25a: 8a 30 cpi r24, 0x0A ; 10 25c: 31 f5 brne .+76 ; 0x2aa <__vector_18+0x98> 25e: 2a c0 rjmp .+84 ; 0x2b4 <__vector_18+0xa2> { return; } prevChar=c; 260: 9a e0 ldi r25, 0x0A ; 10 262: 90 93 72 01 sts 0x0172, r25 ; 0x800172 { c='\n'; } #endif // Buffer the received character inputBuffer[inputEnd]=c; 266: e0 91 73 01 lds r30, 0x0173 ; 0x800173 26a: f0 e0 ldi r31, 0x00 ; 0 26c: e2 5f subi r30, 0xF2 ; 242 26e: fe 4f sbci r31, 0xFE ; 254 270: 80 83 st Z, r24 if (++inputEnd>=SERIAL_INPUT_BUFFER_SIZE) 272: 80 91 73 01 lds r24, 0x0173 ; 0x800173 276: 8f 5f subi r24, 0xFF ; 255 278: 80 93 73 01 sts 0x0173, r24 ; 0x800173 27c: 84 36 cpi r24, 0x64 ; 100 27e: 10 f0 brcs .+4 ; 0x284 <__vector_18+0x72> { inputEnd=0; 280: 10 92 73 01 sts 0x0173, r1 ; 0x800173 } // Discard oldest buffered character in case of buffer overflow if (inputEnd==inputStart) 284: 90 91 73 01 lds r25, 0x0173 ; 0x800173 288: 80 91 74 01 lds r24, 0x0174 ; 0x800174 28c: 98 13 cpse r25, r24 28e: 12 c0 rjmp .+36 ; 0x2b4 <__vector_18+0xa2> { if (++inputStart>=SERIAL_INPUT_BUFFER_SIZE) 290: 80 91 74 01 lds r24, 0x0174 ; 0x800174 294: 8f 5f subi r24, 0xFF ; 255 296: 80 93 74 01 sts 0x0174, r24 ; 0x800174 29a: 84 36 cpi r24, 0x64 ; 100 29c: 58 f0 brcs .+22 ; 0x2b4 <__vector_18+0xa2> { inputStart=0; 29e: 10 92 74 01 sts 0x0174, r1 ; 0x800174 2a2: 08 c0 rjmp .+16 ; 0x2b4 <__vector_18+0xa2> // carriage-return (or vice versa) then ignore the new character if ((c=='\n' && prevChar=='\r') || (c=='\r' && prevChar=='\n')) { return; } prevChar=c; 2a4: 80 93 72 01 sts 0x0172, r24 ; 0x800172 2a8: de cf rjmp .-68 ; 0x266 <__vector_18+0x54> 2aa: 8d e0 ldi r24, 0x0D ; 13 2ac: 80 93 72 01 sts 0x0172, r24 ; 0x800172 // If received a carriage-return, then replace it by a line-feed if (c=='\r') { c='\n'; 2b0: 8a e0 ldi r24, 0x0A ; 10 2b2: d9 cf rjmp .-78 ; 0x266 <__vector_18+0x54> // USART Receive interrupt #ifdef USE_SERIAL0 ISR ( USART0_RX_vect ) { gotchar(UDR0); } 2b4: ff 91 pop r31 2b6: ef 91 pop r30 2b8: 9f 91 pop r25 2ba: 8f 91 pop r24 2bc: 0f 90 pop r0 2be: 0f be out 0x3f, r0 ; 63 2c0: 0f 90 pop r0 2c2: 1f 90 pop r1 2c4: 18 95 reti 000002c6 <__utoa_ncheck>: 2c6: bb 27 eor r27, r27 000002c8 <__utoa_common>: 2c8: fb 01 movw r30, r22 2ca: 55 27 eor r21, r21 2cc: aa 27 eor r26, r26 2ce: 88 0f add r24, r24 2d0: 99 1f adc r25, r25 2d2: aa 1f adc r26, r26 2d4: a4 17 cp r26, r20 2d6: 10 f0 brcs .+4 ; 0x2dc <__utoa_common+0x14> 2d8: a4 1b sub r26, r20 2da: 83 95 inc r24 2dc: 50 51 subi r21, 0x10 ; 16 2de: b9 f7 brne .-18 ; 0x2ce <__utoa_common+0x6> 2e0: a0 5d subi r26, 0xD0 ; 208 2e2: aa 33 cpi r26, 0x3A ; 58 2e4: 08 f0 brcs .+2 ; 0x2e8 <__utoa_common+0x20> 2e6: a9 5d subi r26, 0xD9 ; 217 2e8: a1 93 st Z+, r26 2ea: 00 97 sbiw r24, 0x00 ; 0 2ec: 79 f7 brne .-34 ; 0x2cc <__utoa_common+0x4> 2ee: b1 11 cpse r27, r1 2f0: b1 93 st Z+, r27 2f2: 11 92 st Z+, r1 2f4: cb 01 movw r24, r22 2f6: 0c 94 ae 01 jmp 0x35c ; 0x35c 000002fa : 2fa: 0f 93 push r16 2fc: 1f 93 push r17 2fe: cf 93 push r28 300: df 93 push r29 302: 8c 01 movw r16, r24 304: e0 91 79 01 lds r30, 0x0179 ; 0x800179 <__iob+0x2> 308: f0 91 7a 01 lds r31, 0x017A ; 0x80017a <__iob+0x3> 30c: 83 81 ldd r24, Z+3 ; 0x03 30e: 81 ff sbrs r24, 1 310: 1b c0 rjmp .+54 ; 0x348 312: d0 e0 ldi r29, 0x00 ; 0 314: c0 e0 ldi r28, 0x00 ; 0 316: f8 01 movw r30, r16 318: 84 91 lpm r24, Z 31a: 60 91 79 01 lds r22, 0x0179 ; 0x800179 <__iob+0x2> 31e: 70 91 7a 01 lds r23, 0x017A ; 0x80017a <__iob+0x3> 322: db 01 movw r26, r22 324: 18 96 adiw r26, 0x08 ; 8 326: ed 91 ld r30, X+ 328: fc 91 ld r31, X 32a: 19 97 sbiw r26, 0x09 ; 9 32c: 88 23 and r24, r24 32e: 41 f0 breq .+16 ; 0x340 330: 09 95 icall 332: 89 2b or r24, r25 334: 11 f0 breq .+4 ; 0x33a 336: df ef ldi r29, 0xFF ; 255 338: cf ef ldi r28, 0xFF ; 255 33a: 0f 5f subi r16, 0xFF ; 255 33c: 1f 4f sbci r17, 0xFF ; 255 33e: eb cf rjmp .-42 ; 0x316 340: 8a e0 ldi r24, 0x0A ; 10 342: 09 95 icall 344: 89 2b or r24, r25 346: 19 f0 breq .+6 ; 0x34e 348: 8f ef ldi r24, 0xFF ; 255 34a: 9f ef ldi r25, 0xFF ; 255 34c: 02 c0 rjmp .+4 ; 0x352 34e: 8d 2f mov r24, r29 350: 9c 2f mov r25, r28 352: df 91 pop r29 354: cf 91 pop r28 356: 1f 91 pop r17 358: 0f 91 pop r16 35a: 08 95 ret 0000035c : 35c: dc 01 movw r26, r24 35e: fc 01 movw r30, r24 360: 67 2f mov r22, r23 362: 71 91 ld r23, Z+ 364: 77 23 and r23, r23 366: e1 f7 brne .-8 ; 0x360 368: 32 97 sbiw r30, 0x02 ; 2 36a: 04 c0 rjmp .+8 ; 0x374 36c: 7c 91 ld r23, X 36e: 6d 93 st X+, r22 370: 70 83 st Z, r23 372: 62 91 ld r22, -Z 374: ae 17 cp r26, r30 376: bf 07 cpc r27, r31 378: c8 f3 brcs .-14 ; 0x36c 37a: 08 95 ret 0000037c : 37c: 0f 93 push r16 37e: 1f 93 push r17 380: cf 93 push r28 382: df 93 push r29 384: e0 91 79 01 lds r30, 0x0179 ; 0x800179 <__iob+0x2> 388: f0 91 7a 01 lds r31, 0x017A ; 0x80017a <__iob+0x3> 38c: 23 81 ldd r18, Z+3 ; 0x03 38e: 21 ff sbrs r18, 1 390: 1b c0 rjmp .+54 ; 0x3c8 392: 8c 01 movw r16, r24 394: d0 e0 ldi r29, 0x00 ; 0 396: c0 e0 ldi r28, 0x00 ; 0 398: f8 01 movw r30, r16 39a: 81 91 ld r24, Z+ 39c: 8f 01 movw r16, r30 39e: 60 91 79 01 lds r22, 0x0179 ; 0x800179 <__iob+0x2> 3a2: 70 91 7a 01 lds r23, 0x017A ; 0x80017a <__iob+0x3> 3a6: db 01 movw r26, r22 3a8: 18 96 adiw r26, 0x08 ; 8 3aa: ed 91 ld r30, X+ 3ac: fc 91 ld r31, X 3ae: 19 97 sbiw r26, 0x09 ; 9 3b0: 88 23 and r24, r24 3b2: 31 f0 breq .+12 ; 0x3c0 3b4: 09 95 icall 3b6: 89 2b or r24, r25 3b8: 79 f3 breq .-34 ; 0x398 3ba: df ef ldi r29, 0xFF ; 255 3bc: cf ef ldi r28, 0xFF ; 255 3be: ec cf rjmp .-40 ; 0x398 3c0: 8a e0 ldi r24, 0x0A ; 10 3c2: 09 95 icall 3c4: 89 2b or r24, r25 3c6: 19 f0 breq .+6 ; 0x3ce 3c8: 8f ef ldi r24, 0xFF ; 255 3ca: 9f ef ldi r25, 0xFF ; 255 3cc: 02 c0 rjmp .+4 ; 0x3d2 3ce: 8d 2f mov r24, r29 3d0: 9c 2f mov r25, r28 3d2: df 91 pop r29 3d4: cf 91 pop r28 3d6: 1f 91 pop r17 3d8: 0f 91 pop r16 3da: 08 95 ret 000003dc <_exit>: 3dc: f8 94 cli 000003de <__stop_program>: 3de: ff cf rjmp .-2 ; 0x3de <__stop_program>