xref: /minix3/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha1-x86_64.S (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1#include <machine/asm.h>
2.text
3
4
5.globl	aesni_cbc_sha1_enc
6.type	aesni_cbc_sha1_enc,@function
7.align	16
8aesni_cbc_sha1_enc:
9
10	movq	OPENSSL_ia32cap_P@GOTPCREL(%rip),%r10
11	bt	$28,4(%r10)
12	jc	aesni_cbc_sha1_enc_avx
13	jmp	aesni_cbc_sha1_enc_ssse3
14	.byte	0xf3,0xc3
15.size	aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc
16.type	aesni_cbc_sha1_enc_ssse3,@function
17.align	16
18aesni_cbc_sha1_enc_ssse3:
19	movq	8(%rsp),%r10
20
21
22	pushq	%rbx
23	pushq	%rbp
24	pushq	%r12
25	pushq	%r13
26	pushq	%r14
27	pushq	%r15
28	leaq	-104(%rsp),%rsp
29
30
31	movq	%rdi,%r12
32	movq	%rsi,%r13
33	movq	%rdx,%r14
34	movq	%rcx,%r15
35	movdqu	(%r8),%xmm11
36	movq	%r8,88(%rsp)
37	shlq	$6,%r14
38	subq	%r12,%r13
39	movl	240(%r15),%r8d
40	addq	%r10,%r14
41
42	leaq	K_XX_XX(%rip),%r11
43	movl	0(%r9),%eax
44	movl	4(%r9),%ebx
45	movl	8(%r9),%ecx
46	movl	12(%r9),%edx
47	movl	%ebx,%esi
48	movl	16(%r9),%ebp
49
50	movdqa	64(%r11),%xmm6
51	movdqa	0(%r11),%xmm9
52	movdqu	0(%r10),%xmm0
53	movdqu	16(%r10),%xmm1
54	movdqu	32(%r10),%xmm2
55	movdqu	48(%r10),%xmm3
56.byte	102,15,56,0,198
57	addq	$64,%r10
58.byte	102,15,56,0,206
59.byte	102,15,56,0,214
60.byte	102,15,56,0,222
61	paddd	%xmm9,%xmm0
62	paddd	%xmm9,%xmm1
63	paddd	%xmm9,%xmm2
64	movdqa	%xmm0,0(%rsp)
65	psubd	%xmm9,%xmm0
66	movdqa	%xmm1,16(%rsp)
67	psubd	%xmm9,%xmm1
68	movdqa	%xmm2,32(%rsp)
69	psubd	%xmm9,%xmm2
70	movups	(%r15),%xmm13
71	movups	16(%r15),%xmm14
72	jmp	.Loop_ssse3
73.align	16
74.Loop_ssse3:
75	movdqa	%xmm1,%xmm4
76	addl	0(%rsp),%ebp
77	movups	0(%r12),%xmm12
78	xorps	%xmm13,%xmm12
79	xorps	%xmm12,%xmm11
80.byte	102,69,15,56,220,222
81	movups	32(%r15),%xmm15
82	xorl	%edx,%ecx
83	movdqa	%xmm3,%xmm8
84.byte	102,15,58,15,224,8
85	movl	%eax,%edi
86	roll	$5,%eax
87	paddd	%xmm3,%xmm9
88	andl	%ecx,%esi
89	xorl	%edx,%ecx
90	psrldq	$4,%xmm8
91	xorl	%edx,%esi
92	addl	%eax,%ebp
93	pxor	%xmm0,%xmm4
94	rorl	$2,%ebx
95	addl	%esi,%ebp
96	pxor	%xmm2,%xmm8
97	addl	4(%rsp),%edx
98	xorl	%ecx,%ebx
99	movl	%ebp,%esi
100	roll	$5,%ebp
101	pxor	%xmm8,%xmm4
102	andl	%ebx,%edi
103	xorl	%ecx,%ebx
104	movdqa	%xmm9,48(%rsp)
105	xorl	%ecx,%edi
106.byte	102,69,15,56,220,223
107	movups	48(%r15),%xmm14
108	addl	%ebp,%edx
109	movdqa	%xmm4,%xmm10
110	movdqa	%xmm4,%xmm8
111	rorl	$7,%eax
112	addl	%edi,%edx
113	addl	8(%rsp),%ecx
114	xorl	%ebx,%eax
115	pslldq	$12,%xmm10
116	paddd	%xmm4,%xmm4
117	movl	%edx,%edi
118	roll	$5,%edx
119	andl	%eax,%esi
120	xorl	%ebx,%eax
121	psrld	$31,%xmm8
122	xorl	%ebx,%esi
123	addl	%edx,%ecx
124	movdqa	%xmm10,%xmm9
125	rorl	$7,%ebp
126	addl	%esi,%ecx
127	psrld	$30,%xmm10
128	por	%xmm8,%xmm4
129	addl	12(%rsp),%ebx
130	xorl	%eax,%ebp
131	movl	%ecx,%esi
132	roll	$5,%ecx
133.byte	102,69,15,56,220,222
134	movups	64(%r15),%xmm15
135	pslld	$2,%xmm9
136	pxor	%xmm10,%xmm4
137	andl	%ebp,%edi
138	xorl	%eax,%ebp
139	movdqa	0(%r11),%xmm10
140	xorl	%eax,%edi
141	addl	%ecx,%ebx
142	pxor	%xmm9,%xmm4
143	rorl	$7,%edx
144	addl	%edi,%ebx
145	movdqa	%xmm2,%xmm5
146	addl	16(%rsp),%eax
147	xorl	%ebp,%edx
148	movdqa	%xmm4,%xmm9
149.byte	102,15,58,15,233,8
150	movl	%ebx,%edi
151	roll	$5,%ebx
152	paddd	%xmm4,%xmm10
153	andl	%edx,%esi
154	xorl	%ebp,%edx
155	psrldq	$4,%xmm9
156	xorl	%ebp,%esi
157	addl	%ebx,%eax
158	pxor	%xmm1,%xmm5
159	rorl	$7,%ecx
160	addl	%esi,%eax
161	pxor	%xmm3,%xmm9
162	addl	20(%rsp),%ebp
163.byte	102,69,15,56,220,223
164	movups	80(%r15),%xmm14
165	xorl	%edx,%ecx
166	movl	%eax,%esi
167	roll	$5,%eax
168	pxor	%xmm9,%xmm5
169	andl	%ecx,%edi
170	xorl	%edx,%ecx
171	movdqa	%xmm10,0(%rsp)
172	xorl	%edx,%edi
173	addl	%eax,%ebp
174	movdqa	%xmm5,%xmm8
175	movdqa	%xmm5,%xmm9
176	rorl	$7,%ebx
177	addl	%edi,%ebp
178	addl	24(%rsp),%edx
179	xorl	%ecx,%ebx
180	pslldq	$12,%xmm8
181	paddd	%xmm5,%xmm5
182	movl	%ebp,%edi
183	roll	$5,%ebp
184	andl	%ebx,%esi
185	xorl	%ecx,%ebx
186	psrld	$31,%xmm9
187	xorl	%ecx,%esi
188.byte	102,69,15,56,220,222
189	movups	96(%r15),%xmm15
190	addl	%ebp,%edx
191	movdqa	%xmm8,%xmm10
192	rorl	$7,%eax
193	addl	%esi,%edx
194	psrld	$30,%xmm8
195	por	%xmm9,%xmm5
196	addl	28(%rsp),%ecx
197	xorl	%ebx,%eax
198	movl	%edx,%esi
199	roll	$5,%edx
200	pslld	$2,%xmm10
201	pxor	%xmm8,%xmm5
202	andl	%eax,%edi
203	xorl	%ebx,%eax
204	movdqa	16(%r11),%xmm8
205	xorl	%ebx,%edi
206	addl	%edx,%ecx
207	pxor	%xmm10,%xmm5
208	rorl	$7,%ebp
209	addl	%edi,%ecx
210	movdqa	%xmm3,%xmm6
211	addl	32(%rsp),%ebx
212	xorl	%eax,%ebp
213	movdqa	%xmm5,%xmm10
214.byte	102,15,58,15,242,8
215	movl	%ecx,%edi
216	roll	$5,%ecx
217.byte	102,69,15,56,220,223
218	movups	112(%r15),%xmm14
219	paddd	%xmm5,%xmm8
220	andl	%ebp,%esi
221	xorl	%eax,%ebp
222	psrldq	$4,%xmm10
223	xorl	%eax,%esi
224	addl	%ecx,%ebx
225	pxor	%xmm2,%xmm6
226	rorl	$7,%edx
227	addl	%esi,%ebx
228	pxor	%xmm4,%xmm10
229	addl	36(%rsp),%eax
230	xorl	%ebp,%edx
231	movl	%ebx,%esi
232	roll	$5,%ebx
233	pxor	%xmm10,%xmm6
234	andl	%edx,%edi
235	xorl	%ebp,%edx
236	movdqa	%xmm8,16(%rsp)
237	xorl	%ebp,%edi
238	addl	%ebx,%eax
239	movdqa	%xmm6,%xmm9
240	movdqa	%xmm6,%xmm10
241	rorl	$7,%ecx
242	addl	%edi,%eax
243	addl	40(%rsp),%ebp
244.byte	102,69,15,56,220,222
245	movups	128(%r15),%xmm15
246	xorl	%edx,%ecx
247	pslldq	$12,%xmm9
248	paddd	%xmm6,%xmm6
249	movl	%eax,%edi
250	roll	$5,%eax
251	andl	%ecx,%esi
252	xorl	%edx,%ecx
253	psrld	$31,%xmm10
254	xorl	%edx,%esi
255	addl	%eax,%ebp
256	movdqa	%xmm9,%xmm8
257	rorl	$7,%ebx
258	addl	%esi,%ebp
259	psrld	$30,%xmm9
260	por	%xmm10,%xmm6
261	addl	44(%rsp),%edx
262	xorl	%ecx,%ebx
263	movl	%ebp,%esi
264	roll	$5,%ebp
265	pslld	$2,%xmm8
266	pxor	%xmm9,%xmm6
267	andl	%ebx,%edi
268	xorl	%ecx,%ebx
269	movdqa	16(%r11),%xmm9
270	xorl	%ecx,%edi
271.byte	102,69,15,56,220,223
272	movups	144(%r15),%xmm14
273	addl	%ebp,%edx
274	pxor	%xmm8,%xmm6
275	rorl	$7,%eax
276	addl	%edi,%edx
277	movdqa	%xmm4,%xmm7
278	addl	48(%rsp),%ecx
279	xorl	%ebx,%eax
280	movdqa	%xmm6,%xmm8
281.byte	102,15,58,15,251,8
282	movl	%edx,%edi
283	roll	$5,%edx
284	paddd	%xmm6,%xmm9
285	andl	%eax,%esi
286	xorl	%ebx,%eax
287	psrldq	$4,%xmm8
288	xorl	%ebx,%esi
289	addl	%edx,%ecx
290	pxor	%xmm3,%xmm7
291	rorl	$7,%ebp
292	addl	%esi,%ecx
293	pxor	%xmm5,%xmm8
294	addl	52(%rsp),%ebx
295	xorl	%eax,%ebp
296	movl	%ecx,%esi
297	roll	$5,%ecx
298.byte	102,69,15,56,220,222
299	movups	160(%r15),%xmm15
300	pxor	%xmm8,%xmm7
301	andl	%ebp,%edi
302	xorl	%eax,%ebp
303	movdqa	%xmm9,32(%rsp)
304	xorl	%eax,%edi
305	addl	%ecx,%ebx
306	movdqa	%xmm7,%xmm10
307	movdqa	%xmm7,%xmm8
308	rorl	$7,%edx
309	addl	%edi,%ebx
310	addl	56(%rsp),%eax
311	xorl	%ebp,%edx
312	pslldq	$12,%xmm10
313	paddd	%xmm7,%xmm7
314	movl	%ebx,%edi
315	roll	$5,%ebx
316	andl	%edx,%esi
317	xorl	%ebp,%edx
318	psrld	$31,%xmm8
319	xorl	%ebp,%esi
320	addl	%ebx,%eax
321	movdqa	%xmm10,%xmm9
322	rorl	$7,%ecx
323	addl	%esi,%eax
324	psrld	$30,%xmm10
325	por	%xmm8,%xmm7
326	addl	60(%rsp),%ebp
327	cmpl	$11,%r8d
328	jb	.Laesenclast1
329	movups	176(%r15),%xmm14
330.byte	102,69,15,56,220,223
331	movups	192(%r15),%xmm15
332.byte	102,69,15,56,220,222
333	je	.Laesenclast1
334	movups	208(%r15),%xmm14
335.byte	102,69,15,56,220,223
336	movups	224(%r15),%xmm15
337.byte	102,69,15,56,220,222
338.Laesenclast1:
339.byte	102,69,15,56,221,223
340	movups	16(%r15),%xmm14
341	xorl	%edx,%ecx
342	movl	%eax,%esi
343	roll	$5,%eax
344	pslld	$2,%xmm9
345	pxor	%xmm10,%xmm7
346	andl	%ecx,%edi
347	xorl	%edx,%ecx
348	movdqa	16(%r11),%xmm10
349	xorl	%edx,%edi
350	addl	%eax,%ebp
351	pxor	%xmm9,%xmm7
352	rorl	$7,%ebx
353	addl	%edi,%ebp
354	movdqa	%xmm7,%xmm9
355	addl	0(%rsp),%edx
356	pxor	%xmm4,%xmm0
357.byte	102,68,15,58,15,206,8
358	xorl	%ecx,%ebx
359	movl	%ebp,%edi
360	roll	$5,%ebp
361	pxor	%xmm1,%xmm0
362	andl	%ebx,%esi
363	xorl	%ecx,%ebx
364	movdqa	%xmm10,%xmm8
365	paddd	%xmm7,%xmm10
366	xorl	%ecx,%esi
367	movups	16(%r12),%xmm12
368	xorps	%xmm13,%xmm12
369	movups	%xmm11,0(%r13,%r12,1)
370	xorps	%xmm12,%xmm11
371.byte	102,69,15,56,220,222
372	movups	32(%r15),%xmm15
373	addl	%ebp,%edx
374	pxor	%xmm9,%xmm0
375	rorl	$7,%eax
376	addl	%esi,%edx
377	addl	4(%rsp),%ecx
378	xorl	%ebx,%eax
379	movdqa	%xmm0,%xmm9
380	movdqa	%xmm10,48(%rsp)
381	movl	%edx,%esi
382	roll	$5,%edx
383	andl	%eax,%edi
384	xorl	%ebx,%eax
385	pslld	$2,%xmm0
386	xorl	%ebx,%edi
387	addl	%edx,%ecx
388	psrld	$30,%xmm9
389	rorl	$7,%ebp
390	addl	%edi,%ecx
391	addl	8(%rsp),%ebx
392	xorl	%eax,%ebp
393	movl	%ecx,%edi
394	roll	$5,%ecx
395.byte	102,69,15,56,220,223
396	movups	48(%r15),%xmm14
397	por	%xmm9,%xmm0
398	andl	%ebp,%esi
399	xorl	%eax,%ebp
400	movdqa	%xmm0,%xmm10
401	xorl	%eax,%esi
402	addl	%ecx,%ebx
403	rorl	$7,%edx
404	addl	%esi,%ebx
405	addl	12(%rsp),%eax
406	xorl	%ebp,%edx
407	movl	%ebx,%esi
408	roll	$5,%ebx
409	andl	%edx,%edi
410	xorl	%ebp,%edx
411	xorl	%ebp,%edi
412	addl	%ebx,%eax
413	rorl	$7,%ecx
414	addl	%edi,%eax
415	addl	16(%rsp),%ebp
416.byte	102,69,15,56,220,222
417	movups	64(%r15),%xmm15
418	pxor	%xmm5,%xmm1
419.byte	102,68,15,58,15,215,8
420	xorl	%edx,%esi
421	movl	%eax,%edi
422	roll	$5,%eax
423	pxor	%xmm2,%xmm1
424	xorl	%ecx,%esi
425	addl	%eax,%ebp
426	movdqa	%xmm8,%xmm9
427	paddd	%xmm0,%xmm8
428	rorl	$7,%ebx
429	addl	%esi,%ebp
430	pxor	%xmm10,%xmm1
431	addl	20(%rsp),%edx
432	xorl	%ecx,%edi
433	movl	%ebp,%esi
434	roll	$5,%ebp
435	movdqa	%xmm1,%xmm10
436	movdqa	%xmm8,0(%rsp)
437	xorl	%ebx,%edi
438	addl	%ebp,%edx
439	rorl	$7,%eax
440	addl	%edi,%edx
441	pslld	$2,%xmm1
442	addl	24(%rsp),%ecx
443	xorl	%ebx,%esi
444	psrld	$30,%xmm10
445	movl	%edx,%edi
446	roll	$5,%edx
447	xorl	%eax,%esi
448.byte	102,69,15,56,220,223
449	movups	80(%r15),%xmm14
450	addl	%edx,%ecx
451	rorl	$7,%ebp
452	addl	%esi,%ecx
453	por	%xmm10,%xmm1
454	addl	28(%rsp),%ebx
455	xorl	%eax,%edi
456	movdqa	%xmm1,%xmm8
457	movl	%ecx,%esi
458	roll	$5,%ecx
459	xorl	%ebp,%edi
460	addl	%ecx,%ebx
461	rorl	$7,%edx
462	addl	%edi,%ebx
463	addl	32(%rsp),%eax
464	pxor	%xmm6,%xmm2
465.byte	102,68,15,58,15,192,8
466	xorl	%ebp,%esi
467	movl	%ebx,%edi
468	roll	$5,%ebx
469	pxor	%xmm3,%xmm2
470	xorl	%edx,%esi
471	addl	%ebx,%eax
472	movdqa	32(%r11),%xmm10
473	paddd	%xmm1,%xmm9
474	rorl	$7,%ecx
475	addl	%esi,%eax
476	pxor	%xmm8,%xmm2
477	addl	36(%rsp),%ebp
478.byte	102,69,15,56,220,222
479	movups	96(%r15),%xmm15
480	xorl	%edx,%edi
481	movl	%eax,%esi
482	roll	$5,%eax
483	movdqa	%xmm2,%xmm8
484	movdqa	%xmm9,16(%rsp)
485	xorl	%ecx,%edi
486	addl	%eax,%ebp
487	rorl	$7,%ebx
488	addl	%edi,%ebp
489	pslld	$2,%xmm2
490	addl	40(%rsp),%edx
491	xorl	%ecx,%esi
492	psrld	$30,%xmm8
493	movl	%ebp,%edi
494	roll	$5,%ebp
495	xorl	%ebx,%esi
496	addl	%ebp,%edx
497	rorl	$7,%eax
498	addl	%esi,%edx
499	por	%xmm8,%xmm2
500	addl	44(%rsp),%ecx
501	xorl	%ebx,%edi
502	movdqa	%xmm2,%xmm9
503	movl	%edx,%esi
504	roll	$5,%edx
505	xorl	%eax,%edi
506.byte	102,69,15,56,220,223
507	movups	112(%r15),%xmm14
508	addl	%edx,%ecx
509	rorl	$7,%ebp
510	addl	%edi,%ecx
511	addl	48(%rsp),%ebx
512	pxor	%xmm7,%xmm3
513.byte	102,68,15,58,15,201,8
514	xorl	%eax,%esi
515	movl	%ecx,%edi
516	roll	$5,%ecx
517	pxor	%xmm4,%xmm3
518	xorl	%ebp,%esi
519	addl	%ecx,%ebx
520	movdqa	%xmm10,%xmm8
521	paddd	%xmm2,%xmm10
522	rorl	$7,%edx
523	addl	%esi,%ebx
524	pxor	%xmm9,%xmm3
525	addl	52(%rsp),%eax
526	xorl	%ebp,%edi
527	movl	%ebx,%esi
528	roll	$5,%ebx
529	movdqa	%xmm3,%xmm9
530	movdqa	%xmm10,32(%rsp)
531	xorl	%edx,%edi
532	addl	%ebx,%eax
533	rorl	$7,%ecx
534	addl	%edi,%eax
535	pslld	$2,%xmm3
536	addl	56(%rsp),%ebp
537.byte	102,69,15,56,220,222
538	movups	128(%r15),%xmm15
539	xorl	%edx,%esi
540	psrld	$30,%xmm9
541	movl	%eax,%edi
542	roll	$5,%eax
543	xorl	%ecx,%esi
544	addl	%eax,%ebp
545	rorl	$7,%ebx
546	addl	%esi,%ebp
547	por	%xmm9,%xmm3
548	addl	60(%rsp),%edx
549	xorl	%ecx,%edi
550	movdqa	%xmm3,%xmm10
551	movl	%ebp,%esi
552	roll	$5,%ebp
553	xorl	%ebx,%edi
554	addl	%ebp,%edx
555	rorl	$7,%eax
556	addl	%edi,%edx
557	addl	0(%rsp),%ecx
558	pxor	%xmm0,%xmm4
559.byte	102,68,15,58,15,210,8
560	xorl	%ebx,%esi
561	movl	%edx,%edi
562	roll	$5,%edx
563	pxor	%xmm5,%xmm4
564	xorl	%eax,%esi
565.byte	102,69,15,56,220,223
566	movups	144(%r15),%xmm14
567	addl	%edx,%ecx
568	movdqa	%xmm8,%xmm9
569	paddd	%xmm3,%xmm8
570	rorl	$7,%ebp
571	addl	%esi,%ecx
572	pxor	%xmm10,%xmm4
573	addl	4(%rsp),%ebx
574	xorl	%eax,%edi
575	movl	%ecx,%esi
576	roll	$5,%ecx
577	movdqa	%xmm4,%xmm10
578	movdqa	%xmm8,48(%rsp)
579	xorl	%ebp,%edi
580	addl	%ecx,%ebx
581	rorl	$7,%edx
582	addl	%edi,%ebx
583	pslld	$2,%xmm4
584	addl	8(%rsp),%eax
585	xorl	%ebp,%esi
586	psrld	$30,%xmm10
587	movl	%ebx,%edi
588	roll	$5,%ebx
589	xorl	%edx,%esi
590	addl	%ebx,%eax
591	rorl	$7,%ecx
592	addl	%esi,%eax
593	por	%xmm10,%xmm4
594	addl	12(%rsp),%ebp
595.byte	102,69,15,56,220,222
596	movups	160(%r15),%xmm15
597	xorl	%edx,%edi
598	movdqa	%xmm4,%xmm8
599	movl	%eax,%esi
600	roll	$5,%eax
601	xorl	%ecx,%edi
602	addl	%eax,%ebp
603	rorl	$7,%ebx
604	addl	%edi,%ebp
605	addl	16(%rsp),%edx
606	pxor	%xmm1,%xmm5
607.byte	102,68,15,58,15,195,8
608	xorl	%ecx,%esi
609	movl	%ebp,%edi
610	roll	$5,%ebp
611	pxor	%xmm6,%xmm5
612	xorl	%ebx,%esi
613	addl	%ebp,%edx
614	movdqa	%xmm9,%xmm10
615	paddd	%xmm4,%xmm9
616	rorl	$7,%eax
617	addl	%esi,%edx
618	pxor	%xmm8,%xmm5
619	addl	20(%rsp),%ecx
620	xorl	%ebx,%edi
621	movl	%edx,%esi
622	roll	$5,%edx
623	movdqa	%xmm5,%xmm8
624	movdqa	%xmm9,0(%rsp)
625	xorl	%eax,%edi
626	cmpl	$11,%r8d
627	jb	.Laesenclast2
628	movups	176(%r15),%xmm14
629.byte	102,69,15,56,220,223
630	movups	192(%r15),%xmm15
631.byte	102,69,15,56,220,222
632	je	.Laesenclast2
633	movups	208(%r15),%xmm14
634.byte	102,69,15,56,220,223
635	movups	224(%r15),%xmm15
636.byte	102,69,15,56,220,222
637.Laesenclast2:
638.byte	102,69,15,56,221,223
639	movups	16(%r15),%xmm14
640	addl	%edx,%ecx
641	rorl	$7,%ebp
642	addl	%edi,%ecx
643	pslld	$2,%xmm5
644	addl	24(%rsp),%ebx
645	xorl	%eax,%esi
646	psrld	$30,%xmm8
647	movl	%ecx,%edi
648	roll	$5,%ecx
649	xorl	%ebp,%esi
650	addl	%ecx,%ebx
651	rorl	$7,%edx
652	addl	%esi,%ebx
653	por	%xmm8,%xmm5
654	addl	28(%rsp),%eax
655	xorl	%ebp,%edi
656	movdqa	%xmm5,%xmm9
657	movl	%ebx,%esi
658	roll	$5,%ebx
659	xorl	%edx,%edi
660	addl	%ebx,%eax
661	rorl	$7,%ecx
662	addl	%edi,%eax
663	movl	%ecx,%edi
664	movups	32(%r12),%xmm12
665	xorps	%xmm13,%xmm12
666	movups	%xmm11,16(%r13,%r12,1)
667	xorps	%xmm12,%xmm11
668.byte	102,69,15,56,220,222
669	movups	32(%r15),%xmm15
670	pxor	%xmm2,%xmm6
671.byte	102,68,15,58,15,204,8
672	xorl	%edx,%ecx
673	addl	32(%rsp),%ebp
674	andl	%edx,%edi
675	pxor	%xmm7,%xmm6
676	andl	%ecx,%esi
677	rorl	$7,%ebx
678	movdqa	%xmm10,%xmm8
679	paddd	%xmm5,%xmm10
680	addl	%edi,%ebp
681	movl	%eax,%edi
682	pxor	%xmm9,%xmm6
683	roll	$5,%eax
684	addl	%esi,%ebp
685	xorl	%edx,%ecx
686	addl	%eax,%ebp
687	movdqa	%xmm6,%xmm9
688	movdqa	%xmm10,16(%rsp)
689	movl	%ebx,%esi
690	xorl	%ecx,%ebx
691	addl	36(%rsp),%edx
692	andl	%ecx,%esi
693	pslld	$2,%xmm6
694	andl	%ebx,%edi
695	rorl	$7,%eax
696	psrld	$30,%xmm9
697	addl	%esi,%edx
698	movl	%ebp,%esi
699	roll	$5,%ebp
700.byte	102,69,15,56,220,223
701	movups	48(%r15),%xmm14
702	addl	%edi,%edx
703	xorl	%ecx,%ebx
704	addl	%ebp,%edx
705	por	%xmm9,%xmm6
706	movl	%eax,%edi
707	xorl	%ebx,%eax
708	movdqa	%xmm6,%xmm10
709	addl	40(%rsp),%ecx
710	andl	%ebx,%edi
711	andl	%eax,%esi
712	rorl	$7,%ebp
713	addl	%edi,%ecx
714	movl	%edx,%edi
715	roll	$5,%edx
716	addl	%esi,%ecx
717	xorl	%ebx,%eax
718	addl	%edx,%ecx
719	movl	%ebp,%esi
720	xorl	%eax,%ebp
721	addl	44(%rsp),%ebx
722	andl	%eax,%esi
723	andl	%ebp,%edi
724.byte	102,69,15,56,220,222
725	movups	64(%r15),%xmm15
726	rorl	$7,%edx
727	addl	%esi,%ebx
728	movl	%ecx,%esi
729	roll	$5,%ecx
730	addl	%edi,%ebx
731	xorl	%eax,%ebp
732	addl	%ecx,%ebx
733	movl	%edx,%edi
734	pxor	%xmm3,%xmm7
735.byte	102,68,15,58,15,213,8
736	xorl	%ebp,%edx
737	addl	48(%rsp),%eax
738	andl	%ebp,%edi
739	pxor	%xmm0,%xmm7
740	andl	%edx,%esi
741	rorl	$7,%ecx
742	movdqa	48(%r11),%xmm9
743	paddd	%xmm6,%xmm8
744	addl	%edi,%eax
745	movl	%ebx,%edi
746	pxor	%xmm10,%xmm7
747	roll	$5,%ebx
748	addl	%esi,%eax
749	xorl	%ebp,%edx
750	addl	%ebx,%eax
751	movdqa	%xmm7,%xmm10
752	movdqa	%xmm8,32(%rsp)
753	movl	%ecx,%esi
754.byte	102,69,15,56,220,223
755	movups	80(%r15),%xmm14
756	xorl	%edx,%ecx
757	addl	52(%rsp),%ebp
758	andl	%edx,%esi
759	pslld	$2,%xmm7
760	andl	%ecx,%edi
761	rorl	$7,%ebx
762	psrld	$30,%xmm10
763	addl	%esi,%ebp
764	movl	%eax,%esi
765	roll	$5,%eax
766	addl	%edi,%ebp
767	xorl	%edx,%ecx
768	addl	%eax,%ebp
769	por	%xmm10,%xmm7
770	movl	%ebx,%edi
771	xorl	%ecx,%ebx
772	movdqa	%xmm7,%xmm8
773	addl	56(%rsp),%edx
774	andl	%ecx,%edi
775	andl	%ebx,%esi
776	rorl	$7,%eax
777	addl	%edi,%edx
778	movl	%ebp,%edi
779	roll	$5,%ebp
780.byte	102,69,15,56,220,222
781	movups	96(%r15),%xmm15
782	addl	%esi,%edx
783	xorl	%ecx,%ebx
784	addl	%ebp,%edx
785	movl	%eax,%esi
786	xorl	%ebx,%eax
787	addl	60(%rsp),%ecx
788	andl	%ebx,%esi
789	andl	%eax,%edi
790	rorl	$7,%ebp
791	addl	%esi,%ecx
792	movl	%edx,%esi
793	roll	$5,%edx
794	addl	%edi,%ecx
795	xorl	%ebx,%eax
796	addl	%edx,%ecx
797	movl	%ebp,%edi
798	pxor	%xmm4,%xmm0
799.byte	102,68,15,58,15,198,8
800	xorl	%eax,%ebp
801	addl	0(%rsp),%ebx
802	andl	%eax,%edi
803	pxor	%xmm1,%xmm0
804	andl	%ebp,%esi
805.byte	102,69,15,56,220,223
806	movups	112(%r15),%xmm14
807	rorl	$7,%edx
808	movdqa	%xmm9,%xmm10
809	paddd	%xmm7,%xmm9
810	addl	%edi,%ebx
811	movl	%ecx,%edi
812	pxor	%xmm8,%xmm0
813	roll	$5,%ecx
814	addl	%esi,%ebx
815	xorl	%eax,%ebp
816	addl	%ecx,%ebx
817	movdqa	%xmm0,%xmm8
818	movdqa	%xmm9,48(%rsp)
819	movl	%edx,%esi
820	xorl	%ebp,%edx
821	addl	4(%rsp),%eax
822	andl	%ebp,%esi
823	pslld	$2,%xmm0
824	andl	%edx,%edi
825	rorl	$7,%ecx
826	psrld	$30,%xmm8
827	addl	%esi,%eax
828	movl	%ebx,%esi
829	roll	$5,%ebx
830	addl	%edi,%eax
831	xorl	%ebp,%edx
832	addl	%ebx,%eax
833	por	%xmm8,%xmm0
834	movl	%ecx,%edi
835.byte	102,69,15,56,220,222
836	movups	128(%r15),%xmm15
837	xorl	%edx,%ecx
838	movdqa	%xmm0,%xmm9
839	addl	8(%rsp),%ebp
840	andl	%edx,%edi
841	andl	%ecx,%esi
842	rorl	$7,%ebx
843	addl	%edi,%ebp
844	movl	%eax,%edi
845	roll	$5,%eax
846	addl	%esi,%ebp
847	xorl	%edx,%ecx
848	addl	%eax,%ebp
849	movl	%ebx,%esi
850	xorl	%ecx,%ebx
851	addl	12(%rsp),%edx
852	andl	%ecx,%esi
853	andl	%ebx,%edi
854	rorl	$7,%eax
855	addl	%esi,%edx
856	movl	%ebp,%esi
857	roll	$5,%ebp
858.byte	102,69,15,56,220,223
859	movups	144(%r15),%xmm14
860	addl	%edi,%edx
861	xorl	%ecx,%ebx
862	addl	%ebp,%edx
863	movl	%eax,%edi
864	pxor	%xmm5,%xmm1
865.byte	102,68,15,58,15,207,8
866	xorl	%ebx,%eax
867	addl	16(%rsp),%ecx
868	andl	%ebx,%edi
869	pxor	%xmm2,%xmm1
870	andl	%eax,%esi
871	rorl	$7,%ebp
872	movdqa	%xmm10,%xmm8
873	paddd	%xmm0,%xmm10
874	addl	%edi,%ecx
875	movl	%edx,%edi
876	pxor	%xmm9,%xmm1
877	roll	$5,%edx
878	addl	%esi,%ecx
879	xorl	%ebx,%eax
880	addl	%edx,%ecx
881	movdqa	%xmm1,%xmm9
882	movdqa	%xmm10,0(%rsp)
883	movl	%ebp,%esi
884	xorl	%eax,%ebp
885	addl	20(%rsp),%ebx
886	andl	%eax,%esi
887	pslld	$2,%xmm1
888	andl	%ebp,%edi
889.byte	102,69,15,56,220,222
890	movups	160(%r15),%xmm15
891	rorl	$7,%edx
892	psrld	$30,%xmm9
893	addl	%esi,%ebx
894	movl	%ecx,%esi
895	roll	$5,%ecx
896	addl	%edi,%ebx
897	xorl	%eax,%ebp
898	addl	%ecx,%ebx
899	por	%xmm9,%xmm1
900	movl	%edx,%edi
901	xorl	%ebp,%edx
902	movdqa	%xmm1,%xmm10
903	addl	24(%rsp),%eax
904	andl	%ebp,%edi
905	andl	%edx,%esi
906	rorl	$7,%ecx
907	addl	%edi,%eax
908	movl	%ebx,%edi
909	roll	$5,%ebx
910	addl	%esi,%eax
911	xorl	%ebp,%edx
912	addl	%ebx,%eax
913	movl	%ecx,%esi
914	cmpl	$11,%r8d
915	jb	.Laesenclast3
916	movups	176(%r15),%xmm14
917.byte	102,69,15,56,220,223
918	movups	192(%r15),%xmm15
919.byte	102,69,15,56,220,222
920	je	.Laesenclast3
921	movups	208(%r15),%xmm14
922.byte	102,69,15,56,220,223
923	movups	224(%r15),%xmm15
924.byte	102,69,15,56,220,222
925.Laesenclast3:
926.byte	102,69,15,56,221,223
927	movups	16(%r15),%xmm14
928	xorl	%edx,%ecx
929	addl	28(%rsp),%ebp
930	andl	%edx,%esi
931	andl	%ecx,%edi
932	rorl	$7,%ebx
933	addl	%esi,%ebp
934	movl	%eax,%esi
935	roll	$5,%eax
936	addl	%edi,%ebp
937	xorl	%edx,%ecx
938	addl	%eax,%ebp
939	movl	%ebx,%edi
940	pxor	%xmm6,%xmm2
941.byte	102,68,15,58,15,208,8
942	xorl	%ecx,%ebx
943	addl	32(%rsp),%edx
944	andl	%ecx,%edi
945	pxor	%xmm3,%xmm2
946	andl	%ebx,%esi
947	rorl	$7,%eax
948	movdqa	%xmm8,%xmm9
949	paddd	%xmm1,%xmm8
950	addl	%edi,%edx
951	movl	%ebp,%edi
952	pxor	%xmm10,%xmm2
953	roll	$5,%ebp
954	movups	48(%r12),%xmm12
955	xorps	%xmm13,%xmm12
956	movups	%xmm11,32(%r13,%r12,1)
957	xorps	%xmm12,%xmm11
958.byte	102,69,15,56,220,222
959	movups	32(%r15),%xmm15
960	addl	%esi,%edx
961	xorl	%ecx,%ebx
962	addl	%ebp,%edx
963	movdqa	%xmm2,%xmm10
964	movdqa	%xmm8,16(%rsp)
965	movl	%eax,%esi
966	xorl	%ebx,%eax
967	addl	36(%rsp),%ecx
968	andl	%ebx,%esi
969	pslld	$2,%xmm2
970	andl	%eax,%edi
971	rorl	$7,%ebp
972	psrld	$30,%xmm10
973	addl	%esi,%ecx
974	movl	%edx,%esi
975	roll	$5,%edx
976	addl	%edi,%ecx
977	xorl	%ebx,%eax
978	addl	%edx,%ecx
979	por	%xmm10,%xmm2
980	movl	%ebp,%edi
981	xorl	%eax,%ebp
982	movdqa	%xmm2,%xmm8
983	addl	40(%rsp),%ebx
984	andl	%eax,%edi
985	andl	%ebp,%esi
986.byte	102,69,15,56,220,223
987	movups	48(%r15),%xmm14
988	rorl	$7,%edx
989	addl	%edi,%ebx
990	movl	%ecx,%edi
991	roll	$5,%ecx
992	addl	%esi,%ebx
993	xorl	%eax,%ebp
994	addl	%ecx,%ebx
995	movl	%edx,%esi
996	xorl	%ebp,%edx
997	addl	44(%rsp),%eax
998	andl	%ebp,%esi
999	andl	%edx,%edi
1000	rorl	$7,%ecx
1001	addl	%esi,%eax
1002	movl	%ebx,%esi
1003	roll	$5,%ebx
1004	addl	%edi,%eax
1005	xorl	%ebp,%edx
1006	addl	%ebx,%eax
1007	addl	48(%rsp),%ebp
1008.byte	102,69,15,56,220,222
1009	movups	64(%r15),%xmm15
1010	pxor	%xmm7,%xmm3
1011.byte	102,68,15,58,15,193,8
1012	xorl	%edx,%esi
1013	movl	%eax,%edi
1014	roll	$5,%eax
1015	pxor	%xmm4,%xmm3
1016	xorl	%ecx,%esi
1017	addl	%eax,%ebp
1018	movdqa	%xmm9,%xmm10
1019	paddd	%xmm2,%xmm9
1020	rorl	$7,%ebx
1021	addl	%esi,%ebp
1022	pxor	%xmm8,%xmm3
1023	addl	52(%rsp),%edx
1024	xorl	%ecx,%edi
1025	movl	%ebp,%esi
1026	roll	$5,%ebp
1027	movdqa	%xmm3,%xmm8
1028	movdqa	%xmm9,32(%rsp)
1029	xorl	%ebx,%edi
1030	addl	%ebp,%edx
1031	rorl	$7,%eax
1032	addl	%edi,%edx
1033	pslld	$2,%xmm3
1034	addl	56(%rsp),%ecx
1035	xorl	%ebx,%esi
1036	psrld	$30,%xmm8
1037	movl	%edx,%edi
1038	roll	$5,%edx
1039	xorl	%eax,%esi
1040.byte	102,69,15,56,220,223
1041	movups	80(%r15),%xmm14
1042	addl	%edx,%ecx
1043	rorl	$7,%ebp
1044	addl	%esi,%ecx
1045	por	%xmm8,%xmm3
1046	addl	60(%rsp),%ebx
1047	xorl	%eax,%edi
1048	movl	%ecx,%esi
1049	roll	$5,%ecx
1050	xorl	%ebp,%edi
1051	addl	%ecx,%ebx
1052	rorl	$7,%edx
1053	addl	%edi,%ebx
1054	addl	0(%rsp),%eax
1055	paddd	%xmm3,%xmm10
1056	xorl	%ebp,%esi
1057	movl	%ebx,%edi
1058	roll	$5,%ebx
1059	xorl	%edx,%esi
1060	movdqa	%xmm10,48(%rsp)
1061	addl	%ebx,%eax
1062	rorl	$7,%ecx
1063	addl	%esi,%eax
1064	addl	4(%rsp),%ebp
1065.byte	102,69,15,56,220,222
1066	movups	96(%r15),%xmm15
1067	xorl	%edx,%edi
1068	movl	%eax,%esi
1069	roll	$5,%eax
1070	xorl	%ecx,%edi
1071	addl	%eax,%ebp
1072	rorl	$7,%ebx
1073	addl	%edi,%ebp
1074	addl	8(%rsp),%edx
1075	xorl	%ecx,%esi
1076	movl	%ebp,%edi
1077	roll	$5,%ebp
1078	xorl	%ebx,%esi
1079	addl	%ebp,%edx
1080	rorl	$7,%eax
1081	addl	%esi,%edx
1082	addl	12(%rsp),%ecx
1083	xorl	%ebx,%edi
1084	movl	%edx,%esi
1085	roll	$5,%edx
1086	xorl	%eax,%edi
1087.byte	102,69,15,56,220,223
1088	movups	112(%r15),%xmm14
1089	addl	%edx,%ecx
1090	rorl	$7,%ebp
1091	addl	%edi,%ecx
1092	cmpq	%r14,%r10
1093	je	.Ldone_ssse3
1094	movdqa	64(%r11),%xmm6
1095	movdqa	0(%r11),%xmm9
1096	movdqu	0(%r10),%xmm0
1097	movdqu	16(%r10),%xmm1
1098	movdqu	32(%r10),%xmm2
1099	movdqu	48(%r10),%xmm3
1100.byte	102,15,56,0,198
1101	addq	$64,%r10
1102	addl	16(%rsp),%ebx
1103	xorl	%eax,%esi
1104.byte	102,15,56,0,206
1105	movl	%ecx,%edi
1106	roll	$5,%ecx
1107	paddd	%xmm9,%xmm0
1108	xorl	%ebp,%esi
1109	addl	%ecx,%ebx
1110	rorl	$7,%edx
1111	addl	%esi,%ebx
1112	movdqa	%xmm0,0(%rsp)
1113	addl	20(%rsp),%eax
1114	xorl	%ebp,%edi
1115	psubd	%xmm9,%xmm0
1116	movl	%ebx,%esi
1117	roll	$5,%ebx
1118	xorl	%edx,%edi
1119	addl	%ebx,%eax
1120	rorl	$7,%ecx
1121	addl	%edi,%eax
1122	addl	24(%rsp),%ebp
1123.byte	102,69,15,56,220,222
1124	movups	128(%r15),%xmm15
1125	xorl	%edx,%esi
1126	movl	%eax,%edi
1127	roll	$5,%eax
1128	xorl	%ecx,%esi
1129	addl	%eax,%ebp
1130	rorl	$7,%ebx
1131	addl	%esi,%ebp
1132	addl	28(%rsp),%edx
1133	xorl	%ecx,%edi
1134	movl	%ebp,%esi
1135	roll	$5,%ebp
1136	xorl	%ebx,%edi
1137	addl	%ebp,%edx
1138	rorl	$7,%eax
1139	addl	%edi,%edx
1140	addl	32(%rsp),%ecx
1141	xorl	%ebx,%esi
1142.byte	102,15,56,0,214
1143	movl	%edx,%edi
1144	roll	$5,%edx
1145	paddd	%xmm9,%xmm1
1146	xorl	%eax,%esi
1147.byte	102,69,15,56,220,223
1148	movups	144(%r15),%xmm14
1149	addl	%edx,%ecx
1150	rorl	$7,%ebp
1151	addl	%esi,%ecx
1152	movdqa	%xmm1,16(%rsp)
1153	addl	36(%rsp),%ebx
1154	xorl	%eax,%edi
1155	psubd	%xmm9,%xmm1
1156	movl	%ecx,%esi
1157	roll	$5,%ecx
1158	xorl	%ebp,%edi
1159	addl	%ecx,%ebx
1160	rorl	$7,%edx
1161	addl	%edi,%ebx
1162	addl	40(%rsp),%eax
1163	xorl	%ebp,%esi
1164	movl	%ebx,%edi
1165	roll	$5,%ebx
1166	xorl	%edx,%esi
1167	addl	%ebx,%eax
1168	rorl	$7,%ecx
1169	addl	%esi,%eax
1170	addl	44(%rsp),%ebp
1171.byte	102,69,15,56,220,222
1172	movups	160(%r15),%xmm15
1173	xorl	%edx,%edi
1174	movl	%eax,%esi
1175	roll	$5,%eax
1176	xorl	%ecx,%edi
1177	addl	%eax,%ebp
1178	rorl	$7,%ebx
1179	addl	%edi,%ebp
1180	addl	48(%rsp),%edx
1181	xorl	%ecx,%esi
1182.byte	102,15,56,0,222
1183	movl	%ebp,%edi
1184	roll	$5,%ebp
1185	paddd	%xmm9,%xmm2
1186	xorl	%ebx,%esi
1187	addl	%ebp,%edx
1188	rorl	$7,%eax
1189	addl	%esi,%edx
1190	movdqa	%xmm2,32(%rsp)
1191	addl	52(%rsp),%ecx
1192	xorl	%ebx,%edi
1193	psubd	%xmm9,%xmm2
1194	movl	%edx,%esi
1195	roll	$5,%edx
1196	xorl	%eax,%edi
1197	cmpl	$11,%r8d
1198	jb	.Laesenclast4
1199	movups	176(%r15),%xmm14
1200.byte	102,69,15,56,220,223
1201	movups	192(%r15),%xmm15
1202.byte	102,69,15,56,220,222
1203	je	.Laesenclast4
1204	movups	208(%r15),%xmm14
1205.byte	102,69,15,56,220,223
1206	movups	224(%r15),%xmm15
1207.byte	102,69,15,56,220,222
1208.Laesenclast4:
1209.byte	102,69,15,56,221,223
1210	movups	16(%r15),%xmm14
1211	addl	%edx,%ecx
1212	rorl	$7,%ebp
1213	addl	%edi,%ecx
1214	addl	56(%rsp),%ebx
1215	xorl	%eax,%esi
1216	movl	%ecx,%edi
1217	roll	$5,%ecx
1218	xorl	%ebp,%esi
1219	addl	%ecx,%ebx
1220	rorl	$7,%edx
1221	addl	%esi,%ebx
1222	addl	60(%rsp),%eax
1223	xorl	%ebp,%edi
1224	movl	%ebx,%esi
1225	roll	$5,%ebx
1226	xorl	%edx,%edi
1227	addl	%ebx,%eax
1228	rorl	$7,%ecx
1229	addl	%edi,%eax
1230	movups	%xmm11,48(%r13,%r12,1)
1231	leaq	64(%r12),%r12
1232
1233	addl	0(%r9),%eax
1234	addl	4(%r9),%esi
1235	addl	8(%r9),%ecx
1236	addl	12(%r9),%edx
1237	movl	%eax,0(%r9)
1238	addl	16(%r9),%ebp
1239	movl	%esi,4(%r9)
1240	movl	%esi,%ebx
1241	movl	%ecx,8(%r9)
1242	movl	%edx,12(%r9)
1243	movl	%ebp,16(%r9)
1244	jmp	.Loop_ssse3
1245
1246.align	16
1247.Ldone_ssse3:
1248	addl	16(%rsp),%ebx
1249	xorl	%eax,%esi
1250	movl	%ecx,%edi
1251	roll	$5,%ecx
1252	xorl	%ebp,%esi
1253	addl	%ecx,%ebx
1254	rorl	$7,%edx
1255	addl	%esi,%ebx
1256	addl	20(%rsp),%eax
1257	xorl	%ebp,%edi
1258	movl	%ebx,%esi
1259	roll	$5,%ebx
1260	xorl	%edx,%edi
1261	addl	%ebx,%eax
1262	rorl	$7,%ecx
1263	addl	%edi,%eax
1264	addl	24(%rsp),%ebp
1265.byte	102,69,15,56,220,222
1266	movups	128(%r15),%xmm15
1267	xorl	%edx,%esi
1268	movl	%eax,%edi
1269	roll	$5,%eax
1270	xorl	%ecx,%esi
1271	addl	%eax,%ebp
1272	rorl	$7,%ebx
1273	addl	%esi,%ebp
1274	addl	28(%rsp),%edx
1275	xorl	%ecx,%edi
1276	movl	%ebp,%esi
1277	roll	$5,%ebp
1278	xorl	%ebx,%edi
1279	addl	%ebp,%edx
1280	rorl	$7,%eax
1281	addl	%edi,%edx
1282	addl	32(%rsp),%ecx
1283	xorl	%ebx,%esi
1284	movl	%edx,%edi
1285	roll	$5,%edx
1286	xorl	%eax,%esi
1287.byte	102,69,15,56,220,223
1288	movups	144(%r15),%xmm14
1289	addl	%edx,%ecx
1290	rorl	$7,%ebp
1291	addl	%esi,%ecx
1292	addl	36(%rsp),%ebx
1293	xorl	%eax,%edi
1294	movl	%ecx,%esi
1295	roll	$5,%ecx
1296	xorl	%ebp,%edi
1297	addl	%ecx,%ebx
1298	rorl	$7,%edx
1299	addl	%edi,%ebx
1300	addl	40(%rsp),%eax
1301	xorl	%ebp,%esi
1302	movl	%ebx,%edi
1303	roll	$5,%ebx
1304	xorl	%edx,%esi
1305	addl	%ebx,%eax
1306	rorl	$7,%ecx
1307	addl	%esi,%eax
1308	addl	44(%rsp),%ebp
1309.byte	102,69,15,56,220,222
1310	movups	160(%r15),%xmm15
1311	xorl	%edx,%edi
1312	movl	%eax,%esi
1313	roll	$5,%eax
1314	xorl	%ecx,%edi
1315	addl	%eax,%ebp
1316	rorl	$7,%ebx
1317	addl	%edi,%ebp
1318	addl	48(%rsp),%edx
1319	xorl	%ecx,%esi
1320	movl	%ebp,%edi
1321	roll	$5,%ebp
1322	xorl	%ebx,%esi
1323	addl	%ebp,%edx
1324	rorl	$7,%eax
1325	addl	%esi,%edx
1326	addl	52(%rsp),%ecx
1327	xorl	%ebx,%edi
1328	movl	%edx,%esi
1329	roll	$5,%edx
1330	xorl	%eax,%edi
1331	cmpl	$11,%r8d
1332	jb	.Laesenclast5
1333	movups	176(%r15),%xmm14
1334.byte	102,69,15,56,220,223
1335	movups	192(%r15),%xmm15
1336.byte	102,69,15,56,220,222
1337	je	.Laesenclast5
1338	movups	208(%r15),%xmm14
1339.byte	102,69,15,56,220,223
1340	movups	224(%r15),%xmm15
1341.byte	102,69,15,56,220,222
1342.Laesenclast5:
1343.byte	102,69,15,56,221,223
1344	movups	16(%r15),%xmm14
1345	addl	%edx,%ecx
1346	rorl	$7,%ebp
1347	addl	%edi,%ecx
1348	addl	56(%rsp),%ebx
1349	xorl	%eax,%esi
1350	movl	%ecx,%edi
1351	roll	$5,%ecx
1352	xorl	%ebp,%esi
1353	addl	%ecx,%ebx
1354	rorl	$7,%edx
1355	addl	%esi,%ebx
1356	addl	60(%rsp),%eax
1357	xorl	%ebp,%edi
1358	movl	%ebx,%esi
1359	roll	$5,%ebx
1360	xorl	%edx,%edi
1361	addl	%ebx,%eax
1362	rorl	$7,%ecx
1363	addl	%edi,%eax
1364	movups	%xmm11,48(%r13,%r12,1)
1365	movq	88(%rsp),%r8
1366
1367	addl	0(%r9),%eax
1368	addl	4(%r9),%esi
1369	addl	8(%r9),%ecx
1370	movl	%eax,0(%r9)
1371	addl	12(%r9),%edx
1372	movl	%esi,4(%r9)
1373	addl	16(%r9),%ebp
1374	movl	%ecx,8(%r9)
1375	movl	%edx,12(%r9)
1376	movl	%ebp,16(%r9)
1377	movups	%xmm11,(%r8)
1378	leaq	104(%rsp),%rsi
1379	movq	0(%rsi),%r15
1380	movq	8(%rsi),%r14
1381	movq	16(%rsi),%r13
1382	movq	24(%rsi),%r12
1383	movq	32(%rsi),%rbp
1384	movq	40(%rsi),%rbx
1385	leaq	48(%rsi),%rsp
1386.Lepilogue_ssse3:
1387	.byte	0xf3,0xc3
1388.size	aesni_cbc_sha1_enc_ssse3,.-aesni_cbc_sha1_enc_ssse3
1389.type	aesni_cbc_sha1_enc_avx,@function
1390.align	16
1391aesni_cbc_sha1_enc_avx:
1392	movq	8(%rsp),%r10
1393
1394
1395	pushq	%rbx
1396	pushq	%rbp
1397	pushq	%r12
1398	pushq	%r13
1399	pushq	%r14
1400	pushq	%r15
1401	leaq	-104(%rsp),%rsp
1402
1403
1404	vzeroall
1405	movq	%rdi,%r12
1406	movq	%rsi,%r13
1407	movq	%rdx,%r14
1408	movq	%rcx,%r15
1409	vmovdqu	(%r8),%xmm11
1410	movq	%r8,88(%rsp)
1411	shlq	$6,%r14
1412	subq	%r12,%r13
1413	movl	240(%r15),%r8d
1414	addq	$112,%r15
1415	addq	%r10,%r14
1416
1417	leaq	K_XX_XX(%rip),%r11
1418	movl	0(%r9),%eax
1419	movl	4(%r9),%ebx
1420	movl	8(%r9),%ecx
1421	movl	12(%r9),%edx
1422	movl	%ebx,%esi
1423	movl	16(%r9),%ebp
1424
1425	vmovdqa	64(%r11),%xmm6
1426	vmovdqa	0(%r11),%xmm9
1427	vmovdqu	0(%r10),%xmm0
1428	vmovdqu	16(%r10),%xmm1
1429	vmovdqu	32(%r10),%xmm2
1430	vmovdqu	48(%r10),%xmm3
1431	vpshufb	%xmm6,%xmm0,%xmm0
1432	addq	$64,%r10
1433	vpshufb	%xmm6,%xmm1,%xmm1
1434	vpshufb	%xmm6,%xmm2,%xmm2
1435	vpshufb	%xmm6,%xmm3,%xmm3
1436	vpaddd	%xmm9,%xmm0,%xmm4
1437	vpaddd	%xmm9,%xmm1,%xmm5
1438	vpaddd	%xmm9,%xmm2,%xmm6
1439	vmovdqa	%xmm4,0(%rsp)
1440	vmovdqa	%xmm5,16(%rsp)
1441	vmovdqa	%xmm6,32(%rsp)
1442	vmovups	-112(%r15),%xmm13
1443	vmovups	16-112(%r15),%xmm14
1444	jmp	.Loop_avx
1445.align	16
1446.Loop_avx:
1447	addl	0(%rsp),%ebp
1448	vmovups	0(%r12),%xmm12
1449	vxorps	%xmm13,%xmm12,%xmm12
1450	vxorps	%xmm12,%xmm11,%xmm11
1451	vaesenc	%xmm14,%xmm11,%xmm11
1452	vmovups	-80(%r15),%xmm15
1453	xorl	%edx,%ecx
1454	vpalignr	$8,%xmm0,%xmm1,%xmm4
1455	movl	%eax,%edi
1456	shldl	$5,%eax,%eax
1457	vpaddd	%xmm3,%xmm9,%xmm9
1458	andl	%ecx,%esi
1459	xorl	%edx,%ecx
1460	vpsrldq	$4,%xmm3,%xmm8
1461	xorl	%edx,%esi
1462	addl	%eax,%ebp
1463	vpxor	%xmm0,%xmm4,%xmm4
1464	shrdl	$2,%ebx,%ebx
1465	addl	%esi,%ebp
1466	vpxor	%xmm2,%xmm8,%xmm8
1467	addl	4(%rsp),%edx
1468	xorl	%ecx,%ebx
1469	movl	%ebp,%esi
1470	shldl	$5,%ebp,%ebp
1471	vpxor	%xmm8,%xmm4,%xmm4
1472	andl	%ebx,%edi
1473	xorl	%ecx,%ebx
1474	vmovdqa	%xmm9,48(%rsp)
1475	xorl	%ecx,%edi
1476	vaesenc	%xmm15,%xmm11,%xmm11
1477	vmovups	-64(%r15),%xmm14
1478	addl	%ebp,%edx
1479	vpsrld	$31,%xmm4,%xmm8
1480	shrdl	$7,%eax,%eax
1481	addl	%edi,%edx
1482	addl	8(%rsp),%ecx
1483	xorl	%ebx,%eax
1484	vpslldq	$12,%xmm4,%xmm10
1485	vpaddd	%xmm4,%xmm4,%xmm4
1486	movl	%edx,%edi
1487	shldl	$5,%edx,%edx
1488	andl	%eax,%esi
1489	xorl	%ebx,%eax
1490	vpsrld	$30,%xmm10,%xmm9
1491	vpor	%xmm8,%xmm4,%xmm4
1492	xorl	%ebx,%esi
1493	addl	%edx,%ecx
1494	shrdl	$7,%ebp,%ebp
1495	addl	%esi,%ecx
1496	vpslld	$2,%xmm10,%xmm10
1497	vpxor	%xmm9,%xmm4,%xmm4
1498	addl	12(%rsp),%ebx
1499	xorl	%eax,%ebp
1500	movl	%ecx,%esi
1501	shldl	$5,%ecx,%ecx
1502	vaesenc	%xmm14,%xmm11,%xmm11
1503	vmovups	-48(%r15),%xmm15
1504	vpxor	%xmm10,%xmm4,%xmm4
1505	andl	%ebp,%edi
1506	xorl	%eax,%ebp
1507	vmovdqa	0(%r11),%xmm10
1508	xorl	%eax,%edi
1509	addl	%ecx,%ebx
1510	shrdl	$7,%edx,%edx
1511	addl	%edi,%ebx
1512	addl	16(%rsp),%eax
1513	xorl	%ebp,%edx
1514	vpalignr	$8,%xmm1,%xmm2,%xmm5
1515	movl	%ebx,%edi
1516	shldl	$5,%ebx,%ebx
1517	vpaddd	%xmm4,%xmm10,%xmm10
1518	andl	%edx,%esi
1519	xorl	%ebp,%edx
1520	vpsrldq	$4,%xmm4,%xmm9
1521	xorl	%ebp,%esi
1522	addl	%ebx,%eax
1523	vpxor	%xmm1,%xmm5,%xmm5
1524	shrdl	$7,%ecx,%ecx
1525	addl	%esi,%eax
1526	vpxor	%xmm3,%xmm9,%xmm9
1527	addl	20(%rsp),%ebp
1528	vaesenc	%xmm15,%xmm11,%xmm11
1529	vmovups	-32(%r15),%xmm14
1530	xorl	%edx,%ecx
1531	movl	%eax,%esi
1532	shldl	$5,%eax,%eax
1533	vpxor	%xmm9,%xmm5,%xmm5
1534	andl	%ecx,%edi
1535	xorl	%edx,%ecx
1536	vmovdqa	%xmm10,0(%rsp)
1537	xorl	%edx,%edi
1538	addl	%eax,%ebp
1539	vpsrld	$31,%xmm5,%xmm9
1540	shrdl	$7,%ebx,%ebx
1541	addl	%edi,%ebp
1542	addl	24(%rsp),%edx
1543	xorl	%ecx,%ebx
1544	vpslldq	$12,%xmm5,%xmm8
1545	vpaddd	%xmm5,%xmm5,%xmm5
1546	movl	%ebp,%edi
1547	shldl	$5,%ebp,%ebp
1548	andl	%ebx,%esi
1549	xorl	%ecx,%ebx
1550	vpsrld	$30,%xmm8,%xmm10
1551	vpor	%xmm9,%xmm5,%xmm5
1552	xorl	%ecx,%esi
1553	vaesenc	%xmm14,%xmm11,%xmm11
1554	vmovups	-16(%r15),%xmm15
1555	addl	%ebp,%edx
1556	shrdl	$7,%eax,%eax
1557	addl	%esi,%edx
1558	vpslld	$2,%xmm8,%xmm8
1559	vpxor	%xmm10,%xmm5,%xmm5
1560	addl	28(%rsp),%ecx
1561	xorl	%ebx,%eax
1562	movl	%edx,%esi
1563	shldl	$5,%edx,%edx
1564	vpxor	%xmm8,%xmm5,%xmm5
1565	andl	%eax,%edi
1566	xorl	%ebx,%eax
1567	vmovdqa	16(%r11),%xmm8
1568	xorl	%ebx,%edi
1569	addl	%edx,%ecx
1570	shrdl	$7,%ebp,%ebp
1571	addl	%edi,%ecx
1572	addl	32(%rsp),%ebx
1573	xorl	%eax,%ebp
1574	vpalignr	$8,%xmm2,%xmm3,%xmm6
1575	movl	%ecx,%edi
1576	shldl	$5,%ecx,%ecx
1577	vaesenc	%xmm15,%xmm11,%xmm11
1578	vmovups	0(%r15),%xmm14
1579	vpaddd	%xmm5,%xmm8,%xmm8
1580	andl	%ebp,%esi
1581	xorl	%eax,%ebp
1582	vpsrldq	$4,%xmm5,%xmm10
1583	xorl	%eax,%esi
1584	addl	%ecx,%ebx
1585	vpxor	%xmm2,%xmm6,%xmm6
1586	shrdl	$7,%edx,%edx
1587	addl	%esi,%ebx
1588	vpxor	%xmm4,%xmm10,%xmm10
1589	addl	36(%rsp),%eax
1590	xorl	%ebp,%edx
1591	movl	%ebx,%esi
1592	shldl	$5,%ebx,%ebx
1593	vpxor	%xmm10,%xmm6,%xmm6
1594	andl	%edx,%edi
1595	xorl	%ebp,%edx
1596	vmovdqa	%xmm8,16(%rsp)
1597	xorl	%ebp,%edi
1598	addl	%ebx,%eax
1599	vpsrld	$31,%xmm6,%xmm10
1600	shrdl	$7,%ecx,%ecx
1601	addl	%edi,%eax
1602	addl	40(%rsp),%ebp
1603	vaesenc	%xmm14,%xmm11,%xmm11
1604	vmovups	16(%r15),%xmm15
1605	xorl	%edx,%ecx
1606	vpslldq	$12,%xmm6,%xmm9
1607	vpaddd	%xmm6,%xmm6,%xmm6
1608	movl	%eax,%edi
1609	shldl	$5,%eax,%eax
1610	andl	%ecx,%esi
1611	xorl	%edx,%ecx
1612	vpsrld	$30,%xmm9,%xmm8
1613	vpor	%xmm10,%xmm6,%xmm6
1614	xorl	%edx,%esi
1615	addl	%eax,%ebp
1616	shrdl	$7,%ebx,%ebx
1617	addl	%esi,%ebp
1618	vpslld	$2,%xmm9,%xmm9
1619	vpxor	%xmm8,%xmm6,%xmm6
1620	addl	44(%rsp),%edx
1621	xorl	%ecx,%ebx
1622	movl	%ebp,%esi
1623	shldl	$5,%ebp,%ebp
1624	vpxor	%xmm9,%xmm6,%xmm6
1625	andl	%ebx,%edi
1626	xorl	%ecx,%ebx
1627	vmovdqa	16(%r11),%xmm9
1628	xorl	%ecx,%edi
1629	vaesenc	%xmm15,%xmm11,%xmm11
1630	vmovups	32(%r15),%xmm14
1631	addl	%ebp,%edx
1632	shrdl	$7,%eax,%eax
1633	addl	%edi,%edx
1634	addl	48(%rsp),%ecx
1635	xorl	%ebx,%eax
1636	vpalignr	$8,%xmm3,%xmm4,%xmm7
1637	movl	%edx,%edi
1638	shldl	$5,%edx,%edx
1639	vpaddd	%xmm6,%xmm9,%xmm9
1640	andl	%eax,%esi
1641	xorl	%ebx,%eax
1642	vpsrldq	$4,%xmm6,%xmm8
1643	xorl	%ebx,%esi
1644	addl	%edx,%ecx
1645	vpxor	%xmm3,%xmm7,%xmm7
1646	shrdl	$7,%ebp,%ebp
1647	addl	%esi,%ecx
1648	vpxor	%xmm5,%xmm8,%xmm8
1649	addl	52(%rsp),%ebx
1650	xorl	%eax,%ebp
1651	movl	%ecx,%esi
1652	shldl	$5,%ecx,%ecx
1653	vaesenc	%xmm14,%xmm11,%xmm11
1654	vmovups	48(%r15),%xmm15
1655	vpxor	%xmm8,%xmm7,%xmm7
1656	andl	%ebp,%edi
1657	xorl	%eax,%ebp
1658	vmovdqa	%xmm9,32(%rsp)
1659	xorl	%eax,%edi
1660	addl	%ecx,%ebx
1661	vpsrld	$31,%xmm7,%xmm8
1662	shrdl	$7,%edx,%edx
1663	addl	%edi,%ebx
1664	addl	56(%rsp),%eax
1665	xorl	%ebp,%edx
1666	vpslldq	$12,%xmm7,%xmm10
1667	vpaddd	%xmm7,%xmm7,%xmm7
1668	movl	%ebx,%edi
1669	shldl	$5,%ebx,%ebx
1670	andl	%edx,%esi
1671	xorl	%ebp,%edx
1672	vpsrld	$30,%xmm10,%xmm9
1673	vpor	%xmm8,%xmm7,%xmm7
1674	xorl	%ebp,%esi
1675	addl	%ebx,%eax
1676	shrdl	$7,%ecx,%ecx
1677	addl	%esi,%eax
1678	vpslld	$2,%xmm10,%xmm10
1679	vpxor	%xmm9,%xmm7,%xmm7
1680	addl	60(%rsp),%ebp
1681	cmpl	$11,%r8d
1682	jb	.Lvaesenclast1
1683	vaesenc	%xmm15,%xmm11,%xmm11
1684	vmovups	64(%r15),%xmm14
1685	vaesenc	%xmm14,%xmm11,%xmm11
1686	vmovups	80(%r15),%xmm15
1687	je	.Lvaesenclast1
1688	vaesenc	%xmm15,%xmm11,%xmm11
1689	vmovups	96(%r15),%xmm14
1690	vaesenc	%xmm14,%xmm11,%xmm11
1691	vmovups	112(%r15),%xmm15
1692.Lvaesenclast1:
1693	vaesenclast	%xmm15,%xmm11,%xmm11
1694	vmovups	16-112(%r15),%xmm14
1695	xorl	%edx,%ecx
1696	movl	%eax,%esi
1697	shldl	$5,%eax,%eax
1698	vpxor	%xmm10,%xmm7,%xmm7
1699	andl	%ecx,%edi
1700	xorl	%edx,%ecx
1701	vmovdqa	16(%r11),%xmm10
1702	xorl	%edx,%edi
1703	addl	%eax,%ebp
1704	shrdl	$7,%ebx,%ebx
1705	addl	%edi,%ebp
1706	vpalignr	$8,%xmm6,%xmm7,%xmm9
1707	vpxor	%xmm4,%xmm0,%xmm0
1708	addl	0(%rsp),%edx
1709	xorl	%ecx,%ebx
1710	movl	%ebp,%edi
1711	shldl	$5,%ebp,%ebp
1712	vpxor	%xmm1,%xmm0,%xmm0
1713	andl	%ebx,%esi
1714	xorl	%ecx,%ebx
1715	vmovdqa	%xmm10,%xmm8
1716	vpaddd	%xmm7,%xmm10,%xmm10
1717	xorl	%ecx,%esi
1718	vmovups	16(%r12),%xmm12
1719	vxorps	%xmm13,%xmm12,%xmm12
1720	vmovups	%xmm11,0(%r13,%r12,1)
1721	vxorps	%xmm12,%xmm11,%xmm11
1722	vaesenc	%xmm14,%xmm11,%xmm11
1723	vmovups	-80(%r15),%xmm15
1724	addl	%ebp,%edx
1725	vpxor	%xmm9,%xmm0,%xmm0
1726	shrdl	$7,%eax,%eax
1727	addl	%esi,%edx
1728	addl	4(%rsp),%ecx
1729	xorl	%ebx,%eax
1730	vpsrld	$30,%xmm0,%xmm9
1731	vmovdqa	%xmm10,48(%rsp)
1732	movl	%edx,%esi
1733	shldl	$5,%edx,%edx
1734	andl	%eax,%edi
1735	xorl	%ebx,%eax
1736	vpslld	$2,%xmm0,%xmm0
1737	xorl	%ebx,%edi
1738	addl	%edx,%ecx
1739	shrdl	$7,%ebp,%ebp
1740	addl	%edi,%ecx
1741	addl	8(%rsp),%ebx
1742	xorl	%eax,%ebp
1743	movl	%ecx,%edi
1744	shldl	$5,%ecx,%ecx
1745	vaesenc	%xmm15,%xmm11,%xmm11
1746	vmovups	-64(%r15),%xmm14
1747	vpor	%xmm9,%xmm0,%xmm0
1748	andl	%ebp,%esi
1749	xorl	%eax,%ebp
1750	vmovdqa	%xmm0,%xmm10
1751	xorl	%eax,%esi
1752	addl	%ecx,%ebx
1753	shrdl	$7,%edx,%edx
1754	addl	%esi,%ebx
1755	addl	12(%rsp),%eax
1756	xorl	%ebp,%edx
1757	movl	%ebx,%esi
1758	shldl	$5,%ebx,%ebx
1759	andl	%edx,%edi
1760	xorl	%ebp,%edx
1761	xorl	%ebp,%edi
1762	addl	%ebx,%eax
1763	shrdl	$7,%ecx,%ecx
1764	addl	%edi,%eax
1765	vpalignr	$8,%xmm7,%xmm0,%xmm10
1766	vpxor	%xmm5,%xmm1,%xmm1
1767	addl	16(%rsp),%ebp
1768	vaesenc	%xmm14,%xmm11,%xmm11
1769	vmovups	-48(%r15),%xmm15
1770	xorl	%edx,%esi
1771	movl	%eax,%edi
1772	shldl	$5,%eax,%eax
1773	vpxor	%xmm2,%xmm1,%xmm1
1774	xorl	%ecx,%esi
1775	addl	%eax,%ebp
1776	vmovdqa	%xmm8,%xmm9
1777	vpaddd	%xmm0,%xmm8,%xmm8
1778	shrdl	$7,%ebx,%ebx
1779	addl	%esi,%ebp
1780	vpxor	%xmm10,%xmm1,%xmm1
1781	addl	20(%rsp),%edx
1782	xorl	%ecx,%edi
1783	movl	%ebp,%esi
1784	shldl	$5,%ebp,%ebp
1785	vpsrld	$30,%xmm1,%xmm10
1786	vmovdqa	%xmm8,0(%rsp)
1787	xorl	%ebx,%edi
1788	addl	%ebp,%edx
1789	shrdl	$7,%eax,%eax
1790	addl	%edi,%edx
1791	vpslld	$2,%xmm1,%xmm1
1792	addl	24(%rsp),%ecx
1793	xorl	%ebx,%esi
1794	movl	%edx,%edi
1795	shldl	$5,%edx,%edx
1796	xorl	%eax,%esi
1797	vaesenc	%xmm15,%xmm11,%xmm11
1798	vmovups	-32(%r15),%xmm14
1799	addl	%edx,%ecx
1800	shrdl	$7,%ebp,%ebp
1801	addl	%esi,%ecx
1802	vpor	%xmm10,%xmm1,%xmm1
1803	addl	28(%rsp),%ebx
1804	xorl	%eax,%edi
1805	vmovdqa	%xmm1,%xmm8
1806	movl	%ecx,%esi
1807	shldl	$5,%ecx,%ecx
1808	xorl	%ebp,%edi
1809	addl	%ecx,%ebx
1810	shrdl	$7,%edx,%edx
1811	addl	%edi,%ebx
1812	vpalignr	$8,%xmm0,%xmm1,%xmm8
1813	vpxor	%xmm6,%xmm2,%xmm2
1814	addl	32(%rsp),%eax
1815	xorl	%ebp,%esi
1816	movl	%ebx,%edi
1817	shldl	$5,%ebx,%ebx
1818	vpxor	%xmm3,%xmm2,%xmm2
1819	xorl	%edx,%esi
1820	addl	%ebx,%eax
1821	vmovdqa	32(%r11),%xmm10
1822	vpaddd	%xmm1,%xmm9,%xmm9
1823	shrdl	$7,%ecx,%ecx
1824	addl	%esi,%eax
1825	vpxor	%xmm8,%xmm2,%xmm2
1826	addl	36(%rsp),%ebp
1827	vaesenc	%xmm14,%xmm11,%xmm11
1828	vmovups	-16(%r15),%xmm15
1829	xorl	%edx,%edi
1830	movl	%eax,%esi
1831	shldl	$5,%eax,%eax
1832	vpsrld	$30,%xmm2,%xmm8
1833	vmovdqa	%xmm9,16(%rsp)
1834	xorl	%ecx,%edi
1835	addl	%eax,%ebp
1836	shrdl	$7,%ebx,%ebx
1837	addl	%edi,%ebp
1838	vpslld	$2,%xmm2,%xmm2
1839	addl	40(%rsp),%edx
1840	xorl	%ecx,%esi
1841	movl	%ebp,%edi
1842	shldl	$5,%ebp,%ebp
1843	xorl	%ebx,%esi
1844	addl	%ebp,%edx
1845	shrdl	$7,%eax,%eax
1846	addl	%esi,%edx
1847	vpor	%xmm8,%xmm2,%xmm2
1848	addl	44(%rsp),%ecx
1849	xorl	%ebx,%edi
1850	vmovdqa	%xmm2,%xmm9
1851	movl	%edx,%esi
1852	shldl	$5,%edx,%edx
1853	xorl	%eax,%edi
1854	vaesenc	%xmm15,%xmm11,%xmm11
1855	vmovups	0(%r15),%xmm14
1856	addl	%edx,%ecx
1857	shrdl	$7,%ebp,%ebp
1858	addl	%edi,%ecx
1859	vpalignr	$8,%xmm1,%xmm2,%xmm9
1860	vpxor	%xmm7,%xmm3,%xmm3
1861	addl	48(%rsp),%ebx
1862	xorl	%eax,%esi
1863	movl	%ecx,%edi
1864	shldl	$5,%ecx,%ecx
1865	vpxor	%xmm4,%xmm3,%xmm3
1866	xorl	%ebp,%esi
1867	addl	%ecx,%ebx
1868	vmovdqa	%xmm10,%xmm8
1869	vpaddd	%xmm2,%xmm10,%xmm10
1870	shrdl	$7,%edx,%edx
1871	addl	%esi,%ebx
1872	vpxor	%xmm9,%xmm3,%xmm3
1873	addl	52(%rsp),%eax
1874	xorl	%ebp,%edi
1875	movl	%ebx,%esi
1876	shldl	$5,%ebx,%ebx
1877	vpsrld	$30,%xmm3,%xmm9
1878	vmovdqa	%xmm10,32(%rsp)
1879	xorl	%edx,%edi
1880	addl	%ebx,%eax
1881	shrdl	$7,%ecx,%ecx
1882	addl	%edi,%eax
1883	vpslld	$2,%xmm3,%xmm3
1884	addl	56(%rsp),%ebp
1885	vaesenc	%xmm14,%xmm11,%xmm11
1886	vmovups	16(%r15),%xmm15
1887	xorl	%edx,%esi
1888	movl	%eax,%edi
1889	shldl	$5,%eax,%eax
1890	xorl	%ecx,%esi
1891	addl	%eax,%ebp
1892	shrdl	$7,%ebx,%ebx
1893	addl	%esi,%ebp
1894	vpor	%xmm9,%xmm3,%xmm3
1895	addl	60(%rsp),%edx
1896	xorl	%ecx,%edi
1897	vmovdqa	%xmm3,%xmm10
1898	movl	%ebp,%esi
1899	shldl	$5,%ebp,%ebp
1900	xorl	%ebx,%edi
1901	addl	%ebp,%edx
1902	shrdl	$7,%eax,%eax
1903	addl	%edi,%edx
1904	vpalignr	$8,%xmm2,%xmm3,%xmm10
1905	vpxor	%xmm0,%xmm4,%xmm4
1906	addl	0(%rsp),%ecx
1907	xorl	%ebx,%esi
1908	movl	%edx,%edi
1909	shldl	$5,%edx,%edx
1910	vpxor	%xmm5,%xmm4,%xmm4
1911	xorl	%eax,%esi
1912	vaesenc	%xmm15,%xmm11,%xmm11
1913	vmovups	32(%r15),%xmm14
1914	addl	%edx,%ecx
1915	vmovdqa	%xmm8,%xmm9
1916	vpaddd	%xmm3,%xmm8,%xmm8
1917	shrdl	$7,%ebp,%ebp
1918	addl	%esi,%ecx
1919	vpxor	%xmm10,%xmm4,%xmm4
1920	addl	4(%rsp),%ebx
1921	xorl	%eax,%edi
1922	movl	%ecx,%esi
1923	shldl	$5,%ecx,%ecx
1924	vpsrld	$30,%xmm4,%xmm10
1925	vmovdqa	%xmm8,48(%rsp)
1926	xorl	%ebp,%edi
1927	addl	%ecx,%ebx
1928	shrdl	$7,%edx,%edx
1929	addl	%edi,%ebx
1930	vpslld	$2,%xmm4,%xmm4
1931	addl	8(%rsp),%eax
1932	xorl	%ebp,%esi
1933	movl	%ebx,%edi
1934	shldl	$5,%ebx,%ebx
1935	xorl	%edx,%esi
1936	addl	%ebx,%eax
1937	shrdl	$7,%ecx,%ecx
1938	addl	%esi,%eax
1939	vpor	%xmm10,%xmm4,%xmm4
1940	addl	12(%rsp),%ebp
1941	vaesenc	%xmm14,%xmm11,%xmm11
1942	vmovups	48(%r15),%xmm15
1943	xorl	%edx,%edi
1944	vmovdqa	%xmm4,%xmm8
1945	movl	%eax,%esi
1946	shldl	$5,%eax,%eax
1947	xorl	%ecx,%edi
1948	addl	%eax,%ebp
1949	shrdl	$7,%ebx,%ebx
1950	addl	%edi,%ebp
1951	vpalignr	$8,%xmm3,%xmm4,%xmm8
1952	vpxor	%xmm1,%xmm5,%xmm5
1953	addl	16(%rsp),%edx
1954	xorl	%ecx,%esi
1955	movl	%ebp,%edi
1956	shldl	$5,%ebp,%ebp
1957	vpxor	%xmm6,%xmm5,%xmm5
1958	xorl	%ebx,%esi
1959	addl	%ebp,%edx
1960	vmovdqa	%xmm9,%xmm10
1961	vpaddd	%xmm4,%xmm9,%xmm9
1962	shrdl	$7,%eax,%eax
1963	addl	%esi,%edx
1964	vpxor	%xmm8,%xmm5,%xmm5
1965	addl	20(%rsp),%ecx
1966	xorl	%ebx,%edi
1967	movl	%edx,%esi
1968	shldl	$5,%edx,%edx
1969	vpsrld	$30,%xmm5,%xmm8
1970	vmovdqa	%xmm9,0(%rsp)
1971	xorl	%eax,%edi
1972	cmpl	$11,%r8d
1973	jb	.Lvaesenclast2
1974	vaesenc	%xmm15,%xmm11,%xmm11
1975	vmovups	64(%r15),%xmm14
1976	vaesenc	%xmm14,%xmm11,%xmm11
1977	vmovups	80(%r15),%xmm15
1978	je	.Lvaesenclast2
1979	vaesenc	%xmm15,%xmm11,%xmm11
1980	vmovups	96(%r15),%xmm14
1981	vaesenc	%xmm14,%xmm11,%xmm11
1982	vmovups	112(%r15),%xmm15
1983.Lvaesenclast2:
1984	vaesenclast	%xmm15,%xmm11,%xmm11
1985	vmovups	16-112(%r15),%xmm14
1986	addl	%edx,%ecx
1987	shrdl	$7,%ebp,%ebp
1988	addl	%edi,%ecx
1989	vpslld	$2,%xmm5,%xmm5
1990	addl	24(%rsp),%ebx
1991	xorl	%eax,%esi
1992	movl	%ecx,%edi
1993	shldl	$5,%ecx,%ecx
1994	xorl	%ebp,%esi
1995	addl	%ecx,%ebx
1996	shrdl	$7,%edx,%edx
1997	addl	%esi,%ebx
1998	vpor	%xmm8,%xmm5,%xmm5
1999	addl	28(%rsp),%eax
2000	xorl	%ebp,%edi
2001	vmovdqa	%xmm5,%xmm9
2002	movl	%ebx,%esi
2003	shldl	$5,%ebx,%ebx
2004	xorl	%edx,%edi
2005	addl	%ebx,%eax
2006	shrdl	$7,%ecx,%ecx
2007	addl	%edi,%eax
2008	vpalignr	$8,%xmm4,%xmm5,%xmm9
2009	vpxor	%xmm2,%xmm6,%xmm6
2010	movl	%ecx,%edi
2011	vmovups	32(%r12),%xmm12
2012	vxorps	%xmm13,%xmm12,%xmm12
2013	vmovups	%xmm11,16(%r13,%r12,1)
2014	vxorps	%xmm12,%xmm11,%xmm11
2015	vaesenc	%xmm14,%xmm11,%xmm11
2016	vmovups	-80(%r15),%xmm15
2017	xorl	%edx,%ecx
2018	addl	32(%rsp),%ebp
2019	andl	%edx,%edi
2020	vpxor	%xmm7,%xmm6,%xmm6
2021	andl	%ecx,%esi
2022	shrdl	$7,%ebx,%ebx
2023	vmovdqa	%xmm10,%xmm8
2024	vpaddd	%xmm5,%xmm10,%xmm10
2025	addl	%edi,%ebp
2026	movl	%eax,%edi
2027	vpxor	%xmm9,%xmm6,%xmm6
2028	shldl	$5,%eax,%eax
2029	addl	%esi,%ebp
2030	xorl	%edx,%ecx
2031	addl	%eax,%ebp
2032	vpsrld	$30,%xmm6,%xmm9
2033	vmovdqa	%xmm10,16(%rsp)
2034	movl	%ebx,%esi
2035	xorl	%ecx,%ebx
2036	addl	36(%rsp),%edx
2037	andl	%ecx,%esi
2038	vpslld	$2,%xmm6,%xmm6
2039	andl	%ebx,%edi
2040	shrdl	$7,%eax,%eax
2041	addl	%esi,%edx
2042	movl	%ebp,%esi
2043	shldl	$5,%ebp,%ebp
2044	vaesenc	%xmm15,%xmm11,%xmm11
2045	vmovups	-64(%r15),%xmm14
2046	addl	%edi,%edx
2047	xorl	%ecx,%ebx
2048	addl	%ebp,%edx
2049	vpor	%xmm9,%xmm6,%xmm6
2050	movl	%eax,%edi
2051	xorl	%ebx,%eax
2052	vmovdqa	%xmm6,%xmm10
2053	addl	40(%rsp),%ecx
2054	andl	%ebx,%edi
2055	andl	%eax,%esi
2056	shrdl	$7,%ebp,%ebp
2057	addl	%edi,%ecx
2058	movl	%edx,%edi
2059	shldl	$5,%edx,%edx
2060	addl	%esi,%ecx
2061	xorl	%ebx,%eax
2062	addl	%edx,%ecx
2063	movl	%ebp,%esi
2064	xorl	%eax,%ebp
2065	addl	44(%rsp),%ebx
2066	andl	%eax,%esi
2067	andl	%ebp,%edi
2068	vaesenc	%xmm14,%xmm11,%xmm11
2069	vmovups	-48(%r15),%xmm15
2070	shrdl	$7,%edx,%edx
2071	addl	%esi,%ebx
2072	movl	%ecx,%esi
2073	shldl	$5,%ecx,%ecx
2074	addl	%edi,%ebx
2075	xorl	%eax,%ebp
2076	addl	%ecx,%ebx
2077	vpalignr	$8,%xmm5,%xmm6,%xmm10
2078	vpxor	%xmm3,%xmm7,%xmm7
2079	movl	%edx,%edi
2080	xorl	%ebp,%edx
2081	addl	48(%rsp),%eax
2082	andl	%ebp,%edi
2083	vpxor	%xmm0,%xmm7,%xmm7
2084	andl	%edx,%esi
2085	shrdl	$7,%ecx,%ecx
2086	vmovdqa	48(%r11),%xmm9
2087	vpaddd	%xmm6,%xmm8,%xmm8
2088	addl	%edi,%eax
2089	movl	%ebx,%edi
2090	vpxor	%xmm10,%xmm7,%xmm7
2091	shldl	$5,%ebx,%ebx
2092	addl	%esi,%eax
2093	xorl	%ebp,%edx
2094	addl	%ebx,%eax
2095	vpsrld	$30,%xmm7,%xmm10
2096	vmovdqa	%xmm8,32(%rsp)
2097	movl	%ecx,%esi
2098	vaesenc	%xmm15,%xmm11,%xmm11
2099	vmovups	-32(%r15),%xmm14
2100	xorl	%edx,%ecx
2101	addl	52(%rsp),%ebp
2102	andl	%edx,%esi
2103	vpslld	$2,%xmm7,%xmm7
2104	andl	%ecx,%edi
2105	shrdl	$7,%ebx,%ebx
2106	addl	%esi,%ebp
2107	movl	%eax,%esi
2108	shldl	$5,%eax,%eax
2109	addl	%edi,%ebp
2110	xorl	%edx,%ecx
2111	addl	%eax,%ebp
2112	vpor	%xmm10,%xmm7,%xmm7
2113	movl	%ebx,%edi
2114	xorl	%ecx,%ebx
2115	vmovdqa	%xmm7,%xmm8
2116	addl	56(%rsp),%edx
2117	andl	%ecx,%edi
2118	andl	%ebx,%esi
2119	shrdl	$7,%eax,%eax
2120	addl	%edi,%edx
2121	movl	%ebp,%edi
2122	shldl	$5,%ebp,%ebp
2123	vaesenc	%xmm14,%xmm11,%xmm11
2124	vmovups	-16(%r15),%xmm15
2125	addl	%esi,%edx
2126	xorl	%ecx,%ebx
2127	addl	%ebp,%edx
2128	movl	%eax,%esi
2129	xorl	%ebx,%eax
2130	addl	60(%rsp),%ecx
2131	andl	%ebx,%esi
2132	andl	%eax,%edi
2133	shrdl	$7,%ebp,%ebp
2134	addl	%esi,%ecx
2135	movl	%edx,%esi
2136	shldl	$5,%edx,%edx
2137	addl	%edi,%ecx
2138	xorl	%ebx,%eax
2139	addl	%edx,%ecx
2140	vpalignr	$8,%xmm6,%xmm7,%xmm8
2141	vpxor	%xmm4,%xmm0,%xmm0
2142	movl	%ebp,%edi
2143	xorl	%eax,%ebp
2144	addl	0(%rsp),%ebx
2145	andl	%eax,%edi
2146	vpxor	%xmm1,%xmm0,%xmm0
2147	andl	%ebp,%esi
2148	vaesenc	%xmm15,%xmm11,%xmm11
2149	vmovups	0(%r15),%xmm14
2150	shrdl	$7,%edx,%edx
2151	vmovdqa	%xmm9,%xmm10
2152	vpaddd	%xmm7,%xmm9,%xmm9
2153	addl	%edi,%ebx
2154	movl	%ecx,%edi
2155	vpxor	%xmm8,%xmm0,%xmm0
2156	shldl	$5,%ecx,%ecx
2157	addl	%esi,%ebx
2158	xorl	%eax,%ebp
2159	addl	%ecx,%ebx
2160	vpsrld	$30,%xmm0,%xmm8
2161	vmovdqa	%xmm9,48(%rsp)
2162	movl	%edx,%esi
2163	xorl	%ebp,%edx
2164	addl	4(%rsp),%eax
2165	andl	%ebp,%esi
2166	vpslld	$2,%xmm0,%xmm0
2167	andl	%edx,%edi
2168	shrdl	$7,%ecx,%ecx
2169	addl	%esi,%eax
2170	movl	%ebx,%esi
2171	shldl	$5,%ebx,%ebx
2172	addl	%edi,%eax
2173	xorl	%ebp,%edx
2174	addl	%ebx,%eax
2175	vpor	%xmm8,%xmm0,%xmm0
2176	movl	%ecx,%edi
2177	vaesenc	%xmm14,%xmm11,%xmm11
2178	vmovups	16(%r15),%xmm15
2179	xorl	%edx,%ecx
2180	vmovdqa	%xmm0,%xmm9
2181	addl	8(%rsp),%ebp
2182	andl	%edx,%edi
2183	andl	%ecx,%esi
2184	shrdl	$7,%ebx,%ebx
2185	addl	%edi,%ebp
2186	movl	%eax,%edi
2187	shldl	$5,%eax,%eax
2188	addl	%esi,%ebp
2189	xorl	%edx,%ecx
2190	addl	%eax,%ebp
2191	movl	%ebx,%esi
2192	xorl	%ecx,%ebx
2193	addl	12(%rsp),%edx
2194	andl	%ecx,%esi
2195	andl	%ebx,%edi
2196	shrdl	$7,%eax,%eax
2197	addl	%esi,%edx
2198	movl	%ebp,%esi
2199	shldl	$5,%ebp,%ebp
2200	vaesenc	%xmm15,%xmm11,%xmm11
2201	vmovups	32(%r15),%xmm14
2202	addl	%edi,%edx
2203	xorl	%ecx,%ebx
2204	addl	%ebp,%edx
2205	vpalignr	$8,%xmm7,%xmm0,%xmm9
2206	vpxor	%xmm5,%xmm1,%xmm1
2207	movl	%eax,%edi
2208	xorl	%ebx,%eax
2209	addl	16(%rsp),%ecx
2210	andl	%ebx,%edi
2211	vpxor	%xmm2,%xmm1,%xmm1
2212	andl	%eax,%esi
2213	shrdl	$7,%ebp,%ebp
2214	vmovdqa	%xmm10,%xmm8
2215	vpaddd	%xmm0,%xmm10,%xmm10
2216	addl	%edi,%ecx
2217	movl	%edx,%edi
2218	vpxor	%xmm9,%xmm1,%xmm1
2219	shldl	$5,%edx,%edx
2220	addl	%esi,%ecx
2221	xorl	%ebx,%eax
2222	addl	%edx,%ecx
2223	vpsrld	$30,%xmm1,%xmm9
2224	vmovdqa	%xmm10,0(%rsp)
2225	movl	%ebp,%esi
2226	xorl	%eax,%ebp
2227	addl	20(%rsp),%ebx
2228	andl	%eax,%esi
2229	vpslld	$2,%xmm1,%xmm1
2230	andl	%ebp,%edi
2231	vaesenc	%xmm14,%xmm11,%xmm11
2232	vmovups	48(%r15),%xmm15
2233	shrdl	$7,%edx,%edx
2234	addl	%esi,%ebx
2235	movl	%ecx,%esi
2236	shldl	$5,%ecx,%ecx
2237	addl	%edi,%ebx
2238	xorl	%eax,%ebp
2239	addl	%ecx,%ebx
2240	vpor	%xmm9,%xmm1,%xmm1
2241	movl	%edx,%edi
2242	xorl	%ebp,%edx
2243	vmovdqa	%xmm1,%xmm10
2244	addl	24(%rsp),%eax
2245	andl	%ebp,%edi
2246	andl	%edx,%esi
2247	shrdl	$7,%ecx,%ecx
2248	addl	%edi,%eax
2249	movl	%ebx,%edi
2250	shldl	$5,%ebx,%ebx
2251	addl	%esi,%eax
2252	xorl	%ebp,%edx
2253	addl	%ebx,%eax
2254	movl	%ecx,%esi
2255	cmpl	$11,%r8d
2256	jb	.Lvaesenclast3
2257	vaesenc	%xmm15,%xmm11,%xmm11
2258	vmovups	64(%r15),%xmm14
2259	vaesenc	%xmm14,%xmm11,%xmm11
2260	vmovups	80(%r15),%xmm15
2261	je	.Lvaesenclast3
2262	vaesenc	%xmm15,%xmm11,%xmm11
2263	vmovups	96(%r15),%xmm14
2264	vaesenc	%xmm14,%xmm11,%xmm11
2265	vmovups	112(%r15),%xmm15
2266.Lvaesenclast3:
2267	vaesenclast	%xmm15,%xmm11,%xmm11
2268	vmovups	16-112(%r15),%xmm14
2269	xorl	%edx,%ecx
2270	addl	28(%rsp),%ebp
2271	andl	%edx,%esi
2272	andl	%ecx,%edi
2273	shrdl	$7,%ebx,%ebx
2274	addl	%esi,%ebp
2275	movl	%eax,%esi
2276	shldl	$5,%eax,%eax
2277	addl	%edi,%ebp
2278	xorl	%edx,%ecx
2279	addl	%eax,%ebp
2280	vpalignr	$8,%xmm0,%xmm1,%xmm10
2281	vpxor	%xmm6,%xmm2,%xmm2
2282	movl	%ebx,%edi
2283	xorl	%ecx,%ebx
2284	addl	32(%rsp),%edx
2285	andl	%ecx,%edi
2286	vpxor	%xmm3,%xmm2,%xmm2
2287	andl	%ebx,%esi
2288	shrdl	$7,%eax,%eax
2289	vmovdqa	%xmm8,%xmm9
2290	vpaddd	%xmm1,%xmm8,%xmm8
2291	addl	%edi,%edx
2292	movl	%ebp,%edi
2293	vpxor	%xmm10,%xmm2,%xmm2
2294	shldl	$5,%ebp,%ebp
2295	vmovups	48(%r12),%xmm12
2296	vxorps	%xmm13,%xmm12,%xmm12
2297	vmovups	%xmm11,32(%r13,%r12,1)
2298	vxorps	%xmm12,%xmm11,%xmm11
2299	vaesenc	%xmm14,%xmm11,%xmm11
2300	vmovups	-80(%r15),%xmm15
2301	addl	%esi,%edx
2302	xorl	%ecx,%ebx
2303	addl	%ebp,%edx
2304	vpsrld	$30,%xmm2,%xmm10
2305	vmovdqa	%xmm8,16(%rsp)
2306	movl	%eax,%esi
2307	xorl	%ebx,%eax
2308	addl	36(%rsp),%ecx
2309	andl	%ebx,%esi
2310	vpslld	$2,%xmm2,%xmm2
2311	andl	%eax,%edi
2312	shrdl	$7,%ebp,%ebp
2313	addl	%esi,%ecx
2314	movl	%edx,%esi
2315	shldl	$5,%edx,%edx
2316	addl	%edi,%ecx
2317	xorl	%ebx,%eax
2318	addl	%edx,%ecx
2319	vpor	%xmm10,%xmm2,%xmm2
2320	movl	%ebp,%edi
2321	xorl	%eax,%ebp
2322	vmovdqa	%xmm2,%xmm8
2323	addl	40(%rsp),%ebx
2324	andl	%eax,%edi
2325	andl	%ebp,%esi
2326	vaesenc	%xmm15,%xmm11,%xmm11
2327	vmovups	-64(%r15),%xmm14
2328	shrdl	$7,%edx,%edx
2329	addl	%edi,%ebx
2330	movl	%ecx,%edi
2331	shldl	$5,%ecx,%ecx
2332	addl	%esi,%ebx
2333	xorl	%eax,%ebp
2334	addl	%ecx,%ebx
2335	movl	%edx,%esi
2336	xorl	%ebp,%edx
2337	addl	44(%rsp),%eax
2338	andl	%ebp,%esi
2339	andl	%edx,%edi
2340	shrdl	$7,%ecx,%ecx
2341	addl	%esi,%eax
2342	movl	%ebx,%esi
2343	shldl	$5,%ebx,%ebx
2344	addl	%edi,%eax
2345	xorl	%ebp,%edx
2346	addl	%ebx,%eax
2347	vpalignr	$8,%xmm1,%xmm2,%xmm8
2348	vpxor	%xmm7,%xmm3,%xmm3
2349	addl	48(%rsp),%ebp
2350	vaesenc	%xmm14,%xmm11,%xmm11
2351	vmovups	-48(%r15),%xmm15
2352	xorl	%edx,%esi
2353	movl	%eax,%edi
2354	shldl	$5,%eax,%eax
2355	vpxor	%xmm4,%xmm3,%xmm3
2356	xorl	%ecx,%esi
2357	addl	%eax,%ebp
2358	vmovdqa	%xmm9,%xmm10
2359	vpaddd	%xmm2,%xmm9,%xmm9
2360	shrdl	$7,%ebx,%ebx
2361	addl	%esi,%ebp
2362	vpxor	%xmm8,%xmm3,%xmm3
2363	addl	52(%rsp),%edx
2364	xorl	%ecx,%edi
2365	movl	%ebp,%esi
2366	shldl	$5,%ebp,%ebp
2367	vpsrld	$30,%xmm3,%xmm8
2368	vmovdqa	%xmm9,32(%rsp)
2369	xorl	%ebx,%edi
2370	addl	%ebp,%edx
2371	shrdl	$7,%eax,%eax
2372	addl	%edi,%edx
2373	vpslld	$2,%xmm3,%xmm3
2374	addl	56(%rsp),%ecx
2375	xorl	%ebx,%esi
2376	movl	%edx,%edi
2377	shldl	$5,%edx,%edx
2378	xorl	%eax,%esi
2379	vaesenc	%xmm15,%xmm11,%xmm11
2380	vmovups	-32(%r15),%xmm14
2381	addl	%edx,%ecx
2382	shrdl	$7,%ebp,%ebp
2383	addl	%esi,%ecx
2384	vpor	%xmm8,%xmm3,%xmm3
2385	addl	60(%rsp),%ebx
2386	xorl	%eax,%edi
2387	movl	%ecx,%esi
2388	shldl	$5,%ecx,%ecx
2389	xorl	%ebp,%edi
2390	addl	%ecx,%ebx
2391	shrdl	$7,%edx,%edx
2392	addl	%edi,%ebx
2393	addl	0(%rsp),%eax
2394	vpaddd	%xmm3,%xmm10,%xmm10
2395	xorl	%ebp,%esi
2396	movl	%ebx,%edi
2397	shldl	$5,%ebx,%ebx
2398	xorl	%edx,%esi
2399	movdqa	%xmm10,48(%rsp)
2400	addl	%ebx,%eax
2401	shrdl	$7,%ecx,%ecx
2402	addl	%esi,%eax
2403	addl	4(%rsp),%ebp
2404	vaesenc	%xmm14,%xmm11,%xmm11
2405	vmovups	-16(%r15),%xmm15
2406	xorl	%edx,%edi
2407	movl	%eax,%esi
2408	shldl	$5,%eax,%eax
2409	xorl	%ecx,%edi
2410	addl	%eax,%ebp
2411	shrdl	$7,%ebx,%ebx
2412	addl	%edi,%ebp
2413	addl	8(%rsp),%edx
2414	xorl	%ecx,%esi
2415	movl	%ebp,%edi
2416	shldl	$5,%ebp,%ebp
2417	xorl	%ebx,%esi
2418	addl	%ebp,%edx
2419	shrdl	$7,%eax,%eax
2420	addl	%esi,%edx
2421	addl	12(%rsp),%ecx
2422	xorl	%ebx,%edi
2423	movl	%edx,%esi
2424	shldl	$5,%edx,%edx
2425	xorl	%eax,%edi
2426	vaesenc	%xmm15,%xmm11,%xmm11
2427	vmovups	0(%r15),%xmm14
2428	addl	%edx,%ecx
2429	shrdl	$7,%ebp,%ebp
2430	addl	%edi,%ecx
2431	cmpq	%r14,%r10
2432	je	.Ldone_avx
2433	vmovdqa	64(%r11),%xmm6
2434	vmovdqa	0(%r11),%xmm9
2435	vmovdqu	0(%r10),%xmm0
2436	vmovdqu	16(%r10),%xmm1
2437	vmovdqu	32(%r10),%xmm2
2438	vmovdqu	48(%r10),%xmm3
2439	vpshufb	%xmm6,%xmm0,%xmm0
2440	addq	$64,%r10
2441	addl	16(%rsp),%ebx
2442	xorl	%eax,%esi
2443	vpshufb	%xmm6,%xmm1,%xmm1
2444	movl	%ecx,%edi
2445	shldl	$5,%ecx,%ecx
2446	vpaddd	%xmm9,%xmm0,%xmm4
2447	xorl	%ebp,%esi
2448	addl	%ecx,%ebx
2449	shrdl	$7,%edx,%edx
2450	addl	%esi,%ebx
2451	vmovdqa	%xmm4,0(%rsp)
2452	addl	20(%rsp),%eax
2453	xorl	%ebp,%edi
2454	movl	%ebx,%esi
2455	shldl	$5,%ebx,%ebx
2456	xorl	%edx,%edi
2457	addl	%ebx,%eax
2458	shrdl	$7,%ecx,%ecx
2459	addl	%edi,%eax
2460	addl	24(%rsp),%ebp
2461	vaesenc	%xmm14,%xmm11,%xmm11
2462	vmovups	16(%r15),%xmm15
2463	xorl	%edx,%esi
2464	movl	%eax,%edi
2465	shldl	$5,%eax,%eax
2466	xorl	%ecx,%esi
2467	addl	%eax,%ebp
2468	shrdl	$7,%ebx,%ebx
2469	addl	%esi,%ebp
2470	addl	28(%rsp),%edx
2471	xorl	%ecx,%edi
2472	movl	%ebp,%esi
2473	shldl	$5,%ebp,%ebp
2474	xorl	%ebx,%edi
2475	addl	%ebp,%edx
2476	shrdl	$7,%eax,%eax
2477	addl	%edi,%edx
2478	addl	32(%rsp),%ecx
2479	xorl	%ebx,%esi
2480	vpshufb	%xmm6,%xmm2,%xmm2
2481	movl	%edx,%edi
2482	shldl	$5,%edx,%edx
2483	vpaddd	%xmm9,%xmm1,%xmm5
2484	xorl	%eax,%esi
2485	vaesenc	%xmm15,%xmm11,%xmm11
2486	vmovups	32(%r15),%xmm14
2487	addl	%edx,%ecx
2488	shrdl	$7,%ebp,%ebp
2489	addl	%esi,%ecx
2490	vmovdqa	%xmm5,16(%rsp)
2491	addl	36(%rsp),%ebx
2492	xorl	%eax,%edi
2493	movl	%ecx,%esi
2494	shldl	$5,%ecx,%ecx
2495	xorl	%ebp,%edi
2496	addl	%ecx,%ebx
2497	shrdl	$7,%edx,%edx
2498	addl	%edi,%ebx
2499	addl	40(%rsp),%eax
2500	xorl	%ebp,%esi
2501	movl	%ebx,%edi
2502	shldl	$5,%ebx,%ebx
2503	xorl	%edx,%esi
2504	addl	%ebx,%eax
2505	shrdl	$7,%ecx,%ecx
2506	addl	%esi,%eax
2507	addl	44(%rsp),%ebp
2508	vaesenc	%xmm14,%xmm11,%xmm11
2509	vmovups	48(%r15),%xmm15
2510	xorl	%edx,%edi
2511	movl	%eax,%esi
2512	shldl	$5,%eax,%eax
2513	xorl	%ecx,%edi
2514	addl	%eax,%ebp
2515	shrdl	$7,%ebx,%ebx
2516	addl	%edi,%ebp
2517	addl	48(%rsp),%edx
2518	xorl	%ecx,%esi
2519	vpshufb	%xmm6,%xmm3,%xmm3
2520	movl	%ebp,%edi
2521	shldl	$5,%ebp,%ebp
2522	vpaddd	%xmm9,%xmm2,%xmm6
2523	xorl	%ebx,%esi
2524	addl	%ebp,%edx
2525	shrdl	$7,%eax,%eax
2526	addl	%esi,%edx
2527	vmovdqa	%xmm6,32(%rsp)
2528	addl	52(%rsp),%ecx
2529	xorl	%ebx,%edi
2530	movl	%edx,%esi
2531	shldl	$5,%edx,%edx
2532	xorl	%eax,%edi
2533	cmpl	$11,%r8d
2534	jb	.Lvaesenclast4
2535	vaesenc	%xmm15,%xmm11,%xmm11
2536	vmovups	64(%r15),%xmm14
2537	vaesenc	%xmm14,%xmm11,%xmm11
2538	vmovups	80(%r15),%xmm15
2539	je	.Lvaesenclast4
2540	vaesenc	%xmm15,%xmm11,%xmm11
2541	vmovups	96(%r15),%xmm14
2542	vaesenc	%xmm14,%xmm11,%xmm11
2543	vmovups	112(%r15),%xmm15
2544.Lvaesenclast4:
2545	vaesenclast	%xmm15,%xmm11,%xmm11
2546	vmovups	16-112(%r15),%xmm14
2547	addl	%edx,%ecx
2548	shrdl	$7,%ebp,%ebp
2549	addl	%edi,%ecx
2550	addl	56(%rsp),%ebx
2551	xorl	%eax,%esi
2552	movl	%ecx,%edi
2553	shldl	$5,%ecx,%ecx
2554	xorl	%ebp,%esi
2555	addl	%ecx,%ebx
2556	shrdl	$7,%edx,%edx
2557	addl	%esi,%ebx
2558	addl	60(%rsp),%eax
2559	xorl	%ebp,%edi
2560	movl	%ebx,%esi
2561	shldl	$5,%ebx,%ebx
2562	xorl	%edx,%edi
2563	addl	%ebx,%eax
2564	shrdl	$7,%ecx,%ecx
2565	addl	%edi,%eax
2566	vmovups	%xmm11,48(%r13,%r12,1)
2567	leaq	64(%r12),%r12
2568
2569	addl	0(%r9),%eax
2570	addl	4(%r9),%esi
2571	addl	8(%r9),%ecx
2572	addl	12(%r9),%edx
2573	movl	%eax,0(%r9)
2574	addl	16(%r9),%ebp
2575	movl	%esi,4(%r9)
2576	movl	%esi,%ebx
2577	movl	%ecx,8(%r9)
2578	movl	%edx,12(%r9)
2579	movl	%ebp,16(%r9)
2580	jmp	.Loop_avx
2581
2582.align	16
2583.Ldone_avx:
2584	addl	16(%rsp),%ebx
2585	xorl	%eax,%esi
2586	movl	%ecx,%edi
2587	shldl	$5,%ecx,%ecx
2588	xorl	%ebp,%esi
2589	addl	%ecx,%ebx
2590	shrdl	$7,%edx,%edx
2591	addl	%esi,%ebx
2592	addl	20(%rsp),%eax
2593	xorl	%ebp,%edi
2594	movl	%ebx,%esi
2595	shldl	$5,%ebx,%ebx
2596	xorl	%edx,%edi
2597	addl	%ebx,%eax
2598	shrdl	$7,%ecx,%ecx
2599	addl	%edi,%eax
2600	addl	24(%rsp),%ebp
2601	vaesenc	%xmm14,%xmm11,%xmm11
2602	vmovups	16(%r15),%xmm15
2603	xorl	%edx,%esi
2604	movl	%eax,%edi
2605	shldl	$5,%eax,%eax
2606	xorl	%ecx,%esi
2607	addl	%eax,%ebp
2608	shrdl	$7,%ebx,%ebx
2609	addl	%esi,%ebp
2610	addl	28(%rsp),%edx
2611	xorl	%ecx,%edi
2612	movl	%ebp,%esi
2613	shldl	$5,%ebp,%ebp
2614	xorl	%ebx,%edi
2615	addl	%ebp,%edx
2616	shrdl	$7,%eax,%eax
2617	addl	%edi,%edx
2618	addl	32(%rsp),%ecx
2619	xorl	%ebx,%esi
2620	movl	%edx,%edi
2621	shldl	$5,%edx,%edx
2622	xorl	%eax,%esi
2623	vaesenc	%xmm15,%xmm11,%xmm11
2624	vmovups	32(%r15),%xmm14
2625	addl	%edx,%ecx
2626	shrdl	$7,%ebp,%ebp
2627	addl	%esi,%ecx
2628	addl	36(%rsp),%ebx
2629	xorl	%eax,%edi
2630	movl	%ecx,%esi
2631	shldl	$5,%ecx,%ecx
2632	xorl	%ebp,%edi
2633	addl	%ecx,%ebx
2634	shrdl	$7,%edx,%edx
2635	addl	%edi,%ebx
2636	addl	40(%rsp),%eax
2637	xorl	%ebp,%esi
2638	movl	%ebx,%edi
2639	shldl	$5,%ebx,%ebx
2640	xorl	%edx,%esi
2641	addl	%ebx,%eax
2642	shrdl	$7,%ecx,%ecx
2643	addl	%esi,%eax
2644	addl	44(%rsp),%ebp
2645	vaesenc	%xmm14,%xmm11,%xmm11
2646	vmovups	48(%r15),%xmm15
2647	xorl	%edx,%edi
2648	movl	%eax,%esi
2649	shldl	$5,%eax,%eax
2650	xorl	%ecx,%edi
2651	addl	%eax,%ebp
2652	shrdl	$7,%ebx,%ebx
2653	addl	%edi,%ebp
2654	addl	48(%rsp),%edx
2655	xorl	%ecx,%esi
2656	movl	%ebp,%edi
2657	shldl	$5,%ebp,%ebp
2658	xorl	%ebx,%esi
2659	addl	%ebp,%edx
2660	shrdl	$7,%eax,%eax
2661	addl	%esi,%edx
2662	addl	52(%rsp),%ecx
2663	xorl	%ebx,%edi
2664	movl	%edx,%esi
2665	shldl	$5,%edx,%edx
2666	xorl	%eax,%edi
2667	cmpl	$11,%r8d
2668	jb	.Lvaesenclast5
2669	vaesenc	%xmm15,%xmm11,%xmm11
2670	vmovups	64(%r15),%xmm14
2671	vaesenc	%xmm14,%xmm11,%xmm11
2672	vmovups	80(%r15),%xmm15
2673	je	.Lvaesenclast5
2674	vaesenc	%xmm15,%xmm11,%xmm11
2675	vmovups	96(%r15),%xmm14
2676	vaesenc	%xmm14,%xmm11,%xmm11
2677	vmovups	112(%r15),%xmm15
2678.Lvaesenclast5:
2679	vaesenclast	%xmm15,%xmm11,%xmm11
2680	vmovups	16-112(%r15),%xmm14
2681	addl	%edx,%ecx
2682	shrdl	$7,%ebp,%ebp
2683	addl	%edi,%ecx
2684	addl	56(%rsp),%ebx
2685	xorl	%eax,%esi
2686	movl	%ecx,%edi
2687	shldl	$5,%ecx,%ecx
2688	xorl	%ebp,%esi
2689	addl	%ecx,%ebx
2690	shrdl	$7,%edx,%edx
2691	addl	%esi,%ebx
2692	addl	60(%rsp),%eax
2693	xorl	%ebp,%edi
2694	movl	%ebx,%esi
2695	shldl	$5,%ebx,%ebx
2696	xorl	%edx,%edi
2697	addl	%ebx,%eax
2698	shrdl	$7,%ecx,%ecx
2699	addl	%edi,%eax
2700	vmovups	%xmm11,48(%r13,%r12,1)
2701	movq	88(%rsp),%r8
2702
2703	addl	0(%r9),%eax
2704	addl	4(%r9),%esi
2705	addl	8(%r9),%ecx
2706	movl	%eax,0(%r9)
2707	addl	12(%r9),%edx
2708	movl	%esi,4(%r9)
2709	addl	16(%r9),%ebp
2710	movl	%ecx,8(%r9)
2711	movl	%edx,12(%r9)
2712	movl	%ebp,16(%r9)
2713	vmovups	%xmm11,(%r8)
2714	vzeroall
2715	leaq	104(%rsp),%rsi
2716	movq	0(%rsi),%r15
2717	movq	8(%rsi),%r14
2718	movq	16(%rsi),%r13
2719	movq	24(%rsi),%r12
2720	movq	32(%rsi),%rbp
2721	movq	40(%rsi),%rbx
2722	leaq	48(%rsi),%rsp
2723.Lepilogue_avx:
2724	.byte	0xf3,0xc3
2725.size	aesni_cbc_sha1_enc_avx,.-aesni_cbc_sha1_enc_avx
2726.align	64
2727K_XX_XX:
2728.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999
2729.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
2730.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
2731.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
2732.long	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2733
2734.byte	65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115,116,105,116,99,104,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
2735.align	64
2736