diff --git a/doc/isa.md b/doc/isa.md
index 2db223b..b5841f8 100644
--- a/doc/isa.md
+++ b/doc/isa.md
@@ -14,9 +14,9 @@ There are 256 opcodes, which are distributed between various operations dependin
|operation|number of opcodes||
|---------|-----------------|----|
-|ALU operations|146|57.0%|
+|ALU operations|136|53.1%|
|FPU operations|78|30.5%|
-|Control flow |32|12.5%|
+|Control flow |42|16.4%|
#### Operand A
The first operand is read from memory. The location is determined by the `loc(a)` flag:
@@ -90,15 +90,15 @@ A 32-bit address mask that is used to calculate the write address for the C oper
|weight|instruction|signed|A width|B width|C|C width|
|-|-|-|-|-|-|-|
-|16|ADD_64|no|64|64|A + B|64|
-|4|ADD_32|no|32|32|A + B|32|
-|16|SUB_64|no|64|64|A - B|64|
-|4|SUB_32|no|32|32|A - B|32|
-|15|MUL_64|no|64|64|A * B|64|
-|11|MULH_64|no|64|64|A * B|64|
-|11|MUL_32|no|32|32|A * B|64|
-|11|IMUL_32|yes|32|32|A * B|64|
-|11|IMULH_64|yes|64|64|A * B|64|
+|10|ADD_64|no|64|64|A + B|64|
+|2|ADD_32|no|32|32|A + B|32|
+|10|SUB_64|no|64|64|A - B|64|
+|2|SUB_32|no|32|32|A - B|32|
+|21|MUL_64|no|64|64|A * B|64|
+|10|MULH_64|no|64|64|A * B|64|
+|15|MUL_32|no|32|32|A * B|64|
+|15|IMUL_32|yes|32|32|A * B|64|
+|10|IMULH_64|yes|64|64|A * B|64|
|1|DIV_64|no|64|32|A / B|32|
|1|IDIV_64|yes|64|32|A / B|32|
|4|AND_64|no|64|64|A & B|64|
@@ -110,8 +110,8 @@ A 32-bit address mask that is used to calculate the write address for the C oper
|3|SHL_64|no|64|6|A << B|64|
|3|SHR_64|no|64|6|A >> B|64|
|3|SAR_64|yes|64|6|A >> B|64|
-|9|ROL_64|no|64|6|A <<< B|64|
-|9|ROR_64|no|64|6|A >>> B|64|
+|6|ROL_64|no|64|6|A <<< B|64|
+|6|ROR_64|no|64|6|A >>> B|64|
##### 32-bit operations
Instructions ADD_32, SUB_32, AND_32, OR_32, XOR_32 only use the low-order 32 bits of the input operands. The result of these operations is 32 bits long and bits 32-63 of C are zero.
@@ -162,15 +162,30 @@ The rounding modes are defined by the IEEE-754 standard.
*The two-bit flag value exactly corresponds to bits 13-14 of the x86 `MXCSR` register and bits 23 and 22 (reversed) of the ARM `FPSCR` register.*
-### Control flow instructions
-The following 2 control flow instructions are supported:
+### Control instructions
+The following 2 control instructions are supported:
|weight|instruction|function|
|-|-|-|
-|17|CALL|near procedure call|
-|15|RET|return from procedure|
+|24|CALL|near procedure call|
+|18|RET|return from procedure|
-Both instructions are conditional in 75% of cases. The jump is taken only if `B <= imm32`. For the 25% of cases when `B` is equal to `imm32`, the jump is unconditional. In case the branch is not taken, both instructions become "arithmetic no-op" `C = A`.
+Both instructions are conditional. The condition function takes the lower 32 bits of integer register `reg(b)` and the value `imm32` and evaluates a condition based on the `loc(b)` flag:
+
+|loc(b)[2:0]|signed|jump condition|probability|*x86*|*ARM*
+|---|---|----------|-----|--|----|
+|000|no|`reg(b)[31:0] <= imm32`|0% - 100%|`JBE`|`BLS`
+|001|no|`reg(b)[31:0] > imm32`|0% - 100%|`JA`|`BHI`
+|010|yes|`reg(b)[31:0] - imm32 < 0`|50%|`JS`|`BMI`
+|011|yes|`reg(b)[31:0] - imm32 >= 0`|50%|`JNS`|`BPL`
+|100|yes|`reg(b)[31:0] - imm32` overflows|0% - 50%|`JO`|`BVS`
+|101|yes|`reg(b)[31:0] - imm32` doesn't overflow|50% - 100%|`JNO`|`BVC`
+|110|yes|`reg(b)[31:0] < imm32`|0% - 100%|`JL`|`BLT`
+|111|yes|`reg(b)[31:0] >= imm32`|0% - 100%|`JGE`|`BGE`
+
+The 'signed' column specifies if the operands are interpreted as signed or unsigned 32-bit numbers. Column 'probability' lists the expected jump probability (range means that the actual value for a specific instruction depends on `imm32`). *Columns 'x86' and 'ARM' list the corresponding hardware instructions (following a `CMP` instruction).*
+
+In case the branch is not taken, both CALL and RET become "arithmetic no-op" `C = A`.
##### CALL
Taken CALL instruction pushes the values `A` and `pc` (program counter) onto the stack and then performs a forward jump relative to the value of `pc`. The forward offset is equal to `16 * (imm8[6:0] + 1)`. Maximum jump distance is therefore 128 instructions forward (this means that at least 4 correctly spaced CALL instructions are needed to form a loop in the program).
diff --git a/makefile b/makefile
index 3ffacec..4ff31b9 100644
--- a/makefile
+++ b/makefile
@@ -42,7 +42,7 @@ $(OBJDIR)/argon2_core.o: $(addprefix $(SRCDIR)/,argon2_core.c argon2_core.h blak
$(OBJDIR)/argon2_ref.o: $(addprefix $(SRCDIR)/,argon2_ref.c argon2.h argon2_core.h blake2/blake2.h blake2/blake2-impl.h blake2/blamka-round-ref.h) | $(OBJDIR)
$(CC) $(CCFLAGS) -c $(SRCDIR)/argon2_ref.c -o $@
-$(OBJDIR)/AssemblyGeneratorX86.o: $(addprefix $(SRCDIR)/,AssemblyGeneratorX86.cpp AssemblyGeneratorX86.hpp Instruction.hpp Pcg32.hpp common.hpp instructions.hpp) | $(OBJDIR)
+$(OBJDIR)/AssemblyGeneratorX86.o: $(addprefix $(SRCDIR)/,AssemblyGeneratorX86.cpp AssemblyGeneratorX86.hpp Instruction.hpp Pcg32.hpp common.hpp instructions.hpp instructionWeights.hpp) | $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $(SRCDIR)/AssemblyGeneratorX86.cpp -o $@
$(OBJDIR)/blake2b.o: $(addprefix $(SRCDIR)/blake2/,blake2b.c blake2.h blake2-impl.h) | $(OBJDIR)
@@ -54,16 +54,16 @@ $(OBJDIR)/CompiledVirtualMachine.o: $(addprefix $(SRCDIR)/,CompiledVirtualMachin
$(OBJDIR)/dataset.o: $(addprefix $(SRCDIR)/,dataset.cpp common.hpp Pcg32.hpp) | $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $(SRCDIR)/dataset.cpp -o $@
-$(OBJDIR)/JitCompilerX86.o: $(addprefix $(SRCDIR)/,JitCompilerX86.cpp JitCompilerX86.hpp Instruction.hpp) | $(OBJDIR)
+$(OBJDIR)/JitCompilerX86.o: $(addprefix $(SRCDIR)/,JitCompilerX86.cpp JitCompilerX86.hpp Instruction.hpp instructionWeights.hpp) | $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $(SRCDIR)/JitCompilerX86.cpp -o $@
$(OBJDIR)/instructionsPortable.o: $(addprefix $(SRCDIR)/,instructionsPortable.cpp instructions.hpp intrinPortable.h) | $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $(SRCDIR)/instructionsPortable.cpp -o $@
-$(OBJDIR)/Instruction.o: $(addprefix $(SRCDIR)/,Instruction.cpp Instruction.hpp) | $(OBJDIR)
+$(OBJDIR)/Instruction.o: $(addprefix $(SRCDIR)/,Instruction.cpp Instruction.hpp instructionWeights.hpp) | $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $(SRCDIR)/Instruction.cpp -o $@
-$(OBJDIR)/InterpretedVirtualMachine.o: $(addprefix $(SRCDIR)/,InterpretedVirtualMachine.cpp InterpretedVirtualMachine.hpp Pcg32.hpp instructions.hpp) | $(OBJDIR)
+$(OBJDIR)/InterpretedVirtualMachine.o: $(addprefix $(SRCDIR)/,InterpretedVirtualMachine.cpp InterpretedVirtualMachine.hpp Pcg32.hpp instructions.hpp instructionWeights.hpp) | $(OBJDIR)
$(CXX) $(CXXFLAGS) -c $(SRCDIR)/InterpretedVirtualMachine.cpp -o $@
$(OBJDIR)/main.o: $(addprefix $(SRCDIR)/,main.cpp InterpretedVirtualMachine.hpp Stopwatch.hpp blake2/blake2.h) | $(OBJDIR)
diff --git a/src/AssemblyGeneratorX86.cpp b/src/AssemblyGeneratorX86.cpp
index 9f144e7..7bbb658 100644
--- a/src/AssemblyGeneratorX86.cpp
+++ b/src/AssemblyGeneratorX86.cpp
@@ -307,7 +307,7 @@ namespace RandomX {
}
}
else {
- asmCode << "mov ecx, 1" << std::endl;
+ asmCode << "\tmov ecx, 1" << std::endl;
asmCode << "\tmov edx, " << regR32[instr.regb % RegistersCount] << std::endl;
asmCode << "\ttest edx, edx" << std::endl;
asmCode << "\tcmovne ecx, edx" << std::endl;
@@ -458,15 +458,36 @@ namespace RandomX {
gencf(instr);
}
+ static inline const char* jumpCondition(Instruction& instr, bool invert = false) {
+ switch ((instr.locb & 7) ^ invert)
+ {
+ case 0:
+ return "jbe";
+ case 1:
+ return "ja";
+ case 2:
+ return "js";
+ case 3:
+ return "jns";
+ case 4:
+ return "jo";
+ case 5:
+ return "jno";
+ case 6:
+ return "jl";
+ case 7:
+ return "jge";
+ }
+ }
+
void AssemblyGeneratorX86::h_CALL(Instruction& instr, int i) {
gena(instr);
- if ((instr.locb & 7) < 6) {
- asmCode << "\tcmp " << regR32[instr.regb % RegistersCount] << ", " << instr.imm32 << std::endl;
- asmCode << "\tjbe short taken_call_" << i << std::endl;
- gencr(instr);
- asmCode << "\tjmp rx_i_" << wrapInstr(i + 1) << std::endl;
- asmCode << "taken_call_" << i << ":" << std::endl;
- }
+ asmCode << "\tcmp " << regR32[instr.regb % RegistersCount] << ", " << instr.imm32 << std::endl;
+ asmCode << "\t" << jumpCondition(instr);
+ asmCode << " short taken_call_" << i << std::endl;
+ gencr(instr);
+ asmCode << "\tjmp rx_i_" << wrapInstr(i + 1) << std::endl;
+ asmCode << "taken_call_" << i << ":" << std::endl;
if (trace) {
asmCode << "\tmov qword ptr [rsi + rdi * 8 + 262144], rax" << std::endl;
}
@@ -478,10 +499,9 @@ namespace RandomX {
gena(instr);
asmCode << "\tcmp rsp, rbp" << std::endl;
asmCode << "\tje short not_taken_ret_" << i << std::endl;
- if ((instr.locb & 7) < 6) {
- asmCode << "\tcmp " << regR32[instr.regb % RegistersCount] << ", " << instr.imm32 << std::endl;
- asmCode << "\tja short not_taken_ret_" << i << std::endl;
- }
+ asmCode << "\tcmp " << regR32[instr.regb % RegistersCount] << ", " << instr.imm32 << std::endl;
+ asmCode << "\t" << jumpCondition(instr, true);
+ asmCode << " short not_taken_ret_" << i << std::endl;
asmCode << "\txor rax, qword ptr [rsp + 8]" << std::endl;
gencr(instr);
asmCode << "\tret 8" << std::endl;
diff --git a/src/InterpretedVirtualMachine.cpp b/src/InterpretedVirtualMachine.cpp
index 6a46f83..84b4b11 100644
--- a/src/InterpretedVirtualMachine.cpp
+++ b/src/InterpretedVirtualMachine.cpp
@@ -280,13 +280,10 @@ namespace RandomX {
void InterpretedVirtualMachine::h_CALL(Instruction& inst) {
convertible_t a = loada(inst);
- convertible_t b = loadbr1(inst);
- if (b.u32 <= (uint32_t)inst.imm32) {
+ if (JMP_COND(inst.locb, reg.r[inst.regb % RegistersCount], inst.imm32)) {
#ifdef STATS
- if ((inst.locb & 7) <= 5)
- count_CALL_taken++;
- else
- count_CALL_uncond++;
+ count_CALL_taken++;
+ count_jump_taken[inst.locb & 7]++;
#endif
stackPush(a);
stackPush(pc);
@@ -298,6 +295,7 @@ namespace RandomX {
convertible_t& c = getcr(inst);
#ifdef STATS
count_CALL_not_taken++;
+ count_jump_not_taken[inst.locb & 7]++;
#endif
c.u64 = a.u64;
if (trace) std::cout << std::hex << /*a.u64 << " " <<*/ c.u64 << std::endl;
@@ -308,12 +306,10 @@ namespace RandomX {
convertible_t a = loada(inst);
convertible_t b = loadbr1(inst);
convertible_t& c = getcr(inst);
- if (stack.size() > 0 && b.u32 <= (uint32_t)inst.imm32) {
+ if (stack.size() > 0 && JMP_COND(inst.locb, reg.r[inst.regb % RegistersCount], inst.imm32)) {
#ifdef STATS
- if ((inst.locb & 7) <= 5)
- count_RET_taken++;
- else
- count_RET_uncond++;
+ count_RET_taken++;
+ count_jump_taken[inst.locb & 7]++;
#endif
auto raddr = stackPopAddress();
auto retval = stackPopValue();
@@ -324,8 +320,10 @@ namespace RandomX {
#ifdef STATS
if (stack.size() == 0)
count_RET_stack_empty++;
- else
+ else {
count_RET_not_taken++;
+ count_jump_not_taken[inst.locb & 7]++;
+ }
#endif
c.u64 = a.u64;
}
diff --git a/src/InterpretedVirtualMachine.hpp b/src/InterpretedVirtualMachine.hpp
index d853de0..1427c1b 100644
--- a/src/InterpretedVirtualMachine.hpp
+++ b/src/InterpretedVirtualMachine.hpp
@@ -71,13 +71,13 @@ namespace RandomX {
int count_FPDIV;
int count_FPSQRT;
int count_FPROUND;
- int count_CALL_uncond;
int count_CALL_taken;
int count_CALL_not_taken;
int count_RET_stack_empty;
- int count_RET_uncond;
int count_RET_taken;
int count_RET_not_taken;
+ int count_jump_taken[8] = { 0 };
+ int count_jump_not_taken[8] = { 0 };
#endif
convertible_t loada(Instruction&);
diff --git a/src/JitCompilerX86.cpp b/src/JitCompilerX86.cpp
index 6aa79ae..7212a57 100644
--- a/src/JitCompilerX86.cpp
+++ b/src/JitCompilerX86.cpp
@@ -657,20 +657,41 @@ namespace RandomX {
gencf(instr);
}
- void JitCompilerX86::h_CALL(Instruction& instr, int i) {
- if ((instr.locb & 7) <= 5) {
- emit(uint16_t(0x8141)); //cmp regb, imm32
- emitByte(0xf8 + (instr.regb % RegistersCount));
- emit(instr.imm32);
- if ((instr.locc & 7) <= 3) {
- emit(uint16_t(0x1676)); //jmp
- }
- else {
- emit(uint16_t(0x0576)); //jmp
- }
- gencr(instr);
- emit(uint16_t(0x06eb)); //jmp to next
+ static inline uint8_t jumpCondition(Instruction& instr, bool invert = false) {
+ switch ((instr.locb & 7) ^ invert)
+ {
+ case 0:
+ return 0x76; //jbe
+ case 1:
+ return 0x77; //ja
+ case 2:
+ return 0x78; //js
+ case 3:
+ return 0x79; //jns
+ case 4:
+ return 0x70; //jo
+ case 5:
+ return 0x71; //jno
+ case 6:
+ return 0x7c; //jl
+ case 7:
+ return 0x7d; //jge
}
+ }
+
+ void JitCompilerX86::h_CALL(Instruction& instr, int i) {
+ emit(uint16_t(0x8141)); //cmp regb, imm32
+ emitByte(0xf8 + (instr.regb % RegistersCount));
+ emit(instr.imm32);
+ emitByte(jumpCondition(instr));
+ if ((instr.locc & 7) <= 3) {
+ emitByte(0x16);
+ }
+ else {
+ emitByte(0x05);
+ }
+ gencr(instr);
+ emit(uint16_t(0x06eb)); //jmp to next
emitByte(0x50); //push rax
emitByte(0xe8); //call
i = wrapInstr(i + (instr.imm8 & 127) + 2);
@@ -685,22 +706,16 @@ namespace RandomX {
void JitCompilerX86::h_RET(Instruction& instr, int i) {
int crlen = 0;
- int blen = 0;
if ((instr.locc & 7) <= 3) {
crlen = 17;
}
- if ((instr.locb & 7) <= 5) {
- blen = 9;
- }
emit(0x74e53b48); //cmp rsp, rbp; je
- emitByte(11 + blen + crlen);
- if ((instr.locb & 7) <= 5) {
- emit(uint16_t(0x8141)); //cmp regb, imm32
- emitByte(0xf8 + (instr.regb % RegistersCount));
- emit(instr.imm32);
- emitByte(0x77); //jmp
- emitByte(11 + crlen);
- }
+ emitByte(20 + crlen);
+ emit(uint16_t(0x8141)); //cmp regb, imm32
+ emitByte(0xf8 + (instr.regb % RegistersCount));
+ emit(instr.imm32);
+ emitByte(jumpCondition(instr, true));
+ emitByte(11 + crlen);
emitByte(0x48);
emit(0x08244433); //xor rax,QWORD PTR [rsp+0x8]
gencr(instr);
diff --git a/src/instructionWeights.hpp b/src/instructionWeights.hpp
index cf0b0d4..e25b6cc 100644
--- a/src/instructionWeights.hpp
+++ b/src/instructionWeights.hpp
@@ -19,16 +19,16 @@ along with RandomX. If not, see.
#pragma once
-#define WT_ADD_64 16
-#define WT_ADD_32 4
-#define WT_SUB_64 16
-#define WT_SUB_32 4
-#define WT_MUL_64 15
-#define WT_MULH_64 11
-#define WT_MUL_32 11
-#define WT_IMUL_32 11
-#define WT_IMULH_64 11
-#define WT_DIV_64 1
+#define WT_ADD_64 10
+#define WT_ADD_32 2
+#define WT_SUB_64 10
+#define WT_SUB_32 2
+#define WT_MUL_64 21
+#define WT_MULH_64 10
+#define WT_MUL_32 15
+#define WT_IMUL_32 15
+#define WT_IMULH_64 10
+#define WT_DIV_64 1
#define WT_IDIV_64 1
#define WT_AND_64 4
#define WT_AND_32 2
@@ -39,16 +39,16 @@ along with RandomX. If not, see.
#define WT_SHL_64 3
#define WT_SHR_64 3
#define WT_SAR_64 3
-#define WT_ROL_64 9
-#define WT_ROR_64 9
+#define WT_ROL_64 6
+#define WT_ROR_64 6
#define WT_FPADD 20
#define WT_FPSUB 20
#define WT_FPMUL 22
#define WT_FPDIV 8
#define WT_FPSQRT 6
#define WT_FPROUND 2
-#define WT_CALL 17
-#define WT_RET 15
+#define WT_CALL 24
+#define WT_RET 18
constexpr int wtSum = WT_ADD_64 + WT_ADD_32 + WT_SUB_64 + WT_SUB_32 + \
WT_MUL_64 + WT_MULH_64 + WT_MUL_32 + WT_IMUL_32 + WT_IMULH_64 + \
diff --git a/src/instructions.hpp b/src/instructions.hpp
index 55f868c..7afb916 100644
--- a/src/instructions.hpp
+++ b/src/instructions.hpp
@@ -57,6 +57,7 @@ namespace RandomX {
void SAR_64(convertible_t& a, convertible_t& b, convertible_t& c);
void ROL_64(convertible_t& a, convertible_t& b, convertible_t& c);
void ROR_64(convertible_t& a, convertible_t& b, convertible_t& c);
+ bool JMP_COND(uint8_t, convertible_t&, int32_t);
void FPINIT();
void FPADD(convertible_t& a, double b, convertible_t& c);
void FPSUB(convertible_t& a, double b, convertible_t& c);
diff --git a/src/instructionsPortable.cpp b/src/instructionsPortable.cpp
index 8cf0594..5207c1e 100644
--- a/src/instructionsPortable.cpp
+++ b/src/instructionsPortable.cpp
@@ -126,6 +126,34 @@ along with RandomX. If not, see.
#define imulhi64 __imulhi64
#endif
+// avoid undefined behavior of signed overflow
+static inline int32_t safeSub(int32_t a, int32_t b) {
+ return int32_t(uint32_t(a) - uint32_t(b));
+}
+
+#if __GNUC__ >= 5
+#undef __has_builtin
+#define __has_builtin(x) 1
+#endif
+
+#if defined(__has_builtin)
+#if __has_builtin(__builtin_sub_overflow)
+ static inline bool __subOverflow(int32_t a, int32_t b) {
+ int32_t temp;
+ return __builtin_sub_overflow(a, b, &temp);
+ }
+ #define subOverflow __subOverflow
+#endif
+#endif
+
+#ifndef subOverflow
+ static inline bool __subOverflow(int32_t a, int32_t b) {
+ auto c = safeSub(a, b);
+ return (c < a) != (b > 0);
+ }
+ #define subOverflow __subOverflow
+#endif
+
static double FlushDenormal(double x) {
if (std::fpclassify(x) == FP_SUBNORMAL) {
return 0;
@@ -235,6 +263,28 @@ namespace RandomX {
c.u64 = ror64(a.u64, (b.u64 & 63));
}
+ bool JMP_COND(uint8_t type, convertible_t& regb, int32_t imm32) {
+ switch (type & 7)
+ {
+ case 0:
+ return regb.u32 <= (uint32_t)imm32;
+ case 1:
+ return regb.u32 > (uint32_t)imm32;
+ case 2:
+ return safeSub(regb.i32, imm32) < 0;
+ case 3:
+ return safeSub(regb.i32, imm32) >= 0;
+ case 4:
+ return subOverflow(regb.i32, imm32);
+ case 5:
+ return !subOverflow(regb.i32, imm32);
+ case 6:
+ return regb.i32 < imm32;
+ case 7:
+ return regb.i32 >= imm32;
+ }
+ }
+
void FPINIT() {
setRoundMode(FE_TONEAREST);
}
diff --git a/src/main.cpp b/src/main.cpp
index fed4739..00dd59c 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -248,8 +248,12 @@ int main(int argc, char** argv) {
std::cout << "Calculated result: ";
result.print(std::cout);
if(programCount == 1000)
- std::cout << "Reference result: d62ed85c39030cd2c5704fca3a23019f1244f2b03447c9a6b39dea5390ed1d10" << std::endl;
+ std::cout << "Reference result: f6bf06465d5fa1b1dc919140b9e9f9e210b07ae6d662988458a172e9a267eb3f" << std::endl;
std::cout << "Performance: " << programCount / elapsed << " programs per second" << std::endl;
+ /*if (threadCount == 1 && !compiled) {
+ auto ivm = (RandomX::InterpretedVirtualMachine*)vms[0];
+ std::cout << ivm->getProgam();
+ }*/
}
catch (std::exception& e) {
std::cout << "ERROR: " << e.what() << std::endl;
diff --git a/src/program.inc b/src/program.inc
index 3330332..b41c7b5 100644
--- a/src/program.inc
+++ b/src/program.inc
@@ -1,11 +1,11 @@
-rx_i_0: ;ADD_64
+rx_i_0: ;SUB_64
dec edi
js rx_finish
xor r14, 087d93944h
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- add rax, r10
+ sub rax, r10
mov r14, rax
rx_i_1: ;IMULH_64
@@ -34,7 +34,7 @@ rx_i_2: ;RET
cmp rsp, rbp
je short not_taken_ret_2
cmp r8d, 330026357
- ja short not_taken_ret_2
+ jo short not_taken_ret_2
xor rax, qword ptr [rsp + 8]
mov r13, rax
ret 8
@@ -51,7 +51,7 @@ rx_i_3: ;RET
cmp rsp, rbp
je short not_taken_ret_3
cmp r14d, 2014518380
- ja short not_taken_ret_3
+ jno short not_taken_ret_3
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r11d
@@ -91,15 +91,13 @@ not_taken_ret_4:
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_5: ;IMULH_64
+rx_i_5: ;AND_64
dec edi
js rx_finish
xor r15, 06afc2fa4h
mov ecx, r15d
call rx_read_dataset
- mov rcx, r10
- imul rcx
- mov rax, rdx
+ and rax, r10
mov r12, rax
rx_i_6: ;CALL
@@ -110,7 +108,7 @@ rx_i_6: ;CALL
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
cmp r11d, 1348521207
- jbe short taken_call_6
+ jno short taken_call_6
mov rcx, rax
mov eax, r9d
xor eax, 05060ccf7h
@@ -121,52 +119,58 @@ taken_call_6:
push rax
call rx_i_51
-rx_i_7: ;FPDIV
+rx_i_7: ;FPROUND
dec edi
js rx_finish
xor r13, 082c73195h
mov ecx, r13d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- divsd xmm0, xmm9
+ mov rcx, rax
+ shl eax, 13
+ and rcx, -2048
+ and eax, 24576
+ cvtsi2sd xmm0, rcx
+ or eax, 40896
+ mov dword ptr [rsp - 8], eax
+ ldmxcsr dword ptr [rsp - 8]
movsd xmm8, xmm0
-rx_i_8: ;MULH_64
+rx_i_8: ;MUL_32
dec edi
js rx_finish
xor r14, 077daefb4h
mov eax, r14d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r14
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r14d
+ imul rax, rcx
mov rcx, rax
mov eax, r9d
xor eax, 06ce10c20h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_9: ;MUL_32
+rx_i_9: ;IMUL_32
dec edi
js rx_finish
xor r15, 0379f9ee0h
mov ecx, r15d
call rx_read_dataset
- mov ecx, eax
- mov eax, r12d
+ movsxd rcx, eax
+ movsxd rax, r12d
imul rax, rcx
mov r12, rax
-rx_i_10: ;MUL_64
+rx_i_10: ;MULH_64
dec edi
js rx_finish
xor r8, 03bae7272h
mov ecx, r8d
call rx_read_dataset
- imul rax, r15
+ mov rcx, r15
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r9d
xor eax, 098a649d1h
@@ -185,38 +189,36 @@ rx_i_11: ;FPADD
addsd xmm0, xmm6
movsd xmm6, xmm0
-rx_i_12: ;XOR_32
+rx_i_12: ;SHL_64
dec edi
js rx_finish
xor r13, 068c1e5d2h
mov ecx, r13d
call rx_read_dataset
- xor eax, 1344700093
+ shl rax, 47
mov rcx, rax
mov eax, r12d
xor eax, 050267ebdh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_13: ;DIV_64
+rx_i_13: ;AND_64
dec edi
js rx_finish
xor r14, 085121c54h
mov eax, r14d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov ecx, 565870810
- xor edx, edx
- div rcx
+ and rax, 565870810
mov r10, rax
-rx_i_14: ;AND_32
+rx_i_14: ;OR_64
dec edi
js rx_finish
xor r8, 052efde3eh
mov ecx, r8d
call rx_read_dataset
- and eax, -727859809
+ or rax, -727859809
mov r13, rax
rx_i_15: ;FPADD
@@ -230,19 +232,21 @@ rx_i_15: ;FPADD
addsd xmm0, xmm5
movsd xmm4, xmm0
-rx_i_16: ;FPSQRT
+rx_i_16: ;CALL
dec edi
js rx_finish
xor r10, 0db2691ch
mov ecx, r10d
call rx_read_dataset
- mov rcx, 9223372036854773760
- and rax, rcx
- cvtsi2sd xmm0, rax
- sqrtsd xmm0, xmm0
- movsd xmm8, xmm0
+ cmp r8d, -1763940407
+ jge short taken_call_16
+ mov r8, rax
+ jmp rx_i_17
+taken_call_16:
+ push rax
+ call rx_i_39
-rx_i_17: ;FPADD
+rx_i_17: ;FPSUB
dec edi
js rx_finish
xor r12, 061c0d34dh
@@ -250,20 +254,20 @@ rx_i_17: ;FPADD
call rx_read_dataset
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm3
+ subsd xmm0, xmm3
mov eax, r9d
xor eax, 04f2f223ch
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_18: ;SHL_64
+rx_i_18: ;SHR_64
dec edi
js rx_finish
xor r10, 0e761d1beh
mov ecx, r10d
call rx_read_dataset
mov rcx, r9
- shl rax, cl
+ shr rax, cl
mov rcx, rax
mov eax, r10d
xor eax, 03c1a72f8h
@@ -279,7 +283,7 @@ rx_i_19: ;RET
cmp rsp, rbp
je short not_taken_ret_19
cmp r11d, 1183529144
- ja short not_taken_ret_19
+ js short not_taken_ret_19
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r14d
@@ -308,16 +312,17 @@ rx_i_20: ;ADD_64
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_21: ;FPSUB
+rx_i_21: ;FPMUL
dec edi
js rx_finish
xor r11, 0fbc6fc35h
mov eax, r11d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm4
+ mulsd xmm0, xmm4
movsd xmm4, xmm0
rx_i_22: ;FPSUB
@@ -332,7 +337,7 @@ rx_i_22: ;FPSUB
subsd xmm0, xmm4
movsd xmm3, xmm0
-rx_i_23: ;FPADD
+rx_i_23: ;FPSUB
dec edi
js rx_finish
xor r13, 0ac009c30h
@@ -341,57 +346,58 @@ rx_i_23: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm8
+ subsd xmm0, xmm8
mov eax, r15d
xor eax, 0e92dc022h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_24: ;FPSUB
+rx_i_24: ;FPMUL
dec edi
js rx_finish
xor r13, 0ecca967dh
mov ecx, r13d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm2
+ mulsd xmm0, xmm2
movsd xmm7, xmm0
-rx_i_25: ;ROR_64
+rx_i_25: ;FPADD
dec edi
js rx_finish
xor r8, 0977f0284h
mov ecx, r8d
call rx_read_dataset
- mov rcx, r9
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm9
mov eax, r15d
xor eax, 0db5e0aafh
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_26: ;ADD_64
+rx_i_26: ;ADD_32
dec edi
js rx_finish
xor r13, 080bdfefah
mov ecx, r13d
call rx_read_dataset
- add rax, r8
+ add eax, r8d
mov rcx, rax
mov eax, r10d
xor eax, 0cfa09799h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_27: ;SUB_32
+rx_i_27: ;MUL_64
dec edi
js rx_finish
xor r15, 0e1e0d3c4h
mov ecx, r15d
call rx_read_dataset
- sub eax, r11d
+ imul rax, r11
mov r8, rax
rx_i_28: ;IMULH_64
@@ -421,15 +427,15 @@ rx_i_29: ;FPMUL
mulsd xmm0, xmm9
movsd xmm6, xmm0
-rx_i_30: ;IMUL_32
+rx_i_30: ;IMULH_64
dec edi
js rx_finish
xor r11, 0e311468ch
mov ecx, r11d
call rx_read_dataset
- movsxd rcx, eax
- movsxd rax, r13d
- imul rax, rcx
+ mov rcx, r13
+ imul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r9d
xor eax, 0306ff9ech
@@ -452,67 +458,73 @@ rx_i_31: ;FPMUL
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_32: ;OR_64
+rx_i_32: ;XOR_64
dec edi
js rx_finish
xor r13, 067df757eh
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, r13
+ xor rax, r13
mov r14, rax
-rx_i_33: ;ADD_64
+rx_i_33: ;SUB_64
dec edi
js rx_finish
xor r12, 0be2e7c42h
mov ecx, r12d
call rx_read_dataset
- add rax, 1944166515
+ sub rax, 1944166515
mov r14, rax
-rx_i_34: ;ROR_64
+rx_i_34: ;FPADD
dec edi
js rx_finish
xor r11, 084d067f7h
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- ror rax, 27
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ mov rax, -4485208588087721984
+ movd xmm1, rax
+ addsd xmm0, xmm1
mov eax, r15d
xor eax, 0dd52e4f9h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_35: ;ROR_64
+rx_i_35: ;FPADD
dec edi
js rx_finish
xor r14, 0d352ce37h
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r11
- ror rax, cl
- mov r14, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm3
+ movsd xmm6, xmm0
-rx_i_36: ;OR_64
+rx_i_36: ;XOR_64
dec edi
js rx_finish
xor r12, 0a1f248dah
mov ecx, r12d
call rx_read_dataset
- or rax, -1936869641
+ xor rax, -1936869641
mov r9, rax
-rx_i_37: ;MUL_64
+rx_i_37: ;MULH_64
dec edi
js rx_finish
xor r9, 0554720fch
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- imul rax, r15
+ mov rcx, r15
+ mul rcx
+ mov rax, rdx
mov r12, rax
rx_i_38: ;CALL
@@ -523,7 +535,7 @@ rx_i_38: ;CALL
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
cmp r14d, -380224718
- jbe short taken_call_38
+ js short taken_call_38
mov r15, rax
jmp rx_i_39
taken_call_38:
@@ -538,7 +550,7 @@ rx_i_39: ;CALL
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
cmp r9d, -2040787098
- jbe short taken_call_39
+ js short taken_call_39
mov r8, rax
jmp rx_i_40
taken_call_39:
@@ -561,18 +573,19 @@ rx_i_40: ;FPMUL
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_41: ;FPSUB
+rx_i_41: ;FPMUL
dec edi
js rx_finish
xor r12, 0d0706601h
mov eax, r12d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, -4480846364313387008
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
movsd xmm9, xmm0
rx_i_42: ;SUB_64
@@ -585,52 +598,56 @@ rx_i_42: ;SUB_64
sub rax, r14
mov r10, rax
-rx_i_43: ;ADD_64
+rx_i_43: ;ADD_32
dec edi
js rx_finish
xor r14, 02c1f1eb0h
mov ecx, r14d
call rx_read_dataset
- add rax, r14
+ add eax, r14d
mov r14, rax
-rx_i_44: ;CALL
+rx_i_44: ;RET
dec edi
js rx_finish
xor r10, 068fd9009h
mov eax, r10d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ cmp rsp, rbp
+ je short not_taken_ret_44
cmp r12d, -1297973554
- jbe short taken_call_44
+ jns short not_taken_ret_44
+ xor rax, qword ptr [rsp + 8]
+ mov rcx, rax
+ mov eax, r9d
+ xor eax, 0b2a27eceh
+ and eax, 2047
+ mov qword ptr [rsi + rax * 8], rcx
+ ret 8
+not_taken_ret_44:
mov rcx, rax
mov eax, r9d
xor eax, 0b2a27eceh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
- jmp rx_i_45
-taken_call_44:
- push rax
- call rx_i_94
-rx_i_45: ;FPROUND
+rx_i_45: ;CALL
dec edi
js rx_finish
xor r9, 037a30933h
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, rax
- shl eax, 13
- and rcx, -2048
- and eax, 24576
- cvtsi2sd xmm0, rcx
- or eax, 40896
- mov dword ptr [rsp - 8], eax
- ldmxcsr dword ptr [rsp - 8]
- movsd xmm9, xmm0
+ cmp r14d, -1070581824
+ jo short taken_call_45
+ mov r9, rax
+ jmp rx_i_46
+taken_call_45:
+ push rax
+ call rx_i_131
-rx_i_46: ;FPADD
+rx_i_46: ;FPSUB
dec edi
js rx_finish
xor r15, 0bc1de9f6h
@@ -641,19 +658,19 @@ rx_i_46: ;FPADD
cvtsi2sd xmm0, rax
mov rax, 4739074351570092032
movd xmm1, rax
- addsd xmm0, xmm1
+ subsd xmm0, xmm1
mov eax, r14d
xor eax, 029260733h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_47: ;ADD_64
+rx_i_47: ;SUB_64
dec edi
js rx_finish
xor r12, 02b2a2eech
mov ecx, r12d
call rx_read_dataset
- add rax, 1693705407
+ sub rax, 1693705407
mov rcx, rax
mov eax, r11d
xor eax, 064f3e4bfh
@@ -718,71 +735,75 @@ taken_call_51:
push rax
call rx_i_135
-rx_i_52: ;FPDIV
+rx_i_52: ;FPSQRT
dec edi
js rx_finish
xor r8, 0aaed618fh
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- divsd xmm0, xmm3
+ sqrtsd xmm0, xmm0
movsd xmm9, xmm0
-rx_i_53: ;FPSUB
+rx_i_53: ;FPMUL
dec edi
js rx_finish
xor r8, 0f96c6a45h
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm3
+ mulsd xmm0, xmm3
mov eax, r13d
xor eax, 0c56b47bh
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_54: ;OR_64
+rx_i_54: ;OR_32
dec edi
js rx_finish
xor r9, 0da3e4842h
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- or rax, r10
+ or eax, r10d
mov rcx, rax
mov eax, r15d
xor eax, 06ac56a2ah
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_55: ;ADD_32
+rx_i_55: ;SUB_64
dec edi
js rx_finish
xor r10, 0302b676ah
mov ecx, r10d
call rx_read_dataset
- add eax, 419241919
+ sub rax, 419241919
mov r15, rax
-rx_i_56: ;FPDIV
+rx_i_56: ;CALL
dec edi
js rx_finish
xor r11, 0fa88f48bh
mov ecx, r11d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- divsd xmm0, xmm5
+ cmp r13d, -534426193
+ js short taken_call_56
+ mov rcx, rax
mov eax, r15d
xor eax, 0e0254dafh
and eax, 2047
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_57
+taken_call_56:
+ push rax
+ call rx_i_98
rx_i_57: ;RET
dec edi
@@ -794,7 +815,7 @@ rx_i_57: ;RET
cmp rsp, rbp
je short not_taken_ret_57
cmp r8d, 2028798189
- ja short not_taken_ret_57
+ jno short not_taken_ret_57
xor rax, qword ptr [rsp + 8]
mov r13, rax
ret 8
@@ -830,52 +851,59 @@ rx_i_59: ;FPMUL
mulsd xmm0, xmm5
movsd xmm3, xmm0
-rx_i_60: ;DIV_64
+rx_i_60: ;AND_64
dec edi
js rx_finish
xor r14, 0f1456b8eh
mov eax, r14d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
-mov ecx, 1
- mov edx, r15d
- test edx, edx
- cmovne ecx, edx
- xor edx, edx
- div rcx
+ and rax, r15
mov rcx, rax
mov eax, r8d
xor eax, 0fcf95491h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_61: ;SUB_64
+rx_i_61: ;MUL_64
dec edi
js rx_finish
xor r9, 010dc4571h
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- sub rax, r14
+ imul rax, r14
mov rcx, rax
mov eax, r15d
xor eax, 0a426387h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_62: ;IMULH_64
+rx_i_62: ;IDIV_64
dec edi
js rx_finish
xor r14, 0bcec0ebah
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r13
- imul rcx
- mov rax, rdx
+ mov edx, r13d
+ cmp edx, -1
+ jne short safe_idiv_62
+ mov rcx, rax
+ rol rcx, 1
+ dec rcx
+ jz short result_idiv_62
+safe_idiv_62:
+ mov ecx, 1
+ test edx, edx
+ cmovne ecx, edx
+ movsxd rcx, ecx
+ cqo
+ idiv rcx
+result_idiv_62:
mov r8, rax
-rx_i_63: ;FPADD
+rx_i_63: ;FPSUB
dec edi
js rx_finish
xor r11, 0980dd402h
@@ -884,7 +912,7 @@ rx_i_63: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm8
+ subsd xmm0, xmm8
mov eax, r15d
xor eax, 04f4e2c91h
and eax, 2047
@@ -899,7 +927,7 @@ rx_i_64: ;RET
cmp rsp, rbp
je short not_taken_ret_64
cmp r11d, 2075529029
- ja short not_taken_ret_64
+ jo short not_taken_ret_64
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r11d
@@ -922,50 +950,52 @@ rx_i_65: ;CALL
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
cmp r15d, 1933164545
- jbe short taken_call_65
+ jns short taken_call_65
mov r11, rax
jmp rx_i_66
taken_call_65:
push rax
call rx_i_124
-rx_i_66: ;FPSUB
+rx_i_66: ;FPMUL
dec edi
js rx_finish
xor r15, 0c3089414h
mov ecx, r15d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, 4744280396844236800
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
movsd xmm2, xmm0
-rx_i_67: ;FPSUB
+rx_i_67: ;FPMUL
dec edi
js rx_finish
xor r9, 065cf272eh
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, -4480946344868970496
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
mov eax, r8d
xor eax, 0be13d69eh
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_68: ;ADD_32
+rx_i_68: ;SUB_64
dec edi
js rx_finish
xor r13, 0ae54dfbfh
mov ecx, r13d
call rx_read_dataset
- add eax, r15d
+ sub rax, r15
mov r9, rax
rx_i_69: ;CALL
@@ -975,23 +1005,23 @@ rx_i_69: ;CALL
mov ecx, r13d
call rx_read_dataset
cmp r8d, 1498056607
- jbe short taken_call_69
+ js short taken_call_69
mov r11, rax
jmp rx_i_70
taken_call_69:
push rax
call rx_i_133
-rx_i_70: ;FPDIV
+rx_i_70: ;FPSQRT
dec edi
js rx_finish
xor r15, 015a1b689h
mov ecx, r15d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- divsd xmm0, xmm3
+ sqrtsd xmm0, xmm0
movsd xmm9, xmm0
rx_i_71: ;CALL
@@ -1001,14 +1031,14 @@ rx_i_71: ;CALL
mov ecx, r14d
call rx_read_dataset
cmp r13d, 2031541081
- jbe short taken_call_71
+ jns short taken_call_71
mov r9, rax
jmp rx_i_72
taken_call_71:
push rax
call rx_i_83
-rx_i_72: ;FPADD
+rx_i_72: ;FPSUB
dec edi
js rx_finish
xor r13, 03aa5c3a4h
@@ -1016,7 +1046,7 @@ rx_i_72: ;FPADD
call rx_read_dataset
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm2
+ subsd xmm0, xmm2
movsd xmm4, xmm0
rx_i_73: ;FPADD
@@ -1033,14 +1063,16 @@ rx_i_73: ;FPADD
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_74: ;MUL_64
+rx_i_74: ;MULH_64
dec edi
js rx_finish
xor r8, 0bbbec3fah
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- imul rax, r9
+ mov rcx, r9
+ mul rcx
+ mov rax, rdx
mov r13, rax
rx_i_75: ;FPMUL
@@ -1068,7 +1100,7 @@ rx_i_76: ;CALL
mov ecx, r13d
call rx_read_dataset
cmp r9d, -631091751
- jbe short taken_call_76
+ jno short taken_call_76
mov rcx, rax
mov eax, r11d
xor eax, 0da624dd9h
@@ -1079,18 +1111,20 @@ taken_call_76:
push rax
call rx_i_195
-rx_i_77: ;FPDIV
+rx_i_77: ;FPROUND
dec edi
js rx_finish
xor r12, 0c24ddbd4h
mov ecx, r12d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- mov rax, 4742317416992735232
- movd xmm1, rax
- divsd xmm0, xmm1
+ mov rcx, rax
+ shl eax, 13
+ and rcx, -2048
+ and eax, 24576
+ cvtsi2sd xmm0, rcx
+ or eax, 40896
+ mov dword ptr [rsp - 8], eax
+ ldmxcsr dword ptr [rsp - 8]
mov eax, r10d
xor eax, 040624270h
and eax, 2047
@@ -1117,7 +1151,7 @@ rx_i_79: ;CALL
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
cmp r11d, -1160798683
- jbe short taken_call_79
+ jo short taken_call_79
mov r13, rax
jmp rx_i_80
taken_call_79:
@@ -1146,7 +1180,7 @@ rx_i_81: ;RET
cmp rsp, rbp
je short not_taken_ret_81
cmp r15d, 982695034
- ja short not_taken_ret_81
+ jo short not_taken_ret_81
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r11d
@@ -1161,16 +1195,16 @@ not_taken_ret_81:
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_82: ;MULH_64
+rx_i_82: ;MUL_32
dec edi
js rx_finish
xor r9, 0edeca680h
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r8
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r8d
+ imul rax, rcx
mov r15, rax
rx_i_83: ;CALL
@@ -1192,27 +1226,30 @@ taken_call_83:
push rax
call rx_i_97
-rx_i_84: ;ROR_64
+rx_i_84: ;FPADD
dec edi
js rx_finish
xor r13, 09cec97a1h
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- ror rax, 4
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ mov rax, 4736212432215605248
+ movd xmm1, rax
+ addsd xmm0, xmm1
mov eax, r11d
xor eax, 01a681d13h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_85: ;AND_32
+rx_i_85: ;OR_64
dec edi
js rx_finish
xor r15, 078228167h
mov ecx, r15d
call rx_read_dataset
- and eax, r13d
+ or rax, r13
mov r8, rax
rx_i_86: ;CALL
@@ -1222,7 +1259,7 @@ rx_i_86: ;CALL
mov ecx, r11d
call rx_read_dataset
cmp r12d, -68969733
- jbe short taken_call_86
+ jo short taken_call_86
mov rcx, rax
mov eax, r10d
xor eax, 0fbe39afbh
@@ -1233,29 +1270,24 @@ taken_call_86:
push rax
call rx_i_149
-rx_i_87: ;DIV_64
+rx_i_87: ;AND_64
dec edi
js rx_finish
xor r10, 0d9b6a533h
mov eax, r10d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
-mov ecx, 1
- mov edx, r10d
- test edx, edx
- cmovne ecx, edx
- xor edx, edx
- div rcx
+ and rax, r10
mov r12, rax
-rx_i_88: ;ROL_64
+rx_i_88: ;ROR_64
dec edi
js rx_finish
xor r15, 0e9e75336h
mov ecx, r15d
call rx_read_dataset
mov rcx, r10
- rol rax, cl
+ ror rax, cl
mov rcx, rax
mov eax, r13d
xor eax, 0ec5c52e6h
@@ -1272,39 +1304,40 @@ rx_i_89: ;MUL_64
imul rax, r8
mov r10, rax
-rx_i_90: ;AND_32
+rx_i_90: ;OR_64
dec edi
js rx_finish
xor r11, 04386e368h
mov ecx, r11d
call rx_read_dataset
- and eax, r8d
+ or rax, r8
mov rcx, rax
mov eax, r12d
xor eax, 0a90410e4h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_91: ;ADD_64
+rx_i_91: ;SUB_64
dec edi
js rx_finish
xor r9, 0d75a0ecfh
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- add rax, r12
+ sub rax, r12
mov r8, rax
-rx_i_92: ;ROR_64
+rx_i_92: ;FPADD
dec edi
js rx_finish
xor r9, 031bb7f7ah
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r14
- ror rax, cl
- mov r9, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm6
+ movsd xmm9, xmm0
rx_i_93: ;MUL_64
dec edi
@@ -1355,34 +1388,42 @@ rx_i_96: ;CALL
xor r8, 0729260e1h
mov ecx, r8d
call rx_read_dataset
+ cmp r14d, 1288893603
+ jge short taken_call_96
+ mov r12, rax
+ jmp rx_i_97
+taken_call_96:
push rax
call rx_i_174
-rx_i_97: ;ROR_64
+rx_i_97: ;FPADD
dec edi
js rx_finish
xor r8, 0bfcebaf4h
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r10
- ror rax, cl
- mov r10, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm2
+ movsd xmm2, xmm0
-rx_i_98: ;CALL
+rx_i_98: ;RET
dec edi
js rx_finish
xor r13, 0ea326630h
mov eax, r13d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
+ cmp rsp, rbp
+ je short not_taken_ret_98
cmp r13d, -343122976
- jbe short taken_call_98
+ jns short not_taken_ret_98
+ xor rax, qword ptr [rsp + 8]
+ mov r8, rax
+ ret 8
+not_taken_ret_98:
mov r8, rax
- jmp rx_i_99
-taken_call_98:
- push rax
- call rx_i_161
rx_i_99: ;MUL_64
dec edi
@@ -1397,39 +1438,39 @@ rx_i_99: ;MUL_64
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_100: ;MUL_32
+rx_i_100: ;IMUL_32
dec edi
js rx_finish
xor r11, 04f912ef8h
mov ecx, r11d
call rx_read_dataset
- mov ecx, eax
- mov eax, -1354397081
+ movsxd rcx, eax
+ mov rax, -1354397081
imul rax, rcx
mov r11, rax
-rx_i_101: ;FPDIV
+rx_i_101: ;FPSQRT
dec edi
js rx_finish
xor r15, 0acc45b3bh
mov ecx, r15d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- divsd xmm0, xmm9
+ sqrtsd xmm0, xmm0
movsd xmm5, xmm0
-rx_i_102: ;ADD_32
+rx_i_102: ;SUB_64
dec edi
js rx_finish
xor r14, 09900a4e8h
mov ecx, r14d
call rx_read_dataset
- add eax, r15d
+ sub rax, r15
mov r14, rax
-rx_i_103: ;FPMUL
+rx_i_103: ;FPDIV
dec edi
js rx_finish
xor r9, 0841b2984h
@@ -1440,7 +1481,7 @@ rx_i_103: ;FPMUL
cvtsi2sd xmm0, rax
mov rax, 4743144143516073984
movd xmm1, rax
- mulsd xmm0, xmm1
+ divsd xmm0, xmm1
movsd xmm4, xmm0
rx_i_104: ;ADD_64
@@ -1452,17 +1493,17 @@ rx_i_104: ;ADD_64
add rax, r9
mov r14, rax
-rx_i_105: ;SUB_64
+rx_i_105: ;SUB_32
dec edi
js rx_finish
xor r10, 0631209d3h
mov eax, r10d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- sub rax, r8
+ sub eax, r8d
mov r11, rax
-rx_i_106: ;FPMUL
+rx_i_106: ;FPDIV
dec edi
js rx_finish
xor r10, 0e50bf07ah
@@ -1472,7 +1513,7 @@ rx_i_106: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm3
+ divsd xmm0, xmm3
mov eax, r15d
xor eax, 03ec98420h
and eax, 2047
@@ -1508,15 +1549,15 @@ rx_i_108: ;IMULH_64
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_109: ;MULH_64
+rx_i_109: ;MUL_32
dec edi
js rx_finish
xor r13, 036a51f72h
mov ecx, r13d
call rx_read_dataset
- mov rcx, r15
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r15d
+ imul rax, rcx
mov rcx, rax
mov eax, r14d
xor eax, 09c8724edh
@@ -1542,10 +1583,19 @@ rx_i_111: ;CALL
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ cmp r11d, 1917037441
+ jl short taken_call_111
+ mov rcx, rax
+ mov eax, r14d
+ xor eax, 07243ab81h
+ and eax, 2047
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_112
+taken_call_111:
push rax
call rx_i_147
-rx_i_112: ;FPMUL
+rx_i_112: ;FPDIV
dec edi
js rx_finish
xor r9, 07327ba60h
@@ -1554,23 +1604,23 @@ rx_i_112: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm5
+ divsd xmm0, xmm5
movsd xmm9, xmm0
-rx_i_113: ;ROR_64
+rx_i_113: ;FPADD
dec edi
js rx_finish
xor r15, 0594e37deh
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r10
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm2
mov eax, r11d
xor eax, 094ab5a5ch
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
rx_i_114: ;ROL_64
dec edi
@@ -1592,32 +1642,41 @@ rx_i_115: ;CALL
xor r8, 02e16c97ch
mov ecx, r8d
call rx_read_dataset
+ cmp r14d, 1562606859
+ jge short taken_call_115
+ mov rcx, rax
+ mov eax, r12d
+ xor eax, 05d237d0bh
+ and eax, 32767
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_116
+taken_call_115:
push rax
call rx_i_216
-rx_i_116: ;ADD_32
+rx_i_116: ;SUB_64
dec edi
js rx_finish
xor r12, 0d42ddbd4h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- add eax, r13d
+ sub rax, r13
mov rcx, rax
mov eax, r14d
xor eax, 0c2d8d431h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_117: ;MULH_64
+rx_i_117: ;MUL_32
dec edi
js rx_finish
xor r10, 07a4f8cbbh
mov ecx, r10d
call rx_read_dataset
- mov rcx, r9
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r9d
+ imul rax, rcx
mov r13, rax
rx_i_118: ;IMULH_64
@@ -1631,13 +1690,13 @@ rx_i_118: ;IMULH_64
mov rax, rdx
mov r14, rax
-rx_i_119: ;AND_64
+rx_i_119: ;OR_64
dec edi
js rx_finish
xor r14, 0336c980eh
mov ecx, r14d
call rx_read_dataset
- and rax, r10
+ or rax, r10
mov r14, rax
rx_i_120: ;IMULH_64
@@ -1655,16 +1714,14 @@ rx_i_120: ;IMULH_64
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_121: ;IMULH_64
+rx_i_121: ;AND_64
dec edi
js rx_finish
xor r11, 015f2012bh
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, -1205826972
- imul rcx
- mov rax, rdx
+ and rax, -1205826972
mov rcx, rax
mov eax, r15d
xor eax, 0b8208a64h
@@ -1716,15 +1773,16 @@ rx_i_124: ;FPADD
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_125: ;FPSUB
+rx_i_125: ;FPMUL
dec edi
js rx_finish
xor r9, 03ab8f73h
mov ecx, r9d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm5
+ mulsd xmm0, xmm5
mov eax, r8d
xor eax, 0808a2d8bh
and eax, 32767
@@ -1737,7 +1795,7 @@ rx_i_126: ;CALL
mov ecx, r10d
call rx_read_dataset
cmp r11d, 2029448233
- jbe short taken_call_126
+ jo short taken_call_126
mov rcx, rax
mov eax, r14d
xor eax, 078f6ec29h
@@ -1748,14 +1806,14 @@ taken_call_126:
push rax
call rx_i_196
-rx_i_127: ;ADD_64
+rx_i_127: ;SUB_64
dec edi
js rx_finish
xor r13, 073e9f58ah
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- add rax, r15
+ sub rax, r15
mov r13, rax
rx_i_128: ;CALL
@@ -1765,7 +1823,7 @@ rx_i_128: ;CALL
mov ecx, r12d
call rx_read_dataset
cmp r11d, 1719505436
- jbe short taken_call_128
+ jns short taken_call_128
mov rcx, rax
mov eax, r11d
xor eax, 0667d921ch
@@ -1776,18 +1834,18 @@ taken_call_128:
push rax
call rx_i_241
-rx_i_129: ;MUL_32
+rx_i_129: ;IMUL_32
dec edi
js rx_finish
xor r8, 0ebec27cdh
mov ecx, r8d
call rx_read_dataset
- mov ecx, eax
- mov eax, r14d
+ movsxd rcx, eax
+ movsxd rax, r14d
imul rax, rcx
mov r14, rax
-rx_i_130: ;FPMUL
+rx_i_130: ;FPDIV
dec edi
js rx_finish
xor r8, 01feb5264h
@@ -1797,21 +1855,21 @@ rx_i_130: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm6
+ divsd xmm0, xmm6
mov eax, r10d
xor eax, 04b88e021h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_131: ;IMUL_32
+rx_i_131: ;IMULH_64
dec edi
js rx_finish
xor r9, 0405f500fh
mov ecx, r9d
call rx_read_dataset
- movsxd rcx, eax
- movsxd rax, r10d
- imul rax, rcx
+ mov rcx, r10
+ imul rcx
+ mov rax, rdx
mov r8, rax
rx_i_132: ;MUL_64
@@ -1830,17 +1888,22 @@ rx_i_133: ;CALL
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ cmp r13d, -590624856
+ jge short taken_call_133
+ mov r9, rax
+ jmp rx_i_134
+taken_call_133:
push rax
call rx_i_158
-rx_i_134: ;AND_64
+rx_i_134: ;OR_64
dec edi
js rx_finish
xor r9, 077c3b332h
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- and rax, -281794782
+ or rax, -281794782
mov rcx, rax
mov eax, r11d
xor eax, 0ef342722h
@@ -1857,7 +1920,7 @@ rx_i_135: ;RET
cmp rsp, rbp
je short not_taken_ret_135
cmp r15d, -537890955
- ja short not_taken_ret_135
+ jns short not_taken_ret_135
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r15d
@@ -1872,27 +1935,27 @@ not_taken_ret_135:
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_136: ;ROR_64
+rx_i_136: ;FPADD
dec edi
js rx_finish
xor r10, 0ebc6e10h
mov ecx, r10d
call rx_read_dataset
- mov rcx, r14
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm6
mov eax, r15d
xor eax, 0b0c38959h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_137: ;OR_32
+rx_i_137: ;XOR_64
dec edi
js rx_finish
xor r14, 0822f8b60h
mov ecx, r14d
call rx_read_dataset
- or eax, -1000526796
+ xor rax, -1000526796
mov rcx, rax
mov eax, r15d
xor eax, 0c45d2c34h
@@ -1923,19 +1986,19 @@ rx_i_139: ;FPMUL
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_140: ;FPDIV
+rx_i_140: ;FPSQRT
dec edi
js rx_finish
xor r8, 01ae56e03h
mov ecx, r8d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- divsd xmm0, xmm8
+ sqrtsd xmm0, xmm0
movsd xmm5, xmm0
-rx_i_141: ;SAR_64
+rx_i_141: ;ROL_64
dec edi
js rx_finish
xor r11, 015a24231h
@@ -1943,7 +2006,7 @@ rx_i_141: ;SAR_64
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r9
- sar rax, cl
+ rol rax, cl
mov r11, rax
rx_i_142: ;RET
@@ -1955,7 +2018,7 @@ rx_i_142: ;RET
cmp rsp, rbp
je short not_taken_ret_142
cmp r9d, -1910517416
- ja short not_taken_ret_142
+ jbe short not_taken_ret_142
xor rax, qword ptr [rsp + 8]
mov r10, rax
ret 8
@@ -2008,7 +2071,7 @@ rx_i_146: ;CALL
mov ecx, r11d
call rx_read_dataset
cmp r12d, 1365939282
- jbe short taken_call_146
+ js short taken_call_146
mov rcx, rax
mov eax, r10d
xor eax, 0516a9452h
@@ -2070,27 +2133,29 @@ rx_i_150: ;IMULH_64
mov rax, rdx
mov r10, rax
-rx_i_151: ;MUL_64
+rx_i_151: ;MULH_64
dec edi
js rx_finish
xor r13, 03a7df043h
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- imul rax, rax, 1784404616
+ mov rcx, 1784404616
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r12d
xor eax, 06a5bda88h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_152: ;ADD_32
+rx_i_152: ;SUB_64
dec edi
js rx_finish
xor r10, 0783e5c4eh
mov ecx, r10d
call rx_read_dataset
- add eax, r14d
+ sub rax, r14
mov rcx, rax
mov eax, r10d
xor eax, 08c783d2ch
@@ -2113,47 +2178,50 @@ rx_i_153: ;MUL_32
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_154: ;IMULH_64
+rx_i_154: ;DIV_64
dec edi
js rx_finish
xor r9, 01504ca7ah
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r8
- imul rcx
- mov rax, rdx
+ mov ecx, 1
+ mov edx, r8d
+ test edx, edx
+ cmovne ecx, edx
+ xor edx, edx
+ div rcx
mov rcx, rax
mov eax, r9d
xor eax, 0c854a524h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_155: ;OR_64
+rx_i_155: ;OR_32
dec edi
js rx_finish
xor r9, 0ea72a7cfh
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, r13
+ or eax, r13d
mov rcx, rax
mov eax, r11d
xor eax, 087aed7f2h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_156: ;ROL_64
+rx_i_156: ;ROR_64
dec edi
js rx_finish
xor r13, 0ad0e7a88h
mov ecx, r13d
call rx_read_dataset
mov rcx, r10
- rol rax, cl
+ ror rax, cl
mov r10, rax
-rx_i_157: ;FPMUL
+rx_i_157: ;FPDIV
dec edi
js rx_finish
xor r15, 0fd95ab87h
@@ -2162,7 +2230,7 @@ rx_i_157: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm2
+ divsd xmm0, xmm2
movsd xmm8, xmm0
rx_i_158: ;MUL_32
@@ -2177,14 +2245,14 @@ rx_i_158: ;MUL_32
imul rax, rcx
mov r10, rax
-rx_i_159: ;ROL_64
+rx_i_159: ;ROR_64
dec edi
js rx_finish
xor r11, 0d23f3b78h
mov ecx, r11d
call rx_read_dataset
mov rcx, r10
- rol rax, cl
+ ror rax, cl
mov rcx, rax
mov eax, r13d
xor eax, 01c5d3ebeh
@@ -2239,29 +2307,29 @@ taken_call_163:
push rax
call rx_i_185
-rx_i_164: ;ADD_32
+rx_i_164: ;SUB_64
dec edi
js rx_finish
xor r14, 0b1685b90h
mov ecx, r14d
call rx_read_dataset
- add eax, 1518778665
+ sub rax, 1518778665
mov rcx, rax
mov eax, r10d
xor eax, 05a86b929h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_165: ;AND_64
+rx_i_165: ;OR_64
dec edi
js rx_finish
xor r15, 0ea992531h
mov ecx, r15d
call rx_read_dataset
- and rax, r14
+ or rax, r14
mov r8, rax
-rx_i_166: ;SHR_64
+rx_i_166: ;SAR_64
dec edi
js rx_finish
xor r9, 01fd57a4ah
@@ -2269,32 +2337,32 @@ rx_i_166: ;SHR_64
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r10
- shr rax, cl
+ sar rax, cl
mov r13, rax
-rx_i_167: ;ADD_64
+rx_i_167: ;SUB_64
dec edi
js rx_finish
xor r12, 0e3486c0ah
mov ecx, r12d
call rx_read_dataset
- add rax, -2101130488
+ sub rax, -2101130488
mov rcx, rax
mov eax, r14d
xor eax, 082c34b08h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_168: ;MULH_64
+rx_i_168: ;MUL_32
dec edi
js rx_finish
xor r12, 01f0c2737h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r9
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r9d
+ imul rax, rcx
mov rcx, rax
mov eax, r13d
xor eax, 09aa6da19h
@@ -2311,7 +2379,7 @@ rx_i_169: ;RET
cmp rsp, rbp
je short not_taken_ret_169
cmp r8d, 1682991196
- ja short not_taken_ret_169
+ jno short not_taken_ret_169
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r9d
@@ -2326,7 +2394,7 @@ not_taken_ret_169:
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_170: ;SAR_64
+rx_i_170: ;ROL_64
dec edi
js rx_finish
xor r9, 0fe684081h
@@ -2334,7 +2402,7 @@ rx_i_170: ;SAR_64
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r8
- sar rax, cl
+ rol rax, cl
mov rcx, rax
mov eax, r13d
xor eax, 0bb67f8abh
@@ -2356,52 +2424,60 @@ rx_i_171: ;FPMUL
mulsd xmm0, xmm1
movsd xmm2, xmm0
-rx_i_172: ;FPMUL
+rx_i_172: ;FPSQRT
dec edi
js rx_finish
xor r12, 071b15effh
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm5
+ sqrtsd xmm0, xmm0
mov eax, r15d
xor eax, 08d1a76f8h
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_173: ;CALL
+rx_i_173: ;RET
dec edi
js rx_finish
xor r11, 072790347h
mov ecx, r11d
call rx_read_dataset
+ cmp rsp, rbp
+ je short not_taken_ret_173
cmp r10d, -1286357107
- jbe short taken_call_173
+ ja short not_taken_ret_173
+ xor rax, qword ptr [rsp + 8]
+ mov rcx, rax
+ mov eax, r14d
+ xor eax, 0b353bf8dh
+ and eax, 2047
+ mov qword ptr [rsi + rax * 8], rcx
+ ret 8
+not_taken_ret_173:
mov rcx, rax
mov eax, r14d
xor eax, 0b353bf8dh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
- jmp rx_i_174
-taken_call_173:
- push rax
- call rx_i_201
-rx_i_174: ;FPSQRT
+rx_i_174: ;CALL
dec edi
js rx_finish
xor r8, 04ae8a020h
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, 9223372036854773760
- and rax, rcx
- cvtsi2sd xmm0, rax
- sqrtsd xmm0, xmm0
- movsd xmm6, xmm0
+ cmp r10d, -1541051751
+ jl short taken_call_174
+ mov r14, rax
+ jmp rx_i_175
+taken_call_174:
+ push rax
+ call rx_i_208
rx_i_175: ;IMULH_64
dec edi
@@ -2425,50 +2501,56 @@ rx_i_176: ;SUB_64
sub rax, r11
mov r12, rax
-rx_i_177: ;MUL_64
+rx_i_177: ;MULH_64
dec edi
js rx_finish
xor r14, 05422cf8fh
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- imul rax, r12
+ mov rcx, r12
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r12d
xor eax, 0ad60ae9ch
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_178: ;FPDIV
+rx_i_178: ;FPROUND
dec edi
js rx_finish
xor r12, 0a025c3dbh
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- divsd xmm0, xmm9
+ mov rcx, rax
+ shl eax, 13
+ and rcx, -2048
+ and eax, 24576
+ cvtsi2sd xmm0, rcx
+ or eax, 40896
+ mov dword ptr [rsp - 8], eax
+ ldmxcsr dword ptr [rsp - 8]
movsd xmm6, xmm0
-rx_i_179: ;SHR_64
+rx_i_179: ;SAR_64
dec edi
js rx_finish
xor r13, 08f74c11h
mov ecx, r13d
call rx_read_dataset
mov rcx, r8
- shr rax, cl
+ sar rax, cl
mov r8, rax
-rx_i_180: ;ADD_32
+rx_i_180: ;SUB_64
dec edi
js rx_finish
xor r9, 01f2ed5f1h
mov ecx, r9d
call rx_read_dataset
- add eax, r14d
+ sub rax, r14
mov r10, rax
rx_i_181: ;ADD_64
@@ -2493,7 +2575,7 @@ rx_i_182: ;RET
cmp rsp, rbp
je short not_taken_ret_182
cmp r12d, -1016679819
- ja short not_taken_ret_182
+ js short not_taken_ret_182
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r12d
@@ -2523,14 +2605,14 @@ rx_i_183: ;FPADD
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_184: ;OR_64
+rx_i_184: ;XOR_64
dec edi
js rx_finish
xor r15, 01cb3ce1fh
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 1995308563
+ xor rax, 1995308563
mov rcx, rax
mov eax, r9d
xor eax, 076edfe13h
@@ -2544,14 +2626,14 @@ rx_i_185: ;CALL
mov ecx, r10d
call rx_read_dataset
cmp r12d, -1612576918
- jbe short taken_call_185
+ ja short taken_call_185
mov r10, rax
jmp rx_i_186
taken_call_185:
push rax
call rx_i_215
-rx_i_186: ;FPADD
+rx_i_186: ;FPSUB
dec edi
js rx_finish
xor r8, 0f8884327h
@@ -2561,7 +2643,7 @@ rx_i_186: ;FPADD
cvtsi2sd xmm0, rax
mov rax, 4746551310076084224
movd xmm1, rax
- addsd xmm0, xmm1
+ subsd xmm0, xmm1
mov eax, r14d
xor eax, 07c8d12a5h
and eax, 32767
@@ -2577,13 +2659,13 @@ rx_i_187: ;ADD_64
add rax, 137260710
mov r10, rax
-rx_i_188: ;SHR_64
+rx_i_188: ;SAR_64
dec edi
js rx_finish
xor r12, 04764cdf7h
mov ecx, r12d
call rx_read_dataset
- shr rax, 40
+ sar rax, 40
mov r12, rax
rx_i_189: ;CALL
@@ -2605,20 +2687,20 @@ taken_call_189:
push rax
call rx_i_250
-rx_i_190: ;XOR_64
+rx_i_190: ;XOR_32
dec edi
js rx_finish
xor r9, 0cded414bh
mov ecx, r9d
call rx_read_dataset
- xor rax, r15
+ xor eax, r15d
mov rcx, rax
mov eax, r10d
xor eax, 0b55bfba0h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_191: ;FPMUL
+rx_i_191: ;FPDIV
dec edi
js rx_finish
xor r13, 05c6d64a8h
@@ -2627,39 +2709,44 @@ rx_i_191: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm6
+ divsd xmm0, xmm6
mov eax, r13d
xor eax, 020dcdd88h
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_192: ;FPSUB
+rx_i_192: ;FPMUL
dec edi
js rx_finish
xor r9, 04659becbh
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, 4746030173290233856
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
mov eax, r12d
xor eax, 075253031h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_193: ;FPDIV
+rx_i_193: ;FPROUND
dec edi
js rx_finish
xor r11, 0c52741d5h
mov ecx, r11d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- divsd xmm0, xmm7
+ mov rcx, rax
+ shl eax, 13
+ and rcx, -2048
+ and eax, 24576
+ cvtsi2sd xmm0, rcx
+ or eax, 40896
+ mov dword ptr [rsp - 8], eax
+ ldmxcsr dword ptr [rsp - 8]
mov eax, r13d
xor eax, 0e6f1a3b7h
and eax, 2047
@@ -2674,50 +2761,55 @@ rx_i_194: ;RET
cmp rsp, rbp
je short not_taken_ret_194
cmp r8d, -1901851954
- ja short not_taken_ret_194
+ jns short not_taken_ret_194
xor rax, qword ptr [rsp + 8]
mov r13, rax
ret 8
not_taken_ret_194:
mov r13, rax
-rx_i_195: ;FPSQRT
+rx_i_195: ;CALL
dec edi
js rx_finish
xor r15, 0884f3526h
mov ecx, r15d
call rx_read_dataset
- mov rcx, 9223372036854773760
- and rax, rcx
- cvtsi2sd xmm0, rax
- sqrtsd xmm0, xmm0
+ cmp r11d, 1687119072
+ jno short taken_call_195
+ mov rcx, rax
mov eax, r14d
xor eax, 0648f64e0h
and eax, 2047
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_196
+taken_call_195:
+ push rax
+ call rx_i_279
-rx_i_196: ;FPSQRT
+rx_i_196: ;CALL
dec edi
js rx_finish
xor r8, 0d76edad3h
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, 9223372036854773760
- and rax, rcx
- cvtsi2sd xmm0, rax
- sqrtsd xmm0, xmm0
- movsd xmm8, xmm0
+ cmp r14d, -117628864
+ jns short taken_call_196
+ mov r8, rax
+ jmp rx_i_197
+taken_call_196:
+ push rax
+ call rx_i_309
-rx_i_197: ;MULH_64
+rx_i_197: ;MUL_32
dec edi
js rx_finish
xor r12, 0e9939ach
mov ecx, r12d
call rx_read_dataset
- mov rcx, r12
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r12d
+ imul rax, rcx
mov rcx, rax
mov eax, r15d
xor eax, 074e097dch
@@ -2737,59 +2829,65 @@ rx_i_198: ;FPMUL
mulsd xmm0, xmm2
movsd xmm5, xmm0
-rx_i_199: ;SHR_64
+rx_i_199: ;ROL_64
dec edi
js rx_finish
xor r10, 09405152ch
mov ecx, r10d
call rx_read_dataset
mov rcx, r8
- shr rax, cl
+ rol rax, cl
mov r9, rax
-rx_i_200: ;ADD_64
+rx_i_200: ;SUB_64
dec edi
js rx_finish
xor r8, 0c2a9f41bh
mov ecx, r8d
call rx_read_dataset
- add rax, -1907903895
+ sub rax, -1907903895
mov rcx, rax
mov eax, r13d
xor eax, 08e47b269h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_201: ;MUL_64
+rx_i_201: ;MULH_64
dec edi
js rx_finish
xor r12, 0229208efh
mov ecx, r12d
call rx_read_dataset
- imul rax, r15
+ mov rcx, r15
+ mul rcx
+ mov rax, rdx
mov r11, rax
-rx_i_202: ;MUL_64
+rx_i_202: ;MULH_64
dec edi
js rx_finish
xor r14, 0c8d95bbbh
mov eax, r14d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- imul rax, r14
+ mov rcx, r14
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r8d
xor eax, 01149cba0h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_203: ;MUL_64
+rx_i_203: ;MULH_64
dec edi
js rx_finish
xor r13, 050049e2eh
mov ecx, r13d
call rx_read_dataset
- imul rax, r10
+ mov rcx, r10
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r10d
xor eax, 0d0e71e9ah
@@ -2819,7 +2917,7 @@ rx_i_205: ;FPADD
addsd xmm0, xmm9
movsd xmm4, xmm0
-rx_i_206: ;FPADD
+rx_i_206: ;FPSUB
dec edi
js rx_finish
xor r13, 0fa44b04ah
@@ -2828,7 +2926,7 @@ rx_i_206: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm9
+ subsd xmm0, xmm9
mov eax, r13d
xor eax, 0b44dbc71h
and eax, 2047
@@ -2847,21 +2945,21 @@ rx_i_207: ;FPSUB
subsd xmm0, xmm1
movsd xmm7, xmm0
-rx_i_208: ;SUB_32
+rx_i_208: ;MUL_64
dec edi
js rx_finish
xor r9, 01af8ab1dh
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- sub eax, r15d
+ imul rax, r15
mov rcx, rax
mov eax, r8d
xor eax, 0eb8fc30fh
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_209: ;FPMUL
+rx_i_209: ;FPDIV
dec edi
js rx_finish
xor r14, 094e997c5h
@@ -2871,58 +2969,59 @@ rx_i_209: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm8
+ divsd xmm0, xmm8
mov eax, r13d
xor eax, 0a1f8d8c7h
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_210: ;FPSUB
+rx_i_210: ;FPMUL
dec edi
js rx_finish
xor r11, 0e836a177h
mov ecx, r11d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, -4483350864878108672
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
mov eax, r12d
xor eax, 0d01fb731h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_211: ;AND_64
+rx_i_211: ;AND_32
dec edi
js rx_finish
xor r9, 039ccdd30h
mov ecx, r9d
call rx_read_dataset
- and rax, r12
+ and eax, r12d
mov rcx, rax
mov eax, r9d
xor eax, 012bbcc84h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_212: ;SUB_32
+rx_i_212: ;MUL_64
dec edi
js rx_finish
xor r9, 0f4f126c5h
mov ecx, r9d
call rx_read_dataset
- sub eax, r12d
+ imul rax, r12
mov r10, rax
-rx_i_213: ;SHL_64
+rx_i_213: ;SHR_64
dec edi
js rx_finish
xor r8, 0b84811f1h
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- shl rax, 30
+ shr rax, 30
mov rcx, rax
mov eax, r12d
xor eax, 0c36b836ah
@@ -2944,28 +3043,28 @@ rx_i_214: ;MUL_32
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_215: ;ROR_64
+rx_i_215: ;FPADD
dec edi
js rx_finish
xor r12, 0ce533072h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r9
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm9
mov eax, r11d
xor eax, 0212e615h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_216: ;SUB_32
+rx_i_216: ;MUL_64
dec edi
js rx_finish
xor r13, 06b465fdbh
mov ecx, r13d
call rx_read_dataset
- sub eax, r13d
+ imul rax, r13
mov rcx, rax
mov eax, r15d
xor eax, 067d81043h
@@ -2984,7 +3083,7 @@ rx_i_217: ;IMUL_32
imul rax, rcx
mov r14, rax
-rx_i_218: ;SHR_64
+rx_i_218: ;ROL_64
dec edi
js rx_finish
xor r9, 0a159f313h
@@ -2992,25 +3091,25 @@ rx_i_218: ;SHR_64
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r14
- shr rax, cl
+ rol rax, cl
mov r14, rax
-rx_i_219: ;ADD_64
+rx_i_219: ;SUB_64
dec edi
js rx_finish
xor r15, 08359265eh
mov ecx, r15d
call rx_read_dataset
- add rax, r12
+ sub rax, r12
mov r10, rax
-rx_i_220: ;SUB_32
+rx_i_220: ;MUL_64
dec edi
js rx_finish
xor r12, 080696de3h
mov ecx, r12d
call rx_read_dataset
- sub eax, r13d
+ imul rax, r13
mov rcx, rax
mov eax, r15d
xor eax, 03b609d2bh
@@ -3033,40 +3132,42 @@ rx_i_221: ;IMUL_32
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_222: ;FPSQRT
+rx_i_222: ;CALL
dec edi
js rx_finish
xor r11, 083c0bd93h
mov ecx, r11d
call rx_read_dataset
- mov rcx, 9223372036854773760
- and rax, rcx
- cvtsi2sd xmm0, rax
- sqrtsd xmm0, xmm0
- movsd xmm3, xmm0
+ cmp r8d, -585552250
+ jge short taken_call_222
+ mov r11, rax
+ jmp rx_i_223
+taken_call_222:
+ push rax
+ call rx_i_244
-rx_i_223: ;OR_32
+rx_i_223: ;XOR_64
dec edi
js rx_finish
xor r8, 0ca37f668h
mov ecx, r8d
call rx_read_dataset
- or eax, -740915304
+ xor rax, -740915304
mov rcx, rax
mov eax, r15d
xor eax, 0d3d68798h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_224: ;IMUL_32
+rx_i_224: ;IMULH_64
dec edi
js rx_finish
xor r9, 0bb44c384h
mov ecx, r9d
call rx_read_dataset
- movsxd rcx, eax
- movsxd rax, r11d
- imul rax, rcx
+ mov rcx, r11
+ imul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r11d
xor eax, 0903fd173h
@@ -3114,29 +3215,32 @@ rx_i_227: ;FPSUB
subsd xmm0, xmm3
movsd xmm2, xmm0
-rx_i_228: ;SHL_64
+rx_i_228: ;SAR_64
dec edi
js rx_finish
xor r12, 053982440h
mov ecx, r12d
call rx_read_dataset
mov rcx, r14
- shl rax, cl
+ sar rax, cl
mov rcx, rax
mov eax, r11d
xor eax, 0e500c69dh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_229: ;IMULH_64
+rx_i_229: ;DIV_64
dec edi
js rx_finish
xor r13, 0c558367eh
mov ecx, r13d
call rx_read_dataset
- mov rcx, r10
- imul rcx
- mov rax, rdx
+ mov ecx, 1
+ mov edx, r10d
+ test edx, edx
+ cmovne ecx, edx
+ xor edx, edx
+ div rcx
mov rcx, rax
mov eax, r12d
xor eax, 0fe304a4ah
@@ -3150,7 +3254,7 @@ rx_i_230: ;CALL
mov ecx, r10d
call rx_read_dataset
cmp r8d, -1752488808
- jbe short taken_call_230
+ jno short taken_call_230
mov rcx, rax
mov eax, r8d
xor eax, 0978b2498h
@@ -3161,7 +3265,7 @@ taken_call_230:
push rax
call rx_i_332
-rx_i_231: ;FPMUL
+rx_i_231: ;FPDIV
dec edi
js rx_finish
xor r11, 0fa312dbdh
@@ -3173,52 +3277,56 @@ rx_i_231: ;FPMUL
cvtsi2sd xmm0, rax
mov rax, -4479585788803153920
movd xmm1, rax
- mulsd xmm0, xmm1
+ divsd xmm0, xmm1
movsd xmm3, xmm0
-rx_i_232: ;FPSQRT
+rx_i_232: ;CALL
dec edi
js rx_finish
xor r11, 0b64246c0h
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, 9223372036854773760
- and rax, rcx
- cvtsi2sd xmm0, rax
- sqrtsd xmm0, xmm0
+ cmp r10d, -2099304
+ jns short taken_call_232
+ mov rcx, rax
mov eax, r15d
xor eax, 0ffdff798h
and eax, 2047
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_233
+taken_call_232:
+ push rax
+ call rx_i_287
-rx_i_233: ;IMUL_32
+rx_i_233: ;IMULH_64
dec edi
js rx_finish
xor r11, 05c535836h
mov ecx, r11d
call rx_read_dataset
- movsxd rcx, eax
- movsxd rax, r12d
- imul rax, rcx
+ mov rcx, r12
+ imul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r13d
xor eax, 013e8b2e0h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_234: ;FPSUB
+rx_i_234: ;FPMUL
dec edi
js rx_finish
xor r15, 0f394972eh
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, 4737156465540726784
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
movsd xmm5, xmm0
rx_i_235: ;RET
@@ -3230,7 +3338,7 @@ rx_i_235: ;RET
cmp rsp, rbp
je short not_taken_ret_235
cmp r9d, -422974038
- ja short not_taken_ret_235
+ js short not_taken_ret_235
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r9d
@@ -3245,7 +3353,7 @@ not_taken_ret_235:
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_236: ;FPMUL
+rx_i_236: ;FPDIV
dec edi
js rx_finish
xor r15, 09ab46ab3h
@@ -3255,7 +3363,7 @@ rx_i_236: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm3
+ divsd xmm0, xmm3
mov eax, r15d
xor eax, 07e732935h
and eax, 2047
@@ -3268,39 +3376,41 @@ rx_i_237: ;CALL
mov ecx, r13d
call rx_read_dataset
cmp r12d, 392389867
- jbe short taken_call_237
+ jo short taken_call_237
mov r14, rax
jmp rx_i_238
taken_call_237:
push rax
call rx_i_272
-rx_i_238: ;FPDIV
+rx_i_238: ;FPROUND
dec edi
js rx_finish
xor r15, 0ba687578h
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- mov rax, 4743218015854657536
- movd xmm1, rax
- divsd xmm0, xmm1
+ mov rcx, rax
+ shl eax, 13
+ and rcx, -2048
+ and eax, 24576
+ cvtsi2sd xmm0, rcx
+ or eax, 40896
+ mov dword ptr [rsp - 8], eax
+ ldmxcsr dword ptr [rsp - 8]
mov eax, r12d
xor eax, 04d2e9e7dh
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_239: ;MUL_32
+rx_i_239: ;IMUL_32
dec edi
js rx_finish
xor r13, 0b6cb9ff2h
mov ecx, r13d
call rx_read_dataset
- mov ecx, eax
- mov eax, r12d
+ movsxd rcx, eax
+ movsxd rax, r12d
imul rax, rcx
mov rcx, rax
mov eax, r15d
@@ -3328,18 +3438,24 @@ rx_i_241: ;CALL
xor r15, 0fab4600h
mov ecx, r15d
call rx_read_dataset
+ cmp r12d, -121899164
+ jge short taken_call_241
+ mov r11, rax
+ jmp rx_i_242
+taken_call_241:
push rax
call rx_i_299
-rx_i_242: ;ROR_64
+rx_i_242: ;FPADD
dec edi
js rx_finish
xor r8, 0158f119fh
mov ecx, r8d
call rx_read_dataset
- mov rcx, r14
- ror rax, cl
- mov r15, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm6
+ movsd xmm7, xmm0
rx_i_243: ;ADD_64
dec edi
@@ -3351,15 +3467,15 @@ rx_i_243: ;ADD_64
add rax, r10
mov r10, rax
-rx_i_244: ;IMUL_32
+rx_i_244: ;IMULH_64
dec edi
js rx_finish
xor r9, 0d65d29f9h
mov ecx, r9d
call rx_read_dataset
- movsxd rcx, eax
- mov rax, -423830277
- imul rax, rcx
+ mov rcx, -423830277
+ imul rcx
+ mov rax, rdx
mov r8, rax
rx_i_245: ;FPADD
@@ -3373,83 +3489,78 @@ rx_i_245: ;FPADD
addsd xmm0, xmm3
movsd xmm7, xmm0
-rx_i_246: ;MULH_64
+rx_i_246: ;MUL_32
dec edi
js rx_finish
xor r12, 01119b0f9h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, 319324914
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, 319324914
+ imul rax, rcx
mov rcx, rax
mov eax, r10d
xor eax, 0130882f2h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_247: ;OR_32
+rx_i_247: ;XOR_64
dec edi
js rx_finish
xor r12, 0d6c2ce3dh
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or eax, 1198180774
+ xor rax, 1198180774
mov r14, rax
-rx_i_248: ;ROR_64
+rx_i_248: ;FPADD
dec edi
js rx_finish
xor r11, 0c6a6248h
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r14
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm6
mov eax, r9d
xor eax, 0b4a1fad6h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_249: ;OR_64
+rx_i_249: ;XOR_64
dec edi
js rx_finish
xor r13, 084505739h
mov ecx, r13d
call rx_read_dataset
- or rax, -1546539637
+ xor rax, -1546539637
mov rcx, rax
mov eax, r12d
xor eax, 0a3d1ad8bh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_250: ;DIV_64
+rx_i_250: ;AND_64
dec edi
js rx_finish
xor r15, 027eeaa2eh
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
-mov ecx, 1
- mov edx, r9d
- test edx, edx
- cmovne ecx, edx
- xor edx, edx
- div rcx
+ and rax, r9
mov r12, rax
-rx_i_251: ;MUL_32
+rx_i_251: ;IMUL_32
dec edi
js rx_finish
xor r10, 0c4de0296h
mov ecx, r10d
call rx_read_dataset
- mov ecx, eax
- mov eax, r14d
+ movsxd rcx, eax
+ movsxd rax, r14d
imul rax, rcx
mov rcx, rax
mov eax, r9d
@@ -3488,14 +3599,14 @@ rx_i_253: ;IMULH_64
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_254: ;SUB_64
+rx_i_254: ;MUL_64
dec edi
js rx_finish
xor r13, 083eafe6fh
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- sub rax, r8
+ imul rax, r8
mov rcx, rax
mov eax, r14d
xor eax, 031115b87h
@@ -3515,14 +3626,14 @@ rx_i_255: ;FPMUL
mulsd xmm0, xmm2
movsd xmm4, xmm0
-rx_i_256: ;SHR_64
+rx_i_256: ;ROL_64
dec edi
js rx_finish
xor r14, 08a75ad41h
mov ecx, r14d
call rx_read_dataset
mov rcx, r8
- shr rax, cl
+ rol rax, cl
mov r14, rax
rx_i_257: ;CALL
@@ -3532,7 +3643,7 @@ rx_i_257: ;CALL
mov ecx, r14d
call rx_read_dataset
cmp r15d, 1699431947
- jbe short taken_call_257
+ jns short taken_call_257
mov rcx, rax
mov eax, r13d
xor eax, 0654b460bh
@@ -3543,7 +3654,7 @@ taken_call_257:
push rax
call rx_i_371
-rx_i_258: ;FPADD
+rx_i_258: ;FPSUB
dec edi
js rx_finish
xor r14, 04cfb709eh
@@ -3551,7 +3662,7 @@ rx_i_258: ;FPADD
call rx_read_dataset
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm4
+ subsd xmm0, xmm4
movsd xmm8, xmm0
rx_i_259: ;FPADD
@@ -3565,13 +3676,15 @@ rx_i_259: ;FPADD
addsd xmm0, xmm5
movsd xmm6, xmm0
-rx_i_260: ;MUL_64
+rx_i_260: ;MULH_64
dec edi
js rx_finish
xor r8, 08375472ch
mov ecx, r8d
call rx_read_dataset
- imul rax, r15
+ mov rcx, r15
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r9d
xor eax, 0f8942c0h
@@ -3591,15 +3704,15 @@ rx_i_261: ;FPADD
addsd xmm0, xmm1
movsd xmm3, xmm0
-rx_i_262: ;MUL_32
+rx_i_262: ;IMUL_32
dec edi
js rx_finish
xor r11, 064fdbda0h
mov eax, r11d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov ecx, eax
- mov eax, r14d
+ movsxd rcx, eax
+ movsxd rax, r14d
imul rax, rcx
mov rcx, rax
mov eax, r9d
@@ -3607,65 +3720,66 @@ rx_i_262: ;MUL_32
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_263: ;ROR_64
+rx_i_263: ;FPADD
dec edi
js rx_finish
xor r11, 02e36a073h
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r9
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm9
mov eax, r11d
xor eax, 06c1856f0h
and eax, 32767
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_264: ;FPSUB
+rx_i_264: ;FPMUL
dec edi
js rx_finish
xor r13, 0f94e9fa9h
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, 4743938178866479104
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
mov eax, r9d
xor eax, 0576a8e8fh
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_265: ;FPDIV
+rx_i_265: ;FPSQRT
dec edi
js rx_finish
xor r14, 02346171ch
mov ecx, r14d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- divsd xmm0, xmm3
+ sqrtsd xmm0, xmm0
movsd xmm3, xmm0
-rx_i_266: ;OR_64
+rx_i_266: ;OR_32
dec edi
js rx_finish
xor r10, 01c42baa6h
mov eax, r10d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, r13
+ or eax, r13d
mov rcx, rax
mov eax, r11d
xor eax, 0a271ff06h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_267: ;FPMUL
+rx_i_267: ;FPDIV
dec edi
js rx_finish
xor r11, 0b39b140h
@@ -3674,22 +3788,23 @@ rx_i_267: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm8
+ divsd xmm0, xmm8
mov eax, r14d
xor eax, 0d8823dc5h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_268: ;FPSUB
+rx_i_268: ;FPMUL
dec edi
js rx_finish
xor r11, 01a07d201h
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm3
+ mulsd xmm0, xmm3
mov eax, r15d
xor eax, 0df89f274h
and eax, 2047
@@ -3707,22 +3822,24 @@ rx_i_269: ;FPADD
addsd xmm0, xmm8
movsd xmm2, xmm0
-rx_i_270: ;CALL
+rx_i_270: ;RET
dec edi
js rx_finish
xor r13, 03d0a3a89h
mov eax, r13d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
+ cmp rsp, rbp
+ je short not_taken_ret_270
cmp r12d, 136160027
- jbe short taken_call_270
+ jbe short not_taken_ret_270
+ xor rax, qword ptr [rsp + 8]
+ mov r10, rax
+ ret 8
+not_taken_ret_270:
mov r10, rax
- jmp rx_i_271
-taken_call_270:
- push rax
- call rx_i_299
-rx_i_271: ;ROL_64
+rx_i_271: ;ROR_64
dec edi
js rx_finish
xor r8, 0c6c7b37h
@@ -3730,34 +3847,32 @@ rx_i_271: ;ROL_64
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r10
- rol rax, cl
+ ror rax, cl
mov r11, rax
-rx_i_272: ;FPROUND
+rx_i_272: ;CALL
dec edi
js rx_finish
xor r12, 0c2510cebh
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, rax
- shl eax, 13
- and rcx, -2048
- and eax, 24576
- cvtsi2sd xmm0, rcx
- or eax, 40896
- mov dword ptr [rsp - 8], eax
- ldmxcsr dword ptr [rsp - 8]
- movsd xmm5, xmm0
+ cmp r15d, -2062812966
+ jl short taken_call_272
+ mov r13, rax
+ jmp rx_i_273
+taken_call_272:
+ push rax
+ call rx_i_385
-rx_i_273: ;ROL_64
+rx_i_273: ;ROR_64
dec edi
js rx_finish
xor r11, 0c80cc899h
mov ecx, r11d
call rx_read_dataset
mov rcx, r8
- rol rax, cl
+ ror rax, cl
mov rcx, rax
mov eax, r10d
xor eax, 01ba81447h
@@ -3794,14 +3909,14 @@ rx_i_275: ;MUL_32
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_276: ;OR_64
+rx_i_276: ;OR_32
dec edi
js rx_finish
xor r12, 0695a5dd2h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, r12
+ or eax, r12d
mov r13, rax
rx_i_277: ;CALL
@@ -3811,10 +3926,19 @@ rx_i_277: ;CALL
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ cmp r12d, 1670848568
+ jl short taken_call_277
+ mov rcx, rax
+ mov eax, r13d
+ xor eax, 063972038h
+ and eax, 32767
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_278
+taken_call_277:
push rax
call rx_i_376
-rx_i_278: ;FPADD
+rx_i_278: ;FPSUB
dec edi
js rx_finish
xor r15, 0b66ca7e0h
@@ -3824,36 +3948,35 @@ rx_i_278: ;FPADD
cvtsi2sd xmm0, rax
mov rax, 4745257761179172864
movd xmm1, rax
- addsd xmm0, xmm1
+ subsd xmm0, xmm1
movsd xmm6, xmm0
-rx_i_279: ;AND_64
+rx_i_279: ;OR_64
dec edi
js rx_finish
xor r10, 0788eceb7h
mov ecx, r10d
call rx_read_dataset
- and rax, r11
+ or rax, r11
mov r13, rax
-rx_i_280: ;FPROUND
+rx_i_280: ;CALL
dec edi
js rx_finish
xor r9, 0c6ac5edah
mov ecx, r9d
call rx_read_dataset
+ cmp r11d, -1236180570
+ jns short taken_call_280
mov rcx, rax
- shl eax, 13
- and rcx, -2048
- and eax, 24576
- cvtsi2sd xmm0, rcx
- or eax, 40896
- mov dword ptr [rsp - 8], eax
- ldmxcsr dword ptr [rsp - 8]
mov eax, r12d
xor eax, 0b65161a6h
and eax, 2047
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_281
+taken_call_280:
+ push rax
+ call rx_i_408
rx_i_281: ;IMUL_32
dec edi
@@ -3881,7 +4004,7 @@ rx_i_282: ;FPSUB
subsd xmm0, xmm7
movsd xmm4, xmm0
-rx_i_283: ;FPADD
+rx_i_283: ;FPSUB
dec edi
js rx_finish
xor r15, 0f1a91458h
@@ -3891,62 +4014,60 @@ rx_i_283: ;FPADD
cvtsi2sd xmm0, rax
mov rax, 4742807966216880128
movd xmm1, rax
- addsd xmm0, xmm1
+ subsd xmm0, xmm1
movsd xmm9, xmm0
-rx_i_284: ;IMULH_64
+rx_i_284: ;AND_64
dec edi
js rx_finish
xor r12, 066246b43h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r11
- imul rcx
- mov rax, rdx
+ and rax, r11
mov rcx, rax
mov eax, r13d
xor eax, 0211aeb00h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_285: ;ADD_32
+rx_i_285: ;SUB_64
dec edi
js rx_finish
xor r10, 05a762727h
mov ecx, r10d
call rx_read_dataset
- add eax, r10d
+ sub rax, r10
mov rcx, rax
mov eax, r11d
xor eax, 0f3e6c946h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_286: ;SUB_64
+rx_i_286: ;MUL_64
dec edi
js rx_finish
xor r15, 0de1ab603h
mov ecx, r15d
call rx_read_dataset
- sub rax, 1367326224
+ imul rax, rax, 1367326224
mov r11, rax
-rx_i_287: ;ADD_64
+rx_i_287: ;ADD_32
dec edi
js rx_finish
xor r9, 0df4d084fh
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- add rax, -1156732976
+ add eax, -1156732976
mov rcx, rax
mov eax, r12d
xor eax, 0bb0da7d0h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_288: ;FPADD
+rx_i_288: ;FPSUB
dec edi
js rx_finish
xor r15, 0e68f36ach
@@ -3956,7 +4077,7 @@ rx_i_288: ;FPADD
cvtsi2sd xmm0, rax
mov rax, -4477945591619387392
movd xmm1, rax
- addsd xmm0, xmm1
+ subsd xmm0, xmm1
movsd xmm9, xmm0
rx_i_289: ;IMUL_32
@@ -3970,50 +4091,50 @@ rx_i_289: ;IMUL_32
imul rax, rcx
mov r14, rax
-rx_i_290: ;ROR_64
+rx_i_290: ;FPADD
dec edi
js rx_finish
xor r14, 082f5e36ch
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r9
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm9
mov eax, r15d
xor eax, 0546e75d1h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_291: ;AND_64
+rx_i_291: ;OR_64
dec edi
js rx_finish
xor r11, 049547c9ch
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- and rax, r15
+ or rax, r15
mov rcx, rax
mov eax, r8d
xor eax, 04926c7fah
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_292: ;SUB_32
+rx_i_292: ;MUL_64
dec edi
js rx_finish
xor r10, 08716ac8bh
mov eax, r10d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- sub eax, r8d
+ imul rax, r8
mov rcx, rax
mov eax, r9d
xor eax, 062eafa1bh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_293: ;FPMUL
+rx_i_293: ;FPDIV
dec edi
js rx_finish
xor r14, 0efef52b5h
@@ -4023,21 +4144,22 @@ rx_i_293: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm9
+ divsd xmm0, xmm9
mov eax, r8d
xor eax, 046affb49h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_294: ;FPSUB
+rx_i_294: ;FPMUL
dec edi
js rx_finish
xor r15, 060665748h
mov ecx, r15d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm8
+ mulsd xmm0, xmm8
mov eax, r9d
xor eax, 02f4d18d7h
and eax, 2047
@@ -4053,7 +4175,7 @@ rx_i_295: ;RET
cmp rsp, rbp
je short not_taken_ret_295
cmp r14d, 1988795765
- ja short not_taken_ret_295
+ js short not_taken_ret_295
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r14d
@@ -4068,17 +4190,17 @@ not_taken_ret_295:
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_296: ;ROL_64
+rx_i_296: ;ROR_64
dec edi
js rx_finish
xor r13, 05a87cc3dh
mov eax, r13d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- rol rax, 23
+ ror rax, 23
mov r10, rax
-rx_i_297: ;FPADD
+rx_i_297: ;FPSUB
dec edi
js rx_finish
xor r9, 0c61f4279h
@@ -4086,7 +4208,7 @@ rx_i_297: ;FPADD
call rx_read_dataset
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm5
+ subsd xmm0, xmm5
mov eax, r8d
xor eax, 014844990h
and eax, 2047
@@ -4101,7 +4223,7 @@ rx_i_298: ;RET
cmp rsp, rbp
je short not_taken_ret_298
cmp r15d, -276467273
- ja short not_taken_ret_298
+ jo short not_taken_ret_298
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r8d
@@ -4130,20 +4252,23 @@ rx_i_299: ;FPSUB
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_300: ;FPDIV
+rx_i_300: ;CALL
dec edi
js rx_finish
xor r14, 018738758h
mov ecx, r14d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- divsd xmm0, xmm9
+ cmp r9d, -207252278
+ jns short taken_call_300
+ mov rcx, rax
mov eax, r8d
xor eax, 0f3a594cah
and eax, 2047
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_301
+taken_call_300:
+ push rax
+ call rx_i_399
rx_i_301: ;ADD_64
dec edi
@@ -4155,7 +4280,7 @@ rx_i_301: ;ADD_64
add rax, r10
mov r14, rax
-rx_i_302: ;FPADD
+rx_i_302: ;FPSUB
dec edi
js rx_finish
xor r14, 084f53637h
@@ -4164,7 +4289,7 @@ rx_i_302: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm7
+ subsd xmm0, xmm7
mov eax, r14d
xor eax, 0d10f7c42h
and eax, 2047
@@ -4244,32 +4369,32 @@ rx_i_308: ;MUL_64
imul rax, r15
mov r13, rax
-rx_i_309: ;SUB_64
+rx_i_309: ;MUL_64
dec edi
js rx_finish
xor r11, 03c6c62b8h
mov ecx, r11d
call rx_read_dataset
- sub rax, -65873120
+ imul rax, rax, -65873120
mov r10, rax
-rx_i_310: ;ADD_64
+rx_i_310: ;ADD_32
dec edi
js rx_finish
xor r15, 08b34cdfch
mov ecx, r15d
call rx_read_dataset
- add rax, r15
+ add eax, r15d
mov r13, rax
-rx_i_311: ;SHR_64
+rx_i_311: ;SAR_64
dec edi
js rx_finish
xor r15, 04c36adb1h
mov ecx, r15d
call rx_read_dataset
mov rcx, r8
- shr rax, cl
+ sar rax, cl
mov r10, rax
rx_i_312: ;MUL_64
@@ -4313,46 +4438,50 @@ rx_i_314: ;FPMUL
mulsd xmm0, xmm1
movsd xmm7, xmm0
-rx_i_315: ;FPSUB
+rx_i_315: ;FPMUL
dec edi
js rx_finish
xor r8, 0ff8848cfh
mov ecx, r8d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, 4744327281034395648
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
mov eax, r12d
xor eax, 05cf21a31h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_316: ;MULH_64
+rx_i_316: ;MUL_32
dec edi
js rx_finish
xor r13, 0b18904cdh
mov ecx, r13d
call rx_read_dataset
- mov rcx, -1147928648
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, -1147928648
+ imul rax, rcx
mov r10, rax
-rx_i_317: ;ROR_64
+rx_i_317: ;FPADD
dec edi
js rx_finish
xor r8, 0a0d0befh
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- ror rax, 62
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ mov rax, -4478056002024898560
+ movd xmm1, rax
+ addsd xmm0, xmm1
mov eax, r14d
xor eax, 09500d514h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
rx_i_318: ;IMUL_32
dec edi
@@ -4369,14 +4498,15 @@ rx_i_318: ;IMUL_32
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_319: ;XOR_32
+rx_i_319: ;SHR_64
dec edi
js rx_finish
xor r9, 02e36ddafh
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- xor eax, r15d
+ mov rcx, r15
+ shr rax, cl
mov r9, rax
rx_i_320: ;RET
@@ -4387,6 +4517,8 @@ rx_i_320: ;RET
call rx_read_dataset
cmp rsp, rbp
je short not_taken_ret_320
+ cmp r10d, 906151187
+ jl short not_taken_ret_320
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r8d
@@ -4415,19 +4547,19 @@ rx_i_321: ;FPADD
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_322: ;ROR_64
+rx_i_322: ;FPADD
dec edi
js rx_finish
xor r9, 057621d9ah
mov ecx, r9d
call rx_read_dataset
- mov rcx, r11
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm3
mov eax, r15d
xor eax, 061cb9db8h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
rx_i_323: ;ROL_64
dec edi
@@ -4477,7 +4609,7 @@ rx_i_326: ;CALL
mov ecx, r14d
call rx_read_dataset
cmp r11d, 1411981860
- jbe short taken_call_326
+ jo short taken_call_326
mov rcx, rax
mov eax, r11d
xor eax, 054292224h
@@ -4488,69 +4620,71 @@ taken_call_326:
push rax
call rx_i_347
-rx_i_327: ;MUL_64
+rx_i_327: ;MULH_64
dec edi
js rx_finish
xor r14, 07b07664bh
mov eax, r14d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- imul rax, rax, -696924877
+ mov rcx, -696924877
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r14d
xor eax, 0d675c533h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_328: ;FPMUL
+rx_i_328: ;FPSQRT
dec edi
js rx_finish
xor r9, 0f956baffh
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm2
+ sqrtsd xmm0, xmm0
movsd xmm9, xmm0
-rx_i_329: ;XOR_64
+rx_i_329: ;SHL_64
dec edi
js rx_finish
xor r11, 0708ab9d1h
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- xor rax, -281580460
+ shl rax, 24
mov r13, rax
-rx_i_330: ;MUL_64
+rx_i_330: ;MULH_64
dec edi
js rx_finish
xor r11, 0d1b27540h
mov ecx, r11d
call rx_read_dataset
- imul rax, r8
+ mov rcx, r8
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r9d
xor eax, 0b67623c3h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_331: ;IMULH_64
+rx_i_331: ;AND_64
dec edi
js rx_finish
xor r9, 09665f98dh
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r15
- imul rcx
- mov rax, rdx
+ and rax, r15
mov r12, rax
-rx_i_332: ;SAR_64
+rx_i_332: ;ROL_64
dec edi
js rx_finish
xor r12, 0fb9c32adh
@@ -4558,7 +4692,7 @@ rx_i_332: ;SAR_64
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r13
- sar rax, cl
+ rol rax, cl
mov r9, rax
rx_i_333: ;RET
@@ -4569,21 +4703,23 @@ rx_i_333: ;RET
call rx_read_dataset
cmp rsp, rbp
je short not_taken_ret_333
+ cmp r8d, 842221018
+ jl short not_taken_ret_333
xor rax, qword ptr [rsp + 8]
mov r11, rax
ret 8
not_taken_ret_333:
mov r11, rax
-rx_i_334: ;MUL_32
+rx_i_334: ;IMUL_32
dec edi
js rx_finish
xor r9, 0f6a93f19h
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov ecx, eax
- mov eax, r13d
+ movsxd rcx, eax
+ movsxd rax, r13d
imul rax, rcx
mov rcx, rax
mov eax, r11d
@@ -4606,72 +4742,73 @@ rx_i_335: ;FPADD
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_336: ;ROR_64
+rx_i_336: ;FPADD
dec edi
js rx_finish
xor r12, 0f253cd4eh
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r14
- ror rax, cl
- mov r11, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm6
+ movsd xmm3, xmm0
-rx_i_337: ;OR_32
+rx_i_337: ;XOR_64
dec edi
js rx_finish
xor r14, 0f009758bh
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or eax, -175125848
+ xor rax, -175125848
mov r11, rax
-rx_i_338: ;ADD_64
+rx_i_338: ;ADD_32
dec edi
js rx_finish
xor r8, 0dda04168h
mov ecx, r8d
call rx_read_dataset
- add rax, r13
+ add eax, r13d
mov r8, rax
-rx_i_339: ;ADD_32
+rx_i_339: ;SUB_64
dec edi
js rx_finish
xor r15, 03e6cfb73h
mov eax, r15d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- add eax, r8d
+ sub rax, r8
mov rcx, rax
mov eax, r12d
xor eax, 07ffe4218h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_340: ;ROR_64
+rx_i_340: ;FPADD
dec edi
js rx_finish
xor r15, 0aea0a435h
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r10
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm2
mov eax, r11d
xor eax, 02644c5ah
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_341: ;ADD_64
+rx_i_341: ;ADD_32
dec edi
js rx_finish
xor r8, 03d6c4ab2h
mov ecx, r8d
call rx_read_dataset
- add rax, r12
+ add eax, r12d
mov rcx, rax
mov eax, r13d
xor eax, 0dab07c39h
@@ -4703,7 +4840,7 @@ rx_i_343: ;FPADD
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_344: ;FPADD
+rx_i_344: ;FPSUB
dec edi
js rx_finish
xor r15, 0e51629cch
@@ -4711,43 +4848,44 @@ rx_i_344: ;FPADD
call rx_read_dataset
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm5
+ subsd xmm0, xmm5
mov eax, r13d
xor eax, 038b653beh
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_345: ;MULH_64
+rx_i_345: ;MUL_32
dec edi
js rx_finish
xor r12, 019eb9ea5h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r15
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r15d
+ imul rax, rcx
mov rcx, rax
mov eax, r8d
xor eax, 024736405h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_346: ;FPSUB
+rx_i_346: ;FPMUL
dec edi
js rx_finish
xor r9, 09ccc7abah
mov ecx, r9d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm2
+ mulsd xmm0, xmm2
mov eax, r11d
xor eax, 0319de2d3h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_347: ;SHL_64
+rx_i_347: ;SHR_64
dec edi
js rx_finish
xor r14, 056f6cf0bh
@@ -4755,50 +4893,53 @@ rx_i_347: ;SHL_64
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r13
- shl rax, cl
+ shr rax, cl
mov rcx, rax
mov eax, r15d
xor eax, 0d9a469a9h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_348: ;FPSUB
+rx_i_348: ;FPMUL
dec edi
js rx_finish
xor r10, 03ef9bcc4h
mov eax, r10d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, 4744717476367958016
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
mov eax, r13d
xor eax, 0627d9feah
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_349: ;MUL_64
+rx_i_349: ;MULH_64
dec edi
js rx_finish
xor r12, 0bbbcdbach
mov ecx, r12d
call rx_read_dataset
- imul rax, r13
+ mov rcx, r13
+ mul rcx
+ mov rax, rdx
mov rcx, rax
mov eax, r9d
xor eax, 0ef03b0ddh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_350: ;OR_64
+rx_i_350: ;XOR_64
dec edi
js rx_finish
xor r12, 0ae9d1e96h
mov ecx, r12d
call rx_read_dataset
- or rax, r15
+ xor rax, r15
mov rcx, rax
mov eax, r13d
xor eax, 0ed2d3987h
@@ -4829,14 +4970,14 @@ rx_i_352: ;FPSUB
subsd xmm0, xmm1
movsd xmm9, xmm0
-rx_i_353: ;XOR_64
+rx_i_353: ;XOR_32
dec edi
js rx_finish
xor r8, 018e0e5ddh
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- xor rax, r15
+ xor eax, r15d
mov r13, rax
rx_i_354: ;CALL
@@ -4858,13 +4999,15 @@ taken_call_354:
push rax
call rx_i_356
-rx_i_355: ;MUL_64
+rx_i_355: ;MULH_64
dec edi
js rx_finish
xor r11, 0a3a5906fh
mov ecx, r11d
call rx_read_dataset
- imul rax, r10
+ mov rcx, r10
+ mul rcx
+ mov rax, rdx
mov r13, rax
rx_i_356: ;FPADD
@@ -4878,49 +5021,50 @@ rx_i_356: ;FPADD
addsd xmm0, xmm6
movsd xmm2, xmm0
-rx_i_357: ;FPSUB
+rx_i_357: ;FPMUL
dec edi
js rx_finish
xor r13, 02e65278bh
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm2
+ mulsd xmm0, xmm2
movsd xmm7, xmm0
-rx_i_358: ;MULH_64
+rx_i_358: ;MUL_32
dec edi
js rx_finish
xor r13, 02412fc10h
mov ecx, r13d
call rx_read_dataset
- mov rcx, r13
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r13d
+ imul rax, rcx
mov r13, rax
-rx_i_359: ;SUB_32
+rx_i_359: ;MUL_64
dec edi
js rx_finish
xor r10, 06bd6e65fh
mov ecx, r10d
call rx_read_dataset
- sub eax, r14d
+ imul rax, r14
mov rcx, rax
mov eax, r8d
xor eax, 0c1062b3ch
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_360: ;SUB_64
+rx_i_360: ;MUL_64
dec edi
js rx_finish
xor r10, 01cd85d80h
mov ecx, r10d
call rx_read_dataset
- sub rax, r10
+ imul rax, r10
mov r11, rax
rx_i_361: ;ADD_64
@@ -4933,16 +5077,19 @@ rx_i_361: ;ADD_64
add rax, 820073637
mov r11, rax
-rx_i_362: ;IMULH_64
+rx_i_362: ;DIV_64
dec edi
js rx_finish
xor r13, 088fa6e5ah
mov eax, r13d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r11
- imul rcx
- mov rax, rdx
+ mov ecx, 1
+ mov edx, r11d
+ test edx, edx
+ cmovne ecx, edx
+ xor edx, edx
+ div rcx
mov r9, rax
rx_i_363: ;FPSUB
@@ -4972,67 +5119,68 @@ rx_i_364: ;FPMUL
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_365: ;FPDIV
+rx_i_365: ;FPSQRT
dec edi
js rx_finish
xor r15, 01d125a7fh
mov ecx, r15d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- divsd xmm0, xmm6
+ sqrtsd xmm0, xmm0
movsd xmm6, xmm0
-rx_i_366: ;ADD_32
+rx_i_366: ;SUB_64
dec edi
js rx_finish
xor r9, 0ed8954bdh
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- add eax, 1082179469
+ sub rax, 1082179469
mov rcx, rax
mov eax, r15d
xor eax, 04080bf8dh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_367: ;FPSUB
+rx_i_367: ;FPMUL
dec edi
js rx_finish
xor r12, 09f75887bh
mov eax, r12d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm6
+ mulsd xmm0, xmm6
mov eax, r11d
xor eax, 05415334dh
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_368: ;MULH_64
+rx_i_368: ;MUL_32
dec edi
js rx_finish
xor r11, 0badaf867h
mov ecx, r11d
call rx_read_dataset
- mov rcx, r8
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r8d
+ imul rax, rcx
mov r8, rax
-rx_i_369: ;MUL_32
+rx_i_369: ;IMUL_32
dec edi
js rx_finish
xor r15, 02db4444ah
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov ecx, eax
- mov eax, r9d
+ movsxd rcx, eax
+ movsxd rax, r9d
imul rax, rcx
mov rcx, rax
mov eax, r12d
@@ -5056,38 +5204,37 @@ rx_i_370: ;IMUL_32
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_371: ;ROR_64
+rx_i_371: ;FPADD
dec edi
js rx_finish
xor r9, 04d14cb3ah
mov ecx, r9d
call rx_read_dataset
- mov rcx, r9
- ror rax, cl
- mov r12, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm9
+ movsd xmm4, xmm0
-rx_i_372: ;SUB_64
+rx_i_372: ;MUL_64
dec edi
js rx_finish
xor r10, 0a14836bah
mov ecx, r10d
call rx_read_dataset
- sub rax, r10
+ imul rax, r10
mov r8, rax
-rx_i_373: ;IMULH_64
+rx_i_373: ;AND_64
dec edi
js rx_finish
xor r9, 053fe22e2h
mov eax, r9d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r13
- imul rcx
- mov rax, rdx
+ and rax, r13
mov r9, rax
-rx_i_374: ;FPADD
+rx_i_374: ;FPSUB
dec edi
js rx_finish
xor r15, 010e1fb24h
@@ -5096,7 +5243,7 @@ rx_i_374: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm6
+ subsd xmm0, xmm6
movsd xmm6, xmm0
rx_i_375: ;FPADD
@@ -5110,7 +5257,7 @@ rx_i_375: ;FPADD
addsd xmm0, xmm9
movsd xmm5, xmm0
-rx_i_376: ;SAR_64
+rx_i_376: ;ROL_64
dec edi
js rx_finish
xor r10, 098ab79d7h
@@ -5118,10 +5265,10 @@ rx_i_376: ;SAR_64
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r13
- sar rax, cl
+ rol rax, cl
mov r9, rax
-rx_i_377: ;FPMUL
+rx_i_377: ;FPDIV
dec edi
js rx_finish
xor r15, 056438b3h
@@ -5131,7 +5278,7 @@ rx_i_377: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm8
+ divsd xmm0, xmm8
mov eax, r12d
xor eax, 05655fac9h
and eax, 2047
@@ -5193,59 +5340,64 @@ rx_i_381: ;FPSUB
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_382: ;MULH_64
+rx_i_382: ;MUL_32
dec edi
js rx_finish
xor r12, 082aa21ach
mov ecx, r12d
call rx_read_dataset
- mov rcx, 547725353
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, 547725353
+ imul rax, rcx
mov r15, rax
-rx_i_383: ;ROR_64
+rx_i_383: ;FPADD
dec edi
js rx_finish
xor r10, 05dba41fbh
mov ecx, r10d
call rx_read_dataset
- ror rax, 56
- mov r13, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ mov rax, 4741471142953353216
+ movd xmm1, rax
+ addsd xmm0, xmm1
+ movsd xmm5, xmm0
-rx_i_384: ;SUB_64
+rx_i_384: ;MUL_64
dec edi
js rx_finish
xor r11, 0229e3d6eh
mov eax, r11d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- sub rax, -1443002912
+ imul rax, rax, -1443002912
mov rcx, rax
mov eax, r13d
xor eax, 0a9fd85e0h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_385: ;SHL_64
+rx_i_385: ;SAR_64
dec edi
js rx_finish
xor r8, 019816ff9h
mov ecx, r8d
call rx_read_dataset
mov rcx, r14
- shl rax, cl
+ sar rax, cl
mov r9, rax
-rx_i_386: ;ROR_64
+rx_i_386: ;FPADD
dec edi
js rx_finish
xor r14, 036b5b81fh
mov ecx, r14d
call rx_read_dataset
- mov rcx, r11
- ror rax, cl
- mov r11, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm3
+ movsd xmm3, xmm0
rx_i_387: ;FPSUB
dec edi
@@ -5259,14 +5411,14 @@ rx_i_387: ;FPSUB
subsd xmm0, xmm4
movsd xmm5, xmm0
-rx_i_388: ;SHL_64
+rx_i_388: ;SHR_64
dec edi
js rx_finish
xor r10, 05b459fd7h
mov ecx, r10d
call rx_read_dataset
mov rcx, r11
- shl rax, cl
+ shr rax, cl
mov rcx, rax
mov eax, r9d
xor eax, 054439464h
@@ -5300,13 +5452,13 @@ rx_i_390: ;FPADD
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_391: ;SUB_64
+rx_i_391: ;MUL_64
dec edi
js rx_finish
xor r9, 0d4f7bc6ah
mov ecx, r9d
call rx_read_dataset
- sub rax, r15
+ imul rax, r15
mov r9, rax
rx_i_392: ;RET
@@ -5319,7 +5471,7 @@ rx_i_392: ;RET
cmp rsp, rbp
je short not_taken_ret_392
cmp r13d, -1600627518
- ja short not_taken_ret_392
+ jo short not_taken_ret_392
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r11d
@@ -5334,75 +5486,73 @@ not_taken_ret_392:
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_393: ;FPROUND
+rx_i_393: ;CALL
dec edi
js rx_finish
xor r11, 06531ad2eh
mov eax, r11d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, rax
- shl eax, 13
- and rcx, -2048
- and eax, 24576
- cvtsi2sd xmm0, rcx
- or eax, 40896
- mov dword ptr [rsp - 8], eax
- ldmxcsr dword ptr [rsp - 8]
- movsd xmm6, xmm0
+ cmp r9d, -350609584
+ jge short taken_call_393
+ mov r14, rax
+ jmp rx_i_394
+taken_call_393:
+ push rax
+ call rx_i_425
-rx_i_394: ;ROR_64
+rx_i_394: ;FPADD
dec edi
js rx_finish
xor r15, 02914abeah
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r12
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm4
mov eax, r11d
xor eax, 0e5c5acbbh
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_395: ;ROR_64
+rx_i_395: ;FPADD
dec edi
js rx_finish
xor r8, 0473a41f0h
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r11
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm3
mov eax, r14d
xor eax, 0aba2155fh
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_396: ;ROL_64
+rx_i_396: ;ROR_64
dec edi
js rx_finish
xor r14, 01ebc1f0dh
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- rol rax, 0
+ ror rax, 0
mov rcx, rax
mov eax, r13d
xor eax, 08c4a0f0dh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_397: ;OR_64
+rx_i_397: ;OR_32
dec edi
js rx_finish
xor r14, 0742e95b1h
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 552339548
+ or eax, 552339548
mov rcx, rax
mov eax, r13d
xor eax, 020ec085ch
@@ -5424,45 +5574,60 @@ rx_i_398: ;FPADD
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_399: ;IMULH_64
+rx_i_399: ;IDIV_64
dec edi
js rx_finish
xor r8, 04ae4fe8ch
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r13
- imul rcx
- mov rax, rdx
+ mov edx, r13d
+ cmp edx, -1
+ jne short safe_idiv_399
+ mov rcx, rax
+ rol rcx, 1
+ dec rcx
+ jz short result_idiv_399
+safe_idiv_399:
+ mov ecx, 1
+ test edx, edx
+ cmovne ecx, edx
+ movsxd rcx, ecx
+ cqo
+ idiv rcx
+result_idiv_399:
mov r8, rax
-rx_i_400: ;ROR_64
+rx_i_400: ;FPADD
dec edi
js rx_finish
xor r10, 07b41862bh
mov ecx, r10d
call rx_read_dataset
- ror rax, 62
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ mov rax, 4737472108072796160
+ movd xmm1, rax
+ addsd xmm0, xmm1
mov eax, r12d
xor eax, 01ee1c837h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_401: ;SUB_64
+rx_i_401: ;MUL_64
dec edi
js rx_finish
xor r8, 0916f3819h
mov ecx, r8d
call rx_read_dataset
- sub rax, r12
+ imul rax, r12
mov rcx, rax
mov eax, r10d
xor eax, 0146db5dfh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_402: ;SAR_64
+rx_i_402: ;ROL_64
dec edi
js rx_finish
xor r8, 04eb6fd2ah
@@ -5470,14 +5635,14 @@ rx_i_402: ;SAR_64
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
mov rcx, r8
- sar rax, cl
+ rol rax, cl
mov rcx, rax
mov eax, r11d
xor eax, 0724e7136h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_403: ;FPMUL
+rx_i_403: ;FPDIV
dec edi
js rx_finish
xor r11, 0899a98cfh
@@ -5486,38 +5651,39 @@ rx_i_403: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm2
+ divsd xmm0, xmm2
mov eax, r14d
xor eax, 0fb6f7016h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_404: ;OR_64
+rx_i_404: ;OR_32
dec edi
js rx_finish
xor r13, 0aae75db6h
mov eax, r13d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- or rax, r11
+ or eax, r11d
mov rcx, rax
mov eax, r14d
xor eax, 094ac538ch
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_405: ;FPSUB
+rx_i_405: ;FPMUL
dec edi
js rx_finish
xor r13, 032e81f25h
mov eax, r13d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
mov rax, 4742100199122403328
movd xmm1, rax
- subsd xmm0, xmm1
+ mulsd xmm0, xmm1
movsd xmm6, xmm0
rx_i_406: ;RET
@@ -5528,106 +5694,131 @@ rx_i_406: ;RET
call rx_read_dataset
cmp rsp, rbp
je short not_taken_ret_406
+ cmp r8d, -1580915312
+ jl short not_taken_ret_406
xor rax, qword ptr [rsp + 8]
mov r14, rax
ret 8
not_taken_ret_406:
mov r14, rax
-rx_i_407: ;IMULH_64
+rx_i_407: ;IDIV_64
dec edi
js rx_finish
xor r9, 0e59500f7h
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r12
- imul rcx
- mov rax, rdx
+ mov edx, r12d
+ cmp edx, -1
+ jne short safe_idiv_407
+ mov rcx, rax
+ rol rcx, 1
+ dec rcx
+ jz short result_idiv_407
+safe_idiv_407:
+ mov ecx, 1
+ test edx, edx
+ cmovne ecx, edx
+ movsxd rcx, ecx
+ cqo
+ idiv rcx
+result_idiv_407:
mov rcx, rax
mov eax, r11d
xor eax, 01ff394a0h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_408: ;MULH_64
+rx_i_408: ;MUL_32
dec edi
js rx_finish
xor r15, 05b8ceb2fh
mov ecx, r15d
call rx_read_dataset
- mov rcx, r8
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r8d
+ imul rax, rcx
mov r15, rax
-rx_i_409: ;CALL
+rx_i_409: ;RET
dec edi
js rx_finish
xor r8, 0f61082a3h
mov ecx, r8d
call rx_read_dataset
+ cmp rsp, rbp
+ je short not_taken_ret_409
cmp r10d, 1795880641
- jbe short taken_call_409
+ ja short not_taken_ret_409
+ xor rax, qword ptr [rsp + 8]
+ mov rcx, rax
+ mov eax, r12d
+ xor eax, 06b0af6c1h
+ and eax, 2047
+ mov qword ptr [rsi + rax * 8], rcx
+ ret 8
+not_taken_ret_409:
mov rcx, rax
mov eax, r12d
xor eax, 06b0af6c1h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
- jmp rx_i_410
-taken_call_409:
- push rax
- call rx_i_498
-rx_i_410: ;FPDIV
+rx_i_410: ;FPROUND
dec edi
js rx_finish
xor r9, 0af6886b7h
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- mov rax, -4478294004261191680
- movd xmm1, rax
- divsd xmm0, xmm1
+ mov rcx, rax
+ shl eax, 13
+ and rcx, -2048
+ and eax, 24576
+ cvtsi2sd xmm0, rcx
+ or eax, 40896
+ mov dword ptr [rsp - 8], eax
+ ldmxcsr dword ptr [rsp - 8]
movsd xmm9, xmm0
-rx_i_411: ;FPSUB
+rx_i_411: ;FPMUL
dec edi
js rx_finish
xor r14, 09699566fh
mov ecx, r14d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm9
+ mulsd xmm0, xmm9
mov eax, r8d
xor eax, 0904eec66h
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_412: ;SUB_64
+rx_i_412: ;MUL_64
dec edi
js rx_finish
xor r15, 066e79fa6h
mov ecx, r15d
call rx_read_dataset
- sub rax, r9
+ imul rax, r9
mov rcx, rax
mov eax, r10d
xor eax, 0295004c9h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_413: ;MUL_64
+rx_i_413: ;MULH_64
dec edi
js rx_finish
xor r11, 04b6caa9ah
mov ecx, r11d
call rx_read_dataset
- imul rax, r15
+ mov rcx, r15
+ mul rcx
+ mov rax, rdx
mov r8, rax
rx_i_414: ;RET
@@ -5639,6 +5830,8 @@ rx_i_414: ;RET
mov rax, qword ptr [rsi + rax * 8]
cmp rsp, rbp
je short not_taken_ret_414
+ cmp r12d, -1371608768
+ jl short not_taken_ret_414
xor rax, qword ptr [rsp + 8]
mov r8, rax
ret 8
@@ -5655,27 +5848,27 @@ rx_i_415: ;RET
cmp rsp, rbp
je short not_taken_ret_415
cmp r13d, -1265436998
- ja short not_taken_ret_415
+ jbe short not_taken_ret_415
xor rax, qword ptr [rsp + 8]
mov r12, rax
ret 8
not_taken_ret_415:
mov r12, rax
-rx_i_416: ;FPDIV
+rx_i_416: ;FPSQRT
dec edi
js rx_finish
xor r10, 0ac90e7ah
mov eax, r10d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- divsd xmm0, xmm4
+ sqrtsd xmm0, xmm0
movsd xmm3, xmm0
-rx_i_417: ;FPMUL
+rx_i_417: ;FPDIV
dec edi
js rx_finish
xor r11, 04b6037abh
@@ -5685,37 +5878,37 @@ rx_i_417: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm2
+ divsd xmm0, xmm2
mov eax, r12d
xor eax, 043989376h
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_418: ;AND_32
+rx_i_418: ;OR_64
dec edi
js rx_finish
xor r14, 06c01554dh
mov ecx, r14d
call rx_read_dataset
- and eax, r8d
+ or rax, r8
mov rcx, rax
mov eax, r10d
xor eax, 0e973b3b1h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_419: ;IMULH_64
+rx_i_419: ;DIV_64
dec edi
js rx_finish
xor r8, 08c3e59a1h
mov ecx, r8d
call rx_read_dataset
- mov rcx, -538093385
- imul rcx
- mov rax, rdx
+ mov ecx, -538093385
+ xor edx, edx
+ div rcx
mov r9, rax
-rx_i_420: ;FPADD
+rx_i_420: ;FPSUB
dec edi
js rx_finish
xor r12, 0f3fafde9h
@@ -5724,50 +5917,53 @@ rx_i_420: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm3
+ subsd xmm0, xmm3
movsd xmm5, xmm0
-rx_i_421: ;ADD_32
+rx_i_421: ;SUB_64
dec edi
js rx_finish
xor r10, 03c6481fah
mov ecx, r10d
call rx_read_dataset
- add eax, r12d
+ sub rax, r12
mov r10, rax
-rx_i_422: ;MUL_64
+rx_i_422: ;MULH_64
dec edi
js rx_finish
xor r10, 02bd61c5fh
mov ecx, r10d
call rx_read_dataset
- imul rax, r11
+ mov rcx, r11
+ mul rcx
+ mov rax, rdx
mov r10, rax
-rx_i_423: ;OR_32
+rx_i_423: ;XOR_64
dec edi
js rx_finish
xor r9, 0b6ab9d32h
mov ecx, r9d
call rx_read_dataset
- or eax, r14d
+ xor rax, r14
mov rcx, rax
mov eax, r14d
xor eax, 0beeca8dbh
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_424: ;ROR_64
+rx_i_424: ;FPADD
dec edi
js rx_finish
xor r9, 0f9690ceah
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r11
- ror rax, cl
- mov r9, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm3
+ movsd xmm9, xmm0
rx_i_425: ;CALL
dec edi
@@ -5777,7 +5973,7 @@ rx_i_425: ;CALL
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
cmp r8d, -1600409762
- jbe short taken_call_425
+ jno short taken_call_425
mov r10, rax
jmp rx_i_426
taken_call_425:
@@ -5795,13 +5991,13 @@ rx_i_426: ;IMUL_32
imul rax, rcx
mov r13, rax
-rx_i_427: ;SUB_64
+rx_i_427: ;MUL_64
dec edi
js rx_finish
xor r12, 04df5ce05h
mov ecx, r12d
call rx_read_dataset
- sub rax, r10
+ imul rax, r10
mov rcx, rax
mov eax, r15d
xor eax, 0a5d40d0ah
@@ -5830,32 +6026,30 @@ rx_i_429: ;IMUL_32
imul rax, rcx
mov r14, rax
-rx_i_430: ;IMULH_64
+rx_i_430: ;AND_64
dec edi
js rx_finish
xor r12, 09dd55ba0h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r9
- imul rcx
- mov rax, rdx
+ and rax, r9
mov rcx, rax
mov eax, r14d
xor eax, 0dcca31efh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_431: ;MULH_64
+rx_i_431: ;MUL_32
dec edi
js rx_finish
xor r11, 0d6cae9aeh
mov eax, r11d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r11
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r11d
+ imul rax, rcx
mov rcx, rax
mov eax, r9d
xor eax, 0801190f4h
@@ -5871,6 +6065,8 @@ rx_i_432: ;RET
mov rax, qword ptr [rsi + rax * 8]
cmp rsp, rbp
je short not_taken_ret_432
+ cmp r12d, -474453201
+ jl short not_taken_ret_432
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r8d
@@ -5885,14 +6081,16 @@ not_taken_ret_432:
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_433: ;MUL_64
+rx_i_433: ;MULH_64
dec edi
js rx_finish
xor r12, 0650a4102h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- imul rax, rax, 1990438276
+ mov rcx, 1990438276
+ mul rcx
+ mov rax, rdx
mov r15, rax
rx_i_434: ;FPADD
@@ -5908,58 +6106,59 @@ rx_i_434: ;FPADD
addsd xmm0, xmm1
movsd xmm5, xmm0
-rx_i_435: ;ROR_64
+rx_i_435: ;FPADD
dec edi
js rx_finish
xor r12, 0ed17ab58h
mov ecx, r12d
call rx_read_dataset
- mov rcx, r13
- ror rax, cl
- mov r13, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm5
+ movsd xmm5, xmm0
-rx_i_436: ;ADD_32
+rx_i_436: ;SUB_64
dec edi
js rx_finish
xor r10, 01c3b321fh
mov ecx, r10d
call rx_read_dataset
- add eax, r10d
+ sub rax, r10
mov r8, rax
-rx_i_437: ;ADD_64
+rx_i_437: ;SUB_64
dec edi
js rx_finish
xor r13, 0bbb88499h
mov ecx, r13d
call rx_read_dataset
- add rax, r12
+ sub rax, r12
mov rcx, rax
mov eax, r12d
xor eax, 04722b36fh
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_438: ;FPMUL
+rx_i_438: ;FPSQRT
dec edi
js rx_finish
xor r13, 0167edabdh
mov ecx, r13d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
+ mov rcx, 9223372036854773760
+ and rax, rcx
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm3
+ sqrtsd xmm0, xmm0
movsd xmm9, xmm0
-rx_i_439: ;SUB_32
+rx_i_439: ;MUL_64
dec edi
js rx_finish
xor r15, 0b940480ah
mov eax, r15d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- sub eax, r15d
+ imul rax, r15
mov rcx, rax
mov eax, r9d
xor eax, 0758605ffh
@@ -5980,7 +6179,7 @@ rx_i_440: ;FPADD
addsd xmm0, xmm1
movsd xmm7, xmm0
-rx_i_441: ;FPMUL
+rx_i_441: ;FPDIV
dec edi
js rx_finish
xor r8, 098a6bcf7h
@@ -5989,7 +6188,7 @@ rx_i_441: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm3
+ divsd xmm0, xmm3
mov eax, r8d
xor eax, 025dac800h
and eax, 32767
@@ -6010,13 +6209,13 @@ rx_i_442: ;FPMUL
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_443: ;XOR_64
+rx_i_443: ;XOR_32
dec edi
js rx_finish
xor r13, 05e807e81h
mov ecx, r13d
call rx_read_dataset
- xor rax, r15
+ xor eax, r15d
mov rcx, rax
mov eax, r10d
xor eax, 0b28e6e01h
@@ -6033,7 +6232,7 @@ rx_i_444: ;RET
cmp rsp, rbp
je short not_taken_ret_444
cmp r12d, 2127765370
- ja short not_taken_ret_444
+ jns short not_taken_ret_444
xor rax, qword ptr [rsp + 8]
mov r9, rax
ret 8
@@ -6053,20 +6252,23 @@ rx_i_445: ;ADD_64
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_446: ;FPDIV
+rx_i_446: ;CALL
dec edi
js rx_finish
xor r14, 0a53dd1bh
mov ecx, r14d
call rx_read_dataset
- or rax, 2048
- and rax, -2048
- cvtsi2sd xmm0, rax
- divsd xmm0, xmm7
+ cmp r15d, 799523062
+ jbe short taken_call_446
+ mov rcx, rax
mov eax, r11d
xor eax, 02fa7c0f6h
and eax, 2047
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_447
+taken_call_446:
+ push rax
+ call rx_i_13
rx_i_447: ;RET
dec edi
@@ -6078,7 +6280,7 @@ rx_i_447: ;RET
cmp rsp, rbp
je short not_taken_ret_447
cmp r12d, 1332855833
- ja short not_taken_ret_447
+ jno short not_taken_ret_447
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r9d
@@ -6093,16 +6295,17 @@ not_taken_ret_447:
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_448: ;FPSUB
+rx_i_448: ;FPMUL
dec edi
js rx_finish
xor r8, 042455dd8h
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm7
+ mulsd xmm0, xmm7
movsd xmm5, xmm0
rx_i_449: ;ADD_64
@@ -6118,22 +6321,22 @@ rx_i_449: ;ADD_64
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_450: ;MULH_64
+rx_i_450: ;MUL_32
dec edi
js rx_finish
xor r12, 01734708eh
mov ecx, r12d
call rx_read_dataset
- mov rcx, r15
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r15d
+ imul rax, rcx
mov rcx, rax
mov eax, r13d
xor eax, 03166163h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_451: ;FPADD
+rx_i_451: ;FPSUB
dec edi
js rx_finish
xor r8, 01596d0e8h
@@ -6141,7 +6344,7 @@ rx_i_451: ;FPADD
call rx_read_dataset
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm7
+ subsd xmm0, xmm7
movsd xmm5, xmm0
rx_i_452: ;FPSUB
@@ -6159,14 +6362,14 @@ rx_i_452: ;FPSUB
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_453: ;ROL_64
+rx_i_453: ;ROR_64
dec edi
js rx_finish
xor r8, 04f27744bh
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- rol rax, 28
+ ror rax, 28
mov r8, rax
rx_i_454: ;ROL_64
@@ -6200,6 +6403,8 @@ rx_i_456: ;RET
call rx_read_dataset
cmp rsp, rbp
je short not_taken_ret_456
+ cmp r11d, -495064539
+ jl short not_taken_ret_456
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r11d
@@ -6239,23 +6444,23 @@ rx_i_458: ;FPADD
addsd xmm0, xmm1
movsd xmm4, xmm0
-rx_i_459: ;OR_32
+rx_i_459: ;XOR_64
dec edi
js rx_finish
xor r8, 059263cdbh
mov eax, r8d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- or eax, r9d
+ xor rax, r9
mov r8, rax
-rx_i_460: ;OR_64
+rx_i_460: ;OR_32
dec edi
js rx_finish
xor r9, 010e8fe6h
mov ecx, r9d
call rx_read_dataset
- or rax, r11
+ or eax, r11d
mov rcx, rax
mov eax, r9d
xor eax, 017f52c3fh
@@ -6284,40 +6489,40 @@ rx_i_462: ;ROL_64
rol rax, 22
mov r14, rax
-rx_i_463: ;SUB_64
+rx_i_463: ;MUL_64
dec edi
js rx_finish
xor r9, 0346f46adh
mov ecx, r9d
call rx_read_dataset
- sub rax, 381354340
+ imul rax, rax, 381354340
mov rcx, rax
mov eax, r13d
xor eax, 016bb0164h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_464: ;ADD_64
+rx_i_464: ;SUB_64
dec edi
js rx_finish
xor r11, 098ab71fch
mov ecx, r11d
call rx_read_dataset
- add rax, r14
+ sub rax, r14
mov rcx, rax
mov eax, r12d
xor eax, 0eb453a97h
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_465: ;SHL_64
+rx_i_465: ;SHR_64
dec edi
js rx_finish
xor r11, 0c814e926h
mov ecx, r11d
call rx_read_dataset
mov rcx, r13
- shl rax, cl
+ shr rax, cl
mov rcx, rax
mov eax, r12d
xor eax, 062ef5b99h
@@ -6334,14 +6539,14 @@ rx_i_466: ;ADD_64
add rax, -1734323376
mov r15, rax
-rx_i_467: ;ADD_64
+rx_i_467: ;SUB_64
dec edi
js rx_finish
xor r9, 08c29341h
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- add rax, r15
+ sub rax, r15
mov r10, rax
rx_i_468: ;MUL_64
@@ -6399,29 +6604,41 @@ rx_i_471: ;FPADD
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_472: ;IMULH_64
+rx_i_472: ;IDIV_64
dec edi
js rx_finish
xor r8, 091044dc3h
mov ecx, r8d
call rx_read_dataset
- mov rcx, -13394825
- imul rcx
- mov rax, rdx
+ mov edx, -13394825
+ cmp edx, -1
+ jne short safe_idiv_472
+ mov rcx, rax
+ rol rcx, 1
+ dec rcx
+ jz short result_idiv_472
+safe_idiv_472:
+ mov ecx, 1
+ test edx, edx
+ cmovne ecx, edx
+ movsxd rcx, ecx
+ cqo
+ idiv rcx
+result_idiv_472:
mov rcx, rax
mov eax, r8d
xor eax, 0ff339c77h
and eax, 32767
mov qword ptr [rsi + rax * 8], rcx
-rx_i_473: ;MUL_32
+rx_i_473: ;IMUL_32
dec edi
js rx_finish
xor r9, 0c0186beh
mov ecx, r9d
call rx_read_dataset
- mov ecx, eax
- mov eax, 294019485
+ movsxd rcx, eax
+ mov rax, 294019485
imul rax, rcx
mov rcx, rax
mov eax, r9d
@@ -6429,13 +6646,13 @@ rx_i_473: ;MUL_32
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_474: ;XOR_64
+rx_i_474: ;XOR_32
dec edi
js rx_finish
xor r14, 090849e3eh
mov ecx, r14d
call rx_read_dataset
- xor rax, r11
+ xor eax, r11d
mov rcx, rax
mov eax, r14d
xor eax, 090d56b4ch
@@ -6461,17 +6678,24 @@ rx_i_476: ;CALL
mov eax, r9d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ cmp r10d, 1738497427
+ jl short taken_call_476
+ mov r10, rax
+ jmp rx_i_477
+taken_call_476:
push rax
call rx_i_12
-rx_i_477: ;MUL_64
+rx_i_477: ;MULH_64
dec edi
js rx_finish
xor r14, 01fb7637dh
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- imul rax, rax, -751043211
+ mov rcx, -751043211
+ mul rcx
+ mov rax, rdx
mov r12, rax
rx_i_478: ;CALL
@@ -6481,7 +6705,7 @@ rx_i_478: ;CALL
mov ecx, r9d
call rx_read_dataset
cmp r15d, -233120543
- jbe short taken_call_478
+ jo short taken_call_478
mov r15, rax
jmp rx_i_479
taken_call_478:
@@ -6503,7 +6727,7 @@ rx_i_479: ;FPSUB
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_480: ;FPADD
+rx_i_480: ;FPSUB
dec edi
js rx_finish
xor r8, 07ab3b5a4h
@@ -6512,46 +6736,52 @@ rx_i_480: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm2
+ subsd xmm0, xmm2
mov eax, r9d
xor eax, 0b01bb14ch
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_481: ;ROR_64
+rx_i_481: ;FPADD
dec edi
js rx_finish
xor r12, 07a29ec63h
mov eax, r12d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- ror rax, 15
- mov r14, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ mov rax, -4487871971018670080
+ movd xmm1, rax
+ addsd xmm0, xmm1
+ movsd xmm6, xmm0
-rx_i_482: ;MUL_64
+rx_i_482: ;MULH_64
dec edi
js rx_finish
xor r14, 02d3d7e7fh
mov ecx, r14d
call rx_read_dataset
- imul rax, r10
+ mov rcx, r10
+ mul rcx
+ mov rax, rdx
mov r12, rax
-rx_i_483: ;SUB_64
+rx_i_483: ;MUL_64
dec edi
js rx_finish
xor r12, 09b49c793h
mov eax, r12d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- sub rax, r14
+ imul rax, r14
mov rcx, rax
mov eax, r13d
xor eax, 0c42735ech
and eax, 2047
mov qword ptr [rsi + rax * 8], rcx
-rx_i_484: ;FPADD
+rx_i_484: ;FPSUB
dec edi
js rx_finish
xor r9, 0a9cc4f01h
@@ -6560,53 +6790,59 @@ rx_i_484: ;FPADD
mov rax, qword ptr [rsi + rax * 8]
and rax, -2048
cvtsi2sd xmm0, rax
- addsd xmm0, xmm4
+ subsd xmm0, xmm4
mov eax, r14d
xor eax, 0d8750eeh
and eax, 32767
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_485: ;IMULH_64
+rx_i_485: ;DIV_64
dec edi
js rx_finish
xor r14, 0225ba1f9h
mov eax, r14d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, r13
- imul rcx
- mov rax, rdx
+ mov ecx, 1
+ mov edx, r13d
+ test edx, edx
+ cmovne ecx, edx
+ xor edx, edx
+ div rcx
mov r12, rax
-rx_i_486: ;OR_64
+rx_i_486: ;XOR_64
dec edi
js rx_finish
xor r14, 044a0f592h
mov ecx, r14d
call rx_read_dataset
- or rax, r12
+ xor rax, r12
mov r11, rax
-rx_i_487: ;ROR_64
+rx_i_487: ;FPADD
dec edi
js rx_finish
xor r11, 07f71f219h
mov ecx, r11d
call rx_read_dataset
- ror rax, 50
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ mov rax, 4743722256075587584
+ movd xmm1, rax
+ addsd xmm0, xmm1
mov eax, r14d
xor eax, 0545908cah
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_488: ;SAR_64
+rx_i_488: ;ROL_64
dec edi
js rx_finish
xor r12, 07027bacdh
mov ecx, r12d
call rx_read_dataset
- sar rax, 37
+ rol rax, 37
mov r11, rax
rx_i_489: ;CALL
@@ -6616,7 +6852,7 @@ rx_i_489: ;CALL
mov ecx, r13d
call rx_read_dataset
cmp r8d, 554879918
- jbe short taken_call_489
+ jno short taken_call_489
mov rcx, rax
mov eax, r15d
xor eax, 02112cbaeh
@@ -6662,57 +6898,57 @@ rx_i_492: ;IMULH_64
mov rax, rdx
mov r12, rax
-rx_i_493: ;FPROUND
+rx_i_493: ;CALL
dec edi
js rx_finish
xor r10, 0b2ec9f3ah
mov eax, r10d
and eax, 2047
mov rax, qword ptr [rsi + rax * 8]
+ cmp r15d, -1127175870
+ jge short taken_call_493
mov rcx, rax
- shl eax, 13
- and rcx, -2048
- and eax, 24576
- cvtsi2sd xmm0, rcx
- or eax, 40896
- mov dword ptr [rsp - 8], eax
- ldmxcsr dword ptr [rsp - 8]
mov eax, r8d
xor eax, 0bcd0a942h
and eax, 2047
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_494
+taken_call_493:
+ push rax
+ call rx_i_79
-rx_i_494: ;ROR_64
+rx_i_494: ;FPADD
dec edi
js rx_finish
xor r11, 015c7f598h
mov ecx, r11d
call rx_read_dataset
- mov rcx, r9
- ror rax, cl
- mov rcx, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm9
mov eax, r15d
xor eax, 0ab8bd68h
and eax, 2047
- mov qword ptr [rsi + rax * 8], rcx
+ movd qword ptr [rsi + rax * 8], xmm0
-rx_i_495: ;ROR_64
+rx_i_495: ;FPADD
dec edi
js rx_finish
xor r8, 0902da6bdh
mov ecx, r8d
call rx_read_dataset
- mov rcx, r9
- ror rax, cl
- mov r15, rax
+ and rax, -2048
+ cvtsi2sd xmm0, rax
+ addsd xmm0, xmm9
+ movsd xmm7, xmm0
-rx_i_496: ;AND_64
+rx_i_496: ;OR_64
dec edi
js rx_finish
xor r9, 0491090d9h
mov ecx, r9d
call rx_read_dataset
- and rax, r9
+ or rax, r9
mov r12, rax
rx_i_497: ;FPSUB
@@ -6732,15 +6968,15 @@ rx_i_497: ;FPSUB
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_498: ;MULH_64
+rx_i_498: ;MUL_32
dec edi
js rx_finish
xor r10, 0b0d50e46h
mov ecx, r10d
call rx_read_dataset
- mov rcx, r11
- mul rcx
- mov rax, rdx
+ mov ecx, eax
+ mov eax, r11d
+ imul rax, rcx
mov r14, rax
rx_i_499: ;FPMUL
@@ -6761,16 +6997,16 @@ rx_i_499: ;FPMUL
and eax, 2047
movd qword ptr [rsi + rax * 8], xmm0
-rx_i_500: ;AND_64
+rx_i_500: ;OR_64
dec edi
js rx_finish
xor r14, 0fe757b73h
mov ecx, r14d
call rx_read_dataset
- and rax, -359802064
+ or rax, -359802064
mov r9, rax
-rx_i_501: ;FPMUL
+rx_i_501: ;FPDIV
dec edi
js rx_finish
xor r8, 08d25742eh
@@ -6780,7 +7016,7 @@ rx_i_501: ;FPMUL
or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- mulsd xmm0, xmm3
+ divsd xmm0, xmm3
mov eax, r8d
xor eax, 0a800c041h
and eax, 2047
@@ -6811,29 +7047,33 @@ rx_i_503: ;IMUL_32
imul rax, rcx
mov r8, rax
-rx_i_504: ;FPSQRT
+rx_i_504: ;CALL
dec edi
js rx_finish
xor r10, 04bc870ebh
mov eax, r10d
and eax, 32767
mov rax, qword ptr [rsi + rax * 8]
- mov rcx, 9223372036854773760
- and rax, rcx
- cvtsi2sd xmm0, rax
- sqrtsd xmm0, xmm0
+ cmp r13d, 1243939650
+ jl short taken_call_504
+ mov rcx, rax
mov eax, r10d
xor eax, 04a250342h
and eax, 32767
- movd qword ptr [rsi + rax * 8], xmm0
+ mov qword ptr [rsi + rax * 8], rcx
+ jmp rx_i_505
+taken_call_504:
+ push rax
+ call rx_i_3
-rx_i_505: ;XOR_32
+rx_i_505: ;SHR_64
dec edi
js rx_finish
xor r8, 07d46c503h
mov ecx, r8d
call rx_read_dataset
- xor eax, r10d
+ mov rcx, r10
+ shr rax, cl
mov rcx, rax
mov eax, r12d
xor eax, 03e22874bh
@@ -6849,7 +7089,7 @@ rx_i_506: ;RET
cmp rsp, rbp
je short not_taken_ret_506
cmp r15d, 148394770
- ja short not_taken_ret_506
+ jno short not_taken_ret_506
xor rax, qword ptr [rsp + 8]
mov rcx, rax
mov eax, r9d
@@ -6888,26 +7128,28 @@ rx_i_508: ;FPADD
addsd xmm0, xmm9
movsd xmm4, xmm0
-rx_i_509: ;FPSUB
+rx_i_509: ;FPMUL
dec edi
js rx_finish
xor r12, 032c0a28ah
mov ecx, r12d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm4
+ mulsd xmm0, xmm4
movsd xmm8, xmm0
-rx_i_510: ;FPSUB
+rx_i_510: ;FPMUL
dec edi
js rx_finish
xor r9, 0a973d58ch
mov ecx, r9d
call rx_read_dataset
+ or rax, 2048
and rax, -2048
cvtsi2sd xmm0, rax
- subsd xmm0, xmm9
+ mulsd xmm0, xmm9
mov eax, r11d
xor eax, 05e890759h
and eax, 2047