/***** Tabweite: 8
Disassemblierung des Atmel-Urladers für ATmega32U4,
der ab Werk in diese Mikrocontroller ab Byteadresse 0x7000 geflasht ist
und exorbitante 4 KByte groß ist. Binärgleichheit wurde sichergestellt.
Vergleichsdatei „b.bin“ erzeugen:
avr-objcopy -I ihex -O binary --gap-fill 0xff ATMega32U4-usbdevice_dfu-1_0_0.hex b.bin
Assemblieren dieser Datei zu Binärbild „a.bin“:
avr-gcc -mmcu=m32u4 mega32u4dfu.S -Wl,--section-start=.text=0x7000 -nostartfiles
avr-objcopy -O binary a.out a.bin
a.bin und b.bin müssen gleich sein.
Es konnte keine Stelle ausfindig gemacht werden, wo der Urlader das Pin HWB am PortE einliest.
Also macht das wohl die Hardware. Auch Reset-Ursachen in MCUSR werden nicht ausgewertet.
Noch nicht komplett disassembliert. Wurde offenbar mit IAR-C erstellt.
heha, 210217
*****/
#define __SFR_OFFSET 0
#include <avr/io.h>
jmp reset_vect
.org 0x0028,0xFF // Allgemeiner USB-Interrupt (Auf wessen Mist das wohl gewachsen ist?!)
jmp usb_vect
.org 0x002f,0xFF // Seltsamerweise auf ungeraden Adressen!!
//Device-Deskriptor
L702F: .byte 0x12,0x01,0x00,0x02,0xFF,0x01,0x00,0x20
.word 0x03EB,0x2FF4,0 // PID + VID: Atmel DFU
.byte 0x01,0x02,0x03,0x01 // String-Indizes
//Config-Deskriptor
L7041: .byte 0x09,0x02
.word 0x0012
.byte 0x01,0x01
.byte 0x00,0x80
.byte 50
.byte 0x09,0x04,0,0,0,0,0,0,0 //Interface-Deskriptor
//String-Deskriptoren
L7053: .word 0x030C,'A','T','M','E','L'
L705F: .word 0x0316,'A','T','m','3','2','U','4','D','F','U'
L7075: .word 0x030C,'1','.','0','.','0'
L7081: .word 0x0304,0x0409 // english-US
L7085: // RAM-Initialisierblöcke (oder wie iar-cc die Hosen mit der Kneifzange anzieht)
.word 0x0116,0x010C,0 // section(".bss")
.word 0x000C,0x0100,L7F6C // section(".data")
L7091:
.org 0x0092,0xFF
eeread_nowait:
out EEARH, r17
out EEARL, r16
sbi EECR, 0
in r16, EEDR
ret
1: ldi r16, 1
ret
eewrite:
0: sbic EECR, 1
rjmp 0b
out EEARH, r17
out EEARL, r16
out EEDR, r18
sbi EECR, 2
sbi EECR, 1
rjmp 1b
eeread:
0: sbic EECR, 1
rjmp 0b
jmp eeread_nowait
L70B8:
movw ZL, r16
lpm r16, Z
ret
L70BE:
movw ZL, r16
lpm r19, Z
adiw ZL, 1
lpm r18, Z
movw r16, r18
ret
L70CA:
/*70ca: 00 91 61 00*/ lds r16, CLKPR
/*70ce: 00 93 0c 01*/ sts 0x010C, r16 // retten
/*70d2: 00 e8*/ ldi r16, 0x80
/*70d4: 00 93 61 00*/ sts CLKPR, r16
/*70d8: 01 e0*/ ldi r16, 0x01 // Taktteiler ÷2
/*70da: 00 93 61 00*/ sts CLKPR, r16
/*70de: 05 bf*/ out MCUCR, r16
/*70e0: 02 e0*/ ldi r16, 0x02 // Interruptvektoren in Urlader-Bereich
/*70e2: 05 bf*/ out MCUCR, r16
/*70e4: 0c 94 86 38*/ jmp L710C
L70E8: // Watchdog abschalten, USB-Spannungsregler aktivieren
/*70e8: 00 91 d7 00*/ lds r16, UHWCON
/*70ec: 01 60*/ ori r16, 0x01
/*70ee: 00 93 d7 00*/ sts UHWCON, r16
/*70f2: a8 95*/ wdr
/*70f4: 07 ef*/ ldi r16, ~8
/*70f6: 04 bf*/ out MCUSR, r16 // Uh, lassen sich Bits setzen oder nicht? Datenblattwidrig! Jedenfalls Watchdog-Bit rücksetzen.
/*70f8: 00 91 60 00*/ lds r16, WDTCSR
/*70fc: 00 61*/ ori r16, 0x10
/*70fe: 00 93 60 00*/ sts WDTCSR, r16
/*7102: 00 e0*/ ldi r16, 0x00
/*7104: 00 93 60 00*/ sts WDTCSR, r16
/*7108: 01 e0*/ ldi r16, 0x01 // stets true liefern
/*710a: 08 95*/ ret
L710C:
/*710c: 0e 94 aa 3d*/ call L7B54
/*7110: 0e 94 b5 3d*/0: call L7B6A // 0x7b6a
/*7114: fd cf*/ rjmp 0b
L7116:
/*7116: 0c d0*/ rcall L7130
/*7118: 0f 77*/ andi r16, 0x7F // 127
/*711a: 08 d0*/ rcall L712C
/*711c: 00 68*/ ori r16, 0x80 // 128
/*711e: 06 d0*/ rcall L712C
/*7120: 00 61*/ ori r16, 0x10 // 16
/*7122: 04 d0*/ rcall L712C
/*7124: 01 60*/ ori r16, 0x01 // 1
/*7126: 28 d0*/ rcall L7178
/*7128: 78 94*/ sei
/*712a: 08 95*/ ret
L712C:
/*712c: 00 93 d8 00*/ sts USBCON, r16
L7130:
/*7130: 00 91 d8 00*/ lds r16, USBCON
/*7134: 08 95*/ ret
L7136:
/*7136: fc df*/ rcall L7130
/*7138: 00 62*/ ori r16, 0x20 // 32
/*713a: 1e d0*/ rcall L7178
/*713c: 4c d0*/ rcall L71D6
/*713e: 09 b5*/ 0: in r16, PLLCSR // 41
/*7140: 00 ff*/ sbrs r16, 0
/*7142: fd cf*/ rjmp 0b
/*7144: f5 df*/ rcall L7130
/*7146: 0f 7d*/ andi r16, 0xDF // 223
/*7148: 17 d0*/ rcall L7178
/*714a: 00 91 e0 00*/ lds r16, UDCON
/*714e: 0e 7f*/ andi r16, 0xFE // 254
/*7150: 00 93 e0 00*/ sts UDCON, r16
/*7154: 00 91 e0 00*/ lds r16, UDCON
/*7158: 07 7f*/ andi r16, 0xF7 // 247
/*715a: 00 93 e0 00*/ sts UDCON, r16
/*715e: 00 91 e2 00*/ lds r16, UDIEN
/*7162: 01 60*/ ori r16, 0x01 // 1
/*7164: 00 93 e2 00*/ sts UDIEN, r16
/*7168: 00 91 e2 00*/ lds r16, UDIEN
/*716c: 08 60*/ ori r16, 0x08 // 8
/*716e: 00 93 e2 00*/ sts UDIEN, r16
/*7172: 78 94*/ sei
/*7174: 0c 94 74 3b*/ jmp 0x76e8 // 0x76e8
L7178:
/*7178: 00 93 d8 00*/ sts USBCON, r16
/*717c: 08 95*/ ret
L717E:
/*717e: 00 91 0d 01*/ lds r16, 0x010D
/*7182: 00 23*/ and r16, r16
/*7184: 59 f4*/ brne 7f
/*7186: 00 91 d9 00*/ lds r16, USBSTA
/*718a: 00 ff*/ sbrs r16, 0
/*718c: 07 c0*/ rjmp 7f
/*718e: d0 df*/ rcall L7130
/*7190: 00 68*/ ori r16, 0x80 // 128
/*7192: f2 df*/ rcall L7178
/*7194: 01 e0*/ ldi r16, 0x01 // 1
/*7196: 00 93 0d 01*/ sts 0x010D, r16
/*719a: cd df*/ rcall L7136
/*719c: e0 e2*/ 7: ldi ZL, 0x20 // 32
/*719e: f2 e0*/ ldi ZH, 0x02 // 2
/*71a0: 00 81*/ ld r16, Z
/*71a2: 01 81*/ ldd r16, Z+1 // 0x01
/*71a4: 00 ff*/ sbrs r16, 0
/*71a6: 0d c0*/ rjmp 8f
/*71a8: 00 81*/ ld r16, Z
/*71aa: 11 81*/ ldd r17, Z+1 // 0x01
/*71ac: 1e 7f*/ andi r17, 0xFE // 254
/*71ae: 11 83*/ std Z+1, r17 // 0x01
/*71b0: 00 83*/ st Z, r16
/*71b2: 01 e0*/ ldi r16, 0x01 // 1
/*71b4: 00 93 ea 00*/ sts UERST, r16
/*71b8: 00 e0*/ ldi r16, 0x00 // 0
/*71ba: 00 93 ea 00*/ sts UERST, r16
/*71be: 00 93 1e 02*/ sts 0x021E, r16
/*71c2: 00 e0*/ 8: ldi r16, 0x00 // 0
/*71c4: 00 93 e9 00*/ sts UENUM, r16
/*71c8: 00 91 e8 00*/ lds r16, UEINTX
/*71cc: 03 ff*/ sbrs r16, 3
/*71ce: 02 c0*/ rjmp 9f
/*71d0: 0e 94 f2 3b*/ call 0x77e4 // 0x77e4
/*71d4: 08 95*/ 9: ret
L71D6:
/*71d6: a8 95*/ wdr
/*71d8: 39 d0*/ rcall L724C
/*71da: 00 e4*/ ldi r16, 0x40 // 64
/*71dc: 00 93 60 00*/ sts WDTCSR, r16
/*71e0: 00 e0*/ ldi r16, 0x00 // 0
/*71e2: 00 93 81 00*/ sts TCCR1B, r16
/*71e6: 00 93 80 00*/ sts TCCR1A, r16
/*71ea: 10 e0*/ ldi r17, 0x00 // 0
/*71ec: 00 93 85 00*/ sts TCNT1H, r16
/*71f0: 00 93 84 00*/ sts TCNT1L, r16
/*71f4: 01 e0*/ ldi r16, 0x01 // 1
/*71f6: 06 bb*/ out 0x16, r16 // 22
/*71f8: 00 91 81 00*/ lds r16, TCCR1B
/*71fc: 03 60*/ ori r16, 0x03 // 3
/*71fe: 00 93 81 00*/ sts TCCR1B, r16
/*7202: 00 91 60 00*/0: lds r16, WDTCSR
/*7206: 07 ff*/ sbrs r16, 7
/*7208: fc cf*/ rjmp 0b
/*720a: 00 e8*/ ldi r16, 0x80 // 128
/*720c: 00 93 60 00*/ sts WDTCSR, r16
/*7210: 10 93 81 00*/ sts TCCR1B, r17
/*7214: a8 95*/ wdr
/*7216: 07 ef*/ ldi r16, ~8
/*7218: 04 bf*/ out MCUSR, r16
/*721a: 18 d0*/ rcall L724C
/*721c: 10 93 60 00*/ sts WDTCSR, r17
/*7220: 20 91 84 00*/ lds r18, TCNT1L
/*7224: 30 91 85 00*/ lds r19, TCNT1H
/*7228: 10 93 81 00*/ sts TCCR1B, r17
/*722c: 10 93 80 00*/ sts TCCR1A, r17
/*7230: 10 93 85 00*/ sts TCNT1H, r17
/*7234: 10 93 84 00*/ sts TCNT1L, r17
/*7238: 01 e0*/ ldi r16, 0x01 // 1
/*723a: 06 bb*/ out 0x16, r16 // 22
/*723c: 2d 3d*/ cpi r18, 0xDD // 221
/*723e: 35 40*/ sbci r19, 0x05 // 5
/*7240: 10 f0*/ brcs .+4 // 0x7246
/*7242: 02 e1*/ ldi r16, 0x12 // 18
/*7244: 01 c0*/ rjmp .+2 // 0x7248
/*7246: 02 e0*/ ldi r16, 0x02 // 2
/*7248: 09 bd*/ out PLLCSR, r16 // 41
/*724a: 08 95*/ ret
L724C:
/*724c: 00 91 60 00*/ lds r16, WDTCSR
/*7250: 00 61*/ ori r16, 0x10 // 16
/*7252: 00 93 60 00*/ sts WDTCSR, r16
/*7256: 08 95*/ ret
L7258:
/*7258: 0e 94 ad 3e*/ call L7D5A
/*725c: 23 97*/ sbiw YL, 0x03 // 3
/*725e: 41 d1*/ rcall L74E2
/*7260: 00 e0*/ ldi r16, 0x00 // 0
/*7262: 00 93 09 01*/ sts 0x0109, r16
/*7266: b5 d1*/ rcall L75D2
/*7268: 04 81*/ ldd r16, Z+4 // 0x04
/*726a: 15 81*/ ldd r17, Z+5 // 0x05
/*726c: 01 2b*/ or r16, r17
/*726e: 51 f4*/ brne .+20 // 0x7284
/*7270: 37 d1*/ rcall .+622 // 0x74e0
/*7272: 00 91 07 01*/ lds r16, 0x0107
/*7276: 00 23*/ and r16, r16
/*7278: 09 f4*/ brne .+2 // 0x727c
/*727a: b9 c0*/ rjmp .+370 // 0x73ee
/*727c: 00 e0*/ ldi r16, 0x00 // 0
/*727e: 00 93 07 01*/ sts 0x0107, r16
/*7282: b5 c0*/ rjmp .+362 // 0x73ee
/*7284: 58 d1*/ rcall L7536
/*7286: 02 ff*/ sbrs r16, 2
/*7288: fd cf*/ rjmp .-6 // 0x7284
/*728a: 37 d1*/ rcall L74FA
/*728c: 06 83*/ std Z+6, r16 // 0x06
/*728e: 35 d1*/ rcall L74FA
/*7290: 00 93 0f 01*/ sts 0x010F, r16
/*7294: 32 d1*/ rcall L74FA
/*7296: 00 93 10 01*/ sts 0x0110, r16
/*729a: 2f d1*/ rcall L74FA
/*729c: 00 93 11 01*/ sts 0x0111, r16
/*72a0: 2c d1*/ rcall L74FA
/*72a2: 00 93 12 01*/ sts 0x0112, r16
/*72a6: 29 d1*/ rcall L74FA
/*72a8: 00 93 13 01*/ sts 0x0113, r16
/*72ac: 02 85*/ ldd r16, Z+10 // 0x0a
/*72ae: 20 91 13 01*/ lds r18, 0x0113
/*72b2: 30 91 12 01*/ lds r19, 0x0112
/*72b6: 40 91 11 01*/ lds r20, 0x0111
/*72ba: 50 91 10 01*/ lds r21, 0x0110
/*72be: 16 81*/ ldd r17, Z+6 // 0x06
/*72c0: 1a 95*/ dec r17
/*72c2: 41 f0*/ breq .+16 // 0x72d4
/*72c4: 12 50*/ subi r17, 0x02 // 2
/*72c6: a9 f0*/ breq .+42 // 0x72f2
/*72c8: 1a 95*/ dec r17
/*72ca: 99 f1*/ breq .+102 // 0x7332
/*72cc: 1a 95*/ dec r17
/*72ce: 09 f4*/ brne .+2 // 0x72d2
/*72d0: 73 c0*/ rjmp .+230 // 0x73b8
/*72d2: 8b c0*/ rjmp .+278 // 0x73ea
/*72d4: 10 91 0f 01*/ lds r17, 0x010F
/*72d8: 11 30*/ cpi r17, 0x01 // 1
/*72da: 11 f4*/ brne .+4 // 0x72e0
/*72dc: 11 e0*/ ldi r17, 0x01 // 1
/*72de: 01 c0*/ rjmp .+2 // 0x72e2
/*72e0: 10 e0*/ ldi r17, 0x00 // 0
/*72e2: 13 87*/ std Z+11, r17 // 0x0b
/*72e4: 99 d0*/ rcall .+306 // 0x7418
/*72e6: 0c 3f*/ cpi r16, 0xFC // 252
/*72e8: 11 f4*/ brne .+4 // 0x72ee
/*72ea: 14 d1*/ rcall .+552 // 0x7514
/*72ec: 7f c0*/ rjmp .+254 // 0x73ec
/*72ee: 77 d1*/ rcall .+750 // 0x75de
/*72f0: 7d c0*/ rjmp .+250 // 0x73ec
/*72f2: 92 d0*/ rcall .+292 // 0x7418
/*72f4: 10 91 0f 01*/ lds r17, 0x010F
/*72f8: 11 23*/ and r17, r17
/*72fa: 29 f0*/ breq .+10 // 0x7306
/*72fc: 1a 95*/ dec r17
/*72fe: 49 f0*/ breq .+18 // 0x7312
/*7300: 1a 95*/ dec r17
/*7302: a9 f0*/ breq .+42 // 0x732e
/*7304: 73 c0*/ rjmp .+230 // 0x73ec
/*7306: 10 e0*/ ldi r17, 0x00 // 0
/*7308: 13 87*/ std Z+11, r17 // 0x0b
/*730a: 0c 3f*/ cpi r16, 0xFC // 252
/*730c: 09 f0*/ breq .+2 // 0x7310
/*730e: 6e c0*/ rjmp .+220 // 0x73ec
/*7310: ec cf*/ rjmp .-40 // 0x72ea
/*7312: 56 d1*/ rcall .+684 // 0x75c0
/*7314: 03 c0*/ rjmp .+6 // 0x731c
/*7316: 4c d1*/ rcall L75B0
/*7318: 09 f4*/ brne .+2 // 0x731c
/*731a: 68 c0*/ rjmp .+208 // 0x73ec
/*731c: 0d 91*/ ld r16, X+
/*731e: 1c 91*/ ld r17, X
/*7320: 44 d1*/ rcall .+648 // 0x75aa
/*7322: 0f 3f*/ cpi r16, 0xFF // 255
/*7324: c1 f3*/ breq .-16 // 0x7316
/*7326: 05 e0*/ ldi r16, 0x05 // 5
/*7328: 00 93 09 01*/ sts 0x0109, r16
/*732c: 5f c0*/ rjmp .+190 // 0x73ec
/*732e: 11 e0*/ ldi r17, 0x01 // 1
/*7330: eb cf*/ rjmp .-42 // 0x7308
/*7332: d2 d0*/ rcall .+420 // 0x74d8
/*7334: 29 f0*/ breq .+10 // 0x7340
/*7336: 02 50*/ subi r16, 0x02 // 2
/*7338: e1 f1*/ breq .+120 // 0x73b2
/*733a: 0a 95*/ dec r16
/*733c: 41 f0*/ breq .+16 // 0x734e
/*733e: 56 c0*/ rjmp .+172 // 0x73ec
/*7340: fd d0*/ rcall .+506 // 0x753c
/*7342: 0e 94 a3 3f*/ call L7F46
/*7346: 0f ef*/ ldi r16, 0xFF // 255
/*7348: 00 93 0a 01*/ sts 0x010A, r16
/*734c: 4f c0*/ rjmp .+158 // 0x73ec
/*734e: 55 23*/ and r21, r21
/*7350: 19 f0*/ breq .+6 // 0x7358
/*7352: 5a 95*/ dec r21
/*7354: 79 f0*/ breq .+30 // 0x7374
/*7356: 4a c0*/ rjmp .+148 // 0x73ec
/*7358: 4e d0*/ rcall .+156 // 0x73f6
/*735a: 0d ef*/ ldi r16, ~2
/*735c: 04 bf*/ out MCUSR, r16
/*735e: 74 d0*/ rcall .+232 // 0x7448
/*7360: ea d0*/ rcall L7536
/*7362: 03 ff*/ sbrs r16, 3
/*7364: fd cf*/ rjmp .-6 // 0x7360
/*7366: 67 d0*/ rcall .+206 // 0x7436
/*7368: 51 d0*/ rcall .+162 // 0x740c
/*736a: 4a d0*/ rcall .+148 // 0x7400
/*736c: 08 e0*/ ldi r16, 0x08 // 8
/*736e: 00 93 60 00*/ sts WDTCSR, r16
/*7372: ff cf*/ rjmp .-2 // 0x7372
/*7374: 40 d0*/ rcall .+128 // 0x73f6
/*7376: 68 d0*/ rcall .+208 // 0x7448
/*7378: de d0*/ rcall L7536
/*737a: 03 ff*/ sbrs r16, 3
/*737c: fd cf*/ rjmp .-6 // 0x7378
/*737e: 5b d0*/ rcall .+182 // 0x7436
/*7380: 3f d0*/ rcall .+126 // 0x7400
/*7382: 44 d0*/ rcall .+136 // 0x740c
/*7384: 0f ef*/ ldi r16, 0xFF // 255
/*7386: 1f e0*/ ldi r17, 0x0F // 15
/*7388: 04 c0*/ rjmp .+8 // 0x7392
/*738a: 09 81*/ ldd r16, Y+1 // 0x01
/*738c: 1a 81*/ ldd r17, Y+2 // 0x02
/*738e: 01 50*/ subi r16, 0x01 // 1
/*7390: 10 40*/ sbci r17, 0x00 // 0
/*7392: 09 83*/ std Y+1, r16 // 0x01
/*7394: 1a 83*/ std Y+2, r17 // 0x02
/*7396: 09 81*/ ldd r16, Y+1 // 0x01
/*7398: 1a 81*/ ldd r17, Y+2 // 0x02
/*739a: 01 2b*/ or r16, r17
/*739c: b1 f7*/ brne .-20 // 0x738a
/*739e: 00 e8*/ ldi r16, 0x80
/*73a0: 00 93 61 00*/ sts CLKPR, r16
/*73a4: 00 91 0c 01*/ lds r16, 0x010C
/*73a8: 00 93 61 00*/ sts CLKPR, r16 // CLKPR wiederherstellen
/*73ac: 0c 94 00 00*/ jmp 0 // zum Anwendungsprogramm springen
/*73b0: ff cf*/ rjmp .-2 // 0x73b0
/*73b2: 01 e0*/ ldi r16, 0x01 // 1
/*73b4: 03 87*/ std Z+11, r16 // 0x0b
/*73b6: 1a c0*/ rjmp .+52 // 0x73ec
/*73b8: 8f d0*/ rcall .+286 // 0x74d8
/*73ba: 19 f0*/ breq .+6 // 0x73c2
/*73bc: 0a 95*/ dec r16
/*73be: 39 f0*/ breq .+14 // 0x73ce
/*73c0: 15 c0*/ rjmp .+42 // 0x73ec
/*73c2: 53 50*/ subi r21, 0x03 // 3
/*73c4: 98 f4*/ brcc .+38 // 0x73ec
/*73c6: ba d0*/ rcall .+372 // 0x753c
/*73c8: 02 e0*/ ldi r16, 0x02 // 2
/*73ca: 00 87*/ std Z+8, r16 // 0x08
/*73cc: 0f c0*/ rjmp .+30 // 0x73ec
/*73ce: 50 53*/ subi r21, 0x30 // 48
/*73d0: 39 f0*/ breq .+14 // 0x73e0
/*73d2: 5a 95*/ dec r21
/*73d4: 41 f0*/ breq .+16 // 0x73e6
/*73d6: 5f 52*/ subi r21, 0x2F // 47
/*73d8: b1 f3*/ breq .-20 // 0x73c6
/*73da: 5a 95*/ dec r21
/*73dc: a1 f3*/ breq .-24 // 0x73c6
/*73de: 06 c0*/ rjmp .+12 // 0x73ec
/*73e0: 02 e0*/ ldi r16, 0x02 // 2
/*73e2: 08 83*/ st Y, r16
/*73e4: f0 cf*/ rjmp .-32 // 0x73c6
/*73e6: 01 e0*/ ldi r16, 0x01 // 1
/*73e8: fc cf*/ rjmp .-8 // 0x73e2
/*73ea: a8 d0*/ rcall .+336 // 0x753c
/*73ec: 79 d0*/ rcall .+242 // 0x74e0
/*73ee: 23 96*/ adiw YL, 0x03 // 3
/*73f0: e4 e0*/ ldi ZL, 0x04 // 4
/*73f2: 0c 94 ba 3e*/ jmp 0x7d74 // 0x7d74
/*73f6: 01 e0*/ ldi r16, 0x01
/*73f8: 05 bf*/ out MCUCR, r16
/*73fa: 00 e0*/ ldi r16, 0x00 // Interruptvektoren zum Anwendungsprogramm
/*73fc: 05 bf*/ out MCUCR, r16
/*73fe: 08 95*/ ret
/*7400: 00 91 d8 00*/ lds r16, USBCON
/*7404: 0f 77*/ andi r16, 0x7F // 127
/*7406: 00 93 d8 00*/ sts USBCON, r16
/*740a: 08 95*/ ret
/*740c: 09 b5*/ in r16, PLLCSR // 41
/*740e: 0d 7f*/ andi r16, 0xFD // 253
/*7410: 09 bd*/ out PLLCSR, r16 // 41
/*7412: 00 e0*/ ldi r16, 0x00 // 0
/*7414: 09 bd*/ out PLLCSR, r16 // 41
/*7416: 08 95*/ ret
/*7418: 51 83*/ std Z+1, r21 // 0x01
/*741a: 40 83*/ st Z, r20
/*741c: 33 83*/ std Z+3, r19 // 0x03
/*741e: 22 83*/ std Z+2, r18 // 0x02
/*7420: 10 91 e8 00*/ lds r17, UEINTX
/*7424: 1b 7f*/ andi r17, 0xFB // 251
/*7426: 10 93 e8 00*/ sts UEINTX, r17
/*742a: 10 91 e8 00*/ lds r17, UEINTX
/*742e: 1f 77*/ andi r17, 0x7F // 127
/*7430: 10 93 e8 00*/ sts UEINTX, r17
/*7434: 08 95*/ ret
/*7436: 5d d0*/ rcall .+186 // 0x74f2
/*7438: 53 d0*/ rcall .+166 // 0x74e0
/*743a: f8 94*/ cli
/*743c: 00 91 e0 00*/ lds r16, UDCON
/*7440: 01 60*/ ori r16, 0x01 // 1
/*7442: 00 93 e0 00*/ sts UDCON, r16
/*7446: 08 95*/ ret
/*7448: 79 d0*/ rcall .+242 // 0x753c
/*744a: 4a c0*/ rjmp .+148 // 0x74e0
L744C:
/*744c: 21 97*/ sbiw YL, 0x01 // 1
/*744e: 49 d0*/ rcall L74E2
/*7450: 00 91 06 01*/ lds r16, 0x0106
/*7454: 03 50*/ subi r16, 0x03 // 3
/*7456: 19 f0*/ breq .+6 // 0x745e
/*7458: 02 50*/ subi r16, 0x02 // 2
/*745a: b9 f0*/ breq .+46 // 0x748a
/*745c: 0b c0*/ rjmp .+22 // 0x7474
/*745e: 3c d0*/ rcall .+120 // 0x74d8
/*7460: 21 f0*/ breq .+8 // 0x746a
/*7462: 0a 95*/ dec r16
/*7464: 59 f0*/ breq .+22 // 0x747c
/*7466: 0a 95*/ dec r16
/*7468: 29 f4*/ brne .+10 // 0x7474
/*746a: 00 91 0a 01*/ lds r16, 0x010A
/*746e: 0c 3f*/ cpi r16, 0xFC // 252
/*7470: 19 f4*/ brne .+6 // 0x7478
/*7472: 50 d0*/ rcall .+160 // 0x7514
/*7474: 21 96*/ adiw YL, 0x01 // 1
/*7476: 08 95*/ ret
/*7478: 67 d0*/ rcall .+206 // 0x7548
/*747a: fc cf*/ rjmp .-8 // 0x7474
/*747c: 00 91 01 01*/ lds r16, 0x0101
/*7480: 00 93 f1 00*/ sts UEDATX, r16
/*7484: 00 91 00 01*/ lds r16, 0x0100
/*7488: 0a c0*/ rjmp .+20 // 0x749e
/*748a: 10 91 10 01*/ lds r17, 0x0110
/*748e: 24 d0*/ rcall .+72 // 0x74d8
/*7490: 19 f0*/ breq .+6 // 0x7498
/*7492: 0a 95*/ dec r16
/*7494: 49 f0*/ breq .+18 // 0x74a8
/*7496: ee cf*/ rjmp .-36 // 0x7474
/*7498: 13 50*/ subi r17, 0x03 // 3
/*749a: 18 f4*/ brcc .+6 // 0x74a2
/*749c: 00 e0*/ ldi r16, 0x00 // 0
/*749e: 00 93 f1 00*/ sts UEDATX, r16
/*74a2: 1e d0*/ rcall .+60 // 0x74e0
/*74a4: 44 d0*/ rcall .+136 // 0x752e
/*74a6: e6 cf*/ rjmp .-52 // 0x7474
/*74a8: 10 53*/ subi r17, 0x30 // 48
/*74aa: 39 f0*/ breq .+14 // 0x74ba
/*74ac: 1a 95*/ dec r17
/*74ae: 39 f0*/ breq .+14 // 0x74be
/*74b0: 1f 52*/ subi r17, 0x2F // 47
/*74b2: 41 f0*/ breq .+16 // 0x74c4
/*74b4: 1a 95*/ dec r17
/*74b6: 41 f0*/ breq .+16 // 0x74c8
/*74b8: f4 cf*/ rjmp .-24 // 0x74a2
/*74ba: 08 e5*/ ldi r16, 0x58 // 88
/*74bc: f0 cf*/ rjmp .-32 // 0x749e
/*74be: 00 e0*/ ldi r16, 0x00 // 0
/*74c0: 06 d0*/ rcall .+12 // 0x74ce
/*74c2: ed cf*/ rjmp .-38 // 0x749e
/*74c4: 02 e0*/ ldi r16, 0x02 // 2
/*74c6: fc cf*/ rjmp .-8 // 0x74c0
/*74c8: 04 e0*/ ldi r16, 0x04 // 4
/*74ca: 01 d0*/ rcall .+2 // 0x74ce
/*74cc: e8 cf*/ rjmp .-48 // 0x749e
/*74ce: 10 e0*/ ldi r17, 0x00 // 0
/*74d0: 20 e0*/ ldi r18, 0x00 // 0
/*74d2: 30 e0*/ ldi r19, 0x00 // 0
/*74d4: 0c 94 11 3f*/ jmp lpm_signature
/*74d8: 00 91 0f 01*/ lds r16, 0x010F
/*74dc: 00 23*/ and r16, r16
/*74de: 08 95*/ ret
/*74e0: 21 c0*/ rjmp L7524
L74E2:
/*74e2: 0b d0*/ rcall L74FA
/*74e4: 08 d0*/ rcall L74F6
/*74e6: 07 d0*/ rcall L74F6
/*74e8: 00 93 04 01*/ sts 0x0104, r16
/*74ec: 06 d0*/ rcall L74FA
/*74ee: 00 93 05 01*/ sts 0x0105, r16
/*74f2: 21 d0*/ rcall L7536
/*74f4: 0b c0*/ rjmp .+22 // 0x750c
L74F6:
/*74f6: 00 d0*/ rcall L74F8
L74F8:/*08 83*/ st Y, r16
L74FA:/*00 91 f1 00*/ lds r16, UEDATX
/*74fe: 08 95*/ ret
L7500:
/*7500: 00 91 eb 00*/ lds r16, UECONX
/*7504: 00 62*/ ori r16, 0x20 // 32
/*7506: 00 93 eb 00*/ sts UECONX, r16
/*750a: 15 d0*/ rcall L7536
/*750c: 07 7f*/ andi r16, 0xF7 // 247
L750E:
/*750e: 00 93 e8 00*/ sts UEINTX, r16
/*7512: 08 95*/ ret
/*7514: f5 df*/ rcall L7500
/*7516: 02 e0*/ ldi r16, 0x02 // 2
/*7518: 00 93 08 01*/ sts 0x0108, r16
/*751c: 03 e0*/ ldi r16, 0x03 // 3
/*751e: 00 93 09 01*/ sts 0x0109, r16
/*7522: 08 95*/ ret
L7524:
/*7524: 59 d0*/ rcall L75D8
/*7526: 07 d0*/ rcall L7536
/*7528: 00 ff*/ sbrs r16, 0
/*752a: fd cf*/ rjmp .-6 // 0x7526
/*752c: 08 95*/ ret
/*752e: 03 d0*/ rcall L7536
/*7530: 02 ff*/ sbrs r16, 2
/*7532: fd cf*/ rjmp .-6 // 0x752e
/*7534: 03 c0*/ rjmp .+6 // 0x753c
L7536:
/*7536: 00 91 e8 00*/ lds r16, UEINTX
/*753a: 08 95*/ ret
/*753c: fc df*/ rcall L7536
/*753e: 0b 7f*/ andi r16, 0xFB // 251
/*7540: e6 df*/ rcall L750E
/*7542: f9 df*/ rcall L7536
/*7544: 0f 77*/ andi r16, 0x7F // 127
/*7546: e3 cf*/ rjmp L750E
/*7548: 0e 94 ac 3e*/ call 0x7d58 // 0x7d58
/*754c: 42 d0*/ rcall L75D2
/*754e: 38 d0*/ rcall .+112 // 0x75c0
/*7550: 06 c0*/ rjmp .+12 // 0x755e
/*7552: 2b d0*/ rcall .+86 // 0x75aa
/*7554: 00 93 f1 00*/ sts UEDATX, r16
/*7558: 2b d0*/ rcall L75B0
/*755a: 59 f4*/ brne .+22 // 0x7572
/*755c: 3d d0*/ rcall L75D8
/*755e: 08 2f*/ mov r16, r24
/*7560: 09 2b*/ or r16, r25
/*7562: a9 f0*/ breq .+42 // 0x758e
/*7564: e8 df*/ rcall L7536
/*7566: 02 fd*/ sbrc r16, 2
/*7568: 12 c0*/ rjmp .+36 // 0x758e
/*756a: e5 df*/ rcall L7536
/*756c: 00 ff*/ sbrs r16, 0
/*756e: fd cf*/ rjmp .-6 // 0x756a
/*7570: 44 24*/ eor r4, r4
/*7572: 04 2d*/ mov r16, r4
/*7574: 43 94*/ inc r4
/*7576: 00 32*/ cpi r16, 0x20 // 32
/*7578: 89 f3*/ breq .-30 // 0x755c
/*757a: 00 91 0b 01*/ lds r16, 0x010B
/*757e: 00 23*/ and r16, r16
/*7580: 0d 91*/ ld r16, X+
/*7582: 1c 91*/ ld r17, X
/*7584: 31 f3*/ breq .-52 // 0x7552
/*7586: 11 97*/ sbiw r26, 0x01 // 1
/*7588: 0e 94 58 38*/ call eeread
/*758c: e3 cf*/ rjmp .-58 // 0x7554
/*758e: d3 df*/ rcall L7536
/*7590: 00 ff*/ sbrs r16, 0
/*7592: fd cf*/ rjmp .-6 // 0x758e
/*7594: 21 d0*/ rcall L75D8
/*7596: cf df*/ rcall L7536
/*7598: 00 ff*/ sbrs r16, 0
/*759a: fd cf*/ rjmp .-6 // 0x7596
/*759c: cc df*/ rcall L7536
/*759e: 02 ff*/ sbrs r16, 2
/*75a0: fd cf*/ rjmp .-6 // 0x759c
/*75a2: cc df*/ rcall .-104 // 0x753c
/*75a4: e5 e0*/ ldi ZL, 0x05 // 5
/*75a6: 0c 94 b9 3e*/ jmp L7D72
/*75aa: 11 97*/ sbiw r26, 0x01 // 1
/*75ac: 0c 94 5c 38*/ jmp L70B8
L75B0:
/*75b0: 0d 91*/ ld r16, X+
/*75b2: 1c 91*/ ld r17, X
/*75b4: 0f 5f*/ subi r16, 0xFF // 255
/*75b6: 1f 4f*/ sbci r17, 0xFF // 255
/*75b8: 1c 93*/ st X, r17
/*75ba: 0e 93*/ st -X, r16
/*75bc: 01 97*/ sbiw r24, 0x01 // 1
/*75be: 08 95*/ ret
/*75c0: 82 81*/ ldd r24, Z+2 // 0x02
/*75c2: 93 81*/ ldd r25, Z+3 // 0x03
/*75c4: 00 81*/ ld r16, Z
/*75c6: 11 81*/ ldd r17, Z+1 // 0x01
/*75c8: 80 1b*/ sub r24, r16
/*75ca: 91 0b*/ sbc r25, r17
/*75cc: 01 96*/ adiw r24, 0x01 // 1
/*75ce: df 01*/ movw r26, ZL
/*75d0: 08 95*/ ret
L75D2:
/*75d2: e0 e0*/ ldi ZL, 0x00 // 0
/*75d4: f1 e0*/ ldi ZH, 0x01 // 1
/*75d6: 08 95*/ ret
L75D8:
/*75d8: ae df*/ rcall L7536
/*75da: 0e 7f*/ andi r16, 0xFE // 254
/*75dc: 98 cf*/ rjmp L750E
/*75de: 0e 94 a9 3e*/ call 0x7d52 // 0x7d52
/*75e2: f7 df*/ rcall L75D2
/*75e4: 80 81*/ ld r24, Z
/*75e6: 91 81*/ ldd r25, Z+1 // 0x01
/*75e8: a0 81*/ ld r26, Z
/*75ea: b1 81*/ ldd r27, Z+1 // 0x01
/*75ec: af 71*/ andi r26, 0x1F // 31
/*75ee: 04 81*/ ldd r16, Z+4 // 0x04
/*75f0: 15 81*/ ldd r17, Z+5 // 0x05
/*75f2: 00 52*/ subi r16, 0x20 // 32
/*75f4: 10 40*/ sbci r17, 0x00 // 0
/*75f6: 04 83*/ std Z+4, r16 // 0x04
/*75f8: 15 83*/ std Z+5, r17 // 0x05
/*75fa: 0a c0*/ rjmp .+20 // 0x7610
L75FC:
/*75fc: 00 91 0b 01*/ lds r16, 0x010B
/*7600: 00 23*/ and r16, r16
/*7602: 31 f4*/ brne .+12 // 0x7610
/*7604: a3 01*/ movw r20, r6
/*7606: 92 01*/ movw r18, r4
/*7608: 03 e9*/ ldi r16, 0x93 // 147
/*760a: 11 e0*/ ldi r17, 0x01 // 1
/*760c: 0e 94 3b 3f*/ call 0x7e76 // 0x7e76
/*7610: 47 d0*/ rcall .+142 // 0x76a0
/*7612: b8 f1*/ brcs .+110 // 0x7682
/*7614: 66 24*/ eor r6, r6
/*7616: 77 24*/ eor r7, r7
/*7618: 2c 01*/ movw r4, r24
/*761a: 11 c0*/ rjmp .+34 // 0x763e
/*761c: 6e df*/ rcall L74FA
/*761e: f3 01*/ movw ZL, r6
/*7620: ed 56*/ subi ZL, 0x6D // 109
/*7622: fe 4f*/ sbci ZH, 0xFE // 254
/*7624: 00 83*/ st Z, r16
/*7626: 01 e0*/ ldi r16, 0x01 // 1
/*7628: 60 0e*/ add r6, r16
/*762a: 00 e0*/ ldi r16, 0x00 // 0
/*762c: 70 1e*/ adc r7, r16
/*762e: 01 96*/ adiw r24, 0x01 // 1
/*7630: 00 91 f2 00*/ lds r16, UEBCLX
/*7634: 00 23*/ and r16, r16
/*7636: 11 f0*/ breq .+4 // 0x763c
/*7638: 33 d0*/ rcall .+102 // 0x76a0
/*763a: b8 f4*/ brcc .+46 // 0x766a
/*763c: 7f df*/ rcall .-258 // 0x753c
/*763e: 30 d0*/ rcall .+96 // 0x76a0
/*7640: e8 f2*/ brcs L75FC
/*7642: f3 01*/ movw ZL, r6
/*7644: b0 96*/ adiw ZL, 0x20 // 32
/*7646: e2 38*/ cpi ZL, 0x82 // 130
/*7648: f0 40*/ sbci ZH, 0x00 // 0
/*764a: c0 f6*/ brcc L75FC
/*764c: 74 df*/ rcall L7536
/*764e: 02 ff*/ sbrs r16, 2
/*7650: fd cf*/ rjmp .-6 // 0x764c
/*7652: 00 91 f2 00*/ lds r16, UEBCLX
/*7656: bd df*/ rcall L75D2
/*7658: 24 81*/ ldd r18, Z+4 // 0x04
/*765a: 35 81*/ ldd r19, Z+5 // 0x05
/*765c: 20 1b*/ sub r18, r16
/*765e: 30 40*/ sbci r19, 0x00 // 0
/*7660: 24 83*/ std Z+4, r18 // 0x04
/*7662: 35 83*/ std Z+5, r19 // 0x05
/*7664: e5 cf*/ rjmp .-54 // 0x7630
/*7666: 49 df*/ rcall L74FA
/*7668: aa 95*/ dec r26
/*766a: aa 23*/ and r26, r26
/*766c: e1 f7*/ brne .-8 // 0x7666
/*766e: 00 91 0b 01*/ lds r16, 0x010B
/*7672: 01 30*/ cpi r16, 0x01 // 1
/*7674: 99 f6*/ brne .-90 // 0x761c
/*7676: 20 91 f1 00*/ lds r18, UEDATX
/*767a: 8c 01*/ movw r16, r24
/*767c: 0e 94 50 38*/ call eewrite
/*7680: d6 cf*/ rjmp .-84 // 0x762e
/*7682: 04 81*/ ldd r16, Z+4 // 0x04
/*7684: 15 81*/ ldd r17, Z+5 // 0x05
/*7686: 01 2b*/ or r16, r17
/*7688: 21 f0*/ breq .+8 // 0x7692
/*768a: 55 df*/ rcall L7536
/*768c: 02 ff*/ sbrs r16, 2
/*768e: fd cf*/ rjmp .-6 // 0x768a
/*7690: 55 df*/ rcall .-342 // 0x753c
/*7692: a2 df*/ rcall L75D8
/*7694: 50 df*/ rcall L7536
/*7696: 00 ff*/ sbrs r16, 0
/*7698: fd cf*/ rjmp .-6 // 0x7694
/*769a: e8 e0*/ ldi ZL, 0x08 // 8
/*769c: 0c 94 b6 3e*/ jmp 0x7d6c // 0x7d6c
/*76a0: e0 e0*/ ldi ZL, 0x00 // 0
/*76a2: f1 e0*/ ldi ZH, 0x01 // 1
/*76a4: 02 81*/ ldd r16, Z+2 // 0x02
/*76a6: 13 81*/ ldd r17, Z+3 // 0x03
/*76a8: 08 17*/ cp r16, r24
/*76aa: 19 07*/ cpc r17, r25
/*76ac: 08 95*/ ret
/*76ae: 20 91 eb 00*/ lds r18, UECONX
/*76b2: 21 60*/ ori r18, 0x01 // 1
/*76b4: 20 93 eb 00*/ sts UECONX, r18
/*76b8: 00 93 ec 00*/ sts UECFG0X, r16
/*76bc: 00 91 ed 00*/ lds r16, UECFG1X
/*76c0: 02 70*/ andi r16, 0x02 // 2
/*76c2: 01 2b*/ or r16, r17
/*76c4: 00 93 ed 00*/ sts UECFG1X, r16
/*76c8: 00 91 ed 00*/ lds r16, UECFG1X
/*76cc: 02 60*/ ori r16, 0x02 // 2
/*76ce: 00 93 ed 00*/ sts UECFG1X, r16
/*76d2: 10 91 ee 00*/ lds r17, UESTA0X
/*76d6: 01 2f*/ mov r16, r17
/*76d8: 00 0f*/ add r16, r16
/*76da: 00 e0*/ ldi r16, 0x00 // 0
/*76dc: 00 1f*/ adc r16, r16
/*76de: 08 95*/ ret
/*76e0: 41 2f*/ mov r20, r17
/*76e2: 00 93 e9 00*/ sts UENUM, r16
/*76e6: 08 95*/ ret
/*76e8: 00 e0*/ ldi r16, 0x00 // 0
/*76ea: 09 d0*/ rcall .+18 // 0x76fe
/*76ec: 00 fd*/ sbrc r16, 0
/*76ee: 05 c0*/ rjmp .+10 // 0x76fa
/*76f0: 00 e0*/ ldi r16, 0x00 // 0
/*76f2: f7 df*/ rcall .-18 // 0x76e2
/*76f4: 10 e2*/ ldi r17, 0x20 // 32
/*76f6: 02 e0*/ ldi r16, 0x02 // 2
/*76f8: da cf*/ rjmp .-76 // 0x76ae
/*76fa: 00 e0*/ ldi r16, 0x00 // 0
/*76fc: 08 95*/ ret
/*76fe: f1 df*/ rcall .-30 // 0x76e2
/*7700: 00 91 eb 00*/ lds r16, UECONX
/*7704: 08 95*/ ret
/*7706: 0f 77*/ andi r16, 0x7F // 127
/*7708: 01 32*/ cpi r16, 0x21 // 33
/*770a: a9 f5*/ brne .+106 // 0x7776
/*770c: 11 23*/ and r17, r17
/*770e: 69 f1*/ breq .+90 // 0x776a
/*7710: 1a 95*/ dec r17
/*7712: 59 f0*/ breq .+22 // 0x772a
/*7714: 1a 95*/ dec r17
/*7716: 61 f0*/ breq .+24 // 0x7730
/*7718: 1a 95*/ dec r17
/*771a: 69 f0*/ breq .+26 // 0x7736
/*771c: 1a 95*/ dec r17
/*771e: f9 f0*/ breq .+62 // 0x775e
/*7720: 1a 95*/ dec r17
/*7722: c1 f0*/ breq .+48 // 0x7754
/*7724: 1a 95*/ dec r17
/*7726: d9 f0*/ breq .+54 // 0x775e
/*7728: 24 c0*/ rjmp .+72 // 0x7772
/*772a: 0e 94 2c 39*/ call L7258
/*772e: 20 c0*/ rjmp .+64 // 0x7770
/*7730: 0e 94 26 3a*/ call L744C
/*7734: 1d c0*/ rjmp .+58 // 0x7770
/*7736: 29 d0*/ rcall .+82 // 0x778a
/*7738: 00 91 09 01*/ lds r16, 0x0109
/*773c: 23 d0*/ rcall L7784
/*773e: 01 e0*/ ldi r16, 0x01 // 1
/*7740: 1f d0*/ rcall L7780
/*7742: 20 d0*/ rcall L7784
/*7744: 00 91 08 01*/ lds r16, 0x0108
/*7748: 1b d0*/ rcall L7780
/*774a: 0e 94 92 3a*/ call L7524
/*774e: 0e 94 97 3a*/ call 0x752e // 0x752e
/*7752: 0e c0*/ rjmp .+28 // 0x7770
/*7754: 1a d0*/ rcall .+52 // 0x778a
/*7756: 00 91 08 01*/ lds r16, 0x0108
/*775a: 14 d0*/ rcall L7784
/*775c: 07 c0*/ rjmp .+14 // 0x776c
/*775e: 02 e0*/ ldi r16, 0x02 // 2
/*7760: 00 93 08 01*/ sts 0x0108, r16
/*7764: 00 e0*/ ldi r16, 0x00 // 0
/*7766: 00 93 09 01*/ sts 0x0109, r16
/*776a: 0f d0*/ rcall .+30 // 0x778a
/*776c: 0e 94 92 3a*/ call L7524
/*7770: 03 c0*/ rjmp L7778
/*7772: 0e 94 80 3a*/ call L7500
/*7776: 02 c0*/ rjmp L777C
L7778: // ret 1
/*7778: 01 e0*/ ldi r16, 0x01 // 1
/*777a: 08 95*/ ret
L777C:
/*777c: 00 e0*/ ldi r16, 0x00 // 0
/*777e: 08 95*/ ret
L7780:
/*7780: 01 d0*/ rcall L7784
/*7782: 00 e0*/ ldi r16, 0x00 // 0
L7784: // Byte in USB-FIFO stecken
/*7784: 00 93 f1 00*/ sts UEDATX, r16
/*7788: 08 95*/ ret
/*778a: 00 91 e8 00*/ lds r16, UEINTX
/*778e: 07 7f*/ andi r16, 0xF7 // 247
/*7790: 00 93 e8 00*/ sts UEINTX, r16
/*7794: 08 95*/ ret
/*7796: 08 95*/ ret
/*7798: 03 50*/ subi r16, 3 // String-Deskriptor?
/*779a: f9 f4*/ brne L77DA // nein
/*779c: 11 23*/ and r17, r17
/*779e: 39 f0*/ breq sd0 // String 0
/*77a0: 1a 95*/ dec r17
/*77a2: 51 f0*/ breq sd1 // String 1
/*77a4: 1a 95*/ dec r17
/*77a6: 81 f0*/ breq sd2 // String 2
/*77a8: 1a 95*/ dec r17
/*77aa: 99 f0*/ breq sd3 // String 3
/*77ac: 16 c0*/ rjmp L77DA
/*77ae: 04 e0*/ sd0: ldi r16, 0x04 // 4
/*77b0: 16 d0*/ rcall L77DE
/*77b2: 01 e8*/ ldi r16,lo8(L7081) // String-Deskriptor 0: Sprache(n)
/*77b4: 10 e7*/ ldi r17,hi8(L7081)
/*77b6: 03 c0*/ rjmp sdst
/*77b8: 11 d0*/ sd1: rcall L77DC
/*77ba: 03 e5*/ ldi r16,lo8(L7053) // String-Deskriptor 1: Hersteller
/*77bc: 10 e7*/ ldi r17,hi8(L7053)
/*77be: e7 e1*/ sdst: ldi ZL, 0x17
/*77c0: f2 e0*/ ldi ZH, 0x02
/*77c2: 00 83*/ st Z, r16
/*77c4: 11 83*/ std Z+1, r17
/*77c6: d8 cf*/ rjmp L7778
/*77c8: 06 e1*/ sd2: ldi r16, 0x16 // 22
/*77ca: 09 d0*/ rcall L77DE
/*77cc: 0f e5*/ ldi r16,lo8(L705F) // String-Deskriptor 2: Produkt
/*77ce: 10 e7*/ ldi r17,hi8(L705F)
/*77d0: f6 cf*/ rjmp sdst
/*77d2: 04 d0*/ sd3: rcall L77DC
/*77d4: 05 e7*/ ldi r16,lo8(L7075) // String-Deskriptor 3: Seriennummer
/*77d6: 10 e7*/ ldi r17,hi8(L7075)
/*77d8: f2 cf*/ rjmp sdst
L77DA:
/*77da: d0 cf*/ rjmp L777C
L77DC: // Länge 12 laden
/*77dc: 0c e0*/ ldi r16, 0x0C // 12
L77DE: // Länge <r16> laden
/*77de: 00 93 1a 02*/ sts 0x021A, r16
/*77e2: 08 95*/ ret
/*77e4: 27 d1*/ rcall .+590 // 0x7a34
/*77e6: 20 d1*/ rcall .+576 // 0x7a28
/*77e8: 00 93 1d 02*/ sts 0x021D, r16
/*77ec: e1 d0*/ rcall .+450 // 0x79b0
/*77ee: 21 2f*/ mov r18, r17
/*77f0: 11 23*/ and r17, r17
/*77f2: 29 f1*/ breq .+74 // 0x783e
/*77f4: 2a 95*/ dec r18
/*77f6: e9 f0*/ breq .+58 // 0x7832
/*77f8: 22 50*/ subi r18, 0x02 // 2
/*77fa: f1 f0*/ breq .+60 // 0x7838
/*77fc: 22 50*/ subi r18, 0x02 // 2
/*77fe: 99 f0*/ breq .+38 // 0x7826
/*7800: 2a 95*/ dec r18
/*7802: 49 f0*/ breq .+18 // 0x7816
/*7804: 22 50*/ subi r18, 0x02 // 2
/*7806: 61 f0*/ breq .+24 // 0x7820
/*7808: 2a 95*/ dec r18
/*780a: 81 f0*/ breq .+32 // 0x782c
/*780c: 2a 95*/ dec r18
/*780e: e1 f0*/ breq .+56 // 0x7848
/*7810: 2a 95*/ dec r18
/*7812: e9 f0*/ breq .+58 // 0x784e
/*7814: 23 c0*/ rjmp .+70 // 0x785c
/*7816: 00 38*/ cpi r16, 0x80 // 128
/*7818: 09 f4*/ brne .+2 // 0x781c
/*781a: 4f c0*/ rjmp .+158 // 0x78ba
/*781c: 0c 94 83 3b*/ jmp 0x7706 // 0x7706
/*7820: 00 38*/ cpi r16, 0x80 // 128
/*7822: e1 f7*/ brne .-8 // 0x781c
/*7824: c8 c0*/ rjmp .+400 // 0x79b6
/*7826: 00 23*/ and r16, r16
/*7828: c9 f7*/ brne .-14 // 0x781c
/*782a: 1e c0*/ rjmp .+60 // 0x7868
/*782c: 00 23*/ and r16, r16
/*782e: b1 f7*/ brne .-20 // 0x781c
/*7830: 2d c0*/ rjmp .+90 // 0x788c
/*7832: 03 30*/ cpi r16, 0x03 // 3
/*7834: 98 f7*/ brcc .-26 // 0x781c
/*7836: 44 c1*/ rjmp .+648 // 0x7ac0
/*7838: 03 30*/ cpi r16, 0x03 // 3
/*783a: 80 f7*/ brcc .-32 // 0x781c
/*783c: 0b c1*/ rjmp .+534 // 0x7a54
/*783e: 00 38*/ cpi r16, 0x80 // 128
/*7840: 68 f3*/ brcs .-38 // 0x781c
/*7842: 03 38*/ cpi r16, 0x83 // 131
/*7844: 58 f7*/ brcc .-42 // 0x781c
/*7846: c9 c0*/ rjmp .+402 // 0x79da
/*7848: 01 38*/ cpi r16, 0x81 // 129
/*784a: 41 f7*/ brne .-48 // 0x781c
/*784c: 7b c1*/ rjmp .+758 // 0x7b44
/*784e: 01 30*/ cpi r16, 0x01 // 1
/*7850: 51 f4*/ brne .+20 // 0x7866
/*7852: fc d0*/ rcall .+504 // 0x7a4c
/*7854: bf d0*/ rcall .+382 // 0x79d4
/*7856: 00 fd*/ sbrc r16, 0
/*7858: 06 c0*/ rjmp .+12 // 0x7866
/*785a: fc cf*/ rjmp .-8 // 0x7854
/*785c: 0e 94 83 3b*/ call 0x7706 // 0x7706
/*7860: 00 23*/ and r16, r16
/*7862: 09 f4*/ brne .+2 // 0x7866
/*7864: 1e d0*/ rcall .+60 // 0x78a2
/*7866: 08 95*/ ret
/*7868: 10 91 e3 00*/ lds r17, UDADDR
/*786c: 10 78*/ andi r17, 0x80
/*786e: dc d0*/ rcall .+440 // 0x7a28
/*7870: 0f 77*/ andi r16, 0x7F
/*7872: 01 2b*/ or r16, r17
/*7874: 00 93 e3 00*/ sts UDADDR, r16
/*7878: e9 d0*/ rcall .+466 // 0x7a4c
/*787a: ac d0*/ rcall .+344 // 0x79d4
/*787c: 00 ff*/ sbrs r16, 0
/*787e: fd cf*/ rjmp .-6 // 0x787a
/*7880: 00 91 e3 00*/ lds r16, UDADDR
/*7884: 00 68*/ ori r16, 0x80
/*7886: 00 93 e3 00*/ sts UDADDR, r16
/*788a: 08 95*/ ret
/*788c: 91 d0*/ rcall .+290 // 0x79b0
/*788e: 12 30*/ cpi r17, 0x02 // 2
/*7890: 40 f4*/ brcc .+16 // 0x78a2
/*7892: 0f d0*/ rcall .+30 // 0x78b2
/*7894: 10 93 1e 02*/ sts 0x021E, r17
/*7898: da d0*/ rcall .+436 // 0x7a4e
/*789a: 00 91 1e 02*/ lds r16, 0x021E
/*789e: 0c 94 cb 3b*/ jmp 0x7796 // 0x7796
/*78a2: 00 91 eb 00*/ lds r16, UECONX
/*78a6: 01 d0*/ rcall .+2 // 0x78aa
/*78a8: 04 c0*/ rjmp .+8 // 0x78b2
/*78aa: 00 62*/ ori r16, 0x20 // 32
/*78ac: 00 93 eb 00*/ sts UECONX, r16
/*78b0: 08 95*/ ret
/*78b2: 00 91 e8 00*/ lds r16, UEINTX
/*78b6: 07 7f*/ andi r16, 0xF7 // 247
/*78b8: c0 c0*/ rjmp .+384 // 0x7a3a
/*78ba: ba 93*/ st -Y, r27
/*78bc: aa 93*/ st -Y, r26
/*78be: 22 97*/ sbiw YL, 2
/*78c0: 00 e0*/ ldi r16, 0
/*78c2: 00 93 19 02*/ sts 0x0219, r16
/*78c6: 74 d0*/ rcall .+232 // 0x79b0
/*78c8: af d0*/ rcall .+350 // 0x7a28
/*78ca: 20 2f*/ mov r18, r16
/*78cc: 2a 95*/ dec r18
/*78ce: 19 f0*/ breq .+6 // 0x78d6
/*78d0: 2a 95*/ dec r18
/*78d2: e9 f0*/ breq .+58 // 0x790e
/*78d4: 22 c0*/ rjmp .+68 // 0x791a
/*78d6: 02 e1*/ ldi r16, 0x12 // 18
/*78d8: 00 93 1a 02*/ sts 0x021A, r16
/*78dc: 0f e2*/ ldi r16,lo8(L702F) // Device-Deskriptor
/*78de: 10 e7*/ ldi r17,hi8(L702F)
/*78e0: e7 e1*/ ldi ZL, 0x17 // 23
/*78e2: f2 e0*/ ldi ZH, 0x02 // 2
/*78e4: 00 83*/ st Z, r16
/*78e6: 11 83*/ std Z+1, r17 // 0x01
/*78e8: 9d d0*/ rcall .+314 // 0x7a24
/*78ea: 08 83*/ st Y, r16
/*78ec: 9d d0*/ rcall .+314 // 0x7a28
/*78ee: 09 83*/ std Y+1, r16 // 0x01
/*78f0: e0 df*/ rcall .-64 // 0x78b2
/*78f2: 00 91 1a 02*/ lds r16, 0x021A
/*78f6: 10 e0*/ ldi r17, 0x00 // 0
/*78f8: 28 81*/ ld r18, Y
/*78fa: 39 81*/ ldd r19, Y+1 // 0x01
/*78fc: 02 17*/ cp r16, r18
/*78fe: 13 07*/ cpc r17, r19
/*7900: a8 f4*/ brcc .+42 // 0x792c
/*7902: 0f 71*/ andi r16, 0x1F // 31
/*7904: 81 f4*/ brne .+32 // 0x7926
/*7906: 01 e0*/ ldi r16, 0x01 // 1
/*7908: 00 93 19 02*/ sts 0x0219, r16
/*790c: 11 c0*/ rjmp .+34 // 0x7930
/*790e: 02 e1*/ ldi r16, 0x12 // 18
/*7910: 00 93 1a 02*/ sts 0x021A, r16
/*7914: 01 e4*/ ldi r16,lo8(L7041) // Config-Deskriptor
/*7916: 10 e7*/ ldi r17,hi8(L7041)
/*7918: e3 cf*/ rjmp .-58 // 0x78e0
/*791a: 0e 94 cc 3b*/ call 0x7798 // 0x7798
/*791e: 00 23*/ and r16, r16
/*7920: 19 f7*/ brne .-58 // 0x78e8
/*7922: 8e d0*/ rcall .+284 // 0x7a40
/*7924: 40 c0*/ rjmp .+128 // 0x79a6
/*7926: 10 93 19 02*/ sts 0x0219, r17
/*792a: 02 c0*/ rjmp .+4 // 0x7930
/*792c: 20 93 1a 02*/ sts 0x021A, r18
/*7930: 7e d0*/ rcall .+252 // 0x7a2e
/*7932: a7 e1*/ ldi r26, 0x17 // 23
/*7934: b2 e0*/ ldi r27, 0x02 // 2
/*7936: 01 c0*/ rjmp .+2 // 0x793a
/*7938: 8a d0*/ rcall .+276 // 0x7a4e
/*793a: 00 91 1a 02*/ lds r16, 0x021A
/*793e: 00 23*/ and r16, r16
/*7940: 09 f1*/ breq .+66 // 0x7984
/*7942: 48 d0*/ rcall .+144 // 0x79d4
/*7944: 04 fd*/ sbrc r16, 4
/*7946: 1e c0*/ rjmp .+60 // 0x7984
/*7948: 45 d0*/ rcall .+138 // 0x79d4
/*794a: 00 fd*/ sbrc r16, 0
/*794c: 03 c0*/ rjmp .+6 // 0x7954
/*794e: 42 d0*/ rcall .+132 // 0x79d4
/*7950: 04 ff*/ sbrs r16, 4
/*7952: fa cf*/ rjmp .-12 // 0x7948
/*7954: 10 e0*/ ldi r17, 0x00 // 0
/*7956: 01 2f*/ mov r16, r17
/*7958: 13 95*/ inc r17
/*795a: 00 32*/ cpi r16, 0x20 // 32
/*795c: 81 f0*/ breq .+32 // 0x797e
/*795e: ed 91*/ ld ZL, X+
/*7960: fc 91*/ ld ZH, X
/*7962: 11 97*/ sbiw r26, 0x01 // 1
/*7964: 04 91*/ lpm r16, Z
/*7966: 33 d0*/ rcall .+102 // 0x79ce
/*7968: 2d 91*/ ld r18, X+
/*796a: 3c 91*/ ld r19, X
/*796c: 2f 5f*/ subi r18, 0xFF // 255
/*796e: 3f 4f*/ sbci r19, 0xFF // 255
/*7970: 3c 93*/ st X, r19
/*7972: 2e 93*/ st -X, r18
/*7974: fd 01*/ movw ZL, r26
/*7976: 03 81*/ ldd r16, Z+3 // 0x03
/*7978: 0a 95*/ dec r16
/*797a: 03 83*/ std Z+3, r16 // 0x03
/*797c: 61 f7*/ brne .-40 // 0x7956
/*797e: 2a d0*/ rcall .+84 // 0x79d4
/*7980: 04 ff*/ sbrs r16, 4
/*7982: da cf*/ rjmp .-76 // 0x7938
/*7984: 00 91 19 02*/ lds r16, 0x0219
/*7988: 01 30*/ cpi r16, 0x01 // 1
/*798a: 39 f4*/ brne .+14 // 0x799a
/*798c: 23 d0*/ rcall .+70 // 0x79d4
/*798e: 04 fd*/ sbrc r16, 4
/*7990: 04 c0*/ rjmp .+8 // 0x799a
/*7992: 20 d0*/ rcall .+64 // 0x79d4
/*7994: 00 ff*/ sbrs r16, 0
/*7996: fd cf*/ rjmp .-6 // 0x7992
/*7998: 5a d0*/ rcall .+180 // 0x7a4e
/*799a: 1c d0*/ rcall .+56 // 0x79d4
/*799c: 04 ff*/ sbrs r16, 4
/*799e: fd cf*/ rjmp .-6 // 0x799a
/*79a0: 46 d0*/ rcall .+140 // 0x7a2e
/*79a2: 18 d0*/ rcall .+48 // 0x79d4
/*79a4: 0b 7f*/ andi r16, 0xFB // 251
/*79a6: 49 d0*/ rcall .+146 // 0x7a3a
/*79a8: 22 96*/ adiw YL, 0x02 // 2
/*79aa: a9 91*/ ld r26, Y+
/*79ac: b9 91*/ ld r27, Y+
/*79ae: 08 95*/ ret
/*79b0: 10 91 f1 00*/ lds r17, UEDATX
/*79b4: 08 95*/ ret
/*79b6: 7d df*/ rcall .-262 // 0x78b2
/*79b8: 00 91 1e 02*/ lds r16, 0x021E
/*79bc: 08 d0*/ rcall .+16 // 0x79ce
/*79be: 47 d0*/ rcall .+142 // 0x7a4e
/*79c0: 09 d0*/ rcall .+18 // 0x79d4
/*79c2: 0f 77*/ andi r16, 0x7F // 127
/*79c4: 3a d0*/ rcall .+116 // 0x7a3a
/*79c6: 06 d0*/ rcall .+12 // 0x79d4
/*79c8: 02 ff*/ sbrs r16, 2
/*79ca: fd cf*/ rjmp .-6 // 0x79c6
/*79cc: bf c0*/ rjmp .+382 // 0x7b4c
/*79ce: 00 93 f1 00*/ sts UEDATX, r16
/*79d2: 08 95*/ ret
/*79d4: 00 91 e8 00*/ lds r16, UEINTX
/*79d8: 08 95*/ ret
/*79da: 24 d0*/ rcall .+72 // 0x7a24
/*79dc: 10 91 1d 02*/ lds r17, 0x021D
/*79e0: 10 58*/ subi r17, 0x80 // 128
/*79e2: 29 f0*/ breq .+10 // 0x79ee
/*79e4: 1a 95*/ dec r17
/*79e6: 89 f0*/ breq .+34 // 0x7a0a
/*79e8: 1a 95*/ dec r17
/*79ea: 91 f0*/ breq .+36 // 0x7a10
/*79ec: 19 c0*/ rjmp .+50 // 0x7a20
/*79ee: 61 df*/ rcall .-318 // 0x78b2
/*79f0: 00 91 1c 02*/ lds r16, 0x021C
/*79f4: ec df*/ rcall .-40 // 0x79ce
/*79f6: 00 e0*/ ldi r16, 0x00 // 0
/*79f8: ea df*/ rcall .-44 // 0x79ce
/*79fa: 29 d0*/ rcall .+82 // 0x7a4e
/*79fc: eb df*/ rcall .-42 // 0x79d4
/*79fe: 02 ff*/ sbrs r16, 2
/*7a00: fd cf*/ rjmp .-6 // 0x79fc
/*7a02: 18 d0*/ rcall .+48 // 0x7a34
/*7a04: e7 df*/ rcall .-50 // 0x79d4
/*7a06: 0f 77*/ andi r16, 0x7F // 127
/*7a08: 0c c0*/ rjmp .+24 // 0x7a22
/*7a0a: 53 df*/ rcall .-346 // 0x78b2
/*7a0c: 00 e0*/ ldi r16, 0x00 // 0
/*7a0e: f2 cf*/ rjmp .-28 // 0x79f4
/*7a10: 51 d0*/ rcall .+162 // 0x7ab4
/*7a12: 0f 77*/ andi r16, 0x7F // 127
/*7a14: 10 e0*/ ldi r17, 0x00 // 0
/*7a16: f8 01*/ movw ZL, r16
/*7a18: e5 5e*/ subi ZL, 0xE5 // 229
/*7a1a: fd 4f*/ sbci ZH, 0xFD // 253
/*7a1c: 00 81*/ ld r16, Z
/*7a1e: ea cf*/ rjmp .-44 // 0x79f4
/*7a20: 0f d0*/ rcall .+30 // 0x7a40
/*7a22: 0b c0*/ rjmp .+22 // 0x7a3a
/*7a24: 01 d0*/ rcall .+2 // 0x7a28
/*7a26: 00 d0*/ rcall .+0 // 0x7a28
/*7a28: 00 91 f1 00*/ lds r16, UEDATX
/*7a2c: 08 95*/ ret
/*7a2e: d2 df*/ rcall .-92 // 0x79d4
/*7a30: 0f 7e*/ andi r16, 0xEF // 239
/*7a32: 03 c0*/ rjmp .+6 // 0x7a3a
/*7a34: 00 91 e8 00*/ lds r16, UEINTX
/*7a38: 0b 7f*/ andi r16, 0xFB // 251
/*7a3a: 00 93 e8 00*/ sts UEINTX, r16
/*7a3e: 08 95*/ ret
/*7a40: 00 91 eb 00*/ lds r16, UECONX
/*7a44: 32 df*/ rcall .-412 // 0x78aa
/*7a46: c6 df*/ rcall .-116 // 0x79d4
/*7a48: 07 7f*/ andi r16, 0xF7 // 247
/*7a4a: 08 95*/ ret
/*7a4c: 32 df*/ rcall .-412 // 0x78b2
/*7a4e: c2 df*/ rcall .-124 // 0x79d4
/*7a50: 0e 7f*/ andi r16, 0xFE // 254
/*7a52: f3 cf*/ rjmp .-26 // 0x7a3a
/*7a54: 00 91 1d 02*/ lds r16, 0x021D
/*7a58: 00 23*/ and r16, r16
/*7a5a: 29 f0*/ breq .+10 // 0x7a66
/*7a5c: 0a 95*/ dec r16
/*7a5e: 09 f1*/ breq .+66 // 0x7aa2
/*7a60: 0a 95*/ dec r16
/*7a62: 31 f0*/ breq .+12 // 0x7a70
/*7a64: 1e c0*/ rjmp .+60 // 0x7aa2
/*7a66: e0 df*/ rcall .-64 // 0x7a28
/*7a68: 0a 95*/ dec r16
/*7a6a: 61 d0*/ rcall .+194 // 0x7b2e
/*7a6c: d9 f4*/ brne .+54 // 0x7aa4
/*7a6e: 1a c0*/ rjmp .+52 // 0x7aa4
/*7a70: 61 d0*/ rcall .+194 // 0x7b34
/*7a72: b9 f4*/ brne .+46 // 0x7aa2
/*7a74: d9 df*/ rcall .-78 // 0x7a28
/*7a76: 0f 77*/ andi r16, 0x7F // 127
/*7a78: 11 f4*/ brne .+4 // 0x7a7e
/*7a7a: 16 d0*/ rcall .+44 // 0x7aa8
/*7a7c: 1b d0*/ rcall .+54 // 0x7ab4
/*7a7e: 00 93 e9 00*/ sts UENUM, r16
/*7a82: 10 91 eb 00*/ lds r17, UECONX
/*7a86: 10 ff*/ sbrs r17, 0
/*7a88: 0b c0*/ rjmp .+22 // 0x7aa0
/*7a8a: 0e d0*/ rcall .+28 // 0x7aa8
/*7a8c: 10 e0*/ ldi r17, 0x00 // 0
/*7a8e: 10 93 e9 00*/ sts UENUM, r17
/*7a92: 21 e0*/ ldi r18, 0x01 // 1
/*7a94: f8 01*/ movw ZL, r16
/*7a96: e5 5e*/ subi ZL, 0xE5 // 229
/*7a98: fd 4f*/ sbci ZH, 0xFD // 253
/*7a9a: 20 83*/ st Z, r18
/*7a9c: 4f d0*/ rcall .+158 // 0x7b3c
/*7a9e: 03 c0*/ rjmp .+6 // 0x7aa6
/*7aa0: 42 d0*/ rcall .+132 // 0x7b26
/*7aa2: 45 d0*/ rcall .+138 // 0x7b2e
/*7aa4: cf df*/ rcall .-98 // 0x7a44
/*7aa6: c9 cf*/ rjmp .-110 // 0x7a3a
/*7aa8: 10 91 eb 00*/ lds r17, UECONX
/*7aac: 10 62*/ ori r17, 0x20 // 32
/*7aae: 10 93 eb 00*/ sts UECONX, r17
/*7ab2: 08 95*/ ret
/*7ab4: 10 91 e8 00*/ lds r17, UEINTX
/*7ab8: 17 7f*/ andi r17, 0xF7 // 247
/*7aba: 10 93 e8 00*/ sts UEINTX, r17
/*7abe: 08 95*/ ret
/*7ac0: 00 91 1d 02*/ lds r16, 0x021D
/*7ac4: 00 23*/ and r16, r16
/*7ac6: 11 f4*/ brne .+4 // 0x7acc
/*7ac8: af df*/ rcall .-162 // 0x7a28
/*7aca: 02 c0*/ rjmp .+4 // 0x7ad0
/*7acc: 01 30*/ cpi r16, 0x01 // 1
/*7ace: 11 f4*/ brne .+4 // 0x7ad4
/*7ad0: b7 df*/ rcall .-146 // 0x7a40
/*7ad2: b3 cf*/ rjmp .-154 // 0x7a3a
/*7ad4: 02 30*/ cpi r16, 0x02 // 2
/*7ad6: 31 f5*/ brne .+76 // 0x7b24
/*7ad8: 2d d0*/ rcall .+90 // 0x7b34
/*7ada: 19 f5*/ brne .+70 // 0x7b22
/*7adc: 20 91 f1 00*/ lds r18, UEDATX
/*7ae0: 2f 77*/ andi r18, 0x7F // 127
/*7ae2: 20 93 e9 00*/ sts UENUM, r18
/*7ae6: 23 d0*/ rcall .+70 // 0x7b2e
/*7ae8: 00 ff*/ sbrs r16, 0
/*7aea: 19 c0*/ rjmp .+50 // 0x7b1e
/*7aec: 81 f0*/ breq .+32 // 0x7b0e
/*7aee: 1f d0*/ rcall .+62 // 0x7b2e
/*7af0: 00 61*/ ori r16, 0x10 // 16
/*7af2: dc de*/ rcall .-584 // 0x78ac
/*7af4: 01 e0*/ ldi r16, 0x01 // 1
/*7af6: 10 e0*/ ldi r17, 0x00 // 0
/*7af8: 42 2f*/ mov r20, r18
/*7afa: 0e 94 9f 3e*/ call 0x7d3e // 0x7d3e
/*7afe: 00 93 ea 00*/ sts UERST, r16
/*7b02: 00 e0*/ ldi r16, 0x00 // 0
/*7b04: 00 93 ea 00*/ sts UERST, r16
/*7b08: 12 d0*/ rcall .+36 // 0x7b2e
/*7b0a: 08 60*/ ori r16, 0x08 // 8
/*7b0c: cf de*/ rcall .-610 // 0x78ac
/*7b0e: 0b d0*/ rcall .+22 // 0x7b26
/*7b10: 30 e0*/ ldi r19, 0x00 // 0
/*7b12: f9 01*/ movw ZL, r18
/*7b14: e5 5e*/ subi ZL, 0xE5 // 229
/*7b16: fd 4f*/ sbci ZH, 0xFD // 253
/*7b18: 00 83*/ st Z, r16
/*7b1a: 10 d0*/ rcall .+32 // 0x7b3c
/*7b1c: da cf*/ rjmp .-76 // 0x7ad2
/*7b1e: 03 d0*/ rcall .+6 // 0x7b26
/*7b20: d7 cf*/ rjmp .-82 // 0x7ad0
/*7b22: bf de*/ rcall .-642 // 0x78a2
/*7b24: 08 95*/ ret
/*7b26: 00 e0*/ ldi r16, 0x00 // 0
/*7b28: 00 93 e9 00*/ sts UENUM, r16
/*7b2c: 08 95*/ ret
/*7b2e: 00 91 eb 00*/ lds r16, UECONX
/*7b32: 08 95*/ ret
/*7b34: 79 df*/ rcall .-270 // 0x7a28
/*7b36: 3c df*/ rcall .-392 // 0x79b0
/*7b38: 00 23*/ and r16, r16
/*7b3a: 08 95*/ ret
/*7b3c: ba de*/ rcall .-652 // 0x78b2
/*7b3e: 4a df*/ rcall .-364 // 0x79d4
/*7b40: 0e 7f*/ andi r16, 0xFE // 254
/*7b42: 08 95*/ ret
/*7b44: 83 df*/ rcall .-250 // 0x7a4c
/*7b46: 46 df*/ rcall .-372 // 0x79d4
/*7b48: 02 ff*/ sbrs r16, 2
/*7b4a: fd cf*/ rjmp .-6 // 0x7b46
/*7b4c: 73 df*/ rcall .-282 // 0x7a34
/*7b4e: 42 df*/ rcall .-380 // 0x79d4
/*7b50: 0f 77*/ andi r16, 0x7F // 127
/*7b52: 73 cf*/ rjmp .-282 // 0x7a3a
L7B54:
/*7b54: 00 91 d7 00*/ lds r16, UHWCON
/*7b58: 01 60*/ ori r16, 0x01 // Spannungsregler aktivieren
/*7b5a: 00 93 d7 00*/ sts UHWCON, r16
/*7b5e: 0e 94 8b 38*/ call L7116 // 0x7116
/*7b62: 00 e0*/ ldi r16, 0x00 // 0
/*7b64: 00 93 1f 02*/ sts 0x021F, r16
/*7b68: 08 95*/ ret
L7B6A:
/*7b6a: 0c 94 bf 38*/ jmp L717E // 0x717e
usb_vect: // ISR Allgemeiner USB-Interrupt
/*7b6e: 8a 93*/ st -Y, r24
/*7b70: fa 93*/ st -Y, ZH
/*7b72: ea 93*/ st -Y, ZL
/*7b74: 3a 92*/ st -Y, r3
/*7b76: 2a 92*/ st -Y, r2
/*7b78: 1a 92*/ st -Y, r1
/*7b7a: 0a 92*/ st -Y, r0
/*7b7c: 7a 93*/ st -Y, r23
/*7b7e: 6a 93*/ st -Y, r22
/*7b80: 5a 93*/ st -Y, r21
/*7b82: 4a 93*/ st -Y, r20
/*7b84: 3a 93*/ st -Y, r19
/*7b86: 2a 93*/ st -Y, r18
/*7b88: 1a 93*/ st -Y, r17
/*7b8a: 0a 93*/ st -Y, r16
/*7b8c: 8f b7*/ in r24, SREG // 63
/*7b8e: 00 91 da 00*/ lds r16, USBINT
/*7b92: 00 ff*/ sbrs r16, 0
/*7b94: 24 c0*/ rjmp .+72 // 0x7bde
/*7b96: 00 91 d8 00*/ lds r16, USBCON
/*7b9a: 00 ff*/ sbrs r16, 0
/*7b9c: 20 c0*/ rjmp .+64 // 0x7bde
/*7b9e: 0e ef*/ ldi r16, 0xFE // 254
/*7ba0: 00 93 da 00*/ sts USBINT, r16
/*7ba4: 00 91 d9 00*/ lds r16, USBSTA
/*7ba8: 00 ff*/ sbrs r16, 0
/*7baa: 11 c0*/ rjmp .+34 // 0x7bce
/*7bac: 01 e0*/ ldi r16, 0x01 // 1
/*7bae: 00 93 0d 01*/ sts 0x010D, r16
/*7bb2: ab d0*/ rcall .+342 // 0x7d0a
/*7bb4: 02 60*/ ori r16, 0x02 // 2
/*7bb6: 96 d0*/ rcall .+300 // 0x7ce4
/*7bb8: 9a d0*/ rcall .+308 // 0x7cee
/*7bba: 08 60*/ ori r16, 0x08 // 8
/*7bbc: a2 d0*/ rcall .+324 // 0x7d02
/*7bbe: 0e 94 9b 38*/ call L7136
/*7bc2: 00 91 e0 00*/ lds r16, UDCON
/*7bc6: 0e 7f*/ andi r16, ~1
/*7bc8: 00 93 e0 00*/ sts UDCON, r16
/*7bcc: 08 c0*/ rjmp .+16 // 0x7bde
/*7bce: 00 e0*/ ldi r16, 0
/*7bd0: 00 93 0d 01*/ sts 0x010D, r16
/*7bd4: 00 93 1e 02*/ sts 0x021E, r16
/*7bd8: 98 d0*/ rcall .+304 // 0x7d0a
/*7bda: 04 60*/ ori r16, 4
/*7bdc: 83 d0*/ rcall .+262 // 0x7ce4
/*7bde: 7f d0*/ rcall .+254 // 0x7cde
/*7be0: 02 ff*/ sbrs r16, 2
/*7be2: 05 c0*/ rjmp .+10 // 0x7bee
/*7be4: 84 d0*/ rcall .+264 // 0x7cee
/*7be6: 02 ff*/ sbrs r16, 2
/*7be8: 02 c0*/ rjmp .+4 // 0x7bee
/*7bea: 0b ef*/ ldi r16, ~4
/*7bec: 75 d0*/ rcall .+234 // 0x7cd8
/*7bee: 77 d0*/ rcall .+238 // 0x7cde
/*7bf0: 00 ff*/ sbrs r16, 0
/*7bf2: 1b c0*/ rjmp .+54 // 0x7c2a
/*7bf4: 7c d0*/ rcall .+248 // 0x7cee
/*7bf6: 00 ff*/ sbrs r16, 0
/*7bf8: 18 c0*/ rjmp .+48 // 0x7c2a
/*7bfa: 01 e0*/ ldi r16, 0x01 // 1
/*7bfc: 00 93 0e 01*/ sts 0x010E, r16
/*7c00: 6a d0*/ rcall .+212 // 0x7cd6
/*7c02: 83 d0*/ rcall .+262 // 0x7d0a
/*7c04: 00 62*/ ori r16, 0x20 // 32
/*7c06: 6e d0*/ rcall .+220 // 0x7ce4
/*7c08: 0e ef*/ ldi r16, 0xFE // 254
/*7c0a: 6f d0*/ rcall .+222 // 0x7cea
/*7c0c: 00 61*/ ori r16, 0x10 // 16
/*7c0e: 79 d0*/ rcall .+242 // 0x7d02
/*7c10: 6e d0*/ rcall .+220 // 0x7cee
/*7c12: 0f 7d*/ andi r16, 0xDF // 223
/*7c14: 76 d0*/ rcall .+236 // 0x7d02
/*7c16: 00 91 d8 00*/ lds r16, USBCON
/*7c1a: 00 62*/ ori r16, 0x20
/*7c1c: 00 93 d8 00*/ sts USBCON, r16
/*7c20: 09 b5*/ in r16, PLLCSR
/*7c22: 0d 7f*/ andi r16, ~2
/*7c24: 09 bd*/ out PLLCSR, r16
/*7c26: 00 e0*/ ldi r16, 0
/*7c28: 09 bd*/ out PLLCSR, r16
/*7c2a: 59 d0*/ rcall .+178 // 0x7cde
/*7c2c: 04 ff*/ sbrs r16, 4
/*7c2e: 20 c0*/ rjmp .+64 // 0x7c70
/*7c30: 5e d0*/ rcall .+188 // 0x7cee
/*7c32: 04 ff*/ sbrs r16, 4
/*7c34: 1d c0*/ rjmp .+58 // 0x7c70
/*7c36: 09 b5*/ in r16, PLLCSR // 41
/*7c38: 00 fd*/ sbrc r16, 0
/*7c3a: 05 c0*/ rjmp .+10 // 0x7c46
/*7c3c: 0e 94 eb 38*/ call L71D6
/*7c40: 09 b5*/ in r16, PLLCSR // 41
/*7c42: 00 ff*/ sbrs r16, 0
/*7c44: fd cf*/ rjmp .-6 // 0x7c40
/*7c46: 00 91 d8 00*/ lds r16, USBCON
/*7c4a: 0f 7d*/ andi r16, ~0x20
/*7c4c: 00 93 d8 00*/ sts USBCON, r16
/*7c50: 42 d0*/ rcall .+132 // 0x7cd6
/*7c52: 00 91 0e 01*/ lds r16, 0x010E
/*7c56: 00 23*/ and r16, r16
/*7c58: 59 f0*/ breq .+22 // 0x7c70
/*7c5a: 4c d0*/ rcall .+152 // 0x7cf4
/*7c5c: 0f ee*/ ldi r16, ~0x10
/*7c5e: 45 d0*/ rcall .+138 // 0x7cea
/*7c60: 0f 7e*/ andi r16, ~0x10
/*7c62: 52 d0*/ rcall .+164 // 0x7d08
/*7c64: 00 64*/ ori r16, 0x40
/*7c66: 3e d0*/ rcall .+124 // 0x7ce4
/*7c68: 42 d0*/ rcall .+132 // 0x7cee
/*7c6a: 01 60*/ ori r16, 0x01
/*7c6c: 4a d0*/ rcall .+148 // 0x7d02
/*7c6e: 42 d0*/ rcall .+132 // 0x7cf4
/*7c70: 36 d0*/ rcall .+108 // 0x7cde
/*7c72: 05 ff*/ sbrs r16, 5
/*7c74: 0f c0*/ rjmp .+30 // 0x7c94
/*7c76: 3b d0*/ rcall .+118 // 0x7cee
/*7c78: 05 ff*/ sbrs r16, 5
/*7c7a: 0c c0*/ rjmp .+24 // 0x7c94
/*7c7c: 00 e0*/ ldi r16, 0x00 // 0
/*7c7e: 00 93 0e 01*/ sts 0x010E, r16
/*7c82: 35 d0*/ rcall .+106 // 0x7cee
/*7c84: 0f 7e*/ andi r16, ~0x10
/*7c86: 3d d0*/ rcall .+122 // 0x7d02
/*7c88: 0f ed*/ ldi r16, ~0x20
/*7c8a: 2f d0*/ rcall .+94 // 0x7cea
/*7c8c: 0f 7d*/ andi r16, ~0x20
/*7c8e: 3c d0*/ rcall .+120 // 0x7d08
/*7c90: 00 68*/ ori r16, 0x80
/*7c92: 28 d0*/ rcall .+80 // 0x7ce4
/*7c94: 24 d0*/ rcall .+72 // 0x7cde
/*7c96: 03 ff*/ sbrs r16, 3
/*7c98: 0d c0*/ rjmp .+26 // 0x7cb4
/*7c9a: 29 d0*/ rcall .+82 // 0x7cee
/*7c9c: 03 ff*/ sbrs r16, 3
/*7c9e: 0a c0*/ rjmp .+20 // 0x7cb4
/*7ca0: 00 e0*/ ldi r16, 0
/*7ca2: 00 93 1f 02*/ sts 0x021F, r16
/*7ca6: 07 ef*/ ldi r16, ~8
/*7ca8: 17 d0*/ rcall .+46 // 0x7cd8
/*7caa: 0e 94 74 3b*/ call 0x76e8 // 0x76e8
/*7cae: 2d d0*/ rcall .+90 // 0x7d0a
/*7cb0: 11 60*/ ori r17, 1
/*7cb2: 18 d0*/ rcall .+48 // 0x7ce4
/*7cb4: 8f bf*/ out SREG, r24
/*7cb6: 09 91*/ ld r16, Y+
/*7cb8: 19 91*/ ld r17, Y+
/*7cba: 29 91*/ ld r18, Y+
/*7cbc: 39 91*/ ld r19, Y+
/*7cbe: 49 91*/ ld r20, Y+
/*7cc0: 59 91*/ ld r21, Y+
/*7cc2: 69 91*/ ld r22, Y+
/*7cc4: 79 91*/ ld r23, Y+
/*7cc6: 09 90*/ ld r0, Y+
/*7cc8: 19 90*/ ld r1, Y+
/*7cca: 29 90*/ ld r2, Y+
/*7ccc: 39 90*/ ld r3, Y+
/*7cce: e9 91*/ ld ZL, Y+
/*7cd0: f9 91*/ ld ZH, Y+
/*7cd2: 89 91*/ ld r24, Y+
/*7cd4: 18 95*/ reti
/*7cd6: 0f ee*/ ldi r16, ~0x10
/*7cd8: 00 93 e1 00*/ sts UDINT, r16
/*7cdc: 08 95*/ ret
/*7cde: 00 91 e1 00*/ lds r16, UDINT
/*7ce2: 08 95*/ ret
/*7ce4: 11 83*/ std Z+1, r17 // 0x01
/*7ce6: 00 83*/ st Z, r16
/*7ce8: 08 95*/ ret
/*7cea: 00 93 e1 00*/ sts UDINT, r16
/*7cee: 00 91 e2 00*/ lds r16, UDIEN
/*7cf2: 08 95*/ ret
/*7cf4: 00 91 e2 00*/ lds r16, UDIEN
/*7cf8: 00 62*/ ori r16, 0x20
/*7cfa: 03 d0*/ rcall .+6 // 0x7d02
/*7cfc: 00 91 e2 00*/ lds r16, UDIEN
/*7d00: 08 60*/ ori r16, 8
/*7d02: 00 93 e2 00*/ sts UDIEN, r16
/*7d06: 08 95*/ ret
/*7d08: fc df*/ rcall .-8 // 0x7d02
/*7d0a: e0 e2*/ ldi ZL, 0x20
/*7d0c: f2 e0*/ ldi ZH, 0x02
/*7d0e: 00 81*/ ld r16, Z
/*7d10: 11 81*/ ldd r17, Z+1 // 0x01
/*7d12: 08 95*/ ret
/*7d14: 00 00*/ nop
/*7d16: 88 95*/ sleep
/*7d18: fe cf*/ rjmp .-4 // 0x7d16
reset_vect:
/*7d1a: 01 e6*/ ldi r16, 0x61
/*7d1c: 0d bf*/ out SPL, r16
/*7d1e: 02 e0*/ ldi r16, 0x02
/*7d20: 0e bf*/ out SPH, r16
/*7d22: c2 ee*/ ldi YL, 0xE2
/*7d24: d2 e0*/ ldi YH, 0x02
/*7d26: 0e 94 74 38*/ call L70E8 // Watchdog abschalten
/*7d2a: 00 23*/ and r16, r16 // immer 1
/*7d2c: 11 f0*/ breq 1f
/*7d2e: 0e 94 d3 3e*/ call L7DA6 // RAM initialisieren
/*7d32: 0e 94 65 38*/1: call L70CA
/*7d36: 0e 94 8a 3e*/ call 0x7d14 // 0x7d14
/*7d3a: 0c 94 8a 3e*/ jmp 0x7d14 // 0x7d14
/*7d3e: 4a 95*/ dec r20
/*7d40: 1a f0*/ brmi .+6 // 0x7d48
/*7d42: 00 0f*/ add r16, r16
/*7d44: 11 1f*/ adc r17, r17
/*7d46: fb cf*/ rjmp .-10 // 0x7d3e
/*7d48: 08 95*/ ret
/*7d4a: ba 92*/ st -Y, r11
/*7d4c: aa 92*/ st -Y, r10
/*7d4e: 9a 92*/ st -Y, r9
/*7d50: 8a 92*/ st -Y, r8
/*7d52: 7a 92*/ st -Y, r7
/*7d54: 6a 92*/ st -Y, r6
/*7d56: 5a 92*/ st -Y, r5
/*7d58: 4a 92*/ st -Y, r4
L7D5A:
/*7d5a: ba 93*/ st -Y, r27
/*7d5c: aa 93*/ st -Y, r26
/*7d5e: 9a 93*/ st -Y, r25
/*7d60: 8a 93*/ st -Y, r24
/*7d62: 08 95*/ ret
/*7d64: bb 84*/ ldd r11, Y+11
/*7d66: aa 84*/ ldd r10, Y+10
/*7d68: 99 84*/ ldd r9, Y+9
/*7d6a: 88 84*/ ldd r8, Y+8
/*7d6c: 7f 80*/ ldd r7, Y+7
/*7d6e: 6e 80*/ ldd r6, Y+6
/*7d70: 5d 80*/ ldd r5, Y+5
L7D72:
/*7d72: 4c 80*/ ldd r4, Y+4
/*7d74: bb 81*/ ldd r27, Y+3
/*7d76: aa 81*/ ldd r26, Y+2
/*7d78: 99 81*/ ldd r25, Y+1
/*7d7a: 88 81*/ ld r24, Y
/*7d7c: f0 e0*/ ldi ZH, 0
/*7d7e: 0f b6*/ in r0, SREG
/*7d80: f8 94*/ cli
/*7d82: ce 0f*/ add YL, ZL
/*7d84: df 1f*/ adc YH, ZH
/*7d86: 0f be*/ out SREG, r0
/*7d88: 08 95*/ ret
L7D8A: // RAM mit 0 initialisieren: ".bss"
/*7d8a: 20 e0*/ 0: ldi r18, 0x00
/*7d8c: 06 d0*/ rcall 1f
/*7d8e: e9 f7*/ brne 0b
/*7d90: 08 95*/ ret
L7D92: // RAM mit Flash initialisieren: ".data"
/*7d92: 25 91*/ 0: lpm r18, Z+
/*7d94: 02 d0*/ rcall 1f
/*7d96: e9 f7*/ brne 0b
/*7d98: 08 95*/ ret
/*7d9a: 2d 93*/ 1: st X+, r18
/*7d9c: 01 50*/ subi r16, 1
/*7d9e: 10 40*/ sbci r17, 0
/*7da0: 20 2f*/ mov r18, r16
/*7da2: 21 2b*/ or r18, r17
/*7da4: 08 95*/ ret
L7DA6: // RAM mit 0 oder Flash per Tabelle initialisieren
/*7da6: 85 e8*/ ldi r24,lo8(L7085)
/*7da8: 90 e7*/ ldi r25,hi8(L7085)
/*7daa: fc 01*/ 0: movw ZL, r24
/*7dac: 05 91*/ lpm r16, Z+ // Länge
/*7dae: 14 91*/ lpm r17, Z
/*7db0: fc 01*/ movw ZL, r24
/*7db2: 32 96*/ adiw ZL, 2
/*7db4: a5 91*/ lpm XL, Z+ // RAM-Zieladresse
/*7db6: b4 91*/ lpm XH, Z
/*7db8: fc 01*/ movw ZL, r24
/*7dba: 34 96*/ adiw ZL, 4
/*7dbc: 25 91*/ lpm r18, Z+ // Flash-Quelladresse
/*7dbe: 34 91*/ lpm r19, Z
/*7dc0: 42 2f*/ mov r20, r18
/*7dc2: 43 2b*/ or r20, r19
/*7dc4: 19 f0*/ breq 1f
/*7dc6: f9 01*/ movw ZL, r18
/*7dc8: e4 df*/ rcall L7D92
/*7dca: 01 c0*/ rjmp 2f
/*7dcc: de df*/ 1: rcall L7D8A
/*7dce: 06 96*/ 2: adiw r24, 6
/*7dd0: 10 e7*/ ldi r17,hi8(L7091)
/*7dd2: 81 39*/ cpi r24,lo8(L7091)
/*7dd4: 91 07*/ cpc r25, r17
/*7dd6: 48 f3*/ brcs 0b
/*7dd8: 08 95*/ ret
spm_erase_write:
/*7dda: 2f 93*/ push r18
/*7ddc: 0c d0*/ rcall spm_erase
/*7dde: 2f 91*/ pop r18
/*7de0: 01 d0*/ rcall spm_write_page
/*7de2: 08 95*/ ret
spm_write_page:
/*7de4: 3c d0*/ rcall spm_wait
/*7de6: f1 2f*/ mov ZH, r17
/*7de8: e0 2f*/ mov ZL, r16
/*7dea: 45 e0*/ ldi r20, 0x05 // schreiben
/*7dec: 47 bf*/ out SPMCSR, r20
/*7dee: e8 95*/ spm
/*7df0: 36 d0*/ rcall spm_wait
/*7df2: 12 d0*/ rcall L7E18
/*7df4: 08 95*/ ret
spm_erase:
/*7df6: 33 d0*/ rcall spm_wait
/*7df8: f1 2f*/ mov ZH, r17
/*7dfa: e0 2f*/ mov ZL, r16
/*7dfc: 43 e0*/ ldi r20, 0x03 // löschen
/*7dfe: 47 bf*/ out SPMCSR, r20
/*7e00: e8 95*/ spm
/*7e02: 2d d0*/ rcall spm_wait
/*7e04: 08 95*/ ret
spm_erase_2:
/*7e06: 2b d0*/ rcall spm_wait
/*7e08: f1 2f*/ mov ZH, r17
/*7e0a: e0 2f*/ mov ZL, r16
/*7e0c: 43 e0*/ ldi r20, 0x03 // löschen
/*7e0e: 47 bf*/ out SPMCSR, r20
/*7e10: e8 95*/ spm
/*7e12: 25 d0*/ rcall spm_wait
/*7e14: 01 d0*/ rcall L7E18
/*7e16: 08 95*/ ret
L7E18:
/*7e18: 22 d0*/ rcall spm_wait
/*7e1a: 41 e1*/ ldi r20, 0x11 // 17
/*7e1c: 47 bf*/ out SPMCSR, r20
/*7e1e: e8 95*/ spm
/*7e20: 1e c0*/ rjmp spm_wait
lpm_signature:
/*7e22: 1d d0*/ rcall spm_wait
/*7e24: f1 2f*/ mov ZH, r17
/*7e26: e0 2f*/ mov ZL, r16
/*7e28: 41 e2*/ ldi r20, 0x21 // Signatur
/*7e2a: 47 bf*/ out SPMCSR, r20
/*7e2c: c8 95*/ lpm
/*7e2e: 00 2d*/ mov r16, r0
/*7e30: 16 c0*/ rjmp spm_wait
lpm_lock:
/*7e32: 15 d0*/ rcall spm_wait
/*7e34: f1 2f*/ mov ZH, r17
/*7e36: e0 2f*/ mov ZL, r16
/*7e38: 49 e0*/ ldi r20, 0x09 // 9
/*7e3a: 47 bf*/ out SPMCSR, r20
/*7e3c: c8 95*/ lpm
/*7e3e: 00 2d*/ mov r16, r0
/*7e40: 0e c0*/ rjmp spm_wait
L7E42:
mov ZH, r19
mov ZL, r18
mov r0, r17
mov r1, r16
ldi r20, 0x01 // 1
out SPMCSR, r20
spm
rjmp spm_wait
L7E52:
/*7e52: 05 d0*/ rcall spm_wait
/*7e54: 00 2e*/ mov r0, r16
/*7e56: 29 e0*/ ldi r18, 0x09 // 9
/*7e58: 27 bf*/ out SPMCSR, r18
/*7e5a: e8 95*/ spm
/*7e5c: 00 c0*/ rjmp spm_wait
spm_wait:
mov r0, r18
in r18, SPMCSR
sbrc r18, 0
rjmp spm_wait
mov r18, r0
ret
L7E6A: // dead code
mov r0, r18
in r18, SPMCSR
sbrc r18, 6
rjmp L7E6A
mov r18, r0
ret
/*7e76: 0e 94 a5 3e*/ call 0x7d4a // 0x7d4a
/*7e7a: 22 97*/ sbiw YL, 0x02 // 2
/*7e7c: 48 01*/ movw r8, r16
/*7e7e: c9 01*/ movw r24, r18
/*7e80: da 01*/ movw r26, r20
/*7e82: 10 c0*/ rjmp .+32 // 0x7ea4
/*7e84: 5b d0*/ rcall L7F3C
/*7e86: 01 e0*/ ldi r16, 0x01 // 1
/*7e88: a0 0e*/ add r10, r16
/*7e8a: 00 e0*/ ldi r16, 0x00 // 0
/*7e8c: b0 1e*/ adc r11, r16
/*7e8e: 00 e4*/ ldi r16, 0x40 // 64
/*7e90: a0 16*/ cp r10, r16
/*7e92: 00 e0*/ ldi r16, 0x00 // 0
/*7e94: b0 06*/ cpc r11, r16
/*7e96: 08 f4*/ brcc .+2 // 0x7e9a
/*7e98: 40 c0*/ rjmp .+128 // 0x7f1a
/*7e9a: 83 01*/ movw r16, r6
/*7e9c: 20 e0*/ ldi r18, 0x00 // 0
/*7e9e: 30 e0*/ ldi r19, 0x00 // 0
/*7ea0: 0e 94 f2 3e*/ call spm_write_page
/*7ea4: 0a 2f*/ mov r16, r26
/*7ea6: 0b 2b*/ or r16, r27
/*7ea8: 09 f4*/ brne .+2 // 0x7eac
/*7eaa: 40 c0*/ rjmp .+128 // 0x7f2c
/*7eac: 08 2f*/ mov r16, r24
/*7eae: 0f 77*/ andi r16, 0x7F // 127
/*7eb0: 10 e0*/ ldi r17, 0x00 // 0
/*7eb2: 2c 01*/ movw r4, r24
/*7eb4: 40 1a*/ sub r4, r16
/*7eb6: 51 0a*/ sbc r5, r17
/*7eb8: 32 01*/ movw r6, r4
/*7eba: 00 e4*/ ldi r16, 0x40 // 64
/*7ebc: a0 2e*/ mov r10, r16
/*7ebe: 03 c0*/ rjmp .+6 // 0x7ec6
/*7ec0: 0a 2f*/ mov r16, r26
/*7ec2: 0b 2b*/ or r16, r27
/*7ec4: e1 f0*/ breq .+56 // 0x7efe
/*7ec6: 48 16*/ cp r4, r24
/*7ec8: 59 06*/ cpc r5, r25
/*7eca: 80 f0*/ brcs .+32 // 0x7eec
/*7ecc: f4 01*/ movw ZL, r8
/*7ece: 01 91*/ ld r16, Z+
/*7ed0: 4f 01*/ movw r8, ZL
/*7ed2: 09 83*/ std Y+1, r16 // 0x01
/*7ed4: 11 97*/ sbiw r26, 0x01 // 1
/*7ed6: 29 f0*/ breq .+10 // 0x7ee2
/*7ed8: 01 91*/ ld r16, Z+
/*7eda: 4f 01*/ movw r8, ZL
/*7edc: 08 83*/ st Y, r16
/*7ede: 11 97*/ sbiw r26, 0x01 // 1
/*7ee0: 11 c0*/ rjmp .+34 // 0x7f04
/*7ee2: f2 01*/ movw ZL, r4
/*7ee4: 31 96*/ adiw ZL, 0x01 // 1
/*7ee6: 04 91*/ lpm r16, Z
/*7ee8: 08 83*/ st Y, r16
/*7eea: 0c c0*/ rjmp .+24 // 0x7f04
/*7eec: f2 01*/ movw ZL, r4
/*7eee: 04 91*/ lpm r16, Z
/*7ef0: 09 83*/ std Y+1, r16 // 0x01
/*7ef2: 31 96*/ adiw ZL, 0x01 // 1
/*7ef4: e8 17*/ cp ZL, r24
/*7ef6: f9 07*/ cpc ZH, r25
/*7ef8: a1 f7*/ brne .-24 // 0x7ee2
/*7efa: f4 01*/ movw ZL, r8
/*7efc: ed cf*/ rjmp .-38 // 0x7ed8
/*7efe: 1b d0*/ rcall L7F36
/*7f00: 08 83*/ st Y, r16
/*7f02: 19 83*/ std Y+1, r17 // 0x01
/*7f04: 92 01*/ movw r18, r4
/*7f06: 08 81*/ ld r16, Y
/*7f08: 19 81*/ ldd r17, Y+1 // 0x01
/*7f0a: 0e 94 21 3f*/ call L7E42
/*7f0e: 16 d0*/ rcall L7F3C
/*7f10: aa 94*/ dec r10
/*7f12: b1 f6*/ brne .-84 // 0x7ec0
/*7f14: 23 01*/ movw r4, r6
/*7f16: aa 24*/ eor r10, r10
/*7f18: bb 24*/ eor r11, r11
/*7f1a: 0d d0*/ rcall L7F36
/*7f1c: 31 2f*/ mov r19, r17
/*7f1e: 0f 3f*/ cpi r16, 0xFF // 255
/*7f20: 3f 4f*/ sbci r19, 0xFF // 255
/*7f22: 09 f4*/ brne 1f
/*7f24: af cf*/ rjmp .-162 // 0x7e84
/*7f26: 83 01*/ 1: movw r16, r6
/*7f28: 1d d0*/ rcall L7F64
/*7f2a: b7 cf*/ rjmp .-146 // 0x7e9a
/*7f2c: 01 e0*/ ldi r16, 0x01 // 1
/*7f2e: 22 96*/ adiw YL, 0x02 // 2
/*7f30: ec e0*/ ldi ZL, 0x0C // 12
/*7f32: 0c 94 b2 3e*/ jmp 0x7d64 // 0x7d64
L7F36:
/*7f36: 82 01*/ movw r16, r4
/*7f38: 0c 94 5f 38*/ jmp L70BE
L7F3C:
ldi r16, 2
add r4, r16
ldi r16, 0
adc r5, r16
ret
L7F46:/*9a 93*/ st -Y, r25
/*7f48: 8a 93*/ st -Y, r24
/*7f4a: 80 e0*/ ldi r24, 0x00 // 0
/*7f4c: 90 e0*/ ldi r25, 0x00 // 0
/*7f4e: 8c 01*/ 0: movw r16, r24
/*7f50: 09 d0*/ rcall L7F64
/*7f52: 80 58*/ subi r24, 0x80 // 128
/*7f54: 9f 4f*/ sbci r25, 0xFF // 255
/*7f56: 8f 3f*/ cpi r24, 0xFF // 255
/*7f58: 0f e6*/ ldi r16, 0x6F // 111
/*7f5a: 90 07*/ cpc r25, r16
/*7f5c: c0 f3*/ brcs 0b
/*7f5e: 89 91*/ ld r24, Y+
/*7f60: 99 91*/ ld r25, Y+
/*7f62: 08 95*/ ret
L7F64:
/*7f64: 20 e0*/ 1: ldi r18, 0x00 // 0
/*7f66: 30 e0*/ ldi r19, 0x00 // 0
/*7f68: 0c 94 fb 3e*/ jmp spm_erase
L7F6C: // RAM-Initialisierungsdaten (section(".data"))
.byte 0x00,0x00,0x00,0x00
.byte 0x00,0x00,0x00,0x00
.byte 0x00,0x00,0xFC,0x00
.org 0x0fe4,0xFF
jmp spm_erase_write
jmp lpm_signature
jmp lpm_lock
jmp L7E42
jmp spm_write_page
jmp spm_erase_2
jmp L7E52
Vorgefundene Kodierung: UTF-8 | 0
|