	; Don't even think of reading this code
	; It was automatically generated by crypt.pl
	; Which is a perl program used to generate the x86 assember for
	; any of elf, a.out, Win32, or Solaris
	; It can be found in SSLeay 0.6.5+ or in libdes 3.26+
	; eric <eay@cryptsoft.com>
	; The inner loop instruction sequence and the IP/FP modifications
	; are from Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
	; 
	TITLE	dx86xxxx.asm
        .386
.model FLAT
_TEXT	SEGMENT
PUBLIC	_fcrypt_body
EXTRN	_des_SPtrans:DWORD
_fcrypt_body PROC NEAR
	push	ebp
	push	ebx
	push	esi
	push	edi
	; 
	; Load the 2 words
	xor	edi,		edi
	xor	esi,		esi
	mov	ebp,		DWORD PTR 24[esp]
	mov	DWORD PTR 36[esp],25
L000start:
	; 
	; Round 0
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR [ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 4[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 1
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 8[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 12[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	; 
	; Round 2
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 16[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 20[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 3
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 24[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 28[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	; 
	; Round 4
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 32[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 36[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 5
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 40[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 44[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	; 
	; Round 6
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 48[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 52[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 7
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 56[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 60[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	; 
	; Round 8
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 64[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 68[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 9
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 72[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 76[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	; 
	; Round 10
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 80[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 84[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 11
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 88[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 92[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	; 
	; Round 12
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 96[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 100[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 13
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 104[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 108[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	; 
	; Round 14
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		esi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		esi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 112[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 116[ebp]
	xor	eax,		esi
	xor	edx,		esi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	edi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	edi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	edi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	edi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	edi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	edi,		ebx
	; 
	; Round 15
	mov	eax,		DWORD PTR 28[esp]
	mov	edx,		edi
	shr	edx,		16
	mov	ecx,		DWORD PTR 32[esp]
	xor	edx,		edi
	and	eax,		edx
	and	edx,		ecx
	mov	ebx,		eax
	shl	ebx,		16
	mov	ecx,		edx
	shl	ecx,		16
	xor	eax,		ebx
	xor	edx,		ecx
	mov	ebx,		DWORD PTR 120[ebp]
	xor	eax,		ebx
	mov	ecx,		DWORD PTR 124[ebp]
	xor	eax,		edi
	xor	edx,		edi
	xor	edx,		ecx
	and	eax,		0fcfcfcfch
	xor	ebx,		ebx
	and	edx,		0cfcfcfcfh
	xor	ecx,		ecx
	mov	bl,		al
	mov	cl,		ah
	ror	edx,		4
	mov	ebp,		DWORD PTR _des_SPtrans[ebx]
	mov	bl,		dl
	xor	esi,		ebp
	mov	ebp,		DWORD PTR _des_SPtrans[0200h+ecx]
	xor	esi,		ebp
	mov	cl,		dh
	shr	eax,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0100h+ebx]
	xor	esi,		ebp
	mov	bl,		ah
	shr	edx,		16
	mov	ebp,		DWORD PTR _des_SPtrans[0300h+ecx]
	xor	esi,		ebp
	mov	ebp,		DWORD PTR 24[esp]
	mov	cl,		dh
	and	eax,		0ffh
	and	edx,		0ffh
	mov	ebx,		DWORD PTR _des_SPtrans[0600h+ebx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0700h+ecx]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0400h+eax]
	xor	esi,		ebx
	mov	ebx,		DWORD PTR _des_SPtrans[0500h+edx]
	xor	esi,		ebx
	mov	eax,		edi
	dec	DWORD PTR 36[esp]
	mov	edi,		esi
	mov	esi,		eax
	jnz	L000start
	; 
	; FP
	mov	edx,		DWORD PTR 20[esp]
	ror	edi,		1
	mov	eax,		esi
	xor	esi,		edi
	and	esi,		0aaaaaaaah
	xor	eax,		esi
	xor	edi,		esi
	; 
	rol	eax,		23
	mov	esi,		eax
	xor	eax,		edi
	and	eax,		003fc03fch
	xor	esi,		eax
	xor	edi,		eax
	; 
	rol	esi,		10
	mov	eax,		esi
	xor	esi,		edi
	and	esi,		033333333h
	xor	eax,		esi
	xor	edi,		esi
	; 
	rol	edi,		18
	mov	esi,		edi
	xor	edi,		eax
	and	edi,		0fff0000fh
	xor	esi,		edi
	xor	eax,		edi
	; 
	rol	esi,		12
	mov	edi,		esi
	xor	esi,		eax
	and	esi,		0f0f0f0f0h
	xor	edi,		esi
	xor	eax,		esi
	; 
	ror	eax,		4
	mov	DWORD PTR [edx],eax
	mov	DWORD PTR 4[edx],edi
	pop	edi
	pop	esi
	pop	ebx
	pop	ebp
	ret
_fcrypt_body ENDP
_TEXT	ENDS
END
