program.inc 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768
  1. ; IMUL_R r0, r7
  2. imul r8, r15
  3. ; ISMULH_R r2, r1
  4. mov rax, r10
  5. imul r9
  6. mov r10, rdx
  7. ; IMUL_R r2, r4
  8. imul r10, r12
  9. ; IADD_R r7, r0
  10. add r15, r8
  11. ; FPSQRT_R e0
  12. sqrtpd xmm4, xmm4
  13. ; IMUL_R r3, r6
  14. imul r11, r14
  15. ; FPMUL_R e3, a1
  16. mulpd xmm7, xmm9
  17. ; IMULH_M r6, L1[r3]
  18. mov ecx, r11d
  19. and ecx, 16376
  20. mov rax, r14
  21. mul qword ptr [rsi+rcx]
  22. mov r14, rdx
  23. ; IMUL_R r5, r1
  24. imul r13, r9
  25. ; FPADD_M f0, L2[r6]
  26. mov eax, r14d
  27. and eax, 262136
  28. cvtdq2pd xmm12, qword ptr [rsi+rax]
  29. addpd xmm0, xmm12
  30. ; IROR_R r4, r3
  31. mov ecx, r11d
  32. ror r12, cl
  33. ; IXOR_M r4, L3[984888]
  34. xor r12, qword ptr [rsi+984888]
  35. ; IROR_R r0, r3
  36. mov ecx, r11d
  37. ror r8, cl
  38. ; IROR_R r0, r4
  39. mov ecx, r12d
  40. ror r8, cl
  41. ; FPMUL_R e0, a1
  42. mulpd xmm4, xmm9
  43. ; IMUL_R r0, r2
  44. imul r8, r10
  45. ; ISUB_M r0, L1[r3]
  46. mov eax, r11d
  47. and eax, 16376
  48. sub r8, qword ptr [rsi+rax]
  49. ; FPSUB_R f3, a1
  50. subpd xmm3, xmm9
  51. ; ISWAP_R r7, r4
  52. xchg r15, r12
  53. ; IDIV_C r1, 3690475308
  54. mov rax, r9
  55. shr rax, 2
  56. mov rcx, 5367070356934653253
  57. mul rcx
  58. shr rdx, 28
  59. add r9, rdx
  60. ; IROL_R r4, r2
  61. mov ecx, r10d
  62. rol r12, cl
  63. ; IMUL_M r5, L1[r4]
  64. mov eax, r12d
  65. and eax, 16376
  66. imul r13, qword ptr [rsi+rax]
  67. ; IROL_R r4, r7
  68. mov ecx, r15d
  69. rol r12, cl
  70. ; ISUB_R r3, r1
  71. sub r11, r9
  72. ; IADD_R r7, r0
  73. add r15, r8
  74. ; IADD_M r1, L1[r3]
  75. mov eax, r11d
  76. and eax, 16376
  77. add r9, qword ptr [rsi+rax]
  78. ; FPMUL_R e2, a2
  79. mulpd xmm6, xmm10
  80. ; IADD_R r6, -1115286770
  81. add r14, -1115286770
  82. ; FPDIV_R e2, a3
  83. divpd xmm6, xmm11
  84. maxpd xmm6, xmm13
  85. ; FPADD_R f1, a2
  86. addpd xmm1, xmm10
  87. ; IXOR_R r3, r7
  88. xor r11, r15
  89. ; ISTORE L1[r4], r3
  90. mov eax, r12d
  91. and eax, 16376
  92. mov qword ptr [rsi+rax], r11
  93. ; IROR_R r3, r6
  94. mov ecx, r14d
  95. ror r11, cl
  96. ; ISMULH_R r0, r6
  97. mov rax, r8
  98. imul r14
  99. mov r8, rdx
  100. ; IROR_R r6, r5
  101. mov ecx, r13d
  102. ror r14, cl
  103. ; IMULH_M r6, L2[r0]
  104. mov ecx, r8d
  105. and ecx, 262136
  106. mov rax, r14
  107. mul qword ptr [rsi+rcx]
  108. mov r14, rdx
  109. ; ISUB_R r2, 1512125960
  110. sub r10, 1512125960
  111. ; IMUL_R r7, r6
  112. imul r15, r14
  113. ; IMULH_R r6, r7
  114. mov rax, r14
  115. mul r15
  116. mov r14, rdx
  117. ; ISUB_R r4, r1
  118. sub r12, r9
  119. ; FPMUL_R e3, a2
  120. mulpd xmm7, xmm10
  121. ; FPSQRT_R e1
  122. sqrtpd xmm5, xmm5
  123. ; IXOR_R r5, r2
  124. xor r13, r10
  125. ; FPADD_M f2, L1[r0]
  126. mov eax, r8d
  127. and eax, 16376
  128. cvtdq2pd xmm12, qword ptr [rsi+rax]
  129. addpd xmm2, xmm12
  130. ; IMULH_R r6, r1
  131. mov rax, r14
  132. mul r9
  133. mov r14, rdx
  134. ; ISUB_M r5, L1[r0]
  135. mov eax, r8d
  136. and eax, 16376
  137. sub r13, qword ptr [rsi+rax]
  138. ; FPMUL_R e2, a3
  139. mulpd xmm6, xmm11
  140. ; IMUL_R r4, r6
  141. imul r12, r14
  142. ; FPMUL_R e3, a2
  143. mulpd xmm7, xmm10
  144. ; ISUB_R r3, r2
  145. sub r11, r10
  146. ; FPMUL_R e3, a2
  147. mulpd xmm7, xmm10
  148. ; IROL_R r7, r0
  149. mov ecx, r8d
  150. rol r15, cl
  151. ; FPSUB_R f3, a2
  152. subpd xmm3, xmm10
  153. ; IROL_R r3, r7
  154. mov ecx, r15d
  155. rol r11, cl
  156. ; ISWAP_R r5, r7
  157. xchg r13, r15
  158. ; IDIV_C r5, 749951529
  159. mov rax, 13205547200481862341
  160. mul r13
  161. shr rdx, 29
  162. add r13, rdx
  163. ; FPADD_R f3, a0
  164. addpd xmm3, xmm8
  165. ; IMUL_M r0, L1[r4]
  166. mov eax, r12d
  167. and eax, 16376
  168. imul r8, qword ptr [rsi+rax]
  169. ; FPADD_R f1, a1
  170. addpd xmm1, xmm9
  171. ; IROR_R r2, 60
  172. ror r10, 60
  173. ; IROR_R r5, r4
  174. mov ecx, r12d
  175. ror r13, cl
  176. ; FPADD_R f2, a0
  177. addpd xmm2, xmm8
  178. ; IXOR_M r4, L1[r6]
  179. mov eax, r14d
  180. and eax, 16376
  181. xor r12, qword ptr [rsi+rax]
  182. ; IXOR_R r2, r6
  183. xor r10, r14
  184. ; FPADD_M f3, L1[r0]
  185. mov eax, r8d
  186. and eax, 16376
  187. cvtdq2pd xmm12, qword ptr [rsi+rax]
  188. addpd xmm3, xmm12
  189. ; ISUB_R r7, r6
  190. sub r15, r14
  191. ; IMUL_9C r2, -962375579
  192. lea r10, [r10+r10*8-962375579]
  193. ; FPSUB_R f3, a2
  194. subpd xmm3, xmm10
  195. ; FPSUB_R f3, a0
  196. subpd xmm3, xmm8
  197. ; IMUL_R r1, r5
  198. imul r9, r13
  199. ; IMUL_R r6, r4
  200. imul r14, r12
  201. ; ISWAP_R r0, r2
  202. xchg r8, r10
  203. ; ISUB_R r6, r5
  204. sub r14, r13
  205. ; FPSUB_R f2, a1
  206. subpd xmm2, xmm9
  207. ; ISDIV_C r6, 652931802
  208. mov rax, -3278972671018643631
  209. imul r14
  210. xor eax, eax
  211. add rdx, r14
  212. sar rdx, 29
  213. sets al
  214. add rdx, rax
  215. add r14, rdx
  216. ; IMUL_9C r5, -1142924545
  217. lea r13, [r13+r13*8-1142924545]
  218. ; ISUB_R r7, 1085161834
  219. sub r15, 1085161834
  220. ; IMUL_R r4, r6
  221. imul r12, r14
  222. ; FPMUL_M e1, L1[r4]
  223. mov eax, r12d
  224. and eax, 16376
  225. cvtdq2pd xmm12, qword ptr [rsi+rax]
  226. mulpd xmm5, xmm12
  227. maxpd xmm5, xmm13
  228. ; FPMUL_M e3, L2[r1]
  229. mov eax, r9d
  230. and eax, 262136
  231. cvtdq2pd xmm12, qword ptr [rsi+rax]
  232. mulpd xmm7, xmm12
  233. maxpd xmm7, xmm13
  234. ; COND_R r2, lt(r5, 1635027096)
  235. xor ecx, ecx
  236. cmp r13d, 1635027096
  237. setl cl
  238. add r10, rcx
  239. ; IMUL_R r5, -1219696062
  240. imul r13, -1219696062
  241. ; IXOR_R r5, r0
  242. xor r13, r8
  243. ; FPNEG_R f2
  244. xorps xmm2, xmm15
  245. ; FPADD_R f3, a2
  246. addpd xmm3, xmm10
  247. ; FPSUB_R f1, a3
  248. subpd xmm1, xmm11
  249. ; FPADD_R f1, a2
  250. addpd xmm1, xmm10
  251. ; FPDIV_R e1, a3
  252. divpd xmm5, xmm11
  253. maxpd xmm5, xmm13
  254. ; IXOR_M r6, L1[r0]
  255. mov eax, r8d
  256. and eax, 16376
  257. xor r14, qword ptr [rsi+rax]
  258. ; ISUB_R r7, r4
  259. sub r15, r12
  260. ; ISUB_M r6, L1[r1]
  261. mov eax, r9d
  262. and eax, 16376
  263. sub r14, qword ptr [rsi+rax]
  264. ; ISTORE L1[r5], r3
  265. mov eax, r13d
  266. and eax, 16376
  267. mov qword ptr [rsi+rax], r11
  268. ; IMUL_R r5, r1
  269. imul r13, r9
  270. ; IROR_R r3, r2
  271. mov ecx, r10d
  272. ror r11, cl
  273. ; IMUL_R r4, r7
  274. imul r12, r15
  275. ; ISDIV_C r6, -54134756
  276. mov rax, 7012869325244995177
  277. imul r14
  278. xor eax, eax
  279. sub rdx, r14
  280. sar rdx, 25
  281. sets al
  282. add rdx, rax
  283. add r14, rdx
  284. ; FPMUL_R e1, a2
  285. mulpd xmm5, xmm10
  286. ; FPSUB_M f2, L2[r4]
  287. mov eax, r12d
  288. and eax, 262136
  289. cvtdq2pd xmm12, qword ptr [rsi+rax]
  290. subpd xmm2, xmm12
  291. ; IMUL_R r0, r5
  292. imul r8, r13
  293. ; FPMUL_R e3, a0
  294. mulpd xmm7, xmm8
  295. ; COND_R r5, be(r4, 1545677311)
  296. xor ecx, ecx
  297. cmp r12d, 1545677311
  298. setbe cl
  299. add r13, rcx
  300. ; IMUL_R r6, r3
  301. imul r14, r11
  302. ; IROL_R r6, r2
  303. mov ecx, r10d
  304. rol r14, cl
  305. ; FPDIV_R e3, a1
  306. divpd xmm7, xmm9
  307. maxpd xmm7, xmm13
  308. ; IXOR_M r5, L1[r1]
  309. mov eax, r9d
  310. and eax, 16376
  311. xor r13, qword ptr [rsi+rax]
  312. ; COND_R r3, ab(r2, 1734636060)
  313. xor ecx, ecx
  314. cmp r10d, 1734636060
  315. seta cl
  316. add r11, rcx
  317. ; ISTORE L1[r2], r7
  318. mov eax, r10d
  319. and eax, 16376
  320. mov qword ptr [rsi+rax], r15
  321. ; IADD_R r5, r6
  322. add r13, r14
  323. ; FPSUB_R f1, a2
  324. subpd xmm1, xmm10
  325. ; FPADD_R f2, a1
  326. addpd xmm2, xmm9
  327. ; FPSWAP_R f1
  328. shufpd xmm1, xmm1, 1
  329. ; IROL_R r2, r6
  330. mov ecx, r14d
  331. rol r10, cl
  332. ; IMUL_R r0, r4
  333. imul r8, r12
  334. ; FPSUB_R f0, a2
  335. subpd xmm0, xmm10
  336. ; ISUB_R r6, r7
  337. sub r14, r15
  338. ; IROL_R r4, r7
  339. mov ecx, r15d
  340. rol r12, cl
  341. ; FPMUL_R e2, a0
  342. mulpd xmm6, xmm8
  343. ; ISUB_R r1, r3
  344. sub r9, r11
  345. ; FPDIV_R e0, a1
  346. divpd xmm4, xmm9
  347. maxpd xmm4, xmm13
  348. ; FPADD_R f0, a1
  349. addpd xmm0, xmm9
  350. ; FPMUL_R e0, a2
  351. mulpd xmm4, xmm10
  352. ; FPSUB_R f2, a2
  353. subpd xmm2, xmm10
  354. ; FPSUB_M f2, L1[r6]
  355. mov eax, r14d
  356. and eax, 16376
  357. cvtdq2pd xmm12, qword ptr [rsi+rax]
  358. subpd xmm2, xmm12
  359. ; FPMUL_R e0, a0
  360. mulpd xmm4, xmm8
  361. ; IXOR_M r4, L2[r7]
  362. mov eax, r15d
  363. and eax, 262136
  364. xor r12, qword ptr [rsi+rax]
  365. ; FPSUB_R f3, a3
  366. subpd xmm3, xmm11
  367. ; ISMULH_R r1, r6
  368. mov rax, r9
  369. imul r14
  370. mov r9, rdx
  371. ; COND_R r4, be(r7, 224524971)
  372. xor ecx, ecx
  373. cmp r15d, 224524971
  374. setbe cl
  375. add r12, rcx
  376. ; FPADD_M f2, L1[r1]
  377. mov eax, r9d
  378. and eax, 16376
  379. cvtdq2pd xmm12, qword ptr [rsi+rax]
  380. addpd xmm2, xmm12
  381. ; IMUL_R r5, r4
  382. imul r13, r12
  383. ; IADD_RC r1, r5, 370966979
  384. lea r9, [r9+r13+370966979]
  385. ; IADD_RC r7, r3, -1762209698
  386. lea r15, [r15+r11-1762209698]
  387. ; FPMUL_M e3, L2[r2]
  388. mov eax, r10d
  389. and eax, 262136
  390. cvtdq2pd xmm12, qword ptr [rsi+rax]
  391. mulpd xmm7, xmm12
  392. maxpd xmm7, xmm13
  393. ; ISUB_R r2, r7
  394. sub r10, r15
  395. ; IMUL_9C r3, 171157280
  396. lea r11, [r11+r11*8+171157280]
  397. ; ISUB_R r3, r5
  398. sub r11, r13
  399. ; FPNEG_R f3
  400. xorps xmm3, xmm15
  401. ; FPNEG_R f2
  402. xorps xmm2, xmm15
  403. ; ISTORE L1[r4], r1
  404. mov eax, r12d
  405. and eax, 16376
  406. mov qword ptr [rsi+rax], r9
  407. ; IADD_R r0, r2
  408. add r8, r10
  409. ; IXOR_R r7, r6
  410. xor r15, r14
  411. ; IROR_R r0, r4
  412. mov ecx, r12d
  413. ror r8, cl
  414. ; FPMUL_R e3, a2
  415. mulpd xmm7, xmm10
  416. ; IXOR_M r4, L1[r7]
  417. mov eax, r15d
  418. and eax, 16376
  419. xor r12, qword ptr [rsi+rax]
  420. ; ISTORE L1[r5], r7
  421. mov eax, r13d
  422. and eax, 16376
  423. mov qword ptr [rsi+rax], r15
  424. ; IMUL_9C r7, -1206742834
  425. lea r15, [r15+r15*8-1206742834]
  426. ; ISMULH_R r0, r4
  427. mov rax, r8
  428. imul r12
  429. mov r8, rdx
  430. ; FPADD_R f2, a0
  431. addpd xmm2, xmm8
  432. ; FPSUB_R f1, a0
  433. subpd xmm1, xmm8
  434. ; INEG_R r7
  435. neg r15
  436. ; COND_M r0, of(L1[r5], -2056260506)
  437. xor ecx, ecx
  438. mov eax, r13d
  439. and eax, 16376
  440. cmp dword ptr [rsi+rax], -2056260506
  441. seto cl
  442. add r8, rcx
  443. ; FPSQRT_R e2
  444. sqrtpd xmm6, xmm6
  445. ; IMUL_R r3, r4
  446. imul r11, r12
  447. ; FPNEG_R f1
  448. xorps xmm1, xmm15
  449. ; FPADD_M f2, L1[r5]
  450. mov eax, r13d
  451. and eax, 16376
  452. cvtdq2pd xmm12, qword ptr [rsi+rax]
  453. addpd xmm2, xmm12
  454. ; FPSUB_R f3, a0
  455. subpd xmm3, xmm8
  456. ; FPNEG_R f3
  457. xorps xmm3, xmm15
  458. ; FPMUL_M e3, L2[r5]
  459. mov eax, r13d
  460. and eax, 262136
  461. cvtdq2pd xmm12, qword ptr [rsi+rax]
  462. mulpd xmm7, xmm12
  463. maxpd xmm7, xmm13
  464. ; ISTORE L1[r2], r2
  465. mov eax, r10d
  466. and eax, 16376
  467. mov qword ptr [rsi+rax], r10
  468. ; IMUL_M r3, L2[r4]
  469. mov eax, r12d
  470. and eax, 262136
  471. imul r11, qword ptr [rsi+rax]
  472. ; IROL_R r5, r6
  473. mov ecx, r14d
  474. rol r13, cl
  475. ; IADD_RC r4, r3, -904431293
  476. lea r12, [r12+r11-904431293]
  477. ; FPSUB_R f1, a1
  478. subpd xmm1, xmm9
  479. ; IROL_R r7, r0
  480. mov ecx, r8d
  481. rol r15, cl
  482. ; ISTORE L2[r1], r7
  483. mov eax, r9d
  484. and eax, 262136
  485. mov qword ptr [rsi+rax], r15
  486. ; IROL_R r4, r3
  487. mov ecx, r11d
  488. rol r12, cl
  489. ; IADD_R r5, r2
  490. add r13, r10
  491. ; COND_R r3, ge(r6, -444806705)
  492. xor ecx, ecx
  493. cmp r14d, -444806705
  494. setge cl
  495. add r11, rcx
  496. ; FPADD_R f0, a1
  497. addpd xmm0, xmm9
  498. ; IROL_R r0, 57
  499. rol r8, 57
  500. ; IADD_R r0, r2
  501. add r8, r10
  502. ; IADD_R r7, r4
  503. add r15, r12
  504. ; IROL_R r1, r7
  505. mov ecx, r15d
  506. rol r9, cl
  507. ; IXOR_M r7, L2[r5]
  508. mov eax, r13d
  509. and eax, 262136
  510. xor r15, qword ptr [rsi+rax]
  511. ; ISTORE L1[r2], r0
  512. mov eax, r10d
  513. and eax, 16376
  514. mov qword ptr [rsi+rax], r8
  515. ; FPADD_R f1, a2
  516. addpd xmm1, xmm10
  517. ; ISUB_R r1, r4
  518. sub r9, r12
  519. ; IXOR_R r5, r0
  520. xor r13, r8
  521. ; IXOR_M r7, L2[r1]
  522. mov eax, r9d
  523. and eax, 262136
  524. xor r15, qword ptr [rsi+rax]
  525. ; FPSUB_R f0, a0
  526. subpd xmm0, xmm8
  527. ; IXOR_M r1, L1[r4]
  528. mov eax, r12d
  529. and eax, 16376
  530. xor r9, qword ptr [rsi+rax]
  531. ; FPMUL_R e3, a0
  532. mulpd xmm7, xmm8
  533. ; ISDIV_C r1, 1473744194
  534. mov rax, -5006799265644655925
  535. imul r9
  536. xor eax, eax
  537. add rdx, r9
  538. sar rdx, 30
  539. sets al
  540. add rdx, rax
  541. add r9, rdx
  542. ; IMUL_9C r1, 1626151459
  543. lea r9, [r9+r9*8+1626151459]
  544. ; IXOR_M r6, L1[r4]
  545. mov eax, r12d
  546. and eax, 16376
  547. xor r14, qword ptr [rsi+rax]
  548. ; FPADD_R f0, a0
  549. addpd xmm0, xmm8
  550. ; FPADD_R f3, a2
  551. addpd xmm3, xmm10
  552. ; ISUB_R r6, r7
  553. sub r14, r15
  554. ; IADD_RC r1, r5, 2075955307
  555. lea r9, [r9+r13+2075955307]
  556. ; IROL_R r6, r3
  557. mov ecx, r11d
  558. rol r14, cl
  559. ; IMULH_R r2, -1135671124
  560. mov eax, -1135671124
  561. mul r10
  562. add r10, rdx
  563. ; ISUB_R r5, r2
  564. sub r13, r10
  565. ; IMULH_R r3, r5
  566. mov rax, r11
  567. mul r13
  568. mov r11, rdx
  569. ; IADD_M r4, L3[386040]
  570. add r12, qword ptr [rsi+386040]
  571. ; COND_R r6, ge(r4, 1518758207)
  572. xor ecx, ecx
  573. cmp r12d, 1518758207
  574. setge cl
  575. add r14, rcx
  576. ; FPDIV_R e3, a1
  577. divpd xmm7, xmm9
  578. maxpd xmm7, xmm13
  579. ; FPNEG_R f2
  580. xorps xmm2, xmm15
  581. ; FPADD_M f1, L1[r4]
  582. mov eax, r12d
  583. and eax, 16376
  584. cvtdq2pd xmm12, qword ptr [rsi+rax]
  585. addpd xmm1, xmm12
  586. ; FPMUL_M e0, L1[r4]
  587. mov eax, r12d
  588. and eax, 16376
  589. cvtdq2pd xmm12, qword ptr [rsi+rax]
  590. mulpd xmm4, xmm12
  591. maxpd xmm4, xmm13
  592. ; FPSQRT_R e2
  593. sqrtpd xmm6, xmm6
  594. ; IROL_R r5, r1
  595. mov ecx, r9d
  596. rol r13, cl
  597. ; FPADD_R f3, a0
  598. addpd xmm3, xmm8
  599. ; IROL_R r3, r0
  600. mov ecx, r8d
  601. rol r11, cl
  602. ; FPMUL_R e3, a1
  603. mulpd xmm7, xmm9
  604. ; IROR_R r0, r7
  605. mov ecx, r15d
  606. ror r8, cl
  607. ; FPADD_R f2, a2
  608. addpd xmm2, xmm10
  609. ; IXOR_R r7, r0
  610. xor r15, r8
  611. ; ISTORE L1[r4], r1
  612. mov eax, r12d
  613. and eax, 16376
  614. mov qword ptr [rsi+rax], r9
  615. ; ISTORE L2[r0], r4
  616. mov eax, r8d
  617. and eax, 262136
  618. mov qword ptr [rsi+rax], r12
  619. ; FPDIV_R e3, a3
  620. divpd xmm7, xmm11
  621. maxpd xmm7, xmm13
  622. ; ISTORE L2[r4], r6
  623. mov eax, r12d
  624. and eax, 262136
  625. mov qword ptr [rsi+rax], r14
  626. ; IMUL_R r3, r1
  627. imul r11, r9
  628. ; IXOR_R r2, r4
  629. xor r10, r12
  630. ; ISTORE L2[r3], r5
  631. mov eax, r11d
  632. and eax, 262136
  633. mov qword ptr [rsi+rax], r13
  634. ; FPMUL_M e2, L2[r4]
  635. mov eax, r12d
  636. and eax, 262136
  637. cvtdq2pd xmm12, qword ptr [rsi+rax]
  638. mulpd xmm6, xmm12
  639. maxpd xmm6, xmm13
  640. ; FPSUB_R f3, a0
  641. subpd xmm3, xmm8
  642. ; COND_R r1, ab(r7, -229570354)
  643. xor ecx, ecx
  644. cmp r15d, -229570354
  645. seta cl
  646. add r9, rcx
  647. ; IROR_R r7, r3
  648. mov ecx, r11d
  649. ror r15, cl
  650. ; FPDIV_R e2, a0
  651. divpd xmm6, xmm8
  652. maxpd xmm6, xmm13
  653. ; IADD_R r2, r5
  654. add r10, r13
  655. ; FPDIV_R e1, a3
  656. divpd xmm5, xmm11
  657. maxpd xmm5, xmm13
  658. ; FPSQRT_R e2
  659. sqrtpd xmm6, xmm6
  660. ; ISUB_R r3, r7
  661. sub r11, r15
  662. ; FPADD_R f0, a0
  663. addpd xmm0, xmm8
  664. ; IMUL_M r0, L3[98136]
  665. imul r8, qword ptr [rsi+98136]
  666. ; IMUL_9C r5, -895487055
  667. lea r13, [r13+r13*8-895487055]
  668. ; IMULH_R r2, r7
  669. mov rax, r10
  670. mul r15
  671. mov r10, rdx
  672. ; IADD_R r4, r1
  673. add r12, r9
  674. ; ISDIV_C r0, 494395999
  675. mov rax, 5007888582388710937
  676. imul r8
  677. xor eax, eax
  678. sar rdx, 27
  679. sets al
  680. add rdx, rax
  681. add r8, rdx
  682. ; FPSWAP_R e0
  683. shufpd xmm4, xmm4, 1
  684. ; IXOR_R r1, r5
  685. xor r9, r13
  686. ; COND_R r2, ab(r3, 1932234501)
  687. xor ecx, ecx
  688. cmp r11d, 1932234501
  689. seta cl
  690. add r10, rcx
  691. ; FPMUL_R e1, a0
  692. mulpd xmm5, xmm8
  693. ; FPSUB_M f1, L1[r1]
  694. mov eax, r9d
  695. and eax, 16376
  696. cvtdq2pd xmm12, qword ptr [rsi+rax]
  697. subpd xmm1, xmm12
  698. ; FPSUB_R f0, a0
  699. subpd xmm0, xmm8
  700. ; IROL_R r1, r7
  701. mov ecx, r15d
  702. rol r9, cl
  703. ; IADD_RC r0, r5, -2051588680
  704. lea r8, [r8+r13-2051588680]
  705. ; COND_R r6, of(r5, -795593984)
  706. xor ecx, ecx
  707. cmp r13d, -795593984
  708. seto cl
  709. add r14, rcx
  710. ; FPADD_R f1, a0
  711. addpd xmm1, xmm8
  712. ; IMULH_R r7, r3
  713. mov rax, r15
  714. mul r11
  715. mov r15, rdx
  716. ; ISUB_R r7, r4
  717. sub r15, r12
  718. ; IROL_R r0, r6
  719. mov ecx, r14d
  720. rol r8, cl
  721. ; ISDIV_C r1, -675825513
  722. mov rax, -7326980207007250257
  723. imul r9
  724. xor eax, eax
  725. sar rdx, 28
  726. sets al
  727. add rdx, rax
  728. add r9, rdx
  729. ; ISTORE L1[r6], r3
  730. mov eax, r14d
  731. and eax, 16376
  732. mov qword ptr [rsi+rax], r11
  733. ; IROR_R r4, r3
  734. mov ecx, r11d
  735. ror r12, cl
  736. ; IDIV_C r4, 3919226376
  737. mov rax, r12
  738. shr rax, 3
  739. mov rcx, 2526906936258851663
  740. mul rcx
  741. shr rdx, 26
  742. add r12, rdx
  743. ; FPSUB_R f1, a1
  744. subpd xmm1, xmm9
  745. ; FPSUB_R f0, a0
  746. subpd xmm0, xmm8
  747. ; IADD_R r0, r2
  748. add r8, r10
  749. ; IADD_M r4, L1[r2]
  750. mov eax, r10d
  751. and eax, 16376
  752. add r12, qword ptr [rsi+rax]
  753. ; ISTORE L1[r7], r2
  754. mov eax, r15d
  755. and eax, 16376
  756. mov qword ptr [rsi+rax], r10
  757. ; FPSQRT_R e1
  758. sqrtpd xmm5, xmm5
  759. ; IADD_R r5, r4
  760. add r13, r12
  761. ; IXOR_R r6, r7
  762. xor r14, r15
  763. ; ISMULH_R r4, r7
  764. mov rax, r12
  765. imul r15
  766. mov r12, rdx
  767. ; FPSQRT_R e1
  768. sqrtpd xmm5, xmm5