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