VirtualBox

source: vbox/trunk/src/libs/openssl-1.1.1g/crypto/genasm-elf/bsaes-x86_64.S@ 85622

Last change on this file since 85622 was 83531, checked in by vboxsync, 5 years ago

setting svn:sync-process=export for openssl-1.1.1f, all files except tests

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

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette