]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/amd64/bsaes-x86_64.S
Regen amd64 assembly files for OpenSSL 1.1.1.
[FreeBSD/FreeBSD.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         pxor    %xmm8,%xmm1
19         pxor    %xmm8,%xmm2
20 .byte   102,68,15,56,0,255
21 .byte   102,15,56,0,199
22         pxor    %xmm8,%xmm3
23         pxor    %xmm8,%xmm4
24 .byte   102,15,56,0,207
25 .byte   102,15,56,0,215
26         pxor    %xmm8,%xmm5
27         pxor    %xmm8,%xmm6
28 .byte   102,15,56,0,223
29 .byte   102,15,56,0,231
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         pxor    32(%rax),%xmm1
127         pxor    48(%rax),%xmm2
128 .byte   102,68,15,56,0,255
129 .byte   102,15,56,0,199
130         pxor    64(%rax),%xmm3
131         pxor    80(%rax),%xmm4
132 .byte   102,15,56,0,207
133 .byte   102,15,56,0,215
134         pxor    96(%rax),%xmm5
135         pxor    112(%rax),%xmm6
136 .byte   102,15,56,0,223
137 .byte   102,15,56,0,231
138 .byte   102,15,56,0,239
139 .byte   102,15,56,0,247
140         leaq    128(%rax),%rax
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  $0x93,%xmm15,%xmm7
330         pshufd  $0x93,%xmm0,%xmm8
331         pxor    %xmm7,%xmm15
332         pshufd  $0x93,%xmm3,%xmm9
333         pxor    %xmm8,%xmm0
334         pshufd  $0x93,%xmm5,%xmm10
335         pxor    %xmm9,%xmm3
336         pshufd  $0x93,%xmm2,%xmm11
337         pxor    %xmm10,%xmm5
338         pshufd  $0x93,%xmm6,%xmm12
339         pxor    %xmm11,%xmm2
340         pshufd  $0x93,%xmm1,%xmm13
341         pxor    %xmm12,%xmm6
342         pshufd  $0x93,%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  $0x4E,%xmm15,%xmm15
350         pxor    %xmm0,%xmm9
351         pshufd  $0x4E,%xmm0,%xmm0
352         pxor    %xmm2,%xmm12
353         pxor    %xmm7,%xmm15
354         pxor    %xmm6,%xmm13
355         pxor    %xmm8,%xmm0
356         pxor    %xmm5,%xmm11
357         pshufd  $0x4E,%xmm2,%xmm7
358         pxor    %xmm1,%xmm14
359         pshufd  $0x4E,%xmm6,%xmm8
360         pxor    %xmm3,%xmm10
361         pshufd  $0x4E,%xmm5,%xmm2
362         pxor    %xmm4,%xmm10
363         pshufd  $0x4E,%xmm4,%xmm6
364         pxor    %xmm4,%xmm11
365         pshufd  $0x4E,%xmm1,%xmm5
366         pxor    %xmm11,%xmm7
367         pshufd  $0x4E,%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         pxor    %xmm8,%xmm1
491         pxor    %xmm8,%xmm2
492 .byte   102,68,15,56,0,255
493 .byte   102,15,56,0,199
494         pxor    %xmm8,%xmm3
495         pxor    %xmm8,%xmm4
496 .byte   102,15,56,0,207
497 .byte   102,15,56,0,215
498         pxor    %xmm8,%xmm5
499         pxor    %xmm8,%xmm6
500 .byte   102,15,56,0,223
501 .byte   102,15,56,0,231
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         pxor    32(%rax),%xmm1
598         pxor    48(%rax),%xmm2
599 .byte   102,68,15,56,0,255
600 .byte   102,15,56,0,199
601         pxor    64(%rax),%xmm3
602         pxor    80(%rax),%xmm4
603 .byte   102,15,56,0,207
604 .byte   102,15,56,0,215
605         pxor    96(%rax),%xmm5
606         pxor    112(%rax),%xmm6
607 .byte   102,15,56,0,223
608 .byte   102,15,56,0,231
609 .byte   102,15,56,0,239
610 .byte   102,15,56,0,247
611         leaq    128(%rax),%rax
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  $0x4E,%xmm15,%xmm7
802         pshufd  $0x4E,%xmm2,%xmm13
803         pxor    %xmm15,%xmm7
804         pshufd  $0x4E,%xmm4,%xmm14
805         pxor    %xmm2,%xmm13
806         pshufd  $0x4E,%xmm0,%xmm8
807         pxor    %xmm4,%xmm14
808         pshufd  $0x4E,%xmm5,%xmm9
809         pxor    %xmm0,%xmm8
810         pshufd  $0x4E,%xmm3,%xmm10
811         pxor    %xmm5,%xmm9
812         pxor    %xmm13,%xmm15
813         pxor    %xmm13,%xmm0
814         pshufd  $0x4E,%xmm1,%xmm11
815         pxor    %xmm3,%xmm10
816         pxor    %xmm7,%xmm5
817         pxor    %xmm8,%xmm3
818         pshufd  $0x4E,%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  $0x93,%xmm15,%xmm7
833         pshufd  $0x93,%xmm0,%xmm8
834         pxor    %xmm7,%xmm15
835         pshufd  $0x93,%xmm5,%xmm9
836         pxor    %xmm8,%xmm0
837         pshufd  $0x93,%xmm3,%xmm10
838         pxor    %xmm9,%xmm5
839         pshufd  $0x93,%xmm1,%xmm11
840         pxor    %xmm10,%xmm3
841         pshufd  $0x93,%xmm6,%xmm12
842         pxor    %xmm11,%xmm1
843         pshufd  $0x93,%xmm2,%xmm13
844         pxor    %xmm12,%xmm6
845         pshufd  $0x93,%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  $0x4E,%xmm15,%xmm15
853         pxor    %xmm0,%xmm9
854         pshufd  $0x4E,%xmm0,%xmm0
855         pxor    %xmm1,%xmm12
856         pxor    %xmm7,%xmm15
857         pxor    %xmm6,%xmm13
858         pxor    %xmm8,%xmm0
859         pxor    %xmm3,%xmm11
860         pshufd  $0x4E,%xmm1,%xmm7
861         pxor    %xmm2,%xmm14
862         pshufd  $0x4E,%xmm6,%xmm8
863         pxor    %xmm5,%xmm10
864         pshufd  $0x4E,%xmm3,%xmm1
865         pxor    %xmm4,%xmm10
866         pshufd  $0x4E,%xmm4,%xmm6
867         pxor    %xmm4,%xmm11
868         pshufd  $0x4E,%xmm2,%xmm3
869         pxor    %xmm11,%xmm7
870         pshufd  $0x4E,%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 .cfi_startproc  
1073         cmpl    $0,%r9d
1074         jne     asm_AES_cbc_encrypt
1075         cmpq    $128,%rdx
1076         jb      asm_AES_cbc_encrypt
1077
1078         movq    %rsp,%rax
1079 .Lcbc_dec_prologue:
1080         pushq   %rbp
1081 .cfi_adjust_cfa_offset  8
1082 .cfi_offset     %rbp,-16
1083         pushq   %rbx
1084 .cfi_adjust_cfa_offset  8
1085 .cfi_offset     %rbx,-24
1086         pushq   %r12
1087 .cfi_adjust_cfa_offset  8
1088 .cfi_offset     %r12,-32
1089         pushq   %r13
1090 .cfi_adjust_cfa_offset  8
1091 .cfi_offset     %r13,-40
1092         pushq   %r14
1093 .cfi_adjust_cfa_offset  8
1094 .cfi_offset     %r14,-48
1095         pushq   %r15
1096 .cfi_adjust_cfa_offset  8
1097 .cfi_offset     %r15,-56
1098         leaq    -72(%rsp),%rsp
1099 .cfi_adjust_cfa_offset  0x48
1100         movq    %rsp,%rbp
1101 .cfi_def_cfa_register   %rbp
1102         movl    240(%rcx),%eax
1103         movq    %rdi,%r12
1104         movq    %rsi,%r13
1105         movq    %rdx,%r14
1106         movq    %rcx,%r15
1107         movq    %r8,%rbx
1108         shrq    $4,%r14
1109
1110         movl    %eax,%edx
1111         shlq    $7,%rax
1112         subq    $96,%rax
1113         subq    %rax,%rsp
1114
1115         movq    %rsp,%rax
1116         movq    %r15,%rcx
1117         movl    %edx,%r10d
1118         call    _bsaes_key_convert
1119         pxor    (%rsp),%xmm7
1120         movdqa  %xmm6,(%rax)
1121         movdqa  %xmm7,(%rsp)
1122
1123         movdqu  (%rbx),%xmm14
1124         subq    $8,%r14
1125 .Lcbc_dec_loop:
1126         movdqu  0(%r12),%xmm15
1127         movdqu  16(%r12),%xmm0
1128         movdqu  32(%r12),%xmm1
1129         movdqu  48(%r12),%xmm2
1130         movdqu  64(%r12),%xmm3
1131         movdqu  80(%r12),%xmm4
1132         movq    %rsp,%rax
1133         movdqu  96(%r12),%xmm5
1134         movl    %edx,%r10d
1135         movdqu  112(%r12),%xmm6
1136         movdqa  %xmm14,32(%rbp)
1137
1138         call    _bsaes_decrypt8
1139
1140         pxor    32(%rbp),%xmm15
1141         movdqu  0(%r12),%xmm7
1142         movdqu  16(%r12),%xmm8
1143         pxor    %xmm7,%xmm0
1144         movdqu  32(%r12),%xmm9
1145         pxor    %xmm8,%xmm5
1146         movdqu  48(%r12),%xmm10
1147         pxor    %xmm9,%xmm3
1148         movdqu  64(%r12),%xmm11
1149         pxor    %xmm10,%xmm1
1150         movdqu  80(%r12),%xmm12
1151         pxor    %xmm11,%xmm6
1152         movdqu  96(%r12),%xmm13
1153         pxor    %xmm12,%xmm2
1154         movdqu  112(%r12),%xmm14
1155         pxor    %xmm13,%xmm4
1156         movdqu  %xmm15,0(%r13)
1157         leaq    128(%r12),%r12
1158         movdqu  %xmm0,16(%r13)
1159         movdqu  %xmm5,32(%r13)
1160         movdqu  %xmm3,48(%r13)
1161         movdqu  %xmm1,64(%r13)
1162         movdqu  %xmm6,80(%r13)
1163         movdqu  %xmm2,96(%r13)
1164         movdqu  %xmm4,112(%r13)
1165         leaq    128(%r13),%r13
1166         subq    $8,%r14
1167         jnc     .Lcbc_dec_loop
1168
1169         addq    $8,%r14
1170         jz      .Lcbc_dec_done
1171
1172         movdqu  0(%r12),%xmm15
1173         movq    %rsp,%rax
1174         movl    %edx,%r10d
1175         cmpq    $2,%r14
1176         jb      .Lcbc_dec_one
1177         movdqu  16(%r12),%xmm0
1178         je      .Lcbc_dec_two
1179         movdqu  32(%r12),%xmm1
1180         cmpq    $4,%r14
1181         jb      .Lcbc_dec_three
1182         movdqu  48(%r12),%xmm2
1183         je      .Lcbc_dec_four
1184         movdqu  64(%r12),%xmm3
1185         cmpq    $6,%r14
1186         jb      .Lcbc_dec_five
1187         movdqu  80(%r12),%xmm4
1188         je      .Lcbc_dec_six
1189         movdqu  96(%r12),%xmm5
1190         movdqa  %xmm14,32(%rbp)
1191         call    _bsaes_decrypt8
1192         pxor    32(%rbp),%xmm15
1193         movdqu  0(%r12),%xmm7
1194         movdqu  16(%r12),%xmm8
1195         pxor    %xmm7,%xmm0
1196         movdqu  32(%r12),%xmm9
1197         pxor    %xmm8,%xmm5
1198         movdqu  48(%r12),%xmm10
1199         pxor    %xmm9,%xmm3
1200         movdqu  64(%r12),%xmm11
1201         pxor    %xmm10,%xmm1
1202         movdqu  80(%r12),%xmm12
1203         pxor    %xmm11,%xmm6
1204         movdqu  96(%r12),%xmm14
1205         pxor    %xmm12,%xmm2
1206         movdqu  %xmm15,0(%r13)
1207         movdqu  %xmm0,16(%r13)
1208         movdqu  %xmm5,32(%r13)
1209         movdqu  %xmm3,48(%r13)
1210         movdqu  %xmm1,64(%r13)
1211         movdqu  %xmm6,80(%r13)
1212         movdqu  %xmm2,96(%r13)
1213         jmp     .Lcbc_dec_done
1214 .align  16
1215 .Lcbc_dec_six:
1216         movdqa  %xmm14,32(%rbp)
1217         call    _bsaes_decrypt8
1218         pxor    32(%rbp),%xmm15
1219         movdqu  0(%r12),%xmm7
1220         movdqu  16(%r12),%xmm8
1221         pxor    %xmm7,%xmm0
1222         movdqu  32(%r12),%xmm9
1223         pxor    %xmm8,%xmm5
1224         movdqu  48(%r12),%xmm10
1225         pxor    %xmm9,%xmm3
1226         movdqu  64(%r12),%xmm11
1227         pxor    %xmm10,%xmm1
1228         movdqu  80(%r12),%xmm14
1229         pxor    %xmm11,%xmm6
1230         movdqu  %xmm15,0(%r13)
1231         movdqu  %xmm0,16(%r13)
1232         movdqu  %xmm5,32(%r13)
1233         movdqu  %xmm3,48(%r13)
1234         movdqu  %xmm1,64(%r13)
1235         movdqu  %xmm6,80(%r13)
1236         jmp     .Lcbc_dec_done
1237 .align  16
1238 .Lcbc_dec_five:
1239         movdqa  %xmm14,32(%rbp)
1240         call    _bsaes_decrypt8
1241         pxor    32(%rbp),%xmm15
1242         movdqu  0(%r12),%xmm7
1243         movdqu  16(%r12),%xmm8
1244         pxor    %xmm7,%xmm0
1245         movdqu  32(%r12),%xmm9
1246         pxor    %xmm8,%xmm5
1247         movdqu  48(%r12),%xmm10
1248         pxor    %xmm9,%xmm3
1249         movdqu  64(%r12),%xmm14
1250         pxor    %xmm10,%xmm1
1251         movdqu  %xmm15,0(%r13)
1252         movdqu  %xmm0,16(%r13)
1253         movdqu  %xmm5,32(%r13)
1254         movdqu  %xmm3,48(%r13)
1255         movdqu  %xmm1,64(%r13)
1256         jmp     .Lcbc_dec_done
1257 .align  16
1258 .Lcbc_dec_four:
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),%xmm9
1266         pxor    %xmm8,%xmm5
1267         movdqu  48(%r12),%xmm14
1268         pxor    %xmm9,%xmm3
1269         movdqu  %xmm15,0(%r13)
1270         movdqu  %xmm0,16(%r13)
1271         movdqu  %xmm5,32(%r13)
1272         movdqu  %xmm3,48(%r13)
1273         jmp     .Lcbc_dec_done
1274 .align  16
1275 .Lcbc_dec_three:
1276         movdqa  %xmm14,32(%rbp)
1277         call    _bsaes_decrypt8
1278         pxor    32(%rbp),%xmm15
1279         movdqu  0(%r12),%xmm7
1280         movdqu  16(%r12),%xmm8
1281         pxor    %xmm7,%xmm0
1282         movdqu  32(%r12),%xmm14
1283         pxor    %xmm8,%xmm5
1284         movdqu  %xmm15,0(%r13)
1285         movdqu  %xmm0,16(%r13)
1286         movdqu  %xmm5,32(%r13)
1287         jmp     .Lcbc_dec_done
1288 .align  16
1289 .Lcbc_dec_two:
1290         movdqa  %xmm14,32(%rbp)
1291         call    _bsaes_decrypt8
1292         pxor    32(%rbp),%xmm15
1293         movdqu  0(%r12),%xmm7
1294         movdqu  16(%r12),%xmm14
1295         pxor    %xmm7,%xmm0
1296         movdqu  %xmm15,0(%r13)
1297         movdqu  %xmm0,16(%r13)
1298         jmp     .Lcbc_dec_done
1299 .align  16
1300 .Lcbc_dec_one:
1301         leaq    (%r12),%rdi
1302         leaq    32(%rbp),%rsi
1303         leaq    (%r15),%rdx
1304         call    asm_AES_decrypt
1305         pxor    32(%rbp),%xmm14
1306         movdqu  %xmm14,(%r13)
1307         movdqa  %xmm15,%xmm14
1308
1309 .Lcbc_dec_done:
1310         movdqu  %xmm14,(%rbx)
1311         leaq    (%rsp),%rax
1312         pxor    %xmm0,%xmm0
1313 .Lcbc_dec_bzero:
1314         movdqa  %xmm0,0(%rax)
1315         movdqa  %xmm0,16(%rax)
1316         leaq    32(%rax),%rax
1317         cmpq    %rax,%rbp
1318         ja      .Lcbc_dec_bzero
1319
1320         leaq    120(%rbp),%rax
1321 .cfi_def_cfa    %rax,8
1322         movq    -48(%rax),%r15
1323 .cfi_restore    %r15
1324         movq    -40(%rax),%r14
1325 .cfi_restore    %r14
1326         movq    -32(%rax),%r13
1327 .cfi_restore    %r13
1328         movq    -24(%rax),%r12
1329 .cfi_restore    %r12
1330         movq    -16(%rax),%rbx
1331 .cfi_restore    %rbx
1332         movq    -8(%rax),%rbp
1333 .cfi_restore    %rbp
1334         leaq    (%rax),%rsp
1335 .cfi_def_cfa_register   %rsp
1336 .Lcbc_dec_epilogue:
1337         .byte   0xf3,0xc3
1338 .cfi_endproc    
1339 .size   bsaes_cbc_encrypt,.-bsaes_cbc_encrypt
1340
1341 .globl  bsaes_ctr32_encrypt_blocks
1342 .type   bsaes_ctr32_encrypt_blocks,@function
1343 .align  16
1344 bsaes_ctr32_encrypt_blocks:
1345 .cfi_startproc  
1346         movq    %rsp,%rax
1347 .Lctr_enc_prologue:
1348         pushq   %rbp
1349 .cfi_adjust_cfa_offset  8
1350 .cfi_offset     %rbp,-16
1351         pushq   %rbx
1352 .cfi_adjust_cfa_offset  8
1353 .cfi_offset     %rbx,-24
1354         pushq   %r12
1355 .cfi_adjust_cfa_offset  8
1356 .cfi_offset     %r12,-32
1357         pushq   %r13
1358 .cfi_adjust_cfa_offset  8
1359 .cfi_offset     %r13,-40
1360         pushq   %r14
1361 .cfi_adjust_cfa_offset  8
1362 .cfi_offset     %r14,-48
1363         pushq   %r15
1364 .cfi_adjust_cfa_offset  8
1365 .cfi_offset     %r15,-56
1366         leaq    -72(%rsp),%rsp
1367 .cfi_adjust_cfa_offset  0x48
1368         movq    %rsp,%rbp
1369 .cfi_def_cfa_register   %rbp
1370         movdqu  (%r8),%xmm0
1371         movl    240(%rcx),%eax
1372         movq    %rdi,%r12
1373         movq    %rsi,%r13
1374         movq    %rdx,%r14
1375         movq    %rcx,%r15
1376         movdqa  %xmm0,32(%rbp)
1377         cmpq    $8,%rdx
1378         jb      .Lctr_enc_short
1379
1380         movl    %eax,%ebx
1381         shlq    $7,%rax
1382         subq    $96,%rax
1383         subq    %rax,%rsp
1384
1385         movq    %rsp,%rax
1386         movq    %r15,%rcx
1387         movl    %ebx,%r10d
1388         call    _bsaes_key_convert
1389         pxor    %xmm6,%xmm7
1390         movdqa  %xmm7,(%rax)
1391
1392         movdqa  (%rsp),%xmm8
1393         leaq    .LADD1(%rip),%r11
1394         movdqa  32(%rbp),%xmm15
1395         movdqa  -32(%r11),%xmm7
1396 .byte   102,68,15,56,0,199
1397 .byte   102,68,15,56,0,255
1398         movdqa  %xmm8,(%rsp)
1399         jmp     .Lctr_enc_loop
1400 .align  16
1401 .Lctr_enc_loop:
1402         movdqa  %xmm15,32(%rbp)
1403         movdqa  %xmm15,%xmm0
1404         movdqa  %xmm15,%xmm1
1405         paddd   0(%r11),%xmm0
1406         movdqa  %xmm15,%xmm2
1407         paddd   16(%r11),%xmm1
1408         movdqa  %xmm15,%xmm3
1409         paddd   32(%r11),%xmm2
1410         movdqa  %xmm15,%xmm4
1411         paddd   48(%r11),%xmm3
1412         movdqa  %xmm15,%xmm5
1413         paddd   64(%r11),%xmm4
1414         movdqa  %xmm15,%xmm6
1415         paddd   80(%r11),%xmm5
1416         paddd   96(%r11),%xmm6
1417
1418
1419
1420         movdqa  (%rsp),%xmm8
1421         leaq    16(%rsp),%rax
1422         movdqa  -16(%r11),%xmm7
1423         pxor    %xmm8,%xmm15
1424         pxor    %xmm8,%xmm0
1425         pxor    %xmm8,%xmm1
1426         pxor    %xmm8,%xmm2
1427 .byte   102,68,15,56,0,255
1428 .byte   102,15,56,0,199
1429         pxor    %xmm8,%xmm3
1430         pxor    %xmm8,%xmm4
1431 .byte   102,15,56,0,207
1432 .byte   102,15,56,0,215
1433         pxor    %xmm8,%xmm5
1434         pxor    %xmm8,%xmm6
1435 .byte   102,15,56,0,223
1436 .byte   102,15,56,0,231
1437 .byte   102,15,56,0,239
1438 .byte   102,15,56,0,247
1439         leaq    .LBS0(%rip),%r11
1440         movl    %ebx,%r10d
1441
1442         call    _bsaes_encrypt8_bitslice
1443
1444         subq    $8,%r14
1445         jc      .Lctr_enc_loop_done
1446
1447         movdqu  0(%r12),%xmm7
1448         movdqu  16(%r12),%xmm8
1449         movdqu  32(%r12),%xmm9
1450         movdqu  48(%r12),%xmm10
1451         movdqu  64(%r12),%xmm11
1452         movdqu  80(%r12),%xmm12
1453         movdqu  96(%r12),%xmm13
1454         movdqu  112(%r12),%xmm14
1455         leaq    128(%r12),%r12
1456         pxor    %xmm15,%xmm7
1457         movdqa  32(%rbp),%xmm15
1458         pxor    %xmm8,%xmm0
1459         movdqu  %xmm7,0(%r13)
1460         pxor    %xmm9,%xmm3
1461         movdqu  %xmm0,16(%r13)
1462         pxor    %xmm10,%xmm5
1463         movdqu  %xmm3,32(%r13)
1464         pxor    %xmm11,%xmm2
1465         movdqu  %xmm5,48(%r13)
1466         pxor    %xmm12,%xmm6
1467         movdqu  %xmm2,64(%r13)
1468         pxor    %xmm13,%xmm1
1469         movdqu  %xmm6,80(%r13)
1470         pxor    %xmm14,%xmm4
1471         movdqu  %xmm1,96(%r13)
1472         leaq    .LADD1(%rip),%r11
1473         movdqu  %xmm4,112(%r13)
1474         leaq    128(%r13),%r13
1475         paddd   112(%r11),%xmm15
1476         jnz     .Lctr_enc_loop
1477
1478         jmp     .Lctr_enc_done
1479 .align  16
1480 .Lctr_enc_loop_done:
1481         addq    $8,%r14
1482         movdqu  0(%r12),%xmm7
1483         pxor    %xmm7,%xmm15
1484         movdqu  %xmm15,0(%r13)
1485         cmpq    $2,%r14
1486         jb      .Lctr_enc_done
1487         movdqu  16(%r12),%xmm8
1488         pxor    %xmm8,%xmm0
1489         movdqu  %xmm0,16(%r13)
1490         je      .Lctr_enc_done
1491         movdqu  32(%r12),%xmm9
1492         pxor    %xmm9,%xmm3
1493         movdqu  %xmm3,32(%r13)
1494         cmpq    $4,%r14
1495         jb      .Lctr_enc_done
1496         movdqu  48(%r12),%xmm10
1497         pxor    %xmm10,%xmm5
1498         movdqu  %xmm5,48(%r13)
1499         je      .Lctr_enc_done
1500         movdqu  64(%r12),%xmm11
1501         pxor    %xmm11,%xmm2
1502         movdqu  %xmm2,64(%r13)
1503         cmpq    $6,%r14
1504         jb      .Lctr_enc_done
1505         movdqu  80(%r12),%xmm12
1506         pxor    %xmm12,%xmm6
1507         movdqu  %xmm6,80(%r13)
1508         je      .Lctr_enc_done
1509         movdqu  96(%r12),%xmm13
1510         pxor    %xmm13,%xmm1
1511         movdqu  %xmm1,96(%r13)
1512         jmp     .Lctr_enc_done
1513
1514 .align  16
1515 .Lctr_enc_short:
1516         leaq    32(%rbp),%rdi
1517         leaq    48(%rbp),%rsi
1518         leaq    (%r15),%rdx
1519         call    asm_AES_encrypt
1520         movdqu  (%r12),%xmm0
1521         leaq    16(%r12),%r12
1522         movl    44(%rbp),%eax
1523         bswapl  %eax
1524         pxor    48(%rbp),%xmm0
1525         incl    %eax
1526         movdqu  %xmm0,(%r13)
1527         bswapl  %eax
1528         leaq    16(%r13),%r13
1529         movl    %eax,44(%rsp)
1530         decq    %r14
1531         jnz     .Lctr_enc_short
1532
1533 .Lctr_enc_done:
1534         leaq    (%rsp),%rax
1535         pxor    %xmm0,%xmm0
1536 .Lctr_enc_bzero:
1537         movdqa  %xmm0,0(%rax)
1538         movdqa  %xmm0,16(%rax)
1539         leaq    32(%rax),%rax
1540         cmpq    %rax,%rbp
1541         ja      .Lctr_enc_bzero
1542
1543         leaq    120(%rbp),%rax
1544 .cfi_def_cfa    %rax,8
1545         movq    -48(%rax),%r15
1546 .cfi_restore    %r15
1547         movq    -40(%rax),%r14
1548 .cfi_restore    %r14
1549         movq    -32(%rax),%r13
1550 .cfi_restore    %r13
1551         movq    -24(%rax),%r12
1552 .cfi_restore    %r12
1553         movq    -16(%rax),%rbx
1554 .cfi_restore    %rbx
1555         movq    -8(%rax),%rbp
1556 .cfi_restore    %rbp
1557         leaq    (%rax),%rsp
1558 .cfi_def_cfa_register   %rsp
1559 .Lctr_enc_epilogue:
1560         .byte   0xf3,0xc3
1561 .cfi_endproc    
1562 .size   bsaes_ctr32_encrypt_blocks,.-bsaes_ctr32_encrypt_blocks
1563 .globl  bsaes_xts_encrypt
1564 .type   bsaes_xts_encrypt,@function
1565 .align  16
1566 bsaes_xts_encrypt:
1567 .cfi_startproc  
1568         movq    %rsp,%rax
1569 .Lxts_enc_prologue:
1570         pushq   %rbp
1571 .cfi_adjust_cfa_offset  8
1572 .cfi_offset     %rbp,-16
1573         pushq   %rbx
1574 .cfi_adjust_cfa_offset  8
1575 .cfi_offset     %rbx,-24
1576         pushq   %r12
1577 .cfi_adjust_cfa_offset  8
1578 .cfi_offset     %r12,-32
1579         pushq   %r13
1580 .cfi_adjust_cfa_offset  8
1581 .cfi_offset     %r13,-40
1582         pushq   %r14
1583 .cfi_adjust_cfa_offset  8
1584 .cfi_offset     %r14,-48
1585         pushq   %r15
1586 .cfi_adjust_cfa_offset  8
1587 .cfi_offset     %r15,-56
1588         leaq    -72(%rsp),%rsp
1589 .cfi_adjust_cfa_offset  0x48
1590         movq    %rsp,%rbp
1591 .cfi_def_cfa_register   %rbp
1592         movq    %rdi,%r12
1593         movq    %rsi,%r13
1594         movq    %rdx,%r14
1595         movq    %rcx,%r15
1596
1597         leaq    (%r9),%rdi
1598         leaq    32(%rbp),%rsi
1599         leaq    (%r8),%rdx
1600         call    asm_AES_encrypt
1601
1602         movl    240(%r15),%eax
1603         movq    %r14,%rbx
1604
1605         movl    %eax,%edx
1606         shlq    $7,%rax
1607         subq    $96,%rax
1608         subq    %rax,%rsp
1609
1610         movq    %rsp,%rax
1611         movq    %r15,%rcx
1612         movl    %edx,%r10d
1613         call    _bsaes_key_convert
1614         pxor    %xmm6,%xmm7
1615         movdqa  %xmm7,(%rax)
1616
1617         andq    $-16,%r14
1618         subq    $0x80,%rsp
1619         movdqa  32(%rbp),%xmm6
1620
1621         pxor    %xmm14,%xmm14
1622         movdqa  .Lxts_magic(%rip),%xmm12
1623         pcmpgtd %xmm6,%xmm14
1624
1625         subq    $0x80,%r14
1626         jc      .Lxts_enc_short
1627         jmp     .Lxts_enc_loop
1628
1629 .align  16
1630 .Lxts_enc_loop:
1631         pshufd  $0x13,%xmm14,%xmm13
1632         pxor    %xmm14,%xmm14
1633         movdqa  %xmm6,%xmm15
1634         movdqa  %xmm6,0(%rsp)
1635         paddq   %xmm6,%xmm6
1636         pand    %xmm12,%xmm13
1637         pcmpgtd %xmm6,%xmm14
1638         pxor    %xmm13,%xmm6
1639         pshufd  $0x13,%xmm14,%xmm13
1640         pxor    %xmm14,%xmm14
1641         movdqa  %xmm6,%xmm0
1642         movdqa  %xmm6,16(%rsp)
1643         paddq   %xmm6,%xmm6
1644         pand    %xmm12,%xmm13
1645         pcmpgtd %xmm6,%xmm14
1646         pxor    %xmm13,%xmm6
1647         movdqu  0(%r12),%xmm7
1648         pshufd  $0x13,%xmm14,%xmm13
1649         pxor    %xmm14,%xmm14
1650         movdqa  %xmm6,%xmm1
1651         movdqa  %xmm6,32(%rsp)
1652         paddq   %xmm6,%xmm6
1653         pand    %xmm12,%xmm13
1654         pcmpgtd %xmm6,%xmm14
1655         pxor    %xmm13,%xmm6
1656         movdqu  16(%r12),%xmm8
1657         pxor    %xmm7,%xmm15
1658         pshufd  $0x13,%xmm14,%xmm13
1659         pxor    %xmm14,%xmm14
1660         movdqa  %xmm6,%xmm2
1661         movdqa  %xmm6,48(%rsp)
1662         paddq   %xmm6,%xmm6
1663         pand    %xmm12,%xmm13
1664         pcmpgtd %xmm6,%xmm14
1665         pxor    %xmm13,%xmm6
1666         movdqu  32(%r12),%xmm9
1667         pxor    %xmm8,%xmm0
1668         pshufd  $0x13,%xmm14,%xmm13
1669         pxor    %xmm14,%xmm14
1670         movdqa  %xmm6,%xmm3
1671         movdqa  %xmm6,64(%rsp)
1672         paddq   %xmm6,%xmm6
1673         pand    %xmm12,%xmm13
1674         pcmpgtd %xmm6,%xmm14
1675         pxor    %xmm13,%xmm6
1676         movdqu  48(%r12),%xmm10
1677         pxor    %xmm9,%xmm1
1678         pshufd  $0x13,%xmm14,%xmm13
1679         pxor    %xmm14,%xmm14
1680         movdqa  %xmm6,%xmm4
1681         movdqa  %xmm6,80(%rsp)
1682         paddq   %xmm6,%xmm6
1683         pand    %xmm12,%xmm13
1684         pcmpgtd %xmm6,%xmm14
1685         pxor    %xmm13,%xmm6
1686         movdqu  64(%r12),%xmm11
1687         pxor    %xmm10,%xmm2
1688         pshufd  $0x13,%xmm14,%xmm13
1689         pxor    %xmm14,%xmm14
1690         movdqa  %xmm6,%xmm5
1691         movdqa  %xmm6,96(%rsp)
1692         paddq   %xmm6,%xmm6
1693         pand    %xmm12,%xmm13
1694         pcmpgtd %xmm6,%xmm14
1695         pxor    %xmm13,%xmm6
1696         movdqu  80(%r12),%xmm12
1697         pxor    %xmm11,%xmm3
1698         movdqu  96(%r12),%xmm13
1699         pxor    %xmm12,%xmm4
1700         movdqu  112(%r12),%xmm14
1701         leaq    128(%r12),%r12
1702         movdqa  %xmm6,112(%rsp)
1703         pxor    %xmm13,%xmm5
1704         leaq    128(%rsp),%rax
1705         pxor    %xmm14,%xmm6
1706         movl    %edx,%r10d
1707
1708         call    _bsaes_encrypt8
1709
1710         pxor    0(%rsp),%xmm15
1711         pxor    16(%rsp),%xmm0
1712         movdqu  %xmm15,0(%r13)
1713         pxor    32(%rsp),%xmm3
1714         movdqu  %xmm0,16(%r13)
1715         pxor    48(%rsp),%xmm5
1716         movdqu  %xmm3,32(%r13)
1717         pxor    64(%rsp),%xmm2
1718         movdqu  %xmm5,48(%r13)
1719         pxor    80(%rsp),%xmm6
1720         movdqu  %xmm2,64(%r13)
1721         pxor    96(%rsp),%xmm1
1722         movdqu  %xmm6,80(%r13)
1723         pxor    112(%rsp),%xmm4
1724         movdqu  %xmm1,96(%r13)
1725         movdqu  %xmm4,112(%r13)
1726         leaq    128(%r13),%r13
1727
1728         movdqa  112(%rsp),%xmm6
1729         pxor    %xmm14,%xmm14
1730         movdqa  .Lxts_magic(%rip),%xmm12
1731         pcmpgtd %xmm6,%xmm14
1732         pshufd  $0x13,%xmm14,%xmm13
1733         pxor    %xmm14,%xmm14
1734         paddq   %xmm6,%xmm6
1735         pand    %xmm12,%xmm13
1736         pcmpgtd %xmm6,%xmm14
1737         pxor    %xmm13,%xmm6
1738
1739         subq    $0x80,%r14
1740         jnc     .Lxts_enc_loop
1741
1742 .Lxts_enc_short:
1743         addq    $0x80,%r14
1744         jz      .Lxts_enc_done
1745         pshufd  $0x13,%xmm14,%xmm13
1746         pxor    %xmm14,%xmm14
1747         movdqa  %xmm6,%xmm15
1748         movdqa  %xmm6,0(%rsp)
1749         paddq   %xmm6,%xmm6
1750         pand    %xmm12,%xmm13
1751         pcmpgtd %xmm6,%xmm14
1752         pxor    %xmm13,%xmm6
1753         pshufd  $0x13,%xmm14,%xmm13
1754         pxor    %xmm14,%xmm14
1755         movdqa  %xmm6,%xmm0
1756         movdqa  %xmm6,16(%rsp)
1757         paddq   %xmm6,%xmm6
1758         pand    %xmm12,%xmm13
1759         pcmpgtd %xmm6,%xmm14
1760         pxor    %xmm13,%xmm6
1761         movdqu  0(%r12),%xmm7
1762         cmpq    $16,%r14
1763         je      .Lxts_enc_1
1764         pshufd  $0x13,%xmm14,%xmm13
1765         pxor    %xmm14,%xmm14
1766         movdqa  %xmm6,%xmm1
1767         movdqa  %xmm6,32(%rsp)
1768         paddq   %xmm6,%xmm6
1769         pand    %xmm12,%xmm13
1770         pcmpgtd %xmm6,%xmm14
1771         pxor    %xmm13,%xmm6
1772         movdqu  16(%r12),%xmm8
1773         cmpq    $32,%r14
1774         je      .Lxts_enc_2
1775         pxor    %xmm7,%xmm15
1776         pshufd  $0x13,%xmm14,%xmm13
1777         pxor    %xmm14,%xmm14
1778         movdqa  %xmm6,%xmm2
1779         movdqa  %xmm6,48(%rsp)
1780         paddq   %xmm6,%xmm6
1781         pand    %xmm12,%xmm13
1782         pcmpgtd %xmm6,%xmm14
1783         pxor    %xmm13,%xmm6
1784         movdqu  32(%r12),%xmm9
1785         cmpq    $48,%r14
1786         je      .Lxts_enc_3
1787         pxor    %xmm8,%xmm0
1788         pshufd  $0x13,%xmm14,%xmm13
1789         pxor    %xmm14,%xmm14
1790         movdqa  %xmm6,%xmm3
1791         movdqa  %xmm6,64(%rsp)
1792         paddq   %xmm6,%xmm6
1793         pand    %xmm12,%xmm13
1794         pcmpgtd %xmm6,%xmm14
1795         pxor    %xmm13,%xmm6
1796         movdqu  48(%r12),%xmm10
1797         cmpq    $64,%r14
1798         je      .Lxts_enc_4
1799         pxor    %xmm9,%xmm1
1800         pshufd  $0x13,%xmm14,%xmm13
1801         pxor    %xmm14,%xmm14
1802         movdqa  %xmm6,%xmm4
1803         movdqa  %xmm6,80(%rsp)
1804         paddq   %xmm6,%xmm6
1805         pand    %xmm12,%xmm13
1806         pcmpgtd %xmm6,%xmm14
1807         pxor    %xmm13,%xmm6
1808         movdqu  64(%r12),%xmm11
1809         cmpq    $80,%r14
1810         je      .Lxts_enc_5
1811         pxor    %xmm10,%xmm2
1812         pshufd  $0x13,%xmm14,%xmm13
1813         pxor    %xmm14,%xmm14
1814         movdqa  %xmm6,%xmm5
1815         movdqa  %xmm6,96(%rsp)
1816         paddq   %xmm6,%xmm6
1817         pand    %xmm12,%xmm13
1818         pcmpgtd %xmm6,%xmm14
1819         pxor    %xmm13,%xmm6
1820         movdqu  80(%r12),%xmm12
1821         cmpq    $96,%r14
1822         je      .Lxts_enc_6
1823         pxor    %xmm11,%xmm3
1824         movdqu  96(%r12),%xmm13
1825         pxor    %xmm12,%xmm4
1826         movdqa  %xmm6,112(%rsp)
1827         leaq    112(%r12),%r12
1828         pxor    %xmm13,%xmm5
1829         leaq    128(%rsp),%rax
1830         movl    %edx,%r10d
1831
1832         call    _bsaes_encrypt8
1833
1834         pxor    0(%rsp),%xmm15
1835         pxor    16(%rsp),%xmm0
1836         movdqu  %xmm15,0(%r13)
1837         pxor    32(%rsp),%xmm3
1838         movdqu  %xmm0,16(%r13)
1839         pxor    48(%rsp),%xmm5
1840         movdqu  %xmm3,32(%r13)
1841         pxor    64(%rsp),%xmm2
1842         movdqu  %xmm5,48(%r13)
1843         pxor    80(%rsp),%xmm6
1844         movdqu  %xmm2,64(%r13)
1845         pxor    96(%rsp),%xmm1
1846         movdqu  %xmm6,80(%r13)
1847         movdqu  %xmm1,96(%r13)
1848         leaq    112(%r13),%r13
1849
1850         movdqa  112(%rsp),%xmm6
1851         jmp     .Lxts_enc_done
1852 .align  16
1853 .Lxts_enc_6:
1854         pxor    %xmm11,%xmm3
1855         leaq    96(%r12),%r12
1856         pxor    %xmm12,%xmm4
1857         leaq    128(%rsp),%rax
1858         movl    %edx,%r10d
1859
1860         call    _bsaes_encrypt8
1861
1862         pxor    0(%rsp),%xmm15
1863         pxor    16(%rsp),%xmm0
1864         movdqu  %xmm15,0(%r13)
1865         pxor    32(%rsp),%xmm3
1866         movdqu  %xmm0,16(%r13)
1867         pxor    48(%rsp),%xmm5
1868         movdqu  %xmm3,32(%r13)
1869         pxor    64(%rsp),%xmm2
1870         movdqu  %xmm5,48(%r13)
1871         pxor    80(%rsp),%xmm6
1872         movdqu  %xmm2,64(%r13)
1873         movdqu  %xmm6,80(%r13)
1874         leaq    96(%r13),%r13
1875
1876         movdqa  96(%rsp),%xmm6
1877         jmp     .Lxts_enc_done
1878 .align  16
1879 .Lxts_enc_5:
1880         pxor    %xmm10,%xmm2
1881         leaq    80(%r12),%r12
1882         pxor    %xmm11,%xmm3
1883         leaq    128(%rsp),%rax
1884         movl    %edx,%r10d
1885
1886         call    _bsaes_encrypt8
1887
1888         pxor    0(%rsp),%xmm15
1889         pxor    16(%rsp),%xmm0
1890         movdqu  %xmm15,0(%r13)
1891         pxor    32(%rsp),%xmm3
1892         movdqu  %xmm0,16(%r13)
1893         pxor    48(%rsp),%xmm5
1894         movdqu  %xmm3,32(%r13)
1895         pxor    64(%rsp),%xmm2
1896         movdqu  %xmm5,48(%r13)
1897         movdqu  %xmm2,64(%r13)
1898         leaq    80(%r13),%r13
1899
1900         movdqa  80(%rsp),%xmm6
1901         jmp     .Lxts_enc_done
1902 .align  16
1903 .Lxts_enc_4:
1904         pxor    %xmm9,%xmm1
1905         leaq    64(%r12),%r12
1906         pxor    %xmm10,%xmm2
1907         leaq    128(%rsp),%rax
1908         movl    %edx,%r10d
1909
1910         call    _bsaes_encrypt8
1911
1912         pxor    0(%rsp),%xmm15
1913         pxor    16(%rsp),%xmm0
1914         movdqu  %xmm15,0(%r13)
1915         pxor    32(%rsp),%xmm3
1916         movdqu  %xmm0,16(%r13)
1917         pxor    48(%rsp),%xmm5
1918         movdqu  %xmm3,32(%r13)
1919         movdqu  %xmm5,48(%r13)
1920         leaq    64(%r13),%r13
1921
1922         movdqa  64(%rsp),%xmm6
1923         jmp     .Lxts_enc_done
1924 .align  16
1925 .Lxts_enc_3:
1926         pxor    %xmm8,%xmm0
1927         leaq    48(%r12),%r12
1928         pxor    %xmm9,%xmm1
1929         leaq    128(%rsp),%rax
1930         movl    %edx,%r10d
1931
1932         call    _bsaes_encrypt8
1933
1934         pxor    0(%rsp),%xmm15
1935         pxor    16(%rsp),%xmm0
1936         movdqu  %xmm15,0(%r13)
1937         pxor    32(%rsp),%xmm3
1938         movdqu  %xmm0,16(%r13)
1939         movdqu  %xmm3,32(%r13)
1940         leaq    48(%r13),%r13
1941
1942         movdqa  48(%rsp),%xmm6
1943         jmp     .Lxts_enc_done
1944 .align  16
1945 .Lxts_enc_2:
1946         pxor    %xmm7,%xmm15
1947         leaq    32(%r12),%r12
1948         pxor    %xmm8,%xmm0
1949         leaq    128(%rsp),%rax
1950         movl    %edx,%r10d
1951
1952         call    _bsaes_encrypt8
1953
1954         pxor    0(%rsp),%xmm15
1955         pxor    16(%rsp),%xmm0
1956         movdqu  %xmm15,0(%r13)
1957         movdqu  %xmm0,16(%r13)
1958         leaq    32(%r13),%r13
1959
1960         movdqa  32(%rsp),%xmm6
1961         jmp     .Lxts_enc_done
1962 .align  16
1963 .Lxts_enc_1:
1964         pxor    %xmm15,%xmm7
1965         leaq    16(%r12),%r12
1966         movdqa  %xmm7,32(%rbp)
1967         leaq    32(%rbp),%rdi
1968         leaq    32(%rbp),%rsi
1969         leaq    (%r15),%rdx
1970         call    asm_AES_encrypt
1971         pxor    32(%rbp),%xmm15
1972
1973
1974
1975
1976
1977         movdqu  %xmm15,0(%r13)
1978         leaq    16(%r13),%r13
1979
1980         movdqa  16(%rsp),%xmm6
1981
1982 .Lxts_enc_done:
1983         andl    $15,%ebx
1984         jz      .Lxts_enc_ret
1985         movq    %r13,%rdx
1986
1987 .Lxts_enc_steal:
1988         movzbl  (%r12),%eax
1989         movzbl  -16(%rdx),%ecx
1990         leaq    1(%r12),%r12
1991         movb    %al,-16(%rdx)
1992         movb    %cl,0(%rdx)
1993         leaq    1(%rdx),%rdx
1994         subl    $1,%ebx
1995         jnz     .Lxts_enc_steal
1996
1997         movdqu  -16(%r13),%xmm15
1998         leaq    32(%rbp),%rdi
1999         pxor    %xmm6,%xmm15
2000         leaq    32(%rbp),%rsi
2001         movdqa  %xmm15,32(%rbp)
2002         leaq    (%r15),%rdx
2003         call    asm_AES_encrypt
2004         pxor    32(%rbp),%xmm6
2005         movdqu  %xmm6,-16(%r13)
2006
2007 .Lxts_enc_ret:
2008         leaq    (%rsp),%rax
2009         pxor    %xmm0,%xmm0
2010 .Lxts_enc_bzero:
2011         movdqa  %xmm0,0(%rax)
2012         movdqa  %xmm0,16(%rax)
2013         leaq    32(%rax),%rax
2014         cmpq    %rax,%rbp
2015         ja      .Lxts_enc_bzero
2016
2017         leaq    120(%rbp),%rax
2018 .cfi_def_cfa    %rax,8
2019         movq    -48(%rax),%r15
2020 .cfi_restore    %r15
2021         movq    -40(%rax),%r14
2022 .cfi_restore    %r14
2023         movq    -32(%rax),%r13
2024 .cfi_restore    %r13
2025         movq    -24(%rax),%r12
2026 .cfi_restore    %r12
2027         movq    -16(%rax),%rbx
2028 .cfi_restore    %rbx
2029         movq    -8(%rax),%rbp
2030 .cfi_restore    %rbp
2031         leaq    (%rax),%rsp
2032 .cfi_def_cfa_register   %rsp
2033 .Lxts_enc_epilogue:
2034         .byte   0xf3,0xc3
2035 .cfi_endproc    
2036 .size   bsaes_xts_encrypt,.-bsaes_xts_encrypt
2037
2038 .globl  bsaes_xts_decrypt
2039 .type   bsaes_xts_decrypt,@function
2040 .align  16
2041 bsaes_xts_decrypt:
2042 .cfi_startproc  
2043         movq    %rsp,%rax
2044 .Lxts_dec_prologue:
2045         pushq   %rbp
2046 .cfi_adjust_cfa_offset  8
2047 .cfi_offset     %rbp,-16
2048         pushq   %rbx
2049 .cfi_adjust_cfa_offset  8
2050 .cfi_offset     %rbx,-24
2051         pushq   %r12
2052 .cfi_adjust_cfa_offset  8
2053 .cfi_offset     %r12,-32
2054         pushq   %r13
2055 .cfi_adjust_cfa_offset  8
2056 .cfi_offset     %r13,-40
2057         pushq   %r14
2058 .cfi_adjust_cfa_offset  8
2059 .cfi_offset     %r14,-48
2060         pushq   %r15
2061 .cfi_adjust_cfa_offset  8
2062 .cfi_offset     %r15,-56
2063         leaq    -72(%rsp),%rsp
2064 .cfi_adjust_cfa_offset  0x48
2065         movq    %rsp,%rbp
2066         movq    %rdi,%r12
2067         movq    %rsi,%r13
2068         movq    %rdx,%r14
2069         movq    %rcx,%r15
2070
2071         leaq    (%r9),%rdi
2072         leaq    32(%rbp),%rsi
2073         leaq    (%r8),%rdx
2074         call    asm_AES_encrypt
2075
2076         movl    240(%r15),%eax
2077         movq    %r14,%rbx
2078
2079         movl    %eax,%edx
2080         shlq    $7,%rax
2081         subq    $96,%rax
2082         subq    %rax,%rsp
2083
2084         movq    %rsp,%rax
2085         movq    %r15,%rcx
2086         movl    %edx,%r10d
2087         call    _bsaes_key_convert
2088         pxor    (%rsp),%xmm7
2089         movdqa  %xmm6,(%rax)
2090         movdqa  %xmm7,(%rsp)
2091
2092         xorl    %eax,%eax
2093         andq    $-16,%r14
2094         testl   $15,%ebx
2095         setnz   %al
2096         shlq    $4,%rax
2097         subq    %rax,%r14
2098
2099         subq    $0x80,%rsp
2100         movdqa  32(%rbp),%xmm6
2101
2102         pxor    %xmm14,%xmm14
2103         movdqa  .Lxts_magic(%rip),%xmm12
2104         pcmpgtd %xmm6,%xmm14
2105
2106         subq    $0x80,%r14
2107         jc      .Lxts_dec_short
2108         jmp     .Lxts_dec_loop
2109
2110 .align  16
2111 .Lxts_dec_loop:
2112         pshufd  $0x13,%xmm14,%xmm13
2113         pxor    %xmm14,%xmm14
2114         movdqa  %xmm6,%xmm15
2115         movdqa  %xmm6,0(%rsp)
2116         paddq   %xmm6,%xmm6
2117         pand    %xmm12,%xmm13
2118         pcmpgtd %xmm6,%xmm14
2119         pxor    %xmm13,%xmm6
2120         pshufd  $0x13,%xmm14,%xmm13
2121         pxor    %xmm14,%xmm14
2122         movdqa  %xmm6,%xmm0
2123         movdqa  %xmm6,16(%rsp)
2124         paddq   %xmm6,%xmm6
2125         pand    %xmm12,%xmm13
2126         pcmpgtd %xmm6,%xmm14
2127         pxor    %xmm13,%xmm6
2128         movdqu  0(%r12),%xmm7
2129         pshufd  $0x13,%xmm14,%xmm13
2130         pxor    %xmm14,%xmm14
2131         movdqa  %xmm6,%xmm1
2132         movdqa  %xmm6,32(%rsp)
2133         paddq   %xmm6,%xmm6
2134         pand    %xmm12,%xmm13
2135         pcmpgtd %xmm6,%xmm14
2136         pxor    %xmm13,%xmm6
2137         movdqu  16(%r12),%xmm8
2138         pxor    %xmm7,%xmm15
2139         pshufd  $0x13,%xmm14,%xmm13
2140         pxor    %xmm14,%xmm14
2141         movdqa  %xmm6,%xmm2
2142         movdqa  %xmm6,48(%rsp)
2143         paddq   %xmm6,%xmm6
2144         pand    %xmm12,%xmm13
2145         pcmpgtd %xmm6,%xmm14
2146         pxor    %xmm13,%xmm6
2147         movdqu  32(%r12),%xmm9
2148         pxor    %xmm8,%xmm0
2149         pshufd  $0x13,%xmm14,%xmm13
2150         pxor    %xmm14,%xmm14
2151         movdqa  %xmm6,%xmm3
2152         movdqa  %xmm6,64(%rsp)
2153         paddq   %xmm6,%xmm6
2154         pand    %xmm12,%xmm13
2155         pcmpgtd %xmm6,%xmm14
2156         pxor    %xmm13,%xmm6
2157         movdqu  48(%r12),%xmm10
2158         pxor    %xmm9,%xmm1
2159         pshufd  $0x13,%xmm14,%xmm13
2160         pxor    %xmm14,%xmm14
2161         movdqa  %xmm6,%xmm4
2162         movdqa  %xmm6,80(%rsp)
2163         paddq   %xmm6,%xmm6
2164         pand    %xmm12,%xmm13
2165         pcmpgtd %xmm6,%xmm14
2166         pxor    %xmm13,%xmm6
2167         movdqu  64(%r12),%xmm11
2168         pxor    %xmm10,%xmm2
2169         pshufd  $0x13,%xmm14,%xmm13
2170         pxor    %xmm14,%xmm14
2171         movdqa  %xmm6,%xmm5
2172         movdqa  %xmm6,96(%rsp)
2173         paddq   %xmm6,%xmm6
2174         pand    %xmm12,%xmm13
2175         pcmpgtd %xmm6,%xmm14
2176         pxor    %xmm13,%xmm6
2177         movdqu  80(%r12),%xmm12
2178         pxor    %xmm11,%xmm3
2179         movdqu  96(%r12),%xmm13
2180         pxor    %xmm12,%xmm4
2181         movdqu  112(%r12),%xmm14
2182         leaq    128(%r12),%r12
2183         movdqa  %xmm6,112(%rsp)
2184         pxor    %xmm13,%xmm5
2185         leaq    128(%rsp),%rax
2186         pxor    %xmm14,%xmm6
2187         movl    %edx,%r10d
2188
2189         call    _bsaes_decrypt8
2190
2191         pxor    0(%rsp),%xmm15
2192         pxor    16(%rsp),%xmm0
2193         movdqu  %xmm15,0(%r13)
2194         pxor    32(%rsp),%xmm5
2195         movdqu  %xmm0,16(%r13)
2196         pxor    48(%rsp),%xmm3
2197         movdqu  %xmm5,32(%r13)
2198         pxor    64(%rsp),%xmm1
2199         movdqu  %xmm3,48(%r13)
2200         pxor    80(%rsp),%xmm6
2201         movdqu  %xmm1,64(%r13)
2202         pxor    96(%rsp),%xmm2
2203         movdqu  %xmm6,80(%r13)
2204         pxor    112(%rsp),%xmm4
2205         movdqu  %xmm2,96(%r13)
2206         movdqu  %xmm4,112(%r13)
2207         leaq    128(%r13),%r13
2208
2209         movdqa  112(%rsp),%xmm6
2210         pxor    %xmm14,%xmm14
2211         movdqa  .Lxts_magic(%rip),%xmm12
2212         pcmpgtd %xmm6,%xmm14
2213         pshufd  $0x13,%xmm14,%xmm13
2214         pxor    %xmm14,%xmm14
2215         paddq   %xmm6,%xmm6
2216         pand    %xmm12,%xmm13
2217         pcmpgtd %xmm6,%xmm14
2218         pxor    %xmm13,%xmm6
2219
2220         subq    $0x80,%r14
2221         jnc     .Lxts_dec_loop
2222
2223 .Lxts_dec_short:
2224         addq    $0x80,%r14
2225         jz      .Lxts_dec_done
2226         pshufd  $0x13,%xmm14,%xmm13
2227         pxor    %xmm14,%xmm14
2228         movdqa  %xmm6,%xmm15
2229         movdqa  %xmm6,0(%rsp)
2230         paddq   %xmm6,%xmm6
2231         pand    %xmm12,%xmm13
2232         pcmpgtd %xmm6,%xmm14
2233         pxor    %xmm13,%xmm6
2234         pshufd  $0x13,%xmm14,%xmm13
2235         pxor    %xmm14,%xmm14
2236         movdqa  %xmm6,%xmm0
2237         movdqa  %xmm6,16(%rsp)
2238         paddq   %xmm6,%xmm6
2239         pand    %xmm12,%xmm13
2240         pcmpgtd %xmm6,%xmm14
2241         pxor    %xmm13,%xmm6
2242         movdqu  0(%r12),%xmm7
2243         cmpq    $16,%r14
2244         je      .Lxts_dec_1
2245         pshufd  $0x13,%xmm14,%xmm13
2246         pxor    %xmm14,%xmm14
2247         movdqa  %xmm6,%xmm1
2248         movdqa  %xmm6,32(%rsp)
2249         paddq   %xmm6,%xmm6
2250         pand    %xmm12,%xmm13
2251         pcmpgtd %xmm6,%xmm14
2252         pxor    %xmm13,%xmm6
2253         movdqu  16(%r12),%xmm8
2254         cmpq    $32,%r14
2255         je      .Lxts_dec_2
2256         pxor    %xmm7,%xmm15
2257         pshufd  $0x13,%xmm14,%xmm13
2258         pxor    %xmm14,%xmm14
2259         movdqa  %xmm6,%xmm2
2260         movdqa  %xmm6,48(%rsp)
2261         paddq   %xmm6,%xmm6
2262         pand    %xmm12,%xmm13
2263         pcmpgtd %xmm6,%xmm14
2264         pxor    %xmm13,%xmm6
2265         movdqu  32(%r12),%xmm9
2266         cmpq    $48,%r14
2267         je      .Lxts_dec_3
2268         pxor    %xmm8,%xmm0
2269         pshufd  $0x13,%xmm14,%xmm13
2270         pxor    %xmm14,%xmm14
2271         movdqa  %xmm6,%xmm3
2272         movdqa  %xmm6,64(%rsp)
2273         paddq   %xmm6,%xmm6
2274         pand    %xmm12,%xmm13
2275         pcmpgtd %xmm6,%xmm14
2276         pxor    %xmm13,%xmm6
2277         movdqu  48(%r12),%xmm10
2278         cmpq    $64,%r14
2279         je      .Lxts_dec_4
2280         pxor    %xmm9,%xmm1
2281         pshufd  $0x13,%xmm14,%xmm13
2282         pxor    %xmm14,%xmm14
2283         movdqa  %xmm6,%xmm4
2284         movdqa  %xmm6,80(%rsp)
2285         paddq   %xmm6,%xmm6
2286         pand    %xmm12,%xmm13
2287         pcmpgtd %xmm6,%xmm14
2288         pxor    %xmm13,%xmm6
2289         movdqu  64(%r12),%xmm11
2290         cmpq    $80,%r14
2291         je      .Lxts_dec_5
2292         pxor    %xmm10,%xmm2
2293         pshufd  $0x13,%xmm14,%xmm13
2294         pxor    %xmm14,%xmm14
2295         movdqa  %xmm6,%xmm5
2296         movdqa  %xmm6,96(%rsp)
2297         paddq   %xmm6,%xmm6
2298         pand    %xmm12,%xmm13
2299         pcmpgtd %xmm6,%xmm14
2300         pxor    %xmm13,%xmm6
2301         movdqu  80(%r12),%xmm12
2302         cmpq    $96,%r14
2303         je      .Lxts_dec_6
2304         pxor    %xmm11,%xmm3
2305         movdqu  96(%r12),%xmm13
2306         pxor    %xmm12,%xmm4
2307         movdqa  %xmm6,112(%rsp)
2308         leaq    112(%r12),%r12
2309         pxor    %xmm13,%xmm5
2310         leaq    128(%rsp),%rax
2311         movl    %edx,%r10d
2312
2313         call    _bsaes_decrypt8
2314
2315         pxor    0(%rsp),%xmm15
2316         pxor    16(%rsp),%xmm0
2317         movdqu  %xmm15,0(%r13)
2318         pxor    32(%rsp),%xmm5
2319         movdqu  %xmm0,16(%r13)
2320         pxor    48(%rsp),%xmm3
2321         movdqu  %xmm5,32(%r13)
2322         pxor    64(%rsp),%xmm1
2323         movdqu  %xmm3,48(%r13)
2324         pxor    80(%rsp),%xmm6
2325         movdqu  %xmm1,64(%r13)
2326         pxor    96(%rsp),%xmm2
2327         movdqu  %xmm6,80(%r13)
2328         movdqu  %xmm2,96(%r13)
2329         leaq    112(%r13),%r13
2330
2331         movdqa  112(%rsp),%xmm6
2332         jmp     .Lxts_dec_done
2333 .align  16
2334 .Lxts_dec_6:
2335         pxor    %xmm11,%xmm3
2336         leaq    96(%r12),%r12
2337         pxor    %xmm12,%xmm4
2338         leaq    128(%rsp),%rax
2339         movl    %edx,%r10d
2340
2341         call    _bsaes_decrypt8
2342
2343         pxor    0(%rsp),%xmm15
2344         pxor    16(%rsp),%xmm0
2345         movdqu  %xmm15,0(%r13)
2346         pxor    32(%rsp),%xmm5
2347         movdqu  %xmm0,16(%r13)
2348         pxor    48(%rsp),%xmm3
2349         movdqu  %xmm5,32(%r13)
2350         pxor    64(%rsp),%xmm1
2351         movdqu  %xmm3,48(%r13)
2352         pxor    80(%rsp),%xmm6
2353         movdqu  %xmm1,64(%r13)
2354         movdqu  %xmm6,80(%r13)
2355         leaq    96(%r13),%r13
2356
2357         movdqa  96(%rsp),%xmm6
2358         jmp     .Lxts_dec_done
2359 .align  16
2360 .Lxts_dec_5:
2361         pxor    %xmm10,%xmm2
2362         leaq    80(%r12),%r12
2363         pxor    %xmm11,%xmm3
2364         leaq    128(%rsp),%rax
2365         movl    %edx,%r10d
2366
2367         call    _bsaes_decrypt8
2368
2369         pxor    0(%rsp),%xmm15
2370         pxor    16(%rsp),%xmm0
2371         movdqu  %xmm15,0(%r13)
2372         pxor    32(%rsp),%xmm5
2373         movdqu  %xmm0,16(%r13)
2374         pxor    48(%rsp),%xmm3
2375         movdqu  %xmm5,32(%r13)
2376         pxor    64(%rsp),%xmm1
2377         movdqu  %xmm3,48(%r13)
2378         movdqu  %xmm1,64(%r13)
2379         leaq    80(%r13),%r13
2380
2381         movdqa  80(%rsp),%xmm6
2382         jmp     .Lxts_dec_done
2383 .align  16
2384 .Lxts_dec_4:
2385         pxor    %xmm9,%xmm1
2386         leaq    64(%r12),%r12
2387         pxor    %xmm10,%xmm2
2388         leaq    128(%rsp),%rax
2389         movl    %edx,%r10d
2390
2391         call    _bsaes_decrypt8
2392
2393         pxor    0(%rsp),%xmm15
2394         pxor    16(%rsp),%xmm0
2395         movdqu  %xmm15,0(%r13)
2396         pxor    32(%rsp),%xmm5
2397         movdqu  %xmm0,16(%r13)
2398         pxor    48(%rsp),%xmm3
2399         movdqu  %xmm5,32(%r13)
2400         movdqu  %xmm3,48(%r13)
2401         leaq    64(%r13),%r13
2402
2403         movdqa  64(%rsp),%xmm6
2404         jmp     .Lxts_dec_done
2405 .align  16
2406 .Lxts_dec_3:
2407         pxor    %xmm8,%xmm0
2408         leaq    48(%r12),%r12
2409         pxor    %xmm9,%xmm1
2410         leaq    128(%rsp),%rax
2411         movl    %edx,%r10d
2412
2413         call    _bsaes_decrypt8
2414
2415         pxor    0(%rsp),%xmm15
2416         pxor    16(%rsp),%xmm0
2417         movdqu  %xmm15,0(%r13)
2418         pxor    32(%rsp),%xmm5
2419         movdqu  %xmm0,16(%r13)
2420         movdqu  %xmm5,32(%r13)
2421         leaq    48(%r13),%r13
2422
2423         movdqa  48(%rsp),%xmm6
2424         jmp     .Lxts_dec_done
2425 .align  16
2426 .Lxts_dec_2:
2427         pxor    %xmm7,%xmm15
2428         leaq    32(%r12),%r12
2429         pxor    %xmm8,%xmm0
2430         leaq    128(%rsp),%rax
2431         movl    %edx,%r10d
2432
2433         call    _bsaes_decrypt8
2434
2435         pxor    0(%rsp),%xmm15
2436         pxor    16(%rsp),%xmm0
2437         movdqu  %xmm15,0(%r13)
2438         movdqu  %xmm0,16(%r13)
2439         leaq    32(%r13),%r13
2440
2441         movdqa  32(%rsp),%xmm6
2442         jmp     .Lxts_dec_done
2443 .align  16
2444 .Lxts_dec_1:
2445         pxor    %xmm15,%xmm7
2446         leaq    16(%r12),%r12
2447         movdqa  %xmm7,32(%rbp)
2448         leaq    32(%rbp),%rdi
2449         leaq    32(%rbp),%rsi
2450         leaq    (%r15),%rdx
2451         call    asm_AES_decrypt
2452         pxor    32(%rbp),%xmm15
2453
2454
2455
2456
2457
2458         movdqu  %xmm15,0(%r13)
2459         leaq    16(%r13),%r13
2460
2461         movdqa  16(%rsp),%xmm6
2462
2463 .Lxts_dec_done:
2464         andl    $15,%ebx
2465         jz      .Lxts_dec_ret
2466
2467         pxor    %xmm14,%xmm14
2468         movdqa  .Lxts_magic(%rip),%xmm12
2469         pcmpgtd %xmm6,%xmm14
2470         pshufd  $0x13,%xmm14,%xmm13
2471         movdqa  %xmm6,%xmm5
2472         paddq   %xmm6,%xmm6
2473         pand    %xmm12,%xmm13
2474         movdqu  (%r12),%xmm15
2475         pxor    %xmm13,%xmm6
2476
2477         leaq    32(%rbp),%rdi
2478         pxor    %xmm6,%xmm15
2479         leaq    32(%rbp),%rsi
2480         movdqa  %xmm15,32(%rbp)
2481         leaq    (%r15),%rdx
2482         call    asm_AES_decrypt
2483         pxor    32(%rbp),%xmm6
2484         movq    %r13,%rdx
2485         movdqu  %xmm6,(%r13)
2486
2487 .Lxts_dec_steal:
2488         movzbl  16(%r12),%eax
2489         movzbl  (%rdx),%ecx
2490         leaq    1(%r12),%r12
2491         movb    %al,(%rdx)
2492         movb    %cl,16(%rdx)
2493         leaq    1(%rdx),%rdx
2494         subl    $1,%ebx
2495         jnz     .Lxts_dec_steal
2496
2497         movdqu  (%r13),%xmm15
2498         leaq    32(%rbp),%rdi
2499         pxor    %xmm5,%xmm15
2500         leaq    32(%rbp),%rsi
2501         movdqa  %xmm15,32(%rbp)
2502         leaq    (%r15),%rdx
2503         call    asm_AES_decrypt
2504         pxor    32(%rbp),%xmm5
2505         movdqu  %xmm5,(%r13)
2506
2507 .Lxts_dec_ret:
2508         leaq    (%rsp),%rax
2509         pxor    %xmm0,%xmm0
2510 .Lxts_dec_bzero:
2511         movdqa  %xmm0,0(%rax)
2512         movdqa  %xmm0,16(%rax)
2513         leaq    32(%rax),%rax
2514         cmpq    %rax,%rbp
2515         ja      .Lxts_dec_bzero
2516
2517         leaq    120(%rbp),%rax
2518 .cfi_def_cfa    %rax,8
2519         movq    -48(%rax),%r15
2520 .cfi_restore    %r15
2521         movq    -40(%rax),%r14
2522 .cfi_restore    %r14
2523         movq    -32(%rax),%r13
2524 .cfi_restore    %r13
2525         movq    -24(%rax),%r12
2526 .cfi_restore    %r12
2527         movq    -16(%rax),%rbx
2528 .cfi_restore    %rbx
2529         movq    -8(%rax),%rbp
2530 .cfi_restore    %rbp
2531         leaq    (%rax),%rsp
2532 .cfi_def_cfa_register   %rsp
2533 .Lxts_dec_epilogue:
2534         .byte   0xf3,0xc3
2535 .cfi_endproc    
2536 .size   bsaes_xts_decrypt,.-bsaes_xts_decrypt
2537 .type   _bsaes_const,@object
2538 .align  64
2539 _bsaes_const:
2540 .LM0ISR:
2541 .quad   0x0a0e0206070b0f03, 0x0004080c0d010509
2542 .LISRM0:
2543 .quad   0x01040b0e0205080f, 0x0306090c00070a0d
2544 .LISR:
2545 .quad   0x0504070602010003, 0x0f0e0d0c080b0a09
2546 .LBS0:
2547 .quad   0x5555555555555555, 0x5555555555555555
2548 .LBS1:
2549 .quad   0x3333333333333333, 0x3333333333333333
2550 .LBS2:
2551 .quad   0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f
2552 .LSR:
2553 .quad   0x0504070600030201, 0x0f0e0d0c0a09080b
2554 .LSRM0:
2555 .quad   0x0304090e00050a0f, 0x01060b0c0207080d
2556 .LM0SR:
2557 .quad   0x0a0e02060f03070b, 0x0004080c05090d01
2558 .LSWPUP:
2559 .quad   0x0706050403020100, 0x0c0d0e0f0b0a0908
2560 .LSWPUPM0SR:
2561 .quad   0x0a0d02060c03070b, 0x0004080f05090e01
2562 .LADD1:
2563 .quad   0x0000000000000000, 0x0000000100000000
2564 .LADD2:
2565 .quad   0x0000000000000000, 0x0000000200000000
2566 .LADD3:
2567 .quad   0x0000000000000000, 0x0000000300000000
2568 .LADD4:
2569 .quad   0x0000000000000000, 0x0000000400000000
2570 .LADD5:
2571 .quad   0x0000000000000000, 0x0000000500000000
2572 .LADD6:
2573 .quad   0x0000000000000000, 0x0000000600000000
2574 .LADD7:
2575 .quad   0x0000000000000000, 0x0000000700000000
2576 .LADD8:
2577 .quad   0x0000000000000000, 0x0000000800000000
2578 .Lxts_magic:
2579 .long   0x87,0,1,0
2580 .Lmasks:
2581 .quad   0x0101010101010101, 0x0101010101010101
2582 .quad   0x0202020202020202, 0x0202020202020202
2583 .quad   0x0404040404040404, 0x0404040404040404
2584 .quad   0x0808080808080808, 0x0808080808080808
2585 .LM0:
2586 .quad   0x02060a0e03070b0f, 0x0004080c0105090d
2587 .L63:
2588 .quad   0x6363636363636363, 0x6363636363636363
2589 .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
2590 .align  64
2591 .size   _bsaes_const,.-_bsaes_const