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