ssdpc.lst 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231
  1. GAS LISTING /tmp/ccbk85jl.s page 1
  2. 1 .file "ssdpc.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.CallObservers,"ax",@progbits
  10. 9 .type CallObservers, @function
  11. 10 CallObservers:
  12. 11 0000 FF92 push r15
  13. 12 0002 0F93 push r16
  14. 13 0004 1F93 push r17
  15. 14 0006 CF93 push r28
  16. 15 0008 DF93 push r29
  17. 16 /* prologue: function */
  18. 17 /* frame size = 0 */
  19. 18 /* stack size = 5 */
  20. 19 .L__stack_usage = 5
  21. 20 000a 8C01 movw r16,r24
  22. 21 000c F62E mov r15,r22
  23. 22 000e C091 0000 lds r28,ssdp_observer_root
  24. 23 0012 D091 0000 lds r29,ssdp_observer_root+1
  25. 24 .L2:
  26. 25 0016 2097 sbiw r28,0
  27. 26 0018 01F0 breq .L9
  28. 27 001a 6A81 ldd r22,Y+2
  29. 28 001c 7B81 ldd r23,Y+3
  30. 29 001e F801 movw r30,r16
  31. 30 0020 8481 ldd r24,Z+4
  32. 31 0022 9581 ldd r25,Z+5
  33. 32 0024 0E94 0000 call strcmp
  34. 33 0028 892B or r24,r25
  35. 34 002a 01F4 brne .L7
  36. 35 002c 6C81 ldd r22,Y+4
  37. 36 002e 7D81 ldd r23,Y+5
  38. 37 0030 F801 movw r30,r16
  39. 38 0032 8681 ldd r24,Z+6
  40. 39 0034 9781 ldd r25,Z+7
  41. 40 0036 0E94 0000 call strcmp
  42. 41 003a 892B or r24,r25
  43. 42 003c 01F4 brne .L7
  44. 43 003e EE81 ldd r30,Y+6
  45. 44 0040 FF81 ldd r31,Y+7
  46. 45 0042 6F2D mov r22,r15
  47. 46 0044 C801 movw r24,r16
  48. 47 0046 1995 eicall
  49. 48 0048 00C0 rjmp .L3
  50. 49 .L7:
  51. 50 004a 80E0 ldi r24,0
  52. 51 004c 90E0 ldi r25,0
  53. 52 .L3:
  54. 53 004e 0990 ld __tmp_reg__,Y+
  55. 54 0050 D881 ld r29,Y
  56. 55 0052 C02D mov r28,__tmp_reg__
  57. 56 0054 0097 sbiw r24,0
  58. 57 0056 01F0 breq .L2
  59. GAS LISTING /tmp/ccbk85jl.s page 2
  60. 58 0058 00C0 rjmp .L4
  61. 59 .L9:
  62. 60 005a 80E0 ldi r24,0
  63. 61 005c 90E0 ldi r25,0
  64. 62 .L4:
  65. 63 /* epilogue start */
  66. 64 005e DF91 pop r29
  67. 65 0060 CF91 pop r28
  68. 66 0062 1F91 pop r17
  69. 67 0064 0F91 pop r16
  70. 68 0066 FF90 pop r15
  71. 69 0068 0895 ret
  72. 70 .size CallObservers, .-CallObservers
  73. 71 .section .rodata.str1.1,"aMS",@progbits,1
  74. 72 .LC0:
  75. 73 0000 5553 4E00 .string "USN"
  76. 74 .section .text.SsdpUuidFromHeader,"ax",@progbits
  77. 75 .type SsdpUuidFromHeader, @function
  78. 76 SsdpUuidFromHeader:
  79. 77 0000 EF92 push r14
  80. 78 0002 FF92 push r15
  81. 79 0004 0F93 push r16
  82. 80 0006 1F93 push r17
  83. 81 0008 CF93 push r28
  84. 82 000a DF93 push r29
  85. 83 /* prologue: function */
  86. 84 /* frame size = 0 */
  87. 85 /* stack size = 6 */
  88. 86 .L__stack_usage = 6
  89. 87 000c EC01 movw r28,r24
  90. 88 000e 8091 0000 lds r24,uuid.2973
  91. 89 0012 9091 0000 lds r25,uuid.2973+1
  92. 90 0016 0E94 0000 call free
  93. 91 001a 1092 0000 sts uuid.2973+1,__zero_reg__
  94. 92 001e 1092 0000 sts uuid.2973,__zero_reg__
  95. 93 0022 60E0 ldi r22,lo8(.LC0)
  96. 94 0024 70E0 ldi r23,hi8(.LC0)
  97. 95 0026 CE01 movw r24,r28
  98. 96 0028 0E94 0000 call HttpuGetHeader
  99. 97 002c 8C01 movw r16,r24
  100. 98 002e FC01 movw r30,r24
  101. 99 0030 8081 ld r24,Z
  102. 100 0032 8823 tst r24
  103. 101 0034 01F0 breq .L11
  104. 102 0036 45E0 ldi r20,lo8(5)
  105. 103 0038 50E0 ldi r21,0
  106. 104 003a 60E0 ldi r22,lo8(ct_uuid_)
  107. 105 003c 70E0 ldi r23,hi8(ct_uuid_)
  108. 106 003e C801 movw r24,r16
  109. 107 0040 0E94 0000 call strncmp
  110. 108 0044 892B or r24,r25
  111. 109 0046 01F4 brne .L12
  112. 110 0048 0B5F subi r16,-5
  113. 111 004a 1F4F sbci r17,-1
  114. 112 .L12:
  115. 113 004c 6AE3 ldi r22,lo8(58)
  116. 114 004e 70E0 ldi r23,0
  117. GAS LISTING /tmp/ccbk85jl.s page 3
  118. 115 0050 C801 movw r24,r16
  119. 116 0052 0E94 0000 call strchr
  120. 117 0056 9093 0000 sts uuid.2973+1,r25
  121. 118 005a 8093 0000 sts uuid.2973,r24
  122. 119 005e 0097 sbiw r24,0
  123. 120 0060 01F0 breq .L13
  124. 121 0062 EC01 movw r28,r24
  125. 122 0064 C01B sub r28,r16
  126. 123 0066 D10B sbc r29,r17
  127. 124 0068 CE01 movw r24,r28
  128. 125 006a 0196 adiw r24,1
  129. 126 006c 0E94 0000 call malloc
  130. 127 0070 7C01 movw r14,r24
  131. 128 0072 9093 0000 sts uuid.2973+1,r25
  132. 129 0076 8093 0000 sts uuid.2973,r24
  133. 130 007a AE01 movw r20,r28
  134. 131 007c B801 movw r22,r16
  135. 132 007e 0E94 0000 call memcpy
  136. 133 0082 CE0D add r28,r14
  137. 134 0084 DF1D adc r29,r15
  138. 135 0086 1882 st Y,__zero_reg__
  139. 136 0088 00C0 rjmp .L11
  140. 137 .L13:
  141. 138 008a C801 movw r24,r16
  142. 139 008c 0E94 0000 call strdup
  143. 140 0090 9093 0000 sts uuid.2973+1,r25
  144. 141 0094 8093 0000 sts uuid.2973,r24
  145. 142 .L11:
  146. 143 0098 8091 0000 lds r24,uuid.2973
  147. 144 009c 9091 0000 lds r25,uuid.2973+1
  148. 145 /* epilogue start */
  149. 146 00a0 DF91 pop r29
  150. 147 00a2 CF91 pop r28
  151. 148 00a4 1F91 pop r17
  152. 149 00a6 0F91 pop r16
  153. 150 00a8 FF90 pop r15
  154. 151 00aa EF90 pop r14
  155. 152 00ac 0895 ret
  156. 153 .size SsdpUuidFromHeader, .-SsdpUuidFromHeader
  157. 154 .section .rodata.str1.1
  158. 155 .LC1:
  159. 156 0004 4C4F 4341 .string "LOCATION"
  160. 156 5449 4F4E
  161. 156 00
  162. 157 .LC2:
  163. 158 000d 4341 4348 .string "CACHE-CONTROL"
  164. 158 452D 434F
  165. 158 4E54 524F
  166. 158 4C00
  167. 159 .section .text.CacheDevice,"ax",@progbits
  168. 160 .type CacheDevice, @function
  169. 161 CacheDevice:
  170. 162 0000 AF92 push r10
  171. 163 0002 BF92 push r11
  172. 164 0004 CF92 push r12
  173. 165 0006 DF92 push r13
  174. 166 0008 EF92 push r14
  175. GAS LISTING /tmp/ccbk85jl.s page 4
  176. 167 000a FF92 push r15
  177. 168 000c 0F93 push r16
  178. 169 000e 1F93 push r17
  179. 170 0010 CF93 push r28
  180. 171 0012 DF93 push r29
  181. 172 /* prologue: function */
  182. 173 /* frame size = 0 */
  183. 174 /* stack size = 10 */
  184. 175 .L__stack_usage = 10
  185. 176 0014 6C01 movw r12,r24
  186. 177 0016 8B01 movw r16,r22
  187. 178 0018 7A01 movw r14,r20
  188. 179 001a 5901 movw r10,r18
  189. 180 001c C091 0000 lds r28,ssdp_device_cache
  190. 181 0020 D091 0000 lds r29,ssdp_device_cache+1
  191. 182 .L18:
  192. 183 0024 2097 sbiw r28,0
  193. 184 0026 01F0 breq .L43
  194. 185 0028 B601 movw r22,r12
  195. 186 002a 8E81 ldd r24,Y+6
  196. 187 002c 9F81 ldd r25,Y+7
  197. 188 002e 0E94 0000 call strcmp
  198. 189 0032 892B or r24,r25
  199. 190 0034 01F0 breq .L19
  200. 191 0036 0990 ld __tmp_reg__,Y+
  201. 192 0038 D881 ld r29,Y
  202. 193 003a C02D mov r28,__tmp_reg__
  203. 194 003c 00C0 rjmp .L18
  204. 195 .L43:
  205. 196 003e 62E1 ldi r22,lo8(18)
  206. 197 0040 70E0 ldi r23,0
  207. 198 0042 81E0 ldi r24,lo8(1)
  208. 199 0044 90E0 ldi r25,0
  209. 200 0046 0E94 0000 call calloc
  210. 201 004a EC01 movw r28,r24
  211. 202 004c 892B or r24,r25
  212. 203 004e 01F4 brne .+2
  213. 204 0050 00C0 rjmp .L33
  214. 205 0052 C601 movw r24,r12
  215. 206 0054 0E94 0000 call strdup
  216. 207 0058 9F83 std Y+7,r25
  217. 208 005a 8E83 std Y+6,r24
  218. 209 005c 60E0 ldi r22,lo8(.LC1)
  219. 210 005e 70E0 ldi r23,hi8(.LC1)
  220. 211 0060 C501 movw r24,r10
  221. 212 0062 0E94 0000 call HttpuGetHeader
  222. 213 0066 FC01 movw r30,r24
  223. 214 0068 2081 ld r18,Z
  224. 215 006a 2223 tst r18
  225. 216 006c 01F0 breq .L28
  226. 217 006e 0E94 0000 call strdup
  227. 218 0072 00C0 rjmp .L22
  228. 219 .L28:
  229. 220 0074 80E0 ldi r24,0
  230. 221 0076 90E0 ldi r25,0
  231. 222 .L22:
  232. 223 0078 9987 std Y+9,r25
  233. GAS LISTING /tmp/ccbk85jl.s page 5
  234. 224 007a 8887 std Y+8,r24
  235. 225 007c 60E0 ldi r22,lo8(.LC2)
  236. 226 007e 70E0 ldi r23,hi8(.LC2)
  237. 227 0080 C501 movw r24,r10
  238. 228 0082 0E94 0000 call HttpuGetHeader
  239. 229 0086 6DE3 ldi r22,lo8(61)
  240. 230 0088 70E0 ldi r23,0
  241. 231 008a 0E94 0000 call strchr
  242. 232 008e 0097 sbiw r24,0
  243. 233 0090 01F0 breq .L23
  244. 234 0092 0196 adiw r24,1
  245. 235 0094 0E94 0000 call atoi
  246. 236 0098 9F87 std Y+15,r25
  247. 237 009a 8E87 std Y+14,r24
  248. 238 .L23:
  249. 239 009c 8091 0000 lds r24,ssdp_device_cache
  250. 240 00a0 9091 0000 lds r25,ssdp_device_cache+1
  251. 241 00a4 9983 std Y+1,r25
  252. 242 00a6 8883 st Y,r24
  253. 243 00a8 D093 0000 sts ssdp_device_cache+1,r29
  254. 244 00ac C093 0000 sts ssdp_device_cache,r28
  255. 245 .L19:
  256. 246 00b0 8A85 ldd r24,Y+10
  257. 247 00b2 9B85 ldd r25,Y+11
  258. 248 00b4 892B or r24,r25
  259. 249 00b6 01F4 brne .L24
  260. 250 00b8 0115 cp r16,__zero_reg__
  261. 251 00ba 1105 cpc r17,__zero_reg__
  262. 252 00bc 01F0 breq .L24
  263. 253 00be C801 movw r24,r16
  264. 254 00c0 0E94 0000 call strdup
  265. 255 00c4 9B87 std Y+11,r25
  266. 256 00c6 8A87 std Y+10,r24
  267. 257 .L24:
  268. 258 00c8 8C85 ldd r24,Y+12
  269. 259 00ca 9D85 ldd r25,Y+13
  270. 260 00cc 892B or r24,r25
  271. 261 00ce 01F4 brne .L33
  272. 262 00d0 E114 cp r14,__zero_reg__
  273. 263 00d2 F104 cpc r15,__zero_reg__
  274. 264 00d4 01F0 breq .L33
  275. 265 00d6 C701 movw r24,r14
  276. 266 00d8 0E94 0000 call strdup
  277. 267 00dc 9D87 std Y+13,r25
  278. 268 00de 8C87 std Y+12,r24
  279. 269 .L33:
  280. 270 00e0 CE01 movw r24,r28
  281. 271 /* epilogue start */
  282. 272 00e2 DF91 pop r29
  283. 273 00e4 CF91 pop r28
  284. 274 00e6 1F91 pop r17
  285. 275 00e8 0F91 pop r16
  286. 276 00ea FF90 pop r15
  287. 277 00ec EF90 pop r14
  288. 278 00ee DF90 pop r13
  289. 279 00f0 CF90 pop r12
  290. 280 00f2 BF90 pop r11
  291. GAS LISTING /tmp/ccbk85jl.s page 6
  292. 281 00f4 AF90 pop r10
  293. 282 00f6 0895 ret
  294. 283 .size CacheDevice, .-CacheDevice
  295. 284 .section .text.CacheService,"ax",@progbits
  296. 285 .type CacheService, @function
  297. 286 CacheService:
  298. 287 0000 AF92 push r10
  299. 288 0002 BF92 push r11
  300. 289 0004 CF92 push r12
  301. 290 0006 DF92 push r13
  302. 291 0008 EF92 push r14
  303. 292 000a FF92 push r15
  304. 293 000c 0F93 push r16
  305. 294 000e 1F93 push r17
  306. 295 0010 CF93 push r28
  307. 296 0012 DF93 push r29
  308. 297 /* prologue: function */
  309. 298 /* frame size = 0 */
  310. 299 /* stack size = 10 */
  311. 300 .L__stack_usage = 10
  312. 301 0014 7B01 movw r14,r22
  313. 302 0016 6A01 movw r12,r20
  314. 303 0018 40E0 ldi r20,0
  315. 304 001a 50E0 ldi r21,0
  316. 305 001c 60E0 ldi r22,0
  317. 306 001e 70E0 ldi r23,0
  318. 307 0020 0E94 0000 call CacheDevice
  319. 308 0024 8C01 movw r16,r24
  320. 309 0026 0097 sbiw r24,0
  321. 310 0028 01F0 breq .L54
  322. 311 002a FC01 movw r30,r24
  323. 312 002c B480 ldd r11,Z+4
  324. 313 002e A580 ldd r10,Z+5
  325. 314 0030 CB2D mov r28,r11
  326. 315 0032 DA2D mov r29,r10
  327. 316 .L47:
  328. 317 0034 2097 sbiw r28,0
  329. 318 0036 01F0 breq .L58
  330. 319 0038 B701 movw r22,r14
  331. 320 003a 8C81 ldd r24,Y+4
  332. 321 003c 9D81 ldd r25,Y+5
  333. 322 003e 0E94 0000 call strcmp
  334. 323 0042 892B or r24,r25
  335. 324 0044 01F4 brne .L48
  336. 325 0046 B601 movw r22,r12
  337. 326 0048 8E81 ldd r24,Y+6
  338. 327 004a 9F81 ldd r25,Y+7
  339. 328 004c 0E94 0000 call strcmp
  340. 329 0050 892B or r24,r25
  341. 330 0052 01F0 breq .L54
  342. 331 .L48:
  343. 332 0054 0990 ld __tmp_reg__,Y+
  344. 333 0056 D881 ld r29,Y
  345. 334 0058 C02D mov r28,__tmp_reg__
  346. 335 005a 00C0 rjmp .L47
  347. 336 .L58:
  348. 337 005c 6AE0 ldi r22,lo8(10)
  349. GAS LISTING /tmp/ccbk85jl.s page 7
  350. 338 005e 70E0 ldi r23,0
  351. 339 0060 81E0 ldi r24,lo8(1)
  352. 340 0062 90E0 ldi r25,0
  353. 341 0064 0E94 0000 call calloc
  354. 342 0068 EC01 movw r28,r24
  355. 343 006a 892B or r24,r25
  356. 344 006c 01F0 breq .L54
  357. 345 006e 1B83 std Y+3,r17
  358. 346 0070 0A83 std Y+2,r16
  359. 347 0072 C701 movw r24,r14
  360. 348 0074 0E94 0000 call strdup
  361. 349 0078 9D83 std Y+5,r25
  362. 350 007a 8C83 std Y+4,r24
  363. 351 007c C601 movw r24,r12
  364. 352 007e 0E94 0000 call strdup
  365. 353 0082 9F83 std Y+7,r25
  366. 354 0084 8E83 std Y+6,r24
  367. 355 0086 B882 st Y,r11
  368. 356 0088 A982 std Y+1,r10
  369. 357 008a F801 movw r30,r16
  370. 358 008c D583 std Z+5,r29
  371. 359 008e C483 std Z+4,r28
  372. 360 0090 60E0 ldi r22,0
  373. 361 0092 CE01 movw r24,r28
  374. 362 0094 0E94 0000 call CallObservers
  375. 363 .L54:
  376. 364 0098 C801 movw r24,r16
  377. 365 /* epilogue start */
  378. 366 009a DF91 pop r29
  379. 367 009c CF91 pop r28
  380. 368 009e 1F91 pop r17
  381. 369 00a0 0F91 pop r16
  382. 370 00a2 FF90 pop r15
  383. 371 00a4 EF90 pop r14
  384. 372 00a6 DF90 pop r13
  385. 373 00a8 CF90 pop r12
  386. 374 00aa BF90 pop r11
  387. 375 00ac AF90 pop r10
  388. 376 00ae 0895 ret
  389. 377 .size CacheService, .-CacheService
  390. 378 .section .rodata.str1.1
  391. 379 .LC3:
  392. 380 001b 4E54 00 .string "NT"
  393. 381 .LC4:
  394. 382 001e 4E54 5300 .string "NTS"
  395. 383 .LC5:
  396. 384 0022 7373 6470 .string "ssdp:byebye"
  397. 384 3A62 7965
  398. 384 6279 6500
  399. 385 .LC6:
  400. 386 002e 7373 6470 .string "ssdp:alive"
  401. 386 3A61 6C69
  402. 386 7665 00
  403. 387 .LC7:
  404. 388 0039 7572 6E00 .string "urn"
  405. 389 .LC8:
  406. 390 003d 7365 7276 .string "service"
  407. GAS LISTING /tmp/ccbk85jl.s page 8
  408. 390 6963 6500
  409. 391 .section .text.NotificationListener,"ax",@progbits
  410. 392 .type NotificationListener, @function
  411. 393 NotificationListener:
  412. 394 0000 8F92 push r8
  413. 395 0002 9F92 push r9
  414. 396 0004 AF92 push r10
  415. 397 0006 BF92 push r11
  416. 398 0008 CF92 push r12
  417. 399 000a DF92 push r13
  418. 400 000c EF92 push r14
  419. 401 000e FF92 push r15
  420. 402 0010 0F93 push r16
  421. 403 0012 1F93 push r17
  422. 404 0014 CF93 push r28
  423. 405 0016 DF93 push r29
  424. 406 0018 CDB7 in r28,__SP_L__
  425. 407 001a DEB7 in r29,__SP_H__
  426. 408 001c 2A97 sbiw r28,10
  427. 409 001e 0FB6 in __tmp_reg__,__SREG__
  428. 410 0020 F894 cli
  429. 411 0022 DEBF out __SP_H__,r29
  430. 412 0024 0FBE out __SREG__,__tmp_reg__
  431. 413 0026 CDBF out __SP_L__,r28
  432. 414 /* prologue: function */
  433. 415 /* frame size = 10 */
  434. 416 /* stack size = 22 */
  435. 417 .L__stack_usage = 22
  436. 418 0028 7C01 movw r14,r24
  437. 419 002a 60E0 ldi r22,lo8(.LC3)
  438. 420 002c 70E0 ldi r23,hi8(.LC3)
  439. 421 002e 0E94 0000 call HttpuGetHeader
  440. 422 0032 5C01 movw r10,r24
  441. 423 0034 60E0 ldi r22,lo8(.LC4)
  442. 424 0036 70E0 ldi r23,hi8(.LC4)
  443. 425 0038 C701 movw r24,r14
  444. 426 003a 0E94 0000 call HttpuGetHeader
  445. 427 003e 8C01 movw r16,r24
  446. 428 0040 C701 movw r24,r14
  447. 429 0042 0E94 0000 call SsdpUuidFromHeader
  448. 430 0046 6C01 movw r12,r24
  449. 431 0048 F501 movw r30,r10
  450. 432 004a 8081 ld r24,Z
  451. 433 004c 8823 tst r24
  452. 434 004e 01F4 brne .+2
  453. 435 0050 00C0 rjmp .L59
  454. 436 0052 F801 movw r30,r16
  455. 437 0054 8081 ld r24,Z
  456. 438 0056 8823 tst r24
  457. 439 0058 01F4 brne .+2
  458. 440 005a 00C0 rjmp .L59
  459. 441 005c C114 cp r12,__zero_reg__
  460. 442 005e D104 cpc r13,__zero_reg__
  461. 443 0060 01F4 brne .+2
  462. 444 0062 00C0 rjmp .L59
  463. 445 0064 60E0 ldi r22,lo8(.LC5)
  464. 446 0066 70E0 ldi r23,hi8(.LC5)
  465. GAS LISTING /tmp/ccbk85jl.s page 9
  466. 447 0068 C801 movw r24,r16
  467. 448 006a 0E94 0000 call strcmp
  468. 449 006e 892B or r24,r25
  469. 450 0070 01F4 brne .L61
  470. 451 0072 0091 0000 lds r16,ssdp_device_cache
  471. 452 0076 1091 0000 lds r17,ssdp_device_cache+1
  472. 453 007a 80E0 ldi r24,lo8(ssdp_device_cache)
  473. 454 007c A82E mov r10,r24
  474. 455 007e 80E0 ldi r24,hi8(ssdp_device_cache)
  475. 456 0080 B82E mov r11,r24
  476. 457 .L62:
  477. 458 0082 0115 cp r16,__zero_reg__
  478. 459 0084 1105 cpc r17,__zero_reg__
  479. 460 0086 01F4 brne .+2
  480. 461 0088 00C0 rjmp .L59
  481. 462 008a B601 movw r22,r12
  482. 463 008c F801 movw r30,r16
  483. 464 008e 8681 ldd r24,Z+6
  484. 465 0090 9781 ldd r25,Z+7
  485. 466 0092 0E94 0000 call strcmp
  486. 467 0096 892B or r24,r25
  487. 468 0098 01F4 brne .+2
  488. 469 009a 00C0 rjmp .L63
  489. 470 009c 5801 movw r10,r16
  490. 471 009e F801 movw r30,r16
  491. 472 00a0 0081 ld r16,Z
  492. 473 00a2 1181 ldd r17,Z+1
  493. 474 00a4 00C0 rjmp .L62
  494. 475 .L61:
  495. 476 00a6 60E0 ldi r22,lo8(.LC6)
  496. 477 00a8 70E0 ldi r23,hi8(.LC6)
  497. 478 00aa C801 movw r24,r16
  498. 479 00ac 0E94 0000 call strcmp
  499. 480 00b0 892B or r24,r25
  500. 481 00b2 01F0 breq .+2
  501. 482 00b4 00C0 rjmp .L59
  502. 483 00b6 C501 movw r24,r10
  503. 484 00b8 0E94 0000 call strdup
  504. 485 00bc 25E0 ldi r18,lo8(5)
  505. 486 00be 30E0 ldi r19,0
  506. 487 00c0 AE01 movw r20,r28
  507. 488 00c2 4F5F subi r20,-1
  508. 489 00c4 5F4F sbci r21,-1
  509. 490 00c6 6AE3 ldi r22,lo8(58)
  510. 491 00c8 0E94 0000 call SsdpSplitWords
  511. 492 00cc 60E0 ldi r22,lo8(.LC7)
  512. 493 00ce 70E0 ldi r23,hi8(.LC7)
  513. 494 00d0 8981 ldd r24,Y+1
  514. 495 00d2 9A81 ldd r25,Y+2
  515. 496 00d4 0E94 0000 call strcmp
  516. 497 00d8 892B or r24,r25
  517. 498 00da 01F4 brne .L67
  518. 499 00dc 60E0 ldi r22,lo8(.LC8)
  519. 500 00de 70E0 ldi r23,hi8(.LC8)
  520. 501 00e0 8D81 ldd r24,Y+5
  521. 502 00e2 9E81 ldd r25,Y+6
  522. 503 00e4 0E94 0000 call strcmp
  523. GAS LISTING /tmp/ccbk85jl.s page 10
  524. 504 00e8 892B or r24,r25
  525. 505 00ea 01F4 brne .L67
  526. 506 00ec 0091 0000 lds r16,ssdp_observer_root
  527. 507 00f0 1091 0000 lds r17,ssdp_observer_root+1
  528. 508 00f4 AB80 ldd r10,Y+3
  529. 509 00f6 BC80 ldd r11,Y+4
  530. 510 00f8 8F80 ldd r8,Y+7
  531. 511 00fa 9884 ldd r9,Y+8
  532. 512 .L68:
  533. 513 00fc 0115 cp r16,__zero_reg__
  534. 514 00fe 1105 cpc r17,__zero_reg__
  535. 515 0100 01F0 breq .L67
  536. 516 0102 F801 movw r30,r16
  537. 517 0104 6281 ldd r22,Z+2
  538. 518 0106 7381 ldd r23,Z+3
  539. 519 0108 C501 movw r24,r10
  540. 520 010a 0E94 0000 call strcmp
  541. 521 010e 892B or r24,r25
  542. 522 0110 01F4 brne .L69
  543. 523 0112 F801 movw r30,r16
  544. 524 0114 6481 ldd r22,Z+4
  545. 525 0116 7581 ldd r23,Z+5
  546. 526 0118 C401 movw r24,r8
  547. 527 011a 0E94 0000 call strcmp
  548. 528 011e 892B or r24,r25
  549. 529 0120 01F4 brne .L69
  550. 530 0122 9701 movw r18,r14
  551. 531 0124 A401 movw r20,r8
  552. 532 0126 B501 movw r22,r10
  553. 533 0128 C601 movw r24,r12
  554. 534 012a 0E94 0000 call CacheService
  555. 535 012e 00C0 rjmp .L67
  556. 536 .L69:
  557. 537 0130 F801 movw r30,r16
  558. 538 0132 0081 ld r16,Z
  559. 539 0134 1181 ldd r17,Z+1
  560. 540 0136 00C0 rjmp .L68
  561. 541 .L67:
  562. 542 0138 8981 ldd r24,Y+1
  563. 543 013a 9A81 ldd r25,Y+2
  564. 544 .L82:
  565. 545 013c 0E94 0000 call free
  566. 546 0140 00C0 rjmp .L59
  567. 547 .L63:
  568. 548 0142 F801 movw r30,r16
  569. 549 0144 E480 ldd r14,Z+4
  570. 550 0146 F580 ldd r15,Z+5
  571. 551 .L72:
  572. 552 0148 E114 cp r14,__zero_reg__
  573. 553 014a F104 cpc r15,__zero_reg__
  574. 554 014c 01F0 breq .L83
  575. 555 014e F701 movw r30,r14
  576. 556 0150 C080 ld r12,Z
  577. 557 0152 D180 ldd r13,Z+1
  578. 558 0154 61E0 ldi r22,lo8(1)
  579. 559 0156 C701 movw r24,r14
  580. 560 0158 0E94 0000 call CallObservers
  581. GAS LISTING /tmp/ccbk85jl.s page 11
  582. 561 015c F701 movw r30,r14
  583. 562 015e 8481 ldd r24,Z+4
  584. 563 0160 9581 ldd r25,Z+5
  585. 564 0162 0E94 0000 call free
  586. 565 0166 F701 movw r30,r14
  587. 566 0168 8681 ldd r24,Z+6
  588. 567 016a 9781 ldd r25,Z+7
  589. 568 016c 0E94 0000 call free
  590. 569 0170 C701 movw r24,r14
  591. 570 0172 0E94 0000 call free
  592. 571 0176 7601 movw r14,r12
  593. 572 0178 00C0 rjmp .L72
  594. 573 .L83:
  595. 574 017a F801 movw r30,r16
  596. 575 017c 8681 ldd r24,Z+6
  597. 576 017e 9781 ldd r25,Z+7
  598. 577 0180 0E94 0000 call free
  599. 578 0184 F801 movw r30,r16
  600. 579 0186 8085 ldd r24,Z+8
  601. 580 0188 9185 ldd r25,Z+9
  602. 581 018a 0E94 0000 call free
  603. 582 018e F801 movw r30,r16
  604. 583 0190 8285 ldd r24,Z+10
  605. 584 0192 9385 ldd r25,Z+11
  606. 585 0194 0E94 0000 call free
  607. 586 0198 F801 movw r30,r16
  608. 587 019a 8485 ldd r24,Z+12
  609. 588 019c 9585 ldd r25,Z+13
  610. 589 019e 0E94 0000 call free
  611. 590 01a2 F801 movw r30,r16
  612. 591 01a4 8081 ld r24,Z
  613. 592 01a6 9181 ldd r25,Z+1
  614. 593 01a8 F501 movw r30,r10
  615. 594 01aa 9183 std Z+1,r25
  616. 595 01ac 8083 st Z,r24
  617. 596 01ae C801 movw r24,r16
  618. 597 01b0 00C0 rjmp .L82
  619. 598 .L59:
  620. 599 /* epilogue start */
  621. 600 01b2 2A96 adiw r28,10
  622. 601 01b4 0FB6 in __tmp_reg__,__SREG__
  623. 602 01b6 F894 cli
  624. 603 01b8 DEBF out __SP_H__,r29
  625. 604 01ba 0FBE out __SREG__,__tmp_reg__
  626. 605 01bc CDBF out __SP_L__,r28
  627. 606 01be DF91 pop r29
  628. 607 01c0 CF91 pop r28
  629. 608 01c2 1F91 pop r17
  630. 609 01c4 0F91 pop r16
  631. 610 01c6 FF90 pop r15
  632. 611 01c8 EF90 pop r14
  633. 612 01ca DF90 pop r13
  634. 613 01cc CF90 pop r12
  635. 614 01ce BF90 pop r11
  636. 615 01d0 AF90 pop r10
  637. 616 01d2 9F90 pop r9
  638. 617 01d4 8F90 pop r8
  639. GAS LISTING /tmp/ccbk85jl.s page 12
  640. 618 01d6 0895 ret
  641. 619 .size NotificationListener, .-NotificationListener
  642. 620 .section .rodata.str1.1
  643. 621 .LC9:
  644. 622 0045 4D2D 5345 .string "M-SEARCH * HTTP/1.1"
  645. 622 4152 4348
  646. 622 202A 2048
  647. 622 5454 502F
  648. 622 312E 3100
  649. 623 .LC10:
  650. 624 0059 3A31 3930 .string ":1900"
  651. 624 3000
  652. 625 .LC11:
  653. 626 005f 486F 7374 .string "Host"
  654. 626 00
  655. 627 .LC12:
  656. 628 0064 2273 7364 .string "\"ssdp:discover\""
  657. 628 703A 6469
  658. 628 7363 6F76
  659. 628 6572 2200
  660. 629 .LC13:
  661. 630 0074 4D41 4E00 .string "MAN"
  662. 631 .LC14:
  663. 632 0078 2564 00 .string "%d"
  664. 633 .LC15:
  665. 634 007b 4D58 00 .string "MX"
  666. 635 .LC16:
  667. 636 007e 5354 00 .string "ST"
  668. 637 .LC17:
  669. 638 0081 7572 6E3A .string "urn:"
  670. 638 00
  671. 639 .LC18:
  672. 640 0086 6465 7669 .string "device"
  673. 640 6365 00
  674. 641 .section .text.SsdpDiscoverDevices,"ax",@progbits
  675. 642 .global SsdpDiscoverDevices
  676. 643 .type SsdpDiscoverDevices, @function
  677. 644 SsdpDiscoverDevices:
  678. 645 0000 6F92 push r6
  679. 646 0002 7F92 push r7
  680. 647 0004 8F92 push r8
  681. 648 0006 9F92 push r9
  682. 649 0008 BF92 push r11
  683. 650 000a CF92 push r12
  684. 651 000c DF92 push r13
  685. 652 000e EF92 push r14
  686. 653 0010 FF92 push r15
  687. 654 0012 0F93 push r16
  688. 655 0014 1F93 push r17
  689. 656 0016 CF93 push r28
  690. 657 0018 DF93 push r29
  691. 658 001a CDB7 in r28,__SP_L__
  692. 659 001c DEB7 in r29,__SP_H__
  693. 660 001e 2A97 sbiw r28,10
  694. 661 0020 0FB6 in __tmp_reg__,__SREG__
  695. 662 0022 F894 cli
  696. 663 0024 DEBF out __SP_H__,r29
  697. GAS LISTING /tmp/ccbk85jl.s page 13
  698. 664 0026 0FBE out __SREG__,__tmp_reg__
  699. 665 0028 CDBF out __SP_L__,r28
  700. 666 /* prologue: function */
  701. 667 /* frame size = 10 */
  702. 668 /* stack size = 23 */
  703. 669 .L__stack_usage = 23
  704. 670 002a F82E mov r15,r24
  705. 671 002c E92E mov r14,r25
  706. 672 002e B62E mov r11,r22
  707. 673 0030 80E0 ldi r24,0
  708. 674 0032 90E0 ldi r25,0
  709. 675 0034 0E94 0000 call HttpuSessionCreate
  710. 676 0038 8C01 movw r16,r24
  711. 677 003a 892B or r24,r25
  712. 678 003c 01F4 brne .+2
  713. 679 003e 00C0 rjmp .L94
  714. 680 0040 1F92 push __zero_reg__
  715. 681 0042 1F92 push __zero_reg__
  716. 682 0044 80E0 ldi r24,lo8(.LC9)
  717. 683 0046 90E0 ldi r25,hi8(.LC9)
  718. 684 0048 9F93 push r25
  719. 685 004a 8F93 push r24
  720. 686 004c 1F92 push __zero_reg__
  721. 687 004e 1F92 push __zero_reg__
  722. 688 0050 1F93 push r17
  723. 689 0052 0F93 push r16
  724. 690 0054 0E94 0000 call HttpuAddHeader
  725. 691 0058 1F92 push __zero_reg__
  726. 692 005a 1F92 push __zero_reg__
  727. 693 005c 80E0 ldi r24,lo8(.LC10)
  728. 694 005e 90E0 ldi r25,hi8(.LC10)
  729. 695 0060 9F93 push r25
  730. 696 0062 8F93 push r24
  731. 697 0064 80E0 ldi r24,lo8(ct_239_255_255_250)
  732. 698 0066 90E0 ldi r25,hi8(ct_239_255_255_250)
  733. 699 0068 9F93 push r25
  734. 700 006a 8F93 push r24
  735. 701 006c 80E0 ldi r24,lo8(.LC11)
  736. 702 006e 90E0 ldi r25,hi8(.LC11)
  737. 703 0070 9F93 push r25
  738. 704 0072 8F93 push r24
  739. 705 0074 1F93 push r17
  740. 706 0076 0F93 push r16
  741. 707 0078 0E94 0000 call HttpuAddHeader
  742. 708 007c 1F92 push __zero_reg__
  743. 709 007e 1F92 push __zero_reg__
  744. 710 0080 80E0 ldi r24,lo8(.LC12)
  745. 711 0082 90E0 ldi r25,hi8(.LC12)
  746. 712 0084 9F93 push r25
  747. 713 0086 8F93 push r24
  748. 714 0088 80E0 ldi r24,lo8(.LC13)
  749. 715 008a 90E0 ldi r25,hi8(.LC13)
  750. 716 008c 9F93 push r25
  751. 717 008e 8F93 push r24
  752. 718 0090 1F93 push r17
  753. 719 0092 0F93 push r16
  754. 720 0094 0E94 0000 call HttpuAddHeader
  755. GAS LISTING /tmp/ccbk85jl.s page 14
  756. 721 0098 8B2D mov r24,r11
  757. 722 009a 0B2C mov __tmp_reg__,r11
  758. 723 009c 000C lsl r0
  759. 724 009e 990B sbc r25,r25
  760. 725 00a0 9F93 push r25
  761. 726 00a2 BF92 push r11
  762. 727 00a4 80E0 ldi r24,lo8(.LC14)
  763. 728 00a6 90E0 ldi r25,hi8(.LC14)
  764. 729 00a8 9F93 push r25
  765. 730 00aa 8F93 push r24
  766. 731 00ac CE01 movw r24,r28
  767. 732 00ae 0196 adiw r24,1
  768. 733 00b0 4C01 movw r8,r24
  769. 734 00b2 9F93 push r25
  770. 735 00b4 8F93 push r24
  771. 736 00b6 0E94 0000 call sprintf
  772. 737 00ba 0FB6 in __tmp_reg__,__SREG__
  773. 738 00bc F894 cli
  774. 739 00be DEBF out __SP_H__,r29
  775. 740 00c0 0FBE out __SREG__,__tmp_reg__
  776. 741 00c2 CDBF out __SP_L__,r28
  777. 742 00c4 1F92 push __zero_reg__
  778. 743 00c6 1F92 push __zero_reg__
  779. 744 00c8 9F92 push r9
  780. 745 00ca 8F92 push r8
  781. 746 00cc 80E0 ldi r24,lo8(.LC15)
  782. 747 00ce 90E0 ldi r25,hi8(.LC15)
  783. 748 00d0 9F93 push r25
  784. 749 00d2 8F93 push r24
  785. 750 00d4 1F93 push r17
  786. 751 00d6 0F93 push r16
  787. 752 00d8 0E94 0000 call HttpuAddHeader
  788. 753 00dc 1F92 push __zero_reg__
  789. 754 00de 1F92 push __zero_reg__
  790. 755 00e0 EF92 push r14
  791. 756 00e2 FF92 push r15
  792. 757 00e4 80E0 ldi r24,lo8(.LC16)
  793. 758 00e6 90E0 ldi r25,hi8(.LC16)
  794. 759 00e8 9F93 push r25
  795. 760 00ea 8F93 push r24
  796. 761 00ec 1F93 push r17
  797. 762 00ee 0F93 push r16
  798. 763 00f0 0E94 0000 call HttpuAddHeader
  799. 764 00f4 80E0 ldi r24,lo8(ct_239_255_255_250)
  800. 765 00f6 90E0 ldi r25,hi8(ct_239_255_255_250)
  801. 766 00f8 0E94 0000 call inet_addr
  802. 767 00fc AB01 movw r20,r22
  803. 768 00fe BC01 movw r22,r24
  804. 769 0100 2CE6 ldi r18,lo8(108)
  805. 770 0102 37E0 ldi r19,lo8(7)
  806. 771 0104 C801 movw r24,r16
  807. 772 0106 0E94 0000 call HttpuSend
  808. 773 010a 0FB6 in __tmp_reg__,__SREG__
  809. 774 010c F894 cli
  810. 775 010e DEBF out __SP_H__,r29
  811. 776 0110 0FBE out __SREG__,__tmp_reg__
  812. 777 0112 CDBF out __SP_L__,r28
  813. GAS LISTING /tmp/ccbk85jl.s page 15
  814. 778 0114 EE24 clr r14
  815. 779 0116 EA94 dec r14
  816. 780 0118 FE2C mov r15,r14
  817. 781 011a 6801 movw r12,r16
  818. 782 011c 9AEF ldi r25,-6
  819. 783 011e C91A sub r12,r25
  820. 784 0120 9BEF ldi r25,-5
  821. 785 0122 D90A sbc r13,r25
  822. 786 .L86:
  823. 787 0124 BB20 tst r11
  824. 788 0126 01F4 brne .+2
  825. 789 0128 00C0 rjmp .L87
  826. 790 012a 48EE ldi r20,lo8(-24)
  827. 791 012c 53E0 ldi r21,lo8(3)
  828. 792 012e 60E0 ldi r22,0
  829. 793 0130 70E0 ldi r23,0
  830. 794 0132 C801 movw r24,r16
  831. 795 0134 0E94 0000 call HttpuReceive
  832. 796 0138 7C01 movw r14,r24
  833. 797 013a 97FD sbrc r25,7
  834. 798 013c 00C0 rjmp .L87
  835. 799 013e 892B or r24,r25
  836. 800 0140 01F4 brne .L88
  837. 801 0142 BA94 dec r11
  838. 802 0144 00C0 rjmp .L89
  839. 803 .L88:
  840. 804 0146 60E0 ldi r22,0
  841. 805 0148 70E0 ldi r23,0
  842. 806 014a C601 movw r24,r12
  843. 807 014c 0E94 0000 call HttpuGetHeader
  844. 808 0150 0996 adiw r24,9
  845. 809 0152 0E94 0000 call atoi
  846. 810 0156 883C cpi r24,-56
  847. 811 0158 9105 cpc r25,__zero_reg__
  848. 812 015a 01F0 breq .+2
  849. 813 015c 00C0 rjmp .L89
  850. 814 015e C601 movw r24,r12
  851. 815 0160 0E94 0000 call SsdpUuidFromHeader
  852. 816 0164 7C01 movw r14,r24
  853. 817 0166 892B or r24,r25
  854. 818 0168 01F4 brne .+2
  855. 819 016a 00C0 rjmp .L89
  856. 820 016c 60E0 ldi r22,lo8(.LC16)
  857. 821 016e 70E0 ldi r23,hi8(.LC16)
  858. 822 0170 C601 movw r24,r12
  859. 823 0172 0E94 0000 call HttpuGetHeader
  860. 824 0176 3C01 movw r6,r24
  861. 825 0178 60E0 ldi r22,lo8(ct_upnp_rootdevice)
  862. 826 017a 70E0 ldi r23,hi8(ct_upnp_rootdevice)
  863. 827 017c 0E94 0000 call strcasecmp
  864. 828 0180 892B or r24,r25
  865. 829 0182 01F4 brne .L90
  866. 830 0184 9601 movw r18,r12
  867. 831 0186 40E0 ldi r20,0
  868. 832 0188 50E0 ldi r21,0
  869. 833 018a 60E0 ldi r22,0
  870. 834 018c 70E0 ldi r23,0
  871. GAS LISTING /tmp/ccbk85jl.s page 16
  872. 835 018e C701 movw r24,r14
  873. 836 0190 0E94 0000 call CacheDevice
  874. 837 0194 00C0 rjmp .L89
  875. 838 .L90:
  876. 839 0196 44E0 ldi r20,lo8(4)
  877. 840 0198 50E0 ldi r21,0
  878. 841 019a 60E0 ldi r22,lo8(.LC17)
  879. 842 019c 70E0 ldi r23,hi8(.LC17)
  880. 843 019e C301 movw r24,r6
  881. 844 01a0 0E94 0000 call strncasecmp
  882. 845 01a4 892B or r24,r25
  883. 846 01a6 01F4 brne .L89
  884. 847 01a8 C301 movw r24,r6
  885. 848 01aa 0E94 0000 call strdup
  886. 849 01ae 25E0 ldi r18,lo8(5)
  887. 850 01b0 30E0 ldi r19,0
  888. 851 01b2 A401 movw r20,r8
  889. 852 01b4 6AE3 ldi r22,lo8(58)
  890. 853 01b6 0E94 0000 call SsdpSplitWords
  891. 854 01ba 6D80 ldd r6,Y+5
  892. 855 01bc 7E80 ldd r7,Y+6
  893. 856 01be 60E0 ldi r22,lo8(.LC18)
  894. 857 01c0 70E0 ldi r23,hi8(.LC18)
  895. 858 01c2 C301 movw r24,r6
  896. 859 01c4 0E94 0000 call strcmp
  897. 860 01c8 892B or r24,r25
  898. 861 01ca 01F4 brne .L91
  899. 862 01cc 4F81 ldd r20,Y+7
  900. 863 01ce 5885 ldd r21,Y+8
  901. 864 01d0 6B81 ldd r22,Y+3
  902. 865 01d2 7C81 ldd r23,Y+4
  903. 866 01d4 9601 movw r18,r12
  904. 867 01d6 C701 movw r24,r14
  905. 868 01d8 0E94 0000 call CacheDevice
  906. 869 01dc 00C0 rjmp .L92
  907. 870 .L91:
  908. 871 01de 60E0 ldi r22,lo8(.LC8)
  909. 872 01e0 70E0 ldi r23,hi8(.LC8)
  910. 873 01e2 C301 movw r24,r6
  911. 874 01e4 0E94 0000 call strcmp
  912. 875 01e8 892B or r24,r25
  913. 876 01ea 01F4 brne .L92
  914. 877 01ec 4F81 ldd r20,Y+7
  915. 878 01ee 5885 ldd r21,Y+8
  916. 879 01f0 6B81 ldd r22,Y+3
  917. 880 01f2 7C81 ldd r23,Y+4
  918. 881 01f4 9601 movw r18,r12
  919. 882 01f6 C701 movw r24,r14
  920. 883 01f8 0E94 0000 call CacheService
  921. 884 .L92:
  922. 885 01fc 8981 ldd r24,Y+1
  923. 886 01fe 9A81 ldd r25,Y+2
  924. 887 0200 0E94 0000 call free
  925. 888 .L89:
  926. 889 0204 E12C mov r14,__zero_reg__
  927. 890 0206 F12C mov r15,__zero_reg__
  928. 891 0208 00C0 rjmp .L86
  929. GAS LISTING /tmp/ccbk85jl.s page 17
  930. 892 .L87:
  931. 893 020a C801 movw r24,r16
  932. 894 020c 0E94 0000 call HttpuSessionDestroy
  933. 895 0210 00C0 rjmp .L85
  934. 896 .L94:
  935. 897 0212 EE24 clr r14
  936. 898 0214 EA94 dec r14
  937. 899 0216 FE2C mov r15,r14
  938. 900 .L85:
  939. 901 0218 C701 movw r24,r14
  940. 902 /* epilogue start */
  941. 903 021a 2A96 adiw r28,10
  942. 904 021c 0FB6 in __tmp_reg__,__SREG__
  943. 905 021e F894 cli
  944. 906 0220 DEBF out __SP_H__,r29
  945. 907 0222 0FBE out __SREG__,__tmp_reg__
  946. 908 0224 CDBF out __SP_L__,r28
  947. 909 0226 DF91 pop r29
  948. 910 0228 CF91 pop r28
  949. 911 022a 1F91 pop r17
  950. 912 022c 0F91 pop r16
  951. 913 022e FF90 pop r15
  952. 914 0230 EF90 pop r14
  953. 915 0232 DF90 pop r13
  954. 916 0234 CF90 pop r12
  955. 917 0236 BF90 pop r11
  956. 918 0238 9F90 pop r9
  957. 919 023a 8F90 pop r8
  958. 920 023c 7F90 pop r7
  959. 921 023e 6F90 pop r6
  960. 922 0240 0895 ret
  961. 923 .size SsdpDiscoverDevices, .-SsdpDiscoverDevices
  962. 924 .section .rodata.str1.1
  963. 925 .LC19:
  964. 926 008d 7572 6E3A .string "urn:%s:service:%s:1"
  965. 926 2573 3A73
  966. 926 6572 7669
  967. 926 6365 3A25
  968. 926 733A 3100
  969. 927 .section .text.SsdpRegisterServiceObserver,"ax",@progbits
  970. 928 .global SsdpRegisterServiceObserver
  971. 929 .type SsdpRegisterServiceObserver, @function
  972. 930 SsdpRegisterServiceObserver:
  973. 931 0000 6F92 push r6
  974. 932 0002 7F92 push r7
  975. 933 0004 8F92 push r8
  976. 934 0006 9F92 push r9
  977. 935 0008 AF92 push r10
  978. 936 000a BF92 push r11
  979. 937 000c DF92 push r13
  980. 938 000e EF92 push r14
  981. 939 0010 FF92 push r15
  982. 940 0012 0F93 push r16
  983. 941 0014 1F93 push r17
  984. 942 0016 CF93 push r28
  985. 943 0018 DF93 push r29
  986. 944 /* prologue: function */
  987. GAS LISTING /tmp/ccbk85jl.s page 18
  988. 945 /* frame size = 0 */
  989. 946 /* stack size = 13 */
  990. 947 .L__stack_usage = 13
  991. 948 001a 4C01 movw r8,r24
  992. 949 001c 162F mov r17,r22
  993. 950 001e D72E mov r13,r23
  994. 951 0020 042F mov r16,r20
  995. 952 0022 F52E mov r15,r21
  996. 953 0024 E22E mov r14,r18
  997. 954 0026 88E0 ldi r24,lo8(8)
  998. 955 0028 90E0 ldi r25,0
  999. 956 002a 0E94 0000 call malloc
  1000. 957 002e EC01 movw r28,r24
  1001. 958 0030 892B or r24,r25
  1002. 959 0032 01F4 brne .+2
  1003. 960 0034 00C0 rjmp .L112
  1004. 961 0036 812F mov r24,r17
  1005. 962 0038 9D2D mov r25,r13
  1006. 963 003a 0E94 0000 call strdup
  1007. 964 003e 3C01 movw r6,r24
  1008. 965 0040 9B83 std Y+3,r25
  1009. 966 0042 8A83 std Y+2,r24
  1010. 967 0044 802F mov r24,r16
  1011. 968 0046 9F2D mov r25,r15
  1012. 969 0048 0E94 0000 call strdup
  1013. 970 004c 5C01 movw r10,r24
  1014. 971 004e 9D83 std Y+5,r25
  1015. 972 0050 8C83 std Y+4,r24
  1016. 973 0052 6114 cp r6,__zero_reg__
  1017. 974 0054 7104 cpc r7,__zero_reg__
  1018. 975 0056 01F4 brne .+2
  1019. 976 0058 00C0 rjmp .L101
  1020. 977 005a 892B or r24,r25
  1021. 978 005c 01F4 brne .+2
  1022. 979 005e 00C0 rjmp .L101
  1023. 980 0060 9F82 std Y+7,r9
  1024. 981 0062 8E82 std Y+6,r8
  1025. 982 0064 8091 0000 lds r24,ssdp_observer_root
  1026. 983 0068 9091 0000 lds r25,ssdp_observer_root+1
  1027. 984 006c 9983 std Y+1,r25
  1028. 985 006e 8883 st Y,r24
  1029. 986 0070 D093 0000 sts ssdp_observer_root+1,r29
  1030. 987 0074 C093 0000 sts ssdp_observer_root,r28
  1031. 988 0078 A12F mov r26,r17
  1032. 989 007a BD2D mov r27,r13
  1033. 990 007c FD01 movw r30,r26
  1034. 991 0:
  1035. 992 007e 0190 ld __tmp_reg__,Z+
  1036. 993 0080 0020 tst __tmp_reg__
  1037. 994 0082 01F4 brne 0b
  1038. 995 0084 3197 sbiw r30,1
  1039. 996 0086 CF01 movw r24,r30
  1040. 997 0088 8A1B sub r24,r26
  1041. 998 008a 9B0B sbc r25,r27
  1042. 999 008c A02F mov r26,r16
  1043. 1000 008e BF2D mov r27,r15
  1044. 1001 0090 FD01 movw r30,r26
  1045. GAS LISTING /tmp/ccbk85jl.s page 19
  1046. 1002 0:
  1047. 1003 0092 0190 ld __tmp_reg__,Z+
  1048. 1004 0094 0020 tst __tmp_reg__
  1049. 1005 0096 01F4 brne 0b
  1050. 1006 0098 3197 sbiw r30,1
  1051. 1007 009a EA1B sub r30,r26
  1052. 1008 009c FB0B sbc r31,r27
  1053. 1009 009e 8E0F add r24,r30
  1054. 1010 00a0 9F1F adc r25,r31
  1055. 1011 00a2 4096 adiw r24,16
  1056. 1012 00a4 0E94 0000 call malloc
  1057. 1013 00a8 EC01 movw r28,r24
  1058. 1014 00aa 892B or r24,r25
  1059. 1015 00ac 01F0 breq .L112
  1060. 1016 00ae FF92 push r15
  1061. 1017 00b0 0F93 push r16
  1062. 1018 00b2 DF92 push r13
  1063. 1019 00b4 1F93 push r17
  1064. 1020 00b6 80E0 ldi r24,lo8(.LC19)
  1065. 1021 00b8 90E0 ldi r25,hi8(.LC19)
  1066. 1022 00ba 9F93 push r25
  1067. 1023 00bc 8F93 push r24
  1068. 1024 00be DF93 push r29
  1069. 1025 00c0 CF93 push r28
  1070. 1026 00c2 0E94 0000 call sprintf
  1071. 1027 00c6 6E2D mov r22,r14
  1072. 1028 00c8 CE01 movw r24,r28
  1073. 1029 00ca 0E94 0000 call SsdpDiscoverDevices
  1074. 1030 00ce 8C01 movw r16,r24
  1075. 1031 00d0 CE01 movw r24,r28
  1076. 1032 00d2 0E94 0000 call free
  1077. 1033 00d6 8DB7 in r24,__SP_L__
  1078. 1034 00d8 9EB7 in r25,__SP_H__
  1079. 1035 00da 0896 adiw r24,8
  1080. 1036 00dc 0FB6 in __tmp_reg__,__SREG__
  1081. 1037 00de F894 cli
  1082. 1038 00e0 9EBF out __SP_H__,r25
  1083. 1039 00e2 0FBE out __SREG__,__tmp_reg__
  1084. 1040 00e4 8DBF out __SP_L__,r24
  1085. 1041 00e6 0115 cp r16,__zero_reg__
  1086. 1042 00e8 1105 cpc r17,__zero_reg__
  1087. 1043 00ea 01F4 brne .L100
  1088. 1044 00ec 80E0 ldi r24,lo8(gs(NotificationListener))
  1089. 1045 00ee 90E0 ldi r25,hi8(gs(NotificationListener))
  1090. 1046 /* epilogue start */
  1091. 1047 00f0 DF91 pop r29
  1092. 1048 00f2 CF91 pop r28
  1093. 1049 00f4 1F91 pop r17
  1094. 1050 00f6 0F91 pop r16
  1095. 1051 00f8 FF90 pop r15
  1096. 1052 00fa EF90 pop r14
  1097. 1053 00fc DF90 pop r13
  1098. 1054 00fe BF90 pop r11
  1099. 1055 0100 AF90 pop r10
  1100. 1056 0102 9F90 pop r9
  1101. 1057 0104 8F90 pop r8
  1102. 1058 0106 7F90 pop r7
  1103. GAS LISTING /tmp/ccbk85jl.s page 20
  1104. 1059 0108 6F90 pop r6
  1105. 1060 010a 0C94 0000 jmp SsdpRegisterListener
  1106. 1061 .L101:
  1107. 1062 010e C301 movw r24,r6
  1108. 1063 0110 0E94 0000 call free
  1109. 1064 0114 C501 movw r24,r10
  1110. 1065 0116 0E94 0000 call free
  1111. 1066 011a CE01 movw r24,r28
  1112. 1067 011c 0E94 0000 call free
  1113. 1068 .L112:
  1114. 1069 0120 0FEF ldi r16,lo8(-1)
  1115. 1070 0122 1FEF ldi r17,lo8(-1)
  1116. 1071 .L100:
  1117. 1072 0124 C801 movw r24,r16
  1118. 1073 /* epilogue start */
  1119. 1074 0126 DF91 pop r29
  1120. 1075 0128 CF91 pop r28
  1121. 1076 012a 1F91 pop r17
  1122. 1077 012c 0F91 pop r16
  1123. 1078 012e FF90 pop r15
  1124. 1079 0130 EF90 pop r14
  1125. 1080 0132 DF90 pop r13
  1126. 1081 0134 BF90 pop r11
  1127. 1082 0136 AF90 pop r10
  1128. 1083 0138 9F90 pop r9
  1129. 1084 013a 8F90 pop r8
  1130. 1085 013c 7F90 pop r7
  1131. 1086 013e 6F90 pop r6
  1132. 1087 0140 0895 ret
  1133. 1088 .size SsdpRegisterServiceObserver, .-SsdpRegisterServiceObserver
  1134. 1089 .local uuid.2973
  1135. 1090 .comm uuid.2973,2,1
  1136. 1091 .local ssdp_observer_root
  1137. 1092 .comm ssdp_observer_root,2,1
  1138. 1093 .local ssdp_device_cache
  1139. 1094 .comm ssdp_device_cache,2,1
  1140. 1095 .ident "GCC: (GNU) 5.3.0"
  1141. 1096 .global __do_copy_data
  1142. 1097 .global __do_clear_bss
  1143. GAS LISTING /tmp/ccbk85jl.s page 21
  1144. DEFINED SYMBOLS
  1145. *ABS*:0000000000000000 ssdpc.c
  1146. /tmp/ccbk85jl.s:2 *ABS*:000000000000003e __SP_H__
  1147. /tmp/ccbk85jl.s:3 *ABS*:000000000000003d __SP_L__
  1148. /tmp/ccbk85jl.s:4 *ABS*:000000000000003f __SREG__
  1149. /tmp/ccbk85jl.s:5 *ABS*:000000000000003b __RAMPZ__
  1150. /tmp/ccbk85jl.s:6 *ABS*:0000000000000000 __tmp_reg__
  1151. /tmp/ccbk85jl.s:7 *ABS*:0000000000000001 __zero_reg__
  1152. /tmp/ccbk85jl.s:10 .text.CallObservers:0000000000000000 CallObservers
  1153. /tmp/ccbk85jl.s:1090 .bss:0000000000000002 ssdp_observer_root
  1154. /tmp/ccbk85jl.s:76 .text.SsdpUuidFromHeader:0000000000000000 SsdpUuidFromHeader
  1155. .bss:0000000000000000 uuid.2973
  1156. /tmp/ccbk85jl.s:161 .text.CacheDevice:0000000000000000 CacheDevice
  1157. /tmp/ccbk85jl.s:1092 .bss:0000000000000004 ssdp_device_cache
  1158. /tmp/ccbk85jl.s:286 .text.CacheService:0000000000000000 CacheService
  1159. /tmp/ccbk85jl.s:393 .text.NotificationListener:0000000000000000 NotificationListener
  1160. /tmp/ccbk85jl.s:644 .text.SsdpDiscoverDevices:0000000000000000 SsdpDiscoverDevices
  1161. /tmp/ccbk85jl.s:930 .text.SsdpRegisterServiceObserver:0000000000000000 SsdpRegisterServiceObserver
  1162. UNDEFINED SYMBOLS
  1163. strcmp
  1164. free
  1165. HttpuGetHeader
  1166. ct_uuid_
  1167. strncmp
  1168. strchr
  1169. malloc
  1170. memcpy
  1171. strdup
  1172. calloc
  1173. atoi
  1174. SsdpSplitWords
  1175. HttpuSessionCreate
  1176. HttpuAddHeader
  1177. ct_239_255_255_250
  1178. sprintf
  1179. inet_addr
  1180. HttpuSend
  1181. HttpuReceive
  1182. ct_upnp_rootdevice
  1183. strcasecmp
  1184. strncasecmp
  1185. HttpuSessionDestroy
  1186. SsdpRegisterListener
  1187. __do_copy_data
  1188. __do_clear_bss