
final.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000022  00800100  00001b4c  00001be0  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         00001b4c  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          0000001c  00800122  00800122  00001c02  2**0
                  ALLOC
  3 .comment      00000011  00000000  00000000  00001c02  2**0
                  CONTENTS, READONLY
  4 .debug_aranges 00000778  00000000  00000000  00001c18  2**3
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_info   0000b0ce  00000000  00000000  00002390  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 00002d7a  00000000  00000000  0000d45e  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   0000658e  00000000  00000000  000101d8  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_frame  00001084  00000000  00000000  00016768  2**2
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_str    00004029  00000000  00000000  000177ec  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_loc    0000706b  00000000  00000000  0001b815  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_ranges 00000768  00000000  00000000  00022880  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
       0:	9b c0       	rjmp	.+310    	; 0x138 <__ctors_end>
       2:	00 00       	nop
       4:	b5 c0       	rjmp	.+362    	; 0x170 <__bad_interrupt>
       6:	00 00       	nop
       8:	b3 c0       	rjmp	.+358    	; 0x170 <__bad_interrupt>
       a:	00 00       	nop
       c:	b1 c0       	rjmp	.+354    	; 0x170 <__bad_interrupt>
       e:	00 00       	nop
      10:	af c0       	rjmp	.+350    	; 0x170 <__bad_interrupt>
      12:	00 00       	nop
      14:	ad c0       	rjmp	.+346    	; 0x170 <__bad_interrupt>
      16:	00 00       	nop
      18:	ab c0       	rjmp	.+342    	; 0x170 <__bad_interrupt>
      1a:	00 00       	nop
      1c:	a9 c0       	rjmp	.+338    	; 0x170 <__bad_interrupt>
      1e:	00 00       	nop
      20:	a7 c0       	rjmp	.+334    	; 0x170 <__bad_interrupt>
      22:	00 00       	nop
      24:	a5 c0       	rjmp	.+330    	; 0x170 <__bad_interrupt>
      26:	00 00       	nop
      28:	54 c4       	rjmp	.+2216   	; 0x8d2 <__vector_10>
      2a:	00 00       	nop
      2c:	1d c5       	rjmp	.+2618   	; 0xa68 <__vector_11>
      2e:	00 00       	nop
      30:	9f c0       	rjmp	.+318    	; 0x170 <__bad_interrupt>
      32:	00 00       	nop
      34:	9d c0       	rjmp	.+314    	; 0x170 <__bad_interrupt>
      36:	00 00       	nop
      38:	9b c0       	rjmp	.+310    	; 0x170 <__bad_interrupt>
      3a:	00 00       	nop
      3c:	99 c0       	rjmp	.+306    	; 0x170 <__bad_interrupt>
      3e:	00 00       	nop
      40:	97 c0       	rjmp	.+302    	; 0x170 <__bad_interrupt>
      42:	00 00       	nop
      44:	95 c0       	rjmp	.+298    	; 0x170 <__bad_interrupt>
      46:	00 00       	nop
      48:	93 c0       	rjmp	.+294    	; 0x170 <__bad_interrupt>
      4a:	00 00       	nop
      4c:	91 c0       	rjmp	.+290    	; 0x170 <__bad_interrupt>
      4e:	00 00       	nop
      50:	8f c0       	rjmp	.+286    	; 0x170 <__bad_interrupt>
      52:	00 00       	nop
      54:	8d c0       	rjmp	.+282    	; 0x170 <__bad_interrupt>
      56:	00 00       	nop
      58:	8b c0       	rjmp	.+278    	; 0x170 <__bad_interrupt>
      5a:	00 00       	nop
      5c:	89 c0       	rjmp	.+274    	; 0x170 <__bad_interrupt>
      5e:	00 00       	nop
      60:	87 c0       	rjmp	.+270    	; 0x170 <__bad_interrupt>
      62:	00 00       	nop
      64:	85 c0       	rjmp	.+266    	; 0x170 <__bad_interrupt>
      66:	00 00       	nop
      68:	83 c0       	rjmp	.+262    	; 0x170 <__bad_interrupt>
      6a:	00 00       	nop
      6c:	81 c0       	rjmp	.+258    	; 0x170 <__bad_interrupt>
      6e:	00 00       	nop
      70:	7f c0       	rjmp	.+254    	; 0x170 <__bad_interrupt>
      72:	00 00       	nop
      74:	7d c0       	rjmp	.+250    	; 0x170 <__bad_interrupt>
      76:	00 00       	nop
      78:	7b c0       	rjmp	.+246    	; 0x170 <__bad_interrupt>
      7a:	00 00       	nop
      7c:	79 c0       	rjmp	.+242    	; 0x170 <__bad_interrupt>
      7e:	00 00       	nop
      80:	77 c0       	rjmp	.+238    	; 0x170 <__bad_interrupt>
      82:	00 00       	nop
      84:	75 c0       	rjmp	.+234    	; 0x170 <__bad_interrupt>
      86:	00 00       	nop
      88:	73 c0       	rjmp	.+230    	; 0x170 <__bad_interrupt>
      8a:	00 00       	nop
      8c:	71 c0       	rjmp	.+226    	; 0x170 <__bad_interrupt>
      8e:	00 00       	nop
      90:	6f c0       	rjmp	.+222    	; 0x170 <__bad_interrupt>
      92:	00 00       	nop
      94:	6d c0       	rjmp	.+218    	; 0x170 <__bad_interrupt>
      96:	00 00       	nop
      98:	6b c0       	rjmp	.+214    	; 0x170 <__bad_interrupt>
      9a:	00 00       	nop
      9c:	69 c0       	rjmp	.+210    	; 0x170 <__bad_interrupt>
      9e:	00 00       	nop
      a0:	67 c0       	rjmp	.+206    	; 0x170 <__bad_interrupt>
      a2:	00 00       	nop
      a4:	65 c0       	rjmp	.+202    	; 0x170 <__bad_interrupt>
      a6:	00 00       	nop
      a8:	63 c0       	rjmp	.+198    	; 0x170 <__bad_interrupt>
      aa:	00 00       	nop

000000ac <ProductString>:
      ac:	1c 03 4c 00 55 00 46 00 41 00 20 00 43 00 44 00     ..L.U.F.A. .C.D.
      bc:	43 00 20 00 44 00 65 00 6d 00 6f 00 00 00           C. .D.e.m.o...

000000ca <ManufacturerString>:
      ca:	18 03 44 00 65 00 61 00 6e 00 20 00 43 00 61 00     ..D.e.a.n. .C.a.
      da:	6d 00 65 00 72 00 61 00 00 00                       m.e.r.a...

000000e4 <LanguageString>:
      e4:	04 03 09 04                                         ....

000000e8 <ConfigurationDescriptor>:
      e8:	09 02 3e 00 02 01 00 c0 32 09 04 00 00 01 02 02     ..>.....2.......
      f8:	01 00 05 24 00 10 01 04 24 02 06 05 24 06 00 01     ...$....$...$...
     108:	07 05 82 03 08 00 ff 09 04 01 00 02 0a 00 00 00     ................
     118:	07 05 04 02 10 00 05 07 05 83 02 10 00 05           ..............

00000126 <DeviceDescriptor>:
     126:	12 01 10 01 02 00 00 08 eb 03 44 20 01 00 01 02     ..........D ....
     136:	dc 01                                               ..

00000138 <__ctors_end>:
     138:	11 24       	eor	r1, r1
     13a:	1f be       	out	0x3f, r1	; 63
     13c:	cf ef       	ldi	r28, 0xFF	; 255
     13e:	d5 e0       	ldi	r29, 0x05	; 5
     140:	de bf       	out	0x3e, r29	; 62
     142:	cd bf       	out	0x3d, r28	; 61

00000144 <__do_copy_data>:
     144:	11 e0       	ldi	r17, 0x01	; 1
     146:	a0 e0       	ldi	r26, 0x00	; 0
     148:	b1 e0       	ldi	r27, 0x01	; 1
     14a:	ec e4       	ldi	r30, 0x4C	; 76
     14c:	fb e1       	ldi	r31, 0x1B	; 27
     14e:	02 c0       	rjmp	.+4      	; 0x154 <__do_copy_data+0x10>
     150:	05 90       	lpm	r0, Z+
     152:	0d 92       	st	X+, r0
     154:	a2 32       	cpi	r26, 0x22	; 34
     156:	b1 07       	cpc	r27, r17
     158:	d9 f7       	brne	.-10     	; 0x150 <__do_copy_data+0xc>

0000015a <__do_clear_bss>:
     15a:	21 e0       	ldi	r18, 0x01	; 1
     15c:	a2 e2       	ldi	r26, 0x22	; 34
     15e:	b1 e0       	ldi	r27, 0x01	; 1
     160:	01 c0       	rjmp	.+2      	; 0x164 <.do_clear_bss_start>

00000162 <.do_clear_bss_loop>:
     162:	1d 92       	st	X+, r1

00000164 <.do_clear_bss_start>:
     164:	ae 33       	cpi	r26, 0x3E	; 62
     166:	b2 07       	cpc	r27, r18
     168:	e1 f7       	brne	.-8      	; 0x162 <.do_clear_bss_loop>
     16a:	d3 d0       	rcall	.+422    	; 0x312 <main>
     16c:	0c 94 a4 0d 	jmp	0x1b48	; 0x1b48 <_exit>

00000170 <__bad_interrupt>:
     170:	47 cf       	rjmp	.-370    	; 0x0 <__vectors>

00000172 <parse>:
	else if (JoyStatus_LCL & JOY_RIGHT)
	  ReportString = "Joystick Right\r\n";
	else if (JoyStatus_LCL & JOY_PRESS)
	  ReportString = "Joystick Pressed\r\n";
	else
	  ActionSent = false;
     172:	af 92       	push	r10
     174:	bf 92       	push	r11
     176:	df 92       	push	r13
     178:	ef 92       	push	r14
     17a:	ff 92       	push	r15
     17c:	0f 93       	push	r16
     17e:	1f 93       	push	r17
     180:	cf 93       	push	r28
     182:	df 93       	push	r29
     184:	5a 01       	movw	r10, r20
     186:	da 01       	movw	r26, r20
     188:	1d 92       	st	X+, r1
     18a:	1c 92       	st	X, r1
     18c:	fb 01       	movw	r30, r22
     18e:	11 82       	std	Z+1, r1	; 0x01
     190:	10 82       	st	Z, r1
     192:	ec 01       	movw	r28, r24
     194:	20 e0       	ldi	r18, 0x00	; 0
     196:	30 e0       	ldi	r19, 0x00	; 0
     198:	a1 e0       	ldi	r26, 0x01	; 1
     19a:	b0 e0       	ldi	r27, 0x00	; 0
     19c:	e0 e0       	ldi	r30, 0x00	; 0
     19e:	f0 e0       	ldi	r31, 0x00	; 0
     1a0:	4a e0       	ldi	r20, 0x0A	; 10
     1a2:	d4 2e       	mov	r13, r20
     1a4:	08 81       	ld	r16, Y
     1a6:	19 81       	ldd	r17, Y+1	; 0x01
     1a8:	0a 30       	cpi	r16, 0x0A	; 10
     1aa:	11 05       	cpc	r17, r1
     1ac:	89 f1       	breq	.+98     	; 0x210 <parse+0x9e>
     1ae:	0d 32       	cpi	r16, 0x2D	; 45
     1b0:	11 05       	cpc	r17, r1
     1b2:	91 f0       	breq	.+36     	; 0x1d8 <parse+0x66>
     1b4:	00 32       	cpi	r16, 0x20	; 32
     1b6:	11 05       	cpc	r17, r1
     1b8:	89 f4       	brne	.+34     	; 0x1dc <parse+0x6a>
     1ba:	a2 9f       	mul	r26, r18
     1bc:	80 01       	movw	r16, r0
     1be:	a3 9f       	mul	r26, r19
     1c0:	10 0d       	add	r17, r0
     1c2:	b2 9f       	mul	r27, r18
     1c4:	10 0d       	add	r17, r0
     1c6:	11 24       	eor	r1, r1
     1c8:	db 01       	movw	r26, r22
     1ca:	0d 93       	st	X+, r16
     1cc:	1c 93       	st	X, r17
     1ce:	20 e0       	ldi	r18, 0x00	; 0
     1d0:	30 e0       	ldi	r19, 0x00	; 0
     1d2:	a1 e0       	ldi	r26, 0x01	; 1
     1d4:	b0 e0       	ldi	r27, 0x00	; 0
     1d6:	02 c0       	rjmp	.+4      	; 0x1dc <parse+0x6a>
     1d8:	af ef       	ldi	r26, 0xFF	; 255
     1da:	bf ef       	ldi	r27, 0xFF	; 255
     1dc:	08 81       	ld	r16, Y
     1de:	19 81       	ldd	r17, Y+1	; 0x01
     1e0:	78 01       	movw	r14, r16
     1e2:	40 e3       	ldi	r20, 0x30	; 48
     1e4:	e4 1a       	sub	r14, r20
     1e6:	f1 08       	sbc	r15, r1
     1e8:	5a e0       	ldi	r21, 0x0A	; 10
     1ea:	e5 16       	cp	r14, r21
     1ec:	f1 04       	cpc	r15, r1
     1ee:	50 f4       	brcc	.+20     	; 0x204 <parse+0x92>
     1f0:	a9 01       	movw	r20, r18
     1f2:	d4 9e       	mul	r13, r20
     1f4:	90 01       	movw	r18, r0
     1f6:	d5 9e       	mul	r13, r21
     1f8:	30 0d       	add	r19, r0
     1fa:	11 24       	eor	r1, r1
     1fc:	20 0f       	add	r18, r16
     1fe:	31 1f       	adc	r19, r17
     200:	20 53       	subi	r18, 0x30	; 48
     202:	31 09       	sbc	r19, r1
     204:	19 92       	st	Y+, r1
     206:	19 92       	st	Y+, r1
     208:	31 96       	adiw	r30, 0x01	; 1
     20a:	e4 31       	cpi	r30, 0x14	; 20
     20c:	f1 05       	cpc	r31, r1
     20e:	51 f6       	brne	.-108    	; 0x1a4 <parse+0x32>
     210:	a2 9f       	mul	r26, r18
     212:	b0 01       	movw	r22, r0
     214:	a3 9f       	mul	r26, r19
     216:	70 0d       	add	r23, r0
     218:	b2 9f       	mul	r27, r18
     21a:	70 0d       	add	r23, r0
     21c:	11 24       	eor	r1, r1
     21e:	d5 01       	movw	r26, r10
     220:	6d 93       	st	X+, r22
     222:	7c 93       	st	X, r23
     224:	ee 0f       	add	r30, r30
     226:	ff 1f       	adc	r31, r31
     228:	e8 0f       	add	r30, r24
     22a:	f9 1f       	adc	r31, r25
     22c:	11 82       	std	Z+1, r1	; 0x01
     22e:	10 82       	st	Z, r1
     230:	df 91       	pop	r29
     232:	cf 91       	pop	r28
     234:	1f 91       	pop	r17
     236:	0f 91       	pop	r16
     238:	ff 90       	pop	r15
     23a:	ef 90       	pop	r14
     23c:	df 90       	pop	r13
     23e:	bf 90       	pop	r11
     240:	af 90       	pop	r10
     242:	08 95       	ret

00000244 <read_force>:
     244:	cf 92       	push	r12
     246:	df 92       	push	r13
     248:	ef 92       	push	r14
     24a:	ff 92       	push	r15
     24c:	cf 93       	push	r28
     24e:	df 93       	push	r29
     250:	c4 e6       	ldi	r28, 0x64	; 100
     252:	d0 e0       	ldi	r29, 0x00	; 0
     254:	c1 2c       	mov	r12, r1
     256:	d1 2c       	mov	r13, r1
     258:	76 01       	movw	r14, r12
     25a:	80 91 7a 00 	lds	r24, 0x007A
     25e:	80 64       	ori	r24, 0x40	; 64
     260:	80 93 7a 00 	sts	0x007A, r24
     264:	80 91 7a 00 	lds	r24, 0x007A
     268:	86 fd       	sbrc	r24, 6
     26a:	fc cf       	rjmp	.-8      	; 0x264 <read_force+0x20>
     26c:	60 91 78 00 	lds	r22, 0x0078
     270:	70 91 79 00 	lds	r23, 0x0079
     274:	80 e0       	ldi	r24, 0x00	; 0
     276:	90 e0       	ldi	r25, 0x00	; 0
     278:	0e 94 9c 09 	call	0x1338	; 0x1338 <__floatunsisf>
     27c:	20 e0       	ldi	r18, 0x00	; 0
     27e:	30 e0       	ldi	r19, 0x00	; 0
     280:	48 ec       	ldi	r20, 0xC8	; 200
     282:	52 e4       	ldi	r21, 0x42	; 66
     284:	c0 d7       	rcall	.+3968   	; 0x1206 <__divsf3>
     286:	9b 01       	movw	r18, r22
     288:	ac 01       	movw	r20, r24
     28a:	c7 01       	movw	r24, r14
     28c:	b6 01       	movw	r22, r12
     28e:	40 d7       	rcall	.+3712   	; 0x1110 <__addsf3>
     290:	6b 01       	movw	r12, r22
     292:	7c 01       	movw	r14, r24
     294:	21 97       	sbiw	r28, 0x01	; 1
     296:	20 97       	sbiw	r28, 0x00	; 0
     298:	01 f7       	brne	.-64     	; 0x25a <read_force+0x16>
     29a:	9e d7       	rcall	.+3900   	; 0x11d8 <ceil>
     29c:	0e 94 6b 09 	call	0x12d6	; 0x12d6 <__fixsfsi>
     2a0:	cb 01       	movw	r24, r22
     2a2:	df 91       	pop	r29
     2a4:	cf 91       	pop	r28
     2a6:	ff 90       	pop	r15
     2a8:	ef 90       	pop	r14
     2aa:	df 90       	pop	r13
     2ac:	cf 90       	pop	r12
     2ae:	08 95       	ret

000002b0 <servo_move>:
     2b0:	20 e0       	ldi	r18, 0x00	; 0
     2b2:	30 e0       	ldi	r19, 0x00	; 0
     2b4:	44 e3       	ldi	r20, 0x34	; 52
     2b6:	53 e4       	ldi	r21, 0x43	; 67
     2b8:	a6 d7       	rcall	.+3916   	; 0x1206 <__divsf3>
     2ba:	20 e0       	ldi	r18, 0x00	; 0
     2bc:	30 e0       	ldi	r19, 0x00	; 0
     2be:	4a ef       	ldi	r20, 0xFA	; 250
     2c0:	54 e4       	ldi	r21, 0x44	; 68
     2c2:	0e 94 92 0a 	call	0x1524	; 0x1524 <__mulsf3>
     2c6:	20 e0       	ldi	r18, 0x00	; 0
     2c8:	30 e0       	ldi	r19, 0x00	; 0
     2ca:	4a ef       	ldi	r20, 0xFA	; 250
     2cc:	53 e4       	ldi	r21, 0x43	; 67
     2ce:	20 d7       	rcall	.+3648   	; 0x1110 <__addsf3>
     2d0:	83 d7       	rcall	.+3846   	; 0x11d8 <ceil>
     2d2:	0e 94 6b 09 	call	0x12d6	; 0x12d6 <__fixsfsi>
     2d6:	70 93 89 00 	sts	0x0089, r23
     2da:	60 93 88 00 	sts	0x0088, r22
     2de:	70 93 8b 00 	sts	0x008B, r23
     2e2:	60 93 8a 00 	sts	0x008A, r22
     2e6:	08 95       	ret

000002e8 <SetupHardware>:
     2e8:	84 b7       	in	r24, 0x34	; 52
     2ea:	87 7f       	andi	r24, 0xF7	; 247
     2ec:	84 bf       	out	0x34, r24	; 52
     2ee:	88 e1       	ldi	r24, 0x18	; 24
     2f0:	0f b6       	in	r0, 0x3f	; 63
     2f2:	f8 94       	cli
     2f4:	80 93 60 00 	sts	0x0060, r24
     2f8:	10 92 60 00 	sts	0x0060, r1
     2fc:	0f be       	out	0x3f, r0	; 63
     2fe:	90 e0       	ldi	r25, 0x00	; 0
     300:	80 e8       	ldi	r24, 0x80	; 128
     302:	0f b6       	in	r0, 0x3f	; 63
     304:	f8 94       	cli
     306:	80 93 61 00 	sts	0x0061, r24
     30a:	90 93 61 00 	sts	0x0061, r25
     30e:	0f be       	out	0x3f, r0	; 63
     310:	c3 c2       	rjmp	.+1414   	; 0x898 <USB_Init>

00000312 <main>:
     312:	cf 93       	push	r28
     314:	df 93       	push	r29
     316:	cd b7       	in	r28, 0x3d	; 61
     318:	de b7       	in	r29, 0x3e	; 62
     31a:	ac 97       	sbiw	r28, 0x2c	; 44
     31c:	0f b6       	in	r0, 0x3f	; 63
     31e:	f8 94       	cli
     320:	de bf       	out	0x3e, r29	; 62
     322:	0f be       	out	0x3f, r0	; 63
     324:	cd bf       	out	0x3d, r28	; 61
     326:	84 e1       	ldi	r24, 0x14	; 20
     328:	80 93 7c 00 	sts	0x007C, r24
     32c:	80 91 7b 00 	lds	r24, 0x007B
     330:	80 62       	ori	r24, 0x20	; 32
     332:	80 93 7b 00 	sts	0x007B, r24
     336:	85 e8       	ldi	r24, 0x85	; 133
     338:	80 93 7a 00 	sts	0x007A, r24
     33c:	2d 98       	cbi	0x05, 5	; 5
     33e:	25 9a       	sbi	0x04, 5	; 4
     340:	2e 98       	cbi	0x05, 6	; 5
     342:	26 9a       	sbi	0x04, 6	; 4
     344:	80 ea       	ldi	r24, 0xA0	; 160
     346:	80 93 80 00 	sts	0x0080, r24
     34a:	82 e1       	ldi	r24, 0x12	; 18
     34c:	80 93 81 00 	sts	0x0081, r24
     350:	80 e2       	ldi	r24, 0x20	; 32
     352:	9e e4       	ldi	r25, 0x4E	; 78
     354:	90 93 87 00 	sts	0x0087, r25
     358:	80 93 86 00 	sts	0x0086, r24
     35c:	1c a6       	std	Y+44, r1	; 0x2c
     35e:	1b a6       	std	Y+43, r1	; 0x2b
     360:	1a a6       	std	Y+42, r1	; 0x2a
     362:	19 a6       	std	Y+41, r1	; 0x29
     364:	fe 01       	movw	r30, r28
     366:	31 96       	adiw	r30, 0x01	; 1
     368:	88 e2       	ldi	r24, 0x28	; 40
     36a:	df 01       	movw	r26, r30
     36c:	1d 92       	st	X+, r1
     36e:	8a 95       	dec	r24
     370:	e9 f7       	brne	.-6      	; 0x36c <main+0x5a>
     372:	ba df       	rcall	.-140    	; 0x2e8 <SetupHardware>
     374:	63 e2       	ldi	r22, 0x23	; 35
     376:	71 e0       	ldi	r23, 0x01	; 1
     378:	80 e0       	ldi	r24, 0x00	; 0
     37a:	91 e0       	ldi	r25, 0x01	; 1
     37c:	04 d6       	rcall	.+3080   	; 0xf86 <CDC_Device_CreateStream>
     37e:	78 94       	sei
     380:	c1 2c       	mov	r12, r1
     382:	d1 2c       	mov	r13, r1
     384:	72 e0       	ldi	r23, 0x02	; 2
     386:	e7 2e       	mov	r14, r23
     388:	73 e4       	ldi	r23, 0x43	; 67
     38a:	f7 2e       	mov	r15, r23
     38c:	00 e0       	ldi	r16, 0x00	; 0
     38e:	10 e0       	ldi	r17, 0x00	; 0
     390:	eb e1       	ldi	r30, 0x1B	; 27
     392:	2e 2e       	mov	r2, r30
     394:	e1 e0       	ldi	r30, 0x01	; 1
     396:	3e 2e       	mov	r3, r30
     398:	f3 e2       	ldi	r31, 0x23	; 35
     39a:	8f 2e       	mov	r8, r31
     39c:	f1 e0       	ldi	r31, 0x01	; 1
     39e:	9f 2e       	mov	r9, r31
     3a0:	80 e0       	ldi	r24, 0x00	; 0
     3a2:	91 e0       	ldi	r25, 0x01	; 1
     3a4:	b2 d5       	rcall	.+2916   	; 0xf0a <CDC_Device_ReceiveByte>
     3a6:	5c 01       	movw	r10, r24
     3a8:	4d df       	rcall	.-358    	; 0x244 <read_force>
     3aa:	81 55       	subi	r24, 0x51	; 81
     3ac:	91 40       	sbci	r25, 0x01	; 1
     3ae:	bc 01       	movw	r22, r24
     3b0:	88 27       	eor	r24, r24
     3b2:	77 fd       	sbrc	r23, 7
     3b4:	80 95       	com	r24
     3b6:	98 2f       	mov	r25, r24
     3b8:	c1 d7       	rcall	.+3970   	; 0x133c <__floatsisf>
     3ba:	2b 01       	movw	r4, r22
     3bc:	3c 01       	movw	r6, r24
     3be:	9f 77       	andi	r25, 0x7F	; 127
     3c0:	20 e0       	ldi	r18, 0x00	; 0
     3c2:	30 e0       	ldi	r19, 0x00	; 0
     3c4:	40 ea       	ldi	r20, 0xA0	; 160
     3c6:	51 e4       	ldi	r21, 0x41	; 65
     3c8:	0e 94 8e 0a 	call	0x151c	; 0x151c <__gesf2>
     3cc:	18 16       	cp	r1, r24
     3ce:	4c f5       	brge	.+82     	; 0x422 <main+0x110>
     3d0:	2a e0       	ldi	r18, 0x0A	; 10
     3d2:	37 ed       	ldi	r19, 0xD7	; 215
     3d4:	43 e2       	ldi	r20, 0x23	; 35
     3d6:	5c e3       	ldi	r21, 0x3C	; 60
     3d8:	c3 01       	movw	r24, r6
     3da:	b2 01       	movw	r22, r4
     3dc:	0e 94 92 0a 	call	0x1524	; 0x1524 <__mulsf3>
     3e0:	9b 01       	movw	r18, r22
     3e2:	ac 01       	movw	r20, r24
     3e4:	c7 01       	movw	r24, r14
     3e6:	b6 01       	movw	r22, r12
     3e8:	93 d6       	rcall	.+3366   	; 0x1110 <__addsf3>
     3ea:	6b 01       	movw	r12, r22
     3ec:	7c 01       	movw	r14, r24
     3ee:	20 e0       	ldi	r18, 0x00	; 0
     3f0:	30 e0       	ldi	r19, 0x00	; 0
     3f2:	44 e3       	ldi	r20, 0x34	; 52
     3f4:	53 e4       	ldi	r21, 0x43	; 67
     3f6:	03 d7       	rcall	.+3590   	; 0x11fe <__cmpsf2>
     3f8:	87 ff       	sbrs	r24, 7
     3fa:	0d c0       	rjmp	.+26     	; 0x416 <main+0x104>
     3fc:	20 e0       	ldi	r18, 0x00	; 0
     3fe:	30 e0       	ldi	r19, 0x00	; 0
     400:	a9 01       	movw	r20, r18
     402:	c7 01       	movw	r24, r14
     404:	b6 01       	movw	r22, r12
     406:	0e 94 8e 0a 	call	0x151c	; 0x151c <__gesf2>
     40a:	18 16       	cp	r1, r24
     40c:	54 f0       	brlt	.+20     	; 0x422 <main+0x110>
     40e:	c1 2c       	mov	r12, r1
     410:	d1 2c       	mov	r13, r1
     412:	76 01       	movw	r14, r12
     414:	06 c0       	rjmp	.+12     	; 0x422 <main+0x110>
     416:	c1 2c       	mov	r12, r1
     418:	d1 2c       	mov	r13, r1
     41a:	64 e3       	ldi	r22, 0x34	; 52
     41c:	e6 2e       	mov	r14, r22
     41e:	63 e4       	ldi	r22, 0x43	; 67
     420:	f6 2e       	mov	r15, r22
     422:	c7 01       	movw	r24, r14
     424:	b6 01       	movw	r22, r12
     426:	44 df       	rcall	.-376    	; 0x2b0 <servo_move>
     428:	b7 fc       	sbrc	r11, 7
     42a:	30 c0       	rjmp	.+96     	; 0x48c <main+0x17a>
     42c:	c8 01       	movw	r24, r16
     42e:	01 96       	adiw	r24, 0x01	; 1
     430:	f8 01       	movw	r30, r16
     432:	ee 0f       	add	r30, r30
     434:	ff 1f       	adc	r31, r31
     436:	21 e0       	ldi	r18, 0x01	; 1
     438:	30 e0       	ldi	r19, 0x00	; 0
     43a:	2c 0f       	add	r18, r28
     43c:	3d 1f       	adc	r19, r29
     43e:	e2 0f       	add	r30, r18
     440:	f3 1f       	adc	r31, r19
     442:	b1 82       	std	Z+1, r11	; 0x01
     444:	a0 82       	st	Z, r10
     446:	3a e0       	ldi	r19, 0x0A	; 10
     448:	a3 16       	cp	r10, r19
     44a:	b1 04       	cpc	r11, r1
     44c:	f1 f4       	brne	.+60     	; 0x48a <main+0x178>
     44e:	ae 01       	movw	r20, r28
     450:	47 5d       	subi	r20, 0xD7	; 215
     452:	5f 4f       	sbci	r21, 0xFF	; 255
     454:	be 01       	movw	r22, r28
     456:	65 5d       	subi	r22, 0xD5	; 213
     458:	7f 4f       	sbci	r23, 0xFF	; 255
     45a:	ce 01       	movw	r24, r28
     45c:	01 96       	adiw	r24, 0x01	; 1
     45e:	89 de       	rcall	.-750    	; 0x172 <parse>
     460:	c7 01       	movw	r24, r14
     462:	b6 01       	movw	r22, r12
     464:	38 d7       	rcall	.+3696   	; 0x12d6 <__fixsfsi>
     466:	7f 93       	push	r23
     468:	6f 93       	push	r22
     46a:	7f 93       	push	r23
     46c:	6f 93       	push	r22
     46e:	3f 92       	push	r3
     470:	2f 92       	push	r2
     472:	9f 92       	push	r9
     474:	8f 92       	push	r8
     476:	0e 94 f5 0a 	call	0x15ea	; 0x15ea <fprintf>
     47a:	0f b6       	in	r0, 0x3f	; 63
     47c:	f8 94       	cli
     47e:	de bf       	out	0x3e, r29	; 62
     480:	0f be       	out	0x3f, r0	; 63
     482:	cd bf       	out	0x3d, r28	; 61
     484:	00 e0       	ldi	r16, 0x00	; 0
     486:	10 e0       	ldi	r17, 0x00	; 0
     488:	01 c0       	rjmp	.+2      	; 0x48c <main+0x17a>
     48a:	8c 01       	movw	r16, r24
     48c:	80 e0       	ldi	r24, 0x00	; 0
     48e:	91 e0       	ldi	r25, 0x01	; 1
     490:	26 d5       	rcall	.+2636   	; 0xede <CDC_Device_USBTask>
     492:	7f d4       	rcall	.+2302   	; 0xd92 <USB_USBTask>
     494:	85 cf       	rjmp	.-246    	; 0x3a0 <main+0x8e>

00000496 <EVENT_USB_Device_Connect>:
	}
}

/** Event handler for the library USB Connection event. */
void EVENT_USB_Device_Connect(void)
{
     496:	08 95       	ret

00000498 <EVENT_USB_Device_Disconnect>:
	LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
}

/** Event handler for the library USB Disconnection event. */
void EVENT_USB_Device_Disconnect(void)
{
     498:	08 95       	ret

0000049a <EVENT_USB_Device_ConfigurationChanged>:
/** Event handler for the library USB Configuration Changed event. */
void EVENT_USB_Device_ConfigurationChanged(void)
{
	bool ConfigSuccess = true;

	ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
     49a:	80 e0       	ldi	r24, 0x00	; 0
     49c:	91 e0       	ldi	r25, 0x01	; 1
     49e:	95 c4       	rjmp	.+2346   	; 0xdca <CDC_Device_ConfigureEndpoints>

000004a0 <EVENT_USB_Device_ControlRequest>:
}

/** Event handler for the library USB Control Request reception event. */
void EVENT_USB_Device_ControlRequest(void)
{
	CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
     4a0:	80 e0       	ldi	r24, 0x00	; 0
     4a2:	91 e0       	ldi	r25, 0x01	; 1
     4a4:	84 c5       	rjmp	.+2824   	; 0xfae <CDC_Device_ProcessControlRequest>

000004a6 <EVENT_CDC_Device_ControLineStateChanged>:
 *  control lines sent from the host..
 *
 *  \param[in] CDCInterfaceInfo  Pointer to the CDC class interface configuration structure being referenced
 */
void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t *const CDCInterfaceInfo)
{
     4a6:	08 95       	ret

000004a8 <CALLBACK_USB_GetDescriptor>:
 */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                                    const uint16_t wIndex,
                                    const void** const DescriptorAddress)
{
	const uint8_t  DescriptorType   = (wValue >> 8);
     4a8:	29 2f       	mov	r18, r25
     4aa:	33 27       	eor	r19, r19
	const uint8_t  DescriptorNumber = (wValue & 0xFF);

	const void* Address = NULL;
	uint16_t    Size    = NO_DESCRIPTOR;

	switch (DescriptorType)
     4ac:	22 30       	cpi	r18, 0x02	; 2
     4ae:	31 05       	cpc	r19, r1
     4b0:	59 f0       	breq	.+22     	; 0x4c8 <CALLBACK_USB_GetDescriptor+0x20>
     4b2:	23 30       	cpi	r18, 0x03	; 3
     4b4:	31 05       	cpc	r19, r1
     4b6:	69 f0       	breq	.+26     	; 0x4d2 <CALLBACK_USB_GetDescriptor+0x2a>
     4b8:	21 30       	cpi	r18, 0x01	; 1
     4ba:	31 05       	cpc	r19, r1
     4bc:	f9 f4       	brne	.+62     	; 0x4fc <CALLBACK_USB_GetDescriptor+0x54>
	{
		case DTYPE_Device:
			Address = &DeviceDescriptor;
			Size    = sizeof(USB_Descriptor_Device_t);
     4be:	82 e1       	ldi	r24, 0x12	; 18
     4c0:	90 e0       	ldi	r25, 0x00	; 0
	uint16_t    Size    = NO_DESCRIPTOR;

	switch (DescriptorType)
	{
		case DTYPE_Device:
			Address = &DeviceDescriptor;
     4c2:	26 e2       	ldi	r18, 0x26	; 38
     4c4:	31 e0       	ldi	r19, 0x01	; 1
     4c6:	1e c0       	rjmp	.+60     	; 0x504 <CALLBACK_USB_GetDescriptor+0x5c>
			Size    = sizeof(USB_Descriptor_Device_t);
			break;
		case DTYPE_Configuration:
			Address = &ConfigurationDescriptor;
			Size    = sizeof(USB_Descriptor_Configuration_t);
     4c8:	8e e3       	ldi	r24, 0x3E	; 62
     4ca:	90 e0       	ldi	r25, 0x00	; 0
		case DTYPE_Device:
			Address = &DeviceDescriptor;
			Size    = sizeof(USB_Descriptor_Device_t);
			break;
		case DTYPE_Configuration:
			Address = &ConfigurationDescriptor;
     4cc:	28 ee       	ldi	r18, 0xE8	; 232
     4ce:	30 e0       	ldi	r19, 0x00	; 0
			Size    = sizeof(USB_Descriptor_Configuration_t);
			break;
     4d0:	19 c0       	rjmp	.+50     	; 0x504 <CALLBACK_USB_GetDescriptor+0x5c>
     4d2:	99 27       	eor	r25, r25
		case DTYPE_String:
			switch (DescriptorNumber)
     4d4:	81 30       	cpi	r24, 0x01	; 1
     4d6:	91 05       	cpc	r25, r1
     4d8:	41 f0       	breq	.+16     	; 0x4ea <CALLBACK_USB_GetDescriptor+0x42>
     4da:	82 30       	cpi	r24, 0x02	; 2
     4dc:	91 05       	cpc	r25, r1
     4de:	41 f0       	breq	.+16     	; 0x4f0 <CALLBACK_USB_GetDescriptor+0x48>
     4e0:	89 2b       	or	r24, r25
     4e2:	61 f4       	brne	.+24     	; 0x4fc <CALLBACK_USB_GetDescriptor+0x54>
			{
				case STRING_ID_Language:
					Address = &LanguageString;
					Size    = pgm_read_byte(&LanguageString.Header.Size);
     4e4:	e4 ee       	ldi	r30, 0xE4	; 228
     4e6:	f0 e0       	ldi	r31, 0x00	; 0
     4e8:	05 c0       	rjmp	.+10     	; 0x4f4 <CALLBACK_USB_GetDescriptor+0x4c>
					break;
				case STRING_ID_Manufacturer:
					Address = &ManufacturerString;
					Size    = pgm_read_byte(&ManufacturerString.Header.Size);
     4ea:	ea ec       	ldi	r30, 0xCA	; 202
     4ec:	f0 e0       	ldi	r31, 0x00	; 0
     4ee:	02 c0       	rjmp	.+4      	; 0x4f4 <CALLBACK_USB_GetDescriptor+0x4c>
					break;
				case STRING_ID_Product:
					Address = &ProductString;
					Size    = pgm_read_byte(&ProductString.Header.Size);
     4f0:	ec ea       	ldi	r30, 0xAC	; 172
     4f2:	f0 e0       	ldi	r31, 0x00	; 0
     4f4:	84 91       	lpm	r24, Z
     4f6:	90 e0       	ldi	r25, 0x00	; 0
				case STRING_ID_Manufacturer:
					Address = &ManufacturerString;
					Size    = pgm_read_byte(&ManufacturerString.Header.Size);
					break;
				case STRING_ID_Product:
					Address = &ProductString;
     4f8:	9f 01       	movw	r18, r30
					Size    = pgm_read_byte(&ProductString.Header.Size);
					break;
     4fa:	04 c0       	rjmp	.+8      	; 0x504 <CALLBACK_USB_GetDescriptor+0x5c>
{
	const uint8_t  DescriptorType   = (wValue >> 8);
	const uint8_t  DescriptorNumber = (wValue & 0xFF);

	const void* Address = NULL;
	uint16_t    Size    = NO_DESCRIPTOR;
     4fc:	80 e0       	ldi	r24, 0x00	; 0
     4fe:	90 e0       	ldi	r25, 0x00	; 0
                                    const void** const DescriptorAddress)
{
	const uint8_t  DescriptorType   = (wValue >> 8);
	const uint8_t  DescriptorNumber = (wValue & 0xFF);

	const void* Address = NULL;
     500:	20 e0       	ldi	r18, 0x00	; 0
     502:	30 e0       	ldi	r19, 0x00	; 0
			}

			break;
	}

	*DescriptorAddress = Address;
     504:	fa 01       	movw	r30, r20
     506:	31 83       	std	Z+1, r19	; 0x01
     508:	20 83       	st	Z, r18
	return Size;
}
     50a:	08 95       	ret

0000050c <Endpoint_Write_Control_Stream_LE>:
		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
		  return ENDPOINT_RWCSTREAM_BusSuspended;
	}

	return ENDPOINT_RWCSTREAM_NoError;
}
     50c:	20 91 3c 01 	lds	r18, 0x013C
     510:	30 91 3d 01 	lds	r19, 0x013D
     514:	26 17       	cp	r18, r22
     516:	37 07       	cpc	r19, r23
     518:	48 f0       	brcs	.+18     	; 0x52c <Endpoint_Write_Control_Stream_LE+0x20>
     51a:	61 15       	cp	r22, r1
     51c:	71 05       	cpc	r23, r1
     51e:	39 f4       	brne	.+14     	; 0x52e <Endpoint_Write_Control_Stream_LE+0x22>
     520:	20 91 e8 00 	lds	r18, 0x00E8
     524:	2e 77       	andi	r18, 0x7E	; 126
     526:	20 93 e8 00 	sts	0x00E8, r18
     52a:	01 c0       	rjmp	.+2      	; 0x52e <Endpoint_Write_Control_Stream_LE+0x22>
     52c:	b9 01       	movw	r22, r18
     52e:	fc 01       	movw	r30, r24
     530:	20 e0       	ldi	r18, 0x00	; 0
     532:	61 15       	cp	r22, r1
     534:	71 05       	cpc	r23, r1
     536:	b9 f1       	breq	.+110    	; 0x5a6 <Endpoint_Write_Control_Stream_LE+0x9a>
     538:	80 91 35 01 	lds	r24, 0x0135
     53c:	88 23       	and	r24, r24
     53e:	09 f4       	brne	.+2      	; 0x542 <Endpoint_Write_Control_Stream_LE+0x36>
     540:	40 c0       	rjmp	.+128    	; 0x5c2 <Endpoint_Write_Control_Stream_LE+0xb6>
     542:	85 30       	cpi	r24, 0x05	; 5
     544:	09 f4       	brne	.+2      	; 0x548 <Endpoint_Write_Control_Stream_LE+0x3c>
     546:	3f c0       	rjmp	.+126    	; 0x5c6 <Endpoint_Write_Control_Stream_LE+0xba>
     548:	80 91 e8 00 	lds	r24, 0x00E8
     54c:	83 fd       	sbrc	r24, 3
     54e:	3d c0       	rjmp	.+122    	; 0x5ca <Endpoint_Write_Control_Stream_LE+0xbe>
     550:	80 91 e8 00 	lds	r24, 0x00E8
     554:	82 ff       	sbrs	r24, 2
     556:	06 c0       	rjmp	.+12     	; 0x564 <Endpoint_Write_Control_Stream_LE+0x58>
     558:	80 91 e8 00 	lds	r24, 0x00E8
     55c:	82 ff       	sbrs	r24, 2
     55e:	26 c0       	rjmp	.+76     	; 0x5ac <Endpoint_Write_Control_Stream_LE+0xa0>
     560:	80 e0       	ldi	r24, 0x00	; 0
     562:	08 95       	ret
     564:	80 91 e8 00 	lds	r24, 0x00E8
     568:	80 ff       	sbrs	r24, 0
     56a:	e3 cf       	rjmp	.-58     	; 0x532 <Endpoint_Write_Control_Stream_LE+0x26>
     56c:	20 91 f3 00 	lds	r18, 0x00F3
     570:	80 91 f2 00 	lds	r24, 0x00F2
     574:	90 e0       	ldi	r25, 0x00	; 0
     576:	92 2b       	or	r25, r18
     578:	61 15       	cp	r22, r1
     57a:	71 05       	cpc	r23, r1
     57c:	51 f0       	breq	.+20     	; 0x592 <Endpoint_Write_Control_Stream_LE+0x86>
     57e:	88 30       	cpi	r24, 0x08	; 8
     580:	91 05       	cpc	r25, r1
     582:	38 f4       	brcc	.+14     	; 0x592 <Endpoint_Write_Control_Stream_LE+0x86>
     584:	21 91       	ld	r18, Z+
     586:	20 93 f1 00 	sts	0x00F1, r18
     58a:	61 50       	subi	r22, 0x01	; 1
     58c:	71 09       	sbc	r23, r1
     58e:	01 96       	adiw	r24, 0x01	; 1
     590:	f3 cf       	rjmp	.-26     	; 0x578 <Endpoint_Write_Control_Stream_LE+0x6c>
     592:	21 e0       	ldi	r18, 0x01	; 1
     594:	08 97       	sbiw	r24, 0x08	; 8
     596:	09 f0       	breq	.+2      	; 0x59a <Endpoint_Write_Control_Stream_LE+0x8e>
     598:	20 e0       	ldi	r18, 0x00	; 0
     59a:	80 91 e8 00 	lds	r24, 0x00E8
     59e:	8e 77       	andi	r24, 0x7E	; 126
     5a0:	80 93 e8 00 	sts	0x00E8, r24
     5a4:	c6 cf       	rjmp	.-116    	; 0x532 <Endpoint_Write_Control_Stream_LE+0x26>
     5a6:	21 11       	cpse	r18, r1
     5a8:	c7 cf       	rjmp	.-114    	; 0x538 <Endpoint_Write_Control_Stream_LE+0x2c>
     5aa:	d6 cf       	rjmp	.-84     	; 0x558 <Endpoint_Write_Control_Stream_LE+0x4c>
     5ac:	80 91 35 01 	lds	r24, 0x0135
     5b0:	88 23       	and	r24, r24
     5b2:	39 f0       	breq	.+14     	; 0x5c2 <Endpoint_Write_Control_Stream_LE+0xb6>
     5b4:	85 30       	cpi	r24, 0x05	; 5
     5b6:	39 f0       	breq	.+14     	; 0x5c6 <Endpoint_Write_Control_Stream_LE+0xba>
     5b8:	80 91 e8 00 	lds	r24, 0x00E8
     5bc:	83 ff       	sbrs	r24, 3
     5be:	cc cf       	rjmp	.-104    	; 0x558 <Endpoint_Write_Control_Stream_LE+0x4c>
     5c0:	04 c0       	rjmp	.+8      	; 0x5ca <Endpoint_Write_Control_Stream_LE+0xbe>
     5c2:	82 e0       	ldi	r24, 0x02	; 2
     5c4:	08 95       	ret
     5c6:	83 e0       	ldi	r24, 0x03	; 3
     5c8:	08 95       	ret
     5ca:	81 e0       	ldi	r24, 0x01	; 1
     5cc:	08 95       	ret

000005ce <Endpoint_Write_Control_PStream_LE>:
                            uint16_t Length)
{
	uint8_t* DataStream     = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
	bool     LastPacketFull = false;

	if (Length > USB_ControlRequest.wLength)
     5ce:	20 91 3c 01 	lds	r18, 0x013C
     5d2:	30 91 3d 01 	lds	r19, 0x013D
     5d6:	26 17       	cp	r18, r22
     5d8:	37 07       	cpc	r19, r23
     5da:	48 f0       	brcs	.+18     	; 0x5ee <Endpoint_Write_Control_PStream_LE+0x20>
	  Length = USB_ControlRequest.wLength;
	else if (!(Length))
     5dc:	61 15       	cp	r22, r1
     5de:	71 05       	cpc	r23, r1
     5e0:	39 f4       	brne	.+14     	; 0x5f0 <Endpoint_Write_Control_PStream_LE+0x22>
			 */
			static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearIN(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
     5e2:	20 91 e8 00 	lds	r18, 0x00E8
     5e6:	2e 77       	andi	r18, 0x7E	; 126
     5e8:	20 93 e8 00 	sts	0x00E8, r18
     5ec:	01 c0       	rjmp	.+2      	; 0x5f0 <Endpoint_Write_Control_PStream_LE+0x22>
     5ee:	b9 01       	movw	r22, r18
     5f0:	fc 01       	movw	r30, r24
     5f2:	20 e0       	ldi	r18, 0x00	; 0
	  Endpoint_ClearIN();

	while (Length || LastPacketFull)
     5f4:	61 15       	cp	r22, r1
     5f6:	71 05       	cpc	r23, r1
     5f8:	c1 f1       	breq	.+112    	; 0x66a <__stack+0x6b>
	{
		uint8_t USB_DeviceState_LCL = USB_DeviceState;
     5fa:	80 91 35 01 	lds	r24, 0x0135

		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
     5fe:	88 23       	and	r24, r24
     600:	09 f4       	brne	.+2      	; 0x604 <__stack+0x5>
     602:	41 c0       	rjmp	.+130    	; 0x686 <__stack+0x87>
		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
     604:	85 30       	cpi	r24, 0x05	; 5
     606:	09 f4       	brne	.+2      	; 0x60a <__stack+0xb>
     608:	40 c0       	rjmp	.+128    	; 0x68a <__stack+0x8b>
			 *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsSETUPReceived(void)
			{
				return ((UEINTX & (1 << RXSTPI)) ? true : false);
     60a:	80 91 e8 00 	lds	r24, 0x00E8
		  return ENDPOINT_RWCSTREAM_BusSuspended;
		else if (Endpoint_IsSETUPReceived())
     60e:	83 fd       	sbrc	r24, 3
     610:	3e c0       	rjmp	.+124    	; 0x68e <__stack+0x8f>
			 *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsOUTReceived(void)
			{
				return ((UEINTX & (1 << RXOUTI)) ? true : false);
     612:	80 91 e8 00 	lds	r24, 0x00E8
		  return ENDPOINT_RWCSTREAM_HostAborted;
		else if (Endpoint_IsOUTReceived())
     616:	82 ff       	sbrs	r24, 2
     618:	06 c0       	rjmp	.+12     	; 0x626 <__stack+0x27>
     61a:	80 91 e8 00 	lds	r24, 0x00E8
			LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
			Endpoint_ClearIN();
		}
	}

	while (!(Endpoint_IsOUTReceived()))
     61e:	82 ff       	sbrs	r24, 2
     620:	27 c0       	rjmp	.+78     	; 0x670 <__stack+0x71>
		  return ENDPOINT_RWCSTREAM_BusSuspended;
		else if (Endpoint_IsSETUPReceived())
		  return ENDPOINT_RWCSTREAM_HostAborted;
	}

	return ENDPOINT_RWCSTREAM_NoError;
     622:	80 e0       	ldi	r24, 0x00	; 0
     624:	08 95       	ret
			 *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsINReady(void)
			{
				return ((UEINTX & (1 << TXINI)) ? true : false);
     626:	80 91 e8 00 	lds	r24, 0x00E8
		else if (Endpoint_IsSETUPReceived())
		  return ENDPOINT_RWCSTREAM_HostAborted;
		else if (Endpoint_IsOUTReceived())
		  break;

		if (Endpoint_IsINReady())
     62a:	80 ff       	sbrs	r24, 0
     62c:	e3 cf       	rjmp	.-58     	; 0x5f4 <Endpoint_Write_Control_PStream_LE+0x26>
			static inline uint16_t Endpoint_BytesInEndpoint(void)
			{
				#if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
					return UEBCX;
				#elif defined(USB_SERIES_4_AVR)
					return (((uint16_t)UEBCHX << 8) | UEBCLX);
     62e:	20 91 f3 00 	lds	r18, 0x00F3
     632:	80 91 f2 00 	lds	r24, 0x00F2
     636:	90 e0       	ldi	r25, 0x00	; 0
     638:	92 2b       	or	r25, r18
		{
			uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint();

			while (Length && (BytesInEndpoint < USB_Device_ControlEndpointSize))
     63a:	61 15       	cp	r22, r1
     63c:	71 05       	cpc	r23, r1
     63e:	59 f0       	breq	.+22     	; 0x656 <__stack+0x57>
     640:	88 30       	cpi	r24, 0x08	; 8
     642:	91 05       	cpc	r25, r1
     644:	40 f4       	brcc	.+16     	; 0x656 <__stack+0x57>
			{
				TEMPLATE_TRANSFER_BYTE(DataStream);
     646:	24 91       	lpm	r18, Z
			 *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
			 */
			static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_Write_8(const uint8_t Data)
			{
				UEDATX = Data;
     648:	20 93 f1 00 	sts	0x00F1, r18
				TEMPLATE_BUFFER_MOVE(DataStream, 1);
     64c:	31 96       	adiw	r30, 0x01	; 1
				Length--;
     64e:	61 50       	subi	r22, 0x01	; 1
     650:	71 09       	sbc	r23, r1
				BytesInEndpoint++;
     652:	01 96       	adiw	r24, 0x01	; 1
     654:	f2 cf       	rjmp	.-28     	; 0x63a <__stack+0x3b>
			}

			LastPacketFull = (BytesInEndpoint == USB_Device_ControlEndpointSize);
     656:	21 e0       	ldi	r18, 0x01	; 1
     658:	08 97       	sbiw	r24, 0x08	; 8
     65a:	09 f0       	breq	.+2      	; 0x65e <__stack+0x5f>
     65c:	20 e0       	ldi	r18, 0x00	; 0
			 */
			static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearIN(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
     65e:	80 91 e8 00 	lds	r24, 0x00E8
     662:	8e 77       	andi	r24, 0x7E	; 126
     664:	80 93 e8 00 	sts	0x00E8, r24
     668:	c5 cf       	rjmp	.-118    	; 0x5f4 <Endpoint_Write_Control_PStream_LE+0x26>
	if (Length > USB_ControlRequest.wLength)
	  Length = USB_ControlRequest.wLength;
	else if (!(Length))
	  Endpoint_ClearIN();

	while (Length || LastPacketFull)
     66a:	21 11       	cpse	r18, r1
     66c:	c6 cf       	rjmp	.-116    	; 0x5fa <Endpoint_Write_Control_PStream_LE+0x2c>
     66e:	d5 cf       	rjmp	.-86     	; 0x61a <__stack+0x1b>
		}
	}

	while (!(Endpoint_IsOUTReceived()))
	{
		uint8_t USB_DeviceState_LCL = USB_DeviceState;
     670:	80 91 35 01 	lds	r24, 0x0135

		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
     674:	88 23       	and	r24, r24
     676:	39 f0       	breq	.+14     	; 0x686 <__stack+0x87>
		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
     678:	85 30       	cpi	r24, 0x05	; 5
     67a:	39 f0       	breq	.+14     	; 0x68a <__stack+0x8b>
			 *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsSETUPReceived(void)
			{
				return ((UEINTX & (1 << RXSTPI)) ? true : false);
     67c:	80 91 e8 00 	lds	r24, 0x00E8
		  return ENDPOINT_RWCSTREAM_BusSuspended;
		else if (Endpoint_IsSETUPReceived())
     680:	83 ff       	sbrs	r24, 3
     682:	cb cf       	rjmp	.-106    	; 0x61a <__stack+0x1b>
     684:	04 c0       	rjmp	.+8      	; 0x68e <__stack+0x8f>
	while (Length || LastPacketFull)
	{
		uint8_t USB_DeviceState_LCL = USB_DeviceState;

		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
		  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
     686:	82 e0       	ldi	r24, 0x02	; 2
     688:	08 95       	ret
		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
		  return ENDPOINT_RWCSTREAM_BusSuspended;
     68a:	83 e0       	ldi	r24, 0x03	; 3
     68c:	08 95       	ret
		else if (Endpoint_IsSETUPReceived())
		  return ENDPOINT_RWCSTREAM_HostAborted;
     68e:	81 e0       	ldi	r24, 0x01	; 1
		else if (Endpoint_IsSETUPReceived())
		  return ENDPOINT_RWCSTREAM_HostAborted;
	}

	return ENDPOINT_RWCSTREAM_NoError;
}
     690:	08 95       	ret

00000692 <Endpoint_ConfigureEndpoint_Prv>:
		UEIENX  = 0;
		UEINTX  = 0;
		UECFG1X = 0;
		Endpoint_DisableEndpoint();
	}
}
     692:	98 2f       	mov	r25, r24
     694:	97 30       	cpi	r25, 0x07	; 7
     696:	58 f5       	brcc	.+86     	; 0x6ee <Endpoint_ConfigureEndpoint_Prv+0x5c>
     698:	90 93 e9 00 	sts	0x00E9, r25
     69c:	98 17       	cp	r25, r24
     69e:	39 f0       	breq	.+14     	; 0x6ae <Endpoint_ConfigureEndpoint_Prv+0x1c>
     6a0:	70 91 ec 00 	lds	r23, 0x00EC
     6a4:	20 91 ed 00 	lds	r18, 0x00ED
     6a8:	50 91 f0 00 	lds	r21, 0x00F0
     6ac:	03 c0       	rjmp	.+6      	; 0x6b4 <Endpoint_ConfigureEndpoint_Prv+0x22>
     6ae:	24 2f       	mov	r18, r20
     6b0:	76 2f       	mov	r23, r22
     6b2:	50 e0       	ldi	r21, 0x00	; 0
     6b4:	21 ff       	sbrs	r18, 1
     6b6:	19 c0       	rjmp	.+50     	; 0x6ea <Endpoint_ConfigureEndpoint_Prv+0x58>
     6b8:	30 91 eb 00 	lds	r19, 0x00EB
     6bc:	3e 7f       	andi	r19, 0xFE	; 254
     6be:	30 93 eb 00 	sts	0x00EB, r19
     6c2:	30 91 ed 00 	lds	r19, 0x00ED
     6c6:	3d 7f       	andi	r19, 0xFD	; 253
     6c8:	30 93 ed 00 	sts	0x00ED, r19
     6cc:	30 91 eb 00 	lds	r19, 0x00EB
     6d0:	31 60       	ori	r19, 0x01	; 1
     6d2:	30 93 eb 00 	sts	0x00EB, r19
     6d6:	70 93 ec 00 	sts	0x00EC, r23
     6da:	20 93 ed 00 	sts	0x00ED, r18
     6de:	50 93 f0 00 	sts	0x00F0, r21
     6e2:	20 91 ee 00 	lds	r18, 0x00EE
     6e6:	27 ff       	sbrs	r18, 7
     6e8:	07 c0       	rjmp	.+14     	; 0x6f8 <Endpoint_ConfigureEndpoint_Prv+0x66>
     6ea:	9f 5f       	subi	r25, 0xFF	; 255
     6ec:	d3 cf       	rjmp	.-90     	; 0x694 <Endpoint_ConfigureEndpoint_Prv+0x2>
     6ee:	8f 70       	andi	r24, 0x0F	; 15
     6f0:	80 93 e9 00 	sts	0x00E9, r24
     6f4:	81 e0       	ldi	r24, 0x01	; 1
     6f6:	08 95       	ret
     6f8:	80 e0       	ldi	r24, 0x00	; 0
     6fa:	08 95       	ret

000006fc <Endpoint_ConfigureEndpointTable>:
     6fc:	0f 93       	push	r16
     6fe:	1f 93       	push	r17
     700:	cf 93       	push	r28
     702:	df 93       	push	r29
     704:	06 2f       	mov	r16, r22
     706:	ec 01       	movw	r28, r24
     708:	10 e0       	ldi	r17, 0x00	; 0
     70a:	10 17       	cp	r17, r16
     70c:	71 f1       	breq	.+92     	; 0x76a <Endpoint_ConfigureEndpointTable+0x6e>
     70e:	98 81       	ld	r25, Y
     710:	99 23       	and	r25, r25
     712:	41 f1       	breq	.+80     	; 0x764 <Endpoint_ConfigureEndpointTable+0x68>
     714:	2c 81       	ldd	r18, Y+4	; 0x04
     716:	e9 81       	ldd	r30, Y+1	; 0x01
     718:	fa 81       	ldd	r31, Y+2	; 0x02
     71a:	7b 81       	ldd	r23, Y+3	; 0x03
     71c:	89 2f       	mov	r24, r25
     71e:	8f 70       	andi	r24, 0x0F	; 15
     720:	87 30       	cpi	r24, 0x07	; 7
     722:	10 f0       	brcs	.+4      	; 0x728 <Endpoint_ConfigureEndpointTable+0x2c>
     724:	80 e0       	ldi	r24, 0x00	; 0
     726:	22 c0       	rjmp	.+68     	; 0x76c <Endpoint_ConfigureEndpointTable+0x70>
     728:	22 30       	cpi	r18, 0x02	; 2
     72a:	10 f0       	brcs	.+4      	; 0x730 <Endpoint_ConfigureEndpointTable+0x34>
     72c:	56 e0       	ldi	r21, 0x06	; 6
     72e:	01 c0       	rjmp	.+2      	; 0x732 <Endpoint_ConfigureEndpointTable+0x36>
     730:	52 e0       	ldi	r21, 0x02	; 2
     732:	28 e0       	ldi	r18, 0x08	; 8
     734:	30 e0       	ldi	r19, 0x00	; 0
     736:	40 e0       	ldi	r20, 0x00	; 0
     738:	2e 17       	cp	r18, r30
     73a:	3f 07       	cpc	r19, r31
     73c:	20 f4       	brcc	.+8      	; 0x746 <Endpoint_ConfigureEndpointTable+0x4a>
     73e:	4f 5f       	subi	r20, 0xFF	; 255
     740:	22 0f       	add	r18, r18
     742:	33 1f       	adc	r19, r19
     744:	f9 cf       	rjmp	.-14     	; 0x738 <Endpoint_ConfigureEndpointTable+0x3c>
     746:	42 95       	swap	r20
     748:	40 7f       	andi	r20, 0xF0	; 240
     74a:	45 2b       	or	r20, r21
     74c:	69 2f       	mov	r22, r25
     74e:	66 1f       	adc	r22, r22
     750:	66 27       	eor	r22, r22
     752:	66 1f       	adc	r22, r22
     754:	90 e4       	ldi	r25, 0x40	; 64
     756:	79 9f       	mul	r23, r25
     758:	90 01       	movw	r18, r0
     75a:	11 24       	eor	r1, r1
     75c:	62 2b       	or	r22, r18
     75e:	99 df       	rcall	.-206    	; 0x692 <Endpoint_ConfigureEndpoint_Prv>
     760:	88 23       	and	r24, r24
     762:	01 f3       	breq	.-64     	; 0x724 <Endpoint_ConfigureEndpointTable+0x28>
     764:	1f 5f       	subi	r17, 0xFF	; 255
     766:	25 96       	adiw	r28, 0x05	; 5
     768:	d0 cf       	rjmp	.-96     	; 0x70a <Endpoint_ConfigureEndpointTable+0xe>
     76a:	81 e0       	ldi	r24, 0x01	; 1
     76c:	df 91       	pop	r29
     76e:	cf 91       	pop	r28
     770:	1f 91       	pop	r17
     772:	0f 91       	pop	r16
     774:	08 95       	ret

00000776 <Endpoint_ClearStatusStage>:

void Endpoint_ClearStatusStage(void)
{
	if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
     776:	80 91 36 01 	lds	r24, 0x0136
     77a:	87 fd       	sbrc	r24, 7
     77c:	05 c0       	rjmp	.+10     	; 0x788 <Endpoint_ClearStatusStage+0x12>
			 *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsINReady(void)
			{
				return ((UEINTX & (1 << TXINI)) ? true : false);
     77e:	80 91 e8 00 	lds	r24, 0x00E8

		Endpoint_ClearOUT();
	}
	else
	{
		while (!(Endpoint_IsINReady()))
     782:	80 ff       	sbrs	r24, 0
     784:	0e c0       	rjmp	.+28     	; 0x7a2 <Endpoint_ClearStatusStage+0x2c>
     786:	12 c0       	rjmp	.+36     	; 0x7ac <Endpoint_ClearStatusStage+0x36>
			 *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsOUTReceived(void)
			{
				return ((UEINTX & (1 << RXOUTI)) ? true : false);
     788:	80 91 e8 00 	lds	r24, 0x00E8

void Endpoint_ClearStatusStage(void)
{
	if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)
	{
		while (!(Endpoint_IsOUTReceived()))
     78c:	82 fd       	sbrc	r24, 2
     78e:	05 c0       	rjmp	.+10     	; 0x79a <Endpoint_ClearStatusStage+0x24>
		{
			if (USB_DeviceState == DEVICE_STATE_Unattached)
     790:	80 91 35 01 	lds	r24, 0x0135
     794:	81 11       	cpse	r24, r1
     796:	f8 cf       	rjmp	.-16     	; 0x788 <Endpoint_ClearStatusStage+0x12>
     798:	08 95       	ret
			 */
			static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearOUT(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
     79a:	80 91 e8 00 	lds	r24, 0x00E8
     79e:	8b 77       	andi	r24, 0x7B	; 123
     7a0:	08 c0       	rjmp	.+16     	; 0x7b2 <Endpoint_ClearStatusStage+0x3c>
	}
	else
	{
		while (!(Endpoint_IsINReady()))
		{
			if (USB_DeviceState == DEVICE_STATE_Unattached)
     7a2:	80 91 35 01 	lds	r24, 0x0135
     7a6:	81 11       	cpse	r24, r1
     7a8:	ea cf       	rjmp	.-44     	; 0x77e <Endpoint_ClearStatusStage+0x8>
     7aa:	08 95       	ret
			 */
			static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearIN(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
     7ac:	80 91 e8 00 	lds	r24, 0x00E8
     7b0:	8e 77       	andi	r24, 0x7E	; 126
     7b2:	80 93 e8 00 	sts	0x00E8, r24
     7b6:	08 95       	ret

000007b8 <Endpoint_WaitUntilReady>:
			 *  \return Current USB frame number from the USB controller.
			 */
			static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
			static inline uint16_t USB_Device_GetFrameNumber(void)
			{
				return UDFNUM;
     7b8:	80 91 e4 00 	lds	r24, 0x00E4
     7bc:	90 91 e5 00 	lds	r25, 0x00E5
     7c0:	45 e6       	ldi	r20, 0x65	; 101
			 *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
			 */
			static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_GetEndpointDirection(void)
			{
				return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
     7c2:	20 91 ec 00 	lds	r18, 0x00EC
     7c6:	20 ff       	sbrs	r18, 0
     7c8:	21 c0       	rjmp	.+66     	; 0x80c <Endpoint_WaitUntilReady+0x54>
			 *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsINReady(void)
			{
				return ((UEINTX & (1 << TXINI)) ? true : false);
     7ca:	20 91 e8 00 	lds	r18, 0x00E8

	for (;;)
	{
		if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)
		{
			if (Endpoint_IsINReady())
     7ce:	20 fd       	sbrc	r18, 0
     7d0:	21 c0       	rjmp	.+66     	; 0x814 <Endpoint_WaitUntilReady+0x5c>
		{
			if (Endpoint_IsOUTReceived())
			  return ENDPOINT_READYWAIT_NoError;
		}

		uint8_t USB_DeviceState_LCL = USB_DeviceState;
     7d2:	20 91 35 01 	lds	r18, 0x0135

		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
     7d6:	22 23       	and	r18, r18
     7d8:	89 f0       	breq	.+34     	; 0x7fc <Endpoint_WaitUntilReady+0x44>
		  return ENDPOINT_READYWAIT_DeviceDisconnected;
		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
     7da:	25 30       	cpi	r18, 0x05	; 5
     7dc:	89 f0       	breq	.+34     	; 0x800 <Endpoint_WaitUntilReady+0x48>
			 *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
			 */
			static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsStalled(void)
			{
				return ((UECONX & (1 << STALLRQ)) ? true : false);
     7de:	20 91 eb 00 	lds	r18, 0x00EB
		  return ENDPOINT_READYWAIT_BusSuspended;
		else if (Endpoint_IsStalled())
     7e2:	25 fd       	sbrc	r18, 5
     7e4:	0f c0       	rjmp	.+30     	; 0x804 <Endpoint_WaitUntilReady+0x4c>
     7e6:	20 91 e4 00 	lds	r18, 0x00E4
     7ea:	30 91 e5 00 	lds	r19, 0x00E5
		  return ENDPOINT_READYWAIT_EndpointStalled;

		uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber();

		if (CurrentFrameNumber != PreviousFrameNumber)
     7ee:	28 17       	cp	r18, r24
     7f0:	39 07       	cpc	r19, r25
     7f2:	39 f3       	breq	.-50     	; 0x7c2 <Endpoint_WaitUntilReady+0xa>
     7f4:	41 50       	subi	r20, 0x01	; 1
		{
			PreviousFrameNumber = CurrentFrameNumber;

			if (!(TimeoutMSRem--))
     7f6:	41 f0       	breq	.+16     	; 0x808 <Endpoint_WaitUntilReady+0x50>
     7f8:	c9 01       	movw	r24, r18
     7fa:	e3 cf       	rjmp	.-58     	; 0x7c2 <Endpoint_WaitUntilReady+0xa>
		}

		uint8_t USB_DeviceState_LCL = USB_DeviceState;

		if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
		  return ENDPOINT_READYWAIT_DeviceDisconnected;
     7fc:	82 e0       	ldi	r24, 0x02	; 2
     7fe:	08 95       	ret
		else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
		  return ENDPOINT_READYWAIT_BusSuspended;
     800:	83 e0       	ldi	r24, 0x03	; 3
     802:	08 95       	ret
		else if (Endpoint_IsStalled())
		  return ENDPOINT_READYWAIT_EndpointStalled;
     804:	81 e0       	ldi	r24, 0x01	; 1
     806:	08 95       	ret
		if (CurrentFrameNumber != PreviousFrameNumber)
		{
			PreviousFrameNumber = CurrentFrameNumber;

			if (!(TimeoutMSRem--))
			  return ENDPOINT_READYWAIT_Timeout;
     808:	84 e0       	ldi	r24, 0x04	; 4
     80a:	08 95       	ret
			 *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsOUTReceived(void)
			{
				return ((UEINTX & (1 << RXOUTI)) ? true : false);
     80c:	20 91 e8 00 	lds	r18, 0x00E8
			if (Endpoint_IsINReady())
			  return ENDPOINT_READYWAIT_NoError;
		}
		else
		{
			if (Endpoint_IsOUTReceived())
     810:	22 ff       	sbrs	r18, 2
     812:	df cf       	rjmp	.-66     	; 0x7d2 <Endpoint_WaitUntilReady+0x1a>
	for (;;)
	{
		if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)
		{
			if (Endpoint_IsINReady())
			  return ENDPOINT_READYWAIT_NoError;
     814:	80 e0       	ldi	r24, 0x00	; 0
     816:	08 95       	ret

00000818 <USB_ResetInterface>:

	USB_IsInitialized = false;
}

void USB_ResetInterface(void)
{
     818:	0f 93       	push	r16
     81a:	1f 93       	push	r17
     81c:	cf 93       	push	r28
     81e:	df 93       	push	r29
	#if defined(USB_CAN_BE_BOTH)
	bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0);
	#endif

	USB_INT_DisableAllInterrupts();
     820:	4b d0       	rcall	.+150    	; 0x8b8 <USB_INT_DisableAllInterrupts>
	USB_INT_ClearAllInterrupts();
     822:	52 d0       	rcall	.+164    	; 0x8c8 <USB_INT_ClearAllInterrupts>
			}

			static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;
			static inline void USB_Controller_Reset(void)
			{
				USBCON &= ~(1 << USBE);
     824:	c8 ed       	ldi	r28, 0xD8	; 216
     826:	d0 e0       	ldi	r29, 0x00	; 0
     828:	88 81       	ld	r24, Y
     82a:	8f 77       	andi	r24, 0x7F	; 127
     82c:	88 83       	st	Y, r24
				USBCON |=  (1 << USBE);
     82e:	88 81       	ld	r24, Y
     830:	80 68       	ori	r24, 0x80	; 128
     832:	88 83       	st	Y, r24
			}

			static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
			static inline void USB_CLK_Unfreeze(void)
			{
				USBCON &= ~(1 << FRZCLK);
     834:	88 81       	ld	r24, Y
     836:	8f 7d       	andi	r24, 0xDF	; 223
     838:	88 83       	st	Y, r24
			}

			static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;
			static inline void USB_PLL_Off(void)
			{
				PLLCSR = 0;
     83a:	19 bc       	out	0x29, r1	; 41
}

#if defined(USB_CAN_BE_DEVICE)
static void USB_Init_Device(void)
{
	USB_DeviceState                 = DEVICE_STATE_Unattached;
     83c:	10 92 35 01 	sts	0x0135, r1
	USB_Device_ConfigurationNumber  = 0;
     840:	10 92 31 01 	sts	0x0131, r1

	#if !defined(NO_DEVICE_REMOTE_WAKEUP)
	USB_Device_RemoteWakeupEnabled  = false;
     844:	10 92 33 01 	sts	0x0133, r1
	#endif

	#if !defined(NO_DEVICE_SELF_POWER)
	USB_Device_CurrentlySelfPowered = false;
     848:	10 92 32 01 	sts	0x0132, r1
			}

			static inline void USB_Device_SetFullSpeed(void) ATTR_ALWAYS_INLINE;
			static inline void USB_Device_SetFullSpeed(void)
			{
				UDCON &= ~(1 << LSM);
     84c:	00 ee       	ldi	r16, 0xE0	; 224
     84e:	10 e0       	ldi	r17, 0x00	; 0
     850:	f8 01       	movw	r30, r16
     852:	80 81       	ld	r24, Z
     854:	8b 7f       	andi	r24, 0xFB	; 251
     856:	80 83       	st	Z, r24
			{
				switch (Interrupt)
				{
					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
					case USB_INT_VBUSTI:
						USBCON |= (1 << VBUSTE);
     858:	88 81       	ld	r24, Y
     85a:	81 60       	ori	r24, 0x01	; 1
     85c:	88 83       	st	Y, r24
				uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);

				if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
				  return false;

				return Endpoint_ConfigureEndpoint_Prv(Number,
     85e:	42 e0       	ldi	r20, 0x02	; 2
     860:	60 e0       	ldi	r22, 0x00	; 0
     862:	80 e0       	ldi	r24, 0x00	; 0
     864:	16 df       	rcall	.-468    	; 0x692 <Endpoint_ConfigureEndpoint_Prv>
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDINT  &= ~(1 << WAKEUPI);
						break;
					case USB_INT_SUSPI:
						UDINT  &= ~(1 << SUSPI);
     866:	e1 ee       	ldi	r30, 0xE1	; 225
     868:	f0 e0       	ldi	r31, 0x00	; 0
     86a:	80 81       	ld	r24, Z
     86c:	8e 7f       	andi	r24, 0xFE	; 254
     86e:	80 83       	st	Z, r24
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDIEN  |= (1 << WAKEUPE);
						break;
					case USB_INT_SUSPI:
						UDIEN  |= (1 << SUSPE);
     870:	e2 ee       	ldi	r30, 0xE2	; 226
     872:	f0 e0       	ldi	r31, 0x00	; 0
     874:	80 81       	ld	r24, Z
     876:	81 60       	ori	r24, 0x01	; 1
     878:	80 83       	st	Z, r24
						break;
					case USB_INT_EORSTI:
						UDIEN  |= (1 << EORSTE);
     87a:	80 81       	ld	r24, Z
     87c:	88 60       	ori	r24, 0x08	; 8
     87e:	80 83       	st	Z, r24
			 *  register and despite the datasheet making no mention of its requirement in host mode.
			 */
			static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;
			static inline void USB_Attach(void)
			{
				UDCON  &= ~(1 << DETACH);
     880:	f8 01       	movw	r30, r16
     882:	80 81       	ld	r24, Z
     884:	8e 7f       	andi	r24, 0xFE	; 254
     886:	80 83       	st	Z, r24

			#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
			static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;
			static inline void USB_OTGPAD_On(void)
			{
				USBCON |=  (1 << OTGPADE);
     888:	88 81       	ld	r24, Y
     88a:	80 61       	ori	r24, 0x10	; 16
     88c:	88 83       	st	Y, r24
	}

	#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
	USB_OTGPAD_On();
	#endif
}
     88e:	df 91       	pop	r29
     890:	cf 91       	pop	r28
     892:	1f 91       	pop	r17
     894:	0f 91       	pop	r16
     896:	08 95       	ret

00000898 <USB_Init>:
			}

			static inline void USB_OTGPAD_Off(void) ATTR_ALWAYS_INLINE;
			static inline void USB_OTGPAD_Off(void)
			{
				USBCON &= ~(1 << OTGPADE);
     898:	e8 ed       	ldi	r30, 0xD8	; 216
     89a:	f0 e0       	ldi	r31, 0x00	; 0
     89c:	80 81       	ld	r24, Z
     89e:	8f 7e       	andi	r24, 0xEF	; 239
     8a0:	80 83       	st	Z, r24

			static inline void USB_REG_On(void) ATTR_ALWAYS_INLINE;
			static inline void USB_REG_On(void)
			{
			#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
				UHWCON |=  (1 << UVREGE);
     8a2:	e7 ed       	ldi	r30, 0xD7	; 215
     8a4:	f0 e0       	ldi	r31, 0x00	; 0
     8a6:	80 81       	ld	r24, Z
     8a8:	81 60       	ori	r24, 0x01	; 1
     8aa:	80 83       	st	Z, r24
	  USB_REG_Off();

	if (!(USB_Options & USB_OPT_MANUAL_PLL))
	{
		#if defined(USB_SERIES_4_AVR)
		PLLFRQ = (1 << PDIV2);
     8ac:	84 e0       	ldi	r24, 0x04	; 4
     8ae:	82 bf       	out	0x32, r24	; 50
		UHWCON &= ~(1 << UIDE);
		USB_CurrentMode = Mode;
	}
	#endif

	USB_IsInitialized = true;
     8b0:	81 e0       	ldi	r24, 0x01	; 1
     8b2:	80 93 34 01 	sts	0x0134, r24

	USB_ResetInterface();
     8b6:	b0 cf       	rjmp	.-160    	; 0x818 <USB_ResetInterface>

000008b8 <USB_INT_DisableAllInterrupts>:
void USB_INT_DisableAllInterrupts(void)
{
	#if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
	USBCON &= ~((1 << VBUSTE) | (1 << IDTE));
	#elif defined(USB_SERIES_4_AVR)
	USBCON &= ~(1 << VBUSTE);
     8b8:	e8 ed       	ldi	r30, 0xD8	; 216
     8ba:	f0 e0       	ldi	r31, 0x00	; 0
     8bc:	80 81       	ld	r24, Z
     8be:	8e 7f       	andi	r24, 0xFE	; 254
     8c0:	80 83       	st	Z, r24
	#if defined(USB_CAN_BE_HOST)
	UHIEN   = 0;
	#endif

	#if defined(USB_CAN_BE_DEVICE)
	UDIEN   = 0;
     8c2:	10 92 e2 00 	sts	0x00E2, r1
     8c6:	08 95       	ret

000008c8 <USB_INT_ClearAllInterrupts>:
}

void USB_INT_ClearAllInterrupts(void)
{
	#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
	USBINT = 0;
     8c8:	10 92 da 00 	sts	0x00DA, r1
	#if defined(USB_CAN_BE_HOST)
	UHINT  = 0;
	#endif

	#if defined(USB_CAN_BE_DEVICE)
	UDINT  = 0;
     8cc:	10 92 e1 00 	sts	0x00E1, r1
     8d0:	08 95       	ret

000008d2 <__vector_10>:
	#endif
}

ISR(USB_GEN_vect, ISR_BLOCK)
{
     8d2:	1f 92       	push	r1
     8d4:	0f 92       	push	r0
     8d6:	0f b6       	in	r0, 0x3f	; 63
     8d8:	0f 92       	push	r0
     8da:	11 24       	eor	r1, r1
     8dc:	2f 93       	push	r18
     8de:	3f 93       	push	r19
     8e0:	4f 93       	push	r20
     8e2:	5f 93       	push	r21
     8e4:	6f 93       	push	r22
     8e6:	7f 93       	push	r23
     8e8:	8f 93       	push	r24
     8ea:	9f 93       	push	r25
     8ec:	af 93       	push	r26
     8ee:	bf 93       	push	r27
     8f0:	ef 93       	push	r30
     8f2:	ff 93       	push	r31
					case USB_INT_SUSPI:
						return (UDINT  & (1 << SUSPI));
					case USB_INT_EORSTI:
						return (UDINT  & (1 << EORSTI));
					case USB_INT_SOFI:
						return (UDINT  & (1 << SOFI));
     8f4:	80 91 e1 00 	lds	r24, 0x00E1
	#if defined(USB_CAN_BE_DEVICE)
	#if !defined(NO_SOF_EVENTS)
	if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))
     8f8:	82 ff       	sbrs	r24, 2
     8fa:	0a c0       	rjmp	.+20     	; 0x910 <__vector_10+0x3e>
					case USB_INT_SUSPI:
						return (UDIEN  & (1 << SUSPE));
					case USB_INT_EORSTI:
						return (UDIEN  & (1 << EORSTE));
					case USB_INT_SOFI:
						return (UDIEN  & (1 << SOFE));
     8fc:	80 91 e2 00 	lds	r24, 0x00E2
     900:	82 ff       	sbrs	r24, 2
     902:	06 c0       	rjmp	.+12     	; 0x910 <__vector_10+0x3e>
						break;
					case USB_INT_EORSTI:
						UDINT  &= ~(1 << EORSTI);
						break;
					case USB_INT_SOFI:
						UDINT  &= ~(1 << SOFI);
     904:	80 91 e1 00 	lds	r24, 0x00E1
     908:	8b 7f       	andi	r24, 0xFB	; 251
     90a:	80 93 e1 00 	sts	0x00E1, r24
	{
		USB_INT_Clear(USB_INT_SOFI);

		EVENT_USB_Device_StartOfFrame();
     90e:	40 d2       	rcall	.+1152   	; 0xd90 <USB_Event_Stub>
			{
				switch (Interrupt)
				{
					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
					case USB_INT_VBUSTI:
						return (USBINT & (1 << VBUSTI));
     910:	80 91 da 00 	lds	r24, 0x00DA
	}
	#endif

	#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
	if (USB_INT_HasOccurred(USB_INT_VBUSTI) && USB_INT_IsEnabled(USB_INT_VBUSTI))
     914:	80 ff       	sbrs	r24, 0
     916:	1d c0       	rjmp	.+58     	; 0x952 <__vector_10+0x80>
			{
				switch (Interrupt)
				{
					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
					case USB_INT_VBUSTI:
						return (USBCON & (1 << VBUSTE));
     918:	80 91 d8 00 	lds	r24, 0x00D8
     91c:	80 ff       	sbrs	r24, 0
     91e:	19 c0       	rjmp	.+50     	; 0x952 <__vector_10+0x80>
			{
				switch (Interrupt)
				{
					#if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
					case USB_INT_VBUSTI:
						USBINT &= ~(1 << VBUSTI);
     920:	80 91 da 00 	lds	r24, 0x00DA
     924:	8e 7f       	andi	r24, 0xFE	; 254
     926:	80 93 da 00 	sts	0x00DA, r24
				 *  \return Boolean \c true if the VBUS line is currently detecting power from a host, \c false otherwise.
				 */
				static inline bool USB_VBUS_GetStatus(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
				static inline bool USB_VBUS_GetStatus(void)
				{
					return ((USBSTA & (1 << VBUS)) ? true : false);
     92a:	80 91 d9 00 	lds	r24, 0x00D9
	{
		USB_INT_Clear(USB_INT_VBUSTI);

		if (USB_VBUS_GetStatus())
     92e:	80 ff       	sbrs	r24, 0
     930:	0c c0       	rjmp	.+24     	; 0x94a <__vector_10+0x78>

		/* Inline Functions: */
			static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;
			static inline void USB_PLL_On(void)
			{
				PLLCSR = USB_PLL_PSC;
     932:	80 e1       	ldi	r24, 0x10	; 16
     934:	89 bd       	out	0x29, r24	; 41
				PLLCSR = (USB_PLL_PSC | (1 << PLLE));
     936:	82 e1       	ldi	r24, 0x12	; 18
     938:	89 bd       	out	0x29, r24	; 41
		{
			if (!(USB_Options & USB_OPT_MANUAL_PLL))
			{
				USB_PLL_On();
				while (!(USB_PLL_IsReady()));
     93a:	09 b4       	in	r0, 0x29	; 41
     93c:	00 fe       	sbrs	r0, 0
     93e:	fd cf       	rjmp	.-6      	; 0x93a <__vector_10+0x68>
			}

			USB_DeviceState = DEVICE_STATE_Powered;
     940:	81 e0       	ldi	r24, 0x01	; 1
     942:	80 93 35 01 	sts	0x0135, r24
			EVENT_USB_Device_Connect();
     946:	a7 dd       	rcall	.-1202   	; 0x496 <EVENT_USB_Device_Connect>
     948:	04 c0       	rjmp	.+8      	; 0x952 <__vector_10+0x80>
			}

			static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;
			static inline void USB_PLL_Off(void)
			{
				PLLCSR = 0;
     94a:	19 bc       	out	0x29, r1	; 41
		else
		{
			if (!(USB_Options & USB_OPT_MANUAL_PLL))
			  USB_PLL_Off();

			USB_DeviceState = DEVICE_STATE_Unattached;
     94c:	10 92 35 01 	sts	0x0135, r1
			EVENT_USB_Device_Disconnect();
     950:	a3 dd       	rcall	.-1210   	; 0x498 <EVENT_USB_Device_Disconnect>
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						return (UDINT  & (1 << WAKEUPI));
					case USB_INT_SUSPI:
						return (UDINT  & (1 << SUSPI));
     952:	80 91 e1 00 	lds	r24, 0x00E1
		}
	}
	#endif

	if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI))
     956:	80 ff       	sbrs	r24, 0
     958:	18 c0       	rjmp	.+48     	; 0x98a <__vector_10+0xb8>
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						return (UDIEN  & (1 << WAKEUPE));
					case USB_INT_SUSPI:
						return (UDIEN  & (1 << SUSPE));
     95a:	80 91 e2 00 	lds	r24, 0x00E2
     95e:	80 ff       	sbrs	r24, 0
     960:	14 c0       	rjmp	.+40     	; 0x98a <__vector_10+0xb8>
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDIEN  &= ~(1 << WAKEUPE);
						break;
					case USB_INT_SUSPI:
						UDIEN  &= ~(1 << SUSPE);
     962:	80 91 e2 00 	lds	r24, 0x00E2
     966:	8e 7f       	andi	r24, 0xFE	; 254
     968:	80 93 e2 00 	sts	0x00E2, r24
						USBCON |= (1 << IDTE);
						break;
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDIEN  |= (1 << WAKEUPE);
     96c:	80 91 e2 00 	lds	r24, 0x00E2
     970:	80 61       	ori	r24, 0x10	; 16
     972:	80 93 e2 00 	sts	0x00E2, r24
			#endif

			static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE;
			static inline void USB_CLK_Freeze(void)
			{
				USBCON |=  (1 << FRZCLK);
     976:	80 91 d8 00 	lds	r24, 0x00D8
     97a:	80 62       	ori	r24, 0x20	; 32
     97c:	80 93 d8 00 	sts	0x00D8, r24
			}

			static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;
			static inline void USB_PLL_Off(void)
			{
				PLLCSR = 0;
     980:	19 bc       	out	0x29, r1	; 41

		#if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)
		USB_DeviceState = DEVICE_STATE_Unattached;
		EVENT_USB_Device_Disconnect();
		#else
		USB_DeviceState = DEVICE_STATE_Suspended;
     982:	85 e0       	ldi	r24, 0x05	; 5
     984:	80 93 35 01 	sts	0x0135, r24
		EVENT_USB_Device_Suspend();
     988:	03 d2       	rcall	.+1030   	; 0xd90 <USB_Event_Stub>
					case USB_INT_IDTI:
						return (USBINT & (1 << IDTI));
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						return (UDINT  & (1 << WAKEUPI));
     98a:	80 91 e1 00 	lds	r24, 0x00E1
		#endif
	}

	if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI))
     98e:	84 ff       	sbrs	r24, 4
     990:	2f c0       	rjmp	.+94     	; 0x9f0 <__vector_10+0x11e>
					case USB_INT_IDTI:
						return (USBCON & (1 << IDTE));
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						return (UDIEN  & (1 << WAKEUPE));
     992:	80 91 e2 00 	lds	r24, 0x00E2
     996:	84 ff       	sbrs	r24, 4
     998:	2b c0       	rjmp	.+86     	; 0x9f0 <__vector_10+0x11e>

		/* Inline Functions: */
			static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;
			static inline void USB_PLL_On(void)
			{
				PLLCSR = USB_PLL_PSC;
     99a:	80 e1       	ldi	r24, 0x10	; 16
     99c:	89 bd       	out	0x29, r24	; 41
				PLLCSR = (USB_PLL_PSC | (1 << PLLE));
     99e:	82 e1       	ldi	r24, 0x12	; 18
     9a0:	89 bd       	out	0x29, r24	; 41
	{
		if (!(USB_Options & USB_OPT_MANUAL_PLL))
		{
			USB_PLL_On();
			while (!(USB_PLL_IsReady()));
     9a2:	09 b4       	in	r0, 0x29	; 41
     9a4:	00 fe       	sbrs	r0, 0
     9a6:	fd cf       	rjmp	.-6      	; 0x9a2 <__vector_10+0xd0>
			}

			static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
			static inline void USB_CLK_Unfreeze(void)
			{
				USBCON &= ~(1 << FRZCLK);
     9a8:	80 91 d8 00 	lds	r24, 0x00D8
     9ac:	8f 7d       	andi	r24, 0xDF	; 223
     9ae:	80 93 d8 00 	sts	0x00D8, r24
						USBINT &= ~(1 << IDTI);
						break;
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDINT  &= ~(1 << WAKEUPI);
     9b2:	80 91 e1 00 	lds	r24, 0x00E1
     9b6:	8f 7e       	andi	r24, 0xEF	; 239
     9b8:	80 93 e1 00 	sts	0x00E1, r24
						USBCON &= ~(1 << IDTE);
						break;
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDIEN  &= ~(1 << WAKEUPE);
     9bc:	80 91 e2 00 	lds	r24, 0x00E2
     9c0:	8f 7e       	andi	r24, 0xEF	; 239
     9c2:	80 93 e2 00 	sts	0x00E2, r24
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDIEN  |= (1 << WAKEUPE);
						break;
					case USB_INT_SUSPI:
						UDIEN  |= (1 << SUSPE);
     9c6:	80 91 e2 00 	lds	r24, 0x00E2
     9ca:	81 60       	ori	r24, 0x01	; 1
     9cc:	80 93 e2 00 	sts	0x00E2, r24
		USB_INT_Clear(USB_INT_WAKEUPI);

		USB_INT_Disable(USB_INT_WAKEUPI);
		USB_INT_Enable(USB_INT_SUSPI);

		if (USB_Device_ConfigurationNumber)
     9d0:	80 91 31 01 	lds	r24, 0x0131
     9d4:	88 23       	and	r24, r24
     9d6:	11 f0       	breq	.+4      	; 0x9dc <__vector_10+0x10a>
		  USB_DeviceState = DEVICE_STATE_Configured;
     9d8:	84 e0       	ldi	r24, 0x04	; 4
     9da:	07 c0       	rjmp	.+14     	; 0x9ea <__vector_10+0x118>
			}

			static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
			static inline bool USB_Device_IsAddressSet(void)
			{
				return (UDADDR & (1 << ADDEN));
     9dc:	80 91 e3 00 	lds	r24, 0x00E3
		else
		  USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Addressed : DEVICE_STATE_Powered;
     9e0:	87 ff       	sbrs	r24, 7
     9e2:	02 c0       	rjmp	.+4      	; 0x9e8 <__vector_10+0x116>
     9e4:	83 e0       	ldi	r24, 0x03	; 3
     9e6:	01 c0       	rjmp	.+2      	; 0x9ea <__vector_10+0x118>
     9e8:	81 e0       	ldi	r24, 0x01	; 1
     9ea:	80 93 35 01 	sts	0x0135, r24

		#if defined(USB_SERIES_2_AVR) && !defined(NO_LIMITED_CONTROLLER_CONNECT)
		EVENT_USB_Device_Connect();
		#else
		EVENT_USB_Device_WakeUp();
     9ee:	d0 d1       	rcall	.+928    	; 0xd90 <USB_Event_Stub>
					case USB_INT_WAKEUPI:
						return (UDINT  & (1 << WAKEUPI));
					case USB_INT_SUSPI:
						return (UDINT  & (1 << SUSPI));
					case USB_INT_EORSTI:
						return (UDINT  & (1 << EORSTI));
     9f0:	80 91 e1 00 	lds	r24, 0x00E1
		#endif
	}

	if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI))
     9f4:	83 ff       	sbrs	r24, 3
     9f6:	27 c0       	rjmp	.+78     	; 0xa46 <__vector_10+0x174>
					case USB_INT_WAKEUPI:
						return (UDIEN  & (1 << WAKEUPE));
					case USB_INT_SUSPI:
						return (UDIEN  & (1 << SUSPE));
					case USB_INT_EORSTI:
						return (UDIEN  & (1 << EORSTE));
     9f8:	80 91 e2 00 	lds	r24, 0x00E2
     9fc:	83 ff       	sbrs	r24, 3
     9fe:	23 c0       	rjmp	.+70     	; 0xa46 <__vector_10+0x174>
						break;
					case USB_INT_SUSPI:
						UDINT  &= ~(1 << SUSPI);
						break;
					case USB_INT_EORSTI:
						UDINT  &= ~(1 << EORSTI);
     a00:	80 91 e1 00 	lds	r24, 0x00E1
     a04:	87 7f       	andi	r24, 0xF7	; 247
     a06:	80 93 e1 00 	sts	0x00E1, r24
	{
		USB_INT_Clear(USB_INT_EORSTI);

		USB_DeviceState                = DEVICE_STATE_Default;
     a0a:	82 e0       	ldi	r24, 0x02	; 2
     a0c:	80 93 35 01 	sts	0x0135, r24
		USB_Device_ConfigurationNumber = 0;
     a10:	10 92 31 01 	sts	0x0131, r1
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDINT  &= ~(1 << WAKEUPI);
						break;
					case USB_INT_SUSPI:
						UDINT  &= ~(1 << SUSPI);
     a14:	80 91 e1 00 	lds	r24, 0x00E1
     a18:	8e 7f       	andi	r24, 0xFE	; 254
     a1a:	80 93 e1 00 	sts	0x00E1, r24
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDIEN  &= ~(1 << WAKEUPE);
						break;
					case USB_INT_SUSPI:
						UDIEN  &= ~(1 << SUSPE);
     a1e:	80 91 e2 00 	lds	r24, 0x00E2
     a22:	8e 7f       	andi	r24, 0xFE	; 254
     a24:	80 93 e2 00 	sts	0x00E2, r24
						USBCON |= (1 << IDTE);
						break;
					#endif
					#if defined(USB_CAN_BE_DEVICE)
					case USB_INT_WAKEUPI:
						UDIEN  |= (1 << WAKEUPE);
     a28:	80 91 e2 00 	lds	r24, 0x00E2
     a2c:	80 61       	ori	r24, 0x10	; 16
     a2e:	80 93 e2 00 	sts	0x00E2, r24
				uint8_t Number = (Address & ENDPOINT_EPNUM_MASK);

				if (Number >= ENDPOINT_TOTAL_ENDPOINTS)
				  return false;

				return Endpoint_ConfigureEndpoint_Prv(Number,
     a32:	42 e0       	ldi	r20, 0x02	; 2
     a34:	60 e0       	ldi	r22, 0x00	; 0
     a36:	80 e0       	ldi	r24, 0x00	; 0
     a38:	2c de       	rcall	.-936    	; 0x692 <Endpoint_ConfigureEndpoint_Prv>
						break;
					case USB_INT_SOFI:
						UDIEN  |= (1 << SOFE);
						break;
					case USB_INT_RXSTPI:
						UEIENX |= (1 << RXSTPE);
     a3a:	80 91 f0 00 	lds	r24, 0x00F0
     a3e:	88 60       	ori	r24, 0x08	; 8
     a40:	80 93 f0 00 	sts	0x00F0, r24

		#if defined(INTERRUPT_CONTROL_ENDPOINT)
		USB_INT_Enable(USB_INT_RXSTPI);
		#endif

		EVENT_USB_Device_Reset();
     a44:	a5 d1       	rcall	.+842    	; 0xd90 <USB_Event_Stub>
		USB_ResetInterface();

		EVENT_USB_UIDChange();
	}
	#endif
}
     a46:	ff 91       	pop	r31
     a48:	ef 91       	pop	r30
     a4a:	bf 91       	pop	r27
     a4c:	af 91       	pop	r26
     a4e:	9f 91       	pop	r25
     a50:	8f 91       	pop	r24
     a52:	7f 91       	pop	r23
     a54:	6f 91       	pop	r22
     a56:	5f 91       	pop	r21
     a58:	4f 91       	pop	r20
     a5a:	3f 91       	pop	r19
     a5c:	2f 91       	pop	r18
     a5e:	0f 90       	pop	r0
     a60:	0f be       	out	0x3f, r0	; 63
     a62:	0f 90       	pop	r0
     a64:	1f 90       	pop	r1
     a66:	18 95       	reti

00000a68 <__vector_11>:

#if defined(INTERRUPT_CONTROL_ENDPOINT) && defined(USB_CAN_BE_DEVICE)
ISR(USB_COM_vect, ISR_BLOCK)
{
     a68:	1f 92       	push	r1
     a6a:	0f 92       	push	r0
     a6c:	0f b6       	in	r0, 0x3f	; 63
     a6e:	0f 92       	push	r0
     a70:	11 24       	eor	r1, r1
     a72:	2f 93       	push	r18
     a74:	3f 93       	push	r19
     a76:	4f 93       	push	r20
     a78:	5f 93       	push	r21
     a7a:	6f 93       	push	r22
     a7c:	7f 93       	push	r23
     a7e:	8f 93       	push	r24
     a80:	9f 93       	push	r25
     a82:	af 93       	push	r26
     a84:	bf 93       	push	r27
     a86:	cf 93       	push	r28
     a88:	ef 93       	push	r30
     a8a:	ff 93       	push	r31
			 */
			static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_GetCurrentEndpoint(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
     a8c:	c0 91 e9 00 	lds	r28, 0x00E9
     a90:	cf 70       	andi	r28, 0x0F	; 15
			 *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
			 */
			static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_GetEndpointDirection(void)
			{
				return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
     a92:	80 91 ec 00 	lds	r24, 0x00EC
			 */
			static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_SelectEndpoint(const uint8_t Address)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UENUM = (Address & ENDPOINT_EPNUM_MASK);
     a96:	10 92 e9 00 	sts	0x00E9, r1
						break;
					case USB_INT_SOFI:
						UDIEN  &= ~(1 << SOFE);
						break;
					case USB_INT_RXSTPI:
						UEIENX &= ~(1 << RXSTPE);
     a9a:	80 91 f0 00 	lds	r24, 0x00F0
     a9e:	87 7f       	andi	r24, 0xF7	; 247
     aa0:	80 93 f0 00 	sts	0x00F0, r24
			static inline void GlobalInterruptEnable(void)
			{
				GCC_MEMORY_BARRIER();

				#if (ARCH == ARCH_AVR8)
				sei();
     aa4:	78 94       	sei
	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
	USB_INT_Disable(USB_INT_RXSTPI);

	GlobalInterruptEnable();

	USB_Device_ProcessControlRequest();
     aa6:	1b d0       	rcall	.+54     	; 0xade <USB_Device_ProcessControlRequest>
     aa8:	10 92 e9 00 	sts	0x00E9, r1
						break;
					case USB_INT_SOFI:
						UDIEN  |= (1 << SOFE);
						break;
					case USB_INT_RXSTPI:
						UEIENX |= (1 << RXSTPE);
     aac:	80 91 f0 00 	lds	r24, 0x00F0
     ab0:	88 60       	ori	r24, 0x08	; 8
     ab2:	80 93 f0 00 	sts	0x00F0, r24
     ab6:	c0 93 e9 00 	sts	0x00E9, r28

	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
	USB_INT_Enable(USB_INT_RXSTPI);
	Endpoint_SelectEndpoint(PrevSelectedEndpoint);
}
     aba:	ff 91       	pop	r31
     abc:	ef 91       	pop	r30
     abe:	cf 91       	pop	r28
     ac0:	bf 91       	pop	r27
     ac2:	af 91       	pop	r26
     ac4:	9f 91       	pop	r25
     ac6:	8f 91       	pop	r24
     ac8:	7f 91       	pop	r23
     aca:	6f 91       	pop	r22
     acc:	5f 91       	pop	r21
     ace:	4f 91       	pop	r20
     ad0:	3f 91       	pop	r19
     ad2:	2f 91       	pop	r18
     ad4:	0f 90       	pop	r0
     ad6:	0f be       	out	0x3f, r0	; 63
     ad8:	0f 90       	pop	r0
     ada:	1f 90       	pop	r1
     adc:	18 95       	reti

00000ade <USB_Device_ProcessControlRequest>:
#if !defined(NO_DEVICE_REMOTE_WAKEUP)
bool    USB_Device_RemoteWakeupEnabled;
#endif

void USB_Device_ProcessControlRequest(void)
{
     ade:	1f 93       	push	r17
     ae0:	cf 93       	push	r28
     ae2:	df 93       	push	r29
     ae4:	cd b7       	in	r28, 0x3d	; 61
     ae6:	de b7       	in	r29, 0x3e	; 62
     ae8:	aa 97       	sbiw	r28, 0x2a	; 42
     aea:	0f b6       	in	r0, 0x3f	; 63
     aec:	f8 94       	cli
     aee:	de bf       	out	0x3e, r29	; 62
     af0:	0f be       	out	0x3f, r0	; 63
     af2:	cd bf       	out	0x3d, r28	; 61
     af4:	e6 e3       	ldi	r30, 0x36	; 54
     af6:	f1 e0       	ldi	r31, 0x01	; 1
			 *  \return Next byte in the currently selected endpoint's FIFO buffer.
			 */
			static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_Read_8(void)
			{
				return UEDATX;
     af8:	80 91 f1 00 	lds	r24, 0x00F1
	USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
	#else
	uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;

	for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
	  *(RequestHeader++) = Endpoint_Read_8();
     afc:	81 93       	st	Z+, r24
	USB_ControlRequest.wIndex        = Endpoint_Read_16_LE();
	USB_ControlRequest.wLength       = Endpoint_Read_16_LE();
	#else
	uint8_t* RequestHeader = (uint8_t*)&USB_ControlRequest;

	for (uint8_t RequestHeaderByte = 0; RequestHeaderByte < sizeof(USB_Request_Header_t); RequestHeaderByte++)
     afe:	21 e0       	ldi	r18, 0x01	; 1
     b00:	ee 33       	cpi	r30, 0x3E	; 62
     b02:	f2 07       	cpc	r31, r18
     b04:	c9 f7       	brne	.-14     	; 0xaf8 <USB_Device_ProcessControlRequest+0x1a>
	  *(RequestHeader++) = Endpoint_Read_8();
	#endif

	EVENT_USB_Device_ControlRequest();
     b06:	cc dc       	rcall	.-1640   	; 0x4a0 <EVENT_USB_Device_ControlRequest>
			 *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsSETUPReceived(void)
			{
				return ((UEINTX & (1 << RXSTPI)) ? true : false);
     b08:	80 91 e8 00 	lds	r24, 0x00E8

	if (Endpoint_IsSETUPReceived())
     b0c:	83 ff       	sbrs	r24, 3
     b0e:	28 c1       	rjmp	.+592    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
	{
		uint8_t bmRequestType = USB_ControlRequest.bmRequestType;
     b10:	90 91 36 01 	lds	r25, 0x0136

		switch (USB_ControlRequest.bRequest)
     b14:	80 91 37 01 	lds	r24, 0x0137
     b18:	85 30       	cpi	r24, 0x05	; 5
     b1a:	09 f4       	brne	.+2      	; 0xb1e <USB_Device_ProcessControlRequest+0x40>
     b1c:	81 c0       	rjmp	.+258    	; 0xc20 <USB_Device_ProcessControlRequest+0x142>
     b1e:	30 f4       	brcc	.+12     	; 0xb2c <USB_Device_ProcessControlRequest+0x4e>
     b20:	81 30       	cpi	r24, 0x01	; 1
     b22:	a9 f1       	breq	.+106    	; 0xb8e <USB_Device_ProcessControlRequest+0xb0>
     b24:	68 f0       	brcs	.+26     	; 0xb40 <USB_Device_ProcessControlRequest+0x62>
     b26:	83 30       	cpi	r24, 0x03	; 3
     b28:	91 f1       	breq	.+100    	; 0xb8e <USB_Device_ProcessControlRequest+0xb0>
     b2a:	1a c1       	rjmp	.+564    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
     b2c:	88 30       	cpi	r24, 0x08	; 8
     b2e:	09 f4       	brne	.+2      	; 0xb32 <USB_Device_ProcessControlRequest+0x54>
     b30:	ec c0       	rjmp	.+472    	; 0xd0a <USB_Device_ProcessControlRequest+0x22c>
     b32:	89 30       	cpi	r24, 0x09	; 9
     b34:	09 f4       	brne	.+2      	; 0xb38 <USB_Device_ProcessControlRequest+0x5a>
     b36:	f8 c0       	rjmp	.+496    	; 0xd28 <USB_Device_ProcessControlRequest+0x24a>
     b38:	86 30       	cpi	r24, 0x06	; 6
     b3a:	09 f0       	breq	.+2      	; 0xb3e <USB_Device_ProcessControlRequest+0x60>
     b3c:	11 c1       	rjmp	.+546    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
     b3e:	92 c0       	rjmp	.+292    	; 0xc64 <USB_Device_ProcessControlRequest+0x186>
		{
			case REQ_GetStatus:
				if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
     b40:	90 38       	cpi	r25, 0x80	; 128
     b42:	21 f0       	breq	.+8      	; 0xb4c <USB_Device_ProcessControlRequest+0x6e>
     b44:	92 38       	cpi	r25, 0x82	; 130
     b46:	09 f0       	breq	.+2      	; 0xb4a <USB_Device_ProcessControlRequest+0x6c>
     b48:	0b c1       	rjmp	.+534    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
     b4a:	08 c0       	rjmp	.+16     	; 0xb5c <USB_Device_ProcessControlRequest+0x7e>
	Endpoint_ClearOUT();
}

static void USB_Device_GetStatus(void)
{
	uint8_t CurrentStatus = 0;
     b4c:	80 91 32 01 	lds	r24, 0x0132
			if (USB_Device_CurrentlySelfPowered)
			  CurrentStatus |= FEATURE_SELFPOWERED_ENABLED;
			#endif

			#if !defined(NO_DEVICE_REMOTE_WAKEUP)
			if (USB_Device_RemoteWakeupEnabled)
     b50:	90 91 33 01 	lds	r25, 0x0133
     b54:	99 23       	and	r25, r25
     b56:	89 f0       	breq	.+34     	; 0xb7a <USB_Device_ProcessControlRequest+0x9c>
			  CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
     b58:	82 60       	ori	r24, 0x02	; 2
     b5a:	0f c0       	rjmp	.+30     	; 0xb7a <USB_Device_ProcessControlRequest+0x9c>
			break;
		}
		case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
		{
			#if !defined(CONTROL_ONLY_DEVICE)
			uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
     b5c:	80 91 3a 01 	lds	r24, 0x013A
     b60:	8f 70       	andi	r24, 0x0F	; 15

			if (EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS)
     b62:	87 30       	cpi	r24, 0x07	; 7
     b64:	08 f0       	brcs	.+2      	; 0xb68 <USB_Device_ProcessControlRequest+0x8a>
     b66:	fc c0       	rjmp	.+504    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
			 */
			static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_SelectEndpoint(const uint8_t Address)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UENUM = (Address & ENDPOINT_EPNUM_MASK);
     b68:	80 93 e9 00 	sts	0x00E9, r24
			 *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.
			 */
			static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsStalled(void)
			{
				return ((UECONX & (1 << STALLRQ)) ? true : false);
     b6c:	80 91 eb 00 	lds	r24, 0x00EB
     b70:	85 fb       	bst	r24, 5
     b72:	88 27       	eor	r24, r24
     b74:	80 f9       	bld	r24, 0
			 */
			static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_SelectEndpoint(const uint8_t Address)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UENUM = (Address & ENDPOINT_EPNUM_MASK);
     b76:	10 92 e9 00 	sts	0x00E9, r1
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
     b7a:	90 91 e8 00 	lds	r25, 0x00E8
     b7e:	97 7f       	andi	r25, 0xF7	; 247
     b80:	90 93 e8 00 	sts	0x00E8, r25
			 *  \param[in] Data  Data to write to the currently selected endpoint's FIFO buffer.
			 */
			static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_Write_16_LE(const uint16_t Data)
			{
				UEDATX = (Data & 0xFF);
     b84:	80 93 f1 00 	sts	0x00F1, r24
				UEDATX = (Data >> 8);
     b88:	10 92 f1 00 	sts	0x00F1, r1
     b8c:	c9 c0       	rjmp	.+402    	; 0xd20 <USB_Device_ProcessControlRequest+0x242>
				}

				break;
			case REQ_ClearFeature:
			case REQ_SetFeature:
				if ((bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE)) ||
     b8e:	29 2f       	mov	r18, r25
     b90:	2d 7f       	andi	r18, 0xFD	; 253
     b92:	09 f0       	breq	.+2      	; 0xb96 <USB_Device_ProcessControlRequest+0xb8>
     b94:	e5 c0       	rjmp	.+458    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
	Endpoint_ClearStatusStage();
}

static void USB_Device_ClearSetFeature(void)
{
	switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
     b96:	99 23       	and	r25, r25
     b98:	19 f0       	breq	.+6      	; 0xba0 <USB_Device_ProcessControlRequest+0xc2>
     b9a:	92 30       	cpi	r25, 0x02	; 2
     b9c:	61 f0       	breq	.+24     	; 0xbb6 <USB_Device_ProcessControlRequest+0xd8>
     b9e:	e0 c0       	rjmp	.+448    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
	{
		#if !defined(NO_DEVICE_REMOTE_WAKEUP)
		case REQREC_DEVICE:
		{
			if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_DeviceRemoteWakeup)
     ba0:	90 91 38 01 	lds	r25, 0x0138
     ba4:	91 30       	cpi	r25, 0x01	; 1
     ba6:	09 f0       	breq	.+2      	; 0xbaa <USB_Device_ProcessControlRequest+0xcc>
     ba8:	db c0       	rjmp	.+438    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
			  USB_Device_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature);
     baa:	83 30       	cpi	r24, 0x03	; 3
     bac:	09 f0       	breq	.+2      	; 0xbb0 <USB_Device_ProcessControlRequest+0xd2>
     bae:	90 e0       	ldi	r25, 0x00	; 0
     bb0:	90 93 33 01 	sts	0x0133, r25
     bb4:	2c c0       	rjmp	.+88     	; 0xc0e <USB_Device_ProcessControlRequest+0x130>
		}
		#endif
		#if !defined(CONTROL_ONLY_DEVICE)
		case REQREC_ENDPOINT:
		{
			if ((uint8_t)USB_ControlRequest.wValue == FEATURE_SEL_EndpointHalt)
     bb6:	90 91 38 01 	lds	r25, 0x0138
     bba:	91 11       	cpse	r25, r1
     bbc:	28 c0       	rjmp	.+80     	; 0xc0e <USB_Device_ProcessControlRequest+0x130>
			{
				uint8_t EndpointIndex = ((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);
     bbe:	20 91 3a 01 	lds	r18, 0x013A
     bc2:	2f 70       	andi	r18, 0x0F	; 15

				if (EndpointIndex == ENDPOINT_CONTROLEP || EndpointIndex >= ENDPOINT_TOTAL_ENDPOINTS)
     bc4:	9f ef       	ldi	r25, 0xFF	; 255
     bc6:	92 0f       	add	r25, r18
     bc8:	96 30       	cpi	r25, 0x06	; 6
     bca:	08 f0       	brcs	.+2      	; 0xbce <USB_Device_ProcessControlRequest+0xf0>
     bcc:	c9 c0       	rjmp	.+402    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
			 */
			static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_SelectEndpoint(const uint8_t Address)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UENUM = (Address & ENDPOINT_EPNUM_MASK);
     bce:	20 93 e9 00 	sts	0x00E9, r18
			 * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.
			 */
			static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsEnabled(void)
			{
				return ((UECONX & (1 << EPEN)) ? true : false);
     bd2:	90 91 eb 00 	lds	r25, 0x00EB
				  return;

				Endpoint_SelectEndpoint(EndpointIndex);

				if (Endpoint_IsEnabled())
     bd6:	90 ff       	sbrs	r25, 0
     bd8:	1a c0       	rjmp	.+52     	; 0xc0e <USB_Device_ProcessControlRequest+0x130>
				{
					if (USB_ControlRequest.bRequest == REQ_SetFeature)
     bda:	83 30       	cpi	r24, 0x03	; 3
     bdc:	21 f4       	brne	.+8      	; 0xbe6 <USB_Device_ProcessControlRequest+0x108>
			 *  \ingroup Group_EndpointPacketManagement_AVR8
			 */
			static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_StallTransaction(void)
			{
				UECONX |= (1 << STALLRQ);
     bde:	80 91 eb 00 	lds	r24, 0x00EB
     be2:	80 62       	ori	r24, 0x20	; 32
     be4:	12 c0       	rjmp	.+36     	; 0xc0a <USB_Device_ProcessControlRequest+0x12c>
			 *  \ingroup Group_EndpointPacketManagement_AVR8
			 */
			static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearStall(void)
			{
				UECONX |= (1 << STALLRQC);
     be6:	80 91 eb 00 	lds	r24, 0x00EB
     bea:	80 61       	ori	r24, 0x10	; 16
     bec:	80 93 eb 00 	sts	0x00EB, r24
			 *  \param[in] Address  Endpoint address whose FIFO buffers are to be reset.
			 */
			static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ResetEndpoint(const uint8_t Address)
			{
				UERST = (1 << (Address & ENDPOINT_EPNUM_MASK));
     bf0:	81 e0       	ldi	r24, 0x01	; 1
     bf2:	90 e0       	ldi	r25, 0x00	; 0
     bf4:	01 c0       	rjmp	.+2      	; 0xbf8 <USB_Device_ProcessControlRequest+0x11a>
     bf6:	88 0f       	add	r24, r24
     bf8:	2a 95       	dec	r18
     bfa:	ea f7       	brpl	.-6      	; 0xbf6 <USB_Device_ProcessControlRequest+0x118>
     bfc:	80 93 ea 00 	sts	0x00EA, r24
				UERST = 0;
     c00:	10 92 ea 00 	sts	0x00EA, r1

			/** Resets the data toggle of the currently selected endpoint. */
			static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ResetDataToggle(void)
			{
				UECONX |= (1 << RSTDT);
     c04:	80 91 eb 00 	lds	r24, 0x00EB
     c08:	88 60       	ori	r24, 0x08	; 8
     c0a:	80 93 eb 00 	sts	0x00EB, r24
			 */
			static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_SelectEndpoint(const uint8_t Address)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UENUM = (Address & ENDPOINT_EPNUM_MASK);
     c0e:	10 92 e9 00 	sts	0x00E9, r1
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
     c12:	80 91 e8 00 	lds	r24, 0x00E8
     c16:	87 7f       	andi	r24, 0xF7	; 247
     c18:	80 93 e8 00 	sts	0x00E8, r24

	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);

	Endpoint_ClearSETUP();

	Endpoint_ClearStatusStage();
     c1c:	ac dd       	rcall	.-1192   	; 0x776 <Endpoint_ClearStatusStage>
     c1e:	a0 c0       	rjmp	.+320    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
					USB_Device_ClearSetFeature();
				}

				break;
			case REQ_SetAddress:
				if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
     c20:	91 11       	cpse	r25, r1
     c22:	9e c0       	rjmp	.+316    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
	}
}

static void USB_Device_SetAddress(void)
{
	uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);
     c24:	10 91 38 01 	lds	r17, 0x0138
     c28:	1f 77       	andi	r17, 0x7F	; 127
			#endif

			static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void USB_Device_SetDeviceAddress(const uint8_t Address)
			{
				UDADDR = (UDADDR & (1 << ADDEN)) | (Address & 0x7F);
     c2a:	80 91 e3 00 	lds	r24, 0x00E3
     c2e:	80 78       	andi	r24, 0x80	; 128
     c30:	81 2b       	or	r24, r17
     c32:	80 93 e3 00 	sts	0x00E3, r24
     c36:	80 91 e8 00 	lds	r24, 0x00E8
     c3a:	87 7f       	andi	r24, 0xF7	; 247
     c3c:	80 93 e8 00 	sts	0x00E8, r24

	USB_Device_SetDeviceAddress(DeviceAddress);

	Endpoint_ClearSETUP();

	Endpoint_ClearStatusStage();
     c40:	9a dd       	rcall	.-1228   	; 0x776 <Endpoint_ClearStatusStage>
			 *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsINReady(void)
			{
				return ((UEINTX & (1 << TXINI)) ? true : false);
     c42:	80 91 e8 00 	lds	r24, 0x00E8

	while (!(Endpoint_IsINReady()));
     c46:	80 ff       	sbrs	r24, 0
     c48:	fc cf       	rjmp	.-8      	; 0xc42 <USB_Device_ProcessControlRequest+0x164>
			static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void USB_Device_EnableDeviceAddress(const uint8_t Address)
			{
				(void)Address;

				UDADDR |= (1 << ADDEN);
     c4a:	80 91 e3 00 	lds	r24, 0x00E3
     c4e:	80 68       	ori	r24, 0x80	; 128
     c50:	80 93 e3 00 	sts	0x00E3, r24

	USB_Device_EnableDeviceAddress(DeviceAddress);

	USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
     c54:	11 23       	and	r17, r17
     c56:	11 f0       	breq	.+4      	; 0xc5c <USB_Device_ProcessControlRequest+0x17e>
     c58:	83 e0       	ldi	r24, 0x03	; 3
     c5a:	01 c0       	rjmp	.+2      	; 0xc5e <USB_Device_ProcessControlRequest+0x180>
     c5c:	82 e0       	ldi	r24, 0x02	; 2
     c5e:	80 93 35 01 	sts	0x0135, r24
     c62:	7e c0       	rjmp	.+252    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
				if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
				  USB_Device_SetAddress();

				break;
			case REQ_GetDescriptor:
				if ((bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE)) ||
     c64:	90 58       	subi	r25, 0x80	; 128
     c66:	92 30       	cpi	r25, 0x02	; 2
     c68:	08 f0       	brcs	.+2      	; 0xc6c <USB_Device_ProcessControlRequest+0x18e>
     c6a:	7a c0       	rjmp	.+244    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
	    !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
	uint8_t DescriptorAddressSpace;
	#endif

	#if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR)
	if (USB_ControlRequest.wValue == ((DTYPE_String << 8) | USE_INTERNAL_SERIAL))
     c6c:	80 91 38 01 	lds	r24, 0x0138
     c70:	90 91 39 01 	lds	r25, 0x0139
     c74:	8c 3d       	cpi	r24, 0xDC	; 220
     c76:	23 e0       	ldi	r18, 0x03	; 3
     c78:	92 07       	cpc	r25, r18
     c7a:	71 f5       	brne	.+92     	; 0xcd8 <USB_Device_ProcessControlRequest+0x1fa>
	{
		USB_Descriptor_Header_t Header;
		uint16_t                UnicodeString[INTERNAL_SERIAL_LENGTH_BITS / 4];
	} SignatureDescriptor;

	SignatureDescriptor.Header.Type = DTYPE_String;
     c7c:	83 e0       	ldi	r24, 0x03	; 3
     c7e:	8a 83       	std	Y+2, r24	; 0x02
	SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4);
     c80:	8a e2       	ldi	r24, 0x2A	; 42
     c82:	89 83       	std	Y+1, r24	; 0x01
			static inline uint_reg_t GetGlobalInterruptMask(void)
			{
				GCC_MEMORY_BARRIER();

				#if (ARCH == ARCH_AVR8)
				return SREG;
     c84:	4f b7       	in	r20, 0x3f	; 63
			static inline void GlobalInterruptDisable(void)
			{
				GCC_MEMORY_BARRIER();

				#if (ARCH == ARCH_AVR8)
				cli();
     c86:	f8 94       	cli
				__builtin_ssrf(AVR32_SR_GM_OFFSET);
				#elif (ARCH == ARCH_XMEGA)
				cli();
				#endif

				GCC_MEMORY_BARRIER();
     c88:	de 01       	movw	r26, r28
     c8a:	13 96       	adiw	r26, 0x03	; 3
				uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
				GlobalInterruptDisable();

				uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;

				for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
     c8c:	20 e0       	ldi	r18, 0x00	; 0
			static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString)
			{
				uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
				GlobalInterruptDisable();

				uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;
     c8e:	3e e0       	ldi	r19, 0x0E	; 14

				for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
				{
					uint8_t SerialByte = boot_signature_byte_get(SigReadAddress);
     c90:	51 e2       	ldi	r21, 0x21	; 33
     c92:	e3 2f       	mov	r30, r19
     c94:	f0 e0       	ldi	r31, 0x00	; 0
     c96:	50 93 57 00 	sts	0x0057, r21
     c9a:	e4 91       	lpm	r30, Z

					if (SerialCharNum & 0x01)
     c9c:	20 ff       	sbrs	r18, 0
     c9e:	03 c0       	rjmp	.+6      	; 0xca6 <USB_Device_ProcessControlRequest+0x1c8>
					{
						SerialByte >>= 4;
     ca0:	e2 95       	swap	r30
     ca2:	ef 70       	andi	r30, 0x0F	; 15
						SigReadAddress++;
     ca4:	3f 5f       	subi	r19, 0xFF	; 255
					}

					SerialByte &= 0x0F;
     ca6:	ef 70       	andi	r30, 0x0F	; 15
     ca8:	8e 2f       	mov	r24, r30
     caa:	90 e0       	ldi	r25, 0x00	; 0

					UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ?
     cac:	ea 30       	cpi	r30, 0x0A	; 10
     cae:	10 f0       	brcs	.+4      	; 0xcb4 <USB_Device_ProcessControlRequest+0x1d6>
     cb0:	c7 96       	adiw	r24, 0x37	; 55
     cb2:	01 c0       	rjmp	.+2      	; 0xcb6 <USB_Device_ProcessControlRequest+0x1d8>
     cb4:	c0 96       	adiw	r24, 0x30	; 48
     cb6:	8d 93       	st	X+, r24
     cb8:	9d 93       	st	X+, r25
				uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
				GlobalInterruptDisable();

				uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;

				for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
     cba:	2f 5f       	subi	r18, 0xFF	; 255
     cbc:	24 31       	cpi	r18, 0x14	; 20
     cbe:	49 f7       	brne	.-46     	; 0xc92 <USB_Device_ProcessControlRequest+0x1b4>
			static inline void SetGlobalInterruptMask(const uint_reg_t GlobalIntState)
			{
				GCC_MEMORY_BARRIER();

				#if (ARCH == ARCH_AVR8)
				SREG = GlobalIntState;
     cc0:	4f bf       	out	0x3f, r20	; 63
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
     cc2:	80 91 e8 00 	lds	r24, 0x00E8
     cc6:	87 7f       	andi	r24, 0xF7	; 247
     cc8:	80 93 e8 00 	sts	0x00E8, r24

	USB_Device_GetSerialString(SignatureDescriptor.UnicodeString);

	Endpoint_ClearSETUP();

	Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));
     ccc:	6a e2       	ldi	r22, 0x2A	; 42
     cce:	70 e0       	ldi	r23, 0x00	; 0
     cd0:	ce 01       	movw	r24, r28
     cd2:	01 96       	adiw	r24, 0x01	; 1
     cd4:	1b dc       	rcall	.-1994   	; 0x50c <Endpoint_Write_Control_Stream_LE>
     cd6:	13 c0       	rjmp	.+38     	; 0xcfe <USB_Device_ProcessControlRequest+0x220>
		USB_Device_GetInternalSerialDescriptor();
		return;
	}
	#endif

	if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,
     cd8:	60 91 3a 01 	lds	r22, 0x013A
     cdc:	70 91 3b 01 	lds	r23, 0x013B
     ce0:	ae 01       	movw	r20, r28
     ce2:	4f 5f       	subi	r20, 0xFF	; 255
     ce4:	5f 4f       	sbci	r21, 0xFF	; 255
     ce6:	e0 db       	rcall	.-2112   	; 0x4a8 <CALLBACK_USB_GetDescriptor>
     ce8:	00 97       	sbiw	r24, 0x00	; 0
     cea:	d1 f1       	breq	.+116    	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
     cec:	20 91 e8 00 	lds	r18, 0x00E8
     cf0:	27 7f       	andi	r18, 0xF7	; 247
     cf2:	20 93 e8 00 	sts	0x00E8, r18
	#if defined(USE_RAM_DESCRIPTORS) || !defined(ARCH_HAS_MULTI_ADDRESS_SPACE)
	Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);
	#elif defined(USE_EEPROM_DESCRIPTORS)
	Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize);
	#elif defined(USE_FLASH_DESCRIPTORS)
	Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize);
     cf6:	bc 01       	movw	r22, r24
     cf8:	89 81       	ldd	r24, Y+1	; 0x01
     cfa:	9a 81       	ldd	r25, Y+2	; 0x02
     cfc:	68 dc       	rcall	.-1840   	; 0x5ce <Endpoint_Write_Control_PStream_LE>
			 */
			static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearOUT(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
     cfe:	80 91 e8 00 	lds	r24, 0x00E8
     d02:	8b 77       	andi	r24, 0x7B	; 123
     d04:	80 93 e8 00 	sts	0x00E8, r24
     d08:	2b c0       	rjmp	.+86     	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
					USB_Device_GetDescriptor();
				}

				break;
			case REQ_GetConfiguration:
				if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
     d0a:	90 38       	cpi	r25, 0x80	; 128
     d0c:	49 f5       	brne	.+82     	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
     d0e:	80 91 e8 00 	lds	r24, 0x00E8
     d12:	87 7f       	andi	r24, 0xF7	; 247
     d14:	80 93 e8 00 	sts	0x00E8, r24

static void USB_Device_GetConfiguration(void)
{
	Endpoint_ClearSETUP();

	Endpoint_Write_8(USB_Device_ConfigurationNumber);
     d18:	80 91 31 01 	lds	r24, 0x0131
			 *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
			 */
			static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_Write_8(const uint8_t Data)
			{
				UEDATX = Data;
     d1c:	80 93 f1 00 	sts	0x00F1, r24
			 */
			static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearIN(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
     d20:	80 91 e8 00 	lds	r24, 0x00E8
     d24:	8e 77       	andi	r24, 0x7E	; 126
     d26:	78 cf       	rjmp	.-272    	; 0xc18 <USB_Device_ProcessControlRequest+0x13a>
				if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE))
				  USB_Device_GetConfiguration();

				break;
			case REQ_SetConfiguration:
				if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE))
     d28:	91 11       	cpse	r25, r1
     d2a:	1a c0       	rjmp	.+52     	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
}

static void USB_Device_SetConfiguration(void)
{
	#if defined(FIXED_NUM_CONFIGURATIONS)
	if ((uint8_t)USB_ControlRequest.wValue > FIXED_NUM_CONFIGURATIONS)
     d2c:	90 91 38 01 	lds	r25, 0x0138
     d30:	92 30       	cpi	r25, 0x02	; 2
     d32:	b0 f4       	brcc	.+44     	; 0xd60 <USB_Device_ProcessControlRequest+0x282>
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
     d34:	80 91 e8 00 	lds	r24, 0x00E8
     d38:	87 7f       	andi	r24, 0xF7	; 247
     d3a:	80 93 e8 00 	sts	0x00E8, r24
	#endif
	#endif

	Endpoint_ClearSETUP();

	USB_Device_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;
     d3e:	90 93 31 01 	sts	0x0131, r25

	Endpoint_ClearStatusStage();
     d42:	19 dd       	rcall	.-1486   	; 0x776 <Endpoint_ClearStatusStage>

	if (USB_Device_ConfigurationNumber)
     d44:	80 91 31 01 	lds	r24, 0x0131
     d48:	81 11       	cpse	r24, r1
     d4a:	04 c0       	rjmp	.+8      	; 0xd54 <USB_Device_ProcessControlRequest+0x276>
			}

			static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
			static inline bool USB_Device_IsAddressSet(void)
			{
				return (UDADDR & (1 << ADDEN));
     d4c:	80 91 e3 00 	lds	r24, 0x00E3
	  USB_DeviceState = DEVICE_STATE_Configured;
	else
	  USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;
     d50:	87 ff       	sbrs	r24, 7
     d52:	02 c0       	rjmp	.+4      	; 0xd58 <USB_Device_ProcessControlRequest+0x27a>
     d54:	84 e0       	ldi	r24, 0x04	; 4
     d56:	01 c0       	rjmp	.+2      	; 0xd5a <USB_Device_ProcessControlRequest+0x27c>
     d58:	81 e0       	ldi	r24, 0x01	; 1
     d5a:	80 93 35 01 	sts	0x0135, r24

	EVENT_USB_Device_ConfigurationChanged();
     d5e:	9d db       	rcall	.-2246   	; 0x49a <EVENT_USB_Device_ConfigurationChanged>
			 *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsSETUPReceived(void)
			{
				return ((UEINTX & (1 << RXSTPI)) ? true : false);
     d60:	80 91 e8 00 	lds	r24, 0x00E8
			default:
				break;
		}
	}

	if (Endpoint_IsSETUPReceived())
     d64:	83 ff       	sbrs	r24, 3
     d66:	0a c0       	rjmp	.+20     	; 0xd7c <USB_Device_ProcessControlRequest+0x29e>
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
     d68:	80 91 e8 00 	lds	r24, 0x00E8
     d6c:	87 7f       	andi	r24, 0xF7	; 247
     d6e:	80 93 e8 00 	sts	0x00E8, r24
			 *  \ingroup Group_EndpointPacketManagement_AVR8
			 */
			static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_StallTransaction(void)
			{
				UECONX |= (1 << STALLRQ);
     d72:	80 91 eb 00 	lds	r24, 0x00EB
     d76:	80 62       	ori	r24, 0x20	; 32
     d78:	80 93 eb 00 	sts	0x00EB, r24
	{
		Endpoint_ClearSETUP();
		Endpoint_StallTransaction();
	}
}
     d7c:	aa 96       	adiw	r28, 0x2a	; 42
     d7e:	0f b6       	in	r0, 0x3f	; 63
     d80:	f8 94       	cli
     d82:	de bf       	out	0x3e, r29	; 62
     d84:	0f be       	out	0x3f, r0	; 63
     d86:	cd bf       	out	0x3d, r28	; 61
     d88:	df 91       	pop	r29
     d8a:	cf 91       	pop	r28
     d8c:	1f 91       	pop	r17
     d8e:	08 95       	ret

00000d90 <USB_Event_Stub>:
#define  __INCLUDE_FROM_EVENTS_C
#define  __INCLUDE_FROM_USB_DRIVER
#include "Events.h"

void USB_Event_Stub(void)
{
     d90:	08 95       	ret

00000d92 <USB_USBTask>:
#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)
volatile uint8_t     USB_DeviceState;
#endif

void USB_USBTask(void)
{
     d92:	cf 93       	push	r28
}

#if defined(USB_CAN_BE_DEVICE)
static void USB_DeviceTask(void)
{
	if (USB_DeviceState == DEVICE_STATE_Unattached)
     d94:	80 91 35 01 	lds	r24, 0x0135
     d98:	88 23       	and	r24, r24
     d9a:	a9 f0       	breq	.+42     	; 0xdc6 <USB_USBTask+0x34>
			 */
			static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_GetCurrentEndpoint(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
     d9c:	80 91 e9 00 	lds	r24, 0x00E9
     da0:	8f 70       	andi	r24, 0x0F	; 15
			 *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.
			 */
			static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_GetEndpointDirection(void)
			{
				return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
     da2:	90 91 ec 00 	lds	r25, 0x00EC
     da6:	90 ff       	sbrs	r25, 0
     da8:	02 c0       	rjmp	.+4      	; 0xdae <USB_USBTask+0x1c>
     daa:	90 e8       	ldi	r25, 0x80	; 128
     dac:	01 c0       	rjmp	.+2      	; 0xdb0 <USB_USBTask+0x1e>
     dae:	90 e0       	ldi	r25, 0x00	; 0
			 */
			static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_GetCurrentEndpoint(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					return ((UENUM & ENDPOINT_EPNUM_MASK) | Endpoint_GetEndpointDirection());
     db0:	c9 2f       	mov	r28, r25
     db2:	c8 2b       	or	r28, r24
			 */
			static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_SelectEndpoint(const uint8_t Address)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UENUM = (Address & ENDPOINT_EPNUM_MASK);
     db4:	10 92 e9 00 	sts	0x00E9, r1
			 *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsSETUPReceived(void)
			{
				return ((UEINTX & (1 << RXSTPI)) ? true : false);
     db8:	80 91 e8 00 	lds	r24, 0x00E8

	uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();

	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);

	if (Endpoint_IsSETUPReceived())
     dbc:	83 fd       	sbrc	r24, 3
	  USB_Device_ProcessControlRequest();
     dbe:	8f de       	rcall	.-738    	; 0xade <USB_Device_ProcessControlRequest>
			 */
			static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_SelectEndpoint(const uint8_t Address)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UENUM = (Address & ENDPOINT_EPNUM_MASK);
     dc0:	cf 70       	andi	r28, 0x0F	; 15
     dc2:	c0 93 e9 00 	sts	0x00E9, r28
	#elif defined(USB_CAN_BE_HOST)
		USB_HostTask();
	#elif defined(USB_CAN_BE_DEVICE)
		USB_DeviceTask();
	#endif
}
     dc6:	cf 91       	pop	r28
     dc8:	08 95       	ret

00000dca <CDC_Device_ConfigureEndpoints>:

void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
                                     FILE* const Stream)
{
	*Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW);
	fdev_set_udata(Stream, CDCInterfaceInfo);
     dca:	cf 93       	push	r28
     dcc:	df 93       	push	r29
     dce:	ec 01       	movw	r28, r24
     dd0:	fc 01       	movw	r30, r24
     dd2:	70 96       	adiw	r30, 0x10	; 16
     dd4:	8b e0       	ldi	r24, 0x0B	; 11
     dd6:	df 01       	movw	r26, r30
     dd8:	1d 92       	st	X+, r1
     dda:	8a 95       	dec	r24
     ddc:	e9 f7       	brne	.-6      	; 0xdd8 <CDC_Device_ConfigureEndpoints+0xe>
     dde:	82 e0       	ldi	r24, 0x02	; 2
     de0:	8c 83       	std	Y+4, r24	; 0x04
     de2:	89 87       	std	Y+9, r24	; 0x09
     de4:	83 e0       	ldi	r24, 0x03	; 3
     de6:	8e 87       	std	Y+14, r24	; 0x0e
     de8:	61 e0       	ldi	r22, 0x01	; 1
     dea:	ce 01       	movw	r24, r28
     dec:	01 96       	adiw	r24, 0x01	; 1
     dee:	86 dc       	rcall	.-1780   	; 0x6fc <Endpoint_ConfigureEndpointTable>
     df0:	88 23       	and	r24, r24
     df2:	61 f0       	breq	.+24     	; 0xe0c <CDC_Device_ConfigureEndpoints+0x42>
     df4:	61 e0       	ldi	r22, 0x01	; 1
     df6:	ce 01       	movw	r24, r28
     df8:	06 96       	adiw	r24, 0x06	; 6
     dfa:	80 dc       	rcall	.-1792   	; 0x6fc <Endpoint_ConfigureEndpointTable>
     dfc:	88 23       	and	r24, r24
     dfe:	31 f0       	breq	.+12     	; 0xe0c <CDC_Device_ConfigureEndpoints+0x42>
     e00:	61 e0       	ldi	r22, 0x01	; 1
     e02:	ce 01       	movw	r24, r28
     e04:	0b 96       	adiw	r24, 0x0b	; 11
     e06:	df 91       	pop	r29
     e08:	cf 91       	pop	r28
     e0a:	78 cc       	rjmp	.-1808   	; 0x6fc <Endpoint_ConfigureEndpointTable>
     e0c:	80 e0       	ldi	r24, 0x00	; 0
     e0e:	df 91       	pop	r29
     e10:	cf 91       	pop	r28
     e12:	08 95       	ret

00000e14 <CDC_Device_SendByte>:
     e14:	cf 93       	push	r28
     e16:	c6 2f       	mov	r28, r22
     e18:	20 91 35 01 	lds	r18, 0x0135
     e1c:	24 30       	cpi	r18, 0x04	; 4
     e1e:	f1 f4       	brne	.+60     	; 0xe5c <CDC_Device_SendByte+0x48>
     e20:	fc 01       	movw	r30, r24
     e22:	44 89       	ldd	r20, Z+20	; 0x14
     e24:	55 89       	ldd	r21, Z+21	; 0x15
     e26:	66 89       	ldd	r22, Z+22	; 0x16
     e28:	77 89       	ldd	r23, Z+23	; 0x17
     e2a:	45 2b       	or	r20, r21
     e2c:	46 2b       	or	r20, r22
     e2e:	47 2b       	or	r20, r23
     e30:	a9 f0       	breq	.+42     	; 0xe5c <CDC_Device_SendByte+0x48>
     e32:	81 81       	ldd	r24, Z+1	; 0x01
     e34:	8f 70       	andi	r24, 0x0F	; 15
     e36:	80 93 e9 00 	sts	0x00E9, r24
     e3a:	80 91 e8 00 	lds	r24, 0x00E8
     e3e:	85 ff       	sbrs	r24, 5
     e40:	04 c0       	rjmp	.+8      	; 0xe4a <CDC_Device_SendByte+0x36>
     e42:	c0 93 f1 00 	sts	0x00F1, r28
     e46:	80 e0       	ldi	r24, 0x00	; 0
     e48:	0a c0       	rjmp	.+20     	; 0xe5e <CDC_Device_SendByte+0x4a>
     e4a:	80 91 e8 00 	lds	r24, 0x00E8
     e4e:	8e 77       	andi	r24, 0x7E	; 126
     e50:	80 93 e8 00 	sts	0x00E8, r24
     e54:	b1 dc       	rcall	.-1694   	; 0x7b8 <Endpoint_WaitUntilReady>
     e56:	88 23       	and	r24, r24
     e58:	a1 f3       	breq	.-24     	; 0xe42 <CDC_Device_SendByte+0x2e>
     e5a:	01 c0       	rjmp	.+2      	; 0xe5e <CDC_Device_SendByte+0x4a>
     e5c:	82 e0       	ldi	r24, 0x02	; 2
     e5e:	cf 91       	pop	r28
     e60:	08 95       	ret

00000e62 <CDC_Device_putchar>:
     e62:	fb 01       	movw	r30, r22
     e64:	68 2f       	mov	r22, r24
     e66:	84 85       	ldd	r24, Z+12	; 0x0c
     e68:	95 85       	ldd	r25, Z+13	; 0x0d
     e6a:	d4 df       	rcall	.-88     	; 0xe14 <CDC_Device_SendByte>
     e6c:	21 e0       	ldi	r18, 0x01	; 1
     e6e:	30 e0       	ldi	r19, 0x00	; 0
     e70:	81 11       	cpse	r24, r1
     e72:	02 c0       	rjmp	.+4      	; 0xe78 <CDC_Device_putchar+0x16>
     e74:	20 e0       	ldi	r18, 0x00	; 0
     e76:	30 e0       	ldi	r19, 0x00	; 0
     e78:	88 27       	eor	r24, r24
     e7a:	99 27       	eor	r25, r25
     e7c:	82 1b       	sub	r24, r18
     e7e:	93 0b       	sbc	r25, r19
     e80:	08 95       	ret

00000e82 <CDC_Device_Flush>:
     e82:	20 91 35 01 	lds	r18, 0x0135
     e86:	24 30       	cpi	r18, 0x04	; 4
     e88:	41 f5       	brne	.+80     	; 0xeda <CDC_Device_Flush+0x58>
     e8a:	fc 01       	movw	r30, r24
     e8c:	44 89       	ldd	r20, Z+20	; 0x14
     e8e:	55 89       	ldd	r21, Z+21	; 0x15
     e90:	66 89       	ldd	r22, Z+22	; 0x16
     e92:	77 89       	ldd	r23, Z+23	; 0x17
     e94:	45 2b       	or	r20, r21
     e96:	46 2b       	or	r20, r22
     e98:	47 2b       	or	r20, r23
     e9a:	f9 f0       	breq	.+62     	; 0xeda <CDC_Device_Flush+0x58>
     e9c:	81 81       	ldd	r24, Z+1	; 0x01
     e9e:	8f 70       	andi	r24, 0x0F	; 15
     ea0:	80 93 e9 00 	sts	0x00E9, r24
     ea4:	20 91 f3 00 	lds	r18, 0x00F3
     ea8:	80 91 f2 00 	lds	r24, 0x00F2
     eac:	90 e0       	ldi	r25, 0x00	; 0
     eae:	92 2b       	or	r25, r18
     eb0:	89 2b       	or	r24, r25
     eb2:	89 f0       	breq	.+34     	; 0xed6 <CDC_Device_Flush+0x54>
     eb4:	90 91 e8 00 	lds	r25, 0x00E8
     eb8:	80 91 e8 00 	lds	r24, 0x00E8
     ebc:	8e 77       	andi	r24, 0x7E	; 126
     ebe:	80 93 e8 00 	sts	0x00E8, r24
     ec2:	95 fd       	sbrc	r25, 5
     ec4:	08 c0       	rjmp	.+16     	; 0xed6 <CDC_Device_Flush+0x54>
     ec6:	78 dc       	rcall	.-1808   	; 0x7b8 <Endpoint_WaitUntilReady>
     ec8:	81 11       	cpse	r24, r1
     eca:	08 c0       	rjmp	.+16     	; 0xedc <CDC_Device_Flush+0x5a>
     ecc:	80 91 e8 00 	lds	r24, 0x00E8
     ed0:	8e 77       	andi	r24, 0x7E	; 126
     ed2:	80 93 e8 00 	sts	0x00E8, r24
     ed6:	80 e0       	ldi	r24, 0x00	; 0
     ed8:	08 95       	ret
     eda:	82 e0       	ldi	r24, 0x02	; 2
     edc:	08 95       	ret

00000ede <CDC_Device_USBTask>:
     ede:	20 91 35 01 	lds	r18, 0x0135
     ee2:	24 30       	cpi	r18, 0x04	; 4
     ee4:	89 f4       	brne	.+34     	; 0xf08 <CDC_Device_USBTask+0x2a>
     ee6:	fc 01       	movw	r30, r24
     ee8:	44 89       	ldd	r20, Z+20	; 0x14
     eea:	55 89       	ldd	r21, Z+21	; 0x15
     eec:	66 89       	ldd	r22, Z+22	; 0x16
     eee:	77 89       	ldd	r23, Z+23	; 0x17
     ef0:	45 2b       	or	r20, r21
     ef2:	46 2b       	or	r20, r22
     ef4:	47 2b       	or	r20, r23
     ef6:	41 f0       	breq	.+16     	; 0xf08 <CDC_Device_USBTask+0x2a>
     ef8:	21 81       	ldd	r18, Z+1	; 0x01
     efa:	2f 70       	andi	r18, 0x0F	; 15
     efc:	20 93 e9 00 	sts	0x00E9, r18
     f00:	20 91 e8 00 	lds	r18, 0x00E8
     f04:	20 fd       	sbrc	r18, 0
     f06:	bd cf       	rjmp	.-134    	; 0xe82 <CDC_Device_Flush>
     f08:	08 95       	ret

00000f0a <CDC_Device_ReceiveByte>:
     f0a:	20 91 35 01 	lds	r18, 0x0135
     f0e:	24 30       	cpi	r18, 0x04	; 4
     f10:	19 f0       	breq	.+6      	; 0xf18 <CDC_Device_ReceiveByte+0xe>
     f12:	8f ef       	ldi	r24, 0xFF	; 255
     f14:	9f ef       	ldi	r25, 0xFF	; 255
     f16:	08 95       	ret
     f18:	fc 01       	movw	r30, r24
     f1a:	44 89       	ldd	r20, Z+20	; 0x14
     f1c:	55 89       	ldd	r21, Z+21	; 0x15
     f1e:	66 89       	ldd	r22, Z+22	; 0x16
     f20:	77 89       	ldd	r23, Z+23	; 0x17
     f22:	45 2b       	or	r20, r21
     f24:	46 2b       	or	r20, r22
     f26:	47 2b       	or	r20, r23
     f28:	a1 f3       	breq	.-24     	; 0xf12 <CDC_Device_ReceiveByte+0x8>
     f2a:	86 81       	ldd	r24, Z+6	; 0x06
     f2c:	8f 70       	andi	r24, 0x0F	; 15
     f2e:	80 93 e9 00 	sts	0x00E9, r24
     f32:	80 91 e8 00 	lds	r24, 0x00E8
     f36:	82 ff       	sbrs	r24, 2
     f38:	ec cf       	rjmp	.-40     	; 0xf12 <CDC_Device_ReceiveByte+0x8>
     f3a:	20 91 f3 00 	lds	r18, 0x00F3
     f3e:	80 91 f2 00 	lds	r24, 0x00F2
     f42:	90 e0       	ldi	r25, 0x00	; 0
     f44:	92 2b       	or	r25, r18
     f46:	89 2b       	or	r24, r25
     f48:	21 f0       	breq	.+8      	; 0xf52 <CDC_Device_ReceiveByte+0x48>
     f4a:	20 91 f1 00 	lds	r18, 0x00F1
     f4e:	30 e0       	ldi	r19, 0x00	; 0
     f50:	02 c0       	rjmp	.+4      	; 0xf56 <CDC_Device_ReceiveByte+0x4c>
     f52:	2f ef       	ldi	r18, 0xFF	; 255
     f54:	3f ef       	ldi	r19, 0xFF	; 255
     f56:	40 91 f3 00 	lds	r20, 0x00F3
     f5a:	80 91 f2 00 	lds	r24, 0x00F2
     f5e:	90 e0       	ldi	r25, 0x00	; 0
     f60:	94 2b       	or	r25, r20
     f62:	89 2b       	or	r24, r25
     f64:	29 f4       	brne	.+10     	; 0xf70 <CDC_Device_ReceiveByte+0x66>
     f66:	80 91 e8 00 	lds	r24, 0x00E8
     f6a:	8b 77       	andi	r24, 0x7B	; 123
     f6c:	80 93 e8 00 	sts	0x00E8, r24
     f70:	c9 01       	movw	r24, r18
     f72:	08 95       	ret

00000f74 <CDC_Device_getchar>:
     f74:	fc 01       	movw	r30, r24
     f76:	84 85       	ldd	r24, Z+12	; 0x0c
     f78:	95 85       	ldd	r25, Z+13	; 0x0d
     f7a:	c7 df       	rcall	.-114    	; 0xf0a <CDC_Device_ReceiveByte>
     f7c:	97 ff       	sbrs	r25, 7
     f7e:	02 c0       	rjmp	.+4      	; 0xf84 <CDC_Device_getchar+0x10>
     f80:	8e ef       	ldi	r24, 0xFE	; 254
     f82:	9f ef       	ldi	r25, 0xFF	; 255
     f84:	08 95       	ret

00000f86 <CDC_Device_CreateStream>:
     f86:	fb 01       	movw	r30, r22
     f88:	2e e0       	ldi	r18, 0x0E	; 14
     f8a:	db 01       	movw	r26, r22
     f8c:	1d 92       	st	X+, r1
     f8e:	2a 95       	dec	r18
     f90:	e9 f7       	brne	.-6      	; 0xf8c <CDC_Device_CreateStream+0x6>
     f92:	23 e0       	ldi	r18, 0x03	; 3
     f94:	23 83       	std	Z+3, r18	; 0x03
     f96:	21 e3       	ldi	r18, 0x31	; 49
     f98:	37 e0       	ldi	r19, 0x07	; 7
     f9a:	31 87       	std	Z+9, r19	; 0x09
     f9c:	20 87       	std	Z+8, r18	; 0x08
     f9e:	2a eb       	ldi	r18, 0xBA	; 186
     fa0:	37 e0       	ldi	r19, 0x07	; 7
     fa2:	33 87       	std	Z+11, r19	; 0x0b
     fa4:	22 87       	std	Z+10, r18	; 0x0a
     fa6:	95 87       	std	Z+13, r25	; 0x0d
     fa8:	84 87       	std	Z+12, r24	; 0x0c
     faa:	08 95       	ret

00000fac <CDC_Device_Event_Stub>:
	return ReceivedByte;
}
#endif

void CDC_Device_Event_Stub(void)
{
     fac:	08 95       	ret

00000fae <CDC_Device_ProcessControlRequest>:
#define  __INCLUDE_FROM_CDC_DRIVER
#define  __INCLUDE_FROM_CDC_DEVICE_C
#include "CDCClassDevice.h"

void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
{
     fae:	cf 93       	push	r28
     fb0:	df 93       	push	r29
     fb2:	ec 01       	movw	r28, r24
			 *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsSETUPReceived(void)
			{
				return ((UEINTX & (1 << RXSTPI)) ? true : false);
     fb4:	80 91 e8 00 	lds	r24, 0x00E8
	if (!(Endpoint_IsSETUPReceived()))
     fb8:	83 ff       	sbrs	r24, 3
     fba:	a6 c0       	rjmp	.+332    	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
	  return;

	if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber)
     fbc:	88 81       	ld	r24, Y
     fbe:	90 e0       	ldi	r25, 0x00	; 0
     fc0:	20 91 3a 01 	lds	r18, 0x013A
     fc4:	30 91 3b 01 	lds	r19, 0x013B
     fc8:	28 17       	cp	r18, r24
     fca:	39 07       	cpc	r19, r25
     fcc:	09 f0       	breq	.+2      	; 0xfd0 <CDC_Device_ProcessControlRequest+0x22>
     fce:	9c c0       	rjmp	.+312    	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
	  return;

	switch (USB_ControlRequest.bRequest)
     fd0:	80 91 37 01 	lds	r24, 0x0137
     fd4:	81 32       	cpi	r24, 0x21	; 33
     fd6:	61 f0       	breq	.+24     	; 0xff0 <CDC_Device_ProcessControlRequest+0x42>
     fd8:	20 f4       	brcc	.+8      	; 0xfe2 <CDC_Device_ProcessControlRequest+0x34>
     fda:	80 32       	cpi	r24, 0x20	; 32
     fdc:	09 f4       	brne	.+2      	; 0xfe0 <CDC_Device_ProcessControlRequest+0x32>
     fde:	3e c0       	rjmp	.+124    	; 0x105c <CDC_Device_ProcessControlRequest+0xae>
     fe0:	93 c0       	rjmp	.+294    	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
     fe2:	82 32       	cpi	r24, 0x22	; 34
     fe4:	09 f4       	brne	.+2      	; 0xfe8 <CDC_Device_ProcessControlRequest+0x3a>
     fe6:	6c c0       	rjmp	.+216    	; 0x10c0 <CDC_Device_ProcessControlRequest+0x112>
     fe8:	83 32       	cpi	r24, 0x23	; 35
     fea:	09 f4       	brne	.+2      	; 0xfee <CDC_Device_ProcessControlRequest+0x40>
     fec:	7d c0       	rjmp	.+250    	; 0x10e8 <CDC_Device_ProcessControlRequest+0x13a>
     fee:	8c c0       	rjmp	.+280    	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
	{
		case CDC_REQ_GetLineEncoding:
			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
     ff0:	80 91 36 01 	lds	r24, 0x0136
     ff4:	81 3a       	cpi	r24, 0xA1	; 161
     ff6:	09 f0       	breq	.+2      	; 0xffa <CDC_Device_ProcessControlRequest+0x4c>
     ff8:	87 c0       	rjmp	.+270    	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
     ffa:	80 91 e8 00 	lds	r24, 0x00E8
     ffe:	87 7f       	andi	r24, 0xF7	; 247
    1000:	80 93 e8 00 	sts	0x00E8, r24
			 *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsINReady(void)
			{
				return ((UEINTX & (1 << TXINI)) ? true : false);
    1004:	80 91 e8 00 	lds	r24, 0x00E8
			{
				Endpoint_ClearSETUP();

				while (!(Endpoint_IsINReady()));
    1008:	80 ff       	sbrs	r24, 0
    100a:	fc cf       	rjmp	.-8      	; 0x1004 <CDC_Device_ProcessControlRequest+0x56>

				Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
    100c:	4c 89       	ldd	r20, Y+20	; 0x14
    100e:	5d 89       	ldd	r21, Y+21	; 0x15
    1010:	6e 89       	ldd	r22, Y+22	; 0x16
    1012:	7f 89       	ldd	r23, Y+23	; 0x17
			 *  \param[in] Data  Data to write to the currently selected endpoint's FIFO buffer.
			 */
			static inline void Endpoint_Write_32_LE(const uint32_t Data) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_Write_32_LE(const uint32_t Data)
			{
				UEDATX = (Data &  0xFF);
    1014:	40 93 f1 00 	sts	0x00F1, r20
				UEDATX = (Data >> 8);
    1018:	bb 27       	eor	r27, r27
    101a:	a7 2f       	mov	r26, r23
    101c:	96 2f       	mov	r25, r22
    101e:	85 2f       	mov	r24, r21
    1020:	80 93 f1 00 	sts	0x00F1, r24
				UEDATX = (Data >> 16);
    1024:	cb 01       	movw	r24, r22
    1026:	aa 27       	eor	r26, r26
    1028:	bb 27       	eor	r27, r27
    102a:	80 93 f1 00 	sts	0x00F1, r24
				UEDATX = (Data >> 24);
    102e:	47 2f       	mov	r20, r23
    1030:	55 27       	eor	r21, r21
    1032:	66 27       	eor	r22, r22
    1034:	77 27       	eor	r23, r23
    1036:	40 93 f1 00 	sts	0x00F1, r20
				Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);
    103a:	88 8d       	ldd	r24, Y+24	; 0x18
			 *  \param[in] Data  Data to write into the the currently selected endpoint's FIFO buffer.
			 */
			static inline void Endpoint_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_Write_8(const uint8_t Data)
			{
				UEDATX = Data;
    103c:	80 93 f1 00 	sts	0x00F1, r24
				Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);
    1040:	89 8d       	ldd	r24, Y+25	; 0x19
    1042:	80 93 f1 00 	sts	0x00F1, r24
				Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);
    1046:	8a 8d       	ldd	r24, Y+26	; 0x1a
    1048:	80 93 f1 00 	sts	0x00F1, r24
			 */
			static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearIN(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << TXINI) | (1 << FIFOCON));
    104c:	80 91 e8 00 	lds	r24, 0x00E8
    1050:	8e 77       	andi	r24, 0x7E	; 126
    1052:	80 93 e8 00 	sts	0x00E8, r24
				EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
			}

			break;
	}
}
    1056:	df 91       	pop	r29
    1058:	cf 91       	pop	r28
				Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);
				Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);
				Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);

				Endpoint_ClearIN();
				Endpoint_ClearStatusStage();
    105a:	8d cb       	rjmp	.-2278   	; 0x776 <Endpoint_ClearStatusStage>
			}

			break;
		case CDC_REQ_SetLineEncoding:
			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
    105c:	80 91 36 01 	lds	r24, 0x0136
    1060:	81 32       	cpi	r24, 0x21	; 33
    1062:	09 f0       	breq	.+2      	; 0x1066 <CDC_Device_ProcessControlRequest+0xb8>
    1064:	51 c0       	rjmp	.+162    	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
    1066:	80 91 e8 00 	lds	r24, 0x00E8
    106a:	87 7f       	andi	r24, 0xF7	; 247
    106c:	80 93 e8 00 	sts	0x00E8, r24
			 *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.
			 */
			static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline bool Endpoint_IsOUTReceived(void)
			{
				return ((UEINTX & (1 << RXOUTI)) ? true : false);
    1070:	80 91 e8 00 	lds	r24, 0x00E8
			{
				Endpoint_ClearSETUP();

				while (!(Endpoint_IsOUTReceived()))
    1074:	82 fd       	sbrc	r24, 2
    1076:	05 c0       	rjmp	.+10     	; 0x1082 <CDC_Device_ProcessControlRequest+0xd4>
				{
					if (USB_DeviceState == DEVICE_STATE_Unattached)
    1078:	80 91 35 01 	lds	r24, 0x0135
    107c:	81 11       	cpse	r24, r1
    107e:	f8 cf       	rjmp	.-16     	; 0x1070 <CDC_Device_ProcessControlRequest+0xc2>
    1080:	43 c0       	rjmp	.+134    	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
				{
					uint32_t Value;
					uint8_t  Bytes[4];
				} Data;

				Data.Bytes[0] = UEDATX;
    1082:	30 91 f1 00 	lds	r19, 0x00F1
				Data.Bytes[1] = UEDATX;
    1086:	20 91 f1 00 	lds	r18, 0x00F1
				Data.Bytes[2] = UEDATX;
    108a:	90 91 f1 00 	lds	r25, 0x00F1
				Data.Bytes[3] = UEDATX;
    108e:	80 91 f1 00 	lds	r24, 0x00F1
					  return;
				}

				CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE();
    1092:	3c 8b       	std	Y+20, r19	; 0x14
    1094:	2d 8b       	std	Y+21, r18	; 0x15
    1096:	9e 8b       	std	Y+22, r25	; 0x16
    1098:	8f 8b       	std	Y+23, r24	; 0x17
			 *  \return Next byte in the currently selected endpoint's FIFO buffer.
			 */
			static inline uint8_t Endpoint_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
			static inline uint8_t Endpoint_Read_8(void)
			{
				return UEDATX;
    109a:	80 91 f1 00 	lds	r24, 0x00F1
				CDCInterfaceInfo->State.LineEncoding.CharFormat  = Endpoint_Read_8();
    109e:	88 8f       	std	Y+24, r24	; 0x18
    10a0:	80 91 f1 00 	lds	r24, 0x00F1
				CDCInterfaceInfo->State.LineEncoding.ParityType  = Endpoint_Read_8();
    10a4:	89 8f       	std	Y+25, r24	; 0x19
    10a6:	80 91 f1 00 	lds	r24, 0x00F1
				CDCInterfaceInfo->State.LineEncoding.DataBits    = Endpoint_Read_8();
    10aa:	8a 8f       	std	Y+26, r24	; 0x1a
			 */
			static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearOUT(void)
			{
				#if !defined(CONTROL_ONLY_DEVICE)
					UEINTX &= ~((1 << RXOUTI) | (1 << FIFOCON));
    10ac:	80 91 e8 00 	lds	r24, 0x00E8
    10b0:	8b 77       	andi	r24, 0x7B	; 123
    10b2:	80 93 e8 00 	sts	0x00E8, r24

				Endpoint_ClearOUT();
				Endpoint_ClearStatusStage();
    10b6:	5f db       	rcall	.-2370   	; 0x776 <Endpoint_ClearStatusStage>

				EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
    10b8:	ce 01       	movw	r24, r28
				EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
			}

			break;
	}
}
    10ba:	df 91       	pop	r29
    10bc:	cf 91       	pop	r28
				CDCInterfaceInfo->State.LineEncoding.DataBits    = Endpoint_Read_8();

				Endpoint_ClearOUT();
				Endpoint_ClearStatusStage();

				EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
    10be:	76 cf       	rjmp	.-276    	; 0xfac <CDC_Device_Event_Stub>
			}

			break;
		case CDC_REQ_SetControlLineState:
			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
    10c0:	80 91 36 01 	lds	r24, 0x0136
    10c4:	81 32       	cpi	r24, 0x21	; 33
    10c6:	01 f5       	brne	.+64     	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
			 *  \note This is not applicable for non CONTROL type endpoints.
			 */
			static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;
			static inline void Endpoint_ClearSETUP(void)
			{
				UEINTX &= ~(1 << RXSTPI);
    10c8:	80 91 e8 00 	lds	r24, 0x00E8
    10cc:	87 7f       	andi	r24, 0xF7	; 247
    10ce:	80 93 e8 00 	sts	0x00E8, r24
			{
				Endpoint_ClearSETUP();
				Endpoint_ClearStatusStage();
    10d2:	51 db       	rcall	.-2398   	; 0x776 <Endpoint_ClearStatusStage>

				CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;
    10d4:	80 91 38 01 	lds	r24, 0x0138
    10d8:	90 91 39 01 	lds	r25, 0x0139
    10dc:	99 8b       	std	Y+17, r25	; 0x11
    10de:	88 8b       	std	Y+16, r24	; 0x10

				EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
    10e0:	ce 01       	movw	r24, r28
				EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
			}

			break;
	}
}
    10e2:	df 91       	pop	r29
    10e4:	cf 91       	pop	r28
				Endpoint_ClearSETUP();
				Endpoint_ClearStatusStage();

				CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;

				EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
    10e6:	df c9       	rjmp	.-3138   	; 0x4a6 <EVENT_CDC_Device_ControLineStateChanged>
			}

			break;
		case CDC_REQ_SendBreak:
			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
    10e8:	80 91 36 01 	lds	r24, 0x0136
    10ec:	81 32       	cpi	r24, 0x21	; 33
    10ee:	61 f4       	brne	.+24     	; 0x1108 <CDC_Device_ProcessControlRequest+0x15a>
    10f0:	80 91 e8 00 	lds	r24, 0x00E8
    10f4:	87 7f       	andi	r24, 0xF7	; 247
    10f6:	80 93 e8 00 	sts	0x00E8, r24
			{
				Endpoint_ClearSETUP();
				Endpoint_ClearStatusStage();
    10fa:	3d db       	rcall	.-2438   	; 0x776 <Endpoint_ClearStatusStage>

				EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
    10fc:	60 91 38 01 	lds	r22, 0x0138
    1100:	ce 01       	movw	r24, r28
			}

			break;
	}
}
    1102:	df 91       	pop	r29
    1104:	cf 91       	pop	r28
			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
			{
				Endpoint_ClearSETUP();
				Endpoint_ClearStatusStage();

				EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
    1106:	52 cf       	rjmp	.-348    	; 0xfac <CDC_Device_Event_Stub>
			}

			break;
	}
}
    1108:	df 91       	pop	r29
    110a:	cf 91       	pop	r28
    110c:	08 95       	ret

0000110e <__subsf3>:
    110e:	50 58       	subi	r21, 0x80	; 128

00001110 <__addsf3>:
    1110:	bb 27       	eor	r27, r27
    1112:	aa 27       	eor	r26, r26
    1114:	0e d0       	rcall	.+28     	; 0x1132 <__addsf3x>
    1116:	b1 c1       	rjmp	.+866    	; 0x147a <__fp_round>
    1118:	a2 d1       	rcall	.+836    	; 0x145e <__fp_pscA>
    111a:	30 f0       	brcs	.+12     	; 0x1128 <__addsf3+0x18>
    111c:	a7 d1       	rcall	.+846    	; 0x146c <__fp_pscB>
    111e:	20 f0       	brcs	.+8      	; 0x1128 <__addsf3+0x18>
    1120:	31 f4       	brne	.+12     	; 0x112e <__addsf3+0x1e>
    1122:	9f 3f       	cpi	r25, 0xFF	; 255
    1124:	11 f4       	brne	.+4      	; 0x112a <__addsf3+0x1a>
    1126:	1e f4       	brtc	.+6      	; 0x112e <__addsf3+0x1e>
    1128:	97 c1       	rjmp	.+814    	; 0x1458 <__fp_nan>
    112a:	0e f4       	brtc	.+2      	; 0x112e <__addsf3+0x1e>
    112c:	e0 95       	com	r30
    112e:	e7 fb       	bst	r30, 7
    1130:	64 c1       	rjmp	.+712    	; 0x13fa <__fp_inf>

00001132 <__addsf3x>:
    1132:	e9 2f       	mov	r30, r25
    1134:	b3 d1       	rcall	.+870    	; 0x149c <__fp_split3>
    1136:	80 f3       	brcs	.-32     	; 0x1118 <__addsf3+0x8>
    1138:	ba 17       	cp	r27, r26
    113a:	62 07       	cpc	r22, r18
    113c:	73 07       	cpc	r23, r19
    113e:	84 07       	cpc	r24, r20
    1140:	95 07       	cpc	r25, r21
    1142:	18 f0       	brcs	.+6      	; 0x114a <__addsf3x+0x18>
    1144:	71 f4       	brne	.+28     	; 0x1162 <__addsf3x+0x30>
    1146:	9e f5       	brtc	.+102    	; 0x11ae <__addsf3x+0x7c>
    1148:	e2 c1       	rjmp	.+964    	; 0x150e <__fp_zero>
    114a:	0e f4       	brtc	.+2      	; 0x114e <__addsf3x+0x1c>
    114c:	e0 95       	com	r30
    114e:	0b 2e       	mov	r0, r27
    1150:	ba 2f       	mov	r27, r26
    1152:	a0 2d       	mov	r26, r0
    1154:	0b 01       	movw	r0, r22
    1156:	b9 01       	movw	r22, r18
    1158:	90 01       	movw	r18, r0
    115a:	0c 01       	movw	r0, r24
    115c:	ca 01       	movw	r24, r20
    115e:	a0 01       	movw	r20, r0
    1160:	11 24       	eor	r1, r1
    1162:	ff 27       	eor	r31, r31
    1164:	59 1b       	sub	r21, r25
    1166:	99 f0       	breq	.+38     	; 0x118e <__addsf3x+0x5c>
    1168:	59 3f       	cpi	r21, 0xF9	; 249
    116a:	50 f4       	brcc	.+20     	; 0x1180 <__addsf3x+0x4e>
    116c:	50 3e       	cpi	r21, 0xE0	; 224
    116e:	68 f1       	brcs	.+90     	; 0x11ca <__addsf3x+0x98>
    1170:	1a 16       	cp	r1, r26
    1172:	f0 40       	sbci	r31, 0x00	; 0
    1174:	a2 2f       	mov	r26, r18
    1176:	23 2f       	mov	r18, r19
    1178:	34 2f       	mov	r19, r20
    117a:	44 27       	eor	r20, r20
    117c:	58 5f       	subi	r21, 0xF8	; 248
    117e:	f3 cf       	rjmp	.-26     	; 0x1166 <__addsf3x+0x34>
    1180:	46 95       	lsr	r20
    1182:	37 95       	ror	r19
    1184:	27 95       	ror	r18
    1186:	a7 95       	ror	r26
    1188:	f0 40       	sbci	r31, 0x00	; 0
    118a:	53 95       	inc	r21
    118c:	c9 f7       	brne	.-14     	; 0x1180 <__addsf3x+0x4e>
    118e:	7e f4       	brtc	.+30     	; 0x11ae <__addsf3x+0x7c>
    1190:	1f 16       	cp	r1, r31
    1192:	ba 0b       	sbc	r27, r26
    1194:	62 0b       	sbc	r22, r18
    1196:	73 0b       	sbc	r23, r19
    1198:	84 0b       	sbc	r24, r20
    119a:	ba f0       	brmi	.+46     	; 0x11ca <__addsf3x+0x98>
    119c:	91 50       	subi	r25, 0x01	; 1
    119e:	a1 f0       	breq	.+40     	; 0x11c8 <__addsf3x+0x96>
    11a0:	ff 0f       	add	r31, r31
    11a2:	bb 1f       	adc	r27, r27
    11a4:	66 1f       	adc	r22, r22
    11a6:	77 1f       	adc	r23, r23
    11a8:	88 1f       	adc	r24, r24
    11aa:	c2 f7       	brpl	.-16     	; 0x119c <__addsf3x+0x6a>
    11ac:	0e c0       	rjmp	.+28     	; 0x11ca <__addsf3x+0x98>
    11ae:	ba 0f       	add	r27, r26
    11b0:	62 1f       	adc	r22, r18
    11b2:	73 1f       	adc	r23, r19
    11b4:	84 1f       	adc	r24, r20
    11b6:	48 f4       	brcc	.+18     	; 0x11ca <__addsf3x+0x98>
    11b8:	87 95       	ror	r24
    11ba:	77 95       	ror	r23
    11bc:	67 95       	ror	r22
    11be:	b7 95       	ror	r27
    11c0:	f7 95       	ror	r31
    11c2:	9e 3f       	cpi	r25, 0xFE	; 254
    11c4:	08 f0       	brcs	.+2      	; 0x11c8 <__addsf3x+0x96>
    11c6:	b3 cf       	rjmp	.-154    	; 0x112e <__addsf3+0x1e>
    11c8:	93 95       	inc	r25
    11ca:	88 0f       	add	r24, r24
    11cc:	08 f0       	brcs	.+2      	; 0x11d0 <__addsf3x+0x9e>
    11ce:	99 27       	eor	r25, r25
    11d0:	ee 0f       	add	r30, r30
    11d2:	97 95       	ror	r25
    11d4:	87 95       	ror	r24
    11d6:	08 95       	ret

000011d8 <ceil>:
    11d8:	83 d1       	rcall	.+774    	; 0x14e0 <__fp_trunc>
    11da:	80 f0       	brcs	.+32     	; 0x11fc <ceil+0x24>
    11dc:	9f 37       	cpi	r25, 0x7F	; 127
    11de:	40 f4       	brcc	.+16     	; 0x11f0 <ceil+0x18>
    11e0:	91 11       	cpse	r25, r1
    11e2:	0e f4       	brtc	.+2      	; 0x11e6 <ceil+0xe>
    11e4:	95 c1       	rjmp	.+810    	; 0x1510 <__fp_szero>
    11e6:	60 e0       	ldi	r22, 0x00	; 0
    11e8:	70 e0       	ldi	r23, 0x00	; 0
    11ea:	80 e8       	ldi	r24, 0x80	; 128
    11ec:	9f e3       	ldi	r25, 0x3F	; 63
    11ee:	08 95       	ret
    11f0:	26 f0       	brts	.+8      	; 0x11fa <ceil+0x22>
    11f2:	1b 16       	cp	r1, r27
    11f4:	61 1d       	adc	r22, r1
    11f6:	71 1d       	adc	r23, r1
    11f8:	81 1d       	adc	r24, r1
    11fa:	05 c1       	rjmp	.+522    	; 0x1406 <__fp_mintl>
    11fc:	1f c1       	rjmp	.+574    	; 0x143c <__fp_mpack>

000011fe <__cmpsf2>:
    11fe:	d9 d0       	rcall	.+434    	; 0x13b2 <__fp_cmp>
    1200:	08 f4       	brcc	.+2      	; 0x1204 <__cmpsf2+0x6>
    1202:	81 e0       	ldi	r24, 0x01	; 1
    1204:	08 95       	ret

00001206 <__divsf3>:
    1206:	0c d0       	rcall	.+24     	; 0x1220 <__divsf3x>
    1208:	38 c1       	rjmp	.+624    	; 0x147a <__fp_round>
    120a:	30 d1       	rcall	.+608    	; 0x146c <__fp_pscB>
    120c:	40 f0       	brcs	.+16     	; 0x121e <__divsf3+0x18>
    120e:	27 d1       	rcall	.+590    	; 0x145e <__fp_pscA>
    1210:	30 f0       	brcs	.+12     	; 0x121e <__divsf3+0x18>
    1212:	21 f4       	brne	.+8      	; 0x121c <__divsf3+0x16>
    1214:	5f 3f       	cpi	r21, 0xFF	; 255
    1216:	19 f0       	breq	.+6      	; 0x121e <__divsf3+0x18>
    1218:	f0 c0       	rjmp	.+480    	; 0x13fa <__fp_inf>
    121a:	51 11       	cpse	r21, r1
    121c:	79 c1       	rjmp	.+754    	; 0x1510 <__fp_szero>
    121e:	1c c1       	rjmp	.+568    	; 0x1458 <__fp_nan>

00001220 <__divsf3x>:
    1220:	3d d1       	rcall	.+634    	; 0x149c <__fp_split3>
    1222:	98 f3       	brcs	.-26     	; 0x120a <__divsf3+0x4>

00001224 <__divsf3_pse>:
    1224:	99 23       	and	r25, r25
    1226:	c9 f3       	breq	.-14     	; 0x121a <__divsf3+0x14>
    1228:	55 23       	and	r21, r21
    122a:	b1 f3       	breq	.-20     	; 0x1218 <__divsf3+0x12>
    122c:	95 1b       	sub	r25, r21
    122e:	55 0b       	sbc	r21, r21
    1230:	bb 27       	eor	r27, r27
    1232:	aa 27       	eor	r26, r26
    1234:	62 17       	cp	r22, r18
    1236:	73 07       	cpc	r23, r19
    1238:	84 07       	cpc	r24, r20
    123a:	38 f0       	brcs	.+14     	; 0x124a <__divsf3_pse+0x26>
    123c:	9f 5f       	subi	r25, 0xFF	; 255
    123e:	5f 4f       	sbci	r21, 0xFF	; 255
    1240:	22 0f       	add	r18, r18
    1242:	33 1f       	adc	r19, r19
    1244:	44 1f       	adc	r20, r20
    1246:	aa 1f       	adc	r26, r26
    1248:	a9 f3       	breq	.-22     	; 0x1234 <__divsf3_pse+0x10>
    124a:	33 d0       	rcall	.+102    	; 0x12b2 <__divsf3_pse+0x8e>
    124c:	0e 2e       	mov	r0, r30
    124e:	3a f0       	brmi	.+14     	; 0x125e <__divsf3_pse+0x3a>
    1250:	e0 e8       	ldi	r30, 0x80	; 128
    1252:	30 d0       	rcall	.+96     	; 0x12b4 <__divsf3_pse+0x90>
    1254:	91 50       	subi	r25, 0x01	; 1
    1256:	50 40       	sbci	r21, 0x00	; 0
    1258:	e6 95       	lsr	r30
    125a:	00 1c       	adc	r0, r0
    125c:	ca f7       	brpl	.-14     	; 0x1250 <__divsf3_pse+0x2c>
    125e:	29 d0       	rcall	.+82     	; 0x12b2 <__divsf3_pse+0x8e>
    1260:	fe 2f       	mov	r31, r30
    1262:	27 d0       	rcall	.+78     	; 0x12b2 <__divsf3_pse+0x8e>
    1264:	66 0f       	add	r22, r22
    1266:	77 1f       	adc	r23, r23
    1268:	88 1f       	adc	r24, r24
    126a:	bb 1f       	adc	r27, r27
    126c:	26 17       	cp	r18, r22
    126e:	37 07       	cpc	r19, r23
    1270:	48 07       	cpc	r20, r24
    1272:	ab 07       	cpc	r26, r27
    1274:	b0 e8       	ldi	r27, 0x80	; 128
    1276:	09 f0       	breq	.+2      	; 0x127a <__divsf3_pse+0x56>
    1278:	bb 0b       	sbc	r27, r27
    127a:	80 2d       	mov	r24, r0
    127c:	bf 01       	movw	r22, r30
    127e:	ff 27       	eor	r31, r31
    1280:	93 58       	subi	r25, 0x83	; 131
    1282:	5f 4f       	sbci	r21, 0xFF	; 255
    1284:	2a f0       	brmi	.+10     	; 0x1290 <__divsf3_pse+0x6c>
    1286:	9e 3f       	cpi	r25, 0xFE	; 254
    1288:	51 05       	cpc	r21, r1
    128a:	68 f0       	brcs	.+26     	; 0x12a6 <__divsf3_pse+0x82>
    128c:	b6 c0       	rjmp	.+364    	; 0x13fa <__fp_inf>
    128e:	40 c1       	rjmp	.+640    	; 0x1510 <__fp_szero>
    1290:	5f 3f       	cpi	r21, 0xFF	; 255
    1292:	ec f3       	brlt	.-6      	; 0x128e <__divsf3_pse+0x6a>
    1294:	98 3e       	cpi	r25, 0xE8	; 232
    1296:	dc f3       	brlt	.-10     	; 0x128e <__divsf3_pse+0x6a>
    1298:	86 95       	lsr	r24
    129a:	77 95       	ror	r23
    129c:	67 95       	ror	r22
    129e:	b7 95       	ror	r27
    12a0:	f7 95       	ror	r31
    12a2:	9f 5f       	subi	r25, 0xFF	; 255
    12a4:	c9 f7       	brne	.-14     	; 0x1298 <__divsf3_pse+0x74>
    12a6:	88 0f       	add	r24, r24
    12a8:	91 1d       	adc	r25, r1
    12aa:	96 95       	lsr	r25
    12ac:	87 95       	ror	r24
    12ae:	97 f9       	bld	r25, 7
    12b0:	08 95       	ret
    12b2:	e1 e0       	ldi	r30, 0x01	; 1
    12b4:	66 0f       	add	r22, r22
    12b6:	77 1f       	adc	r23, r23
    12b8:	88 1f       	adc	r24, r24
    12ba:	bb 1f       	adc	r27, r27
    12bc:	62 17       	cp	r22, r18
    12be:	73 07       	cpc	r23, r19
    12c0:	84 07       	cpc	r24, r20
    12c2:	ba 07       	cpc	r27, r26
    12c4:	20 f0       	brcs	.+8      	; 0x12ce <__divsf3_pse+0xaa>
    12c6:	62 1b       	sub	r22, r18
    12c8:	73 0b       	sbc	r23, r19
    12ca:	84 0b       	sbc	r24, r20
    12cc:	ba 0b       	sbc	r27, r26
    12ce:	ee 1f       	adc	r30, r30
    12d0:	88 f7       	brcc	.-30     	; 0x12b4 <__divsf3_pse+0x90>
    12d2:	e0 95       	com	r30
    12d4:	08 95       	ret

000012d6 <__fixsfsi>:
    12d6:	04 d0       	rcall	.+8      	; 0x12e0 <__fixunssfsi>
    12d8:	68 94       	set
    12da:	b1 11       	cpse	r27, r1
    12dc:	19 c1       	rjmp	.+562    	; 0x1510 <__fp_szero>
    12de:	08 95       	ret

000012e0 <__fixunssfsi>:
    12e0:	e5 d0       	rcall	.+458    	; 0x14ac <__fp_splitA>
    12e2:	88 f0       	brcs	.+34     	; 0x1306 <__fixunssfsi+0x26>
    12e4:	9f 57       	subi	r25, 0x7F	; 127
    12e6:	90 f0       	brcs	.+36     	; 0x130c <__fixunssfsi+0x2c>
    12e8:	b9 2f       	mov	r27, r25
    12ea:	99 27       	eor	r25, r25
    12ec:	b7 51       	subi	r27, 0x17	; 23
    12ee:	a0 f0       	brcs	.+40     	; 0x1318 <__fixunssfsi+0x38>
    12f0:	d1 f0       	breq	.+52     	; 0x1326 <__fixunssfsi+0x46>
    12f2:	66 0f       	add	r22, r22
    12f4:	77 1f       	adc	r23, r23
    12f6:	88 1f       	adc	r24, r24
    12f8:	99 1f       	adc	r25, r25
    12fa:	1a f0       	brmi	.+6      	; 0x1302 <__fixunssfsi+0x22>
    12fc:	ba 95       	dec	r27
    12fe:	c9 f7       	brne	.-14     	; 0x12f2 <__fixunssfsi+0x12>
    1300:	12 c0       	rjmp	.+36     	; 0x1326 <__fixunssfsi+0x46>
    1302:	b1 30       	cpi	r27, 0x01	; 1
    1304:	81 f0       	breq	.+32     	; 0x1326 <__fixunssfsi+0x46>
    1306:	03 d1       	rcall	.+518    	; 0x150e <__fp_zero>
    1308:	b1 e0       	ldi	r27, 0x01	; 1
    130a:	08 95       	ret
    130c:	00 c1       	rjmp	.+512    	; 0x150e <__fp_zero>
    130e:	67 2f       	mov	r22, r23
    1310:	78 2f       	mov	r23, r24
    1312:	88 27       	eor	r24, r24
    1314:	b8 5f       	subi	r27, 0xF8	; 248
    1316:	39 f0       	breq	.+14     	; 0x1326 <__fixunssfsi+0x46>
    1318:	b9 3f       	cpi	r27, 0xF9	; 249
    131a:	cc f3       	brlt	.-14     	; 0x130e <__fixunssfsi+0x2e>
    131c:	86 95       	lsr	r24
    131e:	77 95       	ror	r23
    1320:	67 95       	ror	r22
    1322:	b3 95       	inc	r27
    1324:	d9 f7       	brne	.-10     	; 0x131c <__fixunssfsi+0x3c>
    1326:	3e f4       	brtc	.+14     	; 0x1336 <__fixunssfsi+0x56>
    1328:	90 95       	com	r25
    132a:	80 95       	com	r24
    132c:	70 95       	com	r23
    132e:	61 95       	neg	r22
    1330:	7f 4f       	sbci	r23, 0xFF	; 255
    1332:	8f 4f       	sbci	r24, 0xFF	; 255
    1334:	9f 4f       	sbci	r25, 0xFF	; 255
    1336:	08 95       	ret

00001338 <__floatunsisf>:
    1338:	e8 94       	clt
    133a:	09 c0       	rjmp	.+18     	; 0x134e <__floatsisf+0x12>

0000133c <__floatsisf>:
    133c:	97 fb       	bst	r25, 7
    133e:	3e f4       	brtc	.+14     	; 0x134e <__floatsisf+0x12>
    1340:	90 95       	com	r25
    1342:	80 95       	com	r24
    1344:	70 95       	com	r23
    1346:	61 95       	neg	r22
    1348:	7f 4f       	sbci	r23, 0xFF	; 255
    134a:	8f 4f       	sbci	r24, 0xFF	; 255
    134c:	9f 4f       	sbci	r25, 0xFF	; 255
    134e:	99 23       	and	r25, r25
    1350:	a9 f0       	breq	.+42     	; 0x137c <__floatsisf+0x40>
    1352:	f9 2f       	mov	r31, r25
    1354:	96 e9       	ldi	r25, 0x96	; 150
    1356:	bb 27       	eor	r27, r27
    1358:	93 95       	inc	r25
    135a:	f6 95       	lsr	r31
    135c:	87 95       	ror	r24
    135e:	77 95       	ror	r23
    1360:	67 95       	ror	r22
    1362:	b7 95       	ror	r27
    1364:	f1 11       	cpse	r31, r1
    1366:	f8 cf       	rjmp	.-16     	; 0x1358 <__floatsisf+0x1c>
    1368:	fa f4       	brpl	.+62     	; 0x13a8 <__floatsisf+0x6c>
    136a:	bb 0f       	add	r27, r27
    136c:	11 f4       	brne	.+4      	; 0x1372 <__floatsisf+0x36>
    136e:	60 ff       	sbrs	r22, 0
    1370:	1b c0       	rjmp	.+54     	; 0x13a8 <__floatsisf+0x6c>
    1372:	6f 5f       	subi	r22, 0xFF	; 255
    1374:	7f 4f       	sbci	r23, 0xFF	; 255
    1376:	8f 4f       	sbci	r24, 0xFF	; 255
    1378:	9f 4f       	sbci	r25, 0xFF	; 255
    137a:	16 c0       	rjmp	.+44     	; 0x13a8 <__floatsisf+0x6c>
    137c:	88 23       	and	r24, r24
    137e:	11 f0       	breq	.+4      	; 0x1384 <__floatsisf+0x48>
    1380:	96 e9       	ldi	r25, 0x96	; 150
    1382:	11 c0       	rjmp	.+34     	; 0x13a6 <__floatsisf+0x6a>
    1384:	77 23       	and	r23, r23
    1386:	21 f0       	breq	.+8      	; 0x1390 <__floatsisf+0x54>
    1388:	9e e8       	ldi	r25, 0x8E	; 142
    138a:	87 2f       	mov	r24, r23
    138c:	76 2f       	mov	r23, r22
    138e:	05 c0       	rjmp	.+10     	; 0x139a <__floatsisf+0x5e>
    1390:	66 23       	and	r22, r22
    1392:	71 f0       	breq	.+28     	; 0x13b0 <__floatsisf+0x74>
    1394:	96 e8       	ldi	r25, 0x86	; 134
    1396:	86 2f       	mov	r24, r22
    1398:	70 e0       	ldi	r23, 0x00	; 0
    139a:	60 e0       	ldi	r22, 0x00	; 0
    139c:	2a f0       	brmi	.+10     	; 0x13a8 <__floatsisf+0x6c>
    139e:	9a 95       	dec	r25
    13a0:	66 0f       	add	r22, r22
    13a2:	77 1f       	adc	r23, r23
    13a4:	88 1f       	adc	r24, r24
    13a6:	da f7       	brpl	.-10     	; 0x139e <__floatsisf+0x62>
    13a8:	88 0f       	add	r24, r24
    13aa:	96 95       	lsr	r25
    13ac:	87 95       	ror	r24
    13ae:	97 f9       	bld	r25, 7
    13b0:	08 95       	ret

000013b2 <__fp_cmp>:
    13b2:	99 0f       	add	r25, r25
    13b4:	00 08       	sbc	r0, r0
    13b6:	55 0f       	add	r21, r21
    13b8:	aa 0b       	sbc	r26, r26
    13ba:	e0 e8       	ldi	r30, 0x80	; 128
    13bc:	fe ef       	ldi	r31, 0xFE	; 254
    13be:	16 16       	cp	r1, r22
    13c0:	17 06       	cpc	r1, r23
    13c2:	e8 07       	cpc	r30, r24
    13c4:	f9 07       	cpc	r31, r25
    13c6:	c0 f0       	brcs	.+48     	; 0x13f8 <__fp_cmp+0x46>
    13c8:	12 16       	cp	r1, r18
    13ca:	13 06       	cpc	r1, r19
    13cc:	e4 07       	cpc	r30, r20
    13ce:	f5 07       	cpc	r31, r21
    13d0:	98 f0       	brcs	.+38     	; 0x13f8 <__fp_cmp+0x46>
    13d2:	62 1b       	sub	r22, r18
    13d4:	73 0b       	sbc	r23, r19
    13d6:	84 0b       	sbc	r24, r20
    13d8:	95 0b       	sbc	r25, r21
    13da:	39 f4       	brne	.+14     	; 0x13ea <__fp_cmp+0x38>
    13dc:	0a 26       	eor	r0, r26
    13de:	61 f0       	breq	.+24     	; 0x13f8 <__fp_cmp+0x46>
    13e0:	23 2b       	or	r18, r19
    13e2:	24 2b       	or	r18, r20
    13e4:	25 2b       	or	r18, r21
    13e6:	21 f4       	brne	.+8      	; 0x13f0 <__fp_cmp+0x3e>
    13e8:	08 95       	ret
    13ea:	0a 26       	eor	r0, r26
    13ec:	09 f4       	brne	.+2      	; 0x13f0 <__fp_cmp+0x3e>
    13ee:	a1 40       	sbci	r26, 0x01	; 1
    13f0:	a6 95       	lsr	r26
    13f2:	8f ef       	ldi	r24, 0xFF	; 255
    13f4:	81 1d       	adc	r24, r1
    13f6:	81 1d       	adc	r24, r1
    13f8:	08 95       	ret

000013fa <__fp_inf>:
    13fa:	97 f9       	bld	r25, 7
    13fc:	9f 67       	ori	r25, 0x7F	; 127
    13fe:	80 e8       	ldi	r24, 0x80	; 128
    1400:	70 e0       	ldi	r23, 0x00	; 0
    1402:	60 e0       	ldi	r22, 0x00	; 0
    1404:	08 95       	ret

00001406 <__fp_mintl>:
    1406:	88 23       	and	r24, r24
    1408:	71 f4       	brne	.+28     	; 0x1426 <__fp_mintl+0x20>
    140a:	77 23       	and	r23, r23
    140c:	21 f0       	breq	.+8      	; 0x1416 <__fp_mintl+0x10>
    140e:	98 50       	subi	r25, 0x08	; 8
    1410:	87 2b       	or	r24, r23
    1412:	76 2f       	mov	r23, r22
    1414:	07 c0       	rjmp	.+14     	; 0x1424 <__fp_mintl+0x1e>
    1416:	66 23       	and	r22, r22
    1418:	11 f4       	brne	.+4      	; 0x141e <__fp_mintl+0x18>
    141a:	99 27       	eor	r25, r25
    141c:	0d c0       	rjmp	.+26     	; 0x1438 <__fp_mintl+0x32>
    141e:	90 51       	subi	r25, 0x10	; 16
    1420:	86 2b       	or	r24, r22
    1422:	70 e0       	ldi	r23, 0x00	; 0
    1424:	60 e0       	ldi	r22, 0x00	; 0
    1426:	2a f0       	brmi	.+10     	; 0x1432 <__fp_mintl+0x2c>
    1428:	9a 95       	dec	r25
    142a:	66 0f       	add	r22, r22
    142c:	77 1f       	adc	r23, r23
    142e:	88 1f       	adc	r24, r24
    1430:	da f7       	brpl	.-10     	; 0x1428 <__fp_mintl+0x22>
    1432:	88 0f       	add	r24, r24
    1434:	96 95       	lsr	r25
    1436:	87 95       	ror	r24
    1438:	97 f9       	bld	r25, 7
    143a:	08 95       	ret

0000143c <__fp_mpack>:
    143c:	9f 3f       	cpi	r25, 0xFF	; 255
    143e:	31 f0       	breq	.+12     	; 0x144c <__fp_mpack_finite+0xc>

00001440 <__fp_mpack_finite>:
    1440:	91 50       	subi	r25, 0x01	; 1
    1442:	20 f4       	brcc	.+8      	; 0x144c <__fp_mpack_finite+0xc>
    1444:	87 95       	ror	r24
    1446:	77 95       	ror	r23
    1448:	67 95       	ror	r22
    144a:	b7 95       	ror	r27
    144c:	88 0f       	add	r24, r24
    144e:	91 1d       	adc	r25, r1
    1450:	96 95       	lsr	r25
    1452:	87 95       	ror	r24
    1454:	97 f9       	bld	r25, 7
    1456:	08 95       	ret

00001458 <__fp_nan>:
    1458:	9f ef       	ldi	r25, 0xFF	; 255
    145a:	80 ec       	ldi	r24, 0xC0	; 192
    145c:	08 95       	ret

0000145e <__fp_pscA>:
    145e:	00 24       	eor	r0, r0
    1460:	0a 94       	dec	r0
    1462:	16 16       	cp	r1, r22
    1464:	17 06       	cpc	r1, r23
    1466:	18 06       	cpc	r1, r24
    1468:	09 06       	cpc	r0, r25
    146a:	08 95       	ret

0000146c <__fp_pscB>:
    146c:	00 24       	eor	r0, r0
    146e:	0a 94       	dec	r0
    1470:	12 16       	cp	r1, r18
    1472:	13 06       	cpc	r1, r19
    1474:	14 06       	cpc	r1, r20
    1476:	05 06       	cpc	r0, r21
    1478:	08 95       	ret

0000147a <__fp_round>:
    147a:	09 2e       	mov	r0, r25
    147c:	03 94       	inc	r0
    147e:	00 0c       	add	r0, r0
    1480:	11 f4       	brne	.+4      	; 0x1486 <__fp_round+0xc>
    1482:	88 23       	and	r24, r24
    1484:	52 f0       	brmi	.+20     	; 0x149a <__fp_round+0x20>
    1486:	bb 0f       	add	r27, r27
    1488:	40 f4       	brcc	.+16     	; 0x149a <__fp_round+0x20>
    148a:	bf 2b       	or	r27, r31
    148c:	11 f4       	brne	.+4      	; 0x1492 <__fp_round+0x18>
    148e:	60 ff       	sbrs	r22, 0
    1490:	04 c0       	rjmp	.+8      	; 0x149a <__fp_round+0x20>
    1492:	6f 5f       	subi	r22, 0xFF	; 255
    1494:	7f 4f       	sbci	r23, 0xFF	; 255
    1496:	8f 4f       	sbci	r24, 0xFF	; 255
    1498:	9f 4f       	sbci	r25, 0xFF	; 255
    149a:	08 95       	ret

0000149c <__fp_split3>:
    149c:	57 fd       	sbrc	r21, 7
    149e:	90 58       	subi	r25, 0x80	; 128
    14a0:	44 0f       	add	r20, r20
    14a2:	55 1f       	adc	r21, r21
    14a4:	59 f0       	breq	.+22     	; 0x14bc <__fp_splitA+0x10>
    14a6:	5f 3f       	cpi	r21, 0xFF	; 255
    14a8:	71 f0       	breq	.+28     	; 0x14c6 <__fp_splitA+0x1a>
    14aa:	47 95       	ror	r20

000014ac <__fp_splitA>:
    14ac:	88 0f       	add	r24, r24
    14ae:	97 fb       	bst	r25, 7
    14b0:	99 1f       	adc	r25, r25
    14b2:	61 f0       	breq	.+24     	; 0x14cc <__fp_splitA+0x20>
    14b4:	9f 3f       	cpi	r25, 0xFF	; 255
    14b6:	79 f0       	breq	.+30     	; 0x14d6 <__fp_splitA+0x2a>
    14b8:	87 95       	ror	r24
    14ba:	08 95       	ret
    14bc:	12 16       	cp	r1, r18
    14be:	13 06       	cpc	r1, r19
    14c0:	14 06       	cpc	r1, r20
    14c2:	55 1f       	adc	r21, r21
    14c4:	f2 cf       	rjmp	.-28     	; 0x14aa <__fp_split3+0xe>
    14c6:	46 95       	lsr	r20
    14c8:	f1 df       	rcall	.-30     	; 0x14ac <__fp_splitA>
    14ca:	08 c0       	rjmp	.+16     	; 0x14dc <__fp_splitA+0x30>
    14cc:	16 16       	cp	r1, r22
    14ce:	17 06       	cpc	r1, r23
    14d0:	18 06       	cpc	r1, r24
    14d2:	99 1f       	adc	r25, r25
    14d4:	f1 cf       	rjmp	.-30     	; 0x14b8 <__fp_splitA+0xc>
    14d6:	86 95       	lsr	r24
    14d8:	71 05       	cpc	r23, r1
    14da:	61 05       	cpc	r22, r1
    14dc:	08 94       	sec
    14de:	08 95       	ret

000014e0 <__fp_trunc>:
    14e0:	e5 df       	rcall	.-54     	; 0x14ac <__fp_splitA>
    14e2:	a0 f0       	brcs	.+40     	; 0x150c <__fp_trunc+0x2c>
    14e4:	be e7       	ldi	r27, 0x7E	; 126
    14e6:	b9 17       	cp	r27, r25
    14e8:	88 f4       	brcc	.+34     	; 0x150c <__fp_trunc+0x2c>
    14ea:	bb 27       	eor	r27, r27
    14ec:	9f 38       	cpi	r25, 0x8F	; 143
    14ee:	60 f4       	brcc	.+24     	; 0x1508 <__fp_trunc+0x28>
    14f0:	16 16       	cp	r1, r22
    14f2:	b1 1d       	adc	r27, r1
    14f4:	67 2f       	mov	r22, r23
    14f6:	78 2f       	mov	r23, r24
    14f8:	88 27       	eor	r24, r24
    14fa:	98 5f       	subi	r25, 0xF8	; 248
    14fc:	f7 cf       	rjmp	.-18     	; 0x14ec <__fp_trunc+0xc>
    14fe:	86 95       	lsr	r24
    1500:	77 95       	ror	r23
    1502:	67 95       	ror	r22
    1504:	b1 1d       	adc	r27, r1
    1506:	93 95       	inc	r25
    1508:	96 39       	cpi	r25, 0x96	; 150
    150a:	c8 f3       	brcs	.-14     	; 0x14fe <__fp_trunc+0x1e>
    150c:	08 95       	ret

0000150e <__fp_zero>:
    150e:	e8 94       	clt

00001510 <__fp_szero>:
    1510:	bb 27       	eor	r27, r27
    1512:	66 27       	eor	r22, r22
    1514:	77 27       	eor	r23, r23
    1516:	cb 01       	movw	r24, r22
    1518:	97 f9       	bld	r25, 7
    151a:	08 95       	ret

0000151c <__gesf2>:
    151c:	4a df       	rcall	.-364    	; 0x13b2 <__fp_cmp>
    151e:	08 f4       	brcc	.+2      	; 0x1522 <__gesf2+0x6>
    1520:	8f ef       	ldi	r24, 0xFF	; 255
    1522:	08 95       	ret

00001524 <__mulsf3>:
    1524:	0b d0       	rcall	.+22     	; 0x153c <__mulsf3x>
    1526:	a9 cf       	rjmp	.-174    	; 0x147a <__fp_round>
    1528:	9a df       	rcall	.-204    	; 0x145e <__fp_pscA>
    152a:	28 f0       	brcs	.+10     	; 0x1536 <__mulsf3+0x12>
    152c:	9f df       	rcall	.-194    	; 0x146c <__fp_pscB>
    152e:	18 f0       	brcs	.+6      	; 0x1536 <__mulsf3+0x12>
    1530:	95 23       	and	r25, r21
    1532:	09 f0       	breq	.+2      	; 0x1536 <__mulsf3+0x12>
    1534:	62 cf       	rjmp	.-316    	; 0x13fa <__fp_inf>
    1536:	90 cf       	rjmp	.-224    	; 0x1458 <__fp_nan>
    1538:	11 24       	eor	r1, r1
    153a:	ea cf       	rjmp	.-44     	; 0x1510 <__fp_szero>

0000153c <__mulsf3x>:
    153c:	af df       	rcall	.-162    	; 0x149c <__fp_split3>
    153e:	a0 f3       	brcs	.-24     	; 0x1528 <__mulsf3+0x4>

00001540 <__mulsf3_pse>:
    1540:	95 9f       	mul	r25, r21
    1542:	d1 f3       	breq	.-12     	; 0x1538 <__mulsf3+0x14>
    1544:	95 0f       	add	r25, r21
    1546:	50 e0       	ldi	r21, 0x00	; 0
    1548:	55 1f       	adc	r21, r21
    154a:	62 9f       	mul	r22, r18
    154c:	f0 01       	movw	r30, r0
    154e:	72 9f       	mul	r23, r18
    1550:	bb 27       	eor	r27, r27
    1552:	f0 0d       	add	r31, r0
    1554:	b1 1d       	adc	r27, r1
    1556:	63 9f       	mul	r22, r19
    1558:	aa 27       	eor	r26, r26
    155a:	f0 0d       	add	r31, r0
    155c:	b1 1d       	adc	r27, r1
    155e:	aa 1f       	adc	r26, r26
    1560:	64 9f       	mul	r22, r20
    1562:	66 27       	eor	r22, r22
    1564:	b0 0d       	add	r27, r0
    1566:	a1 1d       	adc	r26, r1
    1568:	66 1f       	adc	r22, r22
    156a:	82 9f       	mul	r24, r18
    156c:	22 27       	eor	r18, r18
    156e:	b0 0d       	add	r27, r0
    1570:	a1 1d       	adc	r26, r1
    1572:	62 1f       	adc	r22, r18
    1574:	73 9f       	mul	r23, r19
    1576:	b0 0d       	add	r27, r0
    1578:	a1 1d       	adc	r26, r1
    157a:	62 1f       	adc	r22, r18
    157c:	83 9f       	mul	r24, r19
    157e:	a0 0d       	add	r26, r0
    1580:	61 1d       	adc	r22, r1
    1582:	22 1f       	adc	r18, r18
    1584:	74 9f       	mul	r23, r20
    1586:	33 27       	eor	r19, r19
    1588:	a0 0d       	add	r26, r0
    158a:	61 1d       	adc	r22, r1
    158c:	23 1f       	adc	r18, r19
    158e:	84 9f       	mul	r24, r20
    1590:	60 0d       	add	r22, r0
    1592:	21 1d       	adc	r18, r1
    1594:	82 2f       	mov	r24, r18
    1596:	76 2f       	mov	r23, r22
    1598:	6a 2f       	mov	r22, r26
    159a:	11 24       	eor	r1, r1
    159c:	9f 57       	subi	r25, 0x7F	; 127
    159e:	50 40       	sbci	r21, 0x00	; 0
    15a0:	8a f0       	brmi	.+34     	; 0x15c4 <__mulsf3_pse+0x84>
    15a2:	e1 f0       	breq	.+56     	; 0x15dc <__mulsf3_pse+0x9c>
    15a4:	88 23       	and	r24, r24
    15a6:	4a f0       	brmi	.+18     	; 0x15ba <__mulsf3_pse+0x7a>
    15a8:	ee 0f       	add	r30, r30
    15aa:	ff 1f       	adc	r31, r31
    15ac:	bb 1f       	adc	r27, r27
    15ae:	66 1f       	adc	r22, r22
    15b0:	77 1f       	adc	r23, r23
    15b2:	88 1f       	adc	r24, r24
    15b4:	91 50       	subi	r25, 0x01	; 1
    15b6:	50 40       	sbci	r21, 0x00	; 0
    15b8:	a9 f7       	brne	.-22     	; 0x15a4 <__mulsf3_pse+0x64>
    15ba:	9e 3f       	cpi	r25, 0xFE	; 254
    15bc:	51 05       	cpc	r21, r1
    15be:	70 f0       	brcs	.+28     	; 0x15dc <__mulsf3_pse+0x9c>
    15c0:	1c cf       	rjmp	.-456    	; 0x13fa <__fp_inf>
    15c2:	a6 cf       	rjmp	.-180    	; 0x1510 <__fp_szero>
    15c4:	5f 3f       	cpi	r21, 0xFF	; 255
    15c6:	ec f3       	brlt	.-6      	; 0x15c2 <__mulsf3_pse+0x82>
    15c8:	98 3e       	cpi	r25, 0xE8	; 232
    15ca:	dc f3       	brlt	.-10     	; 0x15c2 <__mulsf3_pse+0x82>
    15cc:	86 95       	lsr	r24
    15ce:	77 95       	ror	r23
    15d0:	67 95       	ror	r22
    15d2:	b7 95       	ror	r27
    15d4:	f7 95       	ror	r31
    15d6:	e7 95       	ror	r30
    15d8:	9f 5f       	subi	r25, 0xFF	; 255
    15da:	c1 f7       	brne	.-16     	; 0x15cc <__mulsf3_pse+0x8c>
    15dc:	fe 2b       	or	r31, r30
    15de:	88 0f       	add	r24, r24
    15e0:	91 1d       	adc	r25, r1
    15e2:	96 95       	lsr	r25
    15e4:	87 95       	ror	r24
    15e6:	97 f9       	bld	r25, 7
    15e8:	08 95       	ret

000015ea <fprintf>:
    15ea:	a0 e0       	ldi	r26, 0x00	; 0
    15ec:	b0 e0       	ldi	r27, 0x00	; 0
    15ee:	ea ef       	ldi	r30, 0xFA	; 250
    15f0:	fa e0       	ldi	r31, 0x0A	; 10
    15f2:	83 c2       	rjmp	.+1286   	; 0x1afa <__prologue_saves__+0x20>
    15f4:	ae 01       	movw	r20, r28
    15f6:	47 5f       	subi	r20, 0xF7	; 247
    15f8:	5f 4f       	sbci	r21, 0xFF	; 255
    15fa:	6f 81       	ldd	r22, Y+7	; 0x07
    15fc:	78 85       	ldd	r23, Y+8	; 0x08
    15fe:	8d 81       	ldd	r24, Y+5	; 0x05
    1600:	9e 81       	ldd	r25, Y+6	; 0x06
    1602:	02 d0       	rcall	.+4      	; 0x1608 <vfprintf>
    1604:	e2 e0       	ldi	r30, 0x02	; 2
    1606:	95 c2       	rjmp	.+1322   	; 0x1b32 <__epilogue_restores__+0x20>

00001608 <vfprintf>:
    1608:	ac e0       	ldi	r26, 0x0C	; 12
    160a:	b0 e0       	ldi	r27, 0x00	; 0
    160c:	e9 e0       	ldi	r30, 0x09	; 9
    160e:	fb e0       	ldi	r31, 0x0B	; 11
    1610:	64 c2       	rjmp	.+1224   	; 0x1ada <__prologue_saves__>
    1612:	7c 01       	movw	r14, r24
    1614:	6b 01       	movw	r12, r22
    1616:	8a 01       	movw	r16, r20
    1618:	fc 01       	movw	r30, r24
    161a:	17 82       	std	Z+7, r1	; 0x07
    161c:	16 82       	std	Z+6, r1	; 0x06
    161e:	83 81       	ldd	r24, Z+3	; 0x03
    1620:	81 ff       	sbrs	r24, 1
    1622:	b0 c1       	rjmp	.+864    	; 0x1984 <vfprintf+0x37c>
    1624:	ce 01       	movw	r24, r28
    1626:	01 96       	adiw	r24, 0x01	; 1
    1628:	4c 01       	movw	r8, r24
    162a:	f7 01       	movw	r30, r14
    162c:	93 81       	ldd	r25, Z+3	; 0x03
    162e:	f6 01       	movw	r30, r12
    1630:	93 fd       	sbrc	r25, 3
    1632:	85 91       	lpm	r24, Z+
    1634:	93 ff       	sbrs	r25, 3
    1636:	81 91       	ld	r24, Z+
    1638:	6f 01       	movw	r12, r30
    163a:	88 23       	and	r24, r24
    163c:	09 f4       	brne	.+2      	; 0x1640 <vfprintf+0x38>
    163e:	9e c1       	rjmp	.+828    	; 0x197c <vfprintf+0x374>
    1640:	85 32       	cpi	r24, 0x25	; 37
    1642:	39 f4       	brne	.+14     	; 0x1652 <vfprintf+0x4a>
    1644:	93 fd       	sbrc	r25, 3
    1646:	85 91       	lpm	r24, Z+
    1648:	93 ff       	sbrs	r25, 3
    164a:	81 91       	ld	r24, Z+
    164c:	6f 01       	movw	r12, r30
    164e:	85 32       	cpi	r24, 0x25	; 37
    1650:	21 f4       	brne	.+8      	; 0x165a <vfprintf+0x52>
    1652:	b7 01       	movw	r22, r14
    1654:	90 e0       	ldi	r25, 0x00	; 0
    1656:	b1 d1       	rcall	.+866    	; 0x19ba <fputc>
    1658:	e8 cf       	rjmp	.-48     	; 0x162a <vfprintf+0x22>
    165a:	51 2c       	mov	r5, r1
    165c:	31 2c       	mov	r3, r1
    165e:	20 e0       	ldi	r18, 0x00	; 0
    1660:	20 32       	cpi	r18, 0x20	; 32
    1662:	a0 f4       	brcc	.+40     	; 0x168c <vfprintf+0x84>
    1664:	8b 32       	cpi	r24, 0x2B	; 43
    1666:	69 f0       	breq	.+26     	; 0x1682 <vfprintf+0x7a>
    1668:	30 f4       	brcc	.+12     	; 0x1676 <vfprintf+0x6e>
    166a:	80 32       	cpi	r24, 0x20	; 32
    166c:	59 f0       	breq	.+22     	; 0x1684 <vfprintf+0x7c>
    166e:	83 32       	cpi	r24, 0x23	; 35
    1670:	69 f4       	brne	.+26     	; 0x168c <vfprintf+0x84>
    1672:	20 61       	ori	r18, 0x10	; 16
    1674:	2c c0       	rjmp	.+88     	; 0x16ce <vfprintf+0xc6>
    1676:	8d 32       	cpi	r24, 0x2D	; 45
    1678:	39 f0       	breq	.+14     	; 0x1688 <vfprintf+0x80>
    167a:	80 33       	cpi	r24, 0x30	; 48
    167c:	39 f4       	brne	.+14     	; 0x168c <vfprintf+0x84>
    167e:	21 60       	ori	r18, 0x01	; 1
    1680:	26 c0       	rjmp	.+76     	; 0x16ce <vfprintf+0xc6>
    1682:	22 60       	ori	r18, 0x02	; 2
    1684:	24 60       	ori	r18, 0x04	; 4
    1686:	23 c0       	rjmp	.+70     	; 0x16ce <vfprintf+0xc6>
    1688:	28 60       	ori	r18, 0x08	; 8
    168a:	21 c0       	rjmp	.+66     	; 0x16ce <vfprintf+0xc6>
    168c:	27 fd       	sbrc	r18, 7
    168e:	27 c0       	rjmp	.+78     	; 0x16de <vfprintf+0xd6>
    1690:	30 ed       	ldi	r19, 0xD0	; 208
    1692:	38 0f       	add	r19, r24
    1694:	3a 30       	cpi	r19, 0x0A	; 10
    1696:	78 f4       	brcc	.+30     	; 0x16b6 <vfprintf+0xae>
    1698:	26 ff       	sbrs	r18, 6
    169a:	06 c0       	rjmp	.+12     	; 0x16a8 <vfprintf+0xa0>
    169c:	fa e0       	ldi	r31, 0x0A	; 10
    169e:	5f 9e       	mul	r5, r31
    16a0:	30 0d       	add	r19, r0
    16a2:	11 24       	eor	r1, r1
    16a4:	53 2e       	mov	r5, r19
    16a6:	13 c0       	rjmp	.+38     	; 0x16ce <vfprintf+0xc6>
    16a8:	8a e0       	ldi	r24, 0x0A	; 10
    16aa:	38 9e       	mul	r3, r24
    16ac:	30 0d       	add	r19, r0
    16ae:	11 24       	eor	r1, r1
    16b0:	33 2e       	mov	r3, r19
    16b2:	20 62       	ori	r18, 0x20	; 32
    16b4:	0c c0       	rjmp	.+24     	; 0x16ce <vfprintf+0xc6>
    16b6:	8e 32       	cpi	r24, 0x2E	; 46
    16b8:	21 f4       	brne	.+8      	; 0x16c2 <vfprintf+0xba>
    16ba:	26 fd       	sbrc	r18, 6
    16bc:	5f c1       	rjmp	.+702    	; 0x197c <vfprintf+0x374>
    16be:	20 64       	ori	r18, 0x40	; 64
    16c0:	06 c0       	rjmp	.+12     	; 0x16ce <vfprintf+0xc6>
    16c2:	8c 36       	cpi	r24, 0x6C	; 108
    16c4:	11 f4       	brne	.+4      	; 0x16ca <vfprintf+0xc2>
    16c6:	20 68       	ori	r18, 0x80	; 128
    16c8:	02 c0       	rjmp	.+4      	; 0x16ce <vfprintf+0xc6>
    16ca:	88 36       	cpi	r24, 0x68	; 104
    16cc:	41 f4       	brne	.+16     	; 0x16de <vfprintf+0xd6>
    16ce:	f6 01       	movw	r30, r12
    16d0:	93 fd       	sbrc	r25, 3
    16d2:	85 91       	lpm	r24, Z+
    16d4:	93 ff       	sbrs	r25, 3
    16d6:	81 91       	ld	r24, Z+
    16d8:	6f 01       	movw	r12, r30
    16da:	81 11       	cpse	r24, r1
    16dc:	c1 cf       	rjmp	.-126    	; 0x1660 <vfprintf+0x58>
    16de:	98 2f       	mov	r25, r24
    16e0:	9f 7d       	andi	r25, 0xDF	; 223
    16e2:	95 54       	subi	r25, 0x45	; 69
    16e4:	93 30       	cpi	r25, 0x03	; 3
    16e6:	28 f4       	brcc	.+10     	; 0x16f2 <vfprintf+0xea>
    16e8:	0c 5f       	subi	r16, 0xFC	; 252
    16ea:	1f 4f       	sbci	r17, 0xFF	; 255
    16ec:	ff e3       	ldi	r31, 0x3F	; 63
    16ee:	f9 83       	std	Y+1, r31	; 0x01
    16f0:	0d c0       	rjmp	.+26     	; 0x170c <vfprintf+0x104>
    16f2:	83 36       	cpi	r24, 0x63	; 99
    16f4:	31 f0       	breq	.+12     	; 0x1702 <vfprintf+0xfa>
    16f6:	83 37       	cpi	r24, 0x73	; 115
    16f8:	71 f0       	breq	.+28     	; 0x1716 <vfprintf+0x10e>
    16fa:	83 35       	cpi	r24, 0x53	; 83
    16fc:	09 f0       	breq	.+2      	; 0x1700 <vfprintf+0xf8>
    16fe:	57 c0       	rjmp	.+174    	; 0x17ae <vfprintf+0x1a6>
    1700:	21 c0       	rjmp	.+66     	; 0x1744 <vfprintf+0x13c>
    1702:	f8 01       	movw	r30, r16
    1704:	80 81       	ld	r24, Z
    1706:	89 83       	std	Y+1, r24	; 0x01
    1708:	0e 5f       	subi	r16, 0xFE	; 254
    170a:	1f 4f       	sbci	r17, 0xFF	; 255
    170c:	44 24       	eor	r4, r4
    170e:	43 94       	inc	r4
    1710:	51 2c       	mov	r5, r1
    1712:	54 01       	movw	r10, r8
    1714:	14 c0       	rjmp	.+40     	; 0x173e <vfprintf+0x136>
    1716:	38 01       	movw	r6, r16
    1718:	f2 e0       	ldi	r31, 0x02	; 2
    171a:	6f 0e       	add	r6, r31
    171c:	71 1c       	adc	r7, r1
    171e:	f8 01       	movw	r30, r16
    1720:	a0 80       	ld	r10, Z
    1722:	b1 80       	ldd	r11, Z+1	; 0x01
    1724:	26 ff       	sbrs	r18, 6
    1726:	03 c0       	rjmp	.+6      	; 0x172e <vfprintf+0x126>
    1728:	65 2d       	mov	r22, r5
    172a:	70 e0       	ldi	r23, 0x00	; 0
    172c:	02 c0       	rjmp	.+4      	; 0x1732 <vfprintf+0x12a>
    172e:	6f ef       	ldi	r22, 0xFF	; 255
    1730:	7f ef       	ldi	r23, 0xFF	; 255
    1732:	c5 01       	movw	r24, r10
    1734:	2c 87       	std	Y+12, r18	; 0x0c
    1736:	36 d1       	rcall	.+620    	; 0x19a4 <strnlen>
    1738:	2c 01       	movw	r4, r24
    173a:	83 01       	movw	r16, r6
    173c:	2c 85       	ldd	r18, Y+12	; 0x0c
    173e:	2f 77       	andi	r18, 0x7F	; 127
    1740:	22 2e       	mov	r2, r18
    1742:	16 c0       	rjmp	.+44     	; 0x1770 <vfprintf+0x168>
    1744:	38 01       	movw	r6, r16
    1746:	f2 e0       	ldi	r31, 0x02	; 2
    1748:	6f 0e       	add	r6, r31
    174a:	71 1c       	adc	r7, r1
    174c:	f8 01       	movw	r30, r16
    174e:	a0 80       	ld	r10, Z
    1750:	b1 80       	ldd	r11, Z+1	; 0x01
    1752:	26 ff       	sbrs	r18, 6
    1754:	03 c0       	rjmp	.+6      	; 0x175c <vfprintf+0x154>
    1756:	65 2d       	mov	r22, r5
    1758:	70 e0       	ldi	r23, 0x00	; 0
    175a:	02 c0       	rjmp	.+4      	; 0x1760 <vfprintf+0x158>
    175c:	6f ef       	ldi	r22, 0xFF	; 255
    175e:	7f ef       	ldi	r23, 0xFF	; 255
    1760:	c5 01       	movw	r24, r10
    1762:	2c 87       	std	Y+12, r18	; 0x0c
    1764:	14 d1       	rcall	.+552    	; 0x198e <strnlen_P>
    1766:	2c 01       	movw	r4, r24
    1768:	2c 85       	ldd	r18, Y+12	; 0x0c
    176a:	20 68       	ori	r18, 0x80	; 128
    176c:	22 2e       	mov	r2, r18
    176e:	83 01       	movw	r16, r6
    1770:	23 fc       	sbrc	r2, 3
    1772:	19 c0       	rjmp	.+50     	; 0x17a6 <vfprintf+0x19e>
    1774:	83 2d       	mov	r24, r3
    1776:	90 e0       	ldi	r25, 0x00	; 0
    1778:	48 16       	cp	r4, r24
    177a:	59 06       	cpc	r5, r25
    177c:	a0 f4       	brcc	.+40     	; 0x17a6 <vfprintf+0x19e>
    177e:	b7 01       	movw	r22, r14
    1780:	80 e2       	ldi	r24, 0x20	; 32
    1782:	90 e0       	ldi	r25, 0x00	; 0
    1784:	1a d1       	rcall	.+564    	; 0x19ba <fputc>
    1786:	3a 94       	dec	r3
    1788:	f5 cf       	rjmp	.-22     	; 0x1774 <vfprintf+0x16c>
    178a:	f5 01       	movw	r30, r10
    178c:	27 fc       	sbrc	r2, 7
    178e:	85 91       	lpm	r24, Z+
    1790:	27 fe       	sbrs	r2, 7
    1792:	81 91       	ld	r24, Z+
    1794:	5f 01       	movw	r10, r30
    1796:	b7 01       	movw	r22, r14
    1798:	90 e0       	ldi	r25, 0x00	; 0
    179a:	0f d1       	rcall	.+542    	; 0x19ba <fputc>
    179c:	31 10       	cpse	r3, r1
    179e:	3a 94       	dec	r3
    17a0:	f1 e0       	ldi	r31, 0x01	; 1
    17a2:	4f 1a       	sub	r4, r31
    17a4:	51 08       	sbc	r5, r1
    17a6:	41 14       	cp	r4, r1
    17a8:	51 04       	cpc	r5, r1
    17aa:	79 f7       	brne	.-34     	; 0x178a <vfprintf+0x182>
    17ac:	de c0       	rjmp	.+444    	; 0x196a <vfprintf+0x362>
    17ae:	84 36       	cpi	r24, 0x64	; 100
    17b0:	11 f0       	breq	.+4      	; 0x17b6 <vfprintf+0x1ae>
    17b2:	89 36       	cpi	r24, 0x69	; 105
    17b4:	31 f5       	brne	.+76     	; 0x1802 <vfprintf+0x1fa>
    17b6:	f8 01       	movw	r30, r16
    17b8:	27 ff       	sbrs	r18, 7
    17ba:	07 c0       	rjmp	.+14     	; 0x17ca <vfprintf+0x1c2>
    17bc:	60 81       	ld	r22, Z
    17be:	71 81       	ldd	r23, Z+1	; 0x01
    17c0:	82 81       	ldd	r24, Z+2	; 0x02
    17c2:	93 81       	ldd	r25, Z+3	; 0x03
    17c4:	0c 5f       	subi	r16, 0xFC	; 252
    17c6:	1f 4f       	sbci	r17, 0xFF	; 255
    17c8:	08 c0       	rjmp	.+16     	; 0x17da <vfprintf+0x1d2>
    17ca:	60 81       	ld	r22, Z
    17cc:	71 81       	ldd	r23, Z+1	; 0x01
    17ce:	88 27       	eor	r24, r24
    17d0:	77 fd       	sbrc	r23, 7
    17d2:	80 95       	com	r24
    17d4:	98 2f       	mov	r25, r24
    17d6:	0e 5f       	subi	r16, 0xFE	; 254
    17d8:	1f 4f       	sbci	r17, 0xFF	; 255
    17da:	2f 76       	andi	r18, 0x6F	; 111
    17dc:	b2 2e       	mov	r11, r18
    17de:	97 ff       	sbrs	r25, 7
    17e0:	09 c0       	rjmp	.+18     	; 0x17f4 <vfprintf+0x1ec>
    17e2:	90 95       	com	r25
    17e4:	80 95       	com	r24
    17e6:	70 95       	com	r23
    17e8:	61 95       	neg	r22
    17ea:	7f 4f       	sbci	r23, 0xFF	; 255
    17ec:	8f 4f       	sbci	r24, 0xFF	; 255
    17ee:	9f 4f       	sbci	r25, 0xFF	; 255
    17f0:	20 68       	ori	r18, 0x80	; 128
    17f2:	b2 2e       	mov	r11, r18
    17f4:	2a e0       	ldi	r18, 0x0A	; 10
    17f6:	30 e0       	ldi	r19, 0x00	; 0
    17f8:	a4 01       	movw	r20, r8
    17fa:	11 d1       	rcall	.+546    	; 0x1a1e <__ultoa_invert>
    17fc:	a8 2e       	mov	r10, r24
    17fe:	a8 18       	sub	r10, r8
    1800:	43 c0       	rjmp	.+134    	; 0x1888 <vfprintf+0x280>
    1802:	85 37       	cpi	r24, 0x75	; 117
    1804:	29 f4       	brne	.+10     	; 0x1810 <vfprintf+0x208>
    1806:	2f 7e       	andi	r18, 0xEF	; 239
    1808:	b2 2e       	mov	r11, r18
    180a:	2a e0       	ldi	r18, 0x0A	; 10
    180c:	30 e0       	ldi	r19, 0x00	; 0
    180e:	25 c0       	rjmp	.+74     	; 0x185a <vfprintf+0x252>
    1810:	f2 2f       	mov	r31, r18
    1812:	f9 7f       	andi	r31, 0xF9	; 249
    1814:	bf 2e       	mov	r11, r31
    1816:	8f 36       	cpi	r24, 0x6F	; 111
    1818:	c1 f0       	breq	.+48     	; 0x184a <vfprintf+0x242>
    181a:	18 f4       	brcc	.+6      	; 0x1822 <vfprintf+0x21a>
    181c:	88 35       	cpi	r24, 0x58	; 88
    181e:	79 f0       	breq	.+30     	; 0x183e <vfprintf+0x236>
    1820:	ad c0       	rjmp	.+346    	; 0x197c <vfprintf+0x374>
    1822:	80 37       	cpi	r24, 0x70	; 112
    1824:	19 f0       	breq	.+6      	; 0x182c <vfprintf+0x224>
    1826:	88 37       	cpi	r24, 0x78	; 120
    1828:	21 f0       	breq	.+8      	; 0x1832 <vfprintf+0x22a>
    182a:	a8 c0       	rjmp	.+336    	; 0x197c <vfprintf+0x374>
    182c:	2f 2f       	mov	r18, r31
    182e:	20 61       	ori	r18, 0x10	; 16
    1830:	b2 2e       	mov	r11, r18
    1832:	b4 fe       	sbrs	r11, 4
    1834:	0d c0       	rjmp	.+26     	; 0x1850 <vfprintf+0x248>
    1836:	8b 2d       	mov	r24, r11
    1838:	84 60       	ori	r24, 0x04	; 4
    183a:	b8 2e       	mov	r11, r24
    183c:	09 c0       	rjmp	.+18     	; 0x1850 <vfprintf+0x248>
    183e:	24 ff       	sbrs	r18, 4
    1840:	0a c0       	rjmp	.+20     	; 0x1856 <vfprintf+0x24e>
    1842:	9f 2f       	mov	r25, r31
    1844:	96 60       	ori	r25, 0x06	; 6
    1846:	b9 2e       	mov	r11, r25
    1848:	06 c0       	rjmp	.+12     	; 0x1856 <vfprintf+0x24e>
    184a:	28 e0       	ldi	r18, 0x08	; 8
    184c:	30 e0       	ldi	r19, 0x00	; 0
    184e:	05 c0       	rjmp	.+10     	; 0x185a <vfprintf+0x252>
    1850:	20 e1       	ldi	r18, 0x10	; 16
    1852:	30 e0       	ldi	r19, 0x00	; 0
    1854:	02 c0       	rjmp	.+4      	; 0x185a <vfprintf+0x252>
    1856:	20 e1       	ldi	r18, 0x10	; 16
    1858:	32 e0       	ldi	r19, 0x02	; 2
    185a:	f8 01       	movw	r30, r16
    185c:	b7 fe       	sbrs	r11, 7
    185e:	07 c0       	rjmp	.+14     	; 0x186e <vfprintf+0x266>
    1860:	60 81       	ld	r22, Z
    1862:	71 81       	ldd	r23, Z+1	; 0x01
    1864:	82 81       	ldd	r24, Z+2	; 0x02
    1866:	93 81       	ldd	r25, Z+3	; 0x03
    1868:	0c 5f       	subi	r16, 0xFC	; 252
    186a:	1f 4f       	sbci	r17, 0xFF	; 255
    186c:	06 c0       	rjmp	.+12     	; 0x187a <vfprintf+0x272>
    186e:	60 81       	ld	r22, Z
    1870:	71 81       	ldd	r23, Z+1	; 0x01
    1872:	80 e0       	ldi	r24, 0x00	; 0
    1874:	90 e0       	ldi	r25, 0x00	; 0
    1876:	0e 5f       	subi	r16, 0xFE	; 254
    1878:	1f 4f       	sbci	r17, 0xFF	; 255
    187a:	a4 01       	movw	r20, r8
    187c:	d0 d0       	rcall	.+416    	; 0x1a1e <__ultoa_invert>
    187e:	a8 2e       	mov	r10, r24
    1880:	a8 18       	sub	r10, r8
    1882:	fb 2d       	mov	r31, r11
    1884:	ff 77       	andi	r31, 0x7F	; 127
    1886:	bf 2e       	mov	r11, r31
    1888:	b6 fe       	sbrs	r11, 6
    188a:	0b c0       	rjmp	.+22     	; 0x18a2 <vfprintf+0x29a>
    188c:	2b 2d       	mov	r18, r11
    188e:	2e 7f       	andi	r18, 0xFE	; 254
    1890:	a5 14       	cp	r10, r5
    1892:	50 f4       	brcc	.+20     	; 0x18a8 <vfprintf+0x2a0>
    1894:	b4 fe       	sbrs	r11, 4
    1896:	0a c0       	rjmp	.+20     	; 0x18ac <vfprintf+0x2a4>
    1898:	b2 fc       	sbrc	r11, 2
    189a:	08 c0       	rjmp	.+16     	; 0x18ac <vfprintf+0x2a4>
    189c:	2b 2d       	mov	r18, r11
    189e:	2e 7e       	andi	r18, 0xEE	; 238
    18a0:	05 c0       	rjmp	.+10     	; 0x18ac <vfprintf+0x2a4>
    18a2:	7a 2c       	mov	r7, r10
    18a4:	2b 2d       	mov	r18, r11
    18a6:	03 c0       	rjmp	.+6      	; 0x18ae <vfprintf+0x2a6>
    18a8:	7a 2c       	mov	r7, r10
    18aa:	01 c0       	rjmp	.+2      	; 0x18ae <vfprintf+0x2a6>
    18ac:	75 2c       	mov	r7, r5
    18ae:	24 ff       	sbrs	r18, 4
    18b0:	0d c0       	rjmp	.+26     	; 0x18cc <vfprintf+0x2c4>
    18b2:	fe 01       	movw	r30, r28
    18b4:	ea 0d       	add	r30, r10
    18b6:	f1 1d       	adc	r31, r1
    18b8:	80 81       	ld	r24, Z
    18ba:	80 33       	cpi	r24, 0x30	; 48
    18bc:	11 f4       	brne	.+4      	; 0x18c2 <vfprintf+0x2ba>
    18be:	29 7e       	andi	r18, 0xE9	; 233
    18c0:	09 c0       	rjmp	.+18     	; 0x18d4 <vfprintf+0x2cc>
    18c2:	22 ff       	sbrs	r18, 2
    18c4:	06 c0       	rjmp	.+12     	; 0x18d2 <vfprintf+0x2ca>
    18c6:	73 94       	inc	r7
    18c8:	73 94       	inc	r7
    18ca:	04 c0       	rjmp	.+8      	; 0x18d4 <vfprintf+0x2cc>
    18cc:	82 2f       	mov	r24, r18
    18ce:	86 78       	andi	r24, 0x86	; 134
    18d0:	09 f0       	breq	.+2      	; 0x18d4 <vfprintf+0x2cc>
    18d2:	73 94       	inc	r7
    18d4:	23 fd       	sbrc	r18, 3
    18d6:	12 c0       	rjmp	.+36     	; 0x18fc <vfprintf+0x2f4>
    18d8:	20 ff       	sbrs	r18, 0
    18da:	06 c0       	rjmp	.+12     	; 0x18e8 <vfprintf+0x2e0>
    18dc:	5a 2c       	mov	r5, r10
    18de:	73 14       	cp	r7, r3
    18e0:	18 f4       	brcc	.+6      	; 0x18e8 <vfprintf+0x2e0>
    18e2:	53 0c       	add	r5, r3
    18e4:	57 18       	sub	r5, r7
    18e6:	73 2c       	mov	r7, r3
    18e8:	73 14       	cp	r7, r3
    18ea:	60 f4       	brcc	.+24     	; 0x1904 <vfprintf+0x2fc>
    18ec:	b7 01       	movw	r22, r14
    18ee:	80 e2       	ldi	r24, 0x20	; 32
    18f0:	90 e0       	ldi	r25, 0x00	; 0
    18f2:	2c 87       	std	Y+12, r18	; 0x0c
    18f4:	62 d0       	rcall	.+196    	; 0x19ba <fputc>
    18f6:	73 94       	inc	r7
    18f8:	2c 85       	ldd	r18, Y+12	; 0x0c
    18fa:	f6 cf       	rjmp	.-20     	; 0x18e8 <vfprintf+0x2e0>
    18fc:	73 14       	cp	r7, r3
    18fe:	10 f4       	brcc	.+4      	; 0x1904 <vfprintf+0x2fc>
    1900:	37 18       	sub	r3, r7
    1902:	01 c0       	rjmp	.+2      	; 0x1906 <vfprintf+0x2fe>
    1904:	31 2c       	mov	r3, r1
    1906:	24 ff       	sbrs	r18, 4
    1908:	11 c0       	rjmp	.+34     	; 0x192c <vfprintf+0x324>
    190a:	b7 01       	movw	r22, r14
    190c:	80 e3       	ldi	r24, 0x30	; 48
    190e:	90 e0       	ldi	r25, 0x00	; 0
    1910:	2c 87       	std	Y+12, r18	; 0x0c
    1912:	53 d0       	rcall	.+166    	; 0x19ba <fputc>
    1914:	2c 85       	ldd	r18, Y+12	; 0x0c
    1916:	22 ff       	sbrs	r18, 2
    1918:	16 c0       	rjmp	.+44     	; 0x1946 <vfprintf+0x33e>
    191a:	21 ff       	sbrs	r18, 1
    191c:	03 c0       	rjmp	.+6      	; 0x1924 <vfprintf+0x31c>
    191e:	88 e5       	ldi	r24, 0x58	; 88
    1920:	90 e0       	ldi	r25, 0x00	; 0
    1922:	02 c0       	rjmp	.+4      	; 0x1928 <vfprintf+0x320>
    1924:	88 e7       	ldi	r24, 0x78	; 120
    1926:	90 e0       	ldi	r25, 0x00	; 0
    1928:	b7 01       	movw	r22, r14
    192a:	0c c0       	rjmp	.+24     	; 0x1944 <vfprintf+0x33c>
    192c:	82 2f       	mov	r24, r18
    192e:	86 78       	andi	r24, 0x86	; 134
    1930:	51 f0       	breq	.+20     	; 0x1946 <vfprintf+0x33e>
    1932:	21 fd       	sbrc	r18, 1
    1934:	02 c0       	rjmp	.+4      	; 0x193a <vfprintf+0x332>
    1936:	80 e2       	ldi	r24, 0x20	; 32
    1938:	01 c0       	rjmp	.+2      	; 0x193c <vfprintf+0x334>
    193a:	8b e2       	ldi	r24, 0x2B	; 43
    193c:	27 fd       	sbrc	r18, 7
    193e:	8d e2       	ldi	r24, 0x2D	; 45
    1940:	b7 01       	movw	r22, r14
    1942:	90 e0       	ldi	r25, 0x00	; 0
    1944:	3a d0       	rcall	.+116    	; 0x19ba <fputc>
    1946:	a5 14       	cp	r10, r5
    1948:	30 f4       	brcc	.+12     	; 0x1956 <vfprintf+0x34e>
    194a:	b7 01       	movw	r22, r14
    194c:	80 e3       	ldi	r24, 0x30	; 48
    194e:	90 e0       	ldi	r25, 0x00	; 0
    1950:	34 d0       	rcall	.+104    	; 0x19ba <fputc>
    1952:	5a 94       	dec	r5
    1954:	f8 cf       	rjmp	.-16     	; 0x1946 <vfprintf+0x33e>
    1956:	aa 94       	dec	r10
    1958:	f4 01       	movw	r30, r8
    195a:	ea 0d       	add	r30, r10
    195c:	f1 1d       	adc	r31, r1
    195e:	80 81       	ld	r24, Z
    1960:	b7 01       	movw	r22, r14
    1962:	90 e0       	ldi	r25, 0x00	; 0
    1964:	2a d0       	rcall	.+84     	; 0x19ba <fputc>
    1966:	a1 10       	cpse	r10, r1
    1968:	f6 cf       	rjmp	.-20     	; 0x1956 <vfprintf+0x34e>
    196a:	33 20       	and	r3, r3
    196c:	09 f4       	brne	.+2      	; 0x1970 <vfprintf+0x368>
    196e:	5d ce       	rjmp	.-838    	; 0x162a <vfprintf+0x22>
    1970:	b7 01       	movw	r22, r14
    1972:	80 e2       	ldi	r24, 0x20	; 32
    1974:	90 e0       	ldi	r25, 0x00	; 0
    1976:	21 d0       	rcall	.+66     	; 0x19ba <fputc>
    1978:	3a 94       	dec	r3
    197a:	f7 cf       	rjmp	.-18     	; 0x196a <vfprintf+0x362>
    197c:	f7 01       	movw	r30, r14
    197e:	86 81       	ldd	r24, Z+6	; 0x06
    1980:	97 81       	ldd	r25, Z+7	; 0x07
    1982:	02 c0       	rjmp	.+4      	; 0x1988 <vfprintf+0x380>
    1984:	8f ef       	ldi	r24, 0xFF	; 255
    1986:	9f ef       	ldi	r25, 0xFF	; 255
    1988:	2c 96       	adiw	r28, 0x0c	; 12
    198a:	e2 e1       	ldi	r30, 0x12	; 18
    198c:	c2 c0       	rjmp	.+388    	; 0x1b12 <__epilogue_restores__>

0000198e <strnlen_P>:
    198e:	fc 01       	movw	r30, r24
    1990:	05 90       	lpm	r0, Z+
    1992:	61 50       	subi	r22, 0x01	; 1
    1994:	70 40       	sbci	r23, 0x00	; 0
    1996:	01 10       	cpse	r0, r1
    1998:	d8 f7       	brcc	.-10     	; 0x1990 <strnlen_P+0x2>
    199a:	80 95       	com	r24
    199c:	90 95       	com	r25
    199e:	8e 0f       	add	r24, r30
    19a0:	9f 1f       	adc	r25, r31
    19a2:	08 95       	ret

000019a4 <strnlen>:
    19a4:	fc 01       	movw	r30, r24
    19a6:	61 50       	subi	r22, 0x01	; 1
    19a8:	70 40       	sbci	r23, 0x00	; 0
    19aa:	01 90       	ld	r0, Z+
    19ac:	01 10       	cpse	r0, r1
    19ae:	d8 f7       	brcc	.-10     	; 0x19a6 <strnlen+0x2>
    19b0:	80 95       	com	r24
    19b2:	90 95       	com	r25
    19b4:	8e 0f       	add	r24, r30
    19b6:	9f 1f       	adc	r25, r31
    19b8:	08 95       	ret

000019ba <fputc>:
    19ba:	0f 93       	push	r16
    19bc:	1f 93       	push	r17
    19be:	cf 93       	push	r28
    19c0:	df 93       	push	r29
    19c2:	18 2f       	mov	r17, r24
    19c4:	09 2f       	mov	r16, r25
    19c6:	eb 01       	movw	r28, r22
    19c8:	8b 81       	ldd	r24, Y+3	; 0x03
    19ca:	81 fd       	sbrc	r24, 1
    19cc:	03 c0       	rjmp	.+6      	; 0x19d4 <fputc+0x1a>
    19ce:	8f ef       	ldi	r24, 0xFF	; 255
    19d0:	9f ef       	ldi	r25, 0xFF	; 255
    19d2:	20 c0       	rjmp	.+64     	; 0x1a14 <fputc+0x5a>
    19d4:	82 ff       	sbrs	r24, 2
    19d6:	10 c0       	rjmp	.+32     	; 0x19f8 <fputc+0x3e>
    19d8:	4e 81       	ldd	r20, Y+6	; 0x06
    19da:	5f 81       	ldd	r21, Y+7	; 0x07
    19dc:	2c 81       	ldd	r18, Y+4	; 0x04
    19de:	3d 81       	ldd	r19, Y+5	; 0x05
    19e0:	42 17       	cp	r20, r18
    19e2:	53 07       	cpc	r21, r19
    19e4:	7c f4       	brge	.+30     	; 0x1a04 <fputc+0x4a>
    19e6:	e8 81       	ld	r30, Y
    19e8:	f9 81       	ldd	r31, Y+1	; 0x01
    19ea:	9f 01       	movw	r18, r30
    19ec:	2f 5f       	subi	r18, 0xFF	; 255
    19ee:	3f 4f       	sbci	r19, 0xFF	; 255
    19f0:	39 83       	std	Y+1, r19	; 0x01
    19f2:	28 83       	st	Y, r18
    19f4:	10 83       	st	Z, r17
    19f6:	06 c0       	rjmp	.+12     	; 0x1a04 <fputc+0x4a>
    19f8:	e8 85       	ldd	r30, Y+8	; 0x08
    19fa:	f9 85       	ldd	r31, Y+9	; 0x09
    19fc:	81 2f       	mov	r24, r17
    19fe:	09 95       	icall
    1a00:	89 2b       	or	r24, r25
    1a02:	29 f7       	brne	.-54     	; 0x19ce <fputc+0x14>
    1a04:	2e 81       	ldd	r18, Y+6	; 0x06
    1a06:	3f 81       	ldd	r19, Y+7	; 0x07
    1a08:	2f 5f       	subi	r18, 0xFF	; 255
    1a0a:	3f 4f       	sbci	r19, 0xFF	; 255
    1a0c:	3f 83       	std	Y+7, r19	; 0x07
    1a0e:	2e 83       	std	Y+6, r18	; 0x06
    1a10:	81 2f       	mov	r24, r17
    1a12:	90 2f       	mov	r25, r16
    1a14:	df 91       	pop	r29
    1a16:	cf 91       	pop	r28
    1a18:	1f 91       	pop	r17
    1a1a:	0f 91       	pop	r16
    1a1c:	08 95       	ret

00001a1e <__ultoa_invert>:
    1a1e:	fa 01       	movw	r30, r20
    1a20:	aa 27       	eor	r26, r26
    1a22:	28 30       	cpi	r18, 0x08	; 8
    1a24:	51 f1       	breq	.+84     	; 0x1a7a <__ultoa_invert+0x5c>
    1a26:	20 31       	cpi	r18, 0x10	; 16
    1a28:	81 f1       	breq	.+96     	; 0x1a8a <__ultoa_invert+0x6c>
    1a2a:	e8 94       	clt
    1a2c:	6f 93       	push	r22
    1a2e:	6e 7f       	andi	r22, 0xFE	; 254
    1a30:	6e 5f       	subi	r22, 0xFE	; 254
    1a32:	7f 4f       	sbci	r23, 0xFF	; 255
    1a34:	8f 4f       	sbci	r24, 0xFF	; 255
    1a36:	9f 4f       	sbci	r25, 0xFF	; 255
    1a38:	af 4f       	sbci	r26, 0xFF	; 255
    1a3a:	b1 e0       	ldi	r27, 0x01	; 1
    1a3c:	3e d0       	rcall	.+124    	; 0x1aba <__ultoa_invert+0x9c>
    1a3e:	b4 e0       	ldi	r27, 0x04	; 4
    1a40:	3c d0       	rcall	.+120    	; 0x1aba <__ultoa_invert+0x9c>
    1a42:	67 0f       	add	r22, r23
    1a44:	78 1f       	adc	r23, r24
    1a46:	89 1f       	adc	r24, r25
    1a48:	9a 1f       	adc	r25, r26
    1a4a:	a1 1d       	adc	r26, r1
    1a4c:	68 0f       	add	r22, r24
    1a4e:	79 1f       	adc	r23, r25
    1a50:	8a 1f       	adc	r24, r26
    1a52:	91 1d       	adc	r25, r1
    1a54:	a1 1d       	adc	r26, r1
    1a56:	6a 0f       	add	r22, r26
    1a58:	71 1d       	adc	r23, r1
    1a5a:	81 1d       	adc	r24, r1
    1a5c:	91 1d       	adc	r25, r1
    1a5e:	a1 1d       	adc	r26, r1
    1a60:	20 d0       	rcall	.+64     	; 0x1aa2 <__ultoa_invert+0x84>
    1a62:	09 f4       	brne	.+2      	; 0x1a66 <__ultoa_invert+0x48>
    1a64:	68 94       	set
    1a66:	3f 91       	pop	r19
    1a68:	2a e0       	ldi	r18, 0x0A	; 10
    1a6a:	26 9f       	mul	r18, r22
    1a6c:	11 24       	eor	r1, r1
    1a6e:	30 19       	sub	r19, r0
    1a70:	30 5d       	subi	r19, 0xD0	; 208
    1a72:	31 93       	st	Z+, r19
    1a74:	de f6       	brtc	.-74     	; 0x1a2c <__ultoa_invert+0xe>
    1a76:	cf 01       	movw	r24, r30
    1a78:	08 95       	ret
    1a7a:	46 2f       	mov	r20, r22
    1a7c:	47 70       	andi	r20, 0x07	; 7
    1a7e:	40 5d       	subi	r20, 0xD0	; 208
    1a80:	41 93       	st	Z+, r20
    1a82:	b3 e0       	ldi	r27, 0x03	; 3
    1a84:	0f d0       	rcall	.+30     	; 0x1aa4 <__ultoa_invert+0x86>
    1a86:	c9 f7       	brne	.-14     	; 0x1a7a <__ultoa_invert+0x5c>
    1a88:	f6 cf       	rjmp	.-20     	; 0x1a76 <__ultoa_invert+0x58>
    1a8a:	46 2f       	mov	r20, r22
    1a8c:	4f 70       	andi	r20, 0x0F	; 15
    1a8e:	40 5d       	subi	r20, 0xD0	; 208
    1a90:	4a 33       	cpi	r20, 0x3A	; 58
    1a92:	18 f0       	brcs	.+6      	; 0x1a9a <__ultoa_invert+0x7c>
    1a94:	49 5d       	subi	r20, 0xD9	; 217
    1a96:	31 fd       	sbrc	r19, 1
    1a98:	40 52       	subi	r20, 0x20	; 32
    1a9a:	41 93       	st	Z+, r20
    1a9c:	02 d0       	rcall	.+4      	; 0x1aa2 <__ultoa_invert+0x84>
    1a9e:	a9 f7       	brne	.-22     	; 0x1a8a <__ultoa_invert+0x6c>
    1aa0:	ea cf       	rjmp	.-44     	; 0x1a76 <__ultoa_invert+0x58>
    1aa2:	b4 e0       	ldi	r27, 0x04	; 4
    1aa4:	a6 95       	lsr	r26
    1aa6:	97 95       	ror	r25
    1aa8:	87 95       	ror	r24
    1aaa:	77 95       	ror	r23
    1aac:	67 95       	ror	r22
    1aae:	ba 95       	dec	r27
    1ab0:	c9 f7       	brne	.-14     	; 0x1aa4 <__ultoa_invert+0x86>
    1ab2:	00 97       	sbiw	r24, 0x00	; 0
    1ab4:	61 05       	cpc	r22, r1
    1ab6:	71 05       	cpc	r23, r1
    1ab8:	08 95       	ret
    1aba:	9b 01       	movw	r18, r22
    1abc:	ac 01       	movw	r20, r24
    1abe:	0a 2e       	mov	r0, r26
    1ac0:	06 94       	lsr	r0
    1ac2:	57 95       	ror	r21
    1ac4:	47 95       	ror	r20
    1ac6:	37 95       	ror	r19
    1ac8:	27 95       	ror	r18
    1aca:	ba 95       	dec	r27
    1acc:	c9 f7       	brne	.-14     	; 0x1ac0 <__ultoa_invert+0xa2>
    1ace:	62 0f       	add	r22, r18
    1ad0:	73 1f       	adc	r23, r19
    1ad2:	84 1f       	adc	r24, r20
    1ad4:	95 1f       	adc	r25, r21
    1ad6:	a0 1d       	adc	r26, r0
    1ad8:	08 95       	ret

00001ada <__prologue_saves__>:
    1ada:	2f 92       	push	r2
    1adc:	3f 92       	push	r3
    1ade:	4f 92       	push	r4
    1ae0:	5f 92       	push	r5
    1ae2:	6f 92       	push	r6
    1ae4:	7f 92       	push	r7
    1ae6:	8f 92       	push	r8
    1ae8:	9f 92       	push	r9
    1aea:	af 92       	push	r10
    1aec:	bf 92       	push	r11
    1aee:	cf 92       	push	r12
    1af0:	df 92       	push	r13
    1af2:	ef 92       	push	r14
    1af4:	ff 92       	push	r15
    1af6:	0f 93       	push	r16
    1af8:	1f 93       	push	r17
    1afa:	cf 93       	push	r28
    1afc:	df 93       	push	r29
    1afe:	cd b7       	in	r28, 0x3d	; 61
    1b00:	de b7       	in	r29, 0x3e	; 62
    1b02:	ca 1b       	sub	r28, r26
    1b04:	db 0b       	sbc	r29, r27
    1b06:	0f b6       	in	r0, 0x3f	; 63
    1b08:	f8 94       	cli
    1b0a:	de bf       	out	0x3e, r29	; 62
    1b0c:	0f be       	out	0x3f, r0	; 63
    1b0e:	cd bf       	out	0x3d, r28	; 61
    1b10:	09 94       	ijmp

00001b12 <__epilogue_restores__>:
    1b12:	2a 88       	ldd	r2, Y+18	; 0x12
    1b14:	39 88       	ldd	r3, Y+17	; 0x11
    1b16:	48 88       	ldd	r4, Y+16	; 0x10
    1b18:	5f 84       	ldd	r5, Y+15	; 0x0f
    1b1a:	6e 84       	ldd	r6, Y+14	; 0x0e
    1b1c:	7d 84       	ldd	r7, Y+13	; 0x0d
    1b1e:	8c 84       	ldd	r8, Y+12	; 0x0c
    1b20:	9b 84       	ldd	r9, Y+11	; 0x0b
    1b22:	aa 84       	ldd	r10, Y+10	; 0x0a
    1b24:	b9 84       	ldd	r11, Y+9	; 0x09
    1b26:	c8 84       	ldd	r12, Y+8	; 0x08
    1b28:	df 80       	ldd	r13, Y+7	; 0x07
    1b2a:	ee 80       	ldd	r14, Y+6	; 0x06
    1b2c:	fd 80       	ldd	r15, Y+5	; 0x05
    1b2e:	0c 81       	ldd	r16, Y+4	; 0x04
    1b30:	1b 81       	ldd	r17, Y+3	; 0x03
    1b32:	aa 81       	ldd	r26, Y+2	; 0x02
    1b34:	b9 81       	ldd	r27, Y+1	; 0x01
    1b36:	ce 0f       	add	r28, r30
    1b38:	d1 1d       	adc	r29, r1
    1b3a:	0f b6       	in	r0, 0x3f	; 63
    1b3c:	f8 94       	cli
    1b3e:	de bf       	out	0x3e, r29	; 62
    1b40:	0f be       	out	0x3f, r0	; 63
    1b42:	cd bf       	out	0x3d, r28	; 61
    1b44:	ed 01       	movw	r28, r26
    1b46:	08 95       	ret

00001b48 <_exit>:
    1b48:	f8 94       	cli

00001b4a <__stop_program>:
    1b4a:	ff cf       	rjmp	.-2      	; 0x1b4a <__stop_program>
