	# Don't even think of reading this code
	# It was automatically generated by bn-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	"bn-586.s"
.text
.globl	_bn_mul_add_words
.align	4
_bn_mul_add_words:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi


	xorl	%esi,		%esi
	movl	20(%esp),	%edi
	movl	28(%esp),	%ecx
	movl	24(%esp),	%ebx
	andl	$4294967288,	%ecx
	movl	32(%esp),	%ebp
	pushl	%ecx
	jz	L000maw_finish
L001maw_loop:
	movl	%ecx,		(%esp)
	# Round 0
	movl	(%ebx),		%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	(%edi),		%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		(%edi)
	movl	%edx,		%esi
	# Round 4
	movl	4(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	4(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		4(%edi)
	movl	%edx,		%esi
	# Round 8
	movl	8(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	8(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		8(%edi)
	movl	%edx,		%esi
	# Round 12
	movl	12(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	12(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		12(%edi)
	movl	%edx,		%esi
	# Round 16
	movl	16(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	16(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		16(%edi)
	movl	%edx,		%esi
	# Round 20
	movl	20(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	20(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		20(%edi)
	movl	%edx,		%esi
	# Round 24
	movl	24(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	24(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		24(%edi)
	movl	%edx,		%esi
	# Round 28
	movl	28(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	28(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		28(%edi)
	movl	%edx,		%esi

	movl	(%esp),		%ecx
	addl	$32,		%ebx
	addl	$32,		%edi
	subl	$8,		%ecx
	jnz	L001maw_loop
L000maw_finish:
	movl	32(%esp),	%ecx
	andl	$7,		%ecx
	jnz	L002maw_finish2
	jmp	L003maw_end
.align 4
L002maw_finish2:
	# Tail Round 0
	movl	(%ebx),		%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	(%edi),		%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	decl	%ecx
	movl	%eax,		(%edi)
	movl	%edx,		%esi
	jz	L003maw_end
	# Tail Round 1
	movl	4(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	4(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	decl	%ecx
	movl	%eax,		4(%edi)
	movl	%edx,		%esi
	jz	L003maw_end
	# Tail Round 2
	movl	8(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	8(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	decl	%ecx
	movl	%eax,		8(%edi)
	movl	%edx,		%esi
	jz	L003maw_end
	# Tail Round 3
	movl	12(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	12(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	decl	%ecx
	movl	%eax,		12(%edi)
	movl	%edx,		%esi
	jz	L003maw_end
	# Tail Round 4
	movl	16(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	16(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	decl	%ecx
	movl	%eax,		16(%edi)
	movl	%edx,		%esi
	jz	L003maw_end
	# Tail Round 5
	movl	20(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	20(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	decl	%ecx
	movl	%eax,		20(%edi)
	movl	%edx,		%esi
	jz	L003maw_end
	# Tail Round 6
	movl	24(%ebx),	%eax
	mull	%ebp
	addl	%esi,		%eax
	movl	24(%edi),	%esi
	adcl	$0,		%edx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		24(%edi)
	movl	%edx,		%esi
L003maw_end:
	movl	%esi,		%eax
	popl	%ecx
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
L__bn_mul_add_words_end:
.ident	"_bn_mul_add_words"
.text
.globl	_bn_mul_words
.align	4
_bn_mul_words:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi


	xorl	%esi,		%esi
	movl	20(%esp),	%edi
	movl	24(%esp),	%ebx
	movl	28(%esp),	%ebp
	movl	32(%esp),	%ecx
	andl	$4294967288,	%ebp
	jz	L004mw_finish
L005mw_loop:
	# Round 0
	movl	(%ebx),		%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		(%edi)
	movl	%edx,		%esi
	# Round 4
	movl	4(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		4(%edi)
	movl	%edx,		%esi
	# Round 8
	movl	8(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		8(%edi)
	movl	%edx,		%esi
	# Round 12
	movl	12(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		12(%edi)
	movl	%edx,		%esi
	# Round 16
	movl	16(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		16(%edi)
	movl	%edx,		%esi
	# Round 20
	movl	20(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		20(%edi)
	movl	%edx,		%esi
	# Round 24
	movl	24(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		24(%edi)
	movl	%edx,		%esi
	# Round 28
	movl	28(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		28(%edi)
	movl	%edx,		%esi

	addl	$32,		%ebx
	addl	$32,		%edi
	subl	$8,		%ebp
	jz	L004mw_finish
	jmp	L005mw_loop
L004mw_finish:
	movl	28(%esp),	%ebp
	andl	$7,		%ebp
	jnz	L006mw_finish2
	jmp	L007mw_end
.align 4
L006mw_finish2:
	# Tail Round 0
	movl	(%ebx),		%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		(%edi)
	movl	%edx,		%esi
	decl	%ebp
	jz	L007mw_end
	# Tail Round 1
	movl	4(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		4(%edi)
	movl	%edx,		%esi
	decl	%ebp
	jz	L007mw_end
	# Tail Round 2
	movl	8(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		8(%edi)
	movl	%edx,		%esi
	decl	%ebp
	jz	L007mw_end
	# Tail Round 3
	movl	12(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		12(%edi)
	movl	%edx,		%esi
	decl	%ebp
	jz	L007mw_end
	# Tail Round 4
	movl	16(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		16(%edi)
	movl	%edx,		%esi
	decl	%ebp
	jz	L007mw_end
	# Tail Round 5
	movl	20(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		20(%edi)
	movl	%edx,		%esi
	decl	%ebp
	jz	L007mw_end
	# Tail Round 6
	movl	24(%ebx),	%eax
	mull	%ecx
	addl	%esi,		%eax
	adcl	$0,		%edx
	movl	%eax,		24(%edi)
	movl	%edx,		%esi
L007mw_end:
	movl	%esi,		%eax
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
L__bn_mul_words_end:
.ident	"_bn_mul_words"
.text
.globl	_bn_sqr_words
.align	4
_bn_sqr_words:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi


	movl	20(%esp),	%esi
	movl	24(%esp),	%edi
	movl	28(%esp),	%ebx
	andl	$4294967288,	%ebx
	jz	L008sw_finish
L009sw_loop:
	# Round 0
	movl	(%edi),		%eax
	mull	%eax
	movl	%eax,		(%esi)
	movl	%edx,		4(%esi)
	# Round 4
	movl	4(%edi),	%eax
	mull	%eax
	movl	%eax,		8(%esi)
	movl	%edx,		12(%esi)
	# Round 8
	movl	8(%edi),	%eax
	mull	%eax
	movl	%eax,		16(%esi)
	movl	%edx,		20(%esi)
	# Round 12
	movl	12(%edi),	%eax
	mull	%eax
	movl	%eax,		24(%esi)
	movl	%edx,		28(%esi)
	# Round 16
	movl	16(%edi),	%eax
	mull	%eax
	movl	%eax,		32(%esi)
	movl	%edx,		36(%esi)
	# Round 20
	movl	20(%edi),	%eax
	mull	%eax
	movl	%eax,		40(%esi)
	movl	%edx,		44(%esi)
	# Round 24
	movl	24(%edi),	%eax
	mull	%eax
	movl	%eax,		48(%esi)
	movl	%edx,		52(%esi)
	# Round 28
	movl	28(%edi),	%eax
	mull	%eax
	movl	%eax,		56(%esi)
	movl	%edx,		60(%esi)

	addl	$32,		%edi
	addl	$64,		%esi
	subl	$8,		%ebx
	jnz	L009sw_loop
L008sw_finish:
	movl	28(%esp),	%ebx
	andl	$7,		%ebx
	jz	L010sw_end
	# Tail Round 0
	movl	(%edi),		%eax
	mull	%eax
	movl	%eax,		(%esi)
	decl	%ebx
	movl	%edx,		4(%esi)
	jz	L010sw_end
	# Tail Round 1
	movl	4(%edi),	%eax
	mull	%eax
	movl	%eax,		8(%esi)
	decl	%ebx
	movl	%edx,		12(%esi)
	jz	L010sw_end
	# Tail Round 2
	movl	8(%edi),	%eax
	mull	%eax
	movl	%eax,		16(%esi)
	decl	%ebx
	movl	%edx,		20(%esi)
	jz	L010sw_end
	# Tail Round 3
	movl	12(%edi),	%eax
	mull	%eax
	movl	%eax,		24(%esi)
	decl	%ebx
	movl	%edx,		28(%esi)
	jz	L010sw_end
	# Tail Round 4
	movl	16(%edi),	%eax
	mull	%eax
	movl	%eax,		32(%esi)
	decl	%ebx
	movl	%edx,		36(%esi)
	jz	L010sw_end
	# Tail Round 5
	movl	20(%edi),	%eax
	mull	%eax
	movl	%eax,		40(%esi)
	decl	%ebx
	movl	%edx,		44(%esi)
	jz	L010sw_end
	# Tail Round 6
	movl	24(%edi),	%eax
	mull	%eax
	movl	%eax,		48(%esi)
	movl	%edx,		52(%esi)
L010sw_end:
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
L__bn_sqr_words_end:
.ident	"_bn_sqr_words"
.text
.globl	_bn_div_words
.align	4
_bn_div_words:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi

	movl	20(%esp),	%edx
	movl	24(%esp),	%eax
	movl	28(%esp),	%ebx
	divl	%ebx
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
L__bn_div_words_end:
.ident	"_bn_div_words"
.text
.globl	_bn_add_words
.align	4
_bn_add_words:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi


	movl	20(%esp),	%ebx
	movl	24(%esp),	%esi
	movl	28(%esp),	%edi
	movl	32(%esp),	%ebp
	xorl	%eax,		%eax
	andl	$4294967288,	%ebp
	jz	L011aw_finish
L012aw_loop:
	# Round 0
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	# Round 1
	movl	4(%esi),	%ecx
	movl	4(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		4(%ebx)
	# Round 2
	movl	8(%esi),	%ecx
	movl	8(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		8(%ebx)
	# Round 3
	movl	12(%esi),	%ecx
	movl	12(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		12(%ebx)
	# Round 4
	movl	16(%esi),	%ecx
	movl	16(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		16(%ebx)
	# Round 5
	movl	20(%esi),	%ecx
	movl	20(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		20(%ebx)
	# Round 6
	movl	24(%esi),	%ecx
	movl	24(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		24(%ebx)
	# Round 7
	movl	28(%esi),	%ecx
	movl	28(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		28(%ebx)

	addl	$32,		%esi
	addl	$32,		%edi
	addl	$32,		%ebx
	subl	$8,		%ebp
	jnz	L012aw_loop
L011aw_finish:
	movl	32(%esp),	%ebp
	andl	$7,		%ebp
	jz	L013aw_end
	# Tail Round 0
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		(%ebx)
	jz	L013aw_end
	# Tail Round 1
	movl	4(%esi),	%ecx
	movl	4(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		4(%ebx)
	jz	L013aw_end
	# Tail Round 2
	movl	8(%esi),	%ecx
	movl	8(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		8(%ebx)
	jz	L013aw_end
	# Tail Round 3
	movl	12(%esi),	%ecx
	movl	12(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		12(%ebx)
	jz	L013aw_end
	# Tail Round 4
	movl	16(%esi),	%ecx
	movl	16(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		16(%ebx)
	jz	L013aw_end
	# Tail Round 5
	movl	20(%esi),	%ecx
	movl	20(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		20(%ebx)
	jz	L013aw_end
	# Tail Round 6
	movl	24(%esi),	%ecx
	movl	24(%edi),	%edx
	addl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	addl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		24(%ebx)
L013aw_end:
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
L__bn_add_words_end:
.ident	"_bn_add_words"
.text
.globl	_bn_sub_words
.align	4
_bn_sub_words:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi


	movl	20(%esp),	%ebx
	movl	24(%esp),	%esi
	movl	28(%esp),	%edi
	movl	32(%esp),	%ebp
	xorl	%eax,		%eax
	andl	$4294967288,	%ebp
	jz	L014aw_finish
L015aw_loop:
	# Round 0
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	# Round 1
	movl	4(%esi),	%ecx
	movl	4(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		4(%ebx)
	# Round 2
	movl	8(%esi),	%ecx
	movl	8(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		8(%ebx)
	# Round 3
	movl	12(%esi),	%ecx
	movl	12(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		12(%ebx)
	# Round 4
	movl	16(%esi),	%ecx
	movl	16(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		16(%ebx)
	# Round 5
	movl	20(%esi),	%ecx
	movl	20(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		20(%ebx)
	# Round 6
	movl	24(%esi),	%ecx
	movl	24(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		24(%ebx)
	# Round 7
	movl	28(%esi),	%ecx
	movl	28(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		28(%ebx)

	addl	$32,		%esi
	addl	$32,		%edi
	addl	$32,		%ebx
	subl	$8,		%ebp
	jnz	L015aw_loop
L014aw_finish:
	movl	32(%esp),	%ebp
	andl	$7,		%ebp
	jz	L016aw_end
	# Tail Round 0
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		(%ebx)
	jz	L016aw_end
	# Tail Round 1
	movl	4(%esi),	%ecx
	movl	4(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		4(%ebx)
	jz	L016aw_end
	# Tail Round 2
	movl	8(%esi),	%ecx
	movl	8(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		8(%ebx)
	jz	L016aw_end
	# Tail Round 3
	movl	12(%esi),	%ecx
	movl	12(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		12(%ebx)
	jz	L016aw_end
	# Tail Round 4
	movl	16(%esi),	%ecx
	movl	16(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		16(%ebx)
	jz	L016aw_end
	# Tail Round 5
	movl	20(%esi),	%ecx
	movl	20(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		20(%ebx)
	jz	L016aw_end
	# Tail Round 6
	movl	24(%esi),	%ecx
	movl	24(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		24(%ebx)
L016aw_end:
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
L__bn_sub_words_end:
.ident	"_bn_sub_words"
.text
.globl	_bn_sub_part_words
.align	4
_bn_sub_part_words:
	pushl	%ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi


	movl	20(%esp),	%ebx
	movl	24(%esp),	%esi
	movl	28(%esp),	%edi
	movl	32(%esp),	%ebp
	xorl	%eax,		%eax
	andl	$4294967288,	%ebp
	jz	L017aw_finish
L018aw_loop:
	# Round 0
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	# Round 1
	movl	4(%esi),	%ecx
	movl	4(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		4(%ebx)
	# Round 2
	movl	8(%esi),	%ecx
	movl	8(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		8(%ebx)
	# Round 3
	movl	12(%esi),	%ecx
	movl	12(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		12(%ebx)
	# Round 4
	movl	16(%esi),	%ecx
	movl	16(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		16(%ebx)
	# Round 5
	movl	20(%esi),	%ecx
	movl	20(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		20(%ebx)
	# Round 6
	movl	24(%esi),	%ecx
	movl	24(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		24(%ebx)
	# Round 7
	movl	28(%esi),	%ecx
	movl	28(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		28(%ebx)

	addl	$32,		%esi
	addl	$32,		%edi
	addl	$32,		%ebx
	subl	$8,		%ebp
	jnz	L018aw_loop
L017aw_finish:
	movl	32(%esp),	%ebp
	andl	$7,		%ebp
	jz	L019aw_end
	# Tail Round 0
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	addl	$4,		%esi
	addl	$4,		%edi
	addl	$4,		%ebx
	decl	%ebp
	jz	L019aw_end
	# Tail Round 1
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	addl	$4,		%esi
	addl	$4,		%edi
	addl	$4,		%ebx
	decl	%ebp
	jz	L019aw_end
	# Tail Round 2
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	addl	$4,		%esi
	addl	$4,		%edi
	addl	$4,		%ebx
	decl	%ebp
	jz	L019aw_end
	# Tail Round 3
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	addl	$4,		%esi
	addl	$4,		%edi
	addl	$4,		%ebx
	decl	%ebp
	jz	L019aw_end
	# Tail Round 4
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	addl	$4,		%esi
	addl	$4,		%edi
	addl	$4,		%ebx
	decl	%ebp
	jz	L019aw_end
	# Tail Round 5
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	addl	$4,		%esi
	addl	$4,		%edi
	addl	$4,		%ebx
	decl	%ebp
	jz	L019aw_end
	# Tail Round 6
	movl	(%esi),		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	addl	$4,		%esi
	addl	$4,		%edi
	addl	$4,		%ebx
L019aw_end:
	cmpl	$0,		36(%esp)
	je	L020pw_end
	movl	36(%esp),	%ebp
	cmpl	$0,		%ebp
	je	L020pw_end
	jge	L021pw_pos
	# pw_neg
	movl	$0,		%edx
	subl	%ebp,		%edx
	movl	%edx,		%ebp
	andl	$4294967288,	%ebp
	jz	L022pw_neg_finish
L023pw_neg_loop:
	# dl<0 Round 0
	movl	$0,		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		(%ebx)
	# dl<0 Round 1
	movl	$0,		%ecx
	movl	4(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		4(%ebx)
	# dl<0 Round 2
	movl	$0,		%ecx
	movl	8(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		8(%ebx)
	# dl<0 Round 3
	movl	$0,		%ecx
	movl	12(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		12(%ebx)
	# dl<0 Round 4
	movl	$0,		%ecx
	movl	16(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		16(%ebx)
	# dl<0 Round 5
	movl	$0,		%ecx
	movl	20(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		20(%ebx)
	# dl<0 Round 6
	movl	$0,		%ecx
	movl	24(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		24(%ebx)
	# dl<0 Round 7
	movl	$0,		%ecx
	movl	28(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		28(%ebx)

	addl	$32,		%edi
	addl	$32,		%ebx
	subl	$8,		%ebp
	jnz	L023pw_neg_loop
L022pw_neg_finish:
	movl	36(%esp),	%edx
	movl	$0,		%ebp
	subl	%edx,		%ebp
	andl	$7,		%ebp
	jz	L020pw_end
	# dl<0 Tail Round 0
	movl	$0,		%ecx
	movl	(%edi),		%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		(%ebx)
	jz	L020pw_end
	# dl<0 Tail Round 1
	movl	$0,		%ecx
	movl	4(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		4(%ebx)
	jz	L020pw_end
	# dl<0 Tail Round 2
	movl	$0,		%ecx
	movl	8(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		8(%ebx)
	jz	L020pw_end
	# dl<0 Tail Round 3
	movl	$0,		%ecx
	movl	12(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		12(%ebx)
	jz	L020pw_end
	# dl<0 Tail Round 4
	movl	$0,		%ecx
	movl	16(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		16(%ebx)
	jz	L020pw_end
	# dl<0 Tail Round 5
	movl	$0,		%ecx
	movl	20(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	decl	%ebp
	movl	%ecx,		20(%ebx)
	jz	L020pw_end
	# dl<0 Tail Round 6
	movl	$0,		%ecx
	movl	24(%edi),	%edx
	subl	%eax,		%ecx
	movl	$0,		%eax
	adcl	%eax,		%eax
	subl	%edx,		%ecx
	adcl	$0,		%eax
	movl	%ecx,		24(%ebx)
	jmp	L020pw_end
L021pw_pos:
	andl	$4294967288,	%ebp
	jz	L024pw_pos_finish
L025pw_pos_loop:
	# dl>0 Round 0
	movl	(%esi),		%ecx
	subl	%eax,		%ecx
	movl	%ecx,		(%ebx)
	jnc	L026pw_nc0
	# dl>0 Round 1
	movl	4(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		4(%ebx)
	jnc	L027pw_nc1
	# dl>0 Round 2
	movl	8(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		8(%ebx)
	jnc	L028pw_nc2
	# dl>0 Round 3
	movl	12(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		12(%ebx)
	jnc	L029pw_nc3
	# dl>0 Round 4
	movl	16(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		16(%ebx)
	jnc	L030pw_nc4
	# dl>0 Round 5
	movl	20(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		20(%ebx)
	jnc	L031pw_nc5
	# dl>0 Round 6
	movl	24(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		24(%ebx)
	jnc	L032pw_nc6
	# dl>0 Round 7
	movl	28(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		28(%ebx)
	jnc	L033pw_nc7

	addl	$32,		%esi
	addl	$32,		%ebx
	subl	$8,		%ebp
	jnz	L025pw_pos_loop
L024pw_pos_finish:
	movl	36(%esp),	%ebp
	andl	$7,		%ebp
	jz	L020pw_end
	# dl>0 Tail Round 0
	movl	(%esi),		%ecx
	subl	%eax,		%ecx
	movl	%ecx,		(%ebx)
	jnc	L034pw_tail_nc0
	decl	%ebp
	jz	L020pw_end
	# dl>0 Tail Round 1
	movl	4(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		4(%ebx)
	jnc	L035pw_tail_nc1
	decl	%ebp
	jz	L020pw_end
	# dl>0 Tail Round 2
	movl	8(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		8(%ebx)
	jnc	L036pw_tail_nc2
	decl	%ebp
	jz	L020pw_end
	# dl>0 Tail Round 3
	movl	12(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		12(%ebx)
	jnc	L037pw_tail_nc3
	decl	%ebp
	jz	L020pw_end
	# dl>0 Tail Round 4
	movl	16(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		16(%ebx)
	jnc	L038pw_tail_nc4
	decl	%ebp
	jz	L020pw_end
	# dl>0 Tail Round 5
	movl	20(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		20(%ebx)
	jnc	L039pw_tail_nc5
	decl	%ebp
	jz	L020pw_end
	# dl>0 Tail Round 6
	movl	24(%esi),	%ecx
	subl	%eax,		%ecx
	movl	%ecx,		24(%ebx)
	jnc	L040pw_tail_nc6
	movl	$1,		%eax
	jmp	L020pw_end
L041pw_nc_loop:
	movl	(%esi),		%ecx
	movl	%ecx,		(%ebx)
L026pw_nc0:
	movl	4(%esi),	%ecx
	movl	%ecx,		4(%ebx)
L027pw_nc1:
	movl	8(%esi),	%ecx
	movl	%ecx,		8(%ebx)
L028pw_nc2:
	movl	12(%esi),	%ecx
	movl	%ecx,		12(%ebx)
L029pw_nc3:
	movl	16(%esi),	%ecx
	movl	%ecx,		16(%ebx)
L030pw_nc4:
	movl	20(%esi),	%ecx
	movl	%ecx,		20(%ebx)
L031pw_nc5:
	movl	24(%esi),	%ecx
	movl	%ecx,		24(%ebx)
L032pw_nc6:
	movl	28(%esi),	%ecx
	movl	%ecx,		28(%ebx)
L033pw_nc7:

	addl	$32,		%esi
	addl	$32,		%ebx
	subl	$8,		%ebp
	jnz	L041pw_nc_loop
	movl	36(%esp),	%ebp
	andl	$7,		%ebp
	jz	L042pw_nc_end
	movl	(%esi),		%ecx
	movl	%ecx,		(%ebx)
L034pw_tail_nc0:
	decl	%ebp
	jz	L042pw_nc_end
	movl	4(%esi),	%ecx
	movl	%ecx,		4(%ebx)
L035pw_tail_nc1:
	decl	%ebp
	jz	L042pw_nc_end
	movl	8(%esi),	%ecx
	movl	%ecx,		8(%ebx)
L036pw_tail_nc2:
	decl	%ebp
	jz	L042pw_nc_end
	movl	12(%esi),	%ecx
	movl	%ecx,		12(%ebx)
L037pw_tail_nc3:
	decl	%ebp
	jz	L042pw_nc_end
	movl	16(%esi),	%ecx
	movl	%ecx,		16(%ebx)
L038pw_tail_nc4:
	decl	%ebp
	jz	L042pw_nc_end
	movl	20(%esi),	%ecx
	movl	%ecx,		20(%ebx)
L039pw_tail_nc5:
	decl	%ebp
	jz	L042pw_nc_end
	movl	24(%esi),	%ecx
	movl	%ecx,		24(%ebx)
L040pw_tail_nc6:
L042pw_nc_end:
	movl	$0,		%eax
L020pw_end:
	popl	%edi
	popl	%esi
	popl	%ebx
	popl	%ebp
	ret
L__bn_sub_part_words_end:
.ident	"_bn_sub_part_words"

	# Don't even think of reading this code
	# It was automatically generated by co-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>

.text
.globl	_bn_mul_comba8
.align	4
_bn_mul_comba8:
	pushl	%esi
	movl	12(%esp),	%esi
	pushl	%edi
	movl	20(%esp),	%edi
	pushl	%ebp
	pushl	%ebx
	xorl	%ebx,		%ebx
	movl	(%esi),		%eax
	xorl	%ecx,		%ecx
	movl	(%edi),		%edx
	# ################## Calculate word 0
	xorl	%ebp,		%ebp
	# mul a[0]*b[0]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	movl	(%edi),		%edx
	adcl	$0,		%ebp
	movl	%ebx,		(%eax)
	movl	4(%esi),	%eax
	# saved r[0]
	# ################## Calculate word 1
	xorl	%ebx,		%ebx
	# mul a[1]*b[0]
	mull	%edx
	addl	%eax,		%ecx
	movl	(%esi),		%eax
	adcl	%edx,		%ebp
	movl	4(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[0]*b[1]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esp),	%eax
	adcl	%edx,		%ebp
	movl	(%edi),		%edx
	adcl	$0,		%ebx
	movl	%ecx,		4(%eax)
	movl	8(%esi),	%eax
	# saved r[1]
	# ################## Calculate word 2
	xorl	%ecx,		%ecx
	# mul a[2]*b[0]
	mull	%edx
	addl	%eax,		%ebp
	movl	4(%esi),	%eax
	adcl	%edx,		%ebx
	movl	4(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[1]*b[1]
	mull	%edx
	addl	%eax,		%ebp
	movl	(%esi),		%eax
	adcl	%edx,		%ebx
	movl	8(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[0]*b[2]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esp),	%eax
	adcl	%edx,		%ebx
	movl	(%edi),		%edx
	adcl	$0,		%ecx
	movl	%ebp,		8(%eax)
	movl	12(%esi),	%eax
	# saved r[2]
	# ################## Calculate word 3
	xorl	%ebp,		%ebp
	# mul a[3]*b[0]
	mull	%edx
	addl	%eax,		%ebx
	movl	8(%esi),	%eax
	adcl	%edx,		%ecx
	movl	4(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[2]*b[1]
	mull	%edx
	addl	%eax,		%ebx
	movl	4(%esi),	%eax
	adcl	%edx,		%ecx
	movl	8(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[1]*b[2]
	mull	%edx
	addl	%eax,		%ebx
	movl	(%esi),		%eax
	adcl	%edx,		%ecx
	movl	12(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[0]*b[3]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	movl	(%edi),		%edx
	adcl	$0,		%ebp
	movl	%ebx,		12(%eax)
	movl	16(%esi),	%eax
	# saved r[3]
	# ################## Calculate word 4
	xorl	%ebx,		%ebx
	# mul a[4]*b[0]
	mull	%edx
	addl	%eax,		%ecx
	movl	12(%esi),	%eax
	adcl	%edx,		%ebp
	movl	4(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[3]*b[1]
	mull	%edx
	addl	%eax,		%ecx
	movl	8(%esi),	%eax
	adcl	%edx,		%ebp
	movl	8(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[2]*b[2]
	mull	%edx
	addl	%eax,		%ecx
	movl	4(%esi),	%eax
	adcl	%edx,		%ebp
	movl	12(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[1]*b[3]
	mull	%edx
	addl	%eax,		%ecx
	movl	(%esi),		%eax
	adcl	%edx,		%ebp
	movl	16(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[0]*b[4]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esp),	%eax
	adcl	%edx,		%ebp
	movl	(%edi),		%edx
	adcl	$0,		%ebx
	movl	%ecx,		16(%eax)
	movl	20(%esi),	%eax
	# saved r[4]
	# ################## Calculate word 5
	xorl	%ecx,		%ecx
	# mul a[5]*b[0]
	mull	%edx
	addl	%eax,		%ebp
	movl	16(%esi),	%eax
	adcl	%edx,		%ebx
	movl	4(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[4]*b[1]
	mull	%edx
	addl	%eax,		%ebp
	movl	12(%esi),	%eax
	adcl	%edx,		%ebx
	movl	8(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[3]*b[2]
	mull	%edx
	addl	%eax,		%ebp
	movl	8(%esi),	%eax
	adcl	%edx,		%ebx
	movl	12(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[2]*b[3]
	mull	%edx
	addl	%eax,		%ebp
	movl	4(%esi),	%eax
	adcl	%edx,		%ebx
	movl	16(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[1]*b[4]
	mull	%edx
	addl	%eax,		%ebp
	movl	(%esi),		%eax
	adcl	%edx,		%ebx
	movl	20(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[0]*b[5]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esp),	%eax
	adcl	%edx,		%ebx
	movl	(%edi),		%edx
	adcl	$0,		%ecx
	movl	%ebp,		20(%eax)
	movl	24(%esi),	%eax
	# saved r[5]
	# ################## Calculate word 6
	xorl	%ebp,		%ebp
	# mul a[6]*b[0]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esi),	%eax
	adcl	%edx,		%ecx
	movl	4(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[5]*b[1]
	mull	%edx
	addl	%eax,		%ebx
	movl	16(%esi),	%eax
	adcl	%edx,		%ecx
	movl	8(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[4]*b[2]
	mull	%edx
	addl	%eax,		%ebx
	movl	12(%esi),	%eax
	adcl	%edx,		%ecx
	movl	12(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[3]*b[3]
	mull	%edx
	addl	%eax,		%ebx
	movl	8(%esi),	%eax
	adcl	%edx,		%ecx
	movl	16(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[2]*b[4]
	mull	%edx
	addl	%eax,		%ebx
	movl	4(%esi),	%eax
	adcl	%edx,		%ecx
	movl	20(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[1]*b[5]
	mull	%edx
	addl	%eax,		%ebx
	movl	(%esi),		%eax
	adcl	%edx,		%ecx
	movl	24(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[0]*b[6]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	movl	(%edi),		%edx
	adcl	$0,		%ebp
	movl	%ebx,		24(%eax)
	movl	28(%esi),	%eax
	# saved r[6]
	# ################## Calculate word 7
	xorl	%ebx,		%ebx
	# mul a[7]*b[0]
	mull	%edx
	addl	%eax,		%ecx
	movl	24(%esi),	%eax
	adcl	%edx,		%ebp
	movl	4(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[6]*b[1]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esi),	%eax
	adcl	%edx,		%ebp
	movl	8(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[5]*b[2]
	mull	%edx
	addl	%eax,		%ecx
	movl	16(%esi),	%eax
	adcl	%edx,		%ebp
	movl	12(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[4]*b[3]
	mull	%edx
	addl	%eax,		%ecx
	movl	12(%esi),	%eax
	adcl	%edx,		%ebp
	movl	16(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[3]*b[4]
	mull	%edx
	addl	%eax,		%ecx
	movl	8(%esi),	%eax
	adcl	%edx,		%ebp
	movl	20(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[2]*b[5]
	mull	%edx
	addl	%eax,		%ecx
	movl	4(%esi),	%eax
	adcl	%edx,		%ebp
	movl	24(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[1]*b[6]
	mull	%edx
	addl	%eax,		%ecx
	movl	(%esi),		%eax
	adcl	%edx,		%ebp
	movl	28(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[0]*b[7]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esp),	%eax
	adcl	%edx,		%ebp
	movl	4(%edi),	%edx
	adcl	$0,		%ebx
	movl	%ecx,		28(%eax)
	movl	28(%esi),	%eax
	# saved r[7]
	# ################## Calculate word 8
	xorl	%ecx,		%ecx
	# mul a[7]*b[1]
	mull	%edx
	addl	%eax,		%ebp
	movl	24(%esi),	%eax
	adcl	%edx,		%ebx
	movl	8(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[6]*b[2]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esi),	%eax
	adcl	%edx,		%ebx
	movl	12(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[5]*b[3]
	mull	%edx
	addl	%eax,		%ebp
	movl	16(%esi),	%eax
	adcl	%edx,		%ebx
	movl	16(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[4]*b[4]
	mull	%edx
	addl	%eax,		%ebp
	movl	12(%esi),	%eax
	adcl	%edx,		%ebx
	movl	20(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[3]*b[5]
	mull	%edx
	addl	%eax,		%ebp
	movl	8(%esi),	%eax
	adcl	%edx,		%ebx
	movl	24(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[2]*b[6]
	mull	%edx
	addl	%eax,		%ebp
	movl	4(%esi),	%eax
	adcl	%edx,		%ebx
	movl	28(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[1]*b[7]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esp),	%eax
	adcl	%edx,		%ebx
	movl	8(%edi),	%edx
	adcl	$0,		%ecx
	movl	%ebp,		32(%eax)
	movl	28(%esi),	%eax
	# saved r[8]
	# ################## Calculate word 9
	xorl	%ebp,		%ebp
	# mul a[7]*b[2]
	mull	%edx
	addl	%eax,		%ebx
	movl	24(%esi),	%eax
	adcl	%edx,		%ecx
	movl	12(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[6]*b[3]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esi),	%eax
	adcl	%edx,		%ecx
	movl	16(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[5]*b[4]
	mull	%edx
	addl	%eax,		%ebx
	movl	16(%esi),	%eax
	adcl	%edx,		%ecx
	movl	20(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[4]*b[5]
	mull	%edx
	addl	%eax,		%ebx
	movl	12(%esi),	%eax
	adcl	%edx,		%ecx
	movl	24(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[3]*b[6]
	mull	%edx
	addl	%eax,		%ebx
	movl	8(%esi),	%eax
	adcl	%edx,		%ecx
	movl	28(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[2]*b[7]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	movl	12(%edi),	%edx
	adcl	$0,		%ebp
	movl	%ebx,		36(%eax)
	movl	28(%esi),	%eax
	# saved r[9]
	# ################## Calculate word 10
	xorl	%ebx,		%ebx
	# mul a[7]*b[3]
	mull	%edx
	addl	%eax,		%ecx
	movl	24(%esi),	%eax
	adcl	%edx,		%ebp
	movl	16(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[6]*b[4]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esi),	%eax
	adcl	%edx,		%ebp
	movl	20(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[5]*b[5]
	mull	%edx
	addl	%eax,		%ecx
	movl	16(%esi),	%eax
	adcl	%edx,		%ebp
	movl	24(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[4]*b[6]
	mull	%edx
	addl	%eax,		%ecx
	movl	12(%esi),	%eax
	adcl	%edx,		%ebp
	movl	28(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[3]*b[7]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esp),	%eax
	adcl	%edx,		%ebp
	movl	16(%edi),	%edx
	adcl	$0,		%ebx
	movl	%ecx,		40(%eax)
	movl	28(%esi),	%eax
	# saved r[10]
	# ################## Calculate word 11
	xorl	%ecx,		%ecx
	# mul a[7]*b[4]
	mull	%edx
	addl	%eax,		%ebp
	movl	24(%esi),	%eax
	adcl	%edx,		%ebx
	movl	20(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[6]*b[5]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esi),	%eax
	adcl	%edx,		%ebx
	movl	24(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[5]*b[6]
	mull	%edx
	addl	%eax,		%ebp
	movl	16(%esi),	%eax
	adcl	%edx,		%ebx
	movl	28(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[4]*b[7]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esp),	%eax
	adcl	%edx,		%ebx
	movl	20(%edi),	%edx
	adcl	$0,		%ecx
	movl	%ebp,		44(%eax)
	movl	28(%esi),	%eax
	# saved r[11]
	# ################## Calculate word 12
	xorl	%ebp,		%ebp
	# mul a[7]*b[5]
	mull	%edx
	addl	%eax,		%ebx
	movl	24(%esi),	%eax
	adcl	%edx,		%ecx
	movl	24(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[6]*b[6]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esi),	%eax
	adcl	%edx,		%ecx
	movl	28(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[5]*b[7]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	movl	24(%edi),	%edx
	adcl	$0,		%ebp
	movl	%ebx,		48(%eax)
	movl	28(%esi),	%eax
	# saved r[12]
	# ################## Calculate word 13
	xorl	%ebx,		%ebx
	# mul a[7]*b[6]
	mull	%edx
	addl	%eax,		%ecx
	movl	24(%esi),	%eax
	adcl	%edx,		%ebp
	movl	28(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[6]*b[7]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esp),	%eax
	adcl	%edx,		%ebp
	movl	28(%edi),	%edx
	adcl	$0,		%ebx
	movl	%ecx,		52(%eax)
	movl	28(%esi),	%eax
	# saved r[13]
	# ################## Calculate word 14
	xorl	%ecx,		%ecx
	# mul a[7]*b[7]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esp),	%eax
	adcl	%edx,		%ebx
	adcl	$0,		%ecx
	movl	%ebp,		56(%eax)
	# saved r[14]
	# save r[15]
	movl	%ebx,		60(%eax)
	popl	%ebx
	popl	%ebp
	popl	%edi
	popl	%esi
	ret
L__bn_mul_comba8_end:
.ident	"_bn_mul_comba8"
.text
.globl	_bn_mul_comba4
.align	4
_bn_mul_comba4:
	pushl	%esi
	movl	12(%esp),	%esi
	pushl	%edi
	movl	20(%esp),	%edi
	pushl	%ebp
	pushl	%ebx
	xorl	%ebx,		%ebx
	movl	(%esi),		%eax
	xorl	%ecx,		%ecx
	movl	(%edi),		%edx
	# ################## Calculate word 0
	xorl	%ebp,		%ebp
	# mul a[0]*b[0]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	movl	(%edi),		%edx
	adcl	$0,		%ebp
	movl	%ebx,		(%eax)
	movl	4(%esi),	%eax
	# saved r[0]
	# ################## Calculate word 1
	xorl	%ebx,		%ebx
	# mul a[1]*b[0]
	mull	%edx
	addl	%eax,		%ecx
	movl	(%esi),		%eax
	adcl	%edx,		%ebp
	movl	4(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[0]*b[1]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esp),	%eax
	adcl	%edx,		%ebp
	movl	(%edi),		%edx
	adcl	$0,		%ebx
	movl	%ecx,		4(%eax)
	movl	8(%esi),	%eax
	# saved r[1]
	# ################## Calculate word 2
	xorl	%ecx,		%ecx
	# mul a[2]*b[0]
	mull	%edx
	addl	%eax,		%ebp
	movl	4(%esi),	%eax
	adcl	%edx,		%ebx
	movl	4(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[1]*b[1]
	mull	%edx
	addl	%eax,		%ebp
	movl	(%esi),		%eax
	adcl	%edx,		%ebx
	movl	8(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[0]*b[2]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esp),	%eax
	adcl	%edx,		%ebx
	movl	(%edi),		%edx
	adcl	$0,		%ecx
	movl	%ebp,		8(%eax)
	movl	12(%esi),	%eax
	# saved r[2]
	# ################## Calculate word 3
	xorl	%ebp,		%ebp
	# mul a[3]*b[0]
	mull	%edx
	addl	%eax,		%ebx
	movl	8(%esi),	%eax
	adcl	%edx,		%ecx
	movl	4(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[2]*b[1]
	mull	%edx
	addl	%eax,		%ebx
	movl	4(%esi),	%eax
	adcl	%edx,		%ecx
	movl	8(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[1]*b[2]
	mull	%edx
	addl	%eax,		%ebx
	movl	(%esi),		%eax
	adcl	%edx,		%ecx
	movl	12(%edi),	%edx
	adcl	$0,		%ebp
	# mul a[0]*b[3]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	movl	4(%edi),	%edx
	adcl	$0,		%ebp
	movl	%ebx,		12(%eax)
	movl	12(%esi),	%eax
	# saved r[3]
	# ################## Calculate word 4
	xorl	%ebx,		%ebx
	# mul a[3]*b[1]
	mull	%edx
	addl	%eax,		%ecx
	movl	8(%esi),	%eax
	adcl	%edx,		%ebp
	movl	8(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[2]*b[2]
	mull	%edx
	addl	%eax,		%ecx
	movl	4(%esi),	%eax
	adcl	%edx,		%ebp
	movl	12(%edi),	%edx
	adcl	$0,		%ebx
	# mul a[1]*b[3]
	mull	%edx
	addl	%eax,		%ecx
	movl	20(%esp),	%eax
	adcl	%edx,		%ebp
	movl	8(%edi),	%edx
	adcl	$0,		%ebx
	movl	%ecx,		16(%eax)
	movl	12(%esi),	%eax
	# saved r[4]
	# ################## Calculate word 5
	xorl	%ecx,		%ecx
	# mul a[3]*b[2]
	mull	%edx
	addl	%eax,		%ebp
	movl	8(%esi),	%eax
	adcl	%edx,		%ebx
	movl	12(%edi),	%edx
	adcl	$0,		%ecx
	# mul a[2]*b[3]
	mull	%edx
	addl	%eax,		%ebp
	movl	20(%esp),	%eax
	adcl	%edx,		%ebx
	movl	12(%edi),	%edx
	adcl	$0,		%ecx
	movl	%ebp,		20(%eax)
	movl	12(%esi),	%eax
	# saved r[5]
	# ################## Calculate word 6
	xorl	%ebp,		%ebp
	# mul a[3]*b[3]
	mull	%edx
	addl	%eax,		%ebx
	movl	20(%esp),	%eax
	adcl	%edx,		%ecx
	adcl	$0,		%ebp
	movl	%ebx,		24(%eax)
	# saved r[6]
	# save r[7]
	movl	%ecx,		28(%eax)
	popl	%ebx
	popl	%ebp
	popl	%edi
	popl	%esi
	ret
L__bn_mul_comba4_end:
.ident	"_bn_mul_comba4"
.text
.globl	_bn_sqr_comba8
.align	4
_bn_sqr_comba8:
	pushl	%esi
	pushl	%edi
	pushl	%ebp
	pushl	%ebx
	movl	20(%esp),	%edi
	movl	24(%esp),	%esi
	xorl	%ebx,		%ebx
	xorl	%ecx,		%ecx
	movl	(%esi),		%eax
	# ############### Calculate word 0
	xorl	%ebp,		%ebp
	# sqr a[0]*a[0]
	mull	%eax
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	(%esi),		%edx
	adcl	$0,		%ebp
	movl	%ebx,		(%edi)
	movl	4(%esi),	%eax
	# saved r[0]
	# ############### Calculate word 1
	xorl	%ebx,		%ebx
	# sqr a[1]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	8(%esi),	%eax
	adcl	$0,		%ebx
	movl	%ecx,		4(%edi)
	movl	(%esi),		%edx
	# saved r[1]
	# ############### Calculate word 2
	xorl	%ecx,		%ecx
	# sqr a[2]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	4(%esi),	%eax
	adcl	$0,		%ecx
	# sqr a[1]*a[1]
	mull	%eax
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	(%esi),		%edx
	adcl	$0,		%ecx
	movl	%ebp,		8(%edi)
	movl	12(%esi),	%eax
	# saved r[2]
	# ############### Calculate word 3
	xorl	%ebp,		%ebp
	# sqr a[3]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	8(%esi),	%eax
	adcl	$0,		%ebp
	movl	4(%esi),	%edx
	# sqr a[2]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	16(%esi),	%eax
	adcl	$0,		%ebp
	movl	%ebx,		12(%edi)
	movl	(%esi),		%edx
	# saved r[3]
	# ############### Calculate word 4
	xorl	%ebx,		%ebx
	# sqr a[4]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	12(%esi),	%eax
	adcl	$0,		%ebx
	movl	4(%esi),	%edx
	# sqr a[3]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	8(%esi),	%eax
	adcl	$0,		%ebx
	# sqr a[2]*a[2]
	mull	%eax
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	(%esi),		%edx
	adcl	$0,		%ebx
	movl	%ecx,		16(%edi)
	movl	20(%esi),	%eax
	# saved r[4]
	# ############### Calculate word 5
	xorl	%ecx,		%ecx
	# sqr a[5]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	16(%esi),	%eax
	adcl	$0,		%ecx
	movl	4(%esi),	%edx
	# sqr a[4]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	12(%esi),	%eax
	adcl	$0,		%ecx
	movl	8(%esi),	%edx
	# sqr a[3]*a[2]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	24(%esi),	%eax
	adcl	$0,		%ecx
	movl	%ebp,		20(%edi)
	movl	(%esi),		%edx
	# saved r[5]
	# ############### Calculate word 6
	xorl	%ebp,		%ebp
	# sqr a[6]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	20(%esi),	%eax
	adcl	$0,		%ebp
	movl	4(%esi),	%edx
	# sqr a[5]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	16(%esi),	%eax
	adcl	$0,		%ebp
	movl	8(%esi),	%edx
	# sqr a[4]*a[2]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	12(%esi),	%eax
	adcl	$0,		%ebp
	# sqr a[3]*a[3]
	mull	%eax
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	(%esi),		%edx
	adcl	$0,		%ebp
	movl	%ebx,		24(%edi)
	movl	28(%esi),	%eax
	# saved r[6]
	# ############### Calculate word 7
	xorl	%ebx,		%ebx
	# sqr a[7]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	24(%esi),	%eax
	adcl	$0,		%ebx
	movl	4(%esi),	%edx
	# sqr a[6]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	20(%esi),	%eax
	adcl	$0,		%ebx
	movl	8(%esi),	%edx
	# sqr a[5]*a[2]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	16(%esi),	%eax
	adcl	$0,		%ebx
	movl	12(%esi),	%edx
	# sqr a[4]*a[3]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	28(%esi),	%eax
	adcl	$0,		%ebx
	movl	%ecx,		28(%edi)
	movl	4(%esi),	%edx
	# saved r[7]
	# ############### Calculate word 8
	xorl	%ecx,		%ecx
	# sqr a[7]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	24(%esi),	%eax
	adcl	$0,		%ecx
	movl	8(%esi),	%edx
	# sqr a[6]*a[2]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	20(%esi),	%eax
	adcl	$0,		%ecx
	movl	12(%esi),	%edx
	# sqr a[5]*a[3]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	16(%esi),	%eax
	adcl	$0,		%ecx
	# sqr a[4]*a[4]
	mull	%eax
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	8(%esi),	%edx
	adcl	$0,		%ecx
	movl	%ebp,		32(%edi)
	movl	28(%esi),	%eax
	# saved r[8]
	# ############### Calculate word 9
	xorl	%ebp,		%ebp
	# sqr a[7]*a[2]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	24(%esi),	%eax
	adcl	$0,		%ebp
	movl	12(%esi),	%edx
	# sqr a[6]*a[3]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	20(%esi),	%eax
	adcl	$0,		%ebp
	movl	16(%esi),	%edx
	# sqr a[5]*a[4]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	28(%esi),	%eax
	adcl	$0,		%ebp
	movl	%ebx,		36(%edi)
	movl	12(%esi),	%edx
	# saved r[9]
	# ############### Calculate word 10
	xorl	%ebx,		%ebx
	# sqr a[7]*a[3]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	24(%esi),	%eax
	adcl	$0,		%ebx
	movl	16(%esi),	%edx
	# sqr a[6]*a[4]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	20(%esi),	%eax
	adcl	$0,		%ebx
	# sqr a[5]*a[5]
	mull	%eax
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	16(%esi),	%edx
	adcl	$0,		%ebx
	movl	%ecx,		40(%edi)
	movl	28(%esi),	%eax
	# saved r[10]
	# ############### Calculate word 11
	xorl	%ecx,		%ecx
	# sqr a[7]*a[4]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	24(%esi),	%eax
	adcl	$0,		%ecx
	movl	20(%esi),	%edx
	# sqr a[6]*a[5]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	28(%esi),	%eax
	adcl	$0,		%ecx
	movl	%ebp,		44(%edi)
	movl	20(%esi),	%edx
	# saved r[11]
	# ############### Calculate word 12
	xorl	%ebp,		%ebp
	# sqr a[7]*a[5]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	24(%esi),	%eax
	adcl	$0,		%ebp
	# sqr a[6]*a[6]
	mull	%eax
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	24(%esi),	%edx
	adcl	$0,		%ebp
	movl	%ebx,		48(%edi)
	movl	28(%esi),	%eax
	# saved r[12]
	# ############### Calculate word 13
	xorl	%ebx,		%ebx
	# sqr a[7]*a[6]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	28(%esi),	%eax
	adcl	$0,		%ebx
	movl	%ecx,		52(%edi)
	# saved r[13]
	# ############### Calculate word 14
	xorl	%ecx,		%ecx
	# sqr a[7]*a[7]
	mull	%eax
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	adcl	$0,		%ecx
	movl	%ebp,		56(%edi)
	# saved r[14]
	movl	%ebx,		60(%edi)
	popl	%ebx
	popl	%ebp
	popl	%edi
	popl	%esi
	ret
L__bn_sqr_comba8_end:
.ident	"_bn_sqr_comba8"
.text
.globl	_bn_sqr_comba4
.align	4
_bn_sqr_comba4:
	pushl	%esi
	pushl	%edi
	pushl	%ebp
	pushl	%ebx
	movl	20(%esp),	%edi
	movl	24(%esp),	%esi
	xorl	%ebx,		%ebx
	xorl	%ecx,		%ecx
	movl	(%esi),		%eax
	# ############### Calculate word 0
	xorl	%ebp,		%ebp
	# sqr a[0]*a[0]
	mull	%eax
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	(%esi),		%edx
	adcl	$0,		%ebp
	movl	%ebx,		(%edi)
	movl	4(%esi),	%eax
	# saved r[0]
	# ############### Calculate word 1
	xorl	%ebx,		%ebx
	# sqr a[1]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	8(%esi),	%eax
	adcl	$0,		%ebx
	movl	%ecx,		4(%edi)
	movl	(%esi),		%edx
	# saved r[1]
	# ############### Calculate word 2
	xorl	%ecx,		%ecx
	# sqr a[2]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	4(%esi),	%eax
	adcl	$0,		%ecx
	# sqr a[1]*a[1]
	mull	%eax
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	(%esi),		%edx
	adcl	$0,		%ecx
	movl	%ebp,		8(%edi)
	movl	12(%esi),	%eax
	# saved r[2]
	# ############### Calculate word 3
	xorl	%ebp,		%ebp
	# sqr a[3]*a[0]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	8(%esi),	%eax
	adcl	$0,		%ebp
	movl	4(%esi),	%edx
	# sqr a[2]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebp
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	movl	12(%esi),	%eax
	adcl	$0,		%ebp
	movl	%ebx,		12(%edi)
	movl	4(%esi),	%edx
	# saved r[3]
	# ############### Calculate word 4
	xorl	%ebx,		%ebx
	# sqr a[3]*a[1]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ebx
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	8(%esi),	%eax
	adcl	$0,		%ebx
	# sqr a[2]*a[2]
	mull	%eax
	addl	%eax,		%ecx
	adcl	%edx,		%ebp
	movl	8(%esi),	%edx
	adcl	$0,		%ebx
	movl	%ecx,		16(%edi)
	movl	12(%esi),	%eax
	# saved r[4]
	# ############### Calculate word 5
	xorl	%ecx,		%ecx
	# sqr a[3]*a[2]
	mull	%edx
	addl	%eax,		%eax
	adcl	%edx,		%edx
	adcl	$0,		%ecx
	addl	%eax,		%ebp
	adcl	%edx,		%ebx
	movl	12(%esi),	%eax
	adcl	$0,		%ecx
	movl	%ebp,		20(%edi)
	# saved r[5]
	# ############### Calculate word 6
	xorl	%ebp,		%ebp
	# sqr a[3]*a[3]
	mull	%eax
	addl	%eax,		%ebx
	adcl	%edx,		%ecx
	adcl	$0,		%ebp
	movl	%ebx,		24(%edi)
	# saved r[6]
	movl	%ecx,		28(%edi)
	popl	%ebx
	popl	%ebp
	popl	%edi
	popl	%esi
	ret
L__bn_sqr_comba4_end:
.ident	"_bn_sqr_comba4"
