aesni-x86.S revision 305153
1/* $FreeBSD: stable/11/secure/lib/libcrypto/i386/aesni-x86.S 305153 2016-08-31 20:33:59Z jkim $ */
2/* Do not modify. This file is auto-generated from aesni-x86.pl. */
3#ifdef PIC
4.file	"aesni-x86.S"
5.text
6.globl	aesni_encrypt
7.type	aesni_encrypt,@function
8.align	16
9aesni_encrypt:
10.L_aesni_encrypt_begin:
11	movl	4(%esp),%eax
12	movl	12(%esp),%edx
13	movups	(%eax),%xmm2
14	movl	240(%edx),%ecx
15	movl	8(%esp),%eax
16	movups	(%edx),%xmm0
17	movups	16(%edx),%xmm1
18	leal	32(%edx),%edx
19	xorps	%xmm0,%xmm2
20.L000enc1_loop_1:
21.byte	102,15,56,220,209
22	decl	%ecx
23	movups	(%edx),%xmm1
24	leal	16(%edx),%edx
25	jnz	.L000enc1_loop_1
26.byte	102,15,56,221,209
27	pxor	%xmm0,%xmm0
28	pxor	%xmm1,%xmm1
29	movups	%xmm2,(%eax)
30	pxor	%xmm2,%xmm2
31	ret
32.size	aesni_encrypt,.-.L_aesni_encrypt_begin
33.globl	aesni_decrypt
34.type	aesni_decrypt,@function
35.align	16
36aesni_decrypt:
37.L_aesni_decrypt_begin:
38	movl	4(%esp),%eax
39	movl	12(%esp),%edx
40	movups	(%eax),%xmm2
41	movl	240(%edx),%ecx
42	movl	8(%esp),%eax
43	movups	(%edx),%xmm0
44	movups	16(%edx),%xmm1
45	leal	32(%edx),%edx
46	xorps	%xmm0,%xmm2
47.L001dec1_loop_2:
48.byte	102,15,56,222,209
49	decl	%ecx
50	movups	(%edx),%xmm1
51	leal	16(%edx),%edx
52	jnz	.L001dec1_loop_2
53.byte	102,15,56,223,209
54	pxor	%xmm0,%xmm0
55	pxor	%xmm1,%xmm1
56	movups	%xmm2,(%eax)
57	pxor	%xmm2,%xmm2
58	ret
59.size	aesni_decrypt,.-.L_aesni_decrypt_begin
60.type	_aesni_encrypt2,@function
61.align	16
62_aesni_encrypt2:
63	movups	(%edx),%xmm0
64	shll	$4,%ecx
65	movups	16(%edx),%xmm1
66	xorps	%xmm0,%xmm2
67	pxor	%xmm0,%xmm3
68	movups	32(%edx),%xmm0
69	leal	32(%edx,%ecx,1),%edx
70	negl	%ecx
71	addl	$16,%ecx
72.L002enc2_loop:
73.byte	102,15,56,220,209
74.byte	102,15,56,220,217
75	movups	(%edx,%ecx,1),%xmm1
76	addl	$32,%ecx
77.byte	102,15,56,220,208
78.byte	102,15,56,220,216
79	movups	-16(%edx,%ecx,1),%xmm0
80	jnz	.L002enc2_loop
81.byte	102,15,56,220,209
82.byte	102,15,56,220,217
83.byte	102,15,56,221,208
84.byte	102,15,56,221,216
85	ret
86.size	_aesni_encrypt2,.-_aesni_encrypt2
87.type	_aesni_decrypt2,@function
88.align	16
89_aesni_decrypt2:
90	movups	(%edx),%xmm0
91	shll	$4,%ecx
92	movups	16(%edx),%xmm1
93	xorps	%xmm0,%xmm2
94	pxor	%xmm0,%xmm3
95	movups	32(%edx),%xmm0
96	leal	32(%edx,%ecx,1),%edx
97	negl	%ecx
98	addl	$16,%ecx
99.L003dec2_loop:
100.byte	102,15,56,222,209
101.byte	102,15,56,222,217
102	movups	(%edx,%ecx,1),%xmm1
103	addl	$32,%ecx
104.byte	102,15,56,222,208
105.byte	102,15,56,222,216
106	movups	-16(%edx,%ecx,1),%xmm0
107	jnz	.L003dec2_loop
108.byte	102,15,56,222,209
109.byte	102,15,56,222,217
110.byte	102,15,56,223,208
111.byte	102,15,56,223,216
112	ret
113.size	_aesni_decrypt2,.-_aesni_decrypt2
114.type	_aesni_encrypt3,@function
115.align	16
116_aesni_encrypt3:
117	movups	(%edx),%xmm0
118	shll	$4,%ecx
119	movups	16(%edx),%xmm1
120	xorps	%xmm0,%xmm2
121	pxor	%xmm0,%xmm3
122	pxor	%xmm0,%xmm4
123	movups	32(%edx),%xmm0
124	leal	32(%edx,%ecx,1),%edx
125	negl	%ecx
126	addl	$16,%ecx
127.L004enc3_loop:
128.byte	102,15,56,220,209
129.byte	102,15,56,220,217
130.byte	102,15,56,220,225
131	movups	(%edx,%ecx,1),%xmm1
132	addl	$32,%ecx
133.byte	102,15,56,220,208
134.byte	102,15,56,220,216
135.byte	102,15,56,220,224
136	movups	-16(%edx,%ecx,1),%xmm0
137	jnz	.L004enc3_loop
138.byte	102,15,56,220,209
139.byte	102,15,56,220,217
140.byte	102,15,56,220,225
141.byte	102,15,56,221,208
142.byte	102,15,56,221,216
143.byte	102,15,56,221,224
144	ret
145.size	_aesni_encrypt3,.-_aesni_encrypt3
146.type	_aesni_decrypt3,@function
147.align	16
148_aesni_decrypt3:
149	movups	(%edx),%xmm0
150	shll	$4,%ecx
151	movups	16(%edx),%xmm1
152	xorps	%xmm0,%xmm2
153	pxor	%xmm0,%xmm3
154	pxor	%xmm0,%xmm4
155	movups	32(%edx),%xmm0
156	leal	32(%edx,%ecx,1),%edx
157	negl	%ecx
158	addl	$16,%ecx
159.L005dec3_loop:
160.byte	102,15,56,222,209
161.byte	102,15,56,222,217
162.byte	102,15,56,222,225
163	movups	(%edx,%ecx,1),%xmm1
164	addl	$32,%ecx
165.byte	102,15,56,222,208
166.byte	102,15,56,222,216
167.byte	102,15,56,222,224
168	movups	-16(%edx,%ecx,1),%xmm0
169	jnz	.L005dec3_loop
170.byte	102,15,56,222,209
171.byte	102,15,56,222,217
172.byte	102,15,56,222,225
173.byte	102,15,56,223,208
174.byte	102,15,56,223,216
175.byte	102,15,56,223,224
176	ret
177.size	_aesni_decrypt3,.-_aesni_decrypt3
178.type	_aesni_encrypt4,@function
179.align	16
180_aesni_encrypt4:
181	movups	(%edx),%xmm0
182	movups	16(%edx),%xmm1
183	shll	$4,%ecx
184	xorps	%xmm0,%xmm2
185	pxor	%xmm0,%xmm3
186	pxor	%xmm0,%xmm4
187	pxor	%xmm0,%xmm5
188	movups	32(%edx),%xmm0
189	leal	32(%edx,%ecx,1),%edx
190	negl	%ecx
191.byte	15,31,64,0
192	addl	$16,%ecx
193.L006enc4_loop:
194.byte	102,15,56,220,209
195.byte	102,15,56,220,217
196.byte	102,15,56,220,225
197.byte	102,15,56,220,233
198	movups	(%edx,%ecx,1),%xmm1
199	addl	$32,%ecx
200.byte	102,15,56,220,208
201.byte	102,15,56,220,216
202.byte	102,15,56,220,224
203.byte	102,15,56,220,232
204	movups	-16(%edx,%ecx,1),%xmm0
205	jnz	.L006enc4_loop
206.byte	102,15,56,220,209
207.byte	102,15,56,220,217
208.byte	102,15,56,220,225
209.byte	102,15,56,220,233
210.byte	102,15,56,221,208
211.byte	102,15,56,221,216
212.byte	102,15,56,221,224
213.byte	102,15,56,221,232
214	ret
215.size	_aesni_encrypt4,.-_aesni_encrypt4
216.type	_aesni_decrypt4,@function
217.align	16
218_aesni_decrypt4:
219	movups	(%edx),%xmm0
220	movups	16(%edx),%xmm1
221	shll	$4,%ecx
222	xorps	%xmm0,%xmm2
223	pxor	%xmm0,%xmm3
224	pxor	%xmm0,%xmm4
225	pxor	%xmm0,%xmm5
226	movups	32(%edx),%xmm0
227	leal	32(%edx,%ecx,1),%edx
228	negl	%ecx
229.byte	15,31,64,0
230	addl	$16,%ecx
231.L007dec4_loop:
232.byte	102,15,56,222,209
233.byte	102,15,56,222,217
234.byte	102,15,56,222,225
235.byte	102,15,56,222,233
236	movups	(%edx,%ecx,1),%xmm1
237	addl	$32,%ecx
238.byte	102,15,56,222,208
239.byte	102,15,56,222,216
240.byte	102,15,56,222,224
241.byte	102,15,56,222,232
242	movups	-16(%edx,%ecx,1),%xmm0
243	jnz	.L007dec4_loop
244.byte	102,15,56,222,209
245.byte	102,15,56,222,217
246.byte	102,15,56,222,225
247.byte	102,15,56,222,233
248.byte	102,15,56,223,208
249.byte	102,15,56,223,216
250.byte	102,15,56,223,224
251.byte	102,15,56,223,232
252	ret
253.size	_aesni_decrypt4,.-_aesni_decrypt4
254.type	_aesni_encrypt6,@function
255.align	16
256_aesni_encrypt6:
257	movups	(%edx),%xmm0
258	shll	$4,%ecx
259	movups	16(%edx),%xmm1
260	xorps	%xmm0,%xmm2
261	pxor	%xmm0,%xmm3
262	pxor	%xmm0,%xmm4
263.byte	102,15,56,220,209
264	pxor	%xmm0,%xmm5
265	pxor	%xmm0,%xmm6
266.byte	102,15,56,220,217
267	leal	32(%edx,%ecx,1),%edx
268	negl	%ecx
269.byte	102,15,56,220,225
270	pxor	%xmm0,%xmm7
271	movups	(%edx,%ecx,1),%xmm0
272	addl	$16,%ecx
273	jmp	.L008_aesni_encrypt6_inner
274.align	16
275.L009enc6_loop:
276.byte	102,15,56,220,209
277.byte	102,15,56,220,217
278.byte	102,15,56,220,225
279.L008_aesni_encrypt6_inner:
280.byte	102,15,56,220,233
281.byte	102,15,56,220,241
282.byte	102,15,56,220,249
283.L_aesni_encrypt6_enter:
284	movups	(%edx,%ecx,1),%xmm1
285	addl	$32,%ecx
286.byte	102,15,56,220,208
287.byte	102,15,56,220,216
288.byte	102,15,56,220,224
289.byte	102,15,56,220,232
290.byte	102,15,56,220,240
291.byte	102,15,56,220,248
292	movups	-16(%edx,%ecx,1),%xmm0
293	jnz	.L009enc6_loop
294.byte	102,15,56,220,209
295.byte	102,15,56,220,217
296.byte	102,15,56,220,225
297.byte	102,15,56,220,233
298.byte	102,15,56,220,241
299.byte	102,15,56,220,249
300.byte	102,15,56,221,208
301.byte	102,15,56,221,216
302.byte	102,15,56,221,224
303.byte	102,15,56,221,232
304.byte	102,15,56,221,240
305.byte	102,15,56,221,248
306	ret
307.size	_aesni_encrypt6,.-_aesni_encrypt6
308.type	_aesni_decrypt6,@function
309.align	16
310_aesni_decrypt6:
311	movups	(%edx),%xmm0
312	shll	$4,%ecx
313	movups	16(%edx),%xmm1
314	xorps	%xmm0,%xmm2
315	pxor	%xmm0,%xmm3
316	pxor	%xmm0,%xmm4
317.byte	102,15,56,222,209
318	pxor	%xmm0,%xmm5
319	pxor	%xmm0,%xmm6
320.byte	102,15,56,222,217
321	leal	32(%edx,%ecx,1),%edx
322	negl	%ecx
323.byte	102,15,56,222,225
324	pxor	%xmm0,%xmm7
325	movups	(%edx,%ecx,1),%xmm0
326	addl	$16,%ecx
327	jmp	.L010_aesni_decrypt6_inner
328.align	16
329.L011dec6_loop:
330.byte	102,15,56,222,209
331.byte	102,15,56,222,217
332.byte	102,15,56,222,225
333.L010_aesni_decrypt6_inner:
334.byte	102,15,56,222,233
335.byte	102,15,56,222,241
336.byte	102,15,56,222,249
337.L_aesni_decrypt6_enter:
338	movups	(%edx,%ecx,1),%xmm1
339	addl	$32,%ecx
340.byte	102,15,56,222,208
341.byte	102,15,56,222,216
342.byte	102,15,56,222,224
343.byte	102,15,56,222,232
344.byte	102,15,56,222,240
345.byte	102,15,56,222,248
346	movups	-16(%edx,%ecx,1),%xmm0
347	jnz	.L011dec6_loop
348.byte	102,15,56,222,209
349.byte	102,15,56,222,217
350.byte	102,15,56,222,225
351.byte	102,15,56,222,233
352.byte	102,15,56,222,241
353.byte	102,15,56,222,249
354.byte	102,15,56,223,208
355.byte	102,15,56,223,216
356.byte	102,15,56,223,224
357.byte	102,15,56,223,232
358.byte	102,15,56,223,240
359.byte	102,15,56,223,248
360	ret
361.size	_aesni_decrypt6,.-_aesni_decrypt6
362.globl	aesni_ecb_encrypt
363.type	aesni_ecb_encrypt,@function
364.align	16
365aesni_ecb_encrypt:
366.L_aesni_ecb_encrypt_begin:
367	pushl	%ebp
368	pushl	%ebx
369	pushl	%esi
370	pushl	%edi
371	movl	20(%esp),%esi
372	movl	24(%esp),%edi
373	movl	28(%esp),%eax
374	movl	32(%esp),%edx
375	movl	36(%esp),%ebx
376	andl	$-16,%eax
377	jz	.L012ecb_ret
378	movl	240(%edx),%ecx
379	testl	%ebx,%ebx
380	jz	.L013ecb_decrypt
381	movl	%edx,%ebp
382	movl	%ecx,%ebx
383	cmpl	$96,%eax
384	jb	.L014ecb_enc_tail
385	movdqu	(%esi),%xmm2
386	movdqu	16(%esi),%xmm3
387	movdqu	32(%esi),%xmm4
388	movdqu	48(%esi),%xmm5
389	movdqu	64(%esi),%xmm6
390	movdqu	80(%esi),%xmm7
391	leal	96(%esi),%esi
392	subl	$96,%eax
393	jmp	.L015ecb_enc_loop6_enter
394.align	16
395.L016ecb_enc_loop6:
396	movups	%xmm2,(%edi)
397	movdqu	(%esi),%xmm2
398	movups	%xmm3,16(%edi)
399	movdqu	16(%esi),%xmm3
400	movups	%xmm4,32(%edi)
401	movdqu	32(%esi),%xmm4
402	movups	%xmm5,48(%edi)
403	movdqu	48(%esi),%xmm5
404	movups	%xmm6,64(%edi)
405	movdqu	64(%esi),%xmm6
406	movups	%xmm7,80(%edi)
407	leal	96(%edi),%edi
408	movdqu	80(%esi),%xmm7
409	leal	96(%esi),%esi
410.L015ecb_enc_loop6_enter:
411	call	_aesni_encrypt6
412	movl	%ebp,%edx
413	movl	%ebx,%ecx
414	subl	$96,%eax
415	jnc	.L016ecb_enc_loop6
416	movups	%xmm2,(%edi)
417	movups	%xmm3,16(%edi)
418	movups	%xmm4,32(%edi)
419	movups	%xmm5,48(%edi)
420	movups	%xmm6,64(%edi)
421	movups	%xmm7,80(%edi)
422	leal	96(%edi),%edi
423	addl	$96,%eax
424	jz	.L012ecb_ret
425.L014ecb_enc_tail:
426	movups	(%esi),%xmm2
427	cmpl	$32,%eax
428	jb	.L017ecb_enc_one
429	movups	16(%esi),%xmm3
430	je	.L018ecb_enc_two
431	movups	32(%esi),%xmm4
432	cmpl	$64,%eax
433	jb	.L019ecb_enc_three
434	movups	48(%esi),%xmm5
435	je	.L020ecb_enc_four
436	movups	64(%esi),%xmm6
437	xorps	%xmm7,%xmm7
438	call	_aesni_encrypt6
439	movups	%xmm2,(%edi)
440	movups	%xmm3,16(%edi)
441	movups	%xmm4,32(%edi)
442	movups	%xmm5,48(%edi)
443	movups	%xmm6,64(%edi)
444	jmp	.L012ecb_ret
445.align	16
446.L017ecb_enc_one:
447	movups	(%edx),%xmm0
448	movups	16(%edx),%xmm1
449	leal	32(%edx),%edx
450	xorps	%xmm0,%xmm2
451.L021enc1_loop_3:
452.byte	102,15,56,220,209
453	decl	%ecx
454	movups	(%edx),%xmm1
455	leal	16(%edx),%edx
456	jnz	.L021enc1_loop_3
457.byte	102,15,56,221,209
458	movups	%xmm2,(%edi)
459	jmp	.L012ecb_ret
460.align	16
461.L018ecb_enc_two:
462	call	_aesni_encrypt2
463	movups	%xmm2,(%edi)
464	movups	%xmm3,16(%edi)
465	jmp	.L012ecb_ret
466.align	16
467.L019ecb_enc_three:
468	call	_aesni_encrypt3
469	movups	%xmm2,(%edi)
470	movups	%xmm3,16(%edi)
471	movups	%xmm4,32(%edi)
472	jmp	.L012ecb_ret
473.align	16
474.L020ecb_enc_four:
475	call	_aesni_encrypt4
476	movups	%xmm2,(%edi)
477	movups	%xmm3,16(%edi)
478	movups	%xmm4,32(%edi)
479	movups	%xmm5,48(%edi)
480	jmp	.L012ecb_ret
481.align	16
482.L013ecb_decrypt:
483	movl	%edx,%ebp
484	movl	%ecx,%ebx
485	cmpl	$96,%eax
486	jb	.L022ecb_dec_tail
487	movdqu	(%esi),%xmm2
488	movdqu	16(%esi),%xmm3
489	movdqu	32(%esi),%xmm4
490	movdqu	48(%esi),%xmm5
491	movdqu	64(%esi),%xmm6
492	movdqu	80(%esi),%xmm7
493	leal	96(%esi),%esi
494	subl	$96,%eax
495	jmp	.L023ecb_dec_loop6_enter
496.align	16
497.L024ecb_dec_loop6:
498	movups	%xmm2,(%edi)
499	movdqu	(%esi),%xmm2
500	movups	%xmm3,16(%edi)
501	movdqu	16(%esi),%xmm3
502	movups	%xmm4,32(%edi)
503	movdqu	32(%esi),%xmm4
504	movups	%xmm5,48(%edi)
505	movdqu	48(%esi),%xmm5
506	movups	%xmm6,64(%edi)
507	movdqu	64(%esi),%xmm6
508	movups	%xmm7,80(%edi)
509	leal	96(%edi),%edi
510	movdqu	80(%esi),%xmm7
511	leal	96(%esi),%esi
512.L023ecb_dec_loop6_enter:
513	call	_aesni_decrypt6
514	movl	%ebp,%edx
515	movl	%ebx,%ecx
516	subl	$96,%eax
517	jnc	.L024ecb_dec_loop6
518	movups	%xmm2,(%edi)
519	movups	%xmm3,16(%edi)
520	movups	%xmm4,32(%edi)
521	movups	%xmm5,48(%edi)
522	movups	%xmm6,64(%edi)
523	movups	%xmm7,80(%edi)
524	leal	96(%edi),%edi
525	addl	$96,%eax
526	jz	.L012ecb_ret
527.L022ecb_dec_tail:
528	movups	(%esi),%xmm2
529	cmpl	$32,%eax
530	jb	.L025ecb_dec_one
531	movups	16(%esi),%xmm3
532	je	.L026ecb_dec_two
533	movups	32(%esi),%xmm4
534	cmpl	$64,%eax
535	jb	.L027ecb_dec_three
536	movups	48(%esi),%xmm5
537	je	.L028ecb_dec_four
538	movups	64(%esi),%xmm6
539	xorps	%xmm7,%xmm7
540	call	_aesni_decrypt6
541	movups	%xmm2,(%edi)
542	movups	%xmm3,16(%edi)
543	movups	%xmm4,32(%edi)
544	movups	%xmm5,48(%edi)
545	movups	%xmm6,64(%edi)
546	jmp	.L012ecb_ret
547.align	16
548.L025ecb_dec_one:
549	movups	(%edx),%xmm0
550	movups	16(%edx),%xmm1
551	leal	32(%edx),%edx
552	xorps	%xmm0,%xmm2
553.L029dec1_loop_4:
554.byte	102,15,56,222,209
555	decl	%ecx
556	movups	(%edx),%xmm1
557	leal	16(%edx),%edx
558	jnz	.L029dec1_loop_4
559.byte	102,15,56,223,209
560	movups	%xmm2,(%edi)
561	jmp	.L012ecb_ret
562.align	16
563.L026ecb_dec_two:
564	call	_aesni_decrypt2
565	movups	%xmm2,(%edi)
566	movups	%xmm3,16(%edi)
567	jmp	.L012ecb_ret
568.align	16
569.L027ecb_dec_three:
570	call	_aesni_decrypt3
571	movups	%xmm2,(%edi)
572	movups	%xmm3,16(%edi)
573	movups	%xmm4,32(%edi)
574	jmp	.L012ecb_ret
575.align	16
576.L028ecb_dec_four:
577	call	_aesni_decrypt4
578	movups	%xmm2,(%edi)
579	movups	%xmm3,16(%edi)
580	movups	%xmm4,32(%edi)
581	movups	%xmm5,48(%edi)
582.L012ecb_ret:
583	pxor	%xmm0,%xmm0
584	pxor	%xmm1,%xmm1
585	pxor	%xmm2,%xmm2
586	pxor	%xmm3,%xmm3
587	pxor	%xmm4,%xmm4
588	pxor	%xmm5,%xmm5
589	pxor	%xmm6,%xmm6
590	pxor	%xmm7,%xmm7
591	popl	%edi
592	popl	%esi
593	popl	%ebx
594	popl	%ebp
595	ret
596.size	aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
597.globl	aesni_ccm64_encrypt_blocks
598.type	aesni_ccm64_encrypt_blocks,@function
599.align	16
600aesni_ccm64_encrypt_blocks:
601.L_aesni_ccm64_encrypt_blocks_begin:
602	pushl	%ebp
603	pushl	%ebx
604	pushl	%esi
605	pushl	%edi
606	movl	20(%esp),%esi
607	movl	24(%esp),%edi
608	movl	28(%esp),%eax
609	movl	32(%esp),%edx
610	movl	36(%esp),%ebx
611	movl	40(%esp),%ecx
612	movl	%esp,%ebp
613	subl	$60,%esp
614	andl	$-16,%esp
615	movl	%ebp,48(%esp)
616	movdqu	(%ebx),%xmm7
617	movdqu	(%ecx),%xmm3
618	movl	240(%edx),%ecx
619	movl	$202182159,(%esp)
620	movl	$134810123,4(%esp)
621	movl	$67438087,8(%esp)
622	movl	$66051,12(%esp)
623	movl	$1,%ebx
624	xorl	%ebp,%ebp
625	movl	%ebx,16(%esp)
626	movl	%ebp,20(%esp)
627	movl	%ebp,24(%esp)
628	movl	%ebp,28(%esp)
629	shll	$4,%ecx
630	movl	$16,%ebx
631	leal	(%edx),%ebp
632	movdqa	(%esp),%xmm5
633	movdqa	%xmm7,%xmm2
634	leal	32(%edx,%ecx,1),%edx
635	subl	%ecx,%ebx
636.byte	102,15,56,0,253
637.L030ccm64_enc_outer:
638	movups	(%ebp),%xmm0
639	movl	%ebx,%ecx
640	movups	(%esi),%xmm6
641	xorps	%xmm0,%xmm2
642	movups	16(%ebp),%xmm1
643	xorps	%xmm6,%xmm0
644	xorps	%xmm0,%xmm3
645	movups	32(%ebp),%xmm0
646.L031ccm64_enc2_loop:
647.byte	102,15,56,220,209
648.byte	102,15,56,220,217
649	movups	(%edx,%ecx,1),%xmm1
650	addl	$32,%ecx
651.byte	102,15,56,220,208
652.byte	102,15,56,220,216
653	movups	-16(%edx,%ecx,1),%xmm0
654	jnz	.L031ccm64_enc2_loop
655.byte	102,15,56,220,209
656.byte	102,15,56,220,217
657	paddq	16(%esp),%xmm7
658	decl	%eax
659.byte	102,15,56,221,208
660.byte	102,15,56,221,216
661	leal	16(%esi),%esi
662	xorps	%xmm2,%xmm6
663	movdqa	%xmm7,%xmm2
664	movups	%xmm6,(%edi)
665.byte	102,15,56,0,213
666	leal	16(%edi),%edi
667	jnz	.L030ccm64_enc_outer
668	movl	48(%esp),%esp
669	movl	40(%esp),%edi
670	movups	%xmm3,(%edi)
671	pxor	%xmm0,%xmm0
672	pxor	%xmm1,%xmm1
673	pxor	%xmm2,%xmm2
674	pxor	%xmm3,%xmm3
675	pxor	%xmm4,%xmm4
676	pxor	%xmm5,%xmm5
677	pxor	%xmm6,%xmm6
678	pxor	%xmm7,%xmm7
679	popl	%edi
680	popl	%esi
681	popl	%ebx
682	popl	%ebp
683	ret
684.size	aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
685.globl	aesni_ccm64_decrypt_blocks
686.type	aesni_ccm64_decrypt_blocks,@function
687.align	16
688aesni_ccm64_decrypt_blocks:
689.L_aesni_ccm64_decrypt_blocks_begin:
690	pushl	%ebp
691	pushl	%ebx
692	pushl	%esi
693	pushl	%edi
694	movl	20(%esp),%esi
695	movl	24(%esp),%edi
696	movl	28(%esp),%eax
697	movl	32(%esp),%edx
698	movl	36(%esp),%ebx
699	movl	40(%esp),%ecx
700	movl	%esp,%ebp
701	subl	$60,%esp
702	andl	$-16,%esp
703	movl	%ebp,48(%esp)
704	movdqu	(%ebx),%xmm7
705	movdqu	(%ecx),%xmm3
706	movl	240(%edx),%ecx
707	movl	$202182159,(%esp)
708	movl	$134810123,4(%esp)
709	movl	$67438087,8(%esp)
710	movl	$66051,12(%esp)
711	movl	$1,%ebx
712	xorl	%ebp,%ebp
713	movl	%ebx,16(%esp)
714	movl	%ebp,20(%esp)
715	movl	%ebp,24(%esp)
716	movl	%ebp,28(%esp)
717	movdqa	(%esp),%xmm5
718	movdqa	%xmm7,%xmm2
719	movl	%edx,%ebp
720	movl	%ecx,%ebx
721.byte	102,15,56,0,253
722	movups	(%edx),%xmm0
723	movups	16(%edx),%xmm1
724	leal	32(%edx),%edx
725	xorps	%xmm0,%xmm2
726.L032enc1_loop_5:
727.byte	102,15,56,220,209
728	decl	%ecx
729	movups	(%edx),%xmm1
730	leal	16(%edx),%edx
731	jnz	.L032enc1_loop_5
732.byte	102,15,56,221,209
733	shll	$4,%ebx
734	movl	$16,%ecx
735	movups	(%esi),%xmm6
736	paddq	16(%esp),%xmm7
737	leal	16(%esi),%esi
738	subl	%ebx,%ecx
739	leal	32(%ebp,%ebx,1),%edx
740	movl	%ecx,%ebx
741	jmp	.L033ccm64_dec_outer
742.align	16
743.L033ccm64_dec_outer:
744	xorps	%xmm2,%xmm6
745	movdqa	%xmm7,%xmm2
746	movups	%xmm6,(%edi)
747	leal	16(%edi),%edi
748.byte	102,15,56,0,213
749	subl	$1,%eax
750	jz	.L034ccm64_dec_break
751	movups	(%ebp),%xmm0
752	movl	%ebx,%ecx
753	movups	16(%ebp),%xmm1
754	xorps	%xmm0,%xmm6
755	xorps	%xmm0,%xmm2
756	xorps	%xmm6,%xmm3
757	movups	32(%ebp),%xmm0
758.L035ccm64_dec2_loop:
759.byte	102,15,56,220,209
760.byte	102,15,56,220,217
761	movups	(%edx,%ecx,1),%xmm1
762	addl	$32,%ecx
763.byte	102,15,56,220,208
764.byte	102,15,56,220,216
765	movups	-16(%edx,%ecx,1),%xmm0
766	jnz	.L035ccm64_dec2_loop
767	movups	(%esi),%xmm6
768	paddq	16(%esp),%xmm7
769.byte	102,15,56,220,209
770.byte	102,15,56,220,217
771.byte	102,15,56,221,208
772.byte	102,15,56,221,216
773	leal	16(%esi),%esi
774	jmp	.L033ccm64_dec_outer
775.align	16
776.L034ccm64_dec_break:
777	movl	240(%ebp),%ecx
778	movl	%ebp,%edx
779	movups	(%edx),%xmm0
780	movups	16(%edx),%xmm1
781	xorps	%xmm0,%xmm6
782	leal	32(%edx),%edx
783	xorps	%xmm6,%xmm3
784.L036enc1_loop_6:
785.byte	102,15,56,220,217
786	decl	%ecx
787	movups	(%edx),%xmm1
788	leal	16(%edx),%edx
789	jnz	.L036enc1_loop_6
790.byte	102,15,56,221,217
791	movl	48(%esp),%esp
792	movl	40(%esp),%edi
793	movups	%xmm3,(%edi)
794	pxor	%xmm0,%xmm0
795	pxor	%xmm1,%xmm1
796	pxor	%xmm2,%xmm2
797	pxor	%xmm3,%xmm3
798	pxor	%xmm4,%xmm4
799	pxor	%xmm5,%xmm5
800	pxor	%xmm6,%xmm6
801	pxor	%xmm7,%xmm7
802	popl	%edi
803	popl	%esi
804	popl	%ebx
805	popl	%ebp
806	ret
807.size	aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
808.globl	aesni_ctr32_encrypt_blocks
809.type	aesni_ctr32_encrypt_blocks,@function
810.align	16
811aesni_ctr32_encrypt_blocks:
812.L_aesni_ctr32_encrypt_blocks_begin:
813	pushl	%ebp
814	pushl	%ebx
815	pushl	%esi
816	pushl	%edi
817	movl	20(%esp),%esi
818	movl	24(%esp),%edi
819	movl	28(%esp),%eax
820	movl	32(%esp),%edx
821	movl	36(%esp),%ebx
822	movl	%esp,%ebp
823	subl	$88,%esp
824	andl	$-16,%esp
825	movl	%ebp,80(%esp)
826	cmpl	$1,%eax
827	je	.L037ctr32_one_shortcut
828	movdqu	(%ebx),%xmm7
829	movl	$202182159,(%esp)
830	movl	$134810123,4(%esp)
831	movl	$67438087,8(%esp)
832	movl	$66051,12(%esp)
833	movl	$6,%ecx
834	xorl	%ebp,%ebp
835	movl	%ecx,16(%esp)
836	movl	%ecx,20(%esp)
837	movl	%ecx,24(%esp)
838	movl	%ebp,28(%esp)
839.byte	102,15,58,22,251,3
840.byte	102,15,58,34,253,3
841	movl	240(%edx),%ecx
842	bswap	%ebx
843	pxor	%xmm0,%xmm0
844	pxor	%xmm1,%xmm1
845	movdqa	(%esp),%xmm2
846.byte	102,15,58,34,195,0
847	leal	3(%ebx),%ebp
848.byte	102,15,58,34,205,0
849	incl	%ebx
850.byte	102,15,58,34,195,1
851	incl	%ebp
852.byte	102,15,58,34,205,1
853	incl	%ebx
854.byte	102,15,58,34,195,2
855	incl	%ebp
856.byte	102,15,58,34,205,2
857	movdqa	%xmm0,48(%esp)
858.byte	102,15,56,0,194
859	movdqu	(%edx),%xmm6
860	movdqa	%xmm1,64(%esp)
861.byte	102,15,56,0,202
862	pshufd	$192,%xmm0,%xmm2
863	pshufd	$128,%xmm0,%xmm3
864	cmpl	$6,%eax
865	jb	.L038ctr32_tail
866	pxor	%xmm6,%xmm7
867	shll	$4,%ecx
868	movl	$16,%ebx
869	movdqa	%xmm7,32(%esp)
870	movl	%edx,%ebp
871	subl	%ecx,%ebx
872	leal	32(%edx,%ecx,1),%edx
873	subl	$6,%eax
874	jmp	.L039ctr32_loop6
875.align	16
876.L039ctr32_loop6:
877	pshufd	$64,%xmm0,%xmm4
878	movdqa	32(%esp),%xmm0
879	pshufd	$192,%xmm1,%xmm5
880	pxor	%xmm0,%xmm2
881	pshufd	$128,%xmm1,%xmm6
882	pxor	%xmm0,%xmm3
883	pshufd	$64,%xmm1,%xmm7
884	movups	16(%ebp),%xmm1
885	pxor	%xmm0,%xmm4
886	pxor	%xmm0,%xmm5
887.byte	102,15,56,220,209
888	pxor	%xmm0,%xmm6
889	pxor	%xmm0,%xmm7
890.byte	102,15,56,220,217
891	movups	32(%ebp),%xmm0
892	movl	%ebx,%ecx
893.byte	102,15,56,220,225
894.byte	102,15,56,220,233
895.byte	102,15,56,220,241
896.byte	102,15,56,220,249
897	call	.L_aesni_encrypt6_enter
898	movups	(%esi),%xmm1
899	movups	16(%esi),%xmm0
900	xorps	%xmm1,%xmm2
901	movups	32(%esi),%xmm1
902	xorps	%xmm0,%xmm3
903	movups	%xmm2,(%edi)
904	movdqa	16(%esp),%xmm0
905	xorps	%xmm1,%xmm4
906	movdqa	64(%esp),%xmm1
907	movups	%xmm3,16(%edi)
908	movups	%xmm4,32(%edi)
909	paddd	%xmm0,%xmm1
910	paddd	48(%esp),%xmm0
911	movdqa	(%esp),%xmm2
912	movups	48(%esi),%xmm3
913	movups	64(%esi),%xmm4
914	xorps	%xmm3,%xmm5
915	movups	80(%esi),%xmm3
916	leal	96(%esi),%esi
917	movdqa	%xmm0,48(%esp)
918.byte	102,15,56,0,194
919	xorps	%xmm4,%xmm6
920	movups	%xmm5,48(%edi)
921	xorps	%xmm3,%xmm7
922	movdqa	%xmm1,64(%esp)
923.byte	102,15,56,0,202
924	movups	%xmm6,64(%edi)
925	pshufd	$192,%xmm0,%xmm2
926	movups	%xmm7,80(%edi)
927	leal	96(%edi),%edi
928	pshufd	$128,%xmm0,%xmm3
929	subl	$6,%eax
930	jnc	.L039ctr32_loop6
931	addl	$6,%eax
932	jz	.L040ctr32_ret
933	movdqu	(%ebp),%xmm7
934	movl	%ebp,%edx
935	pxor	32(%esp),%xmm7
936	movl	240(%ebp),%ecx
937.L038ctr32_tail:
938	por	%xmm7,%xmm2
939	cmpl	$2,%eax
940	jb	.L041ctr32_one
941	pshufd	$64,%xmm0,%xmm4
942	por	%xmm7,%xmm3
943	je	.L042ctr32_two
944	pshufd	$192,%xmm1,%xmm5
945	por	%xmm7,%xmm4
946	cmpl	$4,%eax
947	jb	.L043ctr32_three
948	pshufd	$128,%xmm1,%xmm6
949	por	%xmm7,%xmm5
950	je	.L044ctr32_four
951	por	%xmm7,%xmm6
952	call	_aesni_encrypt6
953	movups	(%esi),%xmm1
954	movups	16(%esi),%xmm0
955	xorps	%xmm1,%xmm2
956	movups	32(%esi),%xmm1
957	xorps	%xmm0,%xmm3
958	movups	48(%esi),%xmm0
959	xorps	%xmm1,%xmm4
960	movups	64(%esi),%xmm1
961	xorps	%xmm0,%xmm5
962	movups	%xmm2,(%edi)
963	xorps	%xmm1,%xmm6
964	movups	%xmm3,16(%edi)
965	movups	%xmm4,32(%edi)
966	movups	%xmm5,48(%edi)
967	movups	%xmm6,64(%edi)
968	jmp	.L040ctr32_ret
969.align	16
970.L037ctr32_one_shortcut:
971	movups	(%ebx),%xmm2
972	movl	240(%edx),%ecx
973.L041ctr32_one:
974	movups	(%edx),%xmm0
975	movups	16(%edx),%xmm1
976	leal	32(%edx),%edx
977	xorps	%xmm0,%xmm2
978.L045enc1_loop_7:
979.byte	102,15,56,220,209
980	decl	%ecx
981	movups	(%edx),%xmm1
982	leal	16(%edx),%edx
983	jnz	.L045enc1_loop_7
984.byte	102,15,56,221,209
985	movups	(%esi),%xmm6
986	xorps	%xmm2,%xmm6
987	movups	%xmm6,(%edi)
988	jmp	.L040ctr32_ret
989.align	16
990.L042ctr32_two:
991	call	_aesni_encrypt2
992	movups	(%esi),%xmm5
993	movups	16(%esi),%xmm6
994	xorps	%xmm5,%xmm2
995	xorps	%xmm6,%xmm3
996	movups	%xmm2,(%edi)
997	movups	%xmm3,16(%edi)
998	jmp	.L040ctr32_ret
999.align	16
1000.L043ctr32_three:
1001	call	_aesni_encrypt3
1002	movups	(%esi),%xmm5
1003	movups	16(%esi),%xmm6
1004	xorps	%xmm5,%xmm2
1005	movups	32(%esi),%xmm7
1006	xorps	%xmm6,%xmm3
1007	movups	%xmm2,(%edi)
1008	xorps	%xmm7,%xmm4
1009	movups	%xmm3,16(%edi)
1010	movups	%xmm4,32(%edi)
1011	jmp	.L040ctr32_ret
1012.align	16
1013.L044ctr32_four:
1014	call	_aesni_encrypt4
1015	movups	(%esi),%xmm6
1016	movups	16(%esi),%xmm7
1017	movups	32(%esi),%xmm1
1018	xorps	%xmm6,%xmm2
1019	movups	48(%esi),%xmm0
1020	xorps	%xmm7,%xmm3
1021	movups	%xmm2,(%edi)
1022	xorps	%xmm1,%xmm4
1023	movups	%xmm3,16(%edi)
1024	xorps	%xmm0,%xmm5
1025	movups	%xmm4,32(%edi)
1026	movups	%xmm5,48(%edi)
1027.L040ctr32_ret:
1028	pxor	%xmm0,%xmm0
1029	pxor	%xmm1,%xmm1
1030	pxor	%xmm2,%xmm2
1031	pxor	%xmm3,%xmm3
1032	pxor	%xmm4,%xmm4
1033	movdqa	%xmm0,32(%esp)
1034	pxor	%xmm5,%xmm5
1035	movdqa	%xmm0,48(%esp)
1036	pxor	%xmm6,%xmm6
1037	movdqa	%xmm0,64(%esp)
1038	pxor	%xmm7,%xmm7
1039	movl	80(%esp),%esp
1040	popl	%edi
1041	popl	%esi
1042	popl	%ebx
1043	popl	%ebp
1044	ret
1045.size	aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
1046.globl	aesni_xts_encrypt
1047.type	aesni_xts_encrypt,@function
1048.align	16
1049aesni_xts_encrypt:
1050.L_aesni_xts_encrypt_begin:
1051	pushl	%ebp
1052	pushl	%ebx
1053	pushl	%esi
1054	pushl	%edi
1055	movl	36(%esp),%edx
1056	movl	40(%esp),%esi
1057	movl	240(%edx),%ecx
1058	movups	(%esi),%xmm2
1059	movups	(%edx),%xmm0
1060	movups	16(%edx),%xmm1
1061	leal	32(%edx),%edx
1062	xorps	%xmm0,%xmm2
1063.L046enc1_loop_8:
1064.byte	102,15,56,220,209
1065	decl	%ecx
1066	movups	(%edx),%xmm1
1067	leal	16(%edx),%edx
1068	jnz	.L046enc1_loop_8
1069.byte	102,15,56,221,209
1070	movl	20(%esp),%esi
1071	movl	24(%esp),%edi
1072	movl	28(%esp),%eax
1073	movl	32(%esp),%edx
1074	movl	%esp,%ebp
1075	subl	$120,%esp
1076	movl	240(%edx),%ecx
1077	andl	$-16,%esp
1078	movl	$135,96(%esp)
1079	movl	$0,100(%esp)
1080	movl	$1,104(%esp)
1081	movl	$0,108(%esp)
1082	movl	%eax,112(%esp)
1083	movl	%ebp,116(%esp)
1084	movdqa	%xmm2,%xmm1
1085	pxor	%xmm0,%xmm0
1086	movdqa	96(%esp),%xmm3
1087	pcmpgtd	%xmm1,%xmm0
1088	andl	$-16,%eax
1089	movl	%edx,%ebp
1090	movl	%ecx,%ebx
1091	subl	$96,%eax
1092	jc	.L047xts_enc_short
1093	shll	$4,%ecx
1094	movl	$16,%ebx
1095	subl	%ecx,%ebx
1096	leal	32(%edx,%ecx,1),%edx
1097	jmp	.L048xts_enc_loop6
1098.align	16
1099.L048xts_enc_loop6:
1100	pshufd	$19,%xmm0,%xmm2
1101	pxor	%xmm0,%xmm0
1102	movdqa	%xmm1,(%esp)
1103	paddq	%xmm1,%xmm1
1104	pand	%xmm3,%xmm2
1105	pcmpgtd	%xmm1,%xmm0
1106	pxor	%xmm2,%xmm1
1107	pshufd	$19,%xmm0,%xmm2
1108	pxor	%xmm0,%xmm0
1109	movdqa	%xmm1,16(%esp)
1110	paddq	%xmm1,%xmm1
1111	pand	%xmm3,%xmm2
1112	pcmpgtd	%xmm1,%xmm0
1113	pxor	%xmm2,%xmm1
1114	pshufd	$19,%xmm0,%xmm2
1115	pxor	%xmm0,%xmm0
1116	movdqa	%xmm1,32(%esp)
1117	paddq	%xmm1,%xmm1
1118	pand	%xmm3,%xmm2
1119	pcmpgtd	%xmm1,%xmm0
1120	pxor	%xmm2,%xmm1
1121	pshufd	$19,%xmm0,%xmm2
1122	pxor	%xmm0,%xmm0
1123	movdqa	%xmm1,48(%esp)
1124	paddq	%xmm1,%xmm1
1125	pand	%xmm3,%xmm2
1126	pcmpgtd	%xmm1,%xmm0
1127	pxor	%xmm2,%xmm1
1128	pshufd	$19,%xmm0,%xmm7
1129	movdqa	%xmm1,64(%esp)
1130	paddq	%xmm1,%xmm1
1131	movups	(%ebp),%xmm0
1132	pand	%xmm3,%xmm7
1133	movups	(%esi),%xmm2
1134	pxor	%xmm1,%xmm7
1135	movl	%ebx,%ecx
1136	movdqu	16(%esi),%xmm3
1137	xorps	%xmm0,%xmm2
1138	movdqu	32(%esi),%xmm4
1139	pxor	%xmm0,%xmm3
1140	movdqu	48(%esi),%xmm5
1141	pxor	%xmm0,%xmm4
1142	movdqu	64(%esi),%xmm6
1143	pxor	%xmm0,%xmm5
1144	movdqu	80(%esi),%xmm1
1145	pxor	%xmm0,%xmm6
1146	leal	96(%esi),%esi
1147	pxor	(%esp),%xmm2
1148	movdqa	%xmm7,80(%esp)
1149	pxor	%xmm1,%xmm7
1150	movups	16(%ebp),%xmm1
1151	pxor	16(%esp),%xmm3
1152	pxor	32(%esp),%xmm4
1153.byte	102,15,56,220,209
1154	pxor	48(%esp),%xmm5
1155	pxor	64(%esp),%xmm6
1156.byte	102,15,56,220,217
1157	pxor	%xmm0,%xmm7
1158	movups	32(%ebp),%xmm0
1159.byte	102,15,56,220,225
1160.byte	102,15,56,220,233
1161.byte	102,15,56,220,241
1162.byte	102,15,56,220,249
1163	call	.L_aesni_encrypt6_enter
1164	movdqa	80(%esp),%xmm1
1165	pxor	%xmm0,%xmm0
1166	xorps	(%esp),%xmm2
1167	pcmpgtd	%xmm1,%xmm0
1168	xorps	16(%esp),%xmm3
1169	movups	%xmm2,(%edi)
1170	xorps	32(%esp),%xmm4
1171	movups	%xmm3,16(%edi)
1172	xorps	48(%esp),%xmm5
1173	movups	%xmm4,32(%edi)
1174	xorps	64(%esp),%xmm6
1175	movups	%xmm5,48(%edi)
1176	xorps	%xmm1,%xmm7
1177	movups	%xmm6,64(%edi)
1178	pshufd	$19,%xmm0,%xmm2
1179	movups	%xmm7,80(%edi)
1180	leal	96(%edi),%edi
1181	movdqa	96(%esp),%xmm3
1182	pxor	%xmm0,%xmm0
1183	paddq	%xmm1,%xmm1
1184	pand	%xmm3,%xmm2
1185	pcmpgtd	%xmm1,%xmm0
1186	pxor	%xmm2,%xmm1
1187	subl	$96,%eax
1188	jnc	.L048xts_enc_loop6
1189	movl	240(%ebp),%ecx
1190	movl	%ebp,%edx
1191	movl	%ecx,%ebx
1192.L047xts_enc_short:
1193	addl	$96,%eax
1194	jz	.L049xts_enc_done6x
1195	movdqa	%xmm1,%xmm5
1196	cmpl	$32,%eax
1197	jb	.L050xts_enc_one
1198	pshufd	$19,%xmm0,%xmm2
1199	pxor	%xmm0,%xmm0
1200	paddq	%xmm1,%xmm1
1201	pand	%xmm3,%xmm2
1202	pcmpgtd	%xmm1,%xmm0
1203	pxor	%xmm2,%xmm1
1204	je	.L051xts_enc_two
1205	pshufd	$19,%xmm0,%xmm2
1206	pxor	%xmm0,%xmm0
1207	movdqa	%xmm1,%xmm6
1208	paddq	%xmm1,%xmm1
1209	pand	%xmm3,%xmm2
1210	pcmpgtd	%xmm1,%xmm0
1211	pxor	%xmm2,%xmm1
1212	cmpl	$64,%eax
1213	jb	.L052xts_enc_three
1214	pshufd	$19,%xmm0,%xmm2
1215	pxor	%xmm0,%xmm0
1216	movdqa	%xmm1,%xmm7
1217	paddq	%xmm1,%xmm1
1218	pand	%xmm3,%xmm2
1219	pcmpgtd	%xmm1,%xmm0
1220	pxor	%xmm2,%xmm1
1221	movdqa	%xmm5,(%esp)
1222	movdqa	%xmm6,16(%esp)
1223	je	.L053xts_enc_four
1224	movdqa	%xmm7,32(%esp)
1225	pshufd	$19,%xmm0,%xmm7
1226	movdqa	%xmm1,48(%esp)
1227	paddq	%xmm1,%xmm1
1228	pand	%xmm3,%xmm7
1229	pxor	%xmm1,%xmm7
1230	movdqu	(%esi),%xmm2
1231	movdqu	16(%esi),%xmm3
1232	movdqu	32(%esi),%xmm4
1233	pxor	(%esp),%xmm2
1234	movdqu	48(%esi),%xmm5
1235	pxor	16(%esp),%xmm3
1236	movdqu	64(%esi),%xmm6
1237	pxor	32(%esp),%xmm4
1238	leal	80(%esi),%esi
1239	pxor	48(%esp),%xmm5
1240	movdqa	%xmm7,64(%esp)
1241	pxor	%xmm7,%xmm6
1242	call	_aesni_encrypt6
1243	movaps	64(%esp),%xmm1
1244	xorps	(%esp),%xmm2
1245	xorps	16(%esp),%xmm3
1246	xorps	32(%esp),%xmm4
1247	movups	%xmm2,(%edi)
1248	xorps	48(%esp),%xmm5
1249	movups	%xmm3,16(%edi)
1250	xorps	%xmm1,%xmm6
1251	movups	%xmm4,32(%edi)
1252	movups	%xmm5,48(%edi)
1253	movups	%xmm6,64(%edi)
1254	leal	80(%edi),%edi
1255	jmp	.L054xts_enc_done
1256.align	16
1257.L050xts_enc_one:
1258	movups	(%esi),%xmm2
1259	leal	16(%esi),%esi
1260	xorps	%xmm5,%xmm2
1261	movups	(%edx),%xmm0
1262	movups	16(%edx),%xmm1
1263	leal	32(%edx),%edx
1264	xorps	%xmm0,%xmm2
1265.L055enc1_loop_9:
1266.byte	102,15,56,220,209
1267	decl	%ecx
1268	movups	(%edx),%xmm1
1269	leal	16(%edx),%edx
1270	jnz	.L055enc1_loop_9
1271.byte	102,15,56,221,209
1272	xorps	%xmm5,%xmm2
1273	movups	%xmm2,(%edi)
1274	leal	16(%edi),%edi
1275	movdqa	%xmm5,%xmm1
1276	jmp	.L054xts_enc_done
1277.align	16
1278.L051xts_enc_two:
1279	movaps	%xmm1,%xmm6
1280	movups	(%esi),%xmm2
1281	movups	16(%esi),%xmm3
1282	leal	32(%esi),%esi
1283	xorps	%xmm5,%xmm2
1284	xorps	%xmm6,%xmm3
1285	call	_aesni_encrypt2
1286	xorps	%xmm5,%xmm2
1287	xorps	%xmm6,%xmm3
1288	movups	%xmm2,(%edi)
1289	movups	%xmm3,16(%edi)
1290	leal	32(%edi),%edi
1291	movdqa	%xmm6,%xmm1
1292	jmp	.L054xts_enc_done
1293.align	16
1294.L052xts_enc_three:
1295	movaps	%xmm1,%xmm7
1296	movups	(%esi),%xmm2
1297	movups	16(%esi),%xmm3
1298	movups	32(%esi),%xmm4
1299	leal	48(%esi),%esi
1300	xorps	%xmm5,%xmm2
1301	xorps	%xmm6,%xmm3
1302	xorps	%xmm7,%xmm4
1303	call	_aesni_encrypt3
1304	xorps	%xmm5,%xmm2
1305	xorps	%xmm6,%xmm3
1306	xorps	%xmm7,%xmm4
1307	movups	%xmm2,(%edi)
1308	movups	%xmm3,16(%edi)
1309	movups	%xmm4,32(%edi)
1310	leal	48(%edi),%edi
1311	movdqa	%xmm7,%xmm1
1312	jmp	.L054xts_enc_done
1313.align	16
1314.L053xts_enc_four:
1315	movaps	%xmm1,%xmm6
1316	movups	(%esi),%xmm2
1317	movups	16(%esi),%xmm3
1318	movups	32(%esi),%xmm4
1319	xorps	(%esp),%xmm2
1320	movups	48(%esi),%xmm5
1321	leal	64(%esi),%esi
1322	xorps	16(%esp),%xmm3
1323	xorps	%xmm7,%xmm4
1324	xorps	%xmm6,%xmm5
1325	call	_aesni_encrypt4
1326	xorps	(%esp),%xmm2
1327	xorps	16(%esp),%xmm3
1328	xorps	%xmm7,%xmm4
1329	movups	%xmm2,(%edi)
1330	xorps	%xmm6,%xmm5
1331	movups	%xmm3,16(%edi)
1332	movups	%xmm4,32(%edi)
1333	movups	%xmm5,48(%edi)
1334	leal	64(%edi),%edi
1335	movdqa	%xmm6,%xmm1
1336	jmp	.L054xts_enc_done
1337.align	16
1338.L049xts_enc_done6x:
1339	movl	112(%esp),%eax
1340	andl	$15,%eax
1341	jz	.L056xts_enc_ret
1342	movdqa	%xmm1,%xmm5
1343	movl	%eax,112(%esp)
1344	jmp	.L057xts_enc_steal
1345.align	16
1346.L054xts_enc_done:
1347	movl	112(%esp),%eax
1348	pxor	%xmm0,%xmm0
1349	andl	$15,%eax
1350	jz	.L056xts_enc_ret
1351	pcmpgtd	%xmm1,%xmm0
1352	movl	%eax,112(%esp)
1353	pshufd	$19,%xmm0,%xmm5
1354	paddq	%xmm1,%xmm1
1355	pand	96(%esp),%xmm5
1356	pxor	%xmm1,%xmm5
1357.L057xts_enc_steal:
1358	movzbl	(%esi),%ecx
1359	movzbl	-16(%edi),%edx
1360	leal	1(%esi),%esi
1361	movb	%cl,-16(%edi)
1362	movb	%dl,(%edi)
1363	leal	1(%edi),%edi
1364	subl	$1,%eax
1365	jnz	.L057xts_enc_steal
1366	subl	112(%esp),%edi
1367	movl	%ebp,%edx
1368	movl	%ebx,%ecx
1369	movups	-16(%edi),%xmm2
1370	xorps	%xmm5,%xmm2
1371	movups	(%edx),%xmm0
1372	movups	16(%edx),%xmm1
1373	leal	32(%edx),%edx
1374	xorps	%xmm0,%xmm2
1375.L058enc1_loop_10:
1376.byte	102,15,56,220,209
1377	decl	%ecx
1378	movups	(%edx),%xmm1
1379	leal	16(%edx),%edx
1380	jnz	.L058enc1_loop_10
1381.byte	102,15,56,221,209
1382	xorps	%xmm5,%xmm2
1383	movups	%xmm2,-16(%edi)
1384.L056xts_enc_ret:
1385	pxor	%xmm0,%xmm0
1386	pxor	%xmm1,%xmm1
1387	pxor	%xmm2,%xmm2
1388	movdqa	%xmm0,(%esp)
1389	pxor	%xmm3,%xmm3
1390	movdqa	%xmm0,16(%esp)
1391	pxor	%xmm4,%xmm4
1392	movdqa	%xmm0,32(%esp)
1393	pxor	%xmm5,%xmm5
1394	movdqa	%xmm0,48(%esp)
1395	pxor	%xmm6,%xmm6
1396	movdqa	%xmm0,64(%esp)
1397	pxor	%xmm7,%xmm7
1398	movdqa	%xmm0,80(%esp)
1399	movl	116(%esp),%esp
1400	popl	%edi
1401	popl	%esi
1402	popl	%ebx
1403	popl	%ebp
1404	ret
1405.size	aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
1406.globl	aesni_xts_decrypt
1407.type	aesni_xts_decrypt,@function
1408.align	16
1409aesni_xts_decrypt:
1410.L_aesni_xts_decrypt_begin:
1411	pushl	%ebp
1412	pushl	%ebx
1413	pushl	%esi
1414	pushl	%edi
1415	movl	36(%esp),%edx
1416	movl	40(%esp),%esi
1417	movl	240(%edx),%ecx
1418	movups	(%esi),%xmm2
1419	movups	(%edx),%xmm0
1420	movups	16(%edx),%xmm1
1421	leal	32(%edx),%edx
1422	xorps	%xmm0,%xmm2
1423.L059enc1_loop_11:
1424.byte	102,15,56,220,209
1425	decl	%ecx
1426	movups	(%edx),%xmm1
1427	leal	16(%edx),%edx
1428	jnz	.L059enc1_loop_11
1429.byte	102,15,56,221,209
1430	movl	20(%esp),%esi
1431	movl	24(%esp),%edi
1432	movl	28(%esp),%eax
1433	movl	32(%esp),%edx
1434	movl	%esp,%ebp
1435	subl	$120,%esp
1436	andl	$-16,%esp
1437	xorl	%ebx,%ebx
1438	testl	$15,%eax
1439	setnz	%bl
1440	shll	$4,%ebx
1441	subl	%ebx,%eax
1442	movl	$135,96(%esp)
1443	movl	$0,100(%esp)
1444	movl	$1,104(%esp)
1445	movl	$0,108(%esp)
1446	movl	%eax,112(%esp)
1447	movl	%ebp,116(%esp)
1448	movl	240(%edx),%ecx
1449	movl	%edx,%ebp
1450	movl	%ecx,%ebx
1451	movdqa	%xmm2,%xmm1
1452	pxor	%xmm0,%xmm0
1453	movdqa	96(%esp),%xmm3
1454	pcmpgtd	%xmm1,%xmm0
1455	andl	$-16,%eax
1456	subl	$96,%eax
1457	jc	.L060xts_dec_short
1458	shll	$4,%ecx
1459	movl	$16,%ebx
1460	subl	%ecx,%ebx
1461	leal	32(%edx,%ecx,1),%edx
1462	jmp	.L061xts_dec_loop6
1463.align	16
1464.L061xts_dec_loop6:
1465	pshufd	$19,%xmm0,%xmm2
1466	pxor	%xmm0,%xmm0
1467	movdqa	%xmm1,(%esp)
1468	paddq	%xmm1,%xmm1
1469	pand	%xmm3,%xmm2
1470	pcmpgtd	%xmm1,%xmm0
1471	pxor	%xmm2,%xmm1
1472	pshufd	$19,%xmm0,%xmm2
1473	pxor	%xmm0,%xmm0
1474	movdqa	%xmm1,16(%esp)
1475	paddq	%xmm1,%xmm1
1476	pand	%xmm3,%xmm2
1477	pcmpgtd	%xmm1,%xmm0
1478	pxor	%xmm2,%xmm1
1479	pshufd	$19,%xmm0,%xmm2
1480	pxor	%xmm0,%xmm0
1481	movdqa	%xmm1,32(%esp)
1482	paddq	%xmm1,%xmm1
1483	pand	%xmm3,%xmm2
1484	pcmpgtd	%xmm1,%xmm0
1485	pxor	%xmm2,%xmm1
1486	pshufd	$19,%xmm0,%xmm2
1487	pxor	%xmm0,%xmm0
1488	movdqa	%xmm1,48(%esp)
1489	paddq	%xmm1,%xmm1
1490	pand	%xmm3,%xmm2
1491	pcmpgtd	%xmm1,%xmm0
1492	pxor	%xmm2,%xmm1
1493	pshufd	$19,%xmm0,%xmm7
1494	movdqa	%xmm1,64(%esp)
1495	paddq	%xmm1,%xmm1
1496	movups	(%ebp),%xmm0
1497	pand	%xmm3,%xmm7
1498	movups	(%esi),%xmm2
1499	pxor	%xmm1,%xmm7
1500	movl	%ebx,%ecx
1501	movdqu	16(%esi),%xmm3
1502	xorps	%xmm0,%xmm2
1503	movdqu	32(%esi),%xmm4
1504	pxor	%xmm0,%xmm3
1505	movdqu	48(%esi),%xmm5
1506	pxor	%xmm0,%xmm4
1507	movdqu	64(%esi),%xmm6
1508	pxor	%xmm0,%xmm5
1509	movdqu	80(%esi),%xmm1
1510	pxor	%xmm0,%xmm6
1511	leal	96(%esi),%esi
1512	pxor	(%esp),%xmm2
1513	movdqa	%xmm7,80(%esp)
1514	pxor	%xmm1,%xmm7
1515	movups	16(%ebp),%xmm1
1516	pxor	16(%esp),%xmm3
1517	pxor	32(%esp),%xmm4
1518.byte	102,15,56,222,209
1519	pxor	48(%esp),%xmm5
1520	pxor	64(%esp),%xmm6
1521.byte	102,15,56,222,217
1522	pxor	%xmm0,%xmm7
1523	movups	32(%ebp),%xmm0
1524.byte	102,15,56,222,225
1525.byte	102,15,56,222,233
1526.byte	102,15,56,222,241
1527.byte	102,15,56,222,249
1528	call	.L_aesni_decrypt6_enter
1529	movdqa	80(%esp),%xmm1
1530	pxor	%xmm0,%xmm0
1531	xorps	(%esp),%xmm2
1532	pcmpgtd	%xmm1,%xmm0
1533	xorps	16(%esp),%xmm3
1534	movups	%xmm2,(%edi)
1535	xorps	32(%esp),%xmm4
1536	movups	%xmm3,16(%edi)
1537	xorps	48(%esp),%xmm5
1538	movups	%xmm4,32(%edi)
1539	xorps	64(%esp),%xmm6
1540	movups	%xmm5,48(%edi)
1541	xorps	%xmm1,%xmm7
1542	movups	%xmm6,64(%edi)
1543	pshufd	$19,%xmm0,%xmm2
1544	movups	%xmm7,80(%edi)
1545	leal	96(%edi),%edi
1546	movdqa	96(%esp),%xmm3
1547	pxor	%xmm0,%xmm0
1548	paddq	%xmm1,%xmm1
1549	pand	%xmm3,%xmm2
1550	pcmpgtd	%xmm1,%xmm0
1551	pxor	%xmm2,%xmm1
1552	subl	$96,%eax
1553	jnc	.L061xts_dec_loop6
1554	movl	240(%ebp),%ecx
1555	movl	%ebp,%edx
1556	movl	%ecx,%ebx
1557.L060xts_dec_short:
1558	addl	$96,%eax
1559	jz	.L062xts_dec_done6x
1560	movdqa	%xmm1,%xmm5
1561	cmpl	$32,%eax
1562	jb	.L063xts_dec_one
1563	pshufd	$19,%xmm0,%xmm2
1564	pxor	%xmm0,%xmm0
1565	paddq	%xmm1,%xmm1
1566	pand	%xmm3,%xmm2
1567	pcmpgtd	%xmm1,%xmm0
1568	pxor	%xmm2,%xmm1
1569	je	.L064xts_dec_two
1570	pshufd	$19,%xmm0,%xmm2
1571	pxor	%xmm0,%xmm0
1572	movdqa	%xmm1,%xmm6
1573	paddq	%xmm1,%xmm1
1574	pand	%xmm3,%xmm2
1575	pcmpgtd	%xmm1,%xmm0
1576	pxor	%xmm2,%xmm1
1577	cmpl	$64,%eax
1578	jb	.L065xts_dec_three
1579	pshufd	$19,%xmm0,%xmm2
1580	pxor	%xmm0,%xmm0
1581	movdqa	%xmm1,%xmm7
1582	paddq	%xmm1,%xmm1
1583	pand	%xmm3,%xmm2
1584	pcmpgtd	%xmm1,%xmm0
1585	pxor	%xmm2,%xmm1
1586	movdqa	%xmm5,(%esp)
1587	movdqa	%xmm6,16(%esp)
1588	je	.L066xts_dec_four
1589	movdqa	%xmm7,32(%esp)
1590	pshufd	$19,%xmm0,%xmm7
1591	movdqa	%xmm1,48(%esp)
1592	paddq	%xmm1,%xmm1
1593	pand	%xmm3,%xmm7
1594	pxor	%xmm1,%xmm7
1595	movdqu	(%esi),%xmm2
1596	movdqu	16(%esi),%xmm3
1597	movdqu	32(%esi),%xmm4
1598	pxor	(%esp),%xmm2
1599	movdqu	48(%esi),%xmm5
1600	pxor	16(%esp),%xmm3
1601	movdqu	64(%esi),%xmm6
1602	pxor	32(%esp),%xmm4
1603	leal	80(%esi),%esi
1604	pxor	48(%esp),%xmm5
1605	movdqa	%xmm7,64(%esp)
1606	pxor	%xmm7,%xmm6
1607	call	_aesni_decrypt6
1608	movaps	64(%esp),%xmm1
1609	xorps	(%esp),%xmm2
1610	xorps	16(%esp),%xmm3
1611	xorps	32(%esp),%xmm4
1612	movups	%xmm2,(%edi)
1613	xorps	48(%esp),%xmm5
1614	movups	%xmm3,16(%edi)
1615	xorps	%xmm1,%xmm6
1616	movups	%xmm4,32(%edi)
1617	movups	%xmm5,48(%edi)
1618	movups	%xmm6,64(%edi)
1619	leal	80(%edi),%edi
1620	jmp	.L067xts_dec_done
1621.align	16
1622.L063xts_dec_one:
1623	movups	(%esi),%xmm2
1624	leal	16(%esi),%esi
1625	xorps	%xmm5,%xmm2
1626	movups	(%edx),%xmm0
1627	movups	16(%edx),%xmm1
1628	leal	32(%edx),%edx
1629	xorps	%xmm0,%xmm2
1630.L068dec1_loop_12:
1631.byte	102,15,56,222,209
1632	decl	%ecx
1633	movups	(%edx),%xmm1
1634	leal	16(%edx),%edx
1635	jnz	.L068dec1_loop_12
1636.byte	102,15,56,223,209
1637	xorps	%xmm5,%xmm2
1638	movups	%xmm2,(%edi)
1639	leal	16(%edi),%edi
1640	movdqa	%xmm5,%xmm1
1641	jmp	.L067xts_dec_done
1642.align	16
1643.L064xts_dec_two:
1644	movaps	%xmm1,%xmm6
1645	movups	(%esi),%xmm2
1646	movups	16(%esi),%xmm3
1647	leal	32(%esi),%esi
1648	xorps	%xmm5,%xmm2
1649	xorps	%xmm6,%xmm3
1650	call	_aesni_decrypt2
1651	xorps	%xmm5,%xmm2
1652	xorps	%xmm6,%xmm3
1653	movups	%xmm2,(%edi)
1654	movups	%xmm3,16(%edi)
1655	leal	32(%edi),%edi
1656	movdqa	%xmm6,%xmm1
1657	jmp	.L067xts_dec_done
1658.align	16
1659.L065xts_dec_three:
1660	movaps	%xmm1,%xmm7
1661	movups	(%esi),%xmm2
1662	movups	16(%esi),%xmm3
1663	movups	32(%esi),%xmm4
1664	leal	48(%esi),%esi
1665	xorps	%xmm5,%xmm2
1666	xorps	%xmm6,%xmm3
1667	xorps	%xmm7,%xmm4
1668	call	_aesni_decrypt3
1669	xorps	%xmm5,%xmm2
1670	xorps	%xmm6,%xmm3
1671	xorps	%xmm7,%xmm4
1672	movups	%xmm2,(%edi)
1673	movups	%xmm3,16(%edi)
1674	movups	%xmm4,32(%edi)
1675	leal	48(%edi),%edi
1676	movdqa	%xmm7,%xmm1
1677	jmp	.L067xts_dec_done
1678.align	16
1679.L066xts_dec_four:
1680	movaps	%xmm1,%xmm6
1681	movups	(%esi),%xmm2
1682	movups	16(%esi),%xmm3
1683	movups	32(%esi),%xmm4
1684	xorps	(%esp),%xmm2
1685	movups	48(%esi),%xmm5
1686	leal	64(%esi),%esi
1687	xorps	16(%esp),%xmm3
1688	xorps	%xmm7,%xmm4
1689	xorps	%xmm6,%xmm5
1690	call	_aesni_decrypt4
1691	xorps	(%esp),%xmm2
1692	xorps	16(%esp),%xmm3
1693	xorps	%xmm7,%xmm4
1694	movups	%xmm2,(%edi)
1695	xorps	%xmm6,%xmm5
1696	movups	%xmm3,16(%edi)
1697	movups	%xmm4,32(%edi)
1698	movups	%xmm5,48(%edi)
1699	leal	64(%edi),%edi
1700	movdqa	%xmm6,%xmm1
1701	jmp	.L067xts_dec_done
1702.align	16
1703.L062xts_dec_done6x:
1704	movl	112(%esp),%eax
1705	andl	$15,%eax
1706	jz	.L069xts_dec_ret
1707	movl	%eax,112(%esp)
1708	jmp	.L070xts_dec_only_one_more
1709.align	16
1710.L067xts_dec_done:
1711	movl	112(%esp),%eax
1712	pxor	%xmm0,%xmm0
1713	andl	$15,%eax
1714	jz	.L069xts_dec_ret
1715	pcmpgtd	%xmm1,%xmm0
1716	movl	%eax,112(%esp)
1717	pshufd	$19,%xmm0,%xmm2
1718	pxor	%xmm0,%xmm0
1719	movdqa	96(%esp),%xmm3
1720	paddq	%xmm1,%xmm1
1721	pand	%xmm3,%xmm2
1722	pcmpgtd	%xmm1,%xmm0
1723	pxor	%xmm2,%xmm1
1724.L070xts_dec_only_one_more:
1725	pshufd	$19,%xmm0,%xmm5
1726	movdqa	%xmm1,%xmm6
1727	paddq	%xmm1,%xmm1
1728	pand	%xmm3,%xmm5
1729	pxor	%xmm1,%xmm5
1730	movl	%ebp,%edx
1731	movl	%ebx,%ecx
1732	movups	(%esi),%xmm2
1733	xorps	%xmm5,%xmm2
1734	movups	(%edx),%xmm0
1735	movups	16(%edx),%xmm1
1736	leal	32(%edx),%edx
1737	xorps	%xmm0,%xmm2
1738.L071dec1_loop_13:
1739.byte	102,15,56,222,209
1740	decl	%ecx
1741	movups	(%edx),%xmm1
1742	leal	16(%edx),%edx
1743	jnz	.L071dec1_loop_13
1744.byte	102,15,56,223,209
1745	xorps	%xmm5,%xmm2
1746	movups	%xmm2,(%edi)
1747.L072xts_dec_steal:
1748	movzbl	16(%esi),%ecx
1749	movzbl	(%edi),%edx
1750	leal	1(%esi),%esi
1751	movb	%cl,(%edi)
1752	movb	%dl,16(%edi)
1753	leal	1(%edi),%edi
1754	subl	$1,%eax
1755	jnz	.L072xts_dec_steal
1756	subl	112(%esp),%edi
1757	movl	%ebp,%edx
1758	movl	%ebx,%ecx
1759	movups	(%edi),%xmm2
1760	xorps	%xmm6,%xmm2
1761	movups	(%edx),%xmm0
1762	movups	16(%edx),%xmm1
1763	leal	32(%edx),%edx
1764	xorps	%xmm0,%xmm2
1765.L073dec1_loop_14:
1766.byte	102,15,56,222,209
1767	decl	%ecx
1768	movups	(%edx),%xmm1
1769	leal	16(%edx),%edx
1770	jnz	.L073dec1_loop_14
1771.byte	102,15,56,223,209
1772	xorps	%xmm6,%xmm2
1773	movups	%xmm2,(%edi)
1774.L069xts_dec_ret:
1775	pxor	%xmm0,%xmm0
1776	pxor	%xmm1,%xmm1
1777	pxor	%xmm2,%xmm2
1778	movdqa	%xmm0,(%esp)
1779	pxor	%xmm3,%xmm3
1780	movdqa	%xmm0,16(%esp)
1781	pxor	%xmm4,%xmm4
1782	movdqa	%xmm0,32(%esp)
1783	pxor	%xmm5,%xmm5
1784	movdqa	%xmm0,48(%esp)
1785	pxor	%xmm6,%xmm6
1786	movdqa	%xmm0,64(%esp)
1787	pxor	%xmm7,%xmm7
1788	movdqa	%xmm0,80(%esp)
1789	movl	116(%esp),%esp
1790	popl	%edi
1791	popl	%esi
1792	popl	%ebx
1793	popl	%ebp
1794	ret
1795.size	aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
1796.globl	aesni_cbc_encrypt
1797.type	aesni_cbc_encrypt,@function
1798.align	16
1799aesni_cbc_encrypt:
1800.L_aesni_cbc_encrypt_begin:
1801	pushl	%ebp
1802	pushl	%ebx
1803	pushl	%esi
1804	pushl	%edi
1805	movl	20(%esp),%esi
1806	movl	%esp,%ebx
1807	movl	24(%esp),%edi
1808	subl	$24,%ebx
1809	movl	28(%esp),%eax
1810	andl	$-16,%ebx
1811	movl	32(%esp),%edx
1812	movl	36(%esp),%ebp
1813	testl	%eax,%eax
1814	jz	.L074cbc_abort
1815	cmpl	$0,40(%esp)
1816	xchgl	%esp,%ebx
1817	movups	(%ebp),%xmm7
1818	movl	240(%edx),%ecx
1819	movl	%edx,%ebp
1820	movl	%ebx,16(%esp)
1821	movl	%ecx,%ebx
1822	je	.L075cbc_decrypt
1823	movaps	%xmm7,%xmm2
1824	cmpl	$16,%eax
1825	jb	.L076cbc_enc_tail
1826	subl	$16,%eax
1827	jmp	.L077cbc_enc_loop
1828.align	16
1829.L077cbc_enc_loop:
1830	movups	(%esi),%xmm7
1831	leal	16(%esi),%esi
1832	movups	(%edx),%xmm0
1833	movups	16(%edx),%xmm1
1834	xorps	%xmm0,%xmm7
1835	leal	32(%edx),%edx
1836	xorps	%xmm7,%xmm2
1837.L078enc1_loop_15:
1838.byte	102,15,56,220,209
1839	decl	%ecx
1840	movups	(%edx),%xmm1
1841	leal	16(%edx),%edx
1842	jnz	.L078enc1_loop_15
1843.byte	102,15,56,221,209
1844	movl	%ebx,%ecx
1845	movl	%ebp,%edx
1846	movups	%xmm2,(%edi)
1847	leal	16(%edi),%edi
1848	subl	$16,%eax
1849	jnc	.L077cbc_enc_loop
1850	addl	$16,%eax
1851	jnz	.L076cbc_enc_tail
1852	movaps	%xmm2,%xmm7
1853	pxor	%xmm2,%xmm2
1854	jmp	.L079cbc_ret
1855.L076cbc_enc_tail:
1856	movl	%eax,%ecx
1857.long	2767451785
1858	movl	$16,%ecx
1859	subl	%eax,%ecx
1860	xorl	%eax,%eax
1861.long	2868115081
1862	leal	-16(%edi),%edi
1863	movl	%ebx,%ecx
1864	movl	%edi,%esi
1865	movl	%ebp,%edx
1866	jmp	.L077cbc_enc_loop
1867.align	16
1868.L075cbc_decrypt:
1869	cmpl	$80,%eax
1870	jbe	.L080cbc_dec_tail
1871	movaps	%xmm7,(%esp)
1872	subl	$80,%eax
1873	jmp	.L081cbc_dec_loop6_enter
1874.align	16
1875.L082cbc_dec_loop6:
1876	movaps	%xmm0,(%esp)
1877	movups	%xmm7,(%edi)
1878	leal	16(%edi),%edi
1879.L081cbc_dec_loop6_enter:
1880	movdqu	(%esi),%xmm2
1881	movdqu	16(%esi),%xmm3
1882	movdqu	32(%esi),%xmm4
1883	movdqu	48(%esi),%xmm5
1884	movdqu	64(%esi),%xmm6
1885	movdqu	80(%esi),%xmm7
1886	call	_aesni_decrypt6
1887	movups	(%esi),%xmm1
1888	movups	16(%esi),%xmm0
1889	xorps	(%esp),%xmm2
1890	xorps	%xmm1,%xmm3
1891	movups	32(%esi),%xmm1
1892	xorps	%xmm0,%xmm4
1893	movups	48(%esi),%xmm0
1894	xorps	%xmm1,%xmm5
1895	movups	64(%esi),%xmm1
1896	xorps	%xmm0,%xmm6
1897	movups	80(%esi),%xmm0
1898	xorps	%xmm1,%xmm7
1899	movups	%xmm2,(%edi)
1900	movups	%xmm3,16(%edi)
1901	leal	96(%esi),%esi
1902	movups	%xmm4,32(%edi)
1903	movl	%ebx,%ecx
1904	movups	%xmm5,48(%edi)
1905	movl	%ebp,%edx
1906	movups	%xmm6,64(%edi)
1907	leal	80(%edi),%edi
1908	subl	$96,%eax
1909	ja	.L082cbc_dec_loop6
1910	movaps	%xmm7,%xmm2
1911	movaps	%xmm0,%xmm7
1912	addl	$80,%eax
1913	jle	.L083cbc_dec_clear_tail_collected
1914	movups	%xmm2,(%edi)
1915	leal	16(%edi),%edi
1916.L080cbc_dec_tail:
1917	movups	(%esi),%xmm2
1918	movaps	%xmm2,%xmm6
1919	cmpl	$16,%eax
1920	jbe	.L084cbc_dec_one
1921	movups	16(%esi),%xmm3
1922	movaps	%xmm3,%xmm5
1923	cmpl	$32,%eax
1924	jbe	.L085cbc_dec_two
1925	movups	32(%esi),%xmm4
1926	cmpl	$48,%eax
1927	jbe	.L086cbc_dec_three
1928	movups	48(%esi),%xmm5
1929	cmpl	$64,%eax
1930	jbe	.L087cbc_dec_four
1931	movups	64(%esi),%xmm6
1932	movaps	%xmm7,(%esp)
1933	movups	(%esi),%xmm2
1934	xorps	%xmm7,%xmm7
1935	call	_aesni_decrypt6
1936	movups	(%esi),%xmm1
1937	movups	16(%esi),%xmm0
1938	xorps	(%esp),%xmm2
1939	xorps	%xmm1,%xmm3
1940	movups	32(%esi),%xmm1
1941	xorps	%xmm0,%xmm4
1942	movups	48(%esi),%xmm0
1943	xorps	%xmm1,%xmm5
1944	movups	64(%esi),%xmm7
1945	xorps	%xmm0,%xmm6
1946	movups	%xmm2,(%edi)
1947	movups	%xmm3,16(%edi)
1948	pxor	%xmm3,%xmm3
1949	movups	%xmm4,32(%edi)
1950	pxor	%xmm4,%xmm4
1951	movups	%xmm5,48(%edi)
1952	pxor	%xmm5,%xmm5
1953	leal	64(%edi),%edi
1954	movaps	%xmm6,%xmm2
1955	pxor	%xmm6,%xmm6
1956	subl	$80,%eax
1957	jmp	.L088cbc_dec_tail_collected
1958.align	16
1959.L084cbc_dec_one:
1960	movups	(%edx),%xmm0
1961	movups	16(%edx),%xmm1
1962	leal	32(%edx),%edx
1963	xorps	%xmm0,%xmm2
1964.L089dec1_loop_16:
1965.byte	102,15,56,222,209
1966	decl	%ecx
1967	movups	(%edx),%xmm1
1968	leal	16(%edx),%edx
1969	jnz	.L089dec1_loop_16
1970.byte	102,15,56,223,209
1971	xorps	%xmm7,%xmm2
1972	movaps	%xmm6,%xmm7
1973	subl	$16,%eax
1974	jmp	.L088cbc_dec_tail_collected
1975.align	16
1976.L085cbc_dec_two:
1977	call	_aesni_decrypt2
1978	xorps	%xmm7,%xmm2
1979	xorps	%xmm6,%xmm3
1980	movups	%xmm2,(%edi)
1981	movaps	%xmm3,%xmm2
1982	pxor	%xmm3,%xmm3
1983	leal	16(%edi),%edi
1984	movaps	%xmm5,%xmm7
1985	subl	$32,%eax
1986	jmp	.L088cbc_dec_tail_collected
1987.align	16
1988.L086cbc_dec_three:
1989	call	_aesni_decrypt3
1990	xorps	%xmm7,%xmm2
1991	xorps	%xmm6,%xmm3
1992	xorps	%xmm5,%xmm4
1993	movups	%xmm2,(%edi)
1994	movaps	%xmm4,%xmm2
1995	pxor	%xmm4,%xmm4
1996	movups	%xmm3,16(%edi)
1997	pxor	%xmm3,%xmm3
1998	leal	32(%edi),%edi
1999	movups	32(%esi),%xmm7
2000	subl	$48,%eax
2001	jmp	.L088cbc_dec_tail_collected
2002.align	16
2003.L087cbc_dec_four:
2004	call	_aesni_decrypt4
2005	movups	16(%esi),%xmm1
2006	movups	32(%esi),%xmm0
2007	xorps	%xmm7,%xmm2
2008	movups	48(%esi),%xmm7
2009	xorps	%xmm6,%xmm3
2010	movups	%xmm2,(%edi)
2011	xorps	%xmm1,%xmm4
2012	movups	%xmm3,16(%edi)
2013	pxor	%xmm3,%xmm3
2014	xorps	%xmm0,%xmm5
2015	movups	%xmm4,32(%edi)
2016	pxor	%xmm4,%xmm4
2017	leal	48(%edi),%edi
2018	movaps	%xmm5,%xmm2
2019	pxor	%xmm5,%xmm5
2020	subl	$64,%eax
2021	jmp	.L088cbc_dec_tail_collected
2022.align	16
2023.L083cbc_dec_clear_tail_collected:
2024	pxor	%xmm3,%xmm3
2025	pxor	%xmm4,%xmm4
2026	pxor	%xmm5,%xmm5
2027	pxor	%xmm6,%xmm6
2028.L088cbc_dec_tail_collected:
2029	andl	$15,%eax
2030	jnz	.L090cbc_dec_tail_partial
2031	movups	%xmm2,(%edi)
2032	pxor	%xmm0,%xmm0
2033	jmp	.L079cbc_ret
2034.align	16
2035.L090cbc_dec_tail_partial:
2036	movaps	%xmm2,(%esp)
2037	pxor	%xmm0,%xmm0
2038	movl	$16,%ecx
2039	movl	%esp,%esi
2040	subl	%eax,%ecx
2041.long	2767451785
2042	movdqa	%xmm2,(%esp)
2043.L079cbc_ret:
2044	movl	16(%esp),%esp
2045	movl	36(%esp),%ebp
2046	pxor	%xmm2,%xmm2
2047	pxor	%xmm1,%xmm1
2048	movups	%xmm7,(%ebp)
2049	pxor	%xmm7,%xmm7
2050.L074cbc_abort:
2051	popl	%edi
2052	popl	%esi
2053	popl	%ebx
2054	popl	%ebp
2055	ret
2056.size	aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
2057.type	_aesni_set_encrypt_key,@function
2058.align	16
2059_aesni_set_encrypt_key:
2060	pushl	%ebp
2061	pushl	%ebx
2062	testl	%eax,%eax
2063	jz	.L091bad_pointer
2064	testl	%edx,%edx
2065	jz	.L091bad_pointer
2066	call	.L092pic
2067.L092pic:
2068	popl	%ebx
2069	leal	.Lkey_const-.L092pic(%ebx),%ebx
2070	leal	OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp
2071	movups	(%eax),%xmm0
2072	xorps	%xmm4,%xmm4
2073	movl	4(%ebp),%ebp
2074	leal	16(%edx),%edx
2075	andl	$268437504,%ebp
2076	cmpl	$256,%ecx
2077	je	.L09314rounds
2078	cmpl	$192,%ecx
2079	je	.L09412rounds
2080	cmpl	$128,%ecx
2081	jne	.L095bad_keybits
2082.align	16
2083.L09610rounds:
2084	cmpl	$268435456,%ebp
2085	je	.L09710rounds_alt
2086	movl	$9,%ecx
2087	movups	%xmm0,-16(%edx)
2088.byte	102,15,58,223,200,1
2089	call	.L098key_128_cold
2090.byte	102,15,58,223,200,2
2091	call	.L099key_128
2092.byte	102,15,58,223,200,4
2093	call	.L099key_128
2094.byte	102,15,58,223,200,8
2095	call	.L099key_128
2096.byte	102,15,58,223,200,16
2097	call	.L099key_128
2098.byte	102,15,58,223,200,32
2099	call	.L099key_128
2100.byte	102,15,58,223,200,64
2101	call	.L099key_128
2102.byte	102,15,58,223,200,128
2103	call	.L099key_128
2104.byte	102,15,58,223,200,27
2105	call	.L099key_128
2106.byte	102,15,58,223,200,54
2107	call	.L099key_128
2108	movups	%xmm0,(%edx)
2109	movl	%ecx,80(%edx)
2110	jmp	.L100good_key
2111.align	16
2112.L099key_128:
2113	movups	%xmm0,(%edx)
2114	leal	16(%edx),%edx
2115.L098key_128_cold:
2116	shufps	$16,%xmm0,%xmm4
2117	xorps	%xmm4,%xmm0
2118	shufps	$140,%xmm0,%xmm4
2119	xorps	%xmm4,%xmm0
2120	shufps	$255,%xmm1,%xmm1
2121	xorps	%xmm1,%xmm0
2122	ret
2123.align	16
2124.L09710rounds_alt:
2125	movdqa	(%ebx),%xmm5
2126	movl	$8,%ecx
2127	movdqa	32(%ebx),%xmm4
2128	movdqa	%xmm0,%xmm2
2129	movdqu	%xmm0,-16(%edx)
2130.L101loop_key128:
2131.byte	102,15,56,0,197
2132.byte	102,15,56,221,196
2133	pslld	$1,%xmm4
2134	leal	16(%edx),%edx
2135	movdqa	%xmm2,%xmm3
2136	pslldq	$4,%xmm2
2137	pxor	%xmm2,%xmm3
2138	pslldq	$4,%xmm2
2139	pxor	%xmm2,%xmm3
2140	pslldq	$4,%xmm2
2141	pxor	%xmm3,%xmm2
2142	pxor	%xmm2,%xmm0
2143	movdqu	%xmm0,-16(%edx)
2144	movdqa	%xmm0,%xmm2
2145	decl	%ecx
2146	jnz	.L101loop_key128
2147	movdqa	48(%ebx),%xmm4
2148.byte	102,15,56,0,197
2149.byte	102,15,56,221,196
2150	pslld	$1,%xmm4
2151	movdqa	%xmm2,%xmm3
2152	pslldq	$4,%xmm2
2153	pxor	%xmm2,%xmm3
2154	pslldq	$4,%xmm2
2155	pxor	%xmm2,%xmm3
2156	pslldq	$4,%xmm2
2157	pxor	%xmm3,%xmm2
2158	pxor	%xmm2,%xmm0
2159	movdqu	%xmm0,(%edx)
2160	movdqa	%xmm0,%xmm2
2161.byte	102,15,56,0,197
2162.byte	102,15,56,221,196
2163	movdqa	%xmm2,%xmm3
2164	pslldq	$4,%xmm2
2165	pxor	%xmm2,%xmm3
2166	pslldq	$4,%xmm2
2167	pxor	%xmm2,%xmm3
2168	pslldq	$4,%xmm2
2169	pxor	%xmm3,%xmm2
2170	pxor	%xmm2,%xmm0
2171	movdqu	%xmm0,16(%edx)
2172	movl	$9,%ecx
2173	movl	%ecx,96(%edx)
2174	jmp	.L100good_key
2175.align	16
2176.L09412rounds:
2177	movq	16(%eax),%xmm2
2178	cmpl	$268435456,%ebp
2179	je	.L10212rounds_alt
2180	movl	$11,%ecx
2181	movups	%xmm0,-16(%edx)
2182.byte	102,15,58,223,202,1
2183	call	.L103key_192a_cold
2184.byte	102,15,58,223,202,2
2185	call	.L104key_192b
2186.byte	102,15,58,223,202,4
2187	call	.L105key_192a
2188.byte	102,15,58,223,202,8
2189	call	.L104key_192b
2190.byte	102,15,58,223,202,16
2191	call	.L105key_192a
2192.byte	102,15,58,223,202,32
2193	call	.L104key_192b
2194.byte	102,15,58,223,202,64
2195	call	.L105key_192a
2196.byte	102,15,58,223,202,128
2197	call	.L104key_192b
2198	movups	%xmm0,(%edx)
2199	movl	%ecx,48(%edx)
2200	jmp	.L100good_key
2201.align	16
2202.L105key_192a:
2203	movups	%xmm0,(%edx)
2204	leal	16(%edx),%edx
2205.align	16
2206.L103key_192a_cold:
2207	movaps	%xmm2,%xmm5
2208.L106key_192b_warm:
2209	shufps	$16,%xmm0,%xmm4
2210	movdqa	%xmm2,%xmm3
2211	xorps	%xmm4,%xmm0
2212	shufps	$140,%xmm0,%xmm4
2213	pslldq	$4,%xmm3
2214	xorps	%xmm4,%xmm0
2215	pshufd	$85,%xmm1,%xmm1
2216	pxor	%xmm3,%xmm2
2217	pxor	%xmm1,%xmm0
2218	pshufd	$255,%xmm0,%xmm3
2219	pxor	%xmm3,%xmm2
2220	ret
2221.align	16
2222.L104key_192b:
2223	movaps	%xmm0,%xmm3
2224	shufps	$68,%xmm0,%xmm5
2225	movups	%xmm5,(%edx)
2226	shufps	$78,%xmm2,%xmm3
2227	movups	%xmm3,16(%edx)
2228	leal	32(%edx),%edx
2229	jmp	.L106key_192b_warm
2230.align	16
2231.L10212rounds_alt:
2232	movdqa	16(%ebx),%xmm5
2233	movdqa	32(%ebx),%xmm4
2234	movl	$8,%ecx
2235	movdqu	%xmm0,-16(%edx)
2236.L107loop_key192:
2237	movq	%xmm2,(%edx)
2238	movdqa	%xmm2,%xmm1
2239.byte	102,15,56,0,213
2240.byte	102,15,56,221,212
2241	pslld	$1,%xmm4
2242	leal	24(%edx),%edx
2243	movdqa	%xmm0,%xmm3
2244	pslldq	$4,%xmm0
2245	pxor	%xmm0,%xmm3
2246	pslldq	$4,%xmm0
2247	pxor	%xmm0,%xmm3
2248	pslldq	$4,%xmm0
2249	pxor	%xmm3,%xmm0
2250	pshufd	$255,%xmm0,%xmm3
2251	pxor	%xmm1,%xmm3
2252	pslldq	$4,%xmm1
2253	pxor	%xmm1,%xmm3
2254	pxor	%xmm2,%xmm0
2255	pxor	%xmm3,%xmm2
2256	movdqu	%xmm0,-16(%edx)
2257	decl	%ecx
2258	jnz	.L107loop_key192
2259	movl	$11,%ecx
2260	movl	%ecx,32(%edx)
2261	jmp	.L100good_key
2262.align	16
2263.L09314rounds:
2264	movups	16(%eax),%xmm2
2265	leal	16(%edx),%edx
2266	cmpl	$268435456,%ebp
2267	je	.L10814rounds_alt
2268	movl	$13,%ecx
2269	movups	%xmm0,-32(%edx)
2270	movups	%xmm2,-16(%edx)
2271.byte	102,15,58,223,202,1
2272	call	.L109key_256a_cold
2273.byte	102,15,58,223,200,1
2274	call	.L110key_256b
2275.byte	102,15,58,223,202,2
2276	call	.L111key_256a
2277.byte	102,15,58,223,200,2
2278	call	.L110key_256b
2279.byte	102,15,58,223,202,4
2280	call	.L111key_256a
2281.byte	102,15,58,223,200,4
2282	call	.L110key_256b
2283.byte	102,15,58,223,202,8
2284	call	.L111key_256a
2285.byte	102,15,58,223,200,8
2286	call	.L110key_256b
2287.byte	102,15,58,223,202,16
2288	call	.L111key_256a
2289.byte	102,15,58,223,200,16
2290	call	.L110key_256b
2291.byte	102,15,58,223,202,32
2292	call	.L111key_256a
2293.byte	102,15,58,223,200,32
2294	call	.L110key_256b
2295.byte	102,15,58,223,202,64
2296	call	.L111key_256a
2297	movups	%xmm0,(%edx)
2298	movl	%ecx,16(%edx)
2299	xorl	%eax,%eax
2300	jmp	.L100good_key
2301.align	16
2302.L111key_256a:
2303	movups	%xmm2,(%edx)
2304	leal	16(%edx),%edx
2305.L109key_256a_cold:
2306	shufps	$16,%xmm0,%xmm4
2307	xorps	%xmm4,%xmm0
2308	shufps	$140,%xmm0,%xmm4
2309	xorps	%xmm4,%xmm0
2310	shufps	$255,%xmm1,%xmm1
2311	xorps	%xmm1,%xmm0
2312	ret
2313.align	16
2314.L110key_256b:
2315	movups	%xmm0,(%edx)
2316	leal	16(%edx),%edx
2317	shufps	$16,%xmm2,%xmm4
2318	xorps	%xmm4,%xmm2
2319	shufps	$140,%xmm2,%xmm4
2320	xorps	%xmm4,%xmm2
2321	shufps	$170,%xmm1,%xmm1
2322	xorps	%xmm1,%xmm2
2323	ret
2324.align	16
2325.L10814rounds_alt:
2326	movdqa	(%ebx),%xmm5
2327	movdqa	32(%ebx),%xmm4
2328	movl	$7,%ecx
2329	movdqu	%xmm0,-32(%edx)
2330	movdqa	%xmm2,%xmm1
2331	movdqu	%xmm2,-16(%edx)
2332.L112loop_key256:
2333.byte	102,15,56,0,213
2334.byte	102,15,56,221,212
2335	movdqa	%xmm0,%xmm3
2336	pslldq	$4,%xmm0
2337	pxor	%xmm0,%xmm3
2338	pslldq	$4,%xmm0
2339	pxor	%xmm0,%xmm3
2340	pslldq	$4,%xmm0
2341	pxor	%xmm3,%xmm0
2342	pslld	$1,%xmm4
2343	pxor	%xmm2,%xmm0
2344	movdqu	%xmm0,(%edx)
2345	decl	%ecx
2346	jz	.L113done_key256
2347	pshufd	$255,%xmm0,%xmm2
2348	pxor	%xmm3,%xmm3
2349.byte	102,15,56,221,211
2350	movdqa	%xmm1,%xmm3
2351	pslldq	$4,%xmm1
2352	pxor	%xmm1,%xmm3
2353	pslldq	$4,%xmm1
2354	pxor	%xmm1,%xmm3
2355	pslldq	$4,%xmm1
2356	pxor	%xmm3,%xmm1
2357	pxor	%xmm1,%xmm2
2358	movdqu	%xmm2,16(%edx)
2359	leal	32(%edx),%edx
2360	movdqa	%xmm2,%xmm1
2361	jmp	.L112loop_key256
2362.L113done_key256:
2363	movl	$13,%ecx
2364	movl	%ecx,16(%edx)
2365.L100good_key:
2366	pxor	%xmm0,%xmm0
2367	pxor	%xmm1,%xmm1
2368	pxor	%xmm2,%xmm2
2369	pxor	%xmm3,%xmm3
2370	pxor	%xmm4,%xmm4
2371	pxor	%xmm5,%xmm5
2372	xorl	%eax,%eax
2373	popl	%ebx
2374	popl	%ebp
2375	ret
2376.align	4
2377.L091bad_pointer:
2378	movl	$-1,%eax
2379	popl	%ebx
2380	popl	%ebp
2381	ret
2382.align	4
2383.L095bad_keybits:
2384	pxor	%xmm0,%xmm0
2385	movl	$-2,%eax
2386	popl	%ebx
2387	popl	%ebp
2388	ret
2389.size	_aesni_set_encrypt_key,.-_aesni_set_encrypt_key
2390.globl	aesni_set_encrypt_key
2391.type	aesni_set_encrypt_key,@function
2392.align	16
2393aesni_set_encrypt_key:
2394.L_aesni_set_encrypt_key_begin:
2395	movl	4(%esp),%eax
2396	movl	8(%esp),%ecx
2397	movl	12(%esp),%edx
2398	call	_aesni_set_encrypt_key
2399	ret
2400.size	aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
2401.globl	aesni_set_decrypt_key
2402.type	aesni_set_decrypt_key,@function
2403.align	16
2404aesni_set_decrypt_key:
2405.L_aesni_set_decrypt_key_begin:
2406	movl	4(%esp),%eax
2407	movl	8(%esp),%ecx
2408	movl	12(%esp),%edx
2409	call	_aesni_set_encrypt_key
2410	movl	12(%esp),%edx
2411	shll	$4,%ecx
2412	testl	%eax,%eax
2413	jnz	.L114dec_key_ret
2414	leal	16(%edx,%ecx,1),%eax
2415	movups	(%edx),%xmm0
2416	movups	(%eax),%xmm1
2417	movups	%xmm0,(%eax)
2418	movups	%xmm1,(%edx)
2419	leal	16(%edx),%edx
2420	leal	-16(%eax),%eax
2421.L115dec_key_inverse:
2422	movups	(%edx),%xmm0
2423	movups	(%eax),%xmm1
2424.byte	102,15,56,219,192
2425.byte	102,15,56,219,201
2426	leal	16(%edx),%edx
2427	leal	-16(%eax),%eax
2428	movups	%xmm0,16(%eax)
2429	movups	%xmm1,-16(%edx)
2430	cmpl	%edx,%eax
2431	ja	.L115dec_key_inverse
2432	movups	(%edx),%xmm0
2433.byte	102,15,56,219,192
2434	movups	%xmm0,(%edx)
2435	pxor	%xmm0,%xmm0
2436	pxor	%xmm1,%xmm1
2437	xorl	%eax,%eax
2438.L114dec_key_ret:
2439	ret
2440.size	aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
2441.align	64
2442.Lkey_const:
2443.long	202313229,202313229,202313229,202313229
2444.long	67569157,67569157,67569157,67569157
2445.long	1,1,1,1
2446.long	27,27,27,27
2447.byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
2448.byte	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
2449.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2450.byte	115,108,46,111,114,103,62,0
2451.comm	OPENSSL_ia32cap_P,16,4
2452#else
2453.file	"aesni-x86.S"
2454.text
2455.globl	aesni_encrypt
2456.type	aesni_encrypt,@function
2457.align	16
2458aesni_encrypt:
2459.L_aesni_encrypt_begin:
2460	movl	4(%esp),%eax
2461	movl	12(%esp),%edx
2462	movups	(%eax),%xmm2
2463	movl	240(%edx),%ecx
2464	movl	8(%esp),%eax
2465	movups	(%edx),%xmm0
2466	movups	16(%edx),%xmm1
2467	leal	32(%edx),%edx
2468	xorps	%xmm0,%xmm2
2469.L000enc1_loop_1:
2470.byte	102,15,56,220,209
2471	decl	%ecx
2472	movups	(%edx),%xmm1
2473	leal	16(%edx),%edx
2474	jnz	.L000enc1_loop_1
2475.byte	102,15,56,221,209
2476	pxor	%xmm0,%xmm0
2477	pxor	%xmm1,%xmm1
2478	movups	%xmm2,(%eax)
2479	pxor	%xmm2,%xmm2
2480	ret
2481.size	aesni_encrypt,.-.L_aesni_encrypt_begin
2482.globl	aesni_decrypt
2483.type	aesni_decrypt,@function
2484.align	16
2485aesni_decrypt:
2486.L_aesni_decrypt_begin:
2487	movl	4(%esp),%eax
2488	movl	12(%esp),%edx
2489	movups	(%eax),%xmm2
2490	movl	240(%edx),%ecx
2491	movl	8(%esp),%eax
2492	movups	(%edx),%xmm0
2493	movups	16(%edx),%xmm1
2494	leal	32(%edx),%edx
2495	xorps	%xmm0,%xmm2
2496.L001dec1_loop_2:
2497.byte	102,15,56,222,209
2498	decl	%ecx
2499	movups	(%edx),%xmm1
2500	leal	16(%edx),%edx
2501	jnz	.L001dec1_loop_2
2502.byte	102,15,56,223,209
2503	pxor	%xmm0,%xmm0
2504	pxor	%xmm1,%xmm1
2505	movups	%xmm2,(%eax)
2506	pxor	%xmm2,%xmm2
2507	ret
2508.size	aesni_decrypt,.-.L_aesni_decrypt_begin
2509.type	_aesni_encrypt2,@function
2510.align	16
2511_aesni_encrypt2:
2512	movups	(%edx),%xmm0
2513	shll	$4,%ecx
2514	movups	16(%edx),%xmm1
2515	xorps	%xmm0,%xmm2
2516	pxor	%xmm0,%xmm3
2517	movups	32(%edx),%xmm0
2518	leal	32(%edx,%ecx,1),%edx
2519	negl	%ecx
2520	addl	$16,%ecx
2521.L002enc2_loop:
2522.byte	102,15,56,220,209
2523.byte	102,15,56,220,217
2524	movups	(%edx,%ecx,1),%xmm1
2525	addl	$32,%ecx
2526.byte	102,15,56,220,208
2527.byte	102,15,56,220,216
2528	movups	-16(%edx,%ecx,1),%xmm0
2529	jnz	.L002enc2_loop
2530.byte	102,15,56,220,209
2531.byte	102,15,56,220,217
2532.byte	102,15,56,221,208
2533.byte	102,15,56,221,216
2534	ret
2535.size	_aesni_encrypt2,.-_aesni_encrypt2
2536.type	_aesni_decrypt2,@function
2537.align	16
2538_aesni_decrypt2:
2539	movups	(%edx),%xmm0
2540	shll	$4,%ecx
2541	movups	16(%edx),%xmm1
2542	xorps	%xmm0,%xmm2
2543	pxor	%xmm0,%xmm3
2544	movups	32(%edx),%xmm0
2545	leal	32(%edx,%ecx,1),%edx
2546	negl	%ecx
2547	addl	$16,%ecx
2548.L003dec2_loop:
2549.byte	102,15,56,222,209
2550.byte	102,15,56,222,217
2551	movups	(%edx,%ecx,1),%xmm1
2552	addl	$32,%ecx
2553.byte	102,15,56,222,208
2554.byte	102,15,56,222,216
2555	movups	-16(%edx,%ecx,1),%xmm0
2556	jnz	.L003dec2_loop
2557.byte	102,15,56,222,209
2558.byte	102,15,56,222,217
2559.byte	102,15,56,223,208
2560.byte	102,15,56,223,216
2561	ret
2562.size	_aesni_decrypt2,.-_aesni_decrypt2
2563.type	_aesni_encrypt3,@function
2564.align	16
2565_aesni_encrypt3:
2566	movups	(%edx),%xmm0
2567	shll	$4,%ecx
2568	movups	16(%edx),%xmm1
2569	xorps	%xmm0,%xmm2
2570	pxor	%xmm0,%xmm3
2571	pxor	%xmm0,%xmm4
2572	movups	32(%edx),%xmm0
2573	leal	32(%edx,%ecx,1),%edx
2574	negl	%ecx
2575	addl	$16,%ecx
2576.L004enc3_loop:
2577.byte	102,15,56,220,209
2578.byte	102,15,56,220,217
2579.byte	102,15,56,220,225
2580	movups	(%edx,%ecx,1),%xmm1
2581	addl	$32,%ecx
2582.byte	102,15,56,220,208
2583.byte	102,15,56,220,216
2584.byte	102,15,56,220,224
2585	movups	-16(%edx,%ecx,1),%xmm0
2586	jnz	.L004enc3_loop
2587.byte	102,15,56,220,209
2588.byte	102,15,56,220,217
2589.byte	102,15,56,220,225
2590.byte	102,15,56,221,208
2591.byte	102,15,56,221,216
2592.byte	102,15,56,221,224
2593	ret
2594.size	_aesni_encrypt3,.-_aesni_encrypt3
2595.type	_aesni_decrypt3,@function
2596.align	16
2597_aesni_decrypt3:
2598	movups	(%edx),%xmm0
2599	shll	$4,%ecx
2600	movups	16(%edx),%xmm1
2601	xorps	%xmm0,%xmm2
2602	pxor	%xmm0,%xmm3
2603	pxor	%xmm0,%xmm4
2604	movups	32(%edx),%xmm0
2605	leal	32(%edx,%ecx,1),%edx
2606	negl	%ecx
2607	addl	$16,%ecx
2608.L005dec3_loop:
2609.byte	102,15,56,222,209
2610.byte	102,15,56,222,217
2611.byte	102,15,56,222,225
2612	movups	(%edx,%ecx,1),%xmm1
2613	addl	$32,%ecx
2614.byte	102,15,56,222,208
2615.byte	102,15,56,222,216
2616.byte	102,15,56,222,224
2617	movups	-16(%edx,%ecx,1),%xmm0
2618	jnz	.L005dec3_loop
2619.byte	102,15,56,222,209
2620.byte	102,15,56,222,217
2621.byte	102,15,56,222,225
2622.byte	102,15,56,223,208
2623.byte	102,15,56,223,216
2624.byte	102,15,56,223,224
2625	ret
2626.size	_aesni_decrypt3,.-_aesni_decrypt3
2627.type	_aesni_encrypt4,@function
2628.align	16
2629_aesni_encrypt4:
2630	movups	(%edx),%xmm0
2631	movups	16(%edx),%xmm1
2632	shll	$4,%ecx
2633	xorps	%xmm0,%xmm2
2634	pxor	%xmm0,%xmm3
2635	pxor	%xmm0,%xmm4
2636	pxor	%xmm0,%xmm5
2637	movups	32(%edx),%xmm0
2638	leal	32(%edx,%ecx,1),%edx
2639	negl	%ecx
2640.byte	15,31,64,0
2641	addl	$16,%ecx
2642.L006enc4_loop:
2643.byte	102,15,56,220,209
2644.byte	102,15,56,220,217
2645.byte	102,15,56,220,225
2646.byte	102,15,56,220,233
2647	movups	(%edx,%ecx,1),%xmm1
2648	addl	$32,%ecx
2649.byte	102,15,56,220,208
2650.byte	102,15,56,220,216
2651.byte	102,15,56,220,224
2652.byte	102,15,56,220,232
2653	movups	-16(%edx,%ecx,1),%xmm0
2654	jnz	.L006enc4_loop
2655.byte	102,15,56,220,209
2656.byte	102,15,56,220,217
2657.byte	102,15,56,220,225
2658.byte	102,15,56,220,233
2659.byte	102,15,56,221,208
2660.byte	102,15,56,221,216
2661.byte	102,15,56,221,224
2662.byte	102,15,56,221,232
2663	ret
2664.size	_aesni_encrypt4,.-_aesni_encrypt4
2665.type	_aesni_decrypt4,@function
2666.align	16
2667_aesni_decrypt4:
2668	movups	(%edx),%xmm0
2669	movups	16(%edx),%xmm1
2670	shll	$4,%ecx
2671	xorps	%xmm0,%xmm2
2672	pxor	%xmm0,%xmm3
2673	pxor	%xmm0,%xmm4
2674	pxor	%xmm0,%xmm5
2675	movups	32(%edx),%xmm0
2676	leal	32(%edx,%ecx,1),%edx
2677	negl	%ecx
2678.byte	15,31,64,0
2679	addl	$16,%ecx
2680.L007dec4_loop:
2681.byte	102,15,56,222,209
2682.byte	102,15,56,222,217
2683.byte	102,15,56,222,225
2684.byte	102,15,56,222,233
2685	movups	(%edx,%ecx,1),%xmm1
2686	addl	$32,%ecx
2687.byte	102,15,56,222,208
2688.byte	102,15,56,222,216
2689.byte	102,15,56,222,224
2690.byte	102,15,56,222,232
2691	movups	-16(%edx,%ecx,1),%xmm0
2692	jnz	.L007dec4_loop
2693.byte	102,15,56,222,209
2694.byte	102,15,56,222,217
2695.byte	102,15,56,222,225
2696.byte	102,15,56,222,233
2697.byte	102,15,56,223,208
2698.byte	102,15,56,223,216
2699.byte	102,15,56,223,224
2700.byte	102,15,56,223,232
2701	ret
2702.size	_aesni_decrypt4,.-_aesni_decrypt4
2703.type	_aesni_encrypt6,@function
2704.align	16
2705_aesni_encrypt6:
2706	movups	(%edx),%xmm0
2707	shll	$4,%ecx
2708	movups	16(%edx),%xmm1
2709	xorps	%xmm0,%xmm2
2710	pxor	%xmm0,%xmm3
2711	pxor	%xmm0,%xmm4
2712.byte	102,15,56,220,209
2713	pxor	%xmm0,%xmm5
2714	pxor	%xmm0,%xmm6
2715.byte	102,15,56,220,217
2716	leal	32(%edx,%ecx,1),%edx
2717	negl	%ecx
2718.byte	102,15,56,220,225
2719	pxor	%xmm0,%xmm7
2720	movups	(%edx,%ecx,1),%xmm0
2721	addl	$16,%ecx
2722	jmp	.L008_aesni_encrypt6_inner
2723.align	16
2724.L009enc6_loop:
2725.byte	102,15,56,220,209
2726.byte	102,15,56,220,217
2727.byte	102,15,56,220,225
2728.L008_aesni_encrypt6_inner:
2729.byte	102,15,56,220,233
2730.byte	102,15,56,220,241
2731.byte	102,15,56,220,249
2732.L_aesni_encrypt6_enter:
2733	movups	(%edx,%ecx,1),%xmm1
2734	addl	$32,%ecx
2735.byte	102,15,56,220,208
2736.byte	102,15,56,220,216
2737.byte	102,15,56,220,224
2738.byte	102,15,56,220,232
2739.byte	102,15,56,220,240
2740.byte	102,15,56,220,248
2741	movups	-16(%edx,%ecx,1),%xmm0
2742	jnz	.L009enc6_loop
2743.byte	102,15,56,220,209
2744.byte	102,15,56,220,217
2745.byte	102,15,56,220,225
2746.byte	102,15,56,220,233
2747.byte	102,15,56,220,241
2748.byte	102,15,56,220,249
2749.byte	102,15,56,221,208
2750.byte	102,15,56,221,216
2751.byte	102,15,56,221,224
2752.byte	102,15,56,221,232
2753.byte	102,15,56,221,240
2754.byte	102,15,56,221,248
2755	ret
2756.size	_aesni_encrypt6,.-_aesni_encrypt6
2757.type	_aesni_decrypt6,@function
2758.align	16
2759_aesni_decrypt6:
2760	movups	(%edx),%xmm0
2761	shll	$4,%ecx
2762	movups	16(%edx),%xmm1
2763	xorps	%xmm0,%xmm2
2764	pxor	%xmm0,%xmm3
2765	pxor	%xmm0,%xmm4
2766.byte	102,15,56,222,209
2767	pxor	%xmm0,%xmm5
2768	pxor	%xmm0,%xmm6
2769.byte	102,15,56,222,217
2770	leal	32(%edx,%ecx,1),%edx
2771	negl	%ecx
2772.byte	102,15,56,222,225
2773	pxor	%xmm0,%xmm7
2774	movups	(%edx,%ecx,1),%xmm0
2775	addl	$16,%ecx
2776	jmp	.L010_aesni_decrypt6_inner
2777.align	16
2778.L011dec6_loop:
2779.byte	102,15,56,222,209
2780.byte	102,15,56,222,217
2781.byte	102,15,56,222,225
2782.L010_aesni_decrypt6_inner:
2783.byte	102,15,56,222,233
2784.byte	102,15,56,222,241
2785.byte	102,15,56,222,249
2786.L_aesni_decrypt6_enter:
2787	movups	(%edx,%ecx,1),%xmm1
2788	addl	$32,%ecx
2789.byte	102,15,56,222,208
2790.byte	102,15,56,222,216
2791.byte	102,15,56,222,224
2792.byte	102,15,56,222,232
2793.byte	102,15,56,222,240
2794.byte	102,15,56,222,248
2795	movups	-16(%edx,%ecx,1),%xmm0
2796	jnz	.L011dec6_loop
2797.byte	102,15,56,222,209
2798.byte	102,15,56,222,217
2799.byte	102,15,56,222,225
2800.byte	102,15,56,222,233
2801.byte	102,15,56,222,241
2802.byte	102,15,56,222,249
2803.byte	102,15,56,223,208
2804.byte	102,15,56,223,216
2805.byte	102,15,56,223,224
2806.byte	102,15,56,223,232
2807.byte	102,15,56,223,240
2808.byte	102,15,56,223,248
2809	ret
2810.size	_aesni_decrypt6,.-_aesni_decrypt6
2811.globl	aesni_ecb_encrypt
2812.type	aesni_ecb_encrypt,@function
2813.align	16
2814aesni_ecb_encrypt:
2815.L_aesni_ecb_encrypt_begin:
2816	pushl	%ebp
2817	pushl	%ebx
2818	pushl	%esi
2819	pushl	%edi
2820	movl	20(%esp),%esi
2821	movl	24(%esp),%edi
2822	movl	28(%esp),%eax
2823	movl	32(%esp),%edx
2824	movl	36(%esp),%ebx
2825	andl	$-16,%eax
2826	jz	.L012ecb_ret
2827	movl	240(%edx),%ecx
2828	testl	%ebx,%ebx
2829	jz	.L013ecb_decrypt
2830	movl	%edx,%ebp
2831	movl	%ecx,%ebx
2832	cmpl	$96,%eax
2833	jb	.L014ecb_enc_tail
2834	movdqu	(%esi),%xmm2
2835	movdqu	16(%esi),%xmm3
2836	movdqu	32(%esi),%xmm4
2837	movdqu	48(%esi),%xmm5
2838	movdqu	64(%esi),%xmm6
2839	movdqu	80(%esi),%xmm7
2840	leal	96(%esi),%esi
2841	subl	$96,%eax
2842	jmp	.L015ecb_enc_loop6_enter
2843.align	16
2844.L016ecb_enc_loop6:
2845	movups	%xmm2,(%edi)
2846	movdqu	(%esi),%xmm2
2847	movups	%xmm3,16(%edi)
2848	movdqu	16(%esi),%xmm3
2849	movups	%xmm4,32(%edi)
2850	movdqu	32(%esi),%xmm4
2851	movups	%xmm5,48(%edi)
2852	movdqu	48(%esi),%xmm5
2853	movups	%xmm6,64(%edi)
2854	movdqu	64(%esi),%xmm6
2855	movups	%xmm7,80(%edi)
2856	leal	96(%edi),%edi
2857	movdqu	80(%esi),%xmm7
2858	leal	96(%esi),%esi
2859.L015ecb_enc_loop6_enter:
2860	call	_aesni_encrypt6
2861	movl	%ebp,%edx
2862	movl	%ebx,%ecx
2863	subl	$96,%eax
2864	jnc	.L016ecb_enc_loop6
2865	movups	%xmm2,(%edi)
2866	movups	%xmm3,16(%edi)
2867	movups	%xmm4,32(%edi)
2868	movups	%xmm5,48(%edi)
2869	movups	%xmm6,64(%edi)
2870	movups	%xmm7,80(%edi)
2871	leal	96(%edi),%edi
2872	addl	$96,%eax
2873	jz	.L012ecb_ret
2874.L014ecb_enc_tail:
2875	movups	(%esi),%xmm2
2876	cmpl	$32,%eax
2877	jb	.L017ecb_enc_one
2878	movups	16(%esi),%xmm3
2879	je	.L018ecb_enc_two
2880	movups	32(%esi),%xmm4
2881	cmpl	$64,%eax
2882	jb	.L019ecb_enc_three
2883	movups	48(%esi),%xmm5
2884	je	.L020ecb_enc_four
2885	movups	64(%esi),%xmm6
2886	xorps	%xmm7,%xmm7
2887	call	_aesni_encrypt6
2888	movups	%xmm2,(%edi)
2889	movups	%xmm3,16(%edi)
2890	movups	%xmm4,32(%edi)
2891	movups	%xmm5,48(%edi)
2892	movups	%xmm6,64(%edi)
2893	jmp	.L012ecb_ret
2894.align	16
2895.L017ecb_enc_one:
2896	movups	(%edx),%xmm0
2897	movups	16(%edx),%xmm1
2898	leal	32(%edx),%edx
2899	xorps	%xmm0,%xmm2
2900.L021enc1_loop_3:
2901.byte	102,15,56,220,209
2902	decl	%ecx
2903	movups	(%edx),%xmm1
2904	leal	16(%edx),%edx
2905	jnz	.L021enc1_loop_3
2906.byte	102,15,56,221,209
2907	movups	%xmm2,(%edi)
2908	jmp	.L012ecb_ret
2909.align	16
2910.L018ecb_enc_two:
2911	call	_aesni_encrypt2
2912	movups	%xmm2,(%edi)
2913	movups	%xmm3,16(%edi)
2914	jmp	.L012ecb_ret
2915.align	16
2916.L019ecb_enc_three:
2917	call	_aesni_encrypt3
2918	movups	%xmm2,(%edi)
2919	movups	%xmm3,16(%edi)
2920	movups	%xmm4,32(%edi)
2921	jmp	.L012ecb_ret
2922.align	16
2923.L020ecb_enc_four:
2924	call	_aesni_encrypt4
2925	movups	%xmm2,(%edi)
2926	movups	%xmm3,16(%edi)
2927	movups	%xmm4,32(%edi)
2928	movups	%xmm5,48(%edi)
2929	jmp	.L012ecb_ret
2930.align	16
2931.L013ecb_decrypt:
2932	movl	%edx,%ebp
2933	movl	%ecx,%ebx
2934	cmpl	$96,%eax
2935	jb	.L022ecb_dec_tail
2936	movdqu	(%esi),%xmm2
2937	movdqu	16(%esi),%xmm3
2938	movdqu	32(%esi),%xmm4
2939	movdqu	48(%esi),%xmm5
2940	movdqu	64(%esi),%xmm6
2941	movdqu	80(%esi),%xmm7
2942	leal	96(%esi),%esi
2943	subl	$96,%eax
2944	jmp	.L023ecb_dec_loop6_enter
2945.align	16
2946.L024ecb_dec_loop6:
2947	movups	%xmm2,(%edi)
2948	movdqu	(%esi),%xmm2
2949	movups	%xmm3,16(%edi)
2950	movdqu	16(%esi),%xmm3
2951	movups	%xmm4,32(%edi)
2952	movdqu	32(%esi),%xmm4
2953	movups	%xmm5,48(%edi)
2954	movdqu	48(%esi),%xmm5
2955	movups	%xmm6,64(%edi)
2956	movdqu	64(%esi),%xmm6
2957	movups	%xmm7,80(%edi)
2958	leal	96(%edi),%edi
2959	movdqu	80(%esi),%xmm7
2960	leal	96(%esi),%esi
2961.L023ecb_dec_loop6_enter:
2962	call	_aesni_decrypt6
2963	movl	%ebp,%edx
2964	movl	%ebx,%ecx
2965	subl	$96,%eax
2966	jnc	.L024ecb_dec_loop6
2967	movups	%xmm2,(%edi)
2968	movups	%xmm3,16(%edi)
2969	movups	%xmm4,32(%edi)
2970	movups	%xmm5,48(%edi)
2971	movups	%xmm6,64(%edi)
2972	movups	%xmm7,80(%edi)
2973	leal	96(%edi),%edi
2974	addl	$96,%eax
2975	jz	.L012ecb_ret
2976.L022ecb_dec_tail:
2977	movups	(%esi),%xmm2
2978	cmpl	$32,%eax
2979	jb	.L025ecb_dec_one
2980	movups	16(%esi),%xmm3
2981	je	.L026ecb_dec_two
2982	movups	32(%esi),%xmm4
2983	cmpl	$64,%eax
2984	jb	.L027ecb_dec_three
2985	movups	48(%esi),%xmm5
2986	je	.L028ecb_dec_four
2987	movups	64(%esi),%xmm6
2988	xorps	%xmm7,%xmm7
2989	call	_aesni_decrypt6
2990	movups	%xmm2,(%edi)
2991	movups	%xmm3,16(%edi)
2992	movups	%xmm4,32(%edi)
2993	movups	%xmm5,48(%edi)
2994	movups	%xmm6,64(%edi)
2995	jmp	.L012ecb_ret
2996.align	16
2997.L025ecb_dec_one:
2998	movups	(%edx),%xmm0
2999	movups	16(%edx),%xmm1
3000	leal	32(%edx),%edx
3001	xorps	%xmm0,%xmm2
3002.L029dec1_loop_4:
3003.byte	102,15,56,222,209
3004	decl	%ecx
3005	movups	(%edx),%xmm1
3006	leal	16(%edx),%edx
3007	jnz	.L029dec1_loop_4
3008.byte	102,15,56,223,209
3009	movups	%xmm2,(%edi)
3010	jmp	.L012ecb_ret
3011.align	16
3012.L026ecb_dec_two:
3013	call	_aesni_decrypt2
3014	movups	%xmm2,(%edi)
3015	movups	%xmm3,16(%edi)
3016	jmp	.L012ecb_ret
3017.align	16
3018.L027ecb_dec_three:
3019	call	_aesni_decrypt3
3020	movups	%xmm2,(%edi)
3021	movups	%xmm3,16(%edi)
3022	movups	%xmm4,32(%edi)
3023	jmp	.L012ecb_ret
3024.align	16
3025.L028ecb_dec_four:
3026	call	_aesni_decrypt4
3027	movups	%xmm2,(%edi)
3028	movups	%xmm3,16(%edi)
3029	movups	%xmm4,32(%edi)
3030	movups	%xmm5,48(%edi)
3031.L012ecb_ret:
3032	pxor	%xmm0,%xmm0
3033	pxor	%xmm1,%xmm1
3034	pxor	%xmm2,%xmm2
3035	pxor	%xmm3,%xmm3
3036	pxor	%xmm4,%xmm4
3037	pxor	%xmm5,%xmm5
3038	pxor	%xmm6,%xmm6
3039	pxor	%xmm7,%xmm7
3040	popl	%edi
3041	popl	%esi
3042	popl	%ebx
3043	popl	%ebp
3044	ret
3045.size	aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
3046.globl	aesni_ccm64_encrypt_blocks
3047.type	aesni_ccm64_encrypt_blocks,@function
3048.align	16
3049aesni_ccm64_encrypt_blocks:
3050.L_aesni_ccm64_encrypt_blocks_begin:
3051	pushl	%ebp
3052	pushl	%ebx
3053	pushl	%esi
3054	pushl	%edi
3055	movl	20(%esp),%esi
3056	movl	24(%esp),%edi
3057	movl	28(%esp),%eax
3058	movl	32(%esp),%edx
3059	movl	36(%esp),%ebx
3060	movl	40(%esp),%ecx
3061	movl	%esp,%ebp
3062	subl	$60,%esp
3063	andl	$-16,%esp
3064	movl	%ebp,48(%esp)
3065	movdqu	(%ebx),%xmm7
3066	movdqu	(%ecx),%xmm3
3067	movl	240(%edx),%ecx
3068	movl	$202182159,(%esp)
3069	movl	$134810123,4(%esp)
3070	movl	$67438087,8(%esp)
3071	movl	$66051,12(%esp)
3072	movl	$1,%ebx
3073	xorl	%ebp,%ebp
3074	movl	%ebx,16(%esp)
3075	movl	%ebp,20(%esp)
3076	movl	%ebp,24(%esp)
3077	movl	%ebp,28(%esp)
3078	shll	$4,%ecx
3079	movl	$16,%ebx
3080	leal	(%edx),%ebp
3081	movdqa	(%esp),%xmm5
3082	movdqa	%xmm7,%xmm2
3083	leal	32(%edx,%ecx,1),%edx
3084	subl	%ecx,%ebx
3085.byte	102,15,56,0,253
3086.L030ccm64_enc_outer:
3087	movups	(%ebp),%xmm0
3088	movl	%ebx,%ecx
3089	movups	(%esi),%xmm6
3090	xorps	%xmm0,%xmm2
3091	movups	16(%ebp),%xmm1
3092	xorps	%xmm6,%xmm0
3093	xorps	%xmm0,%xmm3
3094	movups	32(%ebp),%xmm0
3095.L031ccm64_enc2_loop:
3096.byte	102,15,56,220,209
3097.byte	102,15,56,220,217
3098	movups	(%edx,%ecx,1),%xmm1
3099	addl	$32,%ecx
3100.byte	102,15,56,220,208
3101.byte	102,15,56,220,216
3102	movups	-16(%edx,%ecx,1),%xmm0
3103	jnz	.L031ccm64_enc2_loop
3104.byte	102,15,56,220,209
3105.byte	102,15,56,220,217
3106	paddq	16(%esp),%xmm7
3107	decl	%eax
3108.byte	102,15,56,221,208
3109.byte	102,15,56,221,216
3110	leal	16(%esi),%esi
3111	xorps	%xmm2,%xmm6
3112	movdqa	%xmm7,%xmm2
3113	movups	%xmm6,(%edi)
3114.byte	102,15,56,0,213
3115	leal	16(%edi),%edi
3116	jnz	.L030ccm64_enc_outer
3117	movl	48(%esp),%esp
3118	movl	40(%esp),%edi
3119	movups	%xmm3,(%edi)
3120	pxor	%xmm0,%xmm0
3121	pxor	%xmm1,%xmm1
3122	pxor	%xmm2,%xmm2
3123	pxor	%xmm3,%xmm3
3124	pxor	%xmm4,%xmm4
3125	pxor	%xmm5,%xmm5
3126	pxor	%xmm6,%xmm6
3127	pxor	%xmm7,%xmm7
3128	popl	%edi
3129	popl	%esi
3130	popl	%ebx
3131	popl	%ebp
3132	ret
3133.size	aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
3134.globl	aesni_ccm64_decrypt_blocks
3135.type	aesni_ccm64_decrypt_blocks,@function
3136.align	16
3137aesni_ccm64_decrypt_blocks:
3138.L_aesni_ccm64_decrypt_blocks_begin:
3139	pushl	%ebp
3140	pushl	%ebx
3141	pushl	%esi
3142	pushl	%edi
3143	movl	20(%esp),%esi
3144	movl	24(%esp),%edi
3145	movl	28(%esp),%eax
3146	movl	32(%esp),%edx
3147	movl	36(%esp),%ebx
3148	movl	40(%esp),%ecx
3149	movl	%esp,%ebp
3150	subl	$60,%esp
3151	andl	$-16,%esp
3152	movl	%ebp,48(%esp)
3153	movdqu	(%ebx),%xmm7
3154	movdqu	(%ecx),%xmm3
3155	movl	240(%edx),%ecx
3156	movl	$202182159,(%esp)
3157	movl	$134810123,4(%esp)
3158	movl	$67438087,8(%esp)
3159	movl	$66051,12(%esp)
3160	movl	$1,%ebx
3161	xorl	%ebp,%ebp
3162	movl	%ebx,16(%esp)
3163	movl	%ebp,20(%esp)
3164	movl	%ebp,24(%esp)
3165	movl	%ebp,28(%esp)
3166	movdqa	(%esp),%xmm5
3167	movdqa	%xmm7,%xmm2
3168	movl	%edx,%ebp
3169	movl	%ecx,%ebx
3170.byte	102,15,56,0,253
3171	movups	(%edx),%xmm0
3172	movups	16(%edx),%xmm1
3173	leal	32(%edx),%edx
3174	xorps	%xmm0,%xmm2
3175.L032enc1_loop_5:
3176.byte	102,15,56,220,209
3177	decl	%ecx
3178	movups	(%edx),%xmm1
3179	leal	16(%edx),%edx
3180	jnz	.L032enc1_loop_5
3181.byte	102,15,56,221,209
3182	shll	$4,%ebx
3183	movl	$16,%ecx
3184	movups	(%esi),%xmm6
3185	paddq	16(%esp),%xmm7
3186	leal	16(%esi),%esi
3187	subl	%ebx,%ecx
3188	leal	32(%ebp,%ebx,1),%edx
3189	movl	%ecx,%ebx
3190	jmp	.L033ccm64_dec_outer
3191.align	16
3192.L033ccm64_dec_outer:
3193	xorps	%xmm2,%xmm6
3194	movdqa	%xmm7,%xmm2
3195	movups	%xmm6,(%edi)
3196	leal	16(%edi),%edi
3197.byte	102,15,56,0,213
3198	subl	$1,%eax
3199	jz	.L034ccm64_dec_break
3200	movups	(%ebp),%xmm0
3201	movl	%ebx,%ecx
3202	movups	16(%ebp),%xmm1
3203	xorps	%xmm0,%xmm6
3204	xorps	%xmm0,%xmm2
3205	xorps	%xmm6,%xmm3
3206	movups	32(%ebp),%xmm0
3207.L035ccm64_dec2_loop:
3208.byte	102,15,56,220,209
3209.byte	102,15,56,220,217
3210	movups	(%edx,%ecx,1),%xmm1
3211	addl	$32,%ecx
3212.byte	102,15,56,220,208
3213.byte	102,15,56,220,216
3214	movups	-16(%edx,%ecx,1),%xmm0
3215	jnz	.L035ccm64_dec2_loop
3216	movups	(%esi),%xmm6
3217	paddq	16(%esp),%xmm7
3218.byte	102,15,56,220,209
3219.byte	102,15,56,220,217
3220.byte	102,15,56,221,208
3221.byte	102,15,56,221,216
3222	leal	16(%esi),%esi
3223	jmp	.L033ccm64_dec_outer
3224.align	16
3225.L034ccm64_dec_break:
3226	movl	240(%ebp),%ecx
3227	movl	%ebp,%edx
3228	movups	(%edx),%xmm0
3229	movups	16(%edx),%xmm1
3230	xorps	%xmm0,%xmm6
3231	leal	32(%edx),%edx
3232	xorps	%xmm6,%xmm3
3233.L036enc1_loop_6:
3234.byte	102,15,56,220,217
3235	decl	%ecx
3236	movups	(%edx),%xmm1
3237	leal	16(%edx),%edx
3238	jnz	.L036enc1_loop_6
3239.byte	102,15,56,221,217
3240	movl	48(%esp),%esp
3241	movl	40(%esp),%edi
3242	movups	%xmm3,(%edi)
3243	pxor	%xmm0,%xmm0
3244	pxor	%xmm1,%xmm1
3245	pxor	%xmm2,%xmm2
3246	pxor	%xmm3,%xmm3
3247	pxor	%xmm4,%xmm4
3248	pxor	%xmm5,%xmm5
3249	pxor	%xmm6,%xmm6
3250	pxor	%xmm7,%xmm7
3251	popl	%edi
3252	popl	%esi
3253	popl	%ebx
3254	popl	%ebp
3255	ret
3256.size	aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
3257.globl	aesni_ctr32_encrypt_blocks
3258.type	aesni_ctr32_encrypt_blocks,@function
3259.align	16
3260aesni_ctr32_encrypt_blocks:
3261.L_aesni_ctr32_encrypt_blocks_begin:
3262	pushl	%ebp
3263	pushl	%ebx
3264	pushl	%esi
3265	pushl	%edi
3266	movl	20(%esp),%esi
3267	movl	24(%esp),%edi
3268	movl	28(%esp),%eax
3269	movl	32(%esp),%edx
3270	movl	36(%esp),%ebx
3271	movl	%esp,%ebp
3272	subl	$88,%esp
3273	andl	$-16,%esp
3274	movl	%ebp,80(%esp)
3275	cmpl	$1,%eax
3276	je	.L037ctr32_one_shortcut
3277	movdqu	(%ebx),%xmm7
3278	movl	$202182159,(%esp)
3279	movl	$134810123,4(%esp)
3280	movl	$67438087,8(%esp)
3281	movl	$66051,12(%esp)
3282	movl	$6,%ecx
3283	xorl	%ebp,%ebp
3284	movl	%ecx,16(%esp)
3285	movl	%ecx,20(%esp)
3286	movl	%ecx,24(%esp)
3287	movl	%ebp,28(%esp)
3288.byte	102,15,58,22,251,3
3289.byte	102,15,58,34,253,3
3290	movl	240(%edx),%ecx
3291	bswap	%ebx
3292	pxor	%xmm0,%xmm0
3293	pxor	%xmm1,%xmm1
3294	movdqa	(%esp),%xmm2
3295.byte	102,15,58,34,195,0
3296	leal	3(%ebx),%ebp
3297.byte	102,15,58,34,205,0
3298	incl	%ebx
3299.byte	102,15,58,34,195,1
3300	incl	%ebp
3301.byte	102,15,58,34,205,1
3302	incl	%ebx
3303.byte	102,15,58,34,195,2
3304	incl	%ebp
3305.byte	102,15,58,34,205,2
3306	movdqa	%xmm0,48(%esp)
3307.byte	102,15,56,0,194
3308	movdqu	(%edx),%xmm6
3309	movdqa	%xmm1,64(%esp)
3310.byte	102,15,56,0,202
3311	pshufd	$192,%xmm0,%xmm2
3312	pshufd	$128,%xmm0,%xmm3
3313	cmpl	$6,%eax
3314	jb	.L038ctr32_tail
3315	pxor	%xmm6,%xmm7
3316	shll	$4,%ecx
3317	movl	$16,%ebx
3318	movdqa	%xmm7,32(%esp)
3319	movl	%edx,%ebp
3320	subl	%ecx,%ebx
3321	leal	32(%edx,%ecx,1),%edx
3322	subl	$6,%eax
3323	jmp	.L039ctr32_loop6
3324.align	16
3325.L039ctr32_loop6:
3326	pshufd	$64,%xmm0,%xmm4
3327	movdqa	32(%esp),%xmm0
3328	pshufd	$192,%xmm1,%xmm5
3329	pxor	%xmm0,%xmm2
3330	pshufd	$128,%xmm1,%xmm6
3331	pxor	%xmm0,%xmm3
3332	pshufd	$64,%xmm1,%xmm7
3333	movups	16(%ebp),%xmm1
3334	pxor	%xmm0,%xmm4
3335	pxor	%xmm0,%xmm5
3336.byte	102,15,56,220,209
3337	pxor	%xmm0,%xmm6
3338	pxor	%xmm0,%xmm7
3339.byte	102,15,56,220,217
3340	movups	32(%ebp),%xmm0
3341	movl	%ebx,%ecx
3342.byte	102,15,56,220,225
3343.byte	102,15,56,220,233
3344.byte	102,15,56,220,241
3345.byte	102,15,56,220,249
3346	call	.L_aesni_encrypt6_enter
3347	movups	(%esi),%xmm1
3348	movups	16(%esi),%xmm0
3349	xorps	%xmm1,%xmm2
3350	movups	32(%esi),%xmm1
3351	xorps	%xmm0,%xmm3
3352	movups	%xmm2,(%edi)
3353	movdqa	16(%esp),%xmm0
3354	xorps	%xmm1,%xmm4
3355	movdqa	64(%esp),%xmm1
3356	movups	%xmm3,16(%edi)
3357	movups	%xmm4,32(%edi)
3358	paddd	%xmm0,%xmm1
3359	paddd	48(%esp),%xmm0
3360	movdqa	(%esp),%xmm2
3361	movups	48(%esi),%xmm3
3362	movups	64(%esi),%xmm4
3363	xorps	%xmm3,%xmm5
3364	movups	80(%esi),%xmm3
3365	leal	96(%esi),%esi
3366	movdqa	%xmm0,48(%esp)
3367.byte	102,15,56,0,194
3368	xorps	%xmm4,%xmm6
3369	movups	%xmm5,48(%edi)
3370	xorps	%xmm3,%xmm7
3371	movdqa	%xmm1,64(%esp)
3372.byte	102,15,56,0,202
3373	movups	%xmm6,64(%edi)
3374	pshufd	$192,%xmm0,%xmm2
3375	movups	%xmm7,80(%edi)
3376	leal	96(%edi),%edi
3377	pshufd	$128,%xmm0,%xmm3
3378	subl	$6,%eax
3379	jnc	.L039ctr32_loop6
3380	addl	$6,%eax
3381	jz	.L040ctr32_ret
3382	movdqu	(%ebp),%xmm7
3383	movl	%ebp,%edx
3384	pxor	32(%esp),%xmm7
3385	movl	240(%ebp),%ecx
3386.L038ctr32_tail:
3387	por	%xmm7,%xmm2
3388	cmpl	$2,%eax
3389	jb	.L041ctr32_one
3390	pshufd	$64,%xmm0,%xmm4
3391	por	%xmm7,%xmm3
3392	je	.L042ctr32_two
3393	pshufd	$192,%xmm1,%xmm5
3394	por	%xmm7,%xmm4
3395	cmpl	$4,%eax
3396	jb	.L043ctr32_three
3397	pshufd	$128,%xmm1,%xmm6
3398	por	%xmm7,%xmm5
3399	je	.L044ctr32_four
3400	por	%xmm7,%xmm6
3401	call	_aesni_encrypt6
3402	movups	(%esi),%xmm1
3403	movups	16(%esi),%xmm0
3404	xorps	%xmm1,%xmm2
3405	movups	32(%esi),%xmm1
3406	xorps	%xmm0,%xmm3
3407	movups	48(%esi),%xmm0
3408	xorps	%xmm1,%xmm4
3409	movups	64(%esi),%xmm1
3410	xorps	%xmm0,%xmm5
3411	movups	%xmm2,(%edi)
3412	xorps	%xmm1,%xmm6
3413	movups	%xmm3,16(%edi)
3414	movups	%xmm4,32(%edi)
3415	movups	%xmm5,48(%edi)
3416	movups	%xmm6,64(%edi)
3417	jmp	.L040ctr32_ret
3418.align	16
3419.L037ctr32_one_shortcut:
3420	movups	(%ebx),%xmm2
3421	movl	240(%edx),%ecx
3422.L041ctr32_one:
3423	movups	(%edx),%xmm0
3424	movups	16(%edx),%xmm1
3425	leal	32(%edx),%edx
3426	xorps	%xmm0,%xmm2
3427.L045enc1_loop_7:
3428.byte	102,15,56,220,209
3429	decl	%ecx
3430	movups	(%edx),%xmm1
3431	leal	16(%edx),%edx
3432	jnz	.L045enc1_loop_7
3433.byte	102,15,56,221,209
3434	movups	(%esi),%xmm6
3435	xorps	%xmm2,%xmm6
3436	movups	%xmm6,(%edi)
3437	jmp	.L040ctr32_ret
3438.align	16
3439.L042ctr32_two:
3440	call	_aesni_encrypt2
3441	movups	(%esi),%xmm5
3442	movups	16(%esi),%xmm6
3443	xorps	%xmm5,%xmm2
3444	xorps	%xmm6,%xmm3
3445	movups	%xmm2,(%edi)
3446	movups	%xmm3,16(%edi)
3447	jmp	.L040ctr32_ret
3448.align	16
3449.L043ctr32_three:
3450	call	_aesni_encrypt3
3451	movups	(%esi),%xmm5
3452	movups	16(%esi),%xmm6
3453	xorps	%xmm5,%xmm2
3454	movups	32(%esi),%xmm7
3455	xorps	%xmm6,%xmm3
3456	movups	%xmm2,(%edi)
3457	xorps	%xmm7,%xmm4
3458	movups	%xmm3,16(%edi)
3459	movups	%xmm4,32(%edi)
3460	jmp	.L040ctr32_ret
3461.align	16
3462.L044ctr32_four:
3463	call	_aesni_encrypt4
3464	movups	(%esi),%xmm6
3465	movups	16(%esi),%xmm7
3466	movups	32(%esi),%xmm1
3467	xorps	%xmm6,%xmm2
3468	movups	48(%esi),%xmm0
3469	xorps	%xmm7,%xmm3
3470	movups	%xmm2,(%edi)
3471	xorps	%xmm1,%xmm4
3472	movups	%xmm3,16(%edi)
3473	xorps	%xmm0,%xmm5
3474	movups	%xmm4,32(%edi)
3475	movups	%xmm5,48(%edi)
3476.L040ctr32_ret:
3477	pxor	%xmm0,%xmm0
3478	pxor	%xmm1,%xmm1
3479	pxor	%xmm2,%xmm2
3480	pxor	%xmm3,%xmm3
3481	pxor	%xmm4,%xmm4
3482	movdqa	%xmm0,32(%esp)
3483	pxor	%xmm5,%xmm5
3484	movdqa	%xmm0,48(%esp)
3485	pxor	%xmm6,%xmm6
3486	movdqa	%xmm0,64(%esp)
3487	pxor	%xmm7,%xmm7
3488	movl	80(%esp),%esp
3489	popl	%edi
3490	popl	%esi
3491	popl	%ebx
3492	popl	%ebp
3493	ret
3494.size	aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
3495.globl	aesni_xts_encrypt
3496.type	aesni_xts_encrypt,@function
3497.align	16
3498aesni_xts_encrypt:
3499.L_aesni_xts_encrypt_begin:
3500	pushl	%ebp
3501	pushl	%ebx
3502	pushl	%esi
3503	pushl	%edi
3504	movl	36(%esp),%edx
3505	movl	40(%esp),%esi
3506	movl	240(%edx),%ecx
3507	movups	(%esi),%xmm2
3508	movups	(%edx),%xmm0
3509	movups	16(%edx),%xmm1
3510	leal	32(%edx),%edx
3511	xorps	%xmm0,%xmm2
3512.L046enc1_loop_8:
3513.byte	102,15,56,220,209
3514	decl	%ecx
3515	movups	(%edx),%xmm1
3516	leal	16(%edx),%edx
3517	jnz	.L046enc1_loop_8
3518.byte	102,15,56,221,209
3519	movl	20(%esp),%esi
3520	movl	24(%esp),%edi
3521	movl	28(%esp),%eax
3522	movl	32(%esp),%edx
3523	movl	%esp,%ebp
3524	subl	$120,%esp
3525	movl	240(%edx),%ecx
3526	andl	$-16,%esp
3527	movl	$135,96(%esp)
3528	movl	$0,100(%esp)
3529	movl	$1,104(%esp)
3530	movl	$0,108(%esp)
3531	movl	%eax,112(%esp)
3532	movl	%ebp,116(%esp)
3533	movdqa	%xmm2,%xmm1
3534	pxor	%xmm0,%xmm0
3535	movdqa	96(%esp),%xmm3
3536	pcmpgtd	%xmm1,%xmm0
3537	andl	$-16,%eax
3538	movl	%edx,%ebp
3539	movl	%ecx,%ebx
3540	subl	$96,%eax
3541	jc	.L047xts_enc_short
3542	shll	$4,%ecx
3543	movl	$16,%ebx
3544	subl	%ecx,%ebx
3545	leal	32(%edx,%ecx,1),%edx
3546	jmp	.L048xts_enc_loop6
3547.align	16
3548.L048xts_enc_loop6:
3549	pshufd	$19,%xmm0,%xmm2
3550	pxor	%xmm0,%xmm0
3551	movdqa	%xmm1,(%esp)
3552	paddq	%xmm1,%xmm1
3553	pand	%xmm3,%xmm2
3554	pcmpgtd	%xmm1,%xmm0
3555	pxor	%xmm2,%xmm1
3556	pshufd	$19,%xmm0,%xmm2
3557	pxor	%xmm0,%xmm0
3558	movdqa	%xmm1,16(%esp)
3559	paddq	%xmm1,%xmm1
3560	pand	%xmm3,%xmm2
3561	pcmpgtd	%xmm1,%xmm0
3562	pxor	%xmm2,%xmm1
3563	pshufd	$19,%xmm0,%xmm2
3564	pxor	%xmm0,%xmm0
3565	movdqa	%xmm1,32(%esp)
3566	paddq	%xmm1,%xmm1
3567	pand	%xmm3,%xmm2
3568	pcmpgtd	%xmm1,%xmm0
3569	pxor	%xmm2,%xmm1
3570	pshufd	$19,%xmm0,%xmm2
3571	pxor	%xmm0,%xmm0
3572	movdqa	%xmm1,48(%esp)
3573	paddq	%xmm1,%xmm1
3574	pand	%xmm3,%xmm2
3575	pcmpgtd	%xmm1,%xmm0
3576	pxor	%xmm2,%xmm1
3577	pshufd	$19,%xmm0,%xmm7
3578	movdqa	%xmm1,64(%esp)
3579	paddq	%xmm1,%xmm1
3580	movups	(%ebp),%xmm0
3581	pand	%xmm3,%xmm7
3582	movups	(%esi),%xmm2
3583	pxor	%xmm1,%xmm7
3584	movl	%ebx,%ecx
3585	movdqu	16(%esi),%xmm3
3586	xorps	%xmm0,%xmm2
3587	movdqu	32(%esi),%xmm4
3588	pxor	%xmm0,%xmm3
3589	movdqu	48(%esi),%xmm5
3590	pxor	%xmm0,%xmm4
3591	movdqu	64(%esi),%xmm6
3592	pxor	%xmm0,%xmm5
3593	movdqu	80(%esi),%xmm1
3594	pxor	%xmm0,%xmm6
3595	leal	96(%esi),%esi
3596	pxor	(%esp),%xmm2
3597	movdqa	%xmm7,80(%esp)
3598	pxor	%xmm1,%xmm7
3599	movups	16(%ebp),%xmm1
3600	pxor	16(%esp),%xmm3
3601	pxor	32(%esp),%xmm4
3602.byte	102,15,56,220,209
3603	pxor	48(%esp),%xmm5
3604	pxor	64(%esp),%xmm6
3605.byte	102,15,56,220,217
3606	pxor	%xmm0,%xmm7
3607	movups	32(%ebp),%xmm0
3608.byte	102,15,56,220,225
3609.byte	102,15,56,220,233
3610.byte	102,15,56,220,241
3611.byte	102,15,56,220,249
3612	call	.L_aesni_encrypt6_enter
3613	movdqa	80(%esp),%xmm1
3614	pxor	%xmm0,%xmm0
3615	xorps	(%esp),%xmm2
3616	pcmpgtd	%xmm1,%xmm0
3617	xorps	16(%esp),%xmm3
3618	movups	%xmm2,(%edi)
3619	xorps	32(%esp),%xmm4
3620	movups	%xmm3,16(%edi)
3621	xorps	48(%esp),%xmm5
3622	movups	%xmm4,32(%edi)
3623	xorps	64(%esp),%xmm6
3624	movups	%xmm5,48(%edi)
3625	xorps	%xmm1,%xmm7
3626	movups	%xmm6,64(%edi)
3627	pshufd	$19,%xmm0,%xmm2
3628	movups	%xmm7,80(%edi)
3629	leal	96(%edi),%edi
3630	movdqa	96(%esp),%xmm3
3631	pxor	%xmm0,%xmm0
3632	paddq	%xmm1,%xmm1
3633	pand	%xmm3,%xmm2
3634	pcmpgtd	%xmm1,%xmm0
3635	pxor	%xmm2,%xmm1
3636	subl	$96,%eax
3637	jnc	.L048xts_enc_loop6
3638	movl	240(%ebp),%ecx
3639	movl	%ebp,%edx
3640	movl	%ecx,%ebx
3641.L047xts_enc_short:
3642	addl	$96,%eax
3643	jz	.L049xts_enc_done6x
3644	movdqa	%xmm1,%xmm5
3645	cmpl	$32,%eax
3646	jb	.L050xts_enc_one
3647	pshufd	$19,%xmm0,%xmm2
3648	pxor	%xmm0,%xmm0
3649	paddq	%xmm1,%xmm1
3650	pand	%xmm3,%xmm2
3651	pcmpgtd	%xmm1,%xmm0
3652	pxor	%xmm2,%xmm1
3653	je	.L051xts_enc_two
3654	pshufd	$19,%xmm0,%xmm2
3655	pxor	%xmm0,%xmm0
3656	movdqa	%xmm1,%xmm6
3657	paddq	%xmm1,%xmm1
3658	pand	%xmm3,%xmm2
3659	pcmpgtd	%xmm1,%xmm0
3660	pxor	%xmm2,%xmm1
3661	cmpl	$64,%eax
3662	jb	.L052xts_enc_three
3663	pshufd	$19,%xmm0,%xmm2
3664	pxor	%xmm0,%xmm0
3665	movdqa	%xmm1,%xmm7
3666	paddq	%xmm1,%xmm1
3667	pand	%xmm3,%xmm2
3668	pcmpgtd	%xmm1,%xmm0
3669	pxor	%xmm2,%xmm1
3670	movdqa	%xmm5,(%esp)
3671	movdqa	%xmm6,16(%esp)
3672	je	.L053xts_enc_four
3673	movdqa	%xmm7,32(%esp)
3674	pshufd	$19,%xmm0,%xmm7
3675	movdqa	%xmm1,48(%esp)
3676	paddq	%xmm1,%xmm1
3677	pand	%xmm3,%xmm7
3678	pxor	%xmm1,%xmm7
3679	movdqu	(%esi),%xmm2
3680	movdqu	16(%esi),%xmm3
3681	movdqu	32(%esi),%xmm4
3682	pxor	(%esp),%xmm2
3683	movdqu	48(%esi),%xmm5
3684	pxor	16(%esp),%xmm3
3685	movdqu	64(%esi),%xmm6
3686	pxor	32(%esp),%xmm4
3687	leal	80(%esi),%esi
3688	pxor	48(%esp),%xmm5
3689	movdqa	%xmm7,64(%esp)
3690	pxor	%xmm7,%xmm6
3691	call	_aesni_encrypt6
3692	movaps	64(%esp),%xmm1
3693	xorps	(%esp),%xmm2
3694	xorps	16(%esp),%xmm3
3695	xorps	32(%esp),%xmm4
3696	movups	%xmm2,(%edi)
3697	xorps	48(%esp),%xmm5
3698	movups	%xmm3,16(%edi)
3699	xorps	%xmm1,%xmm6
3700	movups	%xmm4,32(%edi)
3701	movups	%xmm5,48(%edi)
3702	movups	%xmm6,64(%edi)
3703	leal	80(%edi),%edi
3704	jmp	.L054xts_enc_done
3705.align	16
3706.L050xts_enc_one:
3707	movups	(%esi),%xmm2
3708	leal	16(%esi),%esi
3709	xorps	%xmm5,%xmm2
3710	movups	(%edx),%xmm0
3711	movups	16(%edx),%xmm1
3712	leal	32(%edx),%edx
3713	xorps	%xmm0,%xmm2
3714.L055enc1_loop_9:
3715.byte	102,15,56,220,209
3716	decl	%ecx
3717	movups	(%edx),%xmm1
3718	leal	16(%edx),%edx
3719	jnz	.L055enc1_loop_9
3720.byte	102,15,56,221,209
3721	xorps	%xmm5,%xmm2
3722	movups	%xmm2,(%edi)
3723	leal	16(%edi),%edi
3724	movdqa	%xmm5,%xmm1
3725	jmp	.L054xts_enc_done
3726.align	16
3727.L051xts_enc_two:
3728	movaps	%xmm1,%xmm6
3729	movups	(%esi),%xmm2
3730	movups	16(%esi),%xmm3
3731	leal	32(%esi),%esi
3732	xorps	%xmm5,%xmm2
3733	xorps	%xmm6,%xmm3
3734	call	_aesni_encrypt2
3735	xorps	%xmm5,%xmm2
3736	xorps	%xmm6,%xmm3
3737	movups	%xmm2,(%edi)
3738	movups	%xmm3,16(%edi)
3739	leal	32(%edi),%edi
3740	movdqa	%xmm6,%xmm1
3741	jmp	.L054xts_enc_done
3742.align	16
3743.L052xts_enc_three:
3744	movaps	%xmm1,%xmm7
3745	movups	(%esi),%xmm2
3746	movups	16(%esi),%xmm3
3747	movups	32(%esi),%xmm4
3748	leal	48(%esi),%esi
3749	xorps	%xmm5,%xmm2
3750	xorps	%xmm6,%xmm3
3751	xorps	%xmm7,%xmm4
3752	call	_aesni_encrypt3
3753	xorps	%xmm5,%xmm2
3754	xorps	%xmm6,%xmm3
3755	xorps	%xmm7,%xmm4
3756	movups	%xmm2,(%edi)
3757	movups	%xmm3,16(%edi)
3758	movups	%xmm4,32(%edi)
3759	leal	48(%edi),%edi
3760	movdqa	%xmm7,%xmm1
3761	jmp	.L054xts_enc_done
3762.align	16
3763.L053xts_enc_four:
3764	movaps	%xmm1,%xmm6
3765	movups	(%esi),%xmm2
3766	movups	16(%esi),%xmm3
3767	movups	32(%esi),%xmm4
3768	xorps	(%esp),%xmm2
3769	movups	48(%esi),%xmm5
3770	leal	64(%esi),%esi
3771	xorps	16(%esp),%xmm3
3772	xorps	%xmm7,%xmm4
3773	xorps	%xmm6,%xmm5
3774	call	_aesni_encrypt4
3775	xorps	(%esp),%xmm2
3776	xorps	16(%esp),%xmm3
3777	xorps	%xmm7,%xmm4
3778	movups	%xmm2,(%edi)
3779	xorps	%xmm6,%xmm5
3780	movups	%xmm3,16(%edi)
3781	movups	%xmm4,32(%edi)
3782	movups	%xmm5,48(%edi)
3783	leal	64(%edi),%edi
3784	movdqa	%xmm6,%xmm1
3785	jmp	.L054xts_enc_done
3786.align	16
3787.L049xts_enc_done6x:
3788	movl	112(%esp),%eax
3789	andl	$15,%eax
3790	jz	.L056xts_enc_ret
3791	movdqa	%xmm1,%xmm5
3792	movl	%eax,112(%esp)
3793	jmp	.L057xts_enc_steal
3794.align	16
3795.L054xts_enc_done:
3796	movl	112(%esp),%eax
3797	pxor	%xmm0,%xmm0
3798	andl	$15,%eax
3799	jz	.L056xts_enc_ret
3800	pcmpgtd	%xmm1,%xmm0
3801	movl	%eax,112(%esp)
3802	pshufd	$19,%xmm0,%xmm5
3803	paddq	%xmm1,%xmm1
3804	pand	96(%esp),%xmm5
3805	pxor	%xmm1,%xmm5
3806.L057xts_enc_steal:
3807	movzbl	(%esi),%ecx
3808	movzbl	-16(%edi),%edx
3809	leal	1(%esi),%esi
3810	movb	%cl,-16(%edi)
3811	movb	%dl,(%edi)
3812	leal	1(%edi),%edi
3813	subl	$1,%eax
3814	jnz	.L057xts_enc_steal
3815	subl	112(%esp),%edi
3816	movl	%ebp,%edx
3817	movl	%ebx,%ecx
3818	movups	-16(%edi),%xmm2
3819	xorps	%xmm5,%xmm2
3820	movups	(%edx),%xmm0
3821	movups	16(%edx),%xmm1
3822	leal	32(%edx),%edx
3823	xorps	%xmm0,%xmm2
3824.L058enc1_loop_10:
3825.byte	102,15,56,220,209
3826	decl	%ecx
3827	movups	(%edx),%xmm1
3828	leal	16(%edx),%edx
3829	jnz	.L058enc1_loop_10
3830.byte	102,15,56,221,209
3831	xorps	%xmm5,%xmm2
3832	movups	%xmm2,-16(%edi)
3833.L056xts_enc_ret:
3834	pxor	%xmm0,%xmm0
3835	pxor	%xmm1,%xmm1
3836	pxor	%xmm2,%xmm2
3837	movdqa	%xmm0,(%esp)
3838	pxor	%xmm3,%xmm3
3839	movdqa	%xmm0,16(%esp)
3840	pxor	%xmm4,%xmm4
3841	movdqa	%xmm0,32(%esp)
3842	pxor	%xmm5,%xmm5
3843	movdqa	%xmm0,48(%esp)
3844	pxor	%xmm6,%xmm6
3845	movdqa	%xmm0,64(%esp)
3846	pxor	%xmm7,%xmm7
3847	movdqa	%xmm0,80(%esp)
3848	movl	116(%esp),%esp
3849	popl	%edi
3850	popl	%esi
3851	popl	%ebx
3852	popl	%ebp
3853	ret
3854.size	aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
3855.globl	aesni_xts_decrypt
3856.type	aesni_xts_decrypt,@function
3857.align	16
3858aesni_xts_decrypt:
3859.L_aesni_xts_decrypt_begin:
3860	pushl	%ebp
3861	pushl	%ebx
3862	pushl	%esi
3863	pushl	%edi
3864	movl	36(%esp),%edx
3865	movl	40(%esp),%esi
3866	movl	240(%edx),%ecx
3867	movups	(%esi),%xmm2
3868	movups	(%edx),%xmm0
3869	movups	16(%edx),%xmm1
3870	leal	32(%edx),%edx
3871	xorps	%xmm0,%xmm2
3872.L059enc1_loop_11:
3873.byte	102,15,56,220,209
3874	decl	%ecx
3875	movups	(%edx),%xmm1
3876	leal	16(%edx),%edx
3877	jnz	.L059enc1_loop_11
3878.byte	102,15,56,221,209
3879	movl	20(%esp),%esi
3880	movl	24(%esp),%edi
3881	movl	28(%esp),%eax
3882	movl	32(%esp),%edx
3883	movl	%esp,%ebp
3884	subl	$120,%esp
3885	andl	$-16,%esp
3886	xorl	%ebx,%ebx
3887	testl	$15,%eax
3888	setnz	%bl
3889	shll	$4,%ebx
3890	subl	%ebx,%eax
3891	movl	$135,96(%esp)
3892	movl	$0,100(%esp)
3893	movl	$1,104(%esp)
3894	movl	$0,108(%esp)
3895	movl	%eax,112(%esp)
3896	movl	%ebp,116(%esp)
3897	movl	240(%edx),%ecx
3898	movl	%edx,%ebp
3899	movl	%ecx,%ebx
3900	movdqa	%xmm2,%xmm1
3901	pxor	%xmm0,%xmm0
3902	movdqa	96(%esp),%xmm3
3903	pcmpgtd	%xmm1,%xmm0
3904	andl	$-16,%eax
3905	subl	$96,%eax
3906	jc	.L060xts_dec_short
3907	shll	$4,%ecx
3908	movl	$16,%ebx
3909	subl	%ecx,%ebx
3910	leal	32(%edx,%ecx,1),%edx
3911	jmp	.L061xts_dec_loop6
3912.align	16
3913.L061xts_dec_loop6:
3914	pshufd	$19,%xmm0,%xmm2
3915	pxor	%xmm0,%xmm0
3916	movdqa	%xmm1,(%esp)
3917	paddq	%xmm1,%xmm1
3918	pand	%xmm3,%xmm2
3919	pcmpgtd	%xmm1,%xmm0
3920	pxor	%xmm2,%xmm1
3921	pshufd	$19,%xmm0,%xmm2
3922	pxor	%xmm0,%xmm0
3923	movdqa	%xmm1,16(%esp)
3924	paddq	%xmm1,%xmm1
3925	pand	%xmm3,%xmm2
3926	pcmpgtd	%xmm1,%xmm0
3927	pxor	%xmm2,%xmm1
3928	pshufd	$19,%xmm0,%xmm2
3929	pxor	%xmm0,%xmm0
3930	movdqa	%xmm1,32(%esp)
3931	paddq	%xmm1,%xmm1
3932	pand	%xmm3,%xmm2
3933	pcmpgtd	%xmm1,%xmm0
3934	pxor	%xmm2,%xmm1
3935	pshufd	$19,%xmm0,%xmm2
3936	pxor	%xmm0,%xmm0
3937	movdqa	%xmm1,48(%esp)
3938	paddq	%xmm1,%xmm1
3939	pand	%xmm3,%xmm2
3940	pcmpgtd	%xmm1,%xmm0
3941	pxor	%xmm2,%xmm1
3942	pshufd	$19,%xmm0,%xmm7
3943	movdqa	%xmm1,64(%esp)
3944	paddq	%xmm1,%xmm1
3945	movups	(%ebp),%xmm0
3946	pand	%xmm3,%xmm7
3947	movups	(%esi),%xmm2
3948	pxor	%xmm1,%xmm7
3949	movl	%ebx,%ecx
3950	movdqu	16(%esi),%xmm3
3951	xorps	%xmm0,%xmm2
3952	movdqu	32(%esi),%xmm4
3953	pxor	%xmm0,%xmm3
3954	movdqu	48(%esi),%xmm5
3955	pxor	%xmm0,%xmm4
3956	movdqu	64(%esi),%xmm6
3957	pxor	%xmm0,%xmm5
3958	movdqu	80(%esi),%xmm1
3959	pxor	%xmm0,%xmm6
3960	leal	96(%esi),%esi
3961	pxor	(%esp),%xmm2
3962	movdqa	%xmm7,80(%esp)
3963	pxor	%xmm1,%xmm7
3964	movups	16(%ebp),%xmm1
3965	pxor	16(%esp),%xmm3
3966	pxor	32(%esp),%xmm4
3967.byte	102,15,56,222,209
3968	pxor	48(%esp),%xmm5
3969	pxor	64(%esp),%xmm6
3970.byte	102,15,56,222,217
3971	pxor	%xmm0,%xmm7
3972	movups	32(%ebp),%xmm0
3973.byte	102,15,56,222,225
3974.byte	102,15,56,222,233
3975.byte	102,15,56,222,241
3976.byte	102,15,56,222,249
3977	call	.L_aesni_decrypt6_enter
3978	movdqa	80(%esp),%xmm1
3979	pxor	%xmm0,%xmm0
3980	xorps	(%esp),%xmm2
3981	pcmpgtd	%xmm1,%xmm0
3982	xorps	16(%esp),%xmm3
3983	movups	%xmm2,(%edi)
3984	xorps	32(%esp),%xmm4
3985	movups	%xmm3,16(%edi)
3986	xorps	48(%esp),%xmm5
3987	movups	%xmm4,32(%edi)
3988	xorps	64(%esp),%xmm6
3989	movups	%xmm5,48(%edi)
3990	xorps	%xmm1,%xmm7
3991	movups	%xmm6,64(%edi)
3992	pshufd	$19,%xmm0,%xmm2
3993	movups	%xmm7,80(%edi)
3994	leal	96(%edi),%edi
3995	movdqa	96(%esp),%xmm3
3996	pxor	%xmm0,%xmm0
3997	paddq	%xmm1,%xmm1
3998	pand	%xmm3,%xmm2
3999	pcmpgtd	%xmm1,%xmm0
4000	pxor	%xmm2,%xmm1
4001	subl	$96,%eax
4002	jnc	.L061xts_dec_loop6
4003	movl	240(%ebp),%ecx
4004	movl	%ebp,%edx
4005	movl	%ecx,%ebx
4006.L060xts_dec_short:
4007	addl	$96,%eax
4008	jz	.L062xts_dec_done6x
4009	movdqa	%xmm1,%xmm5
4010	cmpl	$32,%eax
4011	jb	.L063xts_dec_one
4012	pshufd	$19,%xmm0,%xmm2
4013	pxor	%xmm0,%xmm0
4014	paddq	%xmm1,%xmm1
4015	pand	%xmm3,%xmm2
4016	pcmpgtd	%xmm1,%xmm0
4017	pxor	%xmm2,%xmm1
4018	je	.L064xts_dec_two
4019	pshufd	$19,%xmm0,%xmm2
4020	pxor	%xmm0,%xmm0
4021	movdqa	%xmm1,%xmm6
4022	paddq	%xmm1,%xmm1
4023	pand	%xmm3,%xmm2
4024	pcmpgtd	%xmm1,%xmm0
4025	pxor	%xmm2,%xmm1
4026	cmpl	$64,%eax
4027	jb	.L065xts_dec_three
4028	pshufd	$19,%xmm0,%xmm2
4029	pxor	%xmm0,%xmm0
4030	movdqa	%xmm1,%xmm7
4031	paddq	%xmm1,%xmm1
4032	pand	%xmm3,%xmm2
4033	pcmpgtd	%xmm1,%xmm0
4034	pxor	%xmm2,%xmm1
4035	movdqa	%xmm5,(%esp)
4036	movdqa	%xmm6,16(%esp)
4037	je	.L066xts_dec_four
4038	movdqa	%xmm7,32(%esp)
4039	pshufd	$19,%xmm0,%xmm7
4040	movdqa	%xmm1,48(%esp)
4041	paddq	%xmm1,%xmm1
4042	pand	%xmm3,%xmm7
4043	pxor	%xmm1,%xmm7
4044	movdqu	(%esi),%xmm2
4045	movdqu	16(%esi),%xmm3
4046	movdqu	32(%esi),%xmm4
4047	pxor	(%esp),%xmm2
4048	movdqu	48(%esi),%xmm5
4049	pxor	16(%esp),%xmm3
4050	movdqu	64(%esi),%xmm6
4051	pxor	32(%esp),%xmm4
4052	leal	80(%esi),%esi
4053	pxor	48(%esp),%xmm5
4054	movdqa	%xmm7,64(%esp)
4055	pxor	%xmm7,%xmm6
4056	call	_aesni_decrypt6
4057	movaps	64(%esp),%xmm1
4058	xorps	(%esp),%xmm2
4059	xorps	16(%esp),%xmm3
4060	xorps	32(%esp),%xmm4
4061	movups	%xmm2,(%edi)
4062	xorps	48(%esp),%xmm5
4063	movups	%xmm3,16(%edi)
4064	xorps	%xmm1,%xmm6
4065	movups	%xmm4,32(%edi)
4066	movups	%xmm5,48(%edi)
4067	movups	%xmm6,64(%edi)
4068	leal	80(%edi),%edi
4069	jmp	.L067xts_dec_done
4070.align	16
4071.L063xts_dec_one:
4072	movups	(%esi),%xmm2
4073	leal	16(%esi),%esi
4074	xorps	%xmm5,%xmm2
4075	movups	(%edx),%xmm0
4076	movups	16(%edx),%xmm1
4077	leal	32(%edx),%edx
4078	xorps	%xmm0,%xmm2
4079.L068dec1_loop_12:
4080.byte	102,15,56,222,209
4081	decl	%ecx
4082	movups	(%edx),%xmm1
4083	leal	16(%edx),%edx
4084	jnz	.L068dec1_loop_12
4085.byte	102,15,56,223,209
4086	xorps	%xmm5,%xmm2
4087	movups	%xmm2,(%edi)
4088	leal	16(%edi),%edi
4089	movdqa	%xmm5,%xmm1
4090	jmp	.L067xts_dec_done
4091.align	16
4092.L064xts_dec_two:
4093	movaps	%xmm1,%xmm6
4094	movups	(%esi),%xmm2
4095	movups	16(%esi),%xmm3
4096	leal	32(%esi),%esi
4097	xorps	%xmm5,%xmm2
4098	xorps	%xmm6,%xmm3
4099	call	_aesni_decrypt2
4100	xorps	%xmm5,%xmm2
4101	xorps	%xmm6,%xmm3
4102	movups	%xmm2,(%edi)
4103	movups	%xmm3,16(%edi)
4104	leal	32(%edi),%edi
4105	movdqa	%xmm6,%xmm1
4106	jmp	.L067xts_dec_done
4107.align	16
4108.L065xts_dec_three:
4109	movaps	%xmm1,%xmm7
4110	movups	(%esi),%xmm2
4111	movups	16(%esi),%xmm3
4112	movups	32(%esi),%xmm4
4113	leal	48(%esi),%esi
4114	xorps	%xmm5,%xmm2
4115	xorps	%xmm6,%xmm3
4116	xorps	%xmm7,%xmm4
4117	call	_aesni_decrypt3
4118	xorps	%xmm5,%xmm2
4119	xorps	%xmm6,%xmm3
4120	xorps	%xmm7,%xmm4
4121	movups	%xmm2,(%edi)
4122	movups	%xmm3,16(%edi)
4123	movups	%xmm4,32(%edi)
4124	leal	48(%edi),%edi
4125	movdqa	%xmm7,%xmm1
4126	jmp	.L067xts_dec_done
4127.align	16
4128.L066xts_dec_four:
4129	movaps	%xmm1,%xmm6
4130	movups	(%esi),%xmm2
4131	movups	16(%esi),%xmm3
4132	movups	32(%esi),%xmm4
4133	xorps	(%esp),%xmm2
4134	movups	48(%esi),%xmm5
4135	leal	64(%esi),%esi
4136	xorps	16(%esp),%xmm3
4137	xorps	%xmm7,%xmm4
4138	xorps	%xmm6,%xmm5
4139	call	_aesni_decrypt4
4140	xorps	(%esp),%xmm2
4141	xorps	16(%esp),%xmm3
4142	xorps	%xmm7,%xmm4
4143	movups	%xmm2,(%edi)
4144	xorps	%xmm6,%xmm5
4145	movups	%xmm3,16(%edi)
4146	movups	%xmm4,32(%edi)
4147	movups	%xmm5,48(%edi)
4148	leal	64(%edi),%edi
4149	movdqa	%xmm6,%xmm1
4150	jmp	.L067xts_dec_done
4151.align	16
4152.L062xts_dec_done6x:
4153	movl	112(%esp),%eax
4154	andl	$15,%eax
4155	jz	.L069xts_dec_ret
4156	movl	%eax,112(%esp)
4157	jmp	.L070xts_dec_only_one_more
4158.align	16
4159.L067xts_dec_done:
4160	movl	112(%esp),%eax
4161	pxor	%xmm0,%xmm0
4162	andl	$15,%eax
4163	jz	.L069xts_dec_ret
4164	pcmpgtd	%xmm1,%xmm0
4165	movl	%eax,112(%esp)
4166	pshufd	$19,%xmm0,%xmm2
4167	pxor	%xmm0,%xmm0
4168	movdqa	96(%esp),%xmm3
4169	paddq	%xmm1,%xmm1
4170	pand	%xmm3,%xmm2
4171	pcmpgtd	%xmm1,%xmm0
4172	pxor	%xmm2,%xmm1
4173.L070xts_dec_only_one_more:
4174	pshufd	$19,%xmm0,%xmm5
4175	movdqa	%xmm1,%xmm6
4176	paddq	%xmm1,%xmm1
4177	pand	%xmm3,%xmm5
4178	pxor	%xmm1,%xmm5
4179	movl	%ebp,%edx
4180	movl	%ebx,%ecx
4181	movups	(%esi),%xmm2
4182	xorps	%xmm5,%xmm2
4183	movups	(%edx),%xmm0
4184	movups	16(%edx),%xmm1
4185	leal	32(%edx),%edx
4186	xorps	%xmm0,%xmm2
4187.L071dec1_loop_13:
4188.byte	102,15,56,222,209
4189	decl	%ecx
4190	movups	(%edx),%xmm1
4191	leal	16(%edx),%edx
4192	jnz	.L071dec1_loop_13
4193.byte	102,15,56,223,209
4194	xorps	%xmm5,%xmm2
4195	movups	%xmm2,(%edi)
4196.L072xts_dec_steal:
4197	movzbl	16(%esi),%ecx
4198	movzbl	(%edi),%edx
4199	leal	1(%esi),%esi
4200	movb	%cl,(%edi)
4201	movb	%dl,16(%edi)
4202	leal	1(%edi),%edi
4203	subl	$1,%eax
4204	jnz	.L072xts_dec_steal
4205	subl	112(%esp),%edi
4206	movl	%ebp,%edx
4207	movl	%ebx,%ecx
4208	movups	(%edi),%xmm2
4209	xorps	%xmm6,%xmm2
4210	movups	(%edx),%xmm0
4211	movups	16(%edx),%xmm1
4212	leal	32(%edx),%edx
4213	xorps	%xmm0,%xmm2
4214.L073dec1_loop_14:
4215.byte	102,15,56,222,209
4216	decl	%ecx
4217	movups	(%edx),%xmm1
4218	leal	16(%edx),%edx
4219	jnz	.L073dec1_loop_14
4220.byte	102,15,56,223,209
4221	xorps	%xmm6,%xmm2
4222	movups	%xmm2,(%edi)
4223.L069xts_dec_ret:
4224	pxor	%xmm0,%xmm0
4225	pxor	%xmm1,%xmm1
4226	pxor	%xmm2,%xmm2
4227	movdqa	%xmm0,(%esp)
4228	pxor	%xmm3,%xmm3
4229	movdqa	%xmm0,16(%esp)
4230	pxor	%xmm4,%xmm4
4231	movdqa	%xmm0,32(%esp)
4232	pxor	%xmm5,%xmm5
4233	movdqa	%xmm0,48(%esp)
4234	pxor	%xmm6,%xmm6
4235	movdqa	%xmm0,64(%esp)
4236	pxor	%xmm7,%xmm7
4237	movdqa	%xmm0,80(%esp)
4238	movl	116(%esp),%esp
4239	popl	%edi
4240	popl	%esi
4241	popl	%ebx
4242	popl	%ebp
4243	ret
4244.size	aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
4245.globl	aesni_cbc_encrypt
4246.type	aesni_cbc_encrypt,@function
4247.align	16
4248aesni_cbc_encrypt:
4249.L_aesni_cbc_encrypt_begin:
4250	pushl	%ebp
4251	pushl	%ebx
4252	pushl	%esi
4253	pushl	%edi
4254	movl	20(%esp),%esi
4255	movl	%esp,%ebx
4256	movl	24(%esp),%edi
4257	subl	$24,%ebx
4258	movl	28(%esp),%eax
4259	andl	$-16,%ebx
4260	movl	32(%esp),%edx
4261	movl	36(%esp),%ebp
4262	testl	%eax,%eax
4263	jz	.L074cbc_abort
4264	cmpl	$0,40(%esp)
4265	xchgl	%esp,%ebx
4266	movups	(%ebp),%xmm7
4267	movl	240(%edx),%ecx
4268	movl	%edx,%ebp
4269	movl	%ebx,16(%esp)
4270	movl	%ecx,%ebx
4271	je	.L075cbc_decrypt
4272	movaps	%xmm7,%xmm2
4273	cmpl	$16,%eax
4274	jb	.L076cbc_enc_tail
4275	subl	$16,%eax
4276	jmp	.L077cbc_enc_loop
4277.align	16
4278.L077cbc_enc_loop:
4279	movups	(%esi),%xmm7
4280	leal	16(%esi),%esi
4281	movups	(%edx),%xmm0
4282	movups	16(%edx),%xmm1
4283	xorps	%xmm0,%xmm7
4284	leal	32(%edx),%edx
4285	xorps	%xmm7,%xmm2
4286.L078enc1_loop_15:
4287.byte	102,15,56,220,209
4288	decl	%ecx
4289	movups	(%edx),%xmm1
4290	leal	16(%edx),%edx
4291	jnz	.L078enc1_loop_15
4292.byte	102,15,56,221,209
4293	movl	%ebx,%ecx
4294	movl	%ebp,%edx
4295	movups	%xmm2,(%edi)
4296	leal	16(%edi),%edi
4297	subl	$16,%eax
4298	jnc	.L077cbc_enc_loop
4299	addl	$16,%eax
4300	jnz	.L076cbc_enc_tail
4301	movaps	%xmm2,%xmm7
4302	pxor	%xmm2,%xmm2
4303	jmp	.L079cbc_ret
4304.L076cbc_enc_tail:
4305	movl	%eax,%ecx
4306.long	2767451785
4307	movl	$16,%ecx
4308	subl	%eax,%ecx
4309	xorl	%eax,%eax
4310.long	2868115081
4311	leal	-16(%edi),%edi
4312	movl	%ebx,%ecx
4313	movl	%edi,%esi
4314	movl	%ebp,%edx
4315	jmp	.L077cbc_enc_loop
4316.align	16
4317.L075cbc_decrypt:
4318	cmpl	$80,%eax
4319	jbe	.L080cbc_dec_tail
4320	movaps	%xmm7,(%esp)
4321	subl	$80,%eax
4322	jmp	.L081cbc_dec_loop6_enter
4323.align	16
4324.L082cbc_dec_loop6:
4325	movaps	%xmm0,(%esp)
4326	movups	%xmm7,(%edi)
4327	leal	16(%edi),%edi
4328.L081cbc_dec_loop6_enter:
4329	movdqu	(%esi),%xmm2
4330	movdqu	16(%esi),%xmm3
4331	movdqu	32(%esi),%xmm4
4332	movdqu	48(%esi),%xmm5
4333	movdqu	64(%esi),%xmm6
4334	movdqu	80(%esi),%xmm7
4335	call	_aesni_decrypt6
4336	movups	(%esi),%xmm1
4337	movups	16(%esi),%xmm0
4338	xorps	(%esp),%xmm2
4339	xorps	%xmm1,%xmm3
4340	movups	32(%esi),%xmm1
4341	xorps	%xmm0,%xmm4
4342	movups	48(%esi),%xmm0
4343	xorps	%xmm1,%xmm5
4344	movups	64(%esi),%xmm1
4345	xorps	%xmm0,%xmm6
4346	movups	80(%esi),%xmm0
4347	xorps	%xmm1,%xmm7
4348	movups	%xmm2,(%edi)
4349	movups	%xmm3,16(%edi)
4350	leal	96(%esi),%esi
4351	movups	%xmm4,32(%edi)
4352	movl	%ebx,%ecx
4353	movups	%xmm5,48(%edi)
4354	movl	%ebp,%edx
4355	movups	%xmm6,64(%edi)
4356	leal	80(%edi),%edi
4357	subl	$96,%eax
4358	ja	.L082cbc_dec_loop6
4359	movaps	%xmm7,%xmm2
4360	movaps	%xmm0,%xmm7
4361	addl	$80,%eax
4362	jle	.L083cbc_dec_clear_tail_collected
4363	movups	%xmm2,(%edi)
4364	leal	16(%edi),%edi
4365.L080cbc_dec_tail:
4366	movups	(%esi),%xmm2
4367	movaps	%xmm2,%xmm6
4368	cmpl	$16,%eax
4369	jbe	.L084cbc_dec_one
4370	movups	16(%esi),%xmm3
4371	movaps	%xmm3,%xmm5
4372	cmpl	$32,%eax
4373	jbe	.L085cbc_dec_two
4374	movups	32(%esi),%xmm4
4375	cmpl	$48,%eax
4376	jbe	.L086cbc_dec_three
4377	movups	48(%esi),%xmm5
4378	cmpl	$64,%eax
4379	jbe	.L087cbc_dec_four
4380	movups	64(%esi),%xmm6
4381	movaps	%xmm7,(%esp)
4382	movups	(%esi),%xmm2
4383	xorps	%xmm7,%xmm7
4384	call	_aesni_decrypt6
4385	movups	(%esi),%xmm1
4386	movups	16(%esi),%xmm0
4387	xorps	(%esp),%xmm2
4388	xorps	%xmm1,%xmm3
4389	movups	32(%esi),%xmm1
4390	xorps	%xmm0,%xmm4
4391	movups	48(%esi),%xmm0
4392	xorps	%xmm1,%xmm5
4393	movups	64(%esi),%xmm7
4394	xorps	%xmm0,%xmm6
4395	movups	%xmm2,(%edi)
4396	movups	%xmm3,16(%edi)
4397	pxor	%xmm3,%xmm3
4398	movups	%xmm4,32(%edi)
4399	pxor	%xmm4,%xmm4
4400	movups	%xmm5,48(%edi)
4401	pxor	%xmm5,%xmm5
4402	leal	64(%edi),%edi
4403	movaps	%xmm6,%xmm2
4404	pxor	%xmm6,%xmm6
4405	subl	$80,%eax
4406	jmp	.L088cbc_dec_tail_collected
4407.align	16
4408.L084cbc_dec_one:
4409	movups	(%edx),%xmm0
4410	movups	16(%edx),%xmm1
4411	leal	32(%edx),%edx
4412	xorps	%xmm0,%xmm2
4413.L089dec1_loop_16:
4414.byte	102,15,56,222,209
4415	decl	%ecx
4416	movups	(%edx),%xmm1
4417	leal	16(%edx),%edx
4418	jnz	.L089dec1_loop_16
4419.byte	102,15,56,223,209
4420	xorps	%xmm7,%xmm2
4421	movaps	%xmm6,%xmm7
4422	subl	$16,%eax
4423	jmp	.L088cbc_dec_tail_collected
4424.align	16
4425.L085cbc_dec_two:
4426	call	_aesni_decrypt2
4427	xorps	%xmm7,%xmm2
4428	xorps	%xmm6,%xmm3
4429	movups	%xmm2,(%edi)
4430	movaps	%xmm3,%xmm2
4431	pxor	%xmm3,%xmm3
4432	leal	16(%edi),%edi
4433	movaps	%xmm5,%xmm7
4434	subl	$32,%eax
4435	jmp	.L088cbc_dec_tail_collected
4436.align	16
4437.L086cbc_dec_three:
4438	call	_aesni_decrypt3
4439	xorps	%xmm7,%xmm2
4440	xorps	%xmm6,%xmm3
4441	xorps	%xmm5,%xmm4
4442	movups	%xmm2,(%edi)
4443	movaps	%xmm4,%xmm2
4444	pxor	%xmm4,%xmm4
4445	movups	%xmm3,16(%edi)
4446	pxor	%xmm3,%xmm3
4447	leal	32(%edi),%edi
4448	movups	32(%esi),%xmm7
4449	subl	$48,%eax
4450	jmp	.L088cbc_dec_tail_collected
4451.align	16
4452.L087cbc_dec_four:
4453	call	_aesni_decrypt4
4454	movups	16(%esi),%xmm1
4455	movups	32(%esi),%xmm0
4456	xorps	%xmm7,%xmm2
4457	movups	48(%esi),%xmm7
4458	xorps	%xmm6,%xmm3
4459	movups	%xmm2,(%edi)
4460	xorps	%xmm1,%xmm4
4461	movups	%xmm3,16(%edi)
4462	pxor	%xmm3,%xmm3
4463	xorps	%xmm0,%xmm5
4464	movups	%xmm4,32(%edi)
4465	pxor	%xmm4,%xmm4
4466	leal	48(%edi),%edi
4467	movaps	%xmm5,%xmm2
4468	pxor	%xmm5,%xmm5
4469	subl	$64,%eax
4470	jmp	.L088cbc_dec_tail_collected
4471.align	16
4472.L083cbc_dec_clear_tail_collected:
4473	pxor	%xmm3,%xmm3
4474	pxor	%xmm4,%xmm4
4475	pxor	%xmm5,%xmm5
4476	pxor	%xmm6,%xmm6
4477.L088cbc_dec_tail_collected:
4478	andl	$15,%eax
4479	jnz	.L090cbc_dec_tail_partial
4480	movups	%xmm2,(%edi)
4481	pxor	%xmm0,%xmm0
4482	jmp	.L079cbc_ret
4483.align	16
4484.L090cbc_dec_tail_partial:
4485	movaps	%xmm2,(%esp)
4486	pxor	%xmm0,%xmm0
4487	movl	$16,%ecx
4488	movl	%esp,%esi
4489	subl	%eax,%ecx
4490.long	2767451785
4491	movdqa	%xmm2,(%esp)
4492.L079cbc_ret:
4493	movl	16(%esp),%esp
4494	movl	36(%esp),%ebp
4495	pxor	%xmm2,%xmm2
4496	pxor	%xmm1,%xmm1
4497	movups	%xmm7,(%ebp)
4498	pxor	%xmm7,%xmm7
4499.L074cbc_abort:
4500	popl	%edi
4501	popl	%esi
4502	popl	%ebx
4503	popl	%ebp
4504	ret
4505.size	aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
4506.type	_aesni_set_encrypt_key,@function
4507.align	16
4508_aesni_set_encrypt_key:
4509	pushl	%ebp
4510	pushl	%ebx
4511	testl	%eax,%eax
4512	jz	.L091bad_pointer
4513	testl	%edx,%edx
4514	jz	.L091bad_pointer
4515	call	.L092pic
4516.L092pic:
4517	popl	%ebx
4518	leal	.Lkey_const-.L092pic(%ebx),%ebx
4519	leal	OPENSSL_ia32cap_P,%ebp
4520	movups	(%eax),%xmm0
4521	xorps	%xmm4,%xmm4
4522	movl	4(%ebp),%ebp
4523	leal	16(%edx),%edx
4524	andl	$268437504,%ebp
4525	cmpl	$256,%ecx
4526	je	.L09314rounds
4527	cmpl	$192,%ecx
4528	je	.L09412rounds
4529	cmpl	$128,%ecx
4530	jne	.L095bad_keybits
4531.align	16
4532.L09610rounds:
4533	cmpl	$268435456,%ebp
4534	je	.L09710rounds_alt
4535	movl	$9,%ecx
4536	movups	%xmm0,-16(%edx)
4537.byte	102,15,58,223,200,1
4538	call	.L098key_128_cold
4539.byte	102,15,58,223,200,2
4540	call	.L099key_128
4541.byte	102,15,58,223,200,4
4542	call	.L099key_128
4543.byte	102,15,58,223,200,8
4544	call	.L099key_128
4545.byte	102,15,58,223,200,16
4546	call	.L099key_128
4547.byte	102,15,58,223,200,32
4548	call	.L099key_128
4549.byte	102,15,58,223,200,64
4550	call	.L099key_128
4551.byte	102,15,58,223,200,128
4552	call	.L099key_128
4553.byte	102,15,58,223,200,27
4554	call	.L099key_128
4555.byte	102,15,58,223,200,54
4556	call	.L099key_128
4557	movups	%xmm0,(%edx)
4558	movl	%ecx,80(%edx)
4559	jmp	.L100good_key
4560.align	16
4561.L099key_128:
4562	movups	%xmm0,(%edx)
4563	leal	16(%edx),%edx
4564.L098key_128_cold:
4565	shufps	$16,%xmm0,%xmm4
4566	xorps	%xmm4,%xmm0
4567	shufps	$140,%xmm0,%xmm4
4568	xorps	%xmm4,%xmm0
4569	shufps	$255,%xmm1,%xmm1
4570	xorps	%xmm1,%xmm0
4571	ret
4572.align	16
4573.L09710rounds_alt:
4574	movdqa	(%ebx),%xmm5
4575	movl	$8,%ecx
4576	movdqa	32(%ebx),%xmm4
4577	movdqa	%xmm0,%xmm2
4578	movdqu	%xmm0,-16(%edx)
4579.L101loop_key128:
4580.byte	102,15,56,0,197
4581.byte	102,15,56,221,196
4582	pslld	$1,%xmm4
4583	leal	16(%edx),%edx
4584	movdqa	%xmm2,%xmm3
4585	pslldq	$4,%xmm2
4586	pxor	%xmm2,%xmm3
4587	pslldq	$4,%xmm2
4588	pxor	%xmm2,%xmm3
4589	pslldq	$4,%xmm2
4590	pxor	%xmm3,%xmm2
4591	pxor	%xmm2,%xmm0
4592	movdqu	%xmm0,-16(%edx)
4593	movdqa	%xmm0,%xmm2
4594	decl	%ecx
4595	jnz	.L101loop_key128
4596	movdqa	48(%ebx),%xmm4
4597.byte	102,15,56,0,197
4598.byte	102,15,56,221,196
4599	pslld	$1,%xmm4
4600	movdqa	%xmm2,%xmm3
4601	pslldq	$4,%xmm2
4602	pxor	%xmm2,%xmm3
4603	pslldq	$4,%xmm2
4604	pxor	%xmm2,%xmm3
4605	pslldq	$4,%xmm2
4606	pxor	%xmm3,%xmm2
4607	pxor	%xmm2,%xmm0
4608	movdqu	%xmm0,(%edx)
4609	movdqa	%xmm0,%xmm2
4610.byte	102,15,56,0,197
4611.byte	102,15,56,221,196
4612	movdqa	%xmm2,%xmm3
4613	pslldq	$4,%xmm2
4614	pxor	%xmm2,%xmm3
4615	pslldq	$4,%xmm2
4616	pxor	%xmm2,%xmm3
4617	pslldq	$4,%xmm2
4618	pxor	%xmm3,%xmm2
4619	pxor	%xmm2,%xmm0
4620	movdqu	%xmm0,16(%edx)
4621	movl	$9,%ecx
4622	movl	%ecx,96(%edx)
4623	jmp	.L100good_key
4624.align	16
4625.L09412rounds:
4626	movq	16(%eax),%xmm2
4627	cmpl	$268435456,%ebp
4628	je	.L10212rounds_alt
4629	movl	$11,%ecx
4630	movups	%xmm0,-16(%edx)
4631.byte	102,15,58,223,202,1
4632	call	.L103key_192a_cold
4633.byte	102,15,58,223,202,2
4634	call	.L104key_192b
4635.byte	102,15,58,223,202,4
4636	call	.L105key_192a
4637.byte	102,15,58,223,202,8
4638	call	.L104key_192b
4639.byte	102,15,58,223,202,16
4640	call	.L105key_192a
4641.byte	102,15,58,223,202,32
4642	call	.L104key_192b
4643.byte	102,15,58,223,202,64
4644	call	.L105key_192a
4645.byte	102,15,58,223,202,128
4646	call	.L104key_192b
4647	movups	%xmm0,(%edx)
4648	movl	%ecx,48(%edx)
4649	jmp	.L100good_key
4650.align	16
4651.L105key_192a:
4652	movups	%xmm0,(%edx)
4653	leal	16(%edx),%edx
4654.align	16
4655.L103key_192a_cold:
4656	movaps	%xmm2,%xmm5
4657.L106key_192b_warm:
4658	shufps	$16,%xmm0,%xmm4
4659	movdqa	%xmm2,%xmm3
4660	xorps	%xmm4,%xmm0
4661	shufps	$140,%xmm0,%xmm4
4662	pslldq	$4,%xmm3
4663	xorps	%xmm4,%xmm0
4664	pshufd	$85,%xmm1,%xmm1
4665	pxor	%xmm3,%xmm2
4666	pxor	%xmm1,%xmm0
4667	pshufd	$255,%xmm0,%xmm3
4668	pxor	%xmm3,%xmm2
4669	ret
4670.align	16
4671.L104key_192b:
4672	movaps	%xmm0,%xmm3
4673	shufps	$68,%xmm0,%xmm5
4674	movups	%xmm5,(%edx)
4675	shufps	$78,%xmm2,%xmm3
4676	movups	%xmm3,16(%edx)
4677	leal	32(%edx),%edx
4678	jmp	.L106key_192b_warm
4679.align	16
4680.L10212rounds_alt:
4681	movdqa	16(%ebx),%xmm5
4682	movdqa	32(%ebx),%xmm4
4683	movl	$8,%ecx
4684	movdqu	%xmm0,-16(%edx)
4685.L107loop_key192:
4686	movq	%xmm2,(%edx)
4687	movdqa	%xmm2,%xmm1
4688.byte	102,15,56,0,213
4689.byte	102,15,56,221,212
4690	pslld	$1,%xmm4
4691	leal	24(%edx),%edx
4692	movdqa	%xmm0,%xmm3
4693	pslldq	$4,%xmm0
4694	pxor	%xmm0,%xmm3
4695	pslldq	$4,%xmm0
4696	pxor	%xmm0,%xmm3
4697	pslldq	$4,%xmm0
4698	pxor	%xmm3,%xmm0
4699	pshufd	$255,%xmm0,%xmm3
4700	pxor	%xmm1,%xmm3
4701	pslldq	$4,%xmm1
4702	pxor	%xmm1,%xmm3
4703	pxor	%xmm2,%xmm0
4704	pxor	%xmm3,%xmm2
4705	movdqu	%xmm0,-16(%edx)
4706	decl	%ecx
4707	jnz	.L107loop_key192
4708	movl	$11,%ecx
4709	movl	%ecx,32(%edx)
4710	jmp	.L100good_key
4711.align	16
4712.L09314rounds:
4713	movups	16(%eax),%xmm2
4714	leal	16(%edx),%edx
4715	cmpl	$268435456,%ebp
4716	je	.L10814rounds_alt
4717	movl	$13,%ecx
4718	movups	%xmm0,-32(%edx)
4719	movups	%xmm2,-16(%edx)
4720.byte	102,15,58,223,202,1
4721	call	.L109key_256a_cold
4722.byte	102,15,58,223,200,1
4723	call	.L110key_256b
4724.byte	102,15,58,223,202,2
4725	call	.L111key_256a
4726.byte	102,15,58,223,200,2
4727	call	.L110key_256b
4728.byte	102,15,58,223,202,4
4729	call	.L111key_256a
4730.byte	102,15,58,223,200,4
4731	call	.L110key_256b
4732.byte	102,15,58,223,202,8
4733	call	.L111key_256a
4734.byte	102,15,58,223,200,8
4735	call	.L110key_256b
4736.byte	102,15,58,223,202,16
4737	call	.L111key_256a
4738.byte	102,15,58,223,200,16
4739	call	.L110key_256b
4740.byte	102,15,58,223,202,32
4741	call	.L111key_256a
4742.byte	102,15,58,223,200,32
4743	call	.L110key_256b
4744.byte	102,15,58,223,202,64
4745	call	.L111key_256a
4746	movups	%xmm0,(%edx)
4747	movl	%ecx,16(%edx)
4748	xorl	%eax,%eax
4749	jmp	.L100good_key
4750.align	16
4751.L111key_256a:
4752	movups	%xmm2,(%edx)
4753	leal	16(%edx),%edx
4754.L109key_256a_cold:
4755	shufps	$16,%xmm0,%xmm4
4756	xorps	%xmm4,%xmm0
4757	shufps	$140,%xmm0,%xmm4
4758	xorps	%xmm4,%xmm0
4759	shufps	$255,%xmm1,%xmm1
4760	xorps	%xmm1,%xmm0
4761	ret
4762.align	16
4763.L110key_256b:
4764	movups	%xmm0,(%edx)
4765	leal	16(%edx),%edx
4766	shufps	$16,%xmm2,%xmm4
4767	xorps	%xmm4,%xmm2
4768	shufps	$140,%xmm2,%xmm4
4769	xorps	%xmm4,%xmm2
4770	shufps	$170,%xmm1,%xmm1
4771	xorps	%xmm1,%xmm2
4772	ret
4773.align	16
4774.L10814rounds_alt:
4775	movdqa	(%ebx),%xmm5
4776	movdqa	32(%ebx),%xmm4
4777	movl	$7,%ecx
4778	movdqu	%xmm0,-32(%edx)
4779	movdqa	%xmm2,%xmm1
4780	movdqu	%xmm2,-16(%edx)
4781.L112loop_key256:
4782.byte	102,15,56,0,213
4783.byte	102,15,56,221,212
4784	movdqa	%xmm0,%xmm3
4785	pslldq	$4,%xmm0
4786	pxor	%xmm0,%xmm3
4787	pslldq	$4,%xmm0
4788	pxor	%xmm0,%xmm3
4789	pslldq	$4,%xmm0
4790	pxor	%xmm3,%xmm0
4791	pslld	$1,%xmm4
4792	pxor	%xmm2,%xmm0
4793	movdqu	%xmm0,(%edx)
4794	decl	%ecx
4795	jz	.L113done_key256
4796	pshufd	$255,%xmm0,%xmm2
4797	pxor	%xmm3,%xmm3
4798.byte	102,15,56,221,211
4799	movdqa	%xmm1,%xmm3
4800	pslldq	$4,%xmm1
4801	pxor	%xmm1,%xmm3
4802	pslldq	$4,%xmm1
4803	pxor	%xmm1,%xmm3
4804	pslldq	$4,%xmm1
4805	pxor	%xmm3,%xmm1
4806	pxor	%xmm1,%xmm2
4807	movdqu	%xmm2,16(%edx)
4808	leal	32(%edx),%edx
4809	movdqa	%xmm2,%xmm1
4810	jmp	.L112loop_key256
4811.L113done_key256:
4812	movl	$13,%ecx
4813	movl	%ecx,16(%edx)
4814.L100good_key:
4815	pxor	%xmm0,%xmm0
4816	pxor	%xmm1,%xmm1
4817	pxor	%xmm2,%xmm2
4818	pxor	%xmm3,%xmm3
4819	pxor	%xmm4,%xmm4
4820	pxor	%xmm5,%xmm5
4821	xorl	%eax,%eax
4822	popl	%ebx
4823	popl	%ebp
4824	ret
4825.align	4
4826.L091bad_pointer:
4827	movl	$-1,%eax
4828	popl	%ebx
4829	popl	%ebp
4830	ret
4831.align	4
4832.L095bad_keybits:
4833	pxor	%xmm0,%xmm0
4834	movl	$-2,%eax
4835	popl	%ebx
4836	popl	%ebp
4837	ret
4838.size	_aesni_set_encrypt_key,.-_aesni_set_encrypt_key
4839.globl	aesni_set_encrypt_key
4840.type	aesni_set_encrypt_key,@function
4841.align	16
4842aesni_set_encrypt_key:
4843.L_aesni_set_encrypt_key_begin:
4844	movl	4(%esp),%eax
4845	movl	8(%esp),%ecx
4846	movl	12(%esp),%edx
4847	call	_aesni_set_encrypt_key
4848	ret
4849.size	aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
4850.globl	aesni_set_decrypt_key
4851.type	aesni_set_decrypt_key,@function
4852.align	16
4853aesni_set_decrypt_key:
4854.L_aesni_set_decrypt_key_begin:
4855	movl	4(%esp),%eax
4856	movl	8(%esp),%ecx
4857	movl	12(%esp),%edx
4858	call	_aesni_set_encrypt_key
4859	movl	12(%esp),%edx
4860	shll	$4,%ecx
4861	testl	%eax,%eax
4862	jnz	.L114dec_key_ret
4863	leal	16(%edx,%ecx,1),%eax
4864	movups	(%edx),%xmm0
4865	movups	(%eax),%xmm1
4866	movups	%xmm0,(%eax)
4867	movups	%xmm1,(%edx)
4868	leal	16(%edx),%edx
4869	leal	-16(%eax),%eax
4870.L115dec_key_inverse:
4871	movups	(%edx),%xmm0
4872	movups	(%eax),%xmm1
4873.byte	102,15,56,219,192
4874.byte	102,15,56,219,201
4875	leal	16(%edx),%edx
4876	leal	-16(%eax),%eax
4877	movups	%xmm0,16(%eax)
4878	movups	%xmm1,-16(%edx)
4879	cmpl	%edx,%eax
4880	ja	.L115dec_key_inverse
4881	movups	(%edx),%xmm0
4882.byte	102,15,56,219,192
4883	movups	%xmm0,(%edx)
4884	pxor	%xmm0,%xmm0
4885	pxor	%xmm1,%xmm1
4886	xorl	%eax,%eax
4887.L114dec_key_ret:
4888	ret
4889.size	aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
4890.align	64
4891.Lkey_const:
4892.long	202313229,202313229,202313229,202313229
4893.long	67569157,67569157,67569157,67569157
4894.long	1,1,1,1
4895.long	27,27,27,27
4896.byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
4897.byte	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
4898.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
4899.byte	115,108,46,111,114,103,62,0
4900.comm	OPENSSL_ia32cap_P,16,4
4901#endif
4902