base64_encode.lst 14 KB

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