.text



.globl  sha1_multi_block
.type   sha1_multi_block,@function
.align  32
sha1_multi_block:
.cfi_startproc
        movq    OPENSSL_ia32cap_P+4(%rip),%rcx
        btq     $61,%rcx
        jc      _shaext_shortcut
        testl   $268435456,%ecx
        jnz     _avx_shortcut
        movq    %rsp,%rax
.cfi_def_cfa_register   %rax
        pushq   %rbx
.cfi_offset     %rbx,-16
        pushq   %rbp
.cfi_offset     %rbx,-24
        subq    $288,%rsp
        andq    $-256,%rsp
        movq    %rax,272(%rsp)
.cfi_escape     0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08
.Lbody:
        leaq    K_XX_XX(%rip),%rbp
        leaq    256(%rsp),%rbx

.Loop_grande:
        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

        movdqu  0(%rdi),%xmm10
        leaq    128(%rsp),%rax
        movdqu  32(%rdi),%xmm11
        movdqu  64(%rdi),%xmm12
        movdqu  96(%rdi),%xmm13
        movdqu  128(%rdi),%xmm14
        movdqa  96(%rbp),%xmm5
        movdqa  -32(%rbp),%xmm15
        jmp     .Loop

.align  32
.Loop:
        movd    (%r8),%xmm0
        leaq    64(%r8),%r8
        movd    (%r9),%xmm2
        leaq    64(%r9),%r9
        movd    (%r10),%xmm3
        leaq    64(%r10),%r10
        movd    (%r11),%xmm4
        leaq    64(%r11),%r11
        punpckldq       %xmm3,%xmm0
        movd    -60(%r8),%xmm1
        punpckldq       %xmm4,%xmm2
        movd    -60(%r9),%xmm9
        punpckldq       %xmm2,%xmm0
        movd    -60(%r10),%xmm8
.byte   102,15,56,0,197
        movd    -60(%r11),%xmm7
        punpckldq       %xmm8,%xmm1
        movdqa  %xmm10,%xmm8
        paddd   %xmm15,%xmm14
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm11,%xmm7
        movdqa  %xmm11,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm13,%xmm7
        pand    %xmm12,%xmm6
        punpckldq       %xmm9,%xmm1
        movdqa  %xmm10,%xmm9

        movdqa  %xmm0,0-128(%rax)
        paddd   %xmm0,%xmm14
        movd    -56(%r8),%xmm2
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm11,%xmm7

        por     %xmm9,%xmm8
        movd    -56(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
.byte   102,15,56,0,205
        movd    -56(%r10),%xmm8
        por     %xmm7,%xmm11
        movd    -56(%r11),%xmm7
        punpckldq       %xmm8,%xmm2
        movdqa  %xmm14,%xmm8
        paddd   %xmm15,%xmm13
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm10,%xmm7
        movdqa  %xmm10,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm12,%xmm7
        pand    %xmm11,%xmm6
        punpckldq       %xmm9,%xmm2
        movdqa  %xmm14,%xmm9

        movdqa  %xmm1,16-128(%rax)
        paddd   %xmm1,%xmm13
        movd    -52(%r8),%xmm3
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm10,%xmm7

        por     %xmm9,%xmm8
        movd    -52(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
.byte   102,15,56,0,213
        movd    -52(%r10),%xmm8
        por     %xmm7,%xmm10
        movd    -52(%r11),%xmm7
        punpckldq       %xmm8,%xmm3
        movdqa  %xmm13,%xmm8
        paddd   %xmm15,%xmm12
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm14,%xmm7
        movdqa  %xmm14,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm11,%xmm7
        pand    %xmm10,%xmm6
        punpckldq       %xmm9,%xmm3
        movdqa  %xmm13,%xmm9

        movdqa  %xmm2,32-128(%rax)
        paddd   %xmm2,%xmm12
        movd    -48(%r8),%xmm4
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm14,%xmm7

        por     %xmm9,%xmm8
        movd    -48(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
.byte   102,15,56,0,221
        movd    -48(%r10),%xmm8
        por     %xmm7,%xmm14
        movd    -48(%r11),%xmm7
        punpckldq       %xmm8,%xmm4
        movdqa  %xmm12,%xmm8
        paddd   %xmm15,%xmm11
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm13,%xmm7
        movdqa  %xmm13,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm10,%xmm7
        pand    %xmm14,%xmm6
        punpckldq       %xmm9,%xmm4
        movdqa  %xmm12,%xmm9

        movdqa  %xmm3,48-128(%rax)
        paddd   %xmm3,%xmm11
        movd    -44(%r8),%xmm0
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm13,%xmm7

        por     %xmm9,%xmm8
        movd    -44(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
.byte   102,15,56,0,229
        movd    -44(%r10),%xmm8
        por     %xmm7,%xmm13
        movd    -44(%r11),%xmm7
        punpckldq       %xmm8,%xmm0
        movdqa  %xmm11,%xmm8
        paddd   %xmm15,%xmm10
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm12,%xmm7
        movdqa  %xmm12,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm14,%xmm7
        pand    %xmm13,%xmm6
        punpckldq       %xmm9,%xmm0
        movdqa  %xmm11,%xmm9

        movdqa  %xmm4,64-128(%rax)
        paddd   %xmm4,%xmm10
        movd    -40(%r8),%xmm1
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm12,%xmm7

        por     %xmm9,%xmm8
        movd    -40(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
.byte   102,15,56,0,197
        movd    -40(%r10),%xmm8
        por     %xmm7,%xmm12
        movd    -40(%r11),%xmm7
        punpckldq       %xmm8,%xmm1
        movdqa  %xmm10,%xmm8
        paddd   %xmm15,%xmm14
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm11,%xmm7
        movdqa  %xmm11,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm13,%xmm7
        pand    %xmm12,%xmm6
        punpckldq       %xmm9,%xmm1
        movdqa  %xmm10,%xmm9

        movdqa  %xmm0,80-128(%rax)
        paddd   %xmm0,%xmm14
        movd    -36(%r8),%xmm2
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm11,%xmm7

        por     %xmm9,%xmm8
        movd    -36(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
.byte   102,15,56,0,205
        movd    -36(%r10),%xmm8
        por     %xmm7,%xmm11
        movd    -36(%r11),%xmm7
        punpckldq       %xmm8,%xmm2
        movdqa  %xmm14,%xmm8
        paddd   %xmm15,%xmm13
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm10,%xmm7
        movdqa  %xmm10,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm12,%xmm7
        pand    %xmm11,%xmm6
        punpckldq       %xmm9,%xmm2
        movdqa  %xmm14,%xmm9

        movdqa  %xmm1,96-128(%rax)
        paddd   %xmm1,%xmm13
        movd    -32(%r8),%xmm3
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm10,%xmm7

        por     %xmm9,%xmm8
        movd    -32(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
.byte   102,15,56,0,213
        movd    -32(%r10),%xmm8
        por     %xmm7,%xmm10
        movd    -32(%r11),%xmm7
        punpckldq       %xmm8,%xmm3
        movdqa  %xmm13,%xmm8
        paddd   %xmm15,%xmm12
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm14,%xmm7
        movdqa  %xmm14,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm11,%xmm7
        pand    %xmm10,%xmm6
        punpckldq       %xmm9,%xmm3
        movdqa  %xmm13,%xmm9

        movdqa  %xmm2,112-128(%rax)
        paddd   %xmm2,%xmm12
        movd    -28(%r8),%xmm4
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm14,%xmm7

        por     %xmm9,%xmm8
        movd    -28(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
.byte   102,15,56,0,221
        movd    -28(%r10),%xmm8
        por     %xmm7,%xmm14
        movd    -28(%r11),%xmm7
        punpckldq       %xmm8,%xmm4
        movdqa  %xmm12,%xmm8
        paddd   %xmm15,%xmm11
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm13,%xmm7
        movdqa  %xmm13,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm10,%xmm7
        pand    %xmm14,%xmm6
        punpckldq       %xmm9,%xmm4
        movdqa  %xmm12,%xmm9

        movdqa  %xmm3,128-128(%rax)
        paddd   %xmm3,%xmm11
        movd    -24(%r8),%xmm0
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm13,%xmm7

        por     %xmm9,%xmm8
        movd    -24(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
.byte   102,15,56,0,229
        movd    -24(%r10),%xmm8
        por     %xmm7,%xmm13
        movd    -24(%r11),%xmm7
        punpckldq       %xmm8,%xmm0
        movdqa  %xmm11,%xmm8
        paddd   %xmm15,%xmm10
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm12,%xmm7
        movdqa  %xmm12,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm14,%xmm7
        pand    %xmm13,%xmm6
        punpckldq       %xmm9,%xmm0
        movdqa  %xmm11,%xmm9

        movdqa  %xmm4,144-128(%rax)
        paddd   %xmm4,%xmm10
        movd    -20(%r8),%xmm1
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm12,%xmm7

        por     %xmm9,%xmm8
        movd    -20(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
.byte   102,15,56,0,197
        movd    -20(%r10),%xmm8
        por     %xmm7,%xmm12
        movd    -20(%r11),%xmm7
        punpckldq       %xmm8,%xmm1
        movdqa  %xmm10,%xmm8
        paddd   %xmm15,%xmm14
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm11,%xmm7
        movdqa  %xmm11,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm13,%xmm7
        pand    %xmm12,%xmm6
        punpckldq       %xmm9,%xmm1
        movdqa  %xmm10,%xmm9

        movdqa  %xmm0,160-128(%rax)
        paddd   %xmm0,%xmm14
        movd    -16(%r8),%xmm2
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm11,%xmm7

        por     %xmm9,%xmm8
        movd    -16(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
.byte   102,15,56,0,205
        movd    -16(%r10),%xmm8
        por     %xmm7,%xmm11
        movd    -16(%r11),%xmm7
        punpckldq       %xmm8,%xmm2
        movdqa  %xmm14,%xmm8
        paddd   %xmm15,%xmm13
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm10,%xmm7
        movdqa  %xmm10,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm12,%xmm7
        pand    %xmm11,%xmm6
        punpckldq       %xmm9,%xmm2
        movdqa  %xmm14,%xmm9

        movdqa  %xmm1,176-128(%rax)
        paddd   %xmm1,%xmm13
        movd    -12(%r8),%xmm3
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm10,%xmm7

        por     %xmm9,%xmm8
        movd    -12(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
.byte   102,15,56,0,213
        movd    -12(%r10),%xmm8
        por     %xmm7,%xmm10
        movd    -12(%r11),%xmm7
        punpckldq       %xmm8,%xmm3
        movdqa  %xmm13,%xmm8
        paddd   %xmm15,%xmm12
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm14,%xmm7
        movdqa  %xmm14,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm11,%xmm7
        pand    %xmm10,%xmm6
        punpckldq       %xmm9,%xmm3
        movdqa  %xmm13,%xmm9

        movdqa  %xmm2,192-128(%rax)
        paddd   %xmm2,%xmm12
        movd    -8(%r8),%xmm4
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm14,%xmm7

        por     %xmm9,%xmm8
        movd    -8(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
.byte   102,15,56,0,221
        movd    -8(%r10),%xmm8
        por     %xmm7,%xmm14
        movd    -8(%r11),%xmm7
        punpckldq       %xmm8,%xmm4
        movdqa  %xmm12,%xmm8
        paddd   %xmm15,%xmm11
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm13,%xmm7
        movdqa  %xmm13,%xmm6
        pslld   $5,%xmm8
        pandn   %xmm10,%xmm7
        pand    %xmm14,%xmm6
        punpckldq       %xmm9,%xmm4
        movdqa  %xmm12,%xmm9

        movdqa  %xmm3,208-128(%rax)
        paddd   %xmm3,%xmm11
        movd    -4(%r8),%xmm0
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm13,%xmm7

        por     %xmm9,%xmm8
        movd    -4(%r9),%xmm9
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
.byte   102,15,56,0,229
        movd    -4(%r10),%xmm8
        por     %xmm7,%xmm13
        movdqa  0-128(%rax),%xmm1
        movd    -4(%r11),%xmm7
        punpckldq       %xmm8,%xmm0
        movdqa  %xmm11,%xmm8
        paddd   %xmm15,%xmm10
        punpckldq       %xmm7,%xmm9
        movdqa  %xmm12,%xmm7
        movdqa  %xmm12,%xmm6
        pslld   $5,%xmm8
        prefetcht0      63(%r8)
        pandn   %xmm14,%xmm7
        pand    %xmm13,%xmm6
        punpckldq       %xmm9,%xmm0
        movdqa  %xmm11,%xmm9

        movdqa  %xmm4,224-128(%rax)
        paddd   %xmm4,%xmm10
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6
        movdqa  %xmm12,%xmm7
        prefetcht0      63(%r9)

        por     %xmm9,%xmm8
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm10
        prefetcht0      63(%r10)

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
.byte   102,15,56,0,197
        prefetcht0      63(%r11)
        por     %xmm7,%xmm12
        movdqa  16-128(%rax),%xmm2
        pxor    %xmm3,%xmm1
        movdqa  32-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        pxor    128-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        movdqa  %xmm11,%xmm7
        pslld   $5,%xmm8
        pxor    %xmm3,%xmm1
        movdqa  %xmm11,%xmm6
        pandn   %xmm13,%xmm7
        movdqa  %xmm1,%xmm5
        pand    %xmm12,%xmm6
        movdqa  %xmm10,%xmm9
        psrld   $31,%xmm5
        paddd   %xmm1,%xmm1

        movdqa  %xmm0,240-128(%rax)
        paddd   %xmm0,%xmm14
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6

        movdqa  %xmm11,%xmm7
        por     %xmm9,%xmm8
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  48-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        pxor    144-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        movdqa  %xmm10,%xmm7
        pslld   $5,%xmm8
        pxor    %xmm4,%xmm2
        movdqa  %xmm10,%xmm6
        pandn   %xmm12,%xmm7
        movdqa  %xmm2,%xmm5
        pand    %xmm11,%xmm6
        movdqa  %xmm14,%xmm9
        psrld   $31,%xmm5
        paddd   %xmm2,%xmm2

        movdqa  %xmm1,0-128(%rax)
        paddd   %xmm1,%xmm13
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6

        movdqa  %xmm10,%xmm7
        por     %xmm9,%xmm8
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  64-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        pxor    160-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        movdqa  %xmm14,%xmm7
        pslld   $5,%xmm8
        pxor    %xmm0,%xmm3
        movdqa  %xmm14,%xmm6
        pandn   %xmm11,%xmm7
        movdqa  %xmm3,%xmm5
        pand    %xmm10,%xmm6
        movdqa  %xmm13,%xmm9
        psrld   $31,%xmm5
        paddd   %xmm3,%xmm3

        movdqa  %xmm2,16-128(%rax)
        paddd   %xmm2,%xmm12
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6

        movdqa  %xmm14,%xmm7
        por     %xmm9,%xmm8
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  80-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        pxor    176-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        movdqa  %xmm13,%xmm7
        pslld   $5,%xmm8
        pxor    %xmm1,%xmm4
        movdqa  %xmm13,%xmm6
        pandn   %xmm10,%xmm7
        movdqa  %xmm4,%xmm5
        pand    %xmm14,%xmm6
        movdqa  %xmm12,%xmm9
        psrld   $31,%xmm5
        paddd   %xmm4,%xmm4

        movdqa  %xmm3,32-128(%rax)
        paddd   %xmm3,%xmm11
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6

        movdqa  %xmm13,%xmm7
        por     %xmm9,%xmm8
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  96-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        pxor    192-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        movdqa  %xmm12,%xmm7
        pslld   $5,%xmm8
        pxor    %xmm2,%xmm0
        movdqa  %xmm12,%xmm6
        pandn   %xmm14,%xmm7
        movdqa  %xmm0,%xmm5
        pand    %xmm13,%xmm6
        movdqa  %xmm11,%xmm9
        psrld   $31,%xmm5
        paddd   %xmm0,%xmm0

        movdqa  %xmm4,48-128(%rax)
        paddd   %xmm4,%xmm10
        psrld   $27,%xmm9
        pxor    %xmm7,%xmm6

        movdqa  %xmm12,%xmm7
        por     %xmm9,%xmm8
        pslld   $30,%xmm7
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        movdqa  0(%rbp),%xmm15
        pxor    %xmm3,%xmm1
        movdqa  112-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    208-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        movdqa  %xmm0,64-128(%rax)
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  128-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    224-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        movdqa  %xmm1,80-128(%rax)
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  144-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    240-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        movdqa  %xmm2,96-128(%rax)
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  160-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    0-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        movdqa  %xmm3,112-128(%rax)
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  176-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm6
        pxor    16-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        movdqa  %xmm4,128-128(%rax)
        paddd   %xmm4,%xmm10
        pxor    %xmm2,%xmm0
        psrld   $27,%xmm9
        pxor    %xmm13,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm0,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm10
        paddd   %xmm0,%xmm0

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  192-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    32-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        movdqa  %xmm0,144-128(%rax)
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  208-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    48-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        movdqa  %xmm1,160-128(%rax)
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  224-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    64-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        movdqa  %xmm2,176-128(%rax)
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  240-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    80-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        movdqa  %xmm3,192-128(%rax)
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  0-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm6
        pxor    96-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        movdqa  %xmm4,208-128(%rax)
        paddd   %xmm4,%xmm10
        pxor    %xmm2,%xmm0
        psrld   $27,%xmm9
        pxor    %xmm13,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm0,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm10
        paddd   %xmm0,%xmm0

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  16-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    112-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        movdqa  %xmm0,224-128(%rax)
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  32-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    128-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        movdqa  %xmm1,240-128(%rax)
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  48-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    144-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        movdqa  %xmm2,0-128(%rax)
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  64-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    160-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        movdqa  %xmm3,16-128(%rax)
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  80-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm6
        pxor    176-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        movdqa  %xmm4,32-128(%rax)
        paddd   %xmm4,%xmm10
        pxor    %xmm2,%xmm0
        psrld   $27,%xmm9
        pxor    %xmm13,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm0,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm10
        paddd   %xmm0,%xmm0

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  96-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    192-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        movdqa  %xmm0,48-128(%rax)
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  112-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    208-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        movdqa  %xmm1,64-128(%rax)
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  128-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    224-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        movdqa  %xmm2,80-128(%rax)
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  144-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    240-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        movdqa  %xmm3,96-128(%rax)
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  160-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm6
        pxor    0-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        movdqa  %xmm4,112-128(%rax)
        paddd   %xmm4,%xmm10
        pxor    %xmm2,%xmm0
        psrld   $27,%xmm9
        pxor    %xmm13,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm0,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm10
        paddd   %xmm0,%xmm0

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        movdqa  32(%rbp),%xmm15
        pxor    %xmm3,%xmm1
        movdqa  176-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm7
        pxor    16-128(%rax),%xmm1
        pxor    %xmm3,%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        movdqa  %xmm10,%xmm9
        pand    %xmm12,%xmm7

        movdqa  %xmm13,%xmm6
        movdqa  %xmm1,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm14
        pxor    %xmm12,%xmm6

        movdqa  %xmm0,128-128(%rax)
        paddd   %xmm0,%xmm14
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm11,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm1,%xmm1
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  192-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm7
        pxor    32-128(%rax),%xmm2
        pxor    %xmm4,%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        movdqa  %xmm14,%xmm9
        pand    %xmm11,%xmm7

        movdqa  %xmm12,%xmm6
        movdqa  %xmm2,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm13
        pxor    %xmm11,%xmm6

        movdqa  %xmm1,144-128(%rax)
        paddd   %xmm1,%xmm13
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm10,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm2,%xmm2
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  208-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm7
        pxor    48-128(%rax),%xmm3
        pxor    %xmm0,%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        movdqa  %xmm13,%xmm9
        pand    %xmm10,%xmm7

        movdqa  %xmm11,%xmm6
        movdqa  %xmm3,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm12
        pxor    %xmm10,%xmm6

        movdqa  %xmm2,160-128(%rax)
        paddd   %xmm2,%xmm12
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm14,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm3,%xmm3
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  224-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm7
        pxor    64-128(%rax),%xmm4
        pxor    %xmm1,%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        movdqa  %xmm12,%xmm9
        pand    %xmm14,%xmm7

        movdqa  %xmm10,%xmm6
        movdqa  %xmm4,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm11
        pxor    %xmm14,%xmm6

        movdqa  %xmm3,176-128(%rax)
        paddd   %xmm3,%xmm11
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm13,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm4,%xmm4
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  240-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm7
        pxor    80-128(%rax),%xmm0
        pxor    %xmm2,%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        movdqa  %xmm11,%xmm9
        pand    %xmm13,%xmm7

        movdqa  %xmm14,%xmm6
        movdqa  %xmm0,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm10
        pxor    %xmm13,%xmm6

        movdqa  %xmm4,192-128(%rax)
        paddd   %xmm4,%xmm10
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm12,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm0,%xmm0
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  0-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm7
        pxor    96-128(%rax),%xmm1
        pxor    %xmm3,%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        movdqa  %xmm10,%xmm9
        pand    %xmm12,%xmm7

        movdqa  %xmm13,%xmm6
        movdqa  %xmm1,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm14
        pxor    %xmm12,%xmm6

        movdqa  %xmm0,208-128(%rax)
        paddd   %xmm0,%xmm14
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm11,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm1,%xmm1
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  16-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm7
        pxor    112-128(%rax),%xmm2
        pxor    %xmm4,%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        movdqa  %xmm14,%xmm9
        pand    %xmm11,%xmm7

        movdqa  %xmm12,%xmm6
        movdqa  %xmm2,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm13
        pxor    %xmm11,%xmm6

        movdqa  %xmm1,224-128(%rax)
        paddd   %xmm1,%xmm13
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm10,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm2,%xmm2
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  32-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm7
        pxor    128-128(%rax),%xmm3
        pxor    %xmm0,%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        movdqa  %xmm13,%xmm9
        pand    %xmm10,%xmm7

        movdqa  %xmm11,%xmm6
        movdqa  %xmm3,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm12
        pxor    %xmm10,%xmm6

        movdqa  %xmm2,240-128(%rax)
        paddd   %xmm2,%xmm12
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm14,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm3,%xmm3
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  48-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm7
        pxor    144-128(%rax),%xmm4
        pxor    %xmm1,%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        movdqa  %xmm12,%xmm9
        pand    %xmm14,%xmm7

        movdqa  %xmm10,%xmm6
        movdqa  %xmm4,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm11
        pxor    %xmm14,%xmm6

        movdqa  %xmm3,0-128(%rax)
        paddd   %xmm3,%xmm11
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm13,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm4,%xmm4
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  64-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm7
        pxor    160-128(%rax),%xmm0
        pxor    %xmm2,%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        movdqa  %xmm11,%xmm9
        pand    %xmm13,%xmm7

        movdqa  %xmm14,%xmm6
        movdqa  %xmm0,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm10
        pxor    %xmm13,%xmm6

        movdqa  %xmm4,16-128(%rax)
        paddd   %xmm4,%xmm10
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm12,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm0,%xmm0
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  80-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm7
        pxor    176-128(%rax),%xmm1
        pxor    %xmm3,%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        movdqa  %xmm10,%xmm9
        pand    %xmm12,%xmm7

        movdqa  %xmm13,%xmm6
        movdqa  %xmm1,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm14
        pxor    %xmm12,%xmm6

        movdqa  %xmm0,32-128(%rax)
        paddd   %xmm0,%xmm14
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm11,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm1,%xmm1
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  96-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm7
        pxor    192-128(%rax),%xmm2
        pxor    %xmm4,%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        movdqa  %xmm14,%xmm9
        pand    %xmm11,%xmm7

        movdqa  %xmm12,%xmm6
        movdqa  %xmm2,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm13
        pxor    %xmm11,%xmm6

        movdqa  %xmm1,48-128(%rax)
        paddd   %xmm1,%xmm13
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm10,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm2,%xmm2
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  112-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm7
        pxor    208-128(%rax),%xmm3
        pxor    %xmm0,%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        movdqa  %xmm13,%xmm9
        pand    %xmm10,%xmm7

        movdqa  %xmm11,%xmm6
        movdqa  %xmm3,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm12
        pxor    %xmm10,%xmm6

        movdqa  %xmm2,64-128(%rax)
        paddd   %xmm2,%xmm12
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm14,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm3,%xmm3
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  128-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm7
        pxor    224-128(%rax),%xmm4
        pxor    %xmm1,%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        movdqa  %xmm12,%xmm9
        pand    %xmm14,%xmm7

        movdqa  %xmm10,%xmm6
        movdqa  %xmm4,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm11
        pxor    %xmm14,%xmm6

        movdqa  %xmm3,80-128(%rax)
        paddd   %xmm3,%xmm11
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm13,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm4,%xmm4
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  144-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm7
        pxor    240-128(%rax),%xmm0
        pxor    %xmm2,%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        movdqa  %xmm11,%xmm9
        pand    %xmm13,%xmm7

        movdqa  %xmm14,%xmm6
        movdqa  %xmm0,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm10
        pxor    %xmm13,%xmm6

        movdqa  %xmm4,96-128(%rax)
        paddd   %xmm4,%xmm10
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm12,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm0,%xmm0
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  160-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm7
        pxor    0-128(%rax),%xmm1
        pxor    %xmm3,%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        movdqa  %xmm10,%xmm9
        pand    %xmm12,%xmm7

        movdqa  %xmm13,%xmm6
        movdqa  %xmm1,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm14
        pxor    %xmm12,%xmm6

        movdqa  %xmm0,112-128(%rax)
        paddd   %xmm0,%xmm14
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm11,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm1,%xmm1
        paddd   %xmm6,%xmm14

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  176-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm7
        pxor    16-128(%rax),%xmm2
        pxor    %xmm4,%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        movdqa  %xmm14,%xmm9
        pand    %xmm11,%xmm7

        movdqa  %xmm12,%xmm6
        movdqa  %xmm2,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm13
        pxor    %xmm11,%xmm6

        movdqa  %xmm1,128-128(%rax)
        paddd   %xmm1,%xmm13
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm10,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm2,%xmm2
        paddd   %xmm6,%xmm13

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  192-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm7
        pxor    32-128(%rax),%xmm3
        pxor    %xmm0,%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        movdqa  %xmm13,%xmm9
        pand    %xmm10,%xmm7

        movdqa  %xmm11,%xmm6
        movdqa  %xmm3,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm12
        pxor    %xmm10,%xmm6

        movdqa  %xmm2,144-128(%rax)
        paddd   %xmm2,%xmm12
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm14,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm3,%xmm3
        paddd   %xmm6,%xmm12

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  208-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm7
        pxor    48-128(%rax),%xmm4
        pxor    %xmm1,%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        movdqa  %xmm12,%xmm9
        pand    %xmm14,%xmm7

        movdqa  %xmm10,%xmm6
        movdqa  %xmm4,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm11
        pxor    %xmm14,%xmm6

        movdqa  %xmm3,160-128(%rax)
        paddd   %xmm3,%xmm11
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm13,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm4,%xmm4
        paddd   %xmm6,%xmm11

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  224-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm7
        pxor    64-128(%rax),%xmm0
        pxor    %xmm2,%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        movdqa  %xmm11,%xmm9
        pand    %xmm13,%xmm7

        movdqa  %xmm14,%xmm6
        movdqa  %xmm0,%xmm5
        psrld   $27,%xmm9
        paddd   %xmm7,%xmm10
        pxor    %xmm13,%xmm6

        movdqa  %xmm4,176-128(%rax)
        paddd   %xmm4,%xmm10
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        pand    %xmm12,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        paddd   %xmm0,%xmm0
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        movdqa  64(%rbp),%xmm15
        pxor    %xmm3,%xmm1
        movdqa  240-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    80-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        movdqa  %xmm0,192-128(%rax)
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  0-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    96-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        movdqa  %xmm1,208-128(%rax)
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  16-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    112-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        movdqa  %xmm2,224-128(%rax)
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  32-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    128-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        movdqa  %xmm3,240-128(%rax)
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  48-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm6
        pxor    144-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        movdqa  %xmm4,0-128(%rax)
        paddd   %xmm4,%xmm10
        pxor    %xmm2,%xmm0
        psrld   $27,%xmm9
        pxor    %xmm13,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm0,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm10
        paddd   %xmm0,%xmm0

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  64-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    160-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        movdqa  %xmm0,16-128(%rax)
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  80-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    176-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        movdqa  %xmm1,32-128(%rax)
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  96-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    192-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        movdqa  %xmm2,48-128(%rax)
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  112-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    208-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        movdqa  %xmm3,64-128(%rax)
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  128-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm6
        pxor    224-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        movdqa  %xmm4,80-128(%rax)
        paddd   %xmm4,%xmm10
        pxor    %xmm2,%xmm0
        psrld   $27,%xmm9
        pxor    %xmm13,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm0,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm10
        paddd   %xmm0,%xmm0

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  144-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    240-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        movdqa  %xmm0,96-128(%rax)
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  160-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    0-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        movdqa  %xmm1,112-128(%rax)
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  176-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    16-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  192-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    32-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        pxor    %xmm2,%xmm0
        movdqa  208-128(%rax),%xmm2

        movdqa  %xmm11,%xmm8
        movdqa  %xmm14,%xmm6
        pxor    48-128(%rax),%xmm0
        paddd   %xmm15,%xmm10
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        paddd   %xmm4,%xmm10
        pxor    %xmm2,%xmm0
        psrld   $27,%xmm9
        pxor    %xmm13,%xmm6
        movdqa  %xmm12,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm0,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm10
        paddd   %xmm0,%xmm0

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm5,%xmm0
        por     %xmm7,%xmm12
        pxor    %xmm3,%xmm1
        movdqa  224-128(%rax),%xmm3

        movdqa  %xmm10,%xmm8
        movdqa  %xmm13,%xmm6
        pxor    64-128(%rax),%xmm1
        paddd   %xmm15,%xmm14
        pslld   $5,%xmm8
        pxor    %xmm11,%xmm6

        movdqa  %xmm10,%xmm9
        paddd   %xmm0,%xmm14
        pxor    %xmm3,%xmm1
        psrld   $27,%xmm9
        pxor    %xmm12,%xmm6
        movdqa  %xmm11,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm1,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm14
        paddd   %xmm1,%xmm1

        psrld   $2,%xmm11
        paddd   %xmm8,%xmm14
        por     %xmm5,%xmm1
        por     %xmm7,%xmm11
        pxor    %xmm4,%xmm2
        movdqa  240-128(%rax),%xmm4

        movdqa  %xmm14,%xmm8
        movdqa  %xmm12,%xmm6
        pxor    80-128(%rax),%xmm2
        paddd   %xmm15,%xmm13
        pslld   $5,%xmm8
        pxor    %xmm10,%xmm6

        movdqa  %xmm14,%xmm9
        paddd   %xmm1,%xmm13
        pxor    %xmm4,%xmm2
        psrld   $27,%xmm9
        pxor    %xmm11,%xmm6
        movdqa  %xmm10,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm2,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm13
        paddd   %xmm2,%xmm2

        psrld   $2,%xmm10
        paddd   %xmm8,%xmm13
        por     %xmm5,%xmm2
        por     %xmm7,%xmm10
        pxor    %xmm0,%xmm3
        movdqa  0-128(%rax),%xmm0

        movdqa  %xmm13,%xmm8
        movdqa  %xmm11,%xmm6
        pxor    96-128(%rax),%xmm3
        paddd   %xmm15,%xmm12
        pslld   $5,%xmm8
        pxor    %xmm14,%xmm6

        movdqa  %xmm13,%xmm9
        paddd   %xmm2,%xmm12
        pxor    %xmm0,%xmm3
        psrld   $27,%xmm9
        pxor    %xmm10,%xmm6
        movdqa  %xmm14,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm3,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm12
        paddd   %xmm3,%xmm3

        psrld   $2,%xmm14
        paddd   %xmm8,%xmm12
        por     %xmm5,%xmm3
        por     %xmm7,%xmm14
        pxor    %xmm1,%xmm4
        movdqa  16-128(%rax),%xmm1

        movdqa  %xmm12,%xmm8
        movdqa  %xmm10,%xmm6
        pxor    112-128(%rax),%xmm4
        paddd   %xmm15,%xmm11
        pslld   $5,%xmm8
        pxor    %xmm13,%xmm6

        movdqa  %xmm12,%xmm9
        paddd   %xmm3,%xmm11
        pxor    %xmm1,%xmm4
        psrld   $27,%xmm9
        pxor    %xmm14,%xmm6
        movdqa  %xmm13,%xmm7

        pslld   $30,%xmm7
        movdqa  %xmm4,%xmm5
        por     %xmm9,%xmm8
        psrld   $31,%xmm5
        paddd   %xmm6,%xmm11
        paddd   %xmm4,%xmm4

        psrld   $2,%xmm13
        paddd   %xmm8,%xmm11
        por     %xmm5,%xmm4
        por     %xmm7,%xmm13
        movdqa  %xmm11,%xmm8
        paddd   %xmm15,%xmm10
        movdqa  %xmm14,%xmm6
        pslld   $5,%xmm8
        pxor    %xmm12,%xmm6

        movdqa  %xmm11,%xmm9
        paddd   %xmm4,%xmm10
        psrld   $27,%xmm9
        movdqa  %xmm12,%xmm7
        pxor    %xmm13,%xmm6

        pslld   $30,%xmm7
        por     %xmm9,%xmm8
        paddd   %xmm6,%xmm10

        psrld   $2,%xmm12
        paddd   %xmm8,%xmm10
        por     %xmm7,%xmm12
        movdqa  (%rbx),%xmm0
        movl    $1,%ecx
        cmpl    0(%rbx),%ecx
        pxor    %xmm8,%xmm8
        cmovgeq %rbp,%r8
        cmpl    4(%rbx),%ecx
        movdqa  %xmm0,%xmm1
        cmovgeq %rbp,%r9
        cmpl    8(%rbx),%ecx
        pcmpgtd %xmm8,%xmm1
        cmovgeq %rbp,%r10
        cmpl    12(%rbx),%ecx
        paddd   %xmm1,%xmm0
        cmovgeq %rbp,%r11

        movdqu  0(%rdi),%xmm6
        pand    %xmm1,%xmm10
        movdqu  32(%rdi),%xmm7
        pand    %xmm1,%xmm11
        paddd   %xmm6,%xmm10
        movdqu  64(%rdi),%xmm8
        pand    %xmm1,%xmm12
        paddd   %xmm7,%xmm11
        movdqu  96(%rdi),%xmm9
        pand    %xmm1,%xmm13
        paddd   %xmm8,%xmm12
        movdqu  128(%rdi),%xmm5
        pand    %xmm1,%xmm14
        movdqu  %xmm10,0(%rdi)
        paddd   %xmm9,%xmm13
        movdqu  %xmm11,32(%rdi)
        paddd   %xmm5,%xmm14
        movdqu  %xmm12,64(%rdi)
        movdqu  %xmm13,96(%rdi)
        movdqu  %xmm14,128(%rdi)

        movdqa  %xmm0,(%rbx)
        movdqa  96(%rbp),%xmm5
        movdqa  -32(%rbp),%xmm15
        decl    %edx
        jnz     .Loop

        movl    280(%rsp),%edx
        leaq    16(%rdi),%rdi
        leaq    64(%rsi),%rsi
        decl    %edx
        jnz     .Loop_grande

.Ldone:
        movq    272(%rsp),%rax
.cfi_def_cfa    %rax,8
        movq    -16(%rax),%rbp
.cfi_restore    %rbp
        movq    -8(%rax),%rbx
.cfi_restore    %rbx
        leaq    (%rax),%rsp
.cfi_def_cfa_register   %rsp
.Lepilogue:
        .byte   0xf3,0xc3
.cfi_endproc
.size   sha1_multi_block,.-sha1_multi_block
.type   sha1_multi_block_shaext,@function
.align  32
sha1_multi_block_shaext:
.cfi_startproc
_shaext_shortcut:
        movq    %rsp,%rax
.cfi_def_cfa_register   %rax
        pushq   %rbx
.cfi_offset     %rbx,-16
        pushq   %rbp
.cfi_offset     %rbp,-24
        subq    $288,%rsp
        shll    $1,%edx
        andq    $-256,%rsp
        leaq    64(%rdi),%rdi
        movq    %rax,272(%rsp)
.Lbody_shaext:
        leaq    256(%rsp),%rbx
        movdqa  K_XX_XX+128(%rip),%xmm3

.Loop_grande_shaext:
        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 %rsp,%r8

        movq    16(%rsi),%r9

        movl    24(%rsi),%ecx
        cmpl    %edx,%ecx
        cmovgl  %ecx,%edx
        testl   %ecx,%ecx
        movl    %ecx,4(%rbx)
        cmovleq %rsp,%r9
        testl   %edx,%edx
        jz      .Ldone_shaext

        movq    0-64(%rdi),%xmm0
        movq    32-64(%rdi),%xmm4
        movq    64-64(%rdi),%xmm5
        movq    96-64(%rdi),%xmm6
        movq    128-64(%rdi),%xmm7

        punpckldq       %xmm4,%xmm0
        punpckldq       %xmm6,%xmm5

        movdqa  %xmm0,%xmm8
        punpcklqdq      %xmm5,%xmm0
        punpckhqdq      %xmm5,%xmm8

        pshufd  $63,%xmm7,%xmm1
        pshufd  $127,%xmm7,%xmm9
        pshufd  $27,%xmm0,%xmm0
        pshufd  $27,%xmm8,%xmm8
        jmp     .Loop_shaext

.align  32
.Loop_shaext:
        movdqu  0(%r8),%xmm4
        movdqu  0(%r9),%xmm11
        movdqu  16(%r8),%xmm5
        movdqu  16(%r9),%xmm12
        movdqu  32(%r8),%xmm6
.byte   102,15,56,0,227
        movdqu  32(%r9),%xmm13
.byte   102,68,15,56,0,219
        movdqu  48(%r8),%xmm7
        leaq    64(%r8),%r8
.byte   102,15,56,0,235
        movdqu  48(%r9),%xmm14
        leaq    64(%r9),%r9
.byte   102,68,15,56,0,227

        movdqa  %xmm1,80(%rsp)
        paddd   %xmm4,%xmm1
        movdqa  %xmm9,112(%rsp)
        paddd   %xmm11,%xmm9
        movdqa  %xmm0,64(%rsp)
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,96(%rsp)
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,0
.byte   15,56,200,213
.byte   69,15,58,204,193,0
.byte   69,15,56,200,212
.byte   102,15,56,0,243
        prefetcht0      127(%r8)
.byte   15,56,201,229
.byte   102,68,15,56,0,235
        prefetcht0      127(%r9)
.byte   69,15,56,201,220

.byte   102,15,56,0,251
        movdqa  %xmm0,%xmm1
.byte   102,68,15,56,0,243
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,0
.byte   15,56,200,206
.byte   69,15,58,204,194,0
.byte   69,15,56,200,205
        pxor    %xmm6,%xmm4
.byte   15,56,201,238
        pxor    %xmm13,%xmm11
.byte   69,15,56,201,229
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,0
.byte   15,56,200,215
.byte   69,15,58,204,193,0
.byte   69,15,56,200,214
.byte   15,56,202,231
.byte   69,15,56,202,222
        pxor    %xmm7,%xmm5
.byte   15,56,201,247
        pxor    %xmm14,%xmm12
.byte   69,15,56,201,238
        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,0
.byte   15,56,200,204
.byte   69,15,58,204,194,0
.byte   69,15,56,200,203
.byte   15,56,202,236
.byte   69,15,56,202,227
        pxor    %xmm4,%xmm6
.byte   15,56,201,252
        pxor    %xmm11,%xmm13
.byte   69,15,56,201,243
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,0
.byte   15,56,200,213
.byte   69,15,58,204,193,0
.byte   69,15,56,200,212
.byte   15,56,202,245
.byte   69,15,56,202,236
        pxor    %xmm5,%xmm7
.byte   15,56,201,229
        pxor    %xmm12,%xmm14
.byte   69,15,56,201,220
        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,1
.byte   15,56,200,206
.byte   69,15,58,204,194,1
.byte   69,15,56,200,205
.byte   15,56,202,254
.byte   69,15,56,202,245
        pxor    %xmm6,%xmm4
.byte   15,56,201,238
        pxor    %xmm13,%xmm11
.byte   69,15,56,201,229
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,1
.byte   15,56,200,215
.byte   69,15,58,204,193,1
.byte   69,15,56,200,214
.byte   15,56,202,231
.byte   69,15,56,202,222
        pxor    %xmm7,%xmm5
.byte   15,56,201,247
        pxor    %xmm14,%xmm12
.byte   69,15,56,201,238
        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,1
.byte   15,56,200,204
.byte   69,15,58,204,194,1
.byte   69,15,56,200,203
.byte   15,56,202,236
.byte   69,15,56,202,227
        pxor    %xmm4,%xmm6
.byte   15,56,201,252
        pxor    %xmm11,%xmm13
.byte   69,15,56,201,243
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,1
.byte   15,56,200,213
.byte   69,15,58,204,193,1
.byte   69,15,56,200,212
.byte   15,56,202,245
.byte   69,15,56,202,236
        pxor    %xmm5,%xmm7
.byte   15,56,201,229
        pxor    %xmm12,%xmm14
.byte   69,15,56,201,220
        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,1
.byte   15,56,200,206
.byte   69,15,58,204,194,1
.byte   69,15,56,200,205
.byte   15,56,202,254
.byte   69,15,56,202,245
        pxor    %xmm6,%xmm4
.byte   15,56,201,238
        pxor    %xmm13,%xmm11
.byte   69,15,56,201,229
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,2
.byte   15,56,200,215
.byte   69,15,58,204,193,2
.byte   69,15,56,200,214
.byte   15,56,202,231
.byte   69,15,56,202,222
        pxor    %xmm7,%xmm5
.byte   15,56,201,247
        pxor    %xmm14,%xmm12
.byte   69,15,56,201,238
        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,2
.byte   15,56,200,204
.byte   69,15,58,204,194,2
.byte   69,15,56,200,203
.byte   15,56,202,236
.byte   69,15,56,202,227
        pxor    %xmm4,%xmm6
.byte   15,56,201,252
        pxor    %xmm11,%xmm13
.byte   69,15,56,201,243
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,2
.byte   15,56,200,213
.byte   69,15,58,204,193,2
.byte   69,15,56,200,212
.byte   15,56,202,245
.byte   69,15,56,202,236
        pxor    %xmm5,%xmm7
.byte   15,56,201,229
        pxor    %xmm12,%xmm14
.byte   69,15,56,201,220
        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,2
.byte   15,56,200,206
.byte   69,15,58,204,194,2
.byte   69,15,56,200,205
.byte   15,56,202,254
.byte   69,15,56,202,245
        pxor    %xmm6,%xmm4
.byte   15,56,201,238
        pxor    %xmm13,%xmm11
.byte   69,15,56,201,229
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,2
.byte   15,56,200,215
.byte   69,15,58,204,193,2
.byte   69,15,56,200,214
.byte   15,56,202,231
.byte   69,15,56,202,222
        pxor    %xmm7,%xmm5
.byte   15,56,201,247
        pxor    %xmm14,%xmm12
.byte   69,15,56,201,238
        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,3
.byte   15,56,200,204
.byte   69,15,58,204,194,3
.byte   69,15,56,200,203
.byte   15,56,202,236
.byte   69,15,56,202,227
        pxor    %xmm4,%xmm6
.byte   15,56,201,252
        pxor    %xmm11,%xmm13
.byte   69,15,56,201,243
        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,3
.byte   15,56,200,213
.byte   69,15,58,204,193,3
.byte   69,15,56,200,212
.byte   15,56,202,245
.byte   69,15,56,202,236
        pxor    %xmm5,%xmm7
        pxor    %xmm12,%xmm14

        movl    $1,%ecx
        pxor    %xmm4,%xmm4
        cmpl    0(%rbx),%ecx
        cmovgeq %rsp,%r8

        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,3
.byte   15,56,200,206
.byte   69,15,58,204,194,3
.byte   69,15,56,200,205
.byte   15,56,202,254
.byte   69,15,56,202,245

        cmpl    4(%rbx),%ecx
        cmovgeq %rsp,%r9
        movq    (%rbx),%xmm6

        movdqa  %xmm0,%xmm2
        movdqa  %xmm8,%xmm10
.byte   15,58,204,193,3
.byte   15,56,200,215
.byte   69,15,58,204,193,3
.byte   69,15,56,200,214

        pshufd  $0x00,%xmm6,%xmm11
        pshufd  $0x55,%xmm6,%xmm12
        movdqa  %xmm6,%xmm7
        pcmpgtd %xmm4,%xmm11
        pcmpgtd %xmm4,%xmm12

        movdqa  %xmm0,%xmm1
        movdqa  %xmm8,%xmm9
.byte   15,58,204,194,3
.byte   15,56,200,204
.byte   69,15,58,204,194,3
.byte   68,15,56,200,204

        pcmpgtd %xmm4,%xmm7
        pand    %xmm11,%xmm0
        pand    %xmm11,%xmm1
        pand    %xmm12,%xmm8
        pand    %xmm12,%xmm9
        paddd   %xmm7,%xmm6

        paddd   64(%rsp),%xmm0
        paddd   80(%rsp),%xmm1
        paddd   96(%rsp),%xmm8
        paddd   112(%rsp),%xmm9

        movq    %xmm6,(%rbx)
        decl    %edx
        jnz     .Loop_shaext

        movl    280(%rsp),%edx

        pshufd  $27,%xmm0,%xmm0
        pshufd  $27,%xmm8,%xmm8

        movdqa  %xmm0,%xmm6
        punpckldq       %xmm8,%xmm0
        punpckhdq       %xmm8,%xmm6
        punpckhdq       %xmm9,%xmm1
        movq    %xmm0,0-64(%rdi)
        psrldq  $8,%xmm0
        movq    %xmm6,64-64(%rdi)
        psrldq  $8,%xmm6
        movq    %xmm0,32-64(%rdi)
        psrldq  $8,%xmm1
        movq    %xmm6,96-64(%rdi)
        movq    %xmm1,128-64(%rdi)

        leaq    8(%rdi),%rdi
        leaq    32(%rsi),%rsi
        decl    %edx
        jnz     .Loop_grande_shaext

.Ldone_shaext:

        movq    -16(%rax),%rbp
.cfi_restore    %rbp
        movq    -8(%rax),%rbx
.cfi_restore    %rbx
        leaq    (%rax),%rsp
.cfi_def_cfa_register   %rsp
.Lepilogue_shaext:
        .byte   0xf3,0xc3
.cfi_endproc
.size   sha1_multi_block_shaext,.-sha1_multi_block_shaext
.type   sha1_multi_block_avx,@function
.align  32
sha1_multi_block_avx:
.cfi_startproc
_avx_shortcut:
        shrq    $32,%rcx
        cmpl    $2,%edx
        jb      .Lavx
        testl   $32,%ecx
        jnz     _avx2_shortcut
        jmp     .Lavx
.align  32
.Lavx:
        movq    %rsp,%rax
.cfi_def_cfa_register   %rax
        pushq   %rbx
.cfi_offset     %rbx,-16
        pushq   %rbp
.cfi_offset     %rbp,-24
        subq    $288,%rsp
        andq    $-256,%rsp
        movq    %rax,272(%rsp)
.cfi_escape     0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08
.Lbody_avx:
        leaq    K_XX_XX(%rip),%rbp
        leaq    256(%rsp),%rbx

        vzeroupper
.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(%rdi),%xmm10
        leaq    128(%rsp),%rax
        vmovdqu 32(%rdi),%xmm11
        vmovdqu 64(%rdi),%xmm12
        vmovdqu 96(%rdi),%xmm13
        vmovdqu 128(%rdi),%xmm14
        vmovdqu 96(%rbp),%xmm5
        jmp     .Loop_avx

.align  32
.Loop_avx:
        vmovdqa -32(%rbp),%xmm15
        vmovd   (%r8),%xmm0
        leaq    64(%r8),%r8
        vmovd   (%r9),%xmm2
        leaq    64(%r9),%r9
        vpinsrd $1,(%r10),%xmm0,%xmm0
        leaq    64(%r10),%r10
        vpinsrd $1,(%r11),%xmm2,%xmm2
        leaq    64(%r11),%r11
        vmovd   -60(%r8),%xmm1
        vpunpckldq      %xmm2,%xmm0,%xmm0
        vmovd   -60(%r9),%xmm9
        vpshufb %xmm5,%xmm0,%xmm0
        vpinsrd $1,-60(%r10),%xmm1,%xmm1
        vpinsrd $1,-60(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpandn  %xmm13,%xmm11,%xmm7
        vpand   %xmm12,%xmm11,%xmm6

        vmovdqa %xmm0,0-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpunpckldq      %xmm9,%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -56(%r8),%xmm2

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -56(%r9),%xmm9
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpshufb %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpinsrd $1,-56(%r10),%xmm2,%xmm2
        vpinsrd $1,-56(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpandn  %xmm12,%xmm10,%xmm7
        vpand   %xmm11,%xmm10,%xmm6

        vmovdqa %xmm1,16-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpunpckldq      %xmm9,%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -52(%r8),%xmm3

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -52(%r9),%xmm9
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpshufb %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpinsrd $1,-52(%r10),%xmm3,%xmm3
        vpinsrd $1,-52(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpandn  %xmm11,%xmm14,%xmm7
        vpand   %xmm10,%xmm14,%xmm6

        vmovdqa %xmm2,32-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpunpckldq      %xmm9,%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -48(%r8),%xmm4

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -48(%r9),%xmm9
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpshufb %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpinsrd $1,-48(%r10),%xmm4,%xmm4
        vpinsrd $1,-48(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpandn  %xmm10,%xmm13,%xmm7
        vpand   %xmm14,%xmm13,%xmm6

        vmovdqa %xmm3,48-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpunpckldq      %xmm9,%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -44(%r8),%xmm0

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -44(%r9),%xmm9
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpshufb %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpinsrd $1,-44(%r10),%xmm0,%xmm0
        vpinsrd $1,-44(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm10,%xmm10
        vpslld  $5,%xmm11,%xmm8
        vpandn  %xmm14,%xmm12,%xmm7
        vpand   %xmm13,%xmm12,%xmm6

        vmovdqa %xmm4,64-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpunpckldq      %xmm9,%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -40(%r8),%xmm1

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -40(%r9),%xmm9
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpshufb %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpinsrd $1,-40(%r10),%xmm1,%xmm1
        vpinsrd $1,-40(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpandn  %xmm13,%xmm11,%xmm7
        vpand   %xmm12,%xmm11,%xmm6

        vmovdqa %xmm0,80-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpunpckldq      %xmm9,%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -36(%r8),%xmm2

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -36(%r9),%xmm9
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpshufb %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpinsrd $1,-36(%r10),%xmm2,%xmm2
        vpinsrd $1,-36(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpandn  %xmm12,%xmm10,%xmm7
        vpand   %xmm11,%xmm10,%xmm6

        vmovdqa %xmm1,96-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpunpckldq      %xmm9,%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -32(%r8),%xmm3

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -32(%r9),%xmm9
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpshufb %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpinsrd $1,-32(%r10),%xmm3,%xmm3
        vpinsrd $1,-32(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpandn  %xmm11,%xmm14,%xmm7
        vpand   %xmm10,%xmm14,%xmm6

        vmovdqa %xmm2,112-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpunpckldq      %xmm9,%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -28(%r8),%xmm4

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -28(%r9),%xmm9
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpshufb %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpinsrd $1,-28(%r10),%xmm4,%xmm4
        vpinsrd $1,-28(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpandn  %xmm10,%xmm13,%xmm7
        vpand   %xmm14,%xmm13,%xmm6

        vmovdqa %xmm3,128-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpunpckldq      %xmm9,%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -24(%r8),%xmm0

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -24(%r9),%xmm9
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpshufb %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpinsrd $1,-24(%r10),%xmm0,%xmm0
        vpinsrd $1,-24(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm10,%xmm10
        vpslld  $5,%xmm11,%xmm8
        vpandn  %xmm14,%xmm12,%xmm7
        vpand   %xmm13,%xmm12,%xmm6

        vmovdqa %xmm4,144-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpunpckldq      %xmm9,%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -20(%r8),%xmm1

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -20(%r9),%xmm9
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpshufb %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpinsrd $1,-20(%r10),%xmm1,%xmm1
        vpinsrd $1,-20(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpandn  %xmm13,%xmm11,%xmm7
        vpand   %xmm12,%xmm11,%xmm6

        vmovdqa %xmm0,160-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpunpckldq      %xmm9,%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -16(%r8),%xmm2

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -16(%r9),%xmm9
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpshufb %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpinsrd $1,-16(%r10),%xmm2,%xmm2
        vpinsrd $1,-16(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpandn  %xmm12,%xmm10,%xmm7
        vpand   %xmm11,%xmm10,%xmm6

        vmovdqa %xmm1,176-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpunpckldq      %xmm9,%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -12(%r8),%xmm3

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -12(%r9),%xmm9
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpshufb %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpinsrd $1,-12(%r10),%xmm3,%xmm3
        vpinsrd $1,-12(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpandn  %xmm11,%xmm14,%xmm7
        vpand   %xmm10,%xmm14,%xmm6

        vmovdqa %xmm2,192-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpunpckldq      %xmm9,%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -8(%r8),%xmm4

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -8(%r9),%xmm9
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpshufb %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpinsrd $1,-8(%r10),%xmm4,%xmm4
        vpinsrd $1,-8(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpandn  %xmm10,%xmm13,%xmm7
        vpand   %xmm14,%xmm13,%xmm6

        vmovdqa %xmm3,208-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpunpckldq      %xmm9,%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vmovd   -4(%r8),%xmm0

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vmovd   -4(%r9),%xmm9
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpshufb %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vmovdqa 0-128(%rax),%xmm1
        vpinsrd $1,-4(%r10),%xmm0,%xmm0
        vpinsrd $1,-4(%r11),%xmm9,%xmm9
        vpaddd  %xmm15,%xmm10,%xmm10
        prefetcht0      63(%r8)
        vpslld  $5,%xmm11,%xmm8
        vpandn  %xmm14,%xmm12,%xmm7
        vpand   %xmm13,%xmm12,%xmm6

        vmovdqa %xmm4,224-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpunpckldq      %xmm9,%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        prefetcht0      63(%r9)
        vpxor   %xmm7,%xmm6,%xmm6

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        prefetcht0      63(%r10)
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        prefetcht0      63(%r11)
        vpshufb %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vmovdqa 16-128(%rax),%xmm2
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 32-128(%rax),%xmm3

        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpandn  %xmm13,%xmm11,%xmm7

        vpand   %xmm12,%xmm11,%xmm6

        vmovdqa %xmm0,240-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   128-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1


        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11

        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 48-128(%rax),%xmm4

        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpandn  %xmm12,%xmm10,%xmm7

        vpand   %xmm11,%xmm10,%xmm6

        vmovdqa %xmm1,0-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   144-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2


        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10

        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 64-128(%rax),%xmm0

        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpandn  %xmm11,%xmm14,%xmm7

        vpand   %xmm10,%xmm14,%xmm6

        vmovdqa %xmm2,16-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   160-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3


        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14

        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 80-128(%rax),%xmm1

        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpandn  %xmm10,%xmm13,%xmm7

        vpand   %xmm14,%xmm13,%xmm6

        vmovdqa %xmm3,32-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   176-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4


        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13

        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 96-128(%rax),%xmm2

        vpaddd  %xmm15,%xmm10,%xmm10
        vpslld  $5,%xmm11,%xmm8
        vpandn  %xmm14,%xmm12,%xmm7

        vpand   %xmm13,%xmm12,%xmm6

        vmovdqa %xmm4,48-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   192-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm7,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0


        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12

        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vmovdqa 0(%rbp),%xmm15
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 112-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vmovdqa %xmm0,64-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   208-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 128-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vmovdqa %xmm1,80-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   224-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 144-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vmovdqa %xmm2,96-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   240-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 160-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vmovdqa %xmm3,112-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   0-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 176-128(%rax),%xmm2

        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6
        vmovdqa %xmm4,128-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   16-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10
        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 192-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vmovdqa %xmm0,144-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   32-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 208-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vmovdqa %xmm1,160-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   48-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 224-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vmovdqa %xmm2,176-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   64-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 240-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vmovdqa %xmm3,192-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   80-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 0-128(%rax),%xmm2

        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6
        vmovdqa %xmm4,208-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   96-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10
        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 16-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vmovdqa %xmm0,224-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   112-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 32-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vmovdqa %xmm1,240-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   128-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 48-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vmovdqa %xmm2,0-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   144-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 64-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vmovdqa %xmm3,16-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   160-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 80-128(%rax),%xmm2

        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6
        vmovdqa %xmm4,32-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   176-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10
        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 96-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vmovdqa %xmm0,48-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   192-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 112-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vmovdqa %xmm1,64-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   208-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 128-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vmovdqa %xmm2,80-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   224-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 144-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vmovdqa %xmm3,96-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   240-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 160-128(%rax),%xmm2

        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6
        vmovdqa %xmm4,112-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   0-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10
        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vmovdqa 32(%rbp),%xmm15
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 176-128(%rax),%xmm3

        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpand   %xmm12,%xmm13,%xmm7
        vpxor   16-128(%rax),%xmm1,%xmm1

        vpaddd  %xmm7,%xmm14,%xmm14
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm13,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vmovdqu %xmm0,128-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm1,%xmm5
        vpand   %xmm11,%xmm6,%xmm6
        vpaddd  %xmm1,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 192-128(%rax),%xmm4

        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpand   %xmm11,%xmm12,%xmm7
        vpxor   32-128(%rax),%xmm2,%xmm2

        vpaddd  %xmm7,%xmm13,%xmm13
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm12,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vmovdqu %xmm1,144-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm2,%xmm5
        vpand   %xmm10,%xmm6,%xmm6
        vpaddd  %xmm2,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 208-128(%rax),%xmm0

        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpand   %xmm10,%xmm11,%xmm7
        vpxor   48-128(%rax),%xmm3,%xmm3

        vpaddd  %xmm7,%xmm12,%xmm12
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm11,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vmovdqu %xmm2,160-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm3,%xmm5
        vpand   %xmm14,%xmm6,%xmm6
        vpaddd  %xmm3,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 224-128(%rax),%xmm1

        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpand   %xmm14,%xmm10,%xmm7
        vpxor   64-128(%rax),%xmm4,%xmm4

        vpaddd  %xmm7,%xmm11,%xmm11
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm10,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vmovdqu %xmm3,176-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm4,%xmm5
        vpand   %xmm13,%xmm6,%xmm6
        vpaddd  %xmm4,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 240-128(%rax),%xmm2

        vpaddd  %xmm15,%xmm10,%xmm10
        vpslld  $5,%xmm11,%xmm8
        vpand   %xmm13,%xmm14,%xmm7
        vpxor   80-128(%rax),%xmm0,%xmm0

        vpaddd  %xmm7,%xmm10,%xmm10
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm14,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vmovdqu %xmm4,192-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm0,%xmm5
        vpand   %xmm12,%xmm6,%xmm6
        vpaddd  %xmm0,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 0-128(%rax),%xmm3

        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpand   %xmm12,%xmm13,%xmm7
        vpxor   96-128(%rax),%xmm1,%xmm1

        vpaddd  %xmm7,%xmm14,%xmm14
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm13,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vmovdqu %xmm0,208-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm1,%xmm5
        vpand   %xmm11,%xmm6,%xmm6
        vpaddd  %xmm1,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 16-128(%rax),%xmm4

        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpand   %xmm11,%xmm12,%xmm7
        vpxor   112-128(%rax),%xmm2,%xmm2

        vpaddd  %xmm7,%xmm13,%xmm13
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm12,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vmovdqu %xmm1,224-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm2,%xmm5
        vpand   %xmm10,%xmm6,%xmm6
        vpaddd  %xmm2,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 32-128(%rax),%xmm0

        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpand   %xmm10,%xmm11,%xmm7
        vpxor   128-128(%rax),%xmm3,%xmm3

        vpaddd  %xmm7,%xmm12,%xmm12
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm11,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vmovdqu %xmm2,240-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm3,%xmm5
        vpand   %xmm14,%xmm6,%xmm6
        vpaddd  %xmm3,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 48-128(%rax),%xmm1

        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpand   %xmm14,%xmm10,%xmm7
        vpxor   144-128(%rax),%xmm4,%xmm4

        vpaddd  %xmm7,%xmm11,%xmm11
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm10,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vmovdqu %xmm3,0-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm4,%xmm5
        vpand   %xmm13,%xmm6,%xmm6
        vpaddd  %xmm4,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 64-128(%rax),%xmm2

        vpaddd  %xmm15,%xmm10,%xmm10
        vpslld  $5,%xmm11,%xmm8
        vpand   %xmm13,%xmm14,%xmm7
        vpxor   160-128(%rax),%xmm0,%xmm0

        vpaddd  %xmm7,%xmm10,%xmm10
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm14,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vmovdqu %xmm4,16-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm0,%xmm5
        vpand   %xmm12,%xmm6,%xmm6
        vpaddd  %xmm0,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 80-128(%rax),%xmm3

        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpand   %xmm12,%xmm13,%xmm7
        vpxor   176-128(%rax),%xmm1,%xmm1

        vpaddd  %xmm7,%xmm14,%xmm14
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm13,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vmovdqu %xmm0,32-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm1,%xmm5
        vpand   %xmm11,%xmm6,%xmm6
        vpaddd  %xmm1,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 96-128(%rax),%xmm4

        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpand   %xmm11,%xmm12,%xmm7
        vpxor   192-128(%rax),%xmm2,%xmm2

        vpaddd  %xmm7,%xmm13,%xmm13
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm12,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vmovdqu %xmm1,48-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm2,%xmm5
        vpand   %xmm10,%xmm6,%xmm6
        vpaddd  %xmm2,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 112-128(%rax),%xmm0

        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpand   %xmm10,%xmm11,%xmm7
        vpxor   208-128(%rax),%xmm3,%xmm3

        vpaddd  %xmm7,%xmm12,%xmm12
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm11,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vmovdqu %xmm2,64-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm3,%xmm5
        vpand   %xmm14,%xmm6,%xmm6
        vpaddd  %xmm3,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 128-128(%rax),%xmm1

        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpand   %xmm14,%xmm10,%xmm7
        vpxor   224-128(%rax),%xmm4,%xmm4

        vpaddd  %xmm7,%xmm11,%xmm11
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm10,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vmovdqu %xmm3,80-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm4,%xmm5
        vpand   %xmm13,%xmm6,%xmm6
        vpaddd  %xmm4,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 144-128(%rax),%xmm2

        vpaddd  %xmm15,%xmm10,%xmm10
        vpslld  $5,%xmm11,%xmm8
        vpand   %xmm13,%xmm14,%xmm7
        vpxor   240-128(%rax),%xmm0,%xmm0

        vpaddd  %xmm7,%xmm10,%xmm10
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm14,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vmovdqu %xmm4,96-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm0,%xmm5
        vpand   %xmm12,%xmm6,%xmm6
        vpaddd  %xmm0,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 160-128(%rax),%xmm3

        vpaddd  %xmm15,%xmm14,%xmm14
        vpslld  $5,%xmm10,%xmm8
        vpand   %xmm12,%xmm13,%xmm7
        vpxor   0-128(%rax),%xmm1,%xmm1

        vpaddd  %xmm7,%xmm14,%xmm14
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm13,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vmovdqu %xmm0,112-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm1,%xmm5
        vpand   %xmm11,%xmm6,%xmm6
        vpaddd  %xmm1,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpaddd  %xmm6,%xmm14,%xmm14

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 176-128(%rax),%xmm4

        vpaddd  %xmm15,%xmm13,%xmm13
        vpslld  $5,%xmm14,%xmm8
        vpand   %xmm11,%xmm12,%xmm7
        vpxor   16-128(%rax),%xmm2,%xmm2

        vpaddd  %xmm7,%xmm13,%xmm13
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm12,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vmovdqu %xmm1,128-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm2,%xmm5
        vpand   %xmm10,%xmm6,%xmm6
        vpaddd  %xmm2,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpaddd  %xmm6,%xmm13,%xmm13

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 192-128(%rax),%xmm0

        vpaddd  %xmm15,%xmm12,%xmm12
        vpslld  $5,%xmm13,%xmm8
        vpand   %xmm10,%xmm11,%xmm7
        vpxor   32-128(%rax),%xmm3,%xmm3

        vpaddd  %xmm7,%xmm12,%xmm12
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm11,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vmovdqu %xmm2,144-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm3,%xmm5
        vpand   %xmm14,%xmm6,%xmm6
        vpaddd  %xmm3,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpaddd  %xmm6,%xmm12,%xmm12

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 208-128(%rax),%xmm1

        vpaddd  %xmm15,%xmm11,%xmm11
        vpslld  $5,%xmm12,%xmm8
        vpand   %xmm14,%xmm10,%xmm7
        vpxor   48-128(%rax),%xmm4,%xmm4

        vpaddd  %xmm7,%xmm11,%xmm11
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm10,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vmovdqu %xmm3,160-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm4,%xmm5
        vpand   %xmm13,%xmm6,%xmm6
        vpaddd  %xmm4,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpaddd  %xmm6,%xmm11,%xmm11

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 224-128(%rax),%xmm2

        vpaddd  %xmm15,%xmm10,%xmm10
        vpslld  $5,%xmm11,%xmm8
        vpand   %xmm13,%xmm14,%xmm7
        vpxor   64-128(%rax),%xmm0,%xmm0

        vpaddd  %xmm7,%xmm10,%xmm10
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm14,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vmovdqu %xmm4,176-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpor    %xmm9,%xmm8,%xmm8
        vpsrld  $31,%xmm0,%xmm5
        vpand   %xmm12,%xmm6,%xmm6
        vpaddd  %xmm0,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vmovdqa 64(%rbp),%xmm15
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 240-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vmovdqa %xmm0,192-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   80-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 0-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vmovdqa %xmm1,208-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   96-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 16-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vmovdqa %xmm2,224-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   112-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 32-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vmovdqa %xmm3,240-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   128-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 48-128(%rax),%xmm2

        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6
        vmovdqa %xmm4,0-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   144-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10
        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 64-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vmovdqa %xmm0,16-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   160-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 80-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vmovdqa %xmm1,32-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   176-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 96-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vmovdqa %xmm2,48-128(%rax)
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   192-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 112-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vmovdqa %xmm3,64-128(%rax)
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   208-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 128-128(%rax),%xmm2

        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6
        vmovdqa %xmm4,80-128(%rax)
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   224-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10
        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 144-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vmovdqa %xmm0,96-128(%rax)
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   240-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 160-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vmovdqa %xmm1,112-128(%rax)
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   0-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 176-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   16-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 192-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   32-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpxor   %xmm2,%xmm0,%xmm0
        vmovdqa 208-128(%rax),%xmm2

        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   48-128(%rax),%xmm0,%xmm0
        vpsrld  $27,%xmm11,%xmm9
        vpxor   %xmm13,%xmm6,%xmm6
        vpxor   %xmm2,%xmm0,%xmm0

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10
        vpsrld  $31,%xmm0,%xmm5
        vpaddd  %xmm0,%xmm0,%xmm0

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm5,%xmm0,%xmm0
        vpor    %xmm7,%xmm12,%xmm12
        vpxor   %xmm3,%xmm1,%xmm1
        vmovdqa 224-128(%rax),%xmm3

        vpslld  $5,%xmm10,%xmm8
        vpaddd  %xmm15,%xmm14,%xmm14
        vpxor   %xmm11,%xmm13,%xmm6
        vpaddd  %xmm0,%xmm14,%xmm14
        vpxor   64-128(%rax),%xmm1,%xmm1
        vpsrld  $27,%xmm10,%xmm9
        vpxor   %xmm12,%xmm6,%xmm6
        vpxor   %xmm3,%xmm1,%xmm1

        vpslld  $30,%xmm11,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm14,%xmm14
        vpsrld  $31,%xmm1,%xmm5
        vpaddd  %xmm1,%xmm1,%xmm1

        vpsrld  $2,%xmm11,%xmm11
        vpaddd  %xmm8,%xmm14,%xmm14
        vpor    %xmm5,%xmm1,%xmm1
        vpor    %xmm7,%xmm11,%xmm11
        vpxor   %xmm4,%xmm2,%xmm2
        vmovdqa 240-128(%rax),%xmm4

        vpslld  $5,%xmm14,%xmm8
        vpaddd  %xmm15,%xmm13,%xmm13
        vpxor   %xmm10,%xmm12,%xmm6
        vpaddd  %xmm1,%xmm13,%xmm13
        vpxor   80-128(%rax),%xmm2,%xmm2
        vpsrld  $27,%xmm14,%xmm9
        vpxor   %xmm11,%xmm6,%xmm6
        vpxor   %xmm4,%xmm2,%xmm2

        vpslld  $30,%xmm10,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm13,%xmm13
        vpsrld  $31,%xmm2,%xmm5
        vpaddd  %xmm2,%xmm2,%xmm2

        vpsrld  $2,%xmm10,%xmm10
        vpaddd  %xmm8,%xmm13,%xmm13
        vpor    %xmm5,%xmm2,%xmm2
        vpor    %xmm7,%xmm10,%xmm10
        vpxor   %xmm0,%xmm3,%xmm3
        vmovdqa 0-128(%rax),%xmm0

        vpslld  $5,%xmm13,%xmm8
        vpaddd  %xmm15,%xmm12,%xmm12
        vpxor   %xmm14,%xmm11,%xmm6
        vpaddd  %xmm2,%xmm12,%xmm12
        vpxor   96-128(%rax),%xmm3,%xmm3
        vpsrld  $27,%xmm13,%xmm9
        vpxor   %xmm10,%xmm6,%xmm6
        vpxor   %xmm0,%xmm3,%xmm3

        vpslld  $30,%xmm14,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm12,%xmm12
        vpsrld  $31,%xmm3,%xmm5
        vpaddd  %xmm3,%xmm3,%xmm3

        vpsrld  $2,%xmm14,%xmm14
        vpaddd  %xmm8,%xmm12,%xmm12
        vpor    %xmm5,%xmm3,%xmm3
        vpor    %xmm7,%xmm14,%xmm14
        vpxor   %xmm1,%xmm4,%xmm4
        vmovdqa 16-128(%rax),%xmm1

        vpslld  $5,%xmm12,%xmm8
        vpaddd  %xmm15,%xmm11,%xmm11
        vpxor   %xmm13,%xmm10,%xmm6
        vpaddd  %xmm3,%xmm11,%xmm11
        vpxor   112-128(%rax),%xmm4,%xmm4
        vpsrld  $27,%xmm12,%xmm9
        vpxor   %xmm14,%xmm6,%xmm6
        vpxor   %xmm1,%xmm4,%xmm4

        vpslld  $30,%xmm13,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm11,%xmm11
        vpsrld  $31,%xmm4,%xmm5
        vpaddd  %xmm4,%xmm4,%xmm4

        vpsrld  $2,%xmm13,%xmm13
        vpaddd  %xmm8,%xmm11,%xmm11
        vpor    %xmm5,%xmm4,%xmm4
        vpor    %xmm7,%xmm13,%xmm13
        vpslld  $5,%xmm11,%xmm8
        vpaddd  %xmm15,%xmm10,%xmm10
        vpxor   %xmm12,%xmm14,%xmm6

        vpsrld  $27,%xmm11,%xmm9
        vpaddd  %xmm4,%xmm10,%xmm10
        vpxor   %xmm13,%xmm6,%xmm6

        vpslld  $30,%xmm12,%xmm7
        vpor    %xmm9,%xmm8,%xmm8
        vpaddd  %xmm6,%xmm10,%xmm10

        vpsrld  $2,%xmm12,%xmm12
        vpaddd  %xmm8,%xmm10,%xmm10
        vpor    %xmm7,%xmm12,%xmm12
        movl    $1,%ecx
        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
        vmovdqu (%rbx),%xmm6
        vpxor   %xmm8,%xmm8,%xmm8
        vmovdqa %xmm6,%xmm7
        vpcmpgtd        %xmm8,%xmm7,%xmm7
        vpaddd  %xmm7,%xmm6,%xmm6

        vpand   %xmm7,%xmm10,%xmm10
        vpand   %xmm7,%xmm11,%xmm11
        vpaddd  0(%rdi),%xmm10,%xmm10
        vpand   %xmm7,%xmm12,%xmm12
        vpaddd  32(%rdi),%xmm11,%xmm11
        vpand   %xmm7,%xmm13,%xmm13
        vpaddd  64(%rdi),%xmm12,%xmm12
        vpand   %xmm7,%xmm14,%xmm14
        vpaddd  96(%rdi),%xmm13,%xmm13
        vpaddd  128(%rdi),%xmm14,%xmm14
        vmovdqu %xmm10,0(%rdi)
        vmovdqu %xmm11,32(%rdi)
        vmovdqu %xmm12,64(%rdi)
        vmovdqu %xmm13,96(%rdi)
        vmovdqu %xmm14,128(%rdi)

        vmovdqu %xmm6,(%rbx)
        vmovdqu 96(%rbp),%xmm5
        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
.cfi_def_cfa    %rax,8
        vzeroupper
        movq    -16(%rax),%rbp
.cfi_restore    %rbp
        movq    -8(%rax),%rbx
.cfi_restore    %rbx
        leaq    (%rax),%rsp
.cfi_def_cfa_register   %rsp
.Lepilogue_avx:
        .byte   0xf3,0xc3
.cfi_endproc
.size   sha1_multi_block_avx,.-sha1_multi_block_avx
.type   sha1_multi_block_avx2,@function
.align  32
sha1_multi_block_avx2:
.cfi_startproc
_avx2_shortcut:
        movq    %rsp,%rax
.cfi_def_cfa_register   %rax
        pushq   %rbx
.cfi_offset     %rbx,-16
        pushq   %rbp
.cfi_offset     %rbp,-24
        pushq   %r12
.cfi_offset     %r12,-32
        pushq   %r13
.cfi_offset     %r13,-40
        pushq   %r14
.cfi_offset     %r14,-48
        pushq   %r15
.cfi_offset     %r15,-56
        subq    $576,%rsp
        andq    $-256,%rsp
        movq    %rax,544(%rsp)
.cfi_escape     0x0f,0x06,0x77,0xa0,0x04,0x06,0x23,0x08
.Lbody_avx2:
        leaq    K_XX_XX(%rip),%rbp
        shrl    $1,%edx

        vzeroupper
.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(%rdi),%ymm0
        leaq    128(%rsp),%rax
        vmovdqu 32(%rdi),%ymm1
        leaq    256+128(%rsp),%rbx
        vmovdqu 64(%rdi),%ymm2
        vmovdqu 96(%rdi),%ymm3
        vmovdqu 128(%rdi),%ymm4
        vmovdqu 96(%rbp),%ymm9
        jmp     .Loop_avx2

.align  32
.Loop_avx2:
        vmovdqa -32(%rbp),%ymm15
        vmovd   (%r12),%xmm10
        leaq    64(%r12),%r12
        vmovd   (%r8),%xmm12
        leaq    64(%r8),%r8
        vmovd   (%r13),%xmm7
        leaq    64(%r13),%r13
        vmovd   (%r9),%xmm6
        leaq    64(%r9),%r9
        vpinsrd $1,(%r14),%xmm10,%xmm10
        leaq    64(%r14),%r14
        vpinsrd $1,(%r10),%xmm12,%xmm12
        leaq    64(%r10),%r10
        vpinsrd $1,(%r15),%xmm7,%xmm7
        leaq    64(%r15),%r15
        vpunpckldq      %ymm7,%ymm10,%ymm10
        vpinsrd $1,(%r11),%xmm6,%xmm6
        leaq    64(%r11),%r11
        vpunpckldq      %ymm6,%ymm12,%ymm12
        vmovd   -60(%r12),%xmm11
        vinserti128     $1,%xmm12,%ymm10,%ymm10
        vmovd   -60(%r8),%xmm8
        vpshufb %ymm9,%ymm10,%ymm10
        vmovd   -60(%r13),%xmm7
        vmovd   -60(%r9),%xmm6
        vpinsrd $1,-60(%r14),%xmm11,%xmm11
        vpinsrd $1,-60(%r10),%xmm8,%xmm8
        vpinsrd $1,-60(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm11,%ymm11
        vpinsrd $1,-60(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpandn  %ymm3,%ymm1,%ymm6
        vpand   %ymm2,%ymm1,%ymm5

        vmovdqa %ymm10,0-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vinserti128     $1,%xmm8,%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -56(%r12),%xmm12

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -56(%r8),%xmm8
        vpaddd  %ymm5,%ymm4,%ymm4

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpshufb %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vmovd   -56(%r13),%xmm7
        vmovd   -56(%r9),%xmm6
        vpinsrd $1,-56(%r14),%xmm12,%xmm12
        vpinsrd $1,-56(%r10),%xmm8,%xmm8
        vpinsrd $1,-56(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm12,%ymm12
        vpinsrd $1,-56(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpandn  %ymm2,%ymm0,%ymm6
        vpand   %ymm1,%ymm0,%ymm5

        vmovdqa %ymm11,32-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vinserti128     $1,%xmm8,%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -52(%r12),%xmm13

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -52(%r8),%xmm8
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpshufb %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vmovd   -52(%r13),%xmm7
        vmovd   -52(%r9),%xmm6
        vpinsrd $1,-52(%r14),%xmm13,%xmm13
        vpinsrd $1,-52(%r10),%xmm8,%xmm8
        vpinsrd $1,-52(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm13,%ymm13
        vpinsrd $1,-52(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpandn  %ymm1,%ymm4,%ymm6
        vpand   %ymm0,%ymm4,%ymm5

        vmovdqa %ymm12,64-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vinserti128     $1,%xmm8,%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -48(%r12),%xmm14

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -48(%r8),%xmm8
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpshufb %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vmovd   -48(%r13),%xmm7
        vmovd   -48(%r9),%xmm6
        vpinsrd $1,-48(%r14),%xmm14,%xmm14
        vpinsrd $1,-48(%r10),%xmm8,%xmm8
        vpinsrd $1,-48(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm14,%ymm14
        vpinsrd $1,-48(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpandn  %ymm0,%ymm3,%ymm6
        vpand   %ymm4,%ymm3,%ymm5

        vmovdqa %ymm13,96-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vinserti128     $1,%xmm8,%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -44(%r12),%xmm10

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -44(%r8),%xmm8
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpshufb %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vmovd   -44(%r13),%xmm7
        vmovd   -44(%r9),%xmm6
        vpinsrd $1,-44(%r14),%xmm10,%xmm10
        vpinsrd $1,-44(%r10),%xmm8,%xmm8
        vpinsrd $1,-44(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm10,%ymm10
        vpinsrd $1,-44(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm0,%ymm0
        vpslld  $5,%ymm1,%ymm7
        vpandn  %ymm4,%ymm2,%ymm6
        vpand   %ymm3,%ymm2,%ymm5

        vmovdqa %ymm14,128-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vinserti128     $1,%xmm8,%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -40(%r12),%xmm11

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -40(%r8),%xmm8
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpshufb %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vmovd   -40(%r13),%xmm7
        vmovd   -40(%r9),%xmm6
        vpinsrd $1,-40(%r14),%xmm11,%xmm11
        vpinsrd $1,-40(%r10),%xmm8,%xmm8
        vpinsrd $1,-40(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm11,%ymm11
        vpinsrd $1,-40(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpandn  %ymm3,%ymm1,%ymm6
        vpand   %ymm2,%ymm1,%ymm5

        vmovdqa %ymm10,160-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vinserti128     $1,%xmm8,%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -36(%r12),%xmm12

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -36(%r8),%xmm8
        vpaddd  %ymm5,%ymm4,%ymm4

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpshufb %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vmovd   -36(%r13),%xmm7
        vmovd   -36(%r9),%xmm6
        vpinsrd $1,-36(%r14),%xmm12,%xmm12
        vpinsrd $1,-36(%r10),%xmm8,%xmm8
        vpinsrd $1,-36(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm12,%ymm12
        vpinsrd $1,-36(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpandn  %ymm2,%ymm0,%ymm6
        vpand   %ymm1,%ymm0,%ymm5

        vmovdqa %ymm11,192-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vinserti128     $1,%xmm8,%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -32(%r12),%xmm13

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -32(%r8),%xmm8
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpshufb %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vmovd   -32(%r13),%xmm7
        vmovd   -32(%r9),%xmm6
        vpinsrd $1,-32(%r14),%xmm13,%xmm13
        vpinsrd $1,-32(%r10),%xmm8,%xmm8
        vpinsrd $1,-32(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm13,%ymm13
        vpinsrd $1,-32(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpandn  %ymm1,%ymm4,%ymm6
        vpand   %ymm0,%ymm4,%ymm5

        vmovdqa %ymm12,224-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vinserti128     $1,%xmm8,%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -28(%r12),%xmm14

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -28(%r8),%xmm8
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpshufb %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vmovd   -28(%r13),%xmm7
        vmovd   -28(%r9),%xmm6
        vpinsrd $1,-28(%r14),%xmm14,%xmm14
        vpinsrd $1,-28(%r10),%xmm8,%xmm8
        vpinsrd $1,-28(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm14,%ymm14
        vpinsrd $1,-28(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpandn  %ymm0,%ymm3,%ymm6
        vpand   %ymm4,%ymm3,%ymm5

        vmovdqa %ymm13,256-256-128(%rbx)
        vpaddd  %ymm13,%ymm1,%ymm1
        vinserti128     $1,%xmm8,%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -24(%r12),%xmm10

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -24(%r8),%xmm8
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpshufb %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vmovd   -24(%r13),%xmm7
        vmovd   -24(%r9),%xmm6
        vpinsrd $1,-24(%r14),%xmm10,%xmm10
        vpinsrd $1,-24(%r10),%xmm8,%xmm8
        vpinsrd $1,-24(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm10,%ymm10
        vpinsrd $1,-24(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm0,%ymm0
        vpslld  $5,%ymm1,%ymm7
        vpandn  %ymm4,%ymm2,%ymm6
        vpand   %ymm3,%ymm2,%ymm5

        vmovdqa %ymm14,288-256-128(%rbx)
        vpaddd  %ymm14,%ymm0,%ymm0
        vinserti128     $1,%xmm8,%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -20(%r12),%xmm11

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -20(%r8),%xmm8
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpshufb %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vmovd   -20(%r13),%xmm7
        vmovd   -20(%r9),%xmm6
        vpinsrd $1,-20(%r14),%xmm11,%xmm11
        vpinsrd $1,-20(%r10),%xmm8,%xmm8
        vpinsrd $1,-20(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm11,%ymm11
        vpinsrd $1,-20(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpandn  %ymm3,%ymm1,%ymm6
        vpand   %ymm2,%ymm1,%ymm5

        vmovdqa %ymm10,320-256-128(%rbx)
        vpaddd  %ymm10,%ymm4,%ymm4
        vinserti128     $1,%xmm8,%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -16(%r12),%xmm12

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -16(%r8),%xmm8
        vpaddd  %ymm5,%ymm4,%ymm4

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpshufb %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vmovd   -16(%r13),%xmm7
        vmovd   -16(%r9),%xmm6
        vpinsrd $1,-16(%r14),%xmm12,%xmm12
        vpinsrd $1,-16(%r10),%xmm8,%xmm8
        vpinsrd $1,-16(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm12,%ymm12
        vpinsrd $1,-16(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpandn  %ymm2,%ymm0,%ymm6
        vpand   %ymm1,%ymm0,%ymm5

        vmovdqa %ymm11,352-256-128(%rbx)
        vpaddd  %ymm11,%ymm3,%ymm3
        vinserti128     $1,%xmm8,%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -12(%r12),%xmm13

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -12(%r8),%xmm8
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpshufb %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vmovd   -12(%r13),%xmm7
        vmovd   -12(%r9),%xmm6
        vpinsrd $1,-12(%r14),%xmm13,%xmm13
        vpinsrd $1,-12(%r10),%xmm8,%xmm8
        vpinsrd $1,-12(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm13,%ymm13
        vpinsrd $1,-12(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpandn  %ymm1,%ymm4,%ymm6
        vpand   %ymm0,%ymm4,%ymm5

        vmovdqa %ymm12,384-256-128(%rbx)
        vpaddd  %ymm12,%ymm2,%ymm2
        vinserti128     $1,%xmm8,%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -8(%r12),%xmm14

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -8(%r8),%xmm8
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpshufb %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vmovd   -8(%r13),%xmm7
        vmovd   -8(%r9),%xmm6
        vpinsrd $1,-8(%r14),%xmm14,%xmm14
        vpinsrd $1,-8(%r10),%xmm8,%xmm8
        vpinsrd $1,-8(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm14,%ymm14
        vpinsrd $1,-8(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpandn  %ymm0,%ymm3,%ymm6
        vpand   %ymm4,%ymm3,%ymm5

        vmovdqa %ymm13,416-256-128(%rbx)
        vpaddd  %ymm13,%ymm1,%ymm1
        vinserti128     $1,%xmm8,%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vmovd   -4(%r12),%xmm10

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vmovd   -4(%r8),%xmm8
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpshufb %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vmovdqa 0-128(%rax),%ymm11
        vmovd   -4(%r13),%xmm7
        vmovd   -4(%r9),%xmm6
        vpinsrd $1,-4(%r14),%xmm10,%xmm10
        vpinsrd $1,-4(%r10),%xmm8,%xmm8
        vpinsrd $1,-4(%r15),%xmm7,%xmm7
        vpunpckldq      %ymm7,%ymm10,%ymm10
        vpinsrd $1,-4(%r11),%xmm6,%xmm6
        vpunpckldq      %ymm6,%ymm8,%ymm8
        vpaddd  %ymm15,%ymm0,%ymm0
        prefetcht0      63(%r12)
        vpslld  $5,%ymm1,%ymm7
        vpandn  %ymm4,%ymm2,%ymm6
        vpand   %ymm3,%ymm2,%ymm5

        vmovdqa %ymm14,448-256-128(%rbx)
        vpaddd  %ymm14,%ymm0,%ymm0
        vinserti128     $1,%xmm8,%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        prefetcht0      63(%r13)
        vpxor   %ymm6,%ymm5,%ymm5

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        prefetcht0      63(%r14)
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        prefetcht0      63(%r15)
        vpshufb %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vmovdqa 32-128(%rax),%ymm12
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 64-128(%rax),%ymm13

        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpandn  %ymm3,%ymm1,%ymm6
        prefetcht0      63(%r8)
        vpand   %ymm2,%ymm1,%ymm5

        vmovdqa %ymm10,480-256-128(%rbx)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   256-256-128(%rbx),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11
        prefetcht0      63(%r9)

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        prefetcht0      63(%r10)
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        prefetcht0      63(%r11)
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 96-128(%rax),%ymm14

        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpandn  %ymm2,%ymm0,%ymm6

        vpand   %ymm1,%ymm0,%ymm5

        vmovdqa %ymm11,0-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   288-256-128(%rbx),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12


        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0

        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 128-128(%rax),%ymm10

        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpandn  %ymm1,%ymm4,%ymm6

        vpand   %ymm0,%ymm4,%ymm5

        vmovdqa %ymm12,32-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   320-256-128(%rbx),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13


        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4

        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 160-128(%rax),%ymm11

        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpandn  %ymm0,%ymm3,%ymm6

        vpand   %ymm4,%ymm3,%ymm5

        vmovdqa %ymm13,64-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   352-256-128(%rbx),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14


        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3

        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 192-128(%rax),%ymm12

        vpaddd  %ymm15,%ymm0,%ymm0
        vpslld  $5,%ymm1,%ymm7
        vpandn  %ymm4,%ymm2,%ymm6

        vpand   %ymm3,%ymm2,%ymm5

        vmovdqa %ymm14,96-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   384-256-128(%rbx),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm6,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10


        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2

        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vmovdqa 0(%rbp),%ymm15
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 224-128(%rax),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vmovdqa %ymm10,128-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   416-256-128(%rbx),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 256-256-128(%rbx),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vmovdqa %ymm11,160-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   448-256-128(%rbx),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 288-256-128(%rbx),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vmovdqa %ymm12,192-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   480-256-128(%rbx),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 320-256-128(%rbx),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vmovdqa %ymm13,224-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   0-128(%rax),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 352-256-128(%rbx),%ymm12

        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5
        vmovdqa %ymm14,256-256-128(%rbx)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   32-128(%rax),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0
        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 384-256-128(%rbx),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vmovdqa %ymm10,288-256-128(%rbx)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   64-128(%rax),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 416-256-128(%rbx),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vmovdqa %ymm11,320-256-128(%rbx)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   96-128(%rax),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 448-256-128(%rbx),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vmovdqa %ymm12,352-256-128(%rbx)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   128-128(%rax),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 480-256-128(%rbx),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vmovdqa %ymm13,384-256-128(%rbx)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   160-128(%rax),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 0-128(%rax),%ymm12

        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5
        vmovdqa %ymm14,416-256-128(%rbx)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   192-128(%rax),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0
        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 32-128(%rax),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vmovdqa %ymm10,448-256-128(%rbx)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   224-128(%rax),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 64-128(%rax),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vmovdqa %ymm11,480-256-128(%rbx)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   256-256-128(%rbx),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 96-128(%rax),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vmovdqa %ymm12,0-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   288-256-128(%rbx),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 128-128(%rax),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vmovdqa %ymm13,32-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   320-256-128(%rbx),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 160-128(%rax),%ymm12

        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5
        vmovdqa %ymm14,64-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   352-256-128(%rbx),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0
        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 192-128(%rax),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vmovdqa %ymm10,96-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   384-256-128(%rbx),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 224-128(%rax),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vmovdqa %ymm11,128-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   416-256-128(%rbx),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 256-256-128(%rbx),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vmovdqa %ymm12,160-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   448-256-128(%rbx),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 288-256-128(%rbx),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vmovdqa %ymm13,192-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   480-256-128(%rbx),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 320-256-128(%rbx),%ymm12

        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5
        vmovdqa %ymm14,224-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   0-128(%rax),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0
        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vmovdqa 32(%rbp),%ymm15
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 352-256-128(%rbx),%ymm13

        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpand   %ymm2,%ymm3,%ymm6
        vpxor   32-128(%rax),%ymm11,%ymm11

        vpaddd  %ymm6,%ymm4,%ymm4
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm3,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vmovdqu %ymm10,256-256-128(%rbx)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm11,%ymm9
        vpand   %ymm1,%ymm5,%ymm5
        vpaddd  %ymm11,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpaddd  %ymm5,%ymm4,%ymm4

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 384-256-128(%rbx),%ymm14

        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpand   %ymm1,%ymm2,%ymm6
        vpxor   64-128(%rax),%ymm12,%ymm12

        vpaddd  %ymm6,%ymm3,%ymm3
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm2,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vmovdqu %ymm11,288-256-128(%rbx)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm12,%ymm9
        vpand   %ymm0,%ymm5,%ymm5
        vpaddd  %ymm12,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 416-256-128(%rbx),%ymm10

        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpand   %ymm0,%ymm1,%ymm6
        vpxor   96-128(%rax),%ymm13,%ymm13

        vpaddd  %ymm6,%ymm2,%ymm2
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm1,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vmovdqu %ymm12,320-256-128(%rbx)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm13,%ymm9
        vpand   %ymm4,%ymm5,%ymm5
        vpaddd  %ymm13,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 448-256-128(%rbx),%ymm11

        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpand   %ymm4,%ymm0,%ymm6
        vpxor   128-128(%rax),%ymm14,%ymm14

        vpaddd  %ymm6,%ymm1,%ymm1
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm0,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vmovdqu %ymm13,352-256-128(%rbx)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm14,%ymm9
        vpand   %ymm3,%ymm5,%ymm5
        vpaddd  %ymm14,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 480-256-128(%rbx),%ymm12

        vpaddd  %ymm15,%ymm0,%ymm0
        vpslld  $5,%ymm1,%ymm7
        vpand   %ymm3,%ymm4,%ymm6
        vpxor   160-128(%rax),%ymm10,%ymm10

        vpaddd  %ymm6,%ymm0,%ymm0
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm4,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vmovdqu %ymm14,384-256-128(%rbx)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm10,%ymm9
        vpand   %ymm2,%ymm5,%ymm5
        vpaddd  %ymm10,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 0-128(%rax),%ymm13

        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpand   %ymm2,%ymm3,%ymm6
        vpxor   192-128(%rax),%ymm11,%ymm11

        vpaddd  %ymm6,%ymm4,%ymm4
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm3,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vmovdqu %ymm10,416-256-128(%rbx)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm11,%ymm9
        vpand   %ymm1,%ymm5,%ymm5
        vpaddd  %ymm11,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpaddd  %ymm5,%ymm4,%ymm4

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 32-128(%rax),%ymm14

        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpand   %ymm1,%ymm2,%ymm6
        vpxor   224-128(%rax),%ymm12,%ymm12

        vpaddd  %ymm6,%ymm3,%ymm3
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm2,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vmovdqu %ymm11,448-256-128(%rbx)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm12,%ymm9
        vpand   %ymm0,%ymm5,%ymm5
        vpaddd  %ymm12,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 64-128(%rax),%ymm10

        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpand   %ymm0,%ymm1,%ymm6
        vpxor   256-256-128(%rbx),%ymm13,%ymm13

        vpaddd  %ymm6,%ymm2,%ymm2
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm1,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vmovdqu %ymm12,480-256-128(%rbx)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm13,%ymm9
        vpand   %ymm4,%ymm5,%ymm5
        vpaddd  %ymm13,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 96-128(%rax),%ymm11

        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpand   %ymm4,%ymm0,%ymm6
        vpxor   288-256-128(%rbx),%ymm14,%ymm14

        vpaddd  %ymm6,%ymm1,%ymm1
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm0,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vmovdqu %ymm13,0-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm14,%ymm9
        vpand   %ymm3,%ymm5,%ymm5
        vpaddd  %ymm14,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 128-128(%rax),%ymm12

        vpaddd  %ymm15,%ymm0,%ymm0
        vpslld  $5,%ymm1,%ymm7
        vpand   %ymm3,%ymm4,%ymm6
        vpxor   320-256-128(%rbx),%ymm10,%ymm10

        vpaddd  %ymm6,%ymm0,%ymm0
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm4,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vmovdqu %ymm14,32-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm10,%ymm9
        vpand   %ymm2,%ymm5,%ymm5
        vpaddd  %ymm10,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 160-128(%rax),%ymm13

        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpand   %ymm2,%ymm3,%ymm6
        vpxor   352-256-128(%rbx),%ymm11,%ymm11

        vpaddd  %ymm6,%ymm4,%ymm4
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm3,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vmovdqu %ymm10,64-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm11,%ymm9
        vpand   %ymm1,%ymm5,%ymm5
        vpaddd  %ymm11,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpaddd  %ymm5,%ymm4,%ymm4

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 192-128(%rax),%ymm14

        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpand   %ymm1,%ymm2,%ymm6
        vpxor   384-256-128(%rbx),%ymm12,%ymm12

        vpaddd  %ymm6,%ymm3,%ymm3
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm2,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vmovdqu %ymm11,96-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm12,%ymm9
        vpand   %ymm0,%ymm5,%ymm5
        vpaddd  %ymm12,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 224-128(%rax),%ymm10

        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpand   %ymm0,%ymm1,%ymm6
        vpxor   416-256-128(%rbx),%ymm13,%ymm13

        vpaddd  %ymm6,%ymm2,%ymm2
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm1,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vmovdqu %ymm12,128-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm13,%ymm9
        vpand   %ymm4,%ymm5,%ymm5
        vpaddd  %ymm13,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 256-256-128(%rbx),%ymm11

        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpand   %ymm4,%ymm0,%ymm6
        vpxor   448-256-128(%rbx),%ymm14,%ymm14

        vpaddd  %ymm6,%ymm1,%ymm1
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm0,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vmovdqu %ymm13,160-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm14,%ymm9
        vpand   %ymm3,%ymm5,%ymm5
        vpaddd  %ymm14,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 288-256-128(%rbx),%ymm12

        vpaddd  %ymm15,%ymm0,%ymm0
        vpslld  $5,%ymm1,%ymm7
        vpand   %ymm3,%ymm4,%ymm6
        vpxor   480-256-128(%rbx),%ymm10,%ymm10

        vpaddd  %ymm6,%ymm0,%ymm0
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm4,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vmovdqu %ymm14,192-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm10,%ymm9
        vpand   %ymm2,%ymm5,%ymm5
        vpaddd  %ymm10,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 320-256-128(%rbx),%ymm13

        vpaddd  %ymm15,%ymm4,%ymm4
        vpslld  $5,%ymm0,%ymm7
        vpand   %ymm2,%ymm3,%ymm6
        vpxor   0-128(%rax),%ymm11,%ymm11

        vpaddd  %ymm6,%ymm4,%ymm4
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm3,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vmovdqu %ymm10,224-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm11,%ymm9
        vpand   %ymm1,%ymm5,%ymm5
        vpaddd  %ymm11,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpaddd  %ymm5,%ymm4,%ymm4

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 352-256-128(%rbx),%ymm14

        vpaddd  %ymm15,%ymm3,%ymm3
        vpslld  $5,%ymm4,%ymm7
        vpand   %ymm1,%ymm2,%ymm6
        vpxor   32-128(%rax),%ymm12,%ymm12

        vpaddd  %ymm6,%ymm3,%ymm3
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm2,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vmovdqu %ymm11,256-256-128(%rbx)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm12,%ymm9
        vpand   %ymm0,%ymm5,%ymm5
        vpaddd  %ymm12,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpaddd  %ymm5,%ymm3,%ymm3

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 384-256-128(%rbx),%ymm10

        vpaddd  %ymm15,%ymm2,%ymm2
        vpslld  $5,%ymm3,%ymm7
        vpand   %ymm0,%ymm1,%ymm6
        vpxor   64-128(%rax),%ymm13,%ymm13

        vpaddd  %ymm6,%ymm2,%ymm2
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm1,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vmovdqu %ymm12,288-256-128(%rbx)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm13,%ymm9
        vpand   %ymm4,%ymm5,%ymm5
        vpaddd  %ymm13,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpaddd  %ymm5,%ymm2,%ymm2

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 416-256-128(%rbx),%ymm11

        vpaddd  %ymm15,%ymm1,%ymm1
        vpslld  $5,%ymm2,%ymm7
        vpand   %ymm4,%ymm0,%ymm6
        vpxor   96-128(%rax),%ymm14,%ymm14

        vpaddd  %ymm6,%ymm1,%ymm1
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm0,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vmovdqu %ymm13,320-256-128(%rbx)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm14,%ymm9
        vpand   %ymm3,%ymm5,%ymm5
        vpaddd  %ymm14,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpaddd  %ymm5,%ymm1,%ymm1

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 448-256-128(%rbx),%ymm12

        vpaddd  %ymm15,%ymm0,%ymm0
        vpslld  $5,%ymm1,%ymm7
        vpand   %ymm3,%ymm4,%ymm6
        vpxor   128-128(%rax),%ymm10,%ymm10

        vpaddd  %ymm6,%ymm0,%ymm0
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm4,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vmovdqu %ymm14,352-256-128(%rbx)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpor    %ymm8,%ymm7,%ymm7
        vpsrld  $31,%ymm10,%ymm9
        vpand   %ymm2,%ymm5,%ymm5
        vpaddd  %ymm10,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vmovdqa 64(%rbp),%ymm15
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 480-256-128(%rbx),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vmovdqa %ymm10,384-256-128(%rbx)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   160-128(%rax),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 0-128(%rax),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vmovdqa %ymm11,416-256-128(%rbx)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   192-128(%rax),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 32-128(%rax),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vmovdqa %ymm12,448-256-128(%rbx)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   224-128(%rax),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 64-128(%rax),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vmovdqa %ymm13,480-256-128(%rbx)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   256-256-128(%rbx),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 96-128(%rax),%ymm12

        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5
        vmovdqa %ymm14,0-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   288-256-128(%rbx),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0
        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 128-128(%rax),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vmovdqa %ymm10,32-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   320-256-128(%rbx),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 160-128(%rax),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vmovdqa %ymm11,64-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   352-256-128(%rbx),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 192-128(%rax),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vmovdqa %ymm12,96-128(%rax)
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   384-256-128(%rbx),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 224-128(%rax),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vmovdqa %ymm13,128-128(%rax)
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   416-256-128(%rbx),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 256-256-128(%rbx),%ymm12

        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5
        vmovdqa %ymm14,160-128(%rax)
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   448-256-128(%rbx),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0
        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 288-256-128(%rbx),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vmovdqa %ymm10,192-128(%rax)
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   480-256-128(%rbx),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 320-256-128(%rbx),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vmovdqa %ymm11,224-128(%rax)
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   0-128(%rax),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 352-256-128(%rbx),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   32-128(%rax),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 384-256-128(%rbx),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   64-128(%rax),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpxor   %ymm12,%ymm10,%ymm10
        vmovdqa 416-256-128(%rbx),%ymm12

        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   96-128(%rax),%ymm10,%ymm10
        vpsrld  $27,%ymm1,%ymm8
        vpxor   %ymm3,%ymm5,%ymm5
        vpxor   %ymm12,%ymm10,%ymm10

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0
        vpsrld  $31,%ymm10,%ymm9
        vpaddd  %ymm10,%ymm10,%ymm10

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm9,%ymm10,%ymm10
        vpor    %ymm6,%ymm2,%ymm2
        vpxor   %ymm13,%ymm11,%ymm11
        vmovdqa 448-256-128(%rbx),%ymm13

        vpslld  $5,%ymm0,%ymm7
        vpaddd  %ymm15,%ymm4,%ymm4
        vpxor   %ymm1,%ymm3,%ymm5
        vpaddd  %ymm10,%ymm4,%ymm4
        vpxor   128-128(%rax),%ymm11,%ymm11
        vpsrld  $27,%ymm0,%ymm8
        vpxor   %ymm2,%ymm5,%ymm5
        vpxor   %ymm13,%ymm11,%ymm11

        vpslld  $30,%ymm1,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm4,%ymm4
        vpsrld  $31,%ymm11,%ymm9
        vpaddd  %ymm11,%ymm11,%ymm11

        vpsrld  $2,%ymm1,%ymm1
        vpaddd  %ymm7,%ymm4,%ymm4
        vpor    %ymm9,%ymm11,%ymm11
        vpor    %ymm6,%ymm1,%ymm1
        vpxor   %ymm14,%ymm12,%ymm12
        vmovdqa 480-256-128(%rbx),%ymm14

        vpslld  $5,%ymm4,%ymm7
        vpaddd  %ymm15,%ymm3,%ymm3
        vpxor   %ymm0,%ymm2,%ymm5
        vpaddd  %ymm11,%ymm3,%ymm3
        vpxor   160-128(%rax),%ymm12,%ymm12
        vpsrld  $27,%ymm4,%ymm8
        vpxor   %ymm1,%ymm5,%ymm5
        vpxor   %ymm14,%ymm12,%ymm12

        vpslld  $30,%ymm0,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm3,%ymm3
        vpsrld  $31,%ymm12,%ymm9
        vpaddd  %ymm12,%ymm12,%ymm12

        vpsrld  $2,%ymm0,%ymm0
        vpaddd  %ymm7,%ymm3,%ymm3
        vpor    %ymm9,%ymm12,%ymm12
        vpor    %ymm6,%ymm0,%ymm0
        vpxor   %ymm10,%ymm13,%ymm13
        vmovdqa 0-128(%rax),%ymm10

        vpslld  $5,%ymm3,%ymm7
        vpaddd  %ymm15,%ymm2,%ymm2
        vpxor   %ymm4,%ymm1,%ymm5
        vpaddd  %ymm12,%ymm2,%ymm2
        vpxor   192-128(%rax),%ymm13,%ymm13
        vpsrld  $27,%ymm3,%ymm8
        vpxor   %ymm0,%ymm5,%ymm5
        vpxor   %ymm10,%ymm13,%ymm13

        vpslld  $30,%ymm4,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm2,%ymm2
        vpsrld  $31,%ymm13,%ymm9
        vpaddd  %ymm13,%ymm13,%ymm13

        vpsrld  $2,%ymm4,%ymm4
        vpaddd  %ymm7,%ymm2,%ymm2
        vpor    %ymm9,%ymm13,%ymm13
        vpor    %ymm6,%ymm4,%ymm4
        vpxor   %ymm11,%ymm14,%ymm14
        vmovdqa 32-128(%rax),%ymm11

        vpslld  $5,%ymm2,%ymm7
        vpaddd  %ymm15,%ymm1,%ymm1
        vpxor   %ymm3,%ymm0,%ymm5
        vpaddd  %ymm13,%ymm1,%ymm1
        vpxor   224-128(%rax),%ymm14,%ymm14
        vpsrld  $27,%ymm2,%ymm8
        vpxor   %ymm4,%ymm5,%ymm5
        vpxor   %ymm11,%ymm14,%ymm14

        vpslld  $30,%ymm3,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm1,%ymm1
        vpsrld  $31,%ymm14,%ymm9
        vpaddd  %ymm14,%ymm14,%ymm14

        vpsrld  $2,%ymm3,%ymm3
        vpaddd  %ymm7,%ymm1,%ymm1
        vpor    %ymm9,%ymm14,%ymm14
        vpor    %ymm6,%ymm3,%ymm3
        vpslld  $5,%ymm1,%ymm7
        vpaddd  %ymm15,%ymm0,%ymm0
        vpxor   %ymm2,%ymm4,%ymm5

        vpsrld  $27,%ymm1,%ymm8
        vpaddd  %ymm14,%ymm0,%ymm0
        vpxor   %ymm3,%ymm5,%ymm5

        vpslld  $30,%ymm2,%ymm6
        vpor    %ymm8,%ymm7,%ymm7
        vpaddd  %ymm5,%ymm0,%ymm0

        vpsrld  $2,%ymm2,%ymm2
        vpaddd  %ymm7,%ymm0,%ymm0
        vpor    %ymm6,%ymm2,%ymm2
        movl    $1,%ecx
        leaq    512(%rsp),%rbx
        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
        vmovdqu (%rbx),%ymm5
        vpxor   %ymm7,%ymm7,%ymm7
        vmovdqa %ymm5,%ymm6
        vpcmpgtd        %ymm7,%ymm6,%ymm6
        vpaddd  %ymm6,%ymm5,%ymm5

        vpand   %ymm6,%ymm0,%ymm0
        vpand   %ymm6,%ymm1,%ymm1
        vpaddd  0(%rdi),%ymm0,%ymm0
        vpand   %ymm6,%ymm2,%ymm2
        vpaddd  32(%rdi),%ymm1,%ymm1
        vpand   %ymm6,%ymm3,%ymm3
        vpaddd  64(%rdi),%ymm2,%ymm2
        vpand   %ymm6,%ymm4,%ymm4
        vpaddd  96(%rdi),%ymm3,%ymm3
        vpaddd  128(%rdi),%ymm4,%ymm4
        vmovdqu %ymm0,0(%rdi)
        vmovdqu %ymm1,32(%rdi)
        vmovdqu %ymm2,64(%rdi)
        vmovdqu %ymm3,96(%rdi)
        vmovdqu %ymm4,128(%rdi)

        vmovdqu %ymm5,(%rbx)
        leaq    256+128(%rsp),%rbx
        vmovdqu 96(%rbp),%ymm9
        decl    %edx
        jnz     .Loop_avx2







.Ldone_avx2:
        movq    544(%rsp),%rax
.cfi_def_cfa    %rax,8
        vzeroupper
        movq    -48(%rax),%r15
.cfi_restore    %r15
        movq    -40(%rax),%r14
.cfi_restore    %r14
        movq    -32(%rax),%r13
.cfi_restore    %r13
        movq    -24(%rax),%r12
.cfi_restore    %r12
        movq    -16(%rax),%rbp
.cfi_restore    %rbp
        movq    -8(%rax),%rbx
.cfi_restore    %rbx
        leaq    (%rax),%rsp
.cfi_def_cfa_register   %rsp
.Lepilogue_avx2:
        .byte   0xf3,0xc3
.cfi_endproc
.size   sha1_multi_block_avx2,.-sha1_multi_block_avx2

.align  256
.long   0x5a827999,0x5a827999,0x5a827999,0x5a827999
.long   0x5a827999,0x5a827999,0x5a827999,0x5a827999
K_XX_XX:
.long   0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
.long   0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
.long   0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
.long   0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
.long   0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
.long   0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
.long   0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
.long   0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
.byte   0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
.byte   83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
        .section ".note.gnu.property", "a"
        .p2align 3
        .long 1f - 0f
        .long 4f - 1f
        .long 5
0:
        # "GNU" encoded with .byte, since .asciz isn't supported
        # on Solaris.
        .byte 0x47
        .byte 0x4e
        .byte 0x55
        .byte 0
1:
        .p2align 3
        .long 0xc0000002
        .long 3f - 2f
2:
        .long 3
3:
        .p2align 3
4:
