Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/amd64/aesni-xts-avx512.S
39482 views
1
/* Do not modify. This file is auto-generated from aesni-xts-avx512.pl. */
2
.text
3
4
.globl aesni_xts_avx512_eligible
5
.type aesni_xts_avx512_eligible,@function
6
.align 32
7
aesni_xts_avx512_eligible:
8
movl OPENSSL_ia32cap_P+8(%rip),%ecx
9
xorl %eax,%eax
10
11
andl $0xc0030000,%ecx
12
cmpl $0xc0030000,%ecx
13
jne .L_done
14
movl OPENSSL_ia32cap_P+12(%rip),%ecx
15
16
andl $0x640,%ecx
17
cmpl $0x640,%ecx
18
cmovel %ecx,%eax
19
.L_done:
20
.byte 0xf3,0xc3
21
.size aesni_xts_avx512_eligible, .-aesni_xts_avx512_eligible
22
.globl aesni_xts_128_encrypt_avx512
23
.hidden aesni_xts_128_encrypt_avx512
24
.type aesni_xts_128_encrypt_avx512,@function
25
.align 32
26
aesni_xts_128_encrypt_avx512:
27
.cfi_startproc
28
.byte 243,15,30,250
29
pushq %rbp
30
movq %rsp,%rbp
31
subq $136,%rsp
32
andq $0xffffffffffffffc0,%rsp
33
movq %rbx,128(%rsp)
34
movq $0x87,%r10
35
vmovdqu (%r9),%xmm1
36
vpxor (%r8),%xmm1,%xmm1
37
vaesenc 16(%r8),%xmm1,%xmm1
38
vaesenc 32(%r8),%xmm1,%xmm1
39
vaesenc 48(%r8),%xmm1,%xmm1
40
vaesenc 64(%r8),%xmm1,%xmm1
41
vaesenc 80(%r8),%xmm1,%xmm1
42
vaesenc 96(%r8),%xmm1,%xmm1
43
vaesenc 112(%r8),%xmm1,%xmm1
44
vaesenc 128(%r8),%xmm1,%xmm1
45
vaesenc 144(%r8),%xmm1,%xmm1
46
vaesenclast 160(%r8),%xmm1,%xmm1
47
vmovdqa %xmm1,(%rsp)
48
49
cmpq $0x80,%rdx
50
jl .L_less_than_128_bytes_hEgxyDlCngwrfFe
51
vpbroadcastq %r10,%zmm25
52
cmpq $0x100,%rdx
53
jge .L_start_by16_hEgxyDlCngwrfFe
54
cmpq $0x80,%rdx
55
jge .L_start_by8_hEgxyDlCngwrfFe
56
57
.L_do_n_blocks_hEgxyDlCngwrfFe:
58
cmpq $0x0,%rdx
59
je .L_ret_hEgxyDlCngwrfFe
60
cmpq $0x70,%rdx
61
jge .L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe
62
cmpq $0x60,%rdx
63
jge .L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe
64
cmpq $0x50,%rdx
65
jge .L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe
66
cmpq $0x40,%rdx
67
jge .L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe
68
cmpq $0x30,%rdx
69
jge .L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe
70
cmpq $0x20,%rdx
71
jge .L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe
72
cmpq $0x10,%rdx
73
jge .L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe
74
vmovdqa %xmm0,%xmm8
75
vmovdqa %xmm9,%xmm0
76
jmp .L_steal_cipher_hEgxyDlCngwrfFe
77
78
.L_remaining_num_blocks_is_7_hEgxyDlCngwrfFe:
79
movq $0x0000ffffffffffff,%r8
80
kmovq %r8,%k1
81
vmovdqu8 (%rdi),%zmm1
82
vmovdqu8 64(%rdi),%zmm2{%k1}
83
addq $0x70,%rdi
84
vbroadcasti32x4 (%rcx),%zmm0
85
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
86
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
87
vbroadcasti32x4 16(%rcx),%zmm0
88
vaesenc %zmm0,%zmm1,%zmm1
89
vaesenc %zmm0,%zmm2,%zmm2
90
91
92
vbroadcasti32x4 32(%rcx),%zmm0
93
vaesenc %zmm0,%zmm1,%zmm1
94
vaesenc %zmm0,%zmm2,%zmm2
95
96
97
vbroadcasti32x4 48(%rcx),%zmm0
98
vaesenc %zmm0,%zmm1,%zmm1
99
vaesenc %zmm0,%zmm2,%zmm2
100
101
vbroadcasti32x4 64(%rcx),%zmm0
102
vaesenc %zmm0,%zmm1,%zmm1
103
vaesenc %zmm0,%zmm2,%zmm2
104
105
106
vbroadcasti32x4 80(%rcx),%zmm0
107
vaesenc %zmm0,%zmm1,%zmm1
108
vaesenc %zmm0,%zmm2,%zmm2
109
110
111
vbroadcasti32x4 96(%rcx),%zmm0
112
vaesenc %zmm0,%zmm1,%zmm1
113
vaesenc %zmm0,%zmm2,%zmm2
114
115
116
vbroadcasti32x4 112(%rcx),%zmm0
117
vaesenc %zmm0,%zmm1,%zmm1
118
vaesenc %zmm0,%zmm2,%zmm2
119
120
121
vbroadcasti32x4 128(%rcx),%zmm0
122
vaesenc %zmm0,%zmm1,%zmm1
123
vaesenc %zmm0,%zmm2,%zmm2
124
125
126
vbroadcasti32x4 144(%rcx),%zmm0
127
vaesenc %zmm0,%zmm1,%zmm1
128
vaesenc %zmm0,%zmm2,%zmm2
129
130
vbroadcasti32x4 160(%rcx),%zmm0
131
vaesenclast %zmm0,%zmm1,%zmm1
132
vaesenclast %zmm0,%zmm2,%zmm2
133
vpxorq %zmm9,%zmm1,%zmm1
134
vpxorq %zmm10,%zmm2,%zmm2
135
vmovdqu8 %zmm1,(%rsi)
136
vmovdqu8 %zmm2,64(%rsi){%k1}
137
addq $0x70,%rsi
138
vextracti32x4 $0x2,%zmm2,%xmm8
139
vextracti32x4 $0x3,%zmm10,%xmm0
140
andq $0xf,%rdx
141
je .L_ret_hEgxyDlCngwrfFe
142
jmp .L_steal_cipher_hEgxyDlCngwrfFe
143
144
.L_remaining_num_blocks_is_6_hEgxyDlCngwrfFe:
145
vmovdqu8 (%rdi),%zmm1
146
vmovdqu8 64(%rdi),%ymm2
147
addq $0x60,%rdi
148
vbroadcasti32x4 (%rcx),%zmm0
149
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
150
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
151
vbroadcasti32x4 16(%rcx),%zmm0
152
vaesenc %zmm0,%zmm1,%zmm1
153
vaesenc %zmm0,%zmm2,%zmm2
154
155
156
vbroadcasti32x4 32(%rcx),%zmm0
157
vaesenc %zmm0,%zmm1,%zmm1
158
vaesenc %zmm0,%zmm2,%zmm2
159
160
161
vbroadcasti32x4 48(%rcx),%zmm0
162
vaesenc %zmm0,%zmm1,%zmm1
163
vaesenc %zmm0,%zmm2,%zmm2
164
165
vbroadcasti32x4 64(%rcx),%zmm0
166
vaesenc %zmm0,%zmm1,%zmm1
167
vaesenc %zmm0,%zmm2,%zmm2
168
169
170
vbroadcasti32x4 80(%rcx),%zmm0
171
vaesenc %zmm0,%zmm1,%zmm1
172
vaesenc %zmm0,%zmm2,%zmm2
173
174
175
vbroadcasti32x4 96(%rcx),%zmm0
176
vaesenc %zmm0,%zmm1,%zmm1
177
vaesenc %zmm0,%zmm2,%zmm2
178
179
180
vbroadcasti32x4 112(%rcx),%zmm0
181
vaesenc %zmm0,%zmm1,%zmm1
182
vaesenc %zmm0,%zmm2,%zmm2
183
184
185
vbroadcasti32x4 128(%rcx),%zmm0
186
vaesenc %zmm0,%zmm1,%zmm1
187
vaesenc %zmm0,%zmm2,%zmm2
188
189
190
vbroadcasti32x4 144(%rcx),%zmm0
191
vaesenc %zmm0,%zmm1,%zmm1
192
vaesenc %zmm0,%zmm2,%zmm2
193
194
vbroadcasti32x4 160(%rcx),%zmm0
195
vaesenclast %zmm0,%zmm1,%zmm1
196
vaesenclast %zmm0,%zmm2,%zmm2
197
vpxorq %zmm9,%zmm1,%zmm1
198
vpxorq %zmm10,%zmm2,%zmm2
199
vmovdqu8 %zmm1,(%rsi)
200
vmovdqu8 %ymm2,64(%rsi)
201
addq $0x60,%rsi
202
vextracti32x4 $0x1,%zmm2,%xmm8
203
vextracti32x4 $0x2,%zmm10,%xmm0
204
andq $0xf,%rdx
205
je .L_ret_hEgxyDlCngwrfFe
206
jmp .L_steal_cipher_hEgxyDlCngwrfFe
207
208
.L_remaining_num_blocks_is_5_hEgxyDlCngwrfFe:
209
vmovdqu8 (%rdi),%zmm1
210
vmovdqu 64(%rdi),%xmm2
211
addq $0x50,%rdi
212
vbroadcasti32x4 (%rcx),%zmm0
213
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
214
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
215
vbroadcasti32x4 16(%rcx),%zmm0
216
vaesenc %zmm0,%zmm1,%zmm1
217
vaesenc %zmm0,%zmm2,%zmm2
218
219
220
vbroadcasti32x4 32(%rcx),%zmm0
221
vaesenc %zmm0,%zmm1,%zmm1
222
vaesenc %zmm0,%zmm2,%zmm2
223
224
225
vbroadcasti32x4 48(%rcx),%zmm0
226
vaesenc %zmm0,%zmm1,%zmm1
227
vaesenc %zmm0,%zmm2,%zmm2
228
229
vbroadcasti32x4 64(%rcx),%zmm0
230
vaesenc %zmm0,%zmm1,%zmm1
231
vaesenc %zmm0,%zmm2,%zmm2
232
233
234
vbroadcasti32x4 80(%rcx),%zmm0
235
vaesenc %zmm0,%zmm1,%zmm1
236
vaesenc %zmm0,%zmm2,%zmm2
237
238
239
vbroadcasti32x4 96(%rcx),%zmm0
240
vaesenc %zmm0,%zmm1,%zmm1
241
vaesenc %zmm0,%zmm2,%zmm2
242
243
244
vbroadcasti32x4 112(%rcx),%zmm0
245
vaesenc %zmm0,%zmm1,%zmm1
246
vaesenc %zmm0,%zmm2,%zmm2
247
248
249
vbroadcasti32x4 128(%rcx),%zmm0
250
vaesenc %zmm0,%zmm1,%zmm1
251
vaesenc %zmm0,%zmm2,%zmm2
252
253
254
vbroadcasti32x4 144(%rcx),%zmm0
255
vaesenc %zmm0,%zmm1,%zmm1
256
vaesenc %zmm0,%zmm2,%zmm2
257
258
vbroadcasti32x4 160(%rcx),%zmm0
259
vaesenclast %zmm0,%zmm1,%zmm1
260
vaesenclast %zmm0,%zmm2,%zmm2
261
vpxorq %zmm9,%zmm1,%zmm1
262
vpxorq %zmm10,%zmm2,%zmm2
263
vmovdqu8 %zmm1,(%rsi)
264
vmovdqu %xmm2,64(%rsi)
265
addq $0x50,%rsi
266
vmovdqa %xmm2,%xmm8
267
vextracti32x4 $0x1,%zmm10,%xmm0
268
andq $0xf,%rdx
269
je .L_ret_hEgxyDlCngwrfFe
270
jmp .L_steal_cipher_hEgxyDlCngwrfFe
271
272
.L_remaining_num_blocks_is_4_hEgxyDlCngwrfFe:
273
vmovdqu8 (%rdi),%zmm1
274
addq $0x40,%rdi
275
vbroadcasti32x4 (%rcx),%zmm0
276
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
277
vbroadcasti32x4 16(%rcx),%zmm0
278
vaesenc %zmm0,%zmm1,%zmm1
279
vbroadcasti32x4 32(%rcx),%zmm0
280
vaesenc %zmm0,%zmm1,%zmm1
281
vbroadcasti32x4 48(%rcx),%zmm0
282
vaesenc %zmm0,%zmm1,%zmm1
283
vbroadcasti32x4 64(%rcx),%zmm0
284
vaesenc %zmm0,%zmm1,%zmm1
285
vbroadcasti32x4 80(%rcx),%zmm0
286
vaesenc %zmm0,%zmm1,%zmm1
287
vbroadcasti32x4 96(%rcx),%zmm0
288
vaesenc %zmm0,%zmm1,%zmm1
289
vbroadcasti32x4 112(%rcx),%zmm0
290
vaesenc %zmm0,%zmm1,%zmm1
291
vbroadcasti32x4 128(%rcx),%zmm0
292
vaesenc %zmm0,%zmm1,%zmm1
293
vbroadcasti32x4 144(%rcx),%zmm0
294
vaesenc %zmm0,%zmm1,%zmm1
295
vbroadcasti32x4 160(%rcx),%zmm0
296
vaesenclast %zmm0,%zmm1,%zmm1
297
vpxorq %zmm9,%zmm1,%zmm1
298
vmovdqu8 %zmm1,(%rsi)
299
addq $0x40,%rsi
300
vextracti32x4 $0x3,%zmm1,%xmm8
301
vmovdqa64 %xmm10,%xmm0
302
andq $0xf,%rdx
303
je .L_ret_hEgxyDlCngwrfFe
304
jmp .L_steal_cipher_hEgxyDlCngwrfFe
305
.L_remaining_num_blocks_is_3_hEgxyDlCngwrfFe:
306
movq $-1,%r8
307
shrq $0x10,%r8
308
kmovq %r8,%k1
309
vmovdqu8 (%rdi),%zmm1{%k1}
310
addq $0x30,%rdi
311
vbroadcasti32x4 (%rcx),%zmm0
312
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
313
vbroadcasti32x4 16(%rcx),%zmm0
314
vaesenc %zmm0,%zmm1,%zmm1
315
vbroadcasti32x4 32(%rcx),%zmm0
316
vaesenc %zmm0,%zmm1,%zmm1
317
vbroadcasti32x4 48(%rcx),%zmm0
318
vaesenc %zmm0,%zmm1,%zmm1
319
vbroadcasti32x4 64(%rcx),%zmm0
320
vaesenc %zmm0,%zmm1,%zmm1
321
vbroadcasti32x4 80(%rcx),%zmm0
322
vaesenc %zmm0,%zmm1,%zmm1
323
vbroadcasti32x4 96(%rcx),%zmm0
324
vaesenc %zmm0,%zmm1,%zmm1
325
vbroadcasti32x4 112(%rcx),%zmm0
326
vaesenc %zmm0,%zmm1,%zmm1
327
vbroadcasti32x4 128(%rcx),%zmm0
328
vaesenc %zmm0,%zmm1,%zmm1
329
vbroadcasti32x4 144(%rcx),%zmm0
330
vaesenc %zmm0,%zmm1,%zmm1
331
vbroadcasti32x4 160(%rcx),%zmm0
332
vaesenclast %zmm0,%zmm1,%zmm1
333
vpxorq %zmm9,%zmm1,%zmm1
334
vmovdqu8 %zmm1,(%rsi){%k1}
335
addq $0x30,%rsi
336
vextracti32x4 $0x2,%zmm1,%xmm8
337
vextracti32x4 $0x3,%zmm9,%xmm0
338
andq $0xf,%rdx
339
je .L_ret_hEgxyDlCngwrfFe
340
jmp .L_steal_cipher_hEgxyDlCngwrfFe
341
.L_remaining_num_blocks_is_2_hEgxyDlCngwrfFe:
342
vmovdqu8 (%rdi),%ymm1
343
addq $0x20,%rdi
344
vbroadcasti32x4 (%rcx),%ymm0
345
vpternlogq $0x96,%ymm0,%ymm9,%ymm1
346
vbroadcasti32x4 16(%rcx),%ymm0
347
vaesenc %ymm0,%ymm1,%ymm1
348
vbroadcasti32x4 32(%rcx),%ymm0
349
vaesenc %ymm0,%ymm1,%ymm1
350
vbroadcasti32x4 48(%rcx),%ymm0
351
vaesenc %ymm0,%ymm1,%ymm1
352
vbroadcasti32x4 64(%rcx),%ymm0
353
vaesenc %ymm0,%ymm1,%ymm1
354
vbroadcasti32x4 80(%rcx),%ymm0
355
vaesenc %ymm0,%ymm1,%ymm1
356
vbroadcasti32x4 96(%rcx),%ymm0
357
vaesenc %ymm0,%ymm1,%ymm1
358
vbroadcasti32x4 112(%rcx),%ymm0
359
vaesenc %ymm0,%ymm1,%ymm1
360
vbroadcasti32x4 128(%rcx),%ymm0
361
vaesenc %ymm0,%ymm1,%ymm1
362
vbroadcasti32x4 144(%rcx),%ymm0
363
vaesenc %ymm0,%ymm1,%ymm1
364
vbroadcasti32x4 160(%rcx),%ymm0
365
vaesenclast %ymm0,%ymm1,%ymm1
366
vpxorq %ymm9,%ymm1,%ymm1
367
vmovdqu %ymm1,(%rsi)
368
addq $0x20,%rsi
369
vextracti32x4 $0x1,%zmm1,%xmm8
370
vextracti32x4 $0x2,%zmm9,%xmm0
371
andq $0xf,%rdx
372
je .L_ret_hEgxyDlCngwrfFe
373
jmp .L_steal_cipher_hEgxyDlCngwrfFe
374
.L_remaining_num_blocks_is_1_hEgxyDlCngwrfFe:
375
vmovdqu (%rdi),%xmm1
376
addq $0x10,%rdi
377
vpxor %xmm9,%xmm1,%xmm1
378
vpxor (%rcx),%xmm1,%xmm1
379
vaesenc 16(%rcx),%xmm1,%xmm1
380
vaesenc 32(%rcx),%xmm1,%xmm1
381
vaesenc 48(%rcx),%xmm1,%xmm1
382
vaesenc 64(%rcx),%xmm1,%xmm1
383
vaesenc 80(%rcx),%xmm1,%xmm1
384
vaesenc 96(%rcx),%xmm1,%xmm1
385
vaesenc 112(%rcx),%xmm1,%xmm1
386
vaesenc 128(%rcx),%xmm1,%xmm1
387
vaesenc 144(%rcx),%xmm1,%xmm1
388
vaesenclast 160(%rcx),%xmm1,%xmm1
389
vpxor %xmm9,%xmm1,%xmm1
390
vmovdqu %xmm1,(%rsi)
391
addq $0x10,%rsi
392
vmovdqa %xmm1,%xmm8
393
vextracti32x4 $0x1,%zmm9,%xmm0
394
andq $0xf,%rdx
395
je .L_ret_hEgxyDlCngwrfFe
396
jmp .L_steal_cipher_hEgxyDlCngwrfFe
397
398
399
.L_start_by16_hEgxyDlCngwrfFe:
400
vbroadcasti32x4 (%rsp),%zmm0
401
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
402
movq $0xaa,%r8
403
kmovq %r8,%k2
404
vpshufb %zmm8,%zmm0,%zmm1
405
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
406
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
407
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
408
vpxorq %zmm2,%zmm4,%zmm4{%k2}
409
vpxord %zmm4,%zmm3,%zmm9
410
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
411
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
412
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
413
vpxorq %zmm6,%zmm5,%zmm5{%k2}
414
vpxord %zmm5,%zmm7,%zmm10
415
vpsrldq $0xf,%zmm9,%zmm13
416
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
417
vpslldq $0x1,%zmm9,%zmm11
418
vpxord %zmm14,%zmm11,%zmm11
419
vpsrldq $0xf,%zmm10,%zmm15
420
vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16
421
vpslldq $0x1,%zmm10,%zmm12
422
vpxord %zmm16,%zmm12,%zmm12
423
424
.L_main_loop_run_16_hEgxyDlCngwrfFe:
425
vmovdqu8 (%rdi),%zmm1
426
vmovdqu8 64(%rdi),%zmm2
427
vmovdqu8 128(%rdi),%zmm3
428
vmovdqu8 192(%rdi),%zmm4
429
addq $0x100,%rdi
430
vpxorq %zmm9,%zmm1,%zmm1
431
vpxorq %zmm10,%zmm2,%zmm2
432
vpxorq %zmm11,%zmm3,%zmm3
433
vpxorq %zmm12,%zmm4,%zmm4
434
vbroadcasti32x4 (%rcx),%zmm0
435
vpxorq %zmm0,%zmm1,%zmm1
436
vpxorq %zmm0,%zmm2,%zmm2
437
vpxorq %zmm0,%zmm3,%zmm3
438
vpxorq %zmm0,%zmm4,%zmm4
439
vpsrldq $0xf,%zmm11,%zmm13
440
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
441
vpslldq $0x1,%zmm11,%zmm15
442
vpxord %zmm14,%zmm15,%zmm15
443
vbroadcasti32x4 16(%rcx),%zmm0
444
vaesenc %zmm0,%zmm1,%zmm1
445
vaesenc %zmm0,%zmm2,%zmm2
446
vaesenc %zmm0,%zmm3,%zmm3
447
vaesenc %zmm0,%zmm4,%zmm4
448
vbroadcasti32x4 32(%rcx),%zmm0
449
vaesenc %zmm0,%zmm1,%zmm1
450
vaesenc %zmm0,%zmm2,%zmm2
451
vaesenc %zmm0,%zmm3,%zmm3
452
vaesenc %zmm0,%zmm4,%zmm4
453
vbroadcasti32x4 48(%rcx),%zmm0
454
vaesenc %zmm0,%zmm1,%zmm1
455
vaesenc %zmm0,%zmm2,%zmm2
456
vaesenc %zmm0,%zmm3,%zmm3
457
vaesenc %zmm0,%zmm4,%zmm4
458
vpsrldq $0xf,%zmm12,%zmm13
459
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
460
vpslldq $0x1,%zmm12,%zmm16
461
vpxord %zmm14,%zmm16,%zmm16
462
vbroadcasti32x4 64(%rcx),%zmm0
463
vaesenc %zmm0,%zmm1,%zmm1
464
vaesenc %zmm0,%zmm2,%zmm2
465
vaesenc %zmm0,%zmm3,%zmm3
466
vaesenc %zmm0,%zmm4,%zmm4
467
vbroadcasti32x4 80(%rcx),%zmm0
468
vaesenc %zmm0,%zmm1,%zmm1
469
vaesenc %zmm0,%zmm2,%zmm2
470
vaesenc %zmm0,%zmm3,%zmm3
471
vaesenc %zmm0,%zmm4,%zmm4
472
vbroadcasti32x4 96(%rcx),%zmm0
473
vaesenc %zmm0,%zmm1,%zmm1
474
vaesenc %zmm0,%zmm2,%zmm2
475
vaesenc %zmm0,%zmm3,%zmm3
476
vaesenc %zmm0,%zmm4,%zmm4
477
vpsrldq $0xf,%zmm15,%zmm13
478
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
479
vpslldq $0x1,%zmm15,%zmm17
480
vpxord %zmm14,%zmm17,%zmm17
481
vbroadcasti32x4 112(%rcx),%zmm0
482
vaesenc %zmm0,%zmm1,%zmm1
483
vaesenc %zmm0,%zmm2,%zmm2
484
vaesenc %zmm0,%zmm3,%zmm3
485
vaesenc %zmm0,%zmm4,%zmm4
486
vbroadcasti32x4 128(%rcx),%zmm0
487
vaesenc %zmm0,%zmm1,%zmm1
488
vaesenc %zmm0,%zmm2,%zmm2
489
vaesenc %zmm0,%zmm3,%zmm3
490
vaesenc %zmm0,%zmm4,%zmm4
491
vbroadcasti32x4 144(%rcx),%zmm0
492
vaesenc %zmm0,%zmm1,%zmm1
493
vaesenc %zmm0,%zmm2,%zmm2
494
vaesenc %zmm0,%zmm3,%zmm3
495
vaesenc %zmm0,%zmm4,%zmm4
496
vpsrldq $0xf,%zmm16,%zmm13
497
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
498
vpslldq $0x1,%zmm16,%zmm18
499
vpxord %zmm14,%zmm18,%zmm18
500
vbroadcasti32x4 160(%rcx),%zmm0
501
vaesenclast %zmm0,%zmm1,%zmm1
502
vaesenclast %zmm0,%zmm2,%zmm2
503
vaesenclast %zmm0,%zmm3,%zmm3
504
vaesenclast %zmm0,%zmm4,%zmm4
505
vpxorq %zmm9,%zmm1,%zmm1
506
vpxorq %zmm10,%zmm2,%zmm2
507
vpxorq %zmm11,%zmm3,%zmm3
508
vpxorq %zmm12,%zmm4,%zmm4
509
510
vmovdqa32 %zmm15,%zmm9
511
vmovdqa32 %zmm16,%zmm10
512
vmovdqa32 %zmm17,%zmm11
513
vmovdqa32 %zmm18,%zmm12
514
vmovdqu8 %zmm1,(%rsi)
515
vmovdqu8 %zmm2,64(%rsi)
516
vmovdqu8 %zmm3,128(%rsi)
517
vmovdqu8 %zmm4,192(%rsi)
518
addq $0x100,%rsi
519
subq $0x100,%rdx
520
cmpq $0x100,%rdx
521
jae .L_main_loop_run_16_hEgxyDlCngwrfFe
522
cmpq $0x80,%rdx
523
jae .L_main_loop_run_8_hEgxyDlCngwrfFe
524
vextracti32x4 $0x3,%zmm4,%xmm0
525
jmp .L_do_n_blocks_hEgxyDlCngwrfFe
526
527
.L_start_by8_hEgxyDlCngwrfFe:
528
vbroadcasti32x4 (%rsp),%zmm0
529
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
530
movq $0xaa,%r8
531
kmovq %r8,%k2
532
vpshufb %zmm8,%zmm0,%zmm1
533
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
534
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
535
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
536
vpxorq %zmm2,%zmm4,%zmm4{%k2}
537
vpxord %zmm4,%zmm3,%zmm9
538
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
539
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
540
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
541
vpxorq %zmm6,%zmm5,%zmm5{%k2}
542
vpxord %zmm5,%zmm7,%zmm10
543
544
.L_main_loop_run_8_hEgxyDlCngwrfFe:
545
vmovdqu8 (%rdi),%zmm1
546
vmovdqu8 64(%rdi),%zmm2
547
addq $0x80,%rdi
548
vbroadcasti32x4 (%rcx),%zmm0
549
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
550
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
551
vpsrldq $0xf,%zmm9,%zmm13
552
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
553
vpslldq $0x1,%zmm9,%zmm15
554
vpxord %zmm14,%zmm15,%zmm15
555
vbroadcasti32x4 16(%rcx),%zmm0
556
vaesenc %zmm0,%zmm1,%zmm1
557
vaesenc %zmm0,%zmm2,%zmm2
558
559
560
vbroadcasti32x4 32(%rcx),%zmm0
561
vaesenc %zmm0,%zmm1,%zmm1
562
vaesenc %zmm0,%zmm2,%zmm2
563
564
565
vbroadcasti32x4 48(%rcx),%zmm0
566
vaesenc %zmm0,%zmm1,%zmm1
567
vaesenc %zmm0,%zmm2,%zmm2
568
vpsrldq $0xf,%zmm10,%zmm13
569
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
570
vpslldq $0x1,%zmm10,%zmm16
571
vpxord %zmm14,%zmm16,%zmm16
572
573
vbroadcasti32x4 64(%rcx),%zmm0
574
vaesenc %zmm0,%zmm1,%zmm1
575
vaesenc %zmm0,%zmm2,%zmm2
576
577
578
vbroadcasti32x4 80(%rcx),%zmm0
579
vaesenc %zmm0,%zmm1,%zmm1
580
vaesenc %zmm0,%zmm2,%zmm2
581
582
583
vbroadcasti32x4 96(%rcx),%zmm0
584
vaesenc %zmm0,%zmm1,%zmm1
585
vaesenc %zmm0,%zmm2,%zmm2
586
587
588
vbroadcasti32x4 112(%rcx),%zmm0
589
vaesenc %zmm0,%zmm1,%zmm1
590
vaesenc %zmm0,%zmm2,%zmm2
591
592
593
vbroadcasti32x4 128(%rcx),%zmm0
594
vaesenc %zmm0,%zmm1,%zmm1
595
vaesenc %zmm0,%zmm2,%zmm2
596
597
598
vbroadcasti32x4 144(%rcx),%zmm0
599
vaesenc %zmm0,%zmm1,%zmm1
600
vaesenc %zmm0,%zmm2,%zmm2
601
602
vbroadcasti32x4 160(%rcx),%zmm0
603
vaesenclast %zmm0,%zmm1,%zmm1
604
vaesenclast %zmm0,%zmm2,%zmm2
605
vpxorq %zmm9,%zmm1,%zmm1
606
vpxorq %zmm10,%zmm2,%zmm2
607
vmovdqa32 %zmm15,%zmm9
608
vmovdqa32 %zmm16,%zmm10
609
vmovdqu8 %zmm1,(%rsi)
610
vmovdqu8 %zmm2,64(%rsi)
611
addq $0x80,%rsi
612
subq $0x80,%rdx
613
cmpq $0x80,%rdx
614
jae .L_main_loop_run_8_hEgxyDlCngwrfFe
615
vextracti32x4 $0x3,%zmm2,%xmm0
616
jmp .L_do_n_blocks_hEgxyDlCngwrfFe
617
618
.L_steal_cipher_hEgxyDlCngwrfFe:
619
vmovdqa %xmm8,%xmm2
620
leaq vpshufb_shf_table(%rip),%rax
621
vmovdqu (%rax,%rdx,1),%xmm10
622
vpshufb %xmm10,%xmm8,%xmm8
623
vmovdqu -16(%rdi,%rdx,1),%xmm3
624
vmovdqu %xmm8,-16(%rsi,%rdx,1)
625
leaq vpshufb_shf_table(%rip),%rax
626
addq $16,%rax
627
subq %rdx,%rax
628
vmovdqu (%rax),%xmm10
629
vpxor mask1(%rip),%xmm10,%xmm10
630
vpshufb %xmm10,%xmm3,%xmm3
631
vpblendvb %xmm10,%xmm2,%xmm3,%xmm3
632
vpxor %xmm0,%xmm3,%xmm8
633
vpxor (%rcx),%xmm8,%xmm8
634
vaesenc 16(%rcx),%xmm8,%xmm8
635
vaesenc 32(%rcx),%xmm8,%xmm8
636
vaesenc 48(%rcx),%xmm8,%xmm8
637
vaesenc 64(%rcx),%xmm8,%xmm8
638
vaesenc 80(%rcx),%xmm8,%xmm8
639
vaesenc 96(%rcx),%xmm8,%xmm8
640
vaesenc 112(%rcx),%xmm8,%xmm8
641
vaesenc 128(%rcx),%xmm8,%xmm8
642
vaesenc 144(%rcx),%xmm8,%xmm8
643
vaesenclast 160(%rcx),%xmm8,%xmm8
644
vpxor %xmm0,%xmm8,%xmm8
645
vmovdqu %xmm8,-16(%rsi)
646
.L_ret_hEgxyDlCngwrfFe:
647
movq 128(%rsp),%rbx
648
xorq %r8,%r8
649
movq %r8,128(%rsp)
650
651
vpxorq %zmm0,%zmm0,%zmm0
652
movq %rbp,%rsp
653
popq %rbp
654
vzeroupper
655
.byte 0xf3,0xc3
656
657
.L_less_than_128_bytes_hEgxyDlCngwrfFe:
658
vpbroadcastq %r10,%zmm25
659
cmpq $0x10,%rdx
660
jb .L_ret_hEgxyDlCngwrfFe
661
vbroadcasti32x4 (%rsp),%zmm0
662
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
663
movl $0xaa,%r8d
664
kmovq %r8,%k2
665
movq %rdx,%r8
666
andq $0x70,%r8
667
cmpq $0x60,%r8
668
je .L_num_blocks_is_6_hEgxyDlCngwrfFe
669
cmpq $0x50,%r8
670
je .L_num_blocks_is_5_hEgxyDlCngwrfFe
671
cmpq $0x40,%r8
672
je .L_num_blocks_is_4_hEgxyDlCngwrfFe
673
cmpq $0x30,%r8
674
je .L_num_blocks_is_3_hEgxyDlCngwrfFe
675
cmpq $0x20,%r8
676
je .L_num_blocks_is_2_hEgxyDlCngwrfFe
677
cmpq $0x10,%r8
678
je .L_num_blocks_is_1_hEgxyDlCngwrfFe
679
680
.L_num_blocks_is_7_hEgxyDlCngwrfFe:
681
vpshufb %zmm8,%zmm0,%zmm1
682
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
683
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
684
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
685
vpxorq %zmm2,%zmm4,%zmm4{%k2}
686
vpxord %zmm4,%zmm3,%zmm9
687
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
688
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
689
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
690
vpxorq %zmm6,%zmm5,%zmm5{%k2}
691
vpxord %zmm5,%zmm7,%zmm10
692
movq $0x0000ffffffffffff,%r8
693
kmovq %r8,%k1
694
vmovdqu8 0(%rdi),%zmm1
695
vmovdqu8 64(%rdi),%zmm2{%k1}
696
697
addq $0x70,%rdi
698
vbroadcasti32x4 (%rcx),%zmm0
699
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
700
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
701
vbroadcasti32x4 16(%rcx),%zmm0
702
vaesenc %zmm0,%zmm1,%zmm1
703
vaesenc %zmm0,%zmm2,%zmm2
704
705
706
vbroadcasti32x4 32(%rcx),%zmm0
707
vaesenc %zmm0,%zmm1,%zmm1
708
vaesenc %zmm0,%zmm2,%zmm2
709
710
711
vbroadcasti32x4 48(%rcx),%zmm0
712
vaesenc %zmm0,%zmm1,%zmm1
713
vaesenc %zmm0,%zmm2,%zmm2
714
715
vbroadcasti32x4 64(%rcx),%zmm0
716
vaesenc %zmm0,%zmm1,%zmm1
717
vaesenc %zmm0,%zmm2,%zmm2
718
719
720
vbroadcasti32x4 80(%rcx),%zmm0
721
vaesenc %zmm0,%zmm1,%zmm1
722
vaesenc %zmm0,%zmm2,%zmm2
723
724
725
vbroadcasti32x4 96(%rcx),%zmm0
726
vaesenc %zmm0,%zmm1,%zmm1
727
vaesenc %zmm0,%zmm2,%zmm2
728
729
730
vbroadcasti32x4 112(%rcx),%zmm0
731
vaesenc %zmm0,%zmm1,%zmm1
732
vaesenc %zmm0,%zmm2,%zmm2
733
734
735
vbroadcasti32x4 128(%rcx),%zmm0
736
vaesenc %zmm0,%zmm1,%zmm1
737
vaesenc %zmm0,%zmm2,%zmm2
738
739
740
vbroadcasti32x4 144(%rcx),%zmm0
741
vaesenc %zmm0,%zmm1,%zmm1
742
vaesenc %zmm0,%zmm2,%zmm2
743
744
vbroadcasti32x4 160(%rcx),%zmm0
745
vaesenclast %zmm0,%zmm1,%zmm1
746
vaesenclast %zmm0,%zmm2,%zmm2
747
vpxorq %zmm9,%zmm1,%zmm1
748
vpxorq %zmm10,%zmm2,%zmm2
749
vmovdqu8 %zmm1,0(%rsi)
750
vmovdqu8 %zmm2,64(%rsi){%k1}
751
addq $0x70,%rsi
752
vextracti32x4 $0x2,%zmm2,%xmm8
753
vextracti32x4 $0x3,%zmm10,%xmm0
754
andq $0xf,%rdx
755
je .L_ret_hEgxyDlCngwrfFe
756
jmp .L_steal_cipher_hEgxyDlCngwrfFe
757
.L_num_blocks_is_6_hEgxyDlCngwrfFe:
758
vpshufb %zmm8,%zmm0,%zmm1
759
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
760
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
761
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
762
vpxorq %zmm2,%zmm4,%zmm4{%k2}
763
vpxord %zmm4,%zmm3,%zmm9
764
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
765
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
766
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
767
vpxorq %zmm6,%zmm5,%zmm5{%k2}
768
vpxord %zmm5,%zmm7,%zmm10
769
vmovdqu8 0(%rdi),%zmm1
770
vmovdqu8 64(%rdi),%ymm2
771
addq $96,%rdi
772
vbroadcasti32x4 (%rcx),%zmm0
773
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
774
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
775
vbroadcasti32x4 16(%rcx),%zmm0
776
vaesenc %zmm0,%zmm1,%zmm1
777
vaesenc %zmm0,%zmm2,%zmm2
778
779
780
vbroadcasti32x4 32(%rcx),%zmm0
781
vaesenc %zmm0,%zmm1,%zmm1
782
vaesenc %zmm0,%zmm2,%zmm2
783
784
785
vbroadcasti32x4 48(%rcx),%zmm0
786
vaesenc %zmm0,%zmm1,%zmm1
787
vaesenc %zmm0,%zmm2,%zmm2
788
789
vbroadcasti32x4 64(%rcx),%zmm0
790
vaesenc %zmm0,%zmm1,%zmm1
791
vaesenc %zmm0,%zmm2,%zmm2
792
793
794
vbroadcasti32x4 80(%rcx),%zmm0
795
vaesenc %zmm0,%zmm1,%zmm1
796
vaesenc %zmm0,%zmm2,%zmm2
797
798
799
vbroadcasti32x4 96(%rcx),%zmm0
800
vaesenc %zmm0,%zmm1,%zmm1
801
vaesenc %zmm0,%zmm2,%zmm2
802
803
804
vbroadcasti32x4 112(%rcx),%zmm0
805
vaesenc %zmm0,%zmm1,%zmm1
806
vaesenc %zmm0,%zmm2,%zmm2
807
808
809
vbroadcasti32x4 128(%rcx),%zmm0
810
vaesenc %zmm0,%zmm1,%zmm1
811
vaesenc %zmm0,%zmm2,%zmm2
812
813
814
vbroadcasti32x4 144(%rcx),%zmm0
815
vaesenc %zmm0,%zmm1,%zmm1
816
vaesenc %zmm0,%zmm2,%zmm2
817
818
vbroadcasti32x4 160(%rcx),%zmm0
819
vaesenclast %zmm0,%zmm1,%zmm1
820
vaesenclast %zmm0,%zmm2,%zmm2
821
vpxorq %zmm9,%zmm1,%zmm1
822
vpxorq %zmm10,%zmm2,%zmm2
823
vmovdqu8 %zmm1,0(%rsi)
824
vmovdqu8 %ymm2,64(%rsi)
825
addq $96,%rsi
826
827
vextracti32x4 $0x1,%ymm2,%xmm8
828
vextracti32x4 $0x2,%zmm10,%xmm0
829
andq $0xf,%rdx
830
je .L_ret_hEgxyDlCngwrfFe
831
jmp .L_steal_cipher_hEgxyDlCngwrfFe
832
.L_num_blocks_is_5_hEgxyDlCngwrfFe:
833
vpshufb %zmm8,%zmm0,%zmm1
834
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
835
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
836
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
837
vpxorq %zmm2,%zmm4,%zmm4{%k2}
838
vpxord %zmm4,%zmm3,%zmm9
839
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
840
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
841
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
842
vpxorq %zmm6,%zmm5,%zmm5{%k2}
843
vpxord %zmm5,%zmm7,%zmm10
844
vmovdqu8 0(%rdi),%zmm1
845
vmovdqu8 64(%rdi),%xmm2
846
addq $80,%rdi
847
vbroadcasti32x4 (%rcx),%zmm0
848
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
849
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
850
vbroadcasti32x4 16(%rcx),%zmm0
851
vaesenc %zmm0,%zmm1,%zmm1
852
vaesenc %zmm0,%zmm2,%zmm2
853
854
855
vbroadcasti32x4 32(%rcx),%zmm0
856
vaesenc %zmm0,%zmm1,%zmm1
857
vaesenc %zmm0,%zmm2,%zmm2
858
859
860
vbroadcasti32x4 48(%rcx),%zmm0
861
vaesenc %zmm0,%zmm1,%zmm1
862
vaesenc %zmm0,%zmm2,%zmm2
863
864
vbroadcasti32x4 64(%rcx),%zmm0
865
vaesenc %zmm0,%zmm1,%zmm1
866
vaesenc %zmm0,%zmm2,%zmm2
867
868
869
vbroadcasti32x4 80(%rcx),%zmm0
870
vaesenc %zmm0,%zmm1,%zmm1
871
vaesenc %zmm0,%zmm2,%zmm2
872
873
874
vbroadcasti32x4 96(%rcx),%zmm0
875
vaesenc %zmm0,%zmm1,%zmm1
876
vaesenc %zmm0,%zmm2,%zmm2
877
878
879
vbroadcasti32x4 112(%rcx),%zmm0
880
vaesenc %zmm0,%zmm1,%zmm1
881
vaesenc %zmm0,%zmm2,%zmm2
882
883
884
vbroadcasti32x4 128(%rcx),%zmm0
885
vaesenc %zmm0,%zmm1,%zmm1
886
vaesenc %zmm0,%zmm2,%zmm2
887
888
889
vbroadcasti32x4 144(%rcx),%zmm0
890
vaesenc %zmm0,%zmm1,%zmm1
891
vaesenc %zmm0,%zmm2,%zmm2
892
893
vbroadcasti32x4 160(%rcx),%zmm0
894
vaesenclast %zmm0,%zmm1,%zmm1
895
vaesenclast %zmm0,%zmm2,%zmm2
896
vpxorq %zmm9,%zmm1,%zmm1
897
vpxorq %zmm10,%zmm2,%zmm2
898
vmovdqu8 %zmm1,0(%rsi)
899
vmovdqu8 %xmm2,64(%rsi)
900
addq $80,%rsi
901
902
vmovdqa %xmm2,%xmm8
903
vextracti32x4 $0x1,%zmm10,%xmm0
904
andq $0xf,%rdx
905
je .L_ret_hEgxyDlCngwrfFe
906
jmp .L_steal_cipher_hEgxyDlCngwrfFe
907
.L_num_blocks_is_4_hEgxyDlCngwrfFe:
908
vpshufb %zmm8,%zmm0,%zmm1
909
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
910
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
911
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
912
vpxorq %zmm2,%zmm4,%zmm4{%k2}
913
vpxord %zmm4,%zmm3,%zmm9
914
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
915
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
916
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
917
vpxorq %zmm6,%zmm5,%zmm5{%k2}
918
vpxord %zmm5,%zmm7,%zmm10
919
vmovdqu8 0(%rdi),%zmm1
920
addq $64,%rdi
921
vbroadcasti32x4 (%rcx),%zmm0
922
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
923
vbroadcasti32x4 16(%rcx),%zmm0
924
vaesenc %zmm0,%zmm1,%zmm1
925
vbroadcasti32x4 32(%rcx),%zmm0
926
vaesenc %zmm0,%zmm1,%zmm1
927
vbroadcasti32x4 48(%rcx),%zmm0
928
vaesenc %zmm0,%zmm1,%zmm1
929
vbroadcasti32x4 64(%rcx),%zmm0
930
vaesenc %zmm0,%zmm1,%zmm1
931
vbroadcasti32x4 80(%rcx),%zmm0
932
vaesenc %zmm0,%zmm1,%zmm1
933
vbroadcasti32x4 96(%rcx),%zmm0
934
vaesenc %zmm0,%zmm1,%zmm1
935
vbroadcasti32x4 112(%rcx),%zmm0
936
vaesenc %zmm0,%zmm1,%zmm1
937
vbroadcasti32x4 128(%rcx),%zmm0
938
vaesenc %zmm0,%zmm1,%zmm1
939
vbroadcasti32x4 144(%rcx),%zmm0
940
vaesenc %zmm0,%zmm1,%zmm1
941
vbroadcasti32x4 160(%rcx),%zmm0
942
vaesenclast %zmm0,%zmm1,%zmm1
943
vpxorq %zmm9,%zmm1,%zmm1
944
vmovdqu8 %zmm1,0(%rsi)
945
addq $64,%rsi
946
vextracti32x4 $0x3,%zmm1,%xmm8
947
vmovdqa %xmm10,%xmm0
948
andq $0xf,%rdx
949
je .L_ret_hEgxyDlCngwrfFe
950
jmp .L_steal_cipher_hEgxyDlCngwrfFe
951
.L_num_blocks_is_3_hEgxyDlCngwrfFe:
952
vpshufb %zmm8,%zmm0,%zmm1
953
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
954
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
955
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
956
vpxorq %zmm2,%zmm4,%zmm4{%k2}
957
vpxord %zmm4,%zmm3,%zmm9
958
movq $0x0000ffffffffffff,%r8
959
kmovq %r8,%k1
960
vmovdqu8 0(%rdi),%zmm1{%k1}
961
addq $48,%rdi
962
vbroadcasti32x4 (%rcx),%zmm0
963
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
964
vbroadcasti32x4 16(%rcx),%zmm0
965
vaesenc %zmm0,%zmm1,%zmm1
966
vbroadcasti32x4 32(%rcx),%zmm0
967
vaesenc %zmm0,%zmm1,%zmm1
968
vbroadcasti32x4 48(%rcx),%zmm0
969
vaesenc %zmm0,%zmm1,%zmm1
970
vbroadcasti32x4 64(%rcx),%zmm0
971
vaesenc %zmm0,%zmm1,%zmm1
972
vbroadcasti32x4 80(%rcx),%zmm0
973
vaesenc %zmm0,%zmm1,%zmm1
974
vbroadcasti32x4 96(%rcx),%zmm0
975
vaesenc %zmm0,%zmm1,%zmm1
976
vbroadcasti32x4 112(%rcx),%zmm0
977
vaesenc %zmm0,%zmm1,%zmm1
978
vbroadcasti32x4 128(%rcx),%zmm0
979
vaesenc %zmm0,%zmm1,%zmm1
980
vbroadcasti32x4 144(%rcx),%zmm0
981
vaesenc %zmm0,%zmm1,%zmm1
982
vbroadcasti32x4 160(%rcx),%zmm0
983
vaesenclast %zmm0,%zmm1,%zmm1
984
vpxorq %zmm9,%zmm1,%zmm1
985
vmovdqu8 %zmm1,0(%rsi){%k1}
986
addq $48,%rsi
987
vextracti32x4 $2,%zmm1,%xmm8
988
vextracti32x4 $3,%zmm9,%xmm0
989
andq $0xf,%rdx
990
je .L_ret_hEgxyDlCngwrfFe
991
jmp .L_steal_cipher_hEgxyDlCngwrfFe
992
.L_num_blocks_is_2_hEgxyDlCngwrfFe:
993
vpshufb %zmm8,%zmm0,%zmm1
994
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
995
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
996
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
997
vpxorq %zmm2,%zmm4,%zmm4{%k2}
998
vpxord %zmm4,%zmm3,%zmm9
999
1000
vmovdqu8 0(%rdi),%ymm1
1001
addq $32,%rdi
1002
vbroadcasti32x4 (%rcx),%ymm0
1003
vpternlogq $0x96,%ymm0,%ymm9,%ymm1
1004
vbroadcasti32x4 16(%rcx),%ymm0
1005
vaesenc %ymm0,%ymm1,%ymm1
1006
vbroadcasti32x4 32(%rcx),%ymm0
1007
vaesenc %ymm0,%ymm1,%ymm1
1008
vbroadcasti32x4 48(%rcx),%ymm0
1009
vaesenc %ymm0,%ymm1,%ymm1
1010
vbroadcasti32x4 64(%rcx),%ymm0
1011
vaesenc %ymm0,%ymm1,%ymm1
1012
vbroadcasti32x4 80(%rcx),%ymm0
1013
vaesenc %ymm0,%ymm1,%ymm1
1014
vbroadcasti32x4 96(%rcx),%ymm0
1015
vaesenc %ymm0,%ymm1,%ymm1
1016
vbroadcasti32x4 112(%rcx),%ymm0
1017
vaesenc %ymm0,%ymm1,%ymm1
1018
vbroadcasti32x4 128(%rcx),%ymm0
1019
vaesenc %ymm0,%ymm1,%ymm1
1020
vbroadcasti32x4 144(%rcx),%ymm0
1021
vaesenc %ymm0,%ymm1,%ymm1
1022
vbroadcasti32x4 160(%rcx),%ymm0
1023
vaesenclast %ymm0,%ymm1,%ymm1
1024
vpxorq %ymm9,%ymm1,%ymm1
1025
vmovdqu8 %ymm1,0(%rsi)
1026
addq $32,%rsi
1027
1028
vextracti32x4 $1,%ymm1,%xmm8
1029
vextracti32x4 $2,%zmm9,%xmm0
1030
andq $0xf,%rdx
1031
je .L_ret_hEgxyDlCngwrfFe
1032
jmp .L_steal_cipher_hEgxyDlCngwrfFe
1033
.L_num_blocks_is_1_hEgxyDlCngwrfFe:
1034
vpshufb %zmm8,%zmm0,%zmm1
1035
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
1036
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
1037
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
1038
vpxorq %zmm2,%zmm4,%zmm4{%k2}
1039
vpxord %zmm4,%zmm3,%zmm9
1040
1041
vmovdqu8 0(%rdi),%xmm1
1042
addq $16,%rdi
1043
vbroadcasti32x4 (%rcx),%ymm0
1044
vpternlogq $0x96,%ymm0,%ymm9,%ymm1
1045
vbroadcasti32x4 16(%rcx),%ymm0
1046
vaesenc %ymm0,%ymm1,%ymm1
1047
vbroadcasti32x4 32(%rcx),%ymm0
1048
vaesenc %ymm0,%ymm1,%ymm1
1049
vbroadcasti32x4 48(%rcx),%ymm0
1050
vaesenc %ymm0,%ymm1,%ymm1
1051
vbroadcasti32x4 64(%rcx),%ymm0
1052
vaesenc %ymm0,%ymm1,%ymm1
1053
vbroadcasti32x4 80(%rcx),%ymm0
1054
vaesenc %ymm0,%ymm1,%ymm1
1055
vbroadcasti32x4 96(%rcx),%ymm0
1056
vaesenc %ymm0,%ymm1,%ymm1
1057
vbroadcasti32x4 112(%rcx),%ymm0
1058
vaesenc %ymm0,%ymm1,%ymm1
1059
vbroadcasti32x4 128(%rcx),%ymm0
1060
vaesenc %ymm0,%ymm1,%ymm1
1061
vbroadcasti32x4 144(%rcx),%ymm0
1062
vaesenc %ymm0,%ymm1,%ymm1
1063
vbroadcasti32x4 160(%rcx),%ymm0
1064
vaesenclast %ymm0,%ymm1,%ymm1
1065
vpxorq %ymm9,%ymm1,%ymm1
1066
vmovdqu8 %xmm1,0(%rsi)
1067
addq $16,%rsi
1068
1069
vmovdqa %xmm1,%xmm8
1070
vextracti32x4 $1,%zmm9,%xmm0
1071
andq $0xf,%rdx
1072
je .L_ret_hEgxyDlCngwrfFe
1073
jmp .L_steal_cipher_hEgxyDlCngwrfFe
1074
.cfi_endproc
1075
.globl aesni_xts_128_decrypt_avx512
1076
.hidden aesni_xts_128_decrypt_avx512
1077
.type aesni_xts_128_decrypt_avx512,@function
1078
.align 32
1079
aesni_xts_128_decrypt_avx512:
1080
.cfi_startproc
1081
.byte 243,15,30,250
1082
pushq %rbp
1083
movq %rsp,%rbp
1084
subq $136,%rsp
1085
andq $0xffffffffffffffc0,%rsp
1086
movq %rbx,128(%rsp)
1087
movq $0x87,%r10
1088
vmovdqu (%r9),%xmm1
1089
vpxor (%r8),%xmm1,%xmm1
1090
vaesenc 16(%r8),%xmm1,%xmm1
1091
vaesenc 32(%r8),%xmm1,%xmm1
1092
vaesenc 48(%r8),%xmm1,%xmm1
1093
vaesenc 64(%r8),%xmm1,%xmm1
1094
vaesenc 80(%r8),%xmm1,%xmm1
1095
vaesenc 96(%r8),%xmm1,%xmm1
1096
vaesenc 112(%r8),%xmm1,%xmm1
1097
vaesenc 128(%r8),%xmm1,%xmm1
1098
vaesenc 144(%r8),%xmm1,%xmm1
1099
vaesenclast 160(%r8),%xmm1,%xmm1
1100
vmovdqa %xmm1,(%rsp)
1101
1102
cmpq $0x80,%rdx
1103
jb .L_less_than_128_bytes_amivrujEyduiFoi
1104
vpbroadcastq %r10,%zmm25
1105
cmpq $0x100,%rdx
1106
jge .L_start_by16_amivrujEyduiFoi
1107
jmp .L_start_by8_amivrujEyduiFoi
1108
1109
.L_do_n_blocks_amivrujEyduiFoi:
1110
cmpq $0x0,%rdx
1111
je .L_ret_amivrujEyduiFoi
1112
cmpq $0x70,%rdx
1113
jge .L_remaining_num_blocks_is_7_amivrujEyduiFoi
1114
cmpq $0x60,%rdx
1115
jge .L_remaining_num_blocks_is_6_amivrujEyduiFoi
1116
cmpq $0x50,%rdx
1117
jge .L_remaining_num_blocks_is_5_amivrujEyduiFoi
1118
cmpq $0x40,%rdx
1119
jge .L_remaining_num_blocks_is_4_amivrujEyduiFoi
1120
cmpq $0x30,%rdx
1121
jge .L_remaining_num_blocks_is_3_amivrujEyduiFoi
1122
cmpq $0x20,%rdx
1123
jge .L_remaining_num_blocks_is_2_amivrujEyduiFoi
1124
cmpq $0x10,%rdx
1125
jge .L_remaining_num_blocks_is_1_amivrujEyduiFoi
1126
1127
1128
vmovdqu %xmm5,%xmm1
1129
1130
vpxor %xmm9,%xmm1,%xmm1
1131
vmovdqu (%rcx),%xmm0
1132
vpxor %xmm0,%xmm1,%xmm1
1133
vmovdqu 16(%rcx),%xmm0
1134
vaesdec %xmm0,%xmm1,%xmm1
1135
vmovdqu 32(%rcx),%xmm0
1136
vaesdec %xmm0,%xmm1,%xmm1
1137
vmovdqu 48(%rcx),%xmm0
1138
vaesdec %xmm0,%xmm1,%xmm1
1139
vmovdqu 64(%rcx),%xmm0
1140
vaesdec %xmm0,%xmm1,%xmm1
1141
vmovdqu 80(%rcx),%xmm0
1142
vaesdec %xmm0,%xmm1,%xmm1
1143
vmovdqu 96(%rcx),%xmm0
1144
vaesdec %xmm0,%xmm1,%xmm1
1145
vmovdqu 112(%rcx),%xmm0
1146
vaesdec %xmm0,%xmm1,%xmm1
1147
vmovdqu 128(%rcx),%xmm0
1148
vaesdec %xmm0,%xmm1,%xmm1
1149
vmovdqu 144(%rcx),%xmm0
1150
vaesdec %xmm0,%xmm1,%xmm1
1151
vmovdqu 160(%rcx),%xmm0
1152
vaesdeclast %xmm0,%xmm1,%xmm1
1153
vpxor %xmm9,%xmm1,%xmm1
1154
vmovdqu %xmm1,-16(%rsi)
1155
vmovdqa %xmm1,%xmm8
1156
1157
1158
movq $0x1,%r8
1159
kmovq %r8,%k1
1160
vpsllq $0x3f,%xmm9,%xmm13
1161
vpsraq $0x3f,%xmm13,%xmm14
1162
vpandq %xmm25,%xmm14,%xmm5
1163
vpxorq %xmm5,%xmm9,%xmm9{%k1}
1164
vpsrldq $0x8,%xmm9,%xmm10
1165
.byte 98, 211, 181, 8, 115, 194, 1
1166
vpslldq $0x8,%xmm13,%xmm13
1167
vpxorq %xmm13,%xmm0,%xmm0
1168
jmp .L_steal_cipher_amivrujEyduiFoi
1169
1170
.L_remaining_num_blocks_is_7_amivrujEyduiFoi:
1171
movq $0xffffffffffffffff,%r8
1172
shrq $0x10,%r8
1173
kmovq %r8,%k1
1174
vmovdqu8 (%rdi),%zmm1
1175
vmovdqu8 64(%rdi),%zmm2{%k1}
1176
addq $0x70,%rdi
1177
andq $0xf,%rdx
1178
je .L_done_7_remain_amivrujEyduiFoi
1179
vextracti32x4 $0x2,%zmm10,%xmm12
1180
vextracti32x4 $0x3,%zmm10,%xmm13
1181
vinserti32x4 $0x2,%xmm13,%zmm10,%zmm10
1182
1183
vpxorq %zmm9,%zmm1,%zmm1
1184
vpxorq %zmm10,%zmm2,%zmm2
1185
1186
1187
vbroadcasti32x4 (%rcx),%zmm0
1188
vpxorq %zmm0,%zmm1,%zmm1
1189
vpxorq %zmm0,%zmm2,%zmm2
1190
vbroadcasti32x4 16(%rcx),%zmm0
1191
vaesdec %zmm0,%zmm1,%zmm1
1192
vaesdec %zmm0,%zmm2,%zmm2
1193
1194
1195
vbroadcasti32x4 32(%rcx),%zmm0
1196
vaesdec %zmm0,%zmm1,%zmm1
1197
vaesdec %zmm0,%zmm2,%zmm2
1198
1199
1200
vbroadcasti32x4 48(%rcx),%zmm0
1201
vaesdec %zmm0,%zmm1,%zmm1
1202
vaesdec %zmm0,%zmm2,%zmm2
1203
1204
vbroadcasti32x4 64(%rcx),%zmm0
1205
vaesdec %zmm0,%zmm1,%zmm1
1206
vaesdec %zmm0,%zmm2,%zmm2
1207
1208
1209
vbroadcasti32x4 80(%rcx),%zmm0
1210
vaesdec %zmm0,%zmm1,%zmm1
1211
vaesdec %zmm0,%zmm2,%zmm2
1212
1213
1214
vbroadcasti32x4 96(%rcx),%zmm0
1215
vaesdec %zmm0,%zmm1,%zmm1
1216
vaesdec %zmm0,%zmm2,%zmm2
1217
1218
1219
vbroadcasti32x4 112(%rcx),%zmm0
1220
vaesdec %zmm0,%zmm1,%zmm1
1221
vaesdec %zmm0,%zmm2,%zmm2
1222
1223
1224
vbroadcasti32x4 128(%rcx),%zmm0
1225
vaesdec %zmm0,%zmm1,%zmm1
1226
vaesdec %zmm0,%zmm2,%zmm2
1227
1228
1229
vbroadcasti32x4 144(%rcx),%zmm0
1230
vaesdec %zmm0,%zmm1,%zmm1
1231
vaesdec %zmm0,%zmm2,%zmm2
1232
1233
1234
vbroadcasti32x4 160(%rcx),%zmm0
1235
vaesdeclast %zmm0,%zmm1,%zmm1
1236
vaesdeclast %zmm0,%zmm2,%zmm2
1237
1238
vpxorq %zmm9,%zmm1,%zmm1
1239
vpxorq %zmm10,%zmm2,%zmm2
1240
1241
1242
vmovdqa32 %zmm15,%zmm9
1243
vmovdqa32 %zmm16,%zmm10
1244
vmovdqu8 %zmm1,(%rsi)
1245
vmovdqu8 %zmm2,64(%rsi){%k1}
1246
addq $0x70,%rsi
1247
vextracti32x4 $0x2,%zmm2,%xmm8
1248
vmovdqa %xmm12,%xmm0
1249
jmp .L_steal_cipher_amivrujEyduiFoi
1250
1251
.L_done_7_remain_amivrujEyduiFoi:
1252
1253
vpxorq %zmm9,%zmm1,%zmm1
1254
vpxorq %zmm10,%zmm2,%zmm2
1255
1256
1257
vbroadcasti32x4 (%rcx),%zmm0
1258
vpxorq %zmm0,%zmm1,%zmm1
1259
vpxorq %zmm0,%zmm2,%zmm2
1260
vbroadcasti32x4 16(%rcx),%zmm0
1261
vaesdec %zmm0,%zmm1,%zmm1
1262
vaesdec %zmm0,%zmm2,%zmm2
1263
1264
1265
vbroadcasti32x4 32(%rcx),%zmm0
1266
vaesdec %zmm0,%zmm1,%zmm1
1267
vaesdec %zmm0,%zmm2,%zmm2
1268
1269
1270
vbroadcasti32x4 48(%rcx),%zmm0
1271
vaesdec %zmm0,%zmm1,%zmm1
1272
vaesdec %zmm0,%zmm2,%zmm2
1273
1274
vbroadcasti32x4 64(%rcx),%zmm0
1275
vaesdec %zmm0,%zmm1,%zmm1
1276
vaesdec %zmm0,%zmm2,%zmm2
1277
1278
1279
vbroadcasti32x4 80(%rcx),%zmm0
1280
vaesdec %zmm0,%zmm1,%zmm1
1281
vaesdec %zmm0,%zmm2,%zmm2
1282
1283
1284
vbroadcasti32x4 96(%rcx),%zmm0
1285
vaesdec %zmm0,%zmm1,%zmm1
1286
vaesdec %zmm0,%zmm2,%zmm2
1287
1288
1289
vbroadcasti32x4 112(%rcx),%zmm0
1290
vaesdec %zmm0,%zmm1,%zmm1
1291
vaesdec %zmm0,%zmm2,%zmm2
1292
1293
1294
vbroadcasti32x4 128(%rcx),%zmm0
1295
vaesdec %zmm0,%zmm1,%zmm1
1296
vaesdec %zmm0,%zmm2,%zmm2
1297
1298
1299
vbroadcasti32x4 144(%rcx),%zmm0
1300
vaesdec %zmm0,%zmm1,%zmm1
1301
vaesdec %zmm0,%zmm2,%zmm2
1302
1303
1304
vbroadcasti32x4 160(%rcx),%zmm0
1305
vaesdeclast %zmm0,%zmm1,%zmm1
1306
vaesdeclast %zmm0,%zmm2,%zmm2
1307
1308
vpxorq %zmm9,%zmm1,%zmm1
1309
vpxorq %zmm10,%zmm2,%zmm2
1310
1311
1312
vmovdqa32 %zmm15,%zmm9
1313
vmovdqa32 %zmm16,%zmm10
1314
vmovdqu8 %zmm1,(%rsi)
1315
vmovdqu8 %zmm2,64(%rsi){%k1}
1316
jmp .L_ret_amivrujEyduiFoi
1317
1318
.L_remaining_num_blocks_is_6_amivrujEyduiFoi:
1319
vmovdqu8 (%rdi),%zmm1
1320
vmovdqu8 64(%rdi),%ymm2
1321
addq $0x60,%rdi
1322
andq $0xf,%rdx
1323
je .L_done_6_remain_amivrujEyduiFoi
1324
vextracti32x4 $0x1,%zmm10,%xmm12
1325
vextracti32x4 $0x2,%zmm10,%xmm13
1326
vinserti32x4 $0x1,%xmm13,%zmm10,%zmm10
1327
1328
vpxorq %zmm9,%zmm1,%zmm1
1329
vpxorq %zmm10,%zmm2,%zmm2
1330
1331
1332
vbroadcasti32x4 (%rcx),%zmm0
1333
vpxorq %zmm0,%zmm1,%zmm1
1334
vpxorq %zmm0,%zmm2,%zmm2
1335
vbroadcasti32x4 16(%rcx),%zmm0
1336
vaesdec %zmm0,%zmm1,%zmm1
1337
vaesdec %zmm0,%zmm2,%zmm2
1338
1339
1340
vbroadcasti32x4 32(%rcx),%zmm0
1341
vaesdec %zmm0,%zmm1,%zmm1
1342
vaesdec %zmm0,%zmm2,%zmm2
1343
1344
1345
vbroadcasti32x4 48(%rcx),%zmm0
1346
vaesdec %zmm0,%zmm1,%zmm1
1347
vaesdec %zmm0,%zmm2,%zmm2
1348
1349
vbroadcasti32x4 64(%rcx),%zmm0
1350
vaesdec %zmm0,%zmm1,%zmm1
1351
vaesdec %zmm0,%zmm2,%zmm2
1352
1353
1354
vbroadcasti32x4 80(%rcx),%zmm0
1355
vaesdec %zmm0,%zmm1,%zmm1
1356
vaesdec %zmm0,%zmm2,%zmm2
1357
1358
1359
vbroadcasti32x4 96(%rcx),%zmm0
1360
vaesdec %zmm0,%zmm1,%zmm1
1361
vaesdec %zmm0,%zmm2,%zmm2
1362
1363
1364
vbroadcasti32x4 112(%rcx),%zmm0
1365
vaesdec %zmm0,%zmm1,%zmm1
1366
vaesdec %zmm0,%zmm2,%zmm2
1367
1368
1369
vbroadcasti32x4 128(%rcx),%zmm0
1370
vaesdec %zmm0,%zmm1,%zmm1
1371
vaesdec %zmm0,%zmm2,%zmm2
1372
1373
1374
vbroadcasti32x4 144(%rcx),%zmm0
1375
vaesdec %zmm0,%zmm1,%zmm1
1376
vaesdec %zmm0,%zmm2,%zmm2
1377
1378
1379
vbroadcasti32x4 160(%rcx),%zmm0
1380
vaesdeclast %zmm0,%zmm1,%zmm1
1381
vaesdeclast %zmm0,%zmm2,%zmm2
1382
1383
vpxorq %zmm9,%zmm1,%zmm1
1384
vpxorq %zmm10,%zmm2,%zmm2
1385
1386
1387
vmovdqa32 %zmm15,%zmm9
1388
vmovdqa32 %zmm16,%zmm10
1389
vmovdqu8 %zmm1,(%rsi)
1390
vmovdqu8 %ymm2,64(%rsi)
1391
addq $0x60,%rsi
1392
vextracti32x4 $0x1,%zmm2,%xmm8
1393
vmovdqa %xmm12,%xmm0
1394
jmp .L_steal_cipher_amivrujEyduiFoi
1395
1396
.L_done_6_remain_amivrujEyduiFoi:
1397
1398
vpxorq %zmm9,%zmm1,%zmm1
1399
vpxorq %zmm10,%zmm2,%zmm2
1400
1401
1402
vbroadcasti32x4 (%rcx),%zmm0
1403
vpxorq %zmm0,%zmm1,%zmm1
1404
vpxorq %zmm0,%zmm2,%zmm2
1405
vbroadcasti32x4 16(%rcx),%zmm0
1406
vaesdec %zmm0,%zmm1,%zmm1
1407
vaesdec %zmm0,%zmm2,%zmm2
1408
1409
1410
vbroadcasti32x4 32(%rcx),%zmm0
1411
vaesdec %zmm0,%zmm1,%zmm1
1412
vaesdec %zmm0,%zmm2,%zmm2
1413
1414
1415
vbroadcasti32x4 48(%rcx),%zmm0
1416
vaesdec %zmm0,%zmm1,%zmm1
1417
vaesdec %zmm0,%zmm2,%zmm2
1418
1419
vbroadcasti32x4 64(%rcx),%zmm0
1420
vaesdec %zmm0,%zmm1,%zmm1
1421
vaesdec %zmm0,%zmm2,%zmm2
1422
1423
1424
vbroadcasti32x4 80(%rcx),%zmm0
1425
vaesdec %zmm0,%zmm1,%zmm1
1426
vaesdec %zmm0,%zmm2,%zmm2
1427
1428
1429
vbroadcasti32x4 96(%rcx),%zmm0
1430
vaesdec %zmm0,%zmm1,%zmm1
1431
vaesdec %zmm0,%zmm2,%zmm2
1432
1433
1434
vbroadcasti32x4 112(%rcx),%zmm0
1435
vaesdec %zmm0,%zmm1,%zmm1
1436
vaesdec %zmm0,%zmm2,%zmm2
1437
1438
1439
vbroadcasti32x4 128(%rcx),%zmm0
1440
vaesdec %zmm0,%zmm1,%zmm1
1441
vaesdec %zmm0,%zmm2,%zmm2
1442
1443
1444
vbroadcasti32x4 144(%rcx),%zmm0
1445
vaesdec %zmm0,%zmm1,%zmm1
1446
vaesdec %zmm0,%zmm2,%zmm2
1447
1448
1449
vbroadcasti32x4 160(%rcx),%zmm0
1450
vaesdeclast %zmm0,%zmm1,%zmm1
1451
vaesdeclast %zmm0,%zmm2,%zmm2
1452
1453
vpxorq %zmm9,%zmm1,%zmm1
1454
vpxorq %zmm10,%zmm2,%zmm2
1455
1456
1457
vmovdqa32 %zmm15,%zmm9
1458
vmovdqa32 %zmm16,%zmm10
1459
vmovdqu8 %zmm1,(%rsi)
1460
vmovdqu8 %ymm2,64(%rsi)
1461
jmp .L_ret_amivrujEyduiFoi
1462
1463
.L_remaining_num_blocks_is_5_amivrujEyduiFoi:
1464
vmovdqu8 (%rdi),%zmm1
1465
vmovdqu 64(%rdi),%xmm2
1466
addq $0x50,%rdi
1467
andq $0xf,%rdx
1468
je .L_done_5_remain_amivrujEyduiFoi
1469
vmovdqa %xmm10,%xmm12
1470
vextracti32x4 $0x1,%zmm10,%xmm10
1471
1472
vpxorq %zmm9,%zmm1,%zmm1
1473
vpxorq %zmm10,%zmm2,%zmm2
1474
1475
1476
vbroadcasti32x4 (%rcx),%zmm0
1477
vpxorq %zmm0,%zmm1,%zmm1
1478
vpxorq %zmm0,%zmm2,%zmm2
1479
vbroadcasti32x4 16(%rcx),%zmm0
1480
vaesdec %zmm0,%zmm1,%zmm1
1481
vaesdec %zmm0,%zmm2,%zmm2
1482
1483
1484
vbroadcasti32x4 32(%rcx),%zmm0
1485
vaesdec %zmm0,%zmm1,%zmm1
1486
vaesdec %zmm0,%zmm2,%zmm2
1487
1488
1489
vbroadcasti32x4 48(%rcx),%zmm0
1490
vaesdec %zmm0,%zmm1,%zmm1
1491
vaesdec %zmm0,%zmm2,%zmm2
1492
1493
vbroadcasti32x4 64(%rcx),%zmm0
1494
vaesdec %zmm0,%zmm1,%zmm1
1495
vaesdec %zmm0,%zmm2,%zmm2
1496
1497
1498
vbroadcasti32x4 80(%rcx),%zmm0
1499
vaesdec %zmm0,%zmm1,%zmm1
1500
vaesdec %zmm0,%zmm2,%zmm2
1501
1502
1503
vbroadcasti32x4 96(%rcx),%zmm0
1504
vaesdec %zmm0,%zmm1,%zmm1
1505
vaesdec %zmm0,%zmm2,%zmm2
1506
1507
1508
vbroadcasti32x4 112(%rcx),%zmm0
1509
vaesdec %zmm0,%zmm1,%zmm1
1510
vaesdec %zmm0,%zmm2,%zmm2
1511
1512
1513
vbroadcasti32x4 128(%rcx),%zmm0
1514
vaesdec %zmm0,%zmm1,%zmm1
1515
vaesdec %zmm0,%zmm2,%zmm2
1516
1517
1518
vbroadcasti32x4 144(%rcx),%zmm0
1519
vaesdec %zmm0,%zmm1,%zmm1
1520
vaesdec %zmm0,%zmm2,%zmm2
1521
1522
1523
vbroadcasti32x4 160(%rcx),%zmm0
1524
vaesdeclast %zmm0,%zmm1,%zmm1
1525
vaesdeclast %zmm0,%zmm2,%zmm2
1526
1527
vpxorq %zmm9,%zmm1,%zmm1
1528
vpxorq %zmm10,%zmm2,%zmm2
1529
1530
1531
vmovdqa32 %zmm15,%zmm9
1532
vmovdqa32 %zmm16,%zmm10
1533
vmovdqu8 %zmm1,(%rsi)
1534
vmovdqu %xmm2,64(%rsi)
1535
addq $0x50,%rsi
1536
vmovdqa %xmm2,%xmm8
1537
vmovdqa %xmm12,%xmm0
1538
jmp .L_steal_cipher_amivrujEyduiFoi
1539
1540
.L_done_5_remain_amivrujEyduiFoi:
1541
1542
vpxorq %zmm9,%zmm1,%zmm1
1543
vpxorq %zmm10,%zmm2,%zmm2
1544
1545
1546
vbroadcasti32x4 (%rcx),%zmm0
1547
vpxorq %zmm0,%zmm1,%zmm1
1548
vpxorq %zmm0,%zmm2,%zmm2
1549
vbroadcasti32x4 16(%rcx),%zmm0
1550
vaesdec %zmm0,%zmm1,%zmm1
1551
vaesdec %zmm0,%zmm2,%zmm2
1552
1553
1554
vbroadcasti32x4 32(%rcx),%zmm0
1555
vaesdec %zmm0,%zmm1,%zmm1
1556
vaesdec %zmm0,%zmm2,%zmm2
1557
1558
1559
vbroadcasti32x4 48(%rcx),%zmm0
1560
vaesdec %zmm0,%zmm1,%zmm1
1561
vaesdec %zmm0,%zmm2,%zmm2
1562
1563
vbroadcasti32x4 64(%rcx),%zmm0
1564
vaesdec %zmm0,%zmm1,%zmm1
1565
vaesdec %zmm0,%zmm2,%zmm2
1566
1567
1568
vbroadcasti32x4 80(%rcx),%zmm0
1569
vaesdec %zmm0,%zmm1,%zmm1
1570
vaesdec %zmm0,%zmm2,%zmm2
1571
1572
1573
vbroadcasti32x4 96(%rcx),%zmm0
1574
vaesdec %zmm0,%zmm1,%zmm1
1575
vaesdec %zmm0,%zmm2,%zmm2
1576
1577
1578
vbroadcasti32x4 112(%rcx),%zmm0
1579
vaesdec %zmm0,%zmm1,%zmm1
1580
vaesdec %zmm0,%zmm2,%zmm2
1581
1582
1583
vbroadcasti32x4 128(%rcx),%zmm0
1584
vaesdec %zmm0,%zmm1,%zmm1
1585
vaesdec %zmm0,%zmm2,%zmm2
1586
1587
1588
vbroadcasti32x4 144(%rcx),%zmm0
1589
vaesdec %zmm0,%zmm1,%zmm1
1590
vaesdec %zmm0,%zmm2,%zmm2
1591
1592
1593
vbroadcasti32x4 160(%rcx),%zmm0
1594
vaesdeclast %zmm0,%zmm1,%zmm1
1595
vaesdeclast %zmm0,%zmm2,%zmm2
1596
1597
vpxorq %zmm9,%zmm1,%zmm1
1598
vpxorq %zmm10,%zmm2,%zmm2
1599
1600
1601
vmovdqa32 %zmm15,%zmm9
1602
vmovdqa32 %zmm16,%zmm10
1603
vmovdqu8 %zmm1,(%rsi)
1604
vmovdqu8 %xmm2,64(%rsi)
1605
jmp .L_ret_amivrujEyduiFoi
1606
1607
.L_remaining_num_blocks_is_4_amivrujEyduiFoi:
1608
vmovdqu8 (%rdi),%zmm1
1609
addq $0x40,%rdi
1610
andq $0xf,%rdx
1611
je .L_done_4_remain_amivrujEyduiFoi
1612
vextracti32x4 $0x3,%zmm9,%xmm12
1613
vinserti32x4 $0x3,%xmm10,%zmm9,%zmm9
1614
1615
vpxorq %zmm9,%zmm1,%zmm1
1616
vpxorq %zmm10,%zmm2,%zmm2
1617
1618
1619
vbroadcasti32x4 (%rcx),%zmm0
1620
vpxorq %zmm0,%zmm1,%zmm1
1621
vpxorq %zmm0,%zmm2,%zmm2
1622
vbroadcasti32x4 16(%rcx),%zmm0
1623
vaesdec %zmm0,%zmm1,%zmm1
1624
vaesdec %zmm0,%zmm2,%zmm2
1625
1626
1627
vbroadcasti32x4 32(%rcx),%zmm0
1628
vaesdec %zmm0,%zmm1,%zmm1
1629
vaesdec %zmm0,%zmm2,%zmm2
1630
1631
1632
vbroadcasti32x4 48(%rcx),%zmm0
1633
vaesdec %zmm0,%zmm1,%zmm1
1634
vaesdec %zmm0,%zmm2,%zmm2
1635
1636
vbroadcasti32x4 64(%rcx),%zmm0
1637
vaesdec %zmm0,%zmm1,%zmm1
1638
vaesdec %zmm0,%zmm2,%zmm2
1639
1640
1641
vbroadcasti32x4 80(%rcx),%zmm0
1642
vaesdec %zmm0,%zmm1,%zmm1
1643
vaesdec %zmm0,%zmm2,%zmm2
1644
1645
1646
vbroadcasti32x4 96(%rcx),%zmm0
1647
vaesdec %zmm0,%zmm1,%zmm1
1648
vaesdec %zmm0,%zmm2,%zmm2
1649
1650
1651
vbroadcasti32x4 112(%rcx),%zmm0
1652
vaesdec %zmm0,%zmm1,%zmm1
1653
vaesdec %zmm0,%zmm2,%zmm2
1654
1655
1656
vbroadcasti32x4 128(%rcx),%zmm0
1657
vaesdec %zmm0,%zmm1,%zmm1
1658
vaesdec %zmm0,%zmm2,%zmm2
1659
1660
1661
vbroadcasti32x4 144(%rcx),%zmm0
1662
vaesdec %zmm0,%zmm1,%zmm1
1663
vaesdec %zmm0,%zmm2,%zmm2
1664
1665
1666
vbroadcasti32x4 160(%rcx),%zmm0
1667
vaesdeclast %zmm0,%zmm1,%zmm1
1668
vaesdeclast %zmm0,%zmm2,%zmm2
1669
1670
vpxorq %zmm9,%zmm1,%zmm1
1671
vpxorq %zmm10,%zmm2,%zmm2
1672
1673
1674
vmovdqa32 %zmm15,%zmm9
1675
vmovdqa32 %zmm16,%zmm10
1676
vmovdqu8 %zmm1,(%rsi)
1677
addq $0x40,%rsi
1678
vextracti32x4 $0x3,%zmm1,%xmm8
1679
vmovdqa %xmm12,%xmm0
1680
jmp .L_steal_cipher_amivrujEyduiFoi
1681
1682
.L_done_4_remain_amivrujEyduiFoi:
1683
1684
vpxorq %zmm9,%zmm1,%zmm1
1685
vpxorq %zmm10,%zmm2,%zmm2
1686
1687
1688
vbroadcasti32x4 (%rcx),%zmm0
1689
vpxorq %zmm0,%zmm1,%zmm1
1690
vpxorq %zmm0,%zmm2,%zmm2
1691
vbroadcasti32x4 16(%rcx),%zmm0
1692
vaesdec %zmm0,%zmm1,%zmm1
1693
vaesdec %zmm0,%zmm2,%zmm2
1694
1695
1696
vbroadcasti32x4 32(%rcx),%zmm0
1697
vaesdec %zmm0,%zmm1,%zmm1
1698
vaesdec %zmm0,%zmm2,%zmm2
1699
1700
1701
vbroadcasti32x4 48(%rcx),%zmm0
1702
vaesdec %zmm0,%zmm1,%zmm1
1703
vaesdec %zmm0,%zmm2,%zmm2
1704
1705
vbroadcasti32x4 64(%rcx),%zmm0
1706
vaesdec %zmm0,%zmm1,%zmm1
1707
vaesdec %zmm0,%zmm2,%zmm2
1708
1709
1710
vbroadcasti32x4 80(%rcx),%zmm0
1711
vaesdec %zmm0,%zmm1,%zmm1
1712
vaesdec %zmm0,%zmm2,%zmm2
1713
1714
1715
vbroadcasti32x4 96(%rcx),%zmm0
1716
vaesdec %zmm0,%zmm1,%zmm1
1717
vaesdec %zmm0,%zmm2,%zmm2
1718
1719
1720
vbroadcasti32x4 112(%rcx),%zmm0
1721
vaesdec %zmm0,%zmm1,%zmm1
1722
vaesdec %zmm0,%zmm2,%zmm2
1723
1724
1725
vbroadcasti32x4 128(%rcx),%zmm0
1726
vaesdec %zmm0,%zmm1,%zmm1
1727
vaesdec %zmm0,%zmm2,%zmm2
1728
1729
1730
vbroadcasti32x4 144(%rcx),%zmm0
1731
vaesdec %zmm0,%zmm1,%zmm1
1732
vaesdec %zmm0,%zmm2,%zmm2
1733
1734
1735
vbroadcasti32x4 160(%rcx),%zmm0
1736
vaesdeclast %zmm0,%zmm1,%zmm1
1737
vaesdeclast %zmm0,%zmm2,%zmm2
1738
1739
vpxorq %zmm9,%zmm1,%zmm1
1740
vpxorq %zmm10,%zmm2,%zmm2
1741
1742
1743
vmovdqa32 %zmm15,%zmm9
1744
vmovdqa32 %zmm16,%zmm10
1745
vmovdqu8 %zmm1,(%rsi)
1746
jmp .L_ret_amivrujEyduiFoi
1747
1748
.L_remaining_num_blocks_is_3_amivrujEyduiFoi:
1749
vmovdqu (%rdi),%xmm1
1750
vmovdqu 16(%rdi),%xmm2
1751
vmovdqu 32(%rdi),%xmm3
1752
addq $0x30,%rdi
1753
andq $0xf,%rdx
1754
je .L_done_3_remain_amivrujEyduiFoi
1755
vextracti32x4 $0x2,%zmm9,%xmm13
1756
vextracti32x4 $0x1,%zmm9,%xmm10
1757
vextracti32x4 $0x3,%zmm9,%xmm11
1758
vpxor %xmm9,%xmm1,%xmm1
1759
vpxor %xmm10,%xmm2,%xmm2
1760
vpxor %xmm11,%xmm3,%xmm3
1761
vmovdqu (%rcx),%xmm0
1762
vpxor %xmm0,%xmm1,%xmm1
1763
vpxor %xmm0,%xmm2,%xmm2
1764
vpxor %xmm0,%xmm3,%xmm3
1765
vmovdqu 16(%rcx),%xmm0
1766
vaesdec %xmm0,%xmm1,%xmm1
1767
vaesdec %xmm0,%xmm2,%xmm2
1768
vaesdec %xmm0,%xmm3,%xmm3
1769
vmovdqu 32(%rcx),%xmm0
1770
vaesdec %xmm0,%xmm1,%xmm1
1771
vaesdec %xmm0,%xmm2,%xmm2
1772
vaesdec %xmm0,%xmm3,%xmm3
1773
vmovdqu 48(%rcx),%xmm0
1774
vaesdec %xmm0,%xmm1,%xmm1
1775
vaesdec %xmm0,%xmm2,%xmm2
1776
vaesdec %xmm0,%xmm3,%xmm3
1777
vmovdqu 64(%rcx),%xmm0
1778
vaesdec %xmm0,%xmm1,%xmm1
1779
vaesdec %xmm0,%xmm2,%xmm2
1780
vaesdec %xmm0,%xmm3,%xmm3
1781
vmovdqu 80(%rcx),%xmm0
1782
vaesdec %xmm0,%xmm1,%xmm1
1783
vaesdec %xmm0,%xmm2,%xmm2
1784
vaesdec %xmm0,%xmm3,%xmm3
1785
vmovdqu 96(%rcx),%xmm0
1786
vaesdec %xmm0,%xmm1,%xmm1
1787
vaesdec %xmm0,%xmm2,%xmm2
1788
vaesdec %xmm0,%xmm3,%xmm3
1789
vmovdqu 112(%rcx),%xmm0
1790
vaesdec %xmm0,%xmm1,%xmm1
1791
vaesdec %xmm0,%xmm2,%xmm2
1792
vaesdec %xmm0,%xmm3,%xmm3
1793
vmovdqu 128(%rcx),%xmm0
1794
vaesdec %xmm0,%xmm1,%xmm1
1795
vaesdec %xmm0,%xmm2,%xmm2
1796
vaesdec %xmm0,%xmm3,%xmm3
1797
vmovdqu 144(%rcx),%xmm0
1798
vaesdec %xmm0,%xmm1,%xmm1
1799
vaesdec %xmm0,%xmm2,%xmm2
1800
vaesdec %xmm0,%xmm3,%xmm3
1801
vmovdqu 160(%rcx),%xmm0
1802
vaesdeclast %xmm0,%xmm1,%xmm1
1803
vaesdeclast %xmm0,%xmm2,%xmm2
1804
vaesdeclast %xmm0,%xmm3,%xmm3
1805
vpxor %xmm9,%xmm1,%xmm1
1806
vpxor %xmm10,%xmm2,%xmm2
1807
vpxor %xmm11,%xmm3,%xmm3
1808
vmovdqu %xmm1,(%rsi)
1809
vmovdqu %xmm2,16(%rsi)
1810
vmovdqu %xmm3,32(%rsi)
1811
addq $0x30,%rsi
1812
vmovdqa %xmm3,%xmm8
1813
vmovdqa %xmm13,%xmm0
1814
jmp .L_steal_cipher_amivrujEyduiFoi
1815
1816
.L_done_3_remain_amivrujEyduiFoi:
1817
vextracti32x4 $0x1,%zmm9,%xmm10
1818
vextracti32x4 $0x2,%zmm9,%xmm11
1819
vpxor %xmm9,%xmm1,%xmm1
1820
vpxor %xmm10,%xmm2,%xmm2
1821
vpxor %xmm11,%xmm3,%xmm3
1822
vmovdqu (%rcx),%xmm0
1823
vpxor %xmm0,%xmm1,%xmm1
1824
vpxor %xmm0,%xmm2,%xmm2
1825
vpxor %xmm0,%xmm3,%xmm3
1826
vmovdqu 16(%rcx),%xmm0
1827
vaesdec %xmm0,%xmm1,%xmm1
1828
vaesdec %xmm0,%xmm2,%xmm2
1829
vaesdec %xmm0,%xmm3,%xmm3
1830
vmovdqu 32(%rcx),%xmm0
1831
vaesdec %xmm0,%xmm1,%xmm1
1832
vaesdec %xmm0,%xmm2,%xmm2
1833
vaesdec %xmm0,%xmm3,%xmm3
1834
vmovdqu 48(%rcx),%xmm0
1835
vaesdec %xmm0,%xmm1,%xmm1
1836
vaesdec %xmm0,%xmm2,%xmm2
1837
vaesdec %xmm0,%xmm3,%xmm3
1838
vmovdqu 64(%rcx),%xmm0
1839
vaesdec %xmm0,%xmm1,%xmm1
1840
vaesdec %xmm0,%xmm2,%xmm2
1841
vaesdec %xmm0,%xmm3,%xmm3
1842
vmovdqu 80(%rcx),%xmm0
1843
vaesdec %xmm0,%xmm1,%xmm1
1844
vaesdec %xmm0,%xmm2,%xmm2
1845
vaesdec %xmm0,%xmm3,%xmm3
1846
vmovdqu 96(%rcx),%xmm0
1847
vaesdec %xmm0,%xmm1,%xmm1
1848
vaesdec %xmm0,%xmm2,%xmm2
1849
vaesdec %xmm0,%xmm3,%xmm3
1850
vmovdqu 112(%rcx),%xmm0
1851
vaesdec %xmm0,%xmm1,%xmm1
1852
vaesdec %xmm0,%xmm2,%xmm2
1853
vaesdec %xmm0,%xmm3,%xmm3
1854
vmovdqu 128(%rcx),%xmm0
1855
vaesdec %xmm0,%xmm1,%xmm1
1856
vaesdec %xmm0,%xmm2,%xmm2
1857
vaesdec %xmm0,%xmm3,%xmm3
1858
vmovdqu 144(%rcx),%xmm0
1859
vaesdec %xmm0,%xmm1,%xmm1
1860
vaesdec %xmm0,%xmm2,%xmm2
1861
vaesdec %xmm0,%xmm3,%xmm3
1862
vmovdqu 160(%rcx),%xmm0
1863
vaesdeclast %xmm0,%xmm1,%xmm1
1864
vaesdeclast %xmm0,%xmm2,%xmm2
1865
vaesdeclast %xmm0,%xmm3,%xmm3
1866
vpxor %xmm9,%xmm1,%xmm1
1867
vpxor %xmm10,%xmm2,%xmm2
1868
vpxor %xmm11,%xmm3,%xmm3
1869
vmovdqu %xmm1,(%rsi)
1870
vmovdqu %xmm2,16(%rsi)
1871
vmovdqu %xmm3,32(%rsi)
1872
jmp .L_ret_amivrujEyduiFoi
1873
1874
.L_remaining_num_blocks_is_2_amivrujEyduiFoi:
1875
vmovdqu (%rdi),%xmm1
1876
vmovdqu 16(%rdi),%xmm2
1877
addq $0x20,%rdi
1878
andq $0xf,%rdx
1879
je .L_done_2_remain_amivrujEyduiFoi
1880
vextracti32x4 $0x2,%zmm9,%xmm10
1881
vextracti32x4 $0x1,%zmm9,%xmm12
1882
vpxor %xmm9,%xmm1,%xmm1
1883
vpxor %xmm10,%xmm2,%xmm2
1884
vmovdqu (%rcx),%xmm0
1885
vpxor %xmm0,%xmm1,%xmm1
1886
vpxor %xmm0,%xmm2,%xmm2
1887
vmovdqu 16(%rcx),%xmm0
1888
vaesdec %xmm0,%xmm1,%xmm1
1889
vaesdec %xmm0,%xmm2,%xmm2
1890
vmovdqu 32(%rcx),%xmm0
1891
vaesdec %xmm0,%xmm1,%xmm1
1892
vaesdec %xmm0,%xmm2,%xmm2
1893
vmovdqu 48(%rcx),%xmm0
1894
vaesdec %xmm0,%xmm1,%xmm1
1895
vaesdec %xmm0,%xmm2,%xmm2
1896
vmovdqu 64(%rcx),%xmm0
1897
vaesdec %xmm0,%xmm1,%xmm1
1898
vaesdec %xmm0,%xmm2,%xmm2
1899
vmovdqu 80(%rcx),%xmm0
1900
vaesdec %xmm0,%xmm1,%xmm1
1901
vaesdec %xmm0,%xmm2,%xmm2
1902
vmovdqu 96(%rcx),%xmm0
1903
vaesdec %xmm0,%xmm1,%xmm1
1904
vaesdec %xmm0,%xmm2,%xmm2
1905
vmovdqu 112(%rcx),%xmm0
1906
vaesdec %xmm0,%xmm1,%xmm1
1907
vaesdec %xmm0,%xmm2,%xmm2
1908
vmovdqu 128(%rcx),%xmm0
1909
vaesdec %xmm0,%xmm1,%xmm1
1910
vaesdec %xmm0,%xmm2,%xmm2
1911
vmovdqu 144(%rcx),%xmm0
1912
vaesdec %xmm0,%xmm1,%xmm1
1913
vaesdec %xmm0,%xmm2,%xmm2
1914
vmovdqu 160(%rcx),%xmm0
1915
vaesdeclast %xmm0,%xmm1,%xmm1
1916
vaesdeclast %xmm0,%xmm2,%xmm2
1917
vpxor %xmm9,%xmm1,%xmm1
1918
vpxor %xmm10,%xmm2,%xmm2
1919
vmovdqu %xmm1,(%rsi)
1920
vmovdqu %xmm2,16(%rsi)
1921
addq $0x20,%rsi
1922
vmovdqa %xmm2,%xmm8
1923
vmovdqa %xmm12,%xmm0
1924
jmp .L_steal_cipher_amivrujEyduiFoi
1925
1926
.L_done_2_remain_amivrujEyduiFoi:
1927
vextracti32x4 $0x1,%zmm9,%xmm10
1928
vpxor %xmm9,%xmm1,%xmm1
1929
vpxor %xmm10,%xmm2,%xmm2
1930
vmovdqu (%rcx),%xmm0
1931
vpxor %xmm0,%xmm1,%xmm1
1932
vpxor %xmm0,%xmm2,%xmm2
1933
vmovdqu 16(%rcx),%xmm0
1934
vaesdec %xmm0,%xmm1,%xmm1
1935
vaesdec %xmm0,%xmm2,%xmm2
1936
vmovdqu 32(%rcx),%xmm0
1937
vaesdec %xmm0,%xmm1,%xmm1
1938
vaesdec %xmm0,%xmm2,%xmm2
1939
vmovdqu 48(%rcx),%xmm0
1940
vaesdec %xmm0,%xmm1,%xmm1
1941
vaesdec %xmm0,%xmm2,%xmm2
1942
vmovdqu 64(%rcx),%xmm0
1943
vaesdec %xmm0,%xmm1,%xmm1
1944
vaesdec %xmm0,%xmm2,%xmm2
1945
vmovdqu 80(%rcx),%xmm0
1946
vaesdec %xmm0,%xmm1,%xmm1
1947
vaesdec %xmm0,%xmm2,%xmm2
1948
vmovdqu 96(%rcx),%xmm0
1949
vaesdec %xmm0,%xmm1,%xmm1
1950
vaesdec %xmm0,%xmm2,%xmm2
1951
vmovdqu 112(%rcx),%xmm0
1952
vaesdec %xmm0,%xmm1,%xmm1
1953
vaesdec %xmm0,%xmm2,%xmm2
1954
vmovdqu 128(%rcx),%xmm0
1955
vaesdec %xmm0,%xmm1,%xmm1
1956
vaesdec %xmm0,%xmm2,%xmm2
1957
vmovdqu 144(%rcx),%xmm0
1958
vaesdec %xmm0,%xmm1,%xmm1
1959
vaesdec %xmm0,%xmm2,%xmm2
1960
vmovdqu 160(%rcx),%xmm0
1961
vaesdeclast %xmm0,%xmm1,%xmm1
1962
vaesdeclast %xmm0,%xmm2,%xmm2
1963
vpxor %xmm9,%xmm1,%xmm1
1964
vpxor %xmm10,%xmm2,%xmm2
1965
vmovdqu %xmm1,(%rsi)
1966
vmovdqu %xmm2,16(%rsi)
1967
jmp .L_ret_amivrujEyduiFoi
1968
1969
.L_remaining_num_blocks_is_1_amivrujEyduiFoi:
1970
vmovdqu (%rdi),%xmm1
1971
addq $0x10,%rdi
1972
andq $0xf,%rdx
1973
je .L_done_1_remain_amivrujEyduiFoi
1974
vextracti32x4 $0x1,%zmm9,%xmm11
1975
vpxor %xmm11,%xmm1,%xmm1
1976
vmovdqu (%rcx),%xmm0
1977
vpxor %xmm0,%xmm1,%xmm1
1978
vmovdqu 16(%rcx),%xmm0
1979
vaesdec %xmm0,%xmm1,%xmm1
1980
vmovdqu 32(%rcx),%xmm0
1981
vaesdec %xmm0,%xmm1,%xmm1
1982
vmovdqu 48(%rcx),%xmm0
1983
vaesdec %xmm0,%xmm1,%xmm1
1984
vmovdqu 64(%rcx),%xmm0
1985
vaesdec %xmm0,%xmm1,%xmm1
1986
vmovdqu 80(%rcx),%xmm0
1987
vaesdec %xmm0,%xmm1,%xmm1
1988
vmovdqu 96(%rcx),%xmm0
1989
vaesdec %xmm0,%xmm1,%xmm1
1990
vmovdqu 112(%rcx),%xmm0
1991
vaesdec %xmm0,%xmm1,%xmm1
1992
vmovdqu 128(%rcx),%xmm0
1993
vaesdec %xmm0,%xmm1,%xmm1
1994
vmovdqu 144(%rcx),%xmm0
1995
vaesdec %xmm0,%xmm1,%xmm1
1996
vmovdqu 160(%rcx),%xmm0
1997
vaesdeclast %xmm0,%xmm1,%xmm1
1998
vpxor %xmm11,%xmm1,%xmm1
1999
vmovdqu %xmm1,(%rsi)
2000
addq $0x10,%rsi
2001
vmovdqa %xmm1,%xmm8
2002
vmovdqa %xmm9,%xmm0
2003
jmp .L_steal_cipher_amivrujEyduiFoi
2004
2005
.L_done_1_remain_amivrujEyduiFoi:
2006
vpxor %xmm9,%xmm1,%xmm1
2007
vmovdqu (%rcx),%xmm0
2008
vpxor %xmm0,%xmm1,%xmm1
2009
vmovdqu 16(%rcx),%xmm0
2010
vaesdec %xmm0,%xmm1,%xmm1
2011
vmovdqu 32(%rcx),%xmm0
2012
vaesdec %xmm0,%xmm1,%xmm1
2013
vmovdqu 48(%rcx),%xmm0
2014
vaesdec %xmm0,%xmm1,%xmm1
2015
vmovdqu 64(%rcx),%xmm0
2016
vaesdec %xmm0,%xmm1,%xmm1
2017
vmovdqu 80(%rcx),%xmm0
2018
vaesdec %xmm0,%xmm1,%xmm1
2019
vmovdqu 96(%rcx),%xmm0
2020
vaesdec %xmm0,%xmm1,%xmm1
2021
vmovdqu 112(%rcx),%xmm0
2022
vaesdec %xmm0,%xmm1,%xmm1
2023
vmovdqu 128(%rcx),%xmm0
2024
vaesdec %xmm0,%xmm1,%xmm1
2025
vmovdqu 144(%rcx),%xmm0
2026
vaesdec %xmm0,%xmm1,%xmm1
2027
vmovdqu 160(%rcx),%xmm0
2028
vaesdeclast %xmm0,%xmm1,%xmm1
2029
vpxor %xmm9,%xmm1,%xmm1
2030
vmovdqu %xmm1,(%rsi)
2031
jmp .L_ret_amivrujEyduiFoi
2032
2033
.L_start_by16_amivrujEyduiFoi:
2034
vbroadcasti32x4 (%rsp),%zmm0
2035
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
2036
movq $0xaa,%r8
2037
kmovq %r8,%k2
2038
2039
2040
vpshufb %zmm8,%zmm0,%zmm1
2041
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
2042
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
2043
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
2044
vpxorq %zmm2,%zmm4,%zmm4{%k2}
2045
vpxord %zmm4,%zmm3,%zmm9
2046
2047
2048
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
2049
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
2050
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
2051
vpxorq %zmm6,%zmm5,%zmm5{%k2}
2052
vpxord %zmm5,%zmm7,%zmm10
2053
2054
2055
vpsrldq $0xf,%zmm9,%zmm13
2056
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
2057
vpslldq $0x1,%zmm9,%zmm11
2058
vpxord %zmm14,%zmm11,%zmm11
2059
2060
vpsrldq $0xf,%zmm10,%zmm15
2061
vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16
2062
vpslldq $0x1,%zmm10,%zmm12
2063
vpxord %zmm16,%zmm12,%zmm12
2064
2065
.L_main_loop_run_16_amivrujEyduiFoi:
2066
vmovdqu8 (%rdi),%zmm1
2067
vmovdqu8 64(%rdi),%zmm2
2068
vmovdqu8 128(%rdi),%zmm3
2069
vmovdqu8 192(%rdi),%zmm4
2070
vmovdqu8 240(%rdi),%xmm5
2071
addq $0x100,%rdi
2072
vpxorq %zmm9,%zmm1,%zmm1
2073
vpxorq %zmm10,%zmm2,%zmm2
2074
vpxorq %zmm11,%zmm3,%zmm3
2075
vpxorq %zmm12,%zmm4,%zmm4
2076
vbroadcasti32x4 (%rcx),%zmm0
2077
vpxorq %zmm0,%zmm1,%zmm1
2078
vpxorq %zmm0,%zmm2,%zmm2
2079
vpxorq %zmm0,%zmm3,%zmm3
2080
vpxorq %zmm0,%zmm4,%zmm4
2081
vpsrldq $0xf,%zmm11,%zmm13
2082
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
2083
vpslldq $0x1,%zmm11,%zmm15
2084
vpxord %zmm14,%zmm15,%zmm15
2085
vbroadcasti32x4 16(%rcx),%zmm0
2086
vaesdec %zmm0,%zmm1,%zmm1
2087
vaesdec %zmm0,%zmm2,%zmm2
2088
vaesdec %zmm0,%zmm3,%zmm3
2089
vaesdec %zmm0,%zmm4,%zmm4
2090
vbroadcasti32x4 32(%rcx),%zmm0
2091
vaesdec %zmm0,%zmm1,%zmm1
2092
vaesdec %zmm0,%zmm2,%zmm2
2093
vaesdec %zmm0,%zmm3,%zmm3
2094
vaesdec %zmm0,%zmm4,%zmm4
2095
vbroadcasti32x4 48(%rcx),%zmm0
2096
vaesdec %zmm0,%zmm1,%zmm1
2097
vaesdec %zmm0,%zmm2,%zmm2
2098
vaesdec %zmm0,%zmm3,%zmm3
2099
vaesdec %zmm0,%zmm4,%zmm4
2100
vpsrldq $0xf,%zmm12,%zmm13
2101
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
2102
vpslldq $0x1,%zmm12,%zmm16
2103
vpxord %zmm14,%zmm16,%zmm16
2104
vbroadcasti32x4 64(%rcx),%zmm0
2105
vaesdec %zmm0,%zmm1,%zmm1
2106
vaesdec %zmm0,%zmm2,%zmm2
2107
vaesdec %zmm0,%zmm3,%zmm3
2108
vaesdec %zmm0,%zmm4,%zmm4
2109
vbroadcasti32x4 80(%rcx),%zmm0
2110
vaesdec %zmm0,%zmm1,%zmm1
2111
vaesdec %zmm0,%zmm2,%zmm2
2112
vaesdec %zmm0,%zmm3,%zmm3
2113
vaesdec %zmm0,%zmm4,%zmm4
2114
vbroadcasti32x4 96(%rcx),%zmm0
2115
vaesdec %zmm0,%zmm1,%zmm1
2116
vaesdec %zmm0,%zmm2,%zmm2
2117
vaesdec %zmm0,%zmm3,%zmm3
2118
vaesdec %zmm0,%zmm4,%zmm4
2119
vpsrldq $0xf,%zmm15,%zmm13
2120
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
2121
vpslldq $0x1,%zmm15,%zmm17
2122
vpxord %zmm14,%zmm17,%zmm17
2123
vbroadcasti32x4 112(%rcx),%zmm0
2124
vaesdec %zmm0,%zmm1,%zmm1
2125
vaesdec %zmm0,%zmm2,%zmm2
2126
vaesdec %zmm0,%zmm3,%zmm3
2127
vaesdec %zmm0,%zmm4,%zmm4
2128
vbroadcasti32x4 128(%rcx),%zmm0
2129
vaesdec %zmm0,%zmm1,%zmm1
2130
vaesdec %zmm0,%zmm2,%zmm2
2131
vaesdec %zmm0,%zmm3,%zmm3
2132
vaesdec %zmm0,%zmm4,%zmm4
2133
vbroadcasti32x4 144(%rcx),%zmm0
2134
vaesdec %zmm0,%zmm1,%zmm1
2135
vaesdec %zmm0,%zmm2,%zmm2
2136
vaesdec %zmm0,%zmm3,%zmm3
2137
vaesdec %zmm0,%zmm4,%zmm4
2138
vpsrldq $0xf,%zmm16,%zmm13
2139
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
2140
vpslldq $0x1,%zmm16,%zmm18
2141
vpxord %zmm14,%zmm18,%zmm18
2142
vbroadcasti32x4 160(%rcx),%zmm0
2143
vaesdeclast %zmm0,%zmm1,%zmm1
2144
vaesdeclast %zmm0,%zmm2,%zmm2
2145
vaesdeclast %zmm0,%zmm3,%zmm3
2146
vaesdeclast %zmm0,%zmm4,%zmm4
2147
vpxorq %zmm9,%zmm1,%zmm1
2148
vpxorq %zmm10,%zmm2,%zmm2
2149
vpxorq %zmm11,%zmm3,%zmm3
2150
vpxorq %zmm12,%zmm4,%zmm4
2151
2152
vmovdqa32 %zmm15,%zmm9
2153
vmovdqa32 %zmm16,%zmm10
2154
vmovdqa32 %zmm17,%zmm11
2155
vmovdqa32 %zmm18,%zmm12
2156
vmovdqu8 %zmm1,(%rsi)
2157
vmovdqu8 %zmm2,64(%rsi)
2158
vmovdqu8 %zmm3,128(%rsi)
2159
vmovdqu8 %zmm4,192(%rsi)
2160
addq $0x100,%rsi
2161
subq $0x100,%rdx
2162
cmpq $0x100,%rdx
2163
jge .L_main_loop_run_16_amivrujEyduiFoi
2164
2165
cmpq $0x80,%rdx
2166
jge .L_main_loop_run_8_amivrujEyduiFoi
2167
jmp .L_do_n_blocks_amivrujEyduiFoi
2168
2169
.L_start_by8_amivrujEyduiFoi:
2170
2171
vbroadcasti32x4 (%rsp),%zmm0
2172
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
2173
movq $0xaa,%r8
2174
kmovq %r8,%k2
2175
2176
2177
vpshufb %zmm8,%zmm0,%zmm1
2178
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
2179
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
2180
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
2181
vpxorq %zmm2,%zmm4,%zmm4{%k2}
2182
vpxord %zmm4,%zmm3,%zmm9
2183
2184
2185
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
2186
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
2187
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
2188
vpxorq %zmm6,%zmm5,%zmm5{%k2}
2189
vpxord %zmm5,%zmm7,%zmm10
2190
2191
.L_main_loop_run_8_amivrujEyduiFoi:
2192
vmovdqu8 (%rdi),%zmm1
2193
vmovdqu8 64(%rdi),%zmm2
2194
vmovdqu8 112(%rdi),%xmm5
2195
addq $0x80,%rdi
2196
2197
vpxorq %zmm9,%zmm1,%zmm1
2198
vpxorq %zmm10,%zmm2,%zmm2
2199
2200
2201
vbroadcasti32x4 (%rcx),%zmm0
2202
vpxorq %zmm0,%zmm1,%zmm1
2203
vpxorq %zmm0,%zmm2,%zmm2
2204
vpsrldq $0xf,%zmm9,%zmm13
2205
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
2206
vpslldq $0x1,%zmm9,%zmm15
2207
vpxord %zmm14,%zmm15,%zmm15
2208
vbroadcasti32x4 16(%rcx),%zmm0
2209
vaesdec %zmm0,%zmm1,%zmm1
2210
vaesdec %zmm0,%zmm2,%zmm2
2211
2212
2213
vbroadcasti32x4 32(%rcx),%zmm0
2214
vaesdec %zmm0,%zmm1,%zmm1
2215
vaesdec %zmm0,%zmm2,%zmm2
2216
2217
2218
vbroadcasti32x4 48(%rcx),%zmm0
2219
vaesdec %zmm0,%zmm1,%zmm1
2220
vaesdec %zmm0,%zmm2,%zmm2
2221
vpsrldq $0xf,%zmm10,%zmm13
2222
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
2223
vpslldq $0x1,%zmm10,%zmm16
2224
vpxord %zmm14,%zmm16,%zmm16
2225
2226
vbroadcasti32x4 64(%rcx),%zmm0
2227
vaesdec %zmm0,%zmm1,%zmm1
2228
vaesdec %zmm0,%zmm2,%zmm2
2229
2230
2231
vbroadcasti32x4 80(%rcx),%zmm0
2232
vaesdec %zmm0,%zmm1,%zmm1
2233
vaesdec %zmm0,%zmm2,%zmm2
2234
2235
2236
vbroadcasti32x4 96(%rcx),%zmm0
2237
vaesdec %zmm0,%zmm1,%zmm1
2238
vaesdec %zmm0,%zmm2,%zmm2
2239
2240
2241
vbroadcasti32x4 112(%rcx),%zmm0
2242
vaesdec %zmm0,%zmm1,%zmm1
2243
vaesdec %zmm0,%zmm2,%zmm2
2244
2245
2246
vbroadcasti32x4 128(%rcx),%zmm0
2247
vaesdec %zmm0,%zmm1,%zmm1
2248
vaesdec %zmm0,%zmm2,%zmm2
2249
2250
2251
vbroadcasti32x4 144(%rcx),%zmm0
2252
vaesdec %zmm0,%zmm1,%zmm1
2253
vaesdec %zmm0,%zmm2,%zmm2
2254
2255
2256
vbroadcasti32x4 160(%rcx),%zmm0
2257
vaesdeclast %zmm0,%zmm1,%zmm1
2258
vaesdeclast %zmm0,%zmm2,%zmm2
2259
2260
vpxorq %zmm9,%zmm1,%zmm1
2261
vpxorq %zmm10,%zmm2,%zmm2
2262
2263
2264
vmovdqa32 %zmm15,%zmm9
2265
vmovdqa32 %zmm16,%zmm10
2266
vmovdqu8 %zmm1,(%rsi)
2267
vmovdqu8 %zmm2,64(%rsi)
2268
addq $0x80,%rsi
2269
subq $0x80,%rdx
2270
cmpq $0x80,%rdx
2271
jge .L_main_loop_run_8_amivrujEyduiFoi
2272
jmp .L_do_n_blocks_amivrujEyduiFoi
2273
2274
.L_steal_cipher_amivrujEyduiFoi:
2275
2276
vmovdqa %xmm8,%xmm2
2277
2278
2279
leaq vpshufb_shf_table(%rip),%rax
2280
vmovdqu (%rax,%rdx,1),%xmm10
2281
vpshufb %xmm10,%xmm8,%xmm8
2282
2283
2284
vmovdqu -16(%rdi,%rdx,1),%xmm3
2285
vmovdqu %xmm8,-16(%rsi,%rdx,1)
2286
2287
2288
leaq vpshufb_shf_table(%rip),%rax
2289
addq $16,%rax
2290
subq %rdx,%rax
2291
vmovdqu (%rax),%xmm10
2292
vpxor mask1(%rip),%xmm10,%xmm10
2293
vpshufb %xmm10,%xmm3,%xmm3
2294
2295
vpblendvb %xmm10,%xmm2,%xmm3,%xmm3
2296
2297
2298
vpxor %xmm0,%xmm3,%xmm8
2299
2300
2301
vpxor (%rcx),%xmm8,%xmm8
2302
vaesdec 16(%rcx),%xmm8,%xmm8
2303
vaesdec 32(%rcx),%xmm8,%xmm8
2304
vaesdec 48(%rcx),%xmm8,%xmm8
2305
vaesdec 64(%rcx),%xmm8,%xmm8
2306
vaesdec 80(%rcx),%xmm8,%xmm8
2307
vaesdec 96(%rcx),%xmm8,%xmm8
2308
vaesdec 112(%rcx),%xmm8,%xmm8
2309
vaesdec 128(%rcx),%xmm8,%xmm8
2310
vaesdec 144(%rcx),%xmm8,%xmm8
2311
vaesdeclast 160(%rcx),%xmm8,%xmm8
2312
2313
vpxor %xmm0,%xmm8,%xmm8
2314
2315
.L_done_amivrujEyduiFoi:
2316
2317
vmovdqu %xmm8,-16(%rsi)
2318
.L_ret_amivrujEyduiFoi:
2319
movq 128(%rsp),%rbx
2320
xorq %r8,%r8
2321
movq %r8,128(%rsp)
2322
2323
vpxorq %zmm0,%zmm0,%zmm0
2324
movq %rbp,%rsp
2325
popq %rbp
2326
vzeroupper
2327
.byte 0xf3,0xc3
2328
2329
.L_less_than_128_bytes_amivrujEyduiFoi:
2330
cmpq $0x10,%rdx
2331
jb .L_ret_amivrujEyduiFoi
2332
2333
movq %rdx,%r8
2334
andq $0x70,%r8
2335
cmpq $0x60,%r8
2336
je .L_num_blocks_is_6_amivrujEyduiFoi
2337
cmpq $0x50,%r8
2338
je .L_num_blocks_is_5_amivrujEyduiFoi
2339
cmpq $0x40,%r8
2340
je .L_num_blocks_is_4_amivrujEyduiFoi
2341
cmpq $0x30,%r8
2342
je .L_num_blocks_is_3_amivrujEyduiFoi
2343
cmpq $0x20,%r8
2344
je .L_num_blocks_is_2_amivrujEyduiFoi
2345
cmpq $0x10,%r8
2346
je .L_num_blocks_is_1_amivrujEyduiFoi
2347
2348
.L_num_blocks_is_7_amivrujEyduiFoi:
2349
vmovdqa 0(%rsp),%xmm9
2350
movq 0(%rsp),%rax
2351
movq 8(%rsp),%rbx
2352
vmovdqu 0(%rdi),%xmm1
2353
xorq %r11,%r11
2354
shlq $1,%rax
2355
adcq %rbx,%rbx
2356
cmovcq %r10,%r11
2357
xorq %r11,%rax
2358
movq %rax,16(%rsp)
2359
movq %rbx,16 + 8(%rsp)
2360
vmovdqa 16(%rsp),%xmm10
2361
vmovdqu 16(%rdi),%xmm2
2362
xorq %r11,%r11
2363
shlq $1,%rax
2364
adcq %rbx,%rbx
2365
cmovcq %r10,%r11
2366
xorq %r11,%rax
2367
movq %rax,32(%rsp)
2368
movq %rbx,32 + 8(%rsp)
2369
vmovdqa 32(%rsp),%xmm11
2370
vmovdqu 32(%rdi),%xmm3
2371
xorq %r11,%r11
2372
shlq $1,%rax
2373
adcq %rbx,%rbx
2374
cmovcq %r10,%r11
2375
xorq %r11,%rax
2376
movq %rax,48(%rsp)
2377
movq %rbx,48 + 8(%rsp)
2378
vmovdqa 48(%rsp),%xmm12
2379
vmovdqu 48(%rdi),%xmm4
2380
xorq %r11,%r11
2381
shlq $1,%rax
2382
adcq %rbx,%rbx
2383
cmovcq %r10,%r11
2384
xorq %r11,%rax
2385
movq %rax,64(%rsp)
2386
movq %rbx,64 + 8(%rsp)
2387
vmovdqa 64(%rsp),%xmm13
2388
vmovdqu 64(%rdi),%xmm5
2389
xorq %r11,%r11
2390
shlq $1,%rax
2391
adcq %rbx,%rbx
2392
cmovcq %r10,%r11
2393
xorq %r11,%rax
2394
movq %rax,80(%rsp)
2395
movq %rbx,80 + 8(%rsp)
2396
vmovdqa 80(%rsp),%xmm14
2397
vmovdqu 80(%rdi),%xmm6
2398
xorq %r11,%r11
2399
shlq $1,%rax
2400
adcq %rbx,%rbx
2401
cmovcq %r10,%r11
2402
xorq %r11,%rax
2403
movq %rax,96(%rsp)
2404
movq %rbx,96 + 8(%rsp)
2405
vmovdqa 96(%rsp),%xmm15
2406
vmovdqu 96(%rdi),%xmm7
2407
addq $0x70,%rdi
2408
andq $0xf,%rdx
2409
je .L_done_7_amivrujEyduiFoi
2410
2411
.L_steal_cipher_7_amivrujEyduiFoi:
2412
xorq %r11,%r11
2413
shlq $1,%rax
2414
adcq %rbx,%rbx
2415
cmovcq %r10,%r11
2416
xorq %r11,%rax
2417
movq %rax,16(%rsp)
2418
movq %rbx,24(%rsp)
2419
vmovdqa64 %xmm15,%xmm16
2420
vmovdqa 16(%rsp),%xmm15
2421
vpxor %xmm9,%xmm1,%xmm1
2422
vpxor %xmm10,%xmm2,%xmm2
2423
vpxor %xmm11,%xmm3,%xmm3
2424
vpxor %xmm12,%xmm4,%xmm4
2425
vpxor %xmm13,%xmm5,%xmm5
2426
vpxor %xmm14,%xmm6,%xmm6
2427
vpxor %xmm15,%xmm7,%xmm7
2428
vmovdqu (%rcx),%xmm0
2429
vpxor %xmm0,%xmm1,%xmm1
2430
vpxor %xmm0,%xmm2,%xmm2
2431
vpxor %xmm0,%xmm3,%xmm3
2432
vpxor %xmm0,%xmm4,%xmm4
2433
vpxor %xmm0,%xmm5,%xmm5
2434
vpxor %xmm0,%xmm6,%xmm6
2435
vpxor %xmm0,%xmm7,%xmm7
2436
vmovdqu 16(%rcx),%xmm0
2437
vaesdec %xmm0,%xmm1,%xmm1
2438
vaesdec %xmm0,%xmm2,%xmm2
2439
vaesdec %xmm0,%xmm3,%xmm3
2440
vaesdec %xmm0,%xmm4,%xmm4
2441
vaesdec %xmm0,%xmm5,%xmm5
2442
vaesdec %xmm0,%xmm6,%xmm6
2443
vaesdec %xmm0,%xmm7,%xmm7
2444
vmovdqu 32(%rcx),%xmm0
2445
vaesdec %xmm0,%xmm1,%xmm1
2446
vaesdec %xmm0,%xmm2,%xmm2
2447
vaesdec %xmm0,%xmm3,%xmm3
2448
vaesdec %xmm0,%xmm4,%xmm4
2449
vaesdec %xmm0,%xmm5,%xmm5
2450
vaesdec %xmm0,%xmm6,%xmm6
2451
vaesdec %xmm0,%xmm7,%xmm7
2452
vmovdqu 48(%rcx),%xmm0
2453
vaesdec %xmm0,%xmm1,%xmm1
2454
vaesdec %xmm0,%xmm2,%xmm2
2455
vaesdec %xmm0,%xmm3,%xmm3
2456
vaesdec %xmm0,%xmm4,%xmm4
2457
vaesdec %xmm0,%xmm5,%xmm5
2458
vaesdec %xmm0,%xmm6,%xmm6
2459
vaesdec %xmm0,%xmm7,%xmm7
2460
vmovdqu 64(%rcx),%xmm0
2461
vaesdec %xmm0,%xmm1,%xmm1
2462
vaesdec %xmm0,%xmm2,%xmm2
2463
vaesdec %xmm0,%xmm3,%xmm3
2464
vaesdec %xmm0,%xmm4,%xmm4
2465
vaesdec %xmm0,%xmm5,%xmm5
2466
vaesdec %xmm0,%xmm6,%xmm6
2467
vaesdec %xmm0,%xmm7,%xmm7
2468
vmovdqu 80(%rcx),%xmm0
2469
vaesdec %xmm0,%xmm1,%xmm1
2470
vaesdec %xmm0,%xmm2,%xmm2
2471
vaesdec %xmm0,%xmm3,%xmm3
2472
vaesdec %xmm0,%xmm4,%xmm4
2473
vaesdec %xmm0,%xmm5,%xmm5
2474
vaesdec %xmm0,%xmm6,%xmm6
2475
vaesdec %xmm0,%xmm7,%xmm7
2476
vmovdqu 96(%rcx),%xmm0
2477
vaesdec %xmm0,%xmm1,%xmm1
2478
vaesdec %xmm0,%xmm2,%xmm2
2479
vaesdec %xmm0,%xmm3,%xmm3
2480
vaesdec %xmm0,%xmm4,%xmm4
2481
vaesdec %xmm0,%xmm5,%xmm5
2482
vaesdec %xmm0,%xmm6,%xmm6
2483
vaesdec %xmm0,%xmm7,%xmm7
2484
vmovdqu 112(%rcx),%xmm0
2485
vaesdec %xmm0,%xmm1,%xmm1
2486
vaesdec %xmm0,%xmm2,%xmm2
2487
vaesdec %xmm0,%xmm3,%xmm3
2488
vaesdec %xmm0,%xmm4,%xmm4
2489
vaesdec %xmm0,%xmm5,%xmm5
2490
vaesdec %xmm0,%xmm6,%xmm6
2491
vaesdec %xmm0,%xmm7,%xmm7
2492
vmovdqu 128(%rcx),%xmm0
2493
vaesdec %xmm0,%xmm1,%xmm1
2494
vaesdec %xmm0,%xmm2,%xmm2
2495
vaesdec %xmm0,%xmm3,%xmm3
2496
vaesdec %xmm0,%xmm4,%xmm4
2497
vaesdec %xmm0,%xmm5,%xmm5
2498
vaesdec %xmm0,%xmm6,%xmm6
2499
vaesdec %xmm0,%xmm7,%xmm7
2500
vmovdqu 144(%rcx),%xmm0
2501
vaesdec %xmm0,%xmm1,%xmm1
2502
vaesdec %xmm0,%xmm2,%xmm2
2503
vaesdec %xmm0,%xmm3,%xmm3
2504
vaesdec %xmm0,%xmm4,%xmm4
2505
vaesdec %xmm0,%xmm5,%xmm5
2506
vaesdec %xmm0,%xmm6,%xmm6
2507
vaesdec %xmm0,%xmm7,%xmm7
2508
vmovdqu 160(%rcx),%xmm0
2509
vaesdeclast %xmm0,%xmm1,%xmm1
2510
vaesdeclast %xmm0,%xmm2,%xmm2
2511
vaesdeclast %xmm0,%xmm3,%xmm3
2512
vaesdeclast %xmm0,%xmm4,%xmm4
2513
vaesdeclast %xmm0,%xmm5,%xmm5
2514
vaesdeclast %xmm0,%xmm6,%xmm6
2515
vaesdeclast %xmm0,%xmm7,%xmm7
2516
vpxor %xmm9,%xmm1,%xmm1
2517
vpxor %xmm10,%xmm2,%xmm2
2518
vpxor %xmm11,%xmm3,%xmm3
2519
vpxor %xmm12,%xmm4,%xmm4
2520
vpxor %xmm13,%xmm5,%xmm5
2521
vpxor %xmm14,%xmm6,%xmm6
2522
vpxor %xmm15,%xmm7,%xmm7
2523
vmovdqu %xmm1,(%rsi)
2524
vmovdqu %xmm2,16(%rsi)
2525
vmovdqu %xmm3,32(%rsi)
2526
vmovdqu %xmm4,48(%rsi)
2527
vmovdqu %xmm5,64(%rsi)
2528
vmovdqu %xmm6,80(%rsi)
2529
addq $0x70,%rsi
2530
vmovdqa64 %xmm16,%xmm0
2531
vmovdqa %xmm7,%xmm8
2532
jmp .L_steal_cipher_amivrujEyduiFoi
2533
2534
.L_done_7_amivrujEyduiFoi:
2535
vpxor %xmm9,%xmm1,%xmm1
2536
vpxor %xmm10,%xmm2,%xmm2
2537
vpxor %xmm11,%xmm3,%xmm3
2538
vpxor %xmm12,%xmm4,%xmm4
2539
vpxor %xmm13,%xmm5,%xmm5
2540
vpxor %xmm14,%xmm6,%xmm6
2541
vpxor %xmm15,%xmm7,%xmm7
2542
vmovdqu (%rcx),%xmm0
2543
vpxor %xmm0,%xmm1,%xmm1
2544
vpxor %xmm0,%xmm2,%xmm2
2545
vpxor %xmm0,%xmm3,%xmm3
2546
vpxor %xmm0,%xmm4,%xmm4
2547
vpxor %xmm0,%xmm5,%xmm5
2548
vpxor %xmm0,%xmm6,%xmm6
2549
vpxor %xmm0,%xmm7,%xmm7
2550
vmovdqu 16(%rcx),%xmm0
2551
vaesdec %xmm0,%xmm1,%xmm1
2552
vaesdec %xmm0,%xmm2,%xmm2
2553
vaesdec %xmm0,%xmm3,%xmm3
2554
vaesdec %xmm0,%xmm4,%xmm4
2555
vaesdec %xmm0,%xmm5,%xmm5
2556
vaesdec %xmm0,%xmm6,%xmm6
2557
vaesdec %xmm0,%xmm7,%xmm7
2558
vmovdqu 32(%rcx),%xmm0
2559
vaesdec %xmm0,%xmm1,%xmm1
2560
vaesdec %xmm0,%xmm2,%xmm2
2561
vaesdec %xmm0,%xmm3,%xmm3
2562
vaesdec %xmm0,%xmm4,%xmm4
2563
vaesdec %xmm0,%xmm5,%xmm5
2564
vaesdec %xmm0,%xmm6,%xmm6
2565
vaesdec %xmm0,%xmm7,%xmm7
2566
vmovdqu 48(%rcx),%xmm0
2567
vaesdec %xmm0,%xmm1,%xmm1
2568
vaesdec %xmm0,%xmm2,%xmm2
2569
vaesdec %xmm0,%xmm3,%xmm3
2570
vaesdec %xmm0,%xmm4,%xmm4
2571
vaesdec %xmm0,%xmm5,%xmm5
2572
vaesdec %xmm0,%xmm6,%xmm6
2573
vaesdec %xmm0,%xmm7,%xmm7
2574
vmovdqu 64(%rcx),%xmm0
2575
vaesdec %xmm0,%xmm1,%xmm1
2576
vaesdec %xmm0,%xmm2,%xmm2
2577
vaesdec %xmm0,%xmm3,%xmm3
2578
vaesdec %xmm0,%xmm4,%xmm4
2579
vaesdec %xmm0,%xmm5,%xmm5
2580
vaesdec %xmm0,%xmm6,%xmm6
2581
vaesdec %xmm0,%xmm7,%xmm7
2582
vmovdqu 80(%rcx),%xmm0
2583
vaesdec %xmm0,%xmm1,%xmm1
2584
vaesdec %xmm0,%xmm2,%xmm2
2585
vaesdec %xmm0,%xmm3,%xmm3
2586
vaesdec %xmm0,%xmm4,%xmm4
2587
vaesdec %xmm0,%xmm5,%xmm5
2588
vaesdec %xmm0,%xmm6,%xmm6
2589
vaesdec %xmm0,%xmm7,%xmm7
2590
vmovdqu 96(%rcx),%xmm0
2591
vaesdec %xmm0,%xmm1,%xmm1
2592
vaesdec %xmm0,%xmm2,%xmm2
2593
vaesdec %xmm0,%xmm3,%xmm3
2594
vaesdec %xmm0,%xmm4,%xmm4
2595
vaesdec %xmm0,%xmm5,%xmm5
2596
vaesdec %xmm0,%xmm6,%xmm6
2597
vaesdec %xmm0,%xmm7,%xmm7
2598
vmovdqu 112(%rcx),%xmm0
2599
vaesdec %xmm0,%xmm1,%xmm1
2600
vaesdec %xmm0,%xmm2,%xmm2
2601
vaesdec %xmm0,%xmm3,%xmm3
2602
vaesdec %xmm0,%xmm4,%xmm4
2603
vaesdec %xmm0,%xmm5,%xmm5
2604
vaesdec %xmm0,%xmm6,%xmm6
2605
vaesdec %xmm0,%xmm7,%xmm7
2606
vmovdqu 128(%rcx),%xmm0
2607
vaesdec %xmm0,%xmm1,%xmm1
2608
vaesdec %xmm0,%xmm2,%xmm2
2609
vaesdec %xmm0,%xmm3,%xmm3
2610
vaesdec %xmm0,%xmm4,%xmm4
2611
vaesdec %xmm0,%xmm5,%xmm5
2612
vaesdec %xmm0,%xmm6,%xmm6
2613
vaesdec %xmm0,%xmm7,%xmm7
2614
vmovdqu 144(%rcx),%xmm0
2615
vaesdec %xmm0,%xmm1,%xmm1
2616
vaesdec %xmm0,%xmm2,%xmm2
2617
vaesdec %xmm0,%xmm3,%xmm3
2618
vaesdec %xmm0,%xmm4,%xmm4
2619
vaesdec %xmm0,%xmm5,%xmm5
2620
vaesdec %xmm0,%xmm6,%xmm6
2621
vaesdec %xmm0,%xmm7,%xmm7
2622
vmovdqu 160(%rcx),%xmm0
2623
vaesdeclast %xmm0,%xmm1,%xmm1
2624
vaesdeclast %xmm0,%xmm2,%xmm2
2625
vaesdeclast %xmm0,%xmm3,%xmm3
2626
vaesdeclast %xmm0,%xmm4,%xmm4
2627
vaesdeclast %xmm0,%xmm5,%xmm5
2628
vaesdeclast %xmm0,%xmm6,%xmm6
2629
vaesdeclast %xmm0,%xmm7,%xmm7
2630
vpxor %xmm9,%xmm1,%xmm1
2631
vpxor %xmm10,%xmm2,%xmm2
2632
vpxor %xmm11,%xmm3,%xmm3
2633
vpxor %xmm12,%xmm4,%xmm4
2634
vpxor %xmm13,%xmm5,%xmm5
2635
vpxor %xmm14,%xmm6,%xmm6
2636
vpxor %xmm15,%xmm7,%xmm7
2637
vmovdqu %xmm1,(%rsi)
2638
vmovdqu %xmm2,16(%rsi)
2639
vmovdqu %xmm3,32(%rsi)
2640
vmovdqu %xmm4,48(%rsi)
2641
vmovdqu %xmm5,64(%rsi)
2642
vmovdqu %xmm6,80(%rsi)
2643
addq $0x70,%rsi
2644
vmovdqa %xmm7,%xmm8
2645
jmp .L_done_amivrujEyduiFoi
2646
2647
.L_num_blocks_is_6_amivrujEyduiFoi:
2648
vmovdqa 0(%rsp),%xmm9
2649
movq 0(%rsp),%rax
2650
movq 8(%rsp),%rbx
2651
vmovdqu 0(%rdi),%xmm1
2652
xorq %r11,%r11
2653
shlq $1,%rax
2654
adcq %rbx,%rbx
2655
cmovcq %r10,%r11
2656
xorq %r11,%rax
2657
movq %rax,16(%rsp)
2658
movq %rbx,16 + 8(%rsp)
2659
vmovdqa 16(%rsp),%xmm10
2660
vmovdqu 16(%rdi),%xmm2
2661
xorq %r11,%r11
2662
shlq $1,%rax
2663
adcq %rbx,%rbx
2664
cmovcq %r10,%r11
2665
xorq %r11,%rax
2666
movq %rax,32(%rsp)
2667
movq %rbx,32 + 8(%rsp)
2668
vmovdqa 32(%rsp),%xmm11
2669
vmovdqu 32(%rdi),%xmm3
2670
xorq %r11,%r11
2671
shlq $1,%rax
2672
adcq %rbx,%rbx
2673
cmovcq %r10,%r11
2674
xorq %r11,%rax
2675
movq %rax,48(%rsp)
2676
movq %rbx,48 + 8(%rsp)
2677
vmovdqa 48(%rsp),%xmm12
2678
vmovdqu 48(%rdi),%xmm4
2679
xorq %r11,%r11
2680
shlq $1,%rax
2681
adcq %rbx,%rbx
2682
cmovcq %r10,%r11
2683
xorq %r11,%rax
2684
movq %rax,64(%rsp)
2685
movq %rbx,64 + 8(%rsp)
2686
vmovdqa 64(%rsp),%xmm13
2687
vmovdqu 64(%rdi),%xmm5
2688
xorq %r11,%r11
2689
shlq $1,%rax
2690
adcq %rbx,%rbx
2691
cmovcq %r10,%r11
2692
xorq %r11,%rax
2693
movq %rax,80(%rsp)
2694
movq %rbx,80 + 8(%rsp)
2695
vmovdqa 80(%rsp),%xmm14
2696
vmovdqu 80(%rdi),%xmm6
2697
addq $0x60,%rdi
2698
andq $0xf,%rdx
2699
je .L_done_6_amivrujEyduiFoi
2700
2701
.L_steal_cipher_6_amivrujEyduiFoi:
2702
xorq %r11,%r11
2703
shlq $1,%rax
2704
adcq %rbx,%rbx
2705
cmovcq %r10,%r11
2706
xorq %r11,%rax
2707
movq %rax,16(%rsp)
2708
movq %rbx,24(%rsp)
2709
vmovdqa64 %xmm14,%xmm15
2710
vmovdqa 16(%rsp),%xmm14
2711
vpxor %xmm9,%xmm1,%xmm1
2712
vpxor %xmm10,%xmm2,%xmm2
2713
vpxor %xmm11,%xmm3,%xmm3
2714
vpxor %xmm12,%xmm4,%xmm4
2715
vpxor %xmm13,%xmm5,%xmm5
2716
vpxor %xmm14,%xmm6,%xmm6
2717
vmovdqu (%rcx),%xmm0
2718
vpxor %xmm0,%xmm1,%xmm1
2719
vpxor %xmm0,%xmm2,%xmm2
2720
vpxor %xmm0,%xmm3,%xmm3
2721
vpxor %xmm0,%xmm4,%xmm4
2722
vpxor %xmm0,%xmm5,%xmm5
2723
vpxor %xmm0,%xmm6,%xmm6
2724
vmovdqu 16(%rcx),%xmm0
2725
vaesdec %xmm0,%xmm1,%xmm1
2726
vaesdec %xmm0,%xmm2,%xmm2
2727
vaesdec %xmm0,%xmm3,%xmm3
2728
vaesdec %xmm0,%xmm4,%xmm4
2729
vaesdec %xmm0,%xmm5,%xmm5
2730
vaesdec %xmm0,%xmm6,%xmm6
2731
vmovdqu 32(%rcx),%xmm0
2732
vaesdec %xmm0,%xmm1,%xmm1
2733
vaesdec %xmm0,%xmm2,%xmm2
2734
vaesdec %xmm0,%xmm3,%xmm3
2735
vaesdec %xmm0,%xmm4,%xmm4
2736
vaesdec %xmm0,%xmm5,%xmm5
2737
vaesdec %xmm0,%xmm6,%xmm6
2738
vmovdqu 48(%rcx),%xmm0
2739
vaesdec %xmm0,%xmm1,%xmm1
2740
vaesdec %xmm0,%xmm2,%xmm2
2741
vaesdec %xmm0,%xmm3,%xmm3
2742
vaesdec %xmm0,%xmm4,%xmm4
2743
vaesdec %xmm0,%xmm5,%xmm5
2744
vaesdec %xmm0,%xmm6,%xmm6
2745
vmovdqu 64(%rcx),%xmm0
2746
vaesdec %xmm0,%xmm1,%xmm1
2747
vaesdec %xmm0,%xmm2,%xmm2
2748
vaesdec %xmm0,%xmm3,%xmm3
2749
vaesdec %xmm0,%xmm4,%xmm4
2750
vaesdec %xmm0,%xmm5,%xmm5
2751
vaesdec %xmm0,%xmm6,%xmm6
2752
vmovdqu 80(%rcx),%xmm0
2753
vaesdec %xmm0,%xmm1,%xmm1
2754
vaesdec %xmm0,%xmm2,%xmm2
2755
vaesdec %xmm0,%xmm3,%xmm3
2756
vaesdec %xmm0,%xmm4,%xmm4
2757
vaesdec %xmm0,%xmm5,%xmm5
2758
vaesdec %xmm0,%xmm6,%xmm6
2759
vmovdqu 96(%rcx),%xmm0
2760
vaesdec %xmm0,%xmm1,%xmm1
2761
vaesdec %xmm0,%xmm2,%xmm2
2762
vaesdec %xmm0,%xmm3,%xmm3
2763
vaesdec %xmm0,%xmm4,%xmm4
2764
vaesdec %xmm0,%xmm5,%xmm5
2765
vaesdec %xmm0,%xmm6,%xmm6
2766
vmovdqu 112(%rcx),%xmm0
2767
vaesdec %xmm0,%xmm1,%xmm1
2768
vaesdec %xmm0,%xmm2,%xmm2
2769
vaesdec %xmm0,%xmm3,%xmm3
2770
vaesdec %xmm0,%xmm4,%xmm4
2771
vaesdec %xmm0,%xmm5,%xmm5
2772
vaesdec %xmm0,%xmm6,%xmm6
2773
vmovdqu 128(%rcx),%xmm0
2774
vaesdec %xmm0,%xmm1,%xmm1
2775
vaesdec %xmm0,%xmm2,%xmm2
2776
vaesdec %xmm0,%xmm3,%xmm3
2777
vaesdec %xmm0,%xmm4,%xmm4
2778
vaesdec %xmm0,%xmm5,%xmm5
2779
vaesdec %xmm0,%xmm6,%xmm6
2780
vmovdqu 144(%rcx),%xmm0
2781
vaesdec %xmm0,%xmm1,%xmm1
2782
vaesdec %xmm0,%xmm2,%xmm2
2783
vaesdec %xmm0,%xmm3,%xmm3
2784
vaesdec %xmm0,%xmm4,%xmm4
2785
vaesdec %xmm0,%xmm5,%xmm5
2786
vaesdec %xmm0,%xmm6,%xmm6
2787
vmovdqu 160(%rcx),%xmm0
2788
vaesdeclast %xmm0,%xmm1,%xmm1
2789
vaesdeclast %xmm0,%xmm2,%xmm2
2790
vaesdeclast %xmm0,%xmm3,%xmm3
2791
vaesdeclast %xmm0,%xmm4,%xmm4
2792
vaesdeclast %xmm0,%xmm5,%xmm5
2793
vaesdeclast %xmm0,%xmm6,%xmm6
2794
vpxor %xmm9,%xmm1,%xmm1
2795
vpxor %xmm10,%xmm2,%xmm2
2796
vpxor %xmm11,%xmm3,%xmm3
2797
vpxor %xmm12,%xmm4,%xmm4
2798
vpxor %xmm13,%xmm5,%xmm5
2799
vpxor %xmm14,%xmm6,%xmm6
2800
vmovdqu %xmm1,(%rsi)
2801
vmovdqu %xmm2,16(%rsi)
2802
vmovdqu %xmm3,32(%rsi)
2803
vmovdqu %xmm4,48(%rsi)
2804
vmovdqu %xmm5,64(%rsi)
2805
addq $0x60,%rsi
2806
vmovdqa %xmm15,%xmm0
2807
vmovdqa %xmm6,%xmm8
2808
jmp .L_steal_cipher_amivrujEyduiFoi
2809
2810
.L_done_6_amivrujEyduiFoi:
2811
vpxor %xmm9,%xmm1,%xmm1
2812
vpxor %xmm10,%xmm2,%xmm2
2813
vpxor %xmm11,%xmm3,%xmm3
2814
vpxor %xmm12,%xmm4,%xmm4
2815
vpxor %xmm13,%xmm5,%xmm5
2816
vpxor %xmm14,%xmm6,%xmm6
2817
vmovdqu (%rcx),%xmm0
2818
vpxor %xmm0,%xmm1,%xmm1
2819
vpxor %xmm0,%xmm2,%xmm2
2820
vpxor %xmm0,%xmm3,%xmm3
2821
vpxor %xmm0,%xmm4,%xmm4
2822
vpxor %xmm0,%xmm5,%xmm5
2823
vpxor %xmm0,%xmm6,%xmm6
2824
vmovdqu 16(%rcx),%xmm0
2825
vaesdec %xmm0,%xmm1,%xmm1
2826
vaesdec %xmm0,%xmm2,%xmm2
2827
vaesdec %xmm0,%xmm3,%xmm3
2828
vaesdec %xmm0,%xmm4,%xmm4
2829
vaesdec %xmm0,%xmm5,%xmm5
2830
vaesdec %xmm0,%xmm6,%xmm6
2831
vmovdqu 32(%rcx),%xmm0
2832
vaesdec %xmm0,%xmm1,%xmm1
2833
vaesdec %xmm0,%xmm2,%xmm2
2834
vaesdec %xmm0,%xmm3,%xmm3
2835
vaesdec %xmm0,%xmm4,%xmm4
2836
vaesdec %xmm0,%xmm5,%xmm5
2837
vaesdec %xmm0,%xmm6,%xmm6
2838
vmovdqu 48(%rcx),%xmm0
2839
vaesdec %xmm0,%xmm1,%xmm1
2840
vaesdec %xmm0,%xmm2,%xmm2
2841
vaesdec %xmm0,%xmm3,%xmm3
2842
vaesdec %xmm0,%xmm4,%xmm4
2843
vaesdec %xmm0,%xmm5,%xmm5
2844
vaesdec %xmm0,%xmm6,%xmm6
2845
vmovdqu 64(%rcx),%xmm0
2846
vaesdec %xmm0,%xmm1,%xmm1
2847
vaesdec %xmm0,%xmm2,%xmm2
2848
vaesdec %xmm0,%xmm3,%xmm3
2849
vaesdec %xmm0,%xmm4,%xmm4
2850
vaesdec %xmm0,%xmm5,%xmm5
2851
vaesdec %xmm0,%xmm6,%xmm6
2852
vmovdqu 80(%rcx),%xmm0
2853
vaesdec %xmm0,%xmm1,%xmm1
2854
vaesdec %xmm0,%xmm2,%xmm2
2855
vaesdec %xmm0,%xmm3,%xmm3
2856
vaesdec %xmm0,%xmm4,%xmm4
2857
vaesdec %xmm0,%xmm5,%xmm5
2858
vaesdec %xmm0,%xmm6,%xmm6
2859
vmovdqu 96(%rcx),%xmm0
2860
vaesdec %xmm0,%xmm1,%xmm1
2861
vaesdec %xmm0,%xmm2,%xmm2
2862
vaesdec %xmm0,%xmm3,%xmm3
2863
vaesdec %xmm0,%xmm4,%xmm4
2864
vaesdec %xmm0,%xmm5,%xmm5
2865
vaesdec %xmm0,%xmm6,%xmm6
2866
vmovdqu 112(%rcx),%xmm0
2867
vaesdec %xmm0,%xmm1,%xmm1
2868
vaesdec %xmm0,%xmm2,%xmm2
2869
vaesdec %xmm0,%xmm3,%xmm3
2870
vaesdec %xmm0,%xmm4,%xmm4
2871
vaesdec %xmm0,%xmm5,%xmm5
2872
vaesdec %xmm0,%xmm6,%xmm6
2873
vmovdqu 128(%rcx),%xmm0
2874
vaesdec %xmm0,%xmm1,%xmm1
2875
vaesdec %xmm0,%xmm2,%xmm2
2876
vaesdec %xmm0,%xmm3,%xmm3
2877
vaesdec %xmm0,%xmm4,%xmm4
2878
vaesdec %xmm0,%xmm5,%xmm5
2879
vaesdec %xmm0,%xmm6,%xmm6
2880
vmovdqu 144(%rcx),%xmm0
2881
vaesdec %xmm0,%xmm1,%xmm1
2882
vaesdec %xmm0,%xmm2,%xmm2
2883
vaesdec %xmm0,%xmm3,%xmm3
2884
vaesdec %xmm0,%xmm4,%xmm4
2885
vaesdec %xmm0,%xmm5,%xmm5
2886
vaesdec %xmm0,%xmm6,%xmm6
2887
vmovdqu 160(%rcx),%xmm0
2888
vaesdeclast %xmm0,%xmm1,%xmm1
2889
vaesdeclast %xmm0,%xmm2,%xmm2
2890
vaesdeclast %xmm0,%xmm3,%xmm3
2891
vaesdeclast %xmm0,%xmm4,%xmm4
2892
vaesdeclast %xmm0,%xmm5,%xmm5
2893
vaesdeclast %xmm0,%xmm6,%xmm6
2894
vpxor %xmm9,%xmm1,%xmm1
2895
vpxor %xmm10,%xmm2,%xmm2
2896
vpxor %xmm11,%xmm3,%xmm3
2897
vpxor %xmm12,%xmm4,%xmm4
2898
vpxor %xmm13,%xmm5,%xmm5
2899
vpxor %xmm14,%xmm6,%xmm6
2900
vmovdqu %xmm1,(%rsi)
2901
vmovdqu %xmm2,16(%rsi)
2902
vmovdqu %xmm3,32(%rsi)
2903
vmovdqu %xmm4,48(%rsi)
2904
vmovdqu %xmm5,64(%rsi)
2905
addq $0x60,%rsi
2906
vmovdqa %xmm6,%xmm8
2907
jmp .L_done_amivrujEyduiFoi
2908
2909
.L_num_blocks_is_5_amivrujEyduiFoi:
2910
vmovdqa 0(%rsp),%xmm9
2911
movq 0(%rsp),%rax
2912
movq 8(%rsp),%rbx
2913
vmovdqu 0(%rdi),%xmm1
2914
xorq %r11,%r11
2915
shlq $1,%rax
2916
adcq %rbx,%rbx
2917
cmovcq %r10,%r11
2918
xorq %r11,%rax
2919
movq %rax,16(%rsp)
2920
movq %rbx,16 + 8(%rsp)
2921
vmovdqa 16(%rsp),%xmm10
2922
vmovdqu 16(%rdi),%xmm2
2923
xorq %r11,%r11
2924
shlq $1,%rax
2925
adcq %rbx,%rbx
2926
cmovcq %r10,%r11
2927
xorq %r11,%rax
2928
movq %rax,32(%rsp)
2929
movq %rbx,32 + 8(%rsp)
2930
vmovdqa 32(%rsp),%xmm11
2931
vmovdqu 32(%rdi),%xmm3
2932
xorq %r11,%r11
2933
shlq $1,%rax
2934
adcq %rbx,%rbx
2935
cmovcq %r10,%r11
2936
xorq %r11,%rax
2937
movq %rax,48(%rsp)
2938
movq %rbx,48 + 8(%rsp)
2939
vmovdqa 48(%rsp),%xmm12
2940
vmovdqu 48(%rdi),%xmm4
2941
xorq %r11,%r11
2942
shlq $1,%rax
2943
adcq %rbx,%rbx
2944
cmovcq %r10,%r11
2945
xorq %r11,%rax
2946
movq %rax,64(%rsp)
2947
movq %rbx,64 + 8(%rsp)
2948
vmovdqa 64(%rsp),%xmm13
2949
vmovdqu 64(%rdi),%xmm5
2950
addq $0x50,%rdi
2951
andq $0xf,%rdx
2952
je .L_done_5_amivrujEyduiFoi
2953
2954
.L_steal_cipher_5_amivrujEyduiFoi:
2955
xorq %r11,%r11
2956
shlq $1,%rax
2957
adcq %rbx,%rbx
2958
cmovcq %r10,%r11
2959
xorq %r11,%rax
2960
movq %rax,16(%rsp)
2961
movq %rbx,24(%rsp)
2962
vmovdqa64 %xmm13,%xmm14
2963
vmovdqa 16(%rsp),%xmm13
2964
vpxor %xmm9,%xmm1,%xmm1
2965
vpxor %xmm10,%xmm2,%xmm2
2966
vpxor %xmm11,%xmm3,%xmm3
2967
vpxor %xmm12,%xmm4,%xmm4
2968
vpxor %xmm13,%xmm5,%xmm5
2969
vmovdqu (%rcx),%xmm0
2970
vpxor %xmm0,%xmm1,%xmm1
2971
vpxor %xmm0,%xmm2,%xmm2
2972
vpxor %xmm0,%xmm3,%xmm3
2973
vpxor %xmm0,%xmm4,%xmm4
2974
vpxor %xmm0,%xmm5,%xmm5
2975
vmovdqu 16(%rcx),%xmm0
2976
vaesdec %xmm0,%xmm1,%xmm1
2977
vaesdec %xmm0,%xmm2,%xmm2
2978
vaesdec %xmm0,%xmm3,%xmm3
2979
vaesdec %xmm0,%xmm4,%xmm4
2980
vaesdec %xmm0,%xmm5,%xmm5
2981
vmovdqu 32(%rcx),%xmm0
2982
vaesdec %xmm0,%xmm1,%xmm1
2983
vaesdec %xmm0,%xmm2,%xmm2
2984
vaesdec %xmm0,%xmm3,%xmm3
2985
vaesdec %xmm0,%xmm4,%xmm4
2986
vaesdec %xmm0,%xmm5,%xmm5
2987
vmovdqu 48(%rcx),%xmm0
2988
vaesdec %xmm0,%xmm1,%xmm1
2989
vaesdec %xmm0,%xmm2,%xmm2
2990
vaesdec %xmm0,%xmm3,%xmm3
2991
vaesdec %xmm0,%xmm4,%xmm4
2992
vaesdec %xmm0,%xmm5,%xmm5
2993
vmovdqu 64(%rcx),%xmm0
2994
vaesdec %xmm0,%xmm1,%xmm1
2995
vaesdec %xmm0,%xmm2,%xmm2
2996
vaesdec %xmm0,%xmm3,%xmm3
2997
vaesdec %xmm0,%xmm4,%xmm4
2998
vaesdec %xmm0,%xmm5,%xmm5
2999
vmovdqu 80(%rcx),%xmm0
3000
vaesdec %xmm0,%xmm1,%xmm1
3001
vaesdec %xmm0,%xmm2,%xmm2
3002
vaesdec %xmm0,%xmm3,%xmm3
3003
vaesdec %xmm0,%xmm4,%xmm4
3004
vaesdec %xmm0,%xmm5,%xmm5
3005
vmovdqu 96(%rcx),%xmm0
3006
vaesdec %xmm0,%xmm1,%xmm1
3007
vaesdec %xmm0,%xmm2,%xmm2
3008
vaesdec %xmm0,%xmm3,%xmm3
3009
vaesdec %xmm0,%xmm4,%xmm4
3010
vaesdec %xmm0,%xmm5,%xmm5
3011
vmovdqu 112(%rcx),%xmm0
3012
vaesdec %xmm0,%xmm1,%xmm1
3013
vaesdec %xmm0,%xmm2,%xmm2
3014
vaesdec %xmm0,%xmm3,%xmm3
3015
vaesdec %xmm0,%xmm4,%xmm4
3016
vaesdec %xmm0,%xmm5,%xmm5
3017
vmovdqu 128(%rcx),%xmm0
3018
vaesdec %xmm0,%xmm1,%xmm1
3019
vaesdec %xmm0,%xmm2,%xmm2
3020
vaesdec %xmm0,%xmm3,%xmm3
3021
vaesdec %xmm0,%xmm4,%xmm4
3022
vaesdec %xmm0,%xmm5,%xmm5
3023
vmovdqu 144(%rcx),%xmm0
3024
vaesdec %xmm0,%xmm1,%xmm1
3025
vaesdec %xmm0,%xmm2,%xmm2
3026
vaesdec %xmm0,%xmm3,%xmm3
3027
vaesdec %xmm0,%xmm4,%xmm4
3028
vaesdec %xmm0,%xmm5,%xmm5
3029
vmovdqu 160(%rcx),%xmm0
3030
vaesdeclast %xmm0,%xmm1,%xmm1
3031
vaesdeclast %xmm0,%xmm2,%xmm2
3032
vaesdeclast %xmm0,%xmm3,%xmm3
3033
vaesdeclast %xmm0,%xmm4,%xmm4
3034
vaesdeclast %xmm0,%xmm5,%xmm5
3035
vpxor %xmm9,%xmm1,%xmm1
3036
vpxor %xmm10,%xmm2,%xmm2
3037
vpxor %xmm11,%xmm3,%xmm3
3038
vpxor %xmm12,%xmm4,%xmm4
3039
vpxor %xmm13,%xmm5,%xmm5
3040
vmovdqu %xmm1,(%rsi)
3041
vmovdqu %xmm2,16(%rsi)
3042
vmovdqu %xmm3,32(%rsi)
3043
vmovdqu %xmm4,48(%rsi)
3044
addq $0x50,%rsi
3045
vmovdqa %xmm14,%xmm0
3046
vmovdqa %xmm5,%xmm8
3047
jmp .L_steal_cipher_amivrujEyduiFoi
3048
3049
.L_done_5_amivrujEyduiFoi:
3050
vpxor %xmm9,%xmm1,%xmm1
3051
vpxor %xmm10,%xmm2,%xmm2
3052
vpxor %xmm11,%xmm3,%xmm3
3053
vpxor %xmm12,%xmm4,%xmm4
3054
vpxor %xmm13,%xmm5,%xmm5
3055
vmovdqu (%rcx),%xmm0
3056
vpxor %xmm0,%xmm1,%xmm1
3057
vpxor %xmm0,%xmm2,%xmm2
3058
vpxor %xmm0,%xmm3,%xmm3
3059
vpxor %xmm0,%xmm4,%xmm4
3060
vpxor %xmm0,%xmm5,%xmm5
3061
vmovdqu 16(%rcx),%xmm0
3062
vaesdec %xmm0,%xmm1,%xmm1
3063
vaesdec %xmm0,%xmm2,%xmm2
3064
vaesdec %xmm0,%xmm3,%xmm3
3065
vaesdec %xmm0,%xmm4,%xmm4
3066
vaesdec %xmm0,%xmm5,%xmm5
3067
vmovdqu 32(%rcx),%xmm0
3068
vaesdec %xmm0,%xmm1,%xmm1
3069
vaesdec %xmm0,%xmm2,%xmm2
3070
vaesdec %xmm0,%xmm3,%xmm3
3071
vaesdec %xmm0,%xmm4,%xmm4
3072
vaesdec %xmm0,%xmm5,%xmm5
3073
vmovdqu 48(%rcx),%xmm0
3074
vaesdec %xmm0,%xmm1,%xmm1
3075
vaesdec %xmm0,%xmm2,%xmm2
3076
vaesdec %xmm0,%xmm3,%xmm3
3077
vaesdec %xmm0,%xmm4,%xmm4
3078
vaesdec %xmm0,%xmm5,%xmm5
3079
vmovdqu 64(%rcx),%xmm0
3080
vaesdec %xmm0,%xmm1,%xmm1
3081
vaesdec %xmm0,%xmm2,%xmm2
3082
vaesdec %xmm0,%xmm3,%xmm3
3083
vaesdec %xmm0,%xmm4,%xmm4
3084
vaesdec %xmm0,%xmm5,%xmm5
3085
vmovdqu 80(%rcx),%xmm0
3086
vaesdec %xmm0,%xmm1,%xmm1
3087
vaesdec %xmm0,%xmm2,%xmm2
3088
vaesdec %xmm0,%xmm3,%xmm3
3089
vaesdec %xmm0,%xmm4,%xmm4
3090
vaesdec %xmm0,%xmm5,%xmm5
3091
vmovdqu 96(%rcx),%xmm0
3092
vaesdec %xmm0,%xmm1,%xmm1
3093
vaesdec %xmm0,%xmm2,%xmm2
3094
vaesdec %xmm0,%xmm3,%xmm3
3095
vaesdec %xmm0,%xmm4,%xmm4
3096
vaesdec %xmm0,%xmm5,%xmm5
3097
vmovdqu 112(%rcx),%xmm0
3098
vaesdec %xmm0,%xmm1,%xmm1
3099
vaesdec %xmm0,%xmm2,%xmm2
3100
vaesdec %xmm0,%xmm3,%xmm3
3101
vaesdec %xmm0,%xmm4,%xmm4
3102
vaesdec %xmm0,%xmm5,%xmm5
3103
vmovdqu 128(%rcx),%xmm0
3104
vaesdec %xmm0,%xmm1,%xmm1
3105
vaesdec %xmm0,%xmm2,%xmm2
3106
vaesdec %xmm0,%xmm3,%xmm3
3107
vaesdec %xmm0,%xmm4,%xmm4
3108
vaesdec %xmm0,%xmm5,%xmm5
3109
vmovdqu 144(%rcx),%xmm0
3110
vaesdec %xmm0,%xmm1,%xmm1
3111
vaesdec %xmm0,%xmm2,%xmm2
3112
vaesdec %xmm0,%xmm3,%xmm3
3113
vaesdec %xmm0,%xmm4,%xmm4
3114
vaesdec %xmm0,%xmm5,%xmm5
3115
vmovdqu 160(%rcx),%xmm0
3116
vaesdeclast %xmm0,%xmm1,%xmm1
3117
vaesdeclast %xmm0,%xmm2,%xmm2
3118
vaesdeclast %xmm0,%xmm3,%xmm3
3119
vaesdeclast %xmm0,%xmm4,%xmm4
3120
vaesdeclast %xmm0,%xmm5,%xmm5
3121
vpxor %xmm9,%xmm1,%xmm1
3122
vpxor %xmm10,%xmm2,%xmm2
3123
vpxor %xmm11,%xmm3,%xmm3
3124
vpxor %xmm12,%xmm4,%xmm4
3125
vpxor %xmm13,%xmm5,%xmm5
3126
vmovdqu %xmm1,(%rsi)
3127
vmovdqu %xmm2,16(%rsi)
3128
vmovdqu %xmm3,32(%rsi)
3129
vmovdqu %xmm4,48(%rsi)
3130
addq $0x50,%rsi
3131
vmovdqa %xmm5,%xmm8
3132
jmp .L_done_amivrujEyduiFoi
3133
3134
.L_num_blocks_is_4_amivrujEyduiFoi:
3135
vmovdqa 0(%rsp),%xmm9
3136
movq 0(%rsp),%rax
3137
movq 8(%rsp),%rbx
3138
vmovdqu 0(%rdi),%xmm1
3139
xorq %r11,%r11
3140
shlq $1,%rax
3141
adcq %rbx,%rbx
3142
cmovcq %r10,%r11
3143
xorq %r11,%rax
3144
movq %rax,16(%rsp)
3145
movq %rbx,16 + 8(%rsp)
3146
vmovdqa 16(%rsp),%xmm10
3147
vmovdqu 16(%rdi),%xmm2
3148
xorq %r11,%r11
3149
shlq $1,%rax
3150
adcq %rbx,%rbx
3151
cmovcq %r10,%r11
3152
xorq %r11,%rax
3153
movq %rax,32(%rsp)
3154
movq %rbx,32 + 8(%rsp)
3155
vmovdqa 32(%rsp),%xmm11
3156
vmovdqu 32(%rdi),%xmm3
3157
xorq %r11,%r11
3158
shlq $1,%rax
3159
adcq %rbx,%rbx
3160
cmovcq %r10,%r11
3161
xorq %r11,%rax
3162
movq %rax,48(%rsp)
3163
movq %rbx,48 + 8(%rsp)
3164
vmovdqa 48(%rsp),%xmm12
3165
vmovdqu 48(%rdi),%xmm4
3166
addq $0x40,%rdi
3167
andq $0xf,%rdx
3168
je .L_done_4_amivrujEyduiFoi
3169
3170
.L_steal_cipher_4_amivrujEyduiFoi:
3171
xorq %r11,%r11
3172
shlq $1,%rax
3173
adcq %rbx,%rbx
3174
cmovcq %r10,%r11
3175
xorq %r11,%rax
3176
movq %rax,16(%rsp)
3177
movq %rbx,24(%rsp)
3178
vmovdqa64 %xmm12,%xmm13
3179
vmovdqa 16(%rsp),%xmm12
3180
vpxor %xmm9,%xmm1,%xmm1
3181
vpxor %xmm10,%xmm2,%xmm2
3182
vpxor %xmm11,%xmm3,%xmm3
3183
vpxor %xmm12,%xmm4,%xmm4
3184
vmovdqu (%rcx),%xmm0
3185
vpxor %xmm0,%xmm1,%xmm1
3186
vpxor %xmm0,%xmm2,%xmm2
3187
vpxor %xmm0,%xmm3,%xmm3
3188
vpxor %xmm0,%xmm4,%xmm4
3189
vmovdqu 16(%rcx),%xmm0
3190
vaesdec %xmm0,%xmm1,%xmm1
3191
vaesdec %xmm0,%xmm2,%xmm2
3192
vaesdec %xmm0,%xmm3,%xmm3
3193
vaesdec %xmm0,%xmm4,%xmm4
3194
vmovdqu 32(%rcx),%xmm0
3195
vaesdec %xmm0,%xmm1,%xmm1
3196
vaesdec %xmm0,%xmm2,%xmm2
3197
vaesdec %xmm0,%xmm3,%xmm3
3198
vaesdec %xmm0,%xmm4,%xmm4
3199
vmovdqu 48(%rcx),%xmm0
3200
vaesdec %xmm0,%xmm1,%xmm1
3201
vaesdec %xmm0,%xmm2,%xmm2
3202
vaesdec %xmm0,%xmm3,%xmm3
3203
vaesdec %xmm0,%xmm4,%xmm4
3204
vmovdqu 64(%rcx),%xmm0
3205
vaesdec %xmm0,%xmm1,%xmm1
3206
vaesdec %xmm0,%xmm2,%xmm2
3207
vaesdec %xmm0,%xmm3,%xmm3
3208
vaesdec %xmm0,%xmm4,%xmm4
3209
vmovdqu 80(%rcx),%xmm0
3210
vaesdec %xmm0,%xmm1,%xmm1
3211
vaesdec %xmm0,%xmm2,%xmm2
3212
vaesdec %xmm0,%xmm3,%xmm3
3213
vaesdec %xmm0,%xmm4,%xmm4
3214
vmovdqu 96(%rcx),%xmm0
3215
vaesdec %xmm0,%xmm1,%xmm1
3216
vaesdec %xmm0,%xmm2,%xmm2
3217
vaesdec %xmm0,%xmm3,%xmm3
3218
vaesdec %xmm0,%xmm4,%xmm4
3219
vmovdqu 112(%rcx),%xmm0
3220
vaesdec %xmm0,%xmm1,%xmm1
3221
vaesdec %xmm0,%xmm2,%xmm2
3222
vaesdec %xmm0,%xmm3,%xmm3
3223
vaesdec %xmm0,%xmm4,%xmm4
3224
vmovdqu 128(%rcx),%xmm0
3225
vaesdec %xmm0,%xmm1,%xmm1
3226
vaesdec %xmm0,%xmm2,%xmm2
3227
vaesdec %xmm0,%xmm3,%xmm3
3228
vaesdec %xmm0,%xmm4,%xmm4
3229
vmovdqu 144(%rcx),%xmm0
3230
vaesdec %xmm0,%xmm1,%xmm1
3231
vaesdec %xmm0,%xmm2,%xmm2
3232
vaesdec %xmm0,%xmm3,%xmm3
3233
vaesdec %xmm0,%xmm4,%xmm4
3234
vmovdqu 160(%rcx),%xmm0
3235
vaesdeclast %xmm0,%xmm1,%xmm1
3236
vaesdeclast %xmm0,%xmm2,%xmm2
3237
vaesdeclast %xmm0,%xmm3,%xmm3
3238
vaesdeclast %xmm0,%xmm4,%xmm4
3239
vpxor %xmm9,%xmm1,%xmm1
3240
vpxor %xmm10,%xmm2,%xmm2
3241
vpxor %xmm11,%xmm3,%xmm3
3242
vpxor %xmm12,%xmm4,%xmm4
3243
vmovdqu %xmm1,(%rsi)
3244
vmovdqu %xmm2,16(%rsi)
3245
vmovdqu %xmm3,32(%rsi)
3246
addq $0x40,%rsi
3247
vmovdqa %xmm13,%xmm0
3248
vmovdqa %xmm4,%xmm8
3249
jmp .L_steal_cipher_amivrujEyduiFoi
3250
3251
.L_done_4_amivrujEyduiFoi:
3252
vpxor %xmm9,%xmm1,%xmm1
3253
vpxor %xmm10,%xmm2,%xmm2
3254
vpxor %xmm11,%xmm3,%xmm3
3255
vpxor %xmm12,%xmm4,%xmm4
3256
vmovdqu (%rcx),%xmm0
3257
vpxor %xmm0,%xmm1,%xmm1
3258
vpxor %xmm0,%xmm2,%xmm2
3259
vpxor %xmm0,%xmm3,%xmm3
3260
vpxor %xmm0,%xmm4,%xmm4
3261
vmovdqu 16(%rcx),%xmm0
3262
vaesdec %xmm0,%xmm1,%xmm1
3263
vaesdec %xmm0,%xmm2,%xmm2
3264
vaesdec %xmm0,%xmm3,%xmm3
3265
vaesdec %xmm0,%xmm4,%xmm4
3266
vmovdqu 32(%rcx),%xmm0
3267
vaesdec %xmm0,%xmm1,%xmm1
3268
vaesdec %xmm0,%xmm2,%xmm2
3269
vaesdec %xmm0,%xmm3,%xmm3
3270
vaesdec %xmm0,%xmm4,%xmm4
3271
vmovdqu 48(%rcx),%xmm0
3272
vaesdec %xmm0,%xmm1,%xmm1
3273
vaesdec %xmm0,%xmm2,%xmm2
3274
vaesdec %xmm0,%xmm3,%xmm3
3275
vaesdec %xmm0,%xmm4,%xmm4
3276
vmovdqu 64(%rcx),%xmm0
3277
vaesdec %xmm0,%xmm1,%xmm1
3278
vaesdec %xmm0,%xmm2,%xmm2
3279
vaesdec %xmm0,%xmm3,%xmm3
3280
vaesdec %xmm0,%xmm4,%xmm4
3281
vmovdqu 80(%rcx),%xmm0
3282
vaesdec %xmm0,%xmm1,%xmm1
3283
vaesdec %xmm0,%xmm2,%xmm2
3284
vaesdec %xmm0,%xmm3,%xmm3
3285
vaesdec %xmm0,%xmm4,%xmm4
3286
vmovdqu 96(%rcx),%xmm0
3287
vaesdec %xmm0,%xmm1,%xmm1
3288
vaesdec %xmm0,%xmm2,%xmm2
3289
vaesdec %xmm0,%xmm3,%xmm3
3290
vaesdec %xmm0,%xmm4,%xmm4
3291
vmovdqu 112(%rcx),%xmm0
3292
vaesdec %xmm0,%xmm1,%xmm1
3293
vaesdec %xmm0,%xmm2,%xmm2
3294
vaesdec %xmm0,%xmm3,%xmm3
3295
vaesdec %xmm0,%xmm4,%xmm4
3296
vmovdqu 128(%rcx),%xmm0
3297
vaesdec %xmm0,%xmm1,%xmm1
3298
vaesdec %xmm0,%xmm2,%xmm2
3299
vaesdec %xmm0,%xmm3,%xmm3
3300
vaesdec %xmm0,%xmm4,%xmm4
3301
vmovdqu 144(%rcx),%xmm0
3302
vaesdec %xmm0,%xmm1,%xmm1
3303
vaesdec %xmm0,%xmm2,%xmm2
3304
vaesdec %xmm0,%xmm3,%xmm3
3305
vaesdec %xmm0,%xmm4,%xmm4
3306
vmovdqu 160(%rcx),%xmm0
3307
vaesdeclast %xmm0,%xmm1,%xmm1
3308
vaesdeclast %xmm0,%xmm2,%xmm2
3309
vaesdeclast %xmm0,%xmm3,%xmm3
3310
vaesdeclast %xmm0,%xmm4,%xmm4
3311
vpxor %xmm9,%xmm1,%xmm1
3312
vpxor %xmm10,%xmm2,%xmm2
3313
vpxor %xmm11,%xmm3,%xmm3
3314
vpxor %xmm12,%xmm4,%xmm4
3315
vmovdqu %xmm1,(%rsi)
3316
vmovdqu %xmm2,16(%rsi)
3317
vmovdqu %xmm3,32(%rsi)
3318
addq $0x40,%rsi
3319
vmovdqa %xmm4,%xmm8
3320
jmp .L_done_amivrujEyduiFoi
3321
3322
.L_num_blocks_is_3_amivrujEyduiFoi:
3323
vmovdqa 0(%rsp),%xmm9
3324
movq 0(%rsp),%rax
3325
movq 8(%rsp),%rbx
3326
vmovdqu 0(%rdi),%xmm1
3327
xorq %r11,%r11
3328
shlq $1,%rax
3329
adcq %rbx,%rbx
3330
cmovcq %r10,%r11
3331
xorq %r11,%rax
3332
movq %rax,16(%rsp)
3333
movq %rbx,16 + 8(%rsp)
3334
vmovdqa 16(%rsp),%xmm10
3335
vmovdqu 16(%rdi),%xmm2
3336
xorq %r11,%r11
3337
shlq $1,%rax
3338
adcq %rbx,%rbx
3339
cmovcq %r10,%r11
3340
xorq %r11,%rax
3341
movq %rax,32(%rsp)
3342
movq %rbx,32 + 8(%rsp)
3343
vmovdqa 32(%rsp),%xmm11
3344
vmovdqu 32(%rdi),%xmm3
3345
addq $0x30,%rdi
3346
andq $0xf,%rdx
3347
je .L_done_3_amivrujEyduiFoi
3348
3349
.L_steal_cipher_3_amivrujEyduiFoi:
3350
xorq %r11,%r11
3351
shlq $1,%rax
3352
adcq %rbx,%rbx
3353
cmovcq %r10,%r11
3354
xorq %r11,%rax
3355
movq %rax,16(%rsp)
3356
movq %rbx,24(%rsp)
3357
vmovdqa64 %xmm11,%xmm12
3358
vmovdqa 16(%rsp),%xmm11
3359
vpxor %xmm9,%xmm1,%xmm1
3360
vpxor %xmm10,%xmm2,%xmm2
3361
vpxor %xmm11,%xmm3,%xmm3
3362
vmovdqu (%rcx),%xmm0
3363
vpxor %xmm0,%xmm1,%xmm1
3364
vpxor %xmm0,%xmm2,%xmm2
3365
vpxor %xmm0,%xmm3,%xmm3
3366
vmovdqu 16(%rcx),%xmm0
3367
vaesdec %xmm0,%xmm1,%xmm1
3368
vaesdec %xmm0,%xmm2,%xmm2
3369
vaesdec %xmm0,%xmm3,%xmm3
3370
vmovdqu 32(%rcx),%xmm0
3371
vaesdec %xmm0,%xmm1,%xmm1
3372
vaesdec %xmm0,%xmm2,%xmm2
3373
vaesdec %xmm0,%xmm3,%xmm3
3374
vmovdqu 48(%rcx),%xmm0
3375
vaesdec %xmm0,%xmm1,%xmm1
3376
vaesdec %xmm0,%xmm2,%xmm2
3377
vaesdec %xmm0,%xmm3,%xmm3
3378
vmovdqu 64(%rcx),%xmm0
3379
vaesdec %xmm0,%xmm1,%xmm1
3380
vaesdec %xmm0,%xmm2,%xmm2
3381
vaesdec %xmm0,%xmm3,%xmm3
3382
vmovdqu 80(%rcx),%xmm0
3383
vaesdec %xmm0,%xmm1,%xmm1
3384
vaesdec %xmm0,%xmm2,%xmm2
3385
vaesdec %xmm0,%xmm3,%xmm3
3386
vmovdqu 96(%rcx),%xmm0
3387
vaesdec %xmm0,%xmm1,%xmm1
3388
vaesdec %xmm0,%xmm2,%xmm2
3389
vaesdec %xmm0,%xmm3,%xmm3
3390
vmovdqu 112(%rcx),%xmm0
3391
vaesdec %xmm0,%xmm1,%xmm1
3392
vaesdec %xmm0,%xmm2,%xmm2
3393
vaesdec %xmm0,%xmm3,%xmm3
3394
vmovdqu 128(%rcx),%xmm0
3395
vaesdec %xmm0,%xmm1,%xmm1
3396
vaesdec %xmm0,%xmm2,%xmm2
3397
vaesdec %xmm0,%xmm3,%xmm3
3398
vmovdqu 144(%rcx),%xmm0
3399
vaesdec %xmm0,%xmm1,%xmm1
3400
vaesdec %xmm0,%xmm2,%xmm2
3401
vaesdec %xmm0,%xmm3,%xmm3
3402
vmovdqu 160(%rcx),%xmm0
3403
vaesdeclast %xmm0,%xmm1,%xmm1
3404
vaesdeclast %xmm0,%xmm2,%xmm2
3405
vaesdeclast %xmm0,%xmm3,%xmm3
3406
vpxor %xmm9,%xmm1,%xmm1
3407
vpxor %xmm10,%xmm2,%xmm2
3408
vpxor %xmm11,%xmm3,%xmm3
3409
vmovdqu %xmm1,(%rsi)
3410
vmovdqu %xmm2,16(%rsi)
3411
addq $0x30,%rsi
3412
vmovdqa %xmm12,%xmm0
3413
vmovdqa %xmm3,%xmm8
3414
jmp .L_steal_cipher_amivrujEyduiFoi
3415
3416
.L_done_3_amivrujEyduiFoi:
3417
vpxor %xmm9,%xmm1,%xmm1
3418
vpxor %xmm10,%xmm2,%xmm2
3419
vpxor %xmm11,%xmm3,%xmm3
3420
vmovdqu (%rcx),%xmm0
3421
vpxor %xmm0,%xmm1,%xmm1
3422
vpxor %xmm0,%xmm2,%xmm2
3423
vpxor %xmm0,%xmm3,%xmm3
3424
vmovdqu 16(%rcx),%xmm0
3425
vaesdec %xmm0,%xmm1,%xmm1
3426
vaesdec %xmm0,%xmm2,%xmm2
3427
vaesdec %xmm0,%xmm3,%xmm3
3428
vmovdqu 32(%rcx),%xmm0
3429
vaesdec %xmm0,%xmm1,%xmm1
3430
vaesdec %xmm0,%xmm2,%xmm2
3431
vaesdec %xmm0,%xmm3,%xmm3
3432
vmovdqu 48(%rcx),%xmm0
3433
vaesdec %xmm0,%xmm1,%xmm1
3434
vaesdec %xmm0,%xmm2,%xmm2
3435
vaesdec %xmm0,%xmm3,%xmm3
3436
vmovdqu 64(%rcx),%xmm0
3437
vaesdec %xmm0,%xmm1,%xmm1
3438
vaesdec %xmm0,%xmm2,%xmm2
3439
vaesdec %xmm0,%xmm3,%xmm3
3440
vmovdqu 80(%rcx),%xmm0
3441
vaesdec %xmm0,%xmm1,%xmm1
3442
vaesdec %xmm0,%xmm2,%xmm2
3443
vaesdec %xmm0,%xmm3,%xmm3
3444
vmovdqu 96(%rcx),%xmm0
3445
vaesdec %xmm0,%xmm1,%xmm1
3446
vaesdec %xmm0,%xmm2,%xmm2
3447
vaesdec %xmm0,%xmm3,%xmm3
3448
vmovdqu 112(%rcx),%xmm0
3449
vaesdec %xmm0,%xmm1,%xmm1
3450
vaesdec %xmm0,%xmm2,%xmm2
3451
vaesdec %xmm0,%xmm3,%xmm3
3452
vmovdqu 128(%rcx),%xmm0
3453
vaesdec %xmm0,%xmm1,%xmm1
3454
vaesdec %xmm0,%xmm2,%xmm2
3455
vaesdec %xmm0,%xmm3,%xmm3
3456
vmovdqu 144(%rcx),%xmm0
3457
vaesdec %xmm0,%xmm1,%xmm1
3458
vaesdec %xmm0,%xmm2,%xmm2
3459
vaesdec %xmm0,%xmm3,%xmm3
3460
vmovdqu 160(%rcx),%xmm0
3461
vaesdeclast %xmm0,%xmm1,%xmm1
3462
vaesdeclast %xmm0,%xmm2,%xmm2
3463
vaesdeclast %xmm0,%xmm3,%xmm3
3464
vpxor %xmm9,%xmm1,%xmm1
3465
vpxor %xmm10,%xmm2,%xmm2
3466
vpxor %xmm11,%xmm3,%xmm3
3467
vmovdqu %xmm1,(%rsi)
3468
vmovdqu %xmm2,16(%rsi)
3469
addq $0x30,%rsi
3470
vmovdqa %xmm3,%xmm8
3471
jmp .L_done_amivrujEyduiFoi
3472
3473
.L_num_blocks_is_2_amivrujEyduiFoi:
3474
vmovdqa 0(%rsp),%xmm9
3475
movq 0(%rsp),%rax
3476
movq 8(%rsp),%rbx
3477
vmovdqu 0(%rdi),%xmm1
3478
xorq %r11,%r11
3479
shlq $1,%rax
3480
adcq %rbx,%rbx
3481
cmovcq %r10,%r11
3482
xorq %r11,%rax
3483
movq %rax,16(%rsp)
3484
movq %rbx,16 + 8(%rsp)
3485
vmovdqa 16(%rsp),%xmm10
3486
vmovdqu 16(%rdi),%xmm2
3487
addq $0x20,%rdi
3488
andq $0xf,%rdx
3489
je .L_done_2_amivrujEyduiFoi
3490
3491
.L_steal_cipher_2_amivrujEyduiFoi:
3492
xorq %r11,%r11
3493
shlq $1,%rax
3494
adcq %rbx,%rbx
3495
cmovcq %r10,%r11
3496
xorq %r11,%rax
3497
movq %rax,16(%rsp)
3498
movq %rbx,24(%rsp)
3499
vmovdqa64 %xmm10,%xmm11
3500
vmovdqa 16(%rsp),%xmm10
3501
vpxor %xmm9,%xmm1,%xmm1
3502
vpxor %xmm10,%xmm2,%xmm2
3503
vmovdqu (%rcx),%xmm0
3504
vpxor %xmm0,%xmm1,%xmm1
3505
vpxor %xmm0,%xmm2,%xmm2
3506
vmovdqu 16(%rcx),%xmm0
3507
vaesdec %xmm0,%xmm1,%xmm1
3508
vaesdec %xmm0,%xmm2,%xmm2
3509
vmovdqu 32(%rcx),%xmm0
3510
vaesdec %xmm0,%xmm1,%xmm1
3511
vaesdec %xmm0,%xmm2,%xmm2
3512
vmovdqu 48(%rcx),%xmm0
3513
vaesdec %xmm0,%xmm1,%xmm1
3514
vaesdec %xmm0,%xmm2,%xmm2
3515
vmovdqu 64(%rcx),%xmm0
3516
vaesdec %xmm0,%xmm1,%xmm1
3517
vaesdec %xmm0,%xmm2,%xmm2
3518
vmovdqu 80(%rcx),%xmm0
3519
vaesdec %xmm0,%xmm1,%xmm1
3520
vaesdec %xmm0,%xmm2,%xmm2
3521
vmovdqu 96(%rcx),%xmm0
3522
vaesdec %xmm0,%xmm1,%xmm1
3523
vaesdec %xmm0,%xmm2,%xmm2
3524
vmovdqu 112(%rcx),%xmm0
3525
vaesdec %xmm0,%xmm1,%xmm1
3526
vaesdec %xmm0,%xmm2,%xmm2
3527
vmovdqu 128(%rcx),%xmm0
3528
vaesdec %xmm0,%xmm1,%xmm1
3529
vaesdec %xmm0,%xmm2,%xmm2
3530
vmovdqu 144(%rcx),%xmm0
3531
vaesdec %xmm0,%xmm1,%xmm1
3532
vaesdec %xmm0,%xmm2,%xmm2
3533
vmovdqu 160(%rcx),%xmm0
3534
vaesdeclast %xmm0,%xmm1,%xmm1
3535
vaesdeclast %xmm0,%xmm2,%xmm2
3536
vpxor %xmm9,%xmm1,%xmm1
3537
vpxor %xmm10,%xmm2,%xmm2
3538
vmovdqu %xmm1,(%rsi)
3539
addq $0x20,%rsi
3540
vmovdqa %xmm11,%xmm0
3541
vmovdqa %xmm2,%xmm8
3542
jmp .L_steal_cipher_amivrujEyduiFoi
3543
3544
.L_done_2_amivrujEyduiFoi:
3545
vpxor %xmm9,%xmm1,%xmm1
3546
vpxor %xmm10,%xmm2,%xmm2
3547
vmovdqu (%rcx),%xmm0
3548
vpxor %xmm0,%xmm1,%xmm1
3549
vpxor %xmm0,%xmm2,%xmm2
3550
vmovdqu 16(%rcx),%xmm0
3551
vaesdec %xmm0,%xmm1,%xmm1
3552
vaesdec %xmm0,%xmm2,%xmm2
3553
vmovdqu 32(%rcx),%xmm0
3554
vaesdec %xmm0,%xmm1,%xmm1
3555
vaesdec %xmm0,%xmm2,%xmm2
3556
vmovdqu 48(%rcx),%xmm0
3557
vaesdec %xmm0,%xmm1,%xmm1
3558
vaesdec %xmm0,%xmm2,%xmm2
3559
vmovdqu 64(%rcx),%xmm0
3560
vaesdec %xmm0,%xmm1,%xmm1
3561
vaesdec %xmm0,%xmm2,%xmm2
3562
vmovdqu 80(%rcx),%xmm0
3563
vaesdec %xmm0,%xmm1,%xmm1
3564
vaesdec %xmm0,%xmm2,%xmm2
3565
vmovdqu 96(%rcx),%xmm0
3566
vaesdec %xmm0,%xmm1,%xmm1
3567
vaesdec %xmm0,%xmm2,%xmm2
3568
vmovdqu 112(%rcx),%xmm0
3569
vaesdec %xmm0,%xmm1,%xmm1
3570
vaesdec %xmm0,%xmm2,%xmm2
3571
vmovdqu 128(%rcx),%xmm0
3572
vaesdec %xmm0,%xmm1,%xmm1
3573
vaesdec %xmm0,%xmm2,%xmm2
3574
vmovdqu 144(%rcx),%xmm0
3575
vaesdec %xmm0,%xmm1,%xmm1
3576
vaesdec %xmm0,%xmm2,%xmm2
3577
vmovdqu 160(%rcx),%xmm0
3578
vaesdeclast %xmm0,%xmm1,%xmm1
3579
vaesdeclast %xmm0,%xmm2,%xmm2
3580
vpxor %xmm9,%xmm1,%xmm1
3581
vpxor %xmm10,%xmm2,%xmm2
3582
vmovdqu %xmm1,(%rsi)
3583
addq $0x20,%rsi
3584
vmovdqa %xmm2,%xmm8
3585
jmp .L_done_amivrujEyduiFoi
3586
3587
.L_num_blocks_is_1_amivrujEyduiFoi:
3588
vmovdqa 0(%rsp),%xmm9
3589
movq 0(%rsp),%rax
3590
movq 8(%rsp),%rbx
3591
vmovdqu 0(%rdi),%xmm1
3592
addq $0x10,%rdi
3593
andq $0xf,%rdx
3594
je .L_done_1_amivrujEyduiFoi
3595
3596
.L_steal_cipher_1_amivrujEyduiFoi:
3597
xorq %r11,%r11
3598
shlq $1,%rax
3599
adcq %rbx,%rbx
3600
cmovcq %r10,%r11
3601
xorq %r11,%rax
3602
movq %rax,16(%rsp)
3603
movq %rbx,24(%rsp)
3604
vmovdqa64 %xmm9,%xmm10
3605
vmovdqa 16(%rsp),%xmm9
3606
vpxor %xmm9,%xmm1,%xmm1
3607
vmovdqu (%rcx),%xmm0
3608
vpxor %xmm0,%xmm1,%xmm1
3609
vmovdqu 16(%rcx),%xmm0
3610
vaesdec %xmm0,%xmm1,%xmm1
3611
vmovdqu 32(%rcx),%xmm0
3612
vaesdec %xmm0,%xmm1,%xmm1
3613
vmovdqu 48(%rcx),%xmm0
3614
vaesdec %xmm0,%xmm1,%xmm1
3615
vmovdqu 64(%rcx),%xmm0
3616
vaesdec %xmm0,%xmm1,%xmm1
3617
vmovdqu 80(%rcx),%xmm0
3618
vaesdec %xmm0,%xmm1,%xmm1
3619
vmovdqu 96(%rcx),%xmm0
3620
vaesdec %xmm0,%xmm1,%xmm1
3621
vmovdqu 112(%rcx),%xmm0
3622
vaesdec %xmm0,%xmm1,%xmm1
3623
vmovdqu 128(%rcx),%xmm0
3624
vaesdec %xmm0,%xmm1,%xmm1
3625
vmovdqu 144(%rcx),%xmm0
3626
vaesdec %xmm0,%xmm1,%xmm1
3627
vmovdqu 160(%rcx),%xmm0
3628
vaesdeclast %xmm0,%xmm1,%xmm1
3629
vpxor %xmm9,%xmm1,%xmm1
3630
addq $0x10,%rsi
3631
vmovdqa %xmm10,%xmm0
3632
vmovdqa %xmm1,%xmm8
3633
jmp .L_steal_cipher_amivrujEyduiFoi
3634
3635
.L_done_1_amivrujEyduiFoi:
3636
vpxor %xmm9,%xmm1,%xmm1
3637
vmovdqu (%rcx),%xmm0
3638
vpxor %xmm0,%xmm1,%xmm1
3639
vmovdqu 16(%rcx),%xmm0
3640
vaesdec %xmm0,%xmm1,%xmm1
3641
vmovdqu 32(%rcx),%xmm0
3642
vaesdec %xmm0,%xmm1,%xmm1
3643
vmovdqu 48(%rcx),%xmm0
3644
vaesdec %xmm0,%xmm1,%xmm1
3645
vmovdqu 64(%rcx),%xmm0
3646
vaesdec %xmm0,%xmm1,%xmm1
3647
vmovdqu 80(%rcx),%xmm0
3648
vaesdec %xmm0,%xmm1,%xmm1
3649
vmovdqu 96(%rcx),%xmm0
3650
vaesdec %xmm0,%xmm1,%xmm1
3651
vmovdqu 112(%rcx),%xmm0
3652
vaesdec %xmm0,%xmm1,%xmm1
3653
vmovdqu 128(%rcx),%xmm0
3654
vaesdec %xmm0,%xmm1,%xmm1
3655
vmovdqu 144(%rcx),%xmm0
3656
vaesdec %xmm0,%xmm1,%xmm1
3657
vmovdqu 160(%rcx),%xmm0
3658
vaesdeclast %xmm0,%xmm1,%xmm1
3659
vpxor %xmm9,%xmm1,%xmm1
3660
addq $0x10,%rsi
3661
vmovdqa %xmm1,%xmm8
3662
jmp .L_done_amivrujEyduiFoi
3663
.cfi_endproc
3664
.globl aesni_xts_256_encrypt_avx512
3665
.hidden aesni_xts_256_encrypt_avx512
3666
.type aesni_xts_256_encrypt_avx512,@function
3667
.align 32
3668
aesni_xts_256_encrypt_avx512:
3669
.cfi_startproc
3670
.byte 243,15,30,250
3671
pushq %rbp
3672
movq %rsp,%rbp
3673
subq $136,%rsp
3674
andq $0xffffffffffffffc0,%rsp
3675
movq %rbx,128(%rsp)
3676
movq $0x87,%r10
3677
vmovdqu (%r9),%xmm1
3678
vpxor (%r8),%xmm1,%xmm1
3679
vaesenc 16(%r8),%xmm1,%xmm1
3680
vaesenc 32(%r8),%xmm1,%xmm1
3681
vaesenc 48(%r8),%xmm1,%xmm1
3682
vaesenc 64(%r8),%xmm1,%xmm1
3683
vaesenc 80(%r8),%xmm1,%xmm1
3684
vaesenc 96(%r8),%xmm1,%xmm1
3685
vaesenc 112(%r8),%xmm1,%xmm1
3686
vaesenc 128(%r8),%xmm1,%xmm1
3687
vaesenc 144(%r8),%xmm1,%xmm1
3688
vaesenc 160(%r8),%xmm1,%xmm1
3689
vaesenc 176(%r8),%xmm1,%xmm1
3690
vaesenc 192(%r8),%xmm1,%xmm1
3691
vaesenc 208(%r8),%xmm1,%xmm1
3692
vaesenclast 224(%r8),%xmm1,%xmm1
3693
vmovdqa %xmm1,(%rsp)
3694
3695
cmpq $0x80,%rdx
3696
jl .L_less_than_128_bytes_wcpqaDvsGlbjGoe
3697
vpbroadcastq %r10,%zmm25
3698
cmpq $0x100,%rdx
3699
jge .L_start_by16_wcpqaDvsGlbjGoe
3700
cmpq $0x80,%rdx
3701
jge .L_start_by8_wcpqaDvsGlbjGoe
3702
3703
.L_do_n_blocks_wcpqaDvsGlbjGoe:
3704
cmpq $0x0,%rdx
3705
je .L_ret_wcpqaDvsGlbjGoe
3706
cmpq $0x70,%rdx
3707
jge .L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe
3708
cmpq $0x60,%rdx
3709
jge .L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe
3710
cmpq $0x50,%rdx
3711
jge .L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe
3712
cmpq $0x40,%rdx
3713
jge .L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe
3714
cmpq $0x30,%rdx
3715
jge .L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe
3716
cmpq $0x20,%rdx
3717
jge .L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe
3718
cmpq $0x10,%rdx
3719
jge .L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe
3720
vmovdqa %xmm0,%xmm8
3721
vmovdqa %xmm9,%xmm0
3722
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
3723
3724
.L_remaining_num_blocks_is_7_wcpqaDvsGlbjGoe:
3725
movq $0x0000ffffffffffff,%r8
3726
kmovq %r8,%k1
3727
vmovdqu8 (%rdi),%zmm1
3728
vmovdqu8 64(%rdi),%zmm2{%k1}
3729
addq $0x70,%rdi
3730
vbroadcasti32x4 (%rcx),%zmm0
3731
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
3732
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
3733
vbroadcasti32x4 16(%rcx),%zmm0
3734
vaesenc %zmm0,%zmm1,%zmm1
3735
vaesenc %zmm0,%zmm2,%zmm2
3736
3737
3738
vbroadcasti32x4 32(%rcx),%zmm0
3739
vaesenc %zmm0,%zmm1,%zmm1
3740
vaesenc %zmm0,%zmm2,%zmm2
3741
3742
3743
vbroadcasti32x4 48(%rcx),%zmm0
3744
vaesenc %zmm0,%zmm1,%zmm1
3745
vaesenc %zmm0,%zmm2,%zmm2
3746
3747
vbroadcasti32x4 64(%rcx),%zmm0
3748
vaesenc %zmm0,%zmm1,%zmm1
3749
vaesenc %zmm0,%zmm2,%zmm2
3750
3751
3752
vbroadcasti32x4 80(%rcx),%zmm0
3753
vaesenc %zmm0,%zmm1,%zmm1
3754
vaesenc %zmm0,%zmm2,%zmm2
3755
3756
3757
vbroadcasti32x4 96(%rcx),%zmm0
3758
vaesenc %zmm0,%zmm1,%zmm1
3759
vaesenc %zmm0,%zmm2,%zmm2
3760
3761
3762
vbroadcasti32x4 112(%rcx),%zmm0
3763
vaesenc %zmm0,%zmm1,%zmm1
3764
vaesenc %zmm0,%zmm2,%zmm2
3765
3766
3767
vbroadcasti32x4 128(%rcx),%zmm0
3768
vaesenc %zmm0,%zmm1,%zmm1
3769
vaesenc %zmm0,%zmm2,%zmm2
3770
3771
3772
vbroadcasti32x4 144(%rcx),%zmm0
3773
vaesenc %zmm0,%zmm1,%zmm1
3774
vaesenc %zmm0,%zmm2,%zmm2
3775
3776
vbroadcasti32x4 160(%rcx),%zmm0
3777
vaesenc %zmm0,%zmm1,%zmm1
3778
vaesenc %zmm0,%zmm2,%zmm2
3779
3780
3781
vbroadcasti32x4 176(%rcx),%zmm0
3782
vaesenc %zmm0,%zmm1,%zmm1
3783
vaesenc %zmm0,%zmm2,%zmm2
3784
3785
3786
vbroadcasti32x4 192(%rcx),%zmm0
3787
vaesenc %zmm0,%zmm1,%zmm1
3788
vaesenc %zmm0,%zmm2,%zmm2
3789
3790
3791
vbroadcasti32x4 208(%rcx),%zmm0
3792
vaesenc %zmm0,%zmm1,%zmm1
3793
vaesenc %zmm0,%zmm2,%zmm2
3794
3795
3796
vbroadcasti32x4 224(%rcx),%zmm0
3797
vaesenclast %zmm0,%zmm1,%zmm1
3798
vaesenclast %zmm0,%zmm2,%zmm2
3799
vpxorq %zmm9,%zmm1,%zmm1
3800
vpxorq %zmm10,%zmm2,%zmm2
3801
vmovdqu8 %zmm1,(%rsi)
3802
vmovdqu8 %zmm2,64(%rsi){%k1}
3803
addq $0x70,%rsi
3804
vextracti32x4 $0x2,%zmm2,%xmm8
3805
vextracti32x4 $0x3,%zmm10,%xmm0
3806
andq $0xf,%rdx
3807
je .L_ret_wcpqaDvsGlbjGoe
3808
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
3809
3810
.L_remaining_num_blocks_is_6_wcpqaDvsGlbjGoe:
3811
vmovdqu8 (%rdi),%zmm1
3812
vmovdqu8 64(%rdi),%ymm2
3813
addq $0x60,%rdi
3814
vbroadcasti32x4 (%rcx),%zmm0
3815
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
3816
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
3817
vbroadcasti32x4 16(%rcx),%zmm0
3818
vaesenc %zmm0,%zmm1,%zmm1
3819
vaesenc %zmm0,%zmm2,%zmm2
3820
3821
3822
vbroadcasti32x4 32(%rcx),%zmm0
3823
vaesenc %zmm0,%zmm1,%zmm1
3824
vaesenc %zmm0,%zmm2,%zmm2
3825
3826
3827
vbroadcasti32x4 48(%rcx),%zmm0
3828
vaesenc %zmm0,%zmm1,%zmm1
3829
vaesenc %zmm0,%zmm2,%zmm2
3830
3831
vbroadcasti32x4 64(%rcx),%zmm0
3832
vaesenc %zmm0,%zmm1,%zmm1
3833
vaesenc %zmm0,%zmm2,%zmm2
3834
3835
3836
vbroadcasti32x4 80(%rcx),%zmm0
3837
vaesenc %zmm0,%zmm1,%zmm1
3838
vaesenc %zmm0,%zmm2,%zmm2
3839
3840
3841
vbroadcasti32x4 96(%rcx),%zmm0
3842
vaesenc %zmm0,%zmm1,%zmm1
3843
vaesenc %zmm0,%zmm2,%zmm2
3844
3845
3846
vbroadcasti32x4 112(%rcx),%zmm0
3847
vaesenc %zmm0,%zmm1,%zmm1
3848
vaesenc %zmm0,%zmm2,%zmm2
3849
3850
3851
vbroadcasti32x4 128(%rcx),%zmm0
3852
vaesenc %zmm0,%zmm1,%zmm1
3853
vaesenc %zmm0,%zmm2,%zmm2
3854
3855
3856
vbroadcasti32x4 144(%rcx),%zmm0
3857
vaesenc %zmm0,%zmm1,%zmm1
3858
vaesenc %zmm0,%zmm2,%zmm2
3859
3860
vbroadcasti32x4 160(%rcx),%zmm0
3861
vaesenc %zmm0,%zmm1,%zmm1
3862
vaesenc %zmm0,%zmm2,%zmm2
3863
3864
3865
vbroadcasti32x4 176(%rcx),%zmm0
3866
vaesenc %zmm0,%zmm1,%zmm1
3867
vaesenc %zmm0,%zmm2,%zmm2
3868
3869
3870
vbroadcasti32x4 192(%rcx),%zmm0
3871
vaesenc %zmm0,%zmm1,%zmm1
3872
vaesenc %zmm0,%zmm2,%zmm2
3873
3874
3875
vbroadcasti32x4 208(%rcx),%zmm0
3876
vaesenc %zmm0,%zmm1,%zmm1
3877
vaesenc %zmm0,%zmm2,%zmm2
3878
3879
3880
vbroadcasti32x4 224(%rcx),%zmm0
3881
vaesenclast %zmm0,%zmm1,%zmm1
3882
vaesenclast %zmm0,%zmm2,%zmm2
3883
vpxorq %zmm9,%zmm1,%zmm1
3884
vpxorq %zmm10,%zmm2,%zmm2
3885
vmovdqu8 %zmm1,(%rsi)
3886
vmovdqu8 %ymm2,64(%rsi)
3887
addq $0x60,%rsi
3888
vextracti32x4 $0x1,%zmm2,%xmm8
3889
vextracti32x4 $0x2,%zmm10,%xmm0
3890
andq $0xf,%rdx
3891
je .L_ret_wcpqaDvsGlbjGoe
3892
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
3893
3894
.L_remaining_num_blocks_is_5_wcpqaDvsGlbjGoe:
3895
vmovdqu8 (%rdi),%zmm1
3896
vmovdqu 64(%rdi),%xmm2
3897
addq $0x50,%rdi
3898
vbroadcasti32x4 (%rcx),%zmm0
3899
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
3900
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
3901
vbroadcasti32x4 16(%rcx),%zmm0
3902
vaesenc %zmm0,%zmm1,%zmm1
3903
vaesenc %zmm0,%zmm2,%zmm2
3904
3905
3906
vbroadcasti32x4 32(%rcx),%zmm0
3907
vaesenc %zmm0,%zmm1,%zmm1
3908
vaesenc %zmm0,%zmm2,%zmm2
3909
3910
3911
vbroadcasti32x4 48(%rcx),%zmm0
3912
vaesenc %zmm0,%zmm1,%zmm1
3913
vaesenc %zmm0,%zmm2,%zmm2
3914
3915
vbroadcasti32x4 64(%rcx),%zmm0
3916
vaesenc %zmm0,%zmm1,%zmm1
3917
vaesenc %zmm0,%zmm2,%zmm2
3918
3919
3920
vbroadcasti32x4 80(%rcx),%zmm0
3921
vaesenc %zmm0,%zmm1,%zmm1
3922
vaesenc %zmm0,%zmm2,%zmm2
3923
3924
3925
vbroadcasti32x4 96(%rcx),%zmm0
3926
vaesenc %zmm0,%zmm1,%zmm1
3927
vaesenc %zmm0,%zmm2,%zmm2
3928
3929
3930
vbroadcasti32x4 112(%rcx),%zmm0
3931
vaesenc %zmm0,%zmm1,%zmm1
3932
vaesenc %zmm0,%zmm2,%zmm2
3933
3934
3935
vbroadcasti32x4 128(%rcx),%zmm0
3936
vaesenc %zmm0,%zmm1,%zmm1
3937
vaesenc %zmm0,%zmm2,%zmm2
3938
3939
3940
vbroadcasti32x4 144(%rcx),%zmm0
3941
vaesenc %zmm0,%zmm1,%zmm1
3942
vaesenc %zmm0,%zmm2,%zmm2
3943
3944
vbroadcasti32x4 160(%rcx),%zmm0
3945
vaesenc %zmm0,%zmm1,%zmm1
3946
vaesenc %zmm0,%zmm2,%zmm2
3947
3948
3949
vbroadcasti32x4 176(%rcx),%zmm0
3950
vaesenc %zmm0,%zmm1,%zmm1
3951
vaesenc %zmm0,%zmm2,%zmm2
3952
3953
3954
vbroadcasti32x4 192(%rcx),%zmm0
3955
vaesenc %zmm0,%zmm1,%zmm1
3956
vaesenc %zmm0,%zmm2,%zmm2
3957
3958
3959
vbroadcasti32x4 208(%rcx),%zmm0
3960
vaesenc %zmm0,%zmm1,%zmm1
3961
vaesenc %zmm0,%zmm2,%zmm2
3962
3963
3964
vbroadcasti32x4 224(%rcx),%zmm0
3965
vaesenclast %zmm0,%zmm1,%zmm1
3966
vaesenclast %zmm0,%zmm2,%zmm2
3967
vpxorq %zmm9,%zmm1,%zmm1
3968
vpxorq %zmm10,%zmm2,%zmm2
3969
vmovdqu8 %zmm1,(%rsi)
3970
vmovdqu %xmm2,64(%rsi)
3971
addq $0x50,%rsi
3972
vmovdqa %xmm2,%xmm8
3973
vextracti32x4 $0x1,%zmm10,%xmm0
3974
andq $0xf,%rdx
3975
je .L_ret_wcpqaDvsGlbjGoe
3976
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
3977
3978
.L_remaining_num_blocks_is_4_wcpqaDvsGlbjGoe:
3979
vmovdqu8 (%rdi),%zmm1
3980
addq $0x40,%rdi
3981
vbroadcasti32x4 (%rcx),%zmm0
3982
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
3983
vbroadcasti32x4 16(%rcx),%zmm0
3984
vaesenc %zmm0,%zmm1,%zmm1
3985
vbroadcasti32x4 32(%rcx),%zmm0
3986
vaesenc %zmm0,%zmm1,%zmm1
3987
vbroadcasti32x4 48(%rcx),%zmm0
3988
vaesenc %zmm0,%zmm1,%zmm1
3989
vbroadcasti32x4 64(%rcx),%zmm0
3990
vaesenc %zmm0,%zmm1,%zmm1
3991
vbroadcasti32x4 80(%rcx),%zmm0
3992
vaesenc %zmm0,%zmm1,%zmm1
3993
vbroadcasti32x4 96(%rcx),%zmm0
3994
vaesenc %zmm0,%zmm1,%zmm1
3995
vbroadcasti32x4 112(%rcx),%zmm0
3996
vaesenc %zmm0,%zmm1,%zmm1
3997
vbroadcasti32x4 128(%rcx),%zmm0
3998
vaesenc %zmm0,%zmm1,%zmm1
3999
vbroadcasti32x4 144(%rcx),%zmm0
4000
vaesenc %zmm0,%zmm1,%zmm1
4001
vbroadcasti32x4 160(%rcx),%zmm0
4002
vaesenc %zmm0,%zmm1,%zmm1
4003
vbroadcasti32x4 176(%rcx),%zmm0
4004
vaesenc %zmm0,%zmm1,%zmm1
4005
vbroadcasti32x4 192(%rcx),%zmm0
4006
vaesenc %zmm0,%zmm1,%zmm1
4007
vbroadcasti32x4 208(%rcx),%zmm0
4008
vaesenc %zmm0,%zmm1,%zmm1
4009
vbroadcasti32x4 224(%rcx),%zmm0
4010
vaesenclast %zmm0,%zmm1,%zmm1
4011
vpxorq %zmm9,%zmm1,%zmm1
4012
vmovdqu8 %zmm1,(%rsi)
4013
addq $0x40,%rsi
4014
vextracti32x4 $0x3,%zmm1,%xmm8
4015
vmovdqa64 %xmm10,%xmm0
4016
andq $0xf,%rdx
4017
je .L_ret_wcpqaDvsGlbjGoe
4018
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4019
.L_remaining_num_blocks_is_3_wcpqaDvsGlbjGoe:
4020
movq $-1,%r8
4021
shrq $0x10,%r8
4022
kmovq %r8,%k1
4023
vmovdqu8 (%rdi),%zmm1{%k1}
4024
addq $0x30,%rdi
4025
vbroadcasti32x4 (%rcx),%zmm0
4026
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
4027
vbroadcasti32x4 16(%rcx),%zmm0
4028
vaesenc %zmm0,%zmm1,%zmm1
4029
vbroadcasti32x4 32(%rcx),%zmm0
4030
vaesenc %zmm0,%zmm1,%zmm1
4031
vbroadcasti32x4 48(%rcx),%zmm0
4032
vaesenc %zmm0,%zmm1,%zmm1
4033
vbroadcasti32x4 64(%rcx),%zmm0
4034
vaesenc %zmm0,%zmm1,%zmm1
4035
vbroadcasti32x4 80(%rcx),%zmm0
4036
vaesenc %zmm0,%zmm1,%zmm1
4037
vbroadcasti32x4 96(%rcx),%zmm0
4038
vaesenc %zmm0,%zmm1,%zmm1
4039
vbroadcasti32x4 112(%rcx),%zmm0
4040
vaesenc %zmm0,%zmm1,%zmm1
4041
vbroadcasti32x4 128(%rcx),%zmm0
4042
vaesenc %zmm0,%zmm1,%zmm1
4043
vbroadcasti32x4 144(%rcx),%zmm0
4044
vaesenc %zmm0,%zmm1,%zmm1
4045
vbroadcasti32x4 160(%rcx),%zmm0
4046
vaesenc %zmm0,%zmm1,%zmm1
4047
vbroadcasti32x4 176(%rcx),%zmm0
4048
vaesenc %zmm0,%zmm1,%zmm1
4049
vbroadcasti32x4 192(%rcx),%zmm0
4050
vaesenc %zmm0,%zmm1,%zmm1
4051
vbroadcasti32x4 208(%rcx),%zmm0
4052
vaesenc %zmm0,%zmm1,%zmm1
4053
vbroadcasti32x4 224(%rcx),%zmm0
4054
vaesenclast %zmm0,%zmm1,%zmm1
4055
vpxorq %zmm9,%zmm1,%zmm1
4056
vmovdqu8 %zmm1,(%rsi){%k1}
4057
addq $0x30,%rsi
4058
vextracti32x4 $0x2,%zmm1,%xmm8
4059
vextracti32x4 $0x3,%zmm9,%xmm0
4060
andq $0xf,%rdx
4061
je .L_ret_wcpqaDvsGlbjGoe
4062
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4063
.L_remaining_num_blocks_is_2_wcpqaDvsGlbjGoe:
4064
vmovdqu8 (%rdi),%ymm1
4065
addq $0x20,%rdi
4066
vbroadcasti32x4 (%rcx),%ymm0
4067
vpternlogq $0x96,%ymm0,%ymm9,%ymm1
4068
vbroadcasti32x4 16(%rcx),%ymm0
4069
vaesenc %ymm0,%ymm1,%ymm1
4070
vbroadcasti32x4 32(%rcx),%ymm0
4071
vaesenc %ymm0,%ymm1,%ymm1
4072
vbroadcasti32x4 48(%rcx),%ymm0
4073
vaesenc %ymm0,%ymm1,%ymm1
4074
vbroadcasti32x4 64(%rcx),%ymm0
4075
vaesenc %ymm0,%ymm1,%ymm1
4076
vbroadcasti32x4 80(%rcx),%ymm0
4077
vaesenc %ymm0,%ymm1,%ymm1
4078
vbroadcasti32x4 96(%rcx),%ymm0
4079
vaesenc %ymm0,%ymm1,%ymm1
4080
vbroadcasti32x4 112(%rcx),%ymm0
4081
vaesenc %ymm0,%ymm1,%ymm1
4082
vbroadcasti32x4 128(%rcx),%ymm0
4083
vaesenc %ymm0,%ymm1,%ymm1
4084
vbroadcasti32x4 144(%rcx),%ymm0
4085
vaesenc %ymm0,%ymm1,%ymm1
4086
vbroadcasti32x4 160(%rcx),%ymm0
4087
vaesenc %ymm0,%ymm1,%ymm1
4088
vbroadcasti32x4 176(%rcx),%ymm0
4089
vaesenc %ymm0,%ymm1,%ymm1
4090
vbroadcasti32x4 192(%rcx),%ymm0
4091
vaesenc %ymm0,%ymm1,%ymm1
4092
vbroadcasti32x4 208(%rcx),%ymm0
4093
vaesenc %ymm0,%ymm1,%ymm1
4094
vbroadcasti32x4 224(%rcx),%ymm0
4095
vaesenclast %ymm0,%ymm1,%ymm1
4096
vpxorq %ymm9,%ymm1,%ymm1
4097
vmovdqu %ymm1,(%rsi)
4098
addq $0x20,%rsi
4099
vextracti32x4 $0x1,%zmm1,%xmm8
4100
vextracti32x4 $0x2,%zmm9,%xmm0
4101
andq $0xf,%rdx
4102
je .L_ret_wcpqaDvsGlbjGoe
4103
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4104
.L_remaining_num_blocks_is_1_wcpqaDvsGlbjGoe:
4105
vmovdqu (%rdi),%xmm1
4106
addq $0x10,%rdi
4107
vpxor %xmm9,%xmm1,%xmm1
4108
vpxor (%rcx),%xmm1,%xmm1
4109
vaesenc 16(%rcx),%xmm1,%xmm1
4110
vaesenc 32(%rcx),%xmm1,%xmm1
4111
vaesenc 48(%rcx),%xmm1,%xmm1
4112
vaesenc 64(%rcx),%xmm1,%xmm1
4113
vaesenc 80(%rcx),%xmm1,%xmm1
4114
vaesenc 96(%rcx),%xmm1,%xmm1
4115
vaesenc 112(%rcx),%xmm1,%xmm1
4116
vaesenc 128(%rcx),%xmm1,%xmm1
4117
vaesenc 144(%rcx),%xmm1,%xmm1
4118
vaesenc 160(%rcx),%xmm1,%xmm1
4119
vaesenc 176(%rcx),%xmm1,%xmm1
4120
vaesenc 192(%rcx),%xmm1,%xmm1
4121
vaesenc 208(%rcx),%xmm1,%xmm1
4122
vaesenclast 224(%rcx),%xmm1,%xmm1
4123
vpxor %xmm9,%xmm1,%xmm1
4124
vmovdqu %xmm1,(%rsi)
4125
addq $0x10,%rsi
4126
vmovdqa %xmm1,%xmm8
4127
vextracti32x4 $0x1,%zmm9,%xmm0
4128
andq $0xf,%rdx
4129
je .L_ret_wcpqaDvsGlbjGoe
4130
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4131
4132
4133
.L_start_by16_wcpqaDvsGlbjGoe:
4134
vbroadcasti32x4 (%rsp),%zmm0
4135
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
4136
movq $0xaa,%r8
4137
kmovq %r8,%k2
4138
vpshufb %zmm8,%zmm0,%zmm1
4139
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4140
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4141
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
4142
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4143
vpxord %zmm4,%zmm3,%zmm9
4144
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
4145
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
4146
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
4147
vpxorq %zmm6,%zmm5,%zmm5{%k2}
4148
vpxord %zmm5,%zmm7,%zmm10
4149
vpsrldq $0xf,%zmm9,%zmm13
4150
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
4151
vpslldq $0x1,%zmm9,%zmm11
4152
vpxord %zmm14,%zmm11,%zmm11
4153
vpsrldq $0xf,%zmm10,%zmm15
4154
vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16
4155
vpslldq $0x1,%zmm10,%zmm12
4156
vpxord %zmm16,%zmm12,%zmm12
4157
4158
.L_main_loop_run_16_wcpqaDvsGlbjGoe:
4159
vmovdqu8 (%rdi),%zmm1
4160
vmovdqu8 64(%rdi),%zmm2
4161
vmovdqu8 128(%rdi),%zmm3
4162
vmovdqu8 192(%rdi),%zmm4
4163
addq $0x100,%rdi
4164
vpxorq %zmm9,%zmm1,%zmm1
4165
vpxorq %zmm10,%zmm2,%zmm2
4166
vpxorq %zmm11,%zmm3,%zmm3
4167
vpxorq %zmm12,%zmm4,%zmm4
4168
vbroadcasti32x4 (%rcx),%zmm0
4169
vpxorq %zmm0,%zmm1,%zmm1
4170
vpxorq %zmm0,%zmm2,%zmm2
4171
vpxorq %zmm0,%zmm3,%zmm3
4172
vpxorq %zmm0,%zmm4,%zmm4
4173
vpsrldq $0xf,%zmm11,%zmm13
4174
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
4175
vpslldq $0x1,%zmm11,%zmm15
4176
vpxord %zmm14,%zmm15,%zmm15
4177
vbroadcasti32x4 16(%rcx),%zmm0
4178
vaesenc %zmm0,%zmm1,%zmm1
4179
vaesenc %zmm0,%zmm2,%zmm2
4180
vaesenc %zmm0,%zmm3,%zmm3
4181
vaesenc %zmm0,%zmm4,%zmm4
4182
vbroadcasti32x4 32(%rcx),%zmm0
4183
vaesenc %zmm0,%zmm1,%zmm1
4184
vaesenc %zmm0,%zmm2,%zmm2
4185
vaesenc %zmm0,%zmm3,%zmm3
4186
vaesenc %zmm0,%zmm4,%zmm4
4187
vbroadcasti32x4 48(%rcx),%zmm0
4188
vaesenc %zmm0,%zmm1,%zmm1
4189
vaesenc %zmm0,%zmm2,%zmm2
4190
vaesenc %zmm0,%zmm3,%zmm3
4191
vaesenc %zmm0,%zmm4,%zmm4
4192
vpsrldq $0xf,%zmm12,%zmm13
4193
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
4194
vpslldq $0x1,%zmm12,%zmm16
4195
vpxord %zmm14,%zmm16,%zmm16
4196
vbroadcasti32x4 64(%rcx),%zmm0
4197
vaesenc %zmm0,%zmm1,%zmm1
4198
vaesenc %zmm0,%zmm2,%zmm2
4199
vaesenc %zmm0,%zmm3,%zmm3
4200
vaesenc %zmm0,%zmm4,%zmm4
4201
vbroadcasti32x4 80(%rcx),%zmm0
4202
vaesenc %zmm0,%zmm1,%zmm1
4203
vaesenc %zmm0,%zmm2,%zmm2
4204
vaesenc %zmm0,%zmm3,%zmm3
4205
vaesenc %zmm0,%zmm4,%zmm4
4206
vbroadcasti32x4 96(%rcx),%zmm0
4207
vaesenc %zmm0,%zmm1,%zmm1
4208
vaesenc %zmm0,%zmm2,%zmm2
4209
vaesenc %zmm0,%zmm3,%zmm3
4210
vaesenc %zmm0,%zmm4,%zmm4
4211
vpsrldq $0xf,%zmm15,%zmm13
4212
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
4213
vpslldq $0x1,%zmm15,%zmm17
4214
vpxord %zmm14,%zmm17,%zmm17
4215
vbroadcasti32x4 112(%rcx),%zmm0
4216
vaesenc %zmm0,%zmm1,%zmm1
4217
vaesenc %zmm0,%zmm2,%zmm2
4218
vaesenc %zmm0,%zmm3,%zmm3
4219
vaesenc %zmm0,%zmm4,%zmm4
4220
vbroadcasti32x4 128(%rcx),%zmm0
4221
vaesenc %zmm0,%zmm1,%zmm1
4222
vaesenc %zmm0,%zmm2,%zmm2
4223
vaesenc %zmm0,%zmm3,%zmm3
4224
vaesenc %zmm0,%zmm4,%zmm4
4225
vbroadcasti32x4 144(%rcx),%zmm0
4226
vaesenc %zmm0,%zmm1,%zmm1
4227
vaesenc %zmm0,%zmm2,%zmm2
4228
vaesenc %zmm0,%zmm3,%zmm3
4229
vaesenc %zmm0,%zmm4,%zmm4
4230
vpsrldq $0xf,%zmm16,%zmm13
4231
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
4232
vpslldq $0x1,%zmm16,%zmm18
4233
vpxord %zmm14,%zmm18,%zmm18
4234
vbroadcasti32x4 160(%rcx),%zmm0
4235
vaesenc %zmm0,%zmm1,%zmm1
4236
vaesenc %zmm0,%zmm2,%zmm2
4237
vaesenc %zmm0,%zmm3,%zmm3
4238
vaesenc %zmm0,%zmm4,%zmm4
4239
vbroadcasti32x4 176(%rcx),%zmm0
4240
vaesenc %zmm0,%zmm1,%zmm1
4241
vaesenc %zmm0,%zmm2,%zmm2
4242
vaesenc %zmm0,%zmm3,%zmm3
4243
vaesenc %zmm0,%zmm4,%zmm4
4244
vbroadcasti32x4 192(%rcx),%zmm0
4245
vaesenc %zmm0,%zmm1,%zmm1
4246
vaesenc %zmm0,%zmm2,%zmm2
4247
vaesenc %zmm0,%zmm3,%zmm3
4248
vaesenc %zmm0,%zmm4,%zmm4
4249
vbroadcasti32x4 208(%rcx),%zmm0
4250
vaesenc %zmm0,%zmm1,%zmm1
4251
vaesenc %zmm0,%zmm2,%zmm2
4252
vaesenc %zmm0,%zmm3,%zmm3
4253
vaesenc %zmm0,%zmm4,%zmm4
4254
vbroadcasti32x4 224(%rcx),%zmm0
4255
vaesenclast %zmm0,%zmm1,%zmm1
4256
vaesenclast %zmm0,%zmm2,%zmm2
4257
vaesenclast %zmm0,%zmm3,%zmm3
4258
vaesenclast %zmm0,%zmm4,%zmm4
4259
vpxorq %zmm9,%zmm1,%zmm1
4260
vpxorq %zmm10,%zmm2,%zmm2
4261
vpxorq %zmm11,%zmm3,%zmm3
4262
vpxorq %zmm12,%zmm4,%zmm4
4263
4264
vmovdqa32 %zmm15,%zmm9
4265
vmovdqa32 %zmm16,%zmm10
4266
vmovdqa32 %zmm17,%zmm11
4267
vmovdqa32 %zmm18,%zmm12
4268
vmovdqu8 %zmm1,(%rsi)
4269
vmovdqu8 %zmm2,64(%rsi)
4270
vmovdqu8 %zmm3,128(%rsi)
4271
vmovdqu8 %zmm4,192(%rsi)
4272
addq $0x100,%rsi
4273
subq $0x100,%rdx
4274
cmpq $0x100,%rdx
4275
jae .L_main_loop_run_16_wcpqaDvsGlbjGoe
4276
cmpq $0x80,%rdx
4277
jae .L_main_loop_run_8_wcpqaDvsGlbjGoe
4278
vextracti32x4 $0x3,%zmm4,%xmm0
4279
jmp .L_do_n_blocks_wcpqaDvsGlbjGoe
4280
4281
.L_start_by8_wcpqaDvsGlbjGoe:
4282
vbroadcasti32x4 (%rsp),%zmm0
4283
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
4284
movq $0xaa,%r8
4285
kmovq %r8,%k2
4286
vpshufb %zmm8,%zmm0,%zmm1
4287
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4288
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4289
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
4290
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4291
vpxord %zmm4,%zmm3,%zmm9
4292
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
4293
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
4294
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
4295
vpxorq %zmm6,%zmm5,%zmm5{%k2}
4296
vpxord %zmm5,%zmm7,%zmm10
4297
4298
.L_main_loop_run_8_wcpqaDvsGlbjGoe:
4299
vmovdqu8 (%rdi),%zmm1
4300
vmovdqu8 64(%rdi),%zmm2
4301
addq $0x80,%rdi
4302
vbroadcasti32x4 (%rcx),%zmm0
4303
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
4304
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
4305
vpsrldq $0xf,%zmm9,%zmm13
4306
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
4307
vpslldq $0x1,%zmm9,%zmm15
4308
vpxord %zmm14,%zmm15,%zmm15
4309
vbroadcasti32x4 16(%rcx),%zmm0
4310
vaesenc %zmm0,%zmm1,%zmm1
4311
vaesenc %zmm0,%zmm2,%zmm2
4312
4313
4314
vbroadcasti32x4 32(%rcx),%zmm0
4315
vaesenc %zmm0,%zmm1,%zmm1
4316
vaesenc %zmm0,%zmm2,%zmm2
4317
4318
4319
vbroadcasti32x4 48(%rcx),%zmm0
4320
vaesenc %zmm0,%zmm1,%zmm1
4321
vaesenc %zmm0,%zmm2,%zmm2
4322
vpsrldq $0xf,%zmm10,%zmm13
4323
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
4324
vpslldq $0x1,%zmm10,%zmm16
4325
vpxord %zmm14,%zmm16,%zmm16
4326
4327
vbroadcasti32x4 64(%rcx),%zmm0
4328
vaesenc %zmm0,%zmm1,%zmm1
4329
vaesenc %zmm0,%zmm2,%zmm2
4330
4331
4332
vbroadcasti32x4 80(%rcx),%zmm0
4333
vaesenc %zmm0,%zmm1,%zmm1
4334
vaesenc %zmm0,%zmm2,%zmm2
4335
4336
4337
vbroadcasti32x4 96(%rcx),%zmm0
4338
vaesenc %zmm0,%zmm1,%zmm1
4339
vaesenc %zmm0,%zmm2,%zmm2
4340
4341
4342
vbroadcasti32x4 112(%rcx),%zmm0
4343
vaesenc %zmm0,%zmm1,%zmm1
4344
vaesenc %zmm0,%zmm2,%zmm2
4345
4346
4347
vbroadcasti32x4 128(%rcx),%zmm0
4348
vaesenc %zmm0,%zmm1,%zmm1
4349
vaesenc %zmm0,%zmm2,%zmm2
4350
4351
4352
vbroadcasti32x4 144(%rcx),%zmm0
4353
vaesenc %zmm0,%zmm1,%zmm1
4354
vaesenc %zmm0,%zmm2,%zmm2
4355
4356
vbroadcasti32x4 160(%rcx),%zmm0
4357
vaesenc %zmm0,%zmm1,%zmm1
4358
vaesenc %zmm0,%zmm2,%zmm2
4359
4360
4361
vbroadcasti32x4 176(%rcx),%zmm0
4362
vaesenc %zmm0,%zmm1,%zmm1
4363
vaesenc %zmm0,%zmm2,%zmm2
4364
4365
4366
vbroadcasti32x4 192(%rcx),%zmm0
4367
vaesenc %zmm0,%zmm1,%zmm1
4368
vaesenc %zmm0,%zmm2,%zmm2
4369
4370
4371
vbroadcasti32x4 208(%rcx),%zmm0
4372
vaesenc %zmm0,%zmm1,%zmm1
4373
vaesenc %zmm0,%zmm2,%zmm2
4374
4375
4376
vbroadcasti32x4 224(%rcx),%zmm0
4377
vaesenclast %zmm0,%zmm1,%zmm1
4378
vaesenclast %zmm0,%zmm2,%zmm2
4379
vpxorq %zmm9,%zmm1,%zmm1
4380
vpxorq %zmm10,%zmm2,%zmm2
4381
vmovdqa32 %zmm15,%zmm9
4382
vmovdqa32 %zmm16,%zmm10
4383
vmovdqu8 %zmm1,(%rsi)
4384
vmovdqu8 %zmm2,64(%rsi)
4385
addq $0x80,%rsi
4386
subq $0x80,%rdx
4387
cmpq $0x80,%rdx
4388
jae .L_main_loop_run_8_wcpqaDvsGlbjGoe
4389
vextracti32x4 $0x3,%zmm2,%xmm0
4390
jmp .L_do_n_blocks_wcpqaDvsGlbjGoe
4391
4392
.L_steal_cipher_wcpqaDvsGlbjGoe:
4393
vmovdqa %xmm8,%xmm2
4394
leaq vpshufb_shf_table(%rip),%rax
4395
vmovdqu (%rax,%rdx,1),%xmm10
4396
vpshufb %xmm10,%xmm8,%xmm8
4397
vmovdqu -16(%rdi,%rdx,1),%xmm3
4398
vmovdqu %xmm8,-16(%rsi,%rdx,1)
4399
leaq vpshufb_shf_table(%rip),%rax
4400
addq $16,%rax
4401
subq %rdx,%rax
4402
vmovdqu (%rax),%xmm10
4403
vpxor mask1(%rip),%xmm10,%xmm10
4404
vpshufb %xmm10,%xmm3,%xmm3
4405
vpblendvb %xmm10,%xmm2,%xmm3,%xmm3
4406
vpxor %xmm0,%xmm3,%xmm8
4407
vpxor (%rcx),%xmm8,%xmm8
4408
vaesenc 16(%rcx),%xmm8,%xmm8
4409
vaesenc 32(%rcx),%xmm8,%xmm8
4410
vaesenc 48(%rcx),%xmm8,%xmm8
4411
vaesenc 64(%rcx),%xmm8,%xmm8
4412
vaesenc 80(%rcx),%xmm8,%xmm8
4413
vaesenc 96(%rcx),%xmm8,%xmm8
4414
vaesenc 112(%rcx),%xmm8,%xmm8
4415
vaesenc 128(%rcx),%xmm8,%xmm8
4416
vaesenc 144(%rcx),%xmm8,%xmm8
4417
vaesenc 160(%rcx),%xmm8,%xmm8
4418
vaesenc 176(%rcx),%xmm8,%xmm8
4419
vaesenc 192(%rcx),%xmm8,%xmm8
4420
vaesenc 208(%rcx),%xmm8,%xmm8
4421
vaesenclast 224(%rcx),%xmm8,%xmm8
4422
vpxor %xmm0,%xmm8,%xmm8
4423
vmovdqu %xmm8,-16(%rsi)
4424
.L_ret_wcpqaDvsGlbjGoe:
4425
movq 128(%rsp),%rbx
4426
xorq %r8,%r8
4427
movq %r8,128(%rsp)
4428
4429
vpxorq %zmm0,%zmm0,%zmm0
4430
movq %rbp,%rsp
4431
popq %rbp
4432
vzeroupper
4433
.byte 0xf3,0xc3
4434
4435
.L_less_than_128_bytes_wcpqaDvsGlbjGoe:
4436
vpbroadcastq %r10,%zmm25
4437
cmpq $0x10,%rdx
4438
jb .L_ret_wcpqaDvsGlbjGoe
4439
vbroadcasti32x4 (%rsp),%zmm0
4440
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
4441
movl $0xaa,%r8d
4442
kmovq %r8,%k2
4443
movq %rdx,%r8
4444
andq $0x70,%r8
4445
cmpq $0x60,%r8
4446
je .L_num_blocks_is_6_wcpqaDvsGlbjGoe
4447
cmpq $0x50,%r8
4448
je .L_num_blocks_is_5_wcpqaDvsGlbjGoe
4449
cmpq $0x40,%r8
4450
je .L_num_blocks_is_4_wcpqaDvsGlbjGoe
4451
cmpq $0x30,%r8
4452
je .L_num_blocks_is_3_wcpqaDvsGlbjGoe
4453
cmpq $0x20,%r8
4454
je .L_num_blocks_is_2_wcpqaDvsGlbjGoe
4455
cmpq $0x10,%r8
4456
je .L_num_blocks_is_1_wcpqaDvsGlbjGoe
4457
4458
.L_num_blocks_is_7_wcpqaDvsGlbjGoe:
4459
vpshufb %zmm8,%zmm0,%zmm1
4460
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4461
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4462
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
4463
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4464
vpxord %zmm4,%zmm3,%zmm9
4465
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
4466
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
4467
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
4468
vpxorq %zmm6,%zmm5,%zmm5{%k2}
4469
vpxord %zmm5,%zmm7,%zmm10
4470
movq $0x0000ffffffffffff,%r8
4471
kmovq %r8,%k1
4472
vmovdqu8 0(%rdi),%zmm1
4473
vmovdqu8 64(%rdi),%zmm2{%k1}
4474
4475
addq $0x70,%rdi
4476
vbroadcasti32x4 (%rcx),%zmm0
4477
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
4478
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
4479
vbroadcasti32x4 16(%rcx),%zmm0
4480
vaesenc %zmm0,%zmm1,%zmm1
4481
vaesenc %zmm0,%zmm2,%zmm2
4482
4483
4484
vbroadcasti32x4 32(%rcx),%zmm0
4485
vaesenc %zmm0,%zmm1,%zmm1
4486
vaesenc %zmm0,%zmm2,%zmm2
4487
4488
4489
vbroadcasti32x4 48(%rcx),%zmm0
4490
vaesenc %zmm0,%zmm1,%zmm1
4491
vaesenc %zmm0,%zmm2,%zmm2
4492
4493
vbroadcasti32x4 64(%rcx),%zmm0
4494
vaesenc %zmm0,%zmm1,%zmm1
4495
vaesenc %zmm0,%zmm2,%zmm2
4496
4497
4498
vbroadcasti32x4 80(%rcx),%zmm0
4499
vaesenc %zmm0,%zmm1,%zmm1
4500
vaesenc %zmm0,%zmm2,%zmm2
4501
4502
4503
vbroadcasti32x4 96(%rcx),%zmm0
4504
vaesenc %zmm0,%zmm1,%zmm1
4505
vaesenc %zmm0,%zmm2,%zmm2
4506
4507
4508
vbroadcasti32x4 112(%rcx),%zmm0
4509
vaesenc %zmm0,%zmm1,%zmm1
4510
vaesenc %zmm0,%zmm2,%zmm2
4511
4512
4513
vbroadcasti32x4 128(%rcx),%zmm0
4514
vaesenc %zmm0,%zmm1,%zmm1
4515
vaesenc %zmm0,%zmm2,%zmm2
4516
4517
4518
vbroadcasti32x4 144(%rcx),%zmm0
4519
vaesenc %zmm0,%zmm1,%zmm1
4520
vaesenc %zmm0,%zmm2,%zmm2
4521
4522
vbroadcasti32x4 160(%rcx),%zmm0
4523
vaesenc %zmm0,%zmm1,%zmm1
4524
vaesenc %zmm0,%zmm2,%zmm2
4525
4526
4527
vbroadcasti32x4 176(%rcx),%zmm0
4528
vaesenc %zmm0,%zmm1,%zmm1
4529
vaesenc %zmm0,%zmm2,%zmm2
4530
4531
4532
vbroadcasti32x4 192(%rcx),%zmm0
4533
vaesenc %zmm0,%zmm1,%zmm1
4534
vaesenc %zmm0,%zmm2,%zmm2
4535
4536
4537
vbroadcasti32x4 208(%rcx),%zmm0
4538
vaesenc %zmm0,%zmm1,%zmm1
4539
vaesenc %zmm0,%zmm2,%zmm2
4540
4541
4542
vbroadcasti32x4 224(%rcx),%zmm0
4543
vaesenclast %zmm0,%zmm1,%zmm1
4544
vaesenclast %zmm0,%zmm2,%zmm2
4545
vpxorq %zmm9,%zmm1,%zmm1
4546
vpxorq %zmm10,%zmm2,%zmm2
4547
vmovdqu8 %zmm1,0(%rsi)
4548
vmovdqu8 %zmm2,64(%rsi){%k1}
4549
addq $0x70,%rsi
4550
vextracti32x4 $0x2,%zmm2,%xmm8
4551
vextracti32x4 $0x3,%zmm10,%xmm0
4552
andq $0xf,%rdx
4553
je .L_ret_wcpqaDvsGlbjGoe
4554
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4555
.L_num_blocks_is_6_wcpqaDvsGlbjGoe:
4556
vpshufb %zmm8,%zmm0,%zmm1
4557
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4558
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4559
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
4560
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4561
vpxord %zmm4,%zmm3,%zmm9
4562
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
4563
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
4564
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
4565
vpxorq %zmm6,%zmm5,%zmm5{%k2}
4566
vpxord %zmm5,%zmm7,%zmm10
4567
vmovdqu8 0(%rdi),%zmm1
4568
vmovdqu8 64(%rdi),%ymm2
4569
addq $96,%rdi
4570
vbroadcasti32x4 (%rcx),%zmm0
4571
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
4572
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
4573
vbroadcasti32x4 16(%rcx),%zmm0
4574
vaesenc %zmm0,%zmm1,%zmm1
4575
vaesenc %zmm0,%zmm2,%zmm2
4576
4577
4578
vbroadcasti32x4 32(%rcx),%zmm0
4579
vaesenc %zmm0,%zmm1,%zmm1
4580
vaesenc %zmm0,%zmm2,%zmm2
4581
4582
4583
vbroadcasti32x4 48(%rcx),%zmm0
4584
vaesenc %zmm0,%zmm1,%zmm1
4585
vaesenc %zmm0,%zmm2,%zmm2
4586
4587
vbroadcasti32x4 64(%rcx),%zmm0
4588
vaesenc %zmm0,%zmm1,%zmm1
4589
vaesenc %zmm0,%zmm2,%zmm2
4590
4591
4592
vbroadcasti32x4 80(%rcx),%zmm0
4593
vaesenc %zmm0,%zmm1,%zmm1
4594
vaesenc %zmm0,%zmm2,%zmm2
4595
4596
4597
vbroadcasti32x4 96(%rcx),%zmm0
4598
vaesenc %zmm0,%zmm1,%zmm1
4599
vaesenc %zmm0,%zmm2,%zmm2
4600
4601
4602
vbroadcasti32x4 112(%rcx),%zmm0
4603
vaesenc %zmm0,%zmm1,%zmm1
4604
vaesenc %zmm0,%zmm2,%zmm2
4605
4606
4607
vbroadcasti32x4 128(%rcx),%zmm0
4608
vaesenc %zmm0,%zmm1,%zmm1
4609
vaesenc %zmm0,%zmm2,%zmm2
4610
4611
4612
vbroadcasti32x4 144(%rcx),%zmm0
4613
vaesenc %zmm0,%zmm1,%zmm1
4614
vaesenc %zmm0,%zmm2,%zmm2
4615
4616
vbroadcasti32x4 160(%rcx),%zmm0
4617
vaesenc %zmm0,%zmm1,%zmm1
4618
vaesenc %zmm0,%zmm2,%zmm2
4619
4620
4621
vbroadcasti32x4 176(%rcx),%zmm0
4622
vaesenc %zmm0,%zmm1,%zmm1
4623
vaesenc %zmm0,%zmm2,%zmm2
4624
4625
4626
vbroadcasti32x4 192(%rcx),%zmm0
4627
vaesenc %zmm0,%zmm1,%zmm1
4628
vaesenc %zmm0,%zmm2,%zmm2
4629
4630
4631
vbroadcasti32x4 208(%rcx),%zmm0
4632
vaesenc %zmm0,%zmm1,%zmm1
4633
vaesenc %zmm0,%zmm2,%zmm2
4634
4635
4636
vbroadcasti32x4 224(%rcx),%zmm0
4637
vaesenclast %zmm0,%zmm1,%zmm1
4638
vaesenclast %zmm0,%zmm2,%zmm2
4639
vpxorq %zmm9,%zmm1,%zmm1
4640
vpxorq %zmm10,%zmm2,%zmm2
4641
vmovdqu8 %zmm1,0(%rsi)
4642
vmovdqu8 %ymm2,64(%rsi)
4643
addq $96,%rsi
4644
4645
vextracti32x4 $0x1,%ymm2,%xmm8
4646
vextracti32x4 $0x2,%zmm10,%xmm0
4647
andq $0xf,%rdx
4648
je .L_ret_wcpqaDvsGlbjGoe
4649
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4650
.L_num_blocks_is_5_wcpqaDvsGlbjGoe:
4651
vpshufb %zmm8,%zmm0,%zmm1
4652
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4653
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4654
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
4655
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4656
vpxord %zmm4,%zmm3,%zmm9
4657
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
4658
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
4659
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
4660
vpxorq %zmm6,%zmm5,%zmm5{%k2}
4661
vpxord %zmm5,%zmm7,%zmm10
4662
vmovdqu8 0(%rdi),%zmm1
4663
vmovdqu8 64(%rdi),%xmm2
4664
addq $80,%rdi
4665
vbroadcasti32x4 (%rcx),%zmm0
4666
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
4667
vpternlogq $0x96,%zmm0,%zmm10,%zmm2
4668
vbroadcasti32x4 16(%rcx),%zmm0
4669
vaesenc %zmm0,%zmm1,%zmm1
4670
vaesenc %zmm0,%zmm2,%zmm2
4671
4672
4673
vbroadcasti32x4 32(%rcx),%zmm0
4674
vaesenc %zmm0,%zmm1,%zmm1
4675
vaesenc %zmm0,%zmm2,%zmm2
4676
4677
4678
vbroadcasti32x4 48(%rcx),%zmm0
4679
vaesenc %zmm0,%zmm1,%zmm1
4680
vaesenc %zmm0,%zmm2,%zmm2
4681
4682
vbroadcasti32x4 64(%rcx),%zmm0
4683
vaesenc %zmm0,%zmm1,%zmm1
4684
vaesenc %zmm0,%zmm2,%zmm2
4685
4686
4687
vbroadcasti32x4 80(%rcx),%zmm0
4688
vaesenc %zmm0,%zmm1,%zmm1
4689
vaesenc %zmm0,%zmm2,%zmm2
4690
4691
4692
vbroadcasti32x4 96(%rcx),%zmm0
4693
vaesenc %zmm0,%zmm1,%zmm1
4694
vaesenc %zmm0,%zmm2,%zmm2
4695
4696
4697
vbroadcasti32x4 112(%rcx),%zmm0
4698
vaesenc %zmm0,%zmm1,%zmm1
4699
vaesenc %zmm0,%zmm2,%zmm2
4700
4701
4702
vbroadcasti32x4 128(%rcx),%zmm0
4703
vaesenc %zmm0,%zmm1,%zmm1
4704
vaesenc %zmm0,%zmm2,%zmm2
4705
4706
4707
vbroadcasti32x4 144(%rcx),%zmm0
4708
vaesenc %zmm0,%zmm1,%zmm1
4709
vaesenc %zmm0,%zmm2,%zmm2
4710
4711
vbroadcasti32x4 160(%rcx),%zmm0
4712
vaesenc %zmm0,%zmm1,%zmm1
4713
vaesenc %zmm0,%zmm2,%zmm2
4714
4715
4716
vbroadcasti32x4 176(%rcx),%zmm0
4717
vaesenc %zmm0,%zmm1,%zmm1
4718
vaesenc %zmm0,%zmm2,%zmm2
4719
4720
4721
vbroadcasti32x4 192(%rcx),%zmm0
4722
vaesenc %zmm0,%zmm1,%zmm1
4723
vaesenc %zmm0,%zmm2,%zmm2
4724
4725
4726
vbroadcasti32x4 208(%rcx),%zmm0
4727
vaesenc %zmm0,%zmm1,%zmm1
4728
vaesenc %zmm0,%zmm2,%zmm2
4729
4730
4731
vbroadcasti32x4 224(%rcx),%zmm0
4732
vaesenclast %zmm0,%zmm1,%zmm1
4733
vaesenclast %zmm0,%zmm2,%zmm2
4734
vpxorq %zmm9,%zmm1,%zmm1
4735
vpxorq %zmm10,%zmm2,%zmm2
4736
vmovdqu8 %zmm1,0(%rsi)
4737
vmovdqu8 %xmm2,64(%rsi)
4738
addq $80,%rsi
4739
4740
vmovdqa %xmm2,%xmm8
4741
vextracti32x4 $0x1,%zmm10,%xmm0
4742
andq $0xf,%rdx
4743
je .L_ret_wcpqaDvsGlbjGoe
4744
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4745
.L_num_blocks_is_4_wcpqaDvsGlbjGoe:
4746
vpshufb %zmm8,%zmm0,%zmm1
4747
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4748
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4749
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
4750
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4751
vpxord %zmm4,%zmm3,%zmm9
4752
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
4753
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
4754
vpclmulqdq $0x00,%zmm25,%zmm6,%zmm7
4755
vpxorq %zmm6,%zmm5,%zmm5{%k2}
4756
vpxord %zmm5,%zmm7,%zmm10
4757
vmovdqu8 0(%rdi),%zmm1
4758
addq $64,%rdi
4759
vbroadcasti32x4 (%rcx),%zmm0
4760
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
4761
vbroadcasti32x4 16(%rcx),%zmm0
4762
vaesenc %zmm0,%zmm1,%zmm1
4763
vbroadcasti32x4 32(%rcx),%zmm0
4764
vaesenc %zmm0,%zmm1,%zmm1
4765
vbroadcasti32x4 48(%rcx),%zmm0
4766
vaesenc %zmm0,%zmm1,%zmm1
4767
vbroadcasti32x4 64(%rcx),%zmm0
4768
vaesenc %zmm0,%zmm1,%zmm1
4769
vbroadcasti32x4 80(%rcx),%zmm0
4770
vaesenc %zmm0,%zmm1,%zmm1
4771
vbroadcasti32x4 96(%rcx),%zmm0
4772
vaesenc %zmm0,%zmm1,%zmm1
4773
vbroadcasti32x4 112(%rcx),%zmm0
4774
vaesenc %zmm0,%zmm1,%zmm1
4775
vbroadcasti32x4 128(%rcx),%zmm0
4776
vaesenc %zmm0,%zmm1,%zmm1
4777
vbroadcasti32x4 144(%rcx),%zmm0
4778
vaesenc %zmm0,%zmm1,%zmm1
4779
vbroadcasti32x4 160(%rcx),%zmm0
4780
vaesenc %zmm0,%zmm1,%zmm1
4781
vbroadcasti32x4 176(%rcx),%zmm0
4782
vaesenc %zmm0,%zmm1,%zmm1
4783
vbroadcasti32x4 192(%rcx),%zmm0
4784
vaesenc %zmm0,%zmm1,%zmm1
4785
vbroadcasti32x4 208(%rcx),%zmm0
4786
vaesenc %zmm0,%zmm1,%zmm1
4787
vbroadcasti32x4 224(%rcx),%zmm0
4788
vaesenclast %zmm0,%zmm1,%zmm1
4789
vpxorq %zmm9,%zmm1,%zmm1
4790
vmovdqu8 %zmm1,0(%rsi)
4791
addq $64,%rsi
4792
vextracti32x4 $0x3,%zmm1,%xmm8
4793
vmovdqa %xmm10,%xmm0
4794
andq $0xf,%rdx
4795
je .L_ret_wcpqaDvsGlbjGoe
4796
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4797
.L_num_blocks_is_3_wcpqaDvsGlbjGoe:
4798
vpshufb %zmm8,%zmm0,%zmm1
4799
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4800
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4801
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
4802
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4803
vpxord %zmm4,%zmm3,%zmm9
4804
movq $0x0000ffffffffffff,%r8
4805
kmovq %r8,%k1
4806
vmovdqu8 0(%rdi),%zmm1{%k1}
4807
addq $48,%rdi
4808
vbroadcasti32x4 (%rcx),%zmm0
4809
vpternlogq $0x96,%zmm0,%zmm9,%zmm1
4810
vbroadcasti32x4 16(%rcx),%zmm0
4811
vaesenc %zmm0,%zmm1,%zmm1
4812
vbroadcasti32x4 32(%rcx),%zmm0
4813
vaesenc %zmm0,%zmm1,%zmm1
4814
vbroadcasti32x4 48(%rcx),%zmm0
4815
vaesenc %zmm0,%zmm1,%zmm1
4816
vbroadcasti32x4 64(%rcx),%zmm0
4817
vaesenc %zmm0,%zmm1,%zmm1
4818
vbroadcasti32x4 80(%rcx),%zmm0
4819
vaesenc %zmm0,%zmm1,%zmm1
4820
vbroadcasti32x4 96(%rcx),%zmm0
4821
vaesenc %zmm0,%zmm1,%zmm1
4822
vbroadcasti32x4 112(%rcx),%zmm0
4823
vaesenc %zmm0,%zmm1,%zmm1
4824
vbroadcasti32x4 128(%rcx),%zmm0
4825
vaesenc %zmm0,%zmm1,%zmm1
4826
vbroadcasti32x4 144(%rcx),%zmm0
4827
vaesenc %zmm0,%zmm1,%zmm1
4828
vbroadcasti32x4 160(%rcx),%zmm0
4829
vaesenc %zmm0,%zmm1,%zmm1
4830
vbroadcasti32x4 176(%rcx),%zmm0
4831
vaesenc %zmm0,%zmm1,%zmm1
4832
vbroadcasti32x4 192(%rcx),%zmm0
4833
vaesenc %zmm0,%zmm1,%zmm1
4834
vbroadcasti32x4 208(%rcx),%zmm0
4835
vaesenc %zmm0,%zmm1,%zmm1
4836
vbroadcasti32x4 224(%rcx),%zmm0
4837
vaesenclast %zmm0,%zmm1,%zmm1
4838
vpxorq %zmm9,%zmm1,%zmm1
4839
vmovdqu8 %zmm1,0(%rsi){%k1}
4840
addq $48,%rsi
4841
vextracti32x4 $2,%zmm1,%xmm8
4842
vextracti32x4 $3,%zmm9,%xmm0
4843
andq $0xf,%rdx
4844
je .L_ret_wcpqaDvsGlbjGoe
4845
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4846
.L_num_blocks_is_2_wcpqaDvsGlbjGoe:
4847
vpshufb %zmm8,%zmm0,%zmm1
4848
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4849
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4850
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
4851
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4852
vpxord %zmm4,%zmm3,%zmm9
4853
4854
vmovdqu8 0(%rdi),%ymm1
4855
addq $32,%rdi
4856
vbroadcasti32x4 (%rcx),%ymm0
4857
vpternlogq $0x96,%ymm0,%ymm9,%ymm1
4858
vbroadcasti32x4 16(%rcx),%ymm0
4859
vaesenc %ymm0,%ymm1,%ymm1
4860
vbroadcasti32x4 32(%rcx),%ymm0
4861
vaesenc %ymm0,%ymm1,%ymm1
4862
vbroadcasti32x4 48(%rcx),%ymm0
4863
vaesenc %ymm0,%ymm1,%ymm1
4864
vbroadcasti32x4 64(%rcx),%ymm0
4865
vaesenc %ymm0,%ymm1,%ymm1
4866
vbroadcasti32x4 80(%rcx),%ymm0
4867
vaesenc %ymm0,%ymm1,%ymm1
4868
vbroadcasti32x4 96(%rcx),%ymm0
4869
vaesenc %ymm0,%ymm1,%ymm1
4870
vbroadcasti32x4 112(%rcx),%ymm0
4871
vaesenc %ymm0,%ymm1,%ymm1
4872
vbroadcasti32x4 128(%rcx),%ymm0
4873
vaesenc %ymm0,%ymm1,%ymm1
4874
vbroadcasti32x4 144(%rcx),%ymm0
4875
vaesenc %ymm0,%ymm1,%ymm1
4876
vbroadcasti32x4 160(%rcx),%ymm0
4877
vaesenc %ymm0,%ymm1,%ymm1
4878
vbroadcasti32x4 176(%rcx),%ymm0
4879
vaesenc %ymm0,%ymm1,%ymm1
4880
vbroadcasti32x4 192(%rcx),%ymm0
4881
vaesenc %ymm0,%ymm1,%ymm1
4882
vbroadcasti32x4 208(%rcx),%ymm0
4883
vaesenc %ymm0,%ymm1,%ymm1
4884
vbroadcasti32x4 224(%rcx),%ymm0
4885
vaesenclast %ymm0,%ymm1,%ymm1
4886
vpxorq %ymm9,%ymm1,%ymm1
4887
vmovdqu8 %ymm1,0(%rsi)
4888
addq $32,%rsi
4889
4890
vextracti32x4 $1,%ymm1,%xmm8
4891
vextracti32x4 $2,%zmm9,%xmm0
4892
andq $0xf,%rdx
4893
je .L_ret_wcpqaDvsGlbjGoe
4894
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4895
.L_num_blocks_is_1_wcpqaDvsGlbjGoe:
4896
vpshufb %zmm8,%zmm0,%zmm1
4897
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
4898
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
4899
vpclmulqdq $0x00,%zmm25,%zmm2,%zmm3
4900
vpxorq %zmm2,%zmm4,%zmm4{%k2}
4901
vpxord %zmm4,%zmm3,%zmm9
4902
4903
vmovdqu8 0(%rdi),%xmm1
4904
addq $16,%rdi
4905
vbroadcasti32x4 (%rcx),%ymm0
4906
vpternlogq $0x96,%ymm0,%ymm9,%ymm1
4907
vbroadcasti32x4 16(%rcx),%ymm0
4908
vaesenc %ymm0,%ymm1,%ymm1
4909
vbroadcasti32x4 32(%rcx),%ymm0
4910
vaesenc %ymm0,%ymm1,%ymm1
4911
vbroadcasti32x4 48(%rcx),%ymm0
4912
vaesenc %ymm0,%ymm1,%ymm1
4913
vbroadcasti32x4 64(%rcx),%ymm0
4914
vaesenc %ymm0,%ymm1,%ymm1
4915
vbroadcasti32x4 80(%rcx),%ymm0
4916
vaesenc %ymm0,%ymm1,%ymm1
4917
vbroadcasti32x4 96(%rcx),%ymm0
4918
vaesenc %ymm0,%ymm1,%ymm1
4919
vbroadcasti32x4 112(%rcx),%ymm0
4920
vaesenc %ymm0,%ymm1,%ymm1
4921
vbroadcasti32x4 128(%rcx),%ymm0
4922
vaesenc %ymm0,%ymm1,%ymm1
4923
vbroadcasti32x4 144(%rcx),%ymm0
4924
vaesenc %ymm0,%ymm1,%ymm1
4925
vbroadcasti32x4 160(%rcx),%ymm0
4926
vaesenc %ymm0,%ymm1,%ymm1
4927
vbroadcasti32x4 176(%rcx),%ymm0
4928
vaesenc %ymm0,%ymm1,%ymm1
4929
vbroadcasti32x4 192(%rcx),%ymm0
4930
vaesenc %ymm0,%ymm1,%ymm1
4931
vbroadcasti32x4 208(%rcx),%ymm0
4932
vaesenc %ymm0,%ymm1,%ymm1
4933
vbroadcasti32x4 224(%rcx),%ymm0
4934
vaesenclast %ymm0,%ymm1,%ymm1
4935
vpxorq %ymm9,%ymm1,%ymm1
4936
vmovdqu8 %xmm1,0(%rsi)
4937
addq $16,%rsi
4938
4939
vmovdqa %xmm1,%xmm8
4940
vextracti32x4 $1,%zmm9,%xmm0
4941
andq $0xf,%rdx
4942
je .L_ret_wcpqaDvsGlbjGoe
4943
jmp .L_steal_cipher_wcpqaDvsGlbjGoe
4944
.cfi_endproc
4945
.globl aesni_xts_256_decrypt_avx512
4946
.hidden aesni_xts_256_decrypt_avx512
4947
.type aesni_xts_256_decrypt_avx512,@function
4948
.align 32
4949
aesni_xts_256_decrypt_avx512:
4950
.cfi_startproc
4951
.byte 243,15,30,250
4952
pushq %rbp
4953
movq %rsp,%rbp
4954
subq $136,%rsp
4955
andq $0xffffffffffffffc0,%rsp
4956
movq %rbx,128(%rsp)
4957
movq $0x87,%r10
4958
vmovdqu (%r9),%xmm1
4959
vpxor (%r8),%xmm1,%xmm1
4960
vaesenc 16(%r8),%xmm1,%xmm1
4961
vaesenc 32(%r8),%xmm1,%xmm1
4962
vaesenc 48(%r8),%xmm1,%xmm1
4963
vaesenc 64(%r8),%xmm1,%xmm1
4964
vaesenc 80(%r8),%xmm1,%xmm1
4965
vaesenc 96(%r8),%xmm1,%xmm1
4966
vaesenc 112(%r8),%xmm1,%xmm1
4967
vaesenc 128(%r8),%xmm1,%xmm1
4968
vaesenc 144(%r8),%xmm1,%xmm1
4969
vaesenc 160(%r8),%xmm1,%xmm1
4970
vaesenc 176(%r8),%xmm1,%xmm1
4971
vaesenc 192(%r8),%xmm1,%xmm1
4972
vaesenc 208(%r8),%xmm1,%xmm1
4973
vaesenclast 224(%r8),%xmm1,%xmm1
4974
vmovdqa %xmm1,(%rsp)
4975
4976
cmpq $0x80,%rdx
4977
jb .L_less_than_128_bytes_EmbgEptodyewbFa
4978
vpbroadcastq %r10,%zmm25
4979
cmpq $0x100,%rdx
4980
jge .L_start_by16_EmbgEptodyewbFa
4981
jmp .L_start_by8_EmbgEptodyewbFa
4982
4983
.L_do_n_blocks_EmbgEptodyewbFa:
4984
cmpq $0x0,%rdx
4985
je .L_ret_EmbgEptodyewbFa
4986
cmpq $0x70,%rdx
4987
jge .L_remaining_num_blocks_is_7_EmbgEptodyewbFa
4988
cmpq $0x60,%rdx
4989
jge .L_remaining_num_blocks_is_6_EmbgEptodyewbFa
4990
cmpq $0x50,%rdx
4991
jge .L_remaining_num_blocks_is_5_EmbgEptodyewbFa
4992
cmpq $0x40,%rdx
4993
jge .L_remaining_num_blocks_is_4_EmbgEptodyewbFa
4994
cmpq $0x30,%rdx
4995
jge .L_remaining_num_blocks_is_3_EmbgEptodyewbFa
4996
cmpq $0x20,%rdx
4997
jge .L_remaining_num_blocks_is_2_EmbgEptodyewbFa
4998
cmpq $0x10,%rdx
4999
jge .L_remaining_num_blocks_is_1_EmbgEptodyewbFa
5000
5001
5002
vmovdqu %xmm5,%xmm1
5003
5004
vpxor %xmm9,%xmm1,%xmm1
5005
vmovdqu (%rcx),%xmm0
5006
vpxor %xmm0,%xmm1,%xmm1
5007
vmovdqu 16(%rcx),%xmm0
5008
vaesdec %xmm0,%xmm1,%xmm1
5009
vmovdqu 32(%rcx),%xmm0
5010
vaesdec %xmm0,%xmm1,%xmm1
5011
vmovdqu 48(%rcx),%xmm0
5012
vaesdec %xmm0,%xmm1,%xmm1
5013
vmovdqu 64(%rcx),%xmm0
5014
vaesdec %xmm0,%xmm1,%xmm1
5015
vmovdqu 80(%rcx),%xmm0
5016
vaesdec %xmm0,%xmm1,%xmm1
5017
vmovdqu 96(%rcx),%xmm0
5018
vaesdec %xmm0,%xmm1,%xmm1
5019
vmovdqu 112(%rcx),%xmm0
5020
vaesdec %xmm0,%xmm1,%xmm1
5021
vmovdqu 128(%rcx),%xmm0
5022
vaesdec %xmm0,%xmm1,%xmm1
5023
vmovdqu 144(%rcx),%xmm0
5024
vaesdec %xmm0,%xmm1,%xmm1
5025
vmovdqu 160(%rcx),%xmm0
5026
vaesdec %xmm0,%xmm1,%xmm1
5027
vmovdqu 176(%rcx),%xmm0
5028
vaesdec %xmm0,%xmm1,%xmm1
5029
vmovdqu 192(%rcx),%xmm0
5030
vaesdec %xmm0,%xmm1,%xmm1
5031
vmovdqu 208(%rcx),%xmm0
5032
vaesdec %xmm0,%xmm1,%xmm1
5033
vmovdqu 224(%rcx),%xmm0
5034
vaesdeclast %xmm0,%xmm1,%xmm1
5035
vpxor %xmm9,%xmm1,%xmm1
5036
vmovdqu %xmm1,-16(%rsi)
5037
vmovdqa %xmm1,%xmm8
5038
5039
5040
movq $0x1,%r8
5041
kmovq %r8,%k1
5042
vpsllq $0x3f,%xmm9,%xmm13
5043
vpsraq $0x3f,%xmm13,%xmm14
5044
vpandq %xmm25,%xmm14,%xmm5
5045
vpxorq %xmm5,%xmm9,%xmm9{%k1}
5046
vpsrldq $0x8,%xmm9,%xmm10
5047
.byte 98, 211, 181, 8, 115, 194, 1
5048
vpslldq $0x8,%xmm13,%xmm13
5049
vpxorq %xmm13,%xmm0,%xmm0
5050
jmp .L_steal_cipher_EmbgEptodyewbFa
5051
5052
.L_remaining_num_blocks_is_7_EmbgEptodyewbFa:
5053
movq $0xffffffffffffffff,%r8
5054
shrq $0x10,%r8
5055
kmovq %r8,%k1
5056
vmovdqu8 (%rdi),%zmm1
5057
vmovdqu8 64(%rdi),%zmm2{%k1}
5058
addq $0x70,%rdi
5059
andq $0xf,%rdx
5060
je .L_done_7_remain_EmbgEptodyewbFa
5061
vextracti32x4 $0x2,%zmm10,%xmm12
5062
vextracti32x4 $0x3,%zmm10,%xmm13
5063
vinserti32x4 $0x2,%xmm13,%zmm10,%zmm10
5064
5065
vpxorq %zmm9,%zmm1,%zmm1
5066
vpxorq %zmm10,%zmm2,%zmm2
5067
5068
5069
vbroadcasti32x4 (%rcx),%zmm0
5070
vpxorq %zmm0,%zmm1,%zmm1
5071
vpxorq %zmm0,%zmm2,%zmm2
5072
vbroadcasti32x4 16(%rcx),%zmm0
5073
vaesdec %zmm0,%zmm1,%zmm1
5074
vaesdec %zmm0,%zmm2,%zmm2
5075
5076
5077
vbroadcasti32x4 32(%rcx),%zmm0
5078
vaesdec %zmm0,%zmm1,%zmm1
5079
vaesdec %zmm0,%zmm2,%zmm2
5080
5081
5082
vbroadcasti32x4 48(%rcx),%zmm0
5083
vaesdec %zmm0,%zmm1,%zmm1
5084
vaesdec %zmm0,%zmm2,%zmm2
5085
5086
vbroadcasti32x4 64(%rcx),%zmm0
5087
vaesdec %zmm0,%zmm1,%zmm1
5088
vaesdec %zmm0,%zmm2,%zmm2
5089
5090
5091
vbroadcasti32x4 80(%rcx),%zmm0
5092
vaesdec %zmm0,%zmm1,%zmm1
5093
vaesdec %zmm0,%zmm2,%zmm2
5094
5095
5096
vbroadcasti32x4 96(%rcx),%zmm0
5097
vaesdec %zmm0,%zmm1,%zmm1
5098
vaesdec %zmm0,%zmm2,%zmm2
5099
5100
5101
vbroadcasti32x4 112(%rcx),%zmm0
5102
vaesdec %zmm0,%zmm1,%zmm1
5103
vaesdec %zmm0,%zmm2,%zmm2
5104
5105
5106
vbroadcasti32x4 128(%rcx),%zmm0
5107
vaesdec %zmm0,%zmm1,%zmm1
5108
vaesdec %zmm0,%zmm2,%zmm2
5109
5110
5111
vbroadcasti32x4 144(%rcx),%zmm0
5112
vaesdec %zmm0,%zmm1,%zmm1
5113
vaesdec %zmm0,%zmm2,%zmm2
5114
5115
5116
vbroadcasti32x4 160(%rcx),%zmm0
5117
vaesdec %zmm0,%zmm1,%zmm1
5118
vaesdec %zmm0,%zmm2,%zmm2
5119
5120
5121
vbroadcasti32x4 176(%rcx),%zmm0
5122
vaesdec %zmm0,%zmm1,%zmm1
5123
vaesdec %zmm0,%zmm2,%zmm2
5124
5125
5126
vbroadcasti32x4 192(%rcx),%zmm0
5127
vaesdec %zmm0,%zmm1,%zmm1
5128
vaesdec %zmm0,%zmm2,%zmm2
5129
5130
5131
vbroadcasti32x4 208(%rcx),%zmm0
5132
vaesdec %zmm0,%zmm1,%zmm1
5133
vaesdec %zmm0,%zmm2,%zmm2
5134
5135
5136
vbroadcasti32x4 224(%rcx),%zmm0
5137
vaesdeclast %zmm0,%zmm1,%zmm1
5138
vaesdeclast %zmm0,%zmm2,%zmm2
5139
5140
vpxorq %zmm9,%zmm1,%zmm1
5141
vpxorq %zmm10,%zmm2,%zmm2
5142
5143
5144
vmovdqa32 %zmm15,%zmm9
5145
vmovdqa32 %zmm16,%zmm10
5146
vmovdqu8 %zmm1,(%rsi)
5147
vmovdqu8 %zmm2,64(%rsi){%k1}
5148
addq $0x70,%rsi
5149
vextracti32x4 $0x2,%zmm2,%xmm8
5150
vmovdqa %xmm12,%xmm0
5151
jmp .L_steal_cipher_EmbgEptodyewbFa
5152
5153
.L_done_7_remain_EmbgEptodyewbFa:
5154
5155
vpxorq %zmm9,%zmm1,%zmm1
5156
vpxorq %zmm10,%zmm2,%zmm2
5157
5158
5159
vbroadcasti32x4 (%rcx),%zmm0
5160
vpxorq %zmm0,%zmm1,%zmm1
5161
vpxorq %zmm0,%zmm2,%zmm2
5162
vbroadcasti32x4 16(%rcx),%zmm0
5163
vaesdec %zmm0,%zmm1,%zmm1
5164
vaesdec %zmm0,%zmm2,%zmm2
5165
5166
5167
vbroadcasti32x4 32(%rcx),%zmm0
5168
vaesdec %zmm0,%zmm1,%zmm1
5169
vaesdec %zmm0,%zmm2,%zmm2
5170
5171
5172
vbroadcasti32x4 48(%rcx),%zmm0
5173
vaesdec %zmm0,%zmm1,%zmm1
5174
vaesdec %zmm0,%zmm2,%zmm2
5175
5176
vbroadcasti32x4 64(%rcx),%zmm0
5177
vaesdec %zmm0,%zmm1,%zmm1
5178
vaesdec %zmm0,%zmm2,%zmm2
5179
5180
5181
vbroadcasti32x4 80(%rcx),%zmm0
5182
vaesdec %zmm0,%zmm1,%zmm1
5183
vaesdec %zmm0,%zmm2,%zmm2
5184
5185
5186
vbroadcasti32x4 96(%rcx),%zmm0
5187
vaesdec %zmm0,%zmm1,%zmm1
5188
vaesdec %zmm0,%zmm2,%zmm2
5189
5190
5191
vbroadcasti32x4 112(%rcx),%zmm0
5192
vaesdec %zmm0,%zmm1,%zmm1
5193
vaesdec %zmm0,%zmm2,%zmm2
5194
5195
5196
vbroadcasti32x4 128(%rcx),%zmm0
5197
vaesdec %zmm0,%zmm1,%zmm1
5198
vaesdec %zmm0,%zmm2,%zmm2
5199
5200
5201
vbroadcasti32x4 144(%rcx),%zmm0
5202
vaesdec %zmm0,%zmm1,%zmm1
5203
vaesdec %zmm0,%zmm2,%zmm2
5204
5205
5206
vbroadcasti32x4 160(%rcx),%zmm0
5207
vaesdec %zmm0,%zmm1,%zmm1
5208
vaesdec %zmm0,%zmm2,%zmm2
5209
5210
5211
vbroadcasti32x4 176(%rcx),%zmm0
5212
vaesdec %zmm0,%zmm1,%zmm1
5213
vaesdec %zmm0,%zmm2,%zmm2
5214
5215
5216
vbroadcasti32x4 192(%rcx),%zmm0
5217
vaesdec %zmm0,%zmm1,%zmm1
5218
vaesdec %zmm0,%zmm2,%zmm2
5219
5220
5221
vbroadcasti32x4 208(%rcx),%zmm0
5222
vaesdec %zmm0,%zmm1,%zmm1
5223
vaesdec %zmm0,%zmm2,%zmm2
5224
5225
5226
vbroadcasti32x4 224(%rcx),%zmm0
5227
vaesdeclast %zmm0,%zmm1,%zmm1
5228
vaesdeclast %zmm0,%zmm2,%zmm2
5229
5230
vpxorq %zmm9,%zmm1,%zmm1
5231
vpxorq %zmm10,%zmm2,%zmm2
5232
5233
5234
vmovdqa32 %zmm15,%zmm9
5235
vmovdqa32 %zmm16,%zmm10
5236
vmovdqu8 %zmm1,(%rsi)
5237
vmovdqu8 %zmm2,64(%rsi){%k1}
5238
jmp .L_ret_EmbgEptodyewbFa
5239
5240
.L_remaining_num_blocks_is_6_EmbgEptodyewbFa:
5241
vmovdqu8 (%rdi),%zmm1
5242
vmovdqu8 64(%rdi),%ymm2
5243
addq $0x60,%rdi
5244
andq $0xf,%rdx
5245
je .L_done_6_remain_EmbgEptodyewbFa
5246
vextracti32x4 $0x1,%zmm10,%xmm12
5247
vextracti32x4 $0x2,%zmm10,%xmm13
5248
vinserti32x4 $0x1,%xmm13,%zmm10,%zmm10
5249
5250
vpxorq %zmm9,%zmm1,%zmm1
5251
vpxorq %zmm10,%zmm2,%zmm2
5252
5253
5254
vbroadcasti32x4 (%rcx),%zmm0
5255
vpxorq %zmm0,%zmm1,%zmm1
5256
vpxorq %zmm0,%zmm2,%zmm2
5257
vbroadcasti32x4 16(%rcx),%zmm0
5258
vaesdec %zmm0,%zmm1,%zmm1
5259
vaesdec %zmm0,%zmm2,%zmm2
5260
5261
5262
vbroadcasti32x4 32(%rcx),%zmm0
5263
vaesdec %zmm0,%zmm1,%zmm1
5264
vaesdec %zmm0,%zmm2,%zmm2
5265
5266
5267
vbroadcasti32x4 48(%rcx),%zmm0
5268
vaesdec %zmm0,%zmm1,%zmm1
5269
vaesdec %zmm0,%zmm2,%zmm2
5270
5271
vbroadcasti32x4 64(%rcx),%zmm0
5272
vaesdec %zmm0,%zmm1,%zmm1
5273
vaesdec %zmm0,%zmm2,%zmm2
5274
5275
5276
vbroadcasti32x4 80(%rcx),%zmm0
5277
vaesdec %zmm0,%zmm1,%zmm1
5278
vaesdec %zmm0,%zmm2,%zmm2
5279
5280
5281
vbroadcasti32x4 96(%rcx),%zmm0
5282
vaesdec %zmm0,%zmm1,%zmm1
5283
vaesdec %zmm0,%zmm2,%zmm2
5284
5285
5286
vbroadcasti32x4 112(%rcx),%zmm0
5287
vaesdec %zmm0,%zmm1,%zmm1
5288
vaesdec %zmm0,%zmm2,%zmm2
5289
5290
5291
vbroadcasti32x4 128(%rcx),%zmm0
5292
vaesdec %zmm0,%zmm1,%zmm1
5293
vaesdec %zmm0,%zmm2,%zmm2
5294
5295
5296
vbroadcasti32x4 144(%rcx),%zmm0
5297
vaesdec %zmm0,%zmm1,%zmm1
5298
vaesdec %zmm0,%zmm2,%zmm2
5299
5300
5301
vbroadcasti32x4 160(%rcx),%zmm0
5302
vaesdec %zmm0,%zmm1,%zmm1
5303
vaesdec %zmm0,%zmm2,%zmm2
5304
5305
5306
vbroadcasti32x4 176(%rcx),%zmm0
5307
vaesdec %zmm0,%zmm1,%zmm1
5308
vaesdec %zmm0,%zmm2,%zmm2
5309
5310
5311
vbroadcasti32x4 192(%rcx),%zmm0
5312
vaesdec %zmm0,%zmm1,%zmm1
5313
vaesdec %zmm0,%zmm2,%zmm2
5314
5315
5316
vbroadcasti32x4 208(%rcx),%zmm0
5317
vaesdec %zmm0,%zmm1,%zmm1
5318
vaesdec %zmm0,%zmm2,%zmm2
5319
5320
5321
vbroadcasti32x4 224(%rcx),%zmm0
5322
vaesdeclast %zmm0,%zmm1,%zmm1
5323
vaesdeclast %zmm0,%zmm2,%zmm2
5324
5325
vpxorq %zmm9,%zmm1,%zmm1
5326
vpxorq %zmm10,%zmm2,%zmm2
5327
5328
5329
vmovdqa32 %zmm15,%zmm9
5330
vmovdqa32 %zmm16,%zmm10
5331
vmovdqu8 %zmm1,(%rsi)
5332
vmovdqu8 %ymm2,64(%rsi)
5333
addq $0x60,%rsi
5334
vextracti32x4 $0x1,%zmm2,%xmm8
5335
vmovdqa %xmm12,%xmm0
5336
jmp .L_steal_cipher_EmbgEptodyewbFa
5337
5338
.L_done_6_remain_EmbgEptodyewbFa:
5339
5340
vpxorq %zmm9,%zmm1,%zmm1
5341
vpxorq %zmm10,%zmm2,%zmm2
5342
5343
5344
vbroadcasti32x4 (%rcx),%zmm0
5345
vpxorq %zmm0,%zmm1,%zmm1
5346
vpxorq %zmm0,%zmm2,%zmm2
5347
vbroadcasti32x4 16(%rcx),%zmm0
5348
vaesdec %zmm0,%zmm1,%zmm1
5349
vaesdec %zmm0,%zmm2,%zmm2
5350
5351
5352
vbroadcasti32x4 32(%rcx),%zmm0
5353
vaesdec %zmm0,%zmm1,%zmm1
5354
vaesdec %zmm0,%zmm2,%zmm2
5355
5356
5357
vbroadcasti32x4 48(%rcx),%zmm0
5358
vaesdec %zmm0,%zmm1,%zmm1
5359
vaesdec %zmm0,%zmm2,%zmm2
5360
5361
vbroadcasti32x4 64(%rcx),%zmm0
5362
vaesdec %zmm0,%zmm1,%zmm1
5363
vaesdec %zmm0,%zmm2,%zmm2
5364
5365
5366
vbroadcasti32x4 80(%rcx),%zmm0
5367
vaesdec %zmm0,%zmm1,%zmm1
5368
vaesdec %zmm0,%zmm2,%zmm2
5369
5370
5371
vbroadcasti32x4 96(%rcx),%zmm0
5372
vaesdec %zmm0,%zmm1,%zmm1
5373
vaesdec %zmm0,%zmm2,%zmm2
5374
5375
5376
vbroadcasti32x4 112(%rcx),%zmm0
5377
vaesdec %zmm0,%zmm1,%zmm1
5378
vaesdec %zmm0,%zmm2,%zmm2
5379
5380
5381
vbroadcasti32x4 128(%rcx),%zmm0
5382
vaesdec %zmm0,%zmm1,%zmm1
5383
vaesdec %zmm0,%zmm2,%zmm2
5384
5385
5386
vbroadcasti32x4 144(%rcx),%zmm0
5387
vaesdec %zmm0,%zmm1,%zmm1
5388
vaesdec %zmm0,%zmm2,%zmm2
5389
5390
5391
vbroadcasti32x4 160(%rcx),%zmm0
5392
vaesdec %zmm0,%zmm1,%zmm1
5393
vaesdec %zmm0,%zmm2,%zmm2
5394
5395
5396
vbroadcasti32x4 176(%rcx),%zmm0
5397
vaesdec %zmm0,%zmm1,%zmm1
5398
vaesdec %zmm0,%zmm2,%zmm2
5399
5400
5401
vbroadcasti32x4 192(%rcx),%zmm0
5402
vaesdec %zmm0,%zmm1,%zmm1
5403
vaesdec %zmm0,%zmm2,%zmm2
5404
5405
5406
vbroadcasti32x4 208(%rcx),%zmm0
5407
vaesdec %zmm0,%zmm1,%zmm1
5408
vaesdec %zmm0,%zmm2,%zmm2
5409
5410
5411
vbroadcasti32x4 224(%rcx),%zmm0
5412
vaesdeclast %zmm0,%zmm1,%zmm1
5413
vaesdeclast %zmm0,%zmm2,%zmm2
5414
5415
vpxorq %zmm9,%zmm1,%zmm1
5416
vpxorq %zmm10,%zmm2,%zmm2
5417
5418
5419
vmovdqa32 %zmm15,%zmm9
5420
vmovdqa32 %zmm16,%zmm10
5421
vmovdqu8 %zmm1,(%rsi)
5422
vmovdqu8 %ymm2,64(%rsi)
5423
jmp .L_ret_EmbgEptodyewbFa
5424
5425
.L_remaining_num_blocks_is_5_EmbgEptodyewbFa:
5426
vmovdqu8 (%rdi),%zmm1
5427
vmovdqu 64(%rdi),%xmm2
5428
addq $0x50,%rdi
5429
andq $0xf,%rdx
5430
je .L_done_5_remain_EmbgEptodyewbFa
5431
vmovdqa %xmm10,%xmm12
5432
vextracti32x4 $0x1,%zmm10,%xmm10
5433
5434
vpxorq %zmm9,%zmm1,%zmm1
5435
vpxorq %zmm10,%zmm2,%zmm2
5436
5437
5438
vbroadcasti32x4 (%rcx),%zmm0
5439
vpxorq %zmm0,%zmm1,%zmm1
5440
vpxorq %zmm0,%zmm2,%zmm2
5441
vbroadcasti32x4 16(%rcx),%zmm0
5442
vaesdec %zmm0,%zmm1,%zmm1
5443
vaesdec %zmm0,%zmm2,%zmm2
5444
5445
5446
vbroadcasti32x4 32(%rcx),%zmm0
5447
vaesdec %zmm0,%zmm1,%zmm1
5448
vaesdec %zmm0,%zmm2,%zmm2
5449
5450
5451
vbroadcasti32x4 48(%rcx),%zmm0
5452
vaesdec %zmm0,%zmm1,%zmm1
5453
vaesdec %zmm0,%zmm2,%zmm2
5454
5455
vbroadcasti32x4 64(%rcx),%zmm0
5456
vaesdec %zmm0,%zmm1,%zmm1
5457
vaesdec %zmm0,%zmm2,%zmm2
5458
5459
5460
vbroadcasti32x4 80(%rcx),%zmm0
5461
vaesdec %zmm0,%zmm1,%zmm1
5462
vaesdec %zmm0,%zmm2,%zmm2
5463
5464
5465
vbroadcasti32x4 96(%rcx),%zmm0
5466
vaesdec %zmm0,%zmm1,%zmm1
5467
vaesdec %zmm0,%zmm2,%zmm2
5468
5469
5470
vbroadcasti32x4 112(%rcx),%zmm0
5471
vaesdec %zmm0,%zmm1,%zmm1
5472
vaesdec %zmm0,%zmm2,%zmm2
5473
5474
5475
vbroadcasti32x4 128(%rcx),%zmm0
5476
vaesdec %zmm0,%zmm1,%zmm1
5477
vaesdec %zmm0,%zmm2,%zmm2
5478
5479
5480
vbroadcasti32x4 144(%rcx),%zmm0
5481
vaesdec %zmm0,%zmm1,%zmm1
5482
vaesdec %zmm0,%zmm2,%zmm2
5483
5484
5485
vbroadcasti32x4 160(%rcx),%zmm0
5486
vaesdec %zmm0,%zmm1,%zmm1
5487
vaesdec %zmm0,%zmm2,%zmm2
5488
5489
5490
vbroadcasti32x4 176(%rcx),%zmm0
5491
vaesdec %zmm0,%zmm1,%zmm1
5492
vaesdec %zmm0,%zmm2,%zmm2
5493
5494
5495
vbroadcasti32x4 192(%rcx),%zmm0
5496
vaesdec %zmm0,%zmm1,%zmm1
5497
vaesdec %zmm0,%zmm2,%zmm2
5498
5499
5500
vbroadcasti32x4 208(%rcx),%zmm0
5501
vaesdec %zmm0,%zmm1,%zmm1
5502
vaesdec %zmm0,%zmm2,%zmm2
5503
5504
5505
vbroadcasti32x4 224(%rcx),%zmm0
5506
vaesdeclast %zmm0,%zmm1,%zmm1
5507
vaesdeclast %zmm0,%zmm2,%zmm2
5508
5509
vpxorq %zmm9,%zmm1,%zmm1
5510
vpxorq %zmm10,%zmm2,%zmm2
5511
5512
5513
vmovdqa32 %zmm15,%zmm9
5514
vmovdqa32 %zmm16,%zmm10
5515
vmovdqu8 %zmm1,(%rsi)
5516
vmovdqu %xmm2,64(%rsi)
5517
addq $0x50,%rsi
5518
vmovdqa %xmm2,%xmm8
5519
vmovdqa %xmm12,%xmm0
5520
jmp .L_steal_cipher_EmbgEptodyewbFa
5521
5522
.L_done_5_remain_EmbgEptodyewbFa:
5523
5524
vpxorq %zmm9,%zmm1,%zmm1
5525
vpxorq %zmm10,%zmm2,%zmm2
5526
5527
5528
vbroadcasti32x4 (%rcx),%zmm0
5529
vpxorq %zmm0,%zmm1,%zmm1
5530
vpxorq %zmm0,%zmm2,%zmm2
5531
vbroadcasti32x4 16(%rcx),%zmm0
5532
vaesdec %zmm0,%zmm1,%zmm1
5533
vaesdec %zmm0,%zmm2,%zmm2
5534
5535
5536
vbroadcasti32x4 32(%rcx),%zmm0
5537
vaesdec %zmm0,%zmm1,%zmm1
5538
vaesdec %zmm0,%zmm2,%zmm2
5539
5540
5541
vbroadcasti32x4 48(%rcx),%zmm0
5542
vaesdec %zmm0,%zmm1,%zmm1
5543
vaesdec %zmm0,%zmm2,%zmm2
5544
5545
vbroadcasti32x4 64(%rcx),%zmm0
5546
vaesdec %zmm0,%zmm1,%zmm1
5547
vaesdec %zmm0,%zmm2,%zmm2
5548
5549
5550
vbroadcasti32x4 80(%rcx),%zmm0
5551
vaesdec %zmm0,%zmm1,%zmm1
5552
vaesdec %zmm0,%zmm2,%zmm2
5553
5554
5555
vbroadcasti32x4 96(%rcx),%zmm0
5556
vaesdec %zmm0,%zmm1,%zmm1
5557
vaesdec %zmm0,%zmm2,%zmm2
5558
5559
5560
vbroadcasti32x4 112(%rcx),%zmm0
5561
vaesdec %zmm0,%zmm1,%zmm1
5562
vaesdec %zmm0,%zmm2,%zmm2
5563
5564
5565
vbroadcasti32x4 128(%rcx),%zmm0
5566
vaesdec %zmm0,%zmm1,%zmm1
5567
vaesdec %zmm0,%zmm2,%zmm2
5568
5569
5570
vbroadcasti32x4 144(%rcx),%zmm0
5571
vaesdec %zmm0,%zmm1,%zmm1
5572
vaesdec %zmm0,%zmm2,%zmm2
5573
5574
5575
vbroadcasti32x4 160(%rcx),%zmm0
5576
vaesdec %zmm0,%zmm1,%zmm1
5577
vaesdec %zmm0,%zmm2,%zmm2
5578
5579
5580
vbroadcasti32x4 176(%rcx),%zmm0
5581
vaesdec %zmm0,%zmm1,%zmm1
5582
vaesdec %zmm0,%zmm2,%zmm2
5583
5584
5585
vbroadcasti32x4 192(%rcx),%zmm0
5586
vaesdec %zmm0,%zmm1,%zmm1
5587
vaesdec %zmm0,%zmm2,%zmm2
5588
5589
5590
vbroadcasti32x4 208(%rcx),%zmm0
5591
vaesdec %zmm0,%zmm1,%zmm1
5592
vaesdec %zmm0,%zmm2,%zmm2
5593
5594
5595
vbroadcasti32x4 224(%rcx),%zmm0
5596
vaesdeclast %zmm0,%zmm1,%zmm1
5597
vaesdeclast %zmm0,%zmm2,%zmm2
5598
5599
vpxorq %zmm9,%zmm1,%zmm1
5600
vpxorq %zmm10,%zmm2,%zmm2
5601
5602
5603
vmovdqa32 %zmm15,%zmm9
5604
vmovdqa32 %zmm16,%zmm10
5605
vmovdqu8 %zmm1,(%rsi)
5606
vmovdqu8 %xmm2,64(%rsi)
5607
jmp .L_ret_EmbgEptodyewbFa
5608
5609
.L_remaining_num_blocks_is_4_EmbgEptodyewbFa:
5610
vmovdqu8 (%rdi),%zmm1
5611
addq $0x40,%rdi
5612
andq $0xf,%rdx
5613
je .L_done_4_remain_EmbgEptodyewbFa
5614
vextracti32x4 $0x3,%zmm9,%xmm12
5615
vinserti32x4 $0x3,%xmm10,%zmm9,%zmm9
5616
5617
vpxorq %zmm9,%zmm1,%zmm1
5618
vpxorq %zmm10,%zmm2,%zmm2
5619
5620
5621
vbroadcasti32x4 (%rcx),%zmm0
5622
vpxorq %zmm0,%zmm1,%zmm1
5623
vpxorq %zmm0,%zmm2,%zmm2
5624
vbroadcasti32x4 16(%rcx),%zmm0
5625
vaesdec %zmm0,%zmm1,%zmm1
5626
vaesdec %zmm0,%zmm2,%zmm2
5627
5628
5629
vbroadcasti32x4 32(%rcx),%zmm0
5630
vaesdec %zmm0,%zmm1,%zmm1
5631
vaesdec %zmm0,%zmm2,%zmm2
5632
5633
5634
vbroadcasti32x4 48(%rcx),%zmm0
5635
vaesdec %zmm0,%zmm1,%zmm1
5636
vaesdec %zmm0,%zmm2,%zmm2
5637
5638
vbroadcasti32x4 64(%rcx),%zmm0
5639
vaesdec %zmm0,%zmm1,%zmm1
5640
vaesdec %zmm0,%zmm2,%zmm2
5641
5642
5643
vbroadcasti32x4 80(%rcx),%zmm0
5644
vaesdec %zmm0,%zmm1,%zmm1
5645
vaesdec %zmm0,%zmm2,%zmm2
5646
5647
5648
vbroadcasti32x4 96(%rcx),%zmm0
5649
vaesdec %zmm0,%zmm1,%zmm1
5650
vaesdec %zmm0,%zmm2,%zmm2
5651
5652
5653
vbroadcasti32x4 112(%rcx),%zmm0
5654
vaesdec %zmm0,%zmm1,%zmm1
5655
vaesdec %zmm0,%zmm2,%zmm2
5656
5657
5658
vbroadcasti32x4 128(%rcx),%zmm0
5659
vaesdec %zmm0,%zmm1,%zmm1
5660
vaesdec %zmm0,%zmm2,%zmm2
5661
5662
5663
vbroadcasti32x4 144(%rcx),%zmm0
5664
vaesdec %zmm0,%zmm1,%zmm1
5665
vaesdec %zmm0,%zmm2,%zmm2
5666
5667
5668
vbroadcasti32x4 160(%rcx),%zmm0
5669
vaesdec %zmm0,%zmm1,%zmm1
5670
vaesdec %zmm0,%zmm2,%zmm2
5671
5672
5673
vbroadcasti32x4 176(%rcx),%zmm0
5674
vaesdec %zmm0,%zmm1,%zmm1
5675
vaesdec %zmm0,%zmm2,%zmm2
5676
5677
5678
vbroadcasti32x4 192(%rcx),%zmm0
5679
vaesdec %zmm0,%zmm1,%zmm1
5680
vaesdec %zmm0,%zmm2,%zmm2
5681
5682
5683
vbroadcasti32x4 208(%rcx),%zmm0
5684
vaesdec %zmm0,%zmm1,%zmm1
5685
vaesdec %zmm0,%zmm2,%zmm2
5686
5687
5688
vbroadcasti32x4 224(%rcx),%zmm0
5689
vaesdeclast %zmm0,%zmm1,%zmm1
5690
vaesdeclast %zmm0,%zmm2,%zmm2
5691
5692
vpxorq %zmm9,%zmm1,%zmm1
5693
vpxorq %zmm10,%zmm2,%zmm2
5694
5695
5696
vmovdqa32 %zmm15,%zmm9
5697
vmovdqa32 %zmm16,%zmm10
5698
vmovdqu8 %zmm1,(%rsi)
5699
addq $0x40,%rsi
5700
vextracti32x4 $0x3,%zmm1,%xmm8
5701
vmovdqa %xmm12,%xmm0
5702
jmp .L_steal_cipher_EmbgEptodyewbFa
5703
5704
.L_done_4_remain_EmbgEptodyewbFa:
5705
5706
vpxorq %zmm9,%zmm1,%zmm1
5707
vpxorq %zmm10,%zmm2,%zmm2
5708
5709
5710
vbroadcasti32x4 (%rcx),%zmm0
5711
vpxorq %zmm0,%zmm1,%zmm1
5712
vpxorq %zmm0,%zmm2,%zmm2
5713
vbroadcasti32x4 16(%rcx),%zmm0
5714
vaesdec %zmm0,%zmm1,%zmm1
5715
vaesdec %zmm0,%zmm2,%zmm2
5716
5717
5718
vbroadcasti32x4 32(%rcx),%zmm0
5719
vaesdec %zmm0,%zmm1,%zmm1
5720
vaesdec %zmm0,%zmm2,%zmm2
5721
5722
5723
vbroadcasti32x4 48(%rcx),%zmm0
5724
vaesdec %zmm0,%zmm1,%zmm1
5725
vaesdec %zmm0,%zmm2,%zmm2
5726
5727
vbroadcasti32x4 64(%rcx),%zmm0
5728
vaesdec %zmm0,%zmm1,%zmm1
5729
vaesdec %zmm0,%zmm2,%zmm2
5730
5731
5732
vbroadcasti32x4 80(%rcx),%zmm0
5733
vaesdec %zmm0,%zmm1,%zmm1
5734
vaesdec %zmm0,%zmm2,%zmm2
5735
5736
5737
vbroadcasti32x4 96(%rcx),%zmm0
5738
vaesdec %zmm0,%zmm1,%zmm1
5739
vaesdec %zmm0,%zmm2,%zmm2
5740
5741
5742
vbroadcasti32x4 112(%rcx),%zmm0
5743
vaesdec %zmm0,%zmm1,%zmm1
5744
vaesdec %zmm0,%zmm2,%zmm2
5745
5746
5747
vbroadcasti32x4 128(%rcx),%zmm0
5748
vaesdec %zmm0,%zmm1,%zmm1
5749
vaesdec %zmm0,%zmm2,%zmm2
5750
5751
5752
vbroadcasti32x4 144(%rcx),%zmm0
5753
vaesdec %zmm0,%zmm1,%zmm1
5754
vaesdec %zmm0,%zmm2,%zmm2
5755
5756
5757
vbroadcasti32x4 160(%rcx),%zmm0
5758
vaesdec %zmm0,%zmm1,%zmm1
5759
vaesdec %zmm0,%zmm2,%zmm2
5760
5761
5762
vbroadcasti32x4 176(%rcx),%zmm0
5763
vaesdec %zmm0,%zmm1,%zmm1
5764
vaesdec %zmm0,%zmm2,%zmm2
5765
5766
5767
vbroadcasti32x4 192(%rcx),%zmm0
5768
vaesdec %zmm0,%zmm1,%zmm1
5769
vaesdec %zmm0,%zmm2,%zmm2
5770
5771
5772
vbroadcasti32x4 208(%rcx),%zmm0
5773
vaesdec %zmm0,%zmm1,%zmm1
5774
vaesdec %zmm0,%zmm2,%zmm2
5775
5776
5777
vbroadcasti32x4 224(%rcx),%zmm0
5778
vaesdeclast %zmm0,%zmm1,%zmm1
5779
vaesdeclast %zmm0,%zmm2,%zmm2
5780
5781
vpxorq %zmm9,%zmm1,%zmm1
5782
vpxorq %zmm10,%zmm2,%zmm2
5783
5784
5785
vmovdqa32 %zmm15,%zmm9
5786
vmovdqa32 %zmm16,%zmm10
5787
vmovdqu8 %zmm1,(%rsi)
5788
jmp .L_ret_EmbgEptodyewbFa
5789
5790
.L_remaining_num_blocks_is_3_EmbgEptodyewbFa:
5791
vmovdqu (%rdi),%xmm1
5792
vmovdqu 16(%rdi),%xmm2
5793
vmovdqu 32(%rdi),%xmm3
5794
addq $0x30,%rdi
5795
andq $0xf,%rdx
5796
je .L_done_3_remain_EmbgEptodyewbFa
5797
vextracti32x4 $0x2,%zmm9,%xmm13
5798
vextracti32x4 $0x1,%zmm9,%xmm10
5799
vextracti32x4 $0x3,%zmm9,%xmm11
5800
vpxor %xmm9,%xmm1,%xmm1
5801
vpxor %xmm10,%xmm2,%xmm2
5802
vpxor %xmm11,%xmm3,%xmm3
5803
vmovdqu (%rcx),%xmm0
5804
vpxor %xmm0,%xmm1,%xmm1
5805
vpxor %xmm0,%xmm2,%xmm2
5806
vpxor %xmm0,%xmm3,%xmm3
5807
vmovdqu 16(%rcx),%xmm0
5808
vaesdec %xmm0,%xmm1,%xmm1
5809
vaesdec %xmm0,%xmm2,%xmm2
5810
vaesdec %xmm0,%xmm3,%xmm3
5811
vmovdqu 32(%rcx),%xmm0
5812
vaesdec %xmm0,%xmm1,%xmm1
5813
vaesdec %xmm0,%xmm2,%xmm2
5814
vaesdec %xmm0,%xmm3,%xmm3
5815
vmovdqu 48(%rcx),%xmm0
5816
vaesdec %xmm0,%xmm1,%xmm1
5817
vaesdec %xmm0,%xmm2,%xmm2
5818
vaesdec %xmm0,%xmm3,%xmm3
5819
vmovdqu 64(%rcx),%xmm0
5820
vaesdec %xmm0,%xmm1,%xmm1
5821
vaesdec %xmm0,%xmm2,%xmm2
5822
vaesdec %xmm0,%xmm3,%xmm3
5823
vmovdqu 80(%rcx),%xmm0
5824
vaesdec %xmm0,%xmm1,%xmm1
5825
vaesdec %xmm0,%xmm2,%xmm2
5826
vaesdec %xmm0,%xmm3,%xmm3
5827
vmovdqu 96(%rcx),%xmm0
5828
vaesdec %xmm0,%xmm1,%xmm1
5829
vaesdec %xmm0,%xmm2,%xmm2
5830
vaesdec %xmm0,%xmm3,%xmm3
5831
vmovdqu 112(%rcx),%xmm0
5832
vaesdec %xmm0,%xmm1,%xmm1
5833
vaesdec %xmm0,%xmm2,%xmm2
5834
vaesdec %xmm0,%xmm3,%xmm3
5835
vmovdqu 128(%rcx),%xmm0
5836
vaesdec %xmm0,%xmm1,%xmm1
5837
vaesdec %xmm0,%xmm2,%xmm2
5838
vaesdec %xmm0,%xmm3,%xmm3
5839
vmovdqu 144(%rcx),%xmm0
5840
vaesdec %xmm0,%xmm1,%xmm1
5841
vaesdec %xmm0,%xmm2,%xmm2
5842
vaesdec %xmm0,%xmm3,%xmm3
5843
vmovdqu 160(%rcx),%xmm0
5844
vaesdec %xmm0,%xmm1,%xmm1
5845
vaesdec %xmm0,%xmm2,%xmm2
5846
vaesdec %xmm0,%xmm3,%xmm3
5847
vmovdqu 176(%rcx),%xmm0
5848
vaesdec %xmm0,%xmm1,%xmm1
5849
vaesdec %xmm0,%xmm2,%xmm2
5850
vaesdec %xmm0,%xmm3,%xmm3
5851
vmovdqu 192(%rcx),%xmm0
5852
vaesdec %xmm0,%xmm1,%xmm1
5853
vaesdec %xmm0,%xmm2,%xmm2
5854
vaesdec %xmm0,%xmm3,%xmm3
5855
vmovdqu 208(%rcx),%xmm0
5856
vaesdec %xmm0,%xmm1,%xmm1
5857
vaesdec %xmm0,%xmm2,%xmm2
5858
vaesdec %xmm0,%xmm3,%xmm3
5859
vmovdqu 224(%rcx),%xmm0
5860
vaesdeclast %xmm0,%xmm1,%xmm1
5861
vaesdeclast %xmm0,%xmm2,%xmm2
5862
vaesdeclast %xmm0,%xmm3,%xmm3
5863
vpxor %xmm9,%xmm1,%xmm1
5864
vpxor %xmm10,%xmm2,%xmm2
5865
vpxor %xmm11,%xmm3,%xmm3
5866
vmovdqu %xmm1,(%rsi)
5867
vmovdqu %xmm2,16(%rsi)
5868
vmovdqu %xmm3,32(%rsi)
5869
addq $0x30,%rsi
5870
vmovdqa %xmm3,%xmm8
5871
vmovdqa %xmm13,%xmm0
5872
jmp .L_steal_cipher_EmbgEptodyewbFa
5873
5874
.L_done_3_remain_EmbgEptodyewbFa:
5875
vextracti32x4 $0x1,%zmm9,%xmm10
5876
vextracti32x4 $0x2,%zmm9,%xmm11
5877
vpxor %xmm9,%xmm1,%xmm1
5878
vpxor %xmm10,%xmm2,%xmm2
5879
vpxor %xmm11,%xmm3,%xmm3
5880
vmovdqu (%rcx),%xmm0
5881
vpxor %xmm0,%xmm1,%xmm1
5882
vpxor %xmm0,%xmm2,%xmm2
5883
vpxor %xmm0,%xmm3,%xmm3
5884
vmovdqu 16(%rcx),%xmm0
5885
vaesdec %xmm0,%xmm1,%xmm1
5886
vaesdec %xmm0,%xmm2,%xmm2
5887
vaesdec %xmm0,%xmm3,%xmm3
5888
vmovdqu 32(%rcx),%xmm0
5889
vaesdec %xmm0,%xmm1,%xmm1
5890
vaesdec %xmm0,%xmm2,%xmm2
5891
vaesdec %xmm0,%xmm3,%xmm3
5892
vmovdqu 48(%rcx),%xmm0
5893
vaesdec %xmm0,%xmm1,%xmm1
5894
vaesdec %xmm0,%xmm2,%xmm2
5895
vaesdec %xmm0,%xmm3,%xmm3
5896
vmovdqu 64(%rcx),%xmm0
5897
vaesdec %xmm0,%xmm1,%xmm1
5898
vaesdec %xmm0,%xmm2,%xmm2
5899
vaesdec %xmm0,%xmm3,%xmm3
5900
vmovdqu 80(%rcx),%xmm0
5901
vaesdec %xmm0,%xmm1,%xmm1
5902
vaesdec %xmm0,%xmm2,%xmm2
5903
vaesdec %xmm0,%xmm3,%xmm3
5904
vmovdqu 96(%rcx),%xmm0
5905
vaesdec %xmm0,%xmm1,%xmm1
5906
vaesdec %xmm0,%xmm2,%xmm2
5907
vaesdec %xmm0,%xmm3,%xmm3
5908
vmovdqu 112(%rcx),%xmm0
5909
vaesdec %xmm0,%xmm1,%xmm1
5910
vaesdec %xmm0,%xmm2,%xmm2
5911
vaesdec %xmm0,%xmm3,%xmm3
5912
vmovdqu 128(%rcx),%xmm0
5913
vaesdec %xmm0,%xmm1,%xmm1
5914
vaesdec %xmm0,%xmm2,%xmm2
5915
vaesdec %xmm0,%xmm3,%xmm3
5916
vmovdqu 144(%rcx),%xmm0
5917
vaesdec %xmm0,%xmm1,%xmm1
5918
vaesdec %xmm0,%xmm2,%xmm2
5919
vaesdec %xmm0,%xmm3,%xmm3
5920
vmovdqu 160(%rcx),%xmm0
5921
vaesdec %xmm0,%xmm1,%xmm1
5922
vaesdec %xmm0,%xmm2,%xmm2
5923
vaesdec %xmm0,%xmm3,%xmm3
5924
vmovdqu 176(%rcx),%xmm0
5925
vaesdec %xmm0,%xmm1,%xmm1
5926
vaesdec %xmm0,%xmm2,%xmm2
5927
vaesdec %xmm0,%xmm3,%xmm3
5928
vmovdqu 192(%rcx),%xmm0
5929
vaesdec %xmm0,%xmm1,%xmm1
5930
vaesdec %xmm0,%xmm2,%xmm2
5931
vaesdec %xmm0,%xmm3,%xmm3
5932
vmovdqu 208(%rcx),%xmm0
5933
vaesdec %xmm0,%xmm1,%xmm1
5934
vaesdec %xmm0,%xmm2,%xmm2
5935
vaesdec %xmm0,%xmm3,%xmm3
5936
vmovdqu 224(%rcx),%xmm0
5937
vaesdeclast %xmm0,%xmm1,%xmm1
5938
vaesdeclast %xmm0,%xmm2,%xmm2
5939
vaesdeclast %xmm0,%xmm3,%xmm3
5940
vpxor %xmm9,%xmm1,%xmm1
5941
vpxor %xmm10,%xmm2,%xmm2
5942
vpxor %xmm11,%xmm3,%xmm3
5943
vmovdqu %xmm1,(%rsi)
5944
vmovdqu %xmm2,16(%rsi)
5945
vmovdqu %xmm3,32(%rsi)
5946
jmp .L_ret_EmbgEptodyewbFa
5947
5948
.L_remaining_num_blocks_is_2_EmbgEptodyewbFa:
5949
vmovdqu (%rdi),%xmm1
5950
vmovdqu 16(%rdi),%xmm2
5951
addq $0x20,%rdi
5952
andq $0xf,%rdx
5953
je .L_done_2_remain_EmbgEptodyewbFa
5954
vextracti32x4 $0x2,%zmm9,%xmm10
5955
vextracti32x4 $0x1,%zmm9,%xmm12
5956
vpxor %xmm9,%xmm1,%xmm1
5957
vpxor %xmm10,%xmm2,%xmm2
5958
vmovdqu (%rcx),%xmm0
5959
vpxor %xmm0,%xmm1,%xmm1
5960
vpxor %xmm0,%xmm2,%xmm2
5961
vmovdqu 16(%rcx),%xmm0
5962
vaesdec %xmm0,%xmm1,%xmm1
5963
vaesdec %xmm0,%xmm2,%xmm2
5964
vmovdqu 32(%rcx),%xmm0
5965
vaesdec %xmm0,%xmm1,%xmm1
5966
vaesdec %xmm0,%xmm2,%xmm2
5967
vmovdqu 48(%rcx),%xmm0
5968
vaesdec %xmm0,%xmm1,%xmm1
5969
vaesdec %xmm0,%xmm2,%xmm2
5970
vmovdqu 64(%rcx),%xmm0
5971
vaesdec %xmm0,%xmm1,%xmm1
5972
vaesdec %xmm0,%xmm2,%xmm2
5973
vmovdqu 80(%rcx),%xmm0
5974
vaesdec %xmm0,%xmm1,%xmm1
5975
vaesdec %xmm0,%xmm2,%xmm2
5976
vmovdqu 96(%rcx),%xmm0
5977
vaesdec %xmm0,%xmm1,%xmm1
5978
vaesdec %xmm0,%xmm2,%xmm2
5979
vmovdqu 112(%rcx),%xmm0
5980
vaesdec %xmm0,%xmm1,%xmm1
5981
vaesdec %xmm0,%xmm2,%xmm2
5982
vmovdqu 128(%rcx),%xmm0
5983
vaesdec %xmm0,%xmm1,%xmm1
5984
vaesdec %xmm0,%xmm2,%xmm2
5985
vmovdqu 144(%rcx),%xmm0
5986
vaesdec %xmm0,%xmm1,%xmm1
5987
vaesdec %xmm0,%xmm2,%xmm2
5988
vmovdqu 160(%rcx),%xmm0
5989
vaesdec %xmm0,%xmm1,%xmm1
5990
vaesdec %xmm0,%xmm2,%xmm2
5991
vmovdqu 176(%rcx),%xmm0
5992
vaesdec %xmm0,%xmm1,%xmm1
5993
vaesdec %xmm0,%xmm2,%xmm2
5994
vmovdqu 192(%rcx),%xmm0
5995
vaesdec %xmm0,%xmm1,%xmm1
5996
vaesdec %xmm0,%xmm2,%xmm2
5997
vmovdqu 208(%rcx),%xmm0
5998
vaesdec %xmm0,%xmm1,%xmm1
5999
vaesdec %xmm0,%xmm2,%xmm2
6000
vmovdqu 224(%rcx),%xmm0
6001
vaesdeclast %xmm0,%xmm1,%xmm1
6002
vaesdeclast %xmm0,%xmm2,%xmm2
6003
vpxor %xmm9,%xmm1,%xmm1
6004
vpxor %xmm10,%xmm2,%xmm2
6005
vmovdqu %xmm1,(%rsi)
6006
vmovdqu %xmm2,16(%rsi)
6007
addq $0x20,%rsi
6008
vmovdqa %xmm2,%xmm8
6009
vmovdqa %xmm12,%xmm0
6010
jmp .L_steal_cipher_EmbgEptodyewbFa
6011
6012
.L_done_2_remain_EmbgEptodyewbFa:
6013
vextracti32x4 $0x1,%zmm9,%xmm10
6014
vpxor %xmm9,%xmm1,%xmm1
6015
vpxor %xmm10,%xmm2,%xmm2
6016
vmovdqu (%rcx),%xmm0
6017
vpxor %xmm0,%xmm1,%xmm1
6018
vpxor %xmm0,%xmm2,%xmm2
6019
vmovdqu 16(%rcx),%xmm0
6020
vaesdec %xmm0,%xmm1,%xmm1
6021
vaesdec %xmm0,%xmm2,%xmm2
6022
vmovdqu 32(%rcx),%xmm0
6023
vaesdec %xmm0,%xmm1,%xmm1
6024
vaesdec %xmm0,%xmm2,%xmm2
6025
vmovdqu 48(%rcx),%xmm0
6026
vaesdec %xmm0,%xmm1,%xmm1
6027
vaesdec %xmm0,%xmm2,%xmm2
6028
vmovdqu 64(%rcx),%xmm0
6029
vaesdec %xmm0,%xmm1,%xmm1
6030
vaesdec %xmm0,%xmm2,%xmm2
6031
vmovdqu 80(%rcx),%xmm0
6032
vaesdec %xmm0,%xmm1,%xmm1
6033
vaesdec %xmm0,%xmm2,%xmm2
6034
vmovdqu 96(%rcx),%xmm0
6035
vaesdec %xmm0,%xmm1,%xmm1
6036
vaesdec %xmm0,%xmm2,%xmm2
6037
vmovdqu 112(%rcx),%xmm0
6038
vaesdec %xmm0,%xmm1,%xmm1
6039
vaesdec %xmm0,%xmm2,%xmm2
6040
vmovdqu 128(%rcx),%xmm0
6041
vaesdec %xmm0,%xmm1,%xmm1
6042
vaesdec %xmm0,%xmm2,%xmm2
6043
vmovdqu 144(%rcx),%xmm0
6044
vaesdec %xmm0,%xmm1,%xmm1
6045
vaesdec %xmm0,%xmm2,%xmm2
6046
vmovdqu 160(%rcx),%xmm0
6047
vaesdec %xmm0,%xmm1,%xmm1
6048
vaesdec %xmm0,%xmm2,%xmm2
6049
vmovdqu 176(%rcx),%xmm0
6050
vaesdec %xmm0,%xmm1,%xmm1
6051
vaesdec %xmm0,%xmm2,%xmm2
6052
vmovdqu 192(%rcx),%xmm0
6053
vaesdec %xmm0,%xmm1,%xmm1
6054
vaesdec %xmm0,%xmm2,%xmm2
6055
vmovdqu 208(%rcx),%xmm0
6056
vaesdec %xmm0,%xmm1,%xmm1
6057
vaesdec %xmm0,%xmm2,%xmm2
6058
vmovdqu 224(%rcx),%xmm0
6059
vaesdeclast %xmm0,%xmm1,%xmm1
6060
vaesdeclast %xmm0,%xmm2,%xmm2
6061
vpxor %xmm9,%xmm1,%xmm1
6062
vpxor %xmm10,%xmm2,%xmm2
6063
vmovdqu %xmm1,(%rsi)
6064
vmovdqu %xmm2,16(%rsi)
6065
jmp .L_ret_EmbgEptodyewbFa
6066
6067
.L_remaining_num_blocks_is_1_EmbgEptodyewbFa:
6068
vmovdqu (%rdi),%xmm1
6069
addq $0x10,%rdi
6070
andq $0xf,%rdx
6071
je .L_done_1_remain_EmbgEptodyewbFa
6072
vextracti32x4 $0x1,%zmm9,%xmm11
6073
vpxor %xmm11,%xmm1,%xmm1
6074
vmovdqu (%rcx),%xmm0
6075
vpxor %xmm0,%xmm1,%xmm1
6076
vmovdqu 16(%rcx),%xmm0
6077
vaesdec %xmm0,%xmm1,%xmm1
6078
vmovdqu 32(%rcx),%xmm0
6079
vaesdec %xmm0,%xmm1,%xmm1
6080
vmovdqu 48(%rcx),%xmm0
6081
vaesdec %xmm0,%xmm1,%xmm1
6082
vmovdqu 64(%rcx),%xmm0
6083
vaesdec %xmm0,%xmm1,%xmm1
6084
vmovdqu 80(%rcx),%xmm0
6085
vaesdec %xmm0,%xmm1,%xmm1
6086
vmovdqu 96(%rcx),%xmm0
6087
vaesdec %xmm0,%xmm1,%xmm1
6088
vmovdqu 112(%rcx),%xmm0
6089
vaesdec %xmm0,%xmm1,%xmm1
6090
vmovdqu 128(%rcx),%xmm0
6091
vaesdec %xmm0,%xmm1,%xmm1
6092
vmovdqu 144(%rcx),%xmm0
6093
vaesdec %xmm0,%xmm1,%xmm1
6094
vmovdqu 160(%rcx),%xmm0
6095
vaesdec %xmm0,%xmm1,%xmm1
6096
vmovdqu 176(%rcx),%xmm0
6097
vaesdec %xmm0,%xmm1,%xmm1
6098
vmovdqu 192(%rcx),%xmm0
6099
vaesdec %xmm0,%xmm1,%xmm1
6100
vmovdqu 208(%rcx),%xmm0
6101
vaesdec %xmm0,%xmm1,%xmm1
6102
vmovdqu 224(%rcx),%xmm0
6103
vaesdeclast %xmm0,%xmm1,%xmm1
6104
vpxor %xmm11,%xmm1,%xmm1
6105
vmovdqu %xmm1,(%rsi)
6106
addq $0x10,%rsi
6107
vmovdqa %xmm1,%xmm8
6108
vmovdqa %xmm9,%xmm0
6109
jmp .L_steal_cipher_EmbgEptodyewbFa
6110
6111
.L_done_1_remain_EmbgEptodyewbFa:
6112
vpxor %xmm9,%xmm1,%xmm1
6113
vmovdqu (%rcx),%xmm0
6114
vpxor %xmm0,%xmm1,%xmm1
6115
vmovdqu 16(%rcx),%xmm0
6116
vaesdec %xmm0,%xmm1,%xmm1
6117
vmovdqu 32(%rcx),%xmm0
6118
vaesdec %xmm0,%xmm1,%xmm1
6119
vmovdqu 48(%rcx),%xmm0
6120
vaesdec %xmm0,%xmm1,%xmm1
6121
vmovdqu 64(%rcx),%xmm0
6122
vaesdec %xmm0,%xmm1,%xmm1
6123
vmovdqu 80(%rcx),%xmm0
6124
vaesdec %xmm0,%xmm1,%xmm1
6125
vmovdqu 96(%rcx),%xmm0
6126
vaesdec %xmm0,%xmm1,%xmm1
6127
vmovdqu 112(%rcx),%xmm0
6128
vaesdec %xmm0,%xmm1,%xmm1
6129
vmovdqu 128(%rcx),%xmm0
6130
vaesdec %xmm0,%xmm1,%xmm1
6131
vmovdqu 144(%rcx),%xmm0
6132
vaesdec %xmm0,%xmm1,%xmm1
6133
vmovdqu 160(%rcx),%xmm0
6134
vaesdec %xmm0,%xmm1,%xmm1
6135
vmovdqu 176(%rcx),%xmm0
6136
vaesdec %xmm0,%xmm1,%xmm1
6137
vmovdqu 192(%rcx),%xmm0
6138
vaesdec %xmm0,%xmm1,%xmm1
6139
vmovdqu 208(%rcx),%xmm0
6140
vaesdec %xmm0,%xmm1,%xmm1
6141
vmovdqu 224(%rcx),%xmm0
6142
vaesdeclast %xmm0,%xmm1,%xmm1
6143
vpxor %xmm9,%xmm1,%xmm1
6144
vmovdqu %xmm1,(%rsi)
6145
jmp .L_ret_EmbgEptodyewbFa
6146
6147
.L_start_by16_EmbgEptodyewbFa:
6148
vbroadcasti32x4 (%rsp),%zmm0
6149
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
6150
movq $0xaa,%r8
6151
kmovq %r8,%k2
6152
6153
6154
vpshufb %zmm8,%zmm0,%zmm1
6155
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
6156
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
6157
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
6158
vpxorq %zmm2,%zmm4,%zmm4{%k2}
6159
vpxord %zmm4,%zmm3,%zmm9
6160
6161
6162
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
6163
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
6164
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
6165
vpxorq %zmm6,%zmm5,%zmm5{%k2}
6166
vpxord %zmm5,%zmm7,%zmm10
6167
6168
6169
vpsrldq $0xf,%zmm9,%zmm13
6170
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
6171
vpslldq $0x1,%zmm9,%zmm11
6172
vpxord %zmm14,%zmm11,%zmm11
6173
6174
vpsrldq $0xf,%zmm10,%zmm15
6175
vpclmulqdq $0x0,%zmm25,%zmm15,%zmm16
6176
vpslldq $0x1,%zmm10,%zmm12
6177
vpxord %zmm16,%zmm12,%zmm12
6178
6179
.L_main_loop_run_16_EmbgEptodyewbFa:
6180
vmovdqu8 (%rdi),%zmm1
6181
vmovdqu8 64(%rdi),%zmm2
6182
vmovdqu8 128(%rdi),%zmm3
6183
vmovdqu8 192(%rdi),%zmm4
6184
vmovdqu8 240(%rdi),%xmm5
6185
addq $0x100,%rdi
6186
vpxorq %zmm9,%zmm1,%zmm1
6187
vpxorq %zmm10,%zmm2,%zmm2
6188
vpxorq %zmm11,%zmm3,%zmm3
6189
vpxorq %zmm12,%zmm4,%zmm4
6190
vbroadcasti32x4 (%rcx),%zmm0
6191
vpxorq %zmm0,%zmm1,%zmm1
6192
vpxorq %zmm0,%zmm2,%zmm2
6193
vpxorq %zmm0,%zmm3,%zmm3
6194
vpxorq %zmm0,%zmm4,%zmm4
6195
vpsrldq $0xf,%zmm11,%zmm13
6196
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
6197
vpslldq $0x1,%zmm11,%zmm15
6198
vpxord %zmm14,%zmm15,%zmm15
6199
vbroadcasti32x4 16(%rcx),%zmm0
6200
vaesdec %zmm0,%zmm1,%zmm1
6201
vaesdec %zmm0,%zmm2,%zmm2
6202
vaesdec %zmm0,%zmm3,%zmm3
6203
vaesdec %zmm0,%zmm4,%zmm4
6204
vbroadcasti32x4 32(%rcx),%zmm0
6205
vaesdec %zmm0,%zmm1,%zmm1
6206
vaesdec %zmm0,%zmm2,%zmm2
6207
vaesdec %zmm0,%zmm3,%zmm3
6208
vaesdec %zmm0,%zmm4,%zmm4
6209
vbroadcasti32x4 48(%rcx),%zmm0
6210
vaesdec %zmm0,%zmm1,%zmm1
6211
vaesdec %zmm0,%zmm2,%zmm2
6212
vaesdec %zmm0,%zmm3,%zmm3
6213
vaesdec %zmm0,%zmm4,%zmm4
6214
vpsrldq $0xf,%zmm12,%zmm13
6215
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
6216
vpslldq $0x1,%zmm12,%zmm16
6217
vpxord %zmm14,%zmm16,%zmm16
6218
vbroadcasti32x4 64(%rcx),%zmm0
6219
vaesdec %zmm0,%zmm1,%zmm1
6220
vaesdec %zmm0,%zmm2,%zmm2
6221
vaesdec %zmm0,%zmm3,%zmm3
6222
vaesdec %zmm0,%zmm4,%zmm4
6223
vbroadcasti32x4 80(%rcx),%zmm0
6224
vaesdec %zmm0,%zmm1,%zmm1
6225
vaesdec %zmm0,%zmm2,%zmm2
6226
vaesdec %zmm0,%zmm3,%zmm3
6227
vaesdec %zmm0,%zmm4,%zmm4
6228
vbroadcasti32x4 96(%rcx),%zmm0
6229
vaesdec %zmm0,%zmm1,%zmm1
6230
vaesdec %zmm0,%zmm2,%zmm2
6231
vaesdec %zmm0,%zmm3,%zmm3
6232
vaesdec %zmm0,%zmm4,%zmm4
6233
vpsrldq $0xf,%zmm15,%zmm13
6234
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
6235
vpslldq $0x1,%zmm15,%zmm17
6236
vpxord %zmm14,%zmm17,%zmm17
6237
vbroadcasti32x4 112(%rcx),%zmm0
6238
vaesdec %zmm0,%zmm1,%zmm1
6239
vaesdec %zmm0,%zmm2,%zmm2
6240
vaesdec %zmm0,%zmm3,%zmm3
6241
vaesdec %zmm0,%zmm4,%zmm4
6242
vbroadcasti32x4 128(%rcx),%zmm0
6243
vaesdec %zmm0,%zmm1,%zmm1
6244
vaesdec %zmm0,%zmm2,%zmm2
6245
vaesdec %zmm0,%zmm3,%zmm3
6246
vaesdec %zmm0,%zmm4,%zmm4
6247
vbroadcasti32x4 144(%rcx),%zmm0
6248
vaesdec %zmm0,%zmm1,%zmm1
6249
vaesdec %zmm0,%zmm2,%zmm2
6250
vaesdec %zmm0,%zmm3,%zmm3
6251
vaesdec %zmm0,%zmm4,%zmm4
6252
vpsrldq $0xf,%zmm16,%zmm13
6253
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
6254
vpslldq $0x1,%zmm16,%zmm18
6255
vpxord %zmm14,%zmm18,%zmm18
6256
vbroadcasti32x4 160(%rcx),%zmm0
6257
vaesdec %zmm0,%zmm1,%zmm1
6258
vaesdec %zmm0,%zmm2,%zmm2
6259
vaesdec %zmm0,%zmm3,%zmm3
6260
vaesdec %zmm0,%zmm4,%zmm4
6261
vbroadcasti32x4 176(%rcx),%zmm0
6262
vaesdec %zmm0,%zmm1,%zmm1
6263
vaesdec %zmm0,%zmm2,%zmm2
6264
vaesdec %zmm0,%zmm3,%zmm3
6265
vaesdec %zmm0,%zmm4,%zmm4
6266
vbroadcasti32x4 192(%rcx),%zmm0
6267
vaesdec %zmm0,%zmm1,%zmm1
6268
vaesdec %zmm0,%zmm2,%zmm2
6269
vaesdec %zmm0,%zmm3,%zmm3
6270
vaesdec %zmm0,%zmm4,%zmm4
6271
vbroadcasti32x4 208(%rcx),%zmm0
6272
vaesdec %zmm0,%zmm1,%zmm1
6273
vaesdec %zmm0,%zmm2,%zmm2
6274
vaesdec %zmm0,%zmm3,%zmm3
6275
vaesdec %zmm0,%zmm4,%zmm4
6276
vbroadcasti32x4 224(%rcx),%zmm0
6277
vaesdeclast %zmm0,%zmm1,%zmm1
6278
vaesdeclast %zmm0,%zmm2,%zmm2
6279
vaesdeclast %zmm0,%zmm3,%zmm3
6280
vaesdeclast %zmm0,%zmm4,%zmm4
6281
vpxorq %zmm9,%zmm1,%zmm1
6282
vpxorq %zmm10,%zmm2,%zmm2
6283
vpxorq %zmm11,%zmm3,%zmm3
6284
vpxorq %zmm12,%zmm4,%zmm4
6285
6286
vmovdqa32 %zmm15,%zmm9
6287
vmovdqa32 %zmm16,%zmm10
6288
vmovdqa32 %zmm17,%zmm11
6289
vmovdqa32 %zmm18,%zmm12
6290
vmovdqu8 %zmm1,(%rsi)
6291
vmovdqu8 %zmm2,64(%rsi)
6292
vmovdqu8 %zmm3,128(%rsi)
6293
vmovdqu8 %zmm4,192(%rsi)
6294
addq $0x100,%rsi
6295
subq $0x100,%rdx
6296
cmpq $0x100,%rdx
6297
jge .L_main_loop_run_16_EmbgEptodyewbFa
6298
6299
cmpq $0x80,%rdx
6300
jge .L_main_loop_run_8_EmbgEptodyewbFa
6301
jmp .L_do_n_blocks_EmbgEptodyewbFa
6302
6303
.L_start_by8_EmbgEptodyewbFa:
6304
6305
vbroadcasti32x4 (%rsp),%zmm0
6306
vbroadcasti32x4 shufb_15_7(%rip),%zmm8
6307
movq $0xaa,%r8
6308
kmovq %r8,%k2
6309
6310
6311
vpshufb %zmm8,%zmm0,%zmm1
6312
vpsllvq const_dq3210(%rip),%zmm0,%zmm4
6313
vpsrlvq const_dq5678(%rip),%zmm1,%zmm2
6314
vpclmulqdq $0x0,%zmm25,%zmm2,%zmm3
6315
vpxorq %zmm2,%zmm4,%zmm4{%k2}
6316
vpxord %zmm4,%zmm3,%zmm9
6317
6318
6319
vpsllvq const_dq7654(%rip),%zmm0,%zmm5
6320
vpsrlvq const_dq1234(%rip),%zmm1,%zmm6
6321
vpclmulqdq $0x0,%zmm25,%zmm6,%zmm7
6322
vpxorq %zmm6,%zmm5,%zmm5{%k2}
6323
vpxord %zmm5,%zmm7,%zmm10
6324
6325
.L_main_loop_run_8_EmbgEptodyewbFa:
6326
vmovdqu8 (%rdi),%zmm1
6327
vmovdqu8 64(%rdi),%zmm2
6328
vmovdqu8 112(%rdi),%xmm5
6329
addq $0x80,%rdi
6330
6331
vpxorq %zmm9,%zmm1,%zmm1
6332
vpxorq %zmm10,%zmm2,%zmm2
6333
6334
6335
vbroadcasti32x4 (%rcx),%zmm0
6336
vpxorq %zmm0,%zmm1,%zmm1
6337
vpxorq %zmm0,%zmm2,%zmm2
6338
vpsrldq $0xf,%zmm9,%zmm13
6339
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
6340
vpslldq $0x1,%zmm9,%zmm15
6341
vpxord %zmm14,%zmm15,%zmm15
6342
vbroadcasti32x4 16(%rcx),%zmm0
6343
vaesdec %zmm0,%zmm1,%zmm1
6344
vaesdec %zmm0,%zmm2,%zmm2
6345
6346
6347
vbroadcasti32x4 32(%rcx),%zmm0
6348
vaesdec %zmm0,%zmm1,%zmm1
6349
vaesdec %zmm0,%zmm2,%zmm2
6350
6351
6352
vbroadcasti32x4 48(%rcx),%zmm0
6353
vaesdec %zmm0,%zmm1,%zmm1
6354
vaesdec %zmm0,%zmm2,%zmm2
6355
vpsrldq $0xf,%zmm10,%zmm13
6356
vpclmulqdq $0x0,%zmm25,%zmm13,%zmm14
6357
vpslldq $0x1,%zmm10,%zmm16
6358
vpxord %zmm14,%zmm16,%zmm16
6359
6360
vbroadcasti32x4 64(%rcx),%zmm0
6361
vaesdec %zmm0,%zmm1,%zmm1
6362
vaesdec %zmm0,%zmm2,%zmm2
6363
6364
6365
vbroadcasti32x4 80(%rcx),%zmm0
6366
vaesdec %zmm0,%zmm1,%zmm1
6367
vaesdec %zmm0,%zmm2,%zmm2
6368
6369
6370
vbroadcasti32x4 96(%rcx),%zmm0
6371
vaesdec %zmm0,%zmm1,%zmm1
6372
vaesdec %zmm0,%zmm2,%zmm2
6373
6374
6375
vbroadcasti32x4 112(%rcx),%zmm0
6376
vaesdec %zmm0,%zmm1,%zmm1
6377
vaesdec %zmm0,%zmm2,%zmm2
6378
6379
6380
vbroadcasti32x4 128(%rcx),%zmm0
6381
vaesdec %zmm0,%zmm1,%zmm1
6382
vaesdec %zmm0,%zmm2,%zmm2
6383
6384
6385
vbroadcasti32x4 144(%rcx),%zmm0
6386
vaesdec %zmm0,%zmm1,%zmm1
6387
vaesdec %zmm0,%zmm2,%zmm2
6388
6389
6390
vbroadcasti32x4 160(%rcx),%zmm0
6391
vaesdec %zmm0,%zmm1,%zmm1
6392
vaesdec %zmm0,%zmm2,%zmm2
6393
6394
6395
vbroadcasti32x4 176(%rcx),%zmm0
6396
vaesdec %zmm0,%zmm1,%zmm1
6397
vaesdec %zmm0,%zmm2,%zmm2
6398
6399
6400
vbroadcasti32x4 192(%rcx),%zmm0
6401
vaesdec %zmm0,%zmm1,%zmm1
6402
vaesdec %zmm0,%zmm2,%zmm2
6403
6404
6405
vbroadcasti32x4 208(%rcx),%zmm0
6406
vaesdec %zmm0,%zmm1,%zmm1
6407
vaesdec %zmm0,%zmm2,%zmm2
6408
6409
6410
vbroadcasti32x4 224(%rcx),%zmm0
6411
vaesdeclast %zmm0,%zmm1,%zmm1
6412
vaesdeclast %zmm0,%zmm2,%zmm2
6413
6414
vpxorq %zmm9,%zmm1,%zmm1
6415
vpxorq %zmm10,%zmm2,%zmm2
6416
6417
6418
vmovdqa32 %zmm15,%zmm9
6419
vmovdqa32 %zmm16,%zmm10
6420
vmovdqu8 %zmm1,(%rsi)
6421
vmovdqu8 %zmm2,64(%rsi)
6422
addq $0x80,%rsi
6423
subq $0x80,%rdx
6424
cmpq $0x80,%rdx
6425
jge .L_main_loop_run_8_EmbgEptodyewbFa
6426
jmp .L_do_n_blocks_EmbgEptodyewbFa
6427
6428
.L_steal_cipher_EmbgEptodyewbFa:
6429
6430
vmovdqa %xmm8,%xmm2
6431
6432
6433
leaq vpshufb_shf_table(%rip),%rax
6434
vmovdqu (%rax,%rdx,1),%xmm10
6435
vpshufb %xmm10,%xmm8,%xmm8
6436
6437
6438
vmovdqu -16(%rdi,%rdx,1),%xmm3
6439
vmovdqu %xmm8,-16(%rsi,%rdx,1)
6440
6441
6442
leaq vpshufb_shf_table(%rip),%rax
6443
addq $16,%rax
6444
subq %rdx,%rax
6445
vmovdqu (%rax),%xmm10
6446
vpxor mask1(%rip),%xmm10,%xmm10
6447
vpshufb %xmm10,%xmm3,%xmm3
6448
6449
vpblendvb %xmm10,%xmm2,%xmm3,%xmm3
6450
6451
6452
vpxor %xmm0,%xmm3,%xmm8
6453
6454
6455
vpxor (%rcx),%xmm8,%xmm8
6456
vaesdec 16(%rcx),%xmm8,%xmm8
6457
vaesdec 32(%rcx),%xmm8,%xmm8
6458
vaesdec 48(%rcx),%xmm8,%xmm8
6459
vaesdec 64(%rcx),%xmm8,%xmm8
6460
vaesdec 80(%rcx),%xmm8,%xmm8
6461
vaesdec 96(%rcx),%xmm8,%xmm8
6462
vaesdec 112(%rcx),%xmm8,%xmm8
6463
vaesdec 128(%rcx),%xmm8,%xmm8
6464
vaesdec 144(%rcx),%xmm8,%xmm8
6465
vaesdec 160(%rcx),%xmm8,%xmm8
6466
vaesdec 176(%rcx),%xmm8,%xmm8
6467
vaesdec 192(%rcx),%xmm8,%xmm8
6468
vaesdec 208(%rcx),%xmm8,%xmm8
6469
vaesdeclast 224(%rcx),%xmm8,%xmm8
6470
6471
vpxor %xmm0,%xmm8,%xmm8
6472
6473
.L_done_EmbgEptodyewbFa:
6474
6475
vmovdqu %xmm8,-16(%rsi)
6476
.L_ret_EmbgEptodyewbFa:
6477
movq 128(%rsp),%rbx
6478
xorq %r8,%r8
6479
movq %r8,128(%rsp)
6480
6481
vpxorq %zmm0,%zmm0,%zmm0
6482
movq %rbp,%rsp
6483
popq %rbp
6484
vzeroupper
6485
.byte 0xf3,0xc3
6486
6487
.L_less_than_128_bytes_EmbgEptodyewbFa:
6488
cmpq $0x10,%rdx
6489
jb .L_ret_EmbgEptodyewbFa
6490
6491
movq %rdx,%r8
6492
andq $0x70,%r8
6493
cmpq $0x60,%r8
6494
je .L_num_blocks_is_6_EmbgEptodyewbFa
6495
cmpq $0x50,%r8
6496
je .L_num_blocks_is_5_EmbgEptodyewbFa
6497
cmpq $0x40,%r8
6498
je .L_num_blocks_is_4_EmbgEptodyewbFa
6499
cmpq $0x30,%r8
6500
je .L_num_blocks_is_3_EmbgEptodyewbFa
6501
cmpq $0x20,%r8
6502
je .L_num_blocks_is_2_EmbgEptodyewbFa
6503
cmpq $0x10,%r8
6504
je .L_num_blocks_is_1_EmbgEptodyewbFa
6505
6506
.L_num_blocks_is_7_EmbgEptodyewbFa:
6507
vmovdqa 0(%rsp),%xmm9
6508
movq 0(%rsp),%rax
6509
movq 8(%rsp),%rbx
6510
vmovdqu 0(%rdi),%xmm1
6511
xorq %r11,%r11
6512
shlq $1,%rax
6513
adcq %rbx,%rbx
6514
cmovcq %r10,%r11
6515
xorq %r11,%rax
6516
movq %rax,16(%rsp)
6517
movq %rbx,16 + 8(%rsp)
6518
vmovdqa 16(%rsp),%xmm10
6519
vmovdqu 16(%rdi),%xmm2
6520
xorq %r11,%r11
6521
shlq $1,%rax
6522
adcq %rbx,%rbx
6523
cmovcq %r10,%r11
6524
xorq %r11,%rax
6525
movq %rax,32(%rsp)
6526
movq %rbx,32 + 8(%rsp)
6527
vmovdqa 32(%rsp),%xmm11
6528
vmovdqu 32(%rdi),%xmm3
6529
xorq %r11,%r11
6530
shlq $1,%rax
6531
adcq %rbx,%rbx
6532
cmovcq %r10,%r11
6533
xorq %r11,%rax
6534
movq %rax,48(%rsp)
6535
movq %rbx,48 + 8(%rsp)
6536
vmovdqa 48(%rsp),%xmm12
6537
vmovdqu 48(%rdi),%xmm4
6538
xorq %r11,%r11
6539
shlq $1,%rax
6540
adcq %rbx,%rbx
6541
cmovcq %r10,%r11
6542
xorq %r11,%rax
6543
movq %rax,64(%rsp)
6544
movq %rbx,64 + 8(%rsp)
6545
vmovdqa 64(%rsp),%xmm13
6546
vmovdqu 64(%rdi),%xmm5
6547
xorq %r11,%r11
6548
shlq $1,%rax
6549
adcq %rbx,%rbx
6550
cmovcq %r10,%r11
6551
xorq %r11,%rax
6552
movq %rax,80(%rsp)
6553
movq %rbx,80 + 8(%rsp)
6554
vmovdqa 80(%rsp),%xmm14
6555
vmovdqu 80(%rdi),%xmm6
6556
xorq %r11,%r11
6557
shlq $1,%rax
6558
adcq %rbx,%rbx
6559
cmovcq %r10,%r11
6560
xorq %r11,%rax
6561
movq %rax,96(%rsp)
6562
movq %rbx,96 + 8(%rsp)
6563
vmovdqa 96(%rsp),%xmm15
6564
vmovdqu 96(%rdi),%xmm7
6565
addq $0x70,%rdi
6566
andq $0xf,%rdx
6567
je .L_done_7_EmbgEptodyewbFa
6568
6569
.L_steal_cipher_7_EmbgEptodyewbFa:
6570
xorq %r11,%r11
6571
shlq $1,%rax
6572
adcq %rbx,%rbx
6573
cmovcq %r10,%r11
6574
xorq %r11,%rax
6575
movq %rax,16(%rsp)
6576
movq %rbx,24(%rsp)
6577
vmovdqa64 %xmm15,%xmm16
6578
vmovdqa 16(%rsp),%xmm15
6579
vpxor %xmm9,%xmm1,%xmm1
6580
vpxor %xmm10,%xmm2,%xmm2
6581
vpxor %xmm11,%xmm3,%xmm3
6582
vpxor %xmm12,%xmm4,%xmm4
6583
vpxor %xmm13,%xmm5,%xmm5
6584
vpxor %xmm14,%xmm6,%xmm6
6585
vpxor %xmm15,%xmm7,%xmm7
6586
vmovdqu (%rcx),%xmm0
6587
vpxor %xmm0,%xmm1,%xmm1
6588
vpxor %xmm0,%xmm2,%xmm2
6589
vpxor %xmm0,%xmm3,%xmm3
6590
vpxor %xmm0,%xmm4,%xmm4
6591
vpxor %xmm0,%xmm5,%xmm5
6592
vpxor %xmm0,%xmm6,%xmm6
6593
vpxor %xmm0,%xmm7,%xmm7
6594
vmovdqu 16(%rcx),%xmm0
6595
vaesdec %xmm0,%xmm1,%xmm1
6596
vaesdec %xmm0,%xmm2,%xmm2
6597
vaesdec %xmm0,%xmm3,%xmm3
6598
vaesdec %xmm0,%xmm4,%xmm4
6599
vaesdec %xmm0,%xmm5,%xmm5
6600
vaesdec %xmm0,%xmm6,%xmm6
6601
vaesdec %xmm0,%xmm7,%xmm7
6602
vmovdqu 32(%rcx),%xmm0
6603
vaesdec %xmm0,%xmm1,%xmm1
6604
vaesdec %xmm0,%xmm2,%xmm2
6605
vaesdec %xmm0,%xmm3,%xmm3
6606
vaesdec %xmm0,%xmm4,%xmm4
6607
vaesdec %xmm0,%xmm5,%xmm5
6608
vaesdec %xmm0,%xmm6,%xmm6
6609
vaesdec %xmm0,%xmm7,%xmm7
6610
vmovdqu 48(%rcx),%xmm0
6611
vaesdec %xmm0,%xmm1,%xmm1
6612
vaesdec %xmm0,%xmm2,%xmm2
6613
vaesdec %xmm0,%xmm3,%xmm3
6614
vaesdec %xmm0,%xmm4,%xmm4
6615
vaesdec %xmm0,%xmm5,%xmm5
6616
vaesdec %xmm0,%xmm6,%xmm6
6617
vaesdec %xmm0,%xmm7,%xmm7
6618
vmovdqu 64(%rcx),%xmm0
6619
vaesdec %xmm0,%xmm1,%xmm1
6620
vaesdec %xmm0,%xmm2,%xmm2
6621
vaesdec %xmm0,%xmm3,%xmm3
6622
vaesdec %xmm0,%xmm4,%xmm4
6623
vaesdec %xmm0,%xmm5,%xmm5
6624
vaesdec %xmm0,%xmm6,%xmm6
6625
vaesdec %xmm0,%xmm7,%xmm7
6626
vmovdqu 80(%rcx),%xmm0
6627
vaesdec %xmm0,%xmm1,%xmm1
6628
vaesdec %xmm0,%xmm2,%xmm2
6629
vaesdec %xmm0,%xmm3,%xmm3
6630
vaesdec %xmm0,%xmm4,%xmm4
6631
vaesdec %xmm0,%xmm5,%xmm5
6632
vaesdec %xmm0,%xmm6,%xmm6
6633
vaesdec %xmm0,%xmm7,%xmm7
6634
vmovdqu 96(%rcx),%xmm0
6635
vaesdec %xmm0,%xmm1,%xmm1
6636
vaesdec %xmm0,%xmm2,%xmm2
6637
vaesdec %xmm0,%xmm3,%xmm3
6638
vaesdec %xmm0,%xmm4,%xmm4
6639
vaesdec %xmm0,%xmm5,%xmm5
6640
vaesdec %xmm0,%xmm6,%xmm6
6641
vaesdec %xmm0,%xmm7,%xmm7
6642
vmovdqu 112(%rcx),%xmm0
6643
vaesdec %xmm0,%xmm1,%xmm1
6644
vaesdec %xmm0,%xmm2,%xmm2
6645
vaesdec %xmm0,%xmm3,%xmm3
6646
vaesdec %xmm0,%xmm4,%xmm4
6647
vaesdec %xmm0,%xmm5,%xmm5
6648
vaesdec %xmm0,%xmm6,%xmm6
6649
vaesdec %xmm0,%xmm7,%xmm7
6650
vmovdqu 128(%rcx),%xmm0
6651
vaesdec %xmm0,%xmm1,%xmm1
6652
vaesdec %xmm0,%xmm2,%xmm2
6653
vaesdec %xmm0,%xmm3,%xmm3
6654
vaesdec %xmm0,%xmm4,%xmm4
6655
vaesdec %xmm0,%xmm5,%xmm5
6656
vaesdec %xmm0,%xmm6,%xmm6
6657
vaesdec %xmm0,%xmm7,%xmm7
6658
vmovdqu 144(%rcx),%xmm0
6659
vaesdec %xmm0,%xmm1,%xmm1
6660
vaesdec %xmm0,%xmm2,%xmm2
6661
vaesdec %xmm0,%xmm3,%xmm3
6662
vaesdec %xmm0,%xmm4,%xmm4
6663
vaesdec %xmm0,%xmm5,%xmm5
6664
vaesdec %xmm0,%xmm6,%xmm6
6665
vaesdec %xmm0,%xmm7,%xmm7
6666
vmovdqu 160(%rcx),%xmm0
6667
vaesdec %xmm0,%xmm1,%xmm1
6668
vaesdec %xmm0,%xmm2,%xmm2
6669
vaesdec %xmm0,%xmm3,%xmm3
6670
vaesdec %xmm0,%xmm4,%xmm4
6671
vaesdec %xmm0,%xmm5,%xmm5
6672
vaesdec %xmm0,%xmm6,%xmm6
6673
vaesdec %xmm0,%xmm7,%xmm7
6674
vmovdqu 176(%rcx),%xmm0
6675
vaesdec %xmm0,%xmm1,%xmm1
6676
vaesdec %xmm0,%xmm2,%xmm2
6677
vaesdec %xmm0,%xmm3,%xmm3
6678
vaesdec %xmm0,%xmm4,%xmm4
6679
vaesdec %xmm0,%xmm5,%xmm5
6680
vaesdec %xmm0,%xmm6,%xmm6
6681
vaesdec %xmm0,%xmm7,%xmm7
6682
vmovdqu 192(%rcx),%xmm0
6683
vaesdec %xmm0,%xmm1,%xmm1
6684
vaesdec %xmm0,%xmm2,%xmm2
6685
vaesdec %xmm0,%xmm3,%xmm3
6686
vaesdec %xmm0,%xmm4,%xmm4
6687
vaesdec %xmm0,%xmm5,%xmm5
6688
vaesdec %xmm0,%xmm6,%xmm6
6689
vaesdec %xmm0,%xmm7,%xmm7
6690
vmovdqu 208(%rcx),%xmm0
6691
vaesdec %xmm0,%xmm1,%xmm1
6692
vaesdec %xmm0,%xmm2,%xmm2
6693
vaesdec %xmm0,%xmm3,%xmm3
6694
vaesdec %xmm0,%xmm4,%xmm4
6695
vaesdec %xmm0,%xmm5,%xmm5
6696
vaesdec %xmm0,%xmm6,%xmm6
6697
vaesdec %xmm0,%xmm7,%xmm7
6698
vmovdqu 224(%rcx),%xmm0
6699
vaesdeclast %xmm0,%xmm1,%xmm1
6700
vaesdeclast %xmm0,%xmm2,%xmm2
6701
vaesdeclast %xmm0,%xmm3,%xmm3
6702
vaesdeclast %xmm0,%xmm4,%xmm4
6703
vaesdeclast %xmm0,%xmm5,%xmm5
6704
vaesdeclast %xmm0,%xmm6,%xmm6
6705
vaesdeclast %xmm0,%xmm7,%xmm7
6706
vpxor %xmm9,%xmm1,%xmm1
6707
vpxor %xmm10,%xmm2,%xmm2
6708
vpxor %xmm11,%xmm3,%xmm3
6709
vpxor %xmm12,%xmm4,%xmm4
6710
vpxor %xmm13,%xmm5,%xmm5
6711
vpxor %xmm14,%xmm6,%xmm6
6712
vpxor %xmm15,%xmm7,%xmm7
6713
vmovdqu %xmm1,(%rsi)
6714
vmovdqu %xmm2,16(%rsi)
6715
vmovdqu %xmm3,32(%rsi)
6716
vmovdqu %xmm4,48(%rsi)
6717
vmovdqu %xmm5,64(%rsi)
6718
vmovdqu %xmm6,80(%rsi)
6719
addq $0x70,%rsi
6720
vmovdqa64 %xmm16,%xmm0
6721
vmovdqa %xmm7,%xmm8
6722
jmp .L_steal_cipher_EmbgEptodyewbFa
6723
6724
.L_done_7_EmbgEptodyewbFa:
6725
vpxor %xmm9,%xmm1,%xmm1
6726
vpxor %xmm10,%xmm2,%xmm2
6727
vpxor %xmm11,%xmm3,%xmm3
6728
vpxor %xmm12,%xmm4,%xmm4
6729
vpxor %xmm13,%xmm5,%xmm5
6730
vpxor %xmm14,%xmm6,%xmm6
6731
vpxor %xmm15,%xmm7,%xmm7
6732
vmovdqu (%rcx),%xmm0
6733
vpxor %xmm0,%xmm1,%xmm1
6734
vpxor %xmm0,%xmm2,%xmm2
6735
vpxor %xmm0,%xmm3,%xmm3
6736
vpxor %xmm0,%xmm4,%xmm4
6737
vpxor %xmm0,%xmm5,%xmm5
6738
vpxor %xmm0,%xmm6,%xmm6
6739
vpxor %xmm0,%xmm7,%xmm7
6740
vmovdqu 16(%rcx),%xmm0
6741
vaesdec %xmm0,%xmm1,%xmm1
6742
vaesdec %xmm0,%xmm2,%xmm2
6743
vaesdec %xmm0,%xmm3,%xmm3
6744
vaesdec %xmm0,%xmm4,%xmm4
6745
vaesdec %xmm0,%xmm5,%xmm5
6746
vaesdec %xmm0,%xmm6,%xmm6
6747
vaesdec %xmm0,%xmm7,%xmm7
6748
vmovdqu 32(%rcx),%xmm0
6749
vaesdec %xmm0,%xmm1,%xmm1
6750
vaesdec %xmm0,%xmm2,%xmm2
6751
vaesdec %xmm0,%xmm3,%xmm3
6752
vaesdec %xmm0,%xmm4,%xmm4
6753
vaesdec %xmm0,%xmm5,%xmm5
6754
vaesdec %xmm0,%xmm6,%xmm6
6755
vaesdec %xmm0,%xmm7,%xmm7
6756
vmovdqu 48(%rcx),%xmm0
6757
vaesdec %xmm0,%xmm1,%xmm1
6758
vaesdec %xmm0,%xmm2,%xmm2
6759
vaesdec %xmm0,%xmm3,%xmm3
6760
vaesdec %xmm0,%xmm4,%xmm4
6761
vaesdec %xmm0,%xmm5,%xmm5
6762
vaesdec %xmm0,%xmm6,%xmm6
6763
vaesdec %xmm0,%xmm7,%xmm7
6764
vmovdqu 64(%rcx),%xmm0
6765
vaesdec %xmm0,%xmm1,%xmm1
6766
vaesdec %xmm0,%xmm2,%xmm2
6767
vaesdec %xmm0,%xmm3,%xmm3
6768
vaesdec %xmm0,%xmm4,%xmm4
6769
vaesdec %xmm0,%xmm5,%xmm5
6770
vaesdec %xmm0,%xmm6,%xmm6
6771
vaesdec %xmm0,%xmm7,%xmm7
6772
vmovdqu 80(%rcx),%xmm0
6773
vaesdec %xmm0,%xmm1,%xmm1
6774
vaesdec %xmm0,%xmm2,%xmm2
6775
vaesdec %xmm0,%xmm3,%xmm3
6776
vaesdec %xmm0,%xmm4,%xmm4
6777
vaesdec %xmm0,%xmm5,%xmm5
6778
vaesdec %xmm0,%xmm6,%xmm6
6779
vaesdec %xmm0,%xmm7,%xmm7
6780
vmovdqu 96(%rcx),%xmm0
6781
vaesdec %xmm0,%xmm1,%xmm1
6782
vaesdec %xmm0,%xmm2,%xmm2
6783
vaesdec %xmm0,%xmm3,%xmm3
6784
vaesdec %xmm0,%xmm4,%xmm4
6785
vaesdec %xmm0,%xmm5,%xmm5
6786
vaesdec %xmm0,%xmm6,%xmm6
6787
vaesdec %xmm0,%xmm7,%xmm7
6788
vmovdqu 112(%rcx),%xmm0
6789
vaesdec %xmm0,%xmm1,%xmm1
6790
vaesdec %xmm0,%xmm2,%xmm2
6791
vaesdec %xmm0,%xmm3,%xmm3
6792
vaesdec %xmm0,%xmm4,%xmm4
6793
vaesdec %xmm0,%xmm5,%xmm5
6794
vaesdec %xmm0,%xmm6,%xmm6
6795
vaesdec %xmm0,%xmm7,%xmm7
6796
vmovdqu 128(%rcx),%xmm0
6797
vaesdec %xmm0,%xmm1,%xmm1
6798
vaesdec %xmm0,%xmm2,%xmm2
6799
vaesdec %xmm0,%xmm3,%xmm3
6800
vaesdec %xmm0,%xmm4,%xmm4
6801
vaesdec %xmm0,%xmm5,%xmm5
6802
vaesdec %xmm0,%xmm6,%xmm6
6803
vaesdec %xmm0,%xmm7,%xmm7
6804
vmovdqu 144(%rcx),%xmm0
6805
vaesdec %xmm0,%xmm1,%xmm1
6806
vaesdec %xmm0,%xmm2,%xmm2
6807
vaesdec %xmm0,%xmm3,%xmm3
6808
vaesdec %xmm0,%xmm4,%xmm4
6809
vaesdec %xmm0,%xmm5,%xmm5
6810
vaesdec %xmm0,%xmm6,%xmm6
6811
vaesdec %xmm0,%xmm7,%xmm7
6812
vmovdqu 160(%rcx),%xmm0
6813
vaesdec %xmm0,%xmm1,%xmm1
6814
vaesdec %xmm0,%xmm2,%xmm2
6815
vaesdec %xmm0,%xmm3,%xmm3
6816
vaesdec %xmm0,%xmm4,%xmm4
6817
vaesdec %xmm0,%xmm5,%xmm5
6818
vaesdec %xmm0,%xmm6,%xmm6
6819
vaesdec %xmm0,%xmm7,%xmm7
6820
vmovdqu 176(%rcx),%xmm0
6821
vaesdec %xmm0,%xmm1,%xmm1
6822
vaesdec %xmm0,%xmm2,%xmm2
6823
vaesdec %xmm0,%xmm3,%xmm3
6824
vaesdec %xmm0,%xmm4,%xmm4
6825
vaesdec %xmm0,%xmm5,%xmm5
6826
vaesdec %xmm0,%xmm6,%xmm6
6827
vaesdec %xmm0,%xmm7,%xmm7
6828
vmovdqu 192(%rcx),%xmm0
6829
vaesdec %xmm0,%xmm1,%xmm1
6830
vaesdec %xmm0,%xmm2,%xmm2
6831
vaesdec %xmm0,%xmm3,%xmm3
6832
vaesdec %xmm0,%xmm4,%xmm4
6833
vaesdec %xmm0,%xmm5,%xmm5
6834
vaesdec %xmm0,%xmm6,%xmm6
6835
vaesdec %xmm0,%xmm7,%xmm7
6836
vmovdqu 208(%rcx),%xmm0
6837
vaesdec %xmm0,%xmm1,%xmm1
6838
vaesdec %xmm0,%xmm2,%xmm2
6839
vaesdec %xmm0,%xmm3,%xmm3
6840
vaesdec %xmm0,%xmm4,%xmm4
6841
vaesdec %xmm0,%xmm5,%xmm5
6842
vaesdec %xmm0,%xmm6,%xmm6
6843
vaesdec %xmm0,%xmm7,%xmm7
6844
vmovdqu 224(%rcx),%xmm0
6845
vaesdeclast %xmm0,%xmm1,%xmm1
6846
vaesdeclast %xmm0,%xmm2,%xmm2
6847
vaesdeclast %xmm0,%xmm3,%xmm3
6848
vaesdeclast %xmm0,%xmm4,%xmm4
6849
vaesdeclast %xmm0,%xmm5,%xmm5
6850
vaesdeclast %xmm0,%xmm6,%xmm6
6851
vaesdeclast %xmm0,%xmm7,%xmm7
6852
vpxor %xmm9,%xmm1,%xmm1
6853
vpxor %xmm10,%xmm2,%xmm2
6854
vpxor %xmm11,%xmm3,%xmm3
6855
vpxor %xmm12,%xmm4,%xmm4
6856
vpxor %xmm13,%xmm5,%xmm5
6857
vpxor %xmm14,%xmm6,%xmm6
6858
vpxor %xmm15,%xmm7,%xmm7
6859
vmovdqu %xmm1,(%rsi)
6860
vmovdqu %xmm2,16(%rsi)
6861
vmovdqu %xmm3,32(%rsi)
6862
vmovdqu %xmm4,48(%rsi)
6863
vmovdqu %xmm5,64(%rsi)
6864
vmovdqu %xmm6,80(%rsi)
6865
addq $0x70,%rsi
6866
vmovdqa %xmm7,%xmm8
6867
jmp .L_done_EmbgEptodyewbFa
6868
6869
.L_num_blocks_is_6_EmbgEptodyewbFa:
6870
vmovdqa 0(%rsp),%xmm9
6871
movq 0(%rsp),%rax
6872
movq 8(%rsp),%rbx
6873
vmovdqu 0(%rdi),%xmm1
6874
xorq %r11,%r11
6875
shlq $1,%rax
6876
adcq %rbx,%rbx
6877
cmovcq %r10,%r11
6878
xorq %r11,%rax
6879
movq %rax,16(%rsp)
6880
movq %rbx,16 + 8(%rsp)
6881
vmovdqa 16(%rsp),%xmm10
6882
vmovdqu 16(%rdi),%xmm2
6883
xorq %r11,%r11
6884
shlq $1,%rax
6885
adcq %rbx,%rbx
6886
cmovcq %r10,%r11
6887
xorq %r11,%rax
6888
movq %rax,32(%rsp)
6889
movq %rbx,32 + 8(%rsp)
6890
vmovdqa 32(%rsp),%xmm11
6891
vmovdqu 32(%rdi),%xmm3
6892
xorq %r11,%r11
6893
shlq $1,%rax
6894
adcq %rbx,%rbx
6895
cmovcq %r10,%r11
6896
xorq %r11,%rax
6897
movq %rax,48(%rsp)
6898
movq %rbx,48 + 8(%rsp)
6899
vmovdqa 48(%rsp),%xmm12
6900
vmovdqu 48(%rdi),%xmm4
6901
xorq %r11,%r11
6902
shlq $1,%rax
6903
adcq %rbx,%rbx
6904
cmovcq %r10,%r11
6905
xorq %r11,%rax
6906
movq %rax,64(%rsp)
6907
movq %rbx,64 + 8(%rsp)
6908
vmovdqa 64(%rsp),%xmm13
6909
vmovdqu 64(%rdi),%xmm5
6910
xorq %r11,%r11
6911
shlq $1,%rax
6912
adcq %rbx,%rbx
6913
cmovcq %r10,%r11
6914
xorq %r11,%rax
6915
movq %rax,80(%rsp)
6916
movq %rbx,80 + 8(%rsp)
6917
vmovdqa 80(%rsp),%xmm14
6918
vmovdqu 80(%rdi),%xmm6
6919
addq $0x60,%rdi
6920
andq $0xf,%rdx
6921
je .L_done_6_EmbgEptodyewbFa
6922
6923
.L_steal_cipher_6_EmbgEptodyewbFa:
6924
xorq %r11,%r11
6925
shlq $1,%rax
6926
adcq %rbx,%rbx
6927
cmovcq %r10,%r11
6928
xorq %r11,%rax
6929
movq %rax,16(%rsp)
6930
movq %rbx,24(%rsp)
6931
vmovdqa64 %xmm14,%xmm15
6932
vmovdqa 16(%rsp),%xmm14
6933
vpxor %xmm9,%xmm1,%xmm1
6934
vpxor %xmm10,%xmm2,%xmm2
6935
vpxor %xmm11,%xmm3,%xmm3
6936
vpxor %xmm12,%xmm4,%xmm4
6937
vpxor %xmm13,%xmm5,%xmm5
6938
vpxor %xmm14,%xmm6,%xmm6
6939
vmovdqu (%rcx),%xmm0
6940
vpxor %xmm0,%xmm1,%xmm1
6941
vpxor %xmm0,%xmm2,%xmm2
6942
vpxor %xmm0,%xmm3,%xmm3
6943
vpxor %xmm0,%xmm4,%xmm4
6944
vpxor %xmm0,%xmm5,%xmm5
6945
vpxor %xmm0,%xmm6,%xmm6
6946
vmovdqu 16(%rcx),%xmm0
6947
vaesdec %xmm0,%xmm1,%xmm1
6948
vaesdec %xmm0,%xmm2,%xmm2
6949
vaesdec %xmm0,%xmm3,%xmm3
6950
vaesdec %xmm0,%xmm4,%xmm4
6951
vaesdec %xmm0,%xmm5,%xmm5
6952
vaesdec %xmm0,%xmm6,%xmm6
6953
vmovdqu 32(%rcx),%xmm0
6954
vaesdec %xmm0,%xmm1,%xmm1
6955
vaesdec %xmm0,%xmm2,%xmm2
6956
vaesdec %xmm0,%xmm3,%xmm3
6957
vaesdec %xmm0,%xmm4,%xmm4
6958
vaesdec %xmm0,%xmm5,%xmm5
6959
vaesdec %xmm0,%xmm6,%xmm6
6960
vmovdqu 48(%rcx),%xmm0
6961
vaesdec %xmm0,%xmm1,%xmm1
6962
vaesdec %xmm0,%xmm2,%xmm2
6963
vaesdec %xmm0,%xmm3,%xmm3
6964
vaesdec %xmm0,%xmm4,%xmm4
6965
vaesdec %xmm0,%xmm5,%xmm5
6966
vaesdec %xmm0,%xmm6,%xmm6
6967
vmovdqu 64(%rcx),%xmm0
6968
vaesdec %xmm0,%xmm1,%xmm1
6969
vaesdec %xmm0,%xmm2,%xmm2
6970
vaesdec %xmm0,%xmm3,%xmm3
6971
vaesdec %xmm0,%xmm4,%xmm4
6972
vaesdec %xmm0,%xmm5,%xmm5
6973
vaesdec %xmm0,%xmm6,%xmm6
6974
vmovdqu 80(%rcx),%xmm0
6975
vaesdec %xmm0,%xmm1,%xmm1
6976
vaesdec %xmm0,%xmm2,%xmm2
6977
vaesdec %xmm0,%xmm3,%xmm3
6978
vaesdec %xmm0,%xmm4,%xmm4
6979
vaesdec %xmm0,%xmm5,%xmm5
6980
vaesdec %xmm0,%xmm6,%xmm6
6981
vmovdqu 96(%rcx),%xmm0
6982
vaesdec %xmm0,%xmm1,%xmm1
6983
vaesdec %xmm0,%xmm2,%xmm2
6984
vaesdec %xmm0,%xmm3,%xmm3
6985
vaesdec %xmm0,%xmm4,%xmm4
6986
vaesdec %xmm0,%xmm5,%xmm5
6987
vaesdec %xmm0,%xmm6,%xmm6
6988
vmovdqu 112(%rcx),%xmm0
6989
vaesdec %xmm0,%xmm1,%xmm1
6990
vaesdec %xmm0,%xmm2,%xmm2
6991
vaesdec %xmm0,%xmm3,%xmm3
6992
vaesdec %xmm0,%xmm4,%xmm4
6993
vaesdec %xmm0,%xmm5,%xmm5
6994
vaesdec %xmm0,%xmm6,%xmm6
6995
vmovdqu 128(%rcx),%xmm0
6996
vaesdec %xmm0,%xmm1,%xmm1
6997
vaesdec %xmm0,%xmm2,%xmm2
6998
vaesdec %xmm0,%xmm3,%xmm3
6999
vaesdec %xmm0,%xmm4,%xmm4
7000
vaesdec %xmm0,%xmm5,%xmm5
7001
vaesdec %xmm0,%xmm6,%xmm6
7002
vmovdqu 144(%rcx),%xmm0
7003
vaesdec %xmm0,%xmm1,%xmm1
7004
vaesdec %xmm0,%xmm2,%xmm2
7005
vaesdec %xmm0,%xmm3,%xmm3
7006
vaesdec %xmm0,%xmm4,%xmm4
7007
vaesdec %xmm0,%xmm5,%xmm5
7008
vaesdec %xmm0,%xmm6,%xmm6
7009
vmovdqu 160(%rcx),%xmm0
7010
vaesdec %xmm0,%xmm1,%xmm1
7011
vaesdec %xmm0,%xmm2,%xmm2
7012
vaesdec %xmm0,%xmm3,%xmm3
7013
vaesdec %xmm0,%xmm4,%xmm4
7014
vaesdec %xmm0,%xmm5,%xmm5
7015
vaesdec %xmm0,%xmm6,%xmm6
7016
vmovdqu 176(%rcx),%xmm0
7017
vaesdec %xmm0,%xmm1,%xmm1
7018
vaesdec %xmm0,%xmm2,%xmm2
7019
vaesdec %xmm0,%xmm3,%xmm3
7020
vaesdec %xmm0,%xmm4,%xmm4
7021
vaesdec %xmm0,%xmm5,%xmm5
7022
vaesdec %xmm0,%xmm6,%xmm6
7023
vmovdqu 192(%rcx),%xmm0
7024
vaesdec %xmm0,%xmm1,%xmm1
7025
vaesdec %xmm0,%xmm2,%xmm2
7026
vaesdec %xmm0,%xmm3,%xmm3
7027
vaesdec %xmm0,%xmm4,%xmm4
7028
vaesdec %xmm0,%xmm5,%xmm5
7029
vaesdec %xmm0,%xmm6,%xmm6
7030
vmovdqu 208(%rcx),%xmm0
7031
vaesdec %xmm0,%xmm1,%xmm1
7032
vaesdec %xmm0,%xmm2,%xmm2
7033
vaesdec %xmm0,%xmm3,%xmm3
7034
vaesdec %xmm0,%xmm4,%xmm4
7035
vaesdec %xmm0,%xmm5,%xmm5
7036
vaesdec %xmm0,%xmm6,%xmm6
7037
vmovdqu 224(%rcx),%xmm0
7038
vaesdeclast %xmm0,%xmm1,%xmm1
7039
vaesdeclast %xmm0,%xmm2,%xmm2
7040
vaesdeclast %xmm0,%xmm3,%xmm3
7041
vaesdeclast %xmm0,%xmm4,%xmm4
7042
vaesdeclast %xmm0,%xmm5,%xmm5
7043
vaesdeclast %xmm0,%xmm6,%xmm6
7044
vpxor %xmm9,%xmm1,%xmm1
7045
vpxor %xmm10,%xmm2,%xmm2
7046
vpxor %xmm11,%xmm3,%xmm3
7047
vpxor %xmm12,%xmm4,%xmm4
7048
vpxor %xmm13,%xmm5,%xmm5
7049
vpxor %xmm14,%xmm6,%xmm6
7050
vmovdqu %xmm1,(%rsi)
7051
vmovdqu %xmm2,16(%rsi)
7052
vmovdqu %xmm3,32(%rsi)
7053
vmovdqu %xmm4,48(%rsi)
7054
vmovdqu %xmm5,64(%rsi)
7055
addq $0x60,%rsi
7056
vmovdqa %xmm15,%xmm0
7057
vmovdqa %xmm6,%xmm8
7058
jmp .L_steal_cipher_EmbgEptodyewbFa
7059
7060
.L_done_6_EmbgEptodyewbFa:
7061
vpxor %xmm9,%xmm1,%xmm1
7062
vpxor %xmm10,%xmm2,%xmm2
7063
vpxor %xmm11,%xmm3,%xmm3
7064
vpxor %xmm12,%xmm4,%xmm4
7065
vpxor %xmm13,%xmm5,%xmm5
7066
vpxor %xmm14,%xmm6,%xmm6
7067
vmovdqu (%rcx),%xmm0
7068
vpxor %xmm0,%xmm1,%xmm1
7069
vpxor %xmm0,%xmm2,%xmm2
7070
vpxor %xmm0,%xmm3,%xmm3
7071
vpxor %xmm0,%xmm4,%xmm4
7072
vpxor %xmm0,%xmm5,%xmm5
7073
vpxor %xmm0,%xmm6,%xmm6
7074
vmovdqu 16(%rcx),%xmm0
7075
vaesdec %xmm0,%xmm1,%xmm1
7076
vaesdec %xmm0,%xmm2,%xmm2
7077
vaesdec %xmm0,%xmm3,%xmm3
7078
vaesdec %xmm0,%xmm4,%xmm4
7079
vaesdec %xmm0,%xmm5,%xmm5
7080
vaesdec %xmm0,%xmm6,%xmm6
7081
vmovdqu 32(%rcx),%xmm0
7082
vaesdec %xmm0,%xmm1,%xmm1
7083
vaesdec %xmm0,%xmm2,%xmm2
7084
vaesdec %xmm0,%xmm3,%xmm3
7085
vaesdec %xmm0,%xmm4,%xmm4
7086
vaesdec %xmm0,%xmm5,%xmm5
7087
vaesdec %xmm0,%xmm6,%xmm6
7088
vmovdqu 48(%rcx),%xmm0
7089
vaesdec %xmm0,%xmm1,%xmm1
7090
vaesdec %xmm0,%xmm2,%xmm2
7091
vaesdec %xmm0,%xmm3,%xmm3
7092
vaesdec %xmm0,%xmm4,%xmm4
7093
vaesdec %xmm0,%xmm5,%xmm5
7094
vaesdec %xmm0,%xmm6,%xmm6
7095
vmovdqu 64(%rcx),%xmm0
7096
vaesdec %xmm0,%xmm1,%xmm1
7097
vaesdec %xmm0,%xmm2,%xmm2
7098
vaesdec %xmm0,%xmm3,%xmm3
7099
vaesdec %xmm0,%xmm4,%xmm4
7100
vaesdec %xmm0,%xmm5,%xmm5
7101
vaesdec %xmm0,%xmm6,%xmm6
7102
vmovdqu 80(%rcx),%xmm0
7103
vaesdec %xmm0,%xmm1,%xmm1
7104
vaesdec %xmm0,%xmm2,%xmm2
7105
vaesdec %xmm0,%xmm3,%xmm3
7106
vaesdec %xmm0,%xmm4,%xmm4
7107
vaesdec %xmm0,%xmm5,%xmm5
7108
vaesdec %xmm0,%xmm6,%xmm6
7109
vmovdqu 96(%rcx),%xmm0
7110
vaesdec %xmm0,%xmm1,%xmm1
7111
vaesdec %xmm0,%xmm2,%xmm2
7112
vaesdec %xmm0,%xmm3,%xmm3
7113
vaesdec %xmm0,%xmm4,%xmm4
7114
vaesdec %xmm0,%xmm5,%xmm5
7115
vaesdec %xmm0,%xmm6,%xmm6
7116
vmovdqu 112(%rcx),%xmm0
7117
vaesdec %xmm0,%xmm1,%xmm1
7118
vaesdec %xmm0,%xmm2,%xmm2
7119
vaesdec %xmm0,%xmm3,%xmm3
7120
vaesdec %xmm0,%xmm4,%xmm4
7121
vaesdec %xmm0,%xmm5,%xmm5
7122
vaesdec %xmm0,%xmm6,%xmm6
7123
vmovdqu 128(%rcx),%xmm0
7124
vaesdec %xmm0,%xmm1,%xmm1
7125
vaesdec %xmm0,%xmm2,%xmm2
7126
vaesdec %xmm0,%xmm3,%xmm3
7127
vaesdec %xmm0,%xmm4,%xmm4
7128
vaesdec %xmm0,%xmm5,%xmm5
7129
vaesdec %xmm0,%xmm6,%xmm6
7130
vmovdqu 144(%rcx),%xmm0
7131
vaesdec %xmm0,%xmm1,%xmm1
7132
vaesdec %xmm0,%xmm2,%xmm2
7133
vaesdec %xmm0,%xmm3,%xmm3
7134
vaesdec %xmm0,%xmm4,%xmm4
7135
vaesdec %xmm0,%xmm5,%xmm5
7136
vaesdec %xmm0,%xmm6,%xmm6
7137
vmovdqu 160(%rcx),%xmm0
7138
vaesdec %xmm0,%xmm1,%xmm1
7139
vaesdec %xmm0,%xmm2,%xmm2
7140
vaesdec %xmm0,%xmm3,%xmm3
7141
vaesdec %xmm0,%xmm4,%xmm4
7142
vaesdec %xmm0,%xmm5,%xmm5
7143
vaesdec %xmm0,%xmm6,%xmm6
7144
vmovdqu 176(%rcx),%xmm0
7145
vaesdec %xmm0,%xmm1,%xmm1
7146
vaesdec %xmm0,%xmm2,%xmm2
7147
vaesdec %xmm0,%xmm3,%xmm3
7148
vaesdec %xmm0,%xmm4,%xmm4
7149
vaesdec %xmm0,%xmm5,%xmm5
7150
vaesdec %xmm0,%xmm6,%xmm6
7151
vmovdqu 192(%rcx),%xmm0
7152
vaesdec %xmm0,%xmm1,%xmm1
7153
vaesdec %xmm0,%xmm2,%xmm2
7154
vaesdec %xmm0,%xmm3,%xmm3
7155
vaesdec %xmm0,%xmm4,%xmm4
7156
vaesdec %xmm0,%xmm5,%xmm5
7157
vaesdec %xmm0,%xmm6,%xmm6
7158
vmovdqu 208(%rcx),%xmm0
7159
vaesdec %xmm0,%xmm1,%xmm1
7160
vaesdec %xmm0,%xmm2,%xmm2
7161
vaesdec %xmm0,%xmm3,%xmm3
7162
vaesdec %xmm0,%xmm4,%xmm4
7163
vaesdec %xmm0,%xmm5,%xmm5
7164
vaesdec %xmm0,%xmm6,%xmm6
7165
vmovdqu 224(%rcx),%xmm0
7166
vaesdeclast %xmm0,%xmm1,%xmm1
7167
vaesdeclast %xmm0,%xmm2,%xmm2
7168
vaesdeclast %xmm0,%xmm3,%xmm3
7169
vaesdeclast %xmm0,%xmm4,%xmm4
7170
vaesdeclast %xmm0,%xmm5,%xmm5
7171
vaesdeclast %xmm0,%xmm6,%xmm6
7172
vpxor %xmm9,%xmm1,%xmm1
7173
vpxor %xmm10,%xmm2,%xmm2
7174
vpxor %xmm11,%xmm3,%xmm3
7175
vpxor %xmm12,%xmm4,%xmm4
7176
vpxor %xmm13,%xmm5,%xmm5
7177
vpxor %xmm14,%xmm6,%xmm6
7178
vmovdqu %xmm1,(%rsi)
7179
vmovdqu %xmm2,16(%rsi)
7180
vmovdqu %xmm3,32(%rsi)
7181
vmovdqu %xmm4,48(%rsi)
7182
vmovdqu %xmm5,64(%rsi)
7183
addq $0x60,%rsi
7184
vmovdqa %xmm6,%xmm8
7185
jmp .L_done_EmbgEptodyewbFa
7186
7187
.L_num_blocks_is_5_EmbgEptodyewbFa:
7188
vmovdqa 0(%rsp),%xmm9
7189
movq 0(%rsp),%rax
7190
movq 8(%rsp),%rbx
7191
vmovdqu 0(%rdi),%xmm1
7192
xorq %r11,%r11
7193
shlq $1,%rax
7194
adcq %rbx,%rbx
7195
cmovcq %r10,%r11
7196
xorq %r11,%rax
7197
movq %rax,16(%rsp)
7198
movq %rbx,16 + 8(%rsp)
7199
vmovdqa 16(%rsp),%xmm10
7200
vmovdqu 16(%rdi),%xmm2
7201
xorq %r11,%r11
7202
shlq $1,%rax
7203
adcq %rbx,%rbx
7204
cmovcq %r10,%r11
7205
xorq %r11,%rax
7206
movq %rax,32(%rsp)
7207
movq %rbx,32 + 8(%rsp)
7208
vmovdqa 32(%rsp),%xmm11
7209
vmovdqu 32(%rdi),%xmm3
7210
xorq %r11,%r11
7211
shlq $1,%rax
7212
adcq %rbx,%rbx
7213
cmovcq %r10,%r11
7214
xorq %r11,%rax
7215
movq %rax,48(%rsp)
7216
movq %rbx,48 + 8(%rsp)
7217
vmovdqa 48(%rsp),%xmm12
7218
vmovdqu 48(%rdi),%xmm4
7219
xorq %r11,%r11
7220
shlq $1,%rax
7221
adcq %rbx,%rbx
7222
cmovcq %r10,%r11
7223
xorq %r11,%rax
7224
movq %rax,64(%rsp)
7225
movq %rbx,64 + 8(%rsp)
7226
vmovdqa 64(%rsp),%xmm13
7227
vmovdqu 64(%rdi),%xmm5
7228
addq $0x50,%rdi
7229
andq $0xf,%rdx
7230
je .L_done_5_EmbgEptodyewbFa
7231
7232
.L_steal_cipher_5_EmbgEptodyewbFa:
7233
xorq %r11,%r11
7234
shlq $1,%rax
7235
adcq %rbx,%rbx
7236
cmovcq %r10,%r11
7237
xorq %r11,%rax
7238
movq %rax,16(%rsp)
7239
movq %rbx,24(%rsp)
7240
vmovdqa64 %xmm13,%xmm14
7241
vmovdqa 16(%rsp),%xmm13
7242
vpxor %xmm9,%xmm1,%xmm1
7243
vpxor %xmm10,%xmm2,%xmm2
7244
vpxor %xmm11,%xmm3,%xmm3
7245
vpxor %xmm12,%xmm4,%xmm4
7246
vpxor %xmm13,%xmm5,%xmm5
7247
vmovdqu (%rcx),%xmm0
7248
vpxor %xmm0,%xmm1,%xmm1
7249
vpxor %xmm0,%xmm2,%xmm2
7250
vpxor %xmm0,%xmm3,%xmm3
7251
vpxor %xmm0,%xmm4,%xmm4
7252
vpxor %xmm0,%xmm5,%xmm5
7253
vmovdqu 16(%rcx),%xmm0
7254
vaesdec %xmm0,%xmm1,%xmm1
7255
vaesdec %xmm0,%xmm2,%xmm2
7256
vaesdec %xmm0,%xmm3,%xmm3
7257
vaesdec %xmm0,%xmm4,%xmm4
7258
vaesdec %xmm0,%xmm5,%xmm5
7259
vmovdqu 32(%rcx),%xmm0
7260
vaesdec %xmm0,%xmm1,%xmm1
7261
vaesdec %xmm0,%xmm2,%xmm2
7262
vaesdec %xmm0,%xmm3,%xmm3
7263
vaesdec %xmm0,%xmm4,%xmm4
7264
vaesdec %xmm0,%xmm5,%xmm5
7265
vmovdqu 48(%rcx),%xmm0
7266
vaesdec %xmm0,%xmm1,%xmm1
7267
vaesdec %xmm0,%xmm2,%xmm2
7268
vaesdec %xmm0,%xmm3,%xmm3
7269
vaesdec %xmm0,%xmm4,%xmm4
7270
vaesdec %xmm0,%xmm5,%xmm5
7271
vmovdqu 64(%rcx),%xmm0
7272
vaesdec %xmm0,%xmm1,%xmm1
7273
vaesdec %xmm0,%xmm2,%xmm2
7274
vaesdec %xmm0,%xmm3,%xmm3
7275
vaesdec %xmm0,%xmm4,%xmm4
7276
vaesdec %xmm0,%xmm5,%xmm5
7277
vmovdqu 80(%rcx),%xmm0
7278
vaesdec %xmm0,%xmm1,%xmm1
7279
vaesdec %xmm0,%xmm2,%xmm2
7280
vaesdec %xmm0,%xmm3,%xmm3
7281
vaesdec %xmm0,%xmm4,%xmm4
7282
vaesdec %xmm0,%xmm5,%xmm5
7283
vmovdqu 96(%rcx),%xmm0
7284
vaesdec %xmm0,%xmm1,%xmm1
7285
vaesdec %xmm0,%xmm2,%xmm2
7286
vaesdec %xmm0,%xmm3,%xmm3
7287
vaesdec %xmm0,%xmm4,%xmm4
7288
vaesdec %xmm0,%xmm5,%xmm5
7289
vmovdqu 112(%rcx),%xmm0
7290
vaesdec %xmm0,%xmm1,%xmm1
7291
vaesdec %xmm0,%xmm2,%xmm2
7292
vaesdec %xmm0,%xmm3,%xmm3
7293
vaesdec %xmm0,%xmm4,%xmm4
7294
vaesdec %xmm0,%xmm5,%xmm5
7295
vmovdqu 128(%rcx),%xmm0
7296
vaesdec %xmm0,%xmm1,%xmm1
7297
vaesdec %xmm0,%xmm2,%xmm2
7298
vaesdec %xmm0,%xmm3,%xmm3
7299
vaesdec %xmm0,%xmm4,%xmm4
7300
vaesdec %xmm0,%xmm5,%xmm5
7301
vmovdqu 144(%rcx),%xmm0
7302
vaesdec %xmm0,%xmm1,%xmm1
7303
vaesdec %xmm0,%xmm2,%xmm2
7304
vaesdec %xmm0,%xmm3,%xmm3
7305
vaesdec %xmm0,%xmm4,%xmm4
7306
vaesdec %xmm0,%xmm5,%xmm5
7307
vmovdqu 160(%rcx),%xmm0
7308
vaesdec %xmm0,%xmm1,%xmm1
7309
vaesdec %xmm0,%xmm2,%xmm2
7310
vaesdec %xmm0,%xmm3,%xmm3
7311
vaesdec %xmm0,%xmm4,%xmm4
7312
vaesdec %xmm0,%xmm5,%xmm5
7313
vmovdqu 176(%rcx),%xmm0
7314
vaesdec %xmm0,%xmm1,%xmm1
7315
vaesdec %xmm0,%xmm2,%xmm2
7316
vaesdec %xmm0,%xmm3,%xmm3
7317
vaesdec %xmm0,%xmm4,%xmm4
7318
vaesdec %xmm0,%xmm5,%xmm5
7319
vmovdqu 192(%rcx),%xmm0
7320
vaesdec %xmm0,%xmm1,%xmm1
7321
vaesdec %xmm0,%xmm2,%xmm2
7322
vaesdec %xmm0,%xmm3,%xmm3
7323
vaesdec %xmm0,%xmm4,%xmm4
7324
vaesdec %xmm0,%xmm5,%xmm5
7325
vmovdqu 208(%rcx),%xmm0
7326
vaesdec %xmm0,%xmm1,%xmm1
7327
vaesdec %xmm0,%xmm2,%xmm2
7328
vaesdec %xmm0,%xmm3,%xmm3
7329
vaesdec %xmm0,%xmm4,%xmm4
7330
vaesdec %xmm0,%xmm5,%xmm5
7331
vmovdqu 224(%rcx),%xmm0
7332
vaesdeclast %xmm0,%xmm1,%xmm1
7333
vaesdeclast %xmm0,%xmm2,%xmm2
7334
vaesdeclast %xmm0,%xmm3,%xmm3
7335
vaesdeclast %xmm0,%xmm4,%xmm4
7336
vaesdeclast %xmm0,%xmm5,%xmm5
7337
vpxor %xmm9,%xmm1,%xmm1
7338
vpxor %xmm10,%xmm2,%xmm2
7339
vpxor %xmm11,%xmm3,%xmm3
7340
vpxor %xmm12,%xmm4,%xmm4
7341
vpxor %xmm13,%xmm5,%xmm5
7342
vmovdqu %xmm1,(%rsi)
7343
vmovdqu %xmm2,16(%rsi)
7344
vmovdqu %xmm3,32(%rsi)
7345
vmovdqu %xmm4,48(%rsi)
7346
addq $0x50,%rsi
7347
vmovdqa %xmm14,%xmm0
7348
vmovdqa %xmm5,%xmm8
7349
jmp .L_steal_cipher_EmbgEptodyewbFa
7350
7351
.L_done_5_EmbgEptodyewbFa:
7352
vpxor %xmm9,%xmm1,%xmm1
7353
vpxor %xmm10,%xmm2,%xmm2
7354
vpxor %xmm11,%xmm3,%xmm3
7355
vpxor %xmm12,%xmm4,%xmm4
7356
vpxor %xmm13,%xmm5,%xmm5
7357
vmovdqu (%rcx),%xmm0
7358
vpxor %xmm0,%xmm1,%xmm1
7359
vpxor %xmm0,%xmm2,%xmm2
7360
vpxor %xmm0,%xmm3,%xmm3
7361
vpxor %xmm0,%xmm4,%xmm4
7362
vpxor %xmm0,%xmm5,%xmm5
7363
vmovdqu 16(%rcx),%xmm0
7364
vaesdec %xmm0,%xmm1,%xmm1
7365
vaesdec %xmm0,%xmm2,%xmm2
7366
vaesdec %xmm0,%xmm3,%xmm3
7367
vaesdec %xmm0,%xmm4,%xmm4
7368
vaesdec %xmm0,%xmm5,%xmm5
7369
vmovdqu 32(%rcx),%xmm0
7370
vaesdec %xmm0,%xmm1,%xmm1
7371
vaesdec %xmm0,%xmm2,%xmm2
7372
vaesdec %xmm0,%xmm3,%xmm3
7373
vaesdec %xmm0,%xmm4,%xmm4
7374
vaesdec %xmm0,%xmm5,%xmm5
7375
vmovdqu 48(%rcx),%xmm0
7376
vaesdec %xmm0,%xmm1,%xmm1
7377
vaesdec %xmm0,%xmm2,%xmm2
7378
vaesdec %xmm0,%xmm3,%xmm3
7379
vaesdec %xmm0,%xmm4,%xmm4
7380
vaesdec %xmm0,%xmm5,%xmm5
7381
vmovdqu 64(%rcx),%xmm0
7382
vaesdec %xmm0,%xmm1,%xmm1
7383
vaesdec %xmm0,%xmm2,%xmm2
7384
vaesdec %xmm0,%xmm3,%xmm3
7385
vaesdec %xmm0,%xmm4,%xmm4
7386
vaesdec %xmm0,%xmm5,%xmm5
7387
vmovdqu 80(%rcx),%xmm0
7388
vaesdec %xmm0,%xmm1,%xmm1
7389
vaesdec %xmm0,%xmm2,%xmm2
7390
vaesdec %xmm0,%xmm3,%xmm3
7391
vaesdec %xmm0,%xmm4,%xmm4
7392
vaesdec %xmm0,%xmm5,%xmm5
7393
vmovdqu 96(%rcx),%xmm0
7394
vaesdec %xmm0,%xmm1,%xmm1
7395
vaesdec %xmm0,%xmm2,%xmm2
7396
vaesdec %xmm0,%xmm3,%xmm3
7397
vaesdec %xmm0,%xmm4,%xmm4
7398
vaesdec %xmm0,%xmm5,%xmm5
7399
vmovdqu 112(%rcx),%xmm0
7400
vaesdec %xmm0,%xmm1,%xmm1
7401
vaesdec %xmm0,%xmm2,%xmm2
7402
vaesdec %xmm0,%xmm3,%xmm3
7403
vaesdec %xmm0,%xmm4,%xmm4
7404
vaesdec %xmm0,%xmm5,%xmm5
7405
vmovdqu 128(%rcx),%xmm0
7406
vaesdec %xmm0,%xmm1,%xmm1
7407
vaesdec %xmm0,%xmm2,%xmm2
7408
vaesdec %xmm0,%xmm3,%xmm3
7409
vaesdec %xmm0,%xmm4,%xmm4
7410
vaesdec %xmm0,%xmm5,%xmm5
7411
vmovdqu 144(%rcx),%xmm0
7412
vaesdec %xmm0,%xmm1,%xmm1
7413
vaesdec %xmm0,%xmm2,%xmm2
7414
vaesdec %xmm0,%xmm3,%xmm3
7415
vaesdec %xmm0,%xmm4,%xmm4
7416
vaesdec %xmm0,%xmm5,%xmm5
7417
vmovdqu 160(%rcx),%xmm0
7418
vaesdec %xmm0,%xmm1,%xmm1
7419
vaesdec %xmm0,%xmm2,%xmm2
7420
vaesdec %xmm0,%xmm3,%xmm3
7421
vaesdec %xmm0,%xmm4,%xmm4
7422
vaesdec %xmm0,%xmm5,%xmm5
7423
vmovdqu 176(%rcx),%xmm0
7424
vaesdec %xmm0,%xmm1,%xmm1
7425
vaesdec %xmm0,%xmm2,%xmm2
7426
vaesdec %xmm0,%xmm3,%xmm3
7427
vaesdec %xmm0,%xmm4,%xmm4
7428
vaesdec %xmm0,%xmm5,%xmm5
7429
vmovdqu 192(%rcx),%xmm0
7430
vaesdec %xmm0,%xmm1,%xmm1
7431
vaesdec %xmm0,%xmm2,%xmm2
7432
vaesdec %xmm0,%xmm3,%xmm3
7433
vaesdec %xmm0,%xmm4,%xmm4
7434
vaesdec %xmm0,%xmm5,%xmm5
7435
vmovdqu 208(%rcx),%xmm0
7436
vaesdec %xmm0,%xmm1,%xmm1
7437
vaesdec %xmm0,%xmm2,%xmm2
7438
vaesdec %xmm0,%xmm3,%xmm3
7439
vaesdec %xmm0,%xmm4,%xmm4
7440
vaesdec %xmm0,%xmm5,%xmm5
7441
vmovdqu 224(%rcx),%xmm0
7442
vaesdeclast %xmm0,%xmm1,%xmm1
7443
vaesdeclast %xmm0,%xmm2,%xmm2
7444
vaesdeclast %xmm0,%xmm3,%xmm3
7445
vaesdeclast %xmm0,%xmm4,%xmm4
7446
vaesdeclast %xmm0,%xmm5,%xmm5
7447
vpxor %xmm9,%xmm1,%xmm1
7448
vpxor %xmm10,%xmm2,%xmm2
7449
vpxor %xmm11,%xmm3,%xmm3
7450
vpxor %xmm12,%xmm4,%xmm4
7451
vpxor %xmm13,%xmm5,%xmm5
7452
vmovdqu %xmm1,(%rsi)
7453
vmovdqu %xmm2,16(%rsi)
7454
vmovdqu %xmm3,32(%rsi)
7455
vmovdqu %xmm4,48(%rsi)
7456
addq $0x50,%rsi
7457
vmovdqa %xmm5,%xmm8
7458
jmp .L_done_EmbgEptodyewbFa
7459
7460
.L_num_blocks_is_4_EmbgEptodyewbFa:
7461
vmovdqa 0(%rsp),%xmm9
7462
movq 0(%rsp),%rax
7463
movq 8(%rsp),%rbx
7464
vmovdqu 0(%rdi),%xmm1
7465
xorq %r11,%r11
7466
shlq $1,%rax
7467
adcq %rbx,%rbx
7468
cmovcq %r10,%r11
7469
xorq %r11,%rax
7470
movq %rax,16(%rsp)
7471
movq %rbx,16 + 8(%rsp)
7472
vmovdqa 16(%rsp),%xmm10
7473
vmovdqu 16(%rdi),%xmm2
7474
xorq %r11,%r11
7475
shlq $1,%rax
7476
adcq %rbx,%rbx
7477
cmovcq %r10,%r11
7478
xorq %r11,%rax
7479
movq %rax,32(%rsp)
7480
movq %rbx,32 + 8(%rsp)
7481
vmovdqa 32(%rsp),%xmm11
7482
vmovdqu 32(%rdi),%xmm3
7483
xorq %r11,%r11
7484
shlq $1,%rax
7485
adcq %rbx,%rbx
7486
cmovcq %r10,%r11
7487
xorq %r11,%rax
7488
movq %rax,48(%rsp)
7489
movq %rbx,48 + 8(%rsp)
7490
vmovdqa 48(%rsp),%xmm12
7491
vmovdqu 48(%rdi),%xmm4
7492
addq $0x40,%rdi
7493
andq $0xf,%rdx
7494
je .L_done_4_EmbgEptodyewbFa
7495
7496
.L_steal_cipher_4_EmbgEptodyewbFa:
7497
xorq %r11,%r11
7498
shlq $1,%rax
7499
adcq %rbx,%rbx
7500
cmovcq %r10,%r11
7501
xorq %r11,%rax
7502
movq %rax,16(%rsp)
7503
movq %rbx,24(%rsp)
7504
vmovdqa64 %xmm12,%xmm13
7505
vmovdqa 16(%rsp),%xmm12
7506
vpxor %xmm9,%xmm1,%xmm1
7507
vpxor %xmm10,%xmm2,%xmm2
7508
vpxor %xmm11,%xmm3,%xmm3
7509
vpxor %xmm12,%xmm4,%xmm4
7510
vmovdqu (%rcx),%xmm0
7511
vpxor %xmm0,%xmm1,%xmm1
7512
vpxor %xmm0,%xmm2,%xmm2
7513
vpxor %xmm0,%xmm3,%xmm3
7514
vpxor %xmm0,%xmm4,%xmm4
7515
vmovdqu 16(%rcx),%xmm0
7516
vaesdec %xmm0,%xmm1,%xmm1
7517
vaesdec %xmm0,%xmm2,%xmm2
7518
vaesdec %xmm0,%xmm3,%xmm3
7519
vaesdec %xmm0,%xmm4,%xmm4
7520
vmovdqu 32(%rcx),%xmm0
7521
vaesdec %xmm0,%xmm1,%xmm1
7522
vaesdec %xmm0,%xmm2,%xmm2
7523
vaesdec %xmm0,%xmm3,%xmm3
7524
vaesdec %xmm0,%xmm4,%xmm4
7525
vmovdqu 48(%rcx),%xmm0
7526
vaesdec %xmm0,%xmm1,%xmm1
7527
vaesdec %xmm0,%xmm2,%xmm2
7528
vaesdec %xmm0,%xmm3,%xmm3
7529
vaesdec %xmm0,%xmm4,%xmm4
7530
vmovdqu 64(%rcx),%xmm0
7531
vaesdec %xmm0,%xmm1,%xmm1
7532
vaesdec %xmm0,%xmm2,%xmm2
7533
vaesdec %xmm0,%xmm3,%xmm3
7534
vaesdec %xmm0,%xmm4,%xmm4
7535
vmovdqu 80(%rcx),%xmm0
7536
vaesdec %xmm0,%xmm1,%xmm1
7537
vaesdec %xmm0,%xmm2,%xmm2
7538
vaesdec %xmm0,%xmm3,%xmm3
7539
vaesdec %xmm0,%xmm4,%xmm4
7540
vmovdqu 96(%rcx),%xmm0
7541
vaesdec %xmm0,%xmm1,%xmm1
7542
vaesdec %xmm0,%xmm2,%xmm2
7543
vaesdec %xmm0,%xmm3,%xmm3
7544
vaesdec %xmm0,%xmm4,%xmm4
7545
vmovdqu 112(%rcx),%xmm0
7546
vaesdec %xmm0,%xmm1,%xmm1
7547
vaesdec %xmm0,%xmm2,%xmm2
7548
vaesdec %xmm0,%xmm3,%xmm3
7549
vaesdec %xmm0,%xmm4,%xmm4
7550
vmovdqu 128(%rcx),%xmm0
7551
vaesdec %xmm0,%xmm1,%xmm1
7552
vaesdec %xmm0,%xmm2,%xmm2
7553
vaesdec %xmm0,%xmm3,%xmm3
7554
vaesdec %xmm0,%xmm4,%xmm4
7555
vmovdqu 144(%rcx),%xmm0
7556
vaesdec %xmm0,%xmm1,%xmm1
7557
vaesdec %xmm0,%xmm2,%xmm2
7558
vaesdec %xmm0,%xmm3,%xmm3
7559
vaesdec %xmm0,%xmm4,%xmm4
7560
vmovdqu 160(%rcx),%xmm0
7561
vaesdec %xmm0,%xmm1,%xmm1
7562
vaesdec %xmm0,%xmm2,%xmm2
7563
vaesdec %xmm0,%xmm3,%xmm3
7564
vaesdec %xmm0,%xmm4,%xmm4
7565
vmovdqu 176(%rcx),%xmm0
7566
vaesdec %xmm0,%xmm1,%xmm1
7567
vaesdec %xmm0,%xmm2,%xmm2
7568
vaesdec %xmm0,%xmm3,%xmm3
7569
vaesdec %xmm0,%xmm4,%xmm4
7570
vmovdqu 192(%rcx),%xmm0
7571
vaesdec %xmm0,%xmm1,%xmm1
7572
vaesdec %xmm0,%xmm2,%xmm2
7573
vaesdec %xmm0,%xmm3,%xmm3
7574
vaesdec %xmm0,%xmm4,%xmm4
7575
vmovdqu 208(%rcx),%xmm0
7576
vaesdec %xmm0,%xmm1,%xmm1
7577
vaesdec %xmm0,%xmm2,%xmm2
7578
vaesdec %xmm0,%xmm3,%xmm3
7579
vaesdec %xmm0,%xmm4,%xmm4
7580
vmovdqu 224(%rcx),%xmm0
7581
vaesdeclast %xmm0,%xmm1,%xmm1
7582
vaesdeclast %xmm0,%xmm2,%xmm2
7583
vaesdeclast %xmm0,%xmm3,%xmm3
7584
vaesdeclast %xmm0,%xmm4,%xmm4
7585
vpxor %xmm9,%xmm1,%xmm1
7586
vpxor %xmm10,%xmm2,%xmm2
7587
vpxor %xmm11,%xmm3,%xmm3
7588
vpxor %xmm12,%xmm4,%xmm4
7589
vmovdqu %xmm1,(%rsi)
7590
vmovdqu %xmm2,16(%rsi)
7591
vmovdqu %xmm3,32(%rsi)
7592
addq $0x40,%rsi
7593
vmovdqa %xmm13,%xmm0
7594
vmovdqa %xmm4,%xmm8
7595
jmp .L_steal_cipher_EmbgEptodyewbFa
7596
7597
.L_done_4_EmbgEptodyewbFa:
7598
vpxor %xmm9,%xmm1,%xmm1
7599
vpxor %xmm10,%xmm2,%xmm2
7600
vpxor %xmm11,%xmm3,%xmm3
7601
vpxor %xmm12,%xmm4,%xmm4
7602
vmovdqu (%rcx),%xmm0
7603
vpxor %xmm0,%xmm1,%xmm1
7604
vpxor %xmm0,%xmm2,%xmm2
7605
vpxor %xmm0,%xmm3,%xmm3
7606
vpxor %xmm0,%xmm4,%xmm4
7607
vmovdqu 16(%rcx),%xmm0
7608
vaesdec %xmm0,%xmm1,%xmm1
7609
vaesdec %xmm0,%xmm2,%xmm2
7610
vaesdec %xmm0,%xmm3,%xmm3
7611
vaesdec %xmm0,%xmm4,%xmm4
7612
vmovdqu 32(%rcx),%xmm0
7613
vaesdec %xmm0,%xmm1,%xmm1
7614
vaesdec %xmm0,%xmm2,%xmm2
7615
vaesdec %xmm0,%xmm3,%xmm3
7616
vaesdec %xmm0,%xmm4,%xmm4
7617
vmovdqu 48(%rcx),%xmm0
7618
vaesdec %xmm0,%xmm1,%xmm1
7619
vaesdec %xmm0,%xmm2,%xmm2
7620
vaesdec %xmm0,%xmm3,%xmm3
7621
vaesdec %xmm0,%xmm4,%xmm4
7622
vmovdqu 64(%rcx),%xmm0
7623
vaesdec %xmm0,%xmm1,%xmm1
7624
vaesdec %xmm0,%xmm2,%xmm2
7625
vaesdec %xmm0,%xmm3,%xmm3
7626
vaesdec %xmm0,%xmm4,%xmm4
7627
vmovdqu 80(%rcx),%xmm0
7628
vaesdec %xmm0,%xmm1,%xmm1
7629
vaesdec %xmm0,%xmm2,%xmm2
7630
vaesdec %xmm0,%xmm3,%xmm3
7631
vaesdec %xmm0,%xmm4,%xmm4
7632
vmovdqu 96(%rcx),%xmm0
7633
vaesdec %xmm0,%xmm1,%xmm1
7634
vaesdec %xmm0,%xmm2,%xmm2
7635
vaesdec %xmm0,%xmm3,%xmm3
7636
vaesdec %xmm0,%xmm4,%xmm4
7637
vmovdqu 112(%rcx),%xmm0
7638
vaesdec %xmm0,%xmm1,%xmm1
7639
vaesdec %xmm0,%xmm2,%xmm2
7640
vaesdec %xmm0,%xmm3,%xmm3
7641
vaesdec %xmm0,%xmm4,%xmm4
7642
vmovdqu 128(%rcx),%xmm0
7643
vaesdec %xmm0,%xmm1,%xmm1
7644
vaesdec %xmm0,%xmm2,%xmm2
7645
vaesdec %xmm0,%xmm3,%xmm3
7646
vaesdec %xmm0,%xmm4,%xmm4
7647
vmovdqu 144(%rcx),%xmm0
7648
vaesdec %xmm0,%xmm1,%xmm1
7649
vaesdec %xmm0,%xmm2,%xmm2
7650
vaesdec %xmm0,%xmm3,%xmm3
7651
vaesdec %xmm0,%xmm4,%xmm4
7652
vmovdqu 160(%rcx),%xmm0
7653
vaesdec %xmm0,%xmm1,%xmm1
7654
vaesdec %xmm0,%xmm2,%xmm2
7655
vaesdec %xmm0,%xmm3,%xmm3
7656
vaesdec %xmm0,%xmm4,%xmm4
7657
vmovdqu 176(%rcx),%xmm0
7658
vaesdec %xmm0,%xmm1,%xmm1
7659
vaesdec %xmm0,%xmm2,%xmm2
7660
vaesdec %xmm0,%xmm3,%xmm3
7661
vaesdec %xmm0,%xmm4,%xmm4
7662
vmovdqu 192(%rcx),%xmm0
7663
vaesdec %xmm0,%xmm1,%xmm1
7664
vaesdec %xmm0,%xmm2,%xmm2
7665
vaesdec %xmm0,%xmm3,%xmm3
7666
vaesdec %xmm0,%xmm4,%xmm4
7667
vmovdqu 208(%rcx),%xmm0
7668
vaesdec %xmm0,%xmm1,%xmm1
7669
vaesdec %xmm0,%xmm2,%xmm2
7670
vaesdec %xmm0,%xmm3,%xmm3
7671
vaesdec %xmm0,%xmm4,%xmm4
7672
vmovdqu 224(%rcx),%xmm0
7673
vaesdeclast %xmm0,%xmm1,%xmm1
7674
vaesdeclast %xmm0,%xmm2,%xmm2
7675
vaesdeclast %xmm0,%xmm3,%xmm3
7676
vaesdeclast %xmm0,%xmm4,%xmm4
7677
vpxor %xmm9,%xmm1,%xmm1
7678
vpxor %xmm10,%xmm2,%xmm2
7679
vpxor %xmm11,%xmm3,%xmm3
7680
vpxor %xmm12,%xmm4,%xmm4
7681
vmovdqu %xmm1,(%rsi)
7682
vmovdqu %xmm2,16(%rsi)
7683
vmovdqu %xmm3,32(%rsi)
7684
addq $0x40,%rsi
7685
vmovdqa %xmm4,%xmm8
7686
jmp .L_done_EmbgEptodyewbFa
7687
7688
.L_num_blocks_is_3_EmbgEptodyewbFa:
7689
vmovdqa 0(%rsp),%xmm9
7690
movq 0(%rsp),%rax
7691
movq 8(%rsp),%rbx
7692
vmovdqu 0(%rdi),%xmm1
7693
xorq %r11,%r11
7694
shlq $1,%rax
7695
adcq %rbx,%rbx
7696
cmovcq %r10,%r11
7697
xorq %r11,%rax
7698
movq %rax,16(%rsp)
7699
movq %rbx,16 + 8(%rsp)
7700
vmovdqa 16(%rsp),%xmm10
7701
vmovdqu 16(%rdi),%xmm2
7702
xorq %r11,%r11
7703
shlq $1,%rax
7704
adcq %rbx,%rbx
7705
cmovcq %r10,%r11
7706
xorq %r11,%rax
7707
movq %rax,32(%rsp)
7708
movq %rbx,32 + 8(%rsp)
7709
vmovdqa 32(%rsp),%xmm11
7710
vmovdqu 32(%rdi),%xmm3
7711
addq $0x30,%rdi
7712
andq $0xf,%rdx
7713
je .L_done_3_EmbgEptodyewbFa
7714
7715
.L_steal_cipher_3_EmbgEptodyewbFa:
7716
xorq %r11,%r11
7717
shlq $1,%rax
7718
adcq %rbx,%rbx
7719
cmovcq %r10,%r11
7720
xorq %r11,%rax
7721
movq %rax,16(%rsp)
7722
movq %rbx,24(%rsp)
7723
vmovdqa64 %xmm11,%xmm12
7724
vmovdqa 16(%rsp),%xmm11
7725
vpxor %xmm9,%xmm1,%xmm1
7726
vpxor %xmm10,%xmm2,%xmm2
7727
vpxor %xmm11,%xmm3,%xmm3
7728
vmovdqu (%rcx),%xmm0
7729
vpxor %xmm0,%xmm1,%xmm1
7730
vpxor %xmm0,%xmm2,%xmm2
7731
vpxor %xmm0,%xmm3,%xmm3
7732
vmovdqu 16(%rcx),%xmm0
7733
vaesdec %xmm0,%xmm1,%xmm1
7734
vaesdec %xmm0,%xmm2,%xmm2
7735
vaesdec %xmm0,%xmm3,%xmm3
7736
vmovdqu 32(%rcx),%xmm0
7737
vaesdec %xmm0,%xmm1,%xmm1
7738
vaesdec %xmm0,%xmm2,%xmm2
7739
vaesdec %xmm0,%xmm3,%xmm3
7740
vmovdqu 48(%rcx),%xmm0
7741
vaesdec %xmm0,%xmm1,%xmm1
7742
vaesdec %xmm0,%xmm2,%xmm2
7743
vaesdec %xmm0,%xmm3,%xmm3
7744
vmovdqu 64(%rcx),%xmm0
7745
vaesdec %xmm0,%xmm1,%xmm1
7746
vaesdec %xmm0,%xmm2,%xmm2
7747
vaesdec %xmm0,%xmm3,%xmm3
7748
vmovdqu 80(%rcx),%xmm0
7749
vaesdec %xmm0,%xmm1,%xmm1
7750
vaesdec %xmm0,%xmm2,%xmm2
7751
vaesdec %xmm0,%xmm3,%xmm3
7752
vmovdqu 96(%rcx),%xmm0
7753
vaesdec %xmm0,%xmm1,%xmm1
7754
vaesdec %xmm0,%xmm2,%xmm2
7755
vaesdec %xmm0,%xmm3,%xmm3
7756
vmovdqu 112(%rcx),%xmm0
7757
vaesdec %xmm0,%xmm1,%xmm1
7758
vaesdec %xmm0,%xmm2,%xmm2
7759
vaesdec %xmm0,%xmm3,%xmm3
7760
vmovdqu 128(%rcx),%xmm0
7761
vaesdec %xmm0,%xmm1,%xmm1
7762
vaesdec %xmm0,%xmm2,%xmm2
7763
vaesdec %xmm0,%xmm3,%xmm3
7764
vmovdqu 144(%rcx),%xmm0
7765
vaesdec %xmm0,%xmm1,%xmm1
7766
vaesdec %xmm0,%xmm2,%xmm2
7767
vaesdec %xmm0,%xmm3,%xmm3
7768
vmovdqu 160(%rcx),%xmm0
7769
vaesdec %xmm0,%xmm1,%xmm1
7770
vaesdec %xmm0,%xmm2,%xmm2
7771
vaesdec %xmm0,%xmm3,%xmm3
7772
vmovdqu 176(%rcx),%xmm0
7773
vaesdec %xmm0,%xmm1,%xmm1
7774
vaesdec %xmm0,%xmm2,%xmm2
7775
vaesdec %xmm0,%xmm3,%xmm3
7776
vmovdqu 192(%rcx),%xmm0
7777
vaesdec %xmm0,%xmm1,%xmm1
7778
vaesdec %xmm0,%xmm2,%xmm2
7779
vaesdec %xmm0,%xmm3,%xmm3
7780
vmovdqu 208(%rcx),%xmm0
7781
vaesdec %xmm0,%xmm1,%xmm1
7782
vaesdec %xmm0,%xmm2,%xmm2
7783
vaesdec %xmm0,%xmm3,%xmm3
7784
vmovdqu 224(%rcx),%xmm0
7785
vaesdeclast %xmm0,%xmm1,%xmm1
7786
vaesdeclast %xmm0,%xmm2,%xmm2
7787
vaesdeclast %xmm0,%xmm3,%xmm3
7788
vpxor %xmm9,%xmm1,%xmm1
7789
vpxor %xmm10,%xmm2,%xmm2
7790
vpxor %xmm11,%xmm3,%xmm3
7791
vmovdqu %xmm1,(%rsi)
7792
vmovdqu %xmm2,16(%rsi)
7793
addq $0x30,%rsi
7794
vmovdqa %xmm12,%xmm0
7795
vmovdqa %xmm3,%xmm8
7796
jmp .L_steal_cipher_EmbgEptodyewbFa
7797
7798
.L_done_3_EmbgEptodyewbFa:
7799
vpxor %xmm9,%xmm1,%xmm1
7800
vpxor %xmm10,%xmm2,%xmm2
7801
vpxor %xmm11,%xmm3,%xmm3
7802
vmovdqu (%rcx),%xmm0
7803
vpxor %xmm0,%xmm1,%xmm1
7804
vpxor %xmm0,%xmm2,%xmm2
7805
vpxor %xmm0,%xmm3,%xmm3
7806
vmovdqu 16(%rcx),%xmm0
7807
vaesdec %xmm0,%xmm1,%xmm1
7808
vaesdec %xmm0,%xmm2,%xmm2
7809
vaesdec %xmm0,%xmm3,%xmm3
7810
vmovdqu 32(%rcx),%xmm0
7811
vaesdec %xmm0,%xmm1,%xmm1
7812
vaesdec %xmm0,%xmm2,%xmm2
7813
vaesdec %xmm0,%xmm3,%xmm3
7814
vmovdqu 48(%rcx),%xmm0
7815
vaesdec %xmm0,%xmm1,%xmm1
7816
vaesdec %xmm0,%xmm2,%xmm2
7817
vaesdec %xmm0,%xmm3,%xmm3
7818
vmovdqu 64(%rcx),%xmm0
7819
vaesdec %xmm0,%xmm1,%xmm1
7820
vaesdec %xmm0,%xmm2,%xmm2
7821
vaesdec %xmm0,%xmm3,%xmm3
7822
vmovdqu 80(%rcx),%xmm0
7823
vaesdec %xmm0,%xmm1,%xmm1
7824
vaesdec %xmm0,%xmm2,%xmm2
7825
vaesdec %xmm0,%xmm3,%xmm3
7826
vmovdqu 96(%rcx),%xmm0
7827
vaesdec %xmm0,%xmm1,%xmm1
7828
vaesdec %xmm0,%xmm2,%xmm2
7829
vaesdec %xmm0,%xmm3,%xmm3
7830
vmovdqu 112(%rcx),%xmm0
7831
vaesdec %xmm0,%xmm1,%xmm1
7832
vaesdec %xmm0,%xmm2,%xmm2
7833
vaesdec %xmm0,%xmm3,%xmm3
7834
vmovdqu 128(%rcx),%xmm0
7835
vaesdec %xmm0,%xmm1,%xmm1
7836
vaesdec %xmm0,%xmm2,%xmm2
7837
vaesdec %xmm0,%xmm3,%xmm3
7838
vmovdqu 144(%rcx),%xmm0
7839
vaesdec %xmm0,%xmm1,%xmm1
7840
vaesdec %xmm0,%xmm2,%xmm2
7841
vaesdec %xmm0,%xmm3,%xmm3
7842
vmovdqu 160(%rcx),%xmm0
7843
vaesdec %xmm0,%xmm1,%xmm1
7844
vaesdec %xmm0,%xmm2,%xmm2
7845
vaesdec %xmm0,%xmm3,%xmm3
7846
vmovdqu 176(%rcx),%xmm0
7847
vaesdec %xmm0,%xmm1,%xmm1
7848
vaesdec %xmm0,%xmm2,%xmm2
7849
vaesdec %xmm0,%xmm3,%xmm3
7850
vmovdqu 192(%rcx),%xmm0
7851
vaesdec %xmm0,%xmm1,%xmm1
7852
vaesdec %xmm0,%xmm2,%xmm2
7853
vaesdec %xmm0,%xmm3,%xmm3
7854
vmovdqu 208(%rcx),%xmm0
7855
vaesdec %xmm0,%xmm1,%xmm1
7856
vaesdec %xmm0,%xmm2,%xmm2
7857
vaesdec %xmm0,%xmm3,%xmm3
7858
vmovdqu 224(%rcx),%xmm0
7859
vaesdeclast %xmm0,%xmm1,%xmm1
7860
vaesdeclast %xmm0,%xmm2,%xmm2
7861
vaesdeclast %xmm0,%xmm3,%xmm3
7862
vpxor %xmm9,%xmm1,%xmm1
7863
vpxor %xmm10,%xmm2,%xmm2
7864
vpxor %xmm11,%xmm3,%xmm3
7865
vmovdqu %xmm1,(%rsi)
7866
vmovdqu %xmm2,16(%rsi)
7867
addq $0x30,%rsi
7868
vmovdqa %xmm3,%xmm8
7869
jmp .L_done_EmbgEptodyewbFa
7870
7871
.L_num_blocks_is_2_EmbgEptodyewbFa:
7872
vmovdqa 0(%rsp),%xmm9
7873
movq 0(%rsp),%rax
7874
movq 8(%rsp),%rbx
7875
vmovdqu 0(%rdi),%xmm1
7876
xorq %r11,%r11
7877
shlq $1,%rax
7878
adcq %rbx,%rbx
7879
cmovcq %r10,%r11
7880
xorq %r11,%rax
7881
movq %rax,16(%rsp)
7882
movq %rbx,16 + 8(%rsp)
7883
vmovdqa 16(%rsp),%xmm10
7884
vmovdqu 16(%rdi),%xmm2
7885
addq $0x20,%rdi
7886
andq $0xf,%rdx
7887
je .L_done_2_EmbgEptodyewbFa
7888
7889
.L_steal_cipher_2_EmbgEptodyewbFa:
7890
xorq %r11,%r11
7891
shlq $1,%rax
7892
adcq %rbx,%rbx
7893
cmovcq %r10,%r11
7894
xorq %r11,%rax
7895
movq %rax,16(%rsp)
7896
movq %rbx,24(%rsp)
7897
vmovdqa64 %xmm10,%xmm11
7898
vmovdqa 16(%rsp),%xmm10
7899
vpxor %xmm9,%xmm1,%xmm1
7900
vpxor %xmm10,%xmm2,%xmm2
7901
vmovdqu (%rcx),%xmm0
7902
vpxor %xmm0,%xmm1,%xmm1
7903
vpxor %xmm0,%xmm2,%xmm2
7904
vmovdqu 16(%rcx),%xmm0
7905
vaesdec %xmm0,%xmm1,%xmm1
7906
vaesdec %xmm0,%xmm2,%xmm2
7907
vmovdqu 32(%rcx),%xmm0
7908
vaesdec %xmm0,%xmm1,%xmm1
7909
vaesdec %xmm0,%xmm2,%xmm2
7910
vmovdqu 48(%rcx),%xmm0
7911
vaesdec %xmm0,%xmm1,%xmm1
7912
vaesdec %xmm0,%xmm2,%xmm2
7913
vmovdqu 64(%rcx),%xmm0
7914
vaesdec %xmm0,%xmm1,%xmm1
7915
vaesdec %xmm0,%xmm2,%xmm2
7916
vmovdqu 80(%rcx),%xmm0
7917
vaesdec %xmm0,%xmm1,%xmm1
7918
vaesdec %xmm0,%xmm2,%xmm2
7919
vmovdqu 96(%rcx),%xmm0
7920
vaesdec %xmm0,%xmm1,%xmm1
7921
vaesdec %xmm0,%xmm2,%xmm2
7922
vmovdqu 112(%rcx),%xmm0
7923
vaesdec %xmm0,%xmm1,%xmm1
7924
vaesdec %xmm0,%xmm2,%xmm2
7925
vmovdqu 128(%rcx),%xmm0
7926
vaesdec %xmm0,%xmm1,%xmm1
7927
vaesdec %xmm0,%xmm2,%xmm2
7928
vmovdqu 144(%rcx),%xmm0
7929
vaesdec %xmm0,%xmm1,%xmm1
7930
vaesdec %xmm0,%xmm2,%xmm2
7931
vmovdqu 160(%rcx),%xmm0
7932
vaesdec %xmm0,%xmm1,%xmm1
7933
vaesdec %xmm0,%xmm2,%xmm2
7934
vmovdqu 176(%rcx),%xmm0
7935
vaesdec %xmm0,%xmm1,%xmm1
7936
vaesdec %xmm0,%xmm2,%xmm2
7937
vmovdqu 192(%rcx),%xmm0
7938
vaesdec %xmm0,%xmm1,%xmm1
7939
vaesdec %xmm0,%xmm2,%xmm2
7940
vmovdqu 208(%rcx),%xmm0
7941
vaesdec %xmm0,%xmm1,%xmm1
7942
vaesdec %xmm0,%xmm2,%xmm2
7943
vmovdqu 224(%rcx),%xmm0
7944
vaesdeclast %xmm0,%xmm1,%xmm1
7945
vaesdeclast %xmm0,%xmm2,%xmm2
7946
vpxor %xmm9,%xmm1,%xmm1
7947
vpxor %xmm10,%xmm2,%xmm2
7948
vmovdqu %xmm1,(%rsi)
7949
addq $0x20,%rsi
7950
vmovdqa %xmm11,%xmm0
7951
vmovdqa %xmm2,%xmm8
7952
jmp .L_steal_cipher_EmbgEptodyewbFa
7953
7954
.L_done_2_EmbgEptodyewbFa:
7955
vpxor %xmm9,%xmm1,%xmm1
7956
vpxor %xmm10,%xmm2,%xmm2
7957
vmovdqu (%rcx),%xmm0
7958
vpxor %xmm0,%xmm1,%xmm1
7959
vpxor %xmm0,%xmm2,%xmm2
7960
vmovdqu 16(%rcx),%xmm0
7961
vaesdec %xmm0,%xmm1,%xmm1
7962
vaesdec %xmm0,%xmm2,%xmm2
7963
vmovdqu 32(%rcx),%xmm0
7964
vaesdec %xmm0,%xmm1,%xmm1
7965
vaesdec %xmm0,%xmm2,%xmm2
7966
vmovdqu 48(%rcx),%xmm0
7967
vaesdec %xmm0,%xmm1,%xmm1
7968
vaesdec %xmm0,%xmm2,%xmm2
7969
vmovdqu 64(%rcx),%xmm0
7970
vaesdec %xmm0,%xmm1,%xmm1
7971
vaesdec %xmm0,%xmm2,%xmm2
7972
vmovdqu 80(%rcx),%xmm0
7973
vaesdec %xmm0,%xmm1,%xmm1
7974
vaesdec %xmm0,%xmm2,%xmm2
7975
vmovdqu 96(%rcx),%xmm0
7976
vaesdec %xmm0,%xmm1,%xmm1
7977
vaesdec %xmm0,%xmm2,%xmm2
7978
vmovdqu 112(%rcx),%xmm0
7979
vaesdec %xmm0,%xmm1,%xmm1
7980
vaesdec %xmm0,%xmm2,%xmm2
7981
vmovdqu 128(%rcx),%xmm0
7982
vaesdec %xmm0,%xmm1,%xmm1
7983
vaesdec %xmm0,%xmm2,%xmm2
7984
vmovdqu 144(%rcx),%xmm0
7985
vaesdec %xmm0,%xmm1,%xmm1
7986
vaesdec %xmm0,%xmm2,%xmm2
7987
vmovdqu 160(%rcx),%xmm0
7988
vaesdec %xmm0,%xmm1,%xmm1
7989
vaesdec %xmm0,%xmm2,%xmm2
7990
vmovdqu 176(%rcx),%xmm0
7991
vaesdec %xmm0,%xmm1,%xmm1
7992
vaesdec %xmm0,%xmm2,%xmm2
7993
vmovdqu 192(%rcx),%xmm0
7994
vaesdec %xmm0,%xmm1,%xmm1
7995
vaesdec %xmm0,%xmm2,%xmm2
7996
vmovdqu 208(%rcx),%xmm0
7997
vaesdec %xmm0,%xmm1,%xmm1
7998
vaesdec %xmm0,%xmm2,%xmm2
7999
vmovdqu 224(%rcx),%xmm0
8000
vaesdeclast %xmm0,%xmm1,%xmm1
8001
vaesdeclast %xmm0,%xmm2,%xmm2
8002
vpxor %xmm9,%xmm1,%xmm1
8003
vpxor %xmm10,%xmm2,%xmm2
8004
vmovdqu %xmm1,(%rsi)
8005
addq $0x20,%rsi
8006
vmovdqa %xmm2,%xmm8
8007
jmp .L_done_EmbgEptodyewbFa
8008
8009
.L_num_blocks_is_1_EmbgEptodyewbFa:
8010
vmovdqa 0(%rsp),%xmm9
8011
movq 0(%rsp),%rax
8012
movq 8(%rsp),%rbx
8013
vmovdqu 0(%rdi),%xmm1
8014
addq $0x10,%rdi
8015
andq $0xf,%rdx
8016
je .L_done_1_EmbgEptodyewbFa
8017
8018
.L_steal_cipher_1_EmbgEptodyewbFa:
8019
xorq %r11,%r11
8020
shlq $1,%rax
8021
adcq %rbx,%rbx
8022
cmovcq %r10,%r11
8023
xorq %r11,%rax
8024
movq %rax,16(%rsp)
8025
movq %rbx,24(%rsp)
8026
vmovdqa64 %xmm9,%xmm10
8027
vmovdqa 16(%rsp),%xmm9
8028
vpxor %xmm9,%xmm1,%xmm1
8029
vmovdqu (%rcx),%xmm0
8030
vpxor %xmm0,%xmm1,%xmm1
8031
vmovdqu 16(%rcx),%xmm0
8032
vaesdec %xmm0,%xmm1,%xmm1
8033
vmovdqu 32(%rcx),%xmm0
8034
vaesdec %xmm0,%xmm1,%xmm1
8035
vmovdqu 48(%rcx),%xmm0
8036
vaesdec %xmm0,%xmm1,%xmm1
8037
vmovdqu 64(%rcx),%xmm0
8038
vaesdec %xmm0,%xmm1,%xmm1
8039
vmovdqu 80(%rcx),%xmm0
8040
vaesdec %xmm0,%xmm1,%xmm1
8041
vmovdqu 96(%rcx),%xmm0
8042
vaesdec %xmm0,%xmm1,%xmm1
8043
vmovdqu 112(%rcx),%xmm0
8044
vaesdec %xmm0,%xmm1,%xmm1
8045
vmovdqu 128(%rcx),%xmm0
8046
vaesdec %xmm0,%xmm1,%xmm1
8047
vmovdqu 144(%rcx),%xmm0
8048
vaesdec %xmm0,%xmm1,%xmm1
8049
vmovdqu 160(%rcx),%xmm0
8050
vaesdec %xmm0,%xmm1,%xmm1
8051
vmovdqu 176(%rcx),%xmm0
8052
vaesdec %xmm0,%xmm1,%xmm1
8053
vmovdqu 192(%rcx),%xmm0
8054
vaesdec %xmm0,%xmm1,%xmm1
8055
vmovdqu 208(%rcx),%xmm0
8056
vaesdec %xmm0,%xmm1,%xmm1
8057
vmovdqu 224(%rcx),%xmm0
8058
vaesdeclast %xmm0,%xmm1,%xmm1
8059
vpxor %xmm9,%xmm1,%xmm1
8060
addq $0x10,%rsi
8061
vmovdqa %xmm10,%xmm0
8062
vmovdqa %xmm1,%xmm8
8063
jmp .L_steal_cipher_EmbgEptodyewbFa
8064
8065
.L_done_1_EmbgEptodyewbFa:
8066
vpxor %xmm9,%xmm1,%xmm1
8067
vmovdqu (%rcx),%xmm0
8068
vpxor %xmm0,%xmm1,%xmm1
8069
vmovdqu 16(%rcx),%xmm0
8070
vaesdec %xmm0,%xmm1,%xmm1
8071
vmovdqu 32(%rcx),%xmm0
8072
vaesdec %xmm0,%xmm1,%xmm1
8073
vmovdqu 48(%rcx),%xmm0
8074
vaesdec %xmm0,%xmm1,%xmm1
8075
vmovdqu 64(%rcx),%xmm0
8076
vaesdec %xmm0,%xmm1,%xmm1
8077
vmovdqu 80(%rcx),%xmm0
8078
vaesdec %xmm0,%xmm1,%xmm1
8079
vmovdqu 96(%rcx),%xmm0
8080
vaesdec %xmm0,%xmm1,%xmm1
8081
vmovdqu 112(%rcx),%xmm0
8082
vaesdec %xmm0,%xmm1,%xmm1
8083
vmovdqu 128(%rcx),%xmm0
8084
vaesdec %xmm0,%xmm1,%xmm1
8085
vmovdqu 144(%rcx),%xmm0
8086
vaesdec %xmm0,%xmm1,%xmm1
8087
vmovdqu 160(%rcx),%xmm0
8088
vaesdec %xmm0,%xmm1,%xmm1
8089
vmovdqu 176(%rcx),%xmm0
8090
vaesdec %xmm0,%xmm1,%xmm1
8091
vmovdqu 192(%rcx),%xmm0
8092
vaesdec %xmm0,%xmm1,%xmm1
8093
vmovdqu 208(%rcx),%xmm0
8094
vaesdec %xmm0,%xmm1,%xmm1
8095
vmovdqu 224(%rcx),%xmm0
8096
vaesdeclast %xmm0,%xmm1,%xmm1
8097
vpxor %xmm9,%xmm1,%xmm1
8098
addq $0x10,%rsi
8099
vmovdqa %xmm1,%xmm8
8100
jmp .L_done_EmbgEptodyewbFa
8101
.cfi_endproc
8102
.section .rodata
8103
.align 16
8104
8105
vpshufb_shf_table:
8106
.quad 0x8786858483828100, 0x8f8e8d8c8b8a8988
8107
.quad 0x0706050403020100, 0x000e0d0c0b0a0908
8108
8109
mask1:
8110
.quad 0x8080808080808080, 0x8080808080808080
8111
8112
const_dq3210:
8113
.quad 0, 0, 1, 1, 2, 2, 3, 3
8114
const_dq5678:
8115
.quad 8, 8, 7, 7, 6, 6, 5, 5
8116
const_dq7654:
8117
.quad 4, 4, 5, 5, 6, 6, 7, 7
8118
const_dq1234:
8119
.quad 4, 4, 3, 3, 2, 2, 1, 1
8120
8121
shufb_15_7:
8122
.byte 15, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7, 0xff, 0xff
8123
.byte 0xff, 0xff, 0xff, 0xff, 0xff
8124
8125
.text
8126
.section ".note.gnu.property", "a"
8127
.p2align 3
8128
.long 1f - 0f
8129
.long 4f - 1f
8130
.long 5
8131
0:
8132
# "GNU" encoded with .byte, since .asciz isn't supported
8133
# on Solaris.
8134
.byte 0x47
8135
.byte 0x4e
8136
.byte 0x55
8137
.byte 0
8138
1:
8139
.p2align 3
8140
.long 0xc0000002
8141
.long 3f - 2f
8142
2:
8143
.long 3
8144
3:
8145
.p2align 3
8146
4:
8147
8148