decaf377/fields/fr/u32/
fiat.rs

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