mirror of
1
0
Fork 0
avr_demo/tpic6b595_shiftout/main.lss

1408 lines
49 KiB
Plaintext

main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000024 00800100 000009c8 00000a5c 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 000009c8 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 0000044e 00800124 00800124 00000a80 2**0
ALLOC
3 .stab 00000f0c 00000000 00000000 00000a80 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000257 00000000 00000000 0000198c 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_aranges 00000188 00000000 00000000 00001be8 2**3
CONTENTS, READONLY, DEBUGGING
6 .debug_info 00001243 00000000 00000000 00001d70 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 00000810 00000000 00000000 00002fb3 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 000008dd 00000000 00000000 000037c3 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 000001f4 00000000 00000000 000040a0 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 000002e0 00000000 00000000 00004294 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 0000090c 00000000 00000000 00004574 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_ranges 00000090 00000000 00000000 00004e80 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
48: 0c 94 c9 00 jmp 0x192 ; 0x192 <__vector_18>
4c: 0c 94 09 01 jmp 0x212 ; 0x212 <__vector_19>
50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
00000068 <__ctors_end>:
68: 11 24 eor r1, r1
6a: 1f be out 0x3f, r1 ; 63
6c: cf ef ldi r28, 0xFF ; 255
6e: d8 e0 ldi r29, 0x08 ; 8
70: de bf out 0x3e, r29 ; 62
72: cd bf out 0x3d, r28 ; 61
00000074 <__do_copy_data>:
74: 11 e0 ldi r17, 0x01 ; 1
76: a0 e0 ldi r26, 0x00 ; 0
78: b1 e0 ldi r27, 0x01 ; 1
7a: e8 ec ldi r30, 0xC8 ; 200
7c: f9 e0 ldi r31, 0x09 ; 9
7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10>
80: 05 90 lpm r0, Z+
82: 0d 92 st X+, r0
84: a4 32 cpi r26, 0x24 ; 36
86: b1 07 cpc r27, r17
88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc>
0000008a <__do_clear_bss>:
8a: 15 e0 ldi r17, 0x05 ; 5
8c: a4 e2 ldi r26, 0x24 ; 36
8e: b1 e0 ldi r27, 0x01 ; 1
90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start>
00000092 <.do_clear_bss_loop>:
92: 1d 92 st X+, r1
00000094 <.do_clear_bss_start>:
94: a2 37 cpi r26, 0x72 ; 114
96: b1 07 cpc r27, r17
98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop>
9a: 0e 94 4b 01 call 0x296 ; 0x296 <main>
9e: 0c 94 e2 04 jmp 0x9c4 ; 0x9c4 <_exit>
000000a2 <__bad_interrupt>:
a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000a6 <shift_out>:
pin_mode(CLOCK, OUTPUT);
pin_mode(DATA, OUTPUT);
}
/* Assumes MSB first. */
void shift_out(uint8_t data) {
a6: 27 e0 ldi r18, 0x07 ; 7
a8: 30 e0 ldi r19, 0x00 ; 0
for(uint8_t i = 0; i < 8; i++) {
/* Write bit to data port. */
if (0 == (data & _BV(7 - i))) {
aa: 90 e0 ldi r25, 0x00 ; 0
ac: ac 01 movw r20, r24
ae: 02 2e mov r0, r18
b0: 02 c0 rjmp .+4 ; 0xb6 <shift_out+0x10>
b2: 55 95 asr r21
b4: 47 95 ror r20
b6: 0a 94 dec r0
b8: e2 f7 brpl .-8 ; 0xb2 <shift_out+0xc>
ba: 40 fd sbrc r20, 0
bc: 02 c0 rjmp .+4 ; 0xc2 <shift_out+0x1c>
digital_write(DATA, LOW);
be: 2b 98 cbi 0x05, 3 ; 5
c0: 01 c0 rjmp .+2 ; 0xc4 <shift_out+0x1e>
} else {
digital_write(DATA, HIGH);
c2: 2b 9a sbi 0x05, 3 ; 5
}
/* Pulse clock input to write next bit. */
digital_write(CLOCK, LOW);
c4: 2d 98 cbi 0x05, 5 ; 5
digital_write(CLOCK, HIGH);
c6: 2d 9a sbi 0x05, 5 ; 5
c8: 21 50 subi r18, 0x01 ; 1
ca: 30 40 sbci r19, 0x00 ; 0
pin_mode(DATA, OUTPUT);
}
/* Assumes MSB first. */
void shift_out(uint8_t data) {
for(uint8_t i = 0; i < 8; i++) {
cc: 4f ef ldi r20, 0xFF ; 255
ce: 2f 3f cpi r18, 0xFF ; 255
d0: 34 07 cpc r19, r20
d2: 61 f7 brne .-40 ; 0xac <shift_out+0x6>
/* Pulse clock input to write next bit. */
digital_write(CLOCK, LOW);
digital_write(CLOCK, HIGH);
}
}
d4: 08 95 ret
000000d6 <uart_init>:
/* http://www.cs.mun.ca/~rod/Winter2007/4723/notes/serial/serial.html */
void uart_init(void) {
tx_buffer.start = 0;
d6: 10 92 25 05 sts 0x0525, r1
da: 10 92 24 05 sts 0x0524, r1
tx_buffer.end = 0;
de: 10 92 27 05 sts 0x0527, r1
e2: 10 92 26 05 sts 0x0526, r1
rx_buffer.start = 0;
e6: 10 92 69 05 sts 0x0569, r1
ea: 10 92 68 05 sts 0x0568, r1
rx_buffer.end = 0;
ee: 10 92 6b 05 sts 0x056B, r1
f2: 10 92 6a 05 sts 0x056A, r1
UBRR0H = UBRRH_VALUE;
f6: 10 92 c5 00 sts 0x00C5, r1
UBRR0L = UBRRL_VALUE;
fa: 87 e6 ldi r24, 0x67 ; 103
fc: 80 93 c4 00 sts 0x00C4, r24
UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); /* 8-bit data */
100: 86 e0 ldi r24, 0x06 ; 6
102: 80 93 c2 00 sts 0x00C2, r24
UCSR0B = _BV(RXEN0) | _BV(TXEN0); /* Enable RX and TX */
106: 88 e1 ldi r24, 0x18 ; 24
108: 80 93 c1 00 sts 0x00C1, r24
sei();
10c: 78 94 sei
}
10e: 08 95 ret
00000110 <uart_putchar>:
int uart_putchar(char c, FILE *stream) {
110: 1f 93 push r17
112: 18 2f mov r17, r24
if (c == '\n') {
114: 8a 30 cpi r24, 0x0A ; 10
116: 19 f4 brne .+6 ; 0x11e <uart_putchar+0xe>
uart_putchar('\r', stream);
118: 8d e0 ldi r24, 0x0D ; 13
11a: 0e 94 88 00 call 0x110 ; 0x110 <uart_putchar>
}
int write_pointer = (tx_buffer.end + 1) % UART_TX_BUFFER_SIZE;
11e: 20 91 26 05 lds r18, 0x0526
122: 30 91 27 05 lds r19, 0x0527
126: c9 01 movw r24, r18
128: 01 96 adiw r24, 0x01 ; 1
12a: 60 e0 ldi r22, 0x00 ; 0
12c: 72 e0 ldi r23, 0x02 ; 2
12e: 0e 94 be 01 call 0x37c ; 0x37c <__divmodhi4>
if (write_pointer != tx_buffer.start){
132: 40 91 24 05 lds r20, 0x0524
136: 50 91 25 05 lds r21, 0x0525
13a: 84 17 cp r24, r20
13c: 95 07 cpc r25, r21
13e: 81 f0 breq .+32 ; 0x160 <uart_putchar+0x50>
tx_buffer.buffer[tx_buffer.end] = c;
140: f9 01 movw r30, r18
142: ee 0f add r30, r30
144: ff 1f adc r31, r31
146: ec 5d subi r30, 0xDC ; 220
148: fe 4f sbci r31, 0xFE ; 254
14a: 10 83 st Z, r17
14c: 11 82 std Z+1, r1 ; 0x01
tx_buffer.end = write_pointer;
14e: 90 93 27 05 sts 0x0527, r25
152: 80 93 26 05 sts 0x0526, r24
/* Data available. Enable the transmit interrupt for serial port 0. */
UCSR0B |= _BV(UDRIE0);
156: 80 91 c1 00 lds r24, 0x00C1
15a: 80 62 ori r24, 0x20 ; 32
15c: 80 93 c1 00 sts 0x00C1, r24
}
return 0;
}
160: 80 e0 ldi r24, 0x00 ; 0
162: 90 e0 ldi r25, 0x00 ; 0
164: 1f 91 pop r17
166: 08 95 ret
00000168 <uart_getchar>:
int uart_getchar(FILE *stream) {
int read_pointer = (rx_buffer.start + 1) % UART_RX_BUFFER_SIZE;
168: 80 91 68 05 lds r24, 0x0568
16c: 90 91 69 05 lds r25, 0x0569
170: 01 96 adiw r24, 0x01 ; 1
172: 60 e2 ldi r22, 0x20 ; 32
174: 70 e0 ldi r23, 0x00 ; 0
176: 0e 94 be 01 call 0x37c ; 0x37c <__divmodhi4>
rx_buffer.start = read_pointer;
17a: 90 93 69 05 sts 0x0569, r25
17e: 80 93 68 05 sts 0x0568, r24
return rx_buffer.buffer[read_pointer];
182: fc 01 movw r30, r24
184: ee 0f add r30, r30
186: ff 1f adc r31, r31
188: e8 5d subi r30, 0xD8 ; 216
18a: fa 4f sbci r31, 0xFA ; 250
}
18c: 80 81 ld r24, Z
18e: 91 81 ldd r25, Z+1 ; 0x01
190: 08 95 ret
00000192 <__vector_18>:
ISR(USART_RX_vect) {
192: 1f 92 push r1
194: 0f 92 push r0
196: 0f b6 in r0, 0x3f ; 63
198: 0f 92 push r0
19a: 11 24 eor r1, r1
19c: 2f 93 push r18
19e: 3f 93 push r19
1a0: 4f 93 push r20
1a2: 5f 93 push r21
1a4: 6f 93 push r22
1a6: 7f 93 push r23
1a8: 8f 93 push r24
1aa: 9f 93 push r25
1ac: af 93 push r26
1ae: bf 93 push r27
1b0: ef 93 push r30
1b2: ff 93 push r31
int write_pointer = (rx_buffer.end + 1) % UART_RX_BUFFER_SIZE;
1b4: 20 91 6a 05 lds r18, 0x056A
1b8: 30 91 6b 05 lds r19, 0x056B
1bc: c9 01 movw r24, r18
1be: 01 96 adiw r24, 0x01 ; 1
1c0: 60 e2 ldi r22, 0x20 ; 32
1c2: 70 e0 ldi r23, 0x00 ; 0
1c4: 0e 94 be 01 call 0x37c ; 0x37c <__divmodhi4>
/* Add next byte to ringbuffer if it has space available. */
if (write_pointer != rx_buffer.start){
1c8: 40 91 68 05 lds r20, 0x0568
1cc: 50 91 69 05 lds r21, 0x0569
1d0: 84 17 cp r24, r20
1d2: 95 07 cpc r25, r21
1d4: 69 f0 breq .+26 ; 0x1f0 <__vector_18+0x5e>
rx_buffer.buffer[rx_buffer.end] = UDR0;
1d6: 40 91 c6 00 lds r20, 0x00C6
1da: f9 01 movw r30, r18
1dc: ee 0f add r30, r30
1de: ff 1f adc r31, r31
1e0: e8 5d subi r30, 0xD8 ; 216
1e2: fa 4f sbci r31, 0xFA ; 250
1e4: 40 83 st Z, r20
1e6: 11 82 std Z+1, r1 ; 0x01
rx_buffer.end = write_pointer;
1e8: 90 93 6b 05 sts 0x056B, r25
1ec: 80 93 6a 05 sts 0x056A, r24
}
}
1f0: ff 91 pop r31
1f2: ef 91 pop r30
1f4: bf 91 pop r27
1f6: af 91 pop r26
1f8: 9f 91 pop r25
1fa: 8f 91 pop r24
1fc: 7f 91 pop r23
1fe: 6f 91 pop r22
200: 5f 91 pop r21
202: 4f 91 pop r20
204: 3f 91 pop r19
206: 2f 91 pop r18
208: 0f 90 pop r0
20a: 0f be out 0x3f, r0 ; 63
20c: 0f 90 pop r0
20e: 1f 90 pop r1
210: 18 95 reti
00000212 <__vector_19>:
ISR(USART_UDRE_vect){
212: 1f 92 push r1
214: 0f 92 push r0
216: 0f b6 in r0, 0x3f ; 63
218: 0f 92 push r0
21a: 11 24 eor r1, r1
21c: 2f 93 push r18
21e: 3f 93 push r19
220: 5f 93 push r21
222: 6f 93 push r22
224: 7f 93 push r23
226: 8f 93 push r24
228: 9f 93 push r25
22a: af 93 push r26
22c: bf 93 push r27
22e: ef 93 push r30
230: ff 93 push r31
int read_pointer = (tx_buffer.start + 1) % UART_TX_BUFFER_SIZE;
232: 80 91 24 05 lds r24, 0x0524
236: 90 91 25 05 lds r25, 0x0525
23a: 01 96 adiw r24, 0x01 ; 1
23c: 60 e0 ldi r22, 0x00 ; 0
23e: 72 e0 ldi r23, 0x02 ; 2
240: 0e 94 be 01 call 0x37c ; 0x37c <__divmodhi4>
/* Transmit next byte if data available in ringbuffer. */
if (read_pointer != tx_buffer.end) {
244: 20 91 26 05 lds r18, 0x0526
248: 30 91 27 05 lds r19, 0x0527
24c: 82 17 cp r24, r18
24e: 93 07 cpc r25, r19
250: 69 f0 breq .+26 ; 0x26c <__vector_19+0x5a>
UDR0 = tx_buffer.buffer[read_pointer];
252: fc 01 movw r30, r24
254: ee 0f add r30, r30
256: ff 1f adc r31, r31
258: ec 5d subi r30, 0xDC ; 220
25a: fe 4f sbci r31, 0xFE ; 254
25c: 20 81 ld r18, Z
25e: 20 93 c6 00 sts 0x00C6, r18
tx_buffer.start = read_pointer;
262: 90 93 25 05 sts 0x0525, r25
266: 80 93 24 05 sts 0x0524, r24
26a: 05 c0 rjmp .+10 ; 0x276 <__vector_19+0x64>
} else {
/* Nothing to send. Disable the transmit interrupt for serial port 0. */
UCSR0B &= ~_BV(UDRIE0);
26c: 80 91 c1 00 lds r24, 0x00C1
270: 8f 7d andi r24, 0xDF ; 223
272: 80 93 c1 00 sts 0x00C1, r24
}
}
276: ff 91 pop r31
278: ef 91 pop r30
27a: bf 91 pop r27
27c: af 91 pop r26
27e: 9f 91 pop r25
280: 8f 91 pop r24
282: 7f 91 pop r23
284: 6f 91 pop r22
286: 5f 91 pop r21
288: 3f 91 pop r19
28a: 2f 91 pop r18
28c: 0f 90 pop r0
28e: 0f be out 0x3f, r0 ; 63
290: 0f 90 pop r0
292: 1f 90 pop r1
294: 18 95 reti
00000296 <main>:
int main(void) {
296: cf 93 push r28
298: df 93 push r29
29a: cd b7 in r28, 0x3d ; 61
29c: de b7 in r29, 0x3e ; 62
29e: 61 97 sbiw r28, 0x11 ; 17
2a0: 0f b6 in r0, 0x3f ; 63
2a2: f8 94 cli
2a4: de bf out 0x3e, r29 ; 62
2a6: 0f be out 0x3f, r0 ; 63
2a8: cd bf out 0x3d, r28 ; 61
#define LATCH 10 /* RCK */
#define DATA 11 /* SER IN */
#define CLOCK 13 /* SRCK */
static void init(void) {
pin_mode(LATCH, OUTPUT);
2aa: 22 9a sbi 0x04, 2 ; 4
pin_mode(CLOCK, OUTPUT);
2ac: 25 9a sbi 0x04, 5 ; 4
pin_mode(DATA, OUTPUT);
2ae: 23 9a sbi 0x04, 3 ; 4
}
int main(void) {
init();
uart_init();
2b0: 0e 94 6b 00 call 0xd6 ; 0xd6 <uart_init>
stdout = &uart_output;
2b4: 86 e1 ldi r24, 0x16 ; 22
2b6: 91 e0 ldi r25, 0x01 ; 1
2b8: 90 93 6f 05 sts 0x056F, r25
2bc: 80 93 6e 05 sts 0x056E, r24
stdin = &uart_input;
2c0: 88 e0 ldi r24, 0x08 ; 8
2c2: 91 e0 ldi r25, 0x01 ; 1
2c4: 90 93 6d 05 sts 0x056D, r25
2c8: 80 93 6c 05 sts 0x056C, r24
char binary[17];
/* Show pattern for 5 seconds. */
shift_out(0b10101010);
2cc: 8a ea ldi r24, 0xAA ; 170
2ce: 0e 94 53 00 call 0xa6 ; 0xa6 <shift_out>
shift_out(0b11110000);
2d2: 80 ef ldi r24, 0xF0 ; 240
2d4: 0e 94 53 00 call 0xa6 ; 0xa6 <shift_out>
digital_write(LATCH, LOW);
2d8: 2a 98 cbi 0x05, 2 ; 5
digital_write(LATCH, HIGH);
2da: 2a 9a sbi 0x05, 2 ; 5
2dc: 80 e5 ldi r24, 0x50 ; 80
2de: 93 ec ldi r25, 0xC3 ; 195
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
2e0: 20 e9 ldi r18, 0x90 ; 144
2e2: 31 e0 ldi r19, 0x01 ; 1
2e4: f9 01 movw r30, r18
2e6: 31 97 sbiw r30, 0x01 ; 1
2e8: f1 f7 brne .-4 ; 0x2e6 <main+0x50>
2ea: 01 97 sbiw r24, 0x01 ; 1
__ticks = 1;
else if (__tmp > 65535)
{
// __ticks = requested delay in 1/10 ms
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
2ec: d9 f7 brne .-10 ; 0x2e4 <main+0x4e>
2ee: 00 e0 ldi r16, 0x00 ; 0
2f0: 10 e0 ldi r17, 0x00 ; 0
while (1) {
for(uint16_t i = 0; i < 0xffff; i++) {
/* Print the number to serial for debugging. */
itoa(i, binary, 2);
2f2: 7e 01 movw r14, r28
2f4: 08 94 sec
2f6: e1 1c adc r14, r1
2f8: f1 1c adc r15, r1
printf("%s %d \n", binary, i);
2fa: 80 e0 ldi r24, 0x00 ; 0
2fc: c8 2e mov r12, r24
2fe: 81 e0 ldi r24, 0x01 ; 1
300: d8 2e mov r13, r24
302: 90 e9 ldi r25, 0x90 ; 144
304: a9 2e mov r10, r25
306: 91 e0 ldi r25, 0x01 ; 1
308: b9 2e mov r11, r25
while (1) {
for(uint16_t i = 0; i < 0xffff; i++) {
/* Print the number to serial for debugging. */
itoa(i, binary, 2);
30a: c8 01 movw r24, r16
30c: b7 01 movw r22, r14
30e: 42 e0 ldi r20, 0x02 ; 2
310: 50 e0 ldi r21, 0x00 ; 0
312: 0e 94 e5 01 call 0x3ca ; 0x3ca <itoa>
printf("%s %d \n", binary, i);
316: 00 d0 rcall .+0 ; 0x318 <main+0x82>
318: 00 d0 rcall .+0 ; 0x31a <main+0x84>
31a: 00 d0 rcall .+0 ; 0x31c <main+0x86>
31c: ed b7 in r30, 0x3d ; 61
31e: fe b7 in r31, 0x3e ; 62
320: 31 96 adiw r30, 0x01 ; 1
322: ad b7 in r26, 0x3d ; 61
324: be b7 in r27, 0x3e ; 62
326: 12 96 adiw r26, 0x02 ; 2
328: dc 92 st X, r13
32a: ce 92 st -X, r12
32c: 11 97 sbiw r26, 0x01 ; 1
32e: f3 82 std Z+3, r15 ; 0x03
330: e2 82 std Z+2, r14 ; 0x02
332: 15 83 std Z+5, r17 ; 0x05
334: 04 83 std Z+4, r16 ; 0x04
336: 0e 94 06 02 call 0x40c ; 0x40c <printf>
/* Shift high byte first to shift register. */
shift_out(i >> 8);
33a: 8d b7 in r24, 0x3d ; 61
33c: 9e b7 in r25, 0x3e ; 62
33e: 06 96 adiw r24, 0x06 ; 6
340: 0f b6 in r0, 0x3f ; 63
342: f8 94 cli
344: 9e bf out 0x3e, r25 ; 62
346: 0f be out 0x3f, r0 ; 63
348: 8d bf out 0x3d, r24 ; 61
34a: 81 2f mov r24, r17
34c: 0e 94 53 00 call 0xa6 ; 0xa6 <shift_out>
shift_out(i & 0xff);
350: 80 2f mov r24, r16
352: 0e 94 53 00 call 0xa6 ; 0xa6 <shift_out>
/* Pulse latch to transfer data from shift registers */
/* to storage registers (should this be inside shift_out()?). */
digital_write(LATCH, LOW);
356: 2a 98 cbi 0x05, 2 ; 5
digital_write(LATCH, HIGH);
358: 2a 9a sbi 0x05, 2 ; 5
35a: 24 ef ldi r18, 0xF4 ; 244
35c: 31 e0 ldi r19, 0x01 ; 1
35e: c5 01 movw r24, r10
360: 01 97 sbiw r24, 0x01 ; 1
362: f1 f7 brne .-4 ; 0x360 <main+0xca>
364: 21 50 subi r18, 0x01 ; 1
366: 30 40 sbci r19, 0x00 ; 0
368: d1 f7 brne .-12 ; 0x35e <main+0xc8>
digital_write(LATCH, LOW);
digital_write(LATCH, HIGH);
_delay_ms(5000);
while (1) {
for(uint16_t i = 0; i < 0xffff; i++) {
36a: 0f 5f subi r16, 0xFF ; 255
36c: 1f 4f sbci r17, 0xFF ; 255
36e: 9f ef ldi r25, 0xFF ; 255
370: 0f 3f cpi r16, 0xFF ; 255
372: 19 07 cpc r17, r25
374: 51 f6 brne .-108 ; 0x30a <main+0x74>
376: 00 e0 ldi r16, 0x00 ; 0
378: 10 e0 ldi r17, 0x00 ; 0
37a: c7 cf rjmp .-114 ; 0x30a <main+0x74>
0000037c <__divmodhi4>:
37c: 97 fb bst r25, 7
37e: 09 2e mov r0, r25
380: 07 26 eor r0, r23
382: 0a d0 rcall .+20 ; 0x398 <__divmodhi4_neg1>
384: 77 fd sbrc r23, 7
386: 04 d0 rcall .+8 ; 0x390 <__divmodhi4_neg2>
388: 0c d0 rcall .+24 ; 0x3a2 <__udivmodhi4>
38a: 06 d0 rcall .+12 ; 0x398 <__divmodhi4_neg1>
38c: 00 20 and r0, r0
38e: 1a f4 brpl .+6 ; 0x396 <__divmodhi4_exit>
00000390 <__divmodhi4_neg2>:
390: 70 95 com r23
392: 61 95 neg r22
394: 7f 4f sbci r23, 0xFF ; 255
00000396 <__divmodhi4_exit>:
396: 08 95 ret
00000398 <__divmodhi4_neg1>:
398: f6 f7 brtc .-4 ; 0x396 <__divmodhi4_exit>
39a: 90 95 com r25
39c: 81 95 neg r24
39e: 9f 4f sbci r25, 0xFF ; 255
3a0: 08 95 ret
000003a2 <__udivmodhi4>:
3a2: aa 1b sub r26, r26
3a4: bb 1b sub r27, r27
3a6: 51 e1 ldi r21, 0x11 ; 17
3a8: 07 c0 rjmp .+14 ; 0x3b8 <__udivmodhi4_ep>
000003aa <__udivmodhi4_loop>:
3aa: aa 1f adc r26, r26
3ac: bb 1f adc r27, r27
3ae: a6 17 cp r26, r22
3b0: b7 07 cpc r27, r23
3b2: 10 f0 brcs .+4 ; 0x3b8 <__udivmodhi4_ep>
3b4: a6 1b sub r26, r22
3b6: b7 0b sbc r27, r23
000003b8 <__udivmodhi4_ep>:
3b8: 88 1f adc r24, r24
3ba: 99 1f adc r25, r25
3bc: 5a 95 dec r21
3be: a9 f7 brne .-22 ; 0x3aa <__udivmodhi4_loop>
3c0: 80 95 com r24
3c2: 90 95 com r25
3c4: bc 01 movw r22, r24
3c6: cd 01 movw r24, r26
3c8: 08 95 ret
000003ca <itoa>:
3ca: fb 01 movw r30, r22
3cc: 9f 01 movw r18, r30
3ce: e8 94 clt
3d0: 42 30 cpi r20, 0x02 ; 2
3d2: c4 f0 brlt .+48 ; 0x404 <itoa+0x3a>
3d4: 45 32 cpi r20, 0x25 ; 37
3d6: b4 f4 brge .+44 ; 0x404 <itoa+0x3a>
3d8: 4a 30 cpi r20, 0x0A ; 10
3da: 29 f4 brne .+10 ; 0x3e6 <itoa+0x1c>
3dc: 97 fb bst r25, 7
3de: 1e f4 brtc .+6 ; 0x3e6 <itoa+0x1c>
3e0: 90 95 com r25
3e2: 81 95 neg r24
3e4: 9f 4f sbci r25, 0xFF ; 255
3e6: 64 2f mov r22, r20
3e8: 77 27 eor r23, r23
3ea: 0e 94 d1 01 call 0x3a2 ; 0x3a2 <__udivmodhi4>
3ee: 80 5d subi r24, 0xD0 ; 208
3f0: 8a 33 cpi r24, 0x3A ; 58
3f2: 0c f0 brlt .+2 ; 0x3f6 <itoa+0x2c>
3f4: 89 5d subi r24, 0xD9 ; 217
3f6: 81 93 st Z+, r24
3f8: cb 01 movw r24, r22
3fa: 00 97 sbiw r24, 0x00 ; 0
3fc: a1 f7 brne .-24 ; 0x3e6 <itoa+0x1c>
3fe: 16 f4 brtc .+4 ; 0x404 <itoa+0x3a>
400: 5d e2 ldi r21, 0x2D ; 45
402: 51 93 st Z+, r21
404: 10 82 st Z, r1
406: c9 01 movw r24, r18
408: 0c 94 11 04 jmp 0x822 ; 0x822 <strrev>
0000040c <printf>:
40c: a0 e0 ldi r26, 0x00 ; 0
40e: b0 e0 ldi r27, 0x00 ; 0
410: ec e0 ldi r30, 0x0C ; 12
412: f2 e0 ldi r31, 0x02 ; 2
414: 0c 94 bb 04 jmp 0x976 ; 0x976 <__prologue_saves__+0x20>
418: fe 01 movw r30, r28
41a: 35 96 adiw r30, 0x05 ; 5
41c: 61 91 ld r22, Z+
41e: 71 91 ld r23, Z+
420: 80 91 6e 05 lds r24, 0x056E
424: 90 91 6f 05 lds r25, 0x056F
428: af 01 movw r20, r30
42a: 0e 94 1b 02 call 0x436 ; 0x436 <vfprintf>
42e: 20 96 adiw r28, 0x00 ; 0
430: e2 e0 ldi r30, 0x02 ; 2
432: 0c 94 d7 04 jmp 0x9ae ; 0x9ae <__epilogue_restores__+0x20>
00000436 <vfprintf>:
436: ad e0 ldi r26, 0x0D ; 13
438: b0 e0 ldi r27, 0x00 ; 0
43a: e1 e2 ldi r30, 0x21 ; 33
43c: f2 e0 ldi r31, 0x02 ; 2
43e: 0c 94 ab 04 jmp 0x956 ; 0x956 <__prologue_saves__>
442: 3c 01 movw r6, r24
444: 7d 87 std Y+13, r23 ; 0x0d
446: 6c 87 std Y+12, r22 ; 0x0c
448: 5a 01 movw r10, r20
44a: fc 01 movw r30, r24
44c: 17 82 std Z+7, r1 ; 0x07
44e: 16 82 std Z+6, r1 ; 0x06
450: 83 81 ldd r24, Z+3 ; 0x03
452: 81 ff sbrs r24, 1
454: ca c1 rjmp .+916 ; 0x7ea <vfprintf+0x3b4>
456: 3f e3 ldi r19, 0x3F ; 63
458: c3 2e mov r12, r19
45a: 2e 01 movw r4, r28
45c: 08 94 sec
45e: 41 1c adc r4, r1
460: 51 1c adc r5, r1
462: f3 01 movw r30, r6
464: 93 81 ldd r25, Z+3 ; 0x03
466: ec 85 ldd r30, Y+12 ; 0x0c
468: fd 85 ldd r31, Y+13 ; 0x0d
46a: 93 fd sbrc r25, 3
46c: 85 91 lpm r24, Z+
46e: 93 ff sbrs r25, 3
470: 81 91 ld r24, Z+
472: fd 87 std Y+13, r31 ; 0x0d
474: ec 87 std Y+12, r30 ; 0x0c
476: 88 23 and r24, r24
478: 09 f4 brne .+2 ; 0x47c <vfprintf+0x46>
47a: b3 c1 rjmp .+870 ; 0x7e2 <vfprintf+0x3ac>
47c: 85 32 cpi r24, 0x25 ; 37
47e: 41 f4 brne .+16 ; 0x490 <vfprintf+0x5a>
480: 93 fd sbrc r25, 3
482: 85 91 lpm r24, Z+
484: 93 ff sbrs r25, 3
486: 81 91 ld r24, Z+
488: fd 87 std Y+13, r31 ; 0x0d
48a: ec 87 std Y+12, r30 ; 0x0c
48c: 85 32 cpi r24, 0x25 ; 37
48e: 29 f4 brne .+10 ; 0x49a <vfprintf+0x64>
490: 90 e0 ldi r25, 0x00 ; 0
492: b3 01 movw r22, r6
494: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
498: e4 cf rjmp .-56 ; 0x462 <vfprintf+0x2c>
49a: ee 24 eor r14, r14
49c: dd 24 eor r13, r13
49e: 10 e0 ldi r17, 0x00 ; 0
4a0: 10 32 cpi r17, 0x20 ; 32
4a2: b0 f4 brcc .+44 ; 0x4d0 <vfprintf+0x9a>
4a4: 8b 32 cpi r24, 0x2B ; 43
4a6: 69 f0 breq .+26 ; 0x4c2 <vfprintf+0x8c>
4a8: 8c 32 cpi r24, 0x2C ; 44
4aa: 28 f4 brcc .+10 ; 0x4b6 <vfprintf+0x80>
4ac: 80 32 cpi r24, 0x20 ; 32
4ae: 51 f0 breq .+20 ; 0x4c4 <vfprintf+0x8e>
4b0: 83 32 cpi r24, 0x23 ; 35
4b2: 71 f4 brne .+28 ; 0x4d0 <vfprintf+0x9a>
4b4: 0b c0 rjmp .+22 ; 0x4cc <vfprintf+0x96>
4b6: 8d 32 cpi r24, 0x2D ; 45
4b8: 39 f0 breq .+14 ; 0x4c8 <vfprintf+0x92>
4ba: 80 33 cpi r24, 0x30 ; 48
4bc: 49 f4 brne .+18 ; 0x4d0 <vfprintf+0x9a>
4be: 11 60 ori r17, 0x01 ; 1
4c0: 2c c0 rjmp .+88 ; 0x51a <vfprintf+0xe4>
4c2: 12 60 ori r17, 0x02 ; 2
4c4: 14 60 ori r17, 0x04 ; 4
4c6: 29 c0 rjmp .+82 ; 0x51a <vfprintf+0xe4>
4c8: 18 60 ori r17, 0x08 ; 8
4ca: 27 c0 rjmp .+78 ; 0x51a <vfprintf+0xe4>
4cc: 10 61 ori r17, 0x10 ; 16
4ce: 25 c0 rjmp .+74 ; 0x51a <vfprintf+0xe4>
4d0: 17 fd sbrc r17, 7
4d2: 2e c0 rjmp .+92 ; 0x530 <vfprintf+0xfa>
4d4: 28 2f mov r18, r24
4d6: 20 53 subi r18, 0x30 ; 48
4d8: 2a 30 cpi r18, 0x0A ; 10
4da: 98 f4 brcc .+38 ; 0x502 <vfprintf+0xcc>
4dc: 16 ff sbrs r17, 6
4de: 08 c0 rjmp .+16 ; 0x4f0 <vfprintf+0xba>
4e0: 8e 2d mov r24, r14
4e2: 88 0f add r24, r24
4e4: e8 2e mov r14, r24
4e6: ee 0c add r14, r14
4e8: ee 0c add r14, r14
4ea: e8 0e add r14, r24
4ec: e2 0e add r14, r18
4ee: 15 c0 rjmp .+42 ; 0x51a <vfprintf+0xe4>
4f0: 8d 2d mov r24, r13
4f2: 88 0f add r24, r24
4f4: d8 2e mov r13, r24
4f6: dd 0c add r13, r13
4f8: dd 0c add r13, r13
4fa: d8 0e add r13, r24
4fc: d2 0e add r13, r18
4fe: 10 62 ori r17, 0x20 ; 32
500: 0c c0 rjmp .+24 ; 0x51a <vfprintf+0xe4>
502: 8e 32 cpi r24, 0x2E ; 46
504: 21 f4 brne .+8 ; 0x50e <vfprintf+0xd8>
506: 16 fd sbrc r17, 6
508: 6c c1 rjmp .+728 ; 0x7e2 <vfprintf+0x3ac>
50a: 10 64 ori r17, 0x40 ; 64
50c: 06 c0 rjmp .+12 ; 0x51a <vfprintf+0xe4>
50e: 8c 36 cpi r24, 0x6C ; 108
510: 11 f4 brne .+4 ; 0x516 <vfprintf+0xe0>
512: 10 68 ori r17, 0x80 ; 128
514: 02 c0 rjmp .+4 ; 0x51a <vfprintf+0xe4>
516: 88 36 cpi r24, 0x68 ; 104
518: 59 f4 brne .+22 ; 0x530 <vfprintf+0xfa>
51a: ec 85 ldd r30, Y+12 ; 0x0c
51c: fd 85 ldd r31, Y+13 ; 0x0d
51e: 93 fd sbrc r25, 3
520: 85 91 lpm r24, Z+
522: 93 ff sbrs r25, 3
524: 81 91 ld r24, Z+
526: fd 87 std Y+13, r31 ; 0x0d
528: ec 87 std Y+12, r30 ; 0x0c
52a: 88 23 and r24, r24
52c: 09 f0 breq .+2 ; 0x530 <vfprintf+0xfa>
52e: b8 cf rjmp .-144 ; 0x4a0 <vfprintf+0x6a>
530: 98 2f mov r25, r24
532: 95 54 subi r25, 0x45 ; 69
534: 93 30 cpi r25, 0x03 ; 3
536: 18 f0 brcs .+6 ; 0x53e <vfprintf+0x108>
538: 90 52 subi r25, 0x20 ; 32
53a: 93 30 cpi r25, 0x03 ; 3
53c: 30 f4 brcc .+12 ; 0x54a <vfprintf+0x114>
53e: 24 e0 ldi r18, 0x04 ; 4
540: 30 e0 ldi r19, 0x00 ; 0
542: a2 0e add r10, r18
544: b3 1e adc r11, r19
546: c9 82 std Y+1, r12 ; 0x01
548: 0f c0 rjmp .+30 ; 0x568 <vfprintf+0x132>
54a: 83 36 cpi r24, 0x63 ; 99
54c: 31 f0 breq .+12 ; 0x55a <vfprintf+0x124>
54e: 83 37 cpi r24, 0x73 ; 115
550: 81 f0 breq .+32 ; 0x572 <vfprintf+0x13c>
552: 83 35 cpi r24, 0x53 ; 83
554: 09 f0 breq .+2 ; 0x558 <vfprintf+0x122>
556: 5a c0 rjmp .+180 ; 0x60c <vfprintf+0x1d6>
558: 22 c0 rjmp .+68 ; 0x59e <vfprintf+0x168>
55a: f5 01 movw r30, r10
55c: 80 81 ld r24, Z
55e: 89 83 std Y+1, r24 ; 0x01
560: 22 e0 ldi r18, 0x02 ; 2
562: 30 e0 ldi r19, 0x00 ; 0
564: a2 0e add r10, r18
566: b3 1e adc r11, r19
568: 21 e0 ldi r18, 0x01 ; 1
56a: e2 2e mov r14, r18
56c: f1 2c mov r15, r1
56e: 42 01 movw r8, r4
570: 14 c0 rjmp .+40 ; 0x59a <vfprintf+0x164>
572: 92 e0 ldi r25, 0x02 ; 2
574: 29 2e mov r2, r25
576: 31 2c mov r3, r1
578: 2a 0c add r2, r10
57a: 3b 1c adc r3, r11
57c: f5 01 movw r30, r10
57e: 80 80 ld r8, Z
580: 91 80 ldd r9, Z+1 ; 0x01
582: 16 ff sbrs r17, 6
584: 03 c0 rjmp .+6 ; 0x58c <vfprintf+0x156>
586: 6e 2d mov r22, r14
588: 70 e0 ldi r23, 0x00 ; 0
58a: 02 c0 rjmp .+4 ; 0x590 <vfprintf+0x15a>
58c: 6f ef ldi r22, 0xFF ; 255
58e: 7f ef ldi r23, 0xFF ; 255
590: c4 01 movw r24, r8
592: 0e 94 06 04 call 0x80c ; 0x80c <strnlen>
596: 7c 01 movw r14, r24
598: 51 01 movw r10, r2
59a: 1f 77 andi r17, 0x7F ; 127
59c: 15 c0 rjmp .+42 ; 0x5c8 <vfprintf+0x192>
59e: 82 e0 ldi r24, 0x02 ; 2
5a0: 28 2e mov r2, r24
5a2: 31 2c mov r3, r1
5a4: 2a 0c add r2, r10
5a6: 3b 1c adc r3, r11
5a8: f5 01 movw r30, r10
5aa: 80 80 ld r8, Z
5ac: 91 80 ldd r9, Z+1 ; 0x01
5ae: 16 ff sbrs r17, 6
5b0: 03 c0 rjmp .+6 ; 0x5b8 <vfprintf+0x182>
5b2: 6e 2d mov r22, r14
5b4: 70 e0 ldi r23, 0x00 ; 0
5b6: 02 c0 rjmp .+4 ; 0x5bc <vfprintf+0x186>
5b8: 6f ef ldi r22, 0xFF ; 255
5ba: 7f ef ldi r23, 0xFF ; 255
5bc: c4 01 movw r24, r8
5be: 0e 94 fb 03 call 0x7f6 ; 0x7f6 <strnlen_P>
5c2: 7c 01 movw r14, r24
5c4: 10 68 ori r17, 0x80 ; 128
5c6: 51 01 movw r10, r2
5c8: 13 fd sbrc r17, 3
5ca: 1c c0 rjmp .+56 ; 0x604 <vfprintf+0x1ce>
5cc: 06 c0 rjmp .+12 ; 0x5da <vfprintf+0x1a4>
5ce: 80 e2 ldi r24, 0x20 ; 32
5d0: 90 e0 ldi r25, 0x00 ; 0
5d2: b3 01 movw r22, r6
5d4: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
5d8: da 94 dec r13
5da: 8d 2d mov r24, r13
5dc: 90 e0 ldi r25, 0x00 ; 0
5de: e8 16 cp r14, r24
5e0: f9 06 cpc r15, r25
5e2: a8 f3 brcs .-22 ; 0x5ce <vfprintf+0x198>
5e4: 0f c0 rjmp .+30 ; 0x604 <vfprintf+0x1ce>
5e6: f4 01 movw r30, r8
5e8: 17 fd sbrc r17, 7
5ea: 85 91 lpm r24, Z+
5ec: 17 ff sbrs r17, 7
5ee: 81 91 ld r24, Z+
5f0: 4f 01 movw r8, r30
5f2: 90 e0 ldi r25, 0x00 ; 0
5f4: b3 01 movw r22, r6
5f6: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
5fa: d1 10 cpse r13, r1
5fc: da 94 dec r13
5fe: 08 94 sec
600: e1 08 sbc r14, r1
602: f1 08 sbc r15, r1
604: e1 14 cp r14, r1
606: f1 04 cpc r15, r1
608: 71 f7 brne .-36 ; 0x5e6 <vfprintf+0x1b0>
60a: e8 c0 rjmp .+464 ; 0x7dc <vfprintf+0x3a6>
60c: 84 36 cpi r24, 0x64 ; 100
60e: 11 f0 breq .+4 ; 0x614 <vfprintf+0x1de>
610: 89 36 cpi r24, 0x69 ; 105
612: 59 f5 brne .+86 ; 0x66a <vfprintf+0x234>
614: f5 01 movw r30, r10
616: 17 ff sbrs r17, 7
618: 07 c0 rjmp .+14 ; 0x628 <vfprintf+0x1f2>
61a: 80 81 ld r24, Z
61c: 91 81 ldd r25, Z+1 ; 0x01
61e: a2 81 ldd r26, Z+2 ; 0x02
620: b3 81 ldd r27, Z+3 ; 0x03
622: 24 e0 ldi r18, 0x04 ; 4
624: 30 e0 ldi r19, 0x00 ; 0
626: 09 c0 rjmp .+18 ; 0x63a <vfprintf+0x204>
628: 60 81 ld r22, Z
62a: 71 81 ldd r23, Z+1 ; 0x01
62c: cb 01 movw r24, r22
62e: aa 27 eor r26, r26
630: 97 fd sbrc r25, 7
632: a0 95 com r26
634: ba 2f mov r27, r26
636: 22 e0 ldi r18, 0x02 ; 2
638: 30 e0 ldi r19, 0x00 ; 0
63a: a2 0e add r10, r18
63c: b3 1e adc r11, r19
63e: 01 2f mov r16, r17
640: 0f 76 andi r16, 0x6F ; 111
642: b7 ff sbrs r27, 7
644: 08 c0 rjmp .+16 ; 0x656 <vfprintf+0x220>
646: b0 95 com r27
648: a0 95 com r26
64a: 90 95 com r25
64c: 81 95 neg r24
64e: 9f 4f sbci r25, 0xFF ; 255
650: af 4f sbci r26, 0xFF ; 255
652: bf 4f sbci r27, 0xFF ; 255
654: 00 68 ori r16, 0x80 ; 128
656: bc 01 movw r22, r24
658: cd 01 movw r24, r26
65a: a2 01 movw r20, r4
65c: 2a e0 ldi r18, 0x0A ; 10
65e: 30 e0 ldi r19, 0x00 ; 0
660: 0e 94 4d 04 call 0x89a ; 0x89a <__ultoa_invert>
664: f8 2e mov r15, r24
666: f4 18 sub r15, r4
668: 3f c0 rjmp .+126 ; 0x6e8 <vfprintf+0x2b2>
66a: 85 37 cpi r24, 0x75 ; 117
66c: 21 f4 brne .+8 ; 0x676 <vfprintf+0x240>
66e: 1f 7e andi r17, 0xEF ; 239
670: 2a e0 ldi r18, 0x0A ; 10
672: 30 e0 ldi r19, 0x00 ; 0
674: 20 c0 rjmp .+64 ; 0x6b6 <vfprintf+0x280>
676: 19 7f andi r17, 0xF9 ; 249
678: 8f 36 cpi r24, 0x6F ; 111
67a: a9 f0 breq .+42 ; 0x6a6 <vfprintf+0x270>
67c: 80 37 cpi r24, 0x70 ; 112
67e: 20 f4 brcc .+8 ; 0x688 <vfprintf+0x252>
680: 88 35 cpi r24, 0x58 ; 88
682: 09 f0 breq .+2 ; 0x686 <vfprintf+0x250>
684: ae c0 rjmp .+348 ; 0x7e2 <vfprintf+0x3ac>
686: 0b c0 rjmp .+22 ; 0x69e <vfprintf+0x268>
688: 80 37 cpi r24, 0x70 ; 112
68a: 21 f0 breq .+8 ; 0x694 <vfprintf+0x25e>
68c: 88 37 cpi r24, 0x78 ; 120
68e: 09 f0 breq .+2 ; 0x692 <vfprintf+0x25c>
690: a8 c0 rjmp .+336 ; 0x7e2 <vfprintf+0x3ac>
692: 01 c0 rjmp .+2 ; 0x696 <vfprintf+0x260>
694: 10 61 ori r17, 0x10 ; 16
696: 14 ff sbrs r17, 4
698: 09 c0 rjmp .+18 ; 0x6ac <vfprintf+0x276>
69a: 14 60 ori r17, 0x04 ; 4
69c: 07 c0 rjmp .+14 ; 0x6ac <vfprintf+0x276>
69e: 14 ff sbrs r17, 4
6a0: 08 c0 rjmp .+16 ; 0x6b2 <vfprintf+0x27c>
6a2: 16 60 ori r17, 0x06 ; 6
6a4: 06 c0 rjmp .+12 ; 0x6b2 <vfprintf+0x27c>
6a6: 28 e0 ldi r18, 0x08 ; 8
6a8: 30 e0 ldi r19, 0x00 ; 0
6aa: 05 c0 rjmp .+10 ; 0x6b6 <vfprintf+0x280>
6ac: 20 e1 ldi r18, 0x10 ; 16
6ae: 30 e0 ldi r19, 0x00 ; 0
6b0: 02 c0 rjmp .+4 ; 0x6b6 <vfprintf+0x280>
6b2: 20 e1 ldi r18, 0x10 ; 16
6b4: 32 e0 ldi r19, 0x02 ; 2
6b6: f5 01 movw r30, r10
6b8: 17 ff sbrs r17, 7
6ba: 07 c0 rjmp .+14 ; 0x6ca <vfprintf+0x294>
6bc: 60 81 ld r22, Z
6be: 71 81 ldd r23, Z+1 ; 0x01
6c0: 82 81 ldd r24, Z+2 ; 0x02
6c2: 93 81 ldd r25, Z+3 ; 0x03
6c4: 44 e0 ldi r20, 0x04 ; 4
6c6: 50 e0 ldi r21, 0x00 ; 0
6c8: 06 c0 rjmp .+12 ; 0x6d6 <vfprintf+0x2a0>
6ca: 60 81 ld r22, Z
6cc: 71 81 ldd r23, Z+1 ; 0x01
6ce: 80 e0 ldi r24, 0x00 ; 0
6d0: 90 e0 ldi r25, 0x00 ; 0
6d2: 42 e0 ldi r20, 0x02 ; 2
6d4: 50 e0 ldi r21, 0x00 ; 0
6d6: a4 0e add r10, r20
6d8: b5 1e adc r11, r21
6da: a2 01 movw r20, r4
6dc: 0e 94 4d 04 call 0x89a ; 0x89a <__ultoa_invert>
6e0: f8 2e mov r15, r24
6e2: f4 18 sub r15, r4
6e4: 01 2f mov r16, r17
6e6: 0f 77 andi r16, 0x7F ; 127
6e8: 06 ff sbrs r16, 6
6ea: 09 c0 rjmp .+18 ; 0x6fe <vfprintf+0x2c8>
6ec: 0e 7f andi r16, 0xFE ; 254
6ee: fe 14 cp r15, r14
6f0: 30 f4 brcc .+12 ; 0x6fe <vfprintf+0x2c8>
6f2: 04 ff sbrs r16, 4
6f4: 06 c0 rjmp .+12 ; 0x702 <vfprintf+0x2cc>
6f6: 02 fd sbrc r16, 2
6f8: 04 c0 rjmp .+8 ; 0x702 <vfprintf+0x2cc>
6fa: 0f 7e andi r16, 0xEF ; 239
6fc: 02 c0 rjmp .+4 ; 0x702 <vfprintf+0x2cc>
6fe: 1f 2d mov r17, r15
700: 01 c0 rjmp .+2 ; 0x704 <vfprintf+0x2ce>
702: 1e 2d mov r17, r14
704: 80 2f mov r24, r16
706: 90 e0 ldi r25, 0x00 ; 0
708: 04 ff sbrs r16, 4
70a: 0c c0 rjmp .+24 ; 0x724 <vfprintf+0x2ee>
70c: fe 01 movw r30, r28
70e: ef 0d add r30, r15
710: f1 1d adc r31, r1
712: 20 81 ld r18, Z
714: 20 33 cpi r18, 0x30 ; 48
716: 11 f4 brne .+4 ; 0x71c <vfprintf+0x2e6>
718: 09 7e andi r16, 0xE9 ; 233
71a: 09 c0 rjmp .+18 ; 0x72e <vfprintf+0x2f8>
71c: 02 ff sbrs r16, 2
71e: 06 c0 rjmp .+12 ; 0x72c <vfprintf+0x2f6>
720: 1e 5f subi r17, 0xFE ; 254
722: 05 c0 rjmp .+10 ; 0x72e <vfprintf+0x2f8>
724: 86 78 andi r24, 0x86 ; 134
726: 90 70 andi r25, 0x00 ; 0
728: 00 97 sbiw r24, 0x00 ; 0
72a: 09 f0 breq .+2 ; 0x72e <vfprintf+0x2f8>
72c: 1f 5f subi r17, 0xFF ; 255
72e: 80 2e mov r8, r16
730: 99 24 eor r9, r9
732: 03 fd sbrc r16, 3
734: 12 c0 rjmp .+36 ; 0x75a <vfprintf+0x324>
736: 00 ff sbrs r16, 0
738: 0d c0 rjmp .+26 ; 0x754 <vfprintf+0x31e>
73a: ef 2c mov r14, r15
73c: 1d 15 cp r17, r13
73e: 50 f4 brcc .+20 ; 0x754 <vfprintf+0x31e>
740: ed 0c add r14, r13
742: e1 1a sub r14, r17
744: 1d 2d mov r17, r13
746: 06 c0 rjmp .+12 ; 0x754 <vfprintf+0x31e>
748: 80 e2 ldi r24, 0x20 ; 32
74a: 90 e0 ldi r25, 0x00 ; 0
74c: b3 01 movw r22, r6
74e: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
752: 1f 5f subi r17, 0xFF ; 255
754: 1d 15 cp r17, r13
756: c0 f3 brcs .-16 ; 0x748 <vfprintf+0x312>
758: 04 c0 rjmp .+8 ; 0x762 <vfprintf+0x32c>
75a: 1d 15 cp r17, r13
75c: 10 f4 brcc .+4 ; 0x762 <vfprintf+0x32c>
75e: d1 1a sub r13, r17
760: 01 c0 rjmp .+2 ; 0x764 <vfprintf+0x32e>
762: dd 24 eor r13, r13
764: 84 fe sbrs r8, 4
766: 0f c0 rjmp .+30 ; 0x786 <vfprintf+0x350>
768: 80 e3 ldi r24, 0x30 ; 48
76a: 90 e0 ldi r25, 0x00 ; 0
76c: b3 01 movw r22, r6
76e: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
772: 82 fe sbrs r8, 2
774: 1f c0 rjmp .+62 ; 0x7b4 <vfprintf+0x37e>
776: 81 fe sbrs r8, 1
778: 03 c0 rjmp .+6 ; 0x780 <vfprintf+0x34a>
77a: 88 e5 ldi r24, 0x58 ; 88
77c: 90 e0 ldi r25, 0x00 ; 0
77e: 10 c0 rjmp .+32 ; 0x7a0 <vfprintf+0x36a>
780: 88 e7 ldi r24, 0x78 ; 120
782: 90 e0 ldi r25, 0x00 ; 0
784: 0d c0 rjmp .+26 ; 0x7a0 <vfprintf+0x36a>
786: c4 01 movw r24, r8
788: 86 78 andi r24, 0x86 ; 134
78a: 90 70 andi r25, 0x00 ; 0
78c: 00 97 sbiw r24, 0x00 ; 0
78e: 91 f0 breq .+36 ; 0x7b4 <vfprintf+0x37e>
790: 81 fc sbrc r8, 1
792: 02 c0 rjmp .+4 ; 0x798 <vfprintf+0x362>
794: 80 e2 ldi r24, 0x20 ; 32
796: 01 c0 rjmp .+2 ; 0x79a <vfprintf+0x364>
798: 8b e2 ldi r24, 0x2B ; 43
79a: 07 fd sbrc r16, 7
79c: 8d e2 ldi r24, 0x2D ; 45
79e: 90 e0 ldi r25, 0x00 ; 0
7a0: b3 01 movw r22, r6
7a2: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
7a6: 06 c0 rjmp .+12 ; 0x7b4 <vfprintf+0x37e>
7a8: 80 e3 ldi r24, 0x30 ; 48
7aa: 90 e0 ldi r25, 0x00 ; 0
7ac: b3 01 movw r22, r6
7ae: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
7b2: ea 94 dec r14
7b4: fe 14 cp r15, r14
7b6: c0 f3 brcs .-16 ; 0x7a8 <vfprintf+0x372>
7b8: fa 94 dec r15
7ba: f2 01 movw r30, r4
7bc: ef 0d add r30, r15
7be: f1 1d adc r31, r1
7c0: 80 81 ld r24, Z
7c2: 90 e0 ldi r25, 0x00 ; 0
7c4: b3 01 movw r22, r6
7c6: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
7ca: ff 20 and r15, r15
7cc: a9 f7 brne .-22 ; 0x7b8 <vfprintf+0x382>
7ce: 06 c0 rjmp .+12 ; 0x7dc <vfprintf+0x3a6>
7d0: 80 e2 ldi r24, 0x20 ; 32
7d2: 90 e0 ldi r25, 0x00 ; 0
7d4: b3 01 movw r22, r6
7d6: 0e 94 21 04 call 0x842 ; 0x842 <fputc>
7da: da 94 dec r13
7dc: dd 20 and r13, r13
7de: c1 f7 brne .-16 ; 0x7d0 <vfprintf+0x39a>
7e0: 40 ce rjmp .-896 ; 0x462 <vfprintf+0x2c>
7e2: f3 01 movw r30, r6
7e4: 86 81 ldd r24, Z+6 ; 0x06
7e6: 97 81 ldd r25, Z+7 ; 0x07
7e8: 02 c0 rjmp .+4 ; 0x7ee <vfprintf+0x3b8>
7ea: 8f ef ldi r24, 0xFF ; 255
7ec: 9f ef ldi r25, 0xFF ; 255
7ee: 2d 96 adiw r28, 0x0d ; 13
7f0: e2 e1 ldi r30, 0x12 ; 18
7f2: 0c 94 c7 04 jmp 0x98e ; 0x98e <__epilogue_restores__>
000007f6 <strnlen_P>:
7f6: fc 01 movw r30, r24
7f8: 05 90 lpm r0, Z+
7fa: 61 50 subi r22, 0x01 ; 1
7fc: 70 40 sbci r23, 0x00 ; 0
7fe: 01 10 cpse r0, r1
800: d8 f7 brcc .-10 ; 0x7f8 <strnlen_P+0x2>
802: 80 95 com r24
804: 90 95 com r25
806: 8e 0f add r24, r30
808: 9f 1f adc r25, r31
80a: 08 95 ret
0000080c <strnlen>:
80c: fc 01 movw r30, r24
80e: 61 50 subi r22, 0x01 ; 1
810: 70 40 sbci r23, 0x00 ; 0
812: 01 90 ld r0, Z+
814: 01 10 cpse r0, r1
816: d8 f7 brcc .-10 ; 0x80e <strnlen+0x2>
818: 80 95 com r24
81a: 90 95 com r25
81c: 8e 0f add r24, r30
81e: 9f 1f adc r25, r31
820: 08 95 ret
00000822 <strrev>:
822: dc 01 movw r26, r24
824: fc 01 movw r30, r24
826: 67 2f mov r22, r23
828: 71 91 ld r23, Z+
82a: 77 23 and r23, r23
82c: e1 f7 brne .-8 ; 0x826 <strrev+0x4>
82e: 32 97 sbiw r30, 0x02 ; 2
830: 04 c0 rjmp .+8 ; 0x83a <strrev+0x18>
832: 7c 91 ld r23, X
834: 6d 93 st X+, r22
836: 70 83 st Z, r23
838: 62 91 ld r22, -Z
83a: ae 17 cp r26, r30
83c: bf 07 cpc r27, r31
83e: c8 f3 brcs .-14 ; 0x832 <strrev+0x10>
840: 08 95 ret
00000842 <fputc>:
842: 0f 93 push r16
844: 1f 93 push r17
846: cf 93 push r28
848: df 93 push r29
84a: 8c 01 movw r16, r24
84c: eb 01 movw r28, r22
84e: 8b 81 ldd r24, Y+3 ; 0x03
850: 81 ff sbrs r24, 1
852: 1b c0 rjmp .+54 ; 0x88a <fputc+0x48>
854: 82 ff sbrs r24, 2
856: 0d c0 rjmp .+26 ; 0x872 <fputc+0x30>
858: 2e 81 ldd r18, Y+6 ; 0x06
85a: 3f 81 ldd r19, Y+7 ; 0x07
85c: 8c 81 ldd r24, Y+4 ; 0x04
85e: 9d 81 ldd r25, Y+5 ; 0x05
860: 28 17 cp r18, r24
862: 39 07 cpc r19, r25
864: 64 f4 brge .+24 ; 0x87e <fputc+0x3c>
866: e8 81 ld r30, Y
868: f9 81 ldd r31, Y+1 ; 0x01
86a: 01 93 st Z+, r16
86c: f9 83 std Y+1, r31 ; 0x01
86e: e8 83 st Y, r30
870: 06 c0 rjmp .+12 ; 0x87e <fputc+0x3c>
872: e8 85 ldd r30, Y+8 ; 0x08
874: f9 85 ldd r31, Y+9 ; 0x09
876: 80 2f mov r24, r16
878: 09 95 icall
87a: 00 97 sbiw r24, 0x00 ; 0
87c: 31 f4 brne .+12 ; 0x88a <fputc+0x48>
87e: 8e 81 ldd r24, Y+6 ; 0x06
880: 9f 81 ldd r25, Y+7 ; 0x07
882: 01 96 adiw r24, 0x01 ; 1
884: 9f 83 std Y+7, r25 ; 0x07
886: 8e 83 std Y+6, r24 ; 0x06
888: 02 c0 rjmp .+4 ; 0x88e <fputc+0x4c>
88a: 0f ef ldi r16, 0xFF ; 255
88c: 1f ef ldi r17, 0xFF ; 255
88e: c8 01 movw r24, r16
890: df 91 pop r29
892: cf 91 pop r28
894: 1f 91 pop r17
896: 0f 91 pop r16
898: 08 95 ret
0000089a <__ultoa_invert>:
89a: fa 01 movw r30, r20
89c: aa 27 eor r26, r26
89e: 28 30 cpi r18, 0x08 ; 8
8a0: 51 f1 breq .+84 ; 0x8f6 <__ultoa_invert+0x5c>
8a2: 20 31 cpi r18, 0x10 ; 16
8a4: 81 f1 breq .+96 ; 0x906 <__stack+0x7>
8a6: e8 94 clt
8a8: 6f 93 push r22
8aa: 6e 7f andi r22, 0xFE ; 254
8ac: 6e 5f subi r22, 0xFE ; 254
8ae: 7f 4f sbci r23, 0xFF ; 255
8b0: 8f 4f sbci r24, 0xFF ; 255
8b2: 9f 4f sbci r25, 0xFF ; 255
8b4: af 4f sbci r26, 0xFF ; 255
8b6: b1 e0 ldi r27, 0x01 ; 1
8b8: 3e d0 rcall .+124 ; 0x936 <__stack+0x37>
8ba: b4 e0 ldi r27, 0x04 ; 4
8bc: 3c d0 rcall .+120 ; 0x936 <__stack+0x37>
8be: 67 0f add r22, r23
8c0: 78 1f adc r23, r24
8c2: 89 1f adc r24, r25
8c4: 9a 1f adc r25, r26
8c6: a1 1d adc r26, r1
8c8: 68 0f add r22, r24
8ca: 79 1f adc r23, r25
8cc: 8a 1f adc r24, r26
8ce: 91 1d adc r25, r1
8d0: a1 1d adc r26, r1
8d2: 6a 0f add r22, r26
8d4: 71 1d adc r23, r1
8d6: 81 1d adc r24, r1
8d8: 91 1d adc r25, r1
8da: a1 1d adc r26, r1
8dc: 20 d0 rcall .+64 ; 0x91e <__stack+0x1f>
8de: 09 f4 brne .+2 ; 0x8e2 <__ultoa_invert+0x48>
8e0: 68 94 set
8e2: 3f 91 pop r19
8e4: 2a e0 ldi r18, 0x0A ; 10
8e6: 26 9f mul r18, r22
8e8: 11 24 eor r1, r1
8ea: 30 19 sub r19, r0
8ec: 30 5d subi r19, 0xD0 ; 208
8ee: 31 93 st Z+, r19
8f0: de f6 brtc .-74 ; 0x8a8 <__ultoa_invert+0xe>
8f2: cf 01 movw r24, r30
8f4: 08 95 ret
8f6: 46 2f mov r20, r22
8f8: 47 70 andi r20, 0x07 ; 7
8fa: 40 5d subi r20, 0xD0 ; 208
8fc: 41 93 st Z+, r20
8fe: b3 e0 ldi r27, 0x03 ; 3
900: 0f d0 rcall .+30 ; 0x920 <__stack+0x21>
902: c9 f7 brne .-14 ; 0x8f6 <__ultoa_invert+0x5c>
904: f6 cf rjmp .-20 ; 0x8f2 <__ultoa_invert+0x58>
906: 46 2f mov r20, r22
908: 4f 70 andi r20, 0x0F ; 15
90a: 40 5d subi r20, 0xD0 ; 208
90c: 4a 33 cpi r20, 0x3A ; 58
90e: 18 f0 brcs .+6 ; 0x916 <__stack+0x17>
910: 49 5d subi r20, 0xD9 ; 217
912: 31 fd sbrc r19, 1
914: 40 52 subi r20, 0x20 ; 32
916: 41 93 st Z+, r20
918: 02 d0 rcall .+4 ; 0x91e <__stack+0x1f>
91a: a9 f7 brne .-22 ; 0x906 <__stack+0x7>
91c: ea cf rjmp .-44 ; 0x8f2 <__ultoa_invert+0x58>
91e: b4 e0 ldi r27, 0x04 ; 4
920: a6 95 lsr r26
922: 97 95 ror r25
924: 87 95 ror r24
926: 77 95 ror r23
928: 67 95 ror r22
92a: ba 95 dec r27
92c: c9 f7 brne .-14 ; 0x920 <__stack+0x21>
92e: 00 97 sbiw r24, 0x00 ; 0
930: 61 05 cpc r22, r1
932: 71 05 cpc r23, r1
934: 08 95 ret
936: 9b 01 movw r18, r22
938: ac 01 movw r20, r24
93a: 0a 2e mov r0, r26
93c: 06 94 lsr r0
93e: 57 95 ror r21
940: 47 95 ror r20
942: 37 95 ror r19
944: 27 95 ror r18
946: ba 95 dec r27
948: c9 f7 brne .-14 ; 0x93c <__stack+0x3d>
94a: 62 0f add r22, r18
94c: 73 1f adc r23, r19
94e: 84 1f adc r24, r20
950: 95 1f adc r25, r21
952: a0 1d adc r26, r0
954: 08 95 ret
00000956 <__prologue_saves__>:
956: 2f 92 push r2
958: 3f 92 push r3
95a: 4f 92 push r4
95c: 5f 92 push r5
95e: 6f 92 push r6
960: 7f 92 push r7
962: 8f 92 push r8
964: 9f 92 push r9
966: af 92 push r10
968: bf 92 push r11
96a: cf 92 push r12
96c: df 92 push r13
96e: ef 92 push r14
970: ff 92 push r15
972: 0f 93 push r16
974: 1f 93 push r17
976: cf 93 push r28
978: df 93 push r29
97a: cd b7 in r28, 0x3d ; 61
97c: de b7 in r29, 0x3e ; 62
97e: ca 1b sub r28, r26
980: db 0b sbc r29, r27
982: 0f b6 in r0, 0x3f ; 63
984: f8 94 cli
986: de bf out 0x3e, r29 ; 62
988: 0f be out 0x3f, r0 ; 63
98a: cd bf out 0x3d, r28 ; 61
98c: 09 94 ijmp
0000098e <__epilogue_restores__>:
98e: 2a 88 ldd r2, Y+18 ; 0x12
990: 39 88 ldd r3, Y+17 ; 0x11
992: 48 88 ldd r4, Y+16 ; 0x10
994: 5f 84 ldd r5, Y+15 ; 0x0f
996: 6e 84 ldd r6, Y+14 ; 0x0e
998: 7d 84 ldd r7, Y+13 ; 0x0d
99a: 8c 84 ldd r8, Y+12 ; 0x0c
99c: 9b 84 ldd r9, Y+11 ; 0x0b
99e: aa 84 ldd r10, Y+10 ; 0x0a
9a0: b9 84 ldd r11, Y+9 ; 0x09
9a2: c8 84 ldd r12, Y+8 ; 0x08
9a4: df 80 ldd r13, Y+7 ; 0x07
9a6: ee 80 ldd r14, Y+6 ; 0x06
9a8: fd 80 ldd r15, Y+5 ; 0x05
9aa: 0c 81 ldd r16, Y+4 ; 0x04
9ac: 1b 81 ldd r17, Y+3 ; 0x03
9ae: aa 81 ldd r26, Y+2 ; 0x02
9b0: b9 81 ldd r27, Y+1 ; 0x01
9b2: ce 0f add r28, r30
9b4: d1 1d adc r29, r1
9b6: 0f b6 in r0, 0x3f ; 63
9b8: f8 94 cli
9ba: de bf out 0x3e, r29 ; 62
9bc: 0f be out 0x3f, r0 ; 63
9be: cd bf out 0x3d, r28 ; 61
9c0: ed 01 movw r28, r26
9c2: 08 95 ret
000009c4 <_exit>:
9c4: f8 94 cli
000009c6 <__stop_program>:
9c6: ff cf rjmp .-2 ; 0x9c6 <__stop_program>