GAS LISTING /tmp/cc6cnd5v.s page 1 1 .file "mod_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.HttpSsiVarHandler,"ax",@progbits 9 .type HttpSsiVarHandler, @function 10 HttpSsiVarHandler: 11 /* prologue: function */ 12 /* frame size = 0 */ 13 /* stack size = 0 */ 14 .L__stack_usage = 0 15 0000 CB01 movw r24,r22 16 0002 0895 ret 17 .size HttpSsiVarHandler, .-HttpSsiVarHandler 18 .section .rodata.str1.1,"aMS",@progbits,1 19 .LC0: 20 0000 6367 6900 .string "cgi" 21 .LC1: 22 0004 00 .string "" 23 .LC2: 24 0005 2451 5545 .string "$QUERY_STRING" 24 5259 5F53 24 5452 494E 24 4700 25 .section .text.HttpSsiExecHandler,"ax",@progbits 26 .global HttpSsiExecHandler 27 .type HttpSsiExecHandler, @function 28 HttpSsiExecHandler: 29 0000 4F92 push r4 30 0002 5F92 push r5 31 0004 6F92 push r6 32 0006 7F92 push r7 33 0008 8F92 push r8 34 000a 9F92 push r9 35 000c AF92 push r10 36 000e BF92 push r11 37 0010 CF92 push r12 38 0012 DF92 push r13 39 0014 EF92 push r14 40 0016 FF92 push r15 41 0018 0F93 push r16 42 001a 1F93 push r17 43 001c CF93 push r28 44 001e DF93 push r29 45 /* prologue: function */ 46 /* frame size = 0 */ 47 /* stack size = 16 */ 48 .L__stack_usage = 16 49 0020 EC01 movw r28,r24 50 0022 8B01 movw r16,r22 51 0024 FB01 movw r30,r22 52 0026 E680 ldd r14,Z+6 53 0028 F780 ldd r15,Z+7 54 002a E114 cp r14,__zero_reg__ GAS LISTING /tmp/cc6cnd5v.s page 2 55 002c F104 cpc r15,__zero_reg__ 56 002e 01F4 brne .+2 57 0030 00C0 rjmp .L4 58 0032 8281 ldd r24,Z+2 59 0034 9381 ldd r25,Z+3 60 0036 0397 sbiw r24,3 61 0038 01F0 breq .+2 62 003a 00C0 rjmp .L4 63 003c 43E0 ldi r20,lo8(3) 64 003e 50E0 ldi r21,0 65 0040 60E0 ldi r22,lo8(.LC0) 66 0042 70E0 ldi r23,hi8(.LC0) 67 0044 8081 ld r24,Z 68 0046 9181 ldd r25,Z+1 69 0048 0E94 0000 call memcmp 70 004c 892B or r24,r25 71 004e 01F0 breq .+2 72 0050 00C0 rjmp .L4 73 0052 F801 movw r30,r16 74 0054 6481 ldd r22,Z+4 75 0056 7581 ldd r23,Z+5 76 0058 A701 movw r20,r14 77 005a 80E0 ldi r24,lo8(.LC1) 78 005c 90E0 ldi r25,hi8(.LC1) 79 005e 0E94 0000 call AllocConcatStringLen 80 0062 6C01 movw r12,r24 81 0064 0097 sbiw r24,0 82 0066 01F4 brne .+2 83 0068 00C0 rjmp .L4 84 006a 6FE3 ldi r22,lo8(63) 85 006c 70E0 ldi r23,0 86 006e 0E94 0000 call strchr 87 0072 3C01 movw r6,r24 88 0074 0097 sbiw r24,0 89 0076 01F0 breq .L6 90 0078 FC01 movw r30,r24 91 007a 1082 st Z,__zero_reg__ 92 007c 0196 adiw r24,1 93 007e 3C01 movw r6,r24 94 .L6: 95 0080 8CE2 ldi r24,lo8(44) 96 0082 90E0 ldi r25,0 97 0084 0E94 0000 call malloc 98 0088 5C01 movw r10,r24 99 008a 892B or r24,r25 100 008c 01F4 brne .+2 101 008e 00C0 rjmp .L7 102 0090 2E01 movw r4,r28 103 0092 92E0 ldi r25,2 104 0094 490E add r4,r25 105 0096 511C adc r5,__zero_reg__ 106 0098 8CE2 ldi r24,lo8(44) 107 009a F201 movw r30,r4 108 009c D501 movw r26,r10 109 0: 110 009e 0190 ld r0,Z+ 111 00a0 0D92 st X+,r0 GAS LISTING /tmp/cc6cnd5v.s page 3 112 00a2 8A95 dec r24 113 00a4 01F4 brne 0b 114 00a6 81E0 ldi r24,lo8(1) 115 00a8 90E0 ldi r25,0 116 00aa 9B83 std Y+3,r25 117 00ac 8A83 std Y+2,r24 118 00ae 1D86 std Y+13,__zero_reg__ 119 00b0 1C86 std Y+12,__zero_reg__ 120 00b2 1A8A std Y+18,__zero_reg__ 121 00b4 1B8A std Y+19,__zero_reg__ 122 00b6 1C8A std Y+20,__zero_reg__ 123 00b8 1D8A std Y+21,__zero_reg__ 124 00ba 6114 cp r6,__zero_reg__ 125 00bc 7104 cpc r7,__zero_reg__ 126 00be 01F4 brne .+2 127 00c0 00C0 rjmp .L11 128 00c2 8885 ldd r24,Y+8 129 00c4 9985 ldd r25,Y+9 130 00c6 892B or r24,r25 131 00c8 01F0 breq .L11 132 00ca 60E0 ldi r22,lo8(.LC2) 133 00cc 70E0 ldi r23,hi8(.LC2) 134 00ce C301 movw r24,r6 135 00d0 0E94 0000 call strstr 136 00d4 0097 sbiw r24,0 137 00d6 01F0 breq .L11 138 00d8 FC01 movw r30,r24 139 00da 1082 st Z,__zero_reg__ 140 00dc F301 movw r30,r6 141 0: 142 00de 0190 ld __tmp_reg__,Z+ 143 00e0 0020 tst __tmp_reg__ 144 00e2 01F4 brne 0b 145 00e4 3197 sbiw r30,1 146 00e6 AF01 movw r20,r30 147 00e8 4619 sub r20,r6 148 00ea 5709 sbc r21,r7 149 00ec 8884 ldd r8,Y+8 150 00ee 9984 ldd r9,Y+9 151 00f0 F401 movw r30,r8 152 0: 153 00f2 0190 ld __tmp_reg__,Z+ 154 00f4 0020 tst __tmp_reg__ 155 00f6 01F4 brne 0b 156 00f8 3197 sbiw r30,1 157 00fa 9F01 movw r18,r30 158 00fc 2819 sub r18,r8 159 00fe 3909 sbc r19,r9 160 0100 7C01 movw r14,r24 161 0102 FDE0 ldi r31,13 162 0104 EF0E add r14,r31 163 0106 F11C adc r15,__zero_reg__ 164 0108 F701 movw r30,r14 165 0: 166 010a 0190 ld __tmp_reg__,Z+ 167 010c 0020 tst __tmp_reg__ 168 010e 01F4 brne 0b GAS LISTING /tmp/cc6cnd5v.s page 4 169 0110 240F add r18,r20 170 0112 351F adc r19,r21 171 0114 CF01 movw r24,r30 172 0116 8E19 sub r24,r14 173 0118 9F09 sbc r25,r15 174 011a 820F add r24,r18 175 011c 931F adc r25,r19 176 011e 0E94 0000 call malloc 177 0122 8C01 movw r16,r24 178 0124 0097 sbiw r24,0 179 0126 01F0 breq .L12 180 0128 B301 movw r22,r6 181 012a 0E94 0000 call strcpy 182 012e B401 movw r22,r8 183 0130 C801 movw r24,r16 184 0132 0E94 0000 call strcat 185 0136 B701 movw r22,r14 186 0138 C801 movw r24,r16 187 013a 0E94 0000 call strcat 188 .L12: 189 013e 1987 std Y+9,r17 190 0140 0887 std Y+8,r16 191 0142 00C0 rjmp .L10 192 .L11: 193 0144 7986 std Y+9,r7 194 0146 6886 std Y+8,r6 195 0148 00E0 ldi r16,0 196 014a 10E0 ldi r17,0 197 .L10: 198 014c A601 movw r20,r12 199 014e 60E0 ldi r22,0 200 0150 70E0 ldi r23,0 201 0152 CE01 movw r24,r28 202 0154 0E94 0000 call HttpCgiFunctionHandler 203 0158 8C85 ldd r24,Y+12 204 015a 9D85 ldd r25,Y+13 205 015c 0E94 0000 call free 206 0160 8CE2 ldi r24,lo8(44) 207 0162 F501 movw r30,r10 208 0164 D201 movw r26,r4 209 0: 210 0166 0190 ld r0,Z+ 211 0168 0D92 st X+,r0 212 016a 8A95 dec r24 213 016c 01F4 brne 0b 214 016e C501 movw r24,r10 215 0170 0E94 0000 call free 216 0174 C801 movw r24,r16 217 0176 0E94 0000 call free 218 .L7: 219 017a C601 movw r24,r12 220 017c 0E94 0000 call free 221 .L4: 222 0180 80E0 ldi r24,0 223 0182 90E0 ldi r25,0 224 /* epilogue start */ 225 0184 DF91 pop r29 GAS LISTING /tmp/cc6cnd5v.s page 5 226 0186 CF91 pop r28 227 0188 1F91 pop r17 228 018a 0F91 pop r16 229 018c FF90 pop r15 230 018e EF90 pop r14 231 0190 DF90 pop r13 232 0192 CF90 pop r12 233 0194 BF90 pop r11 234 0196 AF90 pop r10 235 0198 9F90 pop r9 236 019a 8F90 pop r8 237 019c 7F90 pop r7 238 019e 6F90 pop r6 239 01a0 5F90 pop r5 240 01a2 4F90 pop r4 241 01a4 0895 ret 242 .size HttpSsiExecHandler, .-HttpSsiExecHandler 243 .section .text.HttpSsiEchoHandler,"ax",@progbits 244 .global HttpSsiEchoHandler 245 .type HttpSsiEchoHandler, @function 246 HttpSsiEchoHandler: 247 0000 EF92 push r14 248 0002 FF92 push r15 249 0004 0F93 push r16 250 0006 1F93 push r17 251 0008 CF93 push r28 252 000a DF93 push r29 253 /* prologue: function */ 254 /* frame size = 0 */ 255 /* stack size = 6 */ 256 .L__stack_usage = 6 257 000c 7C01 movw r14,r24 258 000e 8B01 movw r16,r22 259 0010 DB01 movw r26,r22 260 0012 1696 adiw r26,6 261 0014 6D91 ld r22,X+ 262 0016 7C91 ld r23,X 263 0018 1797 sbiw r26,6+1 264 001a 6F5F subi r22,-1 265 001c 7F4F sbci r23,-1 266 001e 8091 0000 lds r24,varname.2783 267 0022 9091 0000 lds r25,varname.2783+1 268 0026 0E94 0000 call realloc 269 002a EC01 movw r28,r24 270 002c 9093 0000 sts varname.2783+1,r25 271 0030 8093 0000 sts varname.2783,r24 272 0034 F801 movw r30,r16 273 0036 6481 ldd r22,Z+4 274 0038 7581 ldd r23,Z+5 275 003a 4681 ldd r20,Z+6 276 003c 5781 ldd r21,Z+7 277 003e 0E94 0000 call memcpy 278 0042 D801 movw r26,r16 279 0044 1696 adiw r26,6 280 0046 ED91 ld r30,X+ 281 0048 FC91 ld r31,X 282 004a 1797 sbiw r26,6+1 GAS LISTING /tmp/cc6cnd5v.s page 6 283 004c EC0F add r30,r28 284 004e FD1F adc r31,r29 285 0050 1082 st Z,__zero_reg__ 286 0052 E091 0000 lds r30,ssivar_handler 287 0056 F091 0000 lds r31,ssivar_handler+1 288 005a BE01 movw r22,r28 289 005c C701 movw r24,r14 290 005e 1995 eicall 291 0060 F701 movw r30,r14 292 0062 6081 ld r22,Z 293 0064 7181 ldd r23,Z+1 294 0066 0E94 0000 call fputs 295 006a 80E0 ldi r24,0 296 006c 90E0 ldi r25,0 297 /* epilogue start */ 298 006e DF91 pop r29 299 0070 CF91 pop r28 300 0072 1F91 pop r17 301 0074 0F91 pop r16 302 0076 FF90 pop r15 303 0078 EF90 pop r14 304 007a 0895 ret 305 .size HttpSsiEchoHandler, .-HttpSsiEchoHandler 306 .section .text.HttpSsiParse,"ax",@progbits 307 .global HttpSsiParse 308 .type HttpSsiParse, @function 309 HttpSsiParse: 310 0000 2F92 push r2 311 0002 3F92 push r3 312 0004 4F92 push r4 313 0006 5F92 push r5 314 0008 6F92 push r6 315 000a 7F92 push r7 316 000c 8F92 push r8 317 000e 9F92 push r9 318 0010 AF92 push r10 319 0012 BF92 push r11 320 0014 CF92 push r12 321 0016 DF92 push r13 322 0018 EF92 push r14 323 001a FF92 push r15 324 001c 0F93 push r16 325 001e 1F93 push r17 326 0020 CF93 push r28 327 0022 DF93 push r29 328 0024 CDB7 in r28,__SP_L__ 329 0026 DEB7 in r29,__SP_H__ 330 0028 2897 sbiw r28,8 331 002a 0FB6 in __tmp_reg__,__SREG__ 332 002c F894 cli 333 002e DEBF out __SP_H__,r29 334 0030 0FBE out __SREG__,__tmp_reg__ 335 0032 CDBF out __SP_L__,r28 336 /* prologue: function */ 337 /* frame size = 8 */ 338 /* stack size = 26 */ 339 .L__stack_usage = 26 GAS LISTING /tmp/cc6cnd5v.s page 7 340 0034 4C01 movw r8,r24 341 0036 7A01 movw r14,r20 342 0038 CE01 movw r24,r28 343 003a 0196 adiw r24,1 344 003c 1C01 movw r2,r24 345 003e 88E0 ldi r24,lo8(8) 346 0040 F101 movw r30,r2 347 0: 348 0042 1192 st Z+,__zero_reg__ 349 0044 8A95 dec r24 350 0046 01F4 brne 0b 351 0048 8B01 movw r16,r22 352 .L31: 353 004a 2801 movw r4,r16 354 004c E114 cp r14,__zero_reg__ 355 004e F104 cpc r15,__zero_reg__ 356 0050 01F0 breq .L32 357 0052 0F5F subi r16,-1 358 0054 1F4F sbci r17,-1 359 0056 F201 movw r30,r4 360 0058 8081 ld r24,Z 361 005a 082E mov __tmp_reg__,r24 362 005c 000C lsl r0 363 005e 990B sbc r25,r25 364 0060 0E94 0000 call isspace 365 0064 892B or r24,r25 366 0066 01F0 breq .L32 367 0068 F1E0 ldi r31,1 368 006a EF1A sub r14,r31 369 006c F108 sbc r15,__zero_reg__ 370 006e 00C0 rjmp .L31 371 .L32: 372 0070 90E0 ldi r25,lo8(ssiCmdList) 373 0072 692E mov r6,r25 374 0074 90E0 ldi r25,hi8(ssiCmdList) 375 0076 792E mov r7,r25 376 0078 C12C mov r12,__zero_reg__ 377 007a D12C mov r13,__zero_reg__ 378 .L36: 379 007c F301 movw r30,r6 380 007e 0281 ldd r16,Z+2 381 0080 1381 ldd r17,Z+3 382 0082 0E15 cp r16,r14 383 0084 1F05 cpc r17,r15 384 0086 04F4 brge .L34 385 0088 6081 ld r22,Z 386 008a 7181 ldd r23,Z+1 387 008c A801 movw r20,r16 388 008e C201 movw r24,r4 389 0090 0E94 0000 call strncasecmp 390 0094 5C01 movw r10,r24 391 0096 892B or r24,r25 392 0098 01F4 brne .L34 393 009a E01A sub r14,r16 394 009c F10A sbc r15,r17 395 009e 040D add r16,r4 396 00a0 151D adc r17,r5 GAS LISTING /tmp/cc6cnd5v.s page 8 397 00a2 00C0 rjmp .L35 398 .L34: 399 00a4 FFEF ldi r31,-1 400 00a6 CF1A sub r12,r31 401 00a8 DF0A sbc r13,r31 402 00aa 86E0 ldi r24,6 403 00ac 680E add r6,r24 404 00ae 711C adc r7,__zero_reg__ 405 00b0 93E0 ldi r25,3 406 00b2 C916 cp r12,r25 407 00b4 D104 cpc r13,__zero_reg__ 408 00b6 01F4 brne .L36 409 00b8 AA24 clr r10 410 00ba AA94 dec r10 411 00bc BA2C mov r11,r10 412 00be 00C0 rjmp .L64 413 .L68: 414 00c0 3801 movw r6,r16 415 00c2 FFEF ldi r31,-1 416 00c4 6F1A sub r6,r31 417 00c6 7F0A sbc r7,r31 418 00c8 F801 movw r30,r16 419 00ca 8081 ld r24,Z 420 00cc 082E mov __tmp_reg__,r24 421 00ce 000C lsl r0 422 00d0 990B sbc r25,r25 423 00d2 0E94 0000 call isspace 424 00d6 892B or r24,r25 425 00d8 01F0 breq .L67 426 00da E1E0 ldi r30,1 427 00dc EE1A sub r14,r30 428 00de F108 sbc r15,__zero_reg__ 429 00e0 8301 movw r16,r6 430 .L35: 431 00e2 E114 cp r14,__zero_reg__ 432 00e4 F104 cpc r15,__zero_reg__ 433 00e6 01F4 brne .L68 434 00e8 00C0 rjmp .L39 435 .L42: 436 00ea F1E0 ldi r31,1 437 00ec 6F1A sub r6,r31 438 00ee 7108 sbc r7,__zero_reg__ 439 00f0 8201 movw r16,r4 440 00f2 01F4 brne .L44 441 .L39: 442 00f4 86E0 ldi r24,lo8(6) 443 00f6 8C9D mul r24,r12 444 00f8 F001 movw r30,r0 445 00fa 8D9D mul r24,r13 446 00fc F00D add r31,r0 447 00fe 1124 clr __zero_reg__ 448 0100 E050 subi r30,lo8(-(ssiCmdList)) 449 0102 F040 sbci r31,hi8(-(ssiCmdList)) 450 0104 0480 ldd __tmp_reg__,Z+4 451 0106 F581 ldd r31,Z+5 452 0108 E02D mov r30,__tmp_reg__ 453 010a B101 movw r22,r2 GAS LISTING /tmp/cc6cnd5v.s page 9 454 010c C401 movw r24,r8 455 010e 1995 eicall 456 0110 00C0 rjmp .L64 457 .L67: 458 0112 1A83 std Y+2,r17 459 0114 0983 std Y+1,r16 460 0116 3701 movw r6,r14 461 .L44: 462 0118 2801 movw r4,r16 463 011a FFEF ldi r31,-1 464 011c 4F1A sub r4,r31 465 011e 5F0A sbc r5,r31 466 0120 F801 movw r30,r16 467 0122 8081 ld r24,Z 468 0124 082E mov __tmp_reg__,r24 469 0126 000C lsl r0 470 0128 990B sbc r25,r25 471 012a 0E94 0000 call isalpha 472 012e 892B or r24,r25 473 0130 01F4 brne .L42 474 0132 E618 sub r14,r6 475 0134 F708 sbc r15,r7 476 0136 FC82 std Y+4,r15 477 0138 EB82 std Y+3,r14 478 013a 00C0 rjmp .L43 479 .L46: 480 013c 81E0 ldi r24,1 481 013e 681A sub r6,r24 482 0140 7108 sbc r7,__zero_reg__ 483 0142 8901 movw r16,r18 484 0144 01F0 breq .L39 485 .L43: 486 0146 9801 movw r18,r16 487 0148 2F5F subi r18,-1 488 014a 3F4F sbci r19,-1 489 014c F801 movw r30,r16 490 014e 8081 ld r24,Z 491 0150 8D33 cpi r24,lo8(61) 492 0152 01F4 brne .L46 493 0154 00C0 rjmp .L47 494 .L70: 495 0156 0F5F subi r16,-1 496 0158 1F4F sbci r17,-1 497 015a 8081 ld r24,Z 498 015c A301 movw r20,r6 499 015e 4150 subi r20,1 500 0160 5109 sbc r21,__zero_reg__ 501 0162 8232 cpi r24,lo8(34) 502 0164 01F0 breq .L69 503 0166 3A01 movw r6,r20 504 .L47: 505 0168 F801 movw r30,r16 506 016a 6114 cp r6,__zero_reg__ 507 016c 7104 cpc r7,__zero_reg__ 508 016e 01F4 brne .L70 509 0170 00C0 rjmp .L39 510 .L69: GAS LISTING /tmp/cc6cnd5v.s page 10 511 0172 3196 adiw r30,1 512 0174 FE83 std Y+6,r31 513 0176 ED83 std Y+5,r30 514 0178 CA01 movw r24,r20 515 .L52: 516 017a 0097 sbiw r24,0 517 017c 01F4 brne .+2 518 017e 00C0 rjmp .L39 519 0180 2191 ld r18,Z+ 520 0182 2232 cpi r18,lo8(34) 521 0184 01F4 brne .L50 522 0186 3A01 movw r6,r20 523 0188 681A sub r6,r24 524 018a 790A sbc r7,r25 525 018c 7886 std Y+8,r7 526 018e 6F82 std Y+7,r6 527 0190 00C0 rjmp .L39 528 .L50: 529 0192 0197 sbiw r24,1 530 0194 00C0 rjmp .L52 531 .L64: 532 0196 C501 movw r24,r10 533 /* epilogue start */ 534 0198 2896 adiw r28,8 535 019a 0FB6 in __tmp_reg__,__SREG__ 536 019c F894 cli 537 019e DEBF out __SP_H__,r29 538 01a0 0FBE out __SREG__,__tmp_reg__ 539 01a2 CDBF out __SP_L__,r28 540 01a4 DF91 pop r29 541 01a6 CF91 pop r28 542 01a8 1F91 pop r17 543 01aa 0F91 pop r16 544 01ac FF90 pop r15 545 01ae EF90 pop r14 546 01b0 DF90 pop r13 547 01b2 CF90 pop r12 548 01b4 BF90 pop r11 549 01b6 AF90 pop r10 550 01b8 9F90 pop r9 551 01ba 8F90 pop r8 552 01bc 7F90 pop r7 553 01be 6F90 pop r6 554 01c0 5F90 pop r5 555 01c2 4F90 pop r4 556 01c4 3F90 pop r3 557 01c6 2F90 pop r2 558 01c8 0895 ret 559 .size HttpSsiParse, .-HttpSsiParse 560 .section .rodata.str1.1 561 .LC3: 562 0013 3C21 2D2D .string "" 565 .section .text.HttpSsiProcessFile,"ax",@progbits 566 .global HttpSsiProcessFile GAS LISTING /tmp/cc6cnd5v.s page 11 567 .type HttpSsiProcessFile, @function 568 HttpSsiProcessFile: 569 0000 4F92 push r4 570 0002 5F92 push r5 571 0004 6F92 push r6 572 0006 7F92 push r7 573 0008 8F92 push r8 574 000a 9F92 push r9 575 000c AF92 push r10 576 000e BF92 push r11 577 0010 CF92 push r12 578 0012 DF92 push r13 579 0014 EF92 push r14 580 0016 FF92 push r15 581 0018 0F93 push r16 582 001a 1F93 push r17 583 001c CF93 push r28 584 001e DF93 push r29 585 /* prologue: function */ 586 /* frame size = 0 */ 587 /* stack size = 16 */ 588 .L__stack_usage = 16 589 0020 5C01 movw r10,r24 590 0022 3B01 movw r6,r22 591 0024 CB01 movw r24,r22 592 0026 0E94 0000 call _filelength 593 002a 643B cpi r22,-76 594 002c 25E0 ldi r18,5 595 002e 7207 cpc r23,r18 596 0030 8105 cpc r24,__zero_reg__ 597 0032 9105 cpc r25,__zero_reg__ 598 0034 04F4 brge .L84 599 0036 2B01 movw r4,r22 600 0038 00C0 rjmp .L72 601 .L84: 602 003a 94EB ldi r25,lo8(-76) 603 003c 492E mov r4,r25 604 003e 95E0 ldi r25,lo8(5) 605 0040 592E mov r5,r25 606 .L72: 607 0042 C201 movw r24,r4 608 0044 0196 adiw r24,1 609 0046 0E94 0000 call malloc 610 004a 6C01 movw r12,r24 611 004c C0E0 ldi r28,0 612 004e D0E0 ldi r29,0 613 0050 00E0 ldi r16,0 614 0052 10E0 ldi r17,0 615 .L73: 616 0054 2097 sbiw r28,0 617 0056 01F4 brne .L74 618 0058 A201 movw r20,r4 619 005a B601 movw r22,r12 620 005c C301 movw r24,r6 621 005e 0E94 0000 call _read 622 0062 EC01 movw r28,r24 623 0064 1816 cp __zero_reg__,r24 GAS LISTING /tmp/cc6cnd5v.s page 12 624 0066 1906 cpc __zero_reg__,r25 625 0068 04F0 brlt .+2 626 006a 00C0 rjmp .L75 627 006c F601 movw r30,r12 628 006e E80F add r30,r24 629 0070 F91F adc r31,r25 630 0072 1082 st Z,__zero_reg__ 631 0074 8601 movw r16,r12 632 .L74: 633 0076 60E0 ldi r22,lo8(.LC3) 634 0078 70E0 ldi r23,hi8(.LC3) 635 007a C801 movw r24,r16 636 007c 0E94 0000 call strstr 637 0080 7C01 movw r14,r24 638 0082 0097 sbiw r24,0 639 0084 01F4 brne .+2 640 0086 00C0 rjmp .L76 641 0088 4C01 movw r8,r24 642 008a 801A sub r8,r16 643 008c 910A sbc r9,r17 644 008e 01F0 breq .L77 645 0090 F501 movw r30,r10 646 0092 2081 ld r18,Z 647 0094 3181 ldd r19,Z+1 648 0096 A401 movw r20,r8 649 0098 61E0 ldi r22,lo8(1) 650 009a 70E0 ldi r23,0 651 009c C801 movw r24,r16 652 009e 0E94 0000 call fwrite 653 00a2 C819 sub r28,r8 654 00a4 D909 sbc r29,r9 655 00a6 8701 movw r16,r14 656 .L77: 657 00a8 60E0 ldi r22,lo8(.LC4) 658 00aa 70E0 ldi r23,hi8(.LC4) 659 00ac C701 movw r24,r14 660 00ae 0596 adiw r24,5 661 00b0 0E94 0000 call strstr 662 00b4 0097 sbiw r24,0 663 00b6 01F0 breq .L78 664 00b8 AC01 movw r20,r24 665 00ba 4E19 sub r20,r14 666 00bc 5F09 sbc r21,r15 667 00be 7A01 movw r14,r20 668 00c0 F3E0 ldi r31,3 669 00c2 EF0E add r14,r31 670 00c4 F11C adc r15,__zero_reg__ 671 00c6 B801 movw r22,r16 672 00c8 6B5F subi r22,-5 673 00ca 7F4F sbci r23,-1 674 00cc C501 movw r24,r10 675 00ce 0E94 0000 call HttpSsiParse 676 00d2 892B or r24,r25 677 00d4 01F0 breq .L79 678 00d6 F501 movw r30,r10 679 00d8 2081 ld r18,Z 680 00da 3181 ldd r19,Z+1 GAS LISTING /tmp/cc6cnd5v.s page 13 681 00dc A701 movw r20,r14 682 00de 61E0 ldi r22,lo8(1) 683 00e0 70E0 ldi r23,0 684 00e2 C801 movw r24,r16 685 00e4 0E94 0000 call fwrite 686 .L79: 687 00e8 CE19 sub r28,r14 688 00ea DF09 sbc r29,r15 689 00ec 0E0D add r16,r14 690 00ee 1F1D adc r17,r15 691 00f0 00C0 rjmp .L73 692 .L78: 693 00f2 CE14 cp r12,r14 694 00f4 DF04 cpc r13,r15 695 00f6 01F0 breq .L82 696 00f8 F701 movw r30,r14 697 0: 698 00fa 0190 ld __tmp_reg__,Z+ 699 00fc 0020 tst __tmp_reg__ 700 00fe 01F4 brne 0b 701 0100 3197 sbiw r30,1 702 0102 A701 movw r20,r14 703 0104 4E1B sub r20,r30 704 0106 5F0B sbc r21,r31 705 0108 60E0 ldi r22,0 706 010a 70E0 ldi r23,0 707 010c 21E0 ldi r18,lo8(1) 708 010e 30E0 ldi r19,0 709 0110 C301 movw r24,r6 710 0112 0E94 0000 call _seek 711 0116 00C0 rjmp .L91 712 .L76: 713 0118 0C15 cp r16,r12 714 011a 1D05 cpc r17,r13 715 011c 01F0 breq .L82 716 011e 7E01 movw r14,r28 717 0120 C530 cpi r28,5 718 0122 D105 cpc r29,__zero_reg__ 719 0124 04F0 brlt .L83 720 0126 84E0 ldi r24,lo8(4) 721 0128 E82E mov r14,r24 722 012a F12C mov r15,__zero_reg__ 723 .L83: 724 012c 4427 clr r20 725 012e 5527 clr r21 726 0130 4E19 sub r20,r14 727 0132 5F09 sbc r21,r15 728 0134 052E mov __tmp_reg__,r21 729 0136 000C lsl r0 730 0138 660B sbc r22,r22 731 013a 770B sbc r23,r23 732 013c 21E0 ldi r18,lo8(1) 733 013e 30E0 ldi r19,0 734 0140 C301 movw r24,r6 735 0142 0E94 0000 call _seek 736 0146 CE19 sub r28,r14 737 0148 DF09 sbc r29,r15 GAS LISTING /tmp/cc6cnd5v.s page 14 738 .L82: 739 014a F501 movw r30,r10 740 014c 2081 ld r18,Z 741 014e 3181 ldd r19,Z+1 742 0150 AE01 movw r20,r28 743 0152 61E0 ldi r22,lo8(1) 744 0154 70E0 ldi r23,0 745 0156 C801 movw r24,r16 746 0158 0E94 0000 call fwrite 747 .L91: 748 015c C0E0 ldi r28,0 749 015e D0E0 ldi r29,0 750 0160 00C0 rjmp .L73 751 .L75: 752 0162 F501 movw r30,r10 753 0164 8081 ld r24,Z 754 0166 9181 ldd r25,Z+1 755 0168 0E94 0000 call fflush 756 016c C601 movw r24,r12 757 016e 0E94 0000 call free 758 0172 80E0 ldi r24,0 759 0174 90E0 ldi r25,0 760 /* epilogue start */ 761 0176 DF91 pop r29 762 0178 CF91 pop r28 763 017a 1F91 pop r17 764 017c 0F91 pop r16 765 017e FF90 pop r15 766 0180 EF90 pop r14 767 0182 DF90 pop r13 768 0184 CF90 pop r12 769 0186 BF90 pop r11 770 0188 AF90 pop r10 771 018a 9F90 pop r9 772 018c 8F90 pop r8 773 018e 7F90 pop r7 774 0190 6F90 pop r6 775 0192 5F90 pop r5 776 0194 4F90 pop r4 777 0196 0895 ret 778 .size HttpSsiProcessFile, .-HttpSsiProcessFile 779 .section .rodata.str1.1 780 .LC5: 781 001d 5552 4F4D .string "UROM:" 781 3A00 782 .LC6: 783 0023 6669 6C65 .string "file" 783 00 784 .LC7: 785 0028 7669 7274 .string "virtual" 785 7561 6C00 786 .section .text.HttpSsiIncludeHandler,"ax",@progbits 787 .global HttpSsiIncludeHandler 788 .type HttpSsiIncludeHandler, @function 789 HttpSsiIncludeHandler: 790 0000 EF92 push r14 791 0002 FF92 push r15 GAS LISTING /tmp/cc6cnd5v.s page 15 792 0004 0F93 push r16 793 0006 1F93 push r17 794 0008 CF93 push r28 795 000a DF93 push r29 796 /* prologue: function */ 797 /* frame size = 0 */ 798 /* stack size = 6 */ 799 .L__stack_usage = 6 800 000c 7C01 movw r14,r24 801 000e EB01 movw r28,r22 802 0010 0E81 ldd r16,Y+6 803 0012 1F81 ldd r17,Y+7 804 0014 0115 cp r16,__zero_reg__ 805 0016 1105 cpc r17,__zero_reg__ 806 0018 01F4 brne .+2 807 001a 00C0 rjmp .L105 808 001c 8A81 ldd r24,Y+2 809 001e 9B81 ldd r25,Y+3 810 0020 8430 cpi r24,4 811 0022 9105 cpc r25,__zero_reg__ 812 0024 01F4 brne .L95 813 0026 44E0 ldi r20,lo8(4) 814 0028 50E0 ldi r21,0 815 002a 60E0 ldi r22,lo8(.LC6) 816 002c 70E0 ldi r23,hi8(.LC6) 817 002e 8881 ld r24,Y 818 0030 9981 ldd r25,Y+1 819 0032 0E94 0000 call memcmp 820 0036 892B or r24,r25 821 0038 01F4 brne .L105 822 003a 6C81 ldd r22,Y+4 823 003c 7D81 ldd r23,Y+5 824 003e A801 movw r20,r16 825 0040 80E0 ldi r24,lo8(.LC1) 826 0042 90E0 ldi r25,hi8(.LC1) 827 0044 00C0 rjmp .L104 828 .L95: 829 0046 0797 sbiw r24,7 830 0048 01F4 brne .L105 831 004a 47E0 ldi r20,lo8(7) 832 004c 50E0 ldi r21,0 833 004e 60E0 ldi r22,lo8(.LC7) 834 0050 70E0 ldi r23,hi8(.LC7) 835 0052 8881 ld r24,Y 836 0054 9981 ldd r25,Y+1 837 0056 0E94 0000 call memcmp 838 005a 892B or r24,r25 839 005c 01F4 brne .L105 840 005e 6C81 ldd r22,Y+4 841 0060 7D81 ldd r23,Y+5 842 0062 8091 0000 lds r24,http_root_path 843 0066 9091 0000 lds r25,http_root_path+1 844 006a 0097 sbiw r24,0 845 006c 01F4 brne .L98 846 006e 80E0 ldi r24,lo8(.LC5) 847 0070 90E0 ldi r25,hi8(.LC5) 848 .L98: GAS LISTING /tmp/cc6cnd5v.s page 16 849 0072 A801 movw r20,r16 850 .L104: 851 0074 0E94 0000 call AllocConcatStringLen 852 0078 EC01 movw r28,r24 853 007a 0097 sbiw r24,0 854 007c 01F0 breq .L105 855 007e 60E0 ldi r22,0 856 0080 70E8 ldi r23,lo8(-128) 857 0082 0E94 0000 call _open 858 0086 8C01 movw r16,r24 859 0088 0F3F cpi r16,-1 860 008a 8FEF ldi r24,-1 861 008c 1807 cpc r17,r24 862 008e 01F0 breq .L99 863 0090 B801 movw r22,r16 864 0092 C701 movw r24,r14 865 0094 0E94 0000 call HttpSsiProcessFile 866 0098 C801 movw r24,r16 867 009a 0E94 0000 call _close 868 009e CE01 movw r24,r28 869 00a0 0E94 0000 call free 870 00a4 80E0 ldi r24,0 871 00a6 90E0 ldi r25,0 872 00a8 00C0 rjmp .L94 873 .L99: 874 00aa CE01 movw r24,r28 875 00ac 0E94 0000 call free 876 .L105: 877 00b0 8FEF ldi r24,lo8(-1) 878 00b2 9FEF ldi r25,lo8(-1) 879 .L94: 880 /* epilogue start */ 881 00b4 DF91 pop r29 882 00b6 CF91 pop r28 883 00b8 1F91 pop r17 884 00ba 0F91 pop r16 885 00bc FF90 pop r15 886 00be EF90 pop r14 887 00c0 0895 ret 888 .size HttpSsiIncludeHandler, .-HttpSsiIncludeHandler 889 .section .rodata.str1.1 890 .LC8: 891 0030 4361 6368 .string "Cache-Control: no-cache, must-revalidate\r\n" 891 652D 436F 891 6E74 726F 891 6C3A 206E 891 6F2D 6361 892 .LC9: 893 005b 2047 4D54 .string " GMT\r\n" 893 0D0A 00 894 .LC10: 895 0062 3A20 00 .string ": " 896 .section .text.HttpSsiHandler,"ax",@progbits 897 .global HttpSsiHandler 898 .type HttpSsiHandler, @function 899 HttpSsiHandler: 900 0000 CF92 push r12 GAS LISTING /tmp/cc6cnd5v.s page 17 901 0002 DF92 push r13 902 0004 EF92 push r14 903 0006 FF92 push r15 904 0008 0F93 push r16 905 000a 1F93 push r17 906 000c CF93 push r28 907 000e DF93 push r29 908 0010 00D0 rcall . 909 0012 1F92 push __zero_reg__ 910 0014 CDB7 in r28,__SP_L__ 911 0016 DEB7 in r29,__SP_H__ 912 /* prologue: function */ 913 /* frame size = 4 */ 914 /* stack size = 12 */ 915 .L__stack_usage = 12 916 0018 7C01 movw r14,r24 917 001a 8B01 movw r16,r22 918 001c CA01 movw r24,r20 919 001e 60E0 ldi r22,0 920 0020 70E8 ldi r23,lo8(-128) 921 0022 0E94 0000 call _open 922 0026 6C01 movw r12,r24 923 0028 8FEF ldi r24,-1 924 002a C816 cp r12,r24 925 002c D806 cpc r13,r24 926 002e 01F4 brne .L107 927 0030 64E9 ldi r22,lo8(-108) 928 0032 71E0 ldi r23,lo8(1) 929 0034 C701 movw r24,r14 930 0036 0E94 0000 call HttpSendError 931 003a 00C0 rjmp .L108 932 .L107: 933 003c 68EC ldi r22,lo8(-56) 934 003e 70E0 ldi r23,0 935 0040 C701 movw r24,r14 936 0042 0E94 0000 call HttpSendHeaderTop 937 0046 F701 movw r30,r14 938 0048 6081 ld r22,Z 939 004a 7181 ldd r23,Z+1 940 004c 80E0 ldi r24,lo8(.LC8) 941 004e 90E0 ldi r25,hi8(.LC8) 942 0050 0E94 0000 call fputs 943 0054 80E0 ldi r24,0 944 0056 90E0 ldi r25,0 945 0058 0E94 0000 call time 946 005c 6983 std Y+1,r22 947 005e 7A83 std Y+2,r23 948 0060 8B83 std Y+3,r24 949 0062 9C83 std Y+4,r25 950 0064 CE01 movw r24,r28 951 0066 0196 adiw r24,1 952 0068 0E94 0000 call gmtime 953 006c 0E94 0000 call Rfc1123TimeString 954 0070 1F92 push __zero_reg__ 955 0072 1F92 push __zero_reg__ 956 0074 20E0 ldi r18,lo8(.LC9) 957 0076 30E0 ldi r19,hi8(.LC9) GAS LISTING /tmp/cc6cnd5v.s page 18 958 0078 3F93 push r19 959 007a 2F93 push r18 960 007c 9F93 push r25 961 007e 8F93 push r24 962 0080 80E0 ldi r24,lo8(.LC10) 963 0082 90E0 ldi r25,hi8(.LC10) 964 0084 9F93 push r25 965 0086 8F93 push r24 966 0088 80E0 ldi r24,lo8(ct_Expires) 967 008a 90E0 ldi r25,hi8(ct_Expires) 968 008c 9F93 push r25 969 008e 8F93 push r24 970 0090 F701 movw r30,r14 971 0092 8181 ldd r24,Z+1 972 0094 8F93 push r24 973 0096 8081 ld r24,Z 974 0098 8F93 push r24 975 009a 0E94 0000 call s_vputs 976 009e F801 movw r30,r16 977 00a0 4681 ldd r20,Z+6 978 00a2 5781 ldd r21,Z+7 979 00a4 0FB6 in __tmp_reg__,__SREG__ 980 00a6 F894 cli 981 00a8 DEBF out __SP_H__,r29 982 00aa 0FBE out __SREG__,__tmp_reg__ 983 00ac CDBF out __SP_L__,r28 984 00ae 4115 cp r20,__zero_reg__ 985 00b0 5105 cpc r21,__zero_reg__ 986 00b2 01F4 brne .L109 987 00b4 A801 movw r20,r16 988 00b6 445F subi r20,-12 989 00b8 5F4F sbci r21,-1 990 .L109: 991 00ba F801 movw r30,r16 992 00bc 6481 ldd r22,Z+4 993 00be 7581 ldd r23,Z+5 994 00c0 0FEF ldi r16,lo8(-1) 995 00c2 1FEF ldi r17,lo8(-1) 996 00c4 9801 movw r18,r16 997 00c6 C701 movw r24,r14 998 00c8 0E94 0000 call HttpSendHeaderBottom 999 00cc B601 movw r22,r12 1000 00ce C701 movw r24,r14 1001 00d0 0E94 0000 call HttpSsiProcessFile 1002 00d4 C601 movw r24,r12 1003 00d6 0E94 0000 call _close 1004 .L108: 1005 00da 80E0 ldi r24,0 1006 00dc 90E0 ldi r25,0 1007 /* epilogue start */ 1008 00de 0F90 pop __tmp_reg__ 1009 00e0 0F90 pop __tmp_reg__ 1010 00e2 0F90 pop __tmp_reg__ 1011 00e4 0F90 pop __tmp_reg__ 1012 00e6 DF91 pop r29 1013 00e8 CF91 pop r28 1014 00ea 1F91 pop r17 GAS LISTING /tmp/cc6cnd5v.s page 19 1015 00ec 0F91 pop r16 1016 00ee FF90 pop r15 1017 00f0 EF90 pop r14 1018 00f2 DF90 pop r13 1019 00f4 CF90 pop r12 1020 00f6 0895 ret 1021 .size HttpSsiHandler, .-HttpSsiHandler 1022 .section .text.HttpRegisterSsiVarHandler,"ax",@progbits 1023 .global HttpRegisterSsiVarHandler 1024 .type HttpRegisterSsiVarHandler, @function 1025 HttpRegisterSsiVarHandler: 1026 /* prologue: function */ 1027 /* frame size = 0 */ 1028 /* stack size = 0 */ 1029 .L__stack_usage = 0 1030 0000 2091 0000 lds r18,ssivar_handler 1031 0004 3091 0000 lds r19,ssivar_handler+1 1032 0008 9093 0000 sts ssivar_handler+1,r25 1033 000c 8093 0000 sts ssivar_handler,r24 1034 0010 C901 movw r24,r18 1035 0012 0895 ret 1036 .size HttpRegisterSsiVarHandler, .-HttpRegisterSsiVarHandler 1037 .local varname.2783 1038 .comm varname.2783,2,1 1039 .global ssiCmdList 1040 .section .rodata.str1.1 1041 .LC11: 1042 0065 696E 636C .string "include" 1042 7564 6500 1043 .LC12: 1044 006d 6578 6563 .string "exec" 1044 00 1045 .LC13: 1046 0072 6563 686F .string "echo" 1046 00 1047 .data 1048 .type ssiCmdList, @object 1049 .size ssiCmdList, 18 1050 ssiCmdList: 1051 0000 0000 .word .LC11 1052 0002 0700 .word 7 1053 0004 0000 .word gs(HttpSsiIncludeHandler) 1054 0006 0000 .word .LC12 1055 0008 0400 .word 4 1056 000a 0000 .word gs(HttpSsiExecHandler) 1057 000c 0000 .word .LC13 1058 000e 0400 .word 4 1059 0010 0000 .word gs(HttpSsiEchoHandler) 1060 .type ssivar_handler, @object 1061 .size ssivar_handler, 2 1062 ssivar_handler: 1063 0012 0000 .word gs(HttpSsiVarHandler) 1064 .ident "GCC: (GNU) 5.3.0" 1065 .global __do_copy_data 1066 .global __do_clear_bss GAS LISTING /tmp/cc6cnd5v.s page 20 DEFINED SYMBOLS *ABS*:0000000000000000 mod_ssi.c /tmp/cc6cnd5v.s:2 *ABS*:000000000000003e __SP_H__ /tmp/cc6cnd5v.s:3 *ABS*:000000000000003d __SP_L__ /tmp/cc6cnd5v.s:4 *ABS*:000000000000003f __SREG__ /tmp/cc6cnd5v.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/cc6cnd5v.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/cc6cnd5v.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/cc6cnd5v.s:10 .text.HttpSsiVarHandler:0000000000000000 HttpSsiVarHandler /tmp/cc6cnd5v.s:28 .text.HttpSsiExecHandler:0000000000000000 HttpSsiExecHandler /tmp/cc6cnd5v.s:246 .text.HttpSsiEchoHandler:0000000000000000 HttpSsiEchoHandler .bss:0000000000000000 varname.2783 /tmp/cc6cnd5v.s:1062 .data:0000000000000012 ssivar_handler /tmp/cc6cnd5v.s:309 .text.HttpSsiParse:0000000000000000 HttpSsiParse /tmp/cc6cnd5v.s:1050 .data:0000000000000000 ssiCmdList /tmp/cc6cnd5v.s:568 .text.HttpSsiProcessFile:0000000000000000 HttpSsiProcessFile /tmp/cc6cnd5v.s:789 .text.HttpSsiIncludeHandler:0000000000000000 HttpSsiIncludeHandler /tmp/cc6cnd5v.s:899 .text.HttpSsiHandler:0000000000000000 HttpSsiHandler /tmp/cc6cnd5v.s:1025 .text.HttpRegisterSsiVarHandler:0000000000000000 HttpRegisterSsiVarHandler UNDEFINED SYMBOLS memcmp AllocConcatStringLen strchr malloc strstr strcpy strcat HttpCgiFunctionHandler free realloc memcpy fputs isspace strncasecmp isalpha _filelength _read fwrite _seek fflush http_root_path _open _close HttpSendError HttpSendHeaderTop time gmtime Rfc1123TimeString ct_Expires s_vputs HttpSendHeaderBottom __do_copy_data __do_clear_bss