%ifidn __OUTPUT_FORMAT__,obj
section code    use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text   code align=64
%else
section .text   code
%endif
;extern _OPENSSL_ia32cap_P
global  _sha1_block_data_order
align   16
_sha1_block_data_order:
L$_sha1_block_data_order_begin:
        push    ebp
        push    ebx
        push    esi
        push    edi
        call    L$000pic_point
L$000pic_point:
        pop     ebp
        lea     esi,[_OPENSSL_ia32cap_P]
        lea     ebp,[(L$K_XX_XX-L$000pic_point)+ebp]
        mov     eax,DWORD [esi]
        mov     edx,DWORD [4+esi]
        test    edx,512
        jz      NEAR L$001x86
        mov     ecx,DWORD [8+esi]
        test    eax,16777216
        jz      NEAR L$001x86
        test    ecx,536870912
        jnz     NEAR L$shaext_shortcut
        and     edx,268435456
        and     eax,1073741824
        or      eax,edx
        cmp     eax,1342177280
        je      NEAR L$avx_shortcut
        jmp     NEAR L$ssse3_shortcut
align   16
L$001x86:
        mov     ebp,DWORD [20+esp]
        mov     esi,DWORD [24+esp]
        mov     eax,DWORD [28+esp]
        sub     esp,76
        shl     eax,6
        add     eax,esi
        mov     DWORD [104+esp],eax
        mov     edi,DWORD [16+ebp]
        jmp     NEAR L$002loop
align   16
L$002loop:
        mov     eax,DWORD [esi]
        mov     ebx,DWORD [4+esi]
        mov     ecx,DWORD [8+esi]
        mov     edx,DWORD [12+esi]
        bswap   eax
        bswap   ebx
        bswap   ecx
        bswap   edx
        mov     DWORD [esp],eax
        mov     DWORD [4+esp],ebx
        mov     DWORD [8+esp],ecx
        mov     DWORD [12+esp],edx
        mov     eax,DWORD [16+esi]
        mov     ebx,DWORD [20+esi]
        mov     ecx,DWORD [24+esi]
        mov     edx,DWORD [28+esi]
        bswap   eax
        bswap   ebx
        bswap   ecx
        bswap   edx
        mov     DWORD [16+esp],eax
        mov     DWORD [20+esp],ebx
        mov     DWORD [24+esp],ecx
        mov     DWORD [28+esp],edx
        mov     eax,DWORD [32+esi]
        mov     ebx,DWORD [36+esi]
        mov     ecx,DWORD [40+esi]
        mov     edx,DWORD [44+esi]
        bswap   eax
        bswap   ebx
        bswap   ecx
        bswap   edx
        mov     DWORD [32+esp],eax
        mov     DWORD [36+esp],ebx
        mov     DWORD [40+esp],ecx
        mov     DWORD [44+esp],edx
        mov     eax,DWORD [48+esi]
        mov     ebx,DWORD [52+esi]
        mov     ecx,DWORD [56+esi]
        mov     edx,DWORD [60+esi]
        bswap   eax
        bswap   ebx
        bswap   ecx
        bswap   edx
        mov     DWORD [48+esp],eax
        mov     DWORD [52+esp],ebx
        mov     DWORD [56+esp],ecx
        mov     DWORD [60+esp],edx
        mov     DWORD [100+esp],esi
        mov     eax,DWORD [ebp]
        mov     ebx,DWORD [4+ebp]
        mov     ecx,DWORD [8+ebp]
        mov     edx,DWORD [12+ebp]
        ; 00_15 0
        mov     esi,ecx
        mov     ebp,eax
        rol     ebp,5
        xor     esi,edx
        add     ebp,edi
        mov     edi,DWORD [esp]
        and     esi,ebx
        ror     ebx,2
        xor     esi,edx
        lea     ebp,[1518500249+edi*1+ebp]
        add     ebp,esi
        ; 00_15 1
        mov     edi,ebx
        mov     esi,ebp
        rol     ebp,5
        xor     edi,ecx
        add     ebp,edx
        mov     edx,DWORD [4+esp]
        and     edi,eax
        ror     eax,2
        xor     edi,ecx
        lea     ebp,[1518500249+edx*1+ebp]
        add     ebp,edi
        ; 00_15 2
        mov     edx,eax
        mov     edi,ebp
        rol     ebp,5
        xor     edx,ebx
        add     ebp,ecx
        mov     ecx,DWORD [8+esp]
        and     edx,esi
        ror     esi,2
        xor     edx,ebx
        lea     ebp,[1518500249+ecx*1+ebp]
        add     ebp,edx
        ; 00_15 3
        mov     ecx,esi
        mov     edx,ebp
        rol     ebp,5
        xor     ecx,eax
        add     ebp,ebx
        mov     ebx,DWORD [12+esp]
        and     ecx,edi
        ror     edi,2
        xor     ecx,eax
        lea     ebp,[1518500249+ebx*1+ebp]
        add     ebp,ecx
        ; 00_15 4
        mov     ebx,edi
        mov     ecx,ebp
        rol     ebp,5
        xor     ebx,esi
        add     ebp,eax
        mov     eax,DWORD [16+esp]
        and     ebx,edx
        ror     edx,2
        xor     ebx,esi
        lea     ebp,[1518500249+eax*1+ebp]
        add     ebp,ebx
        ; 00_15 5
        mov     eax,edx
        mov     ebx,ebp
        rol     ebp,5
        xor     eax,edi
        add     ebp,esi
        mov     esi,DWORD [20+esp]
        and     eax,ecx
        ror     ecx,2
        xor     eax,edi
        lea     ebp,[1518500249+esi*1+ebp]
        add     ebp,eax
        ; 00_15 6
        mov     esi,ecx
        mov     eax,ebp
        rol     ebp,5
        xor     esi,edx
        add     ebp,edi
        mov     edi,DWORD [24+esp]
        and     esi,ebx
        ror     ebx,2
        xor     esi,edx
        lea     ebp,[1518500249+edi*1+ebp]
        add     ebp,esi
        ; 00_15 7
        mov     edi,ebx
        mov     esi,ebp
        rol     ebp,5
        xor     edi,ecx
        add     ebp,edx
        mov     edx,DWORD [28+esp]
        and     edi,eax
        ror     eax,2
        xor     edi,ecx
        lea     ebp,[1518500249+edx*1+ebp]
        add     ebp,edi
        ; 00_15 8
        mov     edx,eax
        mov     edi,ebp
        rol     ebp,5
        xor     edx,ebx
        add     ebp,ecx
        mov     ecx,DWORD [32+esp]
        and     edx,esi
        ror     esi,2
        xor     edx,ebx
        lea     ebp,[1518500249+ecx*1+ebp]
        add     ebp,edx
        ; 00_15 9
        mov     ecx,esi
        mov     edx,ebp
        rol     ebp,5
        xor     ecx,eax
        add     ebp,ebx
        mov     ebx,DWORD [36+esp]
        and     ecx,edi
        ror     edi,2
        xor     ecx,eax
        lea     ebp,[1518500249+ebx*1+ebp]
        add     ebp,ecx
        ; 00_15 10
        mov     ebx,edi
        mov     ecx,ebp
        rol     ebp,5
        xor     ebx,esi
        add     ebp,eax
        mov     eax,DWORD [40+esp]
        and     ebx,edx
        ror     edx,2
        xor     ebx,esi
        lea     ebp,[1518500249+eax*1+ebp]
        add     ebp,ebx
        ; 00_15 11
        mov     eax,edx
        mov     ebx,ebp
        rol     ebp,5
        xor     eax,edi
        add     ebp,esi
        mov     esi,DWORD [44+esp]
        and     eax,ecx
        ror     ecx,2
        xor     eax,edi
        lea     ebp,[1518500249+esi*1+ebp]
        add     ebp,eax
        ; 00_15 12
        mov     esi,ecx
        mov     eax,ebp
        rol     ebp,5
        xor     esi,edx
        add     ebp,edi
        mov     edi,DWORD [48+esp]
        and     esi,ebx
        ror     ebx,2
        xor     esi,edx
        lea     ebp,[1518500249+edi*1+ebp]
        add     ebp,esi
        ; 00_15 13
        mov     edi,ebx
        mov     esi,ebp
        rol     ebp,5
        xor     edi,ecx
        add     ebp,edx
        mov     edx,DWORD [52+esp]
        and     edi,eax
        ror     eax,2
        xor     edi,ecx
        lea     ebp,[1518500249+edx*1+ebp]
        add     ebp,edi
        ; 00_15 14
        mov     edx,eax
        mov     edi,ebp
        rol     ebp,5
        xor     edx,ebx
        add     ebp,ecx
        mov     ecx,DWORD [56+esp]
        and     edx,esi
        ror     esi,2
        xor     edx,ebx
        lea     ebp,[1518500249+ecx*1+ebp]
        add     ebp,edx
        ; 00_15 15
        mov     ecx,esi
        mov     edx,ebp
        rol     ebp,5
        xor     ecx,eax
        add     ebp,ebx
        mov     ebx,DWORD [60+esp]
        and     ecx,edi
        ror     edi,2
        xor     ecx,eax
        lea     ebp,[1518500249+ebx*1+ebp]
        mov     ebx,DWORD [esp]
        add     ecx,ebp
        ; 16_19 16
        mov     ebp,edi
        xor     ebx,DWORD [8+esp]
        xor     ebp,esi
        xor     ebx,DWORD [32+esp]
        and     ebp,edx
        xor     ebx,DWORD [52+esp]
        rol     ebx,1
        xor     ebp,esi
        add     eax,ebp
        mov     ebp,ecx
        ror     edx,2
        mov     DWORD [esp],ebx
        rol     ebp,5
        lea     ebx,[1518500249+eax*1+ebx]
        mov     eax,DWORD [4+esp]
        add     ebx,ebp
        ; 16_19 17
        mov     ebp,edx
        xor     eax,DWORD [12+esp]
        xor     ebp,edi
        xor     eax,DWORD [36+esp]
        and     ebp,ecx
        xor     eax,DWORD [56+esp]
        rol     eax,1
        xor     ebp,edi
        add     esi,ebp
        mov     ebp,ebx
        ror     ecx,2
        mov     DWORD [4+esp],eax
        rol     ebp,5
        lea     eax,[1518500249+esi*1+eax]
        mov     esi,DWORD [8+esp]
        add     eax,ebp
        ; 16_19 18
        mov     ebp,ecx
        xor     esi,DWORD [16+esp]
        xor     ebp,edx
        xor     esi,DWORD [40+esp]
        and     ebp,ebx
        xor     esi,DWORD [60+esp]
        rol     esi,1
        xor     ebp,edx
        add     edi,ebp
        mov     ebp,eax
        ror     ebx,2
        mov     DWORD [8+esp],esi
        rol     ebp,5
        lea     esi,[1518500249+edi*1+esi]
        mov     edi,DWORD [12+esp]
        add     esi,ebp
        ; 16_19 19
        mov     ebp,ebx
        xor     edi,DWORD [20+esp]
        xor     ebp,ecx
        xor     edi,DWORD [44+esp]
        and     ebp,eax
        xor     edi,DWORD [esp]
        rol     edi,1
        xor     ebp,ecx
        add     edx,ebp
        mov     ebp,esi
        ror     eax,2
        mov     DWORD [12+esp],edi
        rol     ebp,5
        lea     edi,[1518500249+edx*1+edi]
        mov     edx,DWORD [16+esp]
        add     edi,ebp
        ; 20_39 20
        mov     ebp,esi
        xor     edx,DWORD [24+esp]
        xor     ebp,eax
        xor     edx,DWORD [48+esp]
        xor     ebp,ebx
        xor     edx,DWORD [4+esp]
        rol     edx,1
        add     ecx,ebp
        ror     esi,2
        mov     ebp,edi
        rol     ebp,5
        mov     DWORD [16+esp],edx
        lea     edx,[1859775393+ecx*1+edx]
        mov     ecx,DWORD [20+esp]
        add     edx,ebp
        ; 20_39 21
        mov     ebp,edi
        xor     ecx,DWORD [28+esp]
        xor     ebp,esi
        xor     ecx,DWORD [52+esp]
        xor     ebp,eax
        xor     ecx,DWORD [8+esp]
        rol     ecx,1
        add     ebx,ebp
        ror     edi,2
        mov     ebp,edx
        rol     ebp,5
        mov     DWORD [20+esp],ecx
        lea     ecx,[1859775393+ebx*1+ecx]
        mov     ebx,DWORD [24+esp]
        add     ecx,ebp
        ; 20_39 22
        mov     ebp,edx
        xor     ebx,DWORD [32+esp]
        xor     ebp,edi
        xor     ebx,DWORD [56+esp]
        xor     ebp,esi
        xor     ebx,DWORD [12+esp]
        rol     ebx,1
        add     eax,ebp
        ror     edx,2
        mov     ebp,ecx
        rol     ebp,5
        mov     DWORD [24+esp],ebx
        lea     ebx,[1859775393+eax*1+ebx]
        mov     eax,DWORD [28+esp]
        add     ebx,ebp
        ; 20_39 23
        mov     ebp,ecx
        xor     eax,DWORD [36+esp]
        xor     ebp,edx
        xor     eax,DWORD [60+esp]
        xor     ebp,edi
        xor     eax,DWORD [16+esp]
        rol     eax,1
        add     esi,ebp
        ror     ecx,2
        mov     ebp,ebx
        rol     ebp,5
        mov     DWORD [28+esp],eax
        lea     eax,[1859775393+esi*1+eax]
        mov     esi,DWORD [32+esp]
        add     eax,ebp
        ; 20_39 24
        mov     ebp,ebx
        xor     esi,DWORD [40+esp]
        xor     ebp,ecx
        xor     esi,DWORD [esp]
        xor     ebp,edx
        xor     esi,DWORD [20+esp]
        rol     esi,1
        add     edi,ebp
        ror     ebx,2
        mov     ebp,eax
        rol     ebp,5
        mov     DWORD [32+esp],esi
        lea     esi,[1859775393+edi*1+esi]
        mov     edi,DWORD [36+esp]
        add     esi,ebp
        ; 20_39 25
        mov     ebp,eax
        xor     edi,DWORD [44+esp]
        xor     ebp,ebx
        xor     edi,DWORD [4+esp]
        xor     ebp,ecx
        xor     edi,DWORD [24+esp]
        rol     edi,1
        add     edx,ebp
        ror     eax,2
        mov     ebp,esi
        rol     ebp,5
        mov     DWORD [36+esp],edi
        lea     edi,[1859775393+edx*1+edi]
        mov     edx,DWORD [40+esp]
        add     edi,ebp
        ; 20_39 26
        mov     ebp,esi
        xor     edx,DWORD [48+esp]
        xor     ebp,eax
        xor     edx,DWORD [8+esp]
        xor     ebp,ebx
        xor     edx,DWORD [28+esp]
        rol     edx,1
        add     ecx,ebp
        ror     esi,2
        mov     ebp,edi
        rol     ebp,5
        mov     DWORD [40+esp],edx
        lea     edx,[1859775393+ecx*1+edx]
        mov     ecx,DWORD [44+esp]
        add     edx,ebp
        ; 20_39 27
        mov     ebp,edi
        xor     ecx,DWORD [52+esp]
        xor     ebp,esi
        xor     ecx,DWORD [12+esp]
        xor     ebp,eax
        xor     ecx,DWORD [32+esp]
        rol     ecx,1
        add     ebx,ebp
        ror     edi,2
        mov     ebp,edx
        rol     ebp,5
        mov     DWORD [44+esp],ecx
        lea     ecx,[1859775393+ebx*1+ecx]
        mov     ebx,DWORD [48+esp]
        add     ecx,ebp
        ; 20_39 28
        mov     ebp,edx
        xor     ebx,DWORD [56+esp]
        xor     ebp,edi
        xor     ebx,DWORD [16+esp]
        xor     ebp,esi
        xor     ebx,DWORD [36+esp]
        rol     ebx,1
        add     eax,ebp
        ror     edx,2
        mov     ebp,ecx
        rol     ebp,5
        mov     DWORD [48+esp],ebx
        lea     ebx,[1859775393+eax*1+ebx]
        mov     eax,DWORD [52+esp]
        add     ebx,ebp
        ; 20_39 29
        mov     ebp,ecx
        xor     eax,DWORD [60+esp]
        xor     ebp,edx
        xor     eax,DWORD [20+esp]
        xor     ebp,edi
        xor     eax,DWORD [40+esp]
        rol     eax,1
        add     esi,ebp
        ror     ecx,2
        mov     ebp,ebx
        rol     ebp,5
        mov     DWORD [52+esp],eax
        lea     eax,[1859775393+esi*1+eax]
        mov     esi,DWORD [56+esp]
        add     eax,ebp
        ; 20_39 30
        mov     ebp,ebx
        xor     esi,DWORD [esp]
        xor     ebp,ecx
        xor     esi,DWORD [24+esp]
        xor     ebp,edx
        xor     esi,DWORD [44+esp]
        rol     esi,1
        add     edi,ebp
        ror     ebx,2
        mov     ebp,eax
        rol     ebp,5
        mov     DWORD [56+esp],esi
        lea     esi,[1859775393+edi*1+esi]
        mov     edi,DWORD [60+esp]
        add     esi,ebp
        ; 20_39 31
        mov     ebp,eax
        xor     edi,DWORD [4+esp]
        xor     ebp,ebx
        xor     edi,DWORD [28+esp]
        xor     ebp,ecx
        xor     edi,DWORD [48+esp]
        rol     edi,1
        add     edx,ebp
        ror     eax,2
        mov     ebp,esi
        rol     ebp,5
        mov     DWORD [60+esp],edi
        lea     edi,[1859775393+edx*1+edi]
        mov     edx,DWORD [esp]
        add     edi,ebp
        ; 20_39 32
        mov     ebp,esi
        xor     edx,DWORD [8+esp]
        xor     ebp,eax
        xor     edx,DWORD [32+esp]
        xor     ebp,ebx
        xor     edx,DWORD [52+esp]
        rol     edx,1
        add     ecx,ebp
        ror     esi,2
        mov     ebp,edi
        rol     ebp,5
        mov     DWORD [esp],edx
        lea     edx,[1859775393+ecx*1+edx]
        mov     ecx,DWORD [4+esp]
        add     edx,ebp
        ; 20_39 33
        mov     ebp,edi
        xor     ecx,DWORD [12+esp]
        xor     ebp,esi
        xor     ecx,DWORD [36+esp]
        xor     ebp,eax
        xor     ecx,DWORD [56+esp]
        rol     ecx,1
        add     ebx,ebp
        ror     edi,2
        mov     ebp,edx
        rol     ebp,5
        mov     DWORD [4+esp],ecx
        lea     ecx,[1859775393+ebx*1+ecx]
        mov     ebx,DWORD [8+esp]
        add     ecx,ebp
        ; 20_39 34
        mov     ebp,edx
        xor     ebx,DWORD [16+esp]
        xor     ebp,edi
        xor     ebx,DWORD [40+esp]
        xor     ebp,esi
        xor     ebx,DWORD [60+esp]
        rol     ebx,1
        add     eax,ebp
        ror     edx,2
        mov     ebp,ecx
        rol     ebp,5
        mov     DWORD [8+esp],ebx
        lea     ebx,[1859775393+eax*1+ebx]
        mov     eax,DWORD [12+esp]
        add     ebx,ebp
        ; 20_39 35
        mov     ebp,ecx
        xor     eax,DWORD [20+esp]
        xor     ebp,edx
        xor     eax,DWORD [44+esp]
        xor     ebp,edi
        xor     eax,DWORD [esp]
        rol     eax,1
        add     esi,ebp
        ror     ecx,2
        mov     ebp,ebx
        rol     ebp,5
        mov     DWORD [12+esp],eax
        lea     eax,[1859775393+esi*1+eax]
        mov     esi,DWORD [16+esp]
        add     eax,ebp
        ; 20_39 36
        mov     ebp,ebx
        xor     esi,DWORD [24+esp]
        xor     ebp,ecx
        xor     esi,DWORD [48+esp]
        xor     ebp,edx
        xor     esi,DWORD [4+esp]
        rol     esi,1
        add     edi,ebp
        ror     ebx,2
        mov     ebp,eax
        rol     ebp,5
        mov     DWORD [16+esp],esi
        lea     esi,[1859775393+edi*1+esi]
        mov     edi,DWORD [20+esp]
        add     esi,ebp
        ; 20_39 37
        mov     ebp,eax
        xor     edi,DWORD [28+esp]
        xor     ebp,ebx
        xor     edi,DWORD [52+esp]
        xor     ebp,ecx
        xor     edi,DWORD [8+esp]
        rol     edi,1
        add     edx,ebp
        ror     eax,2
        mov     ebp,esi
        rol     ebp,5
        mov     DWORD [20+esp],edi
        lea     edi,[1859775393+edx*1+edi]
        mov     edx,DWORD [24+esp]
        add     edi,ebp
        ; 20_39 38
        mov     ebp,esi
        xor     edx,DWORD [32+esp]
        xor     ebp,eax
        xor     edx,DWORD [56+esp]
        xor     ebp,ebx
        xor     edx,DWORD [12+esp]
        rol     edx,1
        add     ecx,ebp
        ror     esi,2
        mov     ebp,edi
        rol     ebp,5
        mov     DWORD [24+esp],edx
        lea     edx,[1859775393+ecx*1+edx]
        mov     ecx,DWORD [28+esp]
        add     edx,ebp
        ; 20_39 39
        mov     ebp,edi
        xor     ecx,DWORD [36+esp]
        xor     ebp,esi
        xor     ecx,DWORD [60+esp]
        xor     ebp,eax
        xor     ecx,DWORD [16+esp]
        rol     ecx,1
        add     ebx,ebp
        ror     edi,2
        mov     ebp,edx
        rol     ebp,5
        mov     DWORD [28+esp],ecx
        lea     ecx,[1859775393+ebx*1+ecx]
        mov     ebx,DWORD [32+esp]
        add     ecx,ebp
        ; 40_59 40
        mov     ebp,edi
        xor     ebx,DWORD [40+esp]
        xor     ebp,esi
        xor     ebx,DWORD [esp]
        and     ebp,edx
        xor     ebx,DWORD [20+esp]
        rol     ebx,1
        add     ebp,eax
        ror     edx,2
        mov     eax,ecx
        rol     eax,5
        mov     DWORD [32+esp],ebx
        lea     ebx,[2400959708+ebp*1+ebx]
        mov     ebp,edi
        add     ebx,eax
        and     ebp,esi
        mov     eax,DWORD [36+esp]
        add     ebx,ebp
        ; 40_59 41
        mov     ebp,edx
        xor     eax,DWORD [44+esp]
        xor     ebp,edi
        xor     eax,DWORD [4+esp]
        and     ebp,ecx
        xor     eax,DWORD [24+esp]
        rol     eax,1
        add     ebp,esi
        ror     ecx,2
        mov     esi,ebx
        rol     esi,5
        mov     DWORD [36+esp],eax
        lea     eax,[2400959708+ebp*1+eax]
        mov     ebp,edx
        add     eax,esi
        and     ebp,edi
        mov     esi,DWORD [40+esp]
        add     eax,ebp
        ; 40_59 42
        mov     ebp,ecx
        xor     esi,DWORD [48+esp]
        xor     ebp,edx
        xor     esi,DWORD [8+esp]
        and     ebp,ebx
        xor     esi,DWORD [28+esp]
        rol     esi,1
        add     ebp,edi
        ror     ebx,2
        mov     edi,eax
        rol     edi,5
        mov     DWORD [40+esp],esi
        lea     esi,[2400959708+ebp*1+esi]
        mov     ebp,ecx
        add     esi,edi
        and     ebp,edx
        mov     edi,DWORD [44+esp]
        add     esi,ebp
        ; 40_59 43
        mov     ebp,ebx
        xor     edi,DWORD [52+esp]
        xor     ebp,ecx
        xor     edi,DWORD [12+esp]
        and     ebp,eax
        xor     edi,DWORD [32+esp]
        rol     edi,1
        add     ebp,edx
        ror     eax,2
        mov     edx,esi
        rol     edx,5
        mov     DWORD [44+esp],edi
        lea     edi,[2400959708+ebp*1+edi]
        mov     ebp,ebx
        add     edi,edx
        and     ebp,ecx
        mov     edx,DWORD [48+esp]
        add     edi,ebp
        ; 40_59 44
        mov     ebp,eax
        xor     edx,DWORD [56+esp]
        xor     ebp,ebx
        xor     edx,DWORD [16+esp]
        and     ebp,esi
        xor     edx,DWORD [36+esp]
        rol     edx,1
        add     ebp,ecx
        ror     esi,2
        mov     ecx,edi
        rol     ecx,5
        mov     DWORD [48+esp],edx
        lea     edx,[2400959708+ebp*1+edx]
        mov     ebp,eax
        add     edx,ecx
        and     ebp,ebx
        mov     ecx,DWORD [52+esp]
        add     edx,ebp
        ; 40_59 45
        mov     ebp,esi
        xor     ecx,DWORD [60+esp]
        xor     ebp,eax
        xor     ecx,DWORD [20+esp]
        and     ebp,edi
        xor     ecx,DWORD [40+esp]
        rol     ecx,1
        add     ebp,ebx
        ror     edi,2
        mov     ebx,edx
        rol     ebx,5
        mov     DWORD [52+esp],ecx
        lea     ecx,[2400959708+ebp*1+ecx]
        mov     ebp,esi
        add     ecx,ebx
        and     ebp,eax
        mov     ebx,DWORD [56+esp]
        add     ecx,ebp
        ; 40_59 46
        mov     ebp,edi
        xor     ebx,DWORD [esp]
        xor     ebp,esi
        xor     ebx,DWORD [24+esp]
        and     ebp,edx
        xor     ebx,DWORD [44+esp]
        rol     ebx,1
        add     ebp,eax
        ror     edx,2
        mov     eax,ecx
        rol     eax,5
        mov     DWORD [56+esp],ebx
        lea     ebx,[2400959708+ebp*1+ebx]
        mov     ebp,edi
        add     ebx,eax
        and     ebp,esi
        mov     eax,DWORD [60+esp]
        add     ebx,ebp
        ; 40_59 47
        mov     ebp,edx
        xor     eax,DWORD [4+esp]
        xor     ebp,edi
        xor     eax,DWORD [28+esp]
        and     ebp,ecx
        xor     eax,DWORD [48+esp]
        rol     eax,1
        add     ebp,esi
        ror     ecx,2
        mov     esi,ebx
        rol     esi,5
        mov     DWORD [60+esp],eax
        lea     eax,[2400959708+ebp*1+eax]
        mov     ebp,edx
        add     eax,esi
        and     ebp,edi
        mov     esi,DWORD [esp]
        add     eax,ebp
        ; 40_59 48
        mov     ebp,ecx
        xor     esi,DWORD [8+esp]
        xor     ebp,edx
        xor     esi,DWORD [32+esp]
        and     ebp,ebx
        xor     esi,DWORD [52+esp]
        rol     esi,1
        add     ebp,edi
        ror     ebx,2
        mov     edi,eax
        rol     edi,5
        mov     DWORD [esp],esi
        lea     esi,[2400959708+ebp*1+esi]
        mov     ebp,ecx
        add     esi,edi
        and     ebp,edx
        mov     edi,DWORD [4+esp]
        add     esi,ebp
        ; 40_59 49
        mov     ebp,ebx
        xor     edi,DWORD [12+esp]
        xor     ebp,ecx
        xor     edi,DWORD [36+esp]
        and     ebp,eax
        xor     edi,DWORD [56+esp]
        rol     edi,1
        add     ebp,edx
        ror     eax,2
        mov     edx,esi
        rol     edx,5
        mov     DWORD [4+esp],edi
        lea     edi,[2400959708+ebp*1+edi]
        mov     ebp,ebx
        add     edi,edx
        and     ebp,ecx
        mov     edx,DWORD [8+esp]
        add     edi,ebp
        ; 40_59 50
        mov     ebp,eax
        xor     edx,DWORD [16+esp]
        xor     ebp,ebx
        xor     edx,DWORD [40+esp]
        and     ebp,esi
        xor     edx,DWORD [60+esp]
        rol     edx,1
        add     ebp,ecx
        ror     esi,2
        mov     ecx,edi
        rol     ecx,5
        mov     DWORD [8+esp],edx
        lea     edx,[2400959708+ebp*1+edx]
        mov     ebp,eax
        add     edx,ecx
        and     ebp,ebx
        mov     ecx,DWORD [12+esp]
        add     edx,ebp
        ; 40_59 51
        mov     ebp,esi
        xor     ecx,DWORD [20+esp]
        xor     ebp,eax
        xor     ecx,DWORD [44+esp]
        and     ebp,edi
        xor     ecx,DWORD [esp]
        rol     ecx,1
        add     ebp,ebx
        ror     edi,2
        mov     ebx,edx
        rol     ebx,5
        mov     DWORD [12+esp],ecx
        lea     ecx,[2400959708+ebp*1+ecx]
        mov     ebp,esi
        add     ecx,ebx
        and     ebp,eax
        mov     ebx,DWORD [16+esp]
        add     ecx,ebp
        ; 40_59 52
        mov     ebp,edi
        xor     ebx,DWORD [24+esp]
        xor     ebp,esi
        xor     ebx,DWORD [48+esp]
        and     ebp,edx
        xor     ebx,DWORD [4+esp]
        rol     ebx,1
        add     ebp,eax
        ror     edx,2
        mov     eax,ecx
        rol     eax,5
        mov     DWORD [16+esp],ebx
        lea     ebx,[2400959708+ebp*1+ebx]
        mov     ebp,edi
        add     ebx,eax
        and     ebp,esi
        mov     eax,DWORD [20+esp]
        add     ebx,ebp
        ; 40_59 53
        mov     ebp,edx
        xor     eax,DWORD [28+esp]
        xor     ebp,edi
        xor     eax,DWORD [52+esp]
        and     ebp,ecx
        xor     eax,DWORD [8+esp]
        rol     eax,1
        add     ebp,esi
        ror     ecx,2
        mov     esi,ebx
        rol     esi,5
        mov     DWORD [20+esp],eax
        lea     eax,[2400959708+ebp*1+eax]
        mov     ebp,edx
        add     eax,esi
        and     ebp,edi
        mov     esi,DWORD [24+esp]
        add     eax,ebp
        ; 40_59 54
        mov     ebp,ecx
        xor     esi,DWORD [32+esp]
        xor     ebp,edx
        xor     esi,DWORD [56+esp]
        and     ebp,ebx
        xor     esi,DWORD [12+esp]
        rol     esi,1
        add     ebp,edi
        ror     ebx,2
        mov     edi,eax
        rol     edi,5
        mov     DWORD [24+esp],esi
        lea     esi,[2400959708+ebp*1+esi]
        mov     ebp,ecx
        add     esi,edi
        and     ebp,edx
        mov     edi,DWORD [28+esp]
        add     esi,ebp
        ; 40_59 55
        mov     ebp,ebx
        xor     edi,DWORD [36+esp]
        xor     ebp,ecx
        xor     edi,DWORD [60+esp]
        and     ebp,eax
        xor     edi,DWORD [16+esp]
        rol     edi,1
        add     ebp,edx
        ror     eax,2
        mov     edx,esi
        rol     edx,5
        mov     DWORD [28+esp],edi
        lea     edi,[2400959708+ebp*1+edi]
        mov     ebp,ebx
        add     edi,edx
        and     ebp,ecx
        mov     edx,DWORD [32+esp]
        add     edi,ebp
        ; 40_59 56
        mov     ebp,eax
        xor     edx,DWORD [40+esp]
        xor     ebp,ebx
        xor     edx,DWORD [esp]
        and     ebp,esi
        xor     edx,DWORD [20+esp]
        rol     edx,1
        add     ebp,ecx
        ror     esi,2
        mov     ecx,edi
        rol     ecx,5
        mov     DWORD [32+esp],edx
        lea     edx,[2400959708+ebp*1+edx]
        mov     ebp,eax
        add     edx,ecx
        and     ebp,ebx
        mov     ecx,DWORD [36+esp]
        add     edx,ebp
        ; 40_59 57
        mov     ebp,esi
        xor     ecx,DWORD [44+esp]
        xor     ebp,eax
        xor     ecx,DWORD [4+esp]
        and     ebp,edi
        xor     ecx,DWORD [24+esp]
        rol     ecx,1
        add     ebp,ebx
        ror     edi,2
        mov     ebx,edx
        rol     ebx,5
        mov     DWORD [36+esp],ecx
        lea     ecx,[2400959708+ebp*1+ecx]
        mov     ebp,esi
        add     ecx,ebx
        and     ebp,eax
        mov     ebx,DWORD [40+esp]
        add     ecx,ebp
        ; 40_59 58
        mov     ebp,edi
        xor     ebx,DWORD [48+esp]
        xor     ebp,esi
        xor     ebx,DWORD [8+esp]
        and     ebp,edx
        xor     ebx,DWORD [28+esp]
        rol     ebx,1
        add     ebp,eax
        ror     edx,2
        mov     eax,ecx
        rol     eax,5
        mov     DWORD [40+esp],ebx
        lea     ebx,[2400959708+ebp*1+ebx]
        mov     ebp,edi
        add     ebx,eax
        and     ebp,esi
        mov     eax,DWORD [44+esp]
        add     ebx,ebp
        ; 40_59 59
        mov     ebp,edx
        xor     eax,DWORD [52+esp]
        xor     ebp,edi
        xor     eax,DWORD [12+esp]
        and     ebp,ecx
        xor     eax,DWORD [32+esp]
        rol     eax,1
        add     ebp,esi
        ror     ecx,2
        mov     esi,ebx
        rol     esi,5
        mov     DWORD [44+esp],eax
        lea     eax,[2400959708+ebp*1+eax]
        mov     ebp,edx
        add     eax,esi
        and     ebp,edi
        mov     esi,DWORD [48+esp]
        add     eax,ebp
        ; 20_39 60
        mov     ebp,ebx
        xor     esi,DWORD [56+esp]
        xor     ebp,ecx
        xor     esi,DWORD [16+esp]
        xor     ebp,edx
        xor     esi,DWORD [36+esp]
        rol     esi,1
        add     edi,ebp
        ror     ebx,2
        mov     ebp,eax
        rol     ebp,5
        mov     DWORD [48+esp],esi
        lea     esi,[3395469782+edi*1+esi]
        mov     edi,DWORD [52+esp]
        add     esi,ebp
        ; 20_39 61
        mov     ebp,eax
        xor     edi,DWORD [60+esp]
        xor     ebp,ebx
        xor     edi,DWORD [20+esp]
        xor     ebp,ecx
        xor     edi,DWORD [40+esp]
        rol     edi,1
        add     edx,ebp
        ror     eax,2
        mov     ebp,esi
        rol     ebp,5
        mov     DWORD [52+esp],edi
        lea     edi,[3395469782+edx*1+edi]
        mov     edx,DWORD [56+esp]
        add     edi,ebp
        ; 20_39 62
        mov     ebp,esi
        xor     edx,DWORD [esp]
        xor     ebp,eax
        xor     edx,DWORD [24+esp]
        xor     ebp,ebx
        xor     edx,DWORD [44+esp]
        rol     edx,1
        add     ecx,ebp
        ror     esi,2
        mov     ebp,edi
        rol     ebp,5
        mov     DWORD [56+esp],edx
        lea     edx,[3395469782+ecx*1+edx]
        mov     ecx,DWORD [60+esp]
        add     edx,ebp
        ; 20_39 63
        mov     ebp,edi
        xor     ecx,DWORD [4+esp]
        xor     ebp,esi
        xor     ecx,DWORD [28+esp]
        xor     ebp,eax
        xor     ecx,DWORD [48+esp]
        rol     ecx,1
        add     ebx,ebp
        ror     edi,2
        mov     ebp,edx
        rol     ebp,5
        mov     DWORD [60+esp],ecx
        lea     ecx,[3395469782+ebx*1+ecx]
        mov     ebx,DWORD [esp]
        add     ecx,ebp
        ; 20_39 64
        mov     ebp,edx
        xor     ebx,DWORD [8+esp]
        xor     ebp,edi
        xor     ebx,DWORD [32+esp]
        xor     ebp,esi
        xor     ebx,DWORD [52+esp]
        rol     ebx,1
        add     eax,ebp
        ror     edx,2
        mov     ebp,ecx
        rol     ebp,5
        mov     DWORD [esp],ebx
        lea     ebx,[3395469782+eax*1+ebx]
        mov     eax,DWORD [4+esp]
        add     ebx,ebp
        ; 20_39 65
        mov     ebp,ecx
        xor     eax,DWORD [12+esp]
        xor     ebp,edx
        xor     eax,DWORD [36+esp]
        xor     ebp,edi
        xor     eax,DWORD [56+esp]
        rol     eax,1
        add     esi,ebp
        ror     ecx,2
        mov     ebp,ebx
        rol     ebp,5
        mov     DWORD [4+esp],eax
        lea     eax,[3395469782+esi*1+eax]
        mov     esi,DWORD [8+esp]
        add     eax,ebp
        ; 20_39 66
        mov     ebp,ebx
        xor     esi,DWORD [16+esp]
        xor     ebp,ecx
        xor     esi,DWORD [40+esp]
        xor     ebp,edx
        xor     esi,DWORD [60+esp]
        rol     esi,1
        add     edi,ebp
        ror     ebx,2
        mov     ebp,eax
        rol     ebp,5
        mov     DWORD [8+esp],esi
        lea     esi,[3395469782+edi*1+esi]
        mov     edi,DWORD [12+esp]
        add     esi,ebp
        ; 20_39 67
        mov     ebp,eax
        xor     edi,DWORD [20+esp]
        xor     ebp,ebx
        xor     edi,DWORD [44+esp]
        xor     ebp,ecx
        xor     edi,DWORD [esp]
        rol     edi,1
        add     edx,ebp
        ror     eax,2
        mov     ebp,esi
        rol     ebp,5
        mov     DWORD [12+esp],edi
        lea     edi,[3395469782+edx*1+edi]
        mov     edx,DWORD [16+esp]
        add     edi,ebp
        ; 20_39 68
        mov     ebp,esi
        xor     edx,DWORD [24+esp]
        xor     ebp,eax
        xor     edx,DWORD [48+esp]
        xor     ebp,ebx
        xor     edx,DWORD [4+esp]
        rol     edx,1
        add     ecx,ebp
        ror     esi,2
        mov     ebp,edi
        rol     ebp,5
        mov     DWORD [16+esp],edx
        lea     edx,[3395469782+ecx*1+edx]
        mov     ecx,DWORD [20+esp]
        add     edx,ebp
        ; 20_39 69
        mov     ebp,edi
        xor     ecx,DWORD [28+esp]
        xor     ebp,esi
        xor     ecx,DWORD [52+esp]
        xor     ebp,eax
        xor     ecx,DWORD [8+esp]
        rol     ecx,1
        add     ebx,ebp
        ror     edi,2
        mov     ebp,edx
        rol     ebp,5
        mov     DWORD [20+esp],ecx
        lea     ecx,[3395469782+ebx*1+ecx]
        mov     ebx,DWORD [24+esp]
        add     ecx,ebp
        ; 20_39 70
        mov     ebp,edx
        xor     ebx,DWORD [32+esp]
        xor     ebp,edi
        xor     ebx,DWORD [56+esp]
        xor     ebp,esi
        xor     ebx,DWORD [12+esp]
        rol     ebx,1
        add     eax,ebp
        ror     edx,2
        mov     ebp,ecx
        rol     ebp,5
        mov     DWORD [24+esp],ebx
        lea     ebx,[3395469782+eax*1+ebx]
        mov     eax,DWORD [28+esp]
        add     ebx,ebp
        ; 20_39 71
        mov     ebp,ecx
        xor     eax,DWORD [36+esp]
        xor     ebp,edx
        xor     eax,DWORD [60+esp]
        xor     ebp,edi
        xor     eax,DWORD [16+esp]
        rol     eax,1
        add     esi,ebp
        ror     ecx,2
        mov     ebp,ebx
        rol     ebp,5
        mov     DWORD [28+esp],eax
        lea     eax,[3395469782+esi*1+eax]
        mov     esi,DWORD [32+esp]
        add     eax,ebp
        ; 20_39 72
        mov     ebp,ebx
        xor     esi,DWORD [40+esp]
        xor     ebp,ecx
        xor     esi,DWORD [esp]
        xor     ebp,edx
        xor     esi,DWORD [20+esp]
        rol     esi,1
        add     edi,ebp
        ror     ebx,2
        mov     ebp,eax
        rol     ebp,5
        mov     DWORD [32+esp],esi
        lea     esi,[3395469782+edi*1+esi]
        mov     edi,DWORD [36+esp]
        add     esi,ebp
        ; 20_39 73
        mov     ebp,eax
        xor     edi,DWORD [44+esp]
        xor     ebp,ebx
        xor     edi,DWORD [4+esp]
        xor     ebp,ecx
        xor     edi,DWORD [24+esp]
        rol     edi,1
        add     edx,ebp
        ror     eax,2
        mov     ebp,esi
        rol     ebp,5
        mov     DWORD [36+esp],edi
        lea     edi,[3395469782+edx*1+edi]
        mov     edx,DWORD [40+esp]
        add     edi,ebp
        ; 20_39 74
        mov     ebp,esi
        xor     edx,DWORD [48+esp]
        xor     ebp,eax
        xor     edx,DWORD [8+esp]
        xor     ebp,ebx
        xor     edx,DWORD [28+esp]
        rol     edx,1
        add     ecx,ebp
        ror     esi,2
        mov     ebp,edi
        rol     ebp,5
        mov     DWORD [40+esp],edx
        lea     edx,[3395469782+ecx*1+edx]
        mov     ecx,DWORD [44+esp]
        add     edx,ebp
        ; 20_39 75
        mov     ebp,edi
        xor     ecx,DWORD [52+esp]
        xor     ebp,esi
        xor     ecx,DWORD [12+esp]
        xor     ebp,eax
        xor     ecx,DWORD [32+esp]
        rol     ecx,1
        add     ebx,ebp
        ror     edi,2
        mov     ebp,edx
        rol     ebp,5
        mov     DWORD [44+esp],ecx
        lea     ecx,[3395469782+ebx*1+ecx]
        mov     ebx,DWORD [48+esp]
        add     ecx,ebp
        ; 20_39 76
        mov     ebp,edx
        xor     ebx,DWORD [56+esp]
        xor     ebp,edi
        xor     ebx,DWORD [16+esp]
        xor     ebp,esi
        xor     ebx,DWORD [36+esp]
        rol     ebx,1
        add     eax,ebp
        ror     edx,2
        mov     ebp,ecx
        rol     ebp,5
        mov     DWORD [48+esp],ebx
        lea     ebx,[3395469782+eax*1+ebx]
        mov     eax,DWORD [52+esp]
        add     ebx,ebp
        ; 20_39 77
        mov     ebp,ecx
        xor     eax,DWORD [60+esp]
        xor     ebp,edx
        xor     eax,DWORD [20+esp]
        xor     ebp,edi
        xor     eax,DWORD [40+esp]
        rol     eax,1
        add     esi,ebp
        ror     ecx,2
        mov     ebp,ebx
        rol     ebp,5
        lea     eax,[3395469782+esi*1+eax]
        mov     esi,DWORD [56+esp]
        add     eax,ebp
        ; 20_39 78
        mov     ebp,ebx
        xor     esi,DWORD [esp]
        xor     ebp,ecx
        xor     esi,DWORD [24+esp]
        xor     ebp,edx
        xor     esi,DWORD [44+esp]
        rol     esi,1
        add     edi,ebp
        ror     ebx,2
        mov     ebp,eax
        rol     ebp,5
        lea     esi,[3395469782+edi*1+esi]
        mov     edi,DWORD [60+esp]
        add     esi,ebp
        ; 20_39 79
        mov     ebp,eax
        xor     edi,DWORD [4+esp]
        xor     ebp,ebx
        xor     edi,DWORD [28+esp]
        xor     ebp,ecx
        xor     edi,DWORD [48+esp]
        rol     edi,1
        add     edx,ebp
        ror     eax,2
        mov     ebp,esi
        rol     ebp,5
        lea     edi,[3395469782+edx*1+edi]
        add     edi,ebp
        mov     ebp,DWORD [96+esp]
        mov     edx,DWORD [100+esp]
        add     edi,DWORD [ebp]
        add     esi,DWORD [4+ebp]
        add     eax,DWORD [8+ebp]
        add     ebx,DWORD [12+ebp]
        add     ecx,DWORD [16+ebp]
        mov     DWORD [ebp],edi
        add     edx,64
        mov     DWORD [4+ebp],esi
        cmp     edx,DWORD [104+esp]
        mov     DWORD [8+ebp],eax
        mov     edi,ecx
        mov     DWORD [12+ebp],ebx
        mov     esi,edx
        mov     DWORD [16+ebp],ecx
        jb      NEAR L$002loop
        add     esp,76
        pop     edi
        pop     esi
        pop     ebx
        pop     ebp
        ret
align   16
__sha1_block_data_order_shaext:
        push    ebp
        push    ebx
        push    esi
        push    edi
        call    L$003pic_point
L$003pic_point:
        pop     ebp
        lea     ebp,[(L$K_XX_XX-L$003pic_point)+ebp]
L$shaext_shortcut:
        mov     edi,DWORD [20+esp]
        mov     ebx,esp
        mov     esi,DWORD [24+esp]
        mov     ecx,DWORD [28+esp]
        sub     esp,32
        movdqu  xmm0,[edi]
        movd    xmm1,DWORD [16+edi]
        and     esp,-32
        movdqa  xmm3,[80+ebp]
        movdqu  xmm4,[esi]
        pshufd  xmm0,xmm0,27
        movdqu  xmm5,[16+esi]
        pshufd  xmm1,xmm1,27
        movdqu  xmm6,[32+esi]
db      102,15,56,0,227
        movdqu  xmm7,[48+esi]
db      102,15,56,0,235
db      102,15,56,0,243
db      102,15,56,0,251
        jmp     NEAR L$004loop_shaext
align   16
L$004loop_shaext:
        dec     ecx
        lea     eax,[64+esi]
        movdqa  [esp],xmm1
        paddd   xmm1,xmm4
        cmovne  esi,eax
        movdqa  [16+esp],xmm0
db      15,56,201,229
        movdqa  xmm2,xmm0
db      15,58,204,193,0
db      15,56,200,213
        pxor    xmm4,xmm6
db      15,56,201,238
db      15,56,202,231
        movdqa  xmm1,xmm0
db      15,58,204,194,0
db      15,56,200,206
        pxor    xmm5,xmm7
db      15,56,202,236
db      15,56,201,247
        movdqa  xmm2,xmm0
db      15,58,204,193,0
db      15,56,200,215
        pxor    xmm6,xmm4
db      15,56,201,252
db      15,56,202,245
        movdqa  xmm1,xmm0
db      15,58,204,194,0
db      15,56,200,204
        pxor    xmm7,xmm5
db      15,56,202,254
db      15,56,201,229
        movdqa  xmm2,xmm0
db      15,58,204,193,0
db      15,56,200,213
        pxor    xmm4,xmm6
db      15,56,201,238
db      15,56,202,231
        movdqa  xmm1,xmm0
db      15,58,204,194,1
db      15,56,200,206
        pxor    xmm5,xmm7
db      15,56,202,236
db      15,56,201,247
        movdqa  xmm2,xmm0
db      15,58,204,193,1
db      15,56,200,215
        pxor    xmm6,xmm4
db      15,56,201,252
db      15,56,202,245
        movdqa  xmm1,xmm0
db      15,58,204,194,1
db      15,56,200,204
        pxor    xmm7,xmm5
db      15,56,202,254
db      15,56,201,229
        movdqa  xmm2,xmm0
db      15,58,204,193,1
db      15,56,200,213
        pxor    xmm4,xmm6
db      15,56,201,238
db      15,56,202,231
        movdqa  xmm1,xmm0
db      15,58,204,194,1
db      15,56,200,206
        pxor    xmm5,xmm7
db      15,56,202,236
db      15,56,201,247
        movdqa  xmm2,xmm0
db      15,58,204,193,2
db      15,56,200,215
        pxor    xmm6,xmm4
db      15,56,201,252
db      15,56,202,245
        movdqa  xmm1,xmm0
db      15,58,204,194,2
db      15,56,200,204
        pxor    xmm7,xmm5
db      15,56,202,254
db      15,56,201,229
        movdqa  xmm2,xmm0
db      15,58,204,193,2
db      15,56,200,213
        pxor    xmm4,xmm6
db      15,56,201,238
db      15,56,202,231
        movdqa  xmm1,xmm0
db      15,58,204,194,2
db      15,56,200,206
        pxor    xmm5,xmm7
db      15,56,202,236
db      15,56,201,247
        movdqa  xmm2,xmm0
db      15,58,204,193,2
db      15,56,200,215
        pxor    xmm6,xmm4
db      15,56,201,252
db      15,56,202,245
        movdqa  xmm1,xmm0
db      15,58,204,194,3
db      15,56,200,204
        pxor    xmm7,xmm5
db      15,56,202,254
        movdqu  xmm4,[esi]
        movdqa  xmm2,xmm0
db      15,58,204,193,3
db      15,56,200,213
        movdqu  xmm5,[16+esi]
db      102,15,56,0,227
        movdqa  xmm1,xmm0
db      15,58,204,194,3
db      15,56,200,206
        movdqu  xmm6,[32+esi]
db      102,15,56,0,235
        movdqa  xmm2,xmm0
db      15,58,204,193,3
db      15,56,200,215
        movdqu  xmm7,[48+esi]
db      102,15,56,0,243
        movdqa  xmm1,xmm0
db      15,58,204,194,3
        movdqa  xmm2,[esp]
db      102,15,56,0,251
db      15,56,200,202
        paddd   xmm0,[16+esp]
        jnz     NEAR L$004loop_shaext
        pshufd  xmm0,xmm0,27
        pshufd  xmm1,xmm1,27
        movdqu  [edi],xmm0
        movd    DWORD [16+edi],xmm1
        mov     esp,ebx
        pop     edi
        pop     esi
        pop     ebx
        pop     ebp
        ret
align   16
__sha1_block_data_order_ssse3:
        push    ebp
        push    ebx
        push    esi
        push    edi
        call    L$005pic_point
L$005pic_point:
        pop     ebp
        lea     ebp,[(L$K_XX_XX-L$005pic_point)+ebp]
L$ssse3_shortcut:
        movdqa  xmm7,[ebp]
        movdqa  xmm0,[16+ebp]
        movdqa  xmm1,[32+ebp]
        movdqa  xmm2,[48+ebp]
        movdqa  xmm6,[64+ebp]
        mov     edi,DWORD [20+esp]
        mov     ebp,DWORD [24+esp]
        mov     edx,DWORD [28+esp]
        mov     esi,esp
        sub     esp,208
        and     esp,-64
        movdqa  [112+esp],xmm0
        movdqa  [128+esp],xmm1
        movdqa  [144+esp],xmm2
        shl     edx,6
        movdqa  [160+esp],xmm7
        add     edx,ebp
        movdqa  [176+esp],xmm6
        add     ebp,64
        mov     DWORD [192+esp],edi
        mov     DWORD [196+esp],ebp
        mov     DWORD [200+esp],edx
        mov     DWORD [204+esp],esi
        mov     eax,DWORD [edi]
        mov     ebx,DWORD [4+edi]
        mov     ecx,DWORD [8+edi]
        mov     edx,DWORD [12+edi]
        mov     edi,DWORD [16+edi]
        mov     esi,ebx
        movdqu  xmm0,[ebp-64]
        movdqu  xmm1,[ebp-48]
        movdqu  xmm2,[ebp-32]
        movdqu  xmm3,[ebp-16]
db      102,15,56,0,198
db      102,15,56,0,206
db      102,15,56,0,214
        movdqa  [96+esp],xmm7
db      102,15,56,0,222
        paddd   xmm0,xmm7
        paddd   xmm1,xmm7
        paddd   xmm2,xmm7
        movdqa  [esp],xmm0
        psubd   xmm0,xmm7
        movdqa  [16+esp],xmm1
        psubd   xmm1,xmm7
        movdqa  [32+esp],xmm2
        mov     ebp,ecx
        psubd   xmm2,xmm7
        xor     ebp,edx
        pshufd  xmm4,xmm0,238
        and     esi,ebp
        jmp     NEAR L$006loop
align   16
L$006loop:
        ror     ebx,2
        xor     esi,edx
        mov     ebp,eax
        punpcklqdq      xmm4,xmm1
        movdqa  xmm6,xmm3
        add     edi,DWORD [esp]
        xor     ebx,ecx
        paddd   xmm7,xmm3
        movdqa  [64+esp],xmm0
        rol     eax,5
        add     edi,esi
        psrldq  xmm6,4
        and     ebp,ebx
        xor     ebx,ecx
        pxor    xmm4,xmm0
        add     edi,eax
        ror     eax,7
        pxor    xmm6,xmm2
        xor     ebp,ecx
        mov     esi,edi
        add     edx,DWORD [4+esp]
        pxor    xmm4,xmm6
        xor     eax,ebx
        rol     edi,5
        movdqa  [48+esp],xmm7
        add     edx,ebp
        and     esi,eax
        movdqa  xmm0,xmm4
        xor     eax,ebx
        add     edx,edi
        ror     edi,7
        movdqa  xmm6,xmm4
        xor     esi,ebx
        pslldq  xmm0,12
        paddd   xmm4,xmm4
        mov     ebp,edx
        add     ecx,DWORD [8+esp]
        psrld   xmm6,31
        xor     edi,eax
        rol     edx,5
        movdqa  xmm7,xmm0
        add     ecx,esi
        and     ebp,edi
        xor     edi,eax
        psrld   xmm0,30
        add     ecx,edx
        ror     edx,7
        por     xmm4,xmm6
        xor     ebp,eax
        mov     esi,ecx
        add     ebx,DWORD [12+esp]
        pslld   xmm7,2
        xor     edx,edi
        rol     ecx,5
        pxor    xmm4,xmm0
        movdqa  xmm0,[96+esp]
        add     ebx,ebp
        and     esi,edx
        pxor    xmm4,xmm7
        pshufd  xmm5,xmm1,238
        xor     edx,edi
        add     ebx,ecx
        ror     ecx,7
        xor     esi,edi
        mov     ebp,ebx
        punpcklqdq      xmm5,xmm2
        movdqa  xmm7,xmm4
        add     eax,DWORD [16+esp]
        xor     ecx,edx
        paddd   xmm0,xmm4
        movdqa  [80+esp],xmm1
        rol     ebx,5
        add     eax,esi
        psrldq  xmm7,4
        and     ebp,ecx
        xor     ecx,edx
        pxor    xmm5,xmm1
        add     eax,ebx
        ror     ebx,7
        pxor    xmm7,xmm3
        xor     ebp,edx
        mov     esi,eax
        add     edi,DWORD [20+esp]
        pxor    xmm5,xmm7
        xor     ebx,ecx
        rol     eax,5
        movdqa  [esp],xmm0
        add     edi,ebp
        and     esi,ebx
        movdqa  xmm1,xmm5
        xor     ebx,ecx
        add     edi,eax
        ror     eax,7
        movdqa  xmm7,xmm5
        xor     esi,ecx
        pslldq  xmm1,12
        paddd   xmm5,xmm5
        mov     ebp,edi
        add     edx,DWORD [24+esp]
        psrld   xmm7,31
        xor     eax,ebx
        rol     edi,5
        movdqa  xmm0,xmm1
        add     edx,esi
        and     ebp,eax
        xor     eax,ebx
        psrld   xmm1,30
        add     edx,edi
        ror     edi,7
        por     xmm5,xmm7
        xor     ebp,ebx
        mov     esi,edx
        add     ecx,DWORD [28+esp]
        pslld   xmm0,2
        xor     edi,eax
        rol     edx,5
        pxor    xmm5,xmm1
        movdqa  xmm1,[112+esp]
        add     ecx,ebp
        and     esi,edi
        pxor    xmm5,xmm0
        pshufd  xmm6,xmm2,238
        xor     edi,eax
        add     ecx,edx
        ror     edx,7
        xor     esi,eax
        mov     ebp,ecx
        punpcklqdq      xmm6,xmm3
        movdqa  xmm0,xmm5
        add     ebx,DWORD [32+esp]
        xor     edx,edi
        paddd   xmm1,xmm5
        movdqa  [96+esp],xmm2
        rol     ecx,5
        add     ebx,esi
        psrldq  xmm0,4
        and     ebp,edx
        xor     edx,edi
        pxor    xmm6,xmm2
        add     ebx,ecx
        ror     ecx,7
        pxor    xmm0,xmm4
        xor     ebp,edi
        mov     esi,ebx
        add     eax,DWORD [36+esp]
        pxor    xmm6,xmm0
        xor     ecx,edx
        rol     ebx,5
        movdqa  [16+esp],xmm1
        add     eax,ebp
        and     esi,ecx
        movdqa  xmm2,xmm6
        xor     ecx,edx
        add     eax,ebx
        ror     ebx,7
        movdqa  xmm0,xmm6
        xor     esi,edx
        pslldq  xmm2,12
        paddd   xmm6,xmm6
        mov     ebp,eax
        add     edi,DWORD [40+esp]
        psrld   xmm0,31
        xor     ebx,ecx
        rol     eax,5
        movdqa  xmm1,xmm2
        add     edi,esi
        and     ebp,ebx
        xor     ebx,ecx
        psrld   xmm2,30
        add     edi,eax
        ror     eax,7
        por     xmm6,xmm0
        xor     ebp,ecx
        movdqa  xmm0,[64+esp]
        mov     esi,edi
        add     edx,DWORD [44+esp]
        pslld   xmm1,2
        xor     eax,ebx
        rol     edi,5
        pxor    xmm6,xmm2
        movdqa  xmm2,[112+esp]
        add     edx,ebp
        and     esi,eax
        pxor    xmm6,xmm1
        pshufd  xmm7,xmm3,238
        xor     eax,ebx
        add     edx,edi
        ror     edi,7
        xor     esi,ebx
        mov     ebp,edx
        punpcklqdq      xmm7,xmm4
        movdqa  xmm1,xmm6
        add     ecx,DWORD [48+esp]
        xor     edi,eax
        paddd   xmm2,xmm6
        movdqa  [64+esp],xmm3
        rol     edx,5
        add     ecx,esi
        psrldq  xmm1,4
        and     ebp,edi
        xor     edi,eax
        pxor    xmm7,xmm3
        add     ecx,edx
        ror     edx,7
        pxor    xmm1,xmm5
        xor     ebp,eax
        mov     esi,ecx
        add     ebx,DWORD [52+esp]
        pxor    xmm7,xmm1
        xor     edx,edi
        rol     ecx,5
        movdqa  [32+esp],xmm2
        add     ebx,ebp
        and     esi,edx
        movdqa  xmm3,xmm7
        xor     edx,edi
        add     ebx,ecx
        ror     ecx,7
        movdqa  xmm1,xmm7
        xor     esi,edi
        pslldq  xmm3,12
        paddd   xmm7,xmm7
        mov     ebp,ebx
        add     eax,DWORD [56+esp]
        psrld   xmm1,31
        xor     ecx,edx
        rol     ebx,5
        movdqa  xmm2,xmm3
        add     eax,esi
        and     ebp,ecx
        xor     ecx,edx
        psrld   xmm3,30
        add     eax,ebx
        ror     ebx,7
        por     xmm7,xmm1
        xor     ebp,edx
        movdqa  xmm1,[80+esp]
        mov     esi,eax
        add     edi,DWORD [60+esp]
        pslld   xmm2,2
        xor     ebx,ecx
        rol     eax,5
        pxor    xmm7,xmm3
        movdqa  xmm3,[112+esp]
        add     edi,ebp
        and     esi,ebx
        pxor    xmm7,xmm2
        pshufd  xmm2,xmm6,238
        xor     ebx,ecx
        add     edi,eax
        ror     eax,7
        pxor    xmm0,xmm4
        punpcklqdq      xmm2,xmm7
        xor     esi,ecx
        mov     ebp,edi
        add     edx,DWORD [esp]
        pxor    xmm0,xmm1
        movdqa  [80+esp],xmm4
        xor     eax,ebx
        rol     edi,5
        movdqa  xmm4,xmm3
        add     edx,esi
        paddd   xmm3,xmm7
        and     ebp,eax
        pxor    xmm0,xmm2
        xor     eax,ebx
        add     edx,edi
        ror     edi,7
        xor     ebp,ebx
        movdqa  xmm2,xmm0
        movdqa  [48+esp],xmm3
        mov     esi,edx
        add     ecx,DWORD [4+esp]
        xor     edi,eax
        rol     edx,5
        pslld   xmm0,2
        add     ecx,ebp
        and     esi,edi
        psrld   xmm2,30
        xor     edi,eax
        add     ecx,edx
        ror     edx,7
        xor     esi,eax
        mov     ebp,ecx
        add     ebx,DWORD [8+esp]
        xor     edx,edi
        rol     ecx,5
        por     xmm0,xmm2
        add     ebx,esi
        and     ebp,edx
        movdqa  xmm2,[96+esp]
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [12+esp]
        xor     ebp,edi
        mov     esi,ebx
        pshufd  xmm3,xmm7,238
        rol     ebx,5
        add     eax,ebp
        xor     esi,edx
        ror     ecx,7
        add     eax,ebx
        add     edi,DWORD [16+esp]
        pxor    xmm1,xmm5
        punpcklqdq      xmm3,xmm0
        xor     esi,ecx
        mov     ebp,eax
        rol     eax,5
        pxor    xmm1,xmm2
        movdqa  [96+esp],xmm5
        add     edi,esi
        xor     ebp,ecx
        movdqa  xmm5,xmm4
        ror     ebx,7
        paddd   xmm4,xmm0
        add     edi,eax
        pxor    xmm1,xmm3
        add     edx,DWORD [20+esp]
        xor     ebp,ebx
        mov     esi,edi
        rol     edi,5
        movdqa  xmm3,xmm1
        movdqa  [esp],xmm4
        add     edx,ebp
        xor     esi,ebx
        ror     eax,7
        add     edx,edi
        pslld   xmm1,2
        add     ecx,DWORD [24+esp]
        xor     esi,eax
        psrld   xmm3,30
        mov     ebp,edx
        rol     edx,5
        add     ecx,esi
        xor     ebp,eax
        ror     edi,7
        add     ecx,edx
        por     xmm1,xmm3
        add     ebx,DWORD [28+esp]
        xor     ebp,edi
        movdqa  xmm3,[64+esp]
        mov     esi,ecx
        rol     ecx,5
        add     ebx,ebp
        xor     esi,edi
        ror     edx,7
        pshufd  xmm4,xmm0,238
        add     ebx,ecx
        add     eax,DWORD [32+esp]
        pxor    xmm2,xmm6
        punpcklqdq      xmm4,xmm1
        xor     esi,edx
        mov     ebp,ebx
        rol     ebx,5
        pxor    xmm2,xmm3
        movdqa  [64+esp],xmm6
        add     eax,esi
        xor     ebp,edx
        movdqa  xmm6,[128+esp]
        ror     ecx,7
        paddd   xmm5,xmm1
        add     eax,ebx
        pxor    xmm2,xmm4
        add     edi,DWORD [36+esp]
        xor     ebp,ecx
        mov     esi,eax
        rol     eax,5
        movdqa  xmm4,xmm2
        movdqa  [16+esp],xmm5
        add     edi,ebp
        xor     esi,ecx
        ror     ebx,7
        add     edi,eax
        pslld   xmm2,2
        add     edx,DWORD [40+esp]
        xor     esi,ebx
        psrld   xmm4,30
        mov     ebp,edi
        rol     edi,5
        add     edx,esi
        xor     ebp,ebx
        ror     eax,7
        add     edx,edi
        por     xmm2,xmm4
        add     ecx,DWORD [44+esp]
        xor     ebp,eax
        movdqa  xmm4,[80+esp]
        mov     esi,edx
        rol     edx,5
        add     ecx,ebp
        xor     esi,eax
        ror     edi,7
        pshufd  xmm5,xmm1,238
        add     ecx,edx
        add     ebx,DWORD [48+esp]
        pxor    xmm3,xmm7
        punpcklqdq      xmm5,xmm2
        xor     esi,edi
        mov     ebp,ecx
        rol     ecx,5
        pxor    xmm3,xmm4
        movdqa  [80+esp],xmm7
        add     ebx,esi
        xor     ebp,edi
        movdqa  xmm7,xmm6
        ror     edx,7
        paddd   xmm6,xmm2
        add     ebx,ecx
        pxor    xmm3,xmm5
        add     eax,DWORD [52+esp]
        xor     ebp,edx
        mov     esi,ebx
        rol     ebx,5
        movdqa  xmm5,xmm3
        movdqa  [32+esp],xmm6
        add     eax,ebp
        xor     esi,edx
        ror     ecx,7
        add     eax,ebx
        pslld   xmm3,2
        add     edi,DWORD [56+esp]
        xor     esi,ecx
        psrld   xmm5,30
        mov     ebp,eax
        rol     eax,5
        add     edi,esi
        xor     ebp,ecx
        ror     ebx,7
        add     edi,eax
        por     xmm3,xmm5
        add     edx,DWORD [60+esp]
        xor     ebp,ebx
        movdqa  xmm5,[96+esp]
        mov     esi,edi
        rol     edi,5
        add     edx,ebp
        xor     esi,ebx
        ror     eax,7
        pshufd  xmm6,xmm2,238
        add     edx,edi
        add     ecx,DWORD [esp]
        pxor    xmm4,xmm0
        punpcklqdq      xmm6,xmm3
        xor     esi,eax
        mov     ebp,edx
        rol     edx,5
        pxor    xmm4,xmm5
        movdqa  [96+esp],xmm0
        add     ecx,esi
        xor     ebp,eax
        movdqa  xmm0,xmm7
        ror     edi,7
        paddd   xmm7,xmm3
        add     ecx,edx
        pxor    xmm4,xmm6
        add     ebx,DWORD [4+esp]
        xor     ebp,edi
        mov     esi,ecx
        rol     ecx,5
        movdqa  xmm6,xmm4
        movdqa  [48+esp],xmm7
        add     ebx,ebp
        xor     esi,edi
        ror     edx,7
        add     ebx,ecx
        pslld   xmm4,2
        add     eax,DWORD [8+esp]
        xor     esi,edx
        psrld   xmm6,30
        mov     ebp,ebx
        rol     ebx,5
        add     eax,esi
        xor     ebp,edx
        ror     ecx,7
        add     eax,ebx
        por     xmm4,xmm6
        add     edi,DWORD [12+esp]
        xor     ebp,ecx
        movdqa  xmm6,[64+esp]
        mov     esi,eax
        rol     eax,5
        add     edi,ebp
        xor     esi,ecx
        ror     ebx,7
        pshufd  xmm7,xmm3,238
        add     edi,eax
        add     edx,DWORD [16+esp]
        pxor    xmm5,xmm1
        punpcklqdq      xmm7,xmm4
        xor     esi,ebx
        mov     ebp,edi
        rol     edi,5
        pxor    xmm5,xmm6
        movdqa  [64+esp],xmm1
        add     edx,esi
        xor     ebp,ebx
        movdqa  xmm1,xmm0
        ror     eax,7
        paddd   xmm0,xmm4
        add     edx,edi
        pxor    xmm5,xmm7
        add     ecx,DWORD [20+esp]
        xor     ebp,eax
        mov     esi,edx
        rol     edx,5
        movdqa  xmm7,xmm5
        movdqa  [esp],xmm0
        add     ecx,ebp
        xor     esi,eax
        ror     edi,7
        add     ecx,edx
        pslld   xmm5,2
        add     ebx,DWORD [24+esp]
        xor     esi,edi
        psrld   xmm7,30
        mov     ebp,ecx
        rol     ecx,5
        add     ebx,esi
        xor     ebp,edi
        ror     edx,7
        add     ebx,ecx
        por     xmm5,xmm7
        add     eax,DWORD [28+esp]
        movdqa  xmm7,[80+esp]
        ror     ecx,7
        mov     esi,ebx
        xor     ebp,edx
        rol     ebx,5
        pshufd  xmm0,xmm4,238
        add     eax,ebp
        xor     esi,ecx
        xor     ecx,edx
        add     eax,ebx
        add     edi,DWORD [32+esp]
        pxor    xmm6,xmm2
        punpcklqdq      xmm0,xmm5
        and     esi,ecx
        xor     ecx,edx
        ror     ebx,7
        pxor    xmm6,xmm7
        movdqa  [80+esp],xmm2
        mov     ebp,eax
        xor     esi,ecx
        rol     eax,5
        movdqa  xmm2,xmm1
        add     edi,esi
        paddd   xmm1,xmm5
        xor     ebp,ebx
        pxor    xmm6,xmm0
        xor     ebx,ecx
        add     edi,eax
        add     edx,DWORD [36+esp]
        and     ebp,ebx
        movdqa  xmm0,xmm6
        movdqa  [16+esp],xmm1
        xor     ebx,ecx
        ror     eax,7
        mov     esi,edi
        xor     ebp,ebx
        rol     edi,5
        pslld   xmm6,2
        add     edx,ebp
        xor     esi,eax
        psrld   xmm0,30
        xor     eax,ebx
        add     edx,edi
        add     ecx,DWORD [40+esp]
        and     esi,eax
        xor     eax,ebx
        ror     edi,7
        por     xmm6,xmm0
        mov     ebp,edx
        xor     esi,eax
        movdqa  xmm0,[96+esp]
        rol     edx,5
        add     ecx,esi
        xor     ebp,edi
        xor     edi,eax
        add     ecx,edx
        pshufd  xmm1,xmm5,238
        add     ebx,DWORD [44+esp]
        and     ebp,edi
        xor     edi,eax
        ror     edx,7
        mov     esi,ecx
        xor     ebp,edi
        rol     ecx,5
        add     ebx,ebp
        xor     esi,edx
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [48+esp]
        pxor    xmm7,xmm3
        punpcklqdq      xmm1,xmm6
        and     esi,edx
        xor     edx,edi
        ror     ecx,7
        pxor    xmm7,xmm0
        movdqa  [96+esp],xmm3
        mov     ebp,ebx
        xor     esi,edx
        rol     ebx,5
        movdqa  xmm3,[144+esp]
        add     eax,esi
        paddd   xmm2,xmm6
        xor     ebp,ecx
        pxor    xmm7,xmm1
        xor     ecx,edx
        add     eax,ebx
        add     edi,DWORD [52+esp]
        and     ebp,ecx
        movdqa  xmm1,xmm7
        movdqa  [32+esp],xmm2
        xor     ecx,edx
        ror     ebx,7
        mov     esi,eax
        xor     ebp,ecx
        rol     eax,5
        pslld   xmm7,2
        add     edi,ebp
        xor     esi,ebx
        psrld   xmm1,30
        xor     ebx,ecx
        add     edi,eax
        add     edx,DWORD [56+esp]
        and     esi,ebx
        xor     ebx,ecx
        ror     eax,7
        por     xmm7,xmm1
        mov     ebp,edi
        xor     esi,ebx
        movdqa  xmm1,[64+esp]
        rol     edi,5
        add     edx,esi
        xor     ebp,eax
        xor     eax,ebx
        add     edx,edi
        pshufd  xmm2,xmm6,238
        add     ecx,DWORD [60+esp]
        and     ebp,eax
        xor     eax,ebx
        ror     edi,7
        mov     esi,edx
        xor     ebp,eax
        rol     edx,5
        add     ecx,ebp
        xor     esi,edi
        xor     edi,eax
        add     ecx,edx
        add     ebx,DWORD [esp]
        pxor    xmm0,xmm4
        punpcklqdq      xmm2,xmm7
        and     esi,edi
        xor     edi,eax
        ror     edx,7
        pxor    xmm0,xmm1
        movdqa  [64+esp],xmm4
        mov     ebp,ecx
        xor     esi,edi
        rol     ecx,5
        movdqa  xmm4,xmm3
        add     ebx,esi
        paddd   xmm3,xmm7
        xor     ebp,edx
        pxor    xmm0,xmm2
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [4+esp]
        and     ebp,edx
        movdqa  xmm2,xmm0
        movdqa  [48+esp],xmm3
        xor     edx,edi
        ror     ecx,7
        mov     esi,ebx
        xor     ebp,edx
        rol     ebx,5
        pslld   xmm0,2
        add     eax,ebp
        xor     esi,ecx
        psrld   xmm2,30
        xor     ecx,edx
        add     eax,ebx
        add     edi,DWORD [8+esp]
        and     esi,ecx
        xor     ecx,edx
        ror     ebx,7
        por     xmm0,xmm2
        mov     ebp,eax
        xor     esi,ecx
        movdqa  xmm2,[80+esp]
        rol     eax,5
        add     edi,esi
        xor     ebp,ebx
        xor     ebx,ecx
        add     edi,eax
        pshufd  xmm3,xmm7,238
        add     edx,DWORD [12+esp]
        and     ebp,ebx
        xor     ebx,ecx
        ror     eax,7
        mov     esi,edi
        xor     ebp,ebx
        rol     edi,5
        add     edx,ebp
        xor     esi,eax
        xor     eax,ebx
        add     edx,edi
        add     ecx,DWORD [16+esp]
        pxor    xmm1,xmm5
        punpcklqdq      xmm3,xmm0
        and     esi,eax
        xor     eax,ebx
        ror     edi,7
        pxor    xmm1,xmm2
        movdqa  [80+esp],xmm5
        mov     ebp,edx
        xor     esi,eax
        rol     edx,5
        movdqa  xmm5,xmm4
        add     ecx,esi
        paddd   xmm4,xmm0
        xor     ebp,edi
        pxor    xmm1,xmm3
        xor     edi,eax
        add     ecx,edx
        add     ebx,DWORD [20+esp]
        and     ebp,edi
        movdqa  xmm3,xmm1
        movdqa  [esp],xmm4
        xor     edi,eax
        ror     edx,7
        mov     esi,ecx
        xor     ebp,edi
        rol     ecx,5
        pslld   xmm1,2
        add     ebx,ebp
        xor     esi,edx
        psrld   xmm3,30
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [24+esp]
        and     esi,edx
        xor     edx,edi
        ror     ecx,7
        por     xmm1,xmm3
        mov     ebp,ebx
        xor     esi,edx
        movdqa  xmm3,[96+esp]
        rol     ebx,5
        add     eax,esi
        xor     ebp,ecx
        xor     ecx,edx
        add     eax,ebx
        pshufd  xmm4,xmm0,238
        add     edi,DWORD [28+esp]
        and     ebp,ecx
        xor     ecx,edx
        ror     ebx,7
        mov     esi,eax
        xor     ebp,ecx
        rol     eax,5
        add     edi,ebp
        xor     esi,ebx
        xor     ebx,ecx
        add     edi,eax
        add     edx,DWORD [32+esp]
        pxor    xmm2,xmm6
        punpcklqdq      xmm4,xmm1
        and     esi,ebx
        xor     ebx,ecx
        ror     eax,7
        pxor    xmm2,xmm3
        movdqa  [96+esp],xmm6
        mov     ebp,edi
        xor     esi,ebx
        rol     edi,5
        movdqa  xmm6,xmm5
        add     edx,esi
        paddd   xmm5,xmm1
        xor     ebp,eax
        pxor    xmm2,xmm4
        xor     eax,ebx
        add     edx,edi
        add     ecx,DWORD [36+esp]
        and     ebp,eax
        movdqa  xmm4,xmm2
        movdqa  [16+esp],xmm5
        xor     eax,ebx
        ror     edi,7
        mov     esi,edx
        xor     ebp,eax
        rol     edx,5
        pslld   xmm2,2
        add     ecx,ebp
        xor     esi,edi
        psrld   xmm4,30
        xor     edi,eax
        add     ecx,edx
        add     ebx,DWORD [40+esp]
        and     esi,edi
        xor     edi,eax
        ror     edx,7
        por     xmm2,xmm4
        mov     ebp,ecx
        xor     esi,edi
        movdqa  xmm4,[64+esp]
        rol     ecx,5
        add     ebx,esi
        xor     ebp,edx
        xor     edx,edi
        add     ebx,ecx
        pshufd  xmm5,xmm1,238
        add     eax,DWORD [44+esp]
        and     ebp,edx
        xor     edx,edi
        ror     ecx,7
        mov     esi,ebx
        xor     ebp,edx
        rol     ebx,5
        add     eax,ebp
        xor     esi,edx
        add     eax,ebx
        add     edi,DWORD [48+esp]
        pxor    xmm3,xmm7
        punpcklqdq      xmm5,xmm2
        xor     esi,ecx
        mov     ebp,eax
        rol     eax,5
        pxor    xmm3,xmm4
        movdqa  [64+esp],xmm7
        add     edi,esi
        xor     ebp,ecx
        movdqa  xmm7,xmm6
        ror     ebx,7
        paddd   xmm6,xmm2
        add     edi,eax
        pxor    xmm3,xmm5
        add     edx,DWORD [52+esp]
        xor     ebp,ebx
        mov     esi,edi
        rol     edi,5
        movdqa  xmm5,xmm3
        movdqa  [32+esp],xmm6
        add     edx,ebp
        xor     esi,ebx
        ror     eax,7
        add     edx,edi
        pslld   xmm3,2
        add     ecx,DWORD [56+esp]
        xor     esi,eax
        psrld   xmm5,30
        mov     ebp,edx
        rol     edx,5
        add     ecx,esi
        xor     ebp,eax
        ror     edi,7
        add     ecx,edx
        por     xmm3,xmm5
        add     ebx,DWORD [60+esp]
        xor     ebp,edi
        mov     esi,ecx
        rol     ecx,5
        add     ebx,ebp
        xor     esi,edi
        ror     edx,7
        add     ebx,ecx
        add     eax,DWORD [esp]
        xor     esi,edx
        mov     ebp,ebx
        rol     ebx,5
        add     eax,esi
        xor     ebp,edx
        ror     ecx,7
        paddd   xmm7,xmm3
        add     eax,ebx
        add     edi,DWORD [4+esp]
        xor     ebp,ecx
        mov     esi,eax
        movdqa  [48+esp],xmm7
        rol     eax,5
        add     edi,ebp
        xor     esi,ecx
        ror     ebx,7
        add     edi,eax
        add     edx,DWORD [8+esp]
        xor     esi,ebx
        mov     ebp,edi
        rol     edi,5
        add     edx,esi
        xor     ebp,ebx
        ror     eax,7
        add     edx,edi
        add     ecx,DWORD [12+esp]
        xor     ebp,eax
        mov     esi,edx
        rol     edx,5
        add     ecx,ebp
        xor     esi,eax
        ror     edi,7
        add     ecx,edx
        mov     ebp,DWORD [196+esp]
        cmp     ebp,DWORD [200+esp]
        je      NEAR L$007done
        movdqa  xmm7,[160+esp]
        movdqa  xmm6,[176+esp]
        movdqu  xmm0,[ebp]
        movdqu  xmm1,[16+ebp]
        movdqu  xmm2,[32+ebp]
        movdqu  xmm3,[48+ebp]
        add     ebp,64
db      102,15,56,0,198
        mov     DWORD [196+esp],ebp
        movdqa  [96+esp],xmm7
        add     ebx,DWORD [16+esp]
        xor     esi,edi
        mov     ebp,ecx
        rol     ecx,5
        add     ebx,esi
        xor     ebp,edi
        ror     edx,7
db      102,15,56,0,206
        add     ebx,ecx
        add     eax,DWORD [20+esp]
        xor     ebp,edx
        mov     esi,ebx
        paddd   xmm0,xmm7
        rol     ebx,5
        add     eax,ebp
        xor     esi,edx
        ror     ecx,7
        movdqa  [esp],xmm0
        add     eax,ebx
        add     edi,DWORD [24+esp]
        xor     esi,ecx
        mov     ebp,eax
        psubd   xmm0,xmm7
        rol     eax,5
        add     edi,esi
        xor     ebp,ecx
        ror     ebx,7
        add     edi,eax
        add     edx,DWORD [28+esp]
        xor     ebp,ebx
        mov     esi,edi
        rol     edi,5
        add     edx,ebp
        xor     esi,ebx
        ror     eax,7
        add     edx,edi
        add     ecx,DWORD [32+esp]
        xor     esi,eax
        mov     ebp,edx
        rol     edx,5
        add     ecx,esi
        xor     ebp,eax
        ror     edi,7
db      102,15,56,0,214
        add     ecx,edx
        add     ebx,DWORD [36+esp]
        xor     ebp,edi
        mov     esi,ecx
        paddd   xmm1,xmm7
        rol     ecx,5
        add     ebx,ebp
        xor     esi,edi
        ror     edx,7
        movdqa  [16+esp],xmm1
        add     ebx,ecx
        add     eax,DWORD [40+esp]
        xor     esi,edx
        mov     ebp,ebx
        psubd   xmm1,xmm7
        rol     ebx,5
        add     eax,esi
        xor     ebp,edx
        ror     ecx,7
        add     eax,ebx
        add     edi,DWORD [44+esp]
        xor     ebp,ecx
        mov     esi,eax
        rol     eax,5
        add     edi,ebp
        xor     esi,ecx
        ror     ebx,7
        add     edi,eax
        add     edx,DWORD [48+esp]
        xor     esi,ebx
        mov     ebp,edi
        rol     edi,5
        add     edx,esi
        xor     ebp,ebx
        ror     eax,7
db      102,15,56,0,222
        add     edx,edi
        add     ecx,DWORD [52+esp]
        xor     ebp,eax
        mov     esi,edx
        paddd   xmm2,xmm7
        rol     edx,5
        add     ecx,ebp
        xor     esi,eax
        ror     edi,7
        movdqa  [32+esp],xmm2
        add     ecx,edx
        add     ebx,DWORD [56+esp]
        xor     esi,edi
        mov     ebp,ecx
        psubd   xmm2,xmm7
        rol     ecx,5
        add     ebx,esi
        xor     ebp,edi
        ror     edx,7
        add     ebx,ecx
        add     eax,DWORD [60+esp]
        xor     ebp,edx
        mov     esi,ebx
        rol     ebx,5
        add     eax,ebp
        ror     ecx,7
        add     eax,ebx
        mov     ebp,DWORD [192+esp]
        add     eax,DWORD [ebp]
        add     esi,DWORD [4+ebp]
        add     ecx,DWORD [8+ebp]
        mov     DWORD [ebp],eax
        add     edx,DWORD [12+ebp]
        mov     DWORD [4+ebp],esi
        add     edi,DWORD [16+ebp]
        mov     DWORD [8+ebp],ecx
        mov     ebx,ecx
        mov     DWORD [12+ebp],edx
        xor     ebx,edx
        mov     DWORD [16+ebp],edi
        mov     ebp,esi
        pshufd  xmm4,xmm0,238
        and     esi,ebx
        mov     ebx,ebp
        jmp     NEAR L$006loop
align   16
L$007done:
        add     ebx,DWORD [16+esp]
        xor     esi,edi
        mov     ebp,ecx
        rol     ecx,5
        add     ebx,esi
        xor     ebp,edi
        ror     edx,7
        add     ebx,ecx
        add     eax,DWORD [20+esp]
        xor     ebp,edx
        mov     esi,ebx
        rol     ebx,5
        add     eax,ebp
        xor     esi,edx
        ror     ecx,7
        add     eax,ebx
        add     edi,DWORD [24+esp]
        xor     esi,ecx
        mov     ebp,eax
        rol     eax,5
        add     edi,esi
        xor     ebp,ecx
        ror     ebx,7
        add     edi,eax
        add     edx,DWORD [28+esp]
        xor     ebp,ebx
        mov     esi,edi
        rol     edi,5
        add     edx,ebp
        xor     esi,ebx
        ror     eax,7
        add     edx,edi
        add     ecx,DWORD [32+esp]
        xor     esi,eax
        mov     ebp,edx
        rol     edx,5
        add     ecx,esi
        xor     ebp,eax
        ror     edi,7
        add     ecx,edx
        add     ebx,DWORD [36+esp]
        xor     ebp,edi
        mov     esi,ecx
        rol     ecx,5
        add     ebx,ebp
        xor     esi,edi
        ror     edx,7
        add     ebx,ecx
        add     eax,DWORD [40+esp]
        xor     esi,edx
        mov     ebp,ebx
        rol     ebx,5
        add     eax,esi
        xor     ebp,edx
        ror     ecx,7
        add     eax,ebx
        add     edi,DWORD [44+esp]
        xor     ebp,ecx
        mov     esi,eax
        rol     eax,5
        add     edi,ebp
        xor     esi,ecx
        ror     ebx,7
        add     edi,eax
        add     edx,DWORD [48+esp]
        xor     esi,ebx
        mov     ebp,edi
        rol     edi,5
        add     edx,esi
        xor     ebp,ebx
        ror     eax,7
        add     edx,edi
        add     ecx,DWORD [52+esp]
        xor     ebp,eax
        mov     esi,edx
        rol     edx,5
        add     ecx,ebp
        xor     esi,eax
        ror     edi,7
        add     ecx,edx
        add     ebx,DWORD [56+esp]
        xor     esi,edi
        mov     ebp,ecx
        rol     ecx,5
        add     ebx,esi
        xor     ebp,edi
        ror     edx,7
        add     ebx,ecx
        add     eax,DWORD [60+esp]
        xor     ebp,edx
        mov     esi,ebx
        rol     ebx,5
        add     eax,ebp
        ror     ecx,7
        add     eax,ebx
        mov     ebp,DWORD [192+esp]
        add     eax,DWORD [ebp]
        mov     esp,DWORD [204+esp]
        add     esi,DWORD [4+ebp]
        add     ecx,DWORD [8+ebp]
        mov     DWORD [ebp],eax
        add     edx,DWORD [12+ebp]
        mov     DWORD [4+ebp],esi
        add     edi,DWORD [16+ebp]
        mov     DWORD [8+ebp],ecx
        mov     DWORD [12+ebp],edx
        mov     DWORD [16+ebp],edi
        pop     edi
        pop     esi
        pop     ebx
        pop     ebp
        ret
align   16
__sha1_block_data_order_avx:
        push    ebp
        push    ebx
        push    esi
        push    edi
        call    L$008pic_point
L$008pic_point:
        pop     ebp
        lea     ebp,[(L$K_XX_XX-L$008pic_point)+ebp]
L$avx_shortcut:
        vzeroall
        vmovdqa xmm7,[ebp]
        vmovdqa xmm0,[16+ebp]
        vmovdqa xmm1,[32+ebp]
        vmovdqa xmm2,[48+ebp]
        vmovdqa xmm6,[64+ebp]
        mov     edi,DWORD [20+esp]
        mov     ebp,DWORD [24+esp]
        mov     edx,DWORD [28+esp]
        mov     esi,esp
        sub     esp,208
        and     esp,-64
        vmovdqa [112+esp],xmm0
        vmovdqa [128+esp],xmm1
        vmovdqa [144+esp],xmm2
        shl     edx,6
        vmovdqa [160+esp],xmm7
        add     edx,ebp
        vmovdqa [176+esp],xmm6
        add     ebp,64
        mov     DWORD [192+esp],edi
        mov     DWORD [196+esp],ebp
        mov     DWORD [200+esp],edx
        mov     DWORD [204+esp],esi
        mov     eax,DWORD [edi]
        mov     ebx,DWORD [4+edi]
        mov     ecx,DWORD [8+edi]
        mov     edx,DWORD [12+edi]
        mov     edi,DWORD [16+edi]
        mov     esi,ebx
        vmovdqu xmm0,[ebp-64]
        vmovdqu xmm1,[ebp-48]
        vmovdqu xmm2,[ebp-32]
        vmovdqu xmm3,[ebp-16]
        vpshufb xmm0,xmm0,xmm6
        vpshufb xmm1,xmm1,xmm6
        vpshufb xmm2,xmm2,xmm6
        vmovdqa [96+esp],xmm7
        vpshufb xmm3,xmm3,xmm6
        vpaddd  xmm4,xmm0,xmm7
        vpaddd  xmm5,xmm1,xmm7
        vpaddd  xmm6,xmm2,xmm7
        vmovdqa [esp],xmm4
        mov     ebp,ecx
        vmovdqa [16+esp],xmm5
        xor     ebp,edx
        vmovdqa [32+esp],xmm6
        and     esi,ebp
        jmp     NEAR L$009loop
align   16
L$009loop:
        shrd    ebx,ebx,2
        xor     esi,edx
        vpalignr        xmm4,xmm1,xmm0,8
        mov     ebp,eax
        add     edi,DWORD [esp]
        vpaddd  xmm7,xmm7,xmm3
        vmovdqa [64+esp],xmm0
        xor     ebx,ecx
        shld    eax,eax,5
        vpsrldq xmm6,xmm3,4
        add     edi,esi
        and     ebp,ebx
        vpxor   xmm4,xmm4,xmm0
        xor     ebx,ecx
        add     edi,eax
        vpxor   xmm6,xmm6,xmm2
        shrd    eax,eax,7
        xor     ebp,ecx
        vmovdqa [48+esp],xmm7
        mov     esi,edi
        add     edx,DWORD [4+esp]
        vpxor   xmm4,xmm4,xmm6
        xor     eax,ebx
        shld    edi,edi,5
        add     edx,ebp
        and     esi,eax
        vpsrld  xmm6,xmm4,31
        xor     eax,ebx
        add     edx,edi
        shrd    edi,edi,7
        xor     esi,ebx
        vpslldq xmm0,xmm4,12
        vpaddd  xmm4,xmm4,xmm4
        mov     ebp,edx
        add     ecx,DWORD [8+esp]
        xor     edi,eax
        shld    edx,edx,5
        vpsrld  xmm7,xmm0,30
        vpor    xmm4,xmm4,xmm6
        add     ecx,esi
        and     ebp,edi
        xor     edi,eax
        add     ecx,edx
        vpslld  xmm0,xmm0,2
        shrd    edx,edx,7
        xor     ebp,eax
        vpxor   xmm4,xmm4,xmm7
        mov     esi,ecx
        add     ebx,DWORD [12+esp]
        xor     edx,edi
        shld    ecx,ecx,5
        vpxor   xmm4,xmm4,xmm0
        add     ebx,ebp
        and     esi,edx
        vmovdqa xmm0,[96+esp]
        xor     edx,edi
        add     ebx,ecx
        shrd    ecx,ecx,7
        xor     esi,edi
        vpalignr        xmm5,xmm2,xmm1,8
        mov     ebp,ebx
        add     eax,DWORD [16+esp]
        vpaddd  xmm0,xmm0,xmm4
        vmovdqa [80+esp],xmm1
        xor     ecx,edx
        shld    ebx,ebx,5
        vpsrldq xmm7,xmm4,4
        add     eax,esi
        and     ebp,ecx
        vpxor   xmm5,xmm5,xmm1
        xor     ecx,edx
        add     eax,ebx
        vpxor   xmm7,xmm7,xmm3
        shrd    ebx,ebx,7
        xor     ebp,edx
        vmovdqa [esp],xmm0
        mov     esi,eax
        add     edi,DWORD [20+esp]
        vpxor   xmm5,xmm5,xmm7
        xor     ebx,ecx
        shld    eax,eax,5
        add     edi,ebp
        and     esi,ebx
        vpsrld  xmm7,xmm5,31
        xor     ebx,ecx
        add     edi,eax
        shrd    eax,eax,7
        xor     esi,ecx
        vpslldq xmm1,xmm5,12
        vpaddd  xmm5,xmm5,xmm5
        mov     ebp,edi
        add     edx,DWORD [24+esp]
        xor     eax,ebx
        shld    edi,edi,5
        vpsrld  xmm0,xmm1,30
        vpor    xmm5,xmm5,xmm7
        add     edx,esi
        and     ebp,eax
        xor     eax,ebx
        add     edx,edi
        vpslld  xmm1,xmm1,2
        shrd    edi,edi,7
        xor     ebp,ebx
        vpxor   xmm5,xmm5,xmm0
        mov     esi,edx
        add     ecx,DWORD [28+esp]
        xor     edi,eax
        shld    edx,edx,5
        vpxor   xmm5,xmm5,xmm1
        add     ecx,ebp
        and     esi,edi
        vmovdqa xmm1,[112+esp]
        xor     edi,eax
        add     ecx,edx
        shrd    edx,edx,7
        xor     esi,eax
        vpalignr        xmm6,xmm3,xmm2,8
        mov     ebp,ecx
        add     ebx,DWORD [32+esp]
        vpaddd  xmm1,xmm1,xmm5
        vmovdqa [96+esp],xmm2
        xor     edx,edi
        shld    ecx,ecx,5
        vpsrldq xmm0,xmm5,4
        add     ebx,esi
        and     ebp,edx
        vpxor   xmm6,xmm6,xmm2
        xor     edx,edi
        add     ebx,ecx
        vpxor   xmm0,xmm0,xmm4
        shrd    ecx,ecx,7
        xor     ebp,edi
        vmovdqa [16+esp],xmm1
        mov     esi,ebx
        add     eax,DWORD [36+esp]
        vpxor   xmm6,xmm6,xmm0
        xor     ecx,edx
        shld    ebx,ebx,5
        add     eax,ebp
        and     esi,ecx
        vpsrld  xmm0,xmm6,31
        xor     ecx,edx
        add     eax,ebx
        shrd    ebx,ebx,7
        xor     esi,edx
        vpslldq xmm2,xmm6,12
        vpaddd  xmm6,xmm6,xmm6
        mov     ebp,eax
        add     edi,DWORD [40+esp]
        xor     ebx,ecx
        shld    eax,eax,5
        vpsrld  xmm1,xmm2,30
        vpor    xmm6,xmm6,xmm0
        add     edi,esi
        and     ebp,ebx
        xor     ebx,ecx
        add     edi,eax
        vpslld  xmm2,xmm2,2
        vmovdqa xmm0,[64+esp]
        shrd    eax,eax,7
        xor     ebp,ecx
        vpxor   xmm6,xmm6,xmm1
        mov     esi,edi
        add     edx,DWORD [44+esp]
        xor     eax,ebx
        shld    edi,edi,5
        vpxor   xmm6,xmm6,xmm2
        add     edx,ebp
        and     esi,eax
        vmovdqa xmm2,[112+esp]
        xor     eax,ebx
        add     edx,edi
        shrd    edi,edi,7
        xor     esi,ebx
        vpalignr        xmm7,xmm4,xmm3,8
        mov     ebp,edx
        add     ecx,DWORD [48+esp]
        vpaddd  xmm2,xmm2,xmm6
        vmovdqa [64+esp],xmm3
        xor     edi,eax
        shld    edx,edx,5
        vpsrldq xmm1,xmm6,4
        add     ecx,esi
        and     ebp,edi
        vpxor   xmm7,xmm7,xmm3
        xor     edi,eax
        add     ecx,edx
        vpxor   xmm1,xmm1,xmm5
        shrd    edx,edx,7
        xor     ebp,eax
        vmovdqa [32+esp],xmm2
        mov     esi,ecx
        add     ebx,DWORD [52+esp]
        vpxor   xmm7,xmm7,xmm1
        xor     edx,edi
        shld    ecx,ecx,5
        add     ebx,ebp
        and     esi,edx
        vpsrld  xmm1,xmm7,31
        xor     edx,edi
        add     ebx,ecx
        shrd    ecx,ecx,7
        xor     esi,edi
        vpslldq xmm3,xmm7,12
        vpaddd  xmm7,xmm7,xmm7
        mov     ebp,ebx
        add     eax,DWORD [56+esp]
        xor     ecx,edx
        shld    ebx,ebx,5
        vpsrld  xmm2,xmm3,30
        vpor    xmm7,xmm7,xmm1
        add     eax,esi
        and     ebp,ecx
        xor     ecx,edx
        add     eax,ebx
        vpslld  xmm3,xmm3,2
        vmovdqa xmm1,[80+esp]
        shrd    ebx,ebx,7
        xor     ebp,edx
        vpxor   xmm7,xmm7,xmm2
        mov     esi,eax
        add     edi,DWORD [60+esp]
        xor     ebx,ecx
        shld    eax,eax,5
        vpxor   xmm7,xmm7,xmm3
        add     edi,ebp
        and     esi,ebx
        vmovdqa xmm3,[112+esp]
        xor     ebx,ecx
        add     edi,eax
        vpalignr        xmm2,xmm7,xmm6,8
        vpxor   xmm0,xmm0,xmm4
        shrd    eax,eax,7
        xor     esi,ecx
        mov     ebp,edi
        add     edx,DWORD [esp]
        vpxor   xmm0,xmm0,xmm1
        vmovdqa [80+esp],xmm4
        xor     eax,ebx
        shld    edi,edi,5
        vmovdqa xmm4,xmm3
        vpaddd  xmm3,xmm3,xmm7
        add     edx,esi
        and     ebp,eax
        vpxor   xmm0,xmm0,xmm2
        xor     eax,ebx
        add     edx,edi
        shrd    edi,edi,7
        xor     ebp,ebx
        vpsrld  xmm2,xmm0,30
        vmovdqa [48+esp],xmm3
        mov     esi,edx
        add     ecx,DWORD [4+esp]
        xor     edi,eax
        shld    edx,edx,5
        vpslld  xmm0,xmm0,2
        add     ecx,ebp
        and     esi,edi
        xor     edi,eax
        add     ecx,edx
        shrd    edx,edx,7
        xor     esi,eax
        mov     ebp,ecx
        add     ebx,DWORD [8+esp]
        vpor    xmm0,xmm0,xmm2
        xor     edx,edi
        shld    ecx,ecx,5
        vmovdqa xmm2,[96+esp]
        add     ebx,esi
        and     ebp,edx
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [12+esp]
        xor     ebp,edi
        mov     esi,ebx
        shld    ebx,ebx,5
        add     eax,ebp
        xor     esi,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        vpalignr        xmm3,xmm0,xmm7,8
        vpxor   xmm1,xmm1,xmm5
        add     edi,DWORD [16+esp]
        xor     esi,ecx
        mov     ebp,eax
        shld    eax,eax,5
        vpxor   xmm1,xmm1,xmm2
        vmovdqa [96+esp],xmm5
        add     edi,esi
        xor     ebp,ecx
        vmovdqa xmm5,xmm4
        vpaddd  xmm4,xmm4,xmm0
        shrd    ebx,ebx,7
        add     edi,eax
        vpxor   xmm1,xmm1,xmm3
        add     edx,DWORD [20+esp]
        xor     ebp,ebx
        mov     esi,edi
        shld    edi,edi,5
        vpsrld  xmm3,xmm1,30
        vmovdqa [esp],xmm4
        add     edx,ebp
        xor     esi,ebx
        shrd    eax,eax,7
        add     edx,edi
        vpslld  xmm1,xmm1,2
        add     ecx,DWORD [24+esp]
        xor     esi,eax
        mov     ebp,edx
        shld    edx,edx,5
        add     ecx,esi
        xor     ebp,eax
        shrd    edi,edi,7
        add     ecx,edx
        vpor    xmm1,xmm1,xmm3
        add     ebx,DWORD [28+esp]
        xor     ebp,edi
        vmovdqa xmm3,[64+esp]
        mov     esi,ecx
        shld    ecx,ecx,5
        add     ebx,ebp
        xor     esi,edi
        shrd    edx,edx,7
        add     ebx,ecx
        vpalignr        xmm4,xmm1,xmm0,8
        vpxor   xmm2,xmm2,xmm6
        add     eax,DWORD [32+esp]
        xor     esi,edx
        mov     ebp,ebx
        shld    ebx,ebx,5
        vpxor   xmm2,xmm2,xmm3
        vmovdqa [64+esp],xmm6
        add     eax,esi
        xor     ebp,edx
        vmovdqa xmm6,[128+esp]
        vpaddd  xmm5,xmm5,xmm1
        shrd    ecx,ecx,7
        add     eax,ebx
        vpxor   xmm2,xmm2,xmm4
        add     edi,DWORD [36+esp]
        xor     ebp,ecx
        mov     esi,eax
        shld    eax,eax,5
        vpsrld  xmm4,xmm2,30
        vmovdqa [16+esp],xmm5
        add     edi,ebp
        xor     esi,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        vpslld  xmm2,xmm2,2
        add     edx,DWORD [40+esp]
        xor     esi,ebx
        mov     ebp,edi
        shld    edi,edi,5
        add     edx,esi
        xor     ebp,ebx
        shrd    eax,eax,7
        add     edx,edi
        vpor    xmm2,xmm2,xmm4
        add     ecx,DWORD [44+esp]
        xor     ebp,eax
        vmovdqa xmm4,[80+esp]
        mov     esi,edx
        shld    edx,edx,5
        add     ecx,ebp
        xor     esi,eax
        shrd    edi,edi,7
        add     ecx,edx
        vpalignr        xmm5,xmm2,xmm1,8
        vpxor   xmm3,xmm3,xmm7
        add     ebx,DWORD [48+esp]
        xor     esi,edi
        mov     ebp,ecx
        shld    ecx,ecx,5
        vpxor   xmm3,xmm3,xmm4
        vmovdqa [80+esp],xmm7
        add     ebx,esi
        xor     ebp,edi
        vmovdqa xmm7,xmm6
        vpaddd  xmm6,xmm6,xmm2
        shrd    edx,edx,7
        add     ebx,ecx
        vpxor   xmm3,xmm3,xmm5
        add     eax,DWORD [52+esp]
        xor     ebp,edx
        mov     esi,ebx
        shld    ebx,ebx,5
        vpsrld  xmm5,xmm3,30
        vmovdqa [32+esp],xmm6
        add     eax,ebp
        xor     esi,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        vpslld  xmm3,xmm3,2
        add     edi,DWORD [56+esp]
        xor     esi,ecx
        mov     ebp,eax
        shld    eax,eax,5
        add     edi,esi
        xor     ebp,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        vpor    xmm3,xmm3,xmm5
        add     edx,DWORD [60+esp]
        xor     ebp,ebx
        vmovdqa xmm5,[96+esp]
        mov     esi,edi
        shld    edi,edi,5
        add     edx,ebp
        xor     esi,ebx
        shrd    eax,eax,7
        add     edx,edi
        vpalignr        xmm6,xmm3,xmm2,8
        vpxor   xmm4,xmm4,xmm0
        add     ecx,DWORD [esp]
        xor     esi,eax
        mov     ebp,edx
        shld    edx,edx,5
        vpxor   xmm4,xmm4,xmm5
        vmovdqa [96+esp],xmm0
        add     ecx,esi
        xor     ebp,eax
        vmovdqa xmm0,xmm7
        vpaddd  xmm7,xmm7,xmm3
        shrd    edi,edi,7
        add     ecx,edx
        vpxor   xmm4,xmm4,xmm6
        add     ebx,DWORD [4+esp]
        xor     ebp,edi
        mov     esi,ecx
        shld    ecx,ecx,5
        vpsrld  xmm6,xmm4,30
        vmovdqa [48+esp],xmm7
        add     ebx,ebp
        xor     esi,edi
        shrd    edx,edx,7
        add     ebx,ecx
        vpslld  xmm4,xmm4,2
        add     eax,DWORD [8+esp]
        xor     esi,edx
        mov     ebp,ebx
        shld    ebx,ebx,5
        add     eax,esi
        xor     ebp,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        vpor    xmm4,xmm4,xmm6
        add     edi,DWORD [12+esp]
        xor     ebp,ecx
        vmovdqa xmm6,[64+esp]
        mov     esi,eax
        shld    eax,eax,5
        add     edi,ebp
        xor     esi,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        vpalignr        xmm7,xmm4,xmm3,8
        vpxor   xmm5,xmm5,xmm1
        add     edx,DWORD [16+esp]
        xor     esi,ebx
        mov     ebp,edi
        shld    edi,edi,5
        vpxor   xmm5,xmm5,xmm6
        vmovdqa [64+esp],xmm1
        add     edx,esi
        xor     ebp,ebx
        vmovdqa xmm1,xmm0
        vpaddd  xmm0,xmm0,xmm4
        shrd    eax,eax,7
        add     edx,edi
        vpxor   xmm5,xmm5,xmm7
        add     ecx,DWORD [20+esp]
        xor     ebp,eax
        mov     esi,edx
        shld    edx,edx,5
        vpsrld  xmm7,xmm5,30
        vmovdqa [esp],xmm0
        add     ecx,ebp
        xor     esi,eax
        shrd    edi,edi,7
        add     ecx,edx
        vpslld  xmm5,xmm5,2
        add     ebx,DWORD [24+esp]
        xor     esi,edi
        mov     ebp,ecx
        shld    ecx,ecx,5
        add     ebx,esi
        xor     ebp,edi
        shrd    edx,edx,7
        add     ebx,ecx
        vpor    xmm5,xmm5,xmm7
        add     eax,DWORD [28+esp]
        vmovdqa xmm7,[80+esp]
        shrd    ecx,ecx,7
        mov     esi,ebx
        xor     ebp,edx
        shld    ebx,ebx,5
        add     eax,ebp
        xor     esi,ecx
        xor     ecx,edx
        add     eax,ebx
        vpalignr        xmm0,xmm5,xmm4,8
        vpxor   xmm6,xmm6,xmm2
        add     edi,DWORD [32+esp]
        and     esi,ecx
        xor     ecx,edx
        shrd    ebx,ebx,7
        vpxor   xmm6,xmm6,xmm7
        vmovdqa [80+esp],xmm2
        mov     ebp,eax
        xor     esi,ecx
        vmovdqa xmm2,xmm1
        vpaddd  xmm1,xmm1,xmm5
        shld    eax,eax,5
        add     edi,esi
        vpxor   xmm6,xmm6,xmm0
        xor     ebp,ebx
        xor     ebx,ecx
        add     edi,eax
        add     edx,DWORD [36+esp]
        vpsrld  xmm0,xmm6,30
        vmovdqa [16+esp],xmm1
        and     ebp,ebx
        xor     ebx,ecx
        shrd    eax,eax,7
        mov     esi,edi
        vpslld  xmm6,xmm6,2
        xor     ebp,ebx
        shld    edi,edi,5
        add     edx,ebp
        xor     esi,eax
        xor     eax,ebx
        add     edx,edi
        add     ecx,DWORD [40+esp]
        and     esi,eax
        vpor    xmm6,xmm6,xmm0
        xor     eax,ebx
        shrd    edi,edi,7
        vmovdqa xmm0,[96+esp]
        mov     ebp,edx
        xor     esi,eax
        shld    edx,edx,5
        add     ecx,esi
        xor     ebp,edi
        xor     edi,eax
        add     ecx,edx
        add     ebx,DWORD [44+esp]
        and     ebp,edi
        xor     edi,eax
        shrd    edx,edx,7
        mov     esi,ecx
        xor     ebp,edi
        shld    ecx,ecx,5
        add     ebx,ebp
        xor     esi,edx
        xor     edx,edi
        add     ebx,ecx
        vpalignr        xmm1,xmm6,xmm5,8
        vpxor   xmm7,xmm7,xmm3
        add     eax,DWORD [48+esp]
        and     esi,edx
        xor     edx,edi
        shrd    ecx,ecx,7
        vpxor   xmm7,xmm7,xmm0
        vmovdqa [96+esp],xmm3
        mov     ebp,ebx
        xor     esi,edx
        vmovdqa xmm3,[144+esp]
        vpaddd  xmm2,xmm2,xmm6
        shld    ebx,ebx,5
        add     eax,esi
        vpxor   xmm7,xmm7,xmm1
        xor     ebp,ecx
        xor     ecx,edx
        add     eax,ebx
        add     edi,DWORD [52+esp]
        vpsrld  xmm1,xmm7,30
        vmovdqa [32+esp],xmm2
        and     ebp,ecx
        xor     ecx,edx
        shrd    ebx,ebx,7
        mov     esi,eax
        vpslld  xmm7,xmm7,2
        xor     ebp,ecx
        shld    eax,eax,5
        add     edi,ebp
        xor     esi,ebx
        xor     ebx,ecx
        add     edi,eax
        add     edx,DWORD [56+esp]
        and     esi,ebx
        vpor    xmm7,xmm7,xmm1
        xor     ebx,ecx
        shrd    eax,eax,7
        vmovdqa xmm1,[64+esp]
        mov     ebp,edi
        xor     esi,ebx
        shld    edi,edi,5
        add     edx,esi
        xor     ebp,eax
        xor     eax,ebx
        add     edx,edi
        add     ecx,DWORD [60+esp]
        and     ebp,eax
        xor     eax,ebx
        shrd    edi,edi,7
        mov     esi,edx
        xor     ebp,eax
        shld    edx,edx,5
        add     ecx,ebp
        xor     esi,edi
        xor     edi,eax
        add     ecx,edx
        vpalignr        xmm2,xmm7,xmm6,8
        vpxor   xmm0,xmm0,xmm4
        add     ebx,DWORD [esp]
        and     esi,edi
        xor     edi,eax
        shrd    edx,edx,7
        vpxor   xmm0,xmm0,xmm1
        vmovdqa [64+esp],xmm4
        mov     ebp,ecx
        xor     esi,edi
        vmovdqa xmm4,xmm3
        vpaddd  xmm3,xmm3,xmm7
        shld    ecx,ecx,5
        add     ebx,esi
        vpxor   xmm0,xmm0,xmm2
        xor     ebp,edx
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [4+esp]
        vpsrld  xmm2,xmm0,30
        vmovdqa [48+esp],xmm3
        and     ebp,edx
        xor     edx,edi
        shrd    ecx,ecx,7
        mov     esi,ebx
        vpslld  xmm0,xmm0,2
        xor     ebp,edx
        shld    ebx,ebx,5
        add     eax,ebp
        xor     esi,ecx
        xor     ecx,edx
        add     eax,ebx
        add     edi,DWORD [8+esp]
        and     esi,ecx
        vpor    xmm0,xmm0,xmm2
        xor     ecx,edx
        shrd    ebx,ebx,7
        vmovdqa xmm2,[80+esp]
        mov     ebp,eax
        xor     esi,ecx
        shld    eax,eax,5
        add     edi,esi
        xor     ebp,ebx
        xor     ebx,ecx
        add     edi,eax
        add     edx,DWORD [12+esp]
        and     ebp,ebx
        xor     ebx,ecx
        shrd    eax,eax,7
        mov     esi,edi
        xor     ebp,ebx
        shld    edi,edi,5
        add     edx,ebp
        xor     esi,eax
        xor     eax,ebx
        add     edx,edi
        vpalignr        xmm3,xmm0,xmm7,8
        vpxor   xmm1,xmm1,xmm5
        add     ecx,DWORD [16+esp]
        and     esi,eax
        xor     eax,ebx
        shrd    edi,edi,7
        vpxor   xmm1,xmm1,xmm2
        vmovdqa [80+esp],xmm5
        mov     ebp,edx
        xor     esi,eax
        vmovdqa xmm5,xmm4
        vpaddd  xmm4,xmm4,xmm0
        shld    edx,edx,5
        add     ecx,esi
        vpxor   xmm1,xmm1,xmm3
        xor     ebp,edi
        xor     edi,eax
        add     ecx,edx
        add     ebx,DWORD [20+esp]
        vpsrld  xmm3,xmm1,30
        vmovdqa [esp],xmm4
        and     ebp,edi
        xor     edi,eax
        shrd    edx,edx,7
        mov     esi,ecx
        vpslld  xmm1,xmm1,2
        xor     ebp,edi
        shld    ecx,ecx,5
        add     ebx,ebp
        xor     esi,edx
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [24+esp]
        and     esi,edx
        vpor    xmm1,xmm1,xmm3
        xor     edx,edi
        shrd    ecx,ecx,7
        vmovdqa xmm3,[96+esp]
        mov     ebp,ebx
        xor     esi,edx
        shld    ebx,ebx,5
        add     eax,esi
        xor     ebp,ecx
        xor     ecx,edx
        add     eax,ebx
        add     edi,DWORD [28+esp]
        and     ebp,ecx
        xor     ecx,edx
        shrd    ebx,ebx,7
        mov     esi,eax
        xor     ebp,ecx
        shld    eax,eax,5
        add     edi,ebp
        xor     esi,ebx
        xor     ebx,ecx
        add     edi,eax
        vpalignr        xmm4,xmm1,xmm0,8
        vpxor   xmm2,xmm2,xmm6
        add     edx,DWORD [32+esp]
        and     esi,ebx
        xor     ebx,ecx
        shrd    eax,eax,7
        vpxor   xmm2,xmm2,xmm3
        vmovdqa [96+esp],xmm6
        mov     ebp,edi
        xor     esi,ebx
        vmovdqa xmm6,xmm5
        vpaddd  xmm5,xmm5,xmm1
        shld    edi,edi,5
        add     edx,esi
        vpxor   xmm2,xmm2,xmm4
        xor     ebp,eax
        xor     eax,ebx
        add     edx,edi
        add     ecx,DWORD [36+esp]
        vpsrld  xmm4,xmm2,30
        vmovdqa [16+esp],xmm5
        and     ebp,eax
        xor     eax,ebx
        shrd    edi,edi,7
        mov     esi,edx
        vpslld  xmm2,xmm2,2
        xor     ebp,eax
        shld    edx,edx,5
        add     ecx,ebp
        xor     esi,edi
        xor     edi,eax
        add     ecx,edx
        add     ebx,DWORD [40+esp]
        and     esi,edi
        vpor    xmm2,xmm2,xmm4
        xor     edi,eax
        shrd    edx,edx,7
        vmovdqa xmm4,[64+esp]
        mov     ebp,ecx
        xor     esi,edi
        shld    ecx,ecx,5
        add     ebx,esi
        xor     ebp,edx
        xor     edx,edi
        add     ebx,ecx
        add     eax,DWORD [44+esp]
        and     ebp,edx
        xor     edx,edi
        shrd    ecx,ecx,7
        mov     esi,ebx
        xor     ebp,edx
        shld    ebx,ebx,5
        add     eax,ebp
        xor     esi,edx
        add     eax,ebx
        vpalignr        xmm5,xmm2,xmm1,8
        vpxor   xmm3,xmm3,xmm7
        add     edi,DWORD [48+esp]
        xor     esi,ecx
        mov     ebp,eax
        shld    eax,eax,5
        vpxor   xmm3,xmm3,xmm4
        vmovdqa [64+esp],xmm7
        add     edi,esi
        xor     ebp,ecx
        vmovdqa xmm7,xmm6
        vpaddd  xmm6,xmm6,xmm2
        shrd    ebx,ebx,7
        add     edi,eax
        vpxor   xmm3,xmm3,xmm5
        add     edx,DWORD [52+esp]
        xor     ebp,ebx
        mov     esi,edi
        shld    edi,edi,5
        vpsrld  xmm5,xmm3,30
        vmovdqa [32+esp],xmm6
        add     edx,ebp
        xor     esi,ebx
        shrd    eax,eax,7
        add     edx,edi
        vpslld  xmm3,xmm3,2
        add     ecx,DWORD [56+esp]
        xor     esi,eax
        mov     ebp,edx
        shld    edx,edx,5
        add     ecx,esi
        xor     ebp,eax
        shrd    edi,edi,7
        add     ecx,edx
        vpor    xmm3,xmm3,xmm5
        add     ebx,DWORD [60+esp]
        xor     ebp,edi
        mov     esi,ecx
        shld    ecx,ecx,5
        add     ebx,ebp
        xor     esi,edi
        shrd    edx,edx,7
        add     ebx,ecx
        add     eax,DWORD [esp]
        vpaddd  xmm7,xmm7,xmm3
        xor     esi,edx
        mov     ebp,ebx
        shld    ebx,ebx,5
        add     eax,esi
        vmovdqa [48+esp],xmm7
        xor     ebp,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        add     edi,DWORD [4+esp]
        xor     ebp,ecx
        mov     esi,eax
        shld    eax,eax,5
        add     edi,ebp
        xor     esi,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        add     edx,DWORD [8+esp]
        xor     esi,ebx
        mov     ebp,edi
        shld    edi,edi,5
        add     edx,esi
        xor     ebp,ebx
        shrd    eax,eax,7
        add     edx,edi
        add     ecx,DWORD [12+esp]
        xor     ebp,eax
        mov     esi,edx
        shld    edx,edx,5
        add     ecx,ebp
        xor     esi,eax
        shrd    edi,edi,7
        add     ecx,edx
        mov     ebp,DWORD [196+esp]
        cmp     ebp,DWORD [200+esp]
        je      NEAR L$010done
        vmovdqa xmm7,[160+esp]
        vmovdqa xmm6,[176+esp]
        vmovdqu xmm0,[ebp]
        vmovdqu xmm1,[16+ebp]
        vmovdqu xmm2,[32+ebp]
        vmovdqu xmm3,[48+ebp]
        add     ebp,64
        vpshufb xmm0,xmm0,xmm6
        mov     DWORD [196+esp],ebp
        vmovdqa [96+esp],xmm7
        add     ebx,DWORD [16+esp]
        xor     esi,edi
        vpshufb xmm1,xmm1,xmm6
        mov     ebp,ecx
        shld    ecx,ecx,5
        vpaddd  xmm4,xmm0,xmm7
        add     ebx,esi
        xor     ebp,edi
        shrd    edx,edx,7
        add     ebx,ecx
        vmovdqa [esp],xmm4
        add     eax,DWORD [20+esp]
        xor     ebp,edx
        mov     esi,ebx
        shld    ebx,ebx,5
        add     eax,ebp
        xor     esi,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        add     edi,DWORD [24+esp]
        xor     esi,ecx
        mov     ebp,eax
        shld    eax,eax,5
        add     edi,esi
        xor     ebp,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        add     edx,DWORD [28+esp]
        xor     ebp,ebx
        mov     esi,edi
        shld    edi,edi,5
        add     edx,ebp
        xor     esi,ebx
        shrd    eax,eax,7
        add     edx,edi
        add     ecx,DWORD [32+esp]
        xor     esi,eax
        vpshufb xmm2,xmm2,xmm6
        mov     ebp,edx
        shld    edx,edx,5
        vpaddd  xmm5,xmm1,xmm7
        add     ecx,esi
        xor     ebp,eax
        shrd    edi,edi,7
        add     ecx,edx
        vmovdqa [16+esp],xmm5
        add     ebx,DWORD [36+esp]
        xor     ebp,edi
        mov     esi,ecx
        shld    ecx,ecx,5
        add     ebx,ebp
        xor     esi,edi
        shrd    edx,edx,7
        add     ebx,ecx
        add     eax,DWORD [40+esp]
        xor     esi,edx
        mov     ebp,ebx
        shld    ebx,ebx,5
        add     eax,esi
        xor     ebp,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        add     edi,DWORD [44+esp]
        xor     ebp,ecx
        mov     esi,eax
        shld    eax,eax,5
        add     edi,ebp
        xor     esi,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        add     edx,DWORD [48+esp]
        xor     esi,ebx
        vpshufb xmm3,xmm3,xmm6
        mov     ebp,edi
        shld    edi,edi,5
        vpaddd  xmm6,xmm2,xmm7
        add     edx,esi
        xor     ebp,ebx
        shrd    eax,eax,7
        add     edx,edi
        vmovdqa [32+esp],xmm6
        add     ecx,DWORD [52+esp]
        xor     ebp,eax
        mov     esi,edx
        shld    edx,edx,5
        add     ecx,ebp
        xor     esi,eax
        shrd    edi,edi,7
        add     ecx,edx
        add     ebx,DWORD [56+esp]
        xor     esi,edi
        mov     ebp,ecx
        shld    ecx,ecx,5
        add     ebx,esi
        xor     ebp,edi
        shrd    edx,edx,7
        add     ebx,ecx
        add     eax,DWORD [60+esp]
        xor     ebp,edx
        mov     esi,ebx
        shld    ebx,ebx,5
        add     eax,ebp
        shrd    ecx,ecx,7
        add     eax,ebx
        mov     ebp,DWORD [192+esp]
        add     eax,DWORD [ebp]
        add     esi,DWORD [4+ebp]
        add     ecx,DWORD [8+ebp]
        mov     DWORD [ebp],eax
        add     edx,DWORD [12+ebp]
        mov     DWORD [4+ebp],esi
        add     edi,DWORD [16+ebp]
        mov     ebx,ecx
        mov     DWORD [8+ebp],ecx
        xor     ebx,edx
        mov     DWORD [12+ebp],edx
        mov     DWORD [16+ebp],edi
        mov     ebp,esi
        and     esi,ebx
        mov     ebx,ebp
        jmp     NEAR L$009loop
align   16
L$010done:
        add     ebx,DWORD [16+esp]
        xor     esi,edi
        mov     ebp,ecx
        shld    ecx,ecx,5
        add     ebx,esi
        xor     ebp,edi
        shrd    edx,edx,7
        add     ebx,ecx
        add     eax,DWORD [20+esp]
        xor     ebp,edx
        mov     esi,ebx
        shld    ebx,ebx,5
        add     eax,ebp
        xor     esi,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        add     edi,DWORD [24+esp]
        xor     esi,ecx
        mov     ebp,eax
        shld    eax,eax,5
        add     edi,esi
        xor     ebp,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        add     edx,DWORD [28+esp]
        xor     ebp,ebx
        mov     esi,edi
        shld    edi,edi,5
        add     edx,ebp
        xor     esi,ebx
        shrd    eax,eax,7
        add     edx,edi
        add     ecx,DWORD [32+esp]
        xor     esi,eax
        mov     ebp,edx
        shld    edx,edx,5
        add     ecx,esi
        xor     ebp,eax
        shrd    edi,edi,7
        add     ecx,edx
        add     ebx,DWORD [36+esp]
        xor     ebp,edi
        mov     esi,ecx
        shld    ecx,ecx,5
        add     ebx,ebp
        xor     esi,edi
        shrd    edx,edx,7
        add     ebx,ecx
        add     eax,DWORD [40+esp]
        xor     esi,edx
        mov     ebp,ebx
        shld    ebx,ebx,5
        add     eax,esi
        xor     ebp,edx
        shrd    ecx,ecx,7
        add     eax,ebx
        add     edi,DWORD [44+esp]
        xor     ebp,ecx
        mov     esi,eax
        shld    eax,eax,5
        add     edi,ebp
        xor     esi,ecx
        shrd    ebx,ebx,7
        add     edi,eax
        add     edx,DWORD [48+esp]
        xor     esi,ebx
        mov     ebp,edi
        shld    edi,edi,5
        add     edx,esi
        xor     ebp,ebx
        shrd    eax,eax,7
        add     edx,edi
        add     ecx,DWORD [52+esp]
        xor     ebp,eax
        mov     esi,edx
        shld    edx,edx,5
        add     ecx,ebp
        xor     esi,eax
        shrd    edi,edi,7
        add     ecx,edx
        add     ebx,DWORD [56+esp]
        xor     esi,edi
        mov     ebp,ecx
        shld    ecx,ecx,5
        add     ebx,esi
        xor     ebp,edi
        shrd    edx,edx,7
        add     ebx,ecx
        add     eax,DWORD [60+esp]
        xor     ebp,edx
        mov     esi,ebx
        shld    ebx,ebx,5
        add     eax,ebp
        shrd    ecx,ecx,7
        add     eax,ebx
        vzeroall
        mov     ebp,DWORD [192+esp]
        add     eax,DWORD [ebp]
        mov     esp,DWORD [204+esp]
        add     esi,DWORD [4+ebp]
        add     ecx,DWORD [8+ebp]
        mov     DWORD [ebp],eax
        add     edx,DWORD [12+ebp]
        mov     DWORD [4+ebp],esi
        add     edi,DWORD [16+ebp]
        mov     DWORD [8+ebp],ecx
        mov     DWORD [12+ebp],edx
        mov     DWORD [16+ebp],edi
        pop     edi
        pop     esi
        pop     ebx
        pop     ebp
        ret
align   64
L$K_XX_XX:
dd      1518500249,1518500249,1518500249,1518500249
dd      1859775393,1859775393,1859775393,1859775393
dd      2400959708,2400959708,2400959708,2400959708
dd      3395469782,3395469782,3395469782,3395469782
dd      66051,67438087,134810123,202182159
db      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
db      83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
db      102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
db      89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
db      114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
segment .bss
common  _OPENSSL_ia32cap_P 16
