Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/i386/vpaes-x86.S
39482 views
1
/* Do not modify. This file is auto-generated from vpaes-x86.pl. */
2
#ifdef PIC
3
.text
4
.align 64
5
.L_vpaes_consts:
6
.long 218628480,235210255,168496130,67568393
7
.long 252381056,17041926,33884169,51187212
8
.long 252645135,252645135,252645135,252645135
9
.long 1512730624,3266504856,1377990664,3401244816
10
.long 830229760,1275146365,2969422977,3447763452
11
.long 3411033600,2979783055,338359620,2782886510
12
.long 4209124096,907596821,221174255,1006095553
13
.long 191964160,3799684038,3164090317,1589111125
14
.long 182528256,1777043520,2877432650,3265356744
15
.long 1874708224,3503451415,3305285752,363511674
16
.long 1606117888,3487855781,1093350906,2384367825
17
.long 197121,67569157,134941193,202313229
18
.long 67569157,134941193,202313229,197121
19
.long 134941193,202313229,197121,67569157
20
.long 202313229,197121,67569157,134941193
21
.long 33619971,100992007,168364043,235736079
22
.long 235736079,33619971,100992007,168364043
23
.long 168364043,235736079,33619971,100992007
24
.long 100992007,168364043,235736079,33619971
25
.long 50462976,117835012,185207048,252579084
26
.long 252314880,51251460,117574920,184942860
27
.long 184682752,252054788,50987272,118359308
28
.long 118099200,185467140,251790600,50727180
29
.long 2946363062,528716217,1300004225,1881839624
30
.long 1532713819,1532713819,1532713819,1532713819
31
.long 3602276352,4288629033,3737020424,4153884961
32
.long 1354558464,32357713,2958822624,3775749553
33
.long 1201988352,132424512,1572796698,503232858
34
.long 2213177600,1597421020,4103937655,675398315
35
.long 2749646592,4273543773,1511898873,121693092
36
.long 3040248576,1103263732,2871565598,1608280554
37
.long 2236667136,2588920351,482954393,64377734
38
.long 3069987328,291237287,2117370568,3650299247
39
.long 533321216,3573750986,2572112006,1401264716
40
.long 1339849704,2721158661,548607111,3445553514
41
.long 2128193280,3054596040,2183486460,1257083700
42
.long 655635200,1165381986,3923443150,2344132524
43
.long 190078720,256924420,290342170,357187870
44
.long 1610966272,2263057382,4103205268,309794674
45
.long 2592527872,2233205587,1335446729,3402964816
46
.long 3973531904,3225098121,3002836325,1918774430
47
.long 3870401024,2102906079,2284471353,4117666579
48
.long 617007872,1021508343,366931923,691083277
49
.long 2528395776,3491914898,2968704004,1613121270
50
.long 3445188352,3247741094,844474987,4093578302
51
.long 651481088,1190302358,1689581232,574775300
52
.long 4289380608,206939853,2555985458,2489840491
53
.long 2130264064,327674451,3566485037,3349835193
54
.long 2470714624,316102159,3636825756,3393945945
55
.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
56
.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
57
.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
58
.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
59
.byte 118,101,114,115,105,116,121,41,0
60
.align 64
61
.type _vpaes_preheat,@function
62
.align 16
63
_vpaes_preheat:
64
#ifdef __CET__
65
66
.byte 243,15,30,251
67
#endif
68
69
addl (%esp),%ebp
70
movdqa -48(%ebp),%xmm7
71
movdqa -16(%ebp),%xmm6
72
ret
73
.size _vpaes_preheat,.-_vpaes_preheat
74
.type _vpaes_encrypt_core,@function
75
.align 16
76
_vpaes_encrypt_core:
77
#ifdef __CET__
78
79
.byte 243,15,30,251
80
#endif
81
82
movl $16,%ecx
83
movl 240(%edx),%eax
84
movdqa %xmm6,%xmm1
85
movdqa (%ebp),%xmm2
86
pandn %xmm0,%xmm1
87
pand %xmm6,%xmm0
88
movdqu (%edx),%xmm5
89
.byte 102,15,56,0,208
90
movdqa 16(%ebp),%xmm0
91
pxor %xmm5,%xmm2
92
psrld $4,%xmm1
93
addl $16,%edx
94
.byte 102,15,56,0,193
95
leal 192(%ebp),%ebx
96
pxor %xmm2,%xmm0
97
jmp .L000enc_entry
98
.align 16
99
.L001enc_loop:
100
movdqa 32(%ebp),%xmm4
101
movdqa 48(%ebp),%xmm0
102
.byte 102,15,56,0,226
103
.byte 102,15,56,0,195
104
pxor %xmm5,%xmm4
105
movdqa 64(%ebp),%xmm5
106
pxor %xmm4,%xmm0
107
movdqa -64(%ebx,%ecx,1),%xmm1
108
.byte 102,15,56,0,234
109
movdqa 80(%ebp),%xmm2
110
movdqa (%ebx,%ecx,1),%xmm4
111
.byte 102,15,56,0,211
112
movdqa %xmm0,%xmm3
113
pxor %xmm5,%xmm2
114
.byte 102,15,56,0,193
115
addl $16,%edx
116
pxor %xmm2,%xmm0
117
.byte 102,15,56,0,220
118
addl $16,%ecx
119
pxor %xmm0,%xmm3
120
.byte 102,15,56,0,193
121
andl $48,%ecx
122
subl $1,%eax
123
pxor %xmm3,%xmm0
124
.L000enc_entry:
125
movdqa %xmm6,%xmm1
126
movdqa -32(%ebp),%xmm5
127
pandn %xmm0,%xmm1
128
psrld $4,%xmm1
129
pand %xmm6,%xmm0
130
.byte 102,15,56,0,232
131
movdqa %xmm7,%xmm3
132
pxor %xmm1,%xmm0
133
.byte 102,15,56,0,217
134
movdqa %xmm7,%xmm4
135
pxor %xmm5,%xmm3
136
.byte 102,15,56,0,224
137
movdqa %xmm7,%xmm2
138
pxor %xmm5,%xmm4
139
.byte 102,15,56,0,211
140
movdqa %xmm7,%xmm3
141
pxor %xmm0,%xmm2
142
.byte 102,15,56,0,220
143
movdqu (%edx),%xmm5
144
pxor %xmm1,%xmm3
145
jnz .L001enc_loop
146
movdqa 96(%ebp),%xmm4
147
movdqa 112(%ebp),%xmm0
148
.byte 102,15,56,0,226
149
pxor %xmm5,%xmm4
150
.byte 102,15,56,0,195
151
movdqa 64(%ebx,%ecx,1),%xmm1
152
pxor %xmm4,%xmm0
153
.byte 102,15,56,0,193
154
ret
155
.size _vpaes_encrypt_core,.-_vpaes_encrypt_core
156
.type _vpaes_decrypt_core,@function
157
.align 16
158
_vpaes_decrypt_core:
159
#ifdef __CET__
160
161
.byte 243,15,30,251
162
#endif
163
164
leal 608(%ebp),%ebx
165
movl 240(%edx),%eax
166
movdqa %xmm6,%xmm1
167
movdqa -64(%ebx),%xmm2
168
pandn %xmm0,%xmm1
169
movl %eax,%ecx
170
psrld $4,%xmm1
171
movdqu (%edx),%xmm5
172
shll $4,%ecx
173
pand %xmm6,%xmm0
174
.byte 102,15,56,0,208
175
movdqa -48(%ebx),%xmm0
176
xorl $48,%ecx
177
.byte 102,15,56,0,193
178
andl $48,%ecx
179
pxor %xmm5,%xmm2
180
movdqa 176(%ebp),%xmm5
181
pxor %xmm2,%xmm0
182
addl $16,%edx
183
leal -352(%ebx,%ecx,1),%ecx
184
jmp .L002dec_entry
185
.align 16
186
.L003dec_loop:
187
movdqa -32(%ebx),%xmm4
188
movdqa -16(%ebx),%xmm1
189
.byte 102,15,56,0,226
190
.byte 102,15,56,0,203
191
pxor %xmm4,%xmm0
192
movdqa (%ebx),%xmm4
193
pxor %xmm1,%xmm0
194
movdqa 16(%ebx),%xmm1
195
.byte 102,15,56,0,226
196
.byte 102,15,56,0,197
197
.byte 102,15,56,0,203
198
pxor %xmm4,%xmm0
199
movdqa 32(%ebx),%xmm4
200
pxor %xmm1,%xmm0
201
movdqa 48(%ebx),%xmm1
202
.byte 102,15,56,0,226
203
.byte 102,15,56,0,197
204
.byte 102,15,56,0,203
205
pxor %xmm4,%xmm0
206
movdqa 64(%ebx),%xmm4
207
pxor %xmm1,%xmm0
208
movdqa 80(%ebx),%xmm1
209
.byte 102,15,56,0,226
210
.byte 102,15,56,0,197
211
.byte 102,15,56,0,203
212
pxor %xmm4,%xmm0
213
addl $16,%edx
214
.byte 102,15,58,15,237,12
215
pxor %xmm1,%xmm0
216
subl $1,%eax
217
.L002dec_entry:
218
movdqa %xmm6,%xmm1
219
movdqa -32(%ebp),%xmm2
220
pandn %xmm0,%xmm1
221
pand %xmm6,%xmm0
222
psrld $4,%xmm1
223
.byte 102,15,56,0,208
224
movdqa %xmm7,%xmm3
225
pxor %xmm1,%xmm0
226
.byte 102,15,56,0,217
227
movdqa %xmm7,%xmm4
228
pxor %xmm2,%xmm3
229
.byte 102,15,56,0,224
230
pxor %xmm2,%xmm4
231
movdqa %xmm7,%xmm2
232
.byte 102,15,56,0,211
233
movdqa %xmm7,%xmm3
234
pxor %xmm0,%xmm2
235
.byte 102,15,56,0,220
236
movdqu (%edx),%xmm0
237
pxor %xmm1,%xmm3
238
jnz .L003dec_loop
239
movdqa 96(%ebx),%xmm4
240
.byte 102,15,56,0,226
241
pxor %xmm0,%xmm4
242
movdqa 112(%ebx),%xmm0
243
movdqa (%ecx),%xmm2
244
.byte 102,15,56,0,195
245
pxor %xmm4,%xmm0
246
.byte 102,15,56,0,194
247
ret
248
.size _vpaes_decrypt_core,.-_vpaes_decrypt_core
249
.type _vpaes_schedule_core,@function
250
.align 16
251
_vpaes_schedule_core:
252
#ifdef __CET__
253
254
.byte 243,15,30,251
255
#endif
256
257
addl (%esp),%ebp
258
movdqu (%esi),%xmm0
259
movdqa 320(%ebp),%xmm2
260
movdqa %xmm0,%xmm3
261
leal (%ebp),%ebx
262
movdqa %xmm2,4(%esp)
263
call _vpaes_schedule_transform
264
movdqa %xmm0,%xmm7
265
testl %edi,%edi
266
jnz .L004schedule_am_decrypting
267
movdqu %xmm0,(%edx)
268
jmp .L005schedule_go
269
.L004schedule_am_decrypting:
270
movdqa 256(%ebp,%ecx,1),%xmm1
271
.byte 102,15,56,0,217
272
movdqu %xmm3,(%edx)
273
xorl $48,%ecx
274
.L005schedule_go:
275
cmpl $192,%eax
276
ja .L006schedule_256
277
je .L007schedule_192
278
.L008schedule_128:
279
movl $10,%eax
280
.L009loop_schedule_128:
281
call _vpaes_schedule_round
282
decl %eax
283
jz .L010schedule_mangle_last
284
call _vpaes_schedule_mangle
285
jmp .L009loop_schedule_128
286
.align 16
287
.L007schedule_192:
288
movdqu 8(%esi),%xmm0
289
call _vpaes_schedule_transform
290
movdqa %xmm0,%xmm6
291
pxor %xmm4,%xmm4
292
movhlps %xmm4,%xmm6
293
movl $4,%eax
294
.L011loop_schedule_192:
295
call _vpaes_schedule_round
296
.byte 102,15,58,15,198,8
297
call _vpaes_schedule_mangle
298
call _vpaes_schedule_192_smear
299
call _vpaes_schedule_mangle
300
call _vpaes_schedule_round
301
decl %eax
302
jz .L010schedule_mangle_last
303
call _vpaes_schedule_mangle
304
call _vpaes_schedule_192_smear
305
jmp .L011loop_schedule_192
306
.align 16
307
.L006schedule_256:
308
movdqu 16(%esi),%xmm0
309
call _vpaes_schedule_transform
310
movl $7,%eax
311
.L012loop_schedule_256:
312
call _vpaes_schedule_mangle
313
movdqa %xmm0,%xmm6
314
call _vpaes_schedule_round
315
decl %eax
316
jz .L010schedule_mangle_last
317
call _vpaes_schedule_mangle
318
pshufd $255,%xmm0,%xmm0
319
movdqa %xmm7,20(%esp)
320
movdqa %xmm6,%xmm7
321
call .L_vpaes_schedule_low_round
322
movdqa 20(%esp),%xmm7
323
jmp .L012loop_schedule_256
324
.align 16
325
.L010schedule_mangle_last:
326
leal 384(%ebp),%ebx
327
testl %edi,%edi
328
jnz .L013schedule_mangle_last_dec
329
movdqa 256(%ebp,%ecx,1),%xmm1
330
.byte 102,15,56,0,193
331
leal 352(%ebp),%ebx
332
addl $32,%edx
333
.L013schedule_mangle_last_dec:
334
addl $-16,%edx
335
pxor 336(%ebp),%xmm0
336
call _vpaes_schedule_transform
337
movdqu %xmm0,(%edx)
338
pxor %xmm0,%xmm0
339
pxor %xmm1,%xmm1
340
pxor %xmm2,%xmm2
341
pxor %xmm3,%xmm3
342
pxor %xmm4,%xmm4
343
pxor %xmm5,%xmm5
344
pxor %xmm6,%xmm6
345
pxor %xmm7,%xmm7
346
ret
347
.size _vpaes_schedule_core,.-_vpaes_schedule_core
348
.type _vpaes_schedule_192_smear,@function
349
.align 16
350
_vpaes_schedule_192_smear:
351
#ifdef __CET__
352
353
.byte 243,15,30,251
354
#endif
355
356
pshufd $128,%xmm6,%xmm1
357
pshufd $254,%xmm7,%xmm0
358
pxor %xmm1,%xmm6
359
pxor %xmm1,%xmm1
360
pxor %xmm0,%xmm6
361
movdqa %xmm6,%xmm0
362
movhlps %xmm1,%xmm6
363
ret
364
.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
365
.type _vpaes_schedule_round,@function
366
.align 16
367
_vpaes_schedule_round:
368
#ifdef __CET__
369
370
.byte 243,15,30,251
371
#endif
372
373
movdqa 8(%esp),%xmm2
374
pxor %xmm1,%xmm1
375
.byte 102,15,58,15,202,15
376
.byte 102,15,58,15,210,15
377
pxor %xmm1,%xmm7
378
pshufd $255,%xmm0,%xmm0
379
.byte 102,15,58,15,192,1
380
movdqa %xmm2,8(%esp)
381
.L_vpaes_schedule_low_round:
382
movdqa %xmm7,%xmm1
383
pslldq $4,%xmm7
384
pxor %xmm1,%xmm7
385
movdqa %xmm7,%xmm1
386
pslldq $8,%xmm7
387
pxor %xmm1,%xmm7
388
pxor 336(%ebp),%xmm7
389
movdqa -16(%ebp),%xmm4
390
movdqa -48(%ebp),%xmm5
391
movdqa %xmm4,%xmm1
392
pandn %xmm0,%xmm1
393
psrld $4,%xmm1
394
pand %xmm4,%xmm0
395
movdqa -32(%ebp),%xmm2
396
.byte 102,15,56,0,208
397
pxor %xmm1,%xmm0
398
movdqa %xmm5,%xmm3
399
.byte 102,15,56,0,217
400
pxor %xmm2,%xmm3
401
movdqa %xmm5,%xmm4
402
.byte 102,15,56,0,224
403
pxor %xmm2,%xmm4
404
movdqa %xmm5,%xmm2
405
.byte 102,15,56,0,211
406
pxor %xmm0,%xmm2
407
movdqa %xmm5,%xmm3
408
.byte 102,15,56,0,220
409
pxor %xmm1,%xmm3
410
movdqa 32(%ebp),%xmm4
411
.byte 102,15,56,0,226
412
movdqa 48(%ebp),%xmm0
413
.byte 102,15,56,0,195
414
pxor %xmm4,%xmm0
415
pxor %xmm7,%xmm0
416
movdqa %xmm0,%xmm7
417
ret
418
.size _vpaes_schedule_round,.-_vpaes_schedule_round
419
.type _vpaes_schedule_transform,@function
420
.align 16
421
_vpaes_schedule_transform:
422
#ifdef __CET__
423
424
.byte 243,15,30,251
425
#endif
426
427
movdqa -16(%ebp),%xmm2
428
movdqa %xmm2,%xmm1
429
pandn %xmm0,%xmm1
430
psrld $4,%xmm1
431
pand %xmm2,%xmm0
432
movdqa (%ebx),%xmm2
433
.byte 102,15,56,0,208
434
movdqa 16(%ebx),%xmm0
435
.byte 102,15,56,0,193
436
pxor %xmm2,%xmm0
437
ret
438
.size _vpaes_schedule_transform,.-_vpaes_schedule_transform
439
.type _vpaes_schedule_mangle,@function
440
.align 16
441
_vpaes_schedule_mangle:
442
#ifdef __CET__
443
444
.byte 243,15,30,251
445
#endif
446
447
movdqa %xmm0,%xmm4
448
movdqa 128(%ebp),%xmm5
449
testl %edi,%edi
450
jnz .L014schedule_mangle_dec
451
addl $16,%edx
452
pxor 336(%ebp),%xmm4
453
.byte 102,15,56,0,229
454
movdqa %xmm4,%xmm3
455
.byte 102,15,56,0,229
456
pxor %xmm4,%xmm3
457
.byte 102,15,56,0,229
458
pxor %xmm4,%xmm3
459
jmp .L015schedule_mangle_both
460
.align 16
461
.L014schedule_mangle_dec:
462
movdqa -16(%ebp),%xmm2
463
leal 416(%ebp),%esi
464
movdqa %xmm2,%xmm1
465
pandn %xmm4,%xmm1
466
psrld $4,%xmm1
467
pand %xmm2,%xmm4
468
movdqa (%esi),%xmm2
469
.byte 102,15,56,0,212
470
movdqa 16(%esi),%xmm3
471
.byte 102,15,56,0,217
472
pxor %xmm2,%xmm3
473
.byte 102,15,56,0,221
474
movdqa 32(%esi),%xmm2
475
.byte 102,15,56,0,212
476
pxor %xmm3,%xmm2
477
movdqa 48(%esi),%xmm3
478
.byte 102,15,56,0,217
479
pxor %xmm2,%xmm3
480
.byte 102,15,56,0,221
481
movdqa 64(%esi),%xmm2
482
.byte 102,15,56,0,212
483
pxor %xmm3,%xmm2
484
movdqa 80(%esi),%xmm3
485
.byte 102,15,56,0,217
486
pxor %xmm2,%xmm3
487
.byte 102,15,56,0,221
488
movdqa 96(%esi),%xmm2
489
.byte 102,15,56,0,212
490
pxor %xmm3,%xmm2
491
movdqa 112(%esi),%xmm3
492
.byte 102,15,56,0,217
493
pxor %xmm2,%xmm3
494
addl $-16,%edx
495
.L015schedule_mangle_both:
496
movdqa 256(%ebp,%ecx,1),%xmm1
497
.byte 102,15,56,0,217
498
addl $-16,%ecx
499
andl $48,%ecx
500
movdqu %xmm3,(%edx)
501
ret
502
.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle
503
.globl vpaes_set_encrypt_key
504
.type vpaes_set_encrypt_key,@function
505
.align 16
506
vpaes_set_encrypt_key:
507
.L_vpaes_set_encrypt_key_begin:
508
#ifdef __CET__
509
510
.byte 243,15,30,251
511
#endif
512
513
pushl %ebp
514
pushl %ebx
515
pushl %esi
516
pushl %edi
517
movl 20(%esp),%esi
518
leal -56(%esp),%ebx
519
movl 24(%esp),%eax
520
andl $-16,%ebx
521
movl 28(%esp),%edx
522
xchgl %esp,%ebx
523
movl %ebx,48(%esp)
524
movl %eax,%ebx
525
shrl $5,%ebx
526
addl $5,%ebx
527
movl %ebx,240(%edx)
528
movl $48,%ecx
529
movl $0,%edi
530
leal .L_vpaes_consts+0x30-.L016pic_point,%ebp
531
call _vpaes_schedule_core
532
.L016pic_point:
533
movl 48(%esp),%esp
534
xorl %eax,%eax
535
popl %edi
536
popl %esi
537
popl %ebx
538
popl %ebp
539
ret
540
.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
541
.globl vpaes_set_decrypt_key
542
.type vpaes_set_decrypt_key,@function
543
.align 16
544
vpaes_set_decrypt_key:
545
.L_vpaes_set_decrypt_key_begin:
546
#ifdef __CET__
547
548
.byte 243,15,30,251
549
#endif
550
551
pushl %ebp
552
pushl %ebx
553
pushl %esi
554
pushl %edi
555
movl 20(%esp),%esi
556
leal -56(%esp),%ebx
557
movl 24(%esp),%eax
558
andl $-16,%ebx
559
movl 28(%esp),%edx
560
xchgl %esp,%ebx
561
movl %ebx,48(%esp)
562
movl %eax,%ebx
563
shrl $5,%ebx
564
addl $5,%ebx
565
movl %ebx,240(%edx)
566
shll $4,%ebx
567
leal 16(%edx,%ebx,1),%edx
568
movl $1,%edi
569
movl %eax,%ecx
570
shrl $1,%ecx
571
andl $32,%ecx
572
xorl $32,%ecx
573
leal .L_vpaes_consts+0x30-.L017pic_point,%ebp
574
call _vpaes_schedule_core
575
.L017pic_point:
576
movl 48(%esp),%esp
577
xorl %eax,%eax
578
popl %edi
579
popl %esi
580
popl %ebx
581
popl %ebp
582
ret
583
.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
584
.globl vpaes_encrypt
585
.type vpaes_encrypt,@function
586
.align 16
587
vpaes_encrypt:
588
.L_vpaes_encrypt_begin:
589
#ifdef __CET__
590
591
.byte 243,15,30,251
592
#endif
593
594
pushl %ebp
595
pushl %ebx
596
pushl %esi
597
pushl %edi
598
leal .L_vpaes_consts+0x30-.L018pic_point,%ebp
599
call _vpaes_preheat
600
.L018pic_point:
601
movl 20(%esp),%esi
602
leal -56(%esp),%ebx
603
movl 24(%esp),%edi
604
andl $-16,%ebx
605
movl 28(%esp),%edx
606
xchgl %esp,%ebx
607
movl %ebx,48(%esp)
608
movdqu (%esi),%xmm0
609
call _vpaes_encrypt_core
610
movdqu %xmm0,(%edi)
611
movl 48(%esp),%esp
612
popl %edi
613
popl %esi
614
popl %ebx
615
popl %ebp
616
ret
617
.size vpaes_encrypt,.-.L_vpaes_encrypt_begin
618
.globl vpaes_decrypt
619
.type vpaes_decrypt,@function
620
.align 16
621
vpaes_decrypt:
622
.L_vpaes_decrypt_begin:
623
#ifdef __CET__
624
625
.byte 243,15,30,251
626
#endif
627
628
pushl %ebp
629
pushl %ebx
630
pushl %esi
631
pushl %edi
632
leal .L_vpaes_consts+0x30-.L019pic_point,%ebp
633
call _vpaes_preheat
634
.L019pic_point:
635
movl 20(%esp),%esi
636
leal -56(%esp),%ebx
637
movl 24(%esp),%edi
638
andl $-16,%ebx
639
movl 28(%esp),%edx
640
xchgl %esp,%ebx
641
movl %ebx,48(%esp)
642
movdqu (%esi),%xmm0
643
call _vpaes_decrypt_core
644
movdqu %xmm0,(%edi)
645
movl 48(%esp),%esp
646
popl %edi
647
popl %esi
648
popl %ebx
649
popl %ebp
650
ret
651
.size vpaes_decrypt,.-.L_vpaes_decrypt_begin
652
.globl vpaes_cbc_encrypt
653
.type vpaes_cbc_encrypt,@function
654
.align 16
655
vpaes_cbc_encrypt:
656
.L_vpaes_cbc_encrypt_begin:
657
#ifdef __CET__
658
659
.byte 243,15,30,251
660
#endif
661
662
pushl %ebp
663
pushl %ebx
664
pushl %esi
665
pushl %edi
666
movl 20(%esp),%esi
667
movl 24(%esp),%edi
668
movl 28(%esp),%eax
669
movl 32(%esp),%edx
670
subl $16,%eax
671
jc .L020cbc_abort
672
leal -56(%esp),%ebx
673
movl 36(%esp),%ebp
674
andl $-16,%ebx
675
movl 40(%esp),%ecx
676
xchgl %esp,%ebx
677
movdqu (%ebp),%xmm1
678
subl %esi,%edi
679
movl %ebx,48(%esp)
680
movl %edi,(%esp)
681
movl %edx,4(%esp)
682
movl %ebp,8(%esp)
683
movl %eax,%edi
684
leal .L_vpaes_consts+0x30-.L021pic_point,%ebp
685
call _vpaes_preheat
686
.L021pic_point:
687
cmpl $0,%ecx
688
je .L022cbc_dec_loop
689
jmp .L023cbc_enc_loop
690
.align 16
691
.L023cbc_enc_loop:
692
movdqu (%esi),%xmm0
693
pxor %xmm1,%xmm0
694
call _vpaes_encrypt_core
695
movl (%esp),%ebx
696
movl 4(%esp),%edx
697
movdqa %xmm0,%xmm1
698
movdqu %xmm0,(%ebx,%esi,1)
699
leal 16(%esi),%esi
700
subl $16,%edi
701
jnc .L023cbc_enc_loop
702
jmp .L024cbc_done
703
.align 16
704
.L022cbc_dec_loop:
705
movdqu (%esi),%xmm0
706
movdqa %xmm1,16(%esp)
707
movdqa %xmm0,32(%esp)
708
call _vpaes_decrypt_core
709
movl (%esp),%ebx
710
movl 4(%esp),%edx
711
pxor 16(%esp),%xmm0
712
movdqa 32(%esp),%xmm1
713
movdqu %xmm0,(%ebx,%esi,1)
714
leal 16(%esi),%esi
715
subl $16,%edi
716
jnc .L022cbc_dec_loop
717
.L024cbc_done:
718
movl 8(%esp),%ebx
719
movl 48(%esp),%esp
720
movdqu %xmm1,(%ebx)
721
.L020cbc_abort:
722
popl %edi
723
popl %esi
724
popl %ebx
725
popl %ebp
726
ret
727
.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
728
729
.section ".note.gnu.property", "a"
730
.p2align 2
731
.long 1f - 0f
732
.long 4f - 1f
733
.long 5
734
0:
735
.asciz "GNU"
736
1:
737
.p2align 2
738
.long 0xc0000002
739
.long 3f - 2f
740
2:
741
.long 3
742
3:
743
.p2align 2
744
4:
745
#else
746
.text
747
.align 64
748
.L_vpaes_consts:
749
.long 218628480,235210255,168496130,67568393
750
.long 252381056,17041926,33884169,51187212
751
.long 252645135,252645135,252645135,252645135
752
.long 1512730624,3266504856,1377990664,3401244816
753
.long 830229760,1275146365,2969422977,3447763452
754
.long 3411033600,2979783055,338359620,2782886510
755
.long 4209124096,907596821,221174255,1006095553
756
.long 191964160,3799684038,3164090317,1589111125
757
.long 182528256,1777043520,2877432650,3265356744
758
.long 1874708224,3503451415,3305285752,363511674
759
.long 1606117888,3487855781,1093350906,2384367825
760
.long 197121,67569157,134941193,202313229
761
.long 67569157,134941193,202313229,197121
762
.long 134941193,202313229,197121,67569157
763
.long 202313229,197121,67569157,134941193
764
.long 33619971,100992007,168364043,235736079
765
.long 235736079,33619971,100992007,168364043
766
.long 168364043,235736079,33619971,100992007
767
.long 100992007,168364043,235736079,33619971
768
.long 50462976,117835012,185207048,252579084
769
.long 252314880,51251460,117574920,184942860
770
.long 184682752,252054788,50987272,118359308
771
.long 118099200,185467140,251790600,50727180
772
.long 2946363062,528716217,1300004225,1881839624
773
.long 1532713819,1532713819,1532713819,1532713819
774
.long 3602276352,4288629033,3737020424,4153884961
775
.long 1354558464,32357713,2958822624,3775749553
776
.long 1201988352,132424512,1572796698,503232858
777
.long 2213177600,1597421020,4103937655,675398315
778
.long 2749646592,4273543773,1511898873,121693092
779
.long 3040248576,1103263732,2871565598,1608280554
780
.long 2236667136,2588920351,482954393,64377734
781
.long 3069987328,291237287,2117370568,3650299247
782
.long 533321216,3573750986,2572112006,1401264716
783
.long 1339849704,2721158661,548607111,3445553514
784
.long 2128193280,3054596040,2183486460,1257083700
785
.long 655635200,1165381986,3923443150,2344132524
786
.long 190078720,256924420,290342170,357187870
787
.long 1610966272,2263057382,4103205268,309794674
788
.long 2592527872,2233205587,1335446729,3402964816
789
.long 3973531904,3225098121,3002836325,1918774430
790
.long 3870401024,2102906079,2284471353,4117666579
791
.long 617007872,1021508343,366931923,691083277
792
.long 2528395776,3491914898,2968704004,1613121270
793
.long 3445188352,3247741094,844474987,4093578302
794
.long 651481088,1190302358,1689581232,574775300
795
.long 4289380608,206939853,2555985458,2489840491
796
.long 2130264064,327674451,3566485037,3349835193
797
.long 2470714624,316102159,3636825756,3393945945
798
.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
799
.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
800
.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
801
.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
802
.byte 118,101,114,115,105,116,121,41,0
803
.align 64
804
.type _vpaes_preheat,@function
805
.align 16
806
_vpaes_preheat:
807
#ifdef __CET__
808
809
.byte 243,15,30,251
810
#endif
811
812
addl (%esp),%ebp
813
movdqa -48(%ebp),%xmm7
814
movdqa -16(%ebp),%xmm6
815
ret
816
.size _vpaes_preheat,.-_vpaes_preheat
817
.type _vpaes_encrypt_core,@function
818
.align 16
819
_vpaes_encrypt_core:
820
#ifdef __CET__
821
822
.byte 243,15,30,251
823
#endif
824
825
movl $16,%ecx
826
movl 240(%edx),%eax
827
movdqa %xmm6,%xmm1
828
movdqa (%ebp),%xmm2
829
pandn %xmm0,%xmm1
830
pand %xmm6,%xmm0
831
movdqu (%edx),%xmm5
832
.byte 102,15,56,0,208
833
movdqa 16(%ebp),%xmm0
834
pxor %xmm5,%xmm2
835
psrld $4,%xmm1
836
addl $16,%edx
837
.byte 102,15,56,0,193
838
leal 192(%ebp),%ebx
839
pxor %xmm2,%xmm0
840
jmp .L000enc_entry
841
.align 16
842
.L001enc_loop:
843
movdqa 32(%ebp),%xmm4
844
movdqa 48(%ebp),%xmm0
845
.byte 102,15,56,0,226
846
.byte 102,15,56,0,195
847
pxor %xmm5,%xmm4
848
movdqa 64(%ebp),%xmm5
849
pxor %xmm4,%xmm0
850
movdqa -64(%ebx,%ecx,1),%xmm1
851
.byte 102,15,56,0,234
852
movdqa 80(%ebp),%xmm2
853
movdqa (%ebx,%ecx,1),%xmm4
854
.byte 102,15,56,0,211
855
movdqa %xmm0,%xmm3
856
pxor %xmm5,%xmm2
857
.byte 102,15,56,0,193
858
addl $16,%edx
859
pxor %xmm2,%xmm0
860
.byte 102,15,56,0,220
861
addl $16,%ecx
862
pxor %xmm0,%xmm3
863
.byte 102,15,56,0,193
864
andl $48,%ecx
865
subl $1,%eax
866
pxor %xmm3,%xmm0
867
.L000enc_entry:
868
movdqa %xmm6,%xmm1
869
movdqa -32(%ebp),%xmm5
870
pandn %xmm0,%xmm1
871
psrld $4,%xmm1
872
pand %xmm6,%xmm0
873
.byte 102,15,56,0,232
874
movdqa %xmm7,%xmm3
875
pxor %xmm1,%xmm0
876
.byte 102,15,56,0,217
877
movdqa %xmm7,%xmm4
878
pxor %xmm5,%xmm3
879
.byte 102,15,56,0,224
880
movdqa %xmm7,%xmm2
881
pxor %xmm5,%xmm4
882
.byte 102,15,56,0,211
883
movdqa %xmm7,%xmm3
884
pxor %xmm0,%xmm2
885
.byte 102,15,56,0,220
886
movdqu (%edx),%xmm5
887
pxor %xmm1,%xmm3
888
jnz .L001enc_loop
889
movdqa 96(%ebp),%xmm4
890
movdqa 112(%ebp),%xmm0
891
.byte 102,15,56,0,226
892
pxor %xmm5,%xmm4
893
.byte 102,15,56,0,195
894
movdqa 64(%ebx,%ecx,1),%xmm1
895
pxor %xmm4,%xmm0
896
.byte 102,15,56,0,193
897
ret
898
.size _vpaes_encrypt_core,.-_vpaes_encrypt_core
899
.type _vpaes_decrypt_core,@function
900
.align 16
901
_vpaes_decrypt_core:
902
#ifdef __CET__
903
904
.byte 243,15,30,251
905
#endif
906
907
leal 608(%ebp),%ebx
908
movl 240(%edx),%eax
909
movdqa %xmm6,%xmm1
910
movdqa -64(%ebx),%xmm2
911
pandn %xmm0,%xmm1
912
movl %eax,%ecx
913
psrld $4,%xmm1
914
movdqu (%edx),%xmm5
915
shll $4,%ecx
916
pand %xmm6,%xmm0
917
.byte 102,15,56,0,208
918
movdqa -48(%ebx),%xmm0
919
xorl $48,%ecx
920
.byte 102,15,56,0,193
921
andl $48,%ecx
922
pxor %xmm5,%xmm2
923
movdqa 176(%ebp),%xmm5
924
pxor %xmm2,%xmm0
925
addl $16,%edx
926
leal -352(%ebx,%ecx,1),%ecx
927
jmp .L002dec_entry
928
.align 16
929
.L003dec_loop:
930
movdqa -32(%ebx),%xmm4
931
movdqa -16(%ebx),%xmm1
932
.byte 102,15,56,0,226
933
.byte 102,15,56,0,203
934
pxor %xmm4,%xmm0
935
movdqa (%ebx),%xmm4
936
pxor %xmm1,%xmm0
937
movdqa 16(%ebx),%xmm1
938
.byte 102,15,56,0,226
939
.byte 102,15,56,0,197
940
.byte 102,15,56,0,203
941
pxor %xmm4,%xmm0
942
movdqa 32(%ebx),%xmm4
943
pxor %xmm1,%xmm0
944
movdqa 48(%ebx),%xmm1
945
.byte 102,15,56,0,226
946
.byte 102,15,56,0,197
947
.byte 102,15,56,0,203
948
pxor %xmm4,%xmm0
949
movdqa 64(%ebx),%xmm4
950
pxor %xmm1,%xmm0
951
movdqa 80(%ebx),%xmm1
952
.byte 102,15,56,0,226
953
.byte 102,15,56,0,197
954
.byte 102,15,56,0,203
955
pxor %xmm4,%xmm0
956
addl $16,%edx
957
.byte 102,15,58,15,237,12
958
pxor %xmm1,%xmm0
959
subl $1,%eax
960
.L002dec_entry:
961
movdqa %xmm6,%xmm1
962
movdqa -32(%ebp),%xmm2
963
pandn %xmm0,%xmm1
964
pand %xmm6,%xmm0
965
psrld $4,%xmm1
966
.byte 102,15,56,0,208
967
movdqa %xmm7,%xmm3
968
pxor %xmm1,%xmm0
969
.byte 102,15,56,0,217
970
movdqa %xmm7,%xmm4
971
pxor %xmm2,%xmm3
972
.byte 102,15,56,0,224
973
pxor %xmm2,%xmm4
974
movdqa %xmm7,%xmm2
975
.byte 102,15,56,0,211
976
movdqa %xmm7,%xmm3
977
pxor %xmm0,%xmm2
978
.byte 102,15,56,0,220
979
movdqu (%edx),%xmm0
980
pxor %xmm1,%xmm3
981
jnz .L003dec_loop
982
movdqa 96(%ebx),%xmm4
983
.byte 102,15,56,0,226
984
pxor %xmm0,%xmm4
985
movdqa 112(%ebx),%xmm0
986
movdqa (%ecx),%xmm2
987
.byte 102,15,56,0,195
988
pxor %xmm4,%xmm0
989
.byte 102,15,56,0,194
990
ret
991
.size _vpaes_decrypt_core,.-_vpaes_decrypt_core
992
.type _vpaes_schedule_core,@function
993
.align 16
994
_vpaes_schedule_core:
995
#ifdef __CET__
996
997
.byte 243,15,30,251
998
#endif
999
1000
addl (%esp),%ebp
1001
movdqu (%esi),%xmm0
1002
movdqa 320(%ebp),%xmm2
1003
movdqa %xmm0,%xmm3
1004
leal (%ebp),%ebx
1005
movdqa %xmm2,4(%esp)
1006
call _vpaes_schedule_transform
1007
movdqa %xmm0,%xmm7
1008
testl %edi,%edi
1009
jnz .L004schedule_am_decrypting
1010
movdqu %xmm0,(%edx)
1011
jmp .L005schedule_go
1012
.L004schedule_am_decrypting:
1013
movdqa 256(%ebp,%ecx,1),%xmm1
1014
.byte 102,15,56,0,217
1015
movdqu %xmm3,(%edx)
1016
xorl $48,%ecx
1017
.L005schedule_go:
1018
cmpl $192,%eax
1019
ja .L006schedule_256
1020
je .L007schedule_192
1021
.L008schedule_128:
1022
movl $10,%eax
1023
.L009loop_schedule_128:
1024
call _vpaes_schedule_round
1025
decl %eax
1026
jz .L010schedule_mangle_last
1027
call _vpaes_schedule_mangle
1028
jmp .L009loop_schedule_128
1029
.align 16
1030
.L007schedule_192:
1031
movdqu 8(%esi),%xmm0
1032
call _vpaes_schedule_transform
1033
movdqa %xmm0,%xmm6
1034
pxor %xmm4,%xmm4
1035
movhlps %xmm4,%xmm6
1036
movl $4,%eax
1037
.L011loop_schedule_192:
1038
call _vpaes_schedule_round
1039
.byte 102,15,58,15,198,8
1040
call _vpaes_schedule_mangle
1041
call _vpaes_schedule_192_smear
1042
call _vpaes_schedule_mangle
1043
call _vpaes_schedule_round
1044
decl %eax
1045
jz .L010schedule_mangle_last
1046
call _vpaes_schedule_mangle
1047
call _vpaes_schedule_192_smear
1048
jmp .L011loop_schedule_192
1049
.align 16
1050
.L006schedule_256:
1051
movdqu 16(%esi),%xmm0
1052
call _vpaes_schedule_transform
1053
movl $7,%eax
1054
.L012loop_schedule_256:
1055
call _vpaes_schedule_mangle
1056
movdqa %xmm0,%xmm6
1057
call _vpaes_schedule_round
1058
decl %eax
1059
jz .L010schedule_mangle_last
1060
call _vpaes_schedule_mangle
1061
pshufd $255,%xmm0,%xmm0
1062
movdqa %xmm7,20(%esp)
1063
movdqa %xmm6,%xmm7
1064
call .L_vpaes_schedule_low_round
1065
movdqa 20(%esp),%xmm7
1066
jmp .L012loop_schedule_256
1067
.align 16
1068
.L010schedule_mangle_last:
1069
leal 384(%ebp),%ebx
1070
testl %edi,%edi
1071
jnz .L013schedule_mangle_last_dec
1072
movdqa 256(%ebp,%ecx,1),%xmm1
1073
.byte 102,15,56,0,193
1074
leal 352(%ebp),%ebx
1075
addl $32,%edx
1076
.L013schedule_mangle_last_dec:
1077
addl $-16,%edx
1078
pxor 336(%ebp),%xmm0
1079
call _vpaes_schedule_transform
1080
movdqu %xmm0,(%edx)
1081
pxor %xmm0,%xmm0
1082
pxor %xmm1,%xmm1
1083
pxor %xmm2,%xmm2
1084
pxor %xmm3,%xmm3
1085
pxor %xmm4,%xmm4
1086
pxor %xmm5,%xmm5
1087
pxor %xmm6,%xmm6
1088
pxor %xmm7,%xmm7
1089
ret
1090
.size _vpaes_schedule_core,.-_vpaes_schedule_core
1091
.type _vpaes_schedule_192_smear,@function
1092
.align 16
1093
_vpaes_schedule_192_smear:
1094
#ifdef __CET__
1095
1096
.byte 243,15,30,251
1097
#endif
1098
1099
pshufd $128,%xmm6,%xmm1
1100
pshufd $254,%xmm7,%xmm0
1101
pxor %xmm1,%xmm6
1102
pxor %xmm1,%xmm1
1103
pxor %xmm0,%xmm6
1104
movdqa %xmm6,%xmm0
1105
movhlps %xmm1,%xmm6
1106
ret
1107
.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
1108
.type _vpaes_schedule_round,@function
1109
.align 16
1110
_vpaes_schedule_round:
1111
#ifdef __CET__
1112
1113
.byte 243,15,30,251
1114
#endif
1115
1116
movdqa 8(%esp),%xmm2
1117
pxor %xmm1,%xmm1
1118
.byte 102,15,58,15,202,15
1119
.byte 102,15,58,15,210,15
1120
pxor %xmm1,%xmm7
1121
pshufd $255,%xmm0,%xmm0
1122
.byte 102,15,58,15,192,1
1123
movdqa %xmm2,8(%esp)
1124
.L_vpaes_schedule_low_round:
1125
movdqa %xmm7,%xmm1
1126
pslldq $4,%xmm7
1127
pxor %xmm1,%xmm7
1128
movdqa %xmm7,%xmm1
1129
pslldq $8,%xmm7
1130
pxor %xmm1,%xmm7
1131
pxor 336(%ebp),%xmm7
1132
movdqa -16(%ebp),%xmm4
1133
movdqa -48(%ebp),%xmm5
1134
movdqa %xmm4,%xmm1
1135
pandn %xmm0,%xmm1
1136
psrld $4,%xmm1
1137
pand %xmm4,%xmm0
1138
movdqa -32(%ebp),%xmm2
1139
.byte 102,15,56,0,208
1140
pxor %xmm1,%xmm0
1141
movdqa %xmm5,%xmm3
1142
.byte 102,15,56,0,217
1143
pxor %xmm2,%xmm3
1144
movdqa %xmm5,%xmm4
1145
.byte 102,15,56,0,224
1146
pxor %xmm2,%xmm4
1147
movdqa %xmm5,%xmm2
1148
.byte 102,15,56,0,211
1149
pxor %xmm0,%xmm2
1150
movdqa %xmm5,%xmm3
1151
.byte 102,15,56,0,220
1152
pxor %xmm1,%xmm3
1153
movdqa 32(%ebp),%xmm4
1154
.byte 102,15,56,0,226
1155
movdqa 48(%ebp),%xmm0
1156
.byte 102,15,56,0,195
1157
pxor %xmm4,%xmm0
1158
pxor %xmm7,%xmm0
1159
movdqa %xmm0,%xmm7
1160
ret
1161
.size _vpaes_schedule_round,.-_vpaes_schedule_round
1162
.type _vpaes_schedule_transform,@function
1163
.align 16
1164
_vpaes_schedule_transform:
1165
#ifdef __CET__
1166
1167
.byte 243,15,30,251
1168
#endif
1169
1170
movdqa -16(%ebp),%xmm2
1171
movdqa %xmm2,%xmm1
1172
pandn %xmm0,%xmm1
1173
psrld $4,%xmm1
1174
pand %xmm2,%xmm0
1175
movdqa (%ebx),%xmm2
1176
.byte 102,15,56,0,208
1177
movdqa 16(%ebx),%xmm0
1178
.byte 102,15,56,0,193
1179
pxor %xmm2,%xmm0
1180
ret
1181
.size _vpaes_schedule_transform,.-_vpaes_schedule_transform
1182
.type _vpaes_schedule_mangle,@function
1183
.align 16
1184
_vpaes_schedule_mangle:
1185
#ifdef __CET__
1186
1187
.byte 243,15,30,251
1188
#endif
1189
1190
movdqa %xmm0,%xmm4
1191
movdqa 128(%ebp),%xmm5
1192
testl %edi,%edi
1193
jnz .L014schedule_mangle_dec
1194
addl $16,%edx
1195
pxor 336(%ebp),%xmm4
1196
.byte 102,15,56,0,229
1197
movdqa %xmm4,%xmm3
1198
.byte 102,15,56,0,229
1199
pxor %xmm4,%xmm3
1200
.byte 102,15,56,0,229
1201
pxor %xmm4,%xmm3
1202
jmp .L015schedule_mangle_both
1203
.align 16
1204
.L014schedule_mangle_dec:
1205
movdqa -16(%ebp),%xmm2
1206
leal 416(%ebp),%esi
1207
movdqa %xmm2,%xmm1
1208
pandn %xmm4,%xmm1
1209
psrld $4,%xmm1
1210
pand %xmm2,%xmm4
1211
movdqa (%esi),%xmm2
1212
.byte 102,15,56,0,212
1213
movdqa 16(%esi),%xmm3
1214
.byte 102,15,56,0,217
1215
pxor %xmm2,%xmm3
1216
.byte 102,15,56,0,221
1217
movdqa 32(%esi),%xmm2
1218
.byte 102,15,56,0,212
1219
pxor %xmm3,%xmm2
1220
movdqa 48(%esi),%xmm3
1221
.byte 102,15,56,0,217
1222
pxor %xmm2,%xmm3
1223
.byte 102,15,56,0,221
1224
movdqa 64(%esi),%xmm2
1225
.byte 102,15,56,0,212
1226
pxor %xmm3,%xmm2
1227
movdqa 80(%esi),%xmm3
1228
.byte 102,15,56,0,217
1229
pxor %xmm2,%xmm3
1230
.byte 102,15,56,0,221
1231
movdqa 96(%esi),%xmm2
1232
.byte 102,15,56,0,212
1233
pxor %xmm3,%xmm2
1234
movdqa 112(%esi),%xmm3
1235
.byte 102,15,56,0,217
1236
pxor %xmm2,%xmm3
1237
addl $-16,%edx
1238
.L015schedule_mangle_both:
1239
movdqa 256(%ebp,%ecx,1),%xmm1
1240
.byte 102,15,56,0,217
1241
addl $-16,%ecx
1242
andl $48,%ecx
1243
movdqu %xmm3,(%edx)
1244
ret
1245
.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle
1246
.globl vpaes_set_encrypt_key
1247
.type vpaes_set_encrypt_key,@function
1248
.align 16
1249
vpaes_set_encrypt_key:
1250
.L_vpaes_set_encrypt_key_begin:
1251
#ifdef __CET__
1252
1253
.byte 243,15,30,251
1254
#endif
1255
1256
pushl %ebp
1257
pushl %ebx
1258
pushl %esi
1259
pushl %edi
1260
movl 20(%esp),%esi
1261
leal -56(%esp),%ebx
1262
movl 24(%esp),%eax
1263
andl $-16,%ebx
1264
movl 28(%esp),%edx
1265
xchgl %esp,%ebx
1266
movl %ebx,48(%esp)
1267
movl %eax,%ebx
1268
shrl $5,%ebx
1269
addl $5,%ebx
1270
movl %ebx,240(%edx)
1271
movl $48,%ecx
1272
movl $0,%edi
1273
leal .L_vpaes_consts+0x30-.L016pic_point,%ebp
1274
call _vpaes_schedule_core
1275
.L016pic_point:
1276
movl 48(%esp),%esp
1277
xorl %eax,%eax
1278
popl %edi
1279
popl %esi
1280
popl %ebx
1281
popl %ebp
1282
ret
1283
.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
1284
.globl vpaes_set_decrypt_key
1285
.type vpaes_set_decrypt_key,@function
1286
.align 16
1287
vpaes_set_decrypt_key:
1288
.L_vpaes_set_decrypt_key_begin:
1289
#ifdef __CET__
1290
1291
.byte 243,15,30,251
1292
#endif
1293
1294
pushl %ebp
1295
pushl %ebx
1296
pushl %esi
1297
pushl %edi
1298
movl 20(%esp),%esi
1299
leal -56(%esp),%ebx
1300
movl 24(%esp),%eax
1301
andl $-16,%ebx
1302
movl 28(%esp),%edx
1303
xchgl %esp,%ebx
1304
movl %ebx,48(%esp)
1305
movl %eax,%ebx
1306
shrl $5,%ebx
1307
addl $5,%ebx
1308
movl %ebx,240(%edx)
1309
shll $4,%ebx
1310
leal 16(%edx,%ebx,1),%edx
1311
movl $1,%edi
1312
movl %eax,%ecx
1313
shrl $1,%ecx
1314
andl $32,%ecx
1315
xorl $32,%ecx
1316
leal .L_vpaes_consts+0x30-.L017pic_point,%ebp
1317
call _vpaes_schedule_core
1318
.L017pic_point:
1319
movl 48(%esp),%esp
1320
xorl %eax,%eax
1321
popl %edi
1322
popl %esi
1323
popl %ebx
1324
popl %ebp
1325
ret
1326
.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
1327
.globl vpaes_encrypt
1328
.type vpaes_encrypt,@function
1329
.align 16
1330
vpaes_encrypt:
1331
.L_vpaes_encrypt_begin:
1332
#ifdef __CET__
1333
1334
.byte 243,15,30,251
1335
#endif
1336
1337
pushl %ebp
1338
pushl %ebx
1339
pushl %esi
1340
pushl %edi
1341
leal .L_vpaes_consts+0x30-.L018pic_point,%ebp
1342
call _vpaes_preheat
1343
.L018pic_point:
1344
movl 20(%esp),%esi
1345
leal -56(%esp),%ebx
1346
movl 24(%esp),%edi
1347
andl $-16,%ebx
1348
movl 28(%esp),%edx
1349
xchgl %esp,%ebx
1350
movl %ebx,48(%esp)
1351
movdqu (%esi),%xmm0
1352
call _vpaes_encrypt_core
1353
movdqu %xmm0,(%edi)
1354
movl 48(%esp),%esp
1355
popl %edi
1356
popl %esi
1357
popl %ebx
1358
popl %ebp
1359
ret
1360
.size vpaes_encrypt,.-.L_vpaes_encrypt_begin
1361
.globl vpaes_decrypt
1362
.type vpaes_decrypt,@function
1363
.align 16
1364
vpaes_decrypt:
1365
.L_vpaes_decrypt_begin:
1366
#ifdef __CET__
1367
1368
.byte 243,15,30,251
1369
#endif
1370
1371
pushl %ebp
1372
pushl %ebx
1373
pushl %esi
1374
pushl %edi
1375
leal .L_vpaes_consts+0x30-.L019pic_point,%ebp
1376
call _vpaes_preheat
1377
.L019pic_point:
1378
movl 20(%esp),%esi
1379
leal -56(%esp),%ebx
1380
movl 24(%esp),%edi
1381
andl $-16,%ebx
1382
movl 28(%esp),%edx
1383
xchgl %esp,%ebx
1384
movl %ebx,48(%esp)
1385
movdqu (%esi),%xmm0
1386
call _vpaes_decrypt_core
1387
movdqu %xmm0,(%edi)
1388
movl 48(%esp),%esp
1389
popl %edi
1390
popl %esi
1391
popl %ebx
1392
popl %ebp
1393
ret
1394
.size vpaes_decrypt,.-.L_vpaes_decrypt_begin
1395
.globl vpaes_cbc_encrypt
1396
.type vpaes_cbc_encrypt,@function
1397
.align 16
1398
vpaes_cbc_encrypt:
1399
.L_vpaes_cbc_encrypt_begin:
1400
#ifdef __CET__
1401
1402
.byte 243,15,30,251
1403
#endif
1404
1405
pushl %ebp
1406
pushl %ebx
1407
pushl %esi
1408
pushl %edi
1409
movl 20(%esp),%esi
1410
movl 24(%esp),%edi
1411
movl 28(%esp),%eax
1412
movl 32(%esp),%edx
1413
subl $16,%eax
1414
jc .L020cbc_abort
1415
leal -56(%esp),%ebx
1416
movl 36(%esp),%ebp
1417
andl $-16,%ebx
1418
movl 40(%esp),%ecx
1419
xchgl %esp,%ebx
1420
movdqu (%ebp),%xmm1
1421
subl %esi,%edi
1422
movl %ebx,48(%esp)
1423
movl %edi,(%esp)
1424
movl %edx,4(%esp)
1425
movl %ebp,8(%esp)
1426
movl %eax,%edi
1427
leal .L_vpaes_consts+0x30-.L021pic_point,%ebp
1428
call _vpaes_preheat
1429
.L021pic_point:
1430
cmpl $0,%ecx
1431
je .L022cbc_dec_loop
1432
jmp .L023cbc_enc_loop
1433
.align 16
1434
.L023cbc_enc_loop:
1435
movdqu (%esi),%xmm0
1436
pxor %xmm1,%xmm0
1437
call _vpaes_encrypt_core
1438
movl (%esp),%ebx
1439
movl 4(%esp),%edx
1440
movdqa %xmm0,%xmm1
1441
movdqu %xmm0,(%ebx,%esi,1)
1442
leal 16(%esi),%esi
1443
subl $16,%edi
1444
jnc .L023cbc_enc_loop
1445
jmp .L024cbc_done
1446
.align 16
1447
.L022cbc_dec_loop:
1448
movdqu (%esi),%xmm0
1449
movdqa %xmm1,16(%esp)
1450
movdqa %xmm0,32(%esp)
1451
call _vpaes_decrypt_core
1452
movl (%esp),%ebx
1453
movl 4(%esp),%edx
1454
pxor 16(%esp),%xmm0
1455
movdqa 32(%esp),%xmm1
1456
movdqu %xmm0,(%ebx,%esi,1)
1457
leal 16(%esi),%esi
1458
subl $16,%edi
1459
jnc .L022cbc_dec_loop
1460
.L024cbc_done:
1461
movl 8(%esp),%ebx
1462
movl 48(%esp),%esp
1463
movdqu %xmm1,(%ebx)
1464
.L020cbc_abort:
1465
popl %edi
1466
popl %esi
1467
popl %ebx
1468
popl %ebp
1469
ret
1470
.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
1471
1472
.section ".note.gnu.property", "a"
1473
.p2align 2
1474
.long 1f - 0f
1475
.long 4f - 1f
1476
.long 5
1477
0:
1478
.asciz "GNU"
1479
1:
1480
.p2align 2
1481
.long 0xc0000002
1482
.long 3f - 2f
1483
2:
1484
.long 3
1485
3:
1486
.p2align 2
1487
4:
1488
#endif
1489
1490