diff --git a/makefile b/makefile index 0dcd7de..f805724 100644 --- a/makefile +++ b/makefile @@ -11,7 +11,7 @@ SRCDIR=src OBJDIR=obj LDFLAGS=-lpthread TOBJS=$(addprefix $(OBJDIR)/,instructionsPortable.o TestAluFpu.o) -ROBJS=$(addprefix $(OBJDIR)/,argon2_core.o argon2_ref.o AssemblyGeneratorX86.o blake2b.o CompiledVirtualMachine.o dataset.o JitCompilerX86.o instructionsPortable.o Instruction.o InterpretedVirtualMachine.o main.o Program.o softAes.o VirtualMachine.o t1ha2.o Cache.o virtualMemory.o divideByConstantCodegen.o LightClientAsyncWorker.o AddressTransform.o) +ROBJS=$(addprefix $(OBJDIR)/,argon2_core.o argon2_ref.o AssemblyGeneratorX86.o blake2b.o CompiledVirtualMachine.o dataset.o JitCompilerX86.o instructionsPortable.o Instruction.o InterpretedVirtualMachine.o main.o Program.o softAes.o VirtualMachine.o t1ha2.o Cache.o virtualMemory.o divideByConstantCodegen.o LightClientAsyncWorker.o AddressTransform.o hashAes1Rx4.o) ifeq ($(PLATFORM),x86_64) ROBJS += $(OBJDIR)/JitCompilerX86-static.o endif @@ -68,6 +68,9 @@ $(OBJDIR)/dataset.o: $(addprefix $(SRCDIR)/,dataset.cpp common.hpp Pcg32.hpp) | $(OBJDIR)/divideByConstantCodegen.o: $(addprefix $(SRCDIR)/,divideByConstantCodegen.c divideByConstantCodegen.h) | $(OBJDIR) $(CC) $(CCFLAGS) -c $(SRCDIR)/divideByConstantCodegen.c -o $@ +$(OBJDIR)/hashAes1Rx4.o: $(addprefix $(SRCDIR)/,hashAes1Rx4.cpp softAes.h) | $(OBJDIR) + $(CXX) $(CXXFLAGS) -c $(SRCDIR)/hashAes1Rx4.cpp -o $@ + $(OBJDIR)/JitCompilerX86.o: $(addprefix $(SRCDIR)/,JitCompilerX86.cpp JitCompilerX86.hpp Instruction.hpp instructionWeights.hpp) | $(OBJDIR) $(CXX) $(CXXFLAGS) -c $(SRCDIR)/JitCompilerX86.cpp -o $@ diff --git a/src/AssemblyGeneratorX86.cpp b/src/AssemblyGeneratorX86.cpp index 25ae7ef..4a35dfb 100644 --- a/src/AssemblyGeneratorX86.cpp +++ b/src/AssemblyGeneratorX86.cpp @@ -73,11 +73,16 @@ namespace RandomX { asmCode << "rx_body_" << i << ":" << std::endl; if ((instr.loca & 192) == 0) asmCode << "\txor " << regMx << ", rax" << std::endl; - if (instr.loca & 3) { - asmCode << "\tand eax, " << (ScratchpadL1 - 1) << std::endl; + if (instr.loca & 15) { + if (instr.loca & 3) { + asmCode << "\tand eax, " << (ScratchpadL1 - 1) << std::endl; + } + else { + asmCode << "\tand eax, " << (ScratchpadL2 - 1) << std::endl; + } } else { - asmCode << "\tand eax, " << (ScratchpadL2 - 1) << std::endl; + asmCode << "\tand eax, " << (ScratchpadL3 - 1) << std::endl; } } @@ -123,40 +128,32 @@ namespace RandomX { } void AssemblyGeneratorX86::gencr(Instruction& instr, bool rax = true) { - switch (instr.locc & 7) - { - case 0: - if(rax) - asmCode << "\tmov rcx, rax" << std::endl; - asmCode << "\tmov eax, " << regR32[instr.regc % RegistersCount] << std::endl; - asmCode << "\txor eax, 0" << std::hex << instr.addrc << "h" << std::dec << std::endl; - asmCode << "\tand eax, " << (ScratchpadL2 - 1) << std::endl; - asmCode << "\tmov qword ptr [" << regScratchpadAddr << " + rax * 8], rcx" << std::endl; - if (trace) { - asmCode << "\tmov qword ptr [" << regScratchpadAddr << " + " << regIc << " * 8 + 262136], rcx" << std::endl; - } - return; - - case 1: - case 2: - case 3: - if (rax) - asmCode << "\tmov rcx, rax" << std::endl; - asmCode << "\tmov eax, " << regR32[instr.regc % RegistersCount] << std::endl; - asmCode << "\txor eax, 0" << std::hex << instr.addrc << "h" << std::dec << std::endl; - asmCode << "\tand eax, " << (ScratchpadL1 - 1) << std::endl; - asmCode << "\tmov qword ptr [" << regScratchpadAddr << " + rax * 8], rcx" << std::endl; - if (trace) { - asmCode << "\tmov qword ptr [" << regScratchpadAddr << " + " << regIc << " * 8 + 262136], rcx" << std::endl; - } - return; - - default: + if (instr.locc & 16) { //write to register asmCode << "\tmov " << regR[instr.regc % RegistersCount] << ", " << (rax ? "rax" : "rcx") << std::endl; if (trace) { asmCode << "\tmov qword ptr [" << regScratchpadAddr << " + " << regIc << " * 8 + 262136], " << (rax ? "rax" : "rcx") << std::endl; } - return; + } + else { //write to scratchpad + if (rax) + asmCode << "\tmov rcx, rax" << std::endl; + asmCode << "\tmov eax, " << regR32[instr.regc % RegistersCount] << std::endl; + asmCode << "\txor eax, 0" << std::hex << instr.addrc << "h" << std::dec << std::endl; + if (instr.locc & 15) { + if (instr.locc & 3) { + asmCode << "\tand eax, " << (ScratchpadL1 - 1) << std::endl; + } + else { + asmCode << "\tand eax, " << (ScratchpadL2 - 1) << std::endl; + } + } + else { + asmCode << "\tand eax, " << (ScratchpadL3 - 1) << std::endl; + } + asmCode << "\tmov qword ptr [" << regScratchpadAddr << " + rax * 8], rcx" << std::endl; + if (trace) { + asmCode << "\tmov qword ptr [" << regScratchpadAddr << " + " << regIc << " * 8 + 262136], rcx" << std::endl; + } } } @@ -164,23 +161,21 @@ namespace RandomX { if(move) asmCode << "\tmovaps " << regF[instr.regc % RegistersCount] << ", xmm0" << std::endl; const char* store = (instr.locc & 128) ? "movhpd" : "movlpd"; - switch (instr.locc & 7) - { - case 4: - asmCode << "\tmov eax, " << regR32[instr.regc % RegistersCount] << std::endl; - asmCode << "\txor eax, 0" << std::hex << instr.addrc << "h" << std::dec << std::endl; - asmCode << "\tand eax, " << (ScratchpadL2 - 1) << std::endl; - asmCode << "\t" << store << " qword ptr [" << regScratchpadAddr << " + rax * 8], " << regF[instr.regc % RegistersCount] << std::endl; - break; - - case 5: - case 6: - case 7: - asmCode << "\tmov eax, " << regR32[instr.regc % RegistersCount] << std::endl; - asmCode << "\txor eax, 0" << std::hex << instr.addrc << "h" << std::dec << std::endl; - asmCode << "\tand eax, " << (ScratchpadL1 - 1) << std::endl; - asmCode << "\t" << store << " qword ptr [" << regScratchpadAddr << " + rax * 8], " << regF[instr.regc % RegistersCount] << std::endl; - break; + if (instr.locc & 16) { //write to scratchpad + asmCode << "\tmov eax, " << regR32[instr.regc % RegistersCount] << std::endl; + asmCode << "\txor eax, 0" << std::hex << instr.addrc << "h" << std::dec << std::endl; + if (instr.locc & 15) { + if (instr.locc & 3) { + asmCode << "\tand eax, " << (ScratchpadL1 - 1) << std::endl; + } + else { + asmCode << "\tand eax, " << (ScratchpadL2 - 1) << std::endl; + } + } + else { + asmCode << "\tand eax, " << (ScratchpadL3 - 1) << std::endl; + } + asmCode << "\t" << store << " qword ptr [" << regScratchpadAddr << " + rax * 8], " << regF[instr.regc % RegistersCount] << std::endl; } if (trace) { asmCode << "\t" << store << " qword ptr [" << regScratchpadAddr << " + " << regIc << " * 8 + 262136], " << regF[instr.regc % RegistersCount] << std::endl; diff --git a/src/JitCompilerX86.cpp b/src/JitCompilerX86.cpp index f828d0a..070d13a 100644 --- a/src/JitCompilerX86.cpp +++ b/src/JitCompilerX86.cpp @@ -182,11 +182,16 @@ namespace RandomX { emitByte(0xe8); //xor rbp, rax } emitByte(0x25); //and eax, - if (instr.loca & 3) { - emit(ScratchpadL1 - 1); //first 16 KiB of scratchpad + if (instr.loca & 15) { + if (instr.loca & 3) { + emit(ScratchpadL1 - 1); //first 16 KiB of scratchpad + } + else { + emit(ScratchpadL2 - 1); //first 256 KiB of scratchpad + } } else { - emit(ScratchpadL2 - 1); //whole scratchpad + emit(ScratchpadL3 - 1); //whole scratchpad } } @@ -266,27 +271,27 @@ namespace RandomX { } void JitCompilerX86::gencr(Instruction& instr, bool rax = true) { - switch (instr.locc & 7) - { - case 0: - scratchpadStoreR(instr, ScratchpadL2, rax); - break; - - case 1: - case 2: - case 3: - scratchpadStoreR(instr, ScratchpadL1, rax); - break; - - default: - emit(uint16_t(0x8b4c)); //mov - if (rax) { - emitByte(0xc0 + 8 * (instr.regc % RegistersCount)); //regc, rax + if (instr.locc & 16) { //write to register + emit(uint16_t(0x8b4c)); //mov + if (rax) { + emitByte(0xc0 + 8 * (instr.regc % RegistersCount)); //regc, rax + } + else { + emitByte(0xc1 + 8 * (instr.regc % RegistersCount)); //regc, rcx + } + } + else { + if (instr.locc & 15) { + if (instr.locc & 3) { + scratchpadStoreR(instr, ScratchpadL1, rax); } else { - emitByte(0xc1 + 8 * (instr.regc % RegistersCount)); //regc, rcx + scratchpadStoreR(instr, ScratchpadL2, rax); } - break; + } + else { + scratchpadStoreR(instr, ScratchpadL3, rax); + } } } @@ -314,13 +319,17 @@ namespace RandomX { } emit(uint16_t(0x280f)); //movaps emitByte(0xc0 + 8 * regc); // regc, xmm0 - if (instr.locc & 4) //C.LOC.R - { - if (instr.locc & 3) { //C.LOC.W - scratchpadStoreF(instr, regc, ScratchpadL1, (instr.locc & 128)); //first 16 KiB of scratchpad + if (instr.locc & 16) { //write to scratchpad + if (instr.locc & 15) { + if (instr.locc & 3) { //C.LOC.W + scratchpadStoreF(instr, regc, ScratchpadL1, (instr.locc & 128)); //first 16 KiB of scratchpad + } + else { + scratchpadStoreF(instr, regc, ScratchpadL2, (instr.locc & 128)); //first 256 KiB of scratchpad + } } else { - scratchpadStoreF(instr, regc, ScratchpadL2, (instr.locc & 128)); //whole scratchpad + scratchpadStoreF(instr, regc, ScratchpadL3, (instr.locc & 128)); //whole scratchpad } } } diff --git a/src/VirtualMachine.cpp b/src/VirtualMachine.cpp index 7a2be48..0cdc007 100644 --- a/src/VirtualMachine.cpp +++ b/src/VirtualMachine.cpp @@ -19,7 +19,7 @@ along with RandomX. If not, see. #include "VirtualMachine.hpp" #include "common.hpp" -#include "t1ha/t1ha.h" +#include "hashAes1Rx4.hpp" #include "blake2/blake2.h" #include #include @@ -40,10 +40,10 @@ namespace RandomX { } void VirtualMachine::getResult(void* out) { - constexpr size_t smallStateLength = sizeof(RegisterFile) / sizeof(uint64_t) + 2; - uint64_t smallState[smallStateLength]; + constexpr size_t smallStateLength = sizeof(RegisterFile) / sizeof(uint64_t) + 8; + alignas(16) uint64_t smallState[smallStateLength]; memcpy(smallState, ®, sizeof(RegisterFile)); - smallState[smallStateLength - 1] = t1ha2_atonce128(&smallState[smallStateLength - 2], scratchpad, ScratchpadSize, reg.r[0].u64); + hashAes1Rx4(scratchpad, ScratchpadSize, smallState + 24); blake2b(out, ResultSize, smallState, sizeof(smallState), nullptr, 0); } } \ No newline at end of file diff --git a/src/common.hpp b/src/common.hpp index e0d4116..cffa53c 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -74,10 +74,11 @@ namespace RandomX { constexpr int ProgramLength = 512; constexpr uint32_t InstructionCount = 1024 * 1024; - constexpr uint32_t ScratchpadSize = 256 * 1024; + constexpr uint32_t ScratchpadSize = 1024 * 1024; constexpr uint32_t ScratchpadLength = ScratchpadSize / sizeof(convertible_t); - constexpr uint32_t ScratchpadL1 = ScratchpadSize / 16 / sizeof(convertible_t); - constexpr uint32_t ScratchpadL2 = ScratchpadSize / sizeof(convertible_t); + constexpr uint32_t ScratchpadL1 = ScratchpadSize / 64 / sizeof(convertible_t); + constexpr uint32_t ScratchpadL2 = ScratchpadSize / 4 / sizeof(convertible_t); + constexpr uint32_t ScratchpadL3 = ScratchpadSize / sizeof(convertible_t); constexpr uint32_t TransformationCount = 90; constexpr int RegistersCount = 8; diff --git a/src/dataset.cpp b/src/dataset.cpp index e2b4b54..6029611 100644 --- a/src/dataset.cpp +++ b/src/dataset.cpp @@ -27,6 +27,7 @@ along with RandomX. If not, see. #include "Pcg32.hpp" #include "Cache.hpp" #include "virtualMemory.hpp" +#include "softAes.h" #if defined(__SSE2__) #include @@ -46,21 +47,6 @@ namespace RandomX { } } - template - static inline __m128i aesenc(__m128i in, __m128i key) { - return soft ? soft_aesenc(in, key) : _mm_aesenc_si128(in, key); - } - - template - static inline __m128i aesdec(__m128i in, __m128i key) { - return soft ? soft_aesdec(in, key) : _mm_aesdec_si128(in, key); - } - -#define AES_ROUND(i) x0 = aesdec(x0, keys[i]); \ - x1 = aesenc(x1, keys[i]); \ - x2 = aesdec(x2, keys[i]); \ - x3 = aesenc(x3, keys[i]) - template void initBlock(const uint8_t* intermediate, uint8_t* out, uint32_t blockNumber, const KeysContainer& keys) { __m128i x0, x1, x2, x3; @@ -73,13 +59,13 @@ namespace RandomX { for (auto i = 0; i < DatasetIterations; ++i) { x0 = aesenc(x0, keys[0]); - x0 = aesenc(x0, keys[1]); + //x0 = aesenc(x0, keys[1]); x1 = aesenc(x0, keys[2]); - x1 = aesenc(x1, keys[3]); + //x1 = aesenc(x1, keys[3]); x2 = aesenc(x1, keys[4]); - x2 = aesenc(x2, keys[5]); + //x2 = aesenc(x2, keys[5]); x3 = aesenc(x2, keys[6]); - x3 = aesenc(x3, keys[7]); + //x3 = aesenc(x3, keys[7]); int index = _mm_cvtsi128_si32(x3); index &= mask; diff --git a/src/dataset.hpp b/src/dataset.hpp index bdd34d3..312b924 100644 --- a/src/dataset.hpp +++ b/src/dataset.hpp @@ -23,7 +23,6 @@ along with RandomX. If not, see. #include #include "intrinPortable.h" #include "common.hpp" -#include "softAes.h" namespace RandomX { diff --git a/src/hashAes1Rx4.cpp b/src/hashAes1Rx4.cpp new file mode 100644 index 0000000..1f25335 --- /dev/null +++ b/src/hashAes1Rx4.cpp @@ -0,0 +1,73 @@ +/* +Copyright (c) 2019 tevador + +This file is part of RandomX. + +RandomX is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +RandomX is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with RandomX. If not, see. +*/ + +#include "softAes.h" + +template +void hashAes1Rx4(const void *input, size_t inputSize, void *hash) { + const uint8_t* inptr = (uint8_t*)input; + const uint8_t* inputEnd = inptr + inputSize; + + __m128i state0, state1, state2, state3; + __m128i in0, in1, in2, in3; + + //intial state + state0 = _mm_set_epi32(0x9d04b0ae, 0x59943385, 0x30ac8d93, 0x3fe49f5d); + state1 = _mm_set_epi32(0x8a39ebf1, 0xddc10935, 0xa724ecd3, 0x7b0c6064); + state2 = _mm_set_epi32(0x7ec70420, 0xdf01edda, 0x7c12ecf7, 0xfb5382e3); + state3 = _mm_set_epi32(0x94a9d201, 0x5082d1c8, 0xb2e74109, 0x7728b705); + + //process 64 bytes at a time in 4 lanes + while (inptr < inputEnd) { + in0 = _mm_load_si128((__m128i*)inptr + 0); + in1 = _mm_load_si128((__m128i*)inptr + 1); + in2 = _mm_load_si128((__m128i*)inptr + 2); + in3 = _mm_load_si128((__m128i*)inptr + 3); + + state0 = aesenc(state0, in0); + state1 = aesdec(state1, in1); + state2 = aesenc(state2, in2); + state3 = aesdec(state3, in3); + + inptr += 64; + } + + //two extra rounds to achieve full diffusion + __m128i xkey0 = _mm_set_epi32(0x4ff637c5, 0x053bd705, 0x8231a744, 0xc3767b17); + __m128i xkey1 = _mm_set_epi32(0x6594a1a6, 0xa8879d58, 0xb01da200, 0x8a8fae2e); + + state0 = aesenc(state0, xkey0); + state1 = aesdec(state1, xkey0); + state2 = aesenc(state2, xkey0); + state3 = aesdec(state3, xkey0); + + state0 = aesenc(state0, xkey1); + state1 = aesdec(state1, xkey1); + state2 = aesenc(state2, xkey1); + state3 = aesdec(state3, xkey1); + + //output hash + _mm_store_si128((__m128i*)hash + 0, state0); + _mm_store_si128((__m128i*)hash + 1, state1); + _mm_store_si128((__m128i*)hash + 2, state2); + _mm_store_si128((__m128i*)hash + 3, state3); +} + +template void hashAes1Rx4(const void *input, size_t inputSize, void *hash); +template void hashAes1Rx4(const void *input, size_t inputSize, void *hash); diff --git a/src/hashAes1Rx4.hpp b/src/hashAes1Rx4.hpp new file mode 100644 index 0000000..a9af1fc --- /dev/null +++ b/src/hashAes1Rx4.hpp @@ -0,0 +1,23 @@ +/* +Copyright (c) 2019 tevador + +This file is part of RandomX. + +RandomX is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +RandomX is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with RandomX. If not, see. +*/ + +#include "softAes.h" + +template +void hashAes1Rx4(const void *input, size_t inputSize, void *hash); \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 6ac64b7..5edb0df 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -145,7 +145,7 @@ void mine(RandomX::VirtualMachine* vm, std::atomic& atomicNonce, AtomicHash //std::cout << "Thread " << thread << " nonce " << nonce << std::endl; *noncePtr = nonce; blake2b(hash, sizeof(hash), blockTemplate, sizeof(blockTemplate), nullptr, 0); - int spIndex = ((uint8_t*)hash)[24] | ((((uint8_t*)hash)[25] & 63) << 8); + int spIndex = ((uint8_t*)hash)[24] | ((((uint8_t*)hash)[25] & 15) << 8); vm->initializeScratchpad(spIndex); vm->initializeProgram(hash); //dump((char*)((RandomX::CompiledVirtualMachine*)vm)->getProgram(), RandomX::CodeSize, "code-1337-jmp.txt"); diff --git a/src/program.inc b/src/program.inc index afc9573..f06ca58 100644 --- a/src/program.inc +++ b/src/program.inc @@ -10,11 +10,7 @@ rx_body_0: xor rbp, rax and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r12d - xor eax, 01a8e4171h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax cmp r11d, 445530481 ja short rx_i_1 call rx_i_30 @@ -28,7 +24,7 @@ rx_i_1: ;IDIV_64 jnz short rx_body_1 call rx_read rx_body_1: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov edx, r10d cmp edx, -1 @@ -82,10 +78,6 @@ rx_body_3: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm8, xmm0 - mov eax, r8d - xor eax, 06bb1a0b2h - and eax, 32767 - movhpd qword ptr [rsi + rax * 8], xmm8 rx_i_4: ;MUL_32 dec ebx @@ -101,11 +93,7 @@ rx_body_4: 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 + mov r9, rax rx_i_5: ;IMUL_32 dec ebx @@ -122,7 +110,11 @@ rx_body_5: movsxd rcx, eax mov rax, 1037420699 imul rax, rcx - mov r12, rax + mov rcx, rax + mov eax, r12d + xor eax, 03dd5c89bh + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_6: ;MUL_64 dec ebx @@ -139,7 +131,7 @@ rx_body_6: mov rcx, rax mov eax, r9d xor eax, 098a649d1h - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_7: ;FPADD @@ -155,10 +147,6 @@ rx_body_7: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm6 movaps xmm6, xmm0 - mov eax, r14d - xor eax, 057c8c41bh - and eax, 32767 - movlpd qword ptr [rsi + rax * 8], xmm6 rx_i_8: ;XOR_64 dec ebx @@ -169,7 +157,7 @@ rx_i_8: ;XOR_64 jnz short rx_body_8 call rx_read rx_body_8: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] xor rax, r11 mov rcx, rax @@ -212,7 +200,11 @@ rx_body_10: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and rax, r10 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0d49dbd9fh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_11: ;FPADD dec ebx @@ -245,10 +237,6 @@ rx_body_12: cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm8, xmm0 - mov eax, r8d - xor eax, 096dc67c9h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_13: ;FPADD dec ebx @@ -264,6 +252,10 @@ rx_body_13: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm3 movaps xmm9, xmm0 + mov eax, r9d + xor eax, 04f2f223ch + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm9 rx_i_14: ;XOR_64 dec ebx @@ -278,11 +270,7 @@ rx_body_14: and eax, 2047 mov rax, qword ptr [rsi+rax*8] xor rax, r9 - mov rcx, rax - mov eax, r10d - xor eax, 03c1a72f8h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_15: ;RET dec ebx @@ -295,11 +283,7 @@ rx_i_15: ;RET rx_body_15: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r14d - xor eax, 0468b38b8h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax cmp rsp, rdi je short rx_i_16 ret @@ -319,7 +303,7 @@ rx_body_16: mov rcx, rax mov eax, r9d xor eax, 0d7e75aeh - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_17: ;FPMUL @@ -338,10 +322,6 @@ rx_body_17: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm4, xmm0 - mov eax, r12d - xor eax, 0f77ffe16h - and eax, 32767 - movlpd qword ptr [rsi + rax * 8], xmm4 rx_i_18: ;FPSUB dec ebx @@ -389,10 +369,6 @@ rx_body_20: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm2 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 0aad81365h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm7 rx_i_21: ;ROR_64 dec ebx @@ -408,11 +384,7 @@ rx_body_21: mov rax, qword ptr [rsi+rax*8] mov rcx, r9 ror rax, cl - mov rcx, rax - mov eax, r15d - xor eax, 0db5e0aafh - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_22: ;ADD_64 dec ebx @@ -424,14 +396,10 @@ rx_i_22: ;ADD_64 call rx_read rx_body_22: xor rbp, rax - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] add rax, r8 - mov rcx, rax - mov eax, r10d - xor eax, 0cfa09799h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_23: ;MUL_64 dec ebx @@ -445,7 +413,11 @@ rx_body_23: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, rax, 1283724485 - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 04c8414c5h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_24: ;DIV_64 dec ebx @@ -457,7 +429,7 @@ rx_i_24: ;DIV_64 call rx_read rx_body_24: xor rbp, rax - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov ecx, 1 mov edx, r15d @@ -507,11 +479,7 @@ rx_body_26: mov rcx, 812644844 imul rcx mov rax, rdx - mov rcx, rax - mov eax, r9d - xor eax, 0306ff9ech - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_27: ;FPMUL dec ebx @@ -542,7 +510,11 @@ rx_body_28: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and eax, 565865719 - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 021ba6cf7h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_29: ;SUB_64 dec ebx @@ -556,7 +528,11 @@ rx_body_29: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub rax, r13 - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 073e1a073h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_30: ;FPADD dec ebx @@ -585,7 +561,11 @@ rx_body_31: and eax, 2047 mov rax, qword ptr [rsi+rax*8] ror rax, 55 - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 01e2da792h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_32: ;AND_32 dec ebx @@ -596,7 +576,7 @@ rx_i_32: ;AND_32 jnz short rx_body_32 call rx_read rx_body_32: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] and eax, r14d mov r9, rax @@ -627,7 +607,11 @@ rx_body_34: xor rbp, rax and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 0e9563b32h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp r14d, -380224718 jns short rx_i_35 call rx_i_108 @@ -643,7 +627,11 @@ rx_i_35: ;CALL rx_body_35: and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 0865c0f66h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp r9d, -2040787098 jns short rx_i_36 call rx_i_58 @@ -678,10 +666,6 @@ rx_body_37: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm2 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 0bca81c78h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm9 rx_i_38: ;SUB_64 dec ebx @@ -695,7 +679,11 @@ rx_body_38: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub rax, r14 - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 087c32de2h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_39: ;ADD_64 dec ebx @@ -707,10 +695,14 @@ rx_i_39: ;ADD_64 call rx_read rx_body_39: xor rbp, rax - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] add rax, r14 - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 0f4101ad9h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_40: ;CALL dec ebx @@ -774,11 +766,7 @@ rx_body_43: and eax, 32767 mov rax, qword ptr [rsi+rax*8] sub rax, r8 - mov rcx, rax - mov eax, r11d - xor eax, 064f3e4bfh - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax rx_i_44: ;SAR_64 dec ebx @@ -793,7 +781,11 @@ rx_body_44: mov rax, qword ptr [rsi+rax*8] mov rcx, r9 sar rax, cl - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 0372116f6h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_45: ;FPSUB dec ebx @@ -809,6 +801,10 @@ rx_body_45: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm2 movaps xmm5, xmm0 + mov eax, r13d + xor eax, 0977132cdh + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm5 rx_i_46: ;ADD_64 dec ebx @@ -822,11 +818,7 @@ rx_body_46: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r9 - mov rcx, rax - mov eax, r8d - xor eax, 0e9f58436h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_47: ;JUMP dec ebx @@ -864,10 +856,6 @@ rx_body_48: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 020e5d9e9h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm9 rx_i_49: ;FPSUB dec ebx @@ -896,11 +884,7 @@ rx_body_50: and eax, 32767 mov rax, qword ptr [rsi+rax*8] and rax, r10 - mov rcx, rax - mov eax, r15d - xor eax, 06ac56a2ah - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_51: ;SUB_64 dec ebx @@ -914,7 +898,11 @@ rx_body_51: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub rax, r15 - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 018fd1fbfh + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_52: ;FPSQRT dec ebx @@ -941,7 +929,11 @@ rx_i_53: ;RET rx_body_53: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 078ed00edh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp rsp, rdi je short rx_i_54 ret @@ -984,10 +976,6 @@ rx_body_55: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm3, xmm0 - mov eax, r11d - xor eax, 07c79cddh - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm3 rx_i_56: ;IDIV_64 dec ebx @@ -1010,11 +998,7 @@ rx_body_56: sar rax, 25 sets dl add rax, rdx - mov rcx, rax - mov eax, r8d - xor eax, 0fcf95491h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_57: ;MUL_64 dec ebx @@ -1075,7 +1059,7 @@ rx_i_60: ;CALL jnz short rx_body_60 call rx_read rx_body_60: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, rax mov eax, r11d @@ -1132,6 +1116,10 @@ rx_body_63: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm7 movaps xmm8, xmm0 + mov eax, r8d + xor eax, 0be13d69eh + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_64: ;SUB_64 dec ebx @@ -1158,7 +1146,11 @@ rx_i_65: ;JUMP rx_body_65: and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 0594a879fh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp r8d, 1498056607 js rx_i_129 @@ -1195,7 +1187,11 @@ rx_i_67: ;JUMP rx_body_67: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov r9, rax + mov rcx, rax + mov eax, r9d + xor eax, 07916db59h + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx cmp r13d, 2031541081 jns rx_i_79 @@ -1265,6 +1261,10 @@ rx_body_71: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm7, xmm0 + mov eax, r15d + xor eax, 056660eedh + and eax, 131071 + movlpd qword ptr [rsi + rax * 8], xmm7 rx_i_72: ;JUMP dec ebx @@ -1277,11 +1277,7 @@ rx_i_72: ;JUMP rx_body_72: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r11d - xor eax, 0da624dd9h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax cmp r9d, -631091751 jno rx_i_191 @@ -1389,7 +1385,11 @@ rx_body_78: mov ecx, eax mov eax, r8d imul rax, rcx - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 0697e6195h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_79: ;CALL dec ebx @@ -1402,11 +1402,7 @@ rx_i_79: ;CALL rx_body_79: and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r11d - xor eax, 06b4a7b43h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax cmp r13d, 1800043331 ja short rx_i_80 call rx_i_93 @@ -1442,7 +1438,11 @@ rx_body_81: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and rax, 338325607 - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 0142a7067h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_82: ;JUMP dec ebx @@ -1455,11 +1455,7 @@ rx_i_82: ;JUMP rx_body_82: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r10d - xor eax, 0fbe39afbh - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax cmp r12d, -68969733 jo rx_i_145 @@ -1499,7 +1495,7 @@ rx_body_84: mov rcx, rax mov eax, r13d xor eax, 0ec5c52e6h - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_85: ;MUL_64 @@ -1514,7 +1510,11 @@ rx_body_85: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, rax, 20014507 - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 013165abh + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_86: ;AND_64 dec ebx @@ -1528,11 +1528,7 @@ rx_body_86: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and rax, r8 - mov rcx, rax - mov eax, r12d - xor eax, 0a90410e4h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_87: ;SUB_64 dec ebx @@ -1577,11 +1573,7 @@ rx_body_89: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r8 - mov rcx, rax - mov eax, r10d - xor eax, 0e67532afh - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_90: ;FPADD dec ebx @@ -1661,7 +1653,11 @@ rx_body_94: xor rbp, rax and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 0eb8c5be0h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp r13d, -343122976 jns short rx_i_95 call rx_i_157 @@ -1678,11 +1674,7 @@ rx_body_95: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r10 - mov rcx, rax - mov eax, r15d - xor eax, 01023aa04h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_96: ;IMUL_32 dec ebx @@ -1710,17 +1702,13 @@ rx_i_97: ;FPDIV jnz short rx_body_97 call rx_read rx_body_97: - and eax, 32767 + and eax, 131071 cvtdq2pd xmm0, qword ptr [rsi+rax*8] divpd xmm0, xmm9 movaps xmm1, xmm0 cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm5, xmm0 - mov eax, r13d - xor eax, 0c477e850h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm5 rx_i_98: ;SUB_64 dec ebx @@ -1734,7 +1722,11 @@ rx_body_98: and eax, 32767 mov rax, qword ptr [rsi+rax*8] sub rax, r15 - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 0d067d49ah + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_99: ;FPMUL dec ebx @@ -1836,11 +1828,7 @@ rx_body_104: mul rcx mov rax, rdx shr rax, 31 - mov rcx, rax - mov eax, r15d - xor eax, 08df8ddf7h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_105: ;MUL_32 dec ebx @@ -1857,11 +1845,7 @@ rx_body_105: mov ecx, eax mov eax, r15d imul rax, rcx - mov rcx, rax - mov eax, r14d - xor eax, 09c8724edh - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_106: ;FPMUL dec ebx @@ -1919,10 +1903,6 @@ rx_body_108: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 0678b65beh - and eax, 32767 - movhpd qword ptr [rsi + rax * 8], xmm9 rx_i_109: ;ROR_64 dec ebx @@ -1953,7 +1933,7 @@ rx_i_110: ;SHR_64 jnz short rx_body_110 call rx_read rx_body_110: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, r9 shr rax, cl @@ -1972,12 +1952,12 @@ rx_i_111: ;CALL jnz short rx_body_111 call rx_read rx_body_111: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, rax mov eax, r12d xor eax, 05d237d0bh - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx cmp r14d, 1562606859 jl short rx_i_112 @@ -1995,11 +1975,7 @@ rx_body_112: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub rax, -1025977295 - mov rcx, rax - mov eax, r14d - xor eax, 0c2d8d431h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_113: ;MULH_64 dec ebx @@ -2015,7 +1991,11 @@ rx_body_113: mov rcx, r9 mul rcx mov rax, rdx - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0dea3f7e3h + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_114: ;DIV_64 dec ebx @@ -2075,7 +2055,7 @@ rx_body_116: mov rcx, rax mov eax, r8d xor eax, 091af638dh - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_117: ;IDIV_64 @@ -2097,11 +2077,7 @@ rx_body_117: sar rax, 29 sets dl add rax, rdx - mov rcx, rax - mov eax, r15d - xor eax, 0b8208a64h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_118: ;FPSUB dec ebx @@ -2130,6 +2106,10 @@ rx_body_119: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm3 movaps xmm5, xmm0 + mov eax, r13d + xor eax, 02401488h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm5 rx_i_120: ;FPADD dec ebx @@ -2155,7 +2135,7 @@ rx_i_121: ;FPSUB jnz short rx_body_121 call rx_read rx_body_121: - and eax, 32767 + and eax, 131071 cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm5 movaps xmm8, xmm0 @@ -2169,7 +2149,7 @@ rx_i_122: ;CALL jnz short rx_body_122 call rx_read rx_body_122: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, rax mov eax, r14d @@ -2205,11 +2185,7 @@ rx_i_124: ;JUMP rx_body_124: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r11d - xor eax, 0667d921ch - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax cmp r11d, 1719505436 jns rx_i_237 @@ -2228,7 +2204,11 @@ rx_body_125: movsxd rcx, eax mov rax, 1774711622 imul rax, rcx - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 069c7f346h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_126: ;FPMUL dec ebx @@ -2276,7 +2256,11 @@ rx_body_128: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r9 - mov r9, rax + mov rcx, rax + mov eax, r9d + xor eax, 0cb2ee635h + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_129: ;JUMP dec ebx @@ -2329,11 +2313,7 @@ rx_i_131: ;RET rx_body_131: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r15d - xor eax, 0dff06f75h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax cmp rsp, rdi je short rx_i_132 ret @@ -2351,6 +2331,10 @@ rx_body_132: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm6 movaps xmm7, xmm0 + mov eax, r15d + xor eax, 0b0c38959h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm7 rx_i_133: ;OR_64 dec ebx @@ -2364,11 +2348,7 @@ rx_body_133: and eax, 2047 mov rax, qword ptr [rsi+rax*8] or rax, r13 - mov rcx, rax - mov eax, r15d - xor eax, 0c45d2c34h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_134: ;ADD_64 dec ebx @@ -2382,7 +2362,11 @@ rx_body_134: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r8 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 05a5de2cbh + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_135: ;FPMUL dec ebx @@ -2400,6 +2384,10 @@ rx_body_135: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm8, xmm0 + mov eax, r8d + xor eax, 0b29f3d2ah + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_136: ;FPDIV dec ebx @@ -2417,10 +2405,6 @@ rx_body_136: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm5, xmm0 - mov eax, r13d - xor eax, 0efd7799dh - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm5 rx_i_137: ;SHR_64 dec ebx @@ -2449,7 +2433,11 @@ rx_i_138: ;RET rx_body_138: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 08e1fd158h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp rsp, rdi je short rx_i_139 ret @@ -2467,11 +2455,7 @@ rx_body_139: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r8 - mov rcx, rax - mov eax, r11d - xor eax, 01eb7d4f2h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax rx_i_140: ;IMUL_32 dec ebx @@ -2487,7 +2471,11 @@ rx_body_140: movsxd rcx, eax mov rax, -140239781 imul rax, rcx - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 0f7a41c5bh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_141: ;FPADD dec ebx @@ -2522,7 +2510,7 @@ rx_body_142: mov rcx, rax mov eax, r10d xor eax, 0516a9452h - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx cmp r12d, 1365939282 js rx_i_257 @@ -2614,11 +2602,7 @@ rx_body_147: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r11 - mov rcx, rax - mov eax, r12d - xor eax, 06a5bda88h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_148: ;SUB_64 dec ebx @@ -2652,11 +2636,7 @@ rx_body_149: mov ecx, eax mov eax, r14d imul rax, rcx - mov rcx, rax - mov eax, r8d - xor eax, 09046b787h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_150: ;DIV_64 dec ebx @@ -2693,11 +2673,7 @@ rx_body_151: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and rax, -2018584590 - mov rcx, rax - mov eax, r11d - xor eax, 087aed7f2h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax rx_i_152: ;SAR_64 dec ebx @@ -2730,10 +2706,6 @@ rx_body_153: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm8, xmm0 - mov eax, r8d - xor eax, 09111c981h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm8 rx_i_154: ;MUL_32 dec ebx @@ -2749,7 +2721,11 @@ rx_body_154: mov ecx, eax mov eax, -820047839 imul rax, rcx - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 0cf1f1021h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_155: ;ROL_64 dec ebx @@ -2764,11 +2740,7 @@ rx_body_155: mov rax, qword ptr [rsi+rax*8] mov rcx, r10 rol rax, cl - mov rcx, rax - mov eax, r13d - xor eax, 01c5d3ebeh - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_156: ;IMUL_32 dec ebx @@ -2784,7 +2756,11 @@ rx_body_156: movsxd rcx, eax movsxd rax, r15d imul rax, rcx - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 0b803e8a9h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_157: ;ADD_64 dec ebx @@ -2812,7 +2788,11 @@ rx_body_158: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r13 - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 04984392fh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_159: ;CALL dec ebx @@ -2823,13 +2803,9 @@ rx_i_159: ;CALL jnz short rx_body_159 call rx_read rx_body_159: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r13d - xor eax, 0ff7d3697h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax cmp r15d, -8571241 ja short rx_i_160 call rx_i_181 @@ -2862,7 +2838,7 @@ rx_i_161: ;IDIV_64 jnz short rx_body_161 call rx_read rx_body_161: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov edx, r14d cmp edx, -1 @@ -2877,7 +2853,11 @@ body_idiv_161: cqo idiv rcx result_idiv_161: - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 0db9043dah + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_162: ;SHL_64 dec ebx @@ -2891,7 +2871,11 @@ rx_body_162: and eax, 2047 mov rax, qword ptr [rsi+rax*8] shl rax, 7 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0170a46d8h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_163: ;SUB_64 dec ebx @@ -2906,11 +2890,7 @@ rx_body_163: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub rax, r8 - mov rcx, rax - mov eax, r14d - xor eax, 082c34b08h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_164: ;MUL_32 dec ebx @@ -2927,11 +2907,7 @@ rx_body_164: mov ecx, eax mov eax, r9d imul rax, rcx - mov rcx, rax - mov eax, r13d - xor eax, 09aa6da19h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_165: ;RET dec ebx @@ -2944,11 +2920,7 @@ rx_i_165: ;RET rx_body_165: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r9d - xor eax, 06450685ch - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax cmp rsp, rdi je short rx_i_166 ret @@ -2968,7 +2940,7 @@ rx_body_166: mov rcx, rax mov eax, r13d xor eax, 0bb67f8abh - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_167: ;FPMUL @@ -2987,10 +2959,6 @@ rx_body_167: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm2, xmm0 - mov eax, r10d - xor eax, 02a58510fh - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm2 rx_i_168: ;FPDIV dec ebx @@ -3008,6 +2976,10 @@ rx_body_168: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm7, xmm0 + mov eax, r15d + xor eax, 08d1a76f8h + and eax, 131071 + movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_169: ;CALL dec ebx @@ -3042,10 +3014,6 @@ rx_body_170: cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm6, xmm0 - mov eax, r14d - xor eax, 0a4256a99h - and eax, 32767 - movlpd qword ptr [rsi + rax * 8], xmm6 rx_i_171: ;DIV_64 dec ebx @@ -3065,7 +3033,11 @@ rx_body_171: mul rcx mov rax, rdx shr rax, 29 - mov r12, rax + mov rcx, rax + mov eax, r12d + xor eax, 07b086fb9h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_172: ;SUB_64 dec ebx @@ -3094,11 +3066,7 @@ rx_body_173: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, rax, -1386172772 - mov rcx, rax - mov eax, r12d - xor eax, 0ad60ae9ch - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_174: ;FPDIV dec ebx @@ -3161,11 +3129,7 @@ rx_body_177: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, 794235831 - mov rcx, rax - mov eax, r13d - xor eax, 02f5713b7h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_178: ;RET dec ebx @@ -3250,6 +3214,10 @@ rx_body_182: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm7 movaps xmm6, xmm0 + mov eax, r14d + xor eax, 07c8d12a5h + and eax, 131071 + movhpd qword ptr [rsi + rax * 8], xmm6 rx_i_183: ;ADD_64 dec ebx @@ -3278,7 +3246,11 @@ rx_body_184: and eax, 2047 mov rax, qword ptr [rsi+rax*8] xor eax, r13d - mov r12, rax + mov rcx, rax + mov eax, r12d + xor eax, 02f185447h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_185: ;JUMP dec ebx @@ -3392,7 +3364,7 @@ rx_i_191: ;FPSQRT jnz short rx_body_191 call rx_read rx_body_191: - and eax, 32767 + and eax, 131071 cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm6, xmm0 @@ -3410,10 +3382,6 @@ rx_body_192: cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm8, xmm0 - mov eax, r8d - xor eax, 0f8fd2040h - and eax, 32767 - movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_193: ;MUL_32 dec ebx @@ -3451,10 +3419,6 @@ rx_body_194: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm5, xmm0 - mov eax, r13d - xor eax, 040eb9f47h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm5 rx_i_195: ;SHL_64 dec ebx @@ -3485,7 +3449,7 @@ rx_body_196: mov rcx, rax mov eax, r13d xor eax, 08e47b269h - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_197: ;MUL_64 @@ -3501,7 +3465,11 @@ rx_body_197: and eax, 32767 mov rax, qword ptr [rsi+rax*8] imul rax, r15 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 0b1d1e60dh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_198: ;MULH_64 dec ebx @@ -3517,11 +3485,7 @@ rx_body_198: 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 + mov r8, rax rx_i_199: ;MULH_64 dec ebx @@ -3537,11 +3501,7 @@ rx_body_199: mov rcx, r10 mul rcx mov rax, rdx - mov rcx, rax - mov eax, r10d - xor eax, 0d0e71e9ah - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_200: ;FPSUB dec ebx @@ -3556,10 +3516,6 @@ rx_body_200: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm2 movaps xmm4, xmm0 - mov eax, r12d - xor eax, 0b05ce8abh - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm4 rx_i_201: ;FPADD dec ebx @@ -3624,11 +3580,7 @@ rx_body_204: and eax, 32767 mov rax, qword ptr [rsi+rax*8] imul rax, r15 - mov rcx, rax - mov eax, r8d - xor eax, 0eb8fc30fh - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_205: ;FPMUL dec ebx @@ -3662,6 +3614,10 @@ rx_body_206: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm7 movaps xmm4, xmm0 + mov eax, r12d + xor eax, 0d01fb731h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm4 rx_i_207: ;IDIV_64 dec ebx @@ -3701,7 +3657,11 @@ rx_body_208: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, rax, -486588965 - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 0e2ff3ddbh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_209: ;XOR_64 dec ebx @@ -3740,7 +3700,7 @@ rx_body_210: mov rcx, rax mov eax, r15d xor eax, 0c2c6bee0h - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_211: ;ROR_64 @@ -3775,11 +3735,7 @@ rx_body_212: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r13 - mov rcx, rax - mov eax, r15d - xor eax, 067d81043h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_213: ;IMUL_32 dec ebx @@ -3796,7 +3752,11 @@ rx_body_213: movsxd rcx, eax movsxd rax, r14d imul rax, rcx - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 07bf8b75h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_214: ;SHL_64 dec ebx @@ -3811,7 +3771,11 @@ rx_body_214: mov rax, qword ptr [rsi+rax*8] mov rcx, r14 shl rax, cl - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 0936ebe0bh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_215: ;ADD_32 dec ebx @@ -3826,7 +3790,11 @@ rx_body_215: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add eax, r12d - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 01194f02bh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_216: ;MUL_64 dec ebx @@ -3837,7 +3805,7 @@ rx_i_216: ;MUL_64 jnz short rx_body_216 call rx_read rx_body_216: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] imul rax, r13 mov rcx, rax @@ -3860,11 +3828,7 @@ rx_body_217: movsxd rcx, eax movsxd rax, r9d imul rax, rcx - mov rcx, rax - mov eax, r10d - xor eax, 017e667h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_218: ;FPSQRT dec ebx @@ -3879,10 +3843,6 @@ rx_body_218: cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm3, xmm0 - mov eax, r11d - xor eax, 0dd192e86h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm3 rx_i_219: ;OR_64 dec ebx @@ -3916,11 +3876,7 @@ rx_body_220: movsxd rcx, eax movsxd rax, r11d imul rax, rcx - mov rcx, rax - mov eax, r11d - xor eax, 0903fd173h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax rx_i_221: ;DIV_64 dec ebx @@ -3939,11 +3895,7 @@ rx_body_221: cmovne ecx, edx xor edx, edx div rcx - mov rcx, rax - mov eax, r11d - xor eax, 07feab351h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax rx_i_222: ;FPMUL dec ebx @@ -3961,10 +3913,6 @@ rx_body_222: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 0d7601963h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_223: ;FPSUB dec ebx @@ -4037,11 +3985,7 @@ rx_i_226: ;JUMP rx_body_226: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r8d - xor eax, 0978b2498h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax cmp r8d, -1752488808 jno rx_i_328 @@ -4079,6 +4023,10 @@ rx_body_228: cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm7, xmm0 + mov eax, r15d + xor eax, 0ffdff798h + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_229: ;IMULH_64 dec ebx @@ -4094,11 +4042,7 @@ rx_body_229: mov rcx, 334017248 imul rcx mov rax, rdx - mov rcx, rax - mov eax, r13d - xor eax, 013e8b2e0h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_230: ;FPMUL dec ebx @@ -4133,11 +4077,7 @@ rx_body_231: xor rbp, rax and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r9d - xor eax, 0e6c9edaah - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax cmp rsp, rdi je short rx_i_232 ret @@ -4158,6 +4098,10 @@ rx_body_232: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm7, xmm0 + mov eax, r15d + xor eax, 07e732935h + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_233: ;JUMP dec ebx @@ -4206,11 +4150,7 @@ rx_body_235: movsxd rcx, eax mov rax, 212286089 imul rax, rcx - mov rcx, rax - mov eax, r15d - xor eax, 0ca73a89h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_236: ;FPADD dec ebx @@ -4255,10 +4195,6 @@ rx_body_238: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm6 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 0331bbf8h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm7 rx_i_239: ;ADD_64 dec ebx @@ -4272,7 +4208,11 @@ rx_body_239: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r10 - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 0e42cdf41h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_240: ;IMULH_64 dec ebx @@ -4284,12 +4224,16 @@ rx_i_240: ;IMULH_64 call rx_read rx_body_240: xor rbp, rax - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, r14 imul rcx mov rax, rdx - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 0e6bcdcfbh + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_241: ;FPADD dec ebx @@ -4304,10 +4248,6 @@ rx_body_241: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm3 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 0bc2423ebh - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm7 rx_i_242: ;MUL_32 dec ebx @@ -4323,11 +4263,7 @@ rx_body_242: mov ecx, eax mov eax, r12d imul rax, rcx - mov rcx, rax - mov eax, r10d - xor eax, 0130882f2h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_243: ;OR_64 dec ebx @@ -4372,7 +4308,7 @@ rx_i_245: ;AND_32 call rx_read rx_body_245: xor rbp, rax - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] and eax, r10d mov rcx, rax @@ -4459,11 +4395,7 @@ rx_body_249: mov rcx, -508571655 imul rcx mov rax, rdx - mov rcx, rax - mov eax, r13d - xor eax, 0e1afcff9h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_250: ;MUL_64 dec ebx @@ -4477,11 +4409,7 @@ rx_body_250: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r8 - mov rcx, rax - mov eax, r14d - xor eax, 031115b87h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_251: ;FPMUL dec ebx @@ -4499,10 +4427,6 @@ rx_body_251: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm4, xmm0 - mov eax, r12d - xor eax, 05ed767a3h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm4 rx_i_252: ;SHL_64 dec ebx @@ -4516,7 +4440,11 @@ rx_body_252: and eax, 2047 mov rax, qword ptr [rsi+rax*8] shl rax, 53 - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 0b178001h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_253: ;CALL dec ebx @@ -4551,10 +4479,6 @@ rx_body_254: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm4 movaps xmm8, xmm0 - mov eax, r8d - xor eax, 0c251872eh - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_255: ;FPADD dec ebx @@ -4589,11 +4513,7 @@ rx_body_256: mov rcx, r15 mul rcx mov rax, rdx - mov rcx, rax - mov eax, r9d - xor eax, 0f8942c0h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_257: ;FPADD dec ebx @@ -4608,10 +4528,6 @@ rx_body_257: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm5 movaps xmm3, xmm0 - mov eax, r11d - xor eax, 0373b1b6fh - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm3 rx_i_258: ;MUL_32 dec ebx @@ -4647,6 +4563,10 @@ rx_body_259: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm9 movaps xmm3, xmm0 + mov eax, r11d + xor eax, 06c1856f0h + and eax, 32767 + movlpd qword ptr [rsi + rax * 8], xmm3 rx_i_260: ;FPSUB dec ebx @@ -4714,7 +4634,7 @@ rx_i_263: ;FPMUL call rx_read rx_body_263: xor rbp, rax - and eax, 32767 + and eax, 131071 cvtdq2pd xmm0, qword ptr [rsi+rax*8] mulpd xmm0, xmm8 movaps xmm1, xmm0 @@ -4801,7 +4721,11 @@ rx_body_268: xor rbp, rax and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0850bf8dah + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp r15d, -2062812966 jl rx_i_381 @@ -4817,11 +4741,7 @@ rx_body_269: and eax, 2047 mov rax, qword ptr [rsi+rax*8] rol rax, 50 - mov rcx, rax - mov eax, r10d - xor eax, 01ba81447h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_270: ;FPMUL dec ebx @@ -4839,6 +4759,10 @@ rx_body_270: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm7, xmm0 + mov eax, r15d + xor eax, 03981662bh + and eax, 32767 + movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_271: ;MUL_32 dec ebx @@ -4872,7 +4796,11 @@ rx_body_272: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and rax, r12 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0d45957b7h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_273: ;JUMP dec ebx @@ -4886,11 +4814,7 @@ rx_body_273: xor rbp, rax and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r13d - xor eax, 063972038h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax cmp r12d, 1670848568 jl rx_i_372 @@ -4907,10 +4831,6 @@ rx_body_274: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm4 movaps xmm6, xmm0 - mov eax, r14d - xor eax, 06a2b2b5bh - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm6 rx_i_275: ;IDIV_64 dec ebx @@ -4944,13 +4864,9 @@ rx_i_276: ;JUMP call rx_read rx_body_276: xor rbp, rax - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r12d - xor eax, 0b65161a6h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax cmp r11d, -1236180570 jns rx_i_404 @@ -4968,11 +4884,7 @@ rx_body_277: movsxd rcx, eax movsxd rax, r10d imul rax, rcx - mov rcx, rax - mov eax, r9d - xor eax, 01aca20a3h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_278: ;FPSUB dec ebx @@ -4987,10 +4899,6 @@ rx_body_278: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm7 movaps xmm4, xmm0 - mov eax, r12d - xor eax, 02d00ad10h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm4 rx_i_279: ;FPADD dec ebx @@ -5119,7 +5027,11 @@ rx_body_285: movsxd rcx, eax movsxd rax, r8d imul rax, rcx - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 09308cd6dh + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_286: ;ROL_64 dec ebx @@ -5134,11 +5046,7 @@ rx_body_286: mov rax, qword ptr [rsi+rax*8] mov rcx, r9 rol rax, cl - mov rcx, rax - mov eax, r15d - xor eax, 0546e75d1h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_287: ;IDIV_64 dec ebx @@ -5160,11 +5068,7 @@ rx_body_287: sar rax, 29 sets dl add rax, rdx - mov rcx, rax - mov eax, r8d - xor eax, 04926c7fah - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_288: ;MUL_64 dec ebx @@ -5214,6 +5118,10 @@ rx_body_290: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm8 movaps xmm9, xmm0 + mov eax, r9d + xor eax, 02f4d18d7h + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm9 rx_i_291: ;RET dec ebx @@ -5229,7 +5137,7 @@ rx_body_291: mov rcx, rax mov eax, r14d xor eax, 0768a9d75h - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx cmp rsp, rdi je short rx_i_292 @@ -5248,7 +5156,11 @@ rx_body_292: mov rax, qword ptr [rsi+rax*8] mov rcx, r8 rol rax, cl - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 035600fe9h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_293: ;FPADD dec ebx @@ -5263,6 +5175,10 @@ rx_body_293: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm5 movaps xmm8, xmm0 + mov eax, r8d + xor eax, 014844990h + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm8 rx_i_294: ;RET dec ebx @@ -5275,11 +5191,7 @@ rx_i_294: ;RET rx_body_294: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r8d - xor eax, 0ef8571b7h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax cmp rsp, rdi je short rx_i_295 ret @@ -5294,10 +5206,14 @@ rx_i_295: ;FPSUB call rx_read rx_body_295: xor rbp, rax - and eax, 32767 + and eax, 131071 cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm8 movaps xmm7, xmm0 + mov eax, r15d + xor eax, 08a66e69fh + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm7 rx_i_296: ;FPSQRT dec ebx @@ -5308,10 +5224,14 @@ rx_i_296: ;FPSQRT jnz short rx_body_296 call rx_read rx_body_296: - and eax, 32767 + and eax, 131071 cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm8, xmm0 + mov eax, r8d + xor eax, 0f3a594cah + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_297: ;ADD_64 dec ebx @@ -5340,6 +5260,10 @@ rx_body_298: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm7 movaps xmm6, xmm0 + mov eax, r14d + xor eax, 0d10f7c42h + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm6 rx_i_299: ;ADD_64 dec ebx @@ -5354,11 +5278,7 @@ rx_body_299: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r10 - mov rcx, rax - mov eax, r12d - xor eax, 01468af4h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_300: ;FPSUB dec ebx @@ -5391,10 +5311,6 @@ rx_body_301: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 0433cf2d6h - and eax, 32767 - movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_302: ;ADD_64 dec ebx @@ -5409,7 +5325,11 @@ rx_body_302: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r10 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 0afbbe406h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_303: ;FPADD dec ebx @@ -5424,10 +5344,6 @@ rx_body_303: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm3 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 0bb9ee490h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm9 rx_i_304: ;MUL_64 dec ebx @@ -5455,7 +5371,11 @@ rx_body_305: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r15 - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 0fc12db20h + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_306: ;ADD_64 dec ebx @@ -5469,7 +5389,11 @@ rx_body_306: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, 400578979 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 017e059a3h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_307: ;SHL_64 dec ebx @@ -5497,7 +5421,11 @@ rx_body_308: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r13 - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 0c2d34e82h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_309: ;DIV_64 dec ebx @@ -5515,11 +5443,7 @@ rx_body_309: mul rcx mov rax, rdx shr rax, 31 - mov rcx, rax - mov eax, r9d - xor eax, 09d7b8294h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_310: ;FPMUL dec ebx @@ -5537,10 +5461,6 @@ rx_body_310: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 07c9816c0h - and eax, 32767 - movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_311: ;FPMUL dec ebx @@ -5573,7 +5493,11 @@ rx_body_312: mov ecx, eax mov eax, r14d imul rax, rcx - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 0bb93ffb8h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_313: ;ROR_64 dec ebx @@ -5587,11 +5511,7 @@ rx_body_313: and eax, 2047 mov rax, qword ptr [rsi+rax*8] ror rax, 62 - mov rcx, rax - mov eax, r14d - xor eax, 09500d514h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_314: ;IMUL_32 dec ebx @@ -5661,6 +5581,10 @@ rx_body_317: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm7 movaps xmm5, xmm0 + mov eax, r13d + xor eax, 0b5bc8h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm5 rx_i_318: ;ROR_64 dec ebx @@ -5693,11 +5617,7 @@ rx_body_319: and eax, 2047 mov rax, qword ptr [rsi+rax*8] shr rax, 46 - mov rcx, rax - mov eax, r11d - xor eax, 01f931a08h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax rx_i_320: ;FPADD dec ebx @@ -5712,10 +5632,6 @@ rx_body_320: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm4 movaps xmm2, xmm0 - mov eax, r10d - xor eax, 02bdc7349h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm2 rx_i_321: ;IMUL_32 dec ebx @@ -5748,11 +5664,7 @@ rx_i_322: ;CALL rx_body_322: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r11d - xor eax, 054292224h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax cmp r11d, 1411981860 jno short rx_i_323 call rx_i_343 @@ -5772,11 +5684,7 @@ rx_body_323: mov rcx, r14 mul rcx mov rax, rdx - mov rcx, rax - mov eax, r14d - xor eax, 0d675c533h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_324: ;FPDIV dec ebx @@ -5794,10 +5702,6 @@ rx_body_324: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 0944856d4h - and eax, 32767 - movhpd qword ptr [rsi + rax * 8], xmm9 rx_i_325: ;OR_32 dec ebx @@ -5811,7 +5715,11 @@ rx_body_325: and eax, 2047 mov rax, qword ptr [rsi+rax*8] or eax, r8d - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0ef376c54h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_326: ;MULH_64 dec ebx @@ -5828,11 +5736,7 @@ rx_body_326: mov rcx, -1233771581 mul rcx mov rax, rdx - mov rcx, rax - mov eax, r9d - xor eax, 0b67623c3h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_327: ;IDIV_64 dec ebx @@ -5870,7 +5774,11 @@ rx_body_328: and eax, 2047 mov rax, qword ptr [rsi+rax*8] shr rax, 18 - mov r9, rax + mov rcx, rax + mov eax, r9d + xor eax, 04d159415h + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_329: ;RET dec ebx @@ -5881,7 +5789,7 @@ rx_i_329: ;RET jnz short rx_body_329 call rx_read rx_body_329: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov r11, rax cmp rsp, rdi @@ -5903,11 +5811,7 @@ rx_body_330: movsxd rcx, eax mov rax, -1349816041 imul rax, rcx - mov rcx, rax - mov eax, r11d - xor eax, 0af8b7117h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax rx_i_331: ;FPADD dec ebx @@ -5938,10 +5842,6 @@ rx_body_332: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm6 movaps xmm3, xmm0 - mov eax, r11d - xor eax, 0116c919eh - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm3 rx_i_333: ;OR_64 dec ebx @@ -5956,7 +5856,11 @@ rx_body_333: and eax, 2047 mov rax, qword ptr [rsi+rax*8] or rax, r12 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 0f58fcaa8h + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_334: ;ADD_64 dec ebx @@ -5985,11 +5889,7 @@ rx_body_335: and eax, 32767 mov rax, qword ptr [rsi+rax*8] sub rax, r8 - mov rcx, rax - mov eax, r12d - xor eax, 07ffe4218h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_336: ;ROR_64 dec ebx @@ -6041,7 +5941,11 @@ rx_body_338: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r12 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 0184d2abbh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_339: ;FPADD dec ebx @@ -6066,10 +5970,14 @@ rx_i_340: ;FPADD jnz short rx_body_340 call rx_read rx_body_340: - and eax, 32767 + and eax, 131071 cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm5 movaps xmm5, xmm0 + mov eax, r13d + xor eax, 038b653beh + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm5 rx_i_341: ;MUL_32 dec ebx @@ -6085,11 +5993,7 @@ rx_body_341: 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 + mov r8, rax rx_i_342: ;FPSUB dec ebx @@ -6137,6 +6041,10 @@ rx_body_344: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm6 movaps xmm5, xmm0 + mov eax, r13d + xor eax, 0627d9feah + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm5 rx_i_345: ;MULH_64 dec ebx @@ -6147,7 +6055,7 @@ rx_i_345: ;MULH_64 jnz short rx_body_345 call rx_read rx_body_345: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, r13 mul rcx @@ -6170,11 +6078,7 @@ rx_body_346: and eax, 32767 mov rax, qword ptr [rsi+rax*8] and eax, r15d - mov rcx, rax - mov eax, r13d - xor eax, 0ed2d3987h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_347: ;ADD_64 dec ebx @@ -6188,7 +6092,11 @@ rx_body_347: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r10 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0d529429ah + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_348: ;FPSUB dec ebx @@ -6220,7 +6128,11 @@ rx_body_349: and eax, 2047 mov rax, qword ptr [rsi+rax*8] or rax, r15 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 05c449453h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_350: ;CALL dec ebx @@ -6233,11 +6145,7 @@ rx_i_350: ;CALL rx_body_350: and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r12d - xor eax, 0c5901b43h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax cmp r9d, -980411581 ja short rx_i_351 call rx_i_352 @@ -6254,7 +6162,11 @@ rx_body_351: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r10 - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 0985ba4h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_352: ;FPADD dec ebx @@ -6288,10 +6200,6 @@ rx_body_353: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm2 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 0b3c9f7aeh - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm7 rx_i_354: ;MUL_32 dec ebx @@ -6307,7 +6215,11 @@ rx_body_354: mov ecx, eax mov eax, r13d imul rax, rcx - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 049cc2e0ch + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_355: ;MUL_64 dec ebx @@ -6321,11 +6233,7 @@ rx_body_355: and eax, 32767 mov rax, qword ptr [rsi+rax*8] imul rax, r14 - mov rcx, rax - mov eax, r8d - xor eax, 0c1062b3ch - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_356: ;MUL_64 dec ebx @@ -6410,6 +6318,10 @@ rx_body_360: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm8, xmm0 + mov eax, r8d + xor eax, 0c41a4103h + and eax, 131071 + movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_361: ;FPDIV dec ebx @@ -6427,10 +6339,6 @@ rx_body_361: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm6, xmm0 - mov eax, r14d - xor eax, 0ad0b81f5h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm6 rx_i_362: ;SUB_64 dec ebx @@ -6481,7 +6389,11 @@ rx_body_364: mov ecx, eax mov eax, r8d imul rax, rcx - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 0bb8ee9ch + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_365: ;IMUL_32 dec ebx @@ -6497,11 +6409,7 @@ rx_body_365: movsxd rcx, eax movsxd rax, r9d imul rax, rcx - mov rcx, rax - mov eax, r12d - xor eax, 0bfd87d37h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_366: ;IMUL_32 dec ebx @@ -6517,11 +6425,7 @@ rx_body_366: movsxd rcx, eax movsxd rax, r8d imul rax, rcx - mov rcx, rax - mov eax, r15d - xor eax, 0c3d6bcb7h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_367: ;ROR_64 dec ebx @@ -6536,7 +6440,11 @@ rx_body_367: and eax, 2047 mov rax, qword ptr [rsi+rax*8] ror rax, 18 - mov r12, rax + mov rcx, rax + mov eax, r12d + xor eax, 0ad9b92e8h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_368: ;SUB_32 dec ebx @@ -6586,10 +6494,6 @@ rx_body_370: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm6 movaps xmm6, xmm0 - mov eax, r14d - xor eax, 0a120e0edh - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm6 rx_i_371: ;FPADD dec ebx @@ -6658,6 +6562,10 @@ rx_body_374: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm2, xmm0 + mov eax, r10d + xor eax, 03507e810h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm2 rx_i_375: ;ADD_64 dec ebx @@ -6668,14 +6576,10 @@ rx_i_375: ;ADD_64 jnz short rx_body_375 call rx_read rx_body_375: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] add rax, -332030999 - mov rcx, rax - mov eax, r12d - xor eax, 0ec359be9h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_376: ;ADD_64 dec ebx @@ -6718,7 +6622,7 @@ rx_i_378: ;MUL_32 jnz short rx_body_378 call rx_read rx_body_378: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov ecx, eax mov eax, r14d @@ -6738,7 +6642,11 @@ rx_body_379: mov rax, qword ptr [rsi+rax*8] mov rcx, r9 ror rax, cl - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 03a2dc429h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_380: ;MUL_64 dec ebx @@ -6771,7 +6679,11 @@ rx_body_381: and eax, 2047 mov rax, qword ptr [rsi+rax*8] xor eax, r14d - mov r9, rax + mov rcx, rax + mov eax, r9d + xor eax, 032349ff8h + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_382: ;ROL_64 dec ebx @@ -6785,7 +6697,11 @@ rx_body_382: and eax, 32767 mov rax, qword ptr [rsi+rax*8] rol rax, 55 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 0a6a2e0b1h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_383: ;FPSUB dec ebx @@ -6800,10 +6716,6 @@ rx_body_383: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm4 movaps xmm5, xmm0 - mov eax, r13d - xor eax, 0c9f5cc22h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm5 rx_i_384: ;XOR_64 dec ebx @@ -6817,11 +6729,7 @@ rx_body_384: and eax, 2047 mov rax, qword ptr [rsi+rax*8] xor rax, 1413715044 - mov rcx, rax - mov eax, r9d - xor eax, 054439464h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_385: ;MUL_64 dec ebx @@ -6868,7 +6776,11 @@ rx_body_387: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub eax, r15d - mov r9, rax + mov rcx, rax + mov eax, r9d + xor eax, 028cbb7adh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_388: ;RET dec ebx @@ -6881,11 +6793,7 @@ rx_i_388: ;RET rx_body_388: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r11d - xor eax, 0a0985cc2h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax cmp rsp, rdi je short rx_i_389 ret @@ -6901,7 +6809,11 @@ rx_i_389: ;JUMP rx_body_389: and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 0eb1a1f50h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp r9d, -350609584 jge rx_i_421 @@ -6918,6 +6830,10 @@ rx_body_390: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm4 movaps xmm3, xmm0 + mov eax, r11d + xor eax, 0e5c5acbbh + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm3 rx_i_391: ;FPADD dec ebx @@ -6946,11 +6862,7 @@ rx_body_392: mov rax, qword ptr [rsi+rax*8] mov rcx, r9 sar rax, cl - mov rcx, rax - mov eax, r13d - xor eax, 08c4a0f0dh - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_393: ;AND_64 dec ebx @@ -6964,11 +6876,7 @@ rx_body_393: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and rax, r12 - mov rcx, rax - mov eax, r13d - xor eax, 020ec085ch - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_394: ;FPADD dec ebx @@ -7001,7 +6909,11 @@ rx_body_395: mul rcx mov rax, rdx shr rax, 28 - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 03802aa10h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_396: ;ROR_64 dec ebx @@ -7034,11 +6946,7 @@ rx_body_397: and eax, 32767 mov rax, qword ptr [rsi+rax*8] sub eax, r12d - mov rcx, rax - mov eax, r10d - xor eax, 0146db5dfh - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_398: ;SHR_64 dec ebx @@ -7089,11 +6997,7 @@ rx_body_400: and eax, 32767 mov rax, qword ptr [rsi+rax*8] and rax, -1800645748 - mov rcx, rax - mov eax, r14d - xor eax, 094ac538ch - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_401: ;FPSUB dec ebx @@ -7160,12 +7064,16 @@ rx_i_404: ;MUL_32 jnz short rx_body_404 call rx_read rx_body_404: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov ecx, eax mov eax, r8d imul rax, rcx - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 08f83c4f1h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_405: ;CALL dec ebx @@ -7178,11 +7086,7 @@ rx_i_405: ;CALL rx_body_405: and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r12d - xor eax, 06b0af6c1h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax cmp r10d, 1795880641 ja short rx_i_406 call rx_i_494 @@ -7203,10 +7107,6 @@ rx_body_406: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 09862adefh - and eax, 32767 - movlpd qword ptr [rsi + rax * 8], xmm9 rx_i_407: ;FPSUB dec ebx @@ -7232,14 +7132,10 @@ rx_i_408: ;MUL_64 jnz short rx_body_408 call rx_read rx_body_408: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] imul rax, rax, 693109961 - mov rcx, rax - mov eax, r10d - xor eax, 0295004c9h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_409: ;MUL_64 dec ebx @@ -7254,7 +7150,11 @@ rx_body_409: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r15 - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 05a68b80fh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_410: ;RET dec ebx @@ -7283,7 +7183,11 @@ rx_i_411: ;RET rx_body_411: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov r12, rax + mov rcx, rax + mov eax, r12d + xor eax, 0b492f6bah + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp rsp, rdi je short rx_i_412 ret @@ -7304,10 +7208,6 @@ rx_body_412: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm3, xmm0 - mov eax, r11d - xor eax, 0bbd2640ah - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm3 rx_i_413: ;FPMUL dec ebx @@ -7325,6 +7225,10 @@ rx_body_413: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm4, xmm0 + mov eax, r12d + xor eax, 043989376h + and eax, 131071 + movlpd qword ptr [rsi + rax * 8], xmm4 rx_i_414: ;AND_64 dec ebx @@ -7339,11 +7243,7 @@ rx_body_414: and eax, 32767 mov rax, qword ptr [rsi+rax*8] and rax, -378293327 - mov rcx, rax - mov eax, r10d - xor eax, 0e973b3b1h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_415: ;DIV_64 dec ebx @@ -7397,7 +7297,11 @@ rx_body_417: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub rax, r12 - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 0dfa7569ch + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_418: ;MULH_64 dec ebx @@ -7408,7 +7312,7 @@ rx_i_418: ;MULH_64 jnz short rx_body_418 call rx_read rx_body_418: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, r11 mul rcx @@ -7424,7 +7328,7 @@ rx_i_419: ;OR_64 jnz short rx_body_419 call rx_read rx_body_419: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] or rax, r14 mov rcx, rax @@ -7445,7 +7349,11 @@ rx_body_420: and eax, 2047 mov rax, qword ptr [rsi+rax*8] ror rax, 38 - mov r9, rax + mov rcx, rax + mov eax, r9d + xor eax, 08f7bb3ech + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_421: ;CALL dec ebx @@ -7478,7 +7386,11 @@ rx_body_422: movsxd rcx, eax movsxd rax, r10d imul rax, rcx - mov r13, rax + mov rcx, rax + mov eax, r13d + xor eax, 07c614e2h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_423: ;MUL_64 dec ebx @@ -7492,11 +7404,7 @@ rx_body_423: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r10 - mov rcx, rax - mov eax, r15d - xor eax, 0a5d40d0ah - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_424: ;FPADD dec ebx @@ -7512,10 +7420,6 @@ rx_body_424: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm7 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 0565ae8aah - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm9 rx_i_425: ;IMUL_32 dec ebx @@ -7531,7 +7435,11 @@ rx_body_425: movsxd rcx, eax mov rax, 1776029069 imul rax, rcx - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 069dc0d8dh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_426: ;IDIV_64 dec ebx @@ -7552,11 +7460,7 @@ rx_body_426: sar rax, 27 sets dl add rax, rdx - mov rcx, rax - mov eax, r14d - xor eax, 0dcca31efh - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_427: ;MUL_32 dec ebx @@ -7573,11 +7477,7 @@ rx_body_427: mov ecx, eax mov eax, -2146332428 imul rax, rcx - mov rcx, rax - mov eax, r9d - xor eax, 0801190f4h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_428: ;RET dec ebx @@ -7590,11 +7490,7 @@ rx_i_428: ;RET rx_body_428: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r8d - xor eax, 0e3b86b2fh - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax cmp rsp, rdi je short rx_i_429 ret @@ -7611,7 +7507,11 @@ rx_body_429: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r9 - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 076a3ad84h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_430: ;FPADD dec ebx @@ -7695,10 +7595,6 @@ rx_body_434: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm9, xmm0 - mov eax, r9d - xor eax, 08c1cfc74h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm9 rx_i_435: ;MUL_64 dec ebx @@ -7732,10 +7628,6 @@ rx_body_436: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm2 movaps xmm7, xmm0 - mov eax, r15d - xor eax, 0bfa76c43h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm7 rx_i_437: ;FPMUL dec ebx @@ -7771,6 +7663,10 @@ rx_body_438: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm4, xmm0 + mov eax, r12d + xor eax, 0b7c490eeh + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm4 rx_i_439: ;OR_64 dec ebx @@ -7784,11 +7680,7 @@ rx_body_439: and eax, 2047 mov rax, qword ptr [rsi+rax*8] or rax, -1299288575 - mov rcx, rax - mov eax, r10d - xor eax, 0b28e6e01h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r10, rax rx_i_440: ;CALL dec ebx @@ -7802,7 +7694,11 @@ rx_body_440: xor rbp, rax and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov r9, rax + mov rcx, rax + mov eax, r9d + xor eax, 07ed31f7ah + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx cmp r12d, 2127765370 jns short rx_i_441 call rx_i_41 @@ -7823,7 +7719,7 @@ rx_body_441: mov rcx, rax mov eax, r9d xor eax, 01f93242ch - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx rx_i_442: ;FPSQRT @@ -7851,11 +7747,7 @@ rx_i_443: ;RET rx_body_443: and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r9d - xor eax, 04f71c419h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax cmp rsp, rdi je short rx_i_444 ret @@ -7873,10 +7765,6 @@ rx_body_444: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm7 movaps xmm5, xmm0 - mov eax, r13d - xor eax, 0ce416070h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm5 rx_i_445: ;ADD_64 dec ebx @@ -7890,11 +7778,7 @@ rx_body_445: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r11 - mov rcx, rax - mov eax, r9d - xor eax, 084d1f575h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_446: ;MUL_32 dec ebx @@ -7962,7 +7846,11 @@ rx_body_449: and eax, 2047 mov rax, qword ptr [rsi+rax*8] rol rax, 28 - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 089e19790h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_450: ;SAR_64 dec ebx @@ -7977,11 +7865,7 @@ rx_body_450: mov rax, qword ptr [rsi+rax*8] mov rcx, r12 sar rax, cl - mov rcx, rax - mov eax, r8d - xor eax, 0f6de92ach - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_451: ;ADD_64 dec ebx @@ -7996,7 +7880,11 @@ rx_body_451: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r10 - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 0eedd10b3h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_452: ;RET dec ebx @@ -8009,11 +7897,7 @@ rx_i_452: ;RET rx_body_452: and eax, 32767 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r11d - xor eax, 0e27dea25h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r11, rax cmp rsp, rdi je short rx_i_453 ret @@ -8027,7 +7911,7 @@ rx_i_453: ;DIV_64 jnz short rx_body_453 call rx_read rx_body_453: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] ; magic divide by 380157076 shr rax, 2 @@ -8035,7 +7919,11 @@ rx_body_453: mul rcx mov rax, rdx shr rax, 24 - mov r8, rax + mov rcx, rax + mov eax, r8d + xor eax, 016a8bc94h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_454: ;FPADD dec ebx @@ -8050,10 +7938,6 @@ rx_body_454: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm9 movaps xmm4, xmm0 - mov eax, r12d - xor eax, 07e41c60fh - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm4 rx_i_455: ;OR_64 dec ebx @@ -8082,11 +7966,7 @@ rx_body_456: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and rax, 401943615 - mov rcx, rax - mov eax, r9d - xor eax, 017f52c3fh - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax rx_i_457: ;SUB_64 dec ebx @@ -8116,11 +7996,15 @@ rx_i_458: ;SAR_64 jnz short rx_body_458 call rx_read rx_body_458: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] mov rcx, r8 sar rax, cl - mov r14, rax + mov rcx, rax + mov eax, r14d + xor eax, 028f0a8ch + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_459: ;MUL_64 dec ebx @@ -8152,11 +8036,7 @@ rx_body_460: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add eax, -347784553 - mov rcx, rax - mov eax, r12d - xor eax, 0eb453a97h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r12, rax rx_i_461: ;XOR_64 dec ebx @@ -8188,7 +8068,11 @@ rx_body_462: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add rax, r8 - mov r15, rax + mov rcx, rax + mov eax, r15d + xor eax, 098a05350h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_463: ;ADD_32 dec ebx @@ -8202,7 +8086,11 @@ rx_body_463: and eax, 2047 mov rax, qword ptr [rsi+rax*8] add eax, r15d - mov r10, rax + mov rcx, rax + mov eax, r10d + xor eax, 0c8204c90h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_464: ;MUL_64 dec ebx @@ -8216,11 +8104,7 @@ rx_body_464: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r15 - mov rcx, rax - mov eax, r13d - xor eax, 0d0673df8h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_465: ;FPADD dec ebx @@ -8235,6 +8119,10 @@ rx_body_465: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm5 movaps xmm2, xmm0 + mov eax, r10d + xor eax, 0d11c1242h + and eax, 32767 + movhpd qword ptr [rsi + rax * 8], xmm2 rx_i_466: ;IMUL_32 dec ebx @@ -8287,11 +8175,7 @@ rx_body_468: mul rcx mov rax, rdx shr rax, 31 - mov rcx, rax - mov eax, r8d - xor eax, 0ff339c77h - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax rx_i_469: ;IMUL_32 dec ebx @@ -8302,7 +8186,7 @@ rx_i_469: ;IMUL_32 jnz short rx_body_469 call rx_read rx_body_469: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] movsxd rcx, eax movsxd rax, r9d @@ -8322,14 +8206,10 @@ rx_i_470: ;OR_64 jnz short rx_body_470 call rx_read rx_body_470: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] or rax, r11 - mov rcx, rax - mov eax, r14d - xor eax, 090d56b4ch - and eax, 32767 - mov qword ptr [rsi + rax * 8], rcx + mov r14, rax rx_i_471: ;IMUL_32 dec ebx @@ -8420,6 +8300,10 @@ rx_body_476: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm2 movaps xmm9, xmm0 + mov eax, r9d + xor eax, 0b01bb14ch + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm9 rx_i_477: ;FPADD dec ebx @@ -8434,10 +8318,6 @@ rx_body_477: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm9 movaps xmm6, xmm0 - mov eax, r14d - xor eax, 0e81fc7a6h - and eax, 2047 - movhpd qword ptr [rsi + rax * 8], xmm6 rx_i_478: ;MUL_64 dec ebx @@ -8448,7 +8328,7 @@ rx_i_478: ;MUL_64 jnz short rx_body_478 call rx_read rx_body_478: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] imul rax, r10 mov r12, rax @@ -8465,11 +8345,7 @@ rx_body_479: and eax, 2047 mov rax, qword ptr [rsi+rax*8] imul rax, r14 - mov rcx, rax - mov eax, r13d - xor eax, 0c42735ech - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r13, rax rx_i_480: ;FPADD dec ebx @@ -8516,7 +8392,11 @@ rx_body_482: and eax, 2047 mov rax, qword ptr [rsi+rax*8] and eax, 1304556205 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 04dc1f2adh + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_483: ;FPADD dec ebx @@ -8531,6 +8411,10 @@ rx_body_483: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm6 movaps xmm6, xmm0 + mov eax, r14d + xor eax, 0545908cah + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm6 rx_i_484: ;SHR_64 dec ebx @@ -8545,7 +8429,11 @@ rx_body_484: and eax, 2047 mov rax, qword ptr [rsi+rax*8] shr rax, 37 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 074a50ee0h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_485: ;JUMP dec ebx @@ -8562,7 +8450,7 @@ rx_body_485: mov rcx, rax mov eax, r15d xor eax, 02112cbaeh - and eax, 32767 + and eax, 131071 mov qword ptr [rsi + rax * 8], rcx cmp r8d, 554879918 jno rx_i_58 @@ -8597,7 +8485,11 @@ rx_body_487: and eax, 2047 mov rax, qword ptr [rsi+rax*8] sub rax, r9 - mov r11, rax + mov rcx, rax + mov eax, r11d + xor eax, 0ec228e26h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_488: ;DIV_64 dec ebx @@ -8629,11 +8521,7 @@ rx_body_489: xor rbp, rax and eax, 2047 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r8d - xor eax, 0bcd0a942h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r8, rax cmp r15d, -1127175870 jge rx_i_75 @@ -8651,11 +8539,7 @@ rx_body_490: mov rax, qword ptr [rsi+rax*8] mov rcx, r9 ror rax, cl - mov rcx, rax - mov eax, r15d - xor eax, 0ab8bd68h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r15, rax rx_i_491: ;FPADD dec ebx @@ -8696,7 +8580,11 @@ rx_body_492: sar rax, 30 sets dl add rax, rdx - mov r12, rax + mov rcx, rax + mov eax, r12d + xor eax, 095f0b181h + and eax, 2047 + mov qword ptr [rsi + rax * 8], rcx rx_i_493: ;FPSUB dec ebx @@ -8711,6 +8599,10 @@ rx_body_493: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm9 movaps xmm4, xmm0 + mov eax, r12d + xor eax, 02feb2fd7h + and eax, 2047 + movhpd qword ptr [rsi + rax * 8], xmm4 rx_i_494: ;MUL_32 dec ebx @@ -8744,6 +8636,10 @@ rx_body_495: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm8, xmm0 + mov eax, r8d + xor eax, 02d12bd27h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_496: ;IDIV_64 dec ebx @@ -8800,10 +8696,6 @@ rx_body_498: cmpeqpd xmm1, xmm1 andps xmm0, xmm1 movaps xmm8, xmm0 - mov eax, r8d - xor eax, 09dc5a1f9h - and eax, 2047 - movlpd qword ptr [rsi + rax * 8], xmm8 rx_i_499: ;IMUL_32 dec ebx @@ -8834,6 +8726,10 @@ rx_body_500: cvtdq2pd xmm0, qword ptr [rsi+rax*8] andps xmm0, xmm10 sqrtpd xmm2, xmm0 + mov eax, r10d + xor eax, 04a250342h + and eax, 32767 + movhpd qword ptr [rsi + rax * 8], xmm2 rx_i_501: ;XOR_64 dec ebx @@ -8863,13 +8759,9 @@ rx_i_502: ;RET call rx_read rx_body_502: xor rbp, rax - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] - mov rcx, rax - mov eax, r9d - xor eax, 08d85312h - and eax, 2047 - mov qword ptr [rsi + rax * 8], rcx + mov r9, rax cmp rsp, rdi je short rx_i_503 ret @@ -8905,10 +8797,6 @@ rx_body_504: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm9 movaps xmm4, xmm0 - mov eax, r12d - xor eax, 0be8cbb18h - and eax, 32767 - movhpd qword ptr [rsi + rax * 8], xmm4 rx_i_505: ;FPSUB dec ebx @@ -8941,6 +8829,10 @@ rx_body_506: cvtdq2pd xmm0, qword ptr [rsi+rax*8] subpd xmm0, xmm9 movaps xmm3, xmm0 + mov eax, r11d + xor eax, 05e890759h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm3 rx_i_507: ;RET dec ebx @@ -8991,7 +8883,10 @@ rx_body_509: or eax, 40896 mov dword ptr [rsp - 8], eax ldmxcsr dword ptr [rsp - 8] - mov r10, rcx + mov eax, r10d + xor eax, 06cd84each + and eax, 32767 + mov qword ptr [rsi + rax * 8], rcx rx_i_510: ;FPADD dec ebx @@ -9006,6 +8901,10 @@ rx_body_510: cvtdq2pd xmm0, qword ptr [rsi+rax*8] addpd xmm0, xmm2 movaps xmm9, xmm0 + mov eax, r9d + xor eax, 097614097h + and eax, 2047 + movlpd qword ptr [rsi + rax * 8], xmm9 rx_i_511: ;SHR_64 dec ebx @@ -9016,7 +8915,7 @@ rx_i_511: ;SHR_64 jnz short rx_body_511 call rx_read rx_body_511: - and eax, 32767 + and eax, 131071 mov rax, qword ptr [rsi+rax*8] shr rax, 56 mov r11, rax diff --git a/src/softAes.h b/src/softAes.h index 1f7bd99..e4b675e 100644 --- a/src/softAes.h +++ b/src/softAes.h @@ -26,3 +26,13 @@ __m128i soft_aeskeygenassist(__m128i key, uint8_t rcon); __m128i soft_aesenc(__m128i in, __m128i key); __m128i soft_aesdec(__m128i in, __m128i key); + +template +inline __m128i aesenc(__m128i in, __m128i key) { + return soft ? soft_aesenc(in, key) : _mm_aesenc_si128(in, key); +} + +template +inline __m128i aesdec(__m128i in, __m128i key) { + return soft ? soft_aesdec(in, key) : _mm_aesdec_si128(in, key); +} \ No newline at end of file