Remove obsolete files.
This commit is contained in:
parent
b822aa562f
commit
96219db838
10 changed files with 0 additions and 6089 deletions
|
@ -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
|
|
@ -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
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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"
|
|
@ -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
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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
|
@ -1,6 +0,0 @@
|
|||
#define abc def
|
||||
#define dbc: ghi:
|
||||
|
||||
|
||||
abc
|
||||
dbc:
|
Loading…
Reference in a new issue