GAS LISTING /tmp/ccNFASpk.s page 1 1 .file "base64_encode.c" 2 __SP_H__ = 0x3e 3 __SP_L__ = 0x3d 4 __SREG__ = 0x3f 5 __RAMPZ__ = 0x3b 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .section .text.NutEncodeBase64,"ax",@progbits 9 .global NutEncodeBase64 10 .type NutEncodeBase64, @function 11 NutEncodeBase64: 12 0000 8F92 push r8 13 0002 9F92 push r9 14 0004 AF92 push r10 15 0006 BF92 push r11 16 0008 CF92 push r12 17 000a DF92 push r13 18 000c EF92 push r14 19 000e FF92 push r15 20 0010 0F93 push r16 21 0012 1F93 push r17 22 0014 CF93 push r28 23 0016 DF93 push r29 24 /* prologue: function */ 25 /* frame size = 0 */ 26 /* stack size = 12 */ 27 .L__stack_usage = 12 28 0018 EC01 movw r28,r24 29 001a FC01 movw r30,r24 30 0: 31 001c 0190 ld __tmp_reg__,Z+ 32 001e 0020 tst __tmp_reg__ 33 0020 01F4 brne 0b 34 0022 3197 sbiw r30,1 35 0024 8F01 movw r16,r30 36 0026 081B sub r16,r24 37 0028 190B sbc r17,r25 38 002a C801 movw r24,r16 39 002c 0196 adiw r24,1 40 002e 880F lsl r24 41 0030 991F rol r25 42 0032 880F lsl r24 43 0034 991F rol r25 44 0036 E3E0 ldi r30,lo8(3) 45 0038 F0E0 ldi r31,0 46 003a BF01 movw r22,r30 47 003c 0E94 0000 call __udivmodhi4 48 0040 9B01 movw r18,r22 49 0042 CB01 movw r24,r22 50 0044 BF01 movw r22,r30 51 0046 0E94 0000 call __udivmodhi4 52 004a 280F add r18,r24 53 004c 391F adc r19,r25 54 004e C901 movw r24,r18 55 0050 68E4 ldi r22,lo8(72) 56 0052 70E0 ldi r23,0 57 0054 0E94 0000 call __udivmodhi4 GAS LISTING /tmp/ccNFASpk.s page 2 58 0058 660F lsl r22 59 005a 771F rol r23 60 005c 2D5F subi r18,-3 61 005e 3F4F sbci r19,-1 62 0060 620F add r22,r18 63 0062 731F adc r23,r19 64 0064 80E0 ldi r24,lo8(heapFreeList) 65 0066 90E0 ldi r25,hi8(heapFreeList) 66 0068 0E94 0000 call NutHeapRootAlloc 67 006c DC01 movw r26,r24 68 006e 892B or r24,r25 69 0070 01F4 brne .+2 70 0072 00C0 rjmp .L9 71 0074 CE01 movw r24,r28 72 0076 0C0F add r16,r28 73 0078 1D1F adc r17,r29 74 007a C0E0 ldi r28,0 75 007c D0E0 ldi r29,0 76 007e A12C mov r10,__zero_reg__ 77 0080 B12C mov r11,__zero_reg__ 78 0082 40E0 ldi r20,0 79 0084 50E0 ldi r21,0 80 0086 BA01 movw r22,r20 81 0088 20E0 ldi r18,0 82 008a 30E0 ldi r19,0 83 008c EDE0 ldi r30,lo8(13) 84 008e 9E2E mov r9,r30 85 0090 FAE0 ldi r31,lo8(10) 86 0092 8F2E mov r8,r31 87 .L3: 88 0094 0817 cp r16,r24 89 0096 1907 cpc r17,r25 90 0098 01F4 brne .+2 91 009a 00C0 rjmp .L17 92 009c FC01 movw r30,r24 93 009e C190 ld r12,Z+ 94 00a0 CF01 movw r24,r30 95 00a2 0C2C mov __tmp_reg__,r12 96 00a4 000C lsl r0 97 00a6 DD08 sbc r13,r13 98 00a8 EE08 sbc r14,r14 99 00aa FF08 sbc r15,r15 100 00ac 4C0D add r20,r12 101 00ae 5D1D adc r21,r13 102 00b0 6E1D adc r22,r14 103 00b2 7F1D adc r23,r15 104 00b4 2196 adiw r28,1 105 00b6 C330 cpi r28,3 106 00b8 D105 cpc r29,__zero_reg__ 107 00ba 01F0 breq .+2 108 00bc 00C0 rjmp .L4 109 00be 6A01 movw r12,r20 110 00c0 7B01 movw r14,r22 111 00c2 F2E1 ldi r31,18 112 1: 113 00c4 F594 asr r15 114 00c6 E794 ror r14 GAS LISTING /tmp/ccNFASpk.s page 3 115 00c8 D794 ror r13 116 00ca C794 ror r12 117 00cc FA95 dec r31 118 00ce 01F4 brne 1b 119 00d0 FFE3 ldi r31,63 120 00d2 CF22 and r12,r31 121 00d4 DD24 clr r13 122 00d6 EE24 clr r14 123 00d8 FF24 clr r15 124 00da F601 movw r30,r12 125 00dc E050 subi r30,lo8(-(base64etab)) 126 00de F040 sbci r31,hi8(-(base64etab)) 127 /* #APP */ 128 ; 116 "../../nut/gorp/codec/base64_encode.c" 1 129 00e0 E491 lpm r30, Z 130 131 ; 0 "" 2 132 /* #NOAPP */ 133 00e2 ED01 movw r28,r26 134 00e4 C20F add r28,r18 135 00e6 D31F adc r29,r19 136 00e8 E883 st Y,r30 137 00ea 6A01 movw r12,r20 138 00ec 7B01 movw r14,r22 139 00ee ECE0 ldi r30,12 140 1: 141 00f0 F594 asr r15 142 00f2 E794 ror r14 143 00f4 D794 ror r13 144 00f6 C794 ror r12 145 00f8 EA95 dec r30 146 00fa 01F4 brne 1b 147 00fc EFE3 ldi r30,63 148 00fe CE22 and r12,r30 149 0100 DD24 clr r13 150 0102 EE24 clr r14 151 0104 FF24 clr r15 152 0106 F601 movw r30,r12 153 0108 E050 subi r30,lo8(-(base64etab)) 154 010a F040 sbci r31,hi8(-(base64etab)) 155 /* #APP */ 156 ; 117 "../../nut/gorp/codec/base64_encode.c" 1 157 010c E491 lpm r30, Z 158 159 ; 0 "" 2 160 /* #NOAPP */ 161 010e E983 std Y+1,r30 162 0110 6A01 movw r12,r20 163 0112 7B01 movw r14,r22 164 0114 F6E0 ldi r31,6 165 1: 166 0116 F594 asr r15 167 0118 E794 ror r14 168 011a D794 ror r13 169 011c C794 ror r12 170 011e FA95 dec r31 171 0120 01F4 brne 1b GAS LISTING /tmp/ccNFASpk.s page 4 172 0122 FFE3 ldi r31,63 173 0124 CF22 and r12,r31 174 0126 DD24 clr r13 175 0128 EE24 clr r14 176 012a FF24 clr r15 177 012c F601 movw r30,r12 178 012e E050 subi r30,lo8(-(base64etab)) 179 0130 F040 sbci r31,hi8(-(base64etab)) 180 /* #APP */ 181 ; 118 "../../nut/gorp/codec/base64_encode.c" 1 182 0132 E491 lpm r30, Z 183 184 ; 0 "" 2 185 /* #NOAPP */ 186 0134 EA83 std Y+2,r30 187 0136 7901 movw r14,r18 188 0138 E4E0 ldi r30,4 189 013a EE0E add r14,r30 190 013c F11C adc r15,__zero_reg__ 191 013e 4F73 andi r20,63 192 0140 5527 clr r21 193 0142 6627 clr r22 194 0144 7727 clr r23 195 0146 FA01 movw r30,r20 196 0148 E050 subi r30,lo8(-(base64etab)) 197 014a F040 sbci r31,hi8(-(base64etab)) 198 /* #APP */ 199 ; 119 "../../nut/gorp/codec/base64_encode.c" 1 200 014c 4491 lpm r20, Z 201 202 ; 0 "" 2 203 /* #NOAPP */ 204 014e 4B83 std Y+3,r20 205 0150 F4E0 ldi r31,4 206 0152 AF0E add r10,r31 207 0154 B11C adc r11,__zero_reg__ 208 0156 48E4 ldi r20,72 209 0158 A416 cp r10,r20 210 015a B104 cpc r11,__zero_reg__ 211 015c 01F4 brne .L10 212 015e FD01 movw r30,r26 213 0160 EE0D add r30,r14 214 0162 FF1D adc r31,r15 215 0164 9082 st Z,r9 216 0166 7901 movw r14,r18 217 0168 E6E0 ldi r30,6 218 016a EE0E add r14,r30 219 016c F11C adc r15,__zero_reg__ 220 016e 8D82 std Y+5,r8 221 0170 C0E0 ldi r28,0 222 0172 D0E0 ldi r29,0 223 0174 A12C mov r10,__zero_reg__ 224 0176 B12C mov r11,__zero_reg__ 225 0178 00C0 rjmp .L14 226 .L4: 227 017a 762F mov r23,r22 228 017c 652F mov r22,r21 GAS LISTING /tmp/ccNFASpk.s page 5 229 017e 542F mov r21,r20 230 0180 4427 clr r20 231 0182 7901 movw r14,r18 232 0184 00C0 rjmp .L5 233 .L10: 234 0186 C0E0 ldi r28,0 235 0188 D0E0 ldi r29,0 236 .L14: 237 018a 40E0 ldi r20,0 238 018c 50E0 ldi r21,0 239 018e BA01 movw r22,r20 240 .L5: 241 0190 9701 movw r18,r14 242 0192 00C0 rjmp .L3 243 .L17: 244 0194 2097 sbiw r28,0 245 0196 01F4 brne .+2 246 0198 00C0 rjmp .L7 247 019a 82E0 ldi r24,lo8(2) 248 019c 90E0 ldi r25,0 249 019e 8C1B sub r24,r28 250 01a0 9D0B sbc r25,r29 251 01a2 F3E0 ldi r31,3 252 1: 253 01a4 880F lsl r24 254 01a6 991F rol r25 255 01a8 FA95 dec r31 256 01aa 01F4 brne 1b 257 01ac 00C0 rjmp 2f 258 1: 259 01ae 440F lsl r20 260 01b0 551F rol r21 261 01b2 661F rol r22 262 01b4 771F rol r23 263 2: 264 01b6 8A95 dec r24 265 01b8 02F4 brpl 1b 266 01ba 6A01 movw r12,r20 267 01bc 7B01 movw r14,r22 268 01be 12E1 ldi r17,18 269 1: 270 01c0 F594 asr r15 271 01c2 E794 ror r14 272 01c4 D794 ror r13 273 01c6 C794 ror r12 274 01c8 1A95 dec r17 275 01ca 01F4 brne 1b 276 01cc F601 movw r30,r12 277 01ce E050 subi r30,lo8(-(base64etab)) 278 01d0 F040 sbci r31,hi8(-(base64etab)) 279 /* #APP */ 280 ; 135 "../../nut/gorp/codec/base64_encode.c" 1 281 01d2 1491 lpm r17, Z 282 283 ; 0 "" 2 284 /* #NOAPP */ 285 01d4 CD01 movw r24,r26 GAS LISTING /tmp/ccNFASpk.s page 6 286 01d6 820F add r24,r18 287 01d8 931F adc r25,r19 288 01da FC01 movw r30,r24 289 01dc 1083 st Z,r17 290 01de 7901 movw r14,r18 291 01e0 F2E0 ldi r31,2 292 01e2 EF0E add r14,r31 293 01e4 F11C adc r15,__zero_reg__ 294 01e6 4A01 movw r8,r20 295 01e8 5B01 movw r10,r22 296 01ea 0CE0 ldi r16,12 297 1: 298 01ec B594 asr r11 299 01ee A794 ror r10 300 01f0 9794 ror r9 301 01f2 8794 ror r8 302 01f4 0A95 dec r16 303 01f6 01F4 brne 1b 304 01f8 EFE3 ldi r30,63 305 01fa 8E22 and r8,r30 306 01fc 9924 clr r9 307 01fe AA24 clr r10 308 0200 BB24 clr r11 309 0202 F401 movw r30,r8 310 0204 E050 subi r30,lo8(-(base64etab)) 311 0206 F040 sbci r31,hi8(-(base64etab)) 312 /* #APP */ 313 ; 136 "../../nut/gorp/codec/base64_encode.c" 1 314 0208 1491 lpm r17, Z 315 316 ; 0 "" 2 317 /* #NOAPP */ 318 020a FC01 movw r30,r24 319 020c 1183 std Z+1,r17 320 020e 8901 movw r16,r18 321 0210 0C5F subi r16,-4 322 0212 1F4F sbci r17,-1 323 0214 C901 movw r24,r18 324 0216 0396 adiw r24,3 325 0218 9D01 movw r18,r26 326 021a 2E0D add r18,r14 327 021c 3F1D adc r19,r15 328 021e 2197 sbiw r28,1 329 0220 01F4 brne .L8 330 0222 4DE3 ldi r20,lo8(61) 331 0224 F901 movw r30,r18 332 0226 4083 st Z,r20 333 0228 9801 movw r18,r16 334 022a FD01 movw r30,r26 335 022c E80F add r30,r24 336 022e F91F adc r31,r25 337 0230 00C0 rjmp .L15 338 .L8: 339 0232 E6E0 ldi r30,6 340 1: 341 0234 7595 asr r23 342 0236 6795 ror r22 GAS LISTING /tmp/ccNFASpk.s page 7 343 0238 5795 ror r21 344 023a 4795 ror r20 345 023c EA95 dec r30 346 023e 01F4 brne 1b 347 0240 4F73 andi r20,63 348 0242 5527 clr r21 349 0244 6627 clr r22 350 0246 7727 clr r23 351 0248 FA01 movw r30,r20 352 024a E050 subi r30,lo8(-(base64etab)) 353 024c F040 sbci r31,hi8(-(base64etab)) 354 /* #APP */ 355 ; 141 "../../nut/gorp/codec/base64_encode.c" 1 356 024e 4491 lpm r20, Z 357 358 ; 0 "" 2 359 /* #NOAPP */ 360 0250 F901 movw r30,r18 361 0252 4083 st Z,r20 362 0254 9801 movw r18,r16 363 0256 FD01 movw r30,r26 364 0258 E80F add r30,r24 365 025a F91F adc r31,r25 366 025c 4DE3 ldi r20,lo8(61) 367 .L15: 368 025e 4083 st Z,r20 369 .L7: 370 0260 FD01 movw r30,r26 371 0262 E20F add r30,r18 372 0264 F31F adc r31,r19 373 0266 1082 st Z,__zero_reg__ 374 0268 CD01 movw r24,r26 375 026a 00C0 rjmp .L2 376 .L9: 377 026c 80E0 ldi r24,0 378 026e 90E0 ldi r25,0 379 .L2: 380 /* epilogue start */ 381 0270 DF91 pop r29 382 0272 CF91 pop r28 383 0274 1F91 pop r17 384 0276 0F91 pop r16 385 0278 FF90 pop r15 386 027a EF90 pop r14 387 027c DF90 pop r13 388 027e CF90 pop r12 389 0280 BF90 pop r11 390 0282 AF90 pop r10 391 0284 9F90 pop r9 392 0286 8F90 pop r8 393 0288 0895 ret 394 .size NutEncodeBase64, .-NutEncodeBase64 395 .section .progmem.data,"a",@progbits 396 .type base64etab, @object 397 .size base64etab, 65 398 base64etab: 399 0000 4142 4344 .string "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" GAS LISTING /tmp/ccNFASpk.s page 8 399 4546 4748 399 494A 4B4C 399 4D4E 4F50 399 5152 5354 400 .ident "GCC: (GNU) 5.3.0" GAS LISTING /tmp/ccNFASpk.s page 9 DEFINED SYMBOLS *ABS*:0000000000000000 base64_encode.c /tmp/ccNFASpk.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccNFASpk.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccNFASpk.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccNFASpk.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/ccNFASpk.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccNFASpk.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccNFASpk.s:11 .text.NutEncodeBase64:0000000000000000 NutEncodeBase64 /tmp/ccNFASpk.s:398 .progmem.data:0000000000000000 base64etab UNDEFINED SYMBOLS __udivmodhi4 heapFreeList NutHeapRootAlloc