; 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 ; The inner loop instruction sequence and the IP/FP modifications ; are from Svend Olaf Mikkelsen ; 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