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