VirtualBox

source: vbox/trunk/src/libs/openssl-3.0.9/crypto/genasm-elf/bsaes-x86_64.S@ 100942

Last change on this file since 100942 was 94096, checked in by vboxsync, 3 years ago

libs/openssl-3.0.1: Fix for gnu assemblers and recreate asm files, ​bugref:10128

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

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