Delete a few unused files in apps, restore CAST WIN32 ASM file to main
authorDr. Stephen Henson <steve@openssl.org>
Thu, 11 Feb 1999 00:07:39 +0000 (00:07 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 11 Feb 1999 00:07:39 +0000 (00:07 +0000)
tree.

apps/cert.der [deleted file]
apps/stuff/pkcs12.der [deleted file]
crypto/cast/asm/.cvsignore
crypto/cast/asm/c-win32.asm [new file with mode: 0644]

diff --git a/apps/cert.der b/apps/cert.der
deleted file mode 100644 (file)
index 58d9fd8..0000000
Binary files a/apps/cert.der and /dev/null differ
diff --git a/apps/stuff/pkcs12.der b/apps/stuff/pkcs12.der
deleted file mode 100644 (file)
index 49c28b4..0000000
Binary files a/apps/stuff/pkcs12.der and /dev/null differ
index fefd104..ed39ad9 100644 (file)
@@ -1,2 +1 @@
-c-win32.asm
 cx86unix.cpp
diff --git a/crypto/cast/asm/c-win32.asm b/crypto/cast/asm/c-win32.asm
new file mode 100644 (file)
index 0000000..ba78a3c
--- /dev/null
@@ -0,0 +1,953 @@
+       ; 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