xref: /minix3/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1#include <machine/asm.h>
2.text
3
4
5.globl	sha1_block_data_order
6.type	sha1_block_data_order,@function
7.align	16
8sha1_block_data_order:
9	movq	OPENSSL_ia32cap_P+0@GOTPCREL(%rip),%r8
10	movl	4(%r8),%r8d
11	btl	$9,%r8d
12	jnc	.Lialu
13	btl	$28,%r8d
14	jc	_avx_shortcut
15	jmp	_ssse3_shortcut
16
17.align	16
18.Lialu:
19	pushq	%rbx
20	pushq	%rbp
21	pushq	%r12
22	pushq	%r13
23	movq	%rsp,%r11
24	movq	%rdi,%r8
25	subq	$72,%rsp
26	movq	%rsi,%r9
27	andq	$-64,%rsp
28	movq	%rdx,%r10
29	movq	%r11,64(%rsp)
30.Lprologue:
31
32	movl	0(%r8),%esi
33	movl	4(%r8),%edi
34	movl	8(%r8),%r11d
35	movl	12(%r8),%r12d
36	movl	16(%r8),%r13d
37	jmp	.Lloop
38
39.align	16
40.Lloop:
41	movl	0(%r9),%edx
42	bswapl	%edx
43	movl	%edx,0(%rsp)
44	movl	%r11d,%eax
45	movl	4(%r9),%ebp
46	movl	%esi,%ecx
47	xorl	%r12d,%eax
48	bswapl	%ebp
49	roll	$5,%ecx
50	leal	1518500249(%rdx,%r13,1),%r13d
51	andl	%edi,%eax
52	movl	%ebp,4(%rsp)
53	addl	%ecx,%r13d
54	xorl	%r12d,%eax
55	roll	$30,%edi
56	addl	%eax,%r13d
57	movl	%edi,%eax
58	movl	8(%r9),%edx
59	movl	%r13d,%ecx
60	xorl	%r11d,%eax
61	bswapl	%edx
62	roll	$5,%ecx
63	leal	1518500249(%rbp,%r12,1),%r12d
64	andl	%esi,%eax
65	movl	%edx,8(%rsp)
66	addl	%ecx,%r12d
67	xorl	%r11d,%eax
68	roll	$30,%esi
69	addl	%eax,%r12d
70	movl	%esi,%eax
71	movl	12(%r9),%ebp
72	movl	%r12d,%ecx
73	xorl	%edi,%eax
74	bswapl	%ebp
75	roll	$5,%ecx
76	leal	1518500249(%rdx,%r11,1),%r11d
77	andl	%r13d,%eax
78	movl	%ebp,12(%rsp)
79	addl	%ecx,%r11d
80	xorl	%edi,%eax
81	roll	$30,%r13d
82	addl	%eax,%r11d
83	movl	%r13d,%eax
84	movl	16(%r9),%edx
85	movl	%r11d,%ecx
86	xorl	%esi,%eax
87	bswapl	%edx
88	roll	$5,%ecx
89	leal	1518500249(%rbp,%rdi,1),%edi
90	andl	%r12d,%eax
91	movl	%edx,16(%rsp)
92	addl	%ecx,%edi
93	xorl	%esi,%eax
94	roll	$30,%r12d
95	addl	%eax,%edi
96	movl	%r12d,%eax
97	movl	20(%r9),%ebp
98	movl	%edi,%ecx
99	xorl	%r13d,%eax
100	bswapl	%ebp
101	roll	$5,%ecx
102	leal	1518500249(%rdx,%rsi,1),%esi
103	andl	%r11d,%eax
104	movl	%ebp,20(%rsp)
105	addl	%ecx,%esi
106	xorl	%r13d,%eax
107	roll	$30,%r11d
108	addl	%eax,%esi
109	movl	%r11d,%eax
110	movl	24(%r9),%edx
111	movl	%esi,%ecx
112	xorl	%r12d,%eax
113	bswapl	%edx
114	roll	$5,%ecx
115	leal	1518500249(%rbp,%r13,1),%r13d
116	andl	%edi,%eax
117	movl	%edx,24(%rsp)
118	addl	%ecx,%r13d
119	xorl	%r12d,%eax
120	roll	$30,%edi
121	addl	%eax,%r13d
122	movl	%edi,%eax
123	movl	28(%r9),%ebp
124	movl	%r13d,%ecx
125	xorl	%r11d,%eax
126	bswapl	%ebp
127	roll	$5,%ecx
128	leal	1518500249(%rdx,%r12,1),%r12d
129	andl	%esi,%eax
130	movl	%ebp,28(%rsp)
131	addl	%ecx,%r12d
132	xorl	%r11d,%eax
133	roll	$30,%esi
134	addl	%eax,%r12d
135	movl	%esi,%eax
136	movl	32(%r9),%edx
137	movl	%r12d,%ecx
138	xorl	%edi,%eax
139	bswapl	%edx
140	roll	$5,%ecx
141	leal	1518500249(%rbp,%r11,1),%r11d
142	andl	%r13d,%eax
143	movl	%edx,32(%rsp)
144	addl	%ecx,%r11d
145	xorl	%edi,%eax
146	roll	$30,%r13d
147	addl	%eax,%r11d
148	movl	%r13d,%eax
149	movl	36(%r9),%ebp
150	movl	%r11d,%ecx
151	xorl	%esi,%eax
152	bswapl	%ebp
153	roll	$5,%ecx
154	leal	1518500249(%rdx,%rdi,1),%edi
155	andl	%r12d,%eax
156	movl	%ebp,36(%rsp)
157	addl	%ecx,%edi
158	xorl	%esi,%eax
159	roll	$30,%r12d
160	addl	%eax,%edi
161	movl	%r12d,%eax
162	movl	40(%r9),%edx
163	movl	%edi,%ecx
164	xorl	%r13d,%eax
165	bswapl	%edx
166	roll	$5,%ecx
167	leal	1518500249(%rbp,%rsi,1),%esi
168	andl	%r11d,%eax
169	movl	%edx,40(%rsp)
170	addl	%ecx,%esi
171	xorl	%r13d,%eax
172	roll	$30,%r11d
173	addl	%eax,%esi
174	movl	%r11d,%eax
175	movl	44(%r9),%ebp
176	movl	%esi,%ecx
177	xorl	%r12d,%eax
178	bswapl	%ebp
179	roll	$5,%ecx
180	leal	1518500249(%rdx,%r13,1),%r13d
181	andl	%edi,%eax
182	movl	%ebp,44(%rsp)
183	addl	%ecx,%r13d
184	xorl	%r12d,%eax
185	roll	$30,%edi
186	addl	%eax,%r13d
187	movl	%edi,%eax
188	movl	48(%r9),%edx
189	movl	%r13d,%ecx
190	xorl	%r11d,%eax
191	bswapl	%edx
192	roll	$5,%ecx
193	leal	1518500249(%rbp,%r12,1),%r12d
194	andl	%esi,%eax
195	movl	%edx,48(%rsp)
196	addl	%ecx,%r12d
197	xorl	%r11d,%eax
198	roll	$30,%esi
199	addl	%eax,%r12d
200	movl	%esi,%eax
201	movl	52(%r9),%ebp
202	movl	%r12d,%ecx
203	xorl	%edi,%eax
204	bswapl	%ebp
205	roll	$5,%ecx
206	leal	1518500249(%rdx,%r11,1),%r11d
207	andl	%r13d,%eax
208	movl	%ebp,52(%rsp)
209	addl	%ecx,%r11d
210	xorl	%edi,%eax
211	roll	$30,%r13d
212	addl	%eax,%r11d
213	movl	%r13d,%eax
214	movl	56(%r9),%edx
215	movl	%r11d,%ecx
216	xorl	%esi,%eax
217	bswapl	%edx
218	roll	$5,%ecx
219	leal	1518500249(%rbp,%rdi,1),%edi
220	andl	%r12d,%eax
221	movl	%edx,56(%rsp)
222	addl	%ecx,%edi
223	xorl	%esi,%eax
224	roll	$30,%r12d
225	addl	%eax,%edi
226	movl	%r12d,%eax
227	movl	60(%r9),%ebp
228	movl	%edi,%ecx
229	xorl	%r13d,%eax
230	bswapl	%ebp
231	roll	$5,%ecx
232	leal	1518500249(%rdx,%rsi,1),%esi
233	andl	%r11d,%eax
234	movl	%ebp,60(%rsp)
235	addl	%ecx,%esi
236	xorl	%r13d,%eax
237	roll	$30,%r11d
238	addl	%eax,%esi
239	movl	0(%rsp),%edx
240	movl	%r11d,%eax
241	movl	%esi,%ecx
242	xorl	8(%rsp),%edx
243	xorl	%r12d,%eax
244	roll	$5,%ecx
245	xorl	32(%rsp),%edx
246	andl	%edi,%eax
247	leal	1518500249(%rbp,%r13,1),%r13d
248	xorl	52(%rsp),%edx
249	xorl	%r12d,%eax
250	roll	$1,%edx
251	addl	%ecx,%r13d
252	roll	$30,%edi
253	movl	%edx,0(%rsp)
254	addl	%eax,%r13d
255	movl	4(%rsp),%ebp
256	movl	%edi,%eax
257	movl	%r13d,%ecx
258	xorl	12(%rsp),%ebp
259	xorl	%r11d,%eax
260	roll	$5,%ecx
261	xorl	36(%rsp),%ebp
262	andl	%esi,%eax
263	leal	1518500249(%rdx,%r12,1),%r12d
264	xorl	56(%rsp),%ebp
265	xorl	%r11d,%eax
266	roll	$1,%ebp
267	addl	%ecx,%r12d
268	roll	$30,%esi
269	movl	%ebp,4(%rsp)
270	addl	%eax,%r12d
271	movl	8(%rsp),%edx
272	movl	%esi,%eax
273	movl	%r12d,%ecx
274	xorl	16(%rsp),%edx
275	xorl	%edi,%eax
276	roll	$5,%ecx
277	xorl	40(%rsp),%edx
278	andl	%r13d,%eax
279	leal	1518500249(%rbp,%r11,1),%r11d
280	xorl	60(%rsp),%edx
281	xorl	%edi,%eax
282	roll	$1,%edx
283	addl	%ecx,%r11d
284	roll	$30,%r13d
285	movl	%edx,8(%rsp)
286	addl	%eax,%r11d
287	movl	12(%rsp),%ebp
288	movl	%r13d,%eax
289	movl	%r11d,%ecx
290	xorl	20(%rsp),%ebp
291	xorl	%esi,%eax
292	roll	$5,%ecx
293	xorl	44(%rsp),%ebp
294	andl	%r12d,%eax
295	leal	1518500249(%rdx,%rdi,1),%edi
296	xorl	0(%rsp),%ebp
297	xorl	%esi,%eax
298	roll	$1,%ebp
299	addl	%ecx,%edi
300	roll	$30,%r12d
301	movl	%ebp,12(%rsp)
302	addl	%eax,%edi
303	movl	16(%rsp),%edx
304	movl	%r12d,%eax
305	movl	%edi,%ecx
306	xorl	24(%rsp),%edx
307	xorl	%r13d,%eax
308	roll	$5,%ecx
309	xorl	48(%rsp),%edx
310	andl	%r11d,%eax
311	leal	1518500249(%rbp,%rsi,1),%esi
312	xorl	4(%rsp),%edx
313	xorl	%r13d,%eax
314	roll	$1,%edx
315	addl	%ecx,%esi
316	roll	$30,%r11d
317	movl	%edx,16(%rsp)
318	addl	%eax,%esi
319	movl	20(%rsp),%ebp
320	movl	%r11d,%eax
321	movl	%esi,%ecx
322	xorl	28(%rsp),%ebp
323	xorl	%edi,%eax
324	roll	$5,%ecx
325	leal	1859775393(%rdx,%r13,1),%r13d
326	xorl	52(%rsp),%ebp
327	xorl	%r12d,%eax
328	addl	%ecx,%r13d
329	xorl	8(%rsp),%ebp
330	roll	$30,%edi
331	addl	%eax,%r13d
332	roll	$1,%ebp
333	movl	%ebp,20(%rsp)
334	movl	24(%rsp),%edx
335	movl	%edi,%eax
336	movl	%r13d,%ecx
337	xorl	32(%rsp),%edx
338	xorl	%esi,%eax
339	roll	$5,%ecx
340	leal	1859775393(%rbp,%r12,1),%r12d
341	xorl	56(%rsp),%edx
342	xorl	%r11d,%eax
343	addl	%ecx,%r12d
344	xorl	12(%rsp),%edx
345	roll	$30,%esi
346	addl	%eax,%r12d
347	roll	$1,%edx
348	movl	%edx,24(%rsp)
349	movl	28(%rsp),%ebp
350	movl	%esi,%eax
351	movl	%r12d,%ecx
352	xorl	36(%rsp),%ebp
353	xorl	%r13d,%eax
354	roll	$5,%ecx
355	leal	1859775393(%rdx,%r11,1),%r11d
356	xorl	60(%rsp),%ebp
357	xorl	%edi,%eax
358	addl	%ecx,%r11d
359	xorl	16(%rsp),%ebp
360	roll	$30,%r13d
361	addl	%eax,%r11d
362	roll	$1,%ebp
363	movl	%ebp,28(%rsp)
364	movl	32(%rsp),%edx
365	movl	%r13d,%eax
366	movl	%r11d,%ecx
367	xorl	40(%rsp),%edx
368	xorl	%r12d,%eax
369	roll	$5,%ecx
370	leal	1859775393(%rbp,%rdi,1),%edi
371	xorl	0(%rsp),%edx
372	xorl	%esi,%eax
373	addl	%ecx,%edi
374	xorl	20(%rsp),%edx
375	roll	$30,%r12d
376	addl	%eax,%edi
377	roll	$1,%edx
378	movl	%edx,32(%rsp)
379	movl	36(%rsp),%ebp
380	movl	%r12d,%eax
381	movl	%edi,%ecx
382	xorl	44(%rsp),%ebp
383	xorl	%r11d,%eax
384	roll	$5,%ecx
385	leal	1859775393(%rdx,%rsi,1),%esi
386	xorl	4(%rsp),%ebp
387	xorl	%r13d,%eax
388	addl	%ecx,%esi
389	xorl	24(%rsp),%ebp
390	roll	$30,%r11d
391	addl	%eax,%esi
392	roll	$1,%ebp
393	movl	%ebp,36(%rsp)
394	movl	40(%rsp),%edx
395	movl	%r11d,%eax
396	movl	%esi,%ecx
397	xorl	48(%rsp),%edx
398	xorl	%edi,%eax
399	roll	$5,%ecx
400	leal	1859775393(%rbp,%r13,1),%r13d
401	xorl	8(%rsp),%edx
402	xorl	%r12d,%eax
403	addl	%ecx,%r13d
404	xorl	28(%rsp),%edx
405	roll	$30,%edi
406	addl	%eax,%r13d
407	roll	$1,%edx
408	movl	%edx,40(%rsp)
409	movl	44(%rsp),%ebp
410	movl	%edi,%eax
411	movl	%r13d,%ecx
412	xorl	52(%rsp),%ebp
413	xorl	%esi,%eax
414	roll	$5,%ecx
415	leal	1859775393(%rdx,%r12,1),%r12d
416	xorl	12(%rsp),%ebp
417	xorl	%r11d,%eax
418	addl	%ecx,%r12d
419	xorl	32(%rsp),%ebp
420	roll	$30,%esi
421	addl	%eax,%r12d
422	roll	$1,%ebp
423	movl	%ebp,44(%rsp)
424	movl	48(%rsp),%edx
425	movl	%esi,%eax
426	movl	%r12d,%ecx
427	xorl	56(%rsp),%edx
428	xorl	%r13d,%eax
429	roll	$5,%ecx
430	leal	1859775393(%rbp,%r11,1),%r11d
431	xorl	16(%rsp),%edx
432	xorl	%edi,%eax
433	addl	%ecx,%r11d
434	xorl	36(%rsp),%edx
435	roll	$30,%r13d
436	addl	%eax,%r11d
437	roll	$1,%edx
438	movl	%edx,48(%rsp)
439	movl	52(%rsp),%ebp
440	movl	%r13d,%eax
441	movl	%r11d,%ecx
442	xorl	60(%rsp),%ebp
443	xorl	%r12d,%eax
444	roll	$5,%ecx
445	leal	1859775393(%rdx,%rdi,1),%edi
446	xorl	20(%rsp),%ebp
447	xorl	%esi,%eax
448	addl	%ecx,%edi
449	xorl	40(%rsp),%ebp
450	roll	$30,%r12d
451	addl	%eax,%edi
452	roll	$1,%ebp
453	movl	%ebp,52(%rsp)
454	movl	56(%rsp),%edx
455	movl	%r12d,%eax
456	movl	%edi,%ecx
457	xorl	0(%rsp),%edx
458	xorl	%r11d,%eax
459	roll	$5,%ecx
460	leal	1859775393(%rbp,%rsi,1),%esi
461	xorl	24(%rsp),%edx
462	xorl	%r13d,%eax
463	addl	%ecx,%esi
464	xorl	44(%rsp),%edx
465	roll	$30,%r11d
466	addl	%eax,%esi
467	roll	$1,%edx
468	movl	%edx,56(%rsp)
469	movl	60(%rsp),%ebp
470	movl	%r11d,%eax
471	movl	%esi,%ecx
472	xorl	4(%rsp),%ebp
473	xorl	%edi,%eax
474	roll	$5,%ecx
475	leal	1859775393(%rdx,%r13,1),%r13d
476	xorl	28(%rsp),%ebp
477	xorl	%r12d,%eax
478	addl	%ecx,%r13d
479	xorl	48(%rsp),%ebp
480	roll	$30,%edi
481	addl	%eax,%r13d
482	roll	$1,%ebp
483	movl	%ebp,60(%rsp)
484	movl	0(%rsp),%edx
485	movl	%edi,%eax
486	movl	%r13d,%ecx
487	xorl	8(%rsp),%edx
488	xorl	%esi,%eax
489	roll	$5,%ecx
490	leal	1859775393(%rbp,%r12,1),%r12d
491	xorl	32(%rsp),%edx
492	xorl	%r11d,%eax
493	addl	%ecx,%r12d
494	xorl	52(%rsp),%edx
495	roll	$30,%esi
496	addl	%eax,%r12d
497	roll	$1,%edx
498	movl	%edx,0(%rsp)
499	movl	4(%rsp),%ebp
500	movl	%esi,%eax
501	movl	%r12d,%ecx
502	xorl	12(%rsp),%ebp
503	xorl	%r13d,%eax
504	roll	$5,%ecx
505	leal	1859775393(%rdx,%r11,1),%r11d
506	xorl	36(%rsp),%ebp
507	xorl	%edi,%eax
508	addl	%ecx,%r11d
509	xorl	56(%rsp),%ebp
510	roll	$30,%r13d
511	addl	%eax,%r11d
512	roll	$1,%ebp
513	movl	%ebp,4(%rsp)
514	movl	8(%rsp),%edx
515	movl	%r13d,%eax
516	movl	%r11d,%ecx
517	xorl	16(%rsp),%edx
518	xorl	%r12d,%eax
519	roll	$5,%ecx
520	leal	1859775393(%rbp,%rdi,1),%edi
521	xorl	40(%rsp),%edx
522	xorl	%esi,%eax
523	addl	%ecx,%edi
524	xorl	60(%rsp),%edx
525	roll	$30,%r12d
526	addl	%eax,%edi
527	roll	$1,%edx
528	movl	%edx,8(%rsp)
529	movl	12(%rsp),%ebp
530	movl	%r12d,%eax
531	movl	%edi,%ecx
532	xorl	20(%rsp),%ebp
533	xorl	%r11d,%eax
534	roll	$5,%ecx
535	leal	1859775393(%rdx,%rsi,1),%esi
536	xorl	44(%rsp),%ebp
537	xorl	%r13d,%eax
538	addl	%ecx,%esi
539	xorl	0(%rsp),%ebp
540	roll	$30,%r11d
541	addl	%eax,%esi
542	roll	$1,%ebp
543	movl	%ebp,12(%rsp)
544	movl	16(%rsp),%edx
545	movl	%r11d,%eax
546	movl	%esi,%ecx
547	xorl	24(%rsp),%edx
548	xorl	%edi,%eax
549	roll	$5,%ecx
550	leal	1859775393(%rbp,%r13,1),%r13d
551	xorl	48(%rsp),%edx
552	xorl	%r12d,%eax
553	addl	%ecx,%r13d
554	xorl	4(%rsp),%edx
555	roll	$30,%edi
556	addl	%eax,%r13d
557	roll	$1,%edx
558	movl	%edx,16(%rsp)
559	movl	20(%rsp),%ebp
560	movl	%edi,%eax
561	movl	%r13d,%ecx
562	xorl	28(%rsp),%ebp
563	xorl	%esi,%eax
564	roll	$5,%ecx
565	leal	1859775393(%rdx,%r12,1),%r12d
566	xorl	52(%rsp),%ebp
567	xorl	%r11d,%eax
568	addl	%ecx,%r12d
569	xorl	8(%rsp),%ebp
570	roll	$30,%esi
571	addl	%eax,%r12d
572	roll	$1,%ebp
573	movl	%ebp,20(%rsp)
574	movl	24(%rsp),%edx
575	movl	%esi,%eax
576	movl	%r12d,%ecx
577	xorl	32(%rsp),%edx
578	xorl	%r13d,%eax
579	roll	$5,%ecx
580	leal	1859775393(%rbp,%r11,1),%r11d
581	xorl	56(%rsp),%edx
582	xorl	%edi,%eax
583	addl	%ecx,%r11d
584	xorl	12(%rsp),%edx
585	roll	$30,%r13d
586	addl	%eax,%r11d
587	roll	$1,%edx
588	movl	%edx,24(%rsp)
589	movl	28(%rsp),%ebp
590	movl	%r13d,%eax
591	movl	%r11d,%ecx
592	xorl	36(%rsp),%ebp
593	xorl	%r12d,%eax
594	roll	$5,%ecx
595	leal	1859775393(%rdx,%rdi,1),%edi
596	xorl	60(%rsp),%ebp
597	xorl	%esi,%eax
598	addl	%ecx,%edi
599	xorl	16(%rsp),%ebp
600	roll	$30,%r12d
601	addl	%eax,%edi
602	roll	$1,%ebp
603	movl	%ebp,28(%rsp)
604	movl	32(%rsp),%edx
605	movl	%r12d,%eax
606	movl	%edi,%ecx
607	xorl	40(%rsp),%edx
608	xorl	%r11d,%eax
609	roll	$5,%ecx
610	leal	1859775393(%rbp,%rsi,1),%esi
611	xorl	0(%rsp),%edx
612	xorl	%r13d,%eax
613	addl	%ecx,%esi
614	xorl	20(%rsp),%edx
615	roll	$30,%r11d
616	addl	%eax,%esi
617	roll	$1,%edx
618	movl	%edx,32(%rsp)
619	movl	36(%rsp),%ebp
620	movl	%r11d,%eax
621	movl	%r11d,%ebx
622	xorl	44(%rsp),%ebp
623	andl	%r12d,%eax
624	movl	%esi,%ecx
625	xorl	4(%rsp),%ebp
626	xorl	%r12d,%ebx
627	leal	-1894007588(%rdx,%r13,1),%r13d
628	roll	$5,%ecx
629	xorl	24(%rsp),%ebp
630	addl	%eax,%r13d
631	andl	%edi,%ebx
632	roll	$1,%ebp
633	addl	%ebx,%r13d
634	roll	$30,%edi
635	movl	%ebp,36(%rsp)
636	addl	%ecx,%r13d
637	movl	40(%rsp),%edx
638	movl	%edi,%eax
639	movl	%edi,%ebx
640	xorl	48(%rsp),%edx
641	andl	%r11d,%eax
642	movl	%r13d,%ecx
643	xorl	8(%rsp),%edx
644	xorl	%r11d,%ebx
645	leal	-1894007588(%rbp,%r12,1),%r12d
646	roll	$5,%ecx
647	xorl	28(%rsp),%edx
648	addl	%eax,%r12d
649	andl	%esi,%ebx
650	roll	$1,%edx
651	addl	%ebx,%r12d
652	roll	$30,%esi
653	movl	%edx,40(%rsp)
654	addl	%ecx,%r12d
655	movl	44(%rsp),%ebp
656	movl	%esi,%eax
657	movl	%esi,%ebx
658	xorl	52(%rsp),%ebp
659	andl	%edi,%eax
660	movl	%r12d,%ecx
661	xorl	12(%rsp),%ebp
662	xorl	%edi,%ebx
663	leal	-1894007588(%rdx,%r11,1),%r11d
664	roll	$5,%ecx
665	xorl	32(%rsp),%ebp
666	addl	%eax,%r11d
667	andl	%r13d,%ebx
668	roll	$1,%ebp
669	addl	%ebx,%r11d
670	roll	$30,%r13d
671	movl	%ebp,44(%rsp)
672	addl	%ecx,%r11d
673	movl	48(%rsp),%edx
674	movl	%r13d,%eax
675	movl	%r13d,%ebx
676	xorl	56(%rsp),%edx
677	andl	%esi,%eax
678	movl	%r11d,%ecx
679	xorl	16(%rsp),%edx
680	xorl	%esi,%ebx
681	leal	-1894007588(%rbp,%rdi,1),%edi
682	roll	$5,%ecx
683	xorl	36(%rsp),%edx
684	addl	%eax,%edi
685	andl	%r12d,%ebx
686	roll	$1,%edx
687	addl	%ebx,%edi
688	roll	$30,%r12d
689	movl	%edx,48(%rsp)
690	addl	%ecx,%edi
691	movl	52(%rsp),%ebp
692	movl	%r12d,%eax
693	movl	%r12d,%ebx
694	xorl	60(%rsp),%ebp
695	andl	%r13d,%eax
696	movl	%edi,%ecx
697	xorl	20(%rsp),%ebp
698	xorl	%r13d,%ebx
699	leal	-1894007588(%rdx,%rsi,1),%esi
700	roll	$5,%ecx
701	xorl	40(%rsp),%ebp
702	addl	%eax,%esi
703	andl	%r11d,%ebx
704	roll	$1,%ebp
705	addl	%ebx,%esi
706	roll	$30,%r11d
707	movl	%ebp,52(%rsp)
708	addl	%ecx,%esi
709	movl	56(%rsp),%edx
710	movl	%r11d,%eax
711	movl	%r11d,%ebx
712	xorl	0(%rsp),%edx
713	andl	%r12d,%eax
714	movl	%esi,%ecx
715	xorl	24(%rsp),%edx
716	xorl	%r12d,%ebx
717	leal	-1894007588(%rbp,%r13,1),%r13d
718	roll	$5,%ecx
719	xorl	44(%rsp),%edx
720	addl	%eax,%r13d
721	andl	%edi,%ebx
722	roll	$1,%edx
723	addl	%ebx,%r13d
724	roll	$30,%edi
725	movl	%edx,56(%rsp)
726	addl	%ecx,%r13d
727	movl	60(%rsp),%ebp
728	movl	%edi,%eax
729	movl	%edi,%ebx
730	xorl	4(%rsp),%ebp
731	andl	%r11d,%eax
732	movl	%r13d,%ecx
733	xorl	28(%rsp),%ebp
734	xorl	%r11d,%ebx
735	leal	-1894007588(%rdx,%r12,1),%r12d
736	roll	$5,%ecx
737	xorl	48(%rsp),%ebp
738	addl	%eax,%r12d
739	andl	%esi,%ebx
740	roll	$1,%ebp
741	addl	%ebx,%r12d
742	roll	$30,%esi
743	movl	%ebp,60(%rsp)
744	addl	%ecx,%r12d
745	movl	0(%rsp),%edx
746	movl	%esi,%eax
747	movl	%esi,%ebx
748	xorl	8(%rsp),%edx
749	andl	%edi,%eax
750	movl	%r12d,%ecx
751	xorl	32(%rsp),%edx
752	xorl	%edi,%ebx
753	leal	-1894007588(%rbp,%r11,1),%r11d
754	roll	$5,%ecx
755	xorl	52(%rsp),%edx
756	addl	%eax,%r11d
757	andl	%r13d,%ebx
758	roll	$1,%edx
759	addl	%ebx,%r11d
760	roll	$30,%r13d
761	movl	%edx,0(%rsp)
762	addl	%ecx,%r11d
763	movl	4(%rsp),%ebp
764	movl	%r13d,%eax
765	movl	%r13d,%ebx
766	xorl	12(%rsp),%ebp
767	andl	%esi,%eax
768	movl	%r11d,%ecx
769	xorl	36(%rsp),%ebp
770	xorl	%esi,%ebx
771	leal	-1894007588(%rdx,%rdi,1),%edi
772	roll	$5,%ecx
773	xorl	56(%rsp),%ebp
774	addl	%eax,%edi
775	andl	%r12d,%ebx
776	roll	$1,%ebp
777	addl	%ebx,%edi
778	roll	$30,%r12d
779	movl	%ebp,4(%rsp)
780	addl	%ecx,%edi
781	movl	8(%rsp),%edx
782	movl	%r12d,%eax
783	movl	%r12d,%ebx
784	xorl	16(%rsp),%edx
785	andl	%r13d,%eax
786	movl	%edi,%ecx
787	xorl	40(%rsp),%edx
788	xorl	%r13d,%ebx
789	leal	-1894007588(%rbp,%rsi,1),%esi
790	roll	$5,%ecx
791	xorl	60(%rsp),%edx
792	addl	%eax,%esi
793	andl	%r11d,%ebx
794	roll	$1,%edx
795	addl	%ebx,%esi
796	roll	$30,%r11d
797	movl	%edx,8(%rsp)
798	addl	%ecx,%esi
799	movl	12(%rsp),%ebp
800	movl	%r11d,%eax
801	movl	%r11d,%ebx
802	xorl	20(%rsp),%ebp
803	andl	%r12d,%eax
804	movl	%esi,%ecx
805	xorl	44(%rsp),%ebp
806	xorl	%r12d,%ebx
807	leal	-1894007588(%rdx,%r13,1),%r13d
808	roll	$5,%ecx
809	xorl	0(%rsp),%ebp
810	addl	%eax,%r13d
811	andl	%edi,%ebx
812	roll	$1,%ebp
813	addl	%ebx,%r13d
814	roll	$30,%edi
815	movl	%ebp,12(%rsp)
816	addl	%ecx,%r13d
817	movl	16(%rsp),%edx
818	movl	%edi,%eax
819	movl	%edi,%ebx
820	xorl	24(%rsp),%edx
821	andl	%r11d,%eax
822	movl	%r13d,%ecx
823	xorl	48(%rsp),%edx
824	xorl	%r11d,%ebx
825	leal	-1894007588(%rbp,%r12,1),%r12d
826	roll	$5,%ecx
827	xorl	4(%rsp),%edx
828	addl	%eax,%r12d
829	andl	%esi,%ebx
830	roll	$1,%edx
831	addl	%ebx,%r12d
832	roll	$30,%esi
833	movl	%edx,16(%rsp)
834	addl	%ecx,%r12d
835	movl	20(%rsp),%ebp
836	movl	%esi,%eax
837	movl	%esi,%ebx
838	xorl	28(%rsp),%ebp
839	andl	%edi,%eax
840	movl	%r12d,%ecx
841	xorl	52(%rsp),%ebp
842	xorl	%edi,%ebx
843	leal	-1894007588(%rdx,%r11,1),%r11d
844	roll	$5,%ecx
845	xorl	8(%rsp),%ebp
846	addl	%eax,%r11d
847	andl	%r13d,%ebx
848	roll	$1,%ebp
849	addl	%ebx,%r11d
850	roll	$30,%r13d
851	movl	%ebp,20(%rsp)
852	addl	%ecx,%r11d
853	movl	24(%rsp),%edx
854	movl	%r13d,%eax
855	movl	%r13d,%ebx
856	xorl	32(%rsp),%edx
857	andl	%esi,%eax
858	movl	%r11d,%ecx
859	xorl	56(%rsp),%edx
860	xorl	%esi,%ebx
861	leal	-1894007588(%rbp,%rdi,1),%edi
862	roll	$5,%ecx
863	xorl	12(%rsp),%edx
864	addl	%eax,%edi
865	andl	%r12d,%ebx
866	roll	$1,%edx
867	addl	%ebx,%edi
868	roll	$30,%r12d
869	movl	%edx,24(%rsp)
870	addl	%ecx,%edi
871	movl	28(%rsp),%ebp
872	movl	%r12d,%eax
873	movl	%r12d,%ebx
874	xorl	36(%rsp),%ebp
875	andl	%r13d,%eax
876	movl	%edi,%ecx
877	xorl	60(%rsp),%ebp
878	xorl	%r13d,%ebx
879	leal	-1894007588(%rdx,%rsi,1),%esi
880	roll	$5,%ecx
881	xorl	16(%rsp),%ebp
882	addl	%eax,%esi
883	andl	%r11d,%ebx
884	roll	$1,%ebp
885	addl	%ebx,%esi
886	roll	$30,%r11d
887	movl	%ebp,28(%rsp)
888	addl	%ecx,%esi
889	movl	32(%rsp),%edx
890	movl	%r11d,%eax
891	movl	%r11d,%ebx
892	xorl	40(%rsp),%edx
893	andl	%r12d,%eax
894	movl	%esi,%ecx
895	xorl	0(%rsp),%edx
896	xorl	%r12d,%ebx
897	leal	-1894007588(%rbp,%r13,1),%r13d
898	roll	$5,%ecx
899	xorl	20(%rsp),%edx
900	addl	%eax,%r13d
901	andl	%edi,%ebx
902	roll	$1,%edx
903	addl	%ebx,%r13d
904	roll	$30,%edi
905	movl	%edx,32(%rsp)
906	addl	%ecx,%r13d
907	movl	36(%rsp),%ebp
908	movl	%edi,%eax
909	movl	%edi,%ebx
910	xorl	44(%rsp),%ebp
911	andl	%r11d,%eax
912	movl	%r13d,%ecx
913	xorl	4(%rsp),%ebp
914	xorl	%r11d,%ebx
915	leal	-1894007588(%rdx,%r12,1),%r12d
916	roll	$5,%ecx
917	xorl	24(%rsp),%ebp
918	addl	%eax,%r12d
919	andl	%esi,%ebx
920	roll	$1,%ebp
921	addl	%ebx,%r12d
922	roll	$30,%esi
923	movl	%ebp,36(%rsp)
924	addl	%ecx,%r12d
925	movl	40(%rsp),%edx
926	movl	%esi,%eax
927	movl	%esi,%ebx
928	xorl	48(%rsp),%edx
929	andl	%edi,%eax
930	movl	%r12d,%ecx
931	xorl	8(%rsp),%edx
932	xorl	%edi,%ebx
933	leal	-1894007588(%rbp,%r11,1),%r11d
934	roll	$5,%ecx
935	xorl	28(%rsp),%edx
936	addl	%eax,%r11d
937	andl	%r13d,%ebx
938	roll	$1,%edx
939	addl	%ebx,%r11d
940	roll	$30,%r13d
941	movl	%edx,40(%rsp)
942	addl	%ecx,%r11d
943	movl	44(%rsp),%ebp
944	movl	%r13d,%eax
945	movl	%r13d,%ebx
946	xorl	52(%rsp),%ebp
947	andl	%esi,%eax
948	movl	%r11d,%ecx
949	xorl	12(%rsp),%ebp
950	xorl	%esi,%ebx
951	leal	-1894007588(%rdx,%rdi,1),%edi
952	roll	$5,%ecx
953	xorl	32(%rsp),%ebp
954	addl	%eax,%edi
955	andl	%r12d,%ebx
956	roll	$1,%ebp
957	addl	%ebx,%edi
958	roll	$30,%r12d
959	movl	%ebp,44(%rsp)
960	addl	%ecx,%edi
961	movl	48(%rsp),%edx
962	movl	%r12d,%eax
963	movl	%r12d,%ebx
964	xorl	56(%rsp),%edx
965	andl	%r13d,%eax
966	movl	%edi,%ecx
967	xorl	16(%rsp),%edx
968	xorl	%r13d,%ebx
969	leal	-1894007588(%rbp,%rsi,1),%esi
970	roll	$5,%ecx
971	xorl	36(%rsp),%edx
972	addl	%eax,%esi
973	andl	%r11d,%ebx
974	roll	$1,%edx
975	addl	%ebx,%esi
976	roll	$30,%r11d
977	movl	%edx,48(%rsp)
978	addl	%ecx,%esi
979	movl	52(%rsp),%ebp
980	movl	%r11d,%eax
981	movl	%esi,%ecx
982	xorl	60(%rsp),%ebp
983	xorl	%edi,%eax
984	roll	$5,%ecx
985	leal	-899497514(%rdx,%r13,1),%r13d
986	xorl	20(%rsp),%ebp
987	xorl	%r12d,%eax
988	addl	%ecx,%r13d
989	xorl	40(%rsp),%ebp
990	roll	$30,%edi
991	addl	%eax,%r13d
992	roll	$1,%ebp
993	movl	%ebp,52(%rsp)
994	movl	56(%rsp),%edx
995	movl	%edi,%eax
996	movl	%r13d,%ecx
997	xorl	0(%rsp),%edx
998	xorl	%esi,%eax
999	roll	$5,%ecx
1000	leal	-899497514(%rbp,%r12,1),%r12d
1001	xorl	24(%rsp),%edx
1002	xorl	%r11d,%eax
1003	addl	%ecx,%r12d
1004	xorl	44(%rsp),%edx
1005	roll	$30,%esi
1006	addl	%eax,%r12d
1007	roll	$1,%edx
1008	movl	%edx,56(%rsp)
1009	movl	60(%rsp),%ebp
1010	movl	%esi,%eax
1011	movl	%r12d,%ecx
1012	xorl	4(%rsp),%ebp
1013	xorl	%r13d,%eax
1014	roll	$5,%ecx
1015	leal	-899497514(%rdx,%r11,1),%r11d
1016	xorl	28(%rsp),%ebp
1017	xorl	%edi,%eax
1018	addl	%ecx,%r11d
1019	xorl	48(%rsp),%ebp
1020	roll	$30,%r13d
1021	addl	%eax,%r11d
1022	roll	$1,%ebp
1023	movl	%ebp,60(%rsp)
1024	movl	0(%rsp),%edx
1025	movl	%r13d,%eax
1026	movl	%r11d,%ecx
1027	xorl	8(%rsp),%edx
1028	xorl	%r12d,%eax
1029	roll	$5,%ecx
1030	leal	-899497514(%rbp,%rdi,1),%edi
1031	xorl	32(%rsp),%edx
1032	xorl	%esi,%eax
1033	addl	%ecx,%edi
1034	xorl	52(%rsp),%edx
1035	roll	$30,%r12d
1036	addl	%eax,%edi
1037	roll	$1,%edx
1038	movl	%edx,0(%rsp)
1039	movl	4(%rsp),%ebp
1040	movl	%r12d,%eax
1041	movl	%edi,%ecx
1042	xorl	12(%rsp),%ebp
1043	xorl	%r11d,%eax
1044	roll	$5,%ecx
1045	leal	-899497514(%rdx,%rsi,1),%esi
1046	xorl	36(%rsp),%ebp
1047	xorl	%r13d,%eax
1048	addl	%ecx,%esi
1049	xorl	56(%rsp),%ebp
1050	roll	$30,%r11d
1051	addl	%eax,%esi
1052	roll	$1,%ebp
1053	movl	%ebp,4(%rsp)
1054	movl	8(%rsp),%edx
1055	movl	%r11d,%eax
1056	movl	%esi,%ecx
1057	xorl	16(%rsp),%edx
1058	xorl	%edi,%eax
1059	roll	$5,%ecx
1060	leal	-899497514(%rbp,%r13,1),%r13d
1061	xorl	40(%rsp),%edx
1062	xorl	%r12d,%eax
1063	addl	%ecx,%r13d
1064	xorl	60(%rsp),%edx
1065	roll	$30,%edi
1066	addl	%eax,%r13d
1067	roll	$1,%edx
1068	movl	%edx,8(%rsp)
1069	movl	12(%rsp),%ebp
1070	movl	%edi,%eax
1071	movl	%r13d,%ecx
1072	xorl	20(%rsp),%ebp
1073	xorl	%esi,%eax
1074	roll	$5,%ecx
1075	leal	-899497514(%rdx,%r12,1),%r12d
1076	xorl	44(%rsp),%ebp
1077	xorl	%r11d,%eax
1078	addl	%ecx,%r12d
1079	xorl	0(%rsp),%ebp
1080	roll	$30,%esi
1081	addl	%eax,%r12d
1082	roll	$1,%ebp
1083	movl	%ebp,12(%rsp)
1084	movl	16(%rsp),%edx
1085	movl	%esi,%eax
1086	movl	%r12d,%ecx
1087	xorl	24(%rsp),%edx
1088	xorl	%r13d,%eax
1089	roll	$5,%ecx
1090	leal	-899497514(%rbp,%r11,1),%r11d
1091	xorl	48(%rsp),%edx
1092	xorl	%edi,%eax
1093	addl	%ecx,%r11d
1094	xorl	4(%rsp),%edx
1095	roll	$30,%r13d
1096	addl	%eax,%r11d
1097	roll	$1,%edx
1098	movl	%edx,16(%rsp)
1099	movl	20(%rsp),%ebp
1100	movl	%r13d,%eax
1101	movl	%r11d,%ecx
1102	xorl	28(%rsp),%ebp
1103	xorl	%r12d,%eax
1104	roll	$5,%ecx
1105	leal	-899497514(%rdx,%rdi,1),%edi
1106	xorl	52(%rsp),%ebp
1107	xorl	%esi,%eax
1108	addl	%ecx,%edi
1109	xorl	8(%rsp),%ebp
1110	roll	$30,%r12d
1111	addl	%eax,%edi
1112	roll	$1,%ebp
1113	movl	%ebp,20(%rsp)
1114	movl	24(%rsp),%edx
1115	movl	%r12d,%eax
1116	movl	%edi,%ecx
1117	xorl	32(%rsp),%edx
1118	xorl	%r11d,%eax
1119	roll	$5,%ecx
1120	leal	-899497514(%rbp,%rsi,1),%esi
1121	xorl	56(%rsp),%edx
1122	xorl	%r13d,%eax
1123	addl	%ecx,%esi
1124	xorl	12(%rsp),%edx
1125	roll	$30,%r11d
1126	addl	%eax,%esi
1127	roll	$1,%edx
1128	movl	%edx,24(%rsp)
1129	movl	28(%rsp),%ebp
1130	movl	%r11d,%eax
1131	movl	%esi,%ecx
1132	xorl	36(%rsp),%ebp
1133	xorl	%edi,%eax
1134	roll	$5,%ecx
1135	leal	-899497514(%rdx,%r13,1),%r13d
1136	xorl	60(%rsp),%ebp
1137	xorl	%r12d,%eax
1138	addl	%ecx,%r13d
1139	xorl	16(%rsp),%ebp
1140	roll	$30,%edi
1141	addl	%eax,%r13d
1142	roll	$1,%ebp
1143	movl	%ebp,28(%rsp)
1144	movl	32(%rsp),%edx
1145	movl	%edi,%eax
1146	movl	%r13d,%ecx
1147	xorl	40(%rsp),%edx
1148	xorl	%esi,%eax
1149	roll	$5,%ecx
1150	leal	-899497514(%rbp,%r12,1),%r12d
1151	xorl	0(%rsp),%edx
1152	xorl	%r11d,%eax
1153	addl	%ecx,%r12d
1154	xorl	20(%rsp),%edx
1155	roll	$30,%esi
1156	addl	%eax,%r12d
1157	roll	$1,%edx
1158	movl	%edx,32(%rsp)
1159	movl	36(%rsp),%ebp
1160	movl	%esi,%eax
1161	movl	%r12d,%ecx
1162	xorl	44(%rsp),%ebp
1163	xorl	%r13d,%eax
1164	roll	$5,%ecx
1165	leal	-899497514(%rdx,%r11,1),%r11d
1166	xorl	4(%rsp),%ebp
1167	xorl	%edi,%eax
1168	addl	%ecx,%r11d
1169	xorl	24(%rsp),%ebp
1170	roll	$30,%r13d
1171	addl	%eax,%r11d
1172	roll	$1,%ebp
1173	movl	%ebp,36(%rsp)
1174	movl	40(%rsp),%edx
1175	movl	%r13d,%eax
1176	movl	%r11d,%ecx
1177	xorl	48(%rsp),%edx
1178	xorl	%r12d,%eax
1179	roll	$5,%ecx
1180	leal	-899497514(%rbp,%rdi,1),%edi
1181	xorl	8(%rsp),%edx
1182	xorl	%esi,%eax
1183	addl	%ecx,%edi
1184	xorl	28(%rsp),%edx
1185	roll	$30,%r12d
1186	addl	%eax,%edi
1187	roll	$1,%edx
1188	movl	%edx,40(%rsp)
1189	movl	44(%rsp),%ebp
1190	movl	%r12d,%eax
1191	movl	%edi,%ecx
1192	xorl	52(%rsp),%ebp
1193	xorl	%r11d,%eax
1194	roll	$5,%ecx
1195	leal	-899497514(%rdx,%rsi,1),%esi
1196	xorl	12(%rsp),%ebp
1197	xorl	%r13d,%eax
1198	addl	%ecx,%esi
1199	xorl	32(%rsp),%ebp
1200	roll	$30,%r11d
1201	addl	%eax,%esi
1202	roll	$1,%ebp
1203	movl	%ebp,44(%rsp)
1204	movl	48(%rsp),%edx
1205	movl	%r11d,%eax
1206	movl	%esi,%ecx
1207	xorl	56(%rsp),%edx
1208	xorl	%edi,%eax
1209	roll	$5,%ecx
1210	leal	-899497514(%rbp,%r13,1),%r13d
1211	xorl	16(%rsp),%edx
1212	xorl	%r12d,%eax
1213	addl	%ecx,%r13d
1214	xorl	36(%rsp),%edx
1215	roll	$30,%edi
1216	addl	%eax,%r13d
1217	roll	$1,%edx
1218	movl	%edx,48(%rsp)
1219	movl	52(%rsp),%ebp
1220	movl	%edi,%eax
1221	movl	%r13d,%ecx
1222	xorl	60(%rsp),%ebp
1223	xorl	%esi,%eax
1224	roll	$5,%ecx
1225	leal	-899497514(%rdx,%r12,1),%r12d
1226	xorl	20(%rsp),%ebp
1227	xorl	%r11d,%eax
1228	addl	%ecx,%r12d
1229	xorl	40(%rsp),%ebp
1230	roll	$30,%esi
1231	addl	%eax,%r12d
1232	roll	$1,%ebp
1233	movl	56(%rsp),%edx
1234	movl	%esi,%eax
1235	movl	%r12d,%ecx
1236	xorl	0(%rsp),%edx
1237	xorl	%r13d,%eax
1238	roll	$5,%ecx
1239	leal	-899497514(%rbp,%r11,1),%r11d
1240	xorl	24(%rsp),%edx
1241	xorl	%edi,%eax
1242	addl	%ecx,%r11d
1243	xorl	44(%rsp),%edx
1244	roll	$30,%r13d
1245	addl	%eax,%r11d
1246	roll	$1,%edx
1247	movl	60(%rsp),%ebp
1248	movl	%r13d,%eax
1249	movl	%r11d,%ecx
1250	xorl	4(%rsp),%ebp
1251	xorl	%r12d,%eax
1252	roll	$5,%ecx
1253	leal	-899497514(%rdx,%rdi,1),%edi
1254	xorl	28(%rsp),%ebp
1255	xorl	%esi,%eax
1256	addl	%ecx,%edi
1257	xorl	48(%rsp),%ebp
1258	roll	$30,%r12d
1259	addl	%eax,%edi
1260	roll	$1,%ebp
1261	movl	%r12d,%eax
1262	movl	%edi,%ecx
1263	xorl	%r11d,%eax
1264	leal	-899497514(%rbp,%rsi,1),%esi
1265	roll	$5,%ecx
1266	xorl	%r13d,%eax
1267	addl	%ecx,%esi
1268	roll	$30,%r11d
1269	addl	%eax,%esi
1270	addl	0(%r8),%esi
1271	addl	4(%r8),%edi
1272	addl	8(%r8),%r11d
1273	addl	12(%r8),%r12d
1274	addl	16(%r8),%r13d
1275	movl	%esi,0(%r8)
1276	movl	%edi,4(%r8)
1277	movl	%r11d,8(%r8)
1278	movl	%r12d,12(%r8)
1279	movl	%r13d,16(%r8)
1280
1281	subq	$1,%r10
1282	leaq	64(%r9),%r9
1283	jnz	.Lloop
1284
1285	movq	64(%rsp),%rsi
1286	movq	(%rsi),%r13
1287	movq	8(%rsi),%r12
1288	movq	16(%rsi),%rbp
1289	movq	24(%rsi),%rbx
1290	leaq	32(%rsi),%rsp
1291.Lepilogue:
1292	.byte	0xf3,0xc3
1293.size	sha1_block_data_order,.-sha1_block_data_order
1294.type	sha1_block_data_order_ssse3,@function
1295.align	16
1296sha1_block_data_order_ssse3:
1297_ssse3_shortcut:
1298	pushq	%rbx
1299	pushq	%rbp
1300	pushq	%r12
1301	leaq	-64(%rsp),%rsp
1302	movq	%rdi,%r8
1303	movq	%rsi,%r9
1304	movq	%rdx,%r10
1305
1306	shlq	$6,%r10
1307	addq	%r9,%r10
1308	leaq	K_XX_XX(%rip),%r11
1309
1310	movl	0(%r8),%eax
1311	movl	4(%r8),%ebx
1312	movl	8(%r8),%ecx
1313	movl	12(%r8),%edx
1314	movl	%ebx,%esi
1315	movl	16(%r8),%ebp
1316
1317	movdqa	64(%r11),%xmm6
1318	movdqa	0(%r11),%xmm9
1319	movdqu	0(%r9),%xmm0
1320	movdqu	16(%r9),%xmm1
1321	movdqu	32(%r9),%xmm2
1322	movdqu	48(%r9),%xmm3
1323.byte	102,15,56,0,198
1324	addq	$64,%r9
1325.byte	102,15,56,0,206
1326.byte	102,15,56,0,214
1327.byte	102,15,56,0,222
1328	paddd	%xmm9,%xmm0
1329	paddd	%xmm9,%xmm1
1330	paddd	%xmm9,%xmm2
1331	movdqa	%xmm0,0(%rsp)
1332	psubd	%xmm9,%xmm0
1333	movdqa	%xmm1,16(%rsp)
1334	psubd	%xmm9,%xmm1
1335	movdqa	%xmm2,32(%rsp)
1336	psubd	%xmm9,%xmm2
1337	jmp	.Loop_ssse3
1338.align	16
1339.Loop_ssse3:
1340	movdqa	%xmm1,%xmm4
1341	addl	0(%rsp),%ebp
1342	xorl	%edx,%ecx
1343	movdqa	%xmm3,%xmm8
1344.byte	102,15,58,15,224,8
1345	movl	%eax,%edi
1346	roll	$5,%eax
1347	paddd	%xmm3,%xmm9
1348	andl	%ecx,%esi
1349	xorl	%edx,%ecx
1350	psrldq	$4,%xmm8
1351	xorl	%edx,%esi
1352	addl	%eax,%ebp
1353	pxor	%xmm0,%xmm4
1354	rorl	$2,%ebx
1355	addl	%esi,%ebp
1356	pxor	%xmm2,%xmm8
1357	addl	4(%rsp),%edx
1358	xorl	%ecx,%ebx
1359	movl	%ebp,%esi
1360	roll	$5,%ebp
1361	pxor	%xmm8,%xmm4
1362	andl	%ebx,%edi
1363	xorl	%ecx,%ebx
1364	movdqa	%xmm9,48(%rsp)
1365	xorl	%ecx,%edi
1366	addl	%ebp,%edx
1367	movdqa	%xmm4,%xmm10
1368	movdqa	%xmm4,%xmm8
1369	rorl	$7,%eax
1370	addl	%edi,%edx
1371	addl	8(%rsp),%ecx
1372	xorl	%ebx,%eax
1373	pslldq	$12,%xmm10
1374	paddd	%xmm4,%xmm4
1375	movl	%edx,%edi
1376	roll	$5,%edx
1377	andl	%eax,%esi
1378	xorl	%ebx,%eax
1379	psrld	$31,%xmm8
1380	xorl	%ebx,%esi
1381	addl	%edx,%ecx
1382	movdqa	%xmm10,%xmm9
1383	rorl	$7,%ebp
1384	addl	%esi,%ecx
1385	psrld	$30,%xmm10
1386	por	%xmm8,%xmm4
1387	addl	12(%rsp),%ebx
1388	xorl	%eax,%ebp
1389	movl	%ecx,%esi
1390	roll	$5,%ecx
1391	pslld	$2,%xmm9
1392	pxor	%xmm10,%xmm4
1393	andl	%ebp,%edi
1394	xorl	%eax,%ebp
1395	movdqa	0(%r11),%xmm10
1396	xorl	%eax,%edi
1397	addl	%ecx,%ebx
1398	pxor	%xmm9,%xmm4
1399	rorl	$7,%edx
1400	addl	%edi,%ebx
1401	movdqa	%xmm2,%xmm5
1402	addl	16(%rsp),%eax
1403	xorl	%ebp,%edx
1404	movdqa	%xmm4,%xmm9
1405.byte	102,15,58,15,233,8
1406	movl	%ebx,%edi
1407	roll	$5,%ebx
1408	paddd	%xmm4,%xmm10
1409	andl	%edx,%esi
1410	xorl	%ebp,%edx
1411	psrldq	$4,%xmm9
1412	xorl	%ebp,%esi
1413	addl	%ebx,%eax
1414	pxor	%xmm1,%xmm5
1415	rorl	$7,%ecx
1416	addl	%esi,%eax
1417	pxor	%xmm3,%xmm9
1418	addl	20(%rsp),%ebp
1419	xorl	%edx,%ecx
1420	movl	%eax,%esi
1421	roll	$5,%eax
1422	pxor	%xmm9,%xmm5
1423	andl	%ecx,%edi
1424	xorl	%edx,%ecx
1425	movdqa	%xmm10,0(%rsp)
1426	xorl	%edx,%edi
1427	addl	%eax,%ebp
1428	movdqa	%xmm5,%xmm8
1429	movdqa	%xmm5,%xmm9
1430	rorl	$7,%ebx
1431	addl	%edi,%ebp
1432	addl	24(%rsp),%edx
1433	xorl	%ecx,%ebx
1434	pslldq	$12,%xmm8
1435	paddd	%xmm5,%xmm5
1436	movl	%ebp,%edi
1437	roll	$5,%ebp
1438	andl	%ebx,%esi
1439	xorl	%ecx,%ebx
1440	psrld	$31,%xmm9
1441	xorl	%ecx,%esi
1442	addl	%ebp,%edx
1443	movdqa	%xmm8,%xmm10
1444	rorl	$7,%eax
1445	addl	%esi,%edx
1446	psrld	$30,%xmm8
1447	por	%xmm9,%xmm5
1448	addl	28(%rsp),%ecx
1449	xorl	%ebx,%eax
1450	movl	%edx,%esi
1451	roll	$5,%edx
1452	pslld	$2,%xmm10
1453	pxor	%xmm8,%xmm5
1454	andl	%eax,%edi
1455	xorl	%ebx,%eax
1456	movdqa	16(%r11),%xmm8
1457	xorl	%ebx,%edi
1458	addl	%edx,%ecx
1459	pxor	%xmm10,%xmm5
1460	rorl	$7,%ebp
1461	addl	%edi,%ecx
1462	movdqa	%xmm3,%xmm6
1463	addl	32(%rsp),%ebx
1464	xorl	%eax,%ebp
1465	movdqa	%xmm5,%xmm10
1466.byte	102,15,58,15,242,8
1467	movl	%ecx,%edi
1468	roll	$5,%ecx
1469	paddd	%xmm5,%xmm8
1470	andl	%ebp,%esi
1471	xorl	%eax,%ebp
1472	psrldq	$4,%xmm10
1473	xorl	%eax,%esi
1474	addl	%ecx,%ebx
1475	pxor	%xmm2,%xmm6
1476	rorl	$7,%edx
1477	addl	%esi,%ebx
1478	pxor	%xmm4,%xmm10
1479	addl	36(%rsp),%eax
1480	xorl	%ebp,%edx
1481	movl	%ebx,%esi
1482	roll	$5,%ebx
1483	pxor	%xmm10,%xmm6
1484	andl	%edx,%edi
1485	xorl	%ebp,%edx
1486	movdqa	%xmm8,16(%rsp)
1487	xorl	%ebp,%edi
1488	addl	%ebx,%eax
1489	movdqa	%xmm6,%xmm9
1490	movdqa	%xmm6,%xmm10
1491	rorl	$7,%ecx
1492	addl	%edi,%eax
1493	addl	40(%rsp),%ebp
1494	xorl	%edx,%ecx
1495	pslldq	$12,%xmm9
1496	paddd	%xmm6,%xmm6
1497	movl	%eax,%edi
1498	roll	$5,%eax
1499	andl	%ecx,%esi
1500	xorl	%edx,%ecx
1501	psrld	$31,%xmm10
1502	xorl	%edx,%esi
1503	addl	%eax,%ebp
1504	movdqa	%xmm9,%xmm8
1505	rorl	$7,%ebx
1506	addl	%esi,%ebp
1507	psrld	$30,%xmm9
1508	por	%xmm10,%xmm6
1509	addl	44(%rsp),%edx
1510	xorl	%ecx,%ebx
1511	movl	%ebp,%esi
1512	roll	$5,%ebp
1513	pslld	$2,%xmm8
1514	pxor	%xmm9,%xmm6
1515	andl	%ebx,%edi
1516	xorl	%ecx,%ebx
1517	movdqa	16(%r11),%xmm9
1518	xorl	%ecx,%edi
1519	addl	%ebp,%edx
1520	pxor	%xmm8,%xmm6
1521	rorl	$7,%eax
1522	addl	%edi,%edx
1523	movdqa	%xmm4,%xmm7
1524	addl	48(%rsp),%ecx
1525	xorl	%ebx,%eax
1526	movdqa	%xmm6,%xmm8
1527.byte	102,15,58,15,251,8
1528	movl	%edx,%edi
1529	roll	$5,%edx
1530	paddd	%xmm6,%xmm9
1531	andl	%eax,%esi
1532	xorl	%ebx,%eax
1533	psrldq	$4,%xmm8
1534	xorl	%ebx,%esi
1535	addl	%edx,%ecx
1536	pxor	%xmm3,%xmm7
1537	rorl	$7,%ebp
1538	addl	%esi,%ecx
1539	pxor	%xmm5,%xmm8
1540	addl	52(%rsp),%ebx
1541	xorl	%eax,%ebp
1542	movl	%ecx,%esi
1543	roll	$5,%ecx
1544	pxor	%xmm8,%xmm7
1545	andl	%ebp,%edi
1546	xorl	%eax,%ebp
1547	movdqa	%xmm9,32(%rsp)
1548	xorl	%eax,%edi
1549	addl	%ecx,%ebx
1550	movdqa	%xmm7,%xmm10
1551	movdqa	%xmm7,%xmm8
1552	rorl	$7,%edx
1553	addl	%edi,%ebx
1554	addl	56(%rsp),%eax
1555	xorl	%ebp,%edx
1556	pslldq	$12,%xmm10
1557	paddd	%xmm7,%xmm7
1558	movl	%ebx,%edi
1559	roll	$5,%ebx
1560	andl	%edx,%esi
1561	xorl	%ebp,%edx
1562	psrld	$31,%xmm8
1563	xorl	%ebp,%esi
1564	addl	%ebx,%eax
1565	movdqa	%xmm10,%xmm9
1566	rorl	$7,%ecx
1567	addl	%esi,%eax
1568	psrld	$30,%xmm10
1569	por	%xmm8,%xmm7
1570	addl	60(%rsp),%ebp
1571	xorl	%edx,%ecx
1572	movl	%eax,%esi
1573	roll	$5,%eax
1574	pslld	$2,%xmm9
1575	pxor	%xmm10,%xmm7
1576	andl	%ecx,%edi
1577	xorl	%edx,%ecx
1578	movdqa	16(%r11),%xmm10
1579	xorl	%edx,%edi
1580	addl	%eax,%ebp
1581	pxor	%xmm9,%xmm7
1582	rorl	$7,%ebx
1583	addl	%edi,%ebp
1584	movdqa	%xmm7,%xmm9
1585	addl	0(%rsp),%edx
1586	pxor	%xmm4,%xmm0
1587.byte	102,68,15,58,15,206,8
1588	xorl	%ecx,%ebx
1589	movl	%ebp,%edi
1590	roll	$5,%ebp
1591	pxor	%xmm1,%xmm0
1592	andl	%ebx,%esi
1593	xorl	%ecx,%ebx
1594	movdqa	%xmm10,%xmm8
1595	paddd	%xmm7,%xmm10
1596	xorl	%ecx,%esi
1597	addl	%ebp,%edx
1598	pxor	%xmm9,%xmm0
1599	rorl	$7,%eax
1600	addl	%esi,%edx
1601	addl	4(%rsp),%ecx
1602	xorl	%ebx,%eax
1603	movdqa	%xmm0,%xmm9
1604	movdqa	%xmm10,48(%rsp)
1605	movl	%edx,%esi
1606	roll	$5,%edx
1607	andl	%eax,%edi
1608	xorl	%ebx,%eax
1609	pslld	$2,%xmm0
1610	xorl	%ebx,%edi
1611	addl	%edx,%ecx
1612	psrld	$30,%xmm9
1613	rorl	$7,%ebp
1614	addl	%edi,%ecx
1615	addl	8(%rsp),%ebx
1616	xorl	%eax,%ebp
1617	movl	%ecx,%edi
1618	roll	$5,%ecx
1619	por	%xmm9,%xmm0
1620	andl	%ebp,%esi
1621	xorl	%eax,%ebp
1622	movdqa	%xmm0,%xmm10
1623	xorl	%eax,%esi
1624	addl	%ecx,%ebx
1625	rorl	$7,%edx
1626	addl	%esi,%ebx
1627	addl	12(%rsp),%eax
1628	xorl	%ebp,%edx
1629	movl	%ebx,%esi
1630	roll	$5,%ebx
1631	andl	%edx,%edi
1632	xorl	%ebp,%edx
1633	xorl	%ebp,%edi
1634	addl	%ebx,%eax
1635	rorl	$7,%ecx
1636	addl	%edi,%eax
1637	addl	16(%rsp),%ebp
1638	pxor	%xmm5,%xmm1
1639.byte	102,68,15,58,15,215,8
1640	xorl	%edx,%esi
1641	movl	%eax,%edi
1642	roll	$5,%eax
1643	pxor	%xmm2,%xmm1
1644	xorl	%ecx,%esi
1645	addl	%eax,%ebp
1646	movdqa	%xmm8,%xmm9
1647	paddd	%xmm0,%xmm8
1648	rorl	$7,%ebx
1649	addl	%esi,%ebp
1650	pxor	%xmm10,%xmm1
1651	addl	20(%rsp),%edx
1652	xorl	%ecx,%edi
1653	movl	%ebp,%esi
1654	roll	$5,%ebp
1655	movdqa	%xmm1,%xmm10
1656	movdqa	%xmm8,0(%rsp)
1657	xorl	%ebx,%edi
1658	addl	%ebp,%edx
1659	rorl	$7,%eax
1660	addl	%edi,%edx
1661	pslld	$2,%xmm1
1662	addl	24(%rsp),%ecx
1663	xorl	%ebx,%esi
1664	psrld	$30,%xmm10
1665	movl	%edx,%edi
1666	roll	$5,%edx
1667	xorl	%eax,%esi
1668	addl	%edx,%ecx
1669	rorl	$7,%ebp
1670	addl	%esi,%ecx
1671	por	%xmm10,%xmm1
1672	addl	28(%rsp),%ebx
1673	xorl	%eax,%edi
1674	movdqa	%xmm1,%xmm8
1675	movl	%ecx,%esi
1676	roll	$5,%ecx
1677	xorl	%ebp,%edi
1678	addl	%ecx,%ebx
1679	rorl	$7,%edx
1680	addl	%edi,%ebx
1681	addl	32(%rsp),%eax
1682	pxor	%xmm6,%xmm2
1683.byte	102,68,15,58,15,192,8
1684	xorl	%ebp,%esi
1685	movl	%ebx,%edi
1686	roll	$5,%ebx
1687	pxor	%xmm3,%xmm2
1688	xorl	%edx,%esi
1689	addl	%ebx,%eax
1690	movdqa	32(%r11),%xmm10
1691	paddd	%xmm1,%xmm9
1692	rorl	$7,%ecx
1693	addl	%esi,%eax
1694	pxor	%xmm8,%xmm2
1695	addl	36(%rsp),%ebp
1696	xorl	%edx,%edi
1697	movl	%eax,%esi
1698	roll	$5,%eax
1699	movdqa	%xmm2,%xmm8
1700	movdqa	%xmm9,16(%rsp)
1701	xorl	%ecx,%edi
1702	addl	%eax,%ebp
1703	rorl	$7,%ebx
1704	addl	%edi,%ebp
1705	pslld	$2,%xmm2
1706	addl	40(%rsp),%edx
1707	xorl	%ecx,%esi
1708	psrld	$30,%xmm8
1709	movl	%ebp,%edi
1710	roll	$5,%ebp
1711	xorl	%ebx,%esi
1712	addl	%ebp,%edx
1713	rorl	$7,%eax
1714	addl	%esi,%edx
1715	por	%xmm8,%xmm2
1716	addl	44(%rsp),%ecx
1717	xorl	%ebx,%edi
1718	movdqa	%xmm2,%xmm9
1719	movl	%edx,%esi
1720	roll	$5,%edx
1721	xorl	%eax,%edi
1722	addl	%edx,%ecx
1723	rorl	$7,%ebp
1724	addl	%edi,%ecx
1725	addl	48(%rsp),%ebx
1726	pxor	%xmm7,%xmm3
1727.byte	102,68,15,58,15,201,8
1728	xorl	%eax,%esi
1729	movl	%ecx,%edi
1730	roll	$5,%ecx
1731	pxor	%xmm4,%xmm3
1732	xorl	%ebp,%esi
1733	addl	%ecx,%ebx
1734	movdqa	%xmm10,%xmm8
1735	paddd	%xmm2,%xmm10
1736	rorl	$7,%edx
1737	addl	%esi,%ebx
1738	pxor	%xmm9,%xmm3
1739	addl	52(%rsp),%eax
1740	xorl	%ebp,%edi
1741	movl	%ebx,%esi
1742	roll	$5,%ebx
1743	movdqa	%xmm3,%xmm9
1744	movdqa	%xmm10,32(%rsp)
1745	xorl	%edx,%edi
1746	addl	%ebx,%eax
1747	rorl	$7,%ecx
1748	addl	%edi,%eax
1749	pslld	$2,%xmm3
1750	addl	56(%rsp),%ebp
1751	xorl	%edx,%esi
1752	psrld	$30,%xmm9
1753	movl	%eax,%edi
1754	roll	$5,%eax
1755	xorl	%ecx,%esi
1756	addl	%eax,%ebp
1757	rorl	$7,%ebx
1758	addl	%esi,%ebp
1759	por	%xmm9,%xmm3
1760	addl	60(%rsp),%edx
1761	xorl	%ecx,%edi
1762	movdqa	%xmm3,%xmm10
1763	movl	%ebp,%esi
1764	roll	$5,%ebp
1765	xorl	%ebx,%edi
1766	addl	%ebp,%edx
1767	rorl	$7,%eax
1768	addl	%edi,%edx
1769	addl	0(%rsp),%ecx
1770	pxor	%xmm0,%xmm4
1771.byte	102,68,15,58,15,210,8
1772	xorl	%ebx,%esi
1773	movl	%edx,%edi
1774	roll	$5,%edx
1775	pxor	%xmm5,%xmm4
1776	xorl	%eax,%esi
1777	addl	%edx,%ecx
1778	movdqa	%xmm8,%xmm9
1779	paddd	%xmm3,%xmm8
1780	rorl	$7,%ebp
1781	addl	%esi,%ecx
1782	pxor	%xmm10,%xmm4
1783	addl	4(%rsp),%ebx
1784	xorl	%eax,%edi
1785	movl	%ecx,%esi
1786	roll	$5,%ecx
1787	movdqa	%xmm4,%xmm10
1788	movdqa	%xmm8,48(%rsp)
1789	xorl	%ebp,%edi
1790	addl	%ecx,%ebx
1791	rorl	$7,%edx
1792	addl	%edi,%ebx
1793	pslld	$2,%xmm4
1794	addl	8(%rsp),%eax
1795	xorl	%ebp,%esi
1796	psrld	$30,%xmm10
1797	movl	%ebx,%edi
1798	roll	$5,%ebx
1799	xorl	%edx,%esi
1800	addl	%ebx,%eax
1801	rorl	$7,%ecx
1802	addl	%esi,%eax
1803	por	%xmm10,%xmm4
1804	addl	12(%rsp),%ebp
1805	xorl	%edx,%edi
1806	movdqa	%xmm4,%xmm8
1807	movl	%eax,%esi
1808	roll	$5,%eax
1809	xorl	%ecx,%edi
1810	addl	%eax,%ebp
1811	rorl	$7,%ebx
1812	addl	%edi,%ebp
1813	addl	16(%rsp),%edx
1814	pxor	%xmm1,%xmm5
1815.byte	102,68,15,58,15,195,8
1816	xorl	%ecx,%esi
1817	movl	%ebp,%edi
1818	roll	$5,%ebp
1819	pxor	%xmm6,%xmm5
1820	xorl	%ebx,%esi
1821	addl	%ebp,%edx
1822	movdqa	%xmm9,%xmm10
1823	paddd	%xmm4,%xmm9
1824	rorl	$7,%eax
1825	addl	%esi,%edx
1826	pxor	%xmm8,%xmm5
1827	addl	20(%rsp),%ecx
1828	xorl	%ebx,%edi
1829	movl	%edx,%esi
1830	roll	$5,%edx
1831	movdqa	%xmm5,%xmm8
1832	movdqa	%xmm9,0(%rsp)
1833	xorl	%eax,%edi
1834	addl	%edx,%ecx
1835	rorl	$7,%ebp
1836	addl	%edi,%ecx
1837	pslld	$2,%xmm5
1838	addl	24(%rsp),%ebx
1839	xorl	%eax,%esi
1840	psrld	$30,%xmm8
1841	movl	%ecx,%edi
1842	roll	$5,%ecx
1843	xorl	%ebp,%esi
1844	addl	%ecx,%ebx
1845	rorl	$7,%edx
1846	addl	%esi,%ebx
1847	por	%xmm8,%xmm5
1848	addl	28(%rsp),%eax
1849	xorl	%ebp,%edi
1850	movdqa	%xmm5,%xmm9
1851	movl	%ebx,%esi
1852	roll	$5,%ebx
1853	xorl	%edx,%edi
1854	addl	%ebx,%eax
1855	rorl	$7,%ecx
1856	addl	%edi,%eax
1857	movl	%ecx,%edi
1858	pxor	%xmm2,%xmm6
1859.byte	102,68,15,58,15,204,8
1860	xorl	%edx,%ecx
1861	addl	32(%rsp),%ebp
1862	andl	%edx,%edi
1863	pxor	%xmm7,%xmm6
1864	andl	%ecx,%esi
1865	rorl	$7,%ebx
1866	movdqa	%xmm10,%xmm8
1867	paddd	%xmm5,%xmm10
1868	addl	%edi,%ebp
1869	movl	%eax,%edi
1870	pxor	%xmm9,%xmm6
1871	roll	$5,%eax
1872	addl	%esi,%ebp
1873	xorl	%edx,%ecx
1874	addl	%eax,%ebp
1875	movdqa	%xmm6,%xmm9
1876	movdqa	%xmm10,16(%rsp)
1877	movl	%ebx,%esi
1878	xorl	%ecx,%ebx
1879	addl	36(%rsp),%edx
1880	andl	%ecx,%esi
1881	pslld	$2,%xmm6
1882	andl	%ebx,%edi
1883	rorl	$7,%eax
1884	psrld	$30,%xmm9
1885	addl	%esi,%edx
1886	movl	%ebp,%esi
1887	roll	$5,%ebp
1888	addl	%edi,%edx
1889	xorl	%ecx,%ebx
1890	addl	%ebp,%edx
1891	por	%xmm9,%xmm6
1892	movl	%eax,%edi
1893	xorl	%ebx,%eax
1894	movdqa	%xmm6,%xmm10
1895	addl	40(%rsp),%ecx
1896	andl	%ebx,%edi
1897	andl	%eax,%esi
1898	rorl	$7,%ebp
1899	addl	%edi,%ecx
1900	movl	%edx,%edi
1901	roll	$5,%edx
1902	addl	%esi,%ecx
1903	xorl	%ebx,%eax
1904	addl	%edx,%ecx
1905	movl	%ebp,%esi
1906	xorl	%eax,%ebp
1907	addl	44(%rsp),%ebx
1908	andl	%eax,%esi
1909	andl	%ebp,%edi
1910	rorl	$7,%edx
1911	addl	%esi,%ebx
1912	movl	%ecx,%esi
1913	roll	$5,%ecx
1914	addl	%edi,%ebx
1915	xorl	%eax,%ebp
1916	addl	%ecx,%ebx
1917	movl	%edx,%edi
1918	pxor	%xmm3,%xmm7
1919.byte	102,68,15,58,15,213,8
1920	xorl	%ebp,%edx
1921	addl	48(%rsp),%eax
1922	andl	%ebp,%edi
1923	pxor	%xmm0,%xmm7
1924	andl	%edx,%esi
1925	rorl	$7,%ecx
1926	movdqa	48(%r11),%xmm9
1927	paddd	%xmm6,%xmm8
1928	addl	%edi,%eax
1929	movl	%ebx,%edi
1930	pxor	%xmm10,%xmm7
1931	roll	$5,%ebx
1932	addl	%esi,%eax
1933	xorl	%ebp,%edx
1934	addl	%ebx,%eax
1935	movdqa	%xmm7,%xmm10
1936	movdqa	%xmm8,32(%rsp)
1937	movl	%ecx,%esi
1938	xorl	%edx,%ecx
1939	addl	52(%rsp),%ebp
1940	andl	%edx,%esi
1941	pslld	$2,%xmm7
1942	andl	%ecx,%edi
1943	rorl	$7,%ebx
1944	psrld	$30,%xmm10
1945	addl	%esi,%ebp
1946	movl	%eax,%esi
1947	roll	$5,%eax
1948	addl	%edi,%ebp
1949	xorl	%edx,%ecx
1950	addl	%eax,%ebp
1951	por	%xmm10,%xmm7
1952	movl	%ebx,%edi
1953	xorl	%ecx,%ebx
1954	movdqa	%xmm7,%xmm8
1955	addl	56(%rsp),%edx
1956	andl	%ecx,%edi
1957	andl	%ebx,%esi
1958	rorl	$7,%eax
1959	addl	%edi,%edx
1960	movl	%ebp,%edi
1961	roll	$5,%ebp
1962	addl	%esi,%edx
1963	xorl	%ecx,%ebx
1964	addl	%ebp,%edx
1965	movl	%eax,%esi
1966	xorl	%ebx,%eax
1967	addl	60(%rsp),%ecx
1968	andl	%ebx,%esi
1969	andl	%eax,%edi
1970	rorl	$7,%ebp
1971	addl	%esi,%ecx
1972	movl	%edx,%esi
1973	roll	$5,%edx
1974	addl	%edi,%ecx
1975	xorl	%ebx,%eax
1976	addl	%edx,%ecx
1977	movl	%ebp,%edi
1978	pxor	%xmm4,%xmm0
1979.byte	102,68,15,58,15,198,8
1980	xorl	%eax,%ebp
1981	addl	0(%rsp),%ebx
1982	andl	%eax,%edi
1983	pxor	%xmm1,%xmm0
1984	andl	%ebp,%esi
1985	rorl	$7,%edx
1986	movdqa	%xmm9,%xmm10
1987	paddd	%xmm7,%xmm9
1988	addl	%edi,%ebx
1989	movl	%ecx,%edi
1990	pxor	%xmm8,%xmm0
1991	roll	$5,%ecx
1992	addl	%esi,%ebx
1993	xorl	%eax,%ebp
1994	addl	%ecx,%ebx
1995	movdqa	%xmm0,%xmm8
1996	movdqa	%xmm9,48(%rsp)
1997	movl	%edx,%esi
1998	xorl	%ebp,%edx
1999	addl	4(%rsp),%eax
2000	andl	%ebp,%esi
2001	pslld	$2,%xmm0
2002	andl	%edx,%edi
2003	rorl	$7,%ecx
2004	psrld	$30,%xmm8
2005	addl	%esi,%eax
2006	movl	%ebx,%esi
2007	roll	$5,%ebx
2008	addl	%edi,%eax
2009	xorl	%ebp,%edx
2010	addl	%ebx,%eax
2011	por	%xmm8,%xmm0
2012	movl	%ecx,%edi
2013	xorl	%edx,%ecx
2014	movdqa	%xmm0,%xmm9
2015	addl	8(%rsp),%ebp
2016	andl	%edx,%edi
2017	andl	%ecx,%esi
2018	rorl	$7,%ebx
2019	addl	%edi,%ebp
2020	movl	%eax,%edi
2021	roll	$5,%eax
2022	addl	%esi,%ebp
2023	xorl	%edx,%ecx
2024	addl	%eax,%ebp
2025	movl	%ebx,%esi
2026	xorl	%ecx,%ebx
2027	addl	12(%rsp),%edx
2028	andl	%ecx,%esi
2029	andl	%ebx,%edi
2030	rorl	$7,%eax
2031	addl	%esi,%edx
2032	movl	%ebp,%esi
2033	roll	$5,%ebp
2034	addl	%edi,%edx
2035	xorl	%ecx,%ebx
2036	addl	%ebp,%edx
2037	movl	%eax,%edi
2038	pxor	%xmm5,%xmm1
2039.byte	102,68,15,58,15,207,8
2040	xorl	%ebx,%eax
2041	addl	16(%rsp),%ecx
2042	andl	%ebx,%edi
2043	pxor	%xmm2,%xmm1
2044	andl	%eax,%esi
2045	rorl	$7,%ebp
2046	movdqa	%xmm10,%xmm8
2047	paddd	%xmm0,%xmm10
2048	addl	%edi,%ecx
2049	movl	%edx,%edi
2050	pxor	%xmm9,%xmm1
2051	roll	$5,%edx
2052	addl	%esi,%ecx
2053	xorl	%ebx,%eax
2054	addl	%edx,%ecx
2055	movdqa	%xmm1,%xmm9
2056	movdqa	%xmm10,0(%rsp)
2057	movl	%ebp,%esi
2058	xorl	%eax,%ebp
2059	addl	20(%rsp),%ebx
2060	andl	%eax,%esi
2061	pslld	$2,%xmm1
2062	andl	%ebp,%edi
2063	rorl	$7,%edx
2064	psrld	$30,%xmm9
2065	addl	%esi,%ebx
2066	movl	%ecx,%esi
2067	roll	$5,%ecx
2068	addl	%edi,%ebx
2069	xorl	%eax,%ebp
2070	addl	%ecx,%ebx
2071	por	%xmm9,%xmm1
2072	movl	%edx,%edi
2073	xorl	%ebp,%edx
2074	movdqa	%xmm1,%xmm10
2075	addl	24(%rsp),%eax
2076	andl	%ebp,%edi
2077	andl	%edx,%esi
2078	rorl	$7,%ecx
2079	addl	%edi,%eax
2080	movl	%ebx,%edi
2081	roll	$5,%ebx
2082	addl	%esi,%eax
2083	xorl	%ebp,%edx
2084	addl	%ebx,%eax
2085	movl	%ecx,%esi
2086	xorl	%edx,%ecx
2087	addl	28(%rsp),%ebp
2088	andl	%edx,%esi
2089	andl	%ecx,%edi
2090	rorl	$7,%ebx
2091	addl	%esi,%ebp
2092	movl	%eax,%esi
2093	roll	$5,%eax
2094	addl	%edi,%ebp
2095	xorl	%edx,%ecx
2096	addl	%eax,%ebp
2097	movl	%ebx,%edi
2098	pxor	%xmm6,%xmm2
2099.byte	102,68,15,58,15,208,8
2100	xorl	%ecx,%ebx
2101	addl	32(%rsp),%edx
2102	andl	%ecx,%edi
2103	pxor	%xmm3,%xmm2
2104	andl	%ebx,%esi
2105	rorl	$7,%eax
2106	movdqa	%xmm8,%xmm9
2107	paddd	%xmm1,%xmm8
2108	addl	%edi,%edx
2109	movl	%ebp,%edi
2110	pxor	%xmm10,%xmm2
2111	roll	$5,%ebp
2112	addl	%esi,%edx
2113	xorl	%ecx,%ebx
2114	addl	%ebp,%edx
2115	movdqa	%xmm2,%xmm10
2116	movdqa	%xmm8,16(%rsp)
2117	movl	%eax,%esi
2118	xorl	%ebx,%eax
2119	addl	36(%rsp),%ecx
2120	andl	%ebx,%esi
2121	pslld	$2,%xmm2
2122	andl	%eax,%edi
2123	rorl	$7,%ebp
2124	psrld	$30,%xmm10
2125	addl	%esi,%ecx
2126	movl	%edx,%esi
2127	roll	$5,%edx
2128	addl	%edi,%ecx
2129	xorl	%ebx,%eax
2130	addl	%edx,%ecx
2131	por	%xmm10,%xmm2
2132	movl	%ebp,%edi
2133	xorl	%eax,%ebp
2134	movdqa	%xmm2,%xmm8
2135	addl	40(%rsp),%ebx
2136	andl	%eax,%edi
2137	andl	%ebp,%esi
2138	rorl	$7,%edx
2139	addl	%edi,%ebx
2140	movl	%ecx,%edi
2141	roll	$5,%ecx
2142	addl	%esi,%ebx
2143	xorl	%eax,%ebp
2144	addl	%ecx,%ebx
2145	movl	%edx,%esi
2146	xorl	%ebp,%edx
2147	addl	44(%rsp),%eax
2148	andl	%ebp,%esi
2149	andl	%edx,%edi
2150	rorl	$7,%ecx
2151	addl	%esi,%eax
2152	movl	%ebx,%esi
2153	roll	$5,%ebx
2154	addl	%edi,%eax
2155	xorl	%ebp,%edx
2156	addl	%ebx,%eax
2157	addl	48(%rsp),%ebp
2158	pxor	%xmm7,%xmm3
2159.byte	102,68,15,58,15,193,8
2160	xorl	%edx,%esi
2161	movl	%eax,%edi
2162	roll	$5,%eax
2163	pxor	%xmm4,%xmm3
2164	xorl	%ecx,%esi
2165	addl	%eax,%ebp
2166	movdqa	%xmm9,%xmm10
2167	paddd	%xmm2,%xmm9
2168	rorl	$7,%ebx
2169	addl	%esi,%ebp
2170	pxor	%xmm8,%xmm3
2171	addl	52(%rsp),%edx
2172	xorl	%ecx,%edi
2173	movl	%ebp,%esi
2174	roll	$5,%ebp
2175	movdqa	%xmm3,%xmm8
2176	movdqa	%xmm9,32(%rsp)
2177	xorl	%ebx,%edi
2178	addl	%ebp,%edx
2179	rorl	$7,%eax
2180	addl	%edi,%edx
2181	pslld	$2,%xmm3
2182	addl	56(%rsp),%ecx
2183	xorl	%ebx,%esi
2184	psrld	$30,%xmm8
2185	movl	%edx,%edi
2186	roll	$5,%edx
2187	xorl	%eax,%esi
2188	addl	%edx,%ecx
2189	rorl	$7,%ebp
2190	addl	%esi,%ecx
2191	por	%xmm8,%xmm3
2192	addl	60(%rsp),%ebx
2193	xorl	%eax,%edi
2194	movl	%ecx,%esi
2195	roll	$5,%ecx
2196	xorl	%ebp,%edi
2197	addl	%ecx,%ebx
2198	rorl	$7,%edx
2199	addl	%edi,%ebx
2200	addl	0(%rsp),%eax
2201	paddd	%xmm3,%xmm10
2202	xorl	%ebp,%esi
2203	movl	%ebx,%edi
2204	roll	$5,%ebx
2205	xorl	%edx,%esi
2206	movdqa	%xmm10,48(%rsp)
2207	addl	%ebx,%eax
2208	rorl	$7,%ecx
2209	addl	%esi,%eax
2210	addl	4(%rsp),%ebp
2211	xorl	%edx,%edi
2212	movl	%eax,%esi
2213	roll	$5,%eax
2214	xorl	%ecx,%edi
2215	addl	%eax,%ebp
2216	rorl	$7,%ebx
2217	addl	%edi,%ebp
2218	addl	8(%rsp),%edx
2219	xorl	%ecx,%esi
2220	movl	%ebp,%edi
2221	roll	$5,%ebp
2222	xorl	%ebx,%esi
2223	addl	%ebp,%edx
2224	rorl	$7,%eax
2225	addl	%esi,%edx
2226	addl	12(%rsp),%ecx
2227	xorl	%ebx,%edi
2228	movl	%edx,%esi
2229	roll	$5,%edx
2230	xorl	%eax,%edi
2231	addl	%edx,%ecx
2232	rorl	$7,%ebp
2233	addl	%edi,%ecx
2234	cmpq	%r10,%r9
2235	je	.Ldone_ssse3
2236	movdqa	64(%r11),%xmm6
2237	movdqa	0(%r11),%xmm9
2238	movdqu	0(%r9),%xmm0
2239	movdqu	16(%r9),%xmm1
2240	movdqu	32(%r9),%xmm2
2241	movdqu	48(%r9),%xmm3
2242.byte	102,15,56,0,198
2243	addq	$64,%r9
2244	addl	16(%rsp),%ebx
2245	xorl	%eax,%esi
2246.byte	102,15,56,0,206
2247	movl	%ecx,%edi
2248	roll	$5,%ecx
2249	paddd	%xmm9,%xmm0
2250	xorl	%ebp,%esi
2251	addl	%ecx,%ebx
2252	rorl	$7,%edx
2253	addl	%esi,%ebx
2254	movdqa	%xmm0,0(%rsp)
2255	addl	20(%rsp),%eax
2256	xorl	%ebp,%edi
2257	psubd	%xmm9,%xmm0
2258	movl	%ebx,%esi
2259	roll	$5,%ebx
2260	xorl	%edx,%edi
2261	addl	%ebx,%eax
2262	rorl	$7,%ecx
2263	addl	%edi,%eax
2264	addl	24(%rsp),%ebp
2265	xorl	%edx,%esi
2266	movl	%eax,%edi
2267	roll	$5,%eax
2268	xorl	%ecx,%esi
2269	addl	%eax,%ebp
2270	rorl	$7,%ebx
2271	addl	%esi,%ebp
2272	addl	28(%rsp),%edx
2273	xorl	%ecx,%edi
2274	movl	%ebp,%esi
2275	roll	$5,%ebp
2276	xorl	%ebx,%edi
2277	addl	%ebp,%edx
2278	rorl	$7,%eax
2279	addl	%edi,%edx
2280	addl	32(%rsp),%ecx
2281	xorl	%ebx,%esi
2282.byte	102,15,56,0,214
2283	movl	%edx,%edi
2284	roll	$5,%edx
2285	paddd	%xmm9,%xmm1
2286	xorl	%eax,%esi
2287	addl	%edx,%ecx
2288	rorl	$7,%ebp
2289	addl	%esi,%ecx
2290	movdqa	%xmm1,16(%rsp)
2291	addl	36(%rsp),%ebx
2292	xorl	%eax,%edi
2293	psubd	%xmm9,%xmm1
2294	movl	%ecx,%esi
2295	roll	$5,%ecx
2296	xorl	%ebp,%edi
2297	addl	%ecx,%ebx
2298	rorl	$7,%edx
2299	addl	%edi,%ebx
2300	addl	40(%rsp),%eax
2301	xorl	%ebp,%esi
2302	movl	%ebx,%edi
2303	roll	$5,%ebx
2304	xorl	%edx,%esi
2305	addl	%ebx,%eax
2306	rorl	$7,%ecx
2307	addl	%esi,%eax
2308	addl	44(%rsp),%ebp
2309	xorl	%edx,%edi
2310	movl	%eax,%esi
2311	roll	$5,%eax
2312	xorl	%ecx,%edi
2313	addl	%eax,%ebp
2314	rorl	$7,%ebx
2315	addl	%edi,%ebp
2316	addl	48(%rsp),%edx
2317	xorl	%ecx,%esi
2318.byte	102,15,56,0,222
2319	movl	%ebp,%edi
2320	roll	$5,%ebp
2321	paddd	%xmm9,%xmm2
2322	xorl	%ebx,%esi
2323	addl	%ebp,%edx
2324	rorl	$7,%eax
2325	addl	%esi,%edx
2326	movdqa	%xmm2,32(%rsp)
2327	addl	52(%rsp),%ecx
2328	xorl	%ebx,%edi
2329	psubd	%xmm9,%xmm2
2330	movl	%edx,%esi
2331	roll	$5,%edx
2332	xorl	%eax,%edi
2333	addl	%edx,%ecx
2334	rorl	$7,%ebp
2335	addl	%edi,%ecx
2336	addl	56(%rsp),%ebx
2337	xorl	%eax,%esi
2338	movl	%ecx,%edi
2339	roll	$5,%ecx
2340	xorl	%ebp,%esi
2341	addl	%ecx,%ebx
2342	rorl	$7,%edx
2343	addl	%esi,%ebx
2344	addl	60(%rsp),%eax
2345	xorl	%ebp,%edi
2346	movl	%ebx,%esi
2347	roll	$5,%ebx
2348	xorl	%edx,%edi
2349	addl	%ebx,%eax
2350	rorl	$7,%ecx
2351	addl	%edi,%eax
2352	addl	0(%r8),%eax
2353	addl	4(%r8),%esi
2354	addl	8(%r8),%ecx
2355	addl	12(%r8),%edx
2356	movl	%eax,0(%r8)
2357	addl	16(%r8),%ebp
2358	movl	%esi,4(%r8)
2359	movl	%esi,%ebx
2360	movl	%ecx,8(%r8)
2361	movl	%edx,12(%r8)
2362	movl	%ebp,16(%r8)
2363	jmp	.Loop_ssse3
2364
2365.align	16
2366.Ldone_ssse3:
2367	addl	16(%rsp),%ebx
2368	xorl	%eax,%esi
2369	movl	%ecx,%edi
2370	roll	$5,%ecx
2371	xorl	%ebp,%esi
2372	addl	%ecx,%ebx
2373	rorl	$7,%edx
2374	addl	%esi,%ebx
2375	addl	20(%rsp),%eax
2376	xorl	%ebp,%edi
2377	movl	%ebx,%esi
2378	roll	$5,%ebx
2379	xorl	%edx,%edi
2380	addl	%ebx,%eax
2381	rorl	$7,%ecx
2382	addl	%edi,%eax
2383	addl	24(%rsp),%ebp
2384	xorl	%edx,%esi
2385	movl	%eax,%edi
2386	roll	$5,%eax
2387	xorl	%ecx,%esi
2388	addl	%eax,%ebp
2389	rorl	$7,%ebx
2390	addl	%esi,%ebp
2391	addl	28(%rsp),%edx
2392	xorl	%ecx,%edi
2393	movl	%ebp,%esi
2394	roll	$5,%ebp
2395	xorl	%ebx,%edi
2396	addl	%ebp,%edx
2397	rorl	$7,%eax
2398	addl	%edi,%edx
2399	addl	32(%rsp),%ecx
2400	xorl	%ebx,%esi
2401	movl	%edx,%edi
2402	roll	$5,%edx
2403	xorl	%eax,%esi
2404	addl	%edx,%ecx
2405	rorl	$7,%ebp
2406	addl	%esi,%ecx
2407	addl	36(%rsp),%ebx
2408	xorl	%eax,%edi
2409	movl	%ecx,%esi
2410	roll	$5,%ecx
2411	xorl	%ebp,%edi
2412	addl	%ecx,%ebx
2413	rorl	$7,%edx
2414	addl	%edi,%ebx
2415	addl	40(%rsp),%eax
2416	xorl	%ebp,%esi
2417	movl	%ebx,%edi
2418	roll	$5,%ebx
2419	xorl	%edx,%esi
2420	addl	%ebx,%eax
2421	rorl	$7,%ecx
2422	addl	%esi,%eax
2423	addl	44(%rsp),%ebp
2424	xorl	%edx,%edi
2425	movl	%eax,%esi
2426	roll	$5,%eax
2427	xorl	%ecx,%edi
2428	addl	%eax,%ebp
2429	rorl	$7,%ebx
2430	addl	%edi,%ebp
2431	addl	48(%rsp),%edx
2432	xorl	%ecx,%esi
2433	movl	%ebp,%edi
2434	roll	$5,%ebp
2435	xorl	%ebx,%esi
2436	addl	%ebp,%edx
2437	rorl	$7,%eax
2438	addl	%esi,%edx
2439	addl	52(%rsp),%ecx
2440	xorl	%ebx,%edi
2441	movl	%edx,%esi
2442	roll	$5,%edx
2443	xorl	%eax,%edi
2444	addl	%edx,%ecx
2445	rorl	$7,%ebp
2446	addl	%edi,%ecx
2447	addl	56(%rsp),%ebx
2448	xorl	%eax,%esi
2449	movl	%ecx,%edi
2450	roll	$5,%ecx
2451	xorl	%ebp,%esi
2452	addl	%ecx,%ebx
2453	rorl	$7,%edx
2454	addl	%esi,%ebx
2455	addl	60(%rsp),%eax
2456	xorl	%ebp,%edi
2457	movl	%ebx,%esi
2458	roll	$5,%ebx
2459	xorl	%edx,%edi
2460	addl	%ebx,%eax
2461	rorl	$7,%ecx
2462	addl	%edi,%eax
2463	addl	0(%r8),%eax
2464	addl	4(%r8),%esi
2465	addl	8(%r8),%ecx
2466	movl	%eax,0(%r8)
2467	addl	12(%r8),%edx
2468	movl	%esi,4(%r8)
2469	addl	16(%r8),%ebp
2470	movl	%ecx,8(%r8)
2471	movl	%edx,12(%r8)
2472	movl	%ebp,16(%r8)
2473	leaq	64(%rsp),%rsi
2474	movq	0(%rsi),%r12
2475	movq	8(%rsi),%rbp
2476	movq	16(%rsi),%rbx
2477	leaq	24(%rsi),%rsp
2478.Lepilogue_ssse3:
2479	.byte	0xf3,0xc3
2480.size	sha1_block_data_order_ssse3,.-sha1_block_data_order_ssse3
2481.type	sha1_block_data_order_avx,@function
2482.align	16
2483sha1_block_data_order_avx:
2484_avx_shortcut:
2485	pushq	%rbx
2486	pushq	%rbp
2487	pushq	%r12
2488	leaq	-64(%rsp),%rsp
2489	movq	%rdi,%r8
2490	movq	%rsi,%r9
2491	movq	%rdx,%r10
2492	vzeroupper
2493
2494	shlq	$6,%r10
2495	addq	%r9,%r10
2496	leaq	K_XX_XX(%rip),%r11
2497
2498	movl	0(%r8),%eax
2499	movl	4(%r8),%ebx
2500	movl	8(%r8),%ecx
2501	movl	12(%r8),%edx
2502	movl	%ebx,%esi
2503	movl	16(%r8),%ebp
2504
2505	vmovdqa	64(%r11),%xmm6
2506	vmovdqa	0(%r11),%xmm9
2507	vmovdqu	0(%r9),%xmm0
2508	vmovdqu	16(%r9),%xmm1
2509	vmovdqu	32(%r9),%xmm2
2510	vmovdqu	48(%r9),%xmm3
2511	vpshufb	%xmm6,%xmm0,%xmm0
2512	addq	$64,%r9
2513	vpshufb	%xmm6,%xmm1,%xmm1
2514	vpshufb	%xmm6,%xmm2,%xmm2
2515	vpshufb	%xmm6,%xmm3,%xmm3
2516	vpaddd	%xmm9,%xmm0,%xmm4
2517	vpaddd	%xmm9,%xmm1,%xmm5
2518	vpaddd	%xmm9,%xmm2,%xmm6
2519	vmovdqa	%xmm4,0(%rsp)
2520	vmovdqa	%xmm5,16(%rsp)
2521	vmovdqa	%xmm6,32(%rsp)
2522	jmp	.Loop_avx
2523.align	16
2524.Loop_avx:
2525	addl	0(%rsp),%ebp
2526	xorl	%edx,%ecx
2527	vpalignr	$8,%xmm0,%xmm1,%xmm4
2528	movl	%eax,%edi
2529	shldl	$5,%eax,%eax
2530	vpaddd	%xmm3,%xmm9,%xmm9
2531	andl	%ecx,%esi
2532	xorl	%edx,%ecx
2533	vpsrldq	$4,%xmm3,%xmm8
2534	xorl	%edx,%esi
2535	addl	%eax,%ebp
2536	vpxor	%xmm0,%xmm4,%xmm4
2537	shrdl	$2,%ebx,%ebx
2538	addl	%esi,%ebp
2539	vpxor	%xmm2,%xmm8,%xmm8
2540	addl	4(%rsp),%edx
2541	xorl	%ecx,%ebx
2542	movl	%ebp,%esi
2543	shldl	$5,%ebp,%ebp
2544	vpxor	%xmm8,%xmm4,%xmm4
2545	andl	%ebx,%edi
2546	xorl	%ecx,%ebx
2547	vmovdqa	%xmm9,48(%rsp)
2548	xorl	%ecx,%edi
2549	addl	%ebp,%edx
2550	vpsrld	$31,%xmm4,%xmm8
2551	shrdl	$7,%eax,%eax
2552	addl	%edi,%edx
2553	addl	8(%rsp),%ecx
2554	xorl	%ebx,%eax
2555	vpslldq	$12,%xmm4,%xmm10
2556	vpaddd	%xmm4,%xmm4,%xmm4
2557	movl	%edx,%edi
2558	shldl	$5,%edx,%edx
2559	andl	%eax,%esi
2560	xorl	%ebx,%eax
2561	vpsrld	$30,%xmm10,%xmm9
2562	vpor	%xmm8,%xmm4,%xmm4
2563	xorl	%ebx,%esi
2564	addl	%edx,%ecx
2565	shrdl	$7,%ebp,%ebp
2566	addl	%esi,%ecx
2567	vpslld	$2,%xmm10,%xmm10
2568	vpxor	%xmm9,%xmm4,%xmm4
2569	addl	12(%rsp),%ebx
2570	xorl	%eax,%ebp
2571	movl	%ecx,%esi
2572	shldl	$5,%ecx,%ecx
2573	vpxor	%xmm10,%xmm4,%xmm4
2574	andl	%ebp,%edi
2575	xorl	%eax,%ebp
2576	vmovdqa	0(%r11),%xmm10
2577	xorl	%eax,%edi
2578	addl	%ecx,%ebx
2579	shrdl	$7,%edx,%edx
2580	addl	%edi,%ebx
2581	addl	16(%rsp),%eax
2582	xorl	%ebp,%edx
2583	vpalignr	$8,%xmm1,%xmm2,%xmm5
2584	movl	%ebx,%edi
2585	shldl	$5,%ebx,%ebx
2586	vpaddd	%xmm4,%xmm10,%xmm10
2587	andl	%edx,%esi
2588	xorl	%ebp,%edx
2589	vpsrldq	$4,%xmm4,%xmm9
2590	xorl	%ebp,%esi
2591	addl	%ebx,%eax
2592	vpxor	%xmm1,%xmm5,%xmm5
2593	shrdl	$7,%ecx,%ecx
2594	addl	%esi,%eax
2595	vpxor	%xmm3,%xmm9,%xmm9
2596	addl	20(%rsp),%ebp
2597	xorl	%edx,%ecx
2598	movl	%eax,%esi
2599	shldl	$5,%eax,%eax
2600	vpxor	%xmm9,%xmm5,%xmm5
2601	andl	%ecx,%edi
2602	xorl	%edx,%ecx
2603	vmovdqa	%xmm10,0(%rsp)
2604	xorl	%edx,%edi
2605	addl	%eax,%ebp
2606	vpsrld	$31,%xmm5,%xmm9
2607	shrdl	$7,%ebx,%ebx
2608	addl	%edi,%ebp
2609	addl	24(%rsp),%edx
2610	xorl	%ecx,%ebx
2611	vpslldq	$12,%xmm5,%xmm8
2612	vpaddd	%xmm5,%xmm5,%xmm5
2613	movl	%ebp,%edi
2614	shldl	$5,%ebp,%ebp
2615	andl	%ebx,%esi
2616	xorl	%ecx,%ebx
2617	vpsrld	$30,%xmm8,%xmm10
2618	vpor	%xmm9,%xmm5,%xmm5
2619	xorl	%ecx,%esi
2620	addl	%ebp,%edx
2621	shrdl	$7,%eax,%eax
2622	addl	%esi,%edx
2623	vpslld	$2,%xmm8,%xmm8
2624	vpxor	%xmm10,%xmm5,%xmm5
2625	addl	28(%rsp),%ecx
2626	xorl	%ebx,%eax
2627	movl	%edx,%esi
2628	shldl	$5,%edx,%edx
2629	vpxor	%xmm8,%xmm5,%xmm5
2630	andl	%eax,%edi
2631	xorl	%ebx,%eax
2632	vmovdqa	16(%r11),%xmm8
2633	xorl	%ebx,%edi
2634	addl	%edx,%ecx
2635	shrdl	$7,%ebp,%ebp
2636	addl	%edi,%ecx
2637	addl	32(%rsp),%ebx
2638	xorl	%eax,%ebp
2639	vpalignr	$8,%xmm2,%xmm3,%xmm6
2640	movl	%ecx,%edi
2641	shldl	$5,%ecx,%ecx
2642	vpaddd	%xmm5,%xmm8,%xmm8
2643	andl	%ebp,%esi
2644	xorl	%eax,%ebp
2645	vpsrldq	$4,%xmm5,%xmm10
2646	xorl	%eax,%esi
2647	addl	%ecx,%ebx
2648	vpxor	%xmm2,%xmm6,%xmm6
2649	shrdl	$7,%edx,%edx
2650	addl	%esi,%ebx
2651	vpxor	%xmm4,%xmm10,%xmm10
2652	addl	36(%rsp),%eax
2653	xorl	%ebp,%edx
2654	movl	%ebx,%esi
2655	shldl	$5,%ebx,%ebx
2656	vpxor	%xmm10,%xmm6,%xmm6
2657	andl	%edx,%edi
2658	xorl	%ebp,%edx
2659	vmovdqa	%xmm8,16(%rsp)
2660	xorl	%ebp,%edi
2661	addl	%ebx,%eax
2662	vpsrld	$31,%xmm6,%xmm10
2663	shrdl	$7,%ecx,%ecx
2664	addl	%edi,%eax
2665	addl	40(%rsp),%ebp
2666	xorl	%edx,%ecx
2667	vpslldq	$12,%xmm6,%xmm9
2668	vpaddd	%xmm6,%xmm6,%xmm6
2669	movl	%eax,%edi
2670	shldl	$5,%eax,%eax
2671	andl	%ecx,%esi
2672	xorl	%edx,%ecx
2673	vpsrld	$30,%xmm9,%xmm8
2674	vpor	%xmm10,%xmm6,%xmm6
2675	xorl	%edx,%esi
2676	addl	%eax,%ebp
2677	shrdl	$7,%ebx,%ebx
2678	addl	%esi,%ebp
2679	vpslld	$2,%xmm9,%xmm9
2680	vpxor	%xmm8,%xmm6,%xmm6
2681	addl	44(%rsp),%edx
2682	xorl	%ecx,%ebx
2683	movl	%ebp,%esi
2684	shldl	$5,%ebp,%ebp
2685	vpxor	%xmm9,%xmm6,%xmm6
2686	andl	%ebx,%edi
2687	xorl	%ecx,%ebx
2688	vmovdqa	16(%r11),%xmm9
2689	xorl	%ecx,%edi
2690	addl	%ebp,%edx
2691	shrdl	$7,%eax,%eax
2692	addl	%edi,%edx
2693	addl	48(%rsp),%ecx
2694	xorl	%ebx,%eax
2695	vpalignr	$8,%xmm3,%xmm4,%xmm7
2696	movl	%edx,%edi
2697	shldl	$5,%edx,%edx
2698	vpaddd	%xmm6,%xmm9,%xmm9
2699	andl	%eax,%esi
2700	xorl	%ebx,%eax
2701	vpsrldq	$4,%xmm6,%xmm8
2702	xorl	%ebx,%esi
2703	addl	%edx,%ecx
2704	vpxor	%xmm3,%xmm7,%xmm7
2705	shrdl	$7,%ebp,%ebp
2706	addl	%esi,%ecx
2707	vpxor	%xmm5,%xmm8,%xmm8
2708	addl	52(%rsp),%ebx
2709	xorl	%eax,%ebp
2710	movl	%ecx,%esi
2711	shldl	$5,%ecx,%ecx
2712	vpxor	%xmm8,%xmm7,%xmm7
2713	andl	%ebp,%edi
2714	xorl	%eax,%ebp
2715	vmovdqa	%xmm9,32(%rsp)
2716	xorl	%eax,%edi
2717	addl	%ecx,%ebx
2718	vpsrld	$31,%xmm7,%xmm8
2719	shrdl	$7,%edx,%edx
2720	addl	%edi,%ebx
2721	addl	56(%rsp),%eax
2722	xorl	%ebp,%edx
2723	vpslldq	$12,%xmm7,%xmm10
2724	vpaddd	%xmm7,%xmm7,%xmm7
2725	movl	%ebx,%edi
2726	shldl	$5,%ebx,%ebx
2727	andl	%edx,%esi
2728	xorl	%ebp,%edx
2729	vpsrld	$30,%xmm10,%xmm9
2730	vpor	%xmm8,%xmm7,%xmm7
2731	xorl	%ebp,%esi
2732	addl	%ebx,%eax
2733	shrdl	$7,%ecx,%ecx
2734	addl	%esi,%eax
2735	vpslld	$2,%xmm10,%xmm10
2736	vpxor	%xmm9,%xmm7,%xmm7
2737	addl	60(%rsp),%ebp
2738	xorl	%edx,%ecx
2739	movl	%eax,%esi
2740	shldl	$5,%eax,%eax
2741	vpxor	%xmm10,%xmm7,%xmm7
2742	andl	%ecx,%edi
2743	xorl	%edx,%ecx
2744	vmovdqa	16(%r11),%xmm10
2745	xorl	%edx,%edi
2746	addl	%eax,%ebp
2747	shrdl	$7,%ebx,%ebx
2748	addl	%edi,%ebp
2749	vpalignr	$8,%xmm6,%xmm7,%xmm9
2750	vpxor	%xmm4,%xmm0,%xmm0
2751	addl	0(%rsp),%edx
2752	xorl	%ecx,%ebx
2753	movl	%ebp,%edi
2754	shldl	$5,%ebp,%ebp
2755	vpxor	%xmm1,%xmm0,%xmm0
2756	andl	%ebx,%esi
2757	xorl	%ecx,%ebx
2758	vmovdqa	%xmm10,%xmm8
2759	vpaddd	%xmm7,%xmm10,%xmm10
2760	xorl	%ecx,%esi
2761	addl	%ebp,%edx
2762	vpxor	%xmm9,%xmm0,%xmm0
2763	shrdl	$7,%eax,%eax
2764	addl	%esi,%edx
2765	addl	4(%rsp),%ecx
2766	xorl	%ebx,%eax
2767	vpsrld	$30,%xmm0,%xmm9
2768	vmovdqa	%xmm10,48(%rsp)
2769	movl	%edx,%esi
2770	shldl	$5,%edx,%edx
2771	andl	%eax,%edi
2772	xorl	%ebx,%eax
2773	vpslld	$2,%xmm0,%xmm0
2774	xorl	%ebx,%edi
2775	addl	%edx,%ecx
2776	shrdl	$7,%ebp,%ebp
2777	addl	%edi,%ecx
2778	addl	8(%rsp),%ebx
2779	xorl	%eax,%ebp
2780	movl	%ecx,%edi
2781	shldl	$5,%ecx,%ecx
2782	vpor	%xmm9,%xmm0,%xmm0
2783	andl	%ebp,%esi
2784	xorl	%eax,%ebp
2785	vmovdqa	%xmm0,%xmm10
2786	xorl	%eax,%esi
2787	addl	%ecx,%ebx
2788	shrdl	$7,%edx,%edx
2789	addl	%esi,%ebx
2790	addl	12(%rsp),%eax
2791	xorl	%ebp,%edx
2792	movl	%ebx,%esi
2793	shldl	$5,%ebx,%ebx
2794	andl	%edx,%edi
2795	xorl	%ebp,%edx
2796	xorl	%ebp,%edi
2797	addl	%ebx,%eax
2798	shrdl	$7,%ecx,%ecx
2799	addl	%edi,%eax
2800	vpalignr	$8,%xmm7,%xmm0,%xmm10
2801	vpxor	%xmm5,%xmm1,%xmm1
2802	addl	16(%rsp),%ebp
2803	xorl	%edx,%esi
2804	movl	%eax,%edi
2805	shldl	$5,%eax,%eax
2806	vpxor	%xmm2,%xmm1,%xmm1
2807	xorl	%ecx,%esi
2808	addl	%eax,%ebp
2809	vmovdqa	%xmm8,%xmm9
2810	vpaddd	%xmm0,%xmm8,%xmm8
2811	shrdl	$7,%ebx,%ebx
2812	addl	%esi,%ebp
2813	vpxor	%xmm10,%xmm1,%xmm1
2814	addl	20(%rsp),%edx
2815	xorl	%ecx,%edi
2816	movl	%ebp,%esi
2817	shldl	$5,%ebp,%ebp
2818	vpsrld	$30,%xmm1,%xmm10
2819	vmovdqa	%xmm8,0(%rsp)
2820	xorl	%ebx,%edi
2821	addl	%ebp,%edx
2822	shrdl	$7,%eax,%eax
2823	addl	%edi,%edx
2824	vpslld	$2,%xmm1,%xmm1
2825	addl	24(%rsp),%ecx
2826	xorl	%ebx,%esi
2827	movl	%edx,%edi
2828	shldl	$5,%edx,%edx
2829	xorl	%eax,%esi
2830	addl	%edx,%ecx
2831	shrdl	$7,%ebp,%ebp
2832	addl	%esi,%ecx
2833	vpor	%xmm10,%xmm1,%xmm1
2834	addl	28(%rsp),%ebx
2835	xorl	%eax,%edi
2836	vmovdqa	%xmm1,%xmm8
2837	movl	%ecx,%esi
2838	shldl	$5,%ecx,%ecx
2839	xorl	%ebp,%edi
2840	addl	%ecx,%ebx
2841	shrdl	$7,%edx,%edx
2842	addl	%edi,%ebx
2843	vpalignr	$8,%xmm0,%xmm1,%xmm8
2844	vpxor	%xmm6,%xmm2,%xmm2
2845	addl	32(%rsp),%eax
2846	xorl	%ebp,%esi
2847	movl	%ebx,%edi
2848	shldl	$5,%ebx,%ebx
2849	vpxor	%xmm3,%xmm2,%xmm2
2850	xorl	%edx,%esi
2851	addl	%ebx,%eax
2852	vmovdqa	32(%r11),%xmm10
2853	vpaddd	%xmm1,%xmm9,%xmm9
2854	shrdl	$7,%ecx,%ecx
2855	addl	%esi,%eax
2856	vpxor	%xmm8,%xmm2,%xmm2
2857	addl	36(%rsp),%ebp
2858	xorl	%edx,%edi
2859	movl	%eax,%esi
2860	shldl	$5,%eax,%eax
2861	vpsrld	$30,%xmm2,%xmm8
2862	vmovdqa	%xmm9,16(%rsp)
2863	xorl	%ecx,%edi
2864	addl	%eax,%ebp
2865	shrdl	$7,%ebx,%ebx
2866	addl	%edi,%ebp
2867	vpslld	$2,%xmm2,%xmm2
2868	addl	40(%rsp),%edx
2869	xorl	%ecx,%esi
2870	movl	%ebp,%edi
2871	shldl	$5,%ebp,%ebp
2872	xorl	%ebx,%esi
2873	addl	%ebp,%edx
2874	shrdl	$7,%eax,%eax
2875	addl	%esi,%edx
2876	vpor	%xmm8,%xmm2,%xmm2
2877	addl	44(%rsp),%ecx
2878	xorl	%ebx,%edi
2879	vmovdqa	%xmm2,%xmm9
2880	movl	%edx,%esi
2881	shldl	$5,%edx,%edx
2882	xorl	%eax,%edi
2883	addl	%edx,%ecx
2884	shrdl	$7,%ebp,%ebp
2885	addl	%edi,%ecx
2886	vpalignr	$8,%xmm1,%xmm2,%xmm9
2887	vpxor	%xmm7,%xmm3,%xmm3
2888	addl	48(%rsp),%ebx
2889	xorl	%eax,%esi
2890	movl	%ecx,%edi
2891	shldl	$5,%ecx,%ecx
2892	vpxor	%xmm4,%xmm3,%xmm3
2893	xorl	%ebp,%esi
2894	addl	%ecx,%ebx
2895	vmovdqa	%xmm10,%xmm8
2896	vpaddd	%xmm2,%xmm10,%xmm10
2897	shrdl	$7,%edx,%edx
2898	addl	%esi,%ebx
2899	vpxor	%xmm9,%xmm3,%xmm3
2900	addl	52(%rsp),%eax
2901	xorl	%ebp,%edi
2902	movl	%ebx,%esi
2903	shldl	$5,%ebx,%ebx
2904	vpsrld	$30,%xmm3,%xmm9
2905	vmovdqa	%xmm10,32(%rsp)
2906	xorl	%edx,%edi
2907	addl	%ebx,%eax
2908	shrdl	$7,%ecx,%ecx
2909	addl	%edi,%eax
2910	vpslld	$2,%xmm3,%xmm3
2911	addl	56(%rsp),%ebp
2912	xorl	%edx,%esi
2913	movl	%eax,%edi
2914	shldl	$5,%eax,%eax
2915	xorl	%ecx,%esi
2916	addl	%eax,%ebp
2917	shrdl	$7,%ebx,%ebx
2918	addl	%esi,%ebp
2919	vpor	%xmm9,%xmm3,%xmm3
2920	addl	60(%rsp),%edx
2921	xorl	%ecx,%edi
2922	vmovdqa	%xmm3,%xmm10
2923	movl	%ebp,%esi
2924	shldl	$5,%ebp,%ebp
2925	xorl	%ebx,%edi
2926	addl	%ebp,%edx
2927	shrdl	$7,%eax,%eax
2928	addl	%edi,%edx
2929	vpalignr	$8,%xmm2,%xmm3,%xmm10
2930	vpxor	%xmm0,%xmm4,%xmm4
2931	addl	0(%rsp),%ecx
2932	xorl	%ebx,%esi
2933	movl	%edx,%edi
2934	shldl	$5,%edx,%edx
2935	vpxor	%xmm5,%xmm4,%xmm4
2936	xorl	%eax,%esi
2937	addl	%edx,%ecx
2938	vmovdqa	%xmm8,%xmm9
2939	vpaddd	%xmm3,%xmm8,%xmm8
2940	shrdl	$7,%ebp,%ebp
2941	addl	%esi,%ecx
2942	vpxor	%xmm10,%xmm4,%xmm4
2943	addl	4(%rsp),%ebx
2944	xorl	%eax,%edi
2945	movl	%ecx,%esi
2946	shldl	$5,%ecx,%ecx
2947	vpsrld	$30,%xmm4,%xmm10
2948	vmovdqa	%xmm8,48(%rsp)
2949	xorl	%ebp,%edi
2950	addl	%ecx,%ebx
2951	shrdl	$7,%edx,%edx
2952	addl	%edi,%ebx
2953	vpslld	$2,%xmm4,%xmm4
2954	addl	8(%rsp),%eax
2955	xorl	%ebp,%esi
2956	movl	%ebx,%edi
2957	shldl	$5,%ebx,%ebx
2958	xorl	%edx,%esi
2959	addl	%ebx,%eax
2960	shrdl	$7,%ecx,%ecx
2961	addl	%esi,%eax
2962	vpor	%xmm10,%xmm4,%xmm4
2963	addl	12(%rsp),%ebp
2964	xorl	%edx,%edi
2965	vmovdqa	%xmm4,%xmm8
2966	movl	%eax,%esi
2967	shldl	$5,%eax,%eax
2968	xorl	%ecx,%edi
2969	addl	%eax,%ebp
2970	shrdl	$7,%ebx,%ebx
2971	addl	%edi,%ebp
2972	vpalignr	$8,%xmm3,%xmm4,%xmm8
2973	vpxor	%xmm1,%xmm5,%xmm5
2974	addl	16(%rsp),%edx
2975	xorl	%ecx,%esi
2976	movl	%ebp,%edi
2977	shldl	$5,%ebp,%ebp
2978	vpxor	%xmm6,%xmm5,%xmm5
2979	xorl	%ebx,%esi
2980	addl	%ebp,%edx
2981	vmovdqa	%xmm9,%xmm10
2982	vpaddd	%xmm4,%xmm9,%xmm9
2983	shrdl	$7,%eax,%eax
2984	addl	%esi,%edx
2985	vpxor	%xmm8,%xmm5,%xmm5
2986	addl	20(%rsp),%ecx
2987	xorl	%ebx,%edi
2988	movl	%edx,%esi
2989	shldl	$5,%edx,%edx
2990	vpsrld	$30,%xmm5,%xmm8
2991	vmovdqa	%xmm9,0(%rsp)
2992	xorl	%eax,%edi
2993	addl	%edx,%ecx
2994	shrdl	$7,%ebp,%ebp
2995	addl	%edi,%ecx
2996	vpslld	$2,%xmm5,%xmm5
2997	addl	24(%rsp),%ebx
2998	xorl	%eax,%esi
2999	movl	%ecx,%edi
3000	shldl	$5,%ecx,%ecx
3001	xorl	%ebp,%esi
3002	addl	%ecx,%ebx
3003	shrdl	$7,%edx,%edx
3004	addl	%esi,%ebx
3005	vpor	%xmm8,%xmm5,%xmm5
3006	addl	28(%rsp),%eax
3007	xorl	%ebp,%edi
3008	vmovdqa	%xmm5,%xmm9
3009	movl	%ebx,%esi
3010	shldl	$5,%ebx,%ebx
3011	xorl	%edx,%edi
3012	addl	%ebx,%eax
3013	shrdl	$7,%ecx,%ecx
3014	addl	%edi,%eax
3015	vpalignr	$8,%xmm4,%xmm5,%xmm9
3016	vpxor	%xmm2,%xmm6,%xmm6
3017	movl	%ecx,%edi
3018	xorl	%edx,%ecx
3019	addl	32(%rsp),%ebp
3020	andl	%edx,%edi
3021	vpxor	%xmm7,%xmm6,%xmm6
3022	andl	%ecx,%esi
3023	shrdl	$7,%ebx,%ebx
3024	vmovdqa	%xmm10,%xmm8
3025	vpaddd	%xmm5,%xmm10,%xmm10
3026	addl	%edi,%ebp
3027	movl	%eax,%edi
3028	vpxor	%xmm9,%xmm6,%xmm6
3029	shldl	$5,%eax,%eax
3030	addl	%esi,%ebp
3031	xorl	%edx,%ecx
3032	addl	%eax,%ebp
3033	vpsrld	$30,%xmm6,%xmm9
3034	vmovdqa	%xmm10,16(%rsp)
3035	movl	%ebx,%esi
3036	xorl	%ecx,%ebx
3037	addl	36(%rsp),%edx
3038	andl	%ecx,%esi
3039	vpslld	$2,%xmm6,%xmm6
3040	andl	%ebx,%edi
3041	shrdl	$7,%eax,%eax
3042	addl	%esi,%edx
3043	movl	%ebp,%esi
3044	shldl	$5,%ebp,%ebp
3045	addl	%edi,%edx
3046	xorl	%ecx,%ebx
3047	addl	%ebp,%edx
3048	vpor	%xmm9,%xmm6,%xmm6
3049	movl	%eax,%edi
3050	xorl	%ebx,%eax
3051	vmovdqa	%xmm6,%xmm10
3052	addl	40(%rsp),%ecx
3053	andl	%ebx,%edi
3054	andl	%eax,%esi
3055	shrdl	$7,%ebp,%ebp
3056	addl	%edi,%ecx
3057	movl	%edx,%edi
3058	shldl	$5,%edx,%edx
3059	addl	%esi,%ecx
3060	xorl	%ebx,%eax
3061	addl	%edx,%ecx
3062	movl	%ebp,%esi
3063	xorl	%eax,%ebp
3064	addl	44(%rsp),%ebx
3065	andl	%eax,%esi
3066	andl	%ebp,%edi
3067	shrdl	$7,%edx,%edx
3068	addl	%esi,%ebx
3069	movl	%ecx,%esi
3070	shldl	$5,%ecx,%ecx
3071	addl	%edi,%ebx
3072	xorl	%eax,%ebp
3073	addl	%ecx,%ebx
3074	vpalignr	$8,%xmm5,%xmm6,%xmm10
3075	vpxor	%xmm3,%xmm7,%xmm7
3076	movl	%edx,%edi
3077	xorl	%ebp,%edx
3078	addl	48(%rsp),%eax
3079	andl	%ebp,%edi
3080	vpxor	%xmm0,%xmm7,%xmm7
3081	andl	%edx,%esi
3082	shrdl	$7,%ecx,%ecx
3083	vmovdqa	48(%r11),%xmm9
3084	vpaddd	%xmm6,%xmm8,%xmm8
3085	addl	%edi,%eax
3086	movl	%ebx,%edi
3087	vpxor	%xmm10,%xmm7,%xmm7
3088	shldl	$5,%ebx,%ebx
3089	addl	%esi,%eax
3090	xorl	%ebp,%edx
3091	addl	%ebx,%eax
3092	vpsrld	$30,%xmm7,%xmm10
3093	vmovdqa	%xmm8,32(%rsp)
3094	movl	%ecx,%esi
3095	xorl	%edx,%ecx
3096	addl	52(%rsp),%ebp
3097	andl	%edx,%esi
3098	vpslld	$2,%xmm7,%xmm7
3099	andl	%ecx,%edi
3100	shrdl	$7,%ebx,%ebx
3101	addl	%esi,%ebp
3102	movl	%eax,%esi
3103	shldl	$5,%eax,%eax
3104	addl	%edi,%ebp
3105	xorl	%edx,%ecx
3106	addl	%eax,%ebp
3107	vpor	%xmm10,%xmm7,%xmm7
3108	movl	%ebx,%edi
3109	xorl	%ecx,%ebx
3110	vmovdqa	%xmm7,%xmm8
3111	addl	56(%rsp),%edx
3112	andl	%ecx,%edi
3113	andl	%ebx,%esi
3114	shrdl	$7,%eax,%eax
3115	addl	%edi,%edx
3116	movl	%ebp,%edi
3117	shldl	$5,%ebp,%ebp
3118	addl	%esi,%edx
3119	xorl	%ecx,%ebx
3120	addl	%ebp,%edx
3121	movl	%eax,%esi
3122	xorl	%ebx,%eax
3123	addl	60(%rsp),%ecx
3124	andl	%ebx,%esi
3125	andl	%eax,%edi
3126	shrdl	$7,%ebp,%ebp
3127	addl	%esi,%ecx
3128	movl	%edx,%esi
3129	shldl	$5,%edx,%edx
3130	addl	%edi,%ecx
3131	xorl	%ebx,%eax
3132	addl	%edx,%ecx
3133	vpalignr	$8,%xmm6,%xmm7,%xmm8
3134	vpxor	%xmm4,%xmm0,%xmm0
3135	movl	%ebp,%edi
3136	xorl	%eax,%ebp
3137	addl	0(%rsp),%ebx
3138	andl	%eax,%edi
3139	vpxor	%xmm1,%xmm0,%xmm0
3140	andl	%ebp,%esi
3141	shrdl	$7,%edx,%edx
3142	vmovdqa	%xmm9,%xmm10
3143	vpaddd	%xmm7,%xmm9,%xmm9
3144	addl	%edi,%ebx
3145	movl	%ecx,%edi
3146	vpxor	%xmm8,%xmm0,%xmm0
3147	shldl	$5,%ecx,%ecx
3148	addl	%esi,%ebx
3149	xorl	%eax,%ebp
3150	addl	%ecx,%ebx
3151	vpsrld	$30,%xmm0,%xmm8
3152	vmovdqa	%xmm9,48(%rsp)
3153	movl	%edx,%esi
3154	xorl	%ebp,%edx
3155	addl	4(%rsp),%eax
3156	andl	%ebp,%esi
3157	vpslld	$2,%xmm0,%xmm0
3158	andl	%edx,%edi
3159	shrdl	$7,%ecx,%ecx
3160	addl	%esi,%eax
3161	movl	%ebx,%esi
3162	shldl	$5,%ebx,%ebx
3163	addl	%edi,%eax
3164	xorl	%ebp,%edx
3165	addl	%ebx,%eax
3166	vpor	%xmm8,%xmm0,%xmm0
3167	movl	%ecx,%edi
3168	xorl	%edx,%ecx
3169	vmovdqa	%xmm0,%xmm9
3170	addl	8(%rsp),%ebp
3171	andl	%edx,%edi
3172	andl	%ecx,%esi
3173	shrdl	$7,%ebx,%ebx
3174	addl	%edi,%ebp
3175	movl	%eax,%edi
3176	shldl	$5,%eax,%eax
3177	addl	%esi,%ebp
3178	xorl	%edx,%ecx
3179	addl	%eax,%ebp
3180	movl	%ebx,%esi
3181	xorl	%ecx,%ebx
3182	addl	12(%rsp),%edx
3183	andl	%ecx,%esi
3184	andl	%ebx,%edi
3185	shrdl	$7,%eax,%eax
3186	addl	%esi,%edx
3187	movl	%ebp,%esi
3188	shldl	$5,%ebp,%ebp
3189	addl	%edi,%edx
3190	xorl	%ecx,%ebx
3191	addl	%ebp,%edx
3192	vpalignr	$8,%xmm7,%xmm0,%xmm9
3193	vpxor	%xmm5,%xmm1,%xmm1
3194	movl	%eax,%edi
3195	xorl	%ebx,%eax
3196	addl	16(%rsp),%ecx
3197	andl	%ebx,%edi
3198	vpxor	%xmm2,%xmm1,%xmm1
3199	andl	%eax,%esi
3200	shrdl	$7,%ebp,%ebp
3201	vmovdqa	%xmm10,%xmm8
3202	vpaddd	%xmm0,%xmm10,%xmm10
3203	addl	%edi,%ecx
3204	movl	%edx,%edi
3205	vpxor	%xmm9,%xmm1,%xmm1
3206	shldl	$5,%edx,%edx
3207	addl	%esi,%ecx
3208	xorl	%ebx,%eax
3209	addl	%edx,%ecx
3210	vpsrld	$30,%xmm1,%xmm9
3211	vmovdqa	%xmm10,0(%rsp)
3212	movl	%ebp,%esi
3213	xorl	%eax,%ebp
3214	addl	20(%rsp),%ebx
3215	andl	%eax,%esi
3216	vpslld	$2,%xmm1,%xmm1
3217	andl	%ebp,%edi
3218	shrdl	$7,%edx,%edx
3219	addl	%esi,%ebx
3220	movl	%ecx,%esi
3221	shldl	$5,%ecx,%ecx
3222	addl	%edi,%ebx
3223	xorl	%eax,%ebp
3224	addl	%ecx,%ebx
3225	vpor	%xmm9,%xmm1,%xmm1
3226	movl	%edx,%edi
3227	xorl	%ebp,%edx
3228	vmovdqa	%xmm1,%xmm10
3229	addl	24(%rsp),%eax
3230	andl	%ebp,%edi
3231	andl	%edx,%esi
3232	shrdl	$7,%ecx,%ecx
3233	addl	%edi,%eax
3234	movl	%ebx,%edi
3235	shldl	$5,%ebx,%ebx
3236	addl	%esi,%eax
3237	xorl	%ebp,%edx
3238	addl	%ebx,%eax
3239	movl	%ecx,%esi
3240	xorl	%edx,%ecx
3241	addl	28(%rsp),%ebp
3242	andl	%edx,%esi
3243	andl	%ecx,%edi
3244	shrdl	$7,%ebx,%ebx
3245	addl	%esi,%ebp
3246	movl	%eax,%esi
3247	shldl	$5,%eax,%eax
3248	addl	%edi,%ebp
3249	xorl	%edx,%ecx
3250	addl	%eax,%ebp
3251	vpalignr	$8,%xmm0,%xmm1,%xmm10
3252	vpxor	%xmm6,%xmm2,%xmm2
3253	movl	%ebx,%edi
3254	xorl	%ecx,%ebx
3255	addl	32(%rsp),%edx
3256	andl	%ecx,%edi
3257	vpxor	%xmm3,%xmm2,%xmm2
3258	andl	%ebx,%esi
3259	shrdl	$7,%eax,%eax
3260	vmovdqa	%xmm8,%xmm9
3261	vpaddd	%xmm1,%xmm8,%xmm8
3262	addl	%edi,%edx
3263	movl	%ebp,%edi
3264	vpxor	%xmm10,%xmm2,%xmm2
3265	shldl	$5,%ebp,%ebp
3266	addl	%esi,%edx
3267	xorl	%ecx,%ebx
3268	addl	%ebp,%edx
3269	vpsrld	$30,%xmm2,%xmm10
3270	vmovdqa	%xmm8,16(%rsp)
3271	movl	%eax,%esi
3272	xorl	%ebx,%eax
3273	addl	36(%rsp),%ecx
3274	andl	%ebx,%esi
3275	vpslld	$2,%xmm2,%xmm2
3276	andl	%eax,%edi
3277	shrdl	$7,%ebp,%ebp
3278	addl	%esi,%ecx
3279	movl	%edx,%esi
3280	shldl	$5,%edx,%edx
3281	addl	%edi,%ecx
3282	xorl	%ebx,%eax
3283	addl	%edx,%ecx
3284	vpor	%xmm10,%xmm2,%xmm2
3285	movl	%ebp,%edi
3286	xorl	%eax,%ebp
3287	vmovdqa	%xmm2,%xmm8
3288	addl	40(%rsp),%ebx
3289	andl	%eax,%edi
3290	andl	%ebp,%esi
3291	shrdl	$7,%edx,%edx
3292	addl	%edi,%ebx
3293	movl	%ecx,%edi
3294	shldl	$5,%ecx,%ecx
3295	addl	%esi,%ebx
3296	xorl	%eax,%ebp
3297	addl	%ecx,%ebx
3298	movl	%edx,%esi
3299	xorl	%ebp,%edx
3300	addl	44(%rsp),%eax
3301	andl	%ebp,%esi
3302	andl	%edx,%edi
3303	shrdl	$7,%ecx,%ecx
3304	addl	%esi,%eax
3305	movl	%ebx,%esi
3306	shldl	$5,%ebx,%ebx
3307	addl	%edi,%eax
3308	xorl	%ebp,%edx
3309	addl	%ebx,%eax
3310	vpalignr	$8,%xmm1,%xmm2,%xmm8
3311	vpxor	%xmm7,%xmm3,%xmm3
3312	addl	48(%rsp),%ebp
3313	xorl	%edx,%esi
3314	movl	%eax,%edi
3315	shldl	$5,%eax,%eax
3316	vpxor	%xmm4,%xmm3,%xmm3
3317	xorl	%ecx,%esi
3318	addl	%eax,%ebp
3319	vmovdqa	%xmm9,%xmm10
3320	vpaddd	%xmm2,%xmm9,%xmm9
3321	shrdl	$7,%ebx,%ebx
3322	addl	%esi,%ebp
3323	vpxor	%xmm8,%xmm3,%xmm3
3324	addl	52(%rsp),%edx
3325	xorl	%ecx,%edi
3326	movl	%ebp,%esi
3327	shldl	$5,%ebp,%ebp
3328	vpsrld	$30,%xmm3,%xmm8
3329	vmovdqa	%xmm9,32(%rsp)
3330	xorl	%ebx,%edi
3331	addl	%ebp,%edx
3332	shrdl	$7,%eax,%eax
3333	addl	%edi,%edx
3334	vpslld	$2,%xmm3,%xmm3
3335	addl	56(%rsp),%ecx
3336	xorl	%ebx,%esi
3337	movl	%edx,%edi
3338	shldl	$5,%edx,%edx
3339	xorl	%eax,%esi
3340	addl	%edx,%ecx
3341	shrdl	$7,%ebp,%ebp
3342	addl	%esi,%ecx
3343	vpor	%xmm8,%xmm3,%xmm3
3344	addl	60(%rsp),%ebx
3345	xorl	%eax,%edi
3346	movl	%ecx,%esi
3347	shldl	$5,%ecx,%ecx
3348	xorl	%ebp,%edi
3349	addl	%ecx,%ebx
3350	shrdl	$7,%edx,%edx
3351	addl	%edi,%ebx
3352	addl	0(%rsp),%eax
3353	vpaddd	%xmm3,%xmm10,%xmm10
3354	xorl	%ebp,%esi
3355	movl	%ebx,%edi
3356	shldl	$5,%ebx,%ebx
3357	xorl	%edx,%esi
3358	movdqa	%xmm10,48(%rsp)
3359	addl	%ebx,%eax
3360	shrdl	$7,%ecx,%ecx
3361	addl	%esi,%eax
3362	addl	4(%rsp),%ebp
3363	xorl	%edx,%edi
3364	movl	%eax,%esi
3365	shldl	$5,%eax,%eax
3366	xorl	%ecx,%edi
3367	addl	%eax,%ebp
3368	shrdl	$7,%ebx,%ebx
3369	addl	%edi,%ebp
3370	addl	8(%rsp),%edx
3371	xorl	%ecx,%esi
3372	movl	%ebp,%edi
3373	shldl	$5,%ebp,%ebp
3374	xorl	%ebx,%esi
3375	addl	%ebp,%edx
3376	shrdl	$7,%eax,%eax
3377	addl	%esi,%edx
3378	addl	12(%rsp),%ecx
3379	xorl	%ebx,%edi
3380	movl	%edx,%esi
3381	shldl	$5,%edx,%edx
3382	xorl	%eax,%edi
3383	addl	%edx,%ecx
3384	shrdl	$7,%ebp,%ebp
3385	addl	%edi,%ecx
3386	cmpq	%r10,%r9
3387	je	.Ldone_avx
3388	vmovdqa	64(%r11),%xmm6
3389	vmovdqa	0(%r11),%xmm9
3390	vmovdqu	0(%r9),%xmm0
3391	vmovdqu	16(%r9),%xmm1
3392	vmovdqu	32(%r9),%xmm2
3393	vmovdqu	48(%r9),%xmm3
3394	vpshufb	%xmm6,%xmm0,%xmm0
3395	addq	$64,%r9
3396	addl	16(%rsp),%ebx
3397	xorl	%eax,%esi
3398	vpshufb	%xmm6,%xmm1,%xmm1
3399	movl	%ecx,%edi
3400	shldl	$5,%ecx,%ecx
3401	vpaddd	%xmm9,%xmm0,%xmm4
3402	xorl	%ebp,%esi
3403	addl	%ecx,%ebx
3404	shrdl	$7,%edx,%edx
3405	addl	%esi,%ebx
3406	vmovdqa	%xmm4,0(%rsp)
3407	addl	20(%rsp),%eax
3408	xorl	%ebp,%edi
3409	movl	%ebx,%esi
3410	shldl	$5,%ebx,%ebx
3411	xorl	%edx,%edi
3412	addl	%ebx,%eax
3413	shrdl	$7,%ecx,%ecx
3414	addl	%edi,%eax
3415	addl	24(%rsp),%ebp
3416	xorl	%edx,%esi
3417	movl	%eax,%edi
3418	shldl	$5,%eax,%eax
3419	xorl	%ecx,%esi
3420	addl	%eax,%ebp
3421	shrdl	$7,%ebx,%ebx
3422	addl	%esi,%ebp
3423	addl	28(%rsp),%edx
3424	xorl	%ecx,%edi
3425	movl	%ebp,%esi
3426	shldl	$5,%ebp,%ebp
3427	xorl	%ebx,%edi
3428	addl	%ebp,%edx
3429	shrdl	$7,%eax,%eax
3430	addl	%edi,%edx
3431	addl	32(%rsp),%ecx
3432	xorl	%ebx,%esi
3433	vpshufb	%xmm6,%xmm2,%xmm2
3434	movl	%edx,%edi
3435	shldl	$5,%edx,%edx
3436	vpaddd	%xmm9,%xmm1,%xmm5
3437	xorl	%eax,%esi
3438	addl	%edx,%ecx
3439	shrdl	$7,%ebp,%ebp
3440	addl	%esi,%ecx
3441	vmovdqa	%xmm5,16(%rsp)
3442	addl	36(%rsp),%ebx
3443	xorl	%eax,%edi
3444	movl	%ecx,%esi
3445	shldl	$5,%ecx,%ecx
3446	xorl	%ebp,%edi
3447	addl	%ecx,%ebx
3448	shrdl	$7,%edx,%edx
3449	addl	%edi,%ebx
3450	addl	40(%rsp),%eax
3451	xorl	%ebp,%esi
3452	movl	%ebx,%edi
3453	shldl	$5,%ebx,%ebx
3454	xorl	%edx,%esi
3455	addl	%ebx,%eax
3456	shrdl	$7,%ecx,%ecx
3457	addl	%esi,%eax
3458	addl	44(%rsp),%ebp
3459	xorl	%edx,%edi
3460	movl	%eax,%esi
3461	shldl	$5,%eax,%eax
3462	xorl	%ecx,%edi
3463	addl	%eax,%ebp
3464	shrdl	$7,%ebx,%ebx
3465	addl	%edi,%ebp
3466	addl	48(%rsp),%edx
3467	xorl	%ecx,%esi
3468	vpshufb	%xmm6,%xmm3,%xmm3
3469	movl	%ebp,%edi
3470	shldl	$5,%ebp,%ebp
3471	vpaddd	%xmm9,%xmm2,%xmm6
3472	xorl	%ebx,%esi
3473	addl	%ebp,%edx
3474	shrdl	$7,%eax,%eax
3475	addl	%esi,%edx
3476	vmovdqa	%xmm6,32(%rsp)
3477	addl	52(%rsp),%ecx
3478	xorl	%ebx,%edi
3479	movl	%edx,%esi
3480	shldl	$5,%edx,%edx
3481	xorl	%eax,%edi
3482	addl	%edx,%ecx
3483	shrdl	$7,%ebp,%ebp
3484	addl	%edi,%ecx
3485	addl	56(%rsp),%ebx
3486	xorl	%eax,%esi
3487	movl	%ecx,%edi
3488	shldl	$5,%ecx,%ecx
3489	xorl	%ebp,%esi
3490	addl	%ecx,%ebx
3491	shrdl	$7,%edx,%edx
3492	addl	%esi,%ebx
3493	addl	60(%rsp),%eax
3494	xorl	%ebp,%edi
3495	movl	%ebx,%esi
3496	shldl	$5,%ebx,%ebx
3497	xorl	%edx,%edi
3498	addl	%ebx,%eax
3499	shrdl	$7,%ecx,%ecx
3500	addl	%edi,%eax
3501	addl	0(%r8),%eax
3502	addl	4(%r8),%esi
3503	addl	8(%r8),%ecx
3504	addl	12(%r8),%edx
3505	movl	%eax,0(%r8)
3506	addl	16(%r8),%ebp
3507	movl	%esi,4(%r8)
3508	movl	%esi,%ebx
3509	movl	%ecx,8(%r8)
3510	movl	%edx,12(%r8)
3511	movl	%ebp,16(%r8)
3512	jmp	.Loop_avx
3513
3514.align	16
3515.Ldone_avx:
3516	addl	16(%rsp),%ebx
3517	xorl	%eax,%esi
3518	movl	%ecx,%edi
3519	shldl	$5,%ecx,%ecx
3520	xorl	%ebp,%esi
3521	addl	%ecx,%ebx
3522	shrdl	$7,%edx,%edx
3523	addl	%esi,%ebx
3524	addl	20(%rsp),%eax
3525	xorl	%ebp,%edi
3526	movl	%ebx,%esi
3527	shldl	$5,%ebx,%ebx
3528	xorl	%edx,%edi
3529	addl	%ebx,%eax
3530	shrdl	$7,%ecx,%ecx
3531	addl	%edi,%eax
3532	addl	24(%rsp),%ebp
3533	xorl	%edx,%esi
3534	movl	%eax,%edi
3535	shldl	$5,%eax,%eax
3536	xorl	%ecx,%esi
3537	addl	%eax,%ebp
3538	shrdl	$7,%ebx,%ebx
3539	addl	%esi,%ebp
3540	addl	28(%rsp),%edx
3541	xorl	%ecx,%edi
3542	movl	%ebp,%esi
3543	shldl	$5,%ebp,%ebp
3544	xorl	%ebx,%edi
3545	addl	%ebp,%edx
3546	shrdl	$7,%eax,%eax
3547	addl	%edi,%edx
3548	addl	32(%rsp),%ecx
3549	xorl	%ebx,%esi
3550	movl	%edx,%edi
3551	shldl	$5,%edx,%edx
3552	xorl	%eax,%esi
3553	addl	%edx,%ecx
3554	shrdl	$7,%ebp,%ebp
3555	addl	%esi,%ecx
3556	addl	36(%rsp),%ebx
3557	xorl	%eax,%edi
3558	movl	%ecx,%esi
3559	shldl	$5,%ecx,%ecx
3560	xorl	%ebp,%edi
3561	addl	%ecx,%ebx
3562	shrdl	$7,%edx,%edx
3563	addl	%edi,%ebx
3564	addl	40(%rsp),%eax
3565	xorl	%ebp,%esi
3566	movl	%ebx,%edi
3567	shldl	$5,%ebx,%ebx
3568	xorl	%edx,%esi
3569	addl	%ebx,%eax
3570	shrdl	$7,%ecx,%ecx
3571	addl	%esi,%eax
3572	addl	44(%rsp),%ebp
3573	xorl	%edx,%edi
3574	movl	%eax,%esi
3575	shldl	$5,%eax,%eax
3576	xorl	%ecx,%edi
3577	addl	%eax,%ebp
3578	shrdl	$7,%ebx,%ebx
3579	addl	%edi,%ebp
3580	addl	48(%rsp),%edx
3581	xorl	%ecx,%esi
3582	movl	%ebp,%edi
3583	shldl	$5,%ebp,%ebp
3584	xorl	%ebx,%esi
3585	addl	%ebp,%edx
3586	shrdl	$7,%eax,%eax
3587	addl	%esi,%edx
3588	addl	52(%rsp),%ecx
3589	xorl	%ebx,%edi
3590	movl	%edx,%esi
3591	shldl	$5,%edx,%edx
3592	xorl	%eax,%edi
3593	addl	%edx,%ecx
3594	shrdl	$7,%ebp,%ebp
3595	addl	%edi,%ecx
3596	addl	56(%rsp),%ebx
3597	xorl	%eax,%esi
3598	movl	%ecx,%edi
3599	shldl	$5,%ecx,%ecx
3600	xorl	%ebp,%esi
3601	addl	%ecx,%ebx
3602	shrdl	$7,%edx,%edx
3603	addl	%esi,%ebx
3604	addl	60(%rsp),%eax
3605	xorl	%ebp,%edi
3606	movl	%ebx,%esi
3607	shldl	$5,%ebx,%ebx
3608	xorl	%edx,%edi
3609	addl	%ebx,%eax
3610	shrdl	$7,%ecx,%ecx
3611	addl	%edi,%eax
3612	vzeroupper
3613
3614	addl	0(%r8),%eax
3615	addl	4(%r8),%esi
3616	addl	8(%r8),%ecx
3617	movl	%eax,0(%r8)
3618	addl	12(%r8),%edx
3619	movl	%esi,4(%r8)
3620	addl	16(%r8),%ebp
3621	movl	%ecx,8(%r8)
3622	movl	%edx,12(%r8)
3623	movl	%ebp,16(%r8)
3624	leaq	64(%rsp),%rsi
3625	movq	0(%rsi),%r12
3626	movq	8(%rsi),%rbp
3627	movq	16(%rsi),%rbx
3628	leaq	24(%rsi),%rsp
3629.Lepilogue_avx:
3630	.byte	0xf3,0xc3
3631.size	sha1_block_data_order_avx,.-sha1_block_data_order_avx
3632.align	64
3633K_XX_XX:
3634.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999
3635.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
3636.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
3637.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
3638.long	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
3639.byte	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
3640.align	64
3641