1#![allow(unused_parens)]
16#![allow(non_camel_case_types)]
17
18struct IndexConst<T: ?Sized>(T);
22
23impl<'a, T, const N: usize> IndexConst<&'a [T; N]> {
24 #[inline(always)]
25 #[allow(unused)]
26 const fn index(self, i: usize) -> &'a T {
27 &self.0[i]
28 }
29}
30impl<'a, 'b, T, const N: usize> IndexConst<&'a mut &'b mut [T; N]> {
31 #[inline(always)]
32 #[allow(unused)]
33 const fn index_mut(self, i: usize) -> &'a mut T {
34 &mut self.0[i]
35 }
36}
37
38pub type fiat_p448_u1 = u8;
40pub type fiat_p448_i1 = i8;
42pub type fiat_p448_u2 = u8;
44pub type fiat_p448_i2 = i8;
46
47#[derive(Clone, Copy)]
50pub struct fiat_p448_loose_field_element(pub [u64; 8]);
51
52impl core::ops::Index<usize> for fiat_p448_loose_field_element {
53 type Output = u64;
54 #[inline]
55 fn index(&self, index: usize) -> &Self::Output {
56 &self.0[index]
57 }
58}
59
60impl core::ops::IndexMut<usize> for fiat_p448_loose_field_element {
61 #[inline]
62 fn index_mut(&mut self, index: usize) -> &mut Self::Output {
63 &mut self.0[index]
64 }
65}
66
67impl<'a> IndexConst<&'a fiat_p448_loose_field_element> {
68 #[allow(unused)]
69 #[inline(always)]
70 const fn index(self, i: usize) -> &'a u64 {
71 &self.0.0[i]
72 }
73}
74
75impl<'a, 'b> IndexConst<&'a mut &'b mut fiat_p448_loose_field_element> {
76 #[allow(unused)]
77 #[inline(always)]
78 const fn index_mut(self, i: usize) -> &'a mut u64 {
79 &mut self.0.0[i]
80 }
81}
82
83#[derive(Clone, Copy)]
86pub struct fiat_p448_tight_field_element(pub [u64; 8]);
87
88impl core::ops::Index<usize> for fiat_p448_tight_field_element {
89 type Output = u64;
90 #[inline]
91 fn index(&self, index: usize) -> &Self::Output {
92 &self.0[index]
93 }
94}
95
96impl core::ops::IndexMut<usize> for fiat_p448_tight_field_element {
97 #[inline]
98 fn index_mut(&mut self, index: usize) -> &mut Self::Output {
99 &mut self.0[index]
100 }
101}
102
103impl<'a> IndexConst<&'a fiat_p448_tight_field_element> {
104 #[allow(unused)]
105 #[inline(always)]
106 const fn index(self, i: usize) -> &'a u64 {
107 &self.0.0[i]
108 }
109}
110
111impl<'a, 'b> IndexConst<&'a mut &'b mut fiat_p448_tight_field_element> {
112 #[allow(unused)]
113 #[inline(always)]
114 const fn index_mut(self, i: usize) -> &'a mut u64 {
115 &mut self.0.0[i]
116 }
117}
118
119
120#[inline]
134pub const fn fiat_p448_addcarryx_u56(out1: &mut u64, out2: &mut fiat_p448_u1, arg1: fiat_p448_u1, arg2: u64, arg3: u64) {
135 let x1: u64 = (((arg1 as u64) + arg2) + arg3);
136 let x2: u64 = (x1 & 0xffffffffffffff);
137 let x3: fiat_p448_u1 = ((x1 >> 56) as fiat_p448_u1);
138 *out1 = x2;
139 *out2 = x3;
140}
141
142#[inline]
156pub const fn fiat_p448_subborrowx_u56(out1: &mut u64, out2: &mut fiat_p448_u1, arg1: fiat_p448_u1, arg2: u64, arg3: u64) {
157 let x1: i64 = ((((((arg2 as i128) - (arg1 as i128)) as i64) as i128) - (arg3 as i128)) as i64);
158 let x2: fiat_p448_i1 = ((x1 >> 56) as fiat_p448_i1);
159 let x3: u64 = (((x1 as i128) & (0xffffffffffffff as i128)) as u64);
160 *out1 = x3;
161 *out2 = (((0x0 as fiat_p448_i2) - (x2 as fiat_p448_i2)) as fiat_p448_u1);
162}
163
164#[inline]
176pub const fn fiat_p448_cmovznz_u64(out1: &mut u64, arg1: fiat_p448_u1, arg2: u64, arg3: u64) {
177 let x1: fiat_p448_u1 = (!(!arg1));
178 let x2: u64 = ((((((0x0 as fiat_p448_i2) - (x1 as fiat_p448_i2)) as fiat_p448_i1) as i128) & (0xffffffffffffffff as i128)) as u64);
179 let x3: u64 = ((x2 & arg3) | ((!x2) & arg2));
180 *out1 = x3;
181}
182
183#[inline]
189pub const fn fiat_p448_carry_mul(mut out1: &mut fiat_p448_tight_field_element, arg1: &fiat_p448_loose_field_element, arg2: &fiat_p448_loose_field_element) {
190 let x1: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
191 let x2: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
192 let x3: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
193 let x4: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
194 let x5: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
195 let x6: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
196 let x7: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
197 let x8: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
198 let x9: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
199 let x10: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
200 let x11: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
201 let x12: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
202 let x13: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
203 let x14: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
204 let x15: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
205 let x16: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
206 let x17: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
207 let x18: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
208 let x19: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
209 let x20: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
210 let x21: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
211 let x22: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
212 let x23: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
213 let x24: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
214 let x25: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
215 let x26: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
216 let x27: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
217 let x28: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
218 let x29: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
219 let x30: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
220 let x31: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
221 let x32: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
222 let x33: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
223 let x34: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
224 let x35: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
225 let x36: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
226 let x37: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
227 let x38: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
228 let x39: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
229 let x40: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
230 let x41: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
231 let x42: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
232 let x43: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
233 let x44: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
234 let x45: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
235 let x46: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
236 let x47: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
237 let x48: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
238 let x49: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
239 let x50: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
240 let x51: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
241 let x52: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
242 let x53: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
243 let x54: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
244 let x55: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
245 let x56: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
246 let x57: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
247 let x58: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
248 let x59: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
249 let x60: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
250 let x61: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
251 let x62: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
252 let x63: u128 = (((*IndexConst(arg1).index(7)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
253 let x64: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
254 let x65: u128 = (((*IndexConst(arg1).index(6)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
255 let x66: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
256 let x67: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
257 let x68: u128 = (((*IndexConst(arg1).index(5)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
258 let x69: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
259 let x70: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
260 let x71: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
261 let x72: u128 = (((*IndexConst(arg1).index(4)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
262 let x73: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
263 let x74: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
264 let x75: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
265 let x76: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
266 let x77: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
267 let x78: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
268 let x79: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
269 let x80: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
270 let x81: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
271 let x82: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
272 let x83: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
273 let x84: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
274 let x85: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
275 let x86: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
276 let x87: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
277 let x88: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
278 let x89: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
279 let x90: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
280 let x91: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(7)) as u128));
281 let x92: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(6)) as u128));
282 let x93: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(5)) as u128));
283 let x94: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(4)) as u128));
284 let x95: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(3)) as u128));
285 let x96: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(2)) as u128));
286 let x97: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(1)) as u128));
287 let x98: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg2).index(0)) as u128));
288 let x99: u128 = (x95 + (x88 + (x82 + (x77 + (x31 + (x27 + (x22 + x16)))))));
289 let x100: u64 = ((x99 >> 56) as u64);
290 let x101: u64 = ((x99 & (0xffffffffffffff as u128)) as u64);
291 let x102: u128 = (x91 + (x84 + (x78 + (x73 + (x69 + (x66 + (x64 + (x63 + (x53 + (x49 + (x45 + x41)))))))))));
292 let x103: u128 = (x92 + (x85 + (x79 + (x74 + (x70 + (x67 + (x65 + (x57 + (x54 + (x50 + (x46 + (x42 + (x13 + x7)))))))))))));
293 let x104: u128 = (x93 + (x86 + (x80 + (x75 + (x71 + (x68 + (x60 + (x58 + (x55 + (x51 + (x47 + (x43 + (x20 + (x14 + (x10 + x8)))))))))))))));
294 let x105: u128 = (x94 + (x87 + (x81 + (x76 + (x72 + (x62 + (x61 + (x59 + (x56 + (x52 + (x48 + (x44 + (x26 + (x21 + (x15 + (x12 + (x11 + x9)))))))))))))))));
295 let x106: u128 = (x96 + (x89 + (x83 + (x35 + (x32 + (x28 + (x23 + (x17 + x1))))))));
296 let x107: u128 = (x97 + (x90 + (x38 + (x36 + (x33 + (x29 + (x24 + (x18 + (x4 + x2)))))))));
297 let x108: u128 = (x98 + (x40 + (x39 + (x37 + (x34 + (x30 + (x25 + (x19 + (x6 + (x5 + x3))))))))));
298 let x109: u128 = ((x100 as u128) + x105);
299 let x110: u64 = ((x102 >> 56) as u64);
300 let x111: u64 = ((x102 & (0xffffffffffffff as u128)) as u64);
301 let x112: u128 = (x109 + (x110 as u128));
302 let x113: u64 = ((x112 >> 56) as u64);
303 let x114: u64 = ((x112 & (0xffffffffffffff as u128)) as u64);
304 let x115: u128 = (x108 + (x110 as u128));
305 let x116: u128 = ((x113 as u128) + x104);
306 let x117: u64 = ((x115 >> 56) as u64);
307 let x118: u64 = ((x115 & (0xffffffffffffff as u128)) as u64);
308 let x119: u128 = ((x117 as u128) + x107);
309 let x120: u64 = ((x116 >> 56) as u64);
310 let x121: u64 = ((x116 & (0xffffffffffffff as u128)) as u64);
311 let x122: u128 = ((x120 as u128) + x103);
312 let x123: u64 = ((x119 >> 56) as u64);
313 let x124: u64 = ((x119 & (0xffffffffffffff as u128)) as u64);
314 let x125: u128 = ((x123 as u128) + x106);
315 let x126: u64 = ((x122 >> 56) as u64);
316 let x127: u64 = ((x122 & (0xffffffffffffff as u128)) as u64);
317 let x128: u64 = (x126 + x111);
318 let x129: u64 = ((x125 >> 56) as u64);
319 let x130: u64 = ((x125 & (0xffffffffffffff as u128)) as u64);
320 let x131: u64 = (x129 + x101);
321 let x132: u64 = (x128 >> 56);
322 let x133: u64 = (x128 & 0xffffffffffffff);
323 let x134: u64 = (x131 >> 56);
324 let x135: u64 = (x131 & 0xffffffffffffff);
325 let x136: u64 = (x114 + x132);
326 let x137: u64 = (x118 + x132);
327 let x138: u64 = (x134 + x136);
328 let x139: fiat_p448_u1 = ((x138 >> 56) as fiat_p448_u1);
329 let x140: u64 = (x138 & 0xffffffffffffff);
330 let x141: u64 = ((x139 as u64) + x121);
331 let x142: fiat_p448_u1 = ((x137 >> 56) as fiat_p448_u1);
332 let x143: u64 = (x137 & 0xffffffffffffff);
333 let x144: u64 = ((x142 as u64) + x124);
334 *IndexConst(&mut out1).index_mut(0) = x143;
335 *IndexConst(&mut out1).index_mut(1) = x144;
336 *IndexConst(&mut out1).index_mut(2) = x130;
337 *IndexConst(&mut out1).index_mut(3) = x135;
338 *IndexConst(&mut out1).index_mut(4) = x140;
339 *IndexConst(&mut out1).index_mut(5) = x141;
340 *IndexConst(&mut out1).index_mut(6) = x127;
341 *IndexConst(&mut out1).index_mut(7) = x133;
342}
343
344#[inline]
350pub const fn fiat_p448_carry_square(mut out1: &mut fiat_p448_tight_field_element, arg1: &fiat_p448_loose_field_element) {
351 let x1: u64 = (*IndexConst(arg1).index(7));
352 let x2: u64 = (*IndexConst(arg1).index(7));
353 let x3: u64 = (x1 * 0x2);
354 let x4: u64 = (x2 * 0x2);
355 let x5: u64 = ((*IndexConst(arg1).index(7)) * 0x2);
356 let x6: u64 = (*IndexConst(arg1).index(6));
357 let x7: u64 = (*IndexConst(arg1).index(6));
358 let x8: u64 = (x6 * 0x2);
359 let x9: u64 = (x7 * 0x2);
360 let x10: u64 = ((*IndexConst(arg1).index(6)) * 0x2);
361 let x11: u64 = (*IndexConst(arg1).index(5));
362 let x12: u64 = (*IndexConst(arg1).index(5));
363 let x13: u64 = (x11 * 0x2);
364 let x14: u64 = (x12 * 0x2);
365 let x15: u64 = ((*IndexConst(arg1).index(5)) * 0x2);
366 let x16: u64 = (*IndexConst(arg1).index(4));
367 let x17: u64 = (*IndexConst(arg1).index(4));
368 let x18: u64 = ((*IndexConst(arg1).index(4)) * 0x2);
369 let x19: u64 = ((*IndexConst(arg1).index(3)) * 0x2);
370 let x20: u64 = ((*IndexConst(arg1).index(2)) * 0x2);
371 let x21: u64 = ((*IndexConst(arg1).index(1)) * 0x2);
372 let x22: u128 = (((*IndexConst(arg1).index(7)) as u128) * (x1 as u128));
373 let x23: u128 = (((*IndexConst(arg1).index(6)) as u128) * (x3 as u128));
374 let x24: u128 = (((*IndexConst(arg1).index(6)) as u128) * (x6 as u128));
375 let x25: u128 = (((*IndexConst(arg1).index(5)) as u128) * (x3 as u128));
376 let x26: u128 = (((*IndexConst(arg1).index(7)) as u128) * (x1 as u128));
377 let x27: u128 = (((*IndexConst(arg1).index(6)) as u128) * (x3 as u128));
378 let x28: u128 = (((*IndexConst(arg1).index(6)) as u128) * (x6 as u128));
379 let x29: u128 = (((*IndexConst(arg1).index(5)) as u128) * (x3 as u128));
380 let x30: u128 = (((*IndexConst(arg1).index(7)) as u128) * (x2 as u128));
381 let x31: u128 = (((*IndexConst(arg1).index(6)) as u128) * (x4 as u128));
382 let x32: u128 = (((*IndexConst(arg1).index(6)) as u128) * (x7 as u128));
383 let x33: u128 = (((*IndexConst(arg1).index(5)) as u128) * (x4 as u128));
384 let x34: u128 = (((*IndexConst(arg1).index(5)) as u128) * (x9 as u128));
385 let x35: u128 = (((*IndexConst(arg1).index(5)) as u128) * (x8 as u128));
386 let x36: u128 = (((*IndexConst(arg1).index(5)) as u128) * (x12 as u128));
387 let x37: u128 = (((*IndexConst(arg1).index(5)) as u128) * (x11 as u128));
388 let x38: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x4 as u128));
389 let x39: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x3 as u128));
390 let x40: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x9 as u128));
391 let x41: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x8 as u128));
392 let x42: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x14 as u128));
393 let x43: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x13 as u128));
394 let x44: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x17 as u128));
395 let x45: u128 = (((*IndexConst(arg1).index(4)) as u128) * (x16 as u128));
396 let x46: u128 = (((*IndexConst(arg1).index(3)) as u128) * (x4 as u128));
397 let x47: u128 = (((*IndexConst(arg1).index(3)) as u128) * (x3 as u128));
398 let x48: u128 = (((*IndexConst(arg1).index(3)) as u128) * (x9 as u128));
399 let x49: u128 = (((*IndexConst(arg1).index(3)) as u128) * (x8 as u128));
400 let x50: u128 = (((*IndexConst(arg1).index(3)) as u128) * (x14 as u128));
401 let x51: u128 = (((*IndexConst(arg1).index(3)) as u128) * (x13 as u128));
402 let x52: u128 = (((*IndexConst(arg1).index(3)) as u128) * (x18 as u128));
403 let x53: u128 = (((*IndexConst(arg1).index(3)) as u128) * ((*IndexConst(arg1).index(3)) as u128));
404 let x54: u128 = (((*IndexConst(arg1).index(2)) as u128) * (x4 as u128));
405 let x55: u128 = (((*IndexConst(arg1).index(2)) as u128) * (x3 as u128));
406 let x56: u128 = (((*IndexConst(arg1).index(2)) as u128) * (x9 as u128));
407 let x57: u128 = (((*IndexConst(arg1).index(2)) as u128) * (x8 as u128));
408 let x58: u128 = (((*IndexConst(arg1).index(2)) as u128) * (x15 as u128));
409 let x59: u128 = (((*IndexConst(arg1).index(2)) as u128) * (x18 as u128));
410 let x60: u128 = (((*IndexConst(arg1).index(2)) as u128) * (x19 as u128));
411 let x61: u128 = (((*IndexConst(arg1).index(2)) as u128) * ((*IndexConst(arg1).index(2)) as u128));
412 let x62: u128 = (((*IndexConst(arg1).index(1)) as u128) * (x4 as u128));
413 let x63: u128 = (((*IndexConst(arg1).index(1)) as u128) * (x3 as u128));
414 let x64: u128 = (((*IndexConst(arg1).index(1)) as u128) * (x10 as u128));
415 let x65: u128 = (((*IndexConst(arg1).index(1)) as u128) * (x15 as u128));
416 let x66: u128 = (((*IndexConst(arg1).index(1)) as u128) * (x18 as u128));
417 let x67: u128 = (((*IndexConst(arg1).index(1)) as u128) * (x19 as u128));
418 let x68: u128 = (((*IndexConst(arg1).index(1)) as u128) * (x20 as u128));
419 let x69: u128 = (((*IndexConst(arg1).index(1)) as u128) * ((*IndexConst(arg1).index(1)) as u128));
420 let x70: u128 = (((*IndexConst(arg1).index(0)) as u128) * (x5 as u128));
421 let x71: u128 = (((*IndexConst(arg1).index(0)) as u128) * (x10 as u128));
422 let x72: u128 = (((*IndexConst(arg1).index(0)) as u128) * (x15 as u128));
423 let x73: u128 = (((*IndexConst(arg1).index(0)) as u128) * (x18 as u128));
424 let x74: u128 = (((*IndexConst(arg1).index(0)) as u128) * (x19 as u128));
425 let x75: u128 = (((*IndexConst(arg1).index(0)) as u128) * (x20 as u128));
426 let x76: u128 = (((*IndexConst(arg1).index(0)) as u128) * (x21 as u128));
427 let x77: u128 = (((*IndexConst(arg1).index(0)) as u128) * ((*IndexConst(arg1).index(0)) as u128));
428 let x78: u128 = (x74 + (x68 + (x38 + x34)));
429 let x79: u64 = ((x78 >> 56) as u64);
430 let x80: u64 = ((x78 & (0xffffffffffffff as u128)) as u64);
431 let x81: u128 = (x70 + (x64 + (x58 + (x52 + (x39 + x35)))));
432 let x82: u128 = (x71 + (x65 + (x59 + (x53 + (x47 + (x41 + (x37 + (x30 + x26))))))));
433 let x83: u128 = (x72 + (x66 + (x60 + (x55 + (x49 + (x43 + (x31 + x27)))))));
434 let x84: u128 = (x73 + (x67 + (x63 + (x61 + (x57 + (x51 + (x45 + (x33 + (x32 + (x29 + x28))))))))));
435 let x85: u128 = (x75 + (x69 + (x46 + (x40 + (x36 + x22)))));
436 let x86: u128 = (x76 + (x54 + (x48 + (x42 + x23))));
437 let x87: u128 = (x77 + (x62 + (x56 + (x50 + (x44 + (x25 + x24))))));
438 let x88: u128 = ((x79 as u128) + x84);
439 let x89: u64 = ((x81 >> 56) as u64);
440 let x90: u64 = ((x81 & (0xffffffffffffff as u128)) as u64);
441 let x91: u128 = (x88 + (x89 as u128));
442 let x92: u64 = ((x91 >> 56) as u64);
443 let x93: u64 = ((x91 & (0xffffffffffffff as u128)) as u64);
444 let x94: u128 = (x87 + (x89 as u128));
445 let x95: u128 = ((x92 as u128) + x83);
446 let x96: u64 = ((x94 >> 56) as u64);
447 let x97: u64 = ((x94 & (0xffffffffffffff as u128)) as u64);
448 let x98: u128 = ((x96 as u128) + x86);
449 let x99: u64 = ((x95 >> 56) as u64);
450 let x100: u64 = ((x95 & (0xffffffffffffff as u128)) as u64);
451 let x101: u128 = ((x99 as u128) + x82);
452 let x102: u64 = ((x98 >> 56) as u64);
453 let x103: u64 = ((x98 & (0xffffffffffffff as u128)) as u64);
454 let x104: u128 = ((x102 as u128) + x85);
455 let x105: u64 = ((x101 >> 56) as u64);
456 let x106: u64 = ((x101 & (0xffffffffffffff as u128)) as u64);
457 let x107: u64 = (x105 + x90);
458 let x108: u64 = ((x104 >> 56) as u64);
459 let x109: u64 = ((x104 & (0xffffffffffffff as u128)) as u64);
460 let x110: u64 = (x108 + x80);
461 let x111: u64 = (x107 >> 56);
462 let x112: u64 = (x107 & 0xffffffffffffff);
463 let x113: u64 = (x110 >> 56);
464 let x114: u64 = (x110 & 0xffffffffffffff);
465 let x115: u64 = (x93 + x111);
466 let x116: u64 = (x97 + x111);
467 let x117: u64 = (x113 + x115);
468 let x118: fiat_p448_u1 = ((x117 >> 56) as fiat_p448_u1);
469 let x119: u64 = (x117 & 0xffffffffffffff);
470 let x120: u64 = ((x118 as u64) + x100);
471 let x121: fiat_p448_u1 = ((x116 >> 56) as fiat_p448_u1);
472 let x122: u64 = (x116 & 0xffffffffffffff);
473 let x123: u64 = ((x121 as u64) + x103);
474 *IndexConst(&mut out1).index_mut(0) = x122;
475 *IndexConst(&mut out1).index_mut(1) = x123;
476 *IndexConst(&mut out1).index_mut(2) = x109;
477 *IndexConst(&mut out1).index_mut(3) = x114;
478 *IndexConst(&mut out1).index_mut(4) = x119;
479 *IndexConst(&mut out1).index_mut(5) = x120;
480 *IndexConst(&mut out1).index_mut(6) = x106;
481 *IndexConst(&mut out1).index_mut(7) = x112;
482}
483
484#[inline]
490pub const fn fiat_p448_carry(mut out1: &mut fiat_p448_tight_field_element, arg1: &fiat_p448_loose_field_element) {
491 let x1: u64 = (*IndexConst(arg1).index(3));
492 let x2: u64 = (*IndexConst(arg1).index(7));
493 let x3: u64 = (x2 >> 56);
494 let x4: u64 = (((x1 >> 56) + (*IndexConst(arg1).index(4))) + x3);
495 let x5: u64 = ((*IndexConst(arg1).index(0)) + x3);
496 let x6: u64 = ((x4 >> 56) + (*IndexConst(arg1).index(5)));
497 let x7: u64 = ((x5 >> 56) + (*IndexConst(arg1).index(1)));
498 let x8: u64 = ((x6 >> 56) + (*IndexConst(arg1).index(6)));
499 let x9: u64 = ((x7 >> 56) + (*IndexConst(arg1).index(2)));
500 let x10: u64 = ((x8 >> 56) + (x2 & 0xffffffffffffff));
501 let x11: u64 = ((x9 >> 56) + (x1 & 0xffffffffffffff));
502 let x12: fiat_p448_u1 = ((x10 >> 56) as fiat_p448_u1);
503 let x13: u64 = ((x5 & 0xffffffffffffff) + (x12 as u64));
504 let x14: u64 = ((((x11 >> 56) as fiat_p448_u1) as u64) + ((x4 & 0xffffffffffffff) + (x12 as u64)));
505 let x15: u64 = (x13 & 0xffffffffffffff);
506 let x16: u64 = ((((x13 >> 56) as fiat_p448_u1) as u64) + (x7 & 0xffffffffffffff));
507 let x17: u64 = (x9 & 0xffffffffffffff);
508 let x18: u64 = (x11 & 0xffffffffffffff);
509 let x19: u64 = (x14 & 0xffffffffffffff);
510 let x20: u64 = ((((x14 >> 56) as fiat_p448_u1) as u64) + (x6 & 0xffffffffffffff));
511 let x21: u64 = (x8 & 0xffffffffffffff);
512 let x22: u64 = (x10 & 0xffffffffffffff);
513 *IndexConst(&mut out1).index_mut(0) = x15;
514 *IndexConst(&mut out1).index_mut(1) = x16;
515 *IndexConst(&mut out1).index_mut(2) = x17;
516 *IndexConst(&mut out1).index_mut(3) = x18;
517 *IndexConst(&mut out1).index_mut(4) = x19;
518 *IndexConst(&mut out1).index_mut(5) = x20;
519 *IndexConst(&mut out1).index_mut(6) = x21;
520 *IndexConst(&mut out1).index_mut(7) = x22;
521}
522
523#[inline]
529pub const fn fiat_p448_add(mut out1: &mut fiat_p448_loose_field_element, arg1: &fiat_p448_tight_field_element, arg2: &fiat_p448_tight_field_element) {
530 let x1: u64 = ((*IndexConst(arg1).index(0)) + (*IndexConst(arg2).index(0)));
531 let x2: u64 = ((*IndexConst(arg1).index(1)) + (*IndexConst(arg2).index(1)));
532 let x3: u64 = ((*IndexConst(arg1).index(2)) + (*IndexConst(arg2).index(2)));
533 let x4: u64 = ((*IndexConst(arg1).index(3)) + (*IndexConst(arg2).index(3)));
534 let x5: u64 = ((*IndexConst(arg1).index(4)) + (*IndexConst(arg2).index(4)));
535 let x6: u64 = ((*IndexConst(arg1).index(5)) + (*IndexConst(arg2).index(5)));
536 let x7: u64 = ((*IndexConst(arg1).index(6)) + (*IndexConst(arg2).index(6)));
537 let x8: u64 = ((*IndexConst(arg1).index(7)) + (*IndexConst(arg2).index(7)));
538 *IndexConst(&mut out1).index_mut(0) = x1;
539 *IndexConst(&mut out1).index_mut(1) = x2;
540 *IndexConst(&mut out1).index_mut(2) = x3;
541 *IndexConst(&mut out1).index_mut(3) = x4;
542 *IndexConst(&mut out1).index_mut(4) = x5;
543 *IndexConst(&mut out1).index_mut(5) = x6;
544 *IndexConst(&mut out1).index_mut(6) = x7;
545 *IndexConst(&mut out1).index_mut(7) = x8;
546}
547
548#[inline]
554pub const fn fiat_p448_sub(mut out1: &mut fiat_p448_loose_field_element, arg1: &fiat_p448_tight_field_element, arg2: &fiat_p448_tight_field_element) {
555 let x1: u64 = ((0x1fffffffffffffe + (*IndexConst(arg1).index(0))) - (*IndexConst(arg2).index(0)));
556 let x2: u64 = ((0x1fffffffffffffe + (*IndexConst(arg1).index(1))) - (*IndexConst(arg2).index(1)));
557 let x3: u64 = ((0x1fffffffffffffe + (*IndexConst(arg1).index(2))) - (*IndexConst(arg2).index(2)));
558 let x4: u64 = ((0x1fffffffffffffe + (*IndexConst(arg1).index(3))) - (*IndexConst(arg2).index(3)));
559 let x5: u64 = ((0x1fffffffffffffc + (*IndexConst(arg1).index(4))) - (*IndexConst(arg2).index(4)));
560 let x6: u64 = ((0x1fffffffffffffe + (*IndexConst(arg1).index(5))) - (*IndexConst(arg2).index(5)));
561 let x7: u64 = ((0x1fffffffffffffe + (*IndexConst(arg1).index(6))) - (*IndexConst(arg2).index(6)));
562 let x8: u64 = ((0x1fffffffffffffe + (*IndexConst(arg1).index(7))) - (*IndexConst(arg2).index(7)));
563 *IndexConst(&mut out1).index_mut(0) = x1;
564 *IndexConst(&mut out1).index_mut(1) = x2;
565 *IndexConst(&mut out1).index_mut(2) = x3;
566 *IndexConst(&mut out1).index_mut(3) = x4;
567 *IndexConst(&mut out1).index_mut(4) = x5;
568 *IndexConst(&mut out1).index_mut(5) = x6;
569 *IndexConst(&mut out1).index_mut(6) = x7;
570 *IndexConst(&mut out1).index_mut(7) = x8;
571}
572
573#[inline]
579pub const fn fiat_p448_opp(mut out1: &mut fiat_p448_loose_field_element, arg1: &fiat_p448_tight_field_element) {
580 let x1: u64 = (0x1fffffffffffffe - (*IndexConst(arg1).index(0)));
581 let x2: u64 = (0x1fffffffffffffe - (*IndexConst(arg1).index(1)));
582 let x3: u64 = (0x1fffffffffffffe - (*IndexConst(arg1).index(2)));
583 let x4: u64 = (0x1fffffffffffffe - (*IndexConst(arg1).index(3)));
584 let x5: u64 = (0x1fffffffffffffc - (*IndexConst(arg1).index(4)));
585 let x6: u64 = (0x1fffffffffffffe - (*IndexConst(arg1).index(5)));
586 let x7: u64 = (0x1fffffffffffffe - (*IndexConst(arg1).index(6)));
587 let x8: u64 = (0x1fffffffffffffe - (*IndexConst(arg1).index(7)));
588 *IndexConst(&mut out1).index_mut(0) = x1;
589 *IndexConst(&mut out1).index_mut(1) = x2;
590 *IndexConst(&mut out1).index_mut(2) = x3;
591 *IndexConst(&mut out1).index_mut(3) = x4;
592 *IndexConst(&mut out1).index_mut(4) = x5;
593 *IndexConst(&mut out1).index_mut(5) = x6;
594 *IndexConst(&mut out1).index_mut(6) = x7;
595 *IndexConst(&mut out1).index_mut(7) = x8;
596}
597
598#[inline]
610pub const fn fiat_p448_selectznz(mut out1: &mut [u64; 8], arg1: fiat_p448_u1, arg2: &[u64; 8], arg3: &[u64; 8]) {
611 let mut x1: u64 = 0;
612 fiat_p448_cmovznz_u64(&mut x1, arg1, (*IndexConst(arg2).index(0)), (*IndexConst(arg3).index(0)));
613 let mut x2: u64 = 0;
614 fiat_p448_cmovznz_u64(&mut x2, arg1, (*IndexConst(arg2).index(1)), (*IndexConst(arg3).index(1)));
615 let mut x3: u64 = 0;
616 fiat_p448_cmovznz_u64(&mut x3, arg1, (*IndexConst(arg2).index(2)), (*IndexConst(arg3).index(2)));
617 let mut x4: u64 = 0;
618 fiat_p448_cmovznz_u64(&mut x4, arg1, (*IndexConst(arg2).index(3)), (*IndexConst(arg3).index(3)));
619 let mut x5: u64 = 0;
620 fiat_p448_cmovznz_u64(&mut x5, arg1, (*IndexConst(arg2).index(4)), (*IndexConst(arg3).index(4)));
621 let mut x6: u64 = 0;
622 fiat_p448_cmovznz_u64(&mut x6, arg1, (*IndexConst(arg2).index(5)), (*IndexConst(arg3).index(5)));
623 let mut x7: u64 = 0;
624 fiat_p448_cmovznz_u64(&mut x7, arg1, (*IndexConst(arg2).index(6)), (*IndexConst(arg3).index(6)));
625 let mut x8: u64 = 0;
626 fiat_p448_cmovznz_u64(&mut x8, arg1, (*IndexConst(arg2).index(7)), (*IndexConst(arg3).index(7)));
627 *IndexConst(&mut out1).index_mut(0) = x1;
628 *IndexConst(&mut out1).index_mut(1) = x2;
629 *IndexConst(&mut out1).index_mut(2) = x3;
630 *IndexConst(&mut out1).index_mut(3) = x4;
631 *IndexConst(&mut out1).index_mut(4) = x5;
632 *IndexConst(&mut out1).index_mut(5) = x6;
633 *IndexConst(&mut out1).index_mut(6) = x7;
634 *IndexConst(&mut out1).index_mut(7) = x8;
635}
636
637#[inline]
645pub const fn fiat_p448_to_bytes(mut out1: &mut [u8; 56], arg1: &fiat_p448_tight_field_element) {
646 let mut x1: u64 = 0;
647 let mut x2: fiat_p448_u1 = 0;
648 fiat_p448_subborrowx_u56(&mut x1, &mut x2, 0x0, (*IndexConst(arg1).index(0)), 0xffffffffffffff);
649 let mut x3: u64 = 0;
650 let mut x4: fiat_p448_u1 = 0;
651 fiat_p448_subborrowx_u56(&mut x3, &mut x4, x2, (*IndexConst(arg1).index(1)), 0xffffffffffffff);
652 let mut x5: u64 = 0;
653 let mut x6: fiat_p448_u1 = 0;
654 fiat_p448_subborrowx_u56(&mut x5, &mut x6, x4, (*IndexConst(arg1).index(2)), 0xffffffffffffff);
655 let mut x7: u64 = 0;
656 let mut x8: fiat_p448_u1 = 0;
657 fiat_p448_subborrowx_u56(&mut x7, &mut x8, x6, (*IndexConst(arg1).index(3)), 0xffffffffffffff);
658 let mut x9: u64 = 0;
659 let mut x10: fiat_p448_u1 = 0;
660 fiat_p448_subborrowx_u56(&mut x9, &mut x10, x8, (*IndexConst(arg1).index(4)), 0xfffffffffffffe);
661 let mut x11: u64 = 0;
662 let mut x12: fiat_p448_u1 = 0;
663 fiat_p448_subborrowx_u56(&mut x11, &mut x12, x10, (*IndexConst(arg1).index(5)), 0xffffffffffffff);
664 let mut x13: u64 = 0;
665 let mut x14: fiat_p448_u1 = 0;
666 fiat_p448_subborrowx_u56(&mut x13, &mut x14, x12, (*IndexConst(arg1).index(6)), 0xffffffffffffff);
667 let mut x15: u64 = 0;
668 let mut x16: fiat_p448_u1 = 0;
669 fiat_p448_subborrowx_u56(&mut x15, &mut x16, x14, (*IndexConst(arg1).index(7)), 0xffffffffffffff);
670 let mut x17: u64 = 0;
671 fiat_p448_cmovznz_u64(&mut x17, x16, (0x0 as u64), 0xffffffffffffffff);
672 let mut x18: u64 = 0;
673 let mut x19: fiat_p448_u1 = 0;
674 fiat_p448_addcarryx_u56(&mut x18, &mut x19, 0x0, x1, (x17 & 0xffffffffffffff));
675 let mut x20: u64 = 0;
676 let mut x21: fiat_p448_u1 = 0;
677 fiat_p448_addcarryx_u56(&mut x20, &mut x21, x19, x3, (x17 & 0xffffffffffffff));
678 let mut x22: u64 = 0;
679 let mut x23: fiat_p448_u1 = 0;
680 fiat_p448_addcarryx_u56(&mut x22, &mut x23, x21, x5, (x17 & 0xffffffffffffff));
681 let mut x24: u64 = 0;
682 let mut x25: fiat_p448_u1 = 0;
683 fiat_p448_addcarryx_u56(&mut x24, &mut x25, x23, x7, (x17 & 0xffffffffffffff));
684 let mut x26: u64 = 0;
685 let mut x27: fiat_p448_u1 = 0;
686 fiat_p448_addcarryx_u56(&mut x26, &mut x27, x25, x9, (x17 & 0xfffffffffffffe));
687 let mut x28: u64 = 0;
688 let mut x29: fiat_p448_u1 = 0;
689 fiat_p448_addcarryx_u56(&mut x28, &mut x29, x27, x11, (x17 & 0xffffffffffffff));
690 let mut x30: u64 = 0;
691 let mut x31: fiat_p448_u1 = 0;
692 fiat_p448_addcarryx_u56(&mut x30, &mut x31, x29, x13, (x17 & 0xffffffffffffff));
693 let mut x32: u64 = 0;
694 let mut x33: fiat_p448_u1 = 0;
695 fiat_p448_addcarryx_u56(&mut x32, &mut x33, x31, x15, (x17 & 0xffffffffffffff));
696 let x34: u8 = ((x18 & (0xff as u64)) as u8);
697 let x35: u64 = (x18 >> 8);
698 let x36: u8 = ((x35 & (0xff as u64)) as u8);
699 let x37: u64 = (x35 >> 8);
700 let x38: u8 = ((x37 & (0xff as u64)) as u8);
701 let x39: u64 = (x37 >> 8);
702 let x40: u8 = ((x39 & (0xff as u64)) as u8);
703 let x41: u64 = (x39 >> 8);
704 let x42: u8 = ((x41 & (0xff as u64)) as u8);
705 let x43: u64 = (x41 >> 8);
706 let x44: u8 = ((x43 & (0xff as u64)) as u8);
707 let x45: u8 = ((x43 >> 8) as u8);
708 let x46: u8 = ((x20 & (0xff as u64)) as u8);
709 let x47: u64 = (x20 >> 8);
710 let x48: u8 = ((x47 & (0xff as u64)) as u8);
711 let x49: u64 = (x47 >> 8);
712 let x50: u8 = ((x49 & (0xff as u64)) as u8);
713 let x51: u64 = (x49 >> 8);
714 let x52: u8 = ((x51 & (0xff as u64)) as u8);
715 let x53: u64 = (x51 >> 8);
716 let x54: u8 = ((x53 & (0xff as u64)) as u8);
717 let x55: u64 = (x53 >> 8);
718 let x56: u8 = ((x55 & (0xff as u64)) as u8);
719 let x57: u8 = ((x55 >> 8) as u8);
720 let x58: u8 = ((x22 & (0xff as u64)) as u8);
721 let x59: u64 = (x22 >> 8);
722 let x60: u8 = ((x59 & (0xff as u64)) as u8);
723 let x61: u64 = (x59 >> 8);
724 let x62: u8 = ((x61 & (0xff as u64)) as u8);
725 let x63: u64 = (x61 >> 8);
726 let x64: u8 = ((x63 & (0xff as u64)) as u8);
727 let x65: u64 = (x63 >> 8);
728 let x66: u8 = ((x65 & (0xff as u64)) as u8);
729 let x67: u64 = (x65 >> 8);
730 let x68: u8 = ((x67 & (0xff as u64)) as u8);
731 let x69: u8 = ((x67 >> 8) as u8);
732 let x70: u8 = ((x24 & (0xff as u64)) as u8);
733 let x71: u64 = (x24 >> 8);
734 let x72: u8 = ((x71 & (0xff as u64)) as u8);
735 let x73: u64 = (x71 >> 8);
736 let x74: u8 = ((x73 & (0xff as u64)) as u8);
737 let x75: u64 = (x73 >> 8);
738 let x76: u8 = ((x75 & (0xff as u64)) as u8);
739 let x77: u64 = (x75 >> 8);
740 let x78: u8 = ((x77 & (0xff as u64)) as u8);
741 let x79: u64 = (x77 >> 8);
742 let x80: u8 = ((x79 & (0xff as u64)) as u8);
743 let x81: u8 = ((x79 >> 8) as u8);
744 let x82: u8 = ((x26 & (0xff as u64)) as u8);
745 let x83: u64 = (x26 >> 8);
746 let x84: u8 = ((x83 & (0xff as u64)) as u8);
747 let x85: u64 = (x83 >> 8);
748 let x86: u8 = ((x85 & (0xff as u64)) as u8);
749 let x87: u64 = (x85 >> 8);
750 let x88: u8 = ((x87 & (0xff as u64)) as u8);
751 let x89: u64 = (x87 >> 8);
752 let x90: u8 = ((x89 & (0xff as u64)) as u8);
753 let x91: u64 = (x89 >> 8);
754 let x92: u8 = ((x91 & (0xff as u64)) as u8);
755 let x93: u8 = ((x91 >> 8) as u8);
756 let x94: u8 = ((x28 & (0xff as u64)) as u8);
757 let x95: u64 = (x28 >> 8);
758 let x96: u8 = ((x95 & (0xff as u64)) as u8);
759 let x97: u64 = (x95 >> 8);
760 let x98: u8 = ((x97 & (0xff as u64)) as u8);
761 let x99: u64 = (x97 >> 8);
762 let x100: u8 = ((x99 & (0xff as u64)) as u8);
763 let x101: u64 = (x99 >> 8);
764 let x102: u8 = ((x101 & (0xff as u64)) as u8);
765 let x103: u64 = (x101 >> 8);
766 let x104: u8 = ((x103 & (0xff as u64)) as u8);
767 let x105: u8 = ((x103 >> 8) as u8);
768 let x106: u8 = ((x30 & (0xff as u64)) as u8);
769 let x107: u64 = (x30 >> 8);
770 let x108: u8 = ((x107 & (0xff as u64)) as u8);
771 let x109: u64 = (x107 >> 8);
772 let x110: u8 = ((x109 & (0xff as u64)) as u8);
773 let x111: u64 = (x109 >> 8);
774 let x112: u8 = ((x111 & (0xff as u64)) as u8);
775 let x113: u64 = (x111 >> 8);
776 let x114: u8 = ((x113 & (0xff as u64)) as u8);
777 let x115: u64 = (x113 >> 8);
778 let x116: u8 = ((x115 & (0xff as u64)) as u8);
779 let x117: u8 = ((x115 >> 8) as u8);
780 let x118: u8 = ((x32 & (0xff as u64)) as u8);
781 let x119: u64 = (x32 >> 8);
782 let x120: u8 = ((x119 & (0xff as u64)) as u8);
783 let x121: u64 = (x119 >> 8);
784 let x122: u8 = ((x121 & (0xff as u64)) as u8);
785 let x123: u64 = (x121 >> 8);
786 let x124: u8 = ((x123 & (0xff as u64)) as u8);
787 let x125: u64 = (x123 >> 8);
788 let x126: u8 = ((x125 & (0xff as u64)) as u8);
789 let x127: u64 = (x125 >> 8);
790 let x128: u8 = ((x127 & (0xff as u64)) as u8);
791 let x129: u8 = ((x127 >> 8) as u8);
792 *IndexConst(&mut out1).index_mut(0) = x34;
793 *IndexConst(&mut out1).index_mut(1) = x36;
794 *IndexConst(&mut out1).index_mut(2) = x38;
795 *IndexConst(&mut out1).index_mut(3) = x40;
796 *IndexConst(&mut out1).index_mut(4) = x42;
797 *IndexConst(&mut out1).index_mut(5) = x44;
798 *IndexConst(&mut out1).index_mut(6) = x45;
799 *IndexConst(&mut out1).index_mut(7) = x46;
800 *IndexConst(&mut out1).index_mut(8) = x48;
801 *IndexConst(&mut out1).index_mut(9) = x50;
802 *IndexConst(&mut out1).index_mut(10) = x52;
803 *IndexConst(&mut out1).index_mut(11) = x54;
804 *IndexConst(&mut out1).index_mut(12) = x56;
805 *IndexConst(&mut out1).index_mut(13) = x57;
806 *IndexConst(&mut out1).index_mut(14) = x58;
807 *IndexConst(&mut out1).index_mut(15) = x60;
808 *IndexConst(&mut out1).index_mut(16) = x62;
809 *IndexConst(&mut out1).index_mut(17) = x64;
810 *IndexConst(&mut out1).index_mut(18) = x66;
811 *IndexConst(&mut out1).index_mut(19) = x68;
812 *IndexConst(&mut out1).index_mut(20) = x69;
813 *IndexConst(&mut out1).index_mut(21) = x70;
814 *IndexConst(&mut out1).index_mut(22) = x72;
815 *IndexConst(&mut out1).index_mut(23) = x74;
816 *IndexConst(&mut out1).index_mut(24) = x76;
817 *IndexConst(&mut out1).index_mut(25) = x78;
818 *IndexConst(&mut out1).index_mut(26) = x80;
819 *IndexConst(&mut out1).index_mut(27) = x81;
820 *IndexConst(&mut out1).index_mut(28) = x82;
821 *IndexConst(&mut out1).index_mut(29) = x84;
822 *IndexConst(&mut out1).index_mut(30) = x86;
823 *IndexConst(&mut out1).index_mut(31) = x88;
824 *IndexConst(&mut out1).index_mut(32) = x90;
825 *IndexConst(&mut out1).index_mut(33) = x92;
826 *IndexConst(&mut out1).index_mut(34) = x93;
827 *IndexConst(&mut out1).index_mut(35) = x94;
828 *IndexConst(&mut out1).index_mut(36) = x96;
829 *IndexConst(&mut out1).index_mut(37) = x98;
830 *IndexConst(&mut out1).index_mut(38) = x100;
831 *IndexConst(&mut out1).index_mut(39) = x102;
832 *IndexConst(&mut out1).index_mut(40) = x104;
833 *IndexConst(&mut out1).index_mut(41) = x105;
834 *IndexConst(&mut out1).index_mut(42) = x106;
835 *IndexConst(&mut out1).index_mut(43) = x108;
836 *IndexConst(&mut out1).index_mut(44) = x110;
837 *IndexConst(&mut out1).index_mut(45) = x112;
838 *IndexConst(&mut out1).index_mut(46) = x114;
839 *IndexConst(&mut out1).index_mut(47) = x116;
840 *IndexConst(&mut out1).index_mut(48) = x117;
841 *IndexConst(&mut out1).index_mut(49) = x118;
842 *IndexConst(&mut out1).index_mut(50) = x120;
843 *IndexConst(&mut out1).index_mut(51) = x122;
844 *IndexConst(&mut out1).index_mut(52) = x124;
845 *IndexConst(&mut out1).index_mut(53) = x126;
846 *IndexConst(&mut out1).index_mut(54) = x128;
847 *IndexConst(&mut out1).index_mut(55) = x129;
848}
849
850#[inline]
858pub const fn fiat_p448_from_bytes(mut out1: &mut fiat_p448_tight_field_element, arg1: &[u8; 56]) {
859 let x1: u64 = (((*IndexConst(arg1).index(55)) as u64) << 48);
860 let x2: u64 = (((*IndexConst(arg1).index(54)) as u64) << 40);
861 let x3: u64 = (((*IndexConst(arg1).index(53)) as u64) << 32);
862 let x4: u64 = (((*IndexConst(arg1).index(52)) as u64) << 24);
863 let x5: u64 = (((*IndexConst(arg1).index(51)) as u64) << 16);
864 let x6: u64 = (((*IndexConst(arg1).index(50)) as u64) << 8);
865 let x7: u8 = (*IndexConst(arg1).index(49));
866 let x8: u64 = (((*IndexConst(arg1).index(48)) as u64) << 48);
867 let x9: u64 = (((*IndexConst(arg1).index(47)) as u64) << 40);
868 let x10: u64 = (((*IndexConst(arg1).index(46)) as u64) << 32);
869 let x11: u64 = (((*IndexConst(arg1).index(45)) as u64) << 24);
870 let x12: u64 = (((*IndexConst(arg1).index(44)) as u64) << 16);
871 let x13: u64 = (((*IndexConst(arg1).index(43)) as u64) << 8);
872 let x14: u8 = (*IndexConst(arg1).index(42));
873 let x15: u64 = (((*IndexConst(arg1).index(41)) as u64) << 48);
874 let x16: u64 = (((*IndexConst(arg1).index(40)) as u64) << 40);
875 let x17: u64 = (((*IndexConst(arg1).index(39)) as u64) << 32);
876 let x18: u64 = (((*IndexConst(arg1).index(38)) as u64) << 24);
877 let x19: u64 = (((*IndexConst(arg1).index(37)) as u64) << 16);
878 let x20: u64 = (((*IndexConst(arg1).index(36)) as u64) << 8);
879 let x21: u8 = (*IndexConst(arg1).index(35));
880 let x22: u64 = (((*IndexConst(arg1).index(34)) as u64) << 48);
881 let x23: u64 = (((*IndexConst(arg1).index(33)) as u64) << 40);
882 let x24: u64 = (((*IndexConst(arg1).index(32)) as u64) << 32);
883 let x25: u64 = (((*IndexConst(arg1).index(31)) as u64) << 24);
884 let x26: u64 = (((*IndexConst(arg1).index(30)) as u64) << 16);
885 let x27: u64 = (((*IndexConst(arg1).index(29)) as u64) << 8);
886 let x28: u8 = (*IndexConst(arg1).index(28));
887 let x29: u64 = (((*IndexConst(arg1).index(27)) as u64) << 48);
888 let x30: u64 = (((*IndexConst(arg1).index(26)) as u64) << 40);
889 let x31: u64 = (((*IndexConst(arg1).index(25)) as u64) << 32);
890 let x32: u64 = (((*IndexConst(arg1).index(24)) as u64) << 24);
891 let x33: u64 = (((*IndexConst(arg1).index(23)) as u64) << 16);
892 let x34: u64 = (((*IndexConst(arg1).index(22)) as u64) << 8);
893 let x35: u8 = (*IndexConst(arg1).index(21));
894 let x36: u64 = (((*IndexConst(arg1).index(20)) as u64) << 48);
895 let x37: u64 = (((*IndexConst(arg1).index(19)) as u64) << 40);
896 let x38: u64 = (((*IndexConst(arg1).index(18)) as u64) << 32);
897 let x39: u64 = (((*IndexConst(arg1).index(17)) as u64) << 24);
898 let x40: u64 = (((*IndexConst(arg1).index(16)) as u64) << 16);
899 let x41: u64 = (((*IndexConst(arg1).index(15)) as u64) << 8);
900 let x42: u8 = (*IndexConst(arg1).index(14));
901 let x43: u64 = (((*IndexConst(arg1).index(13)) as u64) << 48);
902 let x44: u64 = (((*IndexConst(arg1).index(12)) as u64) << 40);
903 let x45: u64 = (((*IndexConst(arg1).index(11)) as u64) << 32);
904 let x46: u64 = (((*IndexConst(arg1).index(10)) as u64) << 24);
905 let x47: u64 = (((*IndexConst(arg1).index(9)) as u64) << 16);
906 let x48: u64 = (((*IndexConst(arg1).index(8)) as u64) << 8);
907 let x49: u8 = (*IndexConst(arg1).index(7));
908 let x50: u64 = (((*IndexConst(arg1).index(6)) as u64) << 48);
909 let x51: u64 = (((*IndexConst(arg1).index(5)) as u64) << 40);
910 let x52: u64 = (((*IndexConst(arg1).index(4)) as u64) << 32);
911 let x53: u64 = (((*IndexConst(arg1).index(3)) as u64) << 24);
912 let x54: u64 = (((*IndexConst(arg1).index(2)) as u64) << 16);
913 let x55: u64 = (((*IndexConst(arg1).index(1)) as u64) << 8);
914 let x56: u8 = (*IndexConst(arg1).index(0));
915 let x57: u64 = (x55 + (x56 as u64));
916 let x58: u64 = (x54 + x57);
917 let x59: u64 = (x53 + x58);
918 let x60: u64 = (x52 + x59);
919 let x61: u64 = (x51 + x60);
920 let x62: u64 = (x50 + x61);
921 let x63: u64 = (x48 + (x49 as u64));
922 let x64: u64 = (x47 + x63);
923 let x65: u64 = (x46 + x64);
924 let x66: u64 = (x45 + x65);
925 let x67: u64 = (x44 + x66);
926 let x68: u64 = (x43 + x67);
927 let x69: u64 = (x41 + (x42 as u64));
928 let x70: u64 = (x40 + x69);
929 let x71: u64 = (x39 + x70);
930 let x72: u64 = (x38 + x71);
931 let x73: u64 = (x37 + x72);
932 let x74: u64 = (x36 + x73);
933 let x75: u64 = (x34 + (x35 as u64));
934 let x76: u64 = (x33 + x75);
935 let x77: u64 = (x32 + x76);
936 let x78: u64 = (x31 + x77);
937 let x79: u64 = (x30 + x78);
938 let x80: u64 = (x29 + x79);
939 let x81: u64 = (x27 + (x28 as u64));
940 let x82: u64 = (x26 + x81);
941 let x83: u64 = (x25 + x82);
942 let x84: u64 = (x24 + x83);
943 let x85: u64 = (x23 + x84);
944 let x86: u64 = (x22 + x85);
945 let x87: u64 = (x20 + (x21 as u64));
946 let x88: u64 = (x19 + x87);
947 let x89: u64 = (x18 + x88);
948 let x90: u64 = (x17 + x89);
949 let x91: u64 = (x16 + x90);
950 let x92: u64 = (x15 + x91);
951 let x93: u64 = (x13 + (x14 as u64));
952 let x94: u64 = (x12 + x93);
953 let x95: u64 = (x11 + x94);
954 let x96: u64 = (x10 + x95);
955 let x97: u64 = (x9 + x96);
956 let x98: u64 = (x8 + x97);
957 let x99: u64 = (x6 + (x7 as u64));
958 let x100: u64 = (x5 + x99);
959 let x101: u64 = (x4 + x100);
960 let x102: u64 = (x3 + x101);
961 let x103: u64 = (x2 + x102);
962 let x104: u64 = (x1 + x103);
963 *IndexConst(&mut out1).index_mut(0) = x62;
964 *IndexConst(&mut out1).index_mut(1) = x68;
965 *IndexConst(&mut out1).index_mut(2) = x74;
966 *IndexConst(&mut out1).index_mut(3) = x80;
967 *IndexConst(&mut out1).index_mut(4) = x86;
968 *IndexConst(&mut out1).index_mut(5) = x92;
969 *IndexConst(&mut out1).index_mut(6) = x98;
970 *IndexConst(&mut out1).index_mut(7) = x104;
971}
972
973#[inline]
979pub const fn fiat_p448_relax(mut out1: &mut fiat_p448_loose_field_element, arg1: &fiat_p448_tight_field_element) {
980 let x1: u64 = (*IndexConst(arg1).index(0));
981 let x2: u64 = (*IndexConst(arg1).index(1));
982 let x3: u64 = (*IndexConst(arg1).index(2));
983 let x4: u64 = (*IndexConst(arg1).index(3));
984 let x5: u64 = (*IndexConst(arg1).index(4));
985 let x6: u64 = (*IndexConst(arg1).index(5));
986 let x7: u64 = (*IndexConst(arg1).index(6));
987 let x8: u64 = (*IndexConst(arg1).index(7));
988 *IndexConst(&mut out1).index_mut(0) = x1;
989 *IndexConst(&mut out1).index_mut(1) = x2;
990 *IndexConst(&mut out1).index_mut(2) = x3;
991 *IndexConst(&mut out1).index_mut(3) = x4;
992 *IndexConst(&mut out1).index_mut(4) = x5;
993 *IndexConst(&mut out1).index_mut(5) = x6;
994 *IndexConst(&mut out1).index_mut(6) = x7;
995 *IndexConst(&mut out1).index_mut(7) = x8;
996}