![support@xmrig.com](/assets/img/avatar_default.png)
19 changed files with 4 additions and 2401 deletions
@ -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: |
|
@ -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: |
|
Loading…
Reference in new issue