small-prog.asm 14 KB

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