	/* Don't even think of reading this code */
	/* It was automatically generated by bf586.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.7.0+ */
	/* eric <eay@mincom.oz.au> */

	.file	"bfx86xxxx.s"
	.version	"01.01"
gcc2_compiled.:
.text
	.align ALIGN
.globl BF_encrypt
	TYPE(BF_encrypt,@function)
BF_encrypt:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi


	/* Load the 2 words */
	movl	20(%esp),	%eax
	movl	(%eax),		%ecx
	movl	4(%eax),	%edx

	/* P pointer, s and enc flag */
	movl	24(%esp),	%edi
	xorl	%eax,		%eax
	xorl	%ebx,		%ebx
	movl	28(%esp),	%ebp
	cmpl	$0,		%ebp
	je	.L000start_decrypt
	xorl	(%edi),		%ecx

	/* Round 0 */
	rorl	$16,		%ecx
	movl	4(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 1 */
	rorl	$16,		%edx
	movl	8(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 2 */
	rorl	$16,		%ecx
	movl	12(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 3 */
	rorl	$16,		%edx
	movl	16(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 4 */
	rorl	$16,		%ecx
	movl	20(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 5 */
	rorl	$16,		%edx
	movl	24(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 6 */
	rorl	$16,		%ecx
	movl	28(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 7 */
	rorl	$16,		%edx
	movl	32(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 8 */
	rorl	$16,		%ecx
	movl	36(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 9 */
	rorl	$16,		%edx
	movl	40(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 10 */
	rorl	$16,		%ecx
	movl	44(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 11 */
	rorl	$16,		%edx
	movl	48(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 12 */
	rorl	$16,		%ecx
	movl	52(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 13 */
	rorl	$16,		%edx
	movl	56(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 14 */
	rorl	$16,		%ecx
	movl	60(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 15 */
	rorl	$16,		%edx
	movl	64(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx
	xorl	68(%edi),	%edx
	movl	20(%esp),	%eax
	movl	%edx,		(%eax)
	movl	%ecx,		4(%eax)
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.align ALIGN
.L000start_decrypt:
	xorl	68(%edi),	%ecx

	/* Round 16 */
	rorl	$16,		%ecx
	movl	64(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 15 */
	rorl	$16,		%edx
	movl	60(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 14 */
	rorl	$16,		%ecx
	movl	56(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 13 */
	rorl	$16,		%edx
	movl	52(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 12 */
	rorl	$16,		%ecx
	movl	48(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 11 */
	rorl	$16,		%edx
	movl	44(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 10 */
	rorl	$16,		%ecx
	movl	40(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 9 */
	rorl	$16,		%edx
	movl	36(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 8 */
	rorl	$16,		%ecx
	movl	32(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 7 */
	rorl	$16,		%edx
	movl	28(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 6 */
	rorl	$16,		%ecx
	movl	24(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 5 */
	rorl	$16,		%edx
	movl	20(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 4 */
	rorl	$16,		%ecx
	movl	16(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 3 */
	rorl	$16,		%edx
	movl	12(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx

	/* Round 2 */
	rorl	$16,		%ecx
	movl	8(%edi),	%esi
	movb	%ch,		%al
	movb	%cl,		%bl
	rorl	$16,		%ecx
	xorl	%esi,		%edx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%ch,		%al
	movb	%cl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%edx

	/* Round 1 */
	rorl	$16,		%edx
	movl	4(%edi),	%esi
	movb	%dh,		%al
	movb	%dl,		%bl
	rorl	$16,		%edx
	xorl	%esi,		%ecx
	movl	72(%edi,%eax,4),%esi
	movl	1096(%edi,%ebx,4),%ebp
	movb	%dh,		%al
	movb	%dl,		%bl
	addl	%ebp,		%esi
	movl	2120(%edi,%eax,4),%eax
	xorl	%eax,		%esi
	movl	3144(%edi,%ebx,4),%ebp
	addl	%ebp,		%esi
	xorl	%eax,		%eax
	xorl	%esi,		%ecx
	xorl	(%edi),		%edx
	movl	20(%esp),	%eax
	movl	%edx,		(%eax)
	movl	%ecx,		4(%eax)
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.BF_encrypt_end:
	SIZE(BF_encrypt,.BF_encrypt_end-BF_encrypt)
.ident	"desasm.pl"
