/* 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 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; }