133 lines
2.7 KiB
PHP
133 lines
2.7 KiB
PHP
mov QWORD PTR [rsp+8], rbx
|
|
mov QWORD PTR [rsp+16], rbp
|
|
mov QWORD PTR [rsp+24], rsi
|
|
push rdi
|
|
push r12
|
|
push r13
|
|
push r14
|
|
push r15
|
|
sub rsp, 32
|
|
mov rdx, QWORD PTR [rcx]
|
|
mov r8, QWORD PTR [rcx+8]
|
|
mov r12d, 524288
|
|
movaps XMMWORD PTR [rsp+16], xmm6
|
|
mov rbx, QWORD PTR [rdx+32]
|
|
xor rbx, QWORD PTR [rdx]
|
|
mov rsi, QWORD PTR [rdx+40]
|
|
mov r10, rbx
|
|
xor rsi, QWORD PTR [rdx+8]
|
|
and r10d, 2097136
|
|
mov rdi, QWORD PTR [r8+32]
|
|
xor rdi, QWORD PTR [r8]
|
|
movq xmm3, rbx
|
|
mov rbp, QWORD PTR [r8+40]
|
|
mov r9, rdi
|
|
xor rbp, QWORD PTR [r8+8]
|
|
movq xmm0, rsi
|
|
mov rcx, QWORD PTR [rdx+56]
|
|
and r9d, 2097136
|
|
xor rcx, QWORD PTR [rdx+24]
|
|
movq xmm4, rdi
|
|
mov rax, QWORD PTR [rdx+48]
|
|
xor rax, QWORD PTR [rdx+16]
|
|
mov r14, QWORD PTR [rdx+224]
|
|
mov r13, QWORD PTR [rdx+232]
|
|
mov r15, QWORD PTR [r8+224]
|
|
punpcklqdq xmm3, xmm0
|
|
movq xmm0, rbp
|
|
movq xmm5, rax
|
|
punpcklqdq xmm4, xmm0
|
|
mov rax, QWORD PTR [r8+48]
|
|
movq xmm0, rcx
|
|
xor rax, QWORD PTR [r8+16]
|
|
mov rcx, QWORD PTR [r8+56]
|
|
xor rcx, QWORD PTR [r8+24]
|
|
movdqu xmm1, XMMWORD PTR [r14+r10]
|
|
movq xmm6, rax
|
|
punpcklqdq xmm5, xmm0
|
|
mov rax, QWORD PTR [rdx+240]
|
|
movq xmm0, rcx
|
|
movdqu xmm2, XMMWORD PTR [r15+r9]
|
|
mov QWORD PTR [rsp], rax
|
|
mov rax, QWORD PTR [r8+240]
|
|
mov QWORD PTR [rsp+8], rax
|
|
punpcklqdq xmm6, xmm0
|
|
|
|
ALIGN(64)
|
|
main_loop_cnv1_double:
|
|
aesenc xmm1, xmm3
|
|
aesenc xmm2, xmm4
|
|
movdqa xmm0, xmm1
|
|
movq r11, xmm2
|
|
pxor xmm0, xmm5
|
|
movdqa xmm5, xmm1
|
|
movq QWORD PTR [r14+r10], xmm0
|
|
pextrq rcx, xmm0, 1
|
|
mov eax, ecx
|
|
movdqa xmm0, xmm2
|
|
shr rax, 24
|
|
pxor xmm0, xmm6
|
|
movdqa xmm6, xmm2
|
|
mov eax, DWORD PTR [r13+rax*4]
|
|
xor rax, rcx
|
|
mov QWORD PTR [r14+r10+8], rax
|
|
movq QWORD PTR [r15+r9], xmm0
|
|
pextrq rcx, xmm0, 1
|
|
mov eax, ecx
|
|
shr rax, 24
|
|
mov eax, DWORD PTR [r13+rax*4]
|
|
xor rax, rcx
|
|
movq rcx, xmm1
|
|
mov QWORD PTR [r15+r9+8], rax
|
|
mov r9, rcx
|
|
and r9d, 2097136
|
|
mov r10, QWORD PTR [r14+r9]
|
|
mov r8, QWORD PTR [r14+r9+8]
|
|
mov rax, r10
|
|
mul rcx
|
|
add rsi, rax
|
|
add rbx, rdx
|
|
mov rax, QWORD PTR [rsp]
|
|
mov QWORD PTR [r14+r9], rbx
|
|
xor rax, rsi
|
|
mov QWORD PTR [r14+r9+8], rax
|
|
xor rsi, r8
|
|
xor rbx, r10
|
|
mov r8, r11
|
|
and r8d, 2097136
|
|
mov r10, rbx
|
|
and r10d, 2097136
|
|
movq xmm3, rbx
|
|
pinsrq xmm3, rsi, 1
|
|
mov r9, QWORD PTR [r15+r8]
|
|
mov rcx, QWORD PTR [r15+r8+8]
|
|
mov rax, r9
|
|
movdqu xmm1, XMMWORD PTR [r14+r10]
|
|
mul r11
|
|
add rbp, rax
|
|
add rdi, rdx
|
|
mov rax, QWORD PTR [rsp+8]
|
|
mov QWORD PTR [r15+r8], rdi
|
|
xor rax, rbp
|
|
xor rdi, r9
|
|
mov QWORD PTR [r15+r8+8], rax
|
|
mov r9, rdi
|
|
xor rbp, rcx
|
|
and r9d, 2097136
|
|
movq xmm4, rdi
|
|
pinsrq xmm4, rbp, 1
|
|
movdqu xmm2, XMMWORD PTR [r15+r9]
|
|
sub r12, 1
|
|
jne main_loop_cnv1_double
|
|
|
|
mov rbx, QWORD PTR [rsp+80]
|
|
mov rbp, QWORD PTR [rsp+88]
|
|
mov rsi, QWORD PTR [rsp+96]
|
|
movaps xmm6, XMMWORD PTR [rsp+16]
|
|
add rsp, 32
|
|
pop r15
|
|
pop r14
|
|
pop r13
|
|
pop r12
|
|
pop rdi
|