Task1_LF.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .data 0000003a 00803e00 00000a20 00000ab4 2**0 CONTENTS, ALLOC, LOAD, DATA 1 .text 00000a20 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .bss 0000000b 00803e3a 00803e3a 00000aee 2**0 ALLOC 3 .comment 0000005c 00000000 00000000 00000aee 2**0 CONTENTS, READONLY 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000b4c 2**2 CONTENTS, READONLY 5 .debug_aranges 00000078 00000000 00000000 00000b88 2**0 CONTENTS, READONLY, DEBUGGING 6 .debug_info 00002156 00000000 00000000 00000c00 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_abbrev 00001959 00000000 00000000 00002d56 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_line 000004b7 00000000 00000000 000046af 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_frame 000000bc 00000000 00000000 00004b68 2**2 CONTENTS, READONLY, DEBUGGING 10 .debug_str 00000fe4 00000000 00000000 00004c24 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_loc 0000010b 00000000 00000000 00005c08 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_ranges 00000048 00000000 00000000 00005d13 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> 2: 35 c0 rjmp .+106 ; 0x6e <__bad_interrupt> 4: 34 c0 rjmp .+104 ; 0x6e <__bad_interrupt> 6: 33 c0 rjmp .+102 ; 0x6e <__bad_interrupt> 8: 32 c0 rjmp .+100 ; 0x6e <__bad_interrupt> a: 31 c0 rjmp .+98 ; 0x6e <__bad_interrupt> c: 30 c0 rjmp .+96 ; 0x6e <__bad_interrupt> e: 2f c0 rjmp .+94 ; 0x6e <__bad_interrupt> 10: 2e c0 rjmp .+92 ; 0x6e <__bad_interrupt> 12: 2d c0 rjmp .+90 ; 0x6e <__bad_interrupt> 14: 2c c0 rjmp .+88 ; 0x6e <__bad_interrupt> 16: 2b c0 rjmp .+86 ; 0x6e <__bad_interrupt> 18: 2a c0 rjmp .+84 ; 0x6e <__bad_interrupt> 1a: 29 c0 rjmp .+82 ; 0x6e <__bad_interrupt> 1c: 28 c0 rjmp .+80 ; 0x6e <__bad_interrupt> 1e: 27 c0 rjmp .+78 ; 0x6e <__bad_interrupt> 20: 26 c0 rjmp .+76 ; 0x6e <__bad_interrupt> 22: 25 c0 rjmp .+74 ; 0x6e <__bad_interrupt> 24: 24 c0 rjmp .+72 ; 0x6e <__bad_interrupt> 26: 23 c0 rjmp .+70 ; 0x6e <__bad_interrupt> 28: 22 c0 rjmp .+68 ; 0x6e <__bad_interrupt> 2a: 21 c0 rjmp .+66 ; 0x6e <__bad_interrupt> 2c: 89 c0 rjmp .+274 ; 0x140 <__vector_22> 2e: 1f c0 rjmp .+62 ; 0x6e <__bad_interrupt> 30: 1e c0 rjmp .+60 ; 0x6e <__bad_interrupt> 32: 1d c0 rjmp .+58 ; 0x6e <__bad_interrupt> 00000034 <__ctors_end>: 34: 11 24 eor r1, r1 36: 1f be out 0x3f, r1 ; 63 38: cf ef ldi r28, 0xFF ; 255 3a: cd bf out 0x3d, r28 ; 61 3c: df e3 ldi r29, 0x3F ; 63 3e: de bf out 0x3e, r29 ; 62 00000040 <__do_copy_data>: 40: 1e e3 ldi r17, 0x3E ; 62 42: a0 e0 ldi r26, 0x00 ; 0 44: be e3 ldi r27, 0x3E ; 62 46: e0 e2 ldi r30, 0x20 ; 32 48: fa e0 ldi r31, 0x0A ; 10 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10> 4c: 05 90 lpm r0, Z+ 4e: 0d 92 st X+, r0 50: aa 33 cpi r26, 0x3A ; 58 52: b1 07 cpc r27, r17 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> 00000056 <__do_clear_bss>: 56: 2e e3 ldi r18, 0x3E ; 62 58: aa e3 ldi r26, 0x3A ; 58 5a: be e3 ldi r27, 0x3E ; 62 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> 0000005e <.do_clear_bss_loop>: 5e: 1d 92 st X+, r1 00000060 <.do_clear_bss_start>: 60: a5 34 cpi r26, 0x45 ; 69 62: b2 07 cpc r27, r18 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> 66: 0e 94 59 00 call 0xb2 ; 0xb2
6a: 0c 94 0e 05 jmp 0xa1c ; 0xa1c <_exit> 0000006e <__bad_interrupt>: 6e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 00000072 : */ #include void adc_init(){ ADC0.CTRLA |= (ADC_RESSEL_8BIT_gc); //Set resolution, we choose 8 bits 72: e0 e0 ldi r30, 0x00 ; 0 74: f6 e0 ldi r31, 0x06 ; 6 76: 80 81 ld r24, Z 78: 84 60 ori r24, 0x04 ; 4 7a: 80 83 st Z, r24 ADC0.CTRLB |= (ADC_SAMPLNUM_ACC4_gc); //OPTIONAL: We can use multiple samples if we like, example here with 4 7c: 81 81 ldd r24, Z+1 ; 0x01 7e: 82 60 ori r24, 0x02 ; 2 80: 81 83 std Z+1, r24 ; 0x01 //More samples gives a better result but takes longer ADC0.CTRLC |= (ADC_REFSEL_VDDREF_gc); //We select to use the supply voltage (VDD) as voltage reference 82: 82 81 ldd r24, Z+2 ; 0x02 84: 80 61 ori r24, 0x10 ; 16 86: 82 83 std Z+2, r24 ; 0x02 ADC0.CTRLC |= (ADC_PRESC_DIV2_gc); //ADC clock prescaler, best accuracy when run below 2MHz. (Here div2 ~1.46 MHz) 88: 82 81 ldd r24, Z+2 ; 0x02 8a: 82 83 std Z+2, r24 ; 0x02 ADC0.CTRLA |= (ADC_ENABLE_bm); //Enable the ADC 8c: 80 81 ld r24, Z 8e: 81 60 ori r24, 0x01 ; 1 90: 80 83 st Z, r24 92: 08 95 ret 00000094 : } uint8_t adc_read(uint8_t channel){ ADC0.MUXPOS = channel; //Select input on the ADC mux 94: e0 e0 ldi r30, 0x00 ; 0 96: f6 e0 ldi r31, 0x06 ; 6 98: 86 83 std Z+6, r24 ; 0x06 //NOTE: We can use = here because this is the only thing the register holds. Neat! ADC0.INTFLAGS |= (ADC_RESRDY_bm); //Clear the results ready flag 9a: 83 85 ldd r24, Z+11 ; 0x0b 9c: 81 60 ori r24, 0x01 ; 1 9e: 83 87 std Z+11, r24 ; 0x0b ADC0.COMMAND |= (ADC_STCONV_bm); //Start a conversion a0: 80 85 ldd r24, Z+8 ; 0x08 a2: 81 60 ori r24, 0x01 ; 1 a4: 80 87 std Z+8, r24 ; 0x08 while(!(ADC0.INTFLAGS & ADC_RESRDY_bm)){ a6: 83 85 ldd r24, Z+11 ; 0x0b a8: 80 ff sbrs r24, 0 aa: fd cf rjmp .-6 ; 0xa6 //Wait for the results ready flag to be set } return ADC0.RESL; //Return 8 bit result ac: 80 91 10 06 lds r24, 0x0610 ; 0x800610 <__TEXT_REGION_LENGTH__+0x700610> } b0: 08 95 ret 000000b2
: int main(void) { uart_init(BAUD_9600); //Initiate the uart (provided in uart.c) with a baudrate of 9600 b2: 6c e6 ldi r22, 0x6C ; 108 b4: 75 e0 ldi r23, 0x05 ; 5 b6: 80 e0 ldi r24, 0x00 ; 0 b8: 90 e0 ldi r25, 0x00 ; 0 ba: 0e 94 87 00 call 0x10e ; 0x10e adc_init(); //Initiate the adc (The student has to write this function) be: 0e 94 39 00 call 0x72 ; 0x72 sei(); //If we want to receive via UART we need interrupts enabled. c2: 78 94 sei data = adc_read(LIGHT); //Read the analog voltage on channel 6, connected to light sensor //The light sensor returns the ones complement (the opposite) of the brightness: data = 0xff - data; printf("Light intensity is currently %d brightness points!\n", data); //Print out the value neatly using printf c4: c6 e0 ldi r28, 0x06 ; 6 c6: de e3 ldi r29, 0x3E ; 62 sei(); //If we want to receive via UART we need interrupts enabled. //NOTE: UART isn't used to receive here and as such this isn't required. while (1) { data = adc_read(LIGHT); //Read the analog voltage on channel 6, connected to light sensor c8: 86 e0 ldi r24, 0x06 ; 6 ca: 0e 94 4a 00 call 0x94 ; 0x94 //The light sensor returns the ones complement (the opposite) of the brightness: data = 0xff - data; ce: 80 95 com r24 d0: 80 93 3a 3e sts 0x3E3A, r24 ; 0x803e3a <__data_end> printf("Light intensity is currently %d brightness points!\n", data); //Print out the value neatly using printf d4: 1f 92 push r1 d6: 8f 93 push r24 d8: df 93 push r29 da: cf 93 push r28 dc: 0e 94 f9 00 call 0x1f2 ; 0x1f2 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); e0: 9a e2 ldi r25, 0x2A ; 42 e2: 2c e2 ldi r18, 0x2C ; 44 e4: 8a e0 ldi r24, 0x0A ; 10 e6: 91 50 subi r25, 0x01 ; 1 e8: 20 40 sbci r18, 0x00 ; 0 ea: 80 40 sbci r24, 0x00 ; 0 ec: e1 f7 brne .-8 ; 0xe6 ee: 00 00 nop f0: 0f 90 pop r0 f2: 0f 90 pop r0 f4: 0f 90 pop r0 f6: 0f 90 pop r0 f8: e7 cf rjmp .-50 ; 0xc8 000000fa : // function to transmit data int uart_transmit(char data, FILE* stream){ while (!(USART0.STATUS & (1 << USART_DREIF_bp))){ fa: e0 e0 ldi r30, 0x00 ; 0 fc: f8 e0 ldi r31, 0x08 ; 8 fe: 94 81 ldd r25, Z+4 ; 0x04 100: 95 ff sbrs r25, 5 102: fd cf rjmp .-6 ; 0xfe //Wait for ongoing transmission to finish (if there is one) } USART0.TXDATAL = data; //Put new data in register 104: 80 93 02 08 sts 0x0802, r24 ; 0x800802 <__TEXT_REGION_LENGTH__+0x700802> return 0; } 108: 80 e0 ldi r24, 0x00 ; 0 10a: 90 e0 ldi r25, 0x00 ; 0 10c: 08 95 ret 0000010e : #include "uart.h" void uart_init(unsigned long baud){ //From chapter 24.3 in datasheet PORTB.OUTSET |= (1 << PIN2_bp); 10e: e0 e2 ldi r30, 0x20 ; 32 110: f4 e0 ldi r31, 0x04 ; 4 112: 25 81 ldd r18, Z+5 ; 0x05 114: 24 60 ori r18, 0x04 ; 4 116: 25 83 std Z+5, r18 ; 0x05 PORTB.DIRSET |= (1 << PIN2_bp); //Setting up TX pin as high output 118: 21 81 ldd r18, Z+1 ; 0x01 11a: 24 60 ori r18, 0x04 ; 4 11c: 21 83 std Z+1, r18 ; 0x01 USART0.BAUD = baud; //Set baudrate 11e: e0 e0 ldi r30, 0x00 ; 0 120: f8 e0 ldi r31, 0x08 ; 8 122: 60 87 std Z+8, r22 ; 0x08 124: 71 87 std Z+9, r23 ; 0x09 //USART.CTRLC CMODE bits default to: async, 1 stop bit, 8 bit character size USART0.CTRLB |= (1 << USART_RXEN_bp) | (1 << USART_TXEN_bp); //Enable RX and TX 126: 86 81 ldd r24, Z+6 ; 0x06 128: 80 6c ori r24, 0xC0 ; 192 12a: 86 83 std Z+6, r24 ; 0x06 USART0.CTRLA |= (1 << USART_RXCIE_bp); //Enable interupts on RX 12c: 85 81 ldd r24, Z+5 ; 0x05 12e: 80 68 ori r24, 0x80 ; 128 130: 85 83 std Z+5, r24 ; 0x05 fdevopen(uart_transmit, NULL); //This allows us to use printf instead of writing a single character at a time 132: 60 e0 ldi r22, 0x00 ; 0 134: 70 e0 ldi r23, 0x00 ; 0 136: 8d e7 ldi r24, 0x7D ; 125 138: 90 e0 ldi r25, 0x00 ; 0 13a: 0e 94 ae 00 call 0x15c ; 0x15c 13e: 08 95 ret 00000140 <__vector_22>: return 0; } //Interrupt service routine for receiving ISR(USART0_RXC_vect){ 140: 1f 92 push r1 142: 0f 92 push r0 144: 0f b6 in r0, 0x3f ; 63 146: 0f 92 push r0 148: 11 24 eor r1, r1 14a: 8f 93 push r24 uint8_t data = USART0.RXDATAL; //We must read the data to clear the interrupt flag 14c: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x700800> //Here we can do something with data if we would want that 150: 8f 91 pop r24 152: 0f 90 pop r0 154: 0f be out 0x3f, r0 ; 63 156: 0f 90 pop r0 158: 1f 90 pop r1 15a: 18 95 reti 0000015c : 15c: 0f 93 push r16 15e: 1f 93 push r17 160: cf 93 push r28 162: df 93 push r29 164: 00 97 sbiw r24, 0x00 ; 0 166: 31 f4 brne .+12 ; 0x174 168: 61 15 cp r22, r1 16a: 71 05 cpc r23, r1 16c: 19 f4 brne .+6 ; 0x174 16e: 80 e0 ldi r24, 0x00 ; 0 170: 90 e0 ldi r25, 0x00 ; 0 172: 3a c0 rjmp .+116 ; 0x1e8 174: 8b 01 movw r16, r22 176: ec 01 movw r28, r24 178: 6e e0 ldi r22, 0x0E ; 14 17a: 70 e0 ldi r23, 0x00 ; 0 17c: 81 e0 ldi r24, 0x01 ; 1 17e: 90 e0 ldi r25, 0x00 ; 0 180: 0e 94 e1 02 call 0x5c2 ; 0x5c2 184: fc 01 movw r30, r24 186: 89 2b or r24, r25 188: 91 f3 breq .-28 ; 0x16e 18a: 80 e8 ldi r24, 0x80 ; 128 18c: 83 83 std Z+3, r24 ; 0x03 18e: 01 15 cp r16, r1 190: 11 05 cpc r17, r1 192: 71 f0 breq .+28 ; 0x1b0 194: 02 87 std Z+10, r16 ; 0x0a 196: 13 87 std Z+11, r17 ; 0x0b 198: 81 e8 ldi r24, 0x81 ; 129 19a: 83 83 std Z+3, r24 ; 0x03 19c: 80 91 3b 3e lds r24, 0x3E3B ; 0x803e3b <__iob> 1a0: 90 91 3c 3e lds r25, 0x3E3C ; 0x803e3c <__iob+0x1> 1a4: 89 2b or r24, r25 1a6: 21 f4 brne .+8 ; 0x1b0 1a8: e0 93 3b 3e sts 0x3E3B, r30 ; 0x803e3b <__iob> 1ac: f0 93 3c 3e sts 0x3E3C, r31 ; 0x803e3c <__iob+0x1> 1b0: 20 97 sbiw r28, 0x00 ; 0 1b2: c9 f0 breq .+50 ; 0x1e6 1b4: c0 87 std Z+8, r28 ; 0x08 1b6: d1 87 std Z+9, r29 ; 0x09 1b8: 83 81 ldd r24, Z+3 ; 0x03 1ba: 82 60 ori r24, 0x02 ; 2 1bc: 83 83 std Z+3, r24 ; 0x03 1be: 80 91 3d 3e lds r24, 0x3E3D ; 0x803e3d <__iob+0x2> 1c2: 90 91 3e 3e lds r25, 0x3E3E ; 0x803e3e <__iob+0x3> 1c6: 89 2b or r24, r25 1c8: 71 f4 brne .+28 ; 0x1e6 1ca: e0 93 3d 3e sts 0x3E3D, r30 ; 0x803e3d <__iob+0x2> 1ce: f0 93 3e 3e sts 0x3E3E, r31 ; 0x803e3e <__iob+0x3> 1d2: 80 91 3f 3e lds r24, 0x3E3F ; 0x803e3f <__iob+0x4> 1d6: 90 91 40 3e lds r25, 0x3E40 ; 0x803e40 <__iob+0x5> 1da: 89 2b or r24, r25 1dc: 21 f4 brne .+8 ; 0x1e6 1de: e0 93 3f 3e sts 0x3E3F, r30 ; 0x803e3f <__iob+0x4> 1e2: f0 93 40 3e sts 0x3E40, r31 ; 0x803e40 <__iob+0x5> 1e6: cf 01 movw r24, r30 1e8: df 91 pop r29 1ea: cf 91 pop r28 1ec: 1f 91 pop r17 1ee: 0f 91 pop r16 1f0: 08 95 ret 000001f2 : 1f2: a0 e0 ldi r26, 0x00 ; 0 1f4: b0 e0 ldi r27, 0x00 ; 0 1f6: ef ef ldi r30, 0xFF ; 255 1f8: f0 e0 ldi r31, 0x00 ; 0 1fa: 0c 94 ed 04 jmp 0x9da ; 0x9da <__prologue_saves__+0x20> 1fe: ae 01 movw r20, r28 200: 4b 5f subi r20, 0xFB ; 251 202: 5f 4f sbci r21, 0xFF ; 255 204: fa 01 movw r30, r20 206: 61 91 ld r22, Z+ 208: 71 91 ld r23, Z+ 20a: af 01 movw r20, r30 20c: 80 91 3d 3e lds r24, 0x3E3D ; 0x803e3d <__iob+0x2> 210: 90 91 3e 3e lds r25, 0x3E3E ; 0x803e3e <__iob+0x3> 214: 0e 94 0f 01 call 0x21e ; 0x21e 218: e2 e0 ldi r30, 0x02 ; 2 21a: 0c 94 06 05 jmp 0xa0c ; 0xa0c <__epilogue_restores__+0x20> 0000021e : 21e: ac e0 ldi r26, 0x0C ; 12 220: b0 e0 ldi r27, 0x00 ; 0 222: e5 e1 ldi r30, 0x15 ; 21 224: f1 e0 ldi r31, 0x01 ; 1 226: 0c 94 dd 04 jmp 0x9ba ; 0x9ba <__prologue_saves__> 22a: 7c 01 movw r14, r24 22c: 6b 01 movw r12, r22 22e: 8a 01 movw r16, r20 230: fc 01 movw r30, r24 232: 16 82 std Z+6, r1 ; 0x06 234: 17 82 std Z+7, r1 ; 0x07 236: 83 81 ldd r24, Z+3 ; 0x03 238: 81 ff sbrs r24, 1 23a: bd c1 rjmp .+890 ; 0x5b6 <__LOCK_REGION_LENGTH__+0x1b6> 23c: ce 01 movw r24, r28 23e: 01 96 adiw r24, 0x01 ; 1 240: 4c 01 movw r8, r24 242: f7 01 movw r30, r14 244: 93 81 ldd r25, Z+3 ; 0x03 246: f6 01 movw r30, r12 248: 93 fd sbrc r25, 3 24a: 85 91 lpm r24, Z+ 24c: 93 ff sbrs r25, 3 24e: 81 91 ld r24, Z+ 250: 6f 01 movw r12, r30 252: 88 23 and r24, r24 254: 09 f4 brne .+2 ; 0x258 256: ab c1 rjmp .+854 ; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae> 258: 85 32 cpi r24, 0x25 ; 37 25a: 39 f4 brne .+14 ; 0x26a 25c: 93 fd sbrc r25, 3 25e: 85 91 lpm r24, Z+ 260: 93 ff sbrs r25, 3 262: 81 91 ld r24, Z+ 264: 6f 01 movw r12, r30 266: 85 32 cpi r24, 0x25 ; 37 268: 29 f4 brne .+10 ; 0x274 26a: b7 01 movw r22, r14 26c: 90 e0 ldi r25, 0x00 ; 0 26e: 0e 94 47 04 call 0x88e ; 0x88e 272: e7 cf rjmp .-50 ; 0x242 274: 51 2c mov r5, r1 276: 31 2c mov r3, r1 278: 20 e0 ldi r18, 0x00 ; 0 27a: 20 32 cpi r18, 0x20 ; 32 27c: a0 f4 brcc .+40 ; 0x2a6 27e: 8b 32 cpi r24, 0x2B ; 43 280: 69 f0 breq .+26 ; 0x29c 282: 30 f4 brcc .+12 ; 0x290 284: 80 32 cpi r24, 0x20 ; 32 286: 59 f0 breq .+22 ; 0x29e 288: 83 32 cpi r24, 0x23 ; 35 28a: 69 f4 brne .+26 ; 0x2a6 28c: 20 61 ori r18, 0x10 ; 16 28e: 2c c0 rjmp .+88 ; 0x2e8 290: 8d 32 cpi r24, 0x2D ; 45 292: 39 f0 breq .+14 ; 0x2a2 294: 80 33 cpi r24, 0x30 ; 48 296: 39 f4 brne .+14 ; 0x2a6 298: 21 60 ori r18, 0x01 ; 1 29a: 26 c0 rjmp .+76 ; 0x2e8 29c: 22 60 ori r18, 0x02 ; 2 29e: 24 60 ori r18, 0x04 ; 4 2a0: 23 c0 rjmp .+70 ; 0x2e8 2a2: 28 60 ori r18, 0x08 ; 8 2a4: 21 c0 rjmp .+66 ; 0x2e8 2a6: 27 fd sbrc r18, 7 2a8: 27 c0 rjmp .+78 ; 0x2f8 2aa: 30 ed ldi r19, 0xD0 ; 208 2ac: 38 0f add r19, r24 2ae: 3a 30 cpi r19, 0x0A ; 10 2b0: 78 f4 brcc .+30 ; 0x2d0 2b2: 26 ff sbrs r18, 6 2b4: 06 c0 rjmp .+12 ; 0x2c2 2b6: fa e0 ldi r31, 0x0A ; 10 2b8: 5f 9e mul r5, r31 2ba: 30 0d add r19, r0 2bc: 11 24 eor r1, r1 2be: 53 2e mov r5, r19 2c0: 13 c0 rjmp .+38 ; 0x2e8 2c2: 8a e0 ldi r24, 0x0A ; 10 2c4: 38 9e mul r3, r24 2c6: 30 0d add r19, r0 2c8: 11 24 eor r1, r1 2ca: 33 2e mov r3, r19 2cc: 20 62 ori r18, 0x20 ; 32 2ce: 0c c0 rjmp .+24 ; 0x2e8 2d0: 8e 32 cpi r24, 0x2E ; 46 2d2: 21 f4 brne .+8 ; 0x2dc 2d4: 26 fd sbrc r18, 6 2d6: 6b c1 rjmp .+726 ; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae> 2d8: 20 64 ori r18, 0x40 ; 64 2da: 06 c0 rjmp .+12 ; 0x2e8 2dc: 8c 36 cpi r24, 0x6C ; 108 2de: 11 f4 brne .+4 ; 0x2e4 2e0: 20 68 ori r18, 0x80 ; 128 2e2: 02 c0 rjmp .+4 ; 0x2e8 2e4: 88 36 cpi r24, 0x68 ; 104 2e6: 41 f4 brne .+16 ; 0x2f8 2e8: f6 01 movw r30, r12 2ea: 93 fd sbrc r25, 3 2ec: 85 91 lpm r24, Z+ 2ee: 93 ff sbrs r25, 3 2f0: 81 91 ld r24, Z+ 2f2: 6f 01 movw r12, r30 2f4: 81 11 cpse r24, r1 2f6: c1 cf rjmp .-126 ; 0x27a 2f8: 98 2f mov r25, r24 2fa: 9f 7d andi r25, 0xDF ; 223 2fc: 95 54 subi r25, 0x45 ; 69 2fe: 93 30 cpi r25, 0x03 ; 3 300: 28 f4 brcc .+10 ; 0x30c 302: 0c 5f subi r16, 0xFC ; 252 304: 1f 4f sbci r17, 0xFF ; 255 306: ff e3 ldi r31, 0x3F ; 63 308: f9 83 std Y+1, r31 ; 0x01 30a: 0d c0 rjmp .+26 ; 0x326 30c: 83 36 cpi r24, 0x63 ; 99 30e: 31 f0 breq .+12 ; 0x31c 310: 83 37 cpi r24, 0x73 ; 115 312: 71 f0 breq .+28 ; 0x330 314: 83 35 cpi r24, 0x53 ; 83 316: 09 f0 breq .+2 ; 0x31a 318: 5b c0 rjmp .+182 ; 0x3d0 31a: 22 c0 rjmp .+68 ; 0x360 31c: f8 01 movw r30, r16 31e: 80 81 ld r24, Z 320: 89 83 std Y+1, r24 ; 0x01 322: 0e 5f subi r16, 0xFE ; 254 324: 1f 4f sbci r17, 0xFF ; 255 326: 44 24 eor r4, r4 328: 43 94 inc r4 32a: 51 2c mov r5, r1 32c: 54 01 movw r10, r8 32e: 15 c0 rjmp .+42 ; 0x35a 330: 38 01 movw r6, r16 332: f2 e0 ldi r31, 0x02 ; 2 334: 6f 0e add r6, r31 336: 71 1c adc r7, r1 338: f8 01 movw r30, r16 33a: a0 80 ld r10, Z 33c: b1 80 ldd r11, Z+1 ; 0x01 33e: 26 ff sbrs r18, 6 340: 03 c0 rjmp .+6 ; 0x348 342: 65 2d mov r22, r5 344: 70 e0 ldi r23, 0x00 ; 0 346: 02 c0 rjmp .+4 ; 0x34c 348: 6f ef ldi r22, 0xFF ; 255 34a: 7f ef ldi r23, 0xFF ; 255 34c: c5 01 movw r24, r10 34e: 2c 87 std Y+12, r18 ; 0x0c 350: 0e 94 3c 04 call 0x878 ; 0x878 354: 2c 01 movw r4, r24 356: 83 01 movw r16, r6 358: 2c 85 ldd r18, Y+12 ; 0x0c 35a: 2f 77 andi r18, 0x7F ; 127 35c: 22 2e mov r2, r18 35e: 17 c0 rjmp .+46 ; 0x38e 360: 38 01 movw r6, r16 362: f2 e0 ldi r31, 0x02 ; 2 364: 6f 0e add r6, r31 366: 71 1c adc r7, r1 368: f8 01 movw r30, r16 36a: a0 80 ld r10, Z 36c: b1 80 ldd r11, Z+1 ; 0x01 36e: 26 ff sbrs r18, 6 370: 03 c0 rjmp .+6 ; 0x378 372: 65 2d mov r22, r5 374: 70 e0 ldi r23, 0x00 ; 0 376: 02 c0 rjmp .+4 ; 0x37c 378: 6f ef ldi r22, 0xFF ; 255 37a: 7f ef ldi r23, 0xFF ; 255 37c: c5 01 movw r24, r10 37e: 2c 87 std Y+12, r18 ; 0x0c 380: 0e 94 2a 04 call 0x854 ; 0x854 384: 2c 01 movw r4, r24 386: 2c 85 ldd r18, Y+12 ; 0x0c 388: 20 68 ori r18, 0x80 ; 128 38a: 22 2e mov r2, r18 38c: 83 01 movw r16, r6 38e: 23 fc sbrc r2, 3 390: 1b c0 rjmp .+54 ; 0x3c8 392: 83 2d mov r24, r3 394: 90 e0 ldi r25, 0x00 ; 0 396: 48 16 cp r4, r24 398: 59 06 cpc r5, r25 39a: b0 f4 brcc .+44 ; 0x3c8 39c: b7 01 movw r22, r14 39e: 80 e2 ldi r24, 0x20 ; 32 3a0: 90 e0 ldi r25, 0x00 ; 0 3a2: 0e 94 47 04 call 0x88e ; 0x88e 3a6: 3a 94 dec r3 3a8: f4 cf rjmp .-24 ; 0x392 3aa: f5 01 movw r30, r10 3ac: 27 fc sbrc r2, 7 3ae: 85 91 lpm r24, Z+ 3b0: 27 fe sbrs r2, 7 3b2: 81 91 ld r24, Z+ 3b4: 5f 01 movw r10, r30 3b6: b7 01 movw r22, r14 3b8: 90 e0 ldi r25, 0x00 ; 0 3ba: 0e 94 47 04 call 0x88e ; 0x88e 3be: 31 10 cpse r3, r1 3c0: 3a 94 dec r3 3c2: f1 e0 ldi r31, 0x01 ; 1 3c4: 4f 1a sub r4, r31 3c6: 51 08 sbc r5, r1 3c8: 41 14 cp r4, r1 3ca: 51 04 cpc r5, r1 3cc: 71 f7 brne .-36 ; 0x3aa 3ce: e5 c0 rjmp .+458 ; 0x59a <__LOCK_REGION_LENGTH__+0x19a> 3d0: 84 36 cpi r24, 0x64 ; 100 3d2: 11 f0 breq .+4 ; 0x3d8 3d4: 89 36 cpi r24, 0x69 ; 105 3d6: 39 f5 brne .+78 ; 0x426 <__LOCK_REGION_LENGTH__+0x26> 3d8: f8 01 movw r30, r16 3da: 27 ff sbrs r18, 7 3dc: 07 c0 rjmp .+14 ; 0x3ec 3de: 60 81 ld r22, Z 3e0: 71 81 ldd r23, Z+1 ; 0x01 3e2: 82 81 ldd r24, Z+2 ; 0x02 3e4: 93 81 ldd r25, Z+3 ; 0x03 3e6: 0c 5f subi r16, 0xFC ; 252 3e8: 1f 4f sbci r17, 0xFF ; 255 3ea: 08 c0 rjmp .+16 ; 0x3fc 3ec: 60 81 ld r22, Z 3ee: 71 81 ldd r23, Z+1 ; 0x01 3f0: 07 2e mov r0, r23 3f2: 00 0c add r0, r0 3f4: 88 0b sbc r24, r24 3f6: 99 0b sbc r25, r25 3f8: 0e 5f subi r16, 0xFE ; 254 3fa: 1f 4f sbci r17, 0xFF ; 255 3fc: 2f 76 andi r18, 0x6F ; 111 3fe: 72 2e mov r7, r18 400: 97 ff sbrs r25, 7 402: 09 c0 rjmp .+18 ; 0x416 <__LOCK_REGION_LENGTH__+0x16> 404: 90 95 com r25 406: 80 95 com r24 408: 70 95 com r23 40a: 61 95 neg r22 40c: 7f 4f sbci r23, 0xFF ; 255 40e: 8f 4f sbci r24, 0xFF ; 255 410: 9f 4f sbci r25, 0xFF ; 255 412: 20 68 ori r18, 0x80 ; 128 414: 72 2e mov r7, r18 416: 2a e0 ldi r18, 0x0A ; 10 418: 30 e0 ldi r19, 0x00 ; 0 41a: a4 01 movw r20, r8 41c: 0e 94 7f 04 call 0x8fe ; 0x8fe <__ultoa_invert> 420: a8 2e mov r10, r24 422: a8 18 sub r10, r8 424: 44 c0 rjmp .+136 ; 0x4ae <__LOCK_REGION_LENGTH__+0xae> 426: 85 37 cpi r24, 0x75 ; 117 428: 29 f4 brne .+10 ; 0x434 <__LOCK_REGION_LENGTH__+0x34> 42a: 2f 7e andi r18, 0xEF ; 239 42c: b2 2e mov r11, r18 42e: 2a e0 ldi r18, 0x0A ; 10 430: 30 e0 ldi r19, 0x00 ; 0 432: 25 c0 rjmp .+74 ; 0x47e <__LOCK_REGION_LENGTH__+0x7e> 434: f2 2f mov r31, r18 436: f9 7f andi r31, 0xF9 ; 249 438: bf 2e mov r11, r31 43a: 8f 36 cpi r24, 0x6F ; 111 43c: c1 f0 breq .+48 ; 0x46e <__LOCK_REGION_LENGTH__+0x6e> 43e: 18 f4 brcc .+6 ; 0x446 <__LOCK_REGION_LENGTH__+0x46> 440: 88 35 cpi r24, 0x58 ; 88 442: 79 f0 breq .+30 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> 444: b4 c0 rjmp .+360 ; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae> 446: 80 37 cpi r24, 0x70 ; 112 448: 19 f0 breq .+6 ; 0x450 <__LOCK_REGION_LENGTH__+0x50> 44a: 88 37 cpi r24, 0x78 ; 120 44c: 21 f0 breq .+8 ; 0x456 <__LOCK_REGION_LENGTH__+0x56> 44e: af c0 rjmp .+350 ; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae> 450: 2f 2f mov r18, r31 452: 20 61 ori r18, 0x10 ; 16 454: b2 2e mov r11, r18 456: b4 fe sbrs r11, 4 458: 0d c0 rjmp .+26 ; 0x474 <__LOCK_REGION_LENGTH__+0x74> 45a: 8b 2d mov r24, r11 45c: 84 60 ori r24, 0x04 ; 4 45e: b8 2e mov r11, r24 460: 09 c0 rjmp .+18 ; 0x474 <__LOCK_REGION_LENGTH__+0x74> 462: 24 ff sbrs r18, 4 464: 0a c0 rjmp .+20 ; 0x47a <__LOCK_REGION_LENGTH__+0x7a> 466: 9f 2f mov r25, r31 468: 96 60 ori r25, 0x06 ; 6 46a: b9 2e mov r11, r25 46c: 06 c0 rjmp .+12 ; 0x47a <__LOCK_REGION_LENGTH__+0x7a> 46e: 28 e0 ldi r18, 0x08 ; 8 470: 30 e0 ldi r19, 0x00 ; 0 472: 05 c0 rjmp .+10 ; 0x47e <__LOCK_REGION_LENGTH__+0x7e> 474: 20 e1 ldi r18, 0x10 ; 16 476: 30 e0 ldi r19, 0x00 ; 0 478: 02 c0 rjmp .+4 ; 0x47e <__LOCK_REGION_LENGTH__+0x7e> 47a: 20 e1 ldi r18, 0x10 ; 16 47c: 32 e0 ldi r19, 0x02 ; 2 47e: f8 01 movw r30, r16 480: b7 fe sbrs r11, 7 482: 07 c0 rjmp .+14 ; 0x492 <__LOCK_REGION_LENGTH__+0x92> 484: 60 81 ld r22, Z 486: 71 81 ldd r23, Z+1 ; 0x01 488: 82 81 ldd r24, Z+2 ; 0x02 48a: 93 81 ldd r25, Z+3 ; 0x03 48c: 0c 5f subi r16, 0xFC ; 252 48e: 1f 4f sbci r17, 0xFF ; 255 490: 06 c0 rjmp .+12 ; 0x49e <__LOCK_REGION_LENGTH__+0x9e> 492: 60 81 ld r22, Z 494: 71 81 ldd r23, Z+1 ; 0x01 496: 80 e0 ldi r24, 0x00 ; 0 498: 90 e0 ldi r25, 0x00 ; 0 49a: 0e 5f subi r16, 0xFE ; 254 49c: 1f 4f sbci r17, 0xFF ; 255 49e: a4 01 movw r20, r8 4a0: 0e 94 7f 04 call 0x8fe ; 0x8fe <__ultoa_invert> 4a4: a8 2e mov r10, r24 4a6: a8 18 sub r10, r8 4a8: fb 2d mov r31, r11 4aa: ff 77 andi r31, 0x7F ; 127 4ac: 7f 2e mov r7, r31 4ae: 76 fe sbrs r7, 6 4b0: 0b c0 rjmp .+22 ; 0x4c8 <__LOCK_REGION_LENGTH__+0xc8> 4b2: 37 2d mov r19, r7 4b4: 3e 7f andi r19, 0xFE ; 254 4b6: a5 14 cp r10, r5 4b8: 50 f4 brcc .+20 ; 0x4ce <__LOCK_REGION_LENGTH__+0xce> 4ba: 74 fe sbrs r7, 4 4bc: 0a c0 rjmp .+20 ; 0x4d2 <__LOCK_REGION_LENGTH__+0xd2> 4be: 72 fc sbrc r7, 2 4c0: 08 c0 rjmp .+16 ; 0x4d2 <__LOCK_REGION_LENGTH__+0xd2> 4c2: 37 2d mov r19, r7 4c4: 3e 7e andi r19, 0xEE ; 238 4c6: 05 c0 rjmp .+10 ; 0x4d2 <__LOCK_REGION_LENGTH__+0xd2> 4c8: ba 2c mov r11, r10 4ca: 37 2d mov r19, r7 4cc: 03 c0 rjmp .+6 ; 0x4d4 <__LOCK_REGION_LENGTH__+0xd4> 4ce: ba 2c mov r11, r10 4d0: 01 c0 rjmp .+2 ; 0x4d4 <__LOCK_REGION_LENGTH__+0xd4> 4d2: b5 2c mov r11, r5 4d4: 34 ff sbrs r19, 4 4d6: 0d c0 rjmp .+26 ; 0x4f2 <__LOCK_REGION_LENGTH__+0xf2> 4d8: fe 01 movw r30, r28 4da: ea 0d add r30, r10 4dc: f1 1d adc r31, r1 4de: 80 81 ld r24, Z 4e0: 80 33 cpi r24, 0x30 ; 48 4e2: 11 f4 brne .+4 ; 0x4e8 <__LOCK_REGION_LENGTH__+0xe8> 4e4: 39 7e andi r19, 0xE9 ; 233 4e6: 09 c0 rjmp .+18 ; 0x4fa <__LOCK_REGION_LENGTH__+0xfa> 4e8: 32 ff sbrs r19, 2 4ea: 06 c0 rjmp .+12 ; 0x4f8 <__LOCK_REGION_LENGTH__+0xf8> 4ec: b3 94 inc r11 4ee: b3 94 inc r11 4f0: 04 c0 rjmp .+8 ; 0x4fa <__LOCK_REGION_LENGTH__+0xfa> 4f2: 83 2f mov r24, r19 4f4: 86 78 andi r24, 0x86 ; 134 4f6: 09 f0 breq .+2 ; 0x4fa <__LOCK_REGION_LENGTH__+0xfa> 4f8: b3 94 inc r11 4fa: 33 fd sbrc r19, 3 4fc: 13 c0 rjmp .+38 ; 0x524 <__LOCK_REGION_LENGTH__+0x124> 4fe: 30 ff sbrs r19, 0 500: 06 c0 rjmp .+12 ; 0x50e <__LOCK_REGION_LENGTH__+0x10e> 502: 5a 2c mov r5, r10 504: b3 14 cp r11, r3 506: 18 f4 brcc .+6 ; 0x50e <__LOCK_REGION_LENGTH__+0x10e> 508: 53 0c add r5, r3 50a: 5b 18 sub r5, r11 50c: b3 2c mov r11, r3 50e: b3 14 cp r11, r3 510: 68 f4 brcc .+26 ; 0x52c <__LOCK_REGION_LENGTH__+0x12c> 512: b7 01 movw r22, r14 514: 80 e2 ldi r24, 0x20 ; 32 516: 90 e0 ldi r25, 0x00 ; 0 518: 3c 87 std Y+12, r19 ; 0x0c 51a: 0e 94 47 04 call 0x88e ; 0x88e 51e: b3 94 inc r11 520: 3c 85 ldd r19, Y+12 ; 0x0c 522: f5 cf rjmp .-22 ; 0x50e <__LOCK_REGION_LENGTH__+0x10e> 524: b3 14 cp r11, r3 526: 10 f4 brcc .+4 ; 0x52c <__LOCK_REGION_LENGTH__+0x12c> 528: 3b 18 sub r3, r11 52a: 01 c0 rjmp .+2 ; 0x52e <__LOCK_REGION_LENGTH__+0x12e> 52c: 31 2c mov r3, r1 52e: 34 ff sbrs r19, 4 530: 12 c0 rjmp .+36 ; 0x556 <__LOCK_REGION_LENGTH__+0x156> 532: b7 01 movw r22, r14 534: 80 e3 ldi r24, 0x30 ; 48 536: 90 e0 ldi r25, 0x00 ; 0 538: 3c 87 std Y+12, r19 ; 0x0c 53a: 0e 94 47 04 call 0x88e ; 0x88e 53e: 3c 85 ldd r19, Y+12 ; 0x0c 540: 32 ff sbrs r19, 2 542: 17 c0 rjmp .+46 ; 0x572 <__LOCK_REGION_LENGTH__+0x172> 544: 31 fd sbrc r19, 1 546: 03 c0 rjmp .+6 ; 0x54e <__LOCK_REGION_LENGTH__+0x14e> 548: 88 e7 ldi r24, 0x78 ; 120 54a: 90 e0 ldi r25, 0x00 ; 0 54c: 02 c0 rjmp .+4 ; 0x552 <__LOCK_REGION_LENGTH__+0x152> 54e: 88 e5 ldi r24, 0x58 ; 88 550: 90 e0 ldi r25, 0x00 ; 0 552: b7 01 movw r22, r14 554: 0c c0 rjmp .+24 ; 0x56e <__LOCK_REGION_LENGTH__+0x16e> 556: 83 2f mov r24, r19 558: 86 78 andi r24, 0x86 ; 134 55a: 59 f0 breq .+22 ; 0x572 <__LOCK_REGION_LENGTH__+0x172> 55c: 31 ff sbrs r19, 1 55e: 02 c0 rjmp .+4 ; 0x564 <__LOCK_REGION_LENGTH__+0x164> 560: 8b e2 ldi r24, 0x2B ; 43 562: 01 c0 rjmp .+2 ; 0x566 <__LOCK_REGION_LENGTH__+0x166> 564: 80 e2 ldi r24, 0x20 ; 32 566: 37 fd sbrc r19, 7 568: 8d e2 ldi r24, 0x2D ; 45 56a: b7 01 movw r22, r14 56c: 90 e0 ldi r25, 0x00 ; 0 56e: 0e 94 47 04 call 0x88e ; 0x88e 572: a5 14 cp r10, r5 574: 38 f4 brcc .+14 ; 0x584 <__LOCK_REGION_LENGTH__+0x184> 576: b7 01 movw r22, r14 578: 80 e3 ldi r24, 0x30 ; 48 57a: 90 e0 ldi r25, 0x00 ; 0 57c: 0e 94 47 04 call 0x88e ; 0x88e 580: 5a 94 dec r5 582: f7 cf rjmp .-18 ; 0x572 <__LOCK_REGION_LENGTH__+0x172> 584: aa 94 dec r10 586: f4 01 movw r30, r8 588: ea 0d add r30, r10 58a: f1 1d adc r31, r1 58c: 80 81 ld r24, Z 58e: b7 01 movw r22, r14 590: 90 e0 ldi r25, 0x00 ; 0 592: 0e 94 47 04 call 0x88e ; 0x88e 596: a1 10 cpse r10, r1 598: f5 cf rjmp .-22 ; 0x584 <__LOCK_REGION_LENGTH__+0x184> 59a: 33 20 and r3, r3 59c: 09 f4 brne .+2 ; 0x5a0 <__LOCK_REGION_LENGTH__+0x1a0> 59e: 51 ce rjmp .-862 ; 0x242 5a0: b7 01 movw r22, r14 5a2: 80 e2 ldi r24, 0x20 ; 32 5a4: 90 e0 ldi r25, 0x00 ; 0 5a6: 0e 94 47 04 call 0x88e ; 0x88e 5aa: 3a 94 dec r3 5ac: f6 cf rjmp .-20 ; 0x59a <__LOCK_REGION_LENGTH__+0x19a> 5ae: f7 01 movw r30, r14 5b0: 86 81 ldd r24, Z+6 ; 0x06 5b2: 97 81 ldd r25, Z+7 ; 0x07 5b4: 02 c0 rjmp .+4 ; 0x5ba <__LOCK_REGION_LENGTH__+0x1ba> 5b6: 8f ef ldi r24, 0xFF ; 255 5b8: 9f ef ldi r25, 0xFF ; 255 5ba: 2c 96 adiw r28, 0x0c ; 12 5bc: e2 e1 ldi r30, 0x12 ; 18 5be: 0c 94 f6 04 jmp 0x9ec ; 0x9ec <__epilogue_restores__> 000005c2 : 5c2: 0f 93 push r16 5c4: 1f 93 push r17 5c6: cf 93 push r28 5c8: df 93 push r29 5ca: 86 9f mul r24, r22 5cc: 80 01 movw r16, r0 5ce: 87 9f mul r24, r23 5d0: 10 0d add r17, r0 5d2: 96 9f mul r25, r22 5d4: 10 0d add r17, r0 5d6: 11 24 eor r1, r1 5d8: c8 01 movw r24, r16 5da: 0e 94 fd 02 call 0x5fa ; 0x5fa 5de: ec 01 movw r28, r24 5e0: 00 97 sbiw r24, 0x00 ; 0 5e2: 29 f0 breq .+10 ; 0x5ee 5e4: a8 01 movw r20, r16 5e6: 60 e0 ldi r22, 0x00 ; 0 5e8: 70 e0 ldi r23, 0x00 ; 0 5ea: 0e 94 35 04 call 0x86a ; 0x86a 5ee: ce 01 movw r24, r28 5f0: df 91 pop r29 5f2: cf 91 pop r28 5f4: 1f 91 pop r17 5f6: 0f 91 pop r16 5f8: 08 95 ret 000005fa : 5fa: cf 93 push r28 5fc: df 93 push r29 5fe: 82 30 cpi r24, 0x02 ; 2 600: 91 05 cpc r25, r1 602: 10 f4 brcc .+4 ; 0x608 604: 82 e0 ldi r24, 0x02 ; 2 606: 90 e0 ldi r25, 0x00 ; 0 608: e0 91 43 3e lds r30, 0x3E43 ; 0x803e43 <__flp> 60c: f0 91 44 3e lds r31, 0x3E44 ; 0x803e44 <__flp+0x1> 610: 20 e0 ldi r18, 0x00 ; 0 612: 30 e0 ldi r19, 0x00 ; 0 614: c0 e0 ldi r28, 0x00 ; 0 616: d0 e0 ldi r29, 0x00 ; 0 618: 30 97 sbiw r30, 0x00 ; 0 61a: 11 f1 breq .+68 ; 0x660 61c: 40 81 ld r20, Z 61e: 51 81 ldd r21, Z+1 ; 0x01 620: 48 17 cp r20, r24 622: 59 07 cpc r21, r25 624: c0 f0 brcs .+48 ; 0x656 626: 48 17 cp r20, r24 628: 59 07 cpc r21, r25 62a: 61 f4 brne .+24 ; 0x644 62c: 82 81 ldd r24, Z+2 ; 0x02 62e: 93 81 ldd r25, Z+3 ; 0x03 630: 20 97 sbiw r28, 0x00 ; 0 632: 19 f0 breq .+6 ; 0x63a 634: 8a 83 std Y+2, r24 ; 0x02 636: 9b 83 std Y+3, r25 ; 0x03 638: 2b c0 rjmp .+86 ; 0x690 63a: 80 93 43 3e sts 0x3E43, r24 ; 0x803e43 <__flp> 63e: 90 93 44 3e sts 0x3E44, r25 ; 0x803e44 <__flp+0x1> 642: 26 c0 rjmp .+76 ; 0x690 644: 21 15 cp r18, r1 646: 31 05 cpc r19, r1 648: 19 f0 breq .+6 ; 0x650 64a: 42 17 cp r20, r18 64c: 53 07 cpc r21, r19 64e: 18 f4 brcc .+6 ; 0x656 650: 9a 01 movw r18, r20 652: be 01 movw r22, r28 654: df 01 movw r26, r30 656: ef 01 movw r28, r30 658: 02 80 ldd r0, Z+2 ; 0x02 65a: f3 81 ldd r31, Z+3 ; 0x03 65c: e0 2d mov r30, r0 65e: dc cf rjmp .-72 ; 0x618 660: 21 15 cp r18, r1 662: 31 05 cpc r19, r1 664: 09 f1 breq .+66 ; 0x6a8 666: 28 1b sub r18, r24 668: 39 0b sbc r19, r25 66a: 24 30 cpi r18, 0x04 ; 4 66c: 31 05 cpc r19, r1 66e: 90 f4 brcc .+36 ; 0x694 670: 12 96 adiw r26, 0x02 ; 2 672: 8d 91 ld r24, X+ 674: 9c 91 ld r25, X 676: 13 97 sbiw r26, 0x03 ; 3 678: 61 15 cp r22, r1 67a: 71 05 cpc r23, r1 67c: 21 f0 breq .+8 ; 0x686 67e: fb 01 movw r30, r22 680: 82 83 std Z+2, r24 ; 0x02 682: 93 83 std Z+3, r25 ; 0x03 684: 04 c0 rjmp .+8 ; 0x68e 686: 80 93 43 3e sts 0x3E43, r24 ; 0x803e43 <__flp> 68a: 90 93 44 3e sts 0x3E44, r25 ; 0x803e44 <__flp+0x1> 68e: fd 01 movw r30, r26 690: 32 96 adiw r30, 0x02 ; 2 692: 44 c0 rjmp .+136 ; 0x71c 694: fd 01 movw r30, r26 696: e2 0f add r30, r18 698: f3 1f adc r31, r19 69a: 81 93 st Z+, r24 69c: 91 93 st Z+, r25 69e: 22 50 subi r18, 0x02 ; 2 6a0: 31 09 sbc r19, r1 6a2: 2d 93 st X+, r18 6a4: 3c 93 st X, r19 6a6: 3a c0 rjmp .+116 ; 0x71c 6a8: 20 91 41 3e lds r18, 0x3E41 ; 0x803e41 <__brkval> 6ac: 30 91 42 3e lds r19, 0x3E42 ; 0x803e42 <__brkval+0x1> 6b0: 23 2b or r18, r19 6b2: 41 f4 brne .+16 ; 0x6c4 6b4: 20 91 02 3e lds r18, 0x3E02 ; 0x803e02 <__malloc_heap_start> 6b8: 30 91 03 3e lds r19, 0x3E03 ; 0x803e03 <__malloc_heap_start+0x1> 6bc: 20 93 41 3e sts 0x3E41, r18 ; 0x803e41 <__brkval> 6c0: 30 93 42 3e sts 0x3E42, r19 ; 0x803e42 <__brkval+0x1> 6c4: 20 91 00 3e lds r18, 0x3E00 ; 0x803e00 <__data_start> 6c8: 30 91 01 3e lds r19, 0x3E01 ; 0x803e01 <__data_start+0x1> 6cc: 21 15 cp r18, r1 6ce: 31 05 cpc r19, r1 6d0: 41 f4 brne .+16 ; 0x6e2 6d2: 2d b7 in r18, 0x3d ; 61 6d4: 3e b7 in r19, 0x3e ; 62 6d6: 40 91 04 3e lds r20, 0x3E04 ; 0x803e04 <__malloc_margin> 6da: 50 91 05 3e lds r21, 0x3E05 ; 0x803e05 <__malloc_margin+0x1> 6de: 24 1b sub r18, r20 6e0: 35 0b sbc r19, r21 6e2: e0 91 41 3e lds r30, 0x3E41 ; 0x803e41 <__brkval> 6e6: f0 91 42 3e lds r31, 0x3E42 ; 0x803e42 <__brkval+0x1> 6ea: e2 17 cp r30, r18 6ec: f3 07 cpc r31, r19 6ee: a0 f4 brcc .+40 ; 0x718 6f0: 2e 1b sub r18, r30 6f2: 3f 0b sbc r19, r31 6f4: 28 17 cp r18, r24 6f6: 39 07 cpc r19, r25 6f8: 78 f0 brcs .+30 ; 0x718 6fa: ac 01 movw r20, r24 6fc: 4e 5f subi r20, 0xFE ; 254 6fe: 5f 4f sbci r21, 0xFF ; 255 700: 24 17 cp r18, r20 702: 35 07 cpc r19, r21 704: 48 f0 brcs .+18 ; 0x718 706: 4e 0f add r20, r30 708: 5f 1f adc r21, r31 70a: 40 93 41 3e sts 0x3E41, r20 ; 0x803e41 <__brkval> 70e: 50 93 42 3e sts 0x3E42, r21 ; 0x803e42 <__brkval+0x1> 712: 81 93 st Z+, r24 714: 91 93 st Z+, r25 716: 02 c0 rjmp .+4 ; 0x71c 718: e0 e0 ldi r30, 0x00 ; 0 71a: f0 e0 ldi r31, 0x00 ; 0 71c: cf 01 movw r24, r30 71e: df 91 pop r29 720: cf 91 pop r28 722: 08 95 ret 00000724 : 724: 0f 93 push r16 726: 1f 93 push r17 728: cf 93 push r28 72a: df 93 push r29 72c: 00 97 sbiw r24, 0x00 ; 0 72e: 09 f4 brne .+2 ; 0x732 730: 8c c0 rjmp .+280 ; 0x84a 732: fc 01 movw r30, r24 734: 32 97 sbiw r30, 0x02 ; 2 736: 12 82 std Z+2, r1 ; 0x02 738: 13 82 std Z+3, r1 ; 0x03 73a: 00 91 43 3e lds r16, 0x3E43 ; 0x803e43 <__flp> 73e: 10 91 44 3e lds r17, 0x3E44 ; 0x803e44 <__flp+0x1> 742: 01 15 cp r16, r1 744: 11 05 cpc r17, r1 746: 81 f4 brne .+32 ; 0x768 748: 20 81 ld r18, Z 74a: 31 81 ldd r19, Z+1 ; 0x01 74c: 82 0f add r24, r18 74e: 93 1f adc r25, r19 750: 20 91 41 3e lds r18, 0x3E41 ; 0x803e41 <__brkval> 754: 30 91 42 3e lds r19, 0x3E42 ; 0x803e42 <__brkval+0x1> 758: 28 17 cp r18, r24 75a: 39 07 cpc r19, r25 75c: 79 f5 brne .+94 ; 0x7bc 75e: e0 93 41 3e sts 0x3E41, r30 ; 0x803e41 <__brkval> 762: f0 93 42 3e sts 0x3E42, r31 ; 0x803e42 <__brkval+0x1> 766: 71 c0 rjmp .+226 ; 0x84a 768: d8 01 movw r26, r16 76a: 40 e0 ldi r20, 0x00 ; 0 76c: 50 e0 ldi r21, 0x00 ; 0 76e: ae 17 cp r26, r30 770: bf 07 cpc r27, r31 772: 50 f4 brcc .+20 ; 0x788 774: 12 96 adiw r26, 0x02 ; 2 776: 2d 91 ld r18, X+ 778: 3c 91 ld r19, X 77a: 13 97 sbiw r26, 0x03 ; 3 77c: ad 01 movw r20, r26 77e: 21 15 cp r18, r1 780: 31 05 cpc r19, r1 782: 09 f1 breq .+66 ; 0x7c6 784: d9 01 movw r26, r18 786: f3 cf rjmp .-26 ; 0x76e 788: 9d 01 movw r18, r26 78a: da 01 movw r26, r20 78c: 22 83 std Z+2, r18 ; 0x02 78e: 33 83 std Z+3, r19 ; 0x03 790: 60 81 ld r22, Z 792: 71 81 ldd r23, Z+1 ; 0x01 794: 86 0f add r24, r22 796: 97 1f adc r25, r23 798: 82 17 cp r24, r18 79a: 93 07 cpc r25, r19 79c: 69 f4 brne .+26 ; 0x7b8 79e: ec 01 movw r28, r24 7a0: 28 81 ld r18, Y 7a2: 39 81 ldd r19, Y+1 ; 0x01 7a4: 26 0f add r18, r22 7a6: 37 1f adc r19, r23 7a8: 2e 5f subi r18, 0xFE ; 254 7aa: 3f 4f sbci r19, 0xFF ; 255 7ac: 20 83 st Z, r18 7ae: 31 83 std Z+1, r19 ; 0x01 7b0: 8a 81 ldd r24, Y+2 ; 0x02 7b2: 9b 81 ldd r25, Y+3 ; 0x03 7b4: 82 83 std Z+2, r24 ; 0x02 7b6: 93 83 std Z+3, r25 ; 0x03 7b8: 45 2b or r20, r21 7ba: 29 f4 brne .+10 ; 0x7c6 7bc: e0 93 43 3e sts 0x3E43, r30 ; 0x803e43 <__flp> 7c0: f0 93 44 3e sts 0x3E44, r31 ; 0x803e44 <__flp+0x1> 7c4: 42 c0 rjmp .+132 ; 0x84a 7c6: 12 96 adiw r26, 0x02 ; 2 7c8: ed 93 st X+, r30 7ca: fc 93 st X, r31 7cc: 13 97 sbiw r26, 0x03 ; 3 7ce: ed 01 movw r28, r26 7d0: 49 91 ld r20, Y+ 7d2: 59 91 ld r21, Y+ 7d4: 9e 01 movw r18, r28 7d6: 24 0f add r18, r20 7d8: 35 1f adc r19, r21 7da: e2 17 cp r30, r18 7dc: f3 07 cpc r31, r19 7de: 71 f4 brne .+28 ; 0x7fc 7e0: 80 81 ld r24, Z 7e2: 91 81 ldd r25, Z+1 ; 0x01 7e4: 84 0f add r24, r20 7e6: 95 1f adc r25, r21 7e8: 02 96 adiw r24, 0x02 ; 2 7ea: 8d 93 st X+, r24 7ec: 9c 93 st X, r25 7ee: 11 97 sbiw r26, 0x01 ; 1 7f0: 82 81 ldd r24, Z+2 ; 0x02 7f2: 93 81 ldd r25, Z+3 ; 0x03 7f4: 12 96 adiw r26, 0x02 ; 2 7f6: 8d 93 st X+, r24 7f8: 9c 93 st X, r25 7fa: 13 97 sbiw r26, 0x03 ; 3 7fc: e0 e0 ldi r30, 0x00 ; 0 7fe: f0 e0 ldi r31, 0x00 ; 0 800: d8 01 movw r26, r16 802: 12 96 adiw r26, 0x02 ; 2 804: 8d 91 ld r24, X+ 806: 9c 91 ld r25, X 808: 13 97 sbiw r26, 0x03 ; 3 80a: 00 97 sbiw r24, 0x00 ; 0 80c: 19 f0 breq .+6 ; 0x814 80e: f8 01 movw r30, r16 810: 8c 01 movw r16, r24 812: f6 cf rjmp .-20 ; 0x800 814: 8d 91 ld r24, X+ 816: 9c 91 ld r25, X 818: 98 01 movw r18, r16 81a: 2e 5f subi r18, 0xFE ; 254 81c: 3f 4f sbci r19, 0xFF ; 255 81e: 82 0f add r24, r18 820: 93 1f adc r25, r19 822: 20 91 41 3e lds r18, 0x3E41 ; 0x803e41 <__brkval> 826: 30 91 42 3e lds r19, 0x3E42 ; 0x803e42 <__brkval+0x1> 82a: 28 17 cp r18, r24 82c: 39 07 cpc r19, r25 82e: 69 f4 brne .+26 ; 0x84a 830: 30 97 sbiw r30, 0x00 ; 0 832: 29 f4 brne .+10 ; 0x83e 834: 10 92 43 3e sts 0x3E43, r1 ; 0x803e43 <__flp> 838: 10 92 44 3e sts 0x3E44, r1 ; 0x803e44 <__flp+0x1> 83c: 02 c0 rjmp .+4 ; 0x842 83e: 12 82 std Z+2, r1 ; 0x02 840: 13 82 std Z+3, r1 ; 0x03 842: 00 93 41 3e sts 0x3E41, r16 ; 0x803e41 <__brkval> 846: 10 93 42 3e sts 0x3E42, r17 ; 0x803e42 <__brkval+0x1> 84a: df 91 pop r29 84c: cf 91 pop r28 84e: 1f 91 pop r17 850: 0f 91 pop r16 852: 08 95 ret 00000854 : 854: fc 01 movw r30, r24 856: 05 90 lpm r0, Z+ 858: 61 50 subi r22, 0x01 ; 1 85a: 70 40 sbci r23, 0x00 ; 0 85c: 01 10 cpse r0, r1 85e: d8 f7 brcc .-10 ; 0x856 860: 80 95 com r24 862: 90 95 com r25 864: 8e 0f add r24, r30 866: 9f 1f adc r25, r31 868: 08 95 ret 0000086a : 86a: dc 01 movw r26, r24 86c: 01 c0 rjmp .+2 ; 0x870 86e: 6d 93 st X+, r22 870: 41 50 subi r20, 0x01 ; 1 872: 50 40 sbci r21, 0x00 ; 0 874: e0 f7 brcc .-8 ; 0x86e 876: 08 95 ret 00000878 : 878: fc 01 movw r30, r24 87a: 61 50 subi r22, 0x01 ; 1 87c: 70 40 sbci r23, 0x00 ; 0 87e: 01 90 ld r0, Z+ 880: 01 10 cpse r0, r1 882: d8 f7 brcc .-10 ; 0x87a 884: 80 95 com r24 886: 90 95 com r25 888: 8e 0f add r24, r30 88a: 9f 1f adc r25, r31 88c: 08 95 ret 0000088e : 88e: 0f 93 push r16 890: 1f 93 push r17 892: cf 93 push r28 894: df 93 push r29 896: fb 01 movw r30, r22 898: 23 81 ldd r18, Z+3 ; 0x03 89a: 21 fd sbrc r18, 1 89c: 03 c0 rjmp .+6 ; 0x8a4 89e: 8f ef ldi r24, 0xFF ; 255 8a0: 9f ef ldi r25, 0xFF ; 255 8a2: 28 c0 rjmp .+80 ; 0x8f4 8a4: 22 ff sbrs r18, 2 8a6: 16 c0 rjmp .+44 ; 0x8d4 8a8: 46 81 ldd r20, Z+6 ; 0x06 8aa: 57 81 ldd r21, Z+7 ; 0x07 8ac: 24 81 ldd r18, Z+4 ; 0x04 8ae: 35 81 ldd r19, Z+5 ; 0x05 8b0: 42 17 cp r20, r18 8b2: 53 07 cpc r21, r19 8b4: 44 f4 brge .+16 ; 0x8c6 8b6: a0 81 ld r26, Z 8b8: b1 81 ldd r27, Z+1 ; 0x01 8ba: 9d 01 movw r18, r26 8bc: 2f 5f subi r18, 0xFF ; 255 8be: 3f 4f sbci r19, 0xFF ; 255 8c0: 20 83 st Z, r18 8c2: 31 83 std Z+1, r19 ; 0x01 8c4: 8c 93 st X, r24 8c6: 26 81 ldd r18, Z+6 ; 0x06 8c8: 37 81 ldd r19, Z+7 ; 0x07 8ca: 2f 5f subi r18, 0xFF ; 255 8cc: 3f 4f sbci r19, 0xFF ; 255 8ce: 26 83 std Z+6, r18 ; 0x06 8d0: 37 83 std Z+7, r19 ; 0x07 8d2: 10 c0 rjmp .+32 ; 0x8f4 8d4: eb 01 movw r28, r22 8d6: 09 2f mov r16, r25 8d8: 18 2f mov r17, r24 8da: 00 84 ldd r0, Z+8 ; 0x08 8dc: f1 85 ldd r31, Z+9 ; 0x09 8de: e0 2d mov r30, r0 8e0: 09 95 icall 8e2: 89 2b or r24, r25 8e4: e1 f6 brne .-72 ; 0x89e 8e6: 8e 81 ldd r24, Y+6 ; 0x06 8e8: 9f 81 ldd r25, Y+7 ; 0x07 8ea: 01 96 adiw r24, 0x01 ; 1 8ec: 8e 83 std Y+6, r24 ; 0x06 8ee: 9f 83 std Y+7, r25 ; 0x07 8f0: 81 2f mov r24, r17 8f2: 90 2f mov r25, r16 8f4: df 91 pop r29 8f6: cf 91 pop r28 8f8: 1f 91 pop r17 8fa: 0f 91 pop r16 8fc: 08 95 ret 000008fe <__ultoa_invert>: 8fe: fa 01 movw r30, r20 900: aa 27 eor r26, r26 902: 28 30 cpi r18, 0x08 ; 8 904: 51 f1 breq .+84 ; 0x95a <__ultoa_invert+0x5c> 906: 20 31 cpi r18, 0x10 ; 16 908: 81 f1 breq .+96 ; 0x96a <__ultoa_invert+0x6c> 90a: e8 94 clt 90c: 6f 93 push r22 90e: 6e 7f andi r22, 0xFE ; 254 910: 6e 5f subi r22, 0xFE ; 254 912: 7f 4f sbci r23, 0xFF ; 255 914: 8f 4f sbci r24, 0xFF ; 255 916: 9f 4f sbci r25, 0xFF ; 255 918: af 4f sbci r26, 0xFF ; 255 91a: b1 e0 ldi r27, 0x01 ; 1 91c: 3e d0 rcall .+124 ; 0x99a <__ultoa_invert+0x9c> 91e: b4 e0 ldi r27, 0x04 ; 4 920: 3c d0 rcall .+120 ; 0x99a <__ultoa_invert+0x9c> 922: 67 0f add r22, r23 924: 78 1f adc r23, r24 926: 89 1f adc r24, r25 928: 9a 1f adc r25, r26 92a: a1 1d adc r26, r1 92c: 68 0f add r22, r24 92e: 79 1f adc r23, r25 930: 8a 1f adc r24, r26 932: 91 1d adc r25, r1 934: a1 1d adc r26, r1 936: 6a 0f add r22, r26 938: 71 1d adc r23, r1 93a: 81 1d adc r24, r1 93c: 91 1d adc r25, r1 93e: a1 1d adc r26, r1 940: 20 d0 rcall .+64 ; 0x982 <__ultoa_invert+0x84> 942: 09 f4 brne .+2 ; 0x946 <__ultoa_invert+0x48> 944: 68 94 set 946: 3f 91 pop r19 948: 2a e0 ldi r18, 0x0A ; 10 94a: 26 9f mul r18, r22 94c: 11 24 eor r1, r1 94e: 30 19 sub r19, r0 950: 30 5d subi r19, 0xD0 ; 208 952: 31 93 st Z+, r19 954: de f6 brtc .-74 ; 0x90c <__ultoa_invert+0xe> 956: cf 01 movw r24, r30 958: 08 95 ret 95a: 46 2f mov r20, r22 95c: 47 70 andi r20, 0x07 ; 7 95e: 40 5d subi r20, 0xD0 ; 208 960: 41 93 st Z+, r20 962: b3 e0 ldi r27, 0x03 ; 3 964: 0f d0 rcall .+30 ; 0x984 <__ultoa_invert+0x86> 966: c9 f7 brne .-14 ; 0x95a <__ultoa_invert+0x5c> 968: f6 cf rjmp .-20 ; 0x956 <__ultoa_invert+0x58> 96a: 46 2f mov r20, r22 96c: 4f 70 andi r20, 0x0F ; 15 96e: 40 5d subi r20, 0xD0 ; 208 970: 4a 33 cpi r20, 0x3A ; 58 972: 18 f0 brcs .+6 ; 0x97a <__ultoa_invert+0x7c> 974: 49 5d subi r20, 0xD9 ; 217 976: 31 fd sbrc r19, 1 978: 40 52 subi r20, 0x20 ; 32 97a: 41 93 st Z+, r20 97c: 02 d0 rcall .+4 ; 0x982 <__ultoa_invert+0x84> 97e: a9 f7 brne .-22 ; 0x96a <__ultoa_invert+0x6c> 980: ea cf rjmp .-44 ; 0x956 <__ultoa_invert+0x58> 982: b4 e0 ldi r27, 0x04 ; 4 984: a6 95 lsr r26 986: 97 95 ror r25 988: 87 95 ror r24 98a: 77 95 ror r23 98c: 67 95 ror r22 98e: ba 95 dec r27 990: c9 f7 brne .-14 ; 0x984 <__ultoa_invert+0x86> 992: 00 97 sbiw r24, 0x00 ; 0 994: 61 05 cpc r22, r1 996: 71 05 cpc r23, r1 998: 08 95 ret 99a: 9b 01 movw r18, r22 99c: ac 01 movw r20, r24 99e: 0a 2e mov r0, r26 9a0: 06 94 lsr r0 9a2: 57 95 ror r21 9a4: 47 95 ror r20 9a6: 37 95 ror r19 9a8: 27 95 ror r18 9aa: ba 95 dec r27 9ac: c9 f7 brne .-14 ; 0x9a0 <__ultoa_invert+0xa2> 9ae: 62 0f add r22, r18 9b0: 73 1f adc r23, r19 9b2: 84 1f adc r24, r20 9b4: 95 1f adc r25, r21 9b6: a0 1d adc r26, r0 9b8: 08 95 ret 000009ba <__prologue_saves__>: 9ba: 2f 92 push r2 9bc: 3f 92 push r3 9be: 4f 92 push r4 9c0: 5f 92 push r5 9c2: 6f 92 push r6 9c4: 7f 92 push r7 9c6: 8f 92 push r8 9c8: 9f 92 push r9 9ca: af 92 push r10 9cc: bf 92 push r11 9ce: cf 92 push r12 9d0: df 92 push r13 9d2: ef 92 push r14 9d4: ff 92 push r15 9d6: 0f 93 push r16 9d8: 1f 93 push r17 9da: cf 93 push r28 9dc: df 93 push r29 9de: cd b7 in r28, 0x3d ; 61 9e0: de b7 in r29, 0x3e ; 62 9e2: ca 1b sub r28, r26 9e4: db 0b sbc r29, r27 9e6: cd bf out 0x3d, r28 ; 61 9e8: de bf out 0x3e, r29 ; 62 9ea: 09 94 ijmp 000009ec <__epilogue_restores__>: 9ec: 2a 88 ldd r2, Y+18 ; 0x12 9ee: 39 88 ldd r3, Y+17 ; 0x11 9f0: 48 88 ldd r4, Y+16 ; 0x10 9f2: 5f 84 ldd r5, Y+15 ; 0x0f 9f4: 6e 84 ldd r6, Y+14 ; 0x0e 9f6: 7d 84 ldd r7, Y+13 ; 0x0d 9f8: 8c 84 ldd r8, Y+12 ; 0x0c 9fa: 9b 84 ldd r9, Y+11 ; 0x0b 9fc: aa 84 ldd r10, Y+10 ; 0x0a 9fe: b9 84 ldd r11, Y+9 ; 0x09 a00: c8 84 ldd r12, Y+8 ; 0x08 a02: df 80 ldd r13, Y+7 ; 0x07 a04: ee 80 ldd r14, Y+6 ; 0x06 a06: fd 80 ldd r15, Y+5 ; 0x05 a08: 0c 81 ldd r16, Y+4 ; 0x04 a0a: 1b 81 ldd r17, Y+3 ; 0x03 a0c: aa 81 ldd r26, Y+2 ; 0x02 a0e: b9 81 ldd r27, Y+1 ; 0x01 a10: ce 0f add r28, r30 a12: d1 1d adc r29, r1 a14: cd bf out 0x3d, r28 ; 61 a16: de bf out 0x3e, r29 ; 62 a18: ed 01 movw r28, r26 a1a: 08 95 ret 00000a1c <_exit>: a1c: f8 94 cli 00000a1e <__stop_program>: a1e: ff cf rjmp .-2 ; 0xa1e <__stop_program>