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