decaf377/fields/fq/u32/
fiat.rs

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