xref: /netbsd-src/crypto/external/bsd/openssl.old/lib/libcrypto/arch/powerpc/ppc64-mont.S (revision 4724848cf0da353df257f730694b7882798e5daf)
1.machine	"any"
2.text
3
4.globl	bn_mul_mont_fpu64
5.type	bn_mul_mont_fpu64,@function
6.align	5
7bn_mul_mont_fpu64:
8	cmpwi	8,6
9	mr	9,3
10	li	3,0
11	bltlr
12	andi.	0,8,3
13	bnelr
14
15	slwi	8,8,2
16	li	12,-4096
17	slwi	10,8,2
18	add	10,10,8
19	addi	10,10,488
20	subf	10,10,1
21	and	10,10,12
22	subf	10,1,10
23	mr	12,1
24	stwux	1,1,10
25
26	stw	19,-148(12)
27	stw	20,-144(12)
28	stw	21,-140(12)
29	stw	22,-136(12)
30	stw	23,-132(12)
31	stw	24,-128(12)
32	stw	25,-124(12)
33	stw	26,-120(12)
34	stw	27,-116(12)
35	stw	28,-112(12)
36	stw	29,-108(12)
37	stw	30,-104(12)
38	stw	31,-100(12)
39	stfd	20,-96(12)
40	stfd	21,-88(12)
41	stfd	22,-80(12)
42	stfd	23,-72(12)
43	stfd	24,-64(12)
44	stfd	25,-56(12)
45	stfd	26,-48(12)
46	stfd	27,-40(12)
47	stfd	28,-32(12)
48	stfd	29,-24(12)
49	stfd	30,-16(12)
50	stfd	31,-8(12)
51
52	addi	10,1,264
53	li	12,-64
54	add	22,10,8
55	and	22,22,12
56
57	addi	22,22,-8
58	srwi	11,8,4
59	addi	11,11,-1
60	addi	10,1,184
61	li	0,0
62	mtctr	11
63	lwz	23,0(4)
64	mr	20,7
65	lwz	21,4(4)
66	li	19,0
67	lwz	25,0(5)
68	lwz	27,4(5)
69	lwz	7,0(20)
70	lwz	20,4(20)
71
72	mullw	28,23,25
73	mulhwu	29,23,25
74	mullw	30,21,25
75	mullw	31,23,27
76	add	29,29,30
77	add	29,29,31
78
79	extrwi	24,25,16,16
80	extrwi	25,25,16,0
81	extrwi	26,27,16,16
82	extrwi	27,27,16,0
83	std	24,64(1)
84	std	25,72(1)
85	std	26,80(1)
86	std	27,88(1)
87
88	mullw	24,28,7
89	mulhwu	25,28,7
90	mullw	26,29,7
91	mullw	27,28,20
92	add	25,25,26
93	add	25,25,27
94
95	extrwi	28,24,16,16
96	extrwi	29,24,16,0
97	extrwi	30,25,16,16
98	extrwi	31,25,16,0
99	std	28,96(1)
100	std	29,104(1)
101	std	30,112(1)
102	std	31,120(1)
103
104	mr	24,23
105	mr	25,21
106	lwz	26,8(4)
107	lwz	27,12(4)
108	lwz	28,0(6)
109	lwz	29,4(6)
110	lwz	30,8(6)
111	lwz	31,12(6)
112	lfd	0,64(1)
113	lfd	1,72(1)
114	lfd	2,80(1)
115	lfd	3,88(1)
116	lfd	4,96(1)
117	lfd	5,104(1)
118	lfd	6,112(1)
119	lfd	7,120(1)
120	std	24,128(1)
121	std	25,136(1)
122	std	26,144(1)
123	std	27,152(1)
124	std	28,160(1)
125	std	29,168(1)
126	std	30,176(1)
127	std	31,184(1)
128	fcfid	0,0
129	fcfid	1,1
130	fcfid	2,2
131	fcfid	3,3
132	fcfid	4,4
133	fcfid	5,5
134	fcfid	6,6
135	fcfid	7,7
136
137	lfd	10,128(1)
138	lfd	11,136(1)
139	lfd	12,144(1)
140	lfd	13,152(1)
141	lfd	20,160(1)
142	lfd	21,168(1)
143	lfd	22,176(1)
144	lfd	23,184(1)
145	fcfid	10,10
146	fcfid	11,11
147	fcfid	12,12
148	fcfid	13,13
149	fcfid	20,20
150	fcfid	21,21
151	fcfid	22,22
152	fcfid	23,23
153	addi	4,4,16
154	addi	6,6,16
155
156	fmul	26,11,0
157	fmul	27,11,1
158	stfd	10,8(22)
159	stfd	11,16(22)
160	fmul	28,12,0
161	fmul	29,12,1
162	stfd	12,24(22)
163	stfd	13,32(22)
164	fmul	30,13,0
165	fmul	31,13,1
166	stfd	20,40(22)
167	stfd	21,48(22)
168	fmul	24,10,0
169	fmul	25,10,1
170	stfd	22,56(22)
171	stfdu	23,64(22)
172
173	fmadd	26,10,2,26
174	fmadd	27,10,3,27
175	fmadd	28,11,2,28
176	fmadd	29,11,3,29
177	fmadd	30,12,2,30
178	fmadd	31,12,3,31
179	fmul	8,13,2
180	fmul	9,13,3
181
182	fmadd	26,21,4,26
183	fmadd	27,21,5,27
184	fmadd	28,22,4,28
185	fmadd	29,22,5,29
186	fmadd	30,23,4,30
187	fmadd	31,23,5,31
188	fmadd	24,20,4,24
189	fmadd	25,20,5,25
190
191	fmadd	26,20,6,26
192	fmadd	27,20,7,27
193	fmadd	28,21,6,28
194	fmadd	29,21,7,29
195	fmadd	30,22,6,30
196	fmadd	31,22,7,31
197	fmadd	8,23,6,8
198	fmadd	9,23,7,9
199
200	fctid	24,24
201	fctid	25,25
202	fctid	26,26
203	fctid	27,27
204	fctid	28,28
205	fctid	29,29
206	fctid	30,30
207	fctid	31,31
208
209	stfd	24,64(1)
210	stfd	25,72(1)
211	stfd	26,80(1)
212	stfd	27,88(1)
213	stfd	28,96(1)
214	stfd	29,104(1)
215	stfd	30,112(1)
216	stfd	31,120(1)
217
218.align	5
219.L1st:
220	lwz	24,0(4)
221	lwz	25,4(4)
222	lwz	26,8(4)
223	lwz	27,12(4)
224	lwz	28,0(6)
225	lwz	29,4(6)
226	lwz	30,8(6)
227	lwz	31,12(6)
228	std	24,128(1)
229	std	25,136(1)
230	std	26,144(1)
231	std	27,152(1)
232	std	28,160(1)
233	std	29,168(1)
234	std	30,176(1)
235	std	31,184(1)
236	lwz	25,64(1)
237	lwz	24,68(1)
238	lwz	27,72(1)
239	lwz	26,76(1)
240	lwz	29,80(1)
241	lwz	28,84(1)
242	lwz	31,88(1)
243	lwz	30,92(1)
244	lfd	10,128(1)
245	lfd	11,136(1)
246	lfd	12,144(1)
247	lfd	13,152(1)
248	lfd	20,160(1)
249	lfd	21,168(1)
250	lfd	22,176(1)
251	lfd	23,184(1)
252	fcfid	10,10
253	fcfid	11,11
254	fcfid	12,12
255	fcfid	13,13
256	fcfid	20,20
257	fcfid	21,21
258	fcfid	22,22
259	fcfid	23,23
260	addi	4,4,16
261	addi	6,6,16
262
263	fmul	26,11,0
264	fmul	27,11,1
265	fmul	28,12,0
266	fmul	29,12,1
267	stfd	10,8(22)
268	stfd	11,16(22)
269	fmul	30,13,0
270	fmul	31,13,1
271	fmadd	24,10,0,8
272	fmadd	25,10,1,9
273	stfd	12,24(22)
274	stfd	13,32(22)
275	fmadd	26,10,2,26
276	fmadd	27,10,3,27
277	addc	24,24,0
278	adde	25,25,19
279	srwi	0,24,16
280	fmadd	28,11,2,28
281	fmadd	29,11,3,29
282	stfd	20,40(22)
283	stfd	21,48(22)
284	srwi	19,25,16
285	insrwi	0,25,16,0
286	fmadd	30,12,2,30
287	fmadd	31,12,3,31
288	addc	26,26,0
289	adde	27,27,19
290	srwi	0,26,16
291	fmul	8,13,2
292	fmul	9,13,3
293	stfd	22,56(22)
294	stfdu	23,64(22)
295	insrwi	24,26,16,0
296	srwi	19,27,16
297	insrwi	0,27,16,0
298
299	fmadd	26,21,4,26
300	fmadd	27,21,5,27
301	lwz	27,96(1)
302	lwz	26,100(1)
303	addc	28,28,0
304	adde	29,29,19
305	srwi	0,28,16
306	fmadd	28,22,4,28
307	fmadd	29,22,5,29
308	srwi	19,29,16
309	insrwi	0,29,16,0
310	fmadd	30,23,4,30
311	fmadd	31,23,5,31
312	addc	30,30,0
313	adde	31,31,19
314	srwi	0,30,16
315	fmadd	24,20,4,24
316	fmadd	25,20,5,25
317	insrwi	28,30,16,0
318	srwi	19,31,16
319	insrwi	0,31,16,0
320
321	fmadd	26,20,6,26
322	fmadd	27,20,7,27
323	lwz	31,104(1)
324	lwz	30,108(1)
325	addc	26,26,0
326	adde	27,27,19
327	srwi	0,26,16
328	fmadd	28,21,6,28
329	fmadd	29,21,7,29
330	stw	24,12(10)
331	stw	28,8(10)
332	srwi	19,27,16
333	insrwi	0,27,16,0
334	fmadd	30,22,6,30
335	fmadd	31,22,7,31
336	lwz	25,112(1)
337	lwz	24,116(1)
338	addc	30,30,0
339	adde	31,31,19
340	srwi	0,30,16
341	fmadd	8,23,6,8
342	fmadd	9,23,7,9
343	insrwi	26,30,16,0
344	srwi	19,31,16
345	insrwi	0,31,16,0
346
347	fctid	24,24
348	fctid	25,25
349	lwz	29,120(1)
350	lwz	28,124(1)
351	addc	24,24,0
352	adde	25,25,19
353	srwi	0,24,16
354	fctid	26,26
355	fctid	27,27
356	srwi	19,25,16
357	insrwi	0,25,16,0
358	fctid	28,28
359	fctid	29,29
360	addc	28,28,0
361	adde	29,29,19
362	srwi	0,28,16
363	fctid	30,30
364	fctid	31,31
365	insrwi	24,28,16,0
366	srwi	19,29,16
367	insrwi	0,29,16,0
368
369	stfd	24,64(1)
370	stfd	25,72(1)
371	stfd	26,80(1)
372	stfd	27,88(1)
373	stfd	28,96(1)
374	stfd	29,104(1)
375	stfd	30,112(1)
376	stfd	31,120(1)
377	stw	26,20(10)
378	stwu	24,16(10)
379	bc	16,0,.L1st
380
381	fctid	8,8
382	fctid	9,9
383	lwz	25,64(1)
384	lwz	24,68(1)
385	lwz	27,72(1)
386	lwz	26,76(1)
387	lwz	29,80(1)
388	lwz	28,84(1)
389	lwz	31,88(1)
390	lwz	30,92(1)
391	stfd	8,128(1)
392	stfd	9,136(1)
393
394	addc	24,24,0
395	adde	25,25,19
396	srwi	0,24,16
397	insrwi	0,25,16,0
398	srwi	19,25,16
399	addc	26,26,0
400	adde	27,27,19
401	srwi	0,26,16
402	insrwi	24,26,16,0
403	insrwi	0,27,16,0
404	srwi	19,27,16
405	addc	28,28,0
406	adde	29,29,19
407	srwi	0,28,16
408	insrwi	0,29,16,0
409	srwi	19,29,16
410	addc	30,30,0
411	adde	31,31,19
412	srwi	0,30,16
413	insrwi	28,30,16,0
414	insrwi	0,31,16,0
415	srwi	19,31,16
416	stw	24,12(10)
417	stw	28,8(10)
418
419	lwz	27,96(1)
420	lwz	26,100(1)
421	lwz	31,104(1)
422	lwz	30,108(1)
423	lwz	25,112(1)
424	lwz	24,116(1)
425	lwz	29,120(1)
426	lwz	28,124(1)
427
428	addc	26,26,0
429	adde	27,27,19
430	srwi	0,26,16
431	insrwi	0,27,16,0
432	srwi	19,27,16
433	addc	30,30,0
434	adde	31,31,19
435	srwi	0,30,16
436	insrwi	26,30,16,0
437	insrwi	0,31,16,0
438	srwi	19,31,16
439	addc	24,24,0
440	adde	25,25,19
441	srwi	0,24,16
442	insrwi	0,25,16,0
443	srwi	19,25,16
444	addc	28,28,0
445	adde	29,29,19
446	srwi	0,28,16
447	insrwi	24,28,16,0
448	insrwi	0,29,16,0
449	srwi	19,29,16
450	stw	26,20(10)
451	stwu	24,16(10)
452
453	lwz	31,128(1)
454	lwz	30,132(1)
455	lwz	29,136(1)
456	lwz	28,140(1)
457
458	addc	30,30,0
459	adde	31,31,19
460	srwi	0,30,16
461	insrwi	0,31,16,0
462	srwi	19,31,16
463	addc	28,28,0
464	adde	29,29,19
465
466	insrwi	30,28,16,0
467	srwi	28,28,16
468	insrwi	28,29,16,0
469	srwi	3,29,16
470	stw	30,12(10)
471	stw	28,8(10)
472	slwi	31,8,2
473	subf	22,31,22
474
475	li	12,8
476.align	5
477.Louter:
478	addi	10,1,192
479	li	0,0
480	mtctr	11
481	add	24,5,12
482	li	19,0
483	lwz	25,0(24)
484	lwz	27,4(24)
485
486	mullw	28,23,25
487	lwz	24,204(1)
488	mulhwu	29,23,25
489	lwz	26,200(1)
490	mullw	30,21,25
491	mullw	31,23,27
492	add	29,29,30
493	add	29,29,31
494	addc	28,28,24
495	adde	29,29,26
496
497	extrwi	24,25,16,16
498	extrwi	25,25,16,0
499	extrwi	26,27,16,16
500	extrwi	27,27,16,0
501	std	24,64(1)
502	std	25,72(1)
503	std	26,80(1)
504	std	27,88(1)
505
506	mullw	24,28,7
507	mulhwu	25,28,7
508	mullw	26,29,7
509	mullw	27,28,20
510	add	25,25,26
511	add	25,25,27
512
513	extrwi	28,24,16,16
514	extrwi	29,24,16,0
515	extrwi	30,25,16,16
516	extrwi	31,25,16,0
517	std	28,96(1)
518	std	29,104(1)
519	std	30,112(1)
520	std	31,120(1)
521	lfd	10,8(22)
522	lfd	11,16(22)
523	lfd	12,24(22)
524	lfd	13,32(22)
525	lfd	20,40(22)
526	lfd	21,48(22)
527	lfd	22,56(22)
528	lfdu	23,64(22)
529
530	lfd	0,64(1)
531	lfd	1,72(1)
532	lfd	2,80(1)
533	lfd	3,88(1)
534	lfd	4,96(1)
535	lfd	5,104(1)
536	lfd	6,112(1)
537	lfd	7,120(1)
538
539	fcfid	0,0
540	fcfid	1,1
541	fcfid	2,2
542	fcfid	3,3
543	fcfid	4,4
544	fcfid	5,5
545	fcfid	6,6
546	fcfid	7,7
547
548	fmul	26,11,0
549	fmul	27,11,1
550	fmul	28,12,0
551	fmul	29,12,1
552	fmul	30,13,0
553	fmul	31,13,1
554	fmul	24,10,0
555	fmul	25,10,1
556
557	fmadd	26,10,2,26
558	fmadd	27,10,3,27
559	fmadd	28,11,2,28
560	fmadd	29,11,3,29
561	fmadd	30,12,2,30
562	fmadd	31,12,3,31
563	fmul	8,13,2
564	fmul	9,13,3
565
566	fmadd	26,21,4,26
567	fmadd	27,21,5,27
568	lfd	10,8(22)
569	lfd	11,16(22)
570	fmadd	28,22,4,28
571	fmadd	29,22,5,29
572	lfd	12,24(22)
573	lfd	13,32(22)
574	fmadd	30,23,4,30
575	fmadd	31,23,5,31
576	fmadd	24,20,4,24
577	fmadd	25,20,5,25
578
579	fmadd	26,20,6,26
580	fmadd	27,20,7,27
581	fmadd	28,21,6,28
582	fmadd	29,21,7,29
583	fmadd	30,22,6,30
584	fmadd	31,22,7,31
585	fmadd	8,23,6,8
586	fmadd	9,23,7,9
587
588	fctid	24,24
589	fctid	25,25
590	fctid	26,26
591	fctid	27,27
592	fctid	28,28
593	fctid	29,29
594	fctid	30,30
595	fctid	31,31
596
597	stfd	24,64(1)
598	stfd	25,72(1)
599	stfd	26,80(1)
600	stfd	27,88(1)
601	stfd	28,96(1)
602	stfd	29,104(1)
603	stfd	30,112(1)
604	stfd	31,120(1)
605
606.align	5
607.Linner:
608	fmul	26,11,0
609	fmul	27,11,1
610	fmul	28,12,0
611	fmul	29,12,1
612	lfd	20,40(22)
613	lfd	21,48(22)
614	fmul	30,13,0
615	fmul	31,13,1
616	fmadd	24,10,0,8
617	fmadd	25,10,1,9
618	lfd	22,56(22)
619	lfdu	23,64(22)
620
621	fmadd	26,10,2,26
622	fmadd	27,10,3,27
623	fmadd	28,11,2,28
624	fmadd	29,11,3,29
625	lfd	10,8(22)
626	lfd	11,16(22)
627	fmadd	30,12,2,30
628	fmadd	31,12,3,31
629	fmul	8,13,2
630	fmul	9,13,3
631	lfd	12,24(22)
632	lfd	13,32(22)
633	fmadd	26,21,4,26
634	fmadd	27,21,5,27
635	lwz	25,64(1)
636	lwz	24,68(1)
637	fmadd	28,22,4,28
638	fmadd	29,22,5,29
639	lwz	27,72(1)
640	lwz	26,76(1)
641	fmadd	30,23,4,30
642	fmadd	31,23,5,31
643	lwz	29,80(1)
644	lwz	28,84(1)
645	addc	24,24,0
646	adde	25,25,19
647	srwi	0,24,16
648	fmadd	24,20,4,24
649	fmadd	25,20,5,25
650	lwz	31,88(1)
651	lwz	30,92(1)
652	srwi	19,25,16
653	insrwi	0,25,16,0
654
655	fmadd	26,20,6,26
656	fmadd	27,20,7,27
657	addc	26,26,0
658	adde	27,27,19
659	srwi	0,26,16
660	fmadd	28,21,6,28
661	fmadd	29,21,7,29
662	insrwi	24,26,16,0
663	srwi	19,27,16
664	insrwi	0,27,16,0
665	fmadd	30,22,6,30
666	fmadd	31,22,7,31
667	lwz	26,12(10)
668	lwz	27,8(10)
669	addc	28,28,0
670	adde	29,29,19
671	srwi	0,28,16
672	fmadd	8,23,6,8
673	fmadd	9,23,7,9
674	srwi	19,29,16
675	insrwi	0,29,16,0
676
677	fctid	24,24
678	addc	30,30,0
679	adde	31,31,19
680	srwi	0,30,16
681	fctid	25,25
682	insrwi	28,30,16,0
683	srwi	19,31,16
684	insrwi	0,31,16,0
685	fctid	26,26
686	addc	24,24,26
687	adde	28,28,27
688	lwz	27,96(1)
689	lwz	26,100(1)
690	fctid	27,27
691	addze	0,0
692	addze	19,19
693	stw	24,4(10)
694	stw	28,0(10)
695	fctid	28,28
696	addc	26,26,0
697	adde	27,27,19
698	srwi	0,26,16
699	lwz	31,104(1)
700	lwz	30,108(1)
701	fctid	29,29
702	srwi	19,27,16
703	insrwi	0,27,16,0
704	lwz	25,112(1)
705	lwz	24,116(1)
706	fctid	30,30
707	addc	30,30,0
708	adde	31,31,19
709	srwi	0,30,16
710	lwz	29,120(1)
711	lwz	28,124(1)
712	fctid	31,31
713
714	insrwi	26,30,16,0
715	insrwi	0,31,16,0
716	srwi	19,31,16
717	lwz	30,20(10)
718	lwzu	31,16(10)
719	addc	24,24,0
720	stfd	24,64(1)
721	adde	25,25,19
722	srwi	0,24,16
723	stfd	25,72(1)
724	insrwi	0,25,16,0
725	srwi	19,25,16
726	addc	28,28,0
727	stfd	26,80(1)
728	adde	29,29,19
729	srwi	0,28,16
730	insrwi	24,28,16,0
731	stfd	27,88(1)
732	insrwi	0,29,16,0
733	srwi	19,29,16
734
735	addc	26,26,30
736	stfd	28,96(1)
737	adde	24,24,31
738	stfd	29,104(1)
739	addze	0,0
740	stfd	30,112(1)
741	addze	19,19
742	stfd	31,120(1)
743	stw	26,-4(10)
744	stw	24,-8(10)
745	bc	16,0,.Linner
746
747	fctid	8,8
748	fctid	9,9
749	lwz	25,64(1)
750	lwz	24,68(1)
751	lwz	27,72(1)
752	lwz	26,76(1)
753	lwz	29,80(1)
754	lwz	28,84(1)
755	lwz	31,88(1)
756	lwz	30,92(1)
757	stfd	8,128(1)
758	stfd	9,136(1)
759
760	addc	24,24,0
761	adde	25,25,19
762	srwi	0,24,16
763	insrwi	0,25,16,0
764	srwi	19,25,16
765	addc	26,26,0
766	adde	27,27,19
767	srwi	0,26,16
768	insrwi	24,26,16,0
769	lwz	26,12(10)
770	insrwi	0,27,16,0
771	srwi	19,27,16
772	lwz	27,8(10)
773	addc	28,28,0
774	adde	29,29,19
775	srwi	0,28,16
776	insrwi	0,29,16,0
777	srwi	19,29,16
778	addc	30,30,0
779	adde	31,31,19
780	srwi	0,30,16
781	insrwi	28,30,16,0
782	insrwi	0,31,16,0
783	srwi	19,31,16
784
785	addc	24,24,26
786	adde	28,28,27
787	addze	0,0
788	addze	19,19
789	stw	24,4(10)
790	stw	28,0(10)
791
792	lwz	27,96(1)
793	lwz	26,100(1)
794	lwz	31,104(1)
795	lwz	30,108(1)
796	lwz	25,112(1)
797	lwz	24,116(1)
798	lwz	29,120(1)
799	lwz	28,124(1)
800
801	addc	26,26,0
802	adde	27,27,19
803	srwi	0,26,16
804	insrwi	0,27,16,0
805	srwi	19,27,16
806	addc	30,30,0
807	adde	31,31,19
808	srwi	0,30,16
809	insrwi	26,30,16,0
810	lwz	30,20(10)
811	insrwi	0,31,16,0
812	srwi	19,31,16
813	lwzu	31,16(10)
814	addc	24,24,0
815	adde	25,25,19
816	srwi	0,24,16
817	insrwi	0,25,16,0
818	srwi	19,25,16
819	addc	28,28,0
820	adde	29,29,19
821	srwi	0,28,16
822	insrwi	24,28,16,0
823	insrwi	0,29,16,0
824	srwi	19,29,16
825
826	addc	26,26,30
827	adde	24,24,31
828	lwz	31,128(1)
829	lwz	30,132(1)
830	addze	0,0
831	addze	19,19
832	lwz	29,136(1)
833	lwz	28,140(1)
834
835	addc	30,30,0
836	adde	31,31,19
837	stw	26,-4(10)
838	stw	24,-8(10)
839	addc	30,30,3
840	addze	31,31
841	srwi	0,30,16
842	insrwi	0,31,16,0
843	srwi	19,31,16
844	addc	28,28,0
845	adde	29,29,19
846
847	insrwi	30,28,16,0
848	srwi	28,28,16
849	insrwi	28,29,16,0
850	srwi	3,29,16
851	stw	30,4(10)
852	stw	28,0(10)
853	slwi	31,8,2
854	addi	12,12,8
855	subf	22,31,22
856	cmpw	12,8
857	blt-	.Louter
858	subf	6,8,6
859	addi	11,11,1
860	subfc	12,12,12
861	addi	10,1,192
862	addi	6,6,-4
863	addi	9,9,-4
864	addi	4,1,196
865	mtctr	11
866
867.align	4
868.Lsub:	lwz	24,12(10)
869	lwz	25,8(10)
870	lwz	26,20(10)
871	lwzu	27,16(10)
872	lwz	28,4(6)
873	lwz	29,8(6)
874	lwz	30,12(6)
875	lwzu	31,16(6)
876	subfe	28,28,24
877	stw	24,4(4)
878	subfe	29,29,25
879	stw	25,8(4)
880	subfe	30,30,26
881	stw	26,12(4)
882	subfe	31,31,27
883	stwu	27,16(4)
884	stw	28,4(9)
885	stw	29,8(9)
886	stw	30,12(9)
887	stwu	31,16(9)
888	bc	16,0,.Lsub
889
890	li	12,0
891	subfe	3,12,3
892	addi	4,1,196
893	subf	9,8,9
894	addi	10,1,192
895	mtctr	11
896
897.align	4
898.Lcopy:
899	lwz	24,4(4)
900	lwz	25,8(4)
901	lwz	26,12(4)
902	lwzu	27,16(4)
903	lwz	28,4(9)
904	lwz	29,8(9)
905	lwz	30,12(9)
906	lwz	31,16(9)
907	std	12,8(22)
908	std	12,16(22)
909	std	12,24(22)
910	std	12,32(22)
911	std	12,40(22)
912	std	12,48(22)
913	std	12,56(22)
914	stdu	12,64(22)
915	and	24,24,3
916	and	25,25,3
917	and	26,26,3
918	and	27,27,3
919	andc	28,28,3
920	andc	29,29,3
921	andc	30,30,3
922	andc	31,31,3
923	or	24,24,28
924	or	25,25,29
925	or	26,26,30
926	or	27,27,31
927	stw	24,4(9)
928	stw	25,8(9)
929	stw	26,12(9)
930	stwu	27,16(9)
931	std	12,8(10)
932	stdu	12,16(10)
933	bc	16,0,.Lcopy
934	lwz	12,0(1)
935	li	3,1
936	lwz	19,-148(12)
937	lwz	20,-144(12)
938	lwz	21,-140(12)
939	lwz	22,-136(12)
940	lwz	23,-132(12)
941	lwz	24,-128(12)
942	lwz	25,-124(12)
943	lwz	26,-120(12)
944	lwz	27,-116(12)
945	lwz	28,-112(12)
946	lwz	29,-108(12)
947	lwz	30,-104(12)
948	lwz	31,-100(12)
949	lfd	20,-96(12)
950	lfd	21,-88(12)
951	lfd	22,-80(12)
952	lfd	23,-72(12)
953	lfd	24,-64(12)
954	lfd	25,-56(12)
955	lfd	26,-48(12)
956	lfd	27,-40(12)
957	lfd	28,-32(12)
958	lfd	29,-24(12)
959	lfd	30,-16(12)
960	lfd	31,-8(12)
961	mr	1,12
962	blr
963.long	0
964.byte	0,12,4,0,0x8c,13,6,0
965.long	0
966
967
968.byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,54,52,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
969.align	2
970