1.text
2.globl	aesni_encrypt
3.type	aesni_encrypt,@function
4.align	16
5aesni_encrypt:
6	movups	(%rdi),%xmm0
7	movl	240(%rdx),%eax
8	movaps	(%rdx),%xmm4
9	movaps	16(%rdx),%xmm5
10	leaq	32(%rdx),%rdx
11	pxor	%xmm4,%xmm0
12.Loop_enc1_1:
13.byte	102,15,56,220,197
14	decl	%eax
15	movaps	(%rdx),%xmm5
16	leaq	16(%rdx),%rdx
17	jnz	.Loop_enc1_1
18.byte	102,15,56,221,197
19	movups	%xmm0,(%rsi)
20	.byte	0xf3,0xc3
21.size	aesni_encrypt,.-aesni_encrypt
22
23.globl	aesni_decrypt
24.type	aesni_decrypt,@function
25.align	16
26aesni_decrypt:
27	movups	(%rdi),%xmm0
28	movl	240(%rdx),%eax
29	movaps	(%rdx),%xmm4
30	movaps	16(%rdx),%xmm5
31	leaq	32(%rdx),%rdx
32	pxor	%xmm4,%xmm0
33.Loop_dec1_2:
34.byte	102,15,56,222,197
35	decl	%eax
36	movaps	(%rdx),%xmm5
37	leaq	16(%rdx),%rdx
38	jnz	.Loop_dec1_2
39.byte	102,15,56,223,197
40	movups	%xmm0,(%rsi)
41	.byte	0xf3,0xc3
42.size	aesni_decrypt, .-aesni_decrypt
43.type	_aesni_encrypt3,@function
44.align	16
45_aesni_encrypt3:
46	movaps	(%rcx),%xmm4
47	shrl	$1,%eax
48	movaps	16(%rcx),%xmm5
49	leaq	32(%rcx),%rcx
50	pxor	%xmm4,%xmm0
51	pxor	%xmm4,%xmm1
52	pxor	%xmm4,%xmm2
53
54.Lenc_loop3:
55.byte	102,15,56,220,197
56	movaps	(%rcx),%xmm4
57.byte	102,15,56,220,205
58	decl	%eax
59.byte	102,15,56,220,213
60.byte	102,15,56,220,196
61	movaps	16(%rcx),%xmm5
62.byte	102,15,56,220,204
63	leaq	32(%rcx),%rcx
64.byte	102,15,56,220,212
65	jnz	.Lenc_loop3
66
67.byte	102,15,56,220,197
68	movaps	(%rcx),%xmm4
69.byte	102,15,56,220,205
70.byte	102,15,56,220,213
71.byte	102,15,56,221,196
72.byte	102,15,56,221,204
73.byte	102,15,56,221,212
74	.byte	0xf3,0xc3
75.size	_aesni_encrypt3,.-_aesni_encrypt3
76.type	_aesni_decrypt3,@function
77.align	16
78_aesni_decrypt3:
79	movaps	(%rcx),%xmm4
80	shrl	$1,%eax
81	movaps	16(%rcx),%xmm5
82	leaq	32(%rcx),%rcx
83	pxor	%xmm4,%xmm0
84	pxor	%xmm4,%xmm1
85	pxor	%xmm4,%xmm2
86
87.Ldec_loop3:
88.byte	102,15,56,222,197
89	movaps	(%rcx),%xmm4
90.byte	102,15,56,222,205
91	decl	%eax
92.byte	102,15,56,222,213
93.byte	102,15,56,222,196
94	movaps	16(%rcx),%xmm5
95.byte	102,15,56,222,204
96	leaq	32(%rcx),%rcx
97.byte	102,15,56,222,212
98	jnz	.Ldec_loop3
99
100.byte	102,15,56,222,197
101	movaps	(%rcx),%xmm4
102.byte	102,15,56,222,205
103.byte	102,15,56,222,213
104.byte	102,15,56,223,196
105.byte	102,15,56,223,204
106.byte	102,15,56,223,212
107	.byte	0xf3,0xc3
108.size	_aesni_decrypt3,.-_aesni_decrypt3
109.type	_aesni_encrypt4,@function
110.align	16
111_aesni_encrypt4:
112	movaps	(%rcx),%xmm4
113	shrl	$1,%eax
114	movaps	16(%rcx),%xmm5
115	leaq	32(%rcx),%rcx
116	pxor	%xmm4,%xmm0
117	pxor	%xmm4,%xmm1
118	pxor	%xmm4,%xmm2
119	pxor	%xmm4,%xmm3
120
121.Lenc_loop4:
122.byte	102,15,56,220,197
123	movaps	(%rcx),%xmm4
124.byte	102,15,56,220,205
125	decl	%eax
126.byte	102,15,56,220,213
127.byte	102,15,56,220,221
128.byte	102,15,56,220,196
129	movaps	16(%rcx),%xmm5
130.byte	102,15,56,220,204
131	leaq	32(%rcx),%rcx
132.byte	102,15,56,220,212
133.byte	102,15,56,220,220
134	jnz	.Lenc_loop4
135
136.byte	102,15,56,220,197
137	movaps	(%rcx),%xmm4
138.byte	102,15,56,220,205
139.byte	102,15,56,220,213
140.byte	102,15,56,220,221
141.byte	102,15,56,221,196
142.byte	102,15,56,221,204
143.byte	102,15,56,221,212
144.byte	102,15,56,221,220
145	.byte	0xf3,0xc3
146.size	_aesni_encrypt4,.-_aesni_encrypt4
147.type	_aesni_decrypt4,@function
148.align	16
149_aesni_decrypt4:
150	movaps	(%rcx),%xmm4
151	shrl	$1,%eax
152	movaps	16(%rcx),%xmm5
153	leaq	32(%rcx),%rcx
154	pxor	%xmm4,%xmm0
155	pxor	%xmm4,%xmm1
156	pxor	%xmm4,%xmm2
157	pxor	%xmm4,%xmm3
158
159.Ldec_loop4:
160.byte	102,15,56,222,197
161	movaps	(%rcx),%xmm4
162.byte	102,15,56,222,205
163	decl	%eax
164.byte	102,15,56,222,213
165.byte	102,15,56,222,221
166.byte	102,15,56,222,196
167	movaps	16(%rcx),%xmm5
168.byte	102,15,56,222,204
169	leaq	32(%rcx),%rcx
170.byte	102,15,56,222,212
171.byte	102,15,56,222,220
172	jnz	.Ldec_loop4
173
174.byte	102,15,56,222,197
175	movaps	(%rcx),%xmm4
176.byte	102,15,56,222,205
177.byte	102,15,56,222,213
178.byte	102,15,56,222,221
179.byte	102,15,56,223,196
180.byte	102,15,56,223,204
181.byte	102,15,56,223,212
182.byte	102,15,56,223,220
183	.byte	0xf3,0xc3
184.size	_aesni_decrypt4,.-_aesni_decrypt4
185.globl	aesni_ecb_encrypt
186.type	aesni_ecb_encrypt,@function
187.align	16
188aesni_ecb_encrypt:
189	cmpq	$16,%rdx
190	jb	.Lecb_ret
191
192	movl	240(%rcx),%eax
193	andq	$-16,%rdx
194	movq	%rcx,%r11
195	testl	%r8d,%r8d
196	movl	%eax,%r10d
197	jz	.Lecb_decrypt
198
199	subq	$64,%rdx
200	jbe	.Lecb_enc_tail
201	jmp	.Lecb_enc_loop3
202.align	16
203.Lecb_enc_loop3:
204	movups	(%rdi),%xmm0
205	movups	16(%rdi),%xmm1
206	movups	32(%rdi),%xmm2
207	call	_aesni_encrypt3
208	subq	$48,%rdx
209	leaq	48(%rdi),%rdi
210	leaq	48(%rsi),%rsi
211	movups	%xmm0,-48(%rsi)
212	movl	%r10d,%eax
213	movups	%xmm1,-32(%rsi)
214	movq	%r11,%rcx
215	movups	%xmm2,-16(%rsi)
216	ja	.Lecb_enc_loop3
217
218.Lecb_enc_tail:
219	addq	$64,%rdx
220	jz	.Lecb_ret
221
222	cmpq	$16,%rdx
223	movups	(%rdi),%xmm0
224	je	.Lecb_enc_one
225	cmpq	$32,%rdx
226	movups	16(%rdi),%xmm1
227	je	.Lecb_enc_two
228	cmpq	$48,%rdx
229	movups	32(%rdi),%xmm2
230	je	.Lecb_enc_three
231	movups	48(%rdi),%xmm3
232	call	_aesni_encrypt4
233	movups	%xmm0,(%rsi)
234	movups	%xmm1,16(%rsi)
235	movups	%xmm2,32(%rsi)
236	movups	%xmm3,48(%rsi)
237	jmp	.Lecb_ret
238.align	16
239.Lecb_enc_one:
240	movaps	(%rcx),%xmm4
241	movaps	16(%rcx),%xmm5
242	leaq	32(%rcx),%rcx
243	pxor	%xmm4,%xmm0
244.Loop_enc1_3:
245.byte	102,15,56,220,197
246	decl	%eax
247	movaps	(%rcx),%xmm5
248	leaq	16(%rcx),%rcx
249	jnz	.Loop_enc1_3
250.byte	102,15,56,221,197
251	movups	%xmm0,(%rsi)
252	jmp	.Lecb_ret
253.align	16
254.Lecb_enc_two:
255	call	_aesni_encrypt3
256	movups	%xmm0,(%rsi)
257	movups	%xmm1,16(%rsi)
258	jmp	.Lecb_ret
259.align	16
260.Lecb_enc_three:
261	call	_aesni_encrypt3
262	movups	%xmm0,(%rsi)
263	movups	%xmm1,16(%rsi)
264	movups	%xmm2,32(%rsi)
265	jmp	.Lecb_ret
266
267.align	16
268.Lecb_decrypt:
269	subq	$64,%rdx
270	jbe	.Lecb_dec_tail
271	jmp	.Lecb_dec_loop3
272.align	16
273.Lecb_dec_loop3:
274	movups	(%rdi),%xmm0
275	movups	16(%rdi),%xmm1
276	movups	32(%rdi),%xmm2
277	call	_aesni_decrypt3
278	subq	$48,%rdx
279	leaq	48(%rdi),%rdi
280	leaq	48(%rsi),%rsi
281	movups	%xmm0,-48(%rsi)
282	movl	%r10d,%eax
283	movups	%xmm1,-32(%rsi)
284	movq	%r11,%rcx
285	movups	%xmm2,-16(%rsi)
286	ja	.Lecb_dec_loop3
287
288.Lecb_dec_tail:
289	addq	$64,%rdx
290	jz	.Lecb_ret
291
292	cmpq	$16,%rdx
293	movups	(%rdi),%xmm0
294	je	.Lecb_dec_one
295	cmpq	$32,%rdx
296	movups	16(%rdi),%xmm1
297	je	.Lecb_dec_two
298	cmpq	$48,%rdx
299	movups	32(%rdi),%xmm2
300	je	.Lecb_dec_three
301	movups	48(%rdi),%xmm3
302	call	_aesni_decrypt4
303	movups	%xmm0,(%rsi)
304	movups	%xmm1,16(%rsi)
305	movups	%xmm2,32(%rsi)
306	movups	%xmm3,48(%rsi)
307	jmp	.Lecb_ret
308.align	16
309.Lecb_dec_one:
310	movaps	(%rcx),%xmm4
311	movaps	16(%rcx),%xmm5
312	leaq	32(%rcx),%rcx
313	pxor	%xmm4,%xmm0
314.Loop_dec1_4:
315.byte	102,15,56,222,197
316	decl	%eax
317	movaps	(%rcx),%xmm5
318	leaq	16(%rcx),%rcx
319	jnz	.Loop_dec1_4
320.byte	102,15,56,223,197
321	movups	%xmm0,(%rsi)
322	jmp	.Lecb_ret
323.align	16
324.Lecb_dec_two:
325	call	_aesni_decrypt3
326	movups	%xmm0,(%rsi)
327	movups	%xmm1,16(%rsi)
328	jmp	.Lecb_ret
329.align	16
330.Lecb_dec_three:
331	call	_aesni_decrypt3
332	movups	%xmm0,(%rsi)
333	movups	%xmm1,16(%rsi)
334	movups	%xmm2,32(%rsi)
335
336.Lecb_ret:
337	.byte	0xf3,0xc3
338.size	aesni_ecb_encrypt,.-aesni_ecb_encrypt
339.globl	aesni_cbc_encrypt
340.type	aesni_cbc_encrypt,@function
341.align	16
342aesni_cbc_encrypt:
343	testq	%rdx,%rdx
344	jz	.Lcbc_ret
345
346	movl	240(%rcx),%r10d
347	movq	%rcx,%r11
348	testl	%r9d,%r9d
349	jz	.Lcbc_decrypt
350
351	movups	(%r8),%xmm0
352	cmpq	$16,%rdx
353	movl	%r10d,%eax
354	jb	.Lcbc_enc_tail
355	subq	$16,%rdx
356	jmp	.Lcbc_enc_loop
357.align	16
358.Lcbc_enc_loop:
359	movups	(%rdi),%xmm1
360	leaq	16(%rdi),%rdi
361	pxor	%xmm1,%xmm0
362	movaps	(%rcx),%xmm4
363	movaps	16(%rcx),%xmm5
364	leaq	32(%rcx),%rcx
365	pxor	%xmm4,%xmm0
366.Loop_enc1_5:
367.byte	102,15,56,220,197
368	decl	%eax
369	movaps	(%rcx),%xmm5
370	leaq	16(%rcx),%rcx
371	jnz	.Loop_enc1_5
372.byte	102,15,56,221,197
373	subq	$16,%rdx
374	leaq	16(%rsi),%rsi
375	movl	%r10d,%eax
376	movq	%r11,%rcx
377	movups	%xmm0,-16(%rsi)
378	jnc	.Lcbc_enc_loop
379	addq	$16,%rdx
380	jnz	.Lcbc_enc_tail
381	movups	%xmm0,(%r8)
382	jmp	.Lcbc_ret
383
384.Lcbc_enc_tail:
385	movq	%rdx,%rcx
386	xchgq	%rdi,%rsi
387.long	0x9066A4F3
388	movl	$16,%ecx
389	subq	%rdx,%rcx
390	xorl	%eax,%eax
391.long	0x9066AAF3
392	leaq	-16(%rdi),%rdi
393	movl	%r10d,%eax
394	movq	%rdi,%rsi
395	movq	%r11,%rcx
396	xorq	%rdx,%rdx
397	jmp	.Lcbc_enc_loop
398
399.align	16
400.Lcbc_decrypt:
401	movups	(%r8),%xmm6
402	subq	$64,%rdx
403	movl	%r10d,%eax
404	jbe	.Lcbc_dec_tail
405	jmp	.Lcbc_dec_loop3
406.align	16
407.Lcbc_dec_loop3:
408	movups	(%rdi),%xmm0
409	movups	16(%rdi),%xmm1
410	movups	32(%rdi),%xmm2
411	movaps	%xmm0,%xmm7
412	movaps	%xmm1,%xmm8
413	movaps	%xmm2,%xmm9
414	call	_aesni_decrypt3
415	subq	$48,%rdx
416	leaq	48(%rdi),%rdi
417	leaq	48(%rsi),%rsi
418	pxor	%xmm6,%xmm0
419	pxor	%xmm7,%xmm1
420	movaps	%xmm9,%xmm6
421	pxor	%xmm8,%xmm2
422	movups	%xmm0,-48(%rsi)
423	movl	%r10d,%eax
424	movups	%xmm1,-32(%rsi)
425	movq	%r11,%rcx
426	movups	%xmm2,-16(%rsi)
427	ja	.Lcbc_dec_loop3
428
429.Lcbc_dec_tail:
430	addq	$64,%rdx
431	movups	%xmm6,(%r8)
432	jz	.Lcbc_dec_ret
433
434	movups	(%rdi),%xmm0
435	cmpq	$16,%rdx
436	movaps	%xmm0,%xmm7
437	jbe	.Lcbc_dec_one
438	movups	16(%rdi),%xmm1
439	cmpq	$32,%rdx
440	movaps	%xmm1,%xmm8
441	jbe	.Lcbc_dec_two
442	movups	32(%rdi),%xmm2
443	cmpq	$48,%rdx
444	movaps	%xmm2,%xmm9
445	jbe	.Lcbc_dec_three
446	movups	48(%rdi),%xmm3
447	call	_aesni_decrypt4
448	pxor	%xmm6,%xmm0
449	movups	48(%rdi),%xmm6
450	pxor	%xmm7,%xmm1
451	movups	%xmm0,(%rsi)
452	pxor	%xmm8,%xmm2
453	movups	%xmm1,16(%rsi)
454	pxor	%xmm9,%xmm3
455	movups	%xmm2,32(%rsi)
456	movaps	%xmm3,%xmm0
457	leaq	48(%rsi),%rsi
458	jmp	.Lcbc_dec_tail_collected
459.align	16
460.Lcbc_dec_one:
461	movaps	(%rcx),%xmm4
462	movaps	16(%rcx),%xmm5
463	leaq	32(%rcx),%rcx
464	pxor	%xmm4,%xmm0
465.Loop_dec1_6:
466.byte	102,15,56,222,197
467	decl	%eax
468	movaps	(%rcx),%xmm5
469	leaq	16(%rcx),%rcx
470	jnz	.Loop_dec1_6
471.byte	102,15,56,223,197
472	pxor	%xmm6,%xmm0
473	movaps	%xmm7,%xmm6
474	jmp	.Lcbc_dec_tail_collected
475.align	16
476.Lcbc_dec_two:
477	call	_aesni_decrypt3
478	pxor	%xmm6,%xmm0
479	pxor	%xmm7,%xmm1
480	movups	%xmm0,(%rsi)
481	movaps	%xmm8,%xmm6
482	movaps	%xmm1,%xmm0
483	leaq	16(%rsi),%rsi
484	jmp	.Lcbc_dec_tail_collected
485.align	16
486.Lcbc_dec_three:
487	call	_aesni_decrypt3
488	pxor	%xmm6,%xmm0
489	pxor	%xmm7,%xmm1
490	movups	%xmm0,(%rsi)
491	pxor	%xmm8,%xmm2
492	movups	%xmm1,16(%rsi)
493	movaps	%xmm9,%xmm6
494	movaps	%xmm2,%xmm0
495	leaq	32(%rsi),%rsi
496	jmp	.Lcbc_dec_tail_collected
497.align	16
498.Lcbc_dec_tail_collected:
499	andq	$15,%rdx
500	movups	%xmm6,(%r8)
501	jnz	.Lcbc_dec_tail_partial
502	movups	%xmm0,(%rsi)
503	jmp	.Lcbc_dec_ret
504.Lcbc_dec_tail_partial:
505	movaps	%xmm0,-24(%rsp)
506	movq	%rsi,%rdi
507	movq	%rdx,%rcx
508	leaq	-24(%rsp),%rsi
509.long	0x9066A4F3
510
511.Lcbc_dec_ret:
512.Lcbc_ret:
513	.byte	0xf3,0xc3
514.size	aesni_cbc_encrypt,.-aesni_cbc_encrypt
515.globl	aesni_set_decrypt_key
516.type	aesni_set_decrypt_key,@function
517.align	16
518aesni_set_decrypt_key:
519.byte	0x48,0x83,0xEC,0x08
520	call	_aesni_set_encrypt_key
521	shll	$4,%esi
522	testl	%eax,%eax
523	jnz	.Ldec_key_ret
524	leaq	16(%rdx,%rsi,1),%rdi
525
526	movaps	(%rdx),%xmm0
527	movaps	(%rdi),%xmm1
528	movaps	%xmm0,(%rdi)
529	movaps	%xmm1,(%rdx)
530	leaq	16(%rdx),%rdx
531	leaq	-16(%rdi),%rdi
532
533.Ldec_key_inverse:
534	movaps	(%rdx),%xmm0
535	movaps	(%rdi),%xmm1
536.byte	102,15,56,219,192
537.byte	102,15,56,219,201
538	leaq	16(%rdx),%rdx
539	leaq	-16(%rdi),%rdi
540	cmpq	%rdx,%rdi
541	movaps	%xmm0,16(%rdi)
542	movaps	%xmm1,-16(%rdx)
543	ja	.Ldec_key_inverse
544
545	movaps	(%rdx),%xmm0
546.byte	102,15,56,219,192
547	movaps	%xmm0,(%rdi)
548.Ldec_key_ret:
549	addq	$8,%rsp
550	.byte	0xf3,0xc3
551.LSEH_end_set_decrypt_key:
552.size	aesni_set_decrypt_key,.-aesni_set_decrypt_key
553.globl	aesni_set_encrypt_key
554.type	aesni_set_encrypt_key,@function
555.align	16
556aesni_set_encrypt_key:
557_aesni_set_encrypt_key:
558.byte	0x48,0x83,0xEC,0x08
559	testq	%rdi,%rdi
560	movq	$-1,%rax
561	jz	.Lenc_key_ret
562	testq	%rdx,%rdx
563	jz	.Lenc_key_ret
564
565	movups	(%rdi),%xmm0
566	pxor	%xmm4,%xmm4
567	leaq	16(%rdx),%rax
568	cmpl	$256,%esi
569	je	.L14rounds
570	cmpl	$192,%esi
571	je	.L12rounds
572	cmpl	$128,%esi
573	jne	.Lbad_keybits
574
575.L10rounds:
576	movl	$9,%esi
577	movaps	%xmm0,(%rdx)
578.byte	102,15,58,223,200,1
579	call	.Lkey_expansion_128_cold
580.byte	102,15,58,223,200,2
581	call	.Lkey_expansion_128
582.byte	102,15,58,223,200,4
583	call	.Lkey_expansion_128
584.byte	102,15,58,223,200,8
585	call	.Lkey_expansion_128
586.byte	102,15,58,223,200,16
587	call	.Lkey_expansion_128
588.byte	102,15,58,223,200,32
589	call	.Lkey_expansion_128
590.byte	102,15,58,223,200,64
591	call	.Lkey_expansion_128
592.byte	102,15,58,223,200,128
593	call	.Lkey_expansion_128
594.byte	102,15,58,223,200,27
595	call	.Lkey_expansion_128
596.byte	102,15,58,223,200,54
597	call	.Lkey_expansion_128
598	movaps	%xmm0,(%rax)
599	movl	%esi,80(%rax)
600	xorl	%eax,%eax
601	jmp	.Lenc_key_ret
602
603.align	16
604.L12rounds:
605	movq	16(%rdi),%xmm2
606	movl	$11,%esi
607	movaps	%xmm0,(%rdx)
608.byte	102,15,58,223,202,1
609	call	.Lkey_expansion_192a_cold
610.byte	102,15,58,223,202,2
611	call	.Lkey_expansion_192b
612.byte	102,15,58,223,202,4
613	call	.Lkey_expansion_192a
614.byte	102,15,58,223,202,8
615	call	.Lkey_expansion_192b
616.byte	102,15,58,223,202,16
617	call	.Lkey_expansion_192a
618.byte	102,15,58,223,202,32
619	call	.Lkey_expansion_192b
620.byte	102,15,58,223,202,64
621	call	.Lkey_expansion_192a
622.byte	102,15,58,223,202,128
623	call	.Lkey_expansion_192b
624	movaps	%xmm0,(%rax)
625	movl	%esi,48(%rax)
626	xorq	%rax,%rax
627	jmp	.Lenc_key_ret
628
629.align	16
630.L14rounds:
631	movups	16(%rdi),%xmm2
632	movl	$13,%esi
633	leaq	16(%rax),%rax
634	movaps	%xmm0,(%rdx)
635	movaps	%xmm2,16(%rdx)
636.byte	102,15,58,223,202,1
637	call	.Lkey_expansion_256a_cold
638.byte	102,15,58,223,200,1
639	call	.Lkey_expansion_256b
640.byte	102,15,58,223,202,2
641	call	.Lkey_expansion_256a
642.byte	102,15,58,223,200,2
643	call	.Lkey_expansion_256b
644.byte	102,15,58,223,202,4
645	call	.Lkey_expansion_256a
646.byte	102,15,58,223,200,4
647	call	.Lkey_expansion_256b
648.byte	102,15,58,223,202,8
649	call	.Lkey_expansion_256a
650.byte	102,15,58,223,200,8
651	call	.Lkey_expansion_256b
652.byte	102,15,58,223,202,16
653	call	.Lkey_expansion_256a
654.byte	102,15,58,223,200,16
655	call	.Lkey_expansion_256b
656.byte	102,15,58,223,202,32
657	call	.Lkey_expansion_256a
658.byte	102,15,58,223,200,32
659	call	.Lkey_expansion_256b
660.byte	102,15,58,223,202,64
661	call	.Lkey_expansion_256a
662	movaps	%xmm0,(%rax)
663	movl	%esi,16(%rax)
664	xorq	%rax,%rax
665	jmp	.Lenc_key_ret
666
667.align	16
668.Lbad_keybits:
669	movq	$-2,%rax
670.Lenc_key_ret:
671	addq	$8,%rsp
672	.byte	0xf3,0xc3
673.LSEH_end_set_encrypt_key:
674
675.align	16
676.Lkey_expansion_128:
677	movaps	%xmm0,(%rax)
678	leaq	16(%rax),%rax
679.Lkey_expansion_128_cold:
680	shufps	$16,%xmm0,%xmm4
681	pxor	%xmm4,%xmm0
682	shufps	$140,%xmm0,%xmm4
683	pxor	%xmm4,%xmm0
684	pshufd	$255,%xmm1,%xmm1
685	pxor	%xmm1,%xmm0
686	.byte	0xf3,0xc3
687
688.align	16
689.Lkey_expansion_192a:
690	movaps	%xmm0,(%rax)
691	leaq	16(%rax),%rax
692.Lkey_expansion_192a_cold:
693	movaps	%xmm2,%xmm5
694.Lkey_expansion_192b_warm:
695	shufps	$16,%xmm0,%xmm4
696	movaps	%xmm2,%xmm3
697	pxor	%xmm4,%xmm0
698	shufps	$140,%xmm0,%xmm4
699	pslldq	$4,%xmm3
700	pxor	%xmm4,%xmm0
701	pshufd	$85,%xmm1,%xmm1
702	pxor	%xmm3,%xmm2
703	pxor	%xmm1,%xmm0
704	pshufd	$255,%xmm0,%xmm3
705	pxor	%xmm3,%xmm2
706	.byte	0xf3,0xc3
707
708.align	16
709.Lkey_expansion_192b:
710	movaps	%xmm0,%xmm3
711	shufps	$68,%xmm0,%xmm5
712	movaps	%xmm5,(%rax)
713	shufps	$78,%xmm2,%xmm3
714	movaps	%xmm3,16(%rax)
715	leaq	32(%rax),%rax
716	jmp	.Lkey_expansion_192b_warm
717
718.align	16
719.Lkey_expansion_256a:
720	movaps	%xmm2,(%rax)
721	leaq	16(%rax),%rax
722.Lkey_expansion_256a_cold:
723	shufps	$16,%xmm0,%xmm4
724	pxor	%xmm4,%xmm0
725	shufps	$140,%xmm0,%xmm4
726	pxor	%xmm4,%xmm0
727	pshufd	$255,%xmm1,%xmm1
728	pxor	%xmm1,%xmm0
729	.byte	0xf3,0xc3
730
731.align	16
732.Lkey_expansion_256b:
733	movaps	%xmm0,(%rax)
734	leaq	16(%rax),%rax
735
736	shufps	$16,%xmm2,%xmm4
737	pxor	%xmm4,%xmm2
738	shufps	$140,%xmm2,%xmm4
739	pxor	%xmm4,%xmm2
740	pshufd	$170,%xmm1,%xmm1
741	pxor	%xmm1,%xmm2
742	.byte	0xf3,0xc3
743.size	aesni_set_encrypt_key,.-aesni_set_encrypt_key
744.byte	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
745.align	64
746