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