1.text
2
3.globl	x25519_fe51_mul
4.type	x25519_fe51_mul,@function
5.section	".opd","aw"
6.align	3
7x25519_fe51_mul:
8.quad	.x25519_fe51_mul,.TOC.@tocbase,0
9.previous
10
11.align	5
12.x25519_fe51_mul:
13	stdu	1,-144(1)
14	std	21,56(1)
15	std	22,64(1)
16	std	23,72(1)
17	std	24,80(1)
18	std	25,88(1)
19	std	26,96(1)
20	std	27,104(1)
21	std	28,112(1)
22	std	29,120(1)
23	std	30,128(1)
24	std	31,136(1)
25
26	ld	6,0(5)
27	ld	7,0(4)
28	ld	8,8(4)
29	ld	9,16(4)
30	ld	10,24(4)
31	ld	11,32(4)
32
33	mulld	22,7,6
34	mulhdu	23,7,6
35
36	mulld	24,8,6
37	mulhdu	25,8,6
38
39	mulld	30,11,6
40	mulhdu	31,11,6
41	ld	4,8(5)
42	mulli	11,11,19
43
44	mulld	26,9,6
45	mulhdu	27,9,6
46
47	mulld	28,10,6
48	mulhdu	29,10,6
49	mulld	12,11,4
50	mulhdu	21,11,4
51	addc	22,22,12
52	adde	23,23,21
53
54	mulld	12,7,4
55	mulhdu	21,7,4
56	addc	24,24,12
57	adde	25,25,21
58
59	mulld	12,10,4
60	mulhdu	21,10,4
61	ld	6,16(5)
62	mulli	10,10,19
63	addc	30,30,12
64	adde	31,31,21
65
66	mulld	12,8,4
67	mulhdu	21,8,4
68	addc	26,26,12
69	adde	27,27,21
70
71	mulld	12,9,4
72	mulhdu	21,9,4
73	addc	28,28,12
74	adde	29,29,21
75	mulld	12,10,6
76	mulhdu	21,10,6
77	addc	22,22,12
78	adde	23,23,21
79
80	mulld	12,11,6
81	mulhdu	21,11,6
82	addc	24,24,12
83	adde	25,25,21
84
85	mulld	12,9,6
86	mulhdu	21,9,6
87	ld	4,24(5)
88	mulli	9,9,19
89	addc	30,30,12
90	adde	31,31,21
91
92	mulld	12,7,6
93	mulhdu	21,7,6
94	addc	26,26,12
95	adde	27,27,21
96
97	mulld	12,8,6
98	mulhdu	21,8,6
99	addc	28,28,12
100	adde	29,29,21
101	mulld	12,9,4
102	mulhdu	21,9,4
103	addc	22,22,12
104	adde	23,23,21
105
106	mulld	12,10,4
107	mulhdu	21,10,4
108	addc	24,24,12
109	adde	25,25,21
110
111	mulld	12,8,4
112	mulhdu	21,8,4
113	ld	6,32(5)
114	mulli	8,8,19
115	addc	30,30,12
116	adde	31,31,21
117
118	mulld	12,11,4
119	mulhdu	21,11,4
120	addc	26,26,12
121	adde	27,27,21
122
123	mulld	12,7,4
124	mulhdu	21,7,4
125	addc	28,28,12
126	adde	29,29,21
127	mulld	12,8,6
128	mulhdu	21,8,6
129	addc	22,22,12
130	adde	23,23,21
131
132	mulld	12,9,6
133	mulhdu	21,9,6
134	addc	24,24,12
135	adde	25,25,21
136
137	mulld	12,10,6
138	mulhdu	21,10,6
139	addc	26,26,12
140	adde	27,27,21
141
142	mulld	12,11,6
143	mulhdu	21,11,6
144	addc	28,28,12
145	adde	29,29,21
146
147	mulld	12,7,6
148	mulhdu	21,7,6
149	addc	30,30,12
150	adde	31,31,21
151
152.Lfe51_reduce:
153	li	0,-1
154	srdi	0,0,13
155
156	srdi	12,26,51
157	and	9,26,0
158	insrdi	12,27,51,0
159	srdi	21,22,51
160	and	7,22,0
161	insrdi	21,23,51,0
162	addc	28,28,12
163	addze	29,29
164	addc	24,24,21
165	addze	25,25
166
167	srdi	12,28,51
168	and	10,28,0
169	insrdi	12,29,51,0
170	srdi	21,24,51
171	and	8,24,0
172	insrdi	21,25,51,0
173	addc	30,30,12
174	addze	31,31
175	add	9,9,21
176
177	srdi	12,30,51
178	and	11,30,0
179	insrdi	12,31,51,0
180	mulli	12,12,19
181
182	add	7,7,12
183
184	srdi	21,9,51
185	and	9,9,0
186	add	10,10,21
187
188	srdi	12,7,51
189	and	7,7,0
190	add	8,8,12
191
192	std	9,16(3)
193	std	10,24(3)
194	std	11,32(3)
195	std	7,0(3)
196	std	8,8(3)
197
198	ld	21,56(1)
199	ld	22,64(1)
200	ld	23,72(1)
201	ld	24,80(1)
202	ld	25,88(1)
203	ld	26,96(1)
204	ld	27,104(1)
205	ld	28,112(1)
206	ld	29,120(1)
207	ld	30,128(1)
208	ld	31,136(1)
209	addi	1,1,144
210	blr
211.long	0
212.byte	0,12,4,0,0x80,11,3,0
213.long	0
214
215.globl	x25519_fe51_sqr
216.type	x25519_fe51_sqr,@function
217.section	".opd","aw"
218.align	3
219x25519_fe51_sqr:
220.quad	.x25519_fe51_sqr,.TOC.@tocbase,0
221.previous
222
223.align	5
224.x25519_fe51_sqr:
225	stdu	1,-144(1)
226	std	21,56(1)
227	std	22,64(1)
228	std	23,72(1)
229	std	24,80(1)
230	std	25,88(1)
231	std	26,96(1)
232	std	27,104(1)
233	std	28,112(1)
234	std	29,120(1)
235	std	30,128(1)
236	std	31,136(1)
237
238	ld	7,0(4)
239	ld	8,8(4)
240	ld	9,16(4)
241	ld	10,24(4)
242	ld	11,32(4)
243
244	add	6,7,7
245	mulli	21,11,19
246
247	mulld	22,7,7
248	mulhdu	23,7,7
249	mulld	24,8,6
250	mulhdu	25,8,6
251	mulld	26,9,6
252	mulhdu	27,9,6
253	mulld	28,10,6
254	mulhdu	29,10,6
255	mulld	30,11,6
256	mulhdu	31,11,6
257	add	6,8,8
258	mulld	12,11,21
259	mulhdu	11,11,21
260	addc	28,28,12
261	adde	29,29,11
262
263	mulli	5,10,19
264
265	mulld	12,8,8
266	mulhdu	11,8,8
267	addc	26,26,12
268	adde	27,27,11
269	mulld	12,9,6
270	mulhdu	11,9,6
271	addc	28,28,12
272	adde	29,29,11
273	mulld	12,10,6
274	mulhdu	11,10,6
275	addc	30,30,12
276	adde	31,31,11
277	mulld	12,21,6
278	mulhdu	11,21,6
279	add	6,10,10
280	addc	22,22,12
281	adde	23,23,11
282	mulld	12,10,5
283	mulhdu	10,10,5
284	addc	24,24,12
285	adde	25,25,10
286	mulld	12,6,21
287	mulhdu	10,6,21
288	add	6,9,9
289	addc	26,26,12
290	adde	27,27,10
291
292	mulld	12,9,9
293	mulhdu	10,9,9
294	addc	30,30,12
295	adde	31,31,10
296	mulld	12,5,6
297	mulhdu	10,5,6
298	addc	22,22,12
299	adde	23,23,10
300	mulld	12,21,6
301	mulhdu	10,21,6
302	addc	24,24,12
303	adde	25,25,10
304
305	b	.Lfe51_reduce
306.long	0
307.byte	0,12,4,0,0x80,11,2,0
308.long	0
309
310.globl	x25519_fe51_mul121666
311.type	x25519_fe51_mul121666,@function
312.section	".opd","aw"
313.align	3
314x25519_fe51_mul121666:
315.quad	.x25519_fe51_mul121666,.TOC.@tocbase,0
316.previous
317
318.align	5
319.x25519_fe51_mul121666:
320	stdu	1,-144(1)
321	std	21,56(1)
322	std	22,64(1)
323	std	23,72(1)
324	std	24,80(1)
325	std	25,88(1)
326	std	26,96(1)
327	std	27,104(1)
328	std	28,112(1)
329	std	29,120(1)
330	std	30,128(1)
331	std	31,136(1)
332
333	lis	6,1
334	ori	6,6,56130
335	ld	7,0(4)
336	ld	8,8(4)
337	ld	9,16(4)
338	ld	10,24(4)
339	ld	11,32(4)
340
341	mulld	22,7,6
342	mulhdu	23,7,6
343	mulld	24,8,6
344	mulhdu	25,8,6
345	mulld	26,9,6
346	mulhdu	27,9,6
347	mulld	28,10,6
348	mulhdu	29,10,6
349	mulld	30,11,6
350	mulhdu	31,11,6
351
352	b	.Lfe51_reduce
353.long	0
354.byte	0,12,4,0,0x80,11,2,0
355.long	0
356
357