1.machine	"any"
2.text
3
4.globl	bn_mul_mont_int
5.type	bn_mul_mont_int,@function
6.align	4
7bn_mul_mont_int:
8	cmpwi	8,4
9	mr	9,3
10	li	3,0
11	bclr	12,0
12	cmpwi	8,32
13	bgelr
14	slwi	8,8,2
15	li	12,-4096
16	addi	3,8,256
17	subf	3,3,1
18	and	3,3,12
19	subf	3,1,3
20	mr	12,1
21	srwi	8,8,2
22	stwux	1,1,3
23
24	stw	20,-48(12)
25	stw	21,-44(12)
26	stw	22,-40(12)
27	stw	23,-36(12)
28	stw	24,-32(12)
29	stw	25,-28(12)
30	stw	26,-24(12)
31	stw	27,-20(12)
32	stw	28,-16(12)
33	stw	29,-12(12)
34	stw	30,-8(12)
35	stw	31,-4(12)
36
37	lwz	7,0(7)
38	addi	8,8,-2
39
40	lwz	23,0(5)
41	lwz	10,0(4)
42	addi	22,1,32
43	mullw	25,10,23
44	mulhwu	26,10,23
45
46	lwz	10,4(4)
47	lwz	11,0(6)
48
49	mullw	24,25,7
50
51	mullw	29,10,23
52	mulhwu	30,10,23
53
54	mullw	27,11,24
55	mulhwu	28,11,24
56	lwz	11,4(6)
57	addc	27,27,25
58	addze	28,28
59
60	mullw	31,11,24
61	mulhwu	0,11,24
62
63	mtctr	8
64	li	21,8
65.align	4
66.L1st:
67	lwzx	10,4,21
68	addc	25,29,26
69	lwzx	11,6,21
70	addze	26,30
71	mullw	29,10,23
72	addc	27,31,28
73	mulhwu	30,10,23
74	addze	28,0
75	mullw	31,11,24
76	addc	27,27,25
77	mulhwu	0,11,24
78	addze	28,28
79	stw	27,0(22)
80
81	addi	21,21,4
82	addi	22,22,4
83	bdnz+	.L1st
84
85	addc	25,29,26
86	addze	26,30
87
88	addc	27,31,28
89	addze	28,0
90	addc	27,27,25
91	addze	28,28
92	stw	27,0(22)
93
94	li	3,0
95	addc	28,28,26
96	addze	3,3
97	stw	28,4(22)
98
99	li	20,4
100.align	4
101.Louter:
102	lwzx	23,5,20
103	lwz	10,0(4)
104	addi	22,1,32
105	lwz	12,32(1)
106	mullw	25,10,23
107	mulhwu	26,10,23
108	lwz	10,4(4)
109	lwz	11,0(6)
110	addc	25,25,12
111	mullw	29,10,23
112	addze	26,26
113	mullw	24,25,7
114	mulhwu	30,10,23
115	mullw	27,11,24
116	mulhwu	28,11,24
117	lwz	11,4(6)
118	addc	27,27,25
119	mullw	31,11,24
120	addze	28,28
121	mulhwu	0,11,24
122
123	mtctr	8
124	li	21,8
125.align	4
126.Linner:
127	lwzx	10,4,21
128	addc	25,29,26
129	lwz	12,4(22)
130	addze	26,30
131	lwzx	11,6,21
132	addc	27,31,28
133	mullw	29,10,23
134	addze	28,0
135	mulhwu	30,10,23
136	addc	25,25,12
137	mullw	31,11,24
138	addze	26,26
139	mulhwu	0,11,24
140	addc	27,27,25
141	addi	21,21,4
142	addze	28,28
143	stw	27,0(22)
144	addi	22,22,4
145	bdnz+	.Linner
146
147	lwz	12,4(22)
148	addc	25,29,26
149	addze	26,30
150	addc	25,25,12
151	addze	26,26
152
153	addc	27,31,28
154	addze	28,0
155	addc	27,27,25
156	addze	28,28
157	stw	27,0(22)
158
159	addic	3,3,-1
160	li	3,0
161	adde	28,28,26
162	addze	3,3
163	stw	28,4(22)
164
165	slwi	12,8,2
166	.long	0x7c146040
167	addi	20,20,4
168	ble-	.Louter
169
170	addi	8,8,2
171	subfc	21,21,21
172	addi	22,1,32
173	mtctr	8
174
175.align	4
176.Lsub:	lwzx	12,22,21
177	lwzx	11,6,21
178	subfe	10,11,12
179	stwx	10,9,21
180	addi	21,21,4
181	bdnz+	.Lsub
182
183	li	21,0
184	mtctr	8
185	subfe	3,21,3
186	and	4,22,3
187	andc	6,9,3
188	or	4,4,6
189
190.align	4
191.Lcopy:
192	lwzx	12,4,21
193	stwx	12,9,21
194	stwx	21,22,21
195	addi	21,21,4
196	bdnz+	.Lcopy
197
198	lwz	12,0(1)
199	li	3,1
200	lwz	20,-48(12)
201	lwz	21,-44(12)
202	lwz	22,-40(12)
203	lwz	23,-36(12)
204	lwz	24,-32(12)
205	lwz	25,-28(12)
206	lwz	26,-24(12)
207	lwz	27,-20(12)
208	lwz	28,-16(12)
209	lwz	29,-12(12)
210	lwz	30,-8(12)
211	lwz	31,-4(12)
212	mr	1,12
213	blr
214.long	0
215.byte	0,12,4,0,0x80,12,6,0
216.long	0
217
218.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,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
219.align	2
220