xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S (revision e89934bbf778a6d6d6894877c4da59d0c7835b0f)
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.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,32,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.type	aes_p8_set_encrypt_key,@function
25.section	".opd","aw"
26.align	3
27aes_p8_set_encrypt_key:
28.quad	.aes_p8_set_encrypt_key,.TOC.@tocbase,0
29.previous
30
31.align	5
32.aes_p8_set_encrypt_key:
33.Lset_encrypt_key:
34	mflr	11
35	std	11,16(1)
36
37	li	6,-1
38	cmpldi	3,0
39	beq-	.Lenc_key_abort
40	cmpldi	5,0
41	beq-	.Lenc_key_abort
42	li	6,-2
43	cmpwi	4,128
44	blt-	.Lenc_key_abort
45	cmpwi	4,256
46	bgt-	.Lenc_key_abort
47	andi.	0,4,0x3f
48	bne-	.Lenc_key_abort
49
50	lis	0,0xfff0
51	mfspr	12,256
52	mtspr	256,0
53
54	bl	.Lconsts
55	mtlr	11
56
57	neg	9,3
58	lvx	1,0,3
59	addi	3,3,15
60	lvsr	3,0,9
61	li	8,0x20
62	cmpwi	4,192
63	lvx	2,0,3
64
65	lvx	4,0,6
66
67	lvx	5,8,6
68	addi	6,6,0x10
69	vperm	1,1,2,3
70	li	7,8
71	vxor	0,0,0
72	mtctr	7
73
74	lvsr	8,0,5
75	vspltisb	9,-1
76	lvx	10,0,5
77	vperm	9,0,9,8
78
79	blt	.Loop128
80	addi	3,3,8
81	beq	.L192
82	addi	3,3,8
83	b	.L256
84
85.align	4
86.Loop128:
87	vperm	3,1,1,5
88	vsldoi	6,0,1,12
89	vperm	11,1,1,8
90	vsel	7,10,11,9
91	vor	10,11,11
92.long	0x10632509
93	stvx	7,0,5
94	addi	5,5,16
95
96	vxor	1,1,6
97	vsldoi	6,0,6,12
98	vxor	1,1,6
99	vsldoi	6,0,6,12
100	vxor	1,1,6
101	vadduwm	4,4,4
102	vxor	1,1,3
103	bc	16,0,.Loop128
104
105	lvx	4,0,6
106
107	vperm	3,1,1,5
108	vsldoi	6,0,1,12
109	vperm	11,1,1,8
110	vsel	7,10,11,9
111	vor	10,11,11
112.long	0x10632509
113	stvx	7,0,5
114	addi	5,5,16
115
116	vxor	1,1,6
117	vsldoi	6,0,6,12
118	vxor	1,1,6
119	vsldoi	6,0,6,12
120	vxor	1,1,6
121	vadduwm	4,4,4
122	vxor	1,1,3
123
124	vperm	3,1,1,5
125	vsldoi	6,0,1,12
126	vperm	11,1,1,8
127	vsel	7,10,11,9
128	vor	10,11,11
129.long	0x10632509
130	stvx	7,0,5
131	addi	5,5,16
132
133	vxor	1,1,6
134	vsldoi	6,0,6,12
135	vxor	1,1,6
136	vsldoi	6,0,6,12
137	vxor	1,1,6
138	vxor	1,1,3
139	vperm	11,1,1,8
140	vsel	7,10,11,9
141	vor	10,11,11
142	stvx	7,0,5
143
144	addi	3,5,15
145	addi	5,5,0x50
146
147	li	8,10
148	b	.Ldone
149
150.align	4
151.L192:
152	lvx	6,0,3
153	li	7,4
154	vperm	11,1,1,8
155	vsel	7,10,11,9
156	vor	10,11,11
157	stvx	7,0,5
158	addi	5,5,16
159	vperm	2,2,6,3
160	vspltisb	3,8
161	mtctr	7
162	vsububm	5,5,3
163
164.Loop192:
165	vperm	3,2,2,5
166	vsldoi	6,0,1,12
167.long	0x10632509
168
169	vxor	1,1,6
170	vsldoi	6,0,6,12
171	vxor	1,1,6
172	vsldoi	6,0,6,12
173	vxor	1,1,6
174
175	vsldoi	7,0,2,8
176	vspltw	6,1,3
177	vxor	6,6,2
178	vsldoi	2,0,2,12
179	vadduwm	4,4,4
180	vxor	2,2,6
181	vxor	1,1,3
182	vxor	2,2,3
183	vsldoi	7,7,1,8
184
185	vperm	3,2,2,5
186	vsldoi	6,0,1,12
187	vperm	11,7,7,8
188	vsel	7,10,11,9
189	vor	10,11,11
190.long	0x10632509
191	stvx	7,0,5
192	addi	5,5,16
193
194	vsldoi	7,1,2,8
195	vxor	1,1,6
196	vsldoi	6,0,6,12
197	vperm	11,7,7,8
198	vsel	7,10,11,9
199	vor	10,11,11
200	vxor	1,1,6
201	vsldoi	6,0,6,12
202	vxor	1,1,6
203	stvx	7,0,5
204	addi	5,5,16
205
206	vspltw	6,1,3
207	vxor	6,6,2
208	vsldoi	2,0,2,12
209	vadduwm	4,4,4
210	vxor	2,2,6
211	vxor	1,1,3
212	vxor	2,2,3
213	vperm	11,1,1,8
214	vsel	7,10,11,9
215	vor	10,11,11
216	stvx	7,0,5
217	addi	3,5,15
218	addi	5,5,16
219	bc	16,0,.Loop192
220
221	li	8,12
222	addi	5,5,0x20
223	b	.Ldone
224
225.align	4
226.L256:
227	lvx	6,0,3
228	li	7,7
229	li	8,14
230	vperm	11,1,1,8
231	vsel	7,10,11,9
232	vor	10,11,11
233	stvx	7,0,5
234	addi	5,5,16
235	vperm	2,2,6,3
236	mtctr	7
237
238.Loop256:
239	vperm	3,2,2,5
240	vsldoi	6,0,1,12
241	vperm	11,2,2,8
242	vsel	7,10,11,9
243	vor	10,11,11
244.long	0x10632509
245	stvx	7,0,5
246	addi	5,5,16
247
248	vxor	1,1,6
249	vsldoi	6,0,6,12
250	vxor	1,1,6
251	vsldoi	6,0,6,12
252	vxor	1,1,6
253	vadduwm	4,4,4
254	vxor	1,1,3
255	vperm	11,1,1,8
256	vsel	7,10,11,9
257	vor	10,11,11
258	stvx	7,0,5
259	addi	3,5,15
260	addi	5,5,16
261	bdz	.Ldone
262
263	vspltw	3,1,3
264	vsldoi	6,0,2,12
265.long	0x106305C8
266
267	vxor	2,2,6
268	vsldoi	6,0,6,12
269	vxor	2,2,6
270	vsldoi	6,0,6,12
271	vxor	2,2,6
272
273	vxor	2,2,3
274	b	.Loop256
275
276.align	4
277.Ldone:
278	lvx	2,0,3
279	vsel	2,10,2,9
280	stvx	2,0,3
281	li	6,0
282	mtspr	256,12
283	stw	8,0(5)
284
285.Lenc_key_abort:
286	mr	3,6
287	blr
288.long	0
289.byte	0,12,0x14,1,0,0,3,0
290.long	0
291
292
293.globl	aes_p8_set_decrypt_key
294.type	aes_p8_set_decrypt_key,@function
295.section	".opd","aw"
296.align	3
297aes_p8_set_decrypt_key:
298.quad	.aes_p8_set_decrypt_key,.TOC.@tocbase,0
299.previous
300
301.align	5
302.aes_p8_set_decrypt_key:
303	stdu	1,-64(1)
304	mflr	10
305	std	10,64+16(1)
306	bl	.Lset_encrypt_key
307	mtlr	10
308
309	cmpwi	3,0
310	bne-	.Ldec_key_abort
311
312	slwi	7,8,4
313	subi	3,5,240
314	srwi	8,8,1
315	add	5,3,7
316	mtctr	8
317
318.Ldeckey:
319	lwz	0, 0(3)
320	lwz	6, 4(3)
321	lwz	7, 8(3)
322	lwz	8, 12(3)
323	addi	3,3,16
324	lwz	9, 0(5)
325	lwz	10,4(5)
326	lwz	11,8(5)
327	lwz	12,12(5)
328	stw	0, 0(5)
329	stw	6, 4(5)
330	stw	7, 8(5)
331	stw	8, 12(5)
332	subi	5,5,16
333	stw	9, -16(3)
334	stw	10,-12(3)
335	stw	11,-8(3)
336	stw	12,-4(3)
337	bc	16,0,.Ldeckey
338
339	xor	3,3,3
340.Ldec_key_abort:
341	addi	1,1,64
342	blr
343.long	0
344.byte	0,12,4,1,0x80,0,3,0
345.long	0
346
347.globl	aes_p8_encrypt
348.type	aes_p8_encrypt,@function
349.section	".opd","aw"
350.align	3
351aes_p8_encrypt:
352.quad	.aes_p8_encrypt,.TOC.@tocbase,0
353.previous
354
355.align	5
356.aes_p8_encrypt:
357	lwz	6,240(5)
358	lis	0,0xfc00
359	mfspr	12,256
360	li	7,15
361	mtspr	256,0
362
363	lvx	0,0,3
364	neg	11,4
365	lvx	1,7,3
366	lvsl	2,0,3
367
368	lvsl	3,0,11
369
370	li	7,16
371	vperm	0,0,1,2
372	lvx	1,0,5
373	lvsl	5,0,5
374	srwi	6,6,1
375	lvx	2,7,5
376	addi	7,7,16
377	subi	6,6,1
378	vperm	1,1,2,5
379
380	vxor	0,0,1
381	lvx	1,7,5
382	addi	7,7,16
383	mtctr	6
384
385.Loop_enc:
386	vperm	2,2,1,5
387.long	0x10001508
388	lvx	2,7,5
389	addi	7,7,16
390	vperm	1,1,2,5
391.long	0x10000D08
392	lvx	1,7,5
393	addi	7,7,16
394	bc	16,0,.Loop_enc
395
396	vperm	2,2,1,5
397.long	0x10001508
398	lvx	2,7,5
399	vperm	1,1,2,5
400.long	0x10000D09
401
402	vspltisb	2,-1
403	vxor	1,1,1
404	li	7,15
405	vperm	2,1,2,3
406
407	lvx	1,0,4
408	vperm	0,0,0,3
409	vsel	1,1,0,2
410	lvx	4,7,4
411	stvx	1,0,4
412	vsel	0,0,4,2
413	stvx	0,7,4
414
415	mtspr	256,12
416	blr
417.long	0
418.byte	0,12,0x14,0,0,0,3,0
419.long	0
420
421.globl	aes_p8_decrypt
422.type	aes_p8_decrypt,@function
423.section	".opd","aw"
424.align	3
425aes_p8_decrypt:
426.quad	.aes_p8_decrypt,.TOC.@tocbase,0
427.previous
428
429.align	5
430.aes_p8_decrypt:
431	lwz	6,240(5)
432	lis	0,0xfc00
433	mfspr	12,256
434	li	7,15
435	mtspr	256,0
436
437	lvx	0,0,3
438	neg	11,4
439	lvx	1,7,3
440	lvsl	2,0,3
441
442	lvsl	3,0,11
443
444	li	7,16
445	vperm	0,0,1,2
446	lvx	1,0,5
447	lvsl	5,0,5
448	srwi	6,6,1
449	lvx	2,7,5
450	addi	7,7,16
451	subi	6,6,1
452	vperm	1,1,2,5
453
454	vxor	0,0,1
455	lvx	1,7,5
456	addi	7,7,16
457	mtctr	6
458
459.Loop_dec:
460	vperm	2,2,1,5
461.long	0x10001548
462	lvx	2,7,5
463	addi	7,7,16
464	vperm	1,1,2,5
465.long	0x10000D48
466	lvx	1,7,5
467	addi	7,7,16
468	bc	16,0,.Loop_dec
469
470	vperm	2,2,1,5
471.long	0x10001548
472	lvx	2,7,5
473	vperm	1,1,2,5
474.long	0x10000D49
475
476	vspltisb	2,-1
477	vxor	1,1,1
478	li	7,15
479	vperm	2,1,2,3
480
481	lvx	1,0,4
482	vperm	0,0,0,3
483	vsel	1,1,0,2
484	lvx	4,7,4
485	stvx	1,0,4
486	vsel	0,0,4,2
487	stvx	0,7,4
488
489	mtspr	256,12
490	blr
491.long	0
492.byte	0,12,0x14,0,0,0,3,0
493.long	0
494
495.globl	aes_p8_cbc_encrypt
496.type	aes_p8_cbc_encrypt,@function
497.section	".opd","aw"
498.align	3
499aes_p8_cbc_encrypt:
500.quad	.aes_p8_cbc_encrypt,.TOC.@tocbase,0
501.previous
502
503.align	5
504.aes_p8_cbc_encrypt:
505	cmpldi	5,16
506	bltlr
507
508	cmpwi	8,0
509	lis	0,0xffe0
510	mfspr	12,256
511	mtspr	256,0
512
513	li	10,15
514	vxor	0,0,0
515
516
517	lvx	4,0,7
518	lvsl	6,0,7
519	lvx	5,10,7
520
521	vperm	4,4,5,6
522
523	neg	11,3
524	lvsl	10,0,6
525	lwz	9,240(6)
526
527	lvsr	6,0,11
528	lvx	5,0,3
529	addi	3,3,15
530
531
532	lvsr	8,0,4
533	vspltisb	9,-1
534	lvx	7,0,4
535	vperm	9,0,9,8
536
537
538	srwi	9,9,1
539	li	10,16
540	subi	9,9,1
541	beq	.Lcbc_dec
542
543.Lcbc_enc:
544	vor	2,5,5
545	lvx	5,0,3
546	addi	3,3,16
547	mtctr	9
548	subi	5,5,16
549
550	lvx	0,0,6
551	vperm	2,2,5,6
552	lvx	1,10,6
553	addi	10,10,16
554	vperm	0,0,1,10
555	vxor	2,2,0
556	lvx	0,10,6
557	addi	10,10,16
558	vxor	2,2,4
559
560.Loop_cbc_enc:
561	vperm	1,1,0,10
562.long	0x10420D08
563	lvx	1,10,6
564	addi	10,10,16
565	vperm	0,0,1,10
566.long	0x10420508
567	lvx	0,10,6
568	addi	10,10,16
569	bc	16,0,.Loop_cbc_enc
570
571	vperm	1,1,0,10
572.long	0x10420D08
573	lvx	1,10,6
574	li	10,16
575	vperm	0,0,1,10
576.long	0x10820509
577	cmpldi	5,16
578
579	vperm	3,4,4,8
580	vsel	2,7,3,9
581	vor	7,3,3
582	stvx	2,0,4
583	addi	4,4,16
584	bge	.Lcbc_enc
585
586	b	.Lcbc_done
587
588.align	4
589.Lcbc_dec:
590	cmpldi	5,128
591	bge	_aesp8_cbc_decrypt8x
592	vor	3,5,5
593	lvx	5,0,3
594	addi	3,3,16
595	mtctr	9
596	subi	5,5,16
597
598	lvx	0,0,6
599	vperm	3,3,5,6
600	lvx	1,10,6
601	addi	10,10,16
602	vperm	0,0,1,10
603	vxor	2,3,0
604	lvx	0,10,6
605	addi	10,10,16
606
607.Loop_cbc_dec:
608	vperm	1,1,0,10
609.long	0x10420D48
610	lvx	1,10,6
611	addi	10,10,16
612	vperm	0,0,1,10
613.long	0x10420548
614	lvx	0,10,6
615	addi	10,10,16
616	bc	16,0,.Loop_cbc_dec
617
618	vperm	1,1,0,10
619.long	0x10420D48
620	lvx	1,10,6
621	li	10,16
622	vperm	0,0,1,10
623.long	0x10420549
624	cmpldi	5,16
625
626	vxor	2,2,4
627	vor	4,3,3
628	vperm	3,2,2,8
629	vsel	2,7,3,9
630	vor	7,3,3
631	stvx	2,0,4
632	addi	4,4,16
633	bge	.Lcbc_dec
634
635.Lcbc_done:
636	addi	4,4,-1
637	lvx	2,0,4
638	vsel	2,7,2,9
639	stvx	2,0,4
640
641	neg	8,7
642	li	10,15
643	vxor	0,0,0
644	vspltisb	9,-1
645
646	lvsl	8,0,8
647	vperm	9,0,9,8
648
649	lvx	7,0,7
650	vperm	4,4,4,8
651	vsel	2,7,4,9
652	lvx	5,10,7
653	stvx	2,0,7
654	vsel	2,4,5,9
655	stvx	2,10,7
656
657	mtspr	256,12
658	blr
659.long	0
660.byte	0,12,0x14,0,0,0,6,0
661.long	0
662.align	5
663_aesp8_cbc_decrypt8x:
664	stdu	1,-448(1)
665	li	10,207
666	li	11,223
667	stvx	20,10,1
668	addi	10,10,32
669	stvx	21,11,1
670	addi	11,11,32
671	stvx	22,10,1
672	addi	10,10,32
673	stvx	23,11,1
674	addi	11,11,32
675	stvx	24,10,1
676	addi	10,10,32
677	stvx	25,11,1
678	addi	11,11,32
679	stvx	26,10,1
680	addi	10,10,32
681	stvx	27,11,1
682	addi	11,11,32
683	stvx	28,10,1
684	addi	10,10,32
685	stvx	29,11,1
686	addi	11,11,32
687	stvx	30,10,1
688	stvx	31,11,1
689	li	0,-1
690	stw	12,396(1)
691	li	8,0x10
692	std	26,400(1)
693	li	26,0x20
694	std	27,408(1)
695	li	27,0x30
696	std	28,416(1)
697	li	28,0x40
698	std	29,424(1)
699	li	29,0x50
700	std	30,432(1)
701	li	30,0x60
702	std	31,440(1)
703	li	31,0x70
704	mtspr	256,0
705
706	subi	9,9,3
707	subi	5,5,128
708
709	lvx	23,0,6
710	lvx	30,8,6
711	addi	6,6,0x20
712	lvx	31,0,6
713	vperm	23,23,30,10
714	addi	11,1,64+15
715	mtctr	9
716
717.Load_cbc_dec_key:
718	vperm	24,30,31,10
719	lvx	30,8,6
720	addi	6,6,0x20
721	stvx	24,0,11
722	vperm	25,31,30,10
723	lvx	31,0,6
724	stvx	25,8,11
725	addi	11,11,0x20
726	bc	16,0,.Load_cbc_dec_key
727
728	lvx	26,8,6
729	vperm	24,30,31,10
730	lvx	27,26,6
731	stvx	24,0,11
732	vperm	25,31,26,10
733	lvx	28,27,6
734	stvx	25,8,11
735	addi	11,1,64+15
736	vperm	26,26,27,10
737	lvx	29,28,6
738	vperm	27,27,28,10
739	lvx	30,29,6
740	vperm	28,28,29,10
741	lvx	31,30,6
742	vperm	29,29,30,10
743	lvx	14,31,6
744	vperm	30,30,31,10
745	lvx	24,0,11
746	vperm	31,31,14,10
747	lvx	25,8,11
748
749
750
751	subi	3,3,15
752
753
754.long	0x7C001E99
755
756
757.long	0x7C281E99
758
759.long	0x7C5A1E99
760
761.long	0x7C7B1E99
762
763.long	0x7D5C1E99
764
765	vxor	14,0,23
766.long	0x7D7D1E99
767
768	vxor	15,1,23
769.long	0x7D9E1E99
770
771	vxor	16,2,23
772.long	0x7DBF1E99
773	addi	3,3,0x80
774
775	vxor	17,3,23
776
777	vxor	18,10,23
778
779	vxor	19,11,23
780	vxor	20,12,23
781	vxor	21,13,23
782
783	mtctr	9
784	b	.Loop_cbc_dec8x
785.align	5
786.Loop_cbc_dec8x:
787.long	0x11CEC548
788.long	0x11EFC548
789.long	0x1210C548
790.long	0x1231C548
791.long	0x1252C548
792.long	0x1273C548
793.long	0x1294C548
794.long	0x12B5C548
795	lvx	24,26,11
796	addi	11,11,0x20
797
798.long	0x11CECD48
799.long	0x11EFCD48
800.long	0x1210CD48
801.long	0x1231CD48
802.long	0x1252CD48
803.long	0x1273CD48
804.long	0x1294CD48
805.long	0x12B5CD48
806	lvx	25,8,11
807	bc	16,0,.Loop_cbc_dec8x
808
809	subic	5,5,128
810.long	0x11CEC548
811.long	0x11EFC548
812.long	0x1210C548
813.long	0x1231C548
814.long	0x1252C548
815.long	0x1273C548
816.long	0x1294C548
817.long	0x12B5C548
818
819	subfe.	0,0,0
820.long	0x11CECD48
821.long	0x11EFCD48
822.long	0x1210CD48
823.long	0x1231CD48
824.long	0x1252CD48
825.long	0x1273CD48
826.long	0x1294CD48
827.long	0x12B5CD48
828
829	and	0,0,5
830.long	0x11CED548
831.long	0x11EFD548
832.long	0x1210D548
833.long	0x1231D548
834.long	0x1252D548
835.long	0x1273D548
836.long	0x1294D548
837.long	0x12B5D548
838
839	add	3,3,0
840
841
842
843.long	0x11CEDD48
844.long	0x11EFDD48
845.long	0x1210DD48
846.long	0x1231DD48
847.long	0x1252DD48
848.long	0x1273DD48
849.long	0x1294DD48
850.long	0x12B5DD48
851
852	addi	11,1,64+15
853.long	0x11CEE548
854.long	0x11EFE548
855.long	0x1210E548
856.long	0x1231E548
857.long	0x1252E548
858.long	0x1273E548
859.long	0x1294E548
860.long	0x12B5E548
861	lvx	24,0,11
862
863.long	0x11CEED48
864.long	0x11EFED48
865.long	0x1210ED48
866.long	0x1231ED48
867.long	0x1252ED48
868.long	0x1273ED48
869.long	0x1294ED48
870.long	0x12B5ED48
871	lvx	25,8,11
872
873.long	0x11CEF548
874	vxor	4,4,31
875.long	0x11EFF548
876	vxor	0,0,31
877.long	0x1210F548
878	vxor	1,1,31
879.long	0x1231F548
880	vxor	2,2,31
881.long	0x1252F548
882	vxor	3,3,31
883.long	0x1273F548
884	vxor	10,10,31
885.long	0x1294F548
886	vxor	11,11,31
887.long	0x12B5F548
888	vxor	12,12,31
889
890.long	0x11CE2549
891.long	0x11EF0549
892.long	0x7C001E99
893.long	0x12100D49
894.long	0x7C281E99
895.long	0x12311549
896
897.long	0x7C5A1E99
898.long	0x12521D49
899
900.long	0x7C7B1E99
901.long	0x12735549
902
903.long	0x7D5C1E99
904.long	0x12945D49
905
906.long	0x7D7D1E99
907.long	0x12B56549
908
909.long	0x7D9E1E99
910	vor	4,13,13
911
912.long	0x7DBF1E99
913	addi	3,3,0x80
914
915
916
917.long	0x7DC02799
918
919	vxor	14,0,23
920
921.long	0x7DE82799
922
923	vxor	15,1,23
924
925.long	0x7E1A2799
926	vxor	16,2,23
927
928.long	0x7E3B2799
929	vxor	17,3,23
930
931.long	0x7E5C2799
932	vxor	18,10,23
933
934.long	0x7E7D2799
935	vxor	19,11,23
936
937.long	0x7E9E2799
938	vxor	20,12,23
939.long	0x7EBF2799
940	addi	4,4,0x80
941	vxor	21,13,23
942
943	mtctr	9
944	beq	.Loop_cbc_dec8x
945
946	addic.	5,5,128
947	beq	.Lcbc_dec8x_done
948	nop
949	nop
950
951.Loop_cbc_dec8x_tail:
952.long	0x11EFC548
953.long	0x1210C548
954.long	0x1231C548
955.long	0x1252C548
956.long	0x1273C548
957.long	0x1294C548
958.long	0x12B5C548
959	lvx	24,26,11
960	addi	11,11,0x20
961
962.long	0x11EFCD48
963.long	0x1210CD48
964.long	0x1231CD48
965.long	0x1252CD48
966.long	0x1273CD48
967.long	0x1294CD48
968.long	0x12B5CD48
969	lvx	25,8,11
970	bc	16,0,.Loop_cbc_dec8x_tail
971
972.long	0x11EFC548
973.long	0x1210C548
974.long	0x1231C548
975.long	0x1252C548
976.long	0x1273C548
977.long	0x1294C548
978.long	0x12B5C548
979
980.long	0x11EFCD48
981.long	0x1210CD48
982.long	0x1231CD48
983.long	0x1252CD48
984.long	0x1273CD48
985.long	0x1294CD48
986.long	0x12B5CD48
987
988.long	0x11EFD548
989.long	0x1210D548
990.long	0x1231D548
991.long	0x1252D548
992.long	0x1273D548
993.long	0x1294D548
994.long	0x12B5D548
995
996.long	0x11EFDD48
997.long	0x1210DD48
998.long	0x1231DD48
999.long	0x1252DD48
1000.long	0x1273DD48
1001.long	0x1294DD48
1002.long	0x12B5DD48
1003
1004.long	0x11EFE548
1005.long	0x1210E548
1006.long	0x1231E548
1007.long	0x1252E548
1008.long	0x1273E548
1009.long	0x1294E548
1010.long	0x12B5E548
1011
1012.long	0x11EFED48
1013.long	0x1210ED48
1014.long	0x1231ED48
1015.long	0x1252ED48
1016.long	0x1273ED48
1017.long	0x1294ED48
1018.long	0x12B5ED48
1019
1020.long	0x11EFF548
1021	vxor	4,4,31
1022.long	0x1210F548
1023	vxor	1,1,31
1024.long	0x1231F548
1025	vxor	2,2,31
1026.long	0x1252F548
1027	vxor	3,3,31
1028.long	0x1273F548
1029	vxor	10,10,31
1030.long	0x1294F548
1031	vxor	11,11,31
1032.long	0x12B5F548
1033	vxor	12,12,31
1034
1035	cmplwi	5,32
1036	blt	.Lcbc_dec8x_one
1037	nop
1038	beq	.Lcbc_dec8x_two
1039	cmplwi	5,64
1040	blt	.Lcbc_dec8x_three
1041	nop
1042	beq	.Lcbc_dec8x_four
1043	cmplwi	5,96
1044	blt	.Lcbc_dec8x_five
1045	nop
1046	beq	.Lcbc_dec8x_six
1047
1048.Lcbc_dec8x_seven:
1049.long	0x11EF2549
1050.long	0x12100D49
1051.long	0x12311549
1052.long	0x12521D49
1053.long	0x12735549
1054.long	0x12945D49
1055.long	0x12B56549
1056	vor	4,13,13
1057
1058
1059
1060.long	0x7DE02799
1061
1062.long	0x7E082799
1063
1064.long	0x7E3A2799
1065
1066.long	0x7E5B2799
1067
1068.long	0x7E7C2799
1069
1070.long	0x7E9D2799
1071.long	0x7EBE2799
1072	addi	4,4,0x70
1073	b	.Lcbc_dec8x_done
1074
1075.align	5
1076.Lcbc_dec8x_six:
1077.long	0x12102549
1078.long	0x12311549
1079.long	0x12521D49
1080.long	0x12735549
1081.long	0x12945D49
1082.long	0x12B56549
1083	vor	4,13,13
1084
1085
1086
1087.long	0x7E002799
1088
1089.long	0x7E282799
1090
1091.long	0x7E5A2799
1092
1093.long	0x7E7B2799
1094
1095.long	0x7E9C2799
1096.long	0x7EBD2799
1097	addi	4,4,0x60
1098	b	.Lcbc_dec8x_done
1099
1100.align	5
1101.Lcbc_dec8x_five:
1102.long	0x12312549
1103.long	0x12521D49
1104.long	0x12735549
1105.long	0x12945D49
1106.long	0x12B56549
1107	vor	4,13,13
1108
1109
1110
1111.long	0x7E202799
1112
1113.long	0x7E482799
1114
1115.long	0x7E7A2799
1116
1117.long	0x7E9B2799
1118.long	0x7EBC2799
1119	addi	4,4,0x50
1120	b	.Lcbc_dec8x_done
1121
1122.align	5
1123.Lcbc_dec8x_four:
1124.long	0x12522549
1125.long	0x12735549
1126.long	0x12945D49
1127.long	0x12B56549
1128	vor	4,13,13
1129
1130
1131
1132.long	0x7E402799
1133
1134.long	0x7E682799
1135
1136.long	0x7E9A2799
1137.long	0x7EBB2799
1138	addi	4,4,0x40
1139	b	.Lcbc_dec8x_done
1140
1141.align	5
1142.Lcbc_dec8x_three:
1143.long	0x12732549
1144.long	0x12945D49
1145.long	0x12B56549
1146	vor	4,13,13
1147
1148
1149
1150.long	0x7E602799
1151
1152.long	0x7E882799
1153.long	0x7EBA2799
1154	addi	4,4,0x30
1155	b	.Lcbc_dec8x_done
1156
1157.align	5
1158.Lcbc_dec8x_two:
1159.long	0x12942549
1160.long	0x12B56549
1161	vor	4,13,13
1162
1163
1164
1165.long	0x7E802799
1166.long	0x7EA82799
1167	addi	4,4,0x20
1168	b	.Lcbc_dec8x_done
1169
1170.align	5
1171.Lcbc_dec8x_one:
1172.long	0x12B52549
1173	vor	4,13,13
1174
1175
1176.long	0x7EA02799
1177	addi	4,4,0x10
1178
1179.Lcbc_dec8x_done:
1180
1181.long	0x7C803F99
1182
1183	li	10,79
1184	li	11,95
1185	stvx	6,10,1
1186	addi	10,10,32
1187	stvx	6,11,1
1188	addi	11,11,32
1189	stvx	6,10,1
1190	addi	10,10,32
1191	stvx	6,11,1
1192	addi	11,11,32
1193	stvx	6,10,1
1194	addi	10,10,32
1195	stvx	6,11,1
1196	addi	11,11,32
1197	stvx	6,10,1
1198	addi	10,10,32
1199	stvx	6,11,1
1200	addi	11,11,32
1201
1202	mtspr	256,12
1203	lvx	20,10,1
1204	addi	10,10,32
1205	lvx	21,11,1
1206	addi	11,11,32
1207	lvx	22,10,1
1208	addi	10,10,32
1209	lvx	23,11,1
1210	addi	11,11,32
1211	lvx	24,10,1
1212	addi	10,10,32
1213	lvx	25,11,1
1214	addi	11,11,32
1215	lvx	26,10,1
1216	addi	10,10,32
1217	lvx	27,11,1
1218	addi	11,11,32
1219	lvx	28,10,1
1220	addi	10,10,32
1221	lvx	29,11,1
1222	addi	11,11,32
1223	lvx	30,10,1
1224	lvx	31,11,1
1225	ld	26,400(1)
1226	ld	27,408(1)
1227	ld	28,416(1)
1228	ld	29,424(1)
1229	ld	30,432(1)
1230	ld	31,440(1)
1231	addi	1,1,448
1232	blr
1233.long	0
1234.byte	0,12,0x04,0,0x80,6,6,0
1235.long	0
1236
1237.globl	aes_p8_ctr32_encrypt_blocks
1238.type	aes_p8_ctr32_encrypt_blocks,@function
1239.section	".opd","aw"
1240.align	3
1241aes_p8_ctr32_encrypt_blocks:
1242.quad	.aes_p8_ctr32_encrypt_blocks,.TOC.@tocbase,0
1243.previous
1244
1245.align	5
1246.aes_p8_ctr32_encrypt_blocks:
1247	cmpldi	5,1
1248	bltlr
1249
1250	lis	0,0xfff0
1251	mfspr	12,256
1252	mtspr	256,0
1253
1254	li	10,15
1255	vxor	0,0,0
1256
1257
1258	lvx	4,0,7
1259	lvsl	6,0,7
1260	lvx	5,10,7
1261	vspltisb	11,1
1262
1263	vperm	4,4,5,6
1264	vsldoi	11,0,11,1
1265
1266	neg	11,3
1267	lvsl	10,0,6
1268	lwz	9,240(6)
1269
1270	lvsr	6,0,11
1271	lvx	5,0,3
1272	addi	3,3,15
1273
1274
1275	srwi	9,9,1
1276	li	10,16
1277	subi	9,9,1
1278
1279	cmpldi	5,8
1280	bge	_aesp8_ctr32_encrypt8x
1281
1282	lvsr	8,0,4
1283	vspltisb	9,-1
1284	lvx	7,0,4
1285	vperm	9,0,9,8
1286
1287
1288	lvx	0,0,6
1289	mtctr	9
1290	lvx	1,10,6
1291	addi	10,10,16
1292	vperm	0,0,1,10
1293	vxor	2,4,0
1294	lvx	0,10,6
1295	addi	10,10,16
1296	b	.Loop_ctr32_enc
1297
1298.align	5
1299.Loop_ctr32_enc:
1300	vperm	1,1,0,10
1301.long	0x10420D08
1302	lvx	1,10,6
1303	addi	10,10,16
1304	vperm	0,0,1,10
1305.long	0x10420508
1306	lvx	0,10,6
1307	addi	10,10,16
1308	bc	16,0,.Loop_ctr32_enc
1309
1310	vadduwm	4,4,11
1311	vor	3,5,5
1312	lvx	5,0,3
1313	addi	3,3,16
1314	subic.	5,5,1
1315
1316	vperm	1,1,0,10
1317.long	0x10420D08
1318	lvx	1,10,6
1319	vperm	3,3,5,6
1320	li	10,16
1321	vperm	1,0,1,10
1322	lvx	0,0,6
1323	vxor	3,3,1
1324.long	0x10421D09
1325
1326	lvx	1,10,6
1327	addi	10,10,16
1328	vperm	2,2,2,8
1329	vsel	3,7,2,9
1330	mtctr	9
1331	vperm	0,0,1,10
1332	vor	7,2,2
1333	vxor	2,4,0
1334	lvx	0,10,6
1335	addi	10,10,16
1336	stvx	3,0,4
1337	addi	4,4,16
1338	bne	.Loop_ctr32_enc
1339
1340	addi	4,4,-1
1341	lvx	2,0,4
1342	vsel	2,7,2,9
1343	stvx	2,0,4
1344
1345	mtspr	256,12
1346	blr
1347.long	0
1348.byte	0,12,0x14,0,0,0,6,0
1349.long	0
1350.align	5
1351_aesp8_ctr32_encrypt8x:
1352	stdu	1,-448(1)
1353	li	10,207
1354	li	11,223
1355	stvx	20,10,1
1356	addi	10,10,32
1357	stvx	21,11,1
1358	addi	11,11,32
1359	stvx	22,10,1
1360	addi	10,10,32
1361	stvx	23,11,1
1362	addi	11,11,32
1363	stvx	24,10,1
1364	addi	10,10,32
1365	stvx	25,11,1
1366	addi	11,11,32
1367	stvx	26,10,1
1368	addi	10,10,32
1369	stvx	27,11,1
1370	addi	11,11,32
1371	stvx	28,10,1
1372	addi	10,10,32
1373	stvx	29,11,1
1374	addi	11,11,32
1375	stvx	30,10,1
1376	stvx	31,11,1
1377	li	0,-1
1378	stw	12,396(1)
1379	li	8,0x10
1380	std	26,400(1)
1381	li	26,0x20
1382	std	27,408(1)
1383	li	27,0x30
1384	std	28,416(1)
1385	li	28,0x40
1386	std	29,424(1)
1387	li	29,0x50
1388	std	30,432(1)
1389	li	30,0x60
1390	std	31,440(1)
1391	li	31,0x70
1392	mtspr	256,0
1393
1394	subi	9,9,3
1395
1396	lvx	23,0,6
1397	lvx	30,8,6
1398	addi	6,6,0x20
1399	lvx	31,0,6
1400	vperm	23,23,30,10
1401	addi	11,1,64+15
1402	mtctr	9
1403
1404.Load_ctr32_enc_key:
1405	vperm	24,30,31,10
1406	lvx	30,8,6
1407	addi	6,6,0x20
1408	stvx	24,0,11
1409	vperm	25,31,30,10
1410	lvx	31,0,6
1411	stvx	25,8,11
1412	addi	11,11,0x20
1413	bc	16,0,.Load_ctr32_enc_key
1414
1415	lvx	26,8,6
1416	vperm	24,30,31,10
1417	lvx	27,26,6
1418	stvx	24,0,11
1419	vperm	25,31,26,10
1420	lvx	28,27,6
1421	stvx	25,8,11
1422	addi	11,1,64+15
1423	vperm	26,26,27,10
1424	lvx	29,28,6
1425	vperm	27,27,28,10
1426	lvx	30,29,6
1427	vperm	28,28,29,10
1428	lvx	31,30,6
1429	vperm	29,29,30,10
1430	lvx	15,31,6
1431	vperm	30,30,31,10
1432	lvx	24,0,11
1433	vperm	31,31,15,10
1434	lvx	25,8,11
1435
1436	vadduwm	7,11,11
1437	subi	3,3,15
1438	sldi	5,5,4
1439
1440	vadduwm	16,4,11
1441	vadduwm	17,4,7
1442	vxor	15,4,23
1443
1444	vadduwm	18,16,7
1445	vxor	16,16,23
1446
1447	vadduwm	19,17,7
1448	vxor	17,17,23
1449
1450	vadduwm	20,18,7
1451	vxor	18,18,23
1452
1453	vadduwm	21,19,7
1454	vxor	19,19,23
1455	vadduwm	22,20,7
1456	vxor	20,20,23
1457	vadduwm	4,21,7
1458	vxor	21,21,23
1459	vxor	22,22,23
1460
1461	mtctr	9
1462	b	.Loop_ctr32_enc8x
1463.align	5
1464.Loop_ctr32_enc8x:
1465.long	0x11EFC508
1466.long	0x1210C508
1467.long	0x1231C508
1468.long	0x1252C508
1469.long	0x1273C508
1470.long	0x1294C508
1471.long	0x12B5C508
1472.long	0x12D6C508
1473.Loop_ctr32_enc8x_middle:
1474	lvx	24,26,11
1475	addi	11,11,0x20
1476
1477.long	0x11EFCD08
1478.long	0x1210CD08
1479.long	0x1231CD08
1480.long	0x1252CD08
1481.long	0x1273CD08
1482.long	0x1294CD08
1483.long	0x12B5CD08
1484.long	0x12D6CD08
1485	lvx	25,8,11
1486	bc	16,0,.Loop_ctr32_enc8x
1487
1488	subic	11,5,256
1489.long	0x11EFC508
1490.long	0x1210C508
1491.long	0x1231C508
1492.long	0x1252C508
1493.long	0x1273C508
1494.long	0x1294C508
1495.long	0x12B5C508
1496.long	0x12D6C508
1497
1498	subfe	0,0,0
1499.long	0x11EFCD08
1500.long	0x1210CD08
1501.long	0x1231CD08
1502.long	0x1252CD08
1503.long	0x1273CD08
1504.long	0x1294CD08
1505.long	0x12B5CD08
1506.long	0x12D6CD08
1507
1508	and	0,0,11
1509	addi	11,1,64+15
1510.long	0x11EFD508
1511.long	0x1210D508
1512.long	0x1231D508
1513.long	0x1252D508
1514.long	0x1273D508
1515.long	0x1294D508
1516.long	0x12B5D508
1517.long	0x12D6D508
1518	lvx	24,0,11
1519
1520	subic	5,5,129
1521.long	0x11EFDD08
1522	addi	5,5,1
1523.long	0x1210DD08
1524.long	0x1231DD08
1525.long	0x1252DD08
1526.long	0x1273DD08
1527.long	0x1294DD08
1528.long	0x12B5DD08
1529.long	0x12D6DD08
1530	lvx	25,8,11
1531
1532.long	0x11EFE508
1533.long	0x7C001E99
1534.long	0x1210E508
1535.long	0x7C281E99
1536.long	0x1231E508
1537.long	0x7C5A1E99
1538.long	0x1252E508
1539.long	0x7C7B1E99
1540.long	0x1273E508
1541.long	0x7D5C1E99
1542.long	0x1294E508
1543.long	0x7D9D1E99
1544.long	0x12B5E508
1545.long	0x7DBE1E99
1546.long	0x12D6E508
1547.long	0x7DDF1E99
1548	addi	3,3,0x80
1549
1550.long	0x11EFED08
1551
1552.long	0x1210ED08
1553
1554.long	0x1231ED08
1555
1556.long	0x1252ED08
1557
1558.long	0x1273ED08
1559
1560.long	0x1294ED08
1561
1562.long	0x12B5ED08
1563
1564.long	0x12D6ED08
1565
1566
1567	add	3,3,0
1568
1569
1570
1571	subfe.	0,0,0
1572.long	0x11EFF508
1573	vxor	0,0,31
1574.long	0x1210F508
1575	vxor	1,1,31
1576.long	0x1231F508
1577	vxor	2,2,31
1578.long	0x1252F508
1579	vxor	3,3,31
1580.long	0x1273F508
1581	vxor	10,10,31
1582.long	0x1294F508
1583	vxor	12,12,31
1584.long	0x12B5F508
1585	vxor	13,13,31
1586.long	0x12D6F508
1587	vxor	14,14,31
1588
1589	bne	.Lctr32_enc8x_break
1590
1591.long	0x100F0509
1592.long	0x10300D09
1593	vadduwm	16,4,11
1594.long	0x10511509
1595	vadduwm	17,4,7
1596	vxor	15,4,23
1597.long	0x10721D09
1598	vadduwm	18,16,7
1599	vxor	16,16,23
1600.long	0x11535509
1601	vadduwm	19,17,7
1602	vxor	17,17,23
1603.long	0x11946509
1604	vadduwm	20,18,7
1605	vxor	18,18,23
1606.long	0x11B56D09
1607	vadduwm	21,19,7
1608	vxor	19,19,23
1609.long	0x11D67509
1610	vadduwm	22,20,7
1611	vxor	20,20,23
1612
1613	vadduwm	4,21,7
1614	vxor	21,21,23
1615
1616	vxor	22,22,23
1617	mtctr	9
1618
1619.long	0x11EFC508
1620.long	0x7C002799
1621
1622.long	0x1210C508
1623.long	0x7C282799
1624
1625.long	0x1231C508
1626.long	0x7C5A2799
1627
1628.long	0x1252C508
1629.long	0x7C7B2799
1630
1631.long	0x1273C508
1632.long	0x7D5C2799
1633
1634.long	0x1294C508
1635.long	0x7D9D2799
1636
1637.long	0x12B5C508
1638.long	0x7DBE2799
1639.long	0x12D6C508
1640.long	0x7DDF2799
1641	addi	4,4,0x80
1642
1643	b	.Loop_ctr32_enc8x_middle
1644
1645.align	5
1646.Lctr32_enc8x_break:
1647	cmpwi	5,-0x60
1648	blt	.Lctr32_enc8x_one
1649	nop
1650	beq	.Lctr32_enc8x_two
1651	cmpwi	5,-0x40
1652	blt	.Lctr32_enc8x_three
1653	nop
1654	beq	.Lctr32_enc8x_four
1655	cmpwi	5,-0x20
1656	blt	.Lctr32_enc8x_five
1657	nop
1658	beq	.Lctr32_enc8x_six
1659	cmpwi	5,0x00
1660	blt	.Lctr32_enc8x_seven
1661
1662.Lctr32_enc8x_eight:
1663.long	0x11EF0509
1664.long	0x12100D09
1665.long	0x12311509
1666.long	0x12521D09
1667.long	0x12735509
1668.long	0x12946509
1669.long	0x12B56D09
1670.long	0x12D67509
1671
1672
1673
1674.long	0x7DE02799
1675
1676.long	0x7E082799
1677
1678.long	0x7E3A2799
1679
1680.long	0x7E5B2799
1681
1682.long	0x7E7C2799
1683
1684.long	0x7E9D2799
1685
1686.long	0x7EBE2799
1687.long	0x7EDF2799
1688	addi	4,4,0x80
1689	b	.Lctr32_enc8x_done
1690
1691.align	5
1692.Lctr32_enc8x_seven:
1693.long	0x11EF0D09
1694.long	0x12101509
1695.long	0x12311D09
1696.long	0x12525509
1697.long	0x12736509
1698.long	0x12946D09
1699.long	0x12B57509
1700
1701
1702
1703.long	0x7DE02799
1704
1705.long	0x7E082799
1706
1707.long	0x7E3A2799
1708
1709.long	0x7E5B2799
1710
1711.long	0x7E7C2799
1712
1713.long	0x7E9D2799
1714.long	0x7EBE2799
1715	addi	4,4,0x70
1716	b	.Lctr32_enc8x_done
1717
1718.align	5
1719.Lctr32_enc8x_six:
1720.long	0x11EF1509
1721.long	0x12101D09
1722.long	0x12315509
1723.long	0x12526509
1724.long	0x12736D09
1725.long	0x12947509
1726
1727
1728
1729.long	0x7DE02799
1730
1731.long	0x7E082799
1732
1733.long	0x7E3A2799
1734
1735.long	0x7E5B2799
1736
1737.long	0x7E7C2799
1738.long	0x7E9D2799
1739	addi	4,4,0x60
1740	b	.Lctr32_enc8x_done
1741
1742.align	5
1743.Lctr32_enc8x_five:
1744.long	0x11EF1D09
1745.long	0x12105509
1746.long	0x12316509
1747.long	0x12526D09
1748.long	0x12737509
1749
1750
1751
1752.long	0x7DE02799
1753
1754.long	0x7E082799
1755
1756.long	0x7E3A2799
1757
1758.long	0x7E5B2799
1759.long	0x7E7C2799
1760	addi	4,4,0x50
1761	b	.Lctr32_enc8x_done
1762
1763.align	5
1764.Lctr32_enc8x_four:
1765.long	0x11EF5509
1766.long	0x12106509
1767.long	0x12316D09
1768.long	0x12527509
1769
1770
1771
1772.long	0x7DE02799
1773
1774.long	0x7E082799
1775
1776.long	0x7E3A2799
1777.long	0x7E5B2799
1778	addi	4,4,0x40
1779	b	.Lctr32_enc8x_done
1780
1781.align	5
1782.Lctr32_enc8x_three:
1783.long	0x11EF6509
1784.long	0x12106D09
1785.long	0x12317509
1786
1787
1788
1789.long	0x7DE02799
1790
1791.long	0x7E082799
1792.long	0x7E3A2799
1793	addi	4,4,0x30
1794	b	.Lcbc_dec8x_done
1795
1796.align	5
1797.Lctr32_enc8x_two:
1798.long	0x11EF6D09
1799.long	0x12107509
1800
1801
1802
1803.long	0x7DE02799
1804.long	0x7E082799
1805	addi	4,4,0x20
1806	b	.Lcbc_dec8x_done
1807
1808.align	5
1809.Lctr32_enc8x_one:
1810.long	0x11EF7509
1811
1812
1813.long	0x7DE02799
1814	addi	4,4,0x10
1815
1816.Lctr32_enc8x_done:
1817	li	10,79
1818	li	11,95
1819	stvx	6,10,1
1820	addi	10,10,32
1821	stvx	6,11,1
1822	addi	11,11,32
1823	stvx	6,10,1
1824	addi	10,10,32
1825	stvx	6,11,1
1826	addi	11,11,32
1827	stvx	6,10,1
1828	addi	10,10,32
1829	stvx	6,11,1
1830	addi	11,11,32
1831	stvx	6,10,1
1832	addi	10,10,32
1833	stvx	6,11,1
1834	addi	11,11,32
1835
1836	mtspr	256,12
1837	lvx	20,10,1
1838	addi	10,10,32
1839	lvx	21,11,1
1840	addi	11,11,32
1841	lvx	22,10,1
1842	addi	10,10,32
1843	lvx	23,11,1
1844	addi	11,11,32
1845	lvx	24,10,1
1846	addi	10,10,32
1847	lvx	25,11,1
1848	addi	11,11,32
1849	lvx	26,10,1
1850	addi	10,10,32
1851	lvx	27,11,1
1852	addi	11,11,32
1853	lvx	28,10,1
1854	addi	10,10,32
1855	lvx	29,11,1
1856	addi	11,11,32
1857	lvx	30,10,1
1858	lvx	31,11,1
1859	ld	26,400(1)
1860	ld	27,408(1)
1861	ld	28,416(1)
1862	ld	29,424(1)
1863	ld	30,432(1)
1864	ld	31,440(1)
1865	addi	1,1,448
1866	blr
1867.long	0
1868.byte	0,12,0x04,0,0x80,6,6,0
1869.long	0
1870
1871