1238405Sjkim	# $FreeBSD$
2238405Sjkim.file	"sha512-586.s"
3238405Sjkim.text
4238405Sjkim.globl	sha256_block_data_order
5238405Sjkim.type	sha256_block_data_order,@function
6238405Sjkim.align	16
7238405Sjkimsha256_block_data_order:
8238405Sjkim.L_sha256_block_data_order_begin:
9238405Sjkim	pushl	%ebp
10238405Sjkim	pushl	%ebx
11238405Sjkim	pushl	%esi
12238405Sjkim	pushl	%edi
13238405Sjkim	movl	20(%esp),%esi
14238405Sjkim	movl	24(%esp),%edi
15238405Sjkim	movl	28(%esp),%eax
16238405Sjkim	movl	%esp,%ebx
17238405Sjkim	call	.L000pic_point
18238405Sjkim.L000pic_point:
19238405Sjkim	popl	%ebp
20238405Sjkim	leal	.L001K256-.L000pic_point(%ebp),%ebp
21238405Sjkim	subl	$16,%esp
22238405Sjkim	andl	$-64,%esp
23238405Sjkim	shll	$6,%eax
24238405Sjkim	addl	%edi,%eax
25238405Sjkim	movl	%esi,(%esp)
26238405Sjkim	movl	%edi,4(%esp)
27238405Sjkim	movl	%eax,8(%esp)
28238405Sjkim	movl	%ebx,12(%esp)
29238405Sjkim.align	16
30238405Sjkim.L002loop:
31238405Sjkim	movl	(%edi),%eax
32238405Sjkim	movl	4(%edi),%ebx
33238405Sjkim	movl	8(%edi),%ecx
34238405Sjkim	movl	12(%edi),%edx
35238405Sjkim	bswap	%eax
36238405Sjkim	bswap	%ebx
37238405Sjkim	bswap	%ecx
38238405Sjkim	bswap	%edx
39238405Sjkim	pushl	%eax
40238405Sjkim	pushl	%ebx
41238405Sjkim	pushl	%ecx
42238405Sjkim	pushl	%edx
43238405Sjkim	movl	16(%edi),%eax
44238405Sjkim	movl	20(%edi),%ebx
45238405Sjkim	movl	24(%edi),%ecx
46238405Sjkim	movl	28(%edi),%edx
47238405Sjkim	bswap	%eax
48238405Sjkim	bswap	%ebx
49238405Sjkim	bswap	%ecx
50238405Sjkim	bswap	%edx
51238405Sjkim	pushl	%eax
52238405Sjkim	pushl	%ebx
53238405Sjkim	pushl	%ecx
54238405Sjkim	pushl	%edx
55238405Sjkim	movl	32(%edi),%eax
56238405Sjkim	movl	36(%edi),%ebx
57238405Sjkim	movl	40(%edi),%ecx
58238405Sjkim	movl	44(%edi),%edx
59238405Sjkim	bswap	%eax
60238405Sjkim	bswap	%ebx
61238405Sjkim	bswap	%ecx
62238405Sjkim	bswap	%edx
63238405Sjkim	pushl	%eax
64238405Sjkim	pushl	%ebx
65238405Sjkim	pushl	%ecx
66238405Sjkim	pushl	%edx
67238405Sjkim	movl	48(%edi),%eax
68238405Sjkim	movl	52(%edi),%ebx
69238405Sjkim	movl	56(%edi),%ecx
70238405Sjkim	movl	60(%edi),%edx
71238405Sjkim	bswap	%eax
72238405Sjkim	bswap	%ebx
73238405Sjkim	bswap	%ecx
74238405Sjkim	bswap	%edx
75238405Sjkim	pushl	%eax
76238405Sjkim	pushl	%ebx
77238405Sjkim	pushl	%ecx
78238405Sjkim	pushl	%edx
79238405Sjkim	addl	$64,%edi
80238405Sjkim	subl	$32,%esp
81238405Sjkim	movl	%edi,100(%esp)
82238405Sjkim	movl	(%esi),%eax
83238405Sjkim	movl	4(%esi),%ebx
84238405Sjkim	movl	8(%esi),%ecx
85238405Sjkim	movl	12(%esi),%edi
86238405Sjkim	movl	%ebx,4(%esp)
87238405Sjkim	movl	%ecx,8(%esp)
88238405Sjkim	movl	%edi,12(%esp)
89238405Sjkim	movl	16(%esi),%edx
90238405Sjkim	movl	20(%esi),%ebx
91238405Sjkim	movl	24(%esi),%ecx
92238405Sjkim	movl	28(%esi),%edi
93238405Sjkim	movl	%ebx,20(%esp)
94238405Sjkim	movl	%ecx,24(%esp)
95238405Sjkim	movl	%edi,28(%esp)
96238405Sjkim.align	16
97238405Sjkim.L00300_15:
98238405Sjkim	movl	92(%esp),%ebx
99238405Sjkim	movl	%edx,%ecx
100238405Sjkim	rorl	$14,%ecx
101238405Sjkim	movl	20(%esp),%esi
102238405Sjkim	xorl	%edx,%ecx
103238405Sjkim	rorl	$5,%ecx
104238405Sjkim	xorl	%edx,%ecx
105238405Sjkim	rorl	$6,%ecx
106238405Sjkim	movl	24(%esp),%edi
107238405Sjkim	addl	%ecx,%ebx
108238405Sjkim	xorl	%edi,%esi
109238405Sjkim	movl	%edx,16(%esp)
110238405Sjkim	movl	%eax,%ecx
111238405Sjkim	andl	%edx,%esi
112238405Sjkim	movl	12(%esp),%edx
113238405Sjkim	xorl	%edi,%esi
114238405Sjkim	movl	%eax,%edi
115238405Sjkim	addl	%esi,%ebx
116238405Sjkim	rorl	$9,%ecx
117238405Sjkim	addl	28(%esp),%ebx
118238405Sjkim	xorl	%eax,%ecx
119238405Sjkim	rorl	$11,%ecx
120238405Sjkim	movl	4(%esp),%esi
121238405Sjkim	xorl	%eax,%ecx
122238405Sjkim	rorl	$2,%ecx
123238405Sjkim	addl	%ebx,%edx
124238405Sjkim	movl	8(%esp),%edi
125238405Sjkim	addl	%ecx,%ebx
126238405Sjkim	movl	%eax,(%esp)
127238405Sjkim	movl	%eax,%ecx
128238405Sjkim	subl	$4,%esp
129238405Sjkim	orl	%esi,%eax
130238405Sjkim	andl	%esi,%ecx
131238405Sjkim	andl	%edi,%eax
132238405Sjkim	movl	(%ebp),%esi
133238405Sjkim	orl	%ecx,%eax
134238405Sjkim	addl	$4,%ebp
135238405Sjkim	addl	%ebx,%eax
136238405Sjkim	addl	%esi,%edx
137238405Sjkim	addl	%esi,%eax
138238405Sjkim	cmpl	$3248222580,%esi
139238405Sjkim	jne	.L00300_15
140238405Sjkim	movl	152(%esp),%ebx
141238405Sjkim.align	16
142238405Sjkim.L00416_63:
143238405Sjkim	movl	%ebx,%esi
144238405Sjkim	movl	100(%esp),%ecx
145238405Sjkim	rorl	$11,%esi
146238405Sjkim	movl	%ecx,%edi
147238405Sjkim	xorl	%ebx,%esi
148238405Sjkim	rorl	$7,%esi
149238405Sjkim	shrl	$3,%ebx
150238405Sjkim	rorl	$2,%edi
151238405Sjkim	xorl	%esi,%ebx
152238405Sjkim	xorl	%ecx,%edi
153238405Sjkim	rorl	$17,%edi
154238405Sjkim	shrl	$10,%ecx
155238405Sjkim	addl	156(%esp),%ebx
156238405Sjkim	xorl	%ecx,%edi
157238405Sjkim	addl	120(%esp),%ebx
158238405Sjkim	movl	%edx,%ecx
159238405Sjkim	addl	%edi,%ebx
160238405Sjkim	rorl	$14,%ecx
161238405Sjkim	movl	20(%esp),%esi
162238405Sjkim	xorl	%edx,%ecx
163238405Sjkim	rorl	$5,%ecx
164238405Sjkim	movl	%ebx,92(%esp)
165238405Sjkim	xorl	%edx,%ecx
166238405Sjkim	rorl	$6,%ecx
167238405Sjkim	movl	24(%esp),%edi
168238405Sjkim	addl	%ecx,%ebx
169238405Sjkim	xorl	%edi,%esi
170238405Sjkim	movl	%edx,16(%esp)
171238405Sjkim	movl	%eax,%ecx
172238405Sjkim	andl	%edx,%esi
173238405Sjkim	movl	12(%esp),%edx
174238405Sjkim	xorl	%edi,%esi
175238405Sjkim	movl	%eax,%edi
176238405Sjkim	addl	%esi,%ebx
177238405Sjkim	rorl	$9,%ecx
178238405Sjkim	addl	28(%esp),%ebx
179238405Sjkim	xorl	%eax,%ecx
180238405Sjkim	rorl	$11,%ecx
181238405Sjkim	movl	4(%esp),%esi
182238405Sjkim	xorl	%eax,%ecx
183238405Sjkim	rorl	$2,%ecx
184238405Sjkim	addl	%ebx,%edx
185238405Sjkim	movl	8(%esp),%edi
186238405Sjkim	addl	%ecx,%ebx
187238405Sjkim	movl	%eax,(%esp)
188238405Sjkim	movl	%eax,%ecx
189238405Sjkim	subl	$4,%esp
190238405Sjkim	orl	%esi,%eax
191238405Sjkim	andl	%esi,%ecx
192238405Sjkim	andl	%edi,%eax
193238405Sjkim	movl	(%ebp),%esi
194238405Sjkim	orl	%ecx,%eax
195238405Sjkim	addl	$4,%ebp
196238405Sjkim	addl	%ebx,%eax
197238405Sjkim	movl	152(%esp),%ebx
198238405Sjkim	addl	%esi,%edx
199238405Sjkim	addl	%esi,%eax
200238405Sjkim	cmpl	$3329325298,%esi
201238405Sjkim	jne	.L00416_63
202238405Sjkim	movl	352(%esp),%esi
203238405Sjkim	movl	4(%esp),%ebx
204238405Sjkim	movl	8(%esp),%ecx
205238405Sjkim	movl	12(%esp),%edi
206238405Sjkim	addl	(%esi),%eax
207238405Sjkim	addl	4(%esi),%ebx
208238405Sjkim	addl	8(%esi),%ecx
209238405Sjkim	addl	12(%esi),%edi
210238405Sjkim	movl	%eax,(%esi)
211238405Sjkim	movl	%ebx,4(%esi)
212238405Sjkim	movl	%ecx,8(%esi)
213238405Sjkim	movl	%edi,12(%esi)
214238405Sjkim	movl	20(%esp),%eax
215238405Sjkim	movl	24(%esp),%ebx
216238405Sjkim	movl	28(%esp),%ecx
217238405Sjkim	movl	356(%esp),%edi
218238405Sjkim	addl	16(%esi),%edx
219238405Sjkim	addl	20(%esi),%eax
220238405Sjkim	addl	24(%esi),%ebx
221238405Sjkim	addl	28(%esi),%ecx
222238405Sjkim	movl	%edx,16(%esi)
223238405Sjkim	movl	%eax,20(%esi)
224238405Sjkim	movl	%ebx,24(%esi)
225238405Sjkim	movl	%ecx,28(%esi)
226238405Sjkim	addl	$352,%esp
227238405Sjkim	subl	$256,%ebp
228238405Sjkim	cmpl	8(%esp),%edi
229238405Sjkim	jb	.L002loop
230238405Sjkim	movl	12(%esp),%esp
231238405Sjkim	popl	%edi
232238405Sjkim	popl	%esi
233238405Sjkim	popl	%ebx
234238405Sjkim	popl	%ebp
235238405Sjkim	ret
236238405Sjkim.align	64
237238405Sjkim.L001K256:
238238405Sjkim.long	1116352408,1899447441,3049323471,3921009573
239238405Sjkim.long	961987163,1508970993,2453635748,2870763221
240238405Sjkim.long	3624381080,310598401,607225278,1426881987
241238405Sjkim.long	1925078388,2162078206,2614888103,3248222580
242238405Sjkim.long	3835390401,4022224774,264347078,604807628
243238405Sjkim.long	770255983,1249150122,1555081692,1996064986
244238405Sjkim.long	2554220882,2821834349,2952996808,3210313671
245238405Sjkim.long	3336571891,3584528711,113926993,338241895
246238405Sjkim.long	666307205,773529912,1294757372,1396182291
247238405Sjkim.long	1695183700,1986661051,2177026350,2456956037
248238405Sjkim.long	2730485921,2820302411,3259730800,3345764771
249238405Sjkim.long	3516065817,3600352804,4094571909,275423344
250238405Sjkim.long	430227734,506948616,659060556,883997877
251238405Sjkim.long	958139571,1322822218,1537002063,1747873779
252238405Sjkim.long	1955562222,2024104815,2227730452,2361852424
253238405Sjkim.long	2428436474,2756734187,3204031479,3329325298
254238405Sjkim.size	sha256_block_data_order,.-.L_sha256_block_data_order_begin
255238405Sjkim.byte	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
256238405Sjkim.byte	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
257238405Sjkim.byte	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
258238405Sjkim.byte	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
259238405Sjkim.byte	62,0
260