|  | ; Don't even think of reading this code | 
|  | ; It was automatically generated by des-586.pl | 
|  | ; Which is a perl program used to generate the x86 assember for | 
|  | ; any of elf, a.out, BSDI,Win32, or Solaris | 
|  | ; eric <eay@cryptsoft.com> | 
|  | ; | 
|  | TITLE	des-586.asm | 
|  | .386 | 
|  | .model FLAT | 
|  | _TEXT	SEGMENT | 
|  | PUBLIC	_des_encrypt | 
|  | EXTRN   _des_SPtrans:DWORD | 
|  | _des_encrypt PROC NEAR | 
|  | push	esi | 
|  | push	edi | 
|  | ; | 
|  | ; Load the 2 words | 
|  | mov	esi,		DWORD PTR 12[esp] | 
|  | xor	ecx,		ecx | 
|  | push	ebx | 
|  | push	ebp | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 28[esp] | 
|  | mov	edi,		DWORD PTR 4[esi] | 
|  | ; | 
|  | ; IP | 
|  | rol	eax,		4 | 
|  | mov	esi,		eax | 
|  | xor	eax,		edi | 
|  | and	eax,		0f0f0f0f0h | 
|  | xor	esi,		eax | 
|  | xor	edi,		eax | 
|  | ; | 
|  | rol	edi,		20 | 
|  | mov	eax,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0fff0000fh | 
|  | xor	eax,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	eax,		14 | 
|  | mov	edi,		eax | 
|  | xor	eax,		esi | 
|  | and	eax,		033333333h | 
|  | xor	edi,		eax | 
|  | xor	esi,		eax | 
|  | ; | 
|  | rol	esi,		22 | 
|  | mov	eax,		esi | 
|  | xor	esi,		edi | 
|  | and	esi,		003fc03fch | 
|  | xor	eax,		esi | 
|  | xor	edi,		esi | 
|  | ; | 
|  | rol	eax,		9 | 
|  | mov	esi,		eax | 
|  | xor	eax,		edi | 
|  | and	eax,		0aaaaaaaah | 
|  | xor	esi,		eax | 
|  | xor	edi,		eax | 
|  | ; | 
|  | rol	edi,		1 | 
|  | mov	ebp,		DWORD PTR 24[esp] | 
|  | cmp	ebx,		0 | 
|  | je	$L000start_decrypt | 
|  | ; | 
|  | ; Round 0 | 
|  | mov	eax,		DWORD PTR [ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 4[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 8[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 12[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 16[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 20[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 24[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 28[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 32[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 36[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 40[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 44[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 48[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 52[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 56[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 60[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 64[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 68[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 72[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 76[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 80[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 84[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 88[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 92[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 96[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 100[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 104[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 108[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 112[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 116[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 120[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 124[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 | 
|  | jmp	$L001end | 
|  | $L000start_decrypt: | 
|  | ; | 
|  | ; Round 15 | 
|  | mov	eax,		DWORD PTR 120[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 124[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 14 | 
|  | mov	eax,		DWORD PTR 112[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 116[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 13 | 
|  | mov	eax,		DWORD PTR 104[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 108[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 12 | 
|  | mov	eax,		DWORD PTR 96[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 100[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 11 | 
|  | mov	eax,		DWORD PTR 88[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 92[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 10 | 
|  | mov	eax,		DWORD PTR 80[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 84[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 9 | 
|  | mov	eax,		DWORD PTR 72[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 76[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 8 | 
|  | mov	eax,		DWORD PTR 64[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 68[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 7 | 
|  | mov	eax,		DWORD PTR 56[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 60[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 6 | 
|  | mov	eax,		DWORD PTR 48[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 52[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 5 | 
|  | mov	eax,		DWORD PTR 40[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 44[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 4 | 
|  | mov	eax,		DWORD PTR 32[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 36[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 3 | 
|  | mov	eax,		DWORD PTR 24[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 28[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 2 | 
|  | mov	eax,		DWORD PTR 16[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 20[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 1 | 
|  | mov	eax,		DWORD PTR 8[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 12[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 0 | 
|  | mov	eax,		DWORD PTR [ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 4[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 | 
|  | $L001end: | 
|  | ; | 
|  | ; FP | 
|  | mov	edx,		DWORD PTR 20[esp] | 
|  | ror	esi,		1 | 
|  | mov	eax,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0aaaaaaaah | 
|  | xor	eax,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	eax,		23 | 
|  | mov	edi,		eax | 
|  | xor	eax,		esi | 
|  | and	eax,		003fc03fch | 
|  | xor	edi,		eax | 
|  | xor	esi,		eax | 
|  | ; | 
|  | rol	edi,		10 | 
|  | mov	eax,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		033333333h | 
|  | xor	eax,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	esi,		18 | 
|  | mov	edi,		esi | 
|  | xor	esi,		eax | 
|  | and	esi,		0fff0000fh | 
|  | xor	edi,		esi | 
|  | xor	eax,		esi | 
|  | ; | 
|  | rol	edi,		12 | 
|  | mov	esi,		edi | 
|  | xor	edi,		eax | 
|  | and	edi,		0f0f0f0f0h | 
|  | xor	esi,		edi | 
|  | xor	eax,		edi | 
|  | ; | 
|  | ror	eax,		4 | 
|  | mov	DWORD PTR [edx],eax | 
|  | mov	DWORD PTR 4[edx],esi | 
|  | pop	ebp | 
|  | pop	ebx | 
|  | pop	edi | 
|  | pop	esi | 
|  | ret | 
|  | _des_encrypt ENDP | 
|  | _TEXT	ENDS | 
|  | _TEXT	SEGMENT | 
|  | PUBLIC	_des_encrypt2 | 
|  | EXTRN   _des_SPtrans:DWORD | 
|  | _des_encrypt2 PROC NEAR | 
|  | push	esi | 
|  | push	edi | 
|  | ; | 
|  | ; Load the 2 words | 
|  | mov	eax,		DWORD PTR 12[esp] | 
|  | xor	ecx,		ecx | 
|  | push	ebx | 
|  | push	ebp | 
|  | mov	esi,		DWORD PTR [eax] | 
|  | mov	ebx,		DWORD PTR 28[esp] | 
|  | rol	esi,		3 | 
|  | mov	edi,		DWORD PTR 4[eax] | 
|  | rol	edi,		3 | 
|  | mov	ebp,		DWORD PTR 24[esp] | 
|  | cmp	ebx,		0 | 
|  | je	$L002start_decrypt | 
|  | ; | 
|  | ; Round 0 | 
|  | mov	eax,		DWORD PTR [ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 4[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 8[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 12[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 16[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 20[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 24[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 28[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 32[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 36[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 40[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 44[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 48[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 52[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 56[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 60[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 64[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 68[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 72[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 76[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 80[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 84[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 88[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 92[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 96[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 100[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 104[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 108[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 112[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 116[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 120[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 124[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 | 
|  | jmp	$L003end | 
|  | $L002start_decrypt: | 
|  | ; | 
|  | ; Round 15 | 
|  | mov	eax,		DWORD PTR 120[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 124[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 14 | 
|  | mov	eax,		DWORD PTR 112[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 116[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 13 | 
|  | mov	eax,		DWORD PTR 104[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 108[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 12 | 
|  | mov	eax,		DWORD PTR 96[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 100[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 11 | 
|  | mov	eax,		DWORD PTR 88[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 92[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 10 | 
|  | mov	eax,		DWORD PTR 80[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 84[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 9 | 
|  | mov	eax,		DWORD PTR 72[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 76[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 8 | 
|  | mov	eax,		DWORD PTR 64[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 68[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 7 | 
|  | mov	eax,		DWORD PTR 56[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 60[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 6 | 
|  | mov	eax,		DWORD PTR 48[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 52[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 5 | 
|  | mov	eax,		DWORD PTR 40[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 44[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 4 | 
|  | mov	eax,		DWORD PTR 32[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 36[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 3 | 
|  | mov	eax,		DWORD PTR 24[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 28[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 2 | 
|  | mov	eax,		DWORD PTR 16[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 20[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 1 | 
|  | mov	eax,		DWORD PTR 8[ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 12[ebp] | 
|  | xor	eax,		esi | 
|  | xor	edx,		esi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 0 | 
|  | mov	eax,		DWORD PTR [ebp] | 
|  | xor	ebx,		ebx | 
|  | mov	edx,		DWORD PTR 4[ebp] | 
|  | xor	eax,		edi | 
|  | xor	edx,		edi | 
|  | and	eax,		0fcfcfcfch | 
|  | and	edx,		0cfcfcfcfh | 
|  | 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 | 
|  | $L003end: | 
|  | ; | 
|  | ; Fixup | 
|  | ror	edi,		3 | 
|  | mov	eax,		DWORD PTR 20[esp] | 
|  | ror	esi,		3 | 
|  | mov	DWORD PTR [eax],edi | 
|  | mov	DWORD PTR 4[eax],esi | 
|  | pop	ebp | 
|  | pop	ebx | 
|  | pop	edi | 
|  | pop	esi | 
|  | ret | 
|  | _des_encrypt2 ENDP | 
|  | _TEXT	ENDS | 
|  | _TEXT	SEGMENT | 
|  | PUBLIC	_des_encrypt3 | 
|  |  | 
|  | _des_encrypt3 PROC NEAR | 
|  | push	ebx | 
|  | mov	ebx,		DWORD PTR 8[esp] | 
|  | push	ebp | 
|  | push	esi | 
|  | push	edi | 
|  | ; | 
|  | ; Load the data words | 
|  | mov	edi,		DWORD PTR [ebx] | 
|  | mov	esi,		DWORD PTR 4[ebx] | 
|  | sub	esp,		12 | 
|  | ; | 
|  | ; IP | 
|  | rol	edi,		4 | 
|  | mov	edx,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0f0f0f0f0h | 
|  | xor	edx,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	esi,		20 | 
|  | mov	edi,		esi | 
|  | xor	esi,		edx | 
|  | and	esi,		0fff0000fh | 
|  | xor	edi,		esi | 
|  | xor	edx,		esi | 
|  | ; | 
|  | rol	edi,		14 | 
|  | mov	esi,		edi | 
|  | xor	edi,		edx | 
|  | and	edi,		033333333h | 
|  | xor	esi,		edi | 
|  | xor	edx,		edi | 
|  | ; | 
|  | rol	edx,		22 | 
|  | mov	edi,		edx | 
|  | xor	edx,		esi | 
|  | and	edx,		003fc03fch | 
|  | xor	edi,		edx | 
|  | xor	esi,		edx | 
|  | ; | 
|  | rol	edi,		9 | 
|  | mov	edx,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0aaaaaaaah | 
|  | xor	edx,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | ror	edx,		3 | 
|  | ror	esi,		2 | 
|  | mov	DWORD PTR 4[ebx],esi | 
|  | mov	eax,		DWORD PTR 36[esp] | 
|  | mov	DWORD PTR [ebx],edx | 
|  | mov	edi,		DWORD PTR 40[esp] | 
|  | mov	esi,		DWORD PTR 44[esp] | 
|  | mov	DWORD PTR 8[esp],1 | 
|  | mov	DWORD PTR 4[esp],eax | 
|  | mov	DWORD PTR [esp],ebx | 
|  | call	_des_encrypt2 | 
|  | mov	DWORD PTR 8[esp],0 | 
|  | mov	DWORD PTR 4[esp],edi | 
|  | mov	DWORD PTR [esp],ebx | 
|  | call	_des_encrypt2 | 
|  | mov	DWORD PTR 8[esp],1 | 
|  | mov	DWORD PTR 4[esp],esi | 
|  | mov	DWORD PTR [esp],ebx | 
|  | call	_des_encrypt2 | 
|  | add	esp,		12 | 
|  | mov	edi,		DWORD PTR [ebx] | 
|  | mov	esi,		DWORD PTR 4[ebx] | 
|  | ; | 
|  | ; FP | 
|  | rol	esi,		2 | 
|  | rol	edi,		3 | 
|  | mov	eax,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0aaaaaaaah | 
|  | xor	eax,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	eax,		23 | 
|  | mov	edi,		eax | 
|  | xor	eax,		esi | 
|  | and	eax,		003fc03fch | 
|  | xor	edi,		eax | 
|  | xor	esi,		eax | 
|  | ; | 
|  | rol	edi,		10 | 
|  | mov	eax,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		033333333h | 
|  | xor	eax,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	esi,		18 | 
|  | mov	edi,		esi | 
|  | xor	esi,		eax | 
|  | and	esi,		0fff0000fh | 
|  | xor	edi,		esi | 
|  | xor	eax,		esi | 
|  | ; | 
|  | rol	edi,		12 | 
|  | mov	esi,		edi | 
|  | xor	edi,		eax | 
|  | and	edi,		0f0f0f0f0h | 
|  | xor	esi,		edi | 
|  | xor	eax,		edi | 
|  | ; | 
|  | ror	eax,		4 | 
|  | mov	DWORD PTR [ebx],eax | 
|  | mov	DWORD PTR 4[ebx],esi | 
|  | pop	edi | 
|  | pop	esi | 
|  | pop	ebp | 
|  | pop	ebx | 
|  | ret | 
|  | _des_encrypt3 ENDP | 
|  | _TEXT	ENDS | 
|  | _TEXT	SEGMENT | 
|  | PUBLIC	_des_decrypt3 | 
|  |  | 
|  | _des_decrypt3 PROC NEAR | 
|  | push	ebx | 
|  | mov	ebx,		DWORD PTR 8[esp] | 
|  | push	ebp | 
|  | push	esi | 
|  | push	edi | 
|  | ; | 
|  | ; Load the data words | 
|  | mov	edi,		DWORD PTR [ebx] | 
|  | mov	esi,		DWORD PTR 4[ebx] | 
|  | sub	esp,		12 | 
|  | ; | 
|  | ; IP | 
|  | rol	edi,		4 | 
|  | mov	edx,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0f0f0f0f0h | 
|  | xor	edx,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	esi,		20 | 
|  | mov	edi,		esi | 
|  | xor	esi,		edx | 
|  | and	esi,		0fff0000fh | 
|  | xor	edi,		esi | 
|  | xor	edx,		esi | 
|  | ; | 
|  | rol	edi,		14 | 
|  | mov	esi,		edi | 
|  | xor	edi,		edx | 
|  | and	edi,		033333333h | 
|  | xor	esi,		edi | 
|  | xor	edx,		edi | 
|  | ; | 
|  | rol	edx,		22 | 
|  | mov	edi,		edx | 
|  | xor	edx,		esi | 
|  | and	edx,		003fc03fch | 
|  | xor	edi,		edx | 
|  | xor	esi,		edx | 
|  | ; | 
|  | rol	edi,		9 | 
|  | mov	edx,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0aaaaaaaah | 
|  | xor	edx,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | ror	edx,		3 | 
|  | ror	esi,		2 | 
|  | mov	DWORD PTR 4[ebx],esi | 
|  | mov	esi,		DWORD PTR 36[esp] | 
|  | mov	DWORD PTR [ebx],edx | 
|  | mov	edi,		DWORD PTR 40[esp] | 
|  | mov	eax,		DWORD PTR 44[esp] | 
|  | mov	DWORD PTR 8[esp],0 | 
|  | mov	DWORD PTR 4[esp],eax | 
|  | mov	DWORD PTR [esp],ebx | 
|  | call	_des_encrypt2 | 
|  | mov	DWORD PTR 8[esp],1 | 
|  | mov	DWORD PTR 4[esp],edi | 
|  | mov	DWORD PTR [esp],ebx | 
|  | call	_des_encrypt2 | 
|  | mov	DWORD PTR 8[esp],0 | 
|  | mov	DWORD PTR 4[esp],esi | 
|  | mov	DWORD PTR [esp],ebx | 
|  | call	_des_encrypt2 | 
|  | add	esp,		12 | 
|  | mov	edi,		DWORD PTR [ebx] | 
|  | mov	esi,		DWORD PTR 4[ebx] | 
|  | ; | 
|  | ; FP | 
|  | rol	esi,		2 | 
|  | rol	edi,		3 | 
|  | mov	eax,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		0aaaaaaaah | 
|  | xor	eax,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	eax,		23 | 
|  | mov	edi,		eax | 
|  | xor	eax,		esi | 
|  | and	eax,		003fc03fch | 
|  | xor	edi,		eax | 
|  | xor	esi,		eax | 
|  | ; | 
|  | rol	edi,		10 | 
|  | mov	eax,		edi | 
|  | xor	edi,		esi | 
|  | and	edi,		033333333h | 
|  | xor	eax,		edi | 
|  | xor	esi,		edi | 
|  | ; | 
|  | rol	esi,		18 | 
|  | mov	edi,		esi | 
|  | xor	esi,		eax | 
|  | and	esi,		0fff0000fh | 
|  | xor	edi,		esi | 
|  | xor	eax,		esi | 
|  | ; | 
|  | rol	edi,		12 | 
|  | mov	esi,		edi | 
|  | xor	edi,		eax | 
|  | and	edi,		0f0f0f0f0h | 
|  | xor	esi,		edi | 
|  | xor	eax,		edi | 
|  | ; | 
|  | ror	eax,		4 | 
|  | mov	DWORD PTR [ebx],eax | 
|  | mov	DWORD PTR 4[ebx],esi | 
|  | pop	edi | 
|  | pop	esi | 
|  | pop	ebp | 
|  | pop	ebx | 
|  | ret | 
|  | _des_decrypt3 ENDP | 
|  | _TEXT	ENDS | 
|  | _TEXT	SEGMENT | 
|  | PUBLIC	_des_ncbc_encrypt | 
|  |  | 
|  | _des_ncbc_encrypt PROC NEAR | 
|  | ; | 
|  | push	ebp | 
|  | push	ebx | 
|  | push	esi | 
|  | push	edi | 
|  | mov	ebp,		DWORD PTR 28[esp] | 
|  | ; getting iv ptr from parameter 4 | 
|  | mov	ebx,		DWORD PTR 36[esp] | 
|  | mov	esi,		DWORD PTR [ebx] | 
|  | mov	edi,		DWORD PTR 4[ebx] | 
|  | push	edi | 
|  | push	esi | 
|  | push	edi | 
|  | push	esi | 
|  | mov	ebx,		esp | 
|  | mov	esi,		DWORD PTR 36[esp] | 
|  | mov	edi,		DWORD PTR 40[esp] | 
|  | ; getting encrypt flag from parameter 5 | 
|  | mov	ecx,		DWORD PTR 56[esp] | 
|  | ; get and push parameter 5 | 
|  | push	ecx | 
|  | ; get and push parameter 3 | 
|  | mov	eax,		DWORD PTR 52[esp] | 
|  | push	eax | 
|  | push	ebx | 
|  | cmp	ecx,		0 | 
|  | jz	$L004decrypt | 
|  | and	ebp,		4294967288 | 
|  | mov	eax,		DWORD PTR 12[esp] | 
|  | mov	ebx,		DWORD PTR 16[esp] | 
|  | jz	$L005encrypt_finish | 
|  | L006encrypt_loop: | 
|  | mov	ecx,		DWORD PTR [esi] | 
|  | mov	edx,		DWORD PTR 4[esi] | 
|  | xor	eax,		ecx | 
|  | xor	ebx,		edx | 
|  | mov	DWORD PTR 12[esp],eax | 
|  | mov	DWORD PTR 16[esp],ebx | 
|  | call	_des_encrypt | 
|  | mov	eax,		DWORD PTR 12[esp] | 
|  | mov	ebx,		DWORD PTR 16[esp] | 
|  | mov	DWORD PTR [edi],eax | 
|  | mov	DWORD PTR 4[edi],ebx | 
|  | add	esi,		8 | 
|  | add	edi,		8 | 
|  | sub	ebp,		8 | 
|  | jnz	L006encrypt_loop | 
|  | $L005encrypt_finish: | 
|  | mov	ebp,		DWORD PTR 56[esp] | 
|  | and	ebp,		7 | 
|  | jz	$L007finish | 
|  | xor	ecx,		ecx | 
|  | xor	edx,		edx | 
|  | mov	ebp,		DWORD PTR $L008cbc_enc_jmp_table[ebp*4] | 
|  | jmp	 ebp | 
|  | L009ej7: | 
|  | mov	dh,		BYTE PTR 6[esi] | 
|  | shl	edx,		8 | 
|  | L010ej6: | 
|  | mov	dh,		BYTE PTR 5[esi] | 
|  | L011ej5: | 
|  | mov	dl,		BYTE PTR 4[esi] | 
|  | L012ej4: | 
|  | mov	ecx,		DWORD PTR [esi] | 
|  | jmp	$L013ejend | 
|  | L014ej3: | 
|  | mov	ch,		BYTE PTR 2[esi] | 
|  | shl	ecx,		8 | 
|  | L015ej2: | 
|  | mov	ch,		BYTE PTR 1[esi] | 
|  | L016ej1: | 
|  | mov	cl,		BYTE PTR [esi] | 
|  | $L013ejend: | 
|  | xor	eax,		ecx | 
|  | xor	ebx,		edx | 
|  | mov	DWORD PTR 12[esp],eax | 
|  | mov	DWORD PTR 16[esp],ebx | 
|  | call	_des_encrypt | 
|  | mov	eax,		DWORD PTR 12[esp] | 
|  | mov	ebx,		DWORD PTR 16[esp] | 
|  | mov	DWORD PTR [edi],eax | 
|  | mov	DWORD PTR 4[edi],ebx | 
|  | jmp	$L007finish | 
|  | $L004decrypt: | 
|  | and	ebp,		4294967288 | 
|  | mov	eax,		DWORD PTR 20[esp] | 
|  | mov	ebx,		DWORD PTR 24[esp] | 
|  | jz	$L017decrypt_finish | 
|  | L018decrypt_loop: | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | mov	DWORD PTR 12[esp],eax | 
|  | mov	DWORD PTR 16[esp],ebx | 
|  | call	_des_encrypt | 
|  | mov	eax,		DWORD PTR 12[esp] | 
|  | mov	ebx,		DWORD PTR 16[esp] | 
|  | mov	ecx,		DWORD PTR 20[esp] | 
|  | mov	edx,		DWORD PTR 24[esp] | 
|  | xor	ecx,		eax | 
|  | xor	edx,		ebx | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | mov	DWORD PTR [edi],ecx | 
|  | mov	DWORD PTR 4[edi],edx | 
|  | mov	DWORD PTR 20[esp],eax | 
|  | mov	DWORD PTR 24[esp],ebx | 
|  | add	esi,		8 | 
|  | add	edi,		8 | 
|  | sub	ebp,		8 | 
|  | jnz	L018decrypt_loop | 
|  | $L017decrypt_finish: | 
|  | mov	ebp,		DWORD PTR 56[esp] | 
|  | and	ebp,		7 | 
|  | jz	$L007finish | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | mov	DWORD PTR 12[esp],eax | 
|  | mov	DWORD PTR 16[esp],ebx | 
|  | call	_des_encrypt | 
|  | mov	eax,		DWORD PTR 12[esp] | 
|  | mov	ebx,		DWORD PTR 16[esp] | 
|  | mov	ecx,		DWORD PTR 20[esp] | 
|  | mov	edx,		DWORD PTR 24[esp] | 
|  | xor	ecx,		eax | 
|  | xor	edx,		ebx | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | L019dj7: | 
|  | ror	edx,		16 | 
|  | mov	BYTE PTR 6[edi],dl | 
|  | shr	edx,		16 | 
|  | L020dj6: | 
|  | mov	BYTE PTR 5[edi],dh | 
|  | L021dj5: | 
|  | mov	BYTE PTR 4[edi],dl | 
|  | L022dj4: | 
|  | mov	DWORD PTR [edi],ecx | 
|  | jmp	$L023djend | 
|  | L024dj3: | 
|  | ror	ecx,		16 | 
|  | mov	BYTE PTR 2[edi],cl | 
|  | shl	ecx,		16 | 
|  | L025dj2: | 
|  | mov	BYTE PTR 1[esi],ch | 
|  | L026dj1: | 
|  | mov	BYTE PTR [esi],	cl | 
|  | $L023djend: | 
|  | jmp	$L007finish | 
|  | $L007finish: | 
|  | mov	ecx,		DWORD PTR 64[esp] | 
|  | add	esp,		28 | 
|  | mov	DWORD PTR [ecx],eax | 
|  | mov	DWORD PTR 4[ecx],ebx | 
|  | pop	edi | 
|  | pop	esi | 
|  | pop	ebx | 
|  | pop	ebp | 
|  | ret | 
|  | $L008cbc_enc_jmp_table: | 
|  | DD	0 | 
|  | DD	L016ej1 | 
|  | DD	L015ej2 | 
|  | DD	L014ej3 | 
|  | DD	L012ej4 | 
|  | DD	L011ej5 | 
|  | DD	L010ej6 | 
|  | DD	L009ej7 | 
|  | L027cbc_dec_jmp_table: | 
|  | DD	0 | 
|  | DD	L026dj1 | 
|  | DD	L025dj2 | 
|  | DD	L024dj3 | 
|  | DD	L022dj4 | 
|  | DD	L021dj5 | 
|  | DD	L020dj6 | 
|  | DD	L019dj7 | 
|  | _des_ncbc_encrypt ENDP | 
|  | _TEXT	ENDS | 
|  | _TEXT	SEGMENT | 
|  | PUBLIC	_des_ede3_cbc_encrypt | 
|  |  | 
|  | _des_ede3_cbc_encrypt PROC NEAR | 
|  | ; | 
|  | push	ebp | 
|  | push	ebx | 
|  | push	esi | 
|  | push	edi | 
|  | mov	ebp,		DWORD PTR 28[esp] | 
|  | ; getting iv ptr from parameter 6 | 
|  | mov	ebx,		DWORD PTR 44[esp] | 
|  | mov	esi,		DWORD PTR [ebx] | 
|  | mov	edi,		DWORD PTR 4[ebx] | 
|  | push	edi | 
|  | push	esi | 
|  | push	edi | 
|  | push	esi | 
|  | mov	ebx,		esp | 
|  | mov	esi,		DWORD PTR 36[esp] | 
|  | mov	edi,		DWORD PTR 40[esp] | 
|  | ; getting encrypt flag from parameter 7 | 
|  | mov	ecx,		DWORD PTR 64[esp] | 
|  | ; get and push parameter 5 | 
|  | mov	eax,		DWORD PTR 56[esp] | 
|  | push	eax | 
|  | ; get and push parameter 4 | 
|  | mov	eax,		DWORD PTR 56[esp] | 
|  | push	eax | 
|  | ; get and push parameter 3 | 
|  | mov	eax,		DWORD PTR 56[esp] | 
|  | push	eax | 
|  | push	ebx | 
|  | cmp	ecx,		0 | 
|  | jz	$L028decrypt | 
|  | and	ebp,		4294967288 | 
|  | mov	eax,		DWORD PTR 16[esp] | 
|  | mov	ebx,		DWORD PTR 20[esp] | 
|  | jz	$L029encrypt_finish | 
|  | L030encrypt_loop: | 
|  | mov	ecx,		DWORD PTR [esi] | 
|  | mov	edx,		DWORD PTR 4[esi] | 
|  | xor	eax,		ecx | 
|  | xor	ebx,		edx | 
|  | mov	DWORD PTR 16[esp],eax | 
|  | mov	DWORD PTR 20[esp],ebx | 
|  | call	_des_encrypt3 | 
|  | mov	eax,		DWORD PTR 16[esp] | 
|  | mov	ebx,		DWORD PTR 20[esp] | 
|  | mov	DWORD PTR [edi],eax | 
|  | mov	DWORD PTR 4[edi],ebx | 
|  | add	esi,		8 | 
|  | add	edi,		8 | 
|  | sub	ebp,		8 | 
|  | jnz	L030encrypt_loop | 
|  | $L029encrypt_finish: | 
|  | mov	ebp,		DWORD PTR 60[esp] | 
|  | and	ebp,		7 | 
|  | jz	$L031finish | 
|  | xor	ecx,		ecx | 
|  | xor	edx,		edx | 
|  | mov	ebp,		DWORD PTR $L032cbc_enc_jmp_table[ebp*4] | 
|  | jmp	 ebp | 
|  | L033ej7: | 
|  | mov	dh,		BYTE PTR 6[esi] | 
|  | shl	edx,		8 | 
|  | L034ej6: | 
|  | mov	dh,		BYTE PTR 5[esi] | 
|  | L035ej5: | 
|  | mov	dl,		BYTE PTR 4[esi] | 
|  | L036ej4: | 
|  | mov	ecx,		DWORD PTR [esi] | 
|  | jmp	$L037ejend | 
|  | L038ej3: | 
|  | mov	ch,		BYTE PTR 2[esi] | 
|  | shl	ecx,		8 | 
|  | L039ej2: | 
|  | mov	ch,		BYTE PTR 1[esi] | 
|  | L040ej1: | 
|  | mov	cl,		BYTE PTR [esi] | 
|  | $L037ejend: | 
|  | xor	eax,		ecx | 
|  | xor	ebx,		edx | 
|  | mov	DWORD PTR 16[esp],eax | 
|  | mov	DWORD PTR 20[esp],ebx | 
|  | call	_des_encrypt3 | 
|  | mov	eax,		DWORD PTR 16[esp] | 
|  | mov	ebx,		DWORD PTR 20[esp] | 
|  | mov	DWORD PTR [edi],eax | 
|  | mov	DWORD PTR 4[edi],ebx | 
|  | jmp	$L031finish | 
|  | $L028decrypt: | 
|  | and	ebp,		4294967288 | 
|  | mov	eax,		DWORD PTR 24[esp] | 
|  | mov	ebx,		DWORD PTR 28[esp] | 
|  | jz	$L041decrypt_finish | 
|  | L042decrypt_loop: | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | mov	DWORD PTR 16[esp],eax | 
|  | mov	DWORD PTR 20[esp],ebx | 
|  | call	_des_decrypt3 | 
|  | mov	eax,		DWORD PTR 16[esp] | 
|  | mov	ebx,		DWORD PTR 20[esp] | 
|  | mov	ecx,		DWORD PTR 24[esp] | 
|  | mov	edx,		DWORD PTR 28[esp] | 
|  | xor	ecx,		eax | 
|  | xor	edx,		ebx | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | mov	DWORD PTR [edi],ecx | 
|  | mov	DWORD PTR 4[edi],edx | 
|  | mov	DWORD PTR 24[esp],eax | 
|  | mov	DWORD PTR 28[esp],ebx | 
|  | add	esi,		8 | 
|  | add	edi,		8 | 
|  | sub	ebp,		8 | 
|  | jnz	L042decrypt_loop | 
|  | $L041decrypt_finish: | 
|  | mov	ebp,		DWORD PTR 60[esp] | 
|  | and	ebp,		7 | 
|  | jz	$L031finish | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | mov	DWORD PTR 16[esp],eax | 
|  | mov	DWORD PTR 20[esp],ebx | 
|  | call	_des_decrypt3 | 
|  | mov	eax,		DWORD PTR 16[esp] | 
|  | mov	ebx,		DWORD PTR 20[esp] | 
|  | mov	ecx,		DWORD PTR 24[esp] | 
|  | mov	edx,		DWORD PTR 28[esp] | 
|  | xor	ecx,		eax | 
|  | xor	edx,		ebx | 
|  | mov	eax,		DWORD PTR [esi] | 
|  | mov	ebx,		DWORD PTR 4[esi] | 
|  | L043dj7: | 
|  | ror	edx,		16 | 
|  | mov	BYTE PTR 6[edi],dl | 
|  | shr	edx,		16 | 
|  | L044dj6: | 
|  | mov	BYTE PTR 5[edi],dh | 
|  | L045dj5: | 
|  | mov	BYTE PTR 4[edi],dl | 
|  | L046dj4: | 
|  | mov	DWORD PTR [edi],ecx | 
|  | jmp	$L047djend | 
|  | L048dj3: | 
|  | ror	ecx,		16 | 
|  | mov	BYTE PTR 2[edi],cl | 
|  | shl	ecx,		16 | 
|  | L049dj2: | 
|  | mov	BYTE PTR 1[esi],ch | 
|  | L050dj1: | 
|  | mov	BYTE PTR [esi],	cl | 
|  | $L047djend: | 
|  | jmp	$L031finish | 
|  | $L031finish: | 
|  | mov	ecx,		DWORD PTR 76[esp] | 
|  | add	esp,		32 | 
|  | mov	DWORD PTR [ecx],eax | 
|  | mov	DWORD PTR 4[ecx],ebx | 
|  | pop	edi | 
|  | pop	esi | 
|  | pop	ebx | 
|  | pop	ebp | 
|  | ret | 
|  | $L032cbc_enc_jmp_table: | 
|  | DD	0 | 
|  | DD	L040ej1 | 
|  | DD	L039ej2 | 
|  | DD	L038ej3 | 
|  | DD	L036ej4 | 
|  | DD	L035ej5 | 
|  | DD	L034ej6 | 
|  | DD	L033ej7 | 
|  | L051cbc_dec_jmp_table: | 
|  | DD	0 | 
|  | DD	L050dj1 | 
|  | DD	L049dj2 | 
|  | DD	L048dj3 | 
|  | DD	L046dj4 | 
|  | DD	L045dj5 | 
|  | DD	L044dj6 | 
|  | DD	L043dj7 | 
|  | _des_ede3_cbc_encrypt ENDP | 
|  | _TEXT	ENDS | 
|  | END |