From 740c40b218dfb1ff6ecd67e47fe8dde05d210489 Mon Sep 17 00:00:00 2001 From: tevador Date: Fri, 21 Dec 2018 22:41:35 +0100 Subject: [PATCH] 8 branch conditions for CALL/RET --- doc/isa.md | 51 +- makefile | 8 +- src/AssemblyGeneratorX86.cpp | 44 +- src/InterpretedVirtualMachine.cpp | 22 +- src/InterpretedVirtualMachine.hpp | 4 +- src/JitCompilerX86.cpp | 63 +- src/instructionWeights.hpp | 28 +- src/instructions.hpp | 1 + src/instructionsPortable.cpp | 50 + src/main.cpp | 6 +- src/program.inc | 2170 ++++++++++++++++------------- 11 files changed, 1396 insertions(+), 1051 deletions(-) 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); } + 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) { - 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 + 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,40 +3376,42 @@ 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 - imul rax, rcx + movsxd rcx, eax + movsxd rax, r12d + imul rax, rcx mov rcx, rax mov eax, r15d xor eax, 0ca73a89h @@ -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