summaryrefslogtreecommitdiffstats
path: root/secure/lib/libcrypto/amd64/sha256-mb-x86_64.S
diff options
context:
space:
mode:
Diffstat (limited to 'secure/lib/libcrypto/amd64/sha256-mb-x86_64.S')
-rw-r--r--secure/lib/libcrypto/amd64/sha256-mb-x86_64.S4647
1 files changed, 4646 insertions, 1 deletions
diff --git a/secure/lib/libcrypto/amd64/sha256-mb-x86_64.S b/secure/lib/libcrypto/amd64/sha256-mb-x86_64.S
index b9cdd9e..456bbc1 100644
--- a/secure/lib/libcrypto/amd64/sha256-mb-x86_64.S
+++ b/secure/lib/libcrypto/amd64/sha256-mb-x86_64.S
@@ -1,4 +1,5 @@
- # $FreeBSD$
+# $FreeBSD$
+# Do not modify. This file is auto-generated from sha256-mb-x86_64.pl.
.text
@@ -10,6 +11,8 @@ sha256_multi_block:
movq OPENSSL_ia32cap_P+4(%rip),%rcx
btq $61,%rcx
jc _shaext_shortcut
+ testl $268435456,%ecx
+ jnz _avx_shortcut
movq %rsp,%rax
pushq %rbx
pushq %rbp
@@ -3106,6 +3109,4648 @@ _shaext_shortcut:
.Lepilogue_shaext:
.byte 0xf3,0xc3
.size sha256_multi_block_shaext,.-sha256_multi_block_shaext
+.type sha256_multi_block_avx,@function
+.align 32
+sha256_multi_block_avx:
+_avx_shortcut:
+ shrq $32,%rcx
+ cmpl $2,%edx
+ jb .Lavx
+ testl $32,%ecx
+ jnz _avx2_shortcut
+ jmp .Lavx
+.align 32
+.Lavx:
+ movq %rsp,%rax
+ pushq %rbx
+ pushq %rbp
+ subq $288,%rsp
+ andq $-256,%rsp
+ movq %rax,272(%rsp)
+.Lbody_avx:
+ leaq K256+128(%rip),%rbp
+ leaq 256(%rsp),%rbx
+ leaq 128(%rdi),%rdi
+
+.Loop_grande_avx:
+ movl %edx,280(%rsp)
+ xorl %edx,%edx
+ movq 0(%rsi),%r8
+ movl 8(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,0(%rbx)
+ cmovleq %rbp,%r8
+ movq 16(%rsi),%r9
+ movl 24(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,4(%rbx)
+ cmovleq %rbp,%r9
+ movq 32(%rsi),%r10
+ movl 40(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,8(%rbx)
+ cmovleq %rbp,%r10
+ movq 48(%rsi),%r11
+ movl 56(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,12(%rbx)
+ cmovleq %rbp,%r11
+ testl %edx,%edx
+ jz .Ldone_avx
+
+ vmovdqu 0-128(%rdi),%xmm8
+ leaq 128(%rsp),%rax
+ vmovdqu 32-128(%rdi),%xmm9
+ vmovdqu 64-128(%rdi),%xmm10
+ vmovdqu 96-128(%rdi),%xmm11
+ vmovdqu 128-128(%rdi),%xmm12
+ vmovdqu 160-128(%rdi),%xmm13
+ vmovdqu 192-128(%rdi),%xmm14
+ vmovdqu 224-128(%rdi),%xmm15
+ vmovdqu .Lpbswap(%rip),%xmm6
+ jmp .Loop_avx
+
+.align 32
+.Loop_avx:
+ vpxor %xmm9,%xmm10,%xmm4
+ vmovd 0(%r8),%xmm5
+ vmovd 0(%r9),%xmm0
+ vpinsrd $1,0(%r10),%xmm5,%xmm5
+ vpinsrd $1,0(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm12,%xmm7
+ vpslld $26,%xmm12,%xmm2
+ vmovdqu %xmm5,0-128(%rax)
+ vpaddd %xmm15,%xmm5,%xmm5
+
+ vpsrld $11,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm12,%xmm2
+ vpaddd -128(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm12,%xmm2
+ vpandn %xmm14,%xmm12,%xmm0
+ vpand %xmm13,%xmm12,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm8,%xmm15
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm8,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm8,%xmm9,%xmm3
+
+ vpxor %xmm1,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm8,%xmm1
+
+ vpslld $19,%xmm8,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm15,%xmm7
+
+ vpsrld $22,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm8,%xmm2
+ vpxor %xmm4,%xmm9,%xmm15
+ vpaddd %xmm5,%xmm11,%xmm11
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm15,%xmm15
+ vmovd 4(%r8),%xmm5
+ vmovd 4(%r9),%xmm0
+ vpinsrd $1,4(%r10),%xmm5,%xmm5
+ vpinsrd $1,4(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm11,%xmm7
+ vpslld $26,%xmm11,%xmm2
+ vmovdqu %xmm5,16-128(%rax)
+ vpaddd %xmm14,%xmm5,%xmm5
+
+ vpsrld $11,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm11,%xmm2
+ vpaddd -96(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm11,%xmm2
+ vpandn %xmm13,%xmm11,%xmm0
+ vpand %xmm12,%xmm11,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm15,%xmm14
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm15,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm15,%xmm8,%xmm4
+
+ vpxor %xmm1,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm15,%xmm1
+
+ vpslld $19,%xmm15,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm14,%xmm7
+
+ vpsrld $22,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm15,%xmm2
+ vpxor %xmm3,%xmm8,%xmm14
+ vpaddd %xmm5,%xmm10,%xmm10
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm14,%xmm14
+ vmovd 8(%r8),%xmm5
+ vmovd 8(%r9),%xmm0
+ vpinsrd $1,8(%r10),%xmm5,%xmm5
+ vpinsrd $1,8(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm10,%xmm7
+ vpslld $26,%xmm10,%xmm2
+ vmovdqu %xmm5,32-128(%rax)
+ vpaddd %xmm13,%xmm5,%xmm5
+
+ vpsrld $11,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm10,%xmm2
+ vpaddd -64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm10,%xmm2
+ vpandn %xmm12,%xmm10,%xmm0
+ vpand %xmm11,%xmm10,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm14,%xmm13
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm14,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm14,%xmm15,%xmm3
+
+ vpxor %xmm1,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm14,%xmm1
+
+ vpslld $19,%xmm14,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm13,%xmm7
+
+ vpsrld $22,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm14,%xmm2
+ vpxor %xmm4,%xmm15,%xmm13
+ vpaddd %xmm5,%xmm9,%xmm9
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm13,%xmm13
+ vmovd 12(%r8),%xmm5
+ vmovd 12(%r9),%xmm0
+ vpinsrd $1,12(%r10),%xmm5,%xmm5
+ vpinsrd $1,12(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm9,%xmm7
+ vpslld $26,%xmm9,%xmm2
+ vmovdqu %xmm5,48-128(%rax)
+ vpaddd %xmm12,%xmm5,%xmm5
+
+ vpsrld $11,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm9,%xmm2
+ vpaddd -32(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm9,%xmm2
+ vpandn %xmm11,%xmm9,%xmm0
+ vpand %xmm10,%xmm9,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm13,%xmm12
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm13,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm13,%xmm14,%xmm4
+
+ vpxor %xmm1,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm13,%xmm1
+
+ vpslld $19,%xmm13,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm12,%xmm7
+
+ vpsrld $22,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm13,%xmm2
+ vpxor %xmm3,%xmm14,%xmm12
+ vpaddd %xmm5,%xmm8,%xmm8
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm12,%xmm12
+ vmovd 16(%r8),%xmm5
+ vmovd 16(%r9),%xmm0
+ vpinsrd $1,16(%r10),%xmm5,%xmm5
+ vpinsrd $1,16(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm8,%xmm7
+ vpslld $26,%xmm8,%xmm2
+ vmovdqu %xmm5,64-128(%rax)
+ vpaddd %xmm11,%xmm5,%xmm5
+
+ vpsrld $11,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm8,%xmm2
+ vpaddd 0(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm8,%xmm2
+ vpandn %xmm10,%xmm8,%xmm0
+ vpand %xmm9,%xmm8,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm12,%xmm11
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm12,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm12,%xmm13,%xmm3
+
+ vpxor %xmm1,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm12,%xmm1
+
+ vpslld $19,%xmm12,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm11,%xmm7
+
+ vpsrld $22,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm12,%xmm2
+ vpxor %xmm4,%xmm13,%xmm11
+ vpaddd %xmm5,%xmm15,%xmm15
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm11,%xmm11
+ vmovd 20(%r8),%xmm5
+ vmovd 20(%r9),%xmm0
+ vpinsrd $1,20(%r10),%xmm5,%xmm5
+ vpinsrd $1,20(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm15,%xmm7
+ vpslld $26,%xmm15,%xmm2
+ vmovdqu %xmm5,80-128(%rax)
+ vpaddd %xmm10,%xmm5,%xmm5
+
+ vpsrld $11,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm15,%xmm2
+ vpaddd 32(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm15,%xmm2
+ vpandn %xmm9,%xmm15,%xmm0
+ vpand %xmm8,%xmm15,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm11,%xmm10
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm11,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm11,%xmm12,%xmm4
+
+ vpxor %xmm1,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm11,%xmm1
+
+ vpslld $19,%xmm11,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm10,%xmm7
+
+ vpsrld $22,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm11,%xmm2
+ vpxor %xmm3,%xmm12,%xmm10
+ vpaddd %xmm5,%xmm14,%xmm14
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm10,%xmm10
+ vmovd 24(%r8),%xmm5
+ vmovd 24(%r9),%xmm0
+ vpinsrd $1,24(%r10),%xmm5,%xmm5
+ vpinsrd $1,24(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm14,%xmm7
+ vpslld $26,%xmm14,%xmm2
+ vmovdqu %xmm5,96-128(%rax)
+ vpaddd %xmm9,%xmm5,%xmm5
+
+ vpsrld $11,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm14,%xmm2
+ vpaddd 64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm14,%xmm2
+ vpandn %xmm8,%xmm14,%xmm0
+ vpand %xmm15,%xmm14,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm10,%xmm9
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm10,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm10,%xmm11,%xmm3
+
+ vpxor %xmm1,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm10,%xmm1
+
+ vpslld $19,%xmm10,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm9,%xmm7
+
+ vpsrld $22,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm10,%xmm2
+ vpxor %xmm4,%xmm11,%xmm9
+ vpaddd %xmm5,%xmm13,%xmm13
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm9,%xmm9
+ vmovd 28(%r8),%xmm5
+ vmovd 28(%r9),%xmm0
+ vpinsrd $1,28(%r10),%xmm5,%xmm5
+ vpinsrd $1,28(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm13,%xmm7
+ vpslld $26,%xmm13,%xmm2
+ vmovdqu %xmm5,112-128(%rax)
+ vpaddd %xmm8,%xmm5,%xmm5
+
+ vpsrld $11,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm13,%xmm2
+ vpaddd 96(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm13,%xmm2
+ vpandn %xmm15,%xmm13,%xmm0
+ vpand %xmm14,%xmm13,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm9,%xmm8
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm9,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm9,%xmm10,%xmm4
+
+ vpxor %xmm1,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm9,%xmm1
+
+ vpslld $19,%xmm9,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm8,%xmm7
+
+ vpsrld $22,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm9,%xmm2
+ vpxor %xmm3,%xmm10,%xmm8
+ vpaddd %xmm5,%xmm12,%xmm12
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm8,%xmm8
+ addq $256,%rbp
+ vmovd 32(%r8),%xmm5
+ vmovd 32(%r9),%xmm0
+ vpinsrd $1,32(%r10),%xmm5,%xmm5
+ vpinsrd $1,32(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm12,%xmm7
+ vpslld $26,%xmm12,%xmm2
+ vmovdqu %xmm5,128-128(%rax)
+ vpaddd %xmm15,%xmm5,%xmm5
+
+ vpsrld $11,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm12,%xmm2
+ vpaddd -128(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm12,%xmm2
+ vpandn %xmm14,%xmm12,%xmm0
+ vpand %xmm13,%xmm12,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm8,%xmm15
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm8,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm8,%xmm9,%xmm3
+
+ vpxor %xmm1,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm8,%xmm1
+
+ vpslld $19,%xmm8,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm15,%xmm7
+
+ vpsrld $22,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm8,%xmm2
+ vpxor %xmm4,%xmm9,%xmm15
+ vpaddd %xmm5,%xmm11,%xmm11
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm15,%xmm15
+ vmovd 36(%r8),%xmm5
+ vmovd 36(%r9),%xmm0
+ vpinsrd $1,36(%r10),%xmm5,%xmm5
+ vpinsrd $1,36(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm11,%xmm7
+ vpslld $26,%xmm11,%xmm2
+ vmovdqu %xmm5,144-128(%rax)
+ vpaddd %xmm14,%xmm5,%xmm5
+
+ vpsrld $11,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm11,%xmm2
+ vpaddd -96(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm11,%xmm2
+ vpandn %xmm13,%xmm11,%xmm0
+ vpand %xmm12,%xmm11,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm15,%xmm14
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm15,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm15,%xmm8,%xmm4
+
+ vpxor %xmm1,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm15,%xmm1
+
+ vpslld $19,%xmm15,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm14,%xmm7
+
+ vpsrld $22,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm15,%xmm2
+ vpxor %xmm3,%xmm8,%xmm14
+ vpaddd %xmm5,%xmm10,%xmm10
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm14,%xmm14
+ vmovd 40(%r8),%xmm5
+ vmovd 40(%r9),%xmm0
+ vpinsrd $1,40(%r10),%xmm5,%xmm5
+ vpinsrd $1,40(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm10,%xmm7
+ vpslld $26,%xmm10,%xmm2
+ vmovdqu %xmm5,160-128(%rax)
+ vpaddd %xmm13,%xmm5,%xmm5
+
+ vpsrld $11,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm10,%xmm2
+ vpaddd -64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm10,%xmm2
+ vpandn %xmm12,%xmm10,%xmm0
+ vpand %xmm11,%xmm10,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm14,%xmm13
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm14,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm14,%xmm15,%xmm3
+
+ vpxor %xmm1,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm14,%xmm1
+
+ vpslld $19,%xmm14,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm13,%xmm7
+
+ vpsrld $22,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm14,%xmm2
+ vpxor %xmm4,%xmm15,%xmm13
+ vpaddd %xmm5,%xmm9,%xmm9
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm13,%xmm13
+ vmovd 44(%r8),%xmm5
+ vmovd 44(%r9),%xmm0
+ vpinsrd $1,44(%r10),%xmm5,%xmm5
+ vpinsrd $1,44(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm9,%xmm7
+ vpslld $26,%xmm9,%xmm2
+ vmovdqu %xmm5,176-128(%rax)
+ vpaddd %xmm12,%xmm5,%xmm5
+
+ vpsrld $11,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm9,%xmm2
+ vpaddd -32(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm9,%xmm2
+ vpandn %xmm11,%xmm9,%xmm0
+ vpand %xmm10,%xmm9,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm13,%xmm12
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm13,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm13,%xmm14,%xmm4
+
+ vpxor %xmm1,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm13,%xmm1
+
+ vpslld $19,%xmm13,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm12,%xmm7
+
+ vpsrld $22,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm13,%xmm2
+ vpxor %xmm3,%xmm14,%xmm12
+ vpaddd %xmm5,%xmm8,%xmm8
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm12,%xmm12
+ vmovd 48(%r8),%xmm5
+ vmovd 48(%r9),%xmm0
+ vpinsrd $1,48(%r10),%xmm5,%xmm5
+ vpinsrd $1,48(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm8,%xmm7
+ vpslld $26,%xmm8,%xmm2
+ vmovdqu %xmm5,192-128(%rax)
+ vpaddd %xmm11,%xmm5,%xmm5
+
+ vpsrld $11,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm8,%xmm2
+ vpaddd 0(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm8,%xmm2
+ vpandn %xmm10,%xmm8,%xmm0
+ vpand %xmm9,%xmm8,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm12,%xmm11
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm12,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm12,%xmm13,%xmm3
+
+ vpxor %xmm1,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm12,%xmm1
+
+ vpslld $19,%xmm12,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm11,%xmm7
+
+ vpsrld $22,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm12,%xmm2
+ vpxor %xmm4,%xmm13,%xmm11
+ vpaddd %xmm5,%xmm15,%xmm15
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm11,%xmm11
+ vmovd 52(%r8),%xmm5
+ vmovd 52(%r9),%xmm0
+ vpinsrd $1,52(%r10),%xmm5,%xmm5
+ vpinsrd $1,52(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm15,%xmm7
+ vpslld $26,%xmm15,%xmm2
+ vmovdqu %xmm5,208-128(%rax)
+ vpaddd %xmm10,%xmm5,%xmm5
+
+ vpsrld $11,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm15,%xmm2
+ vpaddd 32(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm15,%xmm2
+ vpandn %xmm9,%xmm15,%xmm0
+ vpand %xmm8,%xmm15,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm11,%xmm10
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm11,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm11,%xmm12,%xmm4
+
+ vpxor %xmm1,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm11,%xmm1
+
+ vpslld $19,%xmm11,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm10,%xmm7
+
+ vpsrld $22,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm11,%xmm2
+ vpxor %xmm3,%xmm12,%xmm10
+ vpaddd %xmm5,%xmm14,%xmm14
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm10,%xmm10
+ vmovd 56(%r8),%xmm5
+ vmovd 56(%r9),%xmm0
+ vpinsrd $1,56(%r10),%xmm5,%xmm5
+ vpinsrd $1,56(%r11),%xmm0,%xmm0
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm14,%xmm7
+ vpslld $26,%xmm14,%xmm2
+ vmovdqu %xmm5,224-128(%rax)
+ vpaddd %xmm9,%xmm5,%xmm5
+
+ vpsrld $11,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm14,%xmm2
+ vpaddd 64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm14,%xmm2
+ vpandn %xmm8,%xmm14,%xmm0
+ vpand %xmm15,%xmm14,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm10,%xmm9
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm10,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm10,%xmm11,%xmm3
+
+ vpxor %xmm1,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm10,%xmm1
+
+ vpslld $19,%xmm10,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm9,%xmm7
+
+ vpsrld $22,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm10,%xmm2
+ vpxor %xmm4,%xmm11,%xmm9
+ vpaddd %xmm5,%xmm13,%xmm13
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm9,%xmm9
+ vmovd 60(%r8),%xmm5
+ leaq 64(%r8),%r8
+ vmovd 60(%r9),%xmm0
+ leaq 64(%r9),%r9
+ vpinsrd $1,60(%r10),%xmm5,%xmm5
+ leaq 64(%r10),%r10
+ vpinsrd $1,60(%r11),%xmm0,%xmm0
+ leaq 64(%r11),%r11
+ vpunpckldq %xmm0,%xmm5,%xmm5
+ vpshufb %xmm6,%xmm5,%xmm5
+ vpsrld $6,%xmm13,%xmm7
+ vpslld $26,%xmm13,%xmm2
+ vmovdqu %xmm5,240-128(%rax)
+ vpaddd %xmm8,%xmm5,%xmm5
+
+ vpsrld $11,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm13,%xmm2
+ vpaddd 96(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ prefetcht0 63(%r8)
+ vpslld $7,%xmm13,%xmm2
+ vpandn %xmm15,%xmm13,%xmm0
+ vpand %xmm14,%xmm13,%xmm4
+ prefetcht0 63(%r9)
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm9,%xmm8
+ vpxor %xmm2,%xmm7,%xmm7
+ prefetcht0 63(%r10)
+ vpslld $30,%xmm9,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm9,%xmm10,%xmm4
+ prefetcht0 63(%r11)
+ vpxor %xmm1,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm9,%xmm1
+
+ vpslld $19,%xmm9,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm8,%xmm7
+
+ vpsrld $22,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm9,%xmm2
+ vpxor %xmm3,%xmm10,%xmm8
+ vpaddd %xmm5,%xmm12,%xmm12
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm8,%xmm8
+ addq $256,%rbp
+ vmovdqu 0-128(%rax),%xmm5
+ movl $3,%ecx
+ jmp .Loop_16_xx_avx
+.align 32
+.Loop_16_xx_avx:
+ vmovdqu 16-128(%rax),%xmm6
+ vpaddd 144-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 224-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm12,%xmm7
+ vpslld $26,%xmm12,%xmm2
+ vmovdqu %xmm5,0-128(%rax)
+ vpaddd %xmm15,%xmm5,%xmm5
+
+ vpsrld $11,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm12,%xmm2
+ vpaddd -128(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm12,%xmm2
+ vpandn %xmm14,%xmm12,%xmm0
+ vpand %xmm13,%xmm12,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm8,%xmm15
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm8,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm8,%xmm9,%xmm3
+
+ vpxor %xmm1,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm8,%xmm1
+
+ vpslld $19,%xmm8,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm15,%xmm7
+
+ vpsrld $22,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm8,%xmm2
+ vpxor %xmm4,%xmm9,%xmm15
+ vpaddd %xmm5,%xmm11,%xmm11
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm15,%xmm15
+ vmovdqu 32-128(%rax),%xmm5
+ vpaddd 160-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 240-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm11,%xmm7
+ vpslld $26,%xmm11,%xmm2
+ vmovdqu %xmm6,16-128(%rax)
+ vpaddd %xmm14,%xmm6,%xmm6
+
+ vpsrld $11,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm11,%xmm2
+ vpaddd -96(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm11,%xmm2
+ vpandn %xmm13,%xmm11,%xmm0
+ vpand %xmm12,%xmm11,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm15,%xmm14
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm15,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm15,%xmm8,%xmm4
+
+ vpxor %xmm1,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm15,%xmm1
+
+ vpslld $19,%xmm15,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm14,%xmm7
+
+ vpsrld $22,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm15,%xmm2
+ vpxor %xmm3,%xmm8,%xmm14
+ vpaddd %xmm6,%xmm10,%xmm10
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm14,%xmm14
+ vmovdqu 48-128(%rax),%xmm6
+ vpaddd 176-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 0-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm10,%xmm7
+ vpslld $26,%xmm10,%xmm2
+ vmovdqu %xmm5,32-128(%rax)
+ vpaddd %xmm13,%xmm5,%xmm5
+
+ vpsrld $11,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm10,%xmm2
+ vpaddd -64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm10,%xmm2
+ vpandn %xmm12,%xmm10,%xmm0
+ vpand %xmm11,%xmm10,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm14,%xmm13
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm14,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm14,%xmm15,%xmm3
+
+ vpxor %xmm1,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm14,%xmm1
+
+ vpslld $19,%xmm14,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm13,%xmm7
+
+ vpsrld $22,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm14,%xmm2
+ vpxor %xmm4,%xmm15,%xmm13
+ vpaddd %xmm5,%xmm9,%xmm9
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm13,%xmm13
+ vmovdqu 64-128(%rax),%xmm5
+ vpaddd 192-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 16-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm9,%xmm7
+ vpslld $26,%xmm9,%xmm2
+ vmovdqu %xmm6,48-128(%rax)
+ vpaddd %xmm12,%xmm6,%xmm6
+
+ vpsrld $11,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm9,%xmm2
+ vpaddd -32(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm9,%xmm2
+ vpandn %xmm11,%xmm9,%xmm0
+ vpand %xmm10,%xmm9,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm13,%xmm12
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm13,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm13,%xmm14,%xmm4
+
+ vpxor %xmm1,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm13,%xmm1
+
+ vpslld $19,%xmm13,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm12,%xmm7
+
+ vpsrld $22,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm13,%xmm2
+ vpxor %xmm3,%xmm14,%xmm12
+ vpaddd %xmm6,%xmm8,%xmm8
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm12,%xmm12
+ vmovdqu 80-128(%rax),%xmm6
+ vpaddd 208-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 32-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm8,%xmm7
+ vpslld $26,%xmm8,%xmm2
+ vmovdqu %xmm5,64-128(%rax)
+ vpaddd %xmm11,%xmm5,%xmm5
+
+ vpsrld $11,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm8,%xmm2
+ vpaddd 0(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm8,%xmm2
+ vpandn %xmm10,%xmm8,%xmm0
+ vpand %xmm9,%xmm8,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm12,%xmm11
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm12,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm12,%xmm13,%xmm3
+
+ vpxor %xmm1,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm12,%xmm1
+
+ vpslld $19,%xmm12,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm11,%xmm7
+
+ vpsrld $22,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm12,%xmm2
+ vpxor %xmm4,%xmm13,%xmm11
+ vpaddd %xmm5,%xmm15,%xmm15
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm11,%xmm11
+ vmovdqu 96-128(%rax),%xmm5
+ vpaddd 224-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 48-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm15,%xmm7
+ vpslld $26,%xmm15,%xmm2
+ vmovdqu %xmm6,80-128(%rax)
+ vpaddd %xmm10,%xmm6,%xmm6
+
+ vpsrld $11,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm15,%xmm2
+ vpaddd 32(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm15,%xmm2
+ vpandn %xmm9,%xmm15,%xmm0
+ vpand %xmm8,%xmm15,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm11,%xmm10
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm11,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm11,%xmm12,%xmm4
+
+ vpxor %xmm1,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm11,%xmm1
+
+ vpslld $19,%xmm11,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm10,%xmm7
+
+ vpsrld $22,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm11,%xmm2
+ vpxor %xmm3,%xmm12,%xmm10
+ vpaddd %xmm6,%xmm14,%xmm14
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm10,%xmm10
+ vmovdqu 112-128(%rax),%xmm6
+ vpaddd 240-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 64-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm14,%xmm7
+ vpslld $26,%xmm14,%xmm2
+ vmovdqu %xmm5,96-128(%rax)
+ vpaddd %xmm9,%xmm5,%xmm5
+
+ vpsrld $11,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm14,%xmm2
+ vpaddd 64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm14,%xmm2
+ vpandn %xmm8,%xmm14,%xmm0
+ vpand %xmm15,%xmm14,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm10,%xmm9
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm10,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm10,%xmm11,%xmm3
+
+ vpxor %xmm1,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm10,%xmm1
+
+ vpslld $19,%xmm10,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm9,%xmm7
+
+ vpsrld $22,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm10,%xmm2
+ vpxor %xmm4,%xmm11,%xmm9
+ vpaddd %xmm5,%xmm13,%xmm13
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm9,%xmm9
+ vmovdqu 128-128(%rax),%xmm5
+ vpaddd 0-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 80-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm13,%xmm7
+ vpslld $26,%xmm13,%xmm2
+ vmovdqu %xmm6,112-128(%rax)
+ vpaddd %xmm8,%xmm6,%xmm6
+
+ vpsrld $11,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm13,%xmm2
+ vpaddd 96(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm13,%xmm2
+ vpandn %xmm15,%xmm13,%xmm0
+ vpand %xmm14,%xmm13,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm9,%xmm8
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm9,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm9,%xmm10,%xmm4
+
+ vpxor %xmm1,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm9,%xmm1
+
+ vpslld $19,%xmm9,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm8,%xmm7
+
+ vpsrld $22,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm9,%xmm2
+ vpxor %xmm3,%xmm10,%xmm8
+ vpaddd %xmm6,%xmm12,%xmm12
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm8,%xmm8
+ addq $256,%rbp
+ vmovdqu 144-128(%rax),%xmm6
+ vpaddd 16-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 96-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm12,%xmm7
+ vpslld $26,%xmm12,%xmm2
+ vmovdqu %xmm5,128-128(%rax)
+ vpaddd %xmm15,%xmm5,%xmm5
+
+ vpsrld $11,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm12,%xmm2
+ vpaddd -128(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm12,%xmm2
+ vpandn %xmm14,%xmm12,%xmm0
+ vpand %xmm13,%xmm12,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm8,%xmm15
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm8,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm8,%xmm9,%xmm3
+
+ vpxor %xmm1,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm8,%xmm1
+
+ vpslld $19,%xmm8,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm15,%xmm7
+
+ vpsrld $22,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm8,%xmm2
+ vpxor %xmm4,%xmm9,%xmm15
+ vpaddd %xmm5,%xmm11,%xmm11
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm15,%xmm15
+ vpaddd %xmm7,%xmm15,%xmm15
+ vmovdqu 160-128(%rax),%xmm5
+ vpaddd 32-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 112-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm11,%xmm7
+ vpslld $26,%xmm11,%xmm2
+ vmovdqu %xmm6,144-128(%rax)
+ vpaddd %xmm14,%xmm6,%xmm6
+
+ vpsrld $11,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm11,%xmm2
+ vpaddd -96(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm11,%xmm2
+ vpandn %xmm13,%xmm11,%xmm0
+ vpand %xmm12,%xmm11,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm15,%xmm14
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm15,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm15,%xmm8,%xmm4
+
+ vpxor %xmm1,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm15,%xmm1
+
+ vpslld $19,%xmm15,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm14,%xmm7
+
+ vpsrld $22,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm15,%xmm2
+ vpxor %xmm3,%xmm8,%xmm14
+ vpaddd %xmm6,%xmm10,%xmm10
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm14,%xmm14
+ vpaddd %xmm7,%xmm14,%xmm14
+ vmovdqu 176-128(%rax),%xmm6
+ vpaddd 48-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 128-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm10,%xmm7
+ vpslld $26,%xmm10,%xmm2
+ vmovdqu %xmm5,160-128(%rax)
+ vpaddd %xmm13,%xmm5,%xmm5
+
+ vpsrld $11,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm10,%xmm2
+ vpaddd -64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm10,%xmm2
+ vpandn %xmm12,%xmm10,%xmm0
+ vpand %xmm11,%xmm10,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm14,%xmm13
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm14,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm14,%xmm15,%xmm3
+
+ vpxor %xmm1,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm14,%xmm1
+
+ vpslld $19,%xmm14,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm13,%xmm7
+
+ vpsrld $22,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm14,%xmm2
+ vpxor %xmm4,%xmm15,%xmm13
+ vpaddd %xmm5,%xmm9,%xmm9
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm13,%xmm13
+ vpaddd %xmm7,%xmm13,%xmm13
+ vmovdqu 192-128(%rax),%xmm5
+ vpaddd 64-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 144-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm9,%xmm7
+ vpslld $26,%xmm9,%xmm2
+ vmovdqu %xmm6,176-128(%rax)
+ vpaddd %xmm12,%xmm6,%xmm6
+
+ vpsrld $11,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm9,%xmm2
+ vpaddd -32(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm9,%xmm2
+ vpandn %xmm11,%xmm9,%xmm0
+ vpand %xmm10,%xmm9,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm13,%xmm12
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm13,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm13,%xmm14,%xmm4
+
+ vpxor %xmm1,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm13,%xmm1
+
+ vpslld $19,%xmm13,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm12,%xmm7
+
+ vpsrld $22,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm13,%xmm2
+ vpxor %xmm3,%xmm14,%xmm12
+ vpaddd %xmm6,%xmm8,%xmm8
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm12,%xmm12
+ vpaddd %xmm7,%xmm12,%xmm12
+ vmovdqu 208-128(%rax),%xmm6
+ vpaddd 80-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 160-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm8,%xmm7
+ vpslld $26,%xmm8,%xmm2
+ vmovdqu %xmm5,192-128(%rax)
+ vpaddd %xmm11,%xmm5,%xmm5
+
+ vpsrld $11,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm8,%xmm2
+ vpaddd 0(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm8,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm8,%xmm2
+ vpandn %xmm10,%xmm8,%xmm0
+ vpand %xmm9,%xmm8,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm12,%xmm11
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm12,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm12,%xmm13,%xmm3
+
+ vpxor %xmm1,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm12,%xmm1
+
+ vpslld $19,%xmm12,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm11,%xmm7
+
+ vpsrld $22,%xmm12,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm12,%xmm2
+ vpxor %xmm4,%xmm13,%xmm11
+ vpaddd %xmm5,%xmm15,%xmm15
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm11,%xmm11
+ vpaddd %xmm7,%xmm11,%xmm11
+ vmovdqu 224-128(%rax),%xmm5
+ vpaddd 96-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 176-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm15,%xmm7
+ vpslld $26,%xmm15,%xmm2
+ vmovdqu %xmm6,208-128(%rax)
+ vpaddd %xmm10,%xmm6,%xmm6
+
+ vpsrld $11,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm15,%xmm2
+ vpaddd 32(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm15,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm15,%xmm2
+ vpandn %xmm9,%xmm15,%xmm0
+ vpand %xmm8,%xmm15,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm11,%xmm10
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm11,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm11,%xmm12,%xmm4
+
+ vpxor %xmm1,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm11,%xmm1
+
+ vpslld $19,%xmm11,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm10,%xmm7
+
+ vpsrld $22,%xmm11,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm11,%xmm2
+ vpxor %xmm3,%xmm12,%xmm10
+ vpaddd %xmm6,%xmm14,%xmm14
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm10,%xmm10
+ vpaddd %xmm7,%xmm10,%xmm10
+ vmovdqu 240-128(%rax),%xmm6
+ vpaddd 112-128(%rax),%xmm5,%xmm5
+
+ vpsrld $3,%xmm6,%xmm7
+ vpsrld $7,%xmm6,%xmm1
+ vpslld $25,%xmm6,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm6,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm6,%xmm2
+ vmovdqu 192-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpxor %xmm1,%xmm3,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm5,%xmm5
+ vpsrld $6,%xmm14,%xmm7
+ vpslld $26,%xmm14,%xmm2
+ vmovdqu %xmm5,224-128(%rax)
+ vpaddd %xmm9,%xmm5,%xmm5
+
+ vpsrld $11,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm14,%xmm2
+ vpaddd 64(%rbp),%xmm5,%xmm5
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm14,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm14,%xmm2
+ vpandn %xmm8,%xmm14,%xmm0
+ vpand %xmm15,%xmm14,%xmm3
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm10,%xmm9
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm10,%xmm1
+ vpxor %xmm3,%xmm0,%xmm0
+ vpxor %xmm10,%xmm11,%xmm3
+
+ vpxor %xmm1,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm5,%xmm5
+
+ vpsrld $13,%xmm10,%xmm1
+
+ vpslld $19,%xmm10,%xmm2
+ vpaddd %xmm0,%xmm5,%xmm5
+ vpand %xmm3,%xmm4,%xmm4
+
+ vpxor %xmm1,%xmm9,%xmm7
+
+ vpsrld $22,%xmm10,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm10,%xmm2
+ vpxor %xmm4,%xmm11,%xmm9
+ vpaddd %xmm5,%xmm13,%xmm13
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm5,%xmm9,%xmm9
+ vpaddd %xmm7,%xmm9,%xmm9
+ vmovdqu 0-128(%rax),%xmm5
+ vpaddd 128-128(%rax),%xmm6,%xmm6
+
+ vpsrld $3,%xmm5,%xmm7
+ vpsrld $7,%xmm5,%xmm1
+ vpslld $25,%xmm5,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $18,%xmm5,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $14,%xmm5,%xmm2
+ vmovdqu 208-128(%rax),%xmm0
+ vpsrld $10,%xmm0,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpsrld $17,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $15,%xmm0,%xmm2
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpxor %xmm1,%xmm4,%xmm7
+ vpsrld $19,%xmm0,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $13,%xmm0,%xmm2
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+ vpaddd %xmm7,%xmm6,%xmm6
+ vpsrld $6,%xmm13,%xmm7
+ vpslld $26,%xmm13,%xmm2
+ vmovdqu %xmm6,240-128(%rax)
+ vpaddd %xmm8,%xmm6,%xmm6
+
+ vpsrld $11,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+ vpslld $21,%xmm13,%xmm2
+ vpaddd 96(%rbp),%xmm6,%xmm6
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $25,%xmm13,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $7,%xmm13,%xmm2
+ vpandn %xmm15,%xmm13,%xmm0
+ vpand %xmm14,%xmm13,%xmm4
+
+ vpxor %xmm1,%xmm7,%xmm7
+
+ vpsrld $2,%xmm9,%xmm8
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $30,%xmm9,%xmm1
+ vpxor %xmm4,%xmm0,%xmm0
+ vpxor %xmm9,%xmm10,%xmm4
+
+ vpxor %xmm1,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm6,%xmm6
+
+ vpsrld $13,%xmm9,%xmm1
+
+ vpslld $19,%xmm9,%xmm2
+ vpaddd %xmm0,%xmm6,%xmm6
+ vpand %xmm4,%xmm3,%xmm3
+
+ vpxor %xmm1,%xmm8,%xmm7
+
+ vpsrld $22,%xmm9,%xmm1
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpslld $10,%xmm9,%xmm2
+ vpxor %xmm3,%xmm10,%xmm8
+ vpaddd %xmm6,%xmm12,%xmm12
+
+ vpxor %xmm1,%xmm7,%xmm7
+ vpxor %xmm2,%xmm7,%xmm7
+
+ vpaddd %xmm6,%xmm8,%xmm8
+ vpaddd %xmm7,%xmm8,%xmm8
+ addq $256,%rbp
+ decl %ecx
+ jnz .Loop_16_xx_avx
+
+ movl $1,%ecx
+ leaq K256+128(%rip),%rbp
+ cmpl 0(%rbx),%ecx
+ cmovgeq %rbp,%r8
+ cmpl 4(%rbx),%ecx
+ cmovgeq %rbp,%r9
+ cmpl 8(%rbx),%ecx
+ cmovgeq %rbp,%r10
+ cmpl 12(%rbx),%ecx
+ cmovgeq %rbp,%r11
+ vmovdqa (%rbx),%xmm7
+ vpxor %xmm0,%xmm0,%xmm0
+ vmovdqa %xmm7,%xmm6
+ vpcmpgtd %xmm0,%xmm6,%xmm6
+ vpaddd %xmm6,%xmm7,%xmm7
+
+ vmovdqu 0-128(%rdi),%xmm0
+ vpand %xmm6,%xmm8,%xmm8
+ vmovdqu 32-128(%rdi),%xmm1
+ vpand %xmm6,%xmm9,%xmm9
+ vmovdqu 64-128(%rdi),%xmm2
+ vpand %xmm6,%xmm10,%xmm10
+ vmovdqu 96-128(%rdi),%xmm5
+ vpand %xmm6,%xmm11,%xmm11
+ vpaddd %xmm0,%xmm8,%xmm8
+ vmovdqu 128-128(%rdi),%xmm0
+ vpand %xmm6,%xmm12,%xmm12
+ vpaddd %xmm1,%xmm9,%xmm9
+ vmovdqu 160-128(%rdi),%xmm1
+ vpand %xmm6,%xmm13,%xmm13
+ vpaddd %xmm2,%xmm10,%xmm10
+ vmovdqu 192-128(%rdi),%xmm2
+ vpand %xmm6,%xmm14,%xmm14
+ vpaddd %xmm5,%xmm11,%xmm11
+ vmovdqu 224-128(%rdi),%xmm5
+ vpand %xmm6,%xmm15,%xmm15
+ vpaddd %xmm0,%xmm12,%xmm12
+ vpaddd %xmm1,%xmm13,%xmm13
+ vmovdqu %xmm8,0-128(%rdi)
+ vpaddd %xmm2,%xmm14,%xmm14
+ vmovdqu %xmm9,32-128(%rdi)
+ vpaddd %xmm5,%xmm15,%xmm15
+ vmovdqu %xmm10,64-128(%rdi)
+ vmovdqu %xmm11,96-128(%rdi)
+ vmovdqu %xmm12,128-128(%rdi)
+ vmovdqu %xmm13,160-128(%rdi)
+ vmovdqu %xmm14,192-128(%rdi)
+ vmovdqu %xmm15,224-128(%rdi)
+
+ vmovdqu %xmm7,(%rbx)
+ vmovdqu .Lpbswap(%rip),%xmm6
+ decl %edx
+ jnz .Loop_avx
+
+ movl 280(%rsp),%edx
+ leaq 16(%rdi),%rdi
+ leaq 64(%rsi),%rsi
+ decl %edx
+ jnz .Loop_grande_avx
+
+.Ldone_avx:
+ movq 272(%rsp),%rax
+ vzeroupper
+ movq -16(%rax),%rbp
+ movq -8(%rax),%rbx
+ leaq (%rax),%rsp
+.Lepilogue_avx:
+ .byte 0xf3,0xc3
+.size sha256_multi_block_avx,.-sha256_multi_block_avx
+.type sha256_multi_block_avx2,@function
+.align 32
+sha256_multi_block_avx2:
+_avx2_shortcut:
+ movq %rsp,%rax
+ pushq %rbx
+ pushq %rbp
+ pushq %r12
+ pushq %r13
+ pushq %r14
+ pushq %r15
+ subq $576,%rsp
+ andq $-256,%rsp
+ movq %rax,544(%rsp)
+.Lbody_avx2:
+ leaq K256+128(%rip),%rbp
+ leaq 128(%rdi),%rdi
+
+.Loop_grande_avx2:
+ movl %edx,552(%rsp)
+ xorl %edx,%edx
+ leaq 512(%rsp),%rbx
+ movq 0(%rsi),%r12
+ movl 8(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,0(%rbx)
+ cmovleq %rbp,%r12
+ movq 16(%rsi),%r13
+ movl 24(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,4(%rbx)
+ cmovleq %rbp,%r13
+ movq 32(%rsi),%r14
+ movl 40(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,8(%rbx)
+ cmovleq %rbp,%r14
+ movq 48(%rsi),%r15
+ movl 56(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,12(%rbx)
+ cmovleq %rbp,%r15
+ movq 64(%rsi),%r8
+ movl 72(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,16(%rbx)
+ cmovleq %rbp,%r8
+ movq 80(%rsi),%r9
+ movl 88(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,20(%rbx)
+ cmovleq %rbp,%r9
+ movq 96(%rsi),%r10
+ movl 104(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,24(%rbx)
+ cmovleq %rbp,%r10
+ movq 112(%rsi),%r11
+ movl 120(%rsi),%ecx
+ cmpl %edx,%ecx
+ cmovgl %ecx,%edx
+ testl %ecx,%ecx
+ movl %ecx,28(%rbx)
+ cmovleq %rbp,%r11
+ vmovdqu 0-128(%rdi),%ymm8
+ leaq 128(%rsp),%rax
+ vmovdqu 32-128(%rdi),%ymm9
+ leaq 256+128(%rsp),%rbx
+ vmovdqu 64-128(%rdi),%ymm10
+ vmovdqu 96-128(%rdi),%ymm11
+ vmovdqu 128-128(%rdi),%ymm12
+ vmovdqu 160-128(%rdi),%ymm13
+ vmovdqu 192-128(%rdi),%ymm14
+ vmovdqu 224-128(%rdi),%ymm15
+ vmovdqu .Lpbswap(%rip),%ymm6
+ jmp .Loop_avx2
+
+.align 32
+.Loop_avx2:
+ vpxor %ymm9,%ymm10,%ymm4
+ vmovd 0(%r12),%xmm5
+ vmovd 0(%r8),%xmm0
+ vmovd 0(%r13),%xmm1
+ vmovd 0(%r9),%xmm2
+ vpinsrd $1,0(%r14),%xmm5,%xmm5
+ vpinsrd $1,0(%r10),%xmm0,%xmm0
+ vpinsrd $1,0(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,0(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm12,%ymm7
+ vpslld $26,%ymm12,%ymm2
+ vmovdqu %ymm5,0-128(%rax)
+ vpaddd %ymm15,%ymm5,%ymm5
+
+ vpsrld $11,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm12,%ymm2
+ vpaddd -128(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm12,%ymm2
+ vpandn %ymm14,%ymm12,%ymm0
+ vpand %ymm13,%ymm12,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm8,%ymm15
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm8,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm8,%ymm9,%ymm3
+
+ vpxor %ymm1,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm8,%ymm1
+
+ vpslld $19,%ymm8,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm15,%ymm7
+
+ vpsrld $22,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm8,%ymm2
+ vpxor %ymm4,%ymm9,%ymm15
+ vpaddd %ymm5,%ymm11,%ymm11
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm15,%ymm15
+ vmovd 4(%r12),%xmm5
+ vmovd 4(%r8),%xmm0
+ vmovd 4(%r13),%xmm1
+ vmovd 4(%r9),%xmm2
+ vpinsrd $1,4(%r14),%xmm5,%xmm5
+ vpinsrd $1,4(%r10),%xmm0,%xmm0
+ vpinsrd $1,4(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,4(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm11,%ymm7
+ vpslld $26,%ymm11,%ymm2
+ vmovdqu %ymm5,32-128(%rax)
+ vpaddd %ymm14,%ymm5,%ymm5
+
+ vpsrld $11,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm11,%ymm2
+ vpaddd -96(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm11,%ymm2
+ vpandn %ymm13,%ymm11,%ymm0
+ vpand %ymm12,%ymm11,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm15,%ymm14
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm15,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm15,%ymm8,%ymm4
+
+ vpxor %ymm1,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm15,%ymm1
+
+ vpslld $19,%ymm15,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm14,%ymm7
+
+ vpsrld $22,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm15,%ymm2
+ vpxor %ymm3,%ymm8,%ymm14
+ vpaddd %ymm5,%ymm10,%ymm10
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm14,%ymm14
+ vmovd 8(%r12),%xmm5
+ vmovd 8(%r8),%xmm0
+ vmovd 8(%r13),%xmm1
+ vmovd 8(%r9),%xmm2
+ vpinsrd $1,8(%r14),%xmm5,%xmm5
+ vpinsrd $1,8(%r10),%xmm0,%xmm0
+ vpinsrd $1,8(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,8(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm10,%ymm7
+ vpslld $26,%ymm10,%ymm2
+ vmovdqu %ymm5,64-128(%rax)
+ vpaddd %ymm13,%ymm5,%ymm5
+
+ vpsrld $11,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm10,%ymm2
+ vpaddd -64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm10,%ymm2
+ vpandn %ymm12,%ymm10,%ymm0
+ vpand %ymm11,%ymm10,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm14,%ymm13
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm14,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm14,%ymm15,%ymm3
+
+ vpxor %ymm1,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm14,%ymm1
+
+ vpslld $19,%ymm14,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm13,%ymm7
+
+ vpsrld $22,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm14,%ymm2
+ vpxor %ymm4,%ymm15,%ymm13
+ vpaddd %ymm5,%ymm9,%ymm9
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm13,%ymm13
+ vmovd 12(%r12),%xmm5
+ vmovd 12(%r8),%xmm0
+ vmovd 12(%r13),%xmm1
+ vmovd 12(%r9),%xmm2
+ vpinsrd $1,12(%r14),%xmm5,%xmm5
+ vpinsrd $1,12(%r10),%xmm0,%xmm0
+ vpinsrd $1,12(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,12(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm9,%ymm7
+ vpslld $26,%ymm9,%ymm2
+ vmovdqu %ymm5,96-128(%rax)
+ vpaddd %ymm12,%ymm5,%ymm5
+
+ vpsrld $11,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm9,%ymm2
+ vpaddd -32(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm9,%ymm2
+ vpandn %ymm11,%ymm9,%ymm0
+ vpand %ymm10,%ymm9,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm13,%ymm12
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm13,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm13,%ymm14,%ymm4
+
+ vpxor %ymm1,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm13,%ymm1
+
+ vpslld $19,%ymm13,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm12,%ymm7
+
+ vpsrld $22,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm13,%ymm2
+ vpxor %ymm3,%ymm14,%ymm12
+ vpaddd %ymm5,%ymm8,%ymm8
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm12,%ymm12
+ vmovd 16(%r12),%xmm5
+ vmovd 16(%r8),%xmm0
+ vmovd 16(%r13),%xmm1
+ vmovd 16(%r9),%xmm2
+ vpinsrd $1,16(%r14),%xmm5,%xmm5
+ vpinsrd $1,16(%r10),%xmm0,%xmm0
+ vpinsrd $1,16(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,16(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm8,%ymm7
+ vpslld $26,%ymm8,%ymm2
+ vmovdqu %ymm5,128-128(%rax)
+ vpaddd %ymm11,%ymm5,%ymm5
+
+ vpsrld $11,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm8,%ymm2
+ vpaddd 0(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm8,%ymm2
+ vpandn %ymm10,%ymm8,%ymm0
+ vpand %ymm9,%ymm8,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm12,%ymm11
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm12,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm12,%ymm13,%ymm3
+
+ vpxor %ymm1,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm12,%ymm1
+
+ vpslld $19,%ymm12,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm11,%ymm7
+
+ vpsrld $22,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm12,%ymm2
+ vpxor %ymm4,%ymm13,%ymm11
+ vpaddd %ymm5,%ymm15,%ymm15
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm11,%ymm11
+ vmovd 20(%r12),%xmm5
+ vmovd 20(%r8),%xmm0
+ vmovd 20(%r13),%xmm1
+ vmovd 20(%r9),%xmm2
+ vpinsrd $1,20(%r14),%xmm5,%xmm5
+ vpinsrd $1,20(%r10),%xmm0,%xmm0
+ vpinsrd $1,20(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,20(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm15,%ymm7
+ vpslld $26,%ymm15,%ymm2
+ vmovdqu %ymm5,160-128(%rax)
+ vpaddd %ymm10,%ymm5,%ymm5
+
+ vpsrld $11,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm15,%ymm2
+ vpaddd 32(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm15,%ymm2
+ vpandn %ymm9,%ymm15,%ymm0
+ vpand %ymm8,%ymm15,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm11,%ymm10
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm11,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm11,%ymm12,%ymm4
+
+ vpxor %ymm1,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm11,%ymm1
+
+ vpslld $19,%ymm11,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm10,%ymm7
+
+ vpsrld $22,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm11,%ymm2
+ vpxor %ymm3,%ymm12,%ymm10
+ vpaddd %ymm5,%ymm14,%ymm14
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm10,%ymm10
+ vmovd 24(%r12),%xmm5
+ vmovd 24(%r8),%xmm0
+ vmovd 24(%r13),%xmm1
+ vmovd 24(%r9),%xmm2
+ vpinsrd $1,24(%r14),%xmm5,%xmm5
+ vpinsrd $1,24(%r10),%xmm0,%xmm0
+ vpinsrd $1,24(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,24(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm14,%ymm7
+ vpslld $26,%ymm14,%ymm2
+ vmovdqu %ymm5,192-128(%rax)
+ vpaddd %ymm9,%ymm5,%ymm5
+
+ vpsrld $11,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm14,%ymm2
+ vpaddd 64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm14,%ymm2
+ vpandn %ymm8,%ymm14,%ymm0
+ vpand %ymm15,%ymm14,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm10,%ymm9
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm10,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm10,%ymm11,%ymm3
+
+ vpxor %ymm1,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm10,%ymm1
+
+ vpslld $19,%ymm10,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm9,%ymm7
+
+ vpsrld $22,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm10,%ymm2
+ vpxor %ymm4,%ymm11,%ymm9
+ vpaddd %ymm5,%ymm13,%ymm13
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm9,%ymm9
+ vmovd 28(%r12),%xmm5
+ vmovd 28(%r8),%xmm0
+ vmovd 28(%r13),%xmm1
+ vmovd 28(%r9),%xmm2
+ vpinsrd $1,28(%r14),%xmm5,%xmm5
+ vpinsrd $1,28(%r10),%xmm0,%xmm0
+ vpinsrd $1,28(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,28(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm13,%ymm7
+ vpslld $26,%ymm13,%ymm2
+ vmovdqu %ymm5,224-128(%rax)
+ vpaddd %ymm8,%ymm5,%ymm5
+
+ vpsrld $11,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm13,%ymm2
+ vpaddd 96(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm13,%ymm2
+ vpandn %ymm15,%ymm13,%ymm0
+ vpand %ymm14,%ymm13,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm9,%ymm8
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm9,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm9,%ymm10,%ymm4
+
+ vpxor %ymm1,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm9,%ymm1
+
+ vpslld $19,%ymm9,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm8,%ymm7
+
+ vpsrld $22,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm9,%ymm2
+ vpxor %ymm3,%ymm10,%ymm8
+ vpaddd %ymm5,%ymm12,%ymm12
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm8,%ymm8
+ addq $256,%rbp
+ vmovd 32(%r12),%xmm5
+ vmovd 32(%r8),%xmm0
+ vmovd 32(%r13),%xmm1
+ vmovd 32(%r9),%xmm2
+ vpinsrd $1,32(%r14),%xmm5,%xmm5
+ vpinsrd $1,32(%r10),%xmm0,%xmm0
+ vpinsrd $1,32(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,32(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm12,%ymm7
+ vpslld $26,%ymm12,%ymm2
+ vmovdqu %ymm5,256-256-128(%rbx)
+ vpaddd %ymm15,%ymm5,%ymm5
+
+ vpsrld $11,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm12,%ymm2
+ vpaddd -128(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm12,%ymm2
+ vpandn %ymm14,%ymm12,%ymm0
+ vpand %ymm13,%ymm12,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm8,%ymm15
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm8,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm8,%ymm9,%ymm3
+
+ vpxor %ymm1,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm8,%ymm1
+
+ vpslld $19,%ymm8,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm15,%ymm7
+
+ vpsrld $22,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm8,%ymm2
+ vpxor %ymm4,%ymm9,%ymm15
+ vpaddd %ymm5,%ymm11,%ymm11
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm15,%ymm15
+ vmovd 36(%r12),%xmm5
+ vmovd 36(%r8),%xmm0
+ vmovd 36(%r13),%xmm1
+ vmovd 36(%r9),%xmm2
+ vpinsrd $1,36(%r14),%xmm5,%xmm5
+ vpinsrd $1,36(%r10),%xmm0,%xmm0
+ vpinsrd $1,36(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,36(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm11,%ymm7
+ vpslld $26,%ymm11,%ymm2
+ vmovdqu %ymm5,288-256-128(%rbx)
+ vpaddd %ymm14,%ymm5,%ymm5
+
+ vpsrld $11,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm11,%ymm2
+ vpaddd -96(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm11,%ymm2
+ vpandn %ymm13,%ymm11,%ymm0
+ vpand %ymm12,%ymm11,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm15,%ymm14
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm15,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm15,%ymm8,%ymm4
+
+ vpxor %ymm1,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm15,%ymm1
+
+ vpslld $19,%ymm15,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm14,%ymm7
+
+ vpsrld $22,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm15,%ymm2
+ vpxor %ymm3,%ymm8,%ymm14
+ vpaddd %ymm5,%ymm10,%ymm10
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm14,%ymm14
+ vmovd 40(%r12),%xmm5
+ vmovd 40(%r8),%xmm0
+ vmovd 40(%r13),%xmm1
+ vmovd 40(%r9),%xmm2
+ vpinsrd $1,40(%r14),%xmm5,%xmm5
+ vpinsrd $1,40(%r10),%xmm0,%xmm0
+ vpinsrd $1,40(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,40(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm10,%ymm7
+ vpslld $26,%ymm10,%ymm2
+ vmovdqu %ymm5,320-256-128(%rbx)
+ vpaddd %ymm13,%ymm5,%ymm5
+
+ vpsrld $11,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm10,%ymm2
+ vpaddd -64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm10,%ymm2
+ vpandn %ymm12,%ymm10,%ymm0
+ vpand %ymm11,%ymm10,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm14,%ymm13
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm14,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm14,%ymm15,%ymm3
+
+ vpxor %ymm1,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm14,%ymm1
+
+ vpslld $19,%ymm14,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm13,%ymm7
+
+ vpsrld $22,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm14,%ymm2
+ vpxor %ymm4,%ymm15,%ymm13
+ vpaddd %ymm5,%ymm9,%ymm9
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm13,%ymm13
+ vmovd 44(%r12),%xmm5
+ vmovd 44(%r8),%xmm0
+ vmovd 44(%r13),%xmm1
+ vmovd 44(%r9),%xmm2
+ vpinsrd $1,44(%r14),%xmm5,%xmm5
+ vpinsrd $1,44(%r10),%xmm0,%xmm0
+ vpinsrd $1,44(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,44(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm9,%ymm7
+ vpslld $26,%ymm9,%ymm2
+ vmovdqu %ymm5,352-256-128(%rbx)
+ vpaddd %ymm12,%ymm5,%ymm5
+
+ vpsrld $11,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm9,%ymm2
+ vpaddd -32(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm9,%ymm2
+ vpandn %ymm11,%ymm9,%ymm0
+ vpand %ymm10,%ymm9,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm13,%ymm12
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm13,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm13,%ymm14,%ymm4
+
+ vpxor %ymm1,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm13,%ymm1
+
+ vpslld $19,%ymm13,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm12,%ymm7
+
+ vpsrld $22,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm13,%ymm2
+ vpxor %ymm3,%ymm14,%ymm12
+ vpaddd %ymm5,%ymm8,%ymm8
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm12,%ymm12
+ vmovd 48(%r12),%xmm5
+ vmovd 48(%r8),%xmm0
+ vmovd 48(%r13),%xmm1
+ vmovd 48(%r9),%xmm2
+ vpinsrd $1,48(%r14),%xmm5,%xmm5
+ vpinsrd $1,48(%r10),%xmm0,%xmm0
+ vpinsrd $1,48(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,48(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm8,%ymm7
+ vpslld $26,%ymm8,%ymm2
+ vmovdqu %ymm5,384-256-128(%rbx)
+ vpaddd %ymm11,%ymm5,%ymm5
+
+ vpsrld $11,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm8,%ymm2
+ vpaddd 0(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm8,%ymm2
+ vpandn %ymm10,%ymm8,%ymm0
+ vpand %ymm9,%ymm8,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm12,%ymm11
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm12,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm12,%ymm13,%ymm3
+
+ vpxor %ymm1,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm12,%ymm1
+
+ vpslld $19,%ymm12,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm11,%ymm7
+
+ vpsrld $22,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm12,%ymm2
+ vpxor %ymm4,%ymm13,%ymm11
+ vpaddd %ymm5,%ymm15,%ymm15
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm11,%ymm11
+ vmovd 52(%r12),%xmm5
+ vmovd 52(%r8),%xmm0
+ vmovd 52(%r13),%xmm1
+ vmovd 52(%r9),%xmm2
+ vpinsrd $1,52(%r14),%xmm5,%xmm5
+ vpinsrd $1,52(%r10),%xmm0,%xmm0
+ vpinsrd $1,52(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,52(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm15,%ymm7
+ vpslld $26,%ymm15,%ymm2
+ vmovdqu %ymm5,416-256-128(%rbx)
+ vpaddd %ymm10,%ymm5,%ymm5
+
+ vpsrld $11,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm15,%ymm2
+ vpaddd 32(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm15,%ymm2
+ vpandn %ymm9,%ymm15,%ymm0
+ vpand %ymm8,%ymm15,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm11,%ymm10
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm11,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm11,%ymm12,%ymm4
+
+ vpxor %ymm1,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm11,%ymm1
+
+ vpslld $19,%ymm11,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm10,%ymm7
+
+ vpsrld $22,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm11,%ymm2
+ vpxor %ymm3,%ymm12,%ymm10
+ vpaddd %ymm5,%ymm14,%ymm14
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm10,%ymm10
+ vmovd 56(%r12),%xmm5
+ vmovd 56(%r8),%xmm0
+ vmovd 56(%r13),%xmm1
+ vmovd 56(%r9),%xmm2
+ vpinsrd $1,56(%r14),%xmm5,%xmm5
+ vpinsrd $1,56(%r10),%xmm0,%xmm0
+ vpinsrd $1,56(%r15),%xmm1,%xmm1
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,56(%r11),%xmm2,%xmm2
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm14,%ymm7
+ vpslld $26,%ymm14,%ymm2
+ vmovdqu %ymm5,448-256-128(%rbx)
+ vpaddd %ymm9,%ymm5,%ymm5
+
+ vpsrld $11,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm14,%ymm2
+ vpaddd 64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm14,%ymm2
+ vpandn %ymm8,%ymm14,%ymm0
+ vpand %ymm15,%ymm14,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm10,%ymm9
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm10,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm10,%ymm11,%ymm3
+
+ vpxor %ymm1,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm10,%ymm1
+
+ vpslld $19,%ymm10,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm9,%ymm7
+
+ vpsrld $22,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm10,%ymm2
+ vpxor %ymm4,%ymm11,%ymm9
+ vpaddd %ymm5,%ymm13,%ymm13
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm9,%ymm9
+ vmovd 60(%r12),%xmm5
+ leaq 64(%r12),%r12
+ vmovd 60(%r8),%xmm0
+ leaq 64(%r8),%r8
+ vmovd 60(%r13),%xmm1
+ leaq 64(%r13),%r13
+ vmovd 60(%r9),%xmm2
+ leaq 64(%r9),%r9
+ vpinsrd $1,60(%r14),%xmm5,%xmm5
+ leaq 64(%r14),%r14
+ vpinsrd $1,60(%r10),%xmm0,%xmm0
+ leaq 64(%r10),%r10
+ vpinsrd $1,60(%r15),%xmm1,%xmm1
+ leaq 64(%r15),%r15
+ vpunpckldq %ymm1,%ymm5,%ymm5
+ vpinsrd $1,60(%r11),%xmm2,%xmm2
+ leaq 64(%r11),%r11
+ vpunpckldq %ymm2,%ymm0,%ymm0
+ vinserti128 $1,%xmm0,%ymm5,%ymm5
+ vpshufb %ymm6,%ymm5,%ymm5
+ vpsrld $6,%ymm13,%ymm7
+ vpslld $26,%ymm13,%ymm2
+ vmovdqu %ymm5,480-256-128(%rbx)
+ vpaddd %ymm8,%ymm5,%ymm5
+
+ vpsrld $11,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm13,%ymm2
+ vpaddd 96(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ prefetcht0 63(%r12)
+ vpslld $7,%ymm13,%ymm2
+ vpandn %ymm15,%ymm13,%ymm0
+ vpand %ymm14,%ymm13,%ymm4
+ prefetcht0 63(%r13)
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm9,%ymm8
+ vpxor %ymm2,%ymm7,%ymm7
+ prefetcht0 63(%r14)
+ vpslld $30,%ymm9,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm9,%ymm10,%ymm4
+ prefetcht0 63(%r15)
+ vpxor %ymm1,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm9,%ymm1
+ prefetcht0 63(%r8)
+ vpslld $19,%ymm9,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm4,%ymm3,%ymm3
+ prefetcht0 63(%r9)
+ vpxor %ymm1,%ymm8,%ymm7
+
+ vpsrld $22,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ prefetcht0 63(%r10)
+ vpslld $10,%ymm9,%ymm2
+ vpxor %ymm3,%ymm10,%ymm8
+ vpaddd %ymm5,%ymm12,%ymm12
+ prefetcht0 63(%r11)
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm8,%ymm8
+ addq $256,%rbp
+ vmovdqu 0-128(%rax),%ymm5
+ movl $3,%ecx
+ jmp .Loop_16_xx_avx2
+.align 32
+.Loop_16_xx_avx2:
+ vmovdqu 32-128(%rax),%ymm6
+ vpaddd 288-256-128(%rbx),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 448-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm12,%ymm7
+ vpslld $26,%ymm12,%ymm2
+ vmovdqu %ymm5,0-128(%rax)
+ vpaddd %ymm15,%ymm5,%ymm5
+
+ vpsrld $11,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm12,%ymm2
+ vpaddd -128(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm12,%ymm2
+ vpandn %ymm14,%ymm12,%ymm0
+ vpand %ymm13,%ymm12,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm8,%ymm15
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm8,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm8,%ymm9,%ymm3
+
+ vpxor %ymm1,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm8,%ymm1
+
+ vpslld $19,%ymm8,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm15,%ymm7
+
+ vpsrld $22,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm8,%ymm2
+ vpxor %ymm4,%ymm9,%ymm15
+ vpaddd %ymm5,%ymm11,%ymm11
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm15,%ymm15
+ vmovdqu 64-128(%rax),%ymm5
+ vpaddd 320-256-128(%rbx),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 480-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm11,%ymm7
+ vpslld $26,%ymm11,%ymm2
+ vmovdqu %ymm6,32-128(%rax)
+ vpaddd %ymm14,%ymm6,%ymm6
+
+ vpsrld $11,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm11,%ymm2
+ vpaddd -96(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm11,%ymm2
+ vpandn %ymm13,%ymm11,%ymm0
+ vpand %ymm12,%ymm11,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm15,%ymm14
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm15,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm15,%ymm8,%ymm4
+
+ vpxor %ymm1,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm15,%ymm1
+
+ vpslld $19,%ymm15,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm14,%ymm7
+
+ vpsrld $22,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm15,%ymm2
+ vpxor %ymm3,%ymm8,%ymm14
+ vpaddd %ymm6,%ymm10,%ymm10
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm14,%ymm14
+ vmovdqu 96-128(%rax),%ymm6
+ vpaddd 352-256-128(%rbx),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 0-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm10,%ymm7
+ vpslld $26,%ymm10,%ymm2
+ vmovdqu %ymm5,64-128(%rax)
+ vpaddd %ymm13,%ymm5,%ymm5
+
+ vpsrld $11,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm10,%ymm2
+ vpaddd -64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm10,%ymm2
+ vpandn %ymm12,%ymm10,%ymm0
+ vpand %ymm11,%ymm10,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm14,%ymm13
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm14,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm14,%ymm15,%ymm3
+
+ vpxor %ymm1,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm14,%ymm1
+
+ vpslld $19,%ymm14,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm13,%ymm7
+
+ vpsrld $22,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm14,%ymm2
+ vpxor %ymm4,%ymm15,%ymm13
+ vpaddd %ymm5,%ymm9,%ymm9
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm13,%ymm13
+ vmovdqu 128-128(%rax),%ymm5
+ vpaddd 384-256-128(%rbx),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 32-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm9,%ymm7
+ vpslld $26,%ymm9,%ymm2
+ vmovdqu %ymm6,96-128(%rax)
+ vpaddd %ymm12,%ymm6,%ymm6
+
+ vpsrld $11,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm9,%ymm2
+ vpaddd -32(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm9,%ymm2
+ vpandn %ymm11,%ymm9,%ymm0
+ vpand %ymm10,%ymm9,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm13,%ymm12
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm13,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm13,%ymm14,%ymm4
+
+ vpxor %ymm1,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm13,%ymm1
+
+ vpslld $19,%ymm13,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm12,%ymm7
+
+ vpsrld $22,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm13,%ymm2
+ vpxor %ymm3,%ymm14,%ymm12
+ vpaddd %ymm6,%ymm8,%ymm8
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm12,%ymm12
+ vmovdqu 160-128(%rax),%ymm6
+ vpaddd 416-256-128(%rbx),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 64-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm8,%ymm7
+ vpslld $26,%ymm8,%ymm2
+ vmovdqu %ymm5,128-128(%rax)
+ vpaddd %ymm11,%ymm5,%ymm5
+
+ vpsrld $11,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm8,%ymm2
+ vpaddd 0(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm8,%ymm2
+ vpandn %ymm10,%ymm8,%ymm0
+ vpand %ymm9,%ymm8,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm12,%ymm11
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm12,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm12,%ymm13,%ymm3
+
+ vpxor %ymm1,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm12,%ymm1
+
+ vpslld $19,%ymm12,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm11,%ymm7
+
+ vpsrld $22,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm12,%ymm2
+ vpxor %ymm4,%ymm13,%ymm11
+ vpaddd %ymm5,%ymm15,%ymm15
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm11,%ymm11
+ vmovdqu 192-128(%rax),%ymm5
+ vpaddd 448-256-128(%rbx),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 96-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm15,%ymm7
+ vpslld $26,%ymm15,%ymm2
+ vmovdqu %ymm6,160-128(%rax)
+ vpaddd %ymm10,%ymm6,%ymm6
+
+ vpsrld $11,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm15,%ymm2
+ vpaddd 32(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm15,%ymm2
+ vpandn %ymm9,%ymm15,%ymm0
+ vpand %ymm8,%ymm15,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm11,%ymm10
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm11,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm11,%ymm12,%ymm4
+
+ vpxor %ymm1,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm11,%ymm1
+
+ vpslld $19,%ymm11,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm10,%ymm7
+
+ vpsrld $22,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm11,%ymm2
+ vpxor %ymm3,%ymm12,%ymm10
+ vpaddd %ymm6,%ymm14,%ymm14
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm10,%ymm10
+ vmovdqu 224-128(%rax),%ymm6
+ vpaddd 480-256-128(%rbx),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 128-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm14,%ymm7
+ vpslld $26,%ymm14,%ymm2
+ vmovdqu %ymm5,192-128(%rax)
+ vpaddd %ymm9,%ymm5,%ymm5
+
+ vpsrld $11,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm14,%ymm2
+ vpaddd 64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm14,%ymm2
+ vpandn %ymm8,%ymm14,%ymm0
+ vpand %ymm15,%ymm14,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm10,%ymm9
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm10,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm10,%ymm11,%ymm3
+
+ vpxor %ymm1,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm10,%ymm1
+
+ vpslld $19,%ymm10,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm9,%ymm7
+
+ vpsrld $22,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm10,%ymm2
+ vpxor %ymm4,%ymm11,%ymm9
+ vpaddd %ymm5,%ymm13,%ymm13
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm9,%ymm9
+ vmovdqu 256-256-128(%rbx),%ymm5
+ vpaddd 0-128(%rax),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 160-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm13,%ymm7
+ vpslld $26,%ymm13,%ymm2
+ vmovdqu %ymm6,224-128(%rax)
+ vpaddd %ymm8,%ymm6,%ymm6
+
+ vpsrld $11,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm13,%ymm2
+ vpaddd 96(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm13,%ymm2
+ vpandn %ymm15,%ymm13,%ymm0
+ vpand %ymm14,%ymm13,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm9,%ymm8
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm9,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm9,%ymm10,%ymm4
+
+ vpxor %ymm1,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm9,%ymm1
+
+ vpslld $19,%ymm9,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm8,%ymm7
+
+ vpsrld $22,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm9,%ymm2
+ vpxor %ymm3,%ymm10,%ymm8
+ vpaddd %ymm6,%ymm12,%ymm12
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm8,%ymm8
+ addq $256,%rbp
+ vmovdqu 288-256-128(%rbx),%ymm6
+ vpaddd 32-128(%rax),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 192-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm12,%ymm7
+ vpslld $26,%ymm12,%ymm2
+ vmovdqu %ymm5,256-256-128(%rbx)
+ vpaddd %ymm15,%ymm5,%ymm5
+
+ vpsrld $11,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm12,%ymm2
+ vpaddd -128(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm12,%ymm2
+ vpandn %ymm14,%ymm12,%ymm0
+ vpand %ymm13,%ymm12,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm8,%ymm15
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm8,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm8,%ymm9,%ymm3
+
+ vpxor %ymm1,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm8,%ymm1
+
+ vpslld $19,%ymm8,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm15,%ymm7
+
+ vpsrld $22,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm8,%ymm2
+ vpxor %ymm4,%ymm9,%ymm15
+ vpaddd %ymm5,%ymm11,%ymm11
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm15,%ymm15
+ vpaddd %ymm7,%ymm15,%ymm15
+ vmovdqu 320-256-128(%rbx),%ymm5
+ vpaddd 64-128(%rax),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 224-128(%rax),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm11,%ymm7
+ vpslld $26,%ymm11,%ymm2
+ vmovdqu %ymm6,288-256-128(%rbx)
+ vpaddd %ymm14,%ymm6,%ymm6
+
+ vpsrld $11,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm11,%ymm2
+ vpaddd -96(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm11,%ymm2
+ vpandn %ymm13,%ymm11,%ymm0
+ vpand %ymm12,%ymm11,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm15,%ymm14
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm15,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm15,%ymm8,%ymm4
+
+ vpxor %ymm1,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm15,%ymm1
+
+ vpslld $19,%ymm15,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm14,%ymm7
+
+ vpsrld $22,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm15,%ymm2
+ vpxor %ymm3,%ymm8,%ymm14
+ vpaddd %ymm6,%ymm10,%ymm10
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm14,%ymm14
+ vpaddd %ymm7,%ymm14,%ymm14
+ vmovdqu 352-256-128(%rbx),%ymm6
+ vpaddd 96-128(%rax),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 256-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm10,%ymm7
+ vpslld $26,%ymm10,%ymm2
+ vmovdqu %ymm5,320-256-128(%rbx)
+ vpaddd %ymm13,%ymm5,%ymm5
+
+ vpsrld $11,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm10,%ymm2
+ vpaddd -64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm10,%ymm2
+ vpandn %ymm12,%ymm10,%ymm0
+ vpand %ymm11,%ymm10,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm14,%ymm13
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm14,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm14,%ymm15,%ymm3
+
+ vpxor %ymm1,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm14,%ymm1
+
+ vpslld $19,%ymm14,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm13,%ymm7
+
+ vpsrld $22,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm14,%ymm2
+ vpxor %ymm4,%ymm15,%ymm13
+ vpaddd %ymm5,%ymm9,%ymm9
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm13,%ymm13
+ vpaddd %ymm7,%ymm13,%ymm13
+ vmovdqu 384-256-128(%rbx),%ymm5
+ vpaddd 128-128(%rax),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 288-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm9,%ymm7
+ vpslld $26,%ymm9,%ymm2
+ vmovdqu %ymm6,352-256-128(%rbx)
+ vpaddd %ymm12,%ymm6,%ymm6
+
+ vpsrld $11,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm9,%ymm2
+ vpaddd -32(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm9,%ymm2
+ vpandn %ymm11,%ymm9,%ymm0
+ vpand %ymm10,%ymm9,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm13,%ymm12
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm13,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm13,%ymm14,%ymm4
+
+ vpxor %ymm1,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm13,%ymm1
+
+ vpslld $19,%ymm13,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm12,%ymm7
+
+ vpsrld $22,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm13,%ymm2
+ vpxor %ymm3,%ymm14,%ymm12
+ vpaddd %ymm6,%ymm8,%ymm8
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm12,%ymm12
+ vpaddd %ymm7,%ymm12,%ymm12
+ vmovdqu 416-256-128(%rbx),%ymm6
+ vpaddd 160-128(%rax),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 320-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm8,%ymm7
+ vpslld $26,%ymm8,%ymm2
+ vmovdqu %ymm5,384-256-128(%rbx)
+ vpaddd %ymm11,%ymm5,%ymm5
+
+ vpsrld $11,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm8,%ymm2
+ vpaddd 0(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm8,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm8,%ymm2
+ vpandn %ymm10,%ymm8,%ymm0
+ vpand %ymm9,%ymm8,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm12,%ymm11
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm12,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm12,%ymm13,%ymm3
+
+ vpxor %ymm1,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm12,%ymm1
+
+ vpslld $19,%ymm12,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm11,%ymm7
+
+ vpsrld $22,%ymm12,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm12,%ymm2
+ vpxor %ymm4,%ymm13,%ymm11
+ vpaddd %ymm5,%ymm15,%ymm15
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm11,%ymm11
+ vpaddd %ymm7,%ymm11,%ymm11
+ vmovdqu 448-256-128(%rbx),%ymm5
+ vpaddd 192-128(%rax),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 352-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm15,%ymm7
+ vpslld $26,%ymm15,%ymm2
+ vmovdqu %ymm6,416-256-128(%rbx)
+ vpaddd %ymm10,%ymm6,%ymm6
+
+ vpsrld $11,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm15,%ymm2
+ vpaddd 32(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm15,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm15,%ymm2
+ vpandn %ymm9,%ymm15,%ymm0
+ vpand %ymm8,%ymm15,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm11,%ymm10
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm11,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm11,%ymm12,%ymm4
+
+ vpxor %ymm1,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm11,%ymm1
+
+ vpslld $19,%ymm11,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm10,%ymm7
+
+ vpsrld $22,%ymm11,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm11,%ymm2
+ vpxor %ymm3,%ymm12,%ymm10
+ vpaddd %ymm6,%ymm14,%ymm14
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm10,%ymm10
+ vpaddd %ymm7,%ymm10,%ymm10
+ vmovdqu 480-256-128(%rbx),%ymm6
+ vpaddd 224-128(%rax),%ymm5,%ymm5
+
+ vpsrld $3,%ymm6,%ymm7
+ vpsrld $7,%ymm6,%ymm1
+ vpslld $25,%ymm6,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm6,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm6,%ymm2
+ vmovdqu 384-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpxor %ymm1,%ymm3,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm5,%ymm5
+ vpsrld $6,%ymm14,%ymm7
+ vpslld $26,%ymm14,%ymm2
+ vmovdqu %ymm5,448-256-128(%rbx)
+ vpaddd %ymm9,%ymm5,%ymm5
+
+ vpsrld $11,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm14,%ymm2
+ vpaddd 64(%rbp),%ymm5,%ymm5
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm14,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm14,%ymm2
+ vpandn %ymm8,%ymm14,%ymm0
+ vpand %ymm15,%ymm14,%ymm3
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm10,%ymm9
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm10,%ymm1
+ vpxor %ymm3,%ymm0,%ymm0
+ vpxor %ymm10,%ymm11,%ymm3
+
+ vpxor %ymm1,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm5,%ymm5
+
+ vpsrld $13,%ymm10,%ymm1
+
+ vpslld $19,%ymm10,%ymm2
+ vpaddd %ymm0,%ymm5,%ymm5
+ vpand %ymm3,%ymm4,%ymm4
+
+ vpxor %ymm1,%ymm9,%ymm7
+
+ vpsrld $22,%ymm10,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm10,%ymm2
+ vpxor %ymm4,%ymm11,%ymm9
+ vpaddd %ymm5,%ymm13,%ymm13
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm5,%ymm9,%ymm9
+ vpaddd %ymm7,%ymm9,%ymm9
+ vmovdqu 0-128(%rax),%ymm5
+ vpaddd 256-256-128(%rbx),%ymm6,%ymm6
+
+ vpsrld $3,%ymm5,%ymm7
+ vpsrld $7,%ymm5,%ymm1
+ vpslld $25,%ymm5,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $18,%ymm5,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $14,%ymm5,%ymm2
+ vmovdqu 416-256-128(%rbx),%ymm0
+ vpsrld $10,%ymm0,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpsrld $17,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $15,%ymm0,%ymm2
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpxor %ymm1,%ymm4,%ymm7
+ vpsrld $19,%ymm0,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $13,%ymm0,%ymm2
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+ vpaddd %ymm7,%ymm6,%ymm6
+ vpsrld $6,%ymm13,%ymm7
+ vpslld $26,%ymm13,%ymm2
+ vmovdqu %ymm6,480-256-128(%rbx)
+ vpaddd %ymm8,%ymm6,%ymm6
+
+ vpsrld $11,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+ vpslld $21,%ymm13,%ymm2
+ vpaddd 96(%rbp),%ymm6,%ymm6
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $25,%ymm13,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $7,%ymm13,%ymm2
+ vpandn %ymm15,%ymm13,%ymm0
+ vpand %ymm14,%ymm13,%ymm4
+
+ vpxor %ymm1,%ymm7,%ymm7
+
+ vpsrld $2,%ymm9,%ymm8
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $30,%ymm9,%ymm1
+ vpxor %ymm4,%ymm0,%ymm0
+ vpxor %ymm9,%ymm10,%ymm4
+
+ vpxor %ymm1,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm6,%ymm6
+
+ vpsrld $13,%ymm9,%ymm1
+
+ vpslld $19,%ymm9,%ymm2
+ vpaddd %ymm0,%ymm6,%ymm6
+ vpand %ymm4,%ymm3,%ymm3
+
+ vpxor %ymm1,%ymm8,%ymm7
+
+ vpsrld $22,%ymm9,%ymm1
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpslld $10,%ymm9,%ymm2
+ vpxor %ymm3,%ymm10,%ymm8
+ vpaddd %ymm6,%ymm12,%ymm12
+
+ vpxor %ymm1,%ymm7,%ymm7
+ vpxor %ymm2,%ymm7,%ymm7
+
+ vpaddd %ymm6,%ymm8,%ymm8
+ vpaddd %ymm7,%ymm8,%ymm8
+ addq $256,%rbp
+ decl %ecx
+ jnz .Loop_16_xx_avx2
+
+ movl $1,%ecx
+ leaq 512(%rsp),%rbx
+ leaq K256+128(%rip),%rbp
+ cmpl 0(%rbx),%ecx
+ cmovgeq %rbp,%r12
+ cmpl 4(%rbx),%ecx
+ cmovgeq %rbp,%r13
+ cmpl 8(%rbx),%ecx
+ cmovgeq %rbp,%r14
+ cmpl 12(%rbx),%ecx
+ cmovgeq %rbp,%r15
+ cmpl 16(%rbx),%ecx
+ cmovgeq %rbp,%r8
+ cmpl 20(%rbx),%ecx
+ cmovgeq %rbp,%r9
+ cmpl 24(%rbx),%ecx
+ cmovgeq %rbp,%r10
+ cmpl 28(%rbx),%ecx
+ cmovgeq %rbp,%r11
+ vmovdqa (%rbx),%ymm7
+ vpxor %ymm0,%ymm0,%ymm0
+ vmovdqa %ymm7,%ymm6
+ vpcmpgtd %ymm0,%ymm6,%ymm6
+ vpaddd %ymm6,%ymm7,%ymm7
+
+ vmovdqu 0-128(%rdi),%ymm0
+ vpand %ymm6,%ymm8,%ymm8
+ vmovdqu 32-128(%rdi),%ymm1
+ vpand %ymm6,%ymm9,%ymm9
+ vmovdqu 64-128(%rdi),%ymm2
+ vpand %ymm6,%ymm10,%ymm10
+ vmovdqu 96-128(%rdi),%ymm5
+ vpand %ymm6,%ymm11,%ymm11
+ vpaddd %ymm0,%ymm8,%ymm8
+ vmovdqu 128-128(%rdi),%ymm0
+ vpand %ymm6,%ymm12,%ymm12
+ vpaddd %ymm1,%ymm9,%ymm9
+ vmovdqu 160-128(%rdi),%ymm1
+ vpand %ymm6,%ymm13,%ymm13
+ vpaddd %ymm2,%ymm10,%ymm10
+ vmovdqu 192-128(%rdi),%ymm2
+ vpand %ymm6,%ymm14,%ymm14
+ vpaddd %ymm5,%ymm11,%ymm11
+ vmovdqu 224-128(%rdi),%ymm5
+ vpand %ymm6,%ymm15,%ymm15
+ vpaddd %ymm0,%ymm12,%ymm12
+ vpaddd %ymm1,%ymm13,%ymm13
+ vmovdqu %ymm8,0-128(%rdi)
+ vpaddd %ymm2,%ymm14,%ymm14
+ vmovdqu %ymm9,32-128(%rdi)
+ vpaddd %ymm5,%ymm15,%ymm15
+ vmovdqu %ymm10,64-128(%rdi)
+ vmovdqu %ymm11,96-128(%rdi)
+ vmovdqu %ymm12,128-128(%rdi)
+ vmovdqu %ymm13,160-128(%rdi)
+ vmovdqu %ymm14,192-128(%rdi)
+ vmovdqu %ymm15,224-128(%rdi)
+
+ vmovdqu %ymm7,(%rbx)
+ leaq 256+128(%rsp),%rbx
+ vmovdqu .Lpbswap(%rip),%ymm6
+ decl %edx
+ jnz .Loop_avx2
+
+
+
+
+
+
+
+.Ldone_avx2:
+ movq 544(%rsp),%rax
+ vzeroupper
+ movq -48(%rax),%r15
+ movq -40(%rax),%r14
+ movq -32(%rax),%r13
+ movq -24(%rax),%r12
+ movq -16(%rax),%rbp
+ movq -8(%rax),%rbx
+ leaq (%rax),%rsp
+.Lepilogue_avx2:
+ .byte 0xf3,0xc3
+.size sha256_multi_block_avx2,.-sha256_multi_block_avx2
.align 256
K256:
.long 1116352408,1116352408,1116352408,1116352408
OpenPOWER on IntegriCloud