Task1_LF.lss 53.1 KB
Newer Older
1
2
3
4
5

Task1_LF.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
Petter Breedveld's avatar
Petter Breedveld committed
6
  0 .data         0000003a  00803e00  00000a20  00000ab4  2**0
7
                  CONTENTS, ALLOC, LOAD, DATA
Petter Breedveld's avatar
Petter Breedveld committed
8
  1 .text         00000a20  00000000  00000000  00000094  2**1
9
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
Petter Breedveld's avatar
Petter Breedveld committed
10
  2 .bss          0000000b  00803e3a  00803e3a  00000aee  2**0
11
                  ALLOC
Petter Breedveld's avatar
Petter Breedveld committed
12
  3 .comment      0000005c  00000000  00000000  00000aee  2**0
13
                  CONTENTS, READONLY
Petter Breedveld's avatar
Petter Breedveld committed
14
  4 .note.gnu.avr.deviceinfo 0000003c  00000000  00000000  00000b4c  2**2
15
                  CONTENTS, READONLY
Petter Breedveld's avatar
Petter Breedveld committed
16
  5 .debug_aranges 00000078  00000000  00000000  00000b88  2**0
17
                  CONTENTS, READONLY, DEBUGGING
Petter Breedveld's avatar
Petter Breedveld committed
18
  6 .debug_info   00002156  00000000  00000000  00000c00  2**0
19
                  CONTENTS, READONLY, DEBUGGING
Petter Breedveld's avatar
Petter Breedveld committed
20
  7 .debug_abbrev 00001959  00000000  00000000  00002d56  2**0
21
                  CONTENTS, READONLY, DEBUGGING
Petter Breedveld's avatar
Petter Breedveld committed
22
  8 .debug_line   000004b7  00000000  00000000  000046af  2**0
23
                  CONTENTS, READONLY, DEBUGGING
Petter Breedveld's avatar
Petter Breedveld committed
24
  9 .debug_frame  000000bc  00000000  00000000  00004b68  2**2
25
                  CONTENTS, READONLY, DEBUGGING
Petter Breedveld's avatar
Petter Breedveld committed
26
 10 .debug_str    00000fe4  00000000  00000000  00004c24  2**0
27
                  CONTENTS, READONLY, DEBUGGING
Petter Breedveld's avatar
Petter Breedveld committed
28
 11 .debug_loc    0000010b  00000000  00000000  00005c08  2**0
29
                  CONTENTS, READONLY, DEBUGGING
Petter Breedveld's avatar
Petter Breedveld committed
30
 12 .debug_ranges 00000048  00000000  00000000  00005d13  2**0
31
32
33
34
35
36
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:	19 c0       	rjmp	.+50     	; 0x34 <__ctors_end>
Petter Breedveld's avatar
Petter Breedveld committed
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
   2:	35 c0       	rjmp	.+106    	; 0x6e <__bad_interrupt>
   4:	34 c0       	rjmp	.+104    	; 0x6e <__bad_interrupt>
   6:	33 c0       	rjmp	.+102    	; 0x6e <__bad_interrupt>
   8:	32 c0       	rjmp	.+100    	; 0x6e <__bad_interrupt>
   a:	31 c0       	rjmp	.+98     	; 0x6e <__bad_interrupt>
   c:	30 c0       	rjmp	.+96     	; 0x6e <__bad_interrupt>
   e:	2f c0       	rjmp	.+94     	; 0x6e <__bad_interrupt>
  10:	2e c0       	rjmp	.+92     	; 0x6e <__bad_interrupt>
  12:	2d c0       	rjmp	.+90     	; 0x6e <__bad_interrupt>
  14:	2c c0       	rjmp	.+88     	; 0x6e <__bad_interrupt>
  16:	2b c0       	rjmp	.+86     	; 0x6e <__bad_interrupt>
  18:	2a c0       	rjmp	.+84     	; 0x6e <__bad_interrupt>
  1a:	29 c0       	rjmp	.+82     	; 0x6e <__bad_interrupt>
  1c:	28 c0       	rjmp	.+80     	; 0x6e <__bad_interrupt>
  1e:	27 c0       	rjmp	.+78     	; 0x6e <__bad_interrupt>
  20:	26 c0       	rjmp	.+76     	; 0x6e <__bad_interrupt>
  22:	25 c0       	rjmp	.+74     	; 0x6e <__bad_interrupt>
  24:	24 c0       	rjmp	.+72     	; 0x6e <__bad_interrupt>
  26:	23 c0       	rjmp	.+70     	; 0x6e <__bad_interrupt>
  28:	22 c0       	rjmp	.+68     	; 0x6e <__bad_interrupt>
  2a:	21 c0       	rjmp	.+66     	; 0x6e <__bad_interrupt>
  2c:	89 c0       	rjmp	.+274    	; 0x140 <__vector_22>
  2e:	1f c0       	rjmp	.+62     	; 0x6e <__bad_interrupt>
  30:	1e c0       	rjmp	.+60     	; 0x6e <__bad_interrupt>
  32:	1d c0       	rjmp	.+58     	; 0x6e <__bad_interrupt>
62
63
64
65
66
67
68
69
70

00000034 <__ctors_end>:
  34:	11 24       	eor	r1, r1
  36:	1f be       	out	0x3f, r1	; 63
  38:	cf ef       	ldi	r28, 0xFF	; 255
  3a:	cd bf       	out	0x3d, r28	; 61
  3c:	df e3       	ldi	r29, 0x3F	; 63
  3e:	de bf       	out	0x3e, r29	; 62

Petter Breedveld's avatar
Petter Breedveld committed
71
72
00000040 <__do_copy_data>:
  40:	1e e3       	ldi	r17, 0x3E	; 62
73
74
  42:	a0 e0       	ldi	r26, 0x00	; 0
  44:	be e3       	ldi	r27, 0x3E	; 62
Petter Breedveld's avatar
Petter Breedveld committed
75
76
77
78
79
80
81
82
  46:	e0 e2       	ldi	r30, 0x20	; 32
  48:	fa e0       	ldi	r31, 0x0A	; 10
  4a:	02 c0       	rjmp	.+4      	; 0x50 <__do_copy_data+0x10>
  4c:	05 90       	lpm	r0, Z+
  4e:	0d 92       	st	X+, r0
  50:	aa 33       	cpi	r26, 0x3A	; 58
  52:	b1 07       	cpc	r27, r17
  54:	d9 f7       	brne	.-10     	; 0x4c <__do_copy_data+0xc>
83

Petter Breedveld's avatar
Petter Breedveld committed
84
85
86
87
88
00000056 <__do_clear_bss>:
  56:	2e e3       	ldi	r18, 0x3E	; 62
  58:	aa e3       	ldi	r26, 0x3A	; 58
  5a:	be e3       	ldi	r27, 0x3E	; 62
  5c:	01 c0       	rjmp	.+2      	; 0x60 <.do_clear_bss_start>
89

Petter Breedveld's avatar
Petter Breedveld committed
90
91
0000005e <.do_clear_bss_loop>:
  5e:	1d 92       	st	X+, r1
92

Petter Breedveld's avatar
Petter Breedveld committed
93
94
95
96
97
98
00000060 <.do_clear_bss_start>:
  60:	a5 34       	cpi	r26, 0x45	; 69
  62:	b2 07       	cpc	r27, r18
  64:	e1 f7       	brne	.-8      	; 0x5e <.do_clear_bss_loop>
  66:	0e 94 59 00 	call	0xb2	; 0xb2 <main>
  6a:	0c 94 0e 05 	jmp	0xa1c	; 0xa1c <_exit>
99

Petter Breedveld's avatar
Petter Breedveld committed
100
101
102
103
0000006e <__bad_interrupt>:
  6e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00000072 <adc_init>:
104
105
106
107
108
109
 */ 

#include <avr/io.h>

void adc_init(){
	ADC0.CTRLA |= (ADC_RESSEL_8BIT_gc); //Set resolution, we choose 8 bits
Petter Breedveld's avatar
Petter Breedveld committed
110
111
112
113
114
  72:	e0 e0       	ldi	r30, 0x00	; 0
  74:	f6 e0       	ldi	r31, 0x06	; 6
  76:	80 81       	ld	r24, Z
  78:	84 60       	ori	r24, 0x04	; 4
  7a:	80 83       	st	Z, r24
115
116
	
	ADC0.CTRLB |= (ADC_SAMPLNUM_ACC4_gc); //OPTIONAL: We can use multiple samples if we like, example here with 4
Petter Breedveld's avatar
Petter Breedveld committed
117
118
119
120
  7c:	81 81       	ldd	r24, Z+1	; 0x01
  7e:	82 60       	ori	r24, 0x02	; 2
  80:	81 83       	std	Z+1, r24	; 0x01
		//More samples gives a better result but takes longer
121
122
	
	ADC0.CTRLC |= (ADC_REFSEL_VDDREF_gc); //We select to use the supply voltage (VDD) as voltage reference
Petter Breedveld's avatar
Petter Breedveld committed
123
124
125
  82:	82 81       	ldd	r24, Z+2	; 0x02
  84:	80 61       	ori	r24, 0x10	; 16
  86:	82 83       	std	Z+2, r24	; 0x02
126
	ADC0.CTRLC |= (ADC_PRESC_DIV2_gc); //ADC clock prescaler, best accuracy when run below 2MHz. (Here div2 ~1.46 MHz)
Petter Breedveld's avatar
Petter Breedveld committed
127
128
  88:	82 81       	ldd	r24, Z+2	; 0x02
  8a:	82 83       	std	Z+2, r24	; 0x02
129
130
	
	ADC0.CTRLA |= (ADC_ENABLE_bm); //Enable the ADC
Petter Breedveld's avatar
Petter Breedveld committed
131
132
133
134
  8c:	80 81       	ld	r24, Z
  8e:	81 60       	ori	r24, 0x01	; 1
  90:	80 83       	st	Z, r24
  92:	08 95       	ret
135

Petter Breedveld's avatar
Petter Breedveld committed
136
00000094 <adc_read>:
137
138
139
140
141
}


uint8_t adc_read(uint8_t channel){
	ADC0.MUXPOS = channel; //Select input on the ADC mux
Petter Breedveld's avatar
Petter Breedveld committed
142
143
144
145
  94:	e0 e0       	ldi	r30, 0x00	; 0
  96:	f6 e0       	ldi	r31, 0x06	; 6
  98:	86 83       	std	Z+6, r24	; 0x06
	//NOTE: We can use = here because this is the only thing the register holds. Neat!
146
147
	
	ADC0.INTFLAGS |= (ADC_RESRDY_bm); //Clear the results ready flag
Petter Breedveld's avatar
Petter Breedveld committed
148
149
150
  9a:	83 85       	ldd	r24, Z+11	; 0x0b
  9c:	81 60       	ori	r24, 0x01	; 1
  9e:	83 87       	std	Z+11, r24	; 0x0b
151
152
	
	ADC0.COMMAND |= (ADC_STCONV_bm); //Start a conversion
Petter Breedveld's avatar
Petter Breedveld committed
153
154
155
  a0:	80 85       	ldd	r24, Z+8	; 0x08
  a2:	81 60       	ori	r24, 0x01	; 1
  a4:	80 87       	std	Z+8, r24	; 0x08
156
	
Petter Breedveld's avatar
Petter Breedveld committed
157
158
159
160
161
162
	while(!(ADC0.INTFLAGS & ADC_RESRDY_bm)){	
  a6:	83 85       	ldd	r24, Z+11	; 0x0b
  a8:	80 ff       	sbrs	r24, 0
  aa:	fd cf       	rjmp	.-6      	; 0xa6 <adc_read+0x12>
		 //Wait for the results ready flag to be set
	}
163
	return ADC0.RESL; //Return 8 bit result
Petter Breedveld's avatar
Petter Breedveld committed
164
  ac:	80 91 10 06 	lds	r24, 0x0610	; 0x800610 <__TEXT_REGION_LENGTH__+0x700610>
165
166

}
Petter Breedveld's avatar
Petter Breedveld committed
167
  b0:	08 95       	ret
168

Petter Breedveld's avatar
Petter Breedveld committed
169
000000b2 <main>:
170
171
172
173


int main(void)
{
Petter Breedveld's avatar
Petter Breedveld committed
174
175
176
177
178
179
180
		
	uart_init(BAUD_9600); //Initiate the uart (provided in uart.c) with a baudrate of 9600
  b2:	6c e6       	ldi	r22, 0x6C	; 108
  b4:	75 e0       	ldi	r23, 0x05	; 5
  b6:	80 e0       	ldi	r24, 0x00	; 0
  b8:	90 e0       	ldi	r25, 0x00	; 0
  ba:	0e 94 87 00 	call	0x10e	; 0x10e <uart_init>
181
	
Petter Breedveld's avatar
Petter Breedveld committed
182
183
	adc_init(); //Initiate the adc (The student has to write this function)
  be:	0e 94 39 00 	call	0x72	; 0x72 <adc_init>
184
	
Petter Breedveld's avatar
Petter Breedveld committed
185
186
187
	sei(); //If we want to receive via UART we need interrupts enabled.
  c2:	78 94       	sei
		data = adc_read(LIGHT); //Read the analog voltage on channel 6, connected to light sensor
188
		
Petter Breedveld's avatar
Petter Breedveld committed
189
190
191
192
193
194
195
196
		//The light sensor returns the ones complement (the opposite) of the brightness:
		data = 0xff - data; 
		
		printf("Light intensity is currently %d brightness points!\n", data); //Print out the value neatly using printf
  c4:	c6 e0       	ldi	r28, 0x06	; 6
  c6:	de e3       	ldi	r29, 0x3E	; 62
	sei(); //If we want to receive via UART we need interrupts enabled.
	//NOTE: UART isn't used to receive here and as such this isn't required.
197
198
199
	
	while (1)
	{
Petter Breedveld's avatar
Petter Breedveld committed
200
201
202
		data = adc_read(LIGHT); //Read the analog voltage on channel 6, connected to light sensor
  c8:	86 e0       	ldi	r24, 0x06	; 6
  ca:	0e 94 4a 00 	call	0x94	; 0x94 <adc_read>
203
		
Petter Breedveld's avatar
Petter Breedveld committed
204
205
206
207
		//The light sensor returns the ones complement (the opposite) of the brightness:
		data = 0xff - data; 
  ce:	80 95       	com	r24
  d0:	80 93 3a 3e 	sts	0x3E3A, r24	; 0x803e3a <__data_end>
208
		
Petter Breedveld's avatar
Petter Breedveld committed
209
210
211
212
213
214
		printf("Light intensity is currently %d brightness points!\n", data); //Print out the value neatly using printf
  d4:	1f 92       	push	r1
  d6:	8f 93       	push	r24
  d8:	df 93       	push	r29
  da:	cf 93       	push	r28
  dc:	0e 94 f9 00 	call	0x1f2	; 0x1f2 <printf>
215
216
217
218
219
220
	#else
		//round up by default
		__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
	#endif

	__builtin_avr_delay_cycles(__ticks_dc);
Petter Breedveld's avatar
Petter Breedveld committed
221
222
223
224
225
226
227
228
229
230
231
232
233
  e0:	9a e2       	ldi	r25, 0x2A	; 42
  e2:	2c e2       	ldi	r18, 0x2C	; 44
  e4:	8a e0       	ldi	r24, 0x0A	; 10
  e6:	91 50       	subi	r25, 0x01	; 1
  e8:	20 40       	sbci	r18, 0x00	; 0
  ea:	80 40       	sbci	r24, 0x00	; 0
  ec:	e1 f7       	brne	.-8      	; 0xe6 <main+0x34>
  ee:	00 00       	nop
  f0:	0f 90       	pop	r0
  f2:	0f 90       	pop	r0
  f4:	0f 90       	pop	r0
  f6:	0f 90       	pop	r0
  f8:	e7 cf       	rjmp	.-50     	; 0xc8 <main+0x16>
234

Petter Breedveld's avatar
Petter Breedveld committed
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
000000fa <uart_transmit>:



// function to transmit data
int uart_transmit(char data, FILE* stream){
	while (!(USART0.STATUS & (1 << USART_DREIF_bp))){
  fa:	e0 e0       	ldi	r30, 0x00	; 0
  fc:	f8 e0       	ldi	r31, 0x08	; 8
  fe:	94 81       	ldd	r25, Z+4	; 0x04
 100:	95 ff       	sbrs	r25, 5
 102:	fd cf       	rjmp	.-6      	; 0xfe <uart_transmit+0x4>
		//Wait for ongoing transmission to finish (if there is one)
	} 
	USART0.TXDATAL = data; //Put new data in register
 104:	80 93 02 08 	sts	0x0802, r24	; 0x800802 <__TEXT_REGION_LENGTH__+0x700802>
	return 0;
}
 108:	80 e0       	ldi	r24, 0x00	; 0
 10a:	90 e0       	ldi	r25, 0x00	; 0
 10c:	08 95       	ret
256

Petter Breedveld's avatar
Petter Breedveld committed
257
258
0000010e <uart_init>:
#include "uart.h"
259
260
261
262

void uart_init(unsigned long baud){
	
	//From chapter 24.3 in datasheet
Petter Breedveld's avatar
Petter Breedveld committed
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
	PORTB.OUTSET |= (1 << PIN2_bp);
 10e:	e0 e2       	ldi	r30, 0x20	; 32
 110:	f4 e0       	ldi	r31, 0x04	; 4
 112:	25 81       	ldd	r18, Z+5	; 0x05
 114:	24 60       	ori	r18, 0x04	; 4
 116:	25 83       	std	Z+5, r18	; 0x05
	PORTB.DIRSET |= (1 << PIN2_bp); 		//Setting up TX pin as high output
 118:	21 81       	ldd	r18, Z+1	; 0x01
 11a:	24 60       	ori	r18, 0x04	; 4
 11c:	21 83       	std	Z+1, r18	; 0x01
	USART0.BAUD = baud; 	//Set baudrate
 11e:	e0 e0       	ldi	r30, 0x00	; 0
 120:	f8 e0       	ldi	r31, 0x08	; 8
 122:	60 87       	std	Z+8, r22	; 0x08
 124:	71 87       	std	Z+9, r23	; 0x09
278
279
	//USART.CTRLC CMODE bits default to: async, 1 stop bit, 8 bit character size
	USART0.CTRLB |= (1 << USART_RXEN_bp) | (1 << USART_TXEN_bp);	//Enable RX and TX
Petter Breedveld's avatar
Petter Breedveld committed
280
281
282
 126:	86 81       	ldd	r24, Z+6	; 0x06
 128:	80 6c       	ori	r24, 0xC0	; 192
 12a:	86 83       	std	Z+6, r24	; 0x06
283
284
285
	
	
	USART0.CTRLA |= (1 << USART_RXCIE_bp); //Enable interupts on RX
Petter Breedveld's avatar
Petter Breedveld committed
286
287
288
289
290
291
292
293
294
295
296
 12c:	85 81       	ldd	r24, Z+5	; 0x05
 12e:	80 68       	ori	r24, 0x80	; 128
 130:	85 83       	std	Z+5, r24	; 0x05
	
	fdevopen(uart_transmit, NULL); //This allows us to use printf instead of writing a single character at a time
 132:	60 e0       	ldi	r22, 0x00	; 0
 134:	70 e0       	ldi	r23, 0x00	; 0
 136:	8d e7       	ldi	r24, 0x7D	; 125
 138:	90 e0       	ldi	r25, 0x00	; 0
 13a:	0e 94 ae 00 	call	0x15c	; 0x15c <fdevopen>
 13e:	08 95       	ret
297

Petter Breedveld's avatar
Petter Breedveld committed
298
299
00000140 <__vector_22>:
	return 0;
300
301
}

Petter Breedveld's avatar
Petter Breedveld committed
302
303

//Interrupt service routine for receiving
304
ISR(USART0_RXC_vect){
Petter Breedveld's avatar
Petter Breedveld committed
305
306
307
308
309
310
 140:	1f 92       	push	r1
 142:	0f 92       	push	r0
 144:	0f b6       	in	r0, 0x3f	; 63
 146:	0f 92       	push	r0
 148:	11 24       	eor	r1, r1
 14a:	8f 93       	push	r24
311
312
	
	uint8_t data = USART0.RXDATAL; //We must read the data to clear the interrupt flag
Petter Breedveld's avatar
Petter Breedveld committed
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
 14c:	80 91 00 08 	lds	r24, 0x0800	; 0x800800 <__TEXT_REGION_LENGTH__+0x700800>
	//Here we can do something with data if we would want that
	
 150:	8f 91       	pop	r24
 152:	0f 90       	pop	r0
 154:	0f be       	out	0x3f, r0	; 63
 156:	0f 90       	pop	r0
 158:	1f 90       	pop	r1
 15a:	18 95       	reti

0000015c <fdevopen>:
 15c:	0f 93       	push	r16
 15e:	1f 93       	push	r17
 160:	cf 93       	push	r28
 162:	df 93       	push	r29
 164:	00 97       	sbiw	r24, 0x00	; 0
 166:	31 f4       	brne	.+12     	; 0x174 <fdevopen+0x18>
 168:	61 15       	cp	r22, r1
 16a:	71 05       	cpc	r23, r1
 16c:	19 f4       	brne	.+6      	; 0x174 <fdevopen+0x18>
 16e:	80 e0       	ldi	r24, 0x00	; 0
 170:	90 e0       	ldi	r25, 0x00	; 0
 172:	3a c0       	rjmp	.+116    	; 0x1e8 <fdevopen+0x8c>
 174:	8b 01       	movw	r16, r22
 176:	ec 01       	movw	r28, r24
 178:	6e e0       	ldi	r22, 0x0E	; 14
 17a:	70 e0       	ldi	r23, 0x00	; 0
 17c:	81 e0       	ldi	r24, 0x01	; 1
 17e:	90 e0       	ldi	r25, 0x00	; 0
 180:	0e 94 e1 02 	call	0x5c2	; 0x5c2 <calloc>
 184:	fc 01       	movw	r30, r24
 186:	89 2b       	or	r24, r25
 188:	91 f3       	breq	.-28     	; 0x16e <fdevopen+0x12>
 18a:	80 e8       	ldi	r24, 0x80	; 128
 18c:	83 83       	std	Z+3, r24	; 0x03
 18e:	01 15       	cp	r16, r1
 190:	11 05       	cpc	r17, r1
 192:	71 f0       	breq	.+28     	; 0x1b0 <fdevopen+0x54>
 194:	02 87       	std	Z+10, r16	; 0x0a
 196:	13 87       	std	Z+11, r17	; 0x0b
 198:	81 e8       	ldi	r24, 0x81	; 129
 19a:	83 83       	std	Z+3, r24	; 0x03
 19c:	80 91 3b 3e 	lds	r24, 0x3E3B	; 0x803e3b <__iob>
 1a0:	90 91 3c 3e 	lds	r25, 0x3E3C	; 0x803e3c <__iob+0x1>
 1a4:	89 2b       	or	r24, r25
 1a6:	21 f4       	brne	.+8      	; 0x1b0 <fdevopen+0x54>
 1a8:	e0 93 3b 3e 	sts	0x3E3B, r30	; 0x803e3b <__iob>
 1ac:	f0 93 3c 3e 	sts	0x3E3C, r31	; 0x803e3c <__iob+0x1>
 1b0:	20 97       	sbiw	r28, 0x00	; 0
 1b2:	c9 f0       	breq	.+50     	; 0x1e6 <fdevopen+0x8a>
 1b4:	c0 87       	std	Z+8, r28	; 0x08
 1b6:	d1 87       	std	Z+9, r29	; 0x09
 1b8:	83 81       	ldd	r24, Z+3	; 0x03
 1ba:	82 60       	ori	r24, 0x02	; 2
 1bc:	83 83       	std	Z+3, r24	; 0x03
 1be:	80 91 3d 3e 	lds	r24, 0x3E3D	; 0x803e3d <__iob+0x2>
 1c2:	90 91 3e 3e 	lds	r25, 0x3E3E	; 0x803e3e <__iob+0x3>
 1c6:	89 2b       	or	r24, r25
 1c8:	71 f4       	brne	.+28     	; 0x1e6 <fdevopen+0x8a>
 1ca:	e0 93 3d 3e 	sts	0x3E3D, r30	; 0x803e3d <__iob+0x2>
 1ce:	f0 93 3e 3e 	sts	0x3E3E, r31	; 0x803e3e <__iob+0x3>
 1d2:	80 91 3f 3e 	lds	r24, 0x3E3F	; 0x803e3f <__iob+0x4>
 1d6:	90 91 40 3e 	lds	r25, 0x3E40	; 0x803e40 <__iob+0x5>
 1da:	89 2b       	or	r24, r25
 1dc:	21 f4       	brne	.+8      	; 0x1e6 <fdevopen+0x8a>
 1de:	e0 93 3f 3e 	sts	0x3E3F, r30	; 0x803e3f <__iob+0x4>
 1e2:	f0 93 40 3e 	sts	0x3E40, r31	; 0x803e40 <__iob+0x5>
 1e6:	cf 01       	movw	r24, r30
 1e8:	df 91       	pop	r29
 1ea:	cf 91       	pop	r28
 1ec:	1f 91       	pop	r17
 1ee:	0f 91       	pop	r16
 1f0:	08 95       	ret

000001f2 <printf>:
 1f2:	a0 e0       	ldi	r26, 0x00	; 0
 1f4:	b0 e0       	ldi	r27, 0x00	; 0
 1f6:	ef ef       	ldi	r30, 0xFF	; 255
 1f8:	f0 e0       	ldi	r31, 0x00	; 0
 1fa:	0c 94 ed 04 	jmp	0x9da	; 0x9da <__prologue_saves__+0x20>
 1fe:	ae 01       	movw	r20, r28
 200:	4b 5f       	subi	r20, 0xFB	; 251
 202:	5f 4f       	sbci	r21, 0xFF	; 255
 204:	fa 01       	movw	r30, r20
 206:	61 91       	ld	r22, Z+
 208:	71 91       	ld	r23, Z+
 20a:	af 01       	movw	r20, r30
 20c:	80 91 3d 3e 	lds	r24, 0x3E3D	; 0x803e3d <__iob+0x2>
 210:	90 91 3e 3e 	lds	r25, 0x3E3E	; 0x803e3e <__iob+0x3>
 214:	0e 94 0f 01 	call	0x21e	; 0x21e <vfprintf>
 218:	e2 e0       	ldi	r30, 0x02	; 2
 21a:	0c 94 06 05 	jmp	0xa0c	; 0xa0c <__epilogue_restores__+0x20>

0000021e <vfprintf>:
 21e:	ac e0       	ldi	r26, 0x0C	; 12
 220:	b0 e0       	ldi	r27, 0x00	; 0
 222:	e5 e1       	ldi	r30, 0x15	; 21
 224:	f1 e0       	ldi	r31, 0x01	; 1
 226:	0c 94 dd 04 	jmp	0x9ba	; 0x9ba <__prologue_saves__>
 22a:	7c 01       	movw	r14, r24
 22c:	6b 01       	movw	r12, r22
 22e:	8a 01       	movw	r16, r20
 230:	fc 01       	movw	r30, r24
 232:	16 82       	std	Z+6, r1	; 0x06
 234:	17 82       	std	Z+7, r1	; 0x07
 236:	83 81       	ldd	r24, Z+3	; 0x03
 238:	81 ff       	sbrs	r24, 1
 23a:	bd c1       	rjmp	.+890    	; 0x5b6 <__LOCK_REGION_LENGTH__+0x1b6>
 23c:	ce 01       	movw	r24, r28
 23e:	01 96       	adiw	r24, 0x01	; 1
 240:	4c 01       	movw	r8, r24
 242:	f7 01       	movw	r30, r14
 244:	93 81       	ldd	r25, Z+3	; 0x03
 246:	f6 01       	movw	r30, r12
 248:	93 fd       	sbrc	r25, 3
 24a:	85 91       	lpm	r24, Z+
 24c:	93 ff       	sbrs	r25, 3
 24e:	81 91       	ld	r24, Z+
 250:	6f 01       	movw	r12, r30
 252:	88 23       	and	r24, r24
 254:	09 f4       	brne	.+2      	; 0x258 <vfprintf+0x3a>
 256:	ab c1       	rjmp	.+854    	; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae>
 258:	85 32       	cpi	r24, 0x25	; 37
 25a:	39 f4       	brne	.+14     	; 0x26a <vfprintf+0x4c>
 25c:	93 fd       	sbrc	r25, 3
 25e:	85 91       	lpm	r24, Z+
 260:	93 ff       	sbrs	r25, 3
 262:	81 91       	ld	r24, Z+
 264:	6f 01       	movw	r12, r30
 266:	85 32       	cpi	r24, 0x25	; 37
 268:	29 f4       	brne	.+10     	; 0x274 <vfprintf+0x56>
 26a:	b7 01       	movw	r22, r14
 26c:	90 e0       	ldi	r25, 0x00	; 0
 26e:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 272:	e7 cf       	rjmp	.-50     	; 0x242 <vfprintf+0x24>
 274:	51 2c       	mov	r5, r1
 276:	31 2c       	mov	r3, r1
 278:	20 e0       	ldi	r18, 0x00	; 0
 27a:	20 32       	cpi	r18, 0x20	; 32
 27c:	a0 f4       	brcc	.+40     	; 0x2a6 <vfprintf+0x88>
 27e:	8b 32       	cpi	r24, 0x2B	; 43
 280:	69 f0       	breq	.+26     	; 0x29c <vfprintf+0x7e>
 282:	30 f4       	brcc	.+12     	; 0x290 <vfprintf+0x72>
 284:	80 32       	cpi	r24, 0x20	; 32
 286:	59 f0       	breq	.+22     	; 0x29e <vfprintf+0x80>
 288:	83 32       	cpi	r24, 0x23	; 35
 28a:	69 f4       	brne	.+26     	; 0x2a6 <vfprintf+0x88>
 28c:	20 61       	ori	r18, 0x10	; 16
 28e:	2c c0       	rjmp	.+88     	; 0x2e8 <vfprintf+0xca>
 290:	8d 32       	cpi	r24, 0x2D	; 45
 292:	39 f0       	breq	.+14     	; 0x2a2 <vfprintf+0x84>
 294:	80 33       	cpi	r24, 0x30	; 48
 296:	39 f4       	brne	.+14     	; 0x2a6 <vfprintf+0x88>
 298:	21 60       	ori	r18, 0x01	; 1
 29a:	26 c0       	rjmp	.+76     	; 0x2e8 <vfprintf+0xca>
 29c:	22 60       	ori	r18, 0x02	; 2
 29e:	24 60       	ori	r18, 0x04	; 4
 2a0:	23 c0       	rjmp	.+70     	; 0x2e8 <vfprintf+0xca>
 2a2:	28 60       	ori	r18, 0x08	; 8
 2a4:	21 c0       	rjmp	.+66     	; 0x2e8 <vfprintf+0xca>
 2a6:	27 fd       	sbrc	r18, 7
 2a8:	27 c0       	rjmp	.+78     	; 0x2f8 <vfprintf+0xda>
 2aa:	30 ed       	ldi	r19, 0xD0	; 208
 2ac:	38 0f       	add	r19, r24
 2ae:	3a 30       	cpi	r19, 0x0A	; 10
 2b0:	78 f4       	brcc	.+30     	; 0x2d0 <vfprintf+0xb2>
 2b2:	26 ff       	sbrs	r18, 6
 2b4:	06 c0       	rjmp	.+12     	; 0x2c2 <vfprintf+0xa4>
 2b6:	fa e0       	ldi	r31, 0x0A	; 10
 2b8:	5f 9e       	mul	r5, r31
 2ba:	30 0d       	add	r19, r0
 2bc:	11 24       	eor	r1, r1
 2be:	53 2e       	mov	r5, r19
 2c0:	13 c0       	rjmp	.+38     	; 0x2e8 <vfprintf+0xca>
 2c2:	8a e0       	ldi	r24, 0x0A	; 10
 2c4:	38 9e       	mul	r3, r24
 2c6:	30 0d       	add	r19, r0
 2c8:	11 24       	eor	r1, r1
 2ca:	33 2e       	mov	r3, r19
 2cc:	20 62       	ori	r18, 0x20	; 32
 2ce:	0c c0       	rjmp	.+24     	; 0x2e8 <vfprintf+0xca>
 2d0:	8e 32       	cpi	r24, 0x2E	; 46
 2d2:	21 f4       	brne	.+8      	; 0x2dc <vfprintf+0xbe>
 2d4:	26 fd       	sbrc	r18, 6
 2d6:	6b c1       	rjmp	.+726    	; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae>
 2d8:	20 64       	ori	r18, 0x40	; 64
 2da:	06 c0       	rjmp	.+12     	; 0x2e8 <vfprintf+0xca>
 2dc:	8c 36       	cpi	r24, 0x6C	; 108
 2de:	11 f4       	brne	.+4      	; 0x2e4 <vfprintf+0xc6>
 2e0:	20 68       	ori	r18, 0x80	; 128
 2e2:	02 c0       	rjmp	.+4      	; 0x2e8 <vfprintf+0xca>
 2e4:	88 36       	cpi	r24, 0x68	; 104
 2e6:	41 f4       	brne	.+16     	; 0x2f8 <vfprintf+0xda>
 2e8:	f6 01       	movw	r30, r12
 2ea:	93 fd       	sbrc	r25, 3
 2ec:	85 91       	lpm	r24, Z+
 2ee:	93 ff       	sbrs	r25, 3
 2f0:	81 91       	ld	r24, Z+
 2f2:	6f 01       	movw	r12, r30
 2f4:	81 11       	cpse	r24, r1
 2f6:	c1 cf       	rjmp	.-126    	; 0x27a <vfprintf+0x5c>
 2f8:	98 2f       	mov	r25, r24
 2fa:	9f 7d       	andi	r25, 0xDF	; 223
 2fc:	95 54       	subi	r25, 0x45	; 69
 2fe:	93 30       	cpi	r25, 0x03	; 3
 300:	28 f4       	brcc	.+10     	; 0x30c <vfprintf+0xee>
 302:	0c 5f       	subi	r16, 0xFC	; 252
 304:	1f 4f       	sbci	r17, 0xFF	; 255
 306:	ff e3       	ldi	r31, 0x3F	; 63
 308:	f9 83       	std	Y+1, r31	; 0x01
 30a:	0d c0       	rjmp	.+26     	; 0x326 <vfprintf+0x108>
 30c:	83 36       	cpi	r24, 0x63	; 99
 30e:	31 f0       	breq	.+12     	; 0x31c <vfprintf+0xfe>
 310:	83 37       	cpi	r24, 0x73	; 115
 312:	71 f0       	breq	.+28     	; 0x330 <vfprintf+0x112>
 314:	83 35       	cpi	r24, 0x53	; 83
 316:	09 f0       	breq	.+2      	; 0x31a <vfprintf+0xfc>
 318:	5b c0       	rjmp	.+182    	; 0x3d0 <vfprintf+0x1b2>
 31a:	22 c0       	rjmp	.+68     	; 0x360 <vfprintf+0x142>
 31c:	f8 01       	movw	r30, r16
 31e:	80 81       	ld	r24, Z
 320:	89 83       	std	Y+1, r24	; 0x01
 322:	0e 5f       	subi	r16, 0xFE	; 254
 324:	1f 4f       	sbci	r17, 0xFF	; 255
 326:	44 24       	eor	r4, r4
 328:	43 94       	inc	r4
 32a:	51 2c       	mov	r5, r1
 32c:	54 01       	movw	r10, r8
 32e:	15 c0       	rjmp	.+42     	; 0x35a <vfprintf+0x13c>
 330:	38 01       	movw	r6, r16
 332:	f2 e0       	ldi	r31, 0x02	; 2
 334:	6f 0e       	add	r6, r31
 336:	71 1c       	adc	r7, r1
 338:	f8 01       	movw	r30, r16
 33a:	a0 80       	ld	r10, Z
 33c:	b1 80       	ldd	r11, Z+1	; 0x01
 33e:	26 ff       	sbrs	r18, 6
 340:	03 c0       	rjmp	.+6      	; 0x348 <vfprintf+0x12a>
 342:	65 2d       	mov	r22, r5
 344:	70 e0       	ldi	r23, 0x00	; 0
 346:	02 c0       	rjmp	.+4      	; 0x34c <vfprintf+0x12e>
 348:	6f ef       	ldi	r22, 0xFF	; 255
 34a:	7f ef       	ldi	r23, 0xFF	; 255
 34c:	c5 01       	movw	r24, r10
 34e:	2c 87       	std	Y+12, r18	; 0x0c
 350:	0e 94 3c 04 	call	0x878	; 0x878 <strnlen>
 354:	2c 01       	movw	r4, r24
 356:	83 01       	movw	r16, r6
 358:	2c 85       	ldd	r18, Y+12	; 0x0c
 35a:	2f 77       	andi	r18, 0x7F	; 127
 35c:	22 2e       	mov	r2, r18
 35e:	17 c0       	rjmp	.+46     	; 0x38e <vfprintf+0x170>
 360:	38 01       	movw	r6, r16
 362:	f2 e0       	ldi	r31, 0x02	; 2
 364:	6f 0e       	add	r6, r31
 366:	71 1c       	adc	r7, r1
 368:	f8 01       	movw	r30, r16
 36a:	a0 80       	ld	r10, Z
 36c:	b1 80       	ldd	r11, Z+1	; 0x01
 36e:	26 ff       	sbrs	r18, 6
 370:	03 c0       	rjmp	.+6      	; 0x378 <vfprintf+0x15a>
 372:	65 2d       	mov	r22, r5
 374:	70 e0       	ldi	r23, 0x00	; 0
 376:	02 c0       	rjmp	.+4      	; 0x37c <vfprintf+0x15e>
 378:	6f ef       	ldi	r22, 0xFF	; 255
 37a:	7f ef       	ldi	r23, 0xFF	; 255
 37c:	c5 01       	movw	r24, r10
 37e:	2c 87       	std	Y+12, r18	; 0x0c
 380:	0e 94 2a 04 	call	0x854	; 0x854 <strnlen_P>
 384:	2c 01       	movw	r4, r24
 386:	2c 85       	ldd	r18, Y+12	; 0x0c
 388:	20 68       	ori	r18, 0x80	; 128
 38a:	22 2e       	mov	r2, r18
 38c:	83 01       	movw	r16, r6
 38e:	23 fc       	sbrc	r2, 3
 390:	1b c0       	rjmp	.+54     	; 0x3c8 <vfprintf+0x1aa>
 392:	83 2d       	mov	r24, r3
 394:	90 e0       	ldi	r25, 0x00	; 0
 396:	48 16       	cp	r4, r24
 398:	59 06       	cpc	r5, r25
 39a:	b0 f4       	brcc	.+44     	; 0x3c8 <vfprintf+0x1aa>
 39c:	b7 01       	movw	r22, r14
 39e:	80 e2       	ldi	r24, 0x20	; 32
 3a0:	90 e0       	ldi	r25, 0x00	; 0
 3a2:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 3a6:	3a 94       	dec	r3
 3a8:	f4 cf       	rjmp	.-24     	; 0x392 <vfprintf+0x174>
 3aa:	f5 01       	movw	r30, r10
 3ac:	27 fc       	sbrc	r2, 7
 3ae:	85 91       	lpm	r24, Z+
 3b0:	27 fe       	sbrs	r2, 7
 3b2:	81 91       	ld	r24, Z+
 3b4:	5f 01       	movw	r10, r30
 3b6:	b7 01       	movw	r22, r14
 3b8:	90 e0       	ldi	r25, 0x00	; 0
 3ba:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 3be:	31 10       	cpse	r3, r1
 3c0:	3a 94       	dec	r3
 3c2:	f1 e0       	ldi	r31, 0x01	; 1
 3c4:	4f 1a       	sub	r4, r31
 3c6:	51 08       	sbc	r5, r1
 3c8:	41 14       	cp	r4, r1
 3ca:	51 04       	cpc	r5, r1
 3cc:	71 f7       	brne	.-36     	; 0x3aa <vfprintf+0x18c>
 3ce:	e5 c0       	rjmp	.+458    	; 0x59a <__LOCK_REGION_LENGTH__+0x19a>
 3d0:	84 36       	cpi	r24, 0x64	; 100
 3d2:	11 f0       	breq	.+4      	; 0x3d8 <vfprintf+0x1ba>
 3d4:	89 36       	cpi	r24, 0x69	; 105
 3d6:	39 f5       	brne	.+78     	; 0x426 <__LOCK_REGION_LENGTH__+0x26>
 3d8:	f8 01       	movw	r30, r16
 3da:	27 ff       	sbrs	r18, 7
 3dc:	07 c0       	rjmp	.+14     	; 0x3ec <vfprintf+0x1ce>
 3de:	60 81       	ld	r22, Z
 3e0:	71 81       	ldd	r23, Z+1	; 0x01
 3e2:	82 81       	ldd	r24, Z+2	; 0x02
 3e4:	93 81       	ldd	r25, Z+3	; 0x03
 3e6:	0c 5f       	subi	r16, 0xFC	; 252
 3e8:	1f 4f       	sbci	r17, 0xFF	; 255
 3ea:	08 c0       	rjmp	.+16     	; 0x3fc <vfprintf+0x1de>
 3ec:	60 81       	ld	r22, Z
 3ee:	71 81       	ldd	r23, Z+1	; 0x01
 3f0:	07 2e       	mov	r0, r23
 3f2:	00 0c       	add	r0, r0
 3f4:	88 0b       	sbc	r24, r24
 3f6:	99 0b       	sbc	r25, r25
 3f8:	0e 5f       	subi	r16, 0xFE	; 254
 3fa:	1f 4f       	sbci	r17, 0xFF	; 255
 3fc:	2f 76       	andi	r18, 0x6F	; 111
 3fe:	72 2e       	mov	r7, r18
 400:	97 ff       	sbrs	r25, 7
 402:	09 c0       	rjmp	.+18     	; 0x416 <__LOCK_REGION_LENGTH__+0x16>
 404:	90 95       	com	r25
 406:	80 95       	com	r24
 408:	70 95       	com	r23
 40a:	61 95       	neg	r22
 40c:	7f 4f       	sbci	r23, 0xFF	; 255
 40e:	8f 4f       	sbci	r24, 0xFF	; 255
 410:	9f 4f       	sbci	r25, 0xFF	; 255
 412:	20 68       	ori	r18, 0x80	; 128
 414:	72 2e       	mov	r7, r18
 416:	2a e0       	ldi	r18, 0x0A	; 10
 418:	30 e0       	ldi	r19, 0x00	; 0
 41a:	a4 01       	movw	r20, r8
 41c:	0e 94 7f 04 	call	0x8fe	; 0x8fe <__ultoa_invert>
 420:	a8 2e       	mov	r10, r24
 422:	a8 18       	sub	r10, r8
 424:	44 c0       	rjmp	.+136    	; 0x4ae <__LOCK_REGION_LENGTH__+0xae>
 426:	85 37       	cpi	r24, 0x75	; 117
 428:	29 f4       	brne	.+10     	; 0x434 <__LOCK_REGION_LENGTH__+0x34>
 42a:	2f 7e       	andi	r18, 0xEF	; 239
 42c:	b2 2e       	mov	r11, r18
 42e:	2a e0       	ldi	r18, 0x0A	; 10
 430:	30 e0       	ldi	r19, 0x00	; 0
 432:	25 c0       	rjmp	.+74     	; 0x47e <__LOCK_REGION_LENGTH__+0x7e>
 434:	f2 2f       	mov	r31, r18
 436:	f9 7f       	andi	r31, 0xF9	; 249
 438:	bf 2e       	mov	r11, r31
 43a:	8f 36       	cpi	r24, 0x6F	; 111
 43c:	c1 f0       	breq	.+48     	; 0x46e <__LOCK_REGION_LENGTH__+0x6e>
 43e:	18 f4       	brcc	.+6      	; 0x446 <__LOCK_REGION_LENGTH__+0x46>
 440:	88 35       	cpi	r24, 0x58	; 88
 442:	79 f0       	breq	.+30     	; 0x462 <__LOCK_REGION_LENGTH__+0x62>
 444:	b4 c0       	rjmp	.+360    	; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae>
 446:	80 37       	cpi	r24, 0x70	; 112
 448:	19 f0       	breq	.+6      	; 0x450 <__LOCK_REGION_LENGTH__+0x50>
 44a:	88 37       	cpi	r24, 0x78	; 120
 44c:	21 f0       	breq	.+8      	; 0x456 <__LOCK_REGION_LENGTH__+0x56>
 44e:	af c0       	rjmp	.+350    	; 0x5ae <__LOCK_REGION_LENGTH__+0x1ae>
 450:	2f 2f       	mov	r18, r31
 452:	20 61       	ori	r18, 0x10	; 16
 454:	b2 2e       	mov	r11, r18
 456:	b4 fe       	sbrs	r11, 4
 458:	0d c0       	rjmp	.+26     	; 0x474 <__LOCK_REGION_LENGTH__+0x74>
 45a:	8b 2d       	mov	r24, r11
 45c:	84 60       	ori	r24, 0x04	; 4
 45e:	b8 2e       	mov	r11, r24
 460:	09 c0       	rjmp	.+18     	; 0x474 <__LOCK_REGION_LENGTH__+0x74>
 462:	24 ff       	sbrs	r18, 4
 464:	0a c0       	rjmp	.+20     	; 0x47a <__LOCK_REGION_LENGTH__+0x7a>
 466:	9f 2f       	mov	r25, r31
 468:	96 60       	ori	r25, 0x06	; 6
 46a:	b9 2e       	mov	r11, r25
 46c:	06 c0       	rjmp	.+12     	; 0x47a <__LOCK_REGION_LENGTH__+0x7a>
 46e:	28 e0       	ldi	r18, 0x08	; 8
 470:	30 e0       	ldi	r19, 0x00	; 0
 472:	05 c0       	rjmp	.+10     	; 0x47e <__LOCK_REGION_LENGTH__+0x7e>
 474:	20 e1       	ldi	r18, 0x10	; 16
 476:	30 e0       	ldi	r19, 0x00	; 0
 478:	02 c0       	rjmp	.+4      	; 0x47e <__LOCK_REGION_LENGTH__+0x7e>
 47a:	20 e1       	ldi	r18, 0x10	; 16
 47c:	32 e0       	ldi	r19, 0x02	; 2
 47e:	f8 01       	movw	r30, r16
 480:	b7 fe       	sbrs	r11, 7
 482:	07 c0       	rjmp	.+14     	; 0x492 <__LOCK_REGION_LENGTH__+0x92>
 484:	60 81       	ld	r22, Z
 486:	71 81       	ldd	r23, Z+1	; 0x01
 488:	82 81       	ldd	r24, Z+2	; 0x02
 48a:	93 81       	ldd	r25, Z+3	; 0x03
 48c:	0c 5f       	subi	r16, 0xFC	; 252
 48e:	1f 4f       	sbci	r17, 0xFF	; 255
 490:	06 c0       	rjmp	.+12     	; 0x49e <__LOCK_REGION_LENGTH__+0x9e>
 492:	60 81       	ld	r22, Z
 494:	71 81       	ldd	r23, Z+1	; 0x01
 496:	80 e0       	ldi	r24, 0x00	; 0
 498:	90 e0       	ldi	r25, 0x00	; 0
 49a:	0e 5f       	subi	r16, 0xFE	; 254
 49c:	1f 4f       	sbci	r17, 0xFF	; 255
 49e:	a4 01       	movw	r20, r8
 4a0:	0e 94 7f 04 	call	0x8fe	; 0x8fe <__ultoa_invert>
 4a4:	a8 2e       	mov	r10, r24
 4a6:	a8 18       	sub	r10, r8
 4a8:	fb 2d       	mov	r31, r11
 4aa:	ff 77       	andi	r31, 0x7F	; 127
 4ac:	7f 2e       	mov	r7, r31
 4ae:	76 fe       	sbrs	r7, 6
 4b0:	0b c0       	rjmp	.+22     	; 0x4c8 <__LOCK_REGION_LENGTH__+0xc8>
 4b2:	37 2d       	mov	r19, r7
 4b4:	3e 7f       	andi	r19, 0xFE	; 254
 4b6:	a5 14       	cp	r10, r5
 4b8:	50 f4       	brcc	.+20     	; 0x4ce <__LOCK_REGION_LENGTH__+0xce>
 4ba:	74 fe       	sbrs	r7, 4
 4bc:	0a c0       	rjmp	.+20     	; 0x4d2 <__LOCK_REGION_LENGTH__+0xd2>
 4be:	72 fc       	sbrc	r7, 2
 4c0:	08 c0       	rjmp	.+16     	; 0x4d2 <__LOCK_REGION_LENGTH__+0xd2>
 4c2:	37 2d       	mov	r19, r7
 4c4:	3e 7e       	andi	r19, 0xEE	; 238
 4c6:	05 c0       	rjmp	.+10     	; 0x4d2 <__LOCK_REGION_LENGTH__+0xd2>
 4c8:	ba 2c       	mov	r11, r10
 4ca:	37 2d       	mov	r19, r7
 4cc:	03 c0       	rjmp	.+6      	; 0x4d4 <__LOCK_REGION_LENGTH__+0xd4>
 4ce:	ba 2c       	mov	r11, r10
 4d0:	01 c0       	rjmp	.+2      	; 0x4d4 <__LOCK_REGION_LENGTH__+0xd4>
 4d2:	b5 2c       	mov	r11, r5
 4d4:	34 ff       	sbrs	r19, 4
 4d6:	0d c0       	rjmp	.+26     	; 0x4f2 <__LOCK_REGION_LENGTH__+0xf2>
 4d8:	fe 01       	movw	r30, r28
 4da:	ea 0d       	add	r30, r10
 4dc:	f1 1d       	adc	r31, r1
 4de:	80 81       	ld	r24, Z
 4e0:	80 33       	cpi	r24, 0x30	; 48
 4e2:	11 f4       	brne	.+4      	; 0x4e8 <__LOCK_REGION_LENGTH__+0xe8>
 4e4:	39 7e       	andi	r19, 0xE9	; 233
 4e6:	09 c0       	rjmp	.+18     	; 0x4fa <__LOCK_REGION_LENGTH__+0xfa>
 4e8:	32 ff       	sbrs	r19, 2
 4ea:	06 c0       	rjmp	.+12     	; 0x4f8 <__LOCK_REGION_LENGTH__+0xf8>
 4ec:	b3 94       	inc	r11
 4ee:	b3 94       	inc	r11
 4f0:	04 c0       	rjmp	.+8      	; 0x4fa <__LOCK_REGION_LENGTH__+0xfa>
 4f2:	83 2f       	mov	r24, r19
 4f4:	86 78       	andi	r24, 0x86	; 134
 4f6:	09 f0       	breq	.+2      	; 0x4fa <__LOCK_REGION_LENGTH__+0xfa>
 4f8:	b3 94       	inc	r11
 4fa:	33 fd       	sbrc	r19, 3
 4fc:	13 c0       	rjmp	.+38     	; 0x524 <__LOCK_REGION_LENGTH__+0x124>
 4fe:	30 ff       	sbrs	r19, 0
 500:	06 c0       	rjmp	.+12     	; 0x50e <__LOCK_REGION_LENGTH__+0x10e>
 502:	5a 2c       	mov	r5, r10
 504:	b3 14       	cp	r11, r3
 506:	18 f4       	brcc	.+6      	; 0x50e <__LOCK_REGION_LENGTH__+0x10e>
 508:	53 0c       	add	r5, r3
 50a:	5b 18       	sub	r5, r11
 50c:	b3 2c       	mov	r11, r3
 50e:	b3 14       	cp	r11, r3
 510:	68 f4       	brcc	.+26     	; 0x52c <__LOCK_REGION_LENGTH__+0x12c>
 512:	b7 01       	movw	r22, r14
 514:	80 e2       	ldi	r24, 0x20	; 32
 516:	90 e0       	ldi	r25, 0x00	; 0
 518:	3c 87       	std	Y+12, r19	; 0x0c
 51a:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 51e:	b3 94       	inc	r11
 520:	3c 85       	ldd	r19, Y+12	; 0x0c
 522:	f5 cf       	rjmp	.-22     	; 0x50e <__LOCK_REGION_LENGTH__+0x10e>
 524:	b3 14       	cp	r11, r3
 526:	10 f4       	brcc	.+4      	; 0x52c <__LOCK_REGION_LENGTH__+0x12c>
 528:	3b 18       	sub	r3, r11
 52a:	01 c0       	rjmp	.+2      	; 0x52e <__LOCK_REGION_LENGTH__+0x12e>
 52c:	31 2c       	mov	r3, r1
 52e:	34 ff       	sbrs	r19, 4
 530:	12 c0       	rjmp	.+36     	; 0x556 <__LOCK_REGION_LENGTH__+0x156>
 532:	b7 01       	movw	r22, r14
 534:	80 e3       	ldi	r24, 0x30	; 48
 536:	90 e0       	ldi	r25, 0x00	; 0
 538:	3c 87       	std	Y+12, r19	; 0x0c
 53a:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 53e:	3c 85       	ldd	r19, Y+12	; 0x0c
 540:	32 ff       	sbrs	r19, 2
 542:	17 c0       	rjmp	.+46     	; 0x572 <__LOCK_REGION_LENGTH__+0x172>
 544:	31 fd       	sbrc	r19, 1
 546:	03 c0       	rjmp	.+6      	; 0x54e <__LOCK_REGION_LENGTH__+0x14e>
 548:	88 e7       	ldi	r24, 0x78	; 120
 54a:	90 e0       	ldi	r25, 0x00	; 0
 54c:	02 c0       	rjmp	.+4      	; 0x552 <__LOCK_REGION_LENGTH__+0x152>
 54e:	88 e5       	ldi	r24, 0x58	; 88
 550:	90 e0       	ldi	r25, 0x00	; 0
 552:	b7 01       	movw	r22, r14
 554:	0c c0       	rjmp	.+24     	; 0x56e <__LOCK_REGION_LENGTH__+0x16e>
 556:	83 2f       	mov	r24, r19
 558:	86 78       	andi	r24, 0x86	; 134
 55a:	59 f0       	breq	.+22     	; 0x572 <__LOCK_REGION_LENGTH__+0x172>
 55c:	31 ff       	sbrs	r19, 1
 55e:	02 c0       	rjmp	.+4      	; 0x564 <__LOCK_REGION_LENGTH__+0x164>
 560:	8b e2       	ldi	r24, 0x2B	; 43
 562:	01 c0       	rjmp	.+2      	; 0x566 <__LOCK_REGION_LENGTH__+0x166>
 564:	80 e2       	ldi	r24, 0x20	; 32
 566:	37 fd       	sbrc	r19, 7
 568:	8d e2       	ldi	r24, 0x2D	; 45
 56a:	b7 01       	movw	r22, r14
 56c:	90 e0       	ldi	r25, 0x00	; 0
 56e:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 572:	a5 14       	cp	r10, r5
 574:	38 f4       	brcc	.+14     	; 0x584 <__LOCK_REGION_LENGTH__+0x184>
 576:	b7 01       	movw	r22, r14
 578:	80 e3       	ldi	r24, 0x30	; 48
 57a:	90 e0       	ldi	r25, 0x00	; 0
 57c:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 580:	5a 94       	dec	r5
 582:	f7 cf       	rjmp	.-18     	; 0x572 <__LOCK_REGION_LENGTH__+0x172>
 584:	aa 94       	dec	r10
 586:	f4 01       	movw	r30, r8
 588:	ea 0d       	add	r30, r10
 58a:	f1 1d       	adc	r31, r1
 58c:	80 81       	ld	r24, Z
 58e:	b7 01       	movw	r22, r14
 590:	90 e0       	ldi	r25, 0x00	; 0
 592:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 596:	a1 10       	cpse	r10, r1
 598:	f5 cf       	rjmp	.-22     	; 0x584 <__LOCK_REGION_LENGTH__+0x184>
 59a:	33 20       	and	r3, r3
 59c:	09 f4       	brne	.+2      	; 0x5a0 <__LOCK_REGION_LENGTH__+0x1a0>
 59e:	51 ce       	rjmp	.-862    	; 0x242 <vfprintf+0x24>
 5a0:	b7 01       	movw	r22, r14
 5a2:	80 e2       	ldi	r24, 0x20	; 32
 5a4:	90 e0       	ldi	r25, 0x00	; 0
 5a6:	0e 94 47 04 	call	0x88e	; 0x88e <fputc>
 5aa:	3a 94       	dec	r3
 5ac:	f6 cf       	rjmp	.-20     	; 0x59a <__LOCK_REGION_LENGTH__+0x19a>
 5ae:	f7 01       	movw	r30, r14
 5b0:	86 81       	ldd	r24, Z+6	; 0x06
 5b2:	97 81       	ldd	r25, Z+7	; 0x07
 5b4:	02 c0       	rjmp	.+4      	; 0x5ba <__LOCK_REGION_LENGTH__+0x1ba>
 5b6:	8f ef       	ldi	r24, 0xFF	; 255
 5b8:	9f ef       	ldi	r25, 0xFF	; 255
 5ba:	2c 96       	adiw	r28, 0x0c	; 12
 5bc:	e2 e1       	ldi	r30, 0x12	; 18
 5be:	0c 94 f6 04 	jmp	0x9ec	; 0x9ec <__epilogue_restores__>

000005c2 <calloc>:
 5c2:	0f 93       	push	r16
 5c4:	1f 93       	push	r17
 5c6:	cf 93       	push	r28
 5c8:	df 93       	push	r29
 5ca:	86 9f       	mul	r24, r22
 5cc:	80 01       	movw	r16, r0
 5ce:	87 9f       	mul	r24, r23
 5d0:	10 0d       	add	r17, r0
 5d2:	96 9f       	mul	r25, r22
 5d4:	10 0d       	add	r17, r0
 5d6:	11 24       	eor	r1, r1
 5d8:	c8 01       	movw	r24, r16
 5da:	0e 94 fd 02 	call	0x5fa	; 0x5fa <malloc>
 5de:	ec 01       	movw	r28, r24
 5e0:	00 97       	sbiw	r24, 0x00	; 0
 5e2:	29 f0       	breq	.+10     	; 0x5ee <calloc+0x2c>
 5e4:	a8 01       	movw	r20, r16
 5e6:	60 e0       	ldi	r22, 0x00	; 0
 5e8:	70 e0       	ldi	r23, 0x00	; 0
 5ea:	0e 94 35 04 	call	0x86a	; 0x86a <memset>
 5ee:	ce 01       	movw	r24, r28
 5f0:	df 91       	pop	r29
 5f2:	cf 91       	pop	r28
 5f4:	1f 91       	pop	r17
 5f6:	0f 91       	pop	r16
 5f8:	08 95       	ret

000005fa <malloc>:
 5fa:	cf 93       	push	r28
 5fc:	df 93       	push	r29
 5fe:	82 30       	cpi	r24, 0x02	; 2
 600:	91 05       	cpc	r25, r1
 602:	10 f4       	brcc	.+4      	; 0x608 <malloc+0xe>
 604:	82 e0       	ldi	r24, 0x02	; 2
 606:	90 e0       	ldi	r25, 0x00	; 0
 608:	e0 91 43 3e 	lds	r30, 0x3E43	; 0x803e43 <__flp>
 60c:	f0 91 44 3e 	lds	r31, 0x3E44	; 0x803e44 <__flp+0x1>
 610:	20 e0       	ldi	r18, 0x00	; 0
 612:	30 e0       	ldi	r19, 0x00	; 0
 614:	c0 e0       	ldi	r28, 0x00	; 0
 616:	d0 e0       	ldi	r29, 0x00	; 0
 618:	30 97       	sbiw	r30, 0x00	; 0
 61a:	11 f1       	breq	.+68     	; 0x660 <malloc+0x66>
 61c:	40 81       	ld	r20, Z
 61e:	51 81       	ldd	r21, Z+1	; 0x01
 620:	48 17       	cp	r20, r24
 622:	59 07       	cpc	r21, r25
 624:	c0 f0       	brcs	.+48     	; 0x656 <malloc+0x5c>
 626:	48 17       	cp	r20, r24
 628:	59 07       	cpc	r21, r25
 62a:	61 f4       	brne	.+24     	; 0x644 <malloc+0x4a>
 62c:	82 81       	ldd	r24, Z+2	; 0x02
 62e:	93 81       	ldd	r25, Z+3	; 0x03
 630:	20 97       	sbiw	r28, 0x00	; 0
 632:	19 f0       	breq	.+6      	; 0x63a <malloc+0x40>
 634:	8a 83       	std	Y+2, r24	; 0x02
 636:	9b 83       	std	Y+3, r25	; 0x03
 638:	2b c0       	rjmp	.+86     	; 0x690 <malloc+0x96>
 63a:	80 93 43 3e 	sts	0x3E43, r24	; 0x803e43 <__flp>
 63e:	90 93 44 3e 	sts	0x3E44, r25	; 0x803e44 <__flp+0x1>
 642:	26 c0       	rjmp	.+76     	; 0x690 <malloc+0x96>
 644:	21 15       	cp	r18, r1
 646:	31 05       	cpc	r19, r1
 648:	19 f0       	breq	.+6      	; 0x650 <malloc+0x56>
 64a:	42 17       	cp	r20, r18
 64c:	53 07       	cpc	r21, r19
 64e:	18 f4       	brcc	.+6      	; 0x656 <malloc+0x5c>
 650:	9a 01       	movw	r18, r20
 652:	be 01       	movw	r22, r28
 654:	df 01       	movw	r26, r30
 656:	ef 01       	movw	r28, r30
 658:	02 80       	ldd	r0, Z+2	; 0x02
 65a:	f3 81       	ldd	r31, Z+3	; 0x03
 65c:	e0 2d       	mov	r30, r0
 65e:	dc cf       	rjmp	.-72     	; 0x618 <malloc+0x1e>
 660:	21 15       	cp	r18, r1
 662:	31 05       	cpc	r19, r1
 664:	09 f1       	breq	.+66     	; 0x6a8 <malloc+0xae>
 666:	28 1b       	sub	r18, r24
 668:	39 0b       	sbc	r19, r25
 66a:	24 30       	cpi	r18, 0x04	; 4
 66c:	31 05       	cpc	r19, r1
 66e:	90 f4       	brcc	.+36     	; 0x694 <malloc+0x9a>
 670:	12 96       	adiw	r26, 0x02	; 2
 672:	8d 91       	ld	r24, X+
 674:	9c 91       	ld	r25, X
 676:	13 97       	sbiw	r26, 0x03	; 3
 678:	61 15       	cp	r22, r1
 67a:	71 05       	cpc	r23, r1
 67c:	21 f0       	breq	.+8      	; 0x686 <malloc+0x8c>
 67e:	fb 01       	movw	r30, r22
 680:	82 83       	std	Z+2, r24	; 0x02
 682:	93 83       	std	Z+3, r25	; 0x03
 684:	04 c0       	rjmp	.+8      	; 0x68e <malloc+0x94>
 686:	80 93 43 3e 	sts	0x3E43, r24	; 0x803e43 <__flp>
 68a:	90 93 44 3e 	sts	0x3E44, r25	; 0x803e44 <__flp+0x1>
 68e:	fd 01       	movw	r30, r26
 690:	32 96       	adiw	r30, 0x02	; 2
 692:	44 c0       	rjmp	.+136    	; 0x71c <malloc+0x122>
 694:	fd 01       	movw	r30, r26
 696:	e2 0f       	add	r30, r18
 698:	f3 1f       	adc	r31, r19
 69a:	81 93       	st	Z+, r24
 69c:	91 93       	st	Z+, r25
 69e:	22 50       	subi	r18, 0x02	; 2
 6a0:	31 09       	sbc	r19, r1
 6a2:	2d 93       	st	X+, r18
 6a4:	3c 93       	st	X, r19
 6a6:	3a c0       	rjmp	.+116    	; 0x71c <malloc+0x122>
 6a8:	20 91 41 3e 	lds	r18, 0x3E41	; 0x803e41 <__brkval>
 6ac:	30 91 42 3e 	lds	r19, 0x3E42	; 0x803e42 <__brkval+0x1>
 6b0:	23 2b       	or	r18, r19
 6b2:	41 f4       	brne	.+16     	; 0x6c4 <malloc+0xca>
 6b4:	20 91 02 3e 	lds	r18, 0x3E02	; 0x803e02 <__malloc_heap_start>
 6b8:	30 91 03 3e 	lds	r19, 0x3E03	; 0x803e03 <__malloc_heap_start+0x1>
 6bc:	20 93 41 3e 	sts	0x3E41, r18	; 0x803e41 <__brkval>
 6c0:	30 93 42 3e 	sts	0x3E42, r19	; 0x803e42 <__brkval+0x1>
 6c4:	20 91 00 3e 	lds	r18, 0x3E00	; 0x803e00 <__data_start>
 6c8:	30 91 01 3e 	lds	r19, 0x3E01	; 0x803e01 <__data_start+0x1>
 6cc:	21 15       	cp	r18, r1
 6ce:	31 05       	cpc	r19, r1
 6d0:	41 f4       	brne	.+16     	; 0x6e2 <malloc+0xe8>
 6d2:	2d b7       	in	r18, 0x3d	; 61
 6d4:	3e b7       	in	r19, 0x3e	; 62
 6d6:	40 91 04 3e 	lds	r20, 0x3E04	; 0x803e04 <__malloc_margin>
 6da:	50 91 05 3e 	lds	r21, 0x3E05	; 0x803e05 <__malloc_margin+0x1>
 6de:	24 1b       	sub	r18, r20
 6e0:	35 0b       	sbc	r19, r21
 6e2:	e0 91 41 3e 	lds	r30, 0x3E41	; 0x803e41 <__brkval>
 6e6:	f0 91 42 3e 	lds	r31, 0x3E42	; 0x803e42 <__brkval+0x1>
 6ea:	e2 17       	cp	r30, r18
 6ec:	f3 07       	cpc	r31, r19
 6ee:	a0 f4       	brcc	.+40     	; 0x718 <malloc+0x11e>
 6f0:	2e 1b       	sub	r18, r30
 6f2:	3f 0b       	sbc	r19, r31
 6f4:	28 17       	cp	r18, r24
 6f6:	39 07       	cpc	r19, r25
 6f8:	78 f0       	brcs	.+30     	; 0x718 <malloc+0x11e>
 6fa:	ac 01       	movw	r20, r24
 6fc:	4e 5f       	subi	r20, 0xFE	; 254
 6fe:	5f 4f       	sbci	r21, 0xFF	; 255
 700:	24 17       	cp	r18, r20
 702:	35 07       	cpc	r19, r21
 704:	48 f0       	brcs	.+18     	; 0x718 <malloc+0x11e>
 706:	4e 0f       	add	r20, r30
 708:	5f 1f       	adc	r21, r31
 70a:	40 93 41 3e 	sts	0x3E41, r20	; 0x803e41 <__brkval>
 70e:	50 93 42 3e 	sts	0x3E42, r21	; 0x803e42 <__brkval+0x1>
 712:	81 93       	st	Z+, r24
 714:	91 93       	st	Z+, r25
 716:	02 c0       	rjmp	.+4      	; 0x71c <malloc+0x122>
 718:	e0 e0       	ldi	r30, 0x00	; 0
 71a:	f0 e0       	ldi	r31, 0x00	; 0
 71c:	cf 01       	movw	r24, r30
 71e:	df 91       	pop	r29
 720:	cf 91       	pop	r28
 722:	08 95       	ret

00000724 <free>:
 724:	0f 93       	push	r16
 726:	1f 93       	push	r17
 728:	cf 93       	push	r28
 72a:	df 93       	push	r29
 72c:	00 97       	sbiw	r24, 0x00	; 0
 72e:	09 f4       	brne	.+2      	; 0x732 <free+0xe>
 730:	8c c0       	rjmp	.+280    	; 0x84a <free+0x126>
 732:	fc 01       	movw	r30, r24
 734:	32 97       	sbiw	r30, 0x02	; 2
 736:	12 82       	std	Z+2, r1	; 0x02
 738:	13 82       	std	Z+3, r1	; 0x03
 73a:	00 91 43 3e 	lds	r16, 0x3E43	; 0x803e43 <__flp>
 73e:	10 91 44 3e 	lds	r17, 0x3E44	; 0x803e44 <__flp+0x1>
 742:	01 15       	cp	r16, r1
 744:	11 05       	cpc	r17, r1
 746:	81 f4       	brne	.+32     	; 0x768 <free+0x44>
 748:	20 81       	ld	r18, Z
 74a:	31 81       	ldd	r19, Z+1	; 0x01
 74c:	82 0f       	add	r24, r18
 74e:	93 1f       	adc	r25, r19
 750:	20 91 41 3e 	lds	r18, 0x3E41	; 0x803e41 <__brkval>
 754:	30 91 42 3e 	lds	r19, 0x3E42	; 0x803e42 <__brkval+0x1>
 758:	28 17       	cp	r18, r24
 75a:	39 07       	cpc	r19, r25
 75c:	79 f5       	brne	.+94     	; 0x7bc <free+0x98>
 75e:	e0 93 41 3e 	sts	0x3E41, r30	; 0x803e41 <__brkval>
 762:	f0 93 42 3e 	sts	0x3E42, r31	; 0x803e42 <__brkval+0x1>
 766:	71 c0       	rjmp	.+226    	; 0x84a <free+0x126>
 768:	d8 01       	movw	r26, r16
 76a:	40 e0       	ldi	r20, 0x00	; 0
 76c:	50 e0       	ldi	r21, 0x00	; 0
 76e:	ae 17       	cp	r26, r30
 770:	bf 07       	cpc	r27, r31
 772:	50 f4       	brcc	.+20     	; 0x788 <free+0x64>
 774:	12 96       	adiw	r26, 0x02	; 2
 776:	2d 91       	ld	r18, X+
 778:	3c 91       	ld	r19, X
 77a:	13 97       	sbiw	r26, 0x03	; 3
 77c:	ad 01       	movw	r20, r26
 77e:	21 15       	cp	r18, r1
 780:	31 05       	cpc	r19, r1
 782:	09 f1       	breq	.+66     	; 0x7c6 <free+0xa2>
 784:	d9 01       	movw	r26, r18
 786:	f3 cf       	rjmp	.-26     	; 0x76e <free+0x4a>
 788:	9d 01       	movw	r18, r26
 78a:	da 01       	movw	r26, r20
 78c:	22 83       	std	Z+2, r18	; 0x02
 78e:	33 83       	std	Z+3, r19	; 0x03
 790:	60 81       	ld	r22, Z
 792:	71 81       	ldd	r23, Z+1	; 0x01
 794:	86 0f       	add	r24, r22
 796:	97 1f       	adc	r25, r23
 798:	82 17       	cp	r24, r18
 79a:	93 07       	cpc	r25, r19
 79c:	69 f4       	brne	.+26     	; 0x7b8 <free+0x94>
 79e:	ec 01       	movw	r28, r24
 7a0:	28 81       	ld	r18, Y
 7a2:	39 81       	ldd	r19, Y+1	; 0x01
 7a4:	26 0f       	add	r18, r22
 7a6:	37 1f       	adc	r19, r23
 7a8:	2e 5f       	subi	r18, 0xFE	; 254
 7aa:	3f 4f       	sbci	r19, 0xFF	; 255
 7ac:	20 83       	st	Z, r18
 7ae:	31 83       	std	Z+1, r19	; 0x01
 7b0:	8a 81       	ldd	r24, Y+2	; 0x02
 7b2:	9b 81       	ldd	r25, Y+3	; 0x03
 7b4:	82 83       	std	Z+2, r24	; 0x02
 7b6:	93 83       	std	Z+3, r25	; 0x03
 7b8:	45 2b       	or	r20, r21
 7ba:	29 f4       	brne	.+10     	; 0x7c6 <free+0xa2>
 7bc:	e0 93 43 3e 	sts	0x3E43, r30	; 0x803e43 <__flp>
 7c0:	f0 93 44 3e 	sts	0x3E44, r31	; 0x803e44 <__flp+0x1>
 7c4:	42 c0       	rjmp	.+132    	; 0x84a <free+0x126>
 7c6:	12 96       	adiw	r26, 0x02	; 2
 7c8:	ed 93       	st	X+, r30
 7ca:	fc 93       	st	X, r31
 7cc:	13 97       	sbiw	r26, 0x03	; 3
 7ce:	ed 01       	movw	r28, r26
 7d0:	49 91       	ld	r20, Y+
 7d2:	59 91       	ld	r21, Y+
 7d4:	9e 01       	movw	r18, r28
 7d6:	24 0f       	add	r18, r20
 7d8:	35 1f       	adc	r19, r21
 7da:	e2 17       	cp	r30, r18
 7dc:	f3 07       	cpc	r31, r19
 7de:	71 f4       	brne	.+28     	; 0x7fc <free+0xd8>
 7e0:	80 81       	ld	r24, Z
 7e2:	91 81       	ldd	r25, Z+1	; 0x01
 7e4:	84 0f       	add	r24, r20
 7e6:	95 1f       	adc	r25, r21
 7e8:	02 96       	adiw	r24, 0x02	; 2
 7ea:	8d 93       	st	X+, r24
 7ec:	9c 93       	st	X, r25
 7ee:	11 97       	sbiw	r26, 0x01	; 1
 7f0:	82 81       	ldd	r24, Z+2	; 0x02
 7f2:	93 81       	ldd	r25, Z+3	; 0x03
 7f4:	12 96       	adiw	r26, 0x02	; 2
 7f6:	8d 93       	st	X+, r24
 7f8:	9c 93       	st	X, r25
 7fa:	13 97       	sbiw	r26, 0x03	; 3
 7fc:	e0 e0       	ldi	r30, 0x00	; 0
 7fe:	f0 e0       	ldi	r31, 0x00	; 0
 800:	d8 01       	movw	r26, r16
 802:	12 96       	adiw	r26, 0x02	; 2
 804:	8d 91       	ld	r24, X+
 806:	9c 91       	ld	r25, X
 808:	13 97       	sbiw	r26, 0x03	; 3
 80a:	00 97       	sbiw	r24, 0x00	; 0
 80c:	19 f0       	breq	.+6      	; 0x814 <free+0xf0>
 80e:	f8 01       	movw	r30, r16
 810:	8c 01       	movw	r16, r24
 812:	f6 cf       	rjmp	.-20     	; 0x800 <free+0xdc>
 814:	8d 91       	ld	r24, X+
 816:	9c 91       	ld	r25, X
 818:	98 01       	movw	r18, r16
 81a:	2e 5f       	subi	r18, 0xFE	; 254
 81c:	3f 4f       	sbci	r19, 0xFF	; 255
 81e:	82 0f       	add	r24, r18
 820:	93 1f       	adc	r25, r19
 822:	20 91 41 3e 	lds	r18, 0x3E41	; 0x803e41 <__brkval>
 826:	30 91 42 3e 	lds	r19, 0x3E42	; 0x803e42 <__brkval+0x1>
 82a:	28 17       	cp	r18, r24
 82c:	39 07       	cpc	r19, r25
 82e:	69 f4       	brne	.+26     	; 0x84a <free+0x126>
 830:	30 97       	sbiw	r30, 0x00	; 0
 832:	29 f4       	brne	.+10     	; 0x83e <free+0x11a>
 834:	10 92 43 3e 	sts	0x3E43, r1	; 0x803e43 <__flp>
 838:	10 92 44 3e 	sts	0x3E44, r1	; 0x803e44 <__flp+0x1>
 83c:	02 c0       	rjmp	.+4      	; 0x842 <free+0x11e>
 83e:	12 82       	std	Z+2, r1	; 0x02
 840:	13 82       	std	Z+3, r1	; 0x03
 842:	00 93 41 3e 	sts	0x3E41, r16	; 0x803e41 <__brkval>
 846:	10 93 42 3e 	sts	0x3E42, r17	; 0x803e42 <__brkval+0x1>
 84a:	df 91       	pop	r29
 84c:	cf 91       	pop	r28
 84e:	1f 91       	pop	r17
 850:	0f 91       	pop	r16
 852:	08 95       	ret

00000854 <strnlen_P>:
 854:	fc 01       	movw	r30, r24
 856:	05 90       	lpm	r0, Z+
 858:	61 50       	subi	r22, 0x01	; 1
 85a:	70 40       	sbci	r23, 0x00	; 0
 85c:	01 10       	cpse	r0, r1
 85e:	d8 f7       	brcc	.-10     	; 0x856 <strnlen_P+0x2>
 860:	80 95       	com	r24
 862:	90 95       	com	r25
 864:	8e 0f       	add	r24, r30
 866:	9f 1f       	adc	r25, r31
 868:	08 95       	ret

0000086a <memset>:
 86a:	dc 01       	movw	r26, r24
 86c:	01 c0       	rjmp	.+2      	; 0x870 <memset+0x6>
 86e:	6d 93       	st	X+, r22
 870:	41 50       	subi	r20, 0x01	; 1
 872:	50 40       	sbci	r21, 0x00	; 0
 874:	e0 f7       	brcc	.-8      	; 0x86e <memset+0x4>
 876:	08 95       	ret

00000878 <strnlen>:
 878:	fc 01       	movw	r30, r24
 87a:	61 50       	subi	r22, 0x01	; 1
 87c:	70 40       	sbci	r23, 0x00	; 0
 87e:	01 90       	ld	r0, Z+
 880:	01 10       	cpse	r0, r1
 882:	d8 f7       	brcc	.-10     	; 0x87a <strnlen+0x2>
 884:	80 95       	com	r24
 886:	90 95       	com	r25
 888:	8e 0f       	add	r24, r30
 88a:	9f 1f       	adc	r25, r31
 88c:	08 95       	ret

0000088e <fputc>:
 88e:	0f 93       	push	r16
 890:	1f 93       	push	r17
 892:	cf 93       	push	r28
 894:	df 93       	push	r29
 896:	fb 01       	movw	r30, r22
 898:	23 81       	ldd	r18, Z+3	; 0x03
 89a:	21 fd       	sbrc	r18, 1
 89c:	03 c0       	rjmp	.+6      	; 0x8a4 <fputc+0x16>
 89e:	8f ef       	ldi	r24, 0xFF	; 255
 8a0:	9f ef       	ldi	r25, 0xFF	; 255
 8a2:	28 c0       	rjmp	.+80     	; 0x8f4 <fputc+0x66>
 8a4:	22 ff       	sbrs	r18, 2
 8a6:	16 c0       	rjmp	.+44     	; 0x8d4 <fputc+0x46>
 8a8:	46 81       	ldd	r20, Z+6	; 0x06
 8aa:	57 81       	ldd	r21, Z+7	; 0x07
 8ac:	24 81       	ldd	r18, Z+4	; 0x04
 8ae:	35 81       	ldd	r19, Z+5	; 0x05
 8b0:	42 17       	cp	r20, r18
 8b2:	53 07       	cpc	r21, r19
 8b4:	44 f4       	brge	.+16     	; 0x8c6 <fputc+0x38>
 8b6:	a0 81       	ld	r26, Z
 8b8:	b1 81       	ldd	r27, Z+1	; 0x01
 8ba:	9d 01       	movw	r18, r26
 8bc:	2f 5f       	subi	r18, 0xFF	; 255
 8be:	3f 4f       	sbci	r19, 0xFF	; 255
 8c0:	20 83       	st	Z, r18
 8c2:	31 83       	std	Z+1, r19	; 0x01
 8c4:	8c 93       	st	X, r24
 8c6:	26 81       	ldd	r18, Z+6	; 0x06
 8c8:	37 81       	ldd	r19, Z+7	; 0x07
 8ca:	2f 5f       	subi	r18, 0xFF	; 255
 8cc:	3f 4f       	sbci	r19, 0xFF	; 255
 8ce:	26 83       	std	Z+6, r18	; 0x06
 8d0:	37 83       	std	Z+7, r19	; 0x07
 8d2:	10 c0       	rjmp	.+32     	; 0x8f4 <fputc+0x66>
 8d4:	eb 01       	movw	r28, r22
 8d6:	09 2f       	mov	r16, r25
 8d8:	18 2f       	mov	r17, r24
 8da:	00 84       	ldd	r0, Z+8	; 0x08
 8dc:	f1 85       	ldd	r31, Z+9	; 0x09
 8de:	e0 2d       	mov	r30, r0
 8e0:	09 95       	icall
 8e2:	89 2b       	or	r24, r25
 8e4:	e1 f6       	brne	.-72     	; 0x89e <fputc+0x10>
 8e6:	8e 81       	ldd	r24, Y+6	; 0x06
 8e8:	9f 81       	ldd	r25, Y+7	; 0x07
 8ea:	01 96       	adiw	r24, 0x01	; 1
 8ec:	8e 83       	std	Y+6, r24	; 0x06
 8ee:	9f 83       	std	Y+7, r25	; 0x07
 8f0:	81 2f       	mov	r24, r17
 8f2:	90 2f       	mov	r25, r16
 8f4:	df 91       	pop	r29
 8f6:	cf 91       	pop	r28
 8f8:	1f 91       	pop	r17
 8fa:	0f 91       	pop	r16
 8fc:	08 95       	ret

000008fe <__ultoa_invert>:
 8fe:	fa 01       	movw	r30, r20
 900:	aa 27       	eor	r26, r26
 902:	28 30       	cpi	r18, 0x08	; 8
 904:	51 f1       	breq	.+84     	; 0x95a <__ultoa_invert+0x5c>
 906:	20 31       	cpi	r18, 0x10	; 16
 908:	81 f1       	breq	.+96     	; 0x96a <__ultoa_invert+0x6c>
 90a:	e8 94       	clt
 90c:	6f 93       	push	r22
 90e:	6e 7f       	andi	r22, 0xFE	; 254
 910:	6e 5f       	subi	r22, 0xFE	; 254
 912:	7f 4f       	sbci	r23, 0xFF	; 255
 914:	8f 4f       	sbci	r24, 0xFF	; 255
 916:	9f 4f       	sbci	r25, 0xFF	; 255
 918:	af 4f       	sbci	r26, 0xFF	; 255
 91a:	b1 e0       	ldi	r27, 0x01	; 1
 91c:	3e d0       	rcall	.+124    	; 0x99a <__ultoa_invert+0x9c>
 91e:	b4 e0       	ldi	r27, 0x04	; 4
 920:	3c d0       	rcall	.+120    	; 0x99a <__ultoa_invert+0x9c>
 922:	67 0f       	add	r22, r23
 924:	78 1f       	adc	r23, r24
 926:	89 1f       	adc	r24, r25
 928:	9a 1f       	adc	r25, r26
 92a:	a1 1d       	adc	r26, r1
 92c:	68 0f       	add	r22, r24
 92e:	79 1f       	adc	r23, r25
 930:	8a 1f       	adc	r24, r26
 932:	91 1d       	adc	r25, r1
 934:	a1 1d       	adc	r26, r1
 936:	6a 0f       	add	r22, r26
 938:	71 1d       	adc	r23, r1
 93a:	81 1d       	adc	r24, r1
 93c:	91 1d       	adc	r25, r1
 93e:	a1 1d       	adc	r26, r1
 940:	20 d0       	rcall	.+64     	; 0x982 <__ultoa_invert+0x84>
 942:	09 f4       	brne	.+2      	; 0x946 <__ultoa_invert+0x48>
 944:	68 94       	set
 946:	3f 91       	pop	r19
 948:	2a e0       	ldi	r18, 0x0A	; 10
 94a:	26 9f       	mul	r18, r22
 94c:	11 24       	eor	r1, r1
 94e:	30 19       	sub	r19, r0
 950:	30 5d       	subi	r19, 0xD0	; 208
 952:	31 93       	st	Z+, r19
 954:	de f6       	brtc	.-74     	; 0x90c <__ultoa_invert+0xe>
 956:	cf 01       	movw	r24, r30
 958:	08 95       	ret
 95a:	46 2f       	mov	r20, r22
 95c:	47 70       	andi	r20, 0x07	; 7
 95e:	40 5d       	subi	r20, 0xD0	; 208
 960:	41 93       	st	Z+, r20
 962:	b3 e0       	ldi	r27, 0x03	; 3
 964:	0f d0       	rcall	.+30     	; 0x984 <__ultoa_invert+0x86>
 966:	c9 f7       	brne	.-14     	; 0x95a <__ultoa_invert+0x5c>
 968:	f6 cf       	rjmp	.-20     	; 0x956 <__ultoa_invert+0x58>
 96a:	46 2f       	mov	r20, r22
 96c:	4f 70       	andi	r20, 0x0F	; 15
 96e:	40 5d       	subi	r20, 0xD0	; 208
 970:	4a 33       	cpi	r20, 0x3A	; 58
 972:	18 f0       	brcs	.+6      	; 0x97a <__ultoa_invert+0x7c>
 974:	49 5d       	subi	r20, 0xD9	; 217
 976:	31 fd       	sbrc	r19, 1
 978:	40 52       	subi	r20, 0x20	; 32
 97a:	41 93       	st	Z+, r20
 97c:	02 d0       	rcall	.+4      	; 0x982 <__ultoa_invert+0x84>
 97e:	a9 f7       	brne	.-22     	; 0x96a <__ultoa_invert+0x6c>
 980:	ea cf       	rjmp	.-44     	; 0x956 <__ultoa_invert+0x58>
 982:	b4 e0       	ldi	r27, 0x04	; 4
 984:	a6 95       	lsr	r26
 986:	97 95       	ror	r25
 988:	87 95       	ror	r24
 98a:	77 95       	ror	r23
 98c:	67 95       	ror	r22
 98e:	ba 95       	dec	r27
 990:	c9 f7       	brne	.-14     	; 0x984 <__ultoa_invert+0x86>
 992:	00 97       	sbiw	r24, 0x00	; 0
 994:	61 05       	cpc	r22, r1
 996:	71 05       	cpc	r23, r1
 998:	08 95       	ret
 99a:	9b 01       	movw	r18, r22
 99c:	ac 01       	movw	r20, r24
 99e:	0a 2e       	mov	r0, r26
 9a0:	06 94       	lsr	r0
 9a2:	57 95       	ror	r21
 9a4:	47 95       	ror	r20
 9a6:	37 95       	ror	r19
 9a8:	27 95       	ror	r18
 9aa:	ba 95       	dec	r27
 9ac:	c9 f7       	brne	.-14     	; 0x9a0 <__ultoa_invert+0xa2>
 9ae:	62 0f       	add	r22, r18
 9b0:	73 1f       	adc	r23, r19
 9b2:	84 1f       	adc	r24, r20
 9b4:	95 1f       	adc	r25, r21
 9b6:	a0 1d       	adc	r26, r0
 9b8:	08 95       	ret

000009ba <__prologue_saves__>:
 9ba:	2f 92       	push	r2
 9bc:	3f 92       	push	r3
 9be:	4f 92       	push	r4
 9c0:	5f 92       	push	r5
 9c2:	6f 92       	push	r6
 9c4:	7f 92       	push	r7
 9c6:	8f 92       	push	r8
 9c8:	9f 92       	push	r9
 9ca:	af 92       	push	r10
 9cc:	bf 92       	push	r11
 9ce:	cf 92       	push	r12
 9d0:	df 92       	push	r13
 9d2:	ef 92       	push	r14
 9d4:	ff 92       	push	r15
 9d6:	0f 93       	push	r16
 9d8:	1f 93       	push	r17
 9da:	cf 93       	push	r28
 9dc:	df 93       	push	r29
 9de:	cd b7       	in	r28, 0x3d	; 61
 9e0:	de b7       	in	r29, 0x3e	; 62
 9e2:	ca 1b       	sub	r28, r26
 9e4:	db 0b       	sbc	r29, r27
 9e6:	cd bf       	out	0x3d, r28	; 61
 9e8:	de bf       	out	0x3e, r29	; 62
 9ea:	09 94       	ijmp

000009ec <__epilogue_restores__>:
 9ec:	2a 88       	ldd	r2, Y+18	; 0x12
 9ee:	39 88       	ldd	r3, Y+17	; 0x11
 9f0:	48 88       	ldd	r4, Y+16	; 0x10
 9f2:	5f 84       	ldd	r5, Y+15	; 0x0f
 9f4:	6e 84       	ldd	r6, Y+14	; 0x0e
 9f6:	7d 84       	ldd	r7, Y+13	; 0x0d
 9f8:	8c 84       	ldd	r8, Y+12	; 0x0c
 9fa:	9b 84       	ldd	r9, Y+11	; 0x0b
 9fc:	aa 84       	ldd	r10, Y+10	; 0x0a
 9fe:	b9 84       	ldd	r11, Y+9	; 0x09
 a00:	c8 84       	ldd	r12, Y+8	; 0x08
 a02:	df 80       	ldd	r13, Y+7	; 0x07
 a04:	ee 80       	ldd	r14, Y+6	; 0x06
 a06:	fd 80       	ldd	r15, Y+5	; 0x05
 a08:	0c 81       	ldd	r16, Y+4	; 0x04
 a0a:	1b 81       	ldd	r17, Y+3	; 0x03
 a0c:	aa 81       	ldd	r26, Y+2	; 0x02
 a0e:	b9 81       	ldd	r27, Y+1	; 0x01
 a10:	ce 0f       	add	r28, r30
 a12:	d1 1d       	adc	r29, r1
 a14:	cd bf       	out	0x3d, r28	; 61
 a16:	de bf       	out	0x3e, r29	; 62
 a18:	ed 01       	movw	r28, r26
 a1a:	08 95       	ret

00000a1c <_exit>:
 a1c:	f8 94       	cli

00000a1e <__stop_program>:
 a1e:	ff cf       	rjmp	.-2      	; 0xa1e <__stop_program>