mirror of https://github.com/BLAKE3-team/BLAKE3
1829 lines
64 KiB
NASM
1829 lines
64 KiB
NASM
|
public _blake3_hash_many_avx2
|
||
|
public blake3_hash_many_avx2
|
||
|
|
||
|
_TEXT SEGMENT ALIGN(16) 'CODE'
|
||
|
|
||
|
ALIGN 16
|
||
|
blake3_hash_many_avx2 PROC
|
||
|
_blake3_hash_many_avx2 PROC
|
||
|
push r15
|
||
|
push r14
|
||
|
push r13
|
||
|
push r12
|
||
|
push rsi
|
||
|
push rdi
|
||
|
push rbx
|
||
|
push rbp
|
||
|
mov rbp, rsp
|
||
|
sub rsp, 880
|
||
|
and rsp, 0FFFFFFFFFFFFFFC0H
|
||
|
vmovdqa xmmword ptr [rsp+2D0H], xmm6
|
||
|
vmovdqa xmmword ptr [rsp+2E0H], xmm7
|
||
|
vmovdqa xmmword ptr [rsp+2F0H], xmm8
|
||
|
vmovdqa xmmword ptr [rsp+300H], xmm9
|
||
|
vmovdqa xmmword ptr [rsp+310H], xmm10
|
||
|
vmovdqa xmmword ptr [rsp+320H], xmm11
|
||
|
vmovdqa xmmword ptr [rsp+330H], xmm12
|
||
|
vmovdqa xmmword ptr [rsp+340H], xmm13
|
||
|
vmovdqa xmmword ptr [rsp+350H], xmm14
|
||
|
vmovdqa xmmword ptr [rsp+360H], xmm15
|
||
|
mov rdi, rcx
|
||
|
mov rsi, rdx
|
||
|
mov rdx, r8
|
||
|
mov rcx, r9
|
||
|
mov r8, qword ptr [rbp+68H]
|
||
|
movzx r9, byte ptr [rbp+70H]
|
||
|
neg r9d
|
||
|
vmovd xmm0, r9d
|
||
|
vpbroadcastd ymm0, xmm0
|
||
|
vmovdqa ymmword ptr [rsp+260H], ymm0
|
||
|
vpand ymm1, ymm0, ymmword ptr [ADD0]
|
||
|
vpand ymm2, ymm0, ymmword ptr [ADD1]
|
||
|
vmovdqa ymmword ptr [rsp+2A0H], ymm2
|
||
|
vmovd xmm2, r8d
|
||
|
vpbroadcastd ymm2, xmm2
|
||
|
vpaddd ymm2, ymm2, ymm1
|
||
|
vmovdqa ymmword ptr [rsp+220H], ymm2
|
||
|
vpxor ymm1, ymm1, ymmword ptr [CMP_MSB_MASK]
|
||
|
vpxor ymm2, ymm2, ymmword ptr [CMP_MSB_MASK]
|
||
|
vpcmpgtd ymm2, ymm1, ymm2
|
||
|
shr r8, 32
|
||
|
vmovd xmm3, r8d
|
||
|
vpbroadcastd ymm3, xmm3
|
||
|
vpsubd ymm3, ymm3, ymm2
|
||
|
vmovdqa ymmword ptr [rsp+240H], ymm3
|
||
|
shl rdx, 6
|
||
|
mov qword ptr [rsp+2C0H], rdx
|
||
|
cmp rsi, 8
|
||
|
jc final7blocks
|
||
|
outerloop8:
|
||
|
vpbroadcastd ymm0, dword ptr [rcx]
|
||
|
vpbroadcastd ymm1, dword ptr [rcx+4H]
|
||
|
vpbroadcastd ymm2, dword ptr [rcx+8H]
|
||
|
vpbroadcastd ymm3, dword ptr [rcx+0CH]
|
||
|
vpbroadcastd ymm4, dword ptr [rcx+10H]
|
||
|
vpbroadcastd ymm5, dword ptr [rcx+14H]
|
||
|
vpbroadcastd ymm6, dword ptr [rcx+18H]
|
||
|
vpbroadcastd ymm7, dword ptr [rcx+1CH]
|
||
|
mov r8, qword ptr [rdi]
|
||
|
mov r9, qword ptr [rdi+8H]
|
||
|
mov r10, qword ptr [rdi+10H]
|
||
|
mov r11, qword ptr [rdi+18H]
|
||
|
mov r12, qword ptr [rdi+20H]
|
||
|
mov r13, qword ptr [rdi+28H]
|
||
|
mov r14, qword ptr [rdi+30H]
|
||
|
mov r15, qword ptr [rdi+38H]
|
||
|
movzx eax, byte ptr [rbp+78H]
|
||
|
movzx ebx, byte ptr [rbp+80H]
|
||
|
or eax, ebx
|
||
|
xor edx, edx
|
||
|
ALIGN 16
|
||
|
innerloop8:
|
||
|
movzx ebx, byte ptr [rbp+88H]
|
||
|
or ebx, eax
|
||
|
add rdx, 64
|
||
|
cmp rdx, qword ptr [rsp+2C0H]
|
||
|
cmove eax, ebx
|
||
|
mov dword ptr [rsp+200H], eax
|
||
|
vmovups xmm8, xmmword ptr [r8+rdx-40H]
|
||
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-40H], 01H
|
||
|
vmovups xmm9, xmmword ptr [r9+rdx-40H]
|
||
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-40H], 01H
|
||
|
vunpcklpd ymm12, ymm8, ymm9
|
||
|
vunpckhpd ymm13, ymm8, ymm9
|
||
|
vmovups xmm10, xmmword ptr [r10+rdx-40H]
|
||
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-40H], 01H
|
||
|
vmovups xmm11, xmmword ptr [r11+rdx-40H]
|
||
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-40H], 01H
|
||
|
vunpcklpd ymm14, ymm10, ymm11
|
||
|
vunpckhpd ymm15, ymm10, ymm11
|
||
|
vshufps ymm8, ymm12, ymm14, 136
|
||
|
vmovaps ymmword ptr [rsp], ymm8
|
||
|
vshufps ymm9, ymm12, ymm14, 221
|
||
|
vmovaps ymmword ptr [rsp+20H], ymm9
|
||
|
vshufps ymm10, ymm13, ymm15, 136
|
||
|
vmovaps ymmword ptr [rsp+40H], ymm10
|
||
|
vshufps ymm11, ymm13, ymm15, 221
|
||
|
vmovaps ymmword ptr [rsp+60H], ymm11
|
||
|
vmovups xmm8, xmmword ptr [r8+rdx-30H]
|
||
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-30H], 01H
|
||
|
vmovups xmm9, xmmword ptr [r9+rdx-30H]
|
||
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-30H], 01H
|
||
|
vunpcklpd ymm12, ymm8, ymm9
|
||
|
vunpckhpd ymm13, ymm8, ymm9
|
||
|
vmovups xmm10, xmmword ptr [r10+rdx-30H]
|
||
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-30H], 01H
|
||
|
vmovups xmm11, xmmword ptr [r11+rdx-30H]
|
||
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-30H], 01H
|
||
|
vunpcklpd ymm14, ymm10, ymm11
|
||
|
vunpckhpd ymm15, ymm10, ymm11
|
||
|
vshufps ymm8, ymm12, ymm14, 136
|
||
|
vmovaps ymmword ptr [rsp+80H], ymm8
|
||
|
vshufps ymm9, ymm12, ymm14, 221
|
||
|
vmovaps ymmword ptr [rsp+0A0H], ymm9
|
||
|
vshufps ymm10, ymm13, ymm15, 136
|
||
|
vmovaps ymmword ptr [rsp+0C0H], ymm10
|
||
|
vshufps ymm11, ymm13, ymm15, 221
|
||
|
vmovaps ymmword ptr [rsp+0E0H], ymm11
|
||
|
vmovups xmm8, xmmword ptr [r8+rdx-20H]
|
||
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-20H], 01H
|
||
|
vmovups xmm9, xmmword ptr [r9+rdx-20H]
|
||
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-20H], 01H
|
||
|
vunpcklpd ymm12, ymm8, ymm9
|
||
|
vunpckhpd ymm13, ymm8, ymm9
|
||
|
vmovups xmm10, xmmword ptr [r10+rdx-20H]
|
||
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-20H], 01H
|
||
|
vmovups xmm11, xmmword ptr [r11+rdx-20H]
|
||
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-20H], 01H
|
||
|
vunpcklpd ymm14, ymm10, ymm11
|
||
|
vunpckhpd ymm15, ymm10, ymm11
|
||
|
vshufps ymm8, ymm12, ymm14, 136
|
||
|
vmovaps ymmword ptr [rsp+100H], ymm8
|
||
|
vshufps ymm9, ymm12, ymm14, 221
|
||
|
vmovaps ymmword ptr [rsp+120H], ymm9
|
||
|
vshufps ymm10, ymm13, ymm15, 136
|
||
|
vmovaps ymmword ptr [rsp+140H], ymm10
|
||
|
vshufps ymm11, ymm13, ymm15, 221
|
||
|
vmovaps ymmword ptr [rsp+160H], ymm11
|
||
|
vmovups xmm8, xmmword ptr [r8+rdx-10H]
|
||
|
vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-10H], 01H
|
||
|
vmovups xmm9, xmmword ptr [r9+rdx-10H]
|
||
|
vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-10H], 01H
|
||
|
vunpcklpd ymm12, ymm8, ymm9
|
||
|
vunpckhpd ymm13, ymm8, ymm9
|
||
|
vmovups xmm10, xmmword ptr [r10+rdx-10H]
|
||
|
vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-10H], 01H
|
||
|
vmovups xmm11, xmmword ptr [r11+rdx-10H]
|
||
|
vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-10H], 01H
|
||
|
vunpcklpd ymm14, ymm10, ymm11
|
||
|
vunpckhpd ymm15, ymm10, ymm11
|
||
|
vshufps ymm8, ymm12, ymm14, 136
|
||
|
vmovaps ymmword ptr [rsp+180H], ymm8
|
||
|
vshufps ymm9, ymm12, ymm14, 221
|
||
|
vmovaps ymmword ptr [rsp+1A0H], ymm9
|
||
|
vshufps ymm10, ymm13, ymm15, 136
|
||
|
vmovaps ymmword ptr [rsp+1C0H], ymm10
|
||
|
vshufps ymm11, ymm13, ymm15, 221
|
||
|
vmovaps ymmword ptr [rsp+1E0H], ymm11
|
||
|
vpbroadcastd ymm15, dword ptr [rsp+200H]
|
||
|
prefetcht0 byte ptr [r8+rdx+80H]
|
||
|
prefetcht0 byte ptr [r12+rdx+80H]
|
||
|
prefetcht0 byte ptr [r9+rdx+80H]
|
||
|
prefetcht0 byte ptr [r13+rdx+80H]
|
||
|
prefetcht0 byte ptr [r10+rdx+80H]
|
||
|
prefetcht0 byte ptr [r14+rdx+80H]
|
||
|
prefetcht0 byte ptr [r11+rdx+80H]
|
||
|
prefetcht0 byte ptr [r15+rdx+80H]
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+40H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+80H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0C0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm0, ymmword ptr [rsp+220H]
|
||
|
vpxor ymm13, ymm1, ymmword ptr [rsp+240H]
|
||
|
vpxor ymm14, ymm2, ymmword ptr [BLAKE3_BLOCK_LEN]
|
||
|
vpxor ymm15, ymm3, ymm15
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [BLAKE3_IV_0]
|
||
|
vpaddd ymm9, ymm13, ymmword ptr [BLAKE3_IV_1]
|
||
|
vpaddd ymm10, ymm14, ymmword ptr [BLAKE3_IV_2]
|
||
|
vpaddd ymm11, ymm15, ymmword ptr [BLAKE3_IV_3]
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+20H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+60H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0A0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0E0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+100H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+140H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+180H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1C0H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+120H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+160H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+1A0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1E0H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+40H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+60H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0E0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+80H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0C0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+140H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1A0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+20H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+180H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+120H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1E0H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+160H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0A0H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+1C0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+100H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+60H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+140H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+1A0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0E0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+80H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+180H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+40H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1C0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0C0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+120H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+160H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+100H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0A0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+1E0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+20H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+140H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+180H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+1C0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1A0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0E0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+120H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+60H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1E0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+80H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+160H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0A0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+20H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+40H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+100H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0C0H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+180H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+120H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+1E0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1C0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+1A0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+160H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+140H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+100H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+0E0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0A0H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0C0H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+40H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+60H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+20H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+80H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+120H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+160H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+100H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+1E0H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+1C0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0A0H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+180H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+20H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+1A0H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+40H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+80H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 12
|
||
|
vpslld ymm6, ymm6, 20
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 12
|
||
|
vpslld ymm7, ymm7, 20
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+60H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+140H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+0C0H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+0E0H]
|
||
|
vpaddd ymm0, ymm0, ymm5
|
||
|
vpaddd ymm1, ymm1, ymm6
|
||
|
vpaddd ymm2, ymm2, ymm7
|
||
|
vpaddd ymm3, ymm3, ymm4
|
||
|
vpxor ymm15, ymm15, ymm0
|
||
|
vpxor ymm12, ymm12, ymm1
|
||
|
vpxor ymm13, ymm13, ymm2
|
||
|
vpxor ymm14, ymm14, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT8]
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpaddd ymm10, ymm10, ymm15
|
||
|
vpaddd ymm11, ymm11, ymm12
|
||
|
vpaddd ymm8, ymm13, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm14
|
||
|
vpxor ymm5, ymm5, ymm10
|
||
|
vpxor ymm6, ymm6, ymm11
|
||
|
vpxor ymm7, ymm7, ymm8
|
||
|
vpxor ymm4, ymm4, ymm9
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm5, 7
|
||
|
vpslld ymm5, ymm5, 25
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|
vpsrld ymm8, ymm6, 7
|
||
|
vpslld ymm6, ymm6, 25
|
||
|
vpor ymm6, ymm6, ymm8
|
||
|
vpsrld ymm8, ymm7, 7
|
||
|
vpslld ymm7, ymm7, 25
|
||
|
vpor ymm7, ymm7, ymm8
|
||
|
vpsrld ymm8, ymm4, 7
|
||
|
vpslld ymm4, ymm4, 25
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpaddd ymm0, ymm0, ymmword ptr [rsp+160H]
|
||
|
vpaddd ymm1, ymm1, ymmword ptr [rsp+0A0H]
|
||
|
vpaddd ymm2, ymm2, ymmword ptr [rsp+20H]
|
||
|
vpaddd ymm3, ymm3, ymmword ptr [rsp+100H]
|
||
|
vpaddd ymm0, ymm0, ymm4
|
||
|
vpaddd ymm1, ymm1, ymm5
|
||
|
vpaddd ymm2, ymm2, ymm6
|
||
|
vpaddd ymm3, ymm3, ymm7
|
||
|
vpxor ymm12, ymm12, ymm0
|
||
|
vpxor ymm13, ymm13, ymm1
|
||
|
vpxor ymm14, ymm14, ymm2
|
||
|
vpxor ymm15, ymm15, ymm3
|
||
|
vbroadcasti128 ymm8, xmmword ptr [ROT16]
|
||
|
vpshufb ymm12, ymm12, ymm8
|
||
|
vpshufb ymm13, ymm13, ymm8
|
||
|
vpshufb ymm14, ymm14, ymm8
|
||
|
vpshufb ymm15, ymm15, ymm8
|
||
|
vpaddd ymm8, ymm12, ymmword ptr [rsp+200H]
|
||
|
vpaddd ymm9, ymm9, ymm13
|
||
|
vpaddd ymm10, ymm10, ymm14
|
||
|
vpaddd ymm11, ymm11, ymm15
|
||
|
vpxor ymm4, ymm4, ymm8
|
||
|
vpxor ymm5, ymm5, ymm9
|
||
|
vpxor ymm6, ymm6, ymm10
|
||
|
vpxor ymm7, ymm7, ymm11
|
||
|
vmovdqa ymmword ptr [rsp+200H], ymm8
|
||
|
vpsrld ymm8, ymm4, 12
|
||
|
vpslld ymm4, ymm4, 20
|
||
|
vpor ymm4, ymm4, ymm8
|
||
|
vpsrld ymm8, ymm5, 12
|
||
|
vpslld ymm5, ymm5, 20
|
||
|
vpor ymm5, ymm5, ymm8
|
||
|