openssl: Adjust manual pages for 1.0.1l.
[dragonfly.git] / secure / lib / libcrypto / asm / aesni-x86.s
1 .file   "../../../../crypto/openssl/crypto/aes/asm/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),%xmm2
11         movl    240(%edx),%ecx
12         movl    8(%esp),%eax
13         movups  (%edx),%xmm0
14         movups  16(%edx),%xmm1
15         leal    32(%edx),%edx
16         xorps   %xmm0,%xmm2
17 .L000enc1_loop_1:
18 .byte   102,15,56,220,209
19         decl    %ecx
20         movups  (%edx),%xmm1
21         leal    16(%edx),%edx
22         jnz     .L000enc1_loop_1
23 .byte   102,15,56,221,209
24         movups  %xmm2,(%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),%xmm2
35         movl    240(%edx),%ecx
36         movl    8(%esp),%eax
37         movups  (%edx),%xmm0
38         movups  16(%edx),%xmm1
39         leal    32(%edx),%edx
40         xorps   %xmm0,%xmm2
41 .L001dec1_loop_2:
42 .byte   102,15,56,222,209
43         decl    %ecx
44         movups  (%edx),%xmm1
45         leal    16(%edx),%edx
46         jnz     .L001dec1_loop_2
47 .byte   102,15,56,223,209
48         movups  %xmm2,(%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),%xmm0
55         shrl    $1,%ecx
56         movups  16(%edx),%xmm1
57         leal    32(%edx),%edx
58         xorps   %xmm0,%xmm2
59         pxor    %xmm0,%xmm3
60         pxor    %xmm0,%xmm4
61         movups  (%edx),%xmm0
62 .L002enc3_loop:
63 .byte   102,15,56,220,209
64 .byte   102,15,56,220,217
65         decl    %ecx
66 .byte   102,15,56,220,225
67         movups  16(%edx),%xmm1
68 .byte   102,15,56,220,208
69 .byte   102,15,56,220,216
70         leal    32(%edx),%edx
71 .byte   102,15,56,220,224
72         movups  (%edx),%xmm0
73         jnz     .L002enc3_loop
74 .byte   102,15,56,220,209
75 .byte   102,15,56,220,217
76 .byte   102,15,56,220,225
77 .byte   102,15,56,221,208
78 .byte   102,15,56,221,216
79 .byte   102,15,56,221,224
80         ret
81 .size   _aesni_encrypt3,.-_aesni_encrypt3
82 .type   _aesni_decrypt3,@function
83 .align  16
84 _aesni_decrypt3:
85         movups  (%edx),%xmm0
86         shrl    $1,%ecx
87         movups  16(%edx),%xmm1
88         leal    32(%edx),%edx
89         xorps   %xmm0,%xmm2
90         pxor    %xmm0,%xmm3
91         pxor    %xmm0,%xmm4
92         movups  (%edx),%xmm0
93 .L003dec3_loop:
94 .byte   102,15,56,222,209
95 .byte   102,15,56,222,217
96         decl    %ecx
97 .byte   102,15,56,222,225
98         movups  16(%edx),%xmm1
99 .byte   102,15,56,222,208
100 .byte   102,15,56,222,216
101         leal    32(%edx),%edx
102 .byte   102,15,56,222,224
103         movups  (%edx),%xmm0
104         jnz     .L003dec3_loop
105 .byte   102,15,56,222,209
106 .byte   102,15,56,222,217
107 .byte   102,15,56,222,225
108 .byte   102,15,56,223,208
109 .byte   102,15,56,223,216
110 .byte   102,15,56,223,224
111         ret
112 .size   _aesni_decrypt3,.-_aesni_decrypt3
113 .type   _aesni_encrypt4,@function
114 .align  16
115 _aesni_encrypt4:
116         movups  (%edx),%xmm0
117         movups  16(%edx),%xmm1
118         shrl    $1,%ecx
119         leal    32(%edx),%edx
120         xorps   %xmm0,%xmm2
121         pxor    %xmm0,%xmm3
122         pxor    %xmm0,%xmm4
123         pxor    %xmm0,%xmm5
124         movups  (%edx),%xmm0
125 .L004enc4_loop:
126 .byte   102,15,56,220,209
127 .byte   102,15,56,220,217
128         decl    %ecx
129 .byte   102,15,56,220,225
130 .byte   102,15,56,220,233
131         movups  16(%edx),%xmm1
132 .byte   102,15,56,220,208
133 .byte   102,15,56,220,216
134         leal    32(%edx),%edx
135 .byte   102,15,56,220,224
136 .byte   102,15,56,220,232
137         movups  (%edx),%xmm0
138         jnz     .L004enc4_loop
139 .byte   102,15,56,220,209
140 .byte   102,15,56,220,217
141 .byte   102,15,56,220,225
142 .byte   102,15,56,220,233
143 .byte   102,15,56,221,208
144 .byte   102,15,56,221,216
145 .byte   102,15,56,221,224
146 .byte   102,15,56,221,232
147         ret
148 .size   _aesni_encrypt4,.-_aesni_encrypt4
149 .type   _aesni_decrypt4,@function
150 .align  16
151 _aesni_decrypt4:
152         movups  (%edx),%xmm0
153         movups  16(%edx),%xmm1
154         shrl    $1,%ecx
155         leal    32(%edx),%edx
156         xorps   %xmm0,%xmm2
157         pxor    %xmm0,%xmm3
158         pxor    %xmm0,%xmm4
159         pxor    %xmm0,%xmm5
160         movups  (%edx),%xmm0
161 .L005dec4_loop:
162 .byte   102,15,56,222,209
163 .byte   102,15,56,222,217
164         decl    %ecx
165 .byte   102,15,56,222,225
166 .byte   102,15,56,222,233
167         movups  16(%edx),%xmm1
168 .byte   102,15,56,222,208
169 .byte   102,15,56,222,216
170         leal    32(%edx),%edx
171 .byte   102,15,56,222,224
172 .byte   102,15,56,222,232
173         movups  (%edx),%xmm0
174         jnz     .L005dec4_loop
175 .byte   102,15,56,222,209
176 .byte   102,15,56,222,217
177 .byte   102,15,56,222,225
178 .byte   102,15,56,222,233
179 .byte   102,15,56,223,208
180 .byte   102,15,56,223,216
181 .byte   102,15,56,223,224
182 .byte   102,15,56,223,232
183         ret
184 .size   _aesni_decrypt4,.-_aesni_decrypt4
185 .type   _aesni_encrypt6,@function
186 .align  16
187 _aesni_encrypt6:
188         movups  (%edx),%xmm0
189         shrl    $1,%ecx
190         movups  16(%edx),%xmm1
191         leal    32(%edx),%edx
192         xorps   %xmm0,%xmm2
193         pxor    %xmm0,%xmm3
194 .byte   102,15,56,220,209
195         pxor    %xmm0,%xmm4
196 .byte   102,15,56,220,217
197         pxor    %xmm0,%xmm5
198         decl    %ecx
199 .byte   102,15,56,220,225
200         pxor    %xmm0,%xmm6
201 .byte   102,15,56,220,233
202         pxor    %xmm0,%xmm7
203 .byte   102,15,56,220,241
204         movups  (%edx),%xmm0
205 .byte   102,15,56,220,249
206         jmp     .L_aesni_encrypt6_enter
207 .align  16
208 .L006enc6_loop:
209 .byte   102,15,56,220,209
210 .byte   102,15,56,220,217
211         decl    %ecx
212 .byte   102,15,56,220,225
213 .byte   102,15,56,220,233
214 .byte   102,15,56,220,241
215 .byte   102,15,56,220,249
216 .align  16
217 .L_aesni_encrypt6_enter:
218         movups  16(%edx),%xmm1
219 .byte   102,15,56,220,208
220 .byte   102,15,56,220,216
221         leal    32(%edx),%edx
222 .byte   102,15,56,220,224
223 .byte   102,15,56,220,232
224 .byte   102,15,56,220,240
225 .byte   102,15,56,220,248
226         movups  (%edx),%xmm0
227         jnz     .L006enc6_loop
228 .byte   102,15,56,220,209
229 .byte   102,15,56,220,217
230 .byte   102,15,56,220,225
231 .byte   102,15,56,220,233
232 .byte   102,15,56,220,241
233 .byte   102,15,56,220,249
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 .byte   102,15,56,221,240
239 .byte   102,15,56,221,248
240         ret
241 .size   _aesni_encrypt6,.-_aesni_encrypt6
242 .type   _aesni_decrypt6,@function
243 .align  16
244 _aesni_decrypt6:
245         movups  (%edx),%xmm0
246         shrl    $1,%ecx
247         movups  16(%edx),%xmm1
248         leal    32(%edx),%edx
249         xorps   %xmm0,%xmm2
250         pxor    %xmm0,%xmm3
251 .byte   102,15,56,222,209
252         pxor    %xmm0,%xmm4
253 .byte   102,15,56,222,217
254         pxor    %xmm0,%xmm5
255         decl    %ecx
256 .byte   102,15,56,222,225
257         pxor    %xmm0,%xmm6
258 .byte   102,15,56,222,233
259         pxor    %xmm0,%xmm7
260 .byte   102,15,56,222,241
261         movups  (%edx),%xmm0
262 .byte   102,15,56,222,249
263         jmp     .L_aesni_decrypt6_enter
264 .align  16
265 .L007dec6_loop:
266 .byte   102,15,56,222,209
267 .byte   102,15,56,222,217
268         decl    %ecx
269 .byte   102,15,56,222,225
270 .byte   102,15,56,222,233
271 .byte   102,15,56,222,241
272 .byte   102,15,56,222,249
273 .align  16
274 .L_aesni_decrypt6_enter:
275         movups  16(%edx),%xmm1
276 .byte   102,15,56,222,208
277 .byte   102,15,56,222,216
278         leal    32(%edx),%edx
279 .byte   102,15,56,222,224
280 .byte   102,15,56,222,232
281 .byte   102,15,56,222,240
282 .byte   102,15,56,222,248
283         movups  (%edx),%xmm0
284         jnz     .L007dec6_loop
285 .byte   102,15,56,222,209
286 .byte   102,15,56,222,217
287 .byte   102,15,56,222,225
288 .byte   102,15,56,222,233
289 .byte   102,15,56,222,241
290 .byte   102,15,56,222,249
291 .byte   102,15,56,223,208
292 .byte   102,15,56,223,216
293 .byte   102,15,56,223,224
294 .byte   102,15,56,223,232
295 .byte   102,15,56,223,240
296 .byte   102,15,56,223,248
297         ret
298 .size   _aesni_decrypt6,.-_aesni_decrypt6
299 .globl  aesni_ecb_encrypt
300 .type   aesni_ecb_encrypt,@function
301 .align  16
302 aesni_ecb_encrypt:
303 .L_aesni_ecb_encrypt_begin:
304         pushl   %ebp
305         pushl   %ebx
306         pushl   %esi
307         pushl   %edi
308         movl    20(%esp),%esi
309         movl    24(%esp),%edi
310         movl    28(%esp),%eax
311         movl    32(%esp),%edx
312         movl    36(%esp),%ebx
313         andl    $-16,%eax
314         jz      .L008ecb_ret
315         movl    240(%edx),%ecx
316         testl   %ebx,%ebx
317         jz      .L009ecb_decrypt
318         movl    %edx,%ebp
319         movl    %ecx,%ebx
320         cmpl    $96,%eax
321         jb      .L010ecb_enc_tail
322         movdqu  (%esi),%xmm2
323         movdqu  16(%esi),%xmm3
324         movdqu  32(%esi),%xmm4
325         movdqu  48(%esi),%xmm5
326         movdqu  64(%esi),%xmm6
327         movdqu  80(%esi),%xmm7
328         leal    96(%esi),%esi
329         subl    $96,%eax
330         jmp     .L011ecb_enc_loop6_enter
331 .align  16
332 .L012ecb_enc_loop6:
333         movups  %xmm2,(%edi)
334         movdqu  (%esi),%xmm2
335         movups  %xmm3,16(%edi)
336         movdqu  16(%esi),%xmm3
337         movups  %xmm4,32(%edi)
338         movdqu  32(%esi),%xmm4
339         movups  %xmm5,48(%edi)
340         movdqu  48(%esi),%xmm5
341         movups  %xmm6,64(%edi)
342         movdqu  64(%esi),%xmm6
343         movups  %xmm7,80(%edi)
344         leal    96(%edi),%edi
345         movdqu  80(%esi),%xmm7
346         leal    96(%esi),%esi
347 .L011ecb_enc_loop6_enter:
348         call    _aesni_encrypt6
349         movl    %ebp,%edx
350         movl    %ebx,%ecx
351         subl    $96,%eax
352         jnc     .L012ecb_enc_loop6
353         movups  %xmm2,(%edi)
354         movups  %xmm3,16(%edi)
355         movups  %xmm4,32(%edi)
356         movups  %xmm5,48(%edi)
357         movups  %xmm6,64(%edi)
358         movups  %xmm7,80(%edi)
359         leal    96(%edi),%edi
360         addl    $96,%eax
361         jz      .L008ecb_ret
362 .L010ecb_enc_tail:
363         movups  (%esi),%xmm2
364         cmpl    $32,%eax
365         jb      .L013ecb_enc_one
366         movups  16(%esi),%xmm3
367         je      .L014ecb_enc_two
368         movups  32(%esi),%xmm4
369         cmpl    $64,%eax
370         jb      .L015ecb_enc_three
371         movups  48(%esi),%xmm5
372         je      .L016ecb_enc_four
373         movups  64(%esi),%xmm6
374         xorps   %xmm7,%xmm7
375         call    _aesni_encrypt6
376         movups  %xmm2,(%edi)
377         movups  %xmm3,16(%edi)
378         movups  %xmm4,32(%edi)
379         movups  %xmm5,48(%edi)
380         movups  %xmm6,64(%edi)
381         jmp     .L008ecb_ret
382 .align  16
383 .L013ecb_enc_one:
384         movups  (%edx),%xmm0
385         movups  16(%edx),%xmm1
386         leal    32(%edx),%edx
387         xorps   %xmm0,%xmm2
388 .L017enc1_loop_3:
389 .byte   102,15,56,220,209
390         decl    %ecx
391         movups  (%edx),%xmm1
392         leal    16(%edx),%edx
393         jnz     .L017enc1_loop_3
394 .byte   102,15,56,221,209
395         movups  %xmm2,(%edi)
396         jmp     .L008ecb_ret
397 .align  16
398 .L014ecb_enc_two:
399         xorps   %xmm4,%xmm4
400         call    _aesni_encrypt3
401         movups  %xmm2,(%edi)
402         movups  %xmm3,16(%edi)
403         jmp     .L008ecb_ret
404 .align  16
405 .L015ecb_enc_three:
406         call    _aesni_encrypt3
407         movups  %xmm2,(%edi)
408         movups  %xmm3,16(%edi)
409         movups  %xmm4,32(%edi)
410         jmp     .L008ecb_ret
411 .align  16
412 .L016ecb_enc_four:
413         call    _aesni_encrypt4
414         movups  %xmm2,(%edi)
415         movups  %xmm3,16(%edi)
416         movups  %xmm4,32(%edi)
417         movups  %xmm5,48(%edi)
418         jmp     .L008ecb_ret
419 .align  16
420 .L009ecb_decrypt:
421         movl    %edx,%ebp
422         movl    %ecx,%ebx
423         cmpl    $96,%eax
424         jb      .L018ecb_dec_tail
425         movdqu  (%esi),%xmm2
426         movdqu  16(%esi),%xmm3
427         movdqu  32(%esi),%xmm4
428         movdqu  48(%esi),%xmm5
429         movdqu  64(%esi),%xmm6
430         movdqu  80(%esi),%xmm7
431         leal    96(%esi),%esi
432         subl    $96,%eax
433         jmp     .L019ecb_dec_loop6_enter
434 .align  16
435 .L020ecb_dec_loop6:
436         movups  %xmm2,(%edi)
437         movdqu  (%esi),%xmm2
438         movups  %xmm3,16(%edi)
439         movdqu  16(%esi),%xmm3
440         movups  %xmm4,32(%edi)
441         movdqu  32(%esi),%xmm4
442         movups  %xmm5,48(%edi)
443         movdqu  48(%esi),%xmm5
444         movups  %xmm6,64(%edi)
445         movdqu  64(%esi),%xmm6
446         movups  %xmm7,80(%edi)
447         leal    96(%edi),%edi
448         movdqu  80(%esi),%xmm7
449         leal    96(%esi),%esi
450 .L019ecb_dec_loop6_enter:
451         call    _aesni_decrypt6
452         movl    %ebp,%edx
453         movl    %ebx,%ecx
454         subl    $96,%eax
455         jnc     .L020ecb_dec_loop6
456         movups  %xmm2,(%edi)
457         movups  %xmm3,16(%edi)
458         movups  %xmm4,32(%edi)
459         movups  %xmm5,48(%edi)
460         movups  %xmm6,64(%edi)
461         movups  %xmm7,80(%edi)
462         leal    96(%edi),%edi
463         addl    $96,%eax
464         jz      .L008ecb_ret
465 .L018ecb_dec_tail:
466         movups  (%esi),%xmm2
467         cmpl    $32,%eax
468         jb      .L021ecb_dec_one
469         movups  16(%esi),%xmm3
470         je      .L022ecb_dec_two
471         movups  32(%esi),%xmm4
472         cmpl    $64,%eax
473         jb      .L023ecb_dec_three
474         movups  48(%esi),%xmm5
475         je      .L024ecb_dec_four
476         movups  64(%esi),%xmm6
477         xorps   %xmm7,%xmm7
478         call    _aesni_decrypt6
479         movups  %xmm2,(%edi)
480         movups  %xmm3,16(%edi)
481         movups  %xmm4,32(%edi)
482         movups  %xmm5,48(%edi)
483         movups  %xmm6,64(%edi)
484         jmp     .L008ecb_ret
485 .align  16
486 .L021ecb_dec_one:
487         movups  (%edx),%xmm0
488         movups  16(%edx),%xmm1
489         leal    32(%edx),%edx
490         xorps   %xmm0,%xmm2
491 .L025dec1_loop_4:
492 .byte   102,15,56,222,209
493         decl    %ecx
494         movups  (%edx),%xmm1
495         leal    16(%edx),%edx
496         jnz     .L025dec1_loop_4
497 .byte   102,15,56,223,209
498         movups  %xmm2,(%edi)
499         jmp     .L008ecb_ret
500 .align  16
501 .L022ecb_dec_two:
502         xorps   %xmm4,%xmm4
503         call    _aesni_decrypt3
504         movups  %xmm2,(%edi)
505         movups  %xmm3,16(%edi)
506         jmp     .L008ecb_ret
507 .align  16
508 .L023ecb_dec_three:
509         call    _aesni_decrypt3
510         movups  %xmm2,(%edi)
511         movups  %xmm3,16(%edi)
512         movups  %xmm4,32(%edi)
513         jmp     .L008ecb_ret
514 .align  16
515 .L024ecb_dec_four:
516         call    _aesni_decrypt4
517         movups  %xmm2,(%edi)
518         movups  %xmm3,16(%edi)
519         movups  %xmm4,32(%edi)
520         movups  %xmm5,48(%edi)
521 .L008ecb_ret:
522         popl    %edi
523         popl    %esi
524         popl    %ebx
525         popl    %ebp
526         ret
527 .size   aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
528 .globl  aesni_ccm64_encrypt_blocks
529 .type   aesni_ccm64_encrypt_blocks,@function
530 .align  16
531 aesni_ccm64_encrypt_blocks:
532 .L_aesni_ccm64_encrypt_blocks_begin:
533         pushl   %ebp
534         pushl   %ebx
535         pushl   %esi
536         pushl   %edi
537         movl    20(%esp),%esi
538         movl    24(%esp),%edi
539         movl    28(%esp),%eax
540         movl    32(%esp),%edx
541         movl    36(%esp),%ebx
542         movl    40(%esp),%ecx
543         movl    %esp,%ebp
544         subl    $60,%esp
545         andl    $-16,%esp
546         movl    %ebp,48(%esp)
547         movdqu  (%ebx),%xmm7
548         movdqu  (%ecx),%xmm3
549         movl    240(%edx),%ecx
550         movl    $202182159,(%esp)
551         movl    $134810123,4(%esp)
552         movl    $67438087,8(%esp)
553         movl    $66051,12(%esp)
554         movl    $1,%ebx
555         xorl    %ebp,%ebp
556         movl    %ebx,16(%esp)
557         movl    %ebp,20(%esp)
558         movl    %ebp,24(%esp)
559         movl    %ebp,28(%esp)
560         shrl    $1,%ecx
561         leal    (%edx),%ebp
562         movdqa  (%esp),%xmm5
563         movdqa  %xmm7,%xmm2
564         movl    %ecx,%ebx
565 .byte   102,15,56,0,253
566 .L026ccm64_enc_outer:
567         movups  (%ebp),%xmm0
568         movl    %ebx,%ecx
569         movups  (%esi),%xmm6
570         xorps   %xmm0,%xmm2
571         movups  16(%ebp),%xmm1
572         xorps   %xmm6,%xmm0
573         leal    32(%ebp),%edx
574         xorps   %xmm0,%xmm3
575         movups  (%edx),%xmm0
576 .L027ccm64_enc2_loop:
577 .byte   102,15,56,220,209
578         decl    %ecx
579 .byte   102,15,56,220,217
580         movups  16(%edx),%xmm1
581 .byte   102,15,56,220,208
582         leal    32(%edx),%edx
583 .byte   102,15,56,220,216
584         movups  (%edx),%xmm0
585         jnz     .L027ccm64_enc2_loop
586 .byte   102,15,56,220,209
587 .byte   102,15,56,220,217
588         paddq   16(%esp),%xmm7
589 .byte   102,15,56,221,208
590 .byte   102,15,56,221,216
591         decl    %eax
592         leal    16(%esi),%esi
593         xorps   %xmm2,%xmm6
594         movdqa  %xmm7,%xmm2
595         movups  %xmm6,(%edi)
596         leal    16(%edi),%edi
597 .byte   102,15,56,0,213
598         jnz     .L026ccm64_enc_outer
599         movl    48(%esp),%esp
600         movl    40(%esp),%edi
601         movups  %xmm3,(%edi)
602         popl    %edi
603         popl    %esi
604         popl    %ebx
605         popl    %ebp
606         ret
607 .size   aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
608 .globl  aesni_ccm64_decrypt_blocks
609 .type   aesni_ccm64_decrypt_blocks,@function
610 .align  16
611 aesni_ccm64_decrypt_blocks:
612 .L_aesni_ccm64_decrypt_blocks_begin:
613         pushl   %ebp
614         pushl   %ebx
615         pushl   %esi
616         pushl   %edi
617         movl    20(%esp),%esi
618         movl    24(%esp),%edi
619         movl    28(%esp),%eax
620         movl    32(%esp),%edx
621         movl    36(%esp),%ebx
622         movl    40(%esp),%ecx
623         movl    %esp,%ebp
624         subl    $60,%esp
625         andl    $-16,%esp
626         movl    %ebp,48(%esp)
627         movdqu  (%ebx),%xmm7
628         movdqu  (%ecx),%xmm3
629         movl    240(%edx),%ecx
630         movl    $202182159,(%esp)
631         movl    $134810123,4(%esp)
632         movl    $67438087,8(%esp)
633         movl    $66051,12(%esp)
634         movl    $1,%ebx
635         xorl    %ebp,%ebp
636         movl    %ebx,16(%esp)
637         movl    %ebp,20(%esp)
638         movl    %ebp,24(%esp)
639         movl    %ebp,28(%esp)
640         movdqa  (%esp),%xmm5
641         movdqa  %xmm7,%xmm2
642         movl    %edx,%ebp
643         movl    %ecx,%ebx
644 .byte   102,15,56,0,253
645         movups  (%edx),%xmm0
646         movups  16(%edx),%xmm1
647         leal    32(%edx),%edx
648         xorps   %xmm0,%xmm2
649 .L028enc1_loop_5:
650 .byte   102,15,56,220,209
651         decl    %ecx
652         movups  (%edx),%xmm1
653         leal    16(%edx),%edx
654         jnz     .L028enc1_loop_5
655 .byte   102,15,56,221,209
656         movups  (%esi),%xmm6
657         paddq   16(%esp),%xmm7
658         leal    16(%esi),%esi
659         jmp     .L029ccm64_dec_outer
660 .align  16
661 .L029ccm64_dec_outer:
662         xorps   %xmm2,%xmm6
663         movdqa  %xmm7,%xmm2
664         movl    %ebx,%ecx
665         movups  %xmm6,(%edi)
666         leal    16(%edi),%edi
667 .byte   102,15,56,0,213
668         subl    $1,%eax
669         jz      .L030ccm64_dec_break
670         movups  (%ebp),%xmm0
671         shrl    $1,%ecx
672         movups  16(%ebp),%xmm1
673         xorps   %xmm0,%xmm6
674         leal    32(%ebp),%edx
675         xorps   %xmm0,%xmm2
676         xorps   %xmm6,%xmm3
677         movups  (%edx),%xmm0
678 .L031ccm64_dec2_loop:
679 .byte   102,15,56,220,209
680         decl    %ecx
681 .byte   102,15,56,220,217
682         movups  16(%edx),%xmm1
683 .byte   102,15,56,220,208
684         leal    32(%edx),%edx
685 .byte   102,15,56,220,216
686         movups  (%edx),%xmm0
687         jnz     .L031ccm64_dec2_loop
688         movups  (%esi),%xmm6
689         paddq   16(%esp),%xmm7
690 .byte   102,15,56,220,209
691 .byte   102,15,56,220,217
692         leal    16(%esi),%esi
693 .byte   102,15,56,221,208
694 .byte   102,15,56,221,216
695         jmp     .L029ccm64_dec_outer
696 .align  16
697 .L030ccm64_dec_break:
698         movl    %ebp,%edx
699         movups  (%edx),%xmm0
700         movups  16(%edx),%xmm1
701         xorps   %xmm0,%xmm6
702         leal    32(%edx),%edx
703         xorps   %xmm6,%xmm3
704 .L032enc1_loop_6:
705 .byte   102,15,56,220,217
706         decl    %ecx
707         movups  (%edx),%xmm1
708         leal    16(%edx),%edx
709         jnz     .L032enc1_loop_6
710 .byte   102,15,56,221,217
711         movl    48(%esp),%esp
712         movl    40(%esp),%edi
713         movups  %xmm3,(%edi)
714         popl    %edi
715         popl    %esi
716         popl    %ebx
717         popl    %ebp
718         ret
719 .size   aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
720 .globl  aesni_ctr32_encrypt_blocks
721 .type   aesni_ctr32_encrypt_blocks,@function
722 .align  16
723 aesni_ctr32_encrypt_blocks:
724 .L_aesni_ctr32_encrypt_blocks_begin:
725         pushl   %ebp
726         pushl   %ebx
727         pushl   %esi
728         pushl   %edi
729         movl    20(%esp),%esi
730         movl    24(%esp),%edi
731         movl    28(%esp),%eax
732         movl    32(%esp),%edx
733         movl    36(%esp),%ebx
734         movl    %esp,%ebp
735         subl    $88,%esp
736         andl    $-16,%esp
737         movl    %ebp,80(%esp)
738         cmpl    $1,%eax
739         je      .L033ctr32_one_shortcut
740         movdqu  (%ebx),%xmm7
741         movl    $202182159,(%esp)
742         movl    $134810123,4(%esp)
743         movl    $67438087,8(%esp)
744         movl    $66051,12(%esp)
745         movl    $6,%ecx
746         xorl    %ebp,%ebp
747         movl    %ecx,16(%esp)
748         movl    %ecx,20(%esp)
749         movl    %ecx,24(%esp)
750         movl    %ebp,28(%esp)
751 .byte   102,15,58,22,251,3
752 .byte   102,15,58,34,253,3
753         movl    240(%edx),%ecx
754         bswap   %ebx
755         pxor    %xmm1,%xmm1
756         pxor    %xmm0,%xmm0
757         movdqa  (%esp),%xmm2
758 .byte   102,15,58,34,203,0
759         leal    3(%ebx),%ebp
760 .byte   102,15,58,34,197,0
761         incl    %ebx
762 .byte   102,15,58,34,203,1
763         incl    %ebp
764 .byte   102,15,58,34,197,1
765         incl    %ebx
766 .byte   102,15,58,34,203,2
767         incl    %ebp
768 .byte   102,15,58,34,197,2
769         movdqa  %xmm1,48(%esp)
770 .byte   102,15,56,0,202
771         movdqa  %xmm0,64(%esp)
772 .byte   102,15,56,0,194
773         pshufd  $192,%xmm1,%xmm2
774         pshufd  $128,%xmm1,%xmm3
775         cmpl    $6,%eax
776         jb      .L034ctr32_tail
777         movdqa  %xmm7,32(%esp)
778         shrl    $1,%ecx
779         movl    %edx,%ebp
780         movl    %ecx,%ebx
781         subl    $6,%eax
782         jmp     .L035ctr32_loop6
783 .align  16
784 .L035ctr32_loop6:
785         pshufd  $64,%xmm1,%xmm4
786         movdqa  32(%esp),%xmm1
787         pshufd  $192,%xmm0,%xmm5
788         por     %xmm1,%xmm2
789         pshufd  $128,%xmm0,%xmm6
790         por     %xmm1,%xmm3
791         pshufd  $64,%xmm0,%xmm7
792         por     %xmm1,%xmm4
793         por     %xmm1,%xmm5
794         por     %xmm1,%xmm6
795         por     %xmm1,%xmm7
796         movups  (%ebp),%xmm0
797         movups  16(%ebp),%xmm1
798         leal    32(%ebp),%edx
799         decl    %ecx
800         pxor    %xmm0,%xmm2
801         pxor    %xmm0,%xmm3
802 .byte   102,15,56,220,209
803         pxor    %xmm0,%xmm4
804 .byte   102,15,56,220,217
805         pxor    %xmm0,%xmm5
806 .byte   102,15,56,220,225
807         pxor    %xmm0,%xmm6
808 .byte   102,15,56,220,233
809         pxor    %xmm0,%xmm7
810 .byte   102,15,56,220,241
811         movups  (%edx),%xmm0
812 .byte   102,15,56,220,249
813         call    .L_aesni_encrypt6_enter
814         movups  (%esi),%xmm1
815         movups  16(%esi),%xmm0
816         xorps   %xmm1,%xmm2
817         movups  32(%esi),%xmm1
818         xorps   %xmm0,%xmm3
819         movups  %xmm2,(%edi)
820         movdqa  16(%esp),%xmm0
821         xorps   %xmm1,%xmm4
822         movdqa  48(%esp),%xmm1
823         movups  %xmm3,16(%edi)
824         movups  %xmm4,32(%edi)
825         paddd   %xmm0,%xmm1
826         paddd   64(%esp),%xmm0
827         movdqa  (%esp),%xmm2
828         movups  48(%esi),%xmm3
829         movups  64(%esi),%xmm4
830         xorps   %xmm3,%xmm5
831         movups  80(%esi),%xmm3
832         leal    96(%esi),%esi
833         movdqa  %xmm1,48(%esp)
834 .byte   102,15,56,0,202
835         xorps   %xmm4,%xmm6
836         movups  %xmm5,48(%edi)
837         xorps   %xmm3,%xmm7
838         movdqa  %xmm0,64(%esp)
839 .byte   102,15,56,0,194
840         movups  %xmm6,64(%edi)
841         pshufd  $192,%xmm1,%xmm2
842         movups  %xmm7,80(%edi)
843         leal    96(%edi),%edi
844         movl    %ebx,%ecx
845         pshufd  $128,%xmm1,%xmm3
846         subl    $6,%eax
847         jnc     .L035ctr32_loop6
848         addl    $6,%eax
849         jz      .L036ctr32_ret
850         movl    %ebp,%edx
851         leal    1(,%ecx,2),%ecx
852         movdqa  32(%esp),%xmm7
853 .L034ctr32_tail:
854         por     %xmm7,%xmm2
855         cmpl    $2,%eax
856         jb      .L037ctr32_one
857         pshufd  $64,%xmm1,%xmm4
858         por     %xmm7,%xmm3
859         je      .L038ctr32_two
860         pshufd  $192,%xmm0,%xmm5
861         por     %xmm7,%xmm4
862         cmpl    $4,%eax
863         jb      .L039ctr32_three
864         pshufd  $128,%xmm0,%xmm6
865         por     %xmm7,%xmm5
866         je      .L040ctr32_four
867         por     %xmm7,%xmm6
868         call    _aesni_encrypt6
869         movups  (%esi),%xmm1
870         movups  16(%esi),%xmm0
871         xorps   %xmm1,%xmm2
872         movups  32(%esi),%xmm1
873         xorps   %xmm0,%xmm3
874         movups  48(%esi),%xmm0
875         xorps   %xmm1,%xmm4
876         movups  64(%esi),%xmm1
877         xorps   %xmm0,%xmm5
878         movups  %xmm2,(%edi)
879         xorps   %xmm1,%xmm6
880         movups  %xmm3,16(%edi)
881         movups  %xmm4,32(%edi)
882         movups  %xmm5,48(%edi)
883         movups  %xmm6,64(%edi)
884         jmp     .L036ctr32_ret
885 .align  16
886 .L033ctr32_one_shortcut:
887         movups  (%ebx),%xmm2
888         movl    240(%edx),%ecx
889 .L037ctr32_one:
890         movups  (%edx),%xmm0
891         movups  16(%edx),%xmm1
892         leal    32(%edx),%edx
893         xorps   %xmm0,%xmm2
894 .L041enc1_loop_7:
895 .byte   102,15,56,220,209
896         decl    %ecx
897         movups  (%edx),%xmm1
898         leal    16(%edx),%edx
899         jnz     .L041enc1_loop_7
900 .byte   102,15,56,221,209
901         movups  (%esi),%xmm6
902         xorps   %xmm2,%xmm6
903         movups  %xmm6,(%edi)
904         jmp     .L036ctr32_ret
905 .align  16
906 .L038ctr32_two:
907         call    _aesni_encrypt3
908         movups  (%esi),%xmm5
909         movups  16(%esi),%xmm6
910         xorps   %xmm5,%xmm2
911         xorps   %xmm6,%xmm3
912         movups  %xmm2,(%edi)
913         movups  %xmm3,16(%edi)
914         jmp     .L036ctr32_ret
915 .align  16
916 .L039ctr32_three:
917         call    _aesni_encrypt3
918         movups  (%esi),%xmm5
919         movups  16(%esi),%xmm6
920         xorps   %xmm5,%xmm2
921         movups  32(%esi),%xmm7
922         xorps   %xmm6,%xmm3
923         movups  %xmm2,(%edi)
924         xorps   %xmm7,%xmm4
925         movups  %xmm3,16(%edi)
926         movups  %xmm4,32(%edi)
927         jmp     .L036ctr32_ret
928 .align  16
929 .L040ctr32_four:
930         call    _aesni_encrypt4
931         movups  (%esi),%xmm6
932         movups  16(%esi),%xmm7
933         movups  32(%esi),%xmm1
934         xorps   %xmm6,%xmm2
935         movups  48(%esi),%xmm0
936         xorps   %xmm7,%xmm3
937         movups  %xmm2,(%edi)
938         xorps   %xmm1,%xmm4
939         movups  %xmm3,16(%edi)
940         xorps   %xmm0,%xmm5
941         movups  %xmm4,32(%edi)
942         movups  %xmm5,48(%edi)
943 .L036ctr32_ret:
944         movl    80(%esp),%esp
945         popl    %edi
946         popl    %esi
947         popl    %ebx
948         popl    %ebp
949         ret
950 .size   aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
951 .globl  aesni_xts_encrypt
952 .type   aesni_xts_encrypt,@function
953 .align  16
954 aesni_xts_encrypt:
955 .L_aesni_xts_encrypt_begin:
956         pushl   %ebp
957         pushl   %ebx
958         pushl   %esi
959         pushl   %edi
960         movl    36(%esp),%edx
961         movl    40(%esp),%esi
962         movl    240(%edx),%ecx
963         movups  (%esi),%xmm2
964         movups  (%edx),%xmm0
965         movups  16(%edx),%xmm1
966         leal    32(%edx),%edx
967         xorps   %xmm0,%xmm2
968 .L042enc1_loop_8:
969 .byte   102,15,56,220,209
970         decl    %ecx
971         movups  (%edx),%xmm1
972         leal    16(%edx),%edx
973         jnz     .L042enc1_loop_8
974 .byte   102,15,56,221,209
975         movl    20(%esp),%esi
976         movl    24(%esp),%edi
977         movl    28(%esp),%eax
978         movl    32(%esp),%edx
979         movl    %esp,%ebp
980         subl    $120,%esp
981         movl    240(%edx),%ecx
982         andl    $-16,%esp
983         movl    $135,96(%esp)
984         movl    $0,100(%esp)
985         movl    $1,104(%esp)
986         movl    $0,108(%esp)
987         movl    %eax,112(%esp)
988         movl    %ebp,116(%esp)
989         movdqa  %xmm2,%xmm1
990         pxor    %xmm0,%xmm0
991         movdqa  96(%esp),%xmm3
992         pcmpgtd %xmm1,%xmm0
993         andl    $-16,%eax
994         movl    %edx,%ebp
995         movl    %ecx,%ebx
996         subl    $96,%eax
997         jc      .L043xts_enc_short
998         shrl    $1,%ecx
999         movl    %ecx,%ebx
1000         jmp     .L044xts_enc_loop6
1001 .align  16
1002 .L044xts_enc_loop6:
1003         pshufd  $19,%xmm0,%xmm2
1004         pxor    %xmm0,%xmm0
1005         movdqa  %xmm1,(%esp)
1006         paddq   %xmm1,%xmm1
1007         pand    %xmm3,%xmm2
1008         pcmpgtd %xmm1,%xmm0
1009         pxor    %xmm2,%xmm1
1010         pshufd  $19,%xmm0,%xmm2
1011         pxor    %xmm0,%xmm0
1012         movdqa  %xmm1,16(%esp)
1013         paddq   %xmm1,%xmm1
1014         pand    %xmm3,%xmm2
1015         pcmpgtd %xmm1,%xmm0
1016         pxor    %xmm2,%xmm1
1017         pshufd  $19,%xmm0,%xmm2
1018         pxor    %xmm0,%xmm0
1019         movdqa  %xmm1,32(%esp)
1020         paddq   %xmm1,%xmm1
1021         pand    %xmm3,%xmm2
1022         pcmpgtd %xmm1,%xmm0
1023         pxor    %xmm2,%xmm1
1024         pshufd  $19,%xmm0,%xmm2
1025         pxor    %xmm0,%xmm0
1026         movdqa  %xmm1,48(%esp)
1027         paddq   %xmm1,%xmm1
1028         pand    %xmm3,%xmm2
1029         pcmpgtd %xmm1,%xmm0
1030         pxor    %xmm2,%xmm1
1031         pshufd  $19,%xmm0,%xmm7
1032         movdqa  %xmm1,64(%esp)
1033         paddq   %xmm1,%xmm1
1034         movups  (%ebp),%xmm0
1035         pand    %xmm3,%xmm7
1036         movups  (%esi),%xmm2
1037         pxor    %xmm1,%xmm7
1038         movdqu  16(%esi),%xmm3
1039         xorps   %xmm0,%xmm2
1040         movdqu  32(%esi),%xmm4
1041         pxor    %xmm0,%xmm3
1042         movdqu  48(%esi),%xmm5
1043         pxor    %xmm0,%xmm4
1044         movdqu  64(%esi),%xmm6
1045         pxor    %xmm0,%xmm5
1046         movdqu  80(%esi),%xmm1
1047         pxor    %xmm0,%xmm6
1048         leal    96(%esi),%esi
1049         pxor    (%esp),%xmm2
1050         movdqa  %xmm7,80(%esp)
1051         pxor    %xmm1,%xmm7
1052         movups  16(%ebp),%xmm1
1053         leal    32(%ebp),%edx
1054         pxor    16(%esp),%xmm3
1055 .byte   102,15,56,220,209
1056         pxor    32(%esp),%xmm4
1057 .byte   102,15,56,220,217
1058         pxor    48(%esp),%xmm5
1059         decl    %ecx
1060 .byte   102,15,56,220,225
1061         pxor    64(%esp),%xmm6
1062 .byte   102,15,56,220,233
1063         pxor    %xmm0,%xmm7
1064 .byte   102,15,56,220,241
1065         movups  (%edx),%xmm0
1066 .byte   102,15,56,220,249
1067         call    .L_aesni_encrypt6_enter
1068         movdqa  80(%esp),%xmm1
1069         pxor    %xmm0,%xmm0
1070         xorps   (%esp),%xmm2
1071         pcmpgtd %xmm1,%xmm0
1072         xorps   16(%esp),%xmm3
1073         movups  %xmm2,(%edi)
1074         xorps   32(%esp),%xmm4
1075         movups  %xmm3,16(%edi)
1076         xorps   48(%esp),%xmm5
1077         movups  %xmm4,32(%edi)
1078         xorps   64(%esp),%xmm6
1079         movups  %xmm5,48(%edi)
1080         xorps   %xmm1,%xmm7
1081         movups  %xmm6,64(%edi)
1082         pshufd  $19,%xmm0,%xmm2
1083         movups  %xmm7,80(%edi)
1084         leal    96(%edi),%edi
1085         movdqa  96(%esp),%xmm3
1086         pxor    %xmm0,%xmm0
1087         paddq   %xmm1,%xmm1
1088         pand    %xmm3,%xmm2
1089         pcmpgtd %xmm1,%xmm0
1090         movl    %ebx,%ecx
1091         pxor    %xmm2,%xmm1
1092         subl    $96,%eax
1093         jnc     .L044xts_enc_loop6
1094         leal    1(,%ecx,2),%ecx
1095         movl    %ebp,%edx
1096         movl    %ecx,%ebx
1097 .L043xts_enc_short:
1098         addl    $96,%eax
1099         jz      .L045xts_enc_done6x
1100         movdqa  %xmm1,%xmm5
1101         cmpl    $32,%eax
1102         jb      .L046xts_enc_one
1103         pshufd  $19,%xmm0,%xmm2
1104         pxor    %xmm0,%xmm0
1105         paddq   %xmm1,%xmm1
1106         pand    %xmm3,%xmm2
1107         pcmpgtd %xmm1,%xmm0
1108         pxor    %xmm2,%xmm1
1109         je      .L047xts_enc_two
1110         pshufd  $19,%xmm0,%xmm2
1111         pxor    %xmm0,%xmm0
1112         movdqa  %xmm1,%xmm6
1113         paddq   %xmm1,%xmm1
1114         pand    %xmm3,%xmm2
1115         pcmpgtd %xmm1,%xmm0
1116         pxor    %xmm2,%xmm1
1117         cmpl    $64,%eax
1118         jb      .L048xts_enc_three
1119         pshufd  $19,%xmm0,%xmm2
1120         pxor    %xmm0,%xmm0
1121         movdqa  %xmm1,%xmm7
1122         paddq   %xmm1,%xmm1
1123         pand    %xmm3,%xmm2
1124         pcmpgtd %xmm1,%xmm0
1125         pxor    %xmm2,%xmm1
1126         movdqa  %xmm5,(%esp)
1127         movdqa  %xmm6,16(%esp)
1128         je      .L049xts_enc_four
1129         movdqa  %xmm7,32(%esp)
1130         pshufd  $19,%xmm0,%xmm7
1131         movdqa  %xmm1,48(%esp)
1132         paddq   %xmm1,%xmm1
1133         pand    %xmm3,%xmm7
1134         pxor    %xmm1,%xmm7
1135         movdqu  (%esi),%xmm2
1136         movdqu  16(%esi),%xmm3
1137         movdqu  32(%esi),%xmm4
1138         pxor    (%esp),%xmm2
1139         movdqu  48(%esi),%xmm5
1140         pxor    16(%esp),%xmm3
1141         movdqu  64(%esi),%xmm6
1142         pxor    32(%esp),%xmm4
1143         leal    80(%esi),%esi
1144         pxor    48(%esp),%xmm5
1145         movdqa  %xmm7,64(%esp)
1146         pxor    %xmm7,%xmm6
1147         call    _aesni_encrypt6
1148         movaps  64(%esp),%xmm1
1149         xorps   (%esp),%xmm2
1150         xorps   16(%esp),%xmm3
1151         xorps   32(%esp),%xmm4
1152         movups  %xmm2,(%edi)
1153         xorps   48(%esp),%xmm5
1154         movups  %xmm3,16(%edi)
1155         xorps   %xmm1,%xmm6
1156         movups  %xmm4,32(%edi)
1157         movups  %xmm5,48(%edi)
1158         movups  %xmm6,64(%edi)
1159         leal    80(%edi),%edi
1160         jmp     .L050xts_enc_done
1161 .align  16
1162 .L046xts_enc_one:
1163         movups  (%esi),%xmm2
1164         leal    16(%esi),%esi
1165         xorps   %xmm5,%xmm2
1166         movups  (%edx),%xmm0
1167         movups  16(%edx),%xmm1
1168         leal    32(%edx),%edx
1169         xorps   %xmm0,%xmm2
1170 .L051enc1_loop_9:
1171 .byte   102,15,56,220,209
1172         decl    %ecx
1173         movups  (%edx),%xmm1
1174         leal    16(%edx),%edx
1175         jnz     .L051enc1_loop_9
1176 .byte   102,15,56,221,209
1177         xorps   %xmm5,%xmm2
1178         movups  %xmm2,(%edi)
1179         leal    16(%edi),%edi
1180         movdqa  %xmm5,%xmm1
1181         jmp     .L050xts_enc_done
1182 .align  16
1183 .L047xts_enc_two:
1184         movaps  %xmm1,%xmm6
1185         movups  (%esi),%xmm2
1186         movups  16(%esi),%xmm3
1187         leal    32(%esi),%esi
1188         xorps   %xmm5,%xmm2
1189         xorps   %xmm6,%xmm3
1190         xorps   %xmm4,%xmm4
1191         call    _aesni_encrypt3
1192         xorps   %xmm5,%xmm2
1193         xorps   %xmm6,%xmm3
1194         movups  %xmm2,(%edi)
1195         movups  %xmm3,16(%edi)
1196         leal    32(%edi),%edi
1197         movdqa  %xmm6,%xmm1
1198         jmp     .L050xts_enc_done
1199 .align  16
1200 .L048xts_enc_three:
1201         movaps  %xmm1,%xmm7
1202         movups  (%esi),%xmm2
1203         movups  16(%esi),%xmm3
1204         movups  32(%esi),%xmm4
1205         leal    48(%esi),%esi
1206         xorps   %xmm5,%xmm2
1207         xorps   %xmm6,%xmm3
1208         xorps   %xmm7,%xmm4
1209         call    _aesni_encrypt3
1210         xorps   %xmm5,%xmm2
1211         xorps   %xmm6,%xmm3
1212         xorps   %xmm7,%xmm4
1213         movups  %xmm2,(%edi)
1214         movups  %xmm3,16(%edi)
1215         movups  %xmm4,32(%edi)
1216         leal    48(%edi),%edi
1217         movdqa  %xmm7,%xmm1
1218         jmp     .L050xts_enc_done
1219 .align  16
1220 .L049xts_enc_four:
1221         movaps  %xmm1,%xmm6
1222         movups  (%esi),%xmm2
1223         movups  16(%esi),%xmm3
1224         movups  32(%esi),%xmm4
1225         xorps   (%esp),%xmm2
1226         movups  48(%esi),%xmm5
1227         leal    64(%esi),%esi
1228         xorps   16(%esp),%xmm3
1229         xorps   %xmm7,%xmm4
1230         xorps   %xmm6,%xmm5
1231         call    _aesni_encrypt4
1232         xorps   (%esp),%xmm2
1233         xorps   16(%esp),%xmm3
1234         xorps   %xmm7,%xmm4
1235         movups  %xmm2,(%edi)
1236         xorps   %xmm6,%xmm5
1237         movups  %xmm3,16(%edi)
1238         movups  %xmm4,32(%edi)
1239         movups  %xmm5,48(%edi)
1240         leal    64(%edi),%edi
1241         movdqa  %xmm6,%xmm1
1242         jmp     .L050xts_enc_done
1243 .align  16
1244 .L045xts_enc_done6x:
1245         movl    112(%esp),%eax
1246         andl    $15,%eax
1247         jz      .L052xts_enc_ret
1248         movdqa  %xmm1,%xmm5
1249         movl    %eax,112(%esp)
1250         jmp     .L053xts_enc_steal
1251 .align  16
1252 .L050xts_enc_done:
1253         movl    112(%esp),%eax
1254         pxor    %xmm0,%xmm0
1255         andl    $15,%eax
1256         jz      .L052xts_enc_ret
1257         pcmpgtd %xmm1,%xmm0
1258         movl    %eax,112(%esp)
1259         pshufd  $19,%xmm0,%xmm5
1260         paddq   %xmm1,%xmm1
1261         pand    96(%esp),%xmm5
1262         pxor    %xmm1,%xmm5
1263 .L053xts_enc_steal:
1264         movzbl  (%esi),%ecx
1265         movzbl  -16(%edi),%edx
1266         leal    1(%esi),%esi
1267         movb    %cl,-16(%edi)
1268         movb    %dl,(%edi)
1269         leal    1(%edi),%edi
1270         subl    $1,%eax
1271         jnz     .L053xts_enc_steal
1272         subl    112(%esp),%edi
1273         movl    %ebp,%edx
1274         movl    %ebx,%ecx
1275         movups  -16(%edi),%xmm2
1276         xorps   %xmm5,%xmm2
1277         movups  (%edx),%xmm0
1278         movups  16(%edx),%xmm1
1279         leal    32(%edx),%edx
1280         xorps   %xmm0,%xmm2
1281 .L054enc1_loop_10:
1282 .byte   102,15,56,220,209
1283         decl    %ecx
1284         movups  (%edx),%xmm1
1285         leal    16(%edx),%edx
1286         jnz     .L054enc1_loop_10
1287 .byte   102,15,56,221,209
1288         xorps   %xmm5,%xmm2
1289         movups  %xmm2,-16(%edi)
1290 .L052xts_enc_ret:
1291         movl    116(%esp),%esp
1292         popl    %edi
1293         popl    %esi
1294         popl    %ebx
1295         popl    %ebp
1296         ret
1297 .size   aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
1298 .globl  aesni_xts_decrypt
1299 .type   aesni_xts_decrypt,@function
1300 .align  16
1301 aesni_xts_decrypt:
1302 .L_aesni_xts_decrypt_begin:
1303         pushl   %ebp
1304         pushl   %ebx
1305         pushl   %esi
1306         pushl   %edi
1307         movl    36(%esp),%edx
1308         movl    40(%esp),%esi
1309         movl    240(%edx),%ecx
1310         movups  (%esi),%xmm2
1311         movups  (%edx),%xmm0
1312         movups  16(%edx),%xmm1
1313         leal    32(%edx),%edx
1314         xorps   %xmm0,%xmm2
1315 .L055enc1_loop_11:
1316 .byte   102,15,56,220,209
1317         decl    %ecx
1318         movups  (%edx),%xmm1
1319         leal    16(%edx),%edx
1320         jnz     .L055enc1_loop_11
1321 .byte   102,15,56,221,209
1322         movl    20(%esp),%esi
1323         movl    24(%esp),%edi
1324         movl    28(%esp),%eax
1325         movl    32(%esp),%edx
1326         movl    %esp,%ebp
1327         subl    $120,%esp
1328         andl    $-16,%esp
1329         xorl    %ebx,%ebx
1330         testl   $15,%eax
1331         setnz   %bl
1332         shll    $4,%ebx
1333         subl    %ebx,%eax
1334         movl    $135,96(%esp)
1335         movl    $0,100(%esp)
1336         movl    $1,104(%esp)
1337         movl    $0,108(%esp)
1338         movl    %eax,112(%esp)
1339         movl    %ebp,116(%esp)
1340         movl    240(%edx),%ecx
1341         movl    %edx,%ebp
1342         movl    %ecx,%ebx
1343         movdqa  %xmm2,%xmm1
1344         pxor    %xmm0,%xmm0
1345         movdqa  96(%esp),%xmm3
1346         pcmpgtd %xmm1,%xmm0
1347         andl    $-16,%eax
1348         subl    $96,%eax
1349         jc      .L056xts_dec_short
1350         shrl    $1,%ecx
1351         movl    %ecx,%ebx
1352         jmp     .L057xts_dec_loop6
1353 .align  16
1354 .L057xts_dec_loop6:
1355         pshufd  $19,%xmm0,%xmm2
1356         pxor    %xmm0,%xmm0
1357         movdqa  %xmm1,(%esp)
1358         paddq   %xmm1,%xmm1
1359         pand    %xmm3,%xmm2
1360         pcmpgtd %xmm1,%xmm0
1361         pxor    %xmm2,%xmm1
1362         pshufd  $19,%xmm0,%xmm2
1363         pxor    %xmm0,%xmm0
1364         movdqa  %xmm1,16(%esp)
1365         paddq   %xmm1,%xmm1
1366         pand    %xmm3,%xmm2
1367         pcmpgtd %xmm1,%xmm0
1368         pxor    %xmm2,%xmm1
1369         pshufd  $19,%xmm0,%xmm2
1370         pxor    %xmm0,%xmm0
1371         movdqa  %xmm1,32(%esp)
1372         paddq   %xmm1,%xmm1
1373         pand    %xmm3,%xmm2
1374         pcmpgtd %xmm1,%xmm0
1375         pxor    %xmm2,%xmm1
1376         pshufd  $19,%xmm0,%xmm2
1377         pxor    %xmm0,%xmm0
1378         movdqa  %xmm1,48(%esp)
1379         paddq   %xmm1,%xmm1
1380         pand    %xmm3,%xmm2
1381         pcmpgtd %xmm1,%xmm0
1382         pxor    %xmm2,%xmm1
1383         pshufd  $19,%xmm0,%xmm7
1384         movdqa  %xmm1,64(%esp)
1385         paddq   %xmm1,%xmm1
1386         movups  (%ebp),%xmm0
1387         pand    %xmm3,%xmm7
1388         movups  (%esi),%xmm2
1389         pxor    %xmm1,%xmm7
1390         movdqu  16(%esi),%xmm3
1391         xorps   %xmm0,%xmm2
1392         movdqu  32(%esi),%xmm4
1393         pxor    %xmm0,%xmm3
1394         movdqu  48(%esi),%xmm5
1395         pxor    %xmm0,%xmm4
1396         movdqu  64(%esi),%xmm6
1397         pxor    %xmm0,%xmm5
1398         movdqu  80(%esi),%xmm1
1399         pxor    %xmm0,%xmm6
1400         leal    96(%esi),%esi
1401         pxor    (%esp),%xmm2
1402         movdqa  %xmm7,80(%esp)
1403         pxor    %xmm1,%xmm7
1404         movups  16(%ebp),%xmm1
1405         leal    32(%ebp),%edx
1406         pxor    16(%esp),%xmm3
1407 .byte   102,15,56,222,209
1408         pxor    32(%esp),%xmm4
1409 .byte   102,15,56,222,217
1410         pxor    48(%esp),%xmm5
1411         decl    %ecx
1412 .byte   102,15,56,222,225
1413         pxor    64(%esp),%xmm6
1414 .byte   102,15,56,222,233
1415         pxor    %xmm0,%xmm7
1416 .byte   102,15,56,222,241
1417         movups  (%edx),%xmm0
1418 .byte   102,15,56,222,249
1419         call    .L_aesni_decrypt6_enter
1420         movdqa  80(%esp),%xmm1
1421         pxor    %xmm0,%xmm0
1422         xorps   (%esp),%xmm2
1423         pcmpgtd %xmm1,%xmm0
1424         xorps   16(%esp),%xmm3
1425         movups  %xmm2,(%edi)
1426         xorps   32(%esp),%xmm4
1427         movups  %xmm3,16(%edi)
1428         xorps   48(%esp),%xmm5
1429         movups  %xmm4,32(%edi)
1430         xorps   64(%esp),%xmm6
1431         movups  %xmm5,48(%edi)
1432         xorps   %xmm1,%xmm7
1433         movups  %xmm6,64(%edi)
1434         pshufd  $19,%xmm0,%xmm2
1435         movups  %xmm7,80(%edi)
1436         leal    96(%edi),%edi
1437         movdqa  96(%esp),%xmm3
1438         pxor    %xmm0,%xmm0
1439         paddq   %xmm1,%xmm1
1440         pand    %xmm3,%xmm2
1441         pcmpgtd %xmm1,%xmm0
1442         movl    %ebx,%ecx
1443         pxor    %xmm2,%xmm1
1444         subl    $96,%eax
1445         jnc     .L057xts_dec_loop6
1446         leal    1(,%ecx,2),%ecx
1447         movl    %ebp,%edx
1448         movl    %ecx,%ebx
1449 .L056xts_dec_short:
1450         addl    $96,%eax
1451         jz      .L058xts_dec_done6x
1452         movdqa  %xmm1,%xmm5
1453         cmpl    $32,%eax
1454         jb      .L059xts_dec_one
1455         pshufd  $19,%xmm0,%xmm2
1456         pxor    %xmm0,%xmm0
1457         paddq   %xmm1,%xmm1
1458         pand    %xmm3,%xmm2
1459         pcmpgtd %xmm1,%xmm0
1460         pxor    %xmm2,%xmm1
1461         je      .L060xts_dec_two
1462         pshufd  $19,%xmm0,%xmm2
1463         pxor    %xmm0,%xmm0
1464         movdqa  %xmm1,%xmm6
1465         paddq   %xmm1,%xmm1
1466         pand    %xmm3,%xmm2
1467         pcmpgtd %xmm1,%xmm0
1468         pxor    %xmm2,%xmm1
1469         cmpl    $64,%eax
1470         jb      .L061xts_dec_three
1471         pshufd  $19,%xmm0,%xmm2
1472         pxor    %xmm0,%xmm0
1473         movdqa  %xmm1,%xmm7
1474         paddq   %xmm1,%xmm1
1475         pand    %xmm3,%xmm2
1476         pcmpgtd %xmm1,%xmm0
1477         pxor    %xmm2,%xmm1
1478         movdqa  %xmm5,(%esp)
1479         movdqa  %xmm6,16(%esp)
1480         je      .L062xts_dec_four
1481         movdqa  %xmm7,32(%esp)
1482         pshufd  $19,%xmm0,%xmm7
1483         movdqa  %xmm1,48(%esp)
1484         paddq   %xmm1,%xmm1
1485         pand    %xmm3,%xmm7
1486         pxor    %xmm1,%xmm7
1487         movdqu  (%esi),%xmm2
1488         movdqu  16(%esi),%xmm3
1489         movdqu  32(%esi),%xmm4
1490         pxor    (%esp),%xmm2
1491         movdqu  48(%esi),%xmm5
1492         pxor    16(%esp),%xmm3
1493         movdqu  64(%esi),%xmm6
1494         pxor    32(%esp),%xmm4
1495         leal    80(%esi),%esi
1496         pxor    48(%esp),%xmm5
1497         movdqa  %xmm7,64(%esp)
1498         pxor    %xmm7,%xmm6
1499         call    _aesni_decrypt6
1500         movaps  64(%esp),%xmm1
1501         xorps   (%esp),%xmm2
1502         xorps   16(%esp),%xmm3
1503         xorps   32(%esp),%xmm4
1504         movups  %xmm2,(%edi)
1505         xorps   48(%esp),%xmm5
1506         movups  %xmm3,16(%edi)
1507         xorps   %xmm1,%xmm6
1508         movups  %xmm4,32(%edi)
1509         movups  %xmm5,48(%edi)
1510         movups  %xmm6,64(%edi)
1511         leal    80(%edi),%edi
1512         jmp     .L063xts_dec_done
1513 .align  16
1514 .L059xts_dec_one:
1515         movups  (%esi),%xmm2
1516         leal    16(%esi),%esi
1517         xorps   %xmm5,%xmm2
1518         movups  (%edx),%xmm0
1519         movups  16(%edx),%xmm1
1520         leal    32(%edx),%edx
1521         xorps   %xmm0,%xmm2
1522 .L064dec1_loop_12:
1523 .byte   102,15,56,222,209
1524         decl    %ecx
1525         movups  (%edx),%xmm1
1526         leal    16(%edx),%edx
1527         jnz     .L064dec1_loop_12
1528 .byte   102,15,56,223,209
1529         xorps   %xmm5,%xmm2
1530         movups  %xmm2,(%edi)
1531         leal    16(%edi),%edi
1532         movdqa  %xmm5,%xmm1
1533         jmp     .L063xts_dec_done
1534 .align  16
1535 .L060xts_dec_two:
1536         movaps  %xmm1,%xmm6
1537         movups  (%esi),%xmm2
1538         movups  16(%esi),%xmm3
1539         leal    32(%esi),%esi
1540         xorps   %xmm5,%xmm2
1541         xorps   %xmm6,%xmm3
1542         call    _aesni_decrypt3
1543         xorps   %xmm5,%xmm2
1544         xorps   %xmm6,%xmm3
1545         movups  %xmm2,(%edi)
1546         movups  %xmm3,16(%edi)
1547         leal    32(%edi),%edi
1548         movdqa  %xmm6,%xmm1
1549         jmp     .L063xts_dec_done
1550 .align  16
1551 .L061xts_dec_three:
1552         movaps  %xmm1,%xmm7
1553         movups  (%esi),%xmm2
1554         movups  16(%esi),%xmm3
1555         movups  32(%esi),%xmm4
1556         leal    48(%esi),%esi
1557         xorps   %xmm5,%xmm2
1558         xorps   %xmm6,%xmm3
1559         xorps   %xmm7,%xmm4
1560         call    _aesni_decrypt3
1561         xorps   %xmm5,%xmm2
1562         xorps   %xmm6,%xmm3
1563         xorps   %xmm7,%xmm4
1564         movups  %xmm2,(%edi)
1565         movups  %xmm3,16(%edi)
1566         movups  %xmm4,32(%edi)
1567         leal    48(%edi),%edi
1568         movdqa  %xmm7,%xmm1
1569         jmp     .L063xts_dec_done
1570 .align  16
1571 .L062xts_dec_four:
1572         movaps  %xmm1,%xmm6
1573         movups  (%esi),%xmm2
1574         movups  16(%esi),%xmm3
1575         movups  32(%esi),%xmm4
1576         xorps   (%esp),%xmm2
1577         movups  48(%esi),%xmm5
1578         leal    64(%esi),%esi
1579         xorps   16(%esp),%xmm3
1580         xorps   %xmm7,%xmm4
1581         xorps   %xmm6,%xmm5
1582         call    _aesni_decrypt4
1583         xorps   (%esp),%xmm2
1584         xorps   16(%esp),%xmm3
1585         xorps   %xmm7,%xmm4
1586         movups  %xmm2,(%edi)
1587         xorps   %xmm6,%xmm5
1588         movups  %xmm3,16(%edi)
1589         movups  %xmm4,32(%edi)
1590         movups  %xmm5,48(%edi)
1591         leal    64(%edi),%edi
1592         movdqa  %xmm6,%xmm1
1593         jmp     .L063xts_dec_done
1594 .align  16
1595 .L058xts_dec_done6x:
1596         movl    112(%esp),%eax
1597         andl    $15,%eax
1598         jz      .L065xts_dec_ret
1599         movl    %eax,112(%esp)
1600         jmp     .L066xts_dec_only_one_more
1601 .align  16
1602 .L063xts_dec_done:
1603         movl    112(%esp),%eax
1604         pxor    %xmm0,%xmm0
1605         andl    $15,%eax
1606         jz      .L065xts_dec_ret
1607         pcmpgtd %xmm1,%xmm0
1608         movl    %eax,112(%esp)
1609         pshufd  $19,%xmm0,%xmm2
1610         pxor    %xmm0,%xmm0
1611         movdqa  96(%esp),%xmm3
1612         paddq   %xmm1,%xmm1
1613         pand    %xmm3,%xmm2
1614         pcmpgtd %xmm1,%xmm0
1615         pxor    %xmm2,%xmm1
1616 .L066xts_dec_only_one_more:
1617         pshufd  $19,%xmm0,%xmm5
1618         movdqa  %xmm1,%xmm6
1619         paddq   %xmm1,%xmm1
1620         pand    %xmm3,%xmm5
1621         pxor    %xmm1,%xmm5
1622         movl    %ebp,%edx
1623         movl    %ebx,%ecx
1624         movups  (%esi),%xmm2
1625         xorps   %xmm5,%xmm2
1626         movups  (%edx),%xmm0
1627         movups  16(%edx),%xmm1
1628         leal    32(%edx),%edx
1629         xorps   %xmm0,%xmm2
1630 .L067dec1_loop_13:
1631 .byte   102,15,56,222,209
1632         decl    %ecx
1633         movups  (%edx),%xmm1
1634         leal    16(%edx),%edx
1635         jnz     .L067dec1_loop_13
1636 .byte   102,15,56,223,209
1637         xorps   %xmm5,%xmm2
1638         movups  %xmm2,(%edi)
1639 .L068xts_dec_steal:
1640         movzbl  16(%esi),%ecx
1641         movzbl  (%edi),%edx
1642         leal    1(%esi),%esi
1643         movb    %cl,(%edi)
1644         movb    %dl,16(%edi)
1645         leal    1(%edi),%edi
1646         subl    $1,%eax
1647         jnz     .L068xts_dec_steal
1648         subl    112(%esp),%edi
1649         movl    %ebp,%edx
1650         movl    %ebx,%ecx
1651         movups  (%edi),%xmm2
1652         xorps   %xmm6,%xmm2
1653         movups  (%edx),%xmm0
1654         movups  16(%edx),%xmm1
1655         leal    32(%edx),%edx
1656         xorps   %xmm0,%xmm2
1657 .L069dec1_loop_14:
1658 .byte   102,15,56,222,209
1659         decl    %ecx
1660         movups  (%edx),%xmm1
1661         leal    16(%edx),%edx
1662         jnz     .L069dec1_loop_14
1663 .byte   102,15,56,223,209
1664         xorps   %xmm6,%xmm2
1665         movups  %xmm2,(%edi)
1666 .L065xts_dec_ret:
1667         movl    116(%esp),%esp
1668         popl    %edi
1669         popl    %esi
1670         popl    %ebx
1671         popl    %ebp
1672         ret
1673 .size   aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
1674 .globl  aesni_cbc_encrypt
1675 .type   aesni_cbc_encrypt,@function
1676 .align  16
1677 aesni_cbc_encrypt:
1678 .L_aesni_cbc_encrypt_begin:
1679         pushl   %ebp
1680         pushl   %ebx
1681         pushl   %esi
1682         pushl   %edi
1683         movl    20(%esp),%esi
1684         movl    %esp,%ebx
1685         movl    24(%esp),%edi
1686         subl    $24,%ebx
1687         movl    28(%esp),%eax
1688         andl    $-16,%ebx
1689         movl    32(%esp),%edx
1690         movl    36(%esp),%ebp
1691         testl   %eax,%eax
1692         jz      .L070cbc_abort
1693         cmpl    $0,40(%esp)
1694         xchgl   %esp,%ebx
1695         movups  (%ebp),%xmm7
1696         movl    240(%edx),%ecx
1697         movl    %edx,%ebp
1698         movl    %ebx,16(%esp)
1699         movl    %ecx,%ebx
1700         je      .L071cbc_decrypt
1701         movaps  %xmm7,%xmm2
1702         cmpl    $16,%eax
1703         jb      .L072cbc_enc_tail
1704         subl    $16,%eax
1705         jmp     .L073cbc_enc_loop
1706 .align  16
1707 .L073cbc_enc_loop:
1708         movups  (%esi),%xmm7
1709         leal    16(%esi),%esi
1710         movups  (%edx),%xmm0
1711         movups  16(%edx),%xmm1
1712         xorps   %xmm0,%xmm7
1713         leal    32(%edx),%edx
1714         xorps   %xmm7,%xmm2
1715 .L074enc1_loop_15:
1716 .byte   102,15,56,220,209
1717         decl    %ecx
1718         movups  (%edx),%xmm1
1719         leal    16(%edx),%edx
1720         jnz     .L074enc1_loop_15
1721 .byte   102,15,56,221,209
1722         movl    %ebx,%ecx
1723         movl    %ebp,%edx
1724         movups  %xmm2,(%edi)
1725         leal    16(%edi),%edi
1726         subl    $16,%eax
1727         jnc     .L073cbc_enc_loop
1728         addl    $16,%eax
1729         jnz     .L072cbc_enc_tail
1730         movaps  %xmm2,%xmm7
1731         jmp     .L075cbc_ret
1732 .L072cbc_enc_tail:
1733         movl    %eax,%ecx
1734 .long   2767451785
1735         movl    $16,%ecx
1736         subl    %eax,%ecx
1737         xorl    %eax,%eax
1738 .long   2868115081
1739         leal    -16(%edi),%edi
1740         movl    %ebx,%ecx
1741         movl    %edi,%esi
1742         movl    %ebp,%edx
1743         jmp     .L073cbc_enc_loop
1744 .align  16
1745 .L071cbc_decrypt:
1746         cmpl    $80,%eax
1747         jbe     .L076cbc_dec_tail
1748         movaps  %xmm7,(%esp)
1749         subl    $80,%eax
1750         jmp     .L077cbc_dec_loop6_enter
1751 .align  16
1752 .L078cbc_dec_loop6:
1753         movaps  %xmm0,(%esp)
1754         movups  %xmm7,(%edi)
1755         leal    16(%edi),%edi
1756 .L077cbc_dec_loop6_enter:
1757         movdqu  (%esi),%xmm2
1758         movdqu  16(%esi),%xmm3
1759         movdqu  32(%esi),%xmm4
1760         movdqu  48(%esi),%xmm5
1761         movdqu  64(%esi),%xmm6
1762         movdqu  80(%esi),%xmm7
1763         call    _aesni_decrypt6
1764         movups  (%esi),%xmm1
1765         movups  16(%esi),%xmm0
1766         xorps   (%esp),%xmm2
1767         xorps   %xmm1,%xmm3
1768         movups  32(%esi),%xmm1
1769         xorps   %xmm0,%xmm4
1770         movups  48(%esi),%xmm0
1771         xorps   %xmm1,%xmm5
1772         movups  64(%esi),%xmm1
1773         xorps   %xmm0,%xmm6
1774         movups  80(%esi),%xmm0
1775         xorps   %xmm1,%xmm7
1776         movups  %xmm2,(%edi)
1777         movups  %xmm3,16(%edi)
1778         leal    96(%esi),%esi
1779         movups  %xmm4,32(%edi)
1780         movl    %ebx,%ecx
1781         movups  %xmm5,48(%edi)
1782         movl    %ebp,%edx
1783         movups  %xmm6,64(%edi)
1784         leal    80(%edi),%edi
1785         subl    $96,%eax
1786         ja      .L078cbc_dec_loop6
1787         movaps  %xmm7,%xmm2
1788         movaps  %xmm0,%xmm7
1789         addl    $80,%eax
1790         jle     .L079cbc_dec_tail_collected
1791         movups  %xmm2,(%edi)
1792         leal    16(%edi),%edi
1793 .L076cbc_dec_tail:
1794         movups  (%esi),%xmm2
1795         movaps  %xmm2,%xmm6
1796         cmpl    $16,%eax
1797         jbe     .L080cbc_dec_one
1798         movups  16(%esi),%xmm3
1799         movaps  %xmm3,%xmm5
1800         cmpl    $32,%eax
1801         jbe     .L081cbc_dec_two
1802         movups  32(%esi),%xmm4
1803         cmpl    $48,%eax
1804         jbe     .L082cbc_dec_three
1805         movups  48(%esi),%xmm5
1806         cmpl    $64,%eax
1807         jbe     .L083cbc_dec_four
1808         movups  64(%esi),%xmm6
1809         movaps  %xmm7,(%esp)
1810         movups  (%esi),%xmm2
1811         xorps   %xmm7,%xmm7
1812         call    _aesni_decrypt6
1813         movups  (%esi),%xmm1
1814         movups  16(%esi),%xmm0
1815         xorps   (%esp),%xmm2
1816         xorps   %xmm1,%xmm3
1817         movups  32(%esi),%xmm1
1818         xorps   %xmm0,%xmm4
1819         movups  48(%esi),%xmm0
1820         xorps   %xmm1,%xmm5
1821         movups  64(%esi),%xmm7
1822         xorps   %xmm0,%xmm6
1823         movups  %xmm2,(%edi)
1824         movups  %xmm3,16(%edi)
1825         movups  %xmm4,32(%edi)
1826         movups  %xmm5,48(%edi)
1827         leal    64(%edi),%edi
1828         movaps  %xmm6,%xmm2
1829         subl    $80,%eax
1830         jmp     .L079cbc_dec_tail_collected
1831 .align  16
1832 .L080cbc_dec_one:
1833         movups  (%edx),%xmm0
1834         movups  16(%edx),%xmm1
1835         leal    32(%edx),%edx
1836         xorps   %xmm0,%xmm2
1837 .L084dec1_loop_16:
1838 .byte   102,15,56,222,209
1839         decl    %ecx
1840         movups  (%edx),%xmm1
1841         leal    16(%edx),%edx
1842         jnz     .L084dec1_loop_16
1843 .byte   102,15,56,223,209
1844         xorps   %xmm7,%xmm2
1845         movaps  %xmm6,%xmm7
1846         subl    $16,%eax
1847         jmp     .L079cbc_dec_tail_collected
1848 .align  16
1849 .L081cbc_dec_two:
1850         xorps   %xmm4,%xmm4
1851         call    _aesni_decrypt3
1852         xorps   %xmm7,%xmm2
1853         xorps   %xmm6,%xmm3
1854         movups  %xmm2,(%edi)
1855         movaps  %xmm3,%xmm2
1856         leal    16(%edi),%edi
1857         movaps  %xmm5,%xmm7
1858         subl    $32,%eax
1859         jmp     .L079cbc_dec_tail_collected
1860 .align  16
1861 .L082cbc_dec_three:
1862         call    _aesni_decrypt3
1863         xorps   %xmm7,%xmm2
1864         xorps   %xmm6,%xmm3
1865         xorps   %xmm5,%xmm4
1866         movups  %xmm2,(%edi)
1867         movaps  %xmm4,%xmm2
1868         movups  %xmm3,16(%edi)
1869         leal    32(%edi),%edi
1870         movups  32(%esi),%xmm7
1871         subl    $48,%eax
1872         jmp     .L079cbc_dec_tail_collected
1873 .align  16
1874 .L083cbc_dec_four:
1875         call    _aesni_decrypt4
1876         movups  16(%esi),%xmm1
1877         movups  32(%esi),%xmm0
1878         xorps   %xmm7,%xmm2
1879         movups  48(%esi),%xmm7
1880         xorps   %xmm6,%xmm3
1881         movups  %xmm2,(%edi)
1882         xorps   %xmm1,%xmm4
1883         movups  %xmm3,16(%edi)
1884         xorps   %xmm0,%xmm5
1885         movups  %xmm4,32(%edi)
1886         leal    48(%edi),%edi
1887         movaps  %xmm5,%xmm2
1888         subl    $64,%eax
1889 .L079cbc_dec_tail_collected:
1890         andl    $15,%eax
1891         jnz     .L085cbc_dec_tail_partial
1892         movups  %xmm2,(%edi)
1893         jmp     .L075cbc_ret
1894 .align  16
1895 .L085cbc_dec_tail_partial:
1896         movaps  %xmm2,(%esp)
1897         movl    $16,%ecx
1898         movl    %esp,%esi
1899         subl    %eax,%ecx
1900 .long   2767451785
1901 .L075cbc_ret:
1902         movl    16(%esp),%esp
1903         movl    36(%esp),%ebp
1904         movups  %xmm7,(%ebp)
1905 .L070cbc_abort:
1906         popl    %edi
1907         popl    %esi
1908         popl    %ebx
1909         popl    %ebp
1910         ret
1911 .size   aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
1912 .type   _aesni_set_encrypt_key,@function
1913 .align  16
1914 _aesni_set_encrypt_key:
1915         testl   %eax,%eax
1916         jz      .L086bad_pointer
1917         testl   %edx,%edx
1918         jz      .L086bad_pointer
1919         movups  (%eax),%xmm0
1920         xorps   %xmm4,%xmm4
1921         leal    16(%edx),%edx
1922         cmpl    $256,%ecx
1923         je      .L08714rounds
1924         cmpl    $192,%ecx
1925         je      .L08812rounds
1926         cmpl    $128,%ecx
1927         jne     .L089bad_keybits
1928 .align  16
1929 .L09010rounds:
1930         movl    $9,%ecx
1931         movups  %xmm0,-16(%edx)
1932 .byte   102,15,58,223,200,1
1933         call    .L091key_128_cold
1934 .byte   102,15,58,223,200,2
1935         call    .L092key_128
1936 .byte   102,15,58,223,200,4
1937         call    .L092key_128
1938 .byte   102,15,58,223,200,8
1939         call    .L092key_128
1940 .byte   102,15,58,223,200,16
1941         call    .L092key_128
1942 .byte   102,15,58,223,200,32
1943         call    .L092key_128
1944 .byte   102,15,58,223,200,64
1945         call    .L092key_128
1946 .byte   102,15,58,223,200,128
1947         call    .L092key_128
1948 .byte   102,15,58,223,200,27
1949         call    .L092key_128
1950 .byte   102,15,58,223,200,54
1951         call    .L092key_128
1952         movups  %xmm0,(%edx)
1953         movl    %ecx,80(%edx)
1954         xorl    %eax,%eax
1955         ret
1956 .align  16
1957 .L092key_128:
1958         movups  %xmm0,(%edx)
1959         leal    16(%edx),%edx
1960 .L091key_128_cold:
1961         shufps  $16,%xmm0,%xmm4
1962         xorps   %xmm4,%xmm0
1963         shufps  $140,%xmm0,%xmm4
1964         xorps   %xmm4,%xmm0
1965         shufps  $255,%xmm1,%xmm1
1966         xorps   %xmm1,%xmm0
1967         ret
1968 .align  16
1969 .L08812rounds:
1970         movq    16(%eax),%xmm2
1971         movl    $11,%ecx
1972         movups  %xmm0,-16(%edx)
1973 .byte   102,15,58,223,202,1
1974         call    .L093key_192a_cold
1975 .byte   102,15,58,223,202,2
1976         call    .L094key_192b
1977 .byte   102,15,58,223,202,4
1978         call    .L095key_192a
1979 .byte   102,15,58,223,202,8
1980         call    .L094key_192b
1981 .byte   102,15,58,223,202,16
1982         call    .L095key_192a
1983 .byte   102,15,58,223,202,32
1984         call    .L094key_192b
1985 .byte   102,15,58,223,202,64
1986         call    .L095key_192a
1987 .byte   102,15,58,223,202,128
1988         call    .L094key_192b
1989         movups  %xmm0,(%edx)
1990         movl    %ecx,48(%edx)
1991         xorl    %eax,%eax
1992         ret
1993 .align  16
1994 .L095key_192a:
1995         movups  %xmm0,(%edx)
1996         leal    16(%edx),%edx
1997 .align  16
1998 .L093key_192a_cold:
1999         movaps  %xmm2,%xmm5
2000 .L096key_192b_warm:
2001         shufps  $16,%xmm0,%xmm4
2002         movdqa  %xmm2,%xmm3
2003         xorps   %xmm4,%xmm0
2004         shufps  $140,%xmm0,%xmm4
2005         pslldq  $4,%xmm3
2006         xorps   %xmm4,%xmm0
2007         pshufd  $85,%xmm1,%xmm1
2008         pxor    %xmm3,%xmm2
2009         pxor    %xmm1,%xmm0
2010         pshufd  $255,%xmm0,%xmm3
2011         pxor    %xmm3,%xmm2
2012         ret
2013 .align  16
2014 .L094key_192b:
2015         movaps  %xmm0,%xmm3
2016         shufps  $68,%xmm0,%xmm5
2017         movups  %xmm5,(%edx)
2018         shufps  $78,%xmm2,%xmm3
2019         movups  %xmm3,16(%edx)
2020         leal    32(%edx),%edx
2021         jmp     .L096key_192b_warm
2022 .align  16
2023 .L08714rounds:
2024         movups  16(%eax),%xmm2
2025         movl    $13,%ecx
2026         leal    16(%edx),%edx
2027         movups  %xmm0,-32(%edx)
2028         movups  %xmm2,-16(%edx)
2029 .byte   102,15,58,223,202,1
2030         call    .L097key_256a_cold
2031 .byte   102,15,58,223,200,1
2032         call    .L098key_256b
2033 .byte   102,15,58,223,202,2
2034         call    .L099key_256a
2035 .byte   102,15,58,223,200,2
2036         call    .L098key_256b
2037 .byte   102,15,58,223,202,4
2038         call    .L099key_256a
2039 .byte   102,15,58,223,200,4
2040         call    .L098key_256b
2041 .byte   102,15,58,223,202,8
2042         call    .L099key_256a
2043 .byte   102,15,58,223,200,8
2044         call    .L098key_256b
2045 .byte   102,15,58,223,202,16
2046         call    .L099key_256a
2047 .byte   102,15,58,223,200,16
2048         call    .L098key_256b
2049 .byte   102,15,58,223,202,32
2050         call    .L099key_256a
2051 .byte   102,15,58,223,200,32
2052         call    .L098key_256b
2053 .byte   102,15,58,223,202,64
2054         call    .L099key_256a
2055         movups  %xmm0,(%edx)
2056         movl    %ecx,16(%edx)
2057         xorl    %eax,%eax
2058         ret
2059 .align  16
2060 .L099key_256a:
2061         movups  %xmm2,(%edx)
2062         leal    16(%edx),%edx
2063 .L097key_256a_cold:
2064         shufps  $16,%xmm0,%xmm4
2065         xorps   %xmm4,%xmm0
2066         shufps  $140,%xmm0,%xmm4
2067         xorps   %xmm4,%xmm0
2068         shufps  $255,%xmm1,%xmm1
2069         xorps   %xmm1,%xmm0
2070         ret
2071 .align  16
2072 .L098key_256b:
2073         movups  %xmm0,(%edx)
2074         leal    16(%edx),%edx
2075         shufps  $16,%xmm2,%xmm4
2076         xorps   %xmm4,%xmm2
2077         shufps  $140,%xmm2,%xmm4
2078         xorps   %xmm4,%xmm2
2079         shufps  $170,%xmm1,%xmm1
2080         xorps   %xmm1,%xmm2
2081         ret
2082 .align  4
2083 .L086bad_pointer:
2084         movl    $-1,%eax
2085         ret
2086 .align  4
2087 .L089bad_keybits:
2088         movl    $-2,%eax
2089         ret
2090 .size   _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
2091 .globl  aesni_set_encrypt_key
2092 .type   aesni_set_encrypt_key,@function
2093 .align  16
2094 aesni_set_encrypt_key:
2095 .L_aesni_set_encrypt_key_begin:
2096         movl    4(%esp),%eax
2097         movl    8(%esp),%ecx
2098         movl    12(%esp),%edx
2099         call    _aesni_set_encrypt_key
2100         ret
2101 .size   aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
2102 .globl  aesni_set_decrypt_key
2103 .type   aesni_set_decrypt_key,@function
2104 .align  16
2105 aesni_set_decrypt_key:
2106 .L_aesni_set_decrypt_key_begin:
2107         movl    4(%esp),%eax
2108         movl    8(%esp),%ecx
2109         movl    12(%esp),%edx
2110         call    _aesni_set_encrypt_key
2111         movl    12(%esp),%edx
2112         shll    $4,%ecx
2113         testl   %eax,%eax
2114         jnz     .L100dec_key_ret
2115         leal    16(%edx,%ecx,1),%eax
2116         movups  (%edx),%xmm0
2117         movups  (%eax),%xmm1
2118         movups  %xmm0,(%eax)
2119         movups  %xmm1,(%edx)
2120         leal    16(%edx),%edx
2121         leal    -16(%eax),%eax
2122 .L101dec_key_inverse:
2123         movups  (%edx),%xmm0
2124         movups  (%eax),%xmm1
2125 .byte   102,15,56,219,192
2126 .byte   102,15,56,219,201
2127         leal    16(%edx),%edx
2128         leal    -16(%eax),%eax
2129         movups  %xmm0,16(%eax)
2130         movups  %xmm1,-16(%edx)
2131         cmpl    %edx,%eax
2132         ja      .L101dec_key_inverse
2133         movups  (%edx),%xmm0
2134 .byte   102,15,56,219,192
2135         movups  %xmm0,(%edx)
2136         xorl    %eax,%eax
2137 .L100dec_key_ret:
2138         ret
2139 .size   aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
2140 .byte   65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
2141 .byte   83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
2142 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2143 .byte   115,108,46,111,114,103,62,0