6619 lines
213 KiB
C
6619 lines
213 KiB
C
/* 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 <stdint.h>
|
|
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;
|
|
}
|