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 <ring-core/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
20.L000pic:
21	popl	%ebx
22	leal	BORINGSSL_function_hit+1-.L000pic(%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.hidden	_aesni_encrypt2
51.type	_aesni_encrypt2,@function
52.align	16
53_aesni_encrypt2:
54	movups	(%edx),%xmm0
55	shll	$4,%ecx
56	movups	16(%edx),%xmm1
57	xorps	%xmm0,%xmm2
58	pxor	%xmm0,%xmm3
59	movups	32(%edx),%xmm0
60	leal	32(%edx,%ecx,1),%edx
61	negl	%ecx
62	addl	$16,%ecx
63.L002enc2_loop:
64.byte	102,15,56,220,209
65.byte	102,15,56,220,217
66	movups	(%edx,%ecx,1),%xmm1
67	addl	$32,%ecx
68.byte	102,15,56,220,208
69.byte	102,15,56,220,216
70	movups	-16(%edx,%ecx,1),%xmm0
71	jnz	.L002enc2_loop
72.byte	102,15,56,220,209
73.byte	102,15,56,220,217
74.byte	102,15,56,221,208
75.byte	102,15,56,221,216
76	ret
77.size	_aesni_encrypt2,.-_aesni_encrypt2
78.hidden	_aesni_encrypt3
79.type	_aesni_encrypt3,@function
80.align	16
81_aesni_encrypt3:
82	movups	(%edx),%xmm0
83	shll	$4,%ecx
84	movups	16(%edx),%xmm1
85	xorps	%xmm0,%xmm2
86	pxor	%xmm0,%xmm3
87	pxor	%xmm0,%xmm4
88	movups	32(%edx),%xmm0
89	leal	32(%edx,%ecx,1),%edx
90	negl	%ecx
91	addl	$16,%ecx
92.L003enc3_loop:
93.byte	102,15,56,220,209
94.byte	102,15,56,220,217
95.byte	102,15,56,220,225
96	movups	(%edx,%ecx,1),%xmm1
97	addl	$32,%ecx
98.byte	102,15,56,220,208
99.byte	102,15,56,220,216
100.byte	102,15,56,220,224
101	movups	-16(%edx,%ecx,1),%xmm0
102	jnz	.L003enc3_loop
103.byte	102,15,56,220,209
104.byte	102,15,56,220,217
105.byte	102,15,56,220,225
106.byte	102,15,56,221,208
107.byte	102,15,56,221,216
108.byte	102,15,56,221,224
109	ret
110.size	_aesni_encrypt3,.-_aesni_encrypt3
111.hidden	_aesni_encrypt4
112.type	_aesni_encrypt4,@function
113.align	16
114_aesni_encrypt4:
115	movups	(%edx),%xmm0
116	movups	16(%edx),%xmm1
117	shll	$4,%ecx
118	xorps	%xmm0,%xmm2
119	pxor	%xmm0,%xmm3
120	pxor	%xmm0,%xmm4
121	pxor	%xmm0,%xmm5
122	movups	32(%edx),%xmm0
123	leal	32(%edx,%ecx,1),%edx
124	negl	%ecx
125.byte	15,31,64,0
126	addl	$16,%ecx
127.L004enc4_loop:
128.byte	102,15,56,220,209
129.byte	102,15,56,220,217
130.byte	102,15,56,220,225
131.byte	102,15,56,220,233
132	movups	(%edx,%ecx,1),%xmm1
133	addl	$32,%ecx
134.byte	102,15,56,220,208
135.byte	102,15,56,220,216
136.byte	102,15,56,220,224
137.byte	102,15,56,220,232
138	movups	-16(%edx,%ecx,1),%xmm0
139	jnz	.L004enc4_loop
140.byte	102,15,56,220,209
141.byte	102,15,56,220,217
142.byte	102,15,56,220,225
143.byte	102,15,56,220,233
144.byte	102,15,56,221,208
145.byte	102,15,56,221,216
146.byte	102,15,56,221,224
147.byte	102,15,56,221,232
148	ret
149.size	_aesni_encrypt4,.-_aesni_encrypt4
150.hidden	_aesni_encrypt6
151.type	_aesni_encrypt6,@function
152.align	16
153_aesni_encrypt6:
154	movups	(%edx),%xmm0
155	shll	$4,%ecx
156	movups	16(%edx),%xmm1
157	xorps	%xmm0,%xmm2
158	pxor	%xmm0,%xmm3
159	pxor	%xmm0,%xmm4
160.byte	102,15,56,220,209
161	pxor	%xmm0,%xmm5
162	pxor	%xmm0,%xmm6
163.byte	102,15,56,220,217
164	leal	32(%edx,%ecx,1),%edx
165	negl	%ecx
166.byte	102,15,56,220,225
167	pxor	%xmm0,%xmm7
168	movups	(%edx,%ecx,1),%xmm0
169	addl	$16,%ecx
170	jmp	.L005_aesni_encrypt6_inner
171.align	16
172.L006enc6_loop:
173.byte	102,15,56,220,209
174.byte	102,15,56,220,217
175.byte	102,15,56,220,225
176.L005_aesni_encrypt6_inner:
177.byte	102,15,56,220,233
178.byte	102,15,56,220,241
179.byte	102,15,56,220,249
180.L_aesni_encrypt6_enter:
181	movups	(%edx,%ecx,1),%xmm1
182	addl	$32,%ecx
183.byte	102,15,56,220,208
184.byte	102,15,56,220,216
185.byte	102,15,56,220,224
186.byte	102,15,56,220,232
187.byte	102,15,56,220,240
188.byte	102,15,56,220,248
189	movups	-16(%edx,%ecx,1),%xmm0
190	jnz	.L006enc6_loop
191.byte	102,15,56,220,209
192.byte	102,15,56,220,217
193.byte	102,15,56,220,225
194.byte	102,15,56,220,233
195.byte	102,15,56,220,241
196.byte	102,15,56,220,249
197.byte	102,15,56,221,208
198.byte	102,15,56,221,216
199.byte	102,15,56,221,224
200.byte	102,15,56,221,232
201.byte	102,15,56,221,240
202.byte	102,15,56,221,248
203	ret
204.size	_aesni_encrypt6,.-_aesni_encrypt6
205.globl	aes_hw_ctr32_encrypt_blocks
206.hidden	aes_hw_ctr32_encrypt_blocks
207.type	aes_hw_ctr32_encrypt_blocks,@function
208.align	16
209aes_hw_ctr32_encrypt_blocks:
210.L_aes_hw_ctr32_encrypt_blocks_begin:
211	pushl	%ebp
212	pushl	%ebx
213	pushl	%esi
214	pushl	%edi
215#ifdef BORINGSSL_DISPATCH_TEST
216	pushl	%ebx
217	pushl	%edx
218	call	.L007pic
219.L007pic:
220	popl	%ebx
221	leal	BORINGSSL_function_hit+0-.L007pic(%ebx),%ebx
222	movl	$1,%edx
223	movb	%dl,(%ebx)
224	popl	%edx
225	popl	%ebx
226#endif
227	movl	20(%esp),%esi
228	movl	24(%esp),%edi
229	movl	28(%esp),%eax
230	movl	32(%esp),%edx
231	movl	36(%esp),%ebx
232	movl	%esp,%ebp
233	subl	$88,%esp
234	andl	$-16,%esp
235	movl	%ebp,80(%esp)
236	cmpl	$1,%eax
237	je	.L008ctr32_one_shortcut
238	movdqu	(%ebx),%xmm7
239	movl	$202182159,(%esp)
240	movl	$134810123,4(%esp)
241	movl	$67438087,8(%esp)
242	movl	$66051,12(%esp)
243	movl	$6,%ecx
244	xorl	%ebp,%ebp
245	movl	%ecx,16(%esp)
246	movl	%ecx,20(%esp)
247	movl	%ecx,24(%esp)
248	movl	%ebp,28(%esp)
249.byte	102,15,58,22,251,3
250.byte	102,15,58,34,253,3
251	movl	240(%edx),%ecx
252	bswap	%ebx
253	pxor	%xmm0,%xmm0
254	pxor	%xmm1,%xmm1
255	movdqa	(%esp),%xmm2
256.byte	102,15,58,34,195,0
257	leal	3(%ebx),%ebp
258.byte	102,15,58,34,205,0
259	incl	%ebx
260.byte	102,15,58,34,195,1
261	incl	%ebp
262.byte	102,15,58,34,205,1
263	incl	%ebx
264.byte	102,15,58,34,195,2
265	incl	%ebp
266.byte	102,15,58,34,205,2
267	movdqa	%xmm0,48(%esp)
268.byte	102,15,56,0,194
269	movdqu	(%edx),%xmm6
270	movdqa	%xmm1,64(%esp)
271.byte	102,15,56,0,202
272	pshufd	$192,%xmm0,%xmm2
273	pshufd	$128,%xmm0,%xmm3
274	cmpl	$6,%eax
275	jb	.L009ctr32_tail
276	pxor	%xmm6,%xmm7
277	shll	$4,%ecx
278	movl	$16,%ebx
279	movdqa	%xmm7,32(%esp)
280	movl	%edx,%ebp
281	subl	%ecx,%ebx
282	leal	32(%edx,%ecx,1),%edx
283	subl	$6,%eax
284	jmp	.L010ctr32_loop6
285.align	16
286.L010ctr32_loop6:
287	pshufd	$64,%xmm0,%xmm4
288	movdqa	32(%esp),%xmm0
289	pshufd	$192,%xmm1,%xmm5
290	pxor	%xmm0,%xmm2
291	pshufd	$128,%xmm1,%xmm6
292	pxor	%xmm0,%xmm3
293	pshufd	$64,%xmm1,%xmm7
294	movups	16(%ebp),%xmm1
295	pxor	%xmm0,%xmm4
296	pxor	%xmm0,%xmm5
297.byte	102,15,56,220,209
298	pxor	%xmm0,%xmm6
299	pxor	%xmm0,%xmm7
300.byte	102,15,56,220,217
301	movups	32(%ebp),%xmm0
302	movl	%ebx,%ecx
303.byte	102,15,56,220,225
304.byte	102,15,56,220,233
305.byte	102,15,56,220,241
306.byte	102,15,56,220,249
307	call	.L_aesni_encrypt6_enter
308	movups	(%esi),%xmm1
309	movups	16(%esi),%xmm0
310	xorps	%xmm1,%xmm2
311	movups	32(%esi),%xmm1
312	xorps	%xmm0,%xmm3
313	movups	%xmm2,(%edi)
314	movdqa	16(%esp),%xmm0
315	xorps	%xmm1,%xmm4
316	movdqa	64(%esp),%xmm1
317	movups	%xmm3,16(%edi)
318	movups	%xmm4,32(%edi)
319	paddd	%xmm0,%xmm1
320	paddd	48(%esp),%xmm0
321	movdqa	(%esp),%xmm2
322	movups	48(%esi),%xmm3
323	movups	64(%esi),%xmm4
324	xorps	%xmm3,%xmm5
325	movups	80(%esi),%xmm3
326	leal	96(%esi),%esi
327	movdqa	%xmm0,48(%esp)
328.byte	102,15,56,0,194
329	xorps	%xmm4,%xmm6
330	movups	%xmm5,48(%edi)
331	xorps	%xmm3,%xmm7
332	movdqa	%xmm1,64(%esp)
333.byte	102,15,56,0,202
334	movups	%xmm6,64(%edi)
335	pshufd	$192,%xmm0,%xmm2
336	movups	%xmm7,80(%edi)
337	leal	96(%edi),%edi
338	pshufd	$128,%xmm0,%xmm3
339	subl	$6,%eax
340	jnc	.L010ctr32_loop6
341	addl	$6,%eax
342	jz	.L011ctr32_ret
343	movdqu	(%ebp),%xmm7
344	movl	%ebp,%edx
345	pxor	32(%esp),%xmm7
346	movl	240(%ebp),%ecx
347.L009ctr32_tail:
348	por	%xmm7,%xmm2
349	cmpl	$2,%eax
350	jb	.L012ctr32_one
351	pshufd	$64,%xmm0,%xmm4
352	por	%xmm7,%xmm3
353	je	.L013ctr32_two
354	pshufd	$192,%xmm1,%xmm5
355	por	%xmm7,%xmm4
356	cmpl	$4,%eax
357	jb	.L014ctr32_three
358	pshufd	$128,%xmm1,%xmm6
359	por	%xmm7,%xmm5
360	je	.L015ctr32_four
361	por	%xmm7,%xmm6
362	call	_aesni_encrypt6
363	movups	(%esi),%xmm1
364	movups	16(%esi),%xmm0
365	xorps	%xmm1,%xmm2
366	movups	32(%esi),%xmm1
367	xorps	%xmm0,%xmm3
368	movups	48(%esi),%xmm0
369	xorps	%xmm1,%xmm4
370	movups	64(%esi),%xmm1
371	xorps	%xmm0,%xmm5
372	movups	%xmm2,(%edi)
373	xorps	%xmm1,%xmm6
374	movups	%xmm3,16(%edi)
375	movups	%xmm4,32(%edi)
376	movups	%xmm5,48(%edi)
377	movups	%xmm6,64(%edi)
378	jmp	.L011ctr32_ret
379.align	16
380.L008ctr32_one_shortcut:
381	movups	(%ebx),%xmm2
382	movl	240(%edx),%ecx
383.L012ctr32_one:
384	movups	(%edx),%xmm0
385	movups	16(%edx),%xmm1
386	leal	32(%edx),%edx
387	xorps	%xmm0,%xmm2
388.L016enc1_loop_2:
389.byte	102,15,56,220,209
390	decl	%ecx
391	movups	(%edx),%xmm1
392	leal	16(%edx),%edx
393	jnz	.L016enc1_loop_2
394.byte	102,15,56,221,209
395	movups	(%esi),%xmm6
396	xorps	%xmm2,%xmm6
397	movups	%xmm6,(%edi)
398	jmp	.L011ctr32_ret
399.align	16
400.L013ctr32_two:
401	call	_aesni_encrypt2
402	movups	(%esi),%xmm5
403	movups	16(%esi),%xmm6
404	xorps	%xmm5,%xmm2
405	xorps	%xmm6,%xmm3
406	movups	%xmm2,(%edi)
407	movups	%xmm3,16(%edi)
408	jmp	.L011ctr32_ret
409.align	16
410.L014ctr32_three:
411	call	_aesni_encrypt3
412	movups	(%esi),%xmm5
413	movups	16(%esi),%xmm6
414	xorps	%xmm5,%xmm2
415	movups	32(%esi),%xmm7
416	xorps	%xmm6,%xmm3
417	movups	%xmm2,(%edi)
418	xorps	%xmm7,%xmm4
419	movups	%xmm3,16(%edi)
420	movups	%xmm4,32(%edi)
421	jmp	.L011ctr32_ret
422.align	16
423.L015ctr32_four:
424	call	_aesni_encrypt4
425	movups	(%esi),%xmm6
426	movups	16(%esi),%xmm7
427	movups	32(%esi),%xmm1
428	xorps	%xmm6,%xmm2
429	movups	48(%esi),%xmm0
430	xorps	%xmm7,%xmm3
431	movups	%xmm2,(%edi)
432	xorps	%xmm1,%xmm4
433	movups	%xmm3,16(%edi)
434	xorps	%xmm0,%xmm5
435	movups	%xmm4,32(%edi)
436	movups	%xmm5,48(%edi)
437.L011ctr32_ret:
438	pxor	%xmm0,%xmm0
439	pxor	%xmm1,%xmm1
440	pxor	%xmm2,%xmm2
441	pxor	%xmm3,%xmm3
442	pxor	%xmm4,%xmm4
443	movdqa	%xmm0,32(%esp)
444	pxor	%xmm5,%xmm5
445	movdqa	%xmm0,48(%esp)
446	pxor	%xmm6,%xmm6
447	movdqa	%xmm0,64(%esp)
448	pxor	%xmm7,%xmm7
449	movl	80(%esp),%esp
450	popl	%edi
451	popl	%esi
452	popl	%ebx
453	popl	%ebp
454	ret
455.size	aes_hw_ctr32_encrypt_blocks,.-.L_aes_hw_ctr32_encrypt_blocks_begin
456.hidden	_aesni_set_encrypt_key
457.type	_aesni_set_encrypt_key,@function
458.align	16
459_aesni_set_encrypt_key:
460	pushl	%ebp
461	pushl	%ebx
462	testl	%eax,%eax
463	jz	.L017bad_pointer
464	testl	%edx,%edx
465	jz	.L017bad_pointer
466	call	.L018pic
467.L018pic:
468	popl	%ebx
469	leal	.Lkey_const-.L018pic(%ebx),%ebx
470	leal	OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp
471	movups	(%eax),%xmm0
472	xorps	%xmm4,%xmm4
473	movl	4(%ebp),%ebp
474	leal	16(%edx),%edx
475	andl	$268437504,%ebp
476	cmpl	$256,%ecx
477	je	.L01914rounds
478	cmpl	$128,%ecx
479	jne	.L020bad_keybits
480.align	16
481.L02110rounds:
482	cmpl	$268435456,%ebp
483	je	.L02210rounds_alt
484	movl	$9,%ecx
485	movups	%xmm0,-16(%edx)
486.byte	102,15,58,223,200,1
487	call	.L023key_128_cold
488.byte	102,15,58,223,200,2
489	call	.L024key_128
490.byte	102,15,58,223,200,4
491	call	.L024key_128
492.byte	102,15,58,223,200,8
493	call	.L024key_128
494.byte	102,15,58,223,200,16
495	call	.L024key_128
496.byte	102,15,58,223,200,32
497	call	.L024key_128
498.byte	102,15,58,223,200,64
499	call	.L024key_128
500.byte	102,15,58,223,200,128
501	call	.L024key_128
502.byte	102,15,58,223,200,27
503	call	.L024key_128
504.byte	102,15,58,223,200,54
505	call	.L024key_128
506	movups	%xmm0,(%edx)
507	movl	%ecx,80(%edx)
508	jmp	.L025good_key
509.align	16
510.L024key_128:
511	movups	%xmm0,(%edx)
512	leal	16(%edx),%edx
513.L023key_128_cold:
514	shufps	$16,%xmm0,%xmm4
515	xorps	%xmm4,%xmm0
516	shufps	$140,%xmm0,%xmm4
517	xorps	%xmm4,%xmm0
518	shufps	$255,%xmm1,%xmm1
519	xorps	%xmm1,%xmm0
520	ret
521.align	16
522.L02210rounds_alt:
523	movdqa	(%ebx),%xmm5
524	movl	$8,%ecx
525	movdqa	32(%ebx),%xmm4
526	movdqa	%xmm0,%xmm2
527	movdqu	%xmm0,-16(%edx)
528.L026loop_key128:
529.byte	102,15,56,0,197
530.byte	102,15,56,221,196
531	pslld	$1,%xmm4
532	leal	16(%edx),%edx
533	movdqa	%xmm2,%xmm3
534	pslldq	$4,%xmm2
535	pxor	%xmm2,%xmm3
536	pslldq	$4,%xmm2
537	pxor	%xmm2,%xmm3
538	pslldq	$4,%xmm2
539	pxor	%xmm3,%xmm2
540	pxor	%xmm2,%xmm0
541	movdqu	%xmm0,-16(%edx)
542	movdqa	%xmm0,%xmm2
543	decl	%ecx
544	jnz	.L026loop_key128
545	movdqa	48(%ebx),%xmm4
546.byte	102,15,56,0,197
547.byte	102,15,56,221,196
548	pslld	$1,%xmm4
549	movdqa	%xmm2,%xmm3
550	pslldq	$4,%xmm2
551	pxor	%xmm2,%xmm3
552	pslldq	$4,%xmm2
553	pxor	%xmm2,%xmm3
554	pslldq	$4,%xmm2
555	pxor	%xmm3,%xmm2
556	pxor	%xmm2,%xmm0
557	movdqu	%xmm0,(%edx)
558	movdqa	%xmm0,%xmm2
559.byte	102,15,56,0,197
560.byte	102,15,56,221,196
561	movdqa	%xmm2,%xmm3
562	pslldq	$4,%xmm2
563	pxor	%xmm2,%xmm3
564	pslldq	$4,%xmm2
565	pxor	%xmm2,%xmm3
566	pslldq	$4,%xmm2
567	pxor	%xmm3,%xmm2
568	pxor	%xmm2,%xmm0
569	movdqu	%xmm0,16(%edx)
570	movl	$9,%ecx
571	movl	%ecx,96(%edx)
572	jmp	.L025good_key
573.align	16
574.L01914rounds:
575	movups	16(%eax),%xmm2
576	leal	16(%edx),%edx
577	cmpl	$268435456,%ebp
578	je	.L02714rounds_alt
579	movl	$13,%ecx
580	movups	%xmm0,-32(%edx)
581	movups	%xmm2,-16(%edx)
582.byte	102,15,58,223,202,1
583	call	.L028key_256a_cold
584.byte	102,15,58,223,200,1
585	call	.L029key_256b
586.byte	102,15,58,223,202,2
587	call	.L030key_256a
588.byte	102,15,58,223,200,2
589	call	.L029key_256b
590.byte	102,15,58,223,202,4
591	call	.L030key_256a
592.byte	102,15,58,223,200,4
593	call	.L029key_256b
594.byte	102,15,58,223,202,8
595	call	.L030key_256a
596.byte	102,15,58,223,200,8
597	call	.L029key_256b
598.byte	102,15,58,223,202,16
599	call	.L030key_256a
600.byte	102,15,58,223,200,16
601	call	.L029key_256b
602.byte	102,15,58,223,202,32
603	call	.L030key_256a
604.byte	102,15,58,223,200,32
605	call	.L029key_256b
606.byte	102,15,58,223,202,64
607	call	.L030key_256a
608	movups	%xmm0,(%edx)
609	movl	%ecx,16(%edx)
610	xorl	%eax,%eax
611	jmp	.L025good_key
612.align	16
613.L030key_256a:
614	movups	%xmm2,(%edx)
615	leal	16(%edx),%edx
616.L028key_256a_cold:
617	shufps	$16,%xmm0,%xmm4
618	xorps	%xmm4,%xmm0
619	shufps	$140,%xmm0,%xmm4
620	xorps	%xmm4,%xmm0
621	shufps	$255,%xmm1,%xmm1
622	xorps	%xmm1,%xmm0
623	ret
624.align	16
625.L029key_256b:
626	movups	%xmm0,(%edx)
627	leal	16(%edx),%edx
628	shufps	$16,%xmm2,%xmm4
629	xorps	%xmm4,%xmm2
630	shufps	$140,%xmm2,%xmm4
631	xorps	%xmm4,%xmm2
632	shufps	$170,%xmm1,%xmm1
633	xorps	%xmm1,%xmm2
634	ret
635.align	16
636.L02714rounds_alt:
637	movdqa	(%ebx),%xmm5
638	movdqa	32(%ebx),%xmm4
639	movl	$7,%ecx
640	movdqu	%xmm0,-32(%edx)
641	movdqa	%xmm2,%xmm1
642	movdqu	%xmm2,-16(%edx)
643.L031loop_key256:
644.byte	102,15,56,0,213
645.byte	102,15,56,221,212
646	movdqa	%xmm0,%xmm3
647	pslldq	$4,%xmm0
648	pxor	%xmm0,%xmm3
649	pslldq	$4,%xmm0
650	pxor	%xmm0,%xmm3
651	pslldq	$4,%xmm0
652	pxor	%xmm3,%xmm0
653	pslld	$1,%xmm4
654	pxor	%xmm2,%xmm0
655	movdqu	%xmm0,(%edx)
656	decl	%ecx
657	jz	.L032done_key256
658	pshufd	$255,%xmm0,%xmm2
659	pxor	%xmm3,%xmm3
660.byte	102,15,56,221,211
661	movdqa	%xmm1,%xmm3
662	pslldq	$4,%xmm1
663	pxor	%xmm1,%xmm3
664	pslldq	$4,%xmm1
665	pxor	%xmm1,%xmm3
666	pslldq	$4,%xmm1
667	pxor	%xmm3,%xmm1
668	pxor	%xmm1,%xmm2
669	movdqu	%xmm2,16(%edx)
670	leal	32(%edx),%edx
671	movdqa	%xmm2,%xmm1
672	jmp	.L031loop_key256
673.L032done_key256:
674	movl	$13,%ecx
675	movl	%ecx,16(%edx)
676.L025good_key:
677	pxor	%xmm0,%xmm0
678	pxor	%xmm1,%xmm1
679	pxor	%xmm2,%xmm2
680	pxor	%xmm3,%xmm3
681	pxor	%xmm4,%xmm4
682	pxor	%xmm5,%xmm5
683	xorl	%eax,%eax
684	popl	%ebx
685	popl	%ebp
686	ret
687.align	4
688.L017bad_pointer:
689	movl	$-1,%eax
690	popl	%ebx
691	popl	%ebp
692	ret
693.align	4
694.L020bad_keybits:
695	pxor	%xmm0,%xmm0
696	movl	$-2,%eax
697	popl	%ebx
698	popl	%ebp
699	ret
700.size	_aesni_set_encrypt_key,.-_aesni_set_encrypt_key
701.globl	aes_hw_set_encrypt_key
702.hidden	aes_hw_set_encrypt_key
703.type	aes_hw_set_encrypt_key,@function
704.align	16
705aes_hw_set_encrypt_key:
706.L_aes_hw_set_encrypt_key_begin:
707#ifdef BORINGSSL_DISPATCH_TEST
708	pushl	%ebx
709	pushl	%edx
710	call	.L033pic
711.L033pic:
712	popl	%ebx
713	leal	BORINGSSL_function_hit+3-.L033pic(%ebx),%ebx
714	movl	$1,%edx
715	movb	%dl,(%ebx)
716	popl	%edx
717	popl	%ebx
718#endif
719	movl	4(%esp),%eax
720	movl	8(%esp),%ecx
721	movl	12(%esp),%edx
722	call	_aesni_set_encrypt_key
723	ret
724.size	aes_hw_set_encrypt_key,.-.L_aes_hw_set_encrypt_key_begin
725.align	64
726.Lkey_const:
727.long	202313229,202313229,202313229,202313229
728.long	67569157,67569157,67569157,67569157
729.long	1,1,1,1
730.long	27,27,27,27
731.byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
732.byte	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
733.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
734.byte	115,108,46,111,114,103,62,0
735#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
736