sha512-586.S revision 1.1
1.file	"sha512-586.s"
2.text
3.globl	sha512_block_data_order
4.type	sha512_block_data_order,@function
5.align	16
6sha512_block_data_order:
7.L_sha512_block_data_order_begin:
8	pushl	%ebp
9	pushl	%ebx
10	pushl	%esi
11	pushl	%edi
12	movl	20(%esp),%esi
13	movl	24(%esp),%edi
14	movl	28(%esp),%eax
15	movl	%esp,%ebx
16	call	.L000pic_point
17.L000pic_point:
18	popl	%ebp
19	leal	.L001K512-.L000pic_point(%ebp),%ebp
20	subl	$16,%esp
21	andl	$-64,%esp
22	shll	$7,%eax
23	addl	%edi,%eax
24	movl	%esi,(%esp)
25	movl	%edi,4(%esp)
26	movl	%eax,8(%esp)
27	movl	%ebx,12(%esp)
28.align	16
29.L002loop_x86:
30	movl	(%edi),%eax
31	movl	4(%edi),%ebx
32	movl	8(%edi),%ecx
33	movl	12(%edi),%edx
34	bswap	%eax
35	bswap	%ebx
36	bswap	%ecx
37	bswap	%edx
38	pushl	%eax
39	pushl	%ebx
40	pushl	%ecx
41	pushl	%edx
42	movl	16(%edi),%eax
43	movl	20(%edi),%ebx
44	movl	24(%edi),%ecx
45	movl	28(%edi),%edx
46	bswap	%eax
47	bswap	%ebx
48	bswap	%ecx
49	bswap	%edx
50	pushl	%eax
51	pushl	%ebx
52	pushl	%ecx
53	pushl	%edx
54	movl	32(%edi),%eax
55	movl	36(%edi),%ebx
56	movl	40(%edi),%ecx
57	movl	44(%edi),%edx
58	bswap	%eax
59	bswap	%ebx
60	bswap	%ecx
61	bswap	%edx
62	pushl	%eax
63	pushl	%ebx
64	pushl	%ecx
65	pushl	%edx
66	movl	48(%edi),%eax
67	movl	52(%edi),%ebx
68	movl	56(%edi),%ecx
69	movl	60(%edi),%edx
70	bswap	%eax
71	bswap	%ebx
72	bswap	%ecx
73	bswap	%edx
74	pushl	%eax
75	pushl	%ebx
76	pushl	%ecx
77	pushl	%edx
78	movl	64(%edi),%eax
79	movl	68(%edi),%ebx
80	movl	72(%edi),%ecx
81	movl	76(%edi),%edx
82	bswap	%eax
83	bswap	%ebx
84	bswap	%ecx
85	bswap	%edx
86	pushl	%eax
87	pushl	%ebx
88	pushl	%ecx
89	pushl	%edx
90	movl	80(%edi),%eax
91	movl	84(%edi),%ebx
92	movl	88(%edi),%ecx
93	movl	92(%edi),%edx
94	bswap	%eax
95	bswap	%ebx
96	bswap	%ecx
97	bswap	%edx
98	pushl	%eax
99	pushl	%ebx
100	pushl	%ecx
101	pushl	%edx
102	movl	96(%edi),%eax
103	movl	100(%edi),%ebx
104	movl	104(%edi),%ecx
105	movl	108(%edi),%edx
106	bswap	%eax
107	bswap	%ebx
108	bswap	%ecx
109	bswap	%edx
110	pushl	%eax
111	pushl	%ebx
112	pushl	%ecx
113	pushl	%edx
114	movl	112(%edi),%eax
115	movl	116(%edi),%ebx
116	movl	120(%edi),%ecx
117	movl	124(%edi),%edx
118	bswap	%eax
119	bswap	%ebx
120	bswap	%ecx
121	bswap	%edx
122	pushl	%eax
123	pushl	%ebx
124	pushl	%ecx
125	pushl	%edx
126	addl	$128,%edi
127	subl	$72,%esp
128	movl	%edi,204(%esp)
129	leal	8(%esp),%edi
130	movl	$16,%ecx
131.long	2784229001
132.align	16
133.L00300_15_x86:
134	movl	40(%esp),%ecx
135	movl	44(%esp),%edx
136	movl	%ecx,%esi
137	shrl	$9,%ecx
138	movl	%edx,%edi
139	shrl	$9,%edx
140	movl	%ecx,%ebx
141	shll	$14,%esi
142	movl	%edx,%eax
143	shll	$14,%edi
144	xorl	%esi,%ebx
145	shrl	$5,%ecx
146	xorl	%edi,%eax
147	shrl	$5,%edx
148	xorl	%ecx,%eax
149	shll	$4,%esi
150	xorl	%edx,%ebx
151	shll	$4,%edi
152	xorl	%esi,%ebx
153	shrl	$4,%ecx
154	xorl	%edi,%eax
155	shrl	$4,%edx
156	xorl	%ecx,%eax
157	shll	$5,%esi
158	xorl	%edx,%ebx
159	shll	$5,%edi
160	xorl	%esi,%eax
161	xorl	%edi,%ebx
162	movl	48(%esp),%ecx
163	movl	52(%esp),%edx
164	movl	56(%esp),%esi
165	movl	60(%esp),%edi
166	addl	64(%esp),%eax
167	adcl	68(%esp),%ebx
168	xorl	%esi,%ecx
169	xorl	%edi,%edx
170	andl	40(%esp),%ecx
171	andl	44(%esp),%edx
172	addl	192(%esp),%eax
173	adcl	196(%esp),%ebx
174	xorl	%esi,%ecx
175	xorl	%edi,%edx
176	movl	(%ebp),%esi
177	movl	4(%ebp),%edi
178	addl	%ecx,%eax
179	adcl	%edx,%ebx
180	movl	32(%esp),%ecx
181	movl	36(%esp),%edx
182	addl	%esi,%eax
183	adcl	%edi,%ebx
184	movl	%eax,(%esp)
185	movl	%ebx,4(%esp)
186	addl	%ecx,%eax
187	adcl	%edx,%ebx
188	movl	8(%esp),%ecx
189	movl	12(%esp),%edx
190	movl	%eax,32(%esp)
191	movl	%ebx,36(%esp)
192	movl	%ecx,%esi
193	shrl	$2,%ecx
194	movl	%edx,%edi
195	shrl	$2,%edx
196	movl	%ecx,%ebx
197	shll	$4,%esi
198	movl	%edx,%eax
199	shll	$4,%edi
200	xorl	%esi,%ebx
201	shrl	$5,%ecx
202	xorl	%edi,%eax
203	shrl	$5,%edx
204	xorl	%ecx,%ebx
205	shll	$21,%esi
206	xorl	%edx,%eax
207	shll	$21,%edi
208	xorl	%esi,%eax
209	shrl	$21,%ecx
210	xorl	%edi,%ebx
211	shrl	$21,%edx
212	xorl	%ecx,%eax
213	shll	$5,%esi
214	xorl	%edx,%ebx
215	shll	$5,%edi
216	xorl	%esi,%eax
217	xorl	%edi,%ebx
218	movl	8(%esp),%ecx
219	movl	12(%esp),%edx
220	movl	16(%esp),%esi
221	movl	20(%esp),%edi
222	addl	(%esp),%eax
223	adcl	4(%esp),%ebx
224	orl	%esi,%ecx
225	orl	%edi,%edx
226	andl	24(%esp),%ecx
227	andl	28(%esp),%edx
228	andl	8(%esp),%esi
229	andl	12(%esp),%edi
230	orl	%esi,%ecx
231	orl	%edi,%edx
232	addl	%ecx,%eax
233	adcl	%edx,%ebx
234	movl	%eax,(%esp)
235	movl	%ebx,4(%esp)
236	movb	(%ebp),%dl
237	subl	$8,%esp
238	leal	8(%ebp),%ebp
239	cmpb	$148,%dl
240	jne	.L00300_15_x86
241.align	16
242.L00416_79_x86:
243	movl	312(%esp),%ecx
244	movl	316(%esp),%edx
245	movl	%ecx,%esi
246	shrl	$1,%ecx
247	movl	%edx,%edi
248	shrl	$1,%edx
249	movl	%ecx,%eax
250	shll	$24,%esi
251	movl	%edx,%ebx
252	shll	$24,%edi
253	xorl	%esi,%ebx
254	shrl	$6,%ecx
255	xorl	%edi,%eax
256	shrl	$6,%edx
257	xorl	%ecx,%eax
258	shll	$7,%esi
259	xorl	%edx,%ebx
260	shll	$1,%edi
261	xorl	%esi,%ebx
262	shrl	$1,%ecx
263	xorl	%edi,%eax
264	shrl	$1,%edx
265	xorl	%ecx,%eax
266	shll	$6,%edi
267	xorl	%edx,%ebx
268	xorl	%edi,%eax
269	movl	%eax,(%esp)
270	movl	%ebx,4(%esp)
271	movl	208(%esp),%ecx
272	movl	212(%esp),%edx
273	movl	%ecx,%esi
274	shrl	$6,%ecx
275	movl	%edx,%edi
276	shrl	$6,%edx
277	movl	%ecx,%eax
278	shll	$3,%esi
279	movl	%edx,%ebx
280	shll	$3,%edi
281	xorl	%esi,%eax
282	shrl	$13,%ecx
283	xorl	%edi,%ebx
284	shrl	$13,%edx
285	xorl	%ecx,%eax
286	shll	$10,%esi
287	xorl	%edx,%ebx
288	shll	$10,%edi
289	xorl	%esi,%ebx
290	shrl	$10,%ecx
291	xorl	%edi,%eax
292	shrl	$10,%edx
293	xorl	%ecx,%ebx
294	shll	$13,%edi
295	xorl	%edx,%eax
296	xorl	%edi,%eax
297	movl	320(%esp),%ecx
298	movl	324(%esp),%edx
299	addl	(%esp),%eax
300	adcl	4(%esp),%ebx
301	movl	248(%esp),%esi
302	movl	252(%esp),%edi
303	addl	%ecx,%eax
304	adcl	%edx,%ebx
305	addl	%esi,%eax
306	adcl	%edi,%ebx
307	movl	%eax,192(%esp)
308	movl	%ebx,196(%esp)
309	movl	40(%esp),%ecx
310	movl	44(%esp),%edx
311	movl	%ecx,%esi
312	shrl	$9,%ecx
313	movl	%edx,%edi
314	shrl	$9,%edx
315	movl	%ecx,%ebx
316	shll	$14,%esi
317	movl	%edx,%eax
318	shll	$14,%edi
319	xorl	%esi,%ebx
320	shrl	$5,%ecx
321	xorl	%edi,%eax
322	shrl	$5,%edx
323	xorl	%ecx,%eax
324	shll	$4,%esi
325	xorl	%edx,%ebx
326	shll	$4,%edi
327	xorl	%esi,%ebx
328	shrl	$4,%ecx
329	xorl	%edi,%eax
330	shrl	$4,%edx
331	xorl	%ecx,%eax
332	shll	$5,%esi
333	xorl	%edx,%ebx
334	shll	$5,%edi
335	xorl	%esi,%eax
336	xorl	%edi,%ebx
337	movl	48(%esp),%ecx
338	movl	52(%esp),%edx
339	movl	56(%esp),%esi
340	movl	60(%esp),%edi
341	addl	64(%esp),%eax
342	adcl	68(%esp),%ebx
343	xorl	%esi,%ecx
344	xorl	%edi,%edx
345	andl	40(%esp),%ecx
346	andl	44(%esp),%edx
347	addl	192(%esp),%eax
348	adcl	196(%esp),%ebx
349	xorl	%esi,%ecx
350	xorl	%edi,%edx
351	movl	(%ebp),%esi
352	movl	4(%ebp),%edi
353	addl	%ecx,%eax
354	adcl	%edx,%ebx
355	movl	32(%esp),%ecx
356	movl	36(%esp),%edx
357	addl	%esi,%eax
358	adcl	%edi,%ebx
359	movl	%eax,(%esp)
360	movl	%ebx,4(%esp)
361	addl	%ecx,%eax
362	adcl	%edx,%ebx
363	movl	8(%esp),%ecx
364	movl	12(%esp),%edx
365	movl	%eax,32(%esp)
366	movl	%ebx,36(%esp)
367	movl	%ecx,%esi
368	shrl	$2,%ecx
369	movl	%edx,%edi
370	shrl	$2,%edx
371	movl	%ecx,%ebx
372	shll	$4,%esi
373	movl	%edx,%eax
374	shll	$4,%edi
375	xorl	%esi,%ebx
376	shrl	$5,%ecx
377	xorl	%edi,%eax
378	shrl	$5,%edx
379	xorl	%ecx,%ebx
380	shll	$21,%esi
381	xorl	%edx,%eax
382	shll	$21,%edi
383	xorl	%esi,%eax
384	shrl	$21,%ecx
385	xorl	%edi,%ebx
386	shrl	$21,%edx
387	xorl	%ecx,%eax
388	shll	$5,%esi
389	xorl	%edx,%ebx
390	shll	$5,%edi
391	xorl	%esi,%eax
392	xorl	%edi,%ebx
393	movl	8(%esp),%ecx
394	movl	12(%esp),%edx
395	movl	16(%esp),%esi
396	movl	20(%esp),%edi
397	addl	(%esp),%eax
398	adcl	4(%esp),%ebx
399	orl	%esi,%ecx
400	orl	%edi,%edx
401	andl	24(%esp),%ecx
402	andl	28(%esp),%edx
403	andl	8(%esp),%esi
404	andl	12(%esp),%edi
405	orl	%esi,%ecx
406	orl	%edi,%edx
407	addl	%ecx,%eax
408	adcl	%edx,%ebx
409	movl	%eax,(%esp)
410	movl	%ebx,4(%esp)
411	movb	(%ebp),%dl
412	subl	$8,%esp
413	leal	8(%ebp),%ebp
414	cmpb	$23,%dl
415	jne	.L00416_79_x86
416	movl	840(%esp),%esi
417	movl	844(%esp),%edi
418	movl	(%esi),%eax
419	movl	4(%esi),%ebx
420	movl	8(%esi),%ecx
421	movl	12(%esi),%edx
422	addl	8(%esp),%eax
423	adcl	12(%esp),%ebx
424	movl	%eax,(%esi)
425	movl	%ebx,4(%esi)
426	addl	16(%esp),%ecx
427	adcl	20(%esp),%edx
428	movl	%ecx,8(%esi)
429	movl	%edx,12(%esi)
430	movl	16(%esi),%eax
431	movl	20(%esi),%ebx
432	movl	24(%esi),%ecx
433	movl	28(%esi),%edx
434	addl	24(%esp),%eax
435	adcl	28(%esp),%ebx
436	movl	%eax,16(%esi)
437	movl	%ebx,20(%esi)
438	addl	32(%esp),%ecx
439	adcl	36(%esp),%edx
440	movl	%ecx,24(%esi)
441	movl	%edx,28(%esi)
442	movl	32(%esi),%eax
443	movl	36(%esi),%ebx
444	movl	40(%esi),%ecx
445	movl	44(%esi),%edx
446	addl	40(%esp),%eax
447	adcl	44(%esp),%ebx
448	movl	%eax,32(%esi)
449	movl	%ebx,36(%esi)
450	addl	48(%esp),%ecx
451	adcl	52(%esp),%edx
452	movl	%ecx,40(%esi)
453	movl	%edx,44(%esi)
454	movl	48(%esi),%eax
455	movl	52(%esi),%ebx
456	movl	56(%esi),%ecx
457	movl	60(%esi),%edx
458	addl	56(%esp),%eax
459	adcl	60(%esp),%ebx
460	movl	%eax,48(%esi)
461	movl	%ebx,52(%esi)
462	addl	64(%esp),%ecx
463	adcl	68(%esp),%edx
464	movl	%ecx,56(%esi)
465	movl	%edx,60(%esi)
466	addl	$840,%esp
467	subl	$640,%ebp
468	cmpl	8(%esp),%edi
469	jb	.L002loop_x86
470	movl	12(%esp),%esp
471	popl	%edi
472	popl	%esi
473	popl	%ebx
474	popl	%ebp
475	ret
476.align	64
477.L001K512:
478.long	3609767458,1116352408
479.long	602891725,1899447441
480.long	3964484399,3049323471
481.long	2173295548,3921009573
482.long	4081628472,961987163
483.long	3053834265,1508970993
484.long	2937671579,2453635748
485.long	3664609560,2870763221
486.long	2734883394,3624381080
487.long	1164996542,310598401
488.long	1323610764,607225278
489.long	3590304994,1426881987
490.long	4068182383,1925078388
491.long	991336113,2162078206
492.long	633803317,2614888103
493.long	3479774868,3248222580
494.long	2666613458,3835390401
495.long	944711139,4022224774
496.long	2341262773,264347078
497.long	2007800933,604807628
498.long	1495990901,770255983
499.long	1856431235,1249150122
500.long	3175218132,1555081692
501.long	2198950837,1996064986
502.long	3999719339,2554220882
503.long	766784016,2821834349
504.long	2566594879,2952996808
505.long	3203337956,3210313671
506.long	1034457026,3336571891
507.long	2466948901,3584528711
508.long	3758326383,113926993
509.long	168717936,338241895
510.long	1188179964,666307205
511.long	1546045734,773529912
512.long	1522805485,1294757372
513.long	2643833823,1396182291
514.long	2343527390,1695183700
515.long	1014477480,1986661051
516.long	1206759142,2177026350
517.long	344077627,2456956037
518.long	1290863460,2730485921
519.long	3158454273,2820302411
520.long	3505952657,3259730800
521.long	106217008,3345764771
522.long	3606008344,3516065817
523.long	1432725776,3600352804
524.long	1467031594,4094571909
525.long	851169720,275423344
526.long	3100823752,430227734
527.long	1363258195,506948616
528.long	3750685593,659060556
529.long	3785050280,883997877
530.long	3318307427,958139571
531.long	3812723403,1322822218
532.long	2003034995,1537002063
533.long	3602036899,1747873779
534.long	1575990012,1955562222
535.long	1125592928,2024104815
536.long	2716904306,2227730452
537.long	442776044,2361852424
538.long	593698344,2428436474
539.long	3733110249,2756734187
540.long	2999351573,3204031479
541.long	3815920427,3329325298
542.long	3928383900,3391569614
543.long	566280711,3515267271
544.long	3454069534,3940187606
545.long	4000239992,4118630271
546.long	1914138554,116418474
547.long	2731055270,174292421
548.long	3203993006,289380356
549.long	320620315,460393269
550.long	587496836,685471733
551.long	1086792851,852142971
552.long	365543100,1017036298
553.long	2618297676,1126000580
554.long	3409855158,1288033470
555.long	4234509866,1501505948
556.long	987167468,1607167915
557.long	1246189591,1816402316
558.size	sha512_block_data_order,.-.L_sha512_block_data_order_begin
559.byte	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
560.byte	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
561.byte	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
562.byte	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
563.byte	62,0
564