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