1// Code generated by Fiat Cryptography. DO NOT EDIT.
2//
3// Autogenerated: word_by_word_montgomery --lang Go --no-wide-int --cmovznz-by-mul --relax-primitive-carry-to-bitwidth 32,64 --internal-static --public-function-case camelCase --public-type-case camelCase --private-function-case camelCase --private-type-case camelCase --doc-text-before-function-name '' --doc-newline-before-package-declaration --doc-prepend-header 'Code generated by Fiat Cryptography. DO NOT EDIT.' --package-name fiat --no-prefix-fiat p521 64 '2^521 - 1' mul square add sub one from_montgomery to_montgomery selectznz to_bytes from_bytes
4//
5// curve description: p521
6//
7// machine_wordsize = 64 (from "64")
8//
9// requested operations: mul, square, add, sub, one, from_montgomery, to_montgomery, selectznz, to_bytes, from_bytes
10//
11// m = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (from "2^521 - 1")
12//
13//
14//
15// NOTE: In addition to the bounds specified above each function, all
16//
17//   functions synthesized for this Montgomery arithmetic require the
18//
19//   input to be strictly less than the prime modulus (m), and also
20//
21//   require the input to be in the unique saturated representation.
22//
23//   All functions also ensure that these two properties are true of
24//
25//   return values.
26//
27//
28//
29// Computed values:
30//
31//   eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) + (z[6] << 0x180) + (z[7] << 0x1c0) + (z[8] << 2^9)
32//
33//   bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) + (z[32] << 256) + (z[33] << 0x108) + (z[34] << 0x110) + (z[35] << 0x118) + (z[36] << 0x120) + (z[37] << 0x128) + (z[38] << 0x130) + (z[39] << 0x138) + (z[40] << 0x140) + (z[41] << 0x148) + (z[42] << 0x150) + (z[43] << 0x158) + (z[44] << 0x160) + (z[45] << 0x168) + (z[46] << 0x170) + (z[47] << 0x178) + (z[48] << 0x180) + (z[49] << 0x188) + (z[50] << 0x190) + (z[51] << 0x198) + (z[52] << 0x1a0) + (z[53] << 0x1a8) + (z[54] << 0x1b0) + (z[55] << 0x1b8) + (z[56] << 0x1c0) + (z[57] << 0x1c8) + (z[58] << 0x1d0) + (z[59] << 0x1d8) + (z[60] << 0x1e0) + (z[61] << 0x1e8) + (z[62] << 0x1f0) + (z[63] << 0x1f8) + (z[64] << 2^9) + (z[65] << 0x208)
34//
35//   twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) + (z[6] << 0x180) + (z[7] << 0x1c0) + (z[8] << 2^9) in
36//
37//                            if x1 & (2^576-1) < 2^575 then x1 & (2^576-1) else (x1 & (2^576-1)) - 2^576
38
39package fiat
40
41import "math/bits"
42
43type p521Uint1 uint64 // We use uint64 instead of a more narrow type for performance reasons; see https://github.com/mit-plv/fiat-crypto/pull/1006#issuecomment-892625927
44type p521Int1 int64   // We use uint64 instead of a more narrow type for performance reasons; see https://github.com/mit-plv/fiat-crypto/pull/1006#issuecomment-892625927
45
46// The type p521MontgomeryDomainFieldElement is a field element in the Montgomery domain.
47//
48// Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
49type p521MontgomeryDomainFieldElement [9]uint64
50
51// The type p521NonMontgomeryDomainFieldElement is a field element NOT in the Montgomery domain.
52//
53// Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
54type p521NonMontgomeryDomainFieldElement [9]uint64
55
56// p521CmovznzU64 is a single-word conditional move.
57//
58// Postconditions:
59//
60//	out1 = (if arg1 = 0 then arg2 else arg3)
61//
62// Input Bounds:
63//
64//	arg1: [0x0 ~> 0x1]
65//	arg2: [0x0 ~> 0xffffffffffffffff]
66//	arg3: [0x0 ~> 0xffffffffffffffff]
67//
68// Output Bounds:
69//
70//	out1: [0x0 ~> 0xffffffffffffffff]
71func p521CmovznzU64(out1 *uint64, arg1 p521Uint1, arg2 uint64, arg3 uint64) {
72	x1 := (uint64(arg1) * 0xffffffffffffffff)
73	x2 := ((x1 & arg3) | ((^x1) & arg2))
74	*out1 = x2
75}
76
77// p521Mul multiplies two field elements in the Montgomery domain.
78//
79// Preconditions:
80//
81//	0 ≤ eval arg1 < m
82//	0 ≤ eval arg2 < m
83//
84// Postconditions:
85//
86//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m
87//	0 ≤ eval out1 < m
88func p521Mul(out1 *p521MontgomeryDomainFieldElement, arg1 *p521MontgomeryDomainFieldElement, arg2 *p521MontgomeryDomainFieldElement) {
89	x1 := arg1[1]
90	x2 := arg1[2]
91	x3 := arg1[3]
92	x4 := arg1[4]
93	x5 := arg1[5]
94	x6 := arg1[6]
95	x7 := arg1[7]
96	x8 := arg1[8]
97	x9 := arg1[0]
98	var x10 uint64
99	var x11 uint64
100	x11, x10 = bits.Mul64(x9, arg2[8])
101	var x12 uint64
102	var x13 uint64
103	x13, x12 = bits.Mul64(x9, arg2[7])
104	var x14 uint64
105	var x15 uint64
106	x15, x14 = bits.Mul64(x9, arg2[6])
107	var x16 uint64
108	var x17 uint64
109	x17, x16 = bits.Mul64(x9, arg2[5])
110	var x18 uint64
111	var x19 uint64
112	x19, x18 = bits.Mul64(x9, arg2[4])
113	var x20 uint64
114	var x21 uint64
115	x21, x20 = bits.Mul64(x9, arg2[3])
116	var x22 uint64
117	var x23 uint64
118	x23, x22 = bits.Mul64(x9, arg2[2])
119	var x24 uint64
120	var x25 uint64
121	x25, x24 = bits.Mul64(x9, arg2[1])
122	var x26 uint64
123	var x27 uint64
124	x27, x26 = bits.Mul64(x9, arg2[0])
125	var x28 uint64
126	var x29 uint64
127	x28, x29 = bits.Add64(x27, x24, uint64(0x0))
128	var x30 uint64
129	var x31 uint64
130	x30, x31 = bits.Add64(x25, x22, uint64(p521Uint1(x29)))
131	var x32 uint64
132	var x33 uint64
133	x32, x33 = bits.Add64(x23, x20, uint64(p521Uint1(x31)))
134	var x34 uint64
135	var x35 uint64
136	x34, x35 = bits.Add64(x21, x18, uint64(p521Uint1(x33)))
137	var x36 uint64
138	var x37 uint64
139	x36, x37 = bits.Add64(x19, x16, uint64(p521Uint1(x35)))
140	var x38 uint64
141	var x39 uint64
142	x38, x39 = bits.Add64(x17, x14, uint64(p521Uint1(x37)))
143	var x40 uint64
144	var x41 uint64
145	x40, x41 = bits.Add64(x15, x12, uint64(p521Uint1(x39)))
146	var x42 uint64
147	var x43 uint64
148	x42, x43 = bits.Add64(x13, x10, uint64(p521Uint1(x41)))
149	x44 := (uint64(p521Uint1(x43)) + x11)
150	var x45 uint64
151	var x46 uint64
152	x46, x45 = bits.Mul64(x26, 0x1ff)
153	var x47 uint64
154	var x48 uint64
155	x48, x47 = bits.Mul64(x26, 0xffffffffffffffff)
156	var x49 uint64
157	var x50 uint64
158	x50, x49 = bits.Mul64(x26, 0xffffffffffffffff)
159	var x51 uint64
160	var x52 uint64
161	x52, x51 = bits.Mul64(x26, 0xffffffffffffffff)
162	var x53 uint64
163	var x54 uint64
164	x54, x53 = bits.Mul64(x26, 0xffffffffffffffff)
165	var x55 uint64
166	var x56 uint64
167	x56, x55 = bits.Mul64(x26, 0xffffffffffffffff)
168	var x57 uint64
169	var x58 uint64
170	x58, x57 = bits.Mul64(x26, 0xffffffffffffffff)
171	var x59 uint64
172	var x60 uint64
173	x60, x59 = bits.Mul64(x26, 0xffffffffffffffff)
174	var x61 uint64
175	var x62 uint64
176	x62, x61 = bits.Mul64(x26, 0xffffffffffffffff)
177	var x63 uint64
178	var x64 uint64
179	x63, x64 = bits.Add64(x62, x59, uint64(0x0))
180	var x65 uint64
181	var x66 uint64
182	x65, x66 = bits.Add64(x60, x57, uint64(p521Uint1(x64)))
183	var x67 uint64
184	var x68 uint64
185	x67, x68 = bits.Add64(x58, x55, uint64(p521Uint1(x66)))
186	var x69 uint64
187	var x70 uint64
188	x69, x70 = bits.Add64(x56, x53, uint64(p521Uint1(x68)))
189	var x71 uint64
190	var x72 uint64
191	x71, x72 = bits.Add64(x54, x51, uint64(p521Uint1(x70)))
192	var x73 uint64
193	var x74 uint64
194	x73, x74 = bits.Add64(x52, x49, uint64(p521Uint1(x72)))
195	var x75 uint64
196	var x76 uint64
197	x75, x76 = bits.Add64(x50, x47, uint64(p521Uint1(x74)))
198	var x77 uint64
199	var x78 uint64
200	x77, x78 = bits.Add64(x48, x45, uint64(p521Uint1(x76)))
201	x79 := (uint64(p521Uint1(x78)) + x46)
202	var x81 uint64
203	_, x81 = bits.Add64(x26, x61, uint64(0x0))
204	var x82 uint64
205	var x83 uint64
206	x82, x83 = bits.Add64(x28, x63, uint64(p521Uint1(x81)))
207	var x84 uint64
208	var x85 uint64
209	x84, x85 = bits.Add64(x30, x65, uint64(p521Uint1(x83)))
210	var x86 uint64
211	var x87 uint64
212	x86, x87 = bits.Add64(x32, x67, uint64(p521Uint1(x85)))
213	var x88 uint64
214	var x89 uint64
215	x88, x89 = bits.Add64(x34, x69, uint64(p521Uint1(x87)))
216	var x90 uint64
217	var x91 uint64
218	x90, x91 = bits.Add64(x36, x71, uint64(p521Uint1(x89)))
219	var x92 uint64
220	var x93 uint64
221	x92, x93 = bits.Add64(x38, x73, uint64(p521Uint1(x91)))
222	var x94 uint64
223	var x95 uint64
224	x94, x95 = bits.Add64(x40, x75, uint64(p521Uint1(x93)))
225	var x96 uint64
226	var x97 uint64
227	x96, x97 = bits.Add64(x42, x77, uint64(p521Uint1(x95)))
228	var x98 uint64
229	var x99 uint64
230	x98, x99 = bits.Add64(x44, x79, uint64(p521Uint1(x97)))
231	var x100 uint64
232	var x101 uint64
233	x101, x100 = bits.Mul64(x1, arg2[8])
234	var x102 uint64
235	var x103 uint64
236	x103, x102 = bits.Mul64(x1, arg2[7])
237	var x104 uint64
238	var x105 uint64
239	x105, x104 = bits.Mul64(x1, arg2[6])
240	var x106 uint64
241	var x107 uint64
242	x107, x106 = bits.Mul64(x1, arg2[5])
243	var x108 uint64
244	var x109 uint64
245	x109, x108 = bits.Mul64(x1, arg2[4])
246	var x110 uint64
247	var x111 uint64
248	x111, x110 = bits.Mul64(x1, arg2[3])
249	var x112 uint64
250	var x113 uint64
251	x113, x112 = bits.Mul64(x1, arg2[2])
252	var x114 uint64
253	var x115 uint64
254	x115, x114 = bits.Mul64(x1, arg2[1])
255	var x116 uint64
256	var x117 uint64
257	x117, x116 = bits.Mul64(x1, arg2[0])
258	var x118 uint64
259	var x119 uint64
260	x118, x119 = bits.Add64(x117, x114, uint64(0x0))
261	var x120 uint64
262	var x121 uint64
263	x120, x121 = bits.Add64(x115, x112, uint64(p521Uint1(x119)))
264	var x122 uint64
265	var x123 uint64
266	x122, x123 = bits.Add64(x113, x110, uint64(p521Uint1(x121)))
267	var x124 uint64
268	var x125 uint64
269	x124, x125 = bits.Add64(x111, x108, uint64(p521Uint1(x123)))
270	var x126 uint64
271	var x127 uint64
272	x126, x127 = bits.Add64(x109, x106, uint64(p521Uint1(x125)))
273	var x128 uint64
274	var x129 uint64
275	x128, x129 = bits.Add64(x107, x104, uint64(p521Uint1(x127)))
276	var x130 uint64
277	var x131 uint64
278	x130, x131 = bits.Add64(x105, x102, uint64(p521Uint1(x129)))
279	var x132 uint64
280	var x133 uint64
281	x132, x133 = bits.Add64(x103, x100, uint64(p521Uint1(x131)))
282	x134 := (uint64(p521Uint1(x133)) + x101)
283	var x135 uint64
284	var x136 uint64
285	x135, x136 = bits.Add64(x82, x116, uint64(0x0))
286	var x137 uint64
287	var x138 uint64
288	x137, x138 = bits.Add64(x84, x118, uint64(p521Uint1(x136)))
289	var x139 uint64
290	var x140 uint64
291	x139, x140 = bits.Add64(x86, x120, uint64(p521Uint1(x138)))
292	var x141 uint64
293	var x142 uint64
294	x141, x142 = bits.Add64(x88, x122, uint64(p521Uint1(x140)))
295	var x143 uint64
296	var x144 uint64
297	x143, x144 = bits.Add64(x90, x124, uint64(p521Uint1(x142)))
298	var x145 uint64
299	var x146 uint64
300	x145, x146 = bits.Add64(x92, x126, uint64(p521Uint1(x144)))
301	var x147 uint64
302	var x148 uint64
303	x147, x148 = bits.Add64(x94, x128, uint64(p521Uint1(x146)))
304	var x149 uint64
305	var x150 uint64
306	x149, x150 = bits.Add64(x96, x130, uint64(p521Uint1(x148)))
307	var x151 uint64
308	var x152 uint64
309	x151, x152 = bits.Add64(x98, x132, uint64(p521Uint1(x150)))
310	var x153 uint64
311	var x154 uint64
312	x153, x154 = bits.Add64(uint64(p521Uint1(x99)), x134, uint64(p521Uint1(x152)))
313	var x155 uint64
314	var x156 uint64
315	x156, x155 = bits.Mul64(x135, 0x1ff)
316	var x157 uint64
317	var x158 uint64
318	x158, x157 = bits.Mul64(x135, 0xffffffffffffffff)
319	var x159 uint64
320	var x160 uint64
321	x160, x159 = bits.Mul64(x135, 0xffffffffffffffff)
322	var x161 uint64
323	var x162 uint64
324	x162, x161 = bits.Mul64(x135, 0xffffffffffffffff)
325	var x163 uint64
326	var x164 uint64
327	x164, x163 = bits.Mul64(x135, 0xffffffffffffffff)
328	var x165 uint64
329	var x166 uint64
330	x166, x165 = bits.Mul64(x135, 0xffffffffffffffff)
331	var x167 uint64
332	var x168 uint64
333	x168, x167 = bits.Mul64(x135, 0xffffffffffffffff)
334	var x169 uint64
335	var x170 uint64
336	x170, x169 = bits.Mul64(x135, 0xffffffffffffffff)
337	var x171 uint64
338	var x172 uint64
339	x172, x171 = bits.Mul64(x135, 0xffffffffffffffff)
340	var x173 uint64
341	var x174 uint64
342	x173, x174 = bits.Add64(x172, x169, uint64(0x0))
343	var x175 uint64
344	var x176 uint64
345	x175, x176 = bits.Add64(x170, x167, uint64(p521Uint1(x174)))
346	var x177 uint64
347	var x178 uint64
348	x177, x178 = bits.Add64(x168, x165, uint64(p521Uint1(x176)))
349	var x179 uint64
350	var x180 uint64
351	x179, x180 = bits.Add64(x166, x163, uint64(p521Uint1(x178)))
352	var x181 uint64
353	var x182 uint64
354	x181, x182 = bits.Add64(x164, x161, uint64(p521Uint1(x180)))
355	var x183 uint64
356	var x184 uint64
357	x183, x184 = bits.Add64(x162, x159, uint64(p521Uint1(x182)))
358	var x185 uint64
359	var x186 uint64
360	x185, x186 = bits.Add64(x160, x157, uint64(p521Uint1(x184)))
361	var x187 uint64
362	var x188 uint64
363	x187, x188 = bits.Add64(x158, x155, uint64(p521Uint1(x186)))
364	x189 := (uint64(p521Uint1(x188)) + x156)
365	var x191 uint64
366	_, x191 = bits.Add64(x135, x171, uint64(0x0))
367	var x192 uint64
368	var x193 uint64
369	x192, x193 = bits.Add64(x137, x173, uint64(p521Uint1(x191)))
370	var x194 uint64
371	var x195 uint64
372	x194, x195 = bits.Add64(x139, x175, uint64(p521Uint1(x193)))
373	var x196 uint64
374	var x197 uint64
375	x196, x197 = bits.Add64(x141, x177, uint64(p521Uint1(x195)))
376	var x198 uint64
377	var x199 uint64
378	x198, x199 = bits.Add64(x143, x179, uint64(p521Uint1(x197)))
379	var x200 uint64
380	var x201 uint64
381	x200, x201 = bits.Add64(x145, x181, uint64(p521Uint1(x199)))
382	var x202 uint64
383	var x203 uint64
384	x202, x203 = bits.Add64(x147, x183, uint64(p521Uint1(x201)))
385	var x204 uint64
386	var x205 uint64
387	x204, x205 = bits.Add64(x149, x185, uint64(p521Uint1(x203)))
388	var x206 uint64
389	var x207 uint64
390	x206, x207 = bits.Add64(x151, x187, uint64(p521Uint1(x205)))
391	var x208 uint64
392	var x209 uint64
393	x208, x209 = bits.Add64(x153, x189, uint64(p521Uint1(x207)))
394	x210 := (uint64(p521Uint1(x209)) + uint64(p521Uint1(x154)))
395	var x211 uint64
396	var x212 uint64
397	x212, x211 = bits.Mul64(x2, arg2[8])
398	var x213 uint64
399	var x214 uint64
400	x214, x213 = bits.Mul64(x2, arg2[7])
401	var x215 uint64
402	var x216 uint64
403	x216, x215 = bits.Mul64(x2, arg2[6])
404	var x217 uint64
405	var x218 uint64
406	x218, x217 = bits.Mul64(x2, arg2[5])
407	var x219 uint64
408	var x220 uint64
409	x220, x219 = bits.Mul64(x2, arg2[4])
410	var x221 uint64
411	var x222 uint64
412	x222, x221 = bits.Mul64(x2, arg2[3])
413	var x223 uint64
414	var x224 uint64
415	x224, x223 = bits.Mul64(x2, arg2[2])
416	var x225 uint64
417	var x226 uint64
418	x226, x225 = bits.Mul64(x2, arg2[1])
419	var x227 uint64
420	var x228 uint64
421	x228, x227 = bits.Mul64(x2, arg2[0])
422	var x229 uint64
423	var x230 uint64
424	x229, x230 = bits.Add64(x228, x225, uint64(0x0))
425	var x231 uint64
426	var x232 uint64
427	x231, x232 = bits.Add64(x226, x223, uint64(p521Uint1(x230)))
428	var x233 uint64
429	var x234 uint64
430	x233, x234 = bits.Add64(x224, x221, uint64(p521Uint1(x232)))
431	var x235 uint64
432	var x236 uint64
433	x235, x236 = bits.Add64(x222, x219, uint64(p521Uint1(x234)))
434	var x237 uint64
435	var x238 uint64
436	x237, x238 = bits.Add64(x220, x217, uint64(p521Uint1(x236)))
437	var x239 uint64
438	var x240 uint64
439	x239, x240 = bits.Add64(x218, x215, uint64(p521Uint1(x238)))
440	var x241 uint64
441	var x242 uint64
442	x241, x242 = bits.Add64(x216, x213, uint64(p521Uint1(x240)))
443	var x243 uint64
444	var x244 uint64
445	x243, x244 = bits.Add64(x214, x211, uint64(p521Uint1(x242)))
446	x245 := (uint64(p521Uint1(x244)) + x212)
447	var x246 uint64
448	var x247 uint64
449	x246, x247 = bits.Add64(x192, x227, uint64(0x0))
450	var x248 uint64
451	var x249 uint64
452	x248, x249 = bits.Add64(x194, x229, uint64(p521Uint1(x247)))
453	var x250 uint64
454	var x251 uint64
455	x250, x251 = bits.Add64(x196, x231, uint64(p521Uint1(x249)))
456	var x252 uint64
457	var x253 uint64
458	x252, x253 = bits.Add64(x198, x233, uint64(p521Uint1(x251)))
459	var x254 uint64
460	var x255 uint64
461	x254, x255 = bits.Add64(x200, x235, uint64(p521Uint1(x253)))
462	var x256 uint64
463	var x257 uint64
464	x256, x257 = bits.Add64(x202, x237, uint64(p521Uint1(x255)))
465	var x258 uint64
466	var x259 uint64
467	x258, x259 = bits.Add64(x204, x239, uint64(p521Uint1(x257)))
468	var x260 uint64
469	var x261 uint64
470	x260, x261 = bits.Add64(x206, x241, uint64(p521Uint1(x259)))
471	var x262 uint64
472	var x263 uint64
473	x262, x263 = bits.Add64(x208, x243, uint64(p521Uint1(x261)))
474	var x264 uint64
475	var x265 uint64
476	x264, x265 = bits.Add64(x210, x245, uint64(p521Uint1(x263)))
477	var x266 uint64
478	var x267 uint64
479	x267, x266 = bits.Mul64(x246, 0x1ff)
480	var x268 uint64
481	var x269 uint64
482	x269, x268 = bits.Mul64(x246, 0xffffffffffffffff)
483	var x270 uint64
484	var x271 uint64
485	x271, x270 = bits.Mul64(x246, 0xffffffffffffffff)
486	var x272 uint64
487	var x273 uint64
488	x273, x272 = bits.Mul64(x246, 0xffffffffffffffff)
489	var x274 uint64
490	var x275 uint64
491	x275, x274 = bits.Mul64(x246, 0xffffffffffffffff)
492	var x276 uint64
493	var x277 uint64
494	x277, x276 = bits.Mul64(x246, 0xffffffffffffffff)
495	var x278 uint64
496	var x279 uint64
497	x279, x278 = bits.Mul64(x246, 0xffffffffffffffff)
498	var x280 uint64
499	var x281 uint64
500	x281, x280 = bits.Mul64(x246, 0xffffffffffffffff)
501	var x282 uint64
502	var x283 uint64
503	x283, x282 = bits.Mul64(x246, 0xffffffffffffffff)
504	var x284 uint64
505	var x285 uint64
506	x284, x285 = bits.Add64(x283, x280, uint64(0x0))
507	var x286 uint64
508	var x287 uint64
509	x286, x287 = bits.Add64(x281, x278, uint64(p521Uint1(x285)))
510	var x288 uint64
511	var x289 uint64
512	x288, x289 = bits.Add64(x279, x276, uint64(p521Uint1(x287)))
513	var x290 uint64
514	var x291 uint64
515	x290, x291 = bits.Add64(x277, x274, uint64(p521Uint1(x289)))
516	var x292 uint64
517	var x293 uint64
518	x292, x293 = bits.Add64(x275, x272, uint64(p521Uint1(x291)))
519	var x294 uint64
520	var x295 uint64
521	x294, x295 = bits.Add64(x273, x270, uint64(p521Uint1(x293)))
522	var x296 uint64
523	var x297 uint64
524	x296, x297 = bits.Add64(x271, x268, uint64(p521Uint1(x295)))
525	var x298 uint64
526	var x299 uint64
527	x298, x299 = bits.Add64(x269, x266, uint64(p521Uint1(x297)))
528	x300 := (uint64(p521Uint1(x299)) + x267)
529	var x302 uint64
530	_, x302 = bits.Add64(x246, x282, uint64(0x0))
531	var x303 uint64
532	var x304 uint64
533	x303, x304 = bits.Add64(x248, x284, uint64(p521Uint1(x302)))
534	var x305 uint64
535	var x306 uint64
536	x305, x306 = bits.Add64(x250, x286, uint64(p521Uint1(x304)))
537	var x307 uint64
538	var x308 uint64
539	x307, x308 = bits.Add64(x252, x288, uint64(p521Uint1(x306)))
540	var x309 uint64
541	var x310 uint64
542	x309, x310 = bits.Add64(x254, x290, uint64(p521Uint1(x308)))
543	var x311 uint64
544	var x312 uint64
545	x311, x312 = bits.Add64(x256, x292, uint64(p521Uint1(x310)))
546	var x313 uint64
547	var x314 uint64
548	x313, x314 = bits.Add64(x258, x294, uint64(p521Uint1(x312)))
549	var x315 uint64
550	var x316 uint64
551	x315, x316 = bits.Add64(x260, x296, uint64(p521Uint1(x314)))
552	var x317 uint64
553	var x318 uint64
554	x317, x318 = bits.Add64(x262, x298, uint64(p521Uint1(x316)))
555	var x319 uint64
556	var x320 uint64
557	x319, x320 = bits.Add64(x264, x300, uint64(p521Uint1(x318)))
558	x321 := (uint64(p521Uint1(x320)) + uint64(p521Uint1(x265)))
559	var x322 uint64
560	var x323 uint64
561	x323, x322 = bits.Mul64(x3, arg2[8])
562	var x324 uint64
563	var x325 uint64
564	x325, x324 = bits.Mul64(x3, arg2[7])
565	var x326 uint64
566	var x327 uint64
567	x327, x326 = bits.Mul64(x3, arg2[6])
568	var x328 uint64
569	var x329 uint64
570	x329, x328 = bits.Mul64(x3, arg2[5])
571	var x330 uint64
572	var x331 uint64
573	x331, x330 = bits.Mul64(x3, arg2[4])
574	var x332 uint64
575	var x333 uint64
576	x333, x332 = bits.Mul64(x3, arg2[3])
577	var x334 uint64
578	var x335 uint64
579	x335, x334 = bits.Mul64(x3, arg2[2])
580	var x336 uint64
581	var x337 uint64
582	x337, x336 = bits.Mul64(x3, arg2[1])
583	var x338 uint64
584	var x339 uint64
585	x339, x338 = bits.Mul64(x3, arg2[0])
586	var x340 uint64
587	var x341 uint64
588	x340, x341 = bits.Add64(x339, x336, uint64(0x0))
589	var x342 uint64
590	var x343 uint64
591	x342, x343 = bits.Add64(x337, x334, uint64(p521Uint1(x341)))
592	var x344 uint64
593	var x345 uint64
594	x344, x345 = bits.Add64(x335, x332, uint64(p521Uint1(x343)))
595	var x346 uint64
596	var x347 uint64
597	x346, x347 = bits.Add64(x333, x330, uint64(p521Uint1(x345)))
598	var x348 uint64
599	var x349 uint64
600	x348, x349 = bits.Add64(x331, x328, uint64(p521Uint1(x347)))
601	var x350 uint64
602	var x351 uint64
603	x350, x351 = bits.Add64(x329, x326, uint64(p521Uint1(x349)))
604	var x352 uint64
605	var x353 uint64
606	x352, x353 = bits.Add64(x327, x324, uint64(p521Uint1(x351)))
607	var x354 uint64
608	var x355 uint64
609	x354, x355 = bits.Add64(x325, x322, uint64(p521Uint1(x353)))
610	x356 := (uint64(p521Uint1(x355)) + x323)
611	var x357 uint64
612	var x358 uint64
613	x357, x358 = bits.Add64(x303, x338, uint64(0x0))
614	var x359 uint64
615	var x360 uint64
616	x359, x360 = bits.Add64(x305, x340, uint64(p521Uint1(x358)))
617	var x361 uint64
618	var x362 uint64
619	x361, x362 = bits.Add64(x307, x342, uint64(p521Uint1(x360)))
620	var x363 uint64
621	var x364 uint64
622	x363, x364 = bits.Add64(x309, x344, uint64(p521Uint1(x362)))
623	var x365 uint64
624	var x366 uint64
625	x365, x366 = bits.Add64(x311, x346, uint64(p521Uint1(x364)))
626	var x367 uint64
627	var x368 uint64
628	x367, x368 = bits.Add64(x313, x348, uint64(p521Uint1(x366)))
629	var x369 uint64
630	var x370 uint64
631	x369, x370 = bits.Add64(x315, x350, uint64(p521Uint1(x368)))
632	var x371 uint64
633	var x372 uint64
634	x371, x372 = bits.Add64(x317, x352, uint64(p521Uint1(x370)))
635	var x373 uint64
636	var x374 uint64
637	x373, x374 = bits.Add64(x319, x354, uint64(p521Uint1(x372)))
638	var x375 uint64
639	var x376 uint64
640	x375, x376 = bits.Add64(x321, x356, uint64(p521Uint1(x374)))
641	var x377 uint64
642	var x378 uint64
643	x378, x377 = bits.Mul64(x357, 0x1ff)
644	var x379 uint64
645	var x380 uint64
646	x380, x379 = bits.Mul64(x357, 0xffffffffffffffff)
647	var x381 uint64
648	var x382 uint64
649	x382, x381 = bits.Mul64(x357, 0xffffffffffffffff)
650	var x383 uint64
651	var x384 uint64
652	x384, x383 = bits.Mul64(x357, 0xffffffffffffffff)
653	var x385 uint64
654	var x386 uint64
655	x386, x385 = bits.Mul64(x357, 0xffffffffffffffff)
656	var x387 uint64
657	var x388 uint64
658	x388, x387 = bits.Mul64(x357, 0xffffffffffffffff)
659	var x389 uint64
660	var x390 uint64
661	x390, x389 = bits.Mul64(x357, 0xffffffffffffffff)
662	var x391 uint64
663	var x392 uint64
664	x392, x391 = bits.Mul64(x357, 0xffffffffffffffff)
665	var x393 uint64
666	var x394 uint64
667	x394, x393 = bits.Mul64(x357, 0xffffffffffffffff)
668	var x395 uint64
669	var x396 uint64
670	x395, x396 = bits.Add64(x394, x391, uint64(0x0))
671	var x397 uint64
672	var x398 uint64
673	x397, x398 = bits.Add64(x392, x389, uint64(p521Uint1(x396)))
674	var x399 uint64
675	var x400 uint64
676	x399, x400 = bits.Add64(x390, x387, uint64(p521Uint1(x398)))
677	var x401 uint64
678	var x402 uint64
679	x401, x402 = bits.Add64(x388, x385, uint64(p521Uint1(x400)))
680	var x403 uint64
681	var x404 uint64
682	x403, x404 = bits.Add64(x386, x383, uint64(p521Uint1(x402)))
683	var x405 uint64
684	var x406 uint64
685	x405, x406 = bits.Add64(x384, x381, uint64(p521Uint1(x404)))
686	var x407 uint64
687	var x408 uint64
688	x407, x408 = bits.Add64(x382, x379, uint64(p521Uint1(x406)))
689	var x409 uint64
690	var x410 uint64
691	x409, x410 = bits.Add64(x380, x377, uint64(p521Uint1(x408)))
692	x411 := (uint64(p521Uint1(x410)) + x378)
693	var x413 uint64
694	_, x413 = bits.Add64(x357, x393, uint64(0x0))
695	var x414 uint64
696	var x415 uint64
697	x414, x415 = bits.Add64(x359, x395, uint64(p521Uint1(x413)))
698	var x416 uint64
699	var x417 uint64
700	x416, x417 = bits.Add64(x361, x397, uint64(p521Uint1(x415)))
701	var x418 uint64
702	var x419 uint64
703	x418, x419 = bits.Add64(x363, x399, uint64(p521Uint1(x417)))
704	var x420 uint64
705	var x421 uint64
706	x420, x421 = bits.Add64(x365, x401, uint64(p521Uint1(x419)))
707	var x422 uint64
708	var x423 uint64
709	x422, x423 = bits.Add64(x367, x403, uint64(p521Uint1(x421)))
710	var x424 uint64
711	var x425 uint64
712	x424, x425 = bits.Add64(x369, x405, uint64(p521Uint1(x423)))
713	var x426 uint64
714	var x427 uint64
715	x426, x427 = bits.Add64(x371, x407, uint64(p521Uint1(x425)))
716	var x428 uint64
717	var x429 uint64
718	x428, x429 = bits.Add64(x373, x409, uint64(p521Uint1(x427)))
719	var x430 uint64
720	var x431 uint64
721	x430, x431 = bits.Add64(x375, x411, uint64(p521Uint1(x429)))
722	x432 := (uint64(p521Uint1(x431)) + uint64(p521Uint1(x376)))
723	var x433 uint64
724	var x434 uint64
725	x434, x433 = bits.Mul64(x4, arg2[8])
726	var x435 uint64
727	var x436 uint64
728	x436, x435 = bits.Mul64(x4, arg2[7])
729	var x437 uint64
730	var x438 uint64
731	x438, x437 = bits.Mul64(x4, arg2[6])
732	var x439 uint64
733	var x440 uint64
734	x440, x439 = bits.Mul64(x4, arg2[5])
735	var x441 uint64
736	var x442 uint64
737	x442, x441 = bits.Mul64(x4, arg2[4])
738	var x443 uint64
739	var x444 uint64
740	x444, x443 = bits.Mul64(x4, arg2[3])
741	var x445 uint64
742	var x446 uint64
743	x446, x445 = bits.Mul64(x4, arg2[2])
744	var x447 uint64
745	var x448 uint64
746	x448, x447 = bits.Mul64(x4, arg2[1])
747	var x449 uint64
748	var x450 uint64
749	x450, x449 = bits.Mul64(x4, arg2[0])
750	var x451 uint64
751	var x452 uint64
752	x451, x452 = bits.Add64(x450, x447, uint64(0x0))
753	var x453 uint64
754	var x454 uint64
755	x453, x454 = bits.Add64(x448, x445, uint64(p521Uint1(x452)))
756	var x455 uint64
757	var x456 uint64
758	x455, x456 = bits.Add64(x446, x443, uint64(p521Uint1(x454)))
759	var x457 uint64
760	var x458 uint64
761	x457, x458 = bits.Add64(x444, x441, uint64(p521Uint1(x456)))
762	var x459 uint64
763	var x460 uint64
764	x459, x460 = bits.Add64(x442, x439, uint64(p521Uint1(x458)))
765	var x461 uint64
766	var x462 uint64
767	x461, x462 = bits.Add64(x440, x437, uint64(p521Uint1(x460)))
768	var x463 uint64
769	var x464 uint64
770	x463, x464 = bits.Add64(x438, x435, uint64(p521Uint1(x462)))
771	var x465 uint64
772	var x466 uint64
773	x465, x466 = bits.Add64(x436, x433, uint64(p521Uint1(x464)))
774	x467 := (uint64(p521Uint1(x466)) + x434)
775	var x468 uint64
776	var x469 uint64
777	x468, x469 = bits.Add64(x414, x449, uint64(0x0))
778	var x470 uint64
779	var x471 uint64
780	x470, x471 = bits.Add64(x416, x451, uint64(p521Uint1(x469)))
781	var x472 uint64
782	var x473 uint64
783	x472, x473 = bits.Add64(x418, x453, uint64(p521Uint1(x471)))
784	var x474 uint64
785	var x475 uint64
786	x474, x475 = bits.Add64(x420, x455, uint64(p521Uint1(x473)))
787	var x476 uint64
788	var x477 uint64
789	x476, x477 = bits.Add64(x422, x457, uint64(p521Uint1(x475)))
790	var x478 uint64
791	var x479 uint64
792	x478, x479 = bits.Add64(x424, x459, uint64(p521Uint1(x477)))
793	var x480 uint64
794	var x481 uint64
795	x480, x481 = bits.Add64(x426, x461, uint64(p521Uint1(x479)))
796	var x482 uint64
797	var x483 uint64
798	x482, x483 = bits.Add64(x428, x463, uint64(p521Uint1(x481)))
799	var x484 uint64
800	var x485 uint64
801	x484, x485 = bits.Add64(x430, x465, uint64(p521Uint1(x483)))
802	var x486 uint64
803	var x487 uint64
804	x486, x487 = bits.Add64(x432, x467, uint64(p521Uint1(x485)))
805	var x488 uint64
806	var x489 uint64
807	x489, x488 = bits.Mul64(x468, 0x1ff)
808	var x490 uint64
809	var x491 uint64
810	x491, x490 = bits.Mul64(x468, 0xffffffffffffffff)
811	var x492 uint64
812	var x493 uint64
813	x493, x492 = bits.Mul64(x468, 0xffffffffffffffff)
814	var x494 uint64
815	var x495 uint64
816	x495, x494 = bits.Mul64(x468, 0xffffffffffffffff)
817	var x496 uint64
818	var x497 uint64
819	x497, x496 = bits.Mul64(x468, 0xffffffffffffffff)
820	var x498 uint64
821	var x499 uint64
822	x499, x498 = bits.Mul64(x468, 0xffffffffffffffff)
823	var x500 uint64
824	var x501 uint64
825	x501, x500 = bits.Mul64(x468, 0xffffffffffffffff)
826	var x502 uint64
827	var x503 uint64
828	x503, x502 = bits.Mul64(x468, 0xffffffffffffffff)
829	var x504 uint64
830	var x505 uint64
831	x505, x504 = bits.Mul64(x468, 0xffffffffffffffff)
832	var x506 uint64
833	var x507 uint64
834	x506, x507 = bits.Add64(x505, x502, uint64(0x0))
835	var x508 uint64
836	var x509 uint64
837	x508, x509 = bits.Add64(x503, x500, uint64(p521Uint1(x507)))
838	var x510 uint64
839	var x511 uint64
840	x510, x511 = bits.Add64(x501, x498, uint64(p521Uint1(x509)))
841	var x512 uint64
842	var x513 uint64
843	x512, x513 = bits.Add64(x499, x496, uint64(p521Uint1(x511)))
844	var x514 uint64
845	var x515 uint64
846	x514, x515 = bits.Add64(x497, x494, uint64(p521Uint1(x513)))
847	var x516 uint64
848	var x517 uint64
849	x516, x517 = bits.Add64(x495, x492, uint64(p521Uint1(x515)))
850	var x518 uint64
851	var x519 uint64
852	x518, x519 = bits.Add64(x493, x490, uint64(p521Uint1(x517)))
853	var x520 uint64
854	var x521 uint64
855	x520, x521 = bits.Add64(x491, x488, uint64(p521Uint1(x519)))
856	x522 := (uint64(p521Uint1(x521)) + x489)
857	var x524 uint64
858	_, x524 = bits.Add64(x468, x504, uint64(0x0))
859	var x525 uint64
860	var x526 uint64
861	x525, x526 = bits.Add64(x470, x506, uint64(p521Uint1(x524)))
862	var x527 uint64
863	var x528 uint64
864	x527, x528 = bits.Add64(x472, x508, uint64(p521Uint1(x526)))
865	var x529 uint64
866	var x530 uint64
867	x529, x530 = bits.Add64(x474, x510, uint64(p521Uint1(x528)))
868	var x531 uint64
869	var x532 uint64
870	x531, x532 = bits.Add64(x476, x512, uint64(p521Uint1(x530)))
871	var x533 uint64
872	var x534 uint64
873	x533, x534 = bits.Add64(x478, x514, uint64(p521Uint1(x532)))
874	var x535 uint64
875	var x536 uint64
876	x535, x536 = bits.Add64(x480, x516, uint64(p521Uint1(x534)))
877	var x537 uint64
878	var x538 uint64
879	x537, x538 = bits.Add64(x482, x518, uint64(p521Uint1(x536)))
880	var x539 uint64
881	var x540 uint64
882	x539, x540 = bits.Add64(x484, x520, uint64(p521Uint1(x538)))
883	var x541 uint64
884	var x542 uint64
885	x541, x542 = bits.Add64(x486, x522, uint64(p521Uint1(x540)))
886	x543 := (uint64(p521Uint1(x542)) + uint64(p521Uint1(x487)))
887	var x544 uint64
888	var x545 uint64
889	x545, x544 = bits.Mul64(x5, arg2[8])
890	var x546 uint64
891	var x547 uint64
892	x547, x546 = bits.Mul64(x5, arg2[7])
893	var x548 uint64
894	var x549 uint64
895	x549, x548 = bits.Mul64(x5, arg2[6])
896	var x550 uint64
897	var x551 uint64
898	x551, x550 = bits.Mul64(x5, arg2[5])
899	var x552 uint64
900	var x553 uint64
901	x553, x552 = bits.Mul64(x5, arg2[4])
902	var x554 uint64
903	var x555 uint64
904	x555, x554 = bits.Mul64(x5, arg2[3])
905	var x556 uint64
906	var x557 uint64
907	x557, x556 = bits.Mul64(x5, arg2[2])
908	var x558 uint64
909	var x559 uint64
910	x559, x558 = bits.Mul64(x5, arg2[1])
911	var x560 uint64
912	var x561 uint64
913	x561, x560 = bits.Mul64(x5, arg2[0])
914	var x562 uint64
915	var x563 uint64
916	x562, x563 = bits.Add64(x561, x558, uint64(0x0))
917	var x564 uint64
918	var x565 uint64
919	x564, x565 = bits.Add64(x559, x556, uint64(p521Uint1(x563)))
920	var x566 uint64
921	var x567 uint64
922	x566, x567 = bits.Add64(x557, x554, uint64(p521Uint1(x565)))
923	var x568 uint64
924	var x569 uint64
925	x568, x569 = bits.Add64(x555, x552, uint64(p521Uint1(x567)))
926	var x570 uint64
927	var x571 uint64
928	x570, x571 = bits.Add64(x553, x550, uint64(p521Uint1(x569)))
929	var x572 uint64
930	var x573 uint64
931	x572, x573 = bits.Add64(x551, x548, uint64(p521Uint1(x571)))
932	var x574 uint64
933	var x575 uint64
934	x574, x575 = bits.Add64(x549, x546, uint64(p521Uint1(x573)))
935	var x576 uint64
936	var x577 uint64
937	x576, x577 = bits.Add64(x547, x544, uint64(p521Uint1(x575)))
938	x578 := (uint64(p521Uint1(x577)) + x545)
939	var x579 uint64
940	var x580 uint64
941	x579, x580 = bits.Add64(x525, x560, uint64(0x0))
942	var x581 uint64
943	var x582 uint64
944	x581, x582 = bits.Add64(x527, x562, uint64(p521Uint1(x580)))
945	var x583 uint64
946	var x584 uint64
947	x583, x584 = bits.Add64(x529, x564, uint64(p521Uint1(x582)))
948	var x585 uint64
949	var x586 uint64
950	x585, x586 = bits.Add64(x531, x566, uint64(p521Uint1(x584)))
951	var x587 uint64
952	var x588 uint64
953	x587, x588 = bits.Add64(x533, x568, uint64(p521Uint1(x586)))
954	var x589 uint64
955	var x590 uint64
956	x589, x590 = bits.Add64(x535, x570, uint64(p521Uint1(x588)))
957	var x591 uint64
958	var x592 uint64
959	x591, x592 = bits.Add64(x537, x572, uint64(p521Uint1(x590)))
960	var x593 uint64
961	var x594 uint64
962	x593, x594 = bits.Add64(x539, x574, uint64(p521Uint1(x592)))
963	var x595 uint64
964	var x596 uint64
965	x595, x596 = bits.Add64(x541, x576, uint64(p521Uint1(x594)))
966	var x597 uint64
967	var x598 uint64
968	x597, x598 = bits.Add64(x543, x578, uint64(p521Uint1(x596)))
969	var x599 uint64
970	var x600 uint64
971	x600, x599 = bits.Mul64(x579, 0x1ff)
972	var x601 uint64
973	var x602 uint64
974	x602, x601 = bits.Mul64(x579, 0xffffffffffffffff)
975	var x603 uint64
976	var x604 uint64
977	x604, x603 = bits.Mul64(x579, 0xffffffffffffffff)
978	var x605 uint64
979	var x606 uint64
980	x606, x605 = bits.Mul64(x579, 0xffffffffffffffff)
981	var x607 uint64
982	var x608 uint64
983	x608, x607 = bits.Mul64(x579, 0xffffffffffffffff)
984	var x609 uint64
985	var x610 uint64
986	x610, x609 = bits.Mul64(x579, 0xffffffffffffffff)
987	var x611 uint64
988	var x612 uint64
989	x612, x611 = bits.Mul64(x579, 0xffffffffffffffff)
990	var x613 uint64
991	var x614 uint64
992	x614, x613 = bits.Mul64(x579, 0xffffffffffffffff)
993	var x615 uint64
994	var x616 uint64
995	x616, x615 = bits.Mul64(x579, 0xffffffffffffffff)
996	var x617 uint64
997	var x618 uint64
998	x617, x618 = bits.Add64(x616, x613, uint64(0x0))
999	var x619 uint64
1000	var x620 uint64
1001	x619, x620 = bits.Add64(x614, x611, uint64(p521Uint1(x618)))
1002	var x621 uint64
1003	var x622 uint64
1004	x621, x622 = bits.Add64(x612, x609, uint64(p521Uint1(x620)))
1005	var x623 uint64
1006	var x624 uint64
1007	x623, x624 = bits.Add64(x610, x607, uint64(p521Uint1(x622)))
1008	var x625 uint64
1009	var x626 uint64
1010	x625, x626 = bits.Add64(x608, x605, uint64(p521Uint1(x624)))
1011	var x627 uint64
1012	var x628 uint64
1013	x627, x628 = bits.Add64(x606, x603, uint64(p521Uint1(x626)))
1014	var x629 uint64
1015	var x630 uint64
1016	x629, x630 = bits.Add64(x604, x601, uint64(p521Uint1(x628)))
1017	var x631 uint64
1018	var x632 uint64
1019	x631, x632 = bits.Add64(x602, x599, uint64(p521Uint1(x630)))
1020	x633 := (uint64(p521Uint1(x632)) + x600)
1021	var x635 uint64
1022	_, x635 = bits.Add64(x579, x615, uint64(0x0))
1023	var x636 uint64
1024	var x637 uint64
1025	x636, x637 = bits.Add64(x581, x617, uint64(p521Uint1(x635)))
1026	var x638 uint64
1027	var x639 uint64
1028	x638, x639 = bits.Add64(x583, x619, uint64(p521Uint1(x637)))
1029	var x640 uint64
1030	var x641 uint64
1031	x640, x641 = bits.Add64(x585, x621, uint64(p521Uint1(x639)))
1032	var x642 uint64
1033	var x643 uint64
1034	x642, x643 = bits.Add64(x587, x623, uint64(p521Uint1(x641)))
1035	var x644 uint64
1036	var x645 uint64
1037	x644, x645 = bits.Add64(x589, x625, uint64(p521Uint1(x643)))
1038	var x646 uint64
1039	var x647 uint64
1040	x646, x647 = bits.Add64(x591, x627, uint64(p521Uint1(x645)))
1041	var x648 uint64
1042	var x649 uint64
1043	x648, x649 = bits.Add64(x593, x629, uint64(p521Uint1(x647)))
1044	var x650 uint64
1045	var x651 uint64
1046	x650, x651 = bits.Add64(x595, x631, uint64(p521Uint1(x649)))
1047	var x652 uint64
1048	var x653 uint64
1049	x652, x653 = bits.Add64(x597, x633, uint64(p521Uint1(x651)))
1050	x654 := (uint64(p521Uint1(x653)) + uint64(p521Uint1(x598)))
1051	var x655 uint64
1052	var x656 uint64
1053	x656, x655 = bits.Mul64(x6, arg2[8])
1054	var x657 uint64
1055	var x658 uint64
1056	x658, x657 = bits.Mul64(x6, arg2[7])
1057	var x659 uint64
1058	var x660 uint64
1059	x660, x659 = bits.Mul64(x6, arg2[6])
1060	var x661 uint64
1061	var x662 uint64
1062	x662, x661 = bits.Mul64(x6, arg2[5])
1063	var x663 uint64
1064	var x664 uint64
1065	x664, x663 = bits.Mul64(x6, arg2[4])
1066	var x665 uint64
1067	var x666 uint64
1068	x666, x665 = bits.Mul64(x6, arg2[3])
1069	var x667 uint64
1070	var x668 uint64
1071	x668, x667 = bits.Mul64(x6, arg2[2])
1072	var x669 uint64
1073	var x670 uint64
1074	x670, x669 = bits.Mul64(x6, arg2[1])
1075	var x671 uint64
1076	var x672 uint64
1077	x672, x671 = bits.Mul64(x6, arg2[0])
1078	var x673 uint64
1079	var x674 uint64
1080	x673, x674 = bits.Add64(x672, x669, uint64(0x0))
1081	var x675 uint64
1082	var x676 uint64
1083	x675, x676 = bits.Add64(x670, x667, uint64(p521Uint1(x674)))
1084	var x677 uint64
1085	var x678 uint64
1086	x677, x678 = bits.Add64(x668, x665, uint64(p521Uint1(x676)))
1087	var x679 uint64
1088	var x680 uint64
1089	x679, x680 = bits.Add64(x666, x663, uint64(p521Uint1(x678)))
1090	var x681 uint64
1091	var x682 uint64
1092	x681, x682 = bits.Add64(x664, x661, uint64(p521Uint1(x680)))
1093	var x683 uint64
1094	var x684 uint64
1095	x683, x684 = bits.Add64(x662, x659, uint64(p521Uint1(x682)))
1096	var x685 uint64
1097	var x686 uint64
1098	x685, x686 = bits.Add64(x660, x657, uint64(p521Uint1(x684)))
1099	var x687 uint64
1100	var x688 uint64
1101	x687, x688 = bits.Add64(x658, x655, uint64(p521Uint1(x686)))
1102	x689 := (uint64(p521Uint1(x688)) + x656)
1103	var x690 uint64
1104	var x691 uint64
1105	x690, x691 = bits.Add64(x636, x671, uint64(0x0))
1106	var x692 uint64
1107	var x693 uint64
1108	x692, x693 = bits.Add64(x638, x673, uint64(p521Uint1(x691)))
1109	var x694 uint64
1110	var x695 uint64
1111	x694, x695 = bits.Add64(x640, x675, uint64(p521Uint1(x693)))
1112	var x696 uint64
1113	var x697 uint64
1114	x696, x697 = bits.Add64(x642, x677, uint64(p521Uint1(x695)))
1115	var x698 uint64
1116	var x699 uint64
1117	x698, x699 = bits.Add64(x644, x679, uint64(p521Uint1(x697)))
1118	var x700 uint64
1119	var x701 uint64
1120	x700, x701 = bits.Add64(x646, x681, uint64(p521Uint1(x699)))
1121	var x702 uint64
1122	var x703 uint64
1123	x702, x703 = bits.Add64(x648, x683, uint64(p521Uint1(x701)))
1124	var x704 uint64
1125	var x705 uint64
1126	x704, x705 = bits.Add64(x650, x685, uint64(p521Uint1(x703)))
1127	var x706 uint64
1128	var x707 uint64
1129	x706, x707 = bits.Add64(x652, x687, uint64(p521Uint1(x705)))
1130	var x708 uint64
1131	var x709 uint64
1132	x708, x709 = bits.Add64(x654, x689, uint64(p521Uint1(x707)))
1133	var x710 uint64
1134	var x711 uint64
1135	x711, x710 = bits.Mul64(x690, 0x1ff)
1136	var x712 uint64
1137	var x713 uint64
1138	x713, x712 = bits.Mul64(x690, 0xffffffffffffffff)
1139	var x714 uint64
1140	var x715 uint64
1141	x715, x714 = bits.Mul64(x690, 0xffffffffffffffff)
1142	var x716 uint64
1143	var x717 uint64
1144	x717, x716 = bits.Mul64(x690, 0xffffffffffffffff)
1145	var x718 uint64
1146	var x719 uint64
1147	x719, x718 = bits.Mul64(x690, 0xffffffffffffffff)
1148	var x720 uint64
1149	var x721 uint64
1150	x721, x720 = bits.Mul64(x690, 0xffffffffffffffff)
1151	var x722 uint64
1152	var x723 uint64
1153	x723, x722 = bits.Mul64(x690, 0xffffffffffffffff)
1154	var x724 uint64
1155	var x725 uint64
1156	x725, x724 = bits.Mul64(x690, 0xffffffffffffffff)
1157	var x726 uint64
1158	var x727 uint64
1159	x727, x726 = bits.Mul64(x690, 0xffffffffffffffff)
1160	var x728 uint64
1161	var x729 uint64
1162	x728, x729 = bits.Add64(x727, x724, uint64(0x0))
1163	var x730 uint64
1164	var x731 uint64
1165	x730, x731 = bits.Add64(x725, x722, uint64(p521Uint1(x729)))
1166	var x732 uint64
1167	var x733 uint64
1168	x732, x733 = bits.Add64(x723, x720, uint64(p521Uint1(x731)))
1169	var x734 uint64
1170	var x735 uint64
1171	x734, x735 = bits.Add64(x721, x718, uint64(p521Uint1(x733)))
1172	var x736 uint64
1173	var x737 uint64
1174	x736, x737 = bits.Add64(x719, x716, uint64(p521Uint1(x735)))
1175	var x738 uint64
1176	var x739 uint64
1177	x738, x739 = bits.Add64(x717, x714, uint64(p521Uint1(x737)))
1178	var x740 uint64
1179	var x741 uint64
1180	x740, x741 = bits.Add64(x715, x712, uint64(p521Uint1(x739)))
1181	var x742 uint64
1182	var x743 uint64
1183	x742, x743 = bits.Add64(x713, x710, uint64(p521Uint1(x741)))
1184	x744 := (uint64(p521Uint1(x743)) + x711)
1185	var x746 uint64
1186	_, x746 = bits.Add64(x690, x726, uint64(0x0))
1187	var x747 uint64
1188	var x748 uint64
1189	x747, x748 = bits.Add64(x692, x728, uint64(p521Uint1(x746)))
1190	var x749 uint64
1191	var x750 uint64
1192	x749, x750 = bits.Add64(x694, x730, uint64(p521Uint1(x748)))
1193	var x751 uint64
1194	var x752 uint64
1195	x751, x752 = bits.Add64(x696, x732, uint64(p521Uint1(x750)))
1196	var x753 uint64
1197	var x754 uint64
1198	x753, x754 = bits.Add64(x698, x734, uint64(p521Uint1(x752)))
1199	var x755 uint64
1200	var x756 uint64
1201	x755, x756 = bits.Add64(x700, x736, uint64(p521Uint1(x754)))
1202	var x757 uint64
1203	var x758 uint64
1204	x757, x758 = bits.Add64(x702, x738, uint64(p521Uint1(x756)))
1205	var x759 uint64
1206	var x760 uint64
1207	x759, x760 = bits.Add64(x704, x740, uint64(p521Uint1(x758)))
1208	var x761 uint64
1209	var x762 uint64
1210	x761, x762 = bits.Add64(x706, x742, uint64(p521Uint1(x760)))
1211	var x763 uint64
1212	var x764 uint64
1213	x763, x764 = bits.Add64(x708, x744, uint64(p521Uint1(x762)))
1214	x765 := (uint64(p521Uint1(x764)) + uint64(p521Uint1(x709)))
1215	var x766 uint64
1216	var x767 uint64
1217	x767, x766 = bits.Mul64(x7, arg2[8])
1218	var x768 uint64
1219	var x769 uint64
1220	x769, x768 = bits.Mul64(x7, arg2[7])
1221	var x770 uint64
1222	var x771 uint64
1223	x771, x770 = bits.Mul64(x7, arg2[6])
1224	var x772 uint64
1225	var x773 uint64
1226	x773, x772 = bits.Mul64(x7, arg2[5])
1227	var x774 uint64
1228	var x775 uint64
1229	x775, x774 = bits.Mul64(x7, arg2[4])
1230	var x776 uint64
1231	var x777 uint64
1232	x777, x776 = bits.Mul64(x7, arg2[3])
1233	var x778 uint64
1234	var x779 uint64
1235	x779, x778 = bits.Mul64(x7, arg2[2])
1236	var x780 uint64
1237	var x781 uint64
1238	x781, x780 = bits.Mul64(x7, arg2[1])
1239	var x782 uint64
1240	var x783 uint64
1241	x783, x782 = bits.Mul64(x7, arg2[0])
1242	var x784 uint64
1243	var x785 uint64
1244	x784, x785 = bits.Add64(x783, x780, uint64(0x0))
1245	var x786 uint64
1246	var x787 uint64
1247	x786, x787 = bits.Add64(x781, x778, uint64(p521Uint1(x785)))
1248	var x788 uint64
1249	var x789 uint64
1250	x788, x789 = bits.Add64(x779, x776, uint64(p521Uint1(x787)))
1251	var x790 uint64
1252	var x791 uint64
1253	x790, x791 = bits.Add64(x777, x774, uint64(p521Uint1(x789)))
1254	var x792 uint64
1255	var x793 uint64
1256	x792, x793 = bits.Add64(x775, x772, uint64(p521Uint1(x791)))
1257	var x794 uint64
1258	var x795 uint64
1259	x794, x795 = bits.Add64(x773, x770, uint64(p521Uint1(x793)))
1260	var x796 uint64
1261	var x797 uint64
1262	x796, x797 = bits.Add64(x771, x768, uint64(p521Uint1(x795)))
1263	var x798 uint64
1264	var x799 uint64
1265	x798, x799 = bits.Add64(x769, x766, uint64(p521Uint1(x797)))
1266	x800 := (uint64(p521Uint1(x799)) + x767)
1267	var x801 uint64
1268	var x802 uint64
1269	x801, x802 = bits.Add64(x747, x782, uint64(0x0))
1270	var x803 uint64
1271	var x804 uint64
1272	x803, x804 = bits.Add64(x749, x784, uint64(p521Uint1(x802)))
1273	var x805 uint64
1274	var x806 uint64
1275	x805, x806 = bits.Add64(x751, x786, uint64(p521Uint1(x804)))
1276	var x807 uint64
1277	var x808 uint64
1278	x807, x808 = bits.Add64(x753, x788, uint64(p521Uint1(x806)))
1279	var x809 uint64
1280	var x810 uint64
1281	x809, x810 = bits.Add64(x755, x790, uint64(p521Uint1(x808)))
1282	var x811 uint64
1283	var x812 uint64
1284	x811, x812 = bits.Add64(x757, x792, uint64(p521Uint1(x810)))
1285	var x813 uint64
1286	var x814 uint64
1287	x813, x814 = bits.Add64(x759, x794, uint64(p521Uint1(x812)))
1288	var x815 uint64
1289	var x816 uint64
1290	x815, x816 = bits.Add64(x761, x796, uint64(p521Uint1(x814)))
1291	var x817 uint64
1292	var x818 uint64
1293	x817, x818 = bits.Add64(x763, x798, uint64(p521Uint1(x816)))
1294	var x819 uint64
1295	var x820 uint64
1296	x819, x820 = bits.Add64(x765, x800, uint64(p521Uint1(x818)))
1297	var x821 uint64
1298	var x822 uint64
1299	x822, x821 = bits.Mul64(x801, 0x1ff)
1300	var x823 uint64
1301	var x824 uint64
1302	x824, x823 = bits.Mul64(x801, 0xffffffffffffffff)
1303	var x825 uint64
1304	var x826 uint64
1305	x826, x825 = bits.Mul64(x801, 0xffffffffffffffff)
1306	var x827 uint64
1307	var x828 uint64
1308	x828, x827 = bits.Mul64(x801, 0xffffffffffffffff)
1309	var x829 uint64
1310	var x830 uint64
1311	x830, x829 = bits.Mul64(x801, 0xffffffffffffffff)
1312	var x831 uint64
1313	var x832 uint64
1314	x832, x831 = bits.Mul64(x801, 0xffffffffffffffff)
1315	var x833 uint64
1316	var x834 uint64
1317	x834, x833 = bits.Mul64(x801, 0xffffffffffffffff)
1318	var x835 uint64
1319	var x836 uint64
1320	x836, x835 = bits.Mul64(x801, 0xffffffffffffffff)
1321	var x837 uint64
1322	var x838 uint64
1323	x838, x837 = bits.Mul64(x801, 0xffffffffffffffff)
1324	var x839 uint64
1325	var x840 uint64
1326	x839, x840 = bits.Add64(x838, x835, uint64(0x0))
1327	var x841 uint64
1328	var x842 uint64
1329	x841, x842 = bits.Add64(x836, x833, uint64(p521Uint1(x840)))
1330	var x843 uint64
1331	var x844 uint64
1332	x843, x844 = bits.Add64(x834, x831, uint64(p521Uint1(x842)))
1333	var x845 uint64
1334	var x846 uint64
1335	x845, x846 = bits.Add64(x832, x829, uint64(p521Uint1(x844)))
1336	var x847 uint64
1337	var x848 uint64
1338	x847, x848 = bits.Add64(x830, x827, uint64(p521Uint1(x846)))
1339	var x849 uint64
1340	var x850 uint64
1341	x849, x850 = bits.Add64(x828, x825, uint64(p521Uint1(x848)))
1342	var x851 uint64
1343	var x852 uint64
1344	x851, x852 = bits.Add64(x826, x823, uint64(p521Uint1(x850)))
1345	var x853 uint64
1346	var x854 uint64
1347	x853, x854 = bits.Add64(x824, x821, uint64(p521Uint1(x852)))
1348	x855 := (uint64(p521Uint1(x854)) + x822)
1349	var x857 uint64
1350	_, x857 = bits.Add64(x801, x837, uint64(0x0))
1351	var x858 uint64
1352	var x859 uint64
1353	x858, x859 = bits.Add64(x803, x839, uint64(p521Uint1(x857)))
1354	var x860 uint64
1355	var x861 uint64
1356	x860, x861 = bits.Add64(x805, x841, uint64(p521Uint1(x859)))
1357	var x862 uint64
1358	var x863 uint64
1359	x862, x863 = bits.Add64(x807, x843, uint64(p521Uint1(x861)))
1360	var x864 uint64
1361	var x865 uint64
1362	x864, x865 = bits.Add64(x809, x845, uint64(p521Uint1(x863)))
1363	var x866 uint64
1364	var x867 uint64
1365	x866, x867 = bits.Add64(x811, x847, uint64(p521Uint1(x865)))
1366	var x868 uint64
1367	var x869 uint64
1368	x868, x869 = bits.Add64(x813, x849, uint64(p521Uint1(x867)))
1369	var x870 uint64
1370	var x871 uint64
1371	x870, x871 = bits.Add64(x815, x851, uint64(p521Uint1(x869)))
1372	var x872 uint64
1373	var x873 uint64
1374	x872, x873 = bits.Add64(x817, x853, uint64(p521Uint1(x871)))
1375	var x874 uint64
1376	var x875 uint64
1377	x874, x875 = bits.Add64(x819, x855, uint64(p521Uint1(x873)))
1378	x876 := (uint64(p521Uint1(x875)) + uint64(p521Uint1(x820)))
1379	var x877 uint64
1380	var x878 uint64
1381	x878, x877 = bits.Mul64(x8, arg2[8])
1382	var x879 uint64
1383	var x880 uint64
1384	x880, x879 = bits.Mul64(x8, arg2[7])
1385	var x881 uint64
1386	var x882 uint64
1387	x882, x881 = bits.Mul64(x8, arg2[6])
1388	var x883 uint64
1389	var x884 uint64
1390	x884, x883 = bits.Mul64(x8, arg2[5])
1391	var x885 uint64
1392	var x886 uint64
1393	x886, x885 = bits.Mul64(x8, arg2[4])
1394	var x887 uint64
1395	var x888 uint64
1396	x888, x887 = bits.Mul64(x8, arg2[3])
1397	var x889 uint64
1398	var x890 uint64
1399	x890, x889 = bits.Mul64(x8, arg2[2])
1400	var x891 uint64
1401	var x892 uint64
1402	x892, x891 = bits.Mul64(x8, arg2[1])
1403	var x893 uint64
1404	var x894 uint64
1405	x894, x893 = bits.Mul64(x8, arg2[0])
1406	var x895 uint64
1407	var x896 uint64
1408	x895, x896 = bits.Add64(x894, x891, uint64(0x0))
1409	var x897 uint64
1410	var x898 uint64
1411	x897, x898 = bits.Add64(x892, x889, uint64(p521Uint1(x896)))
1412	var x899 uint64
1413	var x900 uint64
1414	x899, x900 = bits.Add64(x890, x887, uint64(p521Uint1(x898)))
1415	var x901 uint64
1416	var x902 uint64
1417	x901, x902 = bits.Add64(x888, x885, uint64(p521Uint1(x900)))
1418	var x903 uint64
1419	var x904 uint64
1420	x903, x904 = bits.Add64(x886, x883, uint64(p521Uint1(x902)))
1421	var x905 uint64
1422	var x906 uint64
1423	x905, x906 = bits.Add64(x884, x881, uint64(p521Uint1(x904)))
1424	var x907 uint64
1425	var x908 uint64
1426	x907, x908 = bits.Add64(x882, x879, uint64(p521Uint1(x906)))
1427	var x909 uint64
1428	var x910 uint64
1429	x909, x910 = bits.Add64(x880, x877, uint64(p521Uint1(x908)))
1430	x911 := (uint64(p521Uint1(x910)) + x878)
1431	var x912 uint64
1432	var x913 uint64
1433	x912, x913 = bits.Add64(x858, x893, uint64(0x0))
1434	var x914 uint64
1435	var x915 uint64
1436	x914, x915 = bits.Add64(x860, x895, uint64(p521Uint1(x913)))
1437	var x916 uint64
1438	var x917 uint64
1439	x916, x917 = bits.Add64(x862, x897, uint64(p521Uint1(x915)))
1440	var x918 uint64
1441	var x919 uint64
1442	x918, x919 = bits.Add64(x864, x899, uint64(p521Uint1(x917)))
1443	var x920 uint64
1444	var x921 uint64
1445	x920, x921 = bits.Add64(x866, x901, uint64(p521Uint1(x919)))
1446	var x922 uint64
1447	var x923 uint64
1448	x922, x923 = bits.Add64(x868, x903, uint64(p521Uint1(x921)))
1449	var x924 uint64
1450	var x925 uint64
1451	x924, x925 = bits.Add64(x870, x905, uint64(p521Uint1(x923)))
1452	var x926 uint64
1453	var x927 uint64
1454	x926, x927 = bits.Add64(x872, x907, uint64(p521Uint1(x925)))
1455	var x928 uint64
1456	var x929 uint64
1457	x928, x929 = bits.Add64(x874, x909, uint64(p521Uint1(x927)))
1458	var x930 uint64
1459	var x931 uint64
1460	x930, x931 = bits.Add64(x876, x911, uint64(p521Uint1(x929)))
1461	var x932 uint64
1462	var x933 uint64
1463	x933, x932 = bits.Mul64(x912, 0x1ff)
1464	var x934 uint64
1465	var x935 uint64
1466	x935, x934 = bits.Mul64(x912, 0xffffffffffffffff)
1467	var x936 uint64
1468	var x937 uint64
1469	x937, x936 = bits.Mul64(x912, 0xffffffffffffffff)
1470	var x938 uint64
1471	var x939 uint64
1472	x939, x938 = bits.Mul64(x912, 0xffffffffffffffff)
1473	var x940 uint64
1474	var x941 uint64
1475	x941, x940 = bits.Mul64(x912, 0xffffffffffffffff)
1476	var x942 uint64
1477	var x943 uint64
1478	x943, x942 = bits.Mul64(x912, 0xffffffffffffffff)
1479	var x944 uint64
1480	var x945 uint64
1481	x945, x944 = bits.Mul64(x912, 0xffffffffffffffff)
1482	var x946 uint64
1483	var x947 uint64
1484	x947, x946 = bits.Mul64(x912, 0xffffffffffffffff)
1485	var x948 uint64
1486	var x949 uint64
1487	x949, x948 = bits.Mul64(x912, 0xffffffffffffffff)
1488	var x950 uint64
1489	var x951 uint64
1490	x950, x951 = bits.Add64(x949, x946, uint64(0x0))
1491	var x952 uint64
1492	var x953 uint64
1493	x952, x953 = bits.Add64(x947, x944, uint64(p521Uint1(x951)))
1494	var x954 uint64
1495	var x955 uint64
1496	x954, x955 = bits.Add64(x945, x942, uint64(p521Uint1(x953)))
1497	var x956 uint64
1498	var x957 uint64
1499	x956, x957 = bits.Add64(x943, x940, uint64(p521Uint1(x955)))
1500	var x958 uint64
1501	var x959 uint64
1502	x958, x959 = bits.Add64(x941, x938, uint64(p521Uint1(x957)))
1503	var x960 uint64
1504	var x961 uint64
1505	x960, x961 = bits.Add64(x939, x936, uint64(p521Uint1(x959)))
1506	var x962 uint64
1507	var x963 uint64
1508	x962, x963 = bits.Add64(x937, x934, uint64(p521Uint1(x961)))
1509	var x964 uint64
1510	var x965 uint64
1511	x964, x965 = bits.Add64(x935, x932, uint64(p521Uint1(x963)))
1512	x966 := (uint64(p521Uint1(x965)) + x933)
1513	var x968 uint64
1514	_, x968 = bits.Add64(x912, x948, uint64(0x0))
1515	var x969 uint64
1516	var x970 uint64
1517	x969, x970 = bits.Add64(x914, x950, uint64(p521Uint1(x968)))
1518	var x971 uint64
1519	var x972 uint64
1520	x971, x972 = bits.Add64(x916, x952, uint64(p521Uint1(x970)))
1521	var x973 uint64
1522	var x974 uint64
1523	x973, x974 = bits.Add64(x918, x954, uint64(p521Uint1(x972)))
1524	var x975 uint64
1525	var x976 uint64
1526	x975, x976 = bits.Add64(x920, x956, uint64(p521Uint1(x974)))
1527	var x977 uint64
1528	var x978 uint64
1529	x977, x978 = bits.Add64(x922, x958, uint64(p521Uint1(x976)))
1530	var x979 uint64
1531	var x980 uint64
1532	x979, x980 = bits.Add64(x924, x960, uint64(p521Uint1(x978)))
1533	var x981 uint64
1534	var x982 uint64
1535	x981, x982 = bits.Add64(x926, x962, uint64(p521Uint1(x980)))
1536	var x983 uint64
1537	var x984 uint64
1538	x983, x984 = bits.Add64(x928, x964, uint64(p521Uint1(x982)))
1539	var x985 uint64
1540	var x986 uint64
1541	x985, x986 = bits.Add64(x930, x966, uint64(p521Uint1(x984)))
1542	x987 := (uint64(p521Uint1(x986)) + uint64(p521Uint1(x931)))
1543	var x988 uint64
1544	var x989 uint64
1545	x988, x989 = bits.Sub64(x969, 0xffffffffffffffff, uint64(0x0))
1546	var x990 uint64
1547	var x991 uint64
1548	x990, x991 = bits.Sub64(x971, 0xffffffffffffffff, uint64(p521Uint1(x989)))
1549	var x992 uint64
1550	var x993 uint64
1551	x992, x993 = bits.Sub64(x973, 0xffffffffffffffff, uint64(p521Uint1(x991)))
1552	var x994 uint64
1553	var x995 uint64
1554	x994, x995 = bits.Sub64(x975, 0xffffffffffffffff, uint64(p521Uint1(x993)))
1555	var x996 uint64
1556	var x997 uint64
1557	x996, x997 = bits.Sub64(x977, 0xffffffffffffffff, uint64(p521Uint1(x995)))
1558	var x998 uint64
1559	var x999 uint64
1560	x998, x999 = bits.Sub64(x979, 0xffffffffffffffff, uint64(p521Uint1(x997)))
1561	var x1000 uint64
1562	var x1001 uint64
1563	x1000, x1001 = bits.Sub64(x981, 0xffffffffffffffff, uint64(p521Uint1(x999)))
1564	var x1002 uint64
1565	var x1003 uint64
1566	x1002, x1003 = bits.Sub64(x983, 0xffffffffffffffff, uint64(p521Uint1(x1001)))
1567	var x1004 uint64
1568	var x1005 uint64
1569	x1004, x1005 = bits.Sub64(x985, 0x1ff, uint64(p521Uint1(x1003)))
1570	var x1007 uint64
1571	_, x1007 = bits.Sub64(x987, uint64(0x0), uint64(p521Uint1(x1005)))
1572	var x1008 uint64
1573	p521CmovznzU64(&x1008, p521Uint1(x1007), x988, x969)
1574	var x1009 uint64
1575	p521CmovznzU64(&x1009, p521Uint1(x1007), x990, x971)
1576	var x1010 uint64
1577	p521CmovznzU64(&x1010, p521Uint1(x1007), x992, x973)
1578	var x1011 uint64
1579	p521CmovznzU64(&x1011, p521Uint1(x1007), x994, x975)
1580	var x1012 uint64
1581	p521CmovznzU64(&x1012, p521Uint1(x1007), x996, x977)
1582	var x1013 uint64
1583	p521CmovznzU64(&x1013, p521Uint1(x1007), x998, x979)
1584	var x1014 uint64
1585	p521CmovznzU64(&x1014, p521Uint1(x1007), x1000, x981)
1586	var x1015 uint64
1587	p521CmovznzU64(&x1015, p521Uint1(x1007), x1002, x983)
1588	var x1016 uint64
1589	p521CmovznzU64(&x1016, p521Uint1(x1007), x1004, x985)
1590	out1[0] = x1008
1591	out1[1] = x1009
1592	out1[2] = x1010
1593	out1[3] = x1011
1594	out1[4] = x1012
1595	out1[5] = x1013
1596	out1[6] = x1014
1597	out1[7] = x1015
1598	out1[8] = x1016
1599}
1600
1601// p521Square squares a field element in the Montgomery domain.
1602//
1603// Preconditions:
1604//
1605//	0 ≤ eval arg1 < m
1606//
1607// Postconditions:
1608//
1609//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m
1610//	0 ≤ eval out1 < m
1611func p521Square(out1 *p521MontgomeryDomainFieldElement, arg1 *p521MontgomeryDomainFieldElement) {
1612	x1 := arg1[1]
1613	x2 := arg1[2]
1614	x3 := arg1[3]
1615	x4 := arg1[4]
1616	x5 := arg1[5]
1617	x6 := arg1[6]
1618	x7 := arg1[7]
1619	x8 := arg1[8]
1620	x9 := arg1[0]
1621	var x10 uint64
1622	var x11 uint64
1623	x11, x10 = bits.Mul64(x9, arg1[8])
1624	var x12 uint64
1625	var x13 uint64
1626	x13, x12 = bits.Mul64(x9, arg1[7])
1627	var x14 uint64
1628	var x15 uint64
1629	x15, x14 = bits.Mul64(x9, arg1[6])
1630	var x16 uint64
1631	var x17 uint64
1632	x17, x16 = bits.Mul64(x9, arg1[5])
1633	var x18 uint64
1634	var x19 uint64
1635	x19, x18 = bits.Mul64(x9, arg1[4])
1636	var x20 uint64
1637	var x21 uint64
1638	x21, x20 = bits.Mul64(x9, arg1[3])
1639	var x22 uint64
1640	var x23 uint64
1641	x23, x22 = bits.Mul64(x9, arg1[2])
1642	var x24 uint64
1643	var x25 uint64
1644	x25, x24 = bits.Mul64(x9, arg1[1])
1645	var x26 uint64
1646	var x27 uint64
1647	x27, x26 = bits.Mul64(x9, arg1[0])
1648	var x28 uint64
1649	var x29 uint64
1650	x28, x29 = bits.Add64(x27, x24, uint64(0x0))
1651	var x30 uint64
1652	var x31 uint64
1653	x30, x31 = bits.Add64(x25, x22, uint64(p521Uint1(x29)))
1654	var x32 uint64
1655	var x33 uint64
1656	x32, x33 = bits.Add64(x23, x20, uint64(p521Uint1(x31)))
1657	var x34 uint64
1658	var x35 uint64
1659	x34, x35 = bits.Add64(x21, x18, uint64(p521Uint1(x33)))
1660	var x36 uint64
1661	var x37 uint64
1662	x36, x37 = bits.Add64(x19, x16, uint64(p521Uint1(x35)))
1663	var x38 uint64
1664	var x39 uint64
1665	x38, x39 = bits.Add64(x17, x14, uint64(p521Uint1(x37)))
1666	var x40 uint64
1667	var x41 uint64
1668	x40, x41 = bits.Add64(x15, x12, uint64(p521Uint1(x39)))
1669	var x42 uint64
1670	var x43 uint64
1671	x42, x43 = bits.Add64(x13, x10, uint64(p521Uint1(x41)))
1672	x44 := (uint64(p521Uint1(x43)) + x11)
1673	var x45 uint64
1674	var x46 uint64
1675	x46, x45 = bits.Mul64(x26, 0x1ff)
1676	var x47 uint64
1677	var x48 uint64
1678	x48, x47 = bits.Mul64(x26, 0xffffffffffffffff)
1679	var x49 uint64
1680	var x50 uint64
1681	x50, x49 = bits.Mul64(x26, 0xffffffffffffffff)
1682	var x51 uint64
1683	var x52 uint64
1684	x52, x51 = bits.Mul64(x26, 0xffffffffffffffff)
1685	var x53 uint64
1686	var x54 uint64
1687	x54, x53 = bits.Mul64(x26, 0xffffffffffffffff)
1688	var x55 uint64
1689	var x56 uint64
1690	x56, x55 = bits.Mul64(x26, 0xffffffffffffffff)
1691	var x57 uint64
1692	var x58 uint64
1693	x58, x57 = bits.Mul64(x26, 0xffffffffffffffff)
1694	var x59 uint64
1695	var x60 uint64
1696	x60, x59 = bits.Mul64(x26, 0xffffffffffffffff)
1697	var x61 uint64
1698	var x62 uint64
1699	x62, x61 = bits.Mul64(x26, 0xffffffffffffffff)
1700	var x63 uint64
1701	var x64 uint64
1702	x63, x64 = bits.Add64(x62, x59, uint64(0x0))
1703	var x65 uint64
1704	var x66 uint64
1705	x65, x66 = bits.Add64(x60, x57, uint64(p521Uint1(x64)))
1706	var x67 uint64
1707	var x68 uint64
1708	x67, x68 = bits.Add64(x58, x55, uint64(p521Uint1(x66)))
1709	var x69 uint64
1710	var x70 uint64
1711	x69, x70 = bits.Add64(x56, x53, uint64(p521Uint1(x68)))
1712	var x71 uint64
1713	var x72 uint64
1714	x71, x72 = bits.Add64(x54, x51, uint64(p521Uint1(x70)))
1715	var x73 uint64
1716	var x74 uint64
1717	x73, x74 = bits.Add64(x52, x49, uint64(p521Uint1(x72)))
1718	var x75 uint64
1719	var x76 uint64
1720	x75, x76 = bits.Add64(x50, x47, uint64(p521Uint1(x74)))
1721	var x77 uint64
1722	var x78 uint64
1723	x77, x78 = bits.Add64(x48, x45, uint64(p521Uint1(x76)))
1724	x79 := (uint64(p521Uint1(x78)) + x46)
1725	var x81 uint64
1726	_, x81 = bits.Add64(x26, x61, uint64(0x0))
1727	var x82 uint64
1728	var x83 uint64
1729	x82, x83 = bits.Add64(x28, x63, uint64(p521Uint1(x81)))
1730	var x84 uint64
1731	var x85 uint64
1732	x84, x85 = bits.Add64(x30, x65, uint64(p521Uint1(x83)))
1733	var x86 uint64
1734	var x87 uint64
1735	x86, x87 = bits.Add64(x32, x67, uint64(p521Uint1(x85)))
1736	var x88 uint64
1737	var x89 uint64
1738	x88, x89 = bits.Add64(x34, x69, uint64(p521Uint1(x87)))
1739	var x90 uint64
1740	var x91 uint64
1741	x90, x91 = bits.Add64(x36, x71, uint64(p521Uint1(x89)))
1742	var x92 uint64
1743	var x93 uint64
1744	x92, x93 = bits.Add64(x38, x73, uint64(p521Uint1(x91)))
1745	var x94 uint64
1746	var x95 uint64
1747	x94, x95 = bits.Add64(x40, x75, uint64(p521Uint1(x93)))
1748	var x96 uint64
1749	var x97 uint64
1750	x96, x97 = bits.Add64(x42, x77, uint64(p521Uint1(x95)))
1751	var x98 uint64
1752	var x99 uint64
1753	x98, x99 = bits.Add64(x44, x79, uint64(p521Uint1(x97)))
1754	var x100 uint64
1755	var x101 uint64
1756	x101, x100 = bits.Mul64(x1, arg1[8])
1757	var x102 uint64
1758	var x103 uint64
1759	x103, x102 = bits.Mul64(x1, arg1[7])
1760	var x104 uint64
1761	var x105 uint64
1762	x105, x104 = bits.Mul64(x1, arg1[6])
1763	var x106 uint64
1764	var x107 uint64
1765	x107, x106 = bits.Mul64(x1, arg1[5])
1766	var x108 uint64
1767	var x109 uint64
1768	x109, x108 = bits.Mul64(x1, arg1[4])
1769	var x110 uint64
1770	var x111 uint64
1771	x111, x110 = bits.Mul64(x1, arg1[3])
1772	var x112 uint64
1773	var x113 uint64
1774	x113, x112 = bits.Mul64(x1, arg1[2])
1775	var x114 uint64
1776	var x115 uint64
1777	x115, x114 = bits.Mul64(x1, arg1[1])
1778	var x116 uint64
1779	var x117 uint64
1780	x117, x116 = bits.Mul64(x1, arg1[0])
1781	var x118 uint64
1782	var x119 uint64
1783	x118, x119 = bits.Add64(x117, x114, uint64(0x0))
1784	var x120 uint64
1785	var x121 uint64
1786	x120, x121 = bits.Add64(x115, x112, uint64(p521Uint1(x119)))
1787	var x122 uint64
1788	var x123 uint64
1789	x122, x123 = bits.Add64(x113, x110, uint64(p521Uint1(x121)))
1790	var x124 uint64
1791	var x125 uint64
1792	x124, x125 = bits.Add64(x111, x108, uint64(p521Uint1(x123)))
1793	var x126 uint64
1794	var x127 uint64
1795	x126, x127 = bits.Add64(x109, x106, uint64(p521Uint1(x125)))
1796	var x128 uint64
1797	var x129 uint64
1798	x128, x129 = bits.Add64(x107, x104, uint64(p521Uint1(x127)))
1799	var x130 uint64
1800	var x131 uint64
1801	x130, x131 = bits.Add64(x105, x102, uint64(p521Uint1(x129)))
1802	var x132 uint64
1803	var x133 uint64
1804	x132, x133 = bits.Add64(x103, x100, uint64(p521Uint1(x131)))
1805	x134 := (uint64(p521Uint1(x133)) + x101)
1806	var x135 uint64
1807	var x136 uint64
1808	x135, x136 = bits.Add64(x82, x116, uint64(0x0))
1809	var x137 uint64
1810	var x138 uint64
1811	x137, x138 = bits.Add64(x84, x118, uint64(p521Uint1(x136)))
1812	var x139 uint64
1813	var x140 uint64
1814	x139, x140 = bits.Add64(x86, x120, uint64(p521Uint1(x138)))
1815	var x141 uint64
1816	var x142 uint64
1817	x141, x142 = bits.Add64(x88, x122, uint64(p521Uint1(x140)))
1818	var x143 uint64
1819	var x144 uint64
1820	x143, x144 = bits.Add64(x90, x124, uint64(p521Uint1(x142)))
1821	var x145 uint64
1822	var x146 uint64
1823	x145, x146 = bits.Add64(x92, x126, uint64(p521Uint1(x144)))
1824	var x147 uint64
1825	var x148 uint64
1826	x147, x148 = bits.Add64(x94, x128, uint64(p521Uint1(x146)))
1827	var x149 uint64
1828	var x150 uint64
1829	x149, x150 = bits.Add64(x96, x130, uint64(p521Uint1(x148)))
1830	var x151 uint64
1831	var x152 uint64
1832	x151, x152 = bits.Add64(x98, x132, uint64(p521Uint1(x150)))
1833	var x153 uint64
1834	var x154 uint64
1835	x153, x154 = bits.Add64(uint64(p521Uint1(x99)), x134, uint64(p521Uint1(x152)))
1836	var x155 uint64
1837	var x156 uint64
1838	x156, x155 = bits.Mul64(x135, 0x1ff)
1839	var x157 uint64
1840	var x158 uint64
1841	x158, x157 = bits.Mul64(x135, 0xffffffffffffffff)
1842	var x159 uint64
1843	var x160 uint64
1844	x160, x159 = bits.Mul64(x135, 0xffffffffffffffff)
1845	var x161 uint64
1846	var x162 uint64
1847	x162, x161 = bits.Mul64(x135, 0xffffffffffffffff)
1848	var x163 uint64
1849	var x164 uint64
1850	x164, x163 = bits.Mul64(x135, 0xffffffffffffffff)
1851	var x165 uint64
1852	var x166 uint64
1853	x166, x165 = bits.Mul64(x135, 0xffffffffffffffff)
1854	var x167 uint64
1855	var x168 uint64
1856	x168, x167 = bits.Mul64(x135, 0xffffffffffffffff)
1857	var x169 uint64
1858	var x170 uint64
1859	x170, x169 = bits.Mul64(x135, 0xffffffffffffffff)
1860	var x171 uint64
1861	var x172 uint64
1862	x172, x171 = bits.Mul64(x135, 0xffffffffffffffff)
1863	var x173 uint64
1864	var x174 uint64
1865	x173, x174 = bits.Add64(x172, x169, uint64(0x0))
1866	var x175 uint64
1867	var x176 uint64
1868	x175, x176 = bits.Add64(x170, x167, uint64(p521Uint1(x174)))
1869	var x177 uint64
1870	var x178 uint64
1871	x177, x178 = bits.Add64(x168, x165, uint64(p521Uint1(x176)))
1872	var x179 uint64
1873	var x180 uint64
1874	x179, x180 = bits.Add64(x166, x163, uint64(p521Uint1(x178)))
1875	var x181 uint64
1876	var x182 uint64
1877	x181, x182 = bits.Add64(x164, x161, uint64(p521Uint1(x180)))
1878	var x183 uint64
1879	var x184 uint64
1880	x183, x184 = bits.Add64(x162, x159, uint64(p521Uint1(x182)))
1881	var x185 uint64
1882	var x186 uint64
1883	x185, x186 = bits.Add64(x160, x157, uint64(p521Uint1(x184)))
1884	var x187 uint64
1885	var x188 uint64
1886	x187, x188 = bits.Add64(x158, x155, uint64(p521Uint1(x186)))
1887	x189 := (uint64(p521Uint1(x188)) + x156)
1888	var x191 uint64
1889	_, x191 = bits.Add64(x135, x171, uint64(0x0))
1890	var x192 uint64
1891	var x193 uint64
1892	x192, x193 = bits.Add64(x137, x173, uint64(p521Uint1(x191)))
1893	var x194 uint64
1894	var x195 uint64
1895	x194, x195 = bits.Add64(x139, x175, uint64(p521Uint1(x193)))
1896	var x196 uint64
1897	var x197 uint64
1898	x196, x197 = bits.Add64(x141, x177, uint64(p521Uint1(x195)))
1899	var x198 uint64
1900	var x199 uint64
1901	x198, x199 = bits.Add64(x143, x179, uint64(p521Uint1(x197)))
1902	var x200 uint64
1903	var x201 uint64
1904	x200, x201 = bits.Add64(x145, x181, uint64(p521Uint1(x199)))
1905	var x202 uint64
1906	var x203 uint64
1907	x202, x203 = bits.Add64(x147, x183, uint64(p521Uint1(x201)))
1908	var x204 uint64
1909	var x205 uint64
1910	x204, x205 = bits.Add64(x149, x185, uint64(p521Uint1(x203)))
1911	var x206 uint64
1912	var x207 uint64
1913	x206, x207 = bits.Add64(x151, x187, uint64(p521Uint1(x205)))
1914	var x208 uint64
1915	var x209 uint64
1916	x208, x209 = bits.Add64(x153, x189, uint64(p521Uint1(x207)))
1917	x210 := (uint64(p521Uint1(x209)) + uint64(p521Uint1(x154)))
1918	var x211 uint64
1919	var x212 uint64
1920	x212, x211 = bits.Mul64(x2, arg1[8])
1921	var x213 uint64
1922	var x214 uint64
1923	x214, x213 = bits.Mul64(x2, arg1[7])
1924	var x215 uint64
1925	var x216 uint64
1926	x216, x215 = bits.Mul64(x2, arg1[6])
1927	var x217 uint64
1928	var x218 uint64
1929	x218, x217 = bits.Mul64(x2, arg1[5])
1930	var x219 uint64
1931	var x220 uint64
1932	x220, x219 = bits.Mul64(x2, arg1[4])
1933	var x221 uint64
1934	var x222 uint64
1935	x222, x221 = bits.Mul64(x2, arg1[3])
1936	var x223 uint64
1937	var x224 uint64
1938	x224, x223 = bits.Mul64(x2, arg1[2])
1939	var x225 uint64
1940	var x226 uint64
1941	x226, x225 = bits.Mul64(x2, arg1[1])
1942	var x227 uint64
1943	var x228 uint64
1944	x228, x227 = bits.Mul64(x2, arg1[0])
1945	var x229 uint64
1946	var x230 uint64
1947	x229, x230 = bits.Add64(x228, x225, uint64(0x0))
1948	var x231 uint64
1949	var x232 uint64
1950	x231, x232 = bits.Add64(x226, x223, uint64(p521Uint1(x230)))
1951	var x233 uint64
1952	var x234 uint64
1953	x233, x234 = bits.Add64(x224, x221, uint64(p521Uint1(x232)))
1954	var x235 uint64
1955	var x236 uint64
1956	x235, x236 = bits.Add64(x222, x219, uint64(p521Uint1(x234)))
1957	var x237 uint64
1958	var x238 uint64
1959	x237, x238 = bits.Add64(x220, x217, uint64(p521Uint1(x236)))
1960	var x239 uint64
1961	var x240 uint64
1962	x239, x240 = bits.Add64(x218, x215, uint64(p521Uint1(x238)))
1963	var x241 uint64
1964	var x242 uint64
1965	x241, x242 = bits.Add64(x216, x213, uint64(p521Uint1(x240)))
1966	var x243 uint64
1967	var x244 uint64
1968	x243, x244 = bits.Add64(x214, x211, uint64(p521Uint1(x242)))
1969	x245 := (uint64(p521Uint1(x244)) + x212)
1970	var x246 uint64
1971	var x247 uint64
1972	x246, x247 = bits.Add64(x192, x227, uint64(0x0))
1973	var x248 uint64
1974	var x249 uint64
1975	x248, x249 = bits.Add64(x194, x229, uint64(p521Uint1(x247)))
1976	var x250 uint64
1977	var x251 uint64
1978	x250, x251 = bits.Add64(x196, x231, uint64(p521Uint1(x249)))
1979	var x252 uint64
1980	var x253 uint64
1981	x252, x253 = bits.Add64(x198, x233, uint64(p521Uint1(x251)))
1982	var x254 uint64
1983	var x255 uint64
1984	x254, x255 = bits.Add64(x200, x235, uint64(p521Uint1(x253)))
1985	var x256 uint64
1986	var x257 uint64
1987	x256, x257 = bits.Add64(x202, x237, uint64(p521Uint1(x255)))
1988	var x258 uint64
1989	var x259 uint64
1990	x258, x259 = bits.Add64(x204, x239, uint64(p521Uint1(x257)))
1991	var x260 uint64
1992	var x261 uint64
1993	x260, x261 = bits.Add64(x206, x241, uint64(p521Uint1(x259)))
1994	var x262 uint64
1995	var x263 uint64
1996	x262, x263 = bits.Add64(x208, x243, uint64(p521Uint1(x261)))
1997	var x264 uint64
1998	var x265 uint64
1999	x264, x265 = bits.Add64(x210, x245, uint64(p521Uint1(x263)))
2000	var x266 uint64
2001	var x267 uint64
2002	x267, x266 = bits.Mul64(x246, 0x1ff)
2003	var x268 uint64
2004	var x269 uint64
2005	x269, x268 = bits.Mul64(x246, 0xffffffffffffffff)
2006	var x270 uint64
2007	var x271 uint64
2008	x271, x270 = bits.Mul64(x246, 0xffffffffffffffff)
2009	var x272 uint64
2010	var x273 uint64
2011	x273, x272 = bits.Mul64(x246, 0xffffffffffffffff)
2012	var x274 uint64
2013	var x275 uint64
2014	x275, x274 = bits.Mul64(x246, 0xffffffffffffffff)
2015	var x276 uint64
2016	var x277 uint64
2017	x277, x276 = bits.Mul64(x246, 0xffffffffffffffff)
2018	var x278 uint64
2019	var x279 uint64
2020	x279, x278 = bits.Mul64(x246, 0xffffffffffffffff)
2021	var x280 uint64
2022	var x281 uint64
2023	x281, x280 = bits.Mul64(x246, 0xffffffffffffffff)
2024	var x282 uint64
2025	var x283 uint64
2026	x283, x282 = bits.Mul64(x246, 0xffffffffffffffff)
2027	var x284 uint64
2028	var x285 uint64
2029	x284, x285 = bits.Add64(x283, x280, uint64(0x0))
2030	var x286 uint64
2031	var x287 uint64
2032	x286, x287 = bits.Add64(x281, x278, uint64(p521Uint1(x285)))
2033	var x288 uint64
2034	var x289 uint64
2035	x288, x289 = bits.Add64(x279, x276, uint64(p521Uint1(x287)))
2036	var x290 uint64
2037	var x291 uint64
2038	x290, x291 = bits.Add64(x277, x274, uint64(p521Uint1(x289)))
2039	var x292 uint64
2040	var x293 uint64
2041	x292, x293 = bits.Add64(x275, x272, uint64(p521Uint1(x291)))
2042	var x294 uint64
2043	var x295 uint64
2044	x294, x295 = bits.Add64(x273, x270, uint64(p521Uint1(x293)))
2045	var x296 uint64
2046	var x297 uint64
2047	x296, x297 = bits.Add64(x271, x268, uint64(p521Uint1(x295)))
2048	var x298 uint64
2049	var x299 uint64
2050	x298, x299 = bits.Add64(x269, x266, uint64(p521Uint1(x297)))
2051	x300 := (uint64(p521Uint1(x299)) + x267)
2052	var x302 uint64
2053	_, x302 = bits.Add64(x246, x282, uint64(0x0))
2054	var x303 uint64
2055	var x304 uint64
2056	x303, x304 = bits.Add64(x248, x284, uint64(p521Uint1(x302)))
2057	var x305 uint64
2058	var x306 uint64
2059	x305, x306 = bits.Add64(x250, x286, uint64(p521Uint1(x304)))
2060	var x307 uint64
2061	var x308 uint64
2062	x307, x308 = bits.Add64(x252, x288, uint64(p521Uint1(x306)))
2063	var x309 uint64
2064	var x310 uint64
2065	x309, x310 = bits.Add64(x254, x290, uint64(p521Uint1(x308)))
2066	var x311 uint64
2067	var x312 uint64
2068	x311, x312 = bits.Add64(x256, x292, uint64(p521Uint1(x310)))
2069	var x313 uint64
2070	var x314 uint64
2071	x313, x314 = bits.Add64(x258, x294, uint64(p521Uint1(x312)))
2072	var x315 uint64
2073	var x316 uint64
2074	x315, x316 = bits.Add64(x260, x296, uint64(p521Uint1(x314)))
2075	var x317 uint64
2076	var x318 uint64
2077	x317, x318 = bits.Add64(x262, x298, uint64(p521Uint1(x316)))
2078	var x319 uint64
2079	var x320 uint64
2080	x319, x320 = bits.Add64(x264, x300, uint64(p521Uint1(x318)))
2081	x321 := (uint64(p521Uint1(x320)) + uint64(p521Uint1(x265)))
2082	var x322 uint64
2083	var x323 uint64
2084	x323, x322 = bits.Mul64(x3, arg1[8])
2085	var x324 uint64
2086	var x325 uint64
2087	x325, x324 = bits.Mul64(x3, arg1[7])
2088	var x326 uint64
2089	var x327 uint64
2090	x327, x326 = bits.Mul64(x3, arg1[6])
2091	var x328 uint64
2092	var x329 uint64
2093	x329, x328 = bits.Mul64(x3, arg1[5])
2094	var x330 uint64
2095	var x331 uint64
2096	x331, x330 = bits.Mul64(x3, arg1[4])
2097	var x332 uint64
2098	var x333 uint64
2099	x333, x332 = bits.Mul64(x3, arg1[3])
2100	var x334 uint64
2101	var x335 uint64
2102	x335, x334 = bits.Mul64(x3, arg1[2])
2103	var x336 uint64
2104	var x337 uint64
2105	x337, x336 = bits.Mul64(x3, arg1[1])
2106	var x338 uint64
2107	var x339 uint64
2108	x339, x338 = bits.Mul64(x3, arg1[0])
2109	var x340 uint64
2110	var x341 uint64
2111	x340, x341 = bits.Add64(x339, x336, uint64(0x0))
2112	var x342 uint64
2113	var x343 uint64
2114	x342, x343 = bits.Add64(x337, x334, uint64(p521Uint1(x341)))
2115	var x344 uint64
2116	var x345 uint64
2117	x344, x345 = bits.Add64(x335, x332, uint64(p521Uint1(x343)))
2118	var x346 uint64
2119	var x347 uint64
2120	x346, x347 = bits.Add64(x333, x330, uint64(p521Uint1(x345)))
2121	var x348 uint64
2122	var x349 uint64
2123	x348, x349 = bits.Add64(x331, x328, uint64(p521Uint1(x347)))
2124	var x350 uint64
2125	var x351 uint64
2126	x350, x351 = bits.Add64(x329, x326, uint64(p521Uint1(x349)))
2127	var x352 uint64
2128	var x353 uint64
2129	x352, x353 = bits.Add64(x327, x324, uint64(p521Uint1(x351)))
2130	var x354 uint64
2131	var x355 uint64
2132	x354, x355 = bits.Add64(x325, x322, uint64(p521Uint1(x353)))
2133	x356 := (uint64(p521Uint1(x355)) + x323)
2134	var x357 uint64
2135	var x358 uint64
2136	x357, x358 = bits.Add64(x303, x338, uint64(0x0))
2137	var x359 uint64
2138	var x360 uint64
2139	x359, x360 = bits.Add64(x305, x340, uint64(p521Uint1(x358)))
2140	var x361 uint64
2141	var x362 uint64
2142	x361, x362 = bits.Add64(x307, x342, uint64(p521Uint1(x360)))
2143	var x363 uint64
2144	var x364 uint64
2145	x363, x364 = bits.Add64(x309, x344, uint64(p521Uint1(x362)))
2146	var x365 uint64
2147	var x366 uint64
2148	x365, x366 = bits.Add64(x311, x346, uint64(p521Uint1(x364)))
2149	var x367 uint64
2150	var x368 uint64
2151	x367, x368 = bits.Add64(x313, x348, uint64(p521Uint1(x366)))
2152	var x369 uint64
2153	var x370 uint64
2154	x369, x370 = bits.Add64(x315, x350, uint64(p521Uint1(x368)))
2155	var x371 uint64
2156	var x372 uint64
2157	x371, x372 = bits.Add64(x317, x352, uint64(p521Uint1(x370)))
2158	var x373 uint64
2159	var x374 uint64
2160	x373, x374 = bits.Add64(x319, x354, uint64(p521Uint1(x372)))
2161	var x375 uint64
2162	var x376 uint64
2163	x375, x376 = bits.Add64(x321, x356, uint64(p521Uint1(x374)))
2164	var x377 uint64
2165	var x378 uint64
2166	x378, x377 = bits.Mul64(x357, 0x1ff)
2167	var x379 uint64
2168	var x380 uint64
2169	x380, x379 = bits.Mul64(x357, 0xffffffffffffffff)
2170	var x381 uint64
2171	var x382 uint64
2172	x382, x381 = bits.Mul64(x357, 0xffffffffffffffff)
2173	var x383 uint64
2174	var x384 uint64
2175	x384, x383 = bits.Mul64(x357, 0xffffffffffffffff)
2176	var x385 uint64
2177	var x386 uint64
2178	x386, x385 = bits.Mul64(x357, 0xffffffffffffffff)
2179	var x387 uint64
2180	var x388 uint64
2181	x388, x387 = bits.Mul64(x357, 0xffffffffffffffff)
2182	var x389 uint64
2183	var x390 uint64
2184	x390, x389 = bits.Mul64(x357, 0xffffffffffffffff)
2185	var x391 uint64
2186	var x392 uint64
2187	x392, x391 = bits.Mul64(x357, 0xffffffffffffffff)
2188	var x393 uint64
2189	var x394 uint64
2190	x394, x393 = bits.Mul64(x357, 0xffffffffffffffff)
2191	var x395 uint64
2192	var x396 uint64
2193	x395, x396 = bits.Add64(x394, x391, uint64(0x0))
2194	var x397 uint64
2195	var x398 uint64
2196	x397, x398 = bits.Add64(x392, x389, uint64(p521Uint1(x396)))
2197	var x399 uint64
2198	var x400 uint64
2199	x399, x400 = bits.Add64(x390, x387, uint64(p521Uint1(x398)))
2200	var x401 uint64
2201	var x402 uint64
2202	x401, x402 = bits.Add64(x388, x385, uint64(p521Uint1(x400)))
2203	var x403 uint64
2204	var x404 uint64
2205	x403, x404 = bits.Add64(x386, x383, uint64(p521Uint1(x402)))
2206	var x405 uint64
2207	var x406 uint64
2208	x405, x406 = bits.Add64(x384, x381, uint64(p521Uint1(x404)))
2209	var x407 uint64
2210	var x408 uint64
2211	x407, x408 = bits.Add64(x382, x379, uint64(p521Uint1(x406)))
2212	var x409 uint64
2213	var x410 uint64
2214	x409, x410 = bits.Add64(x380, x377, uint64(p521Uint1(x408)))
2215	x411 := (uint64(p521Uint1(x410)) + x378)
2216	var x413 uint64
2217	_, x413 = bits.Add64(x357, x393, uint64(0x0))
2218	var x414 uint64
2219	var x415 uint64
2220	x414, x415 = bits.Add64(x359, x395, uint64(p521Uint1(x413)))
2221	var x416 uint64
2222	var x417 uint64
2223	x416, x417 = bits.Add64(x361, x397, uint64(p521Uint1(x415)))
2224	var x418 uint64
2225	var x419 uint64
2226	x418, x419 = bits.Add64(x363, x399, uint64(p521Uint1(x417)))
2227	var x420 uint64
2228	var x421 uint64
2229	x420, x421 = bits.Add64(x365, x401, uint64(p521Uint1(x419)))
2230	var x422 uint64
2231	var x423 uint64
2232	x422, x423 = bits.Add64(x367, x403, uint64(p521Uint1(x421)))
2233	var x424 uint64
2234	var x425 uint64
2235	x424, x425 = bits.Add64(x369, x405, uint64(p521Uint1(x423)))
2236	var x426 uint64
2237	var x427 uint64
2238	x426, x427 = bits.Add64(x371, x407, uint64(p521Uint1(x425)))
2239	var x428 uint64
2240	var x429 uint64
2241	x428, x429 = bits.Add64(x373, x409, uint64(p521Uint1(x427)))
2242	var x430 uint64
2243	var x431 uint64
2244	x430, x431 = bits.Add64(x375, x411, uint64(p521Uint1(x429)))
2245	x432 := (uint64(p521Uint1(x431)) + uint64(p521Uint1(x376)))
2246	var x433 uint64
2247	var x434 uint64
2248	x434, x433 = bits.Mul64(x4, arg1[8])
2249	var x435 uint64
2250	var x436 uint64
2251	x436, x435 = bits.Mul64(x4, arg1[7])
2252	var x437 uint64
2253	var x438 uint64
2254	x438, x437 = bits.Mul64(x4, arg1[6])
2255	var x439 uint64
2256	var x440 uint64
2257	x440, x439 = bits.Mul64(x4, arg1[5])
2258	var x441 uint64
2259	var x442 uint64
2260	x442, x441 = bits.Mul64(x4, arg1[4])
2261	var x443 uint64
2262	var x444 uint64
2263	x444, x443 = bits.Mul64(x4, arg1[3])
2264	var x445 uint64
2265	var x446 uint64
2266	x446, x445 = bits.Mul64(x4, arg1[2])
2267	var x447 uint64
2268	var x448 uint64
2269	x448, x447 = bits.Mul64(x4, arg1[1])
2270	var x449 uint64
2271	var x450 uint64
2272	x450, x449 = bits.Mul64(x4, arg1[0])
2273	var x451 uint64
2274	var x452 uint64
2275	x451, x452 = bits.Add64(x450, x447, uint64(0x0))
2276	var x453 uint64
2277	var x454 uint64
2278	x453, x454 = bits.Add64(x448, x445, uint64(p521Uint1(x452)))
2279	var x455 uint64
2280	var x456 uint64
2281	x455, x456 = bits.Add64(x446, x443, uint64(p521Uint1(x454)))
2282	var x457 uint64
2283	var x458 uint64
2284	x457, x458 = bits.Add64(x444, x441, uint64(p521Uint1(x456)))
2285	var x459 uint64
2286	var x460 uint64
2287	x459, x460 = bits.Add64(x442, x439, uint64(p521Uint1(x458)))
2288	var x461 uint64
2289	var x462 uint64
2290	x461, x462 = bits.Add64(x440, x437, uint64(p521Uint1(x460)))
2291	var x463 uint64
2292	var x464 uint64
2293	x463, x464 = bits.Add64(x438, x435, uint64(p521Uint1(x462)))
2294	var x465 uint64
2295	var x466 uint64
2296	x465, x466 = bits.Add64(x436, x433, uint64(p521Uint1(x464)))
2297	x467 := (uint64(p521Uint1(x466)) + x434)
2298	var x468 uint64
2299	var x469 uint64
2300	x468, x469 = bits.Add64(x414, x449, uint64(0x0))
2301	var x470 uint64
2302	var x471 uint64
2303	x470, x471 = bits.Add64(x416, x451, uint64(p521Uint1(x469)))
2304	var x472 uint64
2305	var x473 uint64
2306	x472, x473 = bits.Add64(x418, x453, uint64(p521Uint1(x471)))
2307	var x474 uint64
2308	var x475 uint64
2309	x474, x475 = bits.Add64(x420, x455, uint64(p521Uint1(x473)))
2310	var x476 uint64
2311	var x477 uint64
2312	x476, x477 = bits.Add64(x422, x457, uint64(p521Uint1(x475)))
2313	var x478 uint64
2314	var x479 uint64
2315	x478, x479 = bits.Add64(x424, x459, uint64(p521Uint1(x477)))
2316	var x480 uint64
2317	var x481 uint64
2318	x480, x481 = bits.Add64(x426, x461, uint64(p521Uint1(x479)))
2319	var x482 uint64
2320	var x483 uint64
2321	x482, x483 = bits.Add64(x428, x463, uint64(p521Uint1(x481)))
2322	var x484 uint64
2323	var x485 uint64
2324	x484, x485 = bits.Add64(x430, x465, uint64(p521Uint1(x483)))
2325	var x486 uint64
2326	var x487 uint64
2327	x486, x487 = bits.Add64(x432, x467, uint64(p521Uint1(x485)))
2328	var x488 uint64
2329	var x489 uint64
2330	x489, x488 = bits.Mul64(x468, 0x1ff)
2331	var x490 uint64
2332	var x491 uint64
2333	x491, x490 = bits.Mul64(x468, 0xffffffffffffffff)
2334	var x492 uint64
2335	var x493 uint64
2336	x493, x492 = bits.Mul64(x468, 0xffffffffffffffff)
2337	var x494 uint64
2338	var x495 uint64
2339	x495, x494 = bits.Mul64(x468, 0xffffffffffffffff)
2340	var x496 uint64
2341	var x497 uint64
2342	x497, x496 = bits.Mul64(x468, 0xffffffffffffffff)
2343	var x498 uint64
2344	var x499 uint64
2345	x499, x498 = bits.Mul64(x468, 0xffffffffffffffff)
2346	var x500 uint64
2347	var x501 uint64
2348	x501, x500 = bits.Mul64(x468, 0xffffffffffffffff)
2349	var x502 uint64
2350	var x503 uint64
2351	x503, x502 = bits.Mul64(x468, 0xffffffffffffffff)
2352	var x504 uint64
2353	var x505 uint64
2354	x505, x504 = bits.Mul64(x468, 0xffffffffffffffff)
2355	var x506 uint64
2356	var x507 uint64
2357	x506, x507 = bits.Add64(x505, x502, uint64(0x0))
2358	var x508 uint64
2359	var x509 uint64
2360	x508, x509 = bits.Add64(x503, x500, uint64(p521Uint1(x507)))
2361	var x510 uint64
2362	var x511 uint64
2363	x510, x511 = bits.Add64(x501, x498, uint64(p521Uint1(x509)))
2364	var x512 uint64
2365	var x513 uint64
2366	x512, x513 = bits.Add64(x499, x496, uint64(p521Uint1(x511)))
2367	var x514 uint64
2368	var x515 uint64
2369	x514, x515 = bits.Add64(x497, x494, uint64(p521Uint1(x513)))
2370	var x516 uint64
2371	var x517 uint64
2372	x516, x517 = bits.Add64(x495, x492, uint64(p521Uint1(x515)))
2373	var x518 uint64
2374	var x519 uint64
2375	x518, x519 = bits.Add64(x493, x490, uint64(p521Uint1(x517)))
2376	var x520 uint64
2377	var x521 uint64
2378	x520, x521 = bits.Add64(x491, x488, uint64(p521Uint1(x519)))
2379	x522 := (uint64(p521Uint1(x521)) + x489)
2380	var x524 uint64
2381	_, x524 = bits.Add64(x468, x504, uint64(0x0))
2382	var x525 uint64
2383	var x526 uint64
2384	x525, x526 = bits.Add64(x470, x506, uint64(p521Uint1(x524)))
2385	var x527 uint64
2386	var x528 uint64
2387	x527, x528 = bits.Add64(x472, x508, uint64(p521Uint1(x526)))
2388	var x529 uint64
2389	var x530 uint64
2390	x529, x530 = bits.Add64(x474, x510, uint64(p521Uint1(x528)))
2391	var x531 uint64
2392	var x532 uint64
2393	x531, x532 = bits.Add64(x476, x512, uint64(p521Uint1(x530)))
2394	var x533 uint64
2395	var x534 uint64
2396	x533, x534 = bits.Add64(x478, x514, uint64(p521Uint1(x532)))
2397	var x535 uint64
2398	var x536 uint64
2399	x535, x536 = bits.Add64(x480, x516, uint64(p521Uint1(x534)))
2400	var x537 uint64
2401	var x538 uint64
2402	x537, x538 = bits.Add64(x482, x518, uint64(p521Uint1(x536)))
2403	var x539 uint64
2404	var x540 uint64
2405	x539, x540 = bits.Add64(x484, x520, uint64(p521Uint1(x538)))
2406	var x541 uint64
2407	var x542 uint64
2408	x541, x542 = bits.Add64(x486, x522, uint64(p521Uint1(x540)))
2409	x543 := (uint64(p521Uint1(x542)) + uint64(p521Uint1(x487)))
2410	var x544 uint64
2411	var x545 uint64
2412	x545, x544 = bits.Mul64(x5, arg1[8])
2413	var x546 uint64
2414	var x547 uint64
2415	x547, x546 = bits.Mul64(x5, arg1[7])
2416	var x548 uint64
2417	var x549 uint64
2418	x549, x548 = bits.Mul64(x5, arg1[6])
2419	var x550 uint64
2420	var x551 uint64
2421	x551, x550 = bits.Mul64(x5, arg1[5])
2422	var x552 uint64
2423	var x553 uint64
2424	x553, x552 = bits.Mul64(x5, arg1[4])
2425	var x554 uint64
2426	var x555 uint64
2427	x555, x554 = bits.Mul64(x5, arg1[3])
2428	var x556 uint64
2429	var x557 uint64
2430	x557, x556 = bits.Mul64(x5, arg1[2])
2431	var x558 uint64
2432	var x559 uint64
2433	x559, x558 = bits.Mul64(x5, arg1[1])
2434	var x560 uint64
2435	var x561 uint64
2436	x561, x560 = bits.Mul64(x5, arg1[0])
2437	var x562 uint64
2438	var x563 uint64
2439	x562, x563 = bits.Add64(x561, x558, uint64(0x0))
2440	var x564 uint64
2441	var x565 uint64
2442	x564, x565 = bits.Add64(x559, x556, uint64(p521Uint1(x563)))
2443	var x566 uint64
2444	var x567 uint64
2445	x566, x567 = bits.Add64(x557, x554, uint64(p521Uint1(x565)))
2446	var x568 uint64
2447	var x569 uint64
2448	x568, x569 = bits.Add64(x555, x552, uint64(p521Uint1(x567)))
2449	var x570 uint64
2450	var x571 uint64
2451	x570, x571 = bits.Add64(x553, x550, uint64(p521Uint1(x569)))
2452	var x572 uint64
2453	var x573 uint64
2454	x572, x573 = bits.Add64(x551, x548, uint64(p521Uint1(x571)))
2455	var x574 uint64
2456	var x575 uint64
2457	x574, x575 = bits.Add64(x549, x546, uint64(p521Uint1(x573)))
2458	var x576 uint64
2459	var x577 uint64
2460	x576, x577 = bits.Add64(x547, x544, uint64(p521Uint1(x575)))
2461	x578 := (uint64(p521Uint1(x577)) + x545)
2462	var x579 uint64
2463	var x580 uint64
2464	x579, x580 = bits.Add64(x525, x560, uint64(0x0))
2465	var x581 uint64
2466	var x582 uint64
2467	x581, x582 = bits.Add64(x527, x562, uint64(p521Uint1(x580)))
2468	var x583 uint64
2469	var x584 uint64
2470	x583, x584 = bits.Add64(x529, x564, uint64(p521Uint1(x582)))
2471	var x585 uint64
2472	var x586 uint64
2473	x585, x586 = bits.Add64(x531, x566, uint64(p521Uint1(x584)))
2474	var x587 uint64
2475	var x588 uint64
2476	x587, x588 = bits.Add64(x533, x568, uint64(p521Uint1(x586)))
2477	var x589 uint64
2478	var x590 uint64
2479	x589, x590 = bits.Add64(x535, x570, uint64(p521Uint1(x588)))
2480	var x591 uint64
2481	var x592 uint64
2482	x591, x592 = bits.Add64(x537, x572, uint64(p521Uint1(x590)))
2483	var x593 uint64
2484	var x594 uint64
2485	x593, x594 = bits.Add64(x539, x574, uint64(p521Uint1(x592)))
2486	var x595 uint64
2487	var x596 uint64
2488	x595, x596 = bits.Add64(x541, x576, uint64(p521Uint1(x594)))
2489	var x597 uint64
2490	var x598 uint64
2491	x597, x598 = bits.Add64(x543, x578, uint64(p521Uint1(x596)))
2492	var x599 uint64
2493	var x600 uint64
2494	x600, x599 = bits.Mul64(x579, 0x1ff)
2495	var x601 uint64
2496	var x602 uint64
2497	x602, x601 = bits.Mul64(x579, 0xffffffffffffffff)
2498	var x603 uint64
2499	var x604 uint64
2500	x604, x603 = bits.Mul64(x579, 0xffffffffffffffff)
2501	var x605 uint64
2502	var x606 uint64
2503	x606, x605 = bits.Mul64(x579, 0xffffffffffffffff)
2504	var x607 uint64
2505	var x608 uint64
2506	x608, x607 = bits.Mul64(x579, 0xffffffffffffffff)
2507	var x609 uint64
2508	var x610 uint64
2509	x610, x609 = bits.Mul64(x579, 0xffffffffffffffff)
2510	var x611 uint64
2511	var x612 uint64
2512	x612, x611 = bits.Mul64(x579, 0xffffffffffffffff)
2513	var x613 uint64
2514	var x614 uint64
2515	x614, x613 = bits.Mul64(x579, 0xffffffffffffffff)
2516	var x615 uint64
2517	var x616 uint64
2518	x616, x615 = bits.Mul64(x579, 0xffffffffffffffff)
2519	var x617 uint64
2520	var x618 uint64
2521	x617, x618 = bits.Add64(x616, x613, uint64(0x0))
2522	var x619 uint64
2523	var x620 uint64
2524	x619, x620 = bits.Add64(x614, x611, uint64(p521Uint1(x618)))
2525	var x621 uint64
2526	var x622 uint64
2527	x621, x622 = bits.Add64(x612, x609, uint64(p521Uint1(x620)))
2528	var x623 uint64
2529	var x624 uint64
2530	x623, x624 = bits.Add64(x610, x607, uint64(p521Uint1(x622)))
2531	var x625 uint64
2532	var x626 uint64
2533	x625, x626 = bits.Add64(x608, x605, uint64(p521Uint1(x624)))
2534	var x627 uint64
2535	var x628 uint64
2536	x627, x628 = bits.Add64(x606, x603, uint64(p521Uint1(x626)))
2537	var x629 uint64
2538	var x630 uint64
2539	x629, x630 = bits.Add64(x604, x601, uint64(p521Uint1(x628)))
2540	var x631 uint64
2541	var x632 uint64
2542	x631, x632 = bits.Add64(x602, x599, uint64(p521Uint1(x630)))
2543	x633 := (uint64(p521Uint1(x632)) + x600)
2544	var x635 uint64
2545	_, x635 = bits.Add64(x579, x615, uint64(0x0))
2546	var x636 uint64
2547	var x637 uint64
2548	x636, x637 = bits.Add64(x581, x617, uint64(p521Uint1(x635)))
2549	var x638 uint64
2550	var x639 uint64
2551	x638, x639 = bits.Add64(x583, x619, uint64(p521Uint1(x637)))
2552	var x640 uint64
2553	var x641 uint64
2554	x640, x641 = bits.Add64(x585, x621, uint64(p521Uint1(x639)))
2555	var x642 uint64
2556	var x643 uint64
2557	x642, x643 = bits.Add64(x587, x623, uint64(p521Uint1(x641)))
2558	var x644 uint64
2559	var x645 uint64
2560	x644, x645 = bits.Add64(x589, x625, uint64(p521Uint1(x643)))
2561	var x646 uint64
2562	var x647 uint64
2563	x646, x647 = bits.Add64(x591, x627, uint64(p521Uint1(x645)))
2564	var x648 uint64
2565	var x649 uint64
2566	x648, x649 = bits.Add64(x593, x629, uint64(p521Uint1(x647)))
2567	var x650 uint64
2568	var x651 uint64
2569	x650, x651 = bits.Add64(x595, x631, uint64(p521Uint1(x649)))
2570	var x652 uint64
2571	var x653 uint64
2572	x652, x653 = bits.Add64(x597, x633, uint64(p521Uint1(x651)))
2573	x654 := (uint64(p521Uint1(x653)) + uint64(p521Uint1(x598)))
2574	var x655 uint64
2575	var x656 uint64
2576	x656, x655 = bits.Mul64(x6, arg1[8])
2577	var x657 uint64
2578	var x658 uint64
2579	x658, x657 = bits.Mul64(x6, arg1[7])
2580	var x659 uint64
2581	var x660 uint64
2582	x660, x659 = bits.Mul64(x6, arg1[6])
2583	var x661 uint64
2584	var x662 uint64
2585	x662, x661 = bits.Mul64(x6, arg1[5])
2586	var x663 uint64
2587	var x664 uint64
2588	x664, x663 = bits.Mul64(x6, arg1[4])
2589	var x665 uint64
2590	var x666 uint64
2591	x666, x665 = bits.Mul64(x6, arg1[3])
2592	var x667 uint64
2593	var x668 uint64
2594	x668, x667 = bits.Mul64(x6, arg1[2])
2595	var x669 uint64
2596	var x670 uint64
2597	x670, x669 = bits.Mul64(x6, arg1[1])
2598	var x671 uint64
2599	var x672 uint64
2600	x672, x671 = bits.Mul64(x6, arg1[0])
2601	var x673 uint64
2602	var x674 uint64
2603	x673, x674 = bits.Add64(x672, x669, uint64(0x0))
2604	var x675 uint64
2605	var x676 uint64
2606	x675, x676 = bits.Add64(x670, x667, uint64(p521Uint1(x674)))
2607	var x677 uint64
2608	var x678 uint64
2609	x677, x678 = bits.Add64(x668, x665, uint64(p521Uint1(x676)))
2610	var x679 uint64
2611	var x680 uint64
2612	x679, x680 = bits.Add64(x666, x663, uint64(p521Uint1(x678)))
2613	var x681 uint64
2614	var x682 uint64
2615	x681, x682 = bits.Add64(x664, x661, uint64(p521Uint1(x680)))
2616	var x683 uint64
2617	var x684 uint64
2618	x683, x684 = bits.Add64(x662, x659, uint64(p521Uint1(x682)))
2619	var x685 uint64
2620	var x686 uint64
2621	x685, x686 = bits.Add64(x660, x657, uint64(p521Uint1(x684)))
2622	var x687 uint64
2623	var x688 uint64
2624	x687, x688 = bits.Add64(x658, x655, uint64(p521Uint1(x686)))
2625	x689 := (uint64(p521Uint1(x688)) + x656)
2626	var x690 uint64
2627	var x691 uint64
2628	x690, x691 = bits.Add64(x636, x671, uint64(0x0))
2629	var x692 uint64
2630	var x693 uint64
2631	x692, x693 = bits.Add64(x638, x673, uint64(p521Uint1(x691)))
2632	var x694 uint64
2633	var x695 uint64
2634	x694, x695 = bits.Add64(x640, x675, uint64(p521Uint1(x693)))
2635	var x696 uint64
2636	var x697 uint64
2637	x696, x697 = bits.Add64(x642, x677, uint64(p521Uint1(x695)))
2638	var x698 uint64
2639	var x699 uint64
2640	x698, x699 = bits.Add64(x644, x679, uint64(p521Uint1(x697)))
2641	var x700 uint64
2642	var x701 uint64
2643	x700, x701 = bits.Add64(x646, x681, uint64(p521Uint1(x699)))
2644	var x702 uint64
2645	var x703 uint64
2646	x702, x703 = bits.Add64(x648, x683, uint64(p521Uint1(x701)))
2647	var x704 uint64
2648	var x705 uint64
2649	x704, x705 = bits.Add64(x650, x685, uint64(p521Uint1(x703)))
2650	var x706 uint64
2651	var x707 uint64
2652	x706, x707 = bits.Add64(x652, x687, uint64(p521Uint1(x705)))
2653	var x708 uint64
2654	var x709 uint64
2655	x708, x709 = bits.Add64(x654, x689, uint64(p521Uint1(x707)))
2656	var x710 uint64
2657	var x711 uint64
2658	x711, x710 = bits.Mul64(x690, 0x1ff)
2659	var x712 uint64
2660	var x713 uint64
2661	x713, x712 = bits.Mul64(x690, 0xffffffffffffffff)
2662	var x714 uint64
2663	var x715 uint64
2664	x715, x714 = bits.Mul64(x690, 0xffffffffffffffff)
2665	var x716 uint64
2666	var x717 uint64
2667	x717, x716 = bits.Mul64(x690, 0xffffffffffffffff)
2668	var x718 uint64
2669	var x719 uint64
2670	x719, x718 = bits.Mul64(x690, 0xffffffffffffffff)
2671	var x720 uint64
2672	var x721 uint64
2673	x721, x720 = bits.Mul64(x690, 0xffffffffffffffff)
2674	var x722 uint64
2675	var x723 uint64
2676	x723, x722 = bits.Mul64(x690, 0xffffffffffffffff)
2677	var x724 uint64
2678	var x725 uint64
2679	x725, x724 = bits.Mul64(x690, 0xffffffffffffffff)
2680	var x726 uint64
2681	var x727 uint64
2682	x727, x726 = bits.Mul64(x690, 0xffffffffffffffff)
2683	var x728 uint64
2684	var x729 uint64
2685	x728, x729 = bits.Add64(x727, x724, uint64(0x0))
2686	var x730 uint64
2687	var x731 uint64
2688	x730, x731 = bits.Add64(x725, x722, uint64(p521Uint1(x729)))
2689	var x732 uint64
2690	var x733 uint64
2691	x732, x733 = bits.Add64(x723, x720, uint64(p521Uint1(x731)))
2692	var x734 uint64
2693	var x735 uint64
2694	x734, x735 = bits.Add64(x721, x718, uint64(p521Uint1(x733)))
2695	var x736 uint64
2696	var x737 uint64
2697	x736, x737 = bits.Add64(x719, x716, uint64(p521Uint1(x735)))
2698	var x738 uint64
2699	var x739 uint64
2700	x738, x739 = bits.Add64(x717, x714, uint64(p521Uint1(x737)))
2701	var x740 uint64
2702	var x741 uint64
2703	x740, x741 = bits.Add64(x715, x712, uint64(p521Uint1(x739)))
2704	var x742 uint64
2705	var x743 uint64
2706	x742, x743 = bits.Add64(x713, x710, uint64(p521Uint1(x741)))
2707	x744 := (uint64(p521Uint1(x743)) + x711)
2708	var x746 uint64
2709	_, x746 = bits.Add64(x690, x726, uint64(0x0))
2710	var x747 uint64
2711	var x748 uint64
2712	x747, x748 = bits.Add64(x692, x728, uint64(p521Uint1(x746)))
2713	var x749 uint64
2714	var x750 uint64
2715	x749, x750 = bits.Add64(x694, x730, uint64(p521Uint1(x748)))
2716	var x751 uint64
2717	var x752 uint64
2718	x751, x752 = bits.Add64(x696, x732, uint64(p521Uint1(x750)))
2719	var x753 uint64
2720	var x754 uint64
2721	x753, x754 = bits.Add64(x698, x734, uint64(p521Uint1(x752)))
2722	var x755 uint64
2723	var x756 uint64
2724	x755, x756 = bits.Add64(x700, x736, uint64(p521Uint1(x754)))
2725	var x757 uint64
2726	var x758 uint64
2727	x757, x758 = bits.Add64(x702, x738, uint64(p521Uint1(x756)))
2728	var x759 uint64
2729	var x760 uint64
2730	x759, x760 = bits.Add64(x704, x740, uint64(p521Uint1(x758)))
2731	var x761 uint64
2732	var x762 uint64
2733	x761, x762 = bits.Add64(x706, x742, uint64(p521Uint1(x760)))
2734	var x763 uint64
2735	var x764 uint64
2736	x763, x764 = bits.Add64(x708, x744, uint64(p521Uint1(x762)))
2737	x765 := (uint64(p521Uint1(x764)) + uint64(p521Uint1(x709)))
2738	var x766 uint64
2739	var x767 uint64
2740	x767, x766 = bits.Mul64(x7, arg1[8])
2741	var x768 uint64
2742	var x769 uint64
2743	x769, x768 = bits.Mul64(x7, arg1[7])
2744	var x770 uint64
2745	var x771 uint64
2746	x771, x770 = bits.Mul64(x7, arg1[6])
2747	var x772 uint64
2748	var x773 uint64
2749	x773, x772 = bits.Mul64(x7, arg1[5])
2750	var x774 uint64
2751	var x775 uint64
2752	x775, x774 = bits.Mul64(x7, arg1[4])
2753	var x776 uint64
2754	var x777 uint64
2755	x777, x776 = bits.Mul64(x7, arg1[3])
2756	var x778 uint64
2757	var x779 uint64
2758	x779, x778 = bits.Mul64(x7, arg1[2])
2759	var x780 uint64
2760	var x781 uint64
2761	x781, x780 = bits.Mul64(x7, arg1[1])
2762	var x782 uint64
2763	var x783 uint64
2764	x783, x782 = bits.Mul64(x7, arg1[0])
2765	var x784 uint64
2766	var x785 uint64
2767	x784, x785 = bits.Add64(x783, x780, uint64(0x0))
2768	var x786 uint64
2769	var x787 uint64
2770	x786, x787 = bits.Add64(x781, x778, uint64(p521Uint1(x785)))
2771	var x788 uint64
2772	var x789 uint64
2773	x788, x789 = bits.Add64(x779, x776, uint64(p521Uint1(x787)))
2774	var x790 uint64
2775	var x791 uint64
2776	x790, x791 = bits.Add64(x777, x774, uint64(p521Uint1(x789)))
2777	var x792 uint64
2778	var x793 uint64
2779	x792, x793 = bits.Add64(x775, x772, uint64(p521Uint1(x791)))
2780	var x794 uint64
2781	var x795 uint64
2782	x794, x795 = bits.Add64(x773, x770, uint64(p521Uint1(x793)))
2783	var x796 uint64
2784	var x797 uint64
2785	x796, x797 = bits.Add64(x771, x768, uint64(p521Uint1(x795)))
2786	var x798 uint64
2787	var x799 uint64
2788	x798, x799 = bits.Add64(x769, x766, uint64(p521Uint1(x797)))
2789	x800 := (uint64(p521Uint1(x799)) + x767)
2790	var x801 uint64
2791	var x802 uint64
2792	x801, x802 = bits.Add64(x747, x782, uint64(0x0))
2793	var x803 uint64
2794	var x804 uint64
2795	x803, x804 = bits.Add64(x749, x784, uint64(p521Uint1(x802)))
2796	var x805 uint64
2797	var x806 uint64
2798	x805, x806 = bits.Add64(x751, x786, uint64(p521Uint1(x804)))
2799	var x807 uint64
2800	var x808 uint64
2801	x807, x808 = bits.Add64(x753, x788, uint64(p521Uint1(x806)))
2802	var x809 uint64
2803	var x810 uint64
2804	x809, x810 = bits.Add64(x755, x790, uint64(p521Uint1(x808)))
2805	var x811 uint64
2806	var x812 uint64
2807	x811, x812 = bits.Add64(x757, x792, uint64(p521Uint1(x810)))
2808	var x813 uint64
2809	var x814 uint64
2810	x813, x814 = bits.Add64(x759, x794, uint64(p521Uint1(x812)))
2811	var x815 uint64
2812	var x816 uint64
2813	x815, x816 = bits.Add64(x761, x796, uint64(p521Uint1(x814)))
2814	var x817 uint64
2815	var x818 uint64
2816	x817, x818 = bits.Add64(x763, x798, uint64(p521Uint1(x816)))
2817	var x819 uint64
2818	var x820 uint64
2819	x819, x820 = bits.Add64(x765, x800, uint64(p521Uint1(x818)))
2820	var x821 uint64
2821	var x822 uint64
2822	x822, x821 = bits.Mul64(x801, 0x1ff)
2823	var x823 uint64
2824	var x824 uint64
2825	x824, x823 = bits.Mul64(x801, 0xffffffffffffffff)
2826	var x825 uint64
2827	var x826 uint64
2828	x826, x825 = bits.Mul64(x801, 0xffffffffffffffff)
2829	var x827 uint64
2830	var x828 uint64
2831	x828, x827 = bits.Mul64(x801, 0xffffffffffffffff)
2832	var x829 uint64
2833	var x830 uint64
2834	x830, x829 = bits.Mul64(x801, 0xffffffffffffffff)
2835	var x831 uint64
2836	var x832 uint64
2837	x832, x831 = bits.Mul64(x801, 0xffffffffffffffff)
2838	var x833 uint64
2839	var x834 uint64
2840	x834, x833 = bits.Mul64(x801, 0xffffffffffffffff)
2841	var x835 uint64
2842	var x836 uint64
2843	x836, x835 = bits.Mul64(x801, 0xffffffffffffffff)
2844	var x837 uint64
2845	var x838 uint64
2846	x838, x837 = bits.Mul64(x801, 0xffffffffffffffff)
2847	var x839 uint64
2848	var x840 uint64
2849	x839, x840 = bits.Add64(x838, x835, uint64(0x0))
2850	var x841 uint64
2851	var x842 uint64
2852	x841, x842 = bits.Add64(x836, x833, uint64(p521Uint1(x840)))
2853	var x843 uint64
2854	var x844 uint64
2855	x843, x844 = bits.Add64(x834, x831, uint64(p521Uint1(x842)))
2856	var x845 uint64
2857	var x846 uint64
2858	x845, x846 = bits.Add64(x832, x829, uint64(p521Uint1(x844)))
2859	var x847 uint64
2860	var x848 uint64
2861	x847, x848 = bits.Add64(x830, x827, uint64(p521Uint1(x846)))
2862	var x849 uint64
2863	var x850 uint64
2864	x849, x850 = bits.Add64(x828, x825, uint64(p521Uint1(x848)))
2865	var x851 uint64
2866	var x852 uint64
2867	x851, x852 = bits.Add64(x826, x823, uint64(p521Uint1(x850)))
2868	var x853 uint64
2869	var x854 uint64
2870	x853, x854 = bits.Add64(x824, x821, uint64(p521Uint1(x852)))
2871	x855 := (uint64(p521Uint1(x854)) + x822)
2872	var x857 uint64
2873	_, x857 = bits.Add64(x801, x837, uint64(0x0))
2874	var x858 uint64
2875	var x859 uint64
2876	x858, x859 = bits.Add64(x803, x839, uint64(p521Uint1(x857)))
2877	var x860 uint64
2878	var x861 uint64
2879	x860, x861 = bits.Add64(x805, x841, uint64(p521Uint1(x859)))
2880	var x862 uint64
2881	var x863 uint64
2882	x862, x863 = bits.Add64(x807, x843, uint64(p521Uint1(x861)))
2883	var x864 uint64
2884	var x865 uint64
2885	x864, x865 = bits.Add64(x809, x845, uint64(p521Uint1(x863)))
2886	var x866 uint64
2887	var x867 uint64
2888	x866, x867 = bits.Add64(x811, x847, uint64(p521Uint1(x865)))
2889	var x868 uint64
2890	var x869 uint64
2891	x868, x869 = bits.Add64(x813, x849, uint64(p521Uint1(x867)))
2892	var x870 uint64
2893	var x871 uint64
2894	x870, x871 = bits.Add64(x815, x851, uint64(p521Uint1(x869)))
2895	var x872 uint64
2896	var x873 uint64
2897	x872, x873 = bits.Add64(x817, x853, uint64(p521Uint1(x871)))
2898	var x874 uint64
2899	var x875 uint64
2900	x874, x875 = bits.Add64(x819, x855, uint64(p521Uint1(x873)))
2901	x876 := (uint64(p521Uint1(x875)) + uint64(p521Uint1(x820)))
2902	var x877 uint64
2903	var x878 uint64
2904	x878, x877 = bits.Mul64(x8, arg1[8])
2905	var x879 uint64
2906	var x880 uint64
2907	x880, x879 = bits.Mul64(x8, arg1[7])
2908	var x881 uint64
2909	var x882 uint64
2910	x882, x881 = bits.Mul64(x8, arg1[6])
2911	var x883 uint64
2912	var x884 uint64
2913	x884, x883 = bits.Mul64(x8, arg1[5])
2914	var x885 uint64
2915	var x886 uint64
2916	x886, x885 = bits.Mul64(x8, arg1[4])
2917	var x887 uint64
2918	var x888 uint64
2919	x888, x887 = bits.Mul64(x8, arg1[3])
2920	var x889 uint64
2921	var x890 uint64
2922	x890, x889 = bits.Mul64(x8, arg1[2])
2923	var x891 uint64
2924	var x892 uint64
2925	x892, x891 = bits.Mul64(x8, arg1[1])
2926	var x893 uint64
2927	var x894 uint64
2928	x894, x893 = bits.Mul64(x8, arg1[0])
2929	var x895 uint64
2930	var x896 uint64
2931	x895, x896 = bits.Add64(x894, x891, uint64(0x0))
2932	var x897 uint64
2933	var x898 uint64
2934	x897, x898 = bits.Add64(x892, x889, uint64(p521Uint1(x896)))
2935	var x899 uint64
2936	var x900 uint64
2937	x899, x900 = bits.Add64(x890, x887, uint64(p521Uint1(x898)))
2938	var x901 uint64
2939	var x902 uint64
2940	x901, x902 = bits.Add64(x888, x885, uint64(p521Uint1(x900)))
2941	var x903 uint64
2942	var x904 uint64
2943	x903, x904 = bits.Add64(x886, x883, uint64(p521Uint1(x902)))
2944	var x905 uint64
2945	var x906 uint64
2946	x905, x906 = bits.Add64(x884, x881, uint64(p521Uint1(x904)))
2947	var x907 uint64
2948	var x908 uint64
2949	x907, x908 = bits.Add64(x882, x879, uint64(p521Uint1(x906)))
2950	var x909 uint64
2951	var x910 uint64
2952	x909, x910 = bits.Add64(x880, x877, uint64(p521Uint1(x908)))
2953	x911 := (uint64(p521Uint1(x910)) + x878)
2954	var x912 uint64
2955	var x913 uint64
2956	x912, x913 = bits.Add64(x858, x893, uint64(0x0))
2957	var x914 uint64
2958	var x915 uint64
2959	x914, x915 = bits.Add64(x860, x895, uint64(p521Uint1(x913)))
2960	var x916 uint64
2961	var x917 uint64
2962	x916, x917 = bits.Add64(x862, x897, uint64(p521Uint1(x915)))
2963	var x918 uint64
2964	var x919 uint64
2965	x918, x919 = bits.Add64(x864, x899, uint64(p521Uint1(x917)))
2966	var x920 uint64
2967	var x921 uint64
2968	x920, x921 = bits.Add64(x866, x901, uint64(p521Uint1(x919)))
2969	var x922 uint64
2970	var x923 uint64
2971	x922, x923 = bits.Add64(x868, x903, uint64(p521Uint1(x921)))
2972	var x924 uint64
2973	var x925 uint64
2974	x924, x925 = bits.Add64(x870, x905, uint64(p521Uint1(x923)))
2975	var x926 uint64
2976	var x927 uint64
2977	x926, x927 = bits.Add64(x872, x907, uint64(p521Uint1(x925)))
2978	var x928 uint64
2979	var x929 uint64
2980	x928, x929 = bits.Add64(x874, x909, uint64(p521Uint1(x927)))
2981	var x930 uint64
2982	var x931 uint64
2983	x930, x931 = bits.Add64(x876, x911, uint64(p521Uint1(x929)))
2984	var x932 uint64
2985	var x933 uint64
2986	x933, x932 = bits.Mul64(x912, 0x1ff)
2987	var x934 uint64
2988	var x935 uint64
2989	x935, x934 = bits.Mul64(x912, 0xffffffffffffffff)
2990	var x936 uint64
2991	var x937 uint64
2992	x937, x936 = bits.Mul64(x912, 0xffffffffffffffff)
2993	var x938 uint64
2994	var x939 uint64
2995	x939, x938 = bits.Mul64(x912, 0xffffffffffffffff)
2996	var x940 uint64
2997	var x941 uint64
2998	x941, x940 = bits.Mul64(x912, 0xffffffffffffffff)
2999	var x942 uint64
3000	var x943 uint64
3001	x943, x942 = bits.Mul64(x912, 0xffffffffffffffff)
3002	var x944 uint64
3003	var x945 uint64
3004	x945, x944 = bits.Mul64(x912, 0xffffffffffffffff)
3005	var x946 uint64
3006	var x947 uint64
3007	x947, x946 = bits.Mul64(x912, 0xffffffffffffffff)
3008	var x948 uint64
3009	var x949 uint64
3010	x949, x948 = bits.Mul64(x912, 0xffffffffffffffff)
3011	var x950 uint64
3012	var x951 uint64
3013	x950, x951 = bits.Add64(x949, x946, uint64(0x0))
3014	var x952 uint64
3015	var x953 uint64
3016	x952, x953 = bits.Add64(x947, x944, uint64(p521Uint1(x951)))
3017	var x954 uint64
3018	var x955 uint64
3019	x954, x955 = bits.Add64(x945, x942, uint64(p521Uint1(x953)))
3020	var x956 uint64
3021	var x957 uint64
3022	x956, x957 = bits.Add64(x943, x940, uint64(p521Uint1(x955)))
3023	var x958 uint64
3024	var x959 uint64
3025	x958, x959 = bits.Add64(x941, x938, uint64(p521Uint1(x957)))
3026	var x960 uint64
3027	var x961 uint64
3028	x960, x961 = bits.Add64(x939, x936, uint64(p521Uint1(x959)))
3029	var x962 uint64
3030	var x963 uint64
3031	x962, x963 = bits.Add64(x937, x934, uint64(p521Uint1(x961)))
3032	var x964 uint64
3033	var x965 uint64
3034	x964, x965 = bits.Add64(x935, x932, uint64(p521Uint1(x963)))
3035	x966 := (uint64(p521Uint1(x965)) + x933)
3036	var x968 uint64
3037	_, x968 = bits.Add64(x912, x948, uint64(0x0))
3038	var x969 uint64
3039	var x970 uint64
3040	x969, x970 = bits.Add64(x914, x950, uint64(p521Uint1(x968)))
3041	var x971 uint64
3042	var x972 uint64
3043	x971, x972 = bits.Add64(x916, x952, uint64(p521Uint1(x970)))
3044	var x973 uint64
3045	var x974 uint64
3046	x973, x974 = bits.Add64(x918, x954, uint64(p521Uint1(x972)))
3047	var x975 uint64
3048	var x976 uint64
3049	x975, x976 = bits.Add64(x920, x956, uint64(p521Uint1(x974)))
3050	var x977 uint64
3051	var x978 uint64
3052	x977, x978 = bits.Add64(x922, x958, uint64(p521Uint1(x976)))
3053	var x979 uint64
3054	var x980 uint64
3055	x979, x980 = bits.Add64(x924, x960, uint64(p521Uint1(x978)))
3056	var x981 uint64
3057	var x982 uint64
3058	x981, x982 = bits.Add64(x926, x962, uint64(p521Uint1(x980)))
3059	var x983 uint64
3060	var x984 uint64
3061	x983, x984 = bits.Add64(x928, x964, uint64(p521Uint1(x982)))
3062	var x985 uint64
3063	var x986 uint64
3064	x985, x986 = bits.Add64(x930, x966, uint64(p521Uint1(x984)))
3065	x987 := (uint64(p521Uint1(x986)) + uint64(p521Uint1(x931)))
3066	var x988 uint64
3067	var x989 uint64
3068	x988, x989 = bits.Sub64(x969, 0xffffffffffffffff, uint64(0x0))
3069	var x990 uint64
3070	var x991 uint64
3071	x990, x991 = bits.Sub64(x971, 0xffffffffffffffff, uint64(p521Uint1(x989)))
3072	var x992 uint64
3073	var x993 uint64
3074	x992, x993 = bits.Sub64(x973, 0xffffffffffffffff, uint64(p521Uint1(x991)))
3075	var x994 uint64
3076	var x995 uint64
3077	x994, x995 = bits.Sub64(x975, 0xffffffffffffffff, uint64(p521Uint1(x993)))
3078	var x996 uint64
3079	var x997 uint64
3080	x996, x997 = bits.Sub64(x977, 0xffffffffffffffff, uint64(p521Uint1(x995)))
3081	var x998 uint64
3082	var x999 uint64
3083	x998, x999 = bits.Sub64(x979, 0xffffffffffffffff, uint64(p521Uint1(x997)))
3084	var x1000 uint64
3085	var x1001 uint64
3086	x1000, x1001 = bits.Sub64(x981, 0xffffffffffffffff, uint64(p521Uint1(x999)))
3087	var x1002 uint64
3088	var x1003 uint64
3089	x1002, x1003 = bits.Sub64(x983, 0xffffffffffffffff, uint64(p521Uint1(x1001)))
3090	var x1004 uint64
3091	var x1005 uint64
3092	x1004, x1005 = bits.Sub64(x985, 0x1ff, uint64(p521Uint1(x1003)))
3093	var x1007 uint64
3094	_, x1007 = bits.Sub64(x987, uint64(0x0), uint64(p521Uint1(x1005)))
3095	var x1008 uint64
3096	p521CmovznzU64(&x1008, p521Uint1(x1007), x988, x969)
3097	var x1009 uint64
3098	p521CmovznzU64(&x1009, p521Uint1(x1007), x990, x971)
3099	var x1010 uint64
3100	p521CmovznzU64(&x1010, p521Uint1(x1007), x992, x973)
3101	var x1011 uint64
3102	p521CmovznzU64(&x1011, p521Uint1(x1007), x994, x975)
3103	var x1012 uint64
3104	p521CmovznzU64(&x1012, p521Uint1(x1007), x996, x977)
3105	var x1013 uint64
3106	p521CmovznzU64(&x1013, p521Uint1(x1007), x998, x979)
3107	var x1014 uint64
3108	p521CmovznzU64(&x1014, p521Uint1(x1007), x1000, x981)
3109	var x1015 uint64
3110	p521CmovznzU64(&x1015, p521Uint1(x1007), x1002, x983)
3111	var x1016 uint64
3112	p521CmovznzU64(&x1016, p521Uint1(x1007), x1004, x985)
3113	out1[0] = x1008
3114	out1[1] = x1009
3115	out1[2] = x1010
3116	out1[3] = x1011
3117	out1[4] = x1012
3118	out1[5] = x1013
3119	out1[6] = x1014
3120	out1[7] = x1015
3121	out1[8] = x1016
3122}
3123
3124// p521Add adds two field elements in the Montgomery domain.
3125//
3126// Preconditions:
3127//
3128//	0 ≤ eval arg1 < m
3129//	0 ≤ eval arg2 < m
3130//
3131// Postconditions:
3132//
3133//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m
3134//	0 ≤ eval out1 < m
3135func p521Add(out1 *p521MontgomeryDomainFieldElement, arg1 *p521MontgomeryDomainFieldElement, arg2 *p521MontgomeryDomainFieldElement) {
3136	var x1 uint64
3137	var x2 uint64
3138	x1, x2 = bits.Add64(arg1[0], arg2[0], uint64(0x0))
3139	var x3 uint64
3140	var x4 uint64
3141	x3, x4 = bits.Add64(arg1[1], arg2[1], uint64(p521Uint1(x2)))
3142	var x5 uint64
3143	var x6 uint64
3144	x5, x6 = bits.Add64(arg1[2], arg2[2], uint64(p521Uint1(x4)))
3145	var x7 uint64
3146	var x8 uint64
3147	x7, x8 = bits.Add64(arg1[3], arg2[3], uint64(p521Uint1(x6)))
3148	var x9 uint64
3149	var x10 uint64
3150	x9, x10 = bits.Add64(arg1[4], arg2[4], uint64(p521Uint1(x8)))
3151	var x11 uint64
3152	var x12 uint64
3153	x11, x12 = bits.Add64(arg1[5], arg2[5], uint64(p521Uint1(x10)))
3154	var x13 uint64
3155	var x14 uint64
3156	x13, x14 = bits.Add64(arg1[6], arg2[6], uint64(p521Uint1(x12)))
3157	var x15 uint64
3158	var x16 uint64
3159	x15, x16 = bits.Add64(arg1[7], arg2[7], uint64(p521Uint1(x14)))
3160	var x17 uint64
3161	var x18 uint64
3162	x17, x18 = bits.Add64(arg1[8], arg2[8], uint64(p521Uint1(x16)))
3163	var x19 uint64
3164	var x20 uint64
3165	x19, x20 = bits.Sub64(x1, 0xffffffffffffffff, uint64(0x0))
3166	var x21 uint64
3167	var x22 uint64
3168	x21, x22 = bits.Sub64(x3, 0xffffffffffffffff, uint64(p521Uint1(x20)))
3169	var x23 uint64
3170	var x24 uint64
3171	x23, x24 = bits.Sub64(x5, 0xffffffffffffffff, uint64(p521Uint1(x22)))
3172	var x25 uint64
3173	var x26 uint64
3174	x25, x26 = bits.Sub64(x7, 0xffffffffffffffff, uint64(p521Uint1(x24)))
3175	var x27 uint64
3176	var x28 uint64
3177	x27, x28 = bits.Sub64(x9, 0xffffffffffffffff, uint64(p521Uint1(x26)))
3178	var x29 uint64
3179	var x30 uint64
3180	x29, x30 = bits.Sub64(x11, 0xffffffffffffffff, uint64(p521Uint1(x28)))
3181	var x31 uint64
3182	var x32 uint64
3183	x31, x32 = bits.Sub64(x13, 0xffffffffffffffff, uint64(p521Uint1(x30)))
3184	var x33 uint64
3185	var x34 uint64
3186	x33, x34 = bits.Sub64(x15, 0xffffffffffffffff, uint64(p521Uint1(x32)))
3187	var x35 uint64
3188	var x36 uint64
3189	x35, x36 = bits.Sub64(x17, 0x1ff, uint64(p521Uint1(x34)))
3190	var x38 uint64
3191	_, x38 = bits.Sub64(uint64(p521Uint1(x18)), uint64(0x0), uint64(p521Uint1(x36)))
3192	var x39 uint64
3193	p521CmovznzU64(&x39, p521Uint1(x38), x19, x1)
3194	var x40 uint64
3195	p521CmovznzU64(&x40, p521Uint1(x38), x21, x3)
3196	var x41 uint64
3197	p521CmovznzU64(&x41, p521Uint1(x38), x23, x5)
3198	var x42 uint64
3199	p521CmovznzU64(&x42, p521Uint1(x38), x25, x7)
3200	var x43 uint64
3201	p521CmovznzU64(&x43, p521Uint1(x38), x27, x9)
3202	var x44 uint64
3203	p521CmovznzU64(&x44, p521Uint1(x38), x29, x11)
3204	var x45 uint64
3205	p521CmovznzU64(&x45, p521Uint1(x38), x31, x13)
3206	var x46 uint64
3207	p521CmovznzU64(&x46, p521Uint1(x38), x33, x15)
3208	var x47 uint64
3209	p521CmovznzU64(&x47, p521Uint1(x38), x35, x17)
3210	out1[0] = x39
3211	out1[1] = x40
3212	out1[2] = x41
3213	out1[3] = x42
3214	out1[4] = x43
3215	out1[5] = x44
3216	out1[6] = x45
3217	out1[7] = x46
3218	out1[8] = x47
3219}
3220
3221// p521Sub subtracts two field elements in the Montgomery domain.
3222//
3223// Preconditions:
3224//
3225//	0 ≤ eval arg1 < m
3226//	0 ≤ eval arg2 < m
3227//
3228// Postconditions:
3229//
3230//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m
3231//	0 ≤ eval out1 < m
3232func p521Sub(out1 *p521MontgomeryDomainFieldElement, arg1 *p521MontgomeryDomainFieldElement, arg2 *p521MontgomeryDomainFieldElement) {
3233	var x1 uint64
3234	var x2 uint64
3235	x1, x2 = bits.Sub64(arg1[0], arg2[0], uint64(0x0))
3236	var x3 uint64
3237	var x4 uint64
3238	x3, x4 = bits.Sub64(arg1[1], arg2[1], uint64(p521Uint1(x2)))
3239	var x5 uint64
3240	var x6 uint64
3241	x5, x6 = bits.Sub64(arg1[2], arg2[2], uint64(p521Uint1(x4)))
3242	var x7 uint64
3243	var x8 uint64
3244	x7, x8 = bits.Sub64(arg1[3], arg2[3], uint64(p521Uint1(x6)))
3245	var x9 uint64
3246	var x10 uint64
3247	x9, x10 = bits.Sub64(arg1[4], arg2[4], uint64(p521Uint1(x8)))
3248	var x11 uint64
3249	var x12 uint64
3250	x11, x12 = bits.Sub64(arg1[5], arg2[5], uint64(p521Uint1(x10)))
3251	var x13 uint64
3252	var x14 uint64
3253	x13, x14 = bits.Sub64(arg1[6], arg2[6], uint64(p521Uint1(x12)))
3254	var x15 uint64
3255	var x16 uint64
3256	x15, x16 = bits.Sub64(arg1[7], arg2[7], uint64(p521Uint1(x14)))
3257	var x17 uint64
3258	var x18 uint64
3259	x17, x18 = bits.Sub64(arg1[8], arg2[8], uint64(p521Uint1(x16)))
3260	var x19 uint64
3261	p521CmovznzU64(&x19, p521Uint1(x18), uint64(0x0), 0xffffffffffffffff)
3262	var x20 uint64
3263	var x21 uint64
3264	x20, x21 = bits.Add64(x1, x19, uint64(0x0))
3265	var x22 uint64
3266	var x23 uint64
3267	x22, x23 = bits.Add64(x3, x19, uint64(p521Uint1(x21)))
3268	var x24 uint64
3269	var x25 uint64
3270	x24, x25 = bits.Add64(x5, x19, uint64(p521Uint1(x23)))
3271	var x26 uint64
3272	var x27 uint64
3273	x26, x27 = bits.Add64(x7, x19, uint64(p521Uint1(x25)))
3274	var x28 uint64
3275	var x29 uint64
3276	x28, x29 = bits.Add64(x9, x19, uint64(p521Uint1(x27)))
3277	var x30 uint64
3278	var x31 uint64
3279	x30, x31 = bits.Add64(x11, x19, uint64(p521Uint1(x29)))
3280	var x32 uint64
3281	var x33 uint64
3282	x32, x33 = bits.Add64(x13, x19, uint64(p521Uint1(x31)))
3283	var x34 uint64
3284	var x35 uint64
3285	x34, x35 = bits.Add64(x15, x19, uint64(p521Uint1(x33)))
3286	var x36 uint64
3287	x36, _ = bits.Add64(x17, (x19 & 0x1ff), uint64(p521Uint1(x35)))
3288	out1[0] = x20
3289	out1[1] = x22
3290	out1[2] = x24
3291	out1[3] = x26
3292	out1[4] = x28
3293	out1[5] = x30
3294	out1[6] = x32
3295	out1[7] = x34
3296	out1[8] = x36
3297}
3298
3299// p521SetOne returns the field element one in the Montgomery domain.
3300//
3301// Postconditions:
3302//
3303//	eval (from_montgomery out1) mod m = 1 mod m
3304//	0 ≤ eval out1 < m
3305func p521SetOne(out1 *p521MontgomeryDomainFieldElement) {
3306	out1[0] = 0x80000000000000
3307	out1[1] = uint64(0x0)
3308	out1[2] = uint64(0x0)
3309	out1[3] = uint64(0x0)
3310	out1[4] = uint64(0x0)
3311	out1[5] = uint64(0x0)
3312	out1[6] = uint64(0x0)
3313	out1[7] = uint64(0x0)
3314	out1[8] = uint64(0x0)
3315}
3316
3317// p521FromMontgomery translates a field element out of the Montgomery domain.
3318//
3319// Preconditions:
3320//
3321//	0 ≤ eval arg1 < m
3322//
3323// Postconditions:
3324//
3325//	eval out1 mod m = (eval arg1 * ((2^64)⁻¹ mod m)^9) mod m
3326//	0 ≤ eval out1 < m
3327func p521FromMontgomery(out1 *p521NonMontgomeryDomainFieldElement, arg1 *p521MontgomeryDomainFieldElement) {
3328	x1 := arg1[0]
3329	var x2 uint64
3330	var x3 uint64
3331	x3, x2 = bits.Mul64(x1, 0x1ff)
3332	var x4 uint64
3333	var x5 uint64
3334	x5, x4 = bits.Mul64(x1, 0xffffffffffffffff)
3335	var x6 uint64
3336	var x7 uint64
3337	x7, x6 = bits.Mul64(x1, 0xffffffffffffffff)
3338	var x8 uint64
3339	var x9 uint64
3340	x9, x8 = bits.Mul64(x1, 0xffffffffffffffff)
3341	var x10 uint64
3342	var x11 uint64
3343	x11, x10 = bits.Mul64(x1, 0xffffffffffffffff)
3344	var x12 uint64
3345	var x13 uint64
3346	x13, x12 = bits.Mul64(x1, 0xffffffffffffffff)
3347	var x14 uint64
3348	var x15 uint64
3349	x15, x14 = bits.Mul64(x1, 0xffffffffffffffff)
3350	var x16 uint64
3351	var x17 uint64
3352	x17, x16 = bits.Mul64(x1, 0xffffffffffffffff)
3353	var x18 uint64
3354	var x19 uint64
3355	x19, x18 = bits.Mul64(x1, 0xffffffffffffffff)
3356	var x20 uint64
3357	var x21 uint64
3358	x20, x21 = bits.Add64(x19, x16, uint64(0x0))
3359	var x22 uint64
3360	var x23 uint64
3361	x22, x23 = bits.Add64(x17, x14, uint64(p521Uint1(x21)))
3362	var x24 uint64
3363	var x25 uint64
3364	x24, x25 = bits.Add64(x15, x12, uint64(p521Uint1(x23)))
3365	var x26 uint64
3366	var x27 uint64
3367	x26, x27 = bits.Add64(x13, x10, uint64(p521Uint1(x25)))
3368	var x28 uint64
3369	var x29 uint64
3370	x28, x29 = bits.Add64(x11, x8, uint64(p521Uint1(x27)))
3371	var x30 uint64
3372	var x31 uint64
3373	x30, x31 = bits.Add64(x9, x6, uint64(p521Uint1(x29)))
3374	var x32 uint64
3375	var x33 uint64
3376	x32, x33 = bits.Add64(x7, x4, uint64(p521Uint1(x31)))
3377	var x34 uint64
3378	var x35 uint64
3379	x34, x35 = bits.Add64(x5, x2, uint64(p521Uint1(x33)))
3380	var x37 uint64
3381	_, x37 = bits.Add64(x1, x18, uint64(0x0))
3382	var x38 uint64
3383	var x39 uint64
3384	x38, x39 = bits.Add64(uint64(0x0), x20, uint64(p521Uint1(x37)))
3385	var x40 uint64
3386	var x41 uint64
3387	x40, x41 = bits.Add64(uint64(0x0), x22, uint64(p521Uint1(x39)))
3388	var x42 uint64
3389	var x43 uint64
3390	x42, x43 = bits.Add64(uint64(0x0), x24, uint64(p521Uint1(x41)))
3391	var x44 uint64
3392	var x45 uint64
3393	x44, x45 = bits.Add64(uint64(0x0), x26, uint64(p521Uint1(x43)))
3394	var x46 uint64
3395	var x47 uint64
3396	x46, x47 = bits.Add64(uint64(0x0), x28, uint64(p521Uint1(x45)))
3397	var x48 uint64
3398	var x49 uint64
3399	x48, x49 = bits.Add64(uint64(0x0), x30, uint64(p521Uint1(x47)))
3400	var x50 uint64
3401	var x51 uint64
3402	x50, x51 = bits.Add64(uint64(0x0), x32, uint64(p521Uint1(x49)))
3403	var x52 uint64
3404	var x53 uint64
3405	x52, x53 = bits.Add64(uint64(0x0), x34, uint64(p521Uint1(x51)))
3406	var x54 uint64
3407	var x55 uint64
3408	x54, x55 = bits.Add64(x38, arg1[1], uint64(0x0))
3409	var x56 uint64
3410	var x57 uint64
3411	x56, x57 = bits.Add64(x40, uint64(0x0), uint64(p521Uint1(x55)))
3412	var x58 uint64
3413	var x59 uint64
3414	x58, x59 = bits.Add64(x42, uint64(0x0), uint64(p521Uint1(x57)))
3415	var x60 uint64
3416	var x61 uint64
3417	x60, x61 = bits.Add64(x44, uint64(0x0), uint64(p521Uint1(x59)))
3418	var x62 uint64
3419	var x63 uint64
3420	x62, x63 = bits.Add64(x46, uint64(0x0), uint64(p521Uint1(x61)))
3421	var x64 uint64
3422	var x65 uint64
3423	x64, x65 = bits.Add64(x48, uint64(0x0), uint64(p521Uint1(x63)))
3424	var x66 uint64
3425	var x67 uint64
3426	x66, x67 = bits.Add64(x50, uint64(0x0), uint64(p521Uint1(x65)))
3427	var x68 uint64
3428	var x69 uint64
3429	x68, x69 = bits.Add64(x52, uint64(0x0), uint64(p521Uint1(x67)))
3430	var x70 uint64
3431	var x71 uint64
3432	x71, x70 = bits.Mul64(x54, 0x1ff)
3433	var x72 uint64
3434	var x73 uint64
3435	x73, x72 = bits.Mul64(x54, 0xffffffffffffffff)
3436	var x74 uint64
3437	var x75 uint64
3438	x75, x74 = bits.Mul64(x54, 0xffffffffffffffff)
3439	var x76 uint64
3440	var x77 uint64
3441	x77, x76 = bits.Mul64(x54, 0xffffffffffffffff)
3442	var x78 uint64
3443	var x79 uint64
3444	x79, x78 = bits.Mul64(x54, 0xffffffffffffffff)
3445	var x80 uint64
3446	var x81 uint64
3447	x81, x80 = bits.Mul64(x54, 0xffffffffffffffff)
3448	var x82 uint64
3449	var x83 uint64
3450	x83, x82 = bits.Mul64(x54, 0xffffffffffffffff)
3451	var x84 uint64
3452	var x85 uint64
3453	x85, x84 = bits.Mul64(x54, 0xffffffffffffffff)
3454	var x86 uint64
3455	var x87 uint64
3456	x87, x86 = bits.Mul64(x54, 0xffffffffffffffff)
3457	var x88 uint64
3458	var x89 uint64
3459	x88, x89 = bits.Add64(x87, x84, uint64(0x0))
3460	var x90 uint64
3461	var x91 uint64
3462	x90, x91 = bits.Add64(x85, x82, uint64(p521Uint1(x89)))
3463	var x92 uint64
3464	var x93 uint64
3465	x92, x93 = bits.Add64(x83, x80, uint64(p521Uint1(x91)))
3466	var x94 uint64
3467	var x95 uint64
3468	x94, x95 = bits.Add64(x81, x78, uint64(p521Uint1(x93)))
3469	var x96 uint64
3470	var x97 uint64
3471	x96, x97 = bits.Add64(x79, x76, uint64(p521Uint1(x95)))
3472	var x98 uint64
3473	var x99 uint64
3474	x98, x99 = bits.Add64(x77, x74, uint64(p521Uint1(x97)))
3475	var x100 uint64
3476	var x101 uint64
3477	x100, x101 = bits.Add64(x75, x72, uint64(p521Uint1(x99)))
3478	var x102 uint64
3479	var x103 uint64
3480	x102, x103 = bits.Add64(x73, x70, uint64(p521Uint1(x101)))
3481	var x105 uint64
3482	_, x105 = bits.Add64(x54, x86, uint64(0x0))
3483	var x106 uint64
3484	var x107 uint64
3485	x106, x107 = bits.Add64(x56, x88, uint64(p521Uint1(x105)))
3486	var x108 uint64
3487	var x109 uint64
3488	x108, x109 = bits.Add64(x58, x90, uint64(p521Uint1(x107)))
3489	var x110 uint64
3490	var x111 uint64
3491	x110, x111 = bits.Add64(x60, x92, uint64(p521Uint1(x109)))
3492	var x112 uint64
3493	var x113 uint64
3494	x112, x113 = bits.Add64(x62, x94, uint64(p521Uint1(x111)))
3495	var x114 uint64
3496	var x115 uint64
3497	x114, x115 = bits.Add64(x64, x96, uint64(p521Uint1(x113)))
3498	var x116 uint64
3499	var x117 uint64
3500	x116, x117 = bits.Add64(x66, x98, uint64(p521Uint1(x115)))
3501	var x118 uint64
3502	var x119 uint64
3503	x118, x119 = bits.Add64(x68, x100, uint64(p521Uint1(x117)))
3504	var x120 uint64
3505	var x121 uint64
3506	x120, x121 = bits.Add64((uint64(p521Uint1(x69)) + (uint64(p521Uint1(x53)) + (uint64(p521Uint1(x35)) + x3))), x102, uint64(p521Uint1(x119)))
3507	var x122 uint64
3508	var x123 uint64
3509	x122, x123 = bits.Add64(x106, arg1[2], uint64(0x0))
3510	var x124 uint64
3511	var x125 uint64
3512	x124, x125 = bits.Add64(x108, uint64(0x0), uint64(p521Uint1(x123)))
3513	var x126 uint64
3514	var x127 uint64
3515	x126, x127 = bits.Add64(x110, uint64(0x0), uint64(p521Uint1(x125)))
3516	var x128 uint64
3517	var x129 uint64
3518	x128, x129 = bits.Add64(x112, uint64(0x0), uint64(p521Uint1(x127)))
3519	var x130 uint64
3520	var x131 uint64
3521	x130, x131 = bits.Add64(x114, uint64(0x0), uint64(p521Uint1(x129)))
3522	var x132 uint64
3523	var x133 uint64
3524	x132, x133 = bits.Add64(x116, uint64(0x0), uint64(p521Uint1(x131)))
3525	var x134 uint64
3526	var x135 uint64
3527	x134, x135 = bits.Add64(x118, uint64(0x0), uint64(p521Uint1(x133)))
3528	var x136 uint64
3529	var x137 uint64
3530	x136, x137 = bits.Add64(x120, uint64(0x0), uint64(p521Uint1(x135)))
3531	var x138 uint64
3532	var x139 uint64
3533	x139, x138 = bits.Mul64(x122, 0x1ff)
3534	var x140 uint64
3535	var x141 uint64
3536	x141, x140 = bits.Mul64(x122, 0xffffffffffffffff)
3537	var x142 uint64
3538	var x143 uint64
3539	x143, x142 = bits.Mul64(x122, 0xffffffffffffffff)
3540	var x144 uint64
3541	var x145 uint64
3542	x145, x144 = bits.Mul64(x122, 0xffffffffffffffff)
3543	var x146 uint64
3544	var x147 uint64
3545	x147, x146 = bits.Mul64(x122, 0xffffffffffffffff)
3546	var x148 uint64
3547	var x149 uint64
3548	x149, x148 = bits.Mul64(x122, 0xffffffffffffffff)
3549	var x150 uint64
3550	var x151 uint64
3551	x151, x150 = bits.Mul64(x122, 0xffffffffffffffff)
3552	var x152 uint64
3553	var x153 uint64
3554	x153, x152 = bits.Mul64(x122, 0xffffffffffffffff)
3555	var x154 uint64
3556	var x155 uint64
3557	x155, x154 = bits.Mul64(x122, 0xffffffffffffffff)
3558	var x156 uint64
3559	var x157 uint64
3560	x156, x157 = bits.Add64(x155, x152, uint64(0x0))
3561	var x158 uint64
3562	var x159 uint64
3563	x158, x159 = bits.Add64(x153, x150, uint64(p521Uint1(x157)))
3564	var x160 uint64
3565	var x161 uint64
3566	x160, x161 = bits.Add64(x151, x148, uint64(p521Uint1(x159)))
3567	var x162 uint64
3568	var x163 uint64
3569	x162, x163 = bits.Add64(x149, x146, uint64(p521Uint1(x161)))
3570	var x164 uint64
3571	var x165 uint64
3572	x164, x165 = bits.Add64(x147, x144, uint64(p521Uint1(x163)))
3573	var x166 uint64
3574	var x167 uint64
3575	x166, x167 = bits.Add64(x145, x142, uint64(p521Uint1(x165)))
3576	var x168 uint64
3577	var x169 uint64
3578	x168, x169 = bits.Add64(x143, x140, uint64(p521Uint1(x167)))
3579	var x170 uint64
3580	var x171 uint64
3581	x170, x171 = bits.Add64(x141, x138, uint64(p521Uint1(x169)))
3582	var x173 uint64
3583	_, x173 = bits.Add64(x122, x154, uint64(0x0))
3584	var x174 uint64
3585	var x175 uint64
3586	x174, x175 = bits.Add64(x124, x156, uint64(p521Uint1(x173)))
3587	var x176 uint64
3588	var x177 uint64
3589	x176, x177 = bits.Add64(x126, x158, uint64(p521Uint1(x175)))
3590	var x178 uint64
3591	var x179 uint64
3592	x178, x179 = bits.Add64(x128, x160, uint64(p521Uint1(x177)))
3593	var x180 uint64
3594	var x181 uint64
3595	x180, x181 = bits.Add64(x130, x162, uint64(p521Uint1(x179)))
3596	var x182 uint64
3597	var x183 uint64
3598	x182, x183 = bits.Add64(x132, x164, uint64(p521Uint1(x181)))
3599	var x184 uint64
3600	var x185 uint64
3601	x184, x185 = bits.Add64(x134, x166, uint64(p521Uint1(x183)))
3602	var x186 uint64
3603	var x187 uint64
3604	x186, x187 = bits.Add64(x136, x168, uint64(p521Uint1(x185)))
3605	var x188 uint64
3606	var x189 uint64
3607	x188, x189 = bits.Add64((uint64(p521Uint1(x137)) + (uint64(p521Uint1(x121)) + (uint64(p521Uint1(x103)) + x71))), x170, uint64(p521Uint1(x187)))
3608	var x190 uint64
3609	var x191 uint64
3610	x190, x191 = bits.Add64(x174, arg1[3], uint64(0x0))
3611	var x192 uint64
3612	var x193 uint64
3613	x192, x193 = bits.Add64(x176, uint64(0x0), uint64(p521Uint1(x191)))
3614	var x194 uint64
3615	var x195 uint64
3616	x194, x195 = bits.Add64(x178, uint64(0x0), uint64(p521Uint1(x193)))
3617	var x196 uint64
3618	var x197 uint64
3619	x196, x197 = bits.Add64(x180, uint64(0x0), uint64(p521Uint1(x195)))
3620	var x198 uint64
3621	var x199 uint64
3622	x198, x199 = bits.Add64(x182, uint64(0x0), uint64(p521Uint1(x197)))
3623	var x200 uint64
3624	var x201 uint64
3625	x200, x201 = bits.Add64(x184, uint64(0x0), uint64(p521Uint1(x199)))
3626	var x202 uint64
3627	var x203 uint64
3628	x202, x203 = bits.Add64(x186, uint64(0x0), uint64(p521Uint1(x201)))
3629	var x204 uint64
3630	var x205 uint64
3631	x204, x205 = bits.Add64(x188, uint64(0x0), uint64(p521Uint1(x203)))
3632	var x206 uint64
3633	var x207 uint64
3634	x207, x206 = bits.Mul64(x190, 0x1ff)
3635	var x208 uint64
3636	var x209 uint64
3637	x209, x208 = bits.Mul64(x190, 0xffffffffffffffff)
3638	var x210 uint64
3639	var x211 uint64
3640	x211, x210 = bits.Mul64(x190, 0xffffffffffffffff)
3641	var x212 uint64
3642	var x213 uint64
3643	x213, x212 = bits.Mul64(x190, 0xffffffffffffffff)
3644	var x214 uint64
3645	var x215 uint64
3646	x215, x214 = bits.Mul64(x190, 0xffffffffffffffff)
3647	var x216 uint64
3648	var x217 uint64
3649	x217, x216 = bits.Mul64(x190, 0xffffffffffffffff)
3650	var x218 uint64
3651	var x219 uint64
3652	x219, x218 = bits.Mul64(x190, 0xffffffffffffffff)
3653	var x220 uint64
3654	var x221 uint64
3655	x221, x220 = bits.Mul64(x190, 0xffffffffffffffff)
3656	var x222 uint64
3657	var x223 uint64
3658	x223, x222 = bits.Mul64(x190, 0xffffffffffffffff)
3659	var x224 uint64
3660	var x225 uint64
3661	x224, x225 = bits.Add64(x223, x220, uint64(0x0))
3662	var x226 uint64
3663	var x227 uint64
3664	x226, x227 = bits.Add64(x221, x218, uint64(p521Uint1(x225)))
3665	var x228 uint64
3666	var x229 uint64
3667	x228, x229 = bits.Add64(x219, x216, uint64(p521Uint1(x227)))
3668	var x230 uint64
3669	var x231 uint64
3670	x230, x231 = bits.Add64(x217, x214, uint64(p521Uint1(x229)))
3671	var x232 uint64
3672	var x233 uint64
3673	x232, x233 = bits.Add64(x215, x212, uint64(p521Uint1(x231)))
3674	var x234 uint64
3675	var x235 uint64
3676	x234, x235 = bits.Add64(x213, x210, uint64(p521Uint1(x233)))
3677	var x236 uint64
3678	var x237 uint64
3679	x236, x237 = bits.Add64(x211, x208, uint64(p521Uint1(x235)))
3680	var x238 uint64
3681	var x239 uint64
3682	x238, x239 = bits.Add64(x209, x206, uint64(p521Uint1(x237)))
3683	var x241 uint64
3684	_, x241 = bits.Add64(x190, x222, uint64(0x0))
3685	var x242 uint64
3686	var x243 uint64
3687	x242, x243 = bits.Add64(x192, x224, uint64(p521Uint1(x241)))
3688	var x244 uint64
3689	var x245 uint64
3690	x244, x245 = bits.Add64(x194, x226, uint64(p521Uint1(x243)))
3691	var x246 uint64
3692	var x247 uint64
3693	x246, x247 = bits.Add64(x196, x228, uint64(p521Uint1(x245)))
3694	var x248 uint64
3695	var x249 uint64
3696	x248, x249 = bits.Add64(x198, x230, uint64(p521Uint1(x247)))
3697	var x250 uint64
3698	var x251 uint64
3699	x250, x251 = bits.Add64(x200, x232, uint64(p521Uint1(x249)))
3700	var x252 uint64
3701	var x253 uint64
3702	x252, x253 = bits.Add64(x202, x234, uint64(p521Uint1(x251)))
3703	var x254 uint64
3704	var x255 uint64
3705	x254, x255 = bits.Add64(x204, x236, uint64(p521Uint1(x253)))
3706	var x256 uint64
3707	var x257 uint64
3708	x256, x257 = bits.Add64((uint64(p521Uint1(x205)) + (uint64(p521Uint1(x189)) + (uint64(p521Uint1(x171)) + x139))), x238, uint64(p521Uint1(x255)))
3709	var x258 uint64
3710	var x259 uint64
3711	x258, x259 = bits.Add64(x242, arg1[4], uint64(0x0))
3712	var x260 uint64
3713	var x261 uint64
3714	x260, x261 = bits.Add64(x244, uint64(0x0), uint64(p521Uint1(x259)))
3715	var x262 uint64
3716	var x263 uint64
3717	x262, x263 = bits.Add64(x246, uint64(0x0), uint64(p521Uint1(x261)))
3718	var x264 uint64
3719	var x265 uint64
3720	x264, x265 = bits.Add64(x248, uint64(0x0), uint64(p521Uint1(x263)))
3721	var x266 uint64
3722	var x267 uint64
3723	x266, x267 = bits.Add64(x250, uint64(0x0), uint64(p521Uint1(x265)))
3724	var x268 uint64
3725	var x269 uint64
3726	x268, x269 = bits.Add64(x252, uint64(0x0), uint64(p521Uint1(x267)))
3727	var x270 uint64
3728	var x271 uint64
3729	x270, x271 = bits.Add64(x254, uint64(0x0), uint64(p521Uint1(x269)))
3730	var x272 uint64
3731	var x273 uint64
3732	x272, x273 = bits.Add64(x256, uint64(0x0), uint64(p521Uint1(x271)))
3733	var x274 uint64
3734	var x275 uint64
3735	x275, x274 = bits.Mul64(x258, 0x1ff)
3736	var x276 uint64
3737	var x277 uint64
3738	x277, x276 = bits.Mul64(x258, 0xffffffffffffffff)
3739	var x278 uint64
3740	var x279 uint64
3741	x279, x278 = bits.Mul64(x258, 0xffffffffffffffff)
3742	var x280 uint64
3743	var x281 uint64
3744	x281, x280 = bits.Mul64(x258, 0xffffffffffffffff)
3745	var x282 uint64
3746	var x283 uint64
3747	x283, x282 = bits.Mul64(x258, 0xffffffffffffffff)
3748	var x284 uint64
3749	var x285 uint64
3750	x285, x284 = bits.Mul64(x258, 0xffffffffffffffff)
3751	var x286 uint64
3752	var x287 uint64
3753	x287, x286 = bits.Mul64(x258, 0xffffffffffffffff)
3754	var x288 uint64
3755	var x289 uint64
3756	x289, x288 = bits.Mul64(x258, 0xffffffffffffffff)
3757	var x290 uint64
3758	var x291 uint64
3759	x291, x290 = bits.Mul64(x258, 0xffffffffffffffff)
3760	var x292 uint64
3761	var x293 uint64
3762	x292, x293 = bits.Add64(x291, x288, uint64(0x0))
3763	var x294 uint64
3764	var x295 uint64
3765	x294, x295 = bits.Add64(x289, x286, uint64(p521Uint1(x293)))
3766	var x296 uint64
3767	var x297 uint64
3768	x296, x297 = bits.Add64(x287, x284, uint64(p521Uint1(x295)))
3769	var x298 uint64
3770	var x299 uint64
3771	x298, x299 = bits.Add64(x285, x282, uint64(p521Uint1(x297)))
3772	var x300 uint64
3773	var x301 uint64
3774	x300, x301 = bits.Add64(x283, x280, uint64(p521Uint1(x299)))
3775	var x302 uint64
3776	var x303 uint64
3777	x302, x303 = bits.Add64(x281, x278, uint64(p521Uint1(x301)))
3778	var x304 uint64
3779	var x305 uint64
3780	x304, x305 = bits.Add64(x279, x276, uint64(p521Uint1(x303)))
3781	var x306 uint64
3782	var x307 uint64
3783	x306, x307 = bits.Add64(x277, x274, uint64(p521Uint1(x305)))
3784	var x309 uint64
3785	_, x309 = bits.Add64(x258, x290, uint64(0x0))
3786	var x310 uint64
3787	var x311 uint64
3788	x310, x311 = bits.Add64(x260, x292, uint64(p521Uint1(x309)))
3789	var x312 uint64
3790	var x313 uint64
3791	x312, x313 = bits.Add64(x262, x294, uint64(p521Uint1(x311)))
3792	var x314 uint64
3793	var x315 uint64
3794	x314, x315 = bits.Add64(x264, x296, uint64(p521Uint1(x313)))
3795	var x316 uint64
3796	var x317 uint64
3797	x316, x317 = bits.Add64(x266, x298, uint64(p521Uint1(x315)))
3798	var x318 uint64
3799	var x319 uint64
3800	x318, x319 = bits.Add64(x268, x300, uint64(p521Uint1(x317)))
3801	var x320 uint64
3802	var x321 uint64
3803	x320, x321 = bits.Add64(x270, x302, uint64(p521Uint1(x319)))
3804	var x322 uint64
3805	var x323 uint64
3806	x322, x323 = bits.Add64(x272, x304, uint64(p521Uint1(x321)))
3807	var x324 uint64
3808	var x325 uint64
3809	x324, x325 = bits.Add64((uint64(p521Uint1(x273)) + (uint64(p521Uint1(x257)) + (uint64(p521Uint1(x239)) + x207))), x306, uint64(p521Uint1(x323)))
3810	var x326 uint64
3811	var x327 uint64
3812	x326, x327 = bits.Add64(x310, arg1[5], uint64(0x0))
3813	var x328 uint64
3814	var x329 uint64
3815	x328, x329 = bits.Add64(x312, uint64(0x0), uint64(p521Uint1(x327)))
3816	var x330 uint64
3817	var x331 uint64
3818	x330, x331 = bits.Add64(x314, uint64(0x0), uint64(p521Uint1(x329)))
3819	var x332 uint64
3820	var x333 uint64
3821	x332, x333 = bits.Add64(x316, uint64(0x0), uint64(p521Uint1(x331)))
3822	var x334 uint64
3823	var x335 uint64
3824	x334, x335 = bits.Add64(x318, uint64(0x0), uint64(p521Uint1(x333)))
3825	var x336 uint64
3826	var x337 uint64
3827	x336, x337 = bits.Add64(x320, uint64(0x0), uint64(p521Uint1(x335)))
3828	var x338 uint64
3829	var x339 uint64
3830	x338, x339 = bits.Add64(x322, uint64(0x0), uint64(p521Uint1(x337)))
3831	var x340 uint64
3832	var x341 uint64
3833	x340, x341 = bits.Add64(x324, uint64(0x0), uint64(p521Uint1(x339)))
3834	var x342 uint64
3835	var x343 uint64
3836	x343, x342 = bits.Mul64(x326, 0x1ff)
3837	var x344 uint64
3838	var x345 uint64
3839	x345, x344 = bits.Mul64(x326, 0xffffffffffffffff)
3840	var x346 uint64
3841	var x347 uint64
3842	x347, x346 = bits.Mul64(x326, 0xffffffffffffffff)
3843	var x348 uint64
3844	var x349 uint64
3845	x349, x348 = bits.Mul64(x326, 0xffffffffffffffff)
3846	var x350 uint64
3847	var x351 uint64
3848	x351, x350 = bits.Mul64(x326, 0xffffffffffffffff)
3849	var x352 uint64
3850	var x353 uint64
3851	x353, x352 = bits.Mul64(x326, 0xffffffffffffffff)
3852	var x354 uint64
3853	var x355 uint64
3854	x355, x354 = bits.Mul64(x326, 0xffffffffffffffff)
3855	var x356 uint64
3856	var x357 uint64
3857	x357, x356 = bits.Mul64(x326, 0xffffffffffffffff)
3858	var x358 uint64
3859	var x359 uint64
3860	x359, x358 = bits.Mul64(x326, 0xffffffffffffffff)
3861	var x360 uint64
3862	var x361 uint64
3863	x360, x361 = bits.Add64(x359, x356, uint64(0x0))
3864	var x362 uint64
3865	var x363 uint64
3866	x362, x363 = bits.Add64(x357, x354, uint64(p521Uint1(x361)))
3867	var x364 uint64
3868	var x365 uint64
3869	x364, x365 = bits.Add64(x355, x352, uint64(p521Uint1(x363)))
3870	var x366 uint64
3871	var x367 uint64
3872	x366, x367 = bits.Add64(x353, x350, uint64(p521Uint1(x365)))
3873	var x368 uint64
3874	var x369 uint64
3875	x368, x369 = bits.Add64(x351, x348, uint64(p521Uint1(x367)))
3876	var x370 uint64
3877	var x371 uint64
3878	x370, x371 = bits.Add64(x349, x346, uint64(p521Uint1(x369)))
3879	var x372 uint64
3880	var x373 uint64
3881	x372, x373 = bits.Add64(x347, x344, uint64(p521Uint1(x371)))
3882	var x374 uint64
3883	var x375 uint64
3884	x374, x375 = bits.Add64(x345, x342, uint64(p521Uint1(x373)))
3885	var x377 uint64
3886	_, x377 = bits.Add64(x326, x358, uint64(0x0))
3887	var x378 uint64
3888	var x379 uint64
3889	x378, x379 = bits.Add64(x328, x360, uint64(p521Uint1(x377)))
3890	var x380 uint64
3891	var x381 uint64
3892	x380, x381 = bits.Add64(x330, x362, uint64(p521Uint1(x379)))
3893	var x382 uint64
3894	var x383 uint64
3895	x382, x383 = bits.Add64(x332, x364, uint64(p521Uint1(x381)))
3896	var x384 uint64
3897	var x385 uint64
3898	x384, x385 = bits.Add64(x334, x366, uint64(p521Uint1(x383)))
3899	var x386 uint64
3900	var x387 uint64
3901	x386, x387 = bits.Add64(x336, x368, uint64(p521Uint1(x385)))
3902	var x388 uint64
3903	var x389 uint64
3904	x388, x389 = bits.Add64(x338, x370, uint64(p521Uint1(x387)))
3905	var x390 uint64
3906	var x391 uint64
3907	x390, x391 = bits.Add64(x340, x372, uint64(p521Uint1(x389)))
3908	var x392 uint64
3909	var x393 uint64
3910	x392, x393 = bits.Add64((uint64(p521Uint1(x341)) + (uint64(p521Uint1(x325)) + (uint64(p521Uint1(x307)) + x275))), x374, uint64(p521Uint1(x391)))
3911	var x394 uint64
3912	var x395 uint64
3913	x394, x395 = bits.Add64(x378, arg1[6], uint64(0x0))
3914	var x396 uint64
3915	var x397 uint64
3916	x396, x397 = bits.Add64(x380, uint64(0x0), uint64(p521Uint1(x395)))
3917	var x398 uint64
3918	var x399 uint64
3919	x398, x399 = bits.Add64(x382, uint64(0x0), uint64(p521Uint1(x397)))
3920	var x400 uint64
3921	var x401 uint64
3922	x400, x401 = bits.Add64(x384, uint64(0x0), uint64(p521Uint1(x399)))
3923	var x402 uint64
3924	var x403 uint64
3925	x402, x403 = bits.Add64(x386, uint64(0x0), uint64(p521Uint1(x401)))
3926	var x404 uint64
3927	var x405 uint64
3928	x404, x405 = bits.Add64(x388, uint64(0x0), uint64(p521Uint1(x403)))
3929	var x406 uint64
3930	var x407 uint64
3931	x406, x407 = bits.Add64(x390, uint64(0x0), uint64(p521Uint1(x405)))
3932	var x408 uint64
3933	var x409 uint64
3934	x408, x409 = bits.Add64(x392, uint64(0x0), uint64(p521Uint1(x407)))
3935	var x410 uint64
3936	var x411 uint64
3937	x411, x410 = bits.Mul64(x394, 0x1ff)
3938	var x412 uint64
3939	var x413 uint64
3940	x413, x412 = bits.Mul64(x394, 0xffffffffffffffff)
3941	var x414 uint64
3942	var x415 uint64
3943	x415, x414 = bits.Mul64(x394, 0xffffffffffffffff)
3944	var x416 uint64
3945	var x417 uint64
3946	x417, x416 = bits.Mul64(x394, 0xffffffffffffffff)
3947	var x418 uint64
3948	var x419 uint64
3949	x419, x418 = bits.Mul64(x394, 0xffffffffffffffff)
3950	var x420 uint64
3951	var x421 uint64
3952	x421, x420 = bits.Mul64(x394, 0xffffffffffffffff)
3953	var x422 uint64
3954	var x423 uint64
3955	x423, x422 = bits.Mul64(x394, 0xffffffffffffffff)
3956	var x424 uint64
3957	var x425 uint64
3958	x425, x424 = bits.Mul64(x394, 0xffffffffffffffff)
3959	var x426 uint64
3960	var x427 uint64
3961	x427, x426 = bits.Mul64(x394, 0xffffffffffffffff)
3962	var x428 uint64
3963	var x429 uint64
3964	x428, x429 = bits.Add64(x427, x424, uint64(0x0))
3965	var x430 uint64
3966	var x431 uint64
3967	x430, x431 = bits.Add64(x425, x422, uint64(p521Uint1(x429)))
3968	var x432 uint64
3969	var x433 uint64
3970	x432, x433 = bits.Add64(x423, x420, uint64(p521Uint1(x431)))
3971	var x434 uint64
3972	var x435 uint64
3973	x434, x435 = bits.Add64(x421, x418, uint64(p521Uint1(x433)))
3974	var x436 uint64
3975	var x437 uint64
3976	x436, x437 = bits.Add64(x419, x416, uint64(p521Uint1(x435)))
3977	var x438 uint64
3978	var x439 uint64
3979	x438, x439 = bits.Add64(x417, x414, uint64(p521Uint1(x437)))
3980	var x440 uint64
3981	var x441 uint64
3982	x440, x441 = bits.Add64(x415, x412, uint64(p521Uint1(x439)))
3983	var x442 uint64
3984	var x443 uint64
3985	x442, x443 = bits.Add64(x413, x410, uint64(p521Uint1(x441)))
3986	var x445 uint64
3987	_, x445 = bits.Add64(x394, x426, uint64(0x0))
3988	var x446 uint64
3989	var x447 uint64
3990	x446, x447 = bits.Add64(x396, x428, uint64(p521Uint1(x445)))
3991	var x448 uint64
3992	var x449 uint64
3993	x448, x449 = bits.Add64(x398, x430, uint64(p521Uint1(x447)))
3994	var x450 uint64
3995	var x451 uint64
3996	x450, x451 = bits.Add64(x400, x432, uint64(p521Uint1(x449)))
3997	var x452 uint64
3998	var x453 uint64
3999	x452, x453 = bits.Add64(x402, x434, uint64(p521Uint1(x451)))
4000	var x454 uint64
4001	var x455 uint64
4002	x454, x455 = bits.Add64(x404, x436, uint64(p521Uint1(x453)))
4003	var x456 uint64
4004	var x457 uint64
4005	x456, x457 = bits.Add64(x406, x438, uint64(p521Uint1(x455)))
4006	var x458 uint64
4007	var x459 uint64
4008	x458, x459 = bits.Add64(x408, x440, uint64(p521Uint1(x457)))
4009	var x460 uint64
4010	var x461 uint64
4011	x460, x461 = bits.Add64((uint64(p521Uint1(x409)) + (uint64(p521Uint1(x393)) + (uint64(p521Uint1(x375)) + x343))), x442, uint64(p521Uint1(x459)))
4012	var x462 uint64
4013	var x463 uint64
4014	x462, x463 = bits.Add64(x446, arg1[7], uint64(0x0))
4015	var x464 uint64
4016	var x465 uint64
4017	x464, x465 = bits.Add64(x448, uint64(0x0), uint64(p521Uint1(x463)))
4018	var x466 uint64
4019	var x467 uint64
4020	x466, x467 = bits.Add64(x450, uint64(0x0), uint64(p521Uint1(x465)))
4021	var x468 uint64
4022	var x469 uint64
4023	x468, x469 = bits.Add64(x452, uint64(0x0), uint64(p521Uint1(x467)))
4024	var x470 uint64
4025	var x471 uint64
4026	x470, x471 = bits.Add64(x454, uint64(0x0), uint64(p521Uint1(x469)))
4027	var x472 uint64
4028	var x473 uint64
4029	x472, x473 = bits.Add64(x456, uint64(0x0), uint64(p521Uint1(x471)))
4030	var x474 uint64
4031	var x475 uint64
4032	x474, x475 = bits.Add64(x458, uint64(0x0), uint64(p521Uint1(x473)))
4033	var x476 uint64
4034	var x477 uint64
4035	x476, x477 = bits.Add64(x460, uint64(0x0), uint64(p521Uint1(x475)))
4036	var x478 uint64
4037	var x479 uint64
4038	x479, x478 = bits.Mul64(x462, 0x1ff)
4039	var x480 uint64
4040	var x481 uint64
4041	x481, x480 = bits.Mul64(x462, 0xffffffffffffffff)
4042	var x482 uint64
4043	var x483 uint64
4044	x483, x482 = bits.Mul64(x462, 0xffffffffffffffff)
4045	var x484 uint64
4046	var x485 uint64
4047	x485, x484 = bits.Mul64(x462, 0xffffffffffffffff)
4048	var x486 uint64
4049	var x487 uint64
4050	x487, x486 = bits.Mul64(x462, 0xffffffffffffffff)
4051	var x488 uint64
4052	var x489 uint64
4053	x489, x488 = bits.Mul64(x462, 0xffffffffffffffff)
4054	var x490 uint64
4055	var x491 uint64
4056	x491, x490 = bits.Mul64(x462, 0xffffffffffffffff)
4057	var x492 uint64
4058	var x493 uint64
4059	x493, x492 = bits.Mul64(x462, 0xffffffffffffffff)
4060	var x494 uint64
4061	var x495 uint64
4062	x495, x494 = bits.Mul64(x462, 0xffffffffffffffff)
4063	var x496 uint64
4064	var x497 uint64
4065	x496, x497 = bits.Add64(x495, x492, uint64(0x0))
4066	var x498 uint64
4067	var x499 uint64
4068	x498, x499 = bits.Add64(x493, x490, uint64(p521Uint1(x497)))
4069	var x500 uint64
4070	var x501 uint64
4071	x500, x501 = bits.Add64(x491, x488, uint64(p521Uint1(x499)))
4072	var x502 uint64
4073	var x503 uint64
4074	x502, x503 = bits.Add64(x489, x486, uint64(p521Uint1(x501)))
4075	var x504 uint64
4076	var x505 uint64
4077	x504, x505 = bits.Add64(x487, x484, uint64(p521Uint1(x503)))
4078	var x506 uint64
4079	var x507 uint64
4080	x506, x507 = bits.Add64(x485, x482, uint64(p521Uint1(x505)))
4081	var x508 uint64
4082	var x509 uint64
4083	x508, x509 = bits.Add64(x483, x480, uint64(p521Uint1(x507)))
4084	var x510 uint64
4085	var x511 uint64
4086	x510, x511 = bits.Add64(x481, x478, uint64(p521Uint1(x509)))
4087	var x513 uint64
4088	_, x513 = bits.Add64(x462, x494, uint64(0x0))
4089	var x514 uint64
4090	var x515 uint64
4091	x514, x515 = bits.Add64(x464, x496, uint64(p521Uint1(x513)))
4092	var x516 uint64
4093	var x517 uint64
4094	x516, x517 = bits.Add64(x466, x498, uint64(p521Uint1(x515)))
4095	var x518 uint64
4096	var x519 uint64
4097	x518, x519 = bits.Add64(x468, x500, uint64(p521Uint1(x517)))
4098	var x520 uint64
4099	var x521 uint64
4100	x520, x521 = bits.Add64(x470, x502, uint64(p521Uint1(x519)))
4101	var x522 uint64
4102	var x523 uint64
4103	x522, x523 = bits.Add64(x472, x504, uint64(p521Uint1(x521)))
4104	var x524 uint64
4105	var x525 uint64
4106	x524, x525 = bits.Add64(x474, x506, uint64(p521Uint1(x523)))
4107	var x526 uint64
4108	var x527 uint64
4109	x526, x527 = bits.Add64(x476, x508, uint64(p521Uint1(x525)))
4110	var x528 uint64
4111	var x529 uint64
4112	x528, x529 = bits.Add64((uint64(p521Uint1(x477)) + (uint64(p521Uint1(x461)) + (uint64(p521Uint1(x443)) + x411))), x510, uint64(p521Uint1(x527)))
4113	var x530 uint64
4114	var x531 uint64
4115	x530, x531 = bits.Add64(x514, arg1[8], uint64(0x0))
4116	var x532 uint64
4117	var x533 uint64
4118	x532, x533 = bits.Add64(x516, uint64(0x0), uint64(p521Uint1(x531)))
4119	var x534 uint64
4120	var x535 uint64
4121	x534, x535 = bits.Add64(x518, uint64(0x0), uint64(p521Uint1(x533)))
4122	var x536 uint64
4123	var x537 uint64
4124	x536, x537 = bits.Add64(x520, uint64(0x0), uint64(p521Uint1(x535)))
4125	var x538 uint64
4126	var x539 uint64
4127	x538, x539 = bits.Add64(x522, uint64(0x0), uint64(p521Uint1(x537)))
4128	var x540 uint64
4129	var x541 uint64
4130	x540, x541 = bits.Add64(x524, uint64(0x0), uint64(p521Uint1(x539)))
4131	var x542 uint64
4132	var x543 uint64
4133	x542, x543 = bits.Add64(x526, uint64(0x0), uint64(p521Uint1(x541)))
4134	var x544 uint64
4135	var x545 uint64
4136	x544, x545 = bits.Add64(x528, uint64(0x0), uint64(p521Uint1(x543)))
4137	var x546 uint64
4138	var x547 uint64
4139	x547, x546 = bits.Mul64(x530, 0x1ff)
4140	var x548 uint64
4141	var x549 uint64
4142	x549, x548 = bits.Mul64(x530, 0xffffffffffffffff)
4143	var x550 uint64
4144	var x551 uint64
4145	x551, x550 = bits.Mul64(x530, 0xffffffffffffffff)
4146	var x552 uint64
4147	var x553 uint64
4148	x553, x552 = bits.Mul64(x530, 0xffffffffffffffff)
4149	var x554 uint64
4150	var x555 uint64
4151	x555, x554 = bits.Mul64(x530, 0xffffffffffffffff)
4152	var x556 uint64
4153	var x557 uint64
4154	x557, x556 = bits.Mul64(x530, 0xffffffffffffffff)
4155	var x558 uint64
4156	var x559 uint64
4157	x559, x558 = bits.Mul64(x530, 0xffffffffffffffff)
4158	var x560 uint64
4159	var x561 uint64
4160	x561, x560 = bits.Mul64(x530, 0xffffffffffffffff)
4161	var x562 uint64
4162	var x563 uint64
4163	x563, x562 = bits.Mul64(x530, 0xffffffffffffffff)
4164	var x564 uint64
4165	var x565 uint64
4166	x564, x565 = bits.Add64(x563, x560, uint64(0x0))
4167	var x566 uint64
4168	var x567 uint64
4169	x566, x567 = bits.Add64(x561, x558, uint64(p521Uint1(x565)))
4170	var x568 uint64
4171	var x569 uint64
4172	x568, x569 = bits.Add64(x559, x556, uint64(p521Uint1(x567)))
4173	var x570 uint64
4174	var x571 uint64
4175	x570, x571 = bits.Add64(x557, x554, uint64(p521Uint1(x569)))
4176	var x572 uint64
4177	var x573 uint64
4178	x572, x573 = bits.Add64(x555, x552, uint64(p521Uint1(x571)))
4179	var x574 uint64
4180	var x575 uint64
4181	x574, x575 = bits.Add64(x553, x550, uint64(p521Uint1(x573)))
4182	var x576 uint64
4183	var x577 uint64
4184	x576, x577 = bits.Add64(x551, x548, uint64(p521Uint1(x575)))
4185	var x578 uint64
4186	var x579 uint64
4187	x578, x579 = bits.Add64(x549, x546, uint64(p521Uint1(x577)))
4188	var x581 uint64
4189	_, x581 = bits.Add64(x530, x562, uint64(0x0))
4190	var x582 uint64
4191	var x583 uint64
4192	x582, x583 = bits.Add64(x532, x564, uint64(p521Uint1(x581)))
4193	var x584 uint64
4194	var x585 uint64
4195	x584, x585 = bits.Add64(x534, x566, uint64(p521Uint1(x583)))
4196	var x586 uint64
4197	var x587 uint64
4198	x586, x587 = bits.Add64(x536, x568, uint64(p521Uint1(x585)))
4199	var x588 uint64
4200	var x589 uint64
4201	x588, x589 = bits.Add64(x538, x570, uint64(p521Uint1(x587)))
4202	var x590 uint64
4203	var x591 uint64
4204	x590, x591 = bits.Add64(x540, x572, uint64(p521Uint1(x589)))
4205	var x592 uint64
4206	var x593 uint64
4207	x592, x593 = bits.Add64(x542, x574, uint64(p521Uint1(x591)))
4208	var x594 uint64
4209	var x595 uint64
4210	x594, x595 = bits.Add64(x544, x576, uint64(p521Uint1(x593)))
4211	var x596 uint64
4212	var x597 uint64
4213	x596, x597 = bits.Add64((uint64(p521Uint1(x545)) + (uint64(p521Uint1(x529)) + (uint64(p521Uint1(x511)) + x479))), x578, uint64(p521Uint1(x595)))
4214	x598 := (uint64(p521Uint1(x597)) + (uint64(p521Uint1(x579)) + x547))
4215	var x599 uint64
4216	var x600 uint64
4217	x599, x600 = bits.Sub64(x582, 0xffffffffffffffff, uint64(0x0))
4218	var x601 uint64
4219	var x602 uint64
4220	x601, x602 = bits.Sub64(x584, 0xffffffffffffffff, uint64(p521Uint1(x600)))
4221	var x603 uint64
4222	var x604 uint64
4223	x603, x604 = bits.Sub64(x586, 0xffffffffffffffff, uint64(p521Uint1(x602)))
4224	var x605 uint64
4225	var x606 uint64
4226	x605, x606 = bits.Sub64(x588, 0xffffffffffffffff, uint64(p521Uint1(x604)))
4227	var x607 uint64
4228	var x608 uint64
4229	x607, x608 = bits.Sub64(x590, 0xffffffffffffffff, uint64(p521Uint1(x606)))
4230	var x609 uint64
4231	var x610 uint64
4232	x609, x610 = bits.Sub64(x592, 0xffffffffffffffff, uint64(p521Uint1(x608)))
4233	var x611 uint64
4234	var x612 uint64
4235	x611, x612 = bits.Sub64(x594, 0xffffffffffffffff, uint64(p521Uint1(x610)))
4236	var x613 uint64
4237	var x614 uint64
4238	x613, x614 = bits.Sub64(x596, 0xffffffffffffffff, uint64(p521Uint1(x612)))
4239	var x615 uint64
4240	var x616 uint64
4241	x615, x616 = bits.Sub64(x598, 0x1ff, uint64(p521Uint1(x614)))
4242	var x618 uint64
4243	_, x618 = bits.Sub64(uint64(0x0), uint64(0x0), uint64(p521Uint1(x616)))
4244	var x619 uint64
4245	p521CmovznzU64(&x619, p521Uint1(x618), x599, x582)
4246	var x620 uint64
4247	p521CmovznzU64(&x620, p521Uint1(x618), x601, x584)
4248	var x621 uint64
4249	p521CmovznzU64(&x621, p521Uint1(x618), x603, x586)
4250	var x622 uint64
4251	p521CmovznzU64(&x622, p521Uint1(x618), x605, x588)
4252	var x623 uint64
4253	p521CmovznzU64(&x623, p521Uint1(x618), x607, x590)
4254	var x624 uint64
4255	p521CmovznzU64(&x624, p521Uint1(x618), x609, x592)
4256	var x625 uint64
4257	p521CmovznzU64(&x625, p521Uint1(x618), x611, x594)
4258	var x626 uint64
4259	p521CmovznzU64(&x626, p521Uint1(x618), x613, x596)
4260	var x627 uint64
4261	p521CmovznzU64(&x627, p521Uint1(x618), x615, x598)
4262	out1[0] = x619
4263	out1[1] = x620
4264	out1[2] = x621
4265	out1[3] = x622
4266	out1[4] = x623
4267	out1[5] = x624
4268	out1[6] = x625
4269	out1[7] = x626
4270	out1[8] = x627
4271}
4272
4273// p521ToMontgomery translates a field element into the Montgomery domain.
4274//
4275// Preconditions:
4276//
4277//	0 ≤ eval arg1 < m
4278//
4279// Postconditions:
4280//
4281//	eval (from_montgomery out1) mod m = eval arg1 mod m
4282//	0 ≤ eval out1 < m
4283func p521ToMontgomery(out1 *p521MontgomeryDomainFieldElement, arg1 *p521NonMontgomeryDomainFieldElement) {
4284	var x1 uint64
4285	var x2 uint64
4286	x2, x1 = bits.Mul64(arg1[0], 0x400000000000)
4287	var x3 uint64
4288	var x4 uint64
4289	x4, x3 = bits.Mul64(arg1[1], 0x400000000000)
4290	var x5 uint64
4291	var x6 uint64
4292	x5, x6 = bits.Add64(x2, x3, uint64(0x0))
4293	var x7 uint64
4294	var x8 uint64
4295	x8, x7 = bits.Mul64(x1, 0x1ff)
4296	var x9 uint64
4297	var x10 uint64
4298	x10, x9 = bits.Mul64(x1, 0xffffffffffffffff)
4299	var x11 uint64
4300	var x12 uint64
4301	x12, x11 = bits.Mul64(x1, 0xffffffffffffffff)
4302	var x13 uint64
4303	var x14 uint64
4304	x14, x13 = bits.Mul64(x1, 0xffffffffffffffff)
4305	var x15 uint64
4306	var x16 uint64
4307	x16, x15 = bits.Mul64(x1, 0xffffffffffffffff)
4308	var x17 uint64
4309	var x18 uint64
4310	x18, x17 = bits.Mul64(x1, 0xffffffffffffffff)
4311	var x19 uint64
4312	var x20 uint64
4313	x20, x19 = bits.Mul64(x1, 0xffffffffffffffff)
4314	var x21 uint64
4315	var x22 uint64
4316	x22, x21 = bits.Mul64(x1, 0xffffffffffffffff)
4317	var x23 uint64
4318	var x24 uint64
4319	x24, x23 = bits.Mul64(x1, 0xffffffffffffffff)
4320	var x25 uint64
4321	var x26 uint64
4322	x25, x26 = bits.Add64(x24, x21, uint64(0x0))
4323	var x27 uint64
4324	var x28 uint64
4325	x27, x28 = bits.Add64(x22, x19, uint64(p521Uint1(x26)))
4326	var x29 uint64
4327	var x30 uint64
4328	x29, x30 = bits.Add64(x20, x17, uint64(p521Uint1(x28)))
4329	var x31 uint64
4330	var x32 uint64
4331	x31, x32 = bits.Add64(x18, x15, uint64(p521Uint1(x30)))
4332	var x33 uint64
4333	var x34 uint64
4334	x33, x34 = bits.Add64(x16, x13, uint64(p521Uint1(x32)))
4335	var x35 uint64
4336	var x36 uint64
4337	x35, x36 = bits.Add64(x14, x11, uint64(p521Uint1(x34)))
4338	var x37 uint64
4339	var x38 uint64
4340	x37, x38 = bits.Add64(x12, x9, uint64(p521Uint1(x36)))
4341	var x39 uint64
4342	var x40 uint64
4343	x39, x40 = bits.Add64(x10, x7, uint64(p521Uint1(x38)))
4344	var x42 uint64
4345	_, x42 = bits.Add64(x1, x23, uint64(0x0))
4346	var x43 uint64
4347	var x44 uint64
4348	x43, x44 = bits.Add64(x5, x25, uint64(p521Uint1(x42)))
4349	var x45 uint64
4350	var x46 uint64
4351	x45, x46 = bits.Add64((uint64(p521Uint1(x6)) + x4), x27, uint64(p521Uint1(x44)))
4352	var x47 uint64
4353	var x48 uint64
4354	x47, x48 = bits.Add64(uint64(0x0), x29, uint64(p521Uint1(x46)))
4355	var x49 uint64
4356	var x50 uint64
4357	x49, x50 = bits.Add64(uint64(0x0), x31, uint64(p521Uint1(x48)))
4358	var x51 uint64
4359	var x52 uint64
4360	x51, x52 = bits.Add64(uint64(0x0), x33, uint64(p521Uint1(x50)))
4361	var x53 uint64
4362	var x54 uint64
4363	x53, x54 = bits.Add64(uint64(0x0), x35, uint64(p521Uint1(x52)))
4364	var x55 uint64
4365	var x56 uint64
4366	x55, x56 = bits.Add64(uint64(0x0), x37, uint64(p521Uint1(x54)))
4367	var x57 uint64
4368	var x58 uint64
4369	x57, x58 = bits.Add64(uint64(0x0), x39, uint64(p521Uint1(x56)))
4370	var x59 uint64
4371	var x60 uint64
4372	x60, x59 = bits.Mul64(arg1[2], 0x400000000000)
4373	var x61 uint64
4374	var x62 uint64
4375	x61, x62 = bits.Add64(x45, x59, uint64(0x0))
4376	var x63 uint64
4377	var x64 uint64
4378	x63, x64 = bits.Add64(x47, x60, uint64(p521Uint1(x62)))
4379	var x65 uint64
4380	var x66 uint64
4381	x65, x66 = bits.Add64(x49, uint64(0x0), uint64(p521Uint1(x64)))
4382	var x67 uint64
4383	var x68 uint64
4384	x67, x68 = bits.Add64(x51, uint64(0x0), uint64(p521Uint1(x66)))
4385	var x69 uint64
4386	var x70 uint64
4387	x69, x70 = bits.Add64(x53, uint64(0x0), uint64(p521Uint1(x68)))
4388	var x71 uint64
4389	var x72 uint64
4390	x71, x72 = bits.Add64(x55, uint64(0x0), uint64(p521Uint1(x70)))
4391	var x73 uint64
4392	var x74 uint64
4393	x73, x74 = bits.Add64(x57, uint64(0x0), uint64(p521Uint1(x72)))
4394	var x75 uint64
4395	var x76 uint64
4396	x76, x75 = bits.Mul64(x43, 0x1ff)
4397	var x77 uint64
4398	var x78 uint64
4399	x78, x77 = bits.Mul64(x43, 0xffffffffffffffff)
4400	var x79 uint64
4401	var x80 uint64
4402	x80, x79 = bits.Mul64(x43, 0xffffffffffffffff)
4403	var x81 uint64
4404	var x82 uint64
4405	x82, x81 = bits.Mul64(x43, 0xffffffffffffffff)
4406	var x83 uint64
4407	var x84 uint64
4408	x84, x83 = bits.Mul64(x43, 0xffffffffffffffff)
4409	var x85 uint64
4410	var x86 uint64
4411	x86, x85 = bits.Mul64(x43, 0xffffffffffffffff)
4412	var x87 uint64
4413	var x88 uint64
4414	x88, x87 = bits.Mul64(x43, 0xffffffffffffffff)
4415	var x89 uint64
4416	var x90 uint64
4417	x90, x89 = bits.Mul64(x43, 0xffffffffffffffff)
4418	var x91 uint64
4419	var x92 uint64
4420	x92, x91 = bits.Mul64(x43, 0xffffffffffffffff)
4421	var x93 uint64
4422	var x94 uint64
4423	x93, x94 = bits.Add64(x92, x89, uint64(0x0))
4424	var x95 uint64
4425	var x96 uint64
4426	x95, x96 = bits.Add64(x90, x87, uint64(p521Uint1(x94)))
4427	var x97 uint64
4428	var x98 uint64
4429	x97, x98 = bits.Add64(x88, x85, uint64(p521Uint1(x96)))
4430	var x99 uint64
4431	var x100 uint64
4432	x99, x100 = bits.Add64(x86, x83, uint64(p521Uint1(x98)))
4433	var x101 uint64
4434	var x102 uint64
4435	x101, x102 = bits.Add64(x84, x81, uint64(p521Uint1(x100)))
4436	var x103 uint64
4437	var x104 uint64
4438	x103, x104 = bits.Add64(x82, x79, uint64(p521Uint1(x102)))
4439	var x105 uint64
4440	var x106 uint64
4441	x105, x106 = bits.Add64(x80, x77, uint64(p521Uint1(x104)))
4442	var x107 uint64
4443	var x108 uint64
4444	x107, x108 = bits.Add64(x78, x75, uint64(p521Uint1(x106)))
4445	var x110 uint64
4446	_, x110 = bits.Add64(x43, x91, uint64(0x0))
4447	var x111 uint64
4448	var x112 uint64
4449	x111, x112 = bits.Add64(x61, x93, uint64(p521Uint1(x110)))
4450	var x113 uint64
4451	var x114 uint64
4452	x113, x114 = bits.Add64(x63, x95, uint64(p521Uint1(x112)))
4453	var x115 uint64
4454	var x116 uint64
4455	x115, x116 = bits.Add64(x65, x97, uint64(p521Uint1(x114)))
4456	var x117 uint64
4457	var x118 uint64
4458	x117, x118 = bits.Add64(x67, x99, uint64(p521Uint1(x116)))
4459	var x119 uint64
4460	var x120 uint64
4461	x119, x120 = bits.Add64(x69, x101, uint64(p521Uint1(x118)))
4462	var x121 uint64
4463	var x122 uint64
4464	x121, x122 = bits.Add64(x71, x103, uint64(p521Uint1(x120)))
4465	var x123 uint64
4466	var x124 uint64
4467	x123, x124 = bits.Add64(x73, x105, uint64(p521Uint1(x122)))
4468	var x125 uint64
4469	var x126 uint64
4470	x125, x126 = bits.Add64((uint64(p521Uint1(x74)) + (uint64(p521Uint1(x58)) + (uint64(p521Uint1(x40)) + x8))), x107, uint64(p521Uint1(x124)))
4471	var x127 uint64
4472	var x128 uint64
4473	x128, x127 = bits.Mul64(arg1[3], 0x400000000000)
4474	var x129 uint64
4475	var x130 uint64
4476	x129, x130 = bits.Add64(x113, x127, uint64(0x0))
4477	var x131 uint64
4478	var x132 uint64
4479	x131, x132 = bits.Add64(x115, x128, uint64(p521Uint1(x130)))
4480	var x133 uint64
4481	var x134 uint64
4482	x133, x134 = bits.Add64(x117, uint64(0x0), uint64(p521Uint1(x132)))
4483	var x135 uint64
4484	var x136 uint64
4485	x135, x136 = bits.Add64(x119, uint64(0x0), uint64(p521Uint1(x134)))
4486	var x137 uint64
4487	var x138 uint64
4488	x137, x138 = bits.Add64(x121, uint64(0x0), uint64(p521Uint1(x136)))
4489	var x139 uint64
4490	var x140 uint64
4491	x139, x140 = bits.Add64(x123, uint64(0x0), uint64(p521Uint1(x138)))
4492	var x141 uint64
4493	var x142 uint64
4494	x141, x142 = bits.Add64(x125, uint64(0x0), uint64(p521Uint1(x140)))
4495	var x143 uint64
4496	var x144 uint64
4497	x144, x143 = bits.Mul64(x111, 0x1ff)
4498	var x145 uint64
4499	var x146 uint64
4500	x146, x145 = bits.Mul64(x111, 0xffffffffffffffff)
4501	var x147 uint64
4502	var x148 uint64
4503	x148, x147 = bits.Mul64(x111, 0xffffffffffffffff)
4504	var x149 uint64
4505	var x150 uint64
4506	x150, x149 = bits.Mul64(x111, 0xffffffffffffffff)
4507	var x151 uint64
4508	var x152 uint64
4509	x152, x151 = bits.Mul64(x111, 0xffffffffffffffff)
4510	var x153 uint64
4511	var x154 uint64
4512	x154, x153 = bits.Mul64(x111, 0xffffffffffffffff)
4513	var x155 uint64
4514	var x156 uint64
4515	x156, x155 = bits.Mul64(x111, 0xffffffffffffffff)
4516	var x157 uint64
4517	var x158 uint64
4518	x158, x157 = bits.Mul64(x111, 0xffffffffffffffff)
4519	var x159 uint64
4520	var x160 uint64
4521	x160, x159 = bits.Mul64(x111, 0xffffffffffffffff)
4522	var x161 uint64
4523	var x162 uint64
4524	x161, x162 = bits.Add64(x160, x157, uint64(0x0))
4525	var x163 uint64
4526	var x164 uint64
4527	x163, x164 = bits.Add64(x158, x155, uint64(p521Uint1(x162)))
4528	var x165 uint64
4529	var x166 uint64
4530	x165, x166 = bits.Add64(x156, x153, uint64(p521Uint1(x164)))
4531	var x167 uint64
4532	var x168 uint64
4533	x167, x168 = bits.Add64(x154, x151, uint64(p521Uint1(x166)))
4534	var x169 uint64
4535	var x170 uint64
4536	x169, x170 = bits.Add64(x152, x149, uint64(p521Uint1(x168)))
4537	var x171 uint64
4538	var x172 uint64
4539	x171, x172 = bits.Add64(x150, x147, uint64(p521Uint1(x170)))
4540	var x173 uint64
4541	var x174 uint64
4542	x173, x174 = bits.Add64(x148, x145, uint64(p521Uint1(x172)))
4543	var x175 uint64
4544	var x176 uint64
4545	x175, x176 = bits.Add64(x146, x143, uint64(p521Uint1(x174)))
4546	var x178 uint64
4547	_, x178 = bits.Add64(x111, x159, uint64(0x0))
4548	var x179 uint64
4549	var x180 uint64
4550	x179, x180 = bits.Add64(x129, x161, uint64(p521Uint1(x178)))
4551	var x181 uint64
4552	var x182 uint64
4553	x181, x182 = bits.Add64(x131, x163, uint64(p521Uint1(x180)))
4554	var x183 uint64
4555	var x184 uint64
4556	x183, x184 = bits.Add64(x133, x165, uint64(p521Uint1(x182)))
4557	var x185 uint64
4558	var x186 uint64
4559	x185, x186 = bits.Add64(x135, x167, uint64(p521Uint1(x184)))
4560	var x187 uint64
4561	var x188 uint64
4562	x187, x188 = bits.Add64(x137, x169, uint64(p521Uint1(x186)))
4563	var x189 uint64
4564	var x190 uint64
4565	x189, x190 = bits.Add64(x139, x171, uint64(p521Uint1(x188)))
4566	var x191 uint64
4567	var x192 uint64
4568	x191, x192 = bits.Add64(x141, x173, uint64(p521Uint1(x190)))
4569	var x193 uint64
4570	var x194 uint64
4571	x193, x194 = bits.Add64((uint64(p521Uint1(x142)) + (uint64(p521Uint1(x126)) + (uint64(p521Uint1(x108)) + x76))), x175, uint64(p521Uint1(x192)))
4572	var x195 uint64
4573	var x196 uint64
4574	x196, x195 = bits.Mul64(arg1[4], 0x400000000000)
4575	var x197 uint64
4576	var x198 uint64
4577	x197, x198 = bits.Add64(x181, x195, uint64(0x0))
4578	var x199 uint64
4579	var x200 uint64
4580	x199, x200 = bits.Add64(x183, x196, uint64(p521Uint1(x198)))
4581	var x201 uint64
4582	var x202 uint64
4583	x201, x202 = bits.Add64(x185, uint64(0x0), uint64(p521Uint1(x200)))
4584	var x203 uint64
4585	var x204 uint64
4586	x203, x204 = bits.Add64(x187, uint64(0x0), uint64(p521Uint1(x202)))
4587	var x205 uint64
4588	var x206 uint64
4589	x205, x206 = bits.Add64(x189, uint64(0x0), uint64(p521Uint1(x204)))
4590	var x207 uint64
4591	var x208 uint64
4592	x207, x208 = bits.Add64(x191, uint64(0x0), uint64(p521Uint1(x206)))
4593	var x209 uint64
4594	var x210 uint64
4595	x209, x210 = bits.Add64(x193, uint64(0x0), uint64(p521Uint1(x208)))
4596	var x211 uint64
4597	var x212 uint64
4598	x212, x211 = bits.Mul64(x179, 0x1ff)
4599	var x213 uint64
4600	var x214 uint64
4601	x214, x213 = bits.Mul64(x179, 0xffffffffffffffff)
4602	var x215 uint64
4603	var x216 uint64
4604	x216, x215 = bits.Mul64(x179, 0xffffffffffffffff)
4605	var x217 uint64
4606	var x218 uint64
4607	x218, x217 = bits.Mul64(x179, 0xffffffffffffffff)
4608	var x219 uint64
4609	var x220 uint64
4610	x220, x219 = bits.Mul64(x179, 0xffffffffffffffff)
4611	var x221 uint64
4612	var x222 uint64
4613	x222, x221 = bits.Mul64(x179, 0xffffffffffffffff)
4614	var x223 uint64
4615	var x224 uint64
4616	x224, x223 = bits.Mul64(x179, 0xffffffffffffffff)
4617	var x225 uint64
4618	var x226 uint64
4619	x226, x225 = bits.Mul64(x179, 0xffffffffffffffff)
4620	var x227 uint64
4621	var x228 uint64
4622	x228, x227 = bits.Mul64(x179, 0xffffffffffffffff)
4623	var x229 uint64
4624	var x230 uint64
4625	x229, x230 = bits.Add64(x228, x225, uint64(0x0))
4626	var x231 uint64
4627	var x232 uint64
4628	x231, x232 = bits.Add64(x226, x223, uint64(p521Uint1(x230)))
4629	var x233 uint64
4630	var x234 uint64
4631	x233, x234 = bits.Add64(x224, x221, uint64(p521Uint1(x232)))
4632	var x235 uint64
4633	var x236 uint64
4634	x235, x236 = bits.Add64(x222, x219, uint64(p521Uint1(x234)))
4635	var x237 uint64
4636	var x238 uint64
4637	x237, x238 = bits.Add64(x220, x217, uint64(p521Uint1(x236)))
4638	var x239 uint64
4639	var x240 uint64
4640	x239, x240 = bits.Add64(x218, x215, uint64(p521Uint1(x238)))
4641	var x241 uint64
4642	var x242 uint64
4643	x241, x242 = bits.Add64(x216, x213, uint64(p521Uint1(x240)))
4644	var x243 uint64
4645	var x244 uint64
4646	x243, x244 = bits.Add64(x214, x211, uint64(p521Uint1(x242)))
4647	var x246 uint64
4648	_, x246 = bits.Add64(x179, x227, uint64(0x0))
4649	var x247 uint64
4650	var x248 uint64
4651	x247, x248 = bits.Add64(x197, x229, uint64(p521Uint1(x246)))
4652	var x249 uint64
4653	var x250 uint64
4654	x249, x250 = bits.Add64(x199, x231, uint64(p521Uint1(x248)))
4655	var x251 uint64
4656	var x252 uint64
4657	x251, x252 = bits.Add64(x201, x233, uint64(p521Uint1(x250)))
4658	var x253 uint64
4659	var x254 uint64
4660	x253, x254 = bits.Add64(x203, x235, uint64(p521Uint1(x252)))
4661	var x255 uint64
4662	var x256 uint64
4663	x255, x256 = bits.Add64(x205, x237, uint64(p521Uint1(x254)))
4664	var x257 uint64
4665	var x258 uint64
4666	x257, x258 = bits.Add64(x207, x239, uint64(p521Uint1(x256)))
4667	var x259 uint64
4668	var x260 uint64
4669	x259, x260 = bits.Add64(x209, x241, uint64(p521Uint1(x258)))
4670	var x261 uint64
4671	var x262 uint64
4672	x261, x262 = bits.Add64((uint64(p521Uint1(x210)) + (uint64(p521Uint1(x194)) + (uint64(p521Uint1(x176)) + x144))), x243, uint64(p521Uint1(x260)))
4673	var x263 uint64
4674	var x264 uint64
4675	x264, x263 = bits.Mul64(arg1[5], 0x400000000000)
4676	var x265 uint64
4677	var x266 uint64
4678	x265, x266 = bits.Add64(x249, x263, uint64(0x0))
4679	var x267 uint64
4680	var x268 uint64
4681	x267, x268 = bits.Add64(x251, x264, uint64(p521Uint1(x266)))
4682	var x269 uint64
4683	var x270 uint64
4684	x269, x270 = bits.Add64(x253, uint64(0x0), uint64(p521Uint1(x268)))
4685	var x271 uint64
4686	var x272 uint64
4687	x271, x272 = bits.Add64(x255, uint64(0x0), uint64(p521Uint1(x270)))
4688	var x273 uint64
4689	var x274 uint64
4690	x273, x274 = bits.Add64(x257, uint64(0x0), uint64(p521Uint1(x272)))
4691	var x275 uint64
4692	var x276 uint64
4693	x275, x276 = bits.Add64(x259, uint64(0x0), uint64(p521Uint1(x274)))
4694	var x277 uint64
4695	var x278 uint64
4696	x277, x278 = bits.Add64(x261, uint64(0x0), uint64(p521Uint1(x276)))
4697	var x279 uint64
4698	var x280 uint64
4699	x280, x279 = bits.Mul64(x247, 0x1ff)
4700	var x281 uint64
4701	var x282 uint64
4702	x282, x281 = bits.Mul64(x247, 0xffffffffffffffff)
4703	var x283 uint64
4704	var x284 uint64
4705	x284, x283 = bits.Mul64(x247, 0xffffffffffffffff)
4706	var x285 uint64
4707	var x286 uint64
4708	x286, x285 = bits.Mul64(x247, 0xffffffffffffffff)
4709	var x287 uint64
4710	var x288 uint64
4711	x288, x287 = bits.Mul64(x247, 0xffffffffffffffff)
4712	var x289 uint64
4713	var x290 uint64
4714	x290, x289 = bits.Mul64(x247, 0xffffffffffffffff)
4715	var x291 uint64
4716	var x292 uint64
4717	x292, x291 = bits.Mul64(x247, 0xffffffffffffffff)
4718	var x293 uint64
4719	var x294 uint64
4720	x294, x293 = bits.Mul64(x247, 0xffffffffffffffff)
4721	var x295 uint64
4722	var x296 uint64
4723	x296, x295 = bits.Mul64(x247, 0xffffffffffffffff)
4724	var x297 uint64
4725	var x298 uint64
4726	x297, x298 = bits.Add64(x296, x293, uint64(0x0))
4727	var x299 uint64
4728	var x300 uint64
4729	x299, x300 = bits.Add64(x294, x291, uint64(p521Uint1(x298)))
4730	var x301 uint64
4731	var x302 uint64
4732	x301, x302 = bits.Add64(x292, x289, uint64(p521Uint1(x300)))
4733	var x303 uint64
4734	var x304 uint64
4735	x303, x304 = bits.Add64(x290, x287, uint64(p521Uint1(x302)))
4736	var x305 uint64
4737	var x306 uint64
4738	x305, x306 = bits.Add64(x288, x285, uint64(p521Uint1(x304)))
4739	var x307 uint64
4740	var x308 uint64
4741	x307, x308 = bits.Add64(x286, x283, uint64(p521Uint1(x306)))
4742	var x309 uint64
4743	var x310 uint64
4744	x309, x310 = bits.Add64(x284, x281, uint64(p521Uint1(x308)))
4745	var x311 uint64
4746	var x312 uint64
4747	x311, x312 = bits.Add64(x282, x279, uint64(p521Uint1(x310)))
4748	var x314 uint64
4749	_, x314 = bits.Add64(x247, x295, uint64(0x0))
4750	var x315 uint64
4751	var x316 uint64
4752	x315, x316 = bits.Add64(x265, x297, uint64(p521Uint1(x314)))
4753	var x317 uint64
4754	var x318 uint64
4755	x317, x318 = bits.Add64(x267, x299, uint64(p521Uint1(x316)))
4756	var x319 uint64
4757	var x320 uint64
4758	x319, x320 = bits.Add64(x269, x301, uint64(p521Uint1(x318)))
4759	var x321 uint64
4760	var x322 uint64
4761	x321, x322 = bits.Add64(x271, x303, uint64(p521Uint1(x320)))
4762	var x323 uint64
4763	var x324 uint64
4764	x323, x324 = bits.Add64(x273, x305, uint64(p521Uint1(x322)))
4765	var x325 uint64
4766	var x326 uint64
4767	x325, x326 = bits.Add64(x275, x307, uint64(p521Uint1(x324)))
4768	var x327 uint64
4769	var x328 uint64
4770	x327, x328 = bits.Add64(x277, x309, uint64(p521Uint1(x326)))
4771	var x329 uint64
4772	var x330 uint64
4773	x329, x330 = bits.Add64((uint64(p521Uint1(x278)) + (uint64(p521Uint1(x262)) + (uint64(p521Uint1(x244)) + x212))), x311, uint64(p521Uint1(x328)))
4774	var x331 uint64
4775	var x332 uint64
4776	x332, x331 = bits.Mul64(arg1[6], 0x400000000000)
4777	var x333 uint64
4778	var x334 uint64
4779	x333, x334 = bits.Add64(x317, x331, uint64(0x0))
4780	var x335 uint64
4781	var x336 uint64
4782	x335, x336 = bits.Add64(x319, x332, uint64(p521Uint1(x334)))
4783	var x337 uint64
4784	var x338 uint64
4785	x337, x338 = bits.Add64(x321, uint64(0x0), uint64(p521Uint1(x336)))
4786	var x339 uint64
4787	var x340 uint64
4788	x339, x340 = bits.Add64(x323, uint64(0x0), uint64(p521Uint1(x338)))
4789	var x341 uint64
4790	var x342 uint64
4791	x341, x342 = bits.Add64(x325, uint64(0x0), uint64(p521Uint1(x340)))
4792	var x343 uint64
4793	var x344 uint64
4794	x343, x344 = bits.Add64(x327, uint64(0x0), uint64(p521Uint1(x342)))
4795	var x345 uint64
4796	var x346 uint64
4797	x345, x346 = bits.Add64(x329, uint64(0x0), uint64(p521Uint1(x344)))
4798	var x347 uint64
4799	var x348 uint64
4800	x348, x347 = bits.Mul64(x315, 0x1ff)
4801	var x349 uint64
4802	var x350 uint64
4803	x350, x349 = bits.Mul64(x315, 0xffffffffffffffff)
4804	var x351 uint64
4805	var x352 uint64
4806	x352, x351 = bits.Mul64(x315, 0xffffffffffffffff)
4807	var x353 uint64
4808	var x354 uint64
4809	x354, x353 = bits.Mul64(x315, 0xffffffffffffffff)
4810	var x355 uint64
4811	var x356 uint64
4812	x356, x355 = bits.Mul64(x315, 0xffffffffffffffff)
4813	var x357 uint64
4814	var x358 uint64
4815	x358, x357 = bits.Mul64(x315, 0xffffffffffffffff)
4816	var x359 uint64
4817	var x360 uint64
4818	x360, x359 = bits.Mul64(x315, 0xffffffffffffffff)
4819	var x361 uint64
4820	var x362 uint64
4821	x362, x361 = bits.Mul64(x315, 0xffffffffffffffff)
4822	var x363 uint64
4823	var x364 uint64
4824	x364, x363 = bits.Mul64(x315, 0xffffffffffffffff)
4825	var x365 uint64
4826	var x366 uint64
4827	x365, x366 = bits.Add64(x364, x361, uint64(0x0))
4828	var x367 uint64
4829	var x368 uint64
4830	x367, x368 = bits.Add64(x362, x359, uint64(p521Uint1(x366)))
4831	var x369 uint64
4832	var x370 uint64
4833	x369, x370 = bits.Add64(x360, x357, uint64(p521Uint1(x368)))
4834	var x371 uint64
4835	var x372 uint64
4836	x371, x372 = bits.Add64(x358, x355, uint64(p521Uint1(x370)))
4837	var x373 uint64
4838	var x374 uint64
4839	x373, x374 = bits.Add64(x356, x353, uint64(p521Uint1(x372)))
4840	var x375 uint64
4841	var x376 uint64
4842	x375, x376 = bits.Add64(x354, x351, uint64(p521Uint1(x374)))
4843	var x377 uint64
4844	var x378 uint64
4845	x377, x378 = bits.Add64(x352, x349, uint64(p521Uint1(x376)))
4846	var x379 uint64
4847	var x380 uint64
4848	x379, x380 = bits.Add64(x350, x347, uint64(p521Uint1(x378)))
4849	var x382 uint64
4850	_, x382 = bits.Add64(x315, x363, uint64(0x0))
4851	var x383 uint64
4852	var x384 uint64
4853	x383, x384 = bits.Add64(x333, x365, uint64(p521Uint1(x382)))
4854	var x385 uint64
4855	var x386 uint64
4856	x385, x386 = bits.Add64(x335, x367, uint64(p521Uint1(x384)))
4857	var x387 uint64
4858	var x388 uint64
4859	x387, x388 = bits.Add64(x337, x369, uint64(p521Uint1(x386)))
4860	var x389 uint64
4861	var x390 uint64
4862	x389, x390 = bits.Add64(x339, x371, uint64(p521Uint1(x388)))
4863	var x391 uint64
4864	var x392 uint64
4865	x391, x392 = bits.Add64(x341, x373, uint64(p521Uint1(x390)))
4866	var x393 uint64
4867	var x394 uint64
4868	x393, x394 = bits.Add64(x343, x375, uint64(p521Uint1(x392)))
4869	var x395 uint64
4870	var x396 uint64
4871	x395, x396 = bits.Add64(x345, x377, uint64(p521Uint1(x394)))
4872	var x397 uint64
4873	var x398 uint64
4874	x397, x398 = bits.Add64((uint64(p521Uint1(x346)) + (uint64(p521Uint1(x330)) + (uint64(p521Uint1(x312)) + x280))), x379, uint64(p521Uint1(x396)))
4875	var x399 uint64
4876	var x400 uint64
4877	x400, x399 = bits.Mul64(arg1[7], 0x400000000000)
4878	var x401 uint64
4879	var x402 uint64
4880	x401, x402 = bits.Add64(x385, x399, uint64(0x0))
4881	var x403 uint64
4882	var x404 uint64
4883	x403, x404 = bits.Add64(x387, x400, uint64(p521Uint1(x402)))
4884	var x405 uint64
4885	var x406 uint64
4886	x405, x406 = bits.Add64(x389, uint64(0x0), uint64(p521Uint1(x404)))
4887	var x407 uint64
4888	var x408 uint64
4889	x407, x408 = bits.Add64(x391, uint64(0x0), uint64(p521Uint1(x406)))
4890	var x409 uint64
4891	var x410 uint64
4892	x409, x410 = bits.Add64(x393, uint64(0x0), uint64(p521Uint1(x408)))
4893	var x411 uint64
4894	var x412 uint64
4895	x411, x412 = bits.Add64(x395, uint64(0x0), uint64(p521Uint1(x410)))
4896	var x413 uint64
4897	var x414 uint64
4898	x413, x414 = bits.Add64(x397, uint64(0x0), uint64(p521Uint1(x412)))
4899	var x415 uint64
4900	var x416 uint64
4901	x416, x415 = bits.Mul64(x383, 0x1ff)
4902	var x417 uint64
4903	var x418 uint64
4904	x418, x417 = bits.Mul64(x383, 0xffffffffffffffff)
4905	var x419 uint64
4906	var x420 uint64
4907	x420, x419 = bits.Mul64(x383, 0xffffffffffffffff)
4908	var x421 uint64
4909	var x422 uint64
4910	x422, x421 = bits.Mul64(x383, 0xffffffffffffffff)
4911	var x423 uint64
4912	var x424 uint64
4913	x424, x423 = bits.Mul64(x383, 0xffffffffffffffff)
4914	var x425 uint64
4915	var x426 uint64
4916	x426, x425 = bits.Mul64(x383, 0xffffffffffffffff)
4917	var x427 uint64
4918	var x428 uint64
4919	x428, x427 = bits.Mul64(x383, 0xffffffffffffffff)
4920	var x429 uint64
4921	var x430 uint64
4922	x430, x429 = bits.Mul64(x383, 0xffffffffffffffff)
4923	var x431 uint64
4924	var x432 uint64
4925	x432, x431 = bits.Mul64(x383, 0xffffffffffffffff)
4926	var x433 uint64
4927	var x434 uint64
4928	x433, x434 = bits.Add64(x432, x429, uint64(0x0))
4929	var x435 uint64
4930	var x436 uint64
4931	x435, x436 = bits.Add64(x430, x427, uint64(p521Uint1(x434)))
4932	var x437 uint64
4933	var x438 uint64
4934	x437, x438 = bits.Add64(x428, x425, uint64(p521Uint1(x436)))
4935	var x439 uint64
4936	var x440 uint64
4937	x439, x440 = bits.Add64(x426, x423, uint64(p521Uint1(x438)))
4938	var x441 uint64
4939	var x442 uint64
4940	x441, x442 = bits.Add64(x424, x421, uint64(p521Uint1(x440)))
4941	var x443 uint64
4942	var x444 uint64
4943	x443, x444 = bits.Add64(x422, x419, uint64(p521Uint1(x442)))
4944	var x445 uint64
4945	var x446 uint64
4946	x445, x446 = bits.Add64(x420, x417, uint64(p521Uint1(x444)))
4947	var x447 uint64
4948	var x448 uint64
4949	x447, x448 = bits.Add64(x418, x415, uint64(p521Uint1(x446)))
4950	var x450 uint64
4951	_, x450 = bits.Add64(x383, x431, uint64(0x0))
4952	var x451 uint64
4953	var x452 uint64
4954	x451, x452 = bits.Add64(x401, x433, uint64(p521Uint1(x450)))
4955	var x453 uint64
4956	var x454 uint64
4957	x453, x454 = bits.Add64(x403, x435, uint64(p521Uint1(x452)))
4958	var x455 uint64
4959	var x456 uint64
4960	x455, x456 = bits.Add64(x405, x437, uint64(p521Uint1(x454)))
4961	var x457 uint64
4962	var x458 uint64
4963	x457, x458 = bits.Add64(x407, x439, uint64(p521Uint1(x456)))
4964	var x459 uint64
4965	var x460 uint64
4966	x459, x460 = bits.Add64(x409, x441, uint64(p521Uint1(x458)))
4967	var x461 uint64
4968	var x462 uint64
4969	x461, x462 = bits.Add64(x411, x443, uint64(p521Uint1(x460)))
4970	var x463 uint64
4971	var x464 uint64
4972	x463, x464 = bits.Add64(x413, x445, uint64(p521Uint1(x462)))
4973	var x465 uint64
4974	var x466 uint64
4975	x465, x466 = bits.Add64((uint64(p521Uint1(x414)) + (uint64(p521Uint1(x398)) + (uint64(p521Uint1(x380)) + x348))), x447, uint64(p521Uint1(x464)))
4976	var x467 uint64
4977	var x468 uint64
4978	x468, x467 = bits.Mul64(arg1[8], 0x400000000000)
4979	var x469 uint64
4980	var x470 uint64
4981	x469, x470 = bits.Add64(x453, x467, uint64(0x0))
4982	var x471 uint64
4983	var x472 uint64
4984	x471, x472 = bits.Add64(x455, x468, uint64(p521Uint1(x470)))
4985	var x473 uint64
4986	var x474 uint64
4987	x473, x474 = bits.Add64(x457, uint64(0x0), uint64(p521Uint1(x472)))
4988	var x475 uint64
4989	var x476 uint64
4990	x475, x476 = bits.Add64(x459, uint64(0x0), uint64(p521Uint1(x474)))
4991	var x477 uint64
4992	var x478 uint64
4993	x477, x478 = bits.Add64(x461, uint64(0x0), uint64(p521Uint1(x476)))
4994	var x479 uint64
4995	var x480 uint64
4996	x479, x480 = bits.Add64(x463, uint64(0x0), uint64(p521Uint1(x478)))
4997	var x481 uint64
4998	var x482 uint64
4999	x481, x482 = bits.Add64(x465, uint64(0x0), uint64(p521Uint1(x480)))
5000	var x483 uint64
5001	var x484 uint64
5002	x484, x483 = bits.Mul64(x451, 0x1ff)
5003	var x485 uint64
5004	var x486 uint64
5005	x486, x485 = bits.Mul64(x451, 0xffffffffffffffff)
5006	var x487 uint64
5007	var x488 uint64
5008	x488, x487 = bits.Mul64(x451, 0xffffffffffffffff)
5009	var x489 uint64
5010	var x490 uint64
5011	x490, x489 = bits.Mul64(x451, 0xffffffffffffffff)
5012	var x491 uint64
5013	var x492 uint64
5014	x492, x491 = bits.Mul64(x451, 0xffffffffffffffff)
5015	var x493 uint64
5016	var x494 uint64
5017	x494, x493 = bits.Mul64(x451, 0xffffffffffffffff)
5018	var x495 uint64
5019	var x496 uint64
5020	x496, x495 = bits.Mul64(x451, 0xffffffffffffffff)
5021	var x497 uint64
5022	var x498 uint64
5023	x498, x497 = bits.Mul64(x451, 0xffffffffffffffff)
5024	var x499 uint64
5025	var x500 uint64
5026	x500, x499 = bits.Mul64(x451, 0xffffffffffffffff)
5027	var x501 uint64
5028	var x502 uint64
5029	x501, x502 = bits.Add64(x500, x497, uint64(0x0))
5030	var x503 uint64
5031	var x504 uint64
5032	x503, x504 = bits.Add64(x498, x495, uint64(p521Uint1(x502)))
5033	var x505 uint64
5034	var x506 uint64
5035	x505, x506 = bits.Add64(x496, x493, uint64(p521Uint1(x504)))
5036	var x507 uint64
5037	var x508 uint64
5038	x507, x508 = bits.Add64(x494, x491, uint64(p521Uint1(x506)))
5039	var x509 uint64
5040	var x510 uint64
5041	x509, x510 = bits.Add64(x492, x489, uint64(p521Uint1(x508)))
5042	var x511 uint64
5043	var x512 uint64
5044	x511, x512 = bits.Add64(x490, x487, uint64(p521Uint1(x510)))
5045	var x513 uint64
5046	var x514 uint64
5047	x513, x514 = bits.Add64(x488, x485, uint64(p521Uint1(x512)))
5048	var x515 uint64
5049	var x516 uint64
5050	x515, x516 = bits.Add64(x486, x483, uint64(p521Uint1(x514)))
5051	var x518 uint64
5052	_, x518 = bits.Add64(x451, x499, uint64(0x0))
5053	var x519 uint64
5054	var x520 uint64
5055	x519, x520 = bits.Add64(x469, x501, uint64(p521Uint1(x518)))
5056	var x521 uint64
5057	var x522 uint64
5058	x521, x522 = bits.Add64(x471, x503, uint64(p521Uint1(x520)))
5059	var x523 uint64
5060	var x524 uint64
5061	x523, x524 = bits.Add64(x473, x505, uint64(p521Uint1(x522)))
5062	var x525 uint64
5063	var x526 uint64
5064	x525, x526 = bits.Add64(x475, x507, uint64(p521Uint1(x524)))
5065	var x527 uint64
5066	var x528 uint64
5067	x527, x528 = bits.Add64(x477, x509, uint64(p521Uint1(x526)))
5068	var x529 uint64
5069	var x530 uint64
5070	x529, x530 = bits.Add64(x479, x511, uint64(p521Uint1(x528)))
5071	var x531 uint64
5072	var x532 uint64
5073	x531, x532 = bits.Add64(x481, x513, uint64(p521Uint1(x530)))
5074	var x533 uint64
5075	var x534 uint64
5076	x533, x534 = bits.Add64((uint64(p521Uint1(x482)) + (uint64(p521Uint1(x466)) + (uint64(p521Uint1(x448)) + x416))), x515, uint64(p521Uint1(x532)))
5077	x535 := (uint64(p521Uint1(x534)) + (uint64(p521Uint1(x516)) + x484))
5078	var x536 uint64
5079	var x537 uint64
5080	x536, x537 = bits.Sub64(x519, 0xffffffffffffffff, uint64(0x0))
5081	var x538 uint64
5082	var x539 uint64
5083	x538, x539 = bits.Sub64(x521, 0xffffffffffffffff, uint64(p521Uint1(x537)))
5084	var x540 uint64
5085	var x541 uint64
5086	x540, x541 = bits.Sub64(x523, 0xffffffffffffffff, uint64(p521Uint1(x539)))
5087	var x542 uint64
5088	var x543 uint64
5089	x542, x543 = bits.Sub64(x525, 0xffffffffffffffff, uint64(p521Uint1(x541)))
5090	var x544 uint64
5091	var x545 uint64
5092	x544, x545 = bits.Sub64(x527, 0xffffffffffffffff, uint64(p521Uint1(x543)))
5093	var x546 uint64
5094	var x547 uint64
5095	x546, x547 = bits.Sub64(x529, 0xffffffffffffffff, uint64(p521Uint1(x545)))
5096	var x548 uint64
5097	var x549 uint64
5098	x548, x549 = bits.Sub64(x531, 0xffffffffffffffff, uint64(p521Uint1(x547)))
5099	var x550 uint64
5100	var x551 uint64
5101	x550, x551 = bits.Sub64(x533, 0xffffffffffffffff, uint64(p521Uint1(x549)))
5102	var x552 uint64
5103	var x553 uint64
5104	x552, x553 = bits.Sub64(x535, 0x1ff, uint64(p521Uint1(x551)))
5105	var x555 uint64
5106	_, x555 = bits.Sub64(uint64(0x0), uint64(0x0), uint64(p521Uint1(x553)))
5107	var x556 uint64
5108	p521CmovznzU64(&x556, p521Uint1(x555), x536, x519)
5109	var x557 uint64
5110	p521CmovznzU64(&x557, p521Uint1(x555), x538, x521)
5111	var x558 uint64
5112	p521CmovznzU64(&x558, p521Uint1(x555), x540, x523)
5113	var x559 uint64
5114	p521CmovznzU64(&x559, p521Uint1(x555), x542, x525)
5115	var x560 uint64
5116	p521CmovznzU64(&x560, p521Uint1(x555), x544, x527)
5117	var x561 uint64
5118	p521CmovznzU64(&x561, p521Uint1(x555), x546, x529)
5119	var x562 uint64
5120	p521CmovznzU64(&x562, p521Uint1(x555), x548, x531)
5121	var x563 uint64
5122	p521CmovznzU64(&x563, p521Uint1(x555), x550, x533)
5123	var x564 uint64
5124	p521CmovznzU64(&x564, p521Uint1(x555), x552, x535)
5125	out1[0] = x556
5126	out1[1] = x557
5127	out1[2] = x558
5128	out1[3] = x559
5129	out1[4] = x560
5130	out1[5] = x561
5131	out1[6] = x562
5132	out1[7] = x563
5133	out1[8] = x564
5134}
5135
5136// p521Selectznz is a multi-limb conditional select.
5137//
5138// Postconditions:
5139//
5140//	eval out1 = (if arg1 = 0 then eval arg2 else eval arg3)
5141//
5142// Input Bounds:
5143//
5144//	arg1: [0x0 ~> 0x1]
5145//	arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
5146//	arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
5147//
5148// Output Bounds:
5149//
5150//	out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
5151func p521Selectznz(out1 *[9]uint64, arg1 p521Uint1, arg2 *[9]uint64, arg3 *[9]uint64) {
5152	var x1 uint64
5153	p521CmovznzU64(&x1, arg1, arg2[0], arg3[0])
5154	var x2 uint64
5155	p521CmovznzU64(&x2, arg1, arg2[1], arg3[1])
5156	var x3 uint64
5157	p521CmovznzU64(&x3, arg1, arg2[2], arg3[2])
5158	var x4 uint64
5159	p521CmovznzU64(&x4, arg1, arg2[3], arg3[3])
5160	var x5 uint64
5161	p521CmovznzU64(&x5, arg1, arg2[4], arg3[4])
5162	var x6 uint64
5163	p521CmovznzU64(&x6, arg1, arg2[5], arg3[5])
5164	var x7 uint64
5165	p521CmovznzU64(&x7, arg1, arg2[6], arg3[6])
5166	var x8 uint64
5167	p521CmovznzU64(&x8, arg1, arg2[7], arg3[7])
5168	var x9 uint64
5169	p521CmovznzU64(&x9, arg1, arg2[8], arg3[8])
5170	out1[0] = x1
5171	out1[1] = x2
5172	out1[2] = x3
5173	out1[3] = x4
5174	out1[4] = x5
5175	out1[5] = x6
5176	out1[6] = x7
5177	out1[7] = x8
5178	out1[8] = x9
5179}
5180
5181// p521ToBytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order.
5182//
5183// Preconditions:
5184//
5185//	0 ≤ eval arg1 < m
5186//
5187// Postconditions:
5188//
5189//	out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..65]
5190//
5191// Input Bounds:
5192//
5193//	arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0x1ff]]
5194//
5195// Output Bounds:
5196//
5197//	out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
5198func p521ToBytes(out1 *[66]uint8, arg1 *[9]uint64) {
5199	x1 := arg1[8]
5200	x2 := arg1[7]
5201	x3 := arg1[6]
5202	x4 := arg1[5]
5203	x5 := arg1[4]
5204	x6 := arg1[3]
5205	x7 := arg1[2]
5206	x8 := arg1[1]
5207	x9 := arg1[0]
5208	x10 := (uint8(x9) & 0xff)
5209	x11 := (x9 >> 8)
5210	x12 := (uint8(x11) & 0xff)
5211	x13 := (x11 >> 8)
5212	x14 := (uint8(x13) & 0xff)
5213	x15 := (x13 >> 8)
5214	x16 := (uint8(x15) & 0xff)
5215	x17 := (x15 >> 8)
5216	x18 := (uint8(x17) & 0xff)
5217	x19 := (x17 >> 8)
5218	x20 := (uint8(x19) & 0xff)
5219	x21 := (x19 >> 8)
5220	x22 := (uint8(x21) & 0xff)
5221	x23 := uint8((x21 >> 8))
5222	x24 := (uint8(x8) & 0xff)
5223	x25 := (x8 >> 8)
5224	x26 := (uint8(x25) & 0xff)
5225	x27 := (x25 >> 8)
5226	x28 := (uint8(x27) & 0xff)
5227	x29 := (x27 >> 8)
5228	x30 := (uint8(x29) & 0xff)
5229	x31 := (x29 >> 8)
5230	x32 := (uint8(x31) & 0xff)
5231	x33 := (x31 >> 8)
5232	x34 := (uint8(x33) & 0xff)
5233	x35 := (x33 >> 8)
5234	x36 := (uint8(x35) & 0xff)
5235	x37 := uint8((x35 >> 8))
5236	x38 := (uint8(x7) & 0xff)
5237	x39 := (x7 >> 8)
5238	x40 := (uint8(x39) & 0xff)
5239	x41 := (x39 >> 8)
5240	x42 := (uint8(x41) & 0xff)
5241	x43 := (x41 >> 8)
5242	x44 := (uint8(x43) & 0xff)
5243	x45 := (x43 >> 8)
5244	x46 := (uint8(x45) & 0xff)
5245	x47 := (x45 >> 8)
5246	x48 := (uint8(x47) & 0xff)
5247	x49 := (x47 >> 8)
5248	x50 := (uint8(x49) & 0xff)
5249	x51 := uint8((x49 >> 8))
5250	x52 := (uint8(x6) & 0xff)
5251	x53 := (x6 >> 8)
5252	x54 := (uint8(x53) & 0xff)
5253	x55 := (x53 >> 8)
5254	x56 := (uint8(x55) & 0xff)
5255	x57 := (x55 >> 8)
5256	x58 := (uint8(x57) & 0xff)
5257	x59 := (x57 >> 8)
5258	x60 := (uint8(x59) & 0xff)
5259	x61 := (x59 >> 8)
5260	x62 := (uint8(x61) & 0xff)
5261	x63 := (x61 >> 8)
5262	x64 := (uint8(x63) & 0xff)
5263	x65 := uint8((x63 >> 8))
5264	x66 := (uint8(x5) & 0xff)
5265	x67 := (x5 >> 8)
5266	x68 := (uint8(x67) & 0xff)
5267	x69 := (x67 >> 8)
5268	x70 := (uint8(x69) & 0xff)
5269	x71 := (x69 >> 8)
5270	x72 := (uint8(x71) & 0xff)
5271	x73 := (x71 >> 8)
5272	x74 := (uint8(x73) & 0xff)
5273	x75 := (x73 >> 8)
5274	x76 := (uint8(x75) & 0xff)
5275	x77 := (x75 >> 8)
5276	x78 := (uint8(x77) & 0xff)
5277	x79 := uint8((x77 >> 8))
5278	x80 := (uint8(x4) & 0xff)
5279	x81 := (x4 >> 8)
5280	x82 := (uint8(x81) & 0xff)
5281	x83 := (x81 >> 8)
5282	x84 := (uint8(x83) & 0xff)
5283	x85 := (x83 >> 8)
5284	x86 := (uint8(x85) & 0xff)
5285	x87 := (x85 >> 8)
5286	x88 := (uint8(x87) & 0xff)
5287	x89 := (x87 >> 8)
5288	x90 := (uint8(x89) & 0xff)
5289	x91 := (x89 >> 8)
5290	x92 := (uint8(x91) & 0xff)
5291	x93 := uint8((x91 >> 8))
5292	x94 := (uint8(x3) & 0xff)
5293	x95 := (x3 >> 8)
5294	x96 := (uint8(x95) & 0xff)
5295	x97 := (x95 >> 8)
5296	x98 := (uint8(x97) & 0xff)
5297	x99 := (x97 >> 8)
5298	x100 := (uint8(x99) & 0xff)
5299	x101 := (x99 >> 8)
5300	x102 := (uint8(x101) & 0xff)
5301	x103 := (x101 >> 8)
5302	x104 := (uint8(x103) & 0xff)
5303	x105 := (x103 >> 8)
5304	x106 := (uint8(x105) & 0xff)
5305	x107 := uint8((x105 >> 8))
5306	x108 := (uint8(x2) & 0xff)
5307	x109 := (x2 >> 8)
5308	x110 := (uint8(x109) & 0xff)
5309	x111 := (x109 >> 8)
5310	x112 := (uint8(x111) & 0xff)
5311	x113 := (x111 >> 8)
5312	x114 := (uint8(x113) & 0xff)
5313	x115 := (x113 >> 8)
5314	x116 := (uint8(x115) & 0xff)
5315	x117 := (x115 >> 8)
5316	x118 := (uint8(x117) & 0xff)
5317	x119 := (x117 >> 8)
5318	x120 := (uint8(x119) & 0xff)
5319	x121 := uint8((x119 >> 8))
5320	x122 := (uint8(x1) & 0xff)
5321	x123 := p521Uint1((x1 >> 8))
5322	out1[0] = x10
5323	out1[1] = x12
5324	out1[2] = x14
5325	out1[3] = x16
5326	out1[4] = x18
5327	out1[5] = x20
5328	out1[6] = x22
5329	out1[7] = x23
5330	out1[8] = x24
5331	out1[9] = x26
5332	out1[10] = x28
5333	out1[11] = x30
5334	out1[12] = x32
5335	out1[13] = x34
5336	out1[14] = x36
5337	out1[15] = x37
5338	out1[16] = x38
5339	out1[17] = x40
5340	out1[18] = x42
5341	out1[19] = x44
5342	out1[20] = x46
5343	out1[21] = x48
5344	out1[22] = x50
5345	out1[23] = x51
5346	out1[24] = x52
5347	out1[25] = x54
5348	out1[26] = x56
5349	out1[27] = x58
5350	out1[28] = x60
5351	out1[29] = x62
5352	out1[30] = x64
5353	out1[31] = x65
5354	out1[32] = x66
5355	out1[33] = x68
5356	out1[34] = x70
5357	out1[35] = x72
5358	out1[36] = x74
5359	out1[37] = x76
5360	out1[38] = x78
5361	out1[39] = x79
5362	out1[40] = x80
5363	out1[41] = x82
5364	out1[42] = x84
5365	out1[43] = x86
5366	out1[44] = x88
5367	out1[45] = x90
5368	out1[46] = x92
5369	out1[47] = x93
5370	out1[48] = x94
5371	out1[49] = x96
5372	out1[50] = x98
5373	out1[51] = x100
5374	out1[52] = x102
5375	out1[53] = x104
5376	out1[54] = x106
5377	out1[55] = x107
5378	out1[56] = x108
5379	out1[57] = x110
5380	out1[58] = x112
5381	out1[59] = x114
5382	out1[60] = x116
5383	out1[61] = x118
5384	out1[62] = x120
5385	out1[63] = x121
5386	out1[64] = x122
5387	out1[65] = uint8(x123)
5388}
5389
5390// p521FromBytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order.
5391//
5392// Preconditions:
5393//
5394//	0 ≤ bytes_eval arg1 < m
5395//
5396// Postconditions:
5397//
5398//	eval out1 mod m = bytes_eval arg1 mod m
5399//	0 ≤ eval out1 < m
5400//
5401// Input Bounds:
5402//
5403//	arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
5404//
5405// Output Bounds:
5406//
5407//	out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0x1ff]]
5408func p521FromBytes(out1 *[9]uint64, arg1 *[66]uint8) {
5409	x1 := (uint64(p521Uint1(arg1[65])) << 8)
5410	x2 := arg1[64]
5411	x3 := (uint64(arg1[63]) << 56)
5412	x4 := (uint64(arg1[62]) << 48)
5413	x5 := (uint64(arg1[61]) << 40)
5414	x6 := (uint64(arg1[60]) << 32)
5415	x7 := (uint64(arg1[59]) << 24)
5416	x8 := (uint64(arg1[58]) << 16)
5417	x9 := (uint64(arg1[57]) << 8)
5418	x10 := arg1[56]
5419	x11 := (uint64(arg1[55]) << 56)
5420	x12 := (uint64(arg1[54]) << 48)
5421	x13 := (uint64(arg1[53]) << 40)
5422	x14 := (uint64(arg1[52]) << 32)
5423	x15 := (uint64(arg1[51]) << 24)
5424	x16 := (uint64(arg1[50]) << 16)
5425	x17 := (uint64(arg1[49]) << 8)
5426	x18 := arg1[48]
5427	x19 := (uint64(arg1[47]) << 56)
5428	x20 := (uint64(arg1[46]) << 48)
5429	x21 := (uint64(arg1[45]) << 40)
5430	x22 := (uint64(arg1[44]) << 32)
5431	x23 := (uint64(arg1[43]) << 24)
5432	x24 := (uint64(arg1[42]) << 16)
5433	x25 := (uint64(arg1[41]) << 8)
5434	x26 := arg1[40]
5435	x27 := (uint64(arg1[39]) << 56)
5436	x28 := (uint64(arg1[38]) << 48)
5437	x29 := (uint64(arg1[37]) << 40)
5438	x30 := (uint64(arg1[36]) << 32)
5439	x31 := (uint64(arg1[35]) << 24)
5440	x32 := (uint64(arg1[34]) << 16)
5441	x33 := (uint64(arg1[33]) << 8)
5442	x34 := arg1[32]
5443	x35 := (uint64(arg1[31]) << 56)
5444	x36 := (uint64(arg1[30]) << 48)
5445	x37 := (uint64(arg1[29]) << 40)
5446	x38 := (uint64(arg1[28]) << 32)
5447	x39 := (uint64(arg1[27]) << 24)
5448	x40 := (uint64(arg1[26]) << 16)
5449	x41 := (uint64(arg1[25]) << 8)
5450	x42 := arg1[24]
5451	x43 := (uint64(arg1[23]) << 56)
5452	x44 := (uint64(arg1[22]) << 48)
5453	x45 := (uint64(arg1[21]) << 40)
5454	x46 := (uint64(arg1[20]) << 32)
5455	x47 := (uint64(arg1[19]) << 24)
5456	x48 := (uint64(arg1[18]) << 16)
5457	x49 := (uint64(arg1[17]) << 8)
5458	x50 := arg1[16]
5459	x51 := (uint64(arg1[15]) << 56)
5460	x52 := (uint64(arg1[14]) << 48)
5461	x53 := (uint64(arg1[13]) << 40)
5462	x54 := (uint64(arg1[12]) << 32)
5463	x55 := (uint64(arg1[11]) << 24)
5464	x56 := (uint64(arg1[10]) << 16)
5465	x57 := (uint64(arg1[9]) << 8)
5466	x58 := arg1[8]
5467	x59 := (uint64(arg1[7]) << 56)
5468	x60 := (uint64(arg1[6]) << 48)
5469	x61 := (uint64(arg1[5]) << 40)
5470	x62 := (uint64(arg1[4]) << 32)
5471	x63 := (uint64(arg1[3]) << 24)
5472	x64 := (uint64(arg1[2]) << 16)
5473	x65 := (uint64(arg1[1]) << 8)
5474	x66 := arg1[0]
5475	x67 := (x65 + uint64(x66))
5476	x68 := (x64 + x67)
5477	x69 := (x63 + x68)
5478	x70 := (x62 + x69)
5479	x71 := (x61 + x70)
5480	x72 := (x60 + x71)
5481	x73 := (x59 + x72)
5482	x74 := (x57 + uint64(x58))
5483	x75 := (x56 + x74)
5484	x76 := (x55 + x75)
5485	x77 := (x54 + x76)
5486	x78 := (x53 + x77)
5487	x79 := (x52 + x78)
5488	x80 := (x51 + x79)
5489	x81 := (x49 + uint64(x50))
5490	x82 := (x48 + x81)
5491	x83 := (x47 + x82)
5492	x84 := (x46 + x83)
5493	x85 := (x45 + x84)
5494	x86 := (x44 + x85)
5495	x87 := (x43 + x86)
5496	x88 := (x41 + uint64(x42))
5497	x89 := (x40 + x88)
5498	x90 := (x39 + x89)
5499	x91 := (x38 + x90)
5500	x92 := (x37 + x91)
5501	x93 := (x36 + x92)
5502	x94 := (x35 + x93)
5503	x95 := (x33 + uint64(x34))
5504	x96 := (x32 + x95)
5505	x97 := (x31 + x96)
5506	x98 := (x30 + x97)
5507	x99 := (x29 + x98)
5508	x100 := (x28 + x99)
5509	x101 := (x27 + x100)
5510	x102 := (x25 + uint64(x26))
5511	x103 := (x24 + x102)
5512	x104 := (x23 + x103)
5513	x105 := (x22 + x104)
5514	x106 := (x21 + x105)
5515	x107 := (x20 + x106)
5516	x108 := (x19 + x107)
5517	x109 := (x17 + uint64(x18))
5518	x110 := (x16 + x109)
5519	x111 := (x15 + x110)
5520	x112 := (x14 + x111)
5521	x113 := (x13 + x112)
5522	x114 := (x12 + x113)
5523	x115 := (x11 + x114)
5524	x116 := (x9 + uint64(x10))
5525	x117 := (x8 + x116)
5526	x118 := (x7 + x117)
5527	x119 := (x6 + x118)
5528	x120 := (x5 + x119)
5529	x121 := (x4 + x120)
5530	x122 := (x3 + x121)
5531	x123 := (x1 + uint64(x2))
5532	out1[0] = x73
5533	out1[1] = x80
5534	out1[2] = x87
5535	out1[3] = x94
5536	out1[4] = x101
5537	out1[5] = x108
5538	out1[6] = x115
5539	out1[7] = x122
5540	out1[8] = x123
5541}
5542