Remove obsolete files.

This commit is contained in:
Ulf Möller 1999-04-01 13:34:22 +00:00
parent b822aa562f
commit 96219db838
10 changed files with 0 additions and 6089 deletions

View file

@ -1,929 +0,0 @@
; Don't even think of reading this code
; It was automatically generated by crypt.pl
; Which is a perl program used to generate the x86 assember for
; any of elf, a.out, Win32, or Solaris
; It can be found in SSLeay 0.6.5+ or in libdes 3.26+
; eric <eay@cryptsoft.com>
; The inner loop instruction sequence and the IP/FP modifications
; are from Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
;
TITLE dx86xxxx.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]
mov DWORD PTR 36[esp],25
L000start:
;
; Round 0
mov eax, DWORD PTR 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, esi
shr edx, 16
mov ecx, DWORD PTR 32[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 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 28[esp]
mov edx, edi
shr edx, 16
mov ecx, DWORD PTR 32[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 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
mov eax, edi
dec DWORD PTR 36[esp]
mov edi, esi
mov esi, eax
jnz L000start
;
; FP
mov edx, DWORD PTR 20[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 edi
pop esi
pop ebx
pop ebp
ret
_fcrypt_body ENDP
_TEXT ENDS
END

View file

@ -1,99 +0,0 @@
begin 640 c-win32.obj
M3`$"`/4&DC,,$```"0`````````N=&5X=```````````````J`H``&0````,
M"P```````(`````@`#!@+F1A=&$```"H"@`````````````,$```````````
M````````0``PP%535E<S_S/VBVPD&,=$)"09````BT0D'(O6P>H0BTPD(#/6
M(\(CT8O8P>,0B\K!X1`SPS/1BUT`,\.+300SQC/6,]$E_/S\_#/;@>+/S\_/
M,\F*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!```S_8K<P>H0
MBZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[BYD`!P``,_N+F``$
M```S^XN:``4``#/[BT0D'(O7P>H0BTPD(#/7(\(CT8O8P>,0B\K!X1`SPS/1
MBUT(,\.+30PSQS/7,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS
M]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+;"08BLXE_P``
M`('B_P```(N;``8``#/SBYD`!P``,_.+F``$```S\XN:``4``#/SBT0D'(O6
MP>H0BTPD(#/6(\(CT8O8P>,0B\K!X1`SPS/1BUT0,\.+310SQC/6,]$E_/S\
M_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!
M```S_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[BYD`
M!P``,_N+F``$```S^XN:``4``#/[BT0D'(O7P>H0BTPD(#/7(\(CT8O8P>,0
MB\K!X1`SPS/1BUT8,\.+31PSQS/7,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$
MBZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+
M;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$```S\XN:``4`
M`#/SBT0D'(O6P>H0BTPD(#/6(\(CT8O8P>,0B\K!X1`SPS/1BUT@,\.+320S
MQC/6,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS_8NI``(``#/]
MBL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;
M``8``#/[BYD`!P``,_N+F``$```S^XN:``4``#/[BT0D'(O7P>H0BTPD(#/7
M(\(CT8O8P>,0B\K!X1`SPS/1BUTH,\.+32PSQS/7,]$E_/S\_#/;@>+/S\_/
M,\F*V(K,P<H$BZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0
MBZD``P``,_6+;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$
M```S\XN:``4``#/SBT0D'(O6P>H0BTPD(#/6(\(CT8O8P>,0B\K!X1`SPS/1
MBUTP,\.+330SQC/6,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS
M_8NI``(``#/]BL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+;"08BLXE_P``
M`('B_P```(N;``8``#/[BYD`!P``,_N+F``$```S^XN:``4``#/[BT0D'(O7
MP>H0BTPD(#/7(\(CT8O8P>,0B\K!X1`SPS/1BUTX,\.+33PSQS/7,]$E_/S\
M_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!
M```S]8K<P>H0BZD``P``,_6+;"08BLXE_P```('B_P```(N;``8``#/SBYD`
M!P``,_.+F``$```S\XN:``4``#/SBT0D'(O6P>H0BTPD(#/6(\(CT8O8P>,0
MB\K!X1`SPS/1BUU`,\.+340SQC/6,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$
MBZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+
M;"08BLXE_P```('B_P```(N;``8``#/[BYD`!P``,_N+F``$```S^XN:``4`
M`#/[BT0D'(O7P>H0BTPD(#/7(\(CT8O8P>,0B\K!X1`SPS/1BUU(,\.+34PS
MQS/7,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS]8NI``(``#/U
MBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+;"08BLXE_P```('B_P```(N;
M``8``#/SBYD`!P``,_.+F``$```S\XN:``4``#/SBT0D'(O6P>H0BTPD(#/6
M(\(CT8O8P>,0B\K!X1`SPS/1BUU0,\.+350SQC/6,]$E_/S\_#/;@>+/S\_/
M,\F*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!```S_8K<P>H0
MBZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[BYD`!P``,_N+F``$
M```S^XN:``4``#/[BT0D'(O7P>H0BTPD(#/7(\(CT8O8P>,0B\K!X1`SPS/1
MBUU8,\.+35PSQS/7,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS
M]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+;"08BLXE_P``
M`('B_P```(N;``8``#/SBYD`!P``,_.+F``$```S\XN:``4``#/SBT0D'(O6
MP>H0BTPD(#/6(\(CT8O8P>,0B\K!X1`SPS/1BUU@,\.+360SQC/6,]$E_/S\
M_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!
M```S_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[BYD`
M!P``,_N+F``$```S^XN:``4``#/[BT0D'(O7P>H0BTPD(#/7(\(CT8O8P>,0
MB\K!X1`SPS/1BUUH,\.+36PSQS/7,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$
MBZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+
M;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$```S\XN:``4`
M`#/SBT0D'(O6P>H0BTPD(#/6(\(CT8O8P>,0B\K!X1`SPS/1BUUP,\.+370S
MQC/6,]$E_/S\_#/;@>+/S\_/,\F*V(K,P<H$BZL`````BMHS_8NI``(``#/]
MBL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;
M``8``#/[BYD`!P``,_N+F``$```S^XN:``4``#/[BT0D'(O7P>H0BTPD(#/7
M(\(CT8O8P>,0B\K!X1`SPS/1BUUX,\.+37PSQS/7,]$E_/S\_#/;@>+/S\_/
M,\F*V(K,P<H$BZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0
MBZD``P``,_6+;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$
M```S\XN:``4``#/SB\?_3"0DB_Z+\`^%T/7__XM4)!31SXO&,_>!YJJJJJHS
MQC/^P<`7B_`SQR7\`_P#,_`S^,'&"HO&,_>!YC,S,S,SQC/^P<<2B_<S^('G
M#P#P_S/W,\?!Q@R+_C/P@>;P\/#P,_XSQL'(!(D"B7H$7UY;7<-;````!P``
M``8`90````<````&`'(````'````!@!_````!P````8`F`````<````&`*``
M```'````!@"H````!P````8`L`````<````&`/T````'````!@`'`0``!P``
M``8`%`$```<````&`"$!```'````!@`Z`0``!P````8`0@$```<````&`$H!
M```'````!@!2`0``!P````8`GP$```<````&`*D!```'````!@"V`0``!P``
M``8`PP$```<````&`-P!```'````!@#D`0``!P````8`[`$```<````&`/0!
M```'````!@!!`@``!P````8`2P(```<````&`%@"```'````!@!E`@``!P``
M``8`?@(```<````&`(8"```'````!@".`@``!P````8`E@(```<````&`.,"
M```'````!@#M`@``!P````8`^@(```<````&``<#```'````!@`@`P``!P``
M``8`*`,```<````&`#`#```'````!@`X`P``!P````8`A0,```<````&`(\#
M```'````!@"<`P``!P````8`J0,```<````&`,(#```'````!@#*`P``!P``
M``8`T@,```<````&`-H#```'````!@`G!```!P````8`,00```<````&`#X$
M```'````!@!+!```!P````8`9`0```<````&`&P$```'````!@!T!```!P``
M``8`?`0```<````&`,D$```'````!@#3!```!P````8`X`0```<````&`.T$
M```'````!@`&!0``!P````8`#@4```<````&`!8%```'````!@`>!0``!P``
M``8`:P4```<````&`'4%```'````!@""!0``!P````8`CP4```<````&`*@%
M```'````!@"P!0``!P````8`N`4```<````&`,`%```'````!@`-!@``!P``
M``8`%P8```<````&`"0&```'````!@`Q!@``!P````8`2@8```<````&`%(&
M```'````!@!:!@``!P````8`8@8```<````&`*\&```'````!@"Y!@``!P``
M``8`Q@8```<````&`-,&```'````!@#L!@``!P````8`]`8```<````&`/P&
M```'````!@`$!P``!P````8`40<```<````&`%L'```'````!@!H!P``!P``
M``8`=0<```<````&`(X'```'````!@"6!P``!P````8`G@<```<````&`*8'
M```'````!@#S!P``!P````8`_0<```<````&``H(```'````!@`7"```!P``
M``8`,`@```<````&`#@(```'````!@!`"```!P````8`2`@```<````&`)4(
M```'````!@"?"```!P````8`K`@```<````&`+D(```'````!@#2"```!P``
M``8`V@@```<````&`.((```'````!@#J"```!P````8`-PD```<````&`$$)
M```'````!@!."0``!P````8`6PD```<````&`'0)```'````!@!\"0``!P``
M``8`A`D```<````&`(P)```'````!@#9"0``!P````8`XPD```<````&`/`)
M```'````!@#]"0``!P````8`%@H```<````&`!X*```'````!@`F"@``!P``
M``8`+@H```<````&`"YF:6QE`````````/[_``!G`BY<8W)Y<'1O7&1E<UQA
M<VU<8RUW:6XS,BYA<VT``````````"YT97AT``````````$````#`:@*``"`
M`````````````````"YD871A``````````(````#`0``````````````````
M```````````$```````````````"```````1``````````$`(``"`!X```!?
99&5S7U-0=')A;G,`7V9C<GEP=%]B;V1Y````
`
end

View file

@ -1,240 +0,0 @@
#!/usr/local/bin/perl
#
# The inner loop instruction sequence and the IP/FP modifications are from
# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
# I've added the stuff needed for crypt() but I've not worried about making
# things perfect.
#
$prog="crypt.pl";
# base code is in microsft
# op dest, source
# format.
#
require "desboth.pl";
if ( ($ARGV[0] eq "elf"))
{ require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "a.out"))
{ $aout=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "sol"))
{ $sol=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "cpp"))
{ $cpp=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "win32"))
{ require "x86ms.pl"; }
else
{
print STDERR <<"EOF";
Pick one target type from
elf - linux, FreeBSD etc
a.out - old linux
sol - x86 solaris
cpp - format so x86unix.cpp can be used
win32 - Windows 95/Windows NT
EOF
exit(1);
}
&comment("Don't even think of reading this code");
&comment("It was automatically generated by $prog");
&comment("Which is a perl program used to generate the x86 assember for");
&comment("any of elf, a.out, Win32, or Solaris");
&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");
&comment("eric <eay\@cryptsoft.com>");
&comment("The inner loop instruction sequence and the IP/FP modifications");
&comment("are from Svend Olaf Mikkelsen <svolaf\@inet.uni-c.dk>");
&comment("");
&file("dx86xxxx");
$L="edi";
$R="esi";
&fcrypt_body("fcrypt_body");
&file_end();
sub fcrypt_body
{
local($name,$do_ip)=@_;
&function_begin($name,3,"EXTRN _des_SPtrans:DWORD");
&comment("");
&comment("Load the 2 words");
$ks="ebp";
&xor( $L, $L);
&xor( $R, $R);
&mov($ks,&wparam(1));
&mov(&wtmp(1), 25);
&set_label("start");
for ($i=0; $i<16; $i+=2)
{
&comment("");
&comment("Round $i");
&D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
&comment("");
&comment("Round ".sprintf("%d",$i+1));
&D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
}
&mov("eax", $L);
&dec(&wtmp(1));
&mov($L, $R);
&mov($R, "eax");
&jnz(&label("start"));
&comment("");
&comment("FP");
&mov("edx",&wparam(0));
&FP_new($R,$L,"eax",3);
&mov(&DWP(0,"edx","",0),"eax");
&mov(&DWP(4,"edx","",0),$L);
&function_end($name);
}
sub D_ENCRYPT
{
local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;
&mov( $u, &wparam(2)); # 2
&mov( $t, $R);
&shr( $t, 16); # 1
&mov( $tmp2, &wparam(3)); # 2
&xor( $t, $R); # 1
&and( $u, $t); # 2
&and( $t, $tmp2); # 2
&mov( $tmp1, $u);
&shl( $tmp1, 16); # 1
&mov( $tmp2, $t);
&shl( $tmp2, 16); # 1
&xor( $u, $tmp1); # 2
&xor( $t, $tmp2); # 2
&mov( $tmp1, &DWP(&n2a($S*4),$ks,"",0)); # 2
&xor( $u, $tmp1);
&mov( $tmp2, &DWP(&n2a(($S+1)*4),$ks,"",0)); # 2
&xor( $u, $R);
&xor( $t, $R);
&xor( $t, $tmp2);
&and( $u, "0xfcfcfcfc" ); # 2
&xor( $tmp1, $tmp1); # 1
&and( $t, "0xcfcfcfcf" ); # 2
&xor( $tmp2, $tmp2);
&movb( &LB($tmp1), &LB($u) );
&movb( &LB($tmp2), &HB($u) );
&rotr( $t, 4 );
&mov( $ks, &DWP(" $desSP",$tmp1,"",0));
&movb( &LB($tmp1), &LB($t) );
&xor( $L, $ks);
&mov( $ks, &DWP("0x200+$desSP",$tmp2,"",0));
&xor( $L, $ks);
&movb( &LB($tmp2), &HB($t) );
&shr( $u, 16);
&mov( $ks, &DWP("0x100+$desSP",$tmp1,"",0));
&xor( $L, $ks);
&movb( &LB($tmp1), &HB($u) );
&shr( $t, 16);
&mov( $ks, &DWP("0x300+$desSP",$tmp2,"",0));
&xor( $L, $ks);
&mov( $ks, &DWP(24,"esp","",0));
&movb( &LB($tmp2), &HB($t) );
&and( $u, "0xff" );
&and( $t, "0xff" );
&mov( $tmp1, &DWP("0x600+$desSP",$tmp1,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x700+$desSP",$tmp2,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x400+$desSP",$u,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x500+$desSP",$t,"",0));
&xor( $L, $tmp1);
}
sub n2a
{
sprintf("%d",$_[0]);
}
# now has a side affect of rotating $a by $shift
sub R_PERM_OP
{
local($a,$b,$tt,$shift,$mask,$last)=@_;
&rotl( $a, $shift ) if ($shift != 0);
&mov( $tt, $a );
&xor( $a, $b );
&and( $a, $mask );
if ($notlast eq $b)
{
&xor( $b, $a );
&xor( $tt, $a );
}
else
{
&xor( $tt, $a );
&xor( $b, $a );
}
&comment("");
}
sub IP_new
{
local($l,$r,$tt,$lr)=@_;
&R_PERM_OP($l,$r,$tt, 4,"0xf0f0f0f0",$l);
&R_PERM_OP($r,$tt,$l,20,"0xfff0000f",$l);
&R_PERM_OP($l,$tt,$r,14,"0x33333333",$r);
&R_PERM_OP($tt,$r,$l,22,"0x03fc03fc",$r);
&R_PERM_OP($l,$r,$tt, 9,"0xaaaaaaaa",$r);
if ($lr != 3)
{
if (($lr-3) < 0)
{ &rotr($tt, 3-$lr); }
else { &rotl($tt, $lr-3); }
}
if ($lr != 2)
{
if (($lr-2) < 0)
{ &rotr($r, 2-$lr); }
else { &rotl($r, $lr-2); }
}
}
sub FP_new
{
local($l,$r,$tt,$lr)=@_;
if ($lr != 2)
{
if (($lr-2) < 0)
{ &rotl($r, 2-$lr); }
else { &rotr($r, $lr-2); }
}
if ($lr != 3)
{
if (($lr-3) < 0)
{ &rotl($l, 3-$lr); }
else { &rotr($l, $lr-3); }
}
&R_PERM_OP($l,$r,$tt, 0,"0xaaaaaaaa",$r);
&R_PERM_OP($tt,$r,$l,23,"0x03fc03fc",$r);
&R_PERM_OP($l,$r,$tt,10,"0x33333333",$l);
&R_PERM_OP($r,$tt,$l,18,"0xfff0000f",$l);
&R_PERM_OP($l,$tt,$r,12,"0xf0f0f0f0",$r);
&rotr($tt , 4);
}

View file

@ -1,932 +0,0 @@
/* Don't even think of reading this code */
/* It was automatically generated by crypt.pl */
/* Which is a perl program used to generate the x86 assember for */
/* any of elf, a.out, Win32, or Solaris */
/* It can be found in SSLeay 0.6.5+ or in libdes 3.26+ */
/* eric <eay@cryptsoft.com> */
/* The inner loop instruction sequence and the IP/FP modifications */
/* are from Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk> */
.file "dx86xxxx.s"
.version "01.01"
gcc2_compiled.:
.text
.align ALIGN
.globl fcrypt_body
TYPE(fcrypt_body,@function)
fcrypt_body:
pushl %ebp
pushl %ebx
pushl %esi
pushl %edi
/* Load the 2 words */
xorl %edi, %edi
xorl %esi, %esi
movl 24(%esp), %ebp
movl $25, -8(%esp)
.align ALIGN
.L000start:
/* Round 0 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl (%ebp), %ebx
xorl %ebx, %eax
movl 4(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 1 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 8(%ebp), %ebx
xorl %ebx, %eax
movl 12(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
/* Round 2 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 16(%ebp), %ebx
xorl %ebx, %eax
movl 20(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 3 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 24(%ebp), %ebx
xorl %ebx, %eax
movl 28(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
/* Round 4 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 32(%ebp), %ebx
xorl %ebx, %eax
movl 36(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 5 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 40(%ebp), %ebx
xorl %ebx, %eax
movl 44(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
/* Round 6 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 48(%ebp), %ebx
xorl %ebx, %eax
movl 52(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 7 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 56(%ebp), %ebx
xorl %ebx, %eax
movl 60(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
/* Round 8 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 64(%ebp), %ebx
xorl %ebx, %eax
movl 68(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 9 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 72(%ebp), %ebx
xorl %ebx, %eax
movl 76(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
/* Round 10 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 80(%ebp), %ebx
xorl %ebx, %eax
movl 84(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 11 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 88(%ebp), %ebx
xorl %ebx, %eax
movl 92(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
/* Round 12 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 96(%ebp), %ebx
xorl %ebx, %eax
movl 100(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 13 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 104(%ebp), %ebx
xorl %ebx, %eax
movl 108(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
/* Round 14 */
movl 28(%esp), %eax
movl %esi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %esi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 112(%ebp), %ebx
xorl %ebx, %eax
movl 116(%ebp), %ecx
xorl %esi, %eax
xorl %esi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %edi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %edi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %edi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %edi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %edi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %edi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %edi
/* Round 15 */
movl 28(%esp), %eax
movl %edi, %edx
shrl $16, %edx
movl 32(%esp), %ecx
xorl %edi, %edx
andl %edx, %eax
andl %ecx, %edx
movl %eax, %ebx
sall $16, %ebx
movl %edx, %ecx
sall $16, %ecx
xorl %ebx, %eax
xorl %ecx, %edx
movl 120(%ebp), %ebx
xorl %ebx, %eax
movl 124(%ebp), %ecx
xorl %edi, %eax
xorl %edi, %edx
xorl %ecx, %edx
andl $0xfcfcfcfc, %eax
xorl %ebx, %ebx
andl $0xcfcfcfcf, %edx
xorl %ecx, %ecx
movb %al, %bl
movb %ah, %cl
rorl $4, %edx
movl des_SPtrans(%ebx),%ebp
movb %dl, %bl
xorl %ebp, %esi
movl 0x200+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movb %dh, %cl
shrl $16, %eax
movl 0x100+des_SPtrans(%ebx),%ebp
xorl %ebp, %esi
movb %ah, %bl
shrl $16, %edx
movl 0x300+des_SPtrans(%ecx),%ebp
xorl %ebp, %esi
movl 24(%esp), %ebp
movb %dh, %cl
andl $0xff, %eax
andl $0xff, %edx
movl 0x600+des_SPtrans(%ebx),%ebx
xorl %ebx, %esi
movl 0x700+des_SPtrans(%ecx),%ebx
xorl %ebx, %esi
movl 0x400+des_SPtrans(%eax),%ebx
xorl %ebx, %esi
movl 0x500+des_SPtrans(%edx),%ebx
xorl %ebx, %esi
movl %edi, %eax
decl -8(%esp)
movl %esi, %edi
movl %eax, %esi
jnz .L000start
/* FP */
movl 20(%esp), %edx
rorl $1, %edi
movl %esi, %eax
xorl %edi, %esi
andl $0xaaaaaaaa, %esi
xorl %esi, %eax
xorl %esi, %edi
roll $23, %eax
movl %eax, %esi
xorl %edi, %eax
andl $0x03fc03fc, %eax
xorl %eax, %esi
xorl %eax, %edi
roll $10, %esi
movl %esi, %eax
xorl %edi, %esi
andl $0x33333333, %esi
xorl %esi, %eax
xorl %esi, %edi
roll $18, %edi
movl %edi, %esi
xorl %eax, %edi
andl $0xfff0000f, %edi
xorl %edi, %esi
xorl %edi, %eax
roll $12, %esi
movl %esi, %edi
xorl %eax, %esi
andl $0xf0f0f0f0, %esi
xorl %esi, %edi
xorl %esi, %eax
rorl $4, %eax
movl %eax, (%edx)
movl %edi, 4(%edx)
popl %edi
popl %esi
popl %ebx
popl %ebp
ret
.fcrypt_body_end:
SIZE(fcrypt_body,.fcrypt_body_end-fcrypt_body)
.ident "desasm.pl"

View file

@ -1,319 +0,0 @@
begin 640 d-win32.obj
M3`$"`/4&DC-`-@``#``````````N=&5X=```````````````W"$``&0```!`
M(@`````````"```@`#!@+F1A=&$```#<(0````````````!`-@``````````
M````````0``PP%535E>+="04,\F+!HM<)!R+?@3!P`2+\#/')?#P\/`S\#/X
MP<<4B\<S_H'G#P#P_S/',_?!P`Z+^#/&)3,S,S,S^#/PP<86B\8S]X'F_`/\
M`S/&,_[!P`F+\#/'):JJJJHS\#/XT<>#^P"+;"08#X2U!P``BT4`,]N+500S
MQC/6)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+
MJP`!```S_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[
MBYD`!P``,_N+F``$```S^XN:``4``#/[BT4(,]N+50PSQS/7)?S\_/R!XL_/
MS\^*V(K,P<H$BZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0
MBZD``P``,_6+;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$
M```S\XN:``4``#/SBT40,]N+510SQC/6)?S\_/R!XL_/S\^*V(K,P<H$BZL`
M````BMHS_8NI``(``#/]BL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+;"08
MBLXE_P```('B_P```(N;``8``#/[BYD`!P``,_N+F``$```S^XN:``4``#/[
MBT48,]N+51PSQS/7)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS]8NI``(`
M`#/UBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+;"08BLXE_P```('B_P``
M`(N;``8``#/SBYD`!P``,_.+F``$```S\XN:``4``#/SBT4@,]N+520SQC/6
M)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!
M```S_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[BYD`
M!P``,_N+F``$```S^XN:``4``#/[BT4H,]N+52PSQS/7)?S\_/R!XL_/S\^*
MV(K,P<H$BZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0BZD`
M`P``,_6+;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$```S
M\XN:``4``#/SBT4P,]N+530SQC/6)?S\_/R!XL_/S\^*V(K,P<H$BZL`````
MBMHS_8NI``(``#/]BL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+;"08BLXE
M_P```('B_P```(N;``8``#/[BYD`!P``,_N+F``$```S^XN:``4``#/[BT4X
M,]N+53PSQS/7)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS]8NI``(``#/U
MBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+;"08BLXE_P```('B_P```(N;
M``8``#/SBYD`!P``,_.+F``$```S\XN:``4``#/SBT5`,]N+540SQC/6)?S\
M_/R!XL_/S\^*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!```S
M_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[BYD`!P``
M,_N+F``$```S^XN:``4``#/[BT5(,]N+54PSQS/7)?S\_/R!XL_/S\^*V(K,
MP<H$BZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0BZD``P``
M,_6+;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$```S\XN:
M``4``#/SBT50,]N+550SQC/6)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS
M_8NI``(``#/]BL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+;"08BLXE_P``
M`('B_P```(N;``8``#/[BYD`!P``,_N+F``$```S^XN:``4``#/[BT58,]N+
M55PSQS/7)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS]8NI``(``#/UBL[!
MZ!"+JP`!```S]8K<P>H0BZD``P``,_6+;"08BLXE_P```('B_P```(N;``8`
M`#/SBYD`!P``,_.+F``$```S\XN:``4``#/SBT5@,]N+560SQC/6)?S\_/R!
MXL_/S\^*V(K,P<H$BZL`````BMHS_8NI``(``#/]BL[!Z!"+JP`!```S_8K<
MP>H0BZD``P``,_V+;"08BLXE_P```('B_P```(N;``8``#/[BYD`!P``,_N+
MF``$```S^XN:``4``#/[BT5H,]N+56PSQS/7)?S\_/R!XL_/S\^*V(K,P<H$
MBZL`````BMHS]8NI``(``#/UBL[!Z!"+JP`!```S]8K<P>H0BZD``P``,_6+
M;"08BLXE_P```('B_P```(N;``8``#/SBYD`!P``,_.+F``$```S\XN:``4`
M`#/SBT5P,]N+570SQC/6)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS_8NI
M``(``#/]BL[!Z!"+JP`!```S_8K<P>H0BZD``P``,_V+;"08BLXE_P```('B
M_P```(N;``8``#/[BYD`!P``,_N+F``$```S^XN:``4``#/[BT5X,]N+57PS
MQS/7)?S\_/R!XL_/S\^*V(K,P<H$BZL`````BMHS]8NI``(``#/UBL[!Z!"+
MJP`!```S]8K<P>H0BZD``P``,_6+;"08BLXE_P```('B_P```(N;``8``#/S
MBYD`!P``,_.+F``$```S\XN:``4``#/SZ;`'``"+17@SVXM5?#/&,]8E_/S\
M_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]
MBMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_````BYL`!@``,_N+F0`'```S
M^XN8``0``#/[BYH`!0``,_N+17`SVXM5=#/',]<E_/S\_('BS\_/SXK8BLS!
MR@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S
M]8ML)!B*SB7_````@>+_````BYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`
M!0``,_.+16@SVXM5;#/&,]8E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]
MBZD``@``,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````
M@>+_````BYL`!@``,_N+F0`'```S^XN8``0``#/[BYH`!0``,_N+16`SVXM5
M9#/',]<E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H
M$(NK``$``#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_````@>+_````BYL`!@``
M,_.+F0`'```S\XN8``0``#/SBYH`!0``,_.+15@SVXM57#/&,]8E_/S\_('B
MS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]BMS!
MZA"+J0`#```S_8ML)!B*SB7_````@>+_````BYL`!@``,_N+F0`'```S^XN8
M``0``#/[BYH`!0``,_N+15`SVXM55#/',]<E_/S\_('BS\_/SXK8BLS!R@2+
MJP````"*VC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S]8ML
M)!B*SB7_````@>+_````BYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`!0``
M,_.+14@SVXM53#/&,]8E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD`
M`@``,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_
M````BYL`!@``,_N+F0`'```S^XN8``0``#/[BYH`!0``,_N+14`SVXM51#/'
M,]<E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK
M``$``#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_````@>+_````BYL`!@``,_.+
MF0`'```S\XN8``0``#/SBYH`!0``,_.+13@SVXM5/#/&,]8E_/S\_('BS\_/
MSXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]BMS!ZA"+
MJ0`#```S_8ML)!B*SB7_````@>+_````BYL`!@``,_N+F0`'```S^XN8``0`
M`#/[BYH`!0``,_N+13`SVXM5-#/',]<E_/S\_('BS\_/SXK8BLS!R@2+JP``
M``"*VC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S]8ML)!B*
MSB7_````@>+_````BYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`!0``,_.+
M12@SVXM5+#/&,]8E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``
M,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_````
MBYL`!@``,_N+F0`'```S^XN8``0``#/[BYH`!0``,_N+12`SVXM5)#/',]<E
M_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK``$`
M`#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_````@>+_````BYL`!@``,_.+F0`'
M```S\XN8``0``#/SBYH`!0``,_.+11@SVXM5'#/&,]8E_/S\_('BS\_/SXK8
MBLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#
M```S_8ML)!B*SB7_````@>+_````BYL`!@``,_N+F0`'```S^XN8``0``#/[
MBYH`!0``,_N+11`SVXM5%#/',]<E_/S\_('BS\_/SXK8BLS!R@2+JP````"*
MVC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_
M````@>+_````BYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`!0``,_.+10@S
MVXM5##/&,]8E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*
MSL'H$(NK``$``#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_````BYL`
M!@``,_N+F0`'```S^XN8``0``#/[BYH`!0``,_N+10`SVXM5!#/',]<E_/S\
M_('BS\_/SXK8BLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK``$``#/U
MBMS!ZA"+J0`#```S]8ML)!B*SB7_````@>+_````BYL`!@``,_.+F0`'```S
M\XN8``0``#/SBYH`!0``,_.+5"04T<Z+QS/^@>>JJJJJ,\<S]\'`%XOX,\8E
M_`/\`S/X,_#!QPJ+QS/^@><S,S,S,\<S]\'&$HO^,_"!Y@\`\/\S_C/&P<<,
MB_<S^('G\/#P\#/W,\?!R`2)`HER!%]>6UW#55-65XM$)!0SR8LPBUPD','&
M`XMX!,''`X/[`(ML)!@/A+4'``"+10`SVXM5!#/&,]8E_/S\_('BS\_/SXK8
MBLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#
M```S_8ML)!B*SB7_````@>+_````BYL`!@``,_N+F0`'```S^XN8``0``#/[
MBYH`!0``,_N+10@SVXM5##/',]<E_/S\_('BS\_/SXK8BLS!R@2+JP````"*
MVC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_
M````@>+_````BYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`!0``,_.+11`S
MVXM5%#/&,]8E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*
MSL'H$(NK``$``#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_````BYL`
M!@``,_N+F0`'```S^XN8``0``#/[BYH`!0``,_N+11@SVXM5'#/',]<E_/S\
M_('BS\_/SXK8BLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK``$``#/U
MBMS!ZA"+J0`#```S]8ML)!B*SB7_````@>+_````BYL`!@``,_.+F0`'```S
M\XN8``0``#/SBYH`!0``,_.+12`SVXM5)#/&,]8E_/S\_('BS\_/SXK8BLS!
MR@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#```S
M_8ML)!B*SB7_````@>+_````BYL`!@``,_N+F0`'```S^XN8``0``#/[BYH`
M!0``,_N+12@SVXM5+#/',]<E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/U
MBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_````
M@>+_````BYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`!0``,_.+13`SVXM5
M-#/&,]8E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H
M$(NK``$``#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_````BYL`!@``
M,_N+F0`'```S^XN8``0``#/[BYH`!0``,_N+13@SVXM5/#/',]<E_/S\_('B
MS\_/SXK8BLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!
MZA"+J0`#```S]8ML)!B*SB7_````@>+_````BYL`!@``,_.+F0`'```S\XN8
M``0``#/SBYH`!0``,_.+14`SVXM51#/&,]8E_/S\_('BS\_/SXK8BLS!R@2+
MJP````"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#```S_8ML
M)!B*SB7_````@>+_````BYL`!@``,_N+F0`'```S^XN8``0``#/[BYH`!0``
M,_N+14@SVXM53#/',]<E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/UBZD`
M`@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_````@>+_
M````BYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`!0``,_.+15`SVXM55#/&
M,]8E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK
M``$``#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_````BYL`!@``,_N+
MF0`'```S^XN8``0``#/[BYH`!0``,_N+15@SVXM57#/',]<E_/S\_('BS\_/
MSXK8BLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+
MJ0`#```S]8ML)!B*SB7_````@>+_````BYL`!@``,_.+F0`'```S\XN8``0`
M`#/SBYH`!0``,_.+16`SVXM59#/&,]8E_/S\_('BS\_/SXK8BLS!R@2+JP``
M``"*VC/]BZD``@``,_V*SL'H$(NK``$``#/]BMS!ZA"+J0`#```S_8ML)!B*
MSB7_````@>+_````BYL`!@``,_N+F0`'```S^XN8``0``#/[BYH`!0``,_N+
M16@SVXM5;#/',]<E_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/UBZD``@``
M,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#```S]8ML)!B*SB7_````@>+_````
MBYL`!@``,_.+F0`'```S\XN8``0``#/SBYH`!0``,_.+17`SVXM5=#/&,]8E
M_/S\_('BS\_/SXK8BLS!R@2+JP````"*VC/]BZD``@``,_V*SL'H$(NK``$`
M`#/]BMS!ZA"+J0`#```S_8ML)!B*SB7_````@>+_````BYL`!@``,_N+F0`'
M```S^XN8``0``#/[BYH`!0``,_N+17@SVXM5?#/',]<E_/S\_('BS\_/SXK8
MBLS!R@2+JP````"*VC/UBZD``@``,_6*SL'H$(NK``$``#/UBMS!ZA"+J0`#
M```S]8ML)!B*SB7_````@>+_````BYL`!@``,_.+F0`'```S\XN8``0``#/S
MBYH`!0``,_/IL`<``(M%>#/;BU5\,\8SUB7\_/S\@>+/S\_/BMB*S,'*!(NK
M`````(K:,_V+J0`"```S_8K.P>@0BZL``0``,_V*W,'J$(NI``,``#/]BVPD
M&(K.)?\```"!XO\```"+FP`&```S^XN9``<``#/[BY@`!```,_N+F@`%```S
M^XM%<#/;BU5T,\<SUR7\_/S\@>+/S\_/BMB*S,'*!(NK`````(K:,_6+J0`"
M```S]8K.P>@0BZL``0``,_6*W,'J$(NI``,``#/UBVPD&(K.)?\```"!XO\`
M``"+FP`&```S\XN9``<``#/SBY@`!```,_.+F@`%```S\XM%:#/;BU5L,\8S
MUB7\_/S\@>+/S\_/BMB*S,'*!(NK`````(K:,_V+J0`"```S_8K.P>@0BZL`
M`0``,_V*W,'J$(NI``,``#/]BVPD&(K.)?\```"!XO\```"+FP`&```S^XN9
M``<``#/[BY@`!```,_N+F@`%```S^XM%8#/;BU5D,\<SUR7\_/S\@>+/S\_/
MBMB*S,'*!(NK`````(K:,_6+J0`"```S]8K.P>@0BZL``0``,_6*W,'J$(NI
M``,``#/UBVPD&(K.)?\```"!XO\```"+FP`&```S\XN9``<``#/SBY@`!```
M,_.+F@`%```S\XM%6#/;BU5<,\8SUB7\_/S\@>+/S\_/BMB*S,'*!(NK````
M`(K:,_V+J0`"```S_8K.P>@0BZL``0``,_V*W,'J$(NI``,``#/]BVPD&(K.
M)?\```"!XO\```"+FP`&```S^XN9``<``#/[BY@`!```,_N+F@`%```S^XM%
M4#/;BU54,\<SUR7\_/S\@>+/S\_/BMB*S,'*!(NK`````(K:,_6+J0`"```S
M]8K.P>@0BZL``0``,_6*W,'J$(NI``,``#/UBVPD&(K.)?\```"!XO\```"+
MFP`&```S\XN9``<``#/SBY@`!```,_.+F@`%```S\XM%2#/;BU5,,\8SUB7\
M_/S\@>+/S\_/BMB*S,'*!(NK`````(K:,_V+J0`"```S_8K.P>@0BZL``0``
M,_V*W,'J$(NI``,``#/]BVPD&(K.)?\```"!XO\```"+FP`&```S^XN9``<`
M`#/[BY@`!```,_N+F@`%```S^XM%0#/;BU5$,\<SUR7\_/S\@>+/S\_/BMB*
MS,'*!(NK`````(K:,_6+J0`"```S]8K.P>@0BZL``0``,_6*W,'J$(NI``,`
M`#/UBVPD&(K.)?\```"!XO\```"+FP`&```S\XN9``<``#/SBY@`!```,_.+
MF@`%```S\XM%.#/;BU4\,\8SUB7\_/S\@>+/S\_/BMB*S,'*!(NK`````(K:
M,_V+J0`"```S_8K.P>@0BZL``0``,_V*W,'J$(NI``,``#/]BVPD&(K.)?\`
M``"!XO\```"+FP`&```S^XN9``<``#/[BY@`!```,_N+F@`%```S^XM%,#/;
MBU4T,\<SUR7\_/S\@>+/S\_/BMB*S,'*!(NK`````(K:,_6+J0`"```S]8K.
MP>@0BZL``0``,_6*W,'J$(NI``,``#/UBVPD&(K.)?\```"!XO\```"+FP`&
M```S\XN9``<``#/SBY@`!```,_.+F@`%```S\XM%*#/;BU4L,\8SUB7\_/S\
M@>+/S\_/BMB*S,'*!(NK`````(K:,_V+J0`"```S_8K.P>@0BZL``0``,_V*
MW,'J$(NI``,``#/]BVPD&(K.)?\```"!XO\```"+FP`&```S^XN9``<``#/[
MBY@`!```,_N+F@`%```S^XM%(#/;BU4D,\<SUR7\_/S\@>+/S\_/BMB*S,'*
M!(NK`````(K:,_6+J0`"```S]8K.P>@0BZL``0``,_6*W,'J$(NI``,``#/U
MBVPD&(K.)?\```"!XO\```"+FP`&```S\XN9``<``#/SBY@`!```,_.+F@`%
M```S\XM%&#/;BU4<,\8SUB7\_/S\@>+/S\_/BMB*S,'*!(NK`````(K:,_V+
MJ0`"```S_8K.P>@0BZL``0``,_V*W,'J$(NI``,``#/]BVPD&(K.)?\```"!
MXO\```"+FP`&```S^XN9``<``#/[BY@`!```,_N+F@`%```S^XM%$#/;BU44
M,\<SUR7\_/S\@>+/S\_/BMB*S,'*!(NK`````(K:,_6+J0`"```S]8K.P>@0
MBZL``0``,_6*W,'J$(NI``,``#/UBVPD&(K.)?\```"!XO\```"+FP`&```S
M\XN9``<``#/SBY@`!```,_.+F@`%```S\XM%"#/;BU4,,\8SUB7\_/S\@>+/
MS\_/BMB*S,'*!(NK`````(K:,_V+J0`"```S_8K.P>@0BZL``0``,_V*W,'J
M$(NI``,``#/]BVPD&(K.)?\```"!XO\```"+FP`&```S^XN9``<``#/[BY@`
M!```,_N+F@`%```S^XM%`#/;BU4$,\<SUR7\_/S\@>+/S\_/BMB*S,'*!(NK
M`````(K:,_6+J0`"```S]8K.P>@0BZL``0``,_6*W,'J$(NI``,``#/UBVPD
M&(K.)?\```"!XO\```"+FP`&```S\XN9``<``#/SBY@`!```,_.+F@`%```S
M\\'/`XM$)!3!S@.).(EP!%]>6UW#55-65XM<)!2+.XMS!,''!(O7,_Z!Y_#P
M\/`SUS/WP<84B_XS\H'F#P#P_S/^,];!QPZ+]S/Z@><S,S,S,_<SU\'"%HOZ
M,]:!XOP#_`,S^C/RP<<)B]<S_H'GJJJJJC/7,_?!R@/!S@*)<P2+1"08B1.+
M?"0<BW0D(&H!4%/HW^___VH`5U/HUN___VH!5E/HS>___XL[@\0DBW,$P<8"
MP<<#B\<S_H'GJJJJJC/',_?!P!>+^#/&)?P#_`,S^#/PP<<*B\<S_H'G,S,S
M,S/',_?!QA*+_C/P@>8/`/#_,_XSQL''#(OW,_B!Y_#P\/`S]S/'P<@$B0.)
M<P1?7EM=PU535E>+7"04BSN+<P3!QP2+US/^@>?P\/#P,]<S]\'&%(O^,_*!
MY@\`\/\S_C/6P<<.B_<S^H'G,S,S,S/W,]?!PA:+^C/6@>+\`_P#,_HS\L''
M"8O7,_Z!YZJJJJHSUS/WP<H#P<X"B7,$BW0D&(D3BWPD'(M$)"!J`%!3Z-_N
M__]J`5=3Z-;N__]J`%93Z,WN__^+.X/$)(MS!,'&`L''`XO',_Z!YZJJJJHS
MQS/WP<`7B_@SQB7\`_P#,_@S\,''"HO',_Z!YS,S,S,SQS/WP<82B_XS\('F
M#P#P_S/^,\;!QPR+]S/X@>?P\/#P,_<SQ\'(!(D#B7,$7UY;7<.4````!P``
M``8`G@````<````&`*L````'````!@"X````!P````8`T0````<````&`-D`
M```'````!@#A````!P````8`Z0````<````&``\!```'````!@`9`0``!P``
M``8`)@$```<````&`#,!```'````!@!,`0``!P````8`5`$```<````&`%P!
M```'````!@!D`0``!P````8`B@$```<````&`)0!```'````!@"A`0``!P``
M``8`K@$```<````&`,<!```'````!@#/`0``!P````8`UP$```<````&`-\!
M```'````!@`%`@``!P````8`#P(```<````&`!P"```'````!@`I`@``!P``
M``8`0@(```<````&`$H"```'````!@!2`@``!P````8`6@(```<````&`(`"
M```'````!@"*`@``!P````8`EP(```<````&`*0"```'````!@"]`@``!P``
M``8`Q0(```<````&`,T"```'````!@#5`@``!P````8`^P(```<````&``4#
M```'````!@`2`P``!P````8`'P,```<````&`#@#```'````!@!``P``!P``
M``8`2`,```<````&`%`#```'````!@!V`P``!P````8`@`,```<````&`(T#
M```'````!@":`P``!P````8`LP,```<````&`+L#```'````!@##`P``!P``
M``8`RP,```<````&`/$#```'````!@#[`P``!P````8`"`0```<````&`!4$
M```'````!@`N!```!P````8`-@0```<````&`#X$```'````!@!&!```!P``
M``8`;`0```<````&`'8$```'````!@"#!```!P````8`D`0```<````&`*D$
M```'````!@"Q!```!P````8`N00```<````&`,$$```'````!@#G!```!P``
M``8`\00```<````&`/X$```'````!@`+!0``!P````8`)`4```<````&`"P%
M```'````!@`T!0``!P````8`/`4```<````&`&(%```'````!@!L!0``!P``
M``8`>04```<````&`(8%```'````!@"?!0``!P````8`IP4```<````&`*\%
M```'````!@"W!0``!P````8`W04```<````&`.<%```'````!@#T!0``!P``
M``8``08```<````&`!H&```'````!@`B!@``!P````8`*@8```<````&`#(&
M```'````!@!8!@``!P````8`8@8```<````&`&\&```'````!@!\!@``!P``
M``8`E08```<````&`)T&```'````!@"E!@``!P````8`K08```<````&`-,&
M```'````!@#=!@``!P````8`Z@8```<````&`/<&```'````!@`0!P``!P``
M``8`&`<```<````&`"`'```'````!@`H!P``!P````8`3@<```<````&`%@'
M```'````!@!E!P``!P````8`<@<```<````&`(L'```'````!@"3!P``!P``
M``8`FP<```<````&`*,'```'````!@#)!P``!P````8`TP<```<````&`.`'
M```'````!@#M!P``!P````8`!@@```<````&``X(```'````!@`6"```!P``
M``8`'@@```<````&`$D(```'````!@!3"```!P````8`8`@```<````&`&T(
M```'````!@"&"```!P````8`C@@```<````&`)8(```'````!@">"```!P``
M``8`Q`@```<````&`,X(```'````!@#;"```!P````8`Z`@```<````&``$)
M```'````!@`)"0``!P````8`$0D```<````&`!D)```'````!@`_"0``!P``
M``8`20D```<````&`%8)```'````!@!C"0``!P````8`?`D```<````&`(0)
M```'````!@","0``!P````8`E`D```<````&`+H)```'````!@#$"0``!P``
M``8`T0D```<````&`-X)```'````!@#W"0``!P````8`_PD```<````&``<*
M```'````!@`/"@``!P````8`-0H```<````&`#\*```'````!@!,"@``!P``
M``8`60H```<````&`'(*```'````!@!Z"@``!P````8`@@H```<````&`(H*
M```'````!@"P"@``!P````8`N@H```<````&`,<*```'````!@#4"@``!P``
M``8`[0H```<````&`/4*```'````!@#]"@``!P````8`!0L```<````&`"L+
M```'````!@`U"P``!P````8`0@L```<````&`$\+```'````!@!H"P``!P``
M``8`<`L```<````&`'@+```'````!@"`"P``!P````8`I@L```<````&`+`+
M```'````!@"]"P``!P````8`R@L```<````&`.,+```'````!@#K"P``!P``
M``8`\PL```<````&`/L+```'````!@`A#```!P````8`*PP```<````&`#@,
M```'````!@!%#```!P````8`7@P```<````&`&8,```'````!@!N#```!P``
M``8`=@P```<````&`)P,```'````!@"F#```!P````8`LPP```<````&`,`,
M```'````!@#9#```!P````8`X0P```<````&`.D,```'````!@#Q#```!P``
M``8`%PT```<````&`"$-```'````!@`N#0``!P````8`.PT```<````&`%0-
M```'````!@!<#0``!P````8`9`T```<````&`&P-```'````!@"2#0``!P``
M``8`G`T```<````&`*D-```'````!@"V#0``!P````8`SPT```<````&`-<-
M```'````!@#?#0``!P````8`YPT```<````&``T.```'````!@`7#@``!P``
M``8`)`X```<````&`#$.```'````!@!*#@``!P````8`4@X```<````&`%H.
M```'````!@!B#@``!P````8`B`X```<````&`)(.```'````!@"?#@``!P``
M``8`K`X```<````&`,4.```'````!@#-#@``!P````8`U0X```<````&`-T.
M```'````!@`##P``!P````8`#0\```<````&`!H/```'````!@`G#P``!P``
M``8`0`\```<````&`$@/```'````!@!0#P``!P````8`6`\```<````&`'X/
M```'````!@"(#P``!P````8`E0\```<````&`*(/```'````!@"[#P``!P``
M``8`PP\```<````&`,L/```'````!@#3#P``!P````8`@Q````<````&`(T0
M```'````!@":$```!P````8`IQ````<````&`,`0```'````!@#($```!P``
M``8`T!````<````&`-@0```'````!@#^$```!P````8`"!$```<````&`!41
M```'````!@`B$0``!P````8`.Q$```<````&`$,1```'````!@!+$0``!P``
M``8`4Q$```<````&`'D1```'````!@"#$0``!P````8`D!$```<````&`)T1
M```'````!@"V$0``!P````8`OA$```<````&`,81```'````!@#.$0``!P``
M``8`]!$```<````&`/X1```'````!@`+$@``!P````8`&!(```<````&`#$2
M```'````!@`Y$@``!P````8`01(```<````&`$D2```'````!@!O$@``!P``
M``8`>1(```<````&`(82```'````!@"3$@``!P````8`K!(```<````&`+02
M```'````!@"\$@``!P````8`Q!(```<````&`.H2```'````!@#T$@``!P``
M``8``1,```<````&``X3```'````!@`G$P``!P````8`+Q,```<````&`#<3
M```'````!@`_$P``!P````8`91,```<````&`&\3```'````!@!\$P``!P``
M``8`B1,```<````&`*(3```'````!@"J$P``!P````8`LA,```<````&`+H3
M```'````!@#@$P``!P````8`ZA,```<````&`/<3```'````!@`$%```!P``
M``8`'10```<````&`"44```'````!@`M%```!P````8`-10```<````&`%L4
M```'````!@!E%```!P````8`<A0```<````&`'\4```'````!@"8%```!P``
M``8`H!0```<````&`*@4```'````!@"P%```!P````8`UA0```<````&`.`4
M```'````!@#M%```!P````8`^A0```<````&`!,5```'````!@`;%0``!P``
M``8`(Q4```<````&`"L5```'````!@!1%0``!P````8`6Q4```<````&`&@5
M```'````!@!U%0``!P````8`CA4```<````&`)85```'````!@">%0``!P``
M``8`IA4```<````&`,P5```'````!@#6%0``!P````8`XQ4```<````&`/`5
M```'````!@`)%@``!P````8`$18```<````&`!D6```'````!@`A%@``!P``
M``8`1Q8```<````&`%$6```'````!@!>%@``!P````8`:Q8```<````&`(06
M```'````!@",%@``!P````8`E!8```<````&`)P6```'````!@#"%@``!P``
M``8`S!8```<````&`-D6```'````!@#F%@``!P````8`_Q8```<````&``<7
M```'````!@`/%P``!P````8`%Q<```<````&`#T7```'````!@!'%P``!P``
M``8`5!<```<````&`&$7```'````!@!Z%P``!P````8`@A<```<````&`(H7
M```'````!@"2%P``!P````8`N!<```<````&`,(7```'````!@#/%P``!P``
M``8`W!<```<````&`/47```'````!@#]%P``!P````8`!1@```<````&``T8
M```'````!@`X&```!P````8`0A@```<````&`$\8```'````!@!<&```!P``
M``8`=1@```<````&`'T8```'````!@"%&```!P````8`C1@```<````&`+,8
M```'````!@"]&```!P````8`RA@```<````&`-<8```'````!@#P&```!P``
M``8`^!@```<````&```9```'````!@`(&0``!P````8`+AD```<````&`#@9
M```'````!@!%&0``!P````8`4AD```<````&`&L9```'````!@!S&0``!P``
M``8`>QD```<````&`(,9```'````!@"I&0``!P````8`LQD```<````&`,`9
M```'````!@#-&0``!P````8`YAD```<````&`.X9```'````!@#V&0``!P``
M``8`_AD```<````&`"0:```'````!@`N&@``!P````8`.QH```<````&`$@:
M```'````!@!A&@``!P````8`:1H```<````&`'$:```'````!@!Y&@``!P``
M``8`GQH```<````&`*D:```'````!@"V&@``!P````8`PQH```<````&`-P:
M```'````!@#D&@``!P````8`[!H```<````&`/0:```'````!@`:&P``!P``
M``8`)!L```<````&`#$;```'````!@`^&P``!P````8`5QL```<````&`%\;
M```'````!@!G&P``!P````8`;QL```<````&`)4;```'````!@"?&P``!P``
M``8`K!L```<````&`+D;```'````!@#2&P``!P````8`VAL```<````&`.(;
M```'````!@#J&P``!P````8`$!P```<````&`!H<```'````!@`G'```!P``
M``8`-!P```<````&`$T<```'````!@!5'```!P````8`71P```<````&`&4<
M```'````!@"+'```!P````8`E1P```<````&`*(<```'````!@"O'```!P``
M``8`R!P```<````&`-`<```'````!@#8'```!P````8`X!P```<````&``8=
M```'````!@`0'0``!P````8`'1T```<````&`"H=```'````!@!#'0``!P``
M``8`2QT```<````&`%,=```'````!@!;'0``!P````8`@1T```<````&`(L=
M```'````!@"8'0``!P````8`I1T```<````&`+X=```'````!@#&'0``!P``
M``8`SAT```<````&`-8=```'````!@#\'0``!P````8`!AX```<````&`!,>
M```'````!@`@'@``!P````8`.1X```<````&`$$>```'````!@!)'@``!P``
M``8`41X```<````&`'<>```'````!@"!'@``!P````8`CAX```<````&`)L>
M```'````!@"T'@``!P````8`O!X```<````&`,0>```'````!@#,'@``!P``
M``8`\AX```<````&`/P>```'````!@`)'P``!P````8`%A\```<````&`"\?
M```'````!@`W'P``!P````8`/Q\```<````&`$<?```'````!@!M'P``!P``
M``8`=Q\```<````&`(0?```'````!@"1'P``!P````8`JA\```<````&`+(?
M```'````!@"Z'P``!P````8`PA\```<````&`"YF:6QE`````````/[_``!G
M`BY<8W)Y<'1O7&1E<UQA<VU<9"UW:6XS,BYA<VT``````````"YT97AT````
M``````$````#`=PA`````@```````````````"YD871A``````````(````#
M`0`````````````````````````````$```````````````"```````1````
M``````$`(``"```````>````/1````$`(``"```````L````W!\```$`(``"
M```````Z````W"````$`(``"`$@```!?9&5S7U-0=')A;G,`7V1E<U]E;F-R
M>7!T`%]D97-?96YC<GEP=#(`7V1E<U]E;F-R>7!T,P!?9&5S7V1E8W)Y<'0S
!````
`
end

View file

@ -1,308 +0,0 @@
#!/usr/local/bin/perl
#
# The inner loop instruction sequence and the IP/FP modifications are from
# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
#
$prog="des-som2.pl";
# base code is in microsft
# op dest, source
# format.
#
require "desboth.pl";
if ( ($ARGV[0] eq "elf"))
{ require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "a.out"))
{ $aout=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "sol"))
{ $sol=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "cpp"))
{ $cpp=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "win32"))
{ require "x86ms.pl"; }
else
{
print STDERR <<"EOF";
Pick one target type from
elf - linux, FreeBSD etc
a.out - old linux
sol - x86 solaris
cpp - format so x86unix.cpp can be used
win32 - Windows 95/Windows NT
EOF
exit(1);
}
&comment("Don't even think of reading this code");
&comment("It was automatically generated by $prog");
&comment("Which is a perl program used to generate the x86 assember for");
&comment("any of elf, a.out, Win32, or Solaris");
&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");
&comment("eric <eay\@cryptsoft.com>");
&comment("The inner loop instruction sequence and the IP/FP modifications");
&comment("are from Svend Olaf Mikkelsen <svolaf\@inet.uni-c.dk>");
&comment("");
&file("dx86xxxx");
$L="edi";
$R="esi";
&des_encrypt("des_encrypt",1);
&des_encrypt("des_encrypt2",0);
&des_encrypt3("des_encrypt3",1);
&des_encrypt3("des_decrypt3",0);
&file_end();
sub des_encrypt
{
local($name,$do_ip)=@_;
&function_begin($name,3,"EXTRN _des_SPtrans:DWORD");
&comment("");
&comment("Load the 2 words");
&mov("eax",&wparam(0));
&mov($R,&DWP(0,"eax","",0));
&mov($L,&DWP(4,"eax","",0));
if ($do_ip)
{
&comment("");
&comment("IP");
&IP_new($R,$L,"eax",3);
# &comment("");
# &comment("fixup rotate");
# &rotl($R,3);
# &rotl($L,3);
}
else
{
&comment("");
&comment("fixup rotate");
&rotl($R,3);
&rotl($L,3);
}
&comment("");
&comment("load counter, key_schedule and enc flag");
# encrypting part
$ks="ebp";
# &xor( "ebx", "ebx" );
&mov("eax",&wparam(2)); # get encrypt flag
&xor( "ecx", "ecx" );
&cmp("eax","0");
&mov( $ks, &wparam(1) );
&je(&label("start_decrypt"));
for ($i=0; $i<16; $i+=2)
{
&comment("");
&comment("Round $i");
&D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
&comment("");
&comment("Round ".sprintf("%d",$i+1));
&D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
}
&jmp(&label("end"));
&set_label("start_decrypt");
for ($i=15; $i>0; $i-=2)
{
&comment("");
&comment("Round $i");
&D_ENCRYPT(15-$i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
&comment("");
&comment("Round ".sprintf("%d",$i-1));
&D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
}
&set_label("end");
if ($do_ip)
{
# &comment("");
# &comment("Fixup");
# &rotr($L,3); # r
# &rotr($R,3); # l
&comment("");
&comment("FP");
&FP_new($R,$L,"eax",3);
}
else
{
&comment("");
&comment("Fixup");
&rotr($L,3); # r
&rotr($R,3); # l
}
&mov("eax",&wparam(0));
&mov(&DWP(0,"eax","",0),$L);
&mov(&DWP(4,"eax","",0),$R);
&function_end($name);
}
sub D_ENCRYPT
{
local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;
&mov( $u, &DWP(&n2a($S*4),$ks,"",0));
&xor( $tmp1, $tmp1);
&mov( $t, &DWP(&n2a(($S+1)*4),$ks,"",0));
&xor( $u, $R);
&xor( $t, $R);
&and( $u, "0xfcfcfcfc" );
&and( $t, "0xcfcfcfcf" );
&movb( &LB($tmp1), &LB($u) );
&movb( &LB($tmp2), &HB($u) );
&rotr( $t, 4 );
&mov( $ks, &DWP(" $desSP",$tmp1,"",0));
&movb( &LB($tmp1), &LB($t) );
&xor( $L, $ks);
&mov( $ks, &DWP("0x200+$desSP",$tmp2,"",0));
&xor( $L, $ks); ######
&movb( &LB($tmp2), &HB($t) );
&shr( $u, 16);
&mov( $ks, &DWP("0x100+$desSP",$tmp1,"",0));
&xor( $L, $ks); ######
&movb( &LB($tmp1), &HB($u) );
&shr( $t, 16);
&mov( $ks, &DWP("0x300+$desSP",$tmp2,"",0));
&xor( $L, $ks);
&mov( $ks, &DWP(24,"esp","",0)); ####
&movb( &LB($tmp2), &HB($t) );
&and( $u, "0xff" );
&and( $t, "0xff" );
&mov( $tmp1, &DWP("0x600+$desSP",$tmp1,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x700+$desSP",$tmp2,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x400+$desSP",$u,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x500+$desSP",$t,"",0));
&xor( $L, $tmp1);
}
sub PERM_OP
{
local($a,$b,$tt,$shift,$mask)=@_;
&mov( $tt, $a );
&shr( $tt, $shift );
&xor( $tt, $b );
&and( $tt, $mask );
&xor( $b, $tt );
&shl( $tt, $shift );
&xor( $a, $tt );
}
sub IP
{
local($l,$r,$tt)=@_;
&PERM_OP($r,$l,$tt, 4,"0x0f0f0f0f");
&PERM_OP($l,$r,$tt,16,"0x0000ffff");
&PERM_OP($r,$l,$tt, 2,"0x33333333");
&PERM_OP($l,$r,$tt, 8,"0x00ff00ff");
&PERM_OP($r,$l,$tt, 1,"0x55555555");
}
sub FP
{
local($l,$r,$tt)=@_;
&PERM_OP($l,$r,$tt, 1,"0x55555555");
&PERM_OP($r,$l,$tt, 8,"0x00ff00ff");
&PERM_OP($l,$r,$tt, 2,"0x33333333");
&PERM_OP($r,$l,$tt,16,"0x0000ffff");
&PERM_OP($l,$r,$tt, 4,"0x0f0f0f0f");
}
sub n2a
{
sprintf("%d",$_[0]);
}
# now has a side affect of rotating $a by $shift
sub R_PERM_OP
{
local($a,$b,$tt,$shift,$mask,$last)=@_;
&rotl( $a, $shift ) if ($shift != 0);
&mov( $tt, $b );
&xor( $tt, $a );
&and( $tt, $mask );
if ($last eq $b)
{
&xor( $a, $tt );
&xor( $b, $tt );
}
else
{
&xor( $b, $tt );
&xor( $a, $tt );
}
&comment("");
}
sub IP_new
{
local($l,$r,$tt,$lr)=@_;
&R_PERM_OP($l,$r,$tt, 4,"0xf0f0f0f0",$l);
&R_PERM_OP($r,$l,$tt,20,"0xfff0000f",$l);
&R_PERM_OP($r,$l,$tt,14,"0x33333333",$r);
&R_PERM_OP($l,$r,$tt,22,"0x03fc03fc",$r);
&R_PERM_OP($l,$r,$tt, 9,"0xaaaaaaaa",$r);
if ($lr != 3)
{
if (($lr-3) < 0)
{ &rotr($l, 3-$lr); }
else { &rotl($l, $lr-3); }
}
if ($lr != 2)
{
if (($lr-2) < 0)
{ &rotr($r, 2-$lr); }
else { &rotl($r, $lr-2); }
}
}
sub FP_new
{
local($r,$l,$tt,$lr)=@_;
if ($lr != 2)
{
if (($lr-2) < 0)
{ &rotl($r, 2-$lr); }
else { &rotr($r, $lr-2); }
}
if ($lr != 3)
{
if (($lr-3) < 0)
{ &rotl($l, 3-$lr); }
else { &rotr($l, $lr-3); }
}
&R_PERM_OP($l,$r,$tt, 0,"0xaaaaaaaa",$r);
&R_PERM_OP($l,$r,$tt,23,"0x03fc03fc",$r);
&R_PERM_OP($l,$r,$tt,10,"0x33333333",$l);
&R_PERM_OP($r,$l,$tt,18,"0xfff0000f",$l);
&R_PERM_OP($r,$l,$tt,12,"0xf0f0f0f0",$r);
&rotr($l , 4);
}

View file

@ -1,266 +0,0 @@
#!/usr/local/bin/perl
#
# The inner loop instruction sequence and the IP/FP modifications are from
# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
#
$prog="des-som3.pl";
# base code is in microsft
# op dest, source
# format.
#
require "desboth.pl";
if ( ($ARGV[0] eq "elf"))
{ require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "a.out"))
{ $aout=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "sol"))
{ $sol=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "cpp"))
{ $cpp=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "win32"))
{ require "x86ms.pl"; }
else
{
print STDERR <<"EOF";
Pick one target type from
elf - linux, FreeBSD etc
a.out - old linux
sol - x86 solaris
cpp - format so x86unix.cpp can be used
win32 - Windows 95/Windows NT
EOF
exit(1);
}
&comment("Don't even think of reading this code");
&comment("It was automatically generated by $prog");
&comment("Which is a perl program used to generate the x86 assember for");
&comment("any of elf, a.out, Win32, or Solaris");
&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");
&comment("eric <eay\@cryptsoft.com>");
&comment("The inner loop instruction sequence and the IP/FP modifications");
&comment("are from Svend Olaf Mikkelsen <svolaf\@inet.uni-c.dk>");
&comment("");
&file("dx86xxxx");
$L="edi";
$R="esi";
&des_encrypt("des_encrypt",1);
&des_encrypt("des_encrypt2",0);
&des_encrypt3("des_encrypt3",1);
&des_encrypt3("des_decrypt3",0);
&file_end();
sub des_encrypt
{
local($name,$do_ip)=@_;
&function_begin($name,3,EXTRN _des_SPtrans:DWORD");
&comment("");
&comment("Load the 2 words");
$ks="ebp";
if ($do_ip)
{
&mov($R,&wparam(0));
&xor( "ecx", "ecx" );
&mov("eax",&DWP(0,$R,"",0));
&mov("ebx",&wparam(2)); # get encrypt flag
&mov($L,&DWP(4,$R,"",0));
&comment("");
&comment("IP");
&IP_new("eax",$L,$R,3);
}
else
{
&mov("eax",&wparam(0));
&xor( "ecx", "ecx" );
&mov($R,&DWP(0,"eax","",0));
&mov("ebx",&wparam(2)); # get encrypt flag
&rotl($R,3);
&mov($L,&DWP(4,"eax","",0));
&rotl($L,3);
}
&cmp("ebx","0");
&mov( $ks, &wparam(1) );
&je(&label("start_decrypt"));
for ($i=0; $i<16; $i+=2)
{
&comment("");
&comment("Round $i");
&D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
&comment("");
&comment("Round ".sprintf("%d",$i+1));
&D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
}
&jmp(&label("end"));
&set_label("start_decrypt");
for ($i=15; $i>0; $i-=2)
{
&comment("");
&comment("Round $i");
&D_ENCRYPT(15-$i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
&comment("");
&comment("Round ".sprintf("%d",$i-1));
&D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
}
&set_label("end");
if ($do_ip)
{
&comment("");
&comment("FP");
&mov("edx",&wparam(0));
&FP_new($L,$R,"eax",3);
&mov(&DWP(0,"edx","",0),"eax");
&mov(&DWP(4,"edx","",0),$R);
}
else
{
&comment("");
&comment("Fixup");
&rotr($L,3); # r
&mov("eax",&wparam(0));
&rotr($R,3); # l
&mov(&DWP(0,"eax","",0),$L);
&mov(&DWP(4,"eax","",0),$R);
}
&function_end($name);
}
sub D_ENCRYPT
{
local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;
&mov( $u, &DWP(&n2a($S*4),$ks,"",0));
&xor( $tmp1, $tmp1);
&mov( $t, &DWP(&n2a(($S+1)*4),$ks,"",0));
&xor( $u, $R);
&xor( $t, $R);
&and( $u, "0xfcfcfcfc" );
&and( $t, "0xcfcfcfcf" );
&movb( &LB($tmp1), &LB($u) );
&movb( &LB($tmp2), &HB($u) );
&rotr( $t, 4 );
&mov( $ks, &DWP(" $desSP",$tmp1,"",0));
&movb( &LB($tmp1), &LB($t) );
&xor( $L, $ks);
&mov( $ks, &DWP("0x200+$desSP",$tmp2,"",0));
&xor( $L, $ks); ######
&movb( &LB($tmp2), &HB($t) );
&shr( $u, 16);
&mov( $ks, &DWP("0x100+$desSP",$tmp1,"",0));
&xor( $L, $ks); ######
&movb( &LB($tmp1), &HB($u) );
&shr( $t, 16);
&mov( $ks, &DWP("0x300+$desSP",$tmp2,"",0));
&xor( $L, $ks);
&mov( $ks, &DWP(24,"esp","",0)); ####
&movb( &LB($tmp2), &HB($t) );
&and( $u, "0xff" );
&and( $t, "0xff" );
&mov( $tmp1, &DWP("0x600+$desSP",$tmp1,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x700+$desSP",$tmp2,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x400+$desSP",$u,"",0));
&xor( $L, $tmp1);
&mov( $tmp1, &DWP("0x500+$desSP",$t,"",0));
&xor( $L, $tmp1);
}
sub n2a
{
sprintf("%d",$_[0]);
}
# now has a side affect of rotating $a by $shift
sub R_PERM_OP
{
local($a,$b,$tt,$shift,$mask,$last)=@_;
&rotl( $a, $shift ) if ($shift != 0);
&mov( $tt, $a );
&xor( $a, $b );
&and( $a, $mask );
if ($notlast eq $b)
{
&xor( $b, $a );
&xor( $tt, $a );
}
else
{
&xor( $tt, $a );
&xor( $b, $a );
}
&comment("");
}
sub IP_new
{
local($l,$r,$tt,$lr)=@_;
&R_PERM_OP($l,$r,$tt, 4,"0xf0f0f0f0",$l);
&R_PERM_OP($r,$tt,$l,20,"0xfff0000f",$l);
&R_PERM_OP($l,$tt,$r,14,"0x33333333",$r);
&R_PERM_OP($tt,$r,$l,22,"0x03fc03fc",$r);
&R_PERM_OP($l,$r,$tt, 9,"0xaaaaaaaa",$r);
if ($lr != 3)
{
if (($lr-3) < 0)
{ &rotr($tt, 3-$lr); }
else { &rotl($tt, $lr-3); }
}
if ($lr != 2)
{
if (($lr-2) < 0)
{ &rotr($r, 2-$lr); }
else { &rotl($r, $lr-2); }
}
}
sub FP_new
{
local($l,$r,$tt,$lr)=@_;
if ($lr != 2)
{
if (($lr-2) < 0)
{ &rotl($r, 2-$lr); }
else { &rotr($r, $lr-2); }
}
if ($lr != 3)
{
if (($lr-3) < 0)
{ &rotl($l, 3-$lr); }
else { &rotr($l, $lr-3); }
}
&R_PERM_OP($l,$r,$tt, 0,"0xaaaaaaaa",$r);
&R_PERM_OP($tt,$r,$l,23,"0x03fc03fc",$r);
&R_PERM_OP($l,$r,$tt,10,"0x33333333",$l);
&R_PERM_OP($r,$tt,$l,18,"0xfff0000f",$l);
&R_PERM_OP($l,$tt,$r,12,"0xf0f0f0f0",$r);
&rotr($tt , 4);
}

View file

@ -1,210 +0,0 @@
#!/usr/local/bin/perl
$prog="des586.pl";
# base code is in microsft
# op dest, source
# format.
#
# WILL NOT WORK ANYMORE WITH desboth.pl
require "desboth.pl";
if ( ($ARGV[0] eq "elf"))
{ require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "a.out"))
{ $aout=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "sol"))
{ $sol=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "cpp"))
{ $cpp=1; require "x86unix.pl"; }
elsif ( ($ARGV[0] eq "win32"))
{ require "x86ms.pl"; }
else
{
print STDERR <<"EOF";
Pick one target type from
elf - linux, FreeBSD etc
a.out - old linux
sol - x86 solaris
cpp - format so x86unix.cpp can be used
win32 - Windows 95/Windows NT
EOF
exit(1);
}
&comment("Don't even think of reading this code");
&comment("It was automatically generated by $prog");
&comment("Which is a perl program used to generate the x86 assember for");
&comment("any of elf, a.out, Win32, or Solaris");
&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");
&comment("eric <eay\@cryptsoft.com>");
&comment("");
&file("dx86xxxx");
$L="edi";
$R="esi";
&des_encrypt("des_encrypt",1);
&des_encrypt("des_encrypt2",0);
&des_encrypt3("des_encrypt3",1);
&des_encrypt3("des_decrypt3",0);
&file_end();
sub des_encrypt
{
local($name,$do_ip)=@_;
&function_begin($name,3,"EXTRN _des_SPtrans:DWORD");
&comment("");
&comment("Load the 2 words");
&mov("eax",&wparam(0));
&mov($R,&DWP(0,"eax","",0));
&mov($L,&DWP(4,"eax","",0));
if ($do_ip)
{
&comment("");
&comment("IP");
&IP($R,$L,"eax");
}
&comment("");
&comment("fixup rotate");
&rotl($R,3);
&rotl($L,3);
&comment("");
&comment("load counter, key_schedule and enc flag");
# encrypting part
$ks="ebp";
&xor( "ebx", "ebx" );
&mov("eax",&wparam(2)); # get encrypt flag
&xor( "ecx", "ecx" );
&cmp("eax","0");
&mov( $ks, &wparam(1) );
&je(&label("start_decrypt"));
for ($i=0; $i<16; $i+=2)
{
&comment("");
&comment("Round $i");
&D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
&comment("");
&comment("Round ".sprintf("%d",$i+1));
&D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
}
&jmp(&label("end"));
&set_label("start_decrypt");
for ($i=15; $i>0; $i-=2)
{
&comment("");
&comment("Round $i");
&D_ENCRYPT(15-$i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
&comment("");
&comment("Round ".sprintf("%d",$i-1));
&D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");
}
&set_label("end");
&comment("");
&comment("Fixup");
&rotr($L,3); # r
&rotr($R,3); # l
if ($do_ip)
{
&comment("");
&comment("FP");
&FP($R,$L,"eax");
}
&mov("eax",&wparam(0));
&mov(&DWP(0,"eax","",0),$L);
&mov(&DWP(4,"eax","",0),$R);
&function_end($name);
}
sub D_ENCRYPT
{
local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;
&mov( $t, &DWP(&n2a(($S+1)*4),$ks,"",0));
&mov( $u, &DWP(&n2a($S*4),$ks,"",0));
&xor( $t, $R);
&xor( $u, $R);
&rotr( $t, 4 );
&and( $u, "0xfcfcfcfc" );
&and( $t, "0xfcfcfcfc" );
&movb( &LB($tmp1), &LB($u) );
&movb( &LB($tmp2), &HB($u) );
&xor( $L, &DWP(" $desSP",$tmp1,"",0));
&shr( $u, 16);
&xor( $L, &DWP("0x200+$desSP",$tmp2,"",0));
&movb( &LB($tmp1), &LB($u) );
&movb( &LB($tmp2), &HB($u) );
&xor( $L, &DWP("0x400+$desSP",$tmp1,"",0));
&mov( $u, &DWP("0x600+$desSP",$tmp2,"",0));
&movb( &LB($tmp1), &LB($t) );
&movb( &LB($tmp2), &HB($t) );
&xor( $L, &DWP("0x100+$desSP",$tmp1,"",0));
&shr( $t, 16);
&xor( $u, &DWP("0x300+$desSP",$tmp2,"",0));
&movb( &LB($tmp1), &LB($t) );
&movb( &LB($tmp2), &HB($t) );
&xor( $L, &DWP("0x500+$desSP",$tmp1,"",0));
&xor( $u, &DWP("0x700+$desSP",$tmp2,"",0));
&xor( $L, $u);
}
sub PERM_OP
{
local($a,$b,$tt,$shift,$mask)=@_;
&mov( $tt, $a );
&shr( $tt, $shift );
&xor( $tt, $b );
&and( $tt, $mask );
&xor( $b, $tt );
&shl( $tt, $shift );
&xor( $a, $tt );
}
sub IP
{
local($l,$r,$tt)=@_;
&PERM_OP($r,$l,$tt, 4,"0x0f0f0f0f");
&PERM_OP($l,$r,$tt,16,"0x0000ffff");
&PERM_OP($r,$l,$tt, 2,"0x33333333");
&PERM_OP($l,$r,$tt, 8,"0x00ff00ff");
&PERM_OP($r,$l,$tt, 1,"0x55555555");
}
sub FP
{
local($l,$r,$tt)=@_;
&PERM_OP($l,$r,$tt, 1,"0x55555555");
&PERM_OP($r,$l,$tt, 8,"0x00ff00ff");
&PERM_OP($l,$r,$tt, 2,"0x33333333");
&PERM_OP($r,$l,$tt,16,"0x0000ffff");
&PERM_OP($l,$r,$tt, 4,"0x0f0f0f0f");
}
sub n2a
{
sprintf("%d",$_[0]);
}

File diff suppressed because it is too large Load diff

View file

@ -1,6 +0,0 @@
#define abc def
#define dbc: ghi:
abc
dbc: