+++ /dev/null
- ; 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
+++ /dev/null
-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
+++ /dev/null
-#!/usr/local/bin/perl
-#\r
-# The inner loop instruction sequence and the IP/FP modifications are from\r
-# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>\r
-# I've added the stuff needed for crypt() but I've not worried about making\r
-# things perfect.\r
-#\r
-\r
-$prog="crypt.pl";\r
-\r
-# base code is in microsft\r
-# op dest, source\r
-# format.\r
-#\r
-\r
-require "desboth.pl";\r
-\r
-if ( ($ARGV[0] eq "elf"))\r
- { require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "a.out"))\r
- { $aout=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "sol"))\r
- { $sol=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "cpp"))\r
- { $cpp=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "win32"))\r
- { require "x86ms.pl"; }\r
-else\r
- {\r
- print STDERR <<"EOF";\r
-Pick one target type from\r
- elf - linux, FreeBSD etc\r
- a.out - old linux\r
- sol - x86 solaris\r
- cpp - format so x86unix.cpp can be used\r
- win32 - Windows 95/Windows NT\r
-EOF\r
- exit(1);\r
- }\r
-\r
-&comment("Don't even think of reading this code");\r
-&comment("It was automatically generated by $prog");\r
-&comment("Which is a perl program used to generate the x86 assember for");\r
-&comment("any of elf, a.out, Win32, or Solaris");\r
-&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");\r
-&comment("eric <eay\@cryptsoft.com>");\r
-&comment("The inner loop instruction sequence and the IP/FP modifications");\r
-&comment("are from Svend Olaf Mikkelsen <svolaf\@inet.uni-c.dk>");\r
-\r
-&comment("");\r
-\r
-&file("dx86xxxx");\r
-\r
-$L="edi";\r
-$R="esi";\r
-\r
-&fcrypt_body("fcrypt_body");\r
-\r
-&file_end();\r
-\r
-sub fcrypt_body\r
- {\r
- local($name,$do_ip)=@_;\r
-\r
- &function_begin($name,3,"EXTRN _des_SPtrans:DWORD");\r
-\r
- &comment("");\r
- &comment("Load the 2 words");\r
- $ks="ebp";\r
-\r
- &xor( $L, $L);\r
- &xor( $R, $R);\r
- &mov($ks,&wparam(1));\r
-\r
- &mov(&wtmp(1), 25);\r
-\r
- &set_label("start");\r
- for ($i=0; $i<16; $i+=2)\r
- {\r
- &comment("");\r
- &comment("Round $i");\r
- &D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
-\r
- &comment("");\r
- &comment("Round ".sprintf("%d",$i+1));\r
- &D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- }\r
- &mov("eax", $L);\r
- &dec(&wtmp(1));\r
- &mov($L, $R);\r
- &mov($R, "eax");\r
- &jnz(&label("start"));\r
-\r
- &comment("");\r
- &comment("FP");\r
- &mov("edx",&wparam(0));\r
-\r
- &FP_new($R,$L,"eax",3);\r
- &mov(&DWP(0,"edx","",0),"eax");\r
- &mov(&DWP(4,"edx","",0),$L);\r
-\r
- &function_end($name);\r
- }\r
-\r
-sub D_ENCRYPT\r
- {\r
- local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;\r
-\r
- &mov( $u, &wparam(2)); # 2\r
- &mov( $t, $R);\r
- &shr( $t, 16); # 1\r
- &mov( $tmp2, &wparam(3)); # 2\r
- &xor( $t, $R); # 1\r
-\r
- &and( $u, $t); # 2\r
- &and( $t, $tmp2); # 2\r
-\r
- &mov( $tmp1, $u);\r
- &shl( $tmp1, 16); # 1\r
- &mov( $tmp2, $t);\r
- &shl( $tmp2, 16); # 1\r
- &xor( $u, $tmp1); # 2\r
- &xor( $t, $tmp2); # 2\r
- &mov( $tmp1, &DWP(&n2a($S*4),$ks,"",0)); # 2\r
- &xor( $u, $tmp1);\r
- &mov( $tmp2, &DWP(&n2a(($S+1)*4),$ks,"",0)); # 2\r
- &xor( $u, $R);\r
- &xor( $t, $R);\r
- &xor( $t, $tmp2);\r
-\r
- &and( $u, "0xfcfcfcfc" ); # 2\r
- &xor( $tmp1, $tmp1); # 1\r
- &and( $t, "0xcfcfcfcf" ); # 2\r
- &xor( $tmp2, $tmp2); \r
- &movb( &LB($tmp1), &LB($u) );\r
- &movb( &LB($tmp2), &HB($u) );\r
- &rotr( $t, 4 );\r
- &mov( $ks, &DWP(" $desSP",$tmp1,"",0));\r
- &movb( &LB($tmp1), &LB($t) );\r
- &xor( $L, $ks);\r
- &mov( $ks, &DWP("0x200+$desSP",$tmp2,"",0));\r
- &xor( $L, $ks);\r
- &movb( &LB($tmp2), &HB($t) );\r
- &shr( $u, 16);\r
- &mov( $ks, &DWP("0x100+$desSP",$tmp1,"",0));\r
- &xor( $L, $ks); \r
- &movb( &LB($tmp1), &HB($u) );\r
- &shr( $t, 16);\r
- &mov( $ks, &DWP("0x300+$desSP",$tmp2,"",0));\r
- &xor( $L, $ks);\r
- &mov( $ks, &DWP(24,"esp","",0));\r
- &movb( &LB($tmp2), &HB($t) );\r
- &and( $u, "0xff" );\r
- &and( $t, "0xff" );\r
- &mov( $tmp1, &DWP("0x600+$desSP",$tmp1,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x700+$desSP",$tmp2,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x400+$desSP",$u,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x500+$desSP",$t,"",0));\r
- &xor( $L, $tmp1);\r
- }\r
-\r
-sub n2a\r
- {\r
- sprintf("%d",$_[0]);\r
- }\r
-\r
-# now has a side affect of rotating $a by $shift\r
-sub R_PERM_OP\r
- {\r
- local($a,$b,$tt,$shift,$mask,$last)=@_;\r
-\r
- &rotl( $a, $shift ) if ($shift != 0);\r
- &mov( $tt, $a );\r
- &xor( $a, $b );\r
- &and( $a, $mask );\r
- if ($notlast eq $b)\r
- {\r
- &xor( $b, $a );\r
- &xor( $tt, $a );\r
- }\r
- else\r
- {\r
- &xor( $tt, $a );\r
- &xor( $b, $a );\r
- }\r
- &comment("");\r
- }\r
-\r
-sub IP_new\r
- {\r
- local($l,$r,$tt,$lr)=@_;\r
-\r
- &R_PERM_OP($l,$r,$tt, 4,"0xf0f0f0f0",$l);\r
- &R_PERM_OP($r,$tt,$l,20,"0xfff0000f",$l);\r
- &R_PERM_OP($l,$tt,$r,14,"0x33333333",$r);\r
- &R_PERM_OP($tt,$r,$l,22,"0x03fc03fc",$r);\r
- &R_PERM_OP($l,$r,$tt, 9,"0xaaaaaaaa",$r);\r
- \r
- if ($lr != 3)\r
- {\r
- if (($lr-3) < 0)\r
- { &rotr($tt, 3-$lr); }\r
- else { &rotl($tt, $lr-3); }\r
- }\r
- if ($lr != 2)\r
- {\r
- if (($lr-2) < 0)\r
- { &rotr($r, 2-$lr); }\r
- else { &rotl($r, $lr-2); }\r
- }\r
- }\r
-\r
-sub FP_new\r
- {\r
- local($l,$r,$tt,$lr)=@_;\r
-\r
- if ($lr != 2)\r
- {\r
- if (($lr-2) < 0)\r
- { &rotl($r, 2-$lr); }\r
- else { &rotr($r, $lr-2); }\r
- }\r
- if ($lr != 3)\r
- {\r
- if (($lr-3) < 0)\r
- { &rotl($l, 3-$lr); }\r
- else { &rotr($l, $lr-3); }\r
- }\r
-\r
- &R_PERM_OP($l,$r,$tt, 0,"0xaaaaaaaa",$r);\r
- &R_PERM_OP($tt,$r,$l,23,"0x03fc03fc",$r);\r
- &R_PERM_OP($l,$r,$tt,10,"0x33333333",$l);\r
- &R_PERM_OP($r,$tt,$l,18,"0xfff0000f",$l);\r
- &R_PERM_OP($l,$tt,$r,12,"0xf0f0f0f0",$r);\r
- &rotr($tt , 4);\r
- }\r
-\r
+++ /dev/null
- /* 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"
+++ /dev/null
-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
+++ /dev/null
-#!/usr/local/bin/perl
-#\r
-# The inner loop instruction sequence and the IP/FP modifications are from\r
-# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>\r
-#\r
-\r
-$prog="des-som2.pl";\r
-\r
-# base code is in microsft\r
-# op dest, source\r
-# format.\r
-#\r
-\r
-require "desboth.pl";\r
-\r
-if ( ($ARGV[0] eq "elf"))\r
- { require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "a.out"))\r
- { $aout=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "sol"))\r
- { $sol=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "cpp"))\r
- { $cpp=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "win32"))\r
- { require "x86ms.pl"; }\r
-else\r
- {\r
- print STDERR <<"EOF";\r
-Pick one target type from\r
- elf - linux, FreeBSD etc\r
- a.out - old linux\r
- sol - x86 solaris\r
- cpp - format so x86unix.cpp can be used\r
- win32 - Windows 95/Windows NT\r
-EOF\r
- exit(1);\r
- }\r
-\r
-&comment("Don't even think of reading this code");\r
-&comment("It was automatically generated by $prog");\r
-&comment("Which is a perl program used to generate the x86 assember for");\r
-&comment("any of elf, a.out, Win32, or Solaris");\r
-&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");\r
-&comment("eric <eay\@cryptsoft.com>");\r
-&comment("The inner loop instruction sequence and the IP/FP modifications");\r
-&comment("are from Svend Olaf Mikkelsen <svolaf\@inet.uni-c.dk>");\r
-\r
-&comment("");\r
-\r
-&file("dx86xxxx");\r
-\r
-$L="edi";\r
-$R="esi";\r
-\r
-&des_encrypt("des_encrypt",1);\r
-&des_encrypt("des_encrypt2",0);\r
-\r
-&des_encrypt3("des_encrypt3",1);\r
-&des_encrypt3("des_decrypt3",0);\r
-\r
-&file_end();\r
-\r
-sub des_encrypt\r
- {\r
- local($name,$do_ip)=@_;\r
-\r
- &function_begin($name,3,"EXTRN _des_SPtrans:DWORD");\r
-\r
- &comment("");\r
- &comment("Load the 2 words");\r
- &mov("eax",&wparam(0));\r
- &mov($R,&DWP(0,"eax","",0));\r
- &mov($L,&DWP(4,"eax","",0));\r
-\r
- if ($do_ip)\r
- {\r
- &comment("");\r
- &comment("IP");\r
- &IP_new($R,$L,"eax",3);\r
-# &comment("");\r
-# &comment("fixup rotate");\r
-# &rotl($R,3);\r
-# &rotl($L,3);\r
- }\r
- else\r
- {\r
- &comment("");\r
- &comment("fixup rotate");\r
- &rotl($R,3);\r
- &rotl($L,3);\r
- }\r
-\r
- &comment("");\r
- &comment("load counter, key_schedule and enc flag");\r
-\r
- # encrypting part\r
-\r
- $ks="ebp";\r
-# &xor( "ebx", "ebx" );\r
- &mov("eax",&wparam(2)); # get encrypt flag\r
- &xor( "ecx", "ecx" );\r
- &cmp("eax","0");\r
- &mov( $ks, &wparam(1) );\r
- &je(&label("start_decrypt"));\r
-\r
- for ($i=0; $i<16; $i+=2)\r
- {\r
- &comment("");\r
- &comment("Round $i");\r
- &D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
-\r
- &comment("");\r
- &comment("Round ".sprintf("%d",$i+1));\r
- &D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- }\r
- &jmp(&label("end"));\r
-\r
- &set_label("start_decrypt");\r
-\r
- for ($i=15; $i>0; $i-=2)\r
- {\r
- &comment("");\r
- &comment("Round $i");\r
- &D_ENCRYPT(15-$i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- &comment("");\r
- &comment("Round ".sprintf("%d",$i-1));\r
- &D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- }\r
-\r
- &set_label("end");\r
-\r
- if ($do_ip)\r
- {\r
-# &comment("");\r
-# &comment("Fixup");\r
-# &rotr($L,3); # r\r
-# &rotr($R,3); # l\r
- &comment("");\r
- &comment("FP");\r
- &FP_new($R,$L,"eax",3);\r
- }\r
- else\r
- {\r
- &comment("");\r
- &comment("Fixup");\r
- &rotr($L,3); # r\r
- &rotr($R,3); # l\r
- }\r
-\r
- &mov("eax",&wparam(0));\r
- &mov(&DWP(0,"eax","",0),$L);\r
- &mov(&DWP(4,"eax","",0),$R);\r
-\r
- &function_end($name);\r
- }\r
-\r
-sub D_ENCRYPT\r
- {\r
- local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;\r
-\r
- &mov( $u, &DWP(&n2a($S*4),$ks,"",0));\r
- &xor( $tmp1, $tmp1);\r
- &mov( $t, &DWP(&n2a(($S+1)*4),$ks,"",0));\r
- &xor( $u, $R);\r
- &xor( $t, $R);\r
- &and( $u, "0xfcfcfcfc" );\r
- &and( $t, "0xcfcfcfcf" );\r
- &movb( &LB($tmp1), &LB($u) );\r
- &movb( &LB($tmp2), &HB($u) );\r
- &rotr( $t, 4 );\r
- &mov( $ks, &DWP(" $desSP",$tmp1,"",0));\r
- &movb( &LB($tmp1), &LB($t) );\r
- &xor( $L, $ks);\r
- &mov( $ks, &DWP("0x200+$desSP",$tmp2,"",0));\r
- &xor( $L, $ks); ######\r
- &movb( &LB($tmp2), &HB($t) );\r
- &shr( $u, 16);\r
- &mov( $ks, &DWP("0x100+$desSP",$tmp1,"",0));\r
- &xor( $L, $ks); ######\r
- &movb( &LB($tmp1), &HB($u) );\r
- &shr( $t, 16);\r
- &mov( $ks, &DWP("0x300+$desSP",$tmp2,"",0));\r
- &xor( $L, $ks);\r
- &mov( $ks, &DWP(24,"esp","",0)); ####\r
- &movb( &LB($tmp2), &HB($t) );\r
- &and( $u, "0xff" );\r
- &and( $t, "0xff" );\r
- &mov( $tmp1, &DWP("0x600+$desSP",$tmp1,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x700+$desSP",$tmp2,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x400+$desSP",$u,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x500+$desSP",$t,"",0));\r
- &xor( $L, $tmp1);\r
- }\r
-\r
-sub PERM_OP\r
- {\r
- local($a,$b,$tt,$shift,$mask)=@_;\r
-\r
- &mov( $tt, $a );\r
- &shr( $tt, $shift );\r
- &xor( $tt, $b );\r
- &and( $tt, $mask );\r
- &xor( $b, $tt );\r
- &shl( $tt, $shift );\r
- &xor( $a, $tt );\r
- }\r
-\r
-sub IP\r
- {\r
- local($l,$r,$tt)=@_;\r
-\r
- &PERM_OP($r,$l,$tt, 4,"0x0f0f0f0f");\r
- &PERM_OP($l,$r,$tt,16,"0x0000ffff");\r
- &PERM_OP($r,$l,$tt, 2,"0x33333333");\r
- &PERM_OP($l,$r,$tt, 8,"0x00ff00ff");\r
- &PERM_OP($r,$l,$tt, 1,"0x55555555");\r
- }\r
-\r
-sub FP\r
- {\r
- local($l,$r,$tt)=@_;\r
-\r
- &PERM_OP($l,$r,$tt, 1,"0x55555555");\r
- &PERM_OP($r,$l,$tt, 8,"0x00ff00ff");\r
- &PERM_OP($l,$r,$tt, 2,"0x33333333");\r
- &PERM_OP($r,$l,$tt,16,"0x0000ffff");\r
- &PERM_OP($l,$r,$tt, 4,"0x0f0f0f0f");\r
- }\r
-\r
-sub n2a\r
- {\r
- sprintf("%d",$_[0]);\r
- }\r
-\r
-# now has a side affect of rotating $a by $shift\r
-sub R_PERM_OP\r
- {\r
- local($a,$b,$tt,$shift,$mask,$last)=@_;\r
-\r
- &rotl( $a, $shift ) if ($shift != 0);\r
- &mov( $tt, $b );\r
- &xor( $tt, $a );\r
- &and( $tt, $mask );\r
- if ($last eq $b)\r
- {\r
- &xor( $a, $tt );\r
- &xor( $b, $tt );\r
- }\r
- else\r
- {\r
- &xor( $b, $tt );\r
- &xor( $a, $tt );\r
- }\r
- &comment("");\r
- }\r
-\r
-sub IP_new\r
- {\r
- local($l,$r,$tt,$lr)=@_;\r
-\r
- &R_PERM_OP($l,$r,$tt, 4,"0xf0f0f0f0",$l);\r
- &R_PERM_OP($r,$l,$tt,20,"0xfff0000f",$l);\r
- &R_PERM_OP($r,$l,$tt,14,"0x33333333",$r);\r
- &R_PERM_OP($l,$r,$tt,22,"0x03fc03fc",$r);\r
- &R_PERM_OP($l,$r,$tt, 9,"0xaaaaaaaa",$r);\r
- \r
- if ($lr != 3)\r
- {\r
- if (($lr-3) < 0)\r
- { &rotr($l, 3-$lr); }\r
- else { &rotl($l, $lr-3); }\r
- }\r
- if ($lr != 2)\r
- {\r
- if (($lr-2) < 0)\r
- { &rotr($r, 2-$lr); }\r
- else { &rotl($r, $lr-2); }\r
- }\r
- }\r
-\r
-sub FP_new\r
- {\r
- local($r,$l,$tt,$lr)=@_;\r
-\r
- if ($lr != 2)\r
- {\r
- if (($lr-2) < 0)\r
- { &rotl($r, 2-$lr); }\r
- else { &rotr($r, $lr-2); }\r
- }\r
- if ($lr != 3)\r
- {\r
- if (($lr-3) < 0)\r
- { &rotl($l, 3-$lr); }\r
- else { &rotr($l, $lr-3); }\r
- }\r
-\r
- &R_PERM_OP($l,$r,$tt, 0,"0xaaaaaaaa",$r);\r
- &R_PERM_OP($l,$r,$tt,23,"0x03fc03fc",$r);\r
- &R_PERM_OP($l,$r,$tt,10,"0x33333333",$l);\r
- &R_PERM_OP($r,$l,$tt,18,"0xfff0000f",$l);\r
- &R_PERM_OP($r,$l,$tt,12,"0xf0f0f0f0",$r);\r
- &rotr($l , 4);\r
- }\r
-\r
+++ /dev/null
-#!/usr/local/bin/perl
-#\r
-# The inner loop instruction sequence and the IP/FP modifications are from\r
-# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>\r
-#\r
-\r
-$prog="des-som3.pl";\r
-\r
-# base code is in microsft\r
-# op dest, source\r
-# format.\r
-#\r
-\r
-require "desboth.pl";\r
-\r
-if ( ($ARGV[0] eq "elf"))\r
- { require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "a.out"))\r
- { $aout=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "sol"))\r
- { $sol=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "cpp"))\r
- { $cpp=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "win32"))\r
- { require "x86ms.pl"; }\r
-else\r
- {\r
- print STDERR <<"EOF";\r
-Pick one target type from\r
- elf - linux, FreeBSD etc\r
- a.out - old linux\r
- sol - x86 solaris\r
- cpp - format so x86unix.cpp can be used\r
- win32 - Windows 95/Windows NT\r
-EOF\r
- exit(1);\r
- }\r
-\r
-&comment("Don't even think of reading this code");\r
-&comment("It was automatically generated by $prog");\r
-&comment("Which is a perl program used to generate the x86 assember for");\r
-&comment("any of elf, a.out, Win32, or Solaris");\r
-&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");\r
-&comment("eric <eay\@cryptsoft.com>");\r
-&comment("The inner loop instruction sequence and the IP/FP modifications");\r
-&comment("are from Svend Olaf Mikkelsen <svolaf\@inet.uni-c.dk>");\r
-\r
-&comment("");\r
-\r
-&file("dx86xxxx");\r
-\r
-$L="edi";\r
-$R="esi";\r
-\r
-&des_encrypt("des_encrypt",1);\r
-&des_encrypt("des_encrypt2",0);\r
-\r
-&des_encrypt3("des_encrypt3",1);\r
-&des_encrypt3("des_decrypt3",0);\r
-\r
-&file_end();\r
-\r
-sub des_encrypt\r
- {\r
- local($name,$do_ip)=@_;\r
-\r
- &function_begin($name,3,EXTRN _des_SPtrans:DWORD");\r
-\r
- &comment("");\r
- &comment("Load the 2 words");\r
- $ks="ebp";\r
-\r
- if ($do_ip)\r
- {\r
- &mov($R,&wparam(0));\r
- &xor( "ecx", "ecx" );\r
- &mov("eax",&DWP(0,$R,"",0));\r
- &mov("ebx",&wparam(2)); # get encrypt flag\r
- &mov($L,&DWP(4,$R,"",0));\r
- &comment("");\r
- &comment("IP");\r
- &IP_new("eax",$L,$R,3);\r
- }\r
- else\r
- {\r
- &mov("eax",&wparam(0));\r
- &xor( "ecx", "ecx" );\r
- &mov($R,&DWP(0,"eax","",0));\r
- &mov("ebx",&wparam(2)); # get encrypt flag\r
- &rotl($R,3);\r
- &mov($L,&DWP(4,"eax","",0));\r
- &rotl($L,3);\r
- }\r
-\r
- &cmp("ebx","0");\r
- &mov( $ks, &wparam(1) );\r
- &je(&label("start_decrypt"));\r
-\r
- for ($i=0; $i<16; $i+=2)\r
- {\r
- &comment("");\r
- &comment("Round $i");\r
- &D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
-\r
- &comment("");\r
- &comment("Round ".sprintf("%d",$i+1));\r
- &D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- }\r
- &jmp(&label("end"));\r
-\r
- &set_label("start_decrypt");\r
-\r
- for ($i=15; $i>0; $i-=2)\r
- {\r
- &comment("");\r
- &comment("Round $i");\r
- &D_ENCRYPT(15-$i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- &comment("");\r
- &comment("Round ".sprintf("%d",$i-1));\r
- &D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- }\r
-\r
- &set_label("end");\r
-\r
- if ($do_ip)\r
- {\r
- &comment("");\r
- &comment("FP");\r
- &mov("edx",&wparam(0));\r
- &FP_new($L,$R,"eax",3);\r
-\r
- &mov(&DWP(0,"edx","",0),"eax");\r
- &mov(&DWP(4,"edx","",0),$R);\r
- }\r
- else\r
- {\r
- &comment("");\r
- &comment("Fixup");\r
- &rotr($L,3); # r\r
- &mov("eax",&wparam(0));\r
- &rotr($R,3); # l\r
- &mov(&DWP(0,"eax","",0),$L);\r
- &mov(&DWP(4,"eax","",0),$R);\r
- }\r
-\r
-\r
- &function_end($name);\r
- }\r
-\r
-sub D_ENCRYPT\r
- {\r
- local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;\r
-\r
- &mov( $u, &DWP(&n2a($S*4),$ks,"",0));\r
- &xor( $tmp1, $tmp1);\r
- &mov( $t, &DWP(&n2a(($S+1)*4),$ks,"",0));\r
- &xor( $u, $R);\r
- &xor( $t, $R);\r
- &and( $u, "0xfcfcfcfc" );\r
- &and( $t, "0xcfcfcfcf" );\r
- &movb( &LB($tmp1), &LB($u) );\r
- &movb( &LB($tmp2), &HB($u) );\r
- &rotr( $t, 4 );\r
- &mov( $ks, &DWP(" $desSP",$tmp1,"",0));\r
- &movb( &LB($tmp1), &LB($t) );\r
- &xor( $L, $ks);\r
- &mov( $ks, &DWP("0x200+$desSP",$tmp2,"",0));\r
- &xor( $L, $ks); ######\r
- &movb( &LB($tmp2), &HB($t) );\r
- &shr( $u, 16);\r
- &mov( $ks, &DWP("0x100+$desSP",$tmp1,"",0));\r
- &xor( $L, $ks); ######\r
- &movb( &LB($tmp1), &HB($u) );\r
- &shr( $t, 16);\r
- &mov( $ks, &DWP("0x300+$desSP",$tmp2,"",0));\r
- &xor( $L, $ks);\r
- &mov( $ks, &DWP(24,"esp","",0)); ####\r
- &movb( &LB($tmp2), &HB($t) );\r
- &and( $u, "0xff" );\r
- &and( $t, "0xff" );\r
- &mov( $tmp1, &DWP("0x600+$desSP",$tmp1,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x700+$desSP",$tmp2,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x400+$desSP",$u,"",0));\r
- &xor( $L, $tmp1);\r
- &mov( $tmp1, &DWP("0x500+$desSP",$t,"",0));\r
- &xor( $L, $tmp1);\r
- }\r
-\r
-sub n2a\r
- {\r
- sprintf("%d",$_[0]);\r
- }\r
-\r
-# now has a side affect of rotating $a by $shift\r
-sub R_PERM_OP\r
- {\r
- local($a,$b,$tt,$shift,$mask,$last)=@_;\r
-\r
- &rotl( $a, $shift ) if ($shift != 0);\r
- &mov( $tt, $a );\r
- &xor( $a, $b );\r
- &and( $a, $mask );\r
- if ($notlast eq $b)\r
- {\r
- &xor( $b, $a );\r
- &xor( $tt, $a );\r
- }\r
- else\r
- {\r
- &xor( $tt, $a );\r
- &xor( $b, $a );\r
- }\r
- &comment("");\r
- }\r
-\r
-sub IP_new\r
- {\r
- local($l,$r,$tt,$lr)=@_;\r
-\r
- &R_PERM_OP($l,$r,$tt, 4,"0xf0f0f0f0",$l);\r
- &R_PERM_OP($r,$tt,$l,20,"0xfff0000f",$l);\r
- &R_PERM_OP($l,$tt,$r,14,"0x33333333",$r);\r
- &R_PERM_OP($tt,$r,$l,22,"0x03fc03fc",$r);\r
- &R_PERM_OP($l,$r,$tt, 9,"0xaaaaaaaa",$r);\r
- \r
- if ($lr != 3)\r
- {\r
- if (($lr-3) < 0)\r
- { &rotr($tt, 3-$lr); }\r
- else { &rotl($tt, $lr-3); }\r
- }\r
- if ($lr != 2)\r
- {\r
- if (($lr-2) < 0)\r
- { &rotr($r, 2-$lr); }\r
- else { &rotl($r, $lr-2); }\r
- }\r
- }\r
-\r
-sub FP_new\r
- {\r
- local($l,$r,$tt,$lr)=@_;\r
-\r
- if ($lr != 2)\r
- {\r
- if (($lr-2) < 0)\r
- { &rotl($r, 2-$lr); }\r
- else { &rotr($r, $lr-2); }\r
- }\r
- if ($lr != 3)\r
- {\r
- if (($lr-3) < 0)\r
- { &rotl($l, 3-$lr); }\r
- else { &rotr($l, $lr-3); }\r
- }\r
-\r
- &R_PERM_OP($l,$r,$tt, 0,"0xaaaaaaaa",$r);\r
- &R_PERM_OP($tt,$r,$l,23,"0x03fc03fc",$r);\r
- &R_PERM_OP($l,$r,$tt,10,"0x33333333",$l);\r
- &R_PERM_OP($r,$tt,$l,18,"0xfff0000f",$l);\r
- &R_PERM_OP($l,$tt,$r,12,"0xf0f0f0f0",$r);\r
- &rotr($tt , 4);\r
- }\r
-\r
+++ /dev/null
-#!/usr/local/bin/perl
-\r
-$prog="des586.pl";\r
-\r
-# base code is in microsft\r
-# op dest, source\r
-# format.\r
-#\r
-\r
-# WILL NOT WORK ANYMORE WITH desboth.pl\r
-require "desboth.pl";\r
-\r
-if ( ($ARGV[0] eq "elf"))\r
- { require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "a.out"))\r
- { $aout=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "sol"))\r
- { $sol=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "cpp"))\r
- { $cpp=1; require "x86unix.pl"; }\r
-elsif ( ($ARGV[0] eq "win32"))\r
- { require "x86ms.pl"; }\r
-else\r
- {\r
- print STDERR <<"EOF";\r
-Pick one target type from\r
- elf - linux, FreeBSD etc\r
- a.out - old linux\r
- sol - x86 solaris\r
- cpp - format so x86unix.cpp can be used\r
- win32 - Windows 95/Windows NT\r
-EOF\r
- exit(1);\r
- }\r
-\r
-&comment("Don't even think of reading this code");\r
-&comment("It was automatically generated by $prog");\r
-&comment("Which is a perl program used to generate the x86 assember for");\r
-&comment("any of elf, a.out, Win32, or Solaris");\r
-&comment("It can be found in SSLeay 0.6.5+ or in libdes 3.26+");\r
-&comment("eric <eay\@cryptsoft.com>");\r
-&comment("");\r
-\r
-&file("dx86xxxx");\r
-\r
-$L="edi";\r
-$R="esi";\r
-\r
-&des_encrypt("des_encrypt",1);\r
-&des_encrypt("des_encrypt2",0);\r
-\r
-&des_encrypt3("des_encrypt3",1);\r
-&des_encrypt3("des_decrypt3",0);\r
-\r
-&file_end();\r
-\r
-sub des_encrypt\r
- {\r
- local($name,$do_ip)=@_;\r
-\r
- &function_begin($name,3,"EXTRN _des_SPtrans:DWORD");\r
-\r
- &comment("");\r
- &comment("Load the 2 words");\r
- &mov("eax",&wparam(0));\r
- &mov($R,&DWP(0,"eax","",0));\r
- &mov($L,&DWP(4,"eax","",0));\r
-\r
- if ($do_ip)\r
- {\r
- &comment("");\r
- &comment("IP");\r
- &IP($R,$L,"eax");\r
- }\r
-\r
- &comment("");\r
- &comment("fixup rotate");\r
- &rotl($R,3);\r
- &rotl($L,3);\r
-\r
- &comment("");\r
- &comment("load counter, key_schedule and enc flag");\r
-\r
- # encrypting part\r
-\r
- $ks="ebp";\r
- &xor( "ebx", "ebx" );\r
- &mov("eax",&wparam(2)); # get encrypt flag\r
- &xor( "ecx", "ecx" );\r
- &cmp("eax","0");\r
- &mov( $ks, &wparam(1) );\r
- &je(&label("start_decrypt"));\r
-\r
- for ($i=0; $i<16; $i+=2)\r
- {\r
- &comment("");\r
- &comment("Round $i");\r
- &D_ENCRYPT($i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
-\r
- &comment("");\r
- &comment("Round ".sprintf("%d",$i+1));\r
- &D_ENCRYPT($i+1,$R,$L,($i+1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- }\r
- &jmp(&label("end"));\r
-\r
- &set_label("start_decrypt");\r
-\r
- for ($i=15; $i>0; $i-=2)\r
- {\r
- &comment("");\r
- &comment("Round $i");\r
- &D_ENCRYPT(15-$i,$L,$R,$i*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- &comment("");\r
- &comment("Round ".sprintf("%d",$i-1));\r
- &D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$ks,"des_SPtrans","eax","ebx","ecx","edx");\r
- }\r
-\r
- &set_label("end");\r
-\r
- &comment("");\r
- &comment("Fixup");\r
- &rotr($L,3); # r\r
- &rotr($R,3); # l\r
-\r
- if ($do_ip)\r
- {\r
- &comment("");\r
- &comment("FP");\r
- &FP($R,$L,"eax");\r
- }\r
-\r
- &mov("eax",&wparam(0));\r
- &mov(&DWP(0,"eax","",0),$L);\r
- &mov(&DWP(4,"eax","",0),$R);\r
-\r
- &function_end($name);\r
- }\r
-\r
-sub D_ENCRYPT\r
- {\r
- local($r,$L,$R,$S,$ks,$desSP,$u,$tmp1,$tmp2,$t)=@_;\r
-\r
- &mov( $t, &DWP(&n2a(($S+1)*4),$ks,"",0));\r
- &mov( $u, &DWP(&n2a($S*4),$ks,"",0));\r
- &xor( $t, $R);\r
- &xor( $u, $R);\r
- &rotr( $t, 4 );\r
- &and( $u, "0xfcfcfcfc" );\r
- &and( $t, "0xfcfcfcfc" );\r
- &movb( &LB($tmp1), &LB($u) );\r
- &movb( &LB($tmp2), &HB($u) );\r
- &xor( $L, &DWP(" $desSP",$tmp1,"",0));\r
- &shr( $u, 16);\r
- &xor( $L, &DWP("0x200+$desSP",$tmp2,"",0));\r
- &movb( &LB($tmp1), &LB($u) );\r
- &movb( &LB($tmp2), &HB($u) );\r
- &xor( $L, &DWP("0x400+$desSP",$tmp1,"",0));\r
- &mov( $u, &DWP("0x600+$desSP",$tmp2,"",0));\r
-\r
- &movb( &LB($tmp1), &LB($t) );\r
- &movb( &LB($tmp2), &HB($t) );\r
- &xor( $L, &DWP("0x100+$desSP",$tmp1,"",0));\r
- &shr( $t, 16);\r
- &xor( $u, &DWP("0x300+$desSP",$tmp2,"",0));\r
- &movb( &LB($tmp1), &LB($t) );\r
- &movb( &LB($tmp2), &HB($t) );\r
- &xor( $L, &DWP("0x500+$desSP",$tmp1,"",0));\r
- &xor( $u, &DWP("0x700+$desSP",$tmp2,"",0));\r
- &xor( $L, $u);\r
- }\r
-\r
-sub PERM_OP\r
- {\r
- local($a,$b,$tt,$shift,$mask)=@_;\r
-\r
- &mov( $tt, $a );\r
- &shr( $tt, $shift );\r
- &xor( $tt, $b );\r
- &and( $tt, $mask );\r
- &xor( $b, $tt );\r
- &shl( $tt, $shift );\r
- &xor( $a, $tt );\r
- }\r
-\r
-sub IP\r
- {\r
- local($l,$r,$tt)=@_;\r
-\r
- &PERM_OP($r,$l,$tt, 4,"0x0f0f0f0f");\r
- &PERM_OP($l,$r,$tt,16,"0x0000ffff");\r
- &PERM_OP($r,$l,$tt, 2,"0x33333333");\r
- &PERM_OP($l,$r,$tt, 8,"0x00ff00ff");\r
- &PERM_OP($r,$l,$tt, 1,"0x55555555");\r
- }\r
-\r
-sub FP\r
- {\r
- local($l,$r,$tt)=@_;\r
-\r
- &PERM_OP($l,$r,$tt, 1,"0x55555555");\r
- &PERM_OP($r,$l,$tt, 8,"0x00ff00ff");\r
- &PERM_OP($l,$r,$tt, 2,"0x33333333");\r
- &PERM_OP($r,$l,$tt,16,"0x0000ffff");\r
- &PERM_OP($l,$r,$tt, 4,"0x0f0f0f0f");\r
- }\r
-\r
-sub n2a\r
- {\r
- sprintf("%d",$_[0]);\r
- }\r
+++ /dev/null
- /* Don't even think of reading this code */
- /* It was automatically generated by des-som2.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 des_encrypt
- TYPE(des_encrypt,@function)
-des_encrypt:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
-
-
- /* Load the 2 words */
- movl 20(%esp), %esi
- xorl %ecx, %ecx
- movl (%esi), %eax
- movl 28(%esp), %ebx
- movl 4(%esi), %edi
-
- /* IP */
- roll $4, %eax
- movl %eax, %esi
- xorl %edi, %eax
- andl $0xf0f0f0f0, %eax
- xorl %eax, %esi
- xorl %eax, %edi
-
- roll $20, %edi
- movl %edi, %eax
- xorl %esi, %edi
- andl $0xfff0000f, %edi
- xorl %edi, %eax
- xorl %edi, %esi
-
- roll $14, %eax
- movl %eax, %edi
- xorl %esi, %eax
- andl $0x33333333, %eax
- xorl %eax, %edi
- xorl %eax, %esi
-
- roll $22, %esi
- movl %esi, %eax
- xorl %edi, %esi
- andl $0x03fc03fc, %esi
- xorl %esi, %eax
- xorl %esi, %edi
-
- roll $9, %eax
- movl %eax, %esi
- xorl %edi, %eax
- andl $0xaaaaaaaa, %eax
- xorl %eax, %esi
- xorl %eax, %edi
-
- roll $1, %edi
- cmpl $0, %ebx
- movl 24(%esp), %ebp
- je .L000start_decrypt
-
- /* Round 0 */
- movl (%ebp), %eax
- xorl %ebx, %ebx
- movl 4(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 8(%ebp), %eax
- xorl %ebx, %ebx
- movl 12(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 16(%ebp), %eax
- xorl %ebx, %ebx
- movl 20(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 24(%ebp), %eax
- xorl %ebx, %ebx
- movl 28(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 32(%ebp), %eax
- xorl %ebx, %ebx
- movl 36(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 40(%ebp), %eax
- xorl %ebx, %ebx
- movl 44(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 48(%ebp), %eax
- xorl %ebx, %ebx
- movl 52(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 56(%ebp), %eax
- xorl %ebx, %ebx
- movl 60(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 64(%ebp), %eax
- xorl %ebx, %ebx
- movl 68(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 72(%ebp), %eax
- xorl %ebx, %ebx
- movl 76(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 80(%ebp), %eax
- xorl %ebx, %ebx
- movl 84(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 88(%ebp), %eax
- xorl %ebx, %ebx
- movl 92(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 96(%ebp), %eax
- xorl %ebx, %ebx
- movl 100(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 104(%ebp), %eax
- xorl %ebx, %ebx
- movl 108(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 112(%ebp), %eax
- xorl %ebx, %ebx
- movl 116(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 120(%ebp), %eax
- xorl %ebx, %ebx
- movl 124(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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
- jmp .L001end
-.align ALIGN
-.L000start_decrypt:
-
- /* Round 15 */
- movl 120(%ebp), %eax
- xorl %ebx, %ebx
- movl 124(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 14 */
- movl 112(%ebp), %eax
- xorl %ebx, %ebx
- movl 116(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 13 */
- movl 104(%ebp), %eax
- xorl %ebx, %ebx
- movl 108(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 12 */
- movl 96(%ebp), %eax
- xorl %ebx, %ebx
- movl 100(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 11 */
- movl 88(%ebp), %eax
- xorl %ebx, %ebx
- movl 92(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 10 */
- movl 80(%ebp), %eax
- xorl %ebx, %ebx
- movl 84(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 9 */
- movl 72(%ebp), %eax
- xorl %ebx, %ebx
- movl 76(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 8 */
- movl 64(%ebp), %eax
- xorl %ebx, %ebx
- movl 68(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 7 */
- movl 56(%ebp), %eax
- xorl %ebx, %ebx
- movl 60(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 6 */
- movl 48(%ebp), %eax
- xorl %ebx, %ebx
- movl 52(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 5 */
- movl 40(%ebp), %eax
- xorl %ebx, %ebx
- movl 44(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 4 */
- movl 32(%ebp), %eax
- xorl %ebx, %ebx
- movl 36(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 3 */
- movl 24(%ebp), %eax
- xorl %ebx, %ebx
- movl 28(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 2 */
- movl 16(%ebp), %eax
- xorl %ebx, %ebx
- movl 20(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 1 */
- movl 8(%ebp), %eax
- xorl %ebx, %ebx
- movl 12(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 0 */
- movl (%ebp), %eax
- xorl %ebx, %ebx
- movl 4(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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
-.align ALIGN
-.L001end:
-
- /* FP */
- movl 20(%esp), %edx
- rorl $1, %esi
- movl %edi, %eax
- xorl %esi, %edi
- andl $0xaaaaaaaa, %edi
- xorl %edi, %eax
- xorl %edi, %esi
-
- roll $23, %eax
- movl %eax, %edi
- xorl %esi, %eax
- andl $0x03fc03fc, %eax
- xorl %eax, %edi
- xorl %eax, %esi
-
- roll $10, %edi
- movl %edi, %eax
- xorl %esi, %edi
- andl $0x33333333, %edi
- xorl %edi, %eax
- xorl %edi, %esi
-
- roll $18, %esi
- movl %esi, %edi
- xorl %eax, %esi
- andl $0xfff0000f, %esi
- xorl %esi, %edi
- xorl %esi, %eax
-
- roll $12, %edi
- movl %edi, %esi
- xorl %eax, %edi
- andl $0xf0f0f0f0, %edi
- xorl %edi, %esi
- xorl %edi, %eax
-
- rorl $4, %eax
- movl %eax, (%edx)
- movl %esi, 4(%edx)
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.des_encrypt_end:
- SIZE(des_encrypt,.des_encrypt_end-des_encrypt)
-.ident "desasm.pl"
-.text
- .align ALIGN
-.globl des_encrypt2
- TYPE(des_encrypt2,@function)
-des_encrypt2:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
-
-
- /* Load the 2 words */
- movl 20(%esp), %eax
- xorl %ecx, %ecx
- movl (%eax), %esi
- movl 28(%esp), %ebx
- roll $3, %esi
- movl 4(%eax), %edi
- roll $3, %edi
- cmpl $0, %ebx
- movl 24(%esp), %ebp
- je .L002start_decrypt
-
- /* Round 0 */
- movl (%ebp), %eax
- xorl %ebx, %ebx
- movl 4(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 8(%ebp), %eax
- xorl %ebx, %ebx
- movl 12(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 16(%ebp), %eax
- xorl %ebx, %ebx
- movl 20(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 24(%ebp), %eax
- xorl %ebx, %ebx
- movl 28(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 32(%ebp), %eax
- xorl %ebx, %ebx
- movl 36(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 40(%ebp), %eax
- xorl %ebx, %ebx
- movl 44(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 48(%ebp), %eax
- xorl %ebx, %ebx
- movl 52(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 56(%ebp), %eax
- xorl %ebx, %ebx
- movl 60(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 64(%ebp), %eax
- xorl %ebx, %ebx
- movl 68(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 72(%ebp), %eax
- xorl %ebx, %ebx
- movl 76(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 80(%ebp), %eax
- xorl %ebx, %ebx
- movl 84(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 88(%ebp), %eax
- xorl %ebx, %ebx
- movl 92(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 96(%ebp), %eax
- xorl %ebx, %ebx
- movl 100(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 104(%ebp), %eax
- xorl %ebx, %ebx
- movl 108(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 112(%ebp), %eax
- xorl %ebx, %ebx
- movl 116(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 120(%ebp), %eax
- xorl %ebx, %ebx
- movl 124(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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
- jmp .L003end
-.align ALIGN
-.L002start_decrypt:
-
- /* Round 15 */
- movl 120(%ebp), %eax
- xorl %ebx, %ebx
- movl 124(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 14 */
- movl 112(%ebp), %eax
- xorl %ebx, %ebx
- movl 116(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 13 */
- movl 104(%ebp), %eax
- xorl %ebx, %ebx
- movl 108(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 12 */
- movl 96(%ebp), %eax
- xorl %ebx, %ebx
- movl 100(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 11 */
- movl 88(%ebp), %eax
- xorl %ebx, %ebx
- movl 92(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 10 */
- movl 80(%ebp), %eax
- xorl %ebx, %ebx
- movl 84(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 9 */
- movl 72(%ebp), %eax
- xorl %ebx, %ebx
- movl 76(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 8 */
- movl 64(%ebp), %eax
- xorl %ebx, %ebx
- movl 68(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 7 */
- movl 56(%ebp), %eax
- xorl %ebx, %ebx
- movl 60(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 6 */
- movl 48(%ebp), %eax
- xorl %ebx, %ebx
- movl 52(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 5 */
- movl 40(%ebp), %eax
- xorl %ebx, %ebx
- movl 44(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 4 */
- movl 32(%ebp), %eax
- xorl %ebx, %ebx
- movl 36(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 3 */
- movl 24(%ebp), %eax
- xorl %ebx, %ebx
- movl 28(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 2 */
- movl 16(%ebp), %eax
- xorl %ebx, %ebx
- movl 20(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 1 */
- movl 8(%ebp), %eax
- xorl %ebx, %ebx
- movl 12(%ebp), %edx
- xorl %esi, %eax
- xorl %esi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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 0 */
- movl (%ebp), %eax
- xorl %ebx, %ebx
- movl 4(%ebp), %edx
- xorl %edi, %eax
- xorl %edi, %edx
- andl $0xfcfcfcfc, %eax
- andl $0xcfcfcfcf, %edx
- 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
-.align ALIGN
-.L003end:
-
- /* Fixup */
- rorl $3, %edi
- movl 20(%esp), %eax
- rorl $3, %esi
- movl %edi, (%eax)
- movl %esi, 4(%eax)
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.des_encrypt2_end:
- SIZE(des_encrypt2,.des_encrypt2_end-des_encrypt2)
-.ident "desasm.pl"
-.text
- .align ALIGN
-.globl des_encrypt3
- TYPE(des_encrypt3,@function)
-des_encrypt3:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
-
-
- /* Load the data words */
- movl 20(%esp), %ebx
- movl (%ebx), %edi
- movl 4(%ebx), %esi
-
- /* IP */
- roll $4, %edi
- movl %edi, %edx
- xorl %esi, %edi
- andl $0xf0f0f0f0, %edi
- xorl %edi, %edx
- xorl %edi, %esi
-
- roll $20, %esi
- movl %esi, %edi
- xorl %edx, %esi
- andl $0xfff0000f, %esi
- xorl %esi, %edi
- xorl %esi, %edx
-
- roll $14, %edi
- movl %edi, %esi
- xorl %edx, %edi
- andl $0x33333333, %edi
- xorl %edi, %esi
- xorl %edi, %edx
-
- roll $22, %edx
- movl %edx, %edi
- xorl %esi, %edx
- andl $0x03fc03fc, %edx
- xorl %edx, %edi
- xorl %edx, %esi
-
- roll $9, %edi
- movl %edi, %edx
- xorl %esi, %edi
- andl $0xaaaaaaaa, %edi
- xorl %edi, %edx
- xorl %edi, %esi
-
- rorl $3, %edx
- rorl $2, %esi
- movl %esi, 4(%ebx)
- movl 24(%esp), %eax
- movl %edx, (%ebx)
- movl 28(%esp), %edi
- movl 32(%esp), %esi
- pushl $1
- pushl %eax
- pushl %ebx
- call des_encrypt2
- pushl $0
- pushl %edi
- pushl %ebx
- call des_encrypt2
- pushl $1
- pushl %esi
- pushl %ebx
- call des_encrypt2
- movl (%ebx), %edi
- addl $36, %esp
- movl 4(%ebx), %esi
-
- /* FP */
- roll $2, %esi
- roll $3, %edi
- movl %edi, %eax
- xorl %esi, %edi
- andl $0xaaaaaaaa, %edi
- xorl %edi, %eax
- xorl %edi, %esi
-
- roll $23, %eax
- movl %eax, %edi
- xorl %esi, %eax
- andl $0x03fc03fc, %eax
- xorl %eax, %edi
- xorl %eax, %esi
-
- roll $10, %edi
- movl %edi, %eax
- xorl %esi, %edi
- andl $0x33333333, %edi
- xorl %edi, %eax
- xorl %edi, %esi
-
- roll $18, %esi
- movl %esi, %edi
- xorl %eax, %esi
- andl $0xfff0000f, %esi
- xorl %esi, %edi
- xorl %esi, %eax
-
- roll $12, %edi
- movl %edi, %esi
- xorl %eax, %edi
- andl $0xf0f0f0f0, %edi
- xorl %edi, %esi
- xorl %edi, %eax
-
- rorl $4, %eax
- movl %eax, (%ebx)
- movl %esi, 4(%ebx)
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.des_encrypt3_end:
- SIZE(des_encrypt3,.des_encrypt3_end-des_encrypt3)
-.ident "desasm.pl"
-.text
- .align ALIGN
-.globl des_decrypt3
- TYPE(des_decrypt3,@function)
-des_decrypt3:
- pushl %ebp
- pushl %ebx
- pushl %esi
- pushl %edi
-
-
- /* Load the data words */
- movl 20(%esp), %ebx
- movl (%ebx), %edi
- movl 4(%ebx), %esi
-
- /* IP */
- roll $4, %edi
- movl %edi, %edx
- xorl %esi, %edi
- andl $0xf0f0f0f0, %edi
- xorl %edi, %edx
- xorl %edi, %esi
-
- roll $20, %esi
- movl %esi, %edi
- xorl %edx, %esi
- andl $0xfff0000f, %esi
- xorl %esi, %edi
- xorl %esi, %edx
-
- roll $14, %edi
- movl %edi, %esi
- xorl %edx, %edi
- andl $0x33333333, %edi
- xorl %edi, %esi
- xorl %edi, %edx
-
- roll $22, %edx
- movl %edx, %edi
- xorl %esi, %edx
- andl $0x03fc03fc, %edx
- xorl %edx, %edi
- xorl %edx, %esi
-
- roll $9, %edi
- movl %edi, %edx
- xorl %esi, %edi
- andl $0xaaaaaaaa, %edi
- xorl %edi, %edx
- xorl %edi, %esi
-
- rorl $3, %edx
- rorl $2, %esi
- movl %esi, 4(%ebx)
- movl 24(%esp), %esi
- movl %edx, (%ebx)
- movl 28(%esp), %edi
- movl 32(%esp), %eax
- pushl $0
- pushl %eax
- pushl %ebx
- call des_encrypt2
- pushl $1
- pushl %edi
- pushl %ebx
- call des_encrypt2
- pushl $0
- pushl %esi
- pushl %ebx
- call des_encrypt2
- movl (%ebx), %edi
- addl $36, %esp
- movl 4(%ebx), %esi
-
- /* FP */
- roll $2, %esi
- roll $3, %edi
- movl %edi, %eax
- xorl %esi, %edi
- andl $0xaaaaaaaa, %edi
- xorl %edi, %eax
- xorl %edi, %esi
-
- roll $23, %eax
- movl %eax, %edi
- xorl %esi, %eax
- andl $0x03fc03fc, %eax
- xorl %eax, %edi
- xorl %eax, %esi
-
- roll $10, %edi
- movl %edi, %eax
- xorl %esi, %edi
- andl $0x33333333, %edi
- xorl %edi, %eax
- xorl %edi, %esi
-
- roll $18, %esi
- movl %esi, %edi
- xorl %eax, %esi
- andl $0xfff0000f, %esi
- xorl %esi, %edi
- xorl %esi, %eax
-
- roll $12, %edi
- movl %edi, %esi
- xorl %eax, %edi
- andl $0xf0f0f0f0, %edi
- xorl %edi, %esi
- xorl %edi, %eax
-
- rorl $4, %eax
- movl %eax, (%ebx)
- movl %esi, 4(%ebx)
- popl %edi
- popl %esi
- popl %ebx
- popl %ebp
- ret
-.des_decrypt3_end:
- SIZE(des_decrypt3,.des_decrypt3_end-des_decrypt3)
-.ident "desasm.pl"
+++ /dev/null
-#define abc def
-#define dbc: ghi:
-
-
-abc
-dbc: