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