Remove Win32 assembler files. They are always rebuilt (with some
authorBodo Möller <bodo@openssl.org>
Mon, 13 Mar 2000 08:04:20 +0000 (08:04 +0000)
committerBodo Möller <bodo@openssl.org>
Mon, 13 Mar 2000 08:04:20 +0000 (08:04 +0000)
choice of parameters) when they are needed.

12 files changed:
crypto/bf/asm/b-win32.asm [deleted file]
crypto/bn/asm/bn-win32.asm [deleted file]
crypto/bn/asm/x86w16.asm [deleted file]
crypto/bn/asm/x86w32.asm [deleted file]
crypto/cast/asm/c-win32.asm [deleted file]
crypto/des/asm/d-win32.asm [deleted file]
crypto/des/asm/y-win32.asm [deleted file]
crypto/md5/asm/m5-win32.asm [deleted file]
crypto/rc4/asm/r4-win32.asm [deleted file]
crypto/rc5/asm/r5-win32.asm [deleted file]
crypto/ripemd/asm/rm-win32.asm [deleted file]
crypto/sha/asm/s1-win32.asm [deleted file]

diff --git a/crypto/bf/asm/b-win32.asm b/crypto/bf/asm/b-win32.asm
deleted file mode 100644 (file)
index 138c99d..0000000
+++ /dev/null
@@ -1,906 +0,0 @@
-       ; Don't even think of reading this code
-       ; It was automatically generated by bf-586.pl
-       ; Which is a perl program used to generate the x86 assember for
-       ; any of elf, a.out, BSDI,Win32, or Solaris
-       ; eric <eay@cryptsoft.com>
-       ; 
-       TITLE   bf-586.asm
-        .486
-.model FLAT
-_TEXT  SEGMENT
-PUBLIC _BF_encrypt
-
-_BF_encrypt PROC NEAR
-       ; 
-       push    ebp
-       push    ebx
-       mov     ebx,            DWORD PTR 12[esp]
-       mov     ebp,            DWORD PTR 16[esp]
-       push    esi
-       push    edi
-       ; Load the 2 words
-       mov     edi,            DWORD PTR [ebx]
-       mov     esi,            DWORD PTR 4[ebx]
-       xor     eax,            eax
-       mov     ebx,            DWORD PTR [ebp]
-       xor     ecx,            ecx
-       xor     edi,            ebx
-       ; 
-       ; Round 0
-       mov     edx,            DWORD PTR 4[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 1
-       mov     edx,            DWORD PTR 8[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 2
-       mov     edx,            DWORD PTR 12[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 3
-       mov     edx,            DWORD PTR 16[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 4
-       mov     edx,            DWORD PTR 20[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 5
-       mov     edx,            DWORD PTR 24[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 6
-       mov     edx,            DWORD PTR 28[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 7
-       mov     edx,            DWORD PTR 32[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 8
-       mov     edx,            DWORD PTR 36[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 9
-       mov     edx,            DWORD PTR 40[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 10
-       mov     edx,            DWORD PTR 44[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 11
-       mov     edx,            DWORD PTR 48[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 12
-       mov     edx,            DWORD PTR 52[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 13
-       mov     edx,            DWORD PTR 56[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 14
-       mov     edx,            DWORD PTR 60[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 15
-       mov     edx,            DWORD PTR 64[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       ; Load parameter 0 (16) enc=1
-       mov     eax,            DWORD PTR 20[esp]
-       xor     edi,            ebx
-       mov     edx,            DWORD PTR 68[ebp]
-       xor     esi,            edx
-       mov     DWORD PTR 4[eax],edi
-       mov     DWORD PTR [eax],esi
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_BF_encrypt ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _BF_decrypt
-
-_BF_decrypt PROC NEAR
-       ; 
-       push    ebp
-       push    ebx
-       mov     ebx,            DWORD PTR 12[esp]
-       mov     ebp,            DWORD PTR 16[esp]
-       push    esi
-       push    edi
-       ; Load the 2 words
-       mov     edi,            DWORD PTR [ebx]
-       mov     esi,            DWORD PTR 4[ebx]
-       xor     eax,            eax
-       mov     ebx,            DWORD PTR 68[ebp]
-       xor     ecx,            ecx
-       xor     edi,            ebx
-       ; 
-       ; Round 16
-       mov     edx,            DWORD PTR 64[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 15
-       mov     edx,            DWORD PTR 60[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 14
-       mov     edx,            DWORD PTR 56[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 13
-       mov     edx,            DWORD PTR 52[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 12
-       mov     edx,            DWORD PTR 48[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 11
-       mov     edx,            DWORD PTR 44[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 10
-       mov     edx,            DWORD PTR 40[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 9
-       mov     edx,            DWORD PTR 36[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 8
-       mov     edx,            DWORD PTR 32[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 7
-       mov     edx,            DWORD PTR 28[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 6
-       mov     edx,            DWORD PTR 24[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 5
-       mov     edx,            DWORD PTR 20[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 4
-       mov     edx,            DWORD PTR 16[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 3
-       mov     edx,            DWORD PTR 12[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     edi,            ebx
-       ; 
-       ; Round 2
-       mov     edx,            DWORD PTR 8[ebp]
-       mov     ebx,            edi
-       xor     esi,            edx
-       shr     ebx,            16
-       mov     edx,            edi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       xor     eax,            eax
-       xor     esi,            ebx
-       ; 
-       ; Round 1
-       mov     edx,            DWORD PTR 4[ebp]
-       mov     ebx,            esi
-       xor     edi,            edx
-       shr     ebx,            16
-       mov     edx,            esi
-       mov     al,             bh
-       and     ebx,            255
-       mov     cl,             dh
-       and     edx,            255
-       mov     eax,            DWORD PTR 72[eax*4+ebp]
-       mov     ebx,            DWORD PTR 1096[ebx*4+ebp]
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 2120[ecx*4+ebp]
-       xor     ebx,            eax
-       mov     edx,            DWORD PTR 3144[edx*4+ebp]
-       add     ebx,            edx
-       ; Load parameter 0 (1) enc=0
-       mov     eax,            DWORD PTR 20[esp]
-       xor     edi,            ebx
-       mov     edx,            DWORD PTR [ebp]
-       xor     esi,            edx
-       mov     DWORD PTR 4[eax],edi
-       mov     DWORD PTR [eax],esi
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_BF_decrypt ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _BF_cbc_encrypt
-
-_BF_cbc_encrypt PROC NEAR
-       ; 
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       mov     ebp,            DWORD PTR 28[esp]
-       ; getting iv ptr from parameter 4
-       mov     ebx,            DWORD PTR 36[esp]
-       mov     esi,            DWORD PTR [ebx]
-       mov     edi,            DWORD PTR 4[ebx]
-       push    edi
-       push    esi
-       push    edi
-       push    esi
-       mov     ebx,            esp
-       mov     esi,            DWORD PTR 36[esp]
-       mov     edi,            DWORD PTR 40[esp]
-       ; getting encrypt flag from parameter 5
-       mov     ecx,            DWORD PTR 56[esp]
-       ; get and push parameter 3
-       mov     eax,            DWORD PTR 48[esp]
-       push    eax
-       push    ebx
-       cmp     ecx,            0
-       jz      $L000decrypt
-       and     ebp,            4294967288
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       jz      $L001encrypt_finish
-L002encrypt_loop:
-       mov     ecx,            DWORD PTR [esi]
-       mov     edx,            DWORD PTR 4[esi]
-       xor     eax,            ecx
-       xor     ebx,            edx
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _BF_encrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR [edi],eax
-       mov     DWORD PTR 4[edi],ebx
-       add     esi,            8
-       add     edi,            8
-       sub     ebp,            8
-       jnz     L002encrypt_loop
-$L001encrypt_finish:
-       mov     ebp,            DWORD PTR 52[esp]
-       and     ebp,            7
-       jz      $L003finish
-       xor     ecx,            ecx
-       xor     edx,            edx
-       mov     ebp,            DWORD PTR $L004cbc_enc_jmp_table[ebp*4]
-       jmp      ebp
-L005ej7:
-       mov     dh,             BYTE PTR 6[esi]
-       shl     edx,            8
-L006ej6:
-       mov     dh,             BYTE PTR 5[esi]
-L007ej5:
-       mov     dl,             BYTE PTR 4[esi]
-L008ej4:
-       mov     ecx,            DWORD PTR [esi]
-       jmp     $L009ejend
-L010ej3:
-       mov     ch,             BYTE PTR 2[esi]
-       shl     ecx,            8
-L011ej2:
-       mov     ch,             BYTE PTR 1[esi]
-L012ej1:
-       mov     cl,             BYTE PTR [esi]
-$L009ejend:
-       xor     eax,            ecx
-       xor     ebx,            edx
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _BF_encrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR [edi],eax
-       mov     DWORD PTR 4[edi],ebx
-       jmp     $L003finish
-$L000decrypt:
-       and     ebp,            4294967288
-       mov     eax,            DWORD PTR 16[esp]
-       mov     ebx,            DWORD PTR 20[esp]
-       jz      $L013decrypt_finish
-L014decrypt_loop:
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _BF_decrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     ecx,            DWORD PTR 16[esp]
-       mov     edx,            DWORD PTR 20[esp]
-       xor     ecx,            eax
-       xor     edx,            ebx
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-       mov     DWORD PTR [edi],ecx
-       mov     DWORD PTR 4[edi],edx
-       mov     DWORD PTR 16[esp],eax
-       mov     DWORD PTR 20[esp],ebx
-       add     esi,            8
-       add     edi,            8
-       sub     ebp,            8
-       jnz     L014decrypt_loop
-$L013decrypt_finish:
-       mov     ebp,            DWORD PTR 52[esp]
-       and     ebp,            7
-       jz      $L003finish
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _BF_decrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     ecx,            DWORD PTR 16[esp]
-       mov     edx,            DWORD PTR 20[esp]
-       xor     ecx,            eax
-       xor     edx,            ebx
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-L015dj7:
-       ror     edx,            16
-       mov     BYTE PTR 6[edi],dl
-       shr     edx,            16
-L016dj6:
-       mov     BYTE PTR 5[edi],dh
-L017dj5:
-       mov     BYTE PTR 4[edi],dl
-L018dj4:
-       mov     DWORD PTR [edi],ecx
-       jmp     $L019djend
-L020dj3:
-       ror     ecx,            16
-       mov     BYTE PTR 2[edi],cl
-       shl     ecx,            16
-L021dj2:
-       mov     BYTE PTR 1[esi],ch
-L022dj1:
-       mov     BYTE PTR [esi], cl
-$L019djend:
-       jmp     $L003finish
-$L003finish:
-       mov     ecx,            DWORD PTR 60[esp]
-       add     esp,            24
-       mov     DWORD PTR [ecx],eax
-       mov     DWORD PTR 4[ecx],ebx
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-$L004cbc_enc_jmp_table:
-       DD      0
-       DD      L012ej1
-       DD      L011ej2
-       DD      L010ej3
-       DD      L008ej4
-       DD      L007ej5
-       DD      L006ej6
-       DD      L005ej7
-L023cbc_dec_jmp_table:
-       DD      0
-       DD      L022dj1
-       DD      L021dj2
-       DD      L020dj3
-       DD      L018dj4
-       DD      L017dj5
-       DD      L016dj6
-       DD      L015dj7
-_BF_cbc_encrypt ENDP
-_TEXT  ENDS
-END
diff --git a/crypto/bn/asm/bn-win32.asm b/crypto/bn/asm/bn-win32.asm
deleted file mode 100644 (file)
index 871bd88..0000000
+++ /dev/null
@@ -1,2122 +0,0 @@
-       ; Don't even think of reading this code
-       ; It was automatically generated by bn-586.pl
-       ; Which is a perl program used to generate the x86 assember for
-       ; any of elf, a.out, BSDI,Win32, or Solaris
-       ; eric <eay@cryptsoft.com>
-       ; 
-       TITLE   bn-586.asm
-        .386
-.model FLAT
-_TEXT  SEGMENT
-PUBLIC _bn_mul_add_words
-
-_bn_mul_add_words PROC NEAR
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       ; 
-       xor     esi,            esi
-       mov     edi,            DWORD PTR 20[esp]
-       mov     ecx,            DWORD PTR 28[esp]
-       mov     ebx,            DWORD PTR 24[esp]
-       and     ecx,            4294967288
-       mov     ebp,            DWORD PTR 32[esp]
-       push    ecx
-       jz      $L000maw_finish
-L001maw_loop:
-       mov     DWORD PTR [esp],ecx
-       ; Round 0
-       mov     eax,            DWORD PTR [ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR [edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR [edi],eax
-       mov     esi,            edx
-       ; Round 4
-       mov     eax,            DWORD PTR 4[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 4[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 4[edi],eax
-       mov     esi,            edx
-       ; Round 8
-       mov     eax,            DWORD PTR 8[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 8[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 8[edi],eax
-       mov     esi,            edx
-       ; Round 12
-       mov     eax,            DWORD PTR 12[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 12[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 12[edi],eax
-       mov     esi,            edx
-       ; Round 16
-       mov     eax,            DWORD PTR 16[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 16[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 16[edi],eax
-       mov     esi,            edx
-       ; Round 20
-       mov     eax,            DWORD PTR 20[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 20[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 20[edi],eax
-       mov     esi,            edx
-       ; Round 24
-       mov     eax,            DWORD PTR 24[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 24[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 24[edi],eax
-       mov     esi,            edx
-       ; Round 28
-       mov     eax,            DWORD PTR 28[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 28[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 28[edi],eax
-       mov     esi,            edx
-       ; 
-       mov     ecx,            DWORD PTR [esp]
-       add     ebx,            32
-       add     edi,            32
-       sub     ecx,            8
-       jnz     L001maw_loop
-$L000maw_finish:
-       mov     ecx,            DWORD PTR 32[esp]
-       and     ecx,            7
-       jnz     $L002maw_finish2
-       jmp     $L003maw_end
-$L002maw_finish2:
-       ; Tail Round 0
-       mov     eax,            DWORD PTR [ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR [edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       dec     ecx
-       mov     DWORD PTR [edi],eax
-       mov     esi,            edx
-       jz      $L003maw_end
-       ; Tail Round 1
-       mov     eax,            DWORD PTR 4[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 4[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       dec     ecx
-       mov     DWORD PTR 4[edi],eax
-       mov     esi,            edx
-       jz      $L003maw_end
-       ; Tail Round 2
-       mov     eax,            DWORD PTR 8[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 8[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       dec     ecx
-       mov     DWORD PTR 8[edi],eax
-       mov     esi,            edx
-       jz      $L003maw_end
-       ; Tail Round 3
-       mov     eax,            DWORD PTR 12[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 12[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       dec     ecx
-       mov     DWORD PTR 12[edi],eax
-       mov     esi,            edx
-       jz      $L003maw_end
-       ; Tail Round 4
-       mov     eax,            DWORD PTR 16[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 16[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       dec     ecx
-       mov     DWORD PTR 16[edi],eax
-       mov     esi,            edx
-       jz      $L003maw_end
-       ; Tail Round 5
-       mov     eax,            DWORD PTR 20[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 20[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       dec     ecx
-       mov     DWORD PTR 20[edi],eax
-       mov     esi,            edx
-       jz      $L003maw_end
-       ; Tail Round 6
-       mov     eax,            DWORD PTR 24[ebx]
-       mul     ebp
-       add     eax,            esi
-       mov     esi,            DWORD PTR 24[edi]
-       adc     edx,            0
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 24[edi],eax
-       mov     esi,            edx
-$L003maw_end:
-       mov     eax,            esi
-       pop     ecx
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_bn_mul_add_words ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_mul_words
-
-_bn_mul_words PROC NEAR
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       ; 
-       xor     esi,            esi
-       mov     edi,            DWORD PTR 20[esp]
-       mov     ebx,            DWORD PTR 24[esp]
-       mov     ebp,            DWORD PTR 28[esp]
-       mov     ecx,            DWORD PTR 32[esp]
-       and     ebp,            4294967288
-       jz      $L004mw_finish
-L005mw_loop:
-       ; Round 0
-       mov     eax,            DWORD PTR [ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR [edi],eax
-       mov     esi,            edx
-       ; Round 4
-       mov     eax,            DWORD PTR 4[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 4[edi],eax
-       mov     esi,            edx
-       ; Round 8
-       mov     eax,            DWORD PTR 8[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 8[edi],eax
-       mov     esi,            edx
-       ; Round 12
-       mov     eax,            DWORD PTR 12[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 12[edi],eax
-       mov     esi,            edx
-       ; Round 16
-       mov     eax,            DWORD PTR 16[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 16[edi],eax
-       mov     esi,            edx
-       ; Round 20
-       mov     eax,            DWORD PTR 20[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 20[edi],eax
-       mov     esi,            edx
-       ; Round 24
-       mov     eax,            DWORD PTR 24[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 24[edi],eax
-       mov     esi,            edx
-       ; Round 28
-       mov     eax,            DWORD PTR 28[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 28[edi],eax
-       mov     esi,            edx
-       ; 
-       add     ebx,            32
-       add     edi,            32
-       sub     ebp,            8
-       jz      $L004mw_finish
-       jmp     L005mw_loop
-$L004mw_finish:
-       mov     ebp,            DWORD PTR 28[esp]
-       and     ebp,            7
-       jnz     $L006mw_finish2
-       jmp     $L007mw_end
-$L006mw_finish2:
-       ; Tail Round 0
-       mov     eax,            DWORD PTR [ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR [edi],eax
-       mov     esi,            edx
-       dec     ebp
-       jz      $L007mw_end
-       ; Tail Round 1
-       mov     eax,            DWORD PTR 4[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 4[edi],eax
-       mov     esi,            edx
-       dec     ebp
-       jz      $L007mw_end
-       ; Tail Round 2
-       mov     eax,            DWORD PTR 8[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 8[edi],eax
-       mov     esi,            edx
-       dec     ebp
-       jz      $L007mw_end
-       ; Tail Round 3
-       mov     eax,            DWORD PTR 12[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 12[edi],eax
-       mov     esi,            edx
-       dec     ebp
-       jz      $L007mw_end
-       ; Tail Round 4
-       mov     eax,            DWORD PTR 16[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 16[edi],eax
-       mov     esi,            edx
-       dec     ebp
-       jz      $L007mw_end
-       ; Tail Round 5
-       mov     eax,            DWORD PTR 20[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 20[edi],eax
-       mov     esi,            edx
-       dec     ebp
-       jz      $L007mw_end
-       ; Tail Round 6
-       mov     eax,            DWORD PTR 24[ebx]
-       mul     ecx
-       add     eax,            esi
-       adc     edx,            0
-       mov     DWORD PTR 24[edi],eax
-       mov     esi,            edx
-$L007mw_end:
-       mov     eax,            esi
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_bn_mul_words ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_sqr_words
-
-_bn_sqr_words PROC NEAR
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       ; 
-       mov     esi,            DWORD PTR 20[esp]
-       mov     edi,            DWORD PTR 24[esp]
-       mov     ebx,            DWORD PTR 28[esp]
-       and     ebx,            4294967288
-       jz      $L008sw_finish
-L009sw_loop:
-       ; Round 0
-       mov     eax,            DWORD PTR [edi]
-       mul     eax
-       mov     DWORD PTR [esi],eax
-       mov     DWORD PTR 4[esi],edx
-       ; Round 4
-       mov     eax,            DWORD PTR 4[edi]
-       mul     eax
-       mov     DWORD PTR 8[esi],eax
-       mov     DWORD PTR 12[esi],edx
-       ; Round 8
-       mov     eax,            DWORD PTR 8[edi]
-       mul     eax
-       mov     DWORD PTR 16[esi],eax
-       mov     DWORD PTR 20[esi],edx
-       ; Round 12
-       mov     eax,            DWORD PTR 12[edi]
-       mul     eax
-       mov     DWORD PTR 24[esi],eax
-       mov     DWORD PTR 28[esi],edx
-       ; Round 16
-       mov     eax,            DWORD PTR 16[edi]
-       mul     eax
-       mov     DWORD PTR 32[esi],eax
-       mov     DWORD PTR 36[esi],edx
-       ; Round 20
-       mov     eax,            DWORD PTR 20[edi]
-       mul     eax
-       mov     DWORD PTR 40[esi],eax
-       mov     DWORD PTR 44[esi],edx
-       ; Round 24
-       mov     eax,            DWORD PTR 24[edi]
-       mul     eax
-       mov     DWORD PTR 48[esi],eax
-       mov     DWORD PTR 52[esi],edx
-       ; Round 28
-       mov     eax,            DWORD PTR 28[edi]
-       mul     eax
-       mov     DWORD PTR 56[esi],eax
-       mov     DWORD PTR 60[esi],edx
-       ; 
-       add     edi,            32
-       add     esi,            64
-       sub     ebx,            8
-       jnz     L009sw_loop
-$L008sw_finish:
-       mov     ebx,            DWORD PTR 28[esp]
-       and     ebx,            7
-       jz      $L010sw_end
-       ; Tail Round 0
-       mov     eax,            DWORD PTR [edi]
-       mul     eax
-       mov     DWORD PTR [esi],eax
-       dec     ebx
-       mov     DWORD PTR 4[esi],edx
-       jz      $L010sw_end
-       ; Tail Round 1
-       mov     eax,            DWORD PTR 4[edi]
-       mul     eax
-       mov     DWORD PTR 8[esi],eax
-       dec     ebx
-       mov     DWORD PTR 12[esi],edx
-       jz      $L010sw_end
-       ; Tail Round 2
-       mov     eax,            DWORD PTR 8[edi]
-       mul     eax
-       mov     DWORD PTR 16[esi],eax
-       dec     ebx
-       mov     DWORD PTR 20[esi],edx
-       jz      $L010sw_end
-       ; Tail Round 3
-       mov     eax,            DWORD PTR 12[edi]
-       mul     eax
-       mov     DWORD PTR 24[esi],eax
-       dec     ebx
-       mov     DWORD PTR 28[esi],edx
-       jz      $L010sw_end
-       ; Tail Round 4
-       mov     eax,            DWORD PTR 16[edi]
-       mul     eax
-       mov     DWORD PTR 32[esi],eax
-       dec     ebx
-       mov     DWORD PTR 36[esi],edx
-       jz      $L010sw_end
-       ; Tail Round 5
-       mov     eax,            DWORD PTR 20[edi]
-       mul     eax
-       mov     DWORD PTR 40[esi],eax
-       dec     ebx
-       mov     DWORD PTR 44[esi],edx
-       jz      $L010sw_end
-       ; Tail Round 6
-       mov     eax,            DWORD PTR 24[edi]
-       mul     eax
-       mov     DWORD PTR 48[esi],eax
-       mov     DWORD PTR 52[esi],edx
-$L010sw_end:
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_bn_sqr_words ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_div_words
-
-_bn_div_words PROC NEAR
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       mov     edx,            DWORD PTR 20[esp]
-       mov     eax,            DWORD PTR 24[esp]
-       mov     ebx,            DWORD PTR 28[esp]
-       div     ebx
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_bn_div_words ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_add_words
-
-_bn_add_words PROC NEAR
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       ; 
-       mov     ebx,            DWORD PTR 20[esp]
-       mov     esi,            DWORD PTR 24[esp]
-       mov     edi,            DWORD PTR 28[esp]
-       mov     ebp,            DWORD PTR 32[esp]
-       xor     eax,            eax
-       and     ebp,            4294967288
-       jz      $L011aw_finish
-L012aw_loop:
-       ; Round 0
-       mov     ecx,            DWORD PTR [esi]
-       mov     edx,            DWORD PTR [edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR [ebx],ecx
-       ; Round 1
-       mov     ecx,            DWORD PTR 4[esi]
-       mov     edx,            DWORD PTR 4[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 4[ebx],ecx
-       ; Round 2
-       mov     ecx,            DWORD PTR 8[esi]
-       mov     edx,            DWORD PTR 8[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 8[ebx],ecx
-       ; Round 3
-       mov     ecx,            DWORD PTR 12[esi]
-       mov     edx,            DWORD PTR 12[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 12[ebx],ecx
-       ; Round 4
-       mov     ecx,            DWORD PTR 16[esi]
-       mov     edx,            DWORD PTR 16[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 16[ebx],ecx
-       ; Round 5
-       mov     ecx,            DWORD PTR 20[esi]
-       mov     edx,            DWORD PTR 20[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 20[ebx],ecx
-       ; Round 6
-       mov     ecx,            DWORD PTR 24[esi]
-       mov     edx,            DWORD PTR 24[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 24[ebx],ecx
-       ; Round 7
-       mov     ecx,            DWORD PTR 28[esi]
-       mov     edx,            DWORD PTR 28[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 28[ebx],ecx
-       ; 
-       add     esi,            32
-       add     edi,            32
-       add     ebx,            32
-       sub     ebp,            8
-       jnz     L012aw_loop
-$L011aw_finish:
-       mov     ebp,            DWORD PTR 32[esp]
-       and     ebp,            7
-       jz      $L013aw_end
-       ; Tail Round 0
-       mov     ecx,            DWORD PTR [esi]
-       mov     edx,            DWORD PTR [edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR [ebx],ecx
-       jz      $L013aw_end
-       ; Tail Round 1
-       mov     ecx,            DWORD PTR 4[esi]
-       mov     edx,            DWORD PTR 4[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 4[ebx],ecx
-       jz      $L013aw_end
-       ; Tail Round 2
-       mov     ecx,            DWORD PTR 8[esi]
-       mov     edx,            DWORD PTR 8[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 8[ebx],ecx
-       jz      $L013aw_end
-       ; Tail Round 3
-       mov     ecx,            DWORD PTR 12[esi]
-       mov     edx,            DWORD PTR 12[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 12[ebx],ecx
-       jz      $L013aw_end
-       ; Tail Round 4
-       mov     ecx,            DWORD PTR 16[esi]
-       mov     edx,            DWORD PTR 16[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 16[ebx],ecx
-       jz      $L013aw_end
-       ; Tail Round 5
-       mov     ecx,            DWORD PTR 20[esi]
-       mov     edx,            DWORD PTR 20[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 20[ebx],ecx
-       jz      $L013aw_end
-       ; Tail Round 6
-       mov     ecx,            DWORD PTR 24[esi]
-       mov     edx,            DWORD PTR 24[edi]
-       add     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       add     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 24[ebx],ecx
-$L013aw_end:
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_bn_add_words ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_sub_words
-
-_bn_sub_words PROC NEAR
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       ; 
-       mov     ebx,            DWORD PTR 20[esp]
-       mov     esi,            DWORD PTR 24[esp]
-       mov     edi,            DWORD PTR 28[esp]
-       mov     ebp,            DWORD PTR 32[esp]
-       xor     eax,            eax
-       and     ebp,            4294967288
-       jz      $L014aw_finish
-L015aw_loop:
-       ; Round 0
-       mov     ecx,            DWORD PTR [esi]
-       mov     edx,            DWORD PTR [edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR [ebx],ecx
-       ; Round 1
-       mov     ecx,            DWORD PTR 4[esi]
-       mov     edx,            DWORD PTR 4[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 4[ebx],ecx
-       ; Round 2
-       mov     ecx,            DWORD PTR 8[esi]
-       mov     edx,            DWORD PTR 8[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 8[ebx],ecx
-       ; Round 3
-       mov     ecx,            DWORD PTR 12[esi]
-       mov     edx,            DWORD PTR 12[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 12[ebx],ecx
-       ; Round 4
-       mov     ecx,            DWORD PTR 16[esi]
-       mov     edx,            DWORD PTR 16[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 16[ebx],ecx
-       ; Round 5
-       mov     ecx,            DWORD PTR 20[esi]
-       mov     edx,            DWORD PTR 20[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 20[ebx],ecx
-       ; Round 6
-       mov     ecx,            DWORD PTR 24[esi]
-       mov     edx,            DWORD PTR 24[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 24[ebx],ecx
-       ; Round 7
-       mov     ecx,            DWORD PTR 28[esi]
-       mov     edx,            DWORD PTR 28[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 28[ebx],ecx
-       ; 
-       add     esi,            32
-       add     edi,            32
-       add     ebx,            32
-       sub     ebp,            8
-       jnz     L015aw_loop
-$L014aw_finish:
-       mov     ebp,            DWORD PTR 32[esp]
-       and     ebp,            7
-       jz      $L016aw_end
-       ; Tail Round 0
-       mov     ecx,            DWORD PTR [esi]
-       mov     edx,            DWORD PTR [edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR [ebx],ecx
-       jz      $L016aw_end
-       ; Tail Round 1
-       mov     ecx,            DWORD PTR 4[esi]
-       mov     edx,            DWORD PTR 4[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 4[ebx],ecx
-       jz      $L016aw_end
-       ; Tail Round 2
-       mov     ecx,            DWORD PTR 8[esi]
-       mov     edx,            DWORD PTR 8[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 8[ebx],ecx
-       jz      $L016aw_end
-       ; Tail Round 3
-       mov     ecx,            DWORD PTR 12[esi]
-       mov     edx,            DWORD PTR 12[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 12[ebx],ecx
-       jz      $L016aw_end
-       ; Tail Round 4
-       mov     ecx,            DWORD PTR 16[esi]
-       mov     edx,            DWORD PTR 16[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 16[ebx],ecx
-       jz      $L016aw_end
-       ; Tail Round 5
-       mov     ecx,            DWORD PTR 20[esi]
-       mov     edx,            DWORD PTR 20[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       dec     ebp
-       mov     DWORD PTR 20[ebx],ecx
-       jz      $L016aw_end
-       ; Tail Round 6
-       mov     ecx,            DWORD PTR 24[esi]
-       mov     edx,            DWORD PTR 24[edi]
-       sub     ecx,            eax
-       mov     eax,            0
-       adc     eax,            eax
-       sub     ecx,            edx
-       adc     eax,            0
-       mov     DWORD PTR 24[ebx],ecx
-$L016aw_end:
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_bn_sub_words ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_mul_comba8
-
-_bn_mul_comba8 PROC NEAR
-       push    esi
-       mov     esi,            DWORD PTR 12[esp]
-       push    edi
-       mov     edi,            DWORD PTR 20[esp]
-       push    ebp
-       push    ebx
-       xor     ebx,            ebx
-       mov     eax,            DWORD PTR [esi]
-       xor     ecx,            ecx
-       mov     edx,            DWORD PTR [edi]
-       ; ################## Calculate word 0
-       xor     ebp,            ebp
-       ; mul a[0]*b[0]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ebp,            0
-       mov     DWORD PTR [eax],ebx
-       mov     eax,            DWORD PTR 4[esi]
-       ; saved r[0]
-       ; ################## Calculate word 1
-       xor     ebx,            ebx
-       ; mul a[1]*b[0]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebx,            0
-       ; mul a[0]*b[1]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ebx,            0
-       mov     DWORD PTR 4[eax],ecx
-       mov     eax,            DWORD PTR 8[esi]
-       ; saved r[1]
-       ; ################## Calculate word 2
-       xor     ecx,            ecx
-       ; mul a[2]*b[0]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ecx,            0
-       ; mul a[1]*b[1]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ecx,            0
-       ; mul a[0]*b[2]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ecx,            0
-       mov     DWORD PTR 8[eax],ebp
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[2]
-       ; ################## Calculate word 3
-       xor     ebp,            ebp
-       ; mul a[3]*b[0]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebp,            0
-       ; mul a[2]*b[1]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ebp,            0
-       ; mul a[1]*b[2]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebp,            0
-       ; mul a[0]*b[3]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ebp,            0
-       mov     DWORD PTR 12[eax],ebx
-       mov     eax,            DWORD PTR 16[esi]
-       ; saved r[3]
-       ; ################## Calculate word 4
-       xor     ebx,            ebx
-       ; mul a[4]*b[0]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebx,            0
-       ; mul a[3]*b[1]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ebx,            0
-       ; mul a[2]*b[2]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebx,            0
-       ; mul a[1]*b[3]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ebx,            0
-       ; mul a[0]*b[4]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ebx,            0
-       mov     DWORD PTR 16[eax],ecx
-       mov     eax,            DWORD PTR 20[esi]
-       ; saved r[4]
-       ; ################## Calculate word 5
-       xor     ecx,            ecx
-       ; mul a[5]*b[0]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ecx,            0
-       ; mul a[4]*b[1]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ecx,            0
-       ; mul a[3]*b[2]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ecx,            0
-       ; mul a[2]*b[3]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ecx,            0
-       ; mul a[1]*b[4]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ecx,            0
-       ; mul a[0]*b[5]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ecx,            0
-       mov     DWORD PTR 20[eax],ebp
-       mov     eax,            DWORD PTR 24[esi]
-       ; saved r[5]
-       ; ################## Calculate word 6
-       xor     ebp,            ebp
-       ; mul a[6]*b[0]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebp,            0
-       ; mul a[5]*b[1]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ebp,            0
-       ; mul a[4]*b[2]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebp,            0
-       ; mul a[3]*b[3]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ebp,            0
-       ; mul a[2]*b[4]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ebp,            0
-       ; mul a[1]*b[5]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ebp,            0
-       ; mul a[0]*b[6]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ebp,            0
-       mov     DWORD PTR 24[eax],ebx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[6]
-       ; ################## Calculate word 7
-       xor     ebx,            ebx
-       ; mul a[7]*b[0]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebx,            0
-       ; mul a[6]*b[1]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ebx,            0
-       ; mul a[5]*b[2]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebx,            0
-       ; mul a[4]*b[3]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ebx,            0
-       ; mul a[3]*b[4]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ebx,            0
-       ; mul a[2]*b[5]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ebx,            0
-       ; mul a[1]*b[6]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ebx,            0
-       ; mul a[0]*b[7]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebx,            0
-       mov     DWORD PTR 28[eax],ecx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[7]
-       ; ################## Calculate word 8
-       xor     ecx,            ecx
-       ; mul a[7]*b[1]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ecx,            0
-       ; mul a[6]*b[2]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ecx,            0
-       ; mul a[5]*b[3]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ecx,            0
-       ; mul a[4]*b[4]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ecx,            0
-       ; mul a[3]*b[5]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ecx,            0
-       ; mul a[2]*b[6]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ecx,            0
-       ; mul a[1]*b[7]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ecx,            0
-       mov     DWORD PTR 32[eax],ebp
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[8]
-       ; ################## Calculate word 9
-       xor     ebp,            ebp
-       ; mul a[7]*b[2]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebp,            0
-       ; mul a[6]*b[3]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ebp,            0
-       ; mul a[5]*b[4]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ebp,            0
-       ; mul a[4]*b[5]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ebp,            0
-       ; mul a[3]*b[6]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ebp,            0
-       ; mul a[2]*b[7]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebp,            0
-       mov     DWORD PTR 36[eax],ebx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[9]
-       ; ################## Calculate word 10
-       xor     ebx,            ebx
-       ; mul a[7]*b[3]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ebx,            0
-       ; mul a[6]*b[4]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ebx,            0
-       ; mul a[5]*b[5]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ebx,            0
-       ; mul a[4]*b[6]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ebx,            0
-       ; mul a[3]*b[7]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 16[edi]
-       adc     ebx,            0
-       mov     DWORD PTR 40[eax],ecx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[10]
-       ; ################## Calculate word 11
-       xor     ecx,            ecx
-       ; mul a[7]*b[4]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ecx,            0
-       ; mul a[6]*b[5]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ecx,            0
-       ; mul a[5]*b[6]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ecx,            0
-       ; mul a[4]*b[7]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 20[edi]
-       adc     ecx,            0
-       mov     DWORD PTR 44[eax],ebp
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[11]
-       ; ################## Calculate word 12
-       xor     ebp,            ebp
-       ; mul a[7]*b[5]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ebp,            0
-       ; mul a[6]*b[6]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ebp,            0
-       ; mul a[5]*b[7]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 24[edi]
-       adc     ebp,            0
-       mov     DWORD PTR 48[eax],ebx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[12]
-       ; ################## Calculate word 13
-       xor     ebx,            ebx
-       ; mul a[7]*b[6]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ebx,            0
-       ; mul a[6]*b[7]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 28[edi]
-       adc     ebx,            0
-       mov     DWORD PTR 52[eax],ecx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[13]
-       ; ################## Calculate word 14
-       xor     ecx,            ecx
-       ; mul a[7]*b[7]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebx,            edx
-       adc     ecx,            0
-       mov     DWORD PTR 56[eax],ebp
-       ; saved r[14]
-       ; save r[15]
-       mov     DWORD PTR 60[eax],ebx
-       pop     ebx
-       pop     ebp
-       pop     edi
-       pop     esi
-       ret
-_bn_mul_comba8 ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_mul_comba4
-
-_bn_mul_comba4 PROC NEAR
-       push    esi
-       mov     esi,            DWORD PTR 12[esp]
-       push    edi
-       mov     edi,            DWORD PTR 20[esp]
-       push    ebp
-       push    ebx
-       xor     ebx,            ebx
-       mov     eax,            DWORD PTR [esi]
-       xor     ecx,            ecx
-       mov     edx,            DWORD PTR [edi]
-       ; ################## Calculate word 0
-       xor     ebp,            ebp
-       ; mul a[0]*b[0]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ebp,            0
-       mov     DWORD PTR [eax],ebx
-       mov     eax,            DWORD PTR 4[esi]
-       ; saved r[0]
-       ; ################## Calculate word 1
-       xor     ebx,            ebx
-       ; mul a[1]*b[0]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebx,            0
-       ; mul a[0]*b[1]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ebx,            0
-       mov     DWORD PTR 4[eax],ecx
-       mov     eax,            DWORD PTR 8[esi]
-       ; saved r[1]
-       ; ################## Calculate word 2
-       xor     ecx,            ecx
-       ; mul a[2]*b[0]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ecx,            0
-       ; mul a[1]*b[1]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ecx,            0
-       ; mul a[0]*b[2]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR [edi]
-       adc     ecx,            0
-       mov     DWORD PTR 8[eax],ebp
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[2]
-       ; ################## Calculate word 3
-       xor     ebp,            ebp
-       ; mul a[3]*b[0]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebp,            0
-       ; mul a[2]*b[1]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ebp,            0
-       ; mul a[1]*b[2]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR [esi]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebp,            0
-       ; mul a[0]*b[3]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 4[edi]
-       adc     ebp,            0
-       mov     DWORD PTR 12[eax],ebx
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[3]
-       ; ################## Calculate word 4
-       xor     ebx,            ebx
-       ; mul a[3]*b[1]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ebx,            0
-       ; mul a[2]*b[2]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ebx,            0
-       ; mul a[1]*b[3]
-       mul     edx
-       add     ecx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 8[edi]
-       adc     ebx,            0
-       mov     DWORD PTR 16[eax],ecx
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[4]
-       ; ################## Calculate word 5
-       xor     ecx,            ecx
-       ; mul a[3]*b[2]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ecx,            0
-       ; mul a[2]*b[3]
-       mul     edx
-       add     ebp,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 12[edi]
-       adc     ecx,            0
-       mov     DWORD PTR 20[eax],ebp
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[5]
-       ; ################## Calculate word 6
-       xor     ebp,            ebp
-       ; mul a[3]*b[3]
-       mul     edx
-       add     ebx,            eax
-       mov     eax,            DWORD PTR 20[esp]
-       adc     ecx,            edx
-       adc     ebp,            0
-       mov     DWORD PTR 24[eax],ebx
-       ; saved r[6]
-       ; save r[7]
-       mov     DWORD PTR 28[eax],ecx
-       pop     ebx
-       pop     ebp
-       pop     edi
-       pop     esi
-       ret
-_bn_mul_comba4 ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_sqr_comba8
-
-_bn_sqr_comba8 PROC NEAR
-       push    esi
-       push    edi
-       push    ebp
-       push    ebx
-       mov     edi,            DWORD PTR 20[esp]
-       mov     esi,            DWORD PTR 24[esp]
-       xor     ebx,            ebx
-       xor     ecx,            ecx
-       mov     eax,            DWORD PTR [esi]
-       ; ############### Calculate word 0
-       xor     ebp,            ebp
-       ; sqr a[0]*a[0]
-       mul     eax
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR [esi]
-       adc     ebp,            0
-       mov     DWORD PTR [edi],ebx
-       mov     eax,            DWORD PTR 4[esi]
-       ; saved r[0]
-       ; ############### Calculate word 1
-       xor     ebx,            ebx
-       ; sqr a[1]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebx,            0
-       mov     DWORD PTR 4[edi],ecx
-       mov     edx,            DWORD PTR [esi]
-       ; saved r[1]
-       ; ############### Calculate word 2
-       xor     ecx,            ecx
-       ; sqr a[2]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ecx,            0
-       ; sqr a[1]*a[1]
-       mul     eax
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR [esi]
-       adc     ecx,            0
-       mov     DWORD PTR 8[edi],ebp
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[2]
-       ; ############### Calculate word 3
-       xor     ebp,            ebp
-       ; sqr a[3]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebp,            0
-       mov     edx,            DWORD PTR 4[esi]
-       ; sqr a[2]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebp,            0
-       mov     DWORD PTR 12[edi],ebx
-       mov     edx,            DWORD PTR [esi]
-       ; saved r[3]
-       ; ############### Calculate word 4
-       xor     ebx,            ebx
-       ; sqr a[4]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebx,            0
-       mov     edx,            DWORD PTR 4[esi]
-       ; sqr a[3]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebx,            0
-       ; sqr a[2]*a[2]
-       mul     eax
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR [esi]
-       adc     ebx,            0
-       mov     DWORD PTR 16[edi],ecx
-       mov     eax,            DWORD PTR 20[esi]
-       ; saved r[4]
-       ; ############### Calculate word 5
-       xor     ecx,            ecx
-       ; sqr a[5]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ecx,            0
-       mov     edx,            DWORD PTR 4[esi]
-       ; sqr a[4]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ecx,            0
-       mov     edx,            DWORD PTR 8[esi]
-       ; sqr a[3]*a[2]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ecx,            0
-       mov     DWORD PTR 20[edi],ebp
-       mov     edx,            DWORD PTR [esi]
-       ; saved r[5]
-       ; ############### Calculate word 6
-       xor     ebp,            ebp
-       ; sqr a[6]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebp,            0
-       mov     edx,            DWORD PTR 4[esi]
-       ; sqr a[5]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebp,            0
-       mov     edx,            DWORD PTR 8[esi]
-       ; sqr a[4]*a[2]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebp,            0
-       ; sqr a[3]*a[3]
-       mul     eax
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR [esi]
-       adc     ebp,            0
-       mov     DWORD PTR 24[edi],ebx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[6]
-       ; ############### Calculate word 7
-       xor     ebx,            ebx
-       ; sqr a[7]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebx,            0
-       mov     edx,            DWORD PTR 4[esi]
-       ; sqr a[6]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebx,            0
-       mov     edx,            DWORD PTR 8[esi]
-       ; sqr a[5]*a[2]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ebx,            0
-       mov     edx,            DWORD PTR 12[esi]
-       ; sqr a[4]*a[3]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 28[esi]
-       adc     ebx,            0
-       mov     DWORD PTR 28[edi],ecx
-       mov     edx,            DWORD PTR 4[esi]
-       ; saved r[7]
-       ; ############### Calculate word 8
-       xor     ecx,            ecx
-       ; sqr a[7]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ecx,            0
-       mov     edx,            DWORD PTR 8[esi]
-       ; sqr a[6]*a[2]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ecx,            0
-       mov     edx,            DWORD PTR 12[esi]
-       ; sqr a[5]*a[3]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 16[esi]
-       adc     ecx,            0
-       ; sqr a[4]*a[4]
-       mul     eax
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR 8[esi]
-       adc     ecx,            0
-       mov     DWORD PTR 32[edi],ebp
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[8]
-       ; ############### Calculate word 9
-       xor     ebp,            ebp
-       ; sqr a[7]*a[2]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebp,            0
-       mov     edx,            DWORD PTR 12[esi]
-       ; sqr a[6]*a[3]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebp,            0
-       mov     edx,            DWORD PTR 16[esi]
-       ; sqr a[5]*a[4]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 28[esi]
-       adc     ebp,            0
-       mov     DWORD PTR 36[edi],ebx
-       mov     edx,            DWORD PTR 12[esi]
-       ; saved r[9]
-       ; ############### Calculate word 10
-       xor     ebx,            ebx
-       ; sqr a[7]*a[3]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebx,            0
-       mov     edx,            DWORD PTR 16[esi]
-       ; sqr a[6]*a[4]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 20[esi]
-       adc     ebx,            0
-       ; sqr a[5]*a[5]
-       mul     eax
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 16[esi]
-       adc     ebx,            0
-       mov     DWORD PTR 40[edi],ecx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[10]
-       ; ############### Calculate word 11
-       xor     ecx,            ecx
-       ; sqr a[7]*a[4]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ecx,            0
-       mov     edx,            DWORD PTR 20[esi]
-       ; sqr a[6]*a[5]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 28[esi]
-       adc     ecx,            0
-       mov     DWORD PTR 44[edi],ebp
-       mov     edx,            DWORD PTR 20[esi]
-       ; saved r[11]
-       ; ############### Calculate word 12
-       xor     ebp,            ebp
-       ; sqr a[7]*a[5]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 24[esi]
-       adc     ebp,            0
-       ; sqr a[6]*a[6]
-       mul     eax
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR 24[esi]
-       adc     ebp,            0
-       mov     DWORD PTR 48[edi],ebx
-       mov     eax,            DWORD PTR 28[esi]
-       ; saved r[12]
-       ; ############### Calculate word 13
-       xor     ebx,            ebx
-       ; sqr a[7]*a[6]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 28[esi]
-       adc     ebx,            0
-       mov     DWORD PTR 52[edi],ecx
-       ; saved r[13]
-       ; ############### Calculate word 14
-       xor     ecx,            ecx
-       ; sqr a[7]*a[7]
-       mul     eax
-       add     ebp,            eax
-       adc     ebx,            edx
-       adc     ecx,            0
-       mov     DWORD PTR 56[edi],ebp
-       ; saved r[14]
-       mov     DWORD PTR 60[edi],ebx
-       pop     ebx
-       pop     ebp
-       pop     edi
-       pop     esi
-       ret
-_bn_sqr_comba8 ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _bn_sqr_comba4
-
-_bn_sqr_comba4 PROC NEAR
-       push    esi
-       push    edi
-       push    ebp
-       push    ebx
-       mov     edi,            DWORD PTR 20[esp]
-       mov     esi,            DWORD PTR 24[esp]
-       xor     ebx,            ebx
-       xor     ecx,            ecx
-       mov     eax,            DWORD PTR [esi]
-       ; ############### Calculate word 0
-       xor     ebp,            ebp
-       ; sqr a[0]*a[0]
-       mul     eax
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     edx,            DWORD PTR [esi]
-       adc     ebp,            0
-       mov     DWORD PTR [edi],ebx
-       mov     eax,            DWORD PTR 4[esi]
-       ; saved r[0]
-       ; ############### Calculate word 1
-       xor     ebx,            ebx
-       ; sqr a[1]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebx,            0
-       mov     DWORD PTR 4[edi],ecx
-       mov     edx,            DWORD PTR [esi]
-       ; saved r[1]
-       ; ############### Calculate word 2
-       xor     ecx,            ecx
-       ; sqr a[2]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 4[esi]
-       adc     ecx,            0
-       ; sqr a[1]*a[1]
-       mul     eax
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     edx,            DWORD PTR [esi]
-       adc     ecx,            0
-       mov     DWORD PTR 8[edi],ebp
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[2]
-       ; ############### Calculate word 3
-       xor     ebp,            ebp
-       ; sqr a[3]*a[0]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebp,            0
-       mov     edx,            DWORD PTR 4[esi]
-       ; sqr a[2]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebp,            0
-       add     ebx,            eax
-       adc     ecx,            edx
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ebp,            0
-       mov     DWORD PTR 12[edi],ebx
-       mov     edx,            DWORD PTR 4[esi]
-       ; saved r[3]
-       ; ############### Calculate word 4
-       xor     ebx,            ebx
-       ; sqr a[3]*a[1]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ebx,            0
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     eax,            DWORD PTR 8[esi]
-       adc     ebx,            0
-       ; sqr a[2]*a[2]
-       mul     eax
-       add     ecx,            eax
-       adc     ebp,            edx
-       mov     edx,            DWORD PTR 8[esi]
-       adc     ebx,            0
-       mov     DWORD PTR 16[edi],ecx
-       mov     eax,            DWORD PTR 12[esi]
-       ; saved r[4]
-       ; ############### Calculate word 5
-       xor     ecx,            ecx
-       ; sqr a[3]*a[2]
-       mul     edx
-       add     eax,            eax
-       adc     edx,            edx
-       adc     ecx,            0
-       add     ebp,            eax
-       adc     ebx,            edx
-       mov     eax,            DWORD PTR 12[esi]
-       adc     ecx,            0
-       mov     DWORD PTR 20[edi],ebp
-       ; saved r[5]
-       ; ############### Calculate word 6
-       xor     ebp,            ebp
-       ; sqr a[3]*a[3]
-       mul     eax
-       add     ebx,            eax
-       adc     ecx,            edx
-       adc     ebp,            0
-       mov     DWORD PTR 24[edi],ebx
-       ; saved r[6]
-       mov     DWORD PTR 28[edi],ecx
-       pop     ebx
-       pop     ebp
-       pop     edi
-       pop     esi
-       ret
-_bn_sqr_comba4 ENDP
-_TEXT  ENDS
-END
diff --git a/crypto/bn/asm/x86w16.asm b/crypto/bn/asm/x86w16.asm
deleted file mode 100644 (file)
index 80a9ed6..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-;      Static Name Aliases
-;
-       TITLE   bn_mulw.c
-       .8087
-F_TEXT SEGMENT  WORD PUBLIC 'CODE'
-F_TEXT ENDS
-_DATA  SEGMENT  WORD PUBLIC 'DATA'
-_DATA  ENDS
-_CONST SEGMENT  WORD PUBLIC 'CONST'
-_CONST ENDS
-_BSS   SEGMENT  WORD PUBLIC 'BSS'
-_BSS   ENDS
-DGROUP GROUP   _CONST, _BSS, _DATA
-       ASSUME DS: DGROUP, SS: DGROUP
-F_TEXT      SEGMENT
-       ASSUME  CS: F_TEXT
-       PUBLIC  _bn_mul_add_words
-_bn_mul_add_words      PROC FAR
-; Line 58
-       push    bp
-       push    bx
-       push    si
-       push    di
-       push    ds
-       push    es
-       mov     bp,sp
-;      w = 26
-;      num = 24
-;      ap = 20
-;      rp = 16
-       xor     si,si                   ;c=0;
-       mov     di,WORD PTR [bp+16]     ; load r
-       mov     ds,WORD PTR [bp+18]     ; load r
-       mov     bx,WORD PTR [bp+20]     ; load a
-       mov     es,WORD PTR [bp+22]     ; load a
-       mov     cx,WORD PTR [bp+26]     ; load w
-       mov     bp,WORD PTR [bp+24]     ; load num
-
-       shr     bp,1    ; div count by 4 and do groups of 4
-       shr     bp,1
-       je      $L555
-
-$L546:
-       mov     ax,cx
-       mul     WORD PTR es:[bx]        ; w* *a
-       add     ax,WORD PTR ds:[di]     ; + *r
-       adc     dx,0
-       adc     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di],ax
-       mov     si,dx
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+2]      ; w* *a
-       add     ax,WORD PTR ds:[di+2]   ; + *r
-       adc     dx,0
-       adc     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+2],ax
-       mov     si,dx
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+4]      ; w* *a
-       add     ax,WORD PTR ds:[di+4]   ; + *r
-       adc     dx,0
-       adc     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+4],ax
-       mov     si,dx
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+6]      ; w* *a
-       add     ax,WORD PTR ds:[di+6]   ; + *r
-       adc     dx,0
-       adc     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+6],ax
-       mov     si,dx
-       ;
-       add     bx,8
-       add     di,8
-       ;
-       dec     bp
-       je      $L555
-       jmp     $L546
-;
-;
-$L555:
-       mov     bp,sp
-       mov     bp,WORD PTR [bp+24]     ; load num
-       and     bp,3
-       dec     bp
-       js      $L547
-
-       mov     ax,cx
-       mul     WORD PTR es:[bx]        ; w* *a
-       add     ax,WORD PTR ds:[di]     ; + *r
-       adc     dx,0
-       adc     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di],ax
-       mov     si,dx
-       dec     bp
-       js      $L547                   ; Note that we are now testing for -1
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+2]      ; w* *a
-       add     ax,WORD PTR ds:[di+2]   ; + *r
-       adc     dx,0
-       adc     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+2],ax
-       mov     si,dx
-       dec     bp
-       js      $L547
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+4]      ; w* *a
-       add     ax,WORD PTR ds:[di+4]   ; + *r
-       adc     dx,0
-       adc     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+4],ax
-       mov     si,dx
-$L547:
-       mov     ax,si
-       pop     es
-       pop     ds
-       pop     di
-       pop     si
-       pop     bx
-       pop     bp
-       ret     
-       nop     
-
-_bn_mul_add_words      ENDP
-       PUBLIC  _bn_mul_words
-_bn_mul_words  PROC FAR
-; Line 76
-       push    bp
-       push    bx
-       push    si
-       push    di
-       push    ds
-       push    es
-       xor     si,si
-       mov     bp,sp
-       mov     di,WORD PTR [bp+16]     ; r
-       mov     ds,WORD PTR [bp+18]
-       mov     bx,WORD PTR [bp+20]     ; a
-       mov     es,WORD PTR [bp+22]
-       mov     cx,WORD PTR [bp+26]     ; w
-       mov     bp,WORD PTR [bp+24]     ; num 
-$FC743:
-       mov     ax,cx
-       mul     WORD PTR es:[bx]
-       add     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di],ax
-       mov     si,dx
-       dec     bp
-       je      $L764
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+2]
-       add     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+2],ax
-       mov     si,dx
-       dec     bp
-       je      $L764
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+4]
-       add     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+4],ax
-       mov     si,dx
-       dec     bp
-       je      $L764
-       ;
-       mov     ax,cx
-       mul     WORD PTR es:[bx+6]
-       add     ax,si
-       adc     dx,0
-       mov     WORD PTR ds:[di+6],ax
-       mov     si,dx
-       dec     bp
-       je      $L764
-       ;
-       add     bx,8
-       add     di,8
-       jmp     $FC743
-       nop
-$L764:
-       mov     ax,si
-       pop     es
-       pop     ds
-       pop     di
-       pop     si
-       pop     bx
-       pop     bp
-       ret     
-       nop     
-_bn_mul_words  ENDP
-       PUBLIC  _bn_sqr_words
-_bn_sqr_words  PROC FAR
-; Line 92
-       push    bp
-       push    bx
-       push    si
-       push    di
-       push    ds
-       push    es
-       mov     bp,sp
-       mov     si,WORD PTR [bp+16]
-       mov     ds,WORD PTR [bp+18]
-       mov     di,WORD PTR [bp+20]
-       mov     es,WORD PTR [bp+22]
-       mov     bx,WORD PTR [bp+24]
-
-       mov     bp,bx   ; save a memory lookup later
-       shr     bx,1    ; div count by 4 and do groups of 4
-       shr     bx,1
-       je      $L666
-
-$L765:
-       mov     ax,WORD PTR es:[di]
-       mul     ax
-       mov     WORD PTR ds:[si],ax
-       mov     WORD PTR ds:[si+2],dx
-       ;
-       mov     ax,WORD PTR es:[di+2]
-       mul     ax
-       mov     WORD PTR ds:[si+4],ax
-       mov     WORD PTR ds:[si+6],dx
-       ;
-       mov     ax,WORD PTR es:[di+4]
-       mul     ax
-       mov     WORD PTR ds:[si+8],ax
-       mov     WORD PTR ds:[si+10],dx
-       ;
-       mov     ax,WORD PTR es:[di+6]
-       mul     ax
-       mov     WORD PTR ds:[si+12],ax
-       mov     WORD PTR ds:[si+14],dx
-       ;
-       add     di,8
-       add     si,16
-       dec     bx
-       je      $L666
-       jmp     $L765
-$L666:
-       and     bp,3
-       dec     bp      ; The copied value of bx (num)
-       js      $L645
-       ;
-       mov     ax,WORD PTR es:[di]
-       mul     ax
-       mov     WORD PTR ds:[si],ax
-       mov     WORD PTR ds:[si+2],dx
-       dec     bp
-       js      $L645
-       ;
-       mov     ax,WORD PTR es:[di+2]
-       mul     ax
-       mov     WORD PTR ds:[si+4],ax
-       mov     WORD PTR ds:[si+6],dx
-       dec     bp
-       js      $L645
-       ;
-       mov     ax,WORD PTR es:[di+4]
-       mul     ax
-       mov     WORD PTR ds:[si+8],ax
-       mov     WORD PTR ds:[si+10],dx
-$L645:
-       pop     es
-       pop     ds
-       pop     di
-       pop     si
-       pop     bx
-       pop     bp
-       ret     
-
-_bn_sqr_words  ENDP
-       PUBLIC  _bn_div64
-_bn_div64      PROC FAR
-       push    bp
-       mov     bp,sp
-       mov     dx, WORD PTR [bp+6]
-       mov     ax, WORD PTR [bp+8]
-       div     WORD PTR [bp+10]
-       pop     bp
-       ret     
-_bn_div64      ENDP
-F_TEXT ENDS
-END
diff --git a/crypto/bn/asm/x86w32.asm b/crypto/bn/asm/x86w32.asm
deleted file mode 100644 (file)
index 957d71e..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-;      Static Name Aliases
-;
-       TITLE   bn_mulw.c
-       .386
-F_TEXT SEGMENT  WORD USE16 PUBLIC 'CODE'
-F_TEXT ENDS
-_DATA  SEGMENT  WORD USE16 PUBLIC 'DATA'
-_DATA  ENDS
-_CONST SEGMENT  WORD USE16 PUBLIC 'CONST'
-_CONST ENDS
-_BSS   SEGMENT  WORD USE16 PUBLIC 'BSS'
-_BSS   ENDS
-DGROUP GROUP   _CONST, _BSS, _DATA
-       ASSUME DS: DGROUP, SS: DGROUP
-F_TEXT      SEGMENT
-       ASSUME  CS: F_TEXT
-       PUBLIC  _bn_mul_add_words
-_bn_mul_add_words      PROC FAR
-; Line 58
-       push    bp
-       push    bx
-       push    esi
-       push    di
-       push    ds
-       push    es
-       mov     bp,sp
-;      w = 28
-;      num = 26
-;      ap = 22
-;      rp = 18
-       xor     esi,esi                 ;c=0;
-       mov     di,WORD PTR [bp+18]     ; load r
-       mov     ds,WORD PTR [bp+20]     ; load r
-       mov     bx,WORD PTR [bp+22]     ; load a
-       mov     es,WORD PTR [bp+24]     ; load a
-       mov     ecx,DWORD PTR [bp+28]   ; load w
-       mov     bp,WORD PTR [bp+26]     ; load num
-       shr     bp,1    ; div count by 4 and do groups of 4
-       shr     bp,1
-       je      $L555
-
-$L546:
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx]       ; w* *a
-       add     eax,DWORD PTR ds:[di]   ; + *r
-       adc     edx,0
-       adc     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di],eax
-       mov     esi,edx
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+4]     ; w* *a
-       add     eax,DWORD PTR ds:[di+4] ; + *r
-       adc     edx,0
-       adc     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+4],eax
-       mov     esi,edx
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+8]     ; w* *a
-       add     eax,DWORD PTR ds:[di+8] ; + *r
-       adc     edx,0
-       adc     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+8],eax
-       mov     esi,edx
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+12]    ; w* *a
-       add     eax,DWORD PTR ds:[di+12]        ; + *r
-       adc     edx,0
-       adc     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+12],eax
-       mov     esi,edx
-       ;
-       add     bx,16
-       add     di,16
-       ;
-       dec     bp
-       je      $L555
-       jmp     $L546
-;
-;
-$L555:
-       mov     bp,sp
-       mov     bp,WORD PTR [bp+26]     ; load num
-       and     bp,3
-       dec     bp
-       js      $L547m
-
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx]       ; w* *a
-       add     eax,DWORD PTR ds:[di]   ; + *r
-       adc     edx,0
-       adc     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di],eax
-       mov     esi,edx
-       dec     bp
-       js      $L547m                  ; Note that we are now testing for -1
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+4]     ; w* *a
-       add     eax,DWORD PTR ds:[di+4] ; + *r
-       adc     edx,0
-       adc     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+4],eax
-       mov     esi,edx
-       dec     bp
-       js      $L547m
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+8]     ; w* *a
-       add     eax,DWORD PTR ds:[di+8] ; + *r
-       adc     edx,0
-       adc     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+8],eax
-       mov     esi,edx
-$L547m:
-       mov     eax,esi
-       mov     edx,esi
-       shr     edx,16
-       pop     es
-       pop     ds
-       pop     di
-       pop     esi
-       pop     bx
-       pop     bp
-       ret     
-       nop     
-_bn_mul_add_words      ENDP
-
-       PUBLIC  _bn_mul_words
-_bn_mul_words  PROC FAR
-; Line 76
-       push    bp
-       push    bx
-       push    esi
-       push    di
-       push    ds
-       push    es
-       xor     esi,esi
-       mov     bp,sp
-       mov     di,WORD PTR [bp+18]     ; r
-       mov     ds,WORD PTR [bp+20]
-       mov     bx,WORD PTR [bp+22]     ; a
-       mov     es,WORD PTR [bp+24]
-       mov     ecx,DWORD PTR [bp+28]   ; w
-       mov     bp,WORD PTR [bp+26]     ; num 
-
-$FC743:
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx]
-       add     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di],eax
-       mov     esi,edx
-       dec     bp
-       je      $L764
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+4]
-       add     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+4],eax
-       mov     esi,edx
-       dec     bp
-       je      $L764
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+8]
-       add     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+8],eax
-       mov     esi,edx
-       dec     bp
-       je      $L764
-       ;
-       mov     eax,ecx
-       mul     DWORD PTR es:[bx+12]
-       add     eax,esi
-       adc     edx,0
-       mov     DWORD PTR ds:[di+12],eax
-       mov     esi,edx
-       dec     bp
-       je      $L764
-       ;
-       add     bx,16
-       add     di,16
-       jmp     $FC743
-       nop
-$L764:
-       mov     eax,esi
-       mov     edx,esi
-       shr     edx,16
-       pop     es
-       pop     ds
-       pop     di
-       pop     esi
-       pop     bx
-       pop     bp
-       ret     
-       nop     
-_bn_mul_words  ENDP
-       PUBLIC  _bn_sqr_words
-_bn_sqr_words  PROC FAR
-; Line 92
-       push    bp
-       push    bx
-       push    si
-       push    di
-       push    ds
-       push    es
-       mov     bp,sp
-       mov     si,WORD PTR [bp+16]
-       mov     ds,WORD PTR [bp+18]
-       mov     di,WORD PTR [bp+20]
-       mov     es,WORD PTR [bp+22]
-       mov     bx,WORD PTR [bp+24]
-
-       mov     bp,bx   ; save a memory lookup later
-       shr     bx,1    ; div count by 4 and do groups of 4
-       shr     bx,1
-       je      $L666
-
-$L765:
-       mov     eax,DWORD PTR es:[di]
-       mul     eax
-       mov     DWORD PTR ds:[si],eax
-       mov     DWORD PTR ds:[si+4],edx
-       ;
-       mov     eax,DWORD PTR es:[di+4]
-       mul     eax
-       mov     DWORD PTR ds:[si+8],eax
-       mov     DWORD PTR ds:[si+12],edx
-       ;
-       mov     eax,DWORD PTR es:[di+8]
-       mul     eax
-       mov     DWORD PTR ds:[si+16],eax
-       mov     DWORD PTR ds:[si+20],edx
-       ;
-       mov     eax,DWORD PTR es:[di+12]
-       mul     eax
-       mov     DWORD PTR ds:[si+24],eax
-       mov     DWORD PTR ds:[si+28],edx
-       ;
-       add     di,16
-       add     si,32
-       dec     bx
-       je      $L666
-       jmp     $L765
-$L666:
-       and     bp,3
-       dec     bp      ; The copied value of bx (num)
-       js      $L645
-       ;
-       mov     eax,DWORD PTR es:[di]
-       mul     eax
-       mov     DWORD PTR ds:[si],eax
-       mov     DWORD PTR ds:[si+4],edx
-       dec     bp
-       js      $L645
-       ;
-       mov     eax,DWORD PTR es:[di+4]
-       mul     eax
-       mov     DWORD PTR ds:[si+8],eax
-       mov     DWORD PTR ds:[si+12],edx
-       dec     bp
-       js      $L645
-       ;
-       mov     eax,DWORD PTR es:[di+8]
-       mul     eax
-       mov     DWORD PTR ds:[si+16],eax
-       mov     DWORD PTR ds:[si+20],edx
-$L645:
-       pop     es
-       pop     ds
-       pop     di
-       pop     si
-       pop     bx
-       pop     bp
-       ret     
-_bn_sqr_words  ENDP
-
-       PUBLIC  _bn_div64
-_bn_div64      PROC FAR
-       push    bp
-       mov     bp,sp
-       mov     edx, DWORD PTR [bp+6]
-       mov     eax, DWORD PTR [bp+10]
-       div     DWORD PTR [bp+14]
-       mov     edx,eax
-       shr     edx,16
-       pop     bp
-       ret     
-_bn_div64      ENDP
-
-       PUBLIC  _bn_add_words
-_bn_add_words  PROC FAR
-; Line 58
-       push    bp
-       push    bx
-       push    esi
-       push    di
-       push    ds
-       push    es
-       mov     bp,sp
-;      w = 28
-;      num = 26
-;      ap = 22
-;      rp = 18
-       xor     esi,esi                 ;c=0;
-       mov     bx,WORD PTR [bp+18]     ; load low r
-       mov     si,WORD PTR [bp+22]     ; load a
-       mov     es,WORD PTR [bp+24]     ; load a
-       mov     di,WORD PTR [bp+26]     ; load b
-       mov     ds,WORD PTR [bp+28]     ; load b
-
-       mov     dx,WORD PTR [bp+30]     ; load num
-       xor     ecx,ecx
-       dec     dx
-       js      $L547a
-
-$L5477:
-       mov     eax,DWORD PTR es:[si]   ; *a
-       add     eax,ecx
-       mov     ecx,0
-       adc     ecx,0
-       add     si,4                    ; a++
-       add     eax,DWORD PTR ds:[di]   ; + *b
-       adc     ecx,0
-       mov     ds,WORD PTR [bp+20]
-       add     di,4
-       mov     DWORD PTR ds:[bx],eax
-       mov     ds,WORD PTR [bp+28]
-       add     bx,4
-       dec     dx
-       js      $L547a                  ; Note that we are now testing for -1
-       jmp     $L5477
-       ;
-$L547a:
-       mov     eax,ecx
-       mov     edx,ecx
-       shr     edx,16
-       pop     es
-       pop     ds
-       pop     di
-       pop     esi
-       pop     bx
-       pop     bp
-       ret     
-       nop     
-_bn_add_words  ENDP
-F_TEXT ENDS
-END
diff --git a/crypto/cast/asm/c-win32.asm b/crypto/cast/asm/c-win32.asm
deleted file mode 100644 (file)
index ba78a3c..0000000
+++ /dev/null
@@ -1,953 +0,0 @@
-       ; Don't even think of reading this code
-       ; It was automatically generated by cast-586.pl
-       ; Which is a perl program used to generate the x86 assember for
-       ; any of elf, a.out, BSDI,Win32, or Solaris
-       ; eric <eay@cryptsoft.com>
-       ; 
-       TITLE   cast-586.asm
-        .486
-.model FLAT
-_TEXT  SEGMENT
-PUBLIC _CAST_encrypt
-EXTERN _CAST_S_table0:DWORD
-EXTERN _CAST_S_table1:DWORD
-EXTERN _CAST_S_table2:DWORD
-EXTERN _CAST_S_table3:DWORD
-
-_CAST_encrypt PROC NEAR
-       ; 
-       push    ebp
-       push    ebx
-       mov     ebx,            DWORD PTR 12[esp]
-       mov     ebp,            DWORD PTR 16[esp]
-       push    esi
-       push    edi
-       ; Load the 2 words
-       mov     edi,            DWORD PTR [ebx]
-       mov     esi,            DWORD PTR 4[ebx]
-       ; Get short key flag
-       mov     eax,            DWORD PTR 128[ebp]
-       push    eax
-       xor     eax,            eax
-       ; round 0
-       mov     edx,            DWORD PTR [ebp]
-       mov     ecx,            DWORD PTR 4[ebp]
-       add     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     edi,            ecx
-       ; round 1
-       mov     edx,            DWORD PTR 8[ebp]
-       mov     ecx,            DWORD PTR 12[ebp]
-       xor     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     esi,            ecx
-       ; round 2
-       mov     edx,            DWORD PTR 16[ebp]
-       mov     ecx,            DWORD PTR 20[ebp]
-       sub     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     edi,            ecx
-       ; round 3
-       mov     edx,            DWORD PTR 24[ebp]
-       mov     ecx,            DWORD PTR 28[ebp]
-       add     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     esi,            ecx
-       ; round 4
-       mov     edx,            DWORD PTR 32[ebp]
-       mov     ecx,            DWORD PTR 36[ebp]
-       xor     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     edi,            ecx
-       ; round 5
-       mov     edx,            DWORD PTR 40[ebp]
-       mov     ecx,            DWORD PTR 44[ebp]
-       sub     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     esi,            ecx
-       ; round 6
-       mov     edx,            DWORD PTR 48[ebp]
-       mov     ecx,            DWORD PTR 52[ebp]
-       add     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     edi,            ecx
-       ; round 7
-       mov     edx,            DWORD PTR 56[ebp]
-       mov     ecx,            DWORD PTR 60[ebp]
-       xor     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     esi,            ecx
-       ; round 8
-       mov     edx,            DWORD PTR 64[ebp]
-       mov     ecx,            DWORD PTR 68[ebp]
-       sub     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     edi,            ecx
-       ; round 9
-       mov     edx,            DWORD PTR 72[ebp]
-       mov     ecx,            DWORD PTR 76[ebp]
-       add     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     esi,            ecx
-       ; round 10
-       mov     edx,            DWORD PTR 80[ebp]
-       mov     ecx,            DWORD PTR 84[ebp]
-       xor     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     edi,            ecx
-       ; round 11
-       mov     edx,            DWORD PTR 88[ebp]
-       mov     ecx,            DWORD PTR 92[ebp]
-       sub     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     esi,            ecx
-       ; test short key flag
-       pop     edx
-       or      edx,            edx
-       jnz     $L000cast_enc_done
-       ; round 12
-       mov     edx,            DWORD PTR 96[ebp]
-       mov     ecx,            DWORD PTR 100[ebp]
-       add     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     edi,            ecx
-       ; round 13
-       mov     edx,            DWORD PTR 104[ebp]
-       mov     ecx,            DWORD PTR 108[ebp]
-       xor     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     esi,            ecx
-       ; round 14
-       mov     edx,            DWORD PTR 112[ebp]
-       mov     ecx,            DWORD PTR 116[ebp]
-       sub     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     edi,            ecx
-       ; round 15
-       mov     edx,            DWORD PTR 120[ebp]
-       mov     ecx,            DWORD PTR 124[ebp]
-       add     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     esi,            ecx
-$L000cast_enc_done:
-       nop
-       mov     eax,            DWORD PTR 20[esp]
-       mov     DWORD PTR 4[eax],edi
-       mov     DWORD PTR [eax],esi
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_CAST_encrypt ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _CAST_decrypt
-EXTERN _CAST_S_table0:DWORD
-EXTERN _CAST_S_table1:DWORD
-EXTERN _CAST_S_table2:DWORD
-EXTERN _CAST_S_table3:DWORD
-
-_CAST_decrypt PROC NEAR
-       ; 
-       push    ebp
-       push    ebx
-       mov     ebx,            DWORD PTR 12[esp]
-       mov     ebp,            DWORD PTR 16[esp]
-       push    esi
-       push    edi
-       ; Load the 2 words
-       mov     edi,            DWORD PTR [ebx]
-       mov     esi,            DWORD PTR 4[ebx]
-       ; Get short key flag
-       mov     eax,            DWORD PTR 128[ebp]
-       or      eax,            eax
-       jnz     $L001cast_dec_skip
-       xor     eax,            eax
-       ; round 15
-       mov     edx,            DWORD PTR 120[ebp]
-       mov     ecx,            DWORD PTR 124[ebp]
-       add     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     edi,            ecx
-       ; round 14
-       mov     edx,            DWORD PTR 112[ebp]
-       mov     ecx,            DWORD PTR 116[ebp]
-       sub     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     esi,            ecx
-       ; round 13
-       mov     edx,            DWORD PTR 104[ebp]
-       mov     ecx,            DWORD PTR 108[ebp]
-       xor     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     edi,            ecx
-       ; round 12
-       mov     edx,            DWORD PTR 96[ebp]
-       mov     ecx,            DWORD PTR 100[ebp]
-       add     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     esi,            ecx
-$L001cast_dec_skip:
-       ; round 11
-       mov     edx,            DWORD PTR 88[ebp]
-       mov     ecx,            DWORD PTR 92[ebp]
-       sub     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     edi,            ecx
-       ; round 10
-       mov     edx,            DWORD PTR 80[ebp]
-       mov     ecx,            DWORD PTR 84[ebp]
-       xor     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     esi,            ecx
-       ; round 9
-       mov     edx,            DWORD PTR 72[ebp]
-       mov     ecx,            DWORD PTR 76[ebp]
-       add     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     edi,            ecx
-       ; round 8
-       mov     edx,            DWORD PTR 64[ebp]
-       mov     ecx,            DWORD PTR 68[ebp]
-       sub     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     esi,            ecx
-       ; round 7
-       mov     edx,            DWORD PTR 56[ebp]
-       mov     ecx,            DWORD PTR 60[ebp]
-       xor     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     edi,            ecx
-       ; round 6
-       mov     edx,            DWORD PTR 48[ebp]
-       mov     ecx,            DWORD PTR 52[ebp]
-       add     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     esi,            ecx
-       ; round 5
-       mov     edx,            DWORD PTR 40[ebp]
-       mov     ecx,            DWORD PTR 44[ebp]
-       sub     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     edi,            ecx
-       ; round 4
-       mov     edx,            DWORD PTR 32[ebp]
-       mov     ecx,            DWORD PTR 36[ebp]
-       xor     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     esi,            ecx
-       ; round 3
-       mov     edx,            DWORD PTR 24[ebp]
-       mov     ecx,            DWORD PTR 28[ebp]
-       add     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     edi,            ecx
-       ; round 2
-       mov     edx,            DWORD PTR 16[ebp]
-       mov     ecx,            DWORD PTR 20[ebp]
-       sub     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       sub     ecx,            ebx
-       xor     esi,            ecx
-       ; round 1
-       mov     edx,            DWORD PTR 8[ebp]
-       mov     ecx,            DWORD PTR 12[ebp]
-       xor     edx,            esi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       add     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       xor     ecx,            ebx
-       xor     edi,            ecx
-       ; round 0
-       mov     edx,            DWORD PTR [ebp]
-       mov     ecx,            DWORD PTR 4[ebp]
-       add     edx,            edi
-       rol     edx,            cl
-       mov     ebx,            edx
-       xor     ecx,            ecx
-       mov     cl,             dh
-       and     ebx,            255
-       shr     edx,            16
-       xor     eax,            eax
-       mov     al,             dh
-       and     edx,            255
-       mov     ecx,            DWORD PTR _CAST_S_table0[ecx*4]
-       mov     ebx,            DWORD PTR _CAST_S_table1[ebx*4]
-       xor     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table2[eax*4]
-       sub     ecx,            ebx
-       mov     ebx,            DWORD PTR _CAST_S_table3[edx*4]
-       add     ecx,            ebx
-       xor     esi,            ecx
-       nop
-       mov     eax,            DWORD PTR 20[esp]
-       mov     DWORD PTR 4[eax],edi
-       mov     DWORD PTR [eax],esi
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-_CAST_decrypt ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _CAST_cbc_encrypt
-
-_CAST_cbc_encrypt PROC NEAR
-       ; 
-       push    ebp
-       push    ebx
-       push    esi
-       push    edi
-       mov     ebp,            DWORD PTR 28[esp]
-       ; getting iv ptr from parameter 4
-       mov     ebx,            DWORD PTR 36[esp]
-       mov     esi,            DWORD PTR [ebx]
-       mov     edi,            DWORD PTR 4[ebx]
-       push    edi
-       push    esi
-       push    edi
-       push    esi
-       mov     ebx,            esp
-       mov     esi,            DWORD PTR 36[esp]
-       mov     edi,            DWORD PTR 40[esp]
-       ; getting encrypt flag from parameter 5
-       mov     ecx,            DWORD PTR 56[esp]
-       ; get and push parameter 3
-       mov     eax,            DWORD PTR 48[esp]
-       push    eax
-       push    ebx
-       cmp     ecx,            0
-       jz      $L002decrypt
-       and     ebp,            4294967288
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       jz      $L003encrypt_finish
-L004encrypt_loop:
-       mov     ecx,            DWORD PTR [esi]
-       mov     edx,            DWORD PTR 4[esi]
-       xor     eax,            ecx
-       xor     ebx,            edx
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _CAST_encrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR [edi],eax
-       mov     DWORD PTR 4[edi],ebx
-       add     esi,            8
-       add     edi,            8
-       sub     ebp,            8
-       jnz     L004encrypt_loop
-$L003encrypt_finish:
-       mov     ebp,            DWORD PTR 52[esp]
-       and     ebp,            7
-       jz      $L005finish
-       xor     ecx,            ecx
-       xor     edx,            edx
-       mov     ebp,            DWORD PTR $L006cbc_enc_jmp_table[ebp*4]
-       jmp      ebp
-L007ej7:
-       xor     edx,            edx
-       mov     dh,             BYTE PTR 6[esi]
-       shl     edx,            8
-L008ej6:
-       mov     dh,             BYTE PTR 5[esi]
-L009ej5:
-       mov     dl,             BYTE PTR 4[esi]
-L010ej4:
-       mov     ecx,            DWORD PTR [esi]
-       jmp     $L011ejend
-L012ej3:
-       mov     ch,             BYTE PTR 2[esi]
-       xor     ecx,            ecx
-       shl     ecx,            8
-L013ej2:
-       mov     ch,             BYTE PTR 1[esi]
-L014ej1:
-       mov     cl,             BYTE PTR [esi]
-$L011ejend:
-       xor     eax,            ecx
-       xor     ebx,            edx
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _CAST_encrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR [edi],eax
-       mov     DWORD PTR 4[edi],ebx
-       jmp     $L005finish
-$L002decrypt:
-       and     ebp,            4294967288
-       mov     eax,            DWORD PTR 16[esp]
-       mov     ebx,            DWORD PTR 20[esp]
-       jz      $L015decrypt_finish
-L016decrypt_loop:
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _CAST_decrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     ecx,            DWORD PTR 16[esp]
-       mov     edx,            DWORD PTR 20[esp]
-       xor     ecx,            eax
-       xor     edx,            ebx
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-       mov     DWORD PTR [edi],ecx
-       mov     DWORD PTR 4[edi],edx
-       mov     DWORD PTR 16[esp],eax
-       mov     DWORD PTR 20[esp],ebx
-       add     esi,            8
-       add     edi,            8
-       sub     ebp,            8
-       jnz     L016decrypt_loop
-$L015decrypt_finish:
-       mov     ebp,            DWORD PTR 52[esp]
-       and     ebp,            7
-       jz      $L005finish
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-       bswap   eax
-       bswap   ebx
-       mov     DWORD PTR 8[esp],eax
-       mov     DWORD PTR 12[esp],ebx
-       call    _CAST_decrypt
-       mov     eax,            DWORD PTR 8[esp]
-       mov     ebx,            DWORD PTR 12[esp]
-       bswap   eax
-       bswap   ebx
-       mov     ecx,            DWORD PTR 16[esp]
-       mov     edx,            DWORD PTR 20[esp]
-       xor     ecx,            eax
-       xor     edx,            ebx
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 4[esi]
-L017dj7:
-       ror     edx,            16
-       mov     BYTE PTR 6[edi],dl
-       shr     edx,            16
-L018dj6:
-       mov     BYTE PTR 5[edi],dh
-L019dj5:
-       mov     BYTE PTR 4[edi],dl
-L020dj4:
-       mov     DWORD PTR [edi],ecx
-       jmp     $L021djend
-L022dj3:
-       ror     ecx,            16
-       mov     BYTE PTR 2[edi],cl
-       shl     ecx,            16
-L023dj2:
-       mov     BYTE PTR 1[esi],ch
-L024dj1:
-       mov     BYTE PTR [esi], cl
-$L021djend:
-       jmp     $L005finish
-$L005finish:
-       mov     ecx,            DWORD PTR 60[esp]
-       add     esp,            24
-       mov     DWORD PTR [ecx],eax
-       mov     DWORD PTR 4[ecx],ebx
-       pop     edi
-       pop     esi
-       pop     ebx
-       pop     ebp
-       ret
-$L006cbc_enc_jmp_table:
-       DD      0
-       DD      L014ej1
-       DD      L013ej2
-       DD      L012ej3
-       DD      L010ej4
-       DD      L009ej5
-       DD      L008ej6
-       DD      L007ej7
-L025cbc_dec_jmp_table:
-       DD      0
-       DD      L024dj1
-       DD      L023dj2
-       DD      L022dj3
-       DD      L020dj4
-       DD      L019dj5
-       DD      L018dj6
-       DD      L017dj7
-_CAST_cbc_encrypt ENDP
-_TEXT  ENDS
-END
diff --git a/crypto/des/asm/d-win32.asm b/crypto/des/asm/d-win32.asm
deleted file mode 100644 (file)
index 9e3dc9c..0000000
+++ /dev/null
@@ -1,3132 +0,0 @@
-       ; Don't even think of reading this code
-       ; It was automatically generated by des-586.pl
-       ; Which is a perl program used to generate the x86 assember for
-       ; any of elf, a.out, BSDI,Win32, or Solaris
-       ; eric <eay@cryptsoft.com>
-       ; 
-       TITLE   des-586.asm
-        .386
-.model FLAT
-_TEXT  SEGMENT
-PUBLIC _des_encrypt
-EXTRN   _des_SPtrans:DWORD
-_des_encrypt PROC NEAR
-       push    esi
-       push    edi
-       ; 
-       ; Load the 2 words
-       mov     esi,            DWORD PTR 12[esp]
-       xor     ecx,            ecx
-       push    ebx
-       push    ebp
-       mov     eax,            DWORD PTR [esi]
-       mov     ebx,            DWORD PTR 28[esp]
-       mov     edi,            DWORD PTR 4[esi]
-       ; 
-       ; IP
-       rol     eax,            4
-       mov     esi,            eax
-       xor     eax,            edi
-       and     eax,            0f0f0f0f0h
-       xor     esi,            eax
-       xor     edi,            eax
-       ; 
-       rol     edi,            20
-       mov     eax,            edi
-       xor     edi,            esi
-       and     edi,            0fff0000fh
-       xor     eax,            edi
-       xor     esi,            edi
-       ; 
-       rol     eax,            14
-       mov     edi,            eax
-       xor     eax,            esi
-       and     eax,            033333333h
-       xor     edi,            eax
-       xor     esi,            eax
-       ; 
-       rol     esi,            22
-       mov     eax,            esi
-       xor     esi,            edi
-       and     esi,            003fc03fch
-       xor     eax,            esi
-       xor     edi,            esi
-       ; 
-       rol     eax,            9
-       mov     esi,            eax
-       xor     eax,            edi
-       and     eax,            0aaaaaaaah
-       xor     esi,            eax
-       xor     edi,            eax
-       ; 
-       rol     edi,            1
-       mov     ebp,            DWORD PTR 24[esp]
-       cmp     ebx,            0
-       je      $L000start_decrypt
-       ; 
-       ; Round 0
-       mov     eax,            DWORD PTR [ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 4[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 1
-       mov     eax,            DWORD PTR 8[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 12[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 2
-       mov     eax,            DWORD PTR 16[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 20[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 3
-       mov     eax,            DWORD PTR 24[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 28[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 4
-       mov     eax,            DWORD PTR 32[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 36[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 5
-       mov     eax,            DWORD PTR 40[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 44[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 6
-       mov     eax,            DWORD PTR 48[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 52[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 7
-       mov     eax,            DWORD PTR 56[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 60[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 8
-       mov     eax,            DWORD PTR 64[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 68[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 9
-       mov     eax,            DWORD PTR 72[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 76[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 10
-       mov     eax,            DWORD PTR 80[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 84[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 11
-       mov     eax,            DWORD PTR 88[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 92[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 12
-       mov     eax,            DWORD PTR 96[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 100[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 13
-       mov     eax,            DWORD PTR 104[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 108[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 14
-       mov     eax,            DWORD PTR 112[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 116[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 15
-       mov     eax,            DWORD PTR 120[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 124[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       jmp     $L001end
-$L000start_decrypt:
-       ; 
-       ; Round 15
-       mov     eax,            DWORD PTR 120[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 124[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 14
-       mov     eax,            DWORD PTR 112[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 116[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 13
-       mov     eax,            DWORD PTR 104[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 108[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 12
-       mov     eax,            DWORD PTR 96[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 100[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 11
-       mov     eax,            DWORD PTR 88[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 92[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 10
-       mov     eax,            DWORD PTR 80[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 84[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 9
-       mov     eax,            DWORD PTR 72[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 76[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 8
-       mov     eax,            DWORD PTR 64[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 68[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 7
-       mov     eax,            DWORD PTR 56[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 60[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 6
-       mov     eax,            DWORD PTR 48[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 52[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 5
-       mov     eax,            DWORD PTR 40[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 44[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 4
-       mov     eax,            DWORD PTR 32[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 36[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 3
-       mov     eax,            DWORD PTR 24[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 28[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 2
-       mov     eax,            DWORD PTR 16[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 20[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 1
-       mov     eax,            DWORD PTR 8[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 12[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 0
-       mov     eax,            DWORD PTR [ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 4[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-$L001end:
-       ; 
-       ; FP
-       mov     edx,            DWORD PTR 20[esp]
-       ror     esi,            1
-       mov     eax,            edi
-       xor     edi,            esi
-       and     edi,            0aaaaaaaah
-       xor     eax,            edi
-       xor     esi,            edi
-       ; 
-       rol     eax,            23
-       mov     edi,            eax
-       xor     eax,            esi
-       and     eax,            003fc03fch
-       xor     edi,            eax
-       xor     esi,            eax
-       ; 
-       rol     edi,            10
-       mov     eax,            edi
-       xor     edi,            esi
-       and     edi,            033333333h
-       xor     eax,            edi
-       xor     esi,            edi
-       ; 
-       rol     esi,            18
-       mov     edi,            esi
-       xor     esi,            eax
-       and     esi,            0fff0000fh
-       xor     edi,            esi
-       xor     eax,            esi
-       ; 
-       rol     edi,            12
-       mov     esi,            edi
-       xor     edi,            eax
-       and     edi,            0f0f0f0f0h
-       xor     esi,            edi
-       xor     eax,            edi
-       ; 
-       ror     eax,            4
-       mov     DWORD PTR [edx],eax
-       mov     DWORD PTR 4[edx],esi
-       pop     ebp
-       pop     ebx
-       pop     edi
-       pop     esi
-       ret
-_des_encrypt ENDP
-_TEXT  ENDS
-_TEXT  SEGMENT
-PUBLIC _des_encrypt2
-EXTRN   _des_SPtrans:DWORD
-_des_encrypt2 PROC NEAR
-       push    esi
-       push    edi
-       ; 
-       ; Load the 2 words
-       mov     eax,            DWORD PTR 12[esp]
-       xor     ecx,            ecx
-       push    ebx
-       push    ebp
-       mov     esi,            DWORD PTR [eax]
-       mov     ebx,            DWORD PTR 28[esp]
-       rol     esi,            3
-       mov     edi,            DWORD PTR 4[eax]
-       rol     edi,            3
-       mov     ebp,            DWORD PTR 24[esp]
-       cmp     ebx,            0
-       je      $L002start_decrypt
-       ; 
-       ; Round 0
-       mov     eax,            DWORD PTR [ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 4[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 1
-       mov     eax,            DWORD PTR 8[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 12[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 2
-       mov     eax,            DWORD PTR 16[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 20[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 3
-       mov     eax,            DWORD PTR 24[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 28[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 4
-       mov     eax,            DWORD PTR 32[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 36[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 5
-       mov     eax,            DWORD PTR 40[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 44[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 6
-       mov     eax,            DWORD PTR 48[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 52[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 7
-       mov     eax,            DWORD PTR 56[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 60[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     esi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     esi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     esi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     esi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     esi,            ebx
-       ; 
-       ; Round 8
-       mov     eax,            DWORD PTR 64[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 68[ebp]
-       xor     eax,            esi
-       xor     edx,            esi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-       mov     cl,             ah
-       ror     edx,            4
-       mov     ebp,            DWORD PTR _des_SPtrans[ebx]
-       mov     bl,             dl
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR _des_SPtrans[0200h+ecx]
-       xor     edi,            ebp
-       mov     cl,             dh
-       shr     eax,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0100h+ebx]
-       xor     edi,            ebp
-       mov     bl,             ah
-       shr     edx,            16
-       mov     ebp,            DWORD PTR _des_SPtrans[0300h+ecx]
-       xor     edi,            ebp
-       mov     ebp,            DWORD PTR 24[esp]
-       mov     cl,             dh
-       and     eax,            0ffh
-       and     edx,            0ffh
-       mov     ebx,            DWORD PTR _des_SPtrans[0600h+ebx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0700h+ecx]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0400h+eax]
-       xor     edi,            ebx
-       mov     ebx,            DWORD PTR _des_SPtrans[0500h+edx]
-       xor     edi,            ebx
-       ; 
-       ; Round 9
-       mov     eax,            DWORD PTR 72[ebp]
-       xor     ebx,            ebx
-       mov     edx,            DWORD PTR 76[ebp]
-       xor     eax,            edi
-       xor     edx,            edi
-       and     eax,            0fcfcfcfch
-       and     edx,            0cfcfcfcfh
-       mov     bl,             al
-     &nb