program.inc 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. ; IMULH_R r1, r0
  2. mov rax, r9
  3. mul r8
  4. mov r9, rdx
  5. ; IMULH_R r4, r5
  6. mov rax, r12
  7. mul r13
  8. mov r12, rdx
  9. ; FMUL_R e0, a1
  10. mulpd xmm4, xmm9
  11. ; IMUL_9C r6, 933674225
  12. lea r14, [r14+r14*8+933674225]
  13. ; IROR_R r7, r6
  14. mov ecx, r14d
  15. ror r15, cl
  16. ; FSQRT_R e1
  17. sqrtpd xmm5, xmm5
  18. ; IADD_R r1, r0
  19. add r9, r8
  20. ; FSCAL_R f1
  21. xorps xmm1, xmm15
  22. ; IMUL_R r6, r5
  23. imul r14, r13
  24. ; FSCAL_R f3
  25. xorps xmm3, xmm15
  26. ; IADD_M r5, L1[r0]
  27. mov eax, r8d
  28. and eax, 16376
  29. add r13, qword ptr [rsi+rax]
  30. ; IMUL_RCP r0, 3332750793
  31. mov rax, 11886301652177618669
  32. imul r8, rax
  33. ; ISTORE L1[r3], r0
  34. mov eax, r11d
  35. and eax, 16376
  36. mov qword ptr [rsi+rax], r8
  37. ; FSUB_R f3, a0
  38. subpd xmm3, xmm8
  39. ; ISUB_R r1, r3
  40. sub r9, r11
  41. ; ISMULH_R r4, r1
  42. mov rax, r12
  43. imul r9
  44. mov r12, rdx
  45. ; IADD_RC r3, r0, 1262539428
  46. lea r11, [r11+r8+1262539428]
  47. ; FSWAP_R e1
  48. shufpd xmm5, xmm5, 1
  49. ; FMUL_R e1, a3
  50. mulpd xmm5, xmm11
  51. ; FMUL_R e3, a3
  52. mulpd xmm7, xmm11
  53. ; ISWAP_R r0, r2
  54. xchg r8, r10
  55. ; COND_R r5, of(r4, 137305269)
  56. xor ecx, ecx
  57. cmp r12d, 137305269
  58. seto cl
  59. add r13, rcx
  60. ; IMUL_R r6, r4
  61. imul r14, r12
  62. ; FMUL_R e3, a0
  63. mulpd xmm7, xmm8
  64. ; FSCAL_R f0
  65. xorps xmm0, xmm15
  66. ; FADD_R f1, a0
  67. addpd xmm1, xmm8
  68. ; IADD_R r6, r3
  69. add r14, r11
  70. ; ISMULH_M r1, L3[777112]
  71. mov rax, r9
  72. imul qword ptr [rsi+777112]
  73. mov r9, rdx
  74. ; FADD_R f1, a1
  75. addpd xmm1, xmm9
  76. ; FSUB_M f2, L2[r3]
  77. mov eax, r11d
  78. and eax, 262136
  79. cvtdq2pd xmm12, qword ptr [rsi+rax]
  80. subpd xmm2, xmm12
  81. ; IMUL_R r5, r7
  82. imul r13, r15
  83. ; ISUB_M r1, L1[r3]
  84. mov eax, r11d
  85. and eax, 16376
  86. sub r9, qword ptr [rsi+rax]
  87. ; IXOR_M r1, L1[r6]
  88. mov eax, r14d
  89. and eax, 16376
  90. xor r9, qword ptr [rsi+rax]
  91. ; COND_R r2, ns(r3, 1727033430)
  92. xor ecx, ecx
  93. cmp r11d, 1727033430
  94. setns cl
  95. add r10, rcx
  96. ; FADD_R f3, a1
  97. addpd xmm3, xmm9
  98. ; FADD_R f2, a2
  99. addpd xmm2, xmm10
  100. ; IADD_R r5, -1048707993
  101. add r13, -1048707993
  102. ; COND_R r2, ge(r5, -1016934677)
  103. xor ecx, ecx
  104. cmp r13d, -1016934677
  105. setge cl
  106. add r10, rcx
  107. ; FSUB_R f2, a3
  108. subpd xmm2, xmm11
  109. ; ISUB_M r1, L2[r4]
  110. mov eax, r12d
  111. and eax, 262136
  112. sub r9, qword ptr [rsi+rax]
  113. ; IMUL_R r5, r3
  114. imul r13, r11
  115. ; FSUB_R f1, a3
  116. subpd xmm1, xmm11
  117. ; IROR_R r1, r3
  118. mov ecx, r11d
  119. ror r9, cl
  120. ; FADD_R f3, a2
  121. addpd xmm3, xmm10
  122. ; ISUB_R r0, -28376526
  123. sub r8, -28376526
  124. ; IROR_R r6, r0
  125. mov ecx, r8d
  126. ror r14, cl
  127. ; FADD_R f1, a0
  128. addpd xmm1, xmm8
  129. ; FMUL_R e1, a0
  130. mulpd xmm5, xmm8
  131. ; IXOR_R r2, r4
  132. xor r10, r12
  133. ; FSUB_M f1, L1[r2]
  134. mov eax, r10d
  135. and eax, 16376
  136. cvtdq2pd xmm12, qword ptr [rsi+rax]
  137. subpd xmm1, xmm12
  138. ; FSWAP_R f3
  139. shufpd xmm3, xmm3, 1
  140. ; FSUB_R f3, a0
  141. subpd xmm3, xmm8
  142. ; ISUB_R r7, r6
  143. sub r15, r14
  144. ; FADD_R f3, a1
  145. addpd xmm3, xmm9
  146. ; ISUB_R r1, r7
  147. sub r9, r15
  148. ; IADD_M r5, L2[r7]
  149. mov eax, r15d
  150. and eax, 262136
  151. add r13, qword ptr [rsi+rax]
  152. ; IADD_RC r1, r3, 145589392
  153. lea r9, [r9+r11+145589392]
  154. ; FADD_R f2, a1
  155. addpd xmm2, xmm9
  156. ; FSUB_R f1, a1
  157. subpd xmm1, xmm9
  158. ; FADD_M f0, L1[r3]
  159. mov eax, r11d
  160. and eax, 16376
  161. cvtdq2pd xmm12, qword ptr [rsi+rax]
  162. addpd xmm0, xmm12
  163. ; FADD_R f3, a1
  164. addpd xmm3, xmm9
  165. ; FSUB_R f0, a3
  166. subpd xmm0, xmm11
  167. ; FMUL_R e2, a2
  168. mulpd xmm6, xmm10
  169. ; FADD_R f2, a1
  170. addpd xmm2, xmm9
  171. ; IXOR_R r7, r4
  172. xor r15, r12
  173. ; FSUB_R f1, a3
  174. subpd xmm1, xmm11
  175. ; IMUL_RCP r0, 3339947118
  176. mov rax, 11860691159940745144
  177. imul r8, rax
  178. ; FSCAL_R f2
  179. xorps xmm2, xmm15
  180. ; IMUL_9C r0, 850304074
  181. lea r8, [r8+r8*8+850304074]
  182. ; IADD_R r2, r4
  183. add r10, r12
  184. ; IADD_R r0, -1929760745
  185. add r8, -1929760745
  186. ; ISTORE L2[r4], r7
  187. mov eax, r12d
  188. and eax, 262136
  189. mov qword ptr [rsi+rax], r15
  190. ; IROR_R r2, r7
  191. mov ecx, r15d
  192. ror r10, cl
  193. ; FMUL_R e1, a1
  194. mulpd xmm5, xmm9
  195. ; FSQRT_R e3
  196. sqrtpd xmm7, xmm7
  197. ; IXOR_R r0, -1150923249
  198. xor r8, -1150923249
  199. ; IMUL_9C r7, 586146619
  200. lea r15, [r15+r15*8+586146619]
  201. ; FSWAP_R f2
  202. shufpd xmm2, xmm2, 1
  203. ; FSUB_M f3, L1[r6]
  204. mov eax, r14d
  205. and eax, 16376
  206. cvtdq2pd xmm12, qword ptr [rsi+rax]
  207. subpd xmm3, xmm12
  208. ; IXOR_R r0, 292938237
  209. xor r8, 292938237
  210. ; COND_R r6, no(r6, -2142285576)
  211. xor ecx, ecx
  212. cmp r14d, -2142285576
  213. setno cl
  214. add r14, rcx
  215. ; IMUL_RCP r3, 670137279
  216. mov rax, 14778345608621248183
  217. imul r11, rax
  218. ; ISTORE L1[r1], r5
  219. mov eax, r9d
  220. and eax, 16376
  221. mov qword ptr [rsi+rax], r13
  222. ; COND_R r3, sg(r1, 1638220289)
  223. xor ecx, ecx
  224. cmp r9d, 1638220289
  225. sets cl
  226. add r11, rcx
  227. ; IXOR_R r4, r2
  228. xor r12, r10
  229. ; COND_R r2, be(r2, 1131588253)
  230. xor ecx, ecx
  231. cmp r10d, 1131588253
  232. setbe cl
  233. add r10, rcx
  234. ; IMULH_R r3, r1
  235. mov rax, r11
  236. mul r9
  237. mov r11, rdx
  238. ; COND_R r3, sg(r6, 1528901692)
  239. xor ecx, ecx
  240. cmp r14d, 1528901692
  241. sets cl
  242. add r11, rcx
  243. ; IMUL_M r6, L2[r4]
  244. mov eax, r12d
  245. and eax, 262136
  246. imul r14, qword ptr [rsi+rax]
  247. ; ISMULH_M r1, L1[r2]
  248. mov ecx, r10d
  249. and ecx, 16376
  250. mov rax, r9
  251. imul qword ptr [rsi+rcx]
  252. mov r9, rdx
  253. ; ISUB_M r5, L1[r4]
  254. mov eax, r12d
  255. and eax, 16376
  256. sub r13, qword ptr [rsi+rax]
  257. ; IMUL_RCP r1, 1612208358
  258. mov rax, 12285658072842024305
  259. imul r9, rax
  260. ; COND_R r2, lt(r6, -1712049035)
  261. xor ecx, ecx
  262. cmp r14d, -1712049035
  263. setl cl
  264. add r10, rcx
  265. ; IMUL_RCP r2, 2888266520
  266. mov rax, 13715521397634789187
  267. imul r10, rax
  268. ; IADD_M r1, L2[r6]
  269. mov eax, r14d
  270. and eax, 262136
  271. add r9, qword ptr [rsi+rax]
  272. ; FMUL_R e0, a3
  273. mulpd xmm4, xmm11
  274. ; ISTORE L1[r7], r1
  275. mov eax, r15d
  276. and eax, 16376
  277. mov qword ptr [rsi+rax], r9
  278. ; ISTORE L1[r0], r3
  279. mov eax, r8d
  280. and eax, 16376
  281. mov qword ptr [rsi+rax], r11
  282. ; FSUB_R f0, a1
  283. subpd xmm0, xmm9
  284. ; FADD_R f2, a2
  285. addpd xmm2, xmm10
  286. ; FMUL_R e0, a1
  287. mulpd xmm4, xmm9
  288. ; FMUL_R e2, a0
  289. mulpd xmm6, xmm8
  290. ; FMUL_R e3, a2
  291. mulpd xmm7, xmm10
  292. ; IROR_R r5, 21
  293. ror r13, 21
  294. ; FSQRT_R e1
  295. sqrtpd xmm5, xmm5
  296. ; ISTORE L1[r3], r1
  297. mov eax, r11d
  298. and eax, 16376
  299. mov qword ptr [rsi+rax], r9
  300. ; IMUL_9C r2, -290275273
  301. lea r10, [r10+r10*8-290275273]
  302. ; ISUB_M r7, L1[r3]
  303. mov eax, r11d
  304. and eax, 16376
  305. sub r15, qword ptr [rsi+rax]
  306. ; IMUL_R r6, 1301522739
  307. imul r14, 1301522739
  308. ; ISWAP_R r2, r4
  309. xchg r10, r12
  310. ; FMUL_R e3, a2
  311. mulpd xmm7, xmm10
  312. ; IMUL_9C r2, 877307769
  313. lea r10, [r10+r10*8+877307769]
  314. ; IMUL_R r0, r3
  315. imul r8, r11
  316. ; IMUL_9C r0, 1293318220
  317. lea r8, [r8+r8*8+1293318220]
  318. ; FSQRT_R e0
  319. sqrtpd xmm4, xmm4
  320. ; ISTORE L1[r0], r2
  321. mov eax, r8d
  322. and eax, 16376
  323. mov qword ptr [rsi+rax], r10
  324. ; IMUL_RCP r5, 2071364883
  325. mov rax, 9562313618003962461
  326. imul r13, rax
  327. ; FMUL_R e1, a2
  328. mulpd xmm5, xmm10
  329. ; FSUB_R f1, a3
  330. subpd xmm1, xmm11
  331. ; FSUB_R f0, a1
  332. subpd xmm0, xmm9
  333. ; IMULH_R r6, r1
  334. mov rax, r14
  335. mul r9
  336. mov r14, rdx
  337. ; ISTORE L1[r6], r5
  338. mov eax, r14d
  339. and eax, 16376
  340. mov qword ptr [rsi+rax], r13
  341. ; ISTORE L2[r1], r2
  342. mov eax, r9d
  343. and eax, 262136
  344. mov qword ptr [rsi+rax], r10
  345. ; ISUB_M r1, L2[r4]
  346. mov eax, r12d
  347. and eax, 262136
  348. sub r9, qword ptr [rsi+rax]
  349. ; IADD_M r7, L1[r6]
  350. mov eax, r14d
  351. and eax, 16376
  352. add r15, qword ptr [rsi+rax]
  353. ; IADD_RC r2, r0, -1705364403
  354. lea r10, [r10+r8-1705364403]
  355. ; ISTORE L1[r6], r5
  356. mov eax, r14d
  357. and eax, 16376
  358. mov qword ptr [rsi+rax], r13
  359. ; FSUB_M f0, L1[r5]
  360. mov eax, r13d
  361. and eax, 16376
  362. cvtdq2pd xmm12, qword ptr [rsi+rax]
  363. subpd xmm0, xmm12
  364. ; IXOR_R r1, r3
  365. xor r9, r11
  366. ; FADD_R f2, a0
  367. addpd xmm2, xmm8
  368. ; FSCAL_R f2
  369. xorps xmm2, xmm15
  370. ; ISUB_R r6, -789651909
  371. sub r14, -789651909
  372. ; COND_R r4, sg(r1, -1404926795)
  373. xor ecx, ecx
  374. cmp r9d, -1404926795
  375. sets cl
  376. add r12, rcx
  377. ; FSCAL_R f2
  378. xorps xmm2, xmm15
  379. ; ISUB_R r6, r7
  380. sub r14, r15
  381. ; IXOR_R r5, r2
  382. xor r13, r10
  383. ; IROR_R r6, r5
  384. mov ecx, r13d
  385. ror r14, cl
  386. ; FSUB_R f1, a2
  387. subpd xmm1, xmm10
  388. ; IMUL_M r4, L1[r5]
  389. mov eax, r13d
  390. and eax, 16376
  391. imul r12, qword ptr [rsi+rax]
  392. ; FSUB_R f3, a0
  393. subpd xmm3, xmm8
  394. ; FSWAP_R e1
  395. shufpd xmm5, xmm5, 1
  396. ; IADD_RC r6, r5, 1744830258
  397. lea r14, [r14+r13+1744830258]
  398. ; FSUB_R f3, a0
  399. subpd xmm3, xmm8
  400. ; ISUB_R r7, r0
  401. sub r15, r8
  402. ; FSUB_R f1, a3
  403. subpd xmm1, xmm11
  404. ; IMUL_9C r4, 241775739
  405. lea r12, [r12+r12*8+241775739]
  406. ; FADD_R f0, a0
  407. addpd xmm0, xmm8
  408. ; IMUL_R r4, r3
  409. imul r12, r11
  410. ; IMUL_RCP r4, 2389176791
  411. mov rax, 16580640414036304271
  412. imul r12, rax
  413. ; FSCAL_R f1
  414. xorps xmm1, xmm15
  415. ; FSUB_R f2, a1
  416. subpd xmm2, xmm9
  417. ; ISTORE L2[r2], r0
  418. mov eax, r10d
  419. and eax, 262136
  420. mov qword ptr [rsi+rax], r8
  421. ; IXOR_M r5, L1[r7]
  422. mov eax, r15d
  423. and eax, 16376
  424. xor r13, qword ptr [rsi+rax]
  425. ; IMULH_M r4, L1[r1]
  426. mov ecx, r9d
  427. and ecx, 16376
  428. mov rax, r12
  429. mul qword ptr [rsi+rcx]
  430. mov r12, rdx
  431. ; FMUL_R e2, a1
  432. mulpd xmm6, xmm9
  433. ; IXOR_R r0, r5
  434. xor r8, r13
  435. ; IROR_R r0, r7
  436. mov ecx, r15d
  437. ror r8, cl
  438. ; IADD_RC r6, r5, 472588845
  439. lea r14, [r14+r13+472588845]
  440. ; FADD_R f0, a0
  441. addpd xmm0, xmm8
  442. ; FSCAL_R f0
  443. xorps xmm0, xmm15
  444. ; IROR_R r2, r1
  445. mov ecx, r9d
  446. ror r10, cl
  447. ; IADD_RC r2, r1, 1968510355
  448. lea r10, [r10+r9+1968510355]
  449. ; FMUL_R e0, a0
  450. mulpd xmm4, xmm8
  451. ; ISUB_R r7, r1
  452. sub r15, r9
  453. ; IADD_RC r4, r7, 1111936914
  454. lea r12, [r12+r15+1111936914]
  455. ; IADD_RC r7, r3, 373642756
  456. lea r15, [r15+r11+373642756]
  457. ; FSUB_R f0, a0
  458. subpd xmm0, xmm8
  459. ; IMUL_RCP r6, 3388328460
  460. mov rax, 11691334451422153092
  461. imul r14, rax
  462. ; FSWAP_R e1
  463. shufpd xmm5, xmm5, 1
  464. ; IADD_RC r7, r5, -644292398
  465. lea r15, [r15+r13-644292398]
  466. ; IMUL_9C r7, -1398596563
  467. lea r15, [r15+r15*8-1398596563]
  468. ; FADD_R f0, a3
  469. addpd xmm0, xmm11
  470. ; FDIV_M e1, L1[r5]
  471. mov eax, r13d
  472. and eax, 16376
  473. cvtdq2pd xmm12, qword ptr [rsi+rax]
  474. andps xmm12, xmm13
  475. orps xmm12, xmm14
  476. divpd xmm5, xmm12
  477. ; IXOR_M r2, L1[r5]
  478. mov eax, r13d
  479. and eax, 16376
  480. xor r10, qword ptr [rsi+rax]
  481. ; IADD_R r5, r6
  482. add r13, r14
  483. ; IROR_R r4, r0
  484. mov ecx, r8d
  485. ror r12, cl
  486. ; IXOR_R r0, r6
  487. xor r8, r14
  488. ; IMUL_RCP r1, 1035942442
  489. mov rax, 9559913671615977868
  490. imul r9, rax
  491. ; IMUL_9C r1, 105267179
  492. lea r9, [r9+r9*8+105267179]
  493. ; IMUL_M r1, L1[r2]
  494. mov eax, r10d
  495. and eax, 16376
  496. imul r9, qword ptr [rsi+rax]
  497. ; COND_R r6, be(r7, 1344676209)
  498. xor ecx, ecx
  499. cmp r15d, 1344676209
  500. setbe cl
  501. add r14, rcx
  502. ; IADD_R r6, r1
  503. add r14, r9
  504. ; IROR_R r5, r1
  505. mov ecx, r9d
  506. ror r13, cl
  507. ; ISMULH_R r0, r6
  508. mov rax, r8
  509. imul r14
  510. mov r8, rdx
  511. ; IXOR_R r6, r7
  512. xor r14, r15
  513. ; FSUB_R f1, a3
  514. subpd xmm1, xmm11
  515. ; IMUL_9C r1, 1991866007
  516. lea r9, [r9+r9*8+1991866007]
  517. ; IMUL_RCP r2, 4139294400
  518. mov rax, 9570249764581173254
  519. imul r10, rax
  520. ; FSWAP_R f0
  521. shufpd xmm0, xmm0, 1
  522. ; ISUB_R r5, r2
  523. sub r13, r10
  524. ; COND_R r6, lt(r1, -834783176)
  525. xor ecx, ecx
  526. cmp r9d, -834783176
  527. setl cl
  528. add r14, rcx
  529. ; ISTORE L2[r7], r3
  530. mov eax, r15d
  531. and eax, 262136
  532. mov qword ptr [rsi+rax], r11
  533. ; FADD_R f2, a2
  534. addpd xmm2, xmm10
  535. ; FSCAL_R f1
  536. xorps xmm1, xmm15
  537. ; IMUL_R r7, r4
  538. imul r15, r12
  539. ; IMUL_RCP r4, 3027698566
  540. mov rax, 13083892069700893994
  541. imul r12, rax
  542. ; IMULH_M r2, L1[r3]
  543. mov ecx, r11d
  544. and ecx, 16376
  545. mov rax, r10
  546. mul qword ptr [rsi+rcx]
  547. mov r10, rdx
  548. ; IADD_M r6, L1[r1]
  549. mov eax, r9d
  550. and eax, 16376
  551. add r14, qword ptr [rsi+rax]
  552. ; IMUL_M r3, L1[r1]
  553. mov eax, r9d
  554. and eax, 16376
  555. imul r11, qword ptr [rsi+rax]
  556. ; ISTORE L1[r7], r5
  557. mov eax, r15d
  558. and eax, 16376
  559. mov qword ptr [rsi+rax], r13
  560. ; IADD_RC r3, r1, -183791073
  561. lea r11, [r11+r9-183791073]
  562. ; IMUL_9C r6, 1353963989
  563. lea r14, [r14+r14*8+1353963989]
  564. ; ISUB_R r2, r3
  565. sub r10, r11
  566. ; IMUL_R r2, r1
  567. imul r10, r9
  568. ; IMULH_R r6, r4
  569. mov rax, r14
  570. mul r12
  571. mov r14, rdx
  572. ; ISMULH_R r6, r4
  573. mov rax, r14
  574. imul r12
  575. mov r14, rdx
  576. ; IADD_R r7, r4
  577. add r15, r12
  578. ; FMUL_R e3, a1
  579. mulpd xmm7, xmm9
  580. ; FADD_R f1, a2
  581. addpd xmm1, xmm10
  582. ; IADD_R r5, r6
  583. add r13, r14
  584. ; IADD_RC r4, r0, -1810659257
  585. lea r12, [r12+r8-1810659257]
  586. ; IROR_R r2, r5
  587. mov ecx, r13d
  588. ror r10, cl
  589. ; FADD_R f2, a2
  590. addpd xmm2, xmm10
  591. ; FSWAP_R e2
  592. shufpd xmm6, xmm6, 1
  593. ; FADD_M f0, L1[r2]
  594. mov eax, r10d
  595. and eax, 16376
  596. cvtdq2pd xmm12, qword ptr [rsi+rax]
  597. addpd xmm0, xmm12
  598. ; IADD_R r0, 52817665
  599. add r8, 52817665
  600. ; IMUL_RCP r6, 3388141601
  601. mov rax, 11691979238837063231
  602. imul r14, rax
  603. ; IMUL_RCP r3, 1356467790
  604. mov rax, 14601924774465956466
  605. imul r11, rax
  606. ; IADD_RC r7, r4, -2056421852
  607. lea r15, [r15+r12-2056421852]
  608. ; FSUB_M f1, L2[r4]
  609. mov eax, r12d
  610. and eax, 262136
  611. cvtdq2pd xmm12, qword ptr [rsi+rax]
  612. subpd xmm1, xmm12
  613. ; ISWAP_R r1, r5
  614. xchg r9, r13
  615. ; ISTORE L2[r3], r5
  616. mov eax, r11d
  617. and eax, 262136
  618. mov qword ptr [rsi+rax], r13
  619. ; FMUL_R e0, a3
  620. mulpd xmm4, xmm11
  621. ; IADD_RC r1, r4, -129008866
  622. lea r9, [r9+r12-129008866]
  623. ; COND_R r6, no(r4, 311828213)
  624. xor ecx, ecx
  625. cmp r12d, 311828213
  626. setno cl
  627. add r14, rcx
  628. ; FSWAP_R e2
  629. shufpd xmm6, xmm6, 1
  630. ; IADD_RC r2, r2, 498744396
  631. lea r10, [r10+r10+498744396]
  632. ; IADD_RC r2, r3, 1515945097
  633. lea r10, [r10+r11+1515945097]
  634. ; FMUL_R e0, a2
  635. mulpd xmm4, xmm10
  636. ; ISTORE L2[r5], r7
  637. mov eax, r13d
  638. and eax, 262136
  639. mov qword ptr [rsi+rax], r15
  640. ; IMUL_M r7, L2[r0]
  641. mov eax, r8d
  642. and eax, 262136
  643. imul r15, qword ptr [rsi+rax]
  644. ; IADD_R r0, r2
  645. add r8, r10
  646. ; IADD_RC r7, r3, 1081450346
  647. lea r15, [r15+r11+1081450346]
  648. ; FADD_R f1, a3
  649. addpd xmm1, xmm11
  650. ; FSCAL_R f3
  651. xorps xmm3, xmm15
  652. ; FADD_M f3, L2[r7]
  653. mov eax, r15d
  654. and eax, 262136
  655. cvtdq2pd xmm12, qword ptr [rsi+rax]
  656. addpd xmm3, xmm12
  657. ; FSUB_R f3, a0
  658. subpd xmm3, xmm8
  659. ; COND_M r2, of(L1[r5], -255033167)
  660. xor ecx, ecx
  661. mov eax, r13d
  662. and eax, 16376
  663. cmp dword ptr [rsi+rax], -255033167
  664. seto cl
  665. add r10, rcx
  666. ; FSUB_R f1, a1
  667. subpd xmm1, xmm9
  668. ; IADD_R r2, r5
  669. add r10, r13
  670. ; FSQRT_R e2
  671. sqrtpd xmm6, xmm6
  672. ; IMUL_9C r2, 1521722302
  673. lea r10, [r10+r10*8+1521722302]
  674. ; FADD_R f0, a3
  675. addpd xmm0, xmm11
  676. ; ISUB_R r0, r5
  677. sub r8, r13
  678. ; FADD_R f2, a0
  679. addpd xmm2, xmm8
  680. ; ISWAP_R r6, r0
  681. xchg r14, r8
  682. ; IADD_RC r1, r4, -693164762
  683. lea r9, [r9+r12-693164762]
  684. ; FDIV_M e0, L2[r2]
  685. mov eax, r10d
  686. and eax, 262136
  687. cvtdq2pd xmm12, qword ptr [rsi+rax]
  688. andps xmm12, xmm13
  689. orps xmm12, xmm14
  690. divpd xmm4, xmm12
  691. ; IMUL_9C r4, -1849458799
  692. lea r12, [r12+r12*8-1849458799]
  693. ; IADD_RC r1, r4, -651820510
  694. lea r9, [r9+r12-651820510]
  695. ; IMULH_R r6, r6
  696. mov rax, r14
  697. mul r14
  698. mov r14, rdx
  699. ; FSUB_M f3, L2[r0]
  700. mov eax, r8d
  701. and eax, 262136
  702. cvtdq2pd xmm12, qword ptr [rsi+rax]
  703. subpd xmm3, xmm12
  704. ; FSUB_R f0, a2
  705. subpd xmm0, xmm10
  706. ; FDIV_M e3, L1[r0]
  707. mov eax, r8d
  708. and eax, 16376
  709. cvtdq2pd xmm12, qword ptr [rsi+rax]
  710. andps xmm12, xmm13
  711. orps xmm12, xmm14
  712. divpd xmm7, xmm12
  713. ; IADD_M r3, L1[r7]
  714. mov eax, r15d
  715. and eax, 16376
  716. add r11, qword ptr [rsi+rax]
  717. ; IXOR_M r2, L2[r6]
  718. mov eax, r14d
  719. and eax, 262136
  720. xor r10, qword ptr [rsi+rax]