Update files for OpenSSL-1.0.2h import.
[dragonfly.git] / secure / lib / libcrypto / asm / bsaes-x86_64.s
1 .text   
2
3
4
5
6 .type   _bsaes_encrypt8,@function
7 .align  64
8 _bsaes_encrypt8:
9         leaq    .LBS0(%rip),%r11
10
11         movdqa  (%rax),%xmm8
12         leaq    16(%rax),%rax
13         movdqa  80(%r11),%xmm7
14         pxor    %xmm8,%xmm15
15         pxor    %xmm8,%xmm0
16         pxor    %xmm8,%xmm1
17         pxor    %xmm8,%xmm2
18 .byte   102,68,15,56,0,255
19 .byte   102,15,56,0,199
20         pxor    %xmm8,%xmm3
21         pxor    %xmm8,%xmm4
22 .byte   102,15,56,0,207
23 .byte   102,15,56,0,215
24         pxor    %xmm8,%xmm5
25         pxor    %xmm8,%xmm6
26 .byte   102,15,56,0,223
27 .byte   102,15,56,0,231
28 .byte   102,15,56,0,239
29 .byte   102,15,56,0,247
30 _bsaes_encrypt8_bitslice:
31         movdqa  0(%r11),%xmm7
32         movdqa  16(%r11),%xmm8
33         movdqa  %xmm5,%xmm9
34         psrlq   $1,%xmm5
35         movdqa  %xmm3,%xmm10
36         psrlq   $1,%xmm3
37         pxor    %xmm6,%xmm5
38         pxor    %xmm4,%xmm3
39         pand    %xmm7,%xmm5
40         pand    %xmm7,%xmm3
41         pxor    %xmm5,%xmm6
42         psllq   $1,%xmm5
43         pxor    %xmm3,%xmm4
44         psllq   $1,%xmm3
45         pxor    %xmm9,%xmm5
46         pxor    %xmm10,%xmm3
47         movdqa  %xmm1,%xmm9
48         psrlq   $1,%xmm1
49         movdqa  %xmm15,%xmm10
50         psrlq   $1,%xmm15
51         pxor    %xmm2,%xmm1
52         pxor    %xmm0,%xmm15
53         pand    %xmm7,%xmm1
54         pand    %xmm7,%xmm15
55         pxor    %xmm1,%xmm2
56         psllq   $1,%xmm1
57         pxor    %xmm15,%xmm0
58         psllq   $1,%xmm15
59         pxor    %xmm9,%xmm1
60         pxor    %xmm10,%xmm15
61         movdqa  32(%r11),%xmm7
62         movdqa  %xmm4,%xmm9
63         psrlq   $2,%xmm4
64         movdqa  %xmm3,%xmm10
65         psrlq   $2,%xmm3
66         pxor    %xmm6,%xmm4
67         pxor    %xmm5,%xmm3
68         pand    %xmm8,%xmm4
69         pand    %xmm8,%xmm3
70         pxor    %xmm4,%xmm6
71         psllq   $2,%xmm4
72         pxor    %xmm3,%xmm5
73         psllq   $2,%xmm3
74         pxor    %xmm9,%xmm4
75         pxor    %xmm10,%xmm3
76         movdqa  %xmm0,%xmm9
77         psrlq   $2,%xmm0
78         movdqa  %xmm15,%xmm10
79         psrlq   $2,%xmm15
80         pxor    %xmm2,%xmm0
81         pxor    %xmm1,%xmm15
82         pand    %xmm8,%xmm0
83         pand    %xmm8,%xmm15
84         pxor    %xmm0,%xmm2
85         psllq   $2,%xmm0
86         pxor    %xmm15,%xmm1
87         psllq   $2,%xmm15
88         pxor    %xmm9,%xmm0
89         pxor    %xmm10,%xmm15
90         movdqa  %xmm2,%xmm9
91         psrlq   $4,%xmm2
92         movdqa  %xmm1,%xmm10
93         psrlq   $4,%xmm1
94         pxor    %xmm6,%xmm2
95         pxor    %xmm5,%xmm1
96         pand    %xmm7,%xmm2
97         pand    %xmm7,%xmm1
98         pxor    %xmm2,%xmm6
99         psllq   $4,%xmm2
100         pxor    %xmm1,%xmm5
101         psllq   $4,%xmm1
102         pxor    %xmm9,%xmm2
103         pxor    %xmm10,%xmm1
104         movdqa  %xmm0,%xmm9
105         psrlq   $4,%xmm0
106         movdqa  %xmm15,%xmm10
107         psrlq   $4,%xmm15
108         pxor    %xmm4,%xmm0
109         pxor    %xmm3,%xmm15
110         pand    %xmm7,%xmm0
111         pand    %xmm7,%xmm15
112         pxor    %xmm0,%xmm4
113         psllq   $4,%xmm0
114         pxor    %xmm15,%xmm3
115         psllq   $4,%xmm15
116         pxor    %xmm9,%xmm0
117         pxor    %xmm10,%xmm15
118         decl    %r10d
119         jmp     .Lenc_sbox
120 .align  16
121 .Lenc_loop:
122         pxor    0(%rax),%xmm15
123         pxor    16(%rax),%xmm0
124         pxor    32(%rax),%xmm1
125         pxor    48(%rax),%xmm2
126 .byte   102,68,15,56,0,255
127 .byte   102,15,56,0,199
128         pxor    64(%rax),%xmm3
129         pxor    80(%rax),%xmm4
130 .byte   102,15,56,0,207
131 .byte   102,15,56,0,215
132         pxor    96(%rax),%xmm5
133         pxor    112(%rax),%xmm6
134 .byte   102,15,56,0,223
135 .byte   102,15,56,0,231
136 .byte   102,15,56,0,239
137 .byte   102,15,56,0,247
138         leaq    128(%rax),%rax
139 .Lenc_sbox:
140         pxor    %xmm5,%xmm4
141         pxor    %xmm0,%xmm1
142         pxor    %xmm15,%xmm2
143         pxor    %xmm1,%xmm5
144         pxor    %xmm15,%xmm4
145
146         pxor    %xmm2,%xmm5
147         pxor    %xmm6,%xmm2
148         pxor    %xmm4,%xmm6
149         pxor    %xmm3,%xmm2
150         pxor    %xmm4,%xmm3
151         pxor    %xmm0,%xmm2
152
153         pxor    %xmm6,%xmm1
154         pxor    %xmm4,%xmm0
155         movdqa  %xmm6,%xmm10
156         movdqa  %xmm0,%xmm9
157         movdqa  %xmm4,%xmm8
158         movdqa  %xmm1,%xmm12
159         movdqa  %xmm5,%xmm11
160
161         pxor    %xmm3,%xmm10
162         pxor    %xmm1,%xmm9
163         pxor    %xmm2,%xmm8
164         movdqa  %xmm10,%xmm13
165         pxor    %xmm3,%xmm12
166         movdqa  %xmm9,%xmm7
167         pxor    %xmm15,%xmm11
168         movdqa  %xmm10,%xmm14
169
170         por     %xmm8,%xmm9
171         por     %xmm11,%xmm10
172         pxor    %xmm7,%xmm14
173         pand    %xmm11,%xmm13
174         pxor    %xmm8,%xmm11
175         pand    %xmm8,%xmm7
176         pand    %xmm11,%xmm14
177         movdqa  %xmm2,%xmm11
178         pxor    %xmm15,%xmm11
179         pand    %xmm11,%xmm12
180         pxor    %xmm12,%xmm10
181         pxor    %xmm12,%xmm9
182         movdqa  %xmm6,%xmm12
183         movdqa  %xmm4,%xmm11
184         pxor    %xmm0,%xmm12
185         pxor    %xmm5,%xmm11
186         movdqa  %xmm12,%xmm8
187         pand    %xmm11,%xmm12
188         por     %xmm11,%xmm8
189         pxor    %xmm12,%xmm7
190         pxor    %xmm14,%xmm10
191         pxor    %xmm13,%xmm9
192         pxor    %xmm14,%xmm8
193         movdqa  %xmm1,%xmm11
194         pxor    %xmm13,%xmm7
195         movdqa  %xmm3,%xmm12
196         pxor    %xmm13,%xmm8
197         movdqa  %xmm0,%xmm13
198         pand    %xmm2,%xmm11
199         movdqa  %xmm6,%xmm14
200         pand    %xmm15,%xmm12
201         pand    %xmm4,%xmm13
202         por     %xmm5,%xmm14
203         pxor    %xmm11,%xmm10
204         pxor    %xmm12,%xmm9
205         pxor    %xmm13,%xmm8
206         pxor    %xmm14,%xmm7
207
208
209
210
211
212         movdqa  %xmm10,%xmm11
213         pand    %xmm8,%xmm10
214         pxor    %xmm9,%xmm11
215
216         movdqa  %xmm7,%xmm13
217         movdqa  %xmm11,%xmm14
218         pxor    %xmm10,%xmm13
219         pand    %xmm13,%xmm14
220
221         movdqa  %xmm8,%xmm12
222         pxor    %xmm9,%xmm14
223         pxor    %xmm7,%xmm12
224
225         pxor    %xmm9,%xmm10
226
227         pand    %xmm10,%xmm12
228
229         movdqa  %xmm13,%xmm9
230         pxor    %xmm7,%xmm12
231
232         pxor    %xmm12,%xmm9
233         pxor    %xmm12,%xmm8
234
235         pand    %xmm7,%xmm9
236
237         pxor    %xmm9,%xmm13
238         pxor    %xmm9,%xmm8
239
240         pand    %xmm14,%xmm13
241
242         pxor    %xmm11,%xmm13
243         movdqa  %xmm5,%xmm11
244         movdqa  %xmm4,%xmm7
245         movdqa  %xmm14,%xmm9
246         pxor    %xmm13,%xmm9
247         pand    %xmm5,%xmm9
248         pxor    %xmm4,%xmm5
249         pand    %xmm14,%xmm4
250         pand    %xmm13,%xmm5
251         pxor    %xmm4,%xmm5
252         pxor    %xmm9,%xmm4
253         pxor    %xmm15,%xmm11
254         pxor    %xmm2,%xmm7
255         pxor    %xmm12,%xmm14
256         pxor    %xmm8,%xmm13
257         movdqa  %xmm14,%xmm10
258         movdqa  %xmm12,%xmm9
259         pxor    %xmm13,%xmm10
260         pxor    %xmm8,%xmm9
261         pand    %xmm11,%xmm10
262         pand    %xmm15,%xmm9
263         pxor    %xmm7,%xmm11
264         pxor    %xmm2,%xmm15
265         pand    %xmm14,%xmm7
266         pand    %xmm12,%xmm2
267         pand    %xmm13,%xmm11
268         pand    %xmm8,%xmm15
269         pxor    %xmm11,%xmm7
270         pxor    %xmm2,%xmm15
271         pxor    %xmm10,%xmm11
272         pxor    %xmm9,%xmm2
273         pxor    %xmm11,%xmm5
274         pxor    %xmm11,%xmm15
275         pxor    %xmm7,%xmm4
276         pxor    %xmm7,%xmm2
277
278         movdqa  %xmm6,%xmm11
279         movdqa  %xmm0,%xmm7
280         pxor    %xmm3,%xmm11
281         pxor    %xmm1,%xmm7
282         movdqa  %xmm14,%xmm10
283         movdqa  %xmm12,%xmm9
284         pxor    %xmm13,%xmm10
285         pxor    %xmm8,%xmm9
286         pand    %xmm11,%xmm10
287         pand    %xmm3,%xmm9
288         pxor    %xmm7,%xmm11
289         pxor    %xmm1,%xmm3
290         pand    %xmm14,%xmm7
291         pand    %xmm12,%xmm1
292         pand    %xmm13,%xmm11
293         pand    %xmm8,%xmm3
294         pxor    %xmm11,%xmm7
295         pxor    %xmm1,%xmm3
296         pxor    %xmm10,%xmm11
297         pxor    %xmm9,%xmm1
298         pxor    %xmm12,%xmm14
299         pxor    %xmm8,%xmm13
300         movdqa  %xmm14,%xmm10
301         pxor    %xmm13,%xmm10
302         pand    %xmm6,%xmm10
303         pxor    %xmm0,%xmm6
304         pand    %xmm14,%xmm0
305         pand    %xmm13,%xmm6
306         pxor    %xmm0,%xmm6
307         pxor    %xmm10,%xmm0
308         pxor    %xmm11,%xmm6
309         pxor    %xmm11,%xmm3
310         pxor    %xmm7,%xmm0
311         pxor    %xmm7,%xmm1
312         pxor    %xmm15,%xmm6
313         pxor    %xmm5,%xmm0
314         pxor    %xmm6,%xmm3
315         pxor    %xmm15,%xmm5
316         pxor    %xmm0,%xmm15
317
318         pxor    %xmm4,%xmm0
319         pxor    %xmm1,%xmm4
320         pxor    %xmm2,%xmm1
321         pxor    %xmm4,%xmm2
322         pxor    %xmm4,%xmm3
323
324         pxor    %xmm2,%xmm5
325         decl    %r10d
326         jl      .Lenc_done
327         pshufd  $0x93,%xmm15,%xmm7
328         pshufd  $0x93,%xmm0,%xmm8
329         pxor    %xmm7,%xmm15
330         pshufd  $0x93,%xmm3,%xmm9
331         pxor    %xmm8,%xmm0
332         pshufd  $0x93,%xmm5,%xmm10
333         pxor    %xmm9,%xmm3
334         pshufd  $0x93,%xmm2,%xmm11
335         pxor    %xmm10,%xmm5
336         pshufd  $0x93,%xmm6,%xmm12
337         pxor    %xmm11,%xmm2
338         pshufd  $0x93,%xmm1,%xmm13
339         pxor    %xmm12,%xmm6
340         pshufd  $0x93,%xmm4,%xmm14
341         pxor    %xmm13,%xmm1
342         pxor    %xmm14,%xmm4
343
344         pxor    %xmm15,%xmm8
345         pxor    %xmm4,%xmm7
346         pxor    %xmm4,%xmm8
347         pshufd  $0x4E,%xmm15,%xmm15
348         pxor    %xmm0,%xmm9
349         pshufd  $0x4E,%xmm0,%xmm0
350         pxor    %xmm2,%xmm12
351         pxor    %xmm7,%xmm15
352         pxor    %xmm6,%xmm13
353         pxor    %xmm8,%xmm0
354         pxor    %xmm5,%xmm11
355         pshufd  $0x4E,%xmm2,%xmm7
356         pxor    %xmm1,%xmm14
357         pshufd  $0x4E,%xmm6,%xmm8
358         pxor    %xmm3,%xmm10
359         pshufd  $0x4E,%xmm5,%xmm2
360         pxor    %xmm4,%xmm10
361         pshufd  $0x4E,%xmm4,%xmm6
362         pxor    %xmm4,%xmm11
363         pshufd  $0x4E,%xmm1,%xmm5
364         pxor    %xmm11,%xmm7
365         pshufd  $0x4E,%xmm3,%xmm1
366         pxor    %xmm12,%xmm8
367         pxor    %xmm10,%xmm2
368         pxor    %xmm14,%xmm6
369         pxor    %xmm13,%xmm5
370         movdqa  %xmm7,%xmm3
371         pxor    %xmm9,%xmm1
372         movdqa  %xmm8,%xmm4
373         movdqa  48(%r11),%xmm7
374         jnz     .Lenc_loop
375         movdqa  64(%r11),%xmm7
376         jmp     .Lenc_loop
377 .align  16
378 .Lenc_done:
379         movdqa  0(%r11),%xmm7
380         movdqa  16(%r11),%xmm8
381         movdqa  %xmm1,%xmm9
382         psrlq   $1,%xmm1
383         movdqa  %xmm2,%xmm10
384         psrlq   $1,%xmm2
385         pxor    %xmm4,%xmm1
386         pxor    %xmm6,%xmm2
387         pand    %xmm7,%xmm1
388         pand    %xmm7,%xmm2
389         pxor    %xmm1,%xmm4
390         psllq   $1,%xmm1
391         pxor    %xmm2,%xmm6
392         psllq   $1,%xmm2
393         pxor    %xmm9,%xmm1
394         pxor    %xmm10,%xmm2
395         movdqa  %xmm3,%xmm9
396         psrlq   $1,%xmm3
397         movdqa  %xmm15,%xmm10
398         psrlq   $1,%xmm15
399         pxor    %xmm5,%xmm3
400         pxor    %xmm0,%xmm15
401         pand    %xmm7,%xmm3
402         pand    %xmm7,%xmm15
403         pxor    %xmm3,%xmm5
404         psllq   $1,%xmm3
405         pxor    %xmm15,%xmm0
406         psllq   $1,%xmm15
407         pxor    %xmm9,%xmm3
408         pxor    %xmm10,%xmm15
409         movdqa  32(%r11),%xmm7
410         movdqa  %xmm6,%xmm9
411         psrlq   $2,%xmm6
412         movdqa  %xmm2,%xmm10
413         psrlq   $2,%xmm2
414         pxor    %xmm4,%xmm6
415         pxor    %xmm1,%xmm2
416         pand    %xmm8,%xmm6
417         pand    %xmm8,%xmm2
418         pxor    %xmm6,%xmm4
419         psllq   $2,%xmm6
420         pxor    %xmm2,%xmm1
421         psllq   $2,%xmm2
422         pxor    %xmm9,%xmm6
423         pxor    %xmm10,%xmm2
424         movdqa  %xmm0,%xmm9
425         psrlq   $2,%xmm0
426         movdqa  %xmm15,%xmm10
427         psrlq   $2,%xmm15
428         pxor    %xmm5,%xmm0
429         pxor    %xmm3,%xmm15
430         pand    %xmm8,%xmm0
431         pand    %xmm8,%xmm15
432         pxor    %xmm0,%xmm5
433         psllq   $2,%xmm0
434         pxor    %xmm15,%xmm3
435         psllq   $2,%xmm15
436         pxor    %xmm9,%xmm0
437         pxor    %xmm10,%xmm15
438         movdqa  %xmm5,%xmm9
439         psrlq   $4,%xmm5
440         movdqa  %xmm3,%xmm10
441         psrlq   $4,%xmm3
442         pxor    %xmm4,%xmm5
443         pxor    %xmm1,%xmm3
444         pand    %xmm7,%xmm5
445         pand    %xmm7,%xmm3
446         pxor    %xmm5,%xmm4
447         psllq   $4,%xmm5
448         pxor    %xmm3,%xmm1
449         psllq   $4,%xmm3
450         pxor    %xmm9,%xmm5
451         pxor    %xmm10,%xmm3
452         movdqa  %xmm0,%xmm9
453         psrlq   $4,%xmm0
454         movdqa  %xmm15,%xmm10
455         psrlq   $4,%xmm15
456         pxor    %xmm6,%xmm0
457         pxor    %xmm2,%xmm15
458         pand    %xmm7,%xmm0
459         pand    %xmm7,%xmm15
460         pxor    %xmm0,%xmm6
461         psllq   $4,%xmm0
462         pxor    %xmm15,%xmm2
463         psllq   $4,%xmm15
464         pxor    %xmm9,%xmm0
465         pxor    %xmm10,%xmm15
466         movdqa  (%rax),%xmm7
467         pxor    %xmm7,%xmm3
468         pxor    %xmm7,%xmm5
469         pxor    %xmm7,%xmm2
470         pxor    %xmm7,%xmm6
471         pxor    %xmm7,%xmm1
472         pxor    %xmm7,%xmm4
473         pxor    %xmm7,%xmm15
474         pxor    %xmm7,%xmm0
475         .byte   0xf3,0xc3
476 .size   _bsaes_encrypt8,.-_bsaes_encrypt8
477
478 .type   _bsaes_decrypt8,@function
479 .align  64
480 _bsaes_decrypt8:
481         leaq    .LBS0(%rip),%r11
482
483         movdqa  (%rax),%xmm8
484         leaq    16(%rax),%rax
485         movdqa  -48(%r11),%xmm7
486         pxor    %xmm8,%xmm15
487         pxor    %xmm8,%xmm0
488         pxor    %xmm8,%xmm1
489         pxor    %xmm8,%xmm2
490 .byte   102,68,15,56,0,255
491 .byte   102,15,56,0,199
492         pxor    %xmm8,%xmm3
493         pxor    %xmm8,%xmm4
494 .byte   102,15,56,0,207
495 .byte   102,15,56,0,215
496         pxor    %xmm8,%xmm5
497         pxor    %xmm8,%xmm6
498 .byte   102,15,56,0,223
499 .byte   102,15,56,0,231
500 .byte   102,15,56,0,239
501 .byte   102,15,56,0,247
502         movdqa  0(%r11),%xmm7
503         movdqa  16(%r11),%xmm8
504         movdqa  %xmm5,%xmm9
505         psrlq   $1,%xmm5
506         movdqa  %xmm3,%xmm10
507         psrlq   $1,%xmm3
508         pxor    %xmm6,%xmm5
509         pxor    %xmm4,%xmm3
510         pand    %xmm7,%xmm5
511         pand    %xmm7,%xmm3
512         pxor    %xmm5,%xmm6
513         psllq   $1,%xmm5
514         pxor    %xmm3,%xmm4
515         psllq   $1,%xmm3
516         pxor    %xmm9,%xmm5
517         pxor    %xmm10,%xmm3
518         movdqa  %xmm1,%xmm9
519         psrlq   $1,%xmm1
520         movdqa  %xmm15,%xmm10
521         psrlq   $1,%xmm15
522         pxor    %xmm2,%xmm1
523         pxor    %xmm0,%xmm15
524         pand    %xmm7,%xmm1
525         pand    %xmm7,%xmm15
526         pxor    %xmm1,%xmm2
527         psllq   $1,%xmm1
528         pxor    %xmm15,%xmm0
529         psllq   $1,%xmm15
530         pxor    %xmm9,%xmm1
531         pxor    %xmm10,%xmm15
532         movdqa  32(%r11),%xmm7
533         movdqa  %xmm4,%xmm9
534         psrlq   $2,%xmm4
535         movdqa  %xmm3,%xmm10
536         psrlq   $2,%xmm3
537         pxor    %xmm6,%xmm4
538         pxor    %xmm5,%xmm3
539         pand    %xmm8,%xmm4
540         pand    %xmm8,%xmm3
541         pxor    %xmm4,%xmm6
542         psllq   $2,%xmm4
543         pxor    %xmm3,%xmm5
544         psllq   $2,%xmm3
545         pxor    %xmm9,%xmm4
546         pxor    %xmm10,%xmm3
547         movdqa  %xmm0,%xmm9
548         psrlq   $2,%xmm0
549         movdqa  %xmm15,%xmm10
550         psrlq   $2,%xmm15
551         pxor    %xmm2,%xmm0
552         pxor    %xmm1,%xmm15
553         pand    %xmm8,%xmm0
554         pand    %xmm8,%xmm15
555         pxor    %xmm0,%xmm2
556         psllq   $2,%xmm0
557         pxor    %xmm15,%xmm1
558         psllq   $2,%xmm15
559         pxor    %xmm9,%xmm0
560         pxor    %xmm10,%xmm15
561         movdqa  %xmm2,%xmm9
562         psrlq   $4,%xmm2
563         movdqa  %xmm1,%xmm10
564         psrlq   $4,%xmm1
565         pxor    %xmm6,%xmm2
566         pxor    %xmm5,%xmm1
567         pand    %xmm7,%xmm2
568         pand    %xmm7,%xmm1
569         pxor    %xmm2,%xmm6
570         psllq   $4,%xmm2
571         pxor    %xmm1,%xmm5
572         psllq   $4,%xmm1
573         pxor    %xmm9,%xmm2
574         pxor    %xmm10,%xmm1
575         movdqa  %xmm0,%xmm9
576         psrlq   $4,%xmm0
577         movdqa  %xmm15,%xmm10
578         psrlq   $4,%xmm15
579         pxor    %xmm4,%xmm0
580         pxor    %xmm3,%xmm15
581         pand    %xmm7,%xmm0
582         pand    %xmm7,%xmm15
583         pxor    %xmm0,%xmm4
584         psllq   $4,%xmm0
585         pxor    %xmm15,%xmm3
586         psllq   $4,%xmm15
587         pxor    %xmm9,%xmm0
588         pxor    %xmm10,%xmm15
589         decl    %r10d
590         jmp     .Ldec_sbox
591 .align  16
592 .Ldec_loop:
593         pxor    0(%rax),%xmm15
594         pxor    16(%rax),%xmm0
595         pxor    32(%rax),%xmm1
596         pxor    48(%rax),%xmm2
597 .byte   102,68,15,56,0,255
598 .byte   102,15,56,0,199
599         pxor    64(%rax),%xmm3
600         pxor    80(%rax),%xmm4
601 .byte   102,15,56,0,207
602 .byte   102,15,56,0,215
603         pxor    96(%rax),%xmm5
604         pxor    112(%rax),%xmm6
605 .byte   102,15,56,0,223
606 .byte   102,15,56,0,231
607 .byte   102,15,56,0,239
608 .byte   102,15,56,0,247
609         leaq    128(%rax),%rax
610 .Ldec_sbox:
611         pxor    %xmm3,%xmm2
612
613         pxor    %xmm6,%xmm3
614         pxor    %xmm6,%xmm1
615         pxor    %xmm3,%xmm5
616         pxor    %xmm5,%xmm6
617         pxor    %xmm6,%xmm0
618
619         pxor    %xmm0,%xmm15
620         pxor    %xmm4,%xmm1
621         pxor    %xmm15,%xmm2
622         pxor    %xmm15,%xmm4
623         pxor    %xmm2,%xmm0
624         movdqa  %xmm2,%xmm10
625         movdqa  %xmm6,%xmm9
626         movdqa  %xmm0,%xmm8
627         movdqa  %xmm3,%xmm12
628         movdqa  %xmm4,%xmm11
629
630         pxor    %xmm15,%xmm10
631         pxor    %xmm3,%xmm9
632         pxor    %xmm5,%xmm8
633         movdqa  %xmm10,%xmm13
634         pxor    %xmm15,%xmm12
635         movdqa  %xmm9,%xmm7
636         pxor    %xmm1,%xmm11
637         movdqa  %xmm10,%xmm14
638
639         por     %xmm8,%xmm9
640         por     %xmm11,%xmm10
641         pxor    %xmm7,%xmm14
642         pand    %xmm11,%xmm13
643         pxor    %xmm8,%xmm11
644         pand    %xmm8,%xmm7
645         pand    %xmm11,%xmm14
646         movdqa  %xmm5,%xmm11
647         pxor    %xmm1,%xmm11
648         pand    %xmm11,%xmm12
649         pxor    %xmm12,%xmm10
650         pxor    %xmm12,%xmm9
651         movdqa  %xmm2,%xmm12
652         movdqa  %xmm0,%xmm11
653         pxor    %xmm6,%xmm12
654         pxor    %xmm4,%xmm11
655         movdqa  %xmm12,%xmm8
656         pand    %xmm11,%xmm12
657         por     %xmm11,%xmm8
658         pxor    %xmm12,%xmm7
659         pxor    %xmm14,%xmm10
660         pxor    %xmm13,%xmm9
661         pxor    %xmm14,%xmm8
662         movdqa  %xmm3,%xmm11
663         pxor    %xmm13,%xmm7
664         movdqa  %xmm15,%xmm12
665         pxor    %xmm13,%xmm8
666         movdqa  %xmm6,%xmm13
667         pand    %xmm5,%xmm11
668         movdqa  %xmm2,%xmm14
669         pand    %xmm1,%xmm12
670         pand    %xmm0,%xmm13
671         por     %xmm4,%xmm14
672         pxor    %xmm11,%xmm10
673         pxor    %xmm12,%xmm9
674         pxor    %xmm13,%xmm8
675         pxor    %xmm14,%xmm7
676
677
678
679
680
681         movdqa  %xmm10,%xmm11
682         pand    %xmm8,%xmm10
683         pxor    %xmm9,%xmm11
684
685         movdqa  %xmm7,%xmm13
686         movdqa  %xmm11,%xmm14
687         pxor    %xmm10,%xmm13
688         pand    %xmm13,%xmm14
689
690         movdqa  %xmm8,%xmm12
691         pxor    %xmm9,%xmm14
692         pxor    %xmm7,%xmm12
693
694         pxor    %xmm9,%xmm10
695
696         pand    %xmm10,%xmm12
697
698         movdqa  %xmm13,%xmm9
699         pxor    %xmm7,%xmm12
700
701         pxor    %xmm12,%xmm9
702         pxor    %xmm12,%xmm8
703
704         pand    %xmm7,%xmm9
705
706         pxor    %xmm9,%xmm13
707         pxor    %xmm9,%xmm8
708
709         pand    %xmm14,%xmm13
710
711         pxor    %xmm11,%xmm13
712         movdqa  %xmm4,%xmm11
713         movdqa  %xmm0,%xmm7
714         movdqa  %xmm14,%xmm9
715         pxor    %xmm13,%xmm9
716         pand    %xmm4,%xmm9
717         pxor    %xmm0,%xmm4
718         pand    %xmm14,%xmm0
719         pand    %xmm13,%xmm4
720         pxor    %xmm0,%xmm4
721         pxor    %xmm9,%xmm0
722         pxor    %xmm1,%xmm11
723         pxor    %xmm5,%xmm7
724         pxor    %xmm12,%xmm14
725         pxor    %xmm8,%xmm13
726         movdqa  %xmm14,%xmm10
727         movdqa  %xmm12,%xmm9
728         pxor    %xmm13,%xmm10
729         pxor    %xmm8,%xmm9
730         pand    %xmm11,%xmm10
731         pand    %xmm1,%xmm9
732         pxor    %xmm7,%xmm11
733         pxor    %xmm5,%xmm1
734         pand    %xmm14,%xmm7
735         pand    %xmm12,%xmm5
736         pand    %xmm13,%xmm11
737         pand    %xmm8,%xmm1
738         pxor    %xmm11,%xmm7
739         pxor    %xmm5,%xmm1
740         pxor    %xmm10,%xmm11
741         pxor    %xmm9,%xmm5
742         pxor    %xmm11,%xmm4
743         pxor    %xmm11,%xmm1
744         pxor    %xmm7,%xmm0
745         pxor    %xmm7,%xmm5
746
747         movdqa  %xmm2,%xmm11
748         movdqa  %xmm6,%xmm7
749         pxor    %xmm15,%xmm11
750         pxor    %xmm3,%xmm7
751         movdqa  %xmm14,%xmm10
752         movdqa  %xmm12,%xmm9
753         pxor    %xmm13,%xmm10
754         pxor    %xmm8,%xmm9
755         pand    %xmm11,%xmm10
756         pand    %xmm15,%xmm9
757         pxor    %xmm7,%xmm11
758         pxor    %xmm3,%xmm15
759         pand    %xmm14,%xmm7
760         pand    %xmm12,%xmm3
761         pand    %xmm13,%xmm11
762         pand    %xmm8,%xmm15
763         pxor    %xmm11,%xmm7
764         pxor    %xmm3,%xmm15
765         pxor    %xmm10,%xmm11
766         pxor    %xmm9,%xmm3
767         pxor    %xmm12,%xmm14
768         pxor    %xmm8,%xmm13
769         movdqa  %xmm14,%xmm10
770         pxor    %xmm13,%xmm10
771         pand    %xmm2,%xmm10
772         pxor    %xmm6,%xmm2
773         pand    %xmm14,%xmm6
774         pand    %xmm13,%xmm2
775         pxor    %xmm6,%xmm2
776         pxor    %xmm10,%xmm6
777         pxor    %xmm11,%xmm2
778         pxor    %xmm11,%xmm15
779         pxor    %xmm7,%xmm6
780         pxor    %xmm7,%xmm3
781         pxor    %xmm6,%xmm0
782         pxor    %xmm4,%xmm5
783
784         pxor    %xmm0,%xmm3
785         pxor    %xmm6,%xmm1
786         pxor    %xmm6,%xmm4
787         pxor    %xmm1,%xmm3
788         pxor    %xmm15,%xmm6
789         pxor    %xmm4,%xmm3
790         pxor    %xmm5,%xmm2
791         pxor    %xmm0,%xmm5
792         pxor    %xmm3,%xmm2
793
794         pxor    %xmm15,%xmm3
795         pxor    %xmm2,%xmm6
796         decl    %r10d
797         jl      .Ldec_done
798
799         pshufd  $0x4E,%xmm15,%xmm7
800         pshufd  $0x4E,%xmm2,%xmm13
801         pxor    %xmm15,%xmm7
802         pshufd  $0x4E,%xmm4,%xmm14
803         pxor    %xmm2,%xmm13
804         pshufd  $0x4E,%xmm0,%xmm8
805         pxor    %xmm4,%xmm14
806         pshufd  $0x4E,%xmm5,%xmm9
807         pxor    %xmm0,%xmm8
808         pshufd  $0x4E,%xmm3,%xmm10
809         pxor    %xmm5,%xmm9
810         pxor    %xmm13,%xmm15
811         pxor    %xmm13,%xmm0
812         pshufd  $0x4E,%xmm1,%xmm11
813         pxor    %xmm3,%xmm10
814         pxor    %xmm7,%xmm5
815         pxor    %xmm8,%xmm3
816         pshufd  $0x4E,%xmm6,%xmm12
817         pxor    %xmm1,%xmm11
818         pxor    %xmm14,%xmm0
819         pxor    %xmm9,%xmm1
820         pxor    %xmm6,%xmm12
821
822         pxor    %xmm14,%xmm5
823         pxor    %xmm13,%xmm3
824         pxor    %xmm13,%xmm1
825         pxor    %xmm10,%xmm6
826         pxor    %xmm11,%xmm2
827         pxor    %xmm14,%xmm1
828         pxor    %xmm14,%xmm6
829         pxor    %xmm12,%xmm4
830         pshufd  $0x93,%xmm15,%xmm7
831         pshufd  $0x93,%xmm0,%xmm8
832         pxor    %xmm7,%xmm15
833         pshufd  $0x93,%xmm5,%xmm9
834         pxor    %xmm8,%xmm0
835         pshufd  $0x93,%xmm3,%xmm10
836         pxor    %xmm9,%xmm5
837         pshufd  $0x93,%xmm1,%xmm11
838         pxor    %xmm10,%xmm3
839         pshufd  $0x93,%xmm6,%xmm12
840         pxor    %xmm11,%xmm1
841         pshufd  $0x93,%xmm2,%xmm13
842         pxor    %xmm12,%xmm6
843         pshufd  $0x93,%xmm4,%xmm14
844         pxor    %xmm13,%xmm2
845         pxor    %xmm14,%xmm4
846
847         pxor    %xmm15,%xmm8
848         pxor    %xmm4,%xmm7
849         pxor    %xmm4,%xmm8
850         pshufd  $0x4E,%xmm15,%xmm15
851         pxor    %xmm0,%xmm9
852         pshufd  $0x4E,%xmm0,%xmm0
853         pxor    %xmm1,%xmm12
854         pxor    %xmm7,%xmm15
855         pxor    %xmm6,%xmm13
856         pxor    %xmm8,%xmm0
857         pxor    %xmm3,%xmm11
858         pshufd  $0x4E,%xmm1,%xmm7
859         pxor    %xmm2,%xmm14
860         pshufd  $0x4E,%xmm6,%xmm8
861         pxor    %xmm5,%xmm10
862         pshufd  $0x4E,%xmm3,%xmm1
863         pxor    %xmm4,%xmm10
864         pshufd  $0x4E,%xmm4,%xmm6
865         pxor    %xmm4,%xmm11
866         pshufd  $0x4E,%xmm2,%xmm3
867         pxor    %xmm11,%xmm7
868         pshufd  $0x4E,%xmm5,%xmm2
869         pxor    %xmm12,%xmm8
870         pxor    %xmm1,%xmm10
871         pxor    %xmm14,%xmm6
872         pxor    %xmm3,%xmm13
873         movdqa  %xmm7,%xmm3
874         pxor    %xmm9,%xmm2
875         movdqa  %xmm13,%xmm5
876         movdqa  %xmm8,%xmm4
877         movdqa  %xmm2,%xmm1
878         movdqa  %xmm10,%xmm2
879         movdqa  -16(%r11),%xmm7
880         jnz     .Ldec_loop
881         movdqa  -32(%r11),%xmm7
882         jmp     .Ldec_loop
883 .align  16
884 .Ldec_done:
885         movdqa  0(%r11),%xmm7
886         movdqa  16(%r11),%xmm8
887         movdqa  %xmm2,%xmm9
888         psrlq   $1,%xmm2
889         movdqa  %xmm1,%xmm10
890         psrlq   $1,%xmm1
891         pxor    %xmm4,%xmm2
892         pxor    %xmm6,%xmm1
893         pand    %xmm7,%xmm2
894         pand    %xmm7,%xmm1
895         pxor    %xmm2,%xmm4
896         psllq   $1,%xmm2
897         pxor    %xmm1,%xmm6
898         psllq   $1,%xmm1
899         pxor    %xmm9,%xmm2
900         pxor    %xmm10,%xmm1
901         movdqa  %xmm5,%xmm9
902         psrlq   $1,%xmm5
903         movdqa  %xmm15,%xmm10
904         psrlq   $1,%xmm15
905         pxor    %xmm3,%xmm5
906         pxor    %xmm0,%xmm15
907         pand    %xmm7,%xmm5
908         pand    %xmm7,%xmm15
909         pxor    %xmm5,%xmm3
910         psllq   $1,%xmm5
911         pxor    %xmm15,%xmm0
912         psllq   $1,%xmm15
913         pxor    %xmm9,%xmm5
914         pxor    %xmm10,%xmm15
915         movdqa  32(%r11),%xmm7
916         movdqa  %xmm6,%xmm9
917         psrlq   $2,%xmm6
918         movdqa  %xmm1,%xmm10
919         psrlq   $2,%xmm1
920         pxor    %xmm4,%xmm6
921         pxor    %xmm2,%xmm1
922         pand    %xmm8,%xmm6
923         pand    %xmm8,%xmm1
924         pxor    %xmm6,%xmm4
925         psllq   $2,%xmm6
926         pxor    %xmm1,%xmm2
927         psllq   $2,%xmm1
928         pxor    %xmm9,%xmm6
929         pxor    %xmm10,%xmm1
930         movdqa  %xmm0,%xmm9
931         psrlq   $2,%xmm0
932         movdqa  %xmm15,%xmm10
933         psrlq   $2,%xmm15
934         pxor    %xmm3,%xmm0
935         pxor    %xmm5,%xmm15
936         pand    %xmm8,%xmm0
937         pand    %xmm8,%xmm15
938         pxor    %xmm0,%xmm3
939         psllq   $2,%xmm0
940         pxor    %xmm15,%xmm5
941         psllq   $2,%xmm15
942         pxor    %xmm9,%xmm0
943         pxor    %xmm10,%xmm15
944         movdqa  %xmm3,%xmm9
945         psrlq   $4,%xmm3
946         movdqa  %xmm5,%xmm10
947         psrlq   $4,%xmm5
948         pxor    %xmm4,%xmm3
949         pxor    %xmm2,%xmm5
950         pand    %xmm7,%xmm3
951         pand    %xmm7,%xmm5
952         pxor    %xmm3,%xmm4
953         psllq   $4,%xmm3
954         pxor    %xmm5,%xmm2
955         psllq   $4,%xmm5
956         pxor    %xmm9,%xmm3
957         pxor    %xmm10,%xmm5
958         movdqa  %xmm0,%xmm9
959         psrlq   $4,%xmm0
960         movdqa  %xmm15,%xmm10
961         psrlq   $4,%xmm15
962         pxor    %xmm6,%xmm0
963         pxor    %xmm1,%xmm15
964         pand    %xmm7,%xmm0
965         pand    %xmm7,%xmm15
966         pxor    %xmm0,%xmm6
967         psllq   $4,%xmm0
968         pxor    %xmm15,%xmm1
969         psllq   $4,%xmm15
970         pxor    %xmm9,%xmm0
971         pxor    %xmm10,%xmm15
972         movdqa  (%rax),%xmm7
973         pxor    %xmm7,%xmm5
974         pxor    %xmm7,%xmm3
975         pxor    %xmm7,%xmm1
976         pxor    %xmm7,%xmm6
977         pxor    %xmm7,%xmm2
978         pxor    %xmm7,%xmm4
979         pxor    %xmm7,%xmm15
980         pxor    %xmm7,%xmm0
981         .byte   0xf3,0xc3
982 .size   _bsaes_decrypt8,.-_bsaes_decrypt8
983 .type   _bsaes_key_convert,@function
984 .align  16
985 _bsaes_key_convert:
986         leaq    .Lmasks(%rip),%r11
987         movdqu  (%rcx),%xmm7
988         leaq    16(%rcx),%rcx
989         movdqa  0(%r11),%xmm0
990         movdqa  16(%r11),%xmm1
991         movdqa  32(%r11),%xmm2
992         movdqa  48(%r11),%xmm3
993         movdqa  64(%r11),%xmm4
994         pcmpeqd %xmm5,%xmm5
995
996         movdqu  (%rcx),%xmm6
997         movdqa  %xmm7,(%rax)
998         leaq    16(%rax),%rax
999         decl    %r10d
1000         jmp     .Lkey_loop
1001 .align  16
1002 .Lkey_loop:
1003 .byte   102,15,56,0,244
1004
1005         movdqa  %xmm0,%xmm8
1006         movdqa  %xmm1,%xmm9
1007
1008         pand    %xmm6,%xmm8
1009         pand    %xmm6,%xmm9
1010         movdqa  %xmm2,%xmm10
1011         pcmpeqb %xmm0,%xmm8
1012         psllq   $4,%xmm0
1013         movdqa  %xmm3,%xmm11
1014         pcmpeqb %xmm1,%xmm9
1015         psllq   $4,%xmm1
1016
1017         pand    %xmm6,%xmm10
1018         pand    %xmm6,%xmm11
1019         movdqa  %xmm0,%xmm12
1020         pcmpeqb %xmm2,%xmm10
1021         psllq   $4,%xmm2
1022         movdqa  %xmm1,%xmm13
1023         pcmpeqb %xmm3,%xmm11
1024         psllq   $4,%xmm3
1025
1026         movdqa  %xmm2,%xmm14
1027         movdqa  %xmm3,%xmm15
1028         pxor    %xmm5,%xmm8
1029         pxor    %xmm5,%xmm9
1030
1031         pand    %xmm6,%xmm12
1032         pand    %xmm6,%xmm13
1033         movdqa  %xmm8,0(%rax)
1034         pcmpeqb %xmm0,%xmm12
1035         psrlq   $4,%xmm0
1036         movdqa  %xmm9,16(%rax)
1037         pcmpeqb %xmm1,%xmm13
1038         psrlq   $4,%xmm1
1039         leaq    16(%rcx),%rcx
1040
1041         pand    %xmm6,%xmm14
1042         pand    %xmm6,%xmm15
1043         movdqa  %xmm10,32(%rax)
1044         pcmpeqb %xmm2,%xmm14
1045         psrlq   $4,%xmm2
1046         movdqa  %xmm11,48(%rax)
1047         pcmpeqb %xmm3,%xmm15
1048         psrlq   $4,%xmm3
1049         movdqu  (%rcx),%xmm6
1050
1051         pxor    %xmm5,%xmm13
1052         pxor    %xmm5,%xmm14
1053         movdqa  %xmm12,64(%rax)
1054         movdqa  %xmm13,80(%rax)
1055         movdqa  %xmm14,96(%rax)
1056         movdqa  %xmm15,112(%rax)
1057         leaq    128(%rax),%rax
1058         decl    %r10d
1059         jnz     .Lkey_loop
1060
1061         movdqa  80(%r11),%xmm7
1062
1063         .byte   0xf3,0xc3
1064 .size   _bsaes_key_convert,.-_bsaes_key_convert
1065
1066 .globl  bsaes_cbc_encrypt
1067 .type   bsaes_cbc_encrypt,@function
1068 .align  16
1069 bsaes_cbc_encrypt:
1070         cmpl    $0,%r9d
1071         jne     asm_AES_cbc_encrypt
1072         cmpq    $128,%rdx
1073         jb      asm_AES_cbc_encrypt
1074
1075         movq    %rsp,%rax
1076 .Lcbc_dec_prologue:
1077         pushq   %rbp
1078         pushq   %rbx
1079         pushq   %r12
1080         pushq   %r13
1081         pushq   %r14
1082         pushq   %r15
1083         leaq    -72(%rsp),%rsp
1084         movq    %rsp,%rbp
1085         movl    240(%rcx),%eax
1086         movq    %rdi,%r12
1087         movq    %rsi,%r13
1088         movq    %rdx,%r14
1089         movq    %rcx,%r15
1090         movq    %r8,%rbx
1091         shrq    $4,%r14
1092
1093         movl    %eax,%edx
1094         shlq    $7,%rax
1095         subq    $96,%rax
1096         subq    %rax,%rsp
1097
1098         movq    %rsp,%rax
1099         movq    %r15,%rcx
1100         movl    %edx,%r10d
1101         call    _bsaes_key_convert
1102         pxor    (%rsp),%xmm7
1103         movdqa  %xmm6,(%rax)
1104         movdqa  %xmm7,(%rsp)
1105
1106         movdqu  (%rbx),%xmm14
1107         subq    $8,%r14
1108 .Lcbc_dec_loop:
1109         movdqu  0(%r12),%xmm15
1110         movdqu  16(%r12),%xmm0
1111         movdqu  32(%r12),%xmm1
1112         movdqu  48(%r12),%xmm2
1113         movdqu  64(%r12),%xmm3
1114         movdqu  80(%r12),%xmm4
1115         movq    %rsp,%rax
1116         movdqu  96(%r12),%xmm5
1117         movl    %edx,%r10d
1118         movdqu  112(%r12),%xmm6
1119         movdqa  %xmm14,32(%rbp)
1120
1121         call    _bsaes_decrypt8
1122
1123         pxor    32(%rbp),%xmm15
1124         movdqu  0(%r12),%xmm7
1125         movdqu  16(%r12),%xmm8
1126         pxor    %xmm7,%xmm0
1127         movdqu  32(%r12),%xmm9
1128         pxor    %xmm8,%xmm5
1129         movdqu  48(%r12),%xmm10
1130         pxor    %xmm9,%xmm3
1131         movdqu  64(%r12),%xmm11
1132         pxor    %xmm10,%xmm1
1133         movdqu  80(%r12),%xmm12
1134         pxor    %xmm11,%xmm6
1135         movdqu  96(%r12),%xmm13
1136         pxor    %xmm12,%xmm2
1137         movdqu  112(%r12),%xmm14
1138         pxor    %xmm13,%xmm4
1139         movdqu  %xmm15,0(%r13)
1140         leaq    128(%r12),%r12
1141         movdqu  %xmm0,16(%r13)
1142         movdqu  %xmm5,32(%r13)
1143         movdqu  %xmm3,48(%r13)
1144         movdqu  %xmm1,64(%r13)
1145         movdqu  %xmm6,80(%r13)
1146         movdqu  %xmm2,96(%r13)
1147         movdqu  %xmm4,112(%r13)
1148         leaq    128(%r13),%r13
1149         subq    $8,%r14
1150         jnc     .Lcbc_dec_loop
1151
1152         addq    $8,%r14
1153         jz      .Lcbc_dec_done
1154
1155         movdqu  0(%r12),%xmm15
1156         movq    %rsp,%rax
1157         movl    %edx,%r10d
1158         cmpq    $2,%r14
1159         jb      .Lcbc_dec_one
1160         movdqu  16(%r12),%xmm0
1161         je      .Lcbc_dec_two
1162         movdqu  32(%r12),%xmm1
1163         cmpq    $4,%r14
1164         jb      .Lcbc_dec_three
1165         movdqu  48(%r12),%xmm2
1166         je      .Lcbc_dec_four
1167         movdqu  64(%r12),%xmm3
1168         cmpq    $6,%r14
1169         jb      .Lcbc_dec_five
1170         movdqu  80(%r12),%xmm4
1171         je      .Lcbc_dec_six
1172         movdqu  96(%r12),%xmm5
1173         movdqa  %xmm14,32(%rbp)
1174         call    _bsaes_decrypt8
1175         pxor    32(%rbp),%xmm15
1176         movdqu  0(%r12),%xmm7
1177         movdqu  16(%r12),%xmm8
1178         pxor    %xmm7,%xmm0
1179         movdqu  32(%r12),%xmm9
1180         pxor    %xmm8,%xmm5
1181         movdqu  48(%r12),%xmm10
1182         pxor    %xmm9,%xmm3
1183         movdqu  64(%r12),%xmm11
1184         pxor    %xmm10,%xmm1
1185         movdqu  80(%r12),%xmm12
1186         pxor    %xmm11,%xmm6
1187         movdqu  96(%r12),%xmm14
1188         pxor    %xmm12,%xmm2
1189         movdqu  %xmm15,0(%r13)
1190         movdqu  %xmm0,16(%r13)
1191         movdqu  %xmm5,32(%r13)
1192         movdqu  %xmm3,48(%r13)
1193         movdqu  %xmm1,64(%r13)
1194         movdqu  %xmm6,80(%r13)
1195         movdqu  %xmm2,96(%r13)
1196         jmp     .Lcbc_dec_done
1197 .align  16
1198 .Lcbc_dec_six:
1199         movdqa  %xmm14,32(%rbp)
1200         call    _bsaes_decrypt8
1201         pxor    32(%rbp),%xmm15
1202         movdqu  0(%r12),%xmm7
1203         movdqu  16(%r12),%xmm8
1204         pxor    %xmm7,%xmm0
1205         movdqu  32(%r12),%xmm9
1206         pxor    %xmm8,%xmm5
1207         movdqu  48(%r12),%xmm10
1208         pxor    %xmm9,%xmm3
1209         movdqu  64(%r12),%xmm11
1210         pxor    %xmm10,%xmm1
1211         movdqu  80(%r12),%xmm14
1212         pxor    %xmm11,%xmm6
1213         movdqu  %xmm15,0(%r13)
1214         movdqu  %xmm0,16(%r13)
1215         movdqu  %xmm5,32(%r13)
1216         movdqu  %xmm3,48(%r13)
1217         movdqu  %xmm1,64(%r13)
1218         movdqu  %xmm6,80(%r13)
1219         jmp     .Lcbc_dec_done
1220 .align  16
1221 .Lcbc_dec_five:
1222         movdqa  %xmm14,32(%rbp)
1223         call    _bsaes_decrypt8
1224         pxor    32(%rbp),%xmm15
1225         movdqu  0(%r12),%xmm7
1226         movdqu  16(%r12),%xmm8
1227         pxor    %xmm7,%xmm0
1228         movdqu  32(%r12),%xmm9
1229         pxor    %xmm8,%xmm5
1230         movdqu  48(%r12),%xmm10
1231         pxor    %xmm9,%xmm3
1232         movdqu  64(%r12),%xmm14
1233         pxor    %xmm10,%xmm1
1234         movdqu  %xmm15,0(%r13)
1235         movdqu  %xmm0,16(%r13)
1236         movdqu  %xmm5,32(%r13)
1237         movdqu  %xmm3,48(%r13)
1238         movdqu  %xmm1,64(%r13)
1239         jmp     .Lcbc_dec_done
1240 .align  16
1241 .Lcbc_dec_four:
1242         movdqa  %xmm14,32(%rbp)
1243         call    _bsaes_decrypt8
1244         pxor    32(%rbp),%xmm15
1245         movdqu  0(%r12),%xmm7
1246         movdqu  16(%r12),%xmm8
1247         pxor    %xmm7,%xmm0
1248         movdqu  32(%r12),%xmm9
1249         pxor    %xmm8,%xmm5
1250         movdqu  48(%r12),%xmm14
1251         pxor    %xmm9,%xmm3
1252         movdqu  %xmm15,0(%r13)
1253         movdqu  %xmm0,16(%r13)
1254         movdqu  %xmm5,32(%r13)
1255         movdqu  %xmm3,48(%r13)
1256         jmp     .Lcbc_dec_done
1257 .align  16
1258 .Lcbc_dec_three:
1259         movdqa  %xmm14,32(%rbp)
1260         call    _bsaes_decrypt8
1261         pxor    32(%rbp),%xmm15
1262         movdqu  0(%r12),%xmm7
1263         movdqu  16(%r12),%xmm8
1264         pxor    %xmm7,%xmm0
1265         movdqu  32(%r12),%xmm14
1266         pxor    %xmm8,%xmm5
1267         movdqu  %xmm15,0(%r13)
1268         movdqu  %xmm0,16(%r13)
1269         movdqu  %xmm5,32(%r13)
1270         jmp     .Lcbc_dec_done
1271 .align  16
1272 .Lcbc_dec_two:
1273         movdqa  %xmm14,32(%rbp)
1274         call    _bsaes_decrypt8
1275         pxor    32(%rbp),%xmm15
1276         movdqu  0(%r12),%xmm7
1277         movdqu  16(%r12),%xmm14
1278         pxor    %xmm7,%xmm0
1279         movdqu  %xmm15,0(%r13)
1280         movdqu  %xmm0,16(%r13)
1281         jmp     .Lcbc_dec_done
1282 .align  16
1283 .Lcbc_dec_one:
1284         leaq    (%r12),%rdi
1285         leaq    32(%rbp),%rsi
1286         leaq    (%r15),%rdx
1287         call    asm_AES_decrypt
1288         pxor    32(%rbp),%xmm14
1289         movdqu  %xmm14,(%r13)
1290         movdqa  %xmm15,%xmm14
1291
1292 .Lcbc_dec_done:
1293         movdqu  %xmm14,(%rbx)
1294         leaq    (%rsp),%rax
1295         pxor    %xmm0,%xmm0
1296 .Lcbc_dec_bzero:
1297         movdqa  %xmm0,0(%rax)
1298         movdqa  %xmm0,16(%rax)
1299         leaq    32(%rax),%rax
1300         cmpq    %rax,%rbp
1301         ja      .Lcbc_dec_bzero
1302
1303         leaq    (%rbp),%rsp
1304         movq    72(%rsp),%r15
1305         movq    80(%rsp),%r14
1306         movq    88(%rsp),%r13
1307         movq    96(%rsp),%r12
1308         movq    104(%rsp),%rbx
1309         movq    112(%rsp),%rax
1310         leaq    120(%rsp),%rsp
1311         movq    %rax,%rbp
1312 .Lcbc_dec_epilogue:
1313         .byte   0xf3,0xc3
1314 .size   bsaes_cbc_encrypt,.-bsaes_cbc_encrypt
1315
1316 .globl  bsaes_ctr32_encrypt_blocks
1317 .type   bsaes_ctr32_encrypt_blocks,@function
1318 .align  16
1319 bsaes_ctr32_encrypt_blocks:
1320         movq    %rsp,%rax
1321 .Lctr_enc_prologue:
1322         pushq   %rbp
1323         pushq   %rbx
1324         pushq   %r12
1325         pushq   %r13
1326         pushq   %r14
1327         pushq   %r15
1328         leaq    -72(%rsp),%rsp
1329         movq    %rsp,%rbp
1330         movdqu  (%r8),%xmm0
1331         movl    240(%rcx),%eax
1332         movq    %rdi,%r12
1333         movq    %rsi,%r13
1334         movq    %rdx,%r14
1335         movq    %rcx,%r15
1336         movdqa  %xmm0,32(%rbp)
1337         cmpq    $8,%rdx
1338         jb      .Lctr_enc_short
1339
1340         movl    %eax,%ebx
1341         shlq    $7,%rax
1342         subq    $96,%rax
1343         subq    %rax,%rsp
1344
1345         movq    %rsp,%rax
1346         movq    %r15,%rcx
1347         movl    %ebx,%r10d
1348         call    _bsaes_key_convert
1349         pxor    %xmm6,%xmm7
1350         movdqa  %xmm7,(%rax)
1351
1352         movdqa  (%rsp),%xmm8
1353         leaq    .LADD1(%rip),%r11
1354         movdqa  32(%rbp),%xmm15
1355         movdqa  -32(%r11),%xmm7
1356 .byte   102,68,15,56,0,199
1357 .byte   102,68,15,56,0,255
1358         movdqa  %xmm8,(%rsp)
1359         jmp     .Lctr_enc_loop
1360 .align  16
1361 .Lctr_enc_loop:
1362         movdqa  %xmm15,32(%rbp)
1363         movdqa  %xmm15,%xmm0
1364         movdqa  %xmm15,%xmm1
1365         paddd   0(%r11),%xmm0
1366         movdqa  %xmm15,%xmm2
1367         paddd   16(%r11),%xmm1
1368         movdqa  %xmm15,%xmm3
1369         paddd   32(%r11),%xmm2
1370         movdqa  %xmm15,%xmm4
1371         paddd   48(%r11),%xmm3
1372         movdqa  %xmm15,%xmm5
1373         paddd   64(%r11),%xmm4
1374         movdqa  %xmm15,%xmm6
1375         paddd   80(%r11),%xmm5
1376         paddd   96(%r11),%xmm6
1377
1378
1379
1380         movdqa  (%rsp),%xmm8
1381         leaq    16(%rsp),%rax
1382         movdqa  -16(%r11),%xmm7
1383         pxor    %xmm8,%xmm15
1384         pxor    %xmm8,%xmm0
1385         pxor    %xmm8,%xmm1
1386         pxor    %xmm8,%xmm2
1387 .byte   102,68,15,56,0,255
1388 .byte   102,15,56,0,199
1389         pxor    %xmm8,%xmm3
1390         pxor    %xmm8,%xmm4
1391 .byte   102,15,56,0,207
1392 .byte   102,15,56,0,215
1393         pxor    %xmm8,%xmm5
1394         pxor    %xmm8,%xmm6
1395 .byte   102,15,56,0,223
1396 .byte   102,15,56,0,231
1397 .byte   102,15,56,0,239
1398 .byte   102,15,56,0,247
1399         leaq    .LBS0(%rip),%r11
1400         movl    %ebx,%r10d
1401
1402         call    _bsaes_encrypt8_bitslice
1403
1404         subq    $8,%r14
1405         jc      .Lctr_enc_loop_done
1406
1407         movdqu  0(%r12),%xmm7
1408         movdqu  16(%r12),%xmm8
1409         movdqu  32(%r12),%xmm9
1410         movdqu  48(%r12),%xmm10
1411         movdqu  64(%r12),%xmm11
1412         movdqu  80(%r12),%xmm12
1413         movdqu  96(%r12),%xmm13
1414         movdqu  112(%r12),%xmm14
1415         leaq    128(%r12),%r12
1416         pxor    %xmm15,%xmm7
1417         movdqa  32(%rbp),%xmm15
1418         pxor    %xmm8,%xmm0
1419         movdqu  %xmm7,0(%r13)
1420         pxor    %xmm9,%xmm3
1421         movdqu  %xmm0,16(%r13)
1422         pxor    %xmm10,%xmm5
1423         movdqu  %xmm3,32(%r13)
1424         pxor    %xmm11,%xmm2
1425         movdqu  %xmm5,48(%r13)
1426         pxor    %xmm12,%xmm6
1427         movdqu  %xmm2,64(%r13)
1428         pxor    %xmm13,%xmm1
1429         movdqu  %xmm6,80(%r13)
1430         pxor    %xmm14,%xmm4
1431         movdqu  %xmm1,96(%r13)
1432         leaq    .LADD1(%rip),%r11
1433         movdqu  %xmm4,112(%r13)
1434         leaq    128(%r13),%r13
1435         paddd   112(%r11),%xmm15
1436         jnz     .Lctr_enc_loop
1437
1438         jmp     .Lctr_enc_done
1439 .align  16
1440 .Lctr_enc_loop_done:
1441         addq    $8,%r14
1442         movdqu  0(%r12),%xmm7
1443         pxor    %xmm7,%xmm15
1444         movdqu  %xmm15,0(%r13)
1445         cmpq    $2,%r14
1446         jb      .Lctr_enc_done
1447         movdqu  16(%r12),%xmm8
1448         pxor    %xmm8,%xmm0
1449         movdqu  %xmm0,16(%r13)
1450         je      .Lctr_enc_done
1451         movdqu  32(%r12),%xmm9
1452         pxor    %xmm9,%xmm3
1453         movdqu  %xmm3,32(%r13)
1454         cmpq    $4,%r14
1455         jb      .Lctr_enc_done
1456         movdqu  48(%r12),%xmm10
1457         pxor    %xmm10,%xmm5
1458         movdqu  %xmm5,48(%r13)
1459         je      .Lctr_enc_done
1460         movdqu  64(%r12),%xmm11
1461         pxor    %xmm11,%xmm2
1462         movdqu  %xmm2,64(%r13)
1463         cmpq    $6,%r14
1464         jb      .Lctr_enc_done
1465         movdqu  80(%r12),%xmm12
1466         pxor    %xmm12,%xmm6
1467         movdqu  %xmm6,80(%r13)
1468         je      .Lctr_enc_done
1469         movdqu  96(%r12),%xmm13
1470         pxor    %xmm13,%xmm1
1471         movdqu  %xmm1,96(%r13)
1472         jmp     .Lctr_enc_done
1473
1474 .align  16
1475 .Lctr_enc_short:
1476         leaq    32(%rbp),%rdi
1477         leaq    48(%rbp),%rsi
1478         leaq    (%r15),%rdx
1479         call    asm_AES_encrypt
1480         movdqu  (%r12),%xmm0
1481         leaq    16(%r12),%r12
1482         movl    44(%rbp),%eax
1483         bswapl  %eax
1484         pxor    48(%rbp),%xmm0
1485         incl    %eax
1486         movdqu  %xmm0,(%r13)
1487         bswapl  %eax
1488         leaq    16(%r13),%r13
1489         movl    %eax,44(%rsp)
1490         decq    %r14
1491         jnz     .Lctr_enc_short
1492
1493 .Lctr_enc_done:
1494         leaq    (%rsp),%rax
1495         pxor    %xmm0,%xmm0
1496 .Lctr_enc_bzero:
1497         movdqa  %xmm0,0(%rax)
1498         movdqa  %xmm0,16(%rax)
1499         leaq    32(%rax),%rax
1500         cmpq    %rax,%rbp
1501         ja      .Lctr_enc_bzero
1502
1503         leaq    (%rbp),%rsp
1504         movq    72(%rsp),%r15
1505         movq    80(%rsp),%r14
1506         movq    88(%rsp),%r13
1507         movq    96(%rsp),%r12
1508         movq    104(%rsp),%rbx
1509         movq    112(%rsp),%rax
1510         leaq    120(%rsp),%rsp
1511         movq    %rax,%rbp
1512 .Lctr_enc_epilogue:
1513         .byte   0xf3,0xc3
1514 .size   bsaes_ctr32_encrypt_blocks,.-bsaes_ctr32_encrypt_blocks
1515 .globl  bsaes_xts_encrypt
1516 .type   bsaes_xts_encrypt,@function
1517 .align  16
1518 bsaes_xts_encrypt:
1519         movq    %rsp,%rax
1520 .Lxts_enc_prologue:
1521         pushq   %rbp
1522         pushq   %rbx
1523         pushq   %r12
1524         pushq   %r13
1525         pushq   %r14
1526         pushq   %r15
1527         leaq    -72(%rsp),%rsp
1528         movq    %rsp,%rbp
1529         movq    %rdi,%r12
1530         movq    %rsi,%r13
1531         movq    %rdx,%r14
1532         movq    %rcx,%r15
1533
1534         leaq    (%r9),%rdi
1535         leaq    32(%rbp),%rsi
1536         leaq    (%r8),%rdx
1537         call    asm_AES_encrypt
1538
1539         movl    240(%r15),%eax
1540         movq    %r14,%rbx
1541
1542         movl    %eax,%edx
1543         shlq    $7,%rax
1544         subq    $96,%rax
1545         subq    %rax,%rsp
1546
1547         movq    %rsp,%rax
1548         movq    %r15,%rcx
1549         movl    %edx,%r10d
1550         call    _bsaes_key_convert
1551         pxor    %xmm6,%xmm7
1552         movdqa  %xmm7,(%rax)
1553
1554         andq    $-16,%r14
1555         subq    $0x80,%rsp
1556         movdqa  32(%rbp),%xmm6
1557
1558         pxor    %xmm14,%xmm14
1559         movdqa  .Lxts_magic(%rip),%xmm12
1560         pcmpgtd %xmm6,%xmm14
1561
1562         subq    $0x80,%r14
1563         jc      .Lxts_enc_short
1564         jmp     .Lxts_enc_loop
1565
1566 .align  16
1567 .Lxts_enc_loop:
1568         pshufd  $0x13,%xmm14,%xmm13
1569         pxor    %xmm14,%xmm14
1570         movdqa  %xmm6,%xmm15
1571         movdqa  %xmm6,0(%rsp)
1572         paddq   %xmm6,%xmm6
1573         pand    %xmm12,%xmm13
1574         pcmpgtd %xmm6,%xmm14
1575         pxor    %xmm13,%xmm6
1576         pshufd  $0x13,%xmm14,%xmm13
1577         pxor    %xmm14,%xmm14
1578         movdqa  %xmm6,%xmm0
1579         movdqa  %xmm6,16(%rsp)
1580         paddq   %xmm6,%xmm6
1581         pand    %xmm12,%xmm13
1582         pcmpgtd %xmm6,%xmm14
1583         pxor    %xmm13,%xmm6
1584         movdqu  0(%r12),%xmm7
1585         pshufd  $0x13,%xmm14,%xmm13
1586         pxor    %xmm14,%xmm14
1587         movdqa  %xmm6,%xmm1
1588         movdqa  %xmm6,32(%rsp)
1589         paddq   %xmm6,%xmm6
1590         pand    %xmm12,%xmm13
1591         pcmpgtd %xmm6,%xmm14
1592         pxor    %xmm13,%xmm6
1593         movdqu  16(%r12),%xmm8
1594         pxor    %xmm7,%xmm15
1595         pshufd  $0x13,%xmm14,%xmm13
1596         pxor    %xmm14,%xmm14
1597         movdqa  %xmm6,%xmm2
1598         movdqa  %xmm6,48(%rsp)
1599         paddq   %xmm6,%xmm6
1600         pand    %xmm12,%xmm13
1601         pcmpgtd %xmm6,%xmm14
1602         pxor    %xmm13,%xmm6
1603         movdqu  32(%r12),%xmm9
1604         pxor    %xmm8,%xmm0
1605         pshufd  $0x13,%xmm14,%xmm13
1606         pxor    %xmm14,%xmm14
1607         movdqa  %xmm6,%xmm3
1608         movdqa  %xmm6,64(%rsp)
1609         paddq   %xmm6,%xmm6
1610         pand    %xmm12,%xmm13
1611         pcmpgtd %xmm6,%xmm14
1612         pxor    %xmm13,%xmm6
1613         movdqu  48(%r12),%xmm10
1614         pxor    %xmm9,%xmm1
1615         pshufd  $0x13,%xmm14,%xmm13
1616         pxor    %xmm14,%xmm14
1617         movdqa  %xmm6,%xmm4
1618         movdqa  %xmm6,80(%rsp)
1619         paddq   %xmm6,%xmm6
1620         pand    %xmm12,%xmm13
1621         pcmpgtd %xmm6,%xmm14
1622         pxor    %xmm13,%xmm6
1623         movdqu  64(%r12),%xmm11
1624         pxor    %xmm10,%xmm2
1625         pshufd  $0x13,%xmm14,%xmm13
1626         pxor    %xmm14,%xmm14
1627         movdqa  %xmm6,%xmm5
1628         movdqa  %xmm6,96(%rsp)
1629         paddq   %xmm6,%xmm6
1630         pand    %xmm12,%xmm13
1631         pcmpgtd %xmm6,%xmm14
1632         pxor    %xmm13,%xmm6
1633         movdqu  80(%r12),%xmm12
1634         pxor    %xmm11,%xmm3
1635         movdqu  96(%r12),%xmm13
1636         pxor    %xmm12,%xmm4
1637         movdqu  112(%r12),%xmm14
1638         leaq    128(%r12),%r12
1639         movdqa  %xmm6,112(%rsp)
1640         pxor    %xmm13,%xmm5
1641         leaq    128(%rsp),%rax
1642         pxor    %xmm14,%xmm6
1643         movl    %edx,%r10d
1644
1645         call    _bsaes_encrypt8
1646
1647         pxor    0(%rsp),%xmm15
1648         pxor    16(%rsp),%xmm0
1649         movdqu  %xmm15,0(%r13)
1650         pxor    32(%rsp),%xmm3
1651         movdqu  %xmm0,16(%r13)
1652         pxor    48(%rsp),%xmm5
1653         movdqu  %xmm3,32(%r13)
1654         pxor    64(%rsp),%xmm2
1655         movdqu  %xmm5,48(%r13)
1656         pxor    80(%rsp),%xmm6
1657         movdqu  %xmm2,64(%r13)
1658         pxor    96(%rsp),%xmm1
1659         movdqu  %xmm6,80(%r13)
1660         pxor    112(%rsp),%xmm4
1661         movdqu  %xmm1,96(%r13)
1662         movdqu  %xmm4,112(%r13)
1663         leaq    128(%r13),%r13
1664
1665         movdqa  112(%rsp),%xmm6
1666         pxor    %xmm14,%xmm14
1667         movdqa  .Lxts_magic(%rip),%xmm12
1668         pcmpgtd %xmm6,%xmm14
1669         pshufd  $0x13,%xmm14,%xmm13
1670         pxor    %xmm14,%xmm14
1671         paddq   %xmm6,%xmm6
1672         pand    %xmm12,%xmm13
1673         pcmpgtd %xmm6,%xmm14
1674         pxor    %xmm13,%xmm6
1675
1676         subq    $0x80,%r14
1677         jnc     .Lxts_enc_loop
1678
1679 .Lxts_enc_short:
1680         addq    $0x80,%r14
1681         jz      .Lxts_enc_done
1682         pshufd  $0x13,%xmm14,%xmm13
1683         pxor    %xmm14,%xmm14
1684         movdqa  %xmm6,%xmm15
1685         movdqa  %xmm6,0(%rsp)
1686         paddq   %xmm6,%xmm6
1687         pand    %xmm12,%xmm13
1688         pcmpgtd %xmm6,%xmm14
1689         pxor    %xmm13,%xmm6
1690         pshufd  $0x13,%xmm14,%xmm13
1691         pxor    %xmm14,%xmm14
1692         movdqa  %xmm6,%xmm0
1693         movdqa  %xmm6,16(%rsp)
1694         paddq   %xmm6,%xmm6
1695         pand    %xmm12,%xmm13
1696         pcmpgtd %xmm6,%xmm14
1697         pxor    %xmm13,%xmm6
1698         movdqu  0(%r12),%xmm7
1699         cmpq    $16,%r14
1700         je      .Lxts_enc_1
1701         pshufd  $0x13,%xmm14,%xmm13
1702         pxor    %xmm14,%xmm14
1703         movdqa  %xmm6,%xmm1
1704         movdqa  %xmm6,32(%rsp)
1705         paddq   %xmm6,%xmm6
1706         pand    %xmm12,%xmm13
1707         pcmpgtd %xmm6,%xmm14
1708         pxor    %xmm13,%xmm6
1709         movdqu  16(%r12),%xmm8
1710         cmpq    $32,%r14
1711         je      .Lxts_enc_2
1712         pxor    %xmm7,%xmm15
1713         pshufd  $0x13,%xmm14,%xmm13
1714         pxor    %xmm14,%xmm14
1715         movdqa  %xmm6,%xmm2
1716         movdqa  %xmm6,48(%rsp)
1717         paddq   %xmm6,%xmm6
1718         pand    %xmm12,%xmm13
1719         pcmpgtd %xmm6,%xmm14
1720         pxor    %xmm13,%xmm6
1721         movdqu  32(%r12),%xmm9
1722         cmpq    $48,%r14
1723         je      .Lxts_enc_3
1724         pxor    %xmm8,%xmm0
1725         pshufd  $0x13,%xmm14,%xmm13
1726         pxor    %xmm14,%xmm14
1727         movdqa  %xmm6,%xmm3
1728         movdqa  %xmm6,64(%rsp)
1729         paddq   %xmm6,%xmm6
1730         pand    %xmm12,%xmm13
1731         pcmpgtd %xmm6,%xmm14
1732         pxor    %xmm13,%xmm6
1733         movdqu  48(%r12),%xmm10
1734         cmpq    $64,%r14
1735         je      .Lxts_enc_4
1736         pxor    %xmm9,%xmm1
1737         pshufd  $0x13,%xmm14,%xmm13
1738         pxor    %xmm14,%xmm14
1739         movdqa  %xmm6,%xmm4
1740         movdqa  %xmm6,80(%rsp)
1741         paddq   %xmm6,%xmm6
1742         pand    %xmm12,%xmm13
1743         pcmpgtd %xmm6,%xmm14
1744         pxor    %xmm13,%xmm6
1745         movdqu  64(%r12),%xmm11
1746         cmpq    $80,%r14
1747         je      .Lxts_enc_5
1748         pxor    %xmm10,%xmm2
1749         pshufd  $0x13,%xmm14,%xmm13
1750         pxor    %xmm14,%xmm14
1751         movdqa  %xmm6,%xmm5
1752         movdqa  %xmm6,96(%rsp)
1753         paddq   %xmm6,%xmm6
1754         pand    %xmm12,%xmm13
1755         pcmpgtd %xmm6,%xmm14
1756         pxor    %xmm13,%xmm6
1757         movdqu  80(%r12),%xmm12
1758         cmpq    $96,%r14
1759         je      .Lxts_enc_6
1760         pxor    %xmm11,%xmm3
1761         movdqu  96(%r12),%xmm13
1762         pxor    %xmm12,%xmm4
1763         movdqa  %xmm6,112(%rsp)
1764         leaq    112(%r12),%r12
1765         pxor    %xmm13,%xmm5
1766         leaq    128(%rsp),%rax
1767         movl    %edx,%r10d
1768
1769         call    _bsaes_encrypt8
1770
1771         pxor    0(%rsp),%xmm15
1772         pxor    16(%rsp),%xmm0
1773         movdqu  %xmm15,0(%r13)
1774         pxor    32(%rsp),%xmm3
1775         movdqu  %xmm0,16(%r13)
1776         pxor    48(%rsp),%xmm5
1777         movdqu  %xmm3,32(%r13)
1778         pxor    64(%rsp),%xmm2
1779         movdqu  %xmm5,48(%r13)
1780         pxor    80(%rsp),%xmm6
1781         movdqu  %xmm2,64(%r13)
1782         pxor    96(%rsp),%xmm1
1783         movdqu  %xmm6,80(%r13)
1784         movdqu  %xmm1,96(%r13)
1785         leaq    112(%r13),%r13
1786
1787         movdqa  112(%rsp),%xmm6
1788         jmp     .Lxts_enc_done
1789 .align  16
1790 .Lxts_enc_6:
1791         pxor    %xmm11,%xmm3
1792         leaq    96(%r12),%r12
1793         pxor    %xmm12,%xmm4
1794         leaq    128(%rsp),%rax
1795         movl    %edx,%r10d
1796
1797         call    _bsaes_encrypt8
1798
1799         pxor    0(%rsp),%xmm15
1800         pxor    16(%rsp),%xmm0
1801         movdqu  %xmm15,0(%r13)
1802         pxor    32(%rsp),%xmm3
1803         movdqu  %xmm0,16(%r13)
1804         pxor    48(%rsp),%xmm5
1805         movdqu  %xmm3,32(%r13)
1806         pxor    64(%rsp),%xmm2
1807         movdqu  %xmm5,48(%r13)
1808         pxor    80(%rsp),%xmm6
1809         movdqu  %xmm2,64(%r13)
1810         movdqu  %xmm6,80(%r13)
1811         leaq    96(%r13),%r13
1812
1813         movdqa  96(%rsp),%xmm6
1814         jmp     .Lxts_enc_done
1815 .align  16
1816 .Lxts_enc_5:
1817         pxor    %xmm10,%xmm2
1818         leaq    80(%r12),%r12
1819         pxor    %xmm11,%xmm3
1820         leaq    128(%rsp),%rax
1821         movl    %edx,%r10d
1822
1823         call    _bsaes_encrypt8
1824
1825         pxor    0(%rsp),%xmm15
1826         pxor    16(%rsp),%xmm0
1827         movdqu  %xmm15,0(%r13)
1828         pxor    32(%rsp),%xmm3
1829         movdqu  %xmm0,16(%r13)
1830         pxor    48(%rsp),%xmm5
1831         movdqu  %xmm3,32(%r13)
1832         pxor    64(%rsp),%xmm2
1833         movdqu  %xmm5,48(%r13)
1834         movdqu  %xmm2,64(%r13)
1835         leaq    80(%r13),%r13
1836
1837         movdqa  80(%rsp),%xmm6
1838         jmp     .Lxts_enc_done
1839 .align  16
1840 .Lxts_enc_4:
1841         pxor    %xmm9,%xmm1
1842         leaq    64(%r12),%r12
1843         pxor    %xmm10,%xmm2
1844         leaq    128(%rsp),%rax
1845         movl    %edx,%r10d
1846
1847         call    _bsaes_encrypt8
1848
1849         pxor    0(%rsp),%xmm15
1850         pxor    16(%rsp),%xmm0
1851         movdqu  %xmm15,0(%r13)
1852         pxor    32(%rsp),%xmm3
1853         movdqu  %xmm0,16(%r13)
1854         pxor    48(%rsp),%xmm5
1855         movdqu  %xmm3,32(%r13)
1856         movdqu  %xmm5,48(%r13)
1857         leaq    64(%r13),%r13
1858
1859         movdqa  64(%rsp),%xmm6
1860         jmp     .Lxts_enc_done
1861 .align  16
1862 .Lxts_enc_3:
1863         pxor    %xmm8,%xmm0
1864         leaq    48(%r12),%r12
1865         pxor    %xmm9,%xmm1
1866         leaq    128(%rsp),%rax
1867         movl    %edx,%r10d
1868
1869         call    _bsaes_encrypt8
1870
1871         pxor    0(%rsp),%xmm15
1872         pxor    16(%rsp),%xmm0
1873         movdqu  %xmm15,0(%r13)
1874         pxor    32(%rsp),%xmm3
1875         movdqu  %xmm0,16(%r13)
1876         movdqu  %xmm3,32(%r13)
1877         leaq    48(%r13),%r13
1878
1879         movdqa  48(%rsp),%xmm6
1880         jmp     .Lxts_enc_done
1881 .align  16
1882 .Lxts_enc_2:
1883         pxor    %xmm7,%xmm15
1884         leaq    32(%r12),%r12
1885         pxor    %xmm8,%xmm0
1886         leaq    128(%rsp),%rax
1887         movl    %edx,%r10d
1888
1889         call    _bsaes_encrypt8
1890
1891         pxor    0(%rsp),%xmm15
1892         pxor    16(%rsp),%xmm0
1893         movdqu  %xmm15,0(%r13)
1894         movdqu  %xmm0,16(%r13)
1895         leaq    32(%r13),%r13
1896
1897         movdqa  32(%rsp),%xmm6
1898         jmp     .Lxts_enc_done
1899 .align  16
1900 .Lxts_enc_1:
1901         pxor    %xmm15,%xmm7
1902         leaq    16(%r12),%r12
1903         movdqa  %xmm7,32(%rbp)
1904         leaq    32(%rbp),%rdi
1905         leaq    32(%rbp),%rsi
1906         leaq    (%r15),%rdx
1907         call    asm_AES_encrypt
1908         pxor    32(%rbp),%xmm15
1909
1910
1911
1912
1913
1914         movdqu  %xmm15,0(%r13)
1915         leaq    16(%r13),%r13
1916
1917         movdqa  16(%rsp),%xmm6
1918
1919 .Lxts_enc_done:
1920         andl    $15,%ebx
1921         jz      .Lxts_enc_ret
1922         movq    %r13,%rdx
1923
1924 .Lxts_enc_steal:
1925         movzbl  (%r12),%eax
1926         movzbl  -16(%rdx),%ecx
1927         leaq    1(%r12),%r12
1928         movb    %al,-16(%rdx)
1929         movb    %cl,0(%rdx)
1930         leaq    1(%rdx),%rdx
1931         subl    $1,%ebx
1932         jnz     .Lxts_enc_steal
1933
1934         movdqu  -16(%r13),%xmm15
1935         leaq    32(%rbp),%rdi
1936         pxor    %xmm6,%xmm15
1937         leaq    32(%rbp),%rsi
1938         movdqa  %xmm15,32(%rbp)
1939         leaq    (%r15),%rdx
1940         call    asm_AES_encrypt
1941         pxor    32(%rbp),%xmm6
1942         movdqu  %xmm6,-16(%r13)
1943
1944 .Lxts_enc_ret:
1945         leaq    (%rsp),%rax
1946         pxor    %xmm0,%xmm0
1947 .Lxts_enc_bzero:
1948         movdqa  %xmm0,0(%rax)
1949         movdqa  %xmm0,16(%rax)
1950         leaq    32(%rax),%rax
1951         cmpq    %rax,%rbp
1952         ja      .Lxts_enc_bzero
1953
1954         leaq    (%rbp),%rsp
1955         movq    72(%rsp),%r15
1956         movq    80(%rsp),%r14
1957         movq    88(%rsp),%r13
1958         movq    96(%rsp),%r12
1959         movq    104(%rsp),%rbx
1960         movq    112(%rsp),%rax
1961         leaq    120(%rsp),%rsp
1962         movq    %rax,%rbp
1963 .Lxts_enc_epilogue:
1964         .byte   0xf3,0xc3
1965 .size   bsaes_xts_encrypt,.-bsaes_xts_encrypt
1966
1967 .globl  bsaes_xts_decrypt
1968 .type   bsaes_xts_decrypt,@function
1969 .align  16
1970 bsaes_xts_decrypt:
1971         movq    %rsp,%rax
1972 .Lxts_dec_prologue:
1973         pushq   %rbp
1974         pushq   %rbx
1975         pushq   %r12
1976         pushq   %r13
1977         pushq   %r14
1978         pushq   %r15
1979         leaq    -72(%rsp),%rsp
1980         movq    %rsp,%rbp
1981         movq    %rdi,%r12
1982         movq    %rsi,%r13
1983         movq    %rdx,%r14
1984         movq    %rcx,%r15
1985
1986         leaq    (%r9),%rdi
1987         leaq    32(%rbp),%rsi
1988         leaq    (%r8),%rdx
1989         call    asm_AES_encrypt
1990
1991         movl    240(%r15),%eax
1992         movq    %r14,%rbx
1993
1994         movl    %eax,%edx
1995         shlq    $7,%rax
1996         subq    $96,%rax
1997         subq    %rax,%rsp
1998
1999         movq    %rsp,%rax
2000         movq    %r15,%rcx
2001         movl    %edx,%r10d
2002         call    _bsaes_key_convert
2003         pxor    (%rsp),%xmm7
2004         movdqa  %xmm6,(%rax)
2005         movdqa  %xmm7,(%rsp)
2006
2007         xorl    %eax,%eax
2008         andq    $-16,%r14
2009         testl   $15,%ebx
2010         setnz   %al
2011         shlq    $4,%rax
2012         subq    %rax,%r14
2013
2014         subq    $0x80,%rsp
2015         movdqa  32(%rbp),%xmm6
2016
2017         pxor    %xmm14,%xmm14
2018         movdqa  .Lxts_magic(%rip),%xmm12
2019         pcmpgtd %xmm6,%xmm14
2020
2021         subq    $0x80,%r14
2022         jc      .Lxts_dec_short
2023         jmp     .Lxts_dec_loop
2024
2025 .align  16
2026 .Lxts_dec_loop:
2027         pshufd  $0x13,%xmm14,%xmm13
2028         pxor    %xmm14,%xmm14
2029         movdqa  %xmm6,%xmm15
2030         movdqa  %xmm6,0(%rsp)
2031         paddq   %xmm6,%xmm6
2032         pand    %xmm12,%xmm13
2033         pcmpgtd %xmm6,%xmm14
2034         pxor    %xmm13,%xmm6
2035         pshufd  $0x13,%xmm14,%xmm13
2036         pxor    %xmm14,%xmm14
2037         movdqa  %xmm6,%xmm0
2038         movdqa  %xmm6,16(%rsp)
2039         paddq   %xmm6,%xmm6
2040         pand    %xmm12,%xmm13
2041         pcmpgtd %xmm6,%xmm14
2042         pxor    %xmm13,%xmm6
2043         movdqu  0(%r12),%xmm7
2044         pshufd  $0x13,%xmm14,%xmm13
2045         pxor    %xmm14,%xmm14
2046         movdqa  %xmm6,%xmm1
2047         movdqa  %xmm6,32(%rsp)
2048         paddq   %xmm6,%xmm6
2049         pand    %xmm12,%xmm13
2050         pcmpgtd %xmm6,%xmm14
2051         pxor    %xmm13,%xmm6
2052         movdqu  16(%r12),%xmm8
2053         pxor    %xmm7,%xmm15
2054         pshufd  $0x13,%xmm14,%xmm13
2055         pxor    %xmm14,%xmm14
2056         movdqa  %xmm6,%xmm2
2057         movdqa  %xmm6,48(%rsp)
2058         paddq   %xmm6,%xmm6
2059         pand    %xmm12,%xmm13
2060         pcmpgtd %xmm6,%xmm14
2061         pxor    %xmm13,%xmm6
2062         movdqu  32(%r12),%xmm9
2063         pxor    %xmm8,%xmm0
2064         pshufd  $0x13,%xmm14,%xmm13
2065         pxor    %xmm14,%xmm14
2066         movdqa  %xmm6,%xmm3
2067         movdqa  %xmm6,64(%rsp)
2068         paddq   %xmm6,%xmm6
2069         pand    %xmm12,%xmm13
2070         pcmpgtd %xmm6,%xmm14
2071         pxor    %xmm13,%xmm6
2072         movdqu  48(%r12),%xmm10
2073         pxor    %xmm9,%xmm1
2074         pshufd  $0x13,%xmm14,%xmm13
2075         pxor    %xmm14,%xmm14
2076         movdqa  %xmm6,%xmm4
2077         movdqa  %xmm6,80(%rsp)
2078         paddq   %xmm6,%xmm6
2079         pand    %xmm12,%xmm13
2080         pcmpgtd %xmm6,%xmm14
2081         pxor    %xmm13,%xmm6
2082         movdqu  64(%r12),%xmm11
2083         pxor    %xmm10,%xmm2
2084         pshufd  $0x13,%xmm14,%xmm13
2085         pxor    %xmm14,%xmm14
2086         movdqa  %xmm6,%xmm5
2087         movdqa  %xmm6,96(%rsp)
2088         paddq   %xmm6,%xmm6
2089         pand    %xmm12,%xmm13
2090         pcmpgtd %xmm6,%xmm14
2091         pxor    %xmm13,%xmm6
2092         movdqu  80(%r12),%xmm12
2093         pxor    %xmm11,%xmm3
2094         movdqu  96(%r12),%xmm13
2095         pxor    %xmm12,%xmm4
2096         movdqu  112(%r12),%xmm14
2097         leaq    128(%r12),%r12
2098         movdqa  %xmm6,112(%rsp)
2099         pxor    %xmm13,%xmm5
2100         leaq    128(%rsp),%rax
2101         pxor    %xmm14,%xmm6
2102         movl    %edx,%r10d
2103
2104         call    _bsaes_decrypt8
2105
2106         pxor    0(%rsp),%xmm15
2107         pxor    16(%rsp),%xmm0
2108         movdqu  %xmm15,0(%r13)
2109         pxor    32(%rsp),%xmm5
2110         movdqu  %xmm0,16(%r13)
2111         pxor    48(%rsp),%xmm3
2112         movdqu  %xmm5,32(%r13)
2113         pxor    64(%rsp),%xmm1
2114         movdqu  %xmm3,48(%r13)
2115         pxor    80(%rsp),%xmm6
2116         movdqu  %xmm1,64(%r13)
2117         pxor    96(%rsp),%xmm2
2118         movdqu  %xmm6,80(%r13)
2119         pxor    112(%rsp),%xmm4
2120         movdqu  %xmm2,96(%r13)
2121         movdqu  %xmm4,112(%r13)
2122         leaq    128(%r13),%r13
2123
2124         movdqa  112(%rsp),%xmm6
2125         pxor    %xmm14,%xmm14
2126         movdqa  .Lxts_magic(%rip),%xmm12
2127         pcmpgtd %xmm6,%xmm14
2128         pshufd  $0x13,%xmm14,%xmm13
2129         pxor    %xmm14,%xmm14
2130         paddq   %xmm6,%xmm6
2131         pand    %xmm12,%xmm13
2132         pcmpgtd %xmm6,%xmm14
2133         pxor    %xmm13,%xmm6
2134
2135         subq    $0x80,%r14
2136         jnc     .Lxts_dec_loop
2137
2138 .Lxts_dec_short:
2139         addq    $0x80,%r14
2140         jz      .Lxts_dec_done
2141         pshufd  $0x13,%xmm14,%xmm13
2142         pxor    %xmm14,%xmm14
2143         movdqa  %xmm6,%xmm15
2144         movdqa  %xmm6,0(%rsp)
2145         paddq   %xmm6,%xmm6
2146         pand    %xmm12,%xmm13
2147         pcmpgtd %xmm6,%xmm14
2148         pxor    %xmm13,%xmm6
2149         pshufd  $0x13,%xmm14,%xmm13
2150         pxor    %xmm14,%xmm14
2151         movdqa  %xmm6,%xmm0
2152         movdqa  %xmm6,16(%rsp)
2153         paddq   %xmm6,%xmm6
2154         pand    %xmm12,%xmm13
2155         pcmpgtd %xmm6,%xmm14
2156         pxor    %xmm13,%xmm6
2157         movdqu  0(%r12),%xmm7
2158         cmpq    $16,%r14
2159         je      .Lxts_dec_1
2160         pshufd  $0x13,%xmm14,%xmm13
2161         pxor    %xmm14,%xmm14
2162         movdqa  %xmm6,%xmm1
2163         movdqa  %xmm6,32(%rsp)
2164         paddq   %xmm6,%xmm6
2165         pand    %xmm12,%xmm13
2166         pcmpgtd %xmm6,%xmm14
2167         pxor    %xmm13,%xmm6
2168         movdqu  16(%r12),%xmm8
2169         cmpq    $32,%r14
2170         je      .Lxts_dec_2
2171         pxor    %xmm7,%xmm15
2172         pshufd  $0x13,%xmm14,%xmm13
2173         pxor    %xmm14,%xmm14
2174         movdqa  %xmm6,%xmm2
2175         movdqa  %xmm6,48(%rsp)
2176         paddq   %xmm6,%xmm6
2177         pand    %xmm12,%xmm13
2178         pcmpgtd %xmm6,%xmm14
2179         pxor    %xmm13,%xmm6
2180         movdqu  32(%r12),%xmm9
2181         cmpq    $48,%r14
2182         je      .Lxts_dec_3
2183         pxor    %xmm8,%xmm0
2184         pshufd  $0x13,%xmm14,%xmm13
2185         pxor    %xmm14,%xmm14
2186         movdqa  %xmm6,%xmm3
2187         movdqa  %xmm6,64(%rsp)
2188         paddq   %xmm6,%xmm6
2189         pand    %xmm12,%xmm13
2190         pcmpgtd %xmm6,%xmm14
2191         pxor    %xmm13,%xmm6
2192         movdqu  48(%r12),%xmm10
2193         cmpq    $64,%r14
2194         je      .Lxts_dec_4
2195         pxor    %xmm9,%xmm1
2196         pshufd  $0x13,%xmm14,%xmm13
2197         pxor    %xmm14,%xmm14
2198         movdqa  %xmm6,%xmm4
2199         movdqa  %xmm6,80(%rsp)
2200         paddq   %xmm6,%xmm6
2201         pand    %xmm12,%xmm13
2202         pcmpgtd %xmm6,%xmm14
2203         pxor    %xmm13,%xmm6
2204         movdqu  64(%r12),%xmm11
2205         cmpq    $80,%r14
2206         je      .Lxts_dec_5
2207         pxor    %xmm10,%xmm2
2208         pshufd  $0x13,%xmm14,%xmm13
2209         pxor    %xmm14,%xmm14
2210         movdqa  %xmm6,%xmm5
2211         movdqa  %xmm6,96(%rsp)
2212         paddq   %xmm6,%xmm6
2213         pand    %xmm12,%xmm13
2214         pcmpgtd %xmm6,%xmm14
2215         pxor    %xmm13,%xmm6
2216         movdqu  80(%r12),%xmm12
2217         cmpq    $96,%r14
2218         je      .Lxts_dec_6
2219         pxor    %xmm11,%xmm3
2220         movdqu  96(%r12),%xmm13
2221         pxor    %xmm12,%xmm4
2222         movdqa  %xmm6,112(%rsp)
2223         leaq    112(%r12),%r12
2224         pxor    %xmm13,%xmm5
2225         leaq    128(%rsp),%rax
2226         movl    %edx,%r10d
2227
2228         call    _bsaes_decrypt8
2229
2230         pxor    0(%rsp),%xmm15
2231         pxor    16(%rsp),%xmm0
2232         movdqu  %xmm15,0(%r13)
2233         pxor    32(%rsp),%xmm5
2234         movdqu  %xmm0,16(%r13)
2235         pxor    48(%rsp),%xmm3
2236         movdqu  %xmm5,32(%r13)
2237         pxor    64(%rsp),%xmm1
2238         movdqu  %xmm3,48(%r13)
2239         pxor    80(%rsp),%xmm6
2240         movdqu  %xmm1,64(%r13)
2241         pxor    96(%rsp),%xmm2
2242         movdqu  %xmm6,80(%r13)
2243         movdqu  %xmm2,96(%r13)
2244         leaq    112(%r13),%r13
2245
2246         movdqa  112(%rsp),%xmm6
2247         jmp     .Lxts_dec_done
2248 .align  16
2249 .Lxts_dec_6:
2250         pxor    %xmm11,%xmm3
2251         leaq    96(%r12),%r12
2252         pxor    %xmm12,%xmm4
2253         leaq    128(%rsp),%rax
2254         movl    %edx,%r10d
2255
2256         call    _bsaes_decrypt8
2257
2258         pxor    0(%rsp),%xmm15
2259         pxor    16(%rsp),%xmm0
2260         movdqu  %xmm15,0(%r13)
2261         pxor    32(%rsp),%xmm5
2262         movdqu  %xmm0,16(%r13)
2263         pxor    48(%rsp),%xmm3
2264         movdqu  %xmm5,32(%r13)
2265         pxor    64(%rsp),%xmm1
2266         movdqu  %xmm3,48(%r13)
2267         pxor    80(%rsp),%xmm6
2268         movdqu  %xmm1,64(%r13)
2269         movdqu  %xmm6,80(%r13)
2270         leaq    96(%r13),%r13
2271
2272         movdqa  96(%rsp),%xmm6
2273         jmp     .Lxts_dec_done
2274 .align  16
2275 .Lxts_dec_5:
2276         pxor    %xmm10,%xmm2
2277         leaq    80(%r12),%r12
2278         pxor    %xmm11,%xmm3
2279         leaq    128(%rsp),%rax
2280         movl    %edx,%r10d
2281
2282         call    _bsaes_decrypt8
2283
2284         pxor    0(%rsp),%xmm15
2285         pxor    16(%rsp),%xmm0
2286         movdqu  %xmm15,0(%r13)
2287         pxor    32(%rsp),%xmm5
2288         movdqu  %xmm0,16(%r13)
2289         pxor    48(%rsp),%xmm3
2290         movdqu  %xmm5,32(%r13)
2291         pxor    64(%rsp),%xmm1
2292         movdqu  %xmm3,48(%r13)
2293         movdqu  %xmm1,64(%r13)
2294         leaq    80(%r13),%r13
2295
2296         movdqa  80(%rsp),%xmm6
2297         jmp     .Lxts_dec_done
2298 .align  16
2299 .Lxts_dec_4:
2300         pxor    %xmm9,%xmm1
2301         leaq    64(%r12),%r12
2302         pxor    %xmm10,%xmm2
2303         leaq    128(%rsp),%rax
2304         movl    %edx,%r10d
2305
2306         call    _bsaes_decrypt8
2307
2308         pxor    0(%rsp),%xmm15
2309         pxor    16(%rsp),%xmm0
2310         movdqu  %xmm15,0(%r13)
2311         pxor    32(%rsp),%xmm5
2312         movdqu  %xmm0,16(%r13)
2313         pxor    48(%rsp),%xmm3
2314         movdqu  %xmm5,32(%r13)
2315         movdqu  %xmm3,48(%r13)
2316         leaq    64(%r13),%r13
2317
2318         movdqa  64(%rsp),%xmm6
2319         jmp     .Lxts_dec_done
2320 .align  16
2321 .Lxts_dec_3:
2322         pxor    %xmm8,%xmm0
2323         leaq    48(%r12),%r12
2324         pxor    %xmm9,%xmm1
2325         leaq    128(%rsp),%rax
2326         movl    %edx,%r10d
2327
2328         call    _bsaes_decrypt8
2329
2330         pxor    0(%rsp),%xmm15
2331         pxor    16(%rsp),%xmm0
2332         movdqu  %xmm15,0(%r13)
2333         pxor    32(%rsp),%xmm5
2334         movdqu  %xmm0,16(%r13)
2335         movdqu  %xmm5,32(%r13)
2336         leaq    48(%r13),%r13
2337
2338         movdqa  48(%rsp),%xmm6
2339         jmp     .Lxts_dec_done
2340 .align  16
2341 .Lxts_dec_2:
2342         pxor    %xmm7,%xmm15
2343         leaq    32(%r12),%r12
2344         pxor    %xmm8,%xmm0
2345         leaq    128(%rsp),%rax
2346         movl    %edx,%r10d
2347
2348         call    _bsaes_decrypt8
2349
2350         pxor    0(%rsp),%xmm15
2351         pxor    16(%rsp),%xmm0
2352         movdqu  %xmm15,0(%r13)
2353         movdqu  %xmm0,16(%r13)
2354         leaq    32(%r13),%r13
2355
2356         movdqa  32(%rsp),%xmm6
2357         jmp     .Lxts_dec_done
2358 .align  16
2359 .Lxts_dec_1:
2360         pxor    %xmm15,%xmm7
2361         leaq    16(%r12),%r12
2362         movdqa  %xmm7,32(%rbp)
2363         leaq    32(%rbp),%rdi
2364         leaq    32(%rbp),%rsi
2365         leaq    (%r15),%rdx
2366         call    asm_AES_decrypt
2367         pxor    32(%rbp),%xmm15
2368
2369
2370
2371
2372
2373         movdqu  %xmm15,0(%r13)
2374         leaq    16(%r13),%r13
2375
2376         movdqa  16(%rsp),%xmm6
2377
2378 .Lxts_dec_done:
2379         andl    $15,%ebx
2380         jz      .Lxts_dec_ret
2381
2382         pxor    %xmm14,%xmm14
2383         movdqa  .Lxts_magic(%rip),%xmm12
2384         pcmpgtd %xmm6,%xmm14
2385         pshufd  $0x13,%xmm14,%xmm13
2386         movdqa  %xmm6,%xmm5
2387         paddq   %xmm6,%xmm6
2388         pand    %xmm12,%xmm13
2389         movdqu  (%r12),%xmm15
2390         pxor    %xmm13,%xmm6
2391
2392         leaq    32(%rbp),%rdi
2393         pxor    %xmm6,%xmm15
2394         leaq    32(%rbp),%rsi
2395         movdqa  %xmm15,32(%rbp)
2396         leaq    (%r15),%rdx
2397         call    asm_AES_decrypt
2398         pxor    32(%rbp),%xmm6
2399         movq    %r13,%rdx
2400         movdqu  %xmm6,(%r13)
2401
2402 .Lxts_dec_steal:
2403         movzbl  16(%r12),%eax
2404         movzbl  (%rdx),%ecx
2405         leaq    1(%r12),%r12
2406         movb    %al,(%rdx)
2407         movb    %cl,16(%rdx)
2408         leaq    1(%rdx),%rdx
2409         subl    $1,%ebx
2410         jnz     .Lxts_dec_steal
2411
2412         movdqu  (%r13),%xmm15
2413         leaq    32(%rbp),%rdi
2414         pxor    %xmm5,%xmm15
2415         leaq    32(%rbp),%rsi
2416         movdqa  %xmm15,32(%rbp)
2417         leaq    (%r15),%rdx
2418         call    asm_AES_decrypt
2419         pxor    32(%rbp),%xmm5
2420         movdqu  %xmm5,(%r13)
2421
2422 .Lxts_dec_ret:
2423         leaq    (%rsp),%rax
2424         pxor    %xmm0,%xmm0
2425 .Lxts_dec_bzero:
2426         movdqa  %xmm0,0(%rax)
2427         movdqa  %xmm0,16(%rax)
2428         leaq    32(%rax),%rax
2429         cmpq    %rax,%rbp
2430         ja      .Lxts_dec_bzero
2431
2432         leaq    (%rbp),%rsp
2433         movq    72(%rsp),%r15
2434         movq    80(%rsp),%r14
2435         movq    88(%rsp),%r13
2436         movq    96(%rsp),%r12
2437         movq    104(%rsp),%rbx
2438         movq    112(%rsp),%rax
2439         leaq    120(%rsp),%rsp
2440         movq    %rax,%rbp
2441 .Lxts_dec_epilogue:
2442         .byte   0xf3,0xc3
2443 .size   bsaes_xts_decrypt,.-bsaes_xts_decrypt
2444 .type   _bsaes_const,@object
2445 .align  64
2446 _bsaes_const:
2447 .LM0ISR:
2448 .quad   0x0a0e0206070b0f03, 0x0004080c0d010509
2449 .LISRM0:
2450 .quad   0x01040b0e0205080f, 0x0306090c00070a0d
2451 .LISR:
2452 .quad   0x0504070602010003, 0x0f0e0d0c080b0a09
2453 .LBS0:
2454 .quad   0x5555555555555555, 0x5555555555555555
2455 .LBS1:
2456 .quad   0x3333333333333333, 0x3333333333333333
2457 .LBS2:
2458 .quad   0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f
2459 .LSR:
2460 .quad   0x0504070600030201, 0x0f0e0d0c0a09080b
2461 .LSRM0:
2462 .quad   0x0304090e00050a0f, 0x01060b0c0207080d
2463 .LM0SR:
2464 .quad   0x0a0e02060f03070b, 0x0004080c05090d01
2465 .LSWPUP:
2466 .quad   0x0706050403020100, 0x0c0d0e0f0b0a0908
2467 .LSWPUPM0SR:
2468 .quad   0x0a0d02060c03070b, 0x0004080f05090e01
2469 .LADD1:
2470 .quad   0x0000000000000000, 0x0000000100000000
2471 .LADD2:
2472 .quad   0x0000000000000000, 0x0000000200000000
2473 .LADD3:
2474 .quad   0x0000000000000000, 0x0000000300000000
2475 .LADD4:
2476 .quad   0x0000000000000000, 0x0000000400000000
2477 .LADD5:
2478 .quad   0x0000000000000000, 0x0000000500000000
2479 .LADD6:
2480 .quad   0x0000000000000000, 0x0000000600000000
2481 .LADD7:
2482 .quad   0x0000000000000000, 0x0000000700000000
2483 .LADD8:
2484 .quad   0x0000000000000000, 0x0000000800000000
2485 .Lxts_magic:
2486 .long   0x87,0,1,0
2487 .Lmasks:
2488 .quad   0x0101010101010101, 0x0101010101010101
2489 .quad   0x0202020202020202, 0x0202020202020202
2490 .quad   0x0404040404040404, 0x0404040404040404
2491 .quad   0x0808080808080808, 0x0808080808080808
2492 .LM0:
2493 .quad   0x02060a0e03070b0f, 0x0004080c0105090d
2494 .L63:
2495 .quad   0x6363636363636363, 0x6363636363636363
2496 .byte   66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44,32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32,65,110,100,121,32,80,111,108,121,97,107,111,118,0
2497 .align  64
2498 .size   _bsaes_const,.-_bsaes_const
2499 .section .note.GNU-stack,"",%progbits