Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/powerpc/aesp8-ppc.S
39483 views
1
/* Do not modify. This file is auto-generated from aesp8-ppc.pl. */
2
.machine "any"
3
4
.text
5
6
.align 7
7
rcon:
8
.byte 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00
9
.byte 0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00
10
.byte 0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c
11
.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
12
.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe
13
.Lconsts:
14
mflr 0
15
bcl 20,31,$+4
16
mflr 6
17
addi 6,6,-0x58
18
mtlr 0
19
blr
20
.long 0
21
.byte 0,12,0x14,0,0,0,0,0
22
.byte 65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
23
.align 2
24
25
.globl aes_p8_set_encrypt_key
26
.type aes_p8_set_encrypt_key,@function
27
.align 5
28
aes_p8_set_encrypt_key:
29
.Lset_encrypt_key:
30
mflr 11
31
stw 11,4(1)
32
33
li 6,-1
34
cmplwi 3,0
35
beq- .Lenc_key_abort
36
cmplwi 5,0
37
beq- .Lenc_key_abort
38
li 6,-2
39
cmpwi 4,128
40
blt- .Lenc_key_abort
41
cmpwi 4,256
42
bgt- .Lenc_key_abort
43
andi. 0,4,0x3f
44
bne- .Lenc_key_abort
45
46
lis 0,0xfff0
47
mfspr 12,256
48
mtspr 256,0
49
50
bl .Lconsts
51
mtlr 11
52
53
neg 9,3
54
lvx 1,0,3
55
addi 3,3,15
56
lvsr 3,0,9
57
li 8,0x20
58
cmpwi 4,192
59
lvx 2,0,3
60
61
lvx 4,0,6
62
63
lvx 5,8,6
64
addi 6,6,0x10
65
vperm 1,1,2,3
66
li 7,8
67
vxor 0,0,0
68
mtctr 7
69
70
lvsr 8,0,5
71
vspltisb 9,-1
72
lvx 10,0,5
73
vperm 9,0,9,8
74
75
blt .Loop128
76
addi 3,3,8
77
beq .L192
78
addi 3,3,8
79
b .L256
80
81
.align 4
82
.Loop128:
83
vperm 3,1,1,5
84
vsldoi 6,0,1,12
85
vperm 11,1,1,8
86
vsel 7,10,11,9
87
vor 10,11,11
88
.long 0x10632509
89
stvx 7,0,5
90
addi 5,5,16
91
92
vxor 1,1,6
93
vsldoi 6,0,6,12
94
vxor 1,1,6
95
vsldoi 6,0,6,12
96
vxor 1,1,6
97
vadduwm 4,4,4
98
vxor 1,1,3
99
bdnz .Loop128
100
101
lvx 4,0,6
102
103
vperm 3,1,1,5
104
vsldoi 6,0,1,12
105
vperm 11,1,1,8
106
vsel 7,10,11,9
107
vor 10,11,11
108
.long 0x10632509
109
stvx 7,0,5
110
addi 5,5,16
111
112
vxor 1,1,6
113
vsldoi 6,0,6,12
114
vxor 1,1,6
115
vsldoi 6,0,6,12
116
vxor 1,1,6
117
vadduwm 4,4,4
118
vxor 1,1,3
119
120
vperm 3,1,1,5
121
vsldoi 6,0,1,12
122
vperm 11,1,1,8
123
vsel 7,10,11,9
124
vor 10,11,11
125
.long 0x10632509
126
stvx 7,0,5
127
addi 5,5,16
128
129
vxor 1,1,6
130
vsldoi 6,0,6,12
131
vxor 1,1,6
132
vsldoi 6,0,6,12
133
vxor 1,1,6
134
vxor 1,1,3
135
vperm 11,1,1,8
136
vsel 7,10,11,9
137
vor 10,11,11
138
stvx 7,0,5
139
140
addi 3,5,15
141
addi 5,5,0x50
142
143
li 8,10
144
b .Ldone
145
146
.align 4
147
.L192:
148
lvx 6,0,3
149
li 7,4
150
vperm 11,1,1,8
151
vsel 7,10,11,9
152
vor 10,11,11
153
stvx 7,0,5
154
addi 5,5,16
155
vperm 2,2,6,3
156
vspltisb 3,8
157
mtctr 7
158
vsububm 5,5,3
159
160
.Loop192:
161
vperm 3,2,2,5
162
vsldoi 6,0,1,12
163
.long 0x10632509
164
165
vxor 1,1,6
166
vsldoi 6,0,6,12
167
vxor 1,1,6
168
vsldoi 6,0,6,12
169
vxor 1,1,6
170
171
vsldoi 7,0,2,8
172
vspltw 6,1,3
173
vxor 6,6,2
174
vsldoi 2,0,2,12
175
vadduwm 4,4,4
176
vxor 2,2,6
177
vxor 1,1,3
178
vxor 2,2,3
179
vsldoi 7,7,1,8
180
181
vperm 3,2,2,5
182
vsldoi 6,0,1,12
183
vperm 11,7,7,8
184
vsel 7,10,11,9
185
vor 10,11,11
186
.long 0x10632509
187
stvx 7,0,5
188
addi 5,5,16
189
190
vsldoi 7,1,2,8
191
vxor 1,1,6
192
vsldoi 6,0,6,12
193
vperm 11,7,7,8
194
vsel 7,10,11,9
195
vor 10,11,11
196
vxor 1,1,6
197
vsldoi 6,0,6,12
198
vxor 1,1,6
199
stvx 7,0,5
200
addi 5,5,16
201
202
vspltw 6,1,3
203
vxor 6,6,2
204
vsldoi 2,0,2,12
205
vadduwm 4,4,4
206
vxor 2,2,6
207
vxor 1,1,3
208
vxor 2,2,3
209
vperm 11,1,1,8
210
vsel 7,10,11,9
211
vor 10,11,11
212
stvx 7,0,5
213
addi 3,5,15
214
addi 5,5,16
215
bdnz .Loop192
216
217
li 8,12
218
addi 5,5,0x20
219
b .Ldone
220
221
.align 4
222
.L256:
223
lvx 6,0,3
224
li 7,7
225
li 8,14
226
vperm 11,1,1,8
227
vsel 7,10,11,9
228
vor 10,11,11
229
stvx 7,0,5
230
addi 5,5,16
231
vperm 2,2,6,3
232
mtctr 7
233
234
.Loop256:
235
vperm 3,2,2,5
236
vsldoi 6,0,1,12
237
vperm 11,2,2,8
238
vsel 7,10,11,9
239
vor 10,11,11
240
.long 0x10632509
241
stvx 7,0,5
242
addi 5,5,16
243
244
vxor 1,1,6
245
vsldoi 6,0,6,12
246
vxor 1,1,6
247
vsldoi 6,0,6,12
248
vxor 1,1,6
249
vadduwm 4,4,4
250
vxor 1,1,3
251
vperm 11,1,1,8
252
vsel 7,10,11,9
253
vor 10,11,11
254
stvx 7,0,5
255
addi 3,5,15
256
addi 5,5,16
257
bdz .Ldone
258
259
vspltw 3,1,3
260
vsldoi 6,0,2,12
261
.long 0x106305C8
262
263
vxor 2,2,6
264
vsldoi 6,0,6,12
265
vxor 2,2,6
266
vsldoi 6,0,6,12
267
vxor 2,2,6
268
269
vxor 2,2,3
270
b .Loop256
271
272
.align 4
273
.Ldone:
274
lvx 2,0,3
275
vsel 2,10,2,9
276
stvx 2,0,3
277
li 6,0
278
mtspr 256,12
279
stw 8,0(5)
280
281
.Lenc_key_abort:
282
mr 3,6
283
blr
284
.long 0
285
.byte 0,12,0x14,1,0,0,3,0
286
.long 0
287
.size aes_p8_set_encrypt_key,.-aes_p8_set_encrypt_key
288
289
.globl aes_p8_set_decrypt_key
290
.type aes_p8_set_decrypt_key,@function
291
.align 5
292
aes_p8_set_decrypt_key:
293
stwu 1,-32(1)
294
mflr 10
295
stw 10,32+4(1)
296
bl .Lset_encrypt_key
297
mtlr 10
298
299
cmpwi 3,0
300
bne- .Ldec_key_abort
301
302
slwi 7,8,4
303
subi 3,5,240
304
srwi 8,8,1
305
add 5,3,7
306
mtctr 8
307
308
.Ldeckey:
309
lwz 0, 0(3)
310
lwz 6, 4(3)
311
lwz 7, 8(3)
312
lwz 8, 12(3)
313
addi 3,3,16
314
lwz 9, 0(5)
315
lwz 10,4(5)
316
lwz 11,8(5)
317
lwz 12,12(5)
318
stw 0, 0(5)
319
stw 6, 4(5)
320
stw 7, 8(5)
321
stw 8, 12(5)
322
subi 5,5,16
323
stw 9, -16(3)
324
stw 10,-12(3)
325
stw 11,-8(3)
326
stw 12,-4(3)
327
bdnz .Ldeckey
328
329
xor 3,3,3
330
.Ldec_key_abort:
331
addi 1,1,32
332
blr
333
.long 0
334
.byte 0,12,4,1,0x80,0,3,0
335
.long 0
336
.size aes_p8_set_decrypt_key,.-aes_p8_set_decrypt_key
337
.globl aes_p8_encrypt
338
.type aes_p8_encrypt,@function
339
.align 5
340
aes_p8_encrypt:
341
lwz 6,240(5)
342
lis 0,0xfc00
343
mfspr 12,256
344
li 7,15
345
mtspr 256,0
346
347
lvx 0,0,3
348
neg 11,4
349
lvx 1,7,3
350
lvsl 2,0,3
351
352
lvsl 3,0,11
353
354
li 7,16
355
vperm 0,0,1,2
356
lvx 1,0,5
357
lvsl 5,0,5
358
srwi 6,6,1
359
lvx 2,7,5
360
addi 7,7,16
361
subi 6,6,1
362
vperm 1,1,2,5
363
364
vxor 0,0,1
365
lvx 1,7,5
366
addi 7,7,16
367
mtctr 6
368
369
.Loop_enc:
370
vperm 2,2,1,5
371
.long 0x10001508
372
lvx 2,7,5
373
addi 7,7,16
374
vperm 1,1,2,5
375
.long 0x10000D08
376
lvx 1,7,5
377
addi 7,7,16
378
bdnz .Loop_enc
379
380
vperm 2,2,1,5
381
.long 0x10001508
382
lvx 2,7,5
383
vperm 1,1,2,5
384
.long 0x10000D09
385
386
vspltisb 2,-1
387
vxor 1,1,1
388
li 7,15
389
vperm 2,1,2,3
390
391
lvx 1,0,4
392
vperm 0,0,0,3
393
vsel 1,1,0,2
394
lvx 4,7,4
395
stvx 1,0,4
396
vsel 0,0,4,2
397
stvx 0,7,4
398
399
mtspr 256,12
400
blr
401
.long 0
402
.byte 0,12,0x14,0,0,0,3,0
403
.long 0
404
.size aes_p8_encrypt,.-aes_p8_encrypt
405
.globl aes_p8_decrypt
406
.type aes_p8_decrypt,@function
407
.align 5
408
aes_p8_decrypt:
409
lwz 6,240(5)
410
lis 0,0xfc00
411
mfspr 12,256
412
li 7,15
413
mtspr 256,0
414
415
lvx 0,0,3
416
neg 11,4
417
lvx 1,7,3
418
lvsl 2,0,3
419
420
lvsl 3,0,11
421
422
li 7,16
423
vperm 0,0,1,2
424
lvx 1,0,5
425
lvsl 5,0,5
426
srwi 6,6,1
427
lvx 2,7,5
428
addi 7,7,16
429
subi 6,6,1
430
vperm 1,1,2,5
431
432
vxor 0,0,1
433
lvx 1,7,5
434
addi 7,7,16
435
mtctr 6
436
437
.Loop_dec:
438
vperm 2,2,1,5
439
.long 0x10001548
440
lvx 2,7,5
441
addi 7,7,16
442
vperm 1,1,2,5
443
.long 0x10000D48
444
lvx 1,7,5
445
addi 7,7,16
446
bdnz .Loop_dec
447
448
vperm 2,2,1,5
449
.long 0x10001548
450
lvx 2,7,5
451
vperm 1,1,2,5
452
.long 0x10000D49
453
454
vspltisb 2,-1
455
vxor 1,1,1
456
li 7,15
457
vperm 2,1,2,3
458
459
lvx 1,0,4
460
vperm 0,0,0,3
461
vsel 1,1,0,2
462
lvx 4,7,4
463
stvx 1,0,4
464
vsel 0,0,4,2
465
stvx 0,7,4
466
467
mtspr 256,12
468
blr
469
.long 0
470
.byte 0,12,0x14,0,0,0,3,0
471
.long 0
472
.size aes_p8_decrypt,.-aes_p8_decrypt
473
.globl aes_p8_cbc_encrypt
474
.type aes_p8_cbc_encrypt,@function
475
.align 5
476
aes_p8_cbc_encrypt:
477
cmplwi 5,16
478
.long 0x4dc00020
479
480
cmpwi 8,0
481
lis 0,0xffe0
482
mfspr 12,256
483
mtspr 256,0
484
485
li 10,15
486
vxor 0,0,0
487
488
489
lvx 4,0,7
490
lvsl 6,0,7
491
lvx 5,10,7
492
493
vperm 4,4,5,6
494
495
neg 11,3
496
lvsl 10,0,6
497
lwz 9,240(6)
498
499
lvsr 6,0,11
500
lvx 5,0,3
501
addi 3,3,15
502
503
504
lvsr 8,0,4
505
vspltisb 9,-1
506
lvx 7,0,4
507
vperm 9,0,9,8
508
509
510
srwi 9,9,1
511
li 10,16
512
subi 9,9,1
513
beq .Lcbc_dec
514
515
.Lcbc_enc:
516
vor 2,5,5
517
lvx 5,0,3
518
addi 3,3,16
519
mtctr 9
520
subi 5,5,16
521
522
lvx 0,0,6
523
vperm 2,2,5,6
524
lvx 1,10,6
525
addi 10,10,16
526
vperm 0,0,1,10
527
vxor 2,2,0
528
lvx 0,10,6
529
addi 10,10,16
530
vxor 2,2,4
531
532
.Loop_cbc_enc:
533
vperm 1,1,0,10
534
.long 0x10420D08
535
lvx 1,10,6
536
addi 10,10,16
537
vperm 0,0,1,10
538
.long 0x10420508
539
lvx 0,10,6
540
addi 10,10,16
541
bdnz .Loop_cbc_enc
542
543
vperm 1,1,0,10
544
.long 0x10420D08
545
lvx 1,10,6
546
li 10,16
547
vperm 0,0,1,10
548
.long 0x10820509
549
cmplwi 5,16
550
551
vperm 3,4,4,8
552
vsel 2,7,3,9
553
vor 7,3,3
554
stvx 2,0,4
555
addi 4,4,16
556
bge .Lcbc_enc
557
558
b .Lcbc_done
559
560
.align 4
561
.Lcbc_dec:
562
cmplwi 5,128
563
bge _aesp8_cbc_decrypt8x
564
vor 3,5,5
565
lvx 5,0,3
566
addi 3,3,16
567
mtctr 9
568
subi 5,5,16
569
570
lvx 0,0,6
571
vperm 3,3,5,6
572
lvx 1,10,6
573
addi 10,10,16
574
vperm 0,0,1,10
575
vxor 2,3,0
576
lvx 0,10,6
577
addi 10,10,16
578
579
.Loop_cbc_dec:
580
vperm 1,1,0,10
581
.long 0x10420D48
582
lvx 1,10,6
583
addi 10,10,16
584
vperm 0,0,1,10
585
.long 0x10420548
586
lvx 0,10,6
587
addi 10,10,16
588
bdnz .Loop_cbc_dec
589
590
vperm 1,1,0,10
591
.long 0x10420D48
592
lvx 1,10,6
593
li 10,16
594
vperm 0,0,1,10
595
.long 0x10420549
596
cmplwi 5,16
597
598
vxor 2,2,4
599
vor 4,3,3
600
vperm 3,2,2,8
601
vsel 2,7,3,9
602
vor 7,3,3
603
stvx 2,0,4
604
addi 4,4,16
605
bge .Lcbc_dec
606
607
.Lcbc_done:
608
addi 4,4,-1
609
lvx 2,0,4
610
vsel 2,7,2,9
611
stvx 2,0,4
612
613
neg 8,7
614
li 10,15
615
vxor 0,0,0
616
vspltisb 9,-1
617
618
lvsl 8,0,8
619
vperm 9,0,9,8
620
621
lvx 7,0,7
622
vperm 4,4,4,8
623
vsel 2,7,4,9
624
lvx 5,10,7
625
stvx 2,0,7
626
vsel 2,4,5,9
627
stvx 2,10,7
628
629
mtspr 256,12
630
blr
631
.long 0
632
.byte 0,12,0x14,0,0,0,6,0
633
.long 0
634
.align 5
635
_aesp8_cbc_decrypt8x:
636
stwu 1,-392(1)
637
li 10,175
638
li 11,191
639
stvx 20,10,1
640
addi 10,10,32
641
stvx 21,11,1
642
addi 11,11,32
643
stvx 22,10,1
644
addi 10,10,32
645
stvx 23,11,1
646
addi 11,11,32
647
stvx 24,10,1
648
addi 10,10,32
649
stvx 25,11,1
650
addi 11,11,32
651
stvx 26,10,1
652
addi 10,10,32
653
stvx 27,11,1
654
addi 11,11,32
655
stvx 28,10,1
656
addi 10,10,32
657
stvx 29,11,1
658
addi 11,11,32
659
stvx 30,10,1
660
stvx 31,11,1
661
li 0,-1
662
stw 12,364(1)
663
li 8,0x10
664
stw 26,368(1)
665
li 26,0x20
666
stw 27,372(1)
667
li 27,0x30
668
stw 28,376(1)
669
li 28,0x40
670
stw 29,380(1)
671
li 29,0x50
672
stw 30,384(1)
673
li 30,0x60
674
stw 31,388(1)
675
li 31,0x70
676
mtspr 256,0
677
678
subi 9,9,3
679
subi 5,5,128
680
681
lvx 23,0,6
682
lvx 30,8,6
683
addi 6,6,0x20
684
lvx 31,0,6
685
vperm 23,23,30,10
686
addi 11,1,32+15
687
mtctr 9
688
689
.Load_cbc_dec_key:
690
vperm 24,30,31,10
691
lvx 30,8,6
692
addi 6,6,0x20
693
stvx 24,0,11
694
vperm 25,31,30,10
695
lvx 31,0,6
696
stvx 25,8,11
697
addi 11,11,0x20
698
bdnz .Load_cbc_dec_key
699
700
lvx 26,8,6
701
vperm 24,30,31,10
702
lvx 27,26,6
703
stvx 24,0,11
704
vperm 25,31,26,10
705
lvx 28,27,6
706
stvx 25,8,11
707
addi 11,1,32+15
708
vperm 26,26,27,10
709
lvx 29,28,6
710
vperm 27,27,28,10
711
lvx 30,29,6
712
vperm 28,28,29,10
713
lvx 31,30,6
714
vperm 29,29,30,10
715
lvx 14,31,6
716
vperm 30,30,31,10
717
lvx 24,0,11
718
vperm 31,31,14,10
719
lvx 25,8,11
720
721
722
723
subi 3,3,15
724
725
726
.long 0x7C001E99
727
728
729
.long 0x7C281E99
730
731
.long 0x7C5A1E99
732
733
.long 0x7C7B1E99
734
735
.long 0x7D5C1E99
736
737
vxor 14,0,23
738
.long 0x7D7D1E99
739
740
vxor 15,1,23
741
.long 0x7D9E1E99
742
743
vxor 16,2,23
744
.long 0x7DBF1E99
745
addi 3,3,0x80
746
747
vxor 17,3,23
748
749
vxor 18,10,23
750
751
vxor 19,11,23
752
vxor 20,12,23
753
vxor 21,13,23
754
755
mtctr 9
756
b .Loop_cbc_dec8x
757
.align 5
758
.Loop_cbc_dec8x:
759
.long 0x11CEC548
760
.long 0x11EFC548
761
.long 0x1210C548
762
.long 0x1231C548
763
.long 0x1252C548
764
.long 0x1273C548
765
.long 0x1294C548
766
.long 0x12B5C548
767
lvx 24,26,11
768
addi 11,11,0x20
769
770
.long 0x11CECD48
771
.long 0x11EFCD48
772
.long 0x1210CD48
773
.long 0x1231CD48
774
.long 0x1252CD48
775
.long 0x1273CD48
776
.long 0x1294CD48
777
.long 0x12B5CD48
778
lvx 25,8,11
779
bdnz .Loop_cbc_dec8x
780
781
subic 5,5,128
782
.long 0x11CEC548
783
.long 0x11EFC548
784
.long 0x1210C548
785
.long 0x1231C548
786
.long 0x1252C548
787
.long 0x1273C548
788
.long 0x1294C548
789
.long 0x12B5C548
790
791
subfe. 0,0,0
792
.long 0x11CECD48
793
.long 0x11EFCD48
794
.long 0x1210CD48
795
.long 0x1231CD48
796
.long 0x1252CD48
797
.long 0x1273CD48
798
.long 0x1294CD48
799
.long 0x12B5CD48
800
801
and 0,0,5
802
.long 0x11CED548
803
.long 0x11EFD548
804
.long 0x1210D548
805
.long 0x1231D548
806
.long 0x1252D548
807
.long 0x1273D548
808
.long 0x1294D548
809
.long 0x12B5D548
810
811
add 3,3,0
812
813
814
815
.long 0x11CEDD48
816
.long 0x11EFDD48
817
.long 0x1210DD48
818
.long 0x1231DD48
819
.long 0x1252DD48
820
.long 0x1273DD48
821
.long 0x1294DD48
822
.long 0x12B5DD48
823
824
addi 11,1,32+15
825
.long 0x11CEE548
826
.long 0x11EFE548
827
.long 0x1210E548
828
.long 0x1231E548
829
.long 0x1252E548
830
.long 0x1273E548
831
.long 0x1294E548
832
.long 0x12B5E548
833
lvx 24,0,11
834
835
.long 0x11CEED48
836
.long 0x11EFED48
837
.long 0x1210ED48
838
.long 0x1231ED48
839
.long 0x1252ED48
840
.long 0x1273ED48
841
.long 0x1294ED48
842
.long 0x12B5ED48
843
lvx 25,8,11
844
845
.long 0x11CEF548
846
vxor 4,4,31
847
.long 0x11EFF548
848
vxor 0,0,31
849
.long 0x1210F548
850
vxor 1,1,31
851
.long 0x1231F548
852
vxor 2,2,31
853
.long 0x1252F548
854
vxor 3,3,31
855
.long 0x1273F548
856
vxor 10,10,31
857
.long 0x1294F548
858
vxor 11,11,31
859
.long 0x12B5F548
860
vxor 12,12,31
861
862
.long 0x11CE2549
863
.long 0x11EF0549
864
.long 0x7C001E99
865
.long 0x12100D49
866
.long 0x7C281E99
867
.long 0x12311549
868
869
.long 0x7C5A1E99
870
.long 0x12521D49
871
872
.long 0x7C7B1E99
873
.long 0x12735549
874
875
.long 0x7D5C1E99
876
.long 0x12945D49
877
878
.long 0x7D7D1E99
879
.long 0x12B56549
880
881
.long 0x7D9E1E99
882
vor 4,13,13
883
884
.long 0x7DBF1E99
885
addi 3,3,0x80
886
887
888
889
.long 0x7DC02799
890
891
vxor 14,0,23
892
893
.long 0x7DE82799
894
895
vxor 15,1,23
896
897
.long 0x7E1A2799
898
vxor 16,2,23
899
900
.long 0x7E3B2799
901
vxor 17,3,23
902
903
.long 0x7E5C2799
904
vxor 18,10,23
905
906
.long 0x7E7D2799
907
vxor 19,11,23
908
909
.long 0x7E9E2799
910
vxor 20,12,23
911
.long 0x7EBF2799
912
addi 4,4,0x80
913
vxor 21,13,23
914
915
mtctr 9
916
beq .Loop_cbc_dec8x
917
918
addic. 5,5,128
919
beq .Lcbc_dec8x_done
920
nop
921
nop
922
923
.Loop_cbc_dec8x_tail:
924
.long 0x11EFC548
925
.long 0x1210C548
926
.long 0x1231C548
927
.long 0x1252C548
928
.long 0x1273C548
929
.long 0x1294C548
930
.long 0x12B5C548
931
lvx 24,26,11
932
addi 11,11,0x20
933
934
.long 0x11EFCD48
935
.long 0x1210CD48
936
.long 0x1231CD48
937
.long 0x1252CD48
938
.long 0x1273CD48
939
.long 0x1294CD48
940
.long 0x12B5CD48
941
lvx 25,8,11
942
bdnz .Loop_cbc_dec8x_tail
943
944
.long 0x11EFC548
945
.long 0x1210C548
946
.long 0x1231C548
947
.long 0x1252C548
948
.long 0x1273C548
949
.long 0x1294C548
950
.long 0x12B5C548
951
952
.long 0x11EFCD48
953
.long 0x1210CD48
954
.long 0x1231CD48
955
.long 0x1252CD48
956
.long 0x1273CD48
957
.long 0x1294CD48
958
.long 0x12B5CD48
959
960
.long 0x11EFD548
961
.long 0x1210D548
962
.long 0x1231D548
963
.long 0x1252D548
964
.long 0x1273D548
965
.long 0x1294D548
966
.long 0x12B5D548
967
968
.long 0x11EFDD48
969
.long 0x1210DD48
970
.long 0x1231DD48
971
.long 0x1252DD48
972
.long 0x1273DD48
973
.long 0x1294DD48
974
.long 0x12B5DD48
975
976
.long 0x11EFE548
977
.long 0x1210E548
978
.long 0x1231E548
979
.long 0x1252E548
980
.long 0x1273E548
981
.long 0x1294E548
982
.long 0x12B5E548
983
984
.long 0x11EFED48
985
.long 0x1210ED48
986
.long 0x1231ED48
987
.long 0x1252ED48
988
.long 0x1273ED48
989
.long 0x1294ED48
990
.long 0x12B5ED48
991
992
.long 0x11EFF548
993
vxor 4,4,31
994
.long 0x1210F548
995
vxor 1,1,31
996
.long 0x1231F548
997
vxor 2,2,31
998
.long 0x1252F548
999
vxor 3,3,31
1000
.long 0x1273F548
1001
vxor 10,10,31
1002
.long 0x1294F548
1003
vxor 11,11,31
1004
.long 0x12B5F548
1005
vxor 12,12,31
1006
1007
cmplwi 5,32
1008
blt .Lcbc_dec8x_one
1009
nop
1010
beq .Lcbc_dec8x_two
1011
cmplwi 5,64
1012
blt .Lcbc_dec8x_three
1013
nop
1014
beq .Lcbc_dec8x_four
1015
cmplwi 5,96
1016
blt .Lcbc_dec8x_five
1017
nop
1018
beq .Lcbc_dec8x_six
1019
1020
.Lcbc_dec8x_seven:
1021
.long 0x11EF2549
1022
.long 0x12100D49
1023
.long 0x12311549
1024
.long 0x12521D49
1025
.long 0x12735549
1026
.long 0x12945D49
1027
.long 0x12B56549
1028
vor 4,13,13
1029
1030
1031
1032
.long 0x7DE02799
1033
1034
.long 0x7E082799
1035
1036
.long 0x7E3A2799
1037
1038
.long 0x7E5B2799
1039
1040
.long 0x7E7C2799
1041
1042
.long 0x7E9D2799
1043
.long 0x7EBE2799
1044
addi 4,4,0x70
1045
b .Lcbc_dec8x_done
1046
1047
.align 5
1048
.Lcbc_dec8x_six:
1049
.long 0x12102549
1050
.long 0x12311549
1051
.long 0x12521D49
1052
.long 0x12735549
1053
.long 0x12945D49
1054
.long 0x12B56549
1055
vor 4,13,13
1056
1057
1058
1059
.long 0x7E002799
1060
1061
.long 0x7E282799
1062
1063
.long 0x7E5A2799
1064
1065
.long 0x7E7B2799
1066
1067
.long 0x7E9C2799
1068
.long 0x7EBD2799
1069
addi 4,4,0x60
1070
b .Lcbc_dec8x_done
1071
1072
.align 5
1073
.Lcbc_dec8x_five:
1074
.long 0x12312549
1075
.long 0x12521D49
1076
.long 0x12735549
1077
.long 0x12945D49
1078
.long 0x12B56549
1079
vor 4,13,13
1080
1081
1082
1083
.long 0x7E202799
1084
1085
.long 0x7E482799
1086
1087
.long 0x7E7A2799
1088
1089
.long 0x7E9B2799
1090
.long 0x7EBC2799
1091
addi 4,4,0x50
1092
b .Lcbc_dec8x_done
1093
1094
.align 5
1095
.Lcbc_dec8x_four:
1096
.long 0x12522549
1097
.long 0x12735549
1098
.long 0x12945D49
1099
.long 0x12B56549
1100
vor 4,13,13
1101
1102
1103
1104
.long 0x7E402799
1105
1106
.long 0x7E682799
1107
1108
.long 0x7E9A2799
1109
.long 0x7EBB2799
1110
addi 4,4,0x40
1111
b .Lcbc_dec8x_done
1112
1113
.align 5
1114
.Lcbc_dec8x_three:
1115
.long 0x12732549
1116
.long 0x12945D49
1117
.long 0x12B56549
1118
vor 4,13,13
1119
1120
1121
1122
.long 0x7E602799
1123
1124
.long 0x7E882799
1125
.long 0x7EBA2799
1126
addi 4,4,0x30
1127
b .Lcbc_dec8x_done
1128
1129
.align 5
1130
.Lcbc_dec8x_two:
1131
.long 0x12942549
1132
.long 0x12B56549
1133
vor 4,13,13
1134
1135
1136
1137
.long 0x7E802799
1138
.long 0x7EA82799
1139
addi 4,4,0x20
1140
b .Lcbc_dec8x_done
1141
1142
.align 5
1143
.Lcbc_dec8x_one:
1144
.long 0x12B52549
1145
vor 4,13,13
1146
1147
1148
.long 0x7EA02799
1149
addi 4,4,0x10
1150
1151
.Lcbc_dec8x_done:
1152
1153
.long 0x7C803F99
1154
1155
li 10,47
1156
li 11,63
1157
stvx 6,10,1
1158
addi 10,10,32
1159
stvx 6,11,1
1160
addi 11,11,32
1161
stvx 6,10,1
1162
addi 10,10,32
1163
stvx 6,11,1
1164
addi 11,11,32
1165
stvx 6,10,1
1166
addi 10,10,32
1167
stvx 6,11,1
1168
addi 11,11,32
1169
stvx 6,10,1
1170
addi 10,10,32
1171
stvx 6,11,1
1172
addi 11,11,32
1173
1174
mtspr 256,12
1175
lvx 20,10,1
1176
addi 10,10,32
1177
lvx 21,11,1
1178
addi 11,11,32
1179
lvx 22,10,1
1180
addi 10,10,32
1181
lvx 23,11,1
1182
addi 11,11,32
1183
lvx 24,10,1
1184
addi 10,10,32
1185
lvx 25,11,1
1186
addi 11,11,32
1187
lvx 26,10,1
1188
addi 10,10,32
1189
lvx 27,11,1
1190
addi 11,11,32
1191
lvx 28,10,1
1192
addi 10,10,32
1193
lvx 29,11,1
1194
addi 11,11,32
1195
lvx 30,10,1
1196
lvx 31,11,1
1197
lwz 26,368(1)
1198
lwz 27,372(1)
1199
lwz 28,376(1)
1200
lwz 29,380(1)
1201
lwz 30,384(1)
1202
lwz 31,388(1)
1203
addi 1,1,392
1204
blr
1205
.long 0
1206
.byte 0,12,0x04,0,0x80,6,6,0
1207
.long 0
1208
.size aes_p8_cbc_encrypt,.-aes_p8_cbc_encrypt
1209
.globl aes_p8_ctr32_encrypt_blocks
1210
.type aes_p8_ctr32_encrypt_blocks,@function
1211
.align 5
1212
aes_p8_ctr32_encrypt_blocks:
1213
cmplwi 5,1
1214
.long 0x4dc00020
1215
1216
lis 0,0xfff0
1217
mfspr 12,256
1218
mtspr 256,0
1219
1220
li 10,15
1221
vxor 0,0,0
1222
1223
1224
lvx 4,0,7
1225
lvsl 6,0,7
1226
lvx 5,10,7
1227
vspltisb 11,1
1228
1229
vperm 4,4,5,6
1230
vsldoi 11,0,11,1
1231
1232
neg 11,3
1233
lvsl 10,0,6
1234
lwz 9,240(6)
1235
1236
lvsr 6,0,11
1237
lvx 5,0,3
1238
addi 3,3,15
1239
1240
1241
srwi 9,9,1
1242
li 10,16
1243
subi 9,9,1
1244
1245
cmplwi 5,8
1246
bge _aesp8_ctr32_encrypt8x
1247
1248
lvsr 8,0,4
1249
vspltisb 9,-1
1250
lvx 7,0,4
1251
vperm 9,0,9,8
1252
1253
1254
lvx 0,0,6
1255
mtctr 9
1256
lvx 1,10,6
1257
addi 10,10,16
1258
vperm 0,0,1,10
1259
vxor 2,4,0
1260
lvx 0,10,6
1261
addi 10,10,16
1262
b .Loop_ctr32_enc
1263
1264
.align 5
1265
.Loop_ctr32_enc:
1266
vperm 1,1,0,10
1267
.long 0x10420D08
1268
lvx 1,10,6
1269
addi 10,10,16
1270
vperm 0,0,1,10
1271
.long 0x10420508
1272
lvx 0,10,6
1273
addi 10,10,16
1274
bdnz .Loop_ctr32_enc
1275
1276
vadduwm 4,4,11
1277
vor 3,5,5
1278
lvx 5,0,3
1279
addi 3,3,16
1280
subic. 5,5,1
1281
1282
vperm 1,1,0,10
1283
.long 0x10420D08
1284
lvx 1,10,6
1285
vperm 3,3,5,6
1286
li 10,16
1287
vperm 1,0,1,10
1288
lvx 0,0,6
1289
vxor 3,3,1
1290
.long 0x10421D09
1291
1292
lvx 1,10,6
1293
addi 10,10,16
1294
vperm 2,2,2,8
1295
vsel 3,7,2,9
1296
mtctr 9
1297
vperm 0,0,1,10
1298
vor 7,2,2
1299
vxor 2,4,0
1300
lvx 0,10,6
1301
addi 10,10,16
1302
stvx 3,0,4
1303
addi 4,4,16
1304
bne .Loop_ctr32_enc
1305
1306
addi 4,4,-1
1307
lvx 2,0,4
1308
vsel 2,7,2,9
1309
stvx 2,0,4
1310
1311
mtspr 256,12
1312
blr
1313
.long 0
1314
.byte 0,12,0x14,0,0,0,6,0
1315
.long 0
1316
.align 5
1317
_aesp8_ctr32_encrypt8x:
1318
stwu 1,-392(1)
1319
li 10,175
1320
li 11,191
1321
stvx 20,10,1
1322
addi 10,10,32
1323
stvx 21,11,1
1324
addi 11,11,32
1325
stvx 22,10,1
1326
addi 10,10,32
1327
stvx 23,11,1
1328
addi 11,11,32
1329
stvx 24,10,1
1330
addi 10,10,32
1331
stvx 25,11,1
1332
addi 11,11,32
1333
stvx 26,10,1
1334
addi 10,10,32
1335
stvx 27,11,1
1336
addi 11,11,32
1337
stvx 28,10,1
1338
addi 10,10,32
1339
stvx 29,11,1
1340
addi 11,11,32
1341
stvx 30,10,1
1342
stvx 31,11,1
1343
li 0,-1
1344
stw 12,364(1)
1345
li 8,0x10
1346
stw 26,368(1)
1347
li 26,0x20
1348
stw 27,372(1)
1349
li 27,0x30
1350
stw 28,376(1)
1351
li 28,0x40
1352
stw 29,380(1)
1353
li 29,0x50
1354
stw 30,384(1)
1355
li 30,0x60
1356
stw 31,388(1)
1357
li 31,0x70
1358
mtspr 256,0
1359
1360
subi 9,9,3
1361
1362
lvx 23,0,6
1363
lvx 30,8,6
1364
addi 6,6,0x20
1365
lvx 31,0,6
1366
vperm 23,23,30,10
1367
addi 11,1,32+15
1368
mtctr 9
1369
1370
.Load_ctr32_enc_key:
1371
vperm 24,30,31,10
1372
lvx 30,8,6
1373
addi 6,6,0x20
1374
stvx 24,0,11
1375
vperm 25,31,30,10
1376
lvx 31,0,6
1377
stvx 25,8,11
1378
addi 11,11,0x20
1379
bdnz .Load_ctr32_enc_key
1380
1381
lvx 26,8,6
1382
vperm 24,30,31,10
1383
lvx 27,26,6
1384
stvx 24,0,11
1385
vperm 25,31,26,10
1386
lvx 28,27,6
1387
stvx 25,8,11
1388
addi 11,1,32+15
1389
vperm 26,26,27,10
1390
lvx 29,28,6
1391
vperm 27,27,28,10
1392
lvx 30,29,6
1393
vperm 28,28,29,10
1394
lvx 31,30,6
1395
vperm 29,29,30,10
1396
lvx 15,31,6
1397
vperm 30,30,31,10
1398
lvx 24,0,11
1399
vperm 31,31,15,10
1400
lvx 25,8,11
1401
1402
vadduwm 7,11,11
1403
subi 3,3,15
1404
slwi 5,5,4
1405
1406
vadduwm 16,4,11
1407
vadduwm 17,4,7
1408
vxor 15,4,23
1409
1410
vadduwm 18,16,7
1411
vxor 16,16,23
1412
1413
vadduwm 19,17,7
1414
vxor 17,17,23
1415
1416
vadduwm 20,18,7
1417
vxor 18,18,23
1418
1419
vadduwm 21,19,7
1420
vxor 19,19,23
1421
vadduwm 22,20,7
1422
vxor 20,20,23
1423
vadduwm 4,21,7
1424
vxor 21,21,23
1425
vxor 22,22,23
1426
1427
mtctr 9
1428
b .Loop_ctr32_enc8x
1429
.align 5
1430
.Loop_ctr32_enc8x:
1431
.long 0x11EFC508
1432
.long 0x1210C508
1433
.long 0x1231C508
1434
.long 0x1252C508
1435
.long 0x1273C508
1436
.long 0x1294C508
1437
.long 0x12B5C508
1438
.long 0x12D6C508
1439
.Loop_ctr32_enc8x_middle:
1440
lvx 24,26,11
1441
addi 11,11,0x20
1442
1443
.long 0x11EFCD08
1444
.long 0x1210CD08
1445
.long 0x1231CD08
1446
.long 0x1252CD08
1447
.long 0x1273CD08
1448
.long 0x1294CD08
1449
.long 0x12B5CD08
1450
.long 0x12D6CD08
1451
lvx 25,8,11
1452
bdnz .Loop_ctr32_enc8x
1453
1454
subic 11,5,256
1455
.long 0x11EFC508
1456
.long 0x1210C508
1457
.long 0x1231C508
1458
.long 0x1252C508
1459
.long 0x1273C508
1460
.long 0x1294C508
1461
.long 0x12B5C508
1462
.long 0x12D6C508
1463
1464
subfe 0,0,0
1465
.long 0x11EFCD08
1466
.long 0x1210CD08
1467
.long 0x1231CD08
1468
.long 0x1252CD08
1469
.long 0x1273CD08
1470
.long 0x1294CD08
1471
.long 0x12B5CD08
1472
.long 0x12D6CD08
1473
1474
and 0,0,11
1475
addi 11,1,32+15
1476
.long 0x11EFD508
1477
.long 0x1210D508
1478
.long 0x1231D508
1479
.long 0x1252D508
1480
.long 0x1273D508
1481
.long 0x1294D508
1482
.long 0x12B5D508
1483
.long 0x12D6D508
1484
lvx 24,0,11
1485
1486
subic 5,5,129
1487
.long 0x11EFDD08
1488
addi 5,5,1
1489
.long 0x1210DD08
1490
.long 0x1231DD08
1491
.long 0x1252DD08
1492
.long 0x1273DD08
1493
.long 0x1294DD08
1494
.long 0x12B5DD08
1495
.long 0x12D6DD08
1496
lvx 25,8,11
1497
1498
.long 0x11EFE508
1499
.long 0x7C001E99
1500
.long 0x1210E508
1501
.long 0x7C281E99
1502
.long 0x1231E508
1503
.long 0x7C5A1E99
1504
.long 0x1252E508
1505
.long 0x7C7B1E99
1506
.long 0x1273E508
1507
.long 0x7D5C1E99
1508
.long 0x1294E508
1509
.long 0x7D9D1E99
1510
.long 0x12B5E508
1511
.long 0x7DBE1E99
1512
.long 0x12D6E508
1513
.long 0x7DDF1E99
1514
addi 3,3,0x80
1515
1516
.long 0x11EFED08
1517
1518
.long 0x1210ED08
1519
1520
.long 0x1231ED08
1521
1522
.long 0x1252ED08
1523
1524
.long 0x1273ED08
1525
1526
.long 0x1294ED08
1527
1528
.long 0x12B5ED08
1529
1530
.long 0x12D6ED08
1531
1532
1533
add 3,3,0
1534
1535
1536
1537
subfe. 0,0,0
1538
.long 0x11EFF508
1539
vxor 0,0,31
1540
.long 0x1210F508
1541
vxor 1,1,31
1542
.long 0x1231F508
1543
vxor 2,2,31
1544
.long 0x1252F508
1545
vxor 3,3,31
1546
.long 0x1273F508
1547
vxor 10,10,31
1548
.long 0x1294F508
1549
vxor 12,12,31
1550
.long 0x12B5F508
1551
vxor 13,13,31
1552
.long 0x12D6F508
1553
vxor 14,14,31
1554
1555
bne .Lctr32_enc8x_break
1556
1557
.long 0x100F0509
1558
.long 0x10300D09
1559
vadduwm 16,4,11
1560
.long 0x10511509
1561
vadduwm 17,4,7
1562
vxor 15,4,23
1563
.long 0x10721D09
1564
vadduwm 18,16,7
1565
vxor 16,16,23
1566
.long 0x11535509
1567
vadduwm 19,17,7
1568
vxor 17,17,23
1569
.long 0x11946509
1570
vadduwm 20,18,7
1571
vxor 18,18,23
1572
.long 0x11B56D09
1573
vadduwm 21,19,7
1574
vxor 19,19,23
1575
.long 0x11D67509
1576
vadduwm 22,20,7
1577
vxor 20,20,23
1578
1579
vadduwm 4,21,7
1580
vxor 21,21,23
1581
1582
vxor 22,22,23
1583
mtctr 9
1584
1585
.long 0x11EFC508
1586
.long 0x7C002799
1587
1588
.long 0x1210C508
1589
.long 0x7C282799
1590
1591
.long 0x1231C508
1592
.long 0x7C5A2799
1593
1594
.long 0x1252C508
1595
.long 0x7C7B2799
1596
1597
.long 0x1273C508
1598
.long 0x7D5C2799
1599
1600
.long 0x1294C508
1601
.long 0x7D9D2799
1602
1603
.long 0x12B5C508
1604
.long 0x7DBE2799
1605
.long 0x12D6C508
1606
.long 0x7DDF2799
1607
addi 4,4,0x80
1608
1609
b .Loop_ctr32_enc8x_middle
1610
1611
.align 5
1612
.Lctr32_enc8x_break:
1613
cmpwi 5,-0x60
1614
blt .Lctr32_enc8x_one
1615
nop
1616
beq .Lctr32_enc8x_two
1617
cmpwi 5,-0x40
1618
blt .Lctr32_enc8x_three
1619
nop
1620
beq .Lctr32_enc8x_four
1621
cmpwi 5,-0x20
1622
blt .Lctr32_enc8x_five
1623
nop
1624
beq .Lctr32_enc8x_six
1625
cmpwi 5,0x00
1626
blt .Lctr32_enc8x_seven
1627
1628
.Lctr32_enc8x_eight:
1629
.long 0x11EF0509
1630
.long 0x12100D09
1631
.long 0x12311509
1632
.long 0x12521D09
1633
.long 0x12735509
1634
.long 0x12946509
1635
.long 0x12B56D09
1636
.long 0x12D67509
1637
1638
1639
1640
.long 0x7DE02799
1641
1642
.long 0x7E082799
1643
1644
.long 0x7E3A2799
1645
1646
.long 0x7E5B2799
1647
1648
.long 0x7E7C2799
1649
1650
.long 0x7E9D2799
1651
1652
.long 0x7EBE2799
1653
.long 0x7EDF2799
1654
addi 4,4,0x80
1655
b .Lctr32_enc8x_done
1656
1657
.align 5
1658
.Lctr32_enc8x_seven:
1659
.long 0x11EF0D09
1660
.long 0x12101509
1661
.long 0x12311D09
1662
.long 0x12525509
1663
.long 0x12736509
1664
.long 0x12946D09
1665
.long 0x12B57509
1666
1667
1668
1669
.long 0x7DE02799
1670
1671
.long 0x7E082799
1672
1673
.long 0x7E3A2799
1674
1675
.long 0x7E5B2799
1676
1677
.long 0x7E7C2799
1678
1679
.long 0x7E9D2799
1680
.long 0x7EBE2799
1681
addi 4,4,0x70
1682
b .Lctr32_enc8x_done
1683
1684
.align 5
1685
.Lctr32_enc8x_six:
1686
.long 0x11EF1509
1687
.long 0x12101D09
1688
.long 0x12315509
1689
.long 0x12526509
1690
.long 0x12736D09
1691
.long 0x12947509
1692
1693
1694
1695
.long 0x7DE02799
1696
1697
.long 0x7E082799
1698
1699
.long 0x7E3A2799
1700
1701
.long 0x7E5B2799
1702
1703
.long 0x7E7C2799
1704
.long 0x7E9D2799
1705
addi 4,4,0x60
1706
b .Lctr32_enc8x_done
1707
1708
.align 5
1709
.Lctr32_enc8x_five:
1710
.long 0x11EF1D09
1711
.long 0x12105509
1712
.long 0x12316509
1713
.long 0x12526D09
1714
.long 0x12737509
1715
1716
1717
1718
.long 0x7DE02799
1719
1720
.long 0x7E082799
1721
1722
.long 0x7E3A2799
1723
1724
.long 0x7E5B2799
1725
.long 0x7E7C2799
1726
addi 4,4,0x50
1727
b .Lctr32_enc8x_done
1728
1729
.align 5
1730
.Lctr32_enc8x_four:
1731
.long 0x11EF5509
1732
.long 0x12106509
1733
.long 0x12316D09
1734
.long 0x12527509
1735
1736
1737
1738
.long 0x7DE02799
1739
1740
.long 0x7E082799
1741
1742
.long 0x7E3A2799
1743
.long 0x7E5B2799
1744
addi 4,4,0x40
1745
b .Lctr32_enc8x_done
1746
1747
.align 5
1748
.Lctr32_enc8x_three:
1749
.long 0x11EF6509
1750
.long 0x12106D09
1751
.long 0x12317509
1752
1753
1754
1755
.long 0x7DE02799
1756
1757
.long 0x7E082799
1758
.long 0x7E3A2799
1759
addi 4,4,0x30
1760
b .Lctr32_enc8x_done
1761
1762
.align 5
1763
.Lctr32_enc8x_two:
1764
.long 0x11EF6D09
1765
.long 0x12107509
1766
1767
1768
1769
.long 0x7DE02799
1770
.long 0x7E082799
1771
addi 4,4,0x20
1772
b .Lctr32_enc8x_done
1773
1774
.align 5
1775
.Lctr32_enc8x_one:
1776
.long 0x11EF7509
1777
1778
1779
.long 0x7DE02799
1780
addi 4,4,0x10
1781
1782
.Lctr32_enc8x_done:
1783
li 10,47
1784
li 11,63
1785
stvx 6,10,1
1786
addi 10,10,32
1787
stvx 6,11,1
1788
addi 11,11,32
1789
stvx 6,10,1
1790
addi 10,10,32
1791
stvx 6,11,1
1792
addi 11,11,32
1793
stvx 6,10,1
1794
addi 10,10,32
1795
stvx 6,11,1
1796
addi 11,11,32
1797
stvx 6,10,1
1798
addi 10,10,32
1799
stvx 6,11,1
1800
addi 11,11,32
1801
1802
mtspr 256,12
1803
lvx 20,10,1
1804
addi 10,10,32
1805
lvx 21,11,1
1806
addi 11,11,32
1807
lvx 22,10,1
1808
addi 10,10,32
1809
lvx 23,11,1
1810
addi 11,11,32
1811
lvx 24,10,1
1812
addi 10,10,32
1813
lvx 25,11,1
1814
addi 11,11,32
1815
lvx 26,10,1
1816
addi 10,10,32
1817
lvx 27,11,1
1818
addi 11,11,32
1819
lvx 28,10,1
1820
addi 10,10,32
1821
lvx 29,11,1
1822
addi 11,11,32
1823
lvx 30,10,1
1824
lvx 31,11,1
1825
lwz 26,368(1)
1826
lwz 27,372(1)
1827
lwz 28,376(1)
1828
lwz 29,380(1)
1829
lwz 30,384(1)
1830
lwz 31,388(1)
1831
addi 1,1,392
1832
blr
1833
.long 0
1834
.byte 0,12,0x04,0,0x80,6,6,0
1835
.long 0
1836
.size aes_p8_ctr32_encrypt_blocks,.-aes_p8_ctr32_encrypt_blocks
1837
.globl aes_p8_xts_encrypt
1838
.type aes_p8_xts_encrypt,@function
1839
.align 5
1840
aes_p8_xts_encrypt:
1841
mr 10,3
1842
li 3,-1
1843
cmplwi 5,16
1844
.long 0x4dc00020
1845
1846
lis 0,0xfff0
1847
mfspr 12,256
1848
li 11,0
1849
mtspr 256,0
1850
1851
vspltisb 9,0x07
1852
1853
1854
1855
1856
li 3,15
1857
lvx 8,0,8
1858
lvsl 5,0,8
1859
lvx 4,3,8
1860
1861
vperm 8,8,4,5
1862
1863
neg 11,10
1864
lvsr 5,0,11
1865
lvx 2,0,10
1866
addi 10,10,15
1867
1868
1869
cmplwi 7,0
1870
beq .Lxts_enc_no_key2
1871
1872
lvsl 7,0,7
1873
lwz 9,240(7)
1874
srwi 9,9,1
1875
subi 9,9,1
1876
li 3,16
1877
1878
lvx 0,0,7
1879
lvx 1,3,7
1880
addi 3,3,16
1881
vperm 0,0,1,7
1882
vxor 8,8,0
1883
lvx 0,3,7
1884
addi 3,3,16
1885
mtctr 9
1886
1887
.Ltweak_xts_enc:
1888
vperm 1,1,0,7
1889
.long 0x11080D08
1890
lvx 1,3,7
1891
addi 3,3,16
1892
vperm 0,0,1,7
1893
.long 0x11080508
1894
lvx 0,3,7
1895
addi 3,3,16
1896
bdnz .Ltweak_xts_enc
1897
1898
vperm 1,1,0,7
1899
.long 0x11080D08
1900
lvx 1,3,7
1901
vperm 0,0,1,7
1902
.long 0x11080509
1903
1904
li 8,0
1905
b .Lxts_enc
1906
1907
.Lxts_enc_no_key2:
1908
li 3,-16
1909
and 5,5,3
1910
1911
1912
.Lxts_enc:
1913
lvx 4,0,10
1914
addi 10,10,16
1915
1916
lvsl 7,0,6
1917
lwz 9,240(6)
1918
srwi 9,9,1
1919
subi 9,9,1
1920
li 3,16
1921
1922
vslb 10,9,9
1923
vor 10,10,9
1924
vspltisb 11,1
1925
vsldoi 10,10,11,15
1926
1927
cmplwi 5,96
1928
bge _aesp8_xts_encrypt6x
1929
1930
andi. 7,5,15
1931
subic 0,5,32
1932
subi 7,7,16
1933
subfe 0,0,0
1934
and 0,0,7
1935
add 10,10,0
1936
1937
lvx 0,0,6
1938
lvx 1,3,6
1939
addi 3,3,16
1940
vperm 2,2,4,5
1941
vperm 0,0,1,7
1942
vxor 2,2,8
1943
vxor 2,2,0
1944
lvx 0,3,6
1945
addi 3,3,16
1946
mtctr 9
1947
b .Loop_xts_enc
1948
1949
.align 5
1950
.Loop_xts_enc:
1951
vperm 1,1,0,7
1952
.long 0x10420D08
1953
lvx 1,3,6
1954
addi 3,3,16
1955
vperm 0,0,1,7
1956
.long 0x10420508
1957
lvx 0,3,6
1958
addi 3,3,16
1959
bdnz .Loop_xts_enc
1960
1961
vperm 1,1,0,7
1962
.long 0x10420D08
1963
lvx 1,3,6
1964
li 3,16
1965
vperm 0,0,1,7
1966
vxor 0,0,8
1967
.long 0x10620509
1968
1969
1970
nop
1971
1972
.long 0x7C602799
1973
addi 4,4,16
1974
1975
subic. 5,5,16
1976
beq .Lxts_enc_done
1977
1978
vor 2,4,4
1979
lvx 4,0,10
1980
addi 10,10,16
1981
lvx 0,0,6
1982
lvx 1,3,6
1983
addi 3,3,16
1984
1985
subic 0,5,32
1986
subfe 0,0,0
1987
and 0,0,7
1988
add 10,10,0
1989
1990
vsrab 11,8,9
1991
vaddubm 8,8,8
1992
vsldoi 11,11,11,15
1993
vand 11,11,10
1994
vxor 8,8,11
1995
1996
vperm 2,2,4,5
1997
vperm 0,0,1,7
1998
vxor 2,2,8
1999
vxor 3,3,0
2000
vxor 2,2,0
2001
lvx 0,3,6
2002
addi 3,3,16
2003
2004
mtctr 9
2005
cmplwi 5,16
2006
bge .Loop_xts_enc
2007
2008
vxor 3,3,8
2009
lvsr 5,0,5
2010
vxor 4,4,4
2011
vspltisb 11,-1
2012
vperm 4,4,11,5
2013
vsel 2,2,3,4
2014
2015
subi 11,4,17
2016
subi 4,4,16
2017
mtctr 5
2018
li 5,16
2019
.Loop_xts_enc_steal:
2020
lbzu 0,1(11)
2021
stb 0,16(11)
2022
bdnz .Loop_xts_enc_steal
2023
2024
mtctr 9
2025
b .Loop_xts_enc
2026
2027
.Lxts_enc_done:
2028
cmplwi 8,0
2029
beq .Lxts_enc_ret
2030
2031
vsrab 11,8,9
2032
vaddubm 8,8,8
2033
vsldoi 11,11,11,15
2034
vand 11,11,10
2035
vxor 8,8,11
2036
2037
2038
.long 0x7D004799
2039
2040
.Lxts_enc_ret:
2041
mtspr 256,12
2042
li 3,0
2043
blr
2044
.long 0
2045
.byte 0,12,0x04,0,0x80,6,6,0
2046
.long 0
2047
.size aes_p8_xts_encrypt,.-aes_p8_xts_encrypt
2048
2049
.globl aes_p8_xts_decrypt
2050
.type aes_p8_xts_decrypt,@function
2051
.align 5
2052
aes_p8_xts_decrypt:
2053
mr 10,3
2054
li 3,-1
2055
cmplwi 5,16
2056
.long 0x4dc00020
2057
2058
lis 0,0xfff8
2059
mfspr 12,256
2060
li 11,0
2061
mtspr 256,0
2062
2063
andi. 0,5,15
2064
neg 0,0
2065
andi. 0,0,16
2066
sub 5,5,0
2067
2068
vspltisb 9,0x07
2069
2070
2071
2072
2073
li 3,15
2074
lvx 8,0,8
2075
lvsl 5,0,8
2076
lvx 4,3,8
2077
2078
vperm 8,8,4,5
2079
2080
neg 11,10
2081
lvsr 5,0,11
2082
lvx 2,0,10
2083
addi 10,10,15
2084
2085
2086
cmplwi 7,0
2087
beq .Lxts_dec_no_key2
2088
2089
lvsl 7,0,7
2090
lwz 9,240(7)
2091
srwi 9,9,1
2092
subi 9,9,1
2093
li 3,16
2094
2095
lvx 0,0,7
2096
lvx 1,3,7
2097
addi 3,3,16
2098
vperm 0,0,1,7
2099
vxor 8,8,0
2100
lvx 0,3,7
2101
addi 3,3,16
2102
mtctr 9
2103
2104
.Ltweak_xts_dec:
2105
vperm 1,1,0,7
2106
.long 0x11080D08
2107
lvx 1,3,7
2108
addi 3,3,16
2109
vperm 0,0,1,7
2110
.long 0x11080508
2111
lvx 0,3,7
2112
addi 3,3,16
2113
bdnz .Ltweak_xts_dec
2114
2115
vperm 1,1,0,7
2116
.long 0x11080D08
2117
lvx 1,3,7
2118
vperm 0,0,1,7
2119
.long 0x11080509
2120
2121
li 8,0
2122
b .Lxts_dec
2123
2124
.Lxts_dec_no_key2:
2125
neg 3,5
2126
andi. 3,3,15
2127
add 5,5,3
2128
2129
2130
.Lxts_dec:
2131
lvx 4,0,10
2132
addi 10,10,16
2133
2134
lvsl 7,0,6
2135
lwz 9,240(6)
2136
srwi 9,9,1
2137
subi 9,9,1
2138
li 3,16
2139
2140
vslb 10,9,9
2141
vor 10,10,9
2142
vspltisb 11,1
2143
vsldoi 10,10,11,15
2144
2145
cmplwi 5,96
2146
bge _aesp8_xts_decrypt6x
2147
2148
lvx 0,0,6
2149
lvx 1,3,6
2150
addi 3,3,16
2151
vperm 2,2,4,5
2152
vperm 0,0,1,7
2153
vxor 2,2,8
2154
vxor 2,2,0
2155
lvx 0,3,6
2156
addi 3,3,16
2157
mtctr 9
2158
2159
cmplwi 5,16
2160
blt .Ltail_xts_dec
2161
b .Loop_xts_dec
2162
2163
.align 5
2164
.Loop_xts_dec:
2165
vperm 1,1,0,7
2166
.long 0x10420D48
2167
lvx 1,3,6
2168
addi 3,3,16
2169
vperm 0,0,1,7
2170
.long 0x10420548
2171
lvx 0,3,6
2172
addi 3,3,16
2173
bdnz .Loop_xts_dec
2174
2175
vperm 1,1,0,7
2176
.long 0x10420D48
2177
lvx 1,3,6
2178
li 3,16
2179
vperm 0,0,1,7
2180
vxor 0,0,8
2181
.long 0x10620549
2182
2183
2184
nop
2185
2186
.long 0x7C602799
2187
addi 4,4,16
2188
2189
subic. 5,5,16
2190
beq .Lxts_dec_done
2191
2192
vor 2,4,4
2193
lvx 4,0,10
2194
addi 10,10,16
2195
lvx 0,0,6
2196
lvx 1,3,6
2197
addi 3,3,16
2198
2199
vsrab 11,8,9
2200
vaddubm 8,8,8
2201
vsldoi 11,11,11,15
2202
vand 11,11,10
2203
vxor 8,8,11
2204
2205
vperm 2,2,4,5
2206
vperm 0,0,1,7
2207
vxor 2,2,8
2208
vxor 2,2,0
2209
lvx 0,3,6
2210
addi 3,3,16
2211
2212
mtctr 9
2213
cmplwi 5,16
2214
bge .Loop_xts_dec
2215
2216
.Ltail_xts_dec:
2217
vsrab 11,8,9
2218
vaddubm 12,8,8
2219
vsldoi 11,11,11,15
2220
vand 11,11,10
2221
vxor 12,12,11
2222
2223
subi 10,10,16
2224
add 10,10,5
2225
2226
vxor 2,2,8
2227
vxor 2,2,12
2228
2229
.Loop_xts_dec_short:
2230
vperm 1,1,0,7
2231
.long 0x10420D48
2232
lvx 1,3,6
2233
addi 3,3,16
2234
vperm 0,0,1,7
2235
.long 0x10420548
2236
lvx 0,3,6
2237
addi 3,3,16
2238
bdnz .Loop_xts_dec_short
2239
2240
vperm 1,1,0,7
2241
.long 0x10420D48
2242
lvx 1,3,6
2243
li 3,16
2244
vperm 0,0,1,7
2245
vxor 0,0,12
2246
.long 0x10620549
2247
2248
2249
nop
2250
2251
.long 0x7C602799
2252
2253
vor 2,4,4
2254
lvx 4,0,10
2255
2256
lvx 0,0,6
2257
lvx 1,3,6
2258
addi 3,3,16
2259
vperm 2,2,4,5
2260
vperm 0,0,1,7
2261
2262
lvsr 5,0,5
2263
vxor 4,4,4
2264
vspltisb 11,-1
2265
vperm 4,4,11,5
2266
vsel 2,2,3,4
2267
2268
vxor 0,0,8
2269
vxor 2,2,0
2270
lvx 0,3,6
2271
addi 3,3,16
2272
2273
subi 11,4,1
2274
mtctr 5
2275
li 5,16
2276
.Loop_xts_dec_steal:
2277
lbzu 0,1(11)
2278
stb 0,16(11)
2279
bdnz .Loop_xts_dec_steal
2280
2281
mtctr 9
2282
b .Loop_xts_dec
2283
2284
.Lxts_dec_done:
2285
cmplwi 8,0
2286
beq .Lxts_dec_ret
2287
2288
vsrab 11,8,9
2289
vaddubm 8,8,8
2290
vsldoi 11,11,11,15
2291
vand 11,11,10
2292
vxor 8,8,11
2293
2294
2295
.long 0x7D004799
2296
2297
.Lxts_dec_ret:
2298
mtspr 256,12
2299
li 3,0
2300
blr
2301
.long 0
2302
.byte 0,12,0x04,0,0x80,6,6,0
2303
.long 0
2304
.size aes_p8_xts_decrypt,.-aes_p8_xts_decrypt
2305
.align 5
2306
_aesp8_xts_encrypt6x:
2307
stwu 1,-392(1)
2308
mflr 11
2309
li 7,175
2310
li 3,191
2311
stw 11,396(1)
2312
stvx 20,7,1
2313
addi 7,7,32
2314
stvx 21,3,1
2315
addi 3,3,32
2316
stvx 22,7,1
2317
addi 7,7,32
2318
stvx 23,3,1
2319
addi 3,3,32
2320
stvx 24,7,1
2321
addi 7,7,32
2322
stvx 25,3,1
2323
addi 3,3,32
2324
stvx 26,7,1
2325
addi 7,7,32
2326
stvx 27,3,1
2327
addi 3,3,32
2328
stvx 28,7,1
2329
addi 7,7,32
2330
stvx 29,3,1
2331
addi 3,3,32
2332
stvx 30,7,1
2333
stvx 31,3,1
2334
li 0,-1
2335
stw 12,364(1)
2336
li 3,0x10
2337
stw 26,368(1)
2338
li 26,0x20
2339
stw 27,372(1)
2340
li 27,0x30
2341
stw 28,376(1)
2342
li 28,0x40
2343
stw 29,380(1)
2344
li 29,0x50
2345
stw 30,384(1)
2346
li 30,0x60
2347
stw 31,388(1)
2348
li 31,0x70
2349
mtspr 256,0
2350
2351
2352
xxlor 2, 32+10, 32+10
2353
vsldoi 10,11,10,1
2354
xxlor 1, 32+10, 32+10
2355
2356
2357
mr 31, 6
2358
bl .Lconsts
2359
lxvw4x 0, 28, 6
2360
mr 6, 31
2361
li 31,0x70
2362
2363
subi 9,9,3
2364
2365
lvx 23,0,6
2366
lvx 30,3,6
2367
addi 6,6,0x20
2368
lvx 31,0,6
2369
vperm 23,23,30,7
2370
addi 7,1,32+15
2371
mtctr 9
2372
2373
.Load_xts_enc_key:
2374
vperm 24,30,31,7
2375
lvx 30,3,6
2376
addi 6,6,0x20
2377
stvx 24,0,7
2378
vperm 25,31,30,7
2379
lvx 31,0,6
2380
stvx 25,3,7
2381
addi 7,7,0x20
2382
bdnz .Load_xts_enc_key
2383
2384
lvx 26,3,6
2385
vperm 24,30,31,7
2386
lvx 27,26,6
2387
stvx 24,0,7
2388
vperm 25,31,26,7
2389
lvx 28,27,6
2390
stvx 25,3,7
2391
addi 7,1,32+15
2392
vperm 26,26,27,7
2393
lvx 29,28,6
2394
vperm 27,27,28,7
2395
lvx 30,29,6
2396
vperm 28,28,29,7
2397
lvx 31,30,6
2398
vperm 29,29,30,7
2399
lvx 22,31,6
2400
vperm 30,30,31,7
2401
lvx 24,0,7
2402
vperm 31,31,22,7
2403
lvx 25,3,7
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
vperm 0,2,4,5
2414
subi 10,10,31
2415
vxor 17,8,23
2416
vsrab 11,8,9
2417
vaddubm 8,8,8
2418
vand 11,11,10
2419
vxor 7,0,17
2420
xxlor 32+1, 0, 0
2421
vpermxor 8, 8, 11, 1
2422
2423
.long 0x7C235699
2424
vxor 18,8,23
2425
vsrab 11,8,9
2426
vaddubm 8,8,8
2427
2428
vand 11,11,10
2429
vxor 12,1,18
2430
xxlor 32+2, 0, 0
2431
vpermxor 8, 8, 11, 2
2432
2433
.long 0x7C5A5699
2434
andi. 31,5,15
2435
vxor 19,8,23
2436
vsrab 11,8,9
2437
vaddubm 8,8,8
2438
2439
vand 11,11,10
2440
vxor 13,2,19
2441
xxlor 32+3, 0, 0
2442
vpermxor 8, 8, 11, 3
2443
2444
.long 0x7C7B5699
2445
sub 5,5,31
2446
vxor 20,8,23
2447
vsrab 11,8,9
2448
vaddubm 8,8,8
2449
2450
vand 11,11,10
2451
vxor 14,3,20
2452
xxlor 32+4, 0, 0
2453
vpermxor 8, 8, 11, 4
2454
2455
.long 0x7C9C5699
2456
subi 5,5,0x60
2457
vxor 21,8,23
2458
vsrab 11,8,9
2459
vaddubm 8,8,8
2460
2461
vand 11,11,10
2462
vxor 15,4,21
2463
xxlor 32+5, 0, 0
2464
vpermxor 8, 8, 11, 5
2465
2466
.long 0x7CBD5699
2467
addi 10,10,0x60
2468
vxor 22,8,23
2469
vsrab 11,8,9
2470
vaddubm 8,8,8
2471
2472
vand 11,11,10
2473
vxor 16,5,22
2474
xxlor 32+0, 0, 0
2475
vpermxor 8, 8, 11, 0
2476
2477
vxor 31,31,23
2478
mtctr 9
2479
b .Loop_xts_enc6x
2480
2481
.align 5
2482
.Loop_xts_enc6x:
2483
.long 0x10E7C508
2484
.long 0x118CC508
2485
.long 0x11ADC508
2486
.long 0x11CEC508
2487
.long 0x11EFC508
2488
.long 0x1210C508
2489
lvx 24,26,7
2490
addi 7,7,0x20
2491
2492
.long 0x10E7CD08
2493
.long 0x118CCD08
2494
.long 0x11ADCD08
2495
.long 0x11CECD08
2496
.long 0x11EFCD08
2497
.long 0x1210CD08
2498
lvx 25,3,7
2499
bdnz .Loop_xts_enc6x
2500
2501
xxlor 32+10, 1, 1
2502
2503
subic 5,5,96
2504
vxor 0,17,31
2505
.long 0x10E7C508
2506
.long 0x118CC508
2507
vsrab 11,8,9
2508
vxor 17,8,23
2509
vaddubm 8,8,8
2510
.long 0x11ADC508
2511
.long 0x11CEC508
2512
.long 0x11EFC508
2513
.long 0x1210C508
2514
2515
subfe. 0,0,0
2516
vand 11,11,10
2517
.long 0x10E7CD08
2518
.long 0x118CCD08
2519
xxlor 32+1, 0, 0
2520
vpermxor 8, 8, 11, 1
2521
.long 0x11ADCD08
2522
.long 0x11CECD08
2523
vxor 1,18,31
2524
vsrab 11,8,9
2525
vxor 18,8,23
2526
.long 0x11EFCD08
2527
.long 0x1210CD08
2528
2529
and 0,0,5
2530
vaddubm 8,8,8
2531
.long 0x10E7D508
2532
.long 0x118CD508
2533
vand 11,11,10
2534
.long 0x11ADD508
2535
.long 0x11CED508
2536
xxlor 32+2, 0, 0
2537
vpermxor 8, 8, 11, 2
2538
.long 0x11EFD508
2539
.long 0x1210D508
2540
2541
add 10,10,0
2542
2543
2544
2545
vxor 2,19,31
2546
vsrab 11,8,9
2547
vxor 19,8,23
2548
vaddubm 8,8,8
2549
.long 0x10E7DD08
2550
.long 0x118CDD08
2551
.long 0x11ADDD08
2552
.long 0x11CEDD08
2553
vand 11,11,10
2554
.long 0x11EFDD08
2555
.long 0x1210DD08
2556
2557
addi 7,1,32+15
2558
xxlor 32+3, 0, 0
2559
vpermxor 8, 8, 11, 3
2560
.long 0x10E7E508
2561
.long 0x118CE508
2562
vxor 3,20,31
2563
vsrab 11,8,9
2564
vxor 20,8,23
2565
.long 0x11ADE508
2566
.long 0x11CEE508
2567
vaddubm 8,8,8
2568
.long 0x11EFE508
2569
.long 0x1210E508
2570
lvx 24,0,7
2571
vand 11,11,10
2572
2573
.long 0x10E7ED08
2574
.long 0x118CED08
2575
xxlor 32+4, 0, 0
2576
vpermxor 8, 8, 11, 4
2577
.long 0x11ADED08
2578
.long 0x11CEED08
2579
vxor 4,21,31
2580
vsrab 11,8,9
2581
vxor 21,8,23
2582
.long 0x11EFED08
2583
.long 0x1210ED08
2584
lvx 25,3,7
2585
vaddubm 8,8,8
2586
2587
.long 0x10E7F508
2588
.long 0x118CF508
2589
vand 11,11,10
2590
.long 0x11ADF508
2591
.long 0x11CEF508
2592
xxlor 32+5, 0, 0
2593
vpermxor 8, 8, 11, 5
2594
.long 0x11EFF508
2595
.long 0x1210F508
2596
vxor 5,22,31
2597
vsrab 11,8,9
2598
vxor 22,8,23
2599
2600
.long 0x10E70509
2601
.long 0x7C005699
2602
vaddubm 8,8,8
2603
.long 0x118C0D09
2604
.long 0x7C235699
2605
.long 0x11AD1509
2606
2607
.long 0x7C5A5699
2608
vand 11,11,10
2609
.long 0x11CE1D09
2610
2611
.long 0x7C7B5699
2612
.long 0x11EF2509
2613
2614
.long 0x7C9C5699
2615
xxlor 10, 32+0, 32+0
2616
xxlor 32+0, 0, 0
2617
vpermxor 8, 8, 11, 0
2618
xxlor 32+0, 10, 10
2619
.long 0x11702D09
2620
2621
2622
.long 0x7CBD5699
2623
addi 10,10,0x60
2624
2625
2626
2627
2628
2629
.long 0x7CE02799
2630
vxor 7,0,17
2631
2632
.long 0x7D832799
2633
vxor 12,1,18
2634
2635
.long 0x7DBA2799
2636
vxor 13,2,19
2637
2638
.long 0x7DDB2799
2639
vxor 14,3,20
2640
2641
.long 0x7DFC2799
2642
vxor 15,4,21
2643
2644
.long 0x7D7D2799
2645
vxor 16,5,22
2646
addi 4,4,0x60
2647
2648
mtctr 9
2649
beq .Loop_xts_enc6x
2650
2651
xxlor 32+10, 2, 2
2652
2653
addic. 5,5,0x60
2654
beq .Lxts_enc6x_zero
2655
cmpwi 5,0x20
2656
blt .Lxts_enc6x_one
2657
nop
2658
beq .Lxts_enc6x_two
2659
cmpwi 5,0x40
2660
blt .Lxts_enc6x_three
2661
nop
2662
beq .Lxts_enc6x_four
2663
2664
.Lxts_enc6x_five:
2665
vxor 7,1,17
2666
vxor 12,2,18
2667
vxor 13,3,19
2668
vxor 14,4,20
2669
vxor 15,5,21
2670
2671
bl _aesp8_xts_enc5x
2672
2673
2674
vor 17,22,22
2675
2676
.long 0x7CE02799
2677
2678
.long 0x7D832799
2679
2680
.long 0x7DBA2799
2681
vxor 11,15,22
2682
2683
.long 0x7DDB2799
2684
.long 0x7DFC2799
2685
addi 4,4,0x50
2686
bne .Lxts_enc6x_steal
2687
b .Lxts_enc6x_done
2688
2689
.align 4
2690
.Lxts_enc6x_four:
2691
vxor 7,2,17
2692
vxor 12,3,18
2693
vxor 13,4,19
2694
vxor 14,5,20
2695
vxor 15,15,15
2696
2697
bl _aesp8_xts_enc5x
2698
2699
2700
vor 17,21,21
2701
2702
.long 0x7CE02799
2703
2704
.long 0x7D832799
2705
vxor 11,14,21
2706
2707
.long 0x7DBA2799
2708
.long 0x7DDB2799
2709
addi 4,4,0x40
2710
bne .Lxts_enc6x_steal
2711
b .Lxts_enc6x_done
2712
2713
.align 4
2714
.Lxts_enc6x_three:
2715
vxor 7,3,17
2716
vxor 12,4,18
2717
vxor 13,5,19
2718
vxor 14,14,14
2719
vxor 15,15,15
2720
2721
bl _aesp8_xts_enc5x
2722
2723
2724
vor 17,20,20
2725
2726
.long 0x7CE02799
2727
vxor 11,13,20
2728
2729
.long 0x7D832799
2730
.long 0x7DBA2799
2731
addi 4,4,0x30
2732
bne .Lxts_enc6x_steal
2733
b .Lxts_enc6x_done
2734
2735
.align 4
2736
.Lxts_enc6x_two:
2737
vxor 7,4,17
2738
vxor 12,5,18
2739
vxor 13,13,13
2740
vxor 14,14,14
2741
vxor 15,15,15
2742
2743
bl _aesp8_xts_enc5x
2744
2745
2746
vor 17,19,19
2747
vxor 11,12,19
2748
2749
.long 0x7CE02799
2750
.long 0x7D832799
2751
addi 4,4,0x20
2752
bne .Lxts_enc6x_steal
2753
b .Lxts_enc6x_done
2754
2755
.align 4
2756
.Lxts_enc6x_one:
2757
vxor 7,5,17
2758
nop
2759
.Loop_xts_enc1x:
2760
.long 0x10E7C508
2761
lvx 24,26,7
2762
addi 7,7,0x20
2763
2764
.long 0x10E7CD08
2765
lvx 25,3,7
2766
bdnz .Loop_xts_enc1x
2767
2768
add 10,10,31
2769
cmpwi 31,0
2770
.long 0x10E7C508
2771
2772
subi 10,10,16
2773
.long 0x10E7CD08
2774
2775
lvsr 5,0,31
2776
.long 0x10E7D508
2777
2778
.long 0x7C005699
2779
.long 0x10E7DD08
2780
2781
addi 7,1,32+15
2782
.long 0x10E7E508
2783
lvx 24,0,7
2784
2785
.long 0x10E7ED08
2786
lvx 25,3,7
2787
vxor 17,17,31
2788
2789
2790
.long 0x10E7F508
2791
2792
vperm 0,0,0,5
2793
.long 0x10E78D09
2794
2795
vor 17,18,18
2796
vxor 11,7,18
2797
2798
.long 0x7CE02799
2799
addi 4,4,0x10
2800
bne .Lxts_enc6x_steal
2801
b .Lxts_enc6x_done
2802
2803
.align 4
2804
.Lxts_enc6x_zero:
2805
cmpwi 31,0
2806
beq .Lxts_enc6x_done
2807
2808
add 10,10,31
2809
subi 10,10,16
2810
.long 0x7C005699
2811
lvsr 5,0,31
2812
2813
vperm 0,0,0,5
2814
vxor 11,11,17
2815
.Lxts_enc6x_steal:
2816
vxor 0,0,17
2817
vxor 7,7,7
2818
vspltisb 12,-1
2819
vperm 7,7,12,5
2820
vsel 7,0,11,7
2821
2822
subi 30,4,17
2823
subi 4,4,16
2824
mtctr 31
2825
.Loop_xts_enc6x_steal:
2826
lbzu 0,1(30)
2827
stb 0,16(30)
2828
bdnz .Loop_xts_enc6x_steal
2829
2830
li 31,0
2831
mtctr 9
2832
b .Loop_xts_enc1x
2833
2834
.align 4
2835
.Lxts_enc6x_done:
2836
cmplwi 8,0
2837
beq .Lxts_enc6x_ret
2838
2839
vxor 8,17,23
2840
2841
.long 0x7D004799
2842
2843
.Lxts_enc6x_ret:
2844
mtlr 11
2845
li 10,47
2846
li 11,63
2847
stvx 9,10,1
2848
addi 10,10,32
2849
stvx 9,11,1
2850
addi 11,11,32
2851
stvx 9,10,1
2852
addi 10,10,32
2853
stvx 9,11,1
2854
addi 11,11,32
2855
stvx 9,10,1
2856
addi 10,10,32
2857
stvx 9,11,1
2858
addi 11,11,32
2859
stvx 9,10,1
2860
addi 10,10,32
2861
stvx 9,11,1
2862
addi 11,11,32
2863
2864
mtspr 256,12
2865
lvx 20,10,1
2866
addi 10,10,32
2867
lvx 21,11,1
2868
addi 11,11,32
2869
lvx 22,10,1
2870
addi 10,10,32
2871
lvx 23,11,1
2872
addi 11,11,32
2873
lvx 24,10,1
2874
addi 10,10,32
2875
lvx 25,11,1
2876
addi 11,11,32
2877
lvx 26,10,1
2878
addi 10,10,32
2879
lvx 27,11,1
2880
addi 11,11,32
2881
lvx 28,10,1
2882
addi 10,10,32
2883
lvx 29,11,1
2884
addi 11,11,32
2885
lvx 30,10,1
2886
lvx 31,11,1
2887
lwz 26,368(1)
2888
lwz 27,372(1)
2889
lwz 28,376(1)
2890
lwz 29,380(1)
2891
lwz 30,384(1)
2892
lwz 31,388(1)
2893
addi 1,1,392
2894
blr
2895
.long 0
2896
.byte 0,12,0x04,1,0x80,6,6,0
2897
.long 0
2898
2899
.align 5
2900
_aesp8_xts_enc5x:
2901
.long 0x10E7C508
2902
.long 0x118CC508
2903
.long 0x11ADC508
2904
.long 0x11CEC508
2905
.long 0x11EFC508
2906
lvx 24,26,7
2907
addi 7,7,0x20
2908
2909
.long 0x10E7CD08
2910
.long 0x118CCD08
2911
.long 0x11ADCD08
2912
.long 0x11CECD08
2913
.long 0x11EFCD08
2914
lvx 25,3,7
2915
bdnz _aesp8_xts_enc5x
2916
2917
add 10,10,31
2918
cmpwi 31,0
2919
.long 0x10E7C508
2920
.long 0x118CC508
2921
.long 0x11ADC508
2922
.long 0x11CEC508
2923
.long 0x11EFC508
2924
2925
subi 10,10,16
2926
.long 0x10E7CD08
2927
.long 0x118CCD08
2928
.long 0x11ADCD08
2929
.long 0x11CECD08
2930
.long 0x11EFCD08
2931
vxor 17,17,31
2932
2933
.long 0x10E7D508
2934
lvsr 5,0,31
2935
.long 0x118CD508
2936
.long 0x11ADD508
2937
.long 0x11CED508
2938
.long 0x11EFD508
2939
vxor 1,18,31
2940
2941
.long 0x10E7DD08
2942
.long 0x7C005699
2943
.long 0x118CDD08
2944
.long 0x11ADDD08
2945
.long 0x11CEDD08
2946
.long 0x11EFDD08
2947
vxor 2,19,31
2948
2949
addi 7,1,32+15
2950
.long 0x10E7E508
2951
.long 0x118CE508
2952
.long 0x11ADE508
2953
.long 0x11CEE508
2954
.long 0x11EFE508
2955
lvx 24,0,7
2956
vxor 3,20,31
2957
2958
.long 0x10E7ED08
2959
2960
.long 0x118CED08
2961
.long 0x11ADED08
2962
.long 0x11CEED08
2963
.long 0x11EFED08
2964
lvx 25,3,7
2965
vxor 4,21,31
2966
2967
.long 0x10E7F508
2968
vperm 0,0,0,5
2969
.long 0x118CF508
2970
.long 0x11ADF508
2971
.long 0x11CEF508
2972
.long 0x11EFF508
2973
2974
.long 0x10E78D09
2975
.long 0x118C0D09
2976
.long 0x11AD1509
2977
.long 0x11CE1D09
2978
.long 0x11EF2509
2979
blr
2980
.long 0
2981
.byte 0,12,0x14,0,0,0,0,0
2982
2983
.align 5
2984
_aesp8_xts_decrypt6x:
2985
stwu 1,-392(1)
2986
mflr 11
2987
li 7,175
2988
li 3,191
2989
stw 11,396(1)
2990
stvx 20,7,1
2991
addi 7,7,32
2992
stvx 21,3,1
2993
addi 3,3,32
2994
stvx 22,7,1
2995
addi 7,7,32
2996
stvx 23,3,1
2997
addi 3,3,32
2998
stvx 24,7,1
2999
addi 7,7,32
3000
stvx 25,3,1
3001
addi 3,3,32
3002
stvx 26,7,1
3003
addi 7,7,32
3004
stvx 27,3,1
3005
addi 3,3,32
3006
stvx 28,7,1
3007
addi 7,7,32
3008
stvx 29,3,1
3009
addi 3,3,32
3010
stvx 30,7,1
3011
stvx 31,3,1
3012
li 0,-1
3013
stw 12,364(1)
3014
li 3,0x10
3015
stw 26,368(1)
3016
li 26,0x20
3017
stw 27,372(1)
3018
li 27,0x30
3019
stw 28,376(1)
3020
li 28,0x40
3021
stw 29,380(1)
3022
li 29,0x50
3023
stw 30,384(1)
3024
li 30,0x60
3025
stw 31,388(1)
3026
li 31,0x70
3027
mtspr 256,0
3028
3029
3030
xxlor 2, 32+10, 32+10
3031
vsldoi 10,11,10,1
3032
xxlor 1, 32+10, 32+10
3033
3034
3035
mr 31, 6
3036
bl .Lconsts
3037
lxvw4x 0, 28, 6
3038
mr 6, 31
3039
li 31,0x70
3040
3041
subi 9,9,3
3042
3043
lvx 23,0,6
3044
lvx 30,3,6
3045
addi 6,6,0x20
3046
lvx 31,0,6
3047
vperm 23,23,30,7
3048
addi 7,1,32+15
3049
mtctr 9
3050
3051
.Load_xts_dec_key:
3052
vperm 24,30,31,7
3053
lvx 30,3,6
3054
addi 6,6,0x20
3055
stvx 24,0,7
3056
vperm 25,31,30,7
3057
lvx 31,0,6
3058
stvx 25,3,7
3059
addi 7,7,0x20
3060
bdnz .Load_xts_dec_key
3061
3062
lvx 26,3,6
3063
vperm 24,30,31,7
3064
lvx 27,26,6
3065
stvx 24,0,7
3066
vperm 25,31,26,7
3067
lvx 28,27,6
3068
stvx 25,3,7
3069
addi 7,1,32+15
3070
vperm 26,26,27,7
3071
lvx 29,28,6
3072
vperm 27,27,28,7
3073
lvx 30,29,6
3074
vperm 28,28,29,7
3075
lvx 31,30,6
3076
vperm 29,29,30,7
3077
lvx 22,31,6
3078
vperm 30,30,31,7
3079
lvx 24,0,7
3080
vperm 31,31,22,7
3081
lvx 25,3,7
3082
3083
vperm 0,2,4,5
3084
subi 10,10,31
3085
vxor 17,8,23
3086
vsrab 11,8,9
3087
vaddubm 8,8,8
3088
vand 11,11,10
3089
vxor 7,0,17
3090
xxlor 32+1, 0, 0
3091
vpermxor 8, 8, 11, 1
3092
3093
.long 0x7C235699
3094
vxor 18,8,23
3095
vsrab 11,8,9
3096
vaddubm 8,8,8
3097
3098
vand 11,11,10
3099
vxor 12,1,18
3100
xxlor 32+2, 0, 0
3101
vpermxor 8, 8, 11, 2
3102
3103
.long 0x7C5A5699
3104
andi. 31,5,15
3105
vxor 19,8,23
3106
vsrab 11,8,9
3107
vaddubm 8,8,8
3108
3109
vand 11,11,10
3110
vxor 13,2,19
3111
xxlor 32+3, 0, 0
3112
vpermxor 8, 8, 11, 3
3113
3114
.long 0x7C7B5699
3115
sub 5,5,31
3116
vxor 20,8,23
3117
vsrab 11,8,9
3118
vaddubm 8,8,8
3119
3120
vand 11,11,10
3121
vxor 14,3,20
3122
xxlor 32+4, 0, 0
3123
vpermxor 8, 8, 11, 4
3124
3125
.long 0x7C9C5699
3126
subi 5,5,0x60
3127
vxor 21,8,23
3128
vsrab 11,8,9
3129
vaddubm 8,8,8
3130
3131
vand 11,11,10
3132
vxor 15,4,21
3133
xxlor 32+5, 0, 0
3134
vpermxor 8, 8, 11, 5
3135
3136
.long 0x7CBD5699
3137
addi 10,10,0x60
3138
vxor 22,8,23
3139
vsrab 11,8,9
3140
vaddubm 8,8,8
3141
3142
vand 11,11,10
3143
vxor 16,5,22
3144
xxlor 32+0, 0, 0
3145
vpermxor 8, 8, 11, 0
3146
3147
vxor 31,31,23
3148
mtctr 9
3149
b .Loop_xts_dec6x
3150
3151
.align 5
3152
.Loop_xts_dec6x:
3153
.long 0x10E7C548
3154
.long 0x118CC548
3155
.long 0x11ADC548
3156
.long 0x11CEC548
3157
.long 0x11EFC548
3158
.long 0x1210C548
3159
lvx 24,26,7
3160
addi 7,7,0x20
3161
3162
.long 0x10E7CD48
3163
.long 0x118CCD48
3164
.long 0x11ADCD48
3165
.long 0x11CECD48
3166
.long 0x11EFCD48
3167
.long 0x1210CD48
3168
lvx 25,3,7
3169
bdnz .Loop_xts_dec6x
3170
3171
xxlor 32+10, 1, 1
3172
3173
subic 5,5,96
3174
vxor 0,17,31
3175
.long 0x10E7C548
3176
.long 0x118CC548
3177
vsrab 11,8,9
3178
vxor 17,8,23
3179
vaddubm 8,8,8
3180
.long 0x11ADC548
3181
.long 0x11CEC548
3182
.long 0x11EFC548
3183
.long 0x1210C548
3184
3185
subfe. 0,0,0
3186
vand 11,11,10
3187
.long 0x10E7CD48
3188
.long 0x118CCD48
3189
xxlor 32+1, 0, 0
3190
vpermxor 8, 8, 11, 1
3191
.long 0x11ADCD48
3192
.long 0x11CECD48
3193
vxor 1,18,31
3194
vsrab 11,8,9
3195
vxor 18,8,23
3196
.long 0x11EFCD48
3197
.long 0x1210CD48
3198
3199
and 0,0,5
3200
vaddubm 8,8,8
3201
.long 0x10E7D548
3202
.long 0x118CD548
3203
vand 11,11,10
3204
.long 0x11ADD548
3205
.long 0x11CED548
3206
xxlor 32+2, 0, 0
3207
vpermxor 8, 8, 11, 2
3208
.long 0x11EFD548
3209
.long 0x1210D548
3210
3211
add 10,10,0
3212
3213
3214
3215
vxor 2,19,31
3216
vsrab 11,8,9
3217
vxor 19,8,23
3218
vaddubm 8,8,8
3219
.long 0x10E7DD48
3220
.long 0x118CDD48
3221
.long 0x11ADDD48
3222
.long 0x11CEDD48
3223
vand 11,11,10
3224
.long 0x11EFDD48
3225
.long 0x1210DD48
3226
3227
addi 7,1,32+15
3228
xxlor 32+3, 0, 0
3229
vpermxor 8, 8, 11, 3
3230
.long 0x10E7E548
3231
.long 0x118CE548
3232
vxor 3,20,31
3233
vsrab 11,8,9
3234
vxor 20,8,23
3235
.long 0x11ADE548
3236
.long 0x11CEE548
3237
vaddubm 8,8,8
3238
.long 0x11EFE548
3239
.long 0x1210E548
3240
lvx 24,0,7
3241
vand 11,11,10
3242
3243
.long 0x10E7ED48
3244
.long 0x118CED48
3245
xxlor 32+4, 0, 0
3246
vpermxor 8, 8, 11, 4
3247
.long 0x11ADED48
3248
.long 0x11CEED48
3249
vxor 4,21,31
3250
vsrab 11,8,9
3251
vxor 21,8,23
3252
.long 0x11EFED48
3253
.long 0x1210ED48
3254
lvx 25,3,7
3255
vaddubm 8,8,8
3256
3257
.long 0x10E7F548
3258
.long 0x118CF548
3259
vand 11,11,10
3260
.long 0x11ADF548
3261
.long 0x11CEF548
3262
xxlor 32+5, 0, 0
3263
vpermxor 8, 8, 11, 5
3264
.long 0x11EFF548
3265
.long 0x1210F548
3266
vxor 5,22,31
3267
vsrab 11,8,9
3268
vxor 22,8,23
3269
3270
.long 0x10E70549
3271
.long 0x7C005699
3272
vaddubm 8,8,8
3273
.long 0x118C0D49
3274
.long 0x7C235699
3275
.long 0x11AD1549
3276
3277
.long 0x7C5A5699
3278
vand 11,11,10
3279
.long 0x11CE1D49
3280
3281
.long 0x7C7B5699
3282
.long 0x11EF2549
3283
3284
.long 0x7C9C5699
3285
xxlor 10, 32+0, 32+0
3286
xxlor 32+0, 0, 0
3287
vpermxor 8, 8, 11, 0
3288
xxlor 32+0, 10, 10
3289
.long 0x12102D49
3290
3291
.long 0x7CBD5699
3292
addi 10,10,0x60
3293
3294
3295
3296
3297
3298
.long 0x7CE02799
3299
vxor 7,0,17
3300
3301
.long 0x7D832799
3302
vxor 12,1,18
3303
3304
.long 0x7DBA2799
3305
vxor 13,2,19
3306
3307
.long 0x7DDB2799
3308
vxor 14,3,20
3309
3310
.long 0x7DFC2799
3311
vxor 15,4,21
3312
.long 0x7E1D2799
3313
vxor 16,5,22
3314
addi 4,4,0x60
3315
3316
mtctr 9
3317
beq .Loop_xts_dec6x
3318
3319
xxlor 32+10, 2, 2
3320
3321
addic. 5,5,0x60
3322
beq .Lxts_dec6x_zero
3323
cmpwi 5,0x20
3324
blt .Lxts_dec6x_one
3325
nop
3326
beq .Lxts_dec6x_two
3327
cmpwi 5,0x40
3328
blt .Lxts_dec6x_three
3329
nop
3330
beq .Lxts_dec6x_four
3331
3332
.Lxts_dec6x_five:
3333
vxor 7,1,17
3334
vxor 12,2,18
3335
vxor 13,3,19
3336
vxor 14,4,20
3337
vxor 15,5,21
3338
3339
bl _aesp8_xts_dec5x
3340
3341
3342
vor 17,22,22
3343
vxor 18,8,23
3344
3345
.long 0x7CE02799
3346
vxor 7,0,18
3347
3348
.long 0x7D832799
3349
3350
.long 0x7DBA2799
3351
3352
.long 0x7DDB2799
3353
.long 0x7DFC2799
3354
addi 4,4,0x50
3355
bne .Lxts_dec6x_steal
3356
b .Lxts_dec6x_done
3357
3358
.align 4
3359
.Lxts_dec6x_four:
3360
vxor 7,2,17
3361
vxor 12,3,18
3362
vxor 13,4,19
3363
vxor 14,5,20
3364
vxor 15,15,15
3365
3366
bl _aesp8_xts_dec5x
3367
3368
3369
vor 17,21,21
3370
vor 18,22,22
3371
3372
.long 0x7CE02799
3373
vxor 7,0,22
3374
3375
.long 0x7D832799
3376
3377
.long 0x7DBA2799
3378
.long 0x7DDB2799
3379
addi 4,4,0x40
3380
bne .Lxts_dec6x_steal
3381
b .Lxts_dec6x_done
3382
3383
.align 4
3384
.Lxts_dec6x_three:
3385
vxor 7,3,17
3386
vxor 12,4,18
3387
vxor 13,5,19
3388
vxor 14,14,14
3389
vxor 15,15,15
3390
3391
bl _aesp8_xts_dec5x
3392
3393
3394
vor 17,20,20
3395
vor 18,21,21
3396
3397
.long 0x7CE02799
3398
vxor 7,0,21
3399
3400
.long 0x7D832799
3401
.long 0x7DBA2799
3402
addi 4,4,0x30
3403
bne .Lxts_dec6x_steal
3404
b .Lxts_dec6x_done
3405
3406
.align 4
3407
.Lxts_dec6x_two:
3408
vxor 7,4,17
3409
vxor 12,5,18
3410
vxor 13,13,13
3411
vxor 14,14,14
3412
vxor 15,15,15
3413
3414
bl _aesp8_xts_dec5x
3415
3416
3417
vor 17,19,19
3418
vor 18,20,20
3419
3420
.long 0x7CE02799
3421
vxor 7,0,20
3422
.long 0x7D832799
3423
addi 4,4,0x20
3424
bne .Lxts_dec6x_steal
3425
b .Lxts_dec6x_done
3426
3427
.align 4
3428
.Lxts_dec6x_one:
3429
vxor 7,5,17
3430
nop
3431
.Loop_xts_dec1x:
3432
.long 0x10E7C548
3433
lvx 24,26,7
3434
addi 7,7,0x20
3435
3436
.long 0x10E7CD48
3437
lvx 25,3,7
3438
bdnz .Loop_xts_dec1x
3439
3440
subi 0,31,1
3441
.long 0x10E7C548
3442
3443
andi. 0,0,16
3444
cmpwi 31,0
3445
.long 0x10E7CD48
3446
3447
sub 10,10,0
3448
.long 0x10E7D548
3449
3450
.long 0x7C005699
3451
.long 0x10E7DD48
3452
3453
addi 7,1,32+15
3454
.long 0x10E7E548
3455
lvx 24,0,7
3456
3457
.long 0x10E7ED48
3458
lvx 25,3,7
3459
vxor 17,17,31
3460
3461
3462
.long 0x10E7F548
3463
3464
mtctr 9
3465
.long 0x10E78D49
3466
3467
vor 17,18,18
3468
vor 18,19,19
3469
3470
.long 0x7CE02799
3471
addi 4,4,0x10
3472
vxor 7,0,19
3473
bne .Lxts_dec6x_steal
3474
b .Lxts_dec6x_done
3475
3476
.align 4
3477
.Lxts_dec6x_zero:
3478
cmpwi 31,0
3479
beq .Lxts_dec6x_done
3480
3481
.long 0x7C005699
3482
3483
vxor 7,0,18
3484
.Lxts_dec6x_steal:
3485
.long 0x10E7C548
3486
lvx 24,26,7
3487
addi 7,7,0x20
3488
3489
.long 0x10E7CD48
3490
lvx 25,3,7
3491
bdnz .Lxts_dec6x_steal
3492
3493
add 10,10,31
3494
.long 0x10E7C548
3495
3496
cmpwi 31,0
3497
.long 0x10E7CD48
3498
3499
.long 0x7C005699
3500
.long 0x10E7D548
3501
3502
lvsr 5,0,31
3503
.long 0x10E7DD48
3504
3505
addi 7,1,32+15
3506
.long 0x10E7E548
3507
lvx 24,0,7
3508
3509
.long 0x10E7ED48
3510
lvx 25,3,7
3511
vxor 18,18,31
3512
3513
3514
.long 0x10E7F548
3515
3516
vperm 0,0,0,5
3517
.long 0x11679549
3518
3519
3520
3521
.long 0x7D602799
3522
3523
vxor 7,7,7
3524
vspltisb 12,-1
3525
vperm 7,7,12,5
3526
vsel 7,0,11,7
3527
vxor 7,7,17
3528
3529
subi 30,4,1
3530
mtctr 31
3531
.Loop_xts_dec6x_steal:
3532
lbzu 0,1(30)
3533
stb 0,16(30)
3534
bdnz .Loop_xts_dec6x_steal
3535
3536
li 31,0
3537
mtctr 9
3538
b .Loop_xts_dec1x
3539
3540
.align 4
3541
.Lxts_dec6x_done:
3542
cmplwi 8,0
3543
beq .Lxts_dec6x_ret
3544
3545
vxor 8,17,23
3546
3547
.long 0x7D004799
3548
3549
.Lxts_dec6x_ret:
3550
mtlr 11
3551
li 10,47
3552
li 11,63
3553
stvx 9,10,1
3554
addi 10,10,32
3555
stvx 9,11,1
3556
addi 11,11,32
3557
stvx 9,10,1
3558
addi 10,10,32
3559
stvx 9,11,1
3560
addi 11,11,32
3561
stvx 9,10,1
3562
addi 10,10,32
3563
stvx 9,11,1
3564
addi 11,11,32
3565
stvx 9,10,1
3566
addi 10,10,32
3567
stvx 9,11,1
3568
addi 11,11,32
3569
3570
mtspr 256,12
3571
lvx 20,10,1
3572
addi 10,10,32
3573
lvx 21,11,1
3574
addi 11,11,32
3575
lvx 22,10,1
3576
addi 10,10,32
3577
lvx 23,11,1
3578
addi 11,11,32
3579
lvx 24,10,1
3580
addi 10,10,32
3581
lvx 25,11,1
3582
addi 11,11,32
3583
lvx 26,10,1
3584
addi 10,10,32
3585
lvx 27,11,1
3586
addi 11,11,32
3587
lvx 28,10,1
3588
addi 10,10,32
3589
lvx 29,11,1
3590
addi 11,11,32
3591
lvx 30,10,1
3592
lvx 31,11,1
3593
lwz 26,368(1)
3594
lwz 27,372(1)
3595
lwz 28,376(1)
3596
lwz 29,380(1)
3597
lwz 30,384(1)
3598
lwz 31,388(1)
3599
addi 1,1,392
3600
blr
3601
.long 0
3602
.byte 0,12,0x04,1,0x80,6,6,0
3603
.long 0
3604
3605
.align 5
3606
_aesp8_xts_dec5x:
3607
.long 0x10E7C548
3608
.long 0x118CC548
3609
.long 0x11ADC548
3610
.long 0x11CEC548
3611
.long 0x11EFC548
3612
lvx 24,26,7
3613
addi 7,7,0x20
3614
3615
.long 0x10E7CD48
3616
.long 0x118CCD48
3617
.long 0x11ADCD48
3618
.long 0x11CECD48
3619
.long 0x11EFCD48
3620
lvx 25,3,7
3621
bdnz _aesp8_xts_dec5x
3622
3623
subi 0,31,1
3624
.long 0x10E7C548
3625
.long 0x118CC548
3626
.long 0x11ADC548
3627
.long 0x11CEC548
3628
.long 0x11EFC548
3629
3630
andi. 0,0,16
3631
cmpwi 31,0
3632
.long 0x10E7CD48
3633
.long 0x118CCD48
3634
.long 0x11ADCD48
3635
.long 0x11CECD48
3636
.long 0x11EFCD48
3637
vxor 17,17,31
3638
3639
sub 10,10,0
3640
.long 0x10E7D548
3641
.long 0x118CD548
3642
.long 0x11ADD548
3643
.long 0x11CED548
3644
.long 0x11EFD548
3645
vxor 1,18,31
3646
3647
.long 0x10E7DD48
3648
.long 0x7C005699
3649
.long 0x118CDD48
3650
.long 0x11ADDD48
3651
.long 0x11CEDD48
3652
.long 0x11EFDD48
3653
vxor 2,19,31
3654
3655
addi 7,1,32+15
3656
.long 0x10E7E548
3657
.long 0x118CE548
3658
.long 0x11ADE548
3659
.long 0x11CEE548
3660
.long 0x11EFE548
3661
lvx 24,0,7
3662
vxor 3,20,31
3663
3664
.long 0x10E7ED48
3665
3666
.long 0x118CED48
3667
.long 0x11ADED48
3668
.long 0x11CEED48
3669
.long 0x11EFED48
3670
lvx 25,3,7
3671
vxor 4,21,31
3672
3673
.long 0x10E7F548
3674
.long 0x118CF548
3675
.long 0x11ADF548
3676
.long 0x11CEF548
3677
.long 0x11EFF548
3678
3679
.long 0x10E78D49
3680
.long 0x118C0D49
3681
.long 0x11AD1549
3682
.long 0x11CE1D49
3683
.long 0x11EF2549
3684
mtctr 9
3685
blr
3686
.long 0
3687
.byte 0,12,0x14,0,0,0,0,0
3688
3689