Explorar o código

Render imm32 as signed in RandomX code

tevador %!s(int64=7) %!d(string=hai) anos
pai
achega
2798d78717

+ 0 - 1
src/AssemblyGeneratorX86.cpp

@@ -20,7 +20,6 @@ along with RandomX.  If not, see<http://www.gnu.org/licenses/>.
 #define MAGIC_DIVISION
 #include "AssemblyGeneratorX86.hpp"
 #include "common.hpp"
-#include "instructions.hpp"
 #ifdef MAGIC_DIVISION
 #include "divideByConstantCodegen.h"
 #endif

+ 0 - 1
src/CompiledVirtualMachine.cpp

@@ -19,7 +19,6 @@ along with RandomX.  If not, see<http://www.gnu.org/licenses/>.
 
 #include "CompiledVirtualMachine.hpp"
 #include "common.hpp"
-#include "instructions.hpp"
 #include <stdexcept>
 
 namespace RandomX {

+ 10 - 10
src/Instruction.cpp

@@ -45,7 +45,7 @@ namespace RandomX {
 			os << "r" << (int)dst << ", r" << (int)src << std::endl;
 		}
 		else {
-			os << "r" << (int)dst << ", " << imm32 << std::endl;
+			os << "r" << (int)dst << ", " << (int32_t)imm32 << std::endl;
 		}
 	}
 
@@ -63,7 +63,7 @@ namespace RandomX {
 	}
 
 	void Instruction::h_IADD_RC(std::ostream& os) const {
-		os << "r" << (int)dst << ", r" << (int)src << ", " << imm32 << std::endl;
+		os << "r" << (int)dst << ", r" << (int)src << ", " << (int32_t)imm32 << std::endl;
 	}
 
 	//1 uOP
@@ -72,7 +72,7 @@ namespace RandomX {
 			os << "r" << (int)dst << ", r" << (int)src << std::endl;
 		}
 		else {
-			os << "r" << (int)dst << ", " << imm32 << std::endl;
+			os << "r" << (int)dst << ", " << (int32_t)imm32 << std::endl;
 		}
 	}
 
@@ -90,7 +90,7 @@ namespace RandomX {
 	}
 
 	void Instruction::h_IMUL_9C(std::ostream& os) const {
-		os << "r" << (int)dst << ", " << imm32 << std::endl;
+		os << "r" << (int)dst << ", " << (int32_t)imm32 << std::endl;
 	}
 
 	void Instruction::h_IMUL_R(std::ostream& os) const {
@@ -98,7 +98,7 @@ namespace RandomX {
 			os << "r" << (int)dst << ", r" << (int)src << std::endl;
 		}
 		else {
-			os << "r" << (int)dst << ", " << imm32 << std::endl;
+			os << "r" << (int)dst << ", " << (int32_t)imm32 << std::endl;
 		}
 	}
 
@@ -158,7 +158,7 @@ namespace RandomX {
 			os << "r" << (int)dst << ", r" << (int)src << std::endl;
 		}
 		else {
-			os << "r" << (int)dst << ", " << imm32 << std::endl;
+			os << "r" << (int)dst << ", " << (int32_t)imm32 << std::endl;
 		}
 	}
 
@@ -194,11 +194,11 @@ namespace RandomX {
 	}
 
 	void Instruction::h_IDIV_C(std::ostream& os) const {
-		os << "r" << (int)dst << ", " << (uint32_t)imm32 << std::endl;
+		os << "r" << (int)dst << ", " << imm32 << std::endl;
 	}
 
 	void Instruction::h_ISDIV_C(std::ostream& os) const {
-		os << "r" << (int)dst << ", " << imm32 << std::endl;
+		os << "r" << (int)dst << ", " << (int32_t)imm32 << std::endl;
 	}
 
 	void Instruction::h_ISWAP_R(std::ostream& os) const {
@@ -300,13 +300,13 @@ namespace RandomX {
 	}
 
 	void Instruction::h_COND_R(std::ostream& os) const {
-		os << "r" << (int)dst << ", " << condition((mod >> 2) & 7) << "(r" << (int)src << ", " << imm32 << ")" << std::endl;
+		os << "r" << (int)dst << ", " << condition((mod >> 2) & 7) << "(r" << (int)src << ", " << (int32_t)imm32 << ")" << std::endl;
 	}
 
 	void Instruction::h_COND_M(std::ostream& os) const {
 		os << "r" << (int)dst << ", " << condition((mod >> 2) & 7) << "(";
 		genAddressReg(os);
-		os << ", " << imm32 << ")" << std::endl;
+		os << ", " << (int32_t)imm32 << ")" << std::endl;
 	}
 
 	void  Instruction::h_ISTORE(std::ostream& os) const {

+ 0 - 1
src/InterpretedVirtualMachine.cpp

@@ -19,7 +19,6 @@ along with RandomX.  If not, see<http://www.gnu.org/licenses/>.
 //#define TRACE
 //#define FPUCHECK
 #include "InterpretedVirtualMachine.hpp"
-#include "instructions.hpp"
 #include "dataset.hpp"
 #include "Cache.hpp"
 #include "LightClientAsyncWorker.hpp"

+ 0 - 1
src/main.cpp

@@ -29,7 +29,6 @@ along with RandomX.  If not, see<http://www.gnu.org/licenses/>.
 #include <cstring>
 #include "Program.hpp"
 #include <string>
-#include "instructions.hpp"
 #include <thread>
 #include <atomic>
 #include "dataset.hpp"

+ 652 - 648
src/program.inc

@@ -1,736 +1,740 @@
-	; FMUL_R e0, a2
-	mulpd xmm4, xmm10
-	; IADD_RC r2, r5, 2673743102
-	lea r10, [r10+r13-1621224194]
-	; ISTORE L2[r2], r7
-	mov eax, r10d
-	and eax, 262136
-	mov qword ptr [rsi+rax], r15
-	; FNEG_R f2
-	xorps xmm2, xmm15
-	; IMUL_9C r6, 3291464084
-	lea r14, [r14+r14*8-1003503212]
-	; FSUB_R f1, a0
-	subpd xmm1, xmm8
-	; IXOR_M r5, L2[r3]
+	; COND_M r1, sg(L1[r3], -2004237569)
+	xor ecx, ecx
 	mov eax, r11d
+	and eax, 16376
+	cmp dword ptr [rsi+rax], -2004237569
+	sets cl
+	add r9, rcx
+	; IXOR_R r7, -1379425991
+	xor r15, -1379425991
+	; IXOR_R r2, r6
+	xor r10, r14
+	; FSWAP_R f3
+	shufpd xmm3, xmm3, 1
+	; FADD_R f1, a1
+	addpd xmm1, xmm9
+	; IMUL_R r0, r5
+	imul r8, r13
+	; FMUL_R e1, a3
+	mulpd xmm5, xmm11
+	; IADD_R r3, r2
+	add r11, r10
+	; COND_M r1, ab(L2[r6], -724006934)
+	xor ecx, ecx
+	mov eax, r14d
 	and eax, 262136
-	xor r13, qword ptr [rsi+rax]
-	; FNEG_R f2
-	xorps xmm2, xmm15
-	; FSUB_R f3, a0
-	subpd xmm3, xmm8
-	; ISDIV_C r0, 1400272688
-	mov rax, 7072565507528518045
-	imul r8
+	cmp dword ptr [rsi+rax], -724006934
+	seta cl
+	add r9, rcx
+	; IADD_RC r2, r7, -854121467
+	lea r10, [r10+r15-854121467]
+	; IADD_RC r5, r6, 1291744030
+	lea r13, [r13+r14+1291744030]
+	; ISTORE L2[r6], r4
+	mov eax, r14d
+	and eax, 262136
+	mov qword ptr [rsi+rax], r12
+	; IMUL_R r6, r7
+	imul r14, r15
+	; FSUB_R f0, a3
+	subpd xmm0, xmm11
+	; IADD_M r3, L1[r0]
+	mov eax, r8d
+	and eax, 16376
+	add r11, qword ptr [rsi+rax]
+	; ISDIV_C r4, -692911499
+	mov rax, -893288710803585809
+	imul r12
 	xor eax, eax
-	sar rdx, 29
+	sar rdx, 25
 	sets al
 	add rdx, rax
-	add r8, rdx
-	; IMUL_M r3, L1[r7]
-	mov eax, r15d
-	and eax, 16376
-	imul r11, qword ptr [rsi+rax]
-	; ISWAP_R r2, r3
-	xchg r10, r11
-	; IMULH_R r6, r0
-	mov rax, r14
-	mul r8
-	mov r14, rdx
-	; FMUL_R e0, a2
-	mulpd xmm4, xmm10
-	; IADD_RC r3, r4, 4242706868
-	lea r11, [r11+r12-52260428]
-	; IADD_R r7, 3156349536
-	add r15, -1138617760
-	; IXOR_M r2, L1[r6]
-	mov eax, r14d
-	and eax, 16376
-	xor r10, qword ptr [rsi+rax]
-	; FSUB_M f2, L1[r5]
-	mov eax, r13d
+	add r12, rdx
+	; FMUL_R e0, a0
+	mulpd xmm4, xmm8
+	; FDIV_M e1, L1[r0]
+	mov eax, r8d
 	and eax, 16376
 	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	subpd xmm2, xmm12
-	; IXOR_R r7, r1
-	xor r15, r9
-	; COND_R r2, lt(r7, 4253348488)
+	andps xmm12, xmm14
+	divpd xmm5, xmm12
+	maxpd xmm5, xmm13
+	; FMUL_R e0, a1
+	mulpd xmm4, xmm9
+	; COND_M r0, no(L1[r1], -540292380)
+	xor ecx, ecx
+	mov eax, r9d
+	and eax, 16376
+	cmp dword ptr [rsi+rax], -540292380
+	setno cl
+	add r8, rcx
+	; FSUB_R f1, a1
+	subpd xmm1, xmm9
+	; IADD_RC r0, r2, 310371682
+	lea r8, [r8+r10+310371682]
+	; COND_R r3, lt(r0, -1067603143)
 	xor ecx, ecx
-	cmp r15d, -41618808
+	cmp r8d, -1067603143
 	setl cl
-	add r10, rcx
-	; FMUL_R e3, a0
-	mulpd xmm7, xmm8
-	; COND_R r4, sg(r1, 3333776931)
+	add r11, rcx
+	; FMUL_R e0, a0
+	mulpd xmm4, xmm8
+	; FADD_R f0, a3
+	addpd xmm0, xmm11
+	; COND_R r4, sg(r3, -389806289)
 	xor ecx, ecx
-	cmp r9d, -961190365
+	cmp r11d, -389806289
 	sets cl
 	add r12, rcx
-	; FADD_R f2, a1
-	addpd xmm2, xmm9
-	; FSUB_R f0, a3
-	subpd xmm0, xmm11
-	; ISTORE L1[r6], r2
-	mov eax, r14d
-	and eax, 16376
-	mov qword ptr [rsi+rax], r10
-	; ISUB_R r6, r5
-	sub r14, r13
-	; IADD_M r0, L1[r4]
-	mov eax, r12d
+	; FMUL_R e0, a3
+	mulpd xmm4, xmm11
+	; ISTORE L2[r7], r4
+	mov eax, r15d
+	and eax, 262136
+	mov qword ptr [rsi+rax], r12
+	; IADD_RC r4, r2, 1888908452
+	lea r12, [r12+r10+1888908452]
+	; IADD_R r1, r2
+	add r9, r10
+	; IXOR_R r6, r5
+	xor r14, r13
+	; IADD_M r7, L1[r0]
+	mov eax, r8d
 	and eax, 16376
-	add r8, qword ptr [rsi+rax]
-	; ISTORE L1[r4], r3
-	mov eax, r12d
+	add r15, qword ptr [rsi+rax]
+	; IADD_R r5, r6
+	add r13, r14
+	; FSUB_R f0, a1
+	subpd xmm0, xmm9
+	; IMULH_R r5, r4
+	mov rax, r13
+	mul r12
+	mov r13, rdx
+	; IMUL_9C r7, 753606235
+	lea r15, [r15+r15*8+753606235]
+	; FSWAP_R e2
+	shufpd xmm6, xmm6, 1
+	; IMUL_M r7, L1[r1]
+	mov eax, r9d
 	and eax, 16376
-	mov qword ptr [rsi+rax], r11
-	; COND_M r6, sg(L1[r6], 1048782623)
+	imul r15, qword ptr [rsi+rax]
+	; IMUL_R r5, 1431156245
+	imul r13, 1431156245
+	; IADD_RC r4, r2, 1268508410
+	lea r12, [r12+r10+1268508410]
+	; FSWAP_R f2
+	shufpd xmm2, xmm2, 1
+	; ISDIV_C r0, -845194077
+	mov rax, -5858725577819591251
+	imul r8
+	xor eax, eax
+	sar rdx, 28
+	sets al
+	add rdx, rax
+	add r8, rdx
+	; COND_R r0, ab(r5, 1644043355)
 	xor ecx, ecx
-	mov eax, r14d
+	cmp r13d, 1644043355
+	seta cl
+	add r8, rcx
+	; COND_R r5, lt(r0, 1216385844)
+	xor ecx, ecx
+	cmp r8d, 1216385844
+	setl cl
+	add r13, rcx
+	; IMUL_R r5, r2
+	imul r13, r10
+	; ISTORE L1[r4], r6
+	mov eax, r12d
 	and eax, 16376
-	cmp dword ptr [rsi+rax], 1048782623
-	sets cl
-	add r14, rcx
-	; FSQRT_R e0
-	sqrtpd xmm4, xmm4
-	; INEG_R r2
-	neg r10
+	mov qword ptr [rsi+rax], r14
+	; IXOR_R r4, r3
+	xor r12, r11
+	; IXOR_R r6, r2
+	xor r14, r10
 	; FSQRT_R e1
 	sqrtpd xmm5, xmm5
-	; FMUL_R e1, a3
-	mulpd xmm5, xmm11
-	; IMUL_R r7, r6
-	imul r15, r14
-	; IMULH_R r0, r4
-	mov rax, r8
-	mul r12
-	mov r8, rdx
-	; IMUL_R r5, r3
-	imul r13, r11
-	; FSQRT_R e2
-	sqrtpd xmm6, xmm6
-	; FADD_R f3, a0
-	addpd xmm3, xmm8
-	; IADD_R r3, r2
-	add r11, r10
-	; FADD_R f1, a0
-	addpd xmm1, xmm8
-	; FMUL_R e3, a2
-	mulpd xmm7, xmm10
-	; FADD_M f0, L2[r5]
-	mov eax, r13d
-	and eax, 262136
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	addpd xmm0, xmm12
-	; IMUL_R r5, r6
-	imul r13, r14
-	; IADD_RC r1, r2, 3031682053
-	lea r9, [r9+r10-1263285243]
-	; ISUB_M r4, L1[r6]
-	mov eax, r14d
-	and eax, 16376
-	sub r12, qword ptr [rsi+rax]
-	; FSWAP_R e3
-	shufpd xmm7, xmm7, 1
-	; IMUL_R r0, r7
-	imul r8, r15
-	; IXOR_R r1, r6
-	xor r9, r14
-	; IXOR_M r2, L1[r4]
-	mov eax, r12d
-	and eax, 16376
-	xor r10, qword ptr [rsi+rax]
-	; FSUB_R f3, a1
-	subpd xmm3, xmm9
-	; ISTORE L1[r0], r5
-	mov eax, r8d
-	and eax, 16376
-	mov qword ptr [rsi+rax], r13
-	; FDIV_M e2, L2[r3]
+	; COND_R r5, be(r1, 1781435695)
+	xor ecx, ecx
+	cmp r9d, 1781435695
+	setbe cl
+	add r13, rcx
+	; ISDIV_C r0, 1367038890
+	mov rax, 1811126293978922977
+	imul r8
+	xor eax, eax
+	sar rdx, 27
+	sets al
+	add rdx, rax
+	add r8, rdx
+	; FDIV_M e1, L1[r3]
 	mov eax, r11d
-	and eax, 262136
+	and eax, 16376
 	cvtdq2pd xmm12, qword ptr [rsi+rax]
 	andps xmm12, xmm14
-	divpd xmm6, xmm12
-	maxpd xmm6, xmm13
-	; ISWAP_R r2, r0
-	xchg r10, r8
-	; IADD_R r7, r5
-	add r15, r13
-	; FDIV_M e0, L1[r4]
-	mov eax, r12d
+	divpd xmm5, xmm12
+	maxpd xmm5, xmm13
+	; FMUL_R e2, a0
+	mulpd xmm6, xmm8
+	; ISTORE L1[r5], r4
+	mov eax, r13d
+	and eax, 16376
+	mov qword ptr [rsi+rax], r12
+	; IXOR_R r0, r4
+	xor r8, r12
+	; IMUL_R r5, r1
+	imul r13, r9
+	; FDIV_M e0, L1[r2]
+	mov eax, r10d
 	and eax, 16376
 	cvtdq2pd xmm12, qword ptr [rsi+rax]
 	andps xmm12, xmm14
 	divpd xmm4, xmm12
 	maxpd xmm4, xmm13
-	; FADD_R f3, a1
-	addpd xmm3, xmm9
-	; FADD_R f0, a3
-	addpd xmm0, xmm11
-	; IADD_R r2, r0
-	add r10, r8
-	; ISTORE L1[r3], r6
-	mov eax, r11d
-	and eax, 16376
-	mov qword ptr [rsi+rax], r14
-	; IXOR_R r1, r7
-	xor r9, r15
-	; ISUB_M r5, L2[r7]
-	mov eax, r15d
-	and eax, 262136
-	sub r13, qword ptr [rsi+rax]
-	; ISDIV_C r7, 266992378
-	mov rax, -9173520256920442565
-	imul r15
-	xor eax, eax
-	add rdx, r15
-	sar rdx, 27
-	sets al
-	add rdx, rax
-	add r15, rdx
-	; FDIV_M e3, L1[r4]
-	mov eax, r12d
+	; IMUL_R r6, r1
+	imul r14, r9
+	; FSUB_M f1, L1[r0]
+	mov eax, r8d
 	and eax, 16376
 	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	andps xmm12, xmm14
-	divpd xmm7, xmm12
-	maxpd xmm7, xmm13
-	; IMUL_R r2, r0
-	imul r10, r8
-	; FMUL_R e3, a2
-	mulpd xmm7, xmm10
-	; IMUL_R r0, r6
-	imul r8, r14
-	; ISTORE L1[r0], r7
+	subpd xmm1, xmm12
+	; COND_R r2, ns(r1, 392878356)
+	xor ecx, ecx
+	cmp r9d, 392878356
+	setns cl
+	add r10, rcx
+	; IADD_R r6, r5
+	add r14, r13
+	; FMUL_R e2, a0
+	mulpd xmm6, xmm8
+	; ISTORE L1[r0], r3
 	mov eax, r8d
 	and eax, 16376
-	mov qword ptr [rsi+rax], r15
-	; FSUB_M f0, L2[r1]
-	mov eax, r9d
-	and eax, 262136
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	subpd xmm0, xmm12
-	; FADD_R f3, a1
-	addpd xmm3, xmm9
-	; IXOR_R r5, r4
-	xor r13, r12
-	; ISTORE L2[r7], r2
-	mov eax, r15d
-	and eax, 262136
-	mov qword ptr [rsi+rax], r10
-	; FSWAP_R e2
-	shufpd xmm6, xmm6, 1
-	; FADD_R f3, a2
-	addpd xmm3, xmm10
-	; ISMULH_R r5, r0
-	mov rax, r13
-	imul r8
-	mov r13, rdx
-	; IADD_M r0, L1[r4]
-	mov eax, r12d
+	mov qword ptr [rsi+rax], r11
+	; IMUL_R r1, r3
+	imul r9, r11
+	; IMUL_R r5, r2
+	imul r13, r10
+	; FADD_R f0, a0
+	addpd xmm0, xmm8
+	; FADD_R f0, a1
+	addpd xmm0, xmm9
+	; FSUB_R f0, a0
+	subpd xmm0, xmm8
+	; IMUL_R r3, r5
+	imul r11, r13
+	; IADD_R r1, r5
+	add r9, r13
+	; IXOR_M r0, L1[r5]
+	mov eax, r13d
 	and eax, 16376
-	add r8, qword ptr [rsi+rax]
-	; COND_R r7, ge(r6, 2322068811)
+	xor r8, qword ptr [rsi+rax]
+	; FNEG_R f2
+	xorps xmm2, xmm15
+	; IDIV_C r5, 2577129788
+	mov rax, 15371395512010654233
+	mul r13
+	shr rdx, 31
+	add r13, rdx
+	; COND_R r5, be(r5, -999219370)
 	xor ecx, ecx
-	cmp r14d, -1972898485
-	setge cl
-	add r15, rcx
-	; FADD_R f2, a2
-	addpd xmm2, xmm10
+	cmp r13d, -999219370
+	setbe cl
+	add r13, rcx
+	; ISTORE L2[r0], r2
+	mov eax, r8d
+	and eax, 262136
+	mov qword ptr [rsi+rax], r10
+	; FSUB_R f3, a3
+	subpd xmm3, xmm11
 	; IROR_R r7, r6
 	mov ecx, r14d
 	ror r15, cl
-	; IADD_RC r2, r4, 4177509323
-	lea r10, [r10+r12-117457973]
-	; IMUL_R r0, 2794074228
-	imul r8, -1500893068
-	; IADD_R r2, r3
-	add r10, r11
-	; FSQRT_R e2
-	sqrtpd xmm6, xmm6
-	; IROR_R r7, r4
-	mov ecx, r12d
-	ror r15, cl
-	; IMUL_9C r4, 381194890
-	lea r12, [r12+r12*8+381194890]
-	; IADD_RC r3, r7, 1050899263
-	lea r11, [r11+r15+1050899263]
-	; IADD_R r2, r7
-	add r10, r15
+	; COND_R r6, ab(r4, 1309137534)
+	xor ecx, ecx
+	cmp r12d, 1309137534
+	seta cl
+	add r14, rcx
 	; FMUL_R e3, a0
 	mulpd xmm7, xmm8
-	; IADD_RC r6, r6, 540663146
-	lea r14, [r14+r14+540663146]
-	; IROR_R r5, 58
-	ror r13, 58
+	; COND_M r3, no(L2[r5], 483660199)
+	xor ecx, ecx
+	mov eax, r13d
+	and eax, 262136
+	cmp dword ptr [rsi+rax], 483660199
+	setno cl
+	add r11, rcx
+	; IMUL_R r1, r6
+	imul r9, r14
+	; IADD_RC r7, r2, -1340630490
+	lea r15, [r15+r10-1340630490]
+	; IADD_M r0, L3[1554088]
+	add r8, qword ptr [rsi+1554088]
+	; FMUL_R e2, a3
+	mulpd xmm6, xmm11
+	; IDIV_C r0, 1566192452
+	mov rax, 12646619898641986559
+	mul r8
+	shr rdx, 30
+	add r8, rdx
+	; FADD_R f0, a1
+	addpd xmm0, xmm9
+	; ISWAP_R r6, r0
+	xchg r14, r8
+	; IMUL_9C r4, 1340891034
+	lea r12, [r12+r12*8+1340891034]
+	; IROR_R r7, r2
+	mov ecx, r10d
+	ror r15, cl
+	; FSQRT_R e2
+	sqrtpd xmm6, xmm6
 	; FADD_R f2, a1
 	addpd xmm2, xmm9
-	; FADD_R f2, a2
-	addpd xmm2, xmm10
-	; FMUL_R e1, a2
-	mulpd xmm5, xmm10
-	; FSWAP_R e1
-	shufpd xmm5, xmm5, 1
-	; IADD_R r5, r3
-	add r13, r11
-	; IADD_R r7, 2514699120
-	add r15, -1780268176
-	; IADD_RC r7, r0, 2797210442
-	lea r15, [r15+r8-1497756854]
-	; ISTORE L2[r0], r7
-	mov eax, r8d
-	and eax, 262136
-	mov qword ptr [rsi+rax], r15
-	; ISMULH_R r2, r4
-	mov rax, r10
-	imul r12
-	mov r10, rdx
-	; FSUB_M f0, L1[r2]
-	mov eax, r10d
-	and eax, 16376
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	subpd xmm0, xmm12
-	; ISMULH_R r2, r3
-	mov rax, r10
-	imul r11
-	mov r10, rdx
-	; IADD_R r0, r3
-	add r8, r11
-	; ISUB_R r7, r2
-	sub r15, r10
-	; FADD_R f2, a0
-	addpd xmm2, xmm8
-	; FMUL_R e0, a2
-	mulpd xmm4, xmm10
-	; FADD_M f2, L1[r3]
-	mov eax, r11d
-	and eax, 16376
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	addpd xmm2, xmm12
-	; IMUL_R r1, r2
-	imul r9, r10
-	; IMUL_M r7, L1[r5]
-	mov eax, r13d
-	and eax, 16376
-	imul r15, qword ptr [rsi+rax]
-	; IMUL_R r3, r2
-	imul r11, r10
-	; IXOR_R r1, r0
-	xor r9, r8
-	; FNEG_R f0
-	xorps xmm0, xmm15
-	; IADD_RC r4, r4, 1456841848
-	lea r12, [r12+r12+1456841848]
-	; IXOR_R r3, r2
-	xor r11, r10
-	; COND_R r0, of(r4, 1678513610)
+	; IMUL_R r4, r3
+	imul r12, r11
+	; IADD_RC r6, r3, -1584624397
+	lea r14, [r14+r11-1584624397]
+	; IROR_R r1, r7
+	mov ecx, r15d
+	ror r9, cl
+	; IXOR_R r4, r7
+	xor r12, r15
+	; FSWAP_R f0
+	shufpd xmm0, xmm0, 1
+	; FSWAP_R f3
+	shufpd xmm3, xmm3, 1
+	; IROR_R r5, 3
+	ror r13, 3
+	; FADD_R f3, a0
+	addpd xmm3, xmm8
+	; FMUL_R e0, a0
+	mulpd xmm4, xmm8
+	; IADD_R r4, r1
+	add r12, r9
+	; COND_M r4, ge(L1[r6], -1612023931)
 	xor ecx, ecx
-	cmp r12d, 1678513610
-	seto cl
-	add r8, rcx
-	; ISMULH_R r4, r4
-	mov rax, r12
-	imul r12
-	mov r12, rdx
-	; IMUL_R r4, r1
-	imul r12, r9
-	; FADD_R f1, a2
-	addpd xmm1, xmm10
-	; FSUB_R f2, a0
-	subpd xmm2, xmm8
-	; FMUL_R e1, a2
-	mulpd xmm5, xmm10
-	; FSUB_R f0, a3
-	subpd xmm0, xmm11
-	; IXOR_R r0, r7
-	xor r8, r15
-	; ISTORE L2[r1], r4
-	mov eax, r9d
-	and eax, 262136
-	mov qword ptr [rsi+rax], r12
-	; IXOR_M r7, L1[r6]
 	mov eax, r14d
 	and eax, 16376
-	xor r15, qword ptr [rsi+rax]
-	; ISUB_R r2, r4
-	sub r10, r12
-	; ISUB_M r4, L1[r6]
-	mov eax, r14d
-	and eax, 16376
-	sub r12, qword ptr [rsi+rax]
-	; FADD_R f2, a2
-	addpd xmm2, xmm10
-	; FSUB_M f3, L2[r4]
-	mov eax, r12d
-	and eax, 262136
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	subpd xmm3, xmm12
-	; IXOR_R r7, r2
-	xor r15, r10
-	; IXOR_R r0, r5
-	xor r8, r13
-	; FADD_R f1, a2
-	addpd xmm1, xmm10
-	; FMUL_R e3, a2
-	mulpd xmm7, xmm10
-	; FSWAP_R e3
-	shufpd xmm7, xmm7, 1
-	; FSWAP_R f1
-	shufpd xmm1, xmm1, 1
-	; COND_R r2, ge(r2, 4068636356)
-	xor ecx, ecx
-	cmp r10d, -226330940
+	cmp dword ptr [rsi+rax], -1612023931
 	setge cl
-	add r10, rcx
+	add r12, rcx
+	; FSWAP_R e2
+	shufpd xmm6, xmm6, 1
+	; IADD_R r3, r7
+	add r11, r15
+	; COND_R r5, be(r2, -1083018923)
+	xor ecx, ecx
+	cmp r10d, -1083018923
+	setbe cl
+	add r13, rcx
+	; IADD_R r3, r7
+	add r11, r15
+	; ISTORE L2[r6], r0
+	mov eax, r14d
+	and eax, 262136
+	mov qword ptr [rsi+rax], r8
+	; IXOR_R r2, r3
+	xor r10, r11
 	; FMUL_R e2, a3
 	mulpd xmm6, xmm11
-	; FSUB_M f2, L2[r1]
-	mov eax, r9d
-	and eax, 262136
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	subpd xmm2, xmm12
-	; FADD_R f1, a0
-	addpd xmm1, xmm8
-	; ISUB_R r7, r5
-	sub r15, r13
-	; ISUB_M r0, L1[r1]
-	mov eax, r9d
-	and eax, 16376
-	sub r8, qword ptr [rsi+rax]
-	; FSUB_R f3, a1
-	subpd xmm3, xmm9
-	; ISWAP_R r3, r5
-	xchg r11, r13
-	; IADD_RC r5, r2, 795784298
-	lea r13, [r13+r10+795784298]
-	; IADD_RC r0, r4, 2244788743
-	lea r8, [r8+r12-2050178553]
-	; IMUL_9C r5, 1062534001
-	lea r13, [r13+r13*8+1062534001]
+	; FMUL_R e3, a3
+	mulpd xmm7, xmm11
 	; FADD_R f0, a2
 	addpd xmm0, xmm10
-	; FMUL_R e3, a1
-	mulpd xmm7, xmm9
-	; IDIV_C r3, 1662492575
-	mov rax, 11914062610815620875
-	mul r11
-	shr rdx, 30
-	add r11, rdx
-	; IMUL_M r5, L1[r0]
-	mov eax, r8d
-	and eax, 16376
-	imul r13, qword ptr [rsi+rax]
-	; IDIV_C r4, 1963597892
-	mov rax, r12
-	shr rax, 2
-	mov rcx, 1260889558222626443
-	mul rcx
-	shr rdx, 25
-	add r12, rdx
-	; IMUL_9C r7, 1820045218
-	lea r15, [r15+r15*8+1820045218]
-	; IMUL_M r0, L1[r3]
-	mov eax, r11d
+	; ISTORE L1[r5], r1
+	mov eax, r13d
 	and eax, 16376
-	imul r8, qword ptr [rsi+rax]
-	; IXOR_R r3, r7
-	xor r11, r15
-	; ISMULH_R r4, r2
-	mov rax, r12
-	imul r10
-	mov r12, rdx
-	; ISWAP_R r3, r0
-	xchg r11, r8
-	; IXOR_R r2, r0
-	xor r10, r8
-	; IXOR_M r0, L2[r1]
-	mov eax, r9d
+	mov qword ptr [rsi+rax], r9
+	; FMUL_R e3, a3
+	mulpd xmm7, xmm11
+	; ISWAP_R r1, r2
+	xchg r9, r10
+	; FSWAP_R e0
+	shufpd xmm4, xmm4, 1
+	; FSUB_R f1, a2
+	subpd xmm1, xmm10
+	; FSUB_R f0, a0
+	subpd xmm0, xmm8
+	; IROR_R r7, r0
+	mov ecx, r8d
+	ror r15, cl
+	; IADD_RC r5, r4, 283260945
+	lea r13, [r13+r12+283260945]
+	; ISDIV_C r6, -340125851
+	mov rax, -3639652898025032137
+	imul r14
+	xor eax, eax
+	sar rdx, 26
+	sets al
+	add rdx, rax
+	add r14, rdx
+	; ISTORE L2[r2], r3
+	mov eax, r10d
 	and eax, 262136
-	xor r8, qword ptr [rsi+rax]
-	; ISDIV_C r7, 3359520316
-	mov rax, 7859804860668271393
-	imul r15
+	mov qword ptr [rsi+rax], r11
+	; IADD_RC r6, r6, -935765909
+	lea r14, [r14+r14-935765909]
+	; ISDIV_C r3, -701703430
+	mov rax, -7056770631919985199
+	imul r11
 	xor eax, eax
-	sub rdx, r15
-	sar rdx, 29
+	sar rdx, 28
 	sets al
 	add rdx, rax
-	add r15, rdx
-	; IMUL_M r6, L1[r2]
+	add r11, rdx
+	; IXOR_M r3, L2[r1]
+	mov eax, r9d
+	and eax, 262136
+	xor r11, qword ptr [rsi+rax]
+	; FADD_R f2, a1
+	addpd xmm2, xmm9
+	; ISTORE L1[r5], r7
+	mov eax, r13d
+	and eax, 16376
+	mov qword ptr [rsi+rax], r15
+	; FSUB_R f2, a0
+	subpd xmm2, xmm8
+	; FMUL_R e3, a2
+	mulpd xmm7, xmm10
+	; IADD_R r2, r5
+	add r10, r13
+	; IADD_RC r2, r5, -1056770544
+	lea r10, [r10+r13-1056770544]
+	; ISTORE L2[r2], r3
 	mov eax, r10d
+	and eax, 262136
+	mov qword ptr [rsi+rax], r11
+	; ISMULH_R r7, r1
+	mov rax, r15
+	imul r9
+	mov r15, rdx
+	; IXOR_R r0, r5
+	xor r8, r13
+	; ISTORE L1[r4], r0
+	mov eax, r12d
 	and eax, 16376
-	imul r14, qword ptr [rsi+rax]
+	mov qword ptr [rsi+rax], r8
+	; INEG_R r5
+	neg r13
+	; FSUB_R f0, a1
+	subpd xmm0, xmm9
+	; IMUL_R r6, -244261682
+	imul r14, -244261682
+	; IMUL_R r1, r0
+	imul r9, r8
+	; IMUL_9C r3, -985744277
+	lea r11, [r11+r11*8-985744277]
+	; IROR_R r2, r1
+	mov ecx, r9d
+	ror r10, cl
+	; ISUB_R r4, -1079131550
+	sub r12, -1079131550
 	; FNEG_R f3
 	xorps xmm3, xmm15
-	; IADD_RC r4, r2, 1704868083
-	lea r12, [r12+r10+1704868083]
-	; FADD_R f2, a0
-	addpd xmm2, xmm8
-	; ISTORE L1[r0], r0
-	mov eax, r8d
+	; COND_R r4, ns(r5, -362284631)
+	xor ecx, ecx
+	cmp r13d, -362284631
+	setns cl
+	add r12, rcx
+	; FSUB_R f2, a0
+	subpd xmm2, xmm8
+	; IXOR_R r4, r5
+	xor r12, r13
+	; FNEG_R f1
+	xorps xmm1, xmm15
+	; FADD_R f0, a0
+	addpd xmm0, xmm8
+	; IADD_RC r3, r3, -173615832
+	lea r11, [r11+r11-173615832]
+	; IMUL_R r0, 928402279
+	imul r8, 928402279
+	; ISUB_R r2, r0
+	sub r10, r8
+	; IXOR_R r6, r3
+	xor r14, r11
+	; ISUB_R r2, 2106401471
+	sub r10, 2106401471
+	; FADD_R f0, a2
+	addpd xmm0, xmm10
+	; IMUL_R r4, r6
+	imul r12, r14
+	; IADD_RC r4, r0, -373491513
+	lea r12, [r12+r8-373491513]
+	; ISDIV_C r0, -1739042721
+	mov rax, 7057121271817449967
+	imul r8
+	xor eax, eax
+	sub rdx, r8
+	sar rdx, 30
+	sets al
+	add rdx, rax
+	add r8, rdx
+	; IADD_R r3, r1
+	add r11, r9
+	; ISUB_M r7, L1[r5]
+	mov eax, r13d
 	and eax, 16376
-	mov qword ptr [rsi+rax], r8
-	; FADD_M f0, L1[r7]
-	mov eax, r15d
+	sub r15, qword ptr [rsi+rax]
+	; IMUL_R r1, r2
+	imul r9, r10
+	; ISUB_R r0, 722465116
+	sub r8, 722465116
+	; IADD_RC r0, r0, -1919541169
+	lea r8, [r8+r8-1919541169]
+	; ISUB_M r2, L1[r3]
+	mov eax, r11d
+	and eax, 16376
+	sub r10, qword ptr [rsi+rax]
+	; IADD_R r7, -1183581468
+	add r15, -1183581468
+	; FMUL_R e1, a3
+	mulpd xmm5, xmm11
+	; FSUB_R f0, a0
+	subpd xmm0, xmm8
+	; FADD_R f0, a3
+	addpd xmm0, xmm11
+	; IMUL_9C r6, 1241113238
+	lea r14, [r14+r14*8+1241113238]
+	; FSUB_R f3, a3
+	subpd xmm3, xmm11
+	; IADD_M r0, L1[r3]
+	mov eax, r11d
+	and eax, 16376
+	add r8, qword ptr [rsi+rax]
+	; IROR_R r3, r7
+	mov ecx, r15d
+	ror r11, cl
+	; FADD_R f2, a1
+	addpd xmm2, xmm9
+	; IMUL_M r3, L1[r2]
+	mov eax, r10d
+	and eax, 16376
+	imul r11, qword ptr [rsi+rax]
+	; IMUL_9C r7, -2080412544
+	lea r15, [r15+r15*8-2080412544]
+	; IMUL_R r0, r3
+	imul r8, r11
+	; FADD_R f1, a1
+	addpd xmm1, xmm9
+	; IROR_R r6, 21
+	ror r14, 21
+	; FDIV_M e3, L1[r1]
+	mov eax, r9d
 	and eax, 16376
 	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	addpd xmm0, xmm12
-	; FMUL_R e0, a3
-	mulpd xmm4, xmm11
-	; FSUB_R f3, a2
-	subpd xmm3, xmm10
-	; IADD_RC r7, r7, 1302457878
-	lea r15, [r15+r15+1302457878]
-	; ISUB_R r1, 1330165941
-	sub r9, 1330165941
-	; FNEG_R f1
-	xorps xmm1, xmm15
-	; IROR_R r0, r4
-	mov ecx, r12d
-	ror r8, cl
-	; FSUB_R f1, a0
-	subpd xmm1, xmm8
-	; IROR_R r5, r6
-	mov ecx, r14d
-	ror r13, cl
-	; COND_R r0, ab(r1, 3984033425)
+	andps xmm12, xmm14
+	divpd xmm7, xmm12
+	maxpd xmm7, xmm13
+	; FSUB_R f0, a1
+	subpd xmm0, xmm9
+	; FSWAP_R e1
+	shufpd xmm5, xmm5, 1
+	; COND_M r0, no(L1[r5], -1627153829)
 	xor ecx, ecx
-	cmp r9d, -310933871
-	seta cl
+	mov eax, r13d
+	and eax, 16376
+	cmp dword ptr [rsi+rax], -1627153829
+	setno cl
 	add r8, rcx
-	; COND_R r4, ab(r7, 757929676)
-	xor ecx, ecx
-	cmp r15d, 757929676
-	seta cl
-	add r12, rcx
-	; FMUL_R e0, a1
-	mulpd xmm4, xmm9
-	; IMUL_R r1, r3
-	imul r9, r11
-	; ISUB_R r3, r2
-	sub r11, r10
-	; FSUB_R f3, a2
-	subpd xmm3, xmm10
-	; FDIV_M e1, L1[r4]
+	; FADD_R f2, a3
+	addpd xmm2, xmm11
+	; FSUB_R f1, a2
+	subpd xmm1, xmm10
+	; FSUB_M f1, L1[r4]
 	mov eax, r12d
 	and eax, 16376
 	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	andps xmm12, xmm14
-	divpd xmm5, xmm12
-	maxpd xmm5, xmm13
-	; FSWAP_R f1
-	shufpd xmm1, xmm1, 1
-	; IADD_R r7, 2873779272
-	add r15, -1421188024
-	; FSUB_M f3, L2[r2]
-	mov eax, r10d
-	and eax, 262136
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	subpd xmm3, xmm12
-	; FSUB_R f2, a3
-	subpd xmm2, xmm11
-	; FSUB_R f3, a1
-	subpd xmm3, xmm9
-	; FMUL_R e1, a3
-	mulpd xmm5, xmm11
-	; IADD_RC r2, r4, 3977135268
-	lea r10, [r10+r12-317832028]
-	; IMUL_M r4, L1[r5]
+	subpd xmm1, xmm12
+	; ISTORE L1[r5], r1
 	mov eax, r13d
 	and eax, 16376
-	imul r12, qword ptr [rsi+rax]
-	; FDIV_M e1, L1[r7]
-	mov eax, r15d
-	and eax, 16376
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	andps xmm12, xmm14
-	divpd xmm5, xmm12
-	maxpd xmm5, xmm13
-	; IADD_R r5, r2
-	add r13, r10
-	; ISUB_R r4, 401020510
-	sub r12, 401020510
-	; IROR_R r3, r0
-	mov ecx, r8d
-	ror r11, cl
-	; ISTORE L1[r7], r0
+	mov qword ptr [rsi+rax], r9
+	; ISUB_M r2, L2[r7]
 	mov eax, r15d
+	and eax, 262136
+	sub r10, qword ptr [rsi+rax]
+	; ISTORE L1[r2], r3
+	mov eax, r10d
 	and eax, 16376
-	mov qword ptr [rsi+rax], r8
-	; FSUB_R f2, a1
-	subpd xmm2, xmm9
-	; FMUL_R e3, a1
-	mulpd xmm7, xmm9
-	; IMUL_9C r3, 720965215
-	lea r11, [r11+r11*8+720965215]
-	; IMUL_9C r6, 74948046
-	lea r14, [r14+r14*8+74948046]
-	; ISTORE L1[r7], r3
+	mov qword ptr [rsi+rax], r11
+	; FADD_R f0, a3
+	addpd xmm0, xmm11
+	; ISUB_M r1, L1[r7]
 	mov eax, r15d
 	and eax, 16376
-	mov qword ptr [rsi+rax], r11
-	; IXOR_R r2, r6
-	xor r10, r14
-	; FMUL_R e3, a1
-	mulpd xmm7, xmm9
-	; ISUB_R r4, r1
-	sub r12, r9
-	; ISUB_R r3, r0
-	sub r11, r8
-	; ISWAP_R r7, r5
-	xchg r15, r13
-	; IMUL_R r2, r6
-	imul r10, r14
-	; COND_R r2, ge(r2, 2402809790)
-	xor ecx, ecx
-	cmp r10d, -1892157506
-	setge cl
-	add r10, rcx
-	; FADD_R f1, a3
-	addpd xmm1, xmm11
-	; IADD_R r7, r0
-	add r15, r8
-	; IDIV_C r1, 624867857
-	mov rax, 15848983434401622933
-	mul r9
+	sub r9, qword ptr [rsi+rax]
+	; IDIV_C r5, 624165039
+	mov rax, 15866829597104432181
+	mul r13
 	shr rdx, 29
-	add r9, rdx
-	; FADD_R f0, a1
-	addpd xmm0, xmm9
-	; IADD_RC r5, r7, 3817376178
-	lea r13, [r13+r15-477591118]
-	; FSUB_R f0, a3
-	subpd xmm0, xmm11
-	; ISUB_M r6, L1[r2]
-	mov eax, r10d
-	and eax, 16376
-	sub r14, qword ptr [rsi+rax]
+	add r13, rdx
+	; FMUL_R e3, a0
+	mulpd xmm7, xmm8
+	; IMUL_R r5, r4
+	imul r13, r12
 	; FMUL_R e3, a1
 	mulpd xmm7, xmm9
-	; IADD_R r0, r4
-	add r8, r12
-	; FSUB_R f3, a1
-	subpd xmm3, xmm9
-	; FSUB_M f2, L1[r4]
-	mov eax, r12d
-	and eax, 16376
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	subpd xmm2, xmm12
-	; ISDIV_C r2, 3898255608
-	mov rax, 5964731804029407733
-	imul r10
-	xor eax, eax
-	sub rdx, r10
-	sar rdx, 28
-	sets al
-	add rdx, rax
-	add r10, rdx
-	; FNEG_R f2
-	xorps xmm2, xmm15
-	; FSUB_R f3, a2
-	subpd xmm3, xmm10
+	; FMUL_R e3, a3
+	mulpd xmm7, xmm11
+	; IXOR_R r0, -2064879200
+	xor r8, -2064879200
 	; FADD_R f1, a3
 	addpd xmm1, xmm11
-	; IMUL_R r3, r2
-	imul r11, r10
-	; FADD_M f0, L1[r3]
+	; IADD_M r0, L1[r3]
 	mov eax, r11d
 	and eax, 16376
-	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	addpd xmm0, xmm12
-	; ISMULH_R r5, r2
-	mov rax, r13
-	imul r10
-	mov r13, rdx
-	; IMULH_R r6, r2
-	mov rax, r14
-	mul r10
-	mov r14, rdx
-	; FADD_M f3, L1[r3]
-	mov eax, r11d
+	add r8, qword ptr [rsi+rax]
+	; ISMULH_R r7, r3
+	mov rax, r15
+	imul r11
+	mov r15, rdx
+	; IMUL_R r5, -1645503310
+	imul r13, -1645503310
+	; IMUL_R r7, r3
+	imul r15, r11
+	; FMUL_R e2, a2
+	mulpd xmm6, xmm10
+	; IADD_R r6, 1769041191
+	add r14, 1769041191
+	; FSUB_M f1, L1[r4]
+	mov eax, r12d
 	and eax, 16376
 	cvtdq2pd xmm12, qword ptr [rsi+rax]
-	addpd xmm3, xmm12
-	; IMUL_R r6, r7
-	imul r14, r15
-	; FSUB_R f0, a0
-	subpd xmm0, xmm8
-	; FNEG_R f2
-	xorps xmm2, xmm15
-	; ISUB_R r6, r4
-	sub r14, r12
+	subpd xmm1, xmm12
+	; ISTORE L2[r1], r0
+	mov eax, r9d
+	and eax, 262136
+	mov qword ptr [rsi+rax], r8
+	; FNEG_R f0
+	xorps xmm0, xmm15
+	; FMUL_R e0, a3
+	mulpd xmm4, xmm11
+	; IMUL_R r2, r7
+	imul r10, r15
+	; IADD_R r5, r1
+	add r13, r9
+	; IROR_R r3, r6
+	mov ecx, r14d
+	ror r11, cl
+	; FADD_R f0, a0
+	addpd xmm0, xmm8
+	; FMUL_R e1, a2
+	mulpd xmm5, xmm10
+	; FNEG_R f3
+	xorps xmm3, xmm15
 	; FADD_R f1, a1
 	addpd xmm1, xmm9
-	; IXOR_R r0, r5
-	xor r8, r13
-	; FADD_R f2, a1
-	addpd xmm2, xmm9
-	; ISWAP_R r7, r5
-	xchg r15, r13
-	; FMUL_R e3, a2
-	mulpd xmm7, xmm10
-	; IADD_RC r3, r6, 2977336568
-	lea r11, [r11+r14-1317630728]
-	; IMUL_R r2, r3
-	imul r10, r11
-	; IADD_RC r1, r4, 894105694
-	lea r9, [r9+r12+894105694]
-	; IMUL_9C r7, 504293473
-	lea r15, [r15+r15*8+504293473]
-	; FSUB_R f1, a0
-	subpd xmm1, xmm8
-	; IMUL_R r7, r1
-	imul r15, r9
-	; IXOR_R r2, r4
-	xor r10, r12
-	; IADD_RC r0, r1, 392362094
-	lea r8, [r8+r9+392362094]
-	; IDIV_C r4, 1645771433
-	mov rax, 376097195048767223
-	mul r12
-	shr rdx, 25
-	add r12, rdx
-	; ISUB_R r4, r3
-	sub r12, r11
-	; ISUB_M r7, L1[r4]
+	; IMULH_R r2, r5
+	mov rax, r10
+	mul r13
+	mov r10, rdx
+	; ISTORE L1[r4], r0
 	mov eax, r12d
 	and eax, 16376
-	sub r15, qword ptr [rsi+rax]
-	; IMUL_M r5, L1[r7]
-	mov eax, r15d
+	mov qword ptr [rsi+rax], r8
+	; ISWAP_R r7, r0
+	xchg r15, r8
+	; FSWAP_R f0
+	shufpd xmm0, xmm0, 1
+	; ISUB_R r2, r0
+	sub r10, r8
+	; FSUB_R f1, a3
+	subpd xmm1, xmm11
+	; ISUB_M r5, L1[r3]
+	mov eax, r11d
 	and eax, 16376
-	imul r13, qword ptr [rsi+rax]
-	; IROR_R r1, r7
-	mov ecx, r15d
-	ror r9, cl
-	; INEG_R r4
-	neg r12
-	; IMUL_R r3, 1863959234
-	imul r11, 1863959234
-	; IROR_R r4, 59
-	ror r12, 59
-	; IMUL_M r1, L3[363256]
-	imul r9, qword ptr [rsi+363256]
-	; ISTORE L2[r6], r7
+	sub r13, qword ptr [rsi+rax]
+	; IXOR_R r7, r0
+	xor r15, r8
+	; IMUL_R r4, r1
+	imul r12, r9
+	; IADD_RC r0, r2, -1102648763
+	lea r8, [r8+r10-1102648763]
+	; FMUL_R e3, a3
+	mulpd xmm7, xmm11
+	; IXOR_R r4, r1
+	xor r12, r9
+	; IXOR_R r6, r0
+	xor r14, r8
+	; FSQRT_R e1
+	sqrtpd xmm5, xmm5
+	; IMUL_M r6, L2[r1]
+	mov eax, r9d
+	and eax, 262136
+	imul r14, qword ptr [rsi+rax]
+	; ISMULH_M r5, L3[353552]
+	mov rax, r13
+	imul qword ptr [rsi+353552]
+	mov r13, rdx
+	; ISUB_M r1, L1[r6]
 	mov eax, r14d
+	and eax, 16376
+	sub r9, qword ptr [rsi+rax]
+	; FADD_R f0, a3
+	addpd xmm0, xmm11
+	; FMUL_R e3, a3
+	mulpd xmm7, xmm11
+	; FSUB_M f3, L2[r7]
+	mov eax, r15d
 	and eax, 262136
-	mov qword ptr [rsi+rax], r15
-	; ISTORE L1[r1], r5
+	cvtdq2pd xmm12, qword ptr [rsi+rax]
+	subpd xmm3, xmm12
+	; IMUL_R r0, r2
+	imul r8, r10
+	; FMUL_R e1, a0
+	mulpd xmm5, xmm8
+	; COND_R r5, sg(r3, -1392293091)
+	xor ecx, ecx
+	cmp r11d, -1392293091
+	sets cl
+	add r13, rcx
+	; FSWAP_R e3
+	shufpd xmm7, xmm7, 1
+	; IMUL_R r7, r4
+	imul r15, r12
+	; IXOR_R r7, r5
+	xor r15, r13
+	; FMUL_R e3, a3
+	mulpd xmm7, xmm11
+	; IMUL_R r4, r3
+	imul r12, r11
+	; FADD_M f1, L1[r1]
 	mov eax, r9d
 	and eax, 16376
-	mov qword ptr [rsi+rax], r13
-	; FNEG_R f0
-	xorps xmm0, xmm15
-	; FSQRT_R e2
-	sqrtpd xmm6, xmm6
-	; FMUL_R e0, a3
-	mulpd xmm4, xmm11
-	; FMUL_R e3, a2
-	mulpd xmm7, xmm10
-	; IROR_R r5, r2
-	mov ecx, r10d
-	ror r13, cl
-	; IADD_R r0, r4
-	add r8, r12
+	cvtdq2pd xmm12, qword ptr [rsi+rax]
+	addpd xmm1, xmm12
+	; IMUL_R r5, r0
+	imul r13, r8
+	; ISUB_R r7, r0
+	sub r15, r8
+	; IADD_M r5, L1[r4]
+	mov eax, r12d
+	and eax, 16376
+	add r13, qword ptr [rsi+rax]
+	; IADD_R r6, r2
+	add r14, r10
+	; FMUL_R e1, a1
+	mulpd xmm5, xmm9
+	; IADD_M r2, L3[1073640]
+	add r10, qword ptr [rsi+1073640]
+	; IMUL_R r3, r2
+	imul r11, r10
+	; IXOR_R r1, r0
+	xor r9, r8
+	; IROR_R r7, r4
+	mov ecx, r12d
+	ror r15, cl
+	; FSUB_R f1, a1
+	subpd xmm1, xmm9
+	; IMUL_R r7, r5
+	imul r15, r13
+	; ISUB_R r1, 866191482
+	sub r9, 866191482
+	; IMUL_M r7, L1[r4]
+	mov eax, r12d
+	and eax, 16376
+	imul r15, qword ptr [rsi+rax]
+	; FADD_R f2, a0
+	addpd xmm2, xmm8
+	; IADD_R r2, r1
+	add r10, r9