# WARNING: do not edit!
# Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl
#
# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License").  You may not use
# this file except in compliance with the License.  You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

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

.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
