1.machine	"any"
2.text
3
4.globl	bn_mul_mont_int
5.type	bn_mul_mont_int,@function
6.section	".opd","aw"
7.align	3
8bn_mul_mont_int:
9.quad	.bn_mul_mont_int,.TOC.@tocbase,0
10.previous
11.align	5
12.bn_mul_mont_int:
13	mr	9,3
14	li	3,0
15	slwi	8,8,3
16	li	12,-4096
17	addi	3,8,352
18	subf	3,3,1
19	and	3,3,12
20	subf	3,1,3
21	mr	12,1
22	srwi	8,8,3
23	stdux	1,1,3
24
25	std	20,-96(12)
26	std	21,-88(12)
27	std	22,-80(12)
28	std	23,-72(12)
29	std	24,-64(12)
30	std	25,-56(12)
31	std	26,-48(12)
32	std	27,-40(12)
33	std	28,-32(12)
34	std	29,-24(12)
35	std	30,-16(12)
36	std	31,-8(12)
37
38	ld	7,0(7)
39	addi	8,8,-2
40
41	ld	23,0(5)
42	ld	10,0(4)
43	addi	22,1,64
44	mulld	25,10,23
45	mulhdu	26,10,23
46
47	ld	10,8(4)
48	ld	11,0(6)
49
50	mulld	24,25,7
51
52	mulld	29,10,23
53	mulhdu	30,10,23
54
55	mulld	27,11,24
56	mulhdu	28,11,24
57	ld	11,8(6)
58	addc	27,27,25
59	addze	28,28
60
61	mulld	31,11,24
62	mulhdu	0,11,24
63
64	mtctr	8
65	li	21,16
66.align	4
67.L1st:
68	ldx	10,4,21
69	addc	25,29,26
70	ldx	11,6,21
71	addze	26,30
72	mulld	29,10,23
73	addc	27,31,28
74	mulhdu	30,10,23
75	addze	28,0
76	mulld	31,11,24
77	addc	27,27,25
78	mulhdu	0,11,24
79	addze	28,28
80	std	27,0(22)
81
82	addi	21,21,8
83	addi	22,22,8
84	bc	16,0,.L1st
85
86	addc	25,29,26
87	addze	26,30
88
89	addc	27,31,28
90	addze	28,0
91	addc	27,27,25
92	addze	28,28
93	std	27,0(22)
94
95	li	3,0
96	addc	28,28,26
97	addze	3,3
98	std	28,8(22)
99
100	li	20,8
101.align	4
102.Louter:
103	ldx	23,5,20
104	ld	10,0(4)
105	addi	22,1,64
106	ld	12,64(1)
107	mulld	25,10,23
108	mulhdu	26,10,23
109	ld	10,8(4)
110	ld	11,0(6)
111	addc	25,25,12
112	mulld	29,10,23
113	addze	26,26
114	mulld	24,25,7
115	mulhdu	30,10,23
116	mulld	27,11,24
117	mulhdu	28,11,24
118	ld	11,8(6)
119	addc	27,27,25
120	mulld	31,11,24
121	addze	28,28
122	mulhdu	0,11,24
123
124	mtctr	8
125	li	21,16
126.align	4
127.Linner:
128	ldx	10,4,21
129	addc	25,29,26
130	ld	12,8(22)
131	addze	26,30
132	ldx	11,6,21
133	addc	27,31,28
134	mulld	29,10,23
135	addze	28,0
136	mulhdu	30,10,23
137	addc	25,25,12
138	mulld	31,11,24
139	addze	26,26
140	mulhdu	0,11,24
141	addc	27,27,25
142	addi	21,21,8
143	addze	28,28
144	std	27,0(22)
145	addi	22,22,8
146	bc	16,0,.Linner
147
148	ld	12,8(22)
149	addc	25,29,26
150	addze	26,30
151	addc	25,25,12
152	addze	26,26
153
154	addc	27,31,28
155	addze	28,0
156	addc	27,27,25
157	addze	28,28
158	std	27,0(22)
159
160	addic	3,3,-1
161	li	3,0
162	adde	28,28,26
163	addze	3,3
164	std	28,8(22)
165
166	slwi	12,8,3
167	cmpld	20,12
168	addi	20,20,8
169	ble	.Louter
170
171	addi	8,8,2
172	subfc	21,21,21
173	addi	22,1,64
174	mtctr	8
175
176.align	4
177.Lsub:	ldx	12,22,21
178	ldx	11,6,21
179	subfe	10,11,12
180	stdx	10,9,21
181	addi	21,21,8
182	bc	16,0,.Lsub
183
184	li	21,0
185	mtctr	8
186	subfe	3,21,3
187
188.align	4
189.Lcopy:
190	ldx	12,22,21
191	ldx	10,9,21
192	and	12,12,3
193	andc	10,10,3
194	stdx	21,22,21
195	or	10,10,12
196	stdx	10,9,21
197	addi	21,21,8
198	bc	16,0,.Lcopy
199
200	ld	12,0(1)
201	li	3,1
202	ld	20,-96(12)
203	ld	21,-88(12)
204	ld	22,-80(12)
205	ld	23,-72(12)
206	ld	24,-64(12)
207	ld	25,-56(12)
208	ld	26,-48(12)
209	ld	27,-40(12)
210	ld	28,-32(12)
211	ld	29,-24(12)
212	ld	30,-16(12)
213	ld	31,-8(12)
214	mr	1,12
215	blr
216.long	0
217.byte	0,12,4,0,0x80,12,6,0
218.long	0
219
220.globl	bn_mul4x_mont_int
221.type	bn_mul4x_mont_int,@function
222.section	".opd","aw"
223.align	3
224bn_mul4x_mont_int:
225.quad	.bn_mul4x_mont_int,.TOC.@tocbase,0
226.previous
227.align	5
228.bn_mul4x_mont_int:
229	andi.	0,8,7
230	bne	.Lmul4x_do
231	cmpld	4,5
232	bne	.Lmul4x_do
233	b	.Lsqr8x_do
234.Lmul4x_do:
235	slwi	8,8,3
236	mr	9,1
237	li	10,-32*8
238	sub	10,10,8
239	stdux	1,1,10
240
241	std	14,-8*18(9)
242	std	15,-8*17(9)
243	std	16,-8*16(9)
244	std	17,-8*15(9)
245	std	18,-8*14(9)
246	std	19,-8*13(9)
247	std	20,-8*12(9)
248	std	21,-8*11(9)
249	std	22,-8*10(9)
250	std	23,-8*9(9)
251	std	24,-8*8(9)
252	std	25,-8*7(9)
253	std	26,-8*6(9)
254	std	27,-8*5(9)
255	std	28,-8*4(9)
256	std	29,-8*3(9)
257	std	30,-8*2(9)
258	std	31,-8*1(9)
259
260	subi	4,4,8
261	subi	6,6,8
262	subi	3,3,8
263	ld	7,0(7)
264
265	add	14,5,8
266	add	30,4,8
267	subi	14,14,8*4
268
269	ld	27,8*0(5)
270	li	22,0
271	ld	9,8*1(4)
272	li	23,0
273	ld	10,8*2(4)
274	li	24,0
275	ld	11,8*3(4)
276	li	25,0
277	ldu	12,8*4(4)
278	ld	18,8*1(6)
279	ld	19,8*2(6)
280	ld	20,8*3(6)
281	ldu	21,8*4(6)
282
283	std	3,8*6(1)
284	std	14,8*7(1)
285	li	3,0
286	addic	29,1,8*7
287	li	31,0
288	li	0,0
289	b	.Loop_mul4x_1st_reduction
290
291.align	5
292.Loop_mul4x_1st_reduction:
293	mulld	14,9,27
294	addze	3,3
295	mulld	15,10,27
296	addi	31,31,8
297	mulld	16,11,27
298	andi.	31,31,8*4-1
299	mulld	17,12,27
300	addc	22,22,14
301	mulhdu	14,9,27
302	adde	23,23,15
303	mulhdu	15,10,27
304	adde	24,24,16
305	mulld	28,22,7
306	adde	25,25,17
307	mulhdu	16,11,27
308	addze	26,0
309	mulhdu	17,12,27
310	ldx	27,5,31
311	addc	23,23,14
312
313	stdu	28,8(29)
314	adde	24,24,15
315	mulld	15,19,28
316	adde	25,25,16
317	mulld	16,20,28
318	adde	26,26,17
319	mulld	17,21,28
320
321
322
323
324
325
326
327
328
329
330	addic	22,22,-1
331	mulhdu	14,18,28
332	adde	22,23,15
333	mulhdu	15,19,28
334	adde	23,24,16
335	mulhdu	16,20,28
336	adde	24,25,17
337	mulhdu	17,21,28
338	adde	25,26,3
339	addze	3,0
340	addc	22,22,14
341	adde	23,23,15
342	adde	24,24,16
343	adde	25,25,17
344
345	bne	.Loop_mul4x_1st_reduction
346
347	cmpld	30,4
348	beq	.Lmul4x4_post_condition
349
350	ld	9,8*1(4)
351	ld	10,8*2(4)
352	ld	11,8*3(4)
353	ldu	12,8*4(4)
354	ld	28,8*8(1)
355	ld	18,8*1(6)
356	ld	19,8*2(6)
357	ld	20,8*3(6)
358	ldu	21,8*4(6)
359	b	.Loop_mul4x_1st_tail
360
361.align	5
362.Loop_mul4x_1st_tail:
363	mulld	14,9,27
364	addze	3,3
365	mulld	15,10,27
366	addi	31,31,8
367	mulld	16,11,27
368	andi.	31,31,8*4-1
369	mulld	17,12,27
370	addc	22,22,14
371	mulhdu	14,9,27
372	adde	23,23,15
373	mulhdu	15,10,27
374	adde	24,24,16
375	mulhdu	16,11,27
376	adde	25,25,17
377	mulhdu	17,12,27
378	addze	26,0
379	ldx	27,5,31
380	addc	23,23,14
381	mulld	14,18,28
382	adde	24,24,15
383	mulld	15,19,28
384	adde	25,25,16
385	mulld	16,20,28
386	adde	26,26,17
387	mulld	17,21,28
388	addc	22,22,14
389	mulhdu	14,18,28
390	adde	23,23,15
391	mulhdu	15,19,28
392	adde	24,24,16
393	mulhdu	16,20,28
394	adde	25,25,17
395	adde	26,26,3
396	mulhdu	17,21,28
397	addze	3,0
398	addi	28,1,8*8
399	ldx	28,28,31
400	stdu	22,8(29)
401	addc	22,23,14
402	adde	23,24,15
403	adde	24,25,16
404	adde	25,26,17
405
406	bne	.Loop_mul4x_1st_tail
407
408	sub	15,30,8
409	cmpld	30,4
410	beq	.Lmul4x_proceed
411
412	ld	9,8*1(4)
413	ld	10,8*2(4)
414	ld	11,8*3(4)
415	ldu	12,8*4(4)
416	ld	18,8*1(6)
417	ld	19,8*2(6)
418	ld	20,8*3(6)
419	ldu	21,8*4(6)
420	b	.Loop_mul4x_1st_tail
421
422.align	5
423.Lmul4x_proceed:
424	ldu	27,8*4(5)
425	addze	3,3
426	ld	9,8*1(15)
427	ld	10,8*2(15)
428	ld	11,8*3(15)
429	ld	12,8*4(15)
430	addi	4,15,8*4
431	sub	6,6,8
432
433	std	22,8*1(29)
434	std	23,8*2(29)
435	std	24,8*3(29)
436	std	25,8*4(29)
437	std	3,8*5(29)
438	ld	22,8*12(1)
439	ld	23,8*13(1)
440	ld	24,8*14(1)
441	ld	25,8*15(1)
442
443	ld	18,8*1(6)
444	ld	19,8*2(6)
445	ld	20,8*3(6)
446	ldu	21,8*4(6)
447	addic	29,1,8*7
448	li	3,0
449	b	.Loop_mul4x_reduction
450
451.align	5
452.Loop_mul4x_reduction:
453	mulld	14,9,27
454	addze	3,3
455	mulld	15,10,27
456	addi	31,31,8
457	mulld	16,11,27
458	andi.	31,31,8*4-1
459	mulld	17,12,27
460	addc	22,22,14
461	mulhdu	14,9,27
462	adde	23,23,15
463	mulhdu	15,10,27
464	adde	24,24,16
465	mulld	28,22,7
466	adde	25,25,17
467	mulhdu	16,11,27
468	addze	26,0
469	mulhdu	17,12,27
470	ldx	27,5,31
471	addc	23,23,14
472
473	stdu	28,8(29)
474	adde	24,24,15
475	mulld	15,19,28
476	adde	25,25,16
477	mulld	16,20,28
478	adde	26,26,17
479	mulld	17,21,28
480
481	addic	22,22,-1
482	mulhdu	14,18,28
483	adde	22,23,15
484	mulhdu	15,19,28
485	adde	23,24,16
486	mulhdu	16,20,28
487	adde	24,25,17
488	mulhdu	17,21,28
489	adde	25,26,3
490	addze	3,0
491	addc	22,22,14
492	adde	23,23,15
493	adde	24,24,16
494	adde	25,25,17
495
496	bne	.Loop_mul4x_reduction
497
498	ld	14,8*5(29)
499	addze	3,3
500	ld	15,8*6(29)
501	ld	16,8*7(29)
502	ld	17,8*8(29)
503	ld	9,8*1(4)
504	ld	10,8*2(4)
505	ld	11,8*3(4)
506	ldu	12,8*4(4)
507	addc	22,22,14
508	adde	23,23,15
509	adde	24,24,16
510	adde	25,25,17
511
512
513	ld	28,8*8(1)
514	ld	18,8*1(6)
515	ld	19,8*2(6)
516	ld	20,8*3(6)
517	ldu	21,8*4(6)
518	b	.Loop_mul4x_tail
519
520.align	5
521.Loop_mul4x_tail:
522	mulld	14,9,27
523	addze	3,3
524	mulld	15,10,27
525	addi	31,31,8
526	mulld	16,11,27
527	andi.	31,31,8*4-1
528	mulld	17,12,27
529	addc	22,22,14
530	mulhdu	14,9,27
531	adde	23,23,15
532	mulhdu	15,10,27
533	adde	24,24,16
534	mulhdu	16,11,27
535	adde	25,25,17
536	mulhdu	17,12,27
537	addze	26,0
538	ldx	27,5,31
539	addc	23,23,14
540	mulld	14,18,28
541	adde	24,24,15
542	mulld	15,19,28
543	adde	25,25,16
544	mulld	16,20,28
545	adde	26,26,17
546	mulld	17,21,28
547	addc	22,22,14
548	mulhdu	14,18,28
549	adde	23,23,15
550	mulhdu	15,19,28
551	adde	24,24,16
552	mulhdu	16,20,28
553	adde	25,25,17
554	mulhdu	17,21,28
555	adde	26,26,3
556	addi	28,1,8*8
557	ldx	28,28,31
558	addze	3,0
559	stdu	22,8(29)
560	addc	22,23,14
561	adde	23,24,15
562	adde	24,25,16
563	adde	25,26,17
564
565	bne	.Loop_mul4x_tail
566
567	ld	14,8*5(29)
568	sub	15,6,8
569	addze	3,3
570	cmpld	30,4
571	beq	.Loop_mul4x_break
572
573	ld	15,8*6(29)
574	ld	16,8*7(29)
575	ld	17,8*8(29)
576	ld	9,8*1(4)
577	ld	10,8*2(4)
578	ld	11,8*3(4)
579	ldu	12,8*4(4)
580	addc	22,22,14
581	adde	23,23,15
582	adde	24,24,16
583	adde	25,25,17
584
585
586	ld	18,8*1(6)
587	ld	19,8*2(6)
588	ld	20,8*3(6)
589	ldu	21,8*4(6)
590	b	.Loop_mul4x_tail
591
592.align	5
593.Loop_mul4x_break:
594	ld	16,8*6(1)
595	ld	17,8*7(1)
596	addc	9,22,14
597	ld	22,8*12(1)
598	addze	10,23
599	ld	23,8*13(1)
600	addze	11,24
601	ld	24,8*14(1)
602	addze	12,25
603	ld	25,8*15(1)
604	addze	3,3
605	std	9,8*1(29)
606	sub	4,30,8
607	std	10,8*2(29)
608	std	11,8*3(29)
609	std	12,8*4(29)
610	std	3,8*5(29)
611
612	ld	18,8*1(15)
613	ld	19,8*2(15)
614	ld	20,8*3(15)
615	ld	21,8*4(15)
616	addi	6,15,8*4
617	cmpld	5,17
618	beq	.Lmul4x_post
619
620	ldu	27,8*4(5)
621	ld	9,8*1(4)
622	ld	10,8*2(4)
623	ld	11,8*3(4)
624	ldu	12,8*4(4)
625	li	3,0
626	addic	29,1,8*7
627	b	.Loop_mul4x_reduction
628
629.align	5
630.Lmul4x_post:
631
632
633
634
635	srwi	31,8,5
636	mr	5,16
637	subi	31,31,1
638	mr	30,16
639	subfc	14,18,22
640	addi	29,1,8*15
641	subfe	15,19,23
642
643	mtctr	31
644.Lmul4x_sub:
645	ld	18,8*1(6)
646	ld	22,8*1(29)
647	subfe	16,20,24
648	ld	19,8*2(6)
649	ld	23,8*2(29)
650	subfe	17,21,25
651	ld	20,8*3(6)
652	ld	24,8*3(29)
653	ldu	21,8*4(6)
654	ldu	25,8*4(29)
655	std	14,8*1(5)
656	std	15,8*2(5)
657	subfe	14,18,22
658	std	16,8*3(5)
659	stdu	17,8*4(5)
660	subfe	15,19,23
661	bc	16,0,.Lmul4x_sub
662
663	ld	9,8*1(30)
664	std	14,8*1(5)
665	ld	14,8*12(1)
666	subfe	16,20,24
667	ld	10,8*2(30)
668	std	15,8*2(5)
669	ld	15,8*13(1)
670	subfe	17,21,25
671	subfe	3,0,3
672	addi	29,1,8*12
673	ld	11,8*3(30)
674	std	16,8*3(5)
675	ld	16,8*14(1)
676	ld	12,8*4(30)
677	std	17,8*4(5)
678	ld	17,8*15(1)
679
680	mtctr	31
681.Lmul4x_cond_copy:
682	and	14,14,3
683	andc	9,9,3
684	std	0,8*0(29)
685	and	15,15,3
686	andc	10,10,3
687	std	0,8*1(29)
688	and	16,16,3
689	andc	11,11,3
690	std	0,8*2(29)
691	and	17,17,3
692	andc	12,12,3
693	std	0,8*3(29)
694	or	22,14,9
695	ld	9,8*5(30)
696	ld	14,8*4(29)
697	or	23,15,10
698	ld	10,8*6(30)
699	ld	15,8*5(29)
700	or	24,16,11
701	ld	11,8*7(30)
702	ld	16,8*6(29)
703	or	25,17,12
704	ld	12,8*8(30)
705	ld	17,8*7(29)
706	addi	29,29,8*4
707	std	22,8*1(30)
708	std	23,8*2(30)
709	std	24,8*3(30)
710	stdu	25,8*4(30)
711	bc	16,0,.Lmul4x_cond_copy
712
713	ld	5,0(1)
714	and	14,14,3
715	andc	9,9,3
716	std	0,8*0(29)
717	and	15,15,3
718	andc	10,10,3
719	std	0,8*1(29)
720	and	16,16,3
721	andc	11,11,3
722	std	0,8*2(29)
723	and	17,17,3
724	andc	12,12,3
725	std	0,8*3(29)
726	or	22,14,9
727	or	23,15,10
728	std	0,8*4(29)
729	or	24,16,11
730	or	25,17,12
731	std	22,8*1(30)
732	std	23,8*2(30)
733	std	24,8*3(30)
734	std	25,8*4(30)
735
736	b	.Lmul4x_done
737
738.align	4
739.Lmul4x4_post_condition:
740	ld	4,8*6(1)
741	ld	5,0(1)
742	addze	3,3
743
744	subfc	9,18,22
745	subfe	10,19,23
746	subfe	11,20,24
747	subfe	12,21,25
748	subfe	3,0,3
749
750	and	18,18,3
751	and	19,19,3
752	addc	9,9,18
753	and	20,20,3
754	adde	10,10,19
755	and	21,21,3
756	adde	11,11,20
757	adde	12,12,21
758
759	std	9,8*1(4)
760	std	10,8*2(4)
761	std	11,8*3(4)
762	std	12,8*4(4)
763
764.Lmul4x_done:
765	std	0,8*8(1)
766	std	0,8*9(1)
767	std	0,8*10(1)
768	std	0,8*11(1)
769	li	3,1
770	ld	14,-8*18(5)
771	ld	15,-8*17(5)
772	ld	16,-8*16(5)
773	ld	17,-8*15(5)
774	ld	18,-8*14(5)
775	ld	19,-8*13(5)
776	ld	20,-8*12(5)
777	ld	21,-8*11(5)
778	ld	22,-8*10(5)
779	ld	23,-8*9(5)
780	ld	24,-8*8(5)
781	ld	25,-8*7(5)
782	ld	26,-8*6(5)
783	ld	27,-8*5(5)
784	ld	28,-8*4(5)
785	ld	29,-8*3(5)
786	ld	30,-8*2(5)
787	ld	31,-8*1(5)
788	mr	1,5
789	blr
790.long	0
791.byte	0,12,4,0x20,0x80,18,6,0
792.long	0
793
794.align	5
795__bn_sqr8x_mont:
796.Lsqr8x_do:
797	mr	9,1
798	slwi	10,8,4
799	li	11,-32*8
800	sub	10,11,10
801	slwi	8,8,3
802	stdux	1,1,10
803
804	std	14,-8*18(9)
805	std	15,-8*17(9)
806	std	16,-8*16(9)
807	std	17,-8*15(9)
808	std	18,-8*14(9)
809	std	19,-8*13(9)
810	std	20,-8*12(9)
811	std	21,-8*11(9)
812	std	22,-8*10(9)
813	std	23,-8*9(9)
814	std	24,-8*8(9)
815	std	25,-8*7(9)
816	std	26,-8*6(9)
817	std	27,-8*5(9)
818	std	28,-8*4(9)
819	std	29,-8*3(9)
820	std	30,-8*2(9)
821	std	31,-8*1(9)
822
823	subi	4,4,8
824	subi	18,6,8
825	subi	3,3,8
826	ld	7,0(7)
827	li	0,0
828
829	add	6,4,8
830	ld	9,8*1(4)
831
832	ld	10,8*2(4)
833	li	23,0
834	ld	11,8*3(4)
835	li	24,0
836	ld	12,8*4(4)
837	li	25,0
838	ld	14,8*5(4)
839	li	26,0
840	ld	15,8*6(4)
841	li	27,0
842	ld	16,8*7(4)
843	li	28,0
844	ldu	17,8*8(4)
845	li	29,0
846
847	addi	5,1,8*11
848	subic.	30,8,8*8
849	b	.Lsqr8x_zero_start
850
851.align	5
852.Lsqr8x_zero:
853	subic.	30,30,8*8
854	std	0,8*1(5)
855	std	0,8*2(5)
856	std	0,8*3(5)
857	std	0,8*4(5)
858	std	0,8*5(5)
859	std	0,8*6(5)
860	std	0,8*7(5)
861	std	0,8*8(5)
862.Lsqr8x_zero_start:
863	std	0,8*9(5)
864	std	0,8*10(5)
865	std	0,8*11(5)
866	std	0,8*12(5)
867	std	0,8*13(5)
868	std	0,8*14(5)
869	std	0,8*15(5)
870	stdu	0,8*16(5)
871	bne	.Lsqr8x_zero
872
873	std	3,8*6(1)
874	std	18,8*7(1)
875	std	7,8*8(1)
876	std	5,8*9(1)
877	std	0,8*10(1)
878	addi	5,1,8*11
879
880
881.align	5
882.Lsqr8x_outer_loop:
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912	mulld	18,10,9
913	mulld	19,11,9
914	mulld	20,12,9
915	mulld	21,14,9
916	addc	23,23,18
917	mulld	18,15,9
918	adde	24,24,19
919	mulld	19,16,9
920	adde	25,25,20
921	mulld	20,17,9
922	adde	26,26,21
923	mulhdu	21,10,9
924	adde	27,27,18
925	mulhdu	18,11,9
926	adde	28,28,19
927	mulhdu	19,12,9
928	adde	29,29,20
929	mulhdu	20,14,9
930	std	22,8*1(5)
931	addze	22,0
932	std	23,8*2(5)
933	addc	24,24,21
934	mulhdu	21,15,9
935	adde	25,25,18
936	mulhdu	18,16,9
937	adde	26,26,19
938	mulhdu	19,17,9
939	adde	27,27,20
940	mulld	20,11,10
941	adde	28,28,21
942	mulld	21,12,10
943	adde	29,29,18
944	mulld	18,14,10
945	adde	22,22,19
946
947	mulld	19,15,10
948	addc	25,25,20
949	mulld	20,16,10
950	adde	26,26,21
951	mulld	21,17,10
952	adde	27,27,18
953	mulhdu	18,11,10
954	adde	28,28,19
955	mulhdu	19,12,10
956	adde	29,29,20
957	mulhdu	20,14,10
958	adde	22,22,21
959	mulhdu	21,15,10
960	std	24,8*3(5)
961	addze	23,0
962	std	25,8*4(5)
963	addc	26,26,18
964	mulhdu	18,16,10
965	adde	27,27,19
966	mulhdu	19,17,10
967	adde	28,28,20
968	mulld	20,12,11
969	adde	29,29,21
970	mulld	21,14,11
971	adde	22,22,18
972	mulld	18,15,11
973	adde	23,23,19
974
975	mulld	19,16,11
976	addc	27,27,20
977	mulld	20,17,11
978	adde	28,28,21
979	mulhdu	21,12,11
980	adde	29,29,18
981	mulhdu	18,14,11
982	adde	22,22,19
983	mulhdu	19,15,11
984	adde	23,23,20
985	mulhdu	20,16,11
986	std	26,8*5(5)
987	addze	24,0
988	std	27,8*6(5)
989	addc	28,28,21
990	mulhdu	21,17,11
991	adde	29,29,18
992	mulld	18,14,12
993	adde	22,22,19
994	mulld	19,15,12
995	adde	23,23,20
996	mulld	20,16,12
997	adde	24,24,21
998
999	mulld	21,17,12
1000	addc	29,29,18
1001	mulhdu	18,14,12
1002	adde	22,22,19
1003	mulhdu	19,15,12
1004	adde	23,23,20
1005	mulhdu	20,16,12
1006	adde	24,24,21
1007	mulhdu	21,17,12
1008	std	28,8*7(5)
1009	addze	25,0
1010	stdu	29,8*8(5)
1011	addc	22,22,18
1012	mulld	18,15,14
1013	adde	23,23,19
1014	mulld	19,16,14
1015	adde	24,24,20
1016	mulld	20,17,14
1017	adde	25,25,21
1018
1019	mulhdu	21,15,14
1020	addc	23,23,18
1021	mulhdu	18,16,14
1022	adde	24,24,19
1023	mulhdu	19,17,14
1024	adde	25,25,20
1025	mulld	20,16,15
1026	addze	26,0
1027	addc	24,24,21
1028	mulld	21,17,15
1029	adde	25,25,18
1030	mulhdu	18,16,15
1031	adde	26,26,19
1032
1033	mulhdu	19,17,15
1034	addc	25,25,20
1035	mulld	20,17,16
1036	adde	26,26,21
1037	mulhdu	21,17,16
1038	addze	27,0
1039	addc	26,26,18
1040	cmpld	6,4
1041	adde	27,27,19
1042
1043	addc	27,27,20
1044	sub	18,6,8
1045	addze	28,0
1046	add	28,28,21
1047
1048	beq	.Lsqr8x_outer_break
1049
1050	mr	7,9
1051	ld	9,8*1(5)
1052	ld	10,8*2(5)
1053	ld	11,8*3(5)
1054	ld	12,8*4(5)
1055	ld	14,8*5(5)
1056	ld	15,8*6(5)
1057	ld	16,8*7(5)
1058	ld	17,8*8(5)
1059	addc	22,22,9
1060	ld	9,8*1(4)
1061	adde	23,23,10
1062	ld	10,8*2(4)
1063	adde	24,24,11
1064	ld	11,8*3(4)
1065	adde	25,25,12
1066	ld	12,8*4(4)
1067	adde	26,26,14
1068	ld	14,8*5(4)
1069	adde	27,27,15
1070	ld	15,8*6(4)
1071	adde	28,28,16
1072	ld	16,8*7(4)
1073	subi	3,4,8*7
1074	addze	29,17
1075	ldu	17,8*8(4)
1076
1077	li	30,0
1078	b	.Lsqr8x_mul
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102.align	5
1103.Lsqr8x_mul:
1104	mulld	18,9,7
1105	addze	31,0
1106	mulld	19,10,7
1107	addi	30,30,8
1108	mulld	20,11,7
1109	andi.	30,30,8*8-1
1110	mulld	21,12,7
1111	addc	22,22,18
1112	mulld	18,14,7
1113	adde	23,23,19
1114	mulld	19,15,7
1115	adde	24,24,20
1116	mulld	20,16,7
1117	adde	25,25,21
1118	mulld	21,17,7
1119	adde	26,26,18
1120	mulhdu	18,9,7
1121	adde	27,27,19
1122	mulhdu	19,10,7
1123	adde	28,28,20
1124	mulhdu	20,11,7
1125	adde	29,29,21
1126	mulhdu	21,12,7
1127	addze	31,31
1128	stdu	22,8(5)
1129	addc	22,23,18
1130	mulhdu	18,14,7
1131	adde	23,24,19
1132	mulhdu	19,15,7
1133	adde	24,25,20
1134	mulhdu	20,16,7
1135	adde	25,26,21
1136	mulhdu	21,17,7
1137	ldx	7,3,30
1138	adde	26,27,18
1139	adde	27,28,19
1140	adde	28,29,20
1141	adde	29,31,21
1142
1143	bne	.Lsqr8x_mul
1144
1145
1146	cmpld	4,6
1147	beq	.Lsqr8x_break
1148
1149	ld	9,8*1(5)
1150	ld	10,8*2(5)
1151	ld	11,8*3(5)
1152	ld	12,8*4(5)
1153	ld	14,8*5(5)
1154	ld	15,8*6(5)
1155	ld	16,8*7(5)
1156	ld	17,8*8(5)
1157	addc	22,22,9
1158	ld	9,8*1(4)
1159	adde	23,23,10
1160	ld	10,8*2(4)
1161	adde	24,24,11
1162	ld	11,8*3(4)
1163	adde	25,25,12
1164	ld	12,8*4(4)
1165	adde	26,26,14
1166	ld	14,8*5(4)
1167	adde	27,27,15
1168	ld	15,8*6(4)
1169	adde	28,28,16
1170	ld	16,8*7(4)
1171	adde	29,29,17
1172	ldu	17,8*8(4)
1173
1174	b	.Lsqr8x_mul
1175
1176.align	5
1177.Lsqr8x_break:
1178	ld	9,8*8(3)
1179	addi	4,3,8*15
1180	ld	10,8*9(3)
1181	sub.	18,6,4
1182	ld	11,8*10(3)
1183	sub	19,5,18
1184	ld	12,8*11(3)
1185	ld	14,8*12(3)
1186	ld	15,8*13(3)
1187	ld	16,8*14(3)
1188	ld	17,8*15(3)
1189	beq	.Lsqr8x_outer_loop
1190
1191	std	22,8*1(5)
1192	ld	22,8*1(19)
1193	std	23,8*2(5)
1194	ld	23,8*2(19)
1195	std	24,8*3(5)
1196	ld	24,8*3(19)
1197	std	25,8*4(5)
1198	ld	25,8*4(19)
1199	std	26,8*5(5)
1200	ld	26,8*5(19)
1201	std	27,8*6(5)
1202	ld	27,8*6(19)
1203	std	28,8*7(5)
1204	ld	28,8*7(19)
1205	std	29,8*8(5)
1206	ld	29,8*8(19)
1207	mr	5,19
1208	b	.Lsqr8x_outer_loop
1209
1210.align	5
1211.Lsqr8x_outer_break:
1212
1213
1214	ld	10,8*1(18)
1215	ld	12,8*2(18)
1216	ld	15,8*3(18)
1217	ld	17,8*4(18)
1218	addi	4,18,8*4
1219
1220	ld	19,8*13(1)
1221	ld	20,8*14(1)
1222	ld	21,8*15(1)
1223	ld	18,8*16(1)
1224
1225	std	22,8*1(5)
1226	srwi	30,8,5
1227	std	23,8*2(5)
1228	subi	30,30,1
1229	std	24,8*3(5)
1230	std	25,8*4(5)
1231	std	26,8*5(5)
1232	std	27,8*6(5)
1233	std	28,8*7(5)
1234
1235	addi	5,1,8*11
1236	mulld	22,10,10
1237	mulhdu	10,10,10
1238	add	23,19,19
1239	srdi	19,19,64-1
1240	mulld	11,12,12
1241	mulhdu	12,12,12
1242	addc	23,23,10
1243	add	24,20,20
1244	srdi	20,20,64-1
1245	add	25,21,21
1246	srdi	21,21,64-1
1247	or	24,24,19
1248
1249	mtctr	30
1250.Lsqr4x_shift_n_add:
1251	mulld	14,15,15
1252	mulhdu	15,15,15
1253	ld	19,8*6(5)
1254	ld	10,8*1(4)
1255	adde	24,24,11
1256	add	26,18,18
1257	srdi	18,18,64-1
1258	or	25,25,20
1259	ld	20,8*7(5)
1260	adde	25,25,12
1261	ld	12,8*2(4)
1262	add	27,19,19
1263	srdi	19,19,64-1
1264	or	26,26,21
1265	ld	21,8*8(5)
1266	mulld	16,17,17
1267	mulhdu	17,17,17
1268	adde	26,26,14
1269	add	28,20,20
1270	srdi	20,20,64-1
1271	or	27,27,18
1272	ld	18,8*9(5)
1273	adde	27,27,15
1274	ld	15,8*3(4)
1275	add	29,21,21
1276	srdi	21,21,64-1
1277	or	28,28,19
1278	ld	19,8*10(5)
1279	mulld	9,10,10
1280	mulhdu	10,10,10
1281	adde	28,28,16
1282	std	22,8*1(5)
1283	add	22,18,18
1284	srdi	18,18,64-1
1285	or	29,29,20
1286	ld	20,8*11(5)
1287	adde	29,29,17
1288	ldu	17,8*4(4)
1289	std	23,8*2(5)
1290	add	23,19,19
1291	srdi	19,19,64-1
1292	or	22,22,21
1293	ld	21,8*12(5)
1294	mulld	11,12,12
1295	mulhdu	12,12,12
1296	adde	22,22,9
1297	std	24,8*3(5)
1298	add	24,20,20
1299	srdi	20,20,64-1
1300	or	23,23,18
1301	ld	18,8*13(5)
1302	adde	23,23,10
1303	std	25,8*4(5)
1304	std	26,8*5(5)
1305	std	27,8*6(5)
1306	std	28,8*7(5)
1307	stdu	29,8*8(5)
1308	add	25,21,21
1309	srdi	21,21,64-1
1310	or	24,24,19
1311	bc	16,0,.Lsqr4x_shift_n_add
1312	ld	4,8*7(1)
1313	ld	7,8*8(1)
1314
1315	mulld	14,15,15
1316	mulhdu	15,15,15
1317	std	22,8*1(5)
1318	ld	22,8*12(1)
1319	ld	19,8*6(5)
1320	adde	24,24,11
1321	add	26,18,18
1322	srdi	18,18,64-1
1323	or	25,25,20
1324	ld	20,8*7(5)
1325	adde	25,25,12
1326	add	27,19,19
1327	srdi	19,19,64-1
1328	or	26,26,21
1329	mulld	16,17,17
1330	mulhdu	17,17,17
1331	adde	26,26,14
1332	add	28,20,20
1333	srdi	20,20,64-1
1334	or	27,27,18
1335	std	23,8*2(5)
1336	ld	23,8*13(1)
1337	adde	27,27,15
1338	or	28,28,19
1339	ld	9,8*1(4)
1340	ld	10,8*2(4)
1341	adde	28,28,16
1342	ld	11,8*3(4)
1343	ld	12,8*4(4)
1344	adde	29,17,20
1345	ld	14,8*5(4)
1346	ld	15,8*6(4)
1347
1348
1349
1350	mulld	31,7,22
1351	li	30,8
1352	ld	16,8*7(4)
1353	add	6,4,8
1354	ldu	17,8*8(4)
1355	std	24,8*3(5)
1356	ld	24,8*14(1)
1357	std	25,8*4(5)
1358	ld	25,8*15(1)
1359	std	26,8*5(5)
1360	ld	26,8*16(1)
1361	std	27,8*6(5)
1362	ld	27,8*17(1)
1363	std	28,8*7(5)
1364	ld	28,8*18(1)
1365	std	29,8*8(5)
1366	ld	29,8*19(1)
1367	addi	5,1,8*11
1368	mtctr	30
1369	b	.Lsqr8x_reduction
1370
1371.align	5
1372.Lsqr8x_reduction:
1373
1374	mulld	19,10,31
1375	mulld	20,11,31
1376	stdu	31,8(5)
1377	mulld	21,12,31
1378
1379	addic	22,22,-1
1380	mulld	18,14,31
1381	adde	22,23,19
1382	mulld	19,15,31
1383	adde	23,24,20
1384	mulld	20,16,31
1385	adde	24,25,21
1386	mulld	21,17,31
1387	adde	25,26,18
1388	mulhdu	18,9,31
1389	adde	26,27,19
1390	mulhdu	19,10,31
1391	adde	27,28,20
1392	mulhdu	20,11,31
1393	adde	28,29,21
1394	mulhdu	21,12,31
1395	addze	29,0
1396	addc	22,22,18
1397	mulhdu	18,14,31
1398	adde	23,23,19
1399	mulhdu	19,15,31
1400	adde	24,24,20
1401	mulhdu	20,16,31
1402	adde	25,25,21
1403	mulhdu	21,17,31
1404	mulld	31,7,22
1405	adde	26,26,18
1406	adde	27,27,19
1407	adde	28,28,20
1408	adde	29,29,21
1409	bc	16,0,.Lsqr8x_reduction
1410
1411	ld	18,8*1(5)
1412	ld	19,8*2(5)
1413	ld	20,8*3(5)
1414	ld	21,8*4(5)
1415	subi	3,5,8*7
1416	cmpld	6,4
1417	addc	22,22,18
1418	ld	18,8*5(5)
1419	adde	23,23,19
1420	ld	19,8*6(5)
1421	adde	24,24,20
1422	ld	20,8*7(5)
1423	adde	25,25,21
1424	ld	21,8*8(5)
1425	adde	26,26,18
1426	adde	27,27,19
1427	adde	28,28,20
1428	adde	29,29,21
1429
1430	beq	.Lsqr8x8_post_condition
1431
1432	ld	7,8*0(3)
1433	ld	9,8*1(4)
1434	ld	10,8*2(4)
1435	ld	11,8*3(4)
1436	ld	12,8*4(4)
1437	ld	14,8*5(4)
1438	ld	15,8*6(4)
1439	ld	16,8*7(4)
1440	ldu	17,8*8(4)
1441	li	30,0
1442
1443.align	5
1444.Lsqr8x_tail:
1445	mulld	18,9,7
1446	addze	31,0
1447	mulld	19,10,7
1448	addi	30,30,8
1449	mulld	20,11,7
1450	andi.	30,30,8*8-1
1451	mulld	21,12,7
1452	addc	22,22,18
1453	mulld	18,14,7
1454	adde	23,23,19
1455	mulld	19,15,7
1456	adde	24,24,20
1457	mulld	20,16,7
1458	adde	25,25,21
1459	mulld	21,17,7
1460	adde	26,26,18
1461	mulhdu	18,9,7
1462	adde	27,27,19
1463	mulhdu	19,10,7
1464	adde	28,28,20
1465	mulhdu	20,11,7
1466	adde	29,29,21
1467	mulhdu	21,12,7
1468	addze	31,31
1469	stdu	22,8(5)
1470	addc	22,23,18
1471	mulhdu	18,14,7
1472	adde	23,24,19
1473	mulhdu	19,15,7
1474	adde	24,25,20
1475	mulhdu	20,16,7
1476	adde	25,26,21
1477	mulhdu	21,17,7
1478	ldx	7,3,30
1479	adde	26,27,18
1480	adde	27,28,19
1481	adde	28,29,20
1482	adde	29,31,21
1483
1484	bne	.Lsqr8x_tail
1485
1486
1487	ld	9,8*1(5)
1488	ld	31,8*10(1)
1489	cmpld	6,4
1490	ld	10,8*2(5)
1491	sub	20,6,8
1492	ld	11,8*3(5)
1493	ld	12,8*4(5)
1494	ld	14,8*5(5)
1495	ld	15,8*6(5)
1496	ld	16,8*7(5)
1497	ld	17,8*8(5)
1498	beq	.Lsqr8x_tail_break
1499
1500	addc	22,22,9
1501	ld	9,8*1(4)
1502	adde	23,23,10
1503	ld	10,8*2(4)
1504	adde	24,24,11
1505	ld	11,8*3(4)
1506	adde	25,25,12
1507	ld	12,8*4(4)
1508	adde	26,26,14
1509	ld	14,8*5(4)
1510	adde	27,27,15
1511	ld	15,8*6(4)
1512	adde	28,28,16
1513	ld	16,8*7(4)
1514	adde	29,29,17
1515	ldu	17,8*8(4)
1516
1517	b	.Lsqr8x_tail
1518
1519.align	5
1520.Lsqr8x_tail_break:
1521	ld	7,8*8(1)
1522	ld	21,8*9(1)
1523	addi	30,5,8*8
1524
1525	addic	31,31,-1
1526	adde	18,22,9
1527	ld	22,8*8(3)
1528	ld	9,8*1(20)
1529	adde	19,23,10
1530	ld	23,8*9(3)
1531	ld	10,8*2(20)
1532	adde	24,24,11
1533	ld	11,8*3(20)
1534	adde	25,25,12
1535	ld	12,8*4(20)
1536	adde	26,26,14
1537	ld	14,8*5(20)
1538	adde	27,27,15
1539	ld	15,8*6(20)
1540	adde	28,28,16
1541	ld	16,8*7(20)
1542	adde	29,29,17
1543	ld	17,8*8(20)
1544	addi	4,20,8*8
1545	addze	20,0
1546	mulld	31,7,22
1547	std	18,8*1(5)
1548	cmpld	30,21
1549	std	19,8*2(5)
1550	li	30,8
1551	std	24,8*3(5)
1552	ld	24,8*10(3)
1553	std	25,8*4(5)
1554	ld	25,8*11(3)
1555	std	26,8*5(5)
1556	ld	26,8*12(3)
1557	std	27,8*6(5)
1558	ld	27,8*13(3)
1559	std	28,8*7(5)
1560	ld	28,8*14(3)
1561	std	29,8*8(5)
1562	ld	29,8*15(3)
1563	std	20,8*10(1)
1564	addi	5,3,8*7
1565	mtctr	30
1566	bne	.Lsqr8x_reduction
1567
1568
1569
1570
1571
1572
1573	ld	3,8*6(1)
1574	srwi	30,8,6
1575	mr	7,5
1576	addi	5,5,8*8
1577	subi	30,30,1
1578	subfc	18,9,22
1579	subfe	19,10,23
1580	mr	31,20
1581	mr	6,3
1582
1583	mtctr	30
1584	b	.Lsqr8x_sub
1585
1586.align	5
1587.Lsqr8x_sub:
1588	ld	9,8*1(4)
1589	ld	22,8*1(5)
1590	ld	10,8*2(4)
1591	ld	23,8*2(5)
1592	subfe	20,11,24
1593	ld	11,8*3(4)
1594	ld	24,8*3(5)
1595	subfe	21,12,25
1596	ld	12,8*4(4)
1597	ld	25,8*4(5)
1598	std	18,8*1(3)
1599	subfe	18,14,26
1600	ld	14,8*5(4)
1601	ld	26,8*5(5)
1602	std	19,8*2(3)
1603	subfe	19,15,27
1604	ld	15,8*6(4)
1605	ld	27,8*6(5)
1606	std	20,8*3(3)
1607	subfe	20,16,28
1608	ld	16,8*7(4)
1609	ld	28,8*7(5)
1610	std	21,8*4(3)
1611	subfe	21,17,29
1612	ldu	17,8*8(4)
1613	ldu	29,8*8(5)
1614	std	18,8*5(3)
1615	subfe	18,9,22
1616	std	19,8*6(3)
1617	subfe	19,10,23
1618	std	20,8*7(3)
1619	stdu	21,8*8(3)
1620	bc	16,0,.Lsqr8x_sub
1621
1622	srwi	30,8,5
1623	ld	9,8*1(6)
1624	ld	22,8*1(7)
1625	subi	30,30,1
1626	ld	10,8*2(6)
1627	ld	23,8*2(7)
1628	subfe	20,11,24
1629	ld	11,8*3(6)
1630	ld	24,8*3(7)
1631	subfe	21,12,25
1632	ld	12,8*4(6)
1633	ldu	25,8*4(7)
1634	std	18,8*1(3)
1635	subfe	18,14,26
1636	std	19,8*2(3)
1637	subfe	19,15,27
1638	std	20,8*3(3)
1639	subfe	20,16,28
1640	std	21,8*4(3)
1641	subfe	21,17,29
1642	std	18,8*5(3)
1643	subfe	31,0,31
1644	std	19,8*6(3)
1645	std	20,8*7(3)
1646	std	21,8*8(3)
1647
1648	addi	5,1,8*11
1649	mtctr	30
1650
1651.Lsqr4x_cond_copy:
1652	andc	9,9,31
1653	std	0,-8*3(7)
1654	and	22,22,31
1655	std	0,-8*2(7)
1656	andc	10,10,31
1657	std	0,-8*1(7)
1658	and	23,23,31
1659	std	0,-8*0(7)
1660	andc	11,11,31
1661	std	0,8*1(5)
1662	and	24,24,31
1663	std	0,8*2(5)
1664	andc	12,12,31
1665	std	0,8*3(5)
1666	and	25,25,31
1667	stdu	0,8*4(5)
1668	or	18,9,22
1669	ld	9,8*5(6)
1670	ld	22,8*1(7)
1671	or	19,10,23
1672	ld	10,8*6(6)
1673	ld	23,8*2(7)
1674	or	20,11,24
1675	ld	11,8*7(6)
1676	ld	24,8*3(7)
1677	or	21,12,25
1678	ld	12,8*8(6)
1679	ldu	25,8*4(7)
1680	std	18,8*1(6)
1681	std	19,8*2(6)
1682	std	20,8*3(6)
1683	stdu	21,8*4(6)
1684	bc	16,0,.Lsqr4x_cond_copy
1685
1686	ld	4,0(1)
1687	andc	9,9,31
1688	and	22,22,31
1689	andc	10,10,31
1690	and	23,23,31
1691	andc	11,11,31
1692	and	24,24,31
1693	andc	12,12,31
1694	and	25,25,31
1695	or	18,9,22
1696	or	19,10,23
1697	or	20,11,24
1698	or	21,12,25
1699	std	18,8*1(6)
1700	std	19,8*2(6)
1701	std	20,8*3(6)
1702	std	21,8*4(6)
1703
1704	b	.Lsqr8x_done
1705
1706.align	5
1707.Lsqr8x8_post_condition:
1708	ld	3,8*6(1)
1709	ld	4,0(1)
1710	addze	31,0
1711
1712
1713	subfc	22,9,22
1714	subfe	23,10,23
1715	std	0,8*12(1)
1716	std	0,8*13(1)
1717	subfe	24,11,24
1718	std	0,8*14(1)
1719	std	0,8*15(1)
1720	subfe	25,12,25
1721	std	0,8*16(1)
1722	std	0,8*17(1)
1723	subfe	26,14,26
1724	std	0,8*18(1)
1725	std	0,8*19(1)
1726	subfe	27,15,27
1727	std	0,8*20(1)
1728	std	0,8*21(1)
1729	subfe	28,16,28
1730	std	0,8*22(1)
1731	std	0,8*23(1)
1732	subfe	29,17,29
1733	std	0,8*24(1)
1734	std	0,8*25(1)
1735	subfe	31,0,31
1736	std	0,8*26(1)
1737	std	0,8*27(1)
1738
1739	and	9,9,31
1740	and	10,10,31
1741	addc	22,22,9
1742	and	11,11,31
1743	adde	23,23,10
1744	and	12,12,31
1745	adde	24,24,11
1746	and	14,14,31
1747	adde	25,25,12
1748	and	15,15,31
1749	adde	26,26,14
1750	and	16,16,31
1751	adde	27,27,15
1752	and	17,17,31
1753	adde	28,28,16
1754	adde	29,29,17
1755	std	22,8*1(3)
1756	std	23,8*2(3)
1757	std	24,8*3(3)
1758	std	25,8*4(3)
1759	std	26,8*5(3)
1760	std	27,8*6(3)
1761	std	28,8*7(3)
1762	std	29,8*8(3)
1763
1764.Lsqr8x_done:
1765	std	0,8*8(1)
1766	std	0,8*10(1)
1767
1768	ld	14,-8*18(4)
1769	li	3,1
1770	ld	15,-8*17(4)
1771	ld	16,-8*16(4)
1772	ld	17,-8*15(4)
1773	ld	18,-8*14(4)
1774	ld	19,-8*13(4)
1775	ld	20,-8*12(4)
1776	ld	21,-8*11(4)
1777	ld	22,-8*10(4)
1778	ld	23,-8*9(4)
1779	ld	24,-8*8(4)
1780	ld	25,-8*7(4)
1781	ld	26,-8*6(4)
1782	ld	27,-8*5(4)
1783	ld	28,-8*4(4)
1784	ld	29,-8*3(4)
1785	ld	30,-8*2(4)
1786	ld	31,-8*1(4)
1787	mr	1,4
1788	blr
1789.long	0
1790.byte	0,12,4,0x20,0x80,18,6,0
1791.long	0
1792
1793.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,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
1794.align	2
1795