mirror of
https://github.com/xmrig/xmrig.git
synced 2024-12-23 03:59:41 +00:00
279 lines
5.7 KiB
PHP
279 lines
5.7 KiB
PHP
PUBLIC FN_PREFIX(CryptonightR_soft_aes_template_part1)
|
|
PUBLIC FN_PREFIX(CryptonightR_soft_aes_template_mainloop)
|
|
PUBLIC FN_PREFIX(CryptonightR_soft_aes_template_part2)
|
|
PUBLIC FN_PREFIX(CryptonightR_soft_aes_template_part3)
|
|
PUBLIC FN_PREFIX(CryptonightR_soft_aes_template_end)
|
|
|
|
ALIGN(64)
|
|
FN_PREFIX(CryptonightR_soft_aes_template_part1):
|
|
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(CryptonightR_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, xmm2
|
|
pxor xmm6, xmm7
|
|
paddq xmm2, xmm4
|
|
movdqu xmm1, XMMWORD PTR [rax+r11]
|
|
movdqu xmm0, XMMWORD PTR [rdx+r11]
|
|
pxor xmm6, xmm1
|
|
pxor xmm6, xmm0
|
|
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
|
|
movaps xmm0, xmm5
|
|
psrldq xmm0, 8
|
|
movd r9d, xmm0
|
|
|
|
FN_PREFIX(CryptonightR_soft_aes_template_part2):
|
|
mov rsp, r10
|
|
mov [rsp+144], ebx
|
|
mov [rsp+148], esi
|
|
mov [rsp+152], edi
|
|
mov [rsp+156], ebp
|
|
|
|
mov edi, edi
|
|
shl rbp, 32
|
|
or rbp, rdi
|
|
xor r8, rbp
|
|
|
|
mov ebx, ebx
|
|
shl rsi, 32
|
|
or rsi, rbx
|
|
xor QWORD PTR [rsp+320], rsi
|
|
|
|
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]
|
|
pxor xmm6, xmm2
|
|
pxor xmm6, xmm1
|
|
paddq xmm1, xmm7
|
|
add r8, rdx
|
|
movdqu xmm0, XMMWORD PTR [r10+r11]
|
|
pxor xmm6, xmm0
|
|
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(CryptonightR_soft_aes_template_mainloop)
|
|
|
|
FN_PREFIX(CryptonightR_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(CryptonightR_soft_aes_template_end):
|