Sync usage with man page.
[netbsd-mini2440.git] / crypto / external / bsd / openssl / lib / libcrypto / arch / x86_64 / aesni-x86_64.S
blob6f38ce6e4c9f4c0a03ab02916f6070a6acfe035c
1 .text   
2 .globl  aesni_encrypt
3 .type   aesni_encrypt,@function
4 .align  16
5 aesni_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
23 .globl  aesni_decrypt
24 .type   aesni_decrypt,@function
25 .align  16
26 aesni_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
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
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
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
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
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
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
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
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
188 aesni_ecb_encrypt:
189         cmpq    $16,%rdx
190         jb      .Lecb_ret
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
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
218 .Lecb_enc_tail:
219         addq    $64,%rdx
220         jz      .Lecb_ret
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
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
288 .Lecb_dec_tail:
289         addq    $64,%rdx
290         jz      .Lecb_ret
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)
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
342 aesni_cbc_encrypt:
343         testq   %rdx,%rdx
344         jz      .Lcbc_ret
346         movl    240(%rcx),%r10d
347         movq    %rcx,%r11
348         testl   %r9d,%r9d
349         jz      .Lcbc_decrypt
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
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  
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
429 .Lcbc_dec_tail:
430         addq    $64,%rdx
431         movups  %xmm6,(%r8)
432         jz      .Lcbc_dec_ret
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      
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
518 aesni_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
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
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
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
556 aesni_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
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
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
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
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
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:
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
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
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
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
731 .align  16
732 .Lkey_expansion_256b:
733         movaps  %xmm0,(%rax)
734         leaq    16(%rax),%rax
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