xref: /NextBSD/secure/lib/libcrypto/amd64/aesni-sha1-x86_64.S (revision 84d351007654069f9643c8e4b4802a7f5f08ee42)
1	# $FreeBSD$
2.text
3
4
5.globl	aesni_cbc_sha1_enc
6.type	aesni_cbc_sha1_enc,@function
7.align	32
8aesni_cbc_sha1_enc:
9
10	movl	OPENSSL_ia32cap_P+0(%rip),%r10d
11	movq	OPENSSL_ia32cap_P+4(%rip),%r11
12	btq	$61,%r11
13	jc	aesni_cbc_sha1_enc_shaext
14	jmp	aesni_cbc_sha1_enc_ssse3
15	.byte	0xf3,0xc3
16.size	aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc
17.type	aesni_cbc_sha1_enc_ssse3,@function
18.align	32
19aesni_cbc_sha1_enc_ssse3:
20	movq	8(%rsp),%r10
21
22
23	pushq	%rbx
24	pushq	%rbp
25	pushq	%r12
26	pushq	%r13
27	pushq	%r14
28	pushq	%r15
29	leaq	-104(%rsp),%rsp
30
31
32	movq	%rdi,%r12
33	movq	%rsi,%r13
34	movq	%rdx,%r14
35	leaq	112(%rcx),%r15
36	movdqu	(%r8),%xmm2
37	movq	%r8,88(%rsp)
38	shlq	$6,%r14
39	subq	%r12,%r13
40	movl	240-112(%r15),%r8d
41	addq	%r10,%r14
42
43	leaq	K_XX_XX(%rip),%r11
44	movl	0(%r9),%eax
45	movl	4(%r9),%ebx
46	movl	8(%r9),%ecx
47	movl	12(%r9),%edx
48	movl	%ebx,%esi
49	movl	16(%r9),%ebp
50	movl	%ecx,%edi
51	xorl	%edx,%edi
52	andl	%edi,%esi
53
54	movdqa	64(%r11),%xmm3
55	movdqa	0(%r11),%xmm13
56	movdqu	0(%r10),%xmm4
57	movdqu	16(%r10),%xmm5
58	movdqu	32(%r10),%xmm6
59	movdqu	48(%r10),%xmm7
60.byte	102,15,56,0,227
61.byte	102,15,56,0,235
62.byte	102,15,56,0,243
63	addq	$64,%r10
64	paddd	%xmm13,%xmm4
65.byte	102,15,56,0,251
66	paddd	%xmm13,%xmm5
67	paddd	%xmm13,%xmm6
68	movdqa	%xmm4,0(%rsp)
69	psubd	%xmm13,%xmm4
70	movdqa	%xmm5,16(%rsp)
71	psubd	%xmm13,%xmm5
72	movdqa	%xmm6,32(%rsp)
73	psubd	%xmm13,%xmm6
74	movups	-112(%r15),%xmm15
75	movups	16-112(%r15),%xmm0
76	jmp	.Loop_ssse3
77.align	32
78.Loop_ssse3:
79	rorl	$2,%ebx
80	movups	0(%r12),%xmm14
81	xorps	%xmm15,%xmm14
82	xorps	%xmm14,%xmm2
83	movups	-80(%r15),%xmm1
84.byte	102,15,56,220,208
85	pshufd	$238,%xmm4,%xmm8
86	xorl	%edx,%esi
87	movdqa	%xmm7,%xmm12
88	paddd	%xmm7,%xmm13
89	movl	%eax,%edi
90	addl	0(%rsp),%ebp
91	punpcklqdq	%xmm5,%xmm8
92	xorl	%ecx,%ebx
93	roll	$5,%eax
94	addl	%esi,%ebp
95	psrldq	$4,%xmm12
96	andl	%ebx,%edi
97	xorl	%ecx,%ebx
98	pxor	%xmm4,%xmm8
99	addl	%eax,%ebp
100	rorl	$7,%eax
101	pxor	%xmm6,%xmm12
102	xorl	%ecx,%edi
103	movl	%ebp,%esi
104	addl	4(%rsp),%edx
105	pxor	%xmm12,%xmm8
106	xorl	%ebx,%eax
107	roll	$5,%ebp
108	movdqa	%xmm13,48(%rsp)
109	addl	%edi,%edx
110	movups	-64(%r15),%xmm0
111.byte	102,15,56,220,209
112	andl	%eax,%esi
113	movdqa	%xmm8,%xmm3
114	xorl	%ebx,%eax
115	addl	%ebp,%edx
116	rorl	$7,%ebp
117	movdqa	%xmm8,%xmm12
118	xorl	%ebx,%esi
119	pslldq	$12,%xmm3
120	paddd	%xmm8,%xmm8
121	movl	%edx,%edi
122	addl	8(%rsp),%ecx
123	psrld	$31,%xmm12
124	xorl	%eax,%ebp
125	roll	$5,%edx
126	addl	%esi,%ecx
127	movdqa	%xmm3,%xmm13
128	andl	%ebp,%edi
129	xorl	%eax,%ebp
130	psrld	$30,%xmm3
131	addl	%edx,%ecx
132	rorl	$7,%edx
133	por	%xmm12,%xmm8
134	xorl	%eax,%edi
135	movl	%ecx,%esi
136	addl	12(%rsp),%ebx
137	movups	-48(%r15),%xmm1
138.byte	102,15,56,220,208
139	pslld	$2,%xmm13
140	pxor	%xmm3,%xmm8
141	xorl	%ebp,%edx
142	movdqa	0(%r11),%xmm3
143	roll	$5,%ecx
144	addl	%edi,%ebx
145	andl	%edx,%esi
146	pxor	%xmm13,%xmm8
147	xorl	%ebp,%edx
148	addl	%ecx,%ebx
149	rorl	$7,%ecx
150	pshufd	$238,%xmm5,%xmm9
151	xorl	%ebp,%esi
152	movdqa	%xmm8,%xmm13
153	paddd	%xmm8,%xmm3
154	movl	%ebx,%edi
155	addl	16(%rsp),%eax
156	punpcklqdq	%xmm6,%xmm9
157	xorl	%edx,%ecx
158	roll	$5,%ebx
159	addl	%esi,%eax
160	psrldq	$4,%xmm13
161	andl	%ecx,%edi
162	xorl	%edx,%ecx
163	pxor	%xmm5,%xmm9
164	addl	%ebx,%eax
165	rorl	$7,%ebx
166	movups	-32(%r15),%xmm0
167.byte	102,15,56,220,209
168	pxor	%xmm7,%xmm13
169	xorl	%edx,%edi
170	movl	%eax,%esi
171	addl	20(%rsp),%ebp
172	pxor	%xmm13,%xmm9
173	xorl	%ecx,%ebx
174	roll	$5,%eax
175	movdqa	%xmm3,0(%rsp)
176	addl	%edi,%ebp
177	andl	%ebx,%esi
178	movdqa	%xmm9,%xmm12
179	xorl	%ecx,%ebx
180	addl	%eax,%ebp
181	rorl	$7,%eax
182	movdqa	%xmm9,%xmm13
183	xorl	%ecx,%esi
184	pslldq	$12,%xmm12
185	paddd	%xmm9,%xmm9
186	movl	%ebp,%edi
187	addl	24(%rsp),%edx
188	psrld	$31,%xmm13
189	xorl	%ebx,%eax
190	roll	$5,%ebp
191	addl	%esi,%edx
192	movups	-16(%r15),%xmm1
193.byte	102,15,56,220,208
194	movdqa	%xmm12,%xmm3
195	andl	%eax,%edi
196	xorl	%ebx,%eax
197	psrld	$30,%xmm12
198	addl	%ebp,%edx
199	rorl	$7,%ebp
200	por	%xmm13,%xmm9
201	xorl	%ebx,%edi
202	movl	%edx,%esi
203	addl	28(%rsp),%ecx
204	pslld	$2,%xmm3
205	pxor	%xmm12,%xmm9
206	xorl	%eax,%ebp
207	movdqa	16(%r11),%xmm12
208	roll	$5,%edx
209	addl	%edi,%ecx
210	andl	%ebp,%esi
211	pxor	%xmm3,%xmm9
212	xorl	%eax,%ebp
213	addl	%edx,%ecx
214	rorl	$7,%edx
215	pshufd	$238,%xmm6,%xmm10
216	xorl	%eax,%esi
217	movdqa	%xmm9,%xmm3
218	paddd	%xmm9,%xmm12
219	movl	%ecx,%edi
220	addl	32(%rsp),%ebx
221	movups	0(%r15),%xmm0
222.byte	102,15,56,220,209
223	punpcklqdq	%xmm7,%xmm10
224	xorl	%ebp,%edx
225	roll	$5,%ecx
226	addl	%esi,%ebx
227	psrldq	$4,%xmm3
228	andl	%edx,%edi
229	xorl	%ebp,%edx
230	pxor	%xmm6,%xmm10
231	addl	%ecx,%ebx
232	rorl	$7,%ecx
233	pxor	%xmm8,%xmm3
234	xorl	%ebp,%edi
235	movl	%ebx,%esi
236	addl	36(%rsp),%eax
237	pxor	%xmm3,%xmm10
238	xorl	%edx,%ecx
239	roll	$5,%ebx
240	movdqa	%xmm12,16(%rsp)
241	addl	%edi,%eax
242	andl	%ecx,%esi
243	movdqa	%xmm10,%xmm13
244	xorl	%edx,%ecx
245	addl	%ebx,%eax
246	rorl	$7,%ebx
247	movups	16(%r15),%xmm1
248.byte	102,15,56,220,208
249	movdqa	%xmm10,%xmm3
250	xorl	%edx,%esi
251	pslldq	$12,%xmm13
252	paddd	%xmm10,%xmm10
253	movl	%eax,%edi
254	addl	40(%rsp),%ebp
255	psrld	$31,%xmm3
256	xorl	%ecx,%ebx
257	roll	$5,%eax
258	addl	%esi,%ebp
259	movdqa	%xmm13,%xmm12
260	andl	%ebx,%edi
261	xorl	%ecx,%ebx
262	psrld	$30,%xmm13
263	addl	%eax,%ebp
264	rorl	$7,%eax
265	por	%xmm3,%xmm10
266	xorl	%ecx,%edi
267	movl	%ebp,%esi
268	addl	44(%rsp),%edx
269	pslld	$2,%xmm12
270	pxor	%xmm13,%xmm10
271	xorl	%ebx,%eax
272	movdqa	16(%r11),%xmm13
273	roll	$5,%ebp
274	addl	%edi,%edx
275	movups	32(%r15),%xmm0
276.byte	102,15,56,220,209
277	andl	%eax,%esi
278	pxor	%xmm12,%xmm10
279	xorl	%ebx,%eax
280	addl	%ebp,%edx
281	rorl	$7,%ebp
282	pshufd	$238,%xmm7,%xmm11
283	xorl	%ebx,%esi
284	movdqa	%xmm10,%xmm12
285	paddd	%xmm10,%xmm13
286	movl	%edx,%edi
287	addl	48(%rsp),%ecx
288	punpcklqdq	%xmm8,%xmm11
289	xorl	%eax,%ebp
290	roll	$5,%edx
291	addl	%esi,%ecx
292	psrldq	$4,%xmm12
293	andl	%ebp,%edi
294	xorl	%eax,%ebp
295	pxor	%xmm7,%xmm11
296	addl	%edx,%ecx
297	rorl	$7,%edx
298	pxor	%xmm9,%xmm12
299	xorl	%eax,%edi
300	movl	%ecx,%esi
301	addl	52(%rsp),%ebx
302	movups	48(%r15),%xmm1
303.byte	102,15,56,220,208
304	pxor	%xmm12,%xmm11
305	xorl	%ebp,%edx
306	roll	$5,%ecx
307	movdqa	%xmm13,32(%rsp)
308	addl	%edi,%ebx
309	andl	%edx,%esi
310	movdqa	%xmm11,%xmm3
311	xorl	%ebp,%edx
312	addl	%ecx,%ebx
313	rorl	$7,%ecx
314	movdqa	%xmm11,%xmm12
315	xorl	%ebp,%esi
316	pslldq	$12,%xmm3
317	paddd	%xmm11,%xmm11
318	movl	%ebx,%edi
319	addl	56(%rsp),%eax
320	psrld	$31,%xmm12
321	xorl	%edx,%ecx
322	roll	$5,%ebx
323	addl	%esi,%eax
324	movdqa	%xmm3,%xmm13
325	andl	%ecx,%edi
326	xorl	%edx,%ecx
327	psrld	$30,%xmm3
328	addl	%ebx,%eax
329	rorl	$7,%ebx
330	cmpl	$11,%r8d
331	jb	.Laesenclast1
332	movups	64(%r15),%xmm0
333.byte	102,15,56,220,209
334	movups	80(%r15),%xmm1
335.byte	102,15,56,220,208
336	je	.Laesenclast1
337	movups	96(%r15),%xmm0
338.byte	102,15,56,220,209
339	movups	112(%r15),%xmm1
340.byte	102,15,56,220,208
341.Laesenclast1:
342.byte	102,15,56,221,209
343	movups	16-112(%r15),%xmm0
344	por	%xmm12,%xmm11
345	xorl	%edx,%edi
346	movl	%eax,%esi
347	addl	60(%rsp),%ebp
348	pslld	$2,%xmm13
349	pxor	%xmm3,%xmm11
350	xorl	%ecx,%ebx
351	movdqa	16(%r11),%xmm3
352	roll	$5,%eax
353	addl	%edi,%ebp
354	andl	%ebx,%esi
355	pxor	%xmm13,%xmm11
356	pshufd	$238,%xmm10,%xmm13
357	xorl	%ecx,%ebx
358	addl	%eax,%ebp
359	rorl	$7,%eax
360	pxor	%xmm8,%xmm4
361	xorl	%ecx,%esi
362	movl	%ebp,%edi
363	addl	0(%rsp),%edx
364	punpcklqdq	%xmm11,%xmm13
365	xorl	%ebx,%eax
366	roll	$5,%ebp
367	pxor	%xmm5,%xmm4
368	addl	%esi,%edx
369	movups	16(%r12),%xmm14
370	xorps	%xmm15,%xmm14
371	movups	%xmm2,0(%r12,%r13,1)
372	xorps	%xmm14,%xmm2
373	movups	-80(%r15),%xmm1
374.byte	102,15,56,220,208
375	andl	%eax,%edi
376	movdqa	%xmm3,%xmm12
377	xorl	%ebx,%eax
378	paddd	%xmm11,%xmm3
379	addl	%ebp,%edx
380	pxor	%xmm13,%xmm4
381	rorl	$7,%ebp
382	xorl	%ebx,%edi
383	movl	%edx,%esi
384	addl	4(%rsp),%ecx
385	movdqa	%xmm4,%xmm13
386	xorl	%eax,%ebp
387	roll	$5,%edx
388	movdqa	%xmm3,48(%rsp)
389	addl	%edi,%ecx
390	andl	%ebp,%esi
391	xorl	%eax,%ebp
392	pslld	$2,%xmm4
393	addl	%edx,%ecx
394	rorl	$7,%edx
395	psrld	$30,%xmm13
396	xorl	%eax,%esi
397	movl	%ecx,%edi
398	addl	8(%rsp),%ebx
399	movups	-64(%r15),%xmm0
400.byte	102,15,56,220,209
401	por	%xmm13,%xmm4
402	xorl	%ebp,%edx
403	roll	$5,%ecx
404	pshufd	$238,%xmm11,%xmm3
405	addl	%esi,%ebx
406	andl	%edx,%edi
407	xorl	%ebp,%edx
408	addl	%ecx,%ebx
409	addl	12(%rsp),%eax
410	xorl	%ebp,%edi
411	movl	%ebx,%esi
412	roll	$5,%ebx
413	addl	%edi,%eax
414	xorl	%edx,%esi
415	rorl	$7,%ecx
416	addl	%ebx,%eax
417	pxor	%xmm9,%xmm5
418	addl	16(%rsp),%ebp
419	movups	-48(%r15),%xmm1
420.byte	102,15,56,220,208
421	xorl	%ecx,%esi
422	punpcklqdq	%xmm4,%xmm3
423	movl	%eax,%edi
424	roll	$5,%eax
425	pxor	%xmm6,%xmm5
426	addl	%esi,%ebp
427	xorl	%ecx,%edi
428	movdqa	%xmm12,%xmm13
429	rorl	$7,%ebx
430	paddd	%xmm4,%xmm12
431	addl	%eax,%ebp
432	pxor	%xmm3,%xmm5
433	addl	20(%rsp),%edx
434	xorl	%ebx,%edi
435	movl	%ebp,%esi
436	roll	$5,%ebp
437	movdqa	%xmm5,%xmm3
438	addl	%edi,%edx
439	xorl	%ebx,%esi
440	movdqa	%xmm12,0(%rsp)
441	rorl	$7,%eax
442	addl	%ebp,%edx
443	addl	24(%rsp),%ecx
444	pslld	$2,%xmm5
445	xorl	%eax,%esi
446	movl	%edx,%edi
447	psrld	$30,%xmm3
448	roll	$5,%edx
449	addl	%esi,%ecx
450	movups	-32(%r15),%xmm0
451.byte	102,15,56,220,209
452	xorl	%eax,%edi
453	rorl	$7,%ebp
454	por	%xmm3,%xmm5
455	addl	%edx,%ecx
456	addl	28(%rsp),%ebx
457	pshufd	$238,%xmm4,%xmm12
458	xorl	%ebp,%edi
459	movl	%ecx,%esi
460	roll	$5,%ecx
461	addl	%edi,%ebx
462	xorl	%ebp,%esi
463	rorl	$7,%edx
464	addl	%ecx,%ebx
465	pxor	%xmm10,%xmm6
466	addl	32(%rsp),%eax
467	xorl	%edx,%esi
468	punpcklqdq	%xmm5,%xmm12
469	movl	%ebx,%edi
470	roll	$5,%ebx
471	pxor	%xmm7,%xmm6
472	addl	%esi,%eax
473	xorl	%edx,%edi
474	movdqa	32(%r11),%xmm3
475	rorl	$7,%ecx
476	paddd	%xmm5,%xmm13
477	addl	%ebx,%eax
478	pxor	%xmm12,%xmm6
479	addl	36(%rsp),%ebp
480	movups	-16(%r15),%xmm1
481.byte	102,15,56,220,208
482	xorl	%ecx,%edi
483	movl	%eax,%esi
484	roll	$5,%eax
485	movdqa	%xmm6,%xmm12
486	addl	%edi,%ebp
487	xorl	%ecx,%esi
488	movdqa	%xmm13,16(%rsp)
489	rorl	$7,%ebx
490	addl	%eax,%ebp
491	addl	40(%rsp),%edx
492	pslld	$2,%xmm6
493	xorl	%ebx,%esi
494	movl	%ebp,%edi
495	psrld	$30,%xmm12
496	roll	$5,%ebp
497	addl	%esi,%edx
498	xorl	%ebx,%edi
499	rorl	$7,%eax
500	por	%xmm12,%xmm6
501	addl	%ebp,%edx
502	addl	44(%rsp),%ecx
503	pshufd	$238,%xmm5,%xmm13
504	xorl	%eax,%edi
505	movl	%edx,%esi
506	roll	$5,%edx
507	addl	%edi,%ecx
508	movups	0(%r15),%xmm0
509.byte	102,15,56,220,209
510	xorl	%eax,%esi
511	rorl	$7,%ebp
512	addl	%edx,%ecx
513	pxor	%xmm11,%xmm7
514	addl	48(%rsp),%ebx
515	xorl	%ebp,%esi
516	punpcklqdq	%xmm6,%xmm13
517	movl	%ecx,%edi
518	roll	$5,%ecx
519	pxor	%xmm8,%xmm7
520	addl	%esi,%ebx
521	xorl	%ebp,%edi
522	movdqa	%xmm3,%xmm12
523	rorl	$7,%edx
524	paddd	%xmm6,%xmm3
525	addl	%ecx,%ebx
526	pxor	%xmm13,%xmm7
527	addl	52(%rsp),%eax
528	xorl	%edx,%edi
529	movl	%ebx,%esi
530	roll	$5,%ebx
531	movdqa	%xmm7,%xmm13
532	addl	%edi,%eax
533	xorl	%edx,%esi
534	movdqa	%xmm3,32(%rsp)
535	rorl	$7,%ecx
536	addl	%ebx,%eax
537	addl	56(%rsp),%ebp
538	movups	16(%r15),%xmm1
539.byte	102,15,56,220,208
540	pslld	$2,%xmm7
541	xorl	%ecx,%esi
542	movl	%eax,%edi
543	psrld	$30,%xmm13
544	roll	$5,%eax
545	addl	%esi,%ebp
546	xorl	%ecx,%edi
547	rorl	$7,%ebx
548	por	%xmm13,%xmm7
549	addl	%eax,%ebp
550	addl	60(%rsp),%edx
551	pshufd	$238,%xmm6,%xmm3
552	xorl	%ebx,%edi
553	movl	%ebp,%esi
554	roll	$5,%ebp
555	addl	%edi,%edx
556	xorl	%ebx,%esi
557	rorl	$7,%eax
558	addl	%ebp,%edx
559	pxor	%xmm4,%xmm8
560	addl	0(%rsp),%ecx
561	xorl	%eax,%esi
562	punpcklqdq	%xmm7,%xmm3
563	movl	%edx,%edi
564	roll	$5,%edx
565	pxor	%xmm9,%xmm8
566	addl	%esi,%ecx
567	movups	32(%r15),%xmm0
568.byte	102,15,56,220,209
569	xorl	%eax,%edi
570	movdqa	%xmm12,%xmm13
571	rorl	$7,%ebp
572	paddd	%xmm7,%xmm12
573	addl	%edx,%ecx
574	pxor	%xmm3,%xmm8
575	addl	4(%rsp),%ebx
576	xorl	%ebp,%edi
577	movl	%ecx,%esi
578	roll	$5,%ecx
579	movdqa	%xmm8,%xmm3
580	addl	%edi,%ebx
581	xorl	%ebp,%esi
582	movdqa	%xmm12,48(%rsp)
583	rorl	$7,%edx
584	addl	%ecx,%ebx
585	addl	8(%rsp),%eax
586	pslld	$2,%xmm8
587	xorl	%edx,%esi
588	movl	%ebx,%edi
589	psrld	$30,%xmm3
590	roll	$5,%ebx
591	addl	%esi,%eax
592	xorl	%edx,%edi
593	rorl	$7,%ecx
594	por	%xmm3,%xmm8
595	addl	%ebx,%eax
596	addl	12(%rsp),%ebp
597	movups	48(%r15),%xmm1
598.byte	102,15,56,220,208
599	pshufd	$238,%xmm7,%xmm12
600	xorl	%ecx,%edi
601	movl	%eax,%esi
602	roll	$5,%eax
603	addl	%edi,%ebp
604	xorl	%ecx,%esi
605	rorl	$7,%ebx
606	addl	%eax,%ebp
607	pxor	%xmm5,%xmm9
608	addl	16(%rsp),%edx
609	xorl	%ebx,%esi
610	punpcklqdq	%xmm8,%xmm12
611	movl	%ebp,%edi
612	roll	$5,%ebp
613	pxor	%xmm10,%xmm9
614	addl	%esi,%edx
615	xorl	%ebx,%edi
616	movdqa	%xmm13,%xmm3
617	rorl	$7,%eax
618	paddd	%xmm8,%xmm13
619	addl	%ebp,%edx
620	pxor	%xmm12,%xmm9
621	addl	20(%rsp),%ecx
622	xorl	%eax,%edi
623	movl	%edx,%esi
624	roll	$5,%edx
625	movdqa	%xmm9,%xmm12
626	addl	%edi,%ecx
627	cmpl	$11,%r8d
628	jb	.Laesenclast2
629	movups	64(%r15),%xmm0
630.byte	102,15,56,220,209
631	movups	80(%r15),%xmm1
632.byte	102,15,56,220,208
633	je	.Laesenclast2
634	movups	96(%r15),%xmm0
635.byte	102,15,56,220,209
636	movups	112(%r15),%xmm1
637.byte	102,15,56,220,208
638.Laesenclast2:
639.byte	102,15,56,221,209
640	movups	16-112(%r15),%xmm0
641	xorl	%eax,%esi
642	movdqa	%xmm13,0(%rsp)
643	rorl	$7,%ebp
644	addl	%edx,%ecx
645	addl	24(%rsp),%ebx
646	pslld	$2,%xmm9
647	xorl	%ebp,%esi
648	movl	%ecx,%edi
649	psrld	$30,%xmm12
650	roll	$5,%ecx
651	addl	%esi,%ebx
652	xorl	%ebp,%edi
653	rorl	$7,%edx
654	por	%xmm12,%xmm9
655	addl	%ecx,%ebx
656	addl	28(%rsp),%eax
657	pshufd	$238,%xmm8,%xmm13
658	rorl	$7,%ecx
659	movl	%ebx,%esi
660	xorl	%edx,%edi
661	roll	$5,%ebx
662	addl	%edi,%eax
663	xorl	%ecx,%esi
664	xorl	%edx,%ecx
665	addl	%ebx,%eax
666	pxor	%xmm6,%xmm10
667	addl	32(%rsp),%ebp
668	movups	32(%r12),%xmm14
669	xorps	%xmm15,%xmm14
670	movups	%xmm2,16(%r13,%r12,1)
671	xorps	%xmm14,%xmm2
672	movups	-80(%r15),%xmm1
673.byte	102,15,56,220,208
674	andl	%ecx,%esi
675	xorl	%edx,%ecx
676	rorl	$7,%ebx
677	punpcklqdq	%xmm9,%xmm13
678	movl	%eax,%edi
679	xorl	%ecx,%esi
680	pxor	%xmm11,%xmm10
681	roll	$5,%eax
682	addl	%esi,%ebp
683	movdqa	%xmm3,%xmm12
684	xorl	%ebx,%edi
685	paddd	%xmm9,%xmm3
686	xorl	%ecx,%ebx
687	pxor	%xmm13,%xmm10
688	addl	%eax,%ebp
689	addl	36(%rsp),%edx
690	andl	%ebx,%edi
691	xorl	%ecx,%ebx
692	rorl	$7,%eax
693	movdqa	%xmm10,%xmm13
694	movl	%ebp,%esi
695	xorl	%ebx,%edi
696	movdqa	%xmm3,16(%rsp)
697	roll	$5,%ebp
698	addl	%edi,%edx
699	movups	-64(%r15),%xmm0
700.byte	102,15,56,220,209
701	xorl	%eax,%esi
702	pslld	$2,%xmm10
703	xorl	%ebx,%eax
704	addl	%ebp,%edx
705	psrld	$30,%xmm13
706	addl	40(%rsp),%ecx
707	andl	%eax,%esi
708	xorl	%ebx,%eax
709	por	%xmm13,%xmm10
710	rorl	$7,%ebp
711	movl	%edx,%edi
712	xorl	%eax,%esi
713	roll	$5,%edx
714	pshufd	$238,%xmm9,%xmm3
715	addl	%esi,%ecx
716	xorl	%ebp,%edi
717	xorl	%eax,%ebp
718	addl	%edx,%ecx
719	addl	44(%rsp),%ebx
720	andl	%ebp,%edi
721	xorl	%eax,%ebp
722	rorl	$7,%edx
723	movups	-48(%r15),%xmm1
724.byte	102,15,56,220,208
725	movl	%ecx,%esi
726	xorl	%ebp,%edi
727	roll	$5,%ecx
728	addl	%edi,%ebx
729	xorl	%edx,%esi
730	xorl	%ebp,%edx
731	addl	%ecx,%ebx
732	pxor	%xmm7,%xmm11
733	addl	48(%rsp),%eax
734	andl	%edx,%esi
735	xorl	%ebp,%edx
736	rorl	$7,%ecx
737	punpcklqdq	%xmm10,%xmm3
738	movl	%ebx,%edi
739	xorl	%edx,%esi
740	pxor	%xmm4,%xmm11
741	roll	$5,%ebx
742	addl	%esi,%eax
743	movdqa	48(%r11),%xmm13
744	xorl	%ecx,%edi
745	paddd	%xmm10,%xmm12
746	xorl	%edx,%ecx
747	pxor	%xmm3,%xmm11
748	addl	%ebx,%eax
749	addl	52(%rsp),%ebp
750	movups	-32(%r15),%xmm0
751.byte	102,15,56,220,209
752	andl	%ecx,%edi
753	xorl	%edx,%ecx
754	rorl	$7,%ebx
755	movdqa	%xmm11,%xmm3
756	movl	%eax,%esi
757	xorl	%ecx,%edi
758	movdqa	%xmm12,32(%rsp)
759	roll	$5,%eax
760	addl	%edi,%ebp
761	xorl	%ebx,%esi
762	pslld	$2,%xmm11
763	xorl	%ecx,%ebx
764	addl	%eax,%ebp
765	psrld	$30,%xmm3
766	addl	56(%rsp),%edx
767	andl	%ebx,%esi
768	xorl	%ecx,%ebx
769	por	%xmm3,%xmm11
770	rorl	$7,%eax
771	movl	%ebp,%edi
772	xorl	%ebx,%esi
773	roll	$5,%ebp
774	pshufd	$238,%xmm10,%xmm12
775	addl	%esi,%edx
776	movups	-16(%r15),%xmm1
777.byte	102,15,56,220,208
778	xorl	%eax,%edi
779	xorl	%ebx,%eax
780	addl	%ebp,%edx
781	addl	60(%rsp),%ecx
782	andl	%eax,%edi
783	xorl	%ebx,%eax
784	rorl	$7,%ebp
785	movl	%edx,%esi
786	xorl	%eax,%edi
787	roll	$5,%edx
788	addl	%edi,%ecx
789	xorl	%ebp,%esi
790	xorl	%eax,%ebp
791	addl	%edx,%ecx
792	pxor	%xmm8,%xmm4
793	addl	0(%rsp),%ebx
794	andl	%ebp,%esi
795	xorl	%eax,%ebp
796	rorl	$7,%edx
797	movups	0(%r15),%xmm0
798.byte	102,15,56,220,209
799	punpcklqdq	%xmm11,%xmm12
800	movl	%ecx,%edi
801	xorl	%ebp,%esi
802	pxor	%xmm5,%xmm4
803	roll	$5,%ecx
804	addl	%esi,%ebx
805	movdqa	%xmm13,%xmm3
806	xorl	%edx,%edi
807	paddd	%xmm11,%xmm13
808	xorl	%ebp,%edx
809	pxor	%xmm12,%xmm4
810	addl	%ecx,%ebx
811	addl	4(%rsp),%eax
812	andl	%edx,%edi
813	xorl	%ebp,%edx
814	rorl	$7,%ecx
815	movdqa	%xmm4,%xmm12
816	movl	%ebx,%esi
817	xorl	%edx,%edi
818	movdqa	%xmm13,48(%rsp)
819	roll	$5,%ebx
820	addl	%edi,%eax
821	xorl	%ecx,%esi
822	pslld	$2,%xmm4
823	xorl	%edx,%ecx
824	addl	%ebx,%eax
825	psrld	$30,%xmm12
826	addl	8(%rsp),%ebp
827	movups	16(%r15),%xmm1
828.byte	102,15,56,220,208
829	andl	%ecx,%esi
830	xorl	%edx,%ecx
831	por	%xmm12,%xmm4
832	rorl	$7,%ebx
833	movl	%eax,%edi
834	xorl	%ecx,%esi
835	roll	$5,%eax
836	pshufd	$238,%xmm11,%xmm13
837	addl	%esi,%ebp
838	xorl	%ebx,%edi
839	xorl	%ecx,%ebx
840	addl	%eax,%ebp
841	addl	12(%rsp),%edx
842	andl	%ebx,%edi
843	xorl	%ecx,%ebx
844	rorl	$7,%eax
845	movl	%ebp,%esi
846	xorl	%ebx,%edi
847	roll	$5,%ebp
848	addl	%edi,%edx
849	movups	32(%r15),%xmm0
850.byte	102,15,56,220,209
851	xorl	%eax,%esi
852	xorl	%ebx,%eax
853	addl	%ebp,%edx
854	pxor	%xmm9,%xmm5
855	addl	16(%rsp),%ecx
856	andl	%eax,%esi
857	xorl	%ebx,%eax
858	rorl	$7,%ebp
859	punpcklqdq	%xmm4,%xmm13
860	movl	%edx,%edi
861	xorl	%eax,%esi
862	pxor	%xmm6,%xmm5
863	roll	$5,%edx
864	addl	%esi,%ecx
865	movdqa	%xmm3,%xmm12
866	xorl	%ebp,%edi
867	paddd	%xmm4,%xmm3
868	xorl	%eax,%ebp
869	pxor	%xmm13,%xmm5
870	addl	%edx,%ecx
871	addl	20(%rsp),%ebx
872	andl	%ebp,%edi
873	xorl	%eax,%ebp
874	rorl	$7,%edx
875	movups	48(%r15),%xmm1
876.byte	102,15,56,220,208
877	movdqa	%xmm5,%xmm13
878	movl	%ecx,%esi
879	xorl	%ebp,%edi
880	movdqa	%xmm3,0(%rsp)
881	roll	$5,%ecx
882	addl	%edi,%ebx
883	xorl	%edx,%esi
884	pslld	$2,%xmm5
885	xorl	%ebp,%edx
886	addl	%ecx,%ebx
887	psrld	$30,%xmm13
888	addl	24(%rsp),%eax
889	andl	%edx,%esi
890	xorl	%ebp,%edx
891	por	%xmm13,%xmm5
892	rorl	$7,%ecx
893	movl	%ebx,%edi
894	xorl	%edx,%esi
895	roll	$5,%ebx
896	pshufd	$238,%xmm4,%xmm3
897	addl	%esi,%eax
898	xorl	%ecx,%edi
899	xorl	%edx,%ecx
900	addl	%ebx,%eax
901	addl	28(%rsp),%ebp
902	cmpl	$11,%r8d
903	jb	.Laesenclast3
904	movups	64(%r15),%xmm0
905.byte	102,15,56,220,209
906	movups	80(%r15),%xmm1
907.byte	102,15,56,220,208
908	je	.Laesenclast3
909	movups	96(%r15),%xmm0
910.byte	102,15,56,220,209
911	movups	112(%r15),%xmm1
912.byte	102,15,56,220,208
913.Laesenclast3:
914.byte	102,15,56,221,209
915	movups	16-112(%r15),%xmm0
916	andl	%ecx,%edi
917	xorl	%edx,%ecx
918	rorl	$7,%ebx
919	movl	%eax,%esi
920	xorl	%ecx,%edi
921	roll	$5,%eax
922	addl	%edi,%ebp
923	xorl	%ebx,%esi
924	xorl	%ecx,%ebx
925	addl	%eax,%ebp
926	pxor	%xmm10,%xmm6
927	addl	32(%rsp),%edx
928	andl	%ebx,%esi
929	xorl	%ecx,%ebx
930	rorl	$7,%eax
931	punpcklqdq	%xmm5,%xmm3
932	movl	%ebp,%edi
933	xorl	%ebx,%esi
934	pxor	%xmm7,%xmm6
935	roll	$5,%ebp
936	addl	%esi,%edx
937	movups	48(%r12),%xmm14
938	xorps	%xmm15,%xmm14
939	movups	%xmm2,32(%r13,%r12,1)
940	xorps	%xmm14,%xmm2
941	movups	-80(%r15),%xmm1
942.byte	102,15,56,220,208
943	movdqa	%xmm12,%xmm13
944	xorl	%eax,%edi
945	paddd	%xmm5,%xmm12
946	xorl	%ebx,%eax
947	pxor	%xmm3,%xmm6
948	addl	%ebp,%edx
949	addl	36(%rsp),%ecx
950	andl	%eax,%edi
951	xorl	%ebx,%eax
952	rorl	$7,%ebp
953	movdqa	%xmm6,%xmm3
954	movl	%edx,%esi
955	xorl	%eax,%edi
956	movdqa	%xmm12,16(%rsp)
957	roll	$5,%edx
958	addl	%edi,%ecx
959	xorl	%ebp,%esi
960	pslld	$2,%xmm6
961	xorl	%eax,%ebp
962	addl	%edx,%ecx
963	psrld	$30,%xmm3
964	addl	40(%rsp),%ebx
965	andl	%ebp,%esi
966	xorl	%eax,%ebp
967	por	%xmm3,%xmm6
968	rorl	$7,%edx
969	movups	-64(%r15),%xmm0
970.byte	102,15,56,220,209
971	movl	%ecx,%edi
972	xorl	%ebp,%esi
973	roll	$5,%ecx
974	pshufd	$238,%xmm5,%xmm12
975	addl	%esi,%ebx
976	xorl	%edx,%edi
977	xorl	%ebp,%edx
978	addl	%ecx,%ebx
979	addl	44(%rsp),%eax
980	andl	%edx,%edi
981	xorl	%ebp,%edx
982	rorl	$7,%ecx
983	movl	%ebx,%esi
984	xorl	%edx,%edi
985	roll	$5,%ebx
986	addl	%edi,%eax
987	xorl	%edx,%esi
988	addl	%ebx,%eax
989	pxor	%xmm11,%xmm7
990	addl	48(%rsp),%ebp
991	movups	-48(%r15),%xmm1
992.byte	102,15,56,220,208
993	xorl	%ecx,%esi
994	punpcklqdq	%xmm6,%xmm12
995	movl	%eax,%edi
996	roll	$5,%eax
997	pxor	%xmm8,%xmm7
998	addl	%esi,%ebp
999	xorl	%ecx,%edi
1000	movdqa	%xmm13,%xmm3
1001	rorl	$7,%ebx
1002	paddd	%xmm6,%xmm13
1003	addl	%eax,%ebp
1004	pxor	%xmm12,%xmm7
1005	addl	52(%rsp),%edx
1006	xorl	%ebx,%edi
1007	movl	%ebp,%esi
1008	roll	$5,%ebp
1009	movdqa	%xmm7,%xmm12
1010	addl	%edi,%edx
1011	xorl	%ebx,%esi
1012	movdqa	%xmm13,32(%rsp)
1013	rorl	$7,%eax
1014	addl	%ebp,%edx
1015	addl	56(%rsp),%ecx
1016	pslld	$2,%xmm7
1017	xorl	%eax,%esi
1018	movl	%edx,%edi
1019	psrld	$30,%xmm12
1020	roll	$5,%edx
1021	addl	%esi,%ecx
1022	movups	-32(%r15),%xmm0
1023.byte	102,15,56,220,209
1024	xorl	%eax,%edi
1025	rorl	$7,%ebp
1026	por	%xmm12,%xmm7
1027	addl	%edx,%ecx
1028	addl	60(%rsp),%ebx
1029	xorl	%ebp,%edi
1030	movl	%ecx,%esi
1031	roll	$5,%ecx
1032	addl	%edi,%ebx
1033	xorl	%ebp,%esi
1034	rorl	$7,%edx
1035	addl	%ecx,%ebx
1036	addl	0(%rsp),%eax
1037	xorl	%edx,%esi
1038	movl	%ebx,%edi
1039	roll	$5,%ebx
1040	paddd	%xmm7,%xmm3
1041	addl	%esi,%eax
1042	xorl	%edx,%edi
1043	movdqa	%xmm3,48(%rsp)
1044	rorl	$7,%ecx
1045	addl	%ebx,%eax
1046	addl	4(%rsp),%ebp
1047	movups	-16(%r15),%xmm1
1048.byte	102,15,56,220,208
1049	xorl	%ecx,%edi
1050	movl	%eax,%esi
1051	roll	$5,%eax
1052	addl	%edi,%ebp
1053	xorl	%ecx,%esi
1054	rorl	$7,%ebx
1055	addl	%eax,%ebp
1056	addl	8(%rsp),%edx
1057	xorl	%ebx,%esi
1058	movl	%ebp,%edi
1059	roll	$5,%ebp
1060	addl	%esi,%edx
1061	xorl	%ebx,%edi
1062	rorl	$7,%eax
1063	addl	%ebp,%edx
1064	addl	12(%rsp),%ecx
1065	xorl	%eax,%edi
1066	movl	%edx,%esi
1067	roll	$5,%edx
1068	addl	%edi,%ecx
1069	movups	0(%r15),%xmm0
1070.byte	102,15,56,220,209
1071	xorl	%eax,%esi
1072	rorl	$7,%ebp
1073	addl	%edx,%ecx
1074	cmpq	%r14,%r10
1075	je	.Ldone_ssse3
1076	movdqa	64(%r11),%xmm3
1077	movdqa	0(%r11),%xmm13
1078	movdqu	0(%r10),%xmm4
1079	movdqu	16(%r10),%xmm5
1080	movdqu	32(%r10),%xmm6
1081	movdqu	48(%r10),%xmm7
1082.byte	102,15,56,0,227
1083	addq	$64,%r10
1084	addl	16(%rsp),%ebx
1085	xorl	%ebp,%esi
1086	movl	%ecx,%edi
1087.byte	102,15,56,0,235
1088	roll	$5,%ecx
1089	addl	%esi,%ebx
1090	xorl	%ebp,%edi
1091	rorl	$7,%edx
1092	paddd	%xmm13,%xmm4
1093	addl	%ecx,%ebx
1094	addl	20(%rsp),%eax
1095	xorl	%edx,%edi
1096	movl	%ebx,%esi
1097	movdqa	%xmm4,0(%rsp)
1098	roll	$5,%ebx
1099	addl	%edi,%eax
1100	xorl	%edx,%esi
1101	rorl	$7,%ecx
1102	psubd	%xmm13,%xmm4
1103	addl	%ebx,%eax
1104	addl	24(%rsp),%ebp
1105	movups	16(%r15),%xmm1
1106.byte	102,15,56,220,208
1107	xorl	%ecx,%esi
1108	movl	%eax,%edi
1109	roll	$5,%eax
1110	addl	%esi,%ebp
1111	xorl	%ecx,%edi
1112	rorl	$7,%ebx
1113	addl	%eax,%ebp
1114	addl	28(%rsp),%edx
1115	xorl	%ebx,%edi
1116	movl	%ebp,%esi
1117	roll	$5,%ebp
1118	addl	%edi,%edx
1119	xorl	%ebx,%esi
1120	rorl	$7,%eax
1121	addl	%ebp,%edx
1122	addl	32(%rsp),%ecx
1123	xorl	%eax,%esi
1124	movl	%edx,%edi
1125.byte	102,15,56,0,243
1126	roll	$5,%edx
1127	addl	%esi,%ecx
1128	movups	32(%r15),%xmm0
1129.byte	102,15,56,220,209
1130	xorl	%eax,%edi
1131	rorl	$7,%ebp
1132	paddd	%xmm13,%xmm5
1133	addl	%edx,%ecx
1134	addl	36(%rsp),%ebx
1135	xorl	%ebp,%edi
1136	movl	%ecx,%esi
1137	movdqa	%xmm5,16(%rsp)
1138	roll	$5,%ecx
1139	addl	%edi,%ebx
1140	xorl	%ebp,%esi
1141	rorl	$7,%edx
1142	psubd	%xmm13,%xmm5
1143	addl	%ecx,%ebx
1144	addl	40(%rsp),%eax
1145	xorl	%edx,%esi
1146	movl	%ebx,%edi
1147	roll	$5,%ebx
1148	addl	%esi,%eax
1149	xorl	%edx,%edi
1150	rorl	$7,%ecx
1151	addl	%ebx,%eax
1152	addl	44(%rsp),%ebp
1153	movups	48(%r15),%xmm1
1154.byte	102,15,56,220,208
1155	xorl	%ecx,%edi
1156	movl	%eax,%esi
1157	roll	$5,%eax
1158	addl	%edi,%ebp
1159	xorl	%ecx,%esi
1160	rorl	$7,%ebx
1161	addl	%eax,%ebp
1162	addl	48(%rsp),%edx
1163	xorl	%ebx,%esi
1164	movl	%ebp,%edi
1165.byte	102,15,56,0,251
1166	roll	$5,%ebp
1167	addl	%esi,%edx
1168	xorl	%ebx,%edi
1169	rorl	$7,%eax
1170	paddd	%xmm13,%xmm6
1171	addl	%ebp,%edx
1172	addl	52(%rsp),%ecx
1173	xorl	%eax,%edi
1174	movl	%edx,%esi
1175	movdqa	%xmm6,32(%rsp)
1176	roll	$5,%edx
1177	addl	%edi,%ecx
1178	cmpl	$11,%r8d
1179	jb	.Laesenclast4
1180	movups	64(%r15),%xmm0
1181.byte	102,15,56,220,209
1182	movups	80(%r15),%xmm1
1183.byte	102,15,56,220,208
1184	je	.Laesenclast4
1185	movups	96(%r15),%xmm0
1186.byte	102,15,56,220,209
1187	movups	112(%r15),%xmm1
1188.byte	102,15,56,220,208
1189.Laesenclast4:
1190.byte	102,15,56,221,209
1191	movups	16-112(%r15),%xmm0
1192	xorl	%eax,%esi
1193	rorl	$7,%ebp
1194	psubd	%xmm13,%xmm6
1195	addl	%edx,%ecx
1196	addl	56(%rsp),%ebx
1197	xorl	%ebp,%esi
1198	movl	%ecx,%edi
1199	roll	$5,%ecx
1200	addl	%esi,%ebx
1201	xorl	%ebp,%edi
1202	rorl	$7,%edx
1203	addl	%ecx,%ebx
1204	addl	60(%rsp),%eax
1205	xorl	%edx,%edi
1206	movl	%ebx,%esi
1207	roll	$5,%ebx
1208	addl	%edi,%eax
1209	rorl	$7,%ecx
1210	addl	%ebx,%eax
1211	movups	%xmm2,48(%r13,%r12,1)
1212	leaq	64(%r12),%r12
1213
1214	addl	0(%r9),%eax
1215	addl	4(%r9),%esi
1216	addl	8(%r9),%ecx
1217	addl	12(%r9),%edx
1218	movl	%eax,0(%r9)
1219	addl	16(%r9),%ebp
1220	movl	%esi,4(%r9)
1221	movl	%esi,%ebx
1222	movl	%ecx,8(%r9)
1223	movl	%ecx,%edi
1224	movl	%edx,12(%r9)
1225	xorl	%edx,%edi
1226	movl	%ebp,16(%r9)
1227	andl	%edi,%esi
1228	jmp	.Loop_ssse3
1229
1230.Ldone_ssse3:
1231	addl	16(%rsp),%ebx
1232	xorl	%ebp,%esi
1233	movl	%ecx,%edi
1234	roll	$5,%ecx
1235	addl	%esi,%ebx
1236	xorl	%ebp,%edi
1237	rorl	$7,%edx
1238	addl	%ecx,%ebx
1239	addl	20(%rsp),%eax
1240	xorl	%edx,%edi
1241	movl	%ebx,%esi
1242	roll	$5,%ebx
1243	addl	%edi,%eax
1244	xorl	%edx,%esi
1245	rorl	$7,%ecx
1246	addl	%ebx,%eax
1247	addl	24(%rsp),%ebp
1248	movups	16(%r15),%xmm1
1249.byte	102,15,56,220,208
1250	xorl	%ecx,%esi
1251	movl	%eax,%edi
1252	roll	$5,%eax
1253	addl	%esi,%ebp
1254	xorl	%ecx,%edi
1255	rorl	$7,%ebx
1256	addl	%eax,%ebp
1257	addl	28(%rsp),%edx
1258	xorl	%ebx,%edi
1259	movl	%ebp,%esi
1260	roll	$5,%ebp
1261	addl	%edi,%edx
1262	xorl	%ebx,%esi
1263	rorl	$7,%eax
1264	addl	%ebp,%edx
1265	addl	32(%rsp),%ecx
1266	xorl	%eax,%esi
1267	movl	%edx,%edi
1268	roll	$5,%edx
1269	addl	%esi,%ecx
1270	movups	32(%r15),%xmm0
1271.byte	102,15,56,220,209
1272	xorl	%eax,%edi
1273	rorl	$7,%ebp
1274	addl	%edx,%ecx
1275	addl	36(%rsp),%ebx
1276	xorl	%ebp,%edi
1277	movl	%ecx,%esi
1278	roll	$5,%ecx
1279	addl	%edi,%ebx
1280	xorl	%ebp,%esi
1281	rorl	$7,%edx
1282	addl	%ecx,%ebx
1283	addl	40(%rsp),%eax
1284	xorl	%edx,%esi
1285	movl	%ebx,%edi
1286	roll	$5,%ebx
1287	addl	%esi,%eax
1288	xorl	%edx,%edi
1289	rorl	$7,%ecx
1290	addl	%ebx,%eax
1291	addl	44(%rsp),%ebp
1292	movups	48(%r15),%xmm1
1293.byte	102,15,56,220,208
1294	xorl	%ecx,%edi
1295	movl	%eax,%esi
1296	roll	$5,%eax
1297	addl	%edi,%ebp
1298	xorl	%ecx,%esi
1299	rorl	$7,%ebx
1300	addl	%eax,%ebp
1301	addl	48(%rsp),%edx
1302	xorl	%ebx,%esi
1303	movl	%ebp,%edi
1304	roll	$5,%ebp
1305	addl	%esi,%edx
1306	xorl	%ebx,%edi
1307	rorl	$7,%eax
1308	addl	%ebp,%edx
1309	addl	52(%rsp),%ecx
1310	xorl	%eax,%edi
1311	movl	%edx,%esi
1312	roll	$5,%edx
1313	addl	%edi,%ecx
1314	cmpl	$11,%r8d
1315	jb	.Laesenclast5
1316	movups	64(%r15),%xmm0
1317.byte	102,15,56,220,209
1318	movups	80(%r15),%xmm1
1319.byte	102,15,56,220,208
1320	je	.Laesenclast5
1321	movups	96(%r15),%xmm0
1322.byte	102,15,56,220,209
1323	movups	112(%r15),%xmm1
1324.byte	102,15,56,220,208
1325.Laesenclast5:
1326.byte	102,15,56,221,209
1327	movups	16-112(%r15),%xmm0
1328	xorl	%eax,%esi
1329	rorl	$7,%ebp
1330	addl	%edx,%ecx
1331	addl	56(%rsp),%ebx
1332	xorl	%ebp,%esi
1333	movl	%ecx,%edi
1334	roll	$5,%ecx
1335	addl	%esi,%ebx
1336	xorl	%ebp,%edi
1337	rorl	$7,%edx
1338	addl	%ecx,%ebx
1339	addl	60(%rsp),%eax
1340	xorl	%edx,%edi
1341	movl	%ebx,%esi
1342	roll	$5,%ebx
1343	addl	%edi,%eax
1344	rorl	$7,%ecx
1345	addl	%ebx,%eax
1346	movups	%xmm2,48(%r13,%r12,1)
1347	movq	88(%rsp),%r8
1348
1349	addl	0(%r9),%eax
1350	addl	4(%r9),%esi
1351	addl	8(%r9),%ecx
1352	movl	%eax,0(%r9)
1353	addl	12(%r9),%edx
1354	movl	%esi,4(%r9)
1355	addl	16(%r9),%ebp
1356	movl	%ecx,8(%r9)
1357	movl	%edx,12(%r9)
1358	movl	%ebp,16(%r9)
1359	movups	%xmm2,(%r8)
1360	leaq	104(%rsp),%rsi
1361	movq	0(%rsi),%r15
1362	movq	8(%rsi),%r14
1363	movq	16(%rsi),%r13
1364	movq	24(%rsi),%r12
1365	movq	32(%rsi),%rbp
1366	movq	40(%rsi),%rbx
1367	leaq	48(%rsi),%rsp
1368.Lepilogue_ssse3:
1369	.byte	0xf3,0xc3
1370.size	aesni_cbc_sha1_enc_ssse3,.-aesni_cbc_sha1_enc_ssse3
1371.align	64
1372K_XX_XX:
1373.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999
1374.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
1375.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
1376.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
1377.long	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
1378.byte	0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
1379
1380.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
1381.align	64
1382.type	aesni_cbc_sha1_enc_shaext,@function
1383.align	32
1384aesni_cbc_sha1_enc_shaext:
1385	movq	8(%rsp),%r10
1386	movdqu	(%r9),%xmm8
1387	movd	16(%r9),%xmm9
1388	movdqa	K_XX_XX+80(%rip),%xmm7
1389
1390	movl	240(%rcx),%r11d
1391	subq	%rdi,%rsi
1392	movups	(%rcx),%xmm15
1393	movups	16(%rcx),%xmm0
1394	leaq	112(%rcx),%rcx
1395
1396	pshufd	$27,%xmm8,%xmm8
1397	pshufd	$27,%xmm9,%xmm9
1398	jmp	.Loop_shaext
1399
1400.align	16
1401.Loop_shaext:
1402	movups	0(%rdi),%xmm14
1403	xorps	%xmm15,%xmm14
1404	xorps	%xmm14,%xmm2
1405	movups	-80(%rcx),%xmm1
1406.byte	102,15,56,220,208
1407	movdqu	(%r10),%xmm3
1408	movdqa	%xmm9,%xmm12
1409.byte	102,15,56,0,223
1410	movdqu	16(%r10),%xmm4
1411	movdqa	%xmm8,%xmm11
1412	movups	-64(%rcx),%xmm0
1413.byte	102,15,56,220,209
1414.byte	102,15,56,0,231
1415
1416	paddd	%xmm3,%xmm9
1417	movdqu	32(%r10),%xmm5
1418	leaq	64(%r10),%r10
1419	pxor	%xmm12,%xmm3
1420	movups	-48(%rcx),%xmm1
1421.byte	102,15,56,220,208
1422	pxor	%xmm12,%xmm3
1423	movdqa	%xmm8,%xmm10
1424.byte	102,15,56,0,239
1425.byte	69,15,58,204,193,0
1426.byte	68,15,56,200,212
1427	movups	-32(%rcx),%xmm0
1428.byte	102,15,56,220,209
1429.byte	15,56,201,220
1430	movdqu	-16(%r10),%xmm6
1431	movdqa	%xmm8,%xmm9
1432.byte	102,15,56,0,247
1433	movups	-16(%rcx),%xmm1
1434.byte	102,15,56,220,208
1435.byte	69,15,58,204,194,0
1436.byte	68,15,56,200,205
1437	pxor	%xmm5,%xmm3
1438.byte	15,56,201,229
1439	movups	0(%rcx),%xmm0
1440.byte	102,15,56,220,209
1441	movdqa	%xmm8,%xmm10
1442.byte	69,15,58,204,193,0
1443.byte	68,15,56,200,214
1444	movups	16(%rcx),%xmm1
1445.byte	102,15,56,220,208
1446.byte	15,56,202,222
1447	pxor	%xmm6,%xmm4
1448.byte	15,56,201,238
1449	movups	32(%rcx),%xmm0
1450.byte	102,15,56,220,209
1451	movdqa	%xmm8,%xmm9
1452.byte	69,15,58,204,194,0
1453.byte	68,15,56,200,203
1454	movups	48(%rcx),%xmm1
1455.byte	102,15,56,220,208
1456.byte	15,56,202,227
1457	pxor	%xmm3,%xmm5
1458.byte	15,56,201,243
1459	cmpl	$11,%r11d
1460	jb	.Laesenclast6
1461	movups	64(%rcx),%xmm0
1462.byte	102,15,56,220,209
1463	movups	80(%rcx),%xmm1
1464.byte	102,15,56,220,208
1465	je	.Laesenclast6
1466	movups	96(%rcx),%xmm0
1467.byte	102,15,56,220,209
1468	movups	112(%rcx),%xmm1
1469.byte	102,15,56,220,208
1470.Laesenclast6:
1471.byte	102,15,56,221,209
1472	movups	16-112(%rcx),%xmm0
1473	movdqa	%xmm8,%xmm10
1474.byte	69,15,58,204,193,0
1475.byte	68,15,56,200,212
1476	movups	16(%rdi),%xmm14
1477	xorps	%xmm15,%xmm14
1478	movups	%xmm2,0(%rsi,%rdi,1)
1479	xorps	%xmm14,%xmm2
1480	movups	-80(%rcx),%xmm1
1481.byte	102,15,56,220,208
1482.byte	15,56,202,236
1483	pxor	%xmm4,%xmm6
1484.byte	15,56,201,220
1485	movups	-64(%rcx),%xmm0
1486.byte	102,15,56,220,209
1487	movdqa	%xmm8,%xmm9
1488.byte	69,15,58,204,194,1
1489.byte	68,15,56,200,205
1490	movups	-48(%rcx),%xmm1
1491.byte	102,15,56,220,208
1492.byte	15,56,202,245
1493	pxor	%xmm5,%xmm3
1494.byte	15,56,201,229
1495	movups	-32(%rcx),%xmm0
1496.byte	102,15,56,220,209
1497	movdqa	%xmm8,%xmm10
1498.byte	69,15,58,204,193,1
1499.byte	68,15,56,200,214
1500	movups	-16(%rcx),%xmm1
1501.byte	102,15,56,220,208
1502.byte	15,56,202,222
1503	pxor	%xmm6,%xmm4
1504.byte	15,56,201,238
1505	movups	0(%rcx),%xmm0
1506.byte	102,15,56,220,209
1507	movdqa	%xmm8,%xmm9
1508.byte	69,15,58,204,194,1
1509.byte	68,15,56,200,203
1510	movups	16(%rcx),%xmm1
1511.byte	102,15,56,220,208
1512.byte	15,56,202,227
1513	pxor	%xmm3,%xmm5
1514.byte	15,56,201,243
1515	movups	32(%rcx),%xmm0
1516.byte	102,15,56,220,209
1517	movdqa	%xmm8,%xmm10
1518.byte	69,15,58,204,193,1
1519.byte	68,15,56,200,212
1520	movups	48(%rcx),%xmm1
1521.byte	102,15,56,220,208
1522.byte	15,56,202,236
1523	pxor	%xmm4,%xmm6
1524.byte	15,56,201,220
1525	cmpl	$11,%r11d
1526	jb	.Laesenclast7
1527	movups	64(%rcx),%xmm0
1528.byte	102,15,56,220,209
1529	movups	80(%rcx),%xmm1
1530.byte	102,15,56,220,208
1531	je	.Laesenclast7
1532	movups	96(%rcx),%xmm0
1533.byte	102,15,56,220,209
1534	movups	112(%rcx),%xmm1
1535.byte	102,15,56,220,208
1536.Laesenclast7:
1537.byte	102,15,56,221,209
1538	movups	16-112(%rcx),%xmm0
1539	movdqa	%xmm8,%xmm9
1540.byte	69,15,58,204,194,1
1541.byte	68,15,56,200,205
1542	movups	32(%rdi),%xmm14
1543	xorps	%xmm15,%xmm14
1544	movups	%xmm2,16(%rsi,%rdi,1)
1545	xorps	%xmm14,%xmm2
1546	movups	-80(%rcx),%xmm1
1547.byte	102,15,56,220,208
1548.byte	15,56,202,245
1549	pxor	%xmm5,%xmm3
1550.byte	15,56,201,229
1551	movups	-64(%rcx),%xmm0
1552.byte	102,15,56,220,209
1553	movdqa	%xmm8,%xmm10
1554.byte	69,15,58,204,193,2
1555.byte	68,15,56,200,214
1556	movups	-48(%rcx),%xmm1
1557.byte	102,15,56,220,208
1558.byte	15,56,202,222
1559	pxor	%xmm6,%xmm4
1560.byte	15,56,201,238
1561	movups	-32(%rcx),%xmm0
1562.byte	102,15,56,220,209
1563	movdqa	%xmm8,%xmm9
1564.byte	69,15,58,204,194,2
1565.byte	68,15,56,200,203
1566	movups	-16(%rcx),%xmm1
1567.byte	102,15,56,220,208
1568.byte	15,56,202,227
1569	pxor	%xmm3,%xmm5
1570.byte	15,56,201,243
1571	movups	0(%rcx),%xmm0
1572.byte	102,15,56,220,209
1573	movdqa	%xmm8,%xmm10
1574.byte	69,15,58,204,193,2
1575.byte	68,15,56,200,212
1576	movups	16(%rcx),%xmm1
1577.byte	102,15,56,220,208
1578.byte	15,56,202,236
1579	pxor	%xmm4,%xmm6
1580.byte	15,56,201,220
1581	movups	32(%rcx),%xmm0
1582.byte	102,15,56,220,209
1583	movdqa	%xmm8,%xmm9
1584.byte	69,15,58,204,194,2
1585.byte	68,15,56,200,205
1586	movups	48(%rcx),%xmm1
1587.byte	102,15,56,220,208
1588.byte	15,56,202,245
1589	pxor	%xmm5,%xmm3
1590.byte	15,56,201,229
1591	cmpl	$11,%r11d
1592	jb	.Laesenclast8
1593	movups	64(%rcx),%xmm0
1594.byte	102,15,56,220,209
1595	movups	80(%rcx),%xmm1
1596.byte	102,15,56,220,208
1597	je	.Laesenclast8
1598	movups	96(%rcx),%xmm0
1599.byte	102,15,56,220,209
1600	movups	112(%rcx),%xmm1
1601.byte	102,15,56,220,208
1602.Laesenclast8:
1603.byte	102,15,56,221,209
1604	movups	16-112(%rcx),%xmm0
1605	movdqa	%xmm8,%xmm10
1606.byte	69,15,58,204,193,2
1607.byte	68,15,56,200,214
1608	movups	48(%rdi),%xmm14
1609	xorps	%xmm15,%xmm14
1610	movups	%xmm2,32(%rsi,%rdi,1)
1611	xorps	%xmm14,%xmm2
1612	movups	-80(%rcx),%xmm1
1613.byte	102,15,56,220,208
1614.byte	15,56,202,222
1615	pxor	%xmm6,%xmm4
1616.byte	15,56,201,238
1617	movups	-64(%rcx),%xmm0
1618.byte	102,15,56,220,209
1619	movdqa	%xmm8,%xmm9
1620.byte	69,15,58,204,194,3
1621.byte	68,15,56,200,203
1622	movups	-48(%rcx),%xmm1
1623.byte	102,15,56,220,208
1624.byte	15,56,202,227
1625	pxor	%xmm3,%xmm5
1626.byte	15,56,201,243
1627	movups	-32(%rcx),%xmm0
1628.byte	102,15,56,220,209
1629	movdqa	%xmm8,%xmm10
1630.byte	69,15,58,204,193,3
1631.byte	68,15,56,200,212
1632.byte	15,56,202,236
1633	pxor	%xmm4,%xmm6
1634	movups	-16(%rcx),%xmm1
1635.byte	102,15,56,220,208
1636	movdqa	%xmm8,%xmm9
1637.byte	69,15,58,204,194,3
1638.byte	68,15,56,200,205
1639.byte	15,56,202,245
1640	movups	0(%rcx),%xmm0
1641.byte	102,15,56,220,209
1642	movdqa	%xmm12,%xmm5
1643	movdqa	%xmm8,%xmm10
1644.byte	69,15,58,204,193,3
1645.byte	68,15,56,200,214
1646	movups	16(%rcx),%xmm1
1647.byte	102,15,56,220,208
1648	movdqa	%xmm8,%xmm9
1649.byte	69,15,58,204,194,3
1650.byte	68,15,56,200,205
1651	movups	32(%rcx),%xmm0
1652.byte	102,15,56,220,209
1653	movups	48(%rcx),%xmm1
1654.byte	102,15,56,220,208
1655	cmpl	$11,%r11d
1656	jb	.Laesenclast9
1657	movups	64(%rcx),%xmm0
1658.byte	102,15,56,220,209
1659	movups	80(%rcx),%xmm1
1660.byte	102,15,56,220,208
1661	je	.Laesenclast9
1662	movups	96(%rcx),%xmm0
1663.byte	102,15,56,220,209
1664	movups	112(%rcx),%xmm1
1665.byte	102,15,56,220,208
1666.Laesenclast9:
1667.byte	102,15,56,221,209
1668	movups	16-112(%rcx),%xmm0
1669	decq	%rdx
1670
1671	paddd	%xmm11,%xmm8
1672	movups	%xmm2,48(%rsi,%rdi,1)
1673	leaq	64(%rdi),%rdi
1674	jnz	.Loop_shaext
1675
1676	pshufd	$27,%xmm8,%xmm8
1677	pshufd	$27,%xmm9,%xmm9
1678	movups	%xmm2,(%r8)
1679	movdqu	%xmm8,(%r9)
1680	movd	%xmm9,16(%r9)
1681	.byte	0xf3,0xc3
1682.size	aesni_cbc_sha1_enc_shaext,.-aesni_cbc_sha1_enc_shaext
1683