bn-586.S revision 95967
195967Speter	# $FreeBSD: head/secure/lib/libcrypto/i386/bn-586.s 95967 2002-05-03 00:14:39Z peter $
295967Speter	# Dont even think of reading this code
395967Speter	# It was automatically generated by bn-586.pl
495967Speter	# Which is a perl program used to generate the x86 assember for
595967Speter	# any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris
695967Speter	# eric <eay@cryptsoft.com>
795967Speter
895967Speter	.file	"bn-586.s"
995967Speter	.version	"01.01"
1095967Spetergcc2_compiled.:
1195967Speter.text
1295967Speter	.align 16
1395967Speter.globl bn_mul_add_words
1495967Speter	.type	bn_mul_add_words,@function
1595967Speterbn_mul_add_words:
1695967Speter	pushl	%ebp
1795967Speter	pushl	%ebx
1895967Speter	pushl	%esi
1995967Speter	pushl	%edi
2095967Speter
2195967Speter
2295967Speter	xorl	%esi,		%esi
2395967Speter	movl	20(%esp),	%edi
2495967Speter	movl	28(%esp),	%ecx
2595967Speter	movl	24(%esp),	%ebx
2695967Speter	andl	$4294967288,	%ecx
2795967Speter	movl	32(%esp),	%ebp
2895967Speter	pushl	%ecx
2995967Speter	jz	.L000maw_finish
3095967Speter.L001maw_loop:
3195967Speter	movl	%ecx,		(%esp)
3295967Speter	# Round 0
3395967Speter	movl	(%ebx),		%eax
3495967Speter	mull	%ebp
3595967Speter	addl	%esi,		%eax
3695967Speter	movl	(%edi),		%esi
3795967Speter	adcl	$0,		%edx
3895967Speter	addl	%esi,		%eax
3995967Speter	adcl	$0,		%edx
4095967Speter	movl	%eax,		(%edi)
4195967Speter	movl	%edx,		%esi
4295967Speter	# Round 4
4395967Speter	movl	4(%ebx),	%eax
4495967Speter	mull	%ebp
4595967Speter	addl	%esi,		%eax
4695967Speter	movl	4(%edi),	%esi
4795967Speter	adcl	$0,		%edx
4895967Speter	addl	%esi,		%eax
4995967Speter	adcl	$0,		%edx
5095967Speter	movl	%eax,		4(%edi)
5195967Speter	movl	%edx,		%esi
5295967Speter	# Round 8
5395967Speter	movl	8(%ebx),	%eax
5495967Speter	mull	%ebp
5595967Speter	addl	%esi,		%eax
5695967Speter	movl	8(%edi),	%esi
5795967Speter	adcl	$0,		%edx
5895967Speter	addl	%esi,		%eax
5995967Speter	adcl	$0,		%edx
6095967Speter	movl	%eax,		8(%edi)
6195967Speter	movl	%edx,		%esi
6295967Speter	# Round 12
6395967Speter	movl	12(%ebx),	%eax
6495967Speter	mull	%ebp
6595967Speter	addl	%esi,		%eax
6695967Speter	movl	12(%edi),	%esi
6795967Speter	adcl	$0,		%edx
6895967Speter	addl	%esi,		%eax
6995967Speter	adcl	$0,		%edx
7095967Speter	movl	%eax,		12(%edi)
7195967Speter	movl	%edx,		%esi
7295967Speter	# Round 16
7395967Speter	movl	16(%ebx),	%eax
7495967Speter	mull	%ebp
7595967Speter	addl	%esi,		%eax
7695967Speter	movl	16(%edi),	%esi
7795967Speter	adcl	$0,		%edx
7895967Speter	addl	%esi,		%eax
7995967Speter	adcl	$0,		%edx
8095967Speter	movl	%eax,		16(%edi)
8195967Speter	movl	%edx,		%esi
8295967Speter	# Round 20
8395967Speter	movl	20(%ebx),	%eax
8495967Speter	mull	%ebp
8595967Speter	addl	%esi,		%eax
8695967Speter	movl	20(%edi),	%esi
8795967Speter	adcl	$0,		%edx
8895967Speter	addl	%esi,		%eax
8995967Speter	adcl	$0,		%edx
9095967Speter	movl	%eax,		20(%edi)
9195967Speter	movl	%edx,		%esi
9295967Speter	# Round 24
9395967Speter	movl	24(%ebx),	%eax
9495967Speter	mull	%ebp
9595967Speter	addl	%esi,		%eax
9695967Speter	movl	24(%edi),	%esi
9795967Speter	adcl	$0,		%edx
9895967Speter	addl	%esi,		%eax
9995967Speter	adcl	$0,		%edx
10095967Speter	movl	%eax,		24(%edi)
10195967Speter	movl	%edx,		%esi
10295967Speter	# Round 28
10395967Speter	movl	28(%ebx),	%eax
10495967Speter	mull	%ebp
10595967Speter	addl	%esi,		%eax
10695967Speter	movl	28(%edi),	%esi
10795967Speter	adcl	$0,		%edx
10895967Speter	addl	%esi,		%eax
10995967Speter	adcl	$0,		%edx
11095967Speter	movl	%eax,		28(%edi)
11195967Speter	movl	%edx,		%esi
11295967Speter
11395967Speter	movl	(%esp),		%ecx
11495967Speter	addl	$32,		%ebx
11595967Speter	addl	$32,		%edi
11695967Speter	subl	$8,		%ecx
11795967Speter	jnz	.L001maw_loop
11895967Speter.L000maw_finish:
11995967Speter	movl	32(%esp),	%ecx
12095967Speter	andl	$7,		%ecx
12195967Speter	jnz	.L002maw_finish2
12295967Speter	jmp	.L003maw_end
12395967Speter.align 16
12495967Speter.L002maw_finish2:
12595967Speter	# Tail Round 0
12695967Speter	movl	(%ebx),		%eax
12795967Speter	mull	%ebp
12895967Speter	addl	%esi,		%eax
12995967Speter	movl	(%edi),		%esi
13095967Speter	adcl	$0,		%edx
13195967Speter	addl	%esi,		%eax
13295967Speter	adcl	$0,		%edx
13395967Speter	decl	%ecx
13495967Speter	movl	%eax,		(%edi)
13595967Speter	movl	%edx,		%esi
13695967Speter	jz	.L003maw_end
13795967Speter	# Tail Round 1
13895967Speter	movl	4(%ebx),	%eax
13995967Speter	mull	%ebp
14095967Speter	addl	%esi,		%eax
14195967Speter	movl	4(%edi),	%esi
14295967Speter	adcl	$0,		%edx
14395967Speter	addl	%esi,		%eax
14495967Speter	adcl	$0,		%edx
14595967Speter	decl	%ecx
14695967Speter	movl	%eax,		4(%edi)
14795967Speter	movl	%edx,		%esi
14895967Speter	jz	.L003maw_end
14995967Speter	# Tail Round 2
15095967Speter	movl	8(%ebx),	%eax
15195967Speter	mull	%ebp
15295967Speter	addl	%esi,		%eax
15395967Speter	movl	8(%edi),	%esi
15495967Speter	adcl	$0,		%edx
15595967Speter	addl	%esi,		%eax
15695967Speter	adcl	$0,		%edx
15795967Speter	decl	%ecx
15895967Speter	movl	%eax,		8(%edi)
15995967Speter	movl	%edx,		%esi
16095967Speter	jz	.L003maw_end
16195967Speter	# Tail Round 3
16295967Speter	movl	12(%ebx),	%eax
16395967Speter	mull	%ebp
16495967Speter	addl	%esi,		%eax
16595967Speter	movl	12(%edi),	%esi
16695967Speter	adcl	$0,		%edx
16795967Speter	addl	%esi,		%eax
16895967Speter	adcl	$0,		%edx
16995967Speter	decl	%ecx
17095967Speter	movl	%eax,		12(%edi)
17195967Speter	movl	%edx,		%esi
17295967Speter	jz	.L003maw_end
17395967Speter	# Tail Round 4
17495967Speter	movl	16(%ebx),	%eax
17595967Speter	mull	%ebp
17695967Speter	addl	%esi,		%eax
17795967Speter	movl	16(%edi),	%esi
17895967Speter	adcl	$0,		%edx
17995967Speter	addl	%esi,		%eax
18095967Speter	adcl	$0,		%edx
18195967Speter	decl	%ecx
18295967Speter	movl	%eax,		16(%edi)
18395967Speter	movl	%edx,		%esi
18495967Speter	jz	.L003maw_end
18595967Speter	# Tail Round 5
18695967Speter	movl	20(%ebx),	%eax
18795967Speter	mull	%ebp
18895967Speter	addl	%esi,		%eax
18995967Speter	movl	20(%edi),	%esi
19095967Speter	adcl	$0,		%edx
19195967Speter	addl	%esi,		%eax
19295967Speter	adcl	$0,		%edx
19395967Speter	decl	%ecx
19495967Speter	movl	%eax,		20(%edi)
19595967Speter	movl	%edx,		%esi
19695967Speter	jz	.L003maw_end
19795967Speter	# Tail Round 6
19895967Speter	movl	24(%ebx),	%eax
19995967Speter	mull	%ebp
20095967Speter	addl	%esi,		%eax
20195967Speter	movl	24(%edi),	%esi
20295967Speter	adcl	$0,		%edx
20395967Speter	addl	%esi,		%eax
20495967Speter	adcl	$0,		%edx
20595967Speter	movl	%eax,		24(%edi)
20695967Speter	movl	%edx,		%esi
20795967Speter.L003maw_end:
20895967Speter	movl	%esi,		%eax
20995967Speter	popl	%ecx
21095967Speter	popl	%edi
21195967Speter	popl	%esi
21295967Speter	popl	%ebx
21395967Speter	popl	%ebp
21495967Speter	ret
21595967Speter.bn_mul_add_words_end:
21695967Speter	.size	bn_mul_add_words,.bn_mul_add_words_end-bn_mul_add_words
21795967Speter.ident	"bn_mul_add_words"
21895967Speter.text
21995967Speter	.align 16
22095967Speter.globl bn_mul_words
22195967Speter	.type	bn_mul_words,@function
22295967Speterbn_mul_words:
22395967Speter	pushl	%ebp
22495967Speter	pushl	%ebx
22595967Speter	pushl	%esi
22695967Speter	pushl	%edi
22795967Speter
22895967Speter
22995967Speter	xorl	%esi,		%esi
23095967Speter	movl	20(%esp),	%edi
23195967Speter	movl	24(%esp),	%ebx
23295967Speter	movl	28(%esp),	%ebp
23395967Speter	movl	32(%esp),	%ecx
23495967Speter	andl	$4294967288,	%ebp
23595967Speter	jz	.L004mw_finish
23695967Speter.L005mw_loop:
23795967Speter	# Round 0
23895967Speter	movl	(%ebx),		%eax
23995967Speter	mull	%ecx
24095967Speter	addl	%esi,		%eax
24195967Speter	adcl	$0,		%edx
24295967Speter	movl	%eax,		(%edi)
24395967Speter	movl	%edx,		%esi
24495967Speter	# Round 4
24595967Speter	movl	4(%ebx),	%eax
24695967Speter	mull	%ecx
24795967Speter	addl	%esi,		%eax
24895967Speter	adcl	$0,		%edx
24995967Speter	movl	%eax,		4(%edi)
25095967Speter	movl	%edx,		%esi
25195967Speter	# Round 8
25295967Speter	movl	8(%ebx),	%eax
25395967Speter	mull	%ecx
25495967Speter	addl	%esi,		%eax
25595967Speter	adcl	$0,		%edx
25695967Speter	movl	%eax,		8(%edi)
25795967Speter	movl	%edx,		%esi
25895967Speter	# Round 12
25995967Speter	movl	12(%ebx),	%eax
26095967Speter	mull	%ecx
26195967Speter	addl	%esi,		%eax
26295967Speter	adcl	$0,		%edx
26395967Speter	movl	%eax,		12(%edi)
26495967Speter	movl	%edx,		%esi
26595967Speter	# Round 16
26695967Speter	movl	16(%ebx),	%eax
26795967Speter	mull	%ecx
26895967Speter	addl	%esi,		%eax
26995967Speter	adcl	$0,		%edx
27095967Speter	movl	%eax,		16(%edi)
27195967Speter	movl	%edx,		%esi
27295967Speter	# Round 20
27395967Speter	movl	20(%ebx),	%eax
27495967Speter	mull	%ecx
27595967Speter	addl	%esi,		%eax
27695967Speter	adcl	$0,		%edx
27795967Speter	movl	%eax,		20(%edi)
27895967Speter	movl	%edx,		%esi
27995967Speter	# Round 24
28095967Speter	movl	24(%ebx),	%eax
28195967Speter	mull	%ecx
28295967Speter	addl	%esi,		%eax
28395967Speter	adcl	$0,		%edx
28495967Speter	movl	%eax,		24(%edi)
28595967Speter	movl	%edx,		%esi
28695967Speter	# Round 28
28795967Speter	movl	28(%ebx),	%eax
28895967Speter	mull	%ecx
28995967Speter	addl	%esi,		%eax
29095967Speter	adcl	$0,		%edx
29195967Speter	movl	%eax,		28(%edi)
29295967Speter	movl	%edx,		%esi
29395967Speter
29495967Speter	addl	$32,		%ebx
29595967Speter	addl	$32,		%edi
29695967Speter	subl	$8,		%ebp
29795967Speter	jz	.L004mw_finish
29895967Speter	jmp	.L005mw_loop
29995967Speter.L004mw_finish:
30095967Speter	movl	28(%esp),	%ebp
30195967Speter	andl	$7,		%ebp
30295967Speter	jnz	.L006mw_finish2
30395967Speter	jmp	.L007mw_end
30495967Speter.align 16
30595967Speter.L006mw_finish2:
30695967Speter	# Tail Round 0
30795967Speter	movl	(%ebx),		%eax
30895967Speter	mull	%ecx
30995967Speter	addl	%esi,		%eax
31095967Speter	adcl	$0,		%edx
31195967Speter	movl	%eax,		(%edi)
31295967Speter	movl	%edx,		%esi
31395967Speter	decl	%ebp
31495967Speter	jz	.L007mw_end
31595967Speter	# Tail Round 1
31695967Speter	movl	4(%ebx),	%eax
31795967Speter	mull	%ecx
31895967Speter	addl	%esi,		%eax
31995967Speter	adcl	$0,		%edx
32095967Speter	movl	%eax,		4(%edi)
32195967Speter	movl	%edx,		%esi
32295967Speter	decl	%ebp
32395967Speter	jz	.L007mw_end
32495967Speter	# Tail Round 2
32595967Speter	movl	8(%ebx),	%eax
32695967Speter	mull	%ecx
32795967Speter	addl	%esi,		%eax
32895967Speter	adcl	$0,		%edx
32995967Speter	movl	%eax,		8(%edi)
33095967Speter	movl	%edx,		%esi
33195967Speter	decl	%ebp
33295967Speter	jz	.L007mw_end
33395967Speter	# Tail Round 3
33495967Speter	movl	12(%ebx),	%eax
33595967Speter	mull	%ecx
33695967Speter	addl	%esi,		%eax
33795967Speter	adcl	$0,		%edx
33895967Speter	movl	%eax,		12(%edi)
33995967Speter	movl	%edx,		%esi
34095967Speter	decl	%ebp
34195967Speter	jz	.L007mw_end
34295967Speter	# Tail Round 4
34395967Speter	movl	16(%ebx),	%eax
34495967Speter	mull	%ecx
34595967Speter	addl	%esi,		%eax
34695967Speter	adcl	$0,		%edx
34795967Speter	movl	%eax,		16(%edi)
34895967Speter	movl	%edx,		%esi
34995967Speter	decl	%ebp
35095967Speter	jz	.L007mw_end
35195967Speter	# Tail Round 5
35295967Speter	movl	20(%ebx),	%eax
35395967Speter	mull	%ecx
35495967Speter	addl	%esi,		%eax
35595967Speter	adcl	$0,		%edx
35695967Speter	movl	%eax,		20(%edi)
35795967Speter	movl	%edx,		%esi
35895967Speter	decl	%ebp
35995967Speter	jz	.L007mw_end
36095967Speter	# Tail Round 6
36195967Speter	movl	24(%ebx),	%eax
36295967Speter	mull	%ecx
36395967Speter	addl	%esi,		%eax
36495967Speter	adcl	$0,		%edx
36595967Speter	movl	%eax,		24(%edi)
36695967Speter	movl	%edx,		%esi
36795967Speter.L007mw_end:
36895967Speter	movl	%esi,		%eax
36995967Speter	popl	%edi
37095967Speter	popl	%esi
37195967Speter	popl	%ebx
37295967Speter	popl	%ebp
37395967Speter	ret
37495967Speter.bn_mul_words_end:
37595967Speter	.size	bn_mul_words,.bn_mul_words_end-bn_mul_words
37695967Speter.ident	"bn_mul_words"
37795967Speter.text
37895967Speter	.align 16
37995967Speter.globl bn_sqr_words
38095967Speter	.type	bn_sqr_words,@function
38195967Speterbn_sqr_words:
38295967Speter	pushl	%ebp
38395967Speter	pushl	%ebx
38495967Speter	pushl	%esi
38595967Speter	pushl	%edi
38695967Speter
38795967Speter
38895967Speter	movl	20(%esp),	%esi
38995967Speter	movl	24(%esp),	%edi
39095967Speter	movl	28(%esp),	%ebx
39195967Speter	andl	$4294967288,	%ebx
39295967Speter	jz	.L008sw_finish
39395967Speter.L009sw_loop:
39495967Speter	# Round 0
39595967Speter	movl	(%edi),		%eax
39695967Speter	mull	%eax
39795967Speter	movl	%eax,		(%esi)
39895967Speter	movl	%edx,		4(%esi)
39995967Speter	# Round 4
40095967Speter	movl	4(%edi),	%eax
40195967Speter	mull	%eax
40295967Speter	movl	%eax,		8(%esi)
40395967Speter	movl	%edx,		12(%esi)
40495967Speter	# Round 8
40595967Speter	movl	8(%edi),	%eax
40695967Speter	mull	%eax
40795967Speter	movl	%eax,		16(%esi)
40895967Speter	movl	%edx,		20(%esi)
40995967Speter	# Round 12
41095967Speter	movl	12(%edi),	%eax
41195967Speter	mull	%eax
41295967Speter	movl	%eax,		24(%esi)
41395967Speter	movl	%edx,		28(%esi)
41495967Speter	# Round 16
41595967Speter	movl	16(%edi),	%eax
41695967Speter	mull	%eax
41795967Speter	movl	%eax,		32(%esi)
41895967Speter	movl	%edx,		36(%esi)
41995967Speter	# Round 20
42095967Speter	movl	20(%edi),	%eax
42195967Speter	mull	%eax
42295967Speter	movl	%eax,		40(%esi)
42395967Speter	movl	%edx,		44(%esi)
42495967Speter	# Round 24
42595967Speter	movl	24(%edi),	%eax
42695967Speter	mull	%eax
42795967Speter	movl	%eax,		48(%esi)
42895967Speter	movl	%edx,		52(%esi)
42995967Speter	# Round 28
43095967Speter	movl	28(%edi),	%eax
43195967Speter	mull	%eax
43295967Speter	movl	%eax,		56(%esi)
43395967Speter	movl	%edx,		60(%esi)
43495967Speter
43595967Speter	addl	$32,		%edi
43695967Speter	addl	$64,		%esi
43795967Speter	subl	$8,		%ebx
43895967Speter	jnz	.L009sw_loop
43995967Speter.L008sw_finish:
44095967Speter	movl	28(%esp),	%ebx
44195967Speter	andl	$7,		%ebx
44295967Speter	jz	.L010sw_end
44395967Speter	# Tail Round 0
44495967Speter	movl	(%edi),		%eax
44595967Speter	mull	%eax
44695967Speter	movl	%eax,		(%esi)
44795967Speter	decl	%ebx
44895967Speter	movl	%edx,		4(%esi)
44995967Speter	jz	.L010sw_end
45095967Speter	# Tail Round 1
45195967Speter	movl	4(%edi),	%eax
45295967Speter	mull	%eax
45395967Speter	movl	%eax,		8(%esi)
45495967Speter	decl	%ebx
45595967Speter	movl	%edx,		12(%esi)
45695967Speter	jz	.L010sw_end
45795967Speter	# Tail Round 2
45895967Speter	movl	8(%edi),	%eax
45995967Speter	mull	%eax
46095967Speter	movl	%eax,		16(%esi)
46195967Speter	decl	%ebx
46295967Speter	movl	%edx,		20(%esi)
46395967Speter	jz	.L010sw_end
46495967Speter	# Tail Round 3
46595967Speter	movl	12(%edi),	%eax
46695967Speter	mull	%eax
46795967Speter	movl	%eax,		24(%esi)
46895967Speter	decl	%ebx
46995967Speter	movl	%edx,		28(%esi)
47095967Speter	jz	.L010sw_end
47195967Speter	# Tail Round 4
47295967Speter	movl	16(%edi),	%eax
47395967Speter	mull	%eax
47495967Speter	movl	%eax,		32(%esi)
47595967Speter	decl	%ebx
47695967Speter	movl	%edx,		36(%esi)
47795967Speter	jz	.L010sw_end
47895967Speter	# Tail Round 5
47995967Speter	movl	20(%edi),	%eax
48095967Speter	mull	%eax
48195967Speter	movl	%eax,		40(%esi)
48295967Speter	decl	%ebx
48395967Speter	movl	%edx,		44(%esi)
48495967Speter	jz	.L010sw_end
48595967Speter	# Tail Round 6
48695967Speter	movl	24(%edi),	%eax
48795967Speter	mull	%eax
48895967Speter	movl	%eax,		48(%esi)
48995967Speter	movl	%edx,		52(%esi)
49095967Speter.L010sw_end:
49195967Speter	popl	%edi
49295967Speter	popl	%esi
49395967Speter	popl	%ebx
49495967Speter	popl	%ebp
49595967Speter	ret
49695967Speter.bn_sqr_words_end:
49795967Speter	.size	bn_sqr_words,.bn_sqr_words_end-bn_sqr_words
49895967Speter.ident	"bn_sqr_words"
49995967Speter.text
50095967Speter	.align 16
50195967Speter.globl bn_div_words
50295967Speter	.type	bn_div_words,@function
50395967Speterbn_div_words:
50495967Speter	pushl	%ebp
50595967Speter	pushl	%ebx
50695967Speter	pushl	%esi
50795967Speter	pushl	%edi
50895967Speter
50995967Speter	movl	20(%esp),	%edx
51095967Speter	movl	24(%esp),	%eax
51195967Speter	movl	28(%esp),	%ebx
51295967Speter	divl	%ebx
51395967Speter	popl	%edi
51495967Speter	popl	%esi
51595967Speter	popl	%ebx
51695967Speter	popl	%ebp
51795967Speter	ret
51895967Speter.bn_div_words_end:
51995967Speter	.size	bn_div_words,.bn_div_words_end-bn_div_words
52095967Speter.ident	"bn_div_words"
52195967Speter.text
52295967Speter	.align 16
52395967Speter.globl bn_add_words
52495967Speter	.type	bn_add_words,@function
52595967Speterbn_add_words:
52695967Speter	pushl	%ebp
52795967Speter	pushl	%ebx
52895967Speter	pushl	%esi
52995967Speter	pushl	%edi
53095967Speter
53195967Speter
53295967Speter	movl	20(%esp),	%ebx
53395967Speter	movl	24(%esp),	%esi
53495967Speter	movl	28(%esp),	%edi
53595967Speter	movl	32(%esp),	%ebp
53695967Speter	xorl	%eax,		%eax
53795967Speter	andl	$4294967288,	%ebp
53895967Speter	jz	.L011aw_finish
53995967Speter.L012aw_loop:
54095967Speter	# Round 0
54195967Speter	movl	(%esi),		%ecx
54295967Speter	movl	(%edi),		%edx
54395967Speter	addl	%eax,		%ecx
54495967Speter	movl	$0,		%eax
54595967Speter	adcl	%eax,		%eax
54695967Speter	addl	%edx,		%ecx
54795967Speter	adcl	$0,		%eax
54895967Speter	movl	%ecx,		(%ebx)
54995967Speter	# Round 1
55095967Speter	movl	4(%esi),	%ecx
55195967Speter	movl	4(%edi),	%edx
55295967Speter	addl	%eax,		%ecx
55395967Speter	movl	$0,		%eax
55495967Speter	adcl	%eax,		%eax
55595967Speter	addl	%edx,		%ecx
55695967Speter	adcl	$0,		%eax
55795967Speter	movl	%ecx,		4(%ebx)
55895967Speter	# Round 2
55995967Speter	movl	8(%esi),	%ecx
56095967Speter	movl	8(%edi),	%edx
56195967Speter	addl	%eax,		%ecx
56295967Speter	movl	$0,		%eax
56395967Speter	adcl	%eax,		%eax
56495967Speter	addl	%edx,		%ecx
56595967Speter	adcl	$0,		%eax
56695967Speter	movl	%ecx,		8(%ebx)
56795967Speter	# Round 3
56895967Speter	movl	12(%esi),	%ecx
56995967Speter	movl	12(%edi),	%edx
57095967Speter	addl	%eax,		%ecx
57195967Speter	movl	$0,		%eax
57295967Speter	adcl	%eax,		%eax
57395967Speter	addl	%edx,		%ecx
57495967Speter	adcl	$0,		%eax
57595967Speter	movl	%ecx,		12(%ebx)
57695967Speter	# Round 4
57795967Speter	movl	16(%esi),	%ecx
57895967Speter	movl	16(%edi),	%edx
57995967Speter	addl	%eax,		%ecx
58095967Speter	movl	$0,		%eax
58195967Speter	adcl	%eax,		%eax
58295967Speter	addl	%edx,		%ecx
58395967Speter	adcl	$0,		%eax
58495967Speter	movl	%ecx,		16(%ebx)
58595967Speter	# Round 5
58695967Speter	movl	20(%esi),	%ecx
58795967Speter	movl	20(%edi),	%edx
58895967Speter	addl	%eax,		%ecx
58995967Speter	movl	$0,		%eax
59095967Speter	adcl	%eax,		%eax
59195967Speter	addl	%edx,		%ecx
59295967Speter	adcl	$0,		%eax
59395967Speter	movl	%ecx,		20(%ebx)
59495967Speter	# Round 6
59595967Speter	movl	24(%esi),	%ecx
59695967Speter	movl	24(%edi),	%edx
59795967Speter	addl	%eax,		%ecx
59895967Speter	movl	$0,		%eax
59995967Speter	adcl	%eax,		%eax
60095967Speter	addl	%edx,		%ecx
60195967Speter	adcl	$0,		%eax
60295967Speter	movl	%ecx,		24(%ebx)
60395967Speter	# Round 7
60495967Speter	movl	28(%esi),	%ecx
60595967Speter	movl	28(%edi),	%edx
60695967Speter	addl	%eax,		%ecx
60795967Speter	movl	$0,		%eax
60895967Speter	adcl	%eax,		%eax
60995967Speter	addl	%edx,		%ecx
61095967Speter	adcl	$0,		%eax
61195967Speter	movl	%ecx,		28(%ebx)
61295967Speter
61395967Speter	addl	$32,		%esi
61495967Speter	addl	$32,		%edi
61595967Speter	addl	$32,		%ebx
61695967Speter	subl	$8,		%ebp
61795967Speter	jnz	.L012aw_loop
61895967Speter.L011aw_finish:
61995967Speter	movl	32(%esp),	%ebp
62095967Speter	andl	$7,		%ebp
62195967Speter	jz	.L013aw_end
62295967Speter	# Tail Round 0
62395967Speter	movl	(%esi),		%ecx
62495967Speter	movl	(%edi),		%edx
62595967Speter	addl	%eax,		%ecx
62695967Speter	movl	$0,		%eax
62795967Speter	adcl	%eax,		%eax
62895967Speter	addl	%edx,		%ecx
62995967Speter	adcl	$0,		%eax
63095967Speter	decl	%ebp
63195967Speter	movl	%ecx,		(%ebx)
63295967Speter	jz	.L013aw_end
63395967Speter	# Tail Round 1
63495967Speter	movl	4(%esi),	%ecx
63595967Speter	movl	4(%edi),	%edx
63695967Speter	addl	%eax,		%ecx
63795967Speter	movl	$0,		%eax
63895967Speter	adcl	%eax,		%eax
63995967Speter	addl	%edx,		%ecx
64095967Speter	adcl	$0,		%eax
64195967Speter	decl	%ebp
64295967Speter	movl	%ecx,		4(%ebx)
64395967Speter	jz	.L013aw_end
64495967Speter	# Tail Round 2
64595967Speter	movl	8(%esi),	%ecx
64695967Speter	movl	8(%edi),	%edx
64795967Speter	addl	%eax,		%ecx
64895967Speter	movl	$0,		%eax
64995967Speter	adcl	%eax,		%eax
65095967Speter	addl	%edx,		%ecx
65195967Speter	adcl	$0,		%eax
65295967Speter	decl	%ebp
65395967Speter	movl	%ecx,		8(%ebx)
65495967Speter	jz	.L013aw_end
65595967Speter	# Tail Round 3
65695967Speter	movl	12(%esi),	%ecx
65795967Speter	movl	12(%edi),	%edx
65895967Speter	addl	%eax,		%ecx
65995967Speter	movl	$0,		%eax
66095967Speter	adcl	%eax,		%eax
66195967Speter	addl	%edx,		%ecx
66295967Speter	adcl	$0,		%eax
66395967Speter	decl	%ebp
66495967Speter	movl	%ecx,		12(%ebx)
66595967Speter	jz	.L013aw_end
66695967Speter	# Tail Round 4
66795967Speter	movl	16(%esi),	%ecx
66895967Speter	movl	16(%edi),	%edx
66995967Speter	addl	%eax,		%ecx
67095967Speter	movl	$0,		%eax
67195967Speter	adcl	%eax,		%eax
67295967Speter	addl	%edx,		%ecx
67395967Speter	adcl	$0,		%eax
67495967Speter	decl	%ebp
67595967Speter	movl	%ecx,		16(%ebx)
67695967Speter	jz	.L013aw_end
67795967Speter	# Tail Round 5
67895967Speter	movl	20(%esi),	%ecx
67995967Speter	movl	20(%edi),	%edx
68095967Speter	addl	%eax,		%ecx
68195967Speter	movl	$0,		%eax
68295967Speter	adcl	%eax,		%eax
68395967Speter	addl	%edx,		%ecx
68495967Speter	adcl	$0,		%eax
68595967Speter	decl	%ebp
68695967Speter	movl	%ecx,		20(%ebx)
68795967Speter	jz	.L013aw_end
68895967Speter	# Tail Round 6
68995967Speter	movl	24(%esi),	%ecx
69095967Speter	movl	24(%edi),	%edx
69195967Speter	addl	%eax,		%ecx
69295967Speter	movl	$0,		%eax
69395967Speter	adcl	%eax,		%eax
69495967Speter	addl	%edx,		%ecx
69595967Speter	adcl	$0,		%eax
69695967Speter	movl	%ecx,		24(%ebx)
69795967Speter.L013aw_end:
69895967Speter	popl	%edi
69995967Speter	popl	%esi
70095967Speter	popl	%ebx
70195967Speter	popl	%ebp
70295967Speter	ret
70395967Speter.bn_add_words_end:
70495967Speter	.size	bn_add_words,.bn_add_words_end-bn_add_words
70595967Speter.ident	"bn_add_words"
70695967Speter.text
70795967Speter	.align 16
70895967Speter.globl bn_sub_words
70995967Speter	.type	bn_sub_words,@function
71095967Speterbn_sub_words:
71195967Speter	pushl	%ebp
71295967Speter	pushl	%ebx
71395967Speter	pushl	%esi
71495967Speter	pushl	%edi
71595967Speter
71695967Speter
71795967Speter	movl	20(%esp),	%ebx
71895967Speter	movl	24(%esp),	%esi
71995967Speter	movl	28(%esp),	%edi
72095967Speter	movl	32(%esp),	%ebp
72195967Speter	xorl	%eax,		%eax
72295967Speter	andl	$4294967288,	%ebp
72395967Speter	jz	.L014aw_finish
72495967Speter.L015aw_loop:
72595967Speter	# Round 0
72695967Speter	movl	(%esi),		%ecx
72795967Speter	movl	(%edi),		%edx
72895967Speter	subl	%eax,		%ecx
72995967Speter	movl	$0,		%eax
73095967Speter	adcl	%eax,		%eax
73195967Speter	subl	%edx,		%ecx
73295967Speter	adcl	$0,		%eax
73395967Speter	movl	%ecx,		(%ebx)
73495967Speter	# Round 1
73595967Speter	movl	4(%esi),	%ecx
73695967Speter	movl	4(%edi),	%edx
73795967Speter	subl	%eax,		%ecx
73895967Speter	movl	$0,		%eax
73995967Speter	adcl	%eax,		%eax
74095967Speter	subl	%edx,		%ecx
74195967Speter	adcl	$0,		%eax
74295967Speter	movl	%ecx,		4(%ebx)
74395967Speter	# Round 2
74495967Speter	movl	8(%esi),	%ecx
74595967Speter	movl	8(%edi),	%edx
74695967Speter	subl	%eax,		%ecx
74795967Speter	movl	$0,		%eax
74895967Speter	adcl	%eax,		%eax
74995967Speter	subl	%edx,		%ecx
75095967Speter	adcl	$0,		%eax
75195967Speter	movl	%ecx,		8(%ebx)
75295967Speter	# Round 3
75395967Speter	movl	12(%esi),	%ecx
75495967Speter	movl	12(%edi),	%edx
75595967Speter	subl	%eax,		%ecx
75695967Speter	movl	$0,		%eax
75795967Speter	adcl	%eax,		%eax
75895967Speter	subl	%edx,		%ecx
75995967Speter	adcl	$0,		%eax
76095967Speter	movl	%ecx,		12(%ebx)
76195967Speter	# Round 4
76295967Speter	movl	16(%esi),	%ecx
76395967Speter	movl	16(%edi),	%edx
76495967Speter	subl	%eax,		%ecx
76595967Speter	movl	$0,		%eax
76695967Speter	adcl	%eax,		%eax
76795967Speter	subl	%edx,		%ecx
76895967Speter	adcl	$0,		%eax
76995967Speter	movl	%ecx,		16(%ebx)
77095967Speter	# Round 5
77195967Speter	movl	20(%esi),	%ecx
77295967Speter	movl	20(%edi),	%edx
77395967Speter	subl	%eax,		%ecx
77495967Speter	movl	$0,		%eax
77595967Speter	adcl	%eax,		%eax
77695967Speter	subl	%edx,		%ecx
77795967Speter	adcl	$0,		%eax
77895967Speter	movl	%ecx,		20(%ebx)
77995967Speter	# Round 6
78095967Speter	movl	24(%esi),	%ecx
78195967Speter	movl	24(%edi),	%edx
78295967Speter	subl	%eax,		%ecx
78395967Speter	movl	$0,		%eax
78495967Speter	adcl	%eax,		%eax
78595967Speter	subl	%edx,		%ecx
78695967Speter	adcl	$0,		%eax
78795967Speter	movl	%ecx,		24(%ebx)
78895967Speter	# Round 7
78995967Speter	movl	28(%esi),	%ecx
79095967Speter	movl	28(%edi),	%edx
79195967Speter	subl	%eax,		%ecx
79295967Speter	movl	$0,		%eax
79395967Speter	adcl	%eax,		%eax
79495967Speter	subl	%edx,		%ecx
79595967Speter	adcl	$0,		%eax
79695967Speter	movl	%ecx,		28(%ebx)
79795967Speter
79895967Speter	addl	$32,		%esi
79995967Speter	addl	$32,		%edi
80095967Speter	addl	$32,		%ebx
80195967Speter	subl	$8,		%ebp
80295967Speter	jnz	.L015aw_loop
80395967Speter.L014aw_finish:
80495967Speter	movl	32(%esp),	%ebp
80595967Speter	andl	$7,		%ebp
80695967Speter	jz	.L016aw_end
80795967Speter	# Tail Round 0
80895967Speter	movl	(%esi),		%ecx
80995967Speter	movl	(%edi),		%edx
81095967Speter	subl	%eax,		%ecx
81195967Speter	movl	$0,		%eax
81295967Speter	adcl	%eax,		%eax
81395967Speter	subl	%edx,		%ecx
81495967Speter	adcl	$0,		%eax
81595967Speter	decl	%ebp
81695967Speter	movl	%ecx,		(%ebx)
81795967Speter	jz	.L016aw_end
81895967Speter	# Tail Round 1
81995967Speter	movl	4(%esi),	%ecx
82095967Speter	movl	4(%edi),	%edx
82195967Speter	subl	%eax,		%ecx
82295967Speter	movl	$0,		%eax
82395967Speter	adcl	%eax,		%eax
82495967Speter	subl	%edx,		%ecx
82595967Speter	adcl	$0,		%eax
82695967Speter	decl	%ebp
82795967Speter	movl	%ecx,		4(%ebx)
82895967Speter	jz	.L016aw_end
82995967Speter	# Tail Round 2
83095967Speter	movl	8(%esi),	%ecx
83195967Speter	movl	8(%edi),	%edx
83295967Speter	subl	%eax,		%ecx
83395967Speter	movl	$0,		%eax
83495967Speter	adcl	%eax,		%eax
83595967Speter	subl	%edx,		%ecx
83695967Speter	adcl	$0,		%eax
83795967Speter	decl	%ebp
83895967Speter	movl	%ecx,		8(%ebx)
83995967Speter	jz	.L016aw_end
84095967Speter	# Tail Round 3
84195967Speter	movl	12(%esi),	%ecx
84295967Speter	movl	12(%edi),	%edx
84395967Speter	subl	%eax,		%ecx
84495967Speter	movl	$0,		%eax
84595967Speter	adcl	%eax,		%eax
84695967Speter	subl	%edx,		%ecx
84795967Speter	adcl	$0,		%eax
84895967Speter	decl	%ebp
84995967Speter	movl	%ecx,		12(%ebx)
85095967Speter	jz	.L016aw_end
85195967Speter	# Tail Round 4
85295967Speter	movl	16(%esi),	%ecx
85395967Speter	movl	16(%edi),	%edx
85495967Speter	subl	%eax,		%ecx
85595967Speter	movl	$0,		%eax
85695967Speter	adcl	%eax,		%eax
85795967Speter	subl	%edx,		%ecx
85895967Speter	adcl	$0,		%eax
85995967Speter	decl	%ebp
86095967Speter	movl	%ecx,		16(%ebx)
86195967Speter	jz	.L016aw_end
86295967Speter	# Tail Round 5
86395967Speter	movl	20(%esi),	%ecx
86495967Speter	movl	20(%edi),	%edx
86595967Speter	subl	%eax,		%ecx
86695967Speter	movl	$0,		%eax
86795967Speter	adcl	%eax,		%eax
86895967Speter	subl	%edx,		%ecx
86995967Speter	adcl	$0,		%eax
87095967Speter	decl	%ebp
87195967Speter	movl	%ecx,		20(%ebx)
87295967Speter	jz	.L016aw_end
87395967Speter	# Tail Round 6
87495967Speter	movl	24(%esi),	%ecx
87595967Speter	movl	24(%edi),	%edx
87695967Speter	subl	%eax,		%ecx
87795967Speter	movl	$0,		%eax
87895967Speter	adcl	%eax,		%eax
87995967Speter	subl	%edx,		%ecx
88095967Speter	adcl	$0,		%eax
88195967Speter	movl	%ecx,		24(%ebx)
88295967Speter.L016aw_end:
88395967Speter	popl	%edi
88495967Speter	popl	%esi
88595967Speter	popl	%ebx
88695967Speter	popl	%ebp
88795967Speter	ret
88895967Speter.bn_sub_words_end:
88995967Speter	.size	bn_sub_words,.bn_sub_words_end-bn_sub_words
89095967Speter.ident	"bn_sub_words"
891