aboutsummaryrefslogtreecommitdiff
path: root/c/blake3_avx512_x86-64_unix.S
diff options
context:
space:
mode:
authorSamuel Neves <[email protected]>2024-09-02 02:58:18 +0100
committerSamuel Neves <[email protected]>2024-09-02 03:28:58 +0100
commit06ea23cf59006e654af53480fdb38ab30610c991 (patch)
tree84b5034561ef17deadad0c28d165dc1ce4267818 /c/blake3_avx512_x86-64_unix.S
parent8e2e07e0222851a7f071eee9ffaca4c17fb7872c (diff)
wip asm refresh
Diffstat (limited to 'c/blake3_avx512_x86-64_unix.S')
-rw-r--r--c/blake3_avx512_x86-64_unix.S6368
1 files changed, 1853 insertions, 4515 deletions
diff --git a/c/blake3_avx512_x86-64_unix.S b/c/blake3_avx512_x86-64_unix.S
index 9642e41..9b82424 100644
--- a/c/blake3_avx512_x86-64_unix.S
+++ b/c/blake3_avx512_x86-64_unix.S
@@ -31,2360 +31,1059 @@
_blake3_hash_many_avx512:
blake3_hash_many_avx512:
_CET_ENDBR
- push r15
- push r14
- push r13
- push r12
- push rbx
- push rbp
- mov rbp, rsp
- sub rsp, 144
- and rsp, 0xFFFFFFFFFFFFFFC0
- neg r9
- kmovw k1, r9d
- vmovd xmm0, r8d
- vpbroadcastd ymm0, xmm0
- shr r8, 32
- vmovd xmm1, r8d
- vpbroadcastd ymm1, xmm1
- vmovdqa ymm4, ymm1
- vmovdqa ymm5, ymm1
- vpaddd ymm2, ymm0, ymmword ptr [ADD0+rip]
- vpaddd ymm3, ymm0, ymmword ptr [ADD0+32+rip]
- vpcmpltud k2, ymm2, ymm0
- vpcmpltud k3, ymm3, ymm0
- vpaddd ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8}
- vpaddd ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8}
- knotw k2, k1
- vmovdqa32 ymm2 {k2}, ymm0
- vmovdqa32 ymm3 {k2}, ymm0
- vmovdqa32 ymm4 {k2}, ymm1
- vmovdqa32 ymm5 {k2}, ymm1
+ push rbx
+ push rbp
+ push r12
+ push r13
+ push r14
+ push r15
+ mov rbp, rsp
+ sub rsp, 0x140
+ and rsp, 0xFFFFFFFFFFFFFFC0
+ movzx r9d, r9b
+ neg r9d
+ kmovw k1, r9d
+ vpbroadcastd ymm0, r8d
+ shr r8, 0x20
+ vpbroadcastd ymm1, r8d
+ vmovdqa32 ymm2 {k1} {z}, ymmword ptr [rip+ADD0+ 0]
+ vmovdqa32 ymm3 {k1} {z}, ymmword ptr [rip+ADD0+32]
+ vpaddd ymm2, ymm0, ymm2
vmovdqa ymmword ptr [rsp], ymm2
- vmovdqa ymmword ptr [rsp+0x1*0x20], ymm3
- vmovdqa ymmword ptr [rsp+0x2*0x20], ymm4
- vmovdqa ymmword ptr [rsp+0x3*0x20], ymm5
- shl rdx, 6
- mov qword ptr [rsp+0x80], rdx
- cmp rsi, 16
- jc 3f
+ vpaddd ymm3, ymm0, ymm3
+ vmovdqa ymmword ptr [rsp+0x20], ymm3
+ vpcmpud k2 {k1}, ymm2, ymm0, 0x01
+ vpcmpud k3 {k1}, ymm3, ymm0, 0x01
+ vmovdqa ymm2, ymm1
+ vpaddd ymm2 {k2}, ymm2, dword ptr [rip+ADD1] {1to8}
+ vmovdqa ymmword ptr [rsp+0x40], ymm2
+ vpaddd ymm1 {k3}, ymm1, dword ptr [rip+ADD1] {1to8}
+ vmovdqa ymmword ptr [rsp+0x60], ymm1
+ shl rdx, 0x06
+ mov qword ptr [rsp+0x100], rdx
+ cmp rsi, 0x10
+ jb 5f
+.p2align 5
2:
vpbroadcastd zmm0, dword ptr [rcx]
- vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4]
- vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4]
- vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4]
- vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4]
- vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4]
- vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4]
- vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4]
- movzx eax, byte ptr [rbp+0x38]
- movzx ebx, byte ptr [rbp+0x40]
- or eax, ebx
- xor edx, edx
-.p2align 5
-9:
- movzx ebx, byte ptr [rbp+0x48]
- or ebx, eax
- add rdx, 64
- cmp rdx, qword ptr [rsp+0x80]
- cmove eax, ebx
- mov dword ptr [rsp+0x88], eax
- mov r8, qword ptr [rdi]
- mov r9, qword ptr [rdi+0x8]
- mov r10, qword ptr [rdi+0x10]
- mov r11, qword ptr [rdi+0x18]
- mov r12, qword ptr [rdi+0x40]
- mov r13, qword ptr [rdi+0x48]
- mov r14, qword ptr [rdi+0x50]
- mov r15, qword ptr [rdi+0x58]
- vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
- vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
- vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
- vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
- vpunpcklqdq zmm8, zmm16, zmm17
- vpunpckhqdq zmm9, zmm16, zmm17
- vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
- vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
- vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
- vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
- vpunpcklqdq zmm10, zmm18, zmm19
- vpunpckhqdq zmm11, zmm18, zmm19
- mov r8, qword ptr [rdi+0x20]
- mov r9, qword ptr [rdi+0x28]
- mov r10, qword ptr [rdi+0x30]
- mov r11, qword ptr [rdi+0x38]
- mov r12, qword ptr [rdi+0x60]
- mov r13, qword ptr [rdi+0x68]
- mov r14, qword ptr [rdi+0x70]
- mov r15, qword ptr [rdi+0x78]
- vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
- vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
- vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
- vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
- vpunpcklqdq zmm12, zmm16, zmm17
- vpunpckhqdq zmm13, zmm16, zmm17
- vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
- vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
- vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
- vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
- vpunpcklqdq zmm14, zmm18, zmm19
- vpunpckhqdq zmm15, zmm18, zmm19
- vmovdqa32 zmm27, zmmword ptr [INDEX0+rip]
- vmovdqa32 zmm31, zmmword ptr [INDEX1+rip]
- vshufps zmm16, zmm8, zmm10, 136
- vshufps zmm17, zmm12, zmm14, 136
- vmovdqa32 zmm20, zmm16
- vpermt2d zmm16, zmm27, zmm17
- vpermt2d zmm20, zmm31, zmm17
- vshufps zmm17, zmm8, zmm10, 221
- vshufps zmm30, zmm12, zmm14, 221
- vmovdqa32 zmm21, zmm17
- vpermt2d zmm17, zmm27, zmm30
- vpermt2d zmm21, zmm31, zmm30
- vshufps zmm18, zmm9, zmm11, 136
- vshufps zmm8, zmm13, zmm15, 136
- vmovdqa32 zmm22, zmm18
- vpermt2d zmm18, zmm27, zmm8
- vpermt2d zmm22, zmm31, zmm8
- vshufps zmm19, zmm9, zmm11, 221
- vshufps zmm8, zmm13, zmm15, 221
- vmovdqa32 zmm23, zmm19
- vpermt2d zmm19, zmm27, zmm8
- vpermt2d zmm23, zmm31, zmm8
- mov r8, qword ptr [rdi]
- mov r9, qword ptr [rdi+0x8]
- mov r10, qword ptr [rdi+0x10]
- mov r11, qword ptr [rdi+0x18]
- mov r12, qword ptr [rdi+0x40]
- mov r13, qword ptr [rdi+0x48]
- mov r14, qword ptr [rdi+0x50]
- mov r15, qword ptr [rdi+0x58]
- vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
- vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
- vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
- vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
- vpunpcklqdq zmm8, zmm24, zmm25
- vpunpckhqdq zmm9, zmm24, zmm25
- vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
- vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
- vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
- vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
- vpunpcklqdq zmm10, zmm24, zmm25
- vpunpckhqdq zmm11, zmm24, zmm25
- prefetcht0 [r8+rdx+0x80]
- prefetcht0 [r12+rdx+0x80]
- prefetcht0 [r9+rdx+0x80]
- prefetcht0 [r13+rdx+0x80]
- prefetcht0 [r10+rdx+0x80]
- prefetcht0 [r14+rdx+0x80]
- prefetcht0 [r11+rdx+0x80]
- prefetcht0 [r15+rdx+0x80]
- mov r8, qword ptr [rdi+0x20]
- mov r9, qword ptr [rdi+0x28]
- mov r10, qword ptr [rdi+0x30]
- mov r11, qword ptr [rdi+0x38]
- mov r12, qword ptr [rdi+0x60]
- mov r13, qword ptr [rdi+0x68]
- mov r14, qword ptr [rdi+0x70]
- mov r15, qword ptr [rdi+0x78]
- vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
- vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
- vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
- vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
- vpunpcklqdq zmm12, zmm24, zmm25
- vpunpckhqdq zmm13, zmm24, zmm25
- vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
- vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
- vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
- vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
- vpunpcklqdq zmm14, zmm24, zmm25
- vpunpckhqdq zmm15, zmm24, zmm25
- prefetcht0 [r8+rdx+0x80]
- prefetcht0 [r12+rdx+0x80]
- prefetcht0 [r9+rdx+0x80]
- prefetcht0 [r13+rdx+0x80]
- prefetcht0 [r10+rdx+0x80]
- prefetcht0 [r14+rdx+0x80]
- prefetcht0 [r11+rdx+0x80]
- prefetcht0 [r15+rdx+0x80]
- vshufps zmm24, zmm8, zmm10, 136
- vshufps zmm30, zmm12, zmm14, 136
- vmovdqa32 zmm28, zmm24
- vpermt2d zmm24, zmm27, zmm30
- vpermt2d zmm28, zmm31, zmm30
- vshufps zmm25, zmm8, zmm10, 221
- vshufps zmm30, zmm12, zmm14, 221
- vmovdqa32 zmm29, zmm25
- vpermt2d zmm25, zmm27, zmm30
- vpermt2d zmm29, zmm31, zmm30
- vshufps zmm26, zmm9, zmm11, 136
- vshufps zmm8, zmm13, zmm15, 136
- vmovdqa32 zmm30, zmm26
- vpermt2d zmm26, zmm27, zmm8
- vpermt2d zmm30, zmm31, zmm8
- vshufps zmm8, zmm9, zmm11, 221
- vshufps zmm10, zmm13, zmm15, 221
- vpermi2d zmm27, zmm8, zmm10
- vpermi2d zmm31, zmm8, zmm10
- vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip]
- vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip]
- vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip]
- vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip]
- vmovdqa32 zmm12, zmmword ptr [rsp]
- vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40]
- vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
- vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4]
- vpaddd zmm0, zmm0, zmm16
- vpaddd zmm1, zmm1, zmm18
- vpaddd zmm2, zmm2, zmm20
- vpaddd zmm3, zmm3, zmm22
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vprord zmm15, zmm15, 16
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 12
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vpaddd zmm0, zmm0, zmm17
- vpaddd zmm1, zmm1, zmm19
- vpaddd zmm2, zmm2, zmm21
- vpaddd zmm3, zmm3, zmm23
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vprord zmm15, zmm15, 8
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 7
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vpaddd zmm0, zmm0, zmm24
- vpaddd zmm1, zmm1, zmm26
- vpaddd zmm2, zmm2, zmm28
- vpaddd zmm3, zmm3, zmm30
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 16
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vprord zmm4, zmm4, 12
- vpaddd zmm0, zmm0, zmm25
- vpaddd zmm1, zmm1, zmm27
- vpaddd zmm2, zmm2, zmm29
- vpaddd zmm3, zmm3, zmm31
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 8
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vprord zmm4, zmm4, 7
- vpaddd zmm0, zmm0, zmm18
- vpaddd zmm1, zmm1, zmm19
- vpaddd zmm2, zmm2, zmm23
- vpaddd zmm3, zmm3, zmm20
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vprord zmm15, zmm15, 16
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 12
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vpaddd zmm0, zmm0, zmm22
- vpaddd zmm1, zmm1, zmm26
- vpaddd zmm2, zmm2, zmm16
- vpaddd zmm3, zmm3, zmm29
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vprord zmm15, zmm15, 8
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 7
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vpaddd zmm0, zmm0, zmm17
- vpaddd zmm1, zmm1, zmm28
- vpaddd zmm2, zmm2, zmm25
- vpaddd zmm3, zmm3, zmm31
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 16
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vprord zmm4, zmm4, 12
- vpaddd zmm0, zmm0, zmm27
- vpaddd zmm1, zmm1, zmm21
- vpaddd zmm2, zmm2, zmm30
- vpaddd zmm3, zmm3, zmm24
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 8
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vprord zmm4, zmm4, 7
- vpaddd zmm0, zmm0, zmm19
- vpaddd zmm1, zmm1, zmm26
- vpaddd zmm2, zmm2, zmm29
- vpaddd zmm3, zmm3, zmm23
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vprord zmm15, zmm15, 16
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 12
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vpaddd zmm0, zmm0, zmm20
- vpaddd zmm1, zmm1, zmm28
- vpaddd zmm2, zmm2, zmm18
- vpaddd zmm3, zmm3, zmm30
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vprord zmm15, zmm15, 8
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 7
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vpaddd zmm0, zmm0, zmm22
- vpaddd zmm1, zmm1, zmm25
- vpaddd zmm2, zmm2, zmm27
- vpaddd zmm3, zmm3, zmm24
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 16
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vprord zmm4, zmm4, 12
- vpaddd zmm0, zmm0, zmm21
- vpaddd zmm1, zmm1, zmm16
- vpaddd zmm2, zmm2, zmm31
- vpaddd zmm3, zmm3, zmm17
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 8
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vprord zmm4, zmm4, 7
- vpaddd zmm0, zmm0, zmm26
- vpaddd zmm1, zmm1, zmm28
- vpaddd zmm2, zmm2, zmm30
- vpaddd zmm3, zmm3, zmm29
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vprord zmm15, zmm15, 16
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 12
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vpaddd zmm0, zmm0, zmm23
- vpaddd zmm1, zmm1, zmm25
- vpaddd zmm2, zmm2, zmm19
- vpaddd zmm3, zmm3, zmm31
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vprord zmm15, zmm15, 8
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 7
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vpaddd zmm0, zmm0, zmm20
- vpaddd zmm1, zmm1, zmm27
- vpaddd zmm2, zmm2, zmm21
- vpaddd zmm3, zmm3, zmm17
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 16
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vprord zmm4, zmm4, 12
- vpaddd zmm0, zmm0, zmm16
- vpaddd zmm1, zmm1, zmm18
- vpaddd zmm2, zmm2, zmm24
- vpaddd zmm3, zmm3, zmm22
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 8
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vprord zmm4, zmm4, 7
- vpaddd zmm0, zmm0, zmm28
- vpaddd zmm1, zmm1, zmm25
- vpaddd zmm2, zmm2, zmm31
- vpaddd zmm3, zmm3, zmm30
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vprord zmm15, zmm15, 16
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 12
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vpaddd zmm0, zmm0, zmm29
- vpaddd zmm1, zmm1, zmm27
- vpaddd zmm2, zmm2, zmm26
- vpaddd zmm3, zmm3, zmm24
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vprord zmm15, zmm15, 8
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 7
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vpaddd zmm0, zmm0, zmm23
- vpaddd zmm1, zmm1, zmm21
- vpaddd zmm2, zmm2, zmm16
- vpaddd zmm3, zmm3, zmm22
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 16
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vprord zmm4, zmm4, 12
- vpaddd zmm0, zmm0, zmm18
- vpaddd zmm1, zmm1, zmm19
- vpaddd zmm2, zmm2, zmm17
- vpaddd zmm3, zmm3, zmm20
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 8
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vprord zmm4, zmm4, 7
- vpaddd zmm0, zmm0, zmm25
- vpaddd zmm1, zmm1, zmm27
- vpaddd zmm2, zmm2, zmm24
- vpaddd zmm3, zmm3, zmm31
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vprord zmm15, zmm15, 16
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 12
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vpaddd zmm0, zmm0, zmm30
- vpaddd zmm1, zmm1, zmm21
- vpaddd zmm2, zmm2, zmm28
- vpaddd zmm3, zmm3, zmm17
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vprord zmm15, zmm15, 8
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 7
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vpaddd zmm0, zmm0, zmm29
- vpaddd zmm1, zmm1, zmm16
- vpaddd zmm2, zmm2, zmm18
- vpaddd zmm3, zmm3, zmm20
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 16
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vprord zmm4, zmm4, 12
- vpaddd zmm0, zmm0, zmm19
- vpaddd zmm1, zmm1, zmm26
- vpaddd zmm2, zmm2, zmm22
- vpaddd zmm3, zmm3, zmm23
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 8
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vprord zmm4, zmm4, 7
- vpaddd zmm0, zmm0, zmm27
- vpaddd zmm1, zmm1, zmm21
- vpaddd zmm2, zmm2, zmm17
- vpaddd zmm3, zmm3, zmm24
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vprord zmm15, zmm15, 16
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 12
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vpaddd zmm0, zmm0, zmm31
- vpaddd zmm1, zmm1, zmm16
- vpaddd zmm2, zmm2, zmm25
- vpaddd zmm3, zmm3, zmm22
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm1, zmm1, zmm5
- vpaddd zmm2, zmm2, zmm6
- vpaddd zmm3, zmm3, zmm7
- vpxord zmm12, zmm12, zmm0
- vpxord zmm13, zmm13, zmm1
- vpxord zmm14, zmm14, zmm2
- vpxord zmm15, zmm15, zmm3
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vprord zmm15, zmm15, 8
- vpaddd zmm8, zmm8, zmm12
- vpaddd zmm9, zmm9, zmm13
- vpaddd zmm10, zmm10, zmm14
- vpaddd zmm11, zmm11, zmm15
- vpxord zmm4, zmm4, zmm8
- vpxord zmm5, zmm5, zmm9
- vpxord zmm6, zmm6, zmm10
- vpxord zmm7, zmm7, zmm11
- vprord zmm4, zmm4, 7
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vpaddd zmm0, zmm0, zmm30
- vpaddd zmm1, zmm1, zmm18
- vpaddd zmm2, zmm2, zmm19
- vpaddd zmm3, zmm3, zmm23
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 16
- vprord zmm12, zmm12, 16
- vprord zmm13, zmm13, 16
- vprord zmm14, zmm14, 16
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 12
- vprord zmm6, zmm6, 12
- vprord zmm7, zmm7, 12
- vprord zmm4, zmm4, 12
- vpaddd zmm0, zmm0, zmm26
- vpaddd zmm1, zmm1, zmm28
- vpaddd zmm2, zmm2, zmm20
- vpaddd zmm3, zmm3, zmm29
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm1, zmm1, zmm6
- vpaddd zmm2, zmm2, zmm7
- vpaddd zmm3, zmm3, zmm4
- vpxord zmm15, zmm15, zmm0
- vpxord zmm12, zmm12, zmm1
- vpxord zmm13, zmm13, zmm2
- vpxord zmm14, zmm14, zmm3
- vprord zmm15, zmm15, 8
- vprord zmm12, zmm12, 8
- vprord zmm13, zmm13, 8
- vprord zmm14, zmm14, 8
- vpaddd zmm10, zmm10, zmm15
- vpaddd zmm11, zmm11, zmm12
- vpaddd zmm8, zmm8, zmm13
- vpaddd zmm9, zmm9, zmm14
- vpxord zmm5, zmm5, zmm10
- vpxord zmm6, zmm6, zmm11
- vpxord zmm7, zmm7, zmm8
- vpxord zmm4, zmm4, zmm9
- vprord zmm5, zmm5, 7
- vprord zmm6, zmm6, 7
- vprord zmm7, zmm7, 7
- vprord zmm4, zmm4, 7
- vpxord zmm0, zmm0, zmm8
- vpxord zmm1, zmm1, zmm9
- vpxord zmm2, zmm2, zmm10
- vpxord zmm3, zmm3, zmm11
- vpxord zmm4, zmm4, zmm12
- vpxord zmm5, zmm5, zmm13
- vpxord zmm6, zmm6, zmm14
- vpxord zmm7, zmm7, zmm15
- movzx eax, byte ptr [rbp+0x38]
- jne 9b
- mov rbx, qword ptr [rbp+0x50]
- vpunpckldq zmm16, zmm0, zmm1
- vpunpckhdq zmm17, zmm0, zmm1
- vpunpckldq zmm18, zmm2, zmm3
- vpunpckhdq zmm19, zmm2, zmm3
- vpunpckldq zmm20, zmm4, zmm5
- vpunpckhdq zmm21, zmm4, zmm5
- vpunpckldq zmm22, zmm6, zmm7
- vpunpckhdq zmm23, zmm6, zmm7
- vpunpcklqdq zmm0, zmm16, zmm18
- vpunpckhqdq zmm1, zmm16, zmm18
- vpunpcklqdq zmm2, zmm17, zmm19
- vpunpckhqdq zmm3, zmm17, zmm19
- vpunpcklqdq zmm4, zmm20, zmm22
- vpunpckhqdq zmm5, zmm20, zmm22
- vpunpcklqdq zmm6, zmm21, zmm23
- vpunpckhqdq zmm7, zmm21, zmm23
- vshufi32x4 zmm16, zmm0, zmm4, 0x88
- vshufi32x4 zmm17, zmm1, zmm5, 0x88
- vshufi32x4 zmm18, zmm2, zmm6, 0x88
- vshufi32x4 zmm19, zmm3, zmm7, 0x88
- vshufi32x4 zmm20, zmm0, zmm4, 0xDD
- vshufi32x4 zmm21, zmm1, zmm5, 0xDD
- vshufi32x4 zmm22, zmm2, zmm6, 0xDD
- vshufi32x4 zmm23, zmm3, zmm7, 0xDD
- vshufi32x4 zmm0, zmm16, zmm17, 0x88
- vshufi32x4 zmm1, zmm18, zmm19, 0x88
- vshufi32x4 zmm2, zmm20, zmm21, 0x88
- vshufi32x4 zmm3, zmm22, zmm23, 0x88
- vshufi32x4 zmm4, zmm16, zmm17, 0xDD
- vshufi32x4 zmm5, zmm18, zmm19, 0xDD
- vshufi32x4 zmm6, zmm20, zmm21, 0xDD
- vshufi32x4 zmm7, zmm22, zmm23, 0xDD
- vmovdqu32 zmmword ptr [rbx], zmm0
- vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1
- vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2
- vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3
- vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4
- vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5
- vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6
- vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7
- vmovdqa32 zmm0, zmmword ptr [rsp]
- vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40]
- vmovdqa32 zmm2, zmm0
- vpaddd zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16}
- vpcmpltud k2, zmm2, zmm0
- vpaddd zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16}
- vmovdqa32 zmmword ptr [rsp], zmm2
- vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1
- add rdi, 128
- add rbx, 512
- mov qword ptr [rbp+0x50], rbx
- sub rsi, 16
- cmp rsi, 16
- jnc 2b
- test rsi, rsi
- jnz 3f
+ vpbroadcastd zmm1, dword ptr [rcx+0x04]
+ vpbroadcastd zmm2, dword ptr [rcx+0x08]
+ vpbroadcastd zmm3, dword ptr [rcx+0x0C]
+ vpbroadcastd zmm4, dword ptr [rcx+0x10]
+ vpbroadcastd zmm5, dword ptr [rcx+0x14]
+ vpbroadcastd zmm6, dword ptr [rcx+0x18]
+ vpbroadcastd zmm7, dword ptr [rcx+0x1C]
+ movzx eax, byte ptr [rbp+0x38]
+ movzx edx, byte ptr [rbp+0x40]
+ or eax, edx
+ xor edx, edx
+3:
+ movzx ebx, byte ptr [rbp+0x48]
+ or ebx, eax
+ add rdx, 0x40
+ cmp rdx, qword ptr [rsp+0x100]
+ cmovz eax, ebx
+ mov dword ptr [rsp+0x80], eax
+ mov rax, qword ptr [rdi]
+ mov rbx, qword ptr [rdi+0x08]
+ mov r8, qword ptr [rdi+0x10]
+ mov r9, qword ptr [rdi+0x18]
+ mov r10, qword ptr [rdi+0x40]
+ mov r11, qword ptr [rdi+0x48]
+ mov r12, qword ptr [rdi+0x50]
+ mov r13, qword ptr [rdi+0x58]
+ vmovdqu32 ymm8, ymmword ptr [rax+rdx*1-0x40]
+ vinserti64x4 zmm8, zmm8, ymmword ptr [r10+rdx*1-0x40], 0x01
+ vmovdqu32 ymm9, ymmword ptr [rbx+rdx*1-0x40]
+ vinserti64x4 zmm9, zmm9, ymmword ptr [r11+rdx*1-0x40], 0x01
+ vpunpckldq zmm10, zmm8, zmm9
+ vpunpckhdq zmm11, zmm8, zmm9
+ vmovdqu32 ymm8, ymmword ptr [r8+rdx*1-0x40]
+ vinserti64x4 zmm8, zmm8, ymmword ptr [r12+rdx*1-0x40], 0x01
+ vmovdqu32 ymm9, ymmword ptr [r9+rdx*1-0x40]
+ vinserti64x4 zmm9, zmm9, ymmword ptr [r13+rdx*1-0x40], 0x01
+ vpunpckldq zmm12, zmm8, zmm9
+ vpunpckhdq zmm13, zmm8, zmm9
+ mov rax, qword ptr [rdi+0x20]
+ mov rbx, qword ptr [rdi+0x28]
+ mov r8, qword ptr [rdi+0x30]
+ mov r9, qword ptr [rdi+0x38]
+ mov r10, qword ptr [rdi+0x60]
+ mov r11, qword ptr [rdi+0x68]
+ mov r12, qword ptr [rdi+0x70]
+ mov r13, qword ptr [rdi+0x78]
+ vmovdqu32 ymm8, ymmword ptr [rax+rdx*1-0x40]
+ vinserti64x4 zmm8, zmm8, ymmword ptr [r10+rdx*1-0x40], 0x01
+ vmovdqu32 ymm9, ymmword ptr [rbx+rdx*1-0x40]
+ vinserti64x4 zmm9, zmm9, ymmword ptr [r11+rdx*1-0x40], 0x01
+ vpunpckldq zmm14, zmm8, zmm9
+ vpunpckhdq zmm15, zmm8, zmm9
+ vmovdqu32 ymm8, ymmword ptr [r8+rdx*1-0x40]
+ vinserti64x4 zmm8, zmm8, ymmword ptr [r12+rdx*1-0x40], 0x01
+ vmovdqu32 ymm9, ymmword ptr [r9+rdx*1-0x40]
+ vinserti64x4 zmm9, zmm9, ymmword ptr [r13+rdx*1-0x40], 0x01
+ vpunpckldq zmm16, zmm8, zmm9
+ vpunpckhdq zmm17, zmm8, zmm9
+ vmovdqa32 zmm8, zmmword ptr [rip+INDEX0]
+ vmovdqa32 zmm9, zmmword ptr [rip+INDEX1]
+ vpunpcklqdq zmm18, zmm10, zmm12
+ vpunpcklqdq zmm20, zmm14, zmm16
+ vmovdqa32 zmm19, zmm18
+ vpermt2d zmm18, zmm8, zmm20
+ vpermt2d zmm19, zmm9, zmm20
+ vpunpckhqdq zmm20, zmm10, zmm12
+ vpunpckhqdq zmm22, zmm14, zmm16
+ vmovdqa32 zmm21, zmm20
+ vpermt2d zmm20, zmm8, zmm22
+ vpermt2d zmm21, zmm9, zmm22
+ vpunpcklqdq zmm10, zmm11, zmm13
+ vpunpcklqdq zmm14, zmm15, zmm17
+ vmovdqa32 zmm12, zmm10
+ vpermt2d zmm10, zmm8, zmm14
+ vpermt2d zmm12, zmm9, zmm14
+ vpunpckhqdq zmm14, zmm11, zmm13
+ vpunpckhqdq zmm22, zmm15, zmm17
+ vmovdqa32 zmm16, zmm14
+ vpermt2d zmm14, zmm8, zmm22
+ vpermt2d zmm16, zmm9, zmm22
+ mov rax, qword ptr [rdi]
+ mov rbx, qword ptr [rdi+0x08]
+ mov r8, qword ptr [rdi+0x10]
+ mov r9, qword ptr [rdi+0x18]
+ mov r10, qword ptr [rdi+0x40]
+ mov r11, qword ptr [rdi+0x48]
+ mov r12, qword ptr [rdi+0x50]
+ mov r13, qword ptr [rdi+0x58]
+ vmovdqu32 ymm11, ymmword ptr [rax+rdx*1-0x20]
+ vinserti64x4 zmm11, zmm11, ymmword ptr [r10+rdx*1-0x20], 0x01
+ vmovdqu32 ymm13, ymmword ptr [rbx+rdx*1-0x20]
+ vinserti64x4 zmm13, zmm13, ymmword ptr [r11+rdx*1-0x20], 0x01
+ vpunpckldq zmm15, zmm11, zmm13
+ vpunpckhdq zmm17, zmm11, zmm13
+ vmovdqu32 ymm11, ymmword ptr [r8+rdx*1-0x20]
+ vinserti64x4 zmm11, zmm11, ymmword ptr [r12+rdx*1-0x20], 0x01
+ vmovdqu32 ymm13, ymmword ptr [r9+rdx*1-0x20]
+ vinserti64x4 zmm13, zmm13, ymmword ptr [r13+rdx*1-0x20], 0x01
+ vpunpckldq zmm22, zmm11, zmm13
+ vpunpckhdq zmm23, zmm11, zmm13
+ prefetcht0 byte ptr [rax+rdx*1+0x80]
+ prefetcht0 byte ptr [rbx+rdx*1+0x80]
+ prefetcht0 byte ptr [r8+rdx*1+0x80]
+ prefetcht0 byte ptr [r9+rdx*1+0x80]
+ prefetcht0 byte ptr [r10+rdx*1+0x80]
+ prefetcht0 byte ptr [r11+rdx*1+0x80]
+ prefetcht0 byte ptr [r12+rdx*1+0x80]
+ prefetcht0 byte ptr [r13+rdx*1+0x80]
+ mov rax, qword ptr [rdi+0x20]
+ mov rbx, qword ptr [rdi+0x28]
+ mov r8, qword ptr [rdi+0x30]
+ mov r9, qword ptr [rdi+0x38]
+ mov r10, qword ptr [rdi+0x60]
+ mov r11, qword ptr [rdi+0x68]
+ mov r12, qword ptr [rdi+0x70]
+ mov r13, qword ptr [rdi+0x78]
+ vmovdqu32 ymm11, ymmword ptr [rax+rdx*1-0x20]
+ vinserti64x4 zmm11, zmm11, ymmword ptr [r10+rdx*1-0x20], 0x01
+ vmovdqu32 ymm13, ymmword ptr [rbx+rdx*1-0x20]
+ vinserti64x4 zmm13, zmm13, ymmword ptr [r11+rdx*1-0x20], 0x01
+ vpunpckldq zmm24, zmm11, zmm13
+ vpunpckhdq zmm25, zmm11, zmm13
+ vmovdqu32 ymm11, ymmword ptr [r8+rdx*1-0x20]
+ vinserti64x4 zmm11, zmm11, ymmword ptr [r12+rdx*1-0x20], 0x01
+ vmovdqu32 ymm13, ymmword ptr [r9+rdx*1-0x20]
+ vinserti64x4 zmm13, zmm13, ymmword ptr [r13+rdx*1-0x20], 0x01
+ vpunpckldq zmm26, zmm11, zmm13
+ vpunpckhdq zmm27, zmm11, zmm13
+ prefetcht0 byte ptr [rax+rdx*1+0x80]
+ prefetcht0 byte ptr [rbx+rdx*1+0x80]
+ prefetcht0 byte ptr [r8+rdx*1+0x80]
+ prefetcht0 byte ptr [r9+rdx*1+0x80]
+ prefetcht0 byte ptr [r10+rdx*1+0x80]
+ prefetcht0 byte ptr [r11+rdx*1+0x80]
+ prefetcht0 byte ptr [r12+rdx*1+0x80]
+ prefetcht0 byte ptr [r13+rdx*1+0x80]
+ vpunpcklqdq zmm11, zmm15, zmm22
+ vpunpcklqdq zmm28, zmm24, zmm26
+ vmovdqa32 zmm13, zmm11
+ vpermt2d zmm11, zmm8, zmm28
+ vpermt2d zmm13, zmm9, zmm28
+ vpunpckhqdq zmm28, zmm15, zmm22
+ vpunpckhqdq zmm30, zmm24, zmm26
+ vmovdqa32 zmm29, zmm28
+ vpermt2d zmm28, zmm8, zmm30
+ vpermt2d zmm29, zmm9, zmm30
+ vpunpcklqdq zmm15, zmm17, zmm23
+ vpunpcklqdq zmm24, zmm25, zmm27
+ vmovdqa32 zmm22, zmm15
+ vpermt2d zmm15, zmm8, zmm24
+ vpermt2d zmm22, zmm9, zmm24
+ vpunpckhqdq zmm24, zmm17, zmm23
+ vpunpckhqdq zmm26, zmm25, zmm27
+ vpermi2d zmm8, zmm24, zmm26
+ vpermi2d zmm9, zmm24, zmm26
+ vpbroadcastd zmm17, dword ptr [rip+BLAKE3_IV_0]
+ vpbroadcastd zmm23, dword ptr [rip+BLAKE3_IV_1]
+ vpbroadcastd zmm24, dword ptr [rip+BLAKE3_IV_2]
+ vpbroadcastd zmm25, dword ptr [rip+BLAKE3_IV_3]
+ vmovdqa32 zmm26, zmmword ptr [rsp]
+ vmovdqa32 zmm27, zmmword ptr [rsp+0x40]
+ vpbroadcastd zmm30, dword ptr [rip+BLAKE3_BLOCK_LEN]
+ vpbroadcastd zmm31, dword ptr [rsp+0x80]
+ mov al, 0x07
4:
+ vpaddd zmm0, zmm0, zmm18
+ vpaddd zmm1, zmm1, zmm10
+ vpaddd zmm2, zmm2, zmm19
+ vpaddd zmm3, zmm3, zmm12
+ vmovdqa32 zmmword ptr [rsp+0x80], zmm18
+ vmovdqa32 zmmword ptr [rsp+0xC0], zmm12
+ vpaddd zmm0, zmm0, zmm4
+ vpaddd zmm1, zmm1, zmm5
+ vpaddd zmm2, zmm2, zmm6
+ vpaddd zmm3, zmm3, zmm7
+ vpxord zmm26, zmm26, zmm0
+ vmovdqa32 zmm18, zmm10
+ vpxord zmm27, zmm27, zmm1
+ vpxord zmm30, zmm30, zmm2
+ vpxord zmm31, zmm31, zmm3
+ vprord zmm26, zmm26, 0x10
+ vprord zmm27, zmm27, 0x10
+ vprord zmm30, zmm30, 0x10
+ vprord zmm31, zmm31, 0x10
+ vpaddd zmm17, zmm17, zmm26
+ vmovdqa32 zmm12, zmm19
+ vpaddd zmm23, zmm23, zmm27
+ vpaddd zmm24, zmm24, zmm30
+ vpaddd zmm25, zmm25, zmm31
+ vpxord zmm4, zmm4, zmm17
+ vpxord zmm5, zmm5, zmm23
+ vpxord zmm6, zmm6, zmm24
+ vpxord zmm7, zmm7, zmm25
+ vprord zmm4, zmm4, 0x0C
+ vprord zmm5, zmm5, 0x0C
+ vprord zmm6, zmm6, 0x0C
+ vprord zmm7, zmm7, 0x0C
+ vpaddd zmm0, zmm0, zmm20
+ vpaddd zmm1, zmm1, zmm14
+ vpaddd zmm2, zmm2, zmm21
+ vpaddd zmm3, zmm3, zmm16
+ vpaddd zmm0, zmm0, zmm4
+ vmovdqa32 zmm10, zmm14
+ vpaddd zmm1, zmm1, zmm5
+ vpaddd zmm2, zmm2, zmm6
+ vpaddd zmm3, zmm3, zmm7
+ vpxord zmm26, zmm26, zmm0
+ vpxord zmm27, zmm27, zmm1
+ vpxord zmm30, zmm30, zmm2
+ vpxord zmm31, zmm31, zmm3
+ vprord zmm26, zmm26, 0x08
+ vmovdqa32 zmm19, zmm16
+ vprord zmm27, zmm27, 0x08
+ vprord zmm30, zmm30, 0x08
+ vprord zmm31, zmm31, 0x08
+ vpaddd zmm17, zmm17, zmm26
+ vpaddd zmm23, zmm23, zmm27
+ vpaddd zmm24, zmm24, zmm30
+ vpaddd zmm25, zmm25, zmm31
+ vpxord zmm4, zmm4, zmm17
+ vmovdqa32 zmm14, zmm15
+ vpxord zmm5, zmm5, zmm23
+ vpxord zmm6, zmm6, zmm24
+ vpxord zmm7, zmm7, zmm25
+ vprord zmm4, zmm4, 0x07
+ vprord zmm5, zmm5, 0x07
+ vprord zmm6, zmm6, 0x07
+ vprord zmm7, zmm7, 0x07
+ vpaddd zmm0, zmm0, zmm11
+ vmovdqa32 zmm16, zmm29
+ vpaddd zmm1, zmm1, zmm15
+ vpaddd zmm2, zmm2, zmm13
+ vpaddd zmm3, zmm3, zmm22
+ vpaddd zmm0, zmm0, zmm5
+ vpaddd zmm1, zmm1, zmm6
+ vpaddd zmm2, zmm2, zmm7
+ vpaddd zmm3, zmm3, zmm4
+ vpxord zmm31, zmm31, zmm0
+ vmovdqa32 zmm15, zmm13
+ vpxord zmm26, zmm26, zmm1
+ vpxord zmm27, zmm27, zmm2
+ vpxord zmm30, zmm30, zmm3
+ vprord zmm31, zmm31, 0x10
+ vprord zmm26, zmm26, 0x10
+ vprord zmm27, zmm27, 0x10
+ vprord zmm30, zmm30, 0x10
+ vpaddd zmm24, zmm24, zmm31
+ vmovdqa32 zmm13, zmm28
+ vpaddd zmm25, zmm25, zmm26
+ vpaddd zmm17, zmm17, zmm27
+ vpaddd zmm23, zmm23, zmm30
+ vpxord zmm5, zmm5, zmm24
+ vpxord zmm6, zmm6, zmm25
+ vpxord zmm7, zmm7, zmm17
+ vpxord zmm4, zmm4, zmm23
+ vprord zmm5, zmm5, 0x0C
+ vprord zmm6, zmm6, 0x0C
+ vprord zmm7, zmm7, 0x0C
+ vprord zmm4, zmm4, 0x0C
+ vpaddd zmm0, zmm0, zmm28
+ vpaddd zmm1, zmm1, zmm8
+ vpaddd zmm2, zmm2, zmm29
+ vmovdqa32 zmm29, zmm22
+ vpaddd zmm3, zmm3, zmm9
+ vpaddd zmm0, zmm0, zmm5
+ vpaddd zmm1, zmm1, zmm6
+ vpaddd zmm2, zmm2, zmm7
+ vmovdqa32 zmm28, zmm8
+ vpaddd zmm3, zmm3, zmm4
+ vpxord zmm31, zmm31, zmm0
+ vpxord zmm26, zmm26, zmm1
+ vmovdqa32 zmm22, zmm9
+ vpxord zmm27, zmm27, zmm2
+ vpxord zmm30, zmm30, zmm3
+ vprord zmm31, zmm31, 0x08
+ vmovdqa32 zmm8, zmm21
+ vprord zmm26, zmm26, 0x08
+ vprord zmm27, zmm27, 0x08
+ vprord zmm30, zmm30, 0x08
+ vmovdqa32 zmm9, zmm11
+ vpaddd zmm24, zmm24, zmm31
+ vpaddd zmm25, zmm25, zmm26
+ vpaddd zmm17, zmm17, zmm27
+ vpaddd zmm23, zmm23, zmm30
+ vmovdqa32 zmm11, zmm20
+ vpxord zmm5, zmm5, zmm24
+ vpxord zmm6, zmm6, zmm25
+ vpxord zmm7, zmm7, zmm17
+ vpxord zmm4, zmm4, zmm23
+ vmovdqa32 zmm21, zmmword ptr [rsp+0x80]
+ vprord zmm5, zmm5, 0x07
+ vprord zmm6, zmm6, 0x07
+ vprord zmm7, zmm7, 0x07
+ vprord zmm4, zmm4, 0x07
+ vmovdqa32 zmm20, zmmword ptr [rsp+0xC0]
+ dec al
+ jnz 4b
+ vpxord zmm0, zmm0, zmm17
+ vpxord zmm1, zmm1, zmm23
+ vpxord zmm2, zmm2, zmm24
+ vpxord zmm3, zmm3, zmm25
+ vpxord zmm4, zmm4, zmm26
+ vpxord zmm5, zmm5, zmm27
+ vpxord zmm6, zmm6, zmm30
+ vpxord zmm7, zmm7, zmm31
+ movzx eax, byte ptr [rbp+0x38]
+ jb 3b
+ mov rbx, qword ptr [rbp+0x50]
+ vpunpckldq zmm8, zmm0, zmm2
+ vpunpckhdq zmm9, zmm0, zmm2
+ vpunpckldq zmm10, zmm1, zmm3
+ vpunpckhdq zmm11, zmm1, zmm3
+ vpunpckldq zmm12, zmm4, zmm6
+ vpunpckhdq zmm13, zmm4, zmm6
+ vpunpckldq zmm14, zmm5, zmm7
+ vpunpckhdq zmm15, zmm5, zmm7
+ vpunpckldq zmm0, zmm8, zmm10
+ vpunpckhdq zmm1, zmm8, zmm10
+ vpunpckldq zmm2, zmm9, zmm11
+ vpunpckhdq zmm3, zmm9, zmm11
+ vpunpckldq zmm4, zmm12, zmm14
+ vpunpckhdq zmm5, zmm12, zmm14
+ vpunpckldq zmm6, zmm13, zmm15
+ vpunpckhdq zmm7, zmm13, zmm15
+ vmovdqa32 zmm16, zmmword ptr [rip+INDEX0]
+ vmovdqa32 zmm18, zmmword ptr [rip+INDEX1]
+ vmovdqa32 zmm8, zmm0
+ vpermt2d zmm8, zmm16, zmm4
+ vpermt2d zmm0, zmm18, zmm4
+ vmovdqa32 zmm10, zmm1
+ vpermt2d zmm10, zmm16, zmm5
+ vpermt2d zmm1, zmm18, zmm5
+ vmovdqa32 zmm12, zmm2
+ vpermt2d zmm12, zmm16, zmm6
+ vpermt2d zmm2, zmm18, zmm6
+ vmovdqa32 zmm14, zmm3
+ vpermt2d zmm14, zmm16, zmm7
+ vpermt2d zmm3, zmm18, zmm7
+ vextracti64x4 ymmword ptr [rbx], zmm8, 0x00
+ vextracti64x4 ymmword ptr [rbx+0x20], zmm10, 0x00
+ vextracti64x4 ymmword ptr [rbx+0x40], zmm12, 0x00
+ vextracti64x4 ymmword ptr [rbx+0x60], zmm14, 0x00
+ vextracti64x4 ymmword ptr [rbx+0x80], zmm0, 0x00
+ vextracti64x4 ymmword ptr [rbx+0xA0], zmm1, 0x00
+ vextracti64x4 ymmword ptr [rbx+0xC0], zmm2, 0x00
+ vextracti64x4 ymmword ptr [rbx+0xE0], zmm3, 0x00
+ vextracti64x4 ymmword ptr [rbx+0x100], zmm8, 0x01
+ vextracti64x4 ymmword ptr [rbx+0x120], zmm10, 0x01
+ vextracti64x4 ymmword ptr [rbx+0x140], zmm12, 0x01
+ vextracti64x4 ymmword ptr [rbx+0x160], zmm14, 0x01
+ vextracti64x4 ymmword ptr [rbx+0x180], zmm0, 0x01
+ vextracti64x4 ymmword ptr [rbx+0x1A0], zmm1, 0x01
+ vextracti64x4 ymmword ptr [rbx+0x1C0], zmm2, 0x01
+ vextracti64x4 ymmword ptr [rbx+0x1E0], zmm3, 0x01
+ vmovdqa32 zmm8, zmmword ptr [rsp]
+ vmovdqa32 zmm9, zmmword ptr [rsp+0x40]
+ vmovdqa32 zmm10, zmm8
+ vpaddd zmm10 {k1}, zmm8, dword ptr [rip+ADD16] {1to16}
+ vpcmpud k2 {k1}, zmm10, zmm8, 0x01
+ vpaddd zmm9 {k2}, zmm9, dword ptr [rip+ADD1] {1to16}
+ vmovdqa32 zmmword ptr [rsp], zmm10
+ vmovdqa32 zmmword ptr [rsp+0x40], zmm9
+ add rbx, 0x200
+ mov qword ptr [rbp+0x50], rbx
+ add rdi, 0x80
+ sub rsi, 0x10
+ cmp rsi, 0x10
+ jnb 2b
+ test esi, esi
+ jnz 5f
+9:
vzeroupper
- mov rsp, rbp
- pop rbp
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
+ mov rsp, rbp
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop rbp
+ pop rbx
ret
.p2align 6
-3:
- test esi, 0x8
- je 3f
+5:
+ mov rax, rsp
+ test sil, 0x08
+ jz 3f
vpbroadcastd ymm0, dword ptr [rcx]
- vpbroadcastd ymm1, dword ptr [rcx+0x4]
- vpbroadcastd ymm2, dword ptr [rcx+0x8]
- vpbroadcastd ymm3, dword ptr [rcx+0xC]
+ vpbroadcastd ymm1, dword ptr [rcx+0x04]
+ vpbroadcastd ymm2, dword ptr [rcx+0x08]
+ vpbroadcastd ymm3, dword ptr [rcx+0x0C]
vpbroadcastd ymm4, dword ptr [rcx+0x10]
vpbroadcastd ymm5, dword ptr [rcx+0x14]
vpbroadcastd ymm6, dword ptr [rcx+0x18]
vpbroadcastd ymm7, dword ptr [rcx+0x1C]
- mov r8, qword ptr [rdi]
- mov r9, qword ptr [rdi+0x8]
- mov r10, qword ptr [rdi+0x10]
- mov r11, qword ptr [rdi+0x18]
- mov r12, qword ptr [rdi+0x20]
- mov r13, qword ptr [rdi+0x28]
- mov r14, qword ptr [rdi+0x30]
- mov r15, qword ptr [rdi+0x38]
- movzx eax, byte ptr [rbp+0x38]
- movzx ebx, byte ptr [rbp+0x40]
- or eax, ebx
- xor edx, edx
+ movzx edx, byte ptr [rbp+0x38]
+ movzx ebx, byte ptr [rbp+0x40]
+ or edx, ebx
+ xor ebx, ebx
2:
- movzx ebx, byte ptr [rbp+0x48]
- or ebx, eax
- add rdx, 64
- cmp rdx, qword ptr [rsp+0x80]
- cmove eax, ebx
- mov dword ptr [rsp+0x88], eax
- vmovups xmm8, xmmword ptr [r8+rdx-0x40]
- vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
- vmovups xmm9, xmmword ptr [r9+rdx-0x40]
- vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
- vunpcklpd ymm12, ymm8, ymm9
- vunpckhpd ymm13, ymm8, ymm9
- vmovups xmm10, xmmword ptr [r10+rdx-0x40]
- vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
- vmovups xmm11, xmmword ptr [r11+rdx-0x40]
- vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
- vunpcklpd ymm14, ymm10, ymm11
- vunpckhpd ymm15, ymm10, ymm11
- vshufps ymm16, ymm12, ymm14, 136
- vshufps ymm17, ymm12, ymm14, 221
- vshufps ymm18, ymm13, ymm15, 136
- vshufps ymm19, ymm13, ymm15, 221
- vmovups xmm8, xmmword ptr [r8+rdx-0x30]
- vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
- vmovups xmm9, xmmword ptr [r9+rdx-0x30]
- vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
- vunpcklpd ymm12, ymm8, ymm9
- vunpckhpd ymm13, ymm8, ymm9
- vmovups xmm10, xmmword ptr [r10+rdx-0x30]
- vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
- vmovups xmm11, xmmword ptr [r11+rdx-0x30]
- vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
- vunpcklpd ymm14, ymm10, ymm11
- vunpckhpd ymm15, ymm10, ymm11
- vshufps ymm20, ymm12, ymm14, 136
- vshufps ymm21, ymm12, ymm14, 221
- vshufps ymm22, ymm13, ymm15, 136
- vshufps ymm23, ymm13, ymm15, 221
- vmovups xmm8, xmmword ptr [r8+rdx-0x20]
- vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
- vmovups xmm9, xmmword ptr [r9+rdx-0x20]
- vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
- vunpcklpd ymm12, ymm8, ymm9
- vunpckhpd ymm13, ymm8, ymm9
- vmovups xmm10, xmmword ptr [r10+rdx-0x20]
- vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
- vmovups xmm11, xmmword ptr [r11+rdx-0x20]
- vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
- vunpcklpd ymm14, ymm10, ymm11
- vunpckhpd ymm15, ymm10, ymm11
- vshufps ymm24, ymm12, ymm14, 136
- vshufps ymm25, ymm12, ymm14, 221
- vshufps ymm26, ymm13, ymm15, 136
- vshufps ymm27, ymm13, ymm15, 221
- vmovups xmm8, xmmword ptr [r8+rdx-0x10]
- vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
- vmovups xmm9, xmmword ptr [r9+rdx-0x10]
- vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
- vunpcklpd ymm12, ymm8, ymm9
- vunpckhpd ymm13, ymm8, ymm9
- vmovups xmm10, xmmword ptr [r10+rdx-0x10]
- vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
- vmovups xmm11, xmmword ptr [r11+rdx-0x10]
- vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
- vunpcklpd ymm14, ymm10, ymm11
- vunpckhpd ymm15, ymm10, ymm11
- vshufps ymm28, ymm12, ymm14, 136
- vshufps ymm29, ymm12, ymm14, 221
- vshufps ymm30, ymm13, ymm15, 136
- vshufps ymm31, ymm13, ymm15, 221
- vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip]
- vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip]
- vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip]
- vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip]
- vmovdqa ymm12, ymmword ptr [rsp]
- vmovdqa ymm13, ymmword ptr [rsp+0x40]
- vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
- vpbroadcastd ymm15, dword ptr [rsp+0x88]
- vpaddd ymm0, ymm0, ymm16
- vpaddd ymm1, ymm1, ymm18
- vpaddd ymm2, ymm2, ymm20
- vpaddd ymm3, ymm3, ymm22
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vprord ymm15, ymm15, 16
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 12
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vpaddd ymm0, ymm0, ymm17
- vpaddd ymm1, ymm1, ymm19
- vpaddd ymm2, ymm2, ymm21
- vpaddd ymm3, ymm3, ymm23
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vprord ymm15, ymm15, 8
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 7
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vpaddd ymm0, ymm0, ymm24
- vpaddd ymm1, ymm1, ymm26
- vpaddd ymm2, ymm2, ymm28
- vpaddd ymm3, ymm3, ymm30
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 16
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vprord ymm4, ymm4, 12
- vpaddd ymm0, ymm0, ymm25
- vpaddd ymm1, ymm1, ymm27
- vpaddd ymm2, ymm2, ymm29
- vpaddd ymm3, ymm3, ymm31
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 8
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vprord ymm4, ymm4, 7
- vpaddd ymm0, ymm0, ymm18
- vpaddd ymm1, ymm1, ymm19
- vpaddd ymm2, ymm2, ymm23
- vpaddd ymm3, ymm3, ymm20
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vprord ymm15, ymm15, 16
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 12
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vpaddd ymm0, ymm0, ymm22
- vpaddd ymm1, ymm1, ymm26
- vpaddd ymm2, ymm2, ymm16
- vpaddd ymm3, ymm3, ymm29
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vprord ymm15, ymm15, 8
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 7
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vpaddd ymm0, ymm0, ymm17
- vpaddd ymm1, ymm1, ymm28
- vpaddd ymm2, ymm2, ymm25
- vpaddd ymm3, ymm3, ymm31
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 16
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vprord ymm4, ymm4, 12
- vpaddd ymm0, ymm0, ymm27
- vpaddd ymm1, ymm1, ymm21
- vpaddd ymm2, ymm2, ymm30
- vpaddd ymm3, ymm3, ymm24
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 8
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vprord ymm4, ymm4, 7
- vpaddd ymm0, ymm0, ymm19
- vpaddd ymm1, ymm1, ymm26
- vpaddd ymm2, ymm2, ymm29
- vpaddd ymm3, ymm3, ymm23
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vprord ymm15, ymm15, 16
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 12
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vpaddd ymm0, ymm0, ymm20
- vpaddd ymm1, ymm1, ymm28
- vpaddd ymm2, ymm2, ymm18
- vpaddd ymm3, ymm3, ymm30
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vprord ymm15, ymm15, 8
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 7
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vpaddd ymm0, ymm0, ymm22
- vpaddd ymm1, ymm1, ymm25
- vpaddd ymm2, ymm2, ymm27
- vpaddd ymm3, ymm3, ymm24
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 16
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vprord ymm4, ymm4, 12
- vpaddd ymm0, ymm0, ymm21
- vpaddd ymm1, ymm1, ymm16
- vpaddd ymm2, ymm2, ymm31
- vpaddd ymm3, ymm3, ymm17
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 8
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vprord ymm4, ymm4, 7
- vpaddd ymm0, ymm0, ymm26
- vpaddd ymm1, ymm1, ymm28
- vpaddd ymm2, ymm2, ymm30
- vpaddd ymm3, ymm3, ymm29
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vprord ymm15, ymm15, 16
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 12
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vpaddd ymm0, ymm0, ymm23
- vpaddd ymm1, ymm1, ymm25
- vpaddd ymm2, ymm2, ymm19
- vpaddd ymm3, ymm3, ymm31
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vprord ymm15, ymm15, 8
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 7
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vpaddd ymm0, ymm0, ymm20
- vpaddd ymm1, ymm1, ymm27
- vpaddd ymm2, ymm2, ymm21
- vpaddd ymm3, ymm3, ymm17
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 16
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vprord ymm4, ymm4, 12
- vpaddd ymm0, ymm0, ymm16
- vpaddd ymm1, ymm1, ymm18
- vpaddd ymm2, ymm2, ymm24
- vpaddd ymm3, ymm3, ymm22
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 8
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vprord ymm4, ymm4, 7
- vpaddd ymm0, ymm0, ymm28
- vpaddd ymm1, ymm1, ymm25
- vpaddd ymm2, ymm2, ymm31
- vpaddd ymm3, ymm3, ymm30
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vprord ymm15, ymm15, 16
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 12
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vpaddd ymm0, ymm0, ymm29
- vpaddd ymm1, ymm1, ymm27
- vpaddd ymm2, ymm2, ymm26
- vpaddd ymm3, ymm3, ymm24
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vprord ymm15, ymm15, 8
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 7
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vpaddd ymm0, ymm0, ymm23
- vpaddd ymm1, ymm1, ymm21
- vpaddd ymm2, ymm2, ymm16
- vpaddd ymm3, ymm3, ymm22
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 16
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vprord ymm4, ymm4, 12
- vpaddd ymm0, ymm0, ymm18
- vpaddd ymm1, ymm1, ymm19
- vpaddd ymm2, ymm2, ymm17
- vpaddd ymm3, ymm3, ymm20
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 8
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vprord ymm4, ymm4, 7
- vpaddd ymm0, ymm0, ymm25
- vpaddd ymm1, ymm1, ymm27
- vpaddd ymm2, ymm2, ymm24
- vpaddd ymm3, ymm3, ymm31
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vprord ymm15, ymm15, 16
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 12
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vpaddd ymm0, ymm0, ymm30
- vpaddd ymm1, ymm1, ymm21
- vpaddd ymm2, ymm2, ymm28
- vpaddd ymm3, ymm3, ymm17
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vprord ymm15, ymm15, 8
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 7
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vpaddd ymm0, ymm0, ymm29
- vpaddd ymm1, ymm1, ymm16
- vpaddd ymm2, ymm2, ymm18
- vpaddd ymm3, ymm3, ymm20
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 16
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vprord ymm4, ymm4, 12
- vpaddd ymm0, ymm0, ymm19
- vpaddd ymm1, ymm1, ymm26
- vpaddd ymm2, ymm2, ymm22
- vpaddd ymm3, ymm3, ymm23
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 8
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vprord ymm4, ymm4, 7
- vpaddd ymm0, ymm0, ymm27
- vpaddd ymm1, ymm1, ymm21
- vpaddd ymm2, ymm2, ymm17
- vpaddd ymm3, ymm3, ymm24
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vprord ymm15, ymm15, 16
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 12
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vpaddd ymm0, ymm0, ymm31
- vpaddd ymm1, ymm1, ymm16
- vpaddd ymm2, ymm2, ymm25
- vpaddd ymm3, ymm3, ymm22
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm1, ymm1, ymm5
- vpaddd ymm2, ymm2, ymm6
- vpaddd ymm3, ymm3, ymm7
- vpxord ymm12, ymm12, ymm0
- vpxord ymm13, ymm13, ymm1
- vpxord ymm14, ymm14, ymm2
- vpxord ymm15, ymm15, ymm3
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vprord ymm15, ymm15, 8
- vpaddd ymm8, ymm8, ymm12
- vpaddd ymm9, ymm9, ymm13
- vpaddd ymm10, ymm10, ymm14
- vpaddd ymm11, ymm11, ymm15
- vpxord ymm4, ymm4, ymm8
- vpxord ymm5, ymm5, ymm9
- vpxord ymm6, ymm6, ymm10
- vpxord ymm7, ymm7, ymm11
- vprord ymm4, ymm4, 7
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vpaddd ymm0, ymm0, ymm30
- vpaddd ymm1, ymm1, ymm18
- vpaddd ymm2, ymm2, ymm19
- vpaddd ymm3, ymm3, ymm23
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 16
- vprord ymm12, ymm12, 16
- vprord ymm13, ymm13, 16
- vprord ymm14, ymm14, 16
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 12
- vprord ymm6, ymm6, 12
- vprord ymm7, ymm7, 12
- vprord ymm4, ymm4, 12
- vpaddd ymm0, ymm0, ymm26
- vpaddd ymm1, ymm1, ymm28
- vpaddd ymm2, ymm2, ymm20
- vpaddd ymm3, ymm3, ymm29
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm1, ymm1, ymm6
- vpaddd ymm2, ymm2, ymm7
- vpaddd ymm3, ymm3, ymm4
- vpxord ymm15, ymm15, ymm0
- vpxord ymm12, ymm12, ymm1
- vpxord ymm13, ymm13, ymm2
- vpxord ymm14, ymm14, ymm3
- vprord ymm15, ymm15, 8
- vprord ymm12, ymm12, 8
- vprord ymm13, ymm13, 8
- vprord ymm14, ymm14, 8
- vpaddd ymm10, ymm10, ymm15
- vpaddd ymm11, ymm11, ymm12
- vpaddd ymm8, ymm8, ymm13
- vpaddd ymm9, ymm9, ymm14
- vpxord ymm5, ymm5, ymm10
- vpxord ymm6, ymm6, ymm11
- vpxord ymm7, ymm7, ymm8
- vpxord ymm4, ymm4, ymm9
- vprord ymm5, ymm5, 7
- vprord ymm6, ymm6, 7
- vprord ymm7, ymm7, 7
- vprord ymm4, ymm4, 7
- vpxor ymm0, ymm0, ymm8
- vpxor ymm1, ymm1, ymm9
- vpxor ymm2, ymm2, ymm10
- vpxor ymm3, ymm3, ymm11
- vpxor ymm4, ymm4, ymm12
- vpxor ymm5, ymm5, ymm13
- vpxor ymm6, ymm6, ymm14
- vpxor ymm7, ymm7, ymm15
- movzx eax, byte ptr [rbp+0x38]
- jne 2b
- mov rbx, qword ptr [rbp+0x50]
+ movzx r8d, byte ptr [rbp+0x48]
+ or r8d, edx
+ add rbx, 0x40
+ cmp rbx, qword ptr [rsp+0x100]
+ cmovz edx, r8d
+ mov dword ptr [rsp+0x80], edx
+ mov edx, 0xCC
+ kmovw k2, edx
+ mov edx, 0x33
+ kmovw k3, edx
+ mov rdx, qword ptr [rdi]
+ mov r8, qword ptr [rdi+0x20]
+ vmovups xmm8, xmmword ptr [rdx+rbx*1-0x40]
+ vinserti32x4 ymm8, ymm8, xmmword ptr [r8+rbx*1-0x40], 0x01
+ vmovups xmm12, xmmword ptr [rdx+rbx*1-0x30]
+ vinserti32x4 ymm12, ymm12, xmmword ptr [r8+rbx*1-0x30], 0x01
+ mov rdx, qword ptr [rdi+0x08]
+ mov r8, qword ptr [rdi+0x28]
+ vmovups xmm9, xmmword ptr [rdx+rbx*1-0x40]
+ vinserti32x4 ymm9, ymm9, xmmword ptr [r8+rbx*1-0x40], 0x01
+ vmovups xmm13, xmmword ptr [rdx+rbx*1-0x30]
+ vinserti32x4 ymm13, ymm13, xmmword ptr [r8+rbx*1-0x30], 0x01
+ mov rdx, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rdi+0x30]
+ vmovups xmm10, xmmword ptr [rdx+rbx*1-0x40]
+ vinserti32x4 ymm10, ymm10, xmmword ptr [r8+rbx*1-0x40], 0x01
+ vmovups xmm14, xmmword ptr [rdx+rbx*1-0x30]
+ vinserti32x4 ymm14, ymm14, xmmword ptr [r8+rbx*1-0x30], 0x01
+ mov rdx, qword ptr [rdi+0x18]
+ mov r8, qword ptr [rdi+0x38]
+ vmovups xmm11, xmmword ptr [rdx+rbx*1-0x40]
+ vinserti32x4 ymm11, ymm11, xmmword ptr [r8+rbx*1-0x40], 0x01
+ vmovups xmm15, xmmword ptr [rdx+rbx*1-0x30]
+ vinserti32x4 ymm15, ymm15, xmmword ptr [r8+rbx*1-0x30], 0x01
+ vpunpckldq ymm24, ymm8, ymm9
+ vpunpckhdq ymm9, ymm8, ymm9
+ vpunpckldq ymm8, ymm10, ymm11
+ vpunpckhdq ymm11, ymm10, ymm11
+ vpunpckldq ymm10, ymm12, ymm13
+ vpunpckhdq ymm13, ymm12, ymm13
+ vpunpckldq ymm12, ymm14, ymm15
+ vpunpckhdq ymm15, ymm14, ymm15
+ vshufps ymm14, ymm24, ymm8, 0x44
+ vshufps ymm8, ymm24, ymm8, 0xEE
+ vshufps ymm24, ymm9, ymm11, 0x44
+ vshufps ymm11, ymm9, ymm11, 0xEE
+ vshufps ymm9, ymm10, ymm12, 0x44
+ vshufps ymm12, ymm10, ymm12, 0xEE
+ vshufps ymm10, ymm13, ymm15, 0x44
+ vshufps ymm15, ymm13, ymm15, 0xEE
+ mov rdx, qword ptr [rdi]
+ mov r8, qword ptr [rdi+0x20]
+ vmovups xmm16, xmmword ptr [rdx+rbx*1-0x20]
+ vinserti32x4 ymm16, ymm16, xmmword ptr [r8+rbx*1-0x20], 0x01
+ vmovups xmm20, xmmword ptr [rdx+rbx*1-0x10]
+ vinserti32x4 ymm20, ymm20, xmmword ptr [r8+rbx*1-0x10], 0x01
+ mov rdx, qword ptr [rdi+0x08]
+ mov r8, qword ptr [rdi+0x28]
+ vmovups xmm17, xmmword ptr [rdx+rbx*1-0x20]
+ vinserti32x4 ymm17, ymm17, xmmword ptr [r8+rbx*1-0x20], 0x01
+ vmovups xmm21, xmmword ptr [rdx+rbx*1-0x10]
+ vinserti32x4 ymm21, ymm21, xmmword ptr [r8+rbx*1-0x10], 0x01
+ mov rdx, qword ptr [rdi+0x10]
+ mov r8, qword ptr [rdi+0x30]
+ vmovups xmm18, xmmword ptr [rdx+rbx*1-0x20]
+ vinserti32x4 ymm18, ymm18, xmmword ptr [r8+rbx*1-0x20], 0x01
+ vmovups xmm22, xmmword ptr [rdx+rbx*1-0x10]
+ vinserti32x4 ymm22, ymm22, xmmword ptr [r8+rbx*1-0x10], 0x01
+ mov rdx, qword ptr [rdi+0x18]
+ mov r8, qword ptr [rdi+0x38]
+ vmovups xmm19, xmmword ptr [rdx+rbx*1-0x20]
+ vinserti32x4 ymm19, ymm19, xmmword ptr [r8+rbx*1-0x20], 0x01
+ vmovups xmm23, xmmword ptr [rdx+rbx*1-0x10]
+ vinserti32x4 ymm23, ymm23, xmmword ptr [r8+rbx*1-0x10], 0x01
+ vpunpckldq ymm13, ymm16, ymm17
+ vpunpckhdq ymm17, ymm16, ymm17
+ vpunpckldq ymm16, ymm18, ymm19
+ vpunpckhdq ymm19, ymm18, ymm19
+ vpunpckldq ymm18, ymm20, ymm21
+ vpunpckhdq ymm21, ymm20, ymm21
+ vpunpckldq ymm20, ymm22, ymm23
+ vpunpckhdq ymm23, ymm22, ymm23
+ vshufps ymm22, ymm13, ymm16, 0x44
+ vshufps ymm16, ymm13, ymm16, 0xEE
+ vshufps ymm13, ymm17, ymm19, 0x44
+ vshufps ymm19, ymm17, ymm19, 0xEE
+ vshufps ymm17, ymm18, ymm20, 0x44
+ vshufps ymm20, ymm18, ymm20, 0xEE
+ vshufps ymm18, ymm21, ymm23, 0x44
+ vshufps ymm23, ymm21, ymm23, 0xEE
+ vpbroadcastd ymm21, dword ptr [rip+BLAKE3_IV_0]
+ vpbroadcastd ymm25, dword ptr [rip+BLAKE3_IV_1]
+ vpbroadcastd ymm26, dword ptr [rip+BLAKE3_IV_2]
+ vpbroadcastd ymm27, dword ptr [rip+BLAKE3_IV_3]
+ vmovdqa32 ymm28, ymmword ptr [rax]
+ vmovdqa32 ymm29, ymmword ptr [rax+0x40]
+ vpbroadcastd ymm30, dword ptr [rip+BLAKE3_BLOCK_LEN]
+ vpbroadcastd ymm31, dword ptr [rsp+0x80]
+ mov dl, 0x07
+4:
+ vpaddd ymm0, ymm0, ymm14
+ vpaddd ymm1, ymm1, ymm24
+ vpaddd ymm2, ymm2, ymm9
+ vpaddd ymm3, ymm3, ymm10
+ vmovdqa32 ymmword ptr [rsp+0x80], ymm14
+ vmovdqa32 ymmword ptr [rsp+0xC0], ymm10
+ vpaddd ymm0, ymm0, ymm4
+ vpaddd ymm1, ymm1, ymm5
+ vpaddd ymm2, ymm2, ymm6
+ vpaddd ymm3, ymm3, ymm7
+ vpxord ymm28, ymm28, ymm0
+ vmovdqa32 ymm14, ymm24
+ vpxord ymm29, ymm29, ymm1
+ vpxord ymm30, ymm30, ymm2
+ vpxord ymm31, ymm31, ymm3
+ vprord ymm28, ymm28, 0x10
+ vprord ymm29, ymm29, 0x10
+ vprord ymm30, ymm30, 0x10
+ vprord ymm31, ymm31, 0x10
+ vpaddd ymm21, ymm21, ymm28
+ vmovdqa32 ymm10, ymm9
+ vpaddd ymm25, ymm25, ymm29
+ vpaddd ymm26, ymm26, ymm30
+ vpaddd ymm27, ymm27, ymm31
+ vpxord ymm4, ymm4, ymm21
+ vpxord ymm5, ymm5, ymm25
+ vpxord ymm6, ymm6, ymm26
+ vpxord ymm7, ymm7, ymm27
+ vprord ymm4, ymm4, 0x0C
+ vprord ymm5, ymm5, 0x0C
+ vprord ymm6, ymm6, 0x0C
+ vprord ymm7, ymm7, 0x0C
+ vpaddd ymm0, ymm0, ymm8
+ vpaddd ymm1, ymm1, ymm11
+ vpaddd ymm2, ymm2, ymm12
+ vpaddd ymm3, ymm3, ymm15
+ vpaddd ymm0, ymm0, ymm4
+ vmovdqa32 ymm24, ymm11
+ vpaddd ymm1, ymm1, ymm5
+ vpaddd ymm2, ymm2, ymm6
+ vpaddd ymm3, ymm3, ymm7
+ vpxord ymm28, ymm28, ymm0
+ vpxord ymm29, ymm29, ymm1
+ vpxord ymm30, ymm30, ymm2
+ vpxord ymm31, ymm31, ymm3
+ vprord ymm28, ymm28, 0x08
+ vmovdqa32 ymm9, ymm15
+ vprord ymm29, ymm29, 0x08
+ vprord ymm30, ymm30, 0x08
+ vprord ymm31, ymm31, 0x08
+ vpaddd ymm21, ymm21, ymm28
+ vpaddd ymm25, ymm25, ymm29
+ vpaddd ymm26, ymm26, ymm30
+ vpaddd ymm27, ymm27, ymm31
+ vpxord ymm4, ymm4, ymm21
+ vmovdqa32 ymm11, ymm13
+ vpxord ymm5, ymm5, ymm25
+ vpxord ymm6, ymm6, ymm26
+ vpxord ymm7, ymm7, ymm27
+ vprord ymm4, ymm4, 0x07
+ vprord ymm5, ymm5, 0x07
+ vprord ymm6, ymm6, 0x07
+ vprord ymm7, ymm7, 0x07
+ vpaddd ymm0, ymm0, ymm22
+ vmovdqa32 ymm15, ymm20
+ vpaddd ymm1, ymm1, ymm13
+ vpaddd ymm2, ymm2, ymm17
+ vpaddd ymm3, ymm3, ymm18
+ vpaddd ymm0, ymm0, ymm5
+ vpaddd ymm1, ymm1, ymm6
+ vpaddd ymm2, ymm2, ymm7
+ vpaddd ymm3, ymm3, ymm4
+ vpxord ymm31, ymm31, ymm0
+ vmovdqa32 ymm13, ymm17
+ vpxord ymm28, ymm28, ymm1
+ vpxord ymm29, ymm29, ymm2
+ vpxord ymm30, ymm30, ymm3
+ vprord ymm31, ymm31, 0x10
+ vprord ymm28, ymm28, 0x10
+ vprord ymm29, ymm29, 0x10
+ vprord ymm30, ymm30, 0x10
+ vpaddd ymm26, ymm26, ymm31
+ vmovdqa32 ymm17, ymm16
+ vpaddd ymm27, ymm27, ymm28
+ vpaddd ymm21, ymm21, ymm29
+ vpaddd ymm25, ymm25, ymm30
+ vpxord ymm5, ymm5, ymm26
+ vpxord ymm6, ymm6, ymm27
+ vpxord ymm7, ymm7, ymm21
+ vpxord ymm4, ymm4, ymm25
+ vprord ymm5, ymm5, 0x0C
+ vprord ymm6, ymm6, 0x0C
+ vprord ymm7, ymm7, 0x0C
+ vprord ymm4, ymm4, 0x0C
+ vpaddd ymm0, ymm0, ymm16
+ vpaddd ymm1, ymm1, ymm19
+ vpaddd ymm2, ymm2, ymm20
+ vmovdqa32 ymm20, ymm18
+ vpaddd ymm3, ymm3, ymm23
+ vpaddd ymm0, ymm0, ymm5
+ vpaddd ymm1, ymm1, ymm6
+ vpaddd ymm2, ymm2, ymm7
+ vmovdqa32 ymm16, ymm19
+ vpaddd ymm3, ymm3, ymm4
+ vpxord ymm31, ymm31, ymm0
+ vpxord ymm28, ymm28, ymm1
+ vmovdqa32 ymm18, ymm23
+ vpxord ymm29, ymm29, ymm2
+ vpxord ymm30, ymm30, ymm3
+ vprord ymm31, ymm31, 0x08
+ vmovdqa32 ymm19, ymm12
+ vprord ymm28, ymm28, 0x08
+ vprord ymm29, ymm29, 0x08
+ vprord ymm30, ymm30, 0x08
+ vmovdqa32 ymm23, ymm22
+ vpaddd ymm26, ymm26, ymm31
+ vpaddd ymm27, ymm27, ymm28
+ vpaddd ymm21, ymm21, ymm29
+ vpaddd ymm25, ymm25, ymm30
+ vmovdqa32 ymm22, ymm8
+ vpxord ymm5, ymm5, ymm26
+ vpxord ymm6, ymm6, ymm27
+ vpxord ymm7, ymm7, ymm21
+ vpxord ymm4, ymm4, ymm25
+ vmovdqa32 ymm12, ymmword ptr [rsp+0x80]
+ vprord ymm5, ymm5, 0x07
+ vprord ymm6, ymm6, 0x07
+ vprord ymm7, ymm7, 0x07
+ vprord ymm4, ymm4, 0x07
+ vmovdqa32 ymm8, ymmword ptr [rsp+0xC0]
+ dec dl
+ jnz 4b
+ vpxord ymm0, ymm0, ymm21
+ vpxord ymm1, ymm1, ymm25
+ vpxord ymm2, ymm2, ymm26
+ vpxord ymm3, ymm3, ymm27
+ vpxord ymm4, ymm4, ymm28
+ vpxord ymm5, ymm5, ymm29
+ vpxord ymm6, ymm6, ymm30
+ vpxord ymm7, ymm7, ymm31
+ movzx edx, byte ptr [rbp+0x38]
+ jb 2b
+ mov r8, qword ptr [rbp+0x50]
vunpcklps ymm8, ymm0, ymm1
vunpcklps ymm9, ymm2, ymm3
vunpckhps ymm10, ymm0, ymm1
vunpcklps ymm11, ymm4, ymm5
vunpcklps ymm0, ymm6, ymm7
- vshufps ymm12, ymm8, ymm9, 78
+ vshufps ymm12, ymm8, ymm9, 0x4E
vblendps ymm1, ymm8, ymm12, 0xCC
- vshufps ymm8, ymm11, ymm0, 78
+ vshufps ymm8, ymm11, ymm0, 0x4E
vunpckhps ymm13, ymm2, ymm3
vblendps ymm2, ymm11, ymm8, 0xCC
vblendps ymm3, ymm12, ymm9, 0xCC
vperm2f128 ymm12, ymm1, ymm2, 0x20
- vmovups ymmword ptr [rbx], ymm12
+ vmovups ymmword ptr [r8], ymm12
vunpckhps ymm14, ymm4, ymm5
vblendps ymm4, ymm8, ymm0, 0xCC
vunpckhps ymm15, ymm6, ymm7
vperm2f128 ymm7, ymm3, ymm4, 0x20
- vmovups ymmword ptr [rbx+0x20], ymm7
- vshufps ymm5, ymm10, ymm13, 78
+ vmovups ymmword ptr [r8+0x20], ymm7
+ vshufps ymm5, ymm10, ymm13, 0x4E
vblendps ymm6, ymm5, ymm13, 0xCC
- vshufps ymm13, ymm14, ymm15, 78
+ vshufps ymm13, ymm14, ymm15, 0x4E
vblendps ymm10, ymm10, ymm5, 0xCC
vblendps ymm14, ymm14, ymm13, 0xCC
vperm2f128 ymm8, ymm10, ymm14, 0x20
- vmovups ymmword ptr [rbx+0x40], ymm8
+ vmovups ymmword ptr [r8+0x40], ymm8
vblendps ymm15, ymm13, ymm15, 0xCC
vperm2f128 ymm13, ymm6, ymm15, 0x20
- vmovups ymmword ptr [rbx+0x60], ymm13
+ vmovups ymmword ptr [r8+0x60], ymm13
vperm2f128 ymm9, ymm1, ymm2, 0x31
vperm2f128 ymm11, ymm3, ymm4, 0x31
- vmovups ymmword ptr [rbx+0x80], ymm9
+ vmovups ymmword ptr [r8+0x80], ymm9
vperm2f128 ymm14, ymm10, ymm14, 0x31
vperm2f128 ymm15, ymm6, ymm15, 0x31
- vmovups ymmword ptr [rbx+0xA0], ymm11
- vmovups ymmword ptr [rbx+0xC0], ymm14
- vmovups ymmword ptr [rbx+0xE0], ymm15
- vmovdqa ymm0, ymmword ptr [rsp]
- vmovdqa ymm2, ymmword ptr [rsp+0x2*0x20]
- vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20]
- vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20]
- vmovdqa ymmword ptr [rsp], ymm0
- vmovdqa ymmword ptr [rsp+0x2*0x20], ymm2
- add rbx, 256
- mov qword ptr [rbp+0x50], rbx
- add rdi, 64
- sub rsi, 8
+ vmovups ymmword ptr [r8+0xA0], ymm11
+ vmovups ymmword ptr [r8+0xC0], ymm14
+ vmovups ymmword ptr [r8+0xE0], ymm15
+ lea r9, qword ptr [rax+0x20]
+ kortestw k1, k1
+ cmovnz rax, r9
+ add r8, 0x100
+ mov qword ptr [rbp+0x50], r8
+ add rdi, 0x40
3:
- mov rbx, qword ptr [rbp+0x50]
- mov r15, qword ptr [rsp+0x80]
- movzx r13, byte ptr [rbp+0x38]
- movzx r12, byte ptr [rbp+0x48]
- test esi, 0x4
- je 3f
+ mov rdx, qword ptr [rbp+0x50]
+ movzx ebx, byte ptr [rbp+0x38]
+ movzx r8d, byte ptr [rbp+0x48]
+ test sil, 0x04
+ jz 3f
vbroadcasti32x4 zmm0, xmmword ptr [rcx]
- vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10]
- vmovdqa xmm12, xmmword ptr [rsp]
- vmovdqa xmm13, xmmword ptr [rsp+0x4*0x10]
- vpunpckldq xmm14, xmm12, xmm13
- vpunpckhdq xmm15, xmm12, xmm13
- vpermq ymm14, ymm14, 0xDC
- vpermq ymm15, ymm15, 0xDC
- vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip]
- vinserti64x4 zmm13, zmm14, ymm15, 0x01
- mov eax, 17476
- kmovw k2, eax
- vpblendmd zmm13 {k2}, zmm13, zmm12
- vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip]
- mov r8, qword ptr [rdi]
- mov r9, qword ptr [rdi+0x8]
- mov r10, qword ptr [rdi+0x10]
- mov r11, qword ptr [rdi+0x18]
- mov eax, 43690
- kmovw k3, eax
- mov eax, 34952
- kmovw k4, eax
- movzx eax, byte ptr [rbp+0x40]
- or eax, r13d
- xor edx, edx
-.p2align 5
+ vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x10]
+ vbroadcasti32x4 zmm4, xmmword ptr [rip+BLAKE3_IV]
+ mov r9d, 0x4444
+ kmovw k2, r9d
+ vmovdqa xmm6, xmmword ptr [rax]
+ vmovdqa xmm7, xmmword ptr [rax+0x40]
+ vpunpckldq xmm8, xmm6, xmm7
+ vpunpckhdq xmm9, xmm6, xmm7
+ vpermq ymm8, ymm8, 0xDC
+ vpermq ymm9, ymm9, 0xDC
+ vpbroadcastd zmm6, dword ptr [rip+BLAKE3_BLOCK_LEN]
+ vinserti64x4 zmm5, zmm8, ymm9, 0x01
+ vpblendmd zmm5 {k2}, zmm5, zmm6
+ mov r9, qword ptr [rdi]
+ mov r10, qword ptr [rdi+0x08]
+ mov r11, qword ptr [rdi+0x10]
+ mov r12, qword ptr [rdi+0x18]
+ mov r13d, 0xAAAA
+ kmovw k2, r13d
+ mov r13d, 0x8888
+ kmovw k3, r13d
+ movzx r13d, byte ptr [rbp+0x40]
+ or r13d, ebx
+ xor r14d, r14d
2:
- mov r14d, eax
- or eax, r12d
- add rdx, 64
- cmp rdx, r15
- cmovne eax, r14d
- mov dword ptr [rsp+0x88], eax
- vmovdqa32 zmm2, zmm15
- vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4]
- vpblendmd zmm3 {k4}, zmm13, zmm8
- vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40]
- vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01
- vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02
- vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03
- vmovups zmm9, zmmword ptr [r8+rdx-0x30]
- vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01
- vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02
- vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03
- vshufps zmm4, zmm8, zmm9, 136
- vshufps zmm5, zmm8, zmm9, 221
- vmovups zmm8, zmmword ptr [r8+rdx-0x20]
- vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01
- vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02
- vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03
- vmovups zmm9, zmmword ptr [r8+rdx-0x10]
- vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01
- vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02
- vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03
- vshufps zmm6, zmm8, zmm9, 136
- vshufps zmm7, zmm8, zmm9, 221
- vpshufd zmm6, zmm6, 0x93
- vpshufd zmm7, zmm7, 0x93
- mov al, 7
-9:
- vpaddd zmm0, zmm0, zmm4
- vpaddd zmm0, zmm0, zmm1
- vpxord zmm3, zmm3, zmm0
- vprord zmm3, zmm3, 16
- vpaddd zmm2, zmm2, zmm3
- vpxord zmm1, zmm1, zmm2
- vprord zmm1, zmm1, 12
- vpaddd zmm0, zmm0, zmm5
- vpaddd zmm0, zmm0, zmm1
- vpxord zmm3, zmm3, zmm0
- vprord zmm3, zmm3, 8
- vpaddd zmm2, zmm2, zmm3
- vpxord zmm1, zmm1, zmm2
- vprord zmm1, zmm1, 7
+ movzx r15d, byte ptr [rbp+0x48]
+ or r15d, r13d
+ add r14, 0x40
+ cmp r14, qword ptr [rsp+0x100]
+ cmovz r13d, r15d
+ mov dword ptr [rsp+0x80], r13d
+ vmovdqa32 zmm2, zmm4
+ vpbroadcastd zmm6, dword ptr [rsp+0x80]
+ vpblendmd zmm3 {k3}, zmm5, zmm6
+ vmovdqu32 zmm10, zmmword ptr [r9+r14*1-0x40]
+ vinserti32x4 zmm10, zmm10, xmmword ptr [r10+r14*1-0x40], 0x01
+ vinserti32x4 zmm10, zmm10, xmmword ptr [r11+r14*1-0x40], 0x02
+ vinserti32x4 zmm10, zmm10, xmmword ptr [r12+r14*1-0x40], 0x03
+ vmovdqu32 zmm11, zmmword ptr [r9+r14*1-0x30]
+ vinserti32x4 zmm11, zmm11, xmmword ptr [r10+r14*1-0x30], 0x01
+ vinserti32x4 zmm11, zmm11, xmmword ptr [r11+r14*1-0x30], 0x02
+ vinserti32x4 zmm11, zmm11, xmmword ptr [r12+r14*1-0x30], 0x03
+ vshufps zmm6, zmm10, zmm11, 0x88
+ vshufps zmm7, zmm10, zmm11, 0xDD
+ vmovdqu32 zmm10, zmmword ptr [r9+r14*1-0x20]
+ vinserti32x4 zmm10, zmm10, xmmword ptr [r10+r14*1-0x20], 0x01
+ vinserti32x4 zmm10, zmm10, xmmword ptr [r11+r14*1-0x20], 0x02
+ vinserti32x4 zmm10, zmm10, xmmword ptr [r12+r14*1-0x20], 0x03
+ vmovdqu32 zmm11, zmmword ptr [r9+r14*1-0x10]
+ vinserti32x4 zmm11, zmm11, xmmword ptr [r10+r14*1-0x10], 0x01
+ vinserti32x4 zmm11, zmm11, xmmword ptr [r11+r14*1-0x10], 0x02
+ vinserti32x4 zmm11, zmm11, xmmword ptr [r12+r14*1-0x10], 0x03
+ vshufps zmm8, zmm10, zmm11, 0x88
+ vshufps zmm9, zmm10, zmm11, 0xDD
+ vpshufd zmm8, zmm8, 0x93
+ vpshufd zmm9, zmm9, 0x93
+ mov r15b, 0x07
+4:
+ vpaddd zmm0, zmm0, zmm6
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x10
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x0C
+ vpaddd zmm0, zmm0, zmm7
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x08
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x07
vpshufd zmm0, zmm0, 0x93
vpshufd zmm3, zmm3, 0x4E
vpshufd zmm2, zmm2, 0x39
- vpaddd zmm0, zmm0, zmm6
- vpaddd zmm0, zmm0, zmm1
- vpxord zmm3, zmm3, zmm0
- vprord zmm3, zmm3, 16
- vpaddd zmm2, zmm2, zmm3
- vpxord zmm1, zmm1, zmm2
- vprord zmm1, zmm1, 12
- vpaddd zmm0, zmm0, zmm7
- vpaddd zmm0, zmm0, zmm1
- vpxord zmm3, zmm3, zmm0
- vprord zmm3, zmm3, 8
- vpaddd zmm2, zmm2, zmm3
- vpxord zmm1, zmm1, zmm2
- vprord zmm1, zmm1, 7
+ vpaddd zmm0, zmm0, zmm8
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x10
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x0C
+ vpaddd zmm0, zmm0, zmm9
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x08
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x07
vpshufd zmm0, zmm0, 0x39
vpshufd zmm3, zmm3, 0x4E
vpshufd zmm2, zmm2, 0x93
- dec al
- jz 9f
- vshufps zmm8, zmm4, zmm5, 214
- vpshufd zmm9, zmm4, 0x0F
- vpshufd zmm4, zmm8, 0x39
- vshufps zmm8, zmm6, zmm7, 250
- vpblendmd zmm9 {k3}, zmm9, zmm8
- vpunpcklqdq zmm8, zmm7, zmm5
- vpblendmd zmm8 {k4}, zmm8, zmm6
- vpshufd zmm8, zmm8, 0x78
- vpunpckhdq zmm5, zmm5, zmm7
- vpunpckldq zmm6, zmm6, zmm5
- vpshufd zmm7, zmm6, 0x1E
- vmovdqa32 zmm5, zmm9
- vmovdqa32 zmm6, zmm8
- jmp 9b
-9:
- vpxord zmm0, zmm0, zmm2
- vpxord zmm1, zmm1, zmm3
- mov eax, r13d
- cmp rdx, r15
- jne 2b
- vmovdqu xmmword ptr [rbx], xmm0
- vmovdqu xmmword ptr [rbx+0x10], xmm1
- vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
- vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
- vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02
- vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02
- vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03
- vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03
- vmovdqa xmm0, xmmword ptr [rsp]
- vmovdqa xmm2, xmmword ptr [rsp+0x40]
- vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10]
- vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10]
- vmovdqa xmmword ptr [rsp], xmm0
- vmovdqa xmmword ptr [rsp+0x40], xmm2
- add rbx, 128
- add rdi, 32
- sub rsi, 4
+ dec r15b
+ jz 4f
+ vshufps zmm12, zmm6, zmm7, 0xD6
+ vpshufd zmm13, zmm6, 0x0F
+ vpshufd zmm6, zmm12, 0x39
+ vshufps zmm12, zmm8, zmm9, 0xFA
+ vpblendmd zmm13 {k2}, zmm13, zmm12
+ vpunpcklqdq zmm12, zmm9, zmm7
+ vpblendmd zmm12 {k3}, zmm12, zmm8
+ vpshufd zmm12, zmm12, 0x78
+ vpunpckhdq zmm7, zmm7, zmm9
+ vpunpckldq zmm8, zmm8, zmm7
+ vpshufd zmm9, zmm8, 0x1E
+ vmovdqa32 zmm7, zmm13
+ vmovdqa32 zmm8, zmm12
+ jmp 4b
+4:
+ vpxord zmm0, zmm0, zmm2
+ vpxord zmm1, zmm1, zmm3
+ mov r13d, ebx
+ jb 2b
+ vmovdqu xmmword ptr [rdx], xmm0
+ vmovdqu xmmword ptr [rdx+0x10], xmm1
+ vextracti128 xmmword ptr [rdx+0x20], ymm0, 0x01
+ vextracti128 xmmword ptr [rdx+0x30], ymm1, 0x01
+ vextracti32x4 xmmword ptr [rdx+0x40], zmm0, 0x02
+ vextracti32x4 xmmword ptr [rdx+0x50], zmm1, 0x02
+ vextracti32x4 xmmword ptr [rdx+0x60], zmm0, 0x03
+ vextracti32x4 xmmword ptr [rdx+0x70], zmm1, 0x03
+ lea r15, qword ptr [rax+0x10]
+ kortestw k1, k1
+ cmovnz rax, r15
+ add rdx, 0x80
+ add rdi, 0x20
3:
- test esi, 0x2
- je 3f
+ test sil, 0x02
+ jz 3f
vbroadcasti128 ymm0, xmmword ptr [rcx]
vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
- vmovd xmm13, dword ptr [rsp]
- vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1
- vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
- vmovd xmm14, dword ptr [rsp+0x4]
- vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1
- vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
- vinserti128 ymm13, ymm13, xmm14, 0x01
- mov r8, qword ptr [rdi]
- mov r9, qword ptr [rdi+0x8]
- movzx eax, byte ptr [rbp+0x40]
- or eax, r13d
- xor edx, edx
-.p2align 5
+ vbroadcasti128 ymm4, xmmword ptr [rip+BLAKE3_IV]
+ vmovd xmm5, dword ptr [rax]
+ vpinsrd xmm5, xmm5, dword ptr [rax+0x40], 0x01
+ vpinsrd xmm5, xmm5, dword ptr [rip+BLAKE3_BLOCK_LEN], 0x02
+ vmovd xmm6, dword ptr [rax+0x04]
+ vpinsrd xmm6, xmm6, dword ptr [rax+0x44], 0x01
+ vpinsrd xmm6, xmm6, dword ptr [rip+BLAKE3_BLOCK_LEN], 0x02
+ vinserti128 ymm5, ymm5, xmm6, 0x01
+ mov r9, qword ptr [rdi]
+ mov r10, qword ptr [rdi+0x08]
+ mov r11d, ebx
+ movzx r12d, byte ptr [rbp+0x40]
+ or r11d, r12d
+ xor r12d, r12d
2:
- mov r14d, eax
- or eax, r12d
- add rdx, 64
- cmp rdx, r15
- cmovne eax, r14d
- mov dword ptr [rsp+0x88], eax
- vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
- vpbroadcastd ymm8, dword ptr [rsp+0x88]
- vpblendd ymm3, ymm13, ymm8, 0x88
- vmovups ymm8, ymmword ptr [r8+rdx-0x40]
- vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
- vmovups ymm9, ymmword ptr [r8+rdx-0x30]
- vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
- vshufps ymm4, ymm8, ymm9, 136
- vshufps ymm5, ymm8, ymm9, 221
- vmovups ymm8, ymmword ptr [r8+rdx-0x20]
- vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
- vmovups ymm9, ymmword ptr [r8+rdx-0x10]
- vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
- vshufps ymm6, ymm8, ymm9, 136
- vshufps ymm7, ymm8, ymm9, 221
- vpshufd ymm6, ymm6, 0x93
- vpshufd ymm7, ymm7, 0x93
- mov al, 7
-9:
- vpaddd ymm0, ymm0, ymm4
- vpaddd ymm0, ymm0, ymm1
- vpxord ymm3, ymm3, ymm0
- vprord ymm3, ymm3, 16
- vpaddd ymm2, ymm2, ymm3
- vpxord ymm1, ymm1, ymm2
- vprord ymm1, ymm1, 12
- vpaddd ymm0, ymm0, ymm5
- vpaddd ymm0, ymm0, ymm1
- vpxord ymm3, ymm3, ymm0
- vprord ymm3, ymm3, 8
- vpaddd ymm2, ymm2, ymm3
- vpxord ymm1, ymm1, ymm2
- vprord ymm1, ymm1, 7
+ movzx r13d, byte ptr [rbp+0x48]
+ or r13d, r11d
+ add r12, 0x40
+ cmp r12, qword ptr [rsp+0x100]
+ cmovz r11d, r13d
+ mov dword ptr [rsp+0x80], r11d
+ vmovdqa ymm2, ymm4
+ vpbroadcastd ymm6, dword ptr [rsp+0x80]
+ vpblendd ymm3, ymm5, ymm6, 0x88
+ vmovdqu ymm10, ymmword ptr [r9+r12*1-0x40]
+ vinserti128 ymm10, ymm10, xmmword ptr [r10+r12*1-0x40], 0x01
+ vmovdqu ymm11, ymmword ptr [r9+r12*1-0x30]
+ vinserti128 ymm11, ymm11, xmmword ptr [r10+r12*1-0x30], 0x01
+ vshufps ymm6, ymm10, ymm11, 0x88
+ vshufps ymm7, ymm10, ymm11, 0xDD
+ vmovdqu ymm10, ymmword ptr [r9+r12*1-0x20]
+ vinserti128 ymm10, ymm10, xmmword ptr [r10+r12*1-0x20], 0x01
+ vmovdqu ymm11, ymmword ptr [r9+r12*1-0x10]
+ vinserti128 ymm11, ymm11, xmmword ptr [r10+r12*1-0x10], 0x01
+ vshufps ymm8, ymm10, ymm11, 0x88
+ vshufps ymm9, ymm10, ymm11, 0xDD
+ vpshufd ymm8, ymm8, 0x93
+ vpshufd ymm9, ymm9, 0x93
+ mov r13b, 0x07
+4:
+ vpaddd ymm0, ymm0, ymm6
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x10
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x0C
+ vpaddd ymm0, ymm0, ymm7
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x08
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x07
vpshufd ymm0, ymm0, 0x93
vpshufd ymm3, ymm3, 0x4E
vpshufd ymm2, ymm2, 0x39
- vpaddd ymm0, ymm0, ymm6
- vpaddd ymm0, ymm0, ymm1
- vpxord ymm3, ymm3, ymm0
- vprord ymm3, ymm3, 16
- vpaddd ymm2, ymm2, ymm3
- vpxord ymm1, ymm1, ymm2
- vprord ymm1, ymm1, 12
- vpaddd ymm0, ymm0, ymm7
- vpaddd ymm0, ymm0, ymm1
- vpxord ymm3, ymm3, ymm0
- vprord ymm3, ymm3, 8
- vpaddd ymm2, ymm2, ymm3
- vpxord ymm1, ymm1, ymm2
- vprord ymm1, ymm1, 7
+ vpaddd ymm0, ymm0, ymm8
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x10
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x0C
+ vpaddd ymm0, ymm0, ymm9
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x08
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x07
vpshufd ymm0, ymm0, 0x39
vpshufd ymm3, ymm3, 0x4E
vpshufd ymm2, ymm2, 0x93
- dec al
- jz 9f
- vshufps ymm8, ymm4, ymm5, 214
- vpshufd ymm9, ymm4, 0x0F
- vpshufd ymm4, ymm8, 0x39
- vshufps ymm8, ymm6, ymm7, 250
- vpblendd ymm9, ymm9, ymm8, 0xAA
- vpunpcklqdq ymm8, ymm7, ymm5
- vpblendd ymm8, ymm8, ymm6, 0x88
- vpshufd ymm8, ymm8, 0x78
- vpunpckhdq ymm5, ymm5, ymm7
- vpunpckldq ymm6, ymm6, ymm5
- vpshufd ymm7, ymm6, 0x1E
- vmovdqa ymm5, ymm9
- vmovdqa ymm6, ymm8
- jmp 9b
-9:
- vpxor ymm0, ymm0, ymm2
- vpxor ymm1, ymm1, ymm3
- mov eax, r13d
- cmp rdx, r15
- jne 2b
- vmovdqu xmmword ptr [rbx], xmm0
- vmovdqu xmmword ptr [rbx+0x10], xmm1
- vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
- vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
- vmovdqa xmm0, xmmword ptr [rsp]
- vmovdqa xmm2, xmmword ptr [rsp+0x4*0x10]
- vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8]
- vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48]
- vmovdqa xmmword ptr [rsp], xmm0
- vmovdqa xmmword ptr [rsp+0x4*0x10], xmm2
- add rbx, 64
- add rdi, 16
- sub rsi, 2
+ dec r13b
+ jz 4f
+ vshufps ymm10, ymm6, ymm7, 0xD6
+ vpshufd ymm11, ymm6, 0x0F
+ vpshufd ymm6, ymm10, 0x39
+ vshufps ymm10, ymm8, ymm9, 0xFA
+ vpblendd ymm11, ymm11, ymm10, 0xAA
+ vpunpcklqdq ymm10, ymm9, ymm7
+ vpblendd ymm10, ymm10, ymm8, 0x88
+ vpshufd ymm10, ymm10, 0x78
+ vpunpckhdq ymm7, ymm7, ymm9
+ vpunpckldq ymm8, ymm8, ymm7
+ vpshufd ymm9, ymm8, 0x1E
+ vmovdqa ymm7, ymm11
+ vmovdqa ymm8, ymm10
+ jmp 4b
+4:
+ vpxor ymm0, ymm0, ymm2
+ vpxor ymm1, ymm1, ymm3
+ mov r11d, ebx
+ jb 2b
+ vmovdqu xmmword ptr [rdx], xmm0
+ vmovdqu xmmword ptr [rdx+0x10], xmm1
+ vextracti128 xmmword ptr [rdx+0x20], ymm0, 0x01
+ vextracti128 xmmword ptr [rdx+0x30], ymm1, 0x01
+ lea r13, qword ptr [rax+0x08]
+ kortestw k1, k1
+ cmovnz rax, r13
+ add rdx, 0x40
+ add rdi, 0x10
3:
- test esi, 0x1
- je 4b
+ test sil, 0x01
+ jz 9b
vmovdqu xmm0, xmmword ptr [rcx]
vmovdqu xmm1, xmmword ptr [rcx+0x10]
- vmovd xmm14, dword ptr [rsp]
- vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1
- vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
- vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip]
- mov r8, qword ptr [rdi]
- movzx eax, byte ptr [rbp+0x40]
- or eax, r13d
- xor edx, edx
-.p2align 5
+ vmovdqa xmm4, xmmword ptr [rip+BLAKE3_IV]
+ vmovd xmm5, dword ptr [rax]
+ vpinsrd xmm5, xmm5, dword ptr [rax+0x40], 0x01
+ vpinsrd xmm5, xmm5, dword ptr [rip+BLAKE3_BLOCK_LEN], 0x02
+ mov r9, qword ptr [rdi]
+ mov r10d, ebx
+ movzx r11d, byte ptr [rbp+0x40]
+ or r10d, r11d
+ xor r11d, r11d
2:
- mov r14d, eax
- or eax, r12d
- add rdx, 64
- cmp rdx, r15
- cmovne eax, r14d
- vpinsrd xmm3, xmm14, eax, 3
- vmovdqa xmm2, xmm15
- vmovups xmm8, xmmword ptr [r8+rdx-0x40]
- vmovups xmm9, xmmword ptr [r8+rdx-0x30]
- vshufps xmm4, xmm8, xmm9, 136
- vshufps xmm5, xmm8, xmm9, 221
- vmovups xmm8, xmmword ptr [r8+rdx-0x20]
- vmovups xmm9, xmmword ptr [r8+rdx-0x10]
- vshufps xmm6, xmm8, xmm9, 136
- vshufps xmm7, xmm8, xmm9, 221
- vpshufd xmm6, xmm6, 0x93
- vpshufd xmm7, xmm7, 0x93
- mov al, 7
-9:
- vpaddd xmm0, xmm0, xmm4
- vpaddd xmm0, xmm0, xmm1
- vpxord xmm3, xmm3, xmm0
- vprord xmm3, xmm3, 16
- vpaddd xmm2, xmm2, xmm3
- vpxord xmm1, xmm1, xmm2
- vprord xmm1, xmm1, 12
- vpaddd xmm0, xmm0, xmm5
- vpaddd xmm0, xmm0, xmm1
- vpxord xmm3, xmm3, xmm0
- vprord xmm3, xmm3, 8
- vpaddd xmm2, xmm2, xmm3
- vpxord xmm1, xmm1, xmm2
- vprord xmm1, xmm1, 7
+ movzx r12d, byte ptr [rbp+0x48]
+ or r12d, r10d
+ add r11, 0x40
+ cmp r11, qword ptr [rsp+0x100]
+ cmovz r10d, r12d
+ vmovdqa xmm2, xmm4
+ vpinsrd xmm3, xmm5, r10d, 0x03
+ vmovdqu xmm10, xmmword ptr [r9+r11*1-0x40]
+ vmovdqu xmm11, xmmword ptr [r9+r11*1-0x30]
+ vshufps xmm6, xmm10, xmm11, 0x88
+ vshufps xmm7, xmm10, xmm11, 0xDD
+ vmovdqu xmm10, xmmword ptr [r9+r11*1-0x20]
+ vmovdqu xmm11, xmmword ptr [r9+r11*1-0x10]
+ vshufps xmm8, xmm10, xmm11, 0x88
+ vshufps xmm9, xmm10, xmm11, 0xDD
+ vpshufd xmm8, xmm8, 0x93
+ vpshufd xmm9, xmm9, 0x93
+ mov r12b, 0x07
+4:
+ vpaddd xmm0, xmm0, xmm6
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x10
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x0C
+ vpaddd xmm0, xmm0, xmm7
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x08
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x07
vpshufd xmm0, xmm0, 0x93
vpshufd xmm3, xmm3, 0x4E
vpshufd xmm2, xmm2, 0x39
- vpaddd xmm0, xmm0, xmm6
- vpaddd xmm0, xmm0, xmm1
- vpxord xmm3, xmm3, xmm0
- vprord xmm3, xmm3, 16
- vpaddd xmm2, xmm2, xmm3
- vpxord xmm1, xmm1, xmm2
- vprord xmm1, xmm1, 12
- vpaddd xmm0, xmm0, xmm7
- vpaddd xmm0, xmm0, xmm1
- vpxord xmm3, xmm3, xmm0
- vprord xmm3, xmm3, 8
- vpaddd xmm2, xmm2, xmm3
- vpxord xmm1, xmm1, xmm2
- vprord xmm1, xmm1, 7
+ vpaddd xmm0, xmm0, xmm8
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x10
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x0C
+ vpaddd xmm0, xmm0, xmm9
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x08
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x07
vpshufd xmm0, xmm0, 0x39
vpshufd xmm3, xmm3, 0x4E
vpshufd xmm2, xmm2, 0x93
- dec al
- jz 9f
- vshufps xmm8, xmm4, xmm5, 214
- vpshufd xmm9, xmm4, 0x0F
- vpshufd xmm4, xmm8, 0x39
- vshufps xmm8, xmm6, xmm7, 250
- vpblendd xmm9, xmm9, xmm8, 0xAA
- vpunpcklqdq xmm8, xmm7, xmm5
- vpblendd xmm8, xmm8, xmm6, 0x88
- vpshufd xmm8, xmm8, 0x78
- vpunpckhdq xmm5, xmm5, xmm7
- vpunpckldq xmm6, xmm6, xmm5
- vpshufd xmm7, xmm6, 0x1E
- vmovdqa xmm5, xmm9
- vmovdqa xmm6, xmm8
- jmp 9b
-9:
- vpxor xmm0, xmm0, xmm2
- vpxor xmm1, xmm1, xmm3
- mov eax, r13d
- cmp rdx, r15
- jne 2b
- vmovdqu xmmword ptr [rbx], xmm0
- vmovdqu xmmword ptr [rbx+0x10], xmm1
- jmp 4b
+ dec r12b
+ jz 4f
+ vshufps xmm10, xmm6, xmm7, 0xD6
+ vpshufd xmm11, xmm6, 0x0F
+ vpshufd xmm6, xmm10, 0x39
+ vshufps xmm10, xmm8, xmm9, 0xFA
+ vpblendd xmm11, xmm11, xmm10, 0xAA
+ vpunpcklqdq xmm10, xmm9, xmm7
+ vpblendd xmm10, xmm10, xmm8, 0x88
+ vpshufd xmm10, xmm10, 0x78
+ vpunpckhdq xmm7, xmm7, xmm9
+ vpunpckldq xmm8, xmm8, xmm7
+ vpshufd xmm9, xmm8, 0x1E
+ vmovdqa xmm7, xmm11
+ vmovdqa xmm8, xmm10
+ jmp 4b
+4:
+ vpxor xmm0, xmm0, xmm2
+ vpxor xmm1, xmm1, xmm3
+ mov r10d, ebx
+ jb 2b
+ vmovdqu xmmword ptr [rdx], xmm0
+ vmovdqu xmmword ptr [rdx+0x10], xmm1
+ jmp 9b
+
.p2align 6
_blake3_compress_in_place_avx512:
blake3_compress_in_place_avx512:
@@ -2559,2238 +1258,878 @@ blake3_compress_xof_avx512:
blake3_xof_many_avx512:
_blake3_xof_many_avx512:
_CET_ENDBR
- mov r10,QWORD PTR [rsp+0x8]
- cmp r10,0x1
- ja 2f
- vmovdqu xmm0,XMMWORD PTR [rdi]
- vmovdqu xmm1,XMMWORD PTR [rdi+0x10]
- movzx eax,r8b
- movzx edx,dl
- shl rax,0x20
- add rdx,rax
- vmovq xmm3,rcx
- vmovq xmm4,rdx
- vpunpcklqdq xmm3,xmm3,xmm4
- vmovaps xmm2,XMMWORD PTR [BLAKE3_IV+rip]
- vmovups xmm8,XMMWORD PTR [rsi]
- vmovups xmm9,XMMWORD PTR [rsi+0x10]
- vshufps xmm4,xmm8,xmm9,0x88
- vshufps xmm5,xmm8,xmm9,0xdd
- vmovups xmm8,XMMWORD PTR [rsi+0x20]
- vmovups xmm9,XMMWORD PTR [rsi+0x30]
- vshufps xmm6,xmm8,xmm9,0x88
- vshufps xmm7,xmm8,xmm9,0xdd
- vpshufd xmm6,xmm6,0x93
- vpshufd xmm7,xmm7,0x93
- mov al,0x7
+ mov rax, qword ptr [rsp+0x08]
+ cmp rax, 0x01
+ jnbe 2f
+ vmovdqu xmm0, xmmword ptr [rdi]
+ vmovdqu xmm1, xmmword ptr [rdi+0x10]
+ movzx edx, dl
+ movzx r8d, r8b
+ shl r8, 0x20
+ or rdx, r8
+ vmovq xmm2, rdx
+ vmovq xmm3, rcx
+ vpunpcklqdq xmm3, xmm3, xmm2
+ vmovaps xmm2, xmmword ptr [rip+BLAKE3_IV]
+ vmovdqu xmm8, xmmword ptr [rsi]
+ vmovdqu xmm9, xmmword ptr [rsi+0x10]
+ vshufps xmm4, xmm8, xmm9, 0x88
+ vshufps xmm5, xmm8, xmm9, 0xDD
+ vmovdqu xmm8, xmmword ptr [rsi+0x20]
+ vmovdqu xmm9, xmmword ptr [rsi+0x30]
+ vshufps xmm6, xmm8, xmm9, 0x88
+ vshufps xmm7, xmm8, xmm9, 0xDD
+ vpshufd xmm6, xmm6, 0x93
+ vpshufd xmm7, xmm7, 0x93
+ mov cl, 0x07
3:
- vpaddd xmm0,xmm0,xmm4
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x10
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0xc
- vpaddd xmm0,xmm0,xmm5
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x8
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0x7
- vpshufd xmm0,xmm0,0x93
- vpshufd xmm3,xmm3,0x4e
- vpshufd xmm2,xmm2,0x39
- vpaddd xmm0,xmm0,xmm6
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x10
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0xc
- vpaddd xmm0,xmm0,xmm7
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x8
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0x7
- vpshufd xmm0,xmm0,0x39
- vpshufd xmm3,xmm3,0x4e
- vpshufd xmm2,xmm2,0x93
- dec al
- je 3f
- vshufps xmm8,xmm4,xmm5,0xd6
- vpshufd xmm9,xmm4,0xf
- vpshufd xmm4,xmm8,0x39
- vshufps xmm8,xmm6,xmm7,0xfa
- vpblendd xmm9,xmm9,xmm8,0xaa
- vpunpcklqdq xmm8,xmm7,xmm5
- vpblendd xmm8,xmm8,xmm6,0x88
- vpshufd xmm8,xmm8,0x78
- vpunpckhdq xmm5,xmm5,xmm7
- vpunpckldq xmm6,xmm6,xmm5
- vpshufd xmm7,xmm6,0x1e
- vmovdqa xmm5,xmm9
- vmovdqa xmm6,xmm8
- jmp 3b
+ vpaddd xmm0, xmm0, xmm4
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x10
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x0C
+ vpaddd xmm0, xmm0, xmm5
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x08
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x07
+ vpshufd xmm0, xmm0, 0x93
+ vpshufd xmm3, xmm3, 0x4E
+ vpshufd xmm2, xmm2, 0x39
+ vpaddd xmm0, xmm0, xmm6
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x10
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x0C
+ vpaddd xmm0, xmm0, xmm7
+ vpaddd xmm0, xmm0, xmm1
+ vpxord xmm3, xmm3, xmm0
+ vprord xmm3, xmm3, 0x08
+ vpaddd xmm2, xmm2, xmm3
+ vpxord xmm1, xmm1, xmm2
+ vprord xmm1, xmm1, 0x07
+ vpshufd xmm0, xmm0, 0x39
+ vpshufd xmm3, xmm3, 0x4E
+ vpshufd xmm2, xmm2, 0x93
+ dec cl
+ jz 3f
+ vshufps xmm8, xmm4, xmm5, 0xD6
+ vpshufd xmm9, xmm4, 0x0F
+ vpshufd xmm4, xmm8, 0x39
+ vshufps xmm8, xmm6, xmm7, 0xFA
+ vpblendd xmm9, xmm9, xmm8, 0xAA
+ vpunpcklqdq xmm8, xmm7, xmm5
+ vpblendd xmm8, xmm8, xmm6, 0x88
+ vpshufd xmm8, xmm8, 0x78
+ vpunpckhdq xmm5, xmm5, xmm7
+ vpunpckldq xmm6, xmm6, xmm5
+ vpshufd xmm7, xmm6, 0x1E
+ vmovdqa xmm5, xmm9
+ vmovdqa xmm6, xmm8
+ jmp 3b
3:
- vpxor xmm0,xmm0,xmm2
- vpxor xmm1,xmm1,xmm3
- vpxor xmm2,xmm2,XMMWORD PTR [rdi]
- vpxor xmm3,xmm3,XMMWORD PTR [rdi+0x10]
- vmovdqu XMMWORD PTR [r9],xmm0
- vmovdqu XMMWORD PTR [r9+0x10],xmm1
- vmovdqu XMMWORD PTR [r9+0x20],xmm2
- vmovdqu XMMWORD PTR [r9+0x30],xmm3
- ret
-.p2align 6
+ vpxor xmm0, xmm0, xmm2
+ vpxor xmm1, xmm1, xmm3
+ vpxor xmm2, xmm2, xmmword ptr [rdi]
+ vpxor xmm3, xmm3, xmmword ptr [rdi+0x10]
+ vmovdqu xmmword ptr [r9], xmm0
+ vmovdqu xmmword ptr [r9+0x10], xmm1
+ vmovdqu xmmword ptr [r9+0x20], xmm2
+ vmovdqu xmmword ptr [r9+0x30], xmm3
+ vzeroupper
+ ret
2:
- push rbp
- mov rbp,rsp
- sub rsp,0x90
- and rsp,0xffffffffffffffc0
- vpbroadcastd zmm0,ecx
- shr rcx,0x20
- vpbroadcastd zmm1,ecx
- vpaddd zmm2,zmm0,ZMMWORD PTR [ADD0+rip]
- vpcmpltud k1,zmm2,zmm0
- vpaddd zmm1{k1},zmm1,DWORD PTR [ADD1+rip]{1to16}
- vmovdqa32 ZMMWORD PTR [rsp],zmm2
- vmovdqa32 ZMMWORD PTR [rsp+0x40],zmm1
- cmp r10,0x10
- jb 2f
+ push rbp
+ mov rbp, rsp
+ sub rsp, 0x100
+ and rsp, 0xFFFFFFFFFFFFFFC0
+ vpbroadcastd zmm0, ecx
+ shr rcx, 0x20
+ vpbroadcastd zmm1, ecx
+ vpaddd zmm2, zmm0, zmmword ptr [rip+ADD0]
+ vpcmpud k1, zmm2, zmm0, 0x01
+ vpaddd zmm1 {k1}, zmm1, dword ptr [rip+ADD1] {1to16}
+ vmovdqa32 zmmword ptr [rsp], zmm2
+ vmovdqa32 zmmword ptr [rsp+0x40], zmm1
+ movzx edx, dl
+ movzx r8d, r8b
+ cmp rax, 0x08
+ jbe 2f
+.p2align 5
3:
- vpbroadcastd zmm16,DWORD PTR [rsi]
- vpbroadcastd zmm17,DWORD PTR [rsi+0x4]
- vpbroadcastd zmm18,DWORD PTR [rsi+0x8]
- vpbroadcastd zmm19,DWORD PTR [rsi+0xc]
- vpbroadcastd zmm20,DWORD PTR [rsi+0x10]
- vpbroadcastd zmm21,DWORD PTR [rsi+0x14]
- vpbroadcastd zmm22,DWORD PTR [rsi+0x18]
- vpbroadcastd zmm23,DWORD PTR [rsi+0x1c]
- vpbroadcastd zmm24,DWORD PTR [rsi+0x20]
- vpbroadcastd zmm25,DWORD PTR [rsi+0x24]
- vpbroadcastd zmm26,DWORD PTR [rsi+0x28]
- vpbroadcastd zmm27,DWORD PTR [rsi+0x2c]
- vpbroadcastd zmm28,DWORD PTR [rsi+0x30]
- vpbroadcastd zmm29,DWORD PTR [rsi+0x34]
- vpbroadcastd zmm30,DWORD PTR [rsi+0x38]
- vpbroadcastd zmm31,DWORD PTR [rsi+0x3c]
- vpbroadcastd zmm0,DWORD PTR [rdi]
- vpbroadcastd zmm1,DWORD PTR [rdi+0x4]
- vpbroadcastd zmm2,DWORD PTR [rdi+0x8]
- vpbroadcastd zmm3,DWORD PTR [rdi+0xc]
- vpbroadcastd zmm4,DWORD PTR [rdi+0x10]
- vpbroadcastd zmm5,DWORD PTR [rdi+0x14]
- vpbroadcastd zmm6,DWORD PTR [rdi+0x18]
- vpbroadcastd zmm7,DWORD PTR [rdi+0x1c]
- vpbroadcastd zmm8,DWORD PTR [BLAKE3_IV_0+rip]
- vpbroadcastd zmm9,DWORD PTR [BLAKE3_IV_1+rip]
- vpbroadcastd zmm10,DWORD PTR [BLAKE3_IV_2+rip]
- vpbroadcastd zmm11,DWORD PTR [BLAKE3_IV_3+rip]
- vmovdqa32 zmm12,ZMMWORD PTR [rsp]
- vmovdqa32 zmm13,ZMMWORD PTR [rsp+0x40]
- vpbroadcastd zmm14,edx
- vpbroadcastd zmm15,r8d
- vpaddd zmm0,zmm0,zmm16
- vpaddd zmm1,zmm1,zmm18
- vpaddd zmm2,zmm2,zmm20
- vpaddd zmm3,zmm3,zmm22
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vprord zmm15,zmm15,0x10
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0xc
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vpaddd zmm0,zmm0,zmm17
- vpaddd zmm1,zmm1,zmm19
- vpaddd zmm2,zmm2,zmm21
- vpaddd zmm3,zmm3,zmm23
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vprord zmm15,zmm15,0x8
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0x7
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vpaddd zmm0,zmm0,zmm24
- vpaddd zmm1,zmm1,zmm26
- vpaddd zmm2,zmm2,zmm28
- vpaddd zmm3,zmm3,zmm30
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x10
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vprord zmm4,zmm4,0xc
- vpaddd zmm0,zmm0,zmm25
- vpaddd zmm1,zmm1,zmm27
- vpaddd zmm2,zmm2,zmm29
- vpaddd zmm3,zmm3,zmm31
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x8
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vprord zmm4,zmm4,0x7
- vpaddd zmm0,zmm0,zmm18
- vpaddd zmm1,zmm1,zmm19
- vpaddd zmm2,zmm2,zmm23
- vpaddd zmm3,zmm3,zmm20
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vprord zmm15,zmm15,0x10
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0xc
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vpaddd zmm0,zmm0,zmm22
- vpaddd zmm1,zmm1,zmm26
- vpaddd zmm2,zmm2,zmm16
- vpaddd zmm3,zmm3,zmm29
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vprord zmm15,zmm15,0x8
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0x7
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vpaddd zmm0,zmm0,zmm17
- vpaddd zmm1,zmm1,zmm28
- vpaddd zmm2,zmm2,zmm25
- vpaddd zmm3,zmm3,zmm31
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x10
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vprord zmm4,zmm4,0xc
- vpaddd zmm0,zmm0,zmm27
- vpaddd zmm1,zmm1,zmm21
- vpaddd zmm2,zmm2,zmm30
- vpaddd zmm3,zmm3,zmm24
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x8
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vprord zmm4,zmm4,0x7
- vpaddd zmm0,zmm0,zmm19
- vpaddd zmm1,zmm1,zmm26
- vpaddd zmm2,zmm2,zmm29
- vpaddd zmm3,zmm3,zmm23
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vprord zmm15,zmm15,0x10
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0xc
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vpaddd zmm0,zmm0,zmm20
- vpaddd zmm1,zmm1,zmm28
- vpaddd zmm2,zmm2,zmm18
- vpaddd zmm3,zmm3,zmm30
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vprord zmm15,zmm15,0x8
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0x7
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vpaddd zmm0,zmm0,zmm22
- vpaddd zmm1,zmm1,zmm25
- vpaddd zmm2,zmm2,zmm27
- vpaddd zmm3,zmm3,zmm24
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x10
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vprord zmm4,zmm4,0xc
- vpaddd zmm0,zmm0,zmm21
- vpaddd zmm1,zmm1,zmm16
- vpaddd zmm2,zmm2,zmm31
- vpaddd zmm3,zmm3,zmm17
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x8
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vprord zmm4,zmm4,0x7
- vpaddd zmm0,zmm0,zmm26
- vpaddd zmm1,zmm1,zmm28
- vpaddd zmm2,zmm2,zmm30
- vpaddd zmm3,zmm3,zmm29
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vprord zmm15,zmm15,0x10
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0xc
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vpaddd zmm0,zmm0,zmm23
- vpaddd zmm1,zmm1,zmm25
- vpaddd zmm2,zmm2,zmm19
- vpaddd zmm3,zmm3,zmm31
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vprord zmm15,zmm15,0x8
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0x7
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vpaddd zmm0,zmm0,zmm20
- vpaddd zmm1,zmm1,zmm27
- vpaddd zmm2,zmm2,zmm21
- vpaddd zmm3,zmm3,zmm17
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x10
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vprord zmm4,zmm4,0xc
- vpaddd zmm0,zmm0,zmm16
- vpaddd zmm1,zmm1,zmm18
- vpaddd zmm2,zmm2,zmm24
- vpaddd zmm3,zmm3,zmm22
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x8
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vprord zmm4,zmm4,0x7
- vpaddd zmm0,zmm0,zmm28
- vpaddd zmm1,zmm1,zmm25
- vpaddd zmm2,zmm2,zmm31
- vpaddd zmm3,zmm3,zmm30
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vprord zmm15,zmm15,0x10
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0xc
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vpaddd zmm0,zmm0,zmm29
- vpaddd zmm1,zmm1,zmm27
- vpaddd zmm2,zmm2,zmm26
- vpaddd zmm3,zmm3,zmm24
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vprord zmm15,zmm15,0x8
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0x7
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vpaddd zmm0,zmm0,zmm23
- vpaddd zmm1,zmm1,zmm21
- vpaddd zmm2,zmm2,zmm16
- vpaddd zmm3,zmm3,zmm22
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x10
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vprord zmm4,zmm4,0xc
- vpaddd zmm0,zmm0,zmm18
- vpaddd zmm1,zmm1,zmm19
- vpaddd zmm2,zmm2,zmm17
- vpaddd zmm3,zmm3,zmm20
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x8
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vprord zmm4,zmm4,0x7
- vpaddd zmm0,zmm0,zmm25
- vpaddd zmm1,zmm1,zmm27
- vpaddd zmm2,zmm2,zmm24
- vpaddd zmm3,zmm3,zmm31
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vprord zmm15,zmm15,0x10
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0xc
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vpaddd zmm0,zmm0,zmm30
- vpaddd zmm1,zmm1,zmm21
- vpaddd zmm2,zmm2,zmm28
- vpaddd zmm3,zmm3,zmm17
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vprord zmm15,zmm15,0x8
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0x7
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vpaddd zmm0,zmm0,zmm29
- vpaddd zmm1,zmm1,zmm16
- vpaddd zmm2,zmm2,zmm18
- vpaddd zmm3,zmm3,zmm20
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x10
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vprord zmm4,zmm4,0xc
- vpaddd zmm0,zmm0,zmm19
- vpaddd zmm1,zmm1,zmm26
- vpaddd zmm2,zmm2,zmm22
- vpaddd zmm3,zmm3,zmm23
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x8
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vprord zmm4,zmm4,0x7
- vpaddd zmm0,zmm0,zmm27
- vpaddd zmm1,zmm1,zmm21
- vpaddd zmm2,zmm2,zmm17
- vpaddd zmm3,zmm3,zmm24
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vprord zmm15,zmm15,0x10
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0xc
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vpaddd zmm0,zmm0,zmm31
- vpaddd zmm1,zmm1,zmm16
- vpaddd zmm2,zmm2,zmm25
- vpaddd zmm3,zmm3,zmm22
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm1,zmm1,zmm5
- vpaddd zmm2,zmm2,zmm6
- vpaddd zmm3,zmm3,zmm7
- vpxord zmm12,zmm12,zmm0
- vpxord zmm13,zmm13,zmm1
- vpxord zmm14,zmm14,zmm2
- vpxord zmm15,zmm15,zmm3
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vprord zmm15,zmm15,0x8
- vpaddd zmm8,zmm8,zmm12
- vpaddd zmm9,zmm9,zmm13
- vpaddd zmm10,zmm10,zmm14
- vpaddd zmm11,zmm11,zmm15
- vpxord zmm4,zmm4,zmm8
- vpxord zmm5,zmm5,zmm9
- vpxord zmm6,zmm6,zmm10
- vpxord zmm7,zmm7,zmm11
- vprord zmm4,zmm4,0x7
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vpaddd zmm0,zmm0,zmm30
- vpaddd zmm1,zmm1,zmm18
- vpaddd zmm2,zmm2,zmm19
- vpaddd zmm3,zmm3,zmm23
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x10
- vprord zmm12,zmm12,0x10
- vprord zmm13,zmm13,0x10
- vprord zmm14,zmm14,0x10
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0xc
- vprord zmm6,zmm6,0xc
- vprord zmm7,zmm7,0xc
- vprord zmm4,zmm4,0xc
- vpaddd zmm0,zmm0,zmm26
- vpaddd zmm1,zmm1,zmm28
- vpaddd zmm2,zmm2,zmm20
- vpaddd zmm3,zmm3,zmm29
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm1,zmm1,zmm6
- vpaddd zmm2,zmm2,zmm7
- vpaddd zmm3,zmm3,zmm4
- vpxord zmm15,zmm15,zmm0
- vpxord zmm12,zmm12,zmm1
- vpxord zmm13,zmm13,zmm2
- vpxord zmm14,zmm14,zmm3
- vprord zmm15,zmm15,0x8
- vprord zmm12,zmm12,0x8
- vprord zmm13,zmm13,0x8
- vprord zmm14,zmm14,0x8
- vpaddd zmm10,zmm10,zmm15
- vpaddd zmm11,zmm11,zmm12
- vpaddd zmm8,zmm8,zmm13
- vpaddd zmm9,zmm9,zmm14
- vpxord zmm5,zmm5,zmm10
- vpxord zmm6,zmm6,zmm11
- vpxord zmm7,zmm7,zmm8
- vpxord zmm4,zmm4,zmm9
- vprord zmm5,zmm5,0x7
- vprord zmm6,zmm6,0x7
- vprord zmm7,zmm7,0x7
- vprord zmm4,zmm4,0x7
- vpxord zmm0,zmm0,zmm8
- vpxord zmm1,zmm1,zmm9
- vpxord zmm2,zmm2,zmm10
- vpxord zmm3,zmm3,zmm11
- vpxord zmm4,zmm4,zmm12
- vpxord zmm5,zmm5,zmm13
- vpxord zmm6,zmm6,zmm14
- vpxord zmm7,zmm7,zmm15
- vpxord zmm8,zmm8,DWORD PTR [rdi]{1to16}
- vpxord zmm9,zmm9,DWORD PTR [rdi+0x4]{1to16}
- vpxord zmm10,zmm10,DWORD PTR [rdi+0x8]{1to16}
- vpxord zmm11,zmm11,DWORD PTR [rdi+0xc]{1to16}
- vpxord zmm12,zmm12,DWORD PTR [rdi+0x10]{1to16}
- vpxord zmm13,zmm13,DWORD PTR [rdi+0x14]{1to16}
- vpxord zmm14,zmm14,DWORD PTR [rdi+0x18]{1to16}
- vpxord zmm15,zmm15,DWORD PTR [rdi+0x1c]{1to16}
- vpunpckldq zmm16,zmm0,zmm1
- vpunpckhdq zmm17,zmm0,zmm1
- vpunpckldq zmm18,zmm2,zmm3
- vpunpckhdq zmm19,zmm2,zmm3
- vpunpckldq zmm20,zmm4,zmm5
- vpunpckhdq zmm21,zmm4,zmm5
- vpunpckldq zmm22,zmm6,zmm7
- vpunpckhdq zmm23,zmm6,zmm7
- vpunpckldq zmm24,zmm8,zmm9
- vpunpckhdq zmm25,zmm8,zmm9
- vpunpckldq zmm26,zmm10,zmm11
- vpunpckhdq zmm27,zmm10,zmm11
- vpunpckldq zmm28,zmm12,zmm13
- vpunpckhdq zmm29,zmm12,zmm13
- vpunpckldq zmm30,zmm14,zmm15
- vpunpckhdq zmm31,zmm14,zmm15
- vpunpcklqdq zmm0,zmm16,zmm18
- vpunpckhqdq zmm1,zmm16,zmm18
- vpunpcklqdq zmm2,zmm17,zmm19
- vpunpckhqdq zmm3,zmm17,zmm19
- vpunpcklqdq zmm4,zmm20,zmm22
- vpunpckhqdq zmm5,zmm20,zmm22
- vpunpcklqdq zmm6,zmm21,zmm23
- vpunpckhqdq zmm7,zmm21,zmm23
- vpunpcklqdq zmm8,zmm24,zmm26
- vpunpckhqdq zmm9,zmm24,zmm26
- vpunpcklqdq zmm10,zmm25,zmm27
- vpunpckhqdq zmm11,zmm25,zmm27
- vpunpcklqdq zmm12,zmm28,zmm30
- vpunpckhqdq zmm13,zmm28,zmm30
- vpunpcklqdq zmm14,zmm29,zmm31
- vpunpckhqdq zmm15,zmm29,zmm31
- vshufi32x4 zmm16,zmm0,zmm4,0x88
- vshufi32x4 zmm17,zmm1,zmm5,0x88
- vshufi32x4 zmm18,zmm2,zmm6,0x88
- vshufi32x4 zmm19,zmm3,zmm7,0x88
- vshufi32x4 zmm20,zmm0,zmm4,0xdd
- vshufi32x4 zmm21,zmm1,zmm5,0xdd
- vshufi32x4 zmm22,zmm2,zmm6,0xdd
- vshufi32x4 zmm23,zmm3,zmm7,0xdd
- vshufi32x4 zmm24,zmm8,zmm12,0x88
- vshufi32x4 zmm25,zmm9,zmm13,0x88
- vshufi32x4 zmm26,zmm10,zmm14,0x88
- vshufi32x4 zmm27,zmm11,zmm15,0x88
- vshufi32x4 zmm28,zmm8,zmm12,0xdd
- vshufi32x4 zmm29,zmm9,zmm13,0xdd
- vshufi32x4 zmm30,zmm10,zmm14,0xdd
- vshufi32x4 zmm31,zmm11,zmm15,0xdd
- vshufi32x4 zmm0,zmm16,zmm24,0x88
- vshufi32x4 zmm1,zmm17,zmm25,0x88
- vshufi32x4 zmm2,zmm18,zmm26,0x88
- vshufi32x4 zmm3,zmm19,zmm27,0x88
- vshufi32x4 zmm4,zmm20,zmm28,0x88
- vshufi32x4 zmm5,zmm21,zmm29,0x88
- vshufi32x4 zmm6,zmm22,zmm30,0x88
- vshufi32x4 zmm7,zmm23,zmm31,0x88
- vshufi32x4 zmm8,zmm16,zmm24,0xdd
- vshufi32x4 zmm9,zmm17,zmm25,0xdd
- vshufi32x4 zmm10,zmm18,zmm26,0xdd
- vshufi32x4 zmm11,zmm19,zmm27,0xdd
- vshufi32x4 zmm12,zmm20,zmm28,0xdd
- vshufi32x4 zmm13,zmm21,zmm29,0xdd
- vshufi32x4 zmm14,zmm22,zmm30,0xdd
- vshufi32x4 zmm15,zmm23,zmm31,0xdd
- vmovdqu32 ZMMWORD PTR [r9],zmm0
- vmovdqu32 ZMMWORD PTR [r9+0x40],zmm1
- vmovdqu32 ZMMWORD PTR [r9+0x80],zmm2
- vmovdqu32 ZMMWORD PTR [r9+0xc0],zmm3
- vmovdqu32 ZMMWORD PTR [r9+0x100],zmm4
- vmovdqu32 ZMMWORD PTR [r9+0x140],zmm5
- vmovdqu32 ZMMWORD PTR [r9+0x180],zmm6
- vmovdqu32 ZMMWORD PTR [r9+0x1c0],zmm7
- vmovdqu32 ZMMWORD PTR [r9+0x200],zmm8
- vmovdqu32 ZMMWORD PTR [r9+0x240],zmm9
- vmovdqu32 ZMMWORD PTR [r9+0x280],zmm10
- vmovdqu32 ZMMWORD PTR [r9+0x2c0],zmm11
- vmovdqu32 ZMMWORD PTR [r9+0x300],zmm12
- vmovdqu32 ZMMWORD PTR [r9+0x340],zmm13
- vmovdqu32 ZMMWORD PTR [r9+0x380],zmm14
- vmovdqu32 ZMMWORD PTR [r9+0x3c0],zmm15
- vmovdqa32 zmm0,ZMMWORD PTR [rsp]
- vmovdqa32 zmm1,ZMMWORD PTR [rsp+0x40]
- vpaddd zmm2,zmm0,DWORD PTR [ADD16+rip]{1to16}
- vpcmpltud k1,zmm2,zmm0
- vpaddd zmm1{k1},zmm1,DWORD PTR [ADD1+rip]{1to16}
- vmovdqa32 ZMMWORD PTR [rsp],zmm2
- vmovdqa32 ZMMWORD PTR [rsp+0x40],zmm1
- add r9,0x400
- sub r10,0x10
- cmp r10,0x10
- jae 3b
- test r10,r10
- jne 2f
+ vpbroadcastd zmm0, dword ptr [rsi]
+ vpbroadcastd zmm1, dword ptr [rsi+0x04]
+ vpbroadcastd zmm2, dword ptr [rsi+0x08]
+ vpbroadcastd zmm3, dword ptr [rsi+0x0C]
+ vpbroadcastd zmm4, dword ptr [rsi+0x10]
+ vpbroadcastd zmm5, dword ptr [rsi+0x14]
+ vpbroadcastd zmm6, dword ptr [rsi+0x18]
+ vpbroadcastd zmm7, dword ptr [rsi+0x1C]
+ vpbroadcastd zmm8, dword ptr [rsi+0x20]
+ vpbroadcastd zmm9, dword ptr [rsi+0x24]
+ vpbroadcastd zmm10, dword ptr [rsi+0x28]
+ vpbroadcastd zmm11, dword ptr [rsi+0x2C]
+ vpbroadcastd zmm12, dword ptr [rsi+0x30]
+ vpbroadcastd zmm13, dword ptr [rsi+0x34]
+ vpbroadcastd zmm14, dword ptr [rsi+0x38]
+ vpbroadcastd zmm15, dword ptr [rsi+0x3C]
+ vpbroadcastd zmm16, dword ptr [rdi]
+ vpbroadcastd zmm17, dword ptr [rdi+0x04]
+ vpbroadcastd zmm18, dword ptr [rdi+0x08]
+ vpbroadcastd zmm19, dword ptr [rdi+0x0C]
+ vpbroadcastd zmm20, dword ptr [rdi+0x10]
+ vpbroadcastd zmm21, dword ptr [rdi+0x14]
+ vpbroadcastd zmm22, dword ptr [rdi+0x18]
+ vpbroadcastd zmm23, dword ptr [rdi+0x1C]
+ vpbroadcastd zmm24, dword ptr [rip+BLAKE3_IV_0]
+ vpbroadcastd zmm25, dword ptr [rip+BLAKE3_IV_1]
+ vpbroadcastd zmm26, dword ptr [rip+BLAKE3_IV_2]
+ vpbroadcastd zmm27, dword ptr [rip+BLAKE3_IV_3]
+ vmovdqa32 zmm28, zmmword ptr [rsp]
+ vmovdqa32 zmm29, zmmword ptr [rsp+0x40]
+ vpbroadcastd zmm30, edx
+ vpbroadcastd zmm31, r8d
+ mov cl, 0x07
+4:
+ vpaddd zmm16, zmm16, zmm0
+ vpaddd zmm17, zmm17, zmm2
+ vpaddd zmm18, zmm18, zmm4
+ vpaddd zmm19, zmm19, zmm6
+ vmovdqa32 zmmword ptr [rsp+0x80], zmm0
+ vmovdqa32 zmmword ptr [rsp+0xC0], zmm6
+ vpaddd zmm16, zmm16, zmm20
+ vpaddd zmm17, zmm17, zmm21
+ vpaddd zmm18, zmm18, zmm22
+ vpaddd zmm19, zmm19, zmm23
+ vpxord zmm28, zmm28, zmm16
+ vmovdqa32 zmm0, zmm2
+ vpxord zmm29, zmm29, zmm17
+ vpxord zmm30, zmm30, zmm18
+ vpxord zmm31, zmm31, zmm19
+ vprord zmm28, zmm28, 0x10
+ vprord zmm29, zmm29, 0x10
+ vprord zmm30, zmm30, 0x10
+ vprord zmm31, zmm31, 0x10
+ vpaddd zmm24, zmm24, zmm28
+ vmovdqa32 zmm6, zmm4
+ vpaddd zmm25, zmm25, zmm29
+ vpaddd zmm26, zmm26, zmm30
+ vpaddd zmm27, zmm27, zmm31
+ vpxord zmm20, zmm20, zmm24
+ vpxord zmm21, zmm21, zmm25
+ vpxord zmm22, zmm22, zmm26
+ vpxord zmm23, zmm23, zmm27
+ vprord zmm20, zmm20, 0x0C
+ vprord zmm21, zmm21, 0x0C
+ vprord zmm22, zmm22, 0x0C
+ vprord zmm23, zmm23, 0x0C
+ vpaddd zmm16, zmm16, zmm1
+ vpaddd zmm17, zmm17, zmm3
+ vpaddd zmm18, zmm18, zmm5
+ vpaddd zmm19, zmm19, zmm7
+ vpaddd zmm16, zmm16, zmm20
+ vmovdqa32 zmm2, zmm3
+ vpaddd zmm17, zmm17, zmm21
+ vpaddd zmm18, zmm18, zmm22
+ vpaddd zmm19, zmm19, zmm23
+ vpxord zmm28, zmm28, zmm16
+ vpxord zmm29, zmm29, zmm17
+ vpxord zmm30, zmm30, zmm18
+ vpxord zmm31, zmm31, zmm19
+ vprord zmm28, zmm28, 0x08
+ vmovdqa32 zmm4, zmm7
+ vprord zmm29, zmm29, 0x08
+ vprord zmm30, zmm30, 0x08
+ vprord zmm31, zmm31, 0x08
+ vpaddd zmm24, zmm24, zmm28
+ vpaddd zmm25, zmm25, zmm29
+ vpaddd zmm26, zmm26, zmm30
+ vpaddd zmm27, zmm27, zmm31
+ vpxord zmm20, zmm20, zmm24
+ vmovdqa32 zmm3, zmm10
+ vpxord zmm21, zmm21, zmm25
+ vpxord zmm22, zmm22, zmm26
+ vpxord zmm23, zmm23, zmm27
+ vprord zmm20, zmm20, 0x07
+ vprord zmm21, zmm21, 0x07
+ vprord zmm22, zmm22, 0x07
+ vprord zmm23, zmm23, 0x07
+ vpaddd zmm16, zmm16, zmm8
+ vmovdqa32 zmm7, zmm13
+ vpaddd zmm17, zmm17, zmm10
+ vpaddd zmm18, zmm18, zmm12
+ vpaddd zmm19, zmm19, zmm14
+ vpaddd zmm16, zmm16, zmm21
+ vpaddd zmm17, zmm17, zmm22
+ vpaddd zmm18, zmm18, zmm23
+ vpaddd zmm19, zmm19, zmm20
+ vpxord zmm31, zmm31, zmm16
+ vmovdqa32 zmm10, zmm12
+ vpxord zmm28, zmm28, zmm17
+ vpxord zmm29, zmm29, zmm18
+ vpxord zmm30, zmm30, zmm19
+ vprord zmm31, zmm31, 0x10
+ vprord zmm28, zmm28, 0x10
+ vprord zmm29, zmm29, 0x10
+ vprord zmm30, zmm30, 0x10
+ vpaddd zmm26, zmm26, zmm31
+ vmovdqa32 zmm12, zmm9
+ vpaddd zmm27, zmm27, zmm28
+ vpaddd zmm24, zmm24, zmm29
+ vpaddd zmm25, zmm25, zmm30
+ vpxord zmm21, zmm21, zmm26
+ vpxord zmm22, zmm22, zmm27
+ vpxord zmm23, zmm23, zmm24
+ vpxord zmm20, zmm20, zmm25
+ vprord zmm21, zmm21, 0x0C
+ vprord zmm22, zmm22, 0x0C
+ vprord zmm23, zmm23, 0x0C
+ vprord zmm20, zmm20, 0x0C
+ vpaddd zmm16, zmm16, zmm9
+ vpaddd zmm17, zmm17, zmm11
+ vpaddd zmm18, zmm18, zmm13
+ vmovdqa32 zmm13, zmm14
+ vpaddd zmm19, zmm19, zmm15
+ vpaddd zmm16, zmm16, zmm21
+ vpaddd zmm17, zmm17, zmm22
+ vpaddd zmm18, zmm18, zmm23
+ vmovdqa32 zmm9, zmm11
+ vpaddd zmm19, zmm19, zmm20
+ vpxord zmm31, zmm31, zmm16
+ vpxord zmm28, zmm28, zmm17
+ vmovdqa32 zmm14, zmm15
+ vpxord zmm29, zmm29, zmm18
+ vpxord zmm30, zmm30, zmm19
+ vprord zmm31, zmm31, 0x08
+ vmovdqa32 zmm11, zmm5
+ vprord zmm28, zmm28, 0x08
+ vprord zmm29, zmm29, 0x08
+ vprord zmm30, zmm30, 0x08
+ vmovdqa32 zmm15, zmm8
+ vpaddd zmm26, zmm26, zmm31
+ vpaddd zmm27, zmm27, zmm28
+ vpaddd zmm24, zmm24, zmm29
+ vpaddd zmm25, zmm25, zmm30
+ vmovdqa32 zmm8, zmm1
+ vpxord zmm21, zmm21, zmm26
+ vpxord zmm22, zmm22, zmm27
+ vpxord zmm23, zmm23, zmm24
+ vpxord zmm20, zmm20, zmm25
+ vmovdqa32 zmm5, zmmword ptr [rsp+0x80]
+ vprord zmm21, zmm21, 0x07
+ vprord zmm22, zmm22, 0x07
+ vprord zmm23, zmm23, 0x07
+ vprord zmm20, zmm20, 0x07
+ vmovdqa32 zmm1, zmmword ptr [rsp+0xC0]
+ dec cl
+ jnz 4b
+ vpxord zmm16, zmm16, zmm24
+ vpxord zmm17, zmm17, zmm25
+ vpxord zmm18, zmm18, zmm26
+ vpxord zmm19, zmm19, zmm27
+ vpxord zmm20, zmm20, zmm28
+ vpxord zmm21, zmm21, zmm29
+ vpxord zmm22, zmm22, zmm30
+ vpxord zmm23, zmm23, zmm31
+ vpunpckldq zmm0, zmm16, zmm18
+ vpunpckhdq zmm1, zmm16, zmm18
+ vpunpckldq zmm2, zmm17, zmm19
+ vpunpckhdq zmm3, zmm17, zmm19
+ vpunpckldq zmm4, zmm20, zmm22
+ vpunpckhdq zmm5, zmm20, zmm22
+ vpunpckldq zmm6, zmm21, zmm23
+ vpunpckhdq zmm7, zmm21, zmm23
+ vpunpckldq zmm16, zmm0, zmm2
+ vpunpckhdq zmm17, zmm0, zmm2
+ vpunpckldq zmm18, zmm1, zmm3
+ vpunpckhdq zmm19, zmm1, zmm3
+ vpunpckldq zmm20, zmm4, zmm6
+ vpunpckhdq zmm21, zmm4, zmm6
+ vpunpckldq zmm22, zmm5, zmm7
+ vpunpckhdq zmm23, zmm5, zmm7
+ vpunpckldq zmm0, zmm24, zmm26
+ vpunpckhdq zmm1, zmm24, zmm26
+ vpunpckldq zmm2, zmm25, zmm27
+ vpunpckhdq zmm3, zmm25, zmm27
+ vpunpckldq zmm4, zmm28, zmm30
+ vpunpckhdq zmm5, zmm28, zmm30
+ vpunpckldq zmm6, zmm29, zmm31
+ vpunpckhdq zmm7, zmm29, zmm31
+ vpunpckldq zmm24, zmm0, zmm2
+ vpunpckhdq zmm25, zmm0, zmm2
+ vpunpckldq zmm26, zmm1, zmm3
+ vpunpckhdq zmm27, zmm1, zmm3
+ vpunpckldq zmm28, zmm4, zmm6
+ vpunpckhdq zmm29, zmm4, zmm6
+ vpunpckldq zmm30, zmm5, zmm7
+ vpunpckhdq zmm31, zmm5, zmm7
+ vmovdqa32 zmm8, zmmword ptr [rip+INDEX0]
+ vmovdqa32 zmm9, zmmword ptr [rip+INDEX1]
+ vmovdqa32 zmm0, zmm16
+ vpermt2d zmm0, zmm8, zmm20
+ vpermt2d zmm16, zmm9, zmm20
+ vmovdqa32 zmm1, zmm24
+ vpermt2d zmm1, zmm8, zmm28
+ vpermt2d zmm24, zmm9, zmm28
+ vmovdqa32 zmm2, zmm17
+ vpermt2d zmm2, zmm8, zmm21
+ vpermt2d zmm17, zmm9, zmm21
+ vmovdqa32 zmm3, zmm25
+ vpermt2d zmm3, zmm8, zmm29
+ vpermt2d zmm25, zmm9, zmm29
+ vmovdqa32 zmm4, zmm18
+ vpermt2d zmm4, zmm8, zmm22
+ vpermt2d zmm18, zmm9, zmm22
+ vmovdqa32 zmm5, zmm26
+ vpermt2d zmm5, zmm8, zmm30
+ vpermt2d zmm26, zmm9, zmm30
+ vmovdqa32 zmm6, zmm19
+ vpermt2d zmm6, zmm8, zmm23
+ vpermt2d zmm19, zmm9, zmm23
+ vmovdqa32 zmm7, zmm27
+ vpermt2d zmm7, zmm8, zmm31
+ vpermt2d zmm27, zmm9, zmm31
+ vbroadcasti64x4 zmm8, ymmword ptr [rdi]
+ vpxord zmm1, zmm1, zmm8
+ vpxord zmm3, zmm3, zmm8
+ vpxord zmm5, zmm5, zmm8
+ vpxord zmm7, zmm7, zmm8
+ vpxord zmm24, zmm24, zmm8
+ vpxord zmm25, zmm25, zmm8
+ vpxord zmm26, zmm26, zmm8
+ vpxord zmm27, zmm27, zmm8
+ vextracti64x4 ymmword ptr [r9], zmm0, 0x00
+ vextracti64x4 ymmword ptr [r9+0x20], zmm1, 0x00
+ vextracti64x4 ymmword ptr [r9+0x40], zmm2, 0x00
+ vextracti64x4 ymmword ptr [r9+0x60], zmm3, 0x00
+ vextracti64x4 ymmword ptr [r9+0x80], zmm4, 0x00
+ vextracti64x4 ymmword ptr [r9+0xA0], zmm5, 0x00
+ vextracti64x4 ymmword ptr [r9+0xC0], zmm6, 0x00
+ vextracti64x4 ymmword ptr [r9+0xE0], zmm7, 0x00
+ vextracti64x4 ymmword ptr [r9+0x100], zmm16, 0x00
+ vextracti64x4 ymmword ptr [r9+0x120], zmm24, 0x00
+ vextracti64x4 ymmword ptr [r9+0x140], zmm17, 0x00
+ vextracti64x4 ymmword ptr [r9+0x160], zmm25, 0x00
+ vextracti64x4 ymmword ptr [r9+0x180], zmm18, 0x00
+ vextracti64x4 ymmword ptr [r9+0x1A0], zmm26, 0x00
+ vextracti64x4 ymmword ptr [r9+0x1C0], zmm19, 0x00
+ vextracti64x4 ymmword ptr [r9+0x1E0], zmm27, 0x00
+ vextracti64x4 ymmword ptr [r9+0x200], zmm0, 0x01
+ vextracti64x4 ymmword ptr [r9+0x220], zmm1, 0x01
+ cmp rax, 0x0A
+ jb 9f
+ vextracti64x4 ymmword ptr [r9+0x240], zmm2, 0x01
+ vextracti64x4 ymmword ptr [r9+0x260], zmm3, 0x01
+ cmp rax, 0x0B
+ jb 9f
+ vextracti64x4 ymmword ptr [r9+0x280], zmm4, 0x01
+ vextracti64x4 ymmword ptr [r9+0x2A0], zmm5, 0x01
+ cmp rax, 0x0C
+ jb 9f
+ vextracti64x4 ymmword ptr [r9+0x2C0], zmm6, 0x01
+ vextracti64x4 ymmword ptr [r9+0x2E0], zmm7, 0x01
+ cmp rax, 0x0D
+ jb 9f
+ vextracti64x4 ymmword ptr [r9+0x300], zmm16, 0x01
+ vextracti64x4 ymmword ptr [r9+0x320], zmm24, 0x01
+ cmp rax, 0x0E
+ jb 9f
+ vextracti64x4 ymmword ptr [r9+0x340], zmm17, 0x01
+ vextracti64x4 ymmword ptr [r9+0x360], zmm25, 0x01
+ cmp rax, 0x0F
+ jb 9f
+ vextracti64x4 ymmword ptr [r9+0x380], zmm18, 0x01
+ vextracti64x4 ymmword ptr [r9+0x3A0], zmm26, 0x01
+ cmp rax, 0x10
+ jb 9f
+ vextracti64x4 ymmword ptr [r9+0x3C0], zmm19, 0x01
+ vextracti64x4 ymmword ptr [r9+0x3E0], zmm27, 0x01
+ vmovdqa32 zmm0, zmmword ptr [rsp]
+ vmovdqa32 zmm1, zmmword ptr [rsp+0x40]
+ vpaddd zmm2, zmm0, dword ptr [rip+ADD16] {1to16}
+ vpcmpud k1, zmm2, zmm0, 0x01
+ vpaddd zmm1 {k1}, zmm1, dword ptr [rip+ADD1] {1to16}
+ vmovdqa32 zmmword ptr [rsp], zmm2
+ vmovdqa32 zmmword ptr [rsp+0x40], zmm1
+ add r9, 0x400
+ cmp rax, 0x18
+ lea rax, qword ptr [rax-0x10]
+ jnbe 3b
+ test al, al
+ jnz 2f
9:
- vzeroupper
- mov rsp,rbp
- pop rbp
- ret
-2:
- test r10,0x8
- je 2f
- vpbroadcastd ymm16,DWORD PTR [rsi]
- vpbroadcastd ymm17,DWORD PTR [rsi+0x4]
- vpbroadcastd ymm18,DWORD PTR [rsi+0x8]
- vpbroadcastd ymm19,DWORD PTR [rsi+0xc]
- vpbroadcastd ymm20,DWORD PTR [rsi+0x10]
- vpbroadcastd ymm21,DWORD PTR [rsi+0x14]
- vpbroadcastd ymm22,DWORD PTR [rsi+0x18]
- vpbroadcastd ymm23,DWORD PTR [rsi+0x1c]
- vpbroadcastd ymm24,DWORD PTR [rsi+0x20]
- vpbroadcastd ymm25,DWORD PTR [rsi+0x24]
- vpbroadcastd ymm26,DWORD PTR [rsi+0x28]
- vpbroadcastd ymm27,DWORD PTR [rsi+0x2c]
- vpbroadcastd ymm28,DWORD PTR [rsi+0x30]
- vpbroadcastd ymm29,DWORD PTR [rsi+0x34]
- vpbroadcastd ymm30,DWORD PTR [rsi+0x38]
- vpbroadcastd ymm31,DWORD PTR [rsi+0x3c]
- vpbroadcastd ymm0,DWORD PTR [rdi]
- vpbroadcastd ymm1,DWORD PTR [rdi+0x4]
- vpbroadcastd ymm2,DWORD PTR [rdi+0x8]
- vpbroadcastd ymm3,DWORD PTR [rdi+0xc]
- vpbroadcastd ymm4,DWORD PTR [rdi+0x10]
- vpbroadcastd ymm5,DWORD PTR [rdi+0x14]
- vpbroadcastd ymm6,DWORD PTR [rdi+0x18]
- vpbroadcastd ymm7,DWORD PTR [rdi+0x1c]
- vpbroadcastd ymm8,DWORD PTR [BLAKE3_IV_0+rip]
- vpbroadcastd ymm9,DWORD PTR [BLAKE3_IV_1+rip]
- vpbroadcastd ymm10,DWORD PTR [BLAKE3_IV_2+rip]
- vpbroadcastd ymm11,DWORD PTR [BLAKE3_IV_3+rip]
- vmovdqa ymm12,YMMWORD PTR [rsp]
- vmovdqa ymm13,YMMWORD PTR [rsp+0x40]
- vpbroadcastd ymm14,edx
- vpbroadcastd ymm15,r8d
- vpaddd ymm0,ymm0,ymm16
- vpaddd ymm1,ymm1,ymm18
- vpaddd ymm2,ymm2,ymm20
- vpaddd ymm3,ymm3,ymm22
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vprord ymm15,ymm15,0x10
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0xc
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vpaddd ymm0,ymm0,ymm17
- vpaddd ymm1,ymm1,ymm19
- vpaddd ymm2,ymm2,ymm21
- vpaddd ymm3,ymm3,ymm23
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vprord ymm15,ymm15,0x8
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0x7
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vpaddd ymm0,ymm0,ymm24
- vpaddd ymm1,ymm1,ymm26
- vpaddd ymm2,ymm2,ymm28
- vpaddd ymm3,ymm3,ymm30
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x10
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vprord ymm4,ymm4,0xc
- vpaddd ymm0,ymm0,ymm25
- vpaddd ymm1,ymm1,ymm27
- vpaddd ymm2,ymm2,ymm29
- vpaddd ymm3,ymm3,ymm31
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x8
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vprord ymm4,ymm4,0x7
- vpaddd ymm0,ymm0,ymm18
- vpaddd ymm1,ymm1,ymm19
- vpaddd ymm2,ymm2,ymm23
- vpaddd ymm3,ymm3,ymm20
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vprord ymm15,ymm15,0x10
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0xc
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vpaddd ymm0,ymm0,ymm22
- vpaddd ymm1,ymm1,ymm26
- vpaddd ymm2,ymm2,ymm16
- vpaddd ymm3,ymm3,ymm29
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vprord ymm15,ymm15,0x8
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0x7
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vpaddd ymm0,ymm0,ymm17
- vpaddd ymm1,ymm1,ymm28
- vpaddd ymm2,ymm2,ymm25
- vpaddd ymm3,ymm3,ymm31
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x10
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vprord ymm4,ymm4,0xc
- vpaddd ymm0,ymm0,ymm27
- vpaddd ymm1,ymm1,ymm21
- vpaddd ymm2,ymm2,ymm30
- vpaddd ymm3,ymm3,ymm24
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x8
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vprord ymm4,ymm4,0x7
- vpaddd ymm0,ymm0,ymm19
- vpaddd ymm1,ymm1,ymm26
- vpaddd ymm2,ymm2,ymm29
- vpaddd ymm3,ymm3,ymm23
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vprord ymm15,ymm15,0x10
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0xc
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vpaddd ymm0,ymm0,ymm20
- vpaddd ymm1,ymm1,ymm28
- vpaddd ymm2,ymm2,ymm18
- vpaddd ymm3,ymm3,ymm30
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vprord ymm15,ymm15,0x8
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0x7
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vpaddd ymm0,ymm0,ymm22
- vpaddd ymm1,ymm1,ymm25
- vpaddd ymm2,ymm2,ymm27
- vpaddd ymm3,ymm3,ymm24
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x10
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vprord ymm4,ymm4,0xc
- vpaddd ymm0,ymm0,ymm21
- vpaddd ymm1,ymm1,ymm16
- vpaddd ymm2,ymm2,ymm31
- vpaddd ymm3,ymm3,ymm17
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x8
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vprord ymm4,ymm4,0x7
- vpaddd ymm0,ymm0,ymm26
- vpaddd ymm1,ymm1,ymm28
- vpaddd ymm2,ymm2,ymm30
- vpaddd ymm3,ymm3,ymm29
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vprord ymm15,ymm15,0x10
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0xc
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vpaddd ymm0,ymm0,ymm23
- vpaddd ymm1,ymm1,ymm25
- vpaddd ymm2,ymm2,ymm19
- vpaddd ymm3,ymm3,ymm31
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vprord ymm15,ymm15,0x8
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0x7
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vpaddd ymm0,ymm0,ymm20
- vpaddd ymm1,ymm1,ymm27
- vpaddd ymm2,ymm2,ymm21
- vpaddd ymm3,ymm3,ymm17
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x10
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vprord ymm4,ymm4,0xc
- vpaddd ymm0,ymm0,ymm16
- vpaddd ymm1,ymm1,ymm18
- vpaddd ymm2,ymm2,ymm24
- vpaddd ymm3,ymm3,ymm22
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x8
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vprord ymm4,ymm4,0x7
- vpaddd ymm0,ymm0,ymm28
- vpaddd ymm1,ymm1,ymm25
- vpaddd ymm2,ymm2,ymm31
- vpaddd ymm3,ymm3,ymm30
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vprord ymm15,ymm15,0x10
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0xc
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vpaddd ymm0,ymm0,ymm29
- vpaddd ymm1,ymm1,ymm27
- vpaddd ymm2,ymm2,ymm26
- vpaddd ymm3,ymm3,ymm24
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vprord ymm15,ymm15,0x8
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0x7
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vpaddd ymm0,ymm0,ymm23
- vpaddd ymm1,ymm1,ymm21
- vpaddd ymm2,ymm2,ymm16
- vpaddd ymm3,ymm3,ymm22
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x10
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vprord ymm4,ymm4,0xc
- vpaddd ymm0,ymm0,ymm18
- vpaddd ymm1,ymm1,ymm19
- vpaddd ymm2,ymm2,ymm17
- vpaddd ymm3,ymm3,ymm20
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x8
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vprord ymm4,ymm4,0x7
- vpaddd ymm0,ymm0,ymm25
- vpaddd ymm1,ymm1,ymm27
- vpaddd ymm2,ymm2,ymm24
- vpaddd ymm3,ymm3,ymm31
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vprord ymm15,ymm15,0x10
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0xc
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vpaddd ymm0,ymm0,ymm30
- vpaddd ymm1,ymm1,ymm21
- vpaddd ymm2,ymm2,ymm28
- vpaddd ymm3,ymm3,ymm17
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vprord ymm15,ymm15,0x8
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0x7
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vpaddd ymm0,ymm0,ymm29
- vpaddd ymm1,ymm1,ymm16
- vpaddd ymm2,ymm2,ymm18
- vpaddd ymm3,ymm3,ymm20
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x10
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vprord ymm4,ymm4,0xc
- vpaddd ymm0,ymm0,ymm19
- vpaddd ymm1,ymm1,ymm26
- vpaddd ymm2,ymm2,ymm22
- vpaddd ymm3,ymm3,ymm23
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x8
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vprord ymm4,ymm4,0x7
- vpaddd ymm0,ymm0,ymm27
- vpaddd ymm1,ymm1,ymm21
- vpaddd ymm2,ymm2,ymm17
- vpaddd ymm3,ymm3,ymm24
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vprord ymm15,ymm15,0x10
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0xc
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vpaddd ymm0,ymm0,ymm31
- vpaddd ymm1,ymm1,ymm16
- vpaddd ymm2,ymm2,ymm25
- vpaddd ymm3,ymm3,ymm22
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm1,ymm1,ymm5
- vpaddd ymm2,ymm2,ymm6
- vpaddd ymm3,ymm3,ymm7
- vpxord ymm12,ymm12,ymm0
- vpxord ymm13,ymm13,ymm1
- vpxord ymm14,ymm14,ymm2
- vpxord ymm15,ymm15,ymm3
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vprord ymm15,ymm15,0x8
- vpaddd ymm8,ymm8,ymm12
- vpaddd ymm9,ymm9,ymm13
- vpaddd ymm10,ymm10,ymm14
- vpaddd ymm11,ymm11,ymm15
- vpxord ymm4,ymm4,ymm8
- vpxord ymm5,ymm5,ymm9
- vpxord ymm6,ymm6,ymm10
- vpxord ymm7,ymm7,ymm11
- vprord ymm4,ymm4,0x7
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vpaddd ymm0,ymm0,ymm30
- vpaddd ymm1,ymm1,ymm18
- vpaddd ymm2,ymm2,ymm19
- vpaddd ymm3,ymm3,ymm23
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x10
- vprord ymm12,ymm12,0x10
- vprord ymm13,ymm13,0x10
- vprord ymm14,ymm14,0x10
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0xc
- vprord ymm6,ymm6,0xc
- vprord ymm7,ymm7,0xc
- vprord ymm4,ymm4,0xc
- vpaddd ymm0,ymm0,ymm26
- vpaddd ymm1,ymm1,ymm28
- vpaddd ymm2,ymm2,ymm20
- vpaddd ymm3,ymm3,ymm29
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm1,ymm1,ymm6
- vpaddd ymm2,ymm2,ymm7
- vpaddd ymm3,ymm3,ymm4
- vpxord ymm15,ymm15,ymm0
- vpxord ymm12,ymm12,ymm1
- vpxord ymm13,ymm13,ymm2
- vpxord ymm14,ymm14,ymm3
- vprord ymm15,ymm15,0x8
- vprord ymm12,ymm12,0x8
- vprord ymm13,ymm13,0x8
- vprord ymm14,ymm14,0x8
- vpaddd ymm10,ymm10,ymm15
- vpaddd ymm11,ymm11,ymm12
- vpaddd ymm8,ymm8,ymm13
- vpaddd ymm9,ymm9,ymm14
- vpxord ymm5,ymm5,ymm10
- vpxord ymm6,ymm6,ymm11
- vpxord ymm7,ymm7,ymm8
- vpxord ymm4,ymm4,ymm9
- vprord ymm5,ymm5,0x7
- vprord ymm6,ymm6,0x7
- vprord ymm7,ymm7,0x7
- vprord ymm4,ymm4,0x7
- vpxor ymm0,ymm0,ymm8
- vpxor ymm1,ymm1,ymm9
- vpxor ymm2,ymm2,ymm10
- vpxor ymm3,ymm3,ymm11
- vpxor ymm4,ymm4,ymm12
- vpxor ymm5,ymm5,ymm13
- vpxor ymm6,ymm6,ymm14
- vpxor ymm7,ymm7,ymm15
- vpxord ymm8,ymm8,DWORD PTR [rdi]{1to8}
- vpxord ymm9,ymm9,DWORD PTR [rdi+0x4]{1to8}
- vpxord ymm10,ymm10,DWORD PTR [rdi+0x8]{1to8}
- vpxord ymm11,ymm11,DWORD PTR [rdi+0xc]{1to8}
- vpxord ymm12,ymm12,DWORD PTR [rdi+0x10]{1to8}
- vpxord ymm13,ymm13,DWORD PTR [rdi+0x14]{1to8}
- vpxord ymm14,ymm14,DWORD PTR [rdi+0x18]{1to8}
- vpxord ymm15,ymm15,DWORD PTR [rdi+0x1c]{1to8}
- vpunpckldq ymm16,ymm0,ymm1
- vpunpckhdq ymm17,ymm0,ymm1
- vpunpckldq ymm18,ymm2,ymm3
- vpunpckhdq ymm19,ymm2,ymm3
- vpunpckldq ymm20,ymm4,ymm5
- vpunpckhdq ymm21,ymm4,ymm5
- vpunpckldq ymm22,ymm6,ymm7
- vpunpckhdq ymm23,ymm6,ymm7
- vpunpckldq ymm24,ymm8,ymm9
- vpunpckhdq ymm25,ymm8,ymm9
- vpunpckldq ymm26,ymm10,ymm11
- vpunpckhdq ymm27,ymm10,ymm11
- vpunpckldq ymm28,ymm12,ymm13
- vpunpckhdq ymm29,ymm12,ymm13
- vpunpckldq ymm30,ymm14,ymm15
- vpunpckhdq ymm31,ymm14,ymm15
- vpunpcklqdq ymm0,ymm16,ymm18
- vpunpckhqdq ymm1,ymm16,ymm18
- vpunpcklqdq ymm2,ymm17,ymm19
- vpunpckhqdq ymm3,ymm17,ymm19
- vpunpcklqdq ymm4,ymm20,ymm22
- vpunpckhqdq ymm5,ymm20,ymm22
- vpunpcklqdq ymm6,ymm21,ymm23
- vpunpckhqdq ymm7,ymm21,ymm23
- vpunpcklqdq ymm8,ymm24,ymm26
- vpunpckhqdq ymm9,ymm24,ymm26
- vpunpcklqdq ymm10,ymm25,ymm27
- vpunpckhqdq ymm11,ymm25,ymm27
- vpunpcklqdq ymm12,ymm28,ymm30
- vpunpckhqdq ymm13,ymm28,ymm30
- vpunpcklqdq ymm14,ymm29,ymm31
- vpunpckhqdq ymm15,ymm29,ymm31
- vshufi32x4 ymm16,ymm0,ymm4,0x0
- vshufi32x4 ymm17,ymm8,ymm12,0x0
- vshufi32x4 ymm18,ymm1,ymm5,0x0
- vshufi32x4 ymm19,ymm9,ymm13,0x0
- vshufi32x4 ymm20,ymm2,ymm6,0x0
- vshufi32x4 ymm21,ymm10,ymm14,0x0
- vshufi32x4 ymm22,ymm3,ymm7,0x0
- vshufi32x4 ymm23,ymm11,ymm15,0x0
- vshufi32x4 ymm24,ymm0,ymm4,0x3
- vshufi32x4 ymm25,ymm8,ymm12,0x3
- vshufi32x4 ymm26,ymm1,ymm5,0x3
- vshufi32x4 ymm27,ymm9,ymm13,0x3
- vshufi32x4 ymm28,ymm2,ymm6,0x3
- vshufi32x4 ymm29,ymm10,ymm14,0x3
- vshufi32x4 ymm30,ymm3,ymm7,0x3
- vshufi32x4 ymm31,ymm11,ymm15,0x3
- vmovdqu32 YMMWORD PTR [r9],ymm16
- vmovdqu32 YMMWORD PTR [r9+0x20],ymm17
- vmovdqu32 YMMWORD PTR [r9+0x40],ymm18
- vmovdqu32 YMMWORD PTR [r9+0x60],ymm19
- vmovdqu32 YMMWORD PTR [r9+0x80],ymm20
- vmovdqu32 YMMWORD PTR [r9+0xa0],ymm21
- vmovdqu32 YMMWORD PTR [r9+0xc0],ymm22
- vmovdqu32 YMMWORD PTR [r9+0xe0],ymm23
- vmovdqu32 YMMWORD PTR [r9+0x100],ymm24
- vmovdqu32 YMMWORD PTR [r9+0x120],ymm25
- vmovdqu32 YMMWORD PTR [r9+0x140],ymm26
- vmovdqu32 YMMWORD PTR [r9+0x160],ymm27
- vmovdqu32 YMMWORD PTR [r9+0x180],ymm28
- vmovdqu32 YMMWORD PTR [r9+0x1a0],ymm29
- vmovdqu32 YMMWORD PTR [r9+0x1c0],ymm30
- vmovdqu32 YMMWORD PTR [r9+0x1e0],ymm31
- vmovdqa ymm0,YMMWORD PTR [rsp+0x20]
- vmovdqa ymm1,YMMWORD PTR [rsp+0x60]
- vmovdqa YMMWORD PTR [rsp],ymm0
- vmovdqa YMMWORD PTR [rsp+0x40],ymm1
- add r9,0x200
- sub r10,0x8
+ vzeroupper
+ mov rsp, rbp
+ pop rbp
+ ret
2:
- test r10,0x4
- je 2f
- vbroadcasti32x4 zmm0,XMMWORD PTR [rdi]
- vbroadcasti32x4 zmm1,XMMWORD PTR [rdi+0x10]
- vbroadcasti32x4 zmm2,XMMWORD PTR [BLAKE3_IV+rip]
- vmovdqa xmm12,XMMWORD PTR [rsp]
- vmovdqa xmm13,XMMWORD PTR [rsp+0x40]
- vpunpckldq xmm14,xmm12,xmm13
- vpunpckhdq xmm15,xmm12,xmm13
- vpermq ymm14,ymm14,0xdc
- vpermq ymm15,ymm15,0xdc
- vpbroadcastd zmm12,edx
- vinserti64x4 zmm13,zmm14,ymm15,0x1
- mov eax,0x4444
- kmovw k2,eax
- vpblendmd zmm13{k2},zmm13,zmm12
- vpbroadcastd zmm15,r8d
- mov eax,0x8888
- kmovw k4,eax
- vpblendmd zmm3{k4},zmm13,zmm15
- mov eax,0xaaaa
- kmovw k3,eax
- vbroadcasti32x4 zmm8,XMMWORD PTR [rsi]
- vbroadcasti32x4 zmm9,XMMWORD PTR [rsi+0x10]
- vshufps zmm4,zmm8,zmm9,0x88
- vshufps zmm5,zmm8,zmm9,0xdd
- vbroadcasti32x4 zmm8,XMMWORD PTR [rsi+0x20]
- vbroadcasti32x4 zmm9,XMMWORD PTR [rsi+0x30]
- vshufps zmm6,zmm8,zmm9,0x88
- vshufps zmm7,zmm8,zmm9,0xdd
- vpshufd zmm6,zmm6,0x93
- vpshufd zmm7,zmm7,0x93
- mov al,0x7
+ cmp al, 0x04
+ jbe 2f
+ vpbroadcastd ymm16, dword ptr [rsi]
+ vpbroadcastd ymm17, dword ptr [rsi+0x04]
+ vpbroadcastd ymm18, dword ptr [rsi+0x08]
+ vpbroadcastd ymm19, dword ptr [rsi+0x0C]
+ vpbroadcastd ymm20, dword ptr [rsi+0x10]
+ vpbroadcastd ymm21, dword ptr [rsi+0x14]
+ vpbroadcastd ymm22, dword ptr [rsi+0x18]
+ vpbroadcastd ymm23, dword ptr [rsi+0x1C]
+ vpbroadcastd ymm24, dword ptr [rsi+0x20]
+ vpbroadcastd ymm25, dword ptr [rsi+0x24]
+ vpbroadcastd ymm26, dword ptr [rsi+0x28]
+ vpbroadcastd ymm27, dword ptr [rsi+0x2C]
+ vpbroadcastd ymm28, dword ptr [rsi+0x30]
+ vpbroadcastd ymm29, dword ptr [rsi+0x34]
+ vpbroadcastd ymm30, dword ptr [rsi+0x38]
+ vpbroadcastd ymm31, dword ptr [rsi+0x3C]
+ vpbroadcastd ymm0, dword ptr [rdi]
+ vpbroadcastd ymm1, dword ptr [rdi+0x04]
+ vpbroadcastd ymm2, dword ptr [rdi+0x08]
+ vpbroadcastd ymm3, dword ptr [rdi+0x0C]
+ vpbroadcastd ymm4, dword ptr [rdi+0x10]
+ vpbroadcastd ymm5, dword ptr [rdi+0x14]
+ vpbroadcastd ymm6, dword ptr [rdi+0x18]
+ vpbroadcastd ymm7, dword ptr [rdi+0x1C]
+ vpbroadcastd ymm8, dword ptr [rip+BLAKE3_IV_0]
+ vpbroadcastd ymm9, dword ptr [rip+BLAKE3_IV_1]
+ vpbroadcastd ymm10, dword ptr [rip+BLAKE3_IV_2]
+ vpbroadcastd ymm11, dword ptr [rip+BLAKE3_IV_3]
+ vmovdqa ymm12, ymmword ptr [rsp]
+ vmovdqa ymm13, ymmword ptr [rsp+0x40]
+ vpbroadcastd ymm14, edx
+ vpbroadcastd ymm15, r8d
+ mov cl, 0x07
3:
- vpaddd zmm0,zmm0,zmm4
- vpaddd zmm0,zmm0,zmm1
- vpxord zmm3,zmm3,zmm0
- vprord zmm3,zmm3,0x10
- vpaddd zmm2,zmm2,zmm3
- vpxord zmm1,zmm1,zmm2
- vprord zmm1,zmm1,0xc
- vpaddd zmm0,zmm0,zmm5
- vpaddd zmm0,zmm0,zmm1
- vpxord zmm3,zmm3,zmm0
- vprord zmm3,zmm3,0x8
- vpaddd zmm2,zmm2,zmm3
- vpxord zmm1,zmm1,zmm2
- vprord zmm1,zmm1,0x7
- vpshufd zmm0,zmm0,0x93
- vpshufd zmm3,zmm3,0x4e
- vpshufd zmm2,zmm2,0x39
- vpaddd zmm0,zmm0,zmm6
- vpaddd zmm0,zmm0,zmm1
- vpxord zmm3,zmm3,zmm0
- vprord zmm3,zmm3,0x10
- vpaddd zmm2,zmm2,zmm3
- vpxord zmm1,zmm1,zmm2
- vprord zmm1,zmm1,0xc
- vpaddd zmm0,zmm0,zmm7
- vpaddd zmm0,zmm0,zmm1
- vpxord zmm3,zmm3,zmm0
- vprord zmm3,zmm3,0x8
- vpaddd zmm2,zmm2,zmm3
- vpxord zmm1,zmm1,zmm2
- vprord zmm1,zmm1,0x7
- vpshufd zmm0,zmm0,0x39
- vpshufd zmm3,zmm3,0x4e
- vpshufd zmm2,zmm2,0x93
- dec al
- je 3f
- vshufps zmm8,zmm4,zmm5,0xd6
- vpshufd zmm9,zmm4,0xf
- vpshufd zmm4,zmm8,0x39
- vshufps zmm8,zmm6,zmm7,0xfa
- vpblendmd zmm9{k3},zmm9,zmm8
- vpunpcklqdq zmm8,zmm7,zmm5
- vpblendmd zmm8{k4},zmm8,zmm6
- vpshufd zmm8,zmm8,0x78
- vpunpckhdq zmm5,zmm5,zmm7
- vpunpckldq zmm6,zmm6,zmm5
- vpshufd zmm7,zmm6,0x1e
- vmovdqa32 zmm5,zmm9
- vmovdqa32 zmm6,zmm8
- jmp 3b
+ vpaddd ymm0, ymm0, ymm16
+ vpaddd ymm1, ymm1, ymm18
+ vpaddd ymm2, ymm2, ymm20
+ vpaddd ymm3, ymm3, ymm22
+ vmovdqa32 ymmword ptr [rsp+0x80], ymm16
+ vmovdqa32 ymmword ptr [rsp+0xC0], ymm22
+ vpaddd ymm0, ymm0, ymm4
+ vpaddd ymm1, ymm1, ymm5
+ vpaddd ymm2, ymm2, ymm6
+ vpaddd ymm3, ymm3, ymm7
+ vpxord ymm12, ymm12, ymm0
+ vmovdqa32 ymm16, ymm18
+ vpxord ymm13, ymm13, ymm1
+ vpxord ymm14, ymm14, ymm2
+ vpxord ymm15, ymm15, ymm3
+ vprord ymm12, ymm12, 0x10
+ vprord ymm13, ymm13, 0x10
+ vprord ymm14, ymm14, 0x10
+ vprord ymm15, ymm15, 0x10
+ vpaddd ymm8, ymm8, ymm12
+ vmovdqa32 ymm22, ymm20
+ vpaddd ymm9, ymm9, ymm13
+ vpaddd ymm10, ymm10, ymm14
+ vpaddd ymm11, ymm11, ymm15
+ vpxord ymm4, ymm4, ymm8
+ vpxord ymm5, ymm5, ymm9
+ vpxord ymm6, ymm6, ymm10
+ vpxord ymm7, ymm7, ymm11
+ vprord ymm4, ymm4, 0x0C
+ vprord ymm5, ymm5, 0x0C
+ vprord ymm6, ymm6, 0x0C
+ vprord ymm7, ymm7, 0x0C
+ vpaddd ymm0, ymm0, ymm17
+ vpaddd ymm1, ymm1, ymm19
+ vpaddd ymm2, ymm2, ymm21
+ vpaddd ymm3, ymm3, ymm23
+ vpaddd ymm0, ymm0, ymm4
+ vmovdqa32 ymm18, ymm19
+ vpaddd ymm1, ymm1, ymm5
+ vpaddd ymm2, ymm2, ymm6
+ vpaddd ymm3, ymm3, ymm7
+ vpxord ymm12, ymm12, ymm0
+ vpxord ymm13, ymm13, ymm1
+ vpxord ymm14, ymm14, ymm2
+ vpxord ymm15, ymm15, ymm3
+ vprord ymm12, ymm12, 0x08
+ vmovdqa32 ymm20, ymm23
+ vprord ymm13, ymm13, 0x08
+ vprord ymm14, ymm14, 0x08
+ vprord ymm15, ymm15, 0x08
+ vpaddd ymm8, ymm8, ymm12
+ vpaddd ymm9, ymm9, ymm13
+ vpaddd ymm10, ymm10, ymm14
+ vpaddd ymm11, ymm11, ymm15
+ vpxord ymm4, ymm4, ymm8
+ vmovdqa32 ymm19, ymm26
+ vpxord ymm5, ymm5, ymm9
+ vpxord ymm6, ymm6, ymm10
+ vpxord ymm7, ymm7, ymm11
+ vprord ymm4, ymm4, 0x07
+ vprord ymm5, ymm5, 0x07
+ vprord ymm6, ymm6, 0x07
+ vprord ymm7, ymm7, 0x07
+ vpaddd ymm0, ymm0, ymm24
+ vmovdqa32 ymm23, ymm29
+ vpaddd ymm1, ymm1, ymm26
+ vpaddd ymm2, ymm2, ymm28
+ vpaddd ymm3, ymm3, ymm30
+ vpaddd ymm0, ymm0, ymm5
+ vpaddd ymm1, ymm1, ymm6
+ vpaddd ymm2, ymm2, ymm7
+ vpaddd ymm3, ymm3, ymm4
+ vpxord ymm15, ymm15, ymm0
+ vmovdqa32 ymm26, ymm28
+ vpxord ymm12, ymm12, ymm1
+ vpxord ymm13, ymm13, ymm2
+ vpxord ymm14, ymm14, ymm3
+ vprord ymm15, ymm15, 0x10
+ vprord ymm12, ymm12, 0x10
+ vprord ymm13, ymm13, 0x10
+ vprord ymm14, ymm14, 0x10
+ vpaddd ymm10, ymm10, ymm15
+ vmovdqa32 ymm28, ymm25
+ vpaddd ymm11, ymm11, ymm12
+ vpaddd ymm8, ymm8, ymm13
+ vpaddd ymm9, ymm9, ymm14
+ vpxord ymm5, ymm5, ymm10
+ vpxord ymm6, ymm6, ymm11
+ vpxord ymm7, ymm7, ymm8
+ vpxord ymm4, ymm4, ymm9
+ vprord ymm5, ymm5, 0x0C
+ vprord ymm6, ymm6, 0x0C
+ vprord ymm7, ymm7, 0x0C
+ vprord ymm4, ymm4, 0x0C
+ vpaddd ymm0, ymm0, ymm25
+ vpaddd ymm1, ymm1, ymm27
+ vpaddd ymm2, ymm2, ymm29
+ vmovdqa32 ymm29, ymm30
+ vpaddd ymm3, ymm3, ymm31
+ vpaddd ymm0, ymm0, ymm5
+ vpaddd ymm1, ymm1, ymm6
+ vpaddd ymm2, ymm2, ymm7
+ vmovdqa32 ymm25, ymm27
+ vpaddd ymm3, ymm3, ymm4
+ vpxord ymm15, ymm15, ymm0
+ vpxord ymm12, ymm12, ymm1
+ vmovdqa32 ymm30, ymm31
+ vpxord ymm13, ymm13, ymm2
+ vpxord ymm14, ymm14, ymm3
+ vprord ymm15, ymm15, 0x08
+ vmovdqa32 ymm27, ymm21
+ vprord ymm12, ymm12, 0x08
+ vprord ymm13, ymm13, 0x08
+ vprord ymm14, ymm14, 0x08
+ vmovdqa32 ymm31, ymm24
+ vpaddd ymm10, ymm10, ymm15
+ vpaddd ymm11, ymm11, ymm12
+ vpaddd ymm8, ymm8, ymm13
+ vpaddd ymm9, ymm9, ymm14
+ vmovdqa32 ymm24, ymm17
+ vpxord ymm5, ymm5, ymm10
+ vpxord ymm6, ymm6, ymm11
+ vpxord ymm7, ymm7, ymm8
+ vpxord ymm4, ymm4, ymm9
+ vmovdqa32 ymm21, ymmword ptr [rsp+0x80]
+ vprord ymm5, ymm5, 0x07
+ vprord ymm6, ymm6, 0x07
+ vprord ymm7, ymm7, 0x07
+ vprord ymm4, ymm4, 0x07
+ vmovdqa32 ymm17, ymmword ptr [rsp+0xC0]
+ dec cl
+ jnz 3b
+ vpxord ymm0, ymm0, ymm8
+ vpxord ymm8, ymm8, dword ptr [rdi] {1to8}
+ vpxord ymm1, ymm1, ymm9
+ vpxord ymm9, ymm9, dword ptr [rdi+0x04] {1to8}
+ vpxord ymm2, ymm2, ymm10
+ vpxord ymm10, ymm10, dword ptr [rdi+0x08] {1to8}
+ vpxord ymm3, ymm3, ymm11
+ vpxord ymm11, ymm11, dword ptr [rdi+0x0C] {1to8}
+ vpxord ymm4, ymm4, ymm12
+ vpxord ymm12, ymm12, dword ptr [rdi+0x10] {1to8}
+ vpxord ymm5, ymm5, ymm13
+ vpxord ymm13, ymm13, dword ptr [rdi+0x14] {1to8}
+ vpxord ymm6, ymm6, ymm14
+ vpxord ymm14, ymm14, dword ptr [rdi+0x18] {1to8}
+ vpxord ymm7, ymm7, ymm15
+ vpxord ymm15, ymm15, dword ptr [rdi+0x1C] {1to8}
+ vpunpckldq ymm16, ymm0, ymm1
+ vpunpckhdq ymm17, ymm0, ymm1
+ vpunpckldq ymm18, ymm2, ymm3
+ vpunpckhdq ymm19, ymm2, ymm3
+ vpunpckldq ymm20, ymm4, ymm5
+ vpunpckhdq ymm21, ymm4, ymm5
+ vpunpckldq ymm22, ymm6, ymm7
+ vpunpckhdq ymm23, ymm6, ymm7
+ vpunpckldq ymm24, ymm8, ymm9
+ vpunpckhdq ymm25, ymm8, ymm9
+ vpunpckldq ymm26, ymm10, ymm11
+ vpunpckhdq ymm27, ymm10, ymm11
+ vpunpckldq ymm28, ymm12, ymm13
+ vpunpckhdq ymm29, ymm12, ymm13
+ vpunpckldq ymm30, ymm14, ymm15
+ vpunpckhdq ymm31, ymm14, ymm15
+ vpunpcklqdq ymm0, ymm16, ymm18
+ vpunpckhqdq ymm1, ymm16, ymm18
+ vpunpcklqdq ymm2, ymm17, ymm19
+ vpunpckhqdq ymm3, ymm17, ymm19
+ vpunpcklqdq ymm4, ymm20, ymm22
+ vpunpckhqdq ymm5, ymm20, ymm22
+ vpunpcklqdq ymm6, ymm21, ymm23
+ vpunpckhqdq ymm7, ymm21, ymm23
+ vpunpcklqdq ymm8, ymm24, ymm26
+ vpunpckhqdq ymm9, ymm24, ymm26
+ vpunpcklqdq ymm10, ymm25, ymm27
+ vpunpckhqdq ymm11, ymm25, ymm27
+ vpunpcklqdq ymm12, ymm28, ymm30
+ vpunpckhqdq ymm13, ymm28, ymm30
+ vpunpcklqdq ymm14, ymm29, ymm31
+ vpunpckhqdq ymm15, ymm29, ymm31
+ vshufi32x4 ymm16, ymm0, ymm4, 0x00
+ vshufi32x4 ymm17, ymm8, ymm12, 0x00
+ vshufi32x4 ymm18, ymm1, ymm5, 0x00
+ vshufi32x4 ymm19, ymm9, ymm13, 0x00
+ vshufi32x4 ymm20, ymm2, ymm6, 0x00
+ vshufi32x4 ymm21, ymm10, ymm14, 0x00
+ vshufi32x4 ymm22, ymm3, ymm7, 0x00
+ vshufi32x4 ymm23, ymm11, ymm15, 0x00
+ vshufi32x4 ymm24, ymm0, ymm4, 0x03
+ vshufi32x4 ymm25, ymm8, ymm12, 0x03
+ vshufi32x4 ymm26, ymm1, ymm5, 0x03
+ vshufi32x4 ymm27, ymm9, ymm13, 0x03
+ vshufi32x4 ymm28, ymm2, ymm6, 0x03
+ vshufi32x4 ymm29, ymm10, ymm14, 0x03
+ vshufi32x4 ymm30, ymm3, ymm7, 0x03
+ vshufi32x4 ymm31, ymm11, ymm15, 0x03
+ vmovdqu32 ymmword ptr [r9], ymm16
+ vmovdqu32 ymmword ptr [r9+0x20], ymm17
+ vmovdqu32 ymmword ptr [r9+0x40], ymm18
+ vmovdqu32 ymmword ptr [r9+0x60], ymm19
+ vmovdqu32 ymmword ptr [r9+0x80], ymm20
+ vmovdqu32 ymmword ptr [r9+0xA0], ymm21
+ vmovdqu32 ymmword ptr [r9+0xC0], ymm22
+ vmovdqu32 ymmword ptr [r9+0xE0], ymm23
+ vmovdqu32 ymmword ptr [r9+0x100], ymm24
+ vmovdqu32 ymmword ptr [r9+0x120], ymm25
+ cmp al, 0x06
+ jb 3f
+ vmovdqu32 ymmword ptr [r9+0x140], ymm26
+ vmovdqu32 ymmword ptr [r9+0x160], ymm27
+ cmp al, 0x07
+ jb 3f
+ vmovdqu32 ymmword ptr [r9+0x180], ymm28
+ vmovdqu32 ymmword ptr [r9+0x1A0], ymm29
+ cmp al, 0x08
+ jb 3f
+ vmovdqu32 ymmword ptr [r9+0x1C0], ymm30
+ vmovdqu32 ymmword ptr [r9+0x1E0], ymm31
3:
- vpxord zmm0,zmm0,zmm2
- vpxord zmm1,zmm1,zmm3
- vbroadcasti32x4 zmm8,XMMWORD PTR [rdi]
- vbroadcasti32x4 zmm9,XMMWORD PTR [rdi+0x10]
- vpxord zmm2,zmm2,zmm8
- vpxord zmm3,zmm3,zmm9
- vmovdqu XMMWORD PTR [r9],xmm0
- vmovdqu XMMWORD PTR [r9+0x10],xmm1
- vmovdqu XMMWORD PTR [r9+0x20],xmm2
- vmovdqu XMMWORD PTR [r9+0x30],xmm3
- vextracti128 XMMWORD PTR [r9+0x40],ymm0,0x1
- vextracti128 XMMWORD PTR [r9+0x50],ymm1,0x1
- vextracti128 XMMWORD PTR [r9+0x60],ymm2,0x1
- vextracti128 XMMWORD PTR [r9+0x70],ymm3,0x1
- vextracti32x4 XMMWORD PTR [r9+0x80],zmm0,0x2
- vextracti32x4 XMMWORD PTR [r9+0x90],zmm1,0x2
- vextracti32x4 XMMWORD PTR [r9+0xa0],zmm2,0x2
- vextracti32x4 XMMWORD PTR [r9+0xb0],zmm3,0x2
- vextracti32x4 XMMWORD PTR [r9+0xc0],zmm0,0x3
- vextracti32x4 XMMWORD PTR [r9+0xd0],zmm1,0x3
- vextracti32x4 XMMWORD PTR [r9+0xe0],zmm2,0x3
- vextracti32x4 XMMWORD PTR [r9+0xf0],zmm3,0x3
- vmovdqa xmm0,XMMWORD PTR [rsp+0x10]
- vmovdqa xmm1,XMMWORD PTR [rsp+0x50]
- vmovdqa XMMWORD PTR [rsp],xmm0
- vmovdqa XMMWORD PTR [rsp+0x40],xmm1
- add r9,0x100
- sub r10,0x4
+ jmp 9b
2:
- test r10,0x2
- je 2f
- vbroadcasti128 ymm0,XMMWORD PTR [rdi]
- vbroadcasti128 ymm1,XMMWORD PTR [rdi+0x10]
- vmovd xmm13,DWORD PTR [rsp]
- vpinsrd xmm13,xmm13,DWORD PTR [rsp+0x40],0x1
- vpinsrd xmm13,xmm13,edx,0x2
- vmovd xmm14,DWORD PTR [rsp+0x4]
- vpinsrd xmm14,xmm14,DWORD PTR [rsp+0x44],0x1
- vpinsrd xmm14,xmm14,edx,0x2
- vinserti128 ymm13,ymm13,xmm14,0x1
- vbroadcasti128 ymm2,XMMWORD PTR [BLAKE3_IV+rip]
- vpbroadcastd ymm8,r8d
- vpblendd ymm3,ymm13,ymm8,0x88
- vbroadcasti128 ymm8,XMMWORD PTR [rsi]
- vbroadcasti128 ymm9,XMMWORD PTR [rsi+0x10]
- vshufps ymm4,ymm8,ymm9,0x88
- vshufps ymm5,ymm8,ymm9,0xdd
- vbroadcasti128 ymm8,XMMWORD PTR [rsi+0x20]
- vbroadcasti128 ymm9,XMMWORD PTR [rsi+0x30]
- vshufps ymm6,ymm8,ymm9,0x88
- vshufps ymm7,ymm8,ymm9,0xdd
- vpshufd ymm6,ymm6,0x93
- vpshufd ymm7,ymm7,0x93
- mov al,0x7
+ mov ecx, 0xAAAA
+ kmovw k1, ecx
+ mov ecx, 0x8888
+ kmovw k2, ecx
+ mov ecx, 0x55
+ kmovw k3, ecx
+ mov ecx, r8d
+ shl rcx, 0x20
+ or rcx, rdx
+ cmp al, 0x02
+ jbe 2f
+ vbroadcasti32x4 zmm0, xmmword ptr [rdi]
+ vbroadcasti32x4 zmm1, xmmword ptr [rdi+0x10]
+ vbroadcasti32x4 zmm2, xmmword ptr [rip+BLAKE3_IV]
+ vmovdqa32 xmm4, xmmword ptr [rsp]
+ vmovdqa32 xmm5, xmmword ptr [rsp+0x40]
+ vpbroadcastq zmm3, rcx
+ vpunpckldq xmm6, xmm4, xmm5
+ vpunpckhdq xmm5, xmm4, xmm5
+ vinserti64x4 zmm6, zmm6, ymm5, 0x01
+ vpermq zmm3 {k3}, zmm6, 0xDC
+ vbroadcasti32x4 zmm8, xmmword ptr [rsi]
+ vbroadcasti32x4 zmm9, xmmword ptr [rsi+0x10]
+ vshufps zmm4, zmm8, zmm9, 0x88
+ vshufps zmm5, zmm8, zmm9, 0xDD
+ vbroadcasti32x4 zmm8, xmmword ptr [rsi+0x20]
+ vbroadcasti32x4 zmm9, xmmword ptr [rsi+0x30]
+ vshufps zmm6, zmm8, zmm9, 0x88
+ vshufps zmm7, zmm8, zmm9, 0xDD
+ vpshufd zmm6, zmm6, 0x93
+ vpshufd zmm7, zmm7, 0x93
+ mov dl, 0x07
+3:
+ vpaddd zmm0, zmm0, zmm4
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x10
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x0C
+ vpaddd zmm0, zmm0, zmm5
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x08
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x07
+ vpshufd zmm0, zmm0, 0x93
+ vpshufd zmm3, zmm3, 0x4E
+ vpshufd zmm2, zmm2, 0x39
+ vpaddd zmm0, zmm0, zmm6
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x10
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x0C
+ vpaddd zmm0, zmm0, zmm7
+ vpaddd zmm0, zmm0, zmm1
+ vpxord zmm3, zmm3, zmm0
+ vprord zmm3, zmm3, 0x08
+ vpaddd zmm2, zmm2, zmm3
+ vpxord zmm1, zmm1, zmm2
+ vprord zmm1, zmm1, 0x07
+ vpshufd zmm0, zmm0, 0x39
+ vpshufd zmm3, zmm3, 0x4E
+ vpshufd zmm2, zmm2, 0x93
+ dec dl
+ jz 3f
+ vshufps zmm8, zmm4, zmm5, 0xD6
+ vpshufd zmm9, zmm4, 0x0F
+ vpshufd zmm4, zmm8, 0x39
+ vshufps zmm8, zmm6, zmm7, 0xFA
+ vpblendmd zmm9 {k1}, zmm9, zmm8
+ vpunpcklqdq zmm8, zmm7, zmm5
+ vpblendmd zmm8 {k2}, zmm8, zmm6
+ vpshufd zmm8, zmm8, 0x78
+ vpunpckhdq zmm5, zmm5, zmm7
+ vpunpckldq zmm6, zmm6, zmm5
+ vpshufd zmm7, zmm6, 0x1E
+ vmovdqa32 zmm5, zmm9
+ vmovdqa32 zmm6, zmm8
+ jmp 3b
3:
- vpaddd ymm0,ymm0,ymm4
- vpaddd ymm0,ymm0,ymm1
- vpxord ymm3,ymm3,ymm0
- vprord ymm3,ymm3,0x10
- vpaddd ymm2,ymm2,ymm3
- vpxord ymm1,ymm1,ymm2
- vprord ymm1,ymm1,0xc
- vpaddd ymm0,ymm0,ymm5
- vpaddd ymm0,ymm0,ymm1
- vpxord ymm3,ymm3,ymm0
- vprord ymm3,ymm3,0x8
- vpaddd ymm2,ymm2,ymm3
- vpxord ymm1,ymm1,ymm2
- vprord ymm1,ymm1,0x7
- vpshufd ymm0,ymm0,0x93
- vpshufd ymm3,ymm3,0x4e
- vpshufd ymm2,ymm2,0x39
- vpaddd ymm0,ymm0,ymm6
- vpaddd ymm0,ymm0,ymm1
- vpxord ymm3,ymm3,ymm0
- vprord ymm3,ymm3,0x10
- vpaddd ymm2,ymm2,ymm3
- vpxord ymm1,ymm1,ymm2
- vprord ymm1,ymm1,0xc
- vpaddd ymm0,ymm0,ymm7
- vpaddd ymm0,ymm0,ymm1
- vpxord ymm3,ymm3,ymm0
- vprord ymm3,ymm3,0x8
- vpaddd ymm2,ymm2,ymm3
- vpxord ymm1,ymm1,ymm2
- vprord ymm1,ymm1,0x7
- vpshufd ymm0,ymm0,0x39
- vpshufd ymm3,ymm3,0x4e
- vpshufd ymm2,ymm2,0x93
- dec al
- je 3f
- vshufps ymm8,ymm4,ymm5,0xd6
- vpshufd ymm9,ymm4,0xf
- vpshufd ymm4,ymm8,0x39
- vshufps ymm8,ymm6,ymm7,0xfa
- vpblendd ymm9,ymm9,ymm8,0xaa
- vpunpcklqdq ymm8,ymm7,ymm5
- vpblendd ymm8,ymm8,ymm6,0x88
- vpshufd ymm8,ymm8,0x78
- vpunpckhdq ymm5,ymm5,ymm7
- vpunpckldq ymm6,ymm6,ymm5
- vpshufd ymm7,ymm6,0x1e
- vmovdqa ymm5,ymm9
- vmovdqa ymm6,ymm8
- jmp 3b
+ vpxord zmm0, zmm0, zmm2
+ vpxord zmm1, zmm1, zmm3
+ vbroadcasti32x4 zmm4, xmmword ptr [rdi]
+ vbroadcasti32x4 zmm5, xmmword ptr [rdi+0x10]
+ vpxord zmm2, zmm2, zmm4
+ vpxord zmm3, zmm3, zmm5
+ vmovdqu xmmword ptr [r9], xmm0
+ vmovdqu xmmword ptr [r9+0x10], xmm1
+ vmovdqu xmmword ptr [r9+0x20], xmm2
+ vmovdqu xmmword ptr [r9+0x30], xmm3
+ vextracti128 xmmword ptr [r9+0x40], ymm0, 0x01
+ vextracti128 xmmword ptr [r9+0x50], ymm1, 0x01
+ vextracti128 xmmword ptr [r9+0x60], ymm2, 0x01
+ vextracti128 xmmword ptr [r9+0x70], ymm3, 0x01
+ vextracti32x4 xmmword ptr [r9+0x80], zmm0, 0x02
+ vextracti32x4 xmmword ptr [r9+0x90], zmm1, 0x02
+ vextracti32x4 xmmword ptr [r9+0xA0], zmm2, 0x02
+ vextracti32x4 xmmword ptr [r9+0xB0], zmm3, 0x02
+ cmp al, 0x04
+ jb 3f
+ vextracti32x4 xmmword ptr [r9+0xC0], zmm0, 0x03
+ vextracti32x4 xmmword ptr [r9+0xD0], zmm1, 0x03
+ vextracti32x4 xmmword ptr [r9+0xE0], zmm2, 0x03
+ vextracti32x4 xmmword ptr [r9+0xF0], zmm3, 0x03
3:
- vpxor ymm0,ymm0,ymm2
- vpxor ymm1,ymm1,ymm3
- vbroadcasti128 ymm8,XMMWORD PTR [rdi]
- vbroadcasti128 ymm9,XMMWORD PTR [rdi+0x10]
- vpxor ymm2,ymm2,ymm8
- vpxor ymm3,ymm3,ymm9
- vmovdqu XMMWORD PTR [r9],xmm0
- vmovdqu XMMWORD PTR [r9+0x10],xmm1
- vmovdqu XMMWORD PTR [r9+0x20],xmm2
- vmovdqu XMMWORD PTR [r9+0x30],xmm3
- vextracti128 XMMWORD PTR [r9+0x40],ymm0,0x1
- vextracti128 XMMWORD PTR [r9+0x50],ymm1,0x1
- vextracti128 XMMWORD PTR [r9+0x60],ymm2,0x1
- vextracti128 XMMWORD PTR [r9+0x70],ymm3,0x1
- vmovdqu xmm0,XMMWORD PTR [rsp+0x8]
- vmovdqu xmm1,XMMWORD PTR [rsp+0x48]
- vmovdqa XMMWORD PTR [rsp],xmm0
- vmovdqa XMMWORD PTR [rsp+0x40],xmm1
- add r9,0x80
- sub r10,0x2
+ jmp 9b
2:
- test r10,0x1
- je 9b
- vmovdqu xmm0,XMMWORD PTR [rdi]
- vmovdqu xmm1,XMMWORD PTR [rdi+0x10]
- vmovd xmm14,DWORD PTR [rsp]
- vpinsrd xmm14,xmm14,DWORD PTR [rsp+0x40],0x1
- vpinsrd xmm14,xmm14,edx,0x2
- vmovdqa xmm2,XMMWORD PTR [BLAKE3_IV+rip]
- vpinsrd xmm3,xmm14,r8d,0x3
- vmovups xmm8,XMMWORD PTR [rsi]
- vmovups xmm9,XMMWORD PTR [rsi+0x10]
- vshufps xmm4,xmm8,xmm9,0x88
- vshufps xmm5,xmm8,xmm9,0xdd
- vmovups xmm8,XMMWORD PTR [rsi+0x20]
- vmovups xmm9,XMMWORD PTR [rsi+0x30]
- vshufps xmm6,xmm8,xmm9,0x88
- vshufps xmm7,xmm8,xmm9,0xdd
- vpshufd xmm6,xmm6,0x93
- vpshufd xmm7,xmm7,0x93
- mov al,0x7
+ test al, al
+ jz 9b
+ vbroadcasti32x4 ymm0, xmmword ptr [rdi]
+ vbroadcasti32x4 ymm1, xmmword ptr [rdi+0x10]
+ vbroadcasti32x4 ymm2, xmmword ptr [rip+BLAKE3_IV]
+ vmovdqa xmm4, xmmword ptr [rsp]
+ vmovdqa xmm5, xmmword ptr [rsp+0x40]
+ vpbroadcastq ymm3, rcx
+ vpunpckldq xmm6, xmm4, xmm5
+ vpunpckhdq xmm5, xmm4, xmm5
+ vinserti128 ymm6, ymm6, xmm5, 0x01
+ vpermq ymm3 {k3}, ymm6, 0xDC
+ vbroadcasti32x4 ymm8, xmmword ptr [rsi]
+ vbroadcasti32x4 ymm9, xmmword ptr [rsi+0x10]
+ vshufps ymm4, ymm8, ymm9, 0x88
+ vshufps ymm5, ymm8, ymm9, 0xDD
+ vbroadcasti32x4 ymm8, xmmword ptr [rsi+0x20]
+ vbroadcasti32x4 ymm9, xmmword ptr [rsi+0x30]
+ vshufps ymm6, ymm8, ymm9, 0x88
+ vshufps ymm7, ymm8, ymm9, 0xDD
+ vpshufd ymm6, ymm6, 0x93
+ vpshufd ymm7, ymm7, 0x93
+ mov dl, 0x07
+3:
+ vpaddd ymm0, ymm0, ymm4
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x10
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x0C
+ vpaddd ymm0, ymm0, ymm5
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x08
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x07
+ vpshufd ymm0, ymm0, 0x93
+ vpshufd ymm3, ymm3, 0x4E
+ vpshufd ymm2, ymm2, 0x39
+ vpaddd ymm0, ymm0, ymm6
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x10
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x0C
+ vpaddd ymm0, ymm0, ymm7
+ vpaddd ymm0, ymm0, ymm1
+ vpxord ymm3, ymm3, ymm0
+ vprord ymm3, ymm3, 0x08
+ vpaddd ymm2, ymm2, ymm3
+ vpxord ymm1, ymm1, ymm2
+ vprord ymm1, ymm1, 0x07
+ vpshufd ymm0, ymm0, 0x39
+ vpshufd ymm3, ymm3, 0x4E
+ vpshufd ymm2, ymm2, 0x93
+ dec dl
+ jz 3f
+ vshufps ymm8, ymm4, ymm5, 0xD6
+ vpshufd ymm9, ymm4, 0x0F
+ vpshufd ymm4, ymm8, 0x39
+ vshufps ymm8, ymm6, ymm7, 0xFA
+ vpblendd ymm9, ymm9, ymm8, 0xAA
+ vpunpcklqdq ymm8, ymm7, ymm5
+ vpblendd ymm8, ymm8, ymm6, 0x88
+ vpshufd ymm8, ymm8, 0x78
+ vpunpckhdq ymm5, ymm5, ymm7
+ vpunpckldq ymm6, ymm6, ymm5
+ vpshufd ymm7, ymm6, 0x1E
+ vmovdqa ymm5, ymm9
+ vmovdqa ymm6, ymm8
+ jmp 3b
3:
- vpaddd xmm0,xmm0,xmm4
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x10
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0xc
- vpaddd xmm0,xmm0,xmm5
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x8
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0x7
- vpshufd xmm0,xmm0,0x93
- vpshufd xmm3,xmm3,0x4e
- vpshufd xmm2,xmm2,0x39
- vpaddd xmm0,xmm0,xmm6
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x10
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0xc
- vpaddd xmm0,xmm0,xmm7
- vpaddd xmm0,xmm0,xmm1
- vpxord xmm3,xmm3,xmm0
- vprord xmm3,xmm3,0x8
- vpaddd xmm2,xmm2,xmm3
- vpxord xmm1,xmm1,xmm2
- vprord xmm1,xmm1,0x7
- vpshufd xmm0,xmm0,0x39
- vpshufd xmm3,xmm3,0x4e
- vpshufd xmm2,xmm2,0x93
- dec al
- je 3f
- vshufps xmm8,xmm4,xmm5,0xd6
- vpshufd xmm9,xmm4,0xf
- vpshufd xmm4,xmm8,0x39
- vshufps xmm8,xmm6,xmm7,0xfa
- vpblendd xmm9,xmm9,xmm8,0xaa
- vpunpcklqdq xmm8,xmm7,xmm5
- vpblendd xmm8,xmm8,xmm6,0x88
- vpshufd xmm8,xmm8,0x78
- vpunpckhdq xmm5,xmm5,xmm7
- vpunpckldq xmm6,xmm6,xmm5
- vpshufd xmm7,xmm6,0x1e
- vmovdqa xmm5,xmm9
- vmovdqa xmm6,xmm8
- jmp 3b
+ vpxord ymm0, ymm0, ymm2
+ vpxord ymm1, ymm1, ymm3
+ vbroadcasti128 ymm4, xmmword ptr [rdi]
+ vbroadcasti128 ymm5, xmmword ptr [rdi+0x10]
+ vpxord ymm2, ymm2, ymm4
+ vpxord ymm3, ymm3, ymm5
+ vmovdqu xmmword ptr [r9], xmm0
+ vmovdqu xmmword ptr [r9+0x10], xmm1
+ vmovdqu xmmword ptr [r9+0x20], xmm2
+ vmovdqu xmmword ptr [r9+0x30], xmm3
+ cmp al, 0x02
+ jb 3f
+ vextracti128 xmmword ptr [r9+0x40], ymm0, 0x01
+ vextracti128 xmmword ptr [r9+0x50], ymm1, 0x01
+ vextracti128 xmmword ptr [r9+0x60], ymm2, 0x01
+ vextracti128 xmmword ptr [r9+0x70], ymm3, 0x01
3:
- vpxor xmm0,xmm0,xmm2
- vpxor xmm1,xmm1,xmm3
- vpxor xmm2,xmm2,XMMWORD PTR [rdi]
- vpxor xmm3,xmm3,XMMWORD PTR [rdi+0x10]
- vmovdqu XMMWORD PTR [r9],xmm0
- vmovdqu XMMWORD PTR [r9+0x10],xmm1
- vmovdqu XMMWORD PTR [r9+0x20],xmm2
- vmovdqu XMMWORD PTR [r9+0x30],xmm3
- jmp 9b
-
+ jmp 9b
#ifdef __APPLE__
.static_data
@@ -4798,21 +2137,15 @@ _blake3_xof_many_avx512:
.section .rodata
#endif
.p2align 6
+ADD0:
+ .long 0, 1, 2, 3, 4, 5, 6, 7
+ .long 8, 9, 10, 11, 12, 13, 14, 15
INDEX0:
.long 0, 1, 2, 3, 16, 17, 18, 19
.long 8, 9, 10, 11, 24, 25, 26, 27
INDEX1:
.long 4, 5, 6, 7, 20, 21, 22, 23
.long 12, 13, 14, 15, 28, 29, 30, 31
-ADD0:
- .long 0, 1, 2, 3, 4, 5, 6, 7
- .long 8, 9, 10, 11, 12, 13, 14, 15
-ADD1: .long 1
-
-ADD16: .long 16
-BLAKE3_BLOCK_LEN:
- .long 64
-.p2align 6
BLAKE3_IV:
BLAKE3_IV_0:
.long 0x6A09E667
@@ -4822,3 +2155,8 @@ BLAKE3_IV_2:
.long 0x3C6EF372
BLAKE3_IV_3:
.long 0xA54FF53A
+ADD1: .long 1
+ADD16: .long 16
+BLAKE3_BLOCK_LEN:
+ .long 64
+