GAS LISTING /tmp/ccnYUucl.s page 1 1 .file "mod_cgi_func.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.HttpCgiFunctionLookup,"ax",@progbits 9 .global HttpCgiFunctionLookup 10 .type HttpCgiFunctionLookup, @function 11 HttpCgiFunctionLookup: 12 0000 0F93 push r16 13 0002 1F93 push r17 14 0004 CF93 push r28 15 0006 DF93 push r29 16 /* prologue: function */ 17 /* frame size = 0 */ 18 /* stack size = 4 */ 19 .L__stack_usage = 4 20 0008 8C01 movw r16,r24 21 000a C091 0000 lds r28,cgiFunctionList 22 000e D091 0000 lds r29,cgiFunctionList+1 23 .L2: 24 0012 2097 sbiw r28,0 25 0014 01F0 breq .L4 26 0016 B801 movw r22,r16 27 0018 8C81 ldd r24,Y+4 28 001a 9D81 ldd r25,Y+5 29 001c 0E94 0000 call strcasecmp 30 0020 1816 cp __zero_reg__,r24 31 0022 1906 cpc __zero_reg__,r25 32 0024 04F0 brlt .L3 33 0026 892B or r24,r25 34 0028 01F0 breq .L4 35 002a C0E0 ldi r28,0 36 002c D0E0 ldi r29,0 37 002e 00C0 rjmp .L4 38 .L3: 39 0030 0A80 ldd __tmp_reg__,Y+2 40 0032 DB81 ldd r29,Y+3 41 0034 C02D mov r28,__tmp_reg__ 42 0036 00C0 rjmp .L2 43 .L4: 44 0038 CE01 movw r24,r28 45 /* epilogue start */ 46 003a DF91 pop r29 47 003c CF91 pop r28 48 003e 1F91 pop r17 49 0040 0F91 pop r16 50 0042 0895 ret 51 .size HttpCgiFunctionLookup, .-HttpCgiFunctionLookup 52 .section .text.HttpRegisterCgiFunction,"ax",@progbits 53 .global HttpRegisterCgiFunction 54 .type HttpRegisterCgiFunction, @function 55 HttpRegisterCgiFunction: 56 0000 AF92 push r10 57 0002 BF92 push r11 GAS LISTING /tmp/ccnYUucl.s page 2 58 0004 CF92 push r12 59 0006 DF92 push r13 60 0008 EF92 push r14 61 000a FF92 push r15 62 000c 0F93 push r16 63 000e 1F93 push r17 64 0010 CF93 push r28 65 0012 DF93 push r29 66 /* prologue: function */ 67 /* frame size = 0 */ 68 /* stack size = 10 */ 69 .L__stack_usage = 10 70 0014 5C01 movw r10,r24 71 0016 6B01 movw r12,r22 72 0018 E090 0000 lds r14,cgiFunctionList 73 001c F090 0000 lds r15,cgiFunctionList+1 74 0020 8701 movw r16,r14 75 0022 8FEF ldi r24,lo8(-1) 76 0024 9FEF ldi r25,lo8(-1) 77 .L9: 78 0026 0115 cp r16,__zero_reg__ 79 0028 1105 cpc r17,__zero_reg__ 80 002a 01F0 breq .L10 81 002c B501 movw r22,r10 82 002e D801 movw r26,r16 83 0030 1496 adiw r26,4 84 0032 8D91 ld r24,X+ 85 0034 9C91 ld r25,X 86 0036 1597 sbiw r26,4+1 87 0038 0E94 0000 call strcasecmp 88 003c 1816 cp __zero_reg__,r24 89 003e 1906 cpc __zero_reg__,r25 90 0040 04F4 brge .L10 91 0042 E801 movw r28,r16 92 0044 0A81 ldd r16,Y+2 93 0046 1B81 ldd r17,Y+3 94 0048 00C0 rjmp .L9 95 .L10: 96 004a 892B or r24,r25 97 004c 01F4 brne .+2 98 004e 00C0 rjmp .L12 99 0050 68E0 ldi r22,lo8(8) 100 0052 70E0 ldi r23,0 101 0054 81E0 ldi r24,lo8(1) 102 0056 90E0 ldi r25,0 103 0058 0E94 0000 call calloc 104 005c EC01 movw r28,r24 105 005e 892B or r24,r25 106 0060 01F4 brne .+2 107 0062 00C0 rjmp .L26 108 0064 C501 movw r24,r10 109 0066 0E94 0000 call strdup 110 006a 9D83 std Y+5,r25 111 006c 8C83 std Y+4,r24 112 006e 892B or r24,r25 113 0070 01F4 brne .+2 114 0072 00C0 rjmp .L14 GAS LISTING /tmp/ccnYUucl.s page 3 115 0074 DF82 std Y+7,r13 116 0076 CE82 std Y+6,r12 117 0078 0115 cp r16,__zero_reg__ 118 007a 1105 cpc r17,__zero_reg__ 119 007c 01F0 breq .L15 120 007e F801 movw r30,r16 121 0080 8081 ld r24,Z 122 0082 9181 ldd r25,Z+1 123 0084 0097 sbiw r24,0 124 0086 01F4 brne .L16 125 0088 E114 cp r14,__zero_reg__ 126 008a F104 cpc r15,__zero_reg__ 127 008c 01F0 breq .L17 128 008e D701 movw r26,r14 129 0090 CD93 st X+,r28 130 0092 DC93 st X,r29 131 0094 00C0 rjmp .L18 132 .L17: 133 0096 D093 0000 sts cgiFunctionList+2+1,r29 134 009a C093 0000 sts cgiFunctionList+2,r28 135 .L18: 136 009e 1982 std Y+1,__zero_reg__ 137 00a0 1882 st Y,__zero_reg__ 138 00a2 FB82 std Y+3,r15 139 00a4 EA82 std Y+2,r14 140 00a6 D093 0000 sts cgiFunctionList+1,r29 141 00aa C093 0000 sts cgiFunctionList,r28 142 00ae 00C0 rjmp .L27 143 .L16: 144 00b0 9983 std Y+1,r25 145 00b2 8883 st Y,r24 146 00b4 F801 movw r30,r16 147 00b6 D183 std Z+1,r29 148 00b8 C083 st Z,r28 149 00ba E881 ld r30,Y 150 00bc F981 ldd r31,Y+1 151 00be D383 std Z+3,r29 152 00c0 C283 std Z+2,r28 153 00c2 1B83 std Y+3,r17 154 00c4 0A83 std Y+2,r16 155 00c6 00C0 rjmp .L27 156 .L15: 157 00c8 E091 0000 lds r30,cgiFunctionList+2 158 00cc F091 0000 lds r31,cgiFunctionList+2+1 159 00d0 3097 sbiw r30,0 160 00d2 01F0 breq .L19 161 00d4 D383 std Z+3,r29 162 00d6 C283 std Z+2,r28 163 00d8 00C0 rjmp .L20 164 .L19: 165 00da D093 0000 sts cgiFunctionList+1,r29 166 00de C093 0000 sts cgiFunctionList,r28 167 .L20: 168 00e2 F983 std Y+1,r31 169 00e4 E883 st Y,r30 170 00e6 1B82 std Y+3,__zero_reg__ 171 00e8 1A82 std Y+2,__zero_reg__ GAS LISTING /tmp/ccnYUucl.s page 4 172 00ea D093 0000 sts cgiFunctionList+2+1,r29 173 00ee C093 0000 sts cgiFunctionList+2,r28 174 .L27: 175 00f2 80E0 ldi r24,0 176 00f4 90E0 ldi r25,0 177 00f6 00C0 rjmp .L13 178 .L14: 179 00f8 CE01 movw r24,r28 180 00fa 00C0 rjmp .L28 181 .L12: 182 00fc C114 cp r12,__zero_reg__ 183 00fe D104 cpc r13,__zero_reg__ 184 0100 01F0 breq .L21 185 0102 D801 movw r26,r16 186 0104 1796 adiw r26,6+1 187 0106 DC92 st X,r13 188 0108 CE92 st -X,r12 189 010a 1697 sbiw r26,6 190 010c 00C0 rjmp .L26 191 .L21: 192 010e E801 movw r28,r16 193 0110 EA81 ldd r30,Y+2 194 0112 FB81 ldd r31,Y+3 195 0114 8881 ld r24,Y 196 0116 9981 ldd r25,Y+1 197 0118 3097 sbiw r30,0 198 011a 01F0 breq .L22 199 011c 9183 std Z+1,r25 200 011e 8083 st Z,r24 201 0120 00C0 rjmp .L23 202 .L22: 203 0122 9093 0000 sts cgiFunctionList+2+1,r25 204 0126 8093 0000 sts cgiFunctionList+2,r24 205 .L23: 206 012a E801 movw r28,r16 207 012c A881 ld r26,Y 208 012e B981 ldd r27,Y+1 209 0130 1097 sbiw r26,0 210 0132 01F0 breq .L24 211 0134 1396 adiw r26,2+1 212 0136 FC93 st X,r31 213 0138 EE93 st -X,r30 214 013a 1297 sbiw r26,2 215 013c 00C0 rjmp .L25 216 .L24: 217 013e F093 0000 sts cgiFunctionList+1,r31 218 0142 E093 0000 sts cgiFunctionList,r30 219 .L25: 220 0146 F801 movw r30,r16 221 0148 8481 ldd r24,Z+4 222 014a 9581 ldd r25,Z+5 223 014c 0E94 0000 call free 224 0150 C801 movw r24,r16 225 .L28: 226 0152 0E94 0000 call free 227 .L26: 228 0156 8FEF ldi r24,lo8(-1) GAS LISTING /tmp/ccnYUucl.s page 5 229 0158 9FEF ldi r25,lo8(-1) 230 .L13: 231 /* epilogue start */ 232 015a DF91 pop r29 233 015c CF91 pop r28 234 015e 1F91 pop r17 235 0160 0F91 pop r16 236 0162 FF90 pop r15 237 0164 EF90 pop r14 238 0166 DF90 pop r13 239 0168 CF90 pop r12 240 016a BF90 pop r11 241 016c AF90 pop r10 242 016e 0895 ret 243 .size HttpRegisterCgiFunction, .-HttpRegisterCgiFunction 244 .section .rodata.str1.1,"aMS",@progbits,1 245 .LC0: 246 0000 5552 4F4D .string "UROM:" 246 3A00 247 .section .text.HttpCgiFunctionHandler,"ax",@progbits 248 .global HttpCgiFunctionHandler 249 .type HttpCgiFunctionHandler, @function 250 HttpCgiFunctionHandler: 251 0000 EF92 push r14 252 0002 FF92 push r15 253 0004 0F93 push r16 254 0006 1F93 push r17 255 0008 CF93 push r28 256 000a DF93 push r29 257 /* prologue: function */ 258 /* frame size = 0 */ 259 /* stack size = 6 */ 260 .L__stack_usage = 6 261 000c 7C01 movw r14,r24 262 000e 8A01 movw r16,r20 263 0010 C091 0000 lds r28,http_root_path 264 0014 D091 0000 lds r29,http_root_path+1 265 0018 2097 sbiw r28,0 266 001a 01F0 breq .L37 267 001c DE01 movw r26,r28 268 001e 00C0 rjmp .L30 269 .L37: 270 0020 A0E0 ldi r26,lo8(.LC0) 271 0022 B0E0 ldi r27,hi8(.LC0) 272 .L30: 273 0024 FD01 movw r30,r26 274 0: 275 0026 0190 ld __tmp_reg__,Z+ 276 0028 0020 tst __tmp_reg__ 277 002a 01F4 brne 0b 278 002c 3197 sbiw r30,1 279 002e AF01 movw r20,r30 280 0030 4A1B sub r20,r26 281 0032 5B0B sbc r21,r27 282 0034 2097 sbiw r28,0 283 0036 01F0 breq .L38 284 0038 BE01 movw r22,r28 GAS LISTING /tmp/ccnYUucl.s page 6 285 003a 00C0 rjmp .L31 286 .L38: 287 003c 60E0 ldi r22,lo8(.LC0) 288 003e 70E0 ldi r23,hi8(.LC0) 289 .L31: 290 0040 C801 movw r24,r16 291 0042 0E94 0000 call strncasecmp 292 0046 892B or r24,r25 293 0048 01F4 brne .L32 294 004a 2097 sbiw r28,0 295 004c 01F4 brne .L33 296 004e C0E0 ldi r28,lo8(.LC0) 297 0050 D0E0 ldi r29,hi8(.LC0) 298 .L33: 299 0052 FE01 movw r30,r28 300 0: 301 0054 0190 ld __tmp_reg__,Z+ 302 0056 0020 tst __tmp_reg__ 303 0058 01F4 brne 0b 304 005a 3197 sbiw r30,1 305 005c CF01 movw r24,r30 306 005e 8C1B sub r24,r28 307 0060 9D0B sbc r25,r29 308 0062 00C0 rjmp .L35 309 .L32: 310 0064 81E0 ldi r24,lo8(1) 311 0066 90E0 ldi r25,0 312 0068 D801 movw r26,r16 313 006a 2C91 ld r18,X 314 006c 2F32 cpi r18,lo8(47) 315 006e 01F0 breq .L35 316 0070 80E0 ldi r24,0 317 0072 90E0 ldi r25,0 318 .L35: 319 0074 800F add r24,r16 320 0076 911F adc r25,r17 321 0078 0E94 0000 call HttpCgiFunctionLookup 322 007c 0097 sbiw r24,0 323 007e 01F0 breq .L36 324 0080 DC01 movw r26,r24 325 0082 1696 adiw r26,6 326 0084 ED91 ld r30,X+ 327 0086 FC91 ld r31,X 328 0088 1797 sbiw r26,6+1 329 008a C701 movw r24,r14 330 008c 1995 eicall 331 .L36: 332 008e 80E0 ldi r24,0 333 0090 90E0 ldi r25,0 334 /* epilogue start */ 335 0092 DF91 pop r29 336 0094 CF91 pop r28 337 0096 1F91 pop r17 338 0098 0F91 pop r16 339 009a FF90 pop r15 340 009c EF90 pop r14 341 009e 0895 ret GAS LISTING /tmp/ccnYUucl.s page 7 342 .size HttpCgiFunctionHandler, .-HttpCgiFunctionHandler 343 .local cgiFunctionList 344 .comm cgiFunctionList,4,1 345 .ident "GCC: (GNU) 5.3.0" 346 .global __do_copy_data 347 .global __do_clear_bss GAS LISTING /tmp/ccnYUucl.s page 8 DEFINED SYMBOLS *ABS*:0000000000000000 mod_cgi_func.c /tmp/ccnYUucl.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccnYUucl.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccnYUucl.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccnYUucl.s:5 *ABS*:000000000000003b __RAMPZ__ /tmp/ccnYUucl.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccnYUucl.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccnYUucl.s:11 .text.HttpCgiFunctionLookup:0000000000000000 HttpCgiFunctionLookup .bss:0000000000000000 cgiFunctionList /tmp/ccnYUucl.s:55 .text.HttpRegisterCgiFunction:0000000000000000 HttpRegisterCgiFunction /tmp/ccnYUucl.s:250 .text.HttpCgiFunctionHandler:0000000000000000 HttpCgiFunctionHandler UNDEFINED SYMBOLS strcasecmp calloc strdup free http_root_path strncasecmp __do_copy_data __do_clear_bss