70 lines
1.4 KiB
PHP
70 lines
1.4 KiB
PHP
mov QWORD PTR [rsp+8], rbx
|
|
mov QWORD PTR [rsp+16], rbp
|
|
mov QWORD PTR [rsp+24], rsi
|
|
mov QWORD PTR [rsp+32], rdi
|
|
push r14
|
|
push r15
|
|
mov rax, QWORD PTR [rcx+48]
|
|
mov ebp, 262144
|
|
xor rax, QWORD PTR [rcx+16]
|
|
mov rdx, QWORD PTR [rcx+56]
|
|
xor rdx, QWORD PTR [rcx+24]
|
|
mov r8, QWORD PTR [rcx+32]
|
|
xor r8, QWORD PTR [rcx]
|
|
movq xmm3, rax
|
|
mov rax, QWORD PTR [rcx+256]
|
|
mov rdi, QWORD PTR [rcx+40]
|
|
movq xmm0, rdx
|
|
xor rdi, QWORD PTR [rcx+8]
|
|
mov rdx, r8
|
|
mov r15, QWORD PTR [rcx+264]
|
|
and edx, 2097136
|
|
mov r14, QWORD PTR [rax+35]
|
|
xor r14, QWORD PTR [rcx+192]
|
|
mov rsi, QWORD PTR [rcx+224]
|
|
punpcklqdq xmm3, xmm0
|
|
movdqu xmm2, XMMWORD PTR [rdx+rsi]
|
|
|
|
ALIGN 64
|
|
cn_fast_mainloop_sandybridge:
|
|
movq xmm0, rdi
|
|
movq xmm1, r8
|
|
punpcklqdq xmm1, xmm0
|
|
aesenc xmm2, xmm1
|
|
movq r10, xmm2
|
|
mov r9d, r10d
|
|
and r9d, 2097136
|
|
add r9, rsi
|
|
movdqa xmm0, xmm2
|
|
pxor xmm0, xmm3
|
|
movdqa xmm3, xmm2
|
|
movdqu XMMWORD PTR [rdx+rsi], xmm0
|
|
psrldq xmm0, 11
|
|
movq rax, xmm0
|
|
movzx eax, al
|
|
movzx eax, BYTE PTR [rax+r15]
|
|
mov BYTE PTR [rsi+rdx+11], al
|
|
mov rbx, QWORD PTR [r9]
|
|
mov r11, QWORD PTR [r9+8]
|
|
mov rax, rbx
|
|
mul r10
|
|
add r8, rdx
|
|
mov QWORD PTR [r9], r8
|
|
add rdi, rax
|
|
mov rax, r14
|
|
xor rax, rdi
|
|
mov QWORD PTR [r9+8], rax
|
|
xor r8, rbx
|
|
mov rdx, r8
|
|
and edx, 2097136
|
|
movdqu xmm2, XMMWORD PTR [rdx+rsi]
|
|
xor rdi, r11
|
|
dec ebp
|
|
jne cn_fast_mainloop_sandybridge
|
|
|
|
mov rbx, QWORD PTR [rsp+24]
|
|
mov rbp, QWORD PTR [rsp+32]
|
|
mov rsi, QWORD PTR [rsp+40]
|
|
mov rdi, QWORD PTR [rsp+48]
|
|
pop r15
|
|
pop r14
|