openssl/crypto/des/asm/y-win32.asm
1998-12-21 10:56:39 +00:00

929 lines
18 KiB
NASM

; Don't even think of reading this code
; It was automatically generated by crypt586.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 crypt586.asm
.386
.model FLAT
_TEXT SEGMENT
PUBLIC _fcrypt_body
EXTRN _des_SPtrans:DWORD
_fcrypt_body PROC NEAR
push ebp
push ebx
push esi
push edi
;
; Load the 2 words
xor edi, edi
xor esi, esi
mov ebp, DWORD PTR 24[esp]
push 25
L000start:
;
; Round 0
mov eax, DWORD PTR 32[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR [ebp]
xor eax, ebx
mov ecx, DWORD PTR 4[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 8[ebp]
xor eax, ebx
mov ecx, DWORD PTR 12[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 16[ebp]
xor eax, ebx
mov ecx, DWORD PTR 20[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 24[ebp]
xor eax, ebx
mov ecx, DWORD PTR 28[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 32[ebp]
xor eax, ebx
mov ecx, DWORD PTR 36[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 40[ebp]
xor eax, ebx
mov ecx, DWORD PTR 44[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 48[ebp]
xor eax, ebx
mov ecx, DWORD PTR 52[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 56[ebp]
xor eax, ebx
mov ecx, DWORD PTR 60[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 64[ebp]
xor eax, ebx
mov ecx, DWORD PTR 68[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 72[ebp]
xor eax, ebx
mov ecx, DWORD PTR 76[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 80[ebp]
xor eax, ebx
mov ecx, DWORD PTR 84[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 88[ebp]
xor eax, ebx
mov ecx, DWORD PTR 92[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 96[ebp]
xor eax, ebx
mov ecx, DWORD PTR 100[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 104[ebp]
xor eax, ebx
mov ecx, DWORD PTR 108[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, esi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 112[ebp]
xor eax, ebx
mov ecx, DWORD PTR 116[ebp]
xor eax, esi
xor edx, esi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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 32[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 36[esp]
xor edx, edi
and eax, edx
and edx, ecx
mov ebx, eax
shl ebx, 16
mov ecx, edx
shl ecx, 16
xor eax, ebx
xor edx, ecx
mov ebx, DWORD PTR 120[ebp]
xor eax, ebx
mov ecx, DWORD PTR 124[ebp]
xor eax, edi
xor edx, edi
xor edx, ecx
and eax, 0fcfcfcfch
xor ebx, ebx
and edx, 0cfcfcfcfh
xor ecx, ecx
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 28[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
mov ebx, DWORD PTR [esp]
mov eax, edi
dec ebx
mov edi, esi
mov esi, eax
mov DWORD PTR [esp],ebx
jnz L000start
;
; FP
mov edx, DWORD PTR 24[esp]
ror edi, 1
mov eax, esi
xor esi, edi
and esi, 0aaaaaaaah
xor eax, esi
xor edi, esi
;
rol eax, 23
mov esi, eax
xor eax, edi
and eax, 003fc03fch
xor esi, eax
xor edi, eax
;
rol esi, 10
mov eax, esi
xor esi, edi
and esi, 033333333h
xor eax, esi
xor edi, esi
;
rol edi, 18
mov esi, edi
xor edi, eax
and edi, 0fff0000fh
xor esi, edi
xor eax, edi
;
rol esi, 12
mov edi, esi
xor esi, eax
and esi, 0f0f0f0f0h
xor edi, esi
xor eax, esi
;
ror eax, 4
mov DWORD PTR [edx],eax
mov DWORD PTR 4[edx],edi
pop ecx
pop edi
pop esi
pop ebx
pop ebp
ret
_fcrypt_body ENDP
_TEXT ENDS
END