dpml_ux_sqrt.S 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321
  1. /*
  2. * Math library
  3. *
  4. * Copyright (C) 2016 Intel Corporation. All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * * Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * * Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in
  14. * the documentation and/or other materials provided with the
  15. * distribution.
  16. * * Neither the name of Intel Corporation nor the names of its
  17. * contributors may be used to endorse or promote products derived
  18. * from this software without specific prior written permission.
  19. *
  20. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  21. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  22. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  23. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  24. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  25. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  26. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  27. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  28. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  29. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  30. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. *
  32. *
  33. * Author Name <jingwei.zhang@intel.com>
  34. * History:
  35. * 03-14-2016 Initial version. numerics svn rev. 12864
  36. */
  37. .file "dpml_ux_sqrt.c"
  38. .text
  39. ..TXTST0:
  40. # -- Begin __dpml_ux_sqrt_evaluation__
  41. .text
  42. .align 16,0x90
  43. .hidden __dpml_ux_sqrt_evaluation__
  44. .globl __dpml_ux_sqrt_evaluation__
  45. __dpml_ux_sqrt_evaluation__:
  46. # parameter 1: %eax
  47. # parameter 2: 12 + %ebp
  48. # parameter 3: %edx
  49. ..B1.1:
  50. ..L1:
  51. movl 4(%esp), %eax
  52. movl 16(%esp), %edx
  53. .hidden __dpml_ux_sqrt_evaluation__.
  54. .globl __dpml_ux_sqrt_evaluation__.
  55. __dpml_ux_sqrt_evaluation__.:
  56. pushl %ebp
  57. movl %esp, %ebp
  58. andl $-16, %esp
  59. pushl %esi
  60. pushl %edi
  61. pushl %ebx
  62. subl $148, %esp
  63. movl %edx, %esi
  64. movl %eax, 44(%esp)
  65. movl %gs:20, %ecx
  66. xorl %esp, %ecx
  67. movl %ecx, 136(%esp)
  68. addl $4, %esp
  69. call ..L2
  70. ..L2:
  71. popl %ebx
  72. lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%ebx), %ebx
  73. lea 80(%esp), %eax
  74. pushl %eax
  75. call fegetenv@PLT
  76. ..B1.2:
  77. movl 44(%esp), %edx
  78. movl %ebx, 80(%esp)
  79. movl %esi, 40(%esp)
  80. movl 8(%edx), %edi
  81. movl %edi, %ecx
  82. movl 12(%edx), %eax
  83. movl %eax, %ebx
  84. shll $21, %ebx
  85. shrl $11, %ecx
  86. orl %ecx, %ebx
  87. movl 4(%edx), %ecx
  88. movl 20(%edx), %esi
  89. movl %ecx, %edx
  90. andl $1, %edx
  91. movl %esi, 36(%esp)
  92. movl %eax, %esi
  93. shrl $11, %esi
  94. addl %edx, %ecx
  95. addl $1070596096, %esi
  96. movl %esi, 68(%esp)
  97. lea 8(%edx), %esi
  98. movl %esi, 32(%esp)
  99. negl %esi
  100. sarl $1, %ecx
  101. movl %ecx, 72(%esp)
  102. movl %esi, %ecx
  103. negl %ecx
  104. movl %ebx, 64(%esp)
  105. addl $31, %ecx
  106. movl %edi, %ebx
  107. shrl %cl, %ebx
  108. movl %esi, %ecx
  109. movl %eax, 76(%esp)
  110. shrl $1, %ebx
  111. shll %cl, %eax
  112. shll %cl, %edi
  113. orl %ebx, %eax
  114. movl 80(%esp), %ebx
  115. movl 40(%esp), %esi
  116. ..B1.3:
  117. movl 32(%esp), %ecx
  118. shrl %cl, 36(%esp)
  119. ..B1.5:
  120. fldl 64(%esp)
  121. movl %eax, %ecx
  122. orl 36(%esp), %edi
  123. shll $21, %ecx
  124. shrl $11, %edi
  125. shrl $11, %eax
  126. orl %edi, %ecx
  127. movl %ecx, 48(%esp)
  128. movl %eax, 52(%esp)
  129. fildll 48(%esp)
  130. fstpl 56(%esp)
  131. fldl 56(%esp)
  132. ..B1.6:
  133. movl 32(%esp), %ecx
  134. movl 76(%esp), %eax
  135. shrl %cl, %eax
  136. ..B1.8:
  137. fmull 136+__sqrt_x_table@GOTOFF(%ebx)
  138. fld %st(1)
  139. fmul %st(2), %st
  140. movl 76(%esp), %ecx
  141. shrl $24, %ecx
  142. shll $7, %edx
  143. xorl %edx, %ecx
  144. shll $4, %ecx
  145. movl __sqrt_t_table@GOT(%ebx), %edx
  146. movl %eax, 48(%esp)
  147. fildl 48(%esp)
  148. fstpl 56(%esp)
  149. fldl 56(%esp)
  150. fmull 128+__sqrt_x_table@GOTOFF(%ebx)
  151. fstpl 56(%esp)
  152. fldl 56(%esp)
  153. fxch %st(2)
  154. fstpl 56(%esp)
  155. fldl 56(%esp)
  156. fld %st(0)
  157. movl %ebx, 80(%esp)
  158. fadd %st(3), %st
  159. fxch %st(2)
  160. fmuls (%edx,%ecx)
  161. flds 4(%edx,%ecx)
  162. fmulp %st, %st(5)
  163. fxch %st(4)
  164. faddl 8(%edx,%ecx)
  165. faddp %st, %st(4)
  166. fxch %st(3)
  167. fstpl 56(%esp)
  168. fldl 56(%esp)
  169. fmull 96+__sqrt_x_table@GOTOFF(%ebx)
  170. fstpl 56(%esp)
  171. fldl 56(%esp)
  172. fxch %st(1)
  173. fstpl 56(%esp)
  174. fldl 56(%esp)
  175. fld %st(0)
  176. fmul %st(2), %st
  177. fstps 48(%esp)
  178. flds 48(%esp)
  179. fxch %st(2)
  180. fstps 48(%esp)
  181. flds 48(%esp)
  182. fmul %st, %st(3)
  183. fxch %st(2)
  184. fsubr %st, %st(3)
  185. fxch %st(2)
  186. fmul %st, %st(4)
  187. fxch %st(4)
  188. faddp %st, %st(3)
  189. fxch %st(2)
  190. fmul %st(3), %st
  191. fld %st(3)
  192. fmulp %st, %st(2)
  193. fldl 152+__sqrt_x_table@GOTOFF(%ebx)
  194. fmulp %st, %st(3)
  195. fld %st(3)
  196. fmul %st(4), %st
  197. fmulp %st, %st(3)
  198. fxch %st(1)
  199. fsubrl 104+__sqrt_x_table@GOTOFF(%ebx)
  200. fsubp %st, %st(1)
  201. fstpl 56(%esp)
  202. fldl 56(%esp)
  203. fldl 112+__sqrt_x_table@GOTOFF(%ebx)
  204. fmul %st(3), %st
  205. fxch %st(2)
  206. fsubrl 144+__sqrt_x_table@GOTOFF(%ebx)
  207. fmulp %st, %st(3)
  208. fmulp %st, %st(2)
  209. fxch %st(1)
  210. fstpl 56(%esp)
  211. fldl 56(%esp)
  212. flds .L_2il0floatpacket.20@GOTOFF(%ebx)
  213. fld %st(0)
  214. fsubr %st(3), %st
  215. fxch %st(1)
  216. fcomp %st(3)
  217. fnstsw %ax
  218. fxch %st(1)
  219. fmull 120+__sqrt_x_table@GOTOFF(%ebx)
  220. sahf
  221. fxch %st(2)
  222. jp ..L4
  223. jbe ..L3
  224. ..L4:
  225. fst %st(1)
  226. ..L3:
  227. fstp %st(0)
  228. fnstcw 32(%esp)
  229. movzwl 32(%esp), %eax
  230. orl $3072, %eax
  231. movl %eax, 40(%esp)
  232. fldcw 40(%esp)
  233. fistpll 64(%esp)
  234. fldcw 32(%esp)
  235. movl 64(%esp), %edx
  236. fnstcw 32(%esp)
  237. movzwl 32(%esp), %eax
  238. orl $3072, %eax
  239. movl %eax, 40(%esp)
  240. fldcw 40(%esp)
  241. fistpll 64(%esp)
  242. fldcw 32(%esp)
  243. shll $7, %edx
  244. movl 64(%esp), %ecx
  245. movl %ecx, %ebx
  246. movl 68(%esp), %edi
  247. movl %edi, %eax
  248. shll $20, %eax
  249. shrl $12, %ebx
  250. shrl $11, %ecx
  251. orl %ebx, %eax
  252. sarl $12, %edi
  253. andl $1, %ecx
  254. addl %edi, %edx
  255. addl %ecx, %eax
  256. adcl $0, %edx
  257. xorl %ebx, %ebx
  258. movl %edx, %ecx
  259. andl $1073741824, %ecx
  260. orl %ebx, %ecx
  261. movl 80(%esp), %ebx
  262. je ..B1.10
  263. ..B1.9:
  264. movl $2147483647, 32(%esp)
  265. jmp ..B1.11
  266. ..B1.10:
  267. movl $-1, 32(%esp)
  268. ..B1.11:
  269. movl %edx, %edi
  270. xorl %ecx, %ecx
  271. subl %ecx, %edi
  272. jl ..B1.13
  273. ..B1.12:
  274. movl 32(%esp), %edx
  275. movl $-1, %eax
  276. ..B1.13:
  277. movl 72(%esp), %ecx
  278. xorl %edi, %edi
  279. negl %ecx
  280. incl %ecx
  281. movl %edi, 48(%esp)
  282. movl %ecx, 52(%esp)
  283. movl %eax, 56(%esp)
  284. movl %edx, 60(%esp)
  285. movl %edi, 64(%esp)
  286. movl %edi, 68(%esp)
  287. addl $12, %esp
  288. lea 100(%esp), %eax
  289. lea 36(%esp), %edx
  290. pushl %eax
  291. pushl 36(%esp)
  292. pushl %edx
  293. call __dpml_multiply__
  294. ..B1.14:
  295. addl $12, %esp
  296. pushl %esi
  297. lea 104(%esp), %eax
  298. pushl %eax
  299. lea 44(%esp), %edx
  300. pushl %edx
  301. call __dpml_multiply__
  302. ..B1.15:
  303. addl $20, %esp
  304. lea 160+__sqrt_x_table@GOTOFF(%ebx), %eax
  305. pushl %esi
  306. pushl $0
  307. pushl $9
  308. pushl %esi
  309. pushl %eax
  310. call __dpml_addsub__
  311. ..B1.16:
  312. movl 12(%ebp), %edx
  313. andl $1, %edx
  314. orl %edi, %edx
  315. je ..B1.18
  316. ..B1.17:
  317. lea 112(%esp), %eax
  318. jmp ..B1.19
  319. ..B1.18:
  320. lea 48(%esp), %eax
  321. ..B1.19:
  322. addl $12, %esp
  323. pushl %esi
  324. pushl %eax
  325. pushl %esi
  326. call __dpml_multiply__
  327. ..B1.20:
  328. addl $4, %esp
  329. decl 4(%esi)
  330. lea 80(%esp), %eax
  331. pushl %eax
  332. call fesetenv@PLT
  333. ..B1.21:
  334. movl 12(%ebp), %edx
  335. xorl %eax, %eax
  336. andl $2, %edx
  337. orl %eax, %edx
  338. jne ..B1.26
  339. ..B1.23:
  340. movl 136(%esp), %edx
  341. xorl %esp, %edx
  342. cmpl %gs:20, %edx
  343. jne ..B1.25
  344. ..B1.24:
  345. xorl %edx, %edx
  346. addl $148, %esp
  347. popl %ebx
  348. popl %edi
  349. popl %esi
  350. movl %ebp, %esp
  351. popl %ebp
  352. ret
  353. ..B1.25:
  354. call __stack_chk_fail@PLT
  355. ..B1.26:
  356. addl $12, %esp
  357. pushl %eax
  358. pushl %eax
  359. pushl %esi
  360. call __dpml_ffs_and_shift__
  361. ..B1.27:
  362. movl 16(%esi), %edx
  363. xorl %ecx, %ecx
  364. movl 20(%esi), %eax
  365. movl %edx, 40(%esp)
  366. movl %eax, 36(%esp)
  367. lea 8(%edx), %edi
  368. andl $16368, %edi
  369. orl %ecx, %edi
  370. je ..B1.29
  371. ..B1.28:
  372. xorl %eax, %eax
  373. jmp ..B1.23
  374. ..B1.29:
  375. lea 48(%esp), %edi
  376. pushl %edi
  377. lea 116(%esp), %eax
  378. pushl %eax
  379. pushl %esi
  380. pushl %esi
  381. movl %edx, %edi
  382. andl $-32768, %edi
  383. movl %edi, -72(%eax)
  384. addl $16384, %edi
  385. movl -76(%eax), %edx
  386. adcl $0, %edx
  387. movl %edx, -80(%eax)
  388. movl %edi, 16(%esi)
  389. movl %edx, 20(%esi)
  390. call __dpml_extended_multiply__
  391. ..B1.30:
  392. addl $36, %esp
  393. lea 92(%esp), %eax
  394. pushl %eax
  395. pushl $0
  396. pushl $1
  397. pushl %eax
  398. pushl 40(%esp)
  399. call __dpml_addsub__
  400. ..B1.31:
  401. addl $20, %esp
  402. lea 92(%esp), %edx
  403. pushl %edx
  404. pushl $0
  405. pushl $1
  406. lea 40(%esp), %eax
  407. pushl %eax
  408. pushl %edx
  409. call __dpml_addsub__
  410. ..B1.32:
  411. movl 112(%esp), %eax
  412. testl %eax, %eax
  413. movl 32(%esp), %edx
  414. je ..L5
  415. movl 40(%esp), %edi
  416. ..L5:
  417. je ..L6
  418. movl 36(%esp), %edx
  419. ..L6:
  420. xorl %ecx, %ecx
  421. movl %edi, 16(%esi)
  422. movl 12(%ebp), %edi
  423. andl $4, %edi
  424. movl %edx, 20(%esi)
  425. orl %ecx, %edi
  426. je ..B1.28
  427. ..B1.33:
  428. movl 4(%esi), %edx
  429. testl %eax, %eax
  430. movl $0, %eax
  431. sete %al
  432. addl $-113, %edx
  433. subl %edx, 116(%esp)
  434. addl $20, %esp
  435. orl $8, %eax
  436. lea 92(%esp), %ecx
  437. pushl %ecx
  438. pushl $0
  439. pushl %eax
  440. pushl %esi
  441. pushl %ecx
  442. call __dpml_addsub__
  443. ..B1.34:
  444. movl $8192, %eax
  445. movl 128(%esp), %edx
  446. subl %eax, %edx
  447. orl 132(%esp), %edx
  448. jne ..B1.28
  449. ..B1.35:
  450. movl $1, %eax
  451. jmp ..B1.23
  452. .align 16,0x90
  453. .type __dpml_ux_sqrt_evaluation__,@function
  454. .size __dpml_ux_sqrt_evaluation__,.-__dpml_ux_sqrt_evaluation__
  455. .data
  456. # -- End __dpml_ux_sqrt_evaluation__
  457. .text
  458. # -- Begin __sqrtq
  459. .text
  460. .align 16,0x90
  461. .globl __sqrtq
  462. __sqrtq:
  463. # parameter 1: 24 + %ebp
  464. ..B2.1:
  465. ..L7:
  466. pushl %ebp
  467. movl %esp, %ebp
  468. andl $-16, %esp
  469. pushl %esi
  470. pushl %edi
  471. pushl %ebx
  472. subl $132, %esp
  473. xorl %esi, %esi
  474. movl %gs:20, %edx
  475. movl 8(%ebp), %edi
  476. xorl %esp, %edx
  477. movl %edx, 128(%esp)
  478. call ..L8
  479. ..L8:
  480. popl %ebx
  481. lea _GLOBAL_OFFSET_TABLE_+[. - ..L8](%ebx), %ebx
  482. movl $1, 40(%esp)
  483. movl %esi, 44(%esp)
  484. movl %esi, 32(%esp)
  485. lea __sqrt_x_table@GOTOFF(%ebx), %ecx
  486. movl %esi, 36(%esp)
  487. addl $24, %esp
  488. lea 8(%esp), %eax
  489. lea 60(%esp), %edx
  490. pushl %eax
  491. lea 92(%esp), %eax
  492. pushl %eax
  493. pushl %ecx
  494. pushl %edx
  495. pushl %esi
  496. lea 24(%ebp), %ecx
  497. pushl %ecx
  498. call __dpml_unpack_x_or_y__
  499. ..B2.2:
  500. subl %esi, %edx
  501. jl ..B2.8
  502. ..B2.3:
  503. movl $7, 4(%esp)
  504. lea 60(%esp), %edx
  505. movl $0, 8(%esp)
  506. lea 84(%esp), %eax
  507. call __dpml_ux_sqrt_evaluation__.
  508. ..B2.4:
  509. orl %edx, %eax
  510. jne ..B2.6
  511. ..B2.5:
  512. movl $1, %edx
  513. jmp ..B2.7
  514. ..B2.6:
  515. movl %esi, %edx
  516. ..B2.7:
  517. movl %edx, 40(%esp)
  518. movl %esi, 44(%esp)
  519. addl $28, %esp
  520. lea 4(%esp), %edx
  521. pushl %edx
  522. pushl %esi
  523. pushl %esi
  524. pushl %esi
  525. pushl %esi
  526. lea 104(%esp), %ecx
  527. pushl %ecx
  528. lea 56(%esp), %esi
  529. pushl %esi
  530. call __dpml_pack__
  531. ..B2.8:
  532. movl 112(%esp), %edx
  533. movl %edx, (%edi)
  534. movl 116(%esp), %ecx
  535. movl 120(%esp), %esi
  536. movl 124(%esp), %edx
  537. movl %ecx, 4(%edi)
  538. movl %esi, 8(%edi)
  539. movl %edx, 12(%edi)
  540. movl 128(%esp), %edx
  541. xorl %esp, %edx
  542. cmpl %gs:20, %edx
  543. jne ..B2.10
  544. ..B2.9:
  545. movl %edi, %eax
  546. addl $132, %esp
  547. popl %ebx
  548. popl %edi
  549. popl %esi
  550. movl %ebp, %esp
  551. popl %ebp
  552. ret $4
  553. ..B2.10:
  554. call __stack_chk_fail@PLT
  555. .align 16,0x90
  556. .type __sqrtq,@function
  557. .size __sqrtq,.-__sqrtq
  558. .data
  559. # -- End __sqrtq
  560. .text
  561. # -- Begin __rsqrtq
  562. .text
  563. .align 16,0x90
  564. .globl __rsqrtq
  565. __rsqrtq:
  566. # parameter 1: 24 + %ebp
  567. ..B3.1:
  568. ..L9:
  569. pushl %ebp
  570. movl %esp, %ebp
  571. andl $-16, %esp
  572. pushl %esi
  573. pushl %edi
  574. pushl %ebx
  575. subl $132, %esp
  576. xorl %esi, %esi
  577. movl %gs:20, %edx
  578. movl 8(%ebp), %edi
  579. xorl %esp, %edx
  580. movl %edx, 128(%esp)
  581. call ..L10
  582. ..L10:
  583. popl %ebx
  584. lea _GLOBAL_OFFSET_TABLE_+[. - ..L10](%ebx), %ebx
  585. movl $1, 40(%esp)
  586. movl %esi, 44(%esp)
  587. movl %esi, 32(%esp)
  588. lea 8+__sqrt_x_table@GOTOFF(%ebx), %ecx
  589. movl %esi, 36(%esp)
  590. addl $24, %esp
  591. lea 8(%esp), %eax
  592. lea 60(%esp), %edx
  593. pushl %eax
  594. lea 92(%esp), %eax
  595. pushl %eax
  596. pushl %ecx
  597. pushl %edx
  598. pushl %esi
  599. lea 24(%ebp), %ecx
  600. pushl %ecx
  601. call __dpml_unpack_x_or_y__
  602. ..B3.2:
  603. subl %esi, %edx
  604. jl ..B3.8
  605. ..B3.3:
  606. movl %esi, 4(%esp)
  607. lea 60(%esp), %edx
  608. movl %esi, 8(%esp)
  609. lea 84(%esp), %eax
  610. call __dpml_ux_sqrt_evaluation__.
  611. ..B3.4:
  612. orl %edx, %eax
  613. jne ..B3.6
  614. ..B3.5:
  615. movl $1, %edx
  616. jmp ..B3.7
  617. ..B3.6:
  618. movl %esi, %edx
  619. ..B3.7:
  620. movl %edx, 40(%esp)
  621. movl %esi, 44(%esp)
  622. addl $28, %esp
  623. lea 4(%esp), %edx
  624. pushl %edx
  625. pushl %esi
  626. pushl %esi
  627. pushl %esi
  628. pushl %esi
  629. lea 104(%esp), %ecx
  630. pushl %ecx
  631. lea 56(%esp), %esi
  632. pushl %esi
  633. call __dpml_pack__
  634. ..B3.8:
  635. movl 112(%esp), %edx
  636. movl %edx, (%edi)
  637. movl 116(%esp), %ecx
  638. movl 120(%esp), %esi
  639. movl 124(%esp), %edx
  640. movl %ecx, 4(%edi)
  641. movl %esi, 8(%edi)
  642. movl %edx, 12(%edi)
  643. movl 128(%esp), %edx
  644. xorl %esp, %edx
  645. cmpl %gs:20, %edx
  646. jne ..B3.10
  647. ..B3.9:
  648. movl %edi, %eax
  649. addl $132, %esp
  650. popl %ebx
  651. popl %edi
  652. popl %esi
  653. movl %ebp, %esp
  654. popl %ebp
  655. ret $4
  656. ..B3.10:
  657. call __stack_chk_fail@PLT
  658. .align 16,0x90
  659. .type __rsqrtq,@function
  660. .size __rsqrtq,.-__rsqrtq
  661. .data
  662. # -- End __rsqrtq
  663. .text
  664. # -- Begin __dpml_ux_hypot__
  665. .text
  666. .align 16,0x90
  667. .globl __dpml_ux_hypot__
  668. __dpml_ux_hypot__:
  669. # parameter 1: 144 + %esp
  670. # parameter 2: 148 + %esp
  671. # parameter 3: 152 + %esp
  672. ..B4.1:
  673. ..L11:
  674. pushl %esi
  675. pushl %edi
  676. pushl %ebx
  677. pushl %ebp
  678. subl $124, %esp
  679. movl %gs:20, %eax
  680. xorl %esp, %eax
  681. movl 144(%esp), %edx
  682. movl %eax, 112(%esp)
  683. addl $12, %esp
  684. lea 28(%esp), %esi
  685. pushl %esi
  686. pushl %edx
  687. pushl %edx
  688. call __dpml_multiply__
  689. ..B4.2:
  690. addl $12, %esp
  691. movl 136(%esp), %eax
  692. lea 52(%esp), %ebx
  693. pushl %ebx
  694. pushl %eax
  695. pushl %eax
  696. call __dpml_multiply__
  697. ..B4.3:
  698. addl $20, %esp
  699. xorl %ebp, %ebp
  700. lea 68(%esp), %edi
  701. pushl %edi
  702. pushl %ebp
  703. pushl %ebp
  704. pushl %ebx
  705. pushl %esi
  706. call __dpml_addsub__
  707. ..B4.4:
  708. addl $12, %esp
  709. pushl %ebp
  710. pushl %ebp
  711. pushl %edi
  712. call __dpml_ffs_and_shift__
  713. ..B4.5:
  714. movl %edi, %eax
  715. movl $7, 4(%esp)
  716. movl 152(%esp), %edx
  717. movl $0, 8(%esp)
  718. call __dpml_ux_sqrt_evaluation__..0
  719. ..B4.6:
  720. movl %eax, %ecx
  721. orl %edx, %ecx
  722. je ..B4.27
  723. ..B4.7:
  724. movl 44(%esp), %eax
  725. subl 68(%esp), %eax
  726. cltd
  727. movl %edx, %edi
  728. subl %ebp, %edi
  729. jge ..B4.9
  730. ..B4.8:
  731. movl %eax, %esi
  732. movl %ebp, %eax
  733. subl %esi, %eax
  734. movl %edx, %edi
  735. movl %ebp, %edx
  736. movl %ebx, %esi
  737. sbbl %edi, %edx
  738. ..B4.9:
  739. movl $128, %ebx
  740. movl %eax, %edi
  741. subl %ebx, %edi
  742. movl %edx, %ebx
  743. sbbl %ebp, %ebx
  744. jl ..B4.11
  745. ..B4.34:
  746. orl %ebx, %edi
  747. je ..B4.11
  748. ..B4.10:
  749. movl %ebp, %eax
  750. movl %eax, %edx
  751. jmp ..B4.27
  752. ..B4.11:
  753. movl $1, %ecx
  754. movl %ebp, %edi
  755. ..B4.12:
  756. movl 8(%esi,%ecx,8), %ebp
  757. movl 12(%esi,%ecx,8), %ebx
  758. movl %ebp, 36(%esp)
  759. orl %ebx, %ebp
  760. movl %ebx, 32(%esp)
  761. jne ..B4.31
  762. ..B4.13:
  763. movl $64, %ebx
  764. movl %eax, %ebp
  765. subl %ebx, %ebp
  766. movl $0, %ebx
  767. movl %edx, %ebp
  768. sbbl %ebx, %ebp
  769. jl ..B4.15
  770. ..B4.14:
  771. addl $-64, %eax
  772. adcl $-1, %edx
  773. addl $-1, %ecx
  774. adcl $-1, %edi
  775. movl %edi, %ebp
  776. subl %ebx, %ebp
  777. jge ..B4.12
  778. ..B4.15:
  779. movl 36(%esp), %esi
  780. xorl %ebp, %ebp
  781. ..B4.16:
  782. cmpl $31, %eax
  783. jbe ..B4.18
  784. ..B4.17:
  785. movl %eax, %ecx
  786. movl %ebp, %edx
  787. movl 32(%esp), %ebx
  788. shrl %cl, %ebx
  789. jmp ..B4.19
  790. ..B4.18:
  791. movl %eax, %ecx
  792. movl %esi, %ebx
  793. movl 32(%esp), %edx
  794. shrdl %cl, %edx, %ebx
  795. shrl %cl, %edx
  796. ..B4.19:
  797. cmpl $31, %eax
  798. jbe ..B4.21
  799. ..B4.20:
  800. movl %eax, %ecx
  801. movl %ebx, %edx
  802. shll %cl, %edx
  803. movl %ebp, %edi
  804. jmp ..B4.22
  805. ..B4.21:
  806. movl %eax, %ecx
  807. movl %ebx, %edi
  808. shldl %cl, %ebx, %edx
  809. shll %cl, %edi
  810. ..B4.22:
  811. movl 32(%esp), %eax
  812. subl %edi, %esi
  813. subl %edx, %eax
  814. orl %eax, %esi
  815. jne ..B4.24
  816. ..B4.23:
  817. movl $1, %eax
  818. jmp ..B4.25
  819. ..B4.24:
  820. movl %ebp, %eax
  821. ..B4.25:
  822. movl %ebp, %edx
  823. ..B4.27:
  824. movl 112(%esp), %ecx
  825. xorl %esp, %ecx
  826. cmpl %gs:20, %ecx
  827. jne ..B4.29
  828. ..B4.28:
  829. addl $124, %esp
  830. popl %ebp
  831. popl %ebx
  832. popl %edi
  833. popl %esi
  834. ret
  835. ..B4.29:
  836. call ..L12
  837. ..L12:
  838. popl %ebx
  839. lea _GLOBAL_OFFSET_TABLE_+[. - ..L12](%ebx), %ebx
  840. call __stack_chk_fail@PLT
  841. ..B4.31:
  842. xorl %ebp, %ebp
  843. movl %ebp, %eax
  844. xorl %edx, %edx
  845. jmp ..B4.27
  846. .align 16,0x90
  847. .type __dpml_ux_hypot__,@function
  848. .size __dpml_ux_hypot__,.-__dpml_ux_hypot__
  849. .data
  850. # -- End __dpml_ux_hypot__
  851. .text
  852. # -- Begin __dpml_ux_sqrt_evaluation__..0
  853. .text
  854. .align 16,0x90
  855. __dpml_ux_sqrt_evaluation__..0:
  856. # parameter 1: %eax
  857. # parameter 2: 12 + %ebp
  858. # parameter 3: %edx
  859. ..B5.1:
  860. ..L13:
  861. pushl %ebp
  862. movl %esp, %ebp
  863. andl $-16, %esp
  864. pushl %esi
  865. pushl %edi
  866. pushl %ebx
  867. subl $148, %esp
  868. movl %edx, 76(%esp)
  869. movl %eax, 72(%esp)
  870. movl %gs:20, %ecx
  871. xorl %esp, %ecx
  872. movl %ecx, 136(%esp)
  873. addl $4, %esp
  874. call ..L14
  875. ..L14:
  876. popl %ebx
  877. lea _GLOBAL_OFFSET_TABLE_+[. - ..L14](%ebx), %ebx
  878. lea 80(%esp), %eax
  879. pushl %eax
  880. call fegetenv@PLT
  881. ..B5.2:
  882. movl 72(%esp), %esi
  883. movl %ebx, 36(%esp)
  884. movl 8(%esi), %edi
  885. movl %edi, %edx
  886. movl 12(%esi), %eax
  887. movl %eax, %ecx
  888. shll $21, %ecx
  889. shrl $11, %edx
  890. orl %edx, %ecx
  891. movl 4(%esi), %edx
  892. movl 20(%esi), %ebx
  893. movl %edx, %esi
  894. andl $1, %esi
  895. movl %ebx, 40(%esp)
  896. movl %eax, %ebx
  897. shrl $11, %ebx
  898. addl %esi, %edx
  899. addl $1070596096, %ebx
  900. movl %ebx, 68(%esp)
  901. lea 8(%esi), %ebx
  902. movl %ebx, 32(%esp)
  903. negl %ebx
  904. movl %ecx, 64(%esp)
  905. movl %ebx, %ecx
  906. negl %ecx
  907. sarl $1, %edx
  908. addl $31, %ecx
  909. movl %edx, 44(%esp)
  910. movl %edi, %edx
  911. shrl %cl, %edx
  912. movl %ebx, %ecx
  913. movl %eax, 80(%esp)
  914. shrl $1, %edx
  915. shll %cl, %eax
  916. shll %cl, %edi
  917. orl %edx, %eax
  918. movl 40(%esp), %edx
  919. movl 36(%esp), %ebx
  920. ..B5.3:
  921. movl 32(%esp), %ecx
  922. shrl %cl, %edx
  923. ..B5.5:
  924. fldl 64(%esp)
  925. orl %edx, %edi
  926. movl %eax, %edx
  927. shll $21, %edx
  928. shrl $11, %edi
  929. shrl $11, %eax
  930. orl %edi, %edx
  931. movl %edx, 48(%esp)
  932. movl %eax, 52(%esp)
  933. fildll 48(%esp)
  934. fstpl 56(%esp)
  935. fldl 56(%esp)
  936. ..B5.6:
  937. movl 80(%esp), %eax
  938. shrl %cl, %eax
  939. ..B5.8:
  940. fmull 136+__sqrt_x_table@GOTOFF(%ebx)
  941. fld %st(1)
  942. fmul %st(2), %st
  943. movl 80(%esp), %ecx
  944. shrl $24, %ecx
  945. shll $7, %esi
  946. xorl %esi, %ecx
  947. shll $4, %ecx
  948. movl __sqrt_t_table@GOT(%ebx), %edx
  949. movl %eax, 48(%esp)
  950. fildl 48(%esp)
  951. fstpl 56(%esp)
  952. fldl 56(%esp)
  953. fmull 128+__sqrt_x_table@GOTOFF(%ebx)
  954. fstpl 56(%esp)
  955. fldl 56(%esp)
  956. fxch %st(2)
  957. fstpl 56(%esp)
  958. fldl 56(%esp)
  959. fld %st(0)
  960. fadd %st(3), %st
  961. fxch %st(2)
  962. fmuls (%edx,%ecx)
  963. flds 4(%edx,%ecx)
  964. fmulp %st, %st(5)
  965. fxch %st(4)
  966. faddl 8(%edx,%ecx)
  967. faddp %st, %st(4)
  968. fxch %st(3)
  969. fstpl 56(%esp)
  970. fldl 56(%esp)
  971. fmull 96+__sqrt_x_table@GOTOFF(%ebx)
  972. fstpl 56(%esp)
  973. fldl 56(%esp)
  974. fxch %st(1)
  975. fstpl 56(%esp)
  976. fldl 56(%esp)
  977. fld %st(0)
  978. fmul %st(2), %st
  979. fstps 48(%esp)
  980. flds 48(%esp)
  981. fxch %st(2)
  982. fstps 48(%esp)
  983. flds 48(%esp)
  984. fmul %st, %st(3)
  985. fxch %st(2)
  986. fsubr %st, %st(3)
  987. fxch %st(2)
  988. fmul %st, %st(4)
  989. fxch %st(4)
  990. faddp %st, %st(3)
  991. fxch %st(2)
  992. fmul %st(3), %st
  993. fld %st(3)
  994. fmulp %st, %st(2)
  995. fldl 152+__sqrt_x_table@GOTOFF(%ebx)
  996. fmulp %st, %st(3)
  997. fld %st(3)
  998. fmul %st(4), %st
  999. fmulp %st, %st(3)
  1000. fxch %st(1)
  1001. fsubrl 104+__sqrt_x_table@GOTOFF(%ebx)
  1002. fsubp %st, %st(1)
  1003. fstpl 56(%esp)
  1004. fldl 56(%esp)
  1005. fldl 112+__sqrt_x_table@GOTOFF(%ebx)
  1006. fmul %st(3), %st
  1007. fxch %st(2)
  1008. fsubrl 144+__sqrt_x_table@GOTOFF(%ebx)
  1009. fmulp %st, %st(3)
  1010. fmulp %st, %st(2)
  1011. fxch %st(1)
  1012. fstpl 56(%esp)
  1013. fldl 56(%esp)
  1014. flds .L_2il0floatpacket.20@GOTOFF(%ebx)
  1015. fld %st(0)
  1016. fsubr %st(3), %st
  1017. fxch %st(1)
  1018. fcomp %st(3)
  1019. fnstsw %ax
  1020. fxch %st(1)
  1021. fmull 120+__sqrt_x_table@GOTOFF(%ebx)
  1022. sahf
  1023. fxch %st(2)
  1024. jp ..L16
  1025. jbe ..L15
  1026. ..L16:
  1027. fst %st(1)
  1028. ..L15:
  1029. fstp %st(0)
  1030. fnstcw 32(%esp)
  1031. movzwl 32(%esp), %eax
  1032. orl $3072, %eax
  1033. movl %eax, 40(%esp)
  1034. fldcw 40(%esp)
  1035. fistpll 64(%esp)
  1036. fldcw 32(%esp)
  1037. movl 64(%esp), %edx
  1038. fnstcw 32(%esp)
  1039. movzwl 32(%esp), %eax
  1040. orl $3072, %eax
  1041. movl %eax, 40(%esp)
  1042. fldcw 40(%esp)
  1043. fistpll 64(%esp)
  1044. fldcw 32(%esp)
  1045. shll $7, %edx
  1046. movl 64(%esp), %ecx
  1047. movl %ecx, %esi
  1048. movl 68(%esp), %edi
  1049. movl %edi, %eax
  1050. shll $20, %eax
  1051. shrl $12, %esi
  1052. shrl $11, %ecx
  1053. orl %esi, %eax
  1054. sarl $12, %edi
  1055. andl $1, %ecx
  1056. addl %edi, %edx
  1057. addl %ecx, %eax
  1058. adcl $0, %edx
  1059. xorl %esi, %esi
  1060. movl %edx, %ecx
  1061. andl $1073741824, %ecx
  1062. orl %esi, %ecx
  1063. je ..B5.10
  1064. ..B5.9:
  1065. movl $2147483647, %edi
  1066. jmp ..B5.11
  1067. ..B5.10:
  1068. movl $-1, %edi
  1069. ..B5.11:
  1070. movl %edx, %esi
  1071. xorl %ecx, %ecx
  1072. subl %ecx, %esi
  1073. jl ..B5.13
  1074. ..B5.12:
  1075. movl $-1, %eax
  1076. movl %edi, %edx
  1077. ..B5.13:
  1078. movl 44(%esp), %esi
  1079. xorl %ecx, %ecx
  1080. negl %esi
  1081. incl %esi
  1082. movl %ecx, 48(%esp)
  1083. movl %esi, 52(%esp)
  1084. movl %eax, 56(%esp)
  1085. movl %edx, 60(%esp)
  1086. movl %ecx, 64(%esp)
  1087. movl %ecx, 68(%esp)
  1088. addl $12, %esp
  1089. lea 100(%esp), %esi
  1090. lea 36(%esp), %eax
  1091. pushl %esi
  1092. pushl 64(%esp)
  1093. pushl %eax
  1094. call __dpml_multiply__
  1095. ..B5.14:
  1096. addl $12, %esp
  1097. pushl 64(%esp)
  1098. pushl %esi
  1099. lea 44(%esp), %eax
  1100. pushl %eax
  1101. call __dpml_multiply__
  1102. ..B5.15:
  1103. addl $20, %esp
  1104. lea 160+__sqrt_x_table@GOTOFF(%ebx), %edx
  1105. movl 56(%esp), %eax
  1106. pushl %eax
  1107. pushl $0
  1108. pushl $9
  1109. pushl %eax
  1110. pushl %edx
  1111. call __dpml_addsub__
  1112. ..B5.16:
  1113. addl $12, %esp
  1114. movl 64(%esp), %eax
  1115. pushl %eax
  1116. pushl %esi
  1117. pushl %eax
  1118. call __dpml_multiply__
  1119. ..B5.17:
  1120. addl $4, %esp
  1121. lea 80(%esp), %eax
  1122. pushl %eax
  1123. movl -8(%eax), %edx
  1124. decl 4(%edx)
  1125. call fesetenv@PLT
  1126. ..B5.18:
  1127. addl $12, %esp
  1128. xorl %ecx, %ecx
  1129. pushl %ecx
  1130. pushl %ecx
  1131. pushl 72(%esp)
  1132. call __dpml_ffs_and_shift__
  1133. ..B5.19:
  1134. movl 76(%esp), %eax
  1135. xorl %edi, %edi
  1136. movl 16(%eax), %ecx
  1137. movl 20(%eax), %edx
  1138. movl %ecx, 44(%esp)
  1139. movl %edx, 40(%esp)
  1140. lea 8(%ecx), %eax
  1141. andl $16368, %eax
  1142. orl %edi, %eax
  1143. jne ..B5.32
  1144. ..B5.21:
  1145. lea 48(%esp), %eax
  1146. pushl %eax
  1147. pushl %esi
  1148. movl 28(%eax), %edi
  1149. pushl %edi
  1150. pushl %edi
  1151. movl %ecx, %edx
  1152. andl $-32768, %edx
  1153. movl %edx, -4(%eax)
  1154. addl $16384, %edx
  1155. movl -8(%eax), %ecx
  1156. adcl $0, %ecx
  1157. movl %edx, -12(%eax)
  1158. movl %ecx, -16(%eax)
  1159. movl %edx, 16(%edi)
  1160. movl %ecx, 20(%edi)
  1161. call __dpml_extended_multiply__
  1162. ..B5.22:
  1163. addl $36, %esp
  1164. pushl %esi
  1165. pushl $0
  1166. pushl $1
  1167. pushl %esi
  1168. pushl 68(%esp)
  1169. call __dpml_addsub__
  1170. ..B5.23:
  1171. addl $20, %esp
  1172. pushl %esi
  1173. pushl $0
  1174. pushl $1
  1175. lea 40(%esp), %eax
  1176. pushl %eax
  1177. pushl %esi
  1178. call __dpml_addsub__
  1179. ..B5.24:
  1180. movl 112(%esp), %eax
  1181. testl %eax, %eax
  1182. jne ..B5.26
  1183. ..B5.25:
  1184. movl %edi, %ecx
  1185. movl 36(%esp), %eax
  1186. movl 32(%esp), %edx
  1187. movl 4(%ecx), %edi
  1188. addl $-113, %edi
  1189. movl %eax, 16(%ecx)
  1190. movl %edx, 20(%ecx)
  1191. subl %edi, 116(%esp)
  1192. jmp ..B5.27
  1193. ..B5.26:
  1194. movl 44(%esp), %edx
  1195. movl 40(%esp), %ecx
  1196. movl %edx, 16(%edi)
  1197. movl 4(%edi), %edx
  1198. addl $-113, %edx
  1199. subl %edx, 116(%esp)
  1200. movl %ecx, 20(%edi)
  1201. testl %eax, %eax
  1202. jne ..B5.28
  1203. ..B5.27:
  1204. movl $1, %eax
  1205. jmp ..B5.29
  1206. ..B5.28:
  1207. xorl %eax, %eax
  1208. ..B5.29:
  1209. addl $20, %esp
  1210. orl $8, %eax
  1211. pushl %esi
  1212. pushl $0
  1213. pushl %eax
  1214. pushl 68(%esp)
  1215. pushl %esi
  1216. call __dpml_addsub__
  1217. ..B5.30:
  1218. movl $8192, %eax
  1219. movl 128(%esp), %edx
  1220. subl %eax, %edx
  1221. orl 132(%esp), %edx
  1222. jne ..B5.32
  1223. ..B5.31:
  1224. movl $1, %eax
  1225. jmp ..B5.34
  1226. ..B5.32:
  1227. xorl %eax, %eax
  1228. ..B5.34:
  1229. movl 136(%esp), %edx
  1230. xorl %esp, %edx
  1231. cmpl %gs:20, %edx
  1232. jne ..B5.36
  1233. ..B5.35:
  1234. xorl %edx, %edx
  1235. addl $148, %esp
  1236. popl %ebx
  1237. popl %edi
  1238. popl %esi
  1239. movl %ebp, %esp
  1240. popl %ebp
  1241. ret
  1242. ..B5.36:
  1243. call __stack_chk_fail@PLT
  1244. .align 16,0x90
  1245. .type __dpml_ux_sqrt_evaluation__..0,@function
  1246. .size __dpml_ux_sqrt_evaluation__..0,.-__dpml_ux_sqrt_evaluation__..0
  1247. .data
  1248. # -- End __dpml_ux_sqrt_evaluation__..0
  1249. .section .rodata, "a"
  1250. .align 4
  1251. .align 4
  1252. .L_2il0floatpacket.20:
  1253. .long 0x5f000000
  1254. .type .L_2il0floatpacket.20,@object
  1255. .size .L_2il0floatpacket.20,4
  1256. .align 4
  1257. __sqrt_x_table:
  1258. .long 1088750600
  1259. .long 605086734
  1260. .long 1088766984
  1261. .long 519758862
  1262. .long 112
  1263. .long 0
  1264. .long 113
  1265. .long 0
  1266. .long 114
  1267. .long 0
  1268. .long 0
  1269. .long 0
  1270. .long 0
  1271. .long 268435456
  1272. .long 858997845
  1273. .long 34
  1274. .long 1636176969
  1275. .long 409044504
  1276. .long 1099306057
  1277. .long 404751376
  1278. .long 545392672
  1279. .long 404783624
  1280. .long 142938632
  1281. .long 302522498
  1282. .long 1719614413
  1283. .long 1073127582
  1284. .long 0
  1285. .long 1072693248
  1286. .long 0
  1287. .long 1097859072
  1288. .long 0
  1289. .long 1151336448
  1290. .long 0
  1291. .long 1047527424
  1292. .long 0
  1293. .long 991952896
  1294. .long 0
  1295. .long 1072431104
  1296. .long 0
  1297. .long 1071120384
  1298. .long 0
  1299. .long 2
  1300. .long 0
  1301. .long 3221225472
  1302. .long 0
  1303. .long 0
  1304. .long 0
  1305. .long 0
  1306. .type __sqrt_x_table,@object
  1307. .size __sqrt_x_table,192
  1308. .data
  1309. .hidden __dpml_extended_multiply__
  1310. .hidden __dpml_multiply__
  1311. .hidden __dpml_ffs_and_shift__
  1312. .hidden __dpml_addsub__
  1313. .hidden __dpml_pack__
  1314. .hidden __dpml_unpack_x_or_y__
  1315. .section .note.GNU-stack, ""
  1316. # End