1	# $FreeBSD$
2.file	"sha512-586.s"
3.text
4.globl	sha256_block_data_order
5.type	sha256_block_data_order,@function
6.align	16
7sha256_block_data_order:
8.L_sha256_block_data_order_begin:
9	pushl	%ebp
10	pushl	%ebx
11	pushl	%esi
12	pushl	%edi
13	movl	20(%esp),%esi
14	movl	24(%esp),%edi
15	movl	28(%esp),%eax
16	movl	%esp,%ebx
17	call	.L000pic_point
18.L000pic_point:
19	popl	%ebp
20	leal	.L001K256-.L000pic_point(%ebp),%ebp
21	subl	$16,%esp
22	andl	$-64,%esp
23	shll	$6,%eax
24	addl	%edi,%eax
25	movl	%esi,(%esp)
26	movl	%edi,4(%esp)
27	movl	%eax,8(%esp)
28	movl	%ebx,12(%esp)
29.align	16
30.L002loop:
31	movl	(%edi),%eax
32	movl	4(%edi),%ebx
33	movl	8(%edi),%ecx
34	movl	12(%edi),%edx
35	bswap	%eax
36	bswap	%ebx
37	bswap	%ecx
38	bswap	%edx
39	pushl	%eax
40	pushl	%ebx
41	pushl	%ecx
42	pushl	%edx
43	movl	16(%edi),%eax
44	movl	20(%edi),%ebx
45	movl	24(%edi),%ecx
46	movl	28(%edi),%edx
47	bswap	%eax
48	bswap	%ebx
49	bswap	%ecx
50	bswap	%edx
51	pushl	%eax
52	pushl	%ebx
53	pushl	%ecx
54	pushl	%edx
55	movl	32(%edi),%eax
56	movl	36(%edi),%ebx
57	movl	40(%edi),%ecx
58	movl	44(%edi),%edx
59	bswap	%eax
60	bswap	%ebx
61	bswap	%ecx
62	bswap	%edx
63	pushl	%eax
64	pushl	%ebx
65	pushl	%ecx
66	pushl	%edx
67	movl	48(%edi),%eax
68	movl	52(%edi),%ebx
69	movl	56(%edi),%ecx
70	movl	60(%edi),%edx
71	bswap	%eax
72	bswap	%ebx
73	bswap	%ecx
74	bswap	%edx
75	pushl	%eax
76	pushl	%ebx
77	pushl	%ecx
78	pushl	%edx
79	addl	$64,%edi
80	subl	$32,%esp
81	movl	%edi,100(%esp)
82	movl	(%esi),%eax
83	movl	4(%esi),%ebx
84	movl	8(%esi),%ecx
85	movl	12(%esi),%edi
86	movl	%ebx,4(%esp)
87	movl	%ecx,8(%esp)
88	movl	%edi,12(%esp)
89	movl	16(%esi),%edx
90	movl	20(%esi),%ebx
91	movl	24(%esi),%ecx
92	movl	28(%esi),%edi
93	movl	%ebx,20(%esp)
94	movl	%ecx,24(%esp)
95	movl	%edi,28(%esp)
96.align	16
97.L00300_15:
98	movl	92(%esp),%ebx
99	movl	%edx,%ecx
100	rorl	$14,%ecx
101	movl	20(%esp),%esi
102	xorl	%edx,%ecx
103	rorl	$5,%ecx
104	xorl	%edx,%ecx
105	rorl	$6,%ecx
106	movl	24(%esp),%edi
107	addl	%ecx,%ebx
108	xorl	%edi,%esi
109	movl	%edx,16(%esp)
110	movl	%eax,%ecx
111	andl	%edx,%esi
112	movl	12(%esp),%edx
113	xorl	%edi,%esi
114	movl	%eax,%edi
115	addl	%esi,%ebx
116	rorl	$9,%ecx
117	addl	28(%esp),%ebx
118	xorl	%eax,%ecx
119	rorl	$11,%ecx
120	movl	4(%esp),%esi
121	xorl	%eax,%ecx
122	rorl	$2,%ecx
123	addl	%ebx,%edx
124	movl	8(%esp),%edi
125	addl	%ecx,%ebx
126	movl	%eax,(%esp)
127	movl	%eax,%ecx
128	subl	$4,%esp
129	orl	%esi,%eax
130	andl	%esi,%ecx
131	andl	%edi,%eax
132	movl	(%ebp),%esi
133	orl	%ecx,%eax
134	addl	$4,%ebp
135	addl	%ebx,%eax
136	addl	%esi,%edx
137	addl	%esi,%eax
138	cmpl	$3248222580,%esi
139	jne	.L00300_15
140	movl	152(%esp),%ebx
141.align	16
142.L00416_63:
143	movl	%ebx,%esi
144	movl	100(%esp),%ecx
145	rorl	$11,%esi
146	movl	%ecx,%edi
147	xorl	%ebx,%esi
148	rorl	$7,%esi
149	shrl	$3,%ebx
150	rorl	$2,%edi
151	xorl	%esi,%ebx
152	xorl	%ecx,%edi
153	rorl	$17,%edi
154	shrl	$10,%ecx
155	addl	156(%esp),%ebx
156	xorl	%ecx,%edi
157	addl	120(%esp),%ebx
158	movl	%edx,%ecx
159	addl	%edi,%ebx
160	rorl	$14,%ecx
161	movl	20(%esp),%esi
162	xorl	%edx,%ecx
163	rorl	$5,%ecx
164	movl	%ebx,92(%esp)
165	xorl	%edx,%ecx
166	rorl	$6,%ecx
167	movl	24(%esp),%edi
168	addl	%ecx,%ebx
169	xorl	%edi,%esi
170	movl	%edx,16(%esp)
171	movl	%eax,%ecx
172	andl	%edx,%esi
173	movl	12(%esp),%edx
174	xorl	%edi,%esi
175	movl	%eax,%edi
176	addl	%esi,%ebx
177	rorl	$9,%ecx
178	addl	28(%esp),%ebx
179	xorl	%eax,%ecx
180	rorl	$11,%ecx
181	movl	4(%esp),%esi
182	xorl	%eax,%ecx
183	rorl	$2,%ecx
184	addl	%ebx,%edx
185	movl	8(%esp),%edi
186	addl	%ecx,%ebx
187	movl	%eax,(%esp)
188	movl	%eax,%ecx
189	subl	$4,%esp
190	orl	%esi,%eax
191	andl	%esi,%ecx
192	andl	%edi,%eax
193	movl	(%ebp),%esi
194	orl	%ecx,%eax
195	addl	$4,%ebp
196	addl	%ebx,%eax
197	movl	152(%esp),%ebx
198	addl	%esi,%edx
199	addl	%esi,%eax
200	cmpl	$3329325298,%esi
201	jne	.L00416_63
202	movl	352(%esp),%esi
203	movl	4(%esp),%ebx
204	movl	8(%esp),%ecx
205	movl	12(%esp),%edi
206	addl	(%esi),%eax
207	addl	4(%esi),%ebx
208	addl	8(%esi),%ecx
209	addl	12(%esi),%edi
210	movl	%eax,(%esi)
211	movl	%ebx,4(%esi)
212	movl	%ecx,8(%esi)
213	movl	%edi,12(%esi)
214	movl	20(%esp),%eax
215	movl	24(%esp),%ebx
216	movl	28(%esp),%ecx
217	movl	356(%esp),%edi
218	addl	16(%esi),%edx
219	addl	20(%esi),%eax
220	addl	24(%esi),%ebx
221	addl	28(%esi),%ecx
222	movl	%edx,16(%esi)
223	movl	%eax,20(%esi)
224	movl	%ebx,24(%esi)
225	movl	%ecx,28(%esi)
226	addl	$352,%esp
227	subl	$256,%ebp
228	cmpl	8(%esp),%edi
229	jb	.L002loop
230	movl	12(%esp),%esp
231	popl	%edi
232	popl	%esi
233	popl	%ebx
234	popl	%ebp
235	ret
236.align	64
237.L001K256:
238.long	1116352408,1899447441,3049323471,3921009573
239.long	961987163,1508970993,2453635748,2870763221
240.long	3624381080,310598401,607225278,1426881987
241.long	1925078388,2162078206,2614888103,3248222580
242.long	3835390401,4022224774,264347078,604807628
243.long	770255983,1249150122,1555081692,1996064986
244.long	2554220882,2821834349,2952996808,3210313671
245.long	3336571891,3584528711,113926993,338241895
246.long	666307205,773529912,1294757372,1396182291
247.long	1695183700,1986661051,2177026350,2456956037
248.long	2730485921,2820302411,3259730800,3345764771
249.long	3516065817,3600352804,4094571909,275423344
250.long	430227734,506948616,659060556,883997877
251.long	958139571,1322822218,1537002063,1747873779
252.long	1955562222,2024104815,2227730452,2361852424
253.long	2428436474,2756734187,3204031479,3329325298
254.size	sha256_block_data_order,.-.L_sha256_block_data_order_begin
255.byte	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
256.byte	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
257.byte	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
258.byte	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
259.byte	62,0
260