program.inc 19 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007
  1. mov ebx, 111 ; Start marker bytes
  2. db 064h, 067h, 090h ; Start marker bytes
  3. randomx_isn_0:
  4. ; IROR_R r3, 30
  5. ror r11, 30
  6. randomx_isn_1:
  7. ; FSUB_M f1, L1[r7]
  8. mov eax, r15d
  9. and eax, 16376
  10. cvtdq2pd xmm12, qword ptr [rsi+rax]
  11. subpd xmm1, xmm12
  12. randomx_isn_2:
  13. ; IXOR_R r3, 1860630909
  14. xor r11, 1860630909
  15. randomx_isn_3:
  16. ; IROR_R r5, r7
  17. mov ecx, r15d
  18. ror r13, cl
  19. randomx_isn_4:
  20. ; IXOR_R r3, r4
  21. xor r11, r12
  22. randomx_isn_5:
  23. ; IROR_R r4, r0
  24. mov ecx, r8d
  25. ror r12, cl
  26. randomx_isn_6:
  27. ; FSQRT_R e3
  28. sqrtpd xmm7, xmm7
  29. randomx_isn_7:
  30. ; ISTORE L1[r0], r3
  31. mov eax, r8d
  32. and eax, 16376
  33. mov qword ptr [rsi+rax], r11
  34. randomx_isn_8:
  35. ; FMUL_R e1, a1
  36. mulpd xmm5, xmm9
  37. randomx_isn_9:
  38. ; FMUL_R e0, a1
  39. mulpd xmm4, xmm9
  40. randomx_isn_10:
  41. ; IMUL_M r2, L1[r1]
  42. mov eax, r9d
  43. and eax, 16376
  44. imul r10, qword ptr [rsi+rax]
  45. randomx_isn_11:
  46. ; ISTORE L1[r3], r1
  47. mov eax, r11d
  48. and eax, 16376
  49. mov qword ptr [rsi+rax], r9
  50. randomx_isn_12:
  51. ; IMUL_R r7, r4
  52. imul r15, r12
  53. randomx_isn_13:
  54. ; FSQRT_R e2
  55. sqrtpd xmm6, xmm6
  56. randomx_isn_14:
  57. ; FSQRT_R e2
  58. sqrtpd xmm6, xmm6
  59. randomx_isn_15:
  60. ; IADD_R r6, r2
  61. add r14, r10
  62. randomx_isn_16:
  63. ; FSUB_M f2, L1[r1]
  64. mov eax, r9d
  65. and eax, 16376
  66. cvtdq2pd xmm12, qword ptr [rsi+rax]
  67. subpd xmm2, xmm12
  68. randomx_isn_17:
  69. ; IROR_R r4, r3
  70. mov ecx, r11d
  71. ror r12, cl
  72. randomx_isn_18:
  73. ; ISTORE L1[r4], r4
  74. mov eax, r12d
  75. and eax, 16376
  76. mov qword ptr [rsi+rax], r12
  77. randomx_isn_19:
  78. ; FMUL_R e1, a2
  79. mulpd xmm5, xmm10
  80. randomx_isn_20:
  81. ; COND_R r6, of(r3, 1593588996), 1
  82. add r8, 2
  83. test r8, 254
  84. jz randomx_isn_0
  85. xor ecx, ecx
  86. cmp r11d, 1593588996
  87. seto cl
  88. add r14, rcx
  89. randomx_isn_21:
  90. ; IXOR_M r7, L1[r2]
  91. mov eax, r10d
  92. and eax, 16376
  93. xor r15, qword ptr [rsi+rax]
  94. randomx_isn_22:
  95. ; IXOR_M r1, L1[r0]
  96. mov eax, r8d
  97. and eax, 16376
  98. xor r9, qword ptr [rsi+rax]
  99. randomx_isn_23:
  100. ; FMUL_R e2, a0
  101. mulpd xmm6, xmm8
  102. randomx_isn_24:
  103. ; COND_R r6, no(r0, 149087159), 6
  104. add r8, 64
  105. test r8, 8128
  106. jz randomx_isn_21
  107. xor ecx, ecx
  108. cmp r8d, 149087159
  109. setno cl
  110. add r14, rcx
  111. randomx_isn_25:
  112. ; FADD_R f3, a0
  113. addpd xmm3, xmm8
  114. randomx_isn_26:
  115. ; IADD_R r7, r0
  116. add r15, r8
  117. randomx_isn_27:
  118. ; IMUL_R r2, r3
  119. imul r10, r11
  120. randomx_isn_28:
  121. ; IADD_R r5, r7
  122. add r13, r15
  123. randomx_isn_29:
  124. ; ISTORE L2[r6], r2
  125. mov eax, r14d
  126. and eax, 262136
  127. mov qword ptr [rsi+rax], r10
  128. randomx_isn_30:
  129. ; ISTORE L1[r7], r5
  130. mov eax, r15d
  131. and eax, 16376
  132. mov qword ptr [rsi+rax], r13
  133. randomx_isn_31:
  134. ; FSUB_R f1, a2
  135. subpd xmm1, xmm10
  136. randomx_isn_32:
  137. ; IMUL_R r3, r5
  138. imul r11, r13
  139. randomx_isn_33:
  140. ; IROR_R r1, 20
  141. ror r9, 20
  142. randomx_isn_34:
  143. ; FSCAL_R f1
  144. xorps xmm1, xmm15
  145. randomx_isn_35:
  146. ; IMUL_R r6, 835132161
  147. imul r14, 835132161
  148. randomx_isn_36:
  149. ; IADD_M r3, L1[r4]
  150. mov eax, r12d
  151. and eax, 16376
  152. add r11, qword ptr [rsi+rax]
  153. randomx_isn_37:
  154. ; IMUL_9C r6, 1885029796
  155. lea r14, [r14+r14*8+1885029796]
  156. randomx_isn_38:
  157. ; FSCAL_R f2
  158. xorps xmm2, xmm15
  159. randomx_isn_39:
  160. ; ISUB_M r5, L1[r0]
  161. mov eax, r8d
  162. and eax, 16376
  163. sub r13, qword ptr [rsi+rax]
  164. randomx_isn_40:
  165. ; IMUL_R r7, r2
  166. imul r15, r10
  167. randomx_isn_41:
  168. ; FMUL_R e1, a0
  169. mulpd xmm5, xmm8
  170. randomx_isn_42:
  171. ; IXOR_R r5, r0
  172. xor r13, r8
  173. randomx_isn_43:
  174. ; FSWAP_R e0
  175. shufpd xmm4, xmm4, 1
  176. randomx_isn_44:
  177. ; FADD_R f1, a2
  178. addpd xmm1, xmm10
  179. randomx_isn_45:
  180. ; ISTORE L1[r0], r5
  181. mov eax, r8d
  182. and eax, 16376
  183. mov qword ptr [rsi+rax], r13
  184. randomx_isn_46:
  185. ; IADD_M r0, L2[r7]
  186. mov eax, r15d
  187. and eax, 262136
  188. add r8, qword ptr [rsi+rax]
  189. randomx_isn_47:
  190. ; IXOR_R r5, r2
  191. xor r13, r10
  192. randomx_isn_48:
  193. ; FSUB_R f3, a3
  194. subpd xmm3, xmm11
  195. randomx_isn_49:
  196. ; FMUL_R e3, a3
  197. mulpd xmm7, xmm11
  198. randomx_isn_50:
  199. ; FSUB_R f3, a0
  200. subpd xmm3, xmm8
  201. randomx_isn_51:
  202. ; COND_R r2, be(r3, -1975981803), 7
  203. add r12, 128
  204. test r12, 16256
  205. jz randomx_isn_25
  206. xor ecx, ecx
  207. cmp r11d, -1975981803
  208. setbe cl
  209. add r10, rcx
  210. randomx_isn_52:
  211. ; IADD_RC r1, r1, 878232328
  212. lea r9, [r9+r9+878232328]
  213. randomx_isn_53:
  214. ; FSUB_R f2, a0
  215. subpd xmm2, xmm8
  216. randomx_isn_54:
  217. ; COND_R r5, ns(r1, 1917049931), 6
  218. add r8, 64
  219. test r8, 8128
  220. jz randomx_isn_52
  221. xor ecx, ecx
  222. cmp r9d, 1917049931
  223. setns cl
  224. add r13, rcx
  225. randomx_isn_55:
  226. ; IXOR_R r2, r3
  227. xor r10, r11
  228. randomx_isn_56:
  229. ; FSCAL_R f0
  230. xorps xmm0, xmm15
  231. randomx_isn_57:
  232. ; IMUL_R r5, r1
  233. imul r13, r9
  234. randomx_isn_58:
  235. ; IADD_R r5, r1
  236. add r13, r9
  237. randomx_isn_59:
  238. ; FMUL_R e2, a2
  239. mulpd xmm6, xmm10
  240. randomx_isn_60:
  241. ; IROR_R r2, r6
  242. mov ecx, r14d
  243. ror r10, cl
  244. randomx_isn_61:
  245. ; IADD_RC r0, r3, 553576025
  246. lea r8, [r8+r11+553576025]
  247. randomx_isn_62:
  248. ; FSQRT_R e3
  249. sqrtpd xmm7, xmm7
  250. randomx_isn_63:
  251. ; IMUL_9C r6, -1165860156
  252. lea r14, [r14+r14*8-1165860156]
  253. randomx_isn_64:
  254. ; IMUL_9C r5, -1323706896
  255. lea r13, [r13+r13*8-1323706896]
  256. randomx_isn_65:
  257. ; IMUL_RCP r5, 2362240456
  258. mov rax, 16769707400664451577
  259. imul r13, rax
  260. randomx_isn_66:
  261. ; ISUB_R r4, 841292629
  262. sub r12, 841292629
  263. randomx_isn_67:
  264. ; IADD_M r4, L1[r6]
  265. mov eax, r14d
  266. and eax, 16376
  267. add r12, qword ptr [rsi+rax]
  268. randomx_isn_68:
  269. ; FSUB_M f3, L1[r4]
  270. mov eax, r12d
  271. and eax, 16376
  272. cvtdq2pd xmm12, qword ptr [rsi+rax]
  273. subpd xmm3, xmm12
  274. randomx_isn_69:
  275. ; IADD_RC r6, r4, -1863144764
  276. lea r14, [r14+r12-1863144764]
  277. randomx_isn_70:
  278. ; FSUB_M f1, L1[r5]
  279. mov eax, r13d
  280. and eax, 16376
  281. cvtdq2pd xmm12, qword ptr [rsi+rax]
  282. subpd xmm1, xmm12
  283. randomx_isn_71:
  284. ; FSWAP_R e1
  285. shufpd xmm5, xmm5, 1
  286. randomx_isn_72:
  287. ; FADD_R f2, a0
  288. addpd xmm2, xmm8
  289. randomx_isn_73:
  290. ; FMUL_R e0, a0
  291. mulpd xmm4, xmm8
  292. randomx_isn_74:
  293. ; COND_R r6, ns(r3, -1200328848), 2
  294. add r9, 4
  295. test r9, 508
  296. jz randomx_isn_55
  297. xor ecx, ecx
  298. cmp r11d, -1200328848
  299. setns cl
  300. add r14, rcx
  301. randomx_isn_75:
  302. ; FMUL_R e0, a3
  303. mulpd xmm4, xmm11
  304. randomx_isn_76:
  305. ; FDIV_M e3, L1[r4]
  306. mov eax, r12d
  307. and eax, 16376
  308. cvtdq2pd xmm12, qword ptr [rsi+rax]
  309. andps xmm12, xmm13
  310. orps xmm12, xmm14
  311. divpd xmm7, xmm12
  312. randomx_isn_77:
  313. ; FADD_R f1, a2
  314. addpd xmm1, xmm10
  315. randomx_isn_78:
  316. ; FMUL_R e2, a1
  317. mulpd xmm6, xmm9
  318. randomx_isn_79:
  319. ; IADD_RC r3, r1, -919815727
  320. lea r11, [r11+r9-919815727]
  321. randomx_isn_80:
  322. ; ISTORE L1[r2], r4
  323. mov eax, r10d
  324. and eax, 16376
  325. mov qword ptr [rsi+rax], r12
  326. randomx_isn_81:
  327. ; IMULH_R r3, r0
  328. mov rax, r11
  329. mul r8
  330. mov r11, rdx
  331. randomx_isn_82:
  332. ; IXOR_R r2, r6
  333. xor r10, r14
  334. randomx_isn_83:
  335. ; FSUB_R f0, a2
  336. subpd xmm0, xmm10
  337. randomx_isn_84:
  338. ; ISMULH_R r1, r7
  339. mov rax, r9
  340. imul r15
  341. mov r9, rdx
  342. randomx_isn_85:
  343. ; FSCAL_R f0
  344. xorps xmm0, xmm15
  345. randomx_isn_86:
  346. ; ISUB_R r7, r3
  347. sub r15, r11
  348. randomx_isn_87:
  349. ; IXOR_R r4, r2
  350. xor r12, r10
  351. randomx_isn_88:
  352. ; IMUL_R r1, r3
  353. imul r9, r11
  354. randomx_isn_89:
  355. ; COND_M r2, no(L1[r0], -122257389), 6
  356. add r8, 64
  357. test r8, 8128
  358. jz randomx_isn_75
  359. xor ecx, ecx
  360. mov eax, r8d
  361. and eax, 16376
  362. cmp dword ptr [rsi+rax], -122257389
  363. setno cl
  364. add r10, rcx
  365. randomx_isn_90:
  366. ; ISTORE L1[r5], r7
  367. mov eax, r13d
  368. and eax, 16376
  369. mov qword ptr [rsi+rax], r15
  370. randomx_isn_91:
  371. ; ISTORE L1[r6], r5
  372. mov eax, r14d
  373. and eax, 16376
  374. mov qword ptr [rsi+rax], r13
  375. randomx_isn_92:
  376. ; FSUB_R f2, a0
  377. subpd xmm2, xmm8
  378. randomx_isn_93:
  379. ; FADD_R f0, a1
  380. addpd xmm0, xmm9
  381. randomx_isn_94:
  382. ; IXOR_R r6, r1
  383. xor r14, r9
  384. randomx_isn_95:
  385. ; ISUB_M r0, L3[910032]
  386. sub r8, qword ptr [rsi+910032]
  387. randomx_isn_96:
  388. ; FSWAP_R e3
  389. shufpd xmm7, xmm7, 1
  390. randomx_isn_97:
  391. ; IMUL_M r4, L1[r2]
  392. mov eax, r10d
  393. and eax, 16376
  394. imul r12, qword ptr [rsi+rax]
  395. randomx_isn_98:
  396. ; IMUL_9C r0, 2144355962
  397. lea r8, [r8+r8*8+2144355962]
  398. randomx_isn_99:
  399. ; IMULH_R r1, r5
  400. mov rax, r9
  401. mul r13
  402. mov r9, rdx
  403. randomx_isn_100:
  404. ; ISTORE L1[r7], r3
  405. mov eax, r15d
  406. and eax, 16376
  407. mov qword ptr [rsi+rax], r11
  408. randomx_isn_101:
  409. ; ISWAP_R r0, r0
  410. randomx_isn_102:
  411. ; IMUL_R r2, r7
  412. imul r10, r15
  413. randomx_isn_103:
  414. ; ISUB_R r2, -1777504751
  415. sub r10, -1777504751
  416. randomx_isn_104:
  417. ; ISTORE L2[r6], r7
  418. mov eax, r14d
  419. and eax, 262136
  420. mov qword ptr [rsi+rax], r15
  421. randomx_isn_105:
  422. ; FADD_R f3, a1
  423. addpd xmm3, xmm9
  424. randomx_isn_106:
  425. ; FSUB_R f2, a2
  426. subpd xmm2, xmm10
  427. randomx_isn_107:
  428. ; ISMULH_R r6, r5
  429. mov rax, r14
  430. imul r13
  431. mov r14, rdx
  432. randomx_isn_108:
  433. ; IADD_M r7, L1[r0]
  434. mov eax, r8d
  435. and eax, 16376
  436. add r15, qword ptr [rsi+rax]
  437. randomx_isn_109:
  438. ; IMUL_R r6, r5
  439. imul r14, r13
  440. randomx_isn_110:
  441. ; IMUL_R r5, r1
  442. imul r13, r9
  443. randomx_isn_111:
  444. ; FADD_M f2, L1[r0]
  445. mov eax, r8d
  446. and eax, 16376
  447. cvtdq2pd xmm12, qword ptr [rsi+rax]
  448. addpd xmm2, xmm12
  449. randomx_isn_112:
  450. ; IADD_R r0, r3
  451. add r8, r11
  452. randomx_isn_113:
  453. ; IADD_RC r3, r4, -1138304368
  454. lea r11, [r11+r12-1138304368]
  455. randomx_isn_114:
  456. ; IADD_M r2, L1[r4]
  457. mov eax, r12d
  458. and eax, 16376
  459. add r10, qword ptr [rsi+rax]
  460. randomx_isn_115:
  461. ; IMUL_M r7, L1[r2]
  462. mov eax, r10d
  463. and eax, 16376
  464. imul r15, qword ptr [rsi+rax]
  465. randomx_isn_116:
  466. ; FADD_R f1, a3
  467. addpd xmm1, xmm11
  468. randomx_isn_117:
  469. ; FSUB_R f2, a2
  470. subpd xmm2, xmm10
  471. randomx_isn_118:
  472. ; IADD_R r2, 160326201
  473. add r10, 160326201
  474. randomx_isn_119:
  475. ; ISUB_M r7, L3[1780152]
  476. sub r15, qword ptr [rsi+1780152]
  477. randomx_isn_120:
  478. ; IADD_R r4, r1
  479. add r12, r9
  480. randomx_isn_121:
  481. ; IADD_R r4, r7
  482. add r12, r15
  483. randomx_isn_122:
  484. ; FSUB_R f0, a1
  485. subpd xmm0, xmm9
  486. randomx_isn_123:
  487. ; FSQRT_R e0
  488. sqrtpd xmm4, xmm4
  489. randomx_isn_124:
  490. ; FSUB_R f2, a2
  491. subpd xmm2, xmm10
  492. randomx_isn_125:
  493. ; ISMULH_M r2, L2[r1]
  494. mov ecx, r9d
  495. and ecx, 262136
  496. mov rax, r10
  497. imul qword ptr [rsi+rcx]
  498. mov r10, rdx
  499. randomx_isn_126:
  500. ; FSUB_M f2, L2[r2]
  501. mov eax, r10d
  502. and eax, 262136
  503. cvtdq2pd xmm12, qword ptr [rsi+rax]
  504. subpd xmm2, xmm12
  505. randomx_isn_127:
  506. ; IMUL_R r2, r4
  507. imul r10, r12
  508. randomx_isn_128:
  509. ; FSUB_R f3, a1
  510. subpd xmm3, xmm9
  511. randomx_isn_129:
  512. ; IADD_RC r1, r2, 697183462
  513. lea r9, [r9+r10+697183462]
  514. randomx_isn_130:
  515. ; FSUB_R f1, a1
  516. subpd xmm1, xmm9
  517. randomx_isn_131:
  518. ; IMUL_M r2, L1[r3]
  519. mov eax, r11d
  520. and eax, 16376
  521. imul r10, qword ptr [rsi+rax]
  522. randomx_isn_132:
  523. ; IXOR_M r5, L3[1438200]
  524. xor r13, qword ptr [rsi+1438200]
  525. randomx_isn_133:
  526. ; FMUL_R e3, a3
  527. mulpd xmm7, xmm11
  528. randomx_isn_134:
  529. ; IROR_R r5, r1
  530. mov ecx, r9d
  531. ror r13, cl
  532. randomx_isn_135:
  533. ; FMUL_R e1, a2
  534. mulpd xmm5, xmm10
  535. randomx_isn_136:
  536. ; ISUB_M r3, L2[r6]
  537. mov eax, r14d
  538. and eax, 262136
  539. sub r11, qword ptr [rsi+rax]
  540. randomx_isn_137:
  541. ; IADD_RC r4, r1, -1660063210
  542. lea r12, [r12+r9-1660063210]
  543. randomx_isn_138:
  544. ; ISTORE L1[r0], r0
  545. mov eax, r8d
  546. and eax, 16376
  547. mov qword ptr [rsi+rax], r8
  548. randomx_isn_139:
  549. ; FADD_M f0, L1[r5]
  550. mov eax, r13d
  551. and eax, 16376
  552. cvtdq2pd xmm12, qword ptr [rsi+rax]
  553. addpd xmm0, xmm12
  554. randomx_isn_140:
  555. ; ISUB_M r7, L1[r3]
  556. mov eax, r11d
  557. and eax, 16376
  558. sub r15, qword ptr [rsi+rax]
  559. randomx_isn_141:
  560. ; IROR_R r3, r2
  561. mov ecx, r10d
  562. ror r11, cl
  563. randomx_isn_142:
  564. ; FADD_R f1, a0
  565. addpd xmm1, xmm8
  566. randomx_isn_143:
  567. ; COND_R r5, ge(r1, 880467599), 2
  568. add r14, 4
  569. test r14, 508
  570. jz randomx_isn_110
  571. xor ecx, ecx
  572. cmp r9d, 880467599
  573. setge cl
  574. add r13, rcx
  575. randomx_isn_144:
  576. ; FSUB_M f1, L1[r5]
  577. mov eax, r13d
  578. and eax, 16376
  579. cvtdq2pd xmm12, qword ptr [rsi+rax]
  580. subpd xmm1, xmm12
  581. randomx_isn_145:
  582. ; ISUB_R r5, r3
  583. sub r13, r11
  584. randomx_isn_146:
  585. ; IADD_RC r0, r3, 1228198394
  586. lea r8, [r8+r11+1228198394]
  587. randomx_isn_147:
  588. ; IADD_RC r1, r3, 1747766580
  589. lea r9, [r9+r11+1747766580]
  590. randomx_isn_148:
  591. ; FSQRT_R e1
  592. sqrtpd xmm5, xmm5
  593. randomx_isn_149:
  594. ; IADD_R r4, r3
  595. add r12, r11
  596. randomx_isn_150:
  597. ; FADD_M f1, L1[r0]
  598. mov eax, r8d
  599. and eax, 16376
  600. cvtdq2pd xmm12, qword ptr [rsi+rax]
  601. addpd xmm1, xmm12
  602. randomx_isn_151:
  603. ; IADD_RC r1, r0, 1063245428
  604. lea r9, [r9+r8+1063245428]
  605. randomx_isn_152:
  606. ; FSUB_R f1, a0
  607. subpd xmm1, xmm8
  608. randomx_isn_153:
  609. ; FSUB_R f0, a1
  610. subpd xmm0, xmm9
  611. randomx_isn_154:
  612. ; IMUL_R r2, r6
  613. imul r10, r14
  614. randomx_isn_155:
  615. ; CFROUND r3, 46
  616. mov rax, r11
  617. rol rax, 31
  618. and eax, 24576
  619. or eax, 40896
  620. mov dword ptr [rsp-8], eax
  621. ldmxcsr dword ptr [rsp-8]
  622. randomx_isn_156:
  623. ; FSUB_R f3, a2
  624. subpd xmm3, xmm10
  625. randomx_isn_157:
  626. ; ISTORE L1[r1], r1
  627. mov eax, r9d
  628. and eax, 16376
  629. mov qword ptr [rsi+rax], r9
  630. randomx_isn_158:
  631. ; ISTORE L1[r6], r4
  632. mov eax, r14d
  633. and eax, 16376
  634. mov qword ptr [rsi+rax], r12
  635. randomx_isn_159:
  636. ; IADD_M r7, L1[r2]
  637. mov eax, r10d
  638. and eax, 16376
  639. add r15, qword ptr [rsi+rax]
  640. randomx_isn_160:
  641. ; IMUL_RCP r7, 2040763167
  642. mov rax, 9705702723791900149
  643. imul r15, rax
  644. randomx_isn_161:
  645. ; FADD_R f3, a3
  646. addpd xmm3, xmm11
  647. randomx_isn_162:
  648. ; IADD_RC r6, r4, -783948693
  649. lea r14, [r14+r12-783948693]
  650. randomx_isn_163:
  651. ; ISWAP_R r3, r5
  652. xchg r11, r13
  653. randomx_isn_164:
  654. ; FSQRT_R e3
  655. sqrtpd xmm7, xmm7
  656. randomx_isn_165:
  657. ; FSUB_R f1, a2
  658. subpd xmm1, xmm10
  659. randomx_isn_166:
  660. ; IROR_R r5, r3
  661. mov ecx, r11d
  662. ror r13, cl
  663. randomx_isn_167:
  664. ; IMUL_9C r2, 805006473
  665. lea r10, [r10+r10*8+805006473]
  666. randomx_isn_168:
  667. ; FDIV_M e0, L1[r4]
  668. mov eax, r12d
  669. and eax, 16376
  670. cvtdq2pd xmm12, qword ptr [rsi+rax]
  671. andps xmm12, xmm13
  672. orps xmm12, xmm14
  673. divpd xmm4, xmm12
  674. randomx_isn_169:
  675. ; IMUL_9C r3, 1773188989
  676. lea r11, [r11+r11*8+1773188989]
  677. randomx_isn_170:
  678. ; FADD_R f0, a3
  679. addpd xmm0, xmm11
  680. randomx_isn_171:
  681. ; FADD_R f1, a0
  682. addpd xmm1, xmm8
  683. randomx_isn_172:
  684. ; ISTORE L1[r7], r6
  685. mov eax, r15d
  686. and eax, 16376
  687. mov qword ptr [rsi+rax], r14
  688. randomx_isn_173:
  689. ; FSUB_M f0, L1[r7]
  690. mov eax, r15d
  691. and eax, 16376
  692. cvtdq2pd xmm12, qword ptr [rsi+rax]
  693. subpd xmm0, xmm12
  694. randomx_isn_174:
  695. ; ISWAP_R r3, r0
  696. xchg r11, r8
  697. randomx_isn_175:
  698. ; IMULH_R r0, r3
  699. mov rax, r8
  700. mul r11
  701. mov r8, rdx
  702. randomx_isn_176:
  703. ; IMUL_M r2, L3[1439696]
  704. imul r10, qword ptr [rsi+1439696]
  705. randomx_isn_177:
  706. ; IMUL_M r3, L3[232968]
  707. imul r11, qword ptr [rsi+232968]
  708. randomx_isn_178:
  709. ; IADD_RC r5, r3, -2108568616
  710. lea r13, [r13+r11-2108568616]
  711. randomx_isn_179:
  712. ; IADD_RC r3, r4, 1322108729
  713. lea r11, [r11+r12+1322108729]
  714. randomx_isn_180:
  715. ; FADD_R f3, a1
  716. addpd xmm3, xmm9
  717. randomx_isn_181:
  718. ; FSQRT_R e3
  719. sqrtpd xmm7, xmm7
  720. randomx_isn_182:
  721. ; FMUL_R e2, a2
  722. mulpd xmm6, xmm10
  723. randomx_isn_183:
  724. ; IADD_M r6, L2[r2]
  725. mov eax, r10d
  726. and eax, 262136
  727. add r14, qword ptr [rsi+rax]
  728. randomx_isn_184:
  729. ; FADD_R f2, a3
  730. addpd xmm2, xmm11
  731. randomx_isn_185:
  732. ; FSWAP_R f3
  733. shufpd xmm3, xmm3, 1
  734. randomx_isn_186:
  735. ; FSCAL_R f3
  736. xorps xmm3, xmm15
  737. randomx_isn_187:
  738. ; IADD_RC r6, r6, -914790425
  739. lea r14, [r14+r14-914790425]
  740. randomx_isn_188:
  741. ; FSCAL_R f2
  742. xorps xmm2, xmm15
  743. randomx_isn_189:
  744. ; IMUL_M r4, L1[r5]
  745. mov eax, r13d
  746. and eax, 16376
  747. imul r12, qword ptr [rsi+rax]
  748. randomx_isn_190:
  749. ; FSUB_M f2, L1[r3]
  750. mov eax, r11d
  751. and eax, 16376
  752. cvtdq2pd xmm12, qword ptr [rsi+rax]
  753. subpd xmm2, xmm12
  754. randomx_isn_191:
  755. ; IMUL_M r4, L2[r3]
  756. mov eax, r11d
  757. and eax, 262136
  758. imul r12, qword ptr [rsi+rax]
  759. randomx_isn_192:
  760. ; ISUB_M r7, L1[r3]
  761. mov eax, r11d
  762. and eax, 16376
  763. sub r15, qword ptr [rsi+rax]
  764. randomx_isn_193:
  765. ; ISTORE L1[r1], r1
  766. mov eax, r9d
  767. and eax, 16376
  768. mov qword ptr [rsi+rax], r9
  769. randomx_isn_194:
  770. ; ISTORE L1[r3], r4
  771. mov eax, r11d
  772. and eax, 16376
  773. mov qword ptr [rsi+rax], r12
  774. randomx_isn_195:
  775. ; FMUL_R e2, a2
  776. mulpd xmm6, xmm10
  777. randomx_isn_196:
  778. ; FMUL_R e2, a0
  779. mulpd xmm6, xmm8
  780. randomx_isn_197:
  781. ; FADD_M f2, L2[r0]
  782. mov eax, r8d
  783. and eax, 262136
  784. cvtdq2pd xmm12, qword ptr [rsi+rax]
  785. addpd xmm2, xmm12
  786. randomx_isn_198:
  787. ; FADD_R f1, a2
  788. addpd xmm1, xmm10
  789. randomx_isn_199:
  790. ; FSUB_R f3, a3
  791. subpd xmm3, xmm11
  792. randomx_isn_200:
  793. ; IADD_RC r2, r5, 248917123
  794. lea r10, [r10+r13+248917123]
  795. randomx_isn_201:
  796. ; IMUL_9C r6, 376384700
  797. lea r14, [r14+r14*8+376384700]
  798. randomx_isn_202:
  799. ; ISWAP_R r3, r6
  800. xchg r11, r14
  801. randomx_isn_203:
  802. ; ISTORE L1[r1], r3
  803. mov eax, r9d
  804. and eax, 16376
  805. mov qword ptr [rsi+rax], r11
  806. randomx_isn_204:
  807. ; IMUL_R r6, r1
  808. imul r14, r9
  809. randomx_isn_205:
  810. ; ISUB_R r7, r5
  811. sub r15, r13
  812. randomx_isn_206:
  813. ; IADD_R r3, r5
  814. add r11, r13
  815. randomx_isn_207:
  816. ; FSCAL_R f1
  817. xorps xmm1, xmm15
  818. randomx_isn_208:
  819. ; IADD_R r6, r3
  820. add r14, r11
  821. randomx_isn_209:
  822. ; FSUB_M f0, L1[r4]
  823. mov eax, r12d
  824. and eax, 16376
  825. cvtdq2pd xmm12, qword ptr [rsi+rax]
  826. subpd xmm0, xmm12
  827. randomx_isn_210:
  828. ; FSWAP_R e2
  829. shufpd xmm6, xmm6, 1
  830. randomx_isn_211:
  831. ; FMUL_R e2, a3
  832. mulpd xmm6, xmm11
  833. randomx_isn_212:
  834. ; IMUL_M r0, L1[r1]
  835. mov eax, r9d
  836. and eax, 16376
  837. imul r8, qword ptr [rsi+rax]
  838. randomx_isn_213:
  839. ; FSUB_M f2, L1[r5]
  840. mov eax, r13d
  841. and eax, 16376
  842. cvtdq2pd xmm12, qword ptr [rsi+rax]
  843. subpd xmm2, xmm12
  844. randomx_isn_214:
  845. ; FMUL_R e1, a2
  846. mulpd xmm5, xmm10
  847. randomx_isn_215:
  848. ; FADD_R f3, a1
  849. addpd xmm3, xmm9
  850. randomx_isn_216:
  851. ; IXOR_M r4, L2[r1]
  852. mov eax, r9d
  853. and eax, 262136
  854. xor r12, qword ptr [rsi+rax]
  855. randomx_isn_217:
  856. ; IMUL_M r6, L1[r5]
  857. mov eax, r13d
  858. and eax, 16376
  859. imul r14, qword ptr [rsi+rax]
  860. randomx_isn_218:
  861. ; FSCAL_R f2
  862. xorps xmm2, xmm15
  863. randomx_isn_219:
  864. ; FADD_M f3, L1[r7]
  865. mov eax, r15d
  866. and eax, 16376
  867. cvtdq2pd xmm12, qword ptr [rsi+rax]
  868. addpd xmm3, xmm12
  869. randomx_isn_220:
  870. ; FSUB_R f0, a0
  871. subpd xmm0, xmm8
  872. randomx_isn_221:
  873. ; IMUL_R r1, r0
  874. imul r9, r8
  875. randomx_isn_222:
  876. ; IADD_M r1, L1[r0]
  877. mov eax, r8d
  878. and eax, 16376
  879. add r9, qword ptr [rsi+rax]
  880. randomx_isn_223:
  881. ; FSCAL_R f2
  882. xorps xmm2, xmm15
  883. randomx_isn_224:
  884. ; IADD_R r5, r4
  885. add r13, r12
  886. randomx_isn_225:
  887. ; ISTORE L2[r2], r1
  888. mov eax, r10d
  889. and eax, 262136
  890. mov qword ptr [rsi+rax], r9
  891. randomx_isn_226:
  892. ; ISUB_R r6, -791575725
  893. sub r14, -791575725
  894. randomx_isn_227:
  895. ; FDIV_M e3, L1[r0]
  896. mov eax, r8d
  897. and eax, 16376
  898. cvtdq2pd xmm12, qword ptr [rsi+rax]
  899. andps xmm12, xmm13
  900. orps xmm12, xmm14
  901. divpd xmm7, xmm12
  902. randomx_isn_228:
  903. ; IXOR_R r7, r1
  904. xor r15, r9
  905. randomx_isn_229:
  906. ; ISWAP_R r0, r6
  907. xchg r8, r14
  908. randomx_isn_230:
  909. ; IADD_M r2, L1[r7]
  910. mov eax, r15d
  911. and eax, 16376
  912. add r10, qword ptr [rsi+rax]
  913. randomx_isn_231:
  914. ; FMUL_R e1, a0
  915. mulpd xmm5, xmm8
  916. randomx_isn_232:
  917. ; FMUL_R e3, a3
  918. mulpd xmm7, xmm11
  919. randomx_isn_233:
  920. ; FMUL_R e0, a2
  921. mulpd xmm4, xmm10
  922. randomx_isn_234:
  923. ; IADD_RC r2, r7, 1435646464
  924. lea r10, [r10+r15+1435646464]
  925. randomx_isn_235:
  926. ; ISWAP_R r7, r6
  927. xchg r15, r14
  928. randomx_isn_236:
  929. ; FMUL_R e3, a2
  930. mulpd xmm7, xmm10
  931. randomx_isn_237:
  932. ; FSUB_R f1, a3
  933. subpd xmm1, xmm11
  934. randomx_isn_238:
  935. ; IADD_R r4, r2
  936. add r12, r10
  937. randomx_isn_239:
  938. ; IMUL_RCP r7, 3065786637
  939. mov rax, 12921343181238534701
  940. imul r15, rax
  941. randomx_isn_240:
  942. ; IMUL_R r5, r7
  943. imul r13, r15
  944. randomx_isn_241:
  945. ; IROR_R r6, r5
  946. mov ecx, r13d
  947. ror r14, cl
  948. randomx_isn_242:
  949. ; IMUL_R r6, r4
  950. imul r14, r12
  951. randomx_isn_243:
  952. ; FSUB_R f0, a3
  953. subpd xmm0, xmm11
  954. randomx_isn_244:
  955. ; FADD_M f1, L1[r0]
  956. mov eax, r8d
  957. and eax, 16376
  958. cvtdq2pd xmm12, qword ptr [rsi+rax]
  959. addpd xmm1, xmm12
  960. randomx_isn_245:
  961. ; INEG_R r3
  962. neg r11
  963. randomx_isn_246:
  964. ; IMUL_9C r7, 1938400676
  965. lea r15, [r15+r15*8+1938400676]
  966. randomx_isn_247:
  967. ; COND_M r2, be(L1[r5], -8545330), 2
  968. add r9, 4
  969. test r9, 508
  970. jz randomx_isn_223
  971. xor ecx, ecx
  972. mov eax, r13d
  973. and eax, 16376
  974. cmp dword ptr [rsi+rax], -8545330
  975. setbe cl
  976. add r10, rcx
  977. randomx_isn_248:
  978. ; ISTORE L1[r0], r5
  979. mov eax, r8d
  980. and eax, 16376
  981. mov qword ptr [rsi+rax], r13
  982. randomx_isn_249:
  983. ; IADD_RC r6, r5, 2052724836
  984. lea r14, [r14+r13+2052724836]
  985. randomx_isn_250:
  986. ; FADD_R f3, a0
  987. addpd xmm3, xmm8
  988. randomx_isn_251:
  989. ; IADD_R r0, -221201557
  990. add r8, -221201557
  991. randomx_isn_252:
  992. ; ISUB_M r4, L1[r2]
  993. mov eax, r10d
  994. and eax, 16376
  995. sub r12, qword ptr [rsi+rax]
  996. randomx_isn_253:
  997. ; IADD_RC r5, r4, 256175395
  998. lea r13, [r13+r12+256175395]
  999. randomx_isn_254:
  1000. ; IADD_RC r6, r7, 1119815512
  1001. lea r14, [r14+r15+1119815512]
  1002. randomx_isn_255:
  1003. ; IROR_R r7, r3
  1004. mov ecx, r11d
  1005. ror r15, cl
  1006. mov ebx, 222 ; End marker bytes
  1007. db 064h, 067h, 090h ; End marker bytes