mirror of
https://github.com/xmrig/xmrig.git
synced 2024-12-22 19:49:36 +00:00
Removed cn/wow algorithm (coin forked to rx/wow).
This commit is contained in:
parent
ec1839d580
commit
82696000e4
19 changed files with 4 additions and 2401 deletions
|
@ -118,7 +118,6 @@ bool xmrig::CpuWorker<N>::selfTest()
|
||||||
verify(Algorithm::CN_XAO, test_output_xao) &&
|
verify(Algorithm::CN_XAO, test_output_xao) &&
|
||||||
verify(Algorithm::CN_RTO, test_output_rto) &&
|
verify(Algorithm::CN_RTO, test_output_rto) &&
|
||||||
verify(Algorithm::CN_HALF, test_output_half) &&
|
verify(Algorithm::CN_HALF, test_output_half) &&
|
||||||
verify2(Algorithm::CN_WOW, test_output_wow) &&
|
|
||||||
verify2(Algorithm::CN_R, test_output_r) &&
|
verify2(Algorithm::CN_R, test_output_r) &&
|
||||||
verify(Algorithm::CN_RWZ, test_output_rwz) &&
|
verify(Algorithm::CN_RWZ, test_output_rwz) &&
|
||||||
verify(Algorithm::CN_ZLS, test_output_zls) &&
|
verify(Algorithm::CN_ZLS, test_output_zls) &&
|
||||||
|
|
|
@ -52,7 +52,7 @@ public:
|
||||||
|
|
||||||
constexpr inline Algorithm::Id base() const { return m_base[ALGO]; }
|
constexpr inline Algorithm::Id base() const { return m_base[ALGO]; }
|
||||||
constexpr inline bool isHeavy() const { return memory() == CN_MEMORY * 2; }
|
constexpr inline bool isHeavy() const { return memory() == CN_MEMORY * 2; }
|
||||||
constexpr inline bool isR() const { return ALGO == Algorithm::CN_R || ALGO == Algorithm::CN_WOW; }
|
constexpr inline bool isR() const { return ALGO == Algorithm::CN_R; }
|
||||||
constexpr inline size_t memory() const { return m_memory[ALGO]; }
|
constexpr inline size_t memory() const { return m_memory[ALGO]; }
|
||||||
constexpr inline uint32_t iterations() const { return m_iterations[ALGO]; }
|
constexpr inline uint32_t iterations() const { return m_iterations[ALGO]; }
|
||||||
constexpr inline uint32_t mask() const { return ((memory() - 1) / 16) * 16; }
|
constexpr inline uint32_t mask() const { return ((memory() - 1) / 16) * 16; }
|
||||||
|
@ -86,7 +86,6 @@ public:
|
||||||
case Algorithm::CN_1:
|
case Algorithm::CN_1:
|
||||||
case Algorithm::CN_2:
|
case Algorithm::CN_2:
|
||||||
case Algorithm::CN_R:
|
case Algorithm::CN_R:
|
||||||
case Algorithm::CN_WOW:
|
|
||||||
case Algorithm::CN_RTO:
|
case Algorithm::CN_RTO:
|
||||||
return CN_ITER;
|
return CN_ITER;
|
||||||
|
|
||||||
|
@ -172,7 +171,6 @@ public:
|
||||||
|
|
||||||
case Algorithm::CN_2:
|
case Algorithm::CN_2:
|
||||||
case Algorithm::CN_R:
|
case Algorithm::CN_R:
|
||||||
case Algorithm::CN_WOW:
|
|
||||||
case Algorithm::CN_HALF:
|
case Algorithm::CN_HALF:
|
||||||
case Algorithm::CN_RWZ:
|
case Algorithm::CN_RWZ:
|
||||||
case Algorithm::CN_ZLS:
|
case Algorithm::CN_ZLS:
|
||||||
|
@ -203,7 +201,6 @@ private:
|
||||||
CN_MEMORY, // CN_1
|
CN_MEMORY, // CN_1
|
||||||
CN_MEMORY, // CN_2
|
CN_MEMORY, // CN_2
|
||||||
CN_MEMORY, // CN_R
|
CN_MEMORY, // CN_R
|
||||||
CN_MEMORY, // CN_WOW
|
|
||||||
CN_MEMORY, // CN_FAST
|
CN_MEMORY, // CN_FAST
|
||||||
CN_MEMORY, // CN_HALF
|
CN_MEMORY, // CN_HALF
|
||||||
CN_MEMORY, // CN_XAO
|
CN_MEMORY, // CN_XAO
|
||||||
|
@ -243,7 +240,6 @@ private:
|
||||||
CN_ITER, // CN_1
|
CN_ITER, // CN_1
|
||||||
CN_ITER, // CN_2
|
CN_ITER, // CN_2
|
||||||
CN_ITER, // CN_R
|
CN_ITER, // CN_R
|
||||||
CN_ITER, // CN_WOW
|
|
||||||
CN_ITER / 2, // CN_FAST
|
CN_ITER / 2, // CN_FAST
|
||||||
CN_ITER / 2, // CN_HALF
|
CN_ITER / 2, // CN_HALF
|
||||||
CN_ITER * 2, // CN_XAO
|
CN_ITER * 2, // CN_XAO
|
||||||
|
@ -282,7 +278,6 @@ private:
|
||||||
Algorithm::CN_1, // CN_1
|
Algorithm::CN_1, // CN_1
|
||||||
Algorithm::CN_2, // CN_2
|
Algorithm::CN_2, // CN_2
|
||||||
Algorithm::CN_2, // CN_R
|
Algorithm::CN_2, // CN_R
|
||||||
Algorithm::CN_2, // CN_WOW
|
|
||||||
Algorithm::CN_1, // CN_FAST
|
Algorithm::CN_1, // CN_FAST
|
||||||
Algorithm::CN_2, // CN_HALF
|
Algorithm::CN_2, // CN_HALF
|
||||||
Algorithm::CN_0, // CN_XAO
|
Algorithm::CN_0, // CN_XAO
|
||||||
|
|
|
@ -216,7 +216,6 @@ xmrig::CnHash::CnHash()
|
||||||
ADD_FN(Algorithm::CN_1);
|
ADD_FN(Algorithm::CN_1);
|
||||||
ADD_FN(Algorithm::CN_2);
|
ADD_FN(Algorithm::CN_2);
|
||||||
ADD_FN(Algorithm::CN_R);
|
ADD_FN(Algorithm::CN_R);
|
||||||
ADD_FN(Algorithm::CN_WOW);
|
|
||||||
ADD_FN(Algorithm::CN_FAST);
|
ADD_FN(Algorithm::CN_FAST);
|
||||||
ADD_FN(Algorithm::CN_HALF);
|
ADD_FN(Algorithm::CN_HALF);
|
||||||
ADD_FN(Algorithm::CN_XAO);
|
ADD_FN(Algorithm::CN_XAO);
|
||||||
|
@ -228,7 +227,6 @@ xmrig::CnHash::CnHash()
|
||||||
ADD_FN_ASM(Algorithm::CN_2);
|
ADD_FN_ASM(Algorithm::CN_2);
|
||||||
ADD_FN_ASM(Algorithm::CN_HALF);
|
ADD_FN_ASM(Algorithm::CN_HALF);
|
||||||
ADD_FN_ASM(Algorithm::CN_R);
|
ADD_FN_ASM(Algorithm::CN_R);
|
||||||
ADD_FN_ASM(Algorithm::CN_WOW);
|
|
||||||
ADD_FN_ASM(Algorithm::CN_RWZ);
|
ADD_FN_ASM(Algorithm::CN_RWZ);
|
||||||
ADD_FN_ASM(Algorithm::CN_ZLS);
|
ADD_FN_ASM(Algorithm::CN_ZLS);
|
||||||
ADD_FN_ASM(Algorithm::CN_DOUBLE);
|
ADD_FN_ASM(Algorithm::CN_DOUBLE);
|
||||||
|
|
|
@ -84,21 +84,6 @@ const static cn_r_test_input_data cn_r_test_input[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// "cn/wow"
|
|
||||||
const static uint8_t test_output_wow[] = {
|
|
||||||
0x9d, 0x47, 0xbf, 0x4c, 0x41, 0xb7, 0xe8, 0xe7, 0x27, 0xe6, 0x81, 0x71, 0x5a, 0xcb, 0x47, 0xfa, 0x16, 0x77, 0xcd, 0xba, 0x9c, 0xa7, 0xbc, 0xb0, 0x5a, 0xd8, 0xcc, 0x8a, 0xbd, 0x5d, 0xaa, 0x66,
|
|
||||||
0x0d, 0x4a, 0x49, 0x5c, 0xb8, 0x44, 0xa3, 0xca, 0x8b, 0xa4, 0xed, 0xb8, 0xe6, 0xbc, 0xf8, 0x29, 0xef, 0x1c, 0x06, 0xd9, 0xcd, 0xea, 0x2b, 0x62, 0xca, 0x46, 0xc2, 0xa2, 0x1b, 0x8b, 0x0a, 0x79,
|
|
||||||
0xa1, 0xd6, 0xd8, 0x48, 0xb5, 0xc5, 0x91, 0x5f, 0xcc, 0xd2, 0xf6, 0x4c, 0xf2, 0x16, 0xc6, 0xb1, 0xa0, 0x2c, 0xf7, 0xc7, 0x7b, 0xc8, 0x0d, 0x8d, 0x4e, 0x51, 0xb4, 0x19, 0xe8, 0x8f, 0xf0, 0xdd,
|
|
||||||
0xaf, 0x3a, 0x85, 0x44, 0xa0, 0x22, 0x1a, 0x14, 0x8c, 0x2a, 0xc9, 0x04, 0x84, 0xb1, 0x98, 0x61, 0xe3, 0xaf, 0xca, 0x33, 0xfe, 0x17, 0x02, 0x1e, 0xfb, 0x8a, 0xd6, 0x49, 0x6b, 0x56, 0x79, 0x15,
|
|
||||||
0x31, 0x33, 0x99, 0xe0, 0x96, 0x3a, 0xe8, 0xa9, 0x9d, 0xab, 0x8a, 0xf6, 0x6d, 0x34, 0x3e, 0x09, 0x7d, 0xae, 0x0c, 0x0f, 0xeb, 0x08, 0xdb, 0xc4, 0x3c, 0xcd, 0xaf, 0xef, 0x55, 0x15, 0xf4, 0x13,
|
|
||||||
0x60, 0x21, 0xc6, 0xef, 0x90, 0xbf, 0xf9, 0xae, 0x94, 0xa7, 0x50, 0x6d, 0x62, 0x3d, 0x3a, 0x7a, 0x86, 0xc1, 0x75, 0x6d, 0x65, 0x5f, 0x50, 0xdd, 0x55, 0x8f, 0x71, 0x6d, 0x64, 0x62, 0x2a, 0x34,
|
|
||||||
0x2b, 0x13, 0x00, 0x05, 0x35, 0xf3, 0xdb, 0x5f, 0x9b, 0x9b, 0x84, 0xa6, 0x5c, 0x43, 0x51, 0xf3, 0x86, 0xcd, 0x2c, 0xde, 0xde, 0xbb, 0x8c, 0x3a, 0xd2, 0xea, 0xb0, 0x86, 0xe6, 0xa3, 0xfe, 0xe5,
|
|
||||||
0xfc, 0x0e, 0x1d, 0xad, 0x8e, 0x89, 0x57, 0x49, 0xdc, 0x90, 0xeb, 0x69, 0x0b, 0xc1, 0xba, 0x05, 0x9a, 0x1c, 0xd7, 0x72, 0xaf, 0xaa, 0xf6, 0x5a, 0x10, 0x6b, 0xf9, 0xe5, 0xe6, 0xb8, 0x05, 0x03,
|
|
||||||
0xb6, 0x0b, 0x0a, 0xfe, 0x14, 0x4d, 0xef, 0xf7, 0xd9, 0x03, 0xed, 0x2d, 0x55, 0x45, 0xe7, 0x7e, 0xbe, 0x66, 0xa3, 0xc5, 0x1f, 0xee, 0x70, 0x16, 0xee, 0xb8, 0xfe, 0xe9, 0xeb, 0x63, 0x0c, 0x0f,
|
|
||||||
0x64, 0x77, 0x4b, 0x27, 0xe7, 0xd5, 0xfe, 0xc8, 0x62, 0xfc, 0x4c, 0x0c, 0x13, 0xac, 0x6b, 0xf0, 0x91, 0x23, 0xb6, 0xf0, 0x5b, 0xb0, 0xe4, 0xb7, 0x5c, 0x97, 0xf3, 0x79, 0xa2, 0xb3, 0xa6, 0x79,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// "cn/r"
|
// "cn/r"
|
||||||
const static uint8_t test_output_r[] = {
|
const static uint8_t test_output_r[] = {
|
||||||
0xf7, 0x59, 0x58, 0x8a, 0xd5, 0x7e, 0x75, 0x84, 0x67, 0x29, 0x54, 0x43, 0xa9, 0xbd, 0x71, 0x49, 0x0a, 0xbf, 0xf8, 0xe9, 0xda, 0xd1, 0xb9, 0x5b, 0x6b, 0xf2, 0xf5, 0xd0, 0xd7, 0x83, 0x87, 0xbc,
|
0xf7, 0x59, 0x58, 0x8a, 0xd5, 0x7e, 0x75, 0x84, 0x67, 0x29, 0x54, 0x43, 0xa9, 0xbd, 0x71, 0x49, 0x0a, 0xbf, 0xf8, 0xe9, 0xda, 0xd1, 0xb9, 0x5b, 0x6b, 0xf2, 0xf5, 0xd0, 0xd7, 0x83, 0x87, 0xbc,
|
||||||
|
|
|
@ -514,7 +514,6 @@ static inline __m128i int_sqrt_v2(const uint64_t n0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wow_soft_aes_compile_code(const V4_Instruction *code, int code_size, void *machine_code, xmrig::Assembly ASM);
|
|
||||||
void v4_soft_aes_compile_code(const V4_Instruction *code, int code_size, void *machine_code, xmrig::Assembly ASM);
|
void v4_soft_aes_compile_code(const V4_Instruction *code, int code_size, void *machine_code, xmrig::Assembly ASM);
|
||||||
|
|
||||||
|
|
||||||
|
@ -576,10 +575,7 @@ inline void cryptonight_single_hash(const uint8_t *__restrict__ input, size_t si
|
||||||
V4_Instruction code[256];
|
V4_Instruction code[256];
|
||||||
const int code_size = v4_random_math_init<ALGO>(code, height);
|
const int code_size = v4_random_math_init<ALGO>(code, height);
|
||||||
|
|
||||||
if (ALGO == Algorithm::CN_WOW) {
|
if (ALGO == Algorithm::CN_R) {
|
||||||
wow_soft_aes_compile_code(code, code_size, reinterpret_cast<void*>(ctx[0]->generated_code), Assembly::NONE);
|
|
||||||
}
|
|
||||||
else if (ALGO == Algorithm::CN_R) {
|
|
||||||
v4_soft_aes_compile_code(code, code_size, reinterpret_cast<void*>(ctx[0]->generated_code), Assembly::NONE);
|
v4_soft_aes_compile_code(code, code_size, reinterpret_cast<void*>(ctx[0]->generated_code), Assembly::NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -812,9 +808,7 @@ extern cn_mainloop_fun cn_double_double_mainloop_sandybridge_asm;
|
||||||
} // namespace xmrig
|
} // namespace xmrig
|
||||||
|
|
||||||
|
|
||||||
void wow_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM);
|
|
||||||
void v4_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM);
|
void v4_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM);
|
||||||
void wow_compile_code_double(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM);
|
|
||||||
void v4_compile_code_double(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM);
|
void v4_compile_code_double(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM);
|
||||||
|
|
||||||
|
|
||||||
|
@ -832,20 +826,6 @@ void cn_r_compile_code_double(const V4_Instruction* code, int code_size, void* m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void cn_r_compile_code<xmrig::Algorithm::CN_WOW>(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
|
||||||
{
|
|
||||||
wow_compile_code(code, code_size, machine_code, ASM);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void cn_r_compile_code_double<xmrig::Algorithm::CN_WOW>(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
|
||||||
{
|
|
||||||
wow_compile_code_double(code, code_size, machine_code, ASM);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
namespace xmrig {
|
namespace xmrig {
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -529,9 +529,7 @@ PUBLIC FN_PREFIX(CryptonightR_instruction_mov254)
|
||||||
PUBLIC FN_PREFIX(CryptonightR_instruction_mov255)
|
PUBLIC FN_PREFIX(CryptonightR_instruction_mov255)
|
||||||
PUBLIC FN_PREFIX(CryptonightR_instruction_mov256)
|
PUBLIC FN_PREFIX(CryptonightR_instruction_mov256)
|
||||||
|
|
||||||
#include "CryptonightWOW_template.inc"
|
|
||||||
#include "CryptonightR_template.inc"
|
#include "CryptonightR_template.inc"
|
||||||
#include "CryptonightWOW_soft_aes_template.inc"
|
|
||||||
#include "CryptonightR_soft_aes_template.inc"
|
#include "CryptonightR_soft_aes_template.inc"
|
||||||
|
|
||||||
FN_PREFIX(CryptonightR_instruction0):
|
FN_PREFIX(CryptonightR_instruction0):
|
||||||
|
|
|
@ -516,9 +516,7 @@ PUBLIC CryptonightR_instruction_mov254
|
||||||
PUBLIC CryptonightR_instruction_mov255
|
PUBLIC CryptonightR_instruction_mov255
|
||||||
PUBLIC CryptonightR_instruction_mov256
|
PUBLIC CryptonightR_instruction_mov256
|
||||||
|
|
||||||
INCLUDE CryptonightWOW_template_win.inc
|
|
||||||
INCLUDE CryptonightR_template_win.inc
|
INCLUDE CryptonightR_template_win.inc
|
||||||
INCLUDE CryptonightWOW_soft_aes_template_win.inc
|
|
||||||
INCLUDE CryptonightR_soft_aes_template_win.inc
|
INCLUDE CryptonightR_soft_aes_template_win.inc
|
||||||
|
|
||||||
CryptonightR_instruction0:
|
CryptonightR_instruction0:
|
||||||
|
|
|
@ -2,18 +2,6 @@
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
void CryptonightWOW_template_part1();
|
|
||||||
void CryptonightWOW_template_mainloop();
|
|
||||||
void CryptonightWOW_template_part2();
|
|
||||||
void CryptonightWOW_template_part3();
|
|
||||||
void CryptonightWOW_template_end();
|
|
||||||
void CryptonightWOW_template_double_part1();
|
|
||||||
void CryptonightWOW_template_double_mainloop();
|
|
||||||
void CryptonightWOW_template_double_part2();
|
|
||||||
void CryptonightWOW_template_double_part3();
|
|
||||||
void CryptonightWOW_template_double_part4();
|
|
||||||
void CryptonightWOW_template_double_end();
|
|
||||||
|
|
||||||
void CryptonightR_template_part1();
|
void CryptonightR_template_part1();
|
||||||
void CryptonightR_template_mainloop();
|
void CryptonightR_template_mainloop();
|
||||||
void CryptonightR_template_part2();
|
void CryptonightR_template_part2();
|
||||||
|
@ -26,18 +14,6 @@ extern "C"
|
||||||
void CryptonightR_template_double_part4();
|
void CryptonightR_template_double_part4();
|
||||||
void CryptonightR_template_double_end();
|
void CryptonightR_template_double_end();
|
||||||
|
|
||||||
void CryptonightWOW_soft_aes_template_part1();
|
|
||||||
void CryptonightWOW_soft_aes_template_mainloop();
|
|
||||||
void CryptonightWOW_soft_aes_template_part2();
|
|
||||||
void CryptonightWOW_soft_aes_template_part3();
|
|
||||||
void CryptonightWOW_soft_aes_template_end();
|
|
||||||
void CryptonightWOW_soft_aes_template_double_part1();
|
|
||||||
void CryptonightWOW_soft_aes_template_double_mainloop();
|
|
||||||
void CryptonightWOW_soft_aes_template_double_part2();
|
|
||||||
void CryptonightWOW_soft_aes_template_double_part3();
|
|
||||||
void CryptonightWOW_soft_aes_template_double_part4();
|
|
||||||
void CryptonightWOW_soft_aes_template_double_end();
|
|
||||||
|
|
||||||
void CryptonightR_soft_aes_template_part1();
|
void CryptonightR_soft_aes_template_part1();
|
||||||
void CryptonightR_soft_aes_template_mainloop();
|
void CryptonightR_soft_aes_template_mainloop();
|
||||||
void CryptonightR_soft_aes_template_part2();
|
void CryptonightR_soft_aes_template_part2();
|
||||||
|
|
|
@ -1,268 +0,0 @@
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_soft_aes_template_part1)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_soft_aes_template_mainloop)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_soft_aes_template_part2)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_soft_aes_template_part3)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_soft_aes_template_end)
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
FN_PREFIX(CryptonightWOW_soft_aes_template_part1):
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+8], rcx
|
|
||||||
push rbx
|
|
||||||
push rbp
|
|
||||||
push rsi
|
|
||||||
push rdi
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
sub rsp, 232
|
|
||||||
|
|
||||||
mov eax, [rcx+96]
|
|
||||||
mov ebx, [rcx+100]
|
|
||||||
mov esi, [rcx+104]
|
|
||||||
mov edx, [rcx+108]
|
|
||||||
mov [rsp+144], eax
|
|
||||||
mov [rsp+148], ebx
|
|
||||||
mov [rsp+152], esi
|
|
||||||
mov [rsp+156], edx
|
|
||||||
|
|
||||||
mov rax, QWORD PTR [rcx+48]
|
|
||||||
mov r10, rcx
|
|
||||||
xor rax, QWORD PTR [rcx+16]
|
|
||||||
mov r8, QWORD PTR [rcx+32]
|
|
||||||
xor r8, QWORD PTR [rcx]
|
|
||||||
mov r9, QWORD PTR [rcx+40]
|
|
||||||
xor r9, QWORD PTR [rcx+8]
|
|
||||||
movq xmm4, rax
|
|
||||||
mov rdx, QWORD PTR [rcx+56]
|
|
||||||
xor rdx, QWORD PTR [rcx+24]
|
|
||||||
mov r11, QWORD PTR [rcx+224]
|
|
||||||
mov rcx, QWORD PTR [rcx+88]
|
|
||||||
xor rcx, QWORD PTR [r10+72]
|
|
||||||
mov rax, QWORD PTR [r10+80]
|
|
||||||
movq xmm0, rdx
|
|
||||||
xor rax, QWORD PTR [r10+64]
|
|
||||||
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm6
|
|
||||||
movaps XMMWORD PTR [rsp+32], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+48], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp+64], xmm9
|
|
||||||
movaps XMMWORD PTR [rsp+80], xmm10
|
|
||||||
movaps XMMWORD PTR [rsp+96], xmm11
|
|
||||||
movaps XMMWORD PTR [rsp+112], xmm12
|
|
||||||
movaps XMMWORD PTR [rsp+128], xmm13
|
|
||||||
|
|
||||||
movq xmm5, rax
|
|
||||||
|
|
||||||
mov rax, r8
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
and eax, 2097136
|
|
||||||
movq xmm10, QWORD PTR [r10+96]
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [r10+104]
|
|
||||||
xorps xmm9, xmm9
|
|
||||||
mov QWORD PTR [rsp+328], rax
|
|
||||||
movq xmm12, r11
|
|
||||||
mov QWORD PTR [rsp+320], r9
|
|
||||||
punpcklqdq xmm5, xmm0
|
|
||||||
movq xmm13, rcx
|
|
||||||
mov r12d, 524288
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
FN_PREFIX(CryptonightWOW_soft_aes_template_mainloop):
|
|
||||||
movd xmm11, r12d
|
|
||||||
mov r12, QWORD PTR [r10+272]
|
|
||||||
lea r13, QWORD PTR [rax+r11]
|
|
||||||
mov esi, DWORD PTR [r13]
|
|
||||||
movq xmm0, r9
|
|
||||||
mov r10d, DWORD PTR [r13+4]
|
|
||||||
movq xmm7, r8
|
|
||||||
mov ebp, DWORD PTR [r13+12]
|
|
||||||
mov r14d, DWORD PTR [r13+8]
|
|
||||||
mov rdx, QWORD PTR [rsp+328]
|
|
||||||
movzx ecx, sil
|
|
||||||
shr esi, 8
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
mov r15d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
mov edi, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r14b
|
|
||||||
shr r14d, 8
|
|
||||||
mov ebx, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, bpl
|
|
||||||
shr ebp, 8
|
|
||||||
mov r9d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
xor r15d, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
movzx ecx, r14b
|
|
||||||
shr r14d, 8
|
|
||||||
mov eax, r14d
|
|
||||||
shr eax, 8
|
|
||||||
xor edi, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
add eax, 256
|
|
||||||
movzx ecx, bpl
|
|
||||||
shr ebp, 8
|
|
||||||
xor ebx, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
movzx ecx, sil
|
|
||||||
shr esi, 8
|
|
||||||
xor r9d, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
add r12, 2048
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
add r10d, 256
|
|
||||||
mov r11d, DWORD PTR [r12+rax*4]
|
|
||||||
xor r11d, DWORD PTR [r12+rcx*4]
|
|
||||||
xor r11d, r9d
|
|
||||||
movzx ecx, sil
|
|
||||||
mov r10d, DWORD PTR [r12+r10*4]
|
|
||||||
shr esi, 8
|
|
||||||
add esi, 256
|
|
||||||
xor r10d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, bpl
|
|
||||||
xor r10d, ebx
|
|
||||||
shr ebp, 8
|
|
||||||
movd xmm1, r11d
|
|
||||||
add ebp, 256
|
|
||||||
movq r11, xmm12
|
|
||||||
mov r9d, DWORD PTR [r12+rcx*4]
|
|
||||||
xor r9d, DWORD PTR [r12+rsi*4]
|
|
||||||
mov eax, DWORD PTR [r12+rbp*4]
|
|
||||||
xor r9d, edi
|
|
||||||
movzx ecx, r14b
|
|
||||||
movd xmm0, r10d
|
|
||||||
movd xmm2, r9d
|
|
||||||
xor eax, DWORD PTR [r12+rcx*4]
|
|
||||||
mov rcx, rdx
|
|
||||||
xor eax, r15d
|
|
||||||
punpckldq xmm2, xmm1
|
|
||||||
xor rcx, 16
|
|
||||||
movd xmm6, eax
|
|
||||||
mov rax, rdx
|
|
||||||
punpckldq xmm6, xmm0
|
|
||||||
xor rax, 32
|
|
||||||
punpckldq xmm6, xmm2
|
|
||||||
xor rdx, 48
|
|
||||||
movdqu xmm2, XMMWORD PTR [rcx+r11]
|
|
||||||
pxor xmm6, xmm7
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
movdqu xmm1, XMMWORD PTR [rax+r11]
|
|
||||||
movdqu xmm0, XMMWORD PTR [rdx+r11]
|
|
||||||
paddq xmm0, xmm5
|
|
||||||
movdqu XMMWORD PTR [rcx+r11], xmm0
|
|
||||||
movdqu XMMWORD PTR [rax+r11], xmm2
|
|
||||||
movq rcx, xmm13
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movdqu XMMWORD PTR [rdx+r11], xmm1
|
|
||||||
movq rdi, xmm6
|
|
||||||
mov r10, rdi
|
|
||||||
and r10d, 2097136
|
|
||||||
movdqa xmm0, xmm6
|
|
||||||
pxor xmm0, xmm4
|
|
||||||
movdqu XMMWORD PTR [r13], xmm0
|
|
||||||
|
|
||||||
mov ebx, [rsp+144]
|
|
||||||
mov ebp, [rsp+152]
|
|
||||||
add ebx, [rsp+148]
|
|
||||||
add ebp, [rsp+156]
|
|
||||||
shl rbp, 32
|
|
||||||
or rbx, rbp
|
|
||||||
|
|
||||||
xor rbx, QWORD PTR [r10+r11]
|
|
||||||
lea r14, QWORD PTR [r10+r11]
|
|
||||||
mov rbp, QWORD PTR [r14+8]
|
|
||||||
|
|
||||||
mov [rsp+160], rbx
|
|
||||||
mov [rsp+168], rdi
|
|
||||||
mov [rsp+176], rbp
|
|
||||||
mov [rsp+184], r10
|
|
||||||
mov r10, rsp
|
|
||||||
|
|
||||||
mov ebx, [rsp+144]
|
|
||||||
mov esi, [rsp+148]
|
|
||||||
mov edi, [rsp+152]
|
|
||||||
mov ebp, [rsp+156]
|
|
||||||
|
|
||||||
movd esp, xmm7
|
|
||||||
movaps xmm0, xmm7
|
|
||||||
psrldq xmm0, 8
|
|
||||||
movd r15d, xmm0
|
|
||||||
movd eax, xmm4
|
|
||||||
movd edx, xmm5
|
|
||||||
|
|
||||||
FN_PREFIX(CryptonightWOW_soft_aes_template_part2):
|
|
||||||
mov rsp, r10
|
|
||||||
mov [rsp+144], ebx
|
|
||||||
mov [rsp+148], esi
|
|
||||||
mov [rsp+152], edi
|
|
||||||
mov [rsp+156], ebp
|
|
||||||
|
|
||||||
mov rbx, [rsp+160]
|
|
||||||
mov rdi, [rsp+168]
|
|
||||||
mov rbp, [rsp+176]
|
|
||||||
mov r10, [rsp+184]
|
|
||||||
|
|
||||||
mov r9, r10
|
|
||||||
xor r9, 16
|
|
||||||
mov rcx, r10
|
|
||||||
xor rcx, 32
|
|
||||||
xor r10, 48
|
|
||||||
mov rax, rbx
|
|
||||||
mul rdi
|
|
||||||
movdqu xmm2, XMMWORD PTR [r9+r11]
|
|
||||||
movdqu xmm1, XMMWORD PTR [rcx+r11]
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movq xmm0, rax
|
|
||||||
movq xmm3, rdx
|
|
||||||
xor rax, QWORD PTR [r11+rcx+8]
|
|
||||||
xor rdx, QWORD PTR [rcx+r11]
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
add r8, rdx
|
|
||||||
movdqu xmm0, XMMWORD PTR [r10+r11]
|
|
||||||
pxor xmm2, xmm3
|
|
||||||
paddq xmm0, xmm5
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm0
|
|
||||||
movdqa xmm5, xmm4
|
|
||||||
mov r9, QWORD PTR [rsp+320]
|
|
||||||
movdqa xmm4, xmm6
|
|
||||||
add r9, rax
|
|
||||||
movdqu XMMWORD PTR [rcx+r11], xmm2
|
|
||||||
movdqu XMMWORD PTR [r10+r11], xmm1
|
|
||||||
mov r10, QWORD PTR [rsp+304]
|
|
||||||
movd r12d, xmm11
|
|
||||||
mov QWORD PTR [r14], r8
|
|
||||||
xor r8, rbx
|
|
||||||
mov rax, r8
|
|
||||||
mov QWORD PTR [r14+8], r9
|
|
||||||
and eax, 2097136
|
|
||||||
xor r9, rbp
|
|
||||||
mov QWORD PTR [rsp+320], r9
|
|
||||||
mov QWORD PTR [rsp+328], rax
|
|
||||||
sub r12d, 1
|
|
||||||
jne FN_PREFIX(CryptonightWOW_soft_aes_template_mainloop)
|
|
||||||
|
|
||||||
FN_PREFIX(CryptonightWOW_soft_aes_template_part3):
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+16]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+32]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+48]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp+64]
|
|
||||||
movaps xmm10, XMMWORD PTR [rsp+80]
|
|
||||||
movaps xmm11, XMMWORD PTR [rsp+96]
|
|
||||||
movaps xmm12, XMMWORD PTR [rsp+112]
|
|
||||||
movaps xmm13, XMMWORD PTR [rsp+128]
|
|
||||||
|
|
||||||
add rsp, 232
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop rdi
|
|
||||||
pop rsi
|
|
||||||
pop rbp
|
|
||||||
pop rbx
|
|
||||||
ret
|
|
||||||
FN_PREFIX(CryptonightWOW_soft_aes_template_end):
|
|
|
@ -1,268 +0,0 @@
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_part1
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_mainloop
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_part2
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_part3
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_end
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_soft_aes_template_part1:
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+8], rcx
|
|
||||||
push rbx
|
|
||||||
push rbp
|
|
||||||
push rsi
|
|
||||||
push rdi
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
sub rsp, 232
|
|
||||||
|
|
||||||
mov eax, [rcx+96]
|
|
||||||
mov ebx, [rcx+100]
|
|
||||||
mov esi, [rcx+104]
|
|
||||||
mov edx, [rcx+108]
|
|
||||||
mov [rsp+144], eax
|
|
||||||
mov [rsp+148], ebx
|
|
||||||
mov [rsp+152], esi
|
|
||||||
mov [rsp+156], edx
|
|
||||||
|
|
||||||
mov rax, QWORD PTR [rcx+48]
|
|
||||||
mov r10, rcx
|
|
||||||
xor rax, QWORD PTR [rcx+16]
|
|
||||||
mov r8, QWORD PTR [rcx+32]
|
|
||||||
xor r8, QWORD PTR [rcx]
|
|
||||||
mov r9, QWORD PTR [rcx+40]
|
|
||||||
xor r9, QWORD PTR [rcx+8]
|
|
||||||
movq xmm4, rax
|
|
||||||
mov rdx, QWORD PTR [rcx+56]
|
|
||||||
xor rdx, QWORD PTR [rcx+24]
|
|
||||||
mov r11, QWORD PTR [rcx+224]
|
|
||||||
mov rcx, QWORD PTR [rcx+88]
|
|
||||||
xor rcx, QWORD PTR [r10+72]
|
|
||||||
mov rax, QWORD PTR [r10+80]
|
|
||||||
movq xmm0, rdx
|
|
||||||
xor rax, QWORD PTR [r10+64]
|
|
||||||
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm6
|
|
||||||
movaps XMMWORD PTR [rsp+32], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+48], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp+64], xmm9
|
|
||||||
movaps XMMWORD PTR [rsp+80], xmm10
|
|
||||||
movaps XMMWORD PTR [rsp+96], xmm11
|
|
||||||
movaps XMMWORD PTR [rsp+112], xmm12
|
|
||||||
movaps XMMWORD PTR [rsp+128], xmm13
|
|
||||||
|
|
||||||
movq xmm5, rax
|
|
||||||
|
|
||||||
mov rax, r8
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
and eax, 2097136
|
|
||||||
movq xmm10, QWORD PTR [r10+96]
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [r10+104]
|
|
||||||
xorps xmm9, xmm9
|
|
||||||
mov QWORD PTR [rsp+328], rax
|
|
||||||
movq xmm12, r11
|
|
||||||
mov QWORD PTR [rsp+320], r9
|
|
||||||
punpcklqdq xmm5, xmm0
|
|
||||||
movq xmm13, rcx
|
|
||||||
mov r12d, 524288
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_soft_aes_template_mainloop:
|
|
||||||
movd xmm11, r12d
|
|
||||||
mov r12, QWORD PTR [r10+272]
|
|
||||||
lea r13, QWORD PTR [rax+r11]
|
|
||||||
mov esi, DWORD PTR [r13]
|
|
||||||
movq xmm0, r9
|
|
||||||
mov r10d, DWORD PTR [r13+4]
|
|
||||||
movq xmm7, r8
|
|
||||||
mov ebp, DWORD PTR [r13+12]
|
|
||||||
mov r14d, DWORD PTR [r13+8]
|
|
||||||
mov rdx, QWORD PTR [rsp+328]
|
|
||||||
movzx ecx, sil
|
|
||||||
shr esi, 8
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
mov r15d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
mov edi, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r14b
|
|
||||||
shr r14d, 8
|
|
||||||
mov ebx, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, bpl
|
|
||||||
shr ebp, 8
|
|
||||||
mov r9d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
xor r15d, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
movzx ecx, r14b
|
|
||||||
shr r14d, 8
|
|
||||||
mov eax, r14d
|
|
||||||
shr eax, 8
|
|
||||||
xor edi, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
add eax, 256
|
|
||||||
movzx ecx, bpl
|
|
||||||
shr ebp, 8
|
|
||||||
xor ebx, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
movzx ecx, sil
|
|
||||||
shr esi, 8
|
|
||||||
xor r9d, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
add r12, 2048
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
add r10d, 256
|
|
||||||
mov r11d, DWORD PTR [r12+rax*4]
|
|
||||||
xor r11d, DWORD PTR [r12+rcx*4]
|
|
||||||
xor r11d, r9d
|
|
||||||
movzx ecx, sil
|
|
||||||
mov r10d, DWORD PTR [r12+r10*4]
|
|
||||||
shr esi, 8
|
|
||||||
add esi, 256
|
|
||||||
xor r10d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, bpl
|
|
||||||
xor r10d, ebx
|
|
||||||
shr ebp, 8
|
|
||||||
movd xmm1, r11d
|
|
||||||
add ebp, 256
|
|
||||||
movq r11, xmm12
|
|
||||||
mov r9d, DWORD PTR [r12+rcx*4]
|
|
||||||
xor r9d, DWORD PTR [r12+rsi*4]
|
|
||||||
mov eax, DWORD PTR [r12+rbp*4]
|
|
||||||
xor r9d, edi
|
|
||||||
movzx ecx, r14b
|
|
||||||
movd xmm0, r10d
|
|
||||||
movd xmm2, r9d
|
|
||||||
xor eax, DWORD PTR [r12+rcx*4]
|
|
||||||
mov rcx, rdx
|
|
||||||
xor eax, r15d
|
|
||||||
punpckldq xmm2, xmm1
|
|
||||||
xor rcx, 16
|
|
||||||
movd xmm6, eax
|
|
||||||
mov rax, rdx
|
|
||||||
punpckldq xmm6, xmm0
|
|
||||||
xor rax, 32
|
|
||||||
punpckldq xmm6, xmm2
|
|
||||||
xor rdx, 48
|
|
||||||
movdqu xmm2, XMMWORD PTR [rcx+r11]
|
|
||||||
pxor xmm6, xmm7
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
movdqu xmm1, XMMWORD PTR [rax+r11]
|
|
||||||
movdqu xmm0, XMMWORD PTR [rdx+r11]
|
|
||||||
paddq xmm0, xmm5
|
|
||||||
movdqu XMMWORD PTR [rcx+r11], xmm0
|
|
||||||
movdqu XMMWORD PTR [rax+r11], xmm2
|
|
||||||
movq rcx, xmm13
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movdqu XMMWORD PTR [rdx+r11], xmm1
|
|
||||||
movq rdi, xmm6
|
|
||||||
mov r10, rdi
|
|
||||||
and r10d, 2097136
|
|
||||||
movdqa xmm0, xmm6
|
|
||||||
pxor xmm0, xmm4
|
|
||||||
movdqu XMMWORD PTR [r13], xmm0
|
|
||||||
|
|
||||||
mov ebx, [rsp+144]
|
|
||||||
mov ebp, [rsp+152]
|
|
||||||
add ebx, [rsp+148]
|
|
||||||
add ebp, [rsp+156]
|
|
||||||
shl rbp, 32
|
|
||||||
or rbx, rbp
|
|
||||||
|
|
||||||
xor rbx, QWORD PTR [r10+r11]
|
|
||||||
lea r14, QWORD PTR [r10+r11]
|
|
||||||
mov rbp, QWORD PTR [r14+8]
|
|
||||||
|
|
||||||
mov [rsp+160], rbx
|
|
||||||
mov [rsp+168], rdi
|
|
||||||
mov [rsp+176], rbp
|
|
||||||
mov [rsp+184], r10
|
|
||||||
mov r10, rsp
|
|
||||||
|
|
||||||
mov ebx, [rsp+144]
|
|
||||||
mov esi, [rsp+148]
|
|
||||||
mov edi, [rsp+152]
|
|
||||||
mov ebp, [rsp+156]
|
|
||||||
|
|
||||||
movd esp, xmm7
|
|
||||||
movaps xmm0, xmm7
|
|
||||||
psrldq xmm0, 8
|
|
||||||
movd r15d, xmm0
|
|
||||||
movd eax, xmm4
|
|
||||||
movd edx, xmm5
|
|
||||||
|
|
||||||
CryptonightWOW_soft_aes_template_part2:
|
|
||||||
mov rsp, r10
|
|
||||||
mov [rsp+144], ebx
|
|
||||||
mov [rsp+148], esi
|
|
||||||
mov [rsp+152], edi
|
|
||||||
mov [rsp+156], ebp
|
|
||||||
|
|
||||||
mov rbx, [rsp+160]
|
|
||||||
mov rdi, [rsp+168]
|
|
||||||
mov rbp, [rsp+176]
|
|
||||||
mov r10, [rsp+184]
|
|
||||||
|
|
||||||
mov r9, r10
|
|
||||||
xor r9, 16
|
|
||||||
mov rcx, r10
|
|
||||||
xor rcx, 32
|
|
||||||
xor r10, 48
|
|
||||||
mov rax, rbx
|
|
||||||
mul rdi
|
|
||||||
movdqu xmm2, XMMWORD PTR [r9+r11]
|
|
||||||
movdqu xmm1, XMMWORD PTR [rcx+r11]
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movq xmm0, rax
|
|
||||||
movq xmm3, rdx
|
|
||||||
xor rax, QWORD PTR [r11+rcx+8]
|
|
||||||
xor rdx, QWORD PTR [rcx+r11]
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
add r8, rdx
|
|
||||||
movdqu xmm0, XMMWORD PTR [r10+r11]
|
|
||||||
pxor xmm2, xmm3
|
|
||||||
paddq xmm0, xmm5
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm0
|
|
||||||
movdqa xmm5, xmm4
|
|
||||||
mov r9, QWORD PTR [rsp+320]
|
|
||||||
movdqa xmm4, xmm6
|
|
||||||
add r9, rax
|
|
||||||
movdqu XMMWORD PTR [rcx+r11], xmm2
|
|
||||||
movdqu XMMWORD PTR [r10+r11], xmm1
|
|
||||||
mov r10, QWORD PTR [rsp+304]
|
|
||||||
movd r12d, xmm11
|
|
||||||
mov QWORD PTR [r14], r8
|
|
||||||
xor r8, rbx
|
|
||||||
mov rax, r8
|
|
||||||
mov QWORD PTR [r14+8], r9
|
|
||||||
and eax, 2097136
|
|
||||||
xor r9, rbp
|
|
||||||
mov QWORD PTR [rsp+320], r9
|
|
||||||
mov QWORD PTR [rsp+328], rax
|
|
||||||
sub r12d, 1
|
|
||||||
jne CryptonightWOW_soft_aes_template_mainloop
|
|
||||||
|
|
||||||
CryptonightWOW_soft_aes_template_part3:
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+16]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+32]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+48]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp+64]
|
|
||||||
movaps xmm10, XMMWORD PTR [rsp+80]
|
|
||||||
movaps xmm11, XMMWORD PTR [rsp+96]
|
|
||||||
movaps xmm12, XMMWORD PTR [rsp+112]
|
|
||||||
movaps xmm13, XMMWORD PTR [rsp+128]
|
|
||||||
|
|
||||||
add rsp, 232
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop rdi
|
|
||||||
pop rsi
|
|
||||||
pop rbp
|
|
||||||
pop rbx
|
|
||||||
ret
|
|
||||||
CryptonightWOW_soft_aes_template_end:
|
|
|
@ -1,491 +0,0 @@
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_part1)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_mainloop)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_part2)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_part3)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_end)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_double_part1)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_double_mainloop)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_double_part2)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_double_part3)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_double_part4)
|
|
||||||
PUBLIC FN_PREFIX(CryptonightWOW_template_double_end)
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
FN_PREFIX(CryptonightWOW_template_part1):
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+16], rbx
|
|
||||||
mov QWORD PTR [rsp+24], rbp
|
|
||||||
mov QWORD PTR [rsp+32], rsi
|
|
||||||
push r10
|
|
||||||
push r11
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
push rdi
|
|
||||||
sub rsp, 64
|
|
||||||
mov r12, rcx
|
|
||||||
mov r8, QWORD PTR [r12+32]
|
|
||||||
mov rdx, r12
|
|
||||||
xor r8, QWORD PTR [r12]
|
|
||||||
mov r15, QWORD PTR [r12+40]
|
|
||||||
mov r9, r8
|
|
||||||
xor r15, QWORD PTR [r12+8]
|
|
||||||
mov r11, QWORD PTR [r12+224]
|
|
||||||
mov r12, QWORD PTR [r12+56]
|
|
||||||
xor r12, QWORD PTR [rdx+24]
|
|
||||||
mov rax, QWORD PTR [rdx+48]
|
|
||||||
xor rax, QWORD PTR [rdx+16]
|
|
||||||
movaps XMMWORD PTR [rsp+48], xmm6
|
|
||||||
movq xmm0, r12
|
|
||||||
movaps XMMWORD PTR [rsp+32], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp], xmm9
|
|
||||||
mov r12, QWORD PTR [rdx+88]
|
|
||||||
xor r12, QWORD PTR [rdx+72]
|
|
||||||
movq xmm6, rax
|
|
||||||
mov rax, QWORD PTR [rdx+80]
|
|
||||||
xor rax, QWORD PTR [rdx+64]
|
|
||||||
punpcklqdq xmm6, xmm0
|
|
||||||
and r9d, 2097136
|
|
||||||
movq xmm0, r12
|
|
||||||
movq xmm7, rax
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
mov r10d, r9d
|
|
||||||
movq xmm9, rsp
|
|
||||||
mov rsp, r8
|
|
||||||
mov r8d, 524288
|
|
||||||
|
|
||||||
mov ebx, [rdx+96]
|
|
||||||
mov esi, [rdx+100]
|
|
||||||
mov edi, [rdx+104]
|
|
||||||
mov ebp, [rdx+108]
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
FN_PREFIX(CryptonightWOW_template_mainloop):
|
|
||||||
movdqa xmm5, XMMWORD PTR [r9+r11]
|
|
||||||
movq xmm0, r15
|
|
||||||
movq xmm4, rsp
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
lea rdx, QWORD PTR [r9+r11]
|
|
||||||
|
|
||||||
aesenc xmm5, xmm4
|
|
||||||
movd r10d, xmm5
|
|
||||||
and r10d, 2097136
|
|
||||||
|
|
||||||
mov r12d, r9d
|
|
||||||
mov eax, r9d
|
|
||||||
xor r9d, 48
|
|
||||||
xor r12d, 16
|
|
||||||
xor eax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [r9+r11]
|
|
||||||
movdqu xmm2, XMMWORD PTR [r12+r11]
|
|
||||||
movdqu xmm1, XMMWORD PTR [rax+r11]
|
|
||||||
paddq xmm0, xmm7
|
|
||||||
paddq xmm2, xmm6
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
movdqu XMMWORD PTR [r12+r11], xmm0
|
|
||||||
movq r12, xmm5
|
|
||||||
movdqu XMMWORD PTR [rax+r11], xmm2
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm1
|
|
||||||
|
|
||||||
movdqa xmm0, xmm5
|
|
||||||
pxor xmm0, xmm6
|
|
||||||
movdqu XMMWORD PTR [rdx], xmm0
|
|
||||||
|
|
||||||
lea r13d, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or r13, rdx
|
|
||||||
|
|
||||||
xor r13, QWORD PTR [r10+r11]
|
|
||||||
mov r14, QWORD PTR [r10+r11+8]
|
|
||||||
|
|
||||||
movd eax, xmm6
|
|
||||||
movd edx, xmm7
|
|
||||||
pextrd r9d, xmm7, 2
|
|
||||||
|
|
||||||
FN_PREFIX(CryptonightWOW_template_part2):
|
|
||||||
mov rax, r13
|
|
||||||
mul r12
|
|
||||||
movq xmm0, rax
|
|
||||||
movq xmm3, rdx
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
|
|
||||||
mov r9d, r10d
|
|
||||||
mov r12d, r10d
|
|
||||||
xor r9d, 16
|
|
||||||
xor r12d, 32
|
|
||||||
xor r10d, 48
|
|
||||||
movdqa xmm1, XMMWORD PTR [r12+r11]
|
|
||||||
xor rdx, QWORD PTR [r12+r11]
|
|
||||||
xor rax, QWORD PTR [r11+r12+8]
|
|
||||||
movdqa xmm2, XMMWORD PTR [r9+r11]
|
|
||||||
pxor xmm3, xmm2
|
|
||||||
paddq xmm7, XMMWORD PTR [r10+r11]
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
paddq xmm3, xmm6
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm7
|
|
||||||
movdqu XMMWORD PTR [r12+r11], xmm3
|
|
||||||
movdqu XMMWORD PTR [r10+r11], xmm1
|
|
||||||
|
|
||||||
movdqa xmm7, xmm6
|
|
||||||
add r15, rax
|
|
||||||
add rsp, rdx
|
|
||||||
xor r10, 48
|
|
||||||
mov QWORD PTR [r10+r11], rsp
|
|
||||||
xor rsp, r13
|
|
||||||
mov r9d, esp
|
|
||||||
mov QWORD PTR [r10+r11+8], r15
|
|
||||||
and r9d, 2097136
|
|
||||||
xor r15, r14
|
|
||||||
movdqa xmm6, xmm5
|
|
||||||
dec r8d
|
|
||||||
jnz FN_PREFIX(CryptonightWOW_template_mainloop)
|
|
||||||
|
|
||||||
FN_PREFIX(CryptonightWOW_template_part3):
|
|
||||||
movq rsp, xmm9
|
|
||||||
|
|
||||||
mov rbx, QWORD PTR [rsp+136]
|
|
||||||
mov rbp, QWORD PTR [rsp+144]
|
|
||||||
mov rsi, QWORD PTR [rsp+152]
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+48]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+32]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+16]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp]
|
|
||||||
add rsp, 64
|
|
||||||
pop rdi
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop r11
|
|
||||||
pop r10
|
|
||||||
ret 0
|
|
||||||
FN_PREFIX(CryptonightWOW_template_end):
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
FN_PREFIX(CryptonightWOW_template_double_part1):
|
|
||||||
mov rdx, [rcx+8]
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+24], rbx
|
|
||||||
push rbp
|
|
||||||
push rsi
|
|
||||||
push rdi
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
sub rsp, 320
|
|
||||||
mov r14, QWORD PTR [rcx+32]
|
|
||||||
mov r8, rcx
|
|
||||||
xor r14, QWORD PTR [rcx]
|
|
||||||
mov r12, QWORD PTR [rcx+40]
|
|
||||||
mov ebx, r14d
|
|
||||||
mov rsi, QWORD PTR [rcx+224]
|
|
||||||
and ebx, 2097136
|
|
||||||
xor r12, QWORD PTR [rcx+8]
|
|
||||||
mov rcx, QWORD PTR [rcx+56]
|
|
||||||
xor rcx, QWORD PTR [r8+24]
|
|
||||||
mov rax, QWORD PTR [r8+48]
|
|
||||||
xor rax, QWORD PTR [r8+16]
|
|
||||||
mov r15, QWORD PTR [rdx+32]
|
|
||||||
xor r15, QWORD PTR [rdx]
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [r8+88]
|
|
||||||
xor rcx, QWORD PTR [r8+72]
|
|
||||||
mov r13, QWORD PTR [rdx+40]
|
|
||||||
mov rdi, QWORD PTR [rdx+224]
|
|
||||||
xor r13, QWORD PTR [rdx+8]
|
|
||||||
movaps XMMWORD PTR [rsp+160], xmm6
|
|
||||||
movaps XMMWORD PTR [rsp+176], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+192], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp+208], xmm9
|
|
||||||
movaps XMMWORD PTR [rsp+224], xmm10
|
|
||||||
movaps XMMWORD PTR [rsp+240], xmm11
|
|
||||||
movaps XMMWORD PTR [rsp+256], xmm12
|
|
||||||
movaps XMMWORD PTR [rsp+272], xmm13
|
|
||||||
movaps XMMWORD PTR [rsp+288], xmm14
|
|
||||||
movaps XMMWORD PTR [rsp+304], xmm15
|
|
||||||
movq xmm7, rax
|
|
||||||
mov rax, QWORD PTR [r8+80]
|
|
||||||
xor rax, QWORD PTR [r8+64]
|
|
||||||
|
|
||||||
movaps xmm1, XMMWORD PTR [rdx+96]
|
|
||||||
movaps xmm2, XMMWORD PTR [r8+96]
|
|
||||||
movaps XMMWORD PTR [rsp], xmm1
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm2
|
|
||||||
|
|
||||||
mov r8d, r15d
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [rdx+56]
|
|
||||||
xor rcx, QWORD PTR [rdx+24]
|
|
||||||
movq xmm9, rax
|
|
||||||
mov QWORD PTR [rsp+128], rsi
|
|
||||||
mov rax, QWORD PTR [rdx+48]
|
|
||||||
xor rax, QWORD PTR [rdx+16]
|
|
||||||
punpcklqdq xmm9, xmm0
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [rdx+88]
|
|
||||||
xor rcx, QWORD PTR [rdx+72]
|
|
||||||
movq xmm8, rax
|
|
||||||
mov QWORD PTR [rsp+136], rdi
|
|
||||||
mov rax, QWORD PTR [rdx+80]
|
|
||||||
xor rax, QWORD PTR [rdx+64]
|
|
||||||
punpcklqdq xmm8, xmm0
|
|
||||||
and r8d, 2097136
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov r11d, 524288
|
|
||||||
movq xmm10, rax
|
|
||||||
punpcklqdq xmm10, xmm0
|
|
||||||
|
|
||||||
movq xmm14, QWORD PTR [rsp+128]
|
|
||||||
movq xmm15, QWORD PTR [rsp+136]
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
FN_PREFIX(CryptonightWOW_template_double_mainloop):
|
|
||||||
movdqu xmm6, XMMWORD PTR [rbx+rsi]
|
|
||||||
movq xmm0, r12
|
|
||||||
mov ecx, ebx
|
|
||||||
movq xmm3, r14
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
xor ebx, 16
|
|
||||||
aesenc xmm6, xmm3
|
|
||||||
movq rdx, xmm6
|
|
||||||
movq xmm4, r15
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbx+rsi]
|
|
||||||
xor ebx, 48
|
|
||||||
paddq xmm0, xmm7
|
|
||||||
movdqu xmm1, XMMWORD PTR [rbx+rsi]
|
|
||||||
movdqu XMMWORD PTR [rbx+rsi], xmm0
|
|
||||||
paddq xmm1, xmm3
|
|
||||||
xor ebx, 16
|
|
||||||
mov eax, ebx
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbx+rsi]
|
|
||||||
movdqu XMMWORD PTR [rbx+rsi], xmm1
|
|
||||||
paddq xmm0, xmm9
|
|
||||||
movdqu XMMWORD PTR [rax+rsi], xmm0
|
|
||||||
movdqa xmm0, xmm6
|
|
||||||
pxor xmm0, xmm7
|
|
||||||
movdqu XMMWORD PTR [rcx+rsi], xmm0
|
|
||||||
mov esi, edx
|
|
||||||
movdqu xmm5, XMMWORD PTR [r8+rdi]
|
|
||||||
and esi, 2097136
|
|
||||||
mov ecx, r8d
|
|
||||||
movq xmm0, r13
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
xor r8d, 16
|
|
||||||
aesenc xmm5, xmm4
|
|
||||||
movdqu xmm0, XMMWORD PTR [r8+rdi]
|
|
||||||
xor r8d, 48
|
|
||||||
paddq xmm0, xmm8
|
|
||||||
movdqu xmm1, XMMWORD PTR [r8+rdi]
|
|
||||||
movdqu XMMWORD PTR [r8+rdi], xmm0
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
xor r8d, 16
|
|
||||||
mov eax, r8d
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [r8+rdi]
|
|
||||||
movdqu XMMWORD PTR [r8+rdi], xmm1
|
|
||||||
paddq xmm0, xmm10
|
|
||||||
movdqu XMMWORD PTR [rax+rdi], xmm0
|
|
||||||
movdqa xmm0, xmm5
|
|
||||||
pxor xmm0, xmm8
|
|
||||||
movdqu XMMWORD PTR [rcx+rdi], xmm0
|
|
||||||
movq rdi, xmm5
|
|
||||||
movq rcx, xmm14
|
|
||||||
mov ebp, edi
|
|
||||||
mov r8, QWORD PTR [rcx+rsi]
|
|
||||||
mov r10, QWORD PTR [rcx+rsi+8]
|
|
||||||
lea r9, QWORD PTR [rcx+rsi]
|
|
||||||
xor esi, 16
|
|
||||||
|
|
||||||
movq xmm0, rsp
|
|
||||||
movq xmm1, rsi
|
|
||||||
movq xmm2, rdi
|
|
||||||
movq xmm11, rbp
|
|
||||||
movq xmm12, r15
|
|
||||||
movq xmm13, rdx
|
|
||||||
mov [rsp+104], rcx
|
|
||||||
mov [rsp+112], r9
|
|
||||||
|
|
||||||
mov ebx, DWORD PTR [rsp+16]
|
|
||||||
mov esi, DWORD PTR [rsp+20]
|
|
||||||
mov edi, DWORD PTR [rsp+24]
|
|
||||||
mov ebp, DWORD PTR [rsp+28]
|
|
||||||
|
|
||||||
lea eax, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or rax, rdx
|
|
||||||
xor r8, rax
|
|
||||||
|
|
||||||
movd esp, xmm3
|
|
||||||
pextrd r15d, xmm3, 2
|
|
||||||
movd eax, xmm7
|
|
||||||
movd edx, xmm9
|
|
||||||
pextrd r9d, xmm9, 2
|
|
||||||
|
|
||||||
FN_PREFIX(CryptonightWOW_template_double_part2):
|
|
||||||
|
|
||||||
movq rsp, xmm0
|
|
||||||
mov DWORD PTR [rsp+16], ebx
|
|
||||||
mov DWORD PTR [rsp+20], esi
|
|
||||||
mov DWORD PTR [rsp+24], edi
|
|
||||||
mov DWORD PTR [rsp+28], ebp
|
|
||||||
|
|
||||||
movq rsi, xmm1
|
|
||||||
movq rdi, xmm2
|
|
||||||
movq rbp, xmm11
|
|
||||||
movq r15, xmm12
|
|
||||||
movq rdx, xmm13
|
|
||||||
mov rcx, [rsp+104]
|
|
||||||
mov r9, [rsp+112]
|
|
||||||
|
|
||||||
mov rbx, r8
|
|
||||||
mov rax, r8
|
|
||||||
mul rdx
|
|
||||||
and ebp, 2097136
|
|
||||||
mov r8, rax
|
|
||||||
movq xmm1, rdx
|
|
||||||
movq xmm0, r8
|
|
||||||
punpcklqdq xmm1, xmm0
|
|
||||||
pxor xmm1, XMMWORD PTR [rcx+rsi]
|
|
||||||
xor esi, 48
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movdqu xmm2, XMMWORD PTR [rsi+rcx]
|
|
||||||
xor rdx, QWORD PTR [rsi+rcx]
|
|
||||||
paddq xmm2, xmm3
|
|
||||||
xor r8, QWORD PTR [rsi+rcx+8]
|
|
||||||
movdqu XMMWORD PTR [rsi+rcx], xmm1
|
|
||||||
xor esi, 16
|
|
||||||
mov eax, esi
|
|
||||||
mov rsi, rcx
|
|
||||||
movdqu xmm0, XMMWORD PTR [rax+rcx]
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm2
|
|
||||||
paddq xmm0, xmm9
|
|
||||||
add r12, r8
|
|
||||||
xor rax, 32
|
|
||||||
add r14, rdx
|
|
||||||
movdqa xmm9, xmm7
|
|
||||||
movdqa xmm7, xmm6
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm0
|
|
||||||
mov QWORD PTR [r9+8], r12
|
|
||||||
xor r12, r10
|
|
||||||
mov QWORD PTR [r9], r14
|
|
||||||
movq rcx, xmm15
|
|
||||||
xor r14, rbx
|
|
||||||
mov r10d, ebp
|
|
||||||
mov ebx, r14d
|
|
||||||
xor ebp, 16
|
|
||||||
and ebx, 2097136
|
|
||||||
mov r8, QWORD PTR [r10+rcx]
|
|
||||||
mov r9, QWORD PTR [r10+rcx+8]
|
|
||||||
|
|
||||||
movq xmm0, rsp
|
|
||||||
movq xmm1, rbx
|
|
||||||
movq xmm2, rsi
|
|
||||||
movq xmm11, rdi
|
|
||||||
movq xmm12, rbp
|
|
||||||
movq xmm13, r15
|
|
||||||
mov [rsp+104], rcx
|
|
||||||
mov [rsp+112], r9
|
|
||||||
|
|
||||||
mov ebx, DWORD PTR [rsp]
|
|
||||||
mov esi, DWORD PTR [rsp+4]
|
|
||||||
mov edi, DWORD PTR [rsp+8]
|
|
||||||
mov ebp, DWORD PTR [rsp+12]
|
|
||||||
|
|
||||||
lea eax, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or rax, rdx
|
|
||||||
|
|
||||||
xor r8, rax
|
|
||||||
movq xmm3, r8
|
|
||||||
|
|
||||||
movd esp, xmm4
|
|
||||||
pextrd r15d, xmm4, 2
|
|
||||||
movd eax, xmm8
|
|
||||||
movd edx, xmm10
|
|
||||||
pextrd r9d, xmm10, 2
|
|
||||||
|
|
||||||
FN_PREFIX(CryptonightWOW_template_double_part3):
|
|
||||||
|
|
||||||
movq rsp, xmm0
|
|
||||||
mov DWORD PTR [rsp], ebx
|
|
||||||
mov DWORD PTR [rsp+4], esi
|
|
||||||
mov DWORD PTR [rsp+8], edi
|
|
||||||
mov DWORD PTR [rsp+12], ebp
|
|
||||||
|
|
||||||
movq rbx, xmm1
|
|
||||||
movq rsi, xmm2
|
|
||||||
movq rdi, xmm11
|
|
||||||
movq rbp, xmm12
|
|
||||||
movq r15, xmm13
|
|
||||||
mov rcx, [rsp+104]
|
|
||||||
mov r9, [rsp+112]
|
|
||||||
|
|
||||||
mov rax, r8
|
|
||||||
mul rdi
|
|
||||||
movq xmm1, rdx
|
|
||||||
movq xmm0, rax
|
|
||||||
punpcklqdq xmm1, xmm0
|
|
||||||
mov rdi, rcx
|
|
||||||
mov r8, rax
|
|
||||||
pxor xmm1, XMMWORD PTR [rbp+rcx]
|
|
||||||
xor ebp, 48
|
|
||||||
paddq xmm1, xmm8
|
|
||||||
xor r8, QWORD PTR [rbp+rcx+8]
|
|
||||||
xor rdx, QWORD PTR [rbp+rcx]
|
|
||||||
add r13, r8
|
|
||||||
movdqu xmm2, XMMWORD PTR [rbp+rcx]
|
|
||||||
add r15, rdx
|
|
||||||
movdqu XMMWORD PTR [rbp+rcx], xmm1
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
xor ebp, 16
|
|
||||||
mov eax, ebp
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbp+rcx]
|
|
||||||
movdqu XMMWORD PTR [rbp+rcx], xmm2
|
|
||||||
paddq xmm0, xmm10
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm0
|
|
||||||
movq rax, xmm3
|
|
||||||
movdqa xmm10, xmm8
|
|
||||||
mov QWORD PTR [r10+rcx], r15
|
|
||||||
movdqa xmm8, xmm5
|
|
||||||
xor r15, rax
|
|
||||||
mov QWORD PTR [r10+rcx+8], r13
|
|
||||||
mov r8d, r15d
|
|
||||||
xor r13, r9
|
|
||||||
and r8d, 2097136
|
|
||||||
dec r11d
|
|
||||||
jnz FN_PREFIX(CryptonightWOW_template_double_mainloop)
|
|
||||||
|
|
||||||
FN_PREFIX(CryptonightWOW_template_double_part4):
|
|
||||||
|
|
||||||
mov rbx, QWORD PTR [rsp+400]
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+160]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+176]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+192]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp+208]
|
|
||||||
movaps xmm10, XMMWORD PTR [rsp+224]
|
|
||||||
movaps xmm11, XMMWORD PTR [rsp+240]
|
|
||||||
movaps xmm12, XMMWORD PTR [rsp+256]
|
|
||||||
movaps xmm13, XMMWORD PTR [rsp+272]
|
|
||||||
movaps xmm14, XMMWORD PTR [rsp+288]
|
|
||||||
movaps xmm15, XMMWORD PTR [rsp+304]
|
|
||||||
add rsp, 320
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop rdi
|
|
||||||
pop rsi
|
|
||||||
pop rbp
|
|
||||||
ret 0
|
|
||||||
FN_PREFIX(CryptonightWOW_template_double_end):
|
|
|
@ -1,491 +0,0 @@
|
||||||
PUBLIC CryptonightWOW_template_part1
|
|
||||||
PUBLIC CryptonightWOW_template_mainloop
|
|
||||||
PUBLIC CryptonightWOW_template_part2
|
|
||||||
PUBLIC CryptonightWOW_template_part3
|
|
||||||
PUBLIC CryptonightWOW_template_end
|
|
||||||
PUBLIC CryptonightWOW_template_double_part1
|
|
||||||
PUBLIC CryptonightWOW_template_double_mainloop
|
|
||||||
PUBLIC CryptonightWOW_template_double_part2
|
|
||||||
PUBLIC CryptonightWOW_template_double_part3
|
|
||||||
PUBLIC CryptonightWOW_template_double_part4
|
|
||||||
PUBLIC CryptonightWOW_template_double_end
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_part1:
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+16], rbx
|
|
||||||
mov QWORD PTR [rsp+24], rbp
|
|
||||||
mov QWORD PTR [rsp+32], rsi
|
|
||||||
push r10
|
|
||||||
push r11
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
push rdi
|
|
||||||
sub rsp, 64
|
|
||||||
mov r12, rcx
|
|
||||||
mov r8, QWORD PTR [r12+32]
|
|
||||||
mov rdx, r12
|
|
||||||
xor r8, QWORD PTR [r12]
|
|
||||||
mov r15, QWORD PTR [r12+40]
|
|
||||||
mov r9, r8
|
|
||||||
xor r15, QWORD PTR [r12+8]
|
|
||||||
mov r11, QWORD PTR [r12+224]
|
|
||||||
mov r12, QWORD PTR [r12+56]
|
|
||||||
xor r12, QWORD PTR [rdx+24]
|
|
||||||
mov rax, QWORD PTR [rdx+48]
|
|
||||||
xor rax, QWORD PTR [rdx+16]
|
|
||||||
movaps XMMWORD PTR [rsp+48], xmm6
|
|
||||||
movq xmm0, r12
|
|
||||||
movaps XMMWORD PTR [rsp+32], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp], xmm9
|
|
||||||
mov r12, QWORD PTR [rdx+88]
|
|
||||||
xor r12, QWORD PTR [rdx+72]
|
|
||||||
movq xmm6, rax
|
|
||||||
mov rax, QWORD PTR [rdx+80]
|
|
||||||
xor rax, QWORD PTR [rdx+64]
|
|
||||||
punpcklqdq xmm6, xmm0
|
|
||||||
and r9d, 2097136
|
|
||||||
movq xmm0, r12
|
|
||||||
movq xmm7, rax
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
mov r10d, r9d
|
|
||||||
movq xmm9, rsp
|
|
||||||
mov rsp, r8
|
|
||||||
mov r8d, 524288
|
|
||||||
|
|
||||||
mov ebx, [rdx+96]
|
|
||||||
mov esi, [rdx+100]
|
|
||||||
mov edi, [rdx+104]
|
|
||||||
mov ebp, [rdx+108]
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_mainloop:
|
|
||||||
movdqa xmm5, XMMWORD PTR [r9+r11]
|
|
||||||
movq xmm0, r15
|
|
||||||
movq xmm4, rsp
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
lea rdx, QWORD PTR [r9+r11]
|
|
||||||
|
|
||||||
aesenc xmm5, xmm4
|
|
||||||
movd r10d, xmm5
|
|
||||||
and r10d, 2097136
|
|
||||||
|
|
||||||
mov r12d, r9d
|
|
||||||
mov eax, r9d
|
|
||||||
xor r9d, 48
|
|
||||||
xor r12d, 16
|
|
||||||
xor eax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [r9+r11]
|
|
||||||
movdqu xmm2, XMMWORD PTR [r12+r11]
|
|
||||||
movdqu xmm1, XMMWORD PTR [rax+r11]
|
|
||||||
paddq xmm0, xmm7
|
|
||||||
paddq xmm2, xmm6
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
movdqu XMMWORD PTR [r12+r11], xmm0
|
|
||||||
movq r12, xmm5
|
|
||||||
movdqu XMMWORD PTR [rax+r11], xmm2
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm1
|
|
||||||
|
|
||||||
movdqa xmm0, xmm5
|
|
||||||
pxor xmm0, xmm6
|
|
||||||
movdqu XMMWORD PTR [rdx], xmm0
|
|
||||||
|
|
||||||
lea r13d, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or r13, rdx
|
|
||||||
|
|
||||||
xor r13, QWORD PTR [r10+r11]
|
|
||||||
mov r14, QWORD PTR [r10+r11+8]
|
|
||||||
|
|
||||||
movd eax, xmm6
|
|
||||||
movd edx, xmm7
|
|
||||||
pextrd r9d, xmm7, 2
|
|
||||||
|
|
||||||
CryptonightWOW_template_part2:
|
|
||||||
mov rax, r13
|
|
||||||
mul r12
|
|
||||||
movq xmm0, rax
|
|
||||||
movq xmm3, rdx
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
|
|
||||||
mov r9d, r10d
|
|
||||||
mov r12d, r10d
|
|
||||||
xor r9d, 16
|
|
||||||
xor r12d, 32
|
|
||||||
xor r10d, 48
|
|
||||||
movdqa xmm1, XMMWORD PTR [r12+r11]
|
|
||||||
xor rdx, QWORD PTR [r12+r11]
|
|
||||||
xor rax, QWORD PTR [r11+r12+8]
|
|
||||||
movdqa xmm2, XMMWORD PTR [r9+r11]
|
|
||||||
pxor xmm3, xmm2
|
|
||||||
paddq xmm7, XMMWORD PTR [r10+r11]
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
paddq xmm3, xmm6
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm7
|
|
||||||
movdqu XMMWORD PTR [r12+r11], xmm3
|
|
||||||
movdqu XMMWORD PTR [r10+r11], xmm1
|
|
||||||
|
|
||||||
movdqa xmm7, xmm6
|
|
||||||
add r15, rax
|
|
||||||
add rsp, rdx
|
|
||||||
xor r10, 48
|
|
||||||
mov QWORD PTR [r10+r11], rsp
|
|
||||||
xor rsp, r13
|
|
||||||
mov r9d, esp
|
|
||||||
mov QWORD PTR [r10+r11+8], r15
|
|
||||||
and r9d, 2097136
|
|
||||||
xor r15, r14
|
|
||||||
movdqa xmm6, xmm5
|
|
||||||
dec r8d
|
|
||||||
jnz CryptonightWOW_template_mainloop
|
|
||||||
|
|
||||||
CryptonightWOW_template_part3:
|
|
||||||
movq rsp, xmm9
|
|
||||||
|
|
||||||
mov rbx, QWORD PTR [rsp+136]
|
|
||||||
mov rbp, QWORD PTR [rsp+144]
|
|
||||||
mov rsi, QWORD PTR [rsp+152]
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+48]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+32]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+16]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp]
|
|
||||||
add rsp, 64
|
|
||||||
pop rdi
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop r11
|
|
||||||
pop r10
|
|
||||||
ret 0
|
|
||||||
CryptonightWOW_template_end:
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_double_part1:
|
|
||||||
mov rdx, [rcx+8]
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+24], rbx
|
|
||||||
push rbp
|
|
||||||
push rsi
|
|
||||||
push rdi
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
sub rsp, 320
|
|
||||||
mov r14, QWORD PTR [rcx+32]
|
|
||||||
mov r8, rcx
|
|
||||||
xor r14, QWORD PTR [rcx]
|
|
||||||
mov r12, QWORD PTR [rcx+40]
|
|
||||||
mov ebx, r14d
|
|
||||||
mov rsi, QWORD PTR [rcx+224]
|
|
||||||
and ebx, 2097136
|
|
||||||
xor r12, QWORD PTR [rcx+8]
|
|
||||||
mov rcx, QWORD PTR [rcx+56]
|
|
||||||
xor rcx, QWORD PTR [r8+24]
|
|
||||||
mov rax, QWORD PTR [r8+48]
|
|
||||||
xor rax, QWORD PTR [r8+16]
|
|
||||||
mov r15, QWORD PTR [rdx+32]
|
|
||||||
xor r15, QWORD PTR [rdx]
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [r8+88]
|
|
||||||
xor rcx, QWORD PTR [r8+72]
|
|
||||||
mov r13, QWORD PTR [rdx+40]
|
|
||||||
mov rdi, QWORD PTR [rdx+224]
|
|
||||||
xor r13, QWORD PTR [rdx+8]
|
|
||||||
movaps XMMWORD PTR [rsp+160], xmm6
|
|
||||||
movaps XMMWORD PTR [rsp+176], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+192], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp+208], xmm9
|
|
||||||
movaps XMMWORD PTR [rsp+224], xmm10
|
|
||||||
movaps XMMWORD PTR [rsp+240], xmm11
|
|
||||||
movaps XMMWORD PTR [rsp+256], xmm12
|
|
||||||
movaps XMMWORD PTR [rsp+272], xmm13
|
|
||||||
movaps XMMWORD PTR [rsp+288], xmm14
|
|
||||||
movaps XMMWORD PTR [rsp+304], xmm15
|
|
||||||
movq xmm7, rax
|
|
||||||
mov rax, QWORD PTR [r8+80]
|
|
||||||
xor rax, QWORD PTR [r8+64]
|
|
||||||
|
|
||||||
movaps xmm1, XMMWORD PTR [rdx+96]
|
|
||||||
movaps xmm2, XMMWORD PTR [r8+96]
|
|
||||||
movaps XMMWORD PTR [rsp], xmm1
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm2
|
|
||||||
|
|
||||||
mov r8d, r15d
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [rdx+56]
|
|
||||||
xor rcx, QWORD PTR [rdx+24]
|
|
||||||
movq xmm9, rax
|
|
||||||
mov QWORD PTR [rsp+128], rsi
|
|
||||||
mov rax, QWORD PTR [rdx+48]
|
|
||||||
xor rax, QWORD PTR [rdx+16]
|
|
||||||
punpcklqdq xmm9, xmm0
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [rdx+88]
|
|
||||||
xor rcx, QWORD PTR [rdx+72]
|
|
||||||
movq xmm8, rax
|
|
||||||
mov QWORD PTR [rsp+136], rdi
|
|
||||||
mov rax, QWORD PTR [rdx+80]
|
|
||||||
xor rax, QWORD PTR [rdx+64]
|
|
||||||
punpcklqdq xmm8, xmm0
|
|
||||||
and r8d, 2097136
|
|
||||||
movq xmm0, rcx
|
|
||||||
mov r11d, 524288
|
|
||||||
movq xmm10, rax
|
|
||||||
punpcklqdq xmm10, xmm0
|
|
||||||
|
|
||||||
movq xmm14, QWORD PTR [rsp+128]
|
|
||||||
movq xmm15, QWORD PTR [rsp+136]
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_double_mainloop:
|
|
||||||
movdqu xmm6, XMMWORD PTR [rbx+rsi]
|
|
||||||
movq xmm0, r12
|
|
||||||
mov ecx, ebx
|
|
||||||
movq xmm3, r14
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
xor ebx, 16
|
|
||||||
aesenc xmm6, xmm3
|
|
||||||
movq rdx, xmm6
|
|
||||||
movq xmm4, r15
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbx+rsi]
|
|
||||||
xor ebx, 48
|
|
||||||
paddq xmm0, xmm7
|
|
||||||
movdqu xmm1, XMMWORD PTR [rbx+rsi]
|
|
||||||
movdqu XMMWORD PTR [rbx+rsi], xmm0
|
|
||||||
paddq xmm1, xmm3
|
|
||||||
xor ebx, 16
|
|
||||||
mov eax, ebx
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbx+rsi]
|
|
||||||
movdqu XMMWORD PTR [rbx+rsi], xmm1
|
|
||||||
paddq xmm0, xmm9
|
|
||||||
movdqu XMMWORD PTR [rax+rsi], xmm0
|
|
||||||
movdqa xmm0, xmm6
|
|
||||||
pxor xmm0, xmm7
|
|
||||||
movdqu XMMWORD PTR [rcx+rsi], xmm0
|
|
||||||
mov esi, edx
|
|
||||||
movdqu xmm5, XMMWORD PTR [r8+rdi]
|
|
||||||
and esi, 2097136
|
|
||||||
mov ecx, r8d
|
|
||||||
movq xmm0, r13
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
xor r8d, 16
|
|
||||||
aesenc xmm5, xmm4
|
|
||||||
movdqu xmm0, XMMWORD PTR [r8+rdi]
|
|
||||||
xor r8d, 48
|
|
||||||
paddq xmm0, xmm8
|
|
||||||
movdqu xmm1, XMMWORD PTR [r8+rdi]
|
|
||||||
movdqu XMMWORD PTR [r8+rdi], xmm0
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
xor r8d, 16
|
|
||||||
mov eax, r8d
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [r8+rdi]
|
|
||||||
movdqu XMMWORD PTR [r8+rdi], xmm1
|
|
||||||
paddq xmm0, xmm10
|
|
||||||
movdqu XMMWORD PTR [rax+rdi], xmm0
|
|
||||||
movdqa xmm0, xmm5
|
|
||||||
pxor xmm0, xmm8
|
|
||||||
movdqu XMMWORD PTR [rcx+rdi], xmm0
|
|
||||||
movq rdi, xmm5
|
|
||||||
movq rcx, xmm14
|
|
||||||
mov ebp, edi
|
|
||||||
mov r8, QWORD PTR [rcx+rsi]
|
|
||||||
mov r10, QWORD PTR [rcx+rsi+8]
|
|
||||||
lea r9, QWORD PTR [rcx+rsi]
|
|
||||||
xor esi, 16
|
|
||||||
|
|
||||||
movq xmm0, rsp
|
|
||||||
movq xmm1, rsi
|
|
||||||
movq xmm2, rdi
|
|
||||||
movq xmm11, rbp
|
|
||||||
movq xmm12, r15
|
|
||||||
movq xmm13, rdx
|
|
||||||
mov [rsp+104], rcx
|
|
||||||
mov [rsp+112], r9
|
|
||||||
|
|
||||||
mov ebx, DWORD PTR [rsp+16]
|
|
||||||
mov esi, DWORD PTR [rsp+20]
|
|
||||||
mov edi, DWORD PTR [rsp+24]
|
|
||||||
mov ebp, DWORD PTR [rsp+28]
|
|
||||||
|
|
||||||
lea eax, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or rax, rdx
|
|
||||||
xor r8, rax
|
|
||||||
|
|
||||||
movd esp, xmm3
|
|
||||||
pextrd r15d, xmm3, 2
|
|
||||||
movd eax, xmm7
|
|
||||||
movd edx, xmm9
|
|
||||||
pextrd r9d, xmm9, 2
|
|
||||||
|
|
||||||
CryptonightWOW_template_double_part2:
|
|
||||||
|
|
||||||
movq rsp, xmm0
|
|
||||||
mov DWORD PTR [rsp+16], ebx
|
|
||||||
mov DWORD PTR [rsp+20], esi
|
|
||||||
mov DWORD PTR [rsp+24], edi
|
|
||||||
mov DWORD PTR [rsp+28], ebp
|
|
||||||
|
|
||||||
movq rsi, xmm1
|
|
||||||
movq rdi, xmm2
|
|
||||||
movq rbp, xmm11
|
|
||||||
movq r15, xmm12
|
|
||||||
movq rdx, xmm13
|
|
||||||
mov rcx, [rsp+104]
|
|
||||||
mov r9, [rsp+112]
|
|
||||||
|
|
||||||
mov rbx, r8
|
|
||||||
mov rax, r8
|
|
||||||
mul rdx
|
|
||||||
and ebp, 2097136
|
|
||||||
mov r8, rax
|
|
||||||
movq xmm1, rdx
|
|
||||||
movq xmm0, r8
|
|
||||||
punpcklqdq xmm1, xmm0
|
|
||||||
pxor xmm1, XMMWORD PTR [rcx+rsi]
|
|
||||||
xor esi, 48
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movdqu xmm2, XMMWORD PTR [rsi+rcx]
|
|
||||||
xor rdx, QWORD PTR [rsi+rcx]
|
|
||||||
paddq xmm2, xmm3
|
|
||||||
xor r8, QWORD PTR [rsi+rcx+8]
|
|
||||||
movdqu XMMWORD PTR [rsi+rcx], xmm1
|
|
||||||
xor esi, 16
|
|
||||||
mov eax, esi
|
|
||||||
mov rsi, rcx
|
|
||||||
movdqu xmm0, XMMWORD PTR [rax+rcx]
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm2
|
|
||||||
paddq xmm0, xmm9
|
|
||||||
add r12, r8
|
|
||||||
xor rax, 32
|
|
||||||
add r14, rdx
|
|
||||||
movdqa xmm9, xmm7
|
|
||||||
movdqa xmm7, xmm6
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm0
|
|
||||||
mov QWORD PTR [r9+8], r12
|
|
||||||
xor r12, r10
|
|
||||||
mov QWORD PTR [r9], r14
|
|
||||||
movq rcx, xmm15
|
|
||||||
xor r14, rbx
|
|
||||||
mov r10d, ebp
|
|
||||||
mov ebx, r14d
|
|
||||||
xor ebp, 16
|
|
||||||
and ebx, 2097136
|
|
||||||
mov r8, QWORD PTR [r10+rcx]
|
|
||||||
mov r9, QWORD PTR [r10+rcx+8]
|
|
||||||
|
|
||||||
movq xmm0, rsp
|
|
||||||
movq xmm1, rbx
|
|
||||||
movq xmm2, rsi
|
|
||||||
movq xmm11, rdi
|
|
||||||
movq xmm12, rbp
|
|
||||||
movq xmm13, r15
|
|
||||||
mov [rsp+104], rcx
|
|
||||||
mov [rsp+112], r9
|
|
||||||
|
|
||||||
mov ebx, DWORD PTR [rsp]
|
|
||||||
mov esi, DWORD PTR [rsp+4]
|
|
||||||
mov edi, DWORD PTR [rsp+8]
|
|
||||||
mov ebp, DWORD PTR [rsp+12]
|
|
||||||
|
|
||||||
lea eax, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or rax, rdx
|
|
||||||
|
|
||||||
xor r8, rax
|
|
||||||
movq xmm3, r8
|
|
||||||
|
|
||||||
movd esp, xmm4
|
|
||||||
pextrd r15d, xmm4, 2
|
|
||||||
movd eax, xmm8
|
|
||||||
movd edx, xmm10
|
|
||||||
pextrd r9d, xmm10, 2
|
|
||||||
|
|
||||||
CryptonightWOW_template_double_part3:
|
|
||||||
|
|
||||||
movq rsp, xmm0
|
|
||||||
mov DWORD PTR [rsp], ebx
|
|
||||||
mov DWORD PTR [rsp+4], esi
|
|
||||||
mov DWORD PTR [rsp+8], edi
|
|
||||||
mov DWORD PTR [rsp+12], ebp
|
|
||||||
|
|
||||||
movq rbx, xmm1
|
|
||||||
movq rsi, xmm2
|
|
||||||
movq rdi, xmm11
|
|
||||||
movq rbp, xmm12
|
|
||||||
movq r15, xmm13
|
|
||||||
mov rcx, [rsp+104]
|
|
||||||
mov r9, [rsp+112]
|
|
||||||
|
|
||||||
mov rax, r8
|
|
||||||
mul rdi
|
|
||||||
movq xmm1, rdx
|
|
||||||
movq xmm0, rax
|
|
||||||
punpcklqdq xmm1, xmm0
|
|
||||||
mov rdi, rcx
|
|
||||||
mov r8, rax
|
|
||||||
pxor xmm1, XMMWORD PTR [rbp+rcx]
|
|
||||||
xor ebp, 48
|
|
||||||
paddq xmm1, xmm8
|
|
||||||
xor r8, QWORD PTR [rbp+rcx+8]
|
|
||||||
xor rdx, QWORD PTR [rbp+rcx]
|
|
||||||
add r13, r8
|
|
||||||
movdqu xmm2, XMMWORD PTR [rbp+rcx]
|
|
||||||
add r15, rdx
|
|
||||||
movdqu XMMWORD PTR [rbp+rcx], xmm1
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
xor ebp, 16
|
|
||||||
mov eax, ebp
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbp+rcx]
|
|
||||||
movdqu XMMWORD PTR [rbp+rcx], xmm2
|
|
||||||
paddq xmm0, xmm10
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm0
|
|
||||||
movq rax, xmm3
|
|
||||||
movdqa xmm10, xmm8
|
|
||||||
mov QWORD PTR [r10+rcx], r15
|
|
||||||
movdqa xmm8, xmm5
|
|
||||||
xor r15, rax
|
|
||||||
mov QWORD PTR [r10+rcx+8], r13
|
|
||||||
mov r8d, r15d
|
|
||||||
xor r13, r9
|
|
||||||
and r8d, 2097136
|
|
||||||
dec r11d
|
|
||||||
jnz CryptonightWOW_template_double_mainloop
|
|
||||||
|
|
||||||
CryptonightWOW_template_double_part4:
|
|
||||||
|
|
||||||
mov rbx, QWORD PTR [rsp+400]
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+160]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+176]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+192]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp+208]
|
|
||||||
movaps xmm10, XMMWORD PTR [rsp+224]
|
|
||||||
movaps xmm11, XMMWORD PTR [rsp+240]
|
|
||||||
movaps xmm12, XMMWORD PTR [rsp+256]
|
|
||||||
movaps xmm13, XMMWORD PTR [rsp+272]
|
|
||||||
movaps xmm14, XMMWORD PTR [rsp+288]
|
|
||||||
movaps xmm15, XMMWORD PTR [rsp+304]
|
|
||||||
add rsp, 320
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop rdi
|
|
||||||
pop rsi
|
|
||||||
pop rbp
|
|
||||||
ret 0
|
|
||||||
CryptonightWOW_template_double_end:
|
|
|
@ -516,9 +516,7 @@ PUBLIC CryptonightR_instruction_mov254
|
||||||
PUBLIC CryptonightR_instruction_mov255
|
PUBLIC CryptonightR_instruction_mov255
|
||||||
PUBLIC CryptonightR_instruction_mov256
|
PUBLIC CryptonightR_instruction_mov256
|
||||||
|
|
||||||
INCLUDE CryptonightWOW_template_win.inc
|
|
||||||
INCLUDE CryptonightR_template_win.inc
|
INCLUDE CryptonightR_template_win.inc
|
||||||
INCLUDE CryptonightWOW_soft_aes_template_win.inc
|
|
||||||
INCLUDE CryptonightR_soft_aes_template_win.inc
|
INCLUDE CryptonightR_soft_aes_template_win.inc
|
||||||
|
|
||||||
CryptonightR_instruction0:
|
CryptonightR_instruction0:
|
||||||
|
|
|
@ -1,268 +0,0 @@
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_part1
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_mainloop
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_part2
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_part3
|
|
||||||
PUBLIC CryptonightWOW_soft_aes_template_end
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_soft_aes_template_part1:
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+8], rcx
|
|
||||||
push rbx
|
|
||||||
push rbp
|
|
||||||
push rsi
|
|
||||||
push rdi
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
sub rsp, 232
|
|
||||||
|
|
||||||
mov eax, [rcx+96]
|
|
||||||
mov ebx, [rcx+100]
|
|
||||||
mov esi, [rcx+104]
|
|
||||||
mov edx, [rcx+108]
|
|
||||||
mov [rsp+144], eax
|
|
||||||
mov [rsp+148], ebx
|
|
||||||
mov [rsp+152], esi
|
|
||||||
mov [rsp+156], edx
|
|
||||||
|
|
||||||
mov rax, QWORD PTR [rcx+48]
|
|
||||||
mov r10, rcx
|
|
||||||
xor rax, QWORD PTR [rcx+16]
|
|
||||||
mov r8, QWORD PTR [rcx+32]
|
|
||||||
xor r8, QWORD PTR [rcx]
|
|
||||||
mov r9, QWORD PTR [rcx+40]
|
|
||||||
xor r9, QWORD PTR [rcx+8]
|
|
||||||
movd xmm4, rax
|
|
||||||
mov rdx, QWORD PTR [rcx+56]
|
|
||||||
xor rdx, QWORD PTR [rcx+24]
|
|
||||||
mov r11, QWORD PTR [rcx+224]
|
|
||||||
mov rcx, QWORD PTR [rcx+88]
|
|
||||||
xor rcx, QWORD PTR [r10+72]
|
|
||||||
mov rax, QWORD PTR [r10+80]
|
|
||||||
movd xmm0, rdx
|
|
||||||
xor rax, QWORD PTR [r10+64]
|
|
||||||
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm6
|
|
||||||
movaps XMMWORD PTR [rsp+32], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+48], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp+64], xmm9
|
|
||||||
movaps XMMWORD PTR [rsp+80], xmm10
|
|
||||||
movaps XMMWORD PTR [rsp+96], xmm11
|
|
||||||
movaps XMMWORD PTR [rsp+112], xmm12
|
|
||||||
movaps XMMWORD PTR [rsp+128], xmm13
|
|
||||||
|
|
||||||
movd xmm5, rax
|
|
||||||
|
|
||||||
mov rax, r8
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
and eax, 2097136
|
|
||||||
movd xmm10, QWORD PTR [r10+96]
|
|
||||||
movd xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [r10+104]
|
|
||||||
xorps xmm9, xmm9
|
|
||||||
mov QWORD PTR [rsp+328], rax
|
|
||||||
movd xmm12, r11
|
|
||||||
mov QWORD PTR [rsp+320], r9
|
|
||||||
punpcklqdq xmm5, xmm0
|
|
||||||
movd xmm13, rcx
|
|
||||||
mov r12d, 524288
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_soft_aes_template_mainloop:
|
|
||||||
movd xmm11, r12d
|
|
||||||
mov r12, QWORD PTR [r10+272]
|
|
||||||
lea r13, QWORD PTR [rax+r11]
|
|
||||||
mov esi, DWORD PTR [r13]
|
|
||||||
movd xmm0, r9
|
|
||||||
mov r10d, DWORD PTR [r13+4]
|
|
||||||
movd xmm7, r8
|
|
||||||
mov ebp, DWORD PTR [r13+12]
|
|
||||||
mov r14d, DWORD PTR [r13+8]
|
|
||||||
mov rdx, QWORD PTR [rsp+328]
|
|
||||||
movzx ecx, sil
|
|
||||||
shr esi, 8
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
mov r15d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
mov edi, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r14b
|
|
||||||
shr r14d, 8
|
|
||||||
mov ebx, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, bpl
|
|
||||||
shr ebp, 8
|
|
||||||
mov r9d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
xor r15d, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
movzx ecx, r14b
|
|
||||||
shr r14d, 8
|
|
||||||
mov eax, r14d
|
|
||||||
shr eax, 8
|
|
||||||
xor edi, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
add eax, 256
|
|
||||||
movzx ecx, bpl
|
|
||||||
shr ebp, 8
|
|
||||||
xor ebx, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
movzx ecx, sil
|
|
||||||
shr esi, 8
|
|
||||||
xor r9d, DWORD PTR [r12+rcx*4+1024]
|
|
||||||
add r12, 2048
|
|
||||||
movzx ecx, r10b
|
|
||||||
shr r10d, 8
|
|
||||||
add r10d, 256
|
|
||||||
mov r11d, DWORD PTR [r12+rax*4]
|
|
||||||
xor r11d, DWORD PTR [r12+rcx*4]
|
|
||||||
xor r11d, r9d
|
|
||||||
movzx ecx, sil
|
|
||||||
mov r10d, DWORD PTR [r12+r10*4]
|
|
||||||
shr esi, 8
|
|
||||||
add esi, 256
|
|
||||||
xor r10d, DWORD PTR [r12+rcx*4]
|
|
||||||
movzx ecx, bpl
|
|
||||||
xor r10d, ebx
|
|
||||||
shr ebp, 8
|
|
||||||
movd xmm1, r11d
|
|
||||||
add ebp, 256
|
|
||||||
movd r11, xmm12
|
|
||||||
mov r9d, DWORD PTR [r12+rcx*4]
|
|
||||||
xor r9d, DWORD PTR [r12+rsi*4]
|
|
||||||
mov eax, DWORD PTR [r12+rbp*4]
|
|
||||||
xor r9d, edi
|
|
||||||
movzx ecx, r14b
|
|
||||||
movd xmm0, r10d
|
|
||||||
movd xmm2, r9d
|
|
||||||
xor eax, DWORD PTR [r12+rcx*4]
|
|
||||||
mov rcx, rdx
|
|
||||||
xor eax, r15d
|
|
||||||
punpckldq xmm2, xmm1
|
|
||||||
xor rcx, 16
|
|
||||||
movd xmm6, eax
|
|
||||||
mov rax, rdx
|
|
||||||
punpckldq xmm6, xmm0
|
|
||||||
xor rax, 32
|
|
||||||
punpckldq xmm6, xmm2
|
|
||||||
xor rdx, 48
|
|
||||||
movdqu xmm2, XMMWORD PTR [rcx+r11]
|
|
||||||
pxor xmm6, xmm7
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
movdqu xmm1, XMMWORD PTR [rax+r11]
|
|
||||||
movdqu xmm0, XMMWORD PTR [rdx+r11]
|
|
||||||
paddq xmm0, xmm5
|
|
||||||
movdqu XMMWORD PTR [rcx+r11], xmm0
|
|
||||||
movdqu XMMWORD PTR [rax+r11], xmm2
|
|
||||||
movd rcx, xmm13
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movdqu XMMWORD PTR [rdx+r11], xmm1
|
|
||||||
movd rdi, xmm6
|
|
||||||
mov r10, rdi
|
|
||||||
and r10d, 2097136
|
|
||||||
movdqa xmm0, xmm6
|
|
||||||
pxor xmm0, xmm4
|
|
||||||
movdqu XMMWORD PTR [r13], xmm0
|
|
||||||
|
|
||||||
mov ebx, [rsp+144]
|
|
||||||
mov ebp, [rsp+152]
|
|
||||||
add ebx, [rsp+148]
|
|
||||||
add ebp, [rsp+156]
|
|
||||||
shl rbp, 32
|
|
||||||
or rbx, rbp
|
|
||||||
|
|
||||||
xor rbx, QWORD PTR [r10+r11]
|
|
||||||
lea r14, QWORD PTR [r10+r11]
|
|
||||||
mov rbp, QWORD PTR [r14+8]
|
|
||||||
|
|
||||||
mov [rsp+160], rbx
|
|
||||||
mov [rsp+168], rdi
|
|
||||||
mov [rsp+176], rbp
|
|
||||||
mov [rsp+184], r10
|
|
||||||
mov r10, rsp
|
|
||||||
|
|
||||||
mov ebx, [rsp+144]
|
|
||||||
mov esi, [rsp+148]
|
|
||||||
mov edi, [rsp+152]
|
|
||||||
mov ebp, [rsp+156]
|
|
||||||
|
|
||||||
movd esp, xmm7
|
|
||||||
movaps xmm0, xmm7
|
|
||||||
psrldq xmm0, 8
|
|
||||||
movd r15d, xmm0
|
|
||||||
movd eax, xmm4
|
|
||||||
movd edx, xmm5
|
|
||||||
|
|
||||||
CryptonightWOW_soft_aes_template_part2:
|
|
||||||
mov rsp, r10
|
|
||||||
mov [rsp+144], ebx
|
|
||||||
mov [rsp+148], esi
|
|
||||||
mov [rsp+152], edi
|
|
||||||
mov [rsp+156], ebp
|
|
||||||
|
|
||||||
mov rbx, [rsp+160]
|
|
||||||
mov rdi, [rsp+168]
|
|
||||||
mov rbp, [rsp+176]
|
|
||||||
mov r10, [rsp+184]
|
|
||||||
|
|
||||||
mov r9, r10
|
|
||||||
xor r9, 16
|
|
||||||
mov rcx, r10
|
|
||||||
xor rcx, 32
|
|
||||||
xor r10, 48
|
|
||||||
mov rax, rbx
|
|
||||||
mul rdi
|
|
||||||
movdqu xmm2, XMMWORD PTR [r9+r11]
|
|
||||||
movdqu xmm1, XMMWORD PTR [rcx+r11]
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movd xmm0, rax
|
|
||||||
movd xmm3, rdx
|
|
||||||
xor rax, QWORD PTR [r11+rcx+8]
|
|
||||||
xor rdx, QWORD PTR [rcx+r11]
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
add r8, rdx
|
|
||||||
movdqu xmm0, XMMWORD PTR [r10+r11]
|
|
||||||
pxor xmm2, xmm3
|
|
||||||
paddq xmm0, xmm5
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm0
|
|
||||||
movdqa xmm5, xmm4
|
|
||||||
mov r9, QWORD PTR [rsp+320]
|
|
||||||
movdqa xmm4, xmm6
|
|
||||||
add r9, rax
|
|
||||||
movdqu XMMWORD PTR [rcx+r11], xmm2
|
|
||||||
movdqu XMMWORD PTR [r10+r11], xmm1
|
|
||||||
mov r10, QWORD PTR [rsp+304]
|
|
||||||
movd r12d, xmm11
|
|
||||||
mov QWORD PTR [r14], r8
|
|
||||||
xor r8, rbx
|
|
||||||
mov rax, r8
|
|
||||||
mov QWORD PTR [r14+8], r9
|
|
||||||
and eax, 2097136
|
|
||||||
xor r9, rbp
|
|
||||||
mov QWORD PTR [rsp+320], r9
|
|
||||||
mov QWORD PTR [rsp+328], rax
|
|
||||||
sub r12d, 1
|
|
||||||
jne CryptonightWOW_soft_aes_template_mainloop
|
|
||||||
|
|
||||||
CryptonightWOW_soft_aes_template_part3:
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+16]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+32]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+48]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp+64]
|
|
||||||
movaps xmm10, XMMWORD PTR [rsp+80]
|
|
||||||
movaps xmm11, XMMWORD PTR [rsp+96]
|
|
||||||
movaps xmm12, XMMWORD PTR [rsp+112]
|
|
||||||
movaps xmm13, XMMWORD PTR [rsp+128]
|
|
||||||
|
|
||||||
add rsp, 232
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop rdi
|
|
||||||
pop rsi
|
|
||||||
pop rbp
|
|
||||||
pop rbx
|
|
||||||
ret
|
|
||||||
CryptonightWOW_soft_aes_template_end:
|
|
|
@ -1,491 +0,0 @@
|
||||||
PUBLIC CryptonightWOW_template_part1
|
|
||||||
PUBLIC CryptonightWOW_template_mainloop
|
|
||||||
PUBLIC CryptonightWOW_template_part2
|
|
||||||
PUBLIC CryptonightWOW_template_part3
|
|
||||||
PUBLIC CryptonightWOW_template_end
|
|
||||||
PUBLIC CryptonightWOW_template_double_part1
|
|
||||||
PUBLIC CryptonightWOW_template_double_mainloop
|
|
||||||
PUBLIC CryptonightWOW_template_double_part2
|
|
||||||
PUBLIC CryptonightWOW_template_double_part3
|
|
||||||
PUBLIC CryptonightWOW_template_double_part4
|
|
||||||
PUBLIC CryptonightWOW_template_double_end
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_part1:
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+16], rbx
|
|
||||||
mov QWORD PTR [rsp+24], rbp
|
|
||||||
mov QWORD PTR [rsp+32], rsi
|
|
||||||
push r10
|
|
||||||
push r11
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
push rdi
|
|
||||||
sub rsp, 64
|
|
||||||
mov r12, rcx
|
|
||||||
mov r8, QWORD PTR [r12+32]
|
|
||||||
mov rdx, r12
|
|
||||||
xor r8, QWORD PTR [r12]
|
|
||||||
mov r15, QWORD PTR [r12+40]
|
|
||||||
mov r9, r8
|
|
||||||
xor r15, QWORD PTR [r12+8]
|
|
||||||
mov r11, QWORD PTR [r12+224]
|
|
||||||
mov r12, QWORD PTR [r12+56]
|
|
||||||
xor r12, QWORD PTR [rdx+24]
|
|
||||||
mov rax, QWORD PTR [rdx+48]
|
|
||||||
xor rax, QWORD PTR [rdx+16]
|
|
||||||
movaps XMMWORD PTR [rsp+48], xmm6
|
|
||||||
movd xmm0, r12
|
|
||||||
movaps XMMWORD PTR [rsp+32], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp], xmm9
|
|
||||||
mov r12, QWORD PTR [rdx+88]
|
|
||||||
xor r12, QWORD PTR [rdx+72]
|
|
||||||
movd xmm6, rax
|
|
||||||
mov rax, QWORD PTR [rdx+80]
|
|
||||||
xor rax, QWORD PTR [rdx+64]
|
|
||||||
punpcklqdq xmm6, xmm0
|
|
||||||
and r9d, 2097136
|
|
||||||
movd xmm0, r12
|
|
||||||
movd xmm7, rax
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
mov r10d, r9d
|
|
||||||
movd xmm9, rsp
|
|
||||||
mov rsp, r8
|
|
||||||
mov r8d, 524288
|
|
||||||
|
|
||||||
mov ebx, [rdx+96]
|
|
||||||
mov esi, [rdx+100]
|
|
||||||
mov edi, [rdx+104]
|
|
||||||
mov ebp, [rdx+108]
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_mainloop:
|
|
||||||
movdqa xmm5, XMMWORD PTR [r9+r11]
|
|
||||||
movd xmm0, r15
|
|
||||||
movd xmm4, rsp
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
lea rdx, QWORD PTR [r9+r11]
|
|
||||||
|
|
||||||
aesenc xmm5, xmm4
|
|
||||||
movd r10d, xmm5
|
|
||||||
and r10d, 2097136
|
|
||||||
|
|
||||||
mov r12d, r9d
|
|
||||||
mov eax, r9d
|
|
||||||
xor r9d, 48
|
|
||||||
xor r12d, 16
|
|
||||||
xor eax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [r9+r11]
|
|
||||||
movdqu xmm2, XMMWORD PTR [r12+r11]
|
|
||||||
movdqu xmm1, XMMWORD PTR [rax+r11]
|
|
||||||
paddq xmm0, xmm7
|
|
||||||
paddq xmm2, xmm6
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
movdqu XMMWORD PTR [r12+r11], xmm0
|
|
||||||
movd r12, xmm5
|
|
||||||
movdqu XMMWORD PTR [rax+r11], xmm2
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm1
|
|
||||||
|
|
||||||
movdqa xmm0, xmm5
|
|
||||||
pxor xmm0, xmm6
|
|
||||||
movdqu XMMWORD PTR [rdx], xmm0
|
|
||||||
|
|
||||||
lea r13d, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or r13, rdx
|
|
||||||
|
|
||||||
xor r13, QWORD PTR [r10+r11]
|
|
||||||
mov r14, QWORD PTR [r10+r11+8]
|
|
||||||
|
|
||||||
movd eax, xmm6
|
|
||||||
movd edx, xmm7
|
|
||||||
pextrd r9d, xmm7, 2
|
|
||||||
|
|
||||||
CryptonightWOW_template_part2:
|
|
||||||
mov rax, r13
|
|
||||||
mul r12
|
|
||||||
movd xmm0, rax
|
|
||||||
movd xmm3, rdx
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
|
|
||||||
mov r9d, r10d
|
|
||||||
mov r12d, r10d
|
|
||||||
xor r9d, 16
|
|
||||||
xor r12d, 32
|
|
||||||
xor r10d, 48
|
|
||||||
movdqa xmm1, XMMWORD PTR [r12+r11]
|
|
||||||
xor rdx, QWORD PTR [r12+r11]
|
|
||||||
xor rax, QWORD PTR [r11+r12+8]
|
|
||||||
movdqa xmm2, XMMWORD PTR [r9+r11]
|
|
||||||
pxor xmm3, xmm2
|
|
||||||
paddq xmm7, XMMWORD PTR [r10+r11]
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
paddq xmm3, xmm6
|
|
||||||
movdqu XMMWORD PTR [r9+r11], xmm7
|
|
||||||
movdqu XMMWORD PTR [r12+r11], xmm3
|
|
||||||
movdqu XMMWORD PTR [r10+r11], xmm1
|
|
||||||
|
|
||||||
movdqa xmm7, xmm6
|
|
||||||
add r15, rax
|
|
||||||
add rsp, rdx
|
|
||||||
xor r10, 48
|
|
||||||
mov QWORD PTR [r10+r11], rsp
|
|
||||||
xor rsp, r13
|
|
||||||
mov r9d, esp
|
|
||||||
mov QWORD PTR [r10+r11+8], r15
|
|
||||||
and r9d, 2097136
|
|
||||||
xor r15, r14
|
|
||||||
movdqa xmm6, xmm5
|
|
||||||
dec r8d
|
|
||||||
jnz CryptonightWOW_template_mainloop
|
|
||||||
|
|
||||||
CryptonightWOW_template_part3:
|
|
||||||
movd rsp, xmm9
|
|
||||||
|
|
||||||
mov rbx, QWORD PTR [rsp+136]
|
|
||||||
mov rbp, QWORD PTR [rsp+144]
|
|
||||||
mov rsi, QWORD PTR [rsp+152]
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+48]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+32]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+16]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp]
|
|
||||||
add rsp, 64
|
|
||||||
pop rdi
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop r11
|
|
||||||
pop r10
|
|
||||||
ret 0
|
|
||||||
CryptonightWOW_template_end:
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_double_part1:
|
|
||||||
mov rdx, [rcx+8]
|
|
||||||
mov rcx, [rcx]
|
|
||||||
|
|
||||||
mov QWORD PTR [rsp+24], rbx
|
|
||||||
push rbp
|
|
||||||
push rsi
|
|
||||||
push rdi
|
|
||||||
push r12
|
|
||||||
push r13
|
|
||||||
push r14
|
|
||||||
push r15
|
|
||||||
sub rsp, 320
|
|
||||||
mov r14, QWORD PTR [rcx+32]
|
|
||||||
mov r8, rcx
|
|
||||||
xor r14, QWORD PTR [rcx]
|
|
||||||
mov r12, QWORD PTR [rcx+40]
|
|
||||||
mov ebx, r14d
|
|
||||||
mov rsi, QWORD PTR [rcx+224]
|
|
||||||
and ebx, 2097136
|
|
||||||
xor r12, QWORD PTR [rcx+8]
|
|
||||||
mov rcx, QWORD PTR [rcx+56]
|
|
||||||
xor rcx, QWORD PTR [r8+24]
|
|
||||||
mov rax, QWORD PTR [r8+48]
|
|
||||||
xor rax, QWORD PTR [r8+16]
|
|
||||||
mov r15, QWORD PTR [rdx+32]
|
|
||||||
xor r15, QWORD PTR [rdx]
|
|
||||||
movd xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [r8+88]
|
|
||||||
xor rcx, QWORD PTR [r8+72]
|
|
||||||
mov r13, QWORD PTR [rdx+40]
|
|
||||||
mov rdi, QWORD PTR [rdx+224]
|
|
||||||
xor r13, QWORD PTR [rdx+8]
|
|
||||||
movaps XMMWORD PTR [rsp+160], xmm6
|
|
||||||
movaps XMMWORD PTR [rsp+176], xmm7
|
|
||||||
movaps XMMWORD PTR [rsp+192], xmm8
|
|
||||||
movaps XMMWORD PTR [rsp+208], xmm9
|
|
||||||
movaps XMMWORD PTR [rsp+224], xmm10
|
|
||||||
movaps XMMWORD PTR [rsp+240], xmm11
|
|
||||||
movaps XMMWORD PTR [rsp+256], xmm12
|
|
||||||
movaps XMMWORD PTR [rsp+272], xmm13
|
|
||||||
movaps XMMWORD PTR [rsp+288], xmm14
|
|
||||||
movaps XMMWORD PTR [rsp+304], xmm15
|
|
||||||
movd xmm7, rax
|
|
||||||
mov rax, QWORD PTR [r8+80]
|
|
||||||
xor rax, QWORD PTR [r8+64]
|
|
||||||
|
|
||||||
movaps xmm1, XMMWORD PTR [rdx+96]
|
|
||||||
movaps xmm2, XMMWORD PTR [r8+96]
|
|
||||||
movaps XMMWORD PTR [rsp], xmm1
|
|
||||||
movaps XMMWORD PTR [rsp+16], xmm2
|
|
||||||
|
|
||||||
mov r8d, r15d
|
|
||||||
punpcklqdq xmm7, xmm0
|
|
||||||
movd xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [rdx+56]
|
|
||||||
xor rcx, QWORD PTR [rdx+24]
|
|
||||||
movd xmm9, rax
|
|
||||||
mov QWORD PTR [rsp+128], rsi
|
|
||||||
mov rax, QWORD PTR [rdx+48]
|
|
||||||
xor rax, QWORD PTR [rdx+16]
|
|
||||||
punpcklqdq xmm9, xmm0
|
|
||||||
movd xmm0, rcx
|
|
||||||
mov rcx, QWORD PTR [rdx+88]
|
|
||||||
xor rcx, QWORD PTR [rdx+72]
|
|
||||||
movd xmm8, rax
|
|
||||||
mov QWORD PTR [rsp+136], rdi
|
|
||||||
mov rax, QWORD PTR [rdx+80]
|
|
||||||
xor rax, QWORD PTR [rdx+64]
|
|
||||||
punpcklqdq xmm8, xmm0
|
|
||||||
and r8d, 2097136
|
|
||||||
movd xmm0, rcx
|
|
||||||
mov r11d, 524288
|
|
||||||
movd xmm10, rax
|
|
||||||
punpcklqdq xmm10, xmm0
|
|
||||||
|
|
||||||
movd xmm14, QWORD PTR [rsp+128]
|
|
||||||
movd xmm15, QWORD PTR [rsp+136]
|
|
||||||
|
|
||||||
ALIGN(64)
|
|
||||||
CryptonightWOW_template_double_mainloop:
|
|
||||||
movdqu xmm6, XMMWORD PTR [rbx+rsi]
|
|
||||||
movd xmm0, r12
|
|
||||||
mov ecx, ebx
|
|
||||||
movd xmm3, r14
|
|
||||||
punpcklqdq xmm3, xmm0
|
|
||||||
xor ebx, 16
|
|
||||||
aesenc xmm6, xmm3
|
|
||||||
movd rdx, xmm6
|
|
||||||
movd xmm4, r15
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbx+rsi]
|
|
||||||
xor ebx, 48
|
|
||||||
paddq xmm0, xmm7
|
|
||||||
movdqu xmm1, XMMWORD PTR [rbx+rsi]
|
|
||||||
movdqu XMMWORD PTR [rbx+rsi], xmm0
|
|
||||||
paddq xmm1, xmm3
|
|
||||||
xor ebx, 16
|
|
||||||
mov eax, ebx
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbx+rsi]
|
|
||||||
movdqu XMMWORD PTR [rbx+rsi], xmm1
|
|
||||||
paddq xmm0, xmm9
|
|
||||||
movdqu XMMWORD PTR [rax+rsi], xmm0
|
|
||||||
movdqa xmm0, xmm6
|
|
||||||
pxor xmm0, xmm7
|
|
||||||
movdqu XMMWORD PTR [rcx+rsi], xmm0
|
|
||||||
mov esi, edx
|
|
||||||
movdqu xmm5, XMMWORD PTR [r8+rdi]
|
|
||||||
and esi, 2097136
|
|
||||||
mov ecx, r8d
|
|
||||||
movd xmm0, r13
|
|
||||||
punpcklqdq xmm4, xmm0
|
|
||||||
xor r8d, 16
|
|
||||||
aesenc xmm5, xmm4
|
|
||||||
movdqu xmm0, XMMWORD PTR [r8+rdi]
|
|
||||||
xor r8d, 48
|
|
||||||
paddq xmm0, xmm8
|
|
||||||
movdqu xmm1, XMMWORD PTR [r8+rdi]
|
|
||||||
movdqu XMMWORD PTR [r8+rdi], xmm0
|
|
||||||
paddq xmm1, xmm4
|
|
||||||
xor r8d, 16
|
|
||||||
mov eax, r8d
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [r8+rdi]
|
|
||||||
movdqu XMMWORD PTR [r8+rdi], xmm1
|
|
||||||
paddq xmm0, xmm10
|
|
||||||
movdqu XMMWORD PTR [rax+rdi], xmm0
|
|
||||||
movdqa xmm0, xmm5
|
|
||||||
pxor xmm0, xmm8
|
|
||||||
movdqu XMMWORD PTR [rcx+rdi], xmm0
|
|
||||||
movd rdi, xmm5
|
|
||||||
movd rcx, xmm14
|
|
||||||
mov ebp, edi
|
|
||||||
mov r8, QWORD PTR [rcx+rsi]
|
|
||||||
mov r10, QWORD PTR [rcx+rsi+8]
|
|
||||||
lea r9, QWORD PTR [rcx+rsi]
|
|
||||||
xor esi, 16
|
|
||||||
|
|
||||||
movd xmm0, rsp
|
|
||||||
movd xmm1, rsi
|
|
||||||
movd xmm2, rdi
|
|
||||||
movd xmm11, rbp
|
|
||||||
movd xmm12, r15
|
|
||||||
movd xmm13, rdx
|
|
||||||
mov [rsp+104], rcx
|
|
||||||
mov [rsp+112], r9
|
|
||||||
|
|
||||||
mov ebx, DWORD PTR [rsp+16]
|
|
||||||
mov esi, DWORD PTR [rsp+20]
|
|
||||||
mov edi, DWORD PTR [rsp+24]
|
|
||||||
mov ebp, DWORD PTR [rsp+28]
|
|
||||||
|
|
||||||
lea eax, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or rax, rdx
|
|
||||||
xor r8, rax
|
|
||||||
|
|
||||||
movd esp, xmm3
|
|
||||||
pextrd r15d, xmm3, 2
|
|
||||||
movd eax, xmm7
|
|
||||||
movd edx, xmm9
|
|
||||||
pextrd r9d, xmm9, 2
|
|
||||||
|
|
||||||
CryptonightWOW_template_double_part2:
|
|
||||||
|
|
||||||
movd rsp, xmm0
|
|
||||||
mov DWORD PTR [rsp+16], ebx
|
|
||||||
mov DWORD PTR [rsp+20], esi
|
|
||||||
mov DWORD PTR [rsp+24], edi
|
|
||||||
mov DWORD PTR [rsp+28], ebp
|
|
||||||
|
|
||||||
movd rsi, xmm1
|
|
||||||
movd rdi, xmm2
|
|
||||||
movd rbp, xmm11
|
|
||||||
movd r15, xmm12
|
|
||||||
movd rdx, xmm13
|
|
||||||
mov rcx, [rsp+104]
|
|
||||||
mov r9, [rsp+112]
|
|
||||||
|
|
||||||
mov rbx, r8
|
|
||||||
mov rax, r8
|
|
||||||
mul rdx
|
|
||||||
and ebp, 2097136
|
|
||||||
mov r8, rax
|
|
||||||
movd xmm1, rdx
|
|
||||||
movd xmm0, r8
|
|
||||||
punpcklqdq xmm1, xmm0
|
|
||||||
pxor xmm1, XMMWORD PTR [rcx+rsi]
|
|
||||||
xor esi, 48
|
|
||||||
paddq xmm1, xmm7
|
|
||||||
movdqu xmm2, XMMWORD PTR [rsi+rcx]
|
|
||||||
xor rdx, QWORD PTR [rsi+rcx]
|
|
||||||
paddq xmm2, xmm3
|
|
||||||
xor r8, QWORD PTR [rsi+rcx+8]
|
|
||||||
movdqu XMMWORD PTR [rsi+rcx], xmm1
|
|
||||||
xor esi, 16
|
|
||||||
mov eax, esi
|
|
||||||
mov rsi, rcx
|
|
||||||
movdqu xmm0, XMMWORD PTR [rax+rcx]
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm2
|
|
||||||
paddq xmm0, xmm9
|
|
||||||
add r12, r8
|
|
||||||
xor rax, 32
|
|
||||||
add r14, rdx
|
|
||||||
movdqa xmm9, xmm7
|
|
||||||
movdqa xmm7, xmm6
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm0
|
|
||||||
mov QWORD PTR [r9+8], r12
|
|
||||||
xor r12, r10
|
|
||||||
mov QWORD PTR [r9], r14
|
|
||||||
movd rcx, xmm15
|
|
||||||
xor r14, rbx
|
|
||||||
mov r10d, ebp
|
|
||||||
mov ebx, r14d
|
|
||||||
xor ebp, 16
|
|
||||||
and ebx, 2097136
|
|
||||||
mov r8, QWORD PTR [r10+rcx]
|
|
||||||
mov r9, QWORD PTR [r10+rcx+8]
|
|
||||||
|
|
||||||
movd xmm0, rsp
|
|
||||||
movd xmm1, rbx
|
|
||||||
movd xmm2, rsi
|
|
||||||
movd xmm11, rdi
|
|
||||||
movd xmm12, rbp
|
|
||||||
movd xmm13, r15
|
|
||||||
mov [rsp+104], rcx
|
|
||||||
mov [rsp+112], r9
|
|
||||||
|
|
||||||
mov ebx, DWORD PTR [rsp]
|
|
||||||
mov esi, DWORD PTR [rsp+4]
|
|
||||||
mov edi, DWORD PTR [rsp+8]
|
|
||||||
mov ebp, DWORD PTR [rsp+12]
|
|
||||||
|
|
||||||
lea eax, [ebx+esi]
|
|
||||||
lea edx, [edi+ebp]
|
|
||||||
shl rdx, 32
|
|
||||||
or rax, rdx
|
|
||||||
|
|
||||||
xor r8, rax
|
|
||||||
movd xmm3, r8
|
|
||||||
|
|
||||||
movd esp, xmm4
|
|
||||||
pextrd r15d, xmm4, 2
|
|
||||||
movd eax, xmm8
|
|
||||||
movd edx, xmm10
|
|
||||||
pextrd r9d, xmm10, 2
|
|
||||||
|
|
||||||
CryptonightWOW_template_double_part3:
|
|
||||||
|
|
||||||
movd rsp, xmm0
|
|
||||||
mov DWORD PTR [rsp], ebx
|
|
||||||
mov DWORD PTR [rsp+4], esi
|
|
||||||
mov DWORD PTR [rsp+8], edi
|
|
||||||
mov DWORD PTR [rsp+12], ebp
|
|
||||||
|
|
||||||
movd rbx, xmm1
|
|
||||||
movd rsi, xmm2
|
|
||||||
movd rdi, xmm11
|
|
||||||
movd rbp, xmm12
|
|
||||||
movd r15, xmm13
|
|
||||||
mov rcx, [rsp+104]
|
|
||||||
mov r9, [rsp+112]
|
|
||||||
|
|
||||||
mov rax, r8
|
|
||||||
mul rdi
|
|
||||||
movd xmm1, rdx
|
|
||||||
movd xmm0, rax
|
|
||||||
punpcklqdq xmm1, xmm0
|
|
||||||
mov rdi, rcx
|
|
||||||
mov r8, rax
|
|
||||||
pxor xmm1, XMMWORD PTR [rbp+rcx]
|
|
||||||
xor ebp, 48
|
|
||||||
paddq xmm1, xmm8
|
|
||||||
xor r8, QWORD PTR [rbp+rcx+8]
|
|
||||||
xor rdx, QWORD PTR [rbp+rcx]
|
|
||||||
add r13, r8
|
|
||||||
movdqu xmm2, XMMWORD PTR [rbp+rcx]
|
|
||||||
add r15, rdx
|
|
||||||
movdqu XMMWORD PTR [rbp+rcx], xmm1
|
|
||||||
paddq xmm2, xmm4
|
|
||||||
xor ebp, 16
|
|
||||||
mov eax, ebp
|
|
||||||
xor rax, 32
|
|
||||||
movdqu xmm0, XMMWORD PTR [rbp+rcx]
|
|
||||||
movdqu XMMWORD PTR [rbp+rcx], xmm2
|
|
||||||
paddq xmm0, xmm10
|
|
||||||
movdqu XMMWORD PTR [rax+rcx], xmm0
|
|
||||||
movd rax, xmm3
|
|
||||||
movdqa xmm10, xmm8
|
|
||||||
mov QWORD PTR [r10+rcx], r15
|
|
||||||
movdqa xmm8, xmm5
|
|
||||||
xor r15, rax
|
|
||||||
mov QWORD PTR [r10+rcx+8], r13
|
|
||||||
mov r8d, r15d
|
|
||||||
xor r13, r9
|
|
||||||
and r8d, 2097136
|
|
||||||
dec r11d
|
|
||||||
jnz CryptonightWOW_template_double_mainloop
|
|
||||||
|
|
||||||
CryptonightWOW_template_double_part4:
|
|
||||||
|
|
||||||
mov rbx, QWORD PTR [rsp+400]
|
|
||||||
movaps xmm6, XMMWORD PTR [rsp+160]
|
|
||||||
movaps xmm7, XMMWORD PTR [rsp+176]
|
|
||||||
movaps xmm8, XMMWORD PTR [rsp+192]
|
|
||||||
movaps xmm9, XMMWORD PTR [rsp+208]
|
|
||||||
movaps xmm10, XMMWORD PTR [rsp+224]
|
|
||||||
movaps xmm11, XMMWORD PTR [rsp+240]
|
|
||||||
movaps xmm12, XMMWORD PTR [rsp+256]
|
|
||||||
movaps xmm13, XMMWORD PTR [rsp+272]
|
|
||||||
movaps xmm14, XMMWORD PTR [rsp+288]
|
|
||||||
movaps xmm15, XMMWORD PTR [rsp+304]
|
|
||||||
add rsp, 320
|
|
||||||
pop r15
|
|
||||||
pop r14
|
|
||||||
pop r13
|
|
||||||
pop r12
|
|
||||||
pop rdi
|
|
||||||
pop rsi
|
|
||||||
pop rbp
|
|
||||||
ret 0
|
|
||||||
CryptonightWOW_template_double_end:
|
|
|
@ -99,20 +99,6 @@ static inline void add_random_math(uint8_t* &p, const V4_Instruction* code, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wow_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
|
||||||
{
|
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
|
||||||
uint8_t* p = p0;
|
|
||||||
|
|
||||||
add_code(p, CryptonightWOW_template_part1, CryptonightWOW_template_part2);
|
|
||||||
add_random_math(p, code, code_size, instructions, instructions_mov, false, ASM);
|
|
||||||
add_code(p, CryptonightWOW_template_part2, CryptonightWOW_template_part3);
|
|
||||||
*(int*)(p - 4) = static_cast<int>((((const uint8_t*)CryptonightWOW_template_mainloop) - ((const uint8_t*)CryptonightWOW_template_part1)) - (p - p0));
|
|
||||||
add_code(p, CryptonightWOW_template_part3, CryptonightWOW_template_end);
|
|
||||||
|
|
||||||
xmrig::VirtualMemory::flushInstructionCache(machine_code, p - p0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void v4_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
void v4_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
||||||
{
|
{
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
||||||
|
@ -127,22 +113,6 @@ void v4_compile_code(const V4_Instruction* code, int code_size, void* machine_co
|
||||||
xmrig::VirtualMemory::flushInstructionCache(machine_code, p - p0);
|
xmrig::VirtualMemory::flushInstructionCache(machine_code, p - p0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wow_compile_code_double(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
|
||||||
{
|
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
|
||||||
uint8_t* p = p0;
|
|
||||||
|
|
||||||
add_code(p, CryptonightWOW_template_double_part1, CryptonightWOW_template_double_part2);
|
|
||||||
add_random_math(p, code, code_size, instructions, instructions_mov, false, ASM);
|
|
||||||
add_code(p, CryptonightWOW_template_double_part2, CryptonightWOW_template_double_part3);
|
|
||||||
add_random_math(p, code, code_size, instructions, instructions_mov, false, ASM);
|
|
||||||
add_code(p, CryptonightWOW_template_double_part3, CryptonightWOW_template_double_part4);
|
|
||||||
*(int*)(p - 4) = static_cast<int>((((const uint8_t*)CryptonightWOW_template_double_mainloop) - ((const uint8_t*)CryptonightWOW_template_double_part1)) - (p - p0));
|
|
||||||
add_code(p, CryptonightWOW_template_double_part4, CryptonightWOW_template_double_end);
|
|
||||||
|
|
||||||
xmrig::VirtualMemory::flushInstructionCache(machine_code, p - p0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void v4_compile_code_double(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
void v4_compile_code_double(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
||||||
{
|
{
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
||||||
|
@ -159,20 +129,6 @@ void v4_compile_code_double(const V4_Instruction* code, int code_size, void* mac
|
||||||
xmrig::VirtualMemory::flushInstructionCache(machine_code, p - p0);
|
xmrig::VirtualMemory::flushInstructionCache(machine_code, p - p0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wow_soft_aes_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
|
||||||
{
|
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
|
||||||
uint8_t* p = p0;
|
|
||||||
|
|
||||||
add_code(p, CryptonightWOW_soft_aes_template_part1, CryptonightWOW_soft_aes_template_part2);
|
|
||||||
add_random_math(p, code, code_size, instructions, instructions_mov, false, ASM);
|
|
||||||
add_code(p, CryptonightWOW_soft_aes_template_part2, CryptonightWOW_soft_aes_template_part3);
|
|
||||||
*(int*)(p - 4) = static_cast<int>((((const uint8_t*)CryptonightWOW_soft_aes_template_mainloop) - ((const uint8_t*)CryptonightWOW_soft_aes_template_part1)) - (p - p0));
|
|
||||||
add_code(p, CryptonightWOW_soft_aes_template_part3, CryptonightWOW_soft_aes_template_end);
|
|
||||||
|
|
||||||
xmrig::VirtualMemory::flushInstructionCache(machine_code, p - p0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void v4_soft_aes_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
void v4_soft_aes_compile_code(const V4_Instruction* code, int code_size, void* machine_code, xmrig::Assembly ASM)
|
||||||
{
|
{
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
uint8_t* p0 = reinterpret_cast<uint8_t*>(machine_code);
|
||||||
|
|
|
@ -255,7 +255,7 @@ static int v4_random_math_init(struct V4_Instruction* code, const uint64_t heigh
|
||||||
code_size = 0;
|
code_size = 0;
|
||||||
|
|
||||||
int total_iterations = 0;
|
int total_iterations = 0;
|
||||||
r8_used = (ALGO == xmrig::Algorithm::CN_WOW);
|
r8_used = false;
|
||||||
|
|
||||||
// Generate random code to achieve minimal required latency for our abstract CPU
|
// Generate random code to achieve minimal required latency for our abstract CPU
|
||||||
// Try to get this latency for all 4 registers
|
// Try to get this latency for all 4 registers
|
||||||
|
@ -299,7 +299,7 @@ static int v4_random_math_init(struct V4_Instruction* code, const uint64_t heigh
|
||||||
// Don't do ADD/SUB/XOR with the same register
|
// Don't do ADD/SUB/XOR with the same register
|
||||||
if (((opcode == ADD) || (opcode == SUB) || (opcode == XOR)) && (a == b)) {
|
if (((opcode == ADD) || (opcode == SUB) || (opcode == XOR)) && (a == b)) {
|
||||||
// a is always < 4, so we don't need to check bounds here
|
// a is always < 4, so we don't need to check bounds here
|
||||||
b = (ALGO == xmrig::Algorithm::CN_WOW) ? (a + 4) : 8;
|
b = 8;
|
||||||
src_index = b;
|
src_index = b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,6 @@ static AlgoName const algorithm_names[] = {
|
||||||
{ "cryptonight_v8", nullptr, Algorithm::CN_2 },
|
{ "cryptonight_v8", nullptr, Algorithm::CN_2 },
|
||||||
{ "cryptonight/r", "cn/r", Algorithm::CN_R },
|
{ "cryptonight/r", "cn/r", Algorithm::CN_R },
|
||||||
{ "cryptonight_r", nullptr, Algorithm::CN_R },
|
{ "cryptonight_r", nullptr, Algorithm::CN_R },
|
||||||
{ "cryptonight/wow", "cn/wow", Algorithm::CN_WOW },
|
|
||||||
{ "cryptonight/fast", "cn/fast", Algorithm::CN_FAST },
|
{ "cryptonight/fast", "cn/fast", Algorithm::CN_FAST },
|
||||||
{ "cryptonight/msr", "cn/msr", Algorithm::CN_FAST },
|
{ "cryptonight/msr", "cn/msr", Algorithm::CN_FAST },
|
||||||
{ "cryptonight/half", "cn/half", Algorithm::CN_HALF },
|
{ "cryptonight/half", "cn/half", Algorithm::CN_HALF },
|
||||||
|
@ -232,7 +231,6 @@ xmrig::Algorithm::Family xmrig::Algorithm::family(Id id)
|
||||||
case CN_1:
|
case CN_1:
|
||||||
case CN_2:
|
case CN_2:
|
||||||
case CN_R:
|
case CN_R:
|
||||||
case CN_WOW:
|
|
||||||
case CN_FAST:
|
case CN_FAST:
|
||||||
case CN_HALF:
|
case CN_HALF:
|
||||||
case CN_XAO:
|
case CN_XAO:
|
||||||
|
|
|
@ -45,7 +45,6 @@ public:
|
||||||
CN_1, // "cn/1" CryptoNight variant 1 also known as Monero7 and CryptoNightV7.
|
CN_1, // "cn/1" CryptoNight variant 1 also known as Monero7 and CryptoNightV7.
|
||||||
CN_2, // "cn/2" CryptoNight variant 2.
|
CN_2, // "cn/2" CryptoNight variant 2.
|
||||||
CN_R, // "cn/r" CryptoNightR (Monero's variant 4).
|
CN_R, // "cn/r" CryptoNightR (Monero's variant 4).
|
||||||
CN_WOW, // "cn/wow" CryptoNightR (Wownero).
|
|
||||||
CN_FAST, // "cn/fast" CryptoNight variant 1 with half iterations.
|
CN_FAST, // "cn/fast" CryptoNight variant 1 with half iterations.
|
||||||
CN_HALF, // "cn/half" CryptoNight variant 2 with half iterations (Masari/Torque).
|
CN_HALF, // "cn/half" CryptoNight variant 2 with half iterations (Masari/Torque).
|
||||||
CN_XAO, // "cn/xao" CryptoNight variant 0 (modified, Alloy only).
|
CN_XAO, // "cn/xao" CryptoNight variant 0 (modified, Alloy only).
|
||||||
|
|
Loading…
Reference in a new issue