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