]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CryptoPkg/Library/OpensslLib/IA32/crypto/sha/sha1-586.nasm
CryptoPkg/OpensslLib: Commit the auto-generated assembly files for IA32
[mirror_edk2.git] / CryptoPkg / Library / OpensslLib / IA32 / crypto / sha / sha1-586.nasm
diff --git a/CryptoPkg/Library/OpensslLib/IA32/crypto/sha/sha1-586.nasm b/CryptoPkg/Library/OpensslLib/IA32/crypto/sha/sha1-586.nasm
new file mode 100644 (file)
index 0000000..bf2831e
--- /dev/null
@@ -0,0 +1,1394 @@
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/sha/asm/sha1-586.pl\r
+;\r
+; Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License").  You may not use\r
+; this file except in compliance with the License.  You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+%ifidn __OUTPUT_FORMAT__,obj\r
+section code    use32 class=code align=64\r
+%elifidn __OUTPUT_FORMAT__,win32\r
+$@feat.00 equ 1\r
+section .text   code align=64\r
+%else\r
+section .text   code\r
+%endif\r
+global  _sha1_block_data_order\r
+align   16\r
+_sha1_block_data_order:\r
+L$_sha1_block_data_order_begin:\r
+        push    ebp\r
+        push    ebx\r
+        push    esi\r
+        push    edi\r
+        mov     ebp,DWORD [20+esp]\r
+        mov     esi,DWORD [24+esp]\r
+        mov     eax,DWORD [28+esp]\r
+        sub     esp,76\r
+        shl     eax,6\r
+        add     eax,esi\r
+        mov     DWORD [104+esp],eax\r
+        mov     edi,DWORD [16+ebp]\r
+        jmp     NEAR L$000loop\r
+align   16\r
+L$000loop:\r
+        mov     eax,DWORD [esi]\r
+        mov     ebx,DWORD [4+esi]\r
+        mov     ecx,DWORD [8+esi]\r
+        mov     edx,DWORD [12+esi]\r
+        bswap   eax\r
+        bswap   ebx\r
+        bswap   ecx\r
+        bswap   edx\r
+        mov     DWORD [esp],eax\r
+        mov     DWORD [4+esp],ebx\r
+        mov     DWORD [8+esp],ecx\r
+        mov     DWORD [12+esp],edx\r
+        mov     eax,DWORD [16+esi]\r
+        mov     ebx,DWORD [20+esi]\r
+        mov     ecx,DWORD [24+esi]\r
+        mov     edx,DWORD [28+esi]\r
+        bswap   eax\r
+        bswap   ebx\r
+        bswap   ecx\r
+        bswap   edx\r
+        mov     DWORD [16+esp],eax\r
+        mov     DWORD [20+esp],ebx\r
+        mov     DWORD [24+esp],ecx\r
+        mov     DWORD [28+esp],edx\r
+        mov     eax,DWORD [32+esi]\r
+        mov     ebx,DWORD [36+esi]\r
+        mov     ecx,DWORD [40+esi]\r
+        mov     edx,DWORD [44+esi]\r
+        bswap   eax\r
+        bswap   ebx\r
+        bswap   ecx\r
+        bswap   edx\r
+        mov     DWORD [32+esp],eax\r
+        mov     DWORD [36+esp],ebx\r
+        mov     DWORD [40+esp],ecx\r
+        mov     DWORD [44+esp],edx\r
+        mov     eax,DWORD [48+esi]\r
+        mov     ebx,DWORD [52+esi]\r
+        mov     ecx,DWORD [56+esi]\r
+        mov     edx,DWORD [60+esi]\r
+        bswap   eax\r
+        bswap   ebx\r
+        bswap   ecx\r
+        bswap   edx\r
+        mov     DWORD [48+esp],eax\r
+        mov     DWORD [52+esp],ebx\r
+        mov     DWORD [56+esp],ecx\r
+        mov     DWORD [60+esp],edx\r
+        mov     DWORD [100+esp],esi\r
+        mov     eax,DWORD [ebp]\r
+        mov     ebx,DWORD [4+ebp]\r
+        mov     ecx,DWORD [8+ebp]\r
+        mov     edx,DWORD [12+ebp]\r
+        ; 00_15 0\r
+        mov     esi,ecx\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        xor     esi,edx\r
+        add     ebp,edi\r
+        mov     edi,DWORD [esp]\r
+        and     esi,ebx\r
+        ror     ebx,2\r
+        xor     esi,edx\r
+        lea     ebp,[1518500249+edi*1+ebp]\r
+        add     ebp,esi\r
+        ; 00_15 1\r
+        mov     edi,ebx\r
+        mov     esi,ebp\r
+        rol     ebp,5\r
+        xor     edi,ecx\r
+        add     ebp,edx\r
+        mov     edx,DWORD [4+esp]\r
+        and     edi,eax\r
+        ror     eax,2\r
+        xor     edi,ecx\r
+        lea     ebp,[1518500249+edx*1+ebp]\r
+        add     ebp,edi\r
+        ; 00_15 2\r
+        mov     edx,eax\r
+        mov     edi,ebp\r
+        rol     ebp,5\r
+        xor     edx,ebx\r
+        add     ebp,ecx\r
+        mov     ecx,DWORD [8+esp]\r
+        and     edx,esi\r
+        ror     esi,2\r
+        xor     edx,ebx\r
+        lea     ebp,[1518500249+ecx*1+ebp]\r
+        add     ebp,edx\r
+        ; 00_15 3\r
+        mov     ecx,esi\r
+        mov     edx,ebp\r
+        rol     ebp,5\r
+        xor     ecx,eax\r
+        add     ebp,ebx\r
+        mov     ebx,DWORD [12+esp]\r
+        and     ecx,edi\r
+        ror     edi,2\r
+        xor     ecx,eax\r
+        lea     ebp,[1518500249+ebx*1+ebp]\r
+        add     ebp,ecx\r
+        ; 00_15 4\r
+        mov     ebx,edi\r
+        mov     ecx,ebp\r
+        rol     ebp,5\r
+        xor     ebx,esi\r
+        add     ebp,eax\r
+        mov     eax,DWORD [16+esp]\r
+        and     ebx,edx\r
+        ror     edx,2\r
+        xor     ebx,esi\r
+        lea     ebp,[1518500249+eax*1+ebp]\r
+        add     ebp,ebx\r
+        ; 00_15 5\r
+        mov     eax,edx\r
+        mov     ebx,ebp\r
+        rol     ebp,5\r
+        xor     eax,edi\r
+        add     ebp,esi\r
+        mov     esi,DWORD [20+esp]\r
+        and     eax,ecx\r
+        ror     ecx,2\r
+        xor     eax,edi\r
+        lea     ebp,[1518500249+esi*1+ebp]\r
+        add     ebp,eax\r
+        ; 00_15 6\r
+        mov     esi,ecx\r
+        mov     eax,ebp\r
+        rol     ebp,5\r
+        xor     esi,edx\r
+        add     ebp,edi\r
+        mov     edi,DWORD [24+esp]\r
+        and     esi,ebx\r
+        ror     ebx,2\r
+        xor     esi,edx\r
+        lea     ebp,[1518500249+edi*1+ebp]\r
+        add     ebp,esi\r
+        ; 00_15 7\r
+        mov     edi,ebx\r
+        mov     esi,ebp\r
+        rol     ebp,5\r
+        xor     edi,ecx\r
+        add     ebp,edx\r
+        mov     edx,DWORD [28+esp]\r
+        and     edi,eax\r
+        ror     eax,2\r
+        xor     edi,ecx\r
+        lea     ebp,[1518500249+edx*1+ebp]\r
+        add     ebp,edi\r
+        ; 00_15 8\r
+        mov     edx,eax\r
+        mov     edi,ebp\r
+        rol     ebp,5\r
+        xor     edx,ebx\r
+        add     ebp,ecx\r
+        mov     ecx,DWORD [32+esp]\r
+        and     edx,esi\r
+        ror     esi,2\r
+        xor     edx,ebx\r
+        lea     ebp,[1518500249+ecx*1+ebp]\r
+        add     ebp,edx\r
+        ; 00_15 9\r
+        mov     ecx,esi\r
+        mov     edx,ebp\r
+        rol     ebp,5\r
+        xor     ecx,eax\r
+        add     ebp,ebx\r
+        mov     ebx,DWORD [36+esp]\r
+        and     ecx,edi\r
+        ror     edi,2\r
+        xor     ecx,eax\r
+        lea     ebp,[1518500249+ebx*1+ebp]\r
+        add     ebp,ecx\r
+        ; 00_15 10\r
+        mov     ebx,edi\r
+        mov     ecx,ebp\r
+        rol     ebp,5\r
+        xor     ebx,esi\r
+        add     ebp,eax\r
+        mov     eax,DWORD [40+esp]\r
+        and     ebx,edx\r
+        ror     edx,2\r
+        xor     ebx,esi\r
+        lea     ebp,[1518500249+eax*1+ebp]\r
+        add     ebp,ebx\r
+        ; 00_15 11\r
+        mov     eax,edx\r
+        mov     ebx,ebp\r
+        rol     ebp,5\r
+        xor     eax,edi\r
+        add     ebp,esi\r
+        mov     esi,DWORD [44+esp]\r
+        and     eax,ecx\r
+        ror     ecx,2\r
+        xor     eax,edi\r
+        lea     ebp,[1518500249+esi*1+ebp]\r
+        add     ebp,eax\r
+        ; 00_15 12\r
+        mov     esi,ecx\r
+        mov     eax,ebp\r
+        rol     ebp,5\r
+        xor     esi,edx\r
+        add     ebp,edi\r
+        mov     edi,DWORD [48+esp]\r
+        and     esi,ebx\r
+        ror     ebx,2\r
+        xor     esi,edx\r
+        lea     ebp,[1518500249+edi*1+ebp]\r
+        add     ebp,esi\r
+        ; 00_15 13\r
+        mov     edi,ebx\r
+        mov     esi,ebp\r
+        rol     ebp,5\r
+        xor     edi,ecx\r
+        add     ebp,edx\r
+        mov     edx,DWORD [52+esp]\r
+        and     edi,eax\r
+        ror     eax,2\r
+        xor     edi,ecx\r
+        lea     ebp,[1518500249+edx*1+ebp]\r
+        add     ebp,edi\r
+        ; 00_15 14\r
+        mov     edx,eax\r
+        mov     edi,ebp\r
+        rol     ebp,5\r
+        xor     edx,ebx\r
+        add     ebp,ecx\r
+        mov     ecx,DWORD [56+esp]\r
+        and     edx,esi\r
+        ror     esi,2\r
+        xor     edx,ebx\r
+        lea     ebp,[1518500249+ecx*1+ebp]\r
+        add     ebp,edx\r
+        ; 00_15 15\r
+        mov     ecx,esi\r
+        mov     edx,ebp\r
+        rol     ebp,5\r
+        xor     ecx,eax\r
+        add     ebp,ebx\r
+        mov     ebx,DWORD [60+esp]\r
+        and     ecx,edi\r
+        ror     edi,2\r
+        xor     ecx,eax\r
+        lea     ebp,[1518500249+ebx*1+ebp]\r
+        mov     ebx,DWORD [esp]\r
+        add     ecx,ebp\r
+        ; 16_19 16\r
+        mov     ebp,edi\r
+        xor     ebx,DWORD [8+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [32+esp]\r
+        and     ebp,edx\r
+        xor     ebx,DWORD [52+esp]\r
+        rol     ebx,1\r
+        xor     ebp,esi\r
+        add     eax,ebp\r
+        mov     ebp,ecx\r
+        ror     edx,2\r
+        mov     DWORD [esp],ebx\r
+        rol     ebp,5\r
+        lea     ebx,[1518500249+eax*1+ebx]\r
+        mov     eax,DWORD [4+esp]\r
+        add     ebx,ebp\r
+        ; 16_19 17\r
+        mov     ebp,edx\r
+        xor     eax,DWORD [12+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [36+esp]\r
+        and     ebp,ecx\r
+        xor     eax,DWORD [56+esp]\r
+        rol     eax,1\r
+        xor     ebp,edi\r
+        add     esi,ebp\r
+        mov     ebp,ebx\r
+        ror     ecx,2\r
+        mov     DWORD [4+esp],eax\r
+        rol     ebp,5\r
+        lea     eax,[1518500249+esi*1+eax]\r
+        mov     esi,DWORD [8+esp]\r
+        add     eax,ebp\r
+        ; 16_19 18\r
+        mov     ebp,ecx\r
+        xor     esi,DWORD [16+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [40+esp]\r
+        and     ebp,ebx\r
+        xor     esi,DWORD [60+esp]\r
+        rol     esi,1\r
+        xor     ebp,edx\r
+        add     edi,ebp\r
+        mov     ebp,eax\r
+        ror     ebx,2\r
+        mov     DWORD [8+esp],esi\r
+        rol     ebp,5\r
+        lea     esi,[1518500249+edi*1+esi]\r
+        mov     edi,DWORD [12+esp]\r
+        add     esi,ebp\r
+        ; 16_19 19\r
+        mov     ebp,ebx\r
+        xor     edi,DWORD [20+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [44+esp]\r
+        and     ebp,eax\r
+        xor     edi,DWORD [esp]\r
+        rol     edi,1\r
+        xor     ebp,ecx\r
+        add     edx,ebp\r
+        mov     ebp,esi\r
+        ror     eax,2\r
+        mov     DWORD [12+esp],edi\r
+        rol     ebp,5\r
+        lea     edi,[1518500249+edx*1+edi]\r
+        mov     edx,DWORD [16+esp]\r
+        add     edi,ebp\r
+        ; 20_39 20\r
+        mov     ebp,esi\r
+        xor     edx,DWORD [24+esp]\r
+        xor     ebp,eax\r
+        xor     edx,DWORD [48+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [4+esp]\r
+        rol     edx,1\r
+        add     ecx,ebp\r
+        ror     esi,2\r
+        mov     ebp,edi\r
+        rol     ebp,5\r
+        mov     DWORD [16+esp],edx\r
+        lea     edx,[1859775393+ecx*1+edx]\r
+        mov     ecx,DWORD [20+esp]\r
+        add     edx,ebp\r
+        ; 20_39 21\r
+        mov     ebp,edi\r
+        xor     ecx,DWORD [28+esp]\r
+        xor     ebp,esi\r
+        xor     ecx,DWORD [52+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [8+esp]\r
+        rol     ecx,1\r
+        add     ebx,ebp\r
+        ror     edi,2\r
+        mov     ebp,edx\r
+        rol     ebp,5\r
+        mov     DWORD [20+esp],ecx\r
+        lea     ecx,[1859775393+ebx*1+ecx]\r
+        mov     ebx,DWORD [24+esp]\r
+        add     ecx,ebp\r
+        ; 20_39 22\r
+        mov     ebp,edx\r
+        xor     ebx,DWORD [32+esp]\r
+        xor     ebp,edi\r
+        xor     ebx,DWORD [56+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [12+esp]\r
+        rol     ebx,1\r
+        add     eax,ebp\r
+        ror     edx,2\r
+        mov     ebp,ecx\r
+        rol     ebp,5\r
+        mov     DWORD [24+esp],ebx\r
+        lea     ebx,[1859775393+eax*1+ebx]\r
+        mov     eax,DWORD [28+esp]\r
+        add     ebx,ebp\r
+        ; 20_39 23\r
+        mov     ebp,ecx\r
+        xor     eax,DWORD [36+esp]\r
+        xor     ebp,edx\r
+        xor     eax,DWORD [60+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [16+esp]\r
+        rol     eax,1\r
+        add     esi,ebp\r
+        ror     ecx,2\r
+        mov     ebp,ebx\r
+        rol     ebp,5\r
+        mov     DWORD [28+esp],eax\r
+        lea     eax,[1859775393+esi*1+eax]\r
+        mov     esi,DWORD [32+esp]\r
+        add     eax,ebp\r
+        ; 20_39 24\r
+        mov     ebp,ebx\r
+        xor     esi,DWORD [40+esp]\r
+        xor     ebp,ecx\r
+        xor     esi,DWORD [esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [20+esp]\r
+        rol     esi,1\r
+        add     edi,ebp\r
+        ror     ebx,2\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        mov     DWORD [32+esp],esi\r
+        lea     esi,[1859775393+edi*1+esi]\r
+        mov     edi,DWORD [36+esp]\r
+        add     esi,ebp\r
+        ; 20_39 25\r
+        mov     ebp,eax\r
+        xor     edi,DWORD [44+esp]\r
+        xor     ebp,ebx\r
+        xor     edi,DWORD [4+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [24+esp]\r
+        rol     edi,1\r
+        add     edx,ebp\r
+        ror     eax,2\r
+        mov     ebp,esi\r
+        rol     ebp,5\r
+        mov     DWORD [36+esp],edi\r
+        lea     edi,[1859775393+edx*1+edi]\r
+        mov     edx,DWORD [40+esp]\r
+        add     edi,ebp\r
+        ; 20_39 26\r
+        mov     ebp,esi\r
+        xor     edx,DWORD [48+esp]\r
+        xor     ebp,eax\r
+        xor     edx,DWORD [8+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [28+esp]\r
+        rol     edx,1\r
+        add     ecx,ebp\r
+        ror     esi,2\r
+        mov     ebp,edi\r
+        rol     ebp,5\r
+        mov     DWORD [40+esp],edx\r
+        lea     edx,[1859775393+ecx*1+edx]\r
+        mov     ecx,DWORD [44+esp]\r
+        add     edx,ebp\r
+        ; 20_39 27\r
+        mov     ebp,edi\r
+        xor     ecx,DWORD [52+esp]\r
+        xor     ebp,esi\r
+        xor     ecx,DWORD [12+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [32+esp]\r
+        rol     ecx,1\r
+        add     ebx,ebp\r
+        ror     edi,2\r
+        mov     ebp,edx\r
+        rol     ebp,5\r
+        mov     DWORD [44+esp],ecx\r
+        lea     ecx,[1859775393+ebx*1+ecx]\r
+        mov     ebx,DWORD [48+esp]\r
+        add     ecx,ebp\r
+        ; 20_39 28\r
+        mov     ebp,edx\r
+        xor     ebx,DWORD [56+esp]\r
+        xor     ebp,edi\r
+        xor     ebx,DWORD [16+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [36+esp]\r
+        rol     ebx,1\r
+        add     eax,ebp\r
+        ror     edx,2\r
+        mov     ebp,ecx\r
+        rol     ebp,5\r
+        mov     DWORD [48+esp],ebx\r
+        lea     ebx,[1859775393+eax*1+ebx]\r
+        mov     eax,DWORD [52+esp]\r
+        add     ebx,ebp\r
+        ; 20_39 29\r
+        mov     ebp,ecx\r
+        xor     eax,DWORD [60+esp]\r
+        xor     ebp,edx\r
+        xor     eax,DWORD [20+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [40+esp]\r
+        rol     eax,1\r
+        add     esi,ebp\r
+        ror     ecx,2\r
+        mov     ebp,ebx\r
+        rol     ebp,5\r
+        mov     DWORD [52+esp],eax\r
+        lea     eax,[1859775393+esi*1+eax]\r
+        mov     esi,DWORD [56+esp]\r
+        add     eax,ebp\r
+        ; 20_39 30\r
+        mov     ebp,ebx\r
+        xor     esi,DWORD [esp]\r
+        xor     ebp,ecx\r
+        xor     esi,DWORD [24+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [44+esp]\r
+        rol     esi,1\r
+        add     edi,ebp\r
+        ror     ebx,2\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        mov     DWORD [56+esp],esi\r
+        lea     esi,[1859775393+edi*1+esi]\r
+        mov     edi,DWORD [60+esp]\r
+        add     esi,ebp\r
+        ; 20_39 31\r
+        mov     ebp,eax\r
+        xor     edi,DWORD [4+esp]\r
+        xor     ebp,ebx\r
+        xor     edi,DWORD [28+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [48+esp]\r
+        rol     edi,1\r
+        add     edx,ebp\r
+        ror     eax,2\r
+        mov     ebp,esi\r
+        rol     ebp,5\r
+        mov     DWORD [60+esp],edi\r
+        lea     edi,[1859775393+edx*1+edi]\r
+        mov     edx,DWORD [esp]\r
+        add     edi,ebp\r
+        ; 20_39 32\r
+        mov     ebp,esi\r
+        xor     edx,DWORD [8+esp]\r
+        xor     ebp,eax\r
+        xor     edx,DWORD [32+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [52+esp]\r
+        rol     edx,1\r
+        add     ecx,ebp\r
+        ror     esi,2\r
+        mov     ebp,edi\r
+        rol     ebp,5\r
+        mov     DWORD [esp],edx\r
+        lea     edx,[1859775393+ecx*1+edx]\r
+        mov     ecx,DWORD [4+esp]\r
+        add     edx,ebp\r
+        ; 20_39 33\r
+        mov     ebp,edi\r
+        xor     ecx,DWORD [12+esp]\r
+        xor     ebp,esi\r
+        xor     ecx,DWORD [36+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [56+esp]\r
+        rol     ecx,1\r
+        add     ebx,ebp\r
+        ror     edi,2\r
+        mov     ebp,edx\r
+        rol     ebp,5\r
+        mov     DWORD [4+esp],ecx\r
+        lea     ecx,[1859775393+ebx*1+ecx]\r
+        mov     ebx,DWORD [8+esp]\r
+        add     ecx,ebp\r
+        ; 20_39 34\r
+        mov     ebp,edx\r
+        xor     ebx,DWORD [16+esp]\r
+        xor     ebp,edi\r
+        xor     ebx,DWORD [40+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [60+esp]\r
+        rol     ebx,1\r
+        add     eax,ebp\r
+        ror     edx,2\r
+        mov     ebp,ecx\r
+        rol     ebp,5\r
+        mov     DWORD [8+esp],ebx\r
+        lea     ebx,[1859775393+eax*1+ebx]\r
+        mov     eax,DWORD [12+esp]\r
+        add     ebx,ebp\r
+        ; 20_39 35\r
+        mov     ebp,ecx\r
+        xor     eax,DWORD [20+esp]\r
+        xor     ebp,edx\r
+        xor     eax,DWORD [44+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [esp]\r
+        rol     eax,1\r
+        add     esi,ebp\r
+        ror     ecx,2\r
+        mov     ebp,ebx\r
+        rol     ebp,5\r
+        mov     DWORD [12+esp],eax\r
+        lea     eax,[1859775393+esi*1+eax]\r
+        mov     esi,DWORD [16+esp]\r
+        add     eax,ebp\r
+        ; 20_39 36\r
+        mov     ebp,ebx\r
+        xor     esi,DWORD [24+esp]\r
+        xor     ebp,ecx\r
+        xor     esi,DWORD [48+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [4+esp]\r
+        rol     esi,1\r
+        add     edi,ebp\r
+        ror     ebx,2\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        mov     DWORD [16+esp],esi\r
+        lea     esi,[1859775393+edi*1+esi]\r
+        mov     edi,DWORD [20+esp]\r
+        add     esi,ebp\r
+        ; 20_39 37\r
+        mov     ebp,eax\r
+        xor     edi,DWORD [28+esp]\r
+        xor     ebp,ebx\r
+        xor     edi,DWORD [52+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [8+esp]\r
+        rol     edi,1\r
+        add     edx,ebp\r
+        ror     eax,2\r
+        mov     ebp,esi\r
+        rol     ebp,5\r
+        mov     DWORD [20+esp],edi\r
+        lea     edi,[1859775393+edx*1+edi]\r
+        mov     edx,DWORD [24+esp]\r
+        add     edi,ebp\r
+        ; 20_39 38\r
+        mov     ebp,esi\r
+        xor     edx,DWORD [32+esp]\r
+        xor     ebp,eax\r
+        xor     edx,DWORD [56+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [12+esp]\r
+        rol     edx,1\r
+        add     ecx,ebp\r
+        ror     esi,2\r
+        mov     ebp,edi\r
+        rol     ebp,5\r
+        mov     DWORD [24+esp],edx\r
+        lea     edx,[1859775393+ecx*1+edx]\r
+        mov     ecx,DWORD [28+esp]\r
+        add     edx,ebp\r
+        ; 20_39 39\r
+        mov     ebp,edi\r
+        xor     ecx,DWORD [36+esp]\r
+        xor     ebp,esi\r
+        xor     ecx,DWORD [60+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [16+esp]\r
+        rol     ecx,1\r
+        add     ebx,ebp\r
+        ror     edi,2\r
+        mov     ebp,edx\r
+        rol     ebp,5\r
+        mov     DWORD [28+esp],ecx\r
+        lea     ecx,[1859775393+ebx*1+ecx]\r
+        mov     ebx,DWORD [32+esp]\r
+        add     ecx,ebp\r
+        ; 40_59 40\r
+        mov     ebp,edi\r
+        xor     ebx,DWORD [40+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [esp]\r
+        and     ebp,edx\r
+        xor     ebx,DWORD [20+esp]\r
+        rol     ebx,1\r
+        add     ebp,eax\r
+        ror     edx,2\r
+        mov     eax,ecx\r
+        rol     eax,5\r
+        mov     DWORD [32+esp],ebx\r
+        lea     ebx,[2400959708+ebp*1+ebx]\r
+        mov     ebp,edi\r
+        add     ebx,eax\r
+        and     ebp,esi\r
+        mov     eax,DWORD [36+esp]\r
+        add     ebx,ebp\r
+        ; 40_59 41\r
+        mov     ebp,edx\r
+        xor     eax,DWORD [44+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [4+esp]\r
+        and     ebp,ecx\r
+        xor     eax,DWORD [24+esp]\r
+        rol     eax,1\r
+        add     ebp,esi\r
+        ror     ecx,2\r
+        mov     esi,ebx\r
+        rol     esi,5\r
+        mov     DWORD [36+esp],eax\r
+        lea     eax,[2400959708+ebp*1+eax]\r
+        mov     ebp,edx\r
+        add     eax,esi\r
+        and     ebp,edi\r
+        mov     esi,DWORD [40+esp]\r
+        add     eax,ebp\r
+        ; 40_59 42\r
+        mov     ebp,ecx\r
+        xor     esi,DWORD [48+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [8+esp]\r
+        and     ebp,ebx\r
+        xor     esi,DWORD [28+esp]\r
+        rol     esi,1\r
+        add     ebp,edi\r
+        ror     ebx,2\r
+        mov     edi,eax\r
+        rol     edi,5\r
+        mov     DWORD [40+esp],esi\r
+        lea     esi,[2400959708+ebp*1+esi]\r
+        mov     ebp,ecx\r
+        add     esi,edi\r
+        and     ebp,edx\r
+        mov     edi,DWORD [44+esp]\r
+        add     esi,ebp\r
+        ; 40_59 43\r
+        mov     ebp,ebx\r
+        xor     edi,DWORD [52+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [12+esp]\r
+        and     ebp,eax\r
+        xor     edi,DWORD [32+esp]\r
+        rol     edi,1\r
+        add     ebp,edx\r
+        ror     eax,2\r
+        mov     edx,esi\r
+        rol     edx,5\r
+        mov     DWORD [44+esp],edi\r
+        lea     edi,[2400959708+ebp*1+edi]\r
+        mov     ebp,ebx\r
+        add     edi,edx\r
+        and     ebp,ecx\r
+        mov     edx,DWORD [48+esp]\r
+        add     edi,ebp\r
+        ; 40_59 44\r
+        mov     ebp,eax\r
+        xor     edx,DWORD [56+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [16+esp]\r
+        and     ebp,esi\r
+        xor     edx,DWORD [36+esp]\r
+        rol     edx,1\r
+        add     ebp,ecx\r
+        ror     esi,2\r
+        mov     ecx,edi\r
+        rol     ecx,5\r
+        mov     DWORD [48+esp],edx\r
+        lea     edx,[2400959708+ebp*1+edx]\r
+        mov     ebp,eax\r
+        add     edx,ecx\r
+        and     ebp,ebx\r
+        mov     ecx,DWORD [52+esp]\r
+        add     edx,ebp\r
+        ; 40_59 45\r
+        mov     ebp,esi\r
+        xor     ecx,DWORD [60+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [20+esp]\r
+        and     ebp,edi\r
+        xor     ecx,DWORD [40+esp]\r
+        rol     ecx,1\r
+        add     ebp,ebx\r
+        ror     edi,2\r
+        mov     ebx,edx\r
+        rol     ebx,5\r
+        mov     DWORD [52+esp],ecx\r
+        lea     ecx,[2400959708+ebp*1+ecx]\r
+        mov     ebp,esi\r
+        add     ecx,ebx\r
+        and     ebp,eax\r
+        mov     ebx,DWORD [56+esp]\r
+        add     ecx,ebp\r
+        ; 40_59 46\r
+        mov     ebp,edi\r
+        xor     ebx,DWORD [esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [24+esp]\r
+        and     ebp,edx\r
+        xor     ebx,DWORD [44+esp]\r
+        rol     ebx,1\r
+        add     ebp,eax\r
+        ror     edx,2\r
+        mov     eax,ecx\r
+        rol     eax,5\r
+        mov     DWORD [56+esp],ebx\r
+        lea     ebx,[2400959708+ebp*1+ebx]\r
+        mov     ebp,edi\r
+        add     ebx,eax\r
+        and     ebp,esi\r
+        mov     eax,DWORD [60+esp]\r
+        add     ebx,ebp\r
+        ; 40_59 47\r
+        mov     ebp,edx\r
+        xor     eax,DWORD [4+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [28+esp]\r
+        and     ebp,ecx\r
+        xor     eax,DWORD [48+esp]\r
+        rol     eax,1\r
+        add     ebp,esi\r
+        ror     ecx,2\r
+        mov     esi,ebx\r
+        rol     esi,5\r
+        mov     DWORD [60+esp],eax\r
+        lea     eax,[2400959708+ebp*1+eax]\r
+        mov     ebp,edx\r
+        add     eax,esi\r
+        and     ebp,edi\r
+        mov     esi,DWORD [esp]\r
+        add     eax,ebp\r
+        ; 40_59 48\r
+        mov     ebp,ecx\r
+        xor     esi,DWORD [8+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [32+esp]\r
+        and     ebp,ebx\r
+        xor     esi,DWORD [52+esp]\r
+        rol     esi,1\r
+        add     ebp,edi\r
+        ror     ebx,2\r
+        mov     edi,eax\r
+        rol     edi,5\r
+        mov     DWORD [esp],esi\r
+        lea     esi,[2400959708+ebp*1+esi]\r
+        mov     ebp,ecx\r
+        add     esi,edi\r
+        and     ebp,edx\r
+        mov     edi,DWORD [4+esp]\r
+        add     esi,ebp\r
+        ; 40_59 49\r
+        mov     ebp,ebx\r
+        xor     edi,DWORD [12+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [36+esp]\r
+        and     ebp,eax\r
+        xor     edi,DWORD [56+esp]\r
+        rol     edi,1\r
+        add     ebp,edx\r
+        ror     eax,2\r
+        mov     edx,esi\r
+        rol     edx,5\r
+        mov     DWORD [4+esp],edi\r
+        lea     edi,[2400959708+ebp*1+edi]\r
+        mov     ebp,ebx\r
+        add     edi,edx\r
+        and     ebp,ecx\r
+        mov     edx,DWORD [8+esp]\r
+        add     edi,ebp\r
+        ; 40_59 50\r
+        mov     ebp,eax\r
+        xor     edx,DWORD [16+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [40+esp]\r
+        and     ebp,esi\r
+        xor     edx,DWORD [60+esp]\r
+        rol     edx,1\r
+        add     ebp,ecx\r
+        ror     esi,2\r
+        mov     ecx,edi\r
+        rol     ecx,5\r
+        mov     DWORD [8+esp],edx\r
+        lea     edx,[2400959708+ebp*1+edx]\r
+        mov     ebp,eax\r
+        add     edx,ecx\r
+        and     ebp,ebx\r
+        mov     ecx,DWORD [12+esp]\r
+        add     edx,ebp\r
+        ; 40_59 51\r
+        mov     ebp,esi\r
+        xor     ecx,DWORD [20+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [44+esp]\r
+        and     ebp,edi\r
+        xor     ecx,DWORD [esp]\r
+        rol     ecx,1\r
+        add     ebp,ebx\r
+        ror     edi,2\r
+        mov     ebx,edx\r
+        rol     ebx,5\r
+        mov     DWORD [12+esp],ecx\r
+        lea     ecx,[2400959708+ebp*1+ecx]\r
+        mov     ebp,esi\r
+        add     ecx,ebx\r
+        and     ebp,eax\r
+        mov     ebx,DWORD [16+esp]\r
+        add     ecx,ebp\r
+        ; 40_59 52\r
+        mov     ebp,edi\r
+        xor     ebx,DWORD [24+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [48+esp]\r
+        and     ebp,edx\r
+        xor     ebx,DWORD [4+esp]\r
+        rol     ebx,1\r
+        add     ebp,eax\r
+        ror     edx,2\r
+        mov     eax,ecx\r
+        rol     eax,5\r
+        mov     DWORD [16+esp],ebx\r
+        lea     ebx,[2400959708+ebp*1+ebx]\r
+        mov     ebp,edi\r
+        add     ebx,eax\r
+        and     ebp,esi\r
+        mov     eax,DWORD [20+esp]\r
+        add     ebx,ebp\r
+        ; 40_59 53\r
+        mov     ebp,edx\r
+        xor     eax,DWORD [28+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [52+esp]\r
+        and     ebp,ecx\r
+        xor     eax,DWORD [8+esp]\r
+        rol     eax,1\r
+        add     ebp,esi\r
+        ror     ecx,2\r
+        mov     esi,ebx\r
+        rol     esi,5\r
+        mov     DWORD [20+esp],eax\r
+        lea     eax,[2400959708+ebp*1+eax]\r
+        mov     ebp,edx\r
+        add     eax,esi\r
+        and     ebp,edi\r
+        mov     esi,DWORD [24+esp]\r
+        add     eax,ebp\r
+        ; 40_59 54\r
+        mov     ebp,ecx\r
+        xor     esi,DWORD [32+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [56+esp]\r
+        and     ebp,ebx\r
+        xor     esi,DWORD [12+esp]\r
+        rol     esi,1\r
+        add     ebp,edi\r
+        ror     ebx,2\r
+        mov     edi,eax\r
+        rol     edi,5\r
+        mov     DWORD [24+esp],esi\r
+        lea     esi,[2400959708+ebp*1+esi]\r
+        mov     ebp,ecx\r
+        add     esi,edi\r
+        and     ebp,edx\r
+        mov     edi,DWORD [28+esp]\r
+        add     esi,ebp\r
+        ; 40_59 55\r
+        mov     ebp,ebx\r
+        xor     edi,DWORD [36+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [60+esp]\r
+        and     ebp,eax\r
+        xor     edi,DWORD [16+esp]\r
+        rol     edi,1\r
+        add     ebp,edx\r
+        ror     eax,2\r
+        mov     edx,esi\r
+        rol     edx,5\r
+        mov     DWORD [28+esp],edi\r
+        lea     edi,[2400959708+ebp*1+edi]\r
+        mov     ebp,ebx\r
+        add     edi,edx\r
+        and     ebp,ecx\r
+        mov     edx,DWORD [32+esp]\r
+        add     edi,ebp\r
+        ; 40_59 56\r
+        mov     ebp,eax\r
+        xor     edx,DWORD [40+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [esp]\r
+        and     ebp,esi\r
+        xor     edx,DWORD [20+esp]\r
+        rol     edx,1\r
+        add     ebp,ecx\r
+        ror     esi,2\r
+        mov     ecx,edi\r
+        rol     ecx,5\r
+        mov     DWORD [32+esp],edx\r
+        lea     edx,[2400959708+ebp*1+edx]\r
+        mov     ebp,eax\r
+        add     edx,ecx\r
+        and     ebp,ebx\r
+        mov     ecx,DWORD [36+esp]\r
+        add     edx,ebp\r
+        ; 40_59 57\r
+        mov     ebp,esi\r
+        xor     ecx,DWORD [44+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [4+esp]\r
+        and     ebp,edi\r
+        xor     ecx,DWORD [24+esp]\r
+        rol     ecx,1\r
+        add     ebp,ebx\r
+        ror     edi,2\r
+        mov     ebx,edx\r
+        rol     ebx,5\r
+        mov     DWORD [36+esp],ecx\r
+        lea     ecx,[2400959708+ebp*1+ecx]\r
+        mov     ebp,esi\r
+        add     ecx,ebx\r
+        and     ebp,eax\r
+        mov     ebx,DWORD [40+esp]\r
+        add     ecx,ebp\r
+        ; 40_59 58\r
+        mov     ebp,edi\r
+        xor     ebx,DWORD [48+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [8+esp]\r
+        and     ebp,edx\r
+        xor     ebx,DWORD [28+esp]\r
+        rol     ebx,1\r
+        add     ebp,eax\r
+        ror     edx,2\r
+        mov     eax,ecx\r
+        rol     eax,5\r
+        mov     DWORD [40+esp],ebx\r
+        lea     ebx,[2400959708+ebp*1+ebx]\r
+        mov     ebp,edi\r
+        add     ebx,eax\r
+        and     ebp,esi\r
+        mov     eax,DWORD [44+esp]\r
+        add     ebx,ebp\r
+        ; 40_59 59\r
+        mov     ebp,edx\r
+        xor     eax,DWORD [52+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [12+esp]\r
+        and     ebp,ecx\r
+        xor     eax,DWORD [32+esp]\r
+        rol     eax,1\r
+        add     ebp,esi\r
+        ror     ecx,2\r
+        mov     esi,ebx\r
+        rol     esi,5\r
+        mov     DWORD [44+esp],eax\r
+        lea     eax,[2400959708+ebp*1+eax]\r
+        mov     ebp,edx\r
+        add     eax,esi\r
+        and     ebp,edi\r
+        mov     esi,DWORD [48+esp]\r
+        add     eax,ebp\r
+        ; 20_39 60\r
+        mov     ebp,ebx\r
+        xor     esi,DWORD [56+esp]\r
+        xor     ebp,ecx\r
+        xor     esi,DWORD [16+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [36+esp]\r
+        rol     esi,1\r
+        add     edi,ebp\r
+        ror     ebx,2\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        mov     DWORD [48+esp],esi\r
+        lea     esi,[3395469782+edi*1+esi]\r
+        mov     edi,DWORD [52+esp]\r
+        add     esi,ebp\r
+        ; 20_39 61\r
+        mov     ebp,eax\r
+        xor     edi,DWORD [60+esp]\r
+        xor     ebp,ebx\r
+        xor     edi,DWORD [20+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [40+esp]\r
+        rol     edi,1\r
+        add     edx,ebp\r
+        ror     eax,2\r
+        mov     ebp,esi\r
+        rol     ebp,5\r
+        mov     DWORD [52+esp],edi\r
+        lea     edi,[3395469782+edx*1+edi]\r
+        mov     edx,DWORD [56+esp]\r
+        add     edi,ebp\r
+        ; 20_39 62\r
+        mov     ebp,esi\r
+        xor     edx,DWORD [esp]\r
+        xor     ebp,eax\r
+        xor     edx,DWORD [24+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [44+esp]\r
+        rol     edx,1\r
+        add     ecx,ebp\r
+        ror     esi,2\r
+        mov     ebp,edi\r
+        rol     ebp,5\r
+        mov     DWORD [56+esp],edx\r
+        lea     edx,[3395469782+ecx*1+edx]\r
+        mov     ecx,DWORD [60+esp]\r
+        add     edx,ebp\r
+        ; 20_39 63\r
+        mov     ebp,edi\r
+        xor     ecx,DWORD [4+esp]\r
+        xor     ebp,esi\r
+        xor     ecx,DWORD [28+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [48+esp]\r
+        rol     ecx,1\r
+        add     ebx,ebp\r
+        ror     edi,2\r
+        mov     ebp,edx\r
+        rol     ebp,5\r
+        mov     DWORD [60+esp],ecx\r
+        lea     ecx,[3395469782+ebx*1+ecx]\r
+        mov     ebx,DWORD [esp]\r
+        add     ecx,ebp\r
+        ; 20_39 64\r
+        mov     ebp,edx\r
+        xor     ebx,DWORD [8+esp]\r
+        xor     ebp,edi\r
+        xor     ebx,DWORD [32+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [52+esp]\r
+        rol     ebx,1\r
+        add     eax,ebp\r
+        ror     edx,2\r
+        mov     ebp,ecx\r
+        rol     ebp,5\r
+        mov     DWORD [esp],ebx\r
+        lea     ebx,[3395469782+eax*1+ebx]\r
+        mov     eax,DWORD [4+esp]\r
+        add     ebx,ebp\r
+        ; 20_39 65\r
+        mov     ebp,ecx\r
+        xor     eax,DWORD [12+esp]\r
+        xor     ebp,edx\r
+        xor     eax,DWORD [36+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [56+esp]\r
+        rol     eax,1\r
+        add     esi,ebp\r
+        ror     ecx,2\r
+        mov     ebp,ebx\r
+        rol     ebp,5\r
+        mov     DWORD [4+esp],eax\r
+        lea     eax,[3395469782+esi*1+eax]\r
+        mov     esi,DWORD [8+esp]\r
+        add     eax,ebp\r
+        ; 20_39 66\r
+        mov     ebp,ebx\r
+        xor     esi,DWORD [16+esp]\r
+        xor     ebp,ecx\r
+        xor     esi,DWORD [40+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [60+esp]\r
+        rol     esi,1\r
+        add     edi,ebp\r
+        ror     ebx,2\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        mov     DWORD [8+esp],esi\r
+        lea     esi,[3395469782+edi*1+esi]\r
+        mov     edi,DWORD [12+esp]\r
+        add     esi,ebp\r
+        ; 20_39 67\r
+        mov     ebp,eax\r
+        xor     edi,DWORD [20+esp]\r
+        xor     ebp,ebx\r
+        xor     edi,DWORD [44+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [esp]\r
+        rol     edi,1\r
+        add     edx,ebp\r
+        ror     eax,2\r
+        mov     ebp,esi\r
+        rol     ebp,5\r
+        mov     DWORD [12+esp],edi\r
+        lea     edi,[3395469782+edx*1+edi]\r
+        mov     edx,DWORD [16+esp]\r
+        add     edi,ebp\r
+        ; 20_39 68\r
+        mov     ebp,esi\r
+        xor     edx,DWORD [24+esp]\r
+        xor     ebp,eax\r
+        xor     edx,DWORD [48+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [4+esp]\r
+        rol     edx,1\r
+        add     ecx,ebp\r
+        ror     esi,2\r
+        mov     ebp,edi\r
+        rol     ebp,5\r
+        mov     DWORD [16+esp],edx\r
+        lea     edx,[3395469782+ecx*1+edx]\r
+        mov     ecx,DWORD [20+esp]\r
+        add     edx,ebp\r
+        ; 20_39 69\r
+        mov     ebp,edi\r
+        xor     ecx,DWORD [28+esp]\r
+        xor     ebp,esi\r
+        xor     ecx,DWORD [52+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [8+esp]\r
+        rol     ecx,1\r
+        add     ebx,ebp\r
+        ror     edi,2\r
+        mov     ebp,edx\r
+        rol     ebp,5\r
+        mov     DWORD [20+esp],ecx\r
+        lea     ecx,[3395469782+ebx*1+ecx]\r
+        mov     ebx,DWORD [24+esp]\r
+        add     ecx,ebp\r
+        ; 20_39 70\r
+        mov     ebp,edx\r
+        xor     ebx,DWORD [32+esp]\r
+        xor     ebp,edi\r
+        xor     ebx,DWORD [56+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [12+esp]\r
+        rol     ebx,1\r
+        add     eax,ebp\r
+        ror     edx,2\r
+        mov     ebp,ecx\r
+        rol     ebp,5\r
+        mov     DWORD [24+esp],ebx\r
+        lea     ebx,[3395469782+eax*1+ebx]\r
+        mov     eax,DWORD [28+esp]\r
+        add     ebx,ebp\r
+        ; 20_39 71\r
+        mov     ebp,ecx\r
+        xor     eax,DWORD [36+esp]\r
+        xor     ebp,edx\r
+        xor     eax,DWORD [60+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [16+esp]\r
+        rol     eax,1\r
+        add     esi,ebp\r
+        ror     ecx,2\r
+        mov     ebp,ebx\r
+        rol     ebp,5\r
+        mov     DWORD [28+esp],eax\r
+        lea     eax,[3395469782+esi*1+eax]\r
+        mov     esi,DWORD [32+esp]\r
+        add     eax,ebp\r
+        ; 20_39 72\r
+        mov     ebp,ebx\r
+        xor     esi,DWORD [40+esp]\r
+        xor     ebp,ecx\r
+        xor     esi,DWORD [esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [20+esp]\r
+        rol     esi,1\r
+        add     edi,ebp\r
+        ror     ebx,2\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        mov     DWORD [32+esp],esi\r
+        lea     esi,[3395469782+edi*1+esi]\r
+        mov     edi,DWORD [36+esp]\r
+        add     esi,ebp\r
+        ; 20_39 73\r
+        mov     ebp,eax\r
+        xor     edi,DWORD [44+esp]\r
+        xor     ebp,ebx\r
+        xor     edi,DWORD [4+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [24+esp]\r
+        rol     edi,1\r
+        add     edx,ebp\r
+        ror     eax,2\r
+        mov     ebp,esi\r
+        rol     ebp,5\r
+        mov     DWORD [36+esp],edi\r
+        lea     edi,[3395469782+edx*1+edi]\r
+        mov     edx,DWORD [40+esp]\r
+        add     edi,ebp\r
+        ; 20_39 74\r
+        mov     ebp,esi\r
+        xor     edx,DWORD [48+esp]\r
+        xor     ebp,eax\r
+        xor     edx,DWORD [8+esp]\r
+        xor     ebp,ebx\r
+        xor     edx,DWORD [28+esp]\r
+        rol     edx,1\r
+        add     ecx,ebp\r
+        ror     esi,2\r
+        mov     ebp,edi\r
+        rol     ebp,5\r
+        mov     DWORD [40+esp],edx\r
+        lea     edx,[3395469782+ecx*1+edx]\r
+        mov     ecx,DWORD [44+esp]\r
+        add     edx,ebp\r
+        ; 20_39 75\r
+        mov     ebp,edi\r
+        xor     ecx,DWORD [52+esp]\r
+        xor     ebp,esi\r
+        xor     ecx,DWORD [12+esp]\r
+        xor     ebp,eax\r
+        xor     ecx,DWORD [32+esp]\r
+        rol     ecx,1\r
+        add     ebx,ebp\r
+        ror     edi,2\r
+        mov     ebp,edx\r
+        rol     ebp,5\r
+        mov     DWORD [44+esp],ecx\r
+        lea     ecx,[3395469782+ebx*1+ecx]\r
+        mov     ebx,DWORD [48+esp]\r
+        add     ecx,ebp\r
+        ; 20_39 76\r
+        mov     ebp,edx\r
+        xor     ebx,DWORD [56+esp]\r
+        xor     ebp,edi\r
+        xor     ebx,DWORD [16+esp]\r
+        xor     ebp,esi\r
+        xor     ebx,DWORD [36+esp]\r
+        rol     ebx,1\r
+        add     eax,ebp\r
+        ror     edx,2\r
+        mov     ebp,ecx\r
+        rol     ebp,5\r
+        mov     DWORD [48+esp],ebx\r
+        lea     ebx,[3395469782+eax*1+ebx]\r
+        mov     eax,DWORD [52+esp]\r
+        add     ebx,ebp\r
+        ; 20_39 77\r
+        mov     ebp,ecx\r
+        xor     eax,DWORD [60+esp]\r
+        xor     ebp,edx\r
+        xor     eax,DWORD [20+esp]\r
+        xor     ebp,edi\r
+        xor     eax,DWORD [40+esp]\r
+        rol     eax,1\r
+        add     esi,ebp\r
+        ror     ecx,2\r
+        mov     ebp,ebx\r
+        rol     ebp,5\r
+        lea     eax,[3395469782+esi*1+eax]\r
+        mov     esi,DWORD [56+esp]\r
+        add     eax,ebp\r
+        ; 20_39 78\r
+        mov     ebp,ebx\r
+        xor     esi,DWORD [esp]\r
+        xor     ebp,ecx\r
+        xor     esi,DWORD [24+esp]\r
+        xor     ebp,edx\r
+        xor     esi,DWORD [44+esp]\r
+        rol     esi,1\r
+        add     edi,ebp\r
+        ror     ebx,2\r
+        mov     ebp,eax\r
+        rol     ebp,5\r
+        lea     esi,[3395469782+edi*1+esi]\r
+        mov     edi,DWORD [60+esp]\r
+        add     esi,ebp\r
+        ; 20_39 79\r
+        mov     ebp,eax\r
+        xor     edi,DWORD [4+esp]\r
+        xor     ebp,ebx\r
+        xor     edi,DWORD [28+esp]\r
+        xor     ebp,ecx\r
+        xor     edi,DWORD [48+esp]\r
+        rol     edi,1\r
+        add     edx,ebp\r
+        ror     eax,2\r
+        mov     ebp,esi\r
+        rol     ebp,5\r
+        lea     edi,[3395469782+edx*1+edi]\r
+        add     edi,ebp\r
+        mov     ebp,DWORD [96+esp]\r
+        mov     edx,DWORD [100+esp]\r
+        add     edi,DWORD [ebp]\r
+        add     esi,DWORD [4+ebp]\r
+        add     eax,DWORD [8+ebp]\r
+        add     ebx,DWORD [12+ebp]\r
+        add     ecx,DWORD [16+ebp]\r
+        mov     DWORD [ebp],edi\r
+        add     edx,64\r
+        mov     DWORD [4+ebp],esi\r
+        cmp     edx,DWORD [104+esp]\r
+        mov     DWORD [8+ebp],eax\r
+        mov     edi,ecx\r
+        mov     DWORD [12+ebp],ebx\r
+        mov     esi,edx\r
+        mov     DWORD [16+ebp],ecx\r
+        jb      NEAR L$000loop\r
+        add     esp,76\r
+        pop     edi\r
+        pop     esi\r
+        pop     ebx\r
+        pop     ebp\r
+        ret\r
+db      83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115\r
+db      102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82\r
+db      89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112\r
+db      114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0\r