GAS LISTING /tmp/ccHlcPJ9.s page 1 1 .file "ssi.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.NutSsiSkipWhitespace,"ax",@progbits 9 .type NutSsiSkipWhitespace, @function 10 NutSsiSkipWhitespace: 11 /* prologue: function */ 12 /* frame size = 0 */ 13 /* stack size = 0 */ 14 .L__stack_usage = 0 15 0000 FC01 movw r30,r24 16 .L2: 17 0002 DB01 movw r26,r22 18 0004 2D91 ld r18,X+ 19 0006 3C91 ld r19,X 20 0008 2417 cp r18,r20 21 000a 3507 cpc r19,r21 22 000c 00F4 brsh .L1 23 000e DF01 movw r26,r30 24 0010 A20F add r26,r18 25 0012 B31F adc r27,r19 26 0014 9C91 ld r25,X 27 0016 9D30 cpi r25,lo8(13) 28 0018 01F4 brne .L12 29 .L4: 30 001a 2F5F subi r18,-1 31 001c 3F4F sbci r19,-1 32 001e DB01 movw r26,r22 33 0020 2D93 st X+,r18 34 0022 3C93 st X,r19 35 0024 00C0 rjmp .L2 36 .L12: 37 0026 87EF ldi r24,lo8(-9) 38 0028 890F add r24,r25 39 002a 8230 cpi r24,lo8(2) 40 002c 00F0 brlo .L4 41 002e 9032 cpi r25,lo8(32) 42 0030 01F0 breq .L4 43 .L1: 44 0032 0895 ret 45 .size NutSsiSkipWhitespace, .-NutSsiSkipWhitespace 46 .section .rodata.str1.1,"aMS",@progbits,1 47 .LC0: 48 0000 6367 692D .string "cgi-bin/" 48 6269 6E2F 48 00 49 .LC1: 50 0009 2451 5545 .string "$QUERY_STRING" 50 5259 5F53 50 5452 494E 50 4700 51 .LC2: 52 0017 2600 .string "&" GAS LISTING /tmp/ccHlcPJ9.s page 2 53 .LC3: 54 0019 3D00 .string "=" 55 .section .text.unlikely.NutSsiProcessVirtual,"ax",@progbits 56 .type NutSsiProcessVirtual, @function 57 NutSsiProcessVirtual: 58 0000 4F92 push r4 59 0002 5F92 push r5 60 0004 6F92 push r6 61 0006 7F92 push r7 62 0008 8F92 push r8 63 000a 9F92 push r9 64 000c AF92 push r10 65 000e BF92 push r11 66 0010 CF92 push r12 67 0012 DF92 push r13 68 0014 EF92 push r14 69 0016 FF92 push r15 70 0018 0F93 push r16 71 001a 1F93 push r17 72 001c CF93 push r28 73 001e DF93 push r29 74 /* prologue: function */ 75 /* frame size = 0 */ 76 /* stack size = 16 */ 77 .L__stack_usage = 16 78 0020 D82F mov r29,r24 79 0022 C92F mov r28,r25 80 0024 B62E mov r11,r22 81 0026 A72E mov r10,r23 82 0028 4A01 movw r8,r20 83 002a 8901 movw r16,r18 84 002c C090 0000 lds r12,cgiBinPath 85 0030 D090 0000 lds r13,cgiBinPath+1 86 0034 C114 cp r12,__zero_reg__ 87 0036 D104 cpc r13,__zero_reg__ 88 0038 01F4 brne .L14 89 003a E0E0 ldi r30,lo8(.LC0) 90 003c CE2E mov r12,r30 91 003e E0E0 ldi r30,hi8(.LC0) 92 0040 DE2E mov r13,r30 93 .L14: 94 0042 8B2D mov r24,r11 95 0044 9A2D mov r25,r10 96 0046 0E94 0000 call NutDecodePath 97 004a 892B or r24,r25 98 004c 01F4 brne .L68 99 004e 80E0 ldi r24,lo8(rsp_bad_req_P) 100 0050 90E0 ldi r25,hi8(rsp_bad_req_P) 101 0052 00C0 rjmp .L80 102 .L86: 103 0054 F701 movw r30,r14 104 .L19: 105 0056 6F01 movw r12,r30 106 0058 CE18 sub r12,r14 107 005a DF08 sbc r13,r15 108 005c 8191 ld r24,Z+ 109 005e 8111 cpse r24,__zero_reg__ GAS LISTING /tmp/ccHlcPJ9.s page 3 110 0060 00C0 rjmp .L85 111 .L18: 112 0062 C114 cp r12,__zero_reg__ 113 0064 D104 cpc r13,__zero_reg__ 114 0066 01F0 breq .L20 115 0068 A601 movw r20,r12 116 006a B701 movw r22,r14 117 006c 8B2D mov r24,r11 118 006e 9A2D mov r25,r10 119 0070 0E94 0000 call strncasecmp 120 0074 892B or r24,r25 121 0076 01F4 brne .L20 122 0078 64E2 ldi r22,lo8(36) 123 007a 70E0 ldi r23,0 124 007c 81E0 ldi r24,lo8(1) 125 007e 90E0 ldi r25,0 126 0080 0E94 0000 call calloc 127 0084 7C01 movw r14,r24 128 0086 892B or r24,r25 129 0088 01F4 brne .L21 130 .L38: 131 008a 80E0 ldi r24,lo8(rsp_intern_err_P) 132 008c 90E0 ldi r25,hi8(rsp_intern_err_P) 133 .L80: 134 008e 9F93 push r25 135 0090 8F93 push r24 136 0092 CF93 push r28 137 0094 DF93 push r29 138 0096 0E94 0000 call fprintf_P 139 009a 0F90 pop __tmp_reg__ 140 009c 0F90 pop __tmp_reg__ 141 009e 0F90 pop __tmp_reg__ 142 00a0 0F90 pop __tmp_reg__ 143 00a2 00C0 rjmp .L13 144 .L20: 145 00a4 CE0C add r12,r14 146 00a6 DF1C adc r13,r15 147 00a8 F601 movw r30,r12 148 00aa 8081 ld r24,Z 149 00ac 8823 tst r24 150 00ae 01F4 brne .+2 151 00b0 00C0 rjmp .L37 152 00b2 EF28 or r14,r15 153 00b4 01F4 brne .+2 154 00b6 00C0 rjmp .L37 155 .L68: 156 00b8 7601 movw r14,r12 157 .L17: 158 00ba 9701 movw r18,r14 159 00bc 2F5F subi r18,-1 160 00be 3F4F sbci r19,-1 161 00c0 D701 movw r26,r14 162 00c2 8C91 ld r24,X 163 00c4 8B33 cpi r24,lo8(59) 164 00c6 01F4 brne .L86 165 00c8 7901 movw r14,r18 166 00ca 00C0 rjmp .L17 GAS LISTING /tmp/ccHlcPJ9.s page 4 167 .L85: 168 00cc 8B33 cpi r24,lo8(59) 169 00ce 01F4 brne .L19 170 00d0 00C0 rjmp .L18 171 .L21: 172 00d2 81E0 ldi r24,lo8(1) 173 00d4 90E0 ldi r25,0 174 00d6 F701 movw r30,r14 175 00d8 9183 std Z+1,r25 176 00da 8083 st Z,r24 177 00dc D801 movw r26,r16 178 00de 1296 adiw r26,2 179 00e0 8D91 ld r24,X+ 180 00e2 9C91 ld r25,X 181 00e4 1397 sbiw r26,2+1 182 00e6 9383 std Z+3,r25 183 00e8 8283 std Z+2,r24 184 00ea 1482 std Z+4,__zero_reg__ 185 00ec 1582 std Z+5,__zero_reg__ 186 00ee 1682 std Z+6,__zero_reg__ 187 00f0 1782 std Z+7,__zero_reg__ 188 00f2 5296 adiw r26,18 189 00f4 8D91 ld r24,X+ 190 00f6 9C91 ld r25,X 191 00f8 5397 sbiw r26,18+1 192 00fa 0097 sbiw r24,0 193 00fc 01F0 breq .L22 194 00fe 0E94 0000 call strdup 195 0102 D701 movw r26,r14 196 0104 5396 adiw r26,18+1 197 0106 9C93 st X,r25 198 0108 8E93 st -X,r24 199 010a 5297 sbiw r26,18 200 010c 892B or r24,r25 201 010e 01F4 brne .+2 202 0110 00C0 rjmp .L84 203 .L22: 204 0112 F801 movw r30,r16 205 0114 8685 ldd r24,Z+14 206 0116 9785 ldd r25,Z+15 207 0118 0097 sbiw r24,0 208 011a 01F0 breq .L23 209 011c 0E94 0000 call strdup 210 0120 D701 movw r26,r14 211 0122 1F96 adiw r26,14+1 212 0124 9C93 st X,r25 213 0126 8E93 st -X,r24 214 0128 1E97 sbiw r26,14 215 012a 892B or r24,r25 216 012c 01F4 brne .+2 217 012e 00C0 rjmp .L84 218 .L23: 219 0130 6FE3 ldi r22,lo8(63) 220 0132 70E0 ldi r23,0 221 0134 8B2D mov r24,r11 222 0136 9A2D mov r25,r10 223 0138 0E94 0000 call strchr GAS LISTING /tmp/ccHlcPJ9.s page 5 224 013c 0097 sbiw r24,0 225 013e 01F4 brne .+2 226 0140 00C0 rjmp .L24 227 0142 4C01 movw r8,r24 228 0144 BFEF ldi r27,-1 229 0146 8B1A sub r8,r27 230 0148 9B0A sbc r9,r27 231 014a FC01 movw r30,r24 232 014c 1082 st Z,__zero_reg__ 233 014e 60E0 ldi r22,lo8(.LC1) 234 0150 70E0 ldi r23,hi8(.LC1) 235 0152 C401 movw r24,r8 236 0154 0E94 0000 call strcmp 237 0158 892B or r24,r25 238 015a 01F0 breq .+2 239 015c 00C0 rjmp .L25 240 015e D801 movw r26,r16 241 0160 5696 adiw r26,22 242 0162 8D90 ld r8,X+ 243 0164 9C90 ld r9,X 244 0166 5797 sbiw r26,22+1 245 0168 880C lsl r8 246 016a 991C rol r9 247 016c 81E0 ldi r24,lo8(1) 248 016e 90E0 ldi r25,0 249 0170 20E0 ldi r18,0 250 0172 30E0 ldi r19,0 251 .L26: 252 0174 2815 cp r18,r8 253 0176 3905 cpc r19,r9 254 0178 04F4 brge .L87 255 017a A901 movw r20,r18 256 017c 440F lsl r20 257 017e 551F rol r21 258 0180 F801 movw r30,r16 259 0182 6489 ldd r22,Z+20 260 0184 7589 ldd r23,Z+21 261 0186 FB01 movw r30,r22 262 0188 E40F add r30,r20 263 018a F51F adc r31,r21 264 018c A081 ld r26,Z 265 018e B181 ldd r27,Z+1 266 0190 FD01 movw r30,r26 267 0: 268 0192 0190 ld __tmp_reg__,Z+ 269 0194 0020 tst __tmp_reg__ 270 0196 01F4 brne 0b 271 0198 EA1B sub r30,r26 272 019a FB0B sbc r31,r27 273 019c 8E0F add r24,r30 274 019e 9F1F adc r25,r31 275 01a0 2F5F subi r18,-1 276 01a2 3F4F sbci r19,-1 277 01a4 00C0 rjmp .L26 278 .L87: 279 01a6 0E94 0000 call malloc 280 01aa D701 movw r26,r14 GAS LISTING /tmp/ccHlcPJ9.s page 6 281 01ac 1B96 adiw r26,10+1 282 01ae 9C93 st X,r25 283 01b0 8E93 st -X,r24 284 01b2 1A97 sbiw r26,10 285 01b4 0097 sbiw r24,0 286 01b6 01F4 brne .+2 287 01b8 00C0 rjmp .L84 288 01ba FC01 movw r30,r24 289 01bc 1082 st Z,__zero_reg__ 290 01be 52E0 ldi r21,lo8(2) 291 01c0 652E mov r6,r21 292 01c2 712C mov r7,__zero_reg__ 293 01c4 812C mov r8,__zero_reg__ 294 01c6 912C mov r9,__zero_reg__ 295 .L29: 296 01c8 D801 movw r26,r16 297 01ca 5696 adiw r26,22 298 01cc 8D91 ld r24,X+ 299 01ce 9C91 ld r25,X 300 01d0 5797 sbiw r26,22+1 301 01d2 880F lsl r24 302 01d4 991F rol r25 303 01d6 8816 cp r8,r24 304 01d8 9906 cpc r9,r25 305 01da 04F0 brlt .+2 306 01dc 00C0 rjmp .L32 307 01de 8114 cp r8,__zero_reg__ 308 01e0 9104 cpc r9,__zero_reg__ 309 01e2 01F0 breq .L30 310 01e4 60E0 ldi r22,lo8(.LC2) 311 01e6 70E0 ldi r23,hi8(.LC2) 312 01e8 D701 movw r26,r14 313 01ea 1A96 adiw r26,10 314 01ec 8D91 ld r24,X+ 315 01ee 9C91 ld r25,X 316 01f0 1B97 sbiw r26,10+1 317 01f2 0E94 0000 call strcat 318 .L30: 319 01f6 C401 movw r24,r8 320 01f8 880F lsl r24 321 01fa 991F rol r25 322 01fc D801 movw r26,r16 323 01fe 5496 adiw r26,20 324 0200 ED91 ld r30,X+ 325 0202 FC91 ld r31,X 326 0204 5597 sbiw r26,20+1 327 0206 E80F add r30,r24 328 0208 F91F adc r31,r25 329 020a 6081 ld r22,Z 330 020c 7181 ldd r23,Z+1 331 020e F701 movw r30,r14 332 0210 8285 ldd r24,Z+10 333 0212 9385 ldd r25,Z+11 334 0214 0E94 0000 call strcat 335 0218 60E0 ldi r22,lo8(.LC3) 336 021a 70E0 ldi r23,hi8(.LC3) 337 021c D701 movw r26,r14 GAS LISTING /tmp/ccHlcPJ9.s page 7 338 021e 1A96 adiw r26,10 339 0220 8D91 ld r24,X+ 340 0222 9C91 ld r25,X 341 0224 1B97 sbiw r26,10+1 342 0226 0E94 0000 call strcat 343 022a D801 movw r26,r16 344 022c 5496 adiw r26,20 345 022e ED91 ld r30,X+ 346 0230 FC91 ld r31,X 347 0232 5597 sbiw r26,20+1 348 0234 E60D add r30,r6 349 0236 F71D adc r31,r7 350 0238 6081 ld r22,Z 351 023a 7181 ldd r23,Z+1 352 023c F701 movw r30,r14 353 023e 8285 ldd r24,Z+10 354 0240 9385 ldd r25,Z+11 355 0242 0E94 0000 call strcat 356 0246 F2E0 ldi r31,2 357 0248 8F0E add r8,r31 358 024a 911C adc r9,__zero_reg__ 359 024c 24E0 ldi r18,4 360 024e 620E add r6,r18 361 0250 711C adc r7,__zero_reg__ 362 0252 00C0 rjmp .L29 363 .L25: 364 0254 C401 movw r24,r8 365 0256 0E94 0000 call strdup 366 025a F701 movw r30,r14 367 025c 9387 std Z+11,r25 368 025e 8287 std Z+10,r24 369 0260 892B or r24,r25 370 0262 01F0 breq .L84 371 .L32: 372 0264 C701 movw r24,r14 373 0266 0E94 0000 call NutHttpProcessQueryString 374 .L24: 375 026a 8B2D mov r24,r11 376 026c 9A2D mov r25,r10 377 026e 0E94 0000 call strdup 378 0272 D701 movw r26,r14 379 0274 1996 adiw r26,8+1 380 0276 9C93 st X,r25 381 0278 8E93 st -X,r24 382 027a 1897 sbiw r26,8 383 027c 892B or r24,r25 384 027e 01F4 brne .L33 385 .L84: 386 0280 80E0 ldi r24,lo8(rsp_intern_err_P) 387 0282 90E0 ldi r25,hi8(rsp_intern_err_P) 388 0284 9F93 push r25 389 0286 8F93 push r24 390 0288 CF93 push r28 391 028a DF93 push r29 392 028c 0E94 0000 call fprintf_P 393 0290 0F90 pop __tmp_reg__ 394 0292 0F90 pop __tmp_reg__ GAS LISTING /tmp/ccHlcPJ9.s page 8 395 0294 0F90 pop __tmp_reg__ 396 0296 0F90 pop __tmp_reg__ 397 0298 00C0 rjmp .L83 398 .L33: 399 029a A601 movw r20,r12 400 029c B701 movw r22,r14 401 029e 8D2F mov r24,r29 402 02a0 9C2F mov r25,r28 403 02a2 0E94 0000 call NutCgiProcessRequest 404 .L83: 405 02a6 C701 movw r24,r14 406 /* epilogue start */ 407 02a8 DF91 pop r29 408 02aa CF91 pop r28 409 02ac 1F91 pop r17 410 02ae 0F91 pop r16 411 02b0 FF90 pop r15 412 02b2 EF90 pop r14 413 02b4 DF90 pop r13 414 02b6 CF90 pop r12 415 02b8 BF90 pop r11 416 02ba AF90 pop r10 417 02bc 9F90 pop r9 418 02be 8F90 pop r8 419 02c0 7F90 pop r7 420 02c2 6F90 pop r6 421 02c4 5F90 pop r5 422 02c6 4F90 pop r4 423 02c8 0C94 0000 jmp DestroyRequestInfo 424 .L37: 425 02cc 90E0 ldi r25,lo8(default_files) 426 02ce 692E mov r6,r25 427 02d0 90E0 ldi r25,hi8(default_files) 428 02d2 792E mov r7,r25 429 02d4 C12C mov r12,__zero_reg__ 430 02d6 D12C mov r13,__zero_reg__ 431 02d8 EE24 clr r14 432 02da EA94 dec r14 433 02dc FE2C mov r15,r14 434 02de 00C0 rjmp .L35 435 .L41: 436 02e0 8B2D mov r24,r11 437 02e2 9A2D mov r25,r10 438 02e4 0E94 0000 call CreateFilePath 439 02e8 6C01 movw r12,r24 440 02ea 0097 sbiw r24,0 441 02ec 01F4 brne .+2 442 02ee 00C0 rjmp .L38 443 02f0 60E0 ldi r22,0 444 02f2 70E8 ldi r23,lo8(-128) 445 02f4 0E94 0000 call _open 446 02f8 7C01 movw r14,r24 447 02fa 8F3F cpi r24,-1 448 02fc FFEF ldi r31,-1 449 02fe 9F07 cpc r25,r31 450 0300 01F4 brne .L88 451 .L39: GAS LISTING /tmp/ccHlcPJ9.s page 9 452 0302 C601 movw r24,r12 453 0304 0E94 0000 call free 454 .L35: 455 0308 D301 movw r26,r6 456 030a 6D91 ld r22,X+ 457 030c 7D91 ld r23,X+ 458 030e 3D01 movw r6,r26 459 0310 6115 cp r22,__zero_reg__ 460 0312 7105 cpc r23,__zero_reg__ 461 0314 01F4 brne .L41 462 0316 00C0 rjmp .L89 463 .L88: 464 0318 0E94 0000 call _filelength 465 031c 672B or r22,r23 466 031e 682B or r22,r24 467 0320 692B or r22,r25 468 0322 01F4 brne .L40 469 0324 C701 movw r24,r14 470 0326 0E94 0000 call _close 471 032a 00C0 rjmp .L39 472 .L89: 473 032c BFEF ldi r27,-1 474 032e EB16 cp r14,r27 475 0330 FB06 cpc r15,r27 476 0332 01F4 brne .L40 477 0334 AF92 push r10 478 0336 BF92 push r11 479 0338 80E0 ldi r24,lo8(rsp_not_found_P) 480 033a 90E0 ldi r25,hi8(rsp_not_found_P) 481 033c 9F93 push r25 482 033e 8F93 push r24 483 0340 CF93 push r28 484 0342 DF93 push r29 485 0344 0E94 0000 call fprintf_P 486 0348 0F90 pop __tmp_reg__ 487 034a 0F90 pop __tmp_reg__ 488 034c 0F90 pop __tmp_reg__ 489 034e 0F90 pop __tmp_reg__ 490 0350 0F90 pop __tmp_reg__ 491 0352 0F90 pop __tmp_reg__ 492 0354 00C0 rjmp .L13 493 .L40: 494 0356 C701 movw r24,r14 495 0358 0E94 0000 call _filelength 496 035c 2B01 movw r4,r22 497 035e 3C01 movw r6,r24 498 0360 C601 movw r24,r12 499 0362 0E94 0000 call NutGetMimeHandler 500 0366 5C01 movw r10,r24 501 0368 C601 movw r24,r12 502 036a 0E94 0000 call free 503 036e A114 cp r10,__zero_reg__ 504 0370 B104 cpc r11,__zero_reg__ 505 0372 01F4 brne .L42 506 0374 80E0 ldi r24,0 507 0376 92E0 ldi r25,lo8(2) 508 0378 0E94 0000 call malloc GAS LISTING /tmp/ccHlcPJ9.s page 10 509 037c 6C01 movw r12,r24 510 037e 892B or r24,r25 511 0380 01F0 breq .L43 512 0382 A12C mov r10,__zero_reg__ 513 0384 82E0 ldi r24,lo8(2) 514 0386 B82E mov r11,r24 515 .L44: 516 0388 4114 cp r4,__zero_reg__ 517 038a 5104 cpc r5,__zero_reg__ 518 038c 6104 cpc r6,__zero_reg__ 519 038e 7104 cpc r7,__zero_reg__ 520 0390 01F0 breq .L48 521 0392 4114 cp r4,__zero_reg__ 522 0394 E2E0 ldi r30,2 523 0396 5E06 cpc r5,r30 524 0398 6104 cpc r6,__zero_reg__ 525 039a 7104 cpc r7,__zero_reg__ 526 039c 04F4 brge .L45 527 039e 5201 movw r10,r4 528 .L45: 529 03a0 A501 movw r20,r10 530 03a2 B601 movw r22,r12 531 03a4 C701 movw r24,r14 532 03a6 0E94 0000 call _read 533 03aa 8C01 movw r16,r24 534 03ac 2D2F mov r18,r29 535 03ae 3C2F mov r19,r28 536 03b0 AC01 movw r20,r24 537 03b2 61E0 ldi r22,lo8(1) 538 03b4 70E0 ldi r23,0 539 03b6 C601 movw r24,r12 540 03b8 0E94 0000 call fwrite 541 03bc 892B or r24,r25 542 03be 01F4 brne .L46 543 .L48: 544 03c0 C601 movw r24,r12 545 03c2 0E94 0000 call free 546 03c6 00C0 rjmp .L43 547 .L46: 548 03c8 012E mov __tmp_reg__,r17 549 03ca 000C lsl r0 550 03cc 220B sbc r18,r18 551 03ce 330B sbc r19,r19 552 03d0 401A sub r4,r16 553 03d2 510A sbc r5,r17 554 03d4 620A sbc r6,r18 555 03d6 730A sbc r7,r19 556 03d8 00C0 rjmp .L44 557 .L42: 558 03da 9401 movw r18,r8 559 03dc A201 movw r20,r4 560 03de B701 movw r22,r14 561 03e0 8D2F mov r24,r29 562 03e2 9C2F mov r25,r28 563 03e4 F501 movw r30,r10 564 03e6 1995 eicall 565 .L43: GAS LISTING /tmp/ccHlcPJ9.s page 11 566 03e8 C701 movw r24,r14 567 /* epilogue start */ 568 03ea DF91 pop r29 569 03ec CF91 pop r28 570 03ee 1F91 pop r17 571 03f0 0F91 pop r16 572 03f2 FF90 pop r15 573 03f4 EF90 pop r14 574 03f6 DF90 pop r13 575 03f8 CF90 pop r12 576 03fa BF90 pop r11 577 03fc AF90 pop r10 578 03fe 9F90 pop r9 579 0400 8F90 pop r8 580 0402 7F90 pop r7 581 0404 6F90 pop r6 582 0406 5F90 pop r5 583 0408 4F90 pop r4 584 040a 0C94 0000 jmp _close 585 .L13: 586 /* epilogue start */ 587 040e DF91 pop r29 588 0410 CF91 pop r28 589 0412 1F91 pop r17 590 0414 0F91 pop r16 591 0416 FF90 pop r15 592 0418 EF90 pop r14 593 041a DF90 pop r13 594 041c CF90 pop r12 595 041e BF90 pop r11 596 0420 AF90 pop r10 597 0422 9F90 pop r9 598 0424 8F90 pop r8 599 0426 7F90 pop r7 600 0428 6F90 pop r6 601 042a 5F90 pop r5 602 042c 4F90 pop r4 603 042e 0895 ret 604 .size NutSsiProcessVirtual, .-NutSsiProcessVirtual 605 .section .rodata.str1.1 606 .LC4: 607 001b 3C21 2D2D .string "" 610 .LC6: 611 0024 2369 6E63 .string "#include" 611 6C75 6465 611 00 612 .LC7: 613 002d 2365 7865 .string "#exec" 613 6300 614 .LC8: 615 0033 2365 6368 .string "#echo" 615 6F00 616 .LC9: 617 0039 7669 7274 .string "virtual" GAS LISTING /tmp/ccHlcPJ9.s page 12 617 7561 6C00 618 .LC10: 619 0041 6669 6C65 .string "file" 619 00 620 .LC11: 621 0046 7661 7200 .string "var" 622 .LC12: 623 004a 6367 6900 .string "cgi" 624 .section .text.NutHttpProcessSHTML,"ax",@progbits 625 .type NutHttpProcessSHTML, @function 626 NutHttpProcessSHTML: 627 0000 2F92 push r2 628 0002 3F92 push r3 629 0004 4F92 push r4 630 0006 5F92 push r5 631 0008 6F92 push r6 632 000a 7F92 push r7 633 000c 8F92 push r8 634 000e 9F92 push r9 635 0010 AF92 push r10 636 0012 BF92 push r11 637 0014 CF92 push r12 638 0016 DF92 push r13 639 0018 EF92 push r14 640 001a FF92 push r15 641 001c 0F93 push r16 642 001e 1F93 push r17 643 0020 CF93 push r28 644 0022 DF93 push r29 645 0024 CDB7 in r28,__SP_L__ 646 0026 DEB7 in r29,__SP_H__ 647 0028 6797 sbiw r28,23 648 002a 0FB6 in __tmp_reg__,__SREG__ 649 002c F894 cli 650 002e DEBF out __SP_H__,r29 651 0030 0FBE out __SREG__,__tmp_reg__ 652 0032 CDBF out __SP_L__,r28 653 /* prologue: function */ 654 /* frame size = 23 */ 655 /* stack size = 41 */ 656 .L__stack_usage = 41 657 0034 F82E mov r15,r24 658 0036 E92E mov r14,r25 659 0038 7887 std Y+8,r23 660 003a 6F83 std Y+7,r22 661 003c 5E83 std Y+6,r21 662 003e 4D83 std Y+5,r20 663 0040 3C8B std Y+20,r19 664 0042 2B8B std Y+19,r18 665 0044 1C87 std Y+12,r17 666 0046 0B87 std Y+11,r16 667 0048 5C83 std Y+4,r21 668 004a 4B83 std Y+3,r20 669 004c 4130 cpi r20,1 670 004e 5240 sbci r21,2 671 0050 04F0 brlt .L91 672 0052 80E0 ldi r24,0 GAS LISTING /tmp/ccHlcPJ9.s page 13 673 0054 92E0 ldi r25,lo8(2) 674 0056 9C83 std Y+4,r25 675 0058 8B83 std Y+3,r24 676 .L91: 677 005a AB81 ldd r26,Y+3 678 005c BC81 ldd r27,Y+4 679 005e 1196 adiw r26,1 680 0060 B88B std Y+16,r27 681 0062 AF87 std Y+15,r26 682 0064 CD01 movw r24,r26 683 0066 0E94 0000 call malloc 684 006a 8C01 movw r16,r24 685 006c 812C mov r8,__zero_reg__ 686 006e 912C mov r9,__zero_reg__ 687 0070 B12C mov r11,__zero_reg__ 688 0072 2B81 ldd r18,Y+3 689 0074 3C81 ldd r19,Y+4 690 0076 2356 subi r18,99 691 0078 3109 sbc r19,__zero_reg__ 692 007a 3E8B std Y+22,r19 693 007c 2D8B std Y+21,r18 694 007e 8B81 ldd r24,Y+3 695 0080 9C81 ldd r25,Y+4 696 0082 8456 subi r24,100 697 0084 9109 sbc r25,__zero_reg__ 698 0086 9E87 std Y+14,r25 699 0088 8D87 std Y+13,r24 700 .L92: 701 008a 8D81 ldd r24,Y+5 702 008c 9E81 ldd r25,Y+6 703 008e 8816 cp r8,r24 704 0090 9906 cpc r9,r25 705 0092 01F4 brne .+2 706 0094 00C0 rjmp .L143 707 0096 4F85 ldd r20,Y+15 708 0098 5889 ldd r21,Y+16 709 009a 60E0 ldi r22,0 710 009c 70E0 ldi r23,0 711 009e C801 movw r24,r16 712 00a0 0E94 0000 call memset 713 00a4 4D81 ldd r20,Y+5 714 00a6 5E81 ldd r21,Y+6 715 00a8 4819 sub r20,r8 716 00aa 5909 sbc r21,r9 717 00ac AB81 ldd r26,Y+3 718 00ae BC81 ldd r27,Y+4 719 00b0 A417 cp r26,r20 720 00b2 B507 cpc r27,r21 721 00b4 04F4 brge .L93 722 00b6 AD01 movw r20,r26 723 .L93: 724 00b8 B801 movw r22,r16 725 00ba 8F81 ldd r24,Y+7 726 00bc 9885 ldd r25,Y+8 727 00be 0E94 0000 call _read 728 00c2 6C01 movw r12,r24 729 00c4 B110 cpse r11,__zero_reg__ GAS LISTING /tmp/ccHlcPJ9.s page 14 730 00c6 00C0 rjmp .L94 731 00c8 60E0 ldi r22,lo8(.LC4) 732 00ca 70E0 ldi r23,hi8(.LC4) 733 00cc C801 movw r24,r16 734 00ce 0E94 0000 call strstr 735 00d2 0097 sbiw r24,0 736 00d4 01F4 brne .L95 737 00d6 2D81 ldd r18,Y+5 738 00d8 3E81 ldd r19,Y+6 739 00da 8B81 ldd r24,Y+3 740 00dc 9C81 ldd r25,Y+4 741 00de 8217 cp r24,r18 742 00e0 9307 cpc r25,r19 743 00e2 04F4 brge .L96 744 00e4 AD89 ldd r26,Y+21 745 00e6 BE89 ldd r27,Y+22 746 00e8 CA16 cp r12,r26 747 00ea DB06 cpc r13,r27 748 00ec 04F0 brlt .L129 749 00ee 4D85 ldd r20,Y+13 750 00f0 5E85 ldd r21,Y+14 751 00f2 00C0 rjmp .L97 752 .L129: 753 00f4 A601 movw r20,r12 754 .L97: 755 00f6 2F2D mov r18,r15 756 00f8 3E2D mov r19,r14 757 00fa 61E0 ldi r22,lo8(1) 758 00fc 70E0 ldi r23,0 759 00fe C801 movw r24,r16 760 0100 0E94 0000 call fwrite 761 0104 2D89 ldd r18,Y+21 762 0106 3E89 ldd r19,Y+22 763 0108 C216 cp r12,r18 764 010a D306 cpc r13,r19 765 010c 04F0 brlt .L98 766 010e CD84 ldd r12,Y+13 767 0110 DE84 ldd r13,Y+14 768 .L98: 769 0112 8C0C add r8,r12 770 0114 9D1C adc r9,r13 771 0116 A401 movw r20,r8 772 0118 092C mov __tmp_reg__,r9 773 011a 000C lsl r0 774 011c 660B sbc r22,r22 775 011e 770B sbc r23,r23 776 0120 20E0 ldi r18,0 777 0122 30E0 ldi r19,0 778 0124 8F81 ldd r24,Y+7 779 0126 9885 ldd r25,Y+8 780 0128 0E94 0000 call _seek 781 012c 00C0 rjmp .L92 782 .L96: 783 012e 2F2D mov r18,r15 784 0130 3E2D mov r19,r14 785 0132 A601 movw r20,r12 786 0134 61E0 ldi r22,lo8(1) GAS LISTING /tmp/ccHlcPJ9.s page 15 787 0136 70E0 ldi r23,0 788 0138 C801 movw r24,r16 789 013a 0E94 0000 call fwrite 790 013e 8C0C add r8,r12 791 0140 9D1C adc r9,r13 792 0142 00C0 rjmp .L92 793 .L95: 794 0144 801B sub r24,r16 795 0146 910B sbc r25,r17 796 0148 6C01 movw r12,r24 797 014a DD24 clr r13 798 014c 2F2D mov r18,r15 799 014e 3E2D mov r19,r14 800 0150 A601 movw r20,r12 801 0152 61E0 ldi r22,lo8(1) 802 0154 70E0 ldi r23,0 803 0156 C801 movw r24,r16 804 0158 0E94 0000 call fwrite 805 015c 8C0C add r8,r12 806 015e 9D1C adc r9,r13 807 0160 A401 movw r20,r8 808 0162 092C mov __tmp_reg__,r9 809 0164 000C lsl r0 810 0166 660B sbc r22,r22 811 0168 770B sbc r23,r23 812 016a 20E0 ldi r18,0 813 016c 30E0 ldi r19,0 814 016e 8F81 ldd r24,Y+7 815 0170 9885 ldd r25,Y+8 816 0172 0E94 0000 call _seek 817 0176 BB24 clr r11 818 0178 B394 inc r11 819 017a 00C0 rjmp .L92 820 .L94: 821 017c 60E0 ldi r22,lo8(.LC5) 822 017e 70E0 ldi r23,hi8(.LC5) 823 0180 C801 movw r24,r16 824 0182 0E94 0000 call strstr 825 0186 0097 sbiw r24,0 826 0188 01F4 brne .L100 827 018a AB80 ldd r10,Y+3 828 018c BC80 ldd r11,Y+4 829 018e CA14 cp r12,r10 830 0190 DB04 cpc r13,r11 831 0192 04F4 brge .L101 832 0194 5601 movw r10,r12 833 .L101: 834 0196 2F2D mov r18,r15 835 0198 3E2D mov r19,r14 836 019a A501 movw r20,r10 837 019c 61E0 ldi r22,lo8(1) 838 019e 70E0 ldi r23,0 839 01a0 C801 movw r24,r16 840 01a2 0E94 0000 call fwrite 841 01a6 8A0C add r8,r10 842 01a8 9B1C adc r9,r11 843 01aa 00C0 rjmp .L142 GAS LISTING /tmp/ccHlcPJ9.s page 16 844 .L100: 845 01ac 801B sub r24,r16 846 01ae 910B sbc r25,r17 847 01b0 1C01 movw r2,r24 848 01b2 3324 clr r3 849 01b4 84E0 ldi r24,lo8(4) 850 01b6 90E0 ldi r25,0 851 01b8 9A83 std Y+2,r25 852 01ba 8983 std Y+1,r24 853 01bc A101 movw r20,r2 854 01be BE01 movw r22,r28 855 01c0 6F5F subi r22,-1 856 01c2 7F4F sbci r23,-1 857 01c4 C801 movw r24,r16 858 01c6 0E94 0000 call NutSsiSkipWhitespace 859 01ca C980 ldd r12,Y+1 860 01cc DA80 ldd r13,Y+2 861 01ce 2C14 cp r2,r12 862 01d0 3D04 cpc r3,r13 863 01d2 01F4 brne .+2 864 01d4 00C0 rjmp .L134 865 01d6 5801 movw r10,r16 866 01d8 AC0C add r10,r12 867 01da BD1C adc r11,r13 868 01dc 48E0 ldi r20,lo8(8) 869 01de 50E0 ldi r21,0 870 01e0 60E0 ldi r22,lo8(.LC6) 871 01e2 70E0 ldi r23,hi8(.LC6) 872 01e4 C501 movw r24,r10 873 01e6 0E94 0000 call strncasecmp 874 01ea 892B or r24,r25 875 01ec 01F4 brne .L104 876 01ee 98E0 ldi r25,8 877 01f0 C90E add r12,r25 878 01f2 D11C adc r13,__zero_reg__ 879 01f4 DA82 std Y+2,r13 880 01f6 C982 std Y+1,r12 881 01f8 22E0 ldi r18,lo8(2) 882 01fa 00C0 rjmp .L105 883 .L104: 884 01fc 45E0 ldi r20,lo8(5) 885 01fe 50E0 ldi r21,0 886 0200 60E0 ldi r22,lo8(.LC7) 887 0202 70E0 ldi r23,hi8(.LC7) 888 0204 C501 movw r24,r10 889 0206 0E94 0000 call strncasecmp 890 020a 892B or r24,r25 891 020c 01F4 brne .L106 892 020e A5E0 ldi r26,5 893 0210 CA0E add r12,r26 894 0212 D11C adc r13,__zero_reg__ 895 0214 DA82 std Y+2,r13 896 0216 C982 std Y+1,r12 897 0218 23E0 ldi r18,lo8(3) 898 021a 00C0 rjmp .L105 899 .L106: 900 021c 45E0 ldi r20,lo8(5) GAS LISTING /tmp/ccHlcPJ9.s page 17 901 021e 50E0 ldi r21,0 902 0220 60E0 ldi r22,lo8(.LC8) 903 0222 70E0 ldi r23,hi8(.LC8) 904 0224 C501 movw r24,r10 905 0226 0E94 0000 call strncasecmp 906 022a 892B or r24,r25 907 022c 01F0 breq .+2 908 022e 00C0 rjmp .L134 909 0230 B5E0 ldi r27,5 910 0232 CB0E add r12,r27 911 0234 D11C adc r13,__zero_reg__ 912 0236 DA82 std Y+2,r13 913 0238 C982 std Y+1,r12 914 023a 24E0 ldi r18,lo8(4) 915 .L105: 916 023c 8981 ldd r24,Y+1 917 023e 9A81 ldd r25,Y+2 918 0240 8215 cp r24,r2 919 0242 9305 cpc r25,r3 920 0244 00F0 brlo .+2 921 0246 00C0 rjmp .L134 922 0248 A101 movw r20,r2 923 024a BE01 movw r22,r28 924 024c 6F5F subi r22,-1 925 024e 7F4F sbci r23,-1 926 0250 C801 movw r24,r16 927 0252 2F8B std Y+23,r18 928 0254 0E94 0000 call NutSsiSkipWhitespace 929 0258 C980 ldd r12,Y+1 930 025a DA80 ldd r13,Y+2 931 025c 2F89 ldd r18,Y+23 932 025e 2C14 cp r2,r12 933 0260 3D04 cpc r3,r13 934 0262 01F4 brne .+2 935 0264 00C0 rjmp .L134 936 0266 5801 movw r10,r16 937 0268 AC0C add r10,r12 938 026a BD1C adc r11,r13 939 026c 2230 cpi r18,lo8(2) 940 026e 01F4 brne .L108 941 0270 47E0 ldi r20,lo8(7) 942 0272 50E0 ldi r21,0 943 0274 60E0 ldi r22,lo8(.LC9) 944 0276 70E0 ldi r23,hi8(.LC9) 945 0278 C501 movw r24,r10 946 027a 0E94 0000 call strncasecmp 947 027e 2F89 ldd r18,Y+23 948 0280 892B or r24,r25 949 0282 01F4 brne .L109 950 0284 37E0 ldi r19,7 951 0286 C30E add r12,r19 952 0288 D11C adc r13,__zero_reg__ 953 028a 00C0 rjmp .L141 954 .L109: 955 028c 44E0 ldi r20,lo8(4) 956 028e 50E0 ldi r21,0 957 0290 60E0 ldi r22,lo8(.LC10) GAS LISTING /tmp/ccHlcPJ9.s page 18 958 0292 70E0 ldi r23,hi8(.LC10) 959 0294 C501 movw r24,r10 960 0296 0E94 0000 call strncasecmp 961 029a 892B or r24,r25 962 029c 01F0 breq .+2 963 029e 00C0 rjmp .L134 964 02a0 84E0 ldi r24,4 965 02a2 C80E add r12,r24 966 02a4 D11C adc r13,__zero_reg__ 967 02a6 DA82 std Y+2,r13 968 02a8 C982 std Y+1,r12 969 02aa 21E0 ldi r18,lo8(1) 970 02ac 00C0 rjmp .L110 971 .L108: 972 02ae 43E0 ldi r20,lo8(3) 973 02b0 50E0 ldi r21,0 974 02b2 2430 cpi r18,lo8(4) 975 02b4 01F4 brne .L111 976 02b6 60E0 ldi r22,lo8(.LC11) 977 02b8 70E0 ldi r23,hi8(.LC11) 978 02ba C501 movw r24,r10 979 02bc 2F8B std Y+23,r18 980 02be 0E94 0000 call strncasecmp 981 02c2 2F89 ldd r18,Y+23 982 02c4 892B or r24,r25 983 02c6 01F0 breq .+2 984 02c8 00C0 rjmp .L134 985 02ca 93E0 ldi r25,3 986 02cc C90E add r12,r25 987 02ce D11C adc r13,__zero_reg__ 988 .L141: 989 02d0 DA82 std Y+2,r13 990 02d2 C982 std Y+1,r12 991 02d4 00C0 rjmp .L110 992 .L111: 993 02d6 60E0 ldi r22,lo8(.LC12) 994 02d8 70E0 ldi r23,hi8(.LC12) 995 02da C501 movw r24,r10 996 02dc 0E94 0000 call strncasecmp 997 02e0 892B or r24,r25 998 02e2 01F0 breq .+2 999 02e4 00C0 rjmp .L134 1000 02e6 A3E0 ldi r26,3 1001 02e8 CA0E add r12,r26 1002 02ea D11C adc r13,__zero_reg__ 1003 02ec DA82 std Y+2,r13 1004 02ee C982 std Y+1,r12 1005 02f0 23E0 ldi r18,lo8(3) 1006 .L110: 1007 02f2 8981 ldd r24,Y+1 1008 02f4 9A81 ldd r25,Y+2 1009 02f6 8215 cp r24,r2 1010 02f8 9305 cpc r25,r3 1011 02fa 00F0 brlo .+2 1012 02fc 00C0 rjmp .L134 1013 02fe A101 movw r20,r2 1014 0300 BE01 movw r22,r28 GAS LISTING /tmp/ccHlcPJ9.s page 19 1015 0302 6F5F subi r22,-1 1016 0304 7F4F sbci r23,-1 1017 0306 C801 movw r24,r16 1018 0308 2F8B std Y+23,r18 1019 030a 0E94 0000 call NutSsiSkipWhitespace 1020 030e 8981 ldd r24,Y+1 1021 0310 9A81 ldd r25,Y+2 1022 0312 2816 cp r2,r24 1023 0314 3906 cpc r3,r25 1024 0316 01F4 brne .+2 1025 0318 00C0 rjmp .L134 1026 031a F801 movw r30,r16 1027 031c E80F add r30,r24 1028 031e F91F adc r31,r25 1029 0320 3081 ld r19,Z 1030 0322 3D33 cpi r19,lo8(61) 1031 0324 01F0 breq .+2 1032 0326 00C0 rjmp .L134 1033 0328 0196 adiw r24,1 1034 032a 9A83 std Y+2,r25 1035 032c 8983 std Y+1,r24 1036 032e A101 movw r20,r2 1037 0330 BE01 movw r22,r28 1038 0332 6F5F subi r22,-1 1039 0334 7F4F sbci r23,-1 1040 0336 C801 movw r24,r16 1041 0338 0E94 0000 call NutSsiSkipWhitespace 1042 033c A980 ldd r10,Y+1 1043 033e BA80 ldd r11,Y+2 1044 0340 2F89 ldd r18,Y+23 1045 0342 2A14 cp r2,r10 1046 0344 3B04 cpc r3,r11 1047 0346 01F4 brne .+2 1048 0348 00C0 rjmp .L134 1049 034a F801 movw r30,r16 1050 034c EA0D add r30,r10 1051 034e FB1D adc r31,r11 1052 0350 8081 ld r24,Z 1053 0352 8232 cpi r24,lo8(34) 1054 0354 01F0 breq .+2 1055 0356 00C0 rjmp .L127 1056 0358 BFEF ldi r27,-1 1057 035a AB1A sub r10,r27 1058 035c BB0A sbc r11,r27 1059 035e BA82 std Y+2,r11 1060 0360 A982 std Y+1,r10 1061 0362 2A14 cp r2,r10 1062 0364 3B04 cpc r3,r11 1063 0366 01F4 brne .+2 1064 0368 00C0 rjmp .L134 1065 .L113: 1066 036a 8981 ldd r24,Y+1 1067 036c 9A81 ldd r25,Y+2 1068 036e F801 movw r30,r16 1069 0370 E80F add r30,r24 1070 0372 F91F adc r31,r25 1071 0374 3081 ld r19,Z GAS LISTING /tmp/ccHlcPJ9.s page 20 1072 0376 3232 cpi r19,lo8(34) 1073 0378 01F0 breq .L144 1074 037a 0196 adiw r24,1 1075 037c 9A83 std Y+2,r25 1076 037e 8983 std Y+1,r24 1077 0380 2816 cp r2,r24 1078 0382 3906 cpc r3,r25 1079 0384 01F4 brne .L113 1080 0386 00C0 rjmp .L134 1081 .L144: 1082 0388 A00E add r10,r16 1083 038a B11E adc r11,r17 1084 038c 1082 st Z,__zero_reg__ 1085 038e 2330 cpi r18,lo8(3) 1086 0390 01F4 brne .+2 1087 0392 00C0 rjmp .L116 1088 0394 2430 cpi r18,lo8(4) 1089 0396 01F4 brne .+2 1090 0398 00C0 rjmp .L117 1091 039a 2230 cpi r18,lo8(2) 1092 039c 01F4 brne .+2 1093 039e 00C0 rjmp .L116 1094 03a0 60E0 ldi r22,0 1095 03a2 70E8 ldi r23,lo8(-128) 1096 03a4 C501 movw r24,r10 1097 03a6 0E94 0000 call _open 1098 03aa 6C01 movw r12,r24 1099 03ac 8F3F cpi r24,-1 1100 03ae 2FEF ldi r18,-1 1101 03b0 9207 cpc r25,r18 1102 03b2 01F4 brne .L119 1103 03b4 BF92 push r11 1104 03b6 AF92 push r10 1105 03b8 A0E0 ldi r26,lo8(rsp_not_found_P) 1106 03ba B0E0 ldi r27,hi8(rsp_not_found_P) 1107 03bc BF93 push r27 1108 03be AF93 push r26 1109 03c0 EF92 push r14 1110 03c2 FF92 push r15 1111 03c4 0E94 0000 call fprintf_P 1112 03c8 0F90 pop __tmp_reg__ 1113 03ca 0F90 pop __tmp_reg__ 1114 03cc 0F90 pop __tmp_reg__ 1115 03ce 0F90 pop __tmp_reg__ 1116 03d0 0F90 pop __tmp_reg__ 1117 03d2 0F90 pop __tmp_reg__ 1118 03d4 00C0 rjmp .L127 1119 .L119: 1120 03d6 0E94 0000 call _filelength 1121 03da 2B01 movw r4,r22 1122 03dc 3C01 movw r6,r24 1123 03de 80E0 ldi r24,0 1124 03e0 92E0 ldi r25,lo8(2) 1125 03e2 0E94 0000 call malloc 1126 03e6 5C01 movw r10,r24 1127 03e8 892B or r24,r25 1128 03ea 01F0 breq .L120 GAS LISTING /tmp/ccHlcPJ9.s page 21 1129 03ec 80E0 ldi r24,0 1130 03ee 92E0 ldi r25,lo8(2) 1131 03f0 9A87 std Y+10,r25 1132 03f2 8987 std Y+9,r24 1133 .L121: 1134 03f4 4114 cp r4,__zero_reg__ 1135 03f6 5104 cpc r5,__zero_reg__ 1136 03f8 6104 cpc r6,__zero_reg__ 1137 03fa 7104 cpc r7,__zero_reg__ 1138 03fc 01F0 breq .L125 1139 03fe 4114 cp r4,__zero_reg__ 1140 0400 92E0 ldi r25,2 1141 0402 5906 cpc r5,r25 1142 0404 6104 cpc r6,__zero_reg__ 1143 0406 7104 cpc r7,__zero_reg__ 1144 0408 04F4 brge .L122 1145 040a 5A86 std Y+10,r5 1146 040c 4986 std Y+9,r4 1147 .L122: 1148 040e 4985 ldd r20,Y+9 1149 0410 5A85 ldd r21,Y+10 1150 0412 B501 movw r22,r10 1151 0414 C601 movw r24,r12 1152 0416 0E94 0000 call _read 1153 041a 9A8B std Y+18,r25 1154 041c 898B std Y+17,r24 1155 041e 2F2D mov r18,r15 1156 0420 3E2D mov r19,r14 1157 0422 AC01 movw r20,r24 1158 0424 61E0 ldi r22,lo8(1) 1159 0426 70E0 ldi r23,0 1160 0428 C501 movw r24,r10 1161 042a 0E94 0000 call fwrite 1162 042e 892B or r24,r25 1163 0430 01F4 brne .L123 1164 .L125: 1165 0432 C501 movw r24,r10 1166 0434 0E94 0000 call free 1167 0438 00C0 rjmp .L120 1168 .L123: 1169 043a 2989 ldd r18,Y+17 1170 043c 3A89 ldd r19,Y+18 1171 043e C901 movw r24,r18 1172 0440 330F lsl r19 1173 0442 AA0B sbc r26,r26 1174 0444 BB0B sbc r27,r27 1175 0446 481A sub r4,r24 1176 0448 590A sbc r5,r25 1177 044a 6A0A sbc r6,r26 1178 044c 7B0A sbc r7,r27 1179 044e 00C0 rjmp .L121 1180 .L120: 1181 0450 C601 movw r24,r12 1182 0452 0E94 0000 call _close 1183 0456 00C0 rjmp .L127 1184 .L116: 1185 0458 2B85 ldd r18,Y+11 GAS LISTING /tmp/ccHlcPJ9.s page 22 1186 045a 3C85 ldd r19,Y+12 1187 045c 4B89 ldd r20,Y+19 1188 045e 5C89 ldd r21,Y+20 1189 0460 B501 movw r22,r10 1190 0462 8F2D mov r24,r15 1191 0464 9E2D mov r25,r14 1192 0466 0E94 0000 call NutSsiProcessVirtual 1193 046a 00C0 rjmp .L127 1194 .L117: 1195 046c E091 0000 lds r30,ssivar_handler 1196 0470 F091 0000 lds r31,ssivar_handler+1 1197 0474 3097 sbiw r30,0 1198 0476 01F0 breq .L127 1199 0478 6B85 ldd r22,Y+11 1200 047a 7C85 ldd r23,Y+12 1201 047c C501 movw r24,r10 1202 047e 1995 eicall 1203 0480 0097 sbiw r24,0 1204 0482 01F0 breq .L127 1205 0484 6F2D mov r22,r15 1206 0486 7E2D mov r23,r14 1207 0488 0E94 0000 call fputs 1208 048c 00C0 rjmp .L127 1209 .L134: 1210 048e 2F2D mov r18,r15 1211 0490 3E2D mov r19,r14 1212 0492 A101 movw r20,r2 1213 0494 4D5F subi r20,-3 1214 0496 5F4F sbci r21,-1 1215 0498 61E0 ldi r22,lo8(1) 1216 049a 70E0 ldi r23,0 1217 049c C801 movw r24,r16 1218 049e 0E94 0000 call fwrite 1219 .L127: 1220 04a2 C101 movw r24,r2 1221 04a4 0396 adiw r24,3 1222 04a6 880E add r8,r24 1223 04a8 991E adc r9,r25 1224 04aa A401 movw r20,r8 1225 04ac 092C mov __tmp_reg__,r9 1226 04ae 000C lsl r0 1227 04b0 660B sbc r22,r22 1228 04b2 770B sbc r23,r23 1229 04b4 20E0 ldi r18,0 1230 04b6 30E0 ldi r19,0 1231 04b8 8F81 ldd r24,Y+7 1232 04ba 9885 ldd r25,Y+8 1233 04bc 0E94 0000 call _seek 1234 .L142: 1235 04c0 B12C mov r11,__zero_reg__ 1236 04c2 00C0 rjmp .L92 1237 .L143: 1238 04c4 C801 movw r24,r16 1239 /* epilogue start */ 1240 04c6 6796 adiw r28,23 1241 04c8 0FB6 in __tmp_reg__,__SREG__ 1242 04ca F894 cli GAS LISTING /tmp/ccHlcPJ9.s page 23 1243 04cc DEBF out __SP_H__,r29 1244 04ce 0FBE out __SREG__,__tmp_reg__ 1245 04d0 CDBF out __SP_L__,r28 1246 04d2 DF91 pop r29 1247 04d4 CF91 pop r28 1248 04d6 1F91 pop r17 1249 04d8 0F91 pop r16 1250 04da FF90 pop r15 1251 04dc EF90 pop r14 1252 04de DF90 pop r13 1253 04e0 CF90 pop r12 1254 04e2 BF90 pop r11 1255 04e4 AF90 pop r10 1256 04e6 9F90 pop r9 1257 04e8 8F90 pop r8 1258 04ea 7F90 pop r7 1259 04ec 6F90 pop r6 1260 04ee 5F90 pop r5 1261 04f0 4F90 pop r4 1262 04f2 3F90 pop r3 1263 04f4 2F90 pop r2 1264 04f6 0C94 0000 jmp free 1265 .size NutHttpProcessSHTML, .-NutHttpProcessSHTML 1266 .section .rodata.str1.1 1267 .LC13: 1268 004e 2E73 6874 .string ".shtml" 1268 6D6C 00 1269 .section .text.NutRegisterSsi,"ax",@progbits 1270 .global NutRegisterSsi 1271 .type NutRegisterSsi, @function 1272 NutRegisterSsi: 1273 /* prologue: function */ 1274 /* frame size = 0 */ 1275 /* stack size = 0 */ 1276 .L__stack_usage = 0 1277 0000 60E0 ldi r22,lo8(gs(NutHttpProcessSHTML)) 1278 0002 70E0 ldi r23,hi8(gs(NutHttpProcessSHTML)) 1279 0004 80E0 ldi r24,lo8(.LC13) 1280 0006 90E0 ldi r25,hi8(.LC13) 1281 0008 0C94 0000 jmp NutSetMimeHandler 1282 .size NutRegisterSsi, .-NutRegisterSsi 1283 .section .text.NutRegisterSsiVarHandler,"ax",@progbits 1284 .global NutRegisterSsiVarHandler 1285 .type NutRegisterSsiVarHandler, @function 1286 NutRegisterSsiVarHandler: 1287 /* prologue: function */ 1288 /* frame size = 0 */ 1289 /* stack size = 0 */ 1290 .L__stack_usage = 0 1291 0000 9093 0000 sts ssivar_handler+1,r25 1292 0004 8093 0000 sts ssivar_handler,r24 1293 0008 80E0 ldi r24,0 1294 000a 90E0 ldi r25,0 1295 000c 0895 ret 1296 .size NutRegisterSsiVarHandler, .-NutRegisterSsiVarHandler 1297 .section .progmem.data,"a",@progbits 1298 .type rsp_bad_req_P, @object GAS LISTING /tmp/ccHlcPJ9.s page 24 1299 .size rsp_bad_req_P, 18 1300 rsp_bad_req_P: 1301 0000 3430 3020 .string "400 Bad request\r\n" 1301 4261 6420 1301 7265 7175 1301 6573 740D 1301 0A00 1302 .type rsp_intern_err_P, @object 1303 .size rsp_intern_err_P, 21 1304 rsp_intern_err_P: 1305 0012 3530 3020 .string "500 Internal error\r\n" 1305 496E 7465 1305 726E 616C 1305 2065 7272 1305 6F72 0D0A 1306 .type rsp_not_found_P, @object 1307 .size rsp_not_found_P, 20 1308 rsp_not_found_P: 1309 0027 3430 3420 .string "404 Not found: %s\r\n" 1309 4E6F 7420 1309 666F 756E 1309 643A 2025 1309 730D 0A00 1310 .local ssivar_handler 1311 .comm ssivar_handler,2,1 1312 .ident "GCC: (GNU) 5.3.0" 1313 .global __do_copy_data 1314 .global __do_clear_bss GAS LISTING /tmp/ccHlcPJ9.s page 25 DEFINED SYMBOLS *ABS*:0000000000000000 ssi.c /tmp/ccHlcPJ9.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccHlcPJ9.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccHlcPJ9.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccHlcPJ9.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/ccHlcPJ9.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccHlcPJ9.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccHlcPJ9.s:10 .text.NutSsiSkipWhitespace:0000000000000000 NutSsiSkipWhitespace /tmp/ccHlcPJ9.s:57 .text.unlikely.NutSsiProcessVirtual:0000000000000000 NutSsiProcessVirtual /tmp/ccHlcPJ9.s:1300 .progmem.data:0000000000000000 rsp_bad_req_P /tmp/ccHlcPJ9.s:1304 .progmem.data:0000000000000012 rsp_intern_err_P /tmp/ccHlcPJ9.s:1308 .progmem.data:0000000000000027 rsp_not_found_P /tmp/ccHlcPJ9.s:626 .text.NutHttpProcessSHTML:0000000000000000 NutHttpProcessSHTML .bss:0000000000000000 ssivar_handler /tmp/ccHlcPJ9.s:1272 .text.NutRegisterSsi:0000000000000000 NutRegisterSsi /tmp/ccHlcPJ9.s:1286 .text.NutRegisterSsiVarHandler:0000000000000000 NutRegisterSsiVarHandler UNDEFINED SYMBOLS cgiBinPath NutDecodePath strncasecmp calloc fprintf_P strdup strchr strcmp malloc strcat NutHttpProcessQueryString NutCgiProcessRequest DestroyRequestInfo default_files CreateFilePath _open free _filelength _close NutGetMimeHandler _read fwrite memset strstr _seek fputs NutSetMimeHandler __do_copy_data __do_clear_bss