kcb_a32_v1.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .data 000001f0 00800100 000036d6 0000374a 2**0 CONTENTS, ALLOC, LOAD, DATA 1 .text 000036d6 00000000 00000000 00000074 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .bss 0000012c 008002f0 000038c6 0000393a 2**0 ALLOC 3 .stab 00008b2c 00000000 00000000 0000393c 2**2 CONTENTS, READONLY, DEBUGGING 4 .stabstr 00002876 00000000 00000000 0000c468 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__ctors_end> 4: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 8: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> c: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 10: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 14: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 18: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 1c: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 20: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 24: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 28: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 2c: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 30: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 34: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 38: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 3c: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 40: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 44: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 48: 0c 94 da 00 jmp 0x1b4 ; 0x1b4 <__vector_18> 4c: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 50: 0c 94 ba 13 jmp 0x2774 ; 0x2774 <__vector_20> 54: 0c 94 7c 13 jmp 0x26f8 ; 0x26f8 <__vector_21> 58: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 5c: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 60: 0c 94 b3 02 jmp 0x566 ; 0x566 <__vector_24> 64: 0c 94 18 13 jmp 0x2630 ; 0x2630 <__vector_25> 68: 0c 94 16 14 jmp 0x282c ; 0x282c <__vector_26> 6c: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 70: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 74: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 78: 0c 94 88 00 jmp 0x110 ; 0x110 <__bad_interrupt> 7c: 08 00 .word 0x0008 ; ???? 7e: 00 00 nop 80: be 92 st -X, r11 82: 24 49 sbci r18, 0x94 ; 148 84: 12 3e cpi r17, 0xE2 ; 226 86: ab aa std Y+51, r10 ; 0x33 88: aa 2a or r10, r26 8a: be cd rjmp .-1156 ; 0xfffffc08 <__eeprom_end+0xff7efc08> 8c: cc cc rjmp .-1640 ; 0xfffffa26 <__eeprom_end+0xff7efa26> 8e: 4c 3e cpi r20, 0xEC ; 236 90: 00 00 nop 92: 00 80 ld r0, Z 94: be ab std Y+54, r27 ; 0x36 96: aa aa std Y+50, r10 ; 0x32 98: aa 3e cpi r26, 0xEA ; 234 9a: 00 00 nop 9c: 00 00 nop 9e: bf 00 .word 0x00bf ; ???? a0: 00 00 nop a2: 80 3f cpi r24, 0xF0 ; 240 a4: 00 00 nop a6: 00 00 nop a8: 00 08 sbc r0, r0 aa: 41 78 andi r20, 0x81 ; 129 ac: d3 bb out 0x13, r29 ; 19 ae: 43 87 std Z+11, r20 ; 0x0b b0: d1 13 cpse r29, r17 b2: 3d 19 sub r19, r13 b4: 0e 3c cpi r16, 0xCE ; 206 b6: c3 bd out 0x23, r28 ; 35 b8: 42 82 std Z+2, r4 ; 0x02 ba: ad 2b or r26, r29 bc: 3e 68 ori r19, 0x8E ; 142 be: ec 82 std Y+4, r14 ; 0x04 c0: 76 be out 0x36, r7 ; 54 c2: d9 8f std Y+25, r29 ; 0x19 c4: e1 a9 ldd r30, Z+49 ; 0x31 c6: 3e 4c sbci r19, 0xCE ; 206 c8: 80 ef ldi r24, 0xF0 ; 240 ca: ff be out 0x3f, r15 ; 63 cc: 01 c4 rjmp .+2050 ; 0x8d0 <__vector_24+0x36a> ce: ff 7f andi r31, 0xFF ; 255 d0: 3f 00 .word 0x003f ; ???? d2: 00 00 nop ... 000000d6 <__ctors_end>: d6: 11 24 eor r1, r1 d8: 1f be out 0x3f, r1 ; 63 da: cf ef ldi r28, 0xFF ; 255 dc: d8 e0 ldi r29, 0x08 ; 8 de: de bf out 0x3e, r29 ; 62 e0: cd bf out 0x3d, r28 ; 61 000000e2 <__do_copy_data>: e2: 12 e0 ldi r17, 0x02 ; 2 e4: a0 e0 ldi r26, 0x00 ; 0 e6: b1 e0 ldi r27, 0x01 ; 1 e8: e6 ed ldi r30, 0xD6 ; 214 ea: f6 e3 ldi r31, 0x36 ; 54 ec: 02 c0 rjmp .+4 ; 0xf2 <.do_copy_data_start> 000000ee <.do_copy_data_loop>: ee: 05 90 lpm r0, Z+ f0: 0d 92 st X+, r0 000000f2 <.do_copy_data_start>: f2: a0 3f cpi r26, 0xF0 ; 240 f4: b1 07 cpc r27, r17 f6: d9 f7 brne .-10 ; 0xee <.do_copy_data_loop> 000000f8 <__do_clear_bss>: f8: 14 e0 ldi r17, 0x04 ; 4 fa: a0 ef ldi r26, 0xF0 ; 240 fc: b2 e0 ldi r27, 0x02 ; 2 fe: 01 c0 rjmp .+2 ; 0x102 <.do_clear_bss_start> 00000100 <.do_clear_bss_loop>: 100: 1d 92 st X+, r1 00000102 <.do_clear_bss_start>: 102: ac 31 cpi r26, 0x1C ; 28 104: b1 07 cpc r27, r17 106: e1 f7 brne .-8 ; 0x100 <.do_clear_bss_loop> 108: 0e 94 9b 06 call 0xd36 ; 0xd36
10c: 0c 94 69 1b jmp 0x36d2 ; 0x36d2 <_exit> 00000110 <__bad_interrupt>: 110: 0c 94 00 00 jmp 0 ; 0x0 <__heap_end> 00000114 : #else #define BTH_L_BASE 0x57 #endif void byte_to_hex(uint8_t byte, uint8_t *out) { 114: 38 2f mov r19, r24 116: fb 01 movw r30, r22 if((byte & 0x0f) < 0x0a) { 118: 90 e0 ldi r25, 0x00 ; 0 11a: 8f 70 andi r24, 0x0F ; 15 11c: 90 70 andi r25, 0x00 ; 0 11e: 23 2f mov r18, r19 120: 2f 70 andi r18, 0x0F ; 15 122: 0a 97 sbiw r24, 0x0a ; 10 124: 14 f4 brge .+4 ; 0x12a out[1] = (byte & 0x0f) + 0x30; 126: 20 5d subi r18, 0xD0 ; 208 128: 01 c0 rjmp .+2 ; 0x12c } else { out[1] = (byte & 0x0f) + BTH_L_BASE; 12a: 29 5c subi r18, 0xC9 ; 201 12c: 21 83 std Z+1, r18 ; 0x01 } if((byte>>4) < 0x0a) { 12e: 83 2f mov r24, r19 130: 82 95 swap r24 132: 8f 70 andi r24, 0x0F ; 15 134: 8a 30 cpi r24, 0x0A ; 10 136: 10 f4 brcc .+4 ; 0x13c out[0] = (byte>>4) + 0x30; 138: 80 5d subi r24, 0xD0 ; 208 13a: 01 c0 rjmp .+2 ; 0x13e } else { out[0] = (byte>>4) + BTH_L_BASE; 13c: 89 5c subi r24, 0xC9 ; 201 13e: 80 83 st Z, r24 140: 08 95 ret 00000142 : { if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 142: f8 94 cli 144: 80 91 f0 02 lds r24, 0x02F0 148: 81 ff sbrs r24, 1 14a: 02 c0 rjmp .+4 ; 0x150 14c: 80 e0 ldi r24, 0x00 ; 0 14e: 06 c0 rjmp .+12 ; 0x15c if((byte>>4) < 0x0a) { 150: 80 91 f0 02 lds r24, 0x02F0 154: 82 60 ori r24, 0x02 ; 2 156: 80 93 f0 02 sts 0x02F0, r24 15a: 81 e0 ldi r24, 0x01 ; 1 out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; 15c: 78 94 sei } 15e: 88 23 and r24, r24 160: 81 f3 breq .-32 ; 0x142 162: 80 91 f2 02 lds r24, 0x02F2 166: 88 23 and r24, r24 168: e1 f3 breq .-8 ; 0x162 16a: f8 94 cli 16c: 30 91 b0 03 lds r19, 0x03B0 170: 20 e0 ldi r18, 0x00 ; 0 172: 08 c0 rjmp .+16 ; 0x184 174: fd 01 movw r30, r26 176: ef 54 subi r30, 0x4F ; 79 178: fc 4f sbci r31, 0xFC ; 252 17a: 80 81 ld r24, Z 17c: a0 55 subi r26, 0x50 ; 80 17e: bc 4f sbci r27, 0xFC ; 252 180: 8c 93 st X, r24 182: 2f 5f subi r18, 0xFF ; 255 184: a2 2f mov r26, r18 186: b0 e0 ldi r27, 0x00 ; 0 188: 80 91 f2 02 lds r24, 0x02F2 18c: 90 e0 ldi r25, 0x00 ; 0 18e: 01 97 sbiw r24, 0x01 ; 1 190: a8 17 cp r26, r24 192: b9 07 cpc r27, r25 194: 7c f3 brlt .-34 ; 0x174 196: 80 91 f2 02 lds r24, 0x02F2 19a: 81 50 subi r24, 0x01 ; 1 19c: 80 93 f2 02 sts 0x02F2, r24 1a0: 78 94 sei } } void word_to_hex(uint16_t word, uint8_t *out) { byte_to_hex(word >> 8, out); 1a2: f8 94 cli byte_to_hex(word & 0xff, out+2); 1a4: 80 91 f0 02 lds r24, 0x02F0 1a8: 8d 7f andi r24, 0xFD ; 253 1aa: 80 93 f0 02 sts 0x02F0, r24 } 1ae: 78 94 sei 1b0: 83 2f mov r24, r19 1b2: 08 95 ret 000001b4 <__vector_18>: else if(b < 0x67) return b - (0x61 - 0x0a); else return 0; } uint8_t hex_to_byte(uint8_t in[2]) { 1b4: 1f 92 push r1 1b6: 0f 92 push r0 1b8: 0f b6 in r0, 0x3f ; 63 1ba: 0f 92 push r0 1bc: 11 24 eor r1, r1 1be: 5f 93 push r21 1c0: 6f 93 push r22 1c2: 7f 93 push r23 1c4: 8f 93 push r24 1c6: 9f 93 push r25 1c8: af 93 push r26 1ca: bf 93 push r27 if(!isxdigit(in[0]) || !isxdigit(in[1])) return 0; 1cc: 80 91 13 03 lds r24, 0x0313 1d0: 90 91 14 03 lds r25, 0x0314 1d4: 01 96 adiw r24, 0x01 ; 1 1d6: 90 93 14 03 sts 0x0314, r25 1da: 80 93 13 03 sts 0x0313, r24 return hex_to_nibble(in[1]) | (hex_to_nibble(in[0]) << 4); } 1de: 80 91 13 03 lds r24, 0x0313 1e2: 90 91 14 03 lds r25, 0x0314 1e6: 89 2b or r24, r25 1e8: 31 f4 brne .+12 ; 0x1f6 <__vector_18+0x42> 1ea: 84 e2 ldi r24, 0x24 ; 36 1ec: 90 e0 ldi r25, 0x00 ; 0 1ee: 90 93 14 03 sts 0x0314, r25 1f2: 80 93 13 03 sts 0x0313, r24 void serial_dump_bytes(uint8_t len, const uint8_t *p) { uint8_t i; 1f6: 80 91 13 03 lds r24, 0x0313 1fa: 90 91 14 03 lds r25, 0x0314 1fe: 65 e0 ldi r22, 0x05 ; 5 200: 70 e0 ldi r23, 0x00 ; 0 202: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 206: 89 2b or r24, r25 208: 09 f0 breq .+2 ; 0x20c <__vector_18+0x58> 20a: 45 c0 rjmp .+138 ; 0x296 <__vector_18+0xe2> uint8_t tmp[2]; 20c: 80 91 15 03 lds r24, 0x0315 210: 81 60 ori r24, 0x01 ; 1 212: 80 93 15 03 sts 0x0315, r24 serial_tx_P(5, (uint8_t*)PSTR("Dump[")); i = len + '0'; 216: 80 91 13 03 lds r24, 0x0313 21a: 90 91 14 03 lds r25, 0x0314 21e: 6a e0 ldi r22, 0x0A ; 10 220: 70 e0 ldi r23, 0x00 ; 0 222: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 226: 89 2b or r24, r25 228: b1 f5 brne .+108 ; 0x296 <__vector_18+0xe2> serial_tx(1, &i); 22a: 80 91 15 03 lds r24, 0x0315 22e: 82 60 ori r24, 0x02 ; 2 230: 80 93 15 03 sts 0x0315, r24 serial_tx_P(3, (uint8_t*)PSTR("]: ")); 234: 80 91 13 03 lds r24, 0x0313 238: 90 91 14 03 lds r25, 0x0314 23c: 62 e3 ldi r22, 0x32 ; 50 23e: 70 e0 ldi r23, 0x00 ; 0 240: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 244: 89 2b or r24, r25 246: 39 f5 brne .+78 ; 0x296 <__vector_18+0xe2> for(i = 0; i 262: 89 2b or r24, r25 264: c1 f4 brne .+48 ; 0x296 <__vector_18+0xe2> serial_tx(1, (uint8_t*)" "); 266: 80 91 15 03 lds r24, 0x0315 26a: 88 60 ori r24, 0x08 ; 8 26c: 80 93 15 03 sts 0x0315, r24 } 270: 80 91 5b 03 lds r24, 0x035B 274: 90 91 5c 03 lds r25, 0x035C 278: a0 91 5d 03 lds r26, 0x035D 27c: b0 91 5e 03 lds r27, 0x035E 280: 01 96 adiw r24, 0x01 ; 1 282: a1 1d adc r26, r1 284: b1 1d adc r27, r1 286: 80 93 5b 03 sts 0x035B, r24 28a: 90 93 5c 03 sts 0x035C, r25 28e: a0 93 5d 03 sts 0x035D, r26 292: b0 93 5e 03 sts 0x035E, r27 serial_tx(2, (uint8_t*)"\r\n"); } 296: bf 91 pop r27 298: af 91 pop r26 29a: 9f 91 pop r25 29c: 8f 91 pop r24 29e: 7f 91 pop r23 2a0: 6f 91 pop r22 2a2: 5f 91 pop r21 2a4: 0f 90 pop r0 2a6: 0f be out 0x3f, r0 ; 63 2a8: 0f 90 pop r0 2aa: 1f 90 pop r1 2ac: 18 95 reti 000002ae : EECR |= (1< EEAR = addr; 2ba: 32 bd out 0x22, r19 ; 34 2bc: 21 bd out 0x21, r18 ; 33 EECR |= (1< return tmp; } uint16_t eeprom_read16(uint16_t addr) { return ((uint16_t)eeprom_read8(addr+0) << 8) | ((uint16_t)eeprom_read8(addr+1)); 2d2: 2f 5f subi r18, 0xFF ; 255 2d4: 3f 4f sbci r19, 0xFF ; 255 uint8_t eeprom_read8(uint16_t addr) { uint8_t tmp; eeprom_read_waiting = 1; while(EECR & (1<: } } } void eeprom_write8(uint16_t addr, uint8_t data) { 2f2: 28 2f mov r18, r24 while(eeprom_buf_size >= EEPROM_BUF_LEN); 2f4: 80 91 8e 03 lds r24, 0x038E 2f8: 85 30 cpi r24, 0x05 ; 5 2fa: e0 f7 brcc .-8 ; 0x2f4 cli(); 2fc: f8 94 cli eeprom_buf[eeprom_buf_size*3 + 0] = addr >> 8; 2fe: e0 91 8e 03 lds r30, 0x038E 302: 83 e0 ldi r24, 0x03 ; 3 304: e8 9f mul r30, r24 306: f0 01 movw r30, r0 308: 11 24 eor r1, r1 30a: e1 58 subi r30, 0x81 ; 129 30c: fc 4f sbci r31, 0xFC ; 252 30e: 90 83 st Z, r25 eeprom_buf[eeprom_buf_size*3 + 1] = addr & 0xff; 310: e0 91 8e 03 lds r30, 0x038E 314: e8 9f mul r30, r24 316: f0 01 movw r30, r0 318: 11 24 eor r1, r1 31a: e0 58 subi r30, 0x80 ; 128 31c: fc 4f sbci r31, 0xFC ; 252 31e: 20 83 st Z, r18 eeprom_buf[eeprom_buf_size*3 + 2] = data; 320: e0 91 8e 03 lds r30, 0x038E 324: e8 9f mul r30, r24 326: f0 01 movw r30, r0 328: 11 24 eor r1, r1 32a: ef 57 subi r30, 0x7F ; 127 32c: fc 4f sbci r31, 0xFC ; 252 32e: 60 83 st Z, r22 eeprom_buf_size++; 330: 80 91 8e 03 lds r24, 0x038E 334: 8f 5f subi r24, 0xFF ; 255 336: 80 93 8e 03 sts 0x038E, r24 sei(); 33a: 78 94 sei deep_sleep_block |= DEEP_SLEEP_BLOCK_EEPROM; 33c: 80 91 f4 02 lds r24, 0x02F4 340: 84 60 ori r24, 0x04 ; 4 342: 80 93 f4 02 sts 0x02F4, r24 EECR |= (1<: void eeprom_write16(uint16_t addr, uint16_t data) { 34a: ff 92 push r15 34c: 0f 93 push r16 34e: 1f 93 push r17 350: 8c 01 movw r16, r24 352: f6 2e mov r15, r22 354: 67 2f mov r22, r23 eeprom_write8(addr+0, (data >> 8) & 0xff); 356: 0e 94 79 01 call 0x2f2 ; 0x2f2 eeprom_write8(addr+1, data & 0xff); 35a: c8 01 movw r24, r16 35c: 01 96 adiw r24, 0x01 ; 1 35e: 6f 2d mov r22, r15 360: 0e 94 79 01 call 0x2f2 ; 0x2f2 } 364: 1f 91 pop r17 366: 0f 91 pop r16 368: ff 90 pop r15 36a: 08 95 ret 0000036c : #include #include #define EEPROM_BUF_LEN 5 #define mEEP_TD(type, bits) \ 36c: 80 e0 ldi r24, 0x00 ; 0 36e: 90 e0 ldi r25, 0x00 ; 0 370: 60 91 f8 02 lds r22, 0x02F8 374: 0e 94 79 01 call 0x2f2 ; 0x2f2 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ 378: 81 e0 ldi r24, 0x01 ; 1 37a: 90 e0 ldi r25, 0x00 ; 0 37c: 60 91 f9 02 lds r22, 0x02F9 380: 0e 94 79 01 call 0x2f2 ; 0x2f2 void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) 384: 60 91 fa 02 lds r22, 0x02FA 388: 70 91 fb 02 lds r23, 0x02FB 38c: 82 e0 ldi r24, 0x02 ; 2 38e: 90 e0 ldi r25, 0x00 ; 0 390: 0e 94 a5 01 call 0x34a ; 0x34a 394: 60 91 fc 02 lds r22, 0x02FC 398: 70 91 fd 02 lds r23, 0x02FD 39c: 84 e0 ldi r24, 0x04 ; 4 39e: 90 e0 ldi r25, 0x00 ; 0 3a0: 0e 94 a5 01 call 0x34a ; 0x34a volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; 3a4: 60 91 fe 02 lds r22, 0x02FE 3a8: 70 91 ff 02 lds r23, 0x02FF 3ac: 86 e0 ldi r24, 0x06 ; 6 3ae: 90 e0 ldi r25, 0x00 ; 0 3b0: 0e 94 a5 01 call 0x34a ; 0x34a volatile uint8_t eeprom_buf_size; 3b4: 60 91 00 03 lds r22, 0x0300 3b8: 70 91 01 03 lds r23, 0x0301 3bc: 88 e0 ldi r24, 0x08 ; 8 3be: 90 e0 ldi r25, 0x00 ; 0 3c0: 0e 94 a5 01 call 0x34a ; 0x34a volatile uint8_t eeprom_read_waiting; 3c4: 60 91 02 03 lds r22, 0x0302 3c8: 70 91 03 03 lds r23, 0x0303 3cc: 8a e0 ldi r24, 0x0A ; 10 3ce: 90 e0 ldi r25, 0x00 ; 0 3d0: 0e 94 a5 01 call 0x34a ; 0x34a 3d4: 60 91 04 03 lds r22, 0x0304 3d8: 70 91 05 03 lds r23, 0x0305 3dc: 8c e0 ldi r24, 0x0C ; 12 3de: 90 e0 ldi r25, 0x00 ; 0 3e0: 0e 94 a5 01 call 0x34a ; 0x34a ISR(SIG_EEPROM_READY) 3e4: 60 91 06 03 lds r22, 0x0306 3e8: 70 91 07 03 lds r23, 0x0307 3ec: 8e e0 ldi r24, 0x0E ; 14 3ee: 90 e0 ldi r25, 0x00 ; 0 3f0: 0e 94 a5 01 call 0x34a ; 0x34a { 3f4: 60 91 08 03 lds r22, 0x0308 3f8: 70 91 09 03 lds r23, 0x0309 3fc: 80 e1 ldi r24, 0x10 ; 16 3fe: 90 e0 ldi r25, 0x00 ; 0 400: 0e 94 a5 01 call 0x34a ; 0x34a if(eeprom_read_waiting) { 404: 60 91 0a 03 lds r22, 0x030A 408: 70 91 0b 03 lds r23, 0x030B 40c: 82 e1 ldi r24, 0x12 ; 18 40e: 90 e0 ldi r25, 0x00 ; 0 410: 0e 94 a5 01 call 0x34a ; 0x34a EECR &= ~(1< } else { 424: 60 91 0e 03 lds r22, 0x030E 428: 70 91 0f 03 lds r23, 0x030F 42c: 86 e1 ldi r24, 0x16 ; 22 42e: 90 e0 ldi r25, 0x00 ; 0 430: 0e 94 a5 01 call 0x34a ; 0x34a if(eeprom_buf_size == 0) { EECR &= ~(1< ISR(SIG_EEPROM_READY) { if(eeprom_read_waiting) { EECR &= ~(1< deep_sleep_block &= ~(DEEP_SLEEP_BLOCK_EEPROM); } else { uint8_t i; EEAR = (eeprom_buf[0] << 8) | eeprom_buf[1]; EEDR = eeprom_buf[2]; EECR |= (1<: uint8_t hex_to_nibble(uint8_t b) { if(b < 0x3a) return b - 0x30; else if(b < 0x47) return b - (0x41 - 0x0a); else if(b < 0x67) return b - (0x61 - 0x0a); 452: 2f 92 push r2 454: 3f 92 push r3 456: 4f 92 push r4 458: 5f 92 push r5 45a: 6f 92 push r6 45c: 7f 92 push r7 45e: 8f 92 push r8 460: 9f 92 push r9 462: af 92 push r10 464: bf 92 push r11 466: cf 92 push r12 468: df 92 push r13 46a: ef 92 push r14 46c: ff 92 push r15 46e: 0f 93 push r16 470: 1f 93 push r17 472: 3b 01 movw r6, r22 474: 7a 01 movw r14, r20 else return 0; } 476: a0 e0 ldi r26, 0x00 ; 0 478: b0 e0 ldi r27, 0x00 ; 0 47a: bc 01 movw r22, r24 47c: cd 01 movw r24, r26 47e: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> uint8_t hex_to_byte(uint8_t in[2]) 482: 20 e0 ldi r18, 0x00 ; 0 484: 30 e0 ldi r19, 0x00 ; 0 486: 40 e8 ldi r20, 0x80 ; 128 488: 57 e3 ldi r21, 0x37 ; 55 48a: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> { 48e: 20 e0 ldi r18, 0x00 ; 0 490: 30 e0 ldi r19, 0x00 ; 0 492: 40 ea ldi r20, 0xA0 ; 160 494: 50 e4 ldi r21, 0x40 ; 64 496: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 49a: 5b 01 movw r10, r22 49c: 6c 01 movw r12, r24 if(!isxdigit(in[0]) || !isxdigit(in[1])) return 0; return hex_to_nibble(in[1]) | (hex_to_nibble(in[0]) << 4); 49e: 00 e0 ldi r16, 0x00 ; 0 4a0: 10 e0 ldi r17, 0x00 ; 0 4a2: c8 01 movw r24, r16 4a4: b7 01 movw r22, r14 4a6: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 4aa: 1b 01 movw r2, r22 4ac: 2c 01 movw r4, r24 void serial_dump_bytes(uint8_t len, const uint8_t *p) { uint8_t i; uint8_t tmp[2]; 4ae: c6 01 movw r24, r12 4b0: b5 01 movw r22, r10 4b2: 20 e0 ldi r18, 0x00 ; 0 4b4: 30 e4 ldi r19, 0x40 ; 64 4b6: 4c e1 ldi r20, 0x1C ; 28 4b8: 56 e4 ldi r21, 0x46 ; 70 4ba: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 4be: 7b 01 movw r14, r22 4c0: 8c 01 movw r16, r24 4c2: c6 01 movw r24, r12 4c4: b5 01 movw r22, r10 4c6: 20 e0 ldi r18, 0x00 ; 0 4c8: 30 e0 ldi r19, 0x00 ; 0 4ca: 40 e0 ldi r20, 0x00 ; 0 4cc: 50 ec ldi r21, 0xC0 ; 192 4ce: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 4d2: 20 e0 ldi r18, 0x00 ; 0 4d4: 30 e0 ldi r19, 0x00 ; 0 4d6: 40 ea ldi r20, 0xA0 ; 160 4d8: 50 e4 ldi r21, 0x40 ; 64 4da: 0e 94 58 18 call 0x30b0 ; 0x30b0 <__addsf3> 4de: 9b 01 movw r18, r22 4e0: ac 01 movw r20, r24 4e2: c8 01 movw r24, r16 4e4: b7 01 movw r22, r14 4e6: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 4ea: 7b 01 movw r14, r22 4ec: 8c 01 movw r16, r24 4ee: c2 01 movw r24, r4 4f0: b1 01 movw r22, r2 4f2: 20 e0 ldi r18, 0x00 ; 0 4f4: 30 e5 ldi r19, 0x50 ; 80 4f6: 43 ec ldi r20, 0xC3 ; 195 4f8: 57 e4 ldi r21, 0x47 ; 71 4fa: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 4fe: 9b 01 movw r18, r22 500: ac 01 movw r20, r24 502: c8 01 movw r24, r16 504: b7 01 movw r22, r14 506: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 50a: 0e 94 e8 19 call 0x33d0 ; 0x33d0 50e: 7b 01 movw r14, r22 510: 8c 01 movw r16, r24 512: 88 24 eor r8, r8 514: 99 24 eor r9, r9 516: c4 01 movw r24, r8 518: b3 01 movw r22, r6 51a: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 51e: a8 01 movw r20, r16 520: 97 01 movw r18, r14 522: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 526: 23 e3 ldi r18, 0x33 ; 51 528: 33 e9 ldi r19, 0x93 ; 147 52a: 48 e8 ldi r20, 0x88 ; 136 52c: 53 e4 ldi r21, 0x43 ; 67 52e: 0e 94 57 18 call 0x30ae ; 0x30ae <__subsf3> 532: 20 e0 ldi r18, 0x00 ; 0 534: 30 e0 ldi r19, 0x00 ; 0 536: 48 ec ldi r20, 0xC8 ; 200 538: 52 e4 ldi r21, 0x42 ; 66 53a: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 53e: 0e 94 24 19 call 0x3248 ; 0x3248 <__fixsfsi> serial_tx_P(5, (uint8_t*)PSTR("Dump[")); i = len + '0'; serial_tx(1, &i); serial_tx_P(3, (uint8_t*)PSTR("]: ")); 542: cb 01 movw r24, r22 544: 1f 91 pop r17 546: 0f 91 pop r16 548: ff 90 pop r15 54a: ef 90 pop r14 54c: df 90 pop r13 54e: cf 90 pop r12 550: bf 90 pop r11 552: af 90 pop r10 554: 9f 90 pop r9 556: 8f 90 pop r8 558: 7f 90 pop r7 55a: 6f 90 pop r6 55c: 5f 90 pop r5 55e: 4f 90 pop r4 560: 3f 90 pop r3 562: 2f 90 pop r2 564: 08 95 ret 00000566 <__vector_24>: serial_tx(2, (uint8_t*)"\r\n"); } 566: 1f 92 push r1 568: 0f 92 push r0 56a: 0f b6 in r0, 0x3f ; 63 56c: 0f 92 push r0 56e: 11 24 eor r1, r1 570: ef 92 push r14 572: ff 92 push r15 574: 0f 93 push r16 576: 1f 93 push r17 578: 2f 93 push r18 57a: 3f 93 push r19 57c: 4f 93 push r20 57e: 5f 93 push r21 580: 6f 93 push r22 582: 7f 93 push r23 584: 8f 93 push r24 586: 9f 93 push r25 588: af 93 push r26 58a: bf 93 push r27 58c: ef 93 push r30 58e: ff 93 push r31 590: 40 91 7c 00 lds r20, 0x007C 594: 4f 70 andi r20, 0x0F ; 15 596: 20 91 26 03 lds r18, 0x0326 59a: 30 91 27 03 lds r19, 0x0327 59e: 80 91 78 00 lds r24, 0x0078 5a2: 90 91 79 00 lds r25, 0x0079 5a6: 82 0f add r24, r18 5a8: 93 1f adc r25, r19 5aa: 90 93 27 03 sts 0x0327, r25 5ae: 80 93 26 03 sts 0x0326, r24 5b2: 80 91 28 03 lds r24, 0x0328 5b6: 8f 5f subi r24, 0xFF ; 255 5b8: 80 93 28 03 sts 0x0328, r24 5bc: 80 91 28 03 lds r24, 0x0328 5c0: 80 34 cpi r24, 0x40 ; 64 5c2: 49 f5 brne .+82 ; 0x616 <__vector_24+0xb0> 5c4: 47 30 cpi r20, 0x07 ; 7 5c6: 20 f0 brcs .+8 ; 0x5d0 <__vector_24+0x6a> 5c8: 80 91 7c 00 lds r24, 0x007C 5cc: 80 7f andi r24, 0xF0 ; 240 5ce: 0a c0 rjmp .+20 ; 0x5e4 <__vector_24+0x7e> 5d0: 80 91 7c 00 lds r24, 0x007C 5d4: 80 7f andi r24, 0xF0 ; 240 5d6: 80 93 7c 00 sts 0x007C, r24 5da: 90 91 7c 00 lds r25, 0x007C 5de: 84 2f mov r24, r20 5e0: 8f 5f subi r24, 0xFF ; 255 5e2: 89 2b or r24, r25 5e4: 80 93 7c 00 sts 0x007C, r24 5e8: a4 2f mov r26, r20 5ea: b0 e0 ldi r27, 0x00 ; 0 5ec: 80 91 26 03 lds r24, 0x0326 5f0: 90 91 27 03 lds r25, 0x0327 5f4: fd 01 movw r30, r26 5f6: ee 0f add r30, r30 5f8: ff 1f adc r31, r31 5fa: ea 5e subi r30, 0xEA ; 234 5fc: fc 4f sbci r31, 0xFC ; 252 5fe: 91 83 std Z+1, r25 ; 0x01 600: 80 83 st Z, r24 602: a7 5d subi r26, 0xD7 ; 215 604: bc 4f sbci r27, 0xFC ; 252 606: 80 e4 ldi r24, 0x40 ; 64 608: 8c 93 st X, r24 60a: 10 92 28 03 sts 0x0328, r1 60e: 10 92 27 03 sts 0x0327, r1 612: 10 92 26 03 sts 0x0326, r1 616: 80 91 7a 00 lds r24, 0x007A 61a: 80 64 ori r24, 0x40 ; 64 61c: 80 93 7a 00 sts 0x007A, r24 620: 43 30 cpi r20, 0x03 ; 3 622: 09 f4 brne .+2 ; 0x626 <__vector_24+0xc0> 624: 98 c0 rjmp .+304 ; 0x756 <__vector_24+0x1f0> 626: 44 30 cpi r20, 0x04 ; 4 628: 38 f4 brcc .+14 ; 0x638 <__vector_24+0xd2> 62a: 41 30 cpi r20, 0x01 ; 1 62c: 09 f4 brne .+2 ; 0x630 <__vector_24+0xca> 62e: 46 c0 rjmp .+140 ; 0x6bc <__vector_24+0x156> 630: 42 30 cpi r20, 0x02 ; 2 632: 08 f0 brcs .+2 ; 0x636 <__vector_24+0xd0> 634: 78 c0 rjmp .+240 ; 0x726 <__vector_24+0x1c0> 636: 0d c0 rjmp .+26 ; 0x652 <__vector_24+0xec> 638: 45 30 cpi r20, 0x05 ; 5 63a: 09 f4 brne .+2 ; 0x63e <__vector_24+0xd8> 63c: c6 c0 rjmp .+396 ; 0x7ca <__vector_24+0x264> 63e: 45 30 cpi r20, 0x05 ; 5 640: 08 f4 brcc .+2 ; 0x644 <__vector_24+0xde> 642: 9f c0 rjmp .+318 ; 0x782 <__vector_24+0x21c> 644: 46 30 cpi r20, 0x06 ; 6 646: 09 f4 brne .+2 ; 0x64a <__vector_24+0xe4> 648: e4 c0 rjmp .+456 ; 0x812 <__vector_24+0x2ac> 64a: 47 30 cpi r20, 0x07 ; 7 64c: 09 f0 breq .+2 ; 0x650 <__vector_24+0xea> 64e: 3d c1 rjmp .+634 ; 0x8ca <__vector_24+0x364> 650: 05 c1 rjmp .+522 ; 0x85c <__vector_24+0x2f6> 652: 60 91 16 03 lds r22, 0x0316 656: 70 91 17 03 lds r23, 0x0317 serial_tx_P(3, (uint8_t*)PSTR("]: ")); for(i = 0; i 662: 7b 01 movw r14, r22 664: 8c 01 movw r16, r24 } 666: 60 91 00 03 lds r22, 0x0300 66a: 70 91 01 03 lds r23, 0x0301 66e: 80 e0 ldi r24, 0x00 ; 0 670: 90 e0 ldi r25, 0x00 ; 0 672: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 676: 9b 01 movw r18, r22 678: ac 01 movw r20, r24 67a: c8 01 movw r24, r16 67c: b7 01 movw r22, r14 67e: 0e 94 57 18 call 0x30ae ; 0x30ae <__subsf3> 682: 7b 01 movw r14, r22 684: 8c 01 movw r16, r24 serial_tx(2, (uint8_t*)"\r\n"); } 686: 60 91 06 03 lds r22, 0x0306 68a: 70 91 07 03 lds r23, 0x0307 68e: 80 e0 ldi r24, 0x00 ; 0 690: 90 e0 ldi r25, 0x00 ; 0 692: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 696: 9b 01 movw r18, r22 698: ac 01 movw r20, r24 69a: c8 01 movw r24, r16 69c: b7 01 movw r22, r14 69e: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 6a2: 20 e0 ldi r18, 0x00 ; 0 6a4: 30 e0 ldi r19, 0x00 ; 0 6a6: 4a e7 ldi r20, 0x7A ; 122 6a8: 54 e4 ldi r21, 0x44 ; 68 6aa: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 6ae: 0e 94 24 19 call 0x3248 ; 0x3248 <__fixsfsi> 6b2: 70 93 36 03 sts 0x0336, r23 6b6: 60 93 35 03 sts 0x0335, r22 6ba: 07 c1 rjmp .+526 ; 0x8ca <__vector_24+0x364> 6bc: 60 91 18 03 lds r22, 0x0318 6c0: 70 91 19 03 lds r23, 0x0319 serial_tx_P(3, (uint8_t*)PSTR("]: ")); for(i = 0; i 6cc: 7b 01 movw r14, r22 6ce: 8c 01 movw r16, r24 } 6d0: 60 91 04 03 lds r22, 0x0304 6d4: 70 91 05 03 lds r23, 0x0305 6d8: 80 e0 ldi r24, 0x00 ; 0 6da: 90 e0 ldi r25, 0x00 ; 0 6dc: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 6e0: 9b 01 movw r18, r22 6e2: ac 01 movw r20, r24 6e4: c8 01 movw r24, r16 6e6: b7 01 movw r22, r14 6e8: 0e 94 57 18 call 0x30ae ; 0x30ae <__subsf3> 6ec: 7b 01 movw r14, r22 6ee: 8c 01 movw r16, r24 serial_tx(2, (uint8_t*)"\r\n"); } 6f0: 60 91 06 03 lds r22, 0x0306 6f4: 70 91 07 03 lds r23, 0x0307 6f8: 80 e0 ldi r24, 0x00 ; 0 6fa: 90 e0 ldi r25, 0x00 ; 0 6fc: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 700: 9b 01 movw r18, r22 702: ac 01 movw r20, r24 704: c8 01 movw r24, r16 706: b7 01 movw r22, r14 708: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 70c: 20 e0 ldi r18, 0x00 ; 0 70e: 30 e0 ldi r19, 0x00 ; 0 710: 4a e7 ldi r20, 0x7A ; 122 712: 54 e4 ldi r21, 0x44 ; 68 714: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 718: 0e 94 24 19 call 0x3248 ; 0x3248 <__fixsfsi> 71c: 70 93 38 03 sts 0x0338, r23 720: 60 93 37 03 sts 0x0337, r22 724: d2 c0 rjmp .+420 ; 0x8ca <__vector_24+0x364> 726: 80 91 1a 03 lds r24, 0x031A 72a: 90 91 1b 03 lds r25, 0x031B 72e: 81 50 subi r24, 0x01 ; 1 730: 90 47 sbci r25, 0x70 ; 112 732: 58 f0 brcs .+22 ; 0x74a <__vector_24+0x1e4> 734: 80 91 1a 03 lds r24, 0x031A 738: 90 91 1b 03 lds r25, 0x031B 73c: 80 50 subi r24, 0x00 ; 0 73e: 90 49 sbci r25, 0x90 ; 144 740: 20 f4 brcc .+8 ; 0x74a <__vector_24+0x1e4> 742: 80 91 3d 03 lds r24, 0x033D 746: 8d 7f andi r24, 0xFD ; 253 748: 03 c0 rjmp .+6 ; 0x750 <__vector_24+0x1ea> 74a: 80 91 3d 03 lds r24, 0x033D 74e: 82 60 ori r24, 0x02 ; 2 750: 80 93 3d 03 sts 0x033D, r24 754: ba c0 rjmp .+372 ; 0x8ca <__vector_24+0x364> 756: 80 91 1c 03 lds r24, 0x031C 75a: 90 91 1d 03 lds r25, 0x031D 75e: 81 50 subi r24, 0x01 ; 1 760: 90 47 sbci r25, 0x70 ; 112 762: 58 f0 brcs .+22 ; 0x77a <__vector_24+0x214> 764: 80 91 1c 03 lds r24, 0x031C 768: 90 91 1d 03 lds r25, 0x031D 76c: 80 50 subi r24, 0x00 ; 0 76e: 90 49 sbci r25, 0x90 ; 144 770: 20 f4 brcc .+8 ; 0x77a <__vector_24+0x214> 772: 80 91 3d 03 lds r24, 0x033D 776: 8e 7f andi r24, 0xFE ; 254 778: eb cf rjmp .-42 ; 0x750 <__vector_24+0x1ea> 77a: 80 91 3d 03 lds r24, 0x033D 77e: 81 60 ori r24, 0x01 ; 1 780: e7 cf rjmp .-50 ; 0x750 <__vector_24+0x1ea> 782: 80 91 1e 03 lds r24, 0x031E 786: 90 91 1f 03 lds r25, 0x031F 78a: 81 50 subi r24, 0x01 ; 1 78c: 91 47 sbci r25, 0x71 ; 113 78e: 38 f4 brcc .+14 ; 0x79e <__vector_24+0x238> 790: 80 91 1e 03 lds r24, 0x031E 794: 90 91 1f 03 lds r25, 0x031F 798: 80 50 subi r24, 0x00 ; 0 79a: 91 41 sbci r25, 0x11 ; 17 79c: 18 f4 brcc .+6 ; 0x7a4 <__vector_24+0x23e> 79e: 82 e0 ldi r24, 0x02 ; 2 7a0: 90 e8 ldi r25, 0x80 ; 128 7a2: 0e c0 rjmp .+28 ; 0x7c0 <__vector_24+0x25a> 7a4: 80 91 1e 03 lds r24, 0x031E 7a8: 90 91 1f 03 lds r25, 0x031F 7ac: 60 91 0c 03 lds r22, 0x030C 7b0: 70 91 0d 03 lds r23, 0x030D 7b4: 40 91 0e 03 lds r20, 0x030E 7b8: 50 91 0f 03 lds r21, 0x030F 7bc: 0e 94 29 02 call 0x452 ; 0x452 7c0: 90 93 3c 03 sts 0x033C, r25 7c4: 80 93 3b 03 sts 0x033B, r24 7c8: 80 c0 rjmp .+256 ; 0x8ca <__vector_24+0x364> 7ca: 80 91 20 03 lds r24, 0x0320 7ce: 90 91 21 03 lds r25, 0x0321 7d2: 81 50 subi r24, 0x01 ; 1 7d4: 91 47 sbci r25, 0x71 ; 113 7d6: 38 f4 brcc .+14 ; 0x7e6 <__vector_24+0x280> 7d8: 80 91 20 03 lds r24, 0x0320 7dc: 90 91 21 03 lds r25, 0x0321 7e0: 80 50 subi r24, 0x00 ; 0 7e2: 91 41 sbci r25, 0x11 ; 17 7e4: 18 f4 brcc .+6 ; 0x7ec <__vector_24+0x286> 7e6: 82 e0 ldi r24, 0x02 ; 2 7e8: 90 e8 ldi r25, 0x80 ; 128 7ea: 0e c0 rjmp .+28 ; 0x808 <__vector_24+0x2a2> 7ec: 80 91 20 03 lds r24, 0x0320 7f0: 90 91 21 03 lds r25, 0x0321 7f4: 60 91 08 03 lds r22, 0x0308 7f8: 70 91 09 03 lds r23, 0x0309 7fc: 40 91 0a 03 lds r20, 0x030A 800: 50 91 0b 03 lds r21, 0x030B 804: 0e 94 29 02 call 0x452 ; 0x452 808: 90 93 3a 03 sts 0x033A, r25 80c: 80 93 39 03 sts 0x0339, r24 810: 5c c0 rjmp .+184 ; 0x8ca <__vector_24+0x364> 812: 60 91 22 03 lds r22, 0x0322 816: 70 91 23 03 lds r23, 0x0323 81a: 80 e0 ldi r24, 0x00 ; 0 81c: 90 e0 ldi r25, 0x00 ; 0 81e: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 822: 7b 01 movw r14, r22 824: 8c 01 movw r16, r24 826: 60 91 fa 02 lds r22, 0x02FA 82a: 70 91 fb 02 lds r23, 0x02FB 82e: 80 e0 ldi r24, 0x00 ; 0 830: 90 e0 ldi r25, 0x00 ; 0 832: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 836: 9b 01 movw r18, r22 838: ac 01 movw r20, r24 83a: c8 01 movw r24, r16 83c: b7 01 movw r22, r14 83e: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 842: 20 e0 ldi r18, 0x00 ; 0 844: 30 e8 ldi r19, 0x80 ; 128 846: 4b e3 ldi r20, 0x3B ; 59 848: 56 e4 ldi r21, 0x46 ; 70 84a: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 84e: 0e 94 29 19 call 0x3252 ; 0x3252 <__fixunssfsi> 852: 70 93 32 03 sts 0x0332, r23 856: 60 93 31 03 sts 0x0331, r22 85a: 37 c0 rjmp .+110 ; 0x8ca <__vector_24+0x364> 85c: 60 91 24 03 lds r22, 0x0324 860: 70 91 25 03 lds r23, 0x0325 serial_tx_P(3, (uint8_t*)PSTR("]: ")); for(i = 0; i 86c: 7b 01 movw r14, r22 86e: 8c 01 movw r16, r24 } 870: 60 91 fc 02 lds r22, 0x02FC 874: 70 91 fd 02 lds r23, 0x02FD 878: 80 e0 ldi r24, 0x00 ; 0 87a: 90 e0 ldi r25, 0x00 ; 0 87c: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 880: 9b 01 movw r18, r22 882: ac 01 movw r20, r24 884: c8 01 movw r24, r16 886: b7 01 movw r22, r14 888: 0e 94 57 18 call 0x30ae ; 0x30ae <__subsf3> 88c: 7b 01 movw r14, r22 88e: 8c 01 movw r16, r24 890: 60 91 fe 02 lds r22, 0x02FE 894: 70 91 ff 02 lds r23, 0x02FF 898: 80 e0 ldi r24, 0x00 ; 0 89a: 90 e0 ldi r25, 0x00 ; 0 89c: 0e 94 55 19 call 0x32aa ; 0x32aa <__floatunsisf> 8a0: 9b 01 movw r18, r22 8a2: ac 01 movw r20, r24 8a4: c8 01 movw r24, r16 8a6: b7 01 movw r22, r14 8a8: 0e 94 bc 18 call 0x3178 ; 0x3178 <__divsf3> 8ac: 20 e0 ldi r18, 0x00 ; 0 8ae: 30 e0 ldi r19, 0x00 ; 0 8b0: 4a e7 ldi r20, 0x7A ; 122 8b2: 54 e4 ldi r21, 0x44 ; 68 8b4: 0e 94 28 1a call 0x3450 ; 0x3450 <__mulsf3> 8b8: 0e 94 24 19 call 0x3248 ; 0x3248 <__fixsfsi> 8bc: 70 95 com r23 8be: 61 95 neg r22 8c0: 7f 4f sbci r23, 0xFF ; 255 8c2: 70 93 34 03 sts 0x0334, r23 8c6: 60 93 33 03 sts 0x0333, r22 8ca: ff 91 pop r31 8cc: ef 91 pop r30 8ce: bf 91 pop r27 8d0: af 91 pop r26 8d2: 9f 91 pop r25 8d4: 8f 91 pop r24 8d6: 7f 91 pop r23 8d8: 6f 91 pop r22 8da: 5f 91 pop r21 8dc: 4f 91 pop r20 8de: 3f 91 pop r19 8e0: 2f 91 pop r18 8e2: 1f 91 pop r17 8e4: 0f 91 pop r16 8e6: ff 90 pop r15 8e8: ef 90 pop r14 8ea: 0f 90 pop r0 8ec: 0f be out 0x3f, r0 ; 63 8ee: 0f 90 pop r0 8f0: 1f 90 pop r1 8f2: 18 95 reti 000008f4 : if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; } } 8f4: 85 b1 in r24, 0x05 ; 5 8f6: 80 7f andi r24, 0xF0 ; 240 8f8: 85 b9 out 0x05, r24 ; 5 8fa: 84 b1 in r24, 0x04 ; 4 8fc: 80 7f andi r24, 0xF0 ; 240 8fe: 84 b9 out 0x04, r24 ; 4 void word_to_hex(uint16_t word, uint8_t *out) { byte_to_hex(word >> 8, out); byte_to_hex(word & 0xff, out+2); 900: 5f 9a sbi 0x0b, 7 ; 11 902: 80 e0 ldi r24, 0x00 ; 0 can be achieved. */ void _delay_loop_1(uint8_t __count) { __asm__ volatile ( 904: 2d ef ldi r18, 0xFD ; 253 906: 92 2f mov r25, r18 908: 9a 95 dec r25 90a: f1 f7 brne .-4 ; 0x908 <__stack+0x9> 90c: 8f 5f subi r24, 0xFF ; 255 90e: 8a 30 cpi r24, 0x0A ; 10 910: d1 f7 brne .-12 ; 0x906 <__stack+0x7> { if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 912: 2c 9a sbi 0x05, 4 ; 5 914: 26 e0 ldi r18, 0x06 ; 6 916: 82 2f mov r24, r18 918: 8a 95 dec r24 91a: f1 f7 brne .-4 ; 0x918 <__stack+0x19> 91c: 85 b1 in r24, 0x05 ; 5 if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 91e: 2c 98 cbi 0x05, 4 ; 5 920: 92 2f mov r25, r18 922: 9a 95 dec r25 924: f1 f7 brne .-4 ; 0x922 <__stack+0x23> { if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 926: 2c 9a sbi 0x05, 4 ; 5 928: 92 2f mov r25, r18 92a: 9a 95 dec r25 92c: f1 f7 brne .-4 ; 0x92a <__stack+0x2b> 92e: 95 b1 in r25, 0x05 ; 5 930: 80 7f andi r24, 0xF0 ; 240 932: 9f 70 andi r25, 0x0F ; 15 934: 89 2b or r24, r25 if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 936: 2c 98 cbi 0x05, 4 ; 5 938: 92 2f mov r25, r18 93a: 9a 95 dec r25 93c: f1 f7 brne .-4 ; 0x93a <__stack+0x3b> } } void word_to_hex(uint16_t word, uint8_t *out) { byte_to_hex(word >> 8, out); 93e: 5f 98 cbi 0x0b, 7 ; 11 940: 2a 95 dec r18 942: f1 f7 brne .-4 ; 0x940 <__stack+0x41> if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; } } 944: 95 b1 in r25, 0x05 ; 5 946: 90 7f andi r25, 0xF0 ; 240 948: 95 b9 out 0x05, r25 ; 5 void word_to_hex(uint16_t word, uint8_t *out) 94a: 94 b1 in r25, 0x04 ; 4 94c: 9f 60 ori r25, 0x0F ; 15 94e: 94 b9 out 0x04, r25 ; 4 950: 08 95 ret 00000952 : out[1] = (byte & 0x0f) + BTH_L_BASE; } if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { 952: 5e 98 cbi 0x0b, 6 ; 11 uint8_t hex_to_nibble(uint8_t b) { if(b < 0x3a) return b - 0x30; else if(b < 0x47) return b - (0x41 - 0x0a); else if(b < 0x67) return b - (0x61 - 0x0a); 954: 0e 94 7a 04 call 0x8f4 ; 0x8f4 958: 87 fd sbrc r24, 7 95a: fc cf rjmp .-8 ; 0x954 else return 0; 95c: 0e 94 7a 04 call 0x8f4 ; 0x8f4 } 960: 08 95 ret 00000962 : for(i = 0; i } if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; 96a: 5e 9a sbi 0x0b, 6 ; 11 } } void word_to_hex(uint16_t word, uint8_t *out) { byte_to_hex(word >> 8, out); 96c: 5f 98 cbi 0x0b, 7 ; 11 if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; } } 96e: 85 b1 in r24, 0x05 ; 5 970: 80 7f andi r24, 0xF0 ; 240 972: 85 b9 out 0x05, r24 ; 5 uint8_t hex_to_byte(uint8_t in[2]) { if(!isxdigit(in[0]) || !isxdigit(in[1])) return 0; return hex_to_nibble(in[1]) | (hex_to_nibble(in[0]) << 4); } 974: 95 b1 in r25, 0x05 ; 5 976: 81 2f mov r24, r17 978: 82 95 swap r24 97a: 8f 70 andi r24, 0x0F ; 15 97c: 89 2b or r24, r25 97e: 85 b9 out 0x05, r24 ; 5 { if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 980: 2c 9a sbi 0x05, 4 ; 5 982: 96 e0 ldi r25, 0x06 ; 6 984: 89 2f mov r24, r25 986: 8a 95 dec r24 988: f1 f7 brne .-4 ; 0x986 98a: 2c 98 cbi 0x05, 4 ; 5 98c: 89 2f mov r24, r25 98e: 8a 95 dec r24 990: f1 f7 brne .-4 ; 0x98e if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; } } 992: 85 b1 in r24, 0x05 ; 5 994: 80 7f andi r24, 0xF0 ; 240 996: 85 b9 out 0x05, r24 ; 5 } void serial_dump_bytes(uint8_t len, const uint8_t *p) { uint8_t i; uint8_t tmp[2]; 998: 85 b1 in r24, 0x05 ; 5 99a: 1f 70 andi r17, 0x0F ; 15 99c: 81 2b or r24, r17 99e: 85 b9 out 0x05, r24 ; 5 { if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 9a0: 2c 9a sbi 0x05, 4 ; 5 9a2: 89 2f mov r24, r25 9a4: 8a 95 dec r24 9a6: f1 f7 brne .-4 ; 0x9a4 9a8: 2c 98 cbi 0x05, 4 ; 5 9aa: 9a 95 dec r25 9ac: f1 f7 brne .-4 ; 0x9aa } serial_tx(2, (uint8_t*)"\r\n"); } 9ae: 1f 91 pop r17 9b0: 08 95 ret 000009b2 : uint8_t tmp[2]; serial_tx_P(5, (uint8_t*)PSTR("Dump[")); i = len + '0'; serial_tx(1, &i); serial_tx_P(3, (uint8_t*)PSTR("]: ")); 9b2: 1f 93 push r17 9b4: 18 2f mov r17, r24 9b6: 0e 94 a9 04 call 0x952 ; 0x952 out[1] = (byte & 0x0f) + BTH_L_BASE; } if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { 9ba: 5e 98 cbi 0x0b, 6 ; 11 } } void word_to_hex(uint16_t word, uint8_t *out) { byte_to_hex(word >> 8, out); 9bc: 5f 98 cbi 0x0b, 7 ; 11 if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; } } 9be: 85 b1 in r24, 0x05 ; 5 9c0: 80 7f andi r24, 0xF0 ; 240 9c2: 85 b9 out 0x05, r24 ; 5 uint8_t hex_to_byte(uint8_t in[2]) { if(!isxdigit(in[0]) || !isxdigit(in[1])) return 0; return hex_to_nibble(in[1]) | (hex_to_nibble(in[0]) << 4); } 9c4: 95 b1 in r25, 0x05 ; 5 9c6: 81 2f mov r24, r17 9c8: 82 95 swap r24 9ca: 8f 70 andi r24, 0x0F ; 15 9cc: 89 2b or r24, r25 9ce: 85 b9 out 0x05, r24 ; 5 { if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 9d0: 2c 9a sbi 0x05, 4 ; 5 9d2: 96 e0 ldi r25, 0x06 ; 6 9d4: 89 2f mov r24, r25 9d6: 8a 95 dec r24 9d8: f1 f7 brne .-4 ; 0x9d6 9da: 2c 98 cbi 0x05, 4 ; 5 9dc: 89 2f mov r24, r25 9de: 8a 95 dec r24 9e0: f1 f7 brne .-4 ; 0x9de if((byte>>4) < 0x0a) { out[0] = (byte>>4) + 0x30; } else { out[0] = (byte>>4) + BTH_L_BASE; } } 9e2: 85 b1 in r24, 0x05 ; 5 9e4: 80 7f andi r24, 0xF0 ; 240 9e6: 85 b9 out 0x05, r24 ; 5 } void serial_dump_bytes(uint8_t len, const uint8_t *p) { uint8_t i; uint8_t tmp[2]; 9e8: 85 b1 in r24, 0x05 ; 5 9ea: 1f 70 andi r17, 0x0F ; 15 9ec: 81 2b or r24, r17 9ee: 85 b9 out 0x05, r24 ; 5 { if((byte & 0x0f) < 0x0a) { out[1] = (byte & 0x0f) + 0x30; } else { out[1] = (byte & 0x0f) + BTH_L_BASE; } 9f0: 2c 9a sbi 0x05, 4 ; 5 9f2: 89 2f mov r24, r25 9f4: 8a 95 dec r24 9f6: f1 f7 brne .-4 ; 0x9f4 9f8: 2c 98 cbi 0x05, 4 ; 5 9fa: 9a 95 dec r25 9fc: f1 f7 brne .-4 ; 0x9fa serial_tx(1, &i); serial_tx_P(3, (uint8_t*)PSTR("]: ")); for(i = 0; i: if(serial_echo_on) serial_tx_c_irq(c); } void serial_tx(uint8_t l, const uint8_t *data) { a02: 28 2f mov r18, r24 a04: db 01 movw r26, r22 void get_device_lock(uint8_t which) { uint8_t acquired = 0; do { cli(); a06: f8 94 cli if((device_locks & which) == 0) { a08: 80 91 f0 02 lds r24, 0x02F0 a0c: 80 ff sbrs r24, 0 a0e: 02 c0 rjmp .+4 ; 0xa14 a10: 80 e0 ldi r24, 0x00 ; 0 a12: 06 c0 rjmp .+12 ; 0xa20 device_locks |= which; a14: 80 91 f0 02 lds r24, 0x02F0 a18: 81 60 ori r24, 0x01 ; 1 a1a: 80 93 f0 02 sts 0x02F0, r24 a1e: 81 e0 ldi r24, 0x01 ; 1 acquired = 1; } sei(); a20: 78 94 sei } while(acquired == 0); a22: 88 23 and r24, r24 a24: 81 f3 breq .-32 ; 0xa06 a26: 1e c0 rjmp .+60 ; 0xa64 a28: f8 94 cli a2a: 0c c0 rjmp .+24 ; 0xa44 a2c: 80 91 f1 02 lds r24, 0x02F1 a30: e8 2f mov r30, r24 a32: f0 e0 ldi r31, 0x00 ; 0 a34: 9d 91 ld r25, X+ a36: e0 57 subi r30, 0x70 ; 112 a38: fc 4f sbci r31, 0xFC ; 252 a3a: 90 83 st Z, r25 a3c: 8f 5f subi r24, 0xFF ; 255 a3e: 80 93 f1 02 sts 0x02F1, r24 a42: 21 50 subi r18, 0x01 ; 1 a44: 80 91 f1 02 lds r24, 0x02F1 a48: 80 32 cpi r24, 0x20 ; 32 a4a: 10 f4 brcc .+4 ; 0xa50 a4c: 22 23 and r18, r18 a4e: 71 f7 brne .-36 ; 0xa2c a50: 80 91 c1 00 lds r24, 0x00C1 a54: 80 62 ori r24, 0x20 ; 32 a56: 80 93 c1 00 sts 0x00C1, r24 a5a: 78 94 sei a5c: 80 91 f1 02 lds r24, 0x02F1 a60: 80 32 cpi r24, 0x20 ; 32 a62: e1 f3 breq .-8 ; 0xa5c a64: 22 23 and r18, r18 a66: 01 f7 brne .-64 ; 0xa28 } while(acquired == 0); } void release_device_lock(uint8_t which) { cli(); a68: f8 94 cli device_locks &= (unsigned char)~(which); a6a: 80 91 f0 02 lds r24, 0x02F0 a6e: 8e 7f andi r24, 0xFE ; 254 a70: 80 93 f0 02 sts 0x02F0, r24 sei(); a74: 78 94 sei a76: 08 95 ret 00000a78 : #include #include #include #include #include #include a78: df 92 push r13 a7a: ef 92 push r14 a7c: ff 92 push r15 a7e: 0f 93 push r16 a80: 1f 93 push r17 a82: df 93 push r29 a84: cf 93 push r28 a86: 00 d0 rcall .+0 ; 0xa88 a88: cd b7 in r28, 0x3d ; 61 a8a: de b7 in r29, 0x3e ; 62 a8c: f8 2e mov r15, r24 a8e: e9 2e mov r14, r25 #include #include a90: a8 2f mov r26, r24 a92: b9 2f mov r27, r25 a94: fd 01 movw r30, r26 a96: 01 90 ld r0, Z+ a98: 00 20 and r0, r0 a9a: e9 f7 brne .-6 ; 0xa96 a9c: 31 97 sbiw r30, 0x01 ; 1 a9e: de 2e mov r13, r30 aa0: d8 1a sub r13, r24 aa2: 28 2f mov r18, r24 aa4: 39 2f mov r19, r25 aa6: c9 01 movw r24, r18 aa8: fc 01 movw r30, r24 aaa: 2a e0 ldi r18, 0x0A ; 10 aac: 90 e0 ldi r25, 0x00 ; 0 aae: 03 c0 rjmp .+6 ; 0xab6 volatile uint8_t device_locks = 0; void get_device_lock(uint8_t which) { ab0: 81 91 ld r24, Z+ ab2: 28 27 eor r18, r24 ab4: 9f 5f subi r25, 0xFF ; 255 ab6: 9d 15 cp r25, r13 ab8: d8 f3 brcs .-10 ; 0xab0 uint8_t acquired = 0; aba: 82 2f mov r24, r18 abc: 8e 01 movw r16, r28 abe: 0f 5f subi r16, 0xFF ; 255 ac0: 1f 4f sbci r17, 0xFF ; 255 ac2: b8 01 movw r22, r16 ac4: 0e 94 8a 00 call 0x114 ; 0x114 do { cli(); ac8: 81 e0 ldi r24, 0x01 ; 1 aca: 60 e0 ldi r22, 0x00 ; 0 acc: 71 e0 ldi r23, 0x01 ; 1 ace: 0e 94 01 05 call 0xa02 ; 0xa02 if((device_locks & which) == 0) { ad2: 82 e0 ldi r24, 0x02 ; 2 ad4: 62 e0 ldi r22, 0x02 ; 2 ad6: 71 e0 ldi r23, 0x01 ; 1 ad8: 0e 94 01 05 call 0xa02 ; 0xa02 device_locks |= which; adc: 8d 2d mov r24, r13 ade: 6f 2d mov r22, r15 ae0: 7e 2d mov r23, r14 ae2: 0e 94 01 05 call 0xa02 ; 0xa02 acquired = 1; } ae6: 81 e0 ldi r24, 0x01 ; 1 ae8: 65 e0 ldi r22, 0x05 ; 5 aea: 71 e0 ldi r23, 0x01 ; 1 aec: 0e 94 01 05 call 0xa02 ; 0xa02 sei(); af0: 82 e0 ldi r24, 0x02 ; 2 af2: b8 01 movw r22, r16 af4: 0e 94 01 05 call 0xa02 ; 0xa02 } while(acquired == 0); } af8: 82 e0 ldi r24, 0x02 ; 2 afa: 67 e0 ldi r22, 0x07 ; 7 afc: 71 e0 ldi r23, 0x01 ; 1 afe: 0e 94 01 05 call 0xa02 ; 0xa02 b02: 0f 90 pop r0 b04: 0f 90 pop r0 b06: cf 91 pop r28 b08: df 91 pop r29 b0a: 1f 91 pop r17 b0c: 0f 91 pop r16 b0e: ff 90 pop r15 b10: ef 90 pop r14 b12: df 90 pop r13 b14: 08 95 ret 00000b16 : void release_device_lock(uint8_t which) { cli(); device_locks &= (unsigned char)~(which); sei(); } b16: 28 2f mov r18, r24 } uint8_t eeprom_read8(uint16_t addr) { uint8_t tmp; eeprom_read_waiting = 1; b18: 81 e0 ldi r24, 0x01 ; 1 b1a: 80 93 8f 03 sts 0x038F, r24 while(EECR & (1< EEAR = addr; b22: 8e ef ldi r24, 0xFE ; 254 b24: 93 e0 ldi r25, 0x03 ; 3 b26: 92 bd out 0x22, r25 ; 34 b28: 81 bd out 0x21, r24 ; 33 EECR |= (1< b3c: 22 23 and r18, r18 b3e: 09 f4 brne .+2 ; 0xb42 b40: 52 c0 rjmp .+164 ; 0xbe6 eeprom_buf_size--; b42: 8a e0 ldi r24, 0x0A ; 10 b44: 91 e0 ldi r25, 0x01 ; 1 b46: 0e 94 3c 05 call 0xa78 ; 0xa78 } } b4a: 86 e6 ldi r24, 0x66 ; 102 b4c: 80 93 12 03 sts 0x0312, r24 } b50: 84 e6 ldi r24, 0x64 ; 100 b52: 80 93 f9 02 sts 0x02F9, r24 void eeprom_write8(uint16_t addr, uint8_t data) b56: 89 e1 ldi r24, 0x19 ; 25 b58: 80 93 f8 02 sts 0x02F8, r24 { while(eeprom_buf_size >= EEPROM_BUF_LEN); b5c: 89 e1 ldi r24, 0x19 ; 25 b5e: 91 e6 ldi r25, 0x61 ; 97 b60: 90 93 fb 02 sts 0x02FB, r25 b64: 80 93 fa 02 sts 0x02FA, r24 cli(); b68: 8b ea ldi r24, 0xAB ; 171 b6a: 90 e8 ldi r25, 0x80 ; 128 b6c: 90 93 fd 02 sts 0x02FD, r25 b70: 80 93 fc 02 sts 0x02FC, r24 eeprom_buf[eeprom_buf_size*3 + 0] = addr >> 8; b74: 80 ee ldi r24, 0xE0 ; 224 b76: 97 e0 ldi r25, 0x07 ; 7 b78: 90 93 ff 02 sts 0x02FF, r25 b7c: 80 93 fe 02 sts 0x02FE, r24 eeprom_buf[eeprom_buf_size*3 + 1] = addr & 0xff; b80: 83 ef ldi r24, 0xF3 ; 243 b82: 96 e1 ldi r25, 0x16 ; 22 b84: 90 93 01 03 sts 0x0301, r25 b88: 80 93 00 03 sts 0x0300, r24 eeprom_buf[eeprom_buf_size*3 + 2] = data; b8c: 26 e6 ldi r18, 0x66 ; 102 b8e: 36 e6 ldi r19, 0x66 ; 102 b90: 30 93 03 03 sts 0x0303, r19 b94: 20 93 02 03 sts 0x0302, r18 eeprom_buf_size++; b98: 8a ea ldi r24, 0xAA ; 170 b9a: 9a e1 ldi r25, 0x1A ; 26 b9c: 90 93 05 03 sts 0x0305, r25 ba0: 80 93 04 03 sts 0x0304, r24 sei(); ba4: 30 93 07 03 sts 0x0307, r19 ba8: 20 93 06 03 sts 0x0306, r18 deep_sleep_block |= DEEP_SLEEP_BLOCK_EEPROM; EECR |= (1<> 8) & 0xff); bd4: 80 e3 ldi r24, 0x30 ; 48 bd6: 9a e2 ldi r25, 0x2A ; 42 bd8: 90 93 11 03 sts 0x0311, r25 bdc: 80 93 10 03 sts 0x0310, r24 eeprom_write8(addr+1, data & 0xff); } be0: 0e 94 b6 01 call 0x36c ; 0x36c be4: 08 95 ret void eeprom_write32(uint16_t addr, uint32_t data) be6: 87 e2 ldi r24, 0x27 ; 39 be8: 91 e0 ldi r25, 0x01 ; 1 bea: 0e 94 3c 05 call 0xa78 ; 0xa78 { eeprom_write8(addr+0, (data >> 24) & 0xff); eeprom_write8(addr+1, (data >> 16) & 0xff); eeprom_write8(addr+2, (data >> 8) & 0xff); bee: 84 e6 ldi r24, 0x64 ; 100 bf0: 80 93 f9 02 sts 0x02F9, r24 eeprom_write8(addr+3, (data >> 0) & 0xff); bf4: 89 e1 ldi r24, 0x19 ; 25 bf6: 80 93 f8 02 sts 0x02F8, r24 #define EEPROM_BUF_LEN 5 #define mEEP_TD(type, bits) \ type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) bfa: 82 e0 ldi r24, 0x02 ; 2 bfc: 90 e0 ldi r25, 0x00 ; 0 bfe: 0e 94 57 01 call 0x2ae ; 0x2ae c02: 90 93 fb 02 sts 0x02FB, r25 c06: 80 93 fa 02 sts 0x02FA, r24 c0a: 84 e0 ldi r24, 0x04 ; 4 c0c: 90 e0 ldi r25, 0x00 ; 0 c0e: 0e 94 57 01 call 0x2ae ; 0x2ae c12: 90 93 fd 02 sts 0x02FD, r25 c16: 80 93 fc 02 sts 0x02FC, r24 volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; c1a: 86 e0 ldi r24, 0x06 ; 6 c1c: 90 e0 ldi r25, 0x00 ; 0 c1e: 0e 94 57 01 call 0x2ae ; 0x2ae c22: 90 93 ff 02 sts 0x02FF, r25 c26: 80 93 fe 02 sts 0x02FE, r24 volatile uint8_t eeprom_buf_size; c2a: 88 e0 ldi r24, 0x08 ; 8 c2c: 90 e0 ldi r25, 0x00 ; 0 c2e: 0e 94 57 01 call 0x2ae ; 0x2ae c32: 90 93 01 03 sts 0x0301, r25 c36: 80 93 00 03 sts 0x0300, r24 volatile uint8_t eeprom_read_waiting; c3a: 8a e0 ldi r24, 0x0A ; 10 c3c: 90 e0 ldi r25, 0x00 ; 0 c3e: 0e 94 57 01 call 0x2ae ; 0x2ae c42: 90 93 03 03 sts 0x0303, r25 c46: 80 93 02 03 sts 0x0302, r24 c4a: 8c e0 ldi r24, 0x0C ; 12 c4c: 90 e0 ldi r25, 0x00 ; 0 c4e: 0e 94 57 01 call 0x2ae ; 0x2ae c52: 90 93 05 03 sts 0x0305, r25 c56: 80 93 04 03 sts 0x0304, r24 ISR(SIG_EEPROM_READY) c5a: 8e e0 ldi r24, 0x0E ; 14 c5c: 90 e0 ldi r25, 0x00 ; 0 c5e: 0e 94 57 01 call 0x2ae ; 0x2ae c62: 90 93 07 03 sts 0x0307, r25 c66: 80 93 06 03 sts 0x0306, r24 { c6a: 80 e1 ldi r24, 0x10 ; 16 c6c: 90 e0 ldi r25, 0x00 ; 0 c6e: 0e 94 57 01 call 0x2ae ; 0x2ae c72: 90 93 09 03 sts 0x0309, r25 c76: 80 93 08 03 sts 0x0308, r24 if(eeprom_read_waiting) { c7a: 82 e1 ldi r24, 0x12 ; 18 c7c: 90 e0 ldi r25, 0x00 ; 0 c7e: 0e 94 57 01 call 0x2ae ; 0x2ae c82: 90 93 0b 03 sts 0x030B, r25 c86: 80 93 0a 03 sts 0x030A, r24 EECR &= ~(1< c92: 90 93 0d 03 sts 0x030D, r25 c96: 80 93 0c 03 sts 0x030C, r24 } else { c9a: 86 e1 ldi r24, 0x16 ; 22 c9c: 90 e0 ldi r25, 0x00 ; 0 c9e: 0e 94 57 01 call 0x2ae ; 0x2ae ca2: 90 93 0f 03 sts 0x030F, r25 ca6: 80 93 0e 03 sts 0x030E, r24 if(eeprom_buf_size == 0) { caa: 88 e1 ldi r24, 0x18 ; 24 cac: 90 e0 ldi r25, 0x00 ; 0 cae: 0e 94 57 01 call 0x2ae ; 0x2ae cb2: 90 93 11 03 sts 0x0311, r25 cb6: 80 93 10 03 sts 0x0310, r24 cba: 08 95 ret 00000cbc : } } } void eeprom_write8(uint16_t addr, uint8_t data) { cbc: 0f 93 push r16 cbe: 1f 93 push r17 cc0: cf 93 push r28 cc2: df 93 push r29 cc4: ec 01 movw r28, r24 while(eeprom_buf_size >= EEPROM_BUF_LEN); cc6: 08 81 ld r16, Y cc8: 80 2f mov r24, r16 cca: 90 e0 ldi r25, 0x00 ; 0 ccc: 0e 94 24 1b call 0x3648 ; 0x3648 cd0: 89 2b or r24, r25 cd2: 59 f1 breq .+86 ; 0xd2a cd4: 19 81 ldd r17, Y+1 ; 0x01 cd6: 81 2f mov r24, r17 cd8: 90 e0 ldi r25, 0x00 ; 0 cda: 0e 94 24 1b call 0x3648 ; 0x3648 cde: 89 2b or r24, r25 ce0: 21 f1 breq .+72 ; 0xd2a EECR |= (1< ce6: 91 2f mov r25, r17 ce8: 90 53 subi r25, 0x30 ; 48 cea: 0b c0 rjmp .+22 ; 0xd02 eeprom_buf_size--; cec: 17 34 cpi r17, 0x47 ; 71 cee: 18 f4 brcc .+6 ; 0xcf6 cf0: 91 2f mov r25, r17 cf2: 97 53 subi r25, 0x37 ; 55 cf4: 06 c0 rjmp .+12 ; 0xd02 } cf6: 17 36 cpi r17, 0x67 ; 103 cf8: 10 f0 brcs .+4 ; 0xcfe cfa: 90 e0 ldi r25, 0x00 ; 0 cfc: 02 c0 rjmp .+4 ; 0xd02 cfe: 91 2f mov r25, r17 d00: 97 55 subi r25, 0x57 ; 87 EECR |= (1< d06: 80 2f mov r24, r16 d08: 80 53 subi r24, 0x30 ; 48 d0a: 0b c0 rjmp .+22 ; 0xd22 eeprom_buf_size--; d0c: 07 34 cpi r16, 0x47 ; 71 d0e: 18 f4 brcc .+6 ; 0xd16 d10: 80 2f mov r24, r16 d12: 87 53 subi r24, 0x37 ; 55 d14: 06 c0 rjmp .+12 ; 0xd22 } d16: 07 36 cpi r16, 0x67 ; 103 d18: 10 f0 brcs .+4 ; 0xd1e d1a: 80 e0 ldi r24, 0x00 ; 0 d1c: 02 c0 rjmp .+4 ; 0xd22 d1e: 80 2f mov r24, r16 d20: 87 55 subi r24, 0x57 ; 87 } void eeprom_write8(uint16_t addr, uint8_t data) { while(eeprom_buf_size >= EEPROM_BUF_LEN); cli(); d22: 82 95 swap r24 d24: 80 7f andi r24, 0xF0 ; 240 d26: 89 2b or r24, r25 d28: 01 c0 rjmp .+2 ; 0xd2c d2a: 80 e0 ldi r24, 0x00 ; 0 eeprom_buf[eeprom_buf_size*3 + 0] = addr >> 8; d2c: df 91 pop r29 d2e: cf 91 pop r28 d30: 1f 91 pop r17 d32: 0f 91 pop r16 d34: 08 95 ret 00000d36
: } void eeprom_write8(uint16_t addr, uint8_t data) { while(eeprom_buf_size >= EEPROM_BUF_LEN); cli(); d36: 2f 92 push r2 d38: 3f 92 push r3 d3a: 4f 92 push r4 d3c: 5f 92 push r5 d3e: 6f 92 push r6 d40: 7f 92 push r7 d42: 8f 92 push r8 d44: 9f 92 push r9 d46: af 92 push r10 d48: bf 92 push r11 d4a: cf 92 push r12 d4c: df 92 push r13 d4e: ef 92 push r14 d50: ff 92 push r15 d52: 0f 93 push r16 d54: 1f 93 push r17 d56: df 93 push r29 d58: cf 93 push r28 d5a: cd b7 in r28, 0x3d ; 61 d5c: de b7 in r29, 0x3e ; 62 d5e: c9 5a subi r28, 0xA9 ; 169 d60: d0 40 sbci r29, 0x00 ; 0 d62: 0f b6 in r0, 0x3f ; 63 d64: f8 94 cli d66: de bf out 0x3e, r29 ; 62 d68: 0f be out 0x3f, r0 ; 63 d6a: cd bf out 0x3d, r28 ; 61 eeprom_buf[eeprom_buf_size*3 + 0] = addr >> 8; d6c: 15 b8 out 0x05, r1 ; 5 eeprom_buf[eeprom_buf_size*3 + 1] = addr & 0xff; d6e: 83 e0 ldi r24, 0x03 ; 3 d70: 88 b9 out 0x08, r24 ; 8 eeprom_buf[eeprom_buf_size*3 + 2] = data; d72: 1b b8 out 0x0b, r1 ; 11 eeprom_buf_size++; d74: 8f e1 ldi r24, 0x1F ; 31 d76: 84 b9 out 0x04, r24 ; 4 sei(); d78: 8c e3 ldi r24, 0x3C ; 60 d7a: 87 b9 out 0x07, r24 ; 7 deep_sleep_block |= DEEP_SLEEP_BLOCK_EEPROM; d7c: 8a ef ldi r24, 0xFA ; 250 d7e: 8a b9 out 0x0a, r24 ; 10 EECR |= (1< dec: 28 ea ldi r18, 0xA8 ; 168 dee: 31 e6 ldi r19, 0x61 ; 97 df0: c9 01 movw r24, r18 df2: 01 97 sbiw r24, 0x01 ; 1 df4: f1 f7 brne .-4 ; 0xdf2 void eeprom_wait_until_clear_queue(void) { while(eeprom_buf_size); } //mEEP_TD(uint8_t, 8); df6: 85 b1 in r24, 0x05 ; 5 df8: 83 60 ori r24, 0x03 ; 3 dfa: 85 b9 out 0x05, r24 ; 5 volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { dfc: 2c 9a sbi 0x05, 4 ; 5 can be achieved. */ void _delay_loop_1(uint8_t __count) { __asm__ volatile ( dfe: 86 e0 ldi r24, 0x06 ; 6 e00: 98 2f mov r25, r24 e02: 9a 95 dec r25 e04: f1 f7 brne .-4 ; 0xe02 if(eeprom_read_waiting) { e06: 2c 98 cbi 0x05, 4 ; 5 e08: 98 2f mov r25, r24 e0a: 9a 95 dec r25 e0c: f1 f7 brne .-4 ; 0xe0a milliseconds can be achieved. */ void _delay_loop_2(uint16_t __count) { __asm__ volatile ( e0e: f9 01 movw r30, r18 e10: 31 97 sbiw r30, 0x01 ; 1 e12: f1 f7 brne .-4 ; 0xe10 volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { e14: 2c 9a sbi 0x05, 4 ; 5 can be achieved. */ void _delay_loop_1(uint8_t __count) { __asm__ volatile ( e16: 98 2f mov r25, r24 e18: 9a 95 dec r25 e1a: f1 f7 brne .-4 ; 0xe18 if(eeprom_read_waiting) { e1c: 2c 98 cbi 0x05, 4 ; 5 e1e: 98 2f mov r25, r24 e20: 9a 95 dec r25 e22: f1 f7 brne .-4 ; 0xe20 milliseconds can be achieved. */ void _delay_loop_2(uint16_t __count) { __asm__ volatile ( e24: e8 e8 ldi r30, 0x88 ; 136 e26: f3 e1 ldi r31, 0x13 ; 19 e28: 31 97 sbiw r30, 0x01 ; 1 e2a: f1 f7 brne .-4 ; 0xe28 volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { e2c: 2c 9a sbi 0x05, 4 ; 5 can be achieved. */ void _delay_loop_1(uint8_t __count) { __asm__ volatile ( e2e: 98 2f mov r25, r24 e30: 9a 95 dec r25 e32: f1 f7 brne .-4 ; 0xe30 if(eeprom_read_waiting) { e34: 2c 98 cbi 0x05, 4 ; 5 e36: 98 2f mov r25, r24 e38: 9a 95 dec r25 e3a: f1 f7 brne .-4 ; 0xe38 milliseconds can be achieved. */ void _delay_loop_2(uint16_t __count) { __asm__ volatile ( e3c: f9 01 movw r30, r18 e3e: 31 97 sbiw r30, 0x01 ; 1 e40: f1 f7 brne .-4 ; 0xe3e //mEEP_TD(int32_t, 32); //mEEP_TD(float, 32); e42: 28 98 cbi 0x05, 0 ; 5 volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { e44: 2c 9a sbi 0x05, 4 ; 5 can be achieved. */ void _delay_loop_1(uint8_t __count) { __asm__ volatile ( e46: 98 2f mov r25, r24 e48: 9a 95 dec r25 e4a: f1 f7 brne .-4 ; 0xe48 if(eeprom_read_waiting) { e4c: 2c 98 cbi 0x05, 4 ; 5 e4e: 8a 95 dec r24 e50: f1 f7 brne .-4 ; 0xe4e e52: 88 e2 ldi r24, 0x28 ; 40 e54: 0e 94 d9 04 call 0x9b2 ; 0x9b2 e58: 8c e0 ldi r24, 0x0C ; 12 e5a: 0e 94 d9 04 call 0x9b2 ; 0x9b2 e5e: 86 e0 ldi r24, 0x06 ; 6 e60: 0e 94 d9 04 call 0x9b2 ; 0x9b2 e64: 81 e0 ldi r24, 0x01 ; 1 e66: 0e 94 d9 04 call 0x9b2 ; 0x9b2 e6a: 80 e8 ldi r24, 0x80 ; 128 e6c: 0e 94 d9 04 call 0x9b2 ; 0x9b2 e70: 80 e0 ldi r24, 0x00 ; 0 e72: 0e 94 b1 04 call 0x962 ; 0x962 return tmp; } void eeprom_init(void) { eeprom_read_waiting = 0; e76: 10 92 8f 03 sts 0x038F, r1 eeprom_buf_size = 0; e7a: 10 92 8e 03 sts 0x038E, r1 if((device_locks & which) == 0) { device_locks |= which; acquired = 1; } sei(); } while(acquired == 0); e7e: 80 e4 ldi r24, 0x40 ; 64 e80: 80 93 7c 00 sts 0x007C, r24 } e84: 8e e8 ldi r24, 0x8E ; 142 e86: 80 93 7a 00 sts 0x007A, r24 e8a: 10 92 7b 00 sts 0x007B, r1 void release_device_lock(uint8_t which) e8e: 8f ef ldi r24, 0xFF ; 255 e90: 80 93 7e 00 sts 0x007E, r24 { cli(); e94: 10 92 27 03 sts 0x0327, r1 e98: 10 92 26 03 sts 0x0326, r1 e9c: 10 92 28 03 sts 0x0328, r1 device_locks &= (unsigned char)~(which); sei(); ea0: 80 91 7a 00 lds r24, 0x007A ea4: 80 64 ori r24, 0x40 ; 64 ea6: 80 93 7a 00 sts 0x007A, r24 { eeprom_write8(addr+0, (data >> 24) & 0xff); eeprom_write8(addr+1, (data >> 16) & 0xff); eeprom_write8(addr+2, (data >> 8) & 0xff); eeprom_write8(addr+3, (data >> 0) & 0xff); } eaa: 78 94 sei acquired = 1; } sei(); } while(acquired == 0); } eac: 10 92 3e 03 sts 0x033E, r1 void release_device_lock(uint8_t which) eb0: 8f ef ldi r24, 0xFF ; 255 eb2: 9f ef ldi r25, 0xFF ; 255 eb4: af ef ldi r26, 0xFF ; 255 eb6: bf ef ldi r27, 0xFF ; 255 eb8: 80 93 60 03 sts 0x0360, r24 ebc: 90 93 61 03 sts 0x0361, r25 ec0: a0 93 62 03 sts 0x0362, r26 ec4: b0 93 63 03 sts 0x0363, r27 { ec8: 10 92 57 03 sts 0x0357, r1 ecc: 10 92 58 03 sts 0x0358, r1 ed0: 10 92 59 03 sts 0x0359, r1 ed4: 10 92 5a 03 sts 0x035A, r1 cli(); ed8: 89 e0 ldi r24, 0x09 ; 9 eda: 80 93 64 03 sts 0x0364, r24 uint8_t eeprom_read8(uint16_t addr) { uint8_t tmp; ede: 83 e4 ldi r24, 0x43 ; 67 ee0: 91 e0 ldi r25, 0x01 ; 1 ee2: 0e 94 3c 05 call 0xa78 ; 0xa78 eeprom_read_waiting = 1; while(EECR & (1< volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { if(eeprom_read_waiting) { eec: 10 92 14 03 sts 0x0314, r1 ef0: 10 92 13 03 sts 0x0313, r1 ef4: 10 92 15 03 sts 0x0315, r1 EECR &= ~(1< EEAR = (eeprom_buf[0] << 8) | eeprom_buf[1]; EEDR = eeprom_buf[2]; EECR |= (1< uint32_t eeprom_read32(uint16_t addr) { f86: 61 60 ori r22, 0x01 ; 1 f88: 60 93 46 03 sts 0x0346, r22 uint32_t tmp; f8c: 80 91 3f 03 lds r24, 0x033F f90: 90 91 40 03 lds r25, 0x0340 f94: 90 93 4c 03 sts 0x034C, r25 f98: 80 93 4b 03 sts 0x034B, r24 tmp = (uint32_t)eeprom_read8(addr+0) << 24; f9c: 80 91 41 03 lds r24, 0x0341 fa0: 90 91 42 03 lds r25, 0x0342 fa4: 90 93 48 03 sts 0x0348, r25 fa8: 80 93 47 03 sts 0x0347, r24 tmp |= (uint32_t)eeprom_read8(addr+1) << 16; fac: 85 5c subi r24, 0xC5 ; 197 fae: 94 40 sbci r25, 0x04 ; 4 fb0: 30 f4 brcc .+12 ; 0xfbe fb2: 88 e9 ldi r24, 0x98 ; 152 fb4: 93 e0 ldi r25, 0x03 ; 3 fb6: 90 93 48 03 sts 0x0348, r25 fba: 80 93 47 03 sts 0x0347, r24 tmp |= (uint32_t)eeprom_read8(addr+2) << 8; fbe: 80 91 47 03 lds r24, 0x0347 fc2: 90 91 48 03 lds r25, 0x0348 fc6: 80 58 subi r24, 0x80 ; 128 fc8: 97 40 sbci r25, 0x07 ; 7 fca: 30 f0 brcs .+12 ; 0xfd8 fcc: 88 e4 ldi r24, 0x48 ; 72 fce: 98 e0 ldi r25, 0x08 ; 8 fd0: 90 93 48 03 sts 0x0348, r25 fd4: 80 93 47 03 sts 0x0347, r24 tmp |= (uint32_t)eeprom_read8(addr+3); fd8: 10 92 4a 03 sts 0x034A, r1 fdc: 10 92 49 03 sts 0x0349, r1 fe0: 43 c0 rjmp .+134 ; 0x1068 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; fe2: 80 91 5b 03 lds r24, 0x035B fe6: 90 91 5c 03 lds r25, 0x035C fea: a0 91 5d 03 lds r26, 0x035D fee: b0 91 5e 03 lds r27, 0x035E tmp = (uint32_t)eeprom_read8(addr+0) << 24; tmp |= (uint32_t)eeprom_read8(addr+1) << 16; tmp |= (uint32_t)eeprom_read8(addr+2) << 8; tmp |= (uint32_t)eeprom_read8(addr+3); return tmp; } ff2: 20 91 53 03 lds r18, 0x0353 ff6: 30 91 54 03 lds r19, 0x0354 ffa: 40 91 55 03 lds r20, 0x0355 ffe: 50 91 56 03 lds r21, 0x0356 1002: 82 1b sub r24, r18 1004: 93 0b sbc r25, r19 1006: a4 0b sbc r26, r20 1008: b5 0b sbc r27, r21 100a: 03 97 sbiw r24, 0x03 ; 3 100c: a1 05 cpc r26, r1 100e: b1 05 cpc r27, r1 1010: e4 f4 brge .+56 ; 0x104a 1012: 62 60 ori r22, 0x02 ; 2 1014: 60 93 46 03 sts 0x0346, r22 void eeprom_init(void) 1018: 80 91 4d 03 lds r24, 0x034D 101c: 90 91 4e 03 lds r25, 0x034E 1020: 90 93 4c 03 sts 0x034C, r25 1024: 80 93 4b 03 sts 0x034B, r24 { 1028: 80 91 4f 03 lds r24, 0x034F 102c: 90 91 50 03 lds r25, 0x0350 1030: 90 93 48 03 sts 0x0348, r25 1034: 80 93 47 03 sts 0x0347, r24 eeprom_read_waiting = 0; 1038: 80 91 51 03 lds r24, 0x0351 103c: 90 91 52 03 lds r25, 0x0352 1040: 90 93 4a 03 sts 0x034A, r25 1044: 80 93 49 03 sts 0x0349, r24 1048: 0f c0 rjmp .+30 ; 0x1068 eeprom_buf_size = 0; } 104a: 64 60 ori r22, 0x04 ; 4 104c: 60 93 46 03 sts 0x0346, r22 1050: 10 92 4c 03 sts 0x034C, r1 1054: 10 92 4b 03 sts 0x034B, r1 1058: 10 92 4a 03 sts 0x034A, r1 105c: 10 92 49 03 sts 0x0349, r1 1060: 10 92 48 03 sts 0x0348, r1 1064: 10 92 47 03 sts 0x0347, r1 eeprom_buf_size--; } } } void eeprom_write8(uint16_t addr, uint8_t data) 1068: 80 91 f0 02 lds r24, 0x02F0 void eeprom_wait_until_clear_queue(void) { while(eeprom_buf_size); } 106c: 82 fd sbrc r24, 2 106e: 20 c0 rjmp .+64 ; 0x10b0 volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { 1070: f8 94 cli if(eeprom_read_waiting) { 1072: 80 91 f0 02 lds r24, 0x02F0 1076: 82 ff sbrs r24, 2 1078: 02 c0 rjmp .+4 ; 0x107e 107a: 80 e0 ldi r24, 0x00 ; 0 107c: 06 c0 rjmp .+12 ; 0x108a EECR &= ~(1< 1090: 88 e0 ldi r24, 0x08 ; 8 1092: 80 93 12 04 sts 0x0412, r24 1096: 8d ec ldi r24, 0xCD ; 205 1098: 80 93 10 04 sts 0x0410, r24 109c: 84 e0 ldi r24, 0x04 ; 4 109e: 80 93 f5 02 sts 0x02F5, r24 10a2: 80 91 bc 00 lds r24, 0x00BC 10a6: 80 6a ori r24, 0xA0 ; 160 10a8: 80 93 bc 00 sts 0x00BC, r24 10ac: 44 24 eor r4, r4 10ae: 43 94 inc r4 //mEEP_TD(uint8_t, 8); //mEEP_TD(int8_t, 8); //mEEP_TD(uint16_t, 16); //mEEP_TD(int16_t, 16); 10b0: 80 91 15 03 lds r24, 0x0315 10b4: 80 ff sbrs r24, 0 10b6: 70 c2 rjmp .+1248 ; 0x1598 //mEEP_TD(uint32_t, 32); 10b8: 80 91 15 03 lds r24, 0x0315 10bc: 8e 7f andi r24, 0xFE ; 254 10be: 80 93 15 03 sts 0x0315, r24 10c2: 20 91 76 03 lds r18, 0x0376 10c6: 30 91 77 03 lds r19, 0x0377 10ca: 40 91 78 03 lds r20, 0x0378 10ce: 50 91 79 03 lds r21, 0x0379 10d2: 2f 3f cpi r18, 0xFF ; 255 10d4: 8f ef ldi r24, 0xFF ; 255 10d6: 38 07 cpc r19, r24 10d8: 8f ef ldi r24, 0xFF ; 255 10da: 48 07 cpc r20, r24 10dc: 8f ef ldi r24, 0xFF ; 255 10de: 58 07 cpc r21, r24 10e0: 69 f0 breq .+26 ; 0x10fc type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 10e2: 80 91 5b 03 lds r24, 0x035B 10e6: 90 91 5c 03 lds r25, 0x035C 10ea: a0 91 5d 03 lds r26, 0x035D 10ee: b0 91 5e 03 lds r27, 0x035E 10f2: 28 17 cp r18, r24 10f4: 39 07 cpc r19, r25 10f6: 4a 07 cpc r20, r26 10f8: 5b 07 cpc r21, r27 10fa: 0c f4 brge .+2 ; 0x10fe #include #include #include volatile uint8_t device_locks = 0; 10fc: 45 98 cbi 0x08, 5 ; 8 10fe: 20 91 7a 03 lds r18, 0x037A 1102: 30 91 7b 03 lds r19, 0x037B 1106: 40 91 7c 03 lds r20, 0x037C 110a: 50 91 7d 03 lds r21, 0x037D 110e: 2f 3f cpi r18, 0xFF ; 255 1110: 9f ef ldi r25, 0xFF ; 255 1112: 39 07 cpc r19, r25 1114: 9f ef ldi r25, 0xFF ; 255 1116: 49 07 cpc r20, r25 1118: 9f ef ldi r25, 0xFF ; 255 111a: 59 07 cpc r21, r25 111c: 69 f0 breq .+26 ; 0x1138 111e: 80 91 5b 03 lds r24, 0x035B 1122: 90 91 5c 03 lds r25, 0x035C 1126: a0 91 5d 03 lds r26, 0x035D 112a: b0 91 5e 03 lds r27, 0x035E 112e: 28 17 cp r18, r24 1130: 39 07 cpc r19, r25 1132: 4a 07 cpc r20, r26 1134: 5b 07 cpc r21, r27 1136: 0c f4 brge .+2 ; 0x113a #include volatile uint8_t device_locks = 0; void get_device_lock(uint8_t which) { 1138: 44 98 cbi 0x08, 4 ; 8 113a: 80 91 3e 03 lds r24, 0x033E 113e: 86 fd sbrc r24, 6 1140: b8 c0 rjmp .+368 ; 0x12b2 1142: 80 64 ori r24, 0x40 ; 64 1144: 80 93 3e 03 sts 0x033E, r24 1148: 90 e0 ldi r25, 0x00 ; 0 114a: 8f 71 andi r24, 0x1F ; 31 114c: 90 70 andi r25, 0x00 ; 0 114e: 84 30 cpi r24, 0x04 ; 4 1150: 91 05 cpc r25, r1 1152: 09 f4 brne .+2 ; 0x1156 1154: 6f c0 rjmp .+222 ; 0x1234 1156: 85 30 cpi r24, 0x05 ; 5 1158: 91 05 cpc r25, r1 115a: 84 f4 brge .+32 ; 0x117c 115c: 81 30 cpi r24, 0x01 ; 1 115e: 91 05 cpc r25, r1 1160: 31 f1 breq .+76 ; 0x11ae 1162: 82 30 cpi r24, 0x02 ; 2 1164: 91 05 cpc r25, r1 1166: 1c f4 brge .+6 ; 0x116e 1168: 89 2b or r24, r25 116a: b9 f0 breq .+46 ; 0x119a 116c: a2 c0 rjmp .+324 ; 0x12b2 116e: 82 30 cpi r24, 0x02 ; 2 1170: 91 05 cpc r25, r1 1172: 39 f1 breq .+78 ; 0x11c2 1174: 03 97 sbiw r24, 0x03 ; 3 1176: 09 f0 breq .+2 ; 0x117a 1178: 9c c0 rjmp .+312 ; 0x12b2 117a: 2d c0 rjmp .+90 ; 0x11d6 117c: 86 30 cpi r24, 0x06 ; 6 117e: 91 05 cpc r25, r1 1180: 09 f4 brne .+2 ; 0x1184 1182: 7a c0 rjmp .+244 ; 0x1278 1184: 86 30 cpi r24, 0x06 ; 6 1186: 91 05 cpc r25, r1 1188: 84 f1 brlt .+96 ; 0x11ea 118a: 87 30 cpi r24, 0x07 ; 7 118c: 91 05 cpc r25, r1 118e: 09 f4 brne .+2 ; 0x1192 1190: 7d c0 rjmp .+250 ; 0x128c 1192: 08 97 sbiw r24, 0x08 ; 8 1194: 09 f0 breq .+2 ; 0x1198 1196: 8d c0 rjmp .+282 ; 0x12b2 1198: 83 c0 rjmp .+262 ; 0x12a0 119a: a5 e6 ldi r26, 0x65 ; 101 119c: b3 e0 ldi r27, 0x03 ; 3 119e: e2 e6 ldi r30, 0x62 ; 98 11a0: f1 e0 ldi r31, 0x01 ; 1 11a2: 80 e1 ldi r24, 0x10 ; 16 11a4: 01 90 ld r0, Z+ 11a6: 0d 92 st X+, r0 11a8: 81 50 subi r24, 0x01 ; 1 11aa: e1 f7 brne .-8 ; 0x11a4 11ac: 82 c0 rjmp .+260 ; 0x12b2 11ae: a5 e6 ldi r26, 0x65 ; 101 11b0: b3 e0 ldi r27, 0x03 ; 3 11b2: e3 e7 ldi r30, 0x73 ; 115 11b4: f1 e0 ldi r31, 0x01 ; 1 11b6: 80 e1 ldi r24, 0x10 ; 16 11b8: 01 90 ld r0, Z+ 11ba: 0d 92 st X+, r0 11bc: 81 50 subi r24, 0x01 ; 1 11be: e1 f7 brne .-8 ; 0x11b8 11c0: 78 c0 rjmp .+240 ; 0x12b2 11c2: a5 e6 ldi r26, 0x65 ; 101 11c4: b3 e0 ldi r27, 0x03 ; 3 11c6: e4 e8 ldi r30, 0x84 ; 132 11c8: f1 e0 ldi r31, 0x01 ; 1 11ca: 80 e1 ldi r24, 0x10 ; 16 11cc: 01 90 ld r0, Z+ 11ce: 0d 92 st X+, r0 11d0: 81 50 subi r24, 0x01 ; 1 11d2: e1 f7 brne .-8 ; 0x11cc 11d4: 6e c0 rjmp .+220 ; 0x12b2 11d6: a5 e6 ldi r26, 0x65 ; 101 11d8: b3 e0 ldi r27, 0x03 ; 3 11da: e5 e9 ldi r30, 0x95 ; 149 11dc: f1 e0 ldi r31, 0x01 ; 1 11de: 80 e1 ldi r24, 0x10 ; 16 11e0: 01 90 ld r0, Z+ 11e2: 0d 92 st X+, r0 11e4: 81 50 subi r24, 0x01 ; 1 11e6: e1 f7 brne .-8 ; 0x11e0 11e8: 64 c0 rjmp .+200 ; 0x12b2 11ea: a5 e6 ldi r26, 0x65 ; 101 11ec: b3 e0 ldi r27, 0x03 ; 3 11ee: e6 ea ldi r30, 0xA6 ; 166 11f0: f1 e0 ldi r31, 0x01 ; 1 11f2: 80 e1 ldi r24, 0x10 ; 16 11f4: 01 90 ld r0, Z+ 11f6: 0d 92 st X+, r0 11f8: 81 50 subi r24, 0x01 ; 1 11fa: e1 f7 brne .-8 ; 0x11f4 11fc: 80 91 46 03 lds r24, 0x0346 1200: 88 60 ori r24, 0x08 ; 8 1202: 80 93 46 03 sts 0x0346, r24 1206: 80 91 5b 03 lds r24, 0x035B 120a: 90 91 5c 03 lds r25, 0x035C 120e: a0 91 5d 03 lds r26, 0x035D 1212: b0 91 5e 03 lds r27, 0x035E 1216: 01 96 adiw r24, 0x01 ; 1 1218: a1 1d adc r26, r1 121a: b1 1d adc r27, r1 121c: 80 93 60 03 sts 0x0360, r24 1220: 90 93 61 03 sts 0x0361, r25 1224: a0 93 62 03 sts 0x0362, r26 1228: b0 93 63 03 sts 0x0363, r27 122c: 86 e0 ldi r24, 0x06 ; 6 122e: 80 93 5f 03 sts 0x035F, r24 1232: 3f c0 rjmp .+126 ; 0x12b2 1234: a5 e6 ldi r26, 0x65 ; 101 1236: b3 e0 ldi r27, 0x03 ; 3 1238: e7 eb ldi r30, 0xB7 ; 183 123a: f1 e0 ldi r31, 0x01 ; 1 123c: 80 e1 ldi r24, 0x10 ; 16 123e: 01 90 ld r0, Z+ 1240: 0d 92 st X+, r0 1242: 81 50 subi r24, 0x01 ; 1 1244: e1 f7 brne .-8 ; 0x123e 1246: 80 91 46 03 lds r24, 0x0346 124a: 88 60 ori r24, 0x08 ; 8 124c: 80 93 46 03 sts 0x0346, r24 1250: 80 91 5b 03 lds r24, 0x035B 1254: 90 91 5c 03 lds r25, 0x035C 1258: a0 91 5d 03 lds r26, 0x035D 125c: b0 91 5e 03 lds r27, 0x035E 1260: 06 96 adiw r24, 0x06 ; 6 1262: a1 1d adc r26, r1 1264: b1 1d adc r27, r1 1266: 80 93 60 03 sts 0x0360, r24 126a: 90 93 61 03 sts 0x0361, r25 126e: a0 93 62 03 sts 0x0362, r26 1272: b0 93 63 03 sts 0x0363, r27 1276: 1d c0 rjmp .+58 ; 0x12b2 1278: a5 e6 ldi r26, 0x65 ; 101 127a: b3 e0 ldi r27, 0x03 ; 3 127c: e8 ec ldi r30, 0xC8 ; 200 127e: f1 e0 ldi r31, 0x01 ; 1 1280: 80 e1 ldi r24, 0x10 ; 16 1282: 01 90 ld r0, Z+ 1284: 0d 92 st X+, r0 1286: 81 50 subi r24, 0x01 ; 1 1288: e1 f7 brne .-8 ; 0x1282 128a: 13 c0 rjmp .+38 ; 0x12b2 128c: a5 e6 ldi r26, 0x65 ; 101 128e: b3 e0 ldi r27, 0x03 ; 3 1290: e9 ed ldi r30, 0xD9 ; 217 1292: f1 e0 ldi r31, 0x01 ; 1 1294: 80 e1 ldi r24, 0x10 ; 16 1296: 01 90 ld r0, Z+ 1298: 0d 92 st X+, r0 129a: 81 50 subi r24, 0x01 ; 1 129c: e1 f7 brne .-8 ; 0x1296 129e: 09 c0 rjmp .+18 ; 0x12b2 12a0: a5 e6 ldi r26, 0x65 ; 101 12a2: b3 e0 ldi r27, 0x03 ; 3 12a4: ea ee ldi r30, 0xEA ; 234 12a6: f1 e0 ldi r31, 0x01 ; 1 12a8: 80 e1 ldi r24, 0x10 ; 16 12aa: 01 90 ld r0, Z+ 12ac: 0d 92 st X+, r0 12ae: 81 50 subi r24, 0x01 ; 1 12b0: e1 f7 brne .-8 ; 0x12aa 12b2: 80 91 3e 03 lds r24, 0x033E 12b6: 90 e0 ldi r25, 0x00 ; 0 12b8: 8f 71 andi r24, 0x1F ; 31 12ba: 90 70 andi r25, 0x00 ; 0 12bc: 83 30 cpi r24, 0x03 ; 3 12be: 91 05 cpc r25, r1 12c0: b1 f1 breq .+108 ; 0x132e 12c2: 84 30 cpi r24, 0x04 ; 4 12c4: 91 05 cpc r25, r1 12c6: 34 f4 brge .+12 ; 0x12d4 12c8: 00 97 sbiw r24, 0x00 ; 0 12ca: 81 f0 breq .+32 ; 0x12ec 12cc: 01 97 sbiw r24, 0x01 ; 1 12ce: 09 f0 breq .+2 ; 0x12d2 12d0: cd c0 rjmp .+410 ; 0x146c 12d2: 1c c0 rjmp .+56 ; 0x130c 12d4: 87 30 cpi r24, 0x07 ; 7 12d6: 91 05 cpc r25, r1 12d8: 09 f4 brne .+2 ; 0x12dc 12da: 58 c0 rjmp .+176 ; 0x138c 12dc: 88 30 cpi r24, 0x08 ; 8 12de: 91 05 cpc r25, r1 12e0: 09 f4 brne .+2 ; 0x12e4 12e2: 81 c0 rjmp .+258 ; 0x13e6 12e4: 06 97 sbiw r24, 0x06 ; 6 12e6: 09 f0 breq .+2 ; 0x12ea 12e8: c1 c0 rjmp .+386 ; 0x146c 12ea: 30 c0 rjmp .+96 ; 0x134c 12ec: 80 91 5b 03 lds r24, 0x035B 12f0: 90 91 5c 03 lds r25, 0x035C 12f4: a0 91 5d 03 lds r26, 0x035D 12f8: b0 91 5e 03 lds r27, 0x035E 12fc: 18 16 cp r1, r24 12fe: 19 06 cpc r1, r25 1300: 1a 06 cpc r1, r26 1302: 1b 06 cpc r1, r27 1304: 0c f0 brlt .+2 ; 0x1308 1306: b2 c0 rjmp .+356 ; 0x146c 1308: 81 e0 ldi r24, 0x01 ; 1 130a: 0e c0 rjmp .+28 ; 0x1328 130c: 80 91 5b 03 lds r24, 0x035B 1310: 90 91 5c 03 lds r25, 0x035C 1314: a0 91 5d 03 lds r26, 0x035D 1318: b0 91 5e 03 lds r27, 0x035E 131c: 02 97 sbiw r24, 0x02 ; 2 131e: a1 05 cpc r26, r1 1320: b1 05 cpc r27, r1 1322: 0c f4 brge .+2 ; 0x1326 1324: a3 c0 rjmp .+326 ; 0x146c 1326: 82 e0 ldi r24, 0x02 ; 2 1328: 80 93 3e 03 sts 0x033E, r24 132c: 9f c0 rjmp .+318 ; 0x146c 132e: 80 91 57 03 lds r24, 0x0357 1332: 90 91 58 03 lds r25, 0x0358 1336: a0 91 59 03 lds r26, 0x0359 133a: b0 91 5a 03 lds r27, 0x035A 133e: 8f 5f subi r24, 0xFF ; 255 1340: 9f 4f sbci r25, 0xFF ; 255 1342: af 4f sbci r26, 0xFF ; 255 1344: bf 4f sbci r27, 0xFF ; 255 1346: 09 f0 breq .+2 ; 0x134a 1348: 70 c0 rjmp .+224 ; 0x142a 134a: 90 c0 rjmp .+288 ; 0x146c 134c: 20 91 57 03 lds r18, 0x0357 1350: 30 91 58 03 lds r19, 0x0358 1354: 40 91 59 03 lds r20, 0x0359 1358: 50 91 5a 03 lds r21, 0x035A 135c: 2f 3f cpi r18, 0xFF ; 255 135e: ff ef ldi r31, 0xFF ; 255 1360: 3f 07 cpc r19, r31 1362: ff ef ldi r31, 0xFF ; 255 1364: 4f 07 cpc r20, r31 1366: ff ef ldi r31, 0xFF ; 255 1368: 5f 07 cpc r21, r31 136a: 09 f4 brne .+2 ; 0x136e 136c: 7f c0 rjmp .+254 ; 0x146c 136e: 80 91 5b 03 lds r24, 0x035B 1372: 90 91 5c 03 lds r25, 0x035C 1376: a0 91 5d 03 lds r26, 0x035D 137a: b0 91 5e 03 lds r27, 0x035E 137e: 28 17 cp r18, r24 1380: 39 07 cpc r19, r25 1382: 4a 07 cpc r20, r26 1384: 5b 07 cpc r21, r27 1386: 0c f0 brlt .+2 ; 0x138a 1388: 71 c0 rjmp .+226 ; 0x146c 138a: 4f c0 rjmp .+158 ; 0x142a 138c: 20 91 57 03 lds r18, 0x0357 1390: 30 91 58 03 lds r19, 0x0358 1394: 40 91 59 03 lds r20, 0x0359 1398: 50 91 5a 03 lds r21, 0x035A 139c: 2f 3f cpi r18, 0xFF ; 255 139e: 6f ef ldi r22, 0xFF ; 255 13a0: 36 07 cpc r19, r22 13a2: 6f ef ldi r22, 0xFF ; 255 13a4: 46 07 cpc r20, r22 13a6: 6f ef ldi r22, 0xFF ; 255 13a8: 56 07 cpc r21, r22 13aa: 69 f1 breq .+90 ; 0x1406 13ac: 2a 3f cpi r18, 0xFA ; 250 13ae: 7f ef ldi r23, 0xFF ; 255 13b0: 37 07 cpc r19, r23 13b2: 7f ef ldi r23, 0xFF ; 255 13b4: 47 07 cpc r20, r23 13b6: 7f ef ldi r23, 0xFF ; 255 13b8: 57 07 cpc r21, r23 13ba: 09 f4 brne .+2 ; 0x13be 13bc: 57 c0 rjmp .+174 ; 0x146c 13be: 80 91 5b 03 lds r24, 0x035B 13c2: 90 91 5c 03 lds r25, 0x035C 13c6: a0 91 5d 03 lds r26, 0x035D 13ca: b0 91 5e 03 lds r27, 0x035E 13ce: 2b 5f subi r18, 0xFB ; 251 13d0: 3f 4f sbci r19, 0xFF ; 255 13d2: 4f 4f sbci r20, 0xFF ; 255 13d4: 5f 4f sbci r21, 0xFF ; 255 13d6: 28 17 cp r18, r24 13d8: 39 07 cpc r19, r25 13da: 4a 07 cpc r20, r26 13dc: 5b 07 cpc r21, r27 13de: 0c f0 brlt .+2 ; 0x13e2 13e0: 45 c0 rjmp .+138 ; 0x146c 13e2: 88 e0 ldi r24, 0x08 ; 8 13e4: a1 cf rjmp .-190 ; 0x1328 13e6: 20 91 57 03 lds r18, 0x0357 13ea: 30 91 58 03 lds r19, 0x0358 13ee: 40 91 59 03 lds r20, 0x0359 13f2: 50 91 5a 03 lds r21, 0x035A 13f6: 2f 3f cpi r18, 0xFF ; 255 13f8: 8f ef ldi r24, 0xFF ; 255 13fa: 38 07 cpc r19, r24 13fc: 8f ef ldi r24, 0xFF ; 255 13fe: 48 07 cpc r20, r24 1400: 8f ef ldi r24, 0xFF ; 255 1402: 58 07 cpc r21, r24 1404: 11 f4 brne .+4 ; 0x140a 1406: 83 e0 ldi r24, 0x03 ; 3 1408: 8f cf rjmp .-226 ; 0x1328 140a: 80 91 5b 03 lds r24, 0x035B 140e: 90 91 5c 03 lds r25, 0x035C 1412: a0 91 5d 03 lds r26, 0x035D 1416: b0 91 5e 03 lds r27, 0x035E 141a: 82 1b sub r24, r18 141c: 93 0b sbc r25, r19 141e: a4 0b sbc r26, r20 1420: b5 0b sbc r27, r21 1422: 02 97 sbiw r24, 0x02 ; 2 1424: a1 05 cpc r26, r1 1426: b1 05 cpc r27, r1 1428: 14 f4 brge .+4 ; 0x142e 142a: 87 e0 ldi r24, 0x07 ; 7 142c: 7d cf rjmp .-262 ; 0x1328 142e: 21 3e cpi r18, 0xE1 ; 225 1430: 9f ef ldi r25, 0xFF ; 255 1432: 39 07 cpc r19, r25 1434: 9f ef ldi r25, 0xFF ; 255 1436: 49 07 cpc r20, r25 1438: 9f ef ldi r25, 0xFF ; 255 143a: 59 07 cpc r21, r25 143c: b9 f0 breq .+46 ; 0x146c 143e: 80 91 5b 03 lds r24, 0x035B 1442: 90 91 5c 03 lds r25, 0x035C 1446: a0 91 5d 03 lds r26, 0x035D 144a: b0 91 5e 03 lds r27, 0x035E 144e: 22 5e subi r18, 0xE2 ; 226 1450: 3f 4f sbci r19, 0xFF ; 255 1452: 4f 4f sbci r20, 0xFF ; 255 1454: 5f 4f sbci r21, 0xFF ; 255 1456: 28 17 cp r18, r24 1458: 39 07 cpc r19, r25 145a: 4a 07 cpc r20, r26 145c: 5b 07 cpc r21, r27 145e: 34 f4 brge .+12 ; 0x146c 1460: 84 e0 ldi r24, 0x04 ; 4 1462: 80 93 3e 03 sts 0x033E, r24 1466: 85 e0 ldi r24, 0x05 ; 5 1468: 80 93 5f 03 sts 0x035F, r24 146c: 90 91 3e 03 lds r25, 0x033E 1470: 97 fd sbrc r25, 7 1472: 09 c0 rjmp .+18 ; 0x1486 1474: 80 91 3d 03 lds r24, 0x033D 1478: 88 23 and r24, r24 147a: 29 f4 brne .+10 ; 0x1486 147c: 10 92 7e 03 sts 0x037E, r1 1480: 90 68 ori r25, 0x80 ; 128 1482: 90 93 3e 03 sts 0x033E, r25 1486: 90 91 3e 03 lds r25, 0x033E 148a: 97 ff sbrs r25, 7 148c: 2f c0 rjmp .+94 ; 0x14ec 148e: 80 91 7e 03 lds r24, 0x037E 1492: 85 30 cpi r24, 0x05 ; 5 1494: f8 f0 brcs .+62 ; 0x14d4 1496: 80 91 3d 03 lds r24, 0x033D 149a: 80 ff sbrs r24, 0 149c: 1b c0 rjmp .+54 ; 0x14d4 149e: 89 2f mov r24, r25 14a0: 8f 71 andi r24, 0x1F ; 31 14a2: 82 30 cpi r24, 0x02 ; 2 14a4: 29 f4 brne .+10 ; 0x14b0 14a6: 85 e0 ldi r24, 0x05 ; 5 14a8: 80 93 3e 03 sts 0x033E, r24 14ac: 86 e0 ldi r24, 0x06 ; 6 14ae: 10 c0 rjmp .+32 ; 0x14d0 14b0: 83 30 cpi r24, 0x03 ; 3 14b2: 51 f0 breq .+20 ; 0x14c8 14b4: 85 30 cpi r24, 0x05 ; 5 14b6: 71 f0 breq .+28 ; 0x14d4 14b8: 84 30 cpi r24, 0x04 ; 4 14ba: 61 f0 breq .+24 ; 0x14d4 14bc: 86 30 cpi r24, 0x06 ; 6 14be: 21 f0 breq .+8 ; 0x14c8 14c0: 87 30 cpi r24, 0x07 ; 7 14c2: 11 f0 breq .+4 ; 0x14c8 14c4: 88 30 cpi r24, 0x08 ; 8 14c6: 31 f4 brne .+12 ; 0x14d4 14c8: 84 e0 ldi r24, 0x04 ; 4 14ca: 80 93 3e 03 sts 0x033E, r24 14ce: 82 e0 ldi r24, 0x02 ; 2 14d0: 80 93 5f 03 sts 0x035F, r24 14d4: 80 91 3d 03 lds r24, 0x033D 14d8: 80 ff sbrs r24, 0 14da: 06 c0 rjmp .+12 ; 0x14e8 14dc: 80 91 7e 03 lds r24, 0x037E 14e0: 8f 5f subi r24, 0xFF ; 255 14e2: 80 93 7e 03 sts 0x037E, r24 14e6: 02 c0 rjmp .+4 ; 0x14ec 14e8: 10 92 7e 03 sts 0x037E, r1 14ec: 20 91 60 03 lds r18, 0x0360 14f0: 30 91 61 03 lds r19, 0x0361 14f4: 40 91 62 03 lds r20, 0x0362 14f8: 50 91 63 03 lds r21, 0x0363 14fc: 2f 3f cpi r18, 0xFF ; 255 14fe: af ef ldi r26, 0xFF ; 255 1500: 3a 07 cpc r19, r26 1502: af ef ldi r26, 0xFF ; 255 1504: 4a 07 cpc r20, r26 1506: af ef ldi r26, 0xFF ; 255 1508: 5a 07 cpc r21, r26 150a: 09 f4 brne .+2 ; 0x150e 150c: 45 c0 rjmp .+138 ; 0x1598 150e: 80 91 5b 03 lds r24, 0x035B 1512: 90 91 5c 03 lds r25, 0x035C 1516: a0 91 5d 03 lds r26, 0x035D 151a: b0 91 5e 03 lds r27, 0x035E 151e: 28 17 cp r18, r24 1520: 39 07 cpc r19, r25 1522: 4a 07 cpc r20, r26 1524: 5b 07 cpc r21, r27 1526: c4 f5 brge .+112 ; 0x1598 1528: 80 91 46 03 lds r24, 0x0346 152c: 87 7f andi r24, 0xF7 ; 247 152e: 80 93 46 03 sts 0x0346, r24 1532: 2e 3f cpi r18, 0xFE ; 254 1534: bf ef ldi r27, 0xFF ; 255 1536: 3b 07 cpc r19, r27 1538: bf ef ldi r27, 0xFF ; 255 153a: 4b 07 cpc r20, r27 153c: bf ef ldi r27, 0xFF ; 255 153e: 5b 07 cpc r21, r27 1540: 59 f1 breq .+86 ; 0x1598 1542: 80 91 5b 03 lds r24, 0x035B 1546: 90 91 5c 03 lds r25, 0x035C 154a: a0 91 5d 03 lds r26, 0x035D 154e: b0 91 5e 03 lds r27, 0x035E 1552: 2f 5f subi r18, 0xFF ; 255 1554: 3f 4f sbci r19, 0xFF ; 255 1556: 4f 4f sbci r20, 0xFF ; 255 1558: 5f 4f sbci r21, 0xFF ; 255 155a: 28 17 cp r18, r24 155c: 39 07 cpc r19, r25 155e: 4a 07 cpc r20, r26 1560: 5b 07 cpc r21, r27 1562: d4 f4 brge .+52 ; 0x1598 1564: 80 91 5f 03 lds r24, 0x035F 1568: 80 93 3e 03 sts 0x033E, r24 156c: 10 92 5f 03 sts 0x035F, r1 1570: 8f ef ldi r24, 0xFF ; 255 1572: 9f ef ldi r25, 0xFF ; 255 1574: af ef ldi r26, 0xFF ; 255 1576: bf ef ldi r27, 0xFF ; 255 1578: 80 93 57 03 sts 0x0357, r24 157c: 90 93 58 03 sts 0x0358, r25 1580: a0 93 59 03 sts 0x0359, r26 1584: b0 93 5a 03 sts 0x035A, r27 1588: 80 93 60 03 sts 0x0360, r24 158c: 90 93 61 03 sts 0x0361, r25 1590: a0 93 62 03 sts 0x0362, r26 1594: b0 93 63 03 sts 0x0363, r27 //mEEP_TD(int16_t, 16); //mEEP_TD(uint32_t, 32); //mEEP_TD(int32_t, 32); //mEEP_TD(float, 32); 1598: 80 91 15 03 lds r24, 0x0315 159c: 81 ff sbrs r24, 1 159e: 55 c0 rjmp .+170 ; 0x164a 15a0: 80 91 f6 02 lds r24, 0x02F6 15a4: 86 30 cpi r24, 0x06 ; 6 15a6: 01 f5 brne .+64 ; 0x15e8 15a8: 10 92 bc 00 sts 0x00BC, r1 15ac: 80 91 bc 00 lds r24, 0x00BC 15b0: 80 68 ori r24, 0x80 ; 128 15b2: 80 93 bc 00 sts 0x00BC, r24 } else { uint8_t i; EEAR = (eeprom_buf[0] << 8) | eeprom_buf[1]; EEDR = eeprom_buf[2]; EECR |= (1< 15fe: e3 e6 ldi r30, 0x63 ; 99 1600: e6 15 cp r30, r6 1602: 08 f0 brcs .+2 ; 0x1606 1604: 63 94 inc r6 1606: 80 91 31 03 lds r24, 0x0331 160a: 90 91 32 03 lds r25, 0x0332 160e: 82 17 cp r24, r18 1610: 93 07 cpc r25, r19 1612: 10 f0 brcs .+4 ; 0x1618 1614: 61 10 cpse r6, r1 1616: 6a 94 dec r6 1618: 80 91 31 03 lds r24, 0x0331 161c: 90 91 32 03 lds r25, 0x0332 1620: 80 54 subi r24, 0x40 ; 64 1622: 9f 41 sbci r25, 0x1F ; 31 1624: 20 f4 brcc .+8 ; 0x162e 1626: 22 e6 ldi r18, 0x62 ; 98 1628: 25 15 cp r18, r5 162a: 08 f0 brcs .+2 ; 0x162e 162c: 53 94 inc r5 162e: 80 91 31 03 lds r24, 0x0331 1632: 90 91 32 03 lds r25, 0x0332 1636: 80 54 subi r24, 0x40 ; 64 1638: 9f 41 sbci r25, 0x1F ; 31 163a: 10 f0 brcs .+4 ; 0x1640 163c: 51 10 cpse r5, r1 163e: 5a 94 dec r5 1640: 80 91 15 03 lds r24, 0x0315 1644: 8d 7f andi r24, 0xFD ; 253 1646: 80 93 15 03 sts 0x0315, r24 164a: 6c e3 ldi r22, 0x3C ; 60 164c: 65 15 cp r22, r5 164e: 10 f4 brcc .+4 ; 0x1654 1650: 43 9a sbi 0x08, 3 ; 8 1652: 01 c0 rjmp .+2 ; 0x1656 1654: 43 98 cbi 0x08, 3 ; 8 1656: 80 91 15 03 lds r24, 0x0315 165a: 82 ff sbrs r24, 2 165c: 50 c4 rjmp .+2208 ; 0x1efe 165e: 80 91 15 03 lds r24, 0x0315 1662: 8b 7f andi r24, 0xFB ; 251 1664: 80 93 15 03 sts 0x0315, r24 1668: 8d b7 in r24, 0x3d ; 61 166a: 9e b7 in r25, 0x3e ; 62 166c: 0c 97 sbiw r24, 0x0c ; 12 166e: 0f b6 in r0, 0x3f ; 63 1670: f8 94 cli 1672: 9e bf out 0x3e, r25 ; 62 1674: 0f be out 0x3f, r0 ; 63 1676: 8d bf out 0x3d, r24 ; 61 1678: ed b7 in r30, 0x3d ; 61 167a: fe b7 in r31, 0x3e ; 62 167c: 31 96 adiw r30, 0x01 ; 1 167e: 20 e5 ldi r18, 0x50 ; 80 1680: 30 e0 ldi r19, 0x00 ; 0 1682: 2c 0f add r18, r28 1684: 3d 1f adc r19, r29 1686: ad b7 in r26, 0x3d ; 61 1688: be b7 in r27, 0x3e ; 62 168a: 12 96 adiw r26, 0x02 ; 2 168c: 3c 93 st X, r19 168e: 2e 93 st -X, r18 1690: 11 97 sbiw r26, 0x01 ; 1 1692: 00 e5 ldi r16, 0x50 ; 80 1694: 10 e0 ldi r17, 0x00 ; 0 1696: 13 83 std Z+3, r17 ; 0x03 1698: 02 83 std Z+2, r16 ; 0x02 169a: 6b ef ldi r22, 0xFB ; 251 169c: 71 e0 ldi r23, 0x01 ; 1 169e: 75 83 std Z+5, r23 ; 0x05 16a0: 64 83 std Z+4, r22 ; 0x04 16a2: 80 91 3f 03 lds r24, 0x033F 16a6: 90 91 40 03 lds r25, 0x0340 16aa: 97 83 std Z+7, r25 ; 0x07 16ac: 86 83 std Z+6, r24 ; 0x06 16ae: 80 91 41 03 lds r24, 0x0341 16b2: 90 91 42 03 lds r25, 0x0342 16b6: 91 87 std Z+9, r25 ; 0x09 16b8: 80 87 std Z+8, r24 ; 0x08 16ba: 80 91 43 03 lds r24, 0x0343 16be: 90 91 44 03 lds r25, 0x0344 16c2: 93 87 std Z+11, r25 ; 0x0b 16c4: 82 87 std Z+10, r24 ; 0x0a 16c6: 0e 94 a8 15 call 0x2b50 ; 0x2b50 16ca: 8d b7 in r24, 0x3d ; 61 16cc: 9e b7 in r25, 0x3e ; 62 16ce: 0c 96 adiw r24, 0x0c ; 12 16d0: 0f b6 in r0, 0x3f ; 63 16d2: f8 94 cli 16d4: 9e bf out 0x3e, r25 ; 62 16d6: 0f be out 0x3f, r0 ; 63 16d8: 8d bf out 0x3d, r24 ; 61 16da: ce 01 movw r24, r28 16dc: 80 5b subi r24, 0xB0 ; 176 16de: 9f 4f sbci r25, 0xFF ; 255 16e0: 0e 94 3c 05 call 0xa78 ; 0xa78 16e4: 90 91 3d 03 lds r25, 0x033D 16e8: ad b7 in r26, 0x3d ; 61 16ea: be b7 in r27, 0x3e ; 62 16ec: 1a 97 sbiw r26, 0x0a ; 10 16ee: 0f b6 in r0, 0x3f ; 63 16f0: f8 94 cli 16f2: be bf out 0x3e, r27 ; 62 16f4: 0f be out 0x3f, r0 ; 63 16f6: ad bf out 0x3d, r26 ; 61 16f8: ed b7 in r30, 0x3d ; 61 16fa: fe b7 in r31, 0x3e ; 62 16fc: 31 96 adiw r30, 0x01 ; 1 16fe: 20 e5 ldi r18, 0x50 ; 80 1700: 30 e0 ldi r19, 0x00 ; 0 1702: 2c 0f add r18, r28 1704: 3d 1f adc r19, r29 1706: 12 96 adiw r26, 0x02 ; 2 1708: 3c 93 st X, r19 170a: 2e 93 st -X, r18 170c: 11 97 sbiw r26, 0x01 ; 1 170e: 13 83 std Z+3, r17 ; 0x03 1710: 02 83 std Z+2, r16 ; 0x02 1712: 6e e0 ldi r22, 0x0E ; 14 1714: 72 e0 ldi r23, 0x02 ; 2 1716: 75 83 std Z+5, r23 ; 0x05 1718: 64 83 std Z+4, r22 ; 0x04 171a: 80 91 45 03 lds r24, 0x0345 171e: 86 83 std Z+6, r24 ; 0x06 1720: 17 82 std Z+7, r1 ; 0x07 1722: 90 87 std Z+8, r25 ; 0x08 1724: 11 86 std Z+9, r1 ; 0x09 1726: 0e 94 a8 15 call 0x2b50 ; 0x2b50 172a: 8d b7 in r24, 0x3d ; 61 172c: 9e b7 in r25, 0x3e ; 62 172e: 0a 96 adiw r24, 0x0a ; 10 1730: 0f b6 in r0, 0x3f ; 63 1732: f8 94 cli 1734: 9e bf out 0x3e, r25 ; 62 1736: 0f be out 0x3f, r0 ; 63 1738: 8d bf out 0x3d, r24 ; 61 173a: ce 01 movw r24, r28 173c: 80 5b subi r24, 0xB0 ; 176 173e: 9f 4f sbci r25, 0xFF ; 255 1740: 0e 94 3c 05 call 0xa78 ; 0xa78 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 1744: 60 91 5b 03 lds r22, 0x035B 1748: 70 91 5c 03 lds r23, 0x035C 174c: 80 91 5d 03 lds r24, 0x035D 1750: 90 91 5e 03 lds r25, 0x035E 1754: ca 55 subi r28, 0x5A ; 90 1756: df 4f sbci r29, 0xFF ; 255 1758: 68 83 st Y, r22 175a: 79 83 std Y+1, r23 ; 0x01 175c: 8a 83 std Y+2, r24 ; 0x02 175e: 9b 83 std Y+3, r25 ; 0x03 1760: c6 5a subi r28, 0xA6 ; 166 1762: d0 40 sbci r29, 0x00 ; 0 1764: 20 91 31 03 lds r18, 0x0331 1768: 30 91 32 03 lds r19, 0x0332 176c: 40 91 33 03 lds r20, 0x0333 1770: 50 91 34 03 lds r21, 0x0334 1774: 60 91 35 03 lds r22, 0x0335 1778: 70 91 36 03 lds r23, 0x0336 177c: e0 90 37 03 lds r14, 0x0337 1780: f0 90 38 03 lds r15, 0x0338 1784: c0 90 39 03 lds r12, 0x0339 1788: d0 90 3a 03 lds r13, 0x033A 178c: a0 90 3b 03 lds r10, 0x033B 1790: b0 90 3c 03 lds r11, 0x033C 1794: 8d b7 in r24, 0x3d ; 61 1796: 9e b7 in r25, 0x3e ; 62 1798: 46 97 sbiw r24, 0x16 ; 22 179a: 0f b6 in r0, 0x3f ; 63 179c: f8 94 cli 179e: 9e bf out 0x3e, r25 ; 62 17a0: 0f be out 0x3f, r0 ; 63 17a2: 8d bf out 0x3d, r24 ; 61 17a4: ed b7 in r30, 0x3d ; 61 17a6: fe b7 in r31, 0x3e ; 62 17a8: 31 96 adiw r30, 0x01 ; 1 17aa: 80 e5 ldi r24, 0x50 ; 80 17ac: 90 e0 ldi r25, 0x00 ; 0 17ae: 8c 0f add r24, r28 17b0: 9d 1f adc r25, r29 17b2: ad b7 in r26, 0x3d ; 61 17b4: be b7 in r27, 0x3e ; 62 17b6: 12 96 adiw r26, 0x02 ; 2 17b8: 9c 93 st X, r25 17ba: 8e 93 st -X, r24 17bc: 11 97 sbiw r26, 0x01 ; 1 17be: 13 83 std Z+3, r17 ; 0x03 17c0: 02 83 std Z+2, r16 ; 0x02 17c2: ac e1 ldi r26, 0x1C ; 28 17c4: b2 e0 ldi r27, 0x02 ; 2 17c6: b5 83 std Z+5, r27 ; 0x05 17c8: a4 83 std Z+4, r26 ; 0x04 17ca: ca 55 subi r28, 0x5A ; 90 17cc: df 4f sbci r29, 0xFF ; 255 17ce: 88 81 ld r24, Y 17d0: 99 81 ldd r25, Y+1 ; 0x01 17d2: aa 81 ldd r26, Y+2 ; 0x02 17d4: bb 81 ldd r27, Y+3 ; 0x03 17d6: c6 5a subi r28, 0xA6 ; 166 17d8: d0 40 sbci r29, 0x00 ; 0 17da: 86 83 std Z+6, r24 ; 0x06 17dc: 97 83 std Z+7, r25 ; 0x07 17de: a0 87 std Z+8, r26 ; 0x08 17e0: b1 87 std Z+9, r27 ; 0x09 17e2: 33 87 std Z+11, r19 ; 0x0b 17e4: 22 87 std Z+10, r18 ; 0x0a 17e6: 55 87 std Z+13, r21 ; 0x0d 17e8: 44 87 std Z+12, r20 ; 0x0c 17ea: 77 87 std Z+15, r23 ; 0x0f 17ec: 66 87 std Z+14, r22 ; 0x0e 17ee: f1 8a std Z+17, r15 ; 0x11 17f0: e0 8a std Z+16, r14 ; 0x10 17f2: d3 8a std Z+19, r13 ; 0x13 17f4: c2 8a std Z+18, r12 ; 0x12 17f6: b5 8a std Z+21, r11 ; 0x15 17f8: a4 8a std Z+20, r10 ; 0x14 17fa: 0e 94 a8 15 call 0x2b50 ; 0x2b50 17fe: ad b7 in r26, 0x3d ; 61 1800: be b7 in r27, 0x3e ; 62 1802: 56 96 adiw r26, 0x16 ; 22 1804: 0f b6 in r0, 0x3f ; 63 1806: f8 94 cli 1808: be bf out 0x3e, r27 ; 62 180a: 0f be out 0x3f, r0 ; 63 180c: ad bf out 0x3d, r26 ; 61 180e: ce 01 movw r24, r28 1810: 80 5b subi r24, 0xB0 ; 176 1812: 9f 4f sbci r25, 0xFF ; 255 1814: 0e 94 3c 05 call 0xa78 ; 0xa78 1818: 80 e8 ldi r24, 0x80 ; 128 181a: 0e 94 d9 04 call 0x9b2 ; 0x9b2 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 181e: 60 91 5b 03 lds r22, 0x035B 1822: 70 91 5c 03 lds r23, 0x035C 1826: 80 91 5d 03 lds r24, 0x035D 182a: 90 91 5e 03 lds r25, 0x035E 182e: 20 91 64 03 lds r18, 0x0364 1832: e2 2e mov r14, r18 1834: ff 24 eor r15, r15 1836: 00 e0 ldi r16, 0x00 ; 0 1838: 10 e0 ldi r17, 0x00 ; 0 183a: a8 01 movw r20, r16 183c: 97 01 movw r18, r14 183e: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1842: 97 fd sbrc r25, 7 1844: 85 c0 rjmp .+266 ; 0x1950 1846: 60 91 5b 03 lds r22, 0x035B 184a: 70 91 5c 03 lds r23, 0x035C 184e: 80 91 5d 03 lds r24, 0x035D 1852: 90 91 5e 03 lds r25, 0x035E 1856: a8 01 movw r20, r16 1858: 97 01 movw r18, r14 185a: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 185e: 63 30 cpi r22, 0x03 ; 3 1860: 71 05 cpc r23, r1 1862: 81 05 cpc r24, r1 1864: 91 05 cpc r25, r1 1866: 0c f0 brlt .+2 ; 0x186a 1868: 73 c0 rjmp .+230 ; 0x1950 186a: e0 90 31 03 lds r14, 0x0331 186e: f0 90 32 03 lds r15, 0x0332 1872: a0 90 31 03 lds r10, 0x0331 1876: b0 90 32 03 lds r11, 0x0332 187a: 80 91 33 03 lds r24, 0x0333 187e: 90 91 34 03 lds r25, 0x0334 1882: 97 fd sbrc r25, 7 1884: 03 c0 rjmp .+6 ; 0x188c 1886: 00 e2 ldi r16, 0x20 ; 32 1888: 10 e0 ldi r17, 0x00 ; 0 188a: 02 c0 rjmp .+4 ; 0x1890 188c: 0d e2 ldi r16, 0x2D ; 45 188e: 10 e0 ldi r17, 0x00 ; 0 1890: 80 91 33 03 lds r24, 0x0333 1894: 90 91 34 03 lds r25, 0x0334 1898: 97 ff sbrs r25, 7 189a: 07 c0 rjmp .+14 ; 0x18aa 189c: 80 91 33 03 lds r24, 0x0333 18a0: 90 91 34 03 lds r25, 0x0334 18a4: 6c e9 ldi r22, 0x9C ; 156 18a6: 7f ef ldi r23, 0xFF ; 255 18a8: 06 c0 rjmp .+12 ; 0x18b6 18aa: 80 91 33 03 lds r24, 0x0333 18ae: 90 91 34 03 lds r25, 0x0334 18b2: 64 e6 ldi r22, 0x64 ; 100 18b4: 70 e0 ldi r23, 0x00 ; 0 18b6: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 18ba: c6 2e mov r12, r22 18bc: 47 2f mov r20, r23 18be: 80 91 33 03 lds r24, 0x0333 18c2: 90 91 34 03 lds r25, 0x0334 18c6: 97 ff sbrs r25, 7 18c8: 08 c0 rjmp .+16 ; 0x18da 18ca: 80 91 33 03 lds r24, 0x0333 18ce: 90 91 34 03 lds r25, 0x0334 18d2: 90 95 com r25 18d4: 81 95 neg r24 18d6: 9f 4f sbci r25, 0xFF ; 255 18d8: 04 c0 rjmp .+8 ; 0x18e2 18da: 80 91 33 03 lds r24, 0x0333 18de: 90 91 34 03 lds r25, 0x0334 18e2: 64 e6 ldi r22, 0x64 ; 100 18e4: 70 e0 ldi r23, 0x00 ; 0 18e6: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 18ea: 38 2f mov r19, r24 18ec: 29 2f mov r18, r25 18ee: ed b7 in r30, 0x3d ; 61 18f0: fe b7 in r31, 0x3e ; 62 18f2: 70 97 sbiw r30, 0x10 ; 16 18f4: 0f b6 in r0, 0x3f ; 63 18f6: f8 94 cli 18f8: fe bf out 0x3e, r31 ; 62 18fa: 0f be out 0x3f, r0 ; 63 18fc: ed bf out 0x3d, r30 ; 61 18fe: 31 96 adiw r30, 0x01 ; 1 1900: ad b7 in r26, 0x3d ; 61 1902: be b7 in r27, 0x3e ; 62 1904: 12 96 adiw r26, 0x02 ; 2 1906: 9c 92 st X, r9 1908: 8e 92 st -X, r8 190a: 11 97 sbiw r26, 0x01 ; 1 190c: 81 e1 ldi r24, 0x11 ; 17 190e: 90 e0 ldi r25, 0x00 ; 0 1910: 93 83 std Z+3, r25 ; 0x03 1912: 82 83 std Z+2, r24 ; 0x02 1914: 88 e3 ldi r24, 0x38 ; 56 1916: 92 e0 ldi r25, 0x02 ; 2 1918: 95 83 std Z+5, r25 ; 0x05 191a: 84 83 std Z+4, r24 ; 0x04 191c: c7 01 movw r24, r14 191e: 68 ee ldi r22, 0xE8 ; 232 1920: 73 e0 ldi r23, 0x03 ; 3 1922: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 1926: 77 83 std Z+7, r23 ; 0x07 1928: 66 83 std Z+6, r22 ; 0x06 192a: c5 01 movw r24, r10 192c: 68 ee ldi r22, 0xE8 ; 232 192e: 73 e0 ldi r23, 0x03 ; 3 1930: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 1934: 91 87 std Z+9, r25 ; 0x09 1936: 80 87 std Z+8, r24 ; 0x08 1938: 13 87 std Z+11, r17 ; 0x0b 193a: 02 87 std Z+10, r16 ; 0x0a 193c: c4 86 std Z+12, r12 ; 0x0c 193e: 45 87 std Z+13, r20 ; 0x0d 1940: 36 87 std Z+14, r19 ; 0x0e 1942: 27 87 std Z+15, r18 ; 0x0f 1944: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1948: ed b7 in r30, 0x3d ; 61 194a: fe b7 in r31, 0x3e ; 62 194c: 70 96 adiw r30, 0x10 ; 16 194e: cb c0 rjmp .+406 ; 0x1ae6 1950: 60 91 5b 03 lds r22, 0x035B 1954: 70 91 5c 03 lds r23, 0x035C 1958: 80 91 5d 03 lds r24, 0x035D 195c: 90 91 5e 03 lds r25, 0x035E 1960: a8 01 movw r20, r16 1962: 97 01 movw r18, r14 1964: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1968: 63 30 cpi r22, 0x03 ; 3 196a: 71 05 cpc r23, r1 196c: 81 05 cpc r24, r1 196e: 91 05 cpc r25, r1 1970: 0c f4 brge .+2 ; 0x1974 1972: 21 c1 rjmp .+578 ; 0x1bb6 1974: 60 91 5b 03 lds r22, 0x035B 1978: 70 91 5c 03 lds r23, 0x035C 197c: 80 91 5d 03 lds r24, 0x035D 1980: 90 91 5e 03 lds r25, 0x035E 1984: a8 01 movw r20, r16 1986: 97 01 movw r18, r14 1988: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 198c: 66 30 cpi r22, 0x06 ; 6 198e: 71 05 cpc r23, r1 1990: 81 05 cpc r24, r1 1992: 91 05 cpc r25, r1 1994: 0c f0 brlt .+2 ; 0x1998 1996: 0f c1 rjmp .+542 ; 0x1bb6 1998: 80 91 39 03 lds r24, 0x0339 199c: 90 91 3a 03 lds r25, 0x033A 19a0: 82 50 subi r24, 0x02 ; 2 19a2: 90 48 sbci r25, 0x80 ; 128 19a4: d1 f4 brne .+52 ; 0x19da 19a6: 00 d0 rcall .+0 ; 0x19a8 19a8: 00 d0 rcall .+0 ; 0x19aa 19aa: 00 d0 rcall .+0 ; 0x19ac 19ac: ed b7 in r30, 0x3d ; 61 19ae: fe b7 in r31, 0x3e ; 62 19b0: 31 96 adiw r30, 0x01 ; 1 19b2: ad b7 in r26, 0x3d ; 61 19b4: be b7 in r27, 0x3e ; 62 19b6: 12 96 adiw r26, 0x02 ; 2 19b8: 9c 92 st X, r9 19ba: 8e 92 st -X, r8 19bc: 11 97 sbiw r26, 0x01 ; 1 19be: 81 e1 ldi r24, 0x11 ; 17 19c0: 90 e0 ldi r25, 0x00 ; 0 19c2: 93 83 std Z+3, r25 ; 0x03 19c4: 82 83 std Z+2, r24 ; 0x02 19c6: 8f e4 ldi r24, 0x4F ; 79 19c8: 92 e0 ldi r25, 0x02 ; 2 19ca: 95 83 std Z+5, r25 ; 0x05 19cc: 84 83 std Z+4, r24 ; 0x04 19ce: 0e 94 a8 15 call 0x2b50 ; 0x2b50 19d2: ed b7 in r30, 0x3d ; 61 19d4: fe b7 in r31, 0x3e ; 62 19d6: 36 96 adiw r30, 0x06 ; 6 19d8: 5f c0 rjmp .+190 ; 0x1a98 19da: 80 91 39 03 lds r24, 0x0339 19de: 90 91 3a 03 lds r25, 0x033A 19e2: 97 fd sbrc r25, 7 19e4: 03 c0 rjmp .+6 ; 0x19ec 19e6: 0b e2 ldi r16, 0x2B ; 43 19e8: 10 e0 ldi r17, 0x00 ; 0 19ea: 02 c0 rjmp .+4 ; 0x19f0 19ec: 0d e2 ldi r16, 0x2D ; 45 19ee: 10 e0 ldi r17, 0x00 ; 0 19f0: 80 91 39 03 lds r24, 0x0339 19f4: 90 91 3a 03 lds r25, 0x033A 19f8: 97 ff sbrs r25, 7 19fa: 07 c0 rjmp .+14 ; 0x1a0a 19fc: 80 91 39 03 lds r24, 0x0339 1a00: 90 91 3a 03 lds r25, 0x033A 1a04: 6c e9 ldi r22, 0x9C ; 156 1a06: 7f ef ldi r23, 0xFF ; 255 1a08: 06 c0 rjmp .+12 ; 0x1a16 1a0a: 80 91 39 03 lds r24, 0x0339 1a0e: 90 91 3a 03 lds r25, 0x033A 1a12: 64 e6 ldi r22, 0x64 ; 100 1a14: 70 e0 ldi r23, 0x00 ; 0 1a16: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 1a1a: f6 2e mov r15, r22 1a1c: 47 2f mov r20, r23 1a1e: 80 91 39 03 lds r24, 0x0339 1a22: 90 91 3a 03 lds r25, 0x033A 1a26: 97 ff sbrs r25, 7 1a28: 08 c0 rjmp .+16 ; 0x1a3a 1a2a: 80 91 39 03 lds r24, 0x0339 1a2e: 90 91 3a 03 lds r25, 0x033A 1a32: 90 95 com r25 1a34: 81 95 neg r24 1a36: 9f 4f sbci r25, 0xFF ; 255 1a38: 04 c0 rjmp .+8 ; 0x1a42 1a3a: 80 91 39 03 lds r24, 0x0339 1a3e: 90 91 3a 03 lds r25, 0x033A 1a42: 64 e6 ldi r22, 0x64 ; 100 1a44: 70 e0 ldi r23, 0x00 ; 0 1a46: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 1a4a: 38 2f mov r19, r24 1a4c: 29 2f mov r18, r25 1a4e: 6d b7 in r22, 0x3d ; 61 1a50: 7e b7 in r23, 0x3e ; 62 1a52: 6c 50 subi r22, 0x0C ; 12 1a54: 70 40 sbci r23, 0x00 ; 0 1a56: 0f b6 in r0, 0x3f ; 63 1a58: f8 94 cli 1a5a: 7e bf out 0x3e, r23 ; 62 1a5c: 0f be out 0x3f, r0 ; 63 1a5e: 6d bf out 0x3d, r22 ; 61 1a60: ed b7 in r30, 0x3d ; 61 1a62: fe b7 in r31, 0x3e ; 62 1a64: 31 96 adiw r30, 0x01 ; 1 1a66: ad b7 in r26, 0x3d ; 61 1a68: be b7 in r27, 0x3e ; 62 1a6a: 12 96 adiw r26, 0x02 ; 2 1a6c: 9c 92 st X, r9 1a6e: 8e 92 st -X, r8 1a70: 11 97 sbiw r26, 0x01 ; 1 1a72: 81 e1 ldi r24, 0x11 ; 17 1a74: 90 e0 ldi r25, 0x00 ; 0 1a76: 93 83 std Z+3, r25 ; 0x03 1a78: 82 83 std Z+2, r24 ; 0x02 1a7a: 89 e5 ldi r24, 0x59 ; 89 1a7c: 92 e0 ldi r25, 0x02 ; 2 1a7e: 95 83 std Z+5, r25 ; 0x05 1a80: 84 83 std Z+4, r24 ; 0x04 1a82: 17 83 std Z+7, r17 ; 0x07 1a84: 06 83 std Z+6, r16 ; 0x06 1a86: f0 86 std Z+8, r15 ; 0x08 1a88: 41 87 std Z+9, r20 ; 0x09 1a8a: 32 87 std Z+10, r19 ; 0x0a 1a8c: 23 87 std Z+11, r18 ; 0x0b 1a8e: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1a92: ed b7 in r30, 0x3d ; 61 1a94: fe b7 in r31, 0x3e ; 62 1a96: 3c 96 adiw r30, 0x0c ; 12 1a98: 0f b6 in r0, 0x3f ; 63 1a9a: f8 94 cli 1a9c: fe bf out 0x3e, r31 ; 62 1a9e: 0f be out 0x3f, r0 ; 63 1aa0: ed bf out 0x3d, r30 ; 61 1aa2: 80 91 3b 03 lds r24, 0x033B 1aa6: 90 91 3c 03 lds r25, 0x033C 1aaa: 82 50 subi r24, 0x02 ; 2 1aac: 90 48 sbci r25, 0x80 ; 128 1aae: 09 f5 brne .+66 ; 0x1af2 1ab0: 00 d0 rcall .+0 ; 0x1ab2 1ab2: 00 d0 rcall .+0 ; 0x1ab4 1ab4: 00 d0 rcall .+0 ; 0x1ab6 1ab6: ed b7 in r30, 0x3d ; 61 1ab8: fe b7 in r31, 0x3e ; 62 1aba: 31 96 adiw r30, 0x01 ; 1 1abc: ce 01 movw r24, r28 1abe: 88 96 adiw r24, 0x28 ; 40 1ac0: ad b7 in r26, 0x3d ; 61 1ac2: be b7 in r27, 0x3e ; 62 1ac4: 12 96 adiw r26, 0x02 ; 2 1ac6: 9c 93 st X, r25 1ac8: 8e 93 st -X, r24 1aca: 11 97 sbiw r26, 0x01 ; 1 1acc: 88 e0 ldi r24, 0x08 ; 8 1ace: 90 e0 ldi r25, 0x00 ; 0 1ad0: 93 83 std Z+3, r25 ; 0x03 1ad2: 82 83 std Z+2, r24 ; 0x02 1ad4: 87 e6 ldi r24, 0x67 ; 103 1ad6: 92 e0 ldi r25, 0x02 ; 2 1ad8: 95 83 std Z+5, r25 ; 0x05 1ada: 84 83 std Z+4, r24 ; 0x04 1adc: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1ae0: ed b7 in r30, 0x3d ; 61 1ae2: fe b7 in r31, 0x3e ; 62 1ae4: 36 96 adiw r30, 0x06 ; 6 1ae6: 0f b6 in r0, 0x3f ; 63 1ae8: f8 94 cli 1aea: fe bf out 0x3e, r31 ; 62 1aec: 0f be out 0x3f, r0 ; 63 1aee: ed bf out 0x3d, r30 ; 61 1af0: e1 c1 rjmp .+962 ; 0x1eb4 1af2: 80 91 3b 03 lds r24, 0x033B 1af6: 90 91 3c 03 lds r25, 0x033C 1afa: 97 fd sbrc r25, 7 1afc: 03 c0 rjmp .+6 ; 0x1b04 1afe: 0b e2 ldi r16, 0x2B ; 43 1b00: 10 e0 ldi r17, 0x00 ; 0 1b02: 02 c0 rjmp .+4 ; 0x1b08 1b04: 0d e2 ldi r16, 0x2D ; 45 1b06: 10 e0 ldi r17, 0x00 ; 0 1b08: 80 91 3b 03 lds r24, 0x033B 1b0c: 90 91 3c 03 lds r25, 0x033C 1b10: 97 ff sbrs r25, 7 1b12: 07 c0 rjmp .+14 ; 0x1b22 1b14: 80 91 3b 03 lds r24, 0x033B 1b18: 90 91 3c 03 lds r25, 0x033C 1b1c: 6c e9 ldi r22, 0x9C ; 156 1b1e: 7f ef ldi r23, 0xFF ; 255 1b20: 06 c0 rjmp .+12 ; 0x1b2e 1b22: 80 91 3b 03 lds r24, 0x033B 1b26: 90 91 3c 03 lds r25, 0x033C 1b2a: 64 e6 ldi r22, 0x64 ; 100 1b2c: 70 e0 ldi r23, 0x00 ; 0 1b2e: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 1b32: f6 2e mov r15, r22 1b34: 47 2f mov r20, r23 1b36: 80 91 3b 03 lds r24, 0x033B 1b3a: 90 91 3c 03 lds r25, 0x033C 1b3e: 97 ff sbrs r25, 7 1b40: 08 c0 rjmp .+16 ; 0x1b52 1b42: 80 91 3b 03 lds r24, 0x033B 1b46: 90 91 3c 03 lds r25, 0x033C 1b4a: 90 95 com r25 1b4c: 81 95 neg r24 1b4e: 9f 4f sbci r25, 0xFF ; 255 1b50: 04 c0 rjmp .+8 ; 0x1b5a 1b52: 80 91 3b 03 lds r24, 0x033B 1b56: 90 91 3c 03 lds r25, 0x033C 1b5a: 64 e6 ldi r22, 0x64 ; 100 1b5c: 70 e0 ldi r23, 0x00 ; 0 1b5e: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 1b62: 38 2f mov r19, r24 1b64: 29 2f mov r18, r25 1b66: 6d b7 in r22, 0x3d ; 61 1b68: 7e b7 in r23, 0x3e ; 62 1b6a: 6c 50 subi r22, 0x0C ; 12 1b6c: 70 40 sbci r23, 0x00 ; 0 1b6e: 0f b6 in r0, 0x3f ; 63 1b70: f8 94 cli 1b72: 7e bf out 0x3e, r23 ; 62 1b74: 0f be out 0x3f, r0 ; 63 1b76: 6d bf out 0x3d, r22 ; 61 1b78: ed b7 in r30, 0x3d ; 61 1b7a: fe b7 in r31, 0x3e ; 62 1b7c: 31 96 adiw r30, 0x01 ; 1 1b7e: ce 01 movw r24, r28 1b80: 88 96 adiw r24, 0x28 ; 40 1b82: ad b7 in r26, 0x3d ; 61 1b84: be b7 in r27, 0x3e ; 62 1b86: 12 96 adiw r26, 0x02 ; 2 1b88: 9c 93 st X, r25 1b8a: 8e 93 st -X, r24 1b8c: 11 97 sbiw r26, 0x01 ; 1 1b8e: 88 e0 ldi r24, 0x08 ; 8 1b90: 90 e0 ldi r25, 0x00 ; 0 1b92: 93 83 std Z+3, r25 ; 0x03 1b94: 82 83 std Z+2, r24 ; 0x02 1b96: 8f e6 ldi r24, 0x6F ; 111 1b98: 92 e0 ldi r25, 0x02 ; 2 1b9a: 95 83 std Z+5, r25 ; 0x05 1b9c: 84 83 std Z+4, r24 ; 0x04 1b9e: 17 83 std Z+7, r17 ; 0x07 1ba0: 06 83 std Z+6, r16 ; 0x06 1ba2: f0 86 std Z+8, r15 ; 0x08 1ba4: 41 87 std Z+9, r20 ; 0x09 1ba6: 32 87 std Z+10, r19 ; 0x0a 1ba8: 23 87 std Z+11, r18 ; 0x0b 1baa: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1bae: ed b7 in r30, 0x3d ; 61 1bb0: fe b7 in r31, 0x3e ; 62 1bb2: 3c 96 adiw r30, 0x0c ; 12 1bb4: 98 cf rjmp .-208 ; 0x1ae6 1bb6: 60 91 5b 03 lds r22, 0x035B 1bba: 70 91 5c 03 lds r23, 0x035C 1bbe: 80 91 5d 03 lds r24, 0x035D 1bc2: 90 91 5e 03 lds r25, 0x035E 1bc6: a8 01 movw r20, r16 1bc8: 97 01 movw r18, r14 1bca: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1bce: 66 30 cpi r22, 0x06 ; 6 1bd0: 71 05 cpc r23, r1 1bd2: 81 05 cpc r24, r1 1bd4: 91 05 cpc r25, r1 1bd6: 0c f4 brge .+2 ; 0x1bda 1bd8: f7 c0 rjmp .+494 ; 0x1dc8 1bda: 60 91 5b 03 lds r22, 0x035B 1bde: 70 91 5c 03 lds r23, 0x035C 1be2: 80 91 5d 03 lds r24, 0x035D 1be6: 90 91 5e 03 lds r25, 0x035E 1bea: a8 01 movw r20, r16 1bec: 97 01 movw r18, r14 1bee: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1bf2: 69 30 cpi r22, 0x09 ; 9 1bf4: 71 05 cpc r23, r1 1bf6: 81 05 cpc r24, r1 1bf8: 91 05 cpc r25, r1 1bfa: 0c f0 brlt .+2 ; 0x1bfe 1bfc: e5 c0 rjmp .+458 ; 0x1dc8 1bfe: 20 91 3d 03 lds r18, 0x033D 1c02: 6d b7 in r22, 0x3d ; 61 1c04: 7e b7 in r23, 0x3e ; 62 1c06: 6c 50 subi r22, 0x0C ; 12 1c08: 70 40 sbci r23, 0x00 ; 0 1c0a: 0f b6 in r0, 0x3f ; 63 1c0c: f8 94 cli 1c0e: 7e bf out 0x3e, r23 ; 62 1c10: 0f be out 0x3f, r0 ; 63 1c12: 6d bf out 0x3d, r22 ; 61 1c14: ed b7 in r30, 0x3d ; 61 1c16: fe b7 in r31, 0x3e ; 62 1c18: 31 96 adiw r30, 0x01 ; 1 1c1a: ad b7 in r26, 0x3d ; 61 1c1c: be b7 in r27, 0x3e ; 62 1c1e: 12 96 adiw r26, 0x02 ; 2 1c20: 9c 92 st X, r9 1c22: 8e 92 st -X, r8 1c24: 11 97 sbiw r26, 0x01 ; 1 1c26: 81 e1 ldi r24, 0x11 ; 17 1c28: 90 e0 ldi r25, 0x00 ; 0 1c2a: 93 83 std Z+3, r25 ; 0x03 1c2c: 82 83 std Z+2, r24 ; 0x02 1c2e: 6b e7 ldi r22, 0x7B ; 123 1c30: 72 e0 ldi r23, 0x02 ; 2 1c32: 75 83 std Z+5, r23 ; 0x05 1c34: 64 83 std Z+4, r22 ; 0x04 1c36: 80 91 3e 03 lds r24, 0x033E 1c3a: 90 e0 ldi r25, 0x00 ; 0 1c3c: 8f 71 andi r24, 0x1F ; 31 1c3e: 90 70 andi r25, 0x00 ; 0 1c40: 97 83 std Z+7, r25 ; 0x07 1c42: 86 83 std Z+6, r24 ; 0x06 1c44: 80 91 45 03 lds r24, 0x0345 1c48: 80 87 std Z+8, r24 ; 0x08 1c4a: 11 86 std Z+9, r1 ; 0x09 1c4c: 22 87 std Z+10, r18 ; 0x0a 1c4e: 13 86 std Z+11, r1 ; 0x0b 1c50: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1c54: 80 91 4b 03 lds r24, 0x034B 1c58: 90 91 4c 03 lds r25, 0x034C 1c5c: ad b7 in r26, 0x3d ; 61 1c5e: be b7 in r27, 0x3e ; 62 1c60: 1c 96 adiw r26, 0x0c ; 12 1c62: 0f b6 in r0, 0x3f ; 63 1c64: f8 94 cli 1c66: be bf out 0x3e, r27 ; 62 1c68: 0f be out 0x3f, r0 ; 63 1c6a: ad bf out 0x3d, r26 ; 61 1c6c: 00 97 sbiw r24, 0x00 ; 0 1c6e: b9 f1 breq .+110 ; 0x1cde 1c70: ac 01 movw r20, r24 1c72: 40 5f subi r20, 0xF0 ; 240 1c74: 55 40 sbci r21, 0x05 ; 5 1c76: 57 fd sbrc r21, 7 1c78: 03 c0 rjmp .+6 ; 0x1c80 1c7a: 2b e2 ldi r18, 0x2B ; 43 1c7c: 30 e0 ldi r19, 0x00 ; 0 1c7e: 02 c0 rjmp .+4 ; 0x1c84 1c80: 2d e2 ldi r18, 0x2D ; 45 1c82: 30 e0 ldi r19, 0x00 ; 0 1c84: ed b7 in r30, 0x3d ; 61 1c86: fe b7 in r31, 0x3e ; 62 1c88: 3a 97 sbiw r30, 0x0a ; 10 1c8a: 0f b6 in r0, 0x3f ; 63 1c8c: f8 94 cli 1c8e: fe bf out 0x3e, r31 ; 62 1c90: 0f be out 0x3f, r0 ; 63 1c92: ed bf out 0x3d, r30 ; 61 1c94: 31 96 adiw r30, 0x01 ; 1 1c96: ce 01 movw r24, r28 1c98: 86 96 adiw r24, 0x26 ; 38 1c9a: ad b7 in r26, 0x3d ; 61 1c9c: be b7 in r27, 0x3e ; 62 1c9e: 12 96 adiw r26, 0x02 ; 2 1ca0: 9c 93 st X, r25 1ca2: 8e 93 st -X, r24 1ca4: 11 97 sbiw r26, 0x01 ; 1 1ca6: 89 e0 ldi r24, 0x09 ; 9 1ca8: 90 e0 ldi r25, 0x00 ; 0 1caa: 93 83 std Z+3, r25 ; 0x03 1cac: 82 83 std Z+2, r24 ; 0x02 1cae: 88 e8 ldi r24, 0x88 ; 136 1cb0: 92 e0 ldi r25, 0x02 ; 2 1cb2: 95 83 std Z+5, r25 ; 0x05 1cb4: 84 83 std Z+4, r24 ; 0x04 1cb6: 37 83 std Z+7, r19 ; 0x07 1cb8: 26 83 std Z+6, r18 ; 0x06 1cba: ca 01 movw r24, r20 1cbc: 57 ff sbrs r21, 7 1cbe: 03 c0 rjmp .+6 ; 0x1cc6 1cc0: 90 95 com r25 1cc2: 81 95 neg r24 1cc4: 9f 4f sbci r25, 0xFF ; 255 1cc6: 66 e0 ldi r22, 0x06 ; 6 1cc8: 70 e0 ldi r23, 0x00 ; 0 1cca: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 1cce: 71 87 std Z+9, r23 ; 0x09 1cd0: 60 87 std Z+8, r22 ; 0x08 1cd2: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1cd6: ed b7 in r30, 0x3d ; 61 1cd8: fe b7 in r31, 0x3e ; 62 1cda: 3a 96 adiw r30, 0x0a ; 10 1cdc: 1b c0 rjmp .+54 ; 0x1d14 1cde: 00 d0 rcall .+0 ; 0x1ce0 1ce0: 00 d0 rcall .+0 ; 0x1ce2 1ce2: 00 d0 rcall .+0 ; 0x1ce4 1ce4: ed b7 in r30, 0x3d ; 61 1ce6: fe b7 in r31, 0x3e ; 62 1ce8: 31 96 adiw r30, 0x01 ; 1 1cea: ce 01 movw r24, r28 1cec: 86 96 adiw r24, 0x26 ; 38 1cee: ad b7 in r26, 0x3d ; 61 1cf0: be b7 in r27, 0x3e ; 62 1cf2: 12 96 adiw r26, 0x02 ; 2 1cf4: 9c 93 st X, r25 1cf6: 8e 93 st -X, r24 1cf8: 11 97 sbiw r26, 0x01 ; 1 1cfa: 89 e0 ldi r24, 0x09 ; 9 1cfc: 90 e0 ldi r25, 0x00 ; 0 1cfe: 93 83 std Z+3, r25 ; 0x03 1d00: 82 83 std Z+2, r24 ; 0x02 1d02: 80 e9 ldi r24, 0x90 ; 144 1d04: 92 e0 ldi r25, 0x02 ; 2 1d06: 95 83 std Z+5, r25 ; 0x05 1d08: 84 83 std Z+4, r24 ; 0x04 1d0a: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1d0e: ed b7 in r30, 0x3d ; 61 1d10: fe b7 in r31, 0x3e ; 62 1d12: 36 96 adiw r30, 0x06 ; 6 1d14: 0f b6 in r0, 0x3f ; 63 1d16: f8 94 cli 1d18: fe bf out 0x3e, r31 ; 62 1d1a: 0f be out 0x3f, r0 ; 63 1d1c: ed bf out 0x3d, r30 ; 61 1d1e: 80 91 47 03 lds r24, 0x0347 1d22: 90 91 48 03 lds r25, 0x0348 1d26: 00 97 sbiw r24, 0x00 ; 0 1d28: d1 f1 breq .+116 ; 0x1d9e 1d2a: ac 01 movw r20, r24 1d2c: 40 5f subi r20, 0xF0 ; 240 1d2e: 55 40 sbci r21, 0x05 ; 5 1d30: 57 fd sbrc r21, 7 1d32: 03 c0 rjmp .+6 ; 0x1d3a 1d34: 2b e2 ldi r18, 0x2B ; 43 1d36: 30 e0 ldi r19, 0x00 ; 0 1d38: 02 c0 rjmp .+4 ; 0x1d3e 1d3a: 2d e2 ldi r18, 0x2D ; 45 1d3c: 30 e0 ldi r19, 0x00 ; 0 1d3e: 6d b7 in r22, 0x3d ; 61 1d40: 7e b7 in r23, 0x3e ; 62 1d42: 6a 50 subi r22, 0x0A ; 10 1d44: 70 40 sbci r23, 0x00 ; 0 1d46: 0f b6 in r0, 0x3f ; 63 1d48: f8 94 cli 1d4a: 7e bf out 0x3e, r23 ; 62 1d4c: 0f be out 0x3f, r0 ; 63 1d4e: 6d bf out 0x3d, r22 ; 61 1d50: ed b7 in r30, 0x3d ; 61 1d52: fe b7 in r31, 0x3e ; 62 1d54: 31 96 adiw r30, 0x01 ; 1 1d56: ce 01 movw r24, r28 1d58: 8b 96 adiw r24, 0x2b ; 43 1d5a: ad b7 in r26, 0x3d ; 61 1d5c: be b7 in r27, 0x3e ; 62 1d5e: 12 96 adiw r26, 0x02 ; 2 1d60: 9c 93 st X, r25 1d62: 8e 93 st -X, r24 1d64: 11 97 sbiw r26, 0x01 ; 1 1d66: 85 e0 ldi r24, 0x05 ; 5 1d68: 90 e0 ldi r25, 0x00 ; 0 1d6a: 93 83 std Z+3, r25 ; 0x03 1d6c: 82 83 std Z+2, r24 ; 0x02 1d6e: 86 e9 ldi r24, 0x96 ; 150 1d70: 92 e0 ldi r25, 0x02 ; 2 1d72: 95 83 std Z+5, r25 ; 0x05 1d74: 84 83 std Z+4, r24 ; 0x04 1d76: 37 83 std Z+7, r19 ; 0x07 1d78: 26 83 std Z+6, r18 ; 0x06 1d7a: ca 01 movw r24, r20 1d7c: 57 ff sbrs r21, 7 1d7e: 03 c0 rjmp .+6 ; 0x1d86 1d80: 90 95 com r25 1d82: 81 95 neg r24 1d84: 9f 4f sbci r25, 0xFF ; 255 1d86: 66 e0 ldi r22, 0x06 ; 6 1d88: 70 e0 ldi r23, 0x00 ; 0 1d8a: 0e 94 d4 1a call 0x35a8 ; 0x35a8 <__divmodhi4> 1d8e: 71 87 std Z+9, r23 ; 0x09 1d90: 60 87 std Z+8, r22 ; 0x08 1d92: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1d96: ed b7 in r30, 0x3d ; 61 1d98: fe b7 in r31, 0x3e ; 62 1d9a: 3a 96 adiw r30, 0x0a ; 10 1d9c: a4 ce rjmp .-696 ; 0x1ae6 1d9e: 00 d0 rcall .+0 ; 0x1da0 1da0: 00 d0 rcall .+0 ; 0x1da2 1da2: 00 d0 rcall .+0 ; 0x1da4 1da4: ed b7 in r30, 0x3d ; 61 1da6: fe b7 in r31, 0x3e ; 62 1da8: 31 96 adiw r30, 0x01 ; 1 1daa: ce 01 movw r24, r28 1dac: 8b 96 adiw r24, 0x2b ; 43 1dae: ad b7 in r26, 0x3d ; 61 1db0: be b7 in r27, 0x3e ; 62 1db2: 12 96 adiw r26, 0x02 ; 2 1db4: 9c 93 st X, r25 1db6: 8e 93 st -X, r24 1db8: 11 97 sbiw r26, 0x01 ; 1 1dba: 85 e0 ldi r24, 0x05 ; 5 1dbc: 90 e0 ldi r25, 0x00 ; 0 1dbe: 93 83 std Z+3, r25 ; 0x03 1dc0: 82 83 std Z+2, r24 ; 0x02 1dc2: 8d e9 ldi r24, 0x9D ; 157 1dc4: 92 e0 ldi r25, 0x02 ; 2 1dc6: 88 ce rjmp .-752 ; 0x1ad8 1dc8: 60 91 5b 03 lds r22, 0x035B 1dcc: 70 91 5c 03 lds r23, 0x035C 1dd0: 80 91 5d 03 lds r24, 0x035D 1dd4: 90 91 5e 03 lds r25, 0x035E 1dd8: a8 01 movw r20, r16 1dda: 97 01 movw r18, r14 1ddc: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1de0: 69 30 cpi r22, 0x09 ; 9 1de2: 71 05 cpc r23, r1 1de4: 81 05 cpc r24, r1 1de6: 91 05 cpc r25, r1 1de8: 24 f1 brlt .+72 ; 0x1e32 1dea: 60 91 5b 03 lds r22, 0x035B 1dee: 70 91 5c 03 lds r23, 0x035C 1df2: 80 91 5d 03 lds r24, 0x035D 1df6: 90 91 5e 03 lds r25, 0x035E 1dfa: a8 01 movw r20, r16 1dfc: 97 01 movw r18, r14 1dfe: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1e02: 6b 30 cpi r22, 0x0B ; 11 1e04: 71 05 cpc r23, r1 1e06: 81 05 cpc r24, r1 1e08: 91 05 cpc r25, r1 1e0a: 9c f4 brge .+38 ; 0x1e32 1e0c: 00 d0 rcall .+0 ; 0x1e0e 1e0e: 00 d0 rcall .+0 ; 0x1e10 1e10: 00 d0 rcall .+0 ; 0x1e12 1e12: ed b7 in r30, 0x3d ; 61 1e14: fe b7 in r31, 0x3e ; 62 1e16: 31 96 adiw r30, 0x01 ; 1 1e18: ad b7 in r26, 0x3d ; 61 1e1a: be b7 in r27, 0x3e ; 62 1e1c: 12 96 adiw r26, 0x02 ; 2 1e1e: 9c 92 st X, r9 1e20: 8e 92 st -X, r8 1e22: 11 97 sbiw r26, 0x01 ; 1 1e24: 81 e1 ldi r24, 0x11 ; 17 1e26: 90 e0 ldi r25, 0x00 ; 0 1e28: 93 83 std Z+3, r25 ; 0x03 1e2a: 82 83 std Z+2, r24 ; 0x02 1e2c: 22 ea ldi r18, 0xA2 ; 162 1e2e: 32 e0 ldi r19, 0x02 ; 2 1e30: 34 c0 rjmp .+104 ; 0x1e9a 1e32: 60 91 5b 03 lds r22, 0x035B 1e36: 70 91 5c 03 lds r23, 0x035C 1e3a: 80 91 5d 03 lds r24, 0x035D 1e3e: 90 91 5e 03 lds r25, 0x035E 1e42: a8 01 movw r20, r16 1e44: 97 01 movw r18, r14 1e46: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1e4a: 6b 30 cpi r22, 0x0B ; 11 1e4c: 71 05 cpc r23, r1 1e4e: 81 05 cpc r24, r1 1e50: 91 05 cpc r25, r1 1e52: 84 f1 brlt .+96 ; 0x1eb4 1e54: 60 91 5b 03 lds r22, 0x035B 1e58: 70 91 5c 03 lds r23, 0x035C 1e5c: 80 91 5d 03 lds r24, 0x035D 1e60: 90 91 5e 03 lds r25, 0x035E 1e64: a8 01 movw r20, r16 1e66: 97 01 movw r18, r14 1e68: 0e 94 e7 1a call 0x35ce ; 0x35ce <__divmodsi4> 1e6c: 6d 30 cpi r22, 0x0D ; 13 1e6e: 71 05 cpc r23, r1 1e70: 81 05 cpc r24, r1 1e72: 91 05 cpc r25, r1 1e74: fc f4 brge .+62 ; 0x1eb4 1e76: 00 d0 rcall .+0 ; 0x1e78 1e78: 00 d0 rcall .+0 ; 0x1e7a 1e7a: 00 d0 rcall .+0 ; 0x1e7c 1e7c: ed b7 in r30, 0x3d ; 61 1e7e: fe b7 in r31, 0x3e ; 62 1e80: 31 96 adiw r30, 0x01 ; 1 1e82: ad b7 in r26, 0x3d ; 61 1e84: be b7 in r27, 0x3e ; 62 1e86: 12 96 adiw r26, 0x02 ; 2 1e88: 9c 92 st X, r9 1e8a: 8e 92 st -X, r8 1e8c: 11 97 sbiw r26, 0x01 ; 1 1e8e: 81 e1 ldi r24, 0x11 ; 17 1e90: 90 e0 ldi r25, 0x00 ; 0 1e92: 93 83 std Z+3, r25 ; 0x03 1e94: 82 83 std Z+2, r24 ; 0x02 1e96: 23 eb ldi r18, 0xB3 ; 179 1e98: 32 e0 ldi r19, 0x02 ; 2 1e9a: 35 83 std Z+5, r19 ; 0x05 1e9c: 24 83 std Z+4, r18 ; 0x04 1e9e: 0e 94 a8 15 call 0x2b50 ; 0x2b50 1ea2: 6d b7 in r22, 0x3d ; 61 1ea4: 7e b7 in r23, 0x3e ; 62 1ea6: 6a 5f subi r22, 0xFA ; 250 1ea8: 7f 4f sbci r23, 0xFF ; 255 1eaa: 0f b6 in r0, 0x3f ; 63 1eac: f8 94 cli 1eae: 7e bf out 0x3e, r23 ; 62 1eb0: 0f be out 0x3f, r0 ; 63 1eb2: 6d bf out 0x3d, r22 ; 61 1eb4: f4 01 movw r30, r8 1eb6: 01 90 ld r0, Z+ 1eb8: 00 20 and r0, r0 1eba: e9 f7 brne .-6 ; 0x1eb6 1ebc: 31 97 sbiw r30, 0x01 ; 1 1ebe: e8 19 sub r30, r8 1ec0: 84 01 movw r16, r8 1ec2: 74 01 movw r14, r8 1ec4: ee 0e add r14, r30 1ec6: f1 1c adc r15, r1 1ec8: 05 c0 rjmp .+10 ; 0x1ed4 1eca: d8 01 movw r26, r16 1ecc: 8d 91 ld r24, X+ 1ece: 8d 01 movw r16, r26 1ed0: 0e 94 b1 04 call 0x962 ; 0x962 1ed4: 0e 15 cp r16, r14 1ed6: 1f 05 cpc r17, r15 1ed8: c1 f7 brne .-16 ; 0x1eca 1eda: 80 ec ldi r24, 0xC0 ; 192 1edc: 0e 94 d9 04 call 0x9b2 ; 0x9b2 1ee0: 80 ec ldi r24, 0xC0 ; 192 1ee2: 0e 94 d9 04 call 0x9b2 ; 0x9b2 1ee6: 05 e6 ldi r16, 0x65 ; 101 1ee8: 13 e0 ldi r17, 0x03 ; 3 1eea: 05 c0 rjmp .+10 ; 0x1ef6 1eec: f8 01 movw r30, r16 1eee: 81 91 ld r24, Z+ 1ef0: 8f 01 movw r16, r30 1ef2: 0e 94 b1 04 call 0x962 ; 0x962 1ef6: f3 e0 ldi r31, 0x03 ; 3 1ef8: 05 37 cpi r16, 0x75 ; 117 1efa: 1f 07 cpc r17, r31 1efc: b9 f7 brne .-18 ; 0x1eec 1efe: 80 91 15 03 lds r24, 0x0315 1f02: 83 ff sbrs r24, 3 1f04: 09 c0 rjmp .+18 ; 0x1f18 1f06: 80 91 15 03 lds r24, 0x0315 1f0a: 87 7f andi r24, 0xF7 ; 247 1f0c: 80 93 15 03 sts 0x0315, r24 1f10: 42 98 cbi 0x08, 2 ; 8 1f12: 02 c0 rjmp .+4 ; 0x1f18 1f14: 0e 94 a1 00 call 0x142 ; 0x142 1f18: 80 91 f2 02 lds r24, 0x02F2 1f1c: 88 23 and r24, r24 1f1e: 09 f4 brne .+2 ; 0x1f22 1f20: 24 c2 rjmp .+1096 ; 0x236a 1f22: 80 91 b0 03 lds r24, 0x03B0 1f26: 84 32 cpi r24, 0x24 ; 36 1f28: a9 f7 brne .-22 ; 0x1f14 1f2a: 1f c2 rjmp .+1086 ; 0x236a } eeprom_buf_size--; } } } 1f2c: de 01 movw r26, r28 1f2e: 53 96 adiw r26, 0x13 ; 19 1f30: e3 ee ldi r30, 0xE3 ; 227 1f32: f2 e0 ldi r31, 0x02 ; 2 1f34: 8b e0 ldi r24, 0x0B ; 11 1f36: 01 90 ld r0, Z+ 1f38: 0d 92 st X+, r0 1f3a: 81 50 subi r24, 0x01 ; 1 1f3c: e1 f7 brne .-8 ; 0x1f36 1f3e: 1e 8e std Y+30, r1 ; 0x1e void eeprom_write8(uint16_t addr, uint8_t data) { while(eeprom_buf_size >= EEPROM_BUF_LEN); 1f40: 91 32 cpi r25, 0x21 ; 33 1f42: 08 f0 brcs .+2 ; 0x1f46 1f44: 53 c0 rjmp .+166 ; 0x1fec cli(); eeprom_buf[eeprom_buf_size*3 + 0] = addr >> 8; eeprom_buf[eeprom_buf_size*3 + 1] = addr & 0xff; 1f46: 99 23 and r25, r25 1f48: 09 f4 brne .+2 ; 0x1f4c 1f4a: d6 c1 rjmp .+940 ; 0x22f8 eeprom_buf[eeprom_buf_size*3 + 2] = data; eeprom_buf_size++; 1f4c: 97 30 cpi r25, 0x07 ; 7 1f4e: 10 f4 brcc .+4 ; 0x1f54 1f50: 81 e0 ldi r24, 0x01 ; 1 1f52: 4c c0 rjmp .+152 ; 0x1fec sei(); deep_sleep_block |= DEEP_SLEEP_BLOCK_EEPROM; EECR |= (1< 1f5e: e0 e3 ldi r30, 0x30 ; 48 1f60: f0 e0 ldi r31, 0x00 ; 0 1f62: ec 0f add r30, r28 1f64: fd 1f adc r31, r29 1f66: e1 0f add r30, r17 1f68: f1 1d adc r31, r1 1f6a: 80 83 st Z, r24 1f6c: 1f 5f subi r17, 0xFF ; 255 1f6e: 01 17 cp r16, r17 1f70: a0 f7 brcc .-24 ; 0x1f5a eeprom_write8(addr+0, (data >> 8) & 0xff); eeprom_write8(addr+1, data & 0xff); 1f72: 88 a9 ldd r24, Y+48 ; 0x30 1f74: 84 32 cpi r24, 0x24 ; 36 1f76: 11 f0 breq .+4 ; 0x1f7c 1f78: 82 e0 ldi r24, 0x02 ; 2 1f7a: 38 c0 rjmp .+112 ; 0x1fec } void eeprom_write32(uint16_t addr, uint32_t data) { eeprom_write8(addr+0, (data >> 24) & 0xff); 1f7c: 89 a9 ldd r24, Y+49 ; 0x31 1f7e: 8b 34 cpi r24, 0x4B ; 75 1f80: 09 f0 breq .+2 ; 0x1f84 1f82: ba c1 rjmp .+884 ; 0x22f8 1f84: 8a a9 ldd r24, Y+50 ; 0x32 1f86: 83 34 cpi r24, 0x43 ; 67 1f88: 09 f0 breq .+2 ; 0x1f8c 1f8a: b6 c1 rjmp .+876 ; 0x22f8 eeprom_write8(addr+1, (data >> 16) & 0xff); eeprom_write8(addr+2, (data >> 8) & 0xff); eeprom_write8(addr+3, (data >> 0) & 0xff); } uint8_t eeprom_read8(uint16_t addr) 1f8c: 10 e0 ldi r17, 0x00 ; 0 1f8e: e0 e3 ldi r30, 0x30 ; 48 1f90: f0 e0 ldi r31, 0x00 ; 0 1f92: ec 0f add r30, r28 1f94: fd 1f adc r31, r29 1f96: e0 0f add r30, r16 1f98: f1 1f adc r31, r17 1f9a: 32 97 sbiw r30, 0x02 ; 2 1f9c: 80 81 ld r24, Z 1f9e: 8a 32 cpi r24, 0x2A ; 42 1fa0: 11 f0 breq .+4 ; 0x1fa6 1fa2: 83 e0 ldi r24, 0x03 ; 3 1fa4: 23 c0 rjmp .+70 ; 0x1fec { uint8_t tmp; eeprom_read_waiting = 1; while(EECR & (1< 1fba: 38 2f mov r19, r24 1fbc: 91 e0 ldi r25, 0x01 ; 1 1fbe: 20 e0 ldi r18, 0x00 ; 0 EECR |= (1< eeprom_read_waiting = 0; 1fc8: 60 e3 ldi r22, 0x30 ; 48 1fca: 70 e0 ldi r23, 0x00 ; 0 1fcc: 6c 0f add r22, r28 1fce: 7d 1f adc r23, r29 1fd0: e6 0f add r30, r22 1fd2: f7 1f adc r31, r23 1fd4: 80 81 ld r24, Z 1fd6: 28 27 eor r18, r24 uint8_t tmp; eeprom_read_waiting = 1; while(EECR & (1< eeprom_read_waiting = 0; EECR |= (1< 1fe8: 1e c3 rjmp .+1596 ; 0x2626 1fea: 84 e0 ldi r24, 0x04 ; 4 return ((uint16_t)eeprom_read8(addr+0) << 8) | ((uint16_t)eeprom_read8(addr+1)); } uint32_t eeprom_read32(uint16_t addr) { uint32_t tmp; 1fec: 80 5d subi r24, 0xD0 ; 208 1fee: 8c 8f std Y+28, r24 ; 0x1c tmp = (uint32_t)eeprom_read8(addr+0) << 24; 1ff0: 1d 8e std Y+29, r1 ; 0x1d tmp |= (uint32_t)eeprom_read8(addr+1) << 16; 1ff2: ce 01 movw r24, r28 1ff4: 43 96 adiw r24, 0x13 ; 19 1ff6: 7e c1 rjmp .+764 ; 0x22f4 1ff8: 8c a9 ldd r24, Y+52 ; 0x34 1ffa: 82 35 cpi r24, 0x52 ; 82 1ffc: 09 f0 breq .+2 ; 0x2000 1ffe: 78 c1 rjmp .+752 ; 0x22f0 2000: 8d a9 ldd r24, Y+53 ; 0x35 2002: 81 34 cpi r24, 0x41 ; 65 2004: 09 f0 breq .+2 ; 0x2008 2006: 74 c1 rjmp .+744 ; 0x22f0 2008: f8 94 cli 200a: af a9 ldd r26, Y+55 ; 0x37 200c: a0 53 subi r26, 0x30 ; 48 200e: b0 e0 ldi r27, 0x00 ; 0 2010: fd 01 movw r30, r26 2012: ee 0f add r30, r30 2014: ff 1f adc r31, r31 2016: ea 5e subi r30, 0xEA ; 234 2018: fc 4f sbci r31, 0xFC ; 252 201a: 00 81 ld r16, Z 201c: 11 81 ldd r17, Z+1 ; 0x01 201e: a7 5d subi r26, 0xD7 ; 215 2020: bc 4f sbci r27, 0xFC ; 252 2022: 8c 91 ld r24, X 2024: 78 94 sei 2026: c8 ae std Y+56, r12 ; 0x38 2028: be 01 movw r22, r28 202a: 67 5c subi r22, 0xC7 ; 199 202c: 7f 4f sbci r23, 0xFF ; 255 202e: 0e 94 8a 00 call 0x114 ; 0x114 2032: cb ae std Y+59, r12 ; 0x3b 2034: 81 2f mov r24, r17 2036: be 01 movw r22, r28 2038: 64 5c subi r22, 0xC4 ; 196 203a: 7f 4f sbci r23, 0xFF ; 255 203c: 0e 94 8a 00 call 0x114 ; 0x114 2040: 80 2f mov r24, r16 2042: be 01 movw r22, r28 2044: 62 5c subi r22, 0xC2 ; 194 2046: 7f 4f sbci r23, 0xFF ; 255 2048: 0e 94 8a 00 call 0x114 ; 0x114 204c: 21 96 adiw r28, 0x01 ; 1 204e: 1f ae std Y+63, r1 ; 0x3f 2050: 21 97 sbiw r28, 0x01 ; 1 2052: 42 c1 rjmp .+644 ; 0x22d8 2054: 83 35 cpi r24, 0x53 ; 83 2056: 09 f0 breq .+2 ; 0x205a 2058: 6c c0 rjmp .+216 ; 0x2132 205a: 8c a9 ldd r24, Y+52 ; 0x34 205c: 8b 34 cpi r24, 0x4B ; 75 205e: 09 f0 breq .+2 ; 0x2062 2060: 8b c0 rjmp .+278 ; 0x2178 2062: 8d a9 ldd r24, Y+53 ; 0x35 2064: 86 34 cpi r24, 0x46 ; 70 2066: 89 f5 brne .+98 ; 0x20ca 2068: c7 01 movw r24, r14 206a: 0e 94 82 15 call 0x2b04 ; 0x2b04 206e: 9c 01 movw r18, r24 2070: 44 27 eor r20, r20 2072: 37 fd sbrc r19, 7 2074: 40 95 com r20 2076: 54 2f mov r21, r20 2078: 12 16 cp r1, r18 207a: 13 06 cpc r1, r19 207c: 14 06 cpc r1, r20 207e: 15 06 cpc r1, r21 2080: 4c f0 brlt .+18 ; 0x2094 2082: 10 92 76 03 sts 0x0376, r1 2086: 10 92 77 03 sts 0x0377, r1 208a: 10 92 78 03 sts 0x0378, r1 208e: 10 92 79 03 sts 0x0379, r1 2092: 32 c1 rjmp .+612 ; 0x22f8 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 2094: 80 91 5b 03 lds r24, 0x035B 2098: 90 91 5c 03 lds r25, 0x035C 209c: a0 91 5d 03 lds r26, 0x035D 20a0: b0 91 5e 03 lds r27, 0x035E 20a4: 82 0f add r24, r18 20a6: 93 1f adc r25, r19 20a8: a4 1f adc r26, r20 20aa: b5 1f adc r27, r21 20ac: 80 93 76 03 sts 0x0376, r24 20b0: 90 93 77 03 sts 0x0377, r25 20b4: a0 93 78 03 sts 0x0378, r26 20b8: b0 93 79 03 sts 0x0379, r27 20bc: 00 97 sbiw r24, 0x00 ; 0 20be: a1 05 cpc r26, r1 20c0: b1 05 cpc r27, r1 20c2: 09 f4 brne .+2 ; 0x20c6 20c4: 19 c1 rjmp .+562 ; 0x22f8 #include #include volatile uint8_t device_locks = 0; void get_device_lock(uint8_t which) 20c6: 45 9a sbi 0x08, 5 ; 8 20c8: 17 c1 rjmp .+558 ; 0x22f8 20ca: 80 35 cpi r24, 0x50 ; 80 20cc: 09 f0 breq .+2 ; 0x20d0 20ce: 10 c1 rjmp .+544 ; 0x22f0 20d0: c7 01 movw r24, r14 20d2: 0e 94 82 15 call 0x2b04 ; 0x2b04 20d6: 9c 01 movw r18, r24 20d8: 44 27 eor r20, r20 20da: 37 fd sbrc r19, 7 20dc: 40 95 com r20 20de: 54 2f mov r21, r20 20e0: 12 16 cp r1, r18 20e2: 13 06 cpc r1, r19 20e4: 14 06 cpc r1, r20 20e6: 15 06 cpc r1, r21 20e8: 4c f0 brlt .+18 ; 0x20fc 20ea: 10 92 7a 03 sts 0x037A, r1 20ee: 10 92 7b 03 sts 0x037B, r1 20f2: 10 92 7c 03 sts 0x037C, r1 20f6: 10 92 7d 03 sts 0x037D, r1 20fa: fe c0 rjmp .+508 ; 0x22f8 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 20fc: 80 91 5b 03 lds r24, 0x035B 2100: 90 91 5c 03 lds r25, 0x035C 2104: a0 91 5d 03 lds r26, 0x035D 2108: b0 91 5e 03 lds r27, 0x035E 210c: 82 0f add r24, r18 210e: 93 1f adc r25, r19 2110: a4 1f adc r26, r20 2112: b5 1f adc r27, r21 2114: 80 93 7a 03 sts 0x037A, r24 2118: 90 93 7b 03 sts 0x037B, r25 211c: a0 93 7c 03 sts 0x037C, r26 2120: b0 93 7d 03 sts 0x037D, r27 2124: 00 97 sbiw r24, 0x00 ; 0 2126: a1 05 cpc r26, r1 2128: b1 05 cpc r27, r1 212a: 09 f4 brne .+2 ; 0x212e 212c: e5 c0 rjmp .+458 ; 0x22f8 volatile uint8_t device_locks = 0; void get_device_lock(uint8_t which) { uint8_t acquired = 0; 212e: 44 9a sbi 0x08, 4 ; 8 2130: e3 c0 rjmp .+454 ; 0x22f8 2132: 87 35 cpi r24, 0x57 ; 87 2134: 09 f0 breq .+2 ; 0x2138 2136: 8c c0 rjmp .+280 ; 0x2250 2138: 8c a9 ldd r24, Y+52 ; 0x34 213a: 84 34 cpi r24, 0x44 ; 68 213c: 09 f0 breq .+2 ; 0x2140 213e: d8 c0 rjmp .+432 ; 0x22f0 2140: 8d a9 ldd r24, Y+53 ; 0x35 2142: 88 34 cpi r24, 0x48 ; 72 2144: 49 f4 brne .+18 ; 0x2158 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 2146: 80 91 5b 03 lds r24, 0x035B 214a: 90 91 5c 03 lds r25, 0x035C 214e: a0 91 5d 03 lds r26, 0x035D 2152: b0 91 5e 03 lds r27, 0x035E 2156: 07 c0 rjmp .+14 ; 0x2166 2158: 84 34 cpi r24, 0x44 ; 68 215a: 09 f0 breq .+2 ; 0x215e 215c: c9 c0 rjmp .+402 ; 0x22f0 215e: 8f ef ldi r24, 0xFF ; 255 2160: 9f ef ldi r25, 0xFF ; 255 2162: af ef ldi r26, 0xFF ; 255 2164: bf ef ldi r27, 0xFF ; 255 2166: 80 93 57 03 sts 0x0357, r24 216a: 90 93 58 03 sts 0x0358, r25 216e: a0 93 59 03 sts 0x0359, r26 2172: b0 93 5a 03 sts 0x035A, r27 2176: c0 c0 rjmp .+384 ; 0x22f8 2178: 83 35 cpi r24, 0x53 ; 83 217a: 09 f0 breq .+2 ; 0x217e 217c: b9 c0 rjmp .+370 ; 0x22f0 217e: 8d a9 ldd r24, Y+53 ; 0x35 2180: 80 35 cpi r24, 0x50 ; 80 2182: 09 f0 breq .+2 ; 0x2186 2184: b5 c0 rjmp .+362 ; 0x22f0 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 2186: 80 91 5b 03 lds r24, 0x035B 218a: 90 91 5c 03 lds r25, 0x035C 218e: a0 91 5d 03 lds r26, 0x035D 2192: b0 91 5e 03 lds r27, 0x035E 2196: 80 93 53 03 sts 0x0353, r24 219a: 90 93 54 03 sts 0x0354, r25 219e: a0 93 55 03 sts 0x0355, r26 21a2: b0 93 56 03 sts 0x0356, r27 21a6: c7 01 movw r24, r14 21a8: 0e 94 5e 06 call 0xcbc ; 0xcbc 21ac: 18 2f mov r17, r24 21ae: ce 01 movw r24, r28 21b0: c9 96 adiw r24, 0x39 ; 57 21b2: 0e 94 5e 06 call 0xcbc ; 0xcbc 21b6: cf 55 subi r28, 0x5F ; 95 21b8: df 4f sbci r29, 0xFF ; 255 21ba: 18 83 st Y, r17 21bc: c1 5a subi r28, 0xA1 ; 161 21be: d0 40 sbci r29, 0x00 ; 0 21c0: c0 56 subi r28, 0x60 ; 96 21c2: df 4f sbci r29, 0xFF ; 255 21c4: 18 82 st Y, r1 21c6: c0 5a subi r28, 0xA0 ; 160 21c8: d0 40 sbci r29, 0x00 ; 0 21ca: 90 e0 ldi r25, 0x00 ; 0 21cc: c0 56 subi r28, 0x60 ; 96 21ce: df 4f sbci r29, 0xFF ; 255 21d0: a8 81 ld r26, Y 21d2: b9 81 ldd r27, Y+1 ; 0x01 21d4: c0 5a subi r28, 0xA0 ; 160 21d6: d0 40 sbci r29, 0x00 ; 0 21d8: 8a 2b or r24, r26 21da: 9b 2b or r25, r27 21dc: 90 93 4e 03 sts 0x034E, r25 21e0: 80 93 4d 03 sts 0x034D, r24 21e4: ce 01 movw r24, r28 21e6: cc 96 adiw r24, 0x3c ; 60 21e8: 0e 94 5e 06 call 0xcbc ; 0xcbc 21ec: 18 2f mov r17, r24 21ee: ce 01 movw r24, r28 21f0: ce 96 adiw r24, 0x3e ; 62 21f2: 0e 94 5e 06 call 0xcbc ; 0xcbc 21f6: cd 55 subi r28, 0x5D ; 93 21f8: df 4f sbci r29, 0xFF ; 255 21fa: 18 83 st Y, r17 21fc: c3 5a subi r28, 0xA3 ; 163 21fe: d0 40 sbci r29, 0x00 ; 0 2200: ce 55 subi r28, 0x5E ; 94 2202: df 4f sbci r29, 0xFF ; 255 2204: 18 82 st Y, r1 2206: c2 5a subi r28, 0xA2 ; 162 2208: d0 40 sbci r29, 0x00 ; 0 220a: 90 e0 ldi r25, 0x00 ; 0 220c: ce 55 subi r28, 0x5E ; 94 220e: df 4f sbci r29, 0xFF ; 255 2210: e8 81 ld r30, Y 2212: f9 81 ldd r31, Y+1 ; 0x01 2214: c2 5a subi r28, 0xA2 ; 162 2216: d0 40 sbci r29, 0x00 ; 0 2218: 8e 2b or r24, r30 221a: 9f 2b or r25, r31 221c: 90 93 50 03 sts 0x0350, r25 2220: 80 93 4f 03 sts 0x034F, r24 2224: cc 55 subi r28, 0x5C ; 92 2226: df 4f sbci r29, 0xFF ; 255 2228: 88 81 ld r24, Y 222a: 99 81 ldd r25, Y+1 ; 0x01 222c: c4 5a subi r28, 0xA4 ; 164 222e: d0 40 sbci r29, 0x00 ; 0 2230: 0e 94 5e 06 call 0xcbc ; 0xcbc 2234: 18 2f mov r17, r24 2236: c5 01 movw r24, r10 2238: 0e 94 5e 06 call 0xcbc ; 0xcbc 223c: 31 2e mov r3, r17 223e: 22 24 eor r2, r2 2240: 90 e0 ldi r25, 0x00 ; 0 2242: 82 29 or r24, r2 2244: 93 29 or r25, r3 2246: 90 93 52 03 sts 0x0352, r25 224a: 80 93 51 03 sts 0x0351, r24 224e: 54 c0 rjmp .+168 ; 0x22f8 2250: 83 34 cpi r24, 0x43 ; 67 2252: 09 f0 breq .+2 ; 0x2256 2254: 4d c0 rjmp .+154 ; 0x22f0 2256: 8c a9 ldd r24, Y+52 ; 0x34 2258: 83 34 cpi r24, 0x43 ; 67 225a: 51 f5 brne .+84 ; 0x22b0 225c: 8d a9 ldd r24, Y+53 ; 0x35 225e: 98 2f mov r25, r24 2260: 90 53 subi r25, 0x30 ; 48 2262: 81 53 subi r24, 0x31 ; 49 2264: 83 30 cpi r24, 0x03 ; 3 2266: 08 f0 brcs .+2 ; 0x226a 2268: 43 c0 rjmp .+134 ; 0x22f0 226a: 91 30 cpi r25, 0x01 ; 1 226c: 49 f4 brne .+18 ; 0x2280 226e: 80 91 24 03 lds r24, 0x0324 2272: 90 91 25 03 lds r25, 0x0325 2276: 90 93 fd 02 sts 0x02FD, r25 227a: 80 93 fc 02 sts 0x02FC, r24 227e: 15 c0 rjmp .+42 ; 0x22aa 2280: 92 30 cpi r25, 0x02 ; 2 2282: 49 f4 brne .+18 ; 0x2296 2284: 80 91 16 03 lds r24, 0x0316 2288: 90 91 17 03 lds r25, 0x0317 228c: 90 93 01 03 sts 0x0301, r25 2290: 80 93 00 03 sts 0x0300, r24 2294: 0a c0 rjmp .+20 ; 0x22aa 2296: 93 30 cpi r25, 0x03 ; 3 2298: 41 f4 brne .+16 ; 0x22aa 229a: 80 91 18 03 lds r24, 0x0318 229e: 90 91 19 03 lds r25, 0x0319 22a2: 90 93 05 03 sts 0x0305, r25 22a6: 80 93 04 03 sts 0x0304, r24 22aa: 0e 94 b6 01 call 0x36c ; 0x36c 22ae: 24 c0 rjmp .+72 ; 0x22f8 22b0: 86 35 cpi r24, 0x56 ; 86 22b2: a9 f4 brne .+42 ; 0x22de 22b4: 8d a9 ldd r24, Y+53 ; 0x35 22b6: 8e 34 cpi r24, 0x4E ; 78 22b8: d9 f4 brne .+54 ; 0x22f0 22ba: 80 91 22 03 lds r24, 0x0322 22be: 90 91 23 03 lds r25, 0x0323 22c2: 90 93 fb 02 sts 0x02FB, r25 22c6: 80 93 fa 02 sts 0x02FA, r24 22ca: 0e 94 b6 01 call 0x36c ; 0x36c 22ce: ce aa std Y+54, r12 ; 0x36 22d0: df aa std Y+55, r13 ; 0x37 22d2: fb e4 ldi r31, 0x4B ; 75 22d4: f8 af std Y+56, r31 ; 0x38 22d6: 19 ae std Y+57, r1 ; 0x39 22d8: ce 01 movw r24, r28 22da: c3 96 adiw r24, 0x33 ; 51 22dc: 0b c0 rjmp .+22 ; 0x22f4 22de: 82 35 cpi r24, 0x52 ; 82 22e0: 59 f4 brne .+22 ; 0x22f8 22e2: 8d a9 ldd r24, Y+53 ; 0x35 22e4: 81 34 cpi r24, 0x41 ; 65 22e6: 21 f4 brne .+8 ; 0x22f0 22e8: 81 e0 ldi r24, 0x01 ; 1 22ea: 0e 94 8b 05 call 0xb16 ; 0xb16 22ee: 04 c0 rjmp .+8 ; 0x22f8 22f0: 84 ec ldi r24, 0xC4 ; 196 22f2: 92 e0 ldi r25, 0x02 ; 2 22f4: 0e 94 3c 05 call 0xa78 ; 0xa78 22f8: 40 91 f2 02 lds r20, 0x02F2 22fc: 20 e0 ldi r18, 0x00 ; 0 22fe: 30 e0 ldi r19, 0x00 ; 0 2300: 0a c0 rjmp .+20 ; 0x2316 2302: f9 01 movw r30, r18 2304: e0 55 subi r30, 0x50 ; 80 2306: fc 4f sbci r31, 0xFC ; 252 2308: 80 81 ld r24, Z 230a: 2f 5f subi r18, 0xFF ; 255 230c: 3f 4f sbci r19, 0xFF ; 255 230e: 8d 30 cpi r24, 0x0D ; 13 2310: 11 f4 brne .+4 ; 0x2316 2312: 89 2f mov r24, r25 2314: 04 c0 rjmp .+8 ; 0x231e 2316: 92 2f mov r25, r18 2318: 24 17 cp r18, r20 231a: 98 f3 brcs .-26 ; 0x2302 231c: 8f ef ldi r24, 0xFF ; 255 231e: 08 2f mov r16, r24 2320: 0f 5f subi r16, 0xFF ; 255 2322: 10 e0 ldi r17, 0x00 ; 0 2324: 03 c0 rjmp .+6 ; 0x232c 2326: 0e 94 a1 00 call 0x142 ; 0x142 232a: 1f 5f subi r17, 0xFF ; 255 232c: 10 17 cp r17, r16 232e: d8 f3 brcs .-10 ; 0x2326 2330: 40 91 f2 02 lds r20, 0x02F2 2334: 20 e0 ldi r18, 0x00 ; 0 2336: 30 e0 ldi r19, 0x00 ; 0 2338: 0a c0 rjmp .+20 ; 0x234e 233a: f9 01 movw r30, r18 233c: e0 55 subi r30, 0x50 ; 80 233e: fc 4f sbci r31, 0xFC ; 252 2340: 80 81 ld r24, Z 2342: 2f 5f subi r18, 0xFF ; 255 2344: 3f 4f sbci r19, 0xFF ; 255 2346: 8a 30 cpi r24, 0x0A ; 10 2348: 11 f4 brne .+4 ; 0x234e 234a: 89 2f mov r24, r25 234c: 04 c0 rjmp .+8 ; 0x2356 234e: 92 2f mov r25, r18 2350: 24 17 cp r18, r20 2352: 98 f3 brcs .-26 ; 0x233a 2354: 8f ef ldi r24, 0xFF ; 255 2356: 08 2f mov r16, r24 2358: 0f 5f subi r16, 0xFF ; 255 235a: 10 e0 ldi r17, 0x00 ; 0 235c: 03 c0 rjmp .+6 ; 0x2364 235e: 0e 94 a1 00 call 0x142 ; 0x142 2362: 1f 5f subi r17, 0xFF ; 255 2364: 10 17 cp r17, r16 2366: 98 f4 brcc .+38 ; 0x238e 2368: fa cf rjmp .-12 ; 0x235e 236a: ec e2 ldi r30, 0x2C ; 44 236c: ce 2e mov r12, r30 236e: 7f e4 ldi r23, 0x4F ; 79 2370: d7 2e mov r13, r23 2372: 67 e3 ldi r22, 0x37 ; 55 2374: e6 2e mov r14, r22 2376: f1 2c mov r15, r1 2378: ec 0e add r14, r28 237a: fd 1e adc r15, r29 237c: 50 e3 ldi r21, 0x30 ; 48 237e: a5 2e mov r10, r21 2380: b1 2c mov r11, r1 2382: ac 0e add r10, r28 2384: bd 1e adc r11, r29 2386: 23 e1 ldi r18, 0x13 ; 19 2388: 30 e0 ldi r19, 0x00 ; 0 238a: a2 0e add r10, r18 238c: b3 1e adc r11, r19 238e: 40 91 f2 02 lds r20, 0x02F2 2392: 20 e0 ldi r18, 0x00 ; 0 2394: 30 e0 ldi r19, 0x00 ; 0 2396: 0c c0 rjmp .+24 ; 0x23b0 2398: f9 01 movw r30, r18 239a: e0 55 subi r30, 0x50 ; 80 239c: fc 4f sbci r31, 0xFC ; 252 239e: 80 81 ld r24, Z 23a0: 2f 5f subi r18, 0xFF ; 255 23a2: 3f 4f sbci r19, 0xFF ; 255 23a4: 8d 30 cpi r24, 0x0D ; 13 23a6: 21 f4 brne .+8 ; 0x23b0 23a8: 9f 3f cpi r25, 0xFF ; 255 23aa: 09 f0 breq .+2 ; 0x23ae 23ac: bf cd rjmp .-1154 ; 0x1f2c 23ae: 03 c0 rjmp .+6 ; 0x23b6 23b0: 92 2f mov r25, r18 23b2: 24 17 cp r18, r20 23b4: 88 f3 brcs .-30 ; 0x2398 23b6: 80 91 f2 02 lds r24, 0x02F2 23ba: 80 36 cpi r24, 0x60 ; 96 23bc: 41 f4 brne .+16 ; 0x23ce 23be: f8 94 cli 23c0: 10 92 f2 02 sts 0x02F2, r1 23c4: 78 94 sei 23c6: 80 ed ldi r24, 0xD0 ; 208 23c8: 92 e0 ldi r25, 0x02 ; 2 23ca: 0e 94 3c 05 call 0xa78 ; 0xa78 23ce: 32 e3 ldi r19, 0x32 ; 50 23d0: 36 15 cp r19, r6 23d2: f8 f4 brcc .+62 ; 0x2412 uint8_t is_device_locked(uint8_t which) { return device_locks & which ? 1 : 0; } 23d4: 8d e0 ldi r24, 0x0D ; 13 23d6: 80 93 64 03 sts 0x0364, r24 23da: 80 91 47 03 lds r24, 0x0347 23de: 90 91 48 03 lds r25, 0x0348 23e2: 01 97 sbiw r24, 0x01 ; 1 23e4: 87 52 subi r24, 0x27 ; 39 23e6: 95 40 sbci r25, 0x05 ; 5 23e8: 30 f4 brcc .+12 ; 0x23f6 23ea: 88 e2 ldi r24, 0x28 ; 40 23ec: 95 e0 ldi r25, 0x05 ; 5 23ee: 90 93 48 03 sts 0x0348, r25 23f2: 80 93 47 03 sts 0x0347, r24 23f6: 80 91 47 03 lds r24, 0x0347 23fa: 90 91 48 03 lds r25, 0x0348 23fe: 89 5b subi r24, 0xB9 ; 185 2400: 96 40 sbci r25, 0x06 ; 6 2402: 50 f0 brcs .+20 ; 0x2418 2404: 88 eb ldi r24, 0xB8 ; 184 2406: 96 e0 ldi r25, 0x06 ; 6 2408: 90 93 48 03 sts 0x0348, r25 240c: 80 93 47 03 sts 0x0347, r24 2410: 03 c0 rjmp .+6 ; 0x2418 2412: 89 e0 ldi r24, 0x09 ; 9 2414: 80 93 64 03 sts 0x0364, r24 2418: 44 20 and r4, r4 241a: 11 f4 brne .+4 ; 0x2420 241c: 0c 94 bb 07 jmp 0xf76 ; 0xf76 eeprom_buf_size--; } } } void eeprom_write8(uint16_t addr, uint8_t data) 2420: 80 91 f0 02 lds r24, 0x02F0 2424: 82 ff sbrs r24, 2 2426: 04 c0 rjmp .+8 ; 0x2430 2428: 44 24 eor r4, r4 242a: 43 94 inc r4 242c: 0c 94 bb 07 jmp 0xf76 ; 0xf76 2430: 82 e3 ldi r24, 0x32 ; 50 2432: 86 15 cp r24, r6 2434: 78 f4 brcc .+30 ; 0x2454 type eeprom_read_ ## type(uint16_t) __attribute__ ((alias("eeprom_read" # bits))); \ void eeprom_write_##type(uint16_t, type) __attribute__((alias("eeprom_write" # bits))) volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; 2436: 80 91 5b 03 lds r24, 0x035B 243a: 90 91 5c 03 lds r25, 0x035C 243e: a0 91 5d 03 lds r26, 0x035D 2442: b0 91 5e 03 lds r27, 0x035E 2446: 80 fd sbrc r24, 0 2448: 05 c0 rjmp .+10 ; 0x2454 244a: 80 91 46 03 lds r24, 0x0346 244e: 88 7f andi r24, 0xF8 ; 248 2450: 80 93 46 03 sts 0x0346, r24 2454: 19 86 std Y+9, r1 ; 0x09 2456: 80 91 f0 02 lds r24, 0x02F0 245a: 82 fd sbrc r24, 2 245c: fc cf rjmp .-8 ; 0x2456 245e: 80 91 f6 02 lds r24, 0x02F6 2462: 81 30 cpi r24, 0x01 ; 1 2464: b9 f4 brne .+46 ; 0x2494 2466: 90 e0 ldi r25, 0x00 ; 0 2468: 9e 01 movw r18, r28 246a: 27 5f subi r18, 0xF7 ; 247 246c: 3f 4f sbci r19, 0xFF ; 255 246e: 0a c0 rjmp .+20 ; 0x2484 2470: e9 2f mov r30, r25 2472: f0 e0 ldi r31, 0x00 ; 0 2474: df 01 movw r26, r30 2476: ac 5e subi r26, 0xEC ; 236 2478: bb 4f sbci r27, 0xFB ; 251 247a: 8c 91 ld r24, X 247c: e2 0f add r30, r18 247e: f3 1f adc r31, r19 2480: 80 83 st Z, r24 2482: 9f 5f subi r25, 0xFF ; 255 2484: 80 91 12 04 lds r24, 0x0412 2488: 98 17 cp r25, r24 248a: 90 f3 brcs .-28 ; 0x2470 248c: 80 91 12 04 lds r24, 0x0412 2490: 88 23 and r24, r24 2492: 99 f5 brne .+102 ; 0x24fa 2494: 84 e5 ldi r24, 0x54 ; 84 2496: 89 87 std Y+9, r24 ; 0x09 2498: 87 e5 ldi r24, 0x57 ; 87 249a: 8a 87 std Y+10, r24 ; 0x0a 249c: 99 e4 ldi r25, 0x49 ; 73 249e: 9b 87 std Y+11, r25 ; 0x0b 24a0: 8c e2 ldi r24, 0x2C ; 44 24a2: 8c 87 std Y+12, r24 ; 0x0c 24a4: 86 e4 ldi r24, 0x46 ; 70 24a6: 8d 87 std Y+13, r24 ; 0x0d 24a8: 81 e4 ldi r24, 0x41 ; 65 24aa: 8e 87 std Y+14, r24 ; 0x0e 24ac: 9f 87 std Y+15, r25 ; 0x0f 24ae: 8c e4 ldi r24, 0x4C ; 76 24b0: 88 8b std Y+16, r24 ; 0x10 24b2: 19 8a std Y+17, r1 ; 0x11 24b4: ce 01 movw r24, r28 24b6: 09 96 adiw r24, 0x09 ; 9 24b8: 0e 94 3c 05 call 0xa78 ; 0xa78 24bc: 10 92 bc 00 sts 0x00BC, r1 24c0: 80 91 bc 00 lds r24, 0x00BC 24c4: 80 68 ori r24, 0x80 ; 128 24c6: 80 93 bc 00 sts 0x00BC, r24 deep_sleep_block &= ~(DEEP_SLEEP_BLOCK_EEPROM); } else { uint8_t i; EEAR = (eeprom_buf[0] << 8) | eeprom_buf[1]; EEDR = eeprom_buf[2]; EECR |= (1< 24fa: 89 85 ldd r24, Y+9 ; 0x09 24fc: de 01 movw r26, r28 24fe: 19 96 adiw r26, 0x09 ; 9 2500: 81 34 cpi r24, 0x41 ; 65 2502: 51 f5 brne .+84 ; 0x2558 2504: 13 96 adiw r26, 0x03 ; 3 2506: 2d 91 ld r18, X+ 2508: 3c 91 ld r19, X 250a: 14 97 sbiw r26, 0x04 ; 4 250c: 15 96 adiw r26, 0x05 ; 5 250e: ed 91 ld r30, X+ 2510: fc 91 ld r31, X 2512: 16 97 sbiw r26, 0x06 ; 6 2514: 11 96 adiw r26, 0x01 ; 1 2516: 8d 91 ld r24, X+ 2518: 9c 91 ld r25, X 251a: 12 97 sbiw r26, 0x02 ; 2 251c: 64 e1 ldi r22, 0x14 ; 20 251e: 70 e0 ldi r23, 0x00 ; 0 2520: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 2524: 70 93 40 03 sts 0x0340, r23 2528: 60 93 3f 03 sts 0x033F, r22 252c: c9 01 movw r24, r18 252e: 64 e1 ldi r22, 0x14 ; 20 2530: 70 e0 ldi r23, 0x00 ; 0 2532: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 2536: 70 93 42 03 sts 0x0342, r23 253a: 60 93 41 03 sts 0x0341, r22 253e: cf 01 movw r24, r30 2540: 64 e1 ldi r22, 0x14 ; 20 2542: 70 e0 ldi r23, 0x00 ; 0 2544: 0e 94 c0 1a call 0x3580 ; 0x3580 <__udivmodhi4> 2548: 70 93 44 03 sts 0x0344, r23 254c: 60 93 43 03 sts 0x0343, r22 2550: 88 89 ldd r24, Y+16 ; 0x10 2552: 80 93 45 03 sts 0x0345, r24 2556: 06 c0 rjmp .+12 ; 0x2564 2558: 86 e4 ldi r24, 0x46 ; 70 255a: 89 87 std Y+9, r24 ; 0x09 255c: 1a 86 std Y+10, r1 ; 0x0a 255e: cd 01 movw r24, r26 2560: 0e 94 3c 05 call 0xa78 ; 0xa78 2564: 83 e4 ldi r24, 0x43 ; 67 2566: 89 83 std Y+1, r24 ; 0x01 2568: 80 91 47 03 lds r24, 0x0347 256c: 90 91 48 03 lds r25, 0x0348 2570: 9b 83 std Y+3, r25 ; 0x03 2572: 8a 83 std Y+2, r24 ; 0x02 2574: 80 91 49 03 lds r24, 0x0349 2578: 90 91 4a 03 lds r25, 0x034A 257c: 9d 83 std Y+5, r25 ; 0x05 257e: 8c 83 std Y+4, r24 ; 0x04 2580: 80 91 4b 03 lds r24, 0x034B 2584: 90 91 4c 03 lds r25, 0x034C 2588: 9f 83 std Y+7, r25 ; 0x07 258a: 8e 83 std Y+6, r24 ; 0x06 258c: 80 91 46 03 lds r24, 0x0346 2590: 88 87 std Y+8, r24 ; 0x08 volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { 2592: f8 94 cli if(eeprom_read_waiting) { 2594: 80 91 f0 02 lds r24, 0x02F0 2598: 82 ff sbrs r24, 2 259a: 02 c0 rjmp .+4 ; 0x25a0 259c: 80 e0 ldi r24, 0x00 ; 0 259e: 06 c0 rjmp .+12 ; 0x25ac EECR &= ~(1< 25b2: 88 e0 ldi r24, 0x08 ; 8 25b4: 80 93 12 04 sts 0x0412, r24 25b8: 20 e0 ldi r18, 0x00 ; 0 25ba: 30 e0 ldi r19, 0x00 ; 0 25bc: ae 01 movw r20, r28 25be: 4f 5f subi r20, 0xFF ; 255 25c0: 5f 4f sbci r21, 0xFF ; 255 25c2: fa 01 movw r30, r20 25c4: e2 0f add r30, r18 25c6: f3 1f adc r31, r19 25c8: 80 81 ld r24, Z 25ca: f9 01 movw r30, r18 25cc: ec 5e subi r30, 0xEC ; 236 25ce: fb 4f sbci r31, 0xFB ; 251 25d0: 80 83 st Z, r24 25d2: 2f 5f subi r18, 0xFF ; 255 25d4: 3f 4f sbci r19, 0xFF ; 255 25d6: 28 30 cpi r18, 0x08 ; 8 25d8: 31 05 cpc r19, r1 25da: 99 f7 brne .-26 ; 0x25c2 25dc: 8c ec ldi r24, 0xCC ; 204 25de: 80 93 10 04 sts 0x0410, r24 25e2: 81 e0 ldi r24, 0x01 ; 1 25e4: 80 93 f5 02 sts 0x02F5, r24 25e8: 80 91 bc 00 lds r24, 0x00BC 25ec: 80 6a ori r24, 0xA0 ; 160 25ee: 80 93 bc 00 sts 0x00BC, r24 25f2: 80 91 43 03 lds r24, 0x0343 25f6: 90 91 44 03 lds r25, 0x0344 25fa: 8c 51 subi r24, 0x1C ; 28 25fc: 97 40 sbci r25, 0x07 ; 7 25fe: 58 f0 brcs .+22 ; 0x2616 2600: 73 94 inc r7 2602: b2 e2 ldi r27, 0x22 ; 34 2604: b7 15 cp r27, r7 2606: 10 f0 brcs .+4 ; 0x260c 2608: 0c 94 ba 07 jmp 0xf74 ; 0xf74 260c: 44 24 eor r4, r4 260e: 42 e2 ldi r20, 0x22 ; 34 2610: 74 2e mov r7, r20 2612: 0c 94 bb 07 jmp 0xf76 ; 0xf76 2616: ef e0 ldi r30, 0x0F ; 15 2618: e7 15 cp r30, r7 261a: 10 f0 brcs .+4 ; 0x2620 261c: 30 e1 ldi r19, 0x10 ; 16 261e: 73 2e mov r7, r19 2620: 7a 94 dec r7 2622: 0c 94 ba 07 jmp 0xf74 ; 0xf74 2626: 8b a9 ldd r24, Y+51 ; 0x33 2628: 82 35 cpi r24, 0x52 ; 82 262a: 09 f0 breq .+2 ; 0x262e 262c: 13 cd rjmp .-1498 ; 0x2054 262e: e4 cc rjmp .-1592 ; 0x1ff8 00002630 <__vector_25>: volatile uint8_t eeprom_buf[EEPROM_BUF_LEN*3]; volatile uint8_t eeprom_buf_size; volatile uint8_t eeprom_read_waiting; ISR(SIG_EEPROM_READY) { 2630: 1f 92 push r1 2632: 0f 92 push r0 2634: 0f b6 in r0, 0x3f ; 63 2636: 0f 92 push r0 2638: 11 24 eor r1, r1 263a: 2f 93 push r18 263c: 3f 93 push r19 263e: 4f 93 push r20 2640: 8f 93 push r24 2642: 9f 93 push r25 2644: af 93 push r26 2646: bf 93 push r27 2648: ef 93 push r30 264a: ff 93 push r31 if(eeprom_read_waiting) { 264c: 80 91 8f 03 lds r24, 0x038F 2650: 88 23 and r24, r24 2652: 11 f0 breq .+4 ; 0x2658 <__vector_25+0x28> EECR &= ~(1< } else { if(eeprom_buf_size == 0) { 2658: 80 91 8e 03 lds r24, 0x038E 265c: 88 23 and r24, r24 265e: 39 f4 brne .+14 ; 0x266e <__vector_25+0x3e> EECR &= ~(1< } else { uint8_t i; EEAR = (eeprom_buf[0] << 8) | eeprom_buf[1]; 266e: 40 91 7f 03 lds r20, 0x037F 2672: 20 91 80 03 lds r18, 0x0380 2676: 94 2f mov r25, r20 2678: 80 e0 ldi r24, 0x00 ; 0 267a: 30 e0 ldi r19, 0x00 ; 0 267c: 82 2b or r24, r18 267e: 93 2b or r25, r19 2680: 92 bd out 0x22, r25 ; 34 2682: 81 bd out 0x21, r24 ; 33 EEDR = eeprom_buf[2]; 2684: 80 91 81 03 lds r24, 0x0381 2688: 80 bd out 0x20, r24 ; 32 EECR |= (1< 2694: 92 9f mul r25, r18 2696: f0 01 movw r30, r0 2698: 11 24 eor r1, r1 269a: df 01 movw r26, r30 269c: a1 58 subi r26, 0x81 ; 129 269e: bc 4f sbci r27, 0xFC ; 252 26a0: 8c 91 ld r24, X 26a2: df 01 movw r26, r30 26a4: a4 58 subi r26, 0x84 ; 132 26a6: bc 4f sbci r27, 0xFC ; 252 26a8: 8c 93 st X, r24 eeprom_buf[(i-1)*3 + 1] = eeprom_buf[(i*3) + 1]; 26aa: df 01 movw r26, r30 26ac: a0 58 subi r26, 0x80 ; 128 26ae: bc 4f sbci r27, 0xFC ; 252 26b0: 8c 91 ld r24, X 26b2: df 01 movw r26, r30 26b4: a3 58 subi r26, 0x83 ; 131 26b6: bc 4f sbci r27, 0xFC ; 252 26b8: 8c 93 st X, r24 eeprom_buf[(i-1)*3 + 2] = eeprom_buf[(i*3) + 2]; 26ba: df 01 movw r26, r30 26bc: af 57 subi r26, 0x7F ; 127 26be: bc 4f sbci r27, 0xFC ; 252 26c0: 8c 91 ld r24, X 26c2: e2 58 subi r30, 0x82 ; 130 26c4: fc 4f sbci r31, 0xFC ; 252 26c6: 80 83 st Z, r24 uint8_t i; EEAR = (eeprom_buf[0] << 8) | eeprom_buf[1]; EEDR = eeprom_buf[2]; EECR |= (1< eeprom_buf[(i-1)*3 + 0] = eeprom_buf[(i*3) + 0]; eeprom_buf[(i-1)*3 + 1] = eeprom_buf[(i*3) + 1]; eeprom_buf[(i-1)*3 + 2] = eeprom_buf[(i*3) + 2]; } eeprom_buf_size--; 26d2: 80 91 8e 03 lds r24, 0x038E 26d6: 81 50 subi r24, 0x01 ; 1 26d8: 80 93 8e 03 sts 0x038E, r24 } } } 26dc: ff 91 pop r31 26de: ef 91 pop r30 26e0: bf 91 pop r27 26e2: af 91 pop r26 26e4: 9f 91 pop r25 26e6: 8f 91 pop r24 26e8: 4f 91 pop r20 26ea: 3f 91 pop r19 26ec: 2f 91 pop r18 26ee: 0f 90 pop r0 26f0: 0f be out 0x3f, r0 ; 63 26f2: 0f 90 pop r0 26f4: 1f 90 pop r1 26f6: 18 95 reti 000026f8 <__vector_21>: EECR &= ~(1< EEDR = eeprom_buf[2]; 2718: 80 91 c1 00 lds r24, 0x00C1 271c: 8f 7d andi r24, 0xDF ; 223 271e: 80 93 c1 00 sts 0x00C1, r24 2722: 1c c0 rjmp .+56 ; 0x275c <__vector_21+0x64> EECR |= (1< for(i=1; i eeprom_buf[(i-1)*3 + 0] = eeprom_buf[(i*3) + 0]; eeprom_buf[(i-1)*3 + 1] = eeprom_buf[(i*3) + 1]; eeprom_buf[(i-1)*3 + 2] = eeprom_buf[(i*3) + 2]; 2752: 80 91 f1 02 lds r24, 0x02F1 2756: 81 50 subi r24, 0x01 ; 1 2758: 80 93 f1 02 sts 0x02F1, r24 } eeprom_buf_size--; 275c: ff 91 pop r31 275e: ef 91 pop r30 2760: bf 91 pop r27 2762: af 91 pop r26 2764: 9f 91 pop r25 2766: 8f 91 pop r24 2768: 2f 91 pop r18 276a: 0f 90 pop r0 276c: 0f be out 0x3f, r0 ; 63 276e: 0f 90 pop r0 2770: 1f 90 pop r1 2772: 18 95 reti 00002774 <__vector_20>: } } } 2774: 1f 92 push r1 2776: 0f 92 push r0 2778: 0f b6 in r0, 0x3f ; 63 277a: 0f 92 push r0 277c: 11 24 eor r1, r1 277e: 2f 93 push r18 2780: 8f 93 push r24 2782: 9f 93 push r25 2784: ef 93 push r30 2786: ff 93 push r31 void eeprom_write8(uint16_t addr, uint8_t data) 2788: 20 91 c6 00 lds r18, 0x00C6 { while(eeprom_buf_size >= EEPROM_BUF_LEN); 278c: 80 91 f2 02 lds r24, 0x02F2 2790: 80 36 cpi r24, 0x60 ; 96 2792: d9 f4 brne .+54 ; 0x27ca <__vector_20+0x56> { uint8_t tmp; eeprom_read_waiting = 1; while(EECR & (1< eeprom_read_waiting = 0; 279e: f8 94 cli EECR |= (1< return tmp; } 27a8: 90 91 f1 02 lds r25, 0x02F1 27ac: e9 2f mov r30, r25 27ae: f0 e0 ldi r31, 0x00 ; 0 27b0: e0 57 subi r30, 0x70 ; 112 27b2: fc 4f sbci r31, 0xFC ; 252 27b4: 86 e4 ldi r24, 0x46 ; 70 27b6: 80 83 st Z, r24 27b8: 9f 5f subi r25, 0xFF ; 255 27ba: 90 93 f1 02 sts 0x02F1, r25 27be: 80 91 c1 00 lds r24, 0x00C1 27c2: 80 62 ori r24, 0x20 ; 32 27c4: 80 93 c1 00 sts 0x00C1, r24 27c8: 0a c0 rjmp .+20 ; 0x27de <__vector_20+0x6a> { while(eeprom_buf_size >= EEPROM_BUF_LEN); cli(); eeprom_buf[eeprom_buf_size*3 + 0] = addr >> 8; eeprom_buf[eeprom_buf_size*3 + 1] = addr & 0xff; eeprom_buf[eeprom_buf_size*3 + 2] = data; 27ca: 80 91 f2 02 lds r24, 0x02F2 27ce: e8 2f mov r30, r24 27d0: f0 e0 ldi r31, 0x00 ; 0 27d2: e0 55 subi r30, 0x50 ; 80 27d4: fc 4f sbci r31, 0xFC ; 252 27d6: 20 83 st Z, r18 27d8: 8f 5f subi r24, 0xFF ; 255 27da: 80 93 f2 02 sts 0x02F2, r24 eeprom_buf_size++; sei(); deep_sleep_block |= DEEP_SLEEP_BLOCK_EEPROM; 27de: 80 91 f3 02 lds r24, 0x02F3 27e2: 88 23 and r24, r24 27e4: c9 f0 breq .+50 ; 0x2818 <__vector_20+0xa4> { uint8_t tmp; eeprom_read_waiting = 1; while(EECR & (1< eeprom_read_waiting = 0; 27f0: f8 94 cli EECR |= (1< return tmp; } 27fa: 80 91 f1 02 lds r24, 0x02F1 27fe: e8 2f mov r30, r24 2800: f0 e0 ldi r31, 0x00 ; 0 2802: e0 57 subi r30, 0x70 ; 112 2804: fc 4f sbci r31, 0xFC ; 252 2806: 20 83 st Z, r18 2808: 8f 5f subi r24, 0xFF ; 255 280a: 80 93 f1 02 sts 0x02F1, r24 280e: 80 91 c1 00 lds r24, 0x00C1 2812: 80 62 ori r24, 0x20 ; 32 2814: 80 93 c1 00 sts 0x00C1, r24 eeprom_buf[eeprom_buf_size*3 + 1] = addr & 0xff; eeprom_buf[eeprom_buf_size*3 + 2] = data; eeprom_buf_size++; sei(); deep_sleep_block |= DEEP_SLEEP_BLOCK_EEPROM; EECR |= (1<: 282c: 1f 92 push r1 282e: 0f 92 push r0 2830: 0f b6 in r0, 0x3f ; 63 2832: 0f 92 push r0 2834: 11 24 eor r1, r1 2836: 2f 93 push r18 2838: 3f 93 push r19 283a: 8f 93 push r24 283c: 9f 93 push r25 283e: af 93 push r26 2840: bf 93 push r27 2842: ef 93 push r30 2844: ff 93 push r31 2846: 90 91 b9 00 lds r25, 0x00B9 284a: 98 7f andi r25, 0xF8 ; 248 284c: 90 33 cpi r25, 0x30 ; 48 284e: 09 f4 brne .+2 ; 0x2852 <__vector_26+0x26> 2850: b0 c0 rjmp .+352 ; 0x29b2 <__vector_26+0x186> 2852: 91 33 cpi r25, 0x31 ; 49 2854: 90 f4 brcc .+36 ; 0x287a <__vector_26+0x4e> 2856: 98 31 cpi r25, 0x18 ; 24 2858: 09 f4 brne .+2 ; 0x285c <__vector_26+0x30> 285a: 44 c0 rjmp .+136 ; 0x28e4 <__vector_26+0xb8> 285c: 99 31 cpi r25, 0x19 ; 25 285e: 30 f4 brcc .+12 ; 0x286c <__vector_26+0x40> 2860: 98 30 cpi r25, 0x08 ; 8 2862: f1 f0 breq .+60 ; 0x28a0 <__vector_26+0x74> 2864: 90 31 cpi r25, 0x10 ; 16 2866: 09 f0 breq .+2 ; 0x286a <__vector_26+0x3e> 2868: 27 c1 rjmp .+590 ; 0x2ab8 <__vector_26+0x28c> 286a: 1d c0 rjmp .+58 ; 0x28a6 <__vector_26+0x7a> 286c: 90 32 cpi r25, 0x20 ; 32 286e: 09 f4 brne .+2 ; 0x2872 <__vector_26+0x46> 2870: d3 c0 rjmp .+422 ; 0x2a18 <__vector_26+0x1ec> 2872: 98 32 cpi r25, 0x28 ; 40 2874: 09 f0 breq .+2 ; 0x2878 <__vector_26+0x4c> 2876: 20 c1 rjmp .+576 ; 0x2ab8 <__vector_26+0x28c> 2878: 67 c0 rjmp .+206 ; 0x2948 <__vector_26+0x11c> 287a: 98 34 cpi r25, 0x48 ; 72 287c: 09 f4 brne .+2 ; 0x2880 <__vector_26+0x54> 287e: cc c0 rjmp .+408 ; 0x2a18 <__vector_26+0x1ec> 2880: 99 34 cpi r25, 0x49 ; 73 2882: 38 f4 brcc .+14 ; 0x2892 <__vector_26+0x66> 2884: 98 33 cpi r25, 0x38 ; 56 2886: 09 f4 brne .+2 ; 0x288a <__vector_26+0x5e> 2888: a0 c0 rjmp .+320 ; 0x29ca <__vector_26+0x19e> 288a: 90 34 cpi r25, 0x40 ; 64 288c: 09 f0 breq .+2 ; 0x2890 <__vector_26+0x64> 288e: 14 c1 rjmp .+552 ; 0x2ab8 <__vector_26+0x28c> 2890: a8 c0 rjmp .+336 ; 0x29e2 <__vector_26+0x1b6> 2892: 90 35 cpi r25, 0x50 ; 80 2894: 09 f4 brne .+2 ; 0x2898 <__vector_26+0x6c> 2896: cc c0 rjmp .+408 ; 0x2a30 <__vector_26+0x204> 2898: 98 35 cpi r25, 0x58 ; 88 289a: 09 f0 breq .+2 ; 0x289e <__vector_26+0x72> 289c: 0d c1 rjmp .+538 ; 0x2ab8 <__vector_26+0x28c> 289e: ed c0 rjmp .+474 ; 0x2a7a <__vector_26+0x24e> 28a0: 80 91 10 04 lds r24, 0x0410 28a4: 07 c0 rjmp .+14 ; 0x28b4 <__vector_26+0x88> 28a6: 80 91 f5 02 lds r24, 0x02F5 28aa: 81 ff sbrs r24, 1 28ac: 0b c0 rjmp .+22 ; 0x28c4 <__vector_26+0x98> 28ae: 80 91 10 04 lds r24, 0x0410 28b2: 81 60 ori r24, 0x01 ; 1 28b4: 80 93 bb 00 sts 0x00BB, r24 28b8: 80 91 bc 00 lds r24, 0x00BC 28bc: 8f 7d andi r24, 0xDF ; 223 28be: 80 93 bc 00 sts 0x00BC, r24 28c2: 18 c0 rjmp .+48 ; 0x28f4 <__vector_26+0xc8> 28c4: 80 91 f5 02 lds r24, 0x02F5 28c8: 80 ff sbrs r24, 0 28ca: 0a c1 rjmp .+532 ; 0x2ae0 <__vector_26+0x2b4> void release_device_lock(uint8_t which) { cli(); device_locks &= (unsigned char)~(which); sei(); } 28cc: 80 91 bc 00 lds r24, 0x00BC 28d0: 80 69 ori r24, 0x90 ; 144 28d2: 80 93 bc 00 sts 0x00BC, r24 void release_device_lock_irq(uint8_t which) { device_locks &= (unsigned char)~(which); 28d6: 80 91 f5 02 lds r24, 0x02F5 28da: 88 7f andi r24, 0xF8 ; 248 28dc: 80 93 f5 02 sts 0x02F5, r24 } 28e0: 85 e0 ldi r24, 0x05 ; 5 28e2: e2 c0 rjmp .+452 ; 0x2aa8 <__vector_26+0x27c> 28e4: 80 91 f5 02 lds r24, 0x02F5 28e8: 81 ff sbrs r24, 1 28ea: 08 c0 rjmp .+16 ; 0x28fc <__vector_26+0xd0> 28ec: 80 91 14 04 lds r24, 0x0414 28f0: 80 93 bb 00 sts 0x00BB, r24 28f4: 80 91 bc 00 lds r24, 0x00BC 28f8: 80 68 ori r24, 0x80 ; 128 28fa: 2d c0 rjmp .+90 ; 0x2956 <__vector_26+0x12a> 28fc: 80 91 f5 02 lds r24, 0x02F5 2900: 80 ff sbrs r24, 0 2902: ee c0 rjmp .+476 ; 0x2ae0 <__vector_26+0x2b4> uint8_t is_device_locked(uint8_t which) { return device_locks & which ? 1 : 0; } 2904: 80 91 12 04 lds r24, 0x0412 2908: 88 23 and r24, r24 290a: 09 f4 brne .+2 ; 0x290e <__vector_26+0xe2> 290c: c2 c0 rjmp .+388 ; 0x2a92 <__vector_26+0x266> 290e: 80 91 14 04 lds r24, 0x0414 2912: 80 93 bb 00 sts 0x00BB, r24 2916: 80 91 bc 00 lds r24, 0x00BC 291a: 80 68 ori r24, 0x80 ; 128 291c: 80 93 bc 00 sts 0x00BC, r24 2920: 20 e0 ldi r18, 0x00 ; 0 2922: 08 c0 rjmp .+16 ; 0x2934 <__vector_26+0x108> 2924: fd 01 movw r30, r26 2926: eb 5e subi r30, 0xEB ; 235 2928: fb 4f sbci r31, 0xFB ; 251 292a: 80 81 ld r24, Z 292c: ac 5e subi r26, 0xEC ; 236 292e: bb 4f sbci r27, 0xFB ; 251 2930: 8c 93 st X, r24 2932: 2f 5f subi r18, 0xFF ; 255 2934: a2 2f mov r26, r18 2936: b0 e0 ldi r27, 0x00 ; 0 2938: 80 91 12 04 lds r24, 0x0412 293c: 90 e0 ldi r25, 0x00 ; 0 293e: 01 97 sbiw r24, 0x01 ; 1 2940: a8 17 cp r26, r24 2942: b9 07 cpc r27, r25 2944: 7c f3 brlt .-34 ; 0x2924 <__vector_26+0xf8> 2946: 2f c0 rjmp .+94 ; 0x29a6 <__vector_26+0x17a> 2948: 80 91 f5 02 lds r24, 0x02F5 294c: 81 ff sbrs r24, 1 294e: 06 c0 rjmp .+12 ; 0x295c <__vector_26+0x130> 2950: 80 91 bc 00 lds r24, 0x00BC 2954: 80 6a ori r24, 0xA0 ; 160 2956: 80 93 bc 00 sts 0x00BC, r24 295a: c2 c0 rjmp .+388 ; 0x2ae0 <__vector_26+0x2b4> 295c: 80 91 f5 02 lds r24, 0x02F5 2960: 80 ff sbrs r24, 0 2962: be c0 rjmp .+380 ; 0x2ae0 <__vector_26+0x2b4> uint8_t is_device_locked(uint8_t which) { return device_locks & which ? 1 : 0; } 2964: 80 91 12 04 lds r24, 0x0412 2968: 88 23 and r24, r24 296a: 09 f4 brne .+2 ; 0x296e <__vector_26+0x142> 296c: 92 c0 rjmp .+292 ; 0x2a92 <__vector_26+0x266> 296e: 80 91 14 04 lds r24, 0x0414 2972: 80 93 bb 00 sts 0x00BB, r24 2976: 80 91 bc 00 lds r24, 0x00BC 297a: 80 68 ori r24, 0x80 ; 128 297c: 80 93 bc 00 sts 0x00BC, r24 2980: 20 e0 ldi r18, 0x00 ; 0 2982: 08 c0 rjmp .+16 ; 0x2994 <__vector_26+0x168> 2984: fd 01 movw r30, r26 2986: eb 5e subi r30, 0xEB ; 235 2988: fb 4f sbci r31, 0xFB ; 251 298a: 80 81 ld r24, Z 298c: ac 5e subi r26, 0xEC ; 236 298e: bb 4f sbci r27, 0xFB ; 251 2990: 8c 93 st X, r24 2992: 2f 5f subi r18, 0xFF ; 255 2994: a2 2f mov r26, r18 2996: b0 e0 ldi r27, 0x00 ; 0 2998: 80 91 12 04 lds r24, 0x0412 299c: 90 e0 ldi r25, 0x00 ; 0 299e: 01 97 sbiw r24, 0x01 ; 1 29a0: a8 17 cp r26, r24 29a2: b9 07 cpc r27, r25 29a4: 7c f3 brlt .-34 ; 0x2984 <__vector_26+0x158> 29a6: 80 91 12 04 lds r24, 0x0412 29aa: 81 50 subi r24, 0x01 ; 1 29ac: 80 93 12 04 sts 0x0412, r24 29b0: 97 c0 rjmp .+302 ; 0x2ae0 <__vector_26+0x2b4> void release_device_lock(uint8_t which) { cli(); device_locks &= (unsigned char)~(which); sei(); } 29b2: 80 91 bc 00 lds r24, 0x00BC 29b6: 80 69 ori r24, 0x90 ; 144 29b8: 80 93 bc 00 sts 0x00BC, r24 void release_device_lock_irq(uint8_t which) { device_locks &= (unsigned char)~(which); 29bc: 80 91 f5 02 lds r24, 0x02F5 29c0: 88 7f andi r24, 0xF8 ; 248 29c2: 80 93 f5 02 sts 0x02F5, r24 } 29c6: 83 e0 ldi r24, 0x03 ; 3 29c8: 6f c0 rjmp .+222 ; 0x2aa8 <__vector_26+0x27c> cli(); device_locks &= (unsigned char)~(which); sei(); } void release_device_lock_irq(uint8_t which) 29ca: 80 91 bc 00 lds r24, 0x00BC 29ce: 80 68 ori r24, 0x80 ; 128 29d0: 80 93 bc 00 sts 0x00BC, r24 { device_locks &= (unsigned char)~(which); 29d4: 80 91 f5 02 lds r24, 0x02F5 29d8: 88 7f andi r24, 0xF8 ; 248 29da: 80 93 f5 02 sts 0x02F5, r24 } 29de: 84 e0 ldi r24, 0x04 ; 4 29e0: 63 c0 rjmp .+198 ; 0x2aa8 <__vector_26+0x27c> 29e2: 20 91 13 04 lds r18, 0x0413 29e6: 80 91 12 04 lds r24, 0x0412 29ea: 30 e0 ldi r19, 0x00 ; 0 29ec: 90 e0 ldi r25, 0x00 ; 0 29ee: 01 97 sbiw r24, 0x01 ; 1 29f0: 28 17 cp r18, r24 29f2: 39 07 cpc r19, r25 29f4: 49 f4 brne .+18 ; 0x2a08 <__vector_26+0x1dc> 29f6: 80 91 bc 00 lds r24, 0x00BC 29fa: 8f 7b andi r24, 0xBF ; 191 29fc: 80 93 bc 00 sts 0x00BC, r24 2a00: 80 91 bc 00 lds r24, 0x00BC 2a04: 80 68 ori r24, 0x80 ; 128 2a06: 03 c0 rjmp .+6 ; 0x2a0e <__vector_26+0x1e2> 2a08: 80 91 bc 00 lds r24, 0x00BC 2a0c: 80 6c ori r24, 0xC0 ; 192 2a0e: 80 93 bc 00 sts 0x00BC, r24 2a12: 10 92 13 04 sts 0x0413, r1 2a16: 64 c0 rjmp .+200 ; 0x2ae0 <__vector_26+0x2b4> void release_device_lock(uint8_t which) { cli(); device_locks &= (unsigned char)~(which); sei(); } 2a18: 80 91 bc 00 lds r24, 0x00BC 2a1c: 80 69 ori r24, 0x90 ; 144 2a1e: 80 93 bc 00 sts 0x00BC, r24 void release_device_lock_irq(uint8_t which) { device_locks &= (unsigned char)~(which); 2a22: 80 91 f5 02 lds r24, 0x02F5 2a26: 88 7f andi r24, 0xF8 ; 248 2a28: 80 93 f5 02 sts 0x02F5, r24 } 2a2c: 82 e0 ldi r24, 0x02 ; 2 2a2e: 3c c0 rjmp .+120 ; 0x2aa8 <__vector_26+0x27c> 2a30: 20 91 13 04 lds r18, 0x0413 2a34: 80 91 12 04 lds r24, 0x0412 2a38: 30 e0 ldi r19, 0x00 ; 0 2a3a: 90 e0 ldi r25, 0x00 ; 0 2a3c: 01 97 sbiw r24, 0x01 ; 1 2a3e: 28 17 cp r18, r24 2a40: 39 07 cpc r19, r25 2a42: 49 f4 brne .+18 ; 0x2a56 <__vector_26+0x22a> 2a44: 80 91 bc 00 lds r24, 0x00BC 2a48: 8f 7b andi r24, 0xBF ; 191 2a4a: 80 93 bc 00 sts 0x00BC, r24 2a4e: 80 91 bc 00 lds r24, 0x00BC 2a52: 80 68 ori r24, 0x80 ; 128 2a54: 03 c0 rjmp .+6 ; 0x2a5c <__vector_26+0x230> 2a56: 80 91 bc 00 lds r24, 0x00BC 2a5a: 80 6c ori r24, 0xC0 ; 192 2a5c: 80 93 bc 00 sts 0x00BC, r24 2a60: 80 91 13 04 lds r24, 0x0413 2a64: e8 2f mov r30, r24 2a66: f0 e0 ldi r31, 0x00 ; 0 2a68: 90 91 bb 00 lds r25, 0x00BB 2a6c: ec 5e subi r30, 0xEC ; 236 2a6e: fb 4f sbci r31, 0xFB ; 251 2a70: 90 83 st Z, r25 2a72: 8f 5f subi r24, 0xFF ; 255 2a74: 80 93 13 04 sts 0x0413, r24 2a78: 33 c0 rjmp .+102 ; 0x2ae0 <__vector_26+0x2b4> 2a7a: 80 91 13 04 lds r24, 0x0413 2a7e: e8 2f mov r30, r24 2a80: f0 e0 ldi r31, 0x00 ; 0 2a82: 90 91 bb 00 lds r25, 0x00BB 2a86: ec 5e subi r30, 0xEC ; 236 2a88: fb 4f sbci r31, 0xFB ; 251 2a8a: 90 83 st Z, r25 2a8c: 8f 5f subi r24, 0xFF ; 255 2a8e: 80 93 13 04 sts 0x0413, r24 void release_device_lock(uint8_t which) { cli(); device_locks &= (unsigned char)~(which); sei(); } 2a92: 80 91 bc 00 lds r24, 0x00BC 2a96: 80 69 ori r24, 0x90 ; 144 2a98: 80 93 bc 00 sts 0x00BC, r24 void release_device_lock_irq(uint8_t which) { device_locks &= (unsigned char)~(which); 2a9c: 80 91 f5 02 lds r24, 0x02F5 2aa0: 88 7f andi r24, 0xF8 ; 248 2aa2: 80 93 f5 02 sts 0x02F5, r24 } 2aa6: 81 e0 ldi r24, 0x01 ; 1 2aa8: 80 93 f6 02 sts 0x02F6, r24 for(i=1; i cli(); device_locks &= (unsigned char)~(which); sei(); } void release_device_lock_irq(uint8_t which) 2ab8: 80 91 bc 00 lds r24, 0x00BC 2abc: 80 68 ori r24, 0x80 ; 128 2abe: 80 93 bc 00 sts 0x00BC, r24 { device_locks &= (unsigned char)~(which); 2ac2: 80 91 f5 02 lds r24, 0x02F5 2ac6: 88 7f andi r24, 0xF8 ; 248 2ac8: 80 93 f5 02 sts 0x02F5, r24 } 2acc: 86 e0 ldi r24, 0x06 ; 6 2ace: 80 93 f6 02 sts 0x02F6, r24 2ad2: 80 91 f0 02 lds r24, 0x02F0 2ad6: 8b 7f andi r24, 0xFB ; 251 2ad8: 80 93 f0 02 sts 0x02F0, r24 2adc: 90 93 f7 02 sts 0x02F7, r25 2ae0: 80 91 bc 00 lds r24, 0x00BC 2ae4: 80 68 ori r24, 0x80 ; 128 2ae6: 80 93 bc 00 sts 0x00BC, r24 2aea: ff 91 pop r31 2aec: ef 91 pop r30 2aee: bf 91 pop r27 2af0: af 91 pop r26 2af2: 9f 91 pop r25 2af4: 8f 91 pop r24 2af6: 3f 91 pop r19 2af8: 2f 91 pop r18 2afa: 0f 90 pop r0 2afc: 0f be out 0x3f, r0 ; 63 2afe: 0f 90 pop r0 2b00: 1f 90 pop r1 2b02: 18 95 reti 00002b04 : 2b04: fc 01 movw r30, r24 2b06: 88 27 eor r24, r24 2b08: 99 27 eor r25, r25 2b0a: e8 94 clt 2b0c: 21 91 ld r18, Z+ 2b0e: 20 32 cpi r18, 0x20 ; 32 2b10: e9 f3 breq .-6 ; 0x2b0c 2b12: 29 30 cpi r18, 0x09 ; 9 2b14: 10 f0 brcs .+4 ; 0x2b1a 2b16: 2e 30 cpi r18, 0x0E ; 14 2b18: c8 f3 brcs .-14 ; 0x2b0c 2b1a: 2b 32 cpi r18, 0x2B ; 43 2b1c: 41 f0 breq .+16 ; 0x2b2e 2b1e: 2d 32 cpi r18, 0x2D ; 45 2b20: 39 f4 brne .+14 ; 0x2b30 2b22: 68 94 set 2b24: 04 c0 rjmp .+8 ; 0x2b2e 2b26: 0e 94 a0 15 call 0x2b40 ; 0x2b40 <__mulhi_const_10> 2b2a: 82 0f add r24, r18 2b2c: 91 1d adc r25, r1 2b2e: 21 91 ld r18, Z+ 2b30: 20 53 subi r18, 0x30 ; 48 2b32: 2a 30 cpi r18, 0x0A ; 10 2b34: c0 f3 brcs .-16 ; 0x2b26 2b36: 1e f4 brtc .+6 ; 0x2b3e 2b38: 90 95 com r25 2b3a: 81 95 neg r24 2b3c: 9f 4f sbci r25, 0xFF ; 255 2b3e: 08 95 ret 00002b40 <__mulhi_const_10>: 2b40: 7a e0 ldi r23, 0x0A ; 10 2b42: 97 9f mul r25, r23 2b44: 90 2d mov r25, r0 2b46: 87 9f mul r24, r23 2b48: 80 2d mov r24, r0 2b4a: 91 0d add r25, r1 2b4c: 11 24 eor r1, r1 2b4e: 08 95 ret 00002b50 : 2b50: ae e0 ldi r26, 0x0E ; 14 2b52: b0 e0 ldi r27, 0x00 ; 0 2b54: ee ea ldi r30, 0xAE ; 174 2b56: f5 e1 ldi r31, 0x15 ; 21 2b58: 0c 94 40 1b jmp 0x3680 ; 0x3680 <__prologue_saves__+0x1c> 2b5c: 0d 89 ldd r16, Y+21 ; 0x15 2b5e: 1e 89 ldd r17, Y+22 ; 0x16 2b60: 8f 89 ldd r24, Y+23 ; 0x17 2b62: 98 8d ldd r25, Y+24 ; 0x18 2b64: 97 ff sbrs r25, 7 2b66: 02 c0 rjmp .+4 ; 0x2b6c 2b68: 80 e0 ldi r24, 0x00 ; 0 2b6a: 90 e8 ldi r25, 0x80 ; 128 2b6c: 01 97 sbiw r24, 0x01 ; 1 2b6e: 9e 83 std Y+6, r25 ; 0x06 2b70: 8d 83 std Y+5, r24 ; 0x05 2b72: 1a 83 std Y+2, r17 ; 0x02 2b74: 09 83 std Y+1, r16 ; 0x01 2b76: 86 e0 ldi r24, 0x06 ; 6 2b78: 8c 83 std Y+4, r24 ; 0x04 2b7a: ce 01 movw r24, r28 2b7c: 4b 96 adiw r24, 0x1b ; 27 2b7e: ac 01 movw r20, r24 2b80: 69 8d ldd r22, Y+25 ; 0x19 2b82: 7a 8d ldd r23, Y+26 ; 0x1a 2b84: ce 01 movw r24, r28 2b86: 01 96 adiw r24, 0x01 ; 1 2b88: 0e 94 d8 15 call 0x2bb0 ; 0x2bb0 2b8c: 4d 81 ldd r20, Y+5 ; 0x05 2b8e: 5e 81 ldd r21, Y+6 ; 0x06 2b90: 57 fd sbrc r21, 7 2b92: 0a c0 rjmp .+20 ; 0x2ba8 2b94: 2f 81 ldd r18, Y+7 ; 0x07 2b96: 38 85 ldd r19, Y+8 ; 0x08 2b98: 42 17 cp r20, r18 2b9a: 53 07 cpc r21, r19 2b9c: 0c f4 brge .+2 ; 0x2ba0 2b9e: 9a 01 movw r18, r20 2ba0: 02 0f add r16, r18 2ba2: 13 1f adc r17, r19 2ba4: f8 01 movw r30, r16 2ba6: 10 82 st Z, r1 2ba8: 2e 96 adiw r28, 0x0e ; 14 2baa: e4 e0 ldi r30, 0x04 ; 4 2bac: 0c 94 5c 1b jmp 0x36b8 ; 0x36b8 <__epilogue_restores__+0x1c> 00002bb0 : 2bb0: ab e0 ldi r26, 0x0B ; 11 2bb2: b0 e0 ldi r27, 0x00 ; 0 2bb4: ee ed ldi r30, 0xDE ; 222 2bb6: f5 e1 ldi r31, 0x15 ; 21 2bb8: 0c 94 32 1b jmp 0x3664 ; 0x3664 <__prologue_saves__> 2bbc: 3c 01 movw r6, r24 2bbe: 2b 01 movw r4, r22 2bc0: 5a 01 movw r10, r20 2bc2: fc 01 movw r30, r24 2bc4: 17 82 std Z+7, r1 ; 0x07 2bc6: 16 82 std Z+6, r1 ; 0x06 2bc8: 83 81 ldd r24, Z+3 ; 0x03 2bca: 81 fd sbrc r24, 1 2bcc: 03 c0 rjmp .+6 ; 0x2bd4 2bce: 6f ef ldi r22, 0xFF ; 255 2bd0: 7f ef ldi r23, 0xFF ; 255 2bd2: c8 c1 rjmp .+912 ; 0x2f64 2bd4: 9a e0 ldi r25, 0x0A ; 10 2bd6: 89 2e mov r8, r25 2bd8: 1e 01 movw r2, r28 2bda: 08 94 sec 2bdc: 21 1c adc r2, r1 2bde: 31 1c adc r3, r1 2be0: f3 01 movw r30, r6 2be2: 23 81 ldd r18, Z+3 ; 0x03 2be4: f2 01 movw r30, r4 2be6: 23 fd sbrc r18, 3 2be8: 85 91 lpm r24, Z+ 2bea: 23 ff sbrs r18, 3 2bec: 81 91 ld r24, Z+ 2bee: 2f 01 movw r4, r30 2bf0: 88 23 and r24, r24 2bf2: 09 f4 brne .+2 ; 0x2bf6 2bf4: b4 c1 rjmp .+872 ; 0x2f5e 2bf6: 85 32 cpi r24, 0x25 ; 37 2bf8: 39 f4 brne .+14 ; 0x2c08 2bfa: 23 fd sbrc r18, 3 2bfc: 85 91 lpm r24, Z+ 2bfe: 23 ff sbrs r18, 3 2c00: 81 91 ld r24, Z+ 2c02: 2f 01 movw r4, r30 2c04: 85 32 cpi r24, 0x25 ; 37 2c06: 29 f4 brne .+10 ; 0x2c12 2c08: b3 01 movw r22, r6 2c0a: 90 e0 ldi r25, 0x00 ; 0 2c0c: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2c10: e7 cf rjmp .-50 ; 0x2be0 2c12: 98 2f mov r25, r24 2c14: dd 24 eor r13, r13 2c16: cc 24 eor r12, r12 2c18: 99 24 eor r9, r9 2c1a: ff e1 ldi r31, 0x1F ; 31 2c1c: fd 15 cp r31, r13 2c1e: d0 f0 brcs .+52 ; 0x2c54 2c20: 9b 32 cpi r25, 0x2B ; 43 2c22: 69 f0 breq .+26 ; 0x2c3e 2c24: 9c 32 cpi r25, 0x2C ; 44 2c26: 28 f4 brcc .+10 ; 0x2c32 2c28: 90 32 cpi r25, 0x20 ; 32 2c2a: 59 f0 breq .+22 ; 0x2c42 2c2c: 93 32 cpi r25, 0x23 ; 35 2c2e: 91 f4 brne .+36 ; 0x2c54 2c30: 0e c0 rjmp .+28 ; 0x2c4e 2c32: 9d 32 cpi r25, 0x2D ; 45 2c34: 49 f0 breq .+18 ; 0x2c48 2c36: 90 33 cpi r25, 0x30 ; 48 2c38: 69 f4 brne .+26 ; 0x2c54 2c3a: 41 e0 ldi r20, 0x01 ; 1 2c3c: 24 c0 rjmp .+72 ; 0x2c86 2c3e: 52 e0 ldi r21, 0x02 ; 2 2c40: d5 2a or r13, r21 2c42: 84 e0 ldi r24, 0x04 ; 4 2c44: d8 2a or r13, r24 2c46: 28 c0 rjmp .+80 ; 0x2c98 2c48: 98 e0 ldi r25, 0x08 ; 8 2c4a: d9 2a or r13, r25 2c4c: 25 c0 rjmp .+74 ; 0x2c98 2c4e: e0 e1 ldi r30, 0x10 ; 16 2c50: de 2a or r13, r30 2c52: 22 c0 rjmp .+68 ; 0x2c98 2c54: d7 fc sbrc r13, 7 2c56: 29 c0 rjmp .+82 ; 0x2caa 2c58: 89 2f mov r24, r25 2c5a: 80 53 subi r24, 0x30 ; 48 2c5c: 8a 30 cpi r24, 0x0A ; 10 2c5e: 70 f4 brcc .+28 ; 0x2c7c 2c60: d6 fe sbrs r13, 6 2c62: 05 c0 rjmp .+10 ; 0x2c6e 2c64: 98 9c mul r9, r8 2c66: 90 2c mov r9, r0 2c68: 11 24 eor r1, r1 2c6a: 98 0e add r9, r24 2c6c: 15 c0 rjmp .+42 ; 0x2c98 2c6e: c8 9c mul r12, r8 2c70: c0 2c mov r12, r0 2c72: 11 24 eor r1, r1 2c74: c8 0e add r12, r24 2c76: f0 e2 ldi r31, 0x20 ; 32 2c78: df 2a or r13, r31 2c7a: 0e c0 rjmp .+28 ; 0x2c98 2c7c: 9e 32 cpi r25, 0x2E ; 46 2c7e: 29 f4 brne .+10 ; 0x2c8a 2c80: d6 fc sbrc r13, 6 2c82: 6d c1 rjmp .+730 ; 0x2f5e 2c84: 40 e4 ldi r20, 0x40 ; 64 2c86: d4 2a or r13, r20 2c88: 07 c0 rjmp .+14 ; 0x2c98 2c8a: 9c 36 cpi r25, 0x6C ; 108 2c8c: 19 f4 brne .+6 ; 0x2c94 2c8e: 50 e8 ldi r21, 0x80 ; 128 2c90: d5 2a or r13, r21 2c92: 02 c0 rjmp .+4 ; 0x2c98 2c94: 98 36 cpi r25, 0x68 ; 104 2c96: 49 f4 brne .+18 ; 0x2caa 2c98: f2 01 movw r30, r4 2c9a: 23 fd sbrc r18, 3 2c9c: 95 91 lpm r25, Z+ 2c9e: 23 ff sbrs r18, 3 2ca0: 91 91 ld r25, Z+ 2ca2: 2f 01 movw r4, r30 2ca4: 99 23 and r25, r25 2ca6: 09 f0 breq .+2 ; 0x2caa 2ca8: b8 cf rjmp .-144 ; 0x2c1a 2caa: 89 2f mov r24, r25 2cac: 85 54 subi r24, 0x45 ; 69 2cae: 83 30 cpi r24, 0x03 ; 3 2cb0: 18 f0 brcs .+6 ; 0x2cb8 2cb2: 80 52 subi r24, 0x20 ; 32 2cb4: 83 30 cpi r24, 0x03 ; 3 2cb6: 38 f4 brcc .+14 ; 0x2cc6 2cb8: 44 e0 ldi r20, 0x04 ; 4 2cba: 50 e0 ldi r21, 0x00 ; 0 2cbc: a4 0e add r10, r20 2cbe: b5 1e adc r11, r21 2cc0: 5f e3 ldi r21, 0x3F ; 63 2cc2: 59 83 std Y+1, r21 ; 0x01 2cc4: 0f c0 rjmp .+30 ; 0x2ce4 2cc6: 93 36 cpi r25, 0x63 ; 99 2cc8: 31 f0 breq .+12 ; 0x2cd6 2cca: 93 37 cpi r25, 0x73 ; 115 2ccc: 79 f0 breq .+30 ; 0x2cec 2cce: 93 35 cpi r25, 0x53 ; 83 2cd0: 09 f0 breq .+2 ; 0x2cd4 2cd2: 56 c0 rjmp .+172 ; 0x2d80 2cd4: 20 c0 rjmp .+64 ; 0x2d16 2cd6: f5 01 movw r30, r10 2cd8: 80 81 ld r24, Z 2cda: 89 83 std Y+1, r24 ; 0x01 2cdc: 42 e0 ldi r20, 0x02 ; 2 2cde: 50 e0 ldi r21, 0x00 ; 0 2ce0: a4 0e add r10, r20 2ce2: b5 1e adc r11, r21 2ce4: 71 01 movw r14, r2 2ce6: 01 e0 ldi r16, 0x01 ; 1 2ce8: 10 e0 ldi r17, 0x00 ; 0 2cea: 12 c0 rjmp .+36 ; 0x2d10 2cec: f5 01 movw r30, r10 2cee: e0 80 ld r14, Z 2cf0: f1 80 ldd r15, Z+1 ; 0x01 2cf2: d6 fc sbrc r13, 6 2cf4: 03 c0 rjmp .+6 ; 0x2cfc 2cf6: 6f ef ldi r22, 0xFF ; 255 2cf8: 7f ef ldi r23, 0xFF ; 255 2cfa: 02 c0 rjmp .+4 ; 0x2d00 2cfc: 69 2d mov r22, r9 2cfe: 70 e0 ldi r23, 0x00 ; 0 2d00: 42 e0 ldi r20, 0x02 ; 2 2d02: 50 e0 ldi r21, 0x00 ; 0 2d04: a4 0e add r10, r20 2d06: b5 1e adc r11, r21 2d08: c7 01 movw r24, r14 2d0a: 0e 94 c2 17 call 0x2f84 ; 0x2f84 2d0e: 8c 01 movw r16, r24 2d10: 5f e7 ldi r21, 0x7F ; 127 2d12: d5 22 and r13, r21 2d14: 14 c0 rjmp .+40 ; 0x2d3e 2d16: f5 01 movw r30, r10 2d18: e0 80 ld r14, Z 2d1a: f1 80 ldd r15, Z+1 ; 0x01 2d1c: d6 fc sbrc r13, 6 2d1e: 03 c0 rjmp .+6 ; 0x2d26 2d20: 6f ef ldi r22, 0xFF ; 255 2d22: 7f ef ldi r23, 0xFF ; 255 2d24: 02 c0 rjmp .+4 ; 0x2d2a 2d26: 69 2d mov r22, r9 2d28: 70 e0 ldi r23, 0x00 ; 0 2d2a: 42 e0 ldi r20, 0x02 ; 2 2d2c: 50 e0 ldi r21, 0x00 ; 0 2d2e: a4 0e add r10, r20 2d30: b5 1e adc r11, r21 2d32: c7 01 movw r24, r14 2d34: 0e 94 b7 17 call 0x2f6e ; 0x2f6e 2d38: 8c 01 movw r16, r24 2d3a: 50 e8 ldi r21, 0x80 ; 128 2d3c: d5 2a or r13, r21 2d3e: d3 fe sbrs r13, 3 2d40: 07 c0 rjmp .+14 ; 0x2d50 2d42: 1a c0 rjmp .+52 ; 0x2d78 2d44: b3 01 movw r22, r6 2d46: 80 e2 ldi r24, 0x20 ; 32 2d48: 90 e0 ldi r25, 0x00 ; 0 2d4a: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2d4e: ca 94 dec r12 2d50: 8c 2d mov r24, r12 2d52: 90 e0 ldi r25, 0x00 ; 0 2d54: 08 17 cp r16, r24 2d56: 19 07 cpc r17, r25 2d58: a8 f3 brcs .-22 ; 0x2d44 2d5a: 0e c0 rjmp .+28 ; 0x2d78 2d5c: f7 01 movw r30, r14 2d5e: d7 fc sbrc r13, 7 2d60: 85 91 lpm r24, Z+ 2d62: d7 fe sbrs r13, 7 2d64: 81 91 ld r24, Z+ 2d66: 7f 01 movw r14, r30 2d68: b3 01 movw r22, r6 2d6a: 90 e0 ldi r25, 0x00 ; 0 2d6c: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2d70: c1 10 cpse r12, r1 2d72: ca 94 dec r12 2d74: 01 50 subi r16, 0x01 ; 1 2d76: 10 40 sbci r17, 0x00 ; 0 2d78: 01 15 cp r16, r1 2d7a: 11 05 cpc r17, r1 2d7c: 79 f7 brne .-34 ; 0x2d5c 2d7e: ec c0 rjmp .+472 ; 0x2f58 2d80: 94 36 cpi r25, 0x64 ; 100 2d82: 11 f0 breq .+4 ; 0x2d88 2d84: 99 36 cpi r25, 0x69 ; 105 2d86: 71 f5 brne .+92 ; 0x2de4 2d88: d7 fe sbrs r13, 7 2d8a: 08 c0 rjmp .+16 ; 0x2d9c 2d8c: f5 01 movw r30, r10 2d8e: e0 80 ld r14, Z 2d90: f1 80 ldd r15, Z+1 ; 0x01 2d92: 02 81 ldd r16, Z+2 ; 0x02 2d94: 13 81 ldd r17, Z+3 ; 0x03 2d96: 44 e0 ldi r20, 0x04 ; 4 2d98: 50 e0 ldi r21, 0x00 ; 0 2d9a: 0a c0 rjmp .+20 ; 0x2db0 2d9c: f5 01 movw r30, r10 2d9e: 80 81 ld r24, Z 2da0: 91 81 ldd r25, Z+1 ; 0x01 2da2: 7c 01 movw r14, r24 2da4: 00 27 eor r16, r16 2da6: f7 fc sbrc r15, 7 2da8: 00 95 com r16 2daa: 10 2f mov r17, r16 2dac: 42 e0 ldi r20, 0x02 ; 2 2dae: 50 e0 ldi r21, 0x00 ; 0 2db0: a4 0e add r10, r20 2db2: b5 1e adc r11, r21 2db4: 5f e6 ldi r21, 0x6F ; 111 2db6: d5 22 and r13, r21 2db8: 17 ff sbrs r17, 7 2dba: 0a c0 rjmp .+20 ; 0x2dd0 2dbc: 10 95 com r17 2dbe: 00 95 com r16 2dc0: f0 94 com r15 2dc2: e0 94 com r14 2dc4: e1 1c adc r14, r1 2dc6: f1 1c adc r15, r1 2dc8: 01 1d adc r16, r1 2dca: 11 1d adc r17, r1 2dcc: 80 e8 ldi r24, 0x80 ; 128 2dce: d8 2a or r13, r24 2dd0: 2a e0 ldi r18, 0x0A ; 10 2dd2: 30 e0 ldi r19, 0x00 ; 0 2dd4: a1 01 movw r20, r2 2dd6: c8 01 movw r24, r16 2dd8: b7 01 movw r22, r14 2dda: 0e 94 f9 17 call 0x2ff2 ; 0x2ff2 <__ultoa_invert> 2dde: f8 2e mov r15, r24 2de0: f2 18 sub r15, r2 2de2: 40 c0 rjmp .+128 ; 0x2e64 2de4: 95 37 cpi r25, 0x75 ; 117 2de6: 29 f4 brne .+10 ; 0x2df2 2de8: 1d 2d mov r17, r13 2dea: 1f 7e andi r17, 0xEF ; 239 2dec: 2a e0 ldi r18, 0x0A ; 10 2dee: 30 e0 ldi r19, 0x00 ; 0 2df0: 1d c0 rjmp .+58 ; 0x2e2c 2df2: 1d 2d mov r17, r13 2df4: 19 7f andi r17, 0xF9 ; 249 2df6: 9f 36 cpi r25, 0x6F ; 111 2df8: 61 f0 breq .+24 ; 0x2e12 2dfa: 90 37 cpi r25, 0x70 ; 112 2dfc: 20 f4 brcc .+8 ; 0x2e06 2dfe: 98 35 cpi r25, 0x58 ; 88 2e00: 09 f0 breq .+2 ; 0x2e04 2e02: ad c0 rjmp .+346 ; 0x2f5e 2e04: 0f c0 rjmp .+30 ; 0x2e24 2e06: 90 37 cpi r25, 0x70 ; 112 2e08: 39 f0 breq .+14 ; 0x2e18 2e0a: 98 37 cpi r25, 0x78 ; 120 2e0c: 09 f0 breq .+2 ; 0x2e10 2e0e: a7 c0 rjmp .+334 ; 0x2f5e 2e10: 04 c0 rjmp .+8 ; 0x2e1a 2e12: 28 e0 ldi r18, 0x08 ; 8 2e14: 30 e0 ldi r19, 0x00 ; 0 2e16: 0a c0 rjmp .+20 ; 0x2e2c 2e18: 10 61 ori r17, 0x10 ; 16 2e1a: 14 fd sbrc r17, 4 2e1c: 14 60 ori r17, 0x04 ; 4 2e1e: 20 e1 ldi r18, 0x10 ; 16 2e20: 30 e0 ldi r19, 0x00 ; 0 2e22: 04 c0 rjmp .+8 ; 0x2e2c 2e24: 14 fd sbrc r17, 4 2e26: 16 60 ori r17, 0x06 ; 6 2e28: 20 e1 ldi r18, 0x10 ; 16 2e2a: 32 e0 ldi r19, 0x02 ; 2 2e2c: 17 ff sbrs r17, 7 2e2e: 08 c0 rjmp .+16 ; 0x2e40 2e30: f5 01 movw r30, r10 2e32: 60 81 ld r22, Z 2e34: 71 81 ldd r23, Z+1 ; 0x01 2e36: 82 81 ldd r24, Z+2 ; 0x02 2e38: 93 81 ldd r25, Z+3 ; 0x03 2e3a: 44 e0 ldi r20, 0x04 ; 4 2e3c: 50 e0 ldi r21, 0x00 ; 0 2e3e: 08 c0 rjmp .+16 ; 0x2e50 2e40: f5 01 movw r30, r10 2e42: 80 81 ld r24, Z 2e44: 91 81 ldd r25, Z+1 ; 0x01 2e46: bc 01 movw r22, r24 2e48: 80 e0 ldi r24, 0x00 ; 0 2e4a: 90 e0 ldi r25, 0x00 ; 0 2e4c: 42 e0 ldi r20, 0x02 ; 2 2e4e: 50 e0 ldi r21, 0x00 ; 0 2e50: a4 0e add r10, r20 2e52: b5 1e adc r11, r21 2e54: a1 01 movw r20, r2 2e56: 0e 94 f9 17 call 0x2ff2 ; 0x2ff2 <__ultoa_invert> 2e5a: f8 2e mov r15, r24 2e5c: f2 18 sub r15, r2 2e5e: 8f e7 ldi r24, 0x7F ; 127 2e60: d8 2e mov r13, r24 2e62: d1 22 and r13, r17 2e64: d6 fe sbrs r13, 6 2e66: 0b c0 rjmp .+22 ; 0x2e7e 2e68: 5e ef ldi r21, 0xFE ; 254 2e6a: d5 22 and r13, r21 2e6c: f9 14 cp r15, r9 2e6e: 38 f4 brcc .+14 ; 0x2e7e 2e70: d4 fe sbrs r13, 4 2e72: 07 c0 rjmp .+14 ; 0x2e82 2e74: d2 fc sbrc r13, 2 2e76: 05 c0 rjmp .+10 ; 0x2e82 2e78: 8f ee ldi r24, 0xEF ; 239 2e7a: d8 22 and r13, r24 2e7c: 02 c0 rjmp .+4 ; 0x2e82 2e7e: 1f 2d mov r17, r15 2e80: 01 c0 rjmp .+2 ; 0x2e84 2e82: 19 2d mov r17, r9 2e84: d4 fe sbrs r13, 4 2e86: 0d c0 rjmp .+26 ; 0x2ea2 2e88: fe 01 movw r30, r28 2e8a: ef 0d add r30, r15 2e8c: f1 1d adc r31, r1 2e8e: 80 81 ld r24, Z 2e90: 80 33 cpi r24, 0x30 ; 48 2e92: 19 f4 brne .+6 ; 0x2e9a 2e94: 99 ee ldi r25, 0xE9 ; 233 2e96: d9 22 and r13, r25 2e98: 08 c0 rjmp .+16 ; 0x2eaa 2e9a: 1f 5f subi r17, 0xFF ; 255 2e9c: d2 fe sbrs r13, 2 2e9e: 05 c0 rjmp .+10 ; 0x2eaa 2ea0: 03 c0 rjmp .+6 ; 0x2ea8 2ea2: 8d 2d mov r24, r13 2ea4: 86 78 andi r24, 0x86 ; 134 2ea6: 09 f0 breq .+2 ; 0x2eaa 2ea8: 1f 5f subi r17, 0xFF ; 255 2eaa: 0d 2d mov r16, r13 2eac: d3 fc sbrc r13, 3 2eae: 14 c0 rjmp .+40 ; 0x2ed8 2eb0: d0 fe sbrs r13, 0 2eb2: 0f c0 rjmp .+30 ; 0x2ed2 2eb4: 1c 15 cp r17, r12 2eb6: 10 f0 brcs .+4 ; 0x2ebc 2eb8: 9f 2c mov r9, r15 2eba: 0b c0 rjmp .+22 ; 0x2ed2 2ebc: 9f 2c mov r9, r15 2ebe: 9c 0c add r9, r12 2ec0: 91 1a sub r9, r17 2ec2: 1c 2d mov r17, r12 2ec4: 06 c0 rjmp .+12 ; 0x2ed2 2ec6: b3 01 movw r22, r6 2ec8: 80 e2 ldi r24, 0x20 ; 32 2eca: 90 e0 ldi r25, 0x00 ; 0 2ecc: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2ed0: 1f 5f subi r17, 0xFF ; 255 2ed2: 1c 15 cp r17, r12 2ed4: c0 f3 brcs .-16 ; 0x2ec6 2ed6: 04 c0 rjmp .+8 ; 0x2ee0 2ed8: 1c 15 cp r17, r12 2eda: 10 f4 brcc .+4 ; 0x2ee0 2edc: c1 1a sub r12, r17 2ede: 01 c0 rjmp .+2 ; 0x2ee2 2ee0: cc 24 eor r12, r12 2ee2: 04 ff sbrs r16, 4 2ee4: 10 c0 rjmp .+32 ; 0x2f06 2ee6: b3 01 movw r22, r6 2ee8: 80 e3 ldi r24, 0x30 ; 48 2eea: 90 e0 ldi r25, 0x00 ; 0 2eec: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2ef0: 02 ff sbrs r16, 2 2ef2: 1e c0 rjmp .+60 ; 0x2f30 2ef4: 01 fd sbrc r16, 1 2ef6: 03 c0 rjmp .+6 ; 0x2efe 2ef8: 88 e7 ldi r24, 0x78 ; 120 2efa: 90 e0 ldi r25, 0x00 ; 0 2efc: 02 c0 rjmp .+4 ; 0x2f02 2efe: 88 e5 ldi r24, 0x58 ; 88 2f00: 90 e0 ldi r25, 0x00 ; 0 2f02: b3 01 movw r22, r6 2f04: 0c c0 rjmp .+24 ; 0x2f1e 2f06: 80 2f mov r24, r16 2f08: 86 78 andi r24, 0x86 ; 134 2f0a: 91 f0 breq .+36 ; 0x2f30 2f0c: 01 ff sbrs r16, 1 2f0e: 02 c0 rjmp .+4 ; 0x2f14 2f10: 8b e2 ldi r24, 0x2B ; 43 2f12: 01 c0 rjmp .+2 ; 0x2f16 2f14: 80 e2 ldi r24, 0x20 ; 32 2f16: d7 fc sbrc r13, 7 2f18: 8d e2 ldi r24, 0x2D ; 45 2f1a: b3 01 movw r22, r6 2f1c: 90 e0 ldi r25, 0x00 ; 0 2f1e: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2f22: 06 c0 rjmp .+12 ; 0x2f30 2f24: b3 01 movw r22, r6 2f26: 80 e3 ldi r24, 0x30 ; 48 2f28: 90 e0 ldi r25, 0x00 ; 0 2f2a: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2f2e: 9a 94 dec r9 2f30: f9 14 cp r15, r9 2f32: c0 f3 brcs .-16 ; 0x2f24 2f34: fa 94 dec r15 2f36: f1 01 movw r30, r2 2f38: ef 0d add r30, r15 2f3a: f1 1d adc r31, r1 2f3c: b3 01 movw r22, r6 2f3e: 80 81 ld r24, Z 2f40: 90 e0 ldi r25, 0x00 ; 0 2f42: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2f46: ff 20 and r15, r15 2f48: a9 f7 brne .-22 ; 0x2f34 2f4a: 06 c0 rjmp .+12 ; 0x2f58 2f4c: b3 01 movw r22, r6 2f4e: 80 e2 ldi r24, 0x20 ; 32 2f50: 90 e0 ldi r25, 0x00 ; 0 2f52: 0e 94 cd 17 call 0x2f9a ; 0x2f9a 2f56: ca 94 dec r12 2f58: cc 20 and r12, r12 2f5a: c1 f7 brne .-16 ; 0x2f4c 2f5c: 41 ce rjmp .-894 ; 0x2be0 2f5e: f3 01 movw r30, r6 2f60: 66 81 ldd r22, Z+6 ; 0x06 2f62: 77 81 ldd r23, Z+7 ; 0x07 2f64: cb 01 movw r24, r22 2f66: 2b 96 adiw r28, 0x0b ; 11 2f68: e2 e1 ldi r30, 0x12 ; 18 2f6a: 0c 94 4e 1b jmp 0x369c ; 0x369c <__epilogue_restores__> 00002f6e : 2f6e: fc 01 movw r30, r24 2f70: 05 90 lpm r0, Z+ 2f72: 61 50 subi r22, 0x01 ; 1 2f74: 70 40 sbci r23, 0x00 ; 0 2f76: 01 10 cpse r0, r1 2f78: d8 f7 brcc .-10 ; 0x2f70 2f7a: 80 95 com r24 2f7c: 90 95 com r25 2f7e: 8e 0f add r24, r30 2f80: 9f 1f adc r25, r31 2f82: 08 95 ret 00002f84 : 2f84: fc 01 movw r30, r24 2f86: 61 50 subi r22, 0x01 ; 1 2f88: 70 40 sbci r23, 0x00 ; 0 2f8a: 01 90 ld r0, Z+ 2f8c: 01 10 cpse r0, r1 2f8e: d8 f7 brcc .-10 ; 0x2f86 2f90: 80 95 com r24 2f92: 90 95 com r25 2f94: 8e 0f add r24, r30 2f96: 9f 1f adc r25, r31 2f98: 08 95 ret 00002f9a : 2f9a: 0f 93 push r16 2f9c: 1f 93 push r17 2f9e: cf 93 push r28 2fa0: df 93 push r29 2fa2: 8c 01 movw r16, r24 2fa4: eb 01 movw r28, r22 2fa6: 8b 81 ldd r24, Y+3 ; 0x03 2fa8: 81 ff sbrs r24, 1 2faa: 1b c0 rjmp .+54 ; 0x2fe2 2fac: 82 ff sbrs r24, 2 2fae: 0d c0 rjmp .+26 ; 0x2fca 2fb0: 2e 81 ldd r18, Y+6 ; 0x06 2fb2: 3f 81 ldd r19, Y+7 ; 0x07 2fb4: 8c 81 ldd r24, Y+4 ; 0x04 2fb6: 9d 81 ldd r25, Y+5 ; 0x05 2fb8: 28 17 cp r18, r24 2fba: 39 07 cpc r19, r25 2fbc: 64 f4 brge .+24 ; 0x2fd6 2fbe: e8 81 ld r30, Y 2fc0: f9 81 ldd r31, Y+1 ; 0x01 2fc2: 01 93 st Z+, r16 2fc4: f9 83 std Y+1, r31 ; 0x01 2fc6: e8 83 st Y, r30 2fc8: 06 c0 rjmp .+12 ; 0x2fd6 2fca: e8 85 ldd r30, Y+8 ; 0x08 2fcc: f9 85 ldd r31, Y+9 ; 0x09 2fce: 80 2f mov r24, r16 2fd0: 09 95 icall 2fd2: 89 2b or r24, r25 2fd4: 31 f4 brne .+12 ; 0x2fe2 2fd6: 8e 81 ldd r24, Y+6 ; 0x06 2fd8: 9f 81 ldd r25, Y+7 ; 0x07 2fda: 01 96 adiw r24, 0x01 ; 1 2fdc: 9f 83 std Y+7, r25 ; 0x07 2fde: 8e 83 std Y+6, r24 ; 0x06 2fe0: 02 c0 rjmp .+4 ; 0x2fe6 2fe2: 0f ef ldi r16, 0xFF ; 255 2fe4: 1f ef ldi r17, 0xFF ; 255 2fe6: c8 01 movw r24, r16 2fe8: df 91 pop r29 2fea: cf 91 pop r28 2fec: 1f 91 pop r17 2fee: 0f 91 pop r16 2ff0: 08 95 ret 00002ff2 <__ultoa_invert>: 2ff2: fa 01 movw r30, r20 2ff4: aa 27 eor r26, r26 2ff6: 28 30 cpi r18, 0x08 ; 8 2ff8: 51 f1 breq .+84 ; 0x304e <__ultoa_invert+0x5c> 2ffa: 20 31 cpi r18, 0x10 ; 16 2ffc: 81 f1 breq .+96 ; 0x305e <__ultoa_invert+0x6c> 2ffe: e8 94 clt 3000: 6f 93 push r22 3002: 6e 7f andi r22, 0xFE ; 254 3004: 6e 5f subi r22, 0xFE ; 254 3006: 7f 4f sbci r23, 0xFF ; 255 3008: 8f 4f sbci r24, 0xFF ; 255 300a: 9f 4f sbci r25, 0xFF ; 255 300c: af 4f sbci r26, 0xFF ; 255 300e: b1 e0 ldi r27, 0x01 ; 1 3010: 3e d0 rcall .+124 ; 0x308e <__ultoa_invert+0x9c> 3012: b4 e0 ldi r27, 0x04 ; 4 3014: 3c d0 rcall .+120 ; 0x308e <__ultoa_invert+0x9c> 3016: 67 0f add r22, r23 3018: 78 1f adc r23, r24 301a: 89 1f adc r24, r25 301c: 9a 1f adc r25, r26 301e: a1 1d adc r26, r1 3020: 68 0f add r22, r24 3022: 79 1f adc r23, r25 3024: 8a 1f adc r24, r26 3026: 91 1d adc r25, r1 3028: a1 1d adc r26, r1 302a: 6a 0f add r22, r26 302c: 71 1d adc r23, r1 302e: 81 1d adc r24, r1 3030: 91 1d adc r25, r1 3032: a1 1d adc r26, r1 3034: 20 d0 rcall .+64 ; 0x3076 <__ultoa_invert+0x84> 3036: 09 f4 brne .+2 ; 0x303a <__ultoa_invert+0x48> 3038: 68 94 set 303a: 3f 91 pop r19 303c: 2a e0 ldi r18, 0x0A ; 10 303e: 26 9f mul r18, r22 3040: 11 24 eor r1, r1 3042: 30 19 sub r19, r0 3044: 30 5d subi r19, 0xD0 ; 208 3046: 31 93 st Z+, r19 3048: de f6 brtc .-74 ; 0x3000 <__ultoa_invert+0xe> 304a: cf 01 movw r24, r30 304c: 08 95 ret 304e: 46 2f mov r20, r22 3050: 47 70 andi r20, 0x07 ; 7 3052: 40 5d subi r20, 0xD0 ; 208 3054: 41 93 st Z+, r20 3056: b3 e0 ldi r27, 0x03 ; 3 3058: 0f d0 rcall .+30 ; 0x3078 <__ultoa_invert+0x86> 305a: c9 f7 brne .-14 ; 0x304e <__ultoa_invert+0x5c> 305c: f6 cf rjmp .-20 ; 0x304a <__ultoa_invert+0x58> 305e: 46 2f mov r20, r22 3060: 4f 70 andi r20, 0x0F ; 15 3062: 40 5d subi r20, 0xD0 ; 208 3064: 4a 33 cpi r20, 0x3A ; 58 3066: 18 f0 brcs .+6 ; 0x306e <__ultoa_invert+0x7c> 3068: 49 5d subi r20, 0xD9 ; 217 306a: 31 fd sbrc r19, 1 306c: 40 52 subi r20, 0x20 ; 32 306e: 41 93 st Z+, r20 3070: 02 d0 rcall .+4 ; 0x3076 <__ultoa_invert+0x84> 3072: a9 f7 brne .-22 ; 0x305e <__ultoa_invert+0x6c> 3074: ea cf rjmp .-44 ; 0x304a <__ultoa_invert+0x58> 3076: b4 e0 ldi r27, 0x04 ; 4 3078: a6 95 lsr r26 307a: 97 95 ror r25 307c: 87 95 ror r24 307e: 77 95 ror r23 3080: 67 95 ror r22 3082: ba 95 dec r27 3084: c9 f7 brne .-14 ; 0x3078 <__ultoa_invert+0x86> 3086: 00 97 sbiw r24, 0x00 ; 0 3088: 61 05 cpc r22, r1 308a: 71 05 cpc r23, r1 308c: 08 95 ret 308e: 9b 01 movw r18, r22 3090: ac 01 movw r20, r24 3092: 0a 2e mov r0, r26 3094: 06 94 lsr r0 3096: 57 95 ror r21 3098: 47 95 ror r20 309a: 37 95 ror r19 309c: 27 95 ror r18 309e: ba 95 dec r27 30a0: c9 f7 brne .-14 ; 0x3094 <__ultoa_invert+0xa2> 30a2: 62 0f add r22, r18 30a4: 73 1f adc r23, r19 30a6: 84 1f adc r24, r20 30a8: 95 1f adc r25, r21 30aa: a0 1d adc r26, r0 30ac: 08 95 ret 000030ae <__subsf3>: 30ae: 50 58 subi r21, 0x80 ; 128 000030b0 <__addsf3>: 30b0: bb 27 eor r27, r27 30b2: aa 27 eor r26, r26 30b4: 0e d0 rcall .+28 ; 0x30d2 <__addsf3x> 30b6: 4d c1 rjmp .+666 ; 0x3352 <__fp_round> 30b8: 3e d1 rcall .+636 ; 0x3336 <__fp_pscA> 30ba: 30 f0 brcs .+12 ; 0x30c8 <__addsf3+0x18> 30bc: 43 d1 rcall .+646 ; 0x3344 <__fp_pscB> 30be: 20 f0 brcs .+8 ; 0x30c8 <__addsf3+0x18> 30c0: 31 f4 brne .+12 ; 0x30ce <__addsf3+0x1e> 30c2: 9f 3f cpi r25, 0xFF ; 255 30c4: 11 f4 brne .+4 ; 0x30ca <__addsf3+0x1a> 30c6: 1e f4 brtc .+6 ; 0x30ce <__addsf3+0x1e> 30c8: 33 c1 rjmp .+614 ; 0x3330 <__fp_nan> 30ca: 0e f4 brtc .+2 ; 0x30ce <__addsf3+0x1e> 30cc: e0 95 com r30 30ce: e7 fb bst r30, 7 30d0: 29 c1 rjmp .+594 ; 0x3324 <__fp_inf> 000030d2 <__addsf3x>: 30d2: e9 2f mov r30, r25 30d4: 4f d1 rcall .+670 ; 0x3374 <__fp_split3> 30d6: 80 f3 brcs .-32 ; 0x30b8 <__addsf3+0x8> 30d8: ba 17 cp r27, r26 30da: 62 07 cpc r22, r18 30dc: 73 07 cpc r23, r19 30de: 84 07 cpc r24, r20 30e0: 95 07 cpc r25, r21 30e2: 18 f0 brcs .+6 ; 0x30ea <__addsf3x+0x18> 30e4: 71 f4 brne .+28 ; 0x3102 <__addsf3x+0x30> 30e6: 9e f5 brtc .+102 ; 0x314e <__addsf3x+0x7c> 30e8: 67 c1 rjmp .+718 ; 0x33b8 <__fp_zero> 30ea: 0e f4 brtc .+2 ; 0x30ee <__addsf3x+0x1c> 30ec: e0 95 com r30 30ee: 0b 2e mov r0, r27 30f0: ba 2f mov r27, r26 30f2: a0 2d mov r26, r0 30f4: 0b 01 movw r0, r22 30f6: b9 01 movw r22, r18 30f8: 90 01 movw r18, r0 30fa: 0c 01 movw r0, r24 30fc: ca 01 movw r24, r20 30fe: a0 01 movw r20, r0 3100: 11 24 eor r1, r1 3102: ff 27 eor r31, r31 3104: 59 1b sub r21, r25 3106: 99 f0 breq .+38 ; 0x312e <__addsf3x+0x5c> 3108: 59 3f cpi r21, 0xF9 ; 249 310a: 50 f4 brcc .+20 ; 0x3120 <__addsf3x+0x4e> 310c: 50 3e cpi r21, 0xE0 ; 224 310e: 68 f1 brcs .+90 ; 0x316a <__addsf3x+0x98> 3110: 1a 16 cp r1, r26 3112: f0 40 sbci r31, 0x00 ; 0 3114: a2 2f mov r26, r18 3116: 23 2f mov r18, r19 3118: 34 2f mov r19, r20 311a: 44 27 eor r20, r20 311c: 58 5f subi r21, 0xF8 ; 248 311e: f3 cf rjmp .-26 ; 0x3106 <__addsf3x+0x34> 3120: 46 95 lsr r20 3122: 37 95 ror r19 3124: 27 95 ror r18 3126: a7 95 ror r26 3128: f0 40 sbci r31, 0x00 ; 0 312a: 53 95 inc r21 312c: c9 f7 brne .-14 ; 0x3120 <__addsf3x+0x4e> 312e: 7e f4 brtc .+30 ; 0x314e <__addsf3x+0x7c> 3130: 1f 16 cp r1, r31 3132: ba 0b sbc r27, r26 3134: 62 0b sbc r22, r18 3136: 73 0b sbc r23, r19 3138: 84 0b sbc r24, r20 313a: ba f0 brmi .+46 ; 0x316a <__addsf3x+0x98> 313c: 91 50 subi r25, 0x01 ; 1 313e: a1 f0 breq .+40 ; 0x3168 <__addsf3x+0x96> 3140: ff 0f add r31, r31 3142: bb 1f adc r27, r27 3144: 66 1f adc r22, r22 3146: 77 1f adc r23, r23 3148: 88 1f adc r24, r24 314a: c2 f7 brpl .-16 ; 0x313c <__addsf3x+0x6a> 314c: 0e c0 rjmp .+28 ; 0x316a <__addsf3x+0x98> 314e: ba 0f add r27, r26 3150: 62 1f adc r22, r18 3152: 73 1f adc r23, r19 3154: 84 1f adc r24, r20 3156: 48 f4 brcc .+18 ; 0x316a <__addsf3x+0x98> 3158: 87 95 ror r24 315a: 77 95 ror r23 315c: 67 95 ror r22 315e: b7 95 ror r27 3160: f7 95 ror r31 3162: 9e 3f cpi r25, 0xFE ; 254 3164: 08 f0 brcs .+2 ; 0x3168 <__addsf3x+0x96> 3166: b3 cf rjmp .-154 ; 0x30ce <__addsf3+0x1e> 3168: 93 95 inc r25 316a: 88 0f add r24, r24 316c: 08 f0 brcs .+2 ; 0x3170 <__addsf3x+0x9e> 316e: 99 27 eor r25, r25 3170: ee 0f add r30, r30 3172: 97 95 ror r25 3174: 87 95 ror r24 3176: 08 95 ret 00003178 <__divsf3>: 3178: 0c d0 rcall .+24 ; 0x3192 <__divsf3x> 317a: eb c0 rjmp .+470 ; 0x3352 <__fp_round> 317c: e3 d0 rcall .+454 ; 0x3344 <__fp_pscB> 317e: 40 f0 brcs .+16 ; 0x3190 <__divsf3+0x18> 3180: da d0 rcall .+436 ; 0x3336 <__fp_pscA> 3182: 30 f0 brcs .+12 ; 0x3190 <__divsf3+0x18> 3184: 21 f4 brne .+8 ; 0x318e <__divsf3+0x16> 3186: 5f 3f cpi r21, 0xFF ; 255 3188: 19 f0 breq .+6 ; 0x3190 <__divsf3+0x18> 318a: cc c0 rjmp .+408 ; 0x3324 <__fp_inf> 318c: 51 11 cpse r21, r1 318e: 15 c1 rjmp .+554 ; 0x33ba <__fp_szero> 3190: cf c0 rjmp .+414 ; 0x3330 <__fp_nan> 00003192 <__divsf3x>: 3192: f0 d0 rcall .+480 ; 0x3374 <__fp_split3> 3194: 98 f3 brcs .-26 ; 0x317c <__divsf3+0x4> 00003196 <__divsf3_pse>: 3196: 99 23 and r25, r25 3198: c9 f3 breq .-14 ; 0x318c <__divsf3+0x14> 319a: 55 23 and r21, r21 319c: b1 f3 breq .-20 ; 0x318a <__divsf3+0x12> 319e: 95 1b sub r25, r21 31a0: 55 0b sbc r21, r21 31a2: bb 27 eor r27, r27 31a4: aa 27 eor r26, r26 31a6: 62 17 cp r22, r18 31a8: 73 07 cpc r23, r19 31aa: 84 07 cpc r24, r20 31ac: 38 f0 brcs .+14 ; 0x31bc <__divsf3_pse+0x26> 31ae: 9f 5f subi r25, 0xFF ; 255 31b0: 5f 4f sbci r21, 0xFF ; 255 31b2: 22 0f add r18, r18 31b4: 33 1f adc r19, r19 31b6: 44 1f adc r20, r20 31b8: aa 1f adc r26, r26 31ba: a9 f3 breq .-22 ; 0x31a6 <__divsf3_pse+0x10> 31bc: 33 d0 rcall .+102 ; 0x3224 <__divsf3_pse+0x8e> 31be: 0e 2e mov r0, r30 31c0: 3a f0 brmi .+14 ; 0x31d0 <__divsf3_pse+0x3a> 31c2: e0 e8 ldi r30, 0x80 ; 128 31c4: 30 d0 rcall .+96 ; 0x3226 <__divsf3_pse+0x90> 31c6: 91 50 subi r25, 0x01 ; 1 31c8: 50 40 sbci r21, 0x00 ; 0 31ca: e6 95 lsr r30 31cc: 00 1c adc r0, r0 31ce: ca f7 brpl .-14 ; 0x31c2 <__divsf3_pse+0x2c> 31d0: 29 d0 rcall .+82 ; 0x3224 <__divsf3_pse+0x8e> 31d2: fe 2f mov r31, r30 31d4: 27 d0 rcall .+78 ; 0x3224 <__divsf3_pse+0x8e> 31d6: 66 0f add r22, r22 31d8: 77 1f adc r23, r23 31da: 88 1f adc r24, r24 31dc: bb 1f adc r27, r27 31de: 26 17 cp r18, r22 31e0: 37 07 cpc r19, r23 31e2: 48 07 cpc r20, r24 31e4: ab 07 cpc r26, r27 31e6: b0 e8 ldi r27, 0x80 ; 128 31e8: 09 f0 breq .+2 ; 0x31ec <__divsf3_pse+0x56> 31ea: bb 0b sbc r27, r27 31ec: 80 2d mov r24, r0 31ee: bf 01 movw r22, r30 31f0: ff 27 eor r31, r31 31f2: 93 58 subi r25, 0x83 ; 131 31f4: 5f 4f sbci r21, 0xFF ; 255 31f6: 2a f0 brmi .+10 ; 0x3202 <__divsf3_pse+0x6c> 31f8: 9e 3f cpi r25, 0xFE ; 254 31fa: 51 05 cpc r21, r1 31fc: 68 f0 brcs .+26 ; 0x3218 <__divsf3_pse+0x82> 31fe: 92 c0 rjmp .+292 ; 0x3324 <__fp_inf> 3200: dc c0 rjmp .+440 ; 0x33ba <__fp_szero> 3202: 5f 3f cpi r21, 0xFF ; 255 3204: ec f3 brlt .-6 ; 0x3200 <__divsf3_pse+0x6a> 3206: 98 3e cpi r25, 0xE8 ; 232 3208: dc f3 brlt .-10 ; 0x3200 <__divsf3_pse+0x6a> 320a: 86 95 lsr r24 320c: 77 95 ror r23 320e: 67 95 ror r22 3210: b7 95 ror r27 3212: f7 95 ror r31 3214: 9f 5f subi r25, 0xFF ; 255 3216: c9 f7 brne .-14 ; 0x320a <__divsf3_pse+0x74> 3218: 88 0f add r24, r24 321a: 91 1d adc r25, r1 321c: 96 95 lsr r25 321e: 87 95 ror r24 3220: 97 f9 bld r25, 7 3222: 08 95 ret 3224: e1 e0 ldi r30, 0x01 ; 1 3226: 66 0f add r22, r22 3228: 77 1f adc r23, r23 322a: 88 1f adc r24, r24 322c: bb 1f adc r27, r27 322e: 62 17 cp r22, r18 3230: 73 07 cpc r23, r19 3232: 84 07 cpc r24, r20 3234: ba 07 cpc r27, r26 3236: 20 f0 brcs .+8 ; 0x3240 <__divsf3_pse+0xaa> 3238: 62 1b sub r22, r18 323a: 73 0b sbc r23, r19 323c: 84 0b sbc r24, r20 323e: ba 0b sbc r27, r26 3240: ee 1f adc r30, r30 3242: 88 f7 brcc .-30 ; 0x3226 <__divsf3_pse+0x90> 3244: e0 95 com r30 3246: 08 95 ret 00003248 <__fixsfsi>: 3248: 04 d0 rcall .+8 ; 0x3252 <__fixunssfsi> 324a: 68 94 set 324c: b1 11 cpse r27, r1 324e: b5 c0 rjmp .+362 ; 0x33ba <__fp_szero> 3250: 08 95 ret 00003252 <__fixunssfsi>: 3252: 98 d0 rcall .+304 ; 0x3384 <__fp_splitA> 3254: 88 f0 brcs .+34 ; 0x3278 <__fixunssfsi+0x26> 3256: 9f 57 subi r25, 0x7F ; 127 3258: 90 f0 brcs .+36 ; 0x327e <__fixunssfsi+0x2c> 325a: b9 2f mov r27, r25 325c: 99 27 eor r25, r25 325e: b7 51 subi r27, 0x17 ; 23 3260: a0 f0 brcs .+40 ; 0x328a <__fixunssfsi+0x38> 3262: d1 f0 breq .+52 ; 0x3298 <__fixunssfsi+0x46> 3264: 66 0f add r22, r22 3266: 77 1f adc r23, r23 3268: 88 1f adc r24, r24 326a: 99 1f adc r25, r25 326c: 1a f0 brmi .+6 ; 0x3274 <__fixunssfsi+0x22> 326e: ba 95 dec r27 3270: c9 f7 brne .-14 ; 0x3264 <__fixunssfsi+0x12> 3272: 12 c0 rjmp .+36 ; 0x3298 <__fixunssfsi+0x46> 3274: b1 30 cpi r27, 0x01 ; 1 3276: 81 f0 breq .+32 ; 0x3298 <__fixunssfsi+0x46> 3278: 9f d0 rcall .+318 ; 0x33b8 <__fp_zero> 327a: b1 e0 ldi r27, 0x01 ; 1 327c: 08 95 ret 327e: 9c c0 rjmp .+312 ; 0x33b8 <__fp_zero> 3280: 67 2f mov r22, r23 3282: 78 2f mov r23, r24 3284: 88 27 eor r24, r24 3286: b8 5f subi r27, 0xF8 ; 248 3288: 39 f0 breq .+14 ; 0x3298 <__fixunssfsi+0x46> 328a: b9 3f cpi r27, 0xF9 ; 249 328c: cc f3 brlt .-14 ; 0x3280 <__fixunssfsi+0x2e> 328e: 86 95 lsr r24 3290: 77 95 ror r23 3292: 67 95 ror r22 3294: b3 95 inc r27 3296: d9 f7 brne .-10 ; 0x328e <__fixunssfsi+0x3c> 3298: 3e f4 brtc .+14 ; 0x32a8 <__fixunssfsi+0x56> 329a: 90 95 com r25 329c: 80 95 com r24 329e: 70 95 com r23 32a0: 61 95 neg r22 32a2: 7f 4f sbci r23, 0xFF ; 255 32a4: 8f 4f sbci r24, 0xFF ; 255 32a6: 9f 4f sbci r25, 0xFF ; 255 32a8: 08 95 ret 000032aa <__floatunsisf>: 32aa: e8 94 clt 32ac: 09 c0 rjmp .+18 ; 0x32c0 <__floatsisf+0x12> 000032ae <__floatsisf>: 32ae: 97 fb bst r25, 7 32b0: 3e f4 brtc .+14 ; 0x32c0 <__floatsisf+0x12> 32b2: 90 95 com r25 32b4: 80 95 com r24 32b6: 70 95 com r23 32b8: 61 95 neg r22 32ba: 7f 4f sbci r23, 0xFF ; 255 32bc: 8f 4f sbci r24, 0xFF ; 255 32be: 9f 4f sbci r25, 0xFF ; 255 32c0: 99 23 and r25, r25 32c2: a9 f0 breq .+42 ; 0x32ee <__floatsisf+0x40> 32c4: f9 2f mov r31, r25 32c6: 96 e9 ldi r25, 0x96 ; 150 32c8: bb 27 eor r27, r27 32ca: 93 95 inc r25 32cc: f6 95 lsr r31 32ce: 87 95 ror r24 32d0: 77 95 ror r23 32d2: 67 95 ror r22 32d4: b7 95 ror r27 32d6: f1 11 cpse r31, r1 32d8: f8 cf rjmp .-16 ; 0x32ca <__floatsisf+0x1c> 32da: fa f4 brpl .+62 ; 0x331a <__floatsisf+0x6c> 32dc: bb 0f add r27, r27 32de: 11 f4 brne .+4 ; 0x32e4 <__floatsisf+0x36> 32e0: 60 ff sbrs r22, 0 32e2: 1b c0 rjmp .+54 ; 0x331a <__floatsisf+0x6c> 32e4: 6f 5f subi r22, 0xFF ; 255 32e6: 7f 4f sbci r23, 0xFF ; 255 32e8: 8f 4f sbci r24, 0xFF ; 255 32ea: 9f 4f sbci r25, 0xFF ; 255 32ec: 16 c0 rjmp .+44 ; 0x331a <__floatsisf+0x6c> 32ee: 88 23 and r24, r24 32f0: 11 f0 breq .+4 ; 0x32f6 <__floatsisf+0x48> 32f2: 96 e9 ldi r25, 0x96 ; 150 32f4: 11 c0 rjmp .+34 ; 0x3318 <__floatsisf+0x6a> 32f6: 77 23 and r23, r23 32f8: 21 f0 breq .+8 ; 0x3302 <__floatsisf+0x54> 32fa: 9e e8 ldi r25, 0x8E ; 142 32fc: 87 2f mov r24, r23 32fe: 76 2f mov r23, r22 3300: 05 c0 rjmp .+10 ; 0x330c <__floatsisf+0x5e> 3302: 66 23 and r22, r22 3304: 71 f0 breq .+28 ; 0x3322 <__floatsisf+0x74> 3306: 96 e8 ldi r25, 0x86 ; 134 3308: 86 2f mov r24, r22 330a: 70 e0 ldi r23, 0x00 ; 0 330c: 60 e0 ldi r22, 0x00 ; 0 330e: 2a f0 brmi .+10 ; 0x331a <__floatsisf+0x6c> 3310: 9a 95 dec r25 3312: 66 0f add r22, r22 3314: 77 1f adc r23, r23 3316: 88 1f adc r24, r24 3318: da f7 brpl .-10 ; 0x3310 <__floatsisf+0x62> 331a: 88 0f add r24, r24 331c: 96 95 lsr r25 331e: 87 95 ror r24 3320: 97 f9 bld r25, 7 3322: 08 95 ret 00003324 <__fp_inf>: 3324: 97 f9 bld r25, 7 3326: 9f 67 ori r25, 0x7F ; 127 3328: 80 e8 ldi r24, 0x80 ; 128 332a: 70 e0 ldi r23, 0x00 ; 0 332c: 60 e0 ldi r22, 0x00 ; 0 332e: 08 95 ret 00003330 <__fp_nan>: 3330: 9f ef ldi r25, 0xFF ; 255 3332: 80 ec ldi r24, 0xC0 ; 192 3334: 08 95 ret 00003336 <__fp_pscA>: 3336: 00 24 eor r0, r0 3338: 0a 94 dec r0 333a: 16 16 cp r1, r22 333c: 17 06 cpc r1, r23 333e: 18 06 cpc r1, r24 3340: 09 06 cpc r0, r25 3342: 08 95 ret 00003344 <__fp_pscB>: 3344: 00 24 eor r0, r0 3346: 0a 94 dec r0 3348: 12 16 cp r1, r18 334a: 13 06 cpc r1, r19 334c: 14 06 cpc r1, r20 334e: 05 06 cpc r0, r21 3350: 08 95 ret 00003352 <__fp_round>: 3352: 09 2e mov r0, r25 3354: 03 94 inc r0 3356: 00 0c add r0, r0 3358: 11 f4 brne .+4 ; 0x335e <__fp_round+0xc> 335a: 88 23 and r24, r24 335c: 52 f0 brmi .+20 ; 0x3372 <__fp_round+0x20> 335e: bb 0f add r27, r27 3360: 40 f4 brcc .+16 ; 0x3372 <__fp_round+0x20> 3362: bf 2b or r27, r31 3364: 11 f4 brne .+4 ; 0x336a <__fp_round+0x18> 3366: 60 ff sbrs r22, 0 3368: 04 c0 rjmp .+8 ; 0x3372 <__fp_round+0x20> 336a: 6f 5f subi r22, 0xFF ; 255 336c: 7f 4f sbci r23, 0xFF ; 255 336e: 8f 4f sbci r24, 0xFF ; 255 3370: 9f 4f sbci r25, 0xFF ; 255 3372: 08 95 ret 00003374 <__fp_split3>: 3374: 57 fd sbrc r21, 7 3376: 90 58 subi r25, 0x80 ; 128 3378: 44 0f add r20, r20 337a: 55 1f adc r21, r21 337c: 59 f0 breq .+22 ; 0x3394 <__fp_splitA+0x10> 337e: 5f 3f cpi r21, 0xFF ; 255 3380: 71 f0 breq .+28 ; 0x339e <__fp_splitA+0x1a> 3382: 47 95 ror r20 00003384 <__fp_splitA>: 3384: 88 0f add r24, r24 3386: 97 fb bst r25, 7 3388: 99 1f adc r25, r25 338a: 61 f0 breq .+24 ; 0x33a4 <__fp_splitA+0x20> 338c: 9f 3f cpi r25, 0xFF ; 255 338e: 79 f0 breq .+30 ; 0x33ae <__fp_splitA+0x2a> 3390: 87 95 ror r24 3392: 08 95 ret 3394: 12 16 cp r1, r18 3396: 13 06 cpc r1, r19 3398: 14 06 cpc r1, r20 339a: 55 1f adc r21, r21 339c: f2 cf rjmp .-28 ; 0x3382 <__fp_split3+0xe> 339e: 46 95 lsr r20 33a0: f1 df rcall .-30 ; 0x3384 <__fp_splitA> 33a2: 08 c0 rjmp .+16 ; 0x33b4 <__fp_splitA+0x30> 33a4: 16 16 cp r1, r22 33a6: 17 06 cpc r1, r23 33a8: 18 06 cpc r1, r24 33aa: 99 1f adc r25, r25 33ac: f1 cf rjmp .-30 ; 0x3390 <__fp_splitA+0xc> 33ae: 86 95 lsr r24 33b0: 71 05 cpc r23, r1 33b2: 61 05 cpc r22, r1 33b4: 08 94 sec 33b6: 08 95 ret 000033b8 <__fp_zero>: 33b8: e8 94 clt 000033ba <__fp_szero>: 33ba: bb 27 eor r27, r27 33bc: 66 27 eor r22, r22 33be: 77 27 eor r23, r23 33c0: cb 01 movw r24, r22 33c2: 97 f9 bld r25, 7 33c4: 08 95 ret 33c6: 0e f0 brts .+2 ; 0x33ca <__fp_szero+0x10> 33c8: a6 c0 rjmp .+332 ; 0x3516 <__fp_mpack> 33ca: b2 cf rjmp .-156 ; 0x3330 <__fp_nan> 33cc: 68 94 set 33ce: aa cf rjmp .-172 ; 0x3324 <__fp_inf> 000033d0 : 33d0: d9 df rcall .-78 ; 0x3384 <__fp_splitA> 33d2: c8 f3 brcs .-14 ; 0x33c6 <__fp_szero+0xc> 33d4: 99 23 and r25, r25 33d6: d1 f3 breq .-12 ; 0x33cc <__fp_szero+0x12> 33d8: c6 f3 brts .-16 ; 0x33ca <__fp_szero+0x10> 33da: df 93 push r29 33dc: cf 93 push r28 33de: 1f 93 push r17 33e0: 0f 93 push r16 33e2: ff 92 push r15 33e4: c9 2f mov r28, r25 33e6: dd 27 eor r29, r29 33e8: 88 23 and r24, r24 33ea: 2a f0 brmi .+10 ; 0x33f6 33ec: 21 97 sbiw r28, 0x01 ; 1 33ee: 66 0f add r22, r22 33f0: 77 1f adc r23, r23 33f2: 88 1f adc r24, r24 33f4: da f7 brpl .-10 ; 0x33ec 33f6: 20 e0 ldi r18, 0x00 ; 0 33f8: 30 e0 ldi r19, 0x00 ; 0 33fa: 40 e8 ldi r20, 0x80 ; 128 33fc: 5f eb ldi r21, 0xBF ; 191 33fe: 9f e3 ldi r25, 0x3F ; 63 3400: 88 39 cpi r24, 0x98 ; 152 3402: 20 f0 brcs .+8 ; 0x340c 3404: 80 3e cpi r24, 0xE0 ; 224 3406: 30 f0 brcs .+12 ; 0x3414 3408: 21 96 adiw r28, 0x01 ; 1 340a: 8f 77 andi r24, 0x7F ; 127 340c: 51 de rcall .-862 ; 0x30b0 <__addsf3> 340e: ec e7 ldi r30, 0x7C ; 124 3410: f0 e0 ldi r31, 0x00 ; 0 3412: 03 c0 rjmp .+6 ; 0x341a 3414: 4d de rcall .-870 ; 0x30b0 <__addsf3> 3416: e9 ea ldi r30, 0xA9 ; 169 3418: f0 e0 ldi r31, 0x00 ; 0 341a: 8d d0 rcall .+282 ; 0x3536 <__fp_powser> 341c: 8b 01 movw r16, r22 341e: be 01 movw r22, r28 3420: ec 01 movw r28, r24 3422: fb 2e mov r15, r27 3424: 6f 57 subi r22, 0x7F ; 127 3426: 71 09 sbc r23, r1 3428: 75 95 asr r23 342a: 77 1f adc r23, r23 342c: 88 0b sbc r24, r24 342e: 99 0b sbc r25, r25 3430: 3e df rcall .-388 ; 0x32ae <__floatsisf> 3432: 28 e1 ldi r18, 0x18 ; 24 3434: 32 e7 ldi r19, 0x72 ; 114 3436: 41 e3 ldi r20, 0x31 ; 49 3438: 5f e3 ldi r21, 0x3F ; 63 343a: 16 d0 rcall .+44 ; 0x3468 <__mulsf3x> 343c: af 2d mov r26, r15 343e: 98 01 movw r18, r16 3440: ae 01 movw r20, r28 3442: ff 90 pop r15 3444: 0f 91 pop r16 3446: 1f 91 pop r17 3448: cf 91 pop r28 344a: df 91 pop r29 344c: 42 de rcall .-892 ; 0x30d2 <__addsf3x> 344e: 81 cf rjmp .-254 ; 0x3352 <__fp_round> 00003450 <__mulsf3>: 3450: 0b d0 rcall .+22 ; 0x3468 <__mulsf3x> 3452: 7f cf rjmp .-258 ; 0x3352 <__fp_round> 3454: 70 df rcall .-288 ; 0x3336 <__fp_pscA> 3456: 28 f0 brcs .+10 ; 0x3462 <__mulsf3+0x12> 3458: 75 df rcall .-278 ; 0x3344 <__fp_pscB> 345a: 18 f0 brcs .+6 ; 0x3462 <__mulsf3+0x12> 345c: 95 23 and r25, r21 345e: 09 f0 breq .+2 ; 0x3462 <__mulsf3+0x12> 3460: 61 cf rjmp .-318 ; 0x3324 <__fp_inf> 3462: 66 cf rjmp .-308 ; 0x3330 <__fp_nan> 3464: 11 24 eor r1, r1 3466: a9 cf rjmp .-174 ; 0x33ba <__fp_szero> 00003468 <__mulsf3x>: 3468: 85 df rcall .-246 ; 0x3374 <__fp_split3> 346a: a0 f3 brcs .-24 ; 0x3454 <__mulsf3+0x4> 0000346c <__mulsf3_pse>: 346c: 95 9f mul r25, r21 346e: d1 f3 breq .-12 ; 0x3464 <__mulsf3+0x14> 3470: 95 0f add r25, r21 3472: 50 e0 ldi r21, 0x00 ; 0 3474: 55 1f adc r21, r21 3476: 62 9f mul r22, r18 3478: f0 01 movw r30, r0 347a: 72 9f mul r23, r18 347c: bb 27 eor r27, r27 347e: f0 0d add r31, r0 3480: b1 1d adc r27, r1 3482: 63 9f mul r22, r19 3484: aa 27 eor r26, r26 3486: f0 0d add r31, r0 3488: b1 1d adc r27, r1 348a: aa 1f adc r26, r26 348c: 64 9f mul r22, r20 348e: 66 27 eor r22, r22 3490: b0 0d add r27, r0 3492: a1 1d adc r26, r1 3494: 66 1f adc r22, r22 3496: 82 9f mul r24, r18 3498: 22 27 eor r18, r18 349a: b0 0d add r27, r0 349c: a1 1d adc r26, r1 349e: 62 1f adc r22, r18 34a0: 73 9f mul r23, r19 34a2: b0 0d add r27, r0 34a4: a1 1d adc r26, r1 34a6: 62 1f adc r22, r18 34a8: 83 9f mul r24, r19 34aa: a0 0d add r26, r0 34ac: 61 1d adc r22, r1 34ae: 22 1f adc r18, r18 34b0: 74 9f mul r23, r20 34b2: 33 27 eor r19, r19 34b4: a0 0d add r26, r0 34b6: 61 1d adc r22, r1 34b8: 23 1f adc r18, r19 34ba: 84 9f mul r24, r20 34bc: 60 0d add r22, r0 34be: 21 1d adc r18, r1 34c0: 82 2f mov r24, r18 34c2: 76 2f mov r23, r22 34c4: 6a 2f mov r22, r26 34c6: 11 24 eor r1, r1 34c8: 9f 57 subi r25, 0x7F ; 127 34ca: 50 40 sbci r21, 0x00 ; 0 34cc: 8a f0 brmi .+34 ; 0x34f0 <__mulsf3_pse+0x84> 34ce: e1 f0 breq .+56 ; 0x3508 <__mulsf3_pse+0x9c> 34d0: 88 23 and r24, r24 34d2: 4a f0 brmi .+18 ; 0x34e6 <__mulsf3_pse+0x7a> 34d4: ee 0f add r30, r30 34d6: ff 1f adc r31, r31 34d8: bb 1f adc r27, r27 34da: 66 1f adc r22, r22 34dc: 77 1f adc r23, r23 34de: 88 1f adc r24, r24 34e0: 91 50 subi r25, 0x01 ; 1 34e2: 50 40 sbci r21, 0x00 ; 0 34e4: a9 f7 brne .-22 ; 0x34d0 <__mulsf3_pse+0x64> 34e6: 9e 3f cpi r25, 0xFE ; 254 34e8: 51 05 cpc r21, r1 34ea: 70 f0 brcs .+28 ; 0x3508 <__mulsf3_pse+0x9c> 34ec: 1b cf rjmp .-458 ; 0x3324 <__fp_inf> 34ee: 65 cf rjmp .-310 ; 0x33ba <__fp_szero> 34f0: 5f 3f cpi r21, 0xFF ; 255 34f2: ec f3 brlt .-6 ; 0x34ee <__mulsf3_pse+0x82> 34f4: 98 3e cpi r25, 0xE8 ; 232 34f6: dc f3 brlt .-10 ; 0x34ee <__mulsf3_pse+0x82> 34f8: 86 95 lsr r24 34fa: 77 95 ror r23 34fc: 67 95 ror r22 34fe: b7 95 ror r27 3500: f7 95 ror r31 3502: e7 95 ror r30 3504: 9f 5f subi r25, 0xFF ; 255 3506: c1 f7 brne .-16 ; 0x34f8 <__mulsf3_pse+0x8c> 3508: fe 2b or r31, r30 350a: 88 0f add r24, r24 350c: 91 1d adc r25, r1 350e: 96 95 lsr r25 3510: 87 95 ror r24 3512: 97 f9 bld r25, 7 3514: 08 95 ret 00003516 <__fp_mpack>: 3516: 9f 3f cpi r25, 0xFF ; 255 3518: 49 f0 breq .+18 ; 0x352c <__fp_mpack+0x16> 351a: 91 50 subi r25, 0x01 ; 1 351c: 28 f4 brcc .+10 ; 0x3528 <__fp_mpack+0x12> 351e: 86 95 lsr r24 3520: 77 95 ror r23 3522: 67 95 ror r22 3524: b7 95 ror r27 3526: 9f 5f subi r25, 0xFF ; 255 3528: 80 38 cpi r24, 0x80 ; 128 352a: 9f 4f sbci r25, 0xFF ; 255 352c: 88 0f add r24, r24 352e: 96 95 lsr r25 3530: 87 95 ror r24 3532: 97 f9 bld r25, 7 3534: 08 95 ret 00003536 <__fp_powser>: 3536: df 93 push r29 3538: cf 93 push r28 353a: 1f 93 push r17 353c: 0f 93 push r16 353e: ff 92 push r15 3540: ef 92 push r14 3542: df 92 push r13 3544: 7b 01 movw r14, r22 3546: 8c 01 movw r16, r24 3548: 68 94 set 354a: 05 c0 rjmp .+10 ; 0x3556 <__fp_powser+0x20> 354c: da 2e mov r13, r26 354e: ef 01 movw r28, r30 3550: 8b df rcall .-234 ; 0x3468 <__mulsf3x> 3552: fe 01 movw r30, r28 3554: e8 94 clt 3556: a5 91 lpm r26, Z+ 3558: 25 91 lpm r18, Z+ 355a: 35 91 lpm r19, Z+ 355c: 45 91 lpm r20, Z+ 355e: 55 91 lpm r21, Z+ 3560: ae f3 brts .-22 ; 0x354c <__fp_powser+0x16> 3562: ef 01 movw r28, r30 3564: b6 dd rcall .-1172 ; 0x30d2 <__addsf3x> 3566: fe 01 movw r30, r28 3568: 97 01 movw r18, r14 356a: a8 01 movw r20, r16 356c: da 94 dec r13 356e: 79 f7 brne .-34 ; 0x354e <__fp_powser+0x18> 3570: df 90 pop r13 3572: ef 90 pop r14 3574: ff 90 pop r15 3576: 0f 91 pop r16 3578: 1f 91 pop r17 357a: cf 91 pop r28 357c: df 91 pop r29 357e: 08 95 ret 00003580 <__udivmodhi4>: 3580: aa 1b sub r26, r26 3582: bb 1b sub r27, r27 3584: 51 e1 ldi r21, 0x11 ; 17 3586: 07 c0 rjmp .+14 ; 0x3596 <__udivmodhi4_ep> 00003588 <__udivmodhi4_loop>: 3588: aa 1f adc r26, r26 358a: bb 1f adc r27, r27 358c: a6 17 cp r26, r22 358e: b7 07 cpc r27, r23 3590: 10 f0 brcs .+4 ; 0x3596 <__udivmodhi4_ep> 3592: a6 1b sub r26, r22 3594: b7 0b sbc r27, r23 00003596 <__udivmodhi4_ep>: 3596: 88 1f adc r24, r24 3598: 99 1f adc r25, r25 359a: 5a 95 dec r21 359c: a9 f7 brne .-22 ; 0x3588 <__udivmodhi4_loop> 359e: 80 95 com r24 35a0: 90 95 com r25 35a2: bc 01 movw r22, r24 35a4: cd 01 movw r24, r26 35a6: 08 95 ret 000035a8 <__divmodhi4>: 35a8: 97 fb bst r25, 7 35aa: 09 2e mov r0, r25 35ac: 07 26 eor r0, r23 35ae: 0a d0 rcall .+20 ; 0x35c4 <__divmodhi4_neg1> 35b0: 77 fd sbrc r23, 7 35b2: 04 d0 rcall .+8 ; 0x35bc <__divmodhi4_neg2> 35b4: e5 df rcall .-54 ; 0x3580 <__udivmodhi4> 35b6: 06 d0 rcall .+12 ; 0x35c4 <__divmodhi4_neg1> 35b8: 00 20 and r0, r0 35ba: 1a f4 brpl .+6 ; 0x35c2 <__divmodhi4_exit> 000035bc <__divmodhi4_neg2>: 35bc: 70 95 com r23 35be: 61 95 neg r22 35c0: 7f 4f sbci r23, 0xFF ; 255 000035c2 <__divmodhi4_exit>: 35c2: 08 95 ret 000035c4 <__divmodhi4_neg1>: 35c4: f6 f7 brtc .-4 ; 0x35c2 <__divmodhi4_exit> 35c6: 90 95 com r25 35c8: 81 95 neg r24 35ca: 9f 4f sbci r25, 0xFF ; 255 35cc: 08 95 ret 000035ce <__divmodsi4>: 35ce: 97 fb bst r25, 7 35d0: 09 2e mov r0, r25 35d2: 05 26 eor r0, r21 35d4: 0e d0 rcall .+28 ; 0x35f2 <__divmodsi4_neg1> 35d6: 57 fd sbrc r21, 7 35d8: 04 d0 rcall .+8 ; 0x35e2 <__divmodsi4_neg2> 35da: 14 d0 rcall .+40 ; 0x3604 <__udivmodsi4> 35dc: 0a d0 rcall .+20 ; 0x35f2 <__divmodsi4_neg1> 35de: 00 1c adc r0, r0 35e0: 38 f4 brcc .+14 ; 0x35f0 <__divmodsi4_exit> 000035e2 <__divmodsi4_neg2>: 35e2: 50 95 com r21 35e4: 40 95 com r20 35e6: 30 95 com r19 35e8: 21 95 neg r18 35ea: 3f 4f sbci r19, 0xFF ; 255 35ec: 4f 4f sbci r20, 0xFF ; 255 35ee: 5f 4f sbci r21, 0xFF ; 255 000035f0 <__divmodsi4_exit>: 35f0: 08 95 ret 000035f2 <__divmodsi4_neg1>: 35f2: f6 f7 brtc .-4 ; 0x35f0 <__divmodsi4_exit> 35f4: 90 95 com r25 35f6: 80 95 com r24 35f8: 70 95 com r23 35fa: 61 95 neg r22 35fc: 7f 4f sbci r23, 0xFF ; 255 35fe: 8f 4f sbci r24, 0xFF ; 255 3600: 9f 4f sbci r25, 0xFF ; 255 3602: 08 95 ret 00003604 <__udivmodsi4>: 3604: a1 e2 ldi r26, 0x21 ; 33 3606: 1a 2e mov r1, r26 3608: aa 1b sub r26, r26 360a: bb 1b sub r27, r27 360c: fd 01 movw r30, r26 360e: 0d c0 rjmp .+26 ; 0x362a <__udivmodsi4_ep> 00003610 <__udivmodsi4_loop>: 3610: aa 1f adc r26, r26 3612: bb 1f adc r27, r27 3614: ee 1f adc r30, r30 3616: ff 1f adc r31, r31 3618: a2 17 cp r26, r18 361a: b3 07 cpc r27, r19 361c: e4 07 cpc r30, r20 361e: f5 07 cpc r31, r21 3620: 20 f0 brcs .+8 ; 0x362a <__udivmodsi4_ep> 3622: a2 1b sub r26, r18 3624: b3 0b sbc r27, r19 3626: e4 0b sbc r30, r20 3628: f5 0b sbc r31, r21 0000362a <__udivmodsi4_ep>: 362a: 66 1f adc r22, r22 362c: 77 1f adc r23, r23 362e: 88 1f adc r24, r24 3630: 99 1f adc r25, r25 3632: 1a 94 dec r1 3634: 69 f7 brne .-38 ; 0x3610 <__udivmodsi4_loop> 3636: 60 95 com r22 3638: 70 95 com r23 363a: 80 95 com r24 363c: 90 95 com r25 363e: 9b 01 movw r18, r22 3640: ac 01 movw r20, r24 3642: bd 01 movw r22, r26 3644: cf 01 movw r24, r30 3646: 08 95 ret 00003648 : 3648: 91 11 cpse r25, r1 364a: 09 c0 rjmp .+18 ; 0x365e <__ctype_isfalse> 364c: 80 53 subi r24, 0x30 ; 48 364e: 8a 50 subi r24, 0x0A ; 10 3650: 28 f0 brcs .+10 ; 0x365c 3652: 86 5c subi r24, 0xC6 ; 198 3654: 80 62 ori r24, 0x20 ; 32 3656: 81 56 subi r24, 0x61 ; 97 3658: 86 50 subi r24, 0x06 ; 6 365a: b8 f7 brcc .-18 ; 0x364a 365c: 08 95 ret 0000365e <__ctype_isfalse>: 365e: 99 27 eor r25, r25 3660: 88 27 eor r24, r24 00003662 <__ctype_istrue>: 3662: 08 95 ret 00003664 <__prologue_saves__>: 3664: 2f 92 push r2 3666: 3f 92 push r3 3668: 4f 92 push r4 366a: 5f 92 push r5 366c: 6f 92 push r6 366e: 7f 92 push r7 3670: 8f 92 push r8 3672: 9f 92 push r9 3674: af 92 push r10 3676: bf 92 push r11 3678: cf 92 push r12 367a: df 92 push r13 367c: ef 92 push r14 367e: ff 92 push r15 3680: 0f 93 push r16 3682: 1f 93 push r17 3684: cf 93 push r28 3686: df 93 push r29 3688: cd b7 in r28, 0x3d ; 61 368a: de b7 in r29, 0x3e ; 62 368c: ca 1b sub r28, r26 368e: db 0b sbc r29, r27 3690: 0f b6 in r0, 0x3f ; 63 3692: f8 94 cli 3694: de bf out 0x3e, r29 ; 62 3696: 0f be out 0x3f, r0 ; 63 3698: cd bf out 0x3d, r28 ; 61 369a: 09 94 ijmp 0000369c <__epilogue_restores__>: 369c: 2a 88 ldd r2, Y+18 ; 0x12 369e: 39 88 ldd r3, Y+17 ; 0x11 36a0: 48 88 ldd r4, Y+16 ; 0x10 36a2: 5f 84 ldd r5, Y+15 ; 0x0f 36a4: 6e 84 ldd r6, Y+14 ; 0x0e 36a6: 7d 84 ldd r7, Y+13 ; 0x0d 36a8: 8c 84 ldd r8, Y+12 ; 0x0c 36aa: 9b 84 ldd r9, Y+11 ; 0x0b 36ac: aa 84 ldd r10, Y+10 ; 0x0a 36ae: b9 84 ldd r11, Y+9 ; 0x09 36b0: c8 84 ldd r12, Y+8 ; 0x08 36b2: df 80 ldd r13, Y+7 ; 0x07 36b4: ee 80 ldd r14, Y+6 ; 0x06 36b6: fd 80 ldd r15, Y+5 ; 0x05 36b8: 0c 81 ldd r16, Y+4 ; 0x04 36ba: 1b 81 ldd r17, Y+3 ; 0x03 36bc: aa 81 ldd r26, Y+2 ; 0x02 36be: b9 81 ldd r27, Y+1 ; 0x01 36c0: ce 0f add r28, r30 36c2: d1 1d adc r29, r1 36c4: 0f b6 in r0, 0x3f ; 63 36c6: f8 94 cli 36c8: de bf out 0x3e, r29 ; 62 36ca: 0f be out 0x3f, r0 ; 63 36cc: cd bf out 0x3d, r28 ; 61 36ce: ed 01 movw r28, r26 36d0: 08 95 ret 000036d2 <_exit>: 36d2: f8 94 cli 000036d4 <__stop_program>: 36d4: ff cf rjmp .-2 ; 0x36d4 <__stop_program>