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