small-prog.asm 13 KB

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