/* Autogenerated: '../fiat-crypto/src/ExtractionOCaml/word_by_word_montgomery' --static --use-value-barrier --inline-internal p521 64 '2^521 - 1' */ /* curve description: p521 */ /* machine_wordsize = 64 (from "64") */ /* requested operations: (all) */ /* m = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (from "2^521 - 1") */ /* */ /* 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_p521_uint1; typedef signed char fiat_p521_int1; #if defined(__GNUC__) || defined(__clang__) # define FIAT_P521_FIAT_EXTENSION __extension__ # define FIAT_P521_FIAT_INLINE __inline__ #else # define FIAT_P521_FIAT_EXTENSION # define FIAT_P521_FIAT_INLINE #endif FIAT_P521_FIAT_EXTENSION typedef signed __int128 fiat_p521_int128; FIAT_P521_FIAT_EXTENSION typedef unsigned __int128 fiat_p521_uint128; /* The type fiat_p521_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_p521_montgomery_domain_field_element[9]; /* The type fiat_p521_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_p521_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_P521_NO_ASM) && (defined(__GNUC__) || defined(__clang__)) static __inline__ uint64_t fiat_p521_value_barrier_u64(uint64_t a) { __asm__("" : "+r"(a) : /* no inputs */); return a; } #else # define fiat_p521_value_barrier_u64(x) (x) #endif /* * The function fiat_p521_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_P521_FIAT_INLINE void fiat_p521_addcarryx_u64(uint64_t* out1, fiat_p521_uint1* out2, fiat_p521_uint1 arg1, uint64_t arg2, uint64_t arg3) { fiat_p521_uint128 x1; uint64_t x2; fiat_p521_uint1 x3; x1 = ((arg1 + (fiat_p521_uint128)arg2) + arg3); x2 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff)); x3 = (fiat_p521_uint1)(x1 >> 64); *out1 = x2; *out2 = x3; } /* * The function fiat_p521_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_P521_FIAT_INLINE void fiat_p521_subborrowx_u64(uint64_t* out1, fiat_p521_uint1* out2, fiat_p521_uint1 arg1, uint64_t arg2, uint64_t arg3) { fiat_p521_int128 x1; fiat_p521_int1 x2; uint64_t x3; x1 = ((arg2 - (fiat_p521_int128)arg1) - arg3); x2 = (fiat_p521_int1)(x1 >> 64); x3 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff)); *out1 = x3; *out2 = (fiat_p521_uint1)(0x0 - x2); } /* * The function fiat_p521_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_P521_FIAT_INLINE void fiat_p521_mulx_u64(uint64_t* out1, uint64_t* out2, uint64_t arg1, uint64_t arg2) { fiat_p521_uint128 x1; uint64_t x2; uint64_t x3; x1 = ((fiat_p521_uint128)arg1 * arg2); x2 = (uint64_t)(x1 & UINT64_C(0xffffffffffffffff)); x3 = (uint64_t)(x1 >> 64); *out1 = x2; *out2 = x3; } /* * The function fiat_p521_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_P521_FIAT_INLINE void fiat_p521_cmovznz_u64(uint64_t* out1, fiat_p521_uint1 arg1, uint64_t arg2, uint64_t arg3) { fiat_p521_uint1 x1; uint64_t x2; uint64_t x3; x1 = (!(!arg1)); x2 = ((fiat_p521_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff)); x3 = ((fiat_p521_value_barrier_u64(x2) & arg3) | (fiat_p521_value_barrier_u64((~x2)) & arg2)); *out1 = x3; } /* * The function fiat_p521_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_p521_mul(fiat_p521_montgomery_domain_field_element out1, const fiat_p521_montgomery_domain_field_element arg1, const fiat_p521_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_p521_uint1 x29; uint64_t x30; fiat_p521_uint1 x31; uint64_t x32; fiat_p521_uint1 x33; uint64_t x34; fiat_p521_uint1 x35; uint64_t x36; fiat_p521_uint1 x37; uint64_t x38; fiat_p521_uint1 x39; uint64_t x40; fiat_p521_uint1 x41; uint64_t x42; fiat_p521_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; fiat_p521_uint1 x64; uint64_t x65; fiat_p521_uint1 x66; uint64_t x67; fiat_p521_uint1 x68; uint64_t x69; fiat_p521_uint1 x70; uint64_t x71; fiat_p521_uint1 x72; uint64_t x73; fiat_p521_uint1 x74; uint64_t x75; fiat_p521_uint1 x76; uint64_t x77; fiat_p521_uint1 x78; uint64_t x79; uint64_t x80; fiat_p521_uint1 x81; uint64_t x82; fiat_p521_uint1 x83; uint64_t x84; fiat_p521_uint1 x85; uint64_t x86; fiat_p521_uint1 x87; uint64_t x88; fiat_p521_uint1 x89; uint64_t x90; fiat_p521_uint1 x91; uint64_t x92; fiat_p521_uint1 x93; uint64_t x94; fiat_p521_uint1 x95; uint64_t x96; fiat_p521_uint1 x97; uint64_t x98; fiat_p521_uint1 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; fiat_p521_uint1 x119; uint64_t x120; fiat_p521_uint1 x121; uint64_t x122; fiat_p521_uint1 x123; uint64_t x124; fiat_p521_uint1 x125; uint64_t x126; fiat_p521_uint1 x127; uint64_t x128; fiat_p521_uint1 x129; uint64_t x130; fiat_p521_uint1 x131; uint64_t x132; fiat_p521_uint1 x133; uint64_t x134; uint64_t x135; fiat_p521_uint1 x136; uint64_t x137; fiat_p521_uint1 x138; uint64_t x139; fiat_p521_uint1 x140; uint64_t x141; fiat_p521_uint1 x142; uint64_t x143; fiat_p521_uint1 x144; uint64_t x145; fiat_p521_uint1 x146; uint64_t x147; fiat_p521_uint1 x148; uint64_t x149; fiat_p521_uint1 x150; uint64_t x151; fiat_p521_uint1 x152; uint64_t x153; fiat_p521_uint1 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; uint64_t x171; uint64_t x172; uint64_t x173; fiat_p521_uint1 x174; uint64_t x175; fiat_p521_uint1 x176; uint64_t x177; fiat_p521_uint1 x178; uint64_t x179; fiat_p521_uint1 x180; uint64_t x181; fiat_p521_uint1 x182; uint64_t x183; fiat_p521_uint1 x184; uint64_t x185; fiat_p521_uint1 x186; uint64_t x187; fiat_p521_uint1 x188; uint64_t x189; uint64_t x190; fiat_p521_uint1 x191; uint64_t x192; fiat_p521_uint1 x193; uint64_t x194; fiat_p521_uint1 x195; uint64_t x196; fiat_p521_uint1 x197; uint64_t x198; fiat_p521_uint1 x199; uint64_t x200; fiat_p521_uint1 x201; uint64_t x202; fiat_p521_uint1 x203; uint64_t x204; fiat_p521_uint1 x205; uint64_t x206; fiat_p521_uint1 x207; uint64_t x208; fiat_p521_uint1 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; uint64_t x223; uint64_t x224; uint64_t x225; uint64_t x226; uint64_t x227; uint64_t x228; uint64_t x229; fiat_p521_uint1 x230; uint64_t x231; fiat_p521_uint1 x232; uint64_t x233; fiat_p521_uint1 x234; uint64_t x235; fiat_p521_uint1 x236; uint64_t x237; fiat_p521_uint1 x238; uint64_t x239; fiat_p521_uint1 x240; uint64_t x241; fiat_p521_uint1 x242; uint64_t x243; fiat_p521_uint1 x244; uint64_t x245; uint64_t x246; fiat_p521_uint1 x247; uint64_t x248; fiat_p521_uint1 x249; uint64_t x250; fiat_p521_uint1 x251; uint64_t x252; fiat_p521_uint1 x253; uint64_t x254; fiat_p521_uint1 x255; uint64_t x256; fiat_p521_uint1 x257; uint64_t x258; fiat_p521_uint1 x259; uint64_t x260; fiat_p521_uint1 x261; uint64_t x262; fiat_p521_uint1 x263; uint64_t x264; fiat_p521_uint1 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; uint64_t x277; uint64_t x278; uint64_t x279; uint64_t x280; uint64_t x281; uint64_t x282; uint64_t x283; uint64_t x284; fiat_p521_uint1 x285; uint64_t x286; fiat_p521_uint1 x287; uint64_t x288; fiat_p521_uint1 x289; uint64_t x290; fiat_p521_uint1 x291; uint64_t x292; fiat_p521_uint1 x293; uint64_t x294; fiat_p521_uint1 x295; uint64_t x296; fiat_p521_uint1 x297; uint64_t x298; fiat_p521_uint1 x299; uint64_t x300; uint64_t x301; fiat_p521_uint1 x302; uint64_t x303; fiat_p521_uint1 x304; uint64_t x305; fiat_p521_uint1 x306; uint64_t x307; fiat_p521_uint1 x308; uint64_t x309; fiat_p521_uint1 x310; uint64_t x311; fiat_p521_uint1 x312; uint64_t x313; fiat_p521_uint1 x314; uint64_t x315; fiat_p521_uint1 x316; uint64_t x317; fiat_p521_uint1 x318; uint64_t x319; fiat_p521_uint1 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; 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; fiat_p521_uint1 x341; uint64_t x342; fiat_p521_uint1 x343; uint64_t x344; fiat_p521_uint1 x345; uint64_t x346; fiat_p521_uint1 x347; uint64_t x348; fiat_p521_uint1 x349; uint64_t x350; fiat_p521_uint1 x351; uint64_t x352; fiat_p521_uint1 x353; uint64_t x354; fiat_p521_uint1 x355; uint64_t x356; uint64_t x357; fiat_p521_uint1 x358; uint64_t x359; fiat_p521_uint1 x360; uint64_t x361; fiat_p521_uint1 x362; uint64_t x363; fiat_p521_uint1 x364; uint64_t x365; fiat_p521_uint1 x366; uint64_t x367; fiat_p521_uint1 x368; uint64_t x369; fiat_p521_uint1 x370; uint64_t x371; fiat_p521_uint1 x372; uint64_t x373; fiat_p521_uint1 x374; uint64_t x375; fiat_p521_uint1 x376; uint64_t x377; uint64_t x378; uint64_t x379; uint64_t x380; uint64_t x381; uint64_t 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; fiat_p521_uint1 x396; uint64_t x397; fiat_p521_uint1 x398; uint64_t x399; fiat_p521_uint1 x400; uint64_t x401; fiat_p521_uint1 x402; uint64_t x403; fiat_p521_uint1 x404; uint64_t x405; fiat_p521_uint1 x406; uint64_t x407; fiat_p521_uint1 x408; uint64_t x409; fiat_p521_uint1 x410; uint64_t x411; uint64_t x412; fiat_p521_uint1 x413; uint64_t x414; fiat_p521_uint1 x415; uint64_t x416; fiat_p521_uint1 x417; uint64_t x418; fiat_p521_uint1 x419; uint64_t x420; fiat_p521_uint1 x421; uint64_t x422; fiat_p521_uint1 x423; uint64_t x424; fiat_p521_uint1 x425; uint64_t x426; fiat_p521_uint1 x427; uint64_t x428; fiat_p521_uint1 x429; uint64_t x430; fiat_p521_uint1 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; 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; fiat_p521_uint1 x452; uint64_t x453; fiat_p521_uint1 x454; uint64_t x455; fiat_p521_uint1 x456; uint64_t x457; fiat_p521_uint1 x458; uint64_t x459; fiat_p521_uint1 x460; uint64_t x461; fiat_p521_uint1 x462; uint64_t x463; fiat_p521_uint1 x464; uint64_t x465; fiat_p521_uint1 x466; uint64_t x467; uint64_t x468; fiat_p521_uint1 x469; uint64_t x470; fiat_p521_uint1 x471; uint64_t x472; fiat_p521_uint1 x473; uint64_t x474; fiat_p521_uint1 x475; uint64_t x476; fiat_p521_uint1 x477; uint64_t x478; fiat_p521_uint1 x479; uint64_t x480; fiat_p521_uint1 x481; uint64_t x482; fiat_p521_uint1 x483; uint64_t x484; fiat_p521_uint1 x485; uint64_t x486; fiat_p521_uint1 x487; uint64_t x488; uint64_t x489; uint64_t x490; uint64_t 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; fiat_p521_uint1 x507; uint64_t x508; fiat_p521_uint1 x509; uint64_t x510; fiat_p521_uint1 x511; uint64_t x512; fiat_p521_uint1 x513; uint64_t x514; fiat_p521_uint1 x515; uint64_t x516; fiat_p521_uint1 x517; uint64_t x518; fiat_p521_uint1 x519; uint64_t x520; fiat_p521_uint1 x521; uint64_t x522; uint64_t x523; fiat_p521_uint1 x524; uint64_t x525; fiat_p521_uint1 x526; uint64_t x527; fiat_p521_uint1 x528; uint64_t x529; fiat_p521_uint1 x530; uint64_t x531; fiat_p521_uint1 x532; uint64_t x533; fiat_p521_uint1 x534; uint64_t x535; fiat_p521_uint1 x536; uint64_t x537; fiat_p521_uint1 x538; uint64_t x539; fiat_p521_uint1 x540; uint64_t x541; fiat_p521_uint1 x542; uint64_t x543; uint64_t x544; uint64_t x545; uint64_t x546; uint64_t x547; uint64_t x548; uint64_t x549; uint64_t x550; uint64_t x551; uint64_t 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; fiat_p521_uint1 x563; uint64_t x564; fiat_p521_uint1 x565; uint64_t x566; fiat_p521_uint1 x567; uint64_t x568; fiat_p521_uint1 x569; uint64_t x570; fiat_p521_uint1 x571; uint64_t x572; fiat_p521_uint1 x573; uint64_t x574; fiat_p521_uint1 x575; uint64_t x576; fiat_p521_uint1 x577; uint64_t x578; uint64_t x579; fiat_p521_uint1 x580; uint64_t x581; fiat_p521_uint1 x582; uint64_t x583; fiat_p521_uint1 x584; uint64_t x585; fiat_p521_uint1 x586; uint64_t x587; fiat_p521_uint1 x588; uint64_t x589; fiat_p521_uint1 x590; uint64_t x591; fiat_p521_uint1 x592; uint64_t x593; fiat_p521_uint1 x594; uint64_t x595; fiat_p521_uint1 x596; uint64_t x597; fiat_p521_uint1 x598; uint64_t x599; uint64_t x600; uint64_t x601; uint64_t x602; uint64_t x603; uint64_t x604; uint64_t x605; uint64_t x606; uint64_t x607; uint64_t 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; fiat_p521_uint1 x618; uint64_t x619; fiat_p521_uint1 x620; uint64_t x621; fiat_p521_uint1 x622; uint64_t x623; fiat_p521_uint1 x624; uint64_t x625; fiat_p521_uint1 x626; uint64_t x627; fiat_p521_uint1 x628; uint64_t x629; fiat_p521_uint1 x630; uint64_t x631; fiat_p521_uint1 x632; uint64_t x633; uint64_t x634; fiat_p521_uint1 x635; uint64_t x636; fiat_p521_uint1 x637; uint64_t x638; fiat_p521_uint1 x639; uint64_t x640; fiat_p521_uint1 x641; uint64_t x642; fiat_p521_uint1 x643; uint64_t x644; fiat_p521_uint1 x645; uint64_t x646; fiat_p521_uint1 x647; uint64_t x648; fiat_p521_uint1 x649; uint64_t x650; fiat_p521_uint1 x651; uint64_t x652; fiat_p521_uint1 x653; uint64_t x654; uint64_t x655; uint64_t x656; uint64_t x657; uint64_t x658; uint64_t x659; uint64_t x660; uint64_t x661; uint64_t x662; uint64_t x663; uint64_t x664; uint64_t 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; fiat_p521_uint1 x674; uint64_t x675; fiat_p521_uint1 x676; uint64_t x677; fiat_p521_uint1 x678; uint64_t x679; fiat_p521_uint1 x680; uint64_t x681; fiat_p521_uint1 x682; uint64_t x683; fiat_p521_uint1 x684; uint64_t x685; fiat_p521_uint1 x686; uint64_t x687; fiat_p521_uint1 x688; uint64_t x689; uint64_t x690; fiat_p521_uint1 x691; uint64_t x692; fiat_p521_uint1 x693; uint64_t x694; fiat_p521_uint1 x695; uint64_t x696; fiat_p521_uint1 x697; uint64_t x698; fiat_p521_uint1 x699; uint64_t x700; fiat_p521_uint1 x701; uint64_t x702; fiat_p521_uint1 x703; uint64_t x704; fiat_p521_uint1 x705; uint64_t x706; fiat_p521_uint1 x707; uint64_t x708; fiat_p521_uint1 x709; uint64_t x710; uint64_t x711; uint64_t x712; uint64_t x713; uint64_t x714; uint64_t x715; uint64_t x716; uint64_t x717; uint64_t x718; uint64_t x719; uint64_t x720; uint64_t x721; uint64_t x722; uint64_t x723; uint64_t x724; uint64_t x725; uint64_t x726; uint64_t x727; uint64_t x728; fiat_p521_uint1 x729; uint64_t x730; fiat_p521_uint1 x731; uint64_t x732; fiat_p521_uint1 x733; uint64_t x734; fiat_p521_uint1 x735; uint64_t x736; fiat_p521_uint1 x737; uint64_t x738; fiat_p521_uint1 x739; uint64_t x740; fiat_p521_uint1 x741; uint64_t x742; fiat_p521_uint1 x743; uint64_t x744; uint64_t x745; fiat_p521_uint1 x746; uint64_t x747; fiat_p521_uint1 x748; uint64_t x749; fiat_p521_uint1 x750; uint64_t x751; fiat_p521_uint1 x752; uint64_t x753; fiat_p521_uint1 x754; uint64_t x755; fiat_p521_uint1 x756; uint64_t x757; fiat_p521_uint1 x758; uint64_t x759; fiat_p521_uint1 x760; uint64_t x761; fiat_p521_uint1 x762; uint64_t x763; fiat_p521_uint1 x764; uint64_t x765; uint64_t x766; uint64_t x767; uint64_t x768; uint64_t x769; uint64_t x770; uint64_t x771; uint64_t x772; uint64_t x773; uint64_t x774; uint64_t x775; uint64_t x776; uint64_t x777; uint64_t x778; uint64_t x779; uint64_t x780; uint64_t x781; uint64_t x782; uint64_t x783; uint64_t x784; fiat_p521_uint1 x785; uint64_t x786; fiat_p521_uint1 x787; uint64_t x788; fiat_p521_uint1 x789; uint64_t x790; fiat_p521_uint1 x791; uint64_t x792; fiat_p521_uint1 x793; uint64_t x794; fiat_p521_uint1 x795; uint64_t x796; fiat_p521_uint1 x797; uint64_t x798; fiat_p521_uint1 x799; uint64_t x800; uint64_t x801; fiat_p521_uint1 x802; uint64_t x803; fiat_p521_uint1 x804; uint64_t x805; fiat_p521_uint1 x806; uint64_t x807; fiat_p521_uint1 x808; uint64_t x809; fiat_p521_uint1 x810; uint64_t x811; fiat_p521_uint1 x812; uint64_t x813; fiat_p521_uint1 x814; uint64_t x815; fiat_p521_uint1 x816; uint64_t x817; fiat_p521_uint1 x818; uint64_t x819; fiat_p521_uint1 x820; uint64_t x821; uint64_t x822; uint64_t x823; uint64_t x824; uint64_t x825; uint64_t x826; uint64_t x827; uint64_t x828; uint64_t x829; uint64_t x830; uint64_t x831; uint64_t x832; uint64_t x833; uint64_t x834; uint64_t x835; uint64_t x836; uint64_t x837; uint64_t x838; uint64_t x839; fiat_p521_uint1 x840; uint64_t x841; fiat_p521_uint1 x842; uint64_t x843; fiat_p521_uint1 x844; uint64_t x845; fiat_p521_uint1 x846; uint64_t x847; fiat_p521_uint1 x848; uint64_t x849; fiat_p521_uint1 x850; uint64_t x851; fiat_p521_uint1 x852; uint64_t x853; fiat_p521_uint1 x854; uint64_t x855; uint64_t x856; fiat_p521_uint1 x857; uint64_t x858; fiat_p521_uint1 x859; uint64_t x860; fiat_p521_uint1 x861; uint64_t x862; fiat_p521_uint1 x863; uint64_t x864; fiat_p521_uint1 x865; uint64_t x866; fiat_p521_uint1 x867; uint64_t x868; fiat_p521_uint1 x869; uint64_t x870; fiat_p521_uint1 x871; uint64_t x872; fiat_p521_uint1 x873; uint64_t x874; fiat_p521_uint1 x875; uint64_t x876; uint64_t x877; uint64_t x878; uint64_t x879; uint64_t x880; uint64_t x881; uint64_t x882; uint64_t x883; uint64_t x884; uint64_t x885; uint64_t x886; uint64_t x887; uint64_t x888; uint64_t x889; uint64_t x890; uint64_t x891; uint64_t x892; uint64_t x893; uint64_t x894; uint64_t x895; fiat_p521_uint1 x896; uint64_t x897; fiat_p521_uint1 x898; uint64_t x899; fiat_p521_uint1 x900; uint64_t x901; fiat_p521_uint1 x902; uint64_t x903; fiat_p521_uint1 x904; uint64_t x905; fiat_p521_uint1 x906; uint64_t x907; fiat_p521_uint1 x908; uint64_t x909; fiat_p521_uint1 x910; uint64_t x911; uint64_t x912; fiat_p521_uint1 x913; uint64_t x914; fiat_p521_uint1 x915; uint64_t x916; fiat_p521_uint1 x917; uint64_t x918; fiat_p521_uint1 x919; uint64_t x920; fiat_p521_uint1 x921; uint64_t x922; fiat_p521_uint1 x923; uint64_t x924; fiat_p521_uint1 x925; uint64_t x926; fiat_p521_uint1 x927; uint64_t x928; fiat_p521_uint1 x929; uint64_t x930; fiat_p521_uint1 x931; uint64_t x932; uint64_t x933; uint64_t x934; uint64_t x935; uint64_t x936; uint64_t x937; uint64_t x938; uint64_t x939; uint64_t x940; uint64_t x941; uint64_t x942; uint64_t x943; uint64_t x944; uint64_t x945; uint64_t x946; uint64_t x947; uint64_t x948; uint64_t x949; uint64_t x950; fiat_p521_uint1 x951; uint64_t x952; fiat_p521_uint1 x953; uint64_t x954; fiat_p521_uint1 x955; uint64_t x956; fiat_p521_uint1 x957; uint64_t x958; fiat_p521_uint1 x959; uint64_t x960; fiat_p521_uint1 x961; uint64_t x962; fiat_p521_uint1 x963; uint64_t x964; fiat_p521_uint1 x965; uint64_t x966; uint64_t x967; fiat_p521_uint1 x968; uint64_t x969; fiat_p521_uint1 x970; uint64_t x971; fiat_p521_uint1 x972; uint64_t x973; fiat_p521_uint1 x974; uint64_t x975; fiat_p521_uint1 x976; uint64_t x977; fiat_p521_uint1 x978; uint64_t x979; fiat_p521_uint1 x980; uint64_t x981; fiat_p521_uint1 x982; uint64_t x983; fiat_p521_uint1 x984; uint64_t x985; fiat_p521_uint1 x986; uint64_t x987; uint64_t x988; fiat_p521_uint1 x989; uint64_t x990; fiat_p521_uint1 x991; uint64_t x992; fiat_p521_uint1 x993; uint64_t x994; fiat_p521_uint1 x995; uint64_t x996; fiat_p521_uint1 x997; uint64_t x998; fiat_p521_uint1 x999; uint64_t x1000; fiat_p521_uint1 x1001; uint64_t x1002; fiat_p521_uint1 x1003; uint64_t x1004; fiat_p521_uint1 x1005; uint64_t x1006; fiat_p521_uint1 x1007; uint64_t x1008; uint64_t x1009; uint64_t x1010; uint64_t x1011; uint64_t x1012; uint64_t x1013; uint64_t x1014; uint64_t x1015; uint64_t x1016; 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_p521_mulx_u64(&x10, &x11, x9, (arg2[8])); fiat_p521_mulx_u64(&x12, &x13, x9, (arg2[7])); fiat_p521_mulx_u64(&x14, &x15, x9, (arg2[6])); fiat_p521_mulx_u64(&x16, &x17, x9, (arg2[5])); fiat_p521_mulx_u64(&x18, &x19, x9, (arg2[4])); fiat_p521_mulx_u64(&x20, &x21, x9, (arg2[3])); fiat_p521_mulx_u64(&x22, &x23, x9, (arg2[2])); fiat_p521_mulx_u64(&x24, &x25, x9, (arg2[1])); fiat_p521_mulx_u64(&x26, &x27, x9, (arg2[0])); fiat_p521_addcarryx_u64(&x28, &x29, 0x0, x27, x24); fiat_p521_addcarryx_u64(&x30, &x31, x29, x25, x22); fiat_p521_addcarryx_u64(&x32, &x33, x31, x23, x20); fiat_p521_addcarryx_u64(&x34, &x35, x33, x21, x18); fiat_p521_addcarryx_u64(&x36, &x37, x35, x19, x16); fiat_p521_addcarryx_u64(&x38, &x39, x37, x17, x14); fiat_p521_addcarryx_u64(&x40, &x41, x39, x15, x12); fiat_p521_addcarryx_u64(&x42, &x43, x41, x13, x10); x44 = (x43 + x11); fiat_p521_mulx_u64(&x45, &x46, x26, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x47, &x48, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x49, &x50, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x51, &x52, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x53, &x54, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x55, &x56, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x57, &x58, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x59, &x60, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x61, &x62, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x63, &x64, 0x0, x62, x59); fiat_p521_addcarryx_u64(&x65, &x66, x64, x60, x57); fiat_p521_addcarryx_u64(&x67, &x68, x66, x58, x55); fiat_p521_addcarryx_u64(&x69, &x70, x68, x56, x53); fiat_p521_addcarryx_u64(&x71, &x72, x70, x54, x51); fiat_p521_addcarryx_u64(&x73, &x74, x72, x52, x49); fiat_p521_addcarryx_u64(&x75, &x76, x74, x50, x47); fiat_p521_addcarryx_u64(&x77, &x78, x76, x48, x45); x79 = (x78 + x46); fiat_p521_addcarryx_u64(&x80, &x81, 0x0, x26, x61); fiat_p521_addcarryx_u64(&x82, &x83, x81, x28, x63); fiat_p521_addcarryx_u64(&x84, &x85, x83, x30, x65); fiat_p521_addcarryx_u64(&x86, &x87, x85, x32, x67); fiat_p521_addcarryx_u64(&x88, &x89, x87, x34, x69); fiat_p521_addcarryx_u64(&x90, &x91, x89, x36, x71); fiat_p521_addcarryx_u64(&x92, &x93, x91, x38, x73); fiat_p521_addcarryx_u64(&x94, &x95, x93, x40, x75); fiat_p521_addcarryx_u64(&x96, &x97, x95, x42, x77); fiat_p521_addcarryx_u64(&x98, &x99, x97, x44, x79); fiat_p521_mulx_u64(&x100, &x101, x1, (arg2[8])); fiat_p521_mulx_u64(&x102, &x103, x1, (arg2[7])); fiat_p521_mulx_u64(&x104, &x105, x1, (arg2[6])); fiat_p521_mulx_u64(&x106, &x107, x1, (arg2[5])); fiat_p521_mulx_u64(&x108, &x109, x1, (arg2[4])); fiat_p521_mulx_u64(&x110, &x111, x1, (arg2[3])); fiat_p521_mulx_u64(&x112, &x113, x1, (arg2[2])); fiat_p521_mulx_u64(&x114, &x115, x1, (arg2[1])); fiat_p521_mulx_u64(&x116, &x117, x1, (arg2[0])); fiat_p521_addcarryx_u64(&x118, &x119, 0x0, x117, x114); fiat_p521_addcarryx_u64(&x120, &x121, x119, x115, x112); fiat_p521_addcarryx_u64(&x122, &x123, x121, x113, x110); fiat_p521_addcarryx_u64(&x124, &x125, x123, x111, x108); fiat_p521_addcarryx_u64(&x126, &x127, x125, x109, x106); fiat_p521_addcarryx_u64(&x128, &x129, x127, x107, x104); fiat_p521_addcarryx_u64(&x130, &x131, x129, x105, x102); fiat_p521_addcarryx_u64(&x132, &x133, x131, x103, x100); x134 = (x133 + x101); fiat_p521_addcarryx_u64(&x135, &x136, 0x0, x82, x116); fiat_p521_addcarryx_u64(&x137, &x138, x136, x84, x118); fiat_p521_addcarryx_u64(&x139, &x140, x138, x86, x120); fiat_p521_addcarryx_u64(&x141, &x142, x140, x88, x122); fiat_p521_addcarryx_u64(&x143, &x144, x142, x90, x124); fiat_p521_addcarryx_u64(&x145, &x146, x144, x92, x126); fiat_p521_addcarryx_u64(&x147, &x148, x146, x94, x128); fiat_p521_addcarryx_u64(&x149, &x150, x148, x96, x130); fiat_p521_addcarryx_u64(&x151, &x152, x150, x98, x132); fiat_p521_addcarryx_u64(&x153, &x154, x152, x99, x134); fiat_p521_mulx_u64(&x155, &x156, x135, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x157, &x158, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x159, &x160, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x161, &x162, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x163, &x164, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x165, &x166, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x167, &x168, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x169, &x170, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x171, &x172, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x173, &x174, 0x0, x172, x169); fiat_p521_addcarryx_u64(&x175, &x176, x174, x170, x167); fiat_p521_addcarryx_u64(&x177, &x178, x176, x168, x165); fiat_p521_addcarryx_u64(&x179, &x180, x178, x166, x163); fiat_p521_addcarryx_u64(&x181, &x182, x180, x164, x161); fiat_p521_addcarryx_u64(&x183, &x184, x182, x162, x159); fiat_p521_addcarryx_u64(&x185, &x186, x184, x160, x157); fiat_p521_addcarryx_u64(&x187, &x188, x186, x158, x155); x189 = (x188 + x156); fiat_p521_addcarryx_u64(&x190, &x191, 0x0, x135, x171); fiat_p521_addcarryx_u64(&x192, &x193, x191, x137, x173); fiat_p521_addcarryx_u64(&x194, &x195, x193, x139, x175); fiat_p521_addcarryx_u64(&x196, &x197, x195, x141, x177); fiat_p521_addcarryx_u64(&x198, &x199, x197, x143, x179); fiat_p521_addcarryx_u64(&x200, &x201, x199, x145, x181); fiat_p521_addcarryx_u64(&x202, &x203, x201, x147, x183); fiat_p521_addcarryx_u64(&x204, &x205, x203, x149, x185); fiat_p521_addcarryx_u64(&x206, &x207, x205, x151, x187); fiat_p521_addcarryx_u64(&x208, &x209, x207, x153, x189); x210 = ((uint64_t)x209 + x154); fiat_p521_mulx_u64(&x211, &x212, x2, (arg2[8])); fiat_p521_mulx_u64(&x213, &x214, x2, (arg2[7])); fiat_p521_mulx_u64(&x215, &x216, x2, (arg2[6])); fiat_p521_mulx_u64(&x217, &x218, x2, (arg2[5])); fiat_p521_mulx_u64(&x219, &x220, x2, (arg2[4])); fiat_p521_mulx_u64(&x221, &x222, x2, (arg2[3])); fiat_p521_mulx_u64(&x223, &x224, x2, (arg2[2])); fiat_p521_mulx_u64(&x225, &x226, x2, (arg2[1])); fiat_p521_mulx_u64(&x227, &x228, x2, (arg2[0])); fiat_p521_addcarryx_u64(&x229, &x230, 0x0, x228, x225); fiat_p521_addcarryx_u64(&x231, &x232, x230, x226, x223); fiat_p521_addcarryx_u64(&x233, &x234, x232, x224, x221); fiat_p521_addcarryx_u64(&x235, &x236, x234, x222, x219); fiat_p521_addcarryx_u64(&x237, &x238, x236, x220, x217); fiat_p521_addcarryx_u64(&x239, &x240, x238, x218, x215); fiat_p521_addcarryx_u64(&x241, &x242, x240, x216, x213); fiat_p521_addcarryx_u64(&x243, &x244, x242, x214, x211); x245 = (x244 + x212); fiat_p521_addcarryx_u64(&x246, &x247, 0x0, x192, x227); fiat_p521_addcarryx_u64(&x248, &x249, x247, x194, x229); fiat_p521_addcarryx_u64(&x250, &x251, x249, x196, x231); fiat_p521_addcarryx_u64(&x252, &x253, x251, x198, x233); fiat_p521_addcarryx_u64(&x254, &x255, x253, x200, x235); fiat_p521_addcarryx_u64(&x256, &x257, x255, x202, x237); fiat_p521_addcarryx_u64(&x258, &x259, x257, x204, x239); fiat_p521_addcarryx_u64(&x260, &x261, x259, x206, x241); fiat_p521_addcarryx_u64(&x262, &x263, x261, x208, x243); fiat_p521_addcarryx_u64(&x264, &x265, x263, x210, x245); fiat_p521_mulx_u64(&x266, &x267, x246, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x268, &x269, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x270, &x271, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x272, &x273, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x274, &x275, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x276, &x277, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x278, &x279, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x280, &x281, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x282, &x283, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x284, &x285, 0x0, x283, x280); fiat_p521_addcarryx_u64(&x286, &x287, x285, x281, x278); fiat_p521_addcarryx_u64(&x288, &x289, x287, x279, x276); fiat_p521_addcarryx_u64(&x290, &x291, x289, x277, x274); fiat_p521_addcarryx_u64(&x292, &x293, x291, x275, x272); fiat_p521_addcarryx_u64(&x294, &x295, x293, x273, x270); fiat_p521_addcarryx_u64(&x296, &x297, x295, x271, x268); fiat_p521_addcarryx_u64(&x298, &x299, x297, x269, x266); x300 = (x299 + x267); fiat_p521_addcarryx_u64(&x301, &x302, 0x0, x246, x282); fiat_p521_addcarryx_u64(&x303, &x304, x302, x248, x284); fiat_p521_addcarryx_u64(&x305, &x306, x304, x250, x286); fiat_p521_addcarryx_u64(&x307, &x308, x306, x252, x288); fiat_p521_addcarryx_u64(&x309, &x310, x308, x254, x290); fiat_p521_addcarryx_u64(&x311, &x312, x310, x256, x292); fiat_p521_addcarryx_u64(&x313, &x314, x312, x258, x294); fiat_p521_addcarryx_u64(&x315, &x316, x314, x260, x296); fiat_p521_addcarryx_u64(&x317, &x318, x316, x262, x298); fiat_p521_addcarryx_u64(&x319, &x320, x318, x264, x300); x321 = ((uint64_t)x320 + x265); fiat_p521_mulx_u64(&x322, &x323, x3, (arg2[8])); fiat_p521_mulx_u64(&x324, &x325, x3, (arg2[7])); fiat_p521_mulx_u64(&x326, &x327, x3, (arg2[6])); fiat_p521_mulx_u64(&x328, &x329, x3, (arg2[5])); fiat_p521_mulx_u64(&x330, &x331, x3, (arg2[4])); fiat_p521_mulx_u64(&x332, &x333, x3, (arg2[3])); fiat_p521_mulx_u64(&x334, &x335, x3, (arg2[2])); fiat_p521_mulx_u64(&x336, &x337, x3, (arg2[1])); fiat_p521_mulx_u64(&x338, &x339, x3, (arg2[0])); fiat_p521_addcarryx_u64(&x340, &x341, 0x0, x339, x336); fiat_p521_addcarryx_u64(&x342, &x343, x341, x337, x334); fiat_p521_addcarryx_u64(&x344, &x345, x343, x335, x332); fiat_p521_addcarryx_u64(&x346, &x347, x345, x333, x330); fiat_p521_addcarryx_u64(&x348, &x349, x347, x331, x328); fiat_p521_addcarryx_u64(&x350, &x351, x349, x329, x326); fiat_p521_addcarryx_u64(&x352, &x353, x351, x327, x324); fiat_p521_addcarryx_u64(&x354, &x355, x353, x325, x322); x356 = (x355 + x323); fiat_p521_addcarryx_u64(&x357, &x358, 0x0, x303, x338); fiat_p521_addcarryx_u64(&x359, &x360, x358, x305, x340); fiat_p521_addcarryx_u64(&x361, &x362, x360, x307, x342); fiat_p521_addcarryx_u64(&x363, &x364, x362, x309, x344); fiat_p521_addcarryx_u64(&x365, &x366, x364, x311, x346); fiat_p521_addcarryx_u64(&x367, &x368, x366, x313, x348); fiat_p521_addcarryx_u64(&x369, &x370, x368, x315, x350); fiat_p521_addcarryx_u64(&x371, &x372, x370, x317, x352); fiat_p521_addcarryx_u64(&x373, &x374, x372, x319, x354); fiat_p521_addcarryx_u64(&x375, &x376, x374, x321, x356); fiat_p521_mulx_u64(&x377, &x378, x357, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x379, &x380, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x381, &x382, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x383, &x384, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x385, &x386, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x387, &x388, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x389, &x390, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x391, &x392, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x393, &x394, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x395, &x396, 0x0, x394, x391); fiat_p521_addcarryx_u64(&x397, &x398, x396, x392, x389); fiat_p521_addcarryx_u64(&x399, &x400, x398, x390, x387); fiat_p521_addcarryx_u64(&x401, &x402, x400, x388, x385); fiat_p521_addcarryx_u64(&x403, &x404, x402, x386, x383); fiat_p521_addcarryx_u64(&x405, &x406, x404, x384, x381); fiat_p521_addcarryx_u64(&x407, &x408, x406, x382, x379); fiat_p521_addcarryx_u64(&x409, &x410, x408, x380, x377); x411 = (x410 + x378); fiat_p521_addcarryx_u64(&x412, &x413, 0x0, x357, x393); fiat_p521_addcarryx_u64(&x414, &x415, x413, x359, x395); fiat_p521_addcarryx_u64(&x416, &x417, x415, x361, x397); fiat_p521_addcarryx_u64(&x418, &x419, x417, x363, x399); fiat_p521_addcarryx_u64(&x420, &x421, x419, x365, x401); fiat_p521_addcarryx_u64(&x422, &x423, x421, x367, x403); fiat_p521_addcarryx_u64(&x424, &x425, x423, x369, x405); fiat_p521_addcarryx_u64(&x426, &x427, x425, x371, x407); fiat_p521_addcarryx_u64(&x428, &x429, x427, x373, x409); fiat_p521_addcarryx_u64(&x430, &x431, x429, x375, x411); x432 = ((uint64_t)x431 + x376); fiat_p521_mulx_u64(&x433, &x434, x4, (arg2[8])); fiat_p521_mulx_u64(&x435, &x436, x4, (arg2[7])); fiat_p521_mulx_u64(&x437, &x438, x4, (arg2[6])); fiat_p521_mulx_u64(&x439, &x440, x4, (arg2[5])); fiat_p521_mulx_u64(&x441, &x442, x4, (arg2[4])); fiat_p521_mulx_u64(&x443, &x444, x4, (arg2[3])); fiat_p521_mulx_u64(&x445, &x446, x4, (arg2[2])); fiat_p521_mulx_u64(&x447, &x448, x4, (arg2[1])); fiat_p521_mulx_u64(&x449, &x450, x4, (arg2[0])); fiat_p521_addcarryx_u64(&x451, &x452, 0x0, x450, x447); fiat_p521_addcarryx_u64(&x453, &x454, x452, x448, x445); fiat_p521_addcarryx_u64(&x455, &x456, x454, x446, x443); fiat_p521_addcarryx_u64(&x457, &x458, x456, x444, x441); fiat_p521_addcarryx_u64(&x459, &x460, x458, x442, x439); fiat_p521_addcarryx_u64(&x461, &x462, x460, x440, x437); fiat_p521_addcarryx_u64(&x463, &x464, x462, x438, x435); fiat_p521_addcarryx_u64(&x465, &x466, x464, x436, x433); x467 = (x466 + x434); fiat_p521_addcarryx_u64(&x468, &x469, 0x0, x414, x449); fiat_p521_addcarryx_u64(&x470, &x471, x469, x416, x451); fiat_p521_addcarryx_u64(&x472, &x473, x471, x418, x453); fiat_p521_addcarryx_u64(&x474, &x475, x473, x420, x455); fiat_p521_addcarryx_u64(&x476, &x477, x475, x422, x457); fiat_p521_addcarryx_u64(&x478, &x479, x477, x424, x459); fiat_p521_addcarryx_u64(&x480, &x481, x479, x426, x461); fiat_p521_addcarryx_u64(&x482, &x483, x481, x428, x463); fiat_p521_addcarryx_u64(&x484, &x485, x483, x430, x465); fiat_p521_addcarryx_u64(&x486, &x487, x485, x432, x467); fiat_p521_mulx_u64(&x488, &x489, x468, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x490, &x491, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x492, &x493, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x494, &x495, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x496, &x497, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x498, &x499, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x500, &x501, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x502, &x503, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x504, &x505, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x506, &x507, 0x0, x505, x502); fiat_p521_addcarryx_u64(&x508, &x509, x507, x503, x500); fiat_p521_addcarryx_u64(&x510, &x511, x509, x501, x498); fiat_p521_addcarryx_u64(&x512, &x513, x511, x499, x496); fiat_p521_addcarryx_u64(&x514, &x515, x513, x497, x494); fiat_p521_addcarryx_u64(&x516, &x517, x515, x495, x492); fiat_p521_addcarryx_u64(&x518, &x519, x517, x493, x490); fiat_p521_addcarryx_u64(&x520, &x521, x519, x491, x488); x522 = (x521 + x489); fiat_p521_addcarryx_u64(&x523, &x524, 0x0, x468, x504); fiat_p521_addcarryx_u64(&x525, &x526, x524, x470, x506); fiat_p521_addcarryx_u64(&x527, &x528, x526, x472, x508); fiat_p521_addcarryx_u64(&x529, &x530, x528, x474, x510); fiat_p521_addcarryx_u64(&x531, &x532, x530, x476, x512); fiat_p521_addcarryx_u64(&x533, &x534, x532, x478, x514); fiat_p521_addcarryx_u64(&x535, &x536, x534, x480, x516); fiat_p521_addcarryx_u64(&x537, &x538, x536, x482, x518); fiat_p521_addcarryx_u64(&x539, &x540, x538, x484, x520); fiat_p521_addcarryx_u64(&x541, &x542, x540, x486, x522); x543 = ((uint64_t)x542 + x487); fiat_p521_mulx_u64(&x544, &x545, x5, (arg2[8])); fiat_p521_mulx_u64(&x546, &x547, x5, (arg2[7])); fiat_p521_mulx_u64(&x548, &x549, x5, (arg2[6])); fiat_p521_mulx_u64(&x550, &x551, x5, (arg2[5])); fiat_p521_mulx_u64(&x552, &x553, x5, (arg2[4])); fiat_p521_mulx_u64(&x554, &x555, x5, (arg2[3])); fiat_p521_mulx_u64(&x556, &x557, x5, (arg2[2])); fiat_p521_mulx_u64(&x558, &x559, x5, (arg2[1])); fiat_p521_mulx_u64(&x560, &x561, x5, (arg2[0])); fiat_p521_addcarryx_u64(&x562, &x563, 0x0, x561, x558); fiat_p521_addcarryx_u64(&x564, &x565, x563, x559, x556); fiat_p521_addcarryx_u64(&x566, &x567, x565, x557, x554); fiat_p521_addcarryx_u64(&x568, &x569, x567, x555, x552); fiat_p521_addcarryx_u64(&x570, &x571, x569, x553, x550); fiat_p521_addcarryx_u64(&x572, &x573, x571, x551, x548); fiat_p521_addcarryx_u64(&x574, &x575, x573, x549, x546); fiat_p521_addcarryx_u64(&x576, &x577, x575, x547, x544); x578 = (x577 + x545); fiat_p521_addcarryx_u64(&x579, &x580, 0x0, x525, x560); fiat_p521_addcarryx_u64(&x581, &x582, x580, x527, x562); fiat_p521_addcarryx_u64(&x583, &x584, x582, x529, x564); fiat_p521_addcarryx_u64(&x585, &x586, x584, x531, x566); fiat_p521_addcarryx_u64(&x587, &x588, x586, x533, x568); fiat_p521_addcarryx_u64(&x589, &x590, x588, x535, x570); fiat_p521_addcarryx_u64(&x591, &x592, x590, x537, x572); fiat_p521_addcarryx_u64(&x593, &x594, x592, x539, x574); fiat_p521_addcarryx_u64(&x595, &x596, x594, x541, x576); fiat_p521_addcarryx_u64(&x597, &x598, x596, x543, x578); fiat_p521_mulx_u64(&x599, &x600, x579, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x601, &x602, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x603, &x604, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x605, &x606, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x607, &x608, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x609, &x610, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x611, &x612, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x613, &x614, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x615, &x616, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x617, &x618, 0x0, x616, x613); fiat_p521_addcarryx_u64(&x619, &x620, x618, x614, x611); fiat_p521_addcarryx_u64(&x621, &x622, x620, x612, x609); fiat_p521_addcarryx_u64(&x623, &x624, x622, x610, x607); fiat_p521_addcarryx_u64(&x625, &x626, x624, x608, x605); fiat_p521_addcarryx_u64(&x627, &x628, x626, x606, x603); fiat_p521_addcarryx_u64(&x629, &x630, x628, x604, x601); fiat_p521_addcarryx_u64(&x631, &x632, x630, x602, x599); x633 = (x632 + x600); fiat_p521_addcarryx_u64(&x634, &x635, 0x0, x579, x615); fiat_p521_addcarryx_u64(&x636, &x637, x635, x581, x617); fiat_p521_addcarryx_u64(&x638, &x639, x637, x583, x619); fiat_p521_addcarryx_u64(&x640, &x641, x639, x585, x621); fiat_p521_addcarryx_u64(&x642, &x643, x641, x587, x623); fiat_p521_addcarryx_u64(&x644, &x645, x643, x589, x625); fiat_p521_addcarryx_u64(&x646, &x647, x645, x591, x627); fiat_p521_addcarryx_u64(&x648, &x649, x647, x593, x629); fiat_p521_addcarryx_u64(&x650, &x651, x649, x595, x631); fiat_p521_addcarryx_u64(&x652, &x653, x651, x597, x633); x654 = ((uint64_t)x653 + x598); fiat_p521_mulx_u64(&x655, &x656, x6, (arg2[8])); fiat_p521_mulx_u64(&x657, &x658, x6, (arg2[7])); fiat_p521_mulx_u64(&x659, &x660, x6, (arg2[6])); fiat_p521_mulx_u64(&x661, &x662, x6, (arg2[5])); fiat_p521_mulx_u64(&x663, &x664, x6, (arg2[4])); fiat_p521_mulx_u64(&x665, &x666, x6, (arg2[3])); fiat_p521_mulx_u64(&x667, &x668, x6, (arg2[2])); fiat_p521_mulx_u64(&x669, &x670, x6, (arg2[1])); fiat_p521_mulx_u64(&x671, &x672, x6, (arg2[0])); fiat_p521_addcarryx_u64(&x673, &x674, 0x0, x672, x669); fiat_p521_addcarryx_u64(&x675, &x676, x674, x670, x667); fiat_p521_addcarryx_u64(&x677, &x678, x676, x668, x665); fiat_p521_addcarryx_u64(&x679, &x680, x678, x666, x663); fiat_p521_addcarryx_u64(&x681, &x682, x680, x664, x661); fiat_p521_addcarryx_u64(&x683, &x684, x682, x662, x659); fiat_p521_addcarryx_u64(&x685, &x686, x684, x660, x657); fiat_p521_addcarryx_u64(&x687, &x688, x686, x658, x655); x689 = (x688 + x656); fiat_p521_addcarryx_u64(&x690, &x691, 0x0, x636, x671); fiat_p521_addcarryx_u64(&x692, &x693, x691, x638, x673); fiat_p521_addcarryx_u64(&x694, &x695, x693, x640, x675); fiat_p521_addcarryx_u64(&x696, &x697, x695, x642, x677); fiat_p521_addcarryx_u64(&x698, &x699, x697, x644, x679); fiat_p521_addcarryx_u64(&x700, &x701, x699, x646, x681); fiat_p521_addcarryx_u64(&x702, &x703, x701, x648, x683); fiat_p521_addcarryx_u64(&x704, &x705, x703, x650, x685); fiat_p521_addcarryx_u64(&x706, &x707, x705, x652, x687); fiat_p521_addcarryx_u64(&x708, &x709, x707, x654, x689); fiat_p521_mulx_u64(&x710, &x711, x690, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x712, &x713, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x714, &x715, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x716, &x717, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x718, &x719, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x720, &x721, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x722, &x723, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x724, &x725, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x726, &x727, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x728, &x729, 0x0, x727, x724); fiat_p521_addcarryx_u64(&x730, &x731, x729, x725, x722); fiat_p521_addcarryx_u64(&x732, &x733, x731, x723, x720); fiat_p521_addcarryx_u64(&x734, &x735, x733, x721, x718); fiat_p521_addcarryx_u64(&x736, &x737, x735, x719, x716); fiat_p521_addcarryx_u64(&x738, &x739, x737, x717, x714); fiat_p521_addcarryx_u64(&x740, &x741, x739, x715, x712); fiat_p521_addcarryx_u64(&x742, &x743, x741, x713, x710); x744 = (x743 + x711); fiat_p521_addcarryx_u64(&x745, &x746, 0x0, x690, x726); fiat_p521_addcarryx_u64(&x747, &x748, x746, x692, x728); fiat_p521_addcarryx_u64(&x749, &x750, x748, x694, x730); fiat_p521_addcarryx_u64(&x751, &x752, x750, x696, x732); fiat_p521_addcarryx_u64(&x753, &x754, x752, x698, x734); fiat_p521_addcarryx_u64(&x755, &x756, x754, x700, x736); fiat_p521_addcarryx_u64(&x757, &x758, x756, x702, x738); fiat_p521_addcarryx_u64(&x759, &x760, x758, x704, x740); fiat_p521_addcarryx_u64(&x761, &x762, x760, x706, x742); fiat_p521_addcarryx_u64(&x763, &x764, x762, x708, x744); x765 = ((uint64_t)x764 + x709); fiat_p521_mulx_u64(&x766, &x767, x7, (arg2[8])); fiat_p521_mulx_u64(&x768, &x769, x7, (arg2[7])); fiat_p521_mulx_u64(&x770, &x771, x7, (arg2[6])); fiat_p521_mulx_u64(&x772, &x773, x7, (arg2[5])); fiat_p521_mulx_u64(&x774, &x775, x7, (arg2[4])); fiat_p521_mulx_u64(&x776, &x777, x7, (arg2[3])); fiat_p521_mulx_u64(&x778, &x779, x7, (arg2[2])); fiat_p521_mulx_u64(&x780, &x781, x7, (arg2[1])); fiat_p521_mulx_u64(&x782, &x783, x7, (arg2[0])); fiat_p521_addcarryx_u64(&x784, &x785, 0x0, x783, x780); fiat_p521_addcarryx_u64(&x786, &x787, x785, x781, x778); fiat_p521_addcarryx_u64(&x788, &x789, x787, x779, x776); fiat_p521_addcarryx_u64(&x790, &x791, x789, x777, x774); fiat_p521_addcarryx_u64(&x792, &x793, x791, x775, x772); fiat_p521_addcarryx_u64(&x794, &x795, x793, x773, x770); fiat_p521_addcarryx_u64(&x796, &x797, x795, x771, x768); fiat_p521_addcarryx_u64(&x798, &x799, x797, x769, x766); x800 = (x799 + x767); fiat_p521_addcarryx_u64(&x801, &x802, 0x0, x747, x782); fiat_p521_addcarryx_u64(&x803, &x804, x802, x749, x784); fiat_p521_addcarryx_u64(&x805, &x806, x804, x751, x786); fiat_p521_addcarryx_u64(&x807, &x808, x806, x753, x788); fiat_p521_addcarryx_u64(&x809, &x810, x808, x755, x790); fiat_p521_addcarryx_u64(&x811, &x812, x810, x757, x792); fiat_p521_addcarryx_u64(&x813, &x814, x812, x759, x794); fiat_p521_addcarryx_u64(&x815, &x816, x814, x761, x796); fiat_p521_addcarryx_u64(&x817, &x818, x816, x763, x798); fiat_p521_addcarryx_u64(&x819, &x820, x818, x765, x800); fiat_p521_mulx_u64(&x821, &x822, x801, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x823, &x824, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x825, &x826, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x827, &x828, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x829, &x830, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x831, &x832, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x833, &x834, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x835, &x836, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x837, &x838, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x839, &x840, 0x0, x838, x835); fiat_p521_addcarryx_u64(&x841, &x842, x840, x836, x833); fiat_p521_addcarryx_u64(&x843, &x844, x842, x834, x831); fiat_p521_addcarryx_u64(&x845, &x846, x844, x832, x829); fiat_p521_addcarryx_u64(&x847, &x848, x846, x830, x827); fiat_p521_addcarryx_u64(&x849, &x850, x848, x828, x825); fiat_p521_addcarryx_u64(&x851, &x852, x850, x826, x823); fiat_p521_addcarryx_u64(&x853, &x854, x852, x824, x821); x855 = (x854 + x822); fiat_p521_addcarryx_u64(&x856, &x857, 0x0, x801, x837); fiat_p521_addcarryx_u64(&x858, &x859, x857, x803, x839); fiat_p521_addcarryx_u64(&x860, &x861, x859, x805, x841); fiat_p521_addcarryx_u64(&x862, &x863, x861, x807, x843); fiat_p521_addcarryx_u64(&x864, &x865, x863, x809, x845); fiat_p521_addcarryx_u64(&x866, &x867, x865, x811, x847); fiat_p521_addcarryx_u64(&x868, &x869, x867, x813, x849); fiat_p521_addcarryx_u64(&x870, &x871, x869, x815, x851); fiat_p521_addcarryx_u64(&x872, &x873, x871, x817, x853); fiat_p521_addcarryx_u64(&x874, &x875, x873, x819, x855); x876 = ((uint64_t)x875 + x820); fiat_p521_mulx_u64(&x877, &x878, x8, (arg2[8])); fiat_p521_mulx_u64(&x879, &x880, x8, (arg2[7])); fiat_p521_mulx_u64(&x881, &x882, x8, (arg2[6])); fiat_p521_mulx_u64(&x883, &x884, x8, (arg2[5])); fiat_p521_mulx_u64(&x885, &x886, x8, (arg2[4])); fiat_p521_mulx_u64(&x887, &x888, x8, (arg2[3])); fiat_p521_mulx_u64(&x889, &x890, x8, (arg2[2])); fiat_p521_mulx_u64(&x891, &x892, x8, (arg2[1])); fiat_p521_mulx_u64(&x893, &x894, x8, (arg2[0])); fiat_p521_addcarryx_u64(&x895, &x896, 0x0, x894, x891); fiat_p521_addcarryx_u64(&x897, &x898, x896, x892, x889); fiat_p521_addcarryx_u64(&x899, &x900, x898, x890, x887); fiat_p521_addcarryx_u64(&x901, &x902, x900, x888, x885); fiat_p521_addcarryx_u64(&x903, &x904, x902, x886, x883); fiat_p521_addcarryx_u64(&x905, &x906, x904, x884, x881); fiat_p521_addcarryx_u64(&x907, &x908, x906, x882, x879); fiat_p521_addcarryx_u64(&x909, &x910, x908, x880, x877); x911 = (x910 + x878); fiat_p521_addcarryx_u64(&x912, &x913, 0x0, x858, x893); fiat_p521_addcarryx_u64(&x914, &x915, x913, x860, x895); fiat_p521_addcarryx_u64(&x916, &x917, x915, x862, x897); fiat_p521_addcarryx_u64(&x918, &x919, x917, x864, x899); fiat_p521_addcarryx_u64(&x920, &x921, x919, x866, x901); fiat_p521_addcarryx_u64(&x922, &x923, x921, x868, x903); fiat_p521_addcarryx_u64(&x924, &x925, x923, x870, x905); fiat_p521_addcarryx_u64(&x926, &x927, x925, x872, x907); fiat_p521_addcarryx_u64(&x928, &x929, x927, x874, x909); fiat_p521_addcarryx_u64(&x930, &x931, x929, x876, x911); fiat_p521_mulx_u64(&x932, &x933, x912, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x934, &x935, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x936, &x937, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x938, &x939, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x940, &x941, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x942, &x943, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x944, &x945, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x946, &x947, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x948, &x949, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x950, &x951, 0x0, x949, x946); fiat_p521_addcarryx_u64(&x952, &x953, x951, x947, x944); fiat_p521_addcarryx_u64(&x954, &x955, x953, x945, x942); fiat_p521_addcarryx_u64(&x956, &x957, x955, x943, x940); fiat_p521_addcarryx_u64(&x958, &x959, x957, x941, x938); fiat_p521_addcarryx_u64(&x960, &x961, x959, x939, x936); fiat_p521_addcarryx_u64(&x962, &x963, x961, x937, x934); fiat_p521_addcarryx_u64(&x964, &x965, x963, x935, x932); x966 = (x965 + x933); fiat_p521_addcarryx_u64(&x967, &x968, 0x0, x912, x948); fiat_p521_addcarryx_u64(&x969, &x970, x968, x914, x950); fiat_p521_addcarryx_u64(&x971, &x972, x970, x916, x952); fiat_p521_addcarryx_u64(&x973, &x974, x972, x918, x954); fiat_p521_addcarryx_u64(&x975, &x976, x974, x920, x956); fiat_p521_addcarryx_u64(&x977, &x978, x976, x922, x958); fiat_p521_addcarryx_u64(&x979, &x980, x978, x924, x960); fiat_p521_addcarryx_u64(&x981, &x982, x980, x926, x962); fiat_p521_addcarryx_u64(&x983, &x984, x982, x928, x964); fiat_p521_addcarryx_u64(&x985, &x986, x984, x930, x966); x987 = ((uint64_t)x986 + x931); fiat_p521_subborrowx_u64(&x988, &x989, 0x0, x969, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x990, &x991, x989, x971, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x992, &x993, x991, x973, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x994, &x995, x993, x975, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x996, &x997, x995, x977, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x998, &x999, x997, x979, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x1000, &x1001, x999, x981, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x1002, &x1003, x1001, x983, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x1004, &x1005, x1003, x985, UINT16_C(0x1ff)); fiat_p521_subborrowx_u64(&x1006, &x1007, x1005, x987, 0x0); fiat_p521_cmovznz_u64(&x1008, x1007, x988, x969); fiat_p521_cmovznz_u64(&x1009, x1007, x990, x971); fiat_p521_cmovznz_u64(&x1010, x1007, x992, x973); fiat_p521_cmovznz_u64(&x1011, x1007, x994, x975); fiat_p521_cmovznz_u64(&x1012, x1007, x996, x977); fiat_p521_cmovznz_u64(&x1013, x1007, x998, x979); fiat_p521_cmovznz_u64(&x1014, x1007, x1000, x981); fiat_p521_cmovznz_u64(&x1015, x1007, x1002, x983); fiat_p521_cmovznz_u64(&x1016, x1007, x1004, x985); out1[0] = x1008; out1[1] = x1009; out1[2] = x1010; out1[3] = x1011; out1[4] = x1012; out1[5] = x1013; out1[6] = x1014; out1[7] = x1015; out1[8] = x1016; } /* * The function fiat_p521_square squares a field element in the Montgomery domain. * * Preconditions: * 0 ≤ eval arg1 < m * Postconditions: * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m * 0 ≤ eval out1 < m * */ static void fiat_p521_square(fiat_p521_montgomery_domain_field_element out1, const fiat_p521_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_p521_uint1 x29; uint64_t x30; fiat_p521_uint1 x31; uint64_t x32; fiat_p521_uint1 x33; uint64_t x34; fiat_p521_uint1 x35; uint64_t x36; fiat_p521_uint1 x37; uint64_t x38; fiat_p521_uint1 x39; uint64_t x40; fiat_p521_uint1 x41; uint64_t x42; fiat_p521_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; fiat_p521_uint1 x64; uint64_t x65; fiat_p521_uint1 x66; uint64_t x67; fiat_p521_uint1 x68; uint64_t x69; fiat_p521_uint1 x70; uint64_t x71; fiat_p521_uint1 x72; uint64_t x73; fiat_p521_uint1 x74; uint64_t x75; fiat_p521_uint1 x76; uint64_t x77; fiat_p521_uint1 x78; uint64_t x79; uint64_t x80; fiat_p521_uint1 x81; uint64_t x82; fiat_p521_uint1 x83; uint64_t x84; fiat_p521_uint1 x85; uint64_t x86; fiat_p521_uint1 x87; uint64_t x88; fiat_p521_uint1 x89; uint64_t x90; fiat_p521_uint1 x91; uint64_t x92; fiat_p521_uint1 x93; uint64_t x94; fiat_p521_uint1 x95; uint64_t x96; fiat_p521_uint1 x97; uint64_t x98; fiat_p521_uint1 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; fiat_p521_uint1 x119; uint64_t x120; fiat_p521_uint1 x121; uint64_t x122; fiat_p521_uint1 x123; uint64_t x124; fiat_p521_uint1 x125; uint64_t x126; fiat_p521_uint1 x127; uint64_t x128; fiat_p521_uint1 x129; uint64_t x130; fiat_p521_uint1 x131; uint64_t x132; fiat_p521_uint1 x133; uint64_t x134; uint64_t x135; fiat_p521_uint1 x136; uint64_t x137; fiat_p521_uint1 x138; uint64_t x139; fiat_p521_uint1 x140; uint64_t x141; fiat_p521_uint1 x142; uint64_t x143; fiat_p521_uint1 x144; uint64_t x145; fiat_p521_uint1 x146; uint64_t x147; fiat_p521_uint1 x148; uint64_t x149; fiat_p521_uint1 x150; uint64_t x151; fiat_p521_uint1 x152; uint64_t x153; fiat_p521_uint1 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; uint64_t x171; uint64_t x172; uint64_t x173; fiat_p521_uint1 x174; uint64_t x175; fiat_p521_uint1 x176; uint64_t x177; fiat_p521_uint1 x178; uint64_t x179; fiat_p521_uint1 x180; uint64_t x181; fiat_p521_uint1 x182; uint64_t x183; fiat_p521_uint1 x184; uint64_t x185; fiat_p521_uint1 x186; uint64_t x187; fiat_p521_uint1 x188; uint64_t x189; uint64_t x190; fiat_p521_uint1 x191; uint64_t x192; fiat_p521_uint1 x193; uint64_t x194; fiat_p521_uint1 x195; uint64_t x196; fiat_p521_uint1 x197; uint64_t x198; fiat_p521_uint1 x199; uint64_t x200; fiat_p521_uint1 x201; uint64_t x202; fiat_p521_uint1 x203; uint64_t x204; fiat_p521_uint1 x205; uint64_t x206; fiat_p521_uint1 x207; uint64_t x208; fiat_p521_uint1 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; uint64_t x223; uint64_t x224; uint64_t x225; uint64_t x226; uint64_t x227; uint64_t x228; uint64_t x229; fiat_p521_uint1 x230; uint64_t x231; fiat_p521_uint1 x232; uint64_t x233; fiat_p521_uint1 x234; uint64_t x235; fiat_p521_uint1 x236; uint64_t x237; fiat_p521_uint1 x238; uint64_t x239; fiat_p521_uint1 x240; uint64_t x241; fiat_p521_uint1 x242; uint64_t x243; fiat_p521_uint1 x244; uint64_t x245; uint64_t x246; fiat_p521_uint1 x247; uint64_t x248; fiat_p521_uint1 x249; uint64_t x250; fiat_p521_uint1 x251; uint64_t x252; fiat_p521_uint1 x253; uint64_t x254; fiat_p521_uint1 x255; uint64_t x256; fiat_p521_uint1 x257; uint64_t x258; fiat_p521_uint1 x259; uint64_t x260; fiat_p521_uint1 x261; uint64_t x262; fiat_p521_uint1 x263; uint64_t x264; fiat_p521_uint1 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; uint64_t x277; uint64_t x278; uint64_t x279; uint64_t x280; uint64_t x281; uint64_t x282; uint64_t x283; uint64_t x284; fiat_p521_uint1 x285; uint64_t x286; fiat_p521_uint1 x287; uint64_t x288; fiat_p521_uint1 x289; uint64_t x290; fiat_p521_uint1 x291; uint64_t x292; fiat_p521_uint1 x293; uint64_t x294; fiat_p521_uint1 x295; uint64_t x296; fiat_p521_uint1 x297; uint64_t x298; fiat_p521_uint1 x299; uint64_t x300; uint64_t x301; fiat_p521_uint1 x302; uint64_t x303; fiat_p521_uint1 x304; uint64_t x305; fiat_p521_uint1 x306; uint64_t x307; fiat_p521_uint1 x308; uint64_t x309; fiat_p521_uint1 x310; uint64_t x311; fiat_p521_uint1 x312; uint64_t x313; fiat_p521_uint1 x314; uint64_t x315; fiat_p521_uint1 x316; uint64_t x317; fiat_p521_uint1 x318; uint64_t x319; fiat_p521_uint1 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; 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; fiat_p521_uint1 x341; uint64_t x342; fiat_p521_uint1 x343; uint64_t x344; fiat_p521_uint1 x345; uint64_t x346; fiat_p521_uint1 x347; uint64_t x348; fiat_p521_uint1 x349; uint64_t x350; fiat_p521_uint1 x351; uint64_t x352; fiat_p521_uint1 x353; uint64_t x354; fiat_p521_uint1 x355; uint64_t x356; uint64_t x357; fiat_p521_uint1 x358; uint64_t x359; fiat_p521_uint1 x360; uint64_t x361; fiat_p521_uint1 x362; uint64_t x363; fiat_p521_uint1 x364; uint64_t x365; fiat_p521_uint1 x366; uint64_t x367; fiat_p521_uint1 x368; uint64_t x369; fiat_p521_uint1 x370; uint64_t x371; fiat_p521_uint1 x372; uint64_t x373; fiat_p521_uint1 x374; uint64_t x375; fiat_p521_uint1 x376; uint64_t x377; uint64_t x378; uint64_t x379; uint64_t x380; uint64_t x381; uint64_t 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; fiat_p521_uint1 x396; uint64_t x397; fiat_p521_uint1 x398; uint64_t x399; fiat_p521_uint1 x400; uint64_t x401; fiat_p521_uint1 x402; uint64_t x403; fiat_p521_uint1 x404; uint64_t x405; fiat_p521_uint1 x406; uint64_t x407; fiat_p521_uint1 x408; uint64_t x409; fiat_p521_uint1 x410; uint64_t x411; uint64_t x412; fiat_p521_uint1 x413; uint64_t x414; fiat_p521_uint1 x415; uint64_t x416; fiat_p521_uint1 x417; uint64_t x418; fiat_p521_uint1 x419; uint64_t x420; fiat_p521_uint1 x421; uint64_t x422; fiat_p521_uint1 x423; uint64_t x424; fiat_p521_uint1 x425; uint64_t x426; fiat_p521_uint1 x427; uint64_t x428; fiat_p521_uint1 x429; uint64_t x430; fiat_p521_uint1 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; 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; fiat_p521_uint1 x452; uint64_t x453; fiat_p521_uint1 x454; uint64_t x455; fiat_p521_uint1 x456; uint64_t x457; fiat_p521_uint1 x458; uint64_t x459; fiat_p521_uint1 x460; uint64_t x461; fiat_p521_uint1 x462; uint64_t x463; fiat_p521_uint1 x464; uint64_t x465; fiat_p521_uint1 x466; uint64_t x467; uint64_t x468; fiat_p521_uint1 x469; uint64_t x470; fiat_p521_uint1 x471; uint64_t x472; fiat_p521_uint1 x473; uint64_t x474; fiat_p521_uint1 x475; uint64_t x476; fiat_p521_uint1 x477; uint64_t x478; fiat_p521_uint1 x479; uint64_t x480; fiat_p521_uint1 x481; uint64_t x482; fiat_p521_uint1 x483; uint64_t x484; fiat_p521_uint1 x485; uint64_t x486; fiat_p521_uint1 x487; uint64_t x488; uint64_t x489; uint64_t x490; uint64_t 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; fiat_p521_uint1 x507; uint64_t x508; fiat_p521_uint1 x509; uint64_t x510; fiat_p521_uint1 x511; uint64_t x512; fiat_p521_uint1 x513; uint64_t x514; fiat_p521_uint1 x515; uint64_t x516; fiat_p521_uint1 x517; uint64_t x518; fiat_p521_uint1 x519; uint64_t x520; fiat_p521_uint1 x521; uint64_t x522; uint64_t x523; fiat_p521_uint1 x524; uint64_t x525; fiat_p521_uint1 x526; uint64_t x527; fiat_p521_uint1 x528; uint64_t x529; fiat_p521_uint1 x530; uint64_t x531; fiat_p521_uint1 x532; uint64_t x533; fiat_p521_uint1 x534; uint64_t x535; fiat_p521_uint1 x536; uint64_t x537; fiat_p521_uint1 x538; uint64_t x539; fiat_p521_uint1 x540; uint64_t x541; fiat_p521_uint1 x542; uint64_t x543; uint64_t x544; uint64_t x545; uint64_t x546; uint64_t x547; uint64_t x548; uint64_t x549; uint64_t x550; uint64_t x551; uint64_t 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; fiat_p521_uint1 x563; uint64_t x564; fiat_p521_uint1 x565; uint64_t x566; fiat_p521_uint1 x567; uint64_t x568; fiat_p521_uint1 x569; uint64_t x570; fiat_p521_uint1 x571; uint64_t x572; fiat_p521_uint1 x573; uint64_t x574; fiat_p521_uint1 x575; uint64_t x576; fiat_p521_uint1 x577; uint64_t x578; uint64_t x579; fiat_p521_uint1 x580; uint64_t x581; fiat_p521_uint1 x582; uint64_t x583; fiat_p521_uint1 x584; uint64_t x585; fiat_p521_uint1 x586; uint64_t x587; fiat_p521_uint1 x588; uint64_t x589; fiat_p521_uint1 x590; uint64_t x591; fiat_p521_uint1 x592; uint64_t x593; fiat_p521_uint1 x594; uint64_t x595; fiat_p521_uint1 x596; uint64_t x597; fiat_p521_uint1 x598; uint64_t x599; uint64_t x600; uint64_t x601; uint64_t x602; uint64_t x603; uint64_t x604; uint64_t x605; uint64_t x606; uint64_t x607; uint64_t 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; fiat_p521_uint1 x618; uint64_t x619; fiat_p521_uint1 x620; uint64_t x621; fiat_p521_uint1 x622; uint64_t x623; fiat_p521_uint1 x624; uint64_t x625; fiat_p521_uint1 x626; uint64_t x627; fiat_p521_uint1 x628; uint64_t x629; fiat_p521_uint1 x630; uint64_t x631; fiat_p521_uint1 x632; uint64_t x633; uint64_t x634; fiat_p521_uint1 x635; uint64_t x636; fiat_p521_uint1 x637; uint64_t x638; fiat_p521_uint1 x639; uint64_t x640; fiat_p521_uint1 x641; uint64_t x642; fiat_p521_uint1 x643; uint64_t x644; fiat_p521_uint1 x645; uint64_t x646; fiat_p521_uint1 x647; uint64_t x648; fiat_p521_uint1 x649; uint64_t x650; fiat_p521_uint1 x651; uint64_t x652; fiat_p521_uint1 x653; uint64_t x654; uint64_t x655; uint64_t x656; uint64_t x657; uint64_t x658; uint64_t x659; uint64_t x660; uint64_t x661; uint64_t x662; uint64_t x663; uint64_t x664; uint64_t 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; fiat_p521_uint1 x674; uint64_t x675; fiat_p521_uint1 x676; uint64_t x677; fiat_p521_uint1 x678; uint64_t x679; fiat_p521_uint1 x680; uint64_t x681; fiat_p521_uint1 x682; uint64_t x683; fiat_p521_uint1 x684; uint64_t x685; fiat_p521_uint1 x686; uint64_t x687; fiat_p521_uint1 x688; uint64_t x689; uint64_t x690; fiat_p521_uint1 x691; uint64_t x692; fiat_p521_uint1 x693; uint64_t x694; fiat_p521_uint1 x695; uint64_t x696; fiat_p521_uint1 x697; uint64_t x698; fiat_p521_uint1 x699; uint64_t x700; fiat_p521_uint1 x701; uint64_t x702; fiat_p521_uint1 x703; uint64_t x704; fiat_p521_uint1 x705; uint64_t x706; fiat_p521_uint1 x707; uint64_t x708; fiat_p521_uint1 x709; uint64_t x710; uint64_t x711; uint64_t x712; uint64_t x713; uint64_t x714; uint64_t x715; uint64_t x716; uint64_t x717; uint64_t x718; uint64_t x719; uint64_t x720; uint64_t x721; uint64_t x722; uint64_t x723; uint64_t x724; uint64_t x725; uint64_t x726; uint64_t x727; uint64_t x728; fiat_p521_uint1 x729; uint64_t x730; fiat_p521_uint1 x731; uint64_t x732; fiat_p521_uint1 x733; uint64_t x734; fiat_p521_uint1 x735; uint64_t x736; fiat_p521_uint1 x737; uint64_t x738; fiat_p521_uint1 x739; uint64_t x740; fiat_p521_uint1 x741; uint64_t x742; fiat_p521_uint1 x743; uint64_t x744; uint64_t x745; fiat_p521_uint1 x746; uint64_t x747; fiat_p521_uint1 x748; uint64_t x749; fiat_p521_uint1 x750; uint64_t x751; fiat_p521_uint1 x752; uint64_t x753; fiat_p521_uint1 x754; uint64_t x755; fiat_p521_uint1 x756; uint64_t x757; fiat_p521_uint1 x758; uint64_t x759; fiat_p521_uint1 x760; uint64_t x761; fiat_p521_uint1 x762; uint64_t x763; fiat_p521_uint1 x764; uint64_t x765; uint64_t x766; uint64_t x767; uint64_t x768; uint64_t x769; uint64_t x770; uint64_t x771; uint64_t x772; uint64_t x773; uint64_t x774; uint64_t x775; uint64_t x776; uint64_t x777; uint64_t x778; uint64_t x779; uint64_t x780; uint64_t x781; uint64_t x782; uint64_t x783; uint64_t x784; fiat_p521_uint1 x785; uint64_t x786; fiat_p521_uint1 x787; uint64_t x788; fiat_p521_uint1 x789; uint64_t x790; fiat_p521_uint1 x791; uint64_t x792; fiat_p521_uint1 x793; uint64_t x794; fiat_p521_uint1 x795; uint64_t x796; fiat_p521_uint1 x797; uint64_t x798; fiat_p521_uint1 x799; uint64_t x800; uint64_t x801; fiat_p521_uint1 x802; uint64_t x803; fiat_p521_uint1 x804; uint64_t x805; fiat_p521_uint1 x806; uint64_t x807; fiat_p521_uint1 x808; uint64_t x809; fiat_p521_uint1 x810; uint64_t x811; fiat_p521_uint1 x812; uint64_t x813; fiat_p521_uint1 x814; uint64_t x815; fiat_p521_uint1 x816; uint64_t x817; fiat_p521_uint1 x818; uint64_t x819; fiat_p521_uint1 x820; uint64_t x821; uint64_t x822; uint64_t x823; uint64_t x824; uint64_t x825; uint64_t x826; uint64_t x827; uint64_t x828; uint64_t x829; uint64_t x830; uint64_t x831; uint64_t x832; uint64_t x833; uint64_t x834; uint64_t x835; uint64_t x836; uint64_t x837; uint64_t x838; uint64_t x839; fiat_p521_uint1 x840; uint64_t x841; fiat_p521_uint1 x842; uint64_t x843; fiat_p521_uint1 x844; uint64_t x845; fiat_p521_uint1 x846; uint64_t x847; fiat_p521_uint1 x848; uint64_t x849; fiat_p521_uint1 x850; uint64_t x851; fiat_p521_uint1 x852; uint64_t x853; fiat_p521_uint1 x854; uint64_t x855; uint64_t x856; fiat_p521_uint1 x857; uint64_t x858; fiat_p521_uint1 x859; uint64_t x860; fiat_p521_uint1 x861; uint64_t x862; fiat_p521_uint1 x863; uint64_t x864; fiat_p521_uint1 x865; uint64_t x866; fiat_p521_uint1 x867; uint64_t x868; fiat_p521_uint1 x869; uint64_t x870; fiat_p521_uint1 x871; uint64_t x872; fiat_p521_uint1 x873; uint64_t x874; fiat_p521_uint1 x875; uint64_t x876; uint64_t x877; uint64_t x878; uint64_t x879; uint64_t x880; uint64_t x881; uint64_t x882; uint64_t x883; uint64_t x884; uint64_t x885; uint64_t x886; uint64_t x887; uint64_t x888; uint64_t x889; uint64_t x890; uint64_t x891; uint64_t x892; uint64_t x893; uint64_t x894; uint64_t x895; fiat_p521_uint1 x896; uint64_t x897; fiat_p521_uint1 x898; uint64_t x899; fiat_p521_uint1 x900; uint64_t x901; fiat_p521_uint1 x902; uint64_t x903; fiat_p521_uint1 x904; uint64_t x905; fiat_p521_uint1 x906; uint64_t x907; fiat_p521_uint1 x908; uint64_t x909; fiat_p521_uint1 x910; uint64_t x911; uint64_t x912; fiat_p521_uint1 x913; uint64_t x914; fiat_p521_uint1 x915; uint64_t x916; fiat_p521_uint1 x917; uint64_t x918; fiat_p521_uint1 x919; uint64_t x920; fiat_p521_uint1 x921; uint64_t x922; fiat_p521_uint1 x923; uint64_t x924; fiat_p521_uint1 x925; uint64_t x926; fiat_p521_uint1 x927; uint64_t x928; fiat_p521_uint1 x929; uint64_t x930; fiat_p521_uint1 x931; uint64_t x932; uint64_t x933; uint64_t x934; uint64_t x935; uint64_t x936; uint64_t x937; uint64_t x938; uint64_t x939; uint64_t x940; uint64_t x941; uint64_t x942; uint64_t x943; uint64_t x944; uint64_t x945; uint64_t x946; uint64_t x947; uint64_t x948; uint64_t x949; uint64_t x950; fiat_p521_uint1 x951; uint64_t x952; fiat_p521_uint1 x953; uint64_t x954; fiat_p521_uint1 x955; uint64_t x956; fiat_p521_uint1 x957; uint64_t x958; fiat_p521_uint1 x959; uint64_t x960; fiat_p521_uint1 x961; uint64_t x962; fiat_p521_uint1 x963; uint64_t x964; fiat_p521_uint1 x965; uint64_t x966; uint64_t x967; fiat_p521_uint1 x968; uint64_t x969; fiat_p521_uint1 x970; uint64_t x971; fiat_p521_uint1 x972; uint64_t x973; fiat_p521_uint1 x974; uint64_t x975; fiat_p521_uint1 x976; uint64_t x977; fiat_p521_uint1 x978; uint64_t x979; fiat_p521_uint1 x980; uint64_t x981; fiat_p521_uint1 x982; uint64_t x983; fiat_p521_uint1 x984; uint64_t x985; fiat_p521_uint1 x986; uint64_t x987; uint64_t x988; fiat_p521_uint1 x989; uint64_t x990; fiat_p521_uint1 x991; uint64_t x992; fiat_p521_uint1 x993; uint64_t x994; fiat_p521_uint1 x995; uint64_t x996; fiat_p521_uint1 x997; uint64_t x998; fiat_p521_uint1 x999; uint64_t x1000; fiat_p521_uint1 x1001; uint64_t x1002; fiat_p521_uint1 x1003; uint64_t x1004; fiat_p521_uint1 x1005; uint64_t x1006; fiat_p521_uint1 x1007; uint64_t x1008; uint64_t x1009; uint64_t x1010; uint64_t x1011; uint64_t x1012; uint64_t x1013; uint64_t x1014; uint64_t x1015; uint64_t x1016; 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_p521_mulx_u64(&x10, &x11, x9, (arg1[8])); fiat_p521_mulx_u64(&x12, &x13, x9, (arg1[7])); fiat_p521_mulx_u64(&x14, &x15, x9, (arg1[6])); fiat_p521_mulx_u64(&x16, &x17, x9, (arg1[5])); fiat_p521_mulx_u64(&x18, &x19, x9, (arg1[4])); fiat_p521_mulx_u64(&x20, &x21, x9, (arg1[3])); fiat_p521_mulx_u64(&x22, &x23, x9, (arg1[2])); fiat_p521_mulx_u64(&x24, &x25, x9, (arg1[1])); fiat_p521_mulx_u64(&x26, &x27, x9, (arg1[0])); fiat_p521_addcarryx_u64(&x28, &x29, 0x0, x27, x24); fiat_p521_addcarryx_u64(&x30, &x31, x29, x25, x22); fiat_p521_addcarryx_u64(&x32, &x33, x31, x23, x20); fiat_p521_addcarryx_u64(&x34, &x35, x33, x21, x18); fiat_p521_addcarryx_u64(&x36, &x37, x35, x19, x16); fiat_p521_addcarryx_u64(&x38, &x39, x37, x17, x14); fiat_p521_addcarryx_u64(&x40, &x41, x39, x15, x12); fiat_p521_addcarryx_u64(&x42, &x43, x41, x13, x10); x44 = (x43 + x11); fiat_p521_mulx_u64(&x45, &x46, x26, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x47, &x48, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x49, &x50, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x51, &x52, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x53, &x54, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x55, &x56, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x57, &x58, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x59, &x60, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x61, &x62, x26, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x63, &x64, 0x0, x62, x59); fiat_p521_addcarryx_u64(&x65, &x66, x64, x60, x57); fiat_p521_addcarryx_u64(&x67, &x68, x66, x58, x55); fiat_p521_addcarryx_u64(&x69, &x70, x68, x56, x53); fiat_p521_addcarryx_u64(&x71, &x72, x70, x54, x51); fiat_p521_addcarryx_u64(&x73, &x74, x72, x52, x49); fiat_p521_addcarryx_u64(&x75, &x76, x74, x50, x47); fiat_p521_addcarryx_u64(&x77, &x78, x76, x48, x45); x79 = (x78 + x46); fiat_p521_addcarryx_u64(&x80, &x81, 0x0, x26, x61); fiat_p521_addcarryx_u64(&x82, &x83, x81, x28, x63); fiat_p521_addcarryx_u64(&x84, &x85, x83, x30, x65); fiat_p521_addcarryx_u64(&x86, &x87, x85, x32, x67); fiat_p521_addcarryx_u64(&x88, &x89, x87, x34, x69); fiat_p521_addcarryx_u64(&x90, &x91, x89, x36, x71); fiat_p521_addcarryx_u64(&x92, &x93, x91, x38, x73); fiat_p521_addcarryx_u64(&x94, &x95, x93, x40, x75); fiat_p521_addcarryx_u64(&x96, &x97, x95, x42, x77); fiat_p521_addcarryx_u64(&x98, &x99, x97, x44, x79); fiat_p521_mulx_u64(&x100, &x101, x1, (arg1[8])); fiat_p521_mulx_u64(&x102, &x103, x1, (arg1[7])); fiat_p521_mulx_u64(&x104, &x105, x1, (arg1[6])); fiat_p521_mulx_u64(&x106, &x107, x1, (arg1[5])); fiat_p521_mulx_u64(&x108, &x109, x1, (arg1[4])); fiat_p521_mulx_u64(&x110, &x111, x1, (arg1[3])); fiat_p521_mulx_u64(&x112, &x113, x1, (arg1[2])); fiat_p521_mulx_u64(&x114, &x115, x1, (arg1[1])); fiat_p521_mulx_u64(&x116, &x117, x1, (arg1[0])); fiat_p521_addcarryx_u64(&x118, &x119, 0x0, x117, x114); fiat_p521_addcarryx_u64(&x120, &x121, x119, x115, x112); fiat_p521_addcarryx_u64(&x122, &x123, x121, x113, x110); fiat_p521_addcarryx_u64(&x124, &x125, x123, x111, x108); fiat_p521_addcarryx_u64(&x126, &x127, x125, x109, x106); fiat_p521_addcarryx_u64(&x128, &x129, x127, x107, x104); fiat_p521_addcarryx_u64(&x130, &x131, x129, x105, x102); fiat_p521_addcarryx_u64(&x132, &x133, x131, x103, x100); x134 = (x133 + x101); fiat_p521_addcarryx_u64(&x135, &x136, 0x0, x82, x116); fiat_p521_addcarryx_u64(&x137, &x138, x136, x84, x118); fiat_p521_addcarryx_u64(&x139, &x140, x138, x86, x120); fiat_p521_addcarryx_u64(&x141, &x142, x140, x88, x122); fiat_p521_addcarryx_u64(&x143, &x144, x142, x90, x124); fiat_p521_addcarryx_u64(&x145, &x146, x144, x92, x126); fiat_p521_addcarryx_u64(&x147, &x148, x146, x94, x128); fiat_p521_addcarryx_u64(&x149, &x150, x148, x96, x130); fiat_p521_addcarryx_u64(&x151, &x152, x150, x98, x132); fiat_p521_addcarryx_u64(&x153, &x154, x152, x99, x134); fiat_p521_mulx_u64(&x155, &x156, x135, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x157, &x158, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x159, &x160, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x161, &x162, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x163, &x164, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x165, &x166, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x167, &x168, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x169, &x170, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x171, &x172, x135, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x173, &x174, 0x0, x172, x169); fiat_p521_addcarryx_u64(&x175, &x176, x174, x170, x167); fiat_p521_addcarryx_u64(&x177, &x178, x176, x168, x165); fiat_p521_addcarryx_u64(&x179, &x180, x178, x166, x163); fiat_p521_addcarryx_u64(&x181, &x182, x180, x164, x161); fiat_p521_addcarryx_u64(&x183, &x184, x182, x162, x159); fiat_p521_addcarryx_u64(&x185, &x186, x184, x160, x157); fiat_p521_addcarryx_u64(&x187, &x188, x186, x158, x155); x189 = (x188 + x156); fiat_p521_addcarryx_u64(&x190, &x191, 0x0, x135, x171); fiat_p521_addcarryx_u64(&x192, &x193, x191, x137, x173); fiat_p521_addcarryx_u64(&x194, &x195, x193, x139, x175); fiat_p521_addcarryx_u64(&x196, &x197, x195, x141, x177); fiat_p521_addcarryx_u64(&x198, &x199, x197, x143, x179); fiat_p521_addcarryx_u64(&x200, &x201, x199, x145, x181); fiat_p521_addcarryx_u64(&x202, &x203, x201, x147, x183); fiat_p521_addcarryx_u64(&x204, &x205, x203, x149, x185); fiat_p521_addcarryx_u64(&x206, &x207, x205, x151, x187); fiat_p521_addcarryx_u64(&x208, &x209, x207, x153, x189); x210 = ((uint64_t)x209 + x154); fiat_p521_mulx_u64(&x211, &x212, x2, (arg1[8])); fiat_p521_mulx_u64(&x213, &x214, x2, (arg1[7])); fiat_p521_mulx_u64(&x215, &x216, x2, (arg1[6])); fiat_p521_mulx_u64(&x217, &x218, x2, (arg1[5])); fiat_p521_mulx_u64(&x219, &x220, x2, (arg1[4])); fiat_p521_mulx_u64(&x221, &x222, x2, (arg1[3])); fiat_p521_mulx_u64(&x223, &x224, x2, (arg1[2])); fiat_p521_mulx_u64(&x225, &x226, x2, (arg1[1])); fiat_p521_mulx_u64(&x227, &x228, x2, (arg1[0])); fiat_p521_addcarryx_u64(&x229, &x230, 0x0, x228, x225); fiat_p521_addcarryx_u64(&x231, &x232, x230, x226, x223); fiat_p521_addcarryx_u64(&x233, &x234, x232, x224, x221); fiat_p521_addcarryx_u64(&x235, &x236, x234, x222, x219); fiat_p521_addcarryx_u64(&x237, &x238, x236, x220, x217); fiat_p521_addcarryx_u64(&x239, &x240, x238, x218, x215); fiat_p521_addcarryx_u64(&x241, &x242, x240, x216, x213); fiat_p521_addcarryx_u64(&x243, &x244, x242, x214, x211); x245 = (x244 + x212); fiat_p521_addcarryx_u64(&x246, &x247, 0x0, x192, x227); fiat_p521_addcarryx_u64(&x248, &x249, x247, x194, x229); fiat_p521_addcarryx_u64(&x250, &x251, x249, x196, x231); fiat_p521_addcarryx_u64(&x252, &x253, x251, x198, x233); fiat_p521_addcarryx_u64(&x254, &x255, x253, x200, x235); fiat_p521_addcarryx_u64(&x256, &x257, x255, x202, x237); fiat_p521_addcarryx_u64(&x258, &x259, x257, x204, x239); fiat_p521_addcarryx_u64(&x260, &x261, x259, x206, x241); fiat_p521_addcarryx_u64(&x262, &x263, x261, x208, x243); fiat_p521_addcarryx_u64(&x264, &x265, x263, x210, x245); fiat_p521_mulx_u64(&x266, &x267, x246, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x268, &x269, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x270, &x271, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x272, &x273, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x274, &x275, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x276, &x277, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x278, &x279, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x280, &x281, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x282, &x283, x246, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x284, &x285, 0x0, x283, x280); fiat_p521_addcarryx_u64(&x286, &x287, x285, x281, x278); fiat_p521_addcarryx_u64(&x288, &x289, x287, x279, x276); fiat_p521_addcarryx_u64(&x290, &x291, x289, x277, x274); fiat_p521_addcarryx_u64(&x292, &x293, x291, x275, x272); fiat_p521_addcarryx_u64(&x294, &x295, x293, x273, x270); fiat_p521_addcarryx_u64(&x296, &x297, x295, x271, x268); fiat_p521_addcarryx_u64(&x298, &x299, x297, x269, x266); x300 = (x299 + x267); fiat_p521_addcarryx_u64(&x301, &x302, 0x0, x246, x282); fiat_p521_addcarryx_u64(&x303, &x304, x302, x248, x284); fiat_p521_addcarryx_u64(&x305, &x306, x304, x250, x286); fiat_p521_addcarryx_u64(&x307, &x308, x306, x252, x288); fiat_p521_addcarryx_u64(&x309, &x310, x308, x254, x290); fiat_p521_addcarryx_u64(&x311, &x312, x310, x256, x292); fiat_p521_addcarryx_u64(&x313, &x314, x312, x258, x294); fiat_p521_addcarryx_u64(&x315, &x316, x314, x260, x296); fiat_p521_addcarryx_u64(&x317, &x318, x316, x262, x298); fiat_p521_addcarryx_u64(&x319, &x320, x318, x264, x300); x321 = ((uint64_t)x320 + x265); fiat_p521_mulx_u64(&x322, &x323, x3, (arg1[8])); fiat_p521_mulx_u64(&x324, &x325, x3, (arg1[7])); fiat_p521_mulx_u64(&x326, &x327, x3, (arg1[6])); fiat_p521_mulx_u64(&x328, &x329, x3, (arg1[5])); fiat_p521_mulx_u64(&x330, &x331, x3, (arg1[4])); fiat_p521_mulx_u64(&x332, &x333, x3, (arg1[3])); fiat_p521_mulx_u64(&x334, &x335, x3, (arg1[2])); fiat_p521_mulx_u64(&x336, &x337, x3, (arg1[1])); fiat_p521_mulx_u64(&x338, &x339, x3, (arg1[0])); fiat_p521_addcarryx_u64(&x340, &x341, 0x0, x339, x336); fiat_p521_addcarryx_u64(&x342, &x343, x341, x337, x334); fiat_p521_addcarryx_u64(&x344, &x345, x343, x335, x332); fiat_p521_addcarryx_u64(&x346, &x347, x345, x333, x330); fiat_p521_addcarryx_u64(&x348, &x349, x347, x331, x328); fiat_p521_addcarryx_u64(&x350, &x351, x349, x329, x326); fiat_p521_addcarryx_u64(&x352, &x353, x351, x327, x324); fiat_p521_addcarryx_u64(&x354, &x355, x353, x325, x322); x356 = (x355 + x323); fiat_p521_addcarryx_u64(&x357, &x358, 0x0, x303, x338); fiat_p521_addcarryx_u64(&x359, &x360, x358, x305, x340); fiat_p521_addcarryx_u64(&x361, &x362, x360, x307, x342); fiat_p521_addcarryx_u64(&x363, &x364, x362, x309, x344); fiat_p521_addcarryx_u64(&x365, &x366, x364, x311, x346); fiat_p521_addcarryx_u64(&x367, &x368, x366, x313, x348); fiat_p521_addcarryx_u64(&x369, &x370, x368, x315, x350); fiat_p521_addcarryx_u64(&x371, &x372, x370, x317, x352); fiat_p521_addcarryx_u64(&x373, &x374, x372, x319, x354); fiat_p521_addcarryx_u64(&x375, &x376, x374, x321, x356); fiat_p521_mulx_u64(&x377, &x378, x357, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x379, &x380, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x381, &x382, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x383, &x384, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x385, &x386, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x387, &x388, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x389, &x390, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x391, &x392, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x393, &x394, x357, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x395, &x396, 0x0, x394, x391); fiat_p521_addcarryx_u64(&x397, &x398, x396, x392, x389); fiat_p521_addcarryx_u64(&x399, &x400, x398, x390, x387); fiat_p521_addcarryx_u64(&x401, &x402, x400, x388, x385); fiat_p521_addcarryx_u64(&x403, &x404, x402, x386, x383); fiat_p521_addcarryx_u64(&x405, &x406, x404, x384, x381); fiat_p521_addcarryx_u64(&x407, &x408, x406, x382, x379); fiat_p521_addcarryx_u64(&x409, &x410, x408, x380, x377); x411 = (x410 + x378); fiat_p521_addcarryx_u64(&x412, &x413, 0x0, x357, x393); fiat_p521_addcarryx_u64(&x414, &x415, x413, x359, x395); fiat_p521_addcarryx_u64(&x416, &x417, x415, x361, x397); fiat_p521_addcarryx_u64(&x418, &x419, x417, x363, x399); fiat_p521_addcarryx_u64(&x420, &x421, x419, x365, x401); fiat_p521_addcarryx_u64(&x422, &x423, x421, x367, x403); fiat_p521_addcarryx_u64(&x424, &x425, x423, x369, x405); fiat_p521_addcarryx_u64(&x426, &x427, x425, x371, x407); fiat_p521_addcarryx_u64(&x428, &x429, x427, x373, x409); fiat_p521_addcarryx_u64(&x430, &x431, x429, x375, x411); x432 = ((uint64_t)x431 + x376); fiat_p521_mulx_u64(&x433, &x434, x4, (arg1[8])); fiat_p521_mulx_u64(&x435, &x436, x4, (arg1[7])); fiat_p521_mulx_u64(&x437, &x438, x4, (arg1[6])); fiat_p521_mulx_u64(&x439, &x440, x4, (arg1[5])); fiat_p521_mulx_u64(&x441, &x442, x4, (arg1[4])); fiat_p521_mulx_u64(&x443, &x444, x4, (arg1[3])); fiat_p521_mulx_u64(&x445, &x446, x4, (arg1[2])); fiat_p521_mulx_u64(&x447, &x448, x4, (arg1[1])); fiat_p521_mulx_u64(&x449, &x450, x4, (arg1[0])); fiat_p521_addcarryx_u64(&x451, &x452, 0x0, x450, x447); fiat_p521_addcarryx_u64(&x453, &x454, x452, x448, x445); fiat_p521_addcarryx_u64(&x455, &x456, x454, x446, x443); fiat_p521_addcarryx_u64(&x457, &x458, x456, x444, x441); fiat_p521_addcarryx_u64(&x459, &x460, x458, x442, x439); fiat_p521_addcarryx_u64(&x461, &x462, x460, x440, x437); fiat_p521_addcarryx_u64(&x463, &x464, x462, x438, x435); fiat_p521_addcarryx_u64(&x465, &x466, x464, x436, x433); x467 = (x466 + x434); fiat_p521_addcarryx_u64(&x468, &x469, 0x0, x414, x449); fiat_p521_addcarryx_u64(&x470, &x471, x469, x416, x451); fiat_p521_addcarryx_u64(&x472, &x473, x471, x418, x453); fiat_p521_addcarryx_u64(&x474, &x475, x473, x420, x455); fiat_p521_addcarryx_u64(&x476, &x477, x475, x422, x457); fiat_p521_addcarryx_u64(&x478, &x479, x477, x424, x459); fiat_p521_addcarryx_u64(&x480, &x481, x479, x426, x461); fiat_p521_addcarryx_u64(&x482, &x483, x481, x428, x463); fiat_p521_addcarryx_u64(&x484, &x485, x483, x430, x465); fiat_p521_addcarryx_u64(&x486, &x487, x485, x432, x467); fiat_p521_mulx_u64(&x488, &x489, x468, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x490, &x491, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x492, &x493, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x494, &x495, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x496, &x497, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x498, &x499, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x500, &x501, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x502, &x503, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x504, &x505, x468, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x506, &x507, 0x0, x505, x502); fiat_p521_addcarryx_u64(&x508, &x509, x507, x503, x500); fiat_p521_addcarryx_u64(&x510, &x511, x509, x501, x498); fiat_p521_addcarryx_u64(&x512, &x513, x511, x499, x496); fiat_p521_addcarryx_u64(&x514, &x515, x513, x497, x494); fiat_p521_addcarryx_u64(&x516, &x517, x515, x495, x492); fiat_p521_addcarryx_u64(&x518, &x519, x517, x493, x490); fiat_p521_addcarryx_u64(&x520, &x521, x519, x491, x488); x522 = (x521 + x489); fiat_p521_addcarryx_u64(&x523, &x524, 0x0, x468, x504); fiat_p521_addcarryx_u64(&x525, &x526, x524, x470, x506); fiat_p521_addcarryx_u64(&x527, &x528, x526, x472, x508); fiat_p521_addcarryx_u64(&x529, &x530, x528, x474, x510); fiat_p521_addcarryx_u64(&x531, &x532, x530, x476, x512); fiat_p521_addcarryx_u64(&x533, &x534, x532, x478, x514); fiat_p521_addcarryx_u64(&x535, &x536, x534, x480, x516); fiat_p521_addcarryx_u64(&x537, &x538, x536, x482, x518); fiat_p521_addcarryx_u64(&x539, &x540, x538, x484, x520); fiat_p521_addcarryx_u64(&x541, &x542, x540, x486, x522); x543 = ((uint64_t)x542 + x487); fiat_p521_mulx_u64(&x544, &x545, x5, (arg1[8])); fiat_p521_mulx_u64(&x546, &x547, x5, (arg1[7])); fiat_p521_mulx_u64(&x548, &x549, x5, (arg1[6])); fiat_p521_mulx_u64(&x550, &x551, x5, (arg1[5])); fiat_p521_mulx_u64(&x552, &x553, x5, (arg1[4])); fiat_p521_mulx_u64(&x554, &x555, x5, (arg1[3])); fiat_p521_mulx_u64(&x556, &x557, x5, (arg1[2])); fiat_p521_mulx_u64(&x558, &x559, x5, (arg1[1])); fiat_p521_mulx_u64(&x560, &x561, x5, (arg1[0])); fiat_p521_addcarryx_u64(&x562, &x563, 0x0, x561, x558); fiat_p521_addcarryx_u64(&x564, &x565, x563, x559, x556); fiat_p521_addcarryx_u64(&x566, &x567, x565, x557, x554); fiat_p521_addcarryx_u64(&x568, &x569, x567, x555, x552); fiat_p521_addcarryx_u64(&x570, &x571, x569, x553, x550); fiat_p521_addcarryx_u64(&x572, &x573, x571, x551, x548); fiat_p521_addcarryx_u64(&x574, &x575, x573, x549, x546); fiat_p521_addcarryx_u64(&x576, &x577, x575, x547, x544); x578 = (x577 + x545); fiat_p521_addcarryx_u64(&x579, &x580, 0x0, x525, x560); fiat_p521_addcarryx_u64(&x581, &x582, x580, x527, x562); fiat_p521_addcarryx_u64(&x583, &x584, x582, x529, x564); fiat_p521_addcarryx_u64(&x585, &x586, x584, x531, x566); fiat_p521_addcarryx_u64(&x587, &x588, x586, x533, x568); fiat_p521_addcarryx_u64(&x589, &x590, x588, x535, x570); fiat_p521_addcarryx_u64(&x591, &x592, x590, x537, x572); fiat_p521_addcarryx_u64(&x593, &x594, x592, x539, x574); fiat_p521_addcarryx_u64(&x595, &x596, x594, x541, x576); fiat_p521_addcarryx_u64(&x597, &x598, x596, x543, x578); fiat_p521_mulx_u64(&x599, &x600, x579, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x601, &x602, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x603, &x604, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x605, &x606, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x607, &x608, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x609, &x610, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x611, &x612, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x613, &x614, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x615, &x616, x579, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x617, &x618, 0x0, x616, x613); fiat_p521_addcarryx_u64(&x619, &x620, x618, x614, x611); fiat_p521_addcarryx_u64(&x621, &x622, x620, x612, x609); fiat_p521_addcarryx_u64(&x623, &x624, x622, x610, x607); fiat_p521_addcarryx_u64(&x625, &x626, x624, x608, x605); fiat_p521_addcarryx_u64(&x627, &x628, x626, x606, x603); fiat_p521_addcarryx_u64(&x629, &x630, x628, x604, x601); fiat_p521_addcarryx_u64(&x631, &x632, x630, x602, x599); x633 = (x632 + x600); fiat_p521_addcarryx_u64(&x634, &x635, 0x0, x579, x615); fiat_p521_addcarryx_u64(&x636, &x637, x635, x581, x617); fiat_p521_addcarryx_u64(&x638, &x639, x637, x583, x619); fiat_p521_addcarryx_u64(&x640, &x641, x639, x585, x621); fiat_p521_addcarryx_u64(&x642, &x643, x641, x587, x623); fiat_p521_addcarryx_u64(&x644, &x645, x643, x589, x625); fiat_p521_addcarryx_u64(&x646, &x647, x645, x591, x627); fiat_p521_addcarryx_u64(&x648, &x649, x647, x593, x629); fiat_p521_addcarryx_u64(&x650, &x651, x649, x595, x631); fiat_p521_addcarryx_u64(&x652, &x653, x651, x597, x633); x654 = ((uint64_t)x653 + x598); fiat_p521_mulx_u64(&x655, &x656, x6, (arg1[8])); fiat_p521_mulx_u64(&x657, &x658, x6, (arg1[7])); fiat_p521_mulx_u64(&x659, &x660, x6, (arg1[6])); fiat_p521_mulx_u64(&x661, &x662, x6, (arg1[5])); fiat_p521_mulx_u64(&x663, &x664, x6, (arg1[4])); fiat_p521_mulx_u64(&x665, &x666, x6, (arg1[3])); fiat_p521_mulx_u64(&x667, &x668, x6, (arg1[2])); fiat_p521_mulx_u64(&x669, &x670, x6, (arg1[1])); fiat_p521_mulx_u64(&x671, &x672, x6, (arg1[0])); fiat_p521_addcarryx_u64(&x673, &x674, 0x0, x672, x669); fiat_p521_addcarryx_u64(&x675, &x676, x674, x670, x667); fiat_p521_addcarryx_u64(&x677, &x678, x676, x668, x665); fiat_p521_addcarryx_u64(&x679, &x680, x678, x666, x663); fiat_p521_addcarryx_u64(&x681, &x682, x680, x664, x661); fiat_p521_addcarryx_u64(&x683, &x684, x682, x662, x659); fiat_p521_addcarryx_u64(&x685, &x686, x684, x660, x657); fiat_p521_addcarryx_u64(&x687, &x688, x686, x658, x655); x689 = (x688 + x656); fiat_p521_addcarryx_u64(&x690, &x691, 0x0, x636, x671); fiat_p521_addcarryx_u64(&x692, &x693, x691, x638, x673); fiat_p521_addcarryx_u64(&x694, &x695, x693, x640, x675); fiat_p521_addcarryx_u64(&x696, &x697, x695, x642, x677); fiat_p521_addcarryx_u64(&x698, &x699, x697, x644, x679); fiat_p521_addcarryx_u64(&x700, &x701, x699, x646, x681); fiat_p521_addcarryx_u64(&x702, &x703, x701, x648, x683); fiat_p521_addcarryx_u64(&x704, &x705, x703, x650, x685); fiat_p521_addcarryx_u64(&x706, &x707, x705, x652, x687); fiat_p521_addcarryx_u64(&x708, &x709, x707, x654, x689); fiat_p521_mulx_u64(&x710, &x711, x690, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x712, &x713, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x714, &x715, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x716, &x717, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x718, &x719, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x720, &x721, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x722, &x723, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x724, &x725, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x726, &x727, x690, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x728, &x729, 0x0, x727, x724); fiat_p521_addcarryx_u64(&x730, &x731, x729, x725, x722); fiat_p521_addcarryx_u64(&x732, &x733, x731, x723, x720); fiat_p521_addcarryx_u64(&x734, &x735, x733, x721, x718); fiat_p521_addcarryx_u64(&x736, &x737, x735, x719, x716); fiat_p521_addcarryx_u64(&x738, &x739, x737, x717, x714); fiat_p521_addcarryx_u64(&x740, &x741, x739, x715, x712); fiat_p521_addcarryx_u64(&x742, &x743, x741, x713, x710); x744 = (x743 + x711); fiat_p521_addcarryx_u64(&x745, &x746, 0x0, x690, x726); fiat_p521_addcarryx_u64(&x747, &x748, x746, x692, x728); fiat_p521_addcarryx_u64(&x749, &x750, x748, x694, x730); fiat_p521_addcarryx_u64(&x751, &x752, x750, x696, x732); fiat_p521_addcarryx_u64(&x753, &x754, x752, x698, x734); fiat_p521_addcarryx_u64(&x755, &x756, x754, x700, x736); fiat_p521_addcarryx_u64(&x757, &x758, x756, x702, x738); fiat_p521_addcarryx_u64(&x759, &x760, x758, x704, x740); fiat_p521_addcarryx_u64(&x761, &x762, x760, x706, x742); fiat_p521_addcarryx_u64(&x763, &x764, x762, x708, x744); x765 = ((uint64_t)x764 + x709); fiat_p521_mulx_u64(&x766, &x767, x7, (arg1[8])); fiat_p521_mulx_u64(&x768, &x769, x7, (arg1[7])); fiat_p521_mulx_u64(&x770, &x771, x7, (arg1[6])); fiat_p521_mulx_u64(&x772, &x773, x7, (arg1[5])); fiat_p521_mulx_u64(&x774, &x775, x7, (arg1[4])); fiat_p521_mulx_u64(&x776, &x777, x7, (arg1[3])); fiat_p521_mulx_u64(&x778, &x779, x7, (arg1[2])); fiat_p521_mulx_u64(&x780, &x781, x7, (arg1[1])); fiat_p521_mulx_u64(&x782, &x783, x7, (arg1[0])); fiat_p521_addcarryx_u64(&x784, &x785, 0x0, x783, x780); fiat_p521_addcarryx_u64(&x786, &x787, x785, x781, x778); fiat_p521_addcarryx_u64(&x788, &x789, x787, x779, x776); fiat_p521_addcarryx_u64(&x790, &x791, x789, x777, x774); fiat_p521_addcarryx_u64(&x792, &x793, x791, x775, x772); fiat_p521_addcarryx_u64(&x794, &x795, x793, x773, x770); fiat_p521_addcarryx_u64(&x796, &x797, x795, x771, x768); fiat_p521_addcarryx_u64(&x798, &x799, x797, x769, x766); x800 = (x799 + x767); fiat_p521_addcarryx_u64(&x801, &x802, 0x0, x747, x782); fiat_p521_addcarryx_u64(&x803, &x804, x802, x749, x784); fiat_p521_addcarryx_u64(&x805, &x806, x804, x751, x786); fiat_p521_addcarryx_u64(&x807, &x808, x806, x753, x788); fiat_p521_addcarryx_u64(&x809, &x810, x808, x755, x790); fiat_p521_addcarryx_u64(&x811, &x812, x810, x757, x792); fiat_p521_addcarryx_u64(&x813, &x814, x812, x759, x794); fiat_p521_addcarryx_u64(&x815, &x816, x814, x761, x796); fiat_p521_addcarryx_u64(&x817, &x818, x816, x763, x798); fiat_p521_addcarryx_u64(&x819, &x820, x818, x765, x800); fiat_p521_mulx_u64(&x821, &x822, x801, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x823, &x824, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x825, &x826, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x827, &x828, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x829, &x830, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x831, &x832, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x833, &x834, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x835, &x836, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x837, &x838, x801, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x839, &x840, 0x0, x838, x835); fiat_p521_addcarryx_u64(&x841, &x842, x840, x836, x833); fiat_p521_addcarryx_u64(&x843, &x844, x842, x834, x831); fiat_p521_addcarryx_u64(&x845, &x846, x844, x832, x829); fiat_p521_addcarryx_u64(&x847, &x848, x846, x830, x827); fiat_p521_addcarryx_u64(&x849, &x850, x848, x828, x825); fiat_p521_addcarryx_u64(&x851, &x852, x850, x826, x823); fiat_p521_addcarryx_u64(&x853, &x854, x852, x824, x821); x855 = (x854 + x822); fiat_p521_addcarryx_u64(&x856, &x857, 0x0, x801, x837); fiat_p521_addcarryx_u64(&x858, &x859, x857, x803, x839); fiat_p521_addcarryx_u64(&x860, &x861, x859, x805, x841); fiat_p521_addcarryx_u64(&x862, &x863, x861, x807, x843); fiat_p521_addcarryx_u64(&x864, &x865, x863, x809, x845); fiat_p521_addcarryx_u64(&x866, &x867, x865, x811, x847); fiat_p521_addcarryx_u64(&x868, &x869, x867, x813, x849); fiat_p521_addcarryx_u64(&x870, &x871, x869, x815, x851); fiat_p521_addcarryx_u64(&x872, &x873, x871, x817, x853); fiat_p521_addcarryx_u64(&x874, &x875, x873, x819, x855); x876 = ((uint64_t)x875 + x820); fiat_p521_mulx_u64(&x877, &x878, x8, (arg1[8])); fiat_p521_mulx_u64(&x879, &x880, x8, (arg1[7])); fiat_p521_mulx_u64(&x881, &x882, x8, (arg1[6])); fiat_p521_mulx_u64(&x883, &x884, x8, (arg1[5])); fiat_p521_mulx_u64(&x885, &x886, x8, (arg1[4])); fiat_p521_mulx_u64(&x887, &x888, x8, (arg1[3])); fiat_p521_mulx_u64(&x889, &x890, x8, (arg1[2])); fiat_p521_mulx_u64(&x891, &x892, x8, (arg1[1])); fiat_p521_mulx_u64(&x893, &x894, x8, (arg1[0])); fiat_p521_addcarryx_u64(&x895, &x896, 0x0, x894, x891); fiat_p521_addcarryx_u64(&x897, &x898, x896, x892, x889); fiat_p521_addcarryx_u64(&x899, &x900, x898, x890, x887); fiat_p521_addcarryx_u64(&x901, &x902, x900, x888, x885); fiat_p521_addcarryx_u64(&x903, &x904, x902, x886, x883); fiat_p521_addcarryx_u64(&x905, &x906, x904, x884, x881); fiat_p521_addcarryx_u64(&x907, &x908, x906, x882, x879); fiat_p521_addcarryx_u64(&x909, &x910, x908, x880, x877); x911 = (x910 + x878); fiat_p521_addcarryx_u64(&x912, &x913, 0x0, x858, x893); fiat_p521_addcarryx_u64(&x914, &x915, x913, x860, x895); fiat_p521_addcarryx_u64(&x916, &x917, x915, x862, x897); fiat_p521_addcarryx_u64(&x918, &x919, x917, x864, x899); fiat_p521_addcarryx_u64(&x920, &x921, x919, x866, x901); fiat_p521_addcarryx_u64(&x922, &x923, x921, x868, x903); fiat_p521_addcarryx_u64(&x924, &x925, x923, x870, x905); fiat_p521_addcarryx_u64(&x926, &x927, x925, x872, x907); fiat_p521_addcarryx_u64(&x928, &x929, x927, x874, x909); fiat_p521_addcarryx_u64(&x930, &x931, x929, x876, x911); fiat_p521_mulx_u64(&x932, &x933, x912, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x934, &x935, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x936, &x937, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x938, &x939, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x940, &x941, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x942, &x943, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x944, &x945, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x946, &x947, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x948, &x949, x912, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x950, &x951, 0x0, x949, x946); fiat_p521_addcarryx_u64(&x952, &x953, x951, x947, x944); fiat_p521_addcarryx_u64(&x954, &x955, x953, x945, x942); fiat_p521_addcarryx_u64(&x956, &x957, x955, x943, x940); fiat_p521_addcarryx_u64(&x958, &x959, x957, x941, x938); fiat_p521_addcarryx_u64(&x960, &x961, x959, x939, x936); fiat_p521_addcarryx_u64(&x962, &x963, x961, x937, x934); fiat_p521_addcarryx_u64(&x964, &x965, x963, x935, x932); x966 = (x965 + x933); fiat_p521_addcarryx_u64(&x967, &x968, 0x0, x912, x948); fiat_p521_addcarryx_u64(&x969, &x970, x968, x914, x950); fiat_p521_addcarryx_u64(&x971, &x972, x970, x916, x952); fiat_p521_addcarryx_u64(&x973, &x974, x972, x918, x954); fiat_p521_addcarryx_u64(&x975, &x976, x974, x920, x956); fiat_p521_addcarryx_u64(&x977, &x978, x976, x922, x958); fiat_p521_addcarryx_u64(&x979, &x980, x978, x924, x960); fiat_p521_addcarryx_u64(&x981, &x982, x980, x926, x962); fiat_p521_addcarryx_u64(&x983, &x984, x982, x928, x964); fiat_p521_addcarryx_u64(&x985, &x986, x984, x930, x966); x987 = ((uint64_t)x986 + x931); fiat_p521_subborrowx_u64(&x988, &x989, 0x0, x969, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x990, &x991, x989, x971, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x992, &x993, x991, x973, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x994, &x995, x993, x975, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x996, &x997, x995, x977, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x998, &x999, x997, x979, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x1000, &x1001, x999, x981, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x1002, &x1003, x1001, x983, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x1004, &x1005, x1003, x985, UINT16_C(0x1ff)); fiat_p521_subborrowx_u64(&x1006, &x1007, x1005, x987, 0x0); fiat_p521_cmovznz_u64(&x1008, x1007, x988, x969); fiat_p521_cmovznz_u64(&x1009, x1007, x990, x971); fiat_p521_cmovznz_u64(&x1010, x1007, x992, x973); fiat_p521_cmovznz_u64(&x1011, x1007, x994, x975); fiat_p521_cmovznz_u64(&x1012, x1007, x996, x977); fiat_p521_cmovznz_u64(&x1013, x1007, x998, x979); fiat_p521_cmovznz_u64(&x1014, x1007, x1000, x981); fiat_p521_cmovznz_u64(&x1015, x1007, x1002, x983); fiat_p521_cmovznz_u64(&x1016, x1007, x1004, x985); out1[0] = x1008; out1[1] = x1009; out1[2] = x1010; out1[3] = x1011; out1[4] = x1012; out1[5] = x1013; out1[6] = x1014; out1[7] = x1015; out1[8] = x1016; } /* * The function fiat_p521_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_p521_add(fiat_p521_montgomery_domain_field_element out1, const fiat_p521_montgomery_domain_field_element arg1, const fiat_p521_montgomery_domain_field_element arg2) { uint64_t x1; fiat_p521_uint1 x2; uint64_t x3; fiat_p521_uint1 x4; uint64_t x5; fiat_p521_uint1 x6; uint64_t x7; fiat_p521_uint1 x8; uint64_t x9; fiat_p521_uint1 x10; uint64_t x11; fiat_p521_uint1 x12; uint64_t x13; fiat_p521_uint1 x14; uint64_t x15; fiat_p521_uint1 x16; uint64_t x17; fiat_p521_uint1 x18; uint64_t x19; fiat_p521_uint1 x20; uint64_t x21; fiat_p521_uint1 x22; uint64_t x23; fiat_p521_uint1 x24; uint64_t x25; fiat_p521_uint1 x26; uint64_t x27; fiat_p521_uint1 x28; uint64_t x29; fiat_p521_uint1 x30; uint64_t x31; fiat_p521_uint1 x32; uint64_t x33; fiat_p521_uint1 x34; uint64_t x35; fiat_p521_uint1 x36; uint64_t x37; fiat_p521_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_p521_addcarryx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); fiat_p521_addcarryx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1])); fiat_p521_addcarryx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2])); fiat_p521_addcarryx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3])); fiat_p521_addcarryx_u64(&x9, &x10, x8, (arg1[4]), (arg2[4])); fiat_p521_addcarryx_u64(&x11, &x12, x10, (arg1[5]), (arg2[5])); fiat_p521_addcarryx_u64(&x13, &x14, x12, (arg1[6]), (arg2[6])); fiat_p521_addcarryx_u64(&x15, &x16, x14, (arg1[7]), (arg2[7])); fiat_p521_addcarryx_u64(&x17, &x18, x16, (arg1[8]), (arg2[8])); fiat_p521_subborrowx_u64(&x19, &x20, 0x0, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x21, &x22, x20, x3, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x23, &x24, x22, x5, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x25, &x26, x24, x7, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x27, &x28, x26, x9, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x29, &x30, x28, x11, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x31, &x32, x30, x13, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x33, &x34, x32, x15, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x35, &x36, x34, x17, UINT16_C(0x1ff)); fiat_p521_subborrowx_u64(&x37, &x38, x36, x18, 0x0); fiat_p521_cmovznz_u64(&x39, x38, x19, x1); fiat_p521_cmovznz_u64(&x40, x38, x21, x3); fiat_p521_cmovznz_u64(&x41, x38, x23, x5); fiat_p521_cmovznz_u64(&x42, x38, x25, x7); fiat_p521_cmovznz_u64(&x43, x38, x27, x9); fiat_p521_cmovznz_u64(&x44, x38, x29, x11); fiat_p521_cmovznz_u64(&x45, x38, x31, x13); fiat_p521_cmovznz_u64(&x46, x38, x33, x15); fiat_p521_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_p521_sub subtracts 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_p521_sub(fiat_p521_montgomery_domain_field_element out1, const fiat_p521_montgomery_domain_field_element arg1, const fiat_p521_montgomery_domain_field_element arg2) { uint64_t x1; fiat_p521_uint1 x2; uint64_t x3; fiat_p521_uint1 x4; uint64_t x5; fiat_p521_uint1 x6; uint64_t x7; fiat_p521_uint1 x8; uint64_t x9; fiat_p521_uint1 x10; uint64_t x11; fiat_p521_uint1 x12; uint64_t x13; fiat_p521_uint1 x14; uint64_t x15; fiat_p521_uint1 x16; uint64_t x17; fiat_p521_uint1 x18; uint64_t x19; uint64_t x20; fiat_p521_uint1 x21; uint64_t x22; fiat_p521_uint1 x23; uint64_t x24; fiat_p521_uint1 x25; uint64_t x26; fiat_p521_uint1 x27; uint64_t x28; fiat_p521_uint1 x29; uint64_t x30; fiat_p521_uint1 x31; uint64_t x32; fiat_p521_uint1 x33; uint64_t x34; fiat_p521_uint1 x35; uint64_t x36; fiat_p521_uint1 x37; fiat_p521_subborrowx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0])); fiat_p521_subborrowx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1])); fiat_p521_subborrowx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2])); fiat_p521_subborrowx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3])); fiat_p521_subborrowx_u64(&x9, &x10, x8, (arg1[4]), (arg2[4])); fiat_p521_subborrowx_u64(&x11, &x12, x10, (arg1[5]), (arg2[5])); fiat_p521_subborrowx_u64(&x13, &x14, x12, (arg1[6]), (arg2[6])); fiat_p521_subborrowx_u64(&x15, &x16, x14, (arg1[7]), (arg2[7])); fiat_p521_subborrowx_u64(&x17, &x18, x16, (arg1[8]), (arg2[8])); fiat_p521_cmovznz_u64(&x19, x18, 0x0, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x20, &x21, 0x0, x1, x19); fiat_p521_addcarryx_u64(&x22, &x23, x21, x3, x19); fiat_p521_addcarryx_u64(&x24, &x25, x23, x5, x19); fiat_p521_addcarryx_u64(&x26, &x27, x25, x7, x19); fiat_p521_addcarryx_u64(&x28, &x29, x27, x9, x19); fiat_p521_addcarryx_u64(&x30, &x31, x29, x11, x19); fiat_p521_addcarryx_u64(&x32, &x33, x31, x13, x19); fiat_p521_addcarryx_u64(&x34, &x35, x33, x15, x19); fiat_p521_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_p521_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_p521_opp(fiat_p521_montgomery_domain_field_element out1, const fiat_p521_montgomery_domain_field_element arg1) { uint64_t x1; fiat_p521_uint1 x2; uint64_t x3; fiat_p521_uint1 x4; uint64_t x5; fiat_p521_uint1 x6; uint64_t x7; fiat_p521_uint1 x8; uint64_t x9; fiat_p521_uint1 x10; uint64_t x11; fiat_p521_uint1 x12; uint64_t x13; fiat_p521_uint1 x14; uint64_t x15; fiat_p521_uint1 x16; uint64_t x17; fiat_p521_uint1 x18; uint64_t x19; uint64_t x20; fiat_p521_uint1 x21; uint64_t x22; fiat_p521_uint1 x23; uint64_t x24; fiat_p521_uint1 x25; uint64_t x26; fiat_p521_uint1 x27; uint64_t x28; fiat_p521_uint1 x29; uint64_t x30; fiat_p521_uint1 x31; uint64_t x32; fiat_p521_uint1 x33; uint64_t x34; fiat_p521_uint1 x35; uint64_t x36; fiat_p521_uint1 x37; fiat_p521_subborrowx_u64(&x1, &x2, 0x0, 0x0, (arg1[0])); fiat_p521_subborrowx_u64(&x3, &x4, x2, 0x0, (arg1[1])); fiat_p521_subborrowx_u64(&x5, &x6, x4, 0x0, (arg1[2])); fiat_p521_subborrowx_u64(&x7, &x8, x6, 0x0, (arg1[3])); fiat_p521_subborrowx_u64(&x9, &x10, x8, 0x0, (arg1[4])); fiat_p521_subborrowx_u64(&x11, &x12, x10, 0x0, (arg1[5])); fiat_p521_subborrowx_u64(&x13, &x14, x12, 0x0, (arg1[6])); fiat_p521_subborrowx_u64(&x15, &x16, x14, 0x0, (arg1[7])); fiat_p521_subborrowx_u64(&x17, &x18, x16, 0x0, (arg1[8])); fiat_p521_cmovznz_u64(&x19, x18, 0x0, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x20, &x21, 0x0, x1, x19); fiat_p521_addcarryx_u64(&x22, &x23, x21, x3, x19); fiat_p521_addcarryx_u64(&x24, &x25, x23, x5, x19); fiat_p521_addcarryx_u64(&x26, &x27, x25, x7, x19); fiat_p521_addcarryx_u64(&x28, &x29, x27, x9, x19); fiat_p521_addcarryx_u64(&x30, &x31, x29, x11, x19); fiat_p521_addcarryx_u64(&x32, &x33, x31, x13, x19); fiat_p521_addcarryx_u64(&x34, &x35, x33, x15, x19); fiat_p521_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_p521_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_p521_from_montgomery(fiat_p521_non_montgomery_domain_field_element out1, const fiat_p521_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; fiat_p521_uint1 x21; uint64_t x22; fiat_p521_uint1 x23; uint64_t x24; fiat_p521_uint1 x25; uint64_t x26; fiat_p521_uint1 x27; uint64_t x28; fiat_p521_uint1 x29; uint64_t x30; fiat_p521_uint1 x31; uint64_t x32; fiat_p521_uint1 x33; uint64_t x34; fiat_p521_uint1 x35; uint64_t x36; fiat_p521_uint1 x37; uint64_t x38; fiat_p521_uint1 x39; uint64_t x40; fiat_p521_uint1 x41; uint64_t x42; fiat_p521_uint1 x43; uint64_t x44; fiat_p521_uint1 x45; uint64_t x46; fiat_p521_uint1 x47; uint64_t x48; fiat_p521_uint1 x49; uint64_t x50; fiat_p521_uint1 x51; uint64_t x52; fiat_p521_uint1 x53; uint64_t x54; fiat_p521_uint1 x55; uint64_t x56; fiat_p521_uint1 x57; uint64_t x58; fiat_p521_uint1 x59; uint64_t x60; fiat_p521_uint1 x61; uint64_t x62; fiat_p521_uint1 x63; uint64_t x64; fiat_p521_uint1 x65; uint64_t x66; fiat_p521_uint1 x67; uint64_t x68; fiat_p521_uint1 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; fiat_p521_uint1 x89; uint64_t x90; fiat_p521_uint1 x91; uint64_t x92; fiat_p521_uint1 x93; uint64_t x94; fiat_p521_uint1 x95; uint64_t x96; fiat_p521_uint1 x97; uint64_t x98; fiat_p521_uint1 x99; uint64_t x100; fiat_p521_uint1 x101; uint64_t x102; fiat_p521_uint1 x103; uint64_t x104; fiat_p521_uint1 x105; uint64_t x106; fiat_p521_uint1 x107; uint64_t x108; fiat_p521_uint1 x109; uint64_t x110; fiat_p521_uint1 x111; uint64_t x112; fiat_p521_uint1 x113; uint64_t x114; fiat_p521_uint1 x115; uint64_t x116; fiat_p521_uint1 x117; uint64_t x118; fiat_p521_uint1 x119; uint64_t x120; fiat_p521_uint1 x121; uint64_t x122; fiat_p521_uint1 x123; uint64_t x124; fiat_p521_uint1 x125; uint64_t x126; fiat_p521_uint1 x127; uint64_t x128; fiat_p521_uint1 x129; uint64_t x130; fiat_p521_uint1 x131; uint64_t x132; fiat_p521_uint1 x133; uint64_t x134; fiat_p521_uint1 x135; uint64_t x136; fiat_p521_uint1 x137; uint64_t x138; uint64_t 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; uint64_t x149; uint64_t x150; uint64_t x151; uint64_t x152; uint64_t x153; uint64_t x154; uint64_t x155; uint64_t x156; fiat_p521_uint1 x157; uint64_t x158; fiat_p521_uint1 x159; uint64_t x160; fiat_p521_uint1 x161; uint64_t x162; fiat_p521_uint1 x163; uint64_t x164; fiat_p521_uint1 x165; uint64_t x166; fiat_p521_uint1 x167; uint64_t x168; fiat_p521_uint1 x169; uint64_t x170; fiat_p521_uint1 x171; uint64_t x172; fiat_p521_uint1 x173; uint64_t x174; fiat_p521_uint1 x175; uint64_t x176; fiat_p521_uint1 x177; uint64_t x178; fiat_p521_uint1 x179; uint64_t x180; fiat_p521_uint1 x181; uint64_t x182; fiat_p521_uint1 x183; uint64_t x184; fiat_p521_uint1 x185; uint64_t x186; fiat_p521_uint1 x187; uint64_t x188; fiat_p521_uint1 x189; uint64_t x190; fiat_p521_uint1 x191; uint64_t x192; fiat_p521_uint1 x193; uint64_t x194; fiat_p521_uint1 x195; uint64_t x196; fiat_p521_uint1 x197; uint64_t x198; fiat_p521_uint1 x199; uint64_t x200; fiat_p521_uint1 x201; uint64_t x202; fiat_p521_uint1 x203; uint64_t x204; fiat_p521_uint1 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; uint64_t x223; uint64_t x224; fiat_p521_uint1 x225; uint64_t x226; fiat_p521_uint1 x227; uint64_t x228; fiat_p521_uint1 x229; uint64_t x230; fiat_p521_uint1 x231; uint64_t x232; fiat_p521_uint1 x233; uint64_t x234; fiat_p521_uint1 x235; uint64_t x236; fiat_p521_uint1 x237; uint64_t x238; fiat_p521_uint1 x239; uint64_t x240; fiat_p521_uint1 x241; uint64_t x242; fiat_p521_uint1 x243; uint64_t x244; fiat_p521_uint1 x245; uint64_t x246; fiat_p521_uint1 x247; uint64_t x248; fiat_p521_uint1 x249; uint64_t x250; fiat_p521_uint1 x251; uint64_t x252; fiat_p521_uint1 x253; uint64_t x254; fiat_p521_uint1 x255; uint64_t x256; fiat_p521_uint1 x257; uint64_t x258; fiat_p521_uint1 x259; uint64_t x260; fiat_p521_uint1 x261; uint64_t x262; fiat_p521_uint1 x263; uint64_t x264; fiat_p521_uint1 x265; uint64_t x266; fiat_p521_uint1 x267; uint64_t x268; fiat_p521_uint1 x269; uint64_t x270; fiat_p521_uint1 x271; uint64_t x272; fiat_p521_uint1 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; uint64_t x291; uint64_t x292; fiat_p521_uint1 x293; uint64_t x294; fiat_p521_uint1 x295; uint64_t x296; fiat_p521_uint1 x297; uint64_t x298; fiat_p521_uint1 x299; uint64_t x300; fiat_p521_uint1 x301; uint64_t x302; fiat_p521_uint1 x303; uint64_t x304; fiat_p521_uint1 x305; uint64_t x306; fiat_p521_uint1 x307; uint64_t x308; fiat_p521_uint1 x309; uint64_t x310; fiat_p521_uint1 x311; uint64_t x312; fiat_p521_uint1 x313; uint64_t x314; fiat_p521_uint1 x315; uint64_t x316; fiat_p521_uint1 x317; uint64_t x318; fiat_p521_uint1 x319; uint64_t x320; fiat_p521_uint1 x321; uint64_t x322; fiat_p521_uint1 x323; uint64_t x324; fiat_p521_uint1 x325; uint64_t x326; fiat_p521_uint1 x327; uint64_t x328; fiat_p521_uint1 x329; uint64_t x330; fiat_p521_uint1 x331; uint64_t x332; fiat_p521_uint1 x333; uint64_t x334; fiat_p521_uint1 x335; uint64_t x336; fiat_p521_uint1 x337; uint64_t x338; fiat_p521_uint1 x339; uint64_t x340; fiat_p521_uint1 x341; uint64_t x342; uint64_t x343; uint64_t x344; uint64_t x345; uint64_t x346; uint64_t x347; uint64_t x348; uint64_t x349; uint64_t x350; uint64_t 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; fiat_p521_uint1 x361; uint64_t x362; fiat_p521_uint1 x363; uint64_t x364; fiat_p521_uint1 x365; uint64_t x366; fiat_p521_uint1 x367; uint64_t x368; fiat_p521_uint1 x369; uint64_t x370; fiat_p521_uint1 x371; uint64_t x372; fiat_p521_uint1 x373; uint64_t x374; fiat_p521_uint1 x375; uint64_t x376; fiat_p521_uint1 x377; uint64_t x378; fiat_p521_uint1 x379; uint64_t x380; fiat_p521_uint1 x381; uint64_t x382; fiat_p521_uint1 x383; uint64_t x384; fiat_p521_uint1 x385; uint64_t x386; fiat_p521_uint1 x387; uint64_t x388; fiat_p521_uint1 x389; uint64_t x390; fiat_p521_uint1 x391; uint64_t x392; fiat_p521_uint1 x393; uint64_t x394; fiat_p521_uint1 x395; uint64_t x396; fiat_p521_uint1 x397; uint64_t x398; fiat_p521_uint1 x399; uint64_t x400; fiat_p521_uint1 x401; uint64_t x402; fiat_p521_uint1 x403; uint64_t x404; fiat_p521_uint1 x405; uint64_t x406; fiat_p521_uint1 x407; uint64_t x408; fiat_p521_uint1 x409; uint64_t x410; uint64_t x411; uint64_t x412; uint64_t x413; uint64_t x414; uint64_t 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; fiat_p521_uint1 x429; uint64_t x430; fiat_p521_uint1 x431; uint64_t x432; fiat_p521_uint1 x433; uint64_t x434; fiat_p521_uint1 x435; uint64_t x436; fiat_p521_uint1 x437; uint64_t x438; fiat_p521_uint1 x439; uint64_t x440; fiat_p521_uint1 x441; uint64_t x442; fiat_p521_uint1 x443; uint64_t x444; fiat_p521_uint1 x445; uint64_t x446; fiat_p521_uint1 x447; uint64_t x448; fiat_p521_uint1 x449; uint64_t x450; fiat_p521_uint1 x451; uint64_t x452; fiat_p521_uint1 x453; uint64_t x454; fiat_p521_uint1 x455; uint64_t x456; fiat_p521_uint1 x457; uint64_t x458; fiat_p521_uint1 x459; uint64_t x460; fiat_p521_uint1 x461; uint64_t x462; fiat_p521_uint1 x463; uint64_t x464; fiat_p521_uint1 x465; uint64_t x466; fiat_p521_uint1 x467; uint64_t x468; fiat_p521_uint1 x469; uint64_t x470; fiat_p521_uint1 x471; uint64_t x472; fiat_p521_uint1 x473; uint64_t x474; fiat_p521_uint1 x475; uint64_t x476; fiat_p521_uint1 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; uint64_t x489; uint64_t x490; uint64_t x491; uint64_t x492; uint64_t x493; uint64_t x494; uint64_t x495; uint64_t x496; fiat_p521_uint1 x497; uint64_t x498; fiat_p521_uint1 x499; uint64_t x500; fiat_p521_uint1 x501; uint64_t x502; fiat_p521_uint1 x503; uint64_t x504; fiat_p521_uint1 x505; uint64_t x506; fiat_p521_uint1 x507; uint64_t x508; fiat_p521_uint1 x509; uint64_t x510; fiat_p521_uint1 x511; uint64_t x512; fiat_p521_uint1 x513; uint64_t x514; fiat_p521_uint1 x515; uint64_t x516; fiat_p521_uint1 x517; uint64_t x518; fiat_p521_uint1 x519; uint64_t x520; fiat_p521_uint1 x521; uint64_t x522; fiat_p521_uint1 x523; uint64_t x524; fiat_p521_uint1 x525; uint64_t x526; fiat_p521_uint1 x527; uint64_t x528; fiat_p521_uint1 x529; uint64_t x530; fiat_p521_uint1 x531; uint64_t x532; fiat_p521_uint1 x533; uint64_t x534; fiat_p521_uint1 x535; uint64_t x536; fiat_p521_uint1 x537; uint64_t x538; fiat_p521_uint1 x539; uint64_t x540; fiat_p521_uint1 x541; uint64_t x542; fiat_p521_uint1 x543; uint64_t x544; fiat_p521_uint1 x545; uint64_t x546; uint64_t x547; uint64_t x548; uint64_t x549; uint64_t x550; uint64_t x551; uint64_t 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; fiat_p521_uint1 x565; uint64_t x566; fiat_p521_uint1 x567; uint64_t x568; fiat_p521_uint1 x569; uint64_t x570; fiat_p521_uint1 x571; uint64_t x572; fiat_p521_uint1 x573; uint64_t x574; fiat_p521_uint1 x575; uint64_t x576; fiat_p521_uint1 x577; uint64_t x578; fiat_p521_uint1 x579; uint64_t x580; fiat_p521_uint1 x581; uint64_t x582; fiat_p521_uint1 x583; uint64_t x584; fiat_p521_uint1 x585; uint64_t x586; fiat_p521_uint1 x587; uint64_t x588; fiat_p521_uint1 x589; uint64_t x590; fiat_p521_uint1 x591; uint64_t x592; fiat_p521_uint1 x593; uint64_t x594; fiat_p521_uint1 x595; uint64_t x596; fiat_p521_uint1 x597; uint64_t x598; uint64_t x599; fiat_p521_uint1 x600; uint64_t x601; fiat_p521_uint1 x602; uint64_t x603; fiat_p521_uint1 x604; uint64_t x605; fiat_p521_uint1 x606; uint64_t x607; fiat_p521_uint1 x608; uint64_t x609; fiat_p521_uint1 x610; uint64_t x611; fiat_p521_uint1 x612; uint64_t x613; fiat_p521_uint1 x614; uint64_t x615; fiat_p521_uint1 x616; uint64_t x617; fiat_p521_uint1 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; x1 = (arg1[0]); fiat_p521_mulx_u64(&x2, &x3, x1, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x4, &x5, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x6, &x7, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x8, &x9, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x10, &x11, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x12, &x13, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x14, &x15, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x16, &x17, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x18, &x19, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x20, &x21, 0x0, x19, x16); fiat_p521_addcarryx_u64(&x22, &x23, x21, x17, x14); fiat_p521_addcarryx_u64(&x24, &x25, x23, x15, x12); fiat_p521_addcarryx_u64(&x26, &x27, x25, x13, x10); fiat_p521_addcarryx_u64(&x28, &x29, x27, x11, x8); fiat_p521_addcarryx_u64(&x30, &x31, x29, x9, x6); fiat_p521_addcarryx_u64(&x32, &x33, x31, x7, x4); fiat_p521_addcarryx_u64(&x34, &x35, x33, x5, x2); fiat_p521_addcarryx_u64(&x36, &x37, 0x0, x1, x18); fiat_p521_addcarryx_u64(&x38, &x39, x37, 0x0, x20); fiat_p521_addcarryx_u64(&x40, &x41, x39, 0x0, x22); fiat_p521_addcarryx_u64(&x42, &x43, x41, 0x0, x24); fiat_p521_addcarryx_u64(&x44, &x45, x43, 0x0, x26); fiat_p521_addcarryx_u64(&x46, &x47, x45, 0x0, x28); fiat_p521_addcarryx_u64(&x48, &x49, x47, 0x0, x30); fiat_p521_addcarryx_u64(&x50, &x51, x49, 0x0, x32); fiat_p521_addcarryx_u64(&x52, &x53, x51, 0x0, x34); fiat_p521_addcarryx_u64(&x54, &x55, 0x0, x38, (arg1[1])); fiat_p521_addcarryx_u64(&x56, &x57, x55, x40, 0x0); fiat_p521_addcarryx_u64(&x58, &x59, x57, x42, 0x0); fiat_p521_addcarryx_u64(&x60, &x61, x59, x44, 0x0); fiat_p521_addcarryx_u64(&x62, &x63, x61, x46, 0x0); fiat_p521_addcarryx_u64(&x64, &x65, x63, x48, 0x0); fiat_p521_addcarryx_u64(&x66, &x67, x65, x50, 0x0); fiat_p521_addcarryx_u64(&x68, &x69, x67, x52, 0x0); fiat_p521_mulx_u64(&x70, &x71, x54, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x72, &x73, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x74, &x75, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x76, &x77, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x78, &x79, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x80, &x81, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x82, &x83, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x84, &x85, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x86, &x87, x54, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x88, &x89, 0x0, x87, x84); fiat_p521_addcarryx_u64(&x90, &x91, x89, x85, x82); fiat_p521_addcarryx_u64(&x92, &x93, x91, x83, x80); fiat_p521_addcarryx_u64(&x94, &x95, x93, x81, x78); fiat_p521_addcarryx_u64(&x96, &x97, x95, x79, x76); fiat_p521_addcarryx_u64(&x98, &x99, x97, x77, x74); fiat_p521_addcarryx_u64(&x100, &x101, x99, x75, x72); fiat_p521_addcarryx_u64(&x102, &x103, x101, x73, x70); fiat_p521_addcarryx_u64(&x104, &x105, 0x0, x54, x86); fiat_p521_addcarryx_u64(&x106, &x107, x105, x56, x88); fiat_p521_addcarryx_u64(&x108, &x109, x107, x58, x90); fiat_p521_addcarryx_u64(&x110, &x111, x109, x60, x92); fiat_p521_addcarryx_u64(&x112, &x113, x111, x62, x94); fiat_p521_addcarryx_u64(&x114, &x115, x113, x64, x96); fiat_p521_addcarryx_u64(&x116, &x117, x115, x66, x98); fiat_p521_addcarryx_u64(&x118, &x119, x117, x68, x100); fiat_p521_addcarryx_u64(&x120, &x121, x119, (x69 + (x53 + (x35 + x3))), x102); fiat_p521_addcarryx_u64(&x122, &x123, 0x0, x106, (arg1[2])); fiat_p521_addcarryx_u64(&x124, &x125, x123, x108, 0x0); fiat_p521_addcarryx_u64(&x126, &x127, x125, x110, 0x0); fiat_p521_addcarryx_u64(&x128, &x129, x127, x112, 0x0); fiat_p521_addcarryx_u64(&x130, &x131, x129, x114, 0x0); fiat_p521_addcarryx_u64(&x132, &x133, x131, x116, 0x0); fiat_p521_addcarryx_u64(&x134, &x135, x133, x118, 0x0); fiat_p521_addcarryx_u64(&x136, &x137, x135, x120, 0x0); fiat_p521_mulx_u64(&x138, &x139, x122, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x140, &x141, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x142, &x143, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x144, &x145, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x146, &x147, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x148, &x149, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x150, &x151, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x152, &x153, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x154, &x155, x122, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x156, &x157, 0x0, x155, x152); fiat_p521_addcarryx_u64(&x158, &x159, x157, x153, x150); fiat_p521_addcarryx_u64(&x160, &x161, x159, x151, x148); fiat_p521_addcarryx_u64(&x162, &x163, x161, x149, x146); fiat_p521_addcarryx_u64(&x164, &x165, x163, x147, x144); fiat_p521_addcarryx_u64(&x166, &x167, x165, x145, x142); fiat_p521_addcarryx_u64(&x168, &x169, x167, x143, x140); fiat_p521_addcarryx_u64(&x170, &x171, x169, x141, x138); fiat_p521_addcarryx_u64(&x172, &x173, 0x0, x122, x154); fiat_p521_addcarryx_u64(&x174, &x175, x173, x124, x156); fiat_p521_addcarryx_u64(&x176, &x177, x175, x126, x158); fiat_p521_addcarryx_u64(&x178, &x179, x177, x128, x160); fiat_p521_addcarryx_u64(&x180, &x181, x179, x130, x162); fiat_p521_addcarryx_u64(&x182, &x183, x181, x132, x164); fiat_p521_addcarryx_u64(&x184, &x185, x183, x134, x166); fiat_p521_addcarryx_u64(&x186, &x187, x185, x136, x168); fiat_p521_addcarryx_u64(&x188, &x189, x187, (x137 + (x121 + (x103 + x71))), x170); fiat_p521_addcarryx_u64(&x190, &x191, 0x0, x174, (arg1[3])); fiat_p521_addcarryx_u64(&x192, &x193, x191, x176, 0x0); fiat_p521_addcarryx_u64(&x194, &x195, x193, x178, 0x0); fiat_p521_addcarryx_u64(&x196, &x197, x195, x180, 0x0); fiat_p521_addcarryx_u64(&x198, &x199, x197, x182, 0x0); fiat_p521_addcarryx_u64(&x200, &x201, x199, x184, 0x0); fiat_p521_addcarryx_u64(&x202, &x203, x201, x186, 0x0); fiat_p521_addcarryx_u64(&x204, &x205, x203, x188, 0x0); fiat_p521_mulx_u64(&x206, &x207, x190, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x208, &x209, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x210, &x211, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x212, &x213, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x214, &x215, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x216, &x217, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x218, &x219, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x220, &x221, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x222, &x223, x190, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x224, &x225, 0x0, x223, x220); fiat_p521_addcarryx_u64(&x226, &x227, x225, x221, x218); fiat_p521_addcarryx_u64(&x228, &x229, x227, x219, x216); fiat_p521_addcarryx_u64(&x230, &x231, x229, x217, x214); fiat_p521_addcarryx_u64(&x232, &x233, x231, x215, x212); fiat_p521_addcarryx_u64(&x234, &x235, x233, x213, x210); fiat_p521_addcarryx_u64(&x236, &x237, x235, x211, x208); fiat_p521_addcarryx_u64(&x238, &x239, x237, x209, x206); fiat_p521_addcarryx_u64(&x240, &x241, 0x0, x190, x222); fiat_p521_addcarryx_u64(&x242, &x243, x241, x192, x224); fiat_p521_addcarryx_u64(&x244, &x245, x243, x194, x226); fiat_p521_addcarryx_u64(&x246, &x247, x245, x196, x228); fiat_p521_addcarryx_u64(&x248, &x249, x247, x198, x230); fiat_p521_addcarryx_u64(&x250, &x251, x249, x200, x232); fiat_p521_addcarryx_u64(&x252, &x253, x251, x202, x234); fiat_p521_addcarryx_u64(&x254, &x255, x253, x204, x236); fiat_p521_addcarryx_u64(&x256, &x257, x255, (x205 + (x189 + (x171 + x139))), x238); fiat_p521_addcarryx_u64(&x258, &x259, 0x0, x242, (arg1[4])); fiat_p521_addcarryx_u64(&x260, &x261, x259, x244, 0x0); fiat_p521_addcarryx_u64(&x262, &x263, x261, x246, 0x0); fiat_p521_addcarryx_u64(&x264, &x265, x263, x248, 0x0); fiat_p521_addcarryx_u64(&x266, &x267, x265, x250, 0x0); fiat_p521_addcarryx_u64(&x268, &x269, x267, x252, 0x0); fiat_p521_addcarryx_u64(&x270, &x271, x269, x254, 0x0); fiat_p521_addcarryx_u64(&x272, &x273, x271, x256, 0x0); fiat_p521_mulx_u64(&x274, &x275, x258, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x276, &x277, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x278, &x279, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x280, &x281, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x282, &x283, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x284, &x285, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x286, &x287, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x288, &x289, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x290, &x291, x258, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x292, &x293, 0x0, x291, x288); fiat_p521_addcarryx_u64(&x294, &x295, x293, x289, x286); fiat_p521_addcarryx_u64(&x296, &x297, x295, x287, x284); fiat_p521_addcarryx_u64(&x298, &x299, x297, x285, x282); fiat_p521_addcarryx_u64(&x300, &x301, x299, x283, x280); fiat_p521_addcarryx_u64(&x302, &x303, x301, x281, x278); fiat_p521_addcarryx_u64(&x304, &x305, x303, x279, x276); fiat_p521_addcarryx_u64(&x306, &x307, x305, x277, x274); fiat_p521_addcarryx_u64(&x308, &x309, 0x0, x258, x290); fiat_p521_addcarryx_u64(&x310, &x311, x309, x260, x292); fiat_p521_addcarryx_u64(&x312, &x313, x311, x262, x294); fiat_p521_addcarryx_u64(&x314, &x315, x313, x264, x296); fiat_p521_addcarryx_u64(&x316, &x317, x315, x266, x298); fiat_p521_addcarryx_u64(&x318, &x319, x317, x268, x300); fiat_p521_addcarryx_u64(&x320, &x321, x319, x270, x302); fiat_p521_addcarryx_u64(&x322, &x323, x321, x272, x304); fiat_p521_addcarryx_u64(&x324, &x325, x323, (x273 + (x257 + (x239 + x207))), x306); fiat_p521_addcarryx_u64(&x326, &x327, 0x0, x310, (arg1[5])); fiat_p521_addcarryx_u64(&x328, &x329, x327, x312, 0x0); fiat_p521_addcarryx_u64(&x330, &x331, x329, x314, 0x0); fiat_p521_addcarryx_u64(&x332, &x333, x331, x316, 0x0); fiat_p521_addcarryx_u64(&x334, &x335, x333, x318, 0x0); fiat_p521_addcarryx_u64(&x336, &x337, x335, x320, 0x0); fiat_p521_addcarryx_u64(&x338, &x339, x337, x322, 0x0); fiat_p521_addcarryx_u64(&x340, &x341, x339, x324, 0x0); fiat_p521_mulx_u64(&x342, &x343, x326, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x344, &x345, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x346, &x347, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x348, &x349, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x350, &x351, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x352, &x353, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x354, &x355, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x356, &x357, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x358, &x359, x326, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x360, &x361, 0x0, x359, x356); fiat_p521_addcarryx_u64(&x362, &x363, x361, x357, x354); fiat_p521_addcarryx_u64(&x364, &x365, x363, x355, x352); fiat_p521_addcarryx_u64(&x366, &x367, x365, x353, x350); fiat_p521_addcarryx_u64(&x368, &x369, x367, x351, x348); fiat_p521_addcarryx_u64(&x370, &x371, x369, x349, x346); fiat_p521_addcarryx_u64(&x372, &x373, x371, x347, x344); fiat_p521_addcarryx_u64(&x374, &x375, x373, x345, x342); fiat_p521_addcarryx_u64(&x376, &x377, 0x0, x326, x358); fiat_p521_addcarryx_u64(&x378, &x379, x377, x328, x360); fiat_p521_addcarryx_u64(&x380, &x381, x379, x330, x362); fiat_p521_addcarryx_u64(&x382, &x383, x381, x332, x364); fiat_p521_addcarryx_u64(&x384, &x385, x383, x334, x366); fiat_p521_addcarryx_u64(&x386, &x387, x385, x336, x368); fiat_p521_addcarryx_u64(&x388, &x389, x387, x338, x370); fiat_p521_addcarryx_u64(&x390, &x391, x389, x340, x372); fiat_p521_addcarryx_u64(&x392, &x393, x391, (x341 + (x325 + (x307 + x275))), x374); fiat_p521_addcarryx_u64(&x394, &x395, 0x0, x378, (arg1[6])); fiat_p521_addcarryx_u64(&x396, &x397, x395, x380, 0x0); fiat_p521_addcarryx_u64(&x398, &x399, x397, x382, 0x0); fiat_p521_addcarryx_u64(&x400, &x401, x399, x384, 0x0); fiat_p521_addcarryx_u64(&x402, &x403, x401, x386, 0x0); fiat_p521_addcarryx_u64(&x404, &x405, x403, x388, 0x0); fiat_p521_addcarryx_u64(&x406, &x407, x405, x390, 0x0); fiat_p521_addcarryx_u64(&x408, &x409, x407, x392, 0x0); fiat_p521_mulx_u64(&x410, &x411, x394, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x412, &x413, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x414, &x415, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x416, &x417, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x418, &x419, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x420, &x421, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x422, &x423, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x424, &x425, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x426, &x427, x394, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x428, &x429, 0x0, x427, x424); fiat_p521_addcarryx_u64(&x430, &x431, x429, x425, x422); fiat_p521_addcarryx_u64(&x432, &x433, x431, x423, x420); fiat_p521_addcarryx_u64(&x434, &x435, x433, x421, x418); fiat_p521_addcarryx_u64(&x436, &x437, x435, x419, x416); fiat_p521_addcarryx_u64(&x438, &x439, x437, x417, x414); fiat_p521_addcarryx_u64(&x440, &x441, x439, x415, x412); fiat_p521_addcarryx_u64(&x442, &x443, x441, x413, x410); fiat_p521_addcarryx_u64(&x444, &x445, 0x0, x394, x426); fiat_p521_addcarryx_u64(&x446, &x447, x445, x396, x428); fiat_p521_addcarryx_u64(&x448, &x449, x447, x398, x430); fiat_p521_addcarryx_u64(&x450, &x451, x449, x400, x432); fiat_p521_addcarryx_u64(&x452, &x453, x451, x402, x434); fiat_p521_addcarryx_u64(&x454, &x455, x453, x404, x436); fiat_p521_addcarryx_u64(&x456, &x457, x455, x406, x438); fiat_p521_addcarryx_u64(&x458, &x459, x457, x408, x440); fiat_p521_addcarryx_u64(&x460, &x461, x459, (x409 + (x393 + (x375 + x343))), x442); fiat_p521_addcarryx_u64(&x462, &x463, 0x0, x446, (arg1[7])); fiat_p521_addcarryx_u64(&x464, &x465, x463, x448, 0x0); fiat_p521_addcarryx_u64(&x466, &x467, x465, x450, 0x0); fiat_p521_addcarryx_u64(&x468, &x469, x467, x452, 0x0); fiat_p521_addcarryx_u64(&x470, &x471, x469, x454, 0x0); fiat_p521_addcarryx_u64(&x472, &x473, x471, x456, 0x0); fiat_p521_addcarryx_u64(&x474, &x475, x473, x458, 0x0); fiat_p521_addcarryx_u64(&x476, &x477, x475, x460, 0x0); fiat_p521_mulx_u64(&x478, &x479, x462, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x480, &x481, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x482, &x483, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x484, &x485, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x486, &x487, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x488, &x489, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x490, &x491, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x492, &x493, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x494, &x495, x462, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x496, &x497, 0x0, x495, x492); fiat_p521_addcarryx_u64(&x498, &x499, x497, x493, x490); fiat_p521_addcarryx_u64(&x500, &x501, x499, x491, x488); fiat_p521_addcarryx_u64(&x502, &x503, x501, x489, x486); fiat_p521_addcarryx_u64(&x504, &x505, x503, x487, x484); fiat_p521_addcarryx_u64(&x506, &x507, x505, x485, x482); fiat_p521_addcarryx_u64(&x508, &x509, x507, x483, x480); fiat_p521_addcarryx_u64(&x510, &x511, x509, x481, x478); fiat_p521_addcarryx_u64(&x512, &x513, 0x0, x462, x494); fiat_p521_addcarryx_u64(&x514, &x515, x513, x464, x496); fiat_p521_addcarryx_u64(&x516, &x517, x515, x466, x498); fiat_p521_addcarryx_u64(&x518, &x519, x517, x468, x500); fiat_p521_addcarryx_u64(&x520, &x521, x519, x470, x502); fiat_p521_addcarryx_u64(&x522, &x523, x521, x472, x504); fiat_p521_addcarryx_u64(&x524, &x525, x523, x474, x506); fiat_p521_addcarryx_u64(&x526, &x527, x525, x476, x508); fiat_p521_addcarryx_u64(&x528, &x529, x527, (x477 + (x461 + (x443 + x411))), x510); fiat_p521_addcarryx_u64(&x530, &x531, 0x0, x514, (arg1[8])); fiat_p521_addcarryx_u64(&x532, &x533, x531, x516, 0x0); fiat_p521_addcarryx_u64(&x534, &x535, x533, x518, 0x0); fiat_p521_addcarryx_u64(&x536, &x537, x535, x520, 0x0); fiat_p521_addcarryx_u64(&x538, &x539, x537, x522, 0x0); fiat_p521_addcarryx_u64(&x540, &x541, x539, x524, 0x0); fiat_p521_addcarryx_u64(&x542, &x543, x541, x526, 0x0); fiat_p521_addcarryx_u64(&x544, &x545, x543, x528, 0x0); fiat_p521_mulx_u64(&x546, &x547, x530, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x548, &x549, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x550, &x551, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x552, &x553, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x554, &x555, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x556, &x557, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x558, &x559, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x560, &x561, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x562, &x563, x530, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x564, &x565, 0x0, x563, x560); fiat_p521_addcarryx_u64(&x566, &x567, x565, x561, x558); fiat_p521_addcarryx_u64(&x568, &x569, x567, x559, x556); fiat_p521_addcarryx_u64(&x570, &x571, x569, x557, x554); fiat_p521_addcarryx_u64(&x572, &x573, x571, x555, x552); fiat_p521_addcarryx_u64(&x574, &x575, x573, x553, x550); fiat_p521_addcarryx_u64(&x576, &x577, x575, x551, x548); fiat_p521_addcarryx_u64(&x578, &x579, x577, x549, x546); fiat_p521_addcarryx_u64(&x580, &x581, 0x0, x530, x562); fiat_p521_addcarryx_u64(&x582, &x583, x581, x532, x564); fiat_p521_addcarryx_u64(&x584, &x585, x583, x534, x566); fiat_p521_addcarryx_u64(&x586, &x587, x585, x536, x568); fiat_p521_addcarryx_u64(&x588, &x589, x587, x538, x570); fiat_p521_addcarryx_u64(&x590, &x591, x589, x540, x572); fiat_p521_addcarryx_u64(&x592, &x593, x591, x542, x574); fiat_p521_addcarryx_u64(&x594, &x595, x593, x544, x576); fiat_p521_addcarryx_u64(&x596, &x597, x595, (x545 + (x529 + (x511 + x479))), x578); x598 = (x597 + (x579 + x547)); fiat_p521_subborrowx_u64(&x599, &x600, 0x0, x582, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x601, &x602, x600, x584, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x603, &x604, x602, x586, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x605, &x606, x604, x588, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x607, &x608, x606, x590, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x609, &x610, x608, x592, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x611, &x612, x610, x594, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x613, &x614, x612, x596, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x615, &x616, x614, x598, UINT16_C(0x1ff)); fiat_p521_subborrowx_u64(&x617, &x618, x616, 0x0, 0x0); fiat_p521_cmovznz_u64(&x619, x618, x599, x582); fiat_p521_cmovznz_u64(&x620, x618, x601, x584); fiat_p521_cmovznz_u64(&x621, x618, x603, x586); fiat_p521_cmovznz_u64(&x622, x618, x605, x588); fiat_p521_cmovznz_u64(&x623, x618, x607, x590); fiat_p521_cmovznz_u64(&x624, x618, x609, x592); fiat_p521_cmovznz_u64(&x625, x618, x611, x594); fiat_p521_cmovznz_u64(&x626, x618, x613, x596); fiat_p521_cmovznz_u64(&x627, x618, x615, x598); out1[0] = x619; out1[1] = x620; out1[2] = x621; out1[3] = x622; out1[4] = x623; out1[5] = x624; out1[6] = x625; out1[7] = x626; out1[8] = x627; } /* * The function fiat_p521_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_p521_to_montgomery(fiat_p521_montgomery_domain_field_element out1, const fiat_p521_non_montgomery_domain_field_element arg1) { uint64_t x1; uint64_t x2; uint64_t x3; uint64_t x4; uint64_t x5; fiat_p521_uint1 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; fiat_p521_uint1 x26; uint64_t x27; fiat_p521_uint1 x28; uint64_t x29; fiat_p521_uint1 x30; uint64_t x31; fiat_p521_uint1 x32; uint64_t x33; fiat_p521_uint1 x34; uint64_t x35; fiat_p521_uint1 x36; uint64_t x37; fiat_p521_uint1 x38; uint64_t x39; fiat_p521_uint1 x40; uint64_t x41; fiat_p521_uint1 x42; uint64_t x43; fiat_p521_uint1 x44; uint64_t x45; fiat_p521_uint1 x46; uint64_t x47; fiat_p521_uint1 x48; uint64_t x49; fiat_p521_uint1 x50; uint64_t x51; fiat_p521_uint1 x52; uint64_t x53; fiat_p521_uint1 x54; uint64_t x55; fiat_p521_uint1 x56; uint64_t x57; fiat_p521_uint1 x58; uint64_t x59; uint64_t x60; uint64_t x61; fiat_p521_uint1 x62; uint64_t x63; fiat_p521_uint1 x64; uint64_t x65; fiat_p521_uint1 x66; uint64_t x67; fiat_p521_uint1 x68; uint64_t x69; fiat_p521_uint1 x70; uint64_t x71; fiat_p521_uint1 x72; uint64_t x73; fiat_p521_uint1 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; fiat_p521_uint1 x94; uint64_t x95; fiat_p521_uint1 x96; uint64_t x97; fiat_p521_uint1 x98; uint64_t x99; fiat_p521_uint1 x100; uint64_t x101; fiat_p521_uint1 x102; uint64_t x103; fiat_p521_uint1 x104; uint64_t x105; fiat_p521_uint1 x106; uint64_t x107; fiat_p521_uint1 x108; uint64_t x109; fiat_p521_uint1 x110; uint64_t x111; fiat_p521_uint1 x112; uint64_t x113; fiat_p521_uint1 x114; uint64_t x115; fiat_p521_uint1 x116; uint64_t x117; fiat_p521_uint1 x118; uint64_t x119; fiat_p521_uint1 x120; uint64_t x121; fiat_p521_uint1 x122; uint64_t x123; fiat_p521_uint1 x124; uint64_t x125; fiat_p521_uint1 x126; uint64_t x127; uint64_t x128; uint64_t x129; fiat_p521_uint1 x130; uint64_t x131; fiat_p521_uint1 x132; uint64_t x133; fiat_p521_uint1 x134; uint64_t x135; fiat_p521_uint1 x136; uint64_t x137; fiat_p521_uint1 x138; uint64_t x139; fiat_p521_uint1 x140; uint64_t x141; fiat_p521_uint1 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; fiat_p521_uint1 x162; uint64_t x163; fiat_p521_uint1 x164; uint64_t x165; fiat_p521_uint1 x166; uint64_t x167; fiat_p521_uint1 x168; uint64_t x169; fiat_p521_uint1 x170; uint64_t x171; fiat_p521_uint1 x172; uint64_t x173; fiat_p521_uint1 x174; uint64_t x175; fiat_p521_uint1 x176; uint64_t x177; fiat_p521_uint1 x178; uint64_t x179; fiat_p521_uint1 x180; uint64_t x181; fiat_p521_uint1 x182; uint64_t x183; fiat_p521_uint1 x184; uint64_t x185; fiat_p521_uint1 x186; uint64_t x187; fiat_p521_uint1 x188; uint64_t x189; fiat_p521_uint1 x190; uint64_t x191; fiat_p521_uint1 x192; uint64_t x193; fiat_p521_uint1 x194; uint64_t x195; uint64_t x196; uint64_t x197; fiat_p521_uint1 x198; uint64_t x199; fiat_p521_uint1 x200; uint64_t x201; fiat_p521_uint1 x202; uint64_t x203; fiat_p521_uint1 x204; uint64_t x205; fiat_p521_uint1 x206; uint64_t x207; fiat_p521_uint1 x208; uint64_t x209; fiat_p521_uint1 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; uint64_t x223; uint64_t x224; uint64_t x225; uint64_t x226; uint64_t x227; uint64_t x228; uint64_t x229; fiat_p521_uint1 x230; uint64_t x231; fiat_p521_uint1 x232; uint64_t x233; fiat_p521_uint1 x234; uint64_t x235; fiat_p521_uint1 x236; uint64_t x237; fiat_p521_uint1 x238; uint64_t x239; fiat_p521_uint1 x240; uint64_t x241; fiat_p521_uint1 x242; uint64_t x243; fiat_p521_uint1 x244; uint64_t x245; fiat_p521_uint1 x246; uint64_t x247; fiat_p521_uint1 x248; uint64_t x249; fiat_p521_uint1 x250; uint64_t x251; fiat_p521_uint1 x252; uint64_t x253; fiat_p521_uint1 x254; uint64_t x255; fiat_p521_uint1 x256; uint64_t x257; fiat_p521_uint1 x258; uint64_t x259; fiat_p521_uint1 x260; uint64_t x261; fiat_p521_uint1 x262; uint64_t x263; uint64_t x264; uint64_t x265; fiat_p521_uint1 x266; uint64_t x267; fiat_p521_uint1 x268; uint64_t x269; fiat_p521_uint1 x270; uint64_t x271; fiat_p521_uint1 x272; uint64_t x273; fiat_p521_uint1 x274; uint64_t x275; fiat_p521_uint1 x276; uint64_t x277; fiat_p521_uint1 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; uint64_t x291; uint64_t x292; uint64_t x293; uint64_t x294; uint64_t x295; uint64_t x296; uint64_t x297; fiat_p521_uint1 x298; uint64_t x299; fiat_p521_uint1 x300; uint64_t x301; fiat_p521_uint1 x302; uint64_t x303; fiat_p521_uint1 x304; uint64_t x305; fiat_p521_uint1 x306; uint64_t x307; fiat_p521_uint1 x308; uint64_t x309; fiat_p521_uint1 x310; uint64_t x311; fiat_p521_uint1 x312; uint64_t x313; fiat_p521_uint1 x314; uint64_t x315; fiat_p521_uint1 x316; uint64_t x317; fiat_p521_uint1 x318; uint64_t x319; fiat_p521_uint1 x320; uint64_t x321; fiat_p521_uint1 x322; uint64_t x323; fiat_p521_uint1 x324; uint64_t x325; fiat_p521_uint1 x326; uint64_t x327; fiat_p521_uint1 x328; uint64_t x329; fiat_p521_uint1 x330; uint64_t x331; uint64_t x332; uint64_t x333; fiat_p521_uint1 x334; uint64_t x335; fiat_p521_uint1 x336; uint64_t x337; fiat_p521_uint1 x338; uint64_t x339; fiat_p521_uint1 x340; uint64_t x341; fiat_p521_uint1 x342; uint64_t x343; fiat_p521_uint1 x344; uint64_t x345; fiat_p521_uint1 x346; uint64_t x347; uint64_t x348; uint64_t x349; uint64_t x350; uint64_t 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; fiat_p521_uint1 x366; uint64_t x367; fiat_p521_uint1 x368; uint64_t x369; fiat_p521_uint1 x370; uint64_t x371; fiat_p521_uint1 x372; uint64_t x373; fiat_p521_uint1 x374; uint64_t x375; fiat_p521_uint1 x376; uint64_t x377; fiat_p521_uint1 x378; uint64_t x379; fiat_p521_uint1 x380; uint64_t x381; fiat_p521_uint1 x382; uint64_t x383; fiat_p521_uint1 x384; uint64_t x385; fiat_p521_uint1 x386; uint64_t x387; fiat_p521_uint1 x388; uint64_t x389; fiat_p521_uint1 x390; uint64_t x391; fiat_p521_uint1 x392; uint64_t x393; fiat_p521_uint1 x394; uint64_t x395; fiat_p521_uint1 x396; uint64_t x397; fiat_p521_uint1 x398; uint64_t x399; uint64_t x400; uint64_t x401; fiat_p521_uint1 x402; uint64_t x403; fiat_p521_uint1 x404; uint64_t x405; fiat_p521_uint1 x406; uint64_t x407; fiat_p521_uint1 x408; uint64_t x409; fiat_p521_uint1 x410; uint64_t x411; fiat_p521_uint1 x412; uint64_t x413; fiat_p521_uint1 x414; uint64_t 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; fiat_p521_uint1 x434; uint64_t x435; fiat_p521_uint1 x436; uint64_t x437; fiat_p521_uint1 x438; uint64_t x439; fiat_p521_uint1 x440; uint64_t x441; fiat_p521_uint1 x442; uint64_t x443; fiat_p521_uint1 x444; uint64_t x445; fiat_p521_uint1 x446; uint64_t x447; fiat_p521_uint1 x448; uint64_t x449; fiat_p521_uint1 x450; uint64_t x451; fiat_p521_uint1 x452; uint64_t x453; fiat_p521_uint1 x454; uint64_t x455; fiat_p521_uint1 x456; uint64_t x457; fiat_p521_uint1 x458; uint64_t x459; fiat_p521_uint1 x460; uint64_t x461; fiat_p521_uint1 x462; uint64_t x463; fiat_p521_uint1 x464; uint64_t x465; fiat_p521_uint1 x466; uint64_t x467; uint64_t x468; uint64_t x469; fiat_p521_uint1 x470; uint64_t x471; fiat_p521_uint1 x472; uint64_t x473; fiat_p521_uint1 x474; uint64_t x475; fiat_p521_uint1 x476; uint64_t x477; fiat_p521_uint1 x478; uint64_t x479; fiat_p521_uint1 x480; uint64_t x481; fiat_p521_uint1 x482; uint64_t x483; uint64_t x484; uint64_t x485; uint64_t x486; uint64_t x487; uint64_t x488; uint64_t x489; uint64_t x490; uint64_t 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; fiat_p521_uint1 x502; uint64_t x503; fiat_p521_uint1 x504; uint64_t x505; fiat_p521_uint1 x506; uint64_t x507; fiat_p521_uint1 x508; uint64_t x509; fiat_p521_uint1 x510; uint64_t x511; fiat_p521_uint1 x512; uint64_t x513; fiat_p521_uint1 x514; uint64_t x515; fiat_p521_uint1 x516; uint64_t x517; fiat_p521_uint1 x518; uint64_t x519; fiat_p521_uint1 x520; uint64_t x521; fiat_p521_uint1 x522; uint64_t x523; fiat_p521_uint1 x524; uint64_t x525; fiat_p521_uint1 x526; uint64_t x527; fiat_p521_uint1 x528; uint64_t x529; fiat_p521_uint1 x530; uint64_t x531; fiat_p521_uint1 x532; uint64_t x533; fiat_p521_uint1 x534; uint64_t x535; uint64_t x536; fiat_p521_uint1 x537; uint64_t x538; fiat_p521_uint1 x539; uint64_t x540; fiat_p521_uint1 x541; uint64_t x542; fiat_p521_uint1 x543; uint64_t x544; fiat_p521_uint1 x545; uint64_t x546; fiat_p521_uint1 x547; uint64_t x548; fiat_p521_uint1 x549; uint64_t x550; fiat_p521_uint1 x551; uint64_t x552; fiat_p521_uint1 x553; uint64_t x554; fiat_p521_uint1 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; fiat_p521_mulx_u64(&x1, &x2, (arg1[0]), UINT64_C(0x400000000000)); fiat_p521_mulx_u64(&x3, &x4, (arg1[1]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x5, &x6, 0x0, x2, x3); fiat_p521_mulx_u64(&x7, &x8, x1, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x9, &x10, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x11, &x12, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x13, &x14, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x15, &x16, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x17, &x18, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x19, &x20, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x21, &x22, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x23, &x24, x1, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x25, &x26, 0x0, x24, x21); fiat_p521_addcarryx_u64(&x27, &x28, x26, x22, x19); fiat_p521_addcarryx_u64(&x29, &x30, x28, x20, x17); fiat_p521_addcarryx_u64(&x31, &x32, x30, x18, x15); fiat_p521_addcarryx_u64(&x33, &x34, x32, x16, x13); fiat_p521_addcarryx_u64(&x35, &x36, x34, x14, x11); fiat_p521_addcarryx_u64(&x37, &x38, x36, x12, x9); fiat_p521_addcarryx_u64(&x39, &x40, x38, x10, x7); fiat_p521_addcarryx_u64(&x41, &x42, 0x0, x1, x23); fiat_p521_addcarryx_u64(&x43, &x44, x42, x5, x25); fiat_p521_addcarryx_u64(&x45, &x46, x44, (x6 + x4), x27); fiat_p521_addcarryx_u64(&x47, &x48, x46, 0x0, x29); fiat_p521_addcarryx_u64(&x49, &x50, x48, 0x0, x31); fiat_p521_addcarryx_u64(&x51, &x52, x50, 0x0, x33); fiat_p521_addcarryx_u64(&x53, &x54, x52, 0x0, x35); fiat_p521_addcarryx_u64(&x55, &x56, x54, 0x0, x37); fiat_p521_addcarryx_u64(&x57, &x58, x56, 0x0, x39); fiat_p521_mulx_u64(&x59, &x60, (arg1[2]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x61, &x62, 0x0, x45, x59); fiat_p521_addcarryx_u64(&x63, &x64, x62, x47, x60); fiat_p521_addcarryx_u64(&x65, &x66, x64, x49, 0x0); fiat_p521_addcarryx_u64(&x67, &x68, x66, x51, 0x0); fiat_p521_addcarryx_u64(&x69, &x70, x68, x53, 0x0); fiat_p521_addcarryx_u64(&x71, &x72, x70, x55, 0x0); fiat_p521_addcarryx_u64(&x73, &x74, x72, x57, 0x0); fiat_p521_mulx_u64(&x75, &x76, x43, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x77, &x78, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x79, &x80, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x81, &x82, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x83, &x84, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x85, &x86, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x87, &x88, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x89, &x90, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x91, &x92, x43, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x93, &x94, 0x0, x92, x89); fiat_p521_addcarryx_u64(&x95, &x96, x94, x90, x87); fiat_p521_addcarryx_u64(&x97, &x98, x96, x88, x85); fiat_p521_addcarryx_u64(&x99, &x100, x98, x86, x83); fiat_p521_addcarryx_u64(&x101, &x102, x100, x84, x81); fiat_p521_addcarryx_u64(&x103, &x104, x102, x82, x79); fiat_p521_addcarryx_u64(&x105, &x106, x104, x80, x77); fiat_p521_addcarryx_u64(&x107, &x108, x106, x78, x75); fiat_p521_addcarryx_u64(&x109, &x110, 0x0, x43, x91); fiat_p521_addcarryx_u64(&x111, &x112, x110, x61, x93); fiat_p521_addcarryx_u64(&x113, &x114, x112, x63, x95); fiat_p521_addcarryx_u64(&x115, &x116, x114, x65, x97); fiat_p521_addcarryx_u64(&x117, &x118, x116, x67, x99); fiat_p521_addcarryx_u64(&x119, &x120, x118, x69, x101); fiat_p521_addcarryx_u64(&x121, &x122, x120, x71, x103); fiat_p521_addcarryx_u64(&x123, &x124, x122, x73, x105); fiat_p521_addcarryx_u64(&x125, &x126, x124, (x74 + (x58 + (x40 + x8))), x107); fiat_p521_mulx_u64(&x127, &x128, (arg1[3]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x129, &x130, 0x0, x113, x127); fiat_p521_addcarryx_u64(&x131, &x132, x130, x115, x128); fiat_p521_addcarryx_u64(&x133, &x134, x132, x117, 0x0); fiat_p521_addcarryx_u64(&x135, &x136, x134, x119, 0x0); fiat_p521_addcarryx_u64(&x137, &x138, x136, x121, 0x0); fiat_p521_addcarryx_u64(&x139, &x140, x138, x123, 0x0); fiat_p521_addcarryx_u64(&x141, &x142, x140, x125, 0x0); fiat_p521_mulx_u64(&x143, &x144, x111, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x145, &x146, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x147, &x148, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x149, &x150, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x151, &x152, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x153, &x154, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x155, &x156, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x157, &x158, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x159, &x160, x111, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x161, &x162, 0x0, x160, x157); fiat_p521_addcarryx_u64(&x163, &x164, x162, x158, x155); fiat_p521_addcarryx_u64(&x165, &x166, x164, x156, x153); fiat_p521_addcarryx_u64(&x167, &x168, x166, x154, x151); fiat_p521_addcarryx_u64(&x169, &x170, x168, x152, x149); fiat_p521_addcarryx_u64(&x171, &x172, x170, x150, x147); fiat_p521_addcarryx_u64(&x173, &x174, x172, x148, x145); fiat_p521_addcarryx_u64(&x175, &x176, x174, x146, x143); fiat_p521_addcarryx_u64(&x177, &x178, 0x0, x111, x159); fiat_p521_addcarryx_u64(&x179, &x180, x178, x129, x161); fiat_p521_addcarryx_u64(&x181, &x182, x180, x131, x163); fiat_p521_addcarryx_u64(&x183, &x184, x182, x133, x165); fiat_p521_addcarryx_u64(&x185, &x186, x184, x135, x167); fiat_p521_addcarryx_u64(&x187, &x188, x186, x137, x169); fiat_p521_addcarryx_u64(&x189, &x190, x188, x139, x171); fiat_p521_addcarryx_u64(&x191, &x192, x190, x141, x173); fiat_p521_addcarryx_u64(&x193, &x194, x192, (x142 + (x126 + (x108 + x76))), x175); fiat_p521_mulx_u64(&x195, &x196, (arg1[4]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x197, &x198, 0x0, x181, x195); fiat_p521_addcarryx_u64(&x199, &x200, x198, x183, x196); fiat_p521_addcarryx_u64(&x201, &x202, x200, x185, 0x0); fiat_p521_addcarryx_u64(&x203, &x204, x202, x187, 0x0); fiat_p521_addcarryx_u64(&x205, &x206, x204, x189, 0x0); fiat_p521_addcarryx_u64(&x207, &x208, x206, x191, 0x0); fiat_p521_addcarryx_u64(&x209, &x210, x208, x193, 0x0); fiat_p521_mulx_u64(&x211, &x212, x179, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x213, &x214, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x215, &x216, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x217, &x218, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x219, &x220, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x221, &x222, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x223, &x224, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x225, &x226, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x227, &x228, x179, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x229, &x230, 0x0, x228, x225); fiat_p521_addcarryx_u64(&x231, &x232, x230, x226, x223); fiat_p521_addcarryx_u64(&x233, &x234, x232, x224, x221); fiat_p521_addcarryx_u64(&x235, &x236, x234, x222, x219); fiat_p521_addcarryx_u64(&x237, &x238, x236, x220, x217); fiat_p521_addcarryx_u64(&x239, &x240, x238, x218, x215); fiat_p521_addcarryx_u64(&x241, &x242, x240, x216, x213); fiat_p521_addcarryx_u64(&x243, &x244, x242, x214, x211); fiat_p521_addcarryx_u64(&x245, &x246, 0x0, x179, x227); fiat_p521_addcarryx_u64(&x247, &x248, x246, x197, x229); fiat_p521_addcarryx_u64(&x249, &x250, x248, x199, x231); fiat_p521_addcarryx_u64(&x251, &x252, x250, x201, x233); fiat_p521_addcarryx_u64(&x253, &x254, x252, x203, x235); fiat_p521_addcarryx_u64(&x255, &x256, x254, x205, x237); fiat_p521_addcarryx_u64(&x257, &x258, x256, x207, x239); fiat_p521_addcarryx_u64(&x259, &x260, x258, x209, x241); fiat_p521_addcarryx_u64(&x261, &x262, x260, (x210 + (x194 + (x176 + x144))), x243); fiat_p521_mulx_u64(&x263, &x264, (arg1[5]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x265, &x266, 0x0, x249, x263); fiat_p521_addcarryx_u64(&x267, &x268, x266, x251, x264); fiat_p521_addcarryx_u64(&x269, &x270, x268, x253, 0x0); fiat_p521_addcarryx_u64(&x271, &x272, x270, x255, 0x0); fiat_p521_addcarryx_u64(&x273, &x274, x272, x257, 0x0); fiat_p521_addcarryx_u64(&x275, &x276, x274, x259, 0x0); fiat_p521_addcarryx_u64(&x277, &x278, x276, x261, 0x0); fiat_p521_mulx_u64(&x279, &x280, x247, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x281, &x282, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x283, &x284, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x285, &x286, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x287, &x288, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x289, &x290, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x291, &x292, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x293, &x294, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x295, &x296, x247, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x297, &x298, 0x0, x296, x293); fiat_p521_addcarryx_u64(&x299, &x300, x298, x294, x291); fiat_p521_addcarryx_u64(&x301, &x302, x300, x292, x289); fiat_p521_addcarryx_u64(&x303, &x304, x302, x290, x287); fiat_p521_addcarryx_u64(&x305, &x306, x304, x288, x285); fiat_p521_addcarryx_u64(&x307, &x308, x306, x286, x283); fiat_p521_addcarryx_u64(&x309, &x310, x308, x284, x281); fiat_p521_addcarryx_u64(&x311, &x312, x310, x282, x279); fiat_p521_addcarryx_u64(&x313, &x314, 0x0, x247, x295); fiat_p521_addcarryx_u64(&x315, &x316, x314, x265, x297); fiat_p521_addcarryx_u64(&x317, &x318, x316, x267, x299); fiat_p521_addcarryx_u64(&x319, &x320, x318, x269, x301); fiat_p521_addcarryx_u64(&x321, &x322, x320, x271, x303); fiat_p521_addcarryx_u64(&x323, &x324, x322, x273, x305); fiat_p521_addcarryx_u64(&x325, &x326, x324, x275, x307); fiat_p521_addcarryx_u64(&x327, &x328, x326, x277, x309); fiat_p521_addcarryx_u64(&x329, &x330, x328, (x278 + (x262 + (x244 + x212))), x311); fiat_p521_mulx_u64(&x331, &x332, (arg1[6]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x333, &x334, 0x0, x317, x331); fiat_p521_addcarryx_u64(&x335, &x336, x334, x319, x332); fiat_p521_addcarryx_u64(&x337, &x338, x336, x321, 0x0); fiat_p521_addcarryx_u64(&x339, &x340, x338, x323, 0x0); fiat_p521_addcarryx_u64(&x341, &x342, x340, x325, 0x0); fiat_p521_addcarryx_u64(&x343, &x344, x342, x327, 0x0); fiat_p521_addcarryx_u64(&x345, &x346, x344, x329, 0x0); fiat_p521_mulx_u64(&x347, &x348, x315, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x349, &x350, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x351, &x352, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x353, &x354, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x355, &x356, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x357, &x358, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x359, &x360, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x361, &x362, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x363, &x364, x315, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x365, &x366, 0x0, x364, x361); fiat_p521_addcarryx_u64(&x367, &x368, x366, x362, x359); fiat_p521_addcarryx_u64(&x369, &x370, x368, x360, x357); fiat_p521_addcarryx_u64(&x371, &x372, x370, x358, x355); fiat_p521_addcarryx_u64(&x373, &x374, x372, x356, x353); fiat_p521_addcarryx_u64(&x375, &x376, x374, x354, x351); fiat_p521_addcarryx_u64(&x377, &x378, x376, x352, x349); fiat_p521_addcarryx_u64(&x379, &x380, x378, x350, x347); fiat_p521_addcarryx_u64(&x381, &x382, 0x0, x315, x363); fiat_p521_addcarryx_u64(&x383, &x384, x382, x333, x365); fiat_p521_addcarryx_u64(&x385, &x386, x384, x335, x367); fiat_p521_addcarryx_u64(&x387, &x388, x386, x337, x369); fiat_p521_addcarryx_u64(&x389, &x390, x388, x339, x371); fiat_p521_addcarryx_u64(&x391, &x392, x390, x341, x373); fiat_p521_addcarryx_u64(&x393, &x394, x392, x343, x375); fiat_p521_addcarryx_u64(&x395, &x396, x394, x345, x377); fiat_p521_addcarryx_u64(&x397, &x398, x396, (x346 + (x330 + (x312 + x280))), x379); fiat_p521_mulx_u64(&x399, &x400, (arg1[7]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x401, &x402, 0x0, x385, x399); fiat_p521_addcarryx_u64(&x403, &x404, x402, x387, x400); fiat_p521_addcarryx_u64(&x405, &x406, x404, x389, 0x0); fiat_p521_addcarryx_u64(&x407, &x408, x406, x391, 0x0); fiat_p521_addcarryx_u64(&x409, &x410, x408, x393, 0x0); fiat_p521_addcarryx_u64(&x411, &x412, x410, x395, 0x0); fiat_p521_addcarryx_u64(&x413, &x414, x412, x397, 0x0); fiat_p521_mulx_u64(&x415, &x416, x383, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x417, &x418, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x419, &x420, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x421, &x422, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x423, &x424, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x425, &x426, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x427, &x428, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x429, &x430, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x431, &x432, x383, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x433, &x434, 0x0, x432, x429); fiat_p521_addcarryx_u64(&x435, &x436, x434, x430, x427); fiat_p521_addcarryx_u64(&x437, &x438, x436, x428, x425); fiat_p521_addcarryx_u64(&x439, &x440, x438, x426, x423); fiat_p521_addcarryx_u64(&x441, &x442, x440, x424, x421); fiat_p521_addcarryx_u64(&x443, &x444, x442, x422, x419); fiat_p521_addcarryx_u64(&x445, &x446, x444, x420, x417); fiat_p521_addcarryx_u64(&x447, &x448, x446, x418, x415); fiat_p521_addcarryx_u64(&x449, &x450, 0x0, x383, x431); fiat_p521_addcarryx_u64(&x451, &x452, x450, x401, x433); fiat_p521_addcarryx_u64(&x453, &x454, x452, x403, x435); fiat_p521_addcarryx_u64(&x455, &x456, x454, x405, x437); fiat_p521_addcarryx_u64(&x457, &x458, x456, x407, x439); fiat_p521_addcarryx_u64(&x459, &x460, x458, x409, x441); fiat_p521_addcarryx_u64(&x461, &x462, x460, x411, x443); fiat_p521_addcarryx_u64(&x463, &x464, x462, x413, x445); fiat_p521_addcarryx_u64(&x465, &x466, x464, (x414 + (x398 + (x380 + x348))), x447); fiat_p521_mulx_u64(&x467, &x468, (arg1[8]), UINT64_C(0x400000000000)); fiat_p521_addcarryx_u64(&x469, &x470, 0x0, x453, x467); fiat_p521_addcarryx_u64(&x471, &x472, x470, x455, x468); fiat_p521_addcarryx_u64(&x473, &x474, x472, x457, 0x0); fiat_p521_addcarryx_u64(&x475, &x476, x474, x459, 0x0); fiat_p521_addcarryx_u64(&x477, &x478, x476, x461, 0x0); fiat_p521_addcarryx_u64(&x479, &x480, x478, x463, 0x0); fiat_p521_addcarryx_u64(&x481, &x482, x480, x465, 0x0); fiat_p521_mulx_u64(&x483, &x484, x451, UINT16_C(0x1ff)); fiat_p521_mulx_u64(&x485, &x486, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x487, &x488, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x489, &x490, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x491, &x492, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x493, &x494, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x495, &x496, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x497, &x498, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_mulx_u64(&x499, &x500, x451, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x501, &x502, 0x0, x500, x497); fiat_p521_addcarryx_u64(&x503, &x504, x502, x498, x495); fiat_p521_addcarryx_u64(&x505, &x506, x504, x496, x493); fiat_p521_addcarryx_u64(&x507, &x508, x506, x494, x491); fiat_p521_addcarryx_u64(&x509, &x510, x508, x492, x489); fiat_p521_addcarryx_u64(&x511, &x512, x510, x490, x487); fiat_p521_addcarryx_u64(&x513, &x514, x512, x488, x485); fiat_p521_addcarryx_u64(&x515, &x516, x514, x486, x483); fiat_p521_addcarryx_u64(&x517, &x518, 0x0, x451, x499); fiat_p521_addcarryx_u64(&x519, &x520, x518, x469, x501); fiat_p521_addcarryx_u64(&x521, &x522, x520, x471, x503); fiat_p521_addcarryx_u64(&x523, &x524, x522, x473, x505); fiat_p521_addcarryx_u64(&x525, &x526, x524, x475, x507); fiat_p521_addcarryx_u64(&x527, &x528, x526, x477, x509); fiat_p521_addcarryx_u64(&x529, &x530, x528, x479, x511); fiat_p521_addcarryx_u64(&x531, &x532, x530, x481, x513); fiat_p521_addcarryx_u64(&x533, &x534, x532, (x482 + (x466 + (x448 + x416))), x515); x535 = (x534 + (x516 + x484)); fiat_p521_subborrowx_u64(&x536, &x537, 0x0, x519, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x538, &x539, x537, x521, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x540, &x541, x539, x523, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x542, &x543, x541, x525, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x544, &x545, x543, x527, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x546, &x547, x545, x529, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x548, &x549, x547, x531, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x550, &x551, x549, x533, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x552, &x553, x551, x535, UINT16_C(0x1ff)); fiat_p521_subborrowx_u64(&x554, &x555, x553, 0x0, 0x0); fiat_p521_cmovznz_u64(&x556, x555, x536, x519); fiat_p521_cmovznz_u64(&x557, x555, x538, x521); fiat_p521_cmovznz_u64(&x558, x555, x540, x523); fiat_p521_cmovznz_u64(&x559, x555, x542, x525); fiat_p521_cmovznz_u64(&x560, x555, x544, x527); fiat_p521_cmovznz_u64(&x561, x555, x546, x529); fiat_p521_cmovznz_u64(&x562, x555, x548, x531); fiat_p521_cmovznz_u64(&x563, x555, x550, x533); fiat_p521_cmovznz_u64(&x564, x555, x552, x535); out1[0] = x556; out1[1] = x557; out1[2] = x558; out1[3] = x559; out1[4] = x560; out1[5] = x561; out1[6] = x562; out1[7] = x563; out1[8] = x564; } /* * The function fiat_p521_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise. * * Preconditions: * 0 ≤ eval arg1 < m * Postconditions: * out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0 * * Input Bounds: * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] * Output Bounds: * out1: [0x0 ~> 0xffffffffffffffff] */ static void fiat_p521_nonzero(uint64_t* out1, const uint64_t arg1[9]) { uint64_t x1; x1 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | ((arg1[3]) | ((arg1[4]) | ((arg1[5]) | ((arg1[6]) | ((arg1[7]) | (arg1[8]))))))))); *out1 = x1; } /* * The function fiat_p521_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_p521_selectznz(uint64_t out1[9], fiat_p521_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_p521_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0])); fiat_p521_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1])); fiat_p521_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2])); fiat_p521_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3])); fiat_p521_cmovznz_u64(&x5, arg1, (arg2[4]), (arg3[4])); fiat_p521_cmovznz_u64(&x6, arg1, (arg2[5]), (arg3[5])); fiat_p521_cmovznz_u64(&x7, arg1, (arg2[6]), (arg3[6])); fiat_p521_cmovznz_u64(&x8, arg1, (arg2[7]), (arg3[7])); fiat_p521_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; } /* * The function fiat_p521_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_p521_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_p521_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_p521_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_p521_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_p521_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_p521_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_p521_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_p521_set_one(fiat_p521_montgomery_domain_field_element out1) { out1[0] = UINT64_C(0x80000000000000); out1[1] = 0x0; out1[2] = 0x0; out1[3] = 0x0; out1[4] = 0x0; out1[5] = 0x0; out1[6] = 0x0; out1[7] = 0x0; out1[8] = 0x0; } /* * The function fiat_p521_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_p521_msat(uint64_t out1[10]) { out1[0] = UINT64_C(0xffffffffffffffff); out1[1] = UINT64_C(0xffffffffffffffff); out1[2] = UINT64_C(0xffffffffffffffff); out1[3] = UINT64_C(0xffffffffffffffff); out1[4] = UINT64_C(0xffffffffffffffff); 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_p521_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_p521_divstep_precomp(uint64_t out1[9]) { out1[0] = 0x0; out1[1] = UINT64_C(0x2000000000000); out1[2] = 0x0; out1[3] = 0x0; out1[4] = 0x0; out1[5] = 0x0; out1[6] = 0x0; out1[7] = 0x0; out1[8] = 0x0; } /* * The function fiat_p521_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_p521_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_p521_uint1 x2; fiat_p521_uint1 x3; uint64_t x4; fiat_p521_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_p521_uint1 x18; uint64_t x19; fiat_p521_uint1 x20; uint64_t x21; fiat_p521_uint1 x22; uint64_t x23; fiat_p521_uint1 x24; uint64_t x25; fiat_p521_uint1 x26; uint64_t x27; fiat_p521_uint1 x28; uint64_t x29; fiat_p521_uint1 x30; uint64_t x31; fiat_p521_uint1 x32; uint64_t x33; fiat_p521_uint1 x34; uint64_t x35; fiat_p521_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_p521_uint1 x57; uint64_t x58; fiat_p521_uint1 x59; uint64_t x60; fiat_p521_uint1 x61; uint64_t x62; fiat_p521_uint1 x63; uint64_t x64; fiat_p521_uint1 x65; uint64_t x66; fiat_p521_uint1 x67; uint64_t x68; fiat_p521_uint1 x69; uint64_t x70; fiat_p521_uint1 x71; uint64_t x72; fiat_p521_uint1 x73; uint64_t x74; fiat_p521_uint1 x75; uint64_t x76; fiat_p521_uint1 x77; uint64_t x78; fiat_p521_uint1 x79; uint64_t x80; fiat_p521_uint1 x81; uint64_t x82; fiat_p521_uint1 x83; uint64_t x84; fiat_p521_uint1 x85; uint64_t x86; fiat_p521_uint1 x87; uint64_t x88; fiat_p521_uint1 x89; uint64_t x90; fiat_p521_uint1 x91; uint64_t x92; fiat_p521_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_p521_uint1 x104; uint64_t x105; fiat_p521_uint1 x106; uint64_t x107; fiat_p521_uint1 x108; uint64_t x109; fiat_p521_uint1 x110; uint64_t x111; fiat_p521_uint1 x112; uint64_t x113; fiat_p521_uint1 x114; uint64_t x115; fiat_p521_uint1 x116; uint64_t x117; fiat_p521_uint1 x118; uint64_t x119; fiat_p521_uint1 x120; uint64_t x121; uint64_t x122; fiat_p521_uint1 x123; uint64_t x124; fiat_p521_uint1 x125; uint64_t x126; fiat_p521_uint1 x127; uint64_t x128; fiat_p521_uint1 x129; uint64_t x130; fiat_p521_uint1 x131; uint64_t x132; fiat_p521_uint1 x133; uint64_t x134; fiat_p521_uint1 x135; uint64_t x136; fiat_p521_uint1 x137; uint64_t x138; fiat_p521_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_p521_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_p521_uint1 x161; uint64_t x162; fiat_p521_uint1 x163; uint64_t x164; fiat_p521_uint1 x165; uint64_t x166; fiat_p521_uint1 x167; uint64_t x168; fiat_p521_uint1 x169; uint64_t x170; fiat_p521_uint1 x171; uint64_t x172; fiat_p521_uint1 x173; uint64_t x174; fiat_p521_uint1 x175; uint64_t x176; fiat_p521_uint1 x177; uint64_t x178; fiat_p521_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_p521_uint1 x190; uint64_t x191; fiat_p521_uint1 x192; uint64_t x193; fiat_p521_uint1 x194; uint64_t x195; fiat_p521_uint1 x196; uint64_t x197; fiat_p521_uint1 x198; uint64_t x199; fiat_p521_uint1 x200; uint64_t x201; fiat_p521_uint1 x202; uint64_t x203; fiat_p521_uint1 x204; uint64_t x205; fiat_p521_uint1 x206; uint64_t x207; fiat_p521_uint1 x208; uint64_t x209; fiat_p521_uint1 x210; uint64_t x211; fiat_p521_uint1 x212; uint64_t x213; fiat_p521_uint1 x214; uint64_t x215; fiat_p521_uint1 x216; uint64_t x217; fiat_p521_uint1 x218; uint64_t x219; fiat_p521_uint1 x220; uint64_t x221; fiat_p521_uint1 x222; uint64_t x223; fiat_p521_uint1 x224; uint64_t x225; fiat_p521_uint1 x226; uint64_t x227; fiat_p521_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_p521_addcarryx_u64(&x1, &x2, 0x0, (~arg1), 0x1); x3 = (fiat_p521_uint1)((fiat_p521_uint1)(x1 >> 63) & (fiat_p521_uint1)((arg3[0]) & 0x1)); fiat_p521_addcarryx_u64(&x4, &x5, 0x0, (~arg1), 0x1); fiat_p521_cmovznz_u64(&x6, x3, arg1, x4); fiat_p521_cmovznz_u64(&x7, x3, (arg2[0]), (arg3[0])); fiat_p521_cmovznz_u64(&x8, x3, (arg2[1]), (arg3[1])); fiat_p521_cmovznz_u64(&x9, x3, (arg2[2]), (arg3[2])); fiat_p521_cmovznz_u64(&x10, x3, (arg2[3]), (arg3[3])); fiat_p521_cmovznz_u64(&x11, x3, (arg2[4]), (arg3[4])); fiat_p521_cmovznz_u64(&x12, x3, (arg2[5]), (arg3[5])); fiat_p521_cmovznz_u64(&x13, x3, (arg2[6]), (arg3[6])); fiat_p521_cmovznz_u64(&x14, x3, (arg2[7]), (arg3[7])); fiat_p521_cmovznz_u64(&x15, x3, (arg2[8]), (arg3[8])); fiat_p521_cmovznz_u64(&x16, x3, (arg2[9]), (arg3[9])); fiat_p521_addcarryx_u64(&x17, &x18, 0x0, 0x1, (~(arg2[0]))); fiat_p521_addcarryx_u64(&x19, &x20, x18, 0x0, (~(arg2[1]))); fiat_p521_addcarryx_u64(&x21, &x22, x20, 0x0, (~(arg2[2]))); fiat_p521_addcarryx_u64(&x23, &x24, x22, 0x0, (~(arg2[3]))); fiat_p521_addcarryx_u64(&x25, &x26, x24, 0x0, (~(arg2[4]))); fiat_p521_addcarryx_u64(&x27, &x28, x26, 0x0, (~(arg2[5]))); fiat_p521_addcarryx_u64(&x29, &x30, x28, 0x0, (~(arg2[6]))); fiat_p521_addcarryx_u64(&x31, &x32, x30, 0x0, (~(arg2[7]))); fiat_p521_addcarryx_u64(&x33, &x34, x32, 0x0, (~(arg2[8]))); fiat_p521_addcarryx_u64(&x35, &x36, x34, 0x0, (~(arg2[9]))); fiat_p521_cmovznz_u64(&x37, x3, (arg3[0]), x17); fiat_p521_cmovznz_u64(&x38, x3, (arg3[1]), x19); fiat_p521_cmovznz_u64(&x39, x3, (arg3[2]), x21); fiat_p521_cmovznz_u64(&x40, x3, (arg3[3]), x23); fiat_p521_cmovznz_u64(&x41, x3, (arg3[4]), x25); fiat_p521_cmovznz_u64(&x42, x3, (arg3[5]), x27); fiat_p521_cmovznz_u64(&x43, x3, (arg3[6]), x29); fiat_p521_cmovznz_u64(&x44, x3, (arg3[7]), x31); fiat_p521_cmovznz_u64(&x45, x3, (arg3[8]), x33); fiat_p521_cmovznz_u64(&x46, x3, (arg3[9]), x35); fiat_p521_cmovznz_u64(&x47, x3, (arg4[0]), (arg5[0])); fiat_p521_cmovznz_u64(&x48, x3, (arg4[1]), (arg5[1])); fiat_p521_cmovznz_u64(&x49, x3, (arg4[2]), (arg5[2])); fiat_p521_cmovznz_u64(&x50, x3, (arg4[3]), (arg5[3])); fiat_p521_cmovznz_u64(&x51, x3, (arg4[4]), (arg5[4])); fiat_p521_cmovznz_u64(&x52, x3, (arg4[5]), (arg5[5])); fiat_p521_cmovznz_u64(&x53, x3, (arg4[6]), (arg5[6])); fiat_p521_cmovznz_u64(&x54, x3, (arg4[7]), (arg5[7])); fiat_p521_cmovznz_u64(&x55, x3, (arg4[8]), (arg5[8])); fiat_p521_addcarryx_u64(&x56, &x57, 0x0, x47, x47); fiat_p521_addcarryx_u64(&x58, &x59, x57, x48, x48); fiat_p521_addcarryx_u64(&x60, &x61, x59, x49, x49); fiat_p521_addcarryx_u64(&x62, &x63, x61, x50, x50); fiat_p521_addcarryx_u64(&x64, &x65, x63, x51, x51); fiat_p521_addcarryx_u64(&x66, &x67, x65, x52, x52); fiat_p521_addcarryx_u64(&x68, &x69, x67, x53, x53); fiat_p521_addcarryx_u64(&x70, &x71, x69, x54, x54); fiat_p521_addcarryx_u64(&x72, &x73, x71, x55, x55); fiat_p521_subborrowx_u64(&x74, &x75, 0x0, x56, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x76, &x77, x75, x58, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x78, &x79, x77, x60, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x80, &x81, x79, x62, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x82, &x83, x81, x64, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x84, &x85, x83, x66, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x86, &x87, x85, x68, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x88, &x89, x87, x70, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x90, &x91, x89, x72, UINT16_C(0x1ff)); fiat_p521_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_p521_subborrowx_u64(&x103, &x104, 0x0, 0x0, x102); fiat_p521_subborrowx_u64(&x105, &x106, x104, 0x0, x101); fiat_p521_subborrowx_u64(&x107, &x108, x106, 0x0, x100); fiat_p521_subborrowx_u64(&x109, &x110, x108, 0x0, x99); fiat_p521_subborrowx_u64(&x111, &x112, x110, 0x0, x98); fiat_p521_subborrowx_u64(&x113, &x114, x112, 0x0, x97); fiat_p521_subborrowx_u64(&x115, &x116, x114, 0x0, x96); fiat_p521_subborrowx_u64(&x117, &x118, x116, 0x0, x95); fiat_p521_subborrowx_u64(&x119, &x120, x118, 0x0, x94); fiat_p521_cmovznz_u64(&x121, x120, 0x0, UINT64_C(0xffffffffffffffff)); fiat_p521_addcarryx_u64(&x122, &x123, 0x0, x103, x121); fiat_p521_addcarryx_u64(&x124, &x125, x123, x105, x121); fiat_p521_addcarryx_u64(&x126, &x127, x125, x107, x121); fiat_p521_addcarryx_u64(&x128, &x129, x127, x109, x121); fiat_p521_addcarryx_u64(&x130, &x131, x129, x111, x121); fiat_p521_addcarryx_u64(&x132, &x133, x131, x113, x121); fiat_p521_addcarryx_u64(&x134, &x135, x133, x115, x121); fiat_p521_addcarryx_u64(&x136, &x137, x135, x117, x121); fiat_p521_addcarryx_u64(&x138, &x139, x137, x119, (x121 & UINT16_C(0x1ff))); fiat_p521_cmovznz_u64(&x140, x3, (arg5[0]), x122); fiat_p521_cmovznz_u64(&x141, x3, (arg5[1]), x124); fiat_p521_cmovznz_u64(&x142, x3, (arg5[2]), x126); fiat_p521_cmovznz_u64(&x143, x3, (arg5[3]), x128); fiat_p521_cmovznz_u64(&x144, x3, (arg5[4]), x130); fiat_p521_cmovznz_u64(&x145, x3, (arg5[5]), x132); fiat_p521_cmovznz_u64(&x146, x3, (arg5[6]), x134); fiat_p521_cmovznz_u64(&x147, x3, (arg5[7]), x136); fiat_p521_cmovznz_u64(&x148, x3, (arg5[8]), x138); x149 = (fiat_p521_uint1)(x37 & 0x1); fiat_p521_cmovznz_u64(&x150, x149, 0x0, x7); fiat_p521_cmovznz_u64(&x151, x149, 0x0, x8); fiat_p521_cmovznz_u64(&x152, x149, 0x0, x9); fiat_p521_cmovznz_u64(&x153, x149, 0x0, x10); fiat_p521_cmovznz_u64(&x154, x149, 0x0, x11); fiat_p521_cmovznz_u64(&x155, x149, 0x0, x12); fiat_p521_cmovznz_u64(&x156, x149, 0x0, x13); fiat_p521_cmovznz_u64(&x157, x149, 0x0, x14); fiat_p521_cmovznz_u64(&x158, x149, 0x0, x15); fiat_p521_cmovznz_u64(&x159, x149, 0x0, x16); fiat_p521_addcarryx_u64(&x160, &x161, 0x0, x37, x150); fiat_p521_addcarryx_u64(&x162, &x163, x161, x38, x151); fiat_p521_addcarryx_u64(&x164, &x165, x163, x39, x152); fiat_p521_addcarryx_u64(&x166, &x167, x165, x40, x153); fiat_p521_addcarryx_u64(&x168, &x169, x167, x41, x154); fiat_p521_addcarryx_u64(&x170, &x171, x169, x42, x155); fiat_p521_addcarryx_u64(&x172, &x173, x171, x43, x156); fiat_p521_addcarryx_u64(&x174, &x175, x173, x44, x157); fiat_p521_addcarryx_u64(&x176, &x177, x175, x45, x158); fiat_p521_addcarryx_u64(&x178, &x179, x177, x46, x159); fiat_p521_cmovznz_u64(&x180, x149, 0x0, x47); fiat_p521_cmovznz_u64(&x181, x149, 0x0, x48); fiat_p521_cmovznz_u64(&x182, x149, 0x0, x49); fiat_p521_cmovznz_u64(&x183, x149, 0x0, x50); fiat_p521_cmovznz_u64(&x184, x149, 0x0, x51); fiat_p521_cmovznz_u64(&x185, x149, 0x0, x52); fiat_p521_cmovznz_u64(&x186, x149, 0x0, x53); fiat_p521_cmovznz_u64(&x187, x149, 0x0, x54); fiat_p521_cmovznz_u64(&x188, x149, 0x0, x55); fiat_p521_addcarryx_u64(&x189, &x190, 0x0, x140, x180); fiat_p521_addcarryx_u64(&x191, &x192, x190, x141, x181); fiat_p521_addcarryx_u64(&x193, &x194, x192, x142, x182); fiat_p521_addcarryx_u64(&x195, &x196, x194, x143, x183); fiat_p521_addcarryx_u64(&x197, &x198, x196, x144, x184); fiat_p521_addcarryx_u64(&x199, &x200, x198, x145, x185); fiat_p521_addcarryx_u64(&x201, &x202, x200, x146, x186); fiat_p521_addcarryx_u64(&x203, &x204, x202, x147, x187); fiat_p521_addcarryx_u64(&x205, &x206, x204, x148, x188); fiat_p521_subborrowx_u64(&x207, &x208, 0x0, x189, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x209, &x210, x208, x191, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x211, &x212, x210, x193, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x213, &x214, x212, x195, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x215, &x216, x214, x197, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x217, &x218, x216, x199, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x219, &x220, x218, x201, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x221, &x222, x220, x203, UINT64_C(0xffffffffffffffff)); fiat_p521_subborrowx_u64(&x223, &x224, x222, x205, UINT16_C(0x1ff)); fiat_p521_subborrowx_u64(&x225, &x226, x224, x206, 0x0); fiat_p521_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_p521_cmovznz_u64(&x239, x93, x74, x56); fiat_p521_cmovznz_u64(&x240, x93, x76, x58); fiat_p521_cmovznz_u64(&x241, x93, x78, x60); fiat_p521_cmovznz_u64(&x242, x93, x80, x62); fiat_p521_cmovznz_u64(&x243, x93, x82, x64); fiat_p521_cmovznz_u64(&x244, x93, x84, x66); fiat_p521_cmovznz_u64(&x245, x93, x86, x68); fiat_p521_cmovznz_u64(&x246, x93, x88, x70); fiat_p521_cmovznz_u64(&x247, x93, x90, x72); fiat_p521_cmovznz_u64(&x248, x226, x207, x189); fiat_p521_cmovznz_u64(&x249, x226, x209, x191); fiat_p521_cmovznz_u64(&x250, x226, x211, x193); fiat_p521_cmovznz_u64(&x251, x226, x213, x195); fiat_p521_cmovznz_u64(&x252, x226, x215, x197); fiat_p521_cmovznz_u64(&x253, x226, x217, x199); fiat_p521_cmovznz_u64(&x254, x226, x219, x201); fiat_p521_cmovznz_u64(&x255, x226, x221, x203); fiat_p521_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; }