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