	# Don't even think of reading this code 
	# It was automatically generated by rc5-586.pl 
	# Which is a perl program used to generate the x86 assember for 
	# any of ELF, a.out, COFF, Win32, ... 
	# eric <eay@cryptsoft.com> 

	.file	"rc5-586.s"
.text
.globl	_RC5_32_encrypt
.def	_RC5_32_encrypt;	.scl	2;	.type	32;	.endef
.align	16
_RC5_32_encrypt:

	pushl	%ebp
	pushl	%esi
	pushl	%edi
	movl	16(%esp),	%edx
	movl	20(%esp),	%ebp
	# Load the 2 words 
	movl	(%edx),		%edi
	movl	4(%edx),	%esi
	pushl	%ebx
	movl	(%ebp),		%ebx
	addl	4(%ebp),	%edi
	addl	8(%ebp),	%esi
	xorl	%esi,		%edi
	movl	12(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	16(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	20(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	24(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	28(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	32(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	36(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	40(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	44(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	48(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	52(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	56(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	60(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	64(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	68(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	72(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	cmpl	$8,		%ebx
	je	.L000rc5_exit
	xorl	%esi,		%edi
	movl	76(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	80(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	84(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	88(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	92(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	96(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	100(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	104(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	cmpl	$12,		%ebx
	je	.L000rc5_exit
	xorl	%esi,		%edi
	movl	108(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	112(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	116(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	120(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	124(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	128(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
	xorl	%esi,		%edi
	movl	132(%ebp),	%eax
	movl	%esi,		%ecx
	roll	%cl,		%edi
	addl	%eax,		%edi
	xorl	%edi,		%esi
	movl	136(%ebp),	%eax
	movl	%edi,		%ecx
	roll	%cl,		%esi
	addl	%eax,		%esi
.L000rc5_exit:
	movl	%edi,		(%edx)
	movl	%esi,		4(%edx)
	popl	%ebx
	popl	%edi
	popl	%esi
	popl	%ebp
	ret
.L__RC5_32_encrypt_end:
.ident	"_RC5_32_encrypt"
.text
.globl	_RC5_32_decrypt
.def	_RC5_32_decrypt;	.scl	2;	.type	32;	.endef
.align	16
_RC5_32_decrypt:

	pushl	%ebp
	pushl	%esi
	pushl	%edi
	movl	16(%esp),	%edx
	movl	20(%esp),	%ebp
	# Load the 2 words 
	movl	(%edx),		%edi
	movl	4(%edx),	%esi
	pushl	%ebx
	movl	(%ebp),		%ebx
	cmpl	$12,		%ebx
	je	.L001rc5_dec_12
	cmpl	$8,		%ebx
	je	.L002rc5_dec_8
	movl	136(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	132(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	128(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	124(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	120(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	116(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	112(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	108(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
.L001rc5_dec_12:
	movl	104(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	100(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	96(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	92(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	88(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	84(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	80(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	76(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
.L002rc5_dec_8:
	movl	72(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	68(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	64(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	60(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	56(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	52(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	48(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	44(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	40(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	36(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	32(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	28(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	24(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	20(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	movl	16(%ebp),	%eax
	subl	%eax,		%esi
	movl	%edi,		%ecx
	rorl	%cl,		%esi
	xorl	%edi,		%esi
	movl	12(%ebp),	%eax
	subl	%eax,		%edi
	movl	%esi,		%ecx
	rorl	%cl,		%edi
	xorl	%esi,		%edi
	subl	8(%ebp),	%esi
	subl	4(%ebp),	%edi
.L003rc5_exit:
	movl	%edi,		(%edx)
	movl	%esi,		4(%edx)
	popl	%ebx
	popl	%edi
	popl	%esi
	popl	%ebp
	ret
.L__RC5_32_decrypt_end:
.ident	"_RC5_32_decrypt"
.text
.globl	_RC5_32_cbc_encrypt
.def	_RC5_32_cbc_encrypt;	.scl	2;	.type	32;	.endef
.align	16
_RC5_32_cbc_encrypt:

	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi
	movl	28(%esp),	%ebp
	# getting iv ptr from parameter 4 
	movl	36(%esp),	%ebx
	movl	(%ebx),		%esi
	movl	4(%ebx),	%edi
	pushl	%edi
	pushl	%esi
	pushl	%edi
	pushl	%esi
	movl	%esp,		%ebx
	movl	36(%esp),	%esi
	movl	40(%esp),	%edi
	# getting encrypt flag from parameter 5 
	movl	56(%esp),	%ecx
	# get and push parameter 3 
	movl	48(%esp),	%eax
	pushl	%eax
	pushl	%ebx
	cmpl	$0,		%ecx
	jz	.L004decrypt
	andl	$4294967288,	%ebp
	movl	8(%esp),	%eax
	movl	12(%esp),	%ebx
	jz	.L005encrypt_finish
.L006encrypt_loop:
	movl	(%esi),		%ecx
	movl	4(%esi),	%edx
	xorl	%ecx,		%eax
	xorl	%edx,		%ebx
	movl	%eax,		8(%esp)
	movl	%ebx,		12(%esp)
	call	_RC5_32_encrypt
	movl	8(%esp),	%eax
	movl	12(%esp),	%ebx
	movl	%eax,		(%edi)
	movl	%ebx,		4(%edi)
	addl	$8,		%esi
	addl	$8,		%edi
	subl	$8,		%ebp
	jnz	.L006encrypt_loop
.L005encrypt_finish:
	movl	52(%esp),	%ebp
	andl	$7,		%ebp
	jz	.L007finish
	call	.L008PIC_point
.L008PIC_point:
	popl	%edx
	leal	.L009cbc_enc_jmp_table-.L008PIC_point(%edx),%ecx
	movl	(%ecx,%ebp,4),	%ebp
	addl	%edx,		%ebp
	xorl	%ecx,		%ecx
	xorl	%edx,		%edx
	jmp	*%ebp
.L010ej7:
	movb	6(%esi),	%dh
	sall	$8,		%edx
.L011ej6:
	movb	5(%esi),	%dh
.L012ej5:
	movb	4(%esi),	%dl
.L013ej4:
	movl	(%esi),		%ecx
	jmp	.L014ejend
.L015ej3:
	movb	2(%esi),	%ch
	sall	$8,		%ecx
.L016ej2:
	movb	1(%esi),	%ch
.L017ej1:
	movb	(%esi),		%cl
.L014ejend:
	xorl	%ecx,		%eax
	xorl	%edx,		%ebx
	movl	%eax,		8(%esp)
	movl	%ebx,		12(%esp)
	call	_RC5_32_encrypt
	movl	8(%esp),	%eax
	movl	12(%esp),	%ebx
	movl	%eax,		(%edi)
	movl	%ebx,		4(%edi)
	jmp	.L007finish
.align 16
.L004decrypt:
	andl	$4294967288,	%ebp
	movl	16(%esp),	%eax
	movl	20(%esp),	%ebx
	jz	.L018decrypt_finish
.L019decrypt_loop:
	movl	(%esi),		%eax
	movl	4(%esi),	%ebx
	movl	%eax,		8(%esp)
	movl	%ebx,		12(%esp)
	call	_RC5_32_decrypt
	movl	8(%esp),	%eax
	movl	12(%esp),	%ebx
	movl	16(%esp),	%ecx
	movl	20(%esp),	%edx
	xorl	%eax,		%ecx
	xorl	%ebx,		%edx
	movl	(%esi),		%eax
	movl	4(%esi),	%ebx
	movl	%ecx,		(%edi)
	movl	%edx,		4(%edi)
	movl	%eax,		16(%esp)
	movl	%ebx,		20(%esp)
	addl	$8,		%esi
	addl	$8,		%edi
	subl	$8,		%ebp
	jnz	.L019decrypt_loop
.L018decrypt_finish:
	movl	52(%esp),	%ebp
	andl	$7,		%ebp
	jz	.L007finish
	movl	(%esi),		%eax
	movl	4(%esi),	%ebx
	movl	%eax,		8(%esp)
	movl	%ebx,		12(%esp)
	call	_RC5_32_decrypt
	movl	8(%esp),	%eax
	movl	12(%esp),	%ebx
	movl	16(%esp),	%ecx
	movl	20(%esp),	%edx
	xorl	%eax,		%ecx
	xorl	%ebx,		%edx
	movl	(%esi),		%eax
	movl	4(%esi),	%ebx
.L020dj7:
	rorl	$16,		%edx
	movb	%dl,		6(%edi)
	shrl	$16,		%edx
.L021dj6:
	movb	%dh,		5(%edi)
.L022dj5:
	movb	%dl,		4(%edi)
.L023dj4:
	movl	%ecx,		(%edi)
	jmp	.L024djend
.L025dj3:
	rorl	$16,		%ecx
	movb	%cl,		2(%edi)
	sall	$16,		%ecx
.L026dj2:
	movb	%ch,		1(%esi)
.L027dj1:
	movb	%cl,		(%esi)
.L024djend:
	jmp	.L007finish
.align 16
.L007finish:
	movl	60(%esp),	%ecx
	addl	$24,		%esp
	movl	%eax,		(%ecx)
	movl	%ebx,		4(%ecx)
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
.align	64
.L009cbc_enc_jmp_table:
	.long	0
	.long	.L017ej1-.L008PIC_point
	.long	.L016ej2-.L008PIC_point
	.long	.L015ej3-.L008PIC_point
	.long	.L013ej4-.L008PIC_point
	.long	.L012ej5-.L008PIC_point
	.long	.L011ej6-.L008PIC_point
	.long	.L010ej7-.L008PIC_point
.align	64
.L__RC5_32_cbc_encrypt_end:
.ident	"_RC5_32_cbc_encrypt"
