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