mte/unikernel/duniverse/mirage-crypto/ec/native/np521_64.h
2025-11-11 02:07:51 +01:00

5628 lines
187 KiB
C

/* Autogenerated: '../fiat-crypto/src/ExtractionOCaml/word_by_word_montgomery' --static --use-value-barrier --inline-internal np521 64 0x01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409 mul add opp from_montgomery to_montgomery one msat divstep_precomp divstep to_bytes from_bytes selectznz */
/* curve description: np521 */
/* machine_wordsize = 64 (from "64") */
/* requested operations: mul, add, opp, from_montgomery, to_montgomery, one, msat, divstep_precomp, divstep, to_bytes, from_bytes, selectznz */
/* m = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409 (from "0x01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409") */
/* */
/* NOTE: In addition to the bounds specified above each function, all */
/* functions synthesized for this Montgomery arithmetic require the */
/* input to be strictly less than the prime modulus (m), and also */
/* require the input to be in the unique saturated representation. */
/* All functions also ensure that these two properties are true of */
/* return values. */
/* */
/* Computed values: */
/* eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) + (z[6] << 0x180) + (z[7] << 0x1c0) + (z[8] << 2^9) */
/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) + (z[32] << 256) + (z[33] << 0x108) + (z[34] << 0x110) + (z[35] << 0x118) + (z[36] << 0x120) + (z[37] << 0x128) + (z[38] << 0x130) + (z[39] << 0x138) + (z[40] << 0x140) + (z[41] << 0x148) + (z[42] << 0x150) + (z[43] << 0x158) + (z[44] << 0x160) + (z[45] << 0x168) + (z[46] << 0x170) + (z[47] << 0x178) + (z[48] << 0x180) + (z[49] << 0x188) + (z[50] << 0x190) + (z[51] << 0x198) + (z[52] << 0x1a0) + (z[53] << 0x1a8) + (z[54] << 0x1b0) + (z[55] << 0x1b8) + (z[56] << 0x1c0) + (z[57] << 0x1c8) + (z[58] << 0x1d0) + (z[59] << 0x1d8) + (z[60] << 0x1e0) + (z[61] << 0x1e8) + (z[62] << 0x1f0) + (z[63] << 0x1f8) + (z[64] << 2^9) + (z[65] << 0x208) */
/* twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) + (z[6] << 0x180) + (z[7] << 0x1c0) + (z[8] << 2^9) in */
/* if x1 & (2^576-1) < 2^575 then x1 & (2^576-1) else (x1 & (2^576-1)) - 2^576 */
#include <stdint.h>
typedef unsigned char fiat_np521_uint1;
typedef signed char fiat_np521_int1;
#if defined(__GNUC__) || defined(__clang__)
# define FIAT_NP521_FIAT_EXTENSION __extension__
# define FIAT_NP521_FIAT_INLINE __inline__
#else
# define FIAT_NP521_FIAT_EXTENSION
# define FIAT_NP521_FIAT_INLINE
#endif
FIAT_NP521_FIAT_EXTENSION typedef signed __int128 fiat_np521_int128;
FIAT_NP521_FIAT_EXTENSION typedef unsigned __int128 fiat_np521_uint128;
/* The type fiat_np521_montgomery_domain_field_element is a field element in the Montgomery domain. */
/* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */
typedef uint64_t fiat_np521_montgomery_domain_field_element[9];
/* The type fiat_np521_non_montgomery_domain_field_element is a field element NOT in the Montgomery domain. */
/* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */
typedef uint64_t fiat_np521_non_montgomery_domain_field_element[9];
#if (-1 & 3) != 3
#error "This code only works on a two's complement system"
#endif
#if !defined(FIAT_NP521_NO_ASM) && (defined(__GNUC__) || defined(__clang__))
static __inline__ uint64_t fiat_np521_value_barrier_u64(uint64_t a) {
__asm__("" : "+r"(a) : /* no inputs */);
return a;
}
#else
# define fiat_np521_value_barrier_u64(x) (x)
#endif
/*
* The function fiat_np521_addcarryx_u64 is an addition with carry.
*
* Postconditions:
* out1 = (arg1 + arg2 + arg3) mod 2^64
* out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋
*
* Input Bounds:
* arg1: [0x0 ~> 0x1]
* arg2: [0x0 ~> 0xffffffffffffffff]
* arg3: [0x0 ~> 0xffffffffffffffff]
* Output Bounds:
* out1: [0x0 ~> 0xffffffffffffffff]
* out2: [0x0 ~> 0x1]
*/
static FIAT_NP521_FIAT_INLINE void fiat_np521_addcarryx_u64(uint64_t* out1, fiat_np521_uint1* out2, fiat_np521_uint1 arg1, uint64_t arg2, uint64_t arg3) {
fiat_np521_uint128 x1;
uint64_t x2;
fiat_np521_uint1 x3;
x1 = ((arg1 + (fiat_np521_uint128)arg2) + arg3);
x2 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff));
x3 = (fiat_np521_uint1)(x1 >> 64);
*out1 = x2;
*out2 = x3;
}
/*
* The function fiat_np521_subborrowx_u64 is a subtraction with borrow.
*
* Postconditions:
* out1 = (-arg1 + arg2 + -arg3) mod 2^64
* out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋
*
* Input Bounds:
* arg1: [0x0 ~> 0x1]
* arg2: [0x0 ~> 0xffffffffffffffff]
* arg3: [0x0 ~> 0xffffffffffffffff]
* Output Bounds:
* out1: [0x0 ~> 0xffffffffffffffff]
* out2: [0x0 ~> 0x1]
*/
static FIAT_NP521_FIAT_INLINE void fiat_np521_subborrowx_u64(uint64_t* out1, fiat_np521_uint1* out2, fiat_np521_uint1 arg1, uint64_t arg2, uint64_t arg3) {
fiat_np521_int128 x1;
fiat_np521_int1 x2;
uint64_t x3;
x1 = ((arg2 - (fiat_np521_int128)arg1) - arg3);
x2 = (fiat_np521_int1)(x1 >> 64);
x3 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff));
*out1 = x3;
*out2 = (fiat_np521_uint1)(0x0 - x2);
}
/*
* The function fiat_np521_mulx_u64 is a multiplication, returning the full double-width result.
*
* Postconditions:
* out1 = (arg1 * arg2) mod 2^64
* out2 = ⌊arg1 * arg2 / 2^64⌋
*
* Input Bounds:
* arg1: [0x0 ~> 0xffffffffffffffff]
* arg2: [0x0 ~> 0xffffffffffffffff]
* Output Bounds:
* out1: [0x0 ~> 0xffffffffffffffff]
* out2: [0x0 ~> 0xffffffffffffffff]
*/
static FIAT_NP521_FIAT_INLINE void fiat_np521_mulx_u64(uint64_t* out1, uint64_t* out2, uint64_t arg1, uint64_t arg2) {
fiat_np521_uint128 x1;
uint64_t x2;
uint64_t x3;
x1 = ((fiat_np521_uint128)arg1 * arg2);
x2 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff));
x3 = (uint64_t)(x1 >> 64);
*out1 = x2;
*out2 = x3;
}
/*
* The function fiat_np521_cmovznz_u64 is a single-word conditional move.
*
* Postconditions:
* out1 = (if arg1 = 0 then arg2 else arg3)
*
* Input Bounds:
* arg1: [0x0 ~> 0x1]
* arg2: [0x0 ~> 0xffffffffffffffff]
* arg3: [0x0 ~> 0xffffffffffffffff]
* Output Bounds:
* out1: [0x0 ~> 0xffffffffffffffff]
*/
static FIAT_NP521_FIAT_INLINE void fiat_np521_cmovznz_u64(uint64_t* out1, fiat_np521_uint1 arg1, uint64_t arg2, uint64_t arg3) {
fiat_np521_uint1 x1;
uint64_t x2;
uint64_t x3;
x1 = (!(!arg1));
x2 = ((fiat_np521_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff));
x3 = ((fiat_np521_value_barrier_u64(x2) & arg3) | (fiat_np521_value_barrier_u64((~x2)) & arg2));
*out1 = x3;
}
/*
* The function fiat_np521_mul multiplies two field elements in the Montgomery domain.
*
* Preconditions:
* 0 ≤ eval arg1 < m
* 0 ≤ eval arg2 < m
* Postconditions:
* eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m
* 0 ≤ eval out1 < m
*
*/
static void fiat_np521_mul(fiat_np521_montgomery_domain_field_element out1, const fiat_np521_montgomery_domain_field_element arg1, const fiat_np521_montgomery_domain_field_element arg2) {
uint64_t x1;
uint64_t x2;
uint64_t x3;
uint64_t x4;
uint64_t x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
uint64_t x10;
uint64_t x11;
uint64_t x12;
uint64_t x13;
uint64_t x14;
uint64_t x15;
uint64_t x16;
uint64_t x17;
uint64_t x18;
uint64_t x19;
uint64_t x20;
uint64_t x21;
uint64_t x22;
uint64_t x23;
uint64_t x24;
uint64_t x25;
uint64_t x26;
uint64_t x27;
uint64_t x28;
fiat_np521_uint1 x29;
uint64_t x30;
fiat_np521_uint1 x31;
uint64_t x32;
fiat_np521_uint1 x33;
uint64_t x34;
fiat_np521_uint1 x35;
uint64_t x36;
fiat_np521_uint1 x37;
uint64_t x38;
fiat_np521_uint1 x39;
uint64_t x40;
fiat_np521_uint1 x41;
uint64_t x42;
fiat_np521_uint1 x43;
uint64_t x44;
uint64_t x45;
uint64_t x46;
uint64_t x47;
uint64_t x48;
uint64_t x49;
uint64_t x50;
uint64_t x51;
uint64_t x52;
uint64_t x53;
uint64_t x54;
uint64_t x55;
uint64_t x56;
uint64_t x57;
uint64_t x58;
uint64_t x59;
uint64_t x60;
uint64_t x61;
uint64_t x62;
uint64_t x63;
uint64_t x64;
uint64_t x65;
fiat_np521_uint1 x66;
uint64_t x67;
fiat_np521_uint1 x68;
uint64_t x69;
fiat_np521_uint1 x70;
uint64_t x71;
fiat_np521_uint1 x72;
uint64_t x73;
fiat_np521_uint1 x74;
uint64_t x75;
fiat_np521_uint1 x76;
uint64_t x77;
fiat_np521_uint1 x78;
uint64_t x79;
fiat_np521_uint1 x80;
uint64_t x81;
uint64_t x82;
fiat_np521_uint1 x83;
uint64_t x84;
fiat_np521_uint1 x85;
uint64_t x86;
fiat_np521_uint1 x87;
uint64_t x88;
fiat_np521_uint1 x89;
uint64_t x90;
fiat_np521_uint1 x91;
uint64_t x92;
fiat_np521_uint1 x93;
uint64_t x94;
fiat_np521_uint1 x95;
uint64_t x96;
fiat_np521_uint1 x97;
uint64_t x98;
fiat_np521_uint1 x99;
uint64_t x100;
fiat_np521_uint1 x101;
uint64_t x102;
uint64_t x103;
uint64_t x104;
uint64_t x105;
uint64_t x106;
uint64_t x107;
uint64_t x108;
uint64_t x109;
uint64_t x110;
uint64_t x111;
uint64_t x112;
uint64_t x113;
uint64_t x114;
uint64_t x115;
uint64_t x116;
uint64_t x117;
uint64_t x118;
uint64_t x119;
uint64_t x120;
fiat_np521_uint1 x121;
uint64_t x122;
fiat_np521_uint1 x123;
uint64_t x124;
fiat_np521_uint1 x125;
uint64_t x126;
fiat_np521_uint1 x127;
uint64_t x128;
fiat_np521_uint1 x129;
uint64_t x130;
fiat_np521_uint1 x131;
uint64_t x132;
fiat_np521_uint1 x133;
uint64_t x134;
fiat_np521_uint1 x135;
uint64_t x136;
uint64_t x137;
fiat_np521_uint1 x138;
uint64_t x139;
fiat_np521_uint1 x140;
uint64_t x141;
fiat_np521_uint1 x142;
uint64_t x143;
fiat_np521_uint1 x144;
uint64_t x145;
fiat_np521_uint1 x146;
uint64_t x147;
fiat_np521_uint1 x148;
uint64_t x149;
fiat_np521_uint1 x150;
uint64_t x151;
fiat_np521_uint1 x152;
uint64_t x153;
fiat_np521_uint1 x154;
uint64_t x155;
fiat_np521_uint1 x156;
uint64_t x157;
uint64_t x158;
uint64_t x159;
uint64_t x160;
uint64_t x161;
uint64_t x162;
uint64_t x163;
uint64_t x164;
uint64_t x165;
uint64_t x166;
uint64_t x167;
uint64_t x168;
uint64_t x169;
uint64_t x170;
uint64_t x171;
uint64_t x172;
uint64_t x173;
uint64_t x174;
uint64_t x175;
uint64_t x176;
uint64_t x177;
fiat_np521_uint1 x178;
uint64_t x179;
fiat_np521_uint1 x180;
uint64_t x181;
fiat_np521_uint1 x182;
uint64_t x183;
fiat_np521_uint1 x184;
uint64_t x185;
fiat_np521_uint1 x186;
uint64_t x187;
fiat_np521_uint1 x188;
uint64_t x189;
fiat_np521_uint1 x190;
uint64_t x191;
fiat_np521_uint1 x192;
uint64_t x193;
uint64_t x194;
fiat_np521_uint1 x195;
uint64_t x196;
fiat_np521_uint1 x197;
uint64_t x198;
fiat_np521_uint1 x199;
uint64_t x200;
fiat_np521_uint1 x201;
uint64_t x202;
fiat_np521_uint1 x203;
uint64_t x204;
fiat_np521_uint1 x205;
uint64_t x206;
fiat_np521_uint1 x207;
uint64_t x208;
fiat_np521_uint1 x209;
uint64_t x210;
fiat_np521_uint1 x211;
uint64_t x212;
fiat_np521_uint1 x213;
uint64_t x214;
uint64_t x215;
uint64_t x216;
uint64_t x217;
uint64_t x218;
uint64_t x219;
uint64_t x220;
uint64_t x221;
uint64_t x222;
uint64_t x223;
uint64_t x224;
uint64_t x225;
uint64_t x226;
uint64_t x227;
uint64_t x228;
uint64_t x229;
uint64_t x230;
uint64_t x231;
uint64_t x232;
uint64_t x233;
fiat_np521_uint1 x234;
uint64_t x235;
fiat_np521_uint1 x236;
uint64_t x237;
fiat_np521_uint1 x238;
uint64_t x239;
fiat_np521_uint1 x240;
uint64_t x241;
fiat_np521_uint1 x242;
uint64_t x243;
fiat_np521_uint1 x244;
uint64_t x245;
fiat_np521_uint1 x246;
uint64_t x247;
fiat_np521_uint1 x248;
uint64_t x249;
uint64_t x250;
fiat_np521_uint1 x251;
uint64_t x252;
fiat_np521_uint1 x253;
uint64_t x254;
fiat_np521_uint1 x255;
uint64_t x256;
fiat_np521_uint1 x257;
uint64_t x258;
fiat_np521_uint1 x259;
uint64_t x260;
fiat_np521_uint1 x261;
uint64_t x262;
fiat_np521_uint1 x263;
uint64_t x264;
fiat_np521_uint1 x265;
uint64_t x266;
fiat_np521_uint1 x267;
uint64_t x268;
fiat_np521_uint1 x269;
uint64_t x270;
uint64_t x271;
uint64_t x272;
uint64_t x273;
uint64_t x274;
uint64_t x275;
uint64_t x276;
uint64_t x277;
uint64_t x278;
uint64_t x279;
uint64_t x280;
uint64_t x281;
uint64_t x282;
uint64_t x283;
uint64_t x284;
uint64_t x285;
uint64_t x286;
uint64_t x287;
uint64_t x288;
uint64_t x289;
uint64_t x290;
fiat_np521_uint1 x291;
uint64_t x292;
fiat_np521_uint1 x293;
uint64_t x294;
fiat_np521_uint1 x295;
uint64_t x296;
fiat_np521_uint1 x297;
uint64_t x298;
fiat_np521_uint1 x299;
uint64_t x300;
fiat_np521_uint1 x301;
uint64_t x302;
fiat_np521_uint1 x303;
uint64_t x304;
fiat_np521_uint1 x305;
uint64_t x306;
uint64_t x307;
fiat_np521_uint1 x308;
uint64_t x309;
fiat_np521_uint1 x310;
uint64_t x311;
fiat_np521_uint1 x312;
uint64_t x313;
fiat_np521_uint1 x314;
uint64_t x315;
fiat_np521_uint1 x316;
uint64_t x317;
fiat_np521_uint1 x318;
uint64_t x319;
fiat_np521_uint1 x320;
uint64_t x321;
fiat_np521_uint1 x322;
uint64_t x323;
fiat_np521_uint1 x324;
uint64_t x325;
fiat_np521_uint1 x326;
uint64_t x327;
uint64_t x328;
uint64_t x329;
uint64_t x330;
uint64_t x331;
uint64_t x332;
uint64_t x333;
uint64_t x334;
uint64_t x335;
uint64_t x336;
uint64_t x337;
uint64_t x338;
uint64_t x339;
uint64_t x340;
uint64_t x341;
uint64_t x342;
uint64_t x343;
uint64_t x344;
uint64_t x345;
uint64_t x346;
fiat_np521_uint1 x347;
uint64_t x348;
fiat_np521_uint1 x349;
uint64_t x350;
fiat_np521_uint1 x351;
uint64_t x352;
fiat_np521_uint1 x353;
uint64_t x354;
fiat_np521_uint1 x355;
uint64_t x356;
fiat_np521_uint1 x357;
uint64_t x358;
fiat_np521_uint1 x359;
uint64_t x360;
fiat_np521_uint1 x361;
uint64_t x362;
uint64_t x363;
fiat_np521_uint1 x364;
uint64_t x365;
fiat_np521_uint1 x366;
uint64_t x367;
fiat_np521_uint1 x368;
uint64_t x369;
fiat_np521_uint1 x370;
uint64_t x371;
fiat_np521_uint1 x372;
uint64_t x373;
fiat_np521_uint1 x374;
uint64_t x375;
fiat_np521_uint1 x376;
uint64_t x377;
fiat_np521_uint1 x378;
uint64_t x379;
fiat_np521_uint1 x380;
uint64_t x381;
fiat_np521_uint1 x382;
uint64_t x383;
uint64_t x384;
uint64_t x385;
uint64_t x386;
uint64_t x387;
uint64_t x388;
uint64_t x389;
uint64_t x390;
uint64_t x391;
uint64_t x392;
uint64_t x393;
uint64_t x394;
uint64_t x395;
uint64_t x396;
uint64_t x397;
uint64_t x398;
uint64_t x399;
uint64_t x400;
uint64_t x401;
uint64_t x402;
uint64_t x403;
fiat_np521_uint1 x404;
uint64_t x405;
fiat_np521_uint1 x406;
uint64_t x407;
fiat_np521_uint1 x408;
uint64_t x409;
fiat_np521_uint1 x410;
uint64_t x411;
fiat_np521_uint1 x412;
uint64_t x413;
fiat_np521_uint1 x414;
uint64_t x415;
fiat_np521_uint1 x416;
uint64_t x417;
fiat_np521_uint1 x418;
uint64_t x419;
uint64_t x420;
fiat_np521_uint1 x421;
uint64_t x422;
fiat_np521_uint1 x423;
uint64_t x424;
fiat_np521_uint1 x425;
uint64_t x426;
fiat_np521_uint1 x427;
uint64_t x428;
fiat_np521_uint1 x429;
uint64_t x430;
fiat_np521_uint1 x431;
uint64_t x432;
fiat_np521_uint1 x433;
uint64_t x434;
fiat_np521_uint1 x435;
uint64_t x436;
fiat_np521_uint1 x437;
uint64_t x438;
fiat_np521_uint1 x439;
uint64_t x440;
uint64_t x441;
uint64_t x442;
uint64_t x443;
uint64_t x444;
uint64_t x445;
uint64_t x446;
uint64_t x447;
uint64_t x448;
uint64_t x449;
uint64_t x450;
uint64_t x451;
uint64_t x452;
uint64_t x453;
uint64_t x454;
uint64_t x455;
uint64_t x456;
uint64_t x457;
uint64_t x458;
uint64_t x459;
fiat_np521_uint1 x460;
uint64_t x461;
fiat_np521_uint1 x462;
uint64_t x463;
fiat_np521_uint1 x464;
uint64_t x465;
fiat_np521_uint1 x466;
uint64_t x467;
fiat_np521_uint1 x468;
uint64_t x469;
fiat_np521_uint1 x470;
uint64_t x471;
fiat_np521_uint1 x472;
uint64_t x473;
fiat_np521_uint1 x474;
uint64_t x475;
uint64_t x476;
fiat_np521_uint1 x477;
uint64_t x478;
fiat_np521_uint1 x479;
uint64_t x480;
fiat_np521_uint1 x481;
uint64_t x482;
fiat_np521_uint1 x483;
uint64_t x484;
fiat_np521_uint1 x485;
uint64_t x486;
fiat_np521_uint1 x487;
uint64_t x488;
fiat_np521_uint1 x489;
uint64_t x490;
fiat_np521_uint1 x491;
uint64_t x492;
fiat_np521_uint1 x493;
uint64_t x494;
fiat_np521_uint1 x495;
uint64_t x496;
uint64_t x497;
uint64_t x498;
uint64_t x499;
uint64_t x500;
uint64_t x501;
uint64_t x502;
uint64_t x503;
uint64_t x504;
uint64_t x505;
uint64_t x506;
uint64_t x507;
uint64_t x508;
uint64_t x509;
uint64_t x510;
uint64_t x511;
uint64_t x512;
uint64_t x513;
uint64_t x514;
uint64_t x515;
uint64_t x516;
fiat_np521_uint1 x517;
uint64_t x518;
fiat_np521_uint1 x519;
uint64_t x520;
fiat_np521_uint1 x521;
uint64_t x522;
fiat_np521_uint1 x523;
uint64_t x524;
fiat_np521_uint1 x525;
uint64_t x526;
fiat_np521_uint1 x527;
uint64_t x528;
fiat_np521_uint1 x529;
uint64_t x530;
fiat_np521_uint1 x531;
uint64_t x532;
uint64_t x533;
fiat_np521_uint1 x534;
uint64_t x535;
fiat_np521_uint1 x536;
uint64_t x537;
fiat_np521_uint1 x538;
uint64_t x539;
fiat_np521_uint1 x540;
uint64_t x541;
fiat_np521_uint1 x542;
uint64_t x543;
fiat_np521_uint1 x544;
uint64_t x545;
fiat_np521_uint1 x546;
uint64_t x547;
fiat_np521_uint1 x548;
uint64_t x549;
fiat_np521_uint1 x550;
uint64_t x551;
fiat_np521_uint1 x552;
uint64_t x553;
uint64_t x554;
uint64_t x555;
uint64_t x556;
uint64_t x557;
uint64_t x558;
uint64_t x559;
uint64_t x560;
uint64_t x561;
uint64_t x562;
uint64_t x563;
uint64_t x564;
uint64_t x565;
uint64_t x566;
uint64_t x567;
uint64_t x568;
uint64_t x569;
uint64_t x570;
uint64_t x571;
uint64_t x572;
fiat_np521_uint1 x573;
uint64_t x574;
fiat_np521_uint1 x575;
uint64_t x576;
fiat_np521_uint1 x577;
uint64_t x578;
fiat_np521_uint1 x579;
uint64_t x580;
fiat_np521_uint1 x581;
uint64_t x582;
fiat_np521_uint1 x583;
uint64_t x584;
fiat_np521_uint1 x585;
uint64_t x586;
fiat_np521_uint1 x587;
uint64_t x588;
uint64_t x589;
fiat_np521_uint1 x590;
uint64_t x591;
fiat_np521_uint1 x592;
uint64_t x593;
fiat_np521_uint1 x594;
uint64_t x595;
fiat_np521_uint1 x596;
uint64_t x597;
fiat_np521_uint1 x598;
uint64_t x599;
fiat_np521_uint1 x600;
uint64_t x601;
fiat_np521_uint1 x602;
uint64_t x603;
fiat_np521_uint1 x604;
uint64_t x605;
fiat_np521_uint1 x606;
uint64_t x607;
fiat_np521_uint1 x608;
uint64_t x609;
uint64_t x610;
uint64_t x611;
uint64_t x612;
uint64_t x613;
uint64_t x614;
uint64_t x615;
uint64_t x616;
uint64_t x617;
uint64_t x618;
uint64_t x619;
uint64_t x620;
uint64_t x621;
uint64_t x622;
uint64_t x623;
uint64_t x624;
uint64_t x625;
uint64_t x626;
uint64_t x627;
uint64_t x628;
uint64_t x629;
fiat_np521_uint1 x630;
uint64_t x631;
fiat_np521_uint1 x632;
uint64_t x633;
fiat_np521_uint1 x634;
uint64_t x635;
fiat_np521_uint1 x636;
uint64_t x637;
fiat_np521_uint1 x638;
uint64_t x639;
fiat_np521_uint1 x640;
uint64_t x641;
fiat_np521_uint1 x642;
uint64_t x643;
fiat_np521_uint1 x644;
uint64_t x645;
uint64_t x646;
fiat_np521_uint1 x647;
uint64_t x648;
fiat_np521_uint1 x649;
uint64_t x650;
fiat_np521_uint1 x651;
uint64_t x652;
fiat_np521_uint1 x653;
uint64_t x654;
fiat_np521_uint1 x655;
uint64_t x656;
fiat_np521_uint1 x657;
uint64_t x658;
fiat_np521_uint1 x659;
uint64_t x660;
fiat_np521_uint1 x661;
uint64_t x662;
fiat_np521_uint1 x663;
uint64_t x664;
fiat_np521_uint1 x665;
uint64_t x666;
uint64_t x667;
uint64_t x668;
uint64_t x669;
uint64_t x670;
uint64_t x671;
uint64_t x672;
uint64_t x673;
uint64_t x674;
uint64_t x675;
uint64_t x676;
uint64_t x677;
uint64_t x678;
uint64_t x679;
uint64_t x680;
uint64_t x681;
uint64_t x682;
uint64_t x683;
uint64_t x684;
uint64_t x685;
fiat_np521_uint1 x686;
uint64_t x687;
fiat_np521_uint1 x688;
uint64_t x689;
fiat_np521_uint1 x690;
uint64_t x691;
fiat_np521_uint1 x692;
uint64_t x693;
fiat_np521_uint1 x694;
uint64_t x695;
fiat_np521_uint1 x696;
uint64_t x697;
fiat_np521_uint1 x698;
uint64_t x699;
fiat_np521_uint1 x700;
uint64_t x701;
uint64_t x702;
fiat_np521_uint1 x703;
uint64_t x704;
fiat_np521_uint1 x705;
uint64_t x706;
fiat_np521_uint1 x707;
uint64_t x708;
fiat_np521_uint1 x709;
uint64_t x710;
fiat_np521_uint1 x711;
uint64_t x712;
fiat_np521_uint1 x713;
uint64_t x714;
fiat_np521_uint1 x715;
uint64_t x716;
fiat_np521_uint1 x717;
uint64_t x718;
fiat_np521_uint1 x719;
uint64_t x720;
fiat_np521_uint1 x721;
uint64_t x722;
uint64_t x723;
uint64_t x724;
uint64_t x725;
uint64_t x726;
uint64_t x727;
uint64_t x728;
uint64_t x729;
uint64_t x730;
uint64_t x731;
uint64_t x732;
uint64_t x733;
uint64_t x734;
uint64_t x735;
uint64_t x736;
uint64_t x737;
uint64_t x738;
uint64_t x739;
uint64_t x740;
uint64_t x741;
uint64_t x742;
fiat_np521_uint1 x743;
uint64_t x744;
fiat_np521_uint1 x745;
uint64_t x746;
fiat_np521_uint1 x747;
uint64_t x748;
fiat_np521_uint1 x749;
uint64_t x750;
fiat_np521_uint1 x751;
uint64_t x752;
fiat_np521_uint1 x753;
uint64_t x754;
fiat_np521_uint1 x755;
uint64_t x756;
fiat_np521_uint1 x757;
uint64_t x758;
uint64_t x759;
fiat_np521_uint1 x760;
uint64_t x761;
fiat_np521_uint1 x762;
uint64_t x763;
fiat_np521_uint1 x764;
uint64_t x765;
fiat_np521_uint1 x766;
uint64_t x767;
fiat_np521_uint1 x768;
uint64_t x769;
fiat_np521_uint1 x770;
uint64_t x771;
fiat_np521_uint1 x772;
uint64_t x773;
fiat_np521_uint1 x774;
uint64_t x775;
fiat_np521_uint1 x776;
uint64_t x777;
fiat_np521_uint1 x778;
uint64_t x779;
uint64_t x780;
uint64_t x781;
uint64_t x782;
uint64_t x783;
uint64_t x784;
uint64_t x785;
uint64_t x786;
uint64_t x787;
uint64_t x788;
uint64_t x789;
uint64_t x790;
uint64_t x791;
uint64_t x792;
uint64_t x793;
uint64_t x794;
uint64_t x795;
uint64_t x796;
uint64_t x797;
uint64_t x798;
fiat_np521_uint1 x799;
uint64_t x800;
fiat_np521_uint1 x801;
uint64_t x802;
fiat_np521_uint1 x803;
uint64_t x804;
fiat_np521_uint1 x805;
uint64_t x806;
fiat_np521_uint1 x807;
uint64_t x808;
fiat_np521_uint1 x809;
uint64_t x810;
fiat_np521_uint1 x811;
uint64_t x812;
fiat_np521_uint1 x813;
uint64_t x814;
uint64_t x815;
fiat_np521_uint1 x816;
uint64_t x817;
fiat_np521_uint1 x818;
uint64_t x819;
fiat_np521_uint1 x820;
uint64_t x821;
fiat_np521_uint1 x822;
uint64_t x823;
fiat_np521_uint1 x824;
uint64_t x825;
fiat_np521_uint1 x826;
uint64_t x827;
fiat_np521_uint1 x828;
uint64_t x829;
fiat_np521_uint1 x830;
uint64_t x831;
fiat_np521_uint1 x832;
uint64_t x833;
fiat_np521_uint1 x834;
uint64_t x835;
uint64_t x836;
uint64_t x837;
uint64_t x838;
uint64_t x839;
uint64_t x840;
uint64_t x841;
uint64_t x842;
uint64_t x843;
uint64_t x844;
uint64_t x845;
uint64_t x846;
uint64_t x847;
uint64_t x848;
uint64_t x849;
uint64_t x850;
uint64_t x851;
uint64_t x852;
uint64_t x853;
uint64_t x854;
uint64_t x855;
fiat_np521_uint1 x856;
uint64_t x857;
fiat_np521_uint1 x858;
uint64_t x859;
fiat_np521_uint1 x860;
uint64_t x861;
fiat_np521_uint1 x862;
uint64_t x863;
fiat_np521_uint1 x864;
uint64_t x865;
fiat_np521_uint1 x866;
uint64_t x867;
fiat_np521_uint1 x868;
uint64_t x869;
fiat_np521_uint1 x870;
uint64_t x871;
uint64_t x872;
fiat_np521_uint1 x873;
uint64_t x874;
fiat_np521_uint1 x875;
uint64_t x876;
fiat_np521_uint1 x877;
uint64_t x878;
fiat_np521_uint1 x879;
uint64_t x880;
fiat_np521_uint1 x881;
uint64_t x882;
fiat_np521_uint1 x883;
uint64_t x884;
fiat_np521_uint1 x885;
uint64_t x886;
fiat_np521_uint1 x887;
uint64_t x888;
fiat_np521_uint1 x889;
uint64_t x890;
fiat_np521_uint1 x891;
uint64_t x892;
uint64_t x893;
uint64_t x894;
uint64_t x895;
uint64_t x896;
uint64_t x897;
uint64_t x898;
uint64_t x899;
uint64_t x900;
uint64_t x901;
uint64_t x902;
uint64_t x903;
uint64_t x904;
uint64_t x905;
uint64_t x906;
uint64_t x907;
uint64_t x908;
uint64_t x909;
uint64_t x910;
uint64_t x911;
fiat_np521_uint1 x912;
uint64_t x913;
fiat_np521_uint1 x914;
uint64_t x915;
fiat_np521_uint1 x916;
uint64_t x917;
fiat_np521_uint1 x918;
uint64_t x919;
fiat_np521_uint1 x920;
uint64_t x921;
fiat_np521_uint1 x922;
uint64_t x923;
fiat_np521_uint1 x924;
uint64_t x925;
fiat_np521_uint1 x926;
uint64_t x927;
uint64_t x928;
fiat_np521_uint1 x929;
uint64_t x930;
fiat_np521_uint1 x931;
uint64_t x932;
fiat_np521_uint1 x933;
uint64_t x934;
fiat_np521_uint1 x935;
uint64_t x936;
fiat_np521_uint1 x937;
uint64_t x938;
fiat_np521_uint1 x939;
uint64_t x940;
fiat_np521_uint1 x941;
uint64_t x942;
fiat_np521_uint1 x943;
uint64_t x944;
fiat_np521_uint1 x945;
uint64_t x946;
fiat_np521_uint1 x947;
uint64_t x948;
uint64_t x949;
uint64_t x950;
uint64_t x951;
uint64_t x952;
uint64_t x953;
uint64_t x954;
uint64_t x955;
uint64_t x956;
uint64_t x957;
uint64_t x958;
uint64_t x959;
uint64_t x960;
uint64_t x961;
uint64_t x962;
uint64_t x963;
uint64_t x964;
uint64_t x965;
uint64_t x966;
uint64_t x967;
uint64_t x968;
fiat_np521_uint1 x969;
uint64_t x970;
fiat_np521_uint1 x971;
uint64_t x972;
fiat_np521_uint1 x973;
uint64_t x974;
fiat_np521_uint1 x975;
uint64_t x976;
fiat_np521_uint1 x977;
uint64_t x978;
fiat_np521_uint1 x979;
uint64_t x980;
fiat_np521_uint1 x981;
uint64_t x982;
fiat_np521_uint1 x983;
uint64_t x984;
uint64_t x985;
fiat_np521_uint1 x986;
uint64_t x987;
fiat_np521_uint1 x988;
uint64_t x989;
fiat_np521_uint1 x990;
uint64_t x991;
fiat_np521_uint1 x992;
uint64_t x993;
fiat_np521_uint1 x994;
uint64_t x995;
fiat_np521_uint1 x996;
uint64_t x997;
fiat_np521_uint1 x998;
uint64_t x999;
fiat_np521_uint1 x1000;
uint64_t x1001;
fiat_np521_uint1 x1002;
uint64_t x1003;
fiat_np521_uint1 x1004;
uint64_t x1005;
uint64_t x1006;
fiat_np521_uint1 x1007;
uint64_t x1008;
fiat_np521_uint1 x1009;
uint64_t x1010;
fiat_np521_uint1 x1011;
uint64_t x1012;
fiat_np521_uint1 x1013;
uint64_t x1014;
fiat_np521_uint1 x1015;
uint64_t x1016;
fiat_np521_uint1 x1017;
uint64_t x1018;
fiat_np521_uint1 x1019;
uint64_t x1020;
fiat_np521_uint1 x1021;
uint64_t x1022;
fiat_np521_uint1 x1023;
uint64_t x1024;
fiat_np521_uint1 x1025;
uint64_t x1026;
uint64_t x1027;
uint64_t x1028;
uint64_t x1029;
uint64_t x1030;
uint64_t x1031;
uint64_t x1032;
uint64_t x1033;
uint64_t x1034;
x1 = (arg1[1]);
x2 = (arg1[2]);
x3 = (arg1[3]);
x4 = (arg1[4]);
x5 = (arg1[5]);
x6 = (arg1[6]);
x7 = (arg1[7]);
x8 = (arg1[8]);
x9 = (arg1[0]);
fiat_np521_mulx_u64(&x10, &x11, x9, (arg2[8]));
fiat_np521_mulx_u64(&x12, &x13, x9, (arg2[7]));
fiat_np521_mulx_u64(&x14, &x15, x9, (arg2[6]));
fiat_np521_mulx_u64(&x16, &x17, x9, (arg2[5]));
fiat_np521_mulx_u64(&x18, &x19, x9, (arg2[4]));
fiat_np521_mulx_u64(&x20, &x21, x9, (arg2[3]));
fiat_np521_mulx_u64(&x22, &x23, x9, (arg2[2]));
fiat_np521_mulx_u64(&x24, &x25, x9, (arg2[1]));
fiat_np521_mulx_u64(&x26, &x27, x9, (arg2[0]));
fiat_np521_addcarryx_u64(&x28, &x29, 0x0, x27, x24);
fiat_np521_addcarryx_u64(&x30, &x31, x29, x25, x22);
fiat_np521_addcarryx_u64(&x32, &x33, x31, x23, x20);
fiat_np521_addcarryx_u64(&x34, &x35, x33, x21, x18);
fiat_np521_addcarryx_u64(&x36, &x37, x35, x19, x16);
fiat_np521_addcarryx_u64(&x38, &x39, x37, x17, x14);
fiat_np521_addcarryx_u64(&x40, &x41, x39, x15, x12);
fiat_np521_addcarryx_u64(&x42, &x43, x41, x13, x10);
x44 = (x43 + x11);
fiat_np521_mulx_u64(&x45, &x46, x26, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x47, &x48, x45, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x49, &x50, x45, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x51, &x52, x45, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x53, &x54, x45, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x55, &x56, x45, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x57, &x58, x45, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x59, &x60, x45, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x61, &x62, x45, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x63, &x64, x45, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x65, &x66, 0x0, x64, x61);
fiat_np521_addcarryx_u64(&x67, &x68, x66, x62, x59);
fiat_np521_addcarryx_u64(&x69, &x70, x68, x60, x57);
fiat_np521_addcarryx_u64(&x71, &x72, x70, x58, x55);
fiat_np521_addcarryx_u64(&x73, &x74, x72, x56, x53);
fiat_np521_addcarryx_u64(&x75, &x76, x74, x54, x51);
fiat_np521_addcarryx_u64(&x77, &x78, x76, x52, x49);
fiat_np521_addcarryx_u64(&x79, &x80, x78, x50, x47);
x81 = (x80 + x48);
fiat_np521_addcarryx_u64(&x82, &x83, 0x0, x26, x63);
fiat_np521_addcarryx_u64(&x84, &x85, x83, x28, x65);
fiat_np521_addcarryx_u64(&x86, &x87, x85, x30, x67);
fiat_np521_addcarryx_u64(&x88, &x89, x87, x32, x69);
fiat_np521_addcarryx_u64(&x90, &x91, x89, x34, x71);
fiat_np521_addcarryx_u64(&x92, &x93, x91, x36, x73);
fiat_np521_addcarryx_u64(&x94, &x95, x93, x38, x75);
fiat_np521_addcarryx_u64(&x96, &x97, x95, x40, x77);
fiat_np521_addcarryx_u64(&x98, &x99, x97, x42, x79);
fiat_np521_addcarryx_u64(&x100, &x101, x99, x44, x81);
fiat_np521_mulx_u64(&x102, &x103, x1, (arg2[8]));
fiat_np521_mulx_u64(&x104, &x105, x1, (arg2[7]));
fiat_np521_mulx_u64(&x106, &x107, x1, (arg2[6]));
fiat_np521_mulx_u64(&x108, &x109, x1, (arg2[5]));
fiat_np521_mulx_u64(&x110, &x111, x1, (arg2[4]));
fiat_np521_mulx_u64(&x112, &x113, x1, (arg2[3]));
fiat_np521_mulx_u64(&x114, &x115, x1, (arg2[2]));
fiat_np521_mulx_u64(&x116, &x117, x1, (arg2[1]));
fiat_np521_mulx_u64(&x118, &x119, x1, (arg2[0]));
fiat_np521_addcarryx_u64(&x120, &x121, 0x0, x119, x116);
fiat_np521_addcarryx_u64(&x122, &x123, x121, x117, x114);
fiat_np521_addcarryx_u64(&x124, &x125, x123, x115, x112);
fiat_np521_addcarryx_u64(&x126, &x127, x125, x113, x110);
fiat_np521_addcarryx_u64(&x128, &x129, x127, x111, x108);
fiat_np521_addcarryx_u64(&x130, &x131, x129, x109, x106);
fiat_np521_addcarryx_u64(&x132, &x133, x131, x107, x104);
fiat_np521_addcarryx_u64(&x134, &x135, x133, x105, x102);
x136 = (x135 + x103);
fiat_np521_addcarryx_u64(&x137, &x138, 0x0, x84, x118);
fiat_np521_addcarryx_u64(&x139, &x140, x138, x86, x120);
fiat_np521_addcarryx_u64(&x141, &x142, x140, x88, x122);
fiat_np521_addcarryx_u64(&x143, &x144, x142, x90, x124);
fiat_np521_addcarryx_u64(&x145, &x146, x144, x92, x126);
fiat_np521_addcarryx_u64(&x147, &x148, x146, x94, x128);
fiat_np521_addcarryx_u64(&x149, &x150, x148, x96, x130);
fiat_np521_addcarryx_u64(&x151, &x152, x150, x98, x132);
fiat_np521_addcarryx_u64(&x153, &x154, x152, x100, x134);
fiat_np521_addcarryx_u64(&x155, &x156, x154, x101, x136);
fiat_np521_mulx_u64(&x157, &x158, x137, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x159, &x160, x157, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x161, &x162, x157, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x163, &x164, x157, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x165, &x166, x157, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x167, &x168, x157, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x169, &x170, x157, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x171, &x172, x157, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x173, &x174, x157, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x175, &x176, x157, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x177, &x178, 0x0, x176, x173);
fiat_np521_addcarryx_u64(&x179, &x180, x178, x174, x171);
fiat_np521_addcarryx_u64(&x181, &x182, x180, x172, x169);
fiat_np521_addcarryx_u64(&x183, &x184, x182, x170, x167);
fiat_np521_addcarryx_u64(&x185, &x186, x184, x168, x165);
fiat_np521_addcarryx_u64(&x187, &x188, x186, x166, x163);
fiat_np521_addcarryx_u64(&x189, &x190, x188, x164, x161);
fiat_np521_addcarryx_u64(&x191, &x192, x190, x162, x159);
x193 = (x192 + x160);
fiat_np521_addcarryx_u64(&x194, &x195, 0x0, x137, x175);
fiat_np521_addcarryx_u64(&x196, &x197, x195, x139, x177);
fiat_np521_addcarryx_u64(&x198, &x199, x197, x141, x179);
fiat_np521_addcarryx_u64(&x200, &x201, x199, x143, x181);
fiat_np521_addcarryx_u64(&x202, &x203, x201, x145, x183);
fiat_np521_addcarryx_u64(&x204, &x205, x203, x147, x185);
fiat_np521_addcarryx_u64(&x206, &x207, x205, x149, x187);
fiat_np521_addcarryx_u64(&x208, &x209, x207, x151, x189);
fiat_np521_addcarryx_u64(&x210, &x211, x209, x153, x191);
fiat_np521_addcarryx_u64(&x212, &x213, x211, x155, x193);
x214 = ((uint64_t)x213 + x156);
fiat_np521_mulx_u64(&x215, &x216, x2, (arg2[8]));
fiat_np521_mulx_u64(&x217, &x218, x2, (arg2[7]));
fiat_np521_mulx_u64(&x219, &x220, x2, (arg2[6]));
fiat_np521_mulx_u64(&x221, &x222, x2, (arg2[5]));
fiat_np521_mulx_u64(&x223, &x224, x2, (arg2[4]));
fiat_np521_mulx_u64(&x225, &x226, x2, (arg2[3]));
fiat_np521_mulx_u64(&x227, &x228, x2, (arg2[2]));
fiat_np521_mulx_u64(&x229, &x230, x2, (arg2[1]));
fiat_np521_mulx_u64(&x231, &x232, x2, (arg2[0]));
fiat_np521_addcarryx_u64(&x233, &x234, 0x0, x232, x229);
fiat_np521_addcarryx_u64(&x235, &x236, x234, x230, x227);
fiat_np521_addcarryx_u64(&x237, &x238, x236, x228, x225);
fiat_np521_addcarryx_u64(&x239, &x240, x238, x226, x223);
fiat_np521_addcarryx_u64(&x241, &x242, x240, x224, x221);
fiat_np521_addcarryx_u64(&x243, &x244, x242, x222, x219);
fiat_np521_addcarryx_u64(&x245, &x246, x244, x220, x217);
fiat_np521_addcarryx_u64(&x247, &x248, x246, x218, x215);
x249 = (x248 + x216);
fiat_np521_addcarryx_u64(&x250, &x251, 0x0, x196, x231);
fiat_np521_addcarryx_u64(&x252, &x253, x251, x198, x233);
fiat_np521_addcarryx_u64(&x254, &x255, x253, x200, x235);
fiat_np521_addcarryx_u64(&x256, &x257, x255, x202, x237);
fiat_np521_addcarryx_u64(&x258, &x259, x257, x204, x239);
fiat_np521_addcarryx_u64(&x260, &x261, x259, x206, x241);
fiat_np521_addcarryx_u64(&x262, &x263, x261, x208, x243);
fiat_np521_addcarryx_u64(&x264, &x265, x263, x210, x245);
fiat_np521_addcarryx_u64(&x266, &x267, x265, x212, x247);
fiat_np521_addcarryx_u64(&x268, &x269, x267, x214, x249);
fiat_np521_mulx_u64(&x270, &x271, x250, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x272, &x273, x270, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x274, &x275, x270, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x276, &x277, x270, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x278, &x279, x270, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x280, &x281, x270, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x282, &x283, x270, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x284, &x285, x270, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x286, &x287, x270, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x288, &x289, x270, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x290, &x291, 0x0, x289, x286);
fiat_np521_addcarryx_u64(&x292, &x293, x291, x287, x284);
fiat_np521_addcarryx_u64(&x294, &x295, x293, x285, x282);
fiat_np521_addcarryx_u64(&x296, &x297, x295, x283, x280);
fiat_np521_addcarryx_u64(&x298, &x299, x297, x281, x278);
fiat_np521_addcarryx_u64(&x300, &x301, x299, x279, x276);
fiat_np521_addcarryx_u64(&x302, &x303, x301, x277, x274);
fiat_np521_addcarryx_u64(&x304, &x305, x303, x275, x272);
x306 = (x305 + x273);
fiat_np521_addcarryx_u64(&x307, &x308, 0x0, x250, x288);
fiat_np521_addcarryx_u64(&x309, &x310, x308, x252, x290);
fiat_np521_addcarryx_u64(&x311, &x312, x310, x254, x292);
fiat_np521_addcarryx_u64(&x313, &x314, x312, x256, x294);
fiat_np521_addcarryx_u64(&x315, &x316, x314, x258, x296);
fiat_np521_addcarryx_u64(&x317, &x318, x316, x260, x298);
fiat_np521_addcarryx_u64(&x319, &x320, x318, x262, x300);
fiat_np521_addcarryx_u64(&x321, &x322, x320, x264, x302);
fiat_np521_addcarryx_u64(&x323, &x324, x322, x266, x304);
fiat_np521_addcarryx_u64(&x325, &x326, x324, x268, x306);
x327 = ((uint64_t)x326 + x269);
fiat_np521_mulx_u64(&x328, &x329, x3, (arg2[8]));
fiat_np521_mulx_u64(&x330, &x331, x3, (arg2[7]));
fiat_np521_mulx_u64(&x332, &x333, x3, (arg2[6]));
fiat_np521_mulx_u64(&x334, &x335, x3, (arg2[5]));
fiat_np521_mulx_u64(&x336, &x337, x3, (arg2[4]));
fiat_np521_mulx_u64(&x338, &x339, x3, (arg2[3]));
fiat_np521_mulx_u64(&x340, &x341, x3, (arg2[2]));
fiat_np521_mulx_u64(&x342, &x343, x3, (arg2[1]));
fiat_np521_mulx_u64(&x344, &x345, x3, (arg2[0]));
fiat_np521_addcarryx_u64(&x346, &x347, 0x0, x345, x342);
fiat_np521_addcarryx_u64(&x348, &x349, x347, x343, x340);
fiat_np521_addcarryx_u64(&x350, &x351, x349, x341, x338);
fiat_np521_addcarryx_u64(&x352, &x353, x351, x339, x336);
fiat_np521_addcarryx_u64(&x354, &x355, x353, x337, x334);
fiat_np521_addcarryx_u64(&x356, &x357, x355, x335, x332);
fiat_np521_addcarryx_u64(&x358, &x359, x357, x333, x330);
fiat_np521_addcarryx_u64(&x360, &x361, x359, x331, x328);
x362 = (x361 + x329);
fiat_np521_addcarryx_u64(&x363, &x364, 0x0, x309, x344);
fiat_np521_addcarryx_u64(&x365, &x366, x364, x311, x346);
fiat_np521_addcarryx_u64(&x367, &x368, x366, x313, x348);
fiat_np521_addcarryx_u64(&x369, &x370, x368, x315, x350);
fiat_np521_addcarryx_u64(&x371, &x372, x370, x317, x352);
fiat_np521_addcarryx_u64(&x373, &x374, x372, x319, x354);
fiat_np521_addcarryx_u64(&x375, &x376, x374, x321, x356);
fiat_np521_addcarryx_u64(&x377, &x378, x376, x323, x358);
fiat_np521_addcarryx_u64(&x379, &x380, x378, x325, x360);
fiat_np521_addcarryx_u64(&x381, &x382, x380, x327, x362);
fiat_np521_mulx_u64(&x383, &x384, x363, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x385, &x386, x383, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x387, &x388, x383, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x389, &x390, x383, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x391, &x392, x383, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x393, &x394, x383, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x395, &x396, x383, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x397, &x398, x383, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x399, &x400, x383, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x401, &x402, x383, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x403, &x404, 0x0, x402, x399);
fiat_np521_addcarryx_u64(&x405, &x406, x404, x400, x397);
fiat_np521_addcarryx_u64(&x407, &x408, x406, x398, x395);
fiat_np521_addcarryx_u64(&x409, &x410, x408, x396, x393);
fiat_np521_addcarryx_u64(&x411, &x412, x410, x394, x391);
fiat_np521_addcarryx_u64(&x413, &x414, x412, x392, x389);
fiat_np521_addcarryx_u64(&x415, &x416, x414, x390, x387);
fiat_np521_addcarryx_u64(&x417, &x418, x416, x388, x385);
x419 = (x418 + x386);
fiat_np521_addcarryx_u64(&x420, &x421, 0x0, x363, x401);
fiat_np521_addcarryx_u64(&x422, &x423, x421, x365, x403);
fiat_np521_addcarryx_u64(&x424, &x425, x423, x367, x405);
fiat_np521_addcarryx_u64(&x426, &x427, x425, x369, x407);
fiat_np521_addcarryx_u64(&x428, &x429, x427, x371, x409);
fiat_np521_addcarryx_u64(&x430, &x431, x429, x373, x411);
fiat_np521_addcarryx_u64(&x432, &x433, x431, x375, x413);
fiat_np521_addcarryx_u64(&x434, &x435, x433, x377, x415);
fiat_np521_addcarryx_u64(&x436, &x437, x435, x379, x417);
fiat_np521_addcarryx_u64(&x438, &x439, x437, x381, x419);
x440 = ((uint64_t)x439 + x382);
fiat_np521_mulx_u64(&x441, &x442, x4, (arg2[8]));
fiat_np521_mulx_u64(&x443, &x444, x4, (arg2[7]));
fiat_np521_mulx_u64(&x445, &x446, x4, (arg2[6]));
fiat_np521_mulx_u64(&x447, &x448, x4, (arg2[5]));
fiat_np521_mulx_u64(&x449, &x450, x4, (arg2[4]));
fiat_np521_mulx_u64(&x451, &x452, x4, (arg2[3]));
fiat_np521_mulx_u64(&x453, &x454, x4, (arg2[2]));
fiat_np521_mulx_u64(&x455, &x456, x4, (arg2[1]));
fiat_np521_mulx_u64(&x457, &x458, x4, (arg2[0]));
fiat_np521_addcarryx_u64(&x459, &x460, 0x0, x458, x455);
fiat_np521_addcarryx_u64(&x461, &x462, x460, x456, x453);
fiat_np521_addcarryx_u64(&x463, &x464, x462, x454, x451);
fiat_np521_addcarryx_u64(&x465, &x466, x464, x452, x449);
fiat_np521_addcarryx_u64(&x467, &x468, x466, x450, x447);
fiat_np521_addcarryx_u64(&x469, &x470, x468, x448, x445);
fiat_np521_addcarryx_u64(&x471, &x472, x470, x446, x443);
fiat_np521_addcarryx_u64(&x473, &x474, x472, x444, x441);
x475 = (x474 + x442);
fiat_np521_addcarryx_u64(&x476, &x477, 0x0, x422, x457);
fiat_np521_addcarryx_u64(&x478, &x479, x477, x424, x459);
fiat_np521_addcarryx_u64(&x480, &x481, x479, x426, x461);
fiat_np521_addcarryx_u64(&x482, &x483, x481, x428, x463);
fiat_np521_addcarryx_u64(&x484, &x485, x483, x430, x465);
fiat_np521_addcarryx_u64(&x486, &x487, x485, x432, x467);
fiat_np521_addcarryx_u64(&x488, &x489, x487, x434, x469);
fiat_np521_addcarryx_u64(&x490, &x491, x489, x436, x471);
fiat_np521_addcarryx_u64(&x492, &x493, x491, x438, x473);
fiat_np521_addcarryx_u64(&x494, &x495, x493, x440, x475);
fiat_np521_mulx_u64(&x496, &x497, x476, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x498, &x499, x496, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x500, &x501, x496, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x502, &x503, x496, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x504, &x505, x496, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x506, &x507, x496, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x508, &x509, x496, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x510, &x511, x496, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x512, &x513, x496, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x514, &x515, x496, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x516, &x517, 0x0, x515, x512);
fiat_np521_addcarryx_u64(&x518, &x519, x517, x513, x510);
fiat_np521_addcarryx_u64(&x520, &x521, x519, x511, x508);
fiat_np521_addcarryx_u64(&x522, &x523, x521, x509, x506);
fiat_np521_addcarryx_u64(&x524, &x525, x523, x507, x504);
fiat_np521_addcarryx_u64(&x526, &x527, x525, x505, x502);
fiat_np521_addcarryx_u64(&x528, &x529, x527, x503, x500);
fiat_np521_addcarryx_u64(&x530, &x531, x529, x501, x498);
x532 = (x531 + x499);
fiat_np521_addcarryx_u64(&x533, &x534, 0x0, x476, x514);
fiat_np521_addcarryx_u64(&x535, &x536, x534, x478, x516);
fiat_np521_addcarryx_u64(&x537, &x538, x536, x480, x518);
fiat_np521_addcarryx_u64(&x539, &x540, x538, x482, x520);
fiat_np521_addcarryx_u64(&x541, &x542, x540, x484, x522);
fiat_np521_addcarryx_u64(&x543, &x544, x542, x486, x524);
fiat_np521_addcarryx_u64(&x545, &x546, x544, x488, x526);
fiat_np521_addcarryx_u64(&x547, &x548, x546, x490, x528);
fiat_np521_addcarryx_u64(&x549, &x550, x548, x492, x530);
fiat_np521_addcarryx_u64(&x551, &x552, x550, x494, x532);
x553 = ((uint64_t)x552 + x495);
fiat_np521_mulx_u64(&x554, &x555, x5, (arg2[8]));
fiat_np521_mulx_u64(&x556, &x557, x5, (arg2[7]));
fiat_np521_mulx_u64(&x558, &x559, x5, (arg2[6]));
fiat_np521_mulx_u64(&x560, &x561, x5, (arg2[5]));
fiat_np521_mulx_u64(&x562, &x563, x5, (arg2[4]));
fiat_np521_mulx_u64(&x564, &x565, x5, (arg2[3]));
fiat_np521_mulx_u64(&x566, &x567, x5, (arg2[2]));
fiat_np521_mulx_u64(&x568, &x569, x5, (arg2[1]));
fiat_np521_mulx_u64(&x570, &x571, x5, (arg2[0]));
fiat_np521_addcarryx_u64(&x572, &x573, 0x0, x571, x568);
fiat_np521_addcarryx_u64(&x574, &x575, x573, x569, x566);
fiat_np521_addcarryx_u64(&x576, &x577, x575, x567, x564);
fiat_np521_addcarryx_u64(&x578, &x579, x577, x565, x562);
fiat_np521_addcarryx_u64(&x580, &x581, x579, x563, x560);
fiat_np521_addcarryx_u64(&x582, &x583, x581, x561, x558);
fiat_np521_addcarryx_u64(&x584, &x585, x583, x559, x556);
fiat_np521_addcarryx_u64(&x586, &x587, x585, x557, x554);
x588 = (x587 + x555);
fiat_np521_addcarryx_u64(&x589, &x590, 0x0, x535, x570);
fiat_np521_addcarryx_u64(&x591, &x592, x590, x537, x572);
fiat_np521_addcarryx_u64(&x593, &x594, x592, x539, x574);
fiat_np521_addcarryx_u64(&x595, &x596, x594, x541, x576);
fiat_np521_addcarryx_u64(&x597, &x598, x596, x543, x578);
fiat_np521_addcarryx_u64(&x599, &x600, x598, x545, x580);
fiat_np521_addcarryx_u64(&x601, &x602, x600, x547, x582);
fiat_np521_addcarryx_u64(&x603, &x604, x602, x549, x584);
fiat_np521_addcarryx_u64(&x605, &x606, x604, x551, x586);
fiat_np521_addcarryx_u64(&x607, &x608, x606, x553, x588);
fiat_np521_mulx_u64(&x609, &x610, x589, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x611, &x612, x609, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x613, &x614, x609, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x615, &x616, x609, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x617, &x618, x609, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x619, &x620, x609, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x621, &x622, x609, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x623, &x624, x609, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x625, &x626, x609, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x627, &x628, x609, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x629, &x630, 0x0, x628, x625);
fiat_np521_addcarryx_u64(&x631, &x632, x630, x626, x623);
fiat_np521_addcarryx_u64(&x633, &x634, x632, x624, x621);
fiat_np521_addcarryx_u64(&x635, &x636, x634, x622, x619);
fiat_np521_addcarryx_u64(&x637, &x638, x636, x620, x617);
fiat_np521_addcarryx_u64(&x639, &x640, x638, x618, x615);
fiat_np521_addcarryx_u64(&x641, &x642, x640, x616, x613);
fiat_np521_addcarryx_u64(&x643, &x644, x642, x614, x611);
x645 = (x644 + x612);
fiat_np521_addcarryx_u64(&x646, &x647, 0x0, x589, x627);
fiat_np521_addcarryx_u64(&x648, &x649, x647, x591, x629);
fiat_np521_addcarryx_u64(&x650, &x651, x649, x593, x631);
fiat_np521_addcarryx_u64(&x652, &x653, x651, x595, x633);
fiat_np521_addcarryx_u64(&x654, &x655, x653, x597, x635);
fiat_np521_addcarryx_u64(&x656, &x657, x655, x599, x637);
fiat_np521_addcarryx_u64(&x658, &x659, x657, x601, x639);
fiat_np521_addcarryx_u64(&x660, &x661, x659, x603, x641);
fiat_np521_addcarryx_u64(&x662, &x663, x661, x605, x643);
fiat_np521_addcarryx_u64(&x664, &x665, x663, x607, x645);
x666 = ((uint64_t)x665 + x608);
fiat_np521_mulx_u64(&x667, &x668, x6, (arg2[8]));
fiat_np521_mulx_u64(&x669, &x670, x6, (arg2[7]));
fiat_np521_mulx_u64(&x671, &x672, x6, (arg2[6]));
fiat_np521_mulx_u64(&x673, &x674, x6, (arg2[5]));
fiat_np521_mulx_u64(&x675, &x676, x6, (arg2[4]));
fiat_np521_mulx_u64(&x677, &x678, x6, (arg2[3]));
fiat_np521_mulx_u64(&x679, &x680, x6, (arg2[2]));
fiat_np521_mulx_u64(&x681, &x682, x6, (arg2[1]));
fiat_np521_mulx_u64(&x683, &x684, x6, (arg2[0]));
fiat_np521_addcarryx_u64(&x685, &x686, 0x0, x684, x681);
fiat_np521_addcarryx_u64(&x687, &x688, x686, x682, x679);
fiat_np521_addcarryx_u64(&x689, &x690, x688, x680, x677);
fiat_np521_addcarryx_u64(&x691, &x692, x690, x678, x675);
fiat_np521_addcarryx_u64(&x693, &x694, x692, x676, x673);
fiat_np521_addcarryx_u64(&x695, &x696, x694, x674, x671);
fiat_np521_addcarryx_u64(&x697, &x698, x696, x672, x669);
fiat_np521_addcarryx_u64(&x699, &x700, x698, x670, x667);
x701 = (x700 + x668);
fiat_np521_addcarryx_u64(&x702, &x703, 0x0, x648, x683);
fiat_np521_addcarryx_u64(&x704, &x705, x703, x650, x685);
fiat_np521_addcarryx_u64(&x706, &x707, x705, x652, x687);
fiat_np521_addcarryx_u64(&x708, &x709, x707, x654, x689);
fiat_np521_addcarryx_u64(&x710, &x711, x709, x656, x691);
fiat_np521_addcarryx_u64(&x712, &x713, x711, x658, x693);
fiat_np521_addcarryx_u64(&x714, &x715, x713, x660, x695);
fiat_np521_addcarryx_u64(&x716, &x717, x715, x662, x697);
fiat_np521_addcarryx_u64(&x718, &x719, x717, x664, x699);
fiat_np521_addcarryx_u64(&x720, &x721, x719, x666, x701);
fiat_np521_mulx_u64(&x722, &x723, x702, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x724, &x725, x722, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x726, &x727, x722, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x728, &x729, x722, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x730, &x731, x722, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x732, &x733, x722, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x734, &x735, x722, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x736, &x737, x722, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x738, &x739, x722, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x740, &x741, x722, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x742, &x743, 0x0, x741, x738);
fiat_np521_addcarryx_u64(&x744, &x745, x743, x739, x736);
fiat_np521_addcarryx_u64(&x746, &x747, x745, x737, x734);
fiat_np521_addcarryx_u64(&x748, &x749, x747, x735, x732);
fiat_np521_addcarryx_u64(&x750, &x751, x749, x733, x730);
fiat_np521_addcarryx_u64(&x752, &x753, x751, x731, x728);
fiat_np521_addcarryx_u64(&x754, &x755, x753, x729, x726);
fiat_np521_addcarryx_u64(&x756, &x757, x755, x727, x724);
x758 = (x757 + x725);
fiat_np521_addcarryx_u64(&x759, &x760, 0x0, x702, x740);
fiat_np521_addcarryx_u64(&x761, &x762, x760, x704, x742);
fiat_np521_addcarryx_u64(&x763, &x764, x762, x706, x744);
fiat_np521_addcarryx_u64(&x765, &x766, x764, x708, x746);
fiat_np521_addcarryx_u64(&x767, &x768, x766, x710, x748);
fiat_np521_addcarryx_u64(&x769, &x770, x768, x712, x750);
fiat_np521_addcarryx_u64(&x771, &x772, x770, x714, x752);
fiat_np521_addcarryx_u64(&x773, &x774, x772, x716, x754);
fiat_np521_addcarryx_u64(&x775, &x776, x774, x718, x756);
fiat_np521_addcarryx_u64(&x777, &x778, x776, x720, x758);
x779 = ((uint64_t)x778 + x721);
fiat_np521_mulx_u64(&x780, &x781, x7, (arg2[8]));
fiat_np521_mulx_u64(&x782, &x783, x7, (arg2[7]));
fiat_np521_mulx_u64(&x784, &x785, x7, (arg2[6]));
fiat_np521_mulx_u64(&x786, &x787, x7, (arg2[5]));
fiat_np521_mulx_u64(&x788, &x789, x7, (arg2[4]));
fiat_np521_mulx_u64(&x790, &x791, x7, (arg2[3]));
fiat_np521_mulx_u64(&x792, &x793, x7, (arg2[2]));
fiat_np521_mulx_u64(&x794, &x795, x7, (arg2[1]));
fiat_np521_mulx_u64(&x796, &x797, x7, (arg2[0]));
fiat_np521_addcarryx_u64(&x798, &x799, 0x0, x797, x794);
fiat_np521_addcarryx_u64(&x800, &x801, x799, x795, x792);
fiat_np521_addcarryx_u64(&x802, &x803, x801, x793, x790);
fiat_np521_addcarryx_u64(&x804, &x805, x803, x791, x788);
fiat_np521_addcarryx_u64(&x806, &x807, x805, x789, x786);
fiat_np521_addcarryx_u64(&x808, &x809, x807, x787, x784);
fiat_np521_addcarryx_u64(&x810, &x811, x809, x785, x782);
fiat_np521_addcarryx_u64(&x812, &x813, x811, x783, x780);
x814 = (x813 + x781);
fiat_np521_addcarryx_u64(&x815, &x816, 0x0, x761, x796);
fiat_np521_addcarryx_u64(&x817, &x818, x816, x763, x798);
fiat_np521_addcarryx_u64(&x819, &x820, x818, x765, x800);
fiat_np521_addcarryx_u64(&x821, &x822, x820, x767, x802);
fiat_np521_addcarryx_u64(&x823, &x824, x822, x769, x804);
fiat_np521_addcarryx_u64(&x825, &x826, x824, x771, x806);
fiat_np521_addcarryx_u64(&x827, &x828, x826, x773, x808);
fiat_np521_addcarryx_u64(&x829, &x830, x828, x775, x810);
fiat_np521_addcarryx_u64(&x831, &x832, x830, x777, x812);
fiat_np521_addcarryx_u64(&x833, &x834, x832, x779, x814);
fiat_np521_mulx_u64(&x835, &x836, x815, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x837, &x838, x835, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x839, &x840, x835, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x841, &x842, x835, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x843, &x844, x835, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x845, &x846, x835, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x847, &x848, x835, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x849, &x850, x835, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x851, &x852, x835, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x853, &x854, x835, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x855, &x856, 0x0, x854, x851);
fiat_np521_addcarryx_u64(&x857, &x858, x856, x852, x849);
fiat_np521_addcarryx_u64(&x859, &x860, x858, x850, x847);
fiat_np521_addcarryx_u64(&x861, &x862, x860, x848, x845);
fiat_np521_addcarryx_u64(&x863, &x864, x862, x846, x843);
fiat_np521_addcarryx_u64(&x865, &x866, x864, x844, x841);
fiat_np521_addcarryx_u64(&x867, &x868, x866, x842, x839);
fiat_np521_addcarryx_u64(&x869, &x870, x868, x840, x837);
x871 = (x870 + x838);
fiat_np521_addcarryx_u64(&x872, &x873, 0x0, x815, x853);
fiat_np521_addcarryx_u64(&x874, &x875, x873, x817, x855);
fiat_np521_addcarryx_u64(&x876, &x877, x875, x819, x857);
fiat_np521_addcarryx_u64(&x878, &x879, x877, x821, x859);
fiat_np521_addcarryx_u64(&x880, &x881, x879, x823, x861);
fiat_np521_addcarryx_u64(&x882, &x883, x881, x825, x863);
fiat_np521_addcarryx_u64(&x884, &x885, x883, x827, x865);
fiat_np521_addcarryx_u64(&x886, &x887, x885, x829, x867);
fiat_np521_addcarryx_u64(&x888, &x889, x887, x831, x869);
fiat_np521_addcarryx_u64(&x890, &x891, x889, x833, x871);
x892 = ((uint64_t)x891 + x834);
fiat_np521_mulx_u64(&x893, &x894, x8, (arg2[8]));
fiat_np521_mulx_u64(&x895, &x896, x8, (arg2[7]));
fiat_np521_mulx_u64(&x897, &x898, x8, (arg2[6]));
fiat_np521_mulx_u64(&x899, &x900, x8, (arg2[5]));
fiat_np521_mulx_u64(&x901, &x902, x8, (arg2[4]));
fiat_np521_mulx_u64(&x903, &x904, x8, (arg2[3]));
fiat_np521_mulx_u64(&x905, &x906, x8, (arg2[2]));
fiat_np521_mulx_u64(&x907, &x908, x8, (arg2[1]));
fiat_np521_mulx_u64(&x909, &x910, x8, (arg2[0]));
fiat_np521_addcarryx_u64(&x911, &x912, 0x0, x910, x907);
fiat_np521_addcarryx_u64(&x913, &x914, x912, x908, x905);
fiat_np521_addcarryx_u64(&x915, &x916, x914, x906, x903);
fiat_np521_addcarryx_u64(&x917, &x918, x916, x904, x901);
fiat_np521_addcarryx_u64(&x919, &x920, x918, x902, x899);
fiat_np521_addcarryx_u64(&x921, &x922, x920, x900, x897);
fiat_np521_addcarryx_u64(&x923, &x924, x922, x898, x895);
fiat_np521_addcarryx_u64(&x925, &x926, x924, x896, x893);
x927 = (x926 + x894);
fiat_np521_addcarryx_u64(&x928, &x929, 0x0, x874, x909);
fiat_np521_addcarryx_u64(&x930, &x931, x929, x876, x911);
fiat_np521_addcarryx_u64(&x932, &x933, x931, x878, x913);
fiat_np521_addcarryx_u64(&x934, &x935, x933, x880, x915);
fiat_np521_addcarryx_u64(&x936, &x937, x935, x882, x917);
fiat_np521_addcarryx_u64(&x938, &x939, x937, x884, x919);
fiat_np521_addcarryx_u64(&x940, &x941, x939, x886, x921);
fiat_np521_addcarryx_u64(&x942, &x943, x941, x888, x923);
fiat_np521_addcarryx_u64(&x944, &x945, x943, x890, x925);
fiat_np521_addcarryx_u64(&x946, &x947, x945, x892, x927);
fiat_np521_mulx_u64(&x948, &x949, x928, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x950, &x951, x948, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x952, &x953, x948, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x954, &x955, x948, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x956, &x957, x948, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x958, &x959, x948, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x960, &x961, x948, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x962, &x963, x948, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x964, &x965, x948, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x966, &x967, x948, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x968, &x969, 0x0, x967, x964);
fiat_np521_addcarryx_u64(&x970, &x971, x969, x965, x962);
fiat_np521_addcarryx_u64(&x972, &x973, x971, x963, x960);
fiat_np521_addcarryx_u64(&x974, &x975, x973, x961, x958);
fiat_np521_addcarryx_u64(&x976, &x977, x975, x959, x956);
fiat_np521_addcarryx_u64(&x978, &x979, x977, x957, x954);
fiat_np521_addcarryx_u64(&x980, &x981, x979, x955, x952);
fiat_np521_addcarryx_u64(&x982, &x983, x981, x953, x950);
x984 = (x983 + x951);
fiat_np521_addcarryx_u64(&x985, &x986, 0x0, x928, x966);
fiat_np521_addcarryx_u64(&x987, &x988, x986, x930, x968);
fiat_np521_addcarryx_u64(&x989, &x990, x988, x932, x970);
fiat_np521_addcarryx_u64(&x991, &x992, x990, x934, x972);
fiat_np521_addcarryx_u64(&x993, &x994, x992, x936, x974);
fiat_np521_addcarryx_u64(&x995, &x996, x994, x938, x976);
fiat_np521_addcarryx_u64(&x997, &x998, x996, x940, x978);
fiat_np521_addcarryx_u64(&x999, &x1000, x998, x942, x980);
fiat_np521_addcarryx_u64(&x1001, &x1002, x1000, x944, x982);
fiat_np521_addcarryx_u64(&x1003, &x1004, x1002, x946, x984);
x1005 = ((uint64_t)x1004 + x947);
fiat_np521_subborrowx_u64(&x1006, &x1007, 0x0, x987, UINT64_C(0xbb6fb71e91386409));
fiat_np521_subborrowx_u64(&x1008, &x1009, x1007, x989, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_subborrowx_u64(&x1010, &x1011, x1009, x991, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_subborrowx_u64(&x1012, &x1013, x1011, x993, UINT64_C(0x51868783bf2f966b));
fiat_np521_subborrowx_u64(&x1014, &x1015, x1013, x995, UINT64_C(0xfffffffffffffffa));
fiat_np521_subborrowx_u64(&x1016, &x1017, x1015, x997, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x1018, &x1019, x1017, x999, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x1020, &x1021, x1019, x1001, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x1022, &x1023, x1021, x1003, UINT16_C(0x1ff));
fiat_np521_subborrowx_u64(&x1024, &x1025, x1023, x1005, 0x0);
fiat_np521_cmovznz_u64(&x1026, x1025, x1006, x987);
fiat_np521_cmovznz_u64(&x1027, x1025, x1008, x989);
fiat_np521_cmovznz_u64(&x1028, x1025, x1010, x991);
fiat_np521_cmovznz_u64(&x1029, x1025, x1012, x993);
fiat_np521_cmovznz_u64(&x1030, x1025, x1014, x995);
fiat_np521_cmovznz_u64(&x1031, x1025, x1016, x997);
fiat_np521_cmovznz_u64(&x1032, x1025, x1018, x999);
fiat_np521_cmovznz_u64(&x1033, x1025, x1020, x1001);
fiat_np521_cmovznz_u64(&x1034, x1025, x1022, x1003);
out1[0] = x1026;
out1[1] = x1027;
out1[2] = x1028;
out1[3] = x1029;
out1[4] = x1030;
out1[5] = x1031;
out1[6] = x1032;
out1[7] = x1033;
out1[8] = x1034;
}
/*
* The function fiat_np521_add adds two field elements in the Montgomery domain.
*
* Preconditions:
* 0 ≤ eval arg1 < m
* 0 ≤ eval arg2 < m
* Postconditions:
* eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m
* 0 ≤ eval out1 < m
*
*/
static void fiat_np521_add(fiat_np521_montgomery_domain_field_element out1, const fiat_np521_montgomery_domain_field_element arg1, const fiat_np521_montgomery_domain_field_element arg2) {
uint64_t x1;
fiat_np521_uint1 x2;
uint64_t x3;
fiat_np521_uint1 x4;
uint64_t x5;
fiat_np521_uint1 x6;
uint64_t x7;
fiat_np521_uint1 x8;
uint64_t x9;
fiat_np521_uint1 x10;
uint64_t x11;
fiat_np521_uint1 x12;
uint64_t x13;
fiat_np521_uint1 x14;
uint64_t x15;
fiat_np521_uint1 x16;
uint64_t x17;
fiat_np521_uint1 x18;
uint64_t x19;
fiat_np521_uint1 x20;
uint64_t x21;
fiat_np521_uint1 x22;
uint64_t x23;
fiat_np521_uint1 x24;
uint64_t x25;
fiat_np521_uint1 x26;
uint64_t x27;
fiat_np521_uint1 x28;
uint64_t x29;
fiat_np521_uint1 x30;
uint64_t x31;
fiat_np521_uint1 x32;
uint64_t x33;
fiat_np521_uint1 x34;
uint64_t x35;
fiat_np521_uint1 x36;
uint64_t x37;
fiat_np521_uint1 x38;
uint64_t x39;
uint64_t x40;
uint64_t x41;
uint64_t x42;
uint64_t x43;
uint64_t x44;
uint64_t x45;
uint64_t x46;
uint64_t x47;
fiat_np521_addcarryx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0]));
fiat_np521_addcarryx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1]));
fiat_np521_addcarryx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2]));
fiat_np521_addcarryx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3]));
fiat_np521_addcarryx_u64(&x9, &x10, x8, (arg1[4]), (arg2[4]));
fiat_np521_addcarryx_u64(&x11, &x12, x10, (arg1[5]), (arg2[5]));
fiat_np521_addcarryx_u64(&x13, &x14, x12, (arg1[6]), (arg2[6]));
fiat_np521_addcarryx_u64(&x15, &x16, x14, (arg1[7]), (arg2[7]));
fiat_np521_addcarryx_u64(&x17, &x18, x16, (arg1[8]), (arg2[8]));
fiat_np521_subborrowx_u64(&x19, &x20, 0x0, x1, UINT64_C(0xbb6fb71e91386409));
fiat_np521_subborrowx_u64(&x21, &x22, x20, x3, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_subborrowx_u64(&x23, &x24, x22, x5, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_subborrowx_u64(&x25, &x26, x24, x7, UINT64_C(0x51868783bf2f966b));
fiat_np521_subborrowx_u64(&x27, &x28, x26, x9, UINT64_C(0xfffffffffffffffa));
fiat_np521_subborrowx_u64(&x29, &x30, x28, x11, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x31, &x32, x30, x13, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x33, &x34, x32, x15, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x35, &x36, x34, x17, UINT16_C(0x1ff));
fiat_np521_subborrowx_u64(&x37, &x38, x36, x18, 0x0);
fiat_np521_cmovznz_u64(&x39, x38, x19, x1);
fiat_np521_cmovznz_u64(&x40, x38, x21, x3);
fiat_np521_cmovznz_u64(&x41, x38, x23, x5);
fiat_np521_cmovznz_u64(&x42, x38, x25, x7);
fiat_np521_cmovznz_u64(&x43, x38, x27, x9);
fiat_np521_cmovznz_u64(&x44, x38, x29, x11);
fiat_np521_cmovznz_u64(&x45, x38, x31, x13);
fiat_np521_cmovznz_u64(&x46, x38, x33, x15);
fiat_np521_cmovznz_u64(&x47, x38, x35, x17);
out1[0] = x39;
out1[1] = x40;
out1[2] = x41;
out1[3] = x42;
out1[4] = x43;
out1[5] = x44;
out1[6] = x45;
out1[7] = x46;
out1[8] = x47;
}
/*
* The function fiat_np521_opp negates a field element in the Montgomery domain.
*
* Preconditions:
* 0 ≤ eval arg1 < m
* Postconditions:
* eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m
* 0 ≤ eval out1 < m
*
*/
static void fiat_np521_opp(fiat_np521_montgomery_domain_field_element out1, const fiat_np521_montgomery_domain_field_element arg1) {
uint64_t x1;
fiat_np521_uint1 x2;
uint64_t x3;
fiat_np521_uint1 x4;
uint64_t x5;
fiat_np521_uint1 x6;
uint64_t x7;
fiat_np521_uint1 x8;
uint64_t x9;
fiat_np521_uint1 x10;
uint64_t x11;
fiat_np521_uint1 x12;
uint64_t x13;
fiat_np521_uint1 x14;
uint64_t x15;
fiat_np521_uint1 x16;
uint64_t x17;
fiat_np521_uint1 x18;
uint64_t x19;
uint64_t x20;
fiat_np521_uint1 x21;
uint64_t x22;
fiat_np521_uint1 x23;
uint64_t x24;
fiat_np521_uint1 x25;
uint64_t x26;
fiat_np521_uint1 x27;
uint64_t x28;
fiat_np521_uint1 x29;
uint64_t x30;
fiat_np521_uint1 x31;
uint64_t x32;
fiat_np521_uint1 x33;
uint64_t x34;
fiat_np521_uint1 x35;
uint64_t x36;
fiat_np521_uint1 x37;
fiat_np521_subborrowx_u64(&x1, &x2, 0x0, 0x0, (arg1[0]));
fiat_np521_subborrowx_u64(&x3, &x4, x2, 0x0, (arg1[1]));
fiat_np521_subborrowx_u64(&x5, &x6, x4, 0x0, (arg1[2]));
fiat_np521_subborrowx_u64(&x7, &x8, x6, 0x0, (arg1[3]));
fiat_np521_subborrowx_u64(&x9, &x10, x8, 0x0, (arg1[4]));
fiat_np521_subborrowx_u64(&x11, &x12, x10, 0x0, (arg1[5]));
fiat_np521_subborrowx_u64(&x13, &x14, x12, 0x0, (arg1[6]));
fiat_np521_subborrowx_u64(&x15, &x16, x14, 0x0, (arg1[7]));
fiat_np521_subborrowx_u64(&x17, &x18, x16, 0x0, (arg1[8]));
fiat_np521_cmovznz_u64(&x19, x18, 0x0, UINT64_C(0xffffffffffffffff));
fiat_np521_addcarryx_u64(&x20, &x21, 0x0, x1, (x19 & UINT64_C(0xbb6fb71e91386409)));
fiat_np521_addcarryx_u64(&x22, &x23, x21, x3, (x19 & UINT64_C(0x3bb5c9b8899c47ae)));
fiat_np521_addcarryx_u64(&x24, &x25, x23, x5, (x19 & UINT64_C(0x7fcc0148f709a5d0)));
fiat_np521_addcarryx_u64(&x26, &x27, x25, x7, (x19 & UINT64_C(0x51868783bf2f966b)));
fiat_np521_addcarryx_u64(&x28, &x29, x27, x9, (x19 & UINT64_C(0xfffffffffffffffa)));
fiat_np521_addcarryx_u64(&x30, &x31, x29, x11, x19);
fiat_np521_addcarryx_u64(&x32, &x33, x31, x13, x19);
fiat_np521_addcarryx_u64(&x34, &x35, x33, x15, x19);
fiat_np521_addcarryx_u64(&x36, &x37, x35, x17, (x19 & UINT16_C(0x1ff)));
out1[0] = x20;
out1[1] = x22;
out1[2] = x24;
out1[3] = x26;
out1[4] = x28;
out1[5] = x30;
out1[6] = x32;
out1[7] = x34;
out1[8] = x36;
}
/*
* The function fiat_np521_from_montgomery translates a field element out of the Montgomery domain.
*
* Preconditions:
* 0 ≤ eval arg1 < m
* Postconditions:
* eval out1 mod m = (eval arg1 * ((2^64)⁻¹ mod m)^9) mod m
* 0 ≤ eval out1 < m
*
*/
static void fiat_np521_from_montgomery(fiat_np521_non_montgomery_domain_field_element out1, const fiat_np521_montgomery_domain_field_element arg1) {
uint64_t x1;
uint64_t x2;
uint64_t x3;
uint64_t x4;
uint64_t x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
uint64_t x10;
uint64_t x11;
uint64_t x12;
uint64_t x13;
uint64_t x14;
uint64_t x15;
uint64_t x16;
uint64_t x17;
uint64_t x18;
uint64_t x19;
uint64_t x20;
uint64_t x21;
uint64_t x22;
fiat_np521_uint1 x23;
uint64_t x24;
fiat_np521_uint1 x25;
uint64_t x26;
fiat_np521_uint1 x27;
uint64_t x28;
fiat_np521_uint1 x29;
uint64_t x30;
fiat_np521_uint1 x31;
uint64_t x32;
fiat_np521_uint1 x33;
uint64_t x34;
fiat_np521_uint1 x35;
uint64_t x36;
fiat_np521_uint1 x37;
uint64_t x38;
fiat_np521_uint1 x39;
uint64_t x40;
fiat_np521_uint1 x41;
uint64_t x42;
fiat_np521_uint1 x43;
uint64_t x44;
fiat_np521_uint1 x45;
uint64_t x46;
fiat_np521_uint1 x47;
uint64_t x48;
fiat_np521_uint1 x49;
uint64_t x50;
fiat_np521_uint1 x51;
uint64_t x52;
fiat_np521_uint1 x53;
uint64_t x54;
fiat_np521_uint1 x55;
uint64_t x56;
fiat_np521_uint1 x57;
uint64_t x58;
fiat_np521_uint1 x59;
uint64_t x60;
fiat_np521_uint1 x61;
uint64_t x62;
fiat_np521_uint1 x63;
uint64_t x64;
fiat_np521_uint1 x65;
uint64_t x66;
fiat_np521_uint1 x67;
uint64_t x68;
fiat_np521_uint1 x69;
uint64_t x70;
fiat_np521_uint1 x71;
uint64_t x72;
uint64_t x73;
uint64_t x74;
uint64_t x75;
uint64_t x76;
uint64_t x77;
uint64_t x78;
uint64_t x79;
uint64_t x80;
uint64_t x81;
uint64_t x82;
uint64_t x83;
uint64_t x84;
uint64_t x85;
uint64_t x86;
uint64_t x87;
uint64_t x88;
uint64_t x89;
uint64_t x90;
uint64_t x91;
uint64_t x92;
fiat_np521_uint1 x93;
uint64_t x94;
fiat_np521_uint1 x95;
uint64_t x96;
fiat_np521_uint1 x97;
uint64_t x98;
fiat_np521_uint1 x99;
uint64_t x100;
fiat_np521_uint1 x101;
uint64_t x102;
fiat_np521_uint1 x103;
uint64_t x104;
fiat_np521_uint1 x105;
uint64_t x106;
fiat_np521_uint1 x107;
uint64_t x108;
fiat_np521_uint1 x109;
uint64_t x110;
fiat_np521_uint1 x111;
uint64_t x112;
fiat_np521_uint1 x113;
uint64_t x114;
fiat_np521_uint1 x115;
uint64_t x116;
fiat_np521_uint1 x117;
uint64_t x118;
fiat_np521_uint1 x119;
uint64_t x120;
fiat_np521_uint1 x121;
uint64_t x122;
fiat_np521_uint1 x123;
uint64_t x124;
fiat_np521_uint1 x125;
uint64_t x126;
fiat_np521_uint1 x127;
uint64_t x128;
fiat_np521_uint1 x129;
uint64_t x130;
fiat_np521_uint1 x131;
uint64_t x132;
fiat_np521_uint1 x133;
uint64_t x134;
fiat_np521_uint1 x135;
uint64_t x136;
fiat_np521_uint1 x137;
uint64_t x138;
fiat_np521_uint1 x139;
uint64_t x140;
fiat_np521_uint1 x141;
uint64_t x142;
uint64_t x143;
uint64_t x144;
uint64_t x145;
uint64_t x146;
uint64_t x147;
uint64_t x148;
uint64_t x149;
uint64_t x150;
uint64_t x151;
uint64_t x152;
uint64_t x153;
uint64_t x154;
uint64_t x155;
uint64_t x156;
uint64_t x157;
uint64_t x158;
uint64_t x159;
uint64_t x160;
uint64_t x161;
uint64_t x162;
fiat_np521_uint1 x163;
uint64_t x164;
fiat_np521_uint1 x165;
uint64_t x166;
fiat_np521_uint1 x167;
uint64_t x168;
fiat_np521_uint1 x169;
uint64_t x170;
fiat_np521_uint1 x171;
uint64_t x172;
fiat_np521_uint1 x173;
uint64_t x174;
fiat_np521_uint1 x175;
uint64_t x176;
fiat_np521_uint1 x177;
uint64_t x178;
fiat_np521_uint1 x179;
uint64_t x180;
fiat_np521_uint1 x181;
uint64_t x182;
fiat_np521_uint1 x183;
uint64_t x184;
fiat_np521_uint1 x185;
uint64_t x186;
fiat_np521_uint1 x187;
uint64_t x188;
fiat_np521_uint1 x189;
uint64_t x190;
fiat_np521_uint1 x191;
uint64_t x192;
fiat_np521_uint1 x193;
uint64_t x194;
fiat_np521_uint1 x195;
uint64_t x196;
fiat_np521_uint1 x197;
uint64_t x198;
fiat_np521_uint1 x199;
uint64_t x200;
fiat_np521_uint1 x201;
uint64_t x202;
fiat_np521_uint1 x203;
uint64_t x204;
fiat_np521_uint1 x205;
uint64_t x206;
fiat_np521_uint1 x207;
uint64_t x208;
fiat_np521_uint1 x209;
uint64_t x210;
fiat_np521_uint1 x211;
uint64_t x212;
uint64_t x213;
uint64_t x214;
uint64_t x215;
uint64_t x216;
uint64_t x217;
uint64_t x218;
uint64_t x219;
uint64_t x220;
uint64_t x221;
uint64_t x222;
uint64_t x223;
uint64_t x224;
uint64_t x225;
uint64_t x226;
uint64_t x227;
uint64_t x228;
uint64_t x229;
uint64_t x230;
uint64_t x231;
uint64_t x232;
fiat_np521_uint1 x233;
uint64_t x234;
fiat_np521_uint1 x235;
uint64_t x236;
fiat_np521_uint1 x237;
uint64_t x238;
fiat_np521_uint1 x239;
uint64_t x240;
fiat_np521_uint1 x241;
uint64_t x242;
fiat_np521_uint1 x243;
uint64_t x244;
fiat_np521_uint1 x245;
uint64_t x246;
fiat_np521_uint1 x247;
uint64_t x248;
fiat_np521_uint1 x249;
uint64_t x250;
fiat_np521_uint1 x251;
uint64_t x252;
fiat_np521_uint1 x253;
uint64_t x254;
fiat_np521_uint1 x255;
uint64_t x256;
fiat_np521_uint1 x257;
uint64_t x258;
fiat_np521_uint1 x259;
uint64_t x260;
fiat_np521_uint1 x261;
uint64_t x262;
fiat_np521_uint1 x263;
uint64_t x264;
fiat_np521_uint1 x265;
uint64_t x266;
fiat_np521_uint1 x267;
uint64_t x268;
fiat_np521_uint1 x269;
uint64_t x270;
fiat_np521_uint1 x271;
uint64_t x272;
fiat_np521_uint1 x273;
uint64_t x274;
fiat_np521_uint1 x275;
uint64_t x276;
fiat_np521_uint1 x277;
uint64_t x278;
fiat_np521_uint1 x279;
uint64_t x280;
fiat_np521_uint1 x281;
uint64_t x282;
uint64_t x283;
uint64_t x284;
uint64_t x285;
uint64_t x286;
uint64_t x287;
uint64_t x288;
uint64_t x289;
uint64_t x290;
uint64_t x291;
uint64_t x292;
uint64_t x293;
uint64_t x294;
uint64_t x295;
uint64_t x296;
uint64_t x297;
uint64_t x298;
uint64_t x299;
uint64_t x300;
uint64_t x301;
uint64_t x302;
fiat_np521_uint1 x303;
uint64_t x304;
fiat_np521_uint1 x305;
uint64_t x306;
fiat_np521_uint1 x307;
uint64_t x308;
fiat_np521_uint1 x309;
uint64_t x310;
fiat_np521_uint1 x311;
uint64_t x312;
fiat_np521_uint1 x313;
uint64_t x314;
fiat_np521_uint1 x315;
uint64_t x316;
fiat_np521_uint1 x317;
uint64_t x318;
fiat_np521_uint1 x319;
uint64_t x320;
fiat_np521_uint1 x321;
uint64_t x322;
fiat_np521_uint1 x323;
uint64_t x324;
fiat_np521_uint1 x325;
uint64_t x326;
fiat_np521_uint1 x327;
uint64_t x328;
fiat_np521_uint1 x329;
uint64_t x330;
fiat_np521_uint1 x331;
uint64_t x332;
fiat_np521_uint1 x333;
uint64_t x334;
fiat_np521_uint1 x335;
uint64_t x336;
fiat_np521_uint1 x337;
uint64_t x338;
fiat_np521_uint1 x339;
uint64_t x340;
fiat_np521_uint1 x341;
uint64_t x342;
fiat_np521_uint1 x343;
uint64_t x344;
fiat_np521_uint1 x345;
uint64_t x346;
fiat_np521_uint1 x347;
uint64_t x348;
fiat_np521_uint1 x349;
uint64_t x350;
fiat_np521_uint1 x351;
uint64_t x352;
uint64_t x353;
uint64_t x354;
uint64_t x355;
uint64_t x356;
uint64_t x357;
uint64_t x358;
uint64_t x359;
uint64_t x360;
uint64_t x361;
uint64_t x362;
uint64_t x363;
uint64_t x364;
uint64_t x365;
uint64_t x366;
uint64_t x367;
uint64_t x368;
uint64_t x369;
uint64_t x370;
uint64_t x371;
uint64_t x372;
fiat_np521_uint1 x373;
uint64_t x374;
fiat_np521_uint1 x375;
uint64_t x376;
fiat_np521_uint1 x377;
uint64_t x378;
fiat_np521_uint1 x379;
uint64_t x380;
fiat_np521_uint1 x381;
uint64_t x382;
fiat_np521_uint1 x383;
uint64_t x384;
fiat_np521_uint1 x385;
uint64_t x386;
fiat_np521_uint1 x387;
uint64_t x388;
fiat_np521_uint1 x389;
uint64_t x390;
fiat_np521_uint1 x391;
uint64_t x392;
fiat_np521_uint1 x393;
uint64_t x394;
fiat_np521_uint1 x395;
uint64_t x396;
fiat_np521_uint1 x397;
uint64_t x398;
fiat_np521_uint1 x399;
uint64_t x400;
fiat_np521_uint1 x401;
uint64_t x402;
fiat_np521_uint1 x403;
uint64_t x404;
fiat_np521_uint1 x405;
uint64_t x406;
fiat_np521_uint1 x407;
uint64_t x408;
fiat_np521_uint1 x409;
uint64_t x410;
fiat_np521_uint1 x411;
uint64_t x412;
fiat_np521_uint1 x413;
uint64_t x414;
fiat_np521_uint1 x415;
uint64_t x416;
fiat_np521_uint1 x417;
uint64_t x418;
fiat_np521_uint1 x419;
uint64_t x420;
fiat_np521_uint1 x421;
uint64_t x422;
uint64_t x423;
uint64_t x424;
uint64_t x425;
uint64_t x426;
uint64_t x427;
uint64_t x428;
uint64_t x429;
uint64_t x430;
uint64_t x431;
uint64_t x432;
uint64_t x433;
uint64_t x434;
uint64_t x435;
uint64_t x436;
uint64_t x437;
uint64_t x438;
uint64_t x439;
uint64_t x440;
uint64_t x441;
uint64_t x442;
fiat_np521_uint1 x443;
uint64_t x444;
fiat_np521_uint1 x445;
uint64_t x446;
fiat_np521_uint1 x447;
uint64_t x448;
fiat_np521_uint1 x449;
uint64_t x450;
fiat_np521_uint1 x451;
uint64_t x452;
fiat_np521_uint1 x453;
uint64_t x454;
fiat_np521_uint1 x455;
uint64_t x456;
fiat_np521_uint1 x457;
uint64_t x458;
fiat_np521_uint1 x459;
uint64_t x460;
fiat_np521_uint1 x461;
uint64_t x462;
fiat_np521_uint1 x463;
uint64_t x464;
fiat_np521_uint1 x465;
uint64_t x466;
fiat_np521_uint1 x467;
uint64_t x468;
fiat_np521_uint1 x469;
uint64_t x470;
fiat_np521_uint1 x471;
uint64_t x472;
fiat_np521_uint1 x473;
uint64_t x474;
fiat_np521_uint1 x475;
uint64_t x476;
fiat_np521_uint1 x477;
uint64_t x478;
fiat_np521_uint1 x479;
uint64_t x480;
fiat_np521_uint1 x481;
uint64_t x482;
fiat_np521_uint1 x483;
uint64_t x484;
fiat_np521_uint1 x485;
uint64_t x486;
fiat_np521_uint1 x487;
uint64_t x488;
fiat_np521_uint1 x489;
uint64_t x490;
fiat_np521_uint1 x491;
uint64_t x492;
uint64_t x493;
uint64_t x494;
uint64_t x495;
uint64_t x496;
uint64_t x497;
uint64_t x498;
uint64_t x499;
uint64_t x500;
uint64_t x501;
uint64_t x502;
uint64_t x503;
uint64_t x504;
uint64_t x505;
uint64_t x506;
uint64_t x507;
uint64_t x508;
uint64_t x509;
uint64_t x510;
uint64_t x511;
uint64_t x512;
fiat_np521_uint1 x513;
uint64_t x514;
fiat_np521_uint1 x515;
uint64_t x516;
fiat_np521_uint1 x517;
uint64_t x518;
fiat_np521_uint1 x519;
uint64_t x520;
fiat_np521_uint1 x521;
uint64_t x522;
fiat_np521_uint1 x523;
uint64_t x524;
fiat_np521_uint1 x525;
uint64_t x526;
fiat_np521_uint1 x527;
uint64_t x528;
fiat_np521_uint1 x529;
uint64_t x530;
fiat_np521_uint1 x531;
uint64_t x532;
fiat_np521_uint1 x533;
uint64_t x534;
fiat_np521_uint1 x535;
uint64_t x536;
fiat_np521_uint1 x537;
uint64_t x538;
fiat_np521_uint1 x539;
uint64_t x540;
fiat_np521_uint1 x541;
uint64_t x542;
fiat_np521_uint1 x543;
uint64_t x544;
fiat_np521_uint1 x545;
uint64_t x546;
fiat_np521_uint1 x547;
uint64_t x548;
fiat_np521_uint1 x549;
uint64_t x550;
fiat_np521_uint1 x551;
uint64_t x552;
fiat_np521_uint1 x553;
uint64_t x554;
fiat_np521_uint1 x555;
uint64_t x556;
fiat_np521_uint1 x557;
uint64_t x558;
fiat_np521_uint1 x559;
uint64_t x560;
fiat_np521_uint1 x561;
uint64_t x562;
uint64_t x563;
uint64_t x564;
uint64_t x565;
uint64_t x566;
uint64_t x567;
uint64_t x568;
uint64_t x569;
uint64_t x570;
uint64_t x571;
uint64_t x572;
uint64_t x573;
uint64_t x574;
uint64_t x575;
uint64_t x576;
uint64_t x577;
uint64_t x578;
uint64_t x579;
uint64_t x580;
uint64_t x581;
uint64_t x582;
fiat_np521_uint1 x583;
uint64_t x584;
fiat_np521_uint1 x585;
uint64_t x586;
fiat_np521_uint1 x587;
uint64_t x588;
fiat_np521_uint1 x589;
uint64_t x590;
fiat_np521_uint1 x591;
uint64_t x592;
fiat_np521_uint1 x593;
uint64_t x594;
fiat_np521_uint1 x595;
uint64_t x596;
fiat_np521_uint1 x597;
uint64_t x598;
fiat_np521_uint1 x599;
uint64_t x600;
fiat_np521_uint1 x601;
uint64_t x602;
fiat_np521_uint1 x603;
uint64_t x604;
fiat_np521_uint1 x605;
uint64_t x606;
fiat_np521_uint1 x607;
uint64_t x608;
fiat_np521_uint1 x609;
uint64_t x610;
fiat_np521_uint1 x611;
uint64_t x612;
fiat_np521_uint1 x613;
uint64_t x614;
fiat_np521_uint1 x615;
uint64_t x616;
uint64_t x617;
fiat_np521_uint1 x618;
uint64_t x619;
fiat_np521_uint1 x620;
uint64_t x621;
fiat_np521_uint1 x622;
uint64_t x623;
fiat_np521_uint1 x624;
uint64_t x625;
fiat_np521_uint1 x626;
uint64_t x627;
fiat_np521_uint1 x628;
uint64_t x629;
fiat_np521_uint1 x630;
uint64_t x631;
fiat_np521_uint1 x632;
uint64_t x633;
fiat_np521_uint1 x634;
uint64_t x635;
fiat_np521_uint1 x636;
uint64_t x637;
uint64_t x638;
uint64_t x639;
uint64_t x640;
uint64_t x641;
uint64_t x642;
uint64_t x643;
uint64_t x644;
uint64_t x645;
x1 = (arg1[0]);
fiat_np521_mulx_u64(&x2, &x3, x1, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x4, &x5, x2, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x6, &x7, x2, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x8, &x9, x2, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x10, &x11, x2, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x12, &x13, x2, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x14, &x15, x2, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x16, &x17, x2, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x18, &x19, x2, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x20, &x21, x2, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x22, &x23, 0x0, x21, x18);
fiat_np521_addcarryx_u64(&x24, &x25, x23, x19, x16);
fiat_np521_addcarryx_u64(&x26, &x27, x25, x17, x14);
fiat_np521_addcarryx_u64(&x28, &x29, x27, x15, x12);
fiat_np521_addcarryx_u64(&x30, &x31, x29, x13, x10);
fiat_np521_addcarryx_u64(&x32, &x33, x31, x11, x8);
fiat_np521_addcarryx_u64(&x34, &x35, x33, x9, x6);
fiat_np521_addcarryx_u64(&x36, &x37, x35, x7, x4);
fiat_np521_addcarryx_u64(&x38, &x39, 0x0, x1, x20);
fiat_np521_addcarryx_u64(&x40, &x41, x39, 0x0, x22);
fiat_np521_addcarryx_u64(&x42, &x43, x41, 0x0, x24);
fiat_np521_addcarryx_u64(&x44, &x45, x43, 0x0, x26);
fiat_np521_addcarryx_u64(&x46, &x47, x45, 0x0, x28);
fiat_np521_addcarryx_u64(&x48, &x49, x47, 0x0, x30);
fiat_np521_addcarryx_u64(&x50, &x51, x49, 0x0, x32);
fiat_np521_addcarryx_u64(&x52, &x53, x51, 0x0, x34);
fiat_np521_addcarryx_u64(&x54, &x55, x53, 0x0, x36);
fiat_np521_addcarryx_u64(&x56, &x57, 0x0, x40, (arg1[1]));
fiat_np521_addcarryx_u64(&x58, &x59, x57, x42, 0x0);
fiat_np521_addcarryx_u64(&x60, &x61, x59, x44, 0x0);
fiat_np521_addcarryx_u64(&x62, &x63, x61, x46, 0x0);
fiat_np521_addcarryx_u64(&x64, &x65, x63, x48, 0x0);
fiat_np521_addcarryx_u64(&x66, &x67, x65, x50, 0x0);
fiat_np521_addcarryx_u64(&x68, &x69, x67, x52, 0x0);
fiat_np521_addcarryx_u64(&x70, &x71, x69, x54, 0x0);
fiat_np521_mulx_u64(&x72, &x73, x56, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x74, &x75, x72, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x76, &x77, x72, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x78, &x79, x72, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x80, &x81, x72, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x82, &x83, x72, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x84, &x85, x72, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x86, &x87, x72, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x88, &x89, x72, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x90, &x91, x72, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x92, &x93, 0x0, x91, x88);
fiat_np521_addcarryx_u64(&x94, &x95, x93, x89, x86);
fiat_np521_addcarryx_u64(&x96, &x97, x95, x87, x84);
fiat_np521_addcarryx_u64(&x98, &x99, x97, x85, x82);
fiat_np521_addcarryx_u64(&x100, &x101, x99, x83, x80);
fiat_np521_addcarryx_u64(&x102, &x103, x101, x81, x78);
fiat_np521_addcarryx_u64(&x104, &x105, x103, x79, x76);
fiat_np521_addcarryx_u64(&x106, &x107, x105, x77, x74);
fiat_np521_addcarryx_u64(&x108, &x109, 0x0, x56, x90);
fiat_np521_addcarryx_u64(&x110, &x111, x109, x58, x92);
fiat_np521_addcarryx_u64(&x112, &x113, x111, x60, x94);
fiat_np521_addcarryx_u64(&x114, &x115, x113, x62, x96);
fiat_np521_addcarryx_u64(&x116, &x117, x115, x64, x98);
fiat_np521_addcarryx_u64(&x118, &x119, x117, x66, x100);
fiat_np521_addcarryx_u64(&x120, &x121, x119, x68, x102);
fiat_np521_addcarryx_u64(&x122, &x123, x121, x70, x104);
fiat_np521_addcarryx_u64(&x124, &x125, x123, (x71 + (x55 + (x37 + x5))), x106);
fiat_np521_addcarryx_u64(&x126, &x127, 0x0, x110, (arg1[2]));
fiat_np521_addcarryx_u64(&x128, &x129, x127, x112, 0x0);
fiat_np521_addcarryx_u64(&x130, &x131, x129, x114, 0x0);
fiat_np521_addcarryx_u64(&x132, &x133, x131, x116, 0x0);
fiat_np521_addcarryx_u64(&x134, &x135, x133, x118, 0x0);
fiat_np521_addcarryx_u64(&x136, &x137, x135, x120, 0x0);
fiat_np521_addcarryx_u64(&x138, &x139, x137, x122, 0x0);
fiat_np521_addcarryx_u64(&x140, &x141, x139, x124, 0x0);
fiat_np521_mulx_u64(&x142, &x143, x126, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x144, &x145, x142, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x146, &x147, x142, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x148, &x149, x142, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x150, &x151, x142, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x152, &x153, x142, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x154, &x155, x142, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x156, &x157, x142, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x158, &x159, x142, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x160, &x161, x142, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x162, &x163, 0x0, x161, x158);
fiat_np521_addcarryx_u64(&x164, &x165, x163, x159, x156);
fiat_np521_addcarryx_u64(&x166, &x167, x165, x157, x154);
fiat_np521_addcarryx_u64(&x168, &x169, x167, x155, x152);
fiat_np521_addcarryx_u64(&x170, &x171, x169, x153, x150);
fiat_np521_addcarryx_u64(&x172, &x173, x171, x151, x148);
fiat_np521_addcarryx_u64(&x174, &x175, x173, x149, x146);
fiat_np521_addcarryx_u64(&x176, &x177, x175, x147, x144);
fiat_np521_addcarryx_u64(&x178, &x179, 0x0, x126, x160);
fiat_np521_addcarryx_u64(&x180, &x181, x179, x128, x162);
fiat_np521_addcarryx_u64(&x182, &x183, x181, x130, x164);
fiat_np521_addcarryx_u64(&x184, &x185, x183, x132, x166);
fiat_np521_addcarryx_u64(&x186, &x187, x185, x134, x168);
fiat_np521_addcarryx_u64(&x188, &x189, x187, x136, x170);
fiat_np521_addcarryx_u64(&x190, &x191, x189, x138, x172);
fiat_np521_addcarryx_u64(&x192, &x193, x191, x140, x174);
fiat_np521_addcarryx_u64(&x194, &x195, x193, (x141 + (x125 + (x107 + x75))), x176);
fiat_np521_addcarryx_u64(&x196, &x197, 0x0, x180, (arg1[3]));
fiat_np521_addcarryx_u64(&x198, &x199, x197, x182, 0x0);
fiat_np521_addcarryx_u64(&x200, &x201, x199, x184, 0x0);
fiat_np521_addcarryx_u64(&x202, &x203, x201, x186, 0x0);
fiat_np521_addcarryx_u64(&x204, &x205, x203, x188, 0x0);
fiat_np521_addcarryx_u64(&x206, &x207, x205, x190, 0x0);
fiat_np521_addcarryx_u64(&x208, &x209, x207, x192, 0x0);
fiat_np521_addcarryx_u64(&x210, &x211, x209, x194, 0x0);
fiat_np521_mulx_u64(&x212, &x213, x196, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x214, &x215, x212, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x216, &x217, x212, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x218, &x219, x212, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x220, &x221, x212, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x222, &x223, x212, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x224, &x225, x212, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x226, &x227, x212, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x228, &x229, x212, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x230, &x231, x212, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x232, &x233, 0x0, x231, x228);
fiat_np521_addcarryx_u64(&x234, &x235, x233, x229, x226);
fiat_np521_addcarryx_u64(&x236, &x237, x235, x227, x224);
fiat_np521_addcarryx_u64(&x238, &x239, x237, x225, x222);
fiat_np521_addcarryx_u64(&x240, &x241, x239, x223, x220);
fiat_np521_addcarryx_u64(&x242, &x243, x241, x221, x218);
fiat_np521_addcarryx_u64(&x244, &x245, x243, x219, x216);
fiat_np521_addcarryx_u64(&x246, &x247, x245, x217, x214);
fiat_np521_addcarryx_u64(&x248, &x249, 0x0, x196, x230);
fiat_np521_addcarryx_u64(&x250, &x251, x249, x198, x232);
fiat_np521_addcarryx_u64(&x252, &x253, x251, x200, x234);
fiat_np521_addcarryx_u64(&x254, &x255, x253, x202, x236);
fiat_np521_addcarryx_u64(&x256, &x257, x255, x204, x238);
fiat_np521_addcarryx_u64(&x258, &x259, x257, x206, x240);
fiat_np521_addcarryx_u64(&x260, &x261, x259, x208, x242);
fiat_np521_addcarryx_u64(&x262, &x263, x261, x210, x244);
fiat_np521_addcarryx_u64(&x264, &x265, x263, (x211 + (x195 + (x177 + x145))), x246);
fiat_np521_addcarryx_u64(&x266, &x267, 0x0, x250, (arg1[4]));
fiat_np521_addcarryx_u64(&x268, &x269, x267, x252, 0x0);
fiat_np521_addcarryx_u64(&x270, &x271, x269, x254, 0x0);
fiat_np521_addcarryx_u64(&x272, &x273, x271, x256, 0x0);
fiat_np521_addcarryx_u64(&x274, &x275, x273, x258, 0x0);
fiat_np521_addcarryx_u64(&x276, &x277, x275, x260, 0x0);
fiat_np521_addcarryx_u64(&x278, &x279, x277, x262, 0x0);
fiat_np521_addcarryx_u64(&x280, &x281, x279, x264, 0x0);
fiat_np521_mulx_u64(&x282, &x283, x266, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x284, &x285, x282, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x286, &x287, x282, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x288, &x289, x282, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x290, &x291, x282, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x292, &x293, x282, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x294, &x295, x282, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x296, &x297, x282, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x298, &x299, x282, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x300, &x301, x282, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x302, &x303, 0x0, x301, x298);
fiat_np521_addcarryx_u64(&x304, &x305, x303, x299, x296);
fiat_np521_addcarryx_u64(&x306, &x307, x305, x297, x294);
fiat_np521_addcarryx_u64(&x308, &x309, x307, x295, x292);
fiat_np521_addcarryx_u64(&x310, &x311, x309, x293, x290);
fiat_np521_addcarryx_u64(&x312, &x313, x311, x291, x288);
fiat_np521_addcarryx_u64(&x314, &x315, x313, x289, x286);
fiat_np521_addcarryx_u64(&x316, &x317, x315, x287, x284);
fiat_np521_addcarryx_u64(&x318, &x319, 0x0, x266, x300);
fiat_np521_addcarryx_u64(&x320, &x321, x319, x268, x302);
fiat_np521_addcarryx_u64(&x322, &x323, x321, x270, x304);
fiat_np521_addcarryx_u64(&x324, &x325, x323, x272, x306);
fiat_np521_addcarryx_u64(&x326, &x327, x325, x274, x308);
fiat_np521_addcarryx_u64(&x328, &x329, x327, x276, x310);
fiat_np521_addcarryx_u64(&x330, &x331, x329, x278, x312);
fiat_np521_addcarryx_u64(&x332, &x333, x331, x280, x314);
fiat_np521_addcarryx_u64(&x334, &x335, x333, (x281 + (x265 + (x247 + x215))), x316);
fiat_np521_addcarryx_u64(&x336, &x337, 0x0, x320, (arg1[5]));
fiat_np521_addcarryx_u64(&x338, &x339, x337, x322, 0x0);
fiat_np521_addcarryx_u64(&x340, &x341, x339, x324, 0x0);
fiat_np521_addcarryx_u64(&x342, &x343, x341, x326, 0x0);
fiat_np521_addcarryx_u64(&x344, &x345, x343, x328, 0x0);
fiat_np521_addcarryx_u64(&x346, &x347, x345, x330, 0x0);
fiat_np521_addcarryx_u64(&x348, &x349, x347, x332, 0x0);
fiat_np521_addcarryx_u64(&x350, &x351, x349, x334, 0x0);
fiat_np521_mulx_u64(&x352, &x353, x336, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x354, &x355, x352, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x356, &x357, x352, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x358, &x359, x352, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x360, &x361, x352, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x362, &x363, x352, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x364, &x365, x352, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x366, &x367, x352, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x368, &x369, x352, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x370, &x371, x352, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x372, &x373, 0x0, x371, x368);
fiat_np521_addcarryx_u64(&x374, &x375, x373, x369, x366);
fiat_np521_addcarryx_u64(&x376, &x377, x375, x367, x364);
fiat_np521_addcarryx_u64(&x378, &x379, x377, x365, x362);
fiat_np521_addcarryx_u64(&x380, &x381, x379, x363, x360);
fiat_np521_addcarryx_u64(&x382, &x383, x381, x361, x358);
fiat_np521_addcarryx_u64(&x384, &x385, x383, x359, x356);
fiat_np521_addcarryx_u64(&x386, &x387, x385, x357, x354);
fiat_np521_addcarryx_u64(&x388, &x389, 0x0, x336, x370);
fiat_np521_addcarryx_u64(&x390, &x391, x389, x338, x372);
fiat_np521_addcarryx_u64(&x392, &x393, x391, x340, x374);
fiat_np521_addcarryx_u64(&x394, &x395, x393, x342, x376);
fiat_np521_addcarryx_u64(&x396, &x397, x395, x344, x378);
fiat_np521_addcarryx_u64(&x398, &x399, x397, x346, x380);
fiat_np521_addcarryx_u64(&x400, &x401, x399, x348, x382);
fiat_np521_addcarryx_u64(&x402, &x403, x401, x350, x384);
fiat_np521_addcarryx_u64(&x404, &x405, x403, (x351 + (x335 + (x317 + x285))), x386);
fiat_np521_addcarryx_u64(&x406, &x407, 0x0, x390, (arg1[6]));
fiat_np521_addcarryx_u64(&x408, &x409, x407, x392, 0x0);
fiat_np521_addcarryx_u64(&x410, &x411, x409, x394, 0x0);
fiat_np521_addcarryx_u64(&x412, &x413, x411, x396, 0x0);
fiat_np521_addcarryx_u64(&x414, &x415, x413, x398, 0x0);
fiat_np521_addcarryx_u64(&x416, &x417, x415, x400, 0x0);
fiat_np521_addcarryx_u64(&x418, &x419, x417, x402, 0x0);
fiat_np521_addcarryx_u64(&x420, &x421, x419, x404, 0x0);
fiat_np521_mulx_u64(&x422, &x423, x406, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x424, &x425, x422, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x426, &x427, x422, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x428, &x429, x422, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x430, &x431, x422, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x432, &x433, x422, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x434, &x435, x422, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x436, &x437, x422, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x438, &x439, x422, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x440, &x441, x422, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x442, &x443, 0x0, x441, x438);
fiat_np521_addcarryx_u64(&x444, &x445, x443, x439, x436);
fiat_np521_addcarryx_u64(&x446, &x447, x445, x437, x434);
fiat_np521_addcarryx_u64(&x448, &x449, x447, x435, x432);
fiat_np521_addcarryx_u64(&x450, &x451, x449, x433, x430);
fiat_np521_addcarryx_u64(&x452, &x453, x451, x431, x428);
fiat_np521_addcarryx_u64(&x454, &x455, x453, x429, x426);
fiat_np521_addcarryx_u64(&x456, &x457, x455, x427, x424);
fiat_np521_addcarryx_u64(&x458, &x459, 0x0, x406, x440);
fiat_np521_addcarryx_u64(&x460, &x461, x459, x408, x442);
fiat_np521_addcarryx_u64(&x462, &x463, x461, x410, x444);
fiat_np521_addcarryx_u64(&x464, &x465, x463, x412, x446);
fiat_np521_addcarryx_u64(&x466, &x467, x465, x414, x448);
fiat_np521_addcarryx_u64(&x468, &x469, x467, x416, x450);
fiat_np521_addcarryx_u64(&x470, &x471, x469, x418, x452);
fiat_np521_addcarryx_u64(&x472, &x473, x471, x420, x454);
fiat_np521_addcarryx_u64(&x474, &x475, x473, (x421 + (x405 + (x387 + x355))), x456);
fiat_np521_addcarryx_u64(&x476, &x477, 0x0, x460, (arg1[7]));
fiat_np521_addcarryx_u64(&x478, &x479, x477, x462, 0x0);
fiat_np521_addcarryx_u64(&x480, &x481, x479, x464, 0x0);
fiat_np521_addcarryx_u64(&x482, &x483, x481, x466, 0x0);
fiat_np521_addcarryx_u64(&x484, &x485, x483, x468, 0x0);
fiat_np521_addcarryx_u64(&x486, &x487, x485, x470, 0x0);
fiat_np521_addcarryx_u64(&x488, &x489, x487, x472, 0x0);
fiat_np521_addcarryx_u64(&x490, &x491, x489, x474, 0x0);
fiat_np521_mulx_u64(&x492, &x493, x476, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x494, &x495, x492, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x496, &x497, x492, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x498, &x499, x492, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x500, &x501, x492, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x502, &x503, x492, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x504, &x505, x492, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x506, &x507, x492, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x508, &x509, x492, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x510, &x511, x492, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x512, &x513, 0x0, x511, x508);
fiat_np521_addcarryx_u64(&x514, &x515, x513, x509, x506);
fiat_np521_addcarryx_u64(&x516, &x517, x515, x507, x504);
fiat_np521_addcarryx_u64(&x518, &x519, x517, x505, x502);
fiat_np521_addcarryx_u64(&x520, &x521, x519, x503, x500);
fiat_np521_addcarryx_u64(&x522, &x523, x521, x501, x498);
fiat_np521_addcarryx_u64(&x524, &x525, x523, x499, x496);
fiat_np521_addcarryx_u64(&x526, &x527, x525, x497, x494);
fiat_np521_addcarryx_u64(&x528, &x529, 0x0, x476, x510);
fiat_np521_addcarryx_u64(&x530, &x531, x529, x478, x512);
fiat_np521_addcarryx_u64(&x532, &x533, x531, x480, x514);
fiat_np521_addcarryx_u64(&x534, &x535, x533, x482, x516);
fiat_np521_addcarryx_u64(&x536, &x537, x535, x484, x518);
fiat_np521_addcarryx_u64(&x538, &x539, x537, x486, x520);
fiat_np521_addcarryx_u64(&x540, &x541, x539, x488, x522);
fiat_np521_addcarryx_u64(&x542, &x543, x541, x490, x524);
fiat_np521_addcarryx_u64(&x544, &x545, x543, (x491 + (x475 + (x457 + x425))), x526);
fiat_np521_addcarryx_u64(&x546, &x547, 0x0, x530, (arg1[8]));
fiat_np521_addcarryx_u64(&x548, &x549, x547, x532, 0x0);
fiat_np521_addcarryx_u64(&x550, &x551, x549, x534, 0x0);
fiat_np521_addcarryx_u64(&x552, &x553, x551, x536, 0x0);
fiat_np521_addcarryx_u64(&x554, &x555, x553, x538, 0x0);
fiat_np521_addcarryx_u64(&x556, &x557, x555, x540, 0x0);
fiat_np521_addcarryx_u64(&x558, &x559, x557, x542, 0x0);
fiat_np521_addcarryx_u64(&x560, &x561, x559, x544, 0x0);
fiat_np521_mulx_u64(&x562, &x563, x546, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x564, &x565, x562, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x566, &x567, x562, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x568, &x569, x562, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x570, &x571, x562, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x572, &x573, x562, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x574, &x575, x562, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x576, &x577, x562, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x578, &x579, x562, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x580, &x581, x562, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x582, &x583, 0x0, x581, x578);
fiat_np521_addcarryx_u64(&x584, &x585, x583, x579, x576);
fiat_np521_addcarryx_u64(&x586, &x587, x585, x577, x574);
fiat_np521_addcarryx_u64(&x588, &x589, x587, x575, x572);
fiat_np521_addcarryx_u64(&x590, &x591, x589, x573, x570);
fiat_np521_addcarryx_u64(&x592, &x593, x591, x571, x568);
fiat_np521_addcarryx_u64(&x594, &x595, x593, x569, x566);
fiat_np521_addcarryx_u64(&x596, &x597, x595, x567, x564);
fiat_np521_addcarryx_u64(&x598, &x599, 0x0, x546, x580);
fiat_np521_addcarryx_u64(&x600, &x601, x599, x548, x582);
fiat_np521_addcarryx_u64(&x602, &x603, x601, x550, x584);
fiat_np521_addcarryx_u64(&x604, &x605, x603, x552, x586);
fiat_np521_addcarryx_u64(&x606, &x607, x605, x554, x588);
fiat_np521_addcarryx_u64(&x608, &x609, x607, x556, x590);
fiat_np521_addcarryx_u64(&x610, &x611, x609, x558, x592);
fiat_np521_addcarryx_u64(&x612, &x613, x611, x560, x594);
fiat_np521_addcarryx_u64(&x614, &x615, x613, (x561 + (x545 + (x527 + x495))), x596);
x616 = (x615 + (x597 + x565));
fiat_np521_subborrowx_u64(&x617, &x618, 0x0, x600, UINT64_C(0xbb6fb71e91386409));
fiat_np521_subborrowx_u64(&x619, &x620, x618, x602, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_subborrowx_u64(&x621, &x622, x620, x604, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_subborrowx_u64(&x623, &x624, x622, x606, UINT64_C(0x51868783bf2f966b));
fiat_np521_subborrowx_u64(&x625, &x626, x624, x608, UINT64_C(0xfffffffffffffffa));
fiat_np521_subborrowx_u64(&x627, &x628, x626, x610, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x629, &x630, x628, x612, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x631, &x632, x630, x614, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x633, &x634, x632, x616, UINT16_C(0x1ff));
fiat_np521_subborrowx_u64(&x635, &x636, x634, 0x0, 0x0);
fiat_np521_cmovznz_u64(&x637, x636, x617, x600);
fiat_np521_cmovznz_u64(&x638, x636, x619, x602);
fiat_np521_cmovznz_u64(&x639, x636, x621, x604);
fiat_np521_cmovznz_u64(&x640, x636, x623, x606);
fiat_np521_cmovznz_u64(&x641, x636, x625, x608);
fiat_np521_cmovznz_u64(&x642, x636, x627, x610);
fiat_np521_cmovznz_u64(&x643, x636, x629, x612);
fiat_np521_cmovznz_u64(&x644, x636, x631, x614);
fiat_np521_cmovznz_u64(&x645, x636, x633, x616);
out1[0] = x637;
out1[1] = x638;
out1[2] = x639;
out1[3] = x640;
out1[4] = x641;
out1[5] = x642;
out1[6] = x643;
out1[7] = x644;
out1[8] = x645;
}
/*
* The function fiat_np521_to_montgomery translates a field element into the Montgomery domain.
*
* Preconditions:
* 0 ≤ eval arg1 < m
* Postconditions:
* eval (from_montgomery out1) mod m = eval arg1 mod m
* 0 ≤ eval out1 < m
*
*/
static void fiat_np521_to_montgomery(fiat_np521_montgomery_domain_field_element out1, const fiat_np521_non_montgomery_domain_field_element arg1) {
uint64_t x1;
uint64_t x2;
uint64_t x3;
uint64_t x4;
uint64_t x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
uint64_t x10;
uint64_t x11;
uint64_t x12;
uint64_t x13;
uint64_t x14;
uint64_t x15;
uint64_t x16;
uint64_t x17;
uint64_t x18;
uint64_t x19;
uint64_t x20;
uint64_t x21;
uint64_t x22;
uint64_t x23;
uint64_t x24;
uint64_t x25;
uint64_t x26;
uint64_t x27;
uint64_t x28;
fiat_np521_uint1 x29;
uint64_t x30;
fiat_np521_uint1 x31;
uint64_t x32;
fiat_np521_uint1 x33;
uint64_t x34;
fiat_np521_uint1 x35;
uint64_t x36;
fiat_np521_uint1 x37;
uint64_t x38;
fiat_np521_uint1 x39;
uint64_t x40;
fiat_np521_uint1 x41;
uint64_t x42;
fiat_np521_uint1 x43;
uint64_t x44;
uint64_t x45;
uint64_t x46;
uint64_t x47;
uint64_t x48;
uint64_t x49;
uint64_t x50;
uint64_t x51;
uint64_t x52;
uint64_t x53;
uint64_t x54;
uint64_t x55;
uint64_t x56;
uint64_t x57;
uint64_t x58;
uint64_t x59;
uint64_t x60;
uint64_t x61;
uint64_t x62;
uint64_t x63;
uint64_t x64;
fiat_np521_uint1 x65;
uint64_t x66;
fiat_np521_uint1 x67;
uint64_t x68;
fiat_np521_uint1 x69;
uint64_t x70;
fiat_np521_uint1 x71;
uint64_t x72;
fiat_np521_uint1 x73;
uint64_t x74;
fiat_np521_uint1 x75;
uint64_t x76;
fiat_np521_uint1 x77;
uint64_t x78;
fiat_np521_uint1 x79;
uint64_t x80;
fiat_np521_uint1 x81;
uint64_t x82;
fiat_np521_uint1 x83;
uint64_t x84;
fiat_np521_uint1 x85;
uint64_t x86;
fiat_np521_uint1 x87;
uint64_t x88;
fiat_np521_uint1 x89;
uint64_t x90;
fiat_np521_uint1 x91;
uint64_t x92;
fiat_np521_uint1 x93;
uint64_t x94;
fiat_np521_uint1 x95;
uint64_t x96;
fiat_np521_uint1 x97;
uint64_t x98;
uint64_t x99;
uint64_t x100;
uint64_t x101;
uint64_t x102;
uint64_t x103;
uint64_t x104;
uint64_t x105;
uint64_t x106;
uint64_t x107;
uint64_t x108;
uint64_t x109;
uint64_t x110;
uint64_t x111;
uint64_t x112;
uint64_t x113;
uint64_t x114;
uint64_t x115;
uint64_t x116;
fiat_np521_uint1 x117;
uint64_t x118;
fiat_np521_uint1 x119;
uint64_t x120;
fiat_np521_uint1 x121;
uint64_t x122;
fiat_np521_uint1 x123;
uint64_t x124;
fiat_np521_uint1 x125;
uint64_t x126;
fiat_np521_uint1 x127;
uint64_t x128;
fiat_np521_uint1 x129;
uint64_t x130;
fiat_np521_uint1 x131;
uint64_t x132;
fiat_np521_uint1 x133;
uint64_t x134;
fiat_np521_uint1 x135;
uint64_t x136;
fiat_np521_uint1 x137;
uint64_t x138;
fiat_np521_uint1 x139;
uint64_t x140;
fiat_np521_uint1 x141;
uint64_t x142;
fiat_np521_uint1 x143;
uint64_t x144;
fiat_np521_uint1 x145;
uint64_t x146;
fiat_np521_uint1 x147;
uint64_t x148;
fiat_np521_uint1 x149;
uint64_t x150;
uint64_t x151;
uint64_t x152;
uint64_t x153;
uint64_t x154;
uint64_t x155;
uint64_t x156;
uint64_t x157;
uint64_t x158;
uint64_t x159;
uint64_t x160;
uint64_t x161;
uint64_t x162;
uint64_t x163;
uint64_t x164;
uint64_t x165;
uint64_t x166;
uint64_t x167;
uint64_t x168;
uint64_t x169;
uint64_t x170;
fiat_np521_uint1 x171;
uint64_t x172;
fiat_np521_uint1 x173;
uint64_t x174;
fiat_np521_uint1 x175;
uint64_t x176;
fiat_np521_uint1 x177;
uint64_t x178;
fiat_np521_uint1 x179;
uint64_t x180;
fiat_np521_uint1 x181;
uint64_t x182;
fiat_np521_uint1 x183;
uint64_t x184;
fiat_np521_uint1 x185;
uint64_t x186;
fiat_np521_uint1 x187;
uint64_t x188;
fiat_np521_uint1 x189;
uint64_t x190;
fiat_np521_uint1 x191;
uint64_t x192;
fiat_np521_uint1 x193;
uint64_t x194;
fiat_np521_uint1 x195;
uint64_t x196;
fiat_np521_uint1 x197;
uint64_t x198;
fiat_np521_uint1 x199;
uint64_t x200;
fiat_np521_uint1 x201;
uint64_t x202;
fiat_np521_uint1 x203;
uint64_t x204;
uint64_t x205;
uint64_t x206;
uint64_t x207;
uint64_t x208;
uint64_t x209;
uint64_t x210;
uint64_t x211;
uint64_t x212;
uint64_t x213;
uint64_t x214;
uint64_t x215;
uint64_t x216;
uint64_t x217;
uint64_t x218;
uint64_t x219;
uint64_t x220;
uint64_t x221;
uint64_t x222;
fiat_np521_uint1 x223;
uint64_t x224;
fiat_np521_uint1 x225;
uint64_t x226;
fiat_np521_uint1 x227;
uint64_t x228;
fiat_np521_uint1 x229;
uint64_t x230;
fiat_np521_uint1 x231;
uint64_t x232;
fiat_np521_uint1 x233;
uint64_t x234;
fiat_np521_uint1 x235;
uint64_t x236;
fiat_np521_uint1 x237;
uint64_t x238;
fiat_np521_uint1 x239;
uint64_t x240;
fiat_np521_uint1 x241;
uint64_t x242;
fiat_np521_uint1 x243;
uint64_t x244;
fiat_np521_uint1 x245;
uint64_t x246;
fiat_np521_uint1 x247;
uint64_t x248;
fiat_np521_uint1 x249;
uint64_t x250;
fiat_np521_uint1 x251;
uint64_t x252;
fiat_np521_uint1 x253;
uint64_t x254;
fiat_np521_uint1 x255;
uint64_t x256;
uint64_t x257;
uint64_t x258;
uint64_t x259;
uint64_t x260;
uint64_t x261;
uint64_t x262;
uint64_t x263;
uint64_t x264;
uint64_t x265;
uint64_t x266;
uint64_t x267;
uint64_t x268;
uint64_t x269;
uint64_t x270;
uint64_t x271;
uint64_t x272;
uint64_t x273;
uint64_t x274;
uint64_t x275;
uint64_t x276;
fiat_np521_uint1 x277;
uint64_t x278;
fiat_np521_uint1 x279;
uint64_t x280;
fiat_np521_uint1 x281;
uint64_t x282;
fiat_np521_uint1 x283;
uint64_t x284;
fiat_np521_uint1 x285;
uint64_t x286;
fiat_np521_uint1 x287;
uint64_t x288;
fiat_np521_uint1 x289;
uint64_t x290;
fiat_np521_uint1 x291;
uint64_t x292;
fiat_np521_uint1 x293;
uint64_t x294;
fiat_np521_uint1 x295;
uint64_t x296;
fiat_np521_uint1 x297;
uint64_t x298;
fiat_np521_uint1 x299;
uint64_t x300;
fiat_np521_uint1 x301;
uint64_t x302;
fiat_np521_uint1 x303;
uint64_t x304;
fiat_np521_uint1 x305;
uint64_t x306;
fiat_np521_uint1 x307;
uint64_t x308;
fiat_np521_uint1 x309;
uint64_t x310;
uint64_t x311;
uint64_t x312;
uint64_t x313;
uint64_t x314;
uint64_t x315;
uint64_t x316;
uint64_t x317;
uint64_t x318;
uint64_t x319;
uint64_t x320;
uint64_t x321;
uint64_t x322;
uint64_t x323;
uint64_t x324;
uint64_t x325;
uint64_t x326;
uint64_t x327;
uint64_t x328;
fiat_np521_uint1 x329;
uint64_t x330;
fiat_np521_uint1 x331;
uint64_t x332;
fiat_np521_uint1 x333;
uint64_t x334;
fiat_np521_uint1 x335;
uint64_t x336;
fiat_np521_uint1 x337;
uint64_t x338;
fiat_np521_uint1 x339;
uint64_t x340;
fiat_np521_uint1 x341;
uint64_t x342;
fiat_np521_uint1 x343;
uint64_t x344;
fiat_np521_uint1 x345;
uint64_t x346;
fiat_np521_uint1 x347;
uint64_t x348;
fiat_np521_uint1 x349;
uint64_t x350;
fiat_np521_uint1 x351;
uint64_t x352;
fiat_np521_uint1 x353;
uint64_t x354;
fiat_np521_uint1 x355;
uint64_t x356;
fiat_np521_uint1 x357;
uint64_t x358;
fiat_np521_uint1 x359;
uint64_t x360;
fiat_np521_uint1 x361;
uint64_t x362;
uint64_t x363;
uint64_t x364;
uint64_t x365;
uint64_t x366;
uint64_t x367;
uint64_t x368;
uint64_t x369;
uint64_t x370;
uint64_t x371;
uint64_t x372;
uint64_t x373;
uint64_t x374;
uint64_t x375;
uint64_t x376;
uint64_t x377;
uint64_t x378;
uint64_t x379;
uint64_t x380;
uint64_t x381;
uint64_t x382;
fiat_np521_uint1 x383;
uint64_t x384;
fiat_np521_uint1 x385;
uint64_t x386;
fiat_np521_uint1 x387;
uint64_t x388;
fiat_np521_uint1 x389;
uint64_t x390;
fiat_np521_uint1 x391;
uint64_t x392;
fiat_np521_uint1 x393;
uint64_t x394;
fiat_np521_uint1 x395;
uint64_t x396;
fiat_np521_uint1 x397;
uint64_t x398;
fiat_np521_uint1 x399;
uint64_t x400;
fiat_np521_uint1 x401;
uint64_t x402;
fiat_np521_uint1 x403;
uint64_t x404;
fiat_np521_uint1 x405;
uint64_t x406;
fiat_np521_uint1 x407;
uint64_t x408;
fiat_np521_uint1 x409;
uint64_t x410;
fiat_np521_uint1 x411;
uint64_t x412;
fiat_np521_uint1 x413;
uint64_t x414;
fiat_np521_uint1 x415;
uint64_t x416;
uint64_t x417;
uint64_t x418;
uint64_t x419;
uint64_t x420;
uint64_t x421;
uint64_t x422;
uint64_t x423;
uint64_t x424;
uint64_t x425;
uint64_t x426;
uint64_t x427;
uint64_t x428;
uint64_t x429;
uint64_t x430;
uint64_t x431;
uint64_t x432;
uint64_t x433;
uint64_t x434;
fiat_np521_uint1 x435;
uint64_t x436;
fiat_np521_uint1 x437;
uint64_t x438;
fiat_np521_uint1 x439;
uint64_t x440;
fiat_np521_uint1 x441;
uint64_t x442;
fiat_np521_uint1 x443;
uint64_t x444;
fiat_np521_uint1 x445;
uint64_t x446;
fiat_np521_uint1 x447;
uint64_t x448;
fiat_np521_uint1 x449;
uint64_t x450;
fiat_np521_uint1 x451;
uint64_t x452;
fiat_np521_uint1 x453;
uint64_t x454;
fiat_np521_uint1 x455;
uint64_t x456;
fiat_np521_uint1 x457;
uint64_t x458;
fiat_np521_uint1 x459;
uint64_t x460;
fiat_np521_uint1 x461;
uint64_t x462;
fiat_np521_uint1 x463;
uint64_t x464;
fiat_np521_uint1 x465;
uint64_t x466;
fiat_np521_uint1 x467;
uint64_t x468;
uint64_t x469;
uint64_t x470;
uint64_t x471;
uint64_t x472;
uint64_t x473;
uint64_t x474;
uint64_t x475;
uint64_t x476;
uint64_t x477;
uint64_t x478;
uint64_t x479;
uint64_t x480;
uint64_t x481;
uint64_t x482;
uint64_t x483;
uint64_t x484;
uint64_t x485;
uint64_t x486;
uint64_t x487;
uint64_t x488;
fiat_np521_uint1 x489;
uint64_t x490;
fiat_np521_uint1 x491;
uint64_t x492;
fiat_np521_uint1 x493;
uint64_t x494;
fiat_np521_uint1 x495;
uint64_t x496;
fiat_np521_uint1 x497;
uint64_t x498;
fiat_np521_uint1 x499;
uint64_t x500;
fiat_np521_uint1 x501;
uint64_t x502;
fiat_np521_uint1 x503;
uint64_t x504;
fiat_np521_uint1 x505;
uint64_t x506;
fiat_np521_uint1 x507;
uint64_t x508;
fiat_np521_uint1 x509;
uint64_t x510;
fiat_np521_uint1 x511;
uint64_t x512;
fiat_np521_uint1 x513;
uint64_t x514;
fiat_np521_uint1 x515;
uint64_t x516;
fiat_np521_uint1 x517;
uint64_t x518;
fiat_np521_uint1 x519;
uint64_t x520;
fiat_np521_uint1 x521;
uint64_t x522;
uint64_t x523;
uint64_t x524;
uint64_t x525;
uint64_t x526;
uint64_t x527;
uint64_t x528;
uint64_t x529;
uint64_t x530;
uint64_t x531;
uint64_t x532;
uint64_t x533;
uint64_t x534;
uint64_t x535;
uint64_t x536;
uint64_t x537;
uint64_t x538;
uint64_t x539;
uint64_t x540;
fiat_np521_uint1 x541;
uint64_t x542;
fiat_np521_uint1 x543;
uint64_t x544;
fiat_np521_uint1 x545;
uint64_t x546;
fiat_np521_uint1 x547;
uint64_t x548;
fiat_np521_uint1 x549;
uint64_t x550;
fiat_np521_uint1 x551;
uint64_t x552;
fiat_np521_uint1 x553;
uint64_t x554;
fiat_np521_uint1 x555;
uint64_t x556;
fiat_np521_uint1 x557;
uint64_t x558;
fiat_np521_uint1 x559;
uint64_t x560;
fiat_np521_uint1 x561;
uint64_t x562;
fiat_np521_uint1 x563;
uint64_t x564;
fiat_np521_uint1 x565;
uint64_t x566;
fiat_np521_uint1 x567;
uint64_t x568;
fiat_np521_uint1 x569;
uint64_t x570;
fiat_np521_uint1 x571;
uint64_t x572;
fiat_np521_uint1 x573;
uint64_t x574;
uint64_t x575;
uint64_t x576;
uint64_t x577;
uint64_t x578;
uint64_t x579;
uint64_t x580;
uint64_t x581;
uint64_t x582;
uint64_t x583;
uint64_t x584;
uint64_t x585;
uint64_t x586;
uint64_t x587;
uint64_t x588;
uint64_t x589;
uint64_t x590;
uint64_t x591;
uint64_t x592;
uint64_t x593;
uint64_t x594;
fiat_np521_uint1 x595;
uint64_t x596;
fiat_np521_uint1 x597;
uint64_t x598;
fiat_np521_uint1 x599;
uint64_t x600;
fiat_np521_uint1 x601;
uint64_t x602;
fiat_np521_uint1 x603;
uint64_t x604;
fiat_np521_uint1 x605;
uint64_t x606;
fiat_np521_uint1 x607;
uint64_t x608;
fiat_np521_uint1 x609;
uint64_t x610;
fiat_np521_uint1 x611;
uint64_t x612;
fiat_np521_uint1 x613;
uint64_t x614;
fiat_np521_uint1 x615;
uint64_t x616;
fiat_np521_uint1 x617;
uint64_t x618;
fiat_np521_uint1 x619;
uint64_t x620;
fiat_np521_uint1 x621;
uint64_t x622;
fiat_np521_uint1 x623;
uint64_t x624;
fiat_np521_uint1 x625;
uint64_t x626;
fiat_np521_uint1 x627;
uint64_t x628;
uint64_t x629;
uint64_t x630;
uint64_t x631;
uint64_t x632;
uint64_t x633;
uint64_t x634;
uint64_t x635;
uint64_t x636;
uint64_t x637;
uint64_t x638;
uint64_t x639;
uint64_t x640;
uint64_t x641;
uint64_t x642;
uint64_t x643;
uint64_t x644;
uint64_t x645;
uint64_t x646;
fiat_np521_uint1 x647;
uint64_t x648;
fiat_np521_uint1 x649;
uint64_t x650;
fiat_np521_uint1 x651;
uint64_t x652;
fiat_np521_uint1 x653;
uint64_t x654;
fiat_np521_uint1 x655;
uint64_t x656;
fiat_np521_uint1 x657;
uint64_t x658;
fiat_np521_uint1 x659;
uint64_t x660;
fiat_np521_uint1 x661;
uint64_t x662;
fiat_np521_uint1 x663;
uint64_t x664;
fiat_np521_uint1 x665;
uint64_t x666;
fiat_np521_uint1 x667;
uint64_t x668;
fiat_np521_uint1 x669;
uint64_t x670;
fiat_np521_uint1 x671;
uint64_t x672;
fiat_np521_uint1 x673;
uint64_t x674;
fiat_np521_uint1 x675;
uint64_t x676;
fiat_np521_uint1 x677;
uint64_t x678;
fiat_np521_uint1 x679;
uint64_t x680;
uint64_t x681;
uint64_t x682;
uint64_t x683;
uint64_t x684;
uint64_t x685;
uint64_t x686;
uint64_t x687;
uint64_t x688;
uint64_t x689;
uint64_t x690;
uint64_t x691;
uint64_t x692;
uint64_t x693;
uint64_t x694;
uint64_t x695;
uint64_t x696;
uint64_t x697;
uint64_t x698;
uint64_t x699;
uint64_t x700;
fiat_np521_uint1 x701;
uint64_t x702;
fiat_np521_uint1 x703;
uint64_t x704;
fiat_np521_uint1 x705;
uint64_t x706;
fiat_np521_uint1 x707;
uint64_t x708;
fiat_np521_uint1 x709;
uint64_t x710;
fiat_np521_uint1 x711;
uint64_t x712;
fiat_np521_uint1 x713;
uint64_t x714;
fiat_np521_uint1 x715;
uint64_t x716;
fiat_np521_uint1 x717;
uint64_t x718;
fiat_np521_uint1 x719;
uint64_t x720;
fiat_np521_uint1 x721;
uint64_t x722;
fiat_np521_uint1 x723;
uint64_t x724;
fiat_np521_uint1 x725;
uint64_t x726;
fiat_np521_uint1 x727;
uint64_t x728;
fiat_np521_uint1 x729;
uint64_t x730;
fiat_np521_uint1 x731;
uint64_t x732;
fiat_np521_uint1 x733;
uint64_t x734;
uint64_t x735;
uint64_t x736;
uint64_t x737;
uint64_t x738;
uint64_t x739;
uint64_t x740;
uint64_t x741;
uint64_t x742;
uint64_t x743;
uint64_t x744;
uint64_t x745;
uint64_t x746;
uint64_t x747;
uint64_t x748;
uint64_t x749;
uint64_t x750;
uint64_t x751;
uint64_t x752;
fiat_np521_uint1 x753;
uint64_t x754;
fiat_np521_uint1 x755;
uint64_t x756;
fiat_np521_uint1 x757;
uint64_t x758;
fiat_np521_uint1 x759;
uint64_t x760;
fiat_np521_uint1 x761;
uint64_t x762;
fiat_np521_uint1 x763;
uint64_t x764;
fiat_np521_uint1 x765;
uint64_t x766;
fiat_np521_uint1 x767;
uint64_t x768;
fiat_np521_uint1 x769;
uint64_t x770;
fiat_np521_uint1 x771;
uint64_t x772;
fiat_np521_uint1 x773;
uint64_t x774;
fiat_np521_uint1 x775;
uint64_t x776;
fiat_np521_uint1 x777;
uint64_t x778;
fiat_np521_uint1 x779;
uint64_t x780;
fiat_np521_uint1 x781;
uint64_t x782;
fiat_np521_uint1 x783;
uint64_t x784;
fiat_np521_uint1 x785;
uint64_t x786;
uint64_t x787;
uint64_t x788;
uint64_t x789;
uint64_t x790;
uint64_t x791;
uint64_t x792;
uint64_t x793;
uint64_t x794;
uint64_t x795;
uint64_t x796;
uint64_t x797;
uint64_t x798;
uint64_t x799;
uint64_t x800;
uint64_t x801;
uint64_t x802;
uint64_t x803;
uint64_t x804;
uint64_t x805;
uint64_t x806;
fiat_np521_uint1 x807;
uint64_t x808;
fiat_np521_uint1 x809;
uint64_t x810;
fiat_np521_uint1 x811;
uint64_t x812;
fiat_np521_uint1 x813;
uint64_t x814;
fiat_np521_uint1 x815;
uint64_t x816;
fiat_np521_uint1 x817;
uint64_t x818;
fiat_np521_uint1 x819;
uint64_t x820;
fiat_np521_uint1 x821;
uint64_t x822;
fiat_np521_uint1 x823;
uint64_t x824;
fiat_np521_uint1 x825;
uint64_t x826;
fiat_np521_uint1 x827;
uint64_t x828;
fiat_np521_uint1 x829;
uint64_t x830;
fiat_np521_uint1 x831;
uint64_t x832;
fiat_np521_uint1 x833;
uint64_t x834;
fiat_np521_uint1 x835;
uint64_t x836;
fiat_np521_uint1 x837;
uint64_t x838;
fiat_np521_uint1 x839;
uint64_t x840;
uint64_t x841;
uint64_t x842;
uint64_t x843;
uint64_t x844;
uint64_t x845;
uint64_t x846;
uint64_t x847;
uint64_t x848;
uint64_t x849;
uint64_t x850;
uint64_t x851;
uint64_t x852;
uint64_t x853;
uint64_t x854;
uint64_t x855;
uint64_t x856;
uint64_t x857;
uint64_t x858;
fiat_np521_uint1 x859;
uint64_t x860;
fiat_np521_uint1 x861;
uint64_t x862;
fiat_np521_uint1 x863;
uint64_t x864;
fiat_np521_uint1 x865;
uint64_t x866;
fiat_np521_uint1 x867;
uint64_t x868;
fiat_np521_uint1 x869;
uint64_t x870;
fiat_np521_uint1 x871;
uint64_t x872;
fiat_np521_uint1 x873;
uint64_t x874;
fiat_np521_uint1 x875;
uint64_t x876;
fiat_np521_uint1 x877;
uint64_t x878;
fiat_np521_uint1 x879;
uint64_t x880;
fiat_np521_uint1 x881;
uint64_t x882;
fiat_np521_uint1 x883;
uint64_t x884;
fiat_np521_uint1 x885;
uint64_t x886;
fiat_np521_uint1 x887;
uint64_t x888;
fiat_np521_uint1 x889;
uint64_t x890;
fiat_np521_uint1 x891;
uint64_t x892;
uint64_t x893;
uint64_t x894;
uint64_t x895;
uint64_t x896;
uint64_t x897;
uint64_t x898;
uint64_t x899;
uint64_t x900;
uint64_t x901;
uint64_t x902;
uint64_t x903;
uint64_t x904;
uint64_t x905;
uint64_t x906;
uint64_t x907;
uint64_t x908;
uint64_t x909;
uint64_t x910;
uint64_t x911;
uint64_t x912;
fiat_np521_uint1 x913;
uint64_t x914;
fiat_np521_uint1 x915;
uint64_t x916;
fiat_np521_uint1 x917;
uint64_t x918;
fiat_np521_uint1 x919;
uint64_t x920;
fiat_np521_uint1 x921;
uint64_t x922;
fiat_np521_uint1 x923;
uint64_t x924;
fiat_np521_uint1 x925;
uint64_t x926;
fiat_np521_uint1 x927;
uint64_t x928;
fiat_np521_uint1 x929;
uint64_t x930;
fiat_np521_uint1 x931;
uint64_t x932;
fiat_np521_uint1 x933;
uint64_t x934;
fiat_np521_uint1 x935;
uint64_t x936;
fiat_np521_uint1 x937;
uint64_t x938;
fiat_np521_uint1 x939;
uint64_t x940;
fiat_np521_uint1 x941;
uint64_t x942;
fiat_np521_uint1 x943;
uint64_t x944;
fiat_np521_uint1 x945;
uint64_t x946;
uint64_t x947;
fiat_np521_uint1 x948;
uint64_t x949;
fiat_np521_uint1 x950;
uint64_t x951;
fiat_np521_uint1 x952;
uint64_t x953;
fiat_np521_uint1 x954;
uint64_t x955;
fiat_np521_uint1 x956;
uint64_t x957;
fiat_np521_uint1 x958;
uint64_t x959;
fiat_np521_uint1 x960;
uint64_t x961;
fiat_np521_uint1 x962;
uint64_t x963;
fiat_np521_uint1 x964;
uint64_t x965;
fiat_np521_uint1 x966;
uint64_t x967;
uint64_t x968;
uint64_t x969;
uint64_t x970;
uint64_t x971;
uint64_t x972;
uint64_t x973;
uint64_t x974;
uint64_t x975;
x1 = (arg1[1]);
x2 = (arg1[2]);
x3 = (arg1[3]);
x4 = (arg1[4]);
x5 = (arg1[5]);
x6 = (arg1[6]);
x7 = (arg1[7]);
x8 = (arg1[8]);
x9 = (arg1[0]);
fiat_np521_mulx_u64(&x10, &x11, x9, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x12, &x13, x9, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x14, &x15, x9, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x16, &x17, x9, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x18, &x19, x9, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x20, &x21, x9, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x22, &x23, x9, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x24, &x25, x9, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x26, &x27, x9, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x28, &x29, 0x0, x27, x24);
fiat_np521_addcarryx_u64(&x30, &x31, x29, x25, x22);
fiat_np521_addcarryx_u64(&x32, &x33, x31, x23, x20);
fiat_np521_addcarryx_u64(&x34, &x35, x33, x21, x18);
fiat_np521_addcarryx_u64(&x36, &x37, x35, x19, x16);
fiat_np521_addcarryx_u64(&x38, &x39, x37, x17, x14);
fiat_np521_addcarryx_u64(&x40, &x41, x39, x15, x12);
fiat_np521_addcarryx_u64(&x42, &x43, x41, x13, x10);
fiat_np521_mulx_u64(&x44, &x45, x26, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x46, &x47, x44, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x48, &x49, x44, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x50, &x51, x44, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x52, &x53, x44, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x54, &x55, x44, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x56, &x57, x44, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x58, &x59, x44, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x60, &x61, x44, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x62, &x63, x44, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x64, &x65, 0x0, x63, x60);
fiat_np521_addcarryx_u64(&x66, &x67, x65, x61, x58);
fiat_np521_addcarryx_u64(&x68, &x69, x67, x59, x56);
fiat_np521_addcarryx_u64(&x70, &x71, x69, x57, x54);
fiat_np521_addcarryx_u64(&x72, &x73, x71, x55, x52);
fiat_np521_addcarryx_u64(&x74, &x75, x73, x53, x50);
fiat_np521_addcarryx_u64(&x76, &x77, x75, x51, x48);
fiat_np521_addcarryx_u64(&x78, &x79, x77, x49, x46);
fiat_np521_addcarryx_u64(&x80, &x81, 0x0, x26, x62);
fiat_np521_addcarryx_u64(&x82, &x83, x81, x28, x64);
fiat_np521_addcarryx_u64(&x84, &x85, x83, x30, x66);
fiat_np521_addcarryx_u64(&x86, &x87, x85, x32, x68);
fiat_np521_addcarryx_u64(&x88, &x89, x87, x34, x70);
fiat_np521_addcarryx_u64(&x90, &x91, x89, x36, x72);
fiat_np521_addcarryx_u64(&x92, &x93, x91, x38, x74);
fiat_np521_addcarryx_u64(&x94, &x95, x93, x40, x76);
fiat_np521_addcarryx_u64(&x96, &x97, x95, x42, x78);
fiat_np521_mulx_u64(&x98, &x99, x1, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x100, &x101, x1, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x102, &x103, x1, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x104, &x105, x1, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x106, &x107, x1, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x108, &x109, x1, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x110, &x111, x1, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x112, &x113, x1, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x114, &x115, x1, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x116, &x117, 0x0, x115, x112);
fiat_np521_addcarryx_u64(&x118, &x119, x117, x113, x110);
fiat_np521_addcarryx_u64(&x120, &x121, x119, x111, x108);
fiat_np521_addcarryx_u64(&x122, &x123, x121, x109, x106);
fiat_np521_addcarryx_u64(&x124, &x125, x123, x107, x104);
fiat_np521_addcarryx_u64(&x126, &x127, x125, x105, x102);
fiat_np521_addcarryx_u64(&x128, &x129, x127, x103, x100);
fiat_np521_addcarryx_u64(&x130, &x131, x129, x101, x98);
fiat_np521_addcarryx_u64(&x132, &x133, 0x0, x82, x114);
fiat_np521_addcarryx_u64(&x134, &x135, x133, x84, x116);
fiat_np521_addcarryx_u64(&x136, &x137, x135, x86, x118);
fiat_np521_addcarryx_u64(&x138, &x139, x137, x88, x120);
fiat_np521_addcarryx_u64(&x140, &x141, x139, x90, x122);
fiat_np521_addcarryx_u64(&x142, &x143, x141, x92, x124);
fiat_np521_addcarryx_u64(&x144, &x145, x143, x94, x126);
fiat_np521_addcarryx_u64(&x146, &x147, x145, x96, x128);
fiat_np521_addcarryx_u64(&x148, &x149, x147, ((x97 + (x43 + x11)) + (x79 + x47)), x130);
fiat_np521_mulx_u64(&x150, &x151, x132, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x152, &x153, x150, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x154, &x155, x150, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x156, &x157, x150, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x158, &x159, x150, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x160, &x161, x150, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x162, &x163, x150, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x164, &x165, x150, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x166, &x167, x150, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x168, &x169, x150, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x170, &x171, 0x0, x169, x166);
fiat_np521_addcarryx_u64(&x172, &x173, x171, x167, x164);
fiat_np521_addcarryx_u64(&x174, &x175, x173, x165, x162);
fiat_np521_addcarryx_u64(&x176, &x177, x175, x163, x160);
fiat_np521_addcarryx_u64(&x178, &x179, x177, x161, x158);
fiat_np521_addcarryx_u64(&x180, &x181, x179, x159, x156);
fiat_np521_addcarryx_u64(&x182, &x183, x181, x157, x154);
fiat_np521_addcarryx_u64(&x184, &x185, x183, x155, x152);
fiat_np521_addcarryx_u64(&x186, &x187, 0x0, x132, x168);
fiat_np521_addcarryx_u64(&x188, &x189, x187, x134, x170);
fiat_np521_addcarryx_u64(&x190, &x191, x189, x136, x172);
fiat_np521_addcarryx_u64(&x192, &x193, x191, x138, x174);
fiat_np521_addcarryx_u64(&x194, &x195, x193, x140, x176);
fiat_np521_addcarryx_u64(&x196, &x197, x195, x142, x178);
fiat_np521_addcarryx_u64(&x198, &x199, x197, x144, x180);
fiat_np521_addcarryx_u64(&x200, &x201, x199, x146, x182);
fiat_np521_addcarryx_u64(&x202, &x203, x201, x148, x184);
fiat_np521_mulx_u64(&x204, &x205, x2, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x206, &x207, x2, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x208, &x209, x2, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x210, &x211, x2, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x212, &x213, x2, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x214, &x215, x2, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x216, &x217, x2, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x218, &x219, x2, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x220, &x221, x2, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x222, &x223, 0x0, x221, x218);
fiat_np521_addcarryx_u64(&x224, &x225, x223, x219, x216);
fiat_np521_addcarryx_u64(&x226, &x227, x225, x217, x214);
fiat_np521_addcarryx_u64(&x228, &x229, x227, x215, x212);
fiat_np521_addcarryx_u64(&x230, &x231, x229, x213, x210);
fiat_np521_addcarryx_u64(&x232, &x233, x231, x211, x208);
fiat_np521_addcarryx_u64(&x234, &x235, x233, x209, x206);
fiat_np521_addcarryx_u64(&x236, &x237, x235, x207, x204);
fiat_np521_addcarryx_u64(&x238, &x239, 0x0, x188, x220);
fiat_np521_addcarryx_u64(&x240, &x241, x239, x190, x222);
fiat_np521_addcarryx_u64(&x242, &x243, x241, x192, x224);
fiat_np521_addcarryx_u64(&x244, &x245, x243, x194, x226);
fiat_np521_addcarryx_u64(&x246, &x247, x245, x196, x228);
fiat_np521_addcarryx_u64(&x248, &x249, x247, x198, x230);
fiat_np521_addcarryx_u64(&x250, &x251, x249, x200, x232);
fiat_np521_addcarryx_u64(&x252, &x253, x251, x202, x234);
fiat_np521_addcarryx_u64(&x254, &x255, x253, ((x203 + (x149 + (x131 + x99))) + (x185 + x153)), x236);
fiat_np521_mulx_u64(&x256, &x257, x238, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x258, &x259, x256, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x260, &x261, x256, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x262, &x263, x256, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x264, &x265, x256, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x266, &x267, x256, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x268, &x269, x256, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x270, &x271, x256, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x272, &x273, x256, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x274, &x275, x256, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x276, &x277, 0x0, x275, x272);
fiat_np521_addcarryx_u64(&x278, &x279, x277, x273, x270);
fiat_np521_addcarryx_u64(&x280, &x281, x279, x271, x268);
fiat_np521_addcarryx_u64(&x282, &x283, x281, x269, x266);
fiat_np521_addcarryx_u64(&x284, &x285, x283, x267, x264);
fiat_np521_addcarryx_u64(&x286, &x287, x285, x265, x262);
fiat_np521_addcarryx_u64(&x288, &x289, x287, x263, x260);
fiat_np521_addcarryx_u64(&x290, &x291, x289, x261, x258);
fiat_np521_addcarryx_u64(&x292, &x293, 0x0, x238, x274);
fiat_np521_addcarryx_u64(&x294, &x295, x293, x240, x276);
fiat_np521_addcarryx_u64(&x296, &x297, x295, x242, x278);
fiat_np521_addcarryx_u64(&x298, &x299, x297, x244, x280);
fiat_np521_addcarryx_u64(&x300, &x301, x299, x246, x282);
fiat_np521_addcarryx_u64(&x302, &x303, x301, x248, x284);
fiat_np521_addcarryx_u64(&x304, &x305, x303, x250, x286);
fiat_np521_addcarryx_u64(&x306, &x307, x305, x252, x288);
fiat_np521_addcarryx_u64(&x308, &x309, x307, x254, x290);
fiat_np521_mulx_u64(&x310, &x311, x3, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x312, &x313, x3, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x314, &x315, x3, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x316, &x317, x3, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x318, &x319, x3, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x320, &x321, x3, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x322, &x323, x3, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x324, &x325, x3, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x326, &x327, x3, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x328, &x329, 0x0, x327, x324);
fiat_np521_addcarryx_u64(&x330, &x331, x329, x325, x322);
fiat_np521_addcarryx_u64(&x332, &x333, x331, x323, x320);
fiat_np521_addcarryx_u64(&x334, &x335, x333, x321, x318);
fiat_np521_addcarryx_u64(&x336, &x337, x335, x319, x316);
fiat_np521_addcarryx_u64(&x338, &x339, x337, x317, x314);
fiat_np521_addcarryx_u64(&x340, &x341, x339, x315, x312);
fiat_np521_addcarryx_u64(&x342, &x343, x341, x313, x310);
fiat_np521_addcarryx_u64(&x344, &x345, 0x0, x294, x326);
fiat_np521_addcarryx_u64(&x346, &x347, x345, x296, x328);
fiat_np521_addcarryx_u64(&x348, &x349, x347, x298, x330);
fiat_np521_addcarryx_u64(&x350, &x351, x349, x300, x332);
fiat_np521_addcarryx_u64(&x352, &x353, x351, x302, x334);
fiat_np521_addcarryx_u64(&x354, &x355, x353, x304, x336);
fiat_np521_addcarryx_u64(&x356, &x357, x355, x306, x338);
fiat_np521_addcarryx_u64(&x358, &x359, x357, x308, x340);
fiat_np521_addcarryx_u64(&x360, &x361, x359, ((x309 + (x255 + (x237 + x205))) + (x291 + x259)), x342);
fiat_np521_mulx_u64(&x362, &x363, x344, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x364, &x365, x362, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x366, &x367, x362, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x368, &x369, x362, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x370, &x371, x362, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x372, &x373, x362, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x374, &x375, x362, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x376, &x377, x362, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x378, &x379, x362, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x380, &x381, x362, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x382, &x383, 0x0, x381, x378);
fiat_np521_addcarryx_u64(&x384, &x385, x383, x379, x376);
fiat_np521_addcarryx_u64(&x386, &x387, x385, x377, x374);
fiat_np521_addcarryx_u64(&x388, &x389, x387, x375, x372);
fiat_np521_addcarryx_u64(&x390, &x391, x389, x373, x370);
fiat_np521_addcarryx_u64(&x392, &x393, x391, x371, x368);
fiat_np521_addcarryx_u64(&x394, &x395, x393, x369, x366);
fiat_np521_addcarryx_u64(&x396, &x397, x395, x367, x364);
fiat_np521_addcarryx_u64(&x398, &x399, 0x0, x344, x380);
fiat_np521_addcarryx_u64(&x400, &x401, x399, x346, x382);
fiat_np521_addcarryx_u64(&x402, &x403, x401, x348, x384);
fiat_np521_addcarryx_u64(&x404, &x405, x403, x350, x386);
fiat_np521_addcarryx_u64(&x406, &x407, x405, x352, x388);
fiat_np521_addcarryx_u64(&x408, &x409, x407, x354, x390);
fiat_np521_addcarryx_u64(&x410, &x411, x409, x356, x392);
fiat_np521_addcarryx_u64(&x412, &x413, x411, x358, x394);
fiat_np521_addcarryx_u64(&x414, &x415, x413, x360, x396);
fiat_np521_mulx_u64(&x416, &x417, x4, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x418, &x419, x4, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x420, &x421, x4, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x422, &x423, x4, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x424, &x425, x4, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x426, &x427, x4, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x428, &x429, x4, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x430, &x431, x4, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x432, &x433, x4, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x434, &x435, 0x0, x433, x430);
fiat_np521_addcarryx_u64(&x436, &x437, x435, x431, x428);
fiat_np521_addcarryx_u64(&x438, &x439, x437, x429, x426);
fiat_np521_addcarryx_u64(&x440, &x441, x439, x427, x424);
fiat_np521_addcarryx_u64(&x442, &x443, x441, x425, x422);
fiat_np521_addcarryx_u64(&x444, &x445, x443, x423, x420);
fiat_np521_addcarryx_u64(&x446, &x447, x445, x421, x418);
fiat_np521_addcarryx_u64(&x448, &x449, x447, x419, x416);
fiat_np521_addcarryx_u64(&x450, &x451, 0x0, x400, x432);
fiat_np521_addcarryx_u64(&x452, &x453, x451, x402, x434);
fiat_np521_addcarryx_u64(&x454, &x455, x453, x404, x436);
fiat_np521_addcarryx_u64(&x456, &x457, x455, x406, x438);
fiat_np521_addcarryx_u64(&x458, &x459, x457, x408, x440);
fiat_np521_addcarryx_u64(&x460, &x461, x459, x410, x442);
fiat_np521_addcarryx_u64(&x462, &x463, x461, x412, x444);
fiat_np521_addcarryx_u64(&x464, &x465, x463, x414, x446);
fiat_np521_addcarryx_u64(&x466, &x467, x465, ((x415 + (x361 + (x343 + x311))) + (x397 + x365)), x448);
fiat_np521_mulx_u64(&x468, &x469, x450, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x470, &x471, x468, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x472, &x473, x468, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x474, &x475, x468, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x476, &x477, x468, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x478, &x479, x468, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x480, &x481, x468, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x482, &x483, x468, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x484, &x485, x468, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x486, &x487, x468, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x488, &x489, 0x0, x487, x484);
fiat_np521_addcarryx_u64(&x490, &x491, x489, x485, x482);
fiat_np521_addcarryx_u64(&x492, &x493, x491, x483, x480);
fiat_np521_addcarryx_u64(&x494, &x495, x493, x481, x478);
fiat_np521_addcarryx_u64(&x496, &x497, x495, x479, x476);
fiat_np521_addcarryx_u64(&x498, &x499, x497, x477, x474);
fiat_np521_addcarryx_u64(&x500, &x501, x499, x475, x472);
fiat_np521_addcarryx_u64(&x502, &x503, x501, x473, x470);
fiat_np521_addcarryx_u64(&x504, &x505, 0x0, x450, x486);
fiat_np521_addcarryx_u64(&x506, &x507, x505, x452, x488);
fiat_np521_addcarryx_u64(&x508, &x509, x507, x454, x490);
fiat_np521_addcarryx_u64(&x510, &x511, x509, x456, x492);
fiat_np521_addcarryx_u64(&x512, &x513, x511, x458, x494);
fiat_np521_addcarryx_u64(&x514, &x515, x513, x460, x496);
fiat_np521_addcarryx_u64(&x516, &x517, x515, x462, x498);
fiat_np521_addcarryx_u64(&x518, &x519, x517, x464, x500);
fiat_np521_addcarryx_u64(&x520, &x521, x519, x466, x502);
fiat_np521_mulx_u64(&x522, &x523, x5, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x524, &x525, x5, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x526, &x527, x5, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x528, &x529, x5, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x530, &x531, x5, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x532, &x533, x5, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x534, &x535, x5, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x536, &x537, x5, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x538, &x539, x5, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x540, &x541, 0x0, x539, x536);
fiat_np521_addcarryx_u64(&x542, &x543, x541, x537, x534);
fiat_np521_addcarryx_u64(&x544, &x545, x543, x535, x532);
fiat_np521_addcarryx_u64(&x546, &x547, x545, x533, x530);
fiat_np521_addcarryx_u64(&x548, &x549, x547, x531, x528);
fiat_np521_addcarryx_u64(&x550, &x551, x549, x529, x526);
fiat_np521_addcarryx_u64(&x552, &x553, x551, x527, x524);
fiat_np521_addcarryx_u64(&x554, &x555, x553, x525, x522);
fiat_np521_addcarryx_u64(&x556, &x557, 0x0, x506, x538);
fiat_np521_addcarryx_u64(&x558, &x559, x557, x508, x540);
fiat_np521_addcarryx_u64(&x560, &x561, x559, x510, x542);
fiat_np521_addcarryx_u64(&x562, &x563, x561, x512, x544);
fiat_np521_addcarryx_u64(&x564, &x565, x563, x514, x546);
fiat_np521_addcarryx_u64(&x566, &x567, x565, x516, x548);
fiat_np521_addcarryx_u64(&x568, &x569, x567, x518, x550);
fiat_np521_addcarryx_u64(&x570, &x571, x569, x520, x552);
fiat_np521_addcarryx_u64(&x572, &x573, x571, ((x521 + (x467 + (x449 + x417))) + (x503 + x471)), x554);
fiat_np521_mulx_u64(&x574, &x575, x556, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x576, &x577, x574, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x578, &x579, x574, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x580, &x581, x574, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x582, &x583, x574, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x584, &x585, x574, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x586, &x587, x574, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x588, &x589, x574, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x590, &x591, x574, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x592, &x593, x574, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x594, &x595, 0x0, x593, x590);
fiat_np521_addcarryx_u64(&x596, &x597, x595, x591, x588);
fiat_np521_addcarryx_u64(&x598, &x599, x597, x589, x586);
fiat_np521_addcarryx_u64(&x600, &x601, x599, x587, x584);
fiat_np521_addcarryx_u64(&x602, &x603, x601, x585, x582);
fiat_np521_addcarryx_u64(&x604, &x605, x603, x583, x580);
fiat_np521_addcarryx_u64(&x606, &x607, x605, x581, x578);
fiat_np521_addcarryx_u64(&x608, &x609, x607, x579, x576);
fiat_np521_addcarryx_u64(&x610, &x611, 0x0, x556, x592);
fiat_np521_addcarryx_u64(&x612, &x613, x611, x558, x594);
fiat_np521_addcarryx_u64(&x614, &x615, x613, x560, x596);
fiat_np521_addcarryx_u64(&x616, &x617, x615, x562, x598);
fiat_np521_addcarryx_u64(&x618, &x619, x617, x564, x600);
fiat_np521_addcarryx_u64(&x620, &x621, x619, x566, x602);
fiat_np521_addcarryx_u64(&x622, &x623, x621, x568, x604);
fiat_np521_addcarryx_u64(&x624, &x625, x623, x570, x606);
fiat_np521_addcarryx_u64(&x626, &x627, x625, x572, x608);
fiat_np521_mulx_u64(&x628, &x629, x6, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x630, &x631, x6, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x632, &x633, x6, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x634, &x635, x6, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x636, &x637, x6, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x638, &x639, x6, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x640, &x641, x6, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x642, &x643, x6, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x644, &x645, x6, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x646, &x647, 0x0, x645, x642);
fiat_np521_addcarryx_u64(&x648, &x649, x647, x643, x640);
fiat_np521_addcarryx_u64(&x650, &x651, x649, x641, x638);
fiat_np521_addcarryx_u64(&x652, &x653, x651, x639, x636);
fiat_np521_addcarryx_u64(&x654, &x655, x653, x637, x634);
fiat_np521_addcarryx_u64(&x656, &x657, x655, x635, x632);
fiat_np521_addcarryx_u64(&x658, &x659, x657, x633, x630);
fiat_np521_addcarryx_u64(&x660, &x661, x659, x631, x628);
fiat_np521_addcarryx_u64(&x662, &x663, 0x0, x612, x644);
fiat_np521_addcarryx_u64(&x664, &x665, x663, x614, x646);
fiat_np521_addcarryx_u64(&x666, &x667, x665, x616, x648);
fiat_np521_addcarryx_u64(&x668, &x669, x667, x618, x650);
fiat_np521_addcarryx_u64(&x670, &x671, x669, x620, x652);
fiat_np521_addcarryx_u64(&x672, &x673, x671, x622, x654);
fiat_np521_addcarryx_u64(&x674, &x675, x673, x624, x656);
fiat_np521_addcarryx_u64(&x676, &x677, x675, x626, x658);
fiat_np521_addcarryx_u64(&x678, &x679, x677, ((x627 + (x573 + (x555 + x523))) + (x609 + x577)), x660);
fiat_np521_mulx_u64(&x680, &x681, x662, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x682, &x683, x680, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x684, &x685, x680, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x686, &x687, x680, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x688, &x689, x680, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x690, &x691, x680, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x692, &x693, x680, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x694, &x695, x680, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x696, &x697, x680, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x698, &x699, x680, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x700, &x701, 0x0, x699, x696);
fiat_np521_addcarryx_u64(&x702, &x703, x701, x697, x694);
fiat_np521_addcarryx_u64(&x704, &x705, x703, x695, x692);
fiat_np521_addcarryx_u64(&x706, &x707, x705, x693, x690);
fiat_np521_addcarryx_u64(&x708, &x709, x707, x691, x688);
fiat_np521_addcarryx_u64(&x710, &x711, x709, x689, x686);
fiat_np521_addcarryx_u64(&x712, &x713, x711, x687, x684);
fiat_np521_addcarryx_u64(&x714, &x715, x713, x685, x682);
fiat_np521_addcarryx_u64(&x716, &x717, 0x0, x662, x698);
fiat_np521_addcarryx_u64(&x718, &x719, x717, x664, x700);
fiat_np521_addcarryx_u64(&x720, &x721, x719, x666, x702);
fiat_np521_addcarryx_u64(&x722, &x723, x721, x668, x704);
fiat_np521_addcarryx_u64(&x724, &x725, x723, x670, x706);
fiat_np521_addcarryx_u64(&x726, &x727, x725, x672, x708);
fiat_np521_addcarryx_u64(&x728, &x729, x727, x674, x710);
fiat_np521_addcarryx_u64(&x730, &x731, x729, x676, x712);
fiat_np521_addcarryx_u64(&x732, &x733, x731, x678, x714);
fiat_np521_mulx_u64(&x734, &x735, x7, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x736, &x737, x7, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x738, &x739, x7, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x740, &x741, x7, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x742, &x743, x7, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x744, &x745, x7, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x746, &x747, x7, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x748, &x749, x7, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x750, &x751, x7, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x752, &x753, 0x0, x751, x748);
fiat_np521_addcarryx_u64(&x754, &x755, x753, x749, x746);
fiat_np521_addcarryx_u64(&x756, &x757, x755, x747, x744);
fiat_np521_addcarryx_u64(&x758, &x759, x757, x745, x742);
fiat_np521_addcarryx_u64(&x760, &x761, x759, x743, x740);
fiat_np521_addcarryx_u64(&x762, &x763, x761, x741, x738);
fiat_np521_addcarryx_u64(&x764, &x765, x763, x739, x736);
fiat_np521_addcarryx_u64(&x766, &x767, x765, x737, x734);
fiat_np521_addcarryx_u64(&x768, &x769, 0x0, x718, x750);
fiat_np521_addcarryx_u64(&x770, &x771, x769, x720, x752);
fiat_np521_addcarryx_u64(&x772, &x773, x771, x722, x754);
fiat_np521_addcarryx_u64(&x774, &x775, x773, x724, x756);
fiat_np521_addcarryx_u64(&x776, &x777, x775, x726, x758);
fiat_np521_addcarryx_u64(&x778, &x779, x777, x728, x760);
fiat_np521_addcarryx_u64(&x780, &x781, x779, x730, x762);
fiat_np521_addcarryx_u64(&x782, &x783, x781, x732, x764);
fiat_np521_addcarryx_u64(&x784, &x785, x783, ((x733 + (x679 + (x661 + x629))) + (x715 + x683)), x766);
fiat_np521_mulx_u64(&x786, &x787, x768, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x788, &x789, x786, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x790, &x791, x786, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x792, &x793, x786, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x794, &x795, x786, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x796, &x797, x786, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x798, &x799, x786, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x800, &x801, x786, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x802, &x803, x786, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x804, &x805, x786, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x806, &x807, 0x0, x805, x802);
fiat_np521_addcarryx_u64(&x808, &x809, x807, x803, x800);
fiat_np521_addcarryx_u64(&x810, &x811, x809, x801, x798);
fiat_np521_addcarryx_u64(&x812, &x813, x811, x799, x796);
fiat_np521_addcarryx_u64(&x814, &x815, x813, x797, x794);
fiat_np521_addcarryx_u64(&x816, &x817, x815, x795, x792);
fiat_np521_addcarryx_u64(&x818, &x819, x817, x793, x790);
fiat_np521_addcarryx_u64(&x820, &x821, x819, x791, x788);
fiat_np521_addcarryx_u64(&x822, &x823, 0x0, x768, x804);
fiat_np521_addcarryx_u64(&x824, &x825, x823, x770, x806);
fiat_np521_addcarryx_u64(&x826, &x827, x825, x772, x808);
fiat_np521_addcarryx_u64(&x828, &x829, x827, x774, x810);
fiat_np521_addcarryx_u64(&x830, &x831, x829, x776, x812);
fiat_np521_addcarryx_u64(&x832, &x833, x831, x778, x814);
fiat_np521_addcarryx_u64(&x834, &x835, x833, x780, x816);
fiat_np521_addcarryx_u64(&x836, &x837, x835, x782, x818);
fiat_np521_addcarryx_u64(&x838, &x839, x837, x784, x820);
fiat_np521_mulx_u64(&x840, &x841, x8, UINT8_C(0x3d));
fiat_np521_mulx_u64(&x842, &x843, x8, UINT64_C(0x2d8e03d1492d0d45));
fiat_np521_mulx_u64(&x844, &x845, x8, UINT64_C(0x5bcc6d61a8e567bc));
fiat_np521_mulx_u64(&x846, &x847, x8, UINT64_C(0xcff3d142b7756e3e));
fiat_np521_mulx_u64(&x848, &x849, x8, UINT64_C(0xdd6e23d82e49c7db));
fiat_np521_mulx_u64(&x850, &x851, x8, UINT64_C(0xd3721ef557f75e06));
fiat_np521_mulx_u64(&x852, &x853, x8, UINT64_C(0x12a78d38794573ff));
fiat_np521_mulx_u64(&x854, &x855, x8, UINT64_C(0xf707badce5547ea3));
fiat_np521_mulx_u64(&x856, &x857, x8, UINT64_C(0x137cd04dcf15dd04));
fiat_np521_addcarryx_u64(&x858, &x859, 0x0, x857, x854);
fiat_np521_addcarryx_u64(&x860, &x861, x859, x855, x852);
fiat_np521_addcarryx_u64(&x862, &x863, x861, x853, x850);
fiat_np521_addcarryx_u64(&x864, &x865, x863, x851, x848);
fiat_np521_addcarryx_u64(&x866, &x867, x865, x849, x846);
fiat_np521_addcarryx_u64(&x868, &x869, x867, x847, x844);
fiat_np521_addcarryx_u64(&x870, &x871, x869, x845, x842);
fiat_np521_addcarryx_u64(&x872, &x873, x871, x843, x840);
fiat_np521_addcarryx_u64(&x874, &x875, 0x0, x824, x856);
fiat_np521_addcarryx_u64(&x876, &x877, x875, x826, x858);
fiat_np521_addcarryx_u64(&x878, &x879, x877, x828, x860);
fiat_np521_addcarryx_u64(&x880, &x881, x879, x830, x862);
fiat_np521_addcarryx_u64(&x882, &x883, x881, x832, x864);
fiat_np521_addcarryx_u64(&x884, &x885, x883, x834, x866);
fiat_np521_addcarryx_u64(&x886, &x887, x885, x836, x868);
fiat_np521_addcarryx_u64(&x888, &x889, x887, x838, x870);
fiat_np521_addcarryx_u64(&x890, &x891, x889, ((x839 + (x785 + (x767 + x735))) + (x821 + x789)), x872);
fiat_np521_mulx_u64(&x892, &x893, x874, UINT64_C(0x1d2f5ccd79a995c7));
fiat_np521_mulx_u64(&x894, &x895, x892, UINT16_C(0x1ff));
fiat_np521_mulx_u64(&x896, &x897, x892, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x898, &x899, x892, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x900, &x901, x892, UINT64_C(0xffffffffffffffff));
fiat_np521_mulx_u64(&x902, &x903, x892, UINT64_C(0xfffffffffffffffa));
fiat_np521_mulx_u64(&x904, &x905, x892, UINT64_C(0x51868783bf2f966b));
fiat_np521_mulx_u64(&x906, &x907, x892, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_mulx_u64(&x908, &x909, x892, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_mulx_u64(&x910, &x911, x892, UINT64_C(0xbb6fb71e91386409));
fiat_np521_addcarryx_u64(&x912, &x913, 0x0, x911, x908);
fiat_np521_addcarryx_u64(&x914, &x915, x913, x909, x906);
fiat_np521_addcarryx_u64(&x916, &x917, x915, x907, x904);
fiat_np521_addcarryx_u64(&x918, &x919, x917, x905, x902);
fiat_np521_addcarryx_u64(&x920, &x921, x919, x903, x900);
fiat_np521_addcarryx_u64(&x922, &x923, x921, x901, x898);
fiat_np521_addcarryx_u64(&x924, &x925, x923, x899, x896);
fiat_np521_addcarryx_u64(&x926, &x927, x925, x897, x894);
fiat_np521_addcarryx_u64(&x928, &x929, 0x0, x874, x910);
fiat_np521_addcarryx_u64(&x930, &x931, x929, x876, x912);
fiat_np521_addcarryx_u64(&x932, &x933, x931, x878, x914);
fiat_np521_addcarryx_u64(&x934, &x935, x933, x880, x916);
fiat_np521_addcarryx_u64(&x936, &x937, x935, x882, x918);
fiat_np521_addcarryx_u64(&x938, &x939, x937, x884, x920);
fiat_np521_addcarryx_u64(&x940, &x941, x939, x886, x922);
fiat_np521_addcarryx_u64(&x942, &x943, x941, x888, x924);
fiat_np521_addcarryx_u64(&x944, &x945, x943, x890, x926);
x946 = ((x945 + (x891 + (x873 + x841))) + (x927 + x895));
fiat_np521_subborrowx_u64(&x947, &x948, 0x0, x930, UINT64_C(0xbb6fb71e91386409));
fiat_np521_subborrowx_u64(&x949, &x950, x948, x932, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_subborrowx_u64(&x951, &x952, x950, x934, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_subborrowx_u64(&x953, &x954, x952, x936, UINT64_C(0x51868783bf2f966b));
fiat_np521_subborrowx_u64(&x955, &x956, x954, x938, UINT64_C(0xfffffffffffffffa));
fiat_np521_subborrowx_u64(&x957, &x958, x956, x940, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x959, &x960, x958, x942, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x961, &x962, x960, x944, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x963, &x964, x962, x946, UINT16_C(0x1ff));
fiat_np521_subborrowx_u64(&x965, &x966, x964, 0x0, 0x0);
fiat_np521_cmovznz_u64(&x967, x966, x947, x930);
fiat_np521_cmovznz_u64(&x968, x966, x949, x932);
fiat_np521_cmovznz_u64(&x969, x966, x951, x934);
fiat_np521_cmovznz_u64(&x970, x966, x953, x936);
fiat_np521_cmovznz_u64(&x971, x966, x955, x938);
fiat_np521_cmovznz_u64(&x972, x966, x957, x940);
fiat_np521_cmovznz_u64(&x973, x966, x959, x942);
fiat_np521_cmovznz_u64(&x974, x966, x961, x944);
fiat_np521_cmovznz_u64(&x975, x966, x963, x946);
out1[0] = x967;
out1[1] = x968;
out1[2] = x969;
out1[3] = x970;
out1[4] = x971;
out1[5] = x972;
out1[6] = x973;
out1[7] = x974;
out1[8] = x975;
}
/*
* The function fiat_np521_set_one returns the field element one in the Montgomery domain.
*
* Postconditions:
* eval (from_montgomery out1) mod m = 1 mod m
* 0 ≤ eval out1 < m
*
*/
static void fiat_np521_set_one(fiat_np521_montgomery_domain_field_element out1) {
out1[0] = UINT64_C(0xfb80000000000000);
out1[1] = UINT64_C(0x28a2482470b763cd);
out1[2] = UINT64_C(0x17e2251b23bb31dc);
out1[3] = UINT64_C(0xca4019ff5b847b2d);
out1[4] = UINT64_C(0x2d73cbc3e206834);
out1[5] = 0x0;
out1[6] = 0x0;
out1[7] = 0x0;
out1[8] = 0x0;
}
/*
* The function fiat_np521_msat returns the saturated representation of the prime modulus.
*
* Postconditions:
* twos_complement_eval out1 = m
* 0 ≤ eval out1 < m
*
* Output Bounds:
* out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
*/
static void fiat_np521_msat(uint64_t out1[10]) {
out1[0] = UINT64_C(0xbb6fb71e91386409);
out1[1] = UINT64_C(0x3bb5c9b8899c47ae);
out1[2] = UINT64_C(0x7fcc0148f709a5d0);
out1[3] = UINT64_C(0x51868783bf2f966b);
out1[4] = UINT64_C(0xfffffffffffffffa);
out1[5] = UINT64_C(0xffffffffffffffff);
out1[6] = UINT64_C(0xffffffffffffffff);
out1[7] = UINT64_C(0xffffffffffffffff);
out1[8] = UINT16_C(0x1ff);
out1[9] = 0x0;
}
/*
* The function fiat_np521_divstep_precomp returns the precomputed value for Bernstein-Yang-inversion (in montgomery form).
*
* Postconditions:
* 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⌋)
* 0 ≤ eval out1 < m
*
* Output Bounds:
* out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
*/
static void fiat_np521_divstep_precomp(uint64_t out1[9]) {
out1[0] = UINT64_C(0x7b27a0cb33d1884b);
out1[1] = UINT64_C(0x9ef6cb011f2467d8);
out1[2] = UINT64_C(0x5fbc88e1d6e7fce);
out1[3] = UINT64_C(0xb08222d0fe97e1dc);
out1[4] = UINT64_C(0x1624870c44df3fce);
out1[5] = UINT64_C(0xb7f07b8eedbce602);
out1[6] = UINT64_C(0x62da93cf721f63bc);
out1[7] = UINT64_C(0xafd209c16c4f0d20);
out1[8] = UINT16_C(0x1c7);
}
/*
* The function fiat_np521_divstep computes a divstep.
*
* Preconditions:
* 0 ≤ eval arg4 < m
* 0 ≤ eval arg5 < m
* Postconditions:
* out1 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then 1 - arg1 else 1 + arg1)
* twos_complement_eval out2 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then twos_complement_eval arg3 else twos_complement_eval arg2)
* 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⌋)
* 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)
* 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)
* 0 ≤ eval out5 < m
* 0 ≤ eval out5 < m
* 0 ≤ eval out2 < m
* 0 ≤ eval out3 < m
*
* Input Bounds:
* arg1: [0x0 ~> 0xffffffffffffffff]
* arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* arg4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* arg5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* Output Bounds:
* out1: [0x0 ~> 0xffffffffffffffff]
* out2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* out3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* out4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* out5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
*/
static void fiat_np521_divstep(uint64_t* out1, uint64_t out2[10], uint64_t out3[10], uint64_t out4[9], uint64_t out5[9], uint64_t arg1, const uint64_t arg2[10], const uint64_t arg3[10], const uint64_t arg4[9], const uint64_t arg5[9]) {
uint64_t x1;
fiat_np521_uint1 x2;
fiat_np521_uint1 x3;
uint64_t x4;
fiat_np521_uint1 x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
uint64_t x10;
uint64_t x11;
uint64_t x12;
uint64_t x13;
uint64_t x14;
uint64_t x15;
uint64_t x16;
uint64_t x17;
fiat_np521_uint1 x18;
uint64_t x19;
fiat_np521_uint1 x20;
uint64_t x21;
fiat_np521_uint1 x22;
uint64_t x23;
fiat_np521_uint1 x24;
uint64_t x25;
fiat_np521_uint1 x26;
uint64_t x27;
fiat_np521_uint1 x28;
uint64_t x29;
fiat_np521_uint1 x30;
uint64_t x31;
fiat_np521_uint1 x32;
uint64_t x33;
fiat_np521_uint1 x34;
uint64_t x35;
fiat_np521_uint1 x36;
uint64_t x37;
uint64_t x38;
uint64_t x39;
uint64_t x40;
uint64_t x41;
uint64_t x42;
uint64_t x43;
uint64_t x44;
uint64_t x45;
uint64_t x46;
uint64_t x47;
uint64_t x48;
uint64_t x49;
uint64_t x50;
uint64_t x51;
uint64_t x52;
uint64_t x53;
uint64_t x54;
uint64_t x55;
uint64_t x56;
fiat_np521_uint1 x57;
uint64_t x58;
fiat_np521_uint1 x59;
uint64_t x60;
fiat_np521_uint1 x61;
uint64_t x62;
fiat_np521_uint1 x63;
uint64_t x64;
fiat_np521_uint1 x65;
uint64_t x66;
fiat_np521_uint1 x67;
uint64_t x68;
fiat_np521_uint1 x69;
uint64_t x70;
fiat_np521_uint1 x71;
uint64_t x72;
fiat_np521_uint1 x73;
uint64_t x74;
fiat_np521_uint1 x75;
uint64_t x76;
fiat_np521_uint1 x77;
uint64_t x78;
fiat_np521_uint1 x79;
uint64_t x80;
fiat_np521_uint1 x81;
uint64_t x82;
fiat_np521_uint1 x83;
uint64_t x84;
fiat_np521_uint1 x85;
uint64_t x86;
fiat_np521_uint1 x87;
uint64_t x88;
fiat_np521_uint1 x89;
uint64_t x90;
fiat_np521_uint1 x91;
uint64_t x92;
fiat_np521_uint1 x93;
uint64_t x94;
uint64_t x95;
uint64_t x96;
uint64_t x97;
uint64_t x98;
uint64_t x99;
uint64_t x100;
uint64_t x101;
uint64_t x102;
uint64_t x103;
fiat_np521_uint1 x104;
uint64_t x105;
fiat_np521_uint1 x106;
uint64_t x107;
fiat_np521_uint1 x108;
uint64_t x109;
fiat_np521_uint1 x110;
uint64_t x111;
fiat_np521_uint1 x112;
uint64_t x113;
fiat_np521_uint1 x114;
uint64_t x115;
fiat_np521_uint1 x116;
uint64_t x117;
fiat_np521_uint1 x118;
uint64_t x119;
fiat_np521_uint1 x120;
uint64_t x121;
uint64_t x122;
fiat_np521_uint1 x123;
uint64_t x124;
fiat_np521_uint1 x125;
uint64_t x126;
fiat_np521_uint1 x127;
uint64_t x128;
fiat_np521_uint1 x129;
uint64_t x130;
fiat_np521_uint1 x131;
uint64_t x132;
fiat_np521_uint1 x133;
uint64_t x134;
fiat_np521_uint1 x135;
uint64_t x136;
fiat_np521_uint1 x137;
uint64_t x138;
fiat_np521_uint1 x139;
uint64_t x140;
uint64_t x141;
uint64_t x142;
uint64_t x143;
uint64_t x144;
uint64_t x145;
uint64_t x146;
uint64_t x147;
uint64_t x148;
fiat_np521_uint1 x149;
uint64_t x150;
uint64_t x151;
uint64_t x152;
uint64_t x153;
uint64_t x154;
uint64_t x155;
uint64_t x156;
uint64_t x157;
uint64_t x158;
uint64_t x159;
uint64_t x160;
fiat_np521_uint1 x161;
uint64_t x162;
fiat_np521_uint1 x163;
uint64_t x164;
fiat_np521_uint1 x165;
uint64_t x166;
fiat_np521_uint1 x167;
uint64_t x168;
fiat_np521_uint1 x169;
uint64_t x170;
fiat_np521_uint1 x171;
uint64_t x172;
fiat_np521_uint1 x173;
uint64_t x174;
fiat_np521_uint1 x175;
uint64_t x176;
fiat_np521_uint1 x177;
uint64_t x178;
fiat_np521_uint1 x179;
uint64_t x180;
uint64_t x181;
uint64_t x182;
uint64_t x183;
uint64_t x184;
uint64_t x185;
uint64_t x186;
uint64_t x187;
uint64_t x188;
uint64_t x189;
fiat_np521_uint1 x190;
uint64_t x191;
fiat_np521_uint1 x192;
uint64_t x193;
fiat_np521_uint1 x194;
uint64_t x195;
fiat_np521_uint1 x196;
uint64_t x197;
fiat_np521_uint1 x198;
uint64_t x199;
fiat_np521_uint1 x200;
uint64_t x201;
fiat_np521_uint1 x202;
uint64_t x203;
fiat_np521_uint1 x204;
uint64_t x205;
fiat_np521_uint1 x206;
uint64_t x207;
fiat_np521_uint1 x208;
uint64_t x209;
fiat_np521_uint1 x210;
uint64_t x211;
fiat_np521_uint1 x212;
uint64_t x213;
fiat_np521_uint1 x214;
uint64_t x215;
fiat_np521_uint1 x216;
uint64_t x217;
fiat_np521_uint1 x218;
uint64_t x219;
fiat_np521_uint1 x220;
uint64_t x221;
fiat_np521_uint1 x222;
uint64_t x223;
fiat_np521_uint1 x224;
uint64_t x225;
fiat_np521_uint1 x226;
uint64_t x227;
fiat_np521_uint1 x228;
uint64_t x229;
uint64_t x230;
uint64_t x231;
uint64_t x232;
uint64_t x233;
uint64_t x234;
uint64_t x235;
uint64_t x236;
uint64_t x237;
uint64_t x238;
uint64_t x239;
uint64_t x240;
uint64_t x241;
uint64_t x242;
uint64_t x243;
uint64_t x244;
uint64_t x245;
uint64_t x246;
uint64_t x247;
uint64_t x248;
uint64_t x249;
uint64_t x250;
uint64_t x251;
uint64_t x252;
uint64_t x253;
uint64_t x254;
uint64_t x255;
uint64_t x256;
fiat_np521_addcarryx_u64(&x1, &x2, 0x0, (~arg1), 0x1);
x3 = (fiat_np521_uint1)((fiat_np521_uint1)(x1 >> 63) & (fiat_np521_uint1)((arg3[0]) & 0x1));
fiat_np521_addcarryx_u64(&x4, &x5, 0x0, (~arg1), 0x1);
fiat_np521_cmovznz_u64(&x6, x3, arg1, x4);
fiat_np521_cmovznz_u64(&x7, x3, (arg2[0]), (arg3[0]));
fiat_np521_cmovznz_u64(&x8, x3, (arg2[1]), (arg3[1]));
fiat_np521_cmovznz_u64(&x9, x3, (arg2[2]), (arg3[2]));
fiat_np521_cmovznz_u64(&x10, x3, (arg2[3]), (arg3[3]));
fiat_np521_cmovznz_u64(&x11, x3, (arg2[4]), (arg3[4]));
fiat_np521_cmovznz_u64(&x12, x3, (arg2[5]), (arg3[5]));
fiat_np521_cmovznz_u64(&x13, x3, (arg2[6]), (arg3[6]));
fiat_np521_cmovznz_u64(&x14, x3, (arg2[7]), (arg3[7]));
fiat_np521_cmovznz_u64(&x15, x3, (arg2[8]), (arg3[8]));
fiat_np521_cmovznz_u64(&x16, x3, (arg2[9]), (arg3[9]));
fiat_np521_addcarryx_u64(&x17, &x18, 0x0, 0x1, (~(arg2[0])));
fiat_np521_addcarryx_u64(&x19, &x20, x18, 0x0, (~(arg2[1])));
fiat_np521_addcarryx_u64(&x21, &x22, x20, 0x0, (~(arg2[2])));
fiat_np521_addcarryx_u64(&x23, &x24, x22, 0x0, (~(arg2[3])));
fiat_np521_addcarryx_u64(&x25, &x26, x24, 0x0, (~(arg2[4])));
fiat_np521_addcarryx_u64(&x27, &x28, x26, 0x0, (~(arg2[5])));
fiat_np521_addcarryx_u64(&x29, &x30, x28, 0x0, (~(arg2[6])));
fiat_np521_addcarryx_u64(&x31, &x32, x30, 0x0, (~(arg2[7])));
fiat_np521_addcarryx_u64(&x33, &x34, x32, 0x0, (~(arg2[8])));
fiat_np521_addcarryx_u64(&x35, &x36, x34, 0x0, (~(arg2[9])));
fiat_np521_cmovznz_u64(&x37, x3, (arg3[0]), x17);
fiat_np521_cmovznz_u64(&x38, x3, (arg3[1]), x19);
fiat_np521_cmovznz_u64(&x39, x3, (arg3[2]), x21);
fiat_np521_cmovznz_u64(&x40, x3, (arg3[3]), x23);
fiat_np521_cmovznz_u64(&x41, x3, (arg3[4]), x25);
fiat_np521_cmovznz_u64(&x42, x3, (arg3[5]), x27);
fiat_np521_cmovznz_u64(&x43, x3, (arg3[6]), x29);
fiat_np521_cmovznz_u64(&x44, x3, (arg3[7]), x31);
fiat_np521_cmovznz_u64(&x45, x3, (arg3[8]), x33);
fiat_np521_cmovznz_u64(&x46, x3, (arg3[9]), x35);
fiat_np521_cmovznz_u64(&x47, x3, (arg4[0]), (arg5[0]));
fiat_np521_cmovznz_u64(&x48, x3, (arg4[1]), (arg5[1]));
fiat_np521_cmovznz_u64(&x49, x3, (arg4[2]), (arg5[2]));
fiat_np521_cmovznz_u64(&x50, x3, (arg4[3]), (arg5[3]));
fiat_np521_cmovznz_u64(&x51, x3, (arg4[4]), (arg5[4]));
fiat_np521_cmovznz_u64(&x52, x3, (arg4[5]), (arg5[5]));
fiat_np521_cmovznz_u64(&x53, x3, (arg4[6]), (arg5[6]));
fiat_np521_cmovznz_u64(&x54, x3, (arg4[7]), (arg5[7]));
fiat_np521_cmovznz_u64(&x55, x3, (arg4[8]), (arg5[8]));
fiat_np521_addcarryx_u64(&x56, &x57, 0x0, x47, x47);
fiat_np521_addcarryx_u64(&x58, &x59, x57, x48, x48);
fiat_np521_addcarryx_u64(&x60, &x61, x59, x49, x49);
fiat_np521_addcarryx_u64(&x62, &x63, x61, x50, x50);
fiat_np521_addcarryx_u64(&x64, &x65, x63, x51, x51);
fiat_np521_addcarryx_u64(&x66, &x67, x65, x52, x52);
fiat_np521_addcarryx_u64(&x68, &x69, x67, x53, x53);
fiat_np521_addcarryx_u64(&x70, &x71, x69, x54, x54);
fiat_np521_addcarryx_u64(&x72, &x73, x71, x55, x55);
fiat_np521_subborrowx_u64(&x74, &x75, 0x0, x56, UINT64_C(0xbb6fb71e91386409));
fiat_np521_subborrowx_u64(&x76, &x77, x75, x58, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_subborrowx_u64(&x78, &x79, x77, x60, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_subborrowx_u64(&x80, &x81, x79, x62, UINT64_C(0x51868783bf2f966b));
fiat_np521_subborrowx_u64(&x82, &x83, x81, x64, UINT64_C(0xfffffffffffffffa));
fiat_np521_subborrowx_u64(&x84, &x85, x83, x66, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x86, &x87, x85, x68, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x88, &x89, x87, x70, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x90, &x91, x89, x72, UINT16_C(0x1ff));
fiat_np521_subborrowx_u64(&x92, &x93, x91, x73, 0x0);
x94 = (arg4[8]);
x95 = (arg4[7]);
x96 = (arg4[6]);
x97 = (arg4[5]);
x98 = (arg4[4]);
x99 = (arg4[3]);
x100 = (arg4[2]);
x101 = (arg4[1]);
x102 = (arg4[0]);
fiat_np521_subborrowx_u64(&x103, &x104, 0x0, 0x0, x102);
fiat_np521_subborrowx_u64(&x105, &x106, x104, 0x0, x101);
fiat_np521_subborrowx_u64(&x107, &x108, x106, 0x0, x100);
fiat_np521_subborrowx_u64(&x109, &x110, x108, 0x0, x99);
fiat_np521_subborrowx_u64(&x111, &x112, x110, 0x0, x98);
fiat_np521_subborrowx_u64(&x113, &x114, x112, 0x0, x97);
fiat_np521_subborrowx_u64(&x115, &x116, x114, 0x0, x96);
fiat_np521_subborrowx_u64(&x117, &x118, x116, 0x0, x95);
fiat_np521_subborrowx_u64(&x119, &x120, x118, 0x0, x94);
fiat_np521_cmovznz_u64(&x121, x120, 0x0, UINT64_C(0xffffffffffffffff));
fiat_np521_addcarryx_u64(&x122, &x123, 0x0, x103, (x121 & UINT64_C(0xbb6fb71e91386409)));
fiat_np521_addcarryx_u64(&x124, &x125, x123, x105, (x121 & UINT64_C(0x3bb5c9b8899c47ae)));
fiat_np521_addcarryx_u64(&x126, &x127, x125, x107, (x121 & UINT64_C(0x7fcc0148f709a5d0)));
fiat_np521_addcarryx_u64(&x128, &x129, x127, x109, (x121 & UINT64_C(0x51868783bf2f966b)));
fiat_np521_addcarryx_u64(&x130, &x131, x129, x111, (x121 & UINT64_C(0xfffffffffffffffa)));
fiat_np521_addcarryx_u64(&x132, &x133, x131, x113, x121);
fiat_np521_addcarryx_u64(&x134, &x135, x133, x115, x121);
fiat_np521_addcarryx_u64(&x136, &x137, x135, x117, x121);
fiat_np521_addcarryx_u64(&x138, &x139, x137, x119, (x121 & UINT16_C(0x1ff)));
fiat_np521_cmovznz_u64(&x140, x3, (arg5[0]), x122);
fiat_np521_cmovznz_u64(&x141, x3, (arg5[1]), x124);
fiat_np521_cmovznz_u64(&x142, x3, (arg5[2]), x126);
fiat_np521_cmovznz_u64(&x143, x3, (arg5[3]), x128);
fiat_np521_cmovznz_u64(&x144, x3, (arg5[4]), x130);
fiat_np521_cmovznz_u64(&x145, x3, (arg5[5]), x132);
fiat_np521_cmovznz_u64(&x146, x3, (arg5[6]), x134);
fiat_np521_cmovznz_u64(&x147, x3, (arg5[7]), x136);
fiat_np521_cmovznz_u64(&x148, x3, (arg5[8]), x138);
x149 = (fiat_np521_uint1)(x37 & 0x1);
fiat_np521_cmovznz_u64(&x150, x149, 0x0, x7);
fiat_np521_cmovznz_u64(&x151, x149, 0x0, x8);
fiat_np521_cmovznz_u64(&x152, x149, 0x0, x9);
fiat_np521_cmovznz_u64(&x153, x149, 0x0, x10);
fiat_np521_cmovznz_u64(&x154, x149, 0x0, x11);
fiat_np521_cmovznz_u64(&x155, x149, 0x0, x12);
fiat_np521_cmovznz_u64(&x156, x149, 0x0, x13);
fiat_np521_cmovznz_u64(&x157, x149, 0x0, x14);
fiat_np521_cmovznz_u64(&x158, x149, 0x0, x15);
fiat_np521_cmovznz_u64(&x159, x149, 0x0, x16);
fiat_np521_addcarryx_u64(&x160, &x161, 0x0, x37, x150);
fiat_np521_addcarryx_u64(&x162, &x163, x161, x38, x151);
fiat_np521_addcarryx_u64(&x164, &x165, x163, x39, x152);
fiat_np521_addcarryx_u64(&x166, &x167, x165, x40, x153);
fiat_np521_addcarryx_u64(&x168, &x169, x167, x41, x154);
fiat_np521_addcarryx_u64(&x170, &x171, x169, x42, x155);
fiat_np521_addcarryx_u64(&x172, &x173, x171, x43, x156);
fiat_np521_addcarryx_u64(&x174, &x175, x173, x44, x157);
fiat_np521_addcarryx_u64(&x176, &x177, x175, x45, x158);
fiat_np521_addcarryx_u64(&x178, &x179, x177, x46, x159);
fiat_np521_cmovznz_u64(&x180, x149, 0x0, x47);
fiat_np521_cmovznz_u64(&x181, x149, 0x0, x48);
fiat_np521_cmovznz_u64(&x182, x149, 0x0, x49);
fiat_np521_cmovznz_u64(&x183, x149, 0x0, x50);
fiat_np521_cmovznz_u64(&x184, x149, 0x0, x51);
fiat_np521_cmovznz_u64(&x185, x149, 0x0, x52);
fiat_np521_cmovznz_u64(&x186, x149, 0x0, x53);
fiat_np521_cmovznz_u64(&x187, x149, 0x0, x54);
fiat_np521_cmovznz_u64(&x188, x149, 0x0, x55);
fiat_np521_addcarryx_u64(&x189, &x190, 0x0, x140, x180);
fiat_np521_addcarryx_u64(&x191, &x192, x190, x141, x181);
fiat_np521_addcarryx_u64(&x193, &x194, x192, x142, x182);
fiat_np521_addcarryx_u64(&x195, &x196, x194, x143, x183);
fiat_np521_addcarryx_u64(&x197, &x198, x196, x144, x184);
fiat_np521_addcarryx_u64(&x199, &x200, x198, x145, x185);
fiat_np521_addcarryx_u64(&x201, &x202, x200, x146, x186);
fiat_np521_addcarryx_u64(&x203, &x204, x202, x147, x187);
fiat_np521_addcarryx_u64(&x205, &x206, x204, x148, x188);
fiat_np521_subborrowx_u64(&x207, &x208, 0x0, x189, UINT64_C(0xbb6fb71e91386409));
fiat_np521_subborrowx_u64(&x209, &x210, x208, x191, UINT64_C(0x3bb5c9b8899c47ae));
fiat_np521_subborrowx_u64(&x211, &x212, x210, x193, UINT64_C(0x7fcc0148f709a5d0));
fiat_np521_subborrowx_u64(&x213, &x214, x212, x195, UINT64_C(0x51868783bf2f966b));
fiat_np521_subborrowx_u64(&x215, &x216, x214, x197, UINT64_C(0xfffffffffffffffa));
fiat_np521_subborrowx_u64(&x217, &x218, x216, x199, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x219, &x220, x218, x201, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x221, &x222, x220, x203, UINT64_C(0xffffffffffffffff));
fiat_np521_subborrowx_u64(&x223, &x224, x222, x205, UINT16_C(0x1ff));
fiat_np521_subborrowx_u64(&x225, &x226, x224, x206, 0x0);
fiat_np521_addcarryx_u64(&x227, &x228, 0x0, x6, 0x1);
x229 = ((x160 >> 1) | ((x162 << 63) & UINT64_C(0xffffffffffffffff)));
x230 = ((x162 >> 1) | ((x164 << 63) & UINT64_C(0xffffffffffffffff)));
x231 = ((x164 >> 1) | ((x166 << 63) & UINT64_C(0xffffffffffffffff)));
x232 = ((x166 >> 1) | ((x168 << 63) & UINT64_C(0xffffffffffffffff)));
x233 = ((x168 >> 1) | ((x170 << 63) & UINT64_C(0xffffffffffffffff)));
x234 = ((x170 >> 1) | ((x172 << 63) & UINT64_C(0xffffffffffffffff)));
x235 = ((x172 >> 1) | ((x174 << 63) & UINT64_C(0xffffffffffffffff)));
x236 = ((x174 >> 1) | ((x176 << 63) & UINT64_C(0xffffffffffffffff)));
x237 = ((x176 >> 1) | ((x178 << 63) & UINT64_C(0xffffffffffffffff)));
x238 = ((x178 & UINT64_C(0x8000000000000000)) | (x178 >> 1));
fiat_np521_cmovznz_u64(&x239, x93, x74, x56);
fiat_np521_cmovznz_u64(&x240, x93, x76, x58);
fiat_np521_cmovznz_u64(&x241, x93, x78, x60);
fiat_np521_cmovznz_u64(&x242, x93, x80, x62);
fiat_np521_cmovznz_u64(&x243, x93, x82, x64);
fiat_np521_cmovznz_u64(&x244, x93, x84, x66);
fiat_np521_cmovznz_u64(&x245, x93, x86, x68);
fiat_np521_cmovznz_u64(&x246, x93, x88, x70);
fiat_np521_cmovznz_u64(&x247, x93, x90, x72);
fiat_np521_cmovznz_u64(&x248, x226, x207, x189);
fiat_np521_cmovznz_u64(&x249, x226, x209, x191);
fiat_np521_cmovznz_u64(&x250, x226, x211, x193);
fiat_np521_cmovznz_u64(&x251, x226, x213, x195);
fiat_np521_cmovznz_u64(&x252, x226, x215, x197);
fiat_np521_cmovznz_u64(&x253, x226, x217, x199);
fiat_np521_cmovznz_u64(&x254, x226, x219, x201);
fiat_np521_cmovznz_u64(&x255, x226, x221, x203);
fiat_np521_cmovznz_u64(&x256, x226, x223, x205);
*out1 = x227;
out2[0] = x7;
out2[1] = x8;
out2[2] = x9;
out2[3] = x10;
out2[4] = x11;
out2[5] = x12;
out2[6] = x13;
out2[7] = x14;
out2[8] = x15;
out2[9] = x16;
out3[0] = x229;
out3[1] = x230;
out3[2] = x231;
out3[3] = x232;
out3[4] = x233;
out3[5] = x234;
out3[6] = x235;
out3[7] = x236;
out3[8] = x237;
out3[9] = x238;
out4[0] = x239;
out4[1] = x240;
out4[2] = x241;
out4[3] = x242;
out4[4] = x243;
out4[5] = x244;
out4[6] = x245;
out4[7] = x246;
out4[8] = x247;
out5[0] = x248;
out5[1] = x249;
out5[2] = x250;
out5[3] = x251;
out5[4] = x252;
out5[5] = x253;
out5[6] = x254;
out5[7] = x255;
out5[8] = x256;
}
/*
* The function fiat_np521_to_bytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order.
*
* Preconditions:
* 0 ≤ eval arg1 < m
* Postconditions:
* out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..65]
*
* Input Bounds:
* arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0x1ff]]
* Output Bounds:
* out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
*/
static void fiat_np521_to_bytes(uint8_t out1[66], const uint64_t arg1[9]) {
uint64_t x1;
uint64_t x2;
uint64_t x3;
uint64_t x4;
uint64_t x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
uint8_t x10;
uint64_t x11;
uint8_t x12;
uint64_t x13;
uint8_t x14;
uint64_t x15;
uint8_t x16;
uint64_t x17;
uint8_t x18;
uint64_t x19;
uint8_t x20;
uint64_t x21;
uint8_t x22;
uint8_t x23;
uint8_t x24;
uint64_t x25;
uint8_t x26;
uint64_t x27;
uint8_t x28;
uint64_t x29;
uint8_t x30;
uint64_t x31;
uint8_t x32;
uint64_t x33;
uint8_t x34;
uint64_t x35;
uint8_t x36;
uint8_t x37;
uint8_t x38;
uint64_t x39;
uint8_t x40;
uint64_t x41;
uint8_t x42;
uint64_t x43;
uint8_t x44;
uint64_t x45;
uint8_t x46;
uint64_t x47;
uint8_t x48;
uint64_t x49;
uint8_t x50;
uint8_t x51;
uint8_t x52;
uint64_t x53;
uint8_t x54;
uint64_t x55;
uint8_t x56;
uint64_t x57;
uint8_t x58;
uint64_t x59;
uint8_t x60;
uint64_t x61;
uint8_t x62;
uint64_t x63;
uint8_t x64;
uint8_t x65;
uint8_t x66;
uint64_t x67;
uint8_t x68;
uint64_t x69;
uint8_t x70;
uint64_t x71;
uint8_t x72;
uint64_t x73;
uint8_t x74;
uint64_t x75;
uint8_t x76;
uint64_t x77;
uint8_t x78;
uint8_t x79;
uint8_t x80;
uint64_t x81;
uint8_t x82;
uint64_t x83;
uint8_t x84;
uint64_t x85;
uint8_t x86;
uint64_t x87;
uint8_t x88;
uint64_t x89;
uint8_t x90;
uint64_t x91;
uint8_t x92;
uint8_t x93;
uint8_t x94;
uint64_t x95;
uint8_t x96;
uint64_t x97;
uint8_t x98;
uint64_t x99;
uint8_t x100;
uint64_t x101;
uint8_t x102;
uint64_t x103;
uint8_t x104;
uint64_t x105;
uint8_t x106;
uint8_t x107;
uint8_t x108;
uint64_t x109;
uint8_t x110;
uint64_t x111;
uint8_t x112;
uint64_t x113;
uint8_t x114;
uint64_t x115;
uint8_t x116;
uint64_t x117;
uint8_t x118;
uint64_t x119;
uint8_t x120;
uint8_t x121;
uint8_t x122;
fiat_np521_uint1 x123;
x1 = (arg1[8]);
x2 = (arg1[7]);
x3 = (arg1[6]);
x4 = (arg1[5]);
x5 = (arg1[4]);
x6 = (arg1[3]);
x7 = (arg1[2]);
x8 = (arg1[1]);
x9 = (arg1[0]);
x10 = (uint8_t)(x9 & UINT8_C(0xff));
x11 = (x9 >> 8);
x12 = (uint8_t)(x11 & UINT8_C(0xff));
x13 = (x11 >> 8);
x14 = (uint8_t)(x13 & UINT8_C(0xff));
x15 = (x13 >> 8);
x16 = (uint8_t)(x15 & UINT8_C(0xff));
x17 = (x15 >> 8);
x18 = (uint8_t)(x17 & UINT8_C(0xff));
x19 = (x17 >> 8);
x20 = (uint8_t)(x19 & UINT8_C(0xff));
x21 = (x19 >> 8);
x22 = (uint8_t)(x21 & UINT8_C(0xff));
x23 = (uint8_t)(x21 >> 8);
x24 = (uint8_t)(x8 & UINT8_C(0xff));
x25 = (x8 >> 8);
x26 = (uint8_t)(x25 & UINT8_C(0xff));
x27 = (x25 >> 8);
x28 = (uint8_t)(x27 & UINT8_C(0xff));
x29 = (x27 >> 8);
x30 = (uint8_t)(x29 & UINT8_C(0xff));
x31 = (x29 >> 8);
x32 = (uint8_t)(x31 & UINT8_C(0xff));
x33 = (x31 >> 8);
x34 = (uint8_t)(x33 & UINT8_C(0xff));
x35 = (x33 >> 8);
x36 = (uint8_t)(x35 & UINT8_C(0xff));
x37 = (uint8_t)(x35 >> 8);
x38 = (uint8_t)(x7 & UINT8_C(0xff));
x39 = (x7 >> 8);
x40 = (uint8_t)(x39 & UINT8_C(0xff));
x41 = (x39 >> 8);
x42 = (uint8_t)(x41 & UINT8_C(0xff));
x43 = (x41 >> 8);
x44 = (uint8_t)(x43 & UINT8_C(0xff));
x45 = (x43 >> 8);
x46 = (uint8_t)(x45 & UINT8_C(0xff));
x47 = (x45 >> 8);
x48 = (uint8_t)(x47 & UINT8_C(0xff));
x49 = (x47 >> 8);
x50 = (uint8_t)(x49 & UINT8_C(0xff));
x51 = (uint8_t)(x49 >> 8);
x52 = (uint8_t)(x6 & UINT8_C(0xff));
x53 = (x6 >> 8);
x54 = (uint8_t)(x53 & UINT8_C(0xff));
x55 = (x53 >> 8);
x56 = (uint8_t)(x55 & UINT8_C(0xff));
x57 = (x55 >> 8);
x58 = (uint8_t)(x57 & UINT8_C(0xff));
x59 = (x57 >> 8);
x60 = (uint8_t)(x59 & UINT8_C(0xff));
x61 = (x59 >> 8);
x62 = (uint8_t)(x61 & UINT8_C(0xff));
x63 = (x61 >> 8);
x64 = (uint8_t)(x63 & UINT8_C(0xff));
x65 = (uint8_t)(x63 >> 8);
x66 = (uint8_t)(x5 & UINT8_C(0xff));
x67 = (x5 >> 8);
x68 = (uint8_t)(x67 & UINT8_C(0xff));
x69 = (x67 >> 8);
x70 = (uint8_t)(x69 & UINT8_C(0xff));
x71 = (x69 >> 8);
x72 = (uint8_t)(x71 & UINT8_C(0xff));
x73 = (x71 >> 8);
x74 = (uint8_t)(x73 & UINT8_C(0xff));
x75 = (x73 >> 8);
x76 = (uint8_t)(x75 & UINT8_C(0xff));
x77 = (x75 >> 8);
x78 = (uint8_t)(x77 & UINT8_C(0xff));
x79 = (uint8_t)(x77 >> 8);
x80 = (uint8_t)(x4 & UINT8_C(0xff));
x81 = (x4 >> 8);
x82 = (uint8_t)(x81 & UINT8_C(0xff));
x83 = (x81 >> 8);
x84 = (uint8_t)(x83 & UINT8_C(0xff));
x85 = (x83 >> 8);
x86 = (uint8_t)(x85 & UINT8_C(0xff));
x87 = (x85 >> 8);
x88 = (uint8_t)(x87 & UINT8_C(0xff));
x89 = (x87 >> 8);
x90 = (uint8_t)(x89 & UINT8_C(0xff));
x91 = (x89 >> 8);
x92 = (uint8_t)(x91 & UINT8_C(0xff));
x93 = (uint8_t)(x91 >> 8);
x94 = (uint8_t)(x3 & UINT8_C(0xff));
x95 = (x3 >> 8);
x96 = (uint8_t)(x95 & UINT8_C(0xff));
x97 = (x95 >> 8);
x98 = (uint8_t)(x97 & UINT8_C(0xff));
x99 = (x97 >> 8);
x100 = (uint8_t)(x99 & UINT8_C(0xff));
x101 = (x99 >> 8);
x102 = (uint8_t)(x101 & UINT8_C(0xff));
x103 = (x101 >> 8);
x104 = (uint8_t)(x103 & UINT8_C(0xff));
x105 = (x103 >> 8);
x106 = (uint8_t)(x105 & UINT8_C(0xff));
x107 = (uint8_t)(x105 >> 8);
x108 = (uint8_t)(x2 & UINT8_C(0xff));
x109 = (x2 >> 8);
x110 = (uint8_t)(x109 & UINT8_C(0xff));
x111 = (x109 >> 8);
x112 = (uint8_t)(x111 & UINT8_C(0xff));
x113 = (x111 >> 8);
x114 = (uint8_t)(x113 & UINT8_C(0xff));
x115 = (x113 >> 8);
x116 = (uint8_t)(x115 & UINT8_C(0xff));
x117 = (x115 >> 8);
x118 = (uint8_t)(x117 & UINT8_C(0xff));
x119 = (x117 >> 8);
x120 = (uint8_t)(x119 & UINT8_C(0xff));
x121 = (uint8_t)(x119 >> 8);
x122 = (uint8_t)(x1 & UINT8_C(0xff));
x123 = (fiat_np521_uint1)(x1 >> 8);
out1[0] = x10;
out1[1] = x12;
out1[2] = x14;
out1[3] = x16;
out1[4] = x18;
out1[5] = x20;
out1[6] = x22;
out1[7] = x23;
out1[8] = x24;
out1[9] = x26;
out1[10] = x28;
out1[11] = x30;
out1[12] = x32;
out1[13] = x34;
out1[14] = x36;
out1[15] = x37;
out1[16] = x38;
out1[17] = x40;
out1[18] = x42;
out1[19] = x44;
out1[20] = x46;
out1[21] = x48;
out1[22] = x50;
out1[23] = x51;
out1[24] = x52;
out1[25] = x54;
out1[26] = x56;
out1[27] = x58;
out1[28] = x60;
out1[29] = x62;
out1[30] = x64;
out1[31] = x65;
out1[32] = x66;
out1[33] = x68;
out1[34] = x70;
out1[35] = x72;
out1[36] = x74;
out1[37] = x76;
out1[38] = x78;
out1[39] = x79;
out1[40] = x80;
out1[41] = x82;
out1[42] = x84;
out1[43] = x86;
out1[44] = x88;
out1[45] = x90;
out1[46] = x92;
out1[47] = x93;
out1[48] = x94;
out1[49] = x96;
out1[50] = x98;
out1[51] = x100;
out1[52] = x102;
out1[53] = x104;
out1[54] = x106;
out1[55] = x107;
out1[56] = x108;
out1[57] = x110;
out1[58] = x112;
out1[59] = x114;
out1[60] = x116;
out1[61] = x118;
out1[62] = x120;
out1[63] = x121;
out1[64] = x122;
out1[65] = x123;
}
/*
* The function fiat_np521_from_bytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order.
*
* Preconditions:
* 0 ≤ bytes_eval arg1 < m
* Postconditions:
* eval out1 mod m = bytes_eval arg1 mod m
* 0 ≤ eval out1 < m
*
* Input Bounds:
* arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
* Output Bounds:
* out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0x1ff]]
*/
static void fiat_np521_from_bytes(uint64_t out1[9], const uint8_t arg1[66]) {
uint64_t x1;
uint8_t x2;
uint64_t x3;
uint64_t x4;
uint64_t x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
uint8_t x10;
uint64_t x11;
uint64_t x12;
uint64_t x13;
uint64_t x14;
uint64_t x15;
uint64_t x16;
uint64_t x17;
uint8_t x18;
uint64_t x19;
uint64_t x20;
uint64_t x21;
uint64_t x22;
uint64_t x23;
uint64_t x24;
uint64_t x25;
uint8_t x26;
uint64_t x27;
uint64_t x28;
uint64_t x29;
uint64_t x30;
uint64_t x31;
uint64_t x32;
uint64_t x33;
uint8_t x34;
uint64_t x35;
uint64_t x36;
uint64_t x37;
uint64_t x38;
uint64_t x39;
uint64_t x40;
uint64_t x41;
uint8_t x42;
uint64_t x43;
uint64_t x44;
uint64_t x45;
uint64_t x46;
uint64_t x47;
uint64_t x48;
uint64_t x49;
uint8_t x50;
uint64_t x51;
uint64_t x52;
uint64_t x53;
uint64_t x54;
uint64_t x55;
uint64_t x56;
uint64_t x57;
uint8_t x58;
uint64_t x59;
uint64_t x60;
uint64_t x61;
uint64_t x62;
uint64_t x63;
uint64_t x64;
uint64_t x65;
uint8_t x66;
uint64_t x67;
uint64_t x68;
uint64_t x69;
uint64_t x70;
uint64_t x71;
uint64_t x72;
uint64_t x73;
uint64_t x74;
uint64_t x75;
uint64_t x76;
uint64_t x77;
uint64_t x78;
uint64_t x79;
uint64_t x80;
uint64_t x81;
uint64_t x82;
uint64_t x83;
uint64_t x84;
uint64_t x85;
uint64_t x86;
uint64_t x87;
uint64_t x88;
uint64_t x89;
uint64_t x90;
uint64_t x91;
uint64_t x92;
uint64_t x93;
uint64_t x94;
uint64_t x95;
uint64_t x96;
uint64_t x97;
uint64_t x98;
uint64_t x99;
uint64_t x100;
uint64_t x101;
uint64_t x102;
uint64_t x103;
uint64_t x104;
uint64_t x105;
uint64_t x106;
uint64_t x107;
uint64_t x108;
uint64_t x109;
uint64_t x110;
uint64_t x111;
uint64_t x112;
uint64_t x113;
uint64_t x114;
uint64_t x115;
uint64_t x116;
uint64_t x117;
uint64_t x118;
uint64_t x119;
uint64_t x120;
uint64_t x121;
uint64_t x122;
uint64_t x123;
x1 = ((uint64_t)(fiat_np521_uint1)(arg1[65]) << 8);
x2 = (arg1[64]);
x3 = ((uint64_t)(arg1[63]) << 56);
x4 = ((uint64_t)(arg1[62]) << 48);
x5 = ((uint64_t)(arg1[61]) << 40);
x6 = ((uint64_t)(arg1[60]) << 32);
x7 = ((uint64_t)(arg1[59]) << 24);
x8 = ((uint64_t)(arg1[58]) << 16);
x9 = ((uint64_t)(arg1[57]) << 8);
x10 = (arg1[56]);
x11 = ((uint64_t)(arg1[55]) << 56);
x12 = ((uint64_t)(arg1[54]) << 48);
x13 = ((uint64_t)(arg1[53]) << 40);
x14 = ((uint64_t)(arg1[52]) << 32);
x15 = ((uint64_t)(arg1[51]) << 24);
x16 = ((uint64_t)(arg1[50]) << 16);
x17 = ((uint64_t)(arg1[49]) << 8);
x18 = (arg1[48]);
x19 = ((uint64_t)(arg1[47]) << 56);
x20 = ((uint64_t)(arg1[46]) << 48);
x21 = ((uint64_t)(arg1[45]) << 40);
x22 = ((uint64_t)(arg1[44]) << 32);
x23 = ((uint64_t)(arg1[43]) << 24);
x24 = ((uint64_t)(arg1[42]) << 16);
x25 = ((uint64_t)(arg1[41]) << 8);
x26 = (arg1[40]);
x27 = ((uint64_t)(arg1[39]) << 56);
x28 = ((uint64_t)(arg1[38]) << 48);
x29 = ((uint64_t)(arg1[37]) << 40);
x30 = ((uint64_t)(arg1[36]) << 32);
x31 = ((uint64_t)(arg1[35]) << 24);
x32 = ((uint64_t)(arg1[34]) << 16);
x33 = ((uint64_t)(arg1[33]) << 8);
x34 = (arg1[32]);
x35 = ((uint64_t)(arg1[31]) << 56);
x36 = ((uint64_t)(arg1[30]) << 48);
x37 = ((uint64_t)(arg1[29]) << 40);
x38 = ((uint64_t)(arg1[28]) << 32);
x39 = ((uint64_t)(arg1[27]) << 24);
x40 = ((uint64_t)(arg1[26]) << 16);
x41 = ((uint64_t)(arg1[25]) << 8);
x42 = (arg1[24]);
x43 = ((uint64_t)(arg1[23]) << 56);
x44 = ((uint64_t)(arg1[22]) << 48);
x45 = ((uint64_t)(arg1[21]) << 40);
x46 = ((uint64_t)(arg1[20]) << 32);
x47 = ((uint64_t)(arg1[19]) << 24);
x48 = ((uint64_t)(arg1[18]) << 16);
x49 = ((uint64_t)(arg1[17]) << 8);
x50 = (arg1[16]);
x51 = ((uint64_t)(arg1[15]) << 56);
x52 = ((uint64_t)(arg1[14]) << 48);
x53 = ((uint64_t)(arg1[13]) << 40);
x54 = ((uint64_t)(arg1[12]) << 32);
x55 = ((uint64_t)(arg1[11]) << 24);
x56 = ((uint64_t)(arg1[10]) << 16);
x57 = ((uint64_t)(arg1[9]) << 8);
x58 = (arg1[8]);
x59 = ((uint64_t)(arg1[7]) << 56);
x60 = ((uint64_t)(arg1[6]) << 48);
x61 = ((uint64_t)(arg1[5]) << 40);
x62 = ((uint64_t)(arg1[4]) << 32);
x63 = ((uint64_t)(arg1[3]) << 24);
x64 = ((uint64_t)(arg1[2]) << 16);
x65 = ((uint64_t)(arg1[1]) << 8);
x66 = (arg1[0]);
x67 = (x65 + (uint64_t)x66);
x68 = (x64 + x67);
x69 = (x63 + x68);
x70 = (x62 + x69);
x71 = (x61 + x70);
x72 = (x60 + x71);
x73 = (x59 + x72);
x74 = (x57 + (uint64_t)x58);
x75 = (x56 + x74);
x76 = (x55 + x75);
x77 = (x54 + x76);
x78 = (x53 + x77);
x79 = (x52 + x78);
x80 = (x51 + x79);
x81 = (x49 + (uint64_t)x50);
x82 = (x48 + x81);
x83 = (x47 + x82);
x84 = (x46 + x83);
x85 = (x45 + x84);
x86 = (x44 + x85);
x87 = (x43 + x86);
x88 = (x41 + (uint64_t)x42);
x89 = (x40 + x88);
x90 = (x39 + x89);
x91 = (x38 + x90);
x92 = (x37 + x91);
x93 = (x36 + x92);
x94 = (x35 + x93);
x95 = (x33 + (uint64_t)x34);
x96 = (x32 + x95);
x97 = (x31 + x96);
x98 = (x30 + x97);
x99 = (x29 + x98);
x100 = (x28 + x99);
x101 = (x27 + x100);
x102 = (x25 + (uint64_t)x26);
x103 = (x24 + x102);
x104 = (x23 + x103);
x105 = (x22 + x104);
x106 = (x21 + x105);
x107 = (x20 + x106);
x108 = (x19 + x107);
x109 = (x17 + (uint64_t)x18);
x110 = (x16 + x109);
x111 = (x15 + x110);
x112 = (x14 + x111);
x113 = (x13 + x112);
x114 = (x12 + x113);
x115 = (x11 + x114);
x116 = (x9 + (uint64_t)x10);
x117 = (x8 + x116);
x118 = (x7 + x117);
x119 = (x6 + x118);
x120 = (x5 + x119);
x121 = (x4 + x120);
x122 = (x3 + x121);
x123 = (x1 + (uint64_t)x2);
out1[0] = x73;
out1[1] = x80;
out1[2] = x87;
out1[3] = x94;
out1[4] = x101;
out1[5] = x108;
out1[6] = x115;
out1[7] = x122;
out1[8] = x123;
}
/*
* The function fiat_np521_selectznz is a multi-limb conditional select.
*
* Postconditions:
* out1 = (if arg1 = 0 then arg2 else arg3)
*
* Input Bounds:
* arg1: [0x0 ~> 0x1]
* arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
* Output Bounds:
* out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
*/
static void fiat_np521_selectznz(uint64_t out1[9], fiat_np521_uint1 arg1, const uint64_t arg2[9], const uint64_t arg3[9]) {
uint64_t x1;
uint64_t x2;
uint64_t x3;
uint64_t x4;
uint64_t x5;
uint64_t x6;
uint64_t x7;
uint64_t x8;
uint64_t x9;
fiat_np521_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0]));
fiat_np521_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1]));
fiat_np521_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2]));
fiat_np521_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3]));
fiat_np521_cmovznz_u64(&x5, arg1, (arg2[4]), (arg3[4]));
fiat_np521_cmovznz_u64(&x6, arg1, (arg2[5]), (arg3[5]));
fiat_np521_cmovznz_u64(&x7, arg1, (arg2[6]), (arg3[6]));
fiat_np521_cmovznz_u64(&x8, arg1, (arg2[7]), (arg3[7]));
fiat_np521_cmovznz_u64(&x9, arg1, (arg2[8]), (arg3[8]));
out1[0] = x1;
out1[1] = x2;
out1[2] = x3;
out1[3] = x4;
out1[4] = x5;
out1[5] = x6;
out1[6] = x7;
out1[7] = x8;
out1[8] = x9;
}