Path: blob/main/crypto/krb5/src/plugins/preauth/spake/edwards25519_fiat.h
34889 views
#if defined(BORINGSSL_CURVE25519_64BIT)12/* Autogenerated: 'src/ExtractionOCaml/unsaturated_solinas' --inline --static --use-value-barrier 25519 64 '(auto)' '2^255 - 19' carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes relax carry_scmul121666 */3/* curve description: 25519 */4/* machine_wordsize = 64 (from "64") */5/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, relax, carry_scmul121666 */6/* n = 5 (from "(auto)") */7/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */8/* tight_bounds_multiplier = 1 (from "") */9/* */10/* Computed values: */11/* carry_chain = [0, 1, 2, 3, 4, 0, 1] */12/* eval z = z[0] + (z[1] << 51) + (z[2] << 102) + (z[3] << 153) + (z[4] << 204) */13/* 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) */14/* balance = [0xfffffffffffda, 0xffffffffffffe, 0xffffffffffffe, 0xffffffffffffe, 0xffffffffffffe] */1516#include <stdint.h>17typedef unsigned char fiat_25519_uint1;18typedef signed char fiat_25519_int1;19#if defined(__GNUC__) || defined(__clang__)20# define FIAT_25519_FIAT_EXTENSION __extension__21# define FIAT_25519_FIAT_INLINE __inline__22#else23# define FIAT_25519_FIAT_EXTENSION24# define FIAT_25519_FIAT_INLINE25#endif2627FIAT_25519_FIAT_EXTENSION typedef int128_t fiat_25519_int128;28FIAT_25519_FIAT_EXTENSION typedef uint128_t fiat_25519_uint128;2930/* The type fiat_25519_loose_field_element is a field element with loose bounds. */31/* Bounds: [[0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000], [0x0 ~> 0x18000000000000]] */32typedef uint64_t fiat_25519_loose_field_element[5];3334/* The type fiat_25519_tight_field_element is a field element with tight bounds. */35/* Bounds: [[0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000], [0x0 ~> 0x8000000000000]] */36typedef uint64_t fiat_25519_tight_field_element[5];3738#if (-1 & 3) != 339#error "This code only works on a two's complement system"40#endif4142#if !defined(FIAT_25519_NO_ASM) && (defined(__GNUC__) || defined(__clang__))43static __inline__ uint64_t fiat_25519_value_barrier_u64(uint64_t a) {44__asm__("" : "+r"(a) : /* no inputs */);45return a;46}47#else48# define fiat_25519_value_barrier_u64(x) (x)49#endif505152/*53* The function fiat_25519_addcarryx_u51 is an addition with carry.54*55* Postconditions:56* out1 = (arg1 + arg2 + arg3) mod 2^5157* out2 = ⌊(arg1 + arg2 + arg3) / 2^51⌋58*59* Input Bounds:60* arg1: [0x0 ~> 0x1]61* arg2: [0x0 ~> 0x7ffffffffffff]62* arg3: [0x0 ~> 0x7ffffffffffff]63* Output Bounds:64* out1: [0x0 ~> 0x7ffffffffffff]65* out2: [0x0 ~> 0x1]66*/67static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) {68uint64_t x1;69uint64_t x2;70fiat_25519_uint1 x3;71x1 = ((arg1 + arg2) + arg3);72x2 = (x1 & UINT64_C(0x7ffffffffffff));73x3 = (fiat_25519_uint1)(x1 >> 51);74*out1 = x2;75*out2 = x3;76}7778/*79* The function fiat_25519_subborrowx_u51 is a subtraction with borrow.80*81* Postconditions:82* out1 = (-arg1 + arg2 + -arg3) mod 2^5183* out2 = -⌊(-arg1 + arg2 + -arg3) / 2^51⌋84*85* Input Bounds:86* arg1: [0x0 ~> 0x1]87* arg2: [0x0 ~> 0x7ffffffffffff]88* arg3: [0x0 ~> 0x7ffffffffffff]89* Output Bounds:90* out1: [0x0 ~> 0x7ffffffffffff]91* out2: [0x0 ~> 0x1]92*/93static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u51(uint64_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) {94int64_t x1;95fiat_25519_int1 x2;96uint64_t x3;97x1 = ((int64_t)(arg2 - (int64_t)arg1) - (int64_t)arg3);98x2 = (fiat_25519_int1)(x1 >> 51);99x3 = (x1 & UINT64_C(0x7ffffffffffff));100*out1 = x3;101*out2 = (fiat_25519_uint1)(0x0 - x2);102}103104/*105* The function fiat_25519_cmovznz_u64 is a single-word conditional move.106*107* Postconditions:108* out1 = (if arg1 = 0 then arg2 else arg3)109*110* Input Bounds:111* arg1: [0x0 ~> 0x1]112* arg2: [0x0 ~> 0xffffffffffffffff]113* arg3: [0x0 ~> 0xffffffffffffffff]114* Output Bounds:115* out1: [0x0 ~> 0xffffffffffffffff]116*/117static FIAT_25519_FIAT_INLINE void fiat_25519_cmovznz_u64(uint64_t* out1, fiat_25519_uint1 arg1, uint64_t arg2, uint64_t arg3) {118fiat_25519_uint1 x1;119uint64_t x2;120uint64_t x3;121x1 = (!(!arg1));122x2 = ((fiat_25519_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff));123x3 = ((fiat_25519_value_barrier_u64(x2) & arg3) | (fiat_25519_value_barrier_u64((~x2)) & arg2));124*out1 = x3;125}126127/*128* The function fiat_25519_carry_mul multiplies two field elements and reduces the result.129*130* Postconditions:131* eval out1 mod m = (eval arg1 * eval arg2) mod m132*133*/134static FIAT_25519_FIAT_INLINE void fiat_25519_carry_mul(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1, const fiat_25519_loose_field_element arg2) {135fiat_25519_uint128 x1;136fiat_25519_uint128 x2;137fiat_25519_uint128 x3;138fiat_25519_uint128 x4;139fiat_25519_uint128 x5;140fiat_25519_uint128 x6;141fiat_25519_uint128 x7;142fiat_25519_uint128 x8;143fiat_25519_uint128 x9;144fiat_25519_uint128 x10;145fiat_25519_uint128 x11;146fiat_25519_uint128 x12;147fiat_25519_uint128 x13;148fiat_25519_uint128 x14;149fiat_25519_uint128 x15;150fiat_25519_uint128 x16;151fiat_25519_uint128 x17;152fiat_25519_uint128 x18;153fiat_25519_uint128 x19;154fiat_25519_uint128 x20;155fiat_25519_uint128 x21;156fiat_25519_uint128 x22;157fiat_25519_uint128 x23;158fiat_25519_uint128 x24;159fiat_25519_uint128 x25;160fiat_25519_uint128 x26;161uint64_t x27;162uint64_t x28;163fiat_25519_uint128 x29;164fiat_25519_uint128 x30;165fiat_25519_uint128 x31;166fiat_25519_uint128 x32;167fiat_25519_uint128 x33;168uint64_t x34;169uint64_t x35;170fiat_25519_uint128 x36;171uint64_t x37;172uint64_t x38;173fiat_25519_uint128 x39;174uint64_t x40;175uint64_t x41;176fiat_25519_uint128 x42;177uint64_t x43;178uint64_t x44;179uint64_t x45;180uint64_t x46;181uint64_t x47;182uint64_t x48;183uint64_t x49;184fiat_25519_uint1 x50;185uint64_t x51;186uint64_t x52;187x1 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[4]) * UINT8_C(0x13)));188x2 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[3]) * UINT8_C(0x13)));189x3 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[2]) * UINT8_C(0x13)));190x4 = ((fiat_25519_uint128)(arg1[4]) * ((arg2[1]) * UINT8_C(0x13)));191x5 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[4]) * UINT8_C(0x13)));192x6 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[3]) * UINT8_C(0x13)));193x7 = ((fiat_25519_uint128)(arg1[3]) * ((arg2[2]) * UINT8_C(0x13)));194x8 = ((fiat_25519_uint128)(arg1[2]) * ((arg2[4]) * UINT8_C(0x13)));195x9 = ((fiat_25519_uint128)(arg1[2]) * ((arg2[3]) * UINT8_C(0x13)));196x10 = ((fiat_25519_uint128)(arg1[1]) * ((arg2[4]) * UINT8_C(0x13)));197x11 = ((fiat_25519_uint128)(arg1[4]) * (arg2[0]));198x12 = ((fiat_25519_uint128)(arg1[3]) * (arg2[1]));199x13 = ((fiat_25519_uint128)(arg1[3]) * (arg2[0]));200x14 = ((fiat_25519_uint128)(arg1[2]) * (arg2[2]));201x15 = ((fiat_25519_uint128)(arg1[2]) * (arg2[1]));202x16 = ((fiat_25519_uint128)(arg1[2]) * (arg2[0]));203x17 = ((fiat_25519_uint128)(arg1[1]) * (arg2[3]));204x18 = ((fiat_25519_uint128)(arg1[1]) * (arg2[2]));205x19 = ((fiat_25519_uint128)(arg1[1]) * (arg2[1]));206x20 = ((fiat_25519_uint128)(arg1[1]) * (arg2[0]));207x21 = ((fiat_25519_uint128)(arg1[0]) * (arg2[4]));208x22 = ((fiat_25519_uint128)(arg1[0]) * (arg2[3]));209x23 = ((fiat_25519_uint128)(arg1[0]) * (arg2[2]));210x24 = ((fiat_25519_uint128)(arg1[0]) * (arg2[1]));211x25 = ((fiat_25519_uint128)(arg1[0]) * (arg2[0]));212x26 = (x25 + (x10 + (x9 + (x7 + x4))));213x27 = (uint64_t)(x26 >> 51);214x28 = (uint64_t)(x26 & UINT64_C(0x7ffffffffffff));215x29 = (x21 + (x17 + (x14 + (x12 + x11))));216x30 = (x22 + (x18 + (x15 + (x13 + x1))));217x31 = (x23 + (x19 + (x16 + (x5 + x2))));218x32 = (x24 + (x20 + (x8 + (x6 + x3))));219x33 = (x27 + x32);220x34 = (uint64_t)(x33 >> 51);221x35 = (uint64_t)(x33 & UINT64_C(0x7ffffffffffff));222x36 = (x34 + x31);223x37 = (uint64_t)(x36 >> 51);224x38 = (uint64_t)(x36 & UINT64_C(0x7ffffffffffff));225x39 = (x37 + x30);226x40 = (uint64_t)(x39 >> 51);227x41 = (uint64_t)(x39 & UINT64_C(0x7ffffffffffff));228x42 = (x40 + x29);229x43 = (uint64_t)(x42 >> 51);230x44 = (uint64_t)(x42 & UINT64_C(0x7ffffffffffff));231x45 = (x43 * UINT8_C(0x13));232x46 = (x28 + x45);233x47 = (x46 >> 51);234x48 = (x46 & UINT64_C(0x7ffffffffffff));235x49 = (x47 + x35);236x50 = (fiat_25519_uint1)(x49 >> 51);237x51 = (x49 & UINT64_C(0x7ffffffffffff));238x52 = (x50 + x38);239out1[0] = x48;240out1[1] = x51;241out1[2] = x52;242out1[3] = x41;243out1[4] = x44;244}245246/*247* The function fiat_25519_carry_square squares a field element and reduces the result.248*249* Postconditions:250* eval out1 mod m = (eval arg1 * eval arg1) mod m251*252*/253static FIAT_25519_FIAT_INLINE void fiat_25519_carry_square(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) {254uint64_t x1;255uint64_t x2;256uint64_t x3;257uint64_t x4;258uint64_t x5;259uint64_t x6;260uint64_t x7;261uint64_t x8;262fiat_25519_uint128 x9;263fiat_25519_uint128 x10;264fiat_25519_uint128 x11;265fiat_25519_uint128 x12;266fiat_25519_uint128 x13;267fiat_25519_uint128 x14;268fiat_25519_uint128 x15;269fiat_25519_uint128 x16;270fiat_25519_uint128 x17;271fiat_25519_uint128 x18;272fiat_25519_uint128 x19;273fiat_25519_uint128 x20;274fiat_25519_uint128 x21;275fiat_25519_uint128 x22;276fiat_25519_uint128 x23;277fiat_25519_uint128 x24;278uint64_t x25;279uint64_t x26;280fiat_25519_uint128 x27;281fiat_25519_uint128 x28;282fiat_25519_uint128 x29;283fiat_25519_uint128 x30;284fiat_25519_uint128 x31;285uint64_t x32;286uint64_t x33;287fiat_25519_uint128 x34;288uint64_t x35;289uint64_t x36;290fiat_25519_uint128 x37;291uint64_t x38;292uint64_t x39;293fiat_25519_uint128 x40;294uint64_t x41;295uint64_t x42;296uint64_t x43;297uint64_t x44;298uint64_t x45;299uint64_t x46;300uint64_t x47;301fiat_25519_uint1 x48;302uint64_t x49;303uint64_t x50;304x1 = ((arg1[4]) * UINT8_C(0x13));305x2 = (x1 * 0x2);306x3 = ((arg1[4]) * 0x2);307x4 = ((arg1[3]) * UINT8_C(0x13));308x5 = (x4 * 0x2);309x6 = ((arg1[3]) * 0x2);310x7 = ((arg1[2]) * 0x2);311x8 = ((arg1[1]) * 0x2);312x9 = ((fiat_25519_uint128)(arg1[4]) * x1);313x10 = ((fiat_25519_uint128)(arg1[3]) * x2);314x11 = ((fiat_25519_uint128)(arg1[3]) * x4);315x12 = ((fiat_25519_uint128)(arg1[2]) * x2);316x13 = ((fiat_25519_uint128)(arg1[2]) * x5);317x14 = ((fiat_25519_uint128)(arg1[2]) * (arg1[2]));318x15 = ((fiat_25519_uint128)(arg1[1]) * x2);319x16 = ((fiat_25519_uint128)(arg1[1]) * x6);320x17 = ((fiat_25519_uint128)(arg1[1]) * x7);321x18 = ((fiat_25519_uint128)(arg1[1]) * (arg1[1]));322x19 = ((fiat_25519_uint128)(arg1[0]) * x3);323x20 = ((fiat_25519_uint128)(arg1[0]) * x6);324x21 = ((fiat_25519_uint128)(arg1[0]) * x7);325x22 = ((fiat_25519_uint128)(arg1[0]) * x8);326x23 = ((fiat_25519_uint128)(arg1[0]) * (arg1[0]));327x24 = (x23 + (x15 + x13));328x25 = (uint64_t)(x24 >> 51);329x26 = (uint64_t)(x24 & UINT64_C(0x7ffffffffffff));330x27 = (x19 + (x16 + x14));331x28 = (x20 + (x17 + x9));332x29 = (x21 + (x18 + x10));333x30 = (x22 + (x12 + x11));334x31 = (x25 + x30);335x32 = (uint64_t)(x31 >> 51);336x33 = (uint64_t)(x31 & UINT64_C(0x7ffffffffffff));337x34 = (x32 + x29);338x35 = (uint64_t)(x34 >> 51);339x36 = (uint64_t)(x34 & UINT64_C(0x7ffffffffffff));340x37 = (x35 + x28);341x38 = (uint64_t)(x37 >> 51);342x39 = (uint64_t)(x37 & UINT64_C(0x7ffffffffffff));343x40 = (x38 + x27);344x41 = (uint64_t)(x40 >> 51);345x42 = (uint64_t)(x40 & UINT64_C(0x7ffffffffffff));346x43 = (x41 * UINT8_C(0x13));347x44 = (x26 + x43);348x45 = (x44 >> 51);349x46 = (x44 & UINT64_C(0x7ffffffffffff));350x47 = (x45 + x33);351x48 = (fiat_25519_uint1)(x47 >> 51);352x49 = (x47 & UINT64_C(0x7ffffffffffff));353x50 = (x48 + x36);354out1[0] = x46;355out1[1] = x49;356out1[2] = x50;357out1[3] = x39;358out1[4] = x42;359}360361/*362* The function fiat_25519_carry reduces a field element.363*364* Postconditions:365* eval out1 mod m = eval arg1 mod m366*367*/368static FIAT_25519_FIAT_INLINE void fiat_25519_carry(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) {369uint64_t x1;370uint64_t x2;371uint64_t x3;372uint64_t x4;373uint64_t x5;374uint64_t x6;375uint64_t x7;376uint64_t x8;377uint64_t x9;378uint64_t x10;379uint64_t x11;380uint64_t x12;381x1 = (arg1[0]);382x2 = ((x1 >> 51) + (arg1[1]));383x3 = ((x2 >> 51) + (arg1[2]));384x4 = ((x3 >> 51) + (arg1[3]));385x5 = ((x4 >> 51) + (arg1[4]));386x6 = ((x1 & UINT64_C(0x7ffffffffffff)) + ((x5 >> 51) * UINT8_C(0x13)));387x7 = ((fiat_25519_uint1)(x6 >> 51) + (x2 & UINT64_C(0x7ffffffffffff)));388x8 = (x6 & UINT64_C(0x7ffffffffffff));389x9 = (x7 & UINT64_C(0x7ffffffffffff));390x10 = ((fiat_25519_uint1)(x7 >> 51) + (x3 & UINT64_C(0x7ffffffffffff)));391x11 = (x4 & UINT64_C(0x7ffffffffffff));392x12 = (x5 & UINT64_C(0x7ffffffffffff));393out1[0] = x8;394out1[1] = x9;395out1[2] = x10;396out1[3] = x11;397out1[4] = x12;398}399400/*401* The function fiat_25519_add adds two field elements.402*403* Postconditions:404* eval out1 mod m = (eval arg1 + eval arg2) mod m405*406*/407static FIAT_25519_FIAT_INLINE void fiat_25519_add(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) {408uint64_t x1;409uint64_t x2;410uint64_t x3;411uint64_t x4;412uint64_t x5;413x1 = ((arg1[0]) + (arg2[0]));414x2 = ((arg1[1]) + (arg2[1]));415x3 = ((arg1[2]) + (arg2[2]));416x4 = ((arg1[3]) + (arg2[3]));417x5 = ((arg1[4]) + (arg2[4]));418out1[0] = x1;419out1[1] = x2;420out1[2] = x3;421out1[3] = x4;422out1[4] = x5;423}424425/*426* The function fiat_25519_sub subtracts two field elements.427*428* Postconditions:429* eval out1 mod m = (eval arg1 - eval arg2) mod m430*431*/432static FIAT_25519_FIAT_INLINE void fiat_25519_sub(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) {433uint64_t x1;434uint64_t x2;435uint64_t x3;436uint64_t x4;437uint64_t x5;438x1 = ((UINT64_C(0xfffffffffffda) + (arg1[0])) - (arg2[0]));439x2 = ((UINT64_C(0xffffffffffffe) + (arg1[1])) - (arg2[1]));440x3 = ((UINT64_C(0xffffffffffffe) + (arg1[2])) - (arg2[2]));441x4 = ((UINT64_C(0xffffffffffffe) + (arg1[3])) - (arg2[3]));442x5 = ((UINT64_C(0xffffffffffffe) + (arg1[4])) - (arg2[4]));443out1[0] = x1;444out1[1] = x2;445out1[2] = x3;446out1[3] = x4;447out1[4] = x5;448}449450/*451* The function fiat_25519_opp negates a field element.452*453* Postconditions:454* eval out1 mod m = -eval arg1 mod m455*456*/457static FIAT_25519_FIAT_INLINE void fiat_25519_opp(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) {458uint64_t x1;459uint64_t x2;460uint64_t x3;461uint64_t x4;462uint64_t x5;463x1 = (UINT64_C(0xfffffffffffda) - (arg1[0]));464x2 = (UINT64_C(0xffffffffffffe) - (arg1[1]));465x3 = (UINT64_C(0xffffffffffffe) - (arg1[2]));466x4 = (UINT64_C(0xffffffffffffe) - (arg1[3]));467x5 = (UINT64_C(0xffffffffffffe) - (arg1[4]));468out1[0] = x1;469out1[1] = x2;470out1[2] = x3;471out1[3] = x4;472out1[4] = x5;473}474475/*476* The function fiat_25519_to_bytes serializes a field element to bytes in little-endian order.477*478* Postconditions:479* out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31]480*481* Output Bounds:482* 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 ~> 0x7f]]483*/484static FIAT_25519_FIAT_INLINE void fiat_25519_to_bytes(uint8_t out1[32], const fiat_25519_tight_field_element arg1) {485uint64_t x1;486fiat_25519_uint1 x2;487uint64_t x3;488fiat_25519_uint1 x4;489uint64_t x5;490fiat_25519_uint1 x6;491uint64_t x7;492fiat_25519_uint1 x8;493uint64_t x9;494fiat_25519_uint1 x10;495uint64_t x11;496uint64_t x12;497fiat_25519_uint1 x13;498uint64_t x14;499fiat_25519_uint1 x15;500uint64_t x16;501fiat_25519_uint1 x17;502uint64_t x18;503fiat_25519_uint1 x19;504uint64_t x20;505fiat_25519_uint1 x21;506uint64_t x22;507uint64_t x23;508uint64_t x24;509uint64_t x25;510uint8_t x26;511uint64_t x27;512uint8_t x28;513uint64_t x29;514uint8_t x30;515uint64_t x31;516uint8_t x32;517uint64_t x33;518uint8_t x34;519uint64_t x35;520uint8_t x36;521uint8_t x37;522uint64_t x38;523uint8_t x39;524uint64_t x40;525uint8_t x41;526uint64_t x42;527uint8_t x43;528uint64_t x44;529uint8_t x45;530uint64_t x46;531uint8_t x47;532uint64_t x48;533uint8_t x49;534uint8_t x50;535uint64_t x51;536uint8_t x52;537uint64_t x53;538uint8_t x54;539uint64_t x55;540uint8_t x56;541uint64_t x57;542uint8_t x58;543uint64_t x59;544uint8_t x60;545uint64_t x61;546uint8_t x62;547uint64_t x63;548uint8_t x64;549fiat_25519_uint1 x65;550uint64_t x66;551uint8_t x67;552uint64_t x68;553uint8_t x69;554uint64_t x70;555uint8_t x71;556uint64_t x72;557uint8_t x73;558uint64_t x74;559uint8_t x75;560uint64_t x76;561uint8_t x77;562uint8_t x78;563uint64_t x79;564uint8_t x80;565uint64_t x81;566uint8_t x82;567uint64_t x83;568uint8_t x84;569uint64_t x85;570uint8_t x86;571uint64_t x87;572uint8_t x88;573uint64_t x89;574uint8_t x90;575uint8_t x91;576fiat_25519_subborrowx_u51(&x1, &x2, 0x0, (arg1[0]), UINT64_C(0x7ffffffffffed));577fiat_25519_subborrowx_u51(&x3, &x4, x2, (arg1[1]), UINT64_C(0x7ffffffffffff));578fiat_25519_subborrowx_u51(&x5, &x6, x4, (arg1[2]), UINT64_C(0x7ffffffffffff));579fiat_25519_subborrowx_u51(&x7, &x8, x6, (arg1[3]), UINT64_C(0x7ffffffffffff));580fiat_25519_subborrowx_u51(&x9, &x10, x8, (arg1[4]), UINT64_C(0x7ffffffffffff));581fiat_25519_cmovznz_u64(&x11, x10, 0x0, UINT64_C(0xffffffffffffffff));582fiat_25519_addcarryx_u51(&x12, &x13, 0x0, x1, (x11 & UINT64_C(0x7ffffffffffed)));583fiat_25519_addcarryx_u51(&x14, &x15, x13, x3, (x11 & UINT64_C(0x7ffffffffffff)));584fiat_25519_addcarryx_u51(&x16, &x17, x15, x5, (x11 & UINT64_C(0x7ffffffffffff)));585fiat_25519_addcarryx_u51(&x18, &x19, x17, x7, (x11 & UINT64_C(0x7ffffffffffff)));586fiat_25519_addcarryx_u51(&x20, &x21, x19, x9, (x11 & UINT64_C(0x7ffffffffffff)));587x22 = (x20 << 4);588x23 = (x18 * (uint64_t)0x2);589x24 = (x16 << 6);590x25 = (x14 << 3);591x26 = (uint8_t)(x12 & UINT8_C(0xff));592x27 = (x12 >> 8);593x28 = (uint8_t)(x27 & UINT8_C(0xff));594x29 = (x27 >> 8);595x30 = (uint8_t)(x29 & UINT8_C(0xff));596x31 = (x29 >> 8);597x32 = (uint8_t)(x31 & UINT8_C(0xff));598x33 = (x31 >> 8);599x34 = (uint8_t)(x33 & UINT8_C(0xff));600x35 = (x33 >> 8);601x36 = (uint8_t)(x35 & UINT8_C(0xff));602x37 = (uint8_t)(x35 >> 8);603x38 = (x25 + (uint64_t)x37);604x39 = (uint8_t)(x38 & UINT8_C(0xff));605x40 = (x38 >> 8);606x41 = (uint8_t)(x40 & UINT8_C(0xff));607x42 = (x40 >> 8);608x43 = (uint8_t)(x42 & UINT8_C(0xff));609x44 = (x42 >> 8);610x45 = (uint8_t)(x44 & UINT8_C(0xff));611x46 = (x44 >> 8);612x47 = (uint8_t)(x46 & UINT8_C(0xff));613x48 = (x46 >> 8);614x49 = (uint8_t)(x48 & UINT8_C(0xff));615x50 = (uint8_t)(x48 >> 8);616x51 = (x24 + (uint64_t)x50);617x52 = (uint8_t)(x51 & UINT8_C(0xff));618x53 = (x51 >> 8);619x54 = (uint8_t)(x53 & UINT8_C(0xff));620x55 = (x53 >> 8);621x56 = (uint8_t)(x55 & UINT8_C(0xff));622x57 = (x55 >> 8);623x58 = (uint8_t)(x57 & UINT8_C(0xff));624x59 = (x57 >> 8);625x60 = (uint8_t)(x59 & UINT8_C(0xff));626x61 = (x59 >> 8);627x62 = (uint8_t)(x61 & UINT8_C(0xff));628x63 = (x61 >> 8);629x64 = (uint8_t)(x63 & UINT8_C(0xff));630x65 = (fiat_25519_uint1)(x63 >> 8);631x66 = (x23 + (uint64_t)x65);632x67 = (uint8_t)(x66 & UINT8_C(0xff));633x68 = (x66 >> 8);634x69 = (uint8_t)(x68 & UINT8_C(0xff));635x70 = (x68 >> 8);636x71 = (uint8_t)(x70 & UINT8_C(0xff));637x72 = (x70 >> 8);638x73 = (uint8_t)(x72 & UINT8_C(0xff));639x74 = (x72 >> 8);640x75 = (uint8_t)(x74 & UINT8_C(0xff));641x76 = (x74 >> 8);642x77 = (uint8_t)(x76 & UINT8_C(0xff));643x78 = (uint8_t)(x76 >> 8);644x79 = (x22 + (uint64_t)x78);645x80 = (uint8_t)(x79 & UINT8_C(0xff));646x81 = (x79 >> 8);647x82 = (uint8_t)(x81 & UINT8_C(0xff));648x83 = (x81 >> 8);649x84 = (uint8_t)(x83 & UINT8_C(0xff));650x85 = (x83 >> 8);651x86 = (uint8_t)(x85 & UINT8_C(0xff));652x87 = (x85 >> 8);653x88 = (uint8_t)(x87 & UINT8_C(0xff));654x89 = (x87 >> 8);655x90 = (uint8_t)(x89 & UINT8_C(0xff));656x91 = (uint8_t)(x89 >> 8);657out1[0] = x26;658out1[1] = x28;659out1[2] = x30;660out1[3] = x32;661out1[4] = x34;662out1[5] = x36;663out1[6] = x39;664out1[7] = x41;665out1[8] = x43;666out1[9] = x45;667out1[10] = x47;668out1[11] = x49;669out1[12] = x52;670out1[13] = x54;671out1[14] = x56;672out1[15] = x58;673out1[16] = x60;674out1[17] = x62;675out1[18] = x64;676out1[19] = x67;677out1[20] = x69;678out1[21] = x71;679out1[22] = x73;680out1[23] = x75;681out1[24] = x77;682out1[25] = x80;683out1[26] = x82;684out1[27] = x84;685out1[28] = x86;686out1[29] = x88;687out1[30] = x90;688out1[31] = x91;689}690691/*692* The function fiat_25519_from_bytes deserializes a field element from bytes in little-endian order.693*694* Postconditions:695* eval out1 mod m = bytes_eval arg1 mod m696*697* Input Bounds:698* 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 ~> 0x7f]]699*/700static FIAT_25519_FIAT_INLINE void fiat_25519_from_bytes(fiat_25519_tight_field_element out1, const uint8_t arg1[32]) {701uint64_t x1;702uint64_t x2;703uint64_t x3;704uint64_t x4;705uint64_t x5;706uint64_t x6;707uint64_t x7;708uint64_t x8;709uint64_t x9;710uint64_t x10;711uint64_t x11;712uint64_t x12;713uint64_t x13;714uint64_t x14;715uint64_t x15;716uint64_t x16;717uint64_t x17;718uint64_t x18;719uint64_t x19;720uint64_t x20;721uint64_t x21;722uint64_t x22;723uint64_t x23;724uint64_t x24;725uint64_t x25;726uint64_t x26;727uint64_t x27;728uint64_t x28;729uint64_t x29;730uint64_t x30;731uint64_t x31;732uint8_t x32;733uint64_t x33;734uint64_t x34;735uint64_t x35;736uint64_t x36;737uint64_t x37;738uint64_t x38;739uint64_t x39;740uint8_t x40;741uint64_t x41;742uint64_t x42;743uint64_t x43;744uint64_t x44;745uint64_t x45;746uint64_t x46;747uint64_t x47;748uint8_t x48;749uint64_t x49;750uint64_t x50;751uint64_t x51;752uint64_t x52;753uint64_t x53;754uint64_t x54;755uint64_t x55;756uint64_t x56;757uint8_t x57;758uint64_t x58;759uint64_t x59;760uint64_t x60;761uint64_t x61;762uint64_t x62;763uint64_t x63;764uint64_t x64;765uint8_t x65;766uint64_t x66;767uint64_t x67;768uint64_t x68;769uint64_t x69;770uint64_t x70;771uint64_t x71;772x1 = ((uint64_t)(arg1[31]) << 44);773x2 = ((uint64_t)(arg1[30]) << 36);774x3 = ((uint64_t)(arg1[29]) << 28);775x4 = ((uint64_t)(arg1[28]) << 20);776x5 = ((uint64_t)(arg1[27]) << 12);777x6 = ((uint64_t)(arg1[26]) << 4);778x7 = ((uint64_t)(arg1[25]) << 47);779x8 = ((uint64_t)(arg1[24]) << 39);780x9 = ((uint64_t)(arg1[23]) << 31);781x10 = ((uint64_t)(arg1[22]) << 23);782x11 = ((uint64_t)(arg1[21]) << 15);783x12 = ((uint64_t)(arg1[20]) << 7);784x13 = ((uint64_t)(arg1[19]) << 50);785x14 = ((uint64_t)(arg1[18]) << 42);786x15 = ((uint64_t)(arg1[17]) << 34);787x16 = ((uint64_t)(arg1[16]) << 26);788x17 = ((uint64_t)(arg1[15]) << 18);789x18 = ((uint64_t)(arg1[14]) << 10);790x19 = ((uint64_t)(arg1[13]) << 2);791x20 = ((uint64_t)(arg1[12]) << 45);792x21 = ((uint64_t)(arg1[11]) << 37);793x22 = ((uint64_t)(arg1[10]) << 29);794x23 = ((uint64_t)(arg1[9]) << 21);795x24 = ((uint64_t)(arg1[8]) << 13);796x25 = ((uint64_t)(arg1[7]) << 5);797x26 = ((uint64_t)(arg1[6]) << 48);798x27 = ((uint64_t)(arg1[5]) << 40);799x28 = ((uint64_t)(arg1[4]) << 32);800x29 = ((uint64_t)(arg1[3]) << 24);801x30 = ((uint64_t)(arg1[2]) << 16);802x31 = ((uint64_t)(arg1[1]) << 8);803x32 = (arg1[0]);804x33 = (x31 + (uint64_t)x32);805x34 = (x30 + x33);806x35 = (x29 + x34);807x36 = (x28 + x35);808x37 = (x27 + x36);809x38 = (x26 + x37);810x39 = (x38 & UINT64_C(0x7ffffffffffff));811x40 = (uint8_t)(x38 >> 51);812x41 = (x25 + (uint64_t)x40);813x42 = (x24 + x41);814x43 = (x23 + x42);815x44 = (x22 + x43);816x45 = (x21 + x44);817x46 = (x20 + x45);818x47 = (x46 & UINT64_C(0x7ffffffffffff));819x48 = (uint8_t)(x46 >> 51);820x49 = (x19 + (uint64_t)x48);821x50 = (x18 + x49);822x51 = (x17 + x50);823x52 = (x16 + x51);824x53 = (x15 + x52);825x54 = (x14 + x53);826x55 = (x13 + x54);827x56 = (x55 & UINT64_C(0x7ffffffffffff));828x57 = (uint8_t)(x55 >> 51);829x58 = (x12 + (uint64_t)x57);830x59 = (x11 + x58);831x60 = (x10 + x59);832x61 = (x9 + x60);833x62 = (x8 + x61);834x63 = (x7 + x62);835x64 = (x63 & UINT64_C(0x7ffffffffffff));836x65 = (uint8_t)(x63 >> 51);837x66 = (x6 + (uint64_t)x65);838x67 = (x5 + x66);839x68 = (x4 + x67);840x69 = (x3 + x68);841x70 = (x2 + x69);842x71 = (x1 + x70);843out1[0] = x39;844out1[1] = x47;845out1[2] = x56;846out1[3] = x64;847out1[4] = x71;848}849850#else /* defined(BORINGSSL_CURVE25519_64BIT) */851852/* Autogenerated: 'src/ExtractionOCaml/unsaturated_solinas' --inline --static --use-value-barrier 25519 32 '(auto)' '2^255 - 19' carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes relax carry_scmul121666 */853/* curve description: 25519 */854/* machine_wordsize = 32 (from "32") */855/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, relax, carry_scmul121666 */856/* n = 10 (from "(auto)") */857/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */858/* tight_bounds_multiplier = 1 (from "") */859/* */860/* Computed values: */861/* carry_chain = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1] */862/* eval z = z[0] + (z[1] << 26) + (z[2] << 51) + (z[3] << 77) + (z[4] << 102) + (z[5] << 128) + (z[6] << 153) + (z[7] << 179) + (z[8] << 204) + (z[9] << 230) */863/* 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) */864/* balance = [0x7ffffda, 0x3fffffe, 0x7fffffe, 0x3fffffe, 0x7fffffe, 0x3fffffe, 0x7fffffe, 0x3fffffe, 0x7fffffe, 0x3fffffe] */865866#include <stdint.h>867typedef unsigned char fiat_25519_uint1;868typedef signed char fiat_25519_int1;869#if defined(__GNUC__) || defined(__clang__)870# define FIAT_25519_FIAT_INLINE __inline__871#else872# define FIAT_25519_FIAT_INLINE873#endif874875/* The type fiat_25519_loose_field_element is a field element with loose bounds. */876/* Bounds: [[0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000], [0x0 ~> 0xc000000], [0x0 ~> 0x6000000]] */877typedef uint32_t fiat_25519_loose_field_element[10];878879/* The type fiat_25519_tight_field_element is a field element with tight bounds. */880/* Bounds: [[0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000], [0x0 ~> 0x4000000], [0x0 ~> 0x2000000]] */881typedef uint32_t fiat_25519_tight_field_element[10];882883#if (-1 & 3) != 3884#error "This code only works on a two's complement system"885#endif886887#if !defined(FIAT_25519_NO_ASM) && (defined(__GNUC__) || defined(__clang__))888static __inline__ uint32_t fiat_25519_value_barrier_u32(uint32_t a) {889__asm__("" : "+r"(a) : /* no inputs */);890return a;891}892#else893# define fiat_25519_value_barrier_u32(x) (x)894#endif895896897/*898* The function fiat_25519_addcarryx_u26 is an addition with carry.899*900* Postconditions:901* out1 = (arg1 + arg2 + arg3) mod 2^26902* out2 = ⌊(arg1 + arg2 + arg3) / 2^26⌋903*904* Input Bounds:905* arg1: [0x0 ~> 0x1]906* arg2: [0x0 ~> 0x3ffffff]907* arg3: [0x0 ~> 0x3ffffff]908* Output Bounds:909* out1: [0x0 ~> 0x3ffffff]910* out2: [0x0 ~> 0x1]911*/912static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u26(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) {913uint32_t x1;914uint32_t x2;915fiat_25519_uint1 x3;916x1 = ((arg1 + arg2) + arg3);917x2 = (x1 & UINT32_C(0x3ffffff));918x3 = (fiat_25519_uint1)(x1 >> 26);919*out1 = x2;920*out2 = x3;921}922923/*924* The function fiat_25519_subborrowx_u26 is a subtraction with borrow.925*926* Postconditions:927* out1 = (-arg1 + arg2 + -arg3) mod 2^26928* out2 = -⌊(-arg1 + arg2 + -arg3) / 2^26⌋929*930* Input Bounds:931* arg1: [0x0 ~> 0x1]932* arg2: [0x0 ~> 0x3ffffff]933* arg3: [0x0 ~> 0x3ffffff]934* Output Bounds:935* out1: [0x0 ~> 0x3ffffff]936* out2: [0x0 ~> 0x1]937*/938static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u26(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) {939int32_t x1;940fiat_25519_int1 x2;941uint32_t x3;942x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3);943x2 = (fiat_25519_int1)(x1 >> 26);944x3 = (x1 & UINT32_C(0x3ffffff));945*out1 = x3;946*out2 = (fiat_25519_uint1)(0x0 - x2);947}948949/*950* The function fiat_25519_addcarryx_u25 is an addition with carry.951*952* Postconditions:953* out1 = (arg1 + arg2 + arg3) mod 2^25954* out2 = ⌊(arg1 + arg2 + arg3) / 2^25⌋955*956* Input Bounds:957* arg1: [0x0 ~> 0x1]958* arg2: [0x0 ~> 0x1ffffff]959* arg3: [0x0 ~> 0x1ffffff]960* Output Bounds:961* out1: [0x0 ~> 0x1ffffff]962* out2: [0x0 ~> 0x1]963*/964static FIAT_25519_FIAT_INLINE void fiat_25519_addcarryx_u25(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) {965uint32_t x1;966uint32_t x2;967fiat_25519_uint1 x3;968x1 = ((arg1 + arg2) + arg3);969x2 = (x1 & UINT32_C(0x1ffffff));970x3 = (fiat_25519_uint1)(x1 >> 25);971*out1 = x2;972*out2 = x3;973}974975/*976* The function fiat_25519_subborrowx_u25 is a subtraction with borrow.977*978* Postconditions:979* out1 = (-arg1 + arg2 + -arg3) mod 2^25980* out2 = -⌊(-arg1 + arg2 + -arg3) / 2^25⌋981*982* Input Bounds:983* arg1: [0x0 ~> 0x1]984* arg2: [0x0 ~> 0x1ffffff]985* arg3: [0x0 ~> 0x1ffffff]986* Output Bounds:987* out1: [0x0 ~> 0x1ffffff]988* out2: [0x0 ~> 0x1]989*/990static FIAT_25519_FIAT_INLINE void fiat_25519_subborrowx_u25(uint32_t* out1, fiat_25519_uint1* out2, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) {991int32_t x1;992fiat_25519_int1 x2;993uint32_t x3;994x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3);995x2 = (fiat_25519_int1)(x1 >> 25);996x3 = (x1 & UINT32_C(0x1ffffff));997*out1 = x3;998*out2 = (fiat_25519_uint1)(0x0 - x2);999}10001001/*1002* The function fiat_25519_cmovznz_u32 is a single-word conditional move.1003*1004* Postconditions:1005* out1 = (if arg1 = 0 then arg2 else arg3)1006*1007* Input Bounds:1008* arg1: [0x0 ~> 0x1]1009* arg2: [0x0 ~> 0xffffffff]1010* arg3: [0x0 ~> 0xffffffff]1011* Output Bounds:1012* out1: [0x0 ~> 0xffffffff]1013*/1014static FIAT_25519_FIAT_INLINE void fiat_25519_cmovznz_u32(uint32_t* out1, fiat_25519_uint1 arg1, uint32_t arg2, uint32_t arg3) {1015fiat_25519_uint1 x1;1016uint32_t x2;1017uint32_t x3;1018x1 = (!(!arg1));1019x2 = ((fiat_25519_int1)(0x0 - x1) & UINT32_C(0xffffffff));1020x3 = ((fiat_25519_value_barrier_u32(x2) & arg3) | (fiat_25519_value_barrier_u32((~x2)) & arg2));1021*out1 = x3;1022}10231024/*1025* The function fiat_25519_carry_mul multiplies two field elements and reduces the result.1026*1027* Postconditions:1028* eval out1 mod m = (eval arg1 * eval arg2) mod m1029*1030*/1031static FIAT_25519_FIAT_INLINE void fiat_25519_carry_mul(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1, const fiat_25519_loose_field_element arg2) {1032uint64_t x1;1033uint64_t x2;1034uint64_t x3;1035uint64_t x4;1036uint64_t x5;1037uint64_t x6;1038uint64_t x7;1039uint64_t x8;1040uint64_t x9;1041uint64_t x10;1042uint64_t x11;1043uint64_t x12;1044uint64_t x13;1045uint64_t x14;1046uint64_t x15;1047uint64_t x16;1048uint64_t x17;1049uint64_t x18;1050uint64_t x19;1051uint64_t x20;1052uint64_t x21;1053uint64_t x22;1054uint64_t x23;1055uint64_t x24;1056uint64_t x25;1057uint64_t x26;1058uint64_t x27;1059uint64_t x28;1060uint64_t x29;1061uint64_t x30;1062uint64_t x31;1063uint64_t x32;1064uint64_t x33;1065uint64_t x34;1066uint64_t x35;1067uint64_t x36;1068uint64_t x37;1069uint64_t x38;1070uint64_t x39;1071uint64_t x40;1072uint64_t x41;1073uint64_t x42;1074uint64_t x43;1075uint64_t x44;1076uint64_t x45;1077uint64_t x46;1078uint64_t x47;1079uint64_t x48;1080uint64_t x49;1081uint64_t x50;1082uint64_t x51;1083uint64_t x52;1084uint64_t x53;1085uint64_t x54;1086uint64_t x55;1087uint64_t x56;1088uint64_t x57;1089uint64_t x58;1090uint64_t x59;1091uint64_t x60;1092uint64_t x61;1093uint64_t x62;1094uint64_t x63;1095uint64_t x64;1096uint64_t x65;1097uint64_t x66;1098uint64_t x67;1099uint64_t x68;1100uint64_t x69;1101uint64_t x70;1102uint64_t x71;1103uint64_t x72;1104uint64_t x73;1105uint64_t x74;1106uint64_t x75;1107uint64_t x76;1108uint64_t x77;1109uint64_t x78;1110uint64_t x79;1111uint64_t x80;1112uint64_t x81;1113uint64_t x82;1114uint64_t x83;1115uint64_t x84;1116uint64_t x85;1117uint64_t x86;1118uint64_t x87;1119uint64_t x88;1120uint64_t x89;1121uint64_t x90;1122uint64_t x91;1123uint64_t x92;1124uint64_t x93;1125uint64_t x94;1126uint64_t x95;1127uint64_t x96;1128uint64_t x97;1129uint64_t x98;1130uint64_t x99;1131uint64_t x100;1132uint64_t x101;1133uint64_t x102;1134uint32_t x103;1135uint64_t x104;1136uint64_t x105;1137uint64_t x106;1138uint64_t x107;1139uint64_t x108;1140uint64_t x109;1141uint64_t x110;1142uint64_t x111;1143uint64_t x112;1144uint64_t x113;1145uint64_t x114;1146uint32_t x115;1147uint64_t x116;1148uint64_t x117;1149uint32_t x118;1150uint64_t x119;1151uint64_t x120;1152uint32_t x121;1153uint64_t x122;1154uint64_t x123;1155uint32_t x124;1156uint64_t x125;1157uint64_t x126;1158uint32_t x127;1159uint64_t x128;1160uint64_t x129;1161uint32_t x130;1162uint64_t x131;1163uint64_t x132;1164uint32_t x133;1165uint64_t x134;1166uint64_t x135;1167uint32_t x136;1168uint64_t x137;1169uint64_t x138;1170uint32_t x139;1171uint64_t x140;1172uint64_t x141;1173uint32_t x142;1174uint32_t x143;1175uint32_t x144;1176fiat_25519_uint1 x145;1177uint32_t x146;1178uint32_t x147;1179x1 = ((uint64_t)(arg1[9]) * ((arg2[9]) * UINT8_C(0x26)));1180x2 = ((uint64_t)(arg1[9]) * ((arg2[8]) * UINT8_C(0x13)));1181x3 = ((uint64_t)(arg1[9]) * ((arg2[7]) * UINT8_C(0x26)));1182x4 = ((uint64_t)(arg1[9]) * ((arg2[6]) * UINT8_C(0x13)));1183x5 = ((uint64_t)(arg1[9]) * ((arg2[5]) * UINT8_C(0x26)));1184x6 = ((uint64_t)(arg1[9]) * ((arg2[4]) * UINT8_C(0x13)));1185x7 = ((uint64_t)(arg1[9]) * ((arg2[3]) * UINT8_C(0x26)));1186x8 = ((uint64_t)(arg1[9]) * ((arg2[2]) * UINT8_C(0x13)));1187x9 = ((uint64_t)(arg1[9]) * ((arg2[1]) * UINT8_C(0x26)));1188x10 = ((uint64_t)(arg1[8]) * ((arg2[9]) * UINT8_C(0x13)));1189x11 = ((uint64_t)(arg1[8]) * ((arg2[8]) * UINT8_C(0x13)));1190x12 = ((uint64_t)(arg1[8]) * ((arg2[7]) * UINT8_C(0x13)));1191x13 = ((uint64_t)(arg1[8]) * ((arg2[6]) * UINT8_C(0x13)));1192x14 = ((uint64_t)(arg1[8]) * ((arg2[5]) * UINT8_C(0x13)));1193x15 = ((uint64_t)(arg1[8]) * ((arg2[4]) * UINT8_C(0x13)));1194x16 = ((uint64_t)(arg1[8]) * ((arg2[3]) * UINT8_C(0x13)));1195x17 = ((uint64_t)(arg1[8]) * ((arg2[2]) * UINT8_C(0x13)));1196x18 = ((uint64_t)(arg1[7]) * ((arg2[9]) * UINT8_C(0x26)));1197x19 = ((uint64_t)(arg1[7]) * ((arg2[8]) * UINT8_C(0x13)));1198x20 = ((uint64_t)(arg1[7]) * ((arg2[7]) * UINT8_C(0x26)));1199x21 = ((uint64_t)(arg1[7]) * ((arg2[6]) * UINT8_C(0x13)));1200x22 = ((uint64_t)(arg1[7]) * ((arg2[5]) * UINT8_C(0x26)));1201x23 = ((uint64_t)(arg1[7]) * ((arg2[4]) * UINT8_C(0x13)));1202x24 = ((uint64_t)(arg1[7]) * ((arg2[3]) * UINT8_C(0x26)));1203x25 = ((uint64_t)(arg1[6]) * ((arg2[9]) * UINT8_C(0x13)));1204x26 = ((uint64_t)(arg1[6]) * ((arg2[8]) * UINT8_C(0x13)));1205x27 = ((uint64_t)(arg1[6]) * ((arg2[7]) * UINT8_C(0x13)));1206x28 = ((uint64_t)(arg1[6]) * ((arg2[6]) * UINT8_C(0x13)));1207x29 = ((uint64_t)(arg1[6]) * ((arg2[5]) * UINT8_C(0x13)));1208x30 = ((uint64_t)(arg1[6]) * ((arg2[4]) * UINT8_C(0x13)));1209x31 = ((uint64_t)(arg1[5]) * ((arg2[9]) * UINT8_C(0x26)));1210x32 = ((uint64_t)(arg1[5]) * ((arg2[8]) * UINT8_C(0x13)));1211x33 = ((uint64_t)(arg1[5]) * ((arg2[7]) * UINT8_C(0x26)));1212x34 = ((uint64_t)(arg1[5]) * ((arg2[6]) * UINT8_C(0x13)));1213x35 = ((uint64_t)(arg1[5]) * ((arg2[5]) * UINT8_C(0x26)));1214x36 = ((uint64_t)(arg1[4]) * ((arg2[9]) * UINT8_C(0x13)));1215x37 = ((uint64_t)(arg1[4]) * ((arg2[8]) * UINT8_C(0x13)));1216x38 = ((uint64_t)(arg1[4]) * ((arg2[7]) * UINT8_C(0x13)));1217x39 = ((uint64_t)(arg1[4]) * ((arg2[6]) * UINT8_C(0x13)));1218x40 = ((uint64_t)(arg1[3]) * ((arg2[9]) * UINT8_C(0x26)));1219x41 = ((uint64_t)(arg1[3]) * ((arg2[8]) * UINT8_C(0x13)));1220x42 = ((uint64_t)(arg1[3]) * ((arg2[7]) * UINT8_C(0x26)));1221x43 = ((uint64_t)(arg1[2]) * ((arg2[9]) * UINT8_C(0x13)));1222x44 = ((uint64_t)(arg1[2]) * ((arg2[8]) * UINT8_C(0x13)));1223x45 = ((uint64_t)(arg1[1]) * ((arg2[9]) * UINT8_C(0x26)));1224x46 = ((uint64_t)(arg1[9]) * (arg2[0]));1225x47 = ((uint64_t)(arg1[8]) * (arg2[1]));1226x48 = ((uint64_t)(arg1[8]) * (arg2[0]));1227x49 = ((uint64_t)(arg1[7]) * (arg2[2]));1228x50 = ((uint64_t)(arg1[7]) * ((arg2[1]) * 0x2));1229x51 = ((uint64_t)(arg1[7]) * (arg2[0]));1230x52 = ((uint64_t)(arg1[6]) * (arg2[3]));1231x53 = ((uint64_t)(arg1[6]) * (arg2[2]));1232x54 = ((uint64_t)(arg1[6]) * (arg2[1]));1233x55 = ((uint64_t)(arg1[6]) * (arg2[0]));1234x56 = ((uint64_t)(arg1[5]) * (arg2[4]));1235x57 = ((uint64_t)(arg1[5]) * ((arg2[3]) * 0x2));1236x58 = ((uint64_t)(arg1[5]) * (arg2[2]));1237x59 = ((uint64_t)(arg1[5]) * ((arg2[1]) * 0x2));1238x60 = ((uint64_t)(arg1[5]) * (arg2[0]));1239x61 = ((uint64_t)(arg1[4]) * (arg2[5]));1240x62 = ((uint64_t)(arg1[4]) * (arg2[4]));1241x63 = ((uint64_t)(arg1[4]) * (arg2[3]));1242x64 = ((uint64_t)(arg1[4]) * (arg2[2]));1243x65 = ((uint64_t)(arg1[4]) * (arg2[1]));1244x66 = ((uint64_t)(arg1[4]) * (arg2[0]));1245x67 = ((uint64_t)(arg1[3]) * (arg2[6]));1246x68 = ((uint64_t)(arg1[3]) * ((arg2[5]) * 0x2));1247x69 = ((uint64_t)(arg1[3]) * (arg2[4]));1248x70 = ((uint64_t)(arg1[3]) * ((arg2[3]) * 0x2));1249x71 = ((uint64_t)(arg1[3]) * (arg2[2]));1250x72 = ((uint64_t)(arg1[3]) * ((arg2[1]) * 0x2));1251x73 = ((uint64_t)(arg1[3]) * (arg2[0]));1252x74 = ((uint64_t)(arg1[2]) * (arg2[7]));1253x75 = ((uint64_t)(arg1[2]) * (arg2[6]));1254x76 = ((uint64_t)(arg1[2]) * (arg2[5]));1255x77 = ((uint64_t)(arg1[2]) * (arg2[4]));1256x78 = ((uint64_t)(arg1[2]) * (arg2[3]));1257x79 = ((uint64_t)(arg1[2]) * (arg2[2]));1258x80 = ((uint64_t)(arg1[2]) * (arg2[1]));1259x81 = ((uint64_t)(arg1[2]) * (arg2[0]));1260x82 = ((uint64_t)(arg1[1]) * (arg2[8]));1261x83 = ((uint64_t)(arg1[1]) * ((arg2[7]) * 0x2));1262x84 = ((uint64_t)(arg1[1]) * (arg2[6]));1263x85 = ((uint64_t)(arg1[1]) * ((arg2[5]) * 0x2));1264x86 = ((uint64_t)(arg1[1]) * (arg2[4]));1265x87 = ((uint64_t)(arg1[1]) * ((arg2[3]) * 0x2));1266x88 = ((uint64_t)(arg1[1]) * (arg2[2]));1267x89 = ((uint64_t)(arg1[1]) * ((arg2[1]) * 0x2));1268x90 = ((uint64_t)(arg1[1]) * (arg2[0]));1269x91 = ((uint64_t)(arg1[0]) * (arg2[9]));1270x92 = ((uint64_t)(arg1[0]) * (arg2[8]));1271x93 = ((uint64_t)(arg1[0]) * (arg2[7]));1272x94 = ((uint64_t)(arg1[0]) * (arg2[6]));1273x95 = ((uint64_t)(arg1[0]) * (arg2[5]));1274x96 = ((uint64_t)(arg1[0]) * (arg2[4]));1275x97 = ((uint64_t)(arg1[0]) * (arg2[3]));1276x98 = ((uint64_t)(arg1[0]) * (arg2[2]));1277x99 = ((uint64_t)(arg1[0]) * (arg2[1]));1278x100 = ((uint64_t)(arg1[0]) * (arg2[0]));1279x101 = (x100 + (x45 + (x44 + (x42 + (x39 + (x35 + (x30 + (x24 + (x17 + x9)))))))));1280x102 = (x101 >> 26);1281x103 = (uint32_t)(x101 & UINT32_C(0x3ffffff));1282x104 = (x91 + (x82 + (x74 + (x67 + (x61 + (x56 + (x52 + (x49 + (x47 + x46)))))))));1283x105 = (x92 + (x83 + (x75 + (x68 + (x62 + (x57 + (x53 + (x50 + (x48 + x1)))))))));1284x106 = (x93 + (x84 + (x76 + (x69 + (x63 + (x58 + (x54 + (x51 + (x10 + x2)))))))));1285x107 = (x94 + (x85 + (x77 + (x70 + (x64 + (x59 + (x55 + (x18 + (x11 + x3)))))))));1286x108 = (x95 + (x86 + (x78 + (x71 + (x65 + (x60 + (x25 + (x19 + (x12 + x4)))))))));1287x109 = (x96 + (x87 + (x79 + (x72 + (x66 + (x31 + (x26 + (x20 + (x13 + x5)))))))));1288x110 = (x97 + (x88 + (x80 + (x73 + (x36 + (x32 + (x27 + (x21 + (x14 + x6)))))))));1289x111 = (x98 + (x89 + (x81 + (x40 + (x37 + (x33 + (x28 + (x22 + (x15 + x7)))))))));1290x112 = (x99 + (x90 + (x43 + (x41 + (x38 + (x34 + (x29 + (x23 + (x16 + x8)))))))));1291x113 = (x102 + x112);1292x114 = (x113 >> 25);1293x115 = (uint32_t)(x113 & UINT32_C(0x1ffffff));1294x116 = (x114 + x111);1295x117 = (x116 >> 26);1296x118 = (uint32_t)(x116 & UINT32_C(0x3ffffff));1297x119 = (x117 + x110);1298x120 = (x119 >> 25);1299x121 = (uint32_t)(x119 & UINT32_C(0x1ffffff));1300x122 = (x120 + x109);1301x123 = (x122 >> 26);1302x124 = (uint32_t)(x122 & UINT32_C(0x3ffffff));1303x125 = (x123 + x108);1304x126 = (x125 >> 25);1305x127 = (uint32_t)(x125 & UINT32_C(0x1ffffff));1306x128 = (x126 + x107);1307x129 = (x128 >> 26);1308x130 = (uint32_t)(x128 & UINT32_C(0x3ffffff));1309x131 = (x129 + x106);1310x132 = (x131 >> 25);1311x133 = (uint32_t)(x131 & UINT32_C(0x1ffffff));1312x134 = (x132 + x105);1313x135 = (x134 >> 26);1314x136 = (uint32_t)(x134 & UINT32_C(0x3ffffff));1315x137 = (x135 + x104);1316x138 = (x137 >> 25);1317x139 = (uint32_t)(x137 & UINT32_C(0x1ffffff));1318x140 = (x138 * UINT8_C(0x13));1319x141 = (x103 + x140);1320x142 = (uint32_t)(x141 >> 26);1321x143 = (uint32_t)(x141 & UINT32_C(0x3ffffff));1322x144 = (x142 + x115);1323x145 = (fiat_25519_uint1)(x144 >> 25);1324x146 = (x144 & UINT32_C(0x1ffffff));1325x147 = (x145 + x118);1326out1[0] = x143;1327out1[1] = x146;1328out1[2] = x147;1329out1[3] = x121;1330out1[4] = x124;1331out1[5] = x127;1332out1[6] = x130;1333out1[7] = x133;1334out1[8] = x136;1335out1[9] = x139;1336}13371338/*1339* The function fiat_25519_carry_square squares a field element and reduces the result.1340*1341* Postconditions:1342* eval out1 mod m = (eval arg1 * eval arg1) mod m1343*1344*/1345static FIAT_25519_FIAT_INLINE void fiat_25519_carry_square(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) {1346uint32_t x1;1347uint32_t x2;1348uint32_t x3;1349uint32_t x4;1350uint64_t x5;1351uint32_t x6;1352uint32_t x7;1353uint32_t x8;1354uint32_t x9;1355uint32_t x10;1356uint64_t x11;1357uint32_t x12;1358uint32_t x13;1359uint32_t x14;1360uint32_t x15;1361uint32_t x16;1362uint32_t x17;1363uint32_t x18;1364uint64_t x19;1365uint64_t x20;1366uint64_t x21;1367uint64_t x22;1368uint64_t x23;1369uint64_t x24;1370uint64_t x25;1371uint64_t x26;1372uint64_t x27;1373uint64_t x28;1374uint64_t x29;1375uint64_t x30;1376uint64_t x31;1377uint64_t x32;1378uint64_t x33;1379uint64_t x34;1380uint64_t x35;1381uint64_t x36;1382uint64_t x37;1383uint64_t x38;1384uint64_t x39;1385uint64_t x40;1386uint64_t x41;1387uint64_t x42;1388uint64_t x43;1389uint64_t x44;1390uint64_t x45;1391uint64_t x46;1392uint64_t x47;1393uint64_t x48;1394uint64_t x49;1395uint64_t x50;1396uint64_t x51;1397uint64_t x52;1398uint64_t x53;1399uint64_t x54;1400uint64_t x55;1401uint64_t x56;1402uint64_t x57;1403uint64_t x58;1404uint64_t x59;1405uint64_t x60;1406uint64_t x61;1407uint64_t x62;1408uint64_t x63;1409uint64_t x64;1410uint64_t x65;1411uint64_t x66;1412uint64_t x67;1413uint64_t x68;1414uint64_t x69;1415uint64_t x70;1416uint64_t x71;1417uint64_t x72;1418uint64_t x73;1419uint64_t x74;1420uint64_t x75;1421uint32_t x76;1422uint64_t x77;1423uint64_t x78;1424uint64_t x79;1425uint64_t x80;1426uint64_t x81;1427uint64_t x82;1428uint64_t x83;1429uint64_t x84;1430uint64_t x85;1431uint64_t x86;1432uint64_t x87;1433uint32_t x88;1434uint64_t x89;1435uint64_t x90;1436uint32_t x91;1437uint64_t x92;1438uint64_t x93;1439uint32_t x94;1440uint64_t x95;1441uint64_t x96;1442uint32_t x97;1443uint64_t x98;1444uint64_t x99;1445uint32_t x100;1446uint64_t x101;1447uint64_t x102;1448uint32_t x103;1449uint64_t x104;1450uint64_t x105;1451uint32_t x106;1452uint64_t x107;1453uint64_t x108;1454uint32_t x109;1455uint64_t x110;1456uint64_t x111;1457uint32_t x112;1458uint64_t x113;1459uint64_t x114;1460uint32_t x115;1461uint32_t x116;1462uint32_t x117;1463fiat_25519_uint1 x118;1464uint32_t x119;1465uint32_t x120;1466x1 = ((arg1[9]) * UINT8_C(0x13));1467x2 = (x1 * 0x2);1468x3 = ((arg1[9]) * 0x2);1469x4 = ((arg1[8]) * UINT8_C(0x13));1470x5 = ((uint64_t)x4 * 0x2);1471x6 = ((arg1[8]) * 0x2);1472x7 = ((arg1[7]) * UINT8_C(0x13));1473x8 = (x7 * 0x2);1474x9 = ((arg1[7]) * 0x2);1475x10 = ((arg1[6]) * UINT8_C(0x13));1476x11 = ((uint64_t)x10 * 0x2);1477x12 = ((arg1[6]) * 0x2);1478x13 = ((arg1[5]) * UINT8_C(0x13));1479x14 = ((arg1[5]) * 0x2);1480x15 = ((arg1[4]) * 0x2);1481x16 = ((arg1[3]) * 0x2);1482x17 = ((arg1[2]) * 0x2);1483x18 = ((arg1[1]) * 0x2);1484x19 = ((uint64_t)(arg1[9]) * (x1 * 0x2));1485x20 = ((uint64_t)(arg1[8]) * x2);1486x21 = ((uint64_t)(arg1[8]) * x4);1487x22 = ((arg1[7]) * ((uint64_t)x2 * 0x2));1488x23 = ((arg1[7]) * x5);1489x24 = ((uint64_t)(arg1[7]) * (x7 * 0x2));1490x25 = ((uint64_t)(arg1[6]) * x2);1491x26 = ((arg1[6]) * x5);1492x27 = ((uint64_t)(arg1[6]) * x8);1493x28 = ((uint64_t)(arg1[6]) * x10);1494x29 = ((arg1[5]) * ((uint64_t)x2 * 0x2));1495x30 = ((arg1[5]) * x5);1496x31 = ((arg1[5]) * ((uint64_t)x8 * 0x2));1497x32 = ((arg1[5]) * x11);1498x33 = ((uint64_t)(arg1[5]) * (x13 * 0x2));1499x34 = ((uint64_t)(arg1[4]) * x2);1500x35 = ((arg1[4]) * x5);1501x36 = ((uint64_t)(arg1[4]) * x8);1502x37 = ((arg1[4]) * x11);1503x38 = ((uint64_t)(arg1[4]) * x14);1504x39 = ((uint64_t)(arg1[4]) * (arg1[4]));1505x40 = ((arg1[3]) * ((uint64_t)x2 * 0x2));1506x41 = ((arg1[3]) * x5);1507x42 = ((arg1[3]) * ((uint64_t)x8 * 0x2));1508x43 = ((uint64_t)(arg1[3]) * x12);1509x44 = ((uint64_t)(arg1[3]) * (x14 * 0x2));1510x45 = ((uint64_t)(arg1[3]) * x15);1511x46 = ((uint64_t)(arg1[3]) * ((arg1[3]) * 0x2));1512x47 = ((uint64_t)(arg1[2]) * x2);1513x48 = ((arg1[2]) * x5);1514x49 = ((uint64_t)(arg1[2]) * x9);1515x50 = ((uint64_t)(arg1[2]) * x12);1516x51 = ((uint64_t)(arg1[2]) * x14);1517x52 = ((uint64_t)(arg1[2]) * x15);1518x53 = ((uint64_t)(arg1[2]) * x16);1519x54 = ((uint64_t)(arg1[2]) * (arg1[2]));1520x55 = ((arg1[1]) * ((uint64_t)x2 * 0x2));1521x56 = ((uint64_t)(arg1[1]) * x6);1522x57 = ((uint64_t)(arg1[1]) * (x9 * 0x2));1523x58 = ((uint64_t)(arg1[1]) * x12);1524x59 = ((uint64_t)(arg1[1]) * (x14 * 0x2));1525x60 = ((uint64_t)(arg1[1]) * x15);1526x61 = ((uint64_t)(arg1[1]) * (x16 * 0x2));1527x62 = ((uint64_t)(arg1[1]) * x17);1528x63 = ((uint64_t)(arg1[1]) * ((arg1[1]) * 0x2));1529x64 = ((uint64_t)(arg1[0]) * x3);1530x65 = ((uint64_t)(arg1[0]) * x6);1531x66 = ((uint64_t)(arg1[0]) * x9);1532x67 = ((uint64_t)(arg1[0]) * x12);1533x68 = ((uint64_t)(arg1[0]) * x14);1534x69 = ((uint64_t)(arg1[0]) * x15);1535x70 = ((uint64_t)(arg1[0]) * x16);1536x71 = ((uint64_t)(arg1[0]) * x17);1537x72 = ((uint64_t)(arg1[0]) * x18);1538x73 = ((uint64_t)(arg1[0]) * (arg1[0]));1539x74 = (x73 + (x55 + (x48 + (x42 + (x37 + x33)))));1540x75 = (x74 >> 26);1541x76 = (uint32_t)(x74 & UINT32_C(0x3ffffff));1542x77 = (x64 + (x56 + (x49 + (x43 + x38))));1543x78 = (x65 + (x57 + (x50 + (x44 + (x39 + x19)))));1544x79 = (x66 + (x58 + (x51 + (x45 + x20))));1545x80 = (x67 + (x59 + (x52 + (x46 + (x22 + x21)))));1546x81 = (x68 + (x60 + (x53 + (x25 + x23))));1547x82 = (x69 + (x61 + (x54 + (x29 + (x26 + x24)))));1548x83 = (x70 + (x62 + (x34 + (x30 + x27))));1549x84 = (x71 + (x63 + (x40 + (x35 + (x31 + x28)))));1550x85 = (x72 + (x47 + (x41 + (x36 + x32))));1551x86 = (x75 + x85);1552x87 = (x86 >> 25);1553x88 = (uint32_t)(x86 & UINT32_C(0x1ffffff));1554x89 = (x87 + x84);1555x90 = (x89 >> 26);1556x91 = (uint32_t)(x89 & UINT32_C(0x3ffffff));1557x92 = (x90 + x83);1558x93 = (x92 >> 25);1559x94 = (uint32_t)(x92 & UINT32_C(0x1ffffff));1560x95 = (x93 + x82);1561x96 = (x95 >> 26);1562x97 = (uint32_t)(x95 & UINT32_C(0x3ffffff));1563x98 = (x96 + x81);1564x99 = (x98 >> 25);1565x100 = (uint32_t)(x98 & UINT32_C(0x1ffffff));1566x101 = (x99 + x80);1567x102 = (x101 >> 26);1568x103 = (uint32_t)(x101 & UINT32_C(0x3ffffff));1569x104 = (x102 + x79);1570x105 = (x104 >> 25);1571x106 = (uint32_t)(x104 & UINT32_C(0x1ffffff));1572x107 = (x105 + x78);1573x108 = (x107 >> 26);1574x109 = (uint32_t)(x107 & UINT32_C(0x3ffffff));1575x110 = (x108 + x77);1576x111 = (x110 >> 25);1577x112 = (uint32_t)(x110 & UINT32_C(0x1ffffff));1578x113 = (x111 * UINT8_C(0x13));1579x114 = (x76 + x113);1580x115 = (uint32_t)(x114 >> 26);1581x116 = (uint32_t)(x114 & UINT32_C(0x3ffffff));1582x117 = (x115 + x88);1583x118 = (fiat_25519_uint1)(x117 >> 25);1584x119 = (x117 & UINT32_C(0x1ffffff));1585x120 = (x118 + x91);1586out1[0] = x116;1587out1[1] = x119;1588out1[2] = x120;1589out1[3] = x94;1590out1[4] = x97;1591out1[5] = x100;1592out1[6] = x103;1593out1[7] = x106;1594out1[8] = x109;1595out1[9] = x112;1596}15971598/*1599* The function fiat_25519_carry reduces a field element.1600*1601* Postconditions:1602* eval out1 mod m = eval arg1 mod m1603*1604*/1605static FIAT_25519_FIAT_INLINE void fiat_25519_carry(fiat_25519_tight_field_element out1, const fiat_25519_loose_field_element arg1) {1606uint32_t x1;1607uint32_t x2;1608uint32_t x3;1609uint32_t x4;1610uint32_t x5;1611uint32_t x6;1612uint32_t x7;1613uint32_t x8;1614uint32_t x9;1615uint32_t x10;1616uint32_t x11;1617uint32_t x12;1618uint32_t x13;1619uint32_t x14;1620uint32_t x15;1621uint32_t x16;1622uint32_t x17;1623uint32_t x18;1624uint32_t x19;1625uint32_t x20;1626uint32_t x21;1627uint32_t x22;1628x1 = (arg1[0]);1629x2 = ((x1 >> 26) + (arg1[1]));1630x3 = ((x2 >> 25) + (arg1[2]));1631x4 = ((x3 >> 26) + (arg1[3]));1632x5 = ((x4 >> 25) + (arg1[4]));1633x6 = ((x5 >> 26) + (arg1[5]));1634x7 = ((x6 >> 25) + (arg1[6]));1635x8 = ((x7 >> 26) + (arg1[7]));1636x9 = ((x8 >> 25) + (arg1[8]));1637x10 = ((x9 >> 26) + (arg1[9]));1638x11 = ((x1 & UINT32_C(0x3ffffff)) + ((x10 >> 25) * UINT8_C(0x13)));1639x12 = ((fiat_25519_uint1)(x11 >> 26) + (x2 & UINT32_C(0x1ffffff)));1640x13 = (x11 & UINT32_C(0x3ffffff));1641x14 = (x12 & UINT32_C(0x1ffffff));1642x15 = ((fiat_25519_uint1)(x12 >> 25) + (x3 & UINT32_C(0x3ffffff)));1643x16 = (x4 & UINT32_C(0x1ffffff));1644x17 = (x5 & UINT32_C(0x3ffffff));1645x18 = (x6 & UINT32_C(0x1ffffff));1646x19 = (x7 & UINT32_C(0x3ffffff));1647x20 = (x8 & UINT32_C(0x1ffffff));1648x21 = (x9 & UINT32_C(0x3ffffff));1649x22 = (x10 & UINT32_C(0x1ffffff));1650out1[0] = x13;1651out1[1] = x14;1652out1[2] = x15;1653out1[3] = x16;1654out1[4] = x17;1655out1[5] = x18;1656out1[6] = x19;1657out1[7] = x20;1658out1[8] = x21;1659out1[9] = x22;1660}16611662/*1663* The function fiat_25519_add adds two field elements.1664*1665* Postconditions:1666* eval out1 mod m = (eval arg1 + eval arg2) mod m1667*1668*/1669static FIAT_25519_FIAT_INLINE void fiat_25519_add(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) {1670uint32_t x1;1671uint32_t x2;1672uint32_t x3;1673uint32_t x4;1674uint32_t x5;1675uint32_t x6;1676uint32_t x7;1677uint32_t x8;1678uint32_t x9;1679uint32_t x10;1680x1 = ((arg1[0]) + (arg2[0]));1681x2 = ((arg1[1]) + (arg2[1]));1682x3 = ((arg1[2]) + (arg2[2]));1683x4 = ((arg1[3]) + (arg2[3]));1684x5 = ((arg1[4]) + (arg2[4]));1685x6 = ((arg1[5]) + (arg2[5]));1686x7 = ((arg1[6]) + (arg2[6]));1687x8 = ((arg1[7]) + (arg2[7]));1688x9 = ((arg1[8]) + (arg2[8]));1689x10 = ((arg1[9]) + (arg2[9]));1690out1[0] = x1;1691out1[1] = x2;1692out1[2] = x3;1693out1[3] = x4;1694out1[4] = x5;1695out1[5] = x6;1696out1[6] = x7;1697out1[7] = x8;1698out1[8] = x9;1699out1[9] = x10;1700}17011702/*1703* The function fiat_25519_sub subtracts two field elements.1704*1705* Postconditions:1706* eval out1 mod m = (eval arg1 - eval arg2) mod m1707*1708*/1709static FIAT_25519_FIAT_INLINE void fiat_25519_sub(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1, const fiat_25519_tight_field_element arg2) {1710uint32_t x1;1711uint32_t x2;1712uint32_t x3;1713uint32_t x4;1714uint32_t x5;1715uint32_t x6;1716uint32_t x7;1717uint32_t x8;1718uint32_t x9;1719uint32_t x10;1720x1 = ((UINT32_C(0x7ffffda) + (arg1[0])) - (arg2[0]));1721x2 = ((UINT32_C(0x3fffffe) + (arg1[1])) - (arg2[1]));1722x3 = ((UINT32_C(0x7fffffe) + (arg1[2])) - (arg2[2]));1723x4 = ((UINT32_C(0x3fffffe) + (arg1[3])) - (arg2[3]));1724x5 = ((UINT32_C(0x7fffffe) + (arg1[4])) - (arg2[4]));1725x6 = ((UINT32_C(0x3fffffe) + (arg1[5])) - (arg2[5]));1726x7 = ((UINT32_C(0x7fffffe) + (arg1[6])) - (arg2[6]));1727x8 = ((UINT32_C(0x3fffffe) + (arg1[7])) - (arg2[7]));1728x9 = ((UINT32_C(0x7fffffe) + (arg1[8])) - (arg2[8]));1729x10 = ((UINT32_C(0x3fffffe) + (arg1[9])) - (arg2[9]));1730out1[0] = x1;1731out1[1] = x2;1732out1[2] = x3;1733out1[3] = x4;1734out1[4] = x5;1735out1[5] = x6;1736out1[6] = x7;1737out1[7] = x8;1738out1[8] = x9;1739out1[9] = x10;1740}17411742/*1743* The function fiat_25519_opp negates a field element.1744*1745* Postconditions:1746* eval out1 mod m = -eval arg1 mod m1747*1748*/1749static FIAT_25519_FIAT_INLINE void fiat_25519_opp(fiat_25519_loose_field_element out1, const fiat_25519_tight_field_element arg1) {1750uint32_t x1;1751uint32_t x2;1752uint32_t x3;1753uint32_t x4;1754uint32_t x5;1755uint32_t x6;1756uint32_t x7;1757uint32_t x8;1758uint32_t x9;1759uint32_t x10;1760x1 = (UINT32_C(0x7ffffda) - (arg1[0]));1761x2 = (UINT32_C(0x3fffffe) - (arg1[1]));1762x3 = (UINT32_C(0x7fffffe) - (arg1[2]));1763x4 = (UINT32_C(0x3fffffe) - (arg1[3]));1764x5 = (UINT32_C(0x7fffffe) - (arg1[4]));1765x6 = (UINT32_C(0x3fffffe) - (arg1[5]));1766x7 = (UINT32_C(0x7fffffe) - (arg1[6]));1767x8 = (UINT32_C(0x3fffffe) - (arg1[7]));1768x9 = (UINT32_C(0x7fffffe) - (arg1[8]));1769x10 = (UINT32_C(0x3fffffe) - (arg1[9]));1770out1[0] = x1;1771out1[1] = x2;1772out1[2] = x3;1773out1[3] = x4;1774out1[4] = x5;1775out1[5] = x6;1776out1[6] = x7;1777out1[7] = x8;1778out1[8] = x9;1779out1[9] = x10;1780}17811782/*1783* The function fiat_25519_to_bytes serializes a field element to bytes in little-endian order.1784*1785* Postconditions:1786* out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31]1787*1788* Output Bounds:1789* 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 ~> 0x7f]]1790*/1791static FIAT_25519_FIAT_INLINE void fiat_25519_to_bytes(uint8_t out1[32], const fiat_25519_tight_field_element arg1) {1792uint32_t x1;1793fiat_25519_uint1 x2;1794uint32_t x3;1795fiat_25519_uint1 x4;1796uint32_t x5;1797fiat_25519_uint1 x6;1798uint32_t x7;1799fiat_25519_uint1 x8;1800uint32_t x9;1801fiat_25519_uint1 x10;1802uint32_t x11;1803fiat_25519_uint1 x12;1804uint32_t x13;1805fiat_25519_uint1 x14;1806uint32_t x15;1807fiat_25519_uint1 x16;1808uint32_t x17;1809fiat_25519_uint1 x18;1810uint32_t x19;1811fiat_25519_uint1 x20;1812uint32_t x21;1813uint32_t x22;1814fiat_25519_uint1 x23;1815uint32_t x24;1816fiat_25519_uint1 x25;1817uint32_t x26;1818fiat_25519_uint1 x27;1819uint32_t x28;1820fiat_25519_uint1 x29;1821uint32_t x30;1822fiat_25519_uint1 x31;1823uint32_t x32;1824fiat_25519_uint1 x33;1825uint32_t x34;1826fiat_25519_uint1 x35;1827uint32_t x36;1828fiat_25519_uint1 x37;1829uint32_t x38;1830fiat_25519_uint1 x39;1831uint32_t x40;1832fiat_25519_uint1 x41;1833uint32_t x42;1834uint32_t x43;1835uint32_t x44;1836uint32_t x45;1837uint32_t x46;1838uint32_t x47;1839uint32_t x48;1840uint32_t x49;1841uint8_t x50;1842uint32_t x51;1843uint8_t x52;1844uint32_t x53;1845uint8_t x54;1846uint8_t x55;1847uint32_t x56;1848uint8_t x57;1849uint32_t x58;1850uint8_t x59;1851uint32_t x60;1852uint8_t x61;1853uint8_t x62;1854uint32_t x63;1855uint8_t x64;1856uint32_t x65;1857uint8_t x66;1858uint32_t x67;1859uint8_t x68;1860uint8_t x69;1861uint32_t x70;1862uint8_t x71;1863uint32_t x72;1864uint8_t x73;1865uint32_t x74;1866uint8_t x75;1867uint8_t x76;1868uint32_t x77;1869uint8_t x78;1870uint32_t x79;1871uint8_t x80;1872uint32_t x81;1873uint8_t x82;1874uint8_t x83;1875uint8_t x84;1876uint32_t x85;1877uint8_t x86;1878uint32_t x87;1879uint8_t x88;1880fiat_25519_uint1 x89;1881uint32_t x90;1882uint8_t x91;1883uint32_t x92;1884uint8_t x93;1885uint32_t x94;1886uint8_t x95;1887uint8_t x96;1888uint32_t x97;1889uint8_t x98;1890uint32_t x99;1891uint8_t x100;1892uint32_t x101;1893uint8_t x102;1894uint8_t x103;1895uint32_t x104;1896uint8_t x105;1897uint32_t x106;1898uint8_t x107;1899uint32_t x108;1900uint8_t x109;1901uint8_t x110;1902uint32_t x111;1903uint8_t x112;1904uint32_t x113;1905uint8_t x114;1906uint32_t x115;1907uint8_t x116;1908uint8_t x117;1909fiat_25519_subborrowx_u26(&x1, &x2, 0x0, (arg1[0]), UINT32_C(0x3ffffed));1910fiat_25519_subborrowx_u25(&x3, &x4, x2, (arg1[1]), UINT32_C(0x1ffffff));1911fiat_25519_subborrowx_u26(&x5, &x6, x4, (arg1[2]), UINT32_C(0x3ffffff));1912fiat_25519_subborrowx_u25(&x7, &x8, x6, (arg1[3]), UINT32_C(0x1ffffff));1913fiat_25519_subborrowx_u26(&x9, &x10, x8, (arg1[4]), UINT32_C(0x3ffffff));1914fiat_25519_subborrowx_u25(&x11, &x12, x10, (arg1[5]), UINT32_C(0x1ffffff));1915fiat_25519_subborrowx_u26(&x13, &x14, x12, (arg1[6]), UINT32_C(0x3ffffff));1916fiat_25519_subborrowx_u25(&x15, &x16, x14, (arg1[7]), UINT32_C(0x1ffffff));1917fiat_25519_subborrowx_u26(&x17, &x18, x16, (arg1[8]), UINT32_C(0x3ffffff));1918fiat_25519_subborrowx_u25(&x19, &x20, x18, (arg1[9]), UINT32_C(0x1ffffff));1919fiat_25519_cmovznz_u32(&x21, x20, 0x0, UINT32_C(0xffffffff));1920fiat_25519_addcarryx_u26(&x22, &x23, 0x0, x1, (x21 & UINT32_C(0x3ffffed)));1921fiat_25519_addcarryx_u25(&x24, &x25, x23, x3, (x21 & UINT32_C(0x1ffffff)));1922fiat_25519_addcarryx_u26(&x26, &x27, x25, x5, (x21 & UINT32_C(0x3ffffff)));1923fiat_25519_addcarryx_u25(&x28, &x29, x27, x7, (x21 & UINT32_C(0x1ffffff)));1924fiat_25519_addcarryx_u26(&x30, &x31, x29, x9, (x21 & UINT32_C(0x3ffffff)));1925fiat_25519_addcarryx_u25(&x32, &x33, x31, x11, (x21 & UINT32_C(0x1ffffff)));1926fiat_25519_addcarryx_u26(&x34, &x35, x33, x13, (x21 & UINT32_C(0x3ffffff)));1927fiat_25519_addcarryx_u25(&x36, &x37, x35, x15, (x21 & UINT32_C(0x1ffffff)));1928fiat_25519_addcarryx_u26(&x38, &x39, x37, x17, (x21 & UINT32_C(0x3ffffff)));1929fiat_25519_addcarryx_u25(&x40, &x41, x39, x19, (x21 & UINT32_C(0x1ffffff)));1930x42 = (x40 << 6);1931x43 = (x38 << 4);1932x44 = (x36 << 3);1933x45 = (x34 * (uint32_t)0x2);1934x46 = (x30 << 6);1935x47 = (x28 << 5);1936x48 = (x26 << 3);1937x49 = (x24 << 2);1938x50 = (uint8_t)(x22 & UINT8_C(0xff));1939x51 = (x22 >> 8);1940x52 = (uint8_t)(x51 & UINT8_C(0xff));1941x53 = (x51 >> 8);1942x54 = (uint8_t)(x53 & UINT8_C(0xff));1943x55 = (uint8_t)(x53 >> 8);1944x56 = (x49 + (uint32_t)x55);1945x57 = (uint8_t)(x56 & UINT8_C(0xff));1946x58 = (x56 >> 8);1947x59 = (uint8_t)(x58 & UINT8_C(0xff));1948x60 = (x58 >> 8);1949x61 = (uint8_t)(x60 & UINT8_C(0xff));1950x62 = (uint8_t)(x60 >> 8);1951x63 = (x48 + (uint32_t)x62);1952x64 = (uint8_t)(x63 & UINT8_C(0xff));1953x65 = (x63 >> 8);1954x66 = (uint8_t)(x65 & UINT8_C(0xff));1955x67 = (x65 >> 8);1956x68 = (uint8_t)(x67 & UINT8_C(0xff));1957x69 = (uint8_t)(x67 >> 8);1958x70 = (x47 + (uint32_t)x69);1959x71 = (uint8_t)(x70 & UINT8_C(0xff));1960x72 = (x70 >> 8);1961x73 = (uint8_t)(x72 & UINT8_C(0xff));1962x74 = (x72 >> 8);1963x75 = (uint8_t)(x74 & UINT8_C(0xff));1964x76 = (uint8_t)(x74 >> 8);1965x77 = (x46 + (uint32_t)x76);1966x78 = (uint8_t)(x77 & UINT8_C(0xff));1967x79 = (x77 >> 8);1968x80 = (uint8_t)(x79 & UINT8_C(0xff));1969x81 = (x79 >> 8);1970x82 = (uint8_t)(x81 & UINT8_C(0xff));1971x83 = (uint8_t)(x81 >> 8);1972x84 = (uint8_t)(x32 & UINT8_C(0xff));1973x85 = (x32 >> 8);1974x86 = (uint8_t)(x85 & UINT8_C(0xff));1975x87 = (x85 >> 8);1976x88 = (uint8_t)(x87 & UINT8_C(0xff));1977x89 = (fiat_25519_uint1)(x87 >> 8);1978x90 = (x45 + (uint32_t)x89);1979x91 = (uint8_t)(x90 & UINT8_C(0xff));1980x92 = (x90 >> 8);1981x93 = (uint8_t)(x92 & UINT8_C(0xff));1982x94 = (x92 >> 8);1983x95 = (uint8_t)(x94 & UINT8_C(0xff));1984x96 = (uint8_t)(x94 >> 8);1985x97 = (x44 + (uint32_t)x96);1986x98 = (uint8_t)(x97 & UINT8_C(0xff));1987x99 = (x97 >> 8);1988x100 = (uint8_t)(x99 & UINT8_C(0xff));1989x101 = (x99 >> 8);1990x102 = (uint8_t)(x101 & UINT8_C(0xff));1991x103 = (uint8_t)(x101 >> 8);1992x104 = (x43 + (uint32_t)x103);1993x105 = (uint8_t)(x104 & UINT8_C(0xff));1994x106 = (x104 >> 8);1995x107 = (uint8_t)(x106 & UINT8_C(0xff));1996x108 = (x106 >> 8);1997x109 = (uint8_t)(x108 & UINT8_C(0xff));1998x110 = (uint8_t)(x108 >> 8);1999x111 = (x42 + (uint32_t)x110);2000x112 = (uint8_t)(x111 & UINT8_C(0xff));2001x113 = (x111 >> 8);2002x114 = (uint8_t)(x113 & UINT8_C(0xff));2003x115 = (x113 >> 8);2004x116 = (uint8_t)(x115 & UINT8_C(0xff));2005x117 = (uint8_t)(x115 >> 8);2006out1[0] = x50;2007out1[1] = x52;2008out1[2] = x54;2009out1[3] = x57;2010out1[4] = x59;2011out1[5] = x61;2012out1[6] = x64;2013out1[7] = x66;2014out1[8] = x68;2015out1[9] = x71;2016out1[10] = x73;2017out1[11] = x75;2018out1[12] = x78;2019out1[13] = x80;2020out1[14] = x82;2021out1[15] = x83;2022out1[16] = x84;2023out1[17] = x86;2024out1[18] = x88;2025out1[19] = x91;2026out1[20] = x93;2027out1[21] = x95;2028out1[22] = x98;2029out1[23] = x100;2030out1[24] = x102;2031out1[25] = x105;2032out1[26] = x107;2033out1[27] = x109;2034out1[28] = x112;2035out1[29] = x114;2036out1[30] = x116;2037out1[31] = x117;2038}20392040/*2041* The function fiat_25519_from_bytes deserializes a field element from bytes in little-endian order.2042*2043* Postconditions:2044* eval out1 mod m = bytes_eval arg1 mod m2045*2046* Input Bounds:2047* 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 ~> 0x7f]]2048*/2049static FIAT_25519_FIAT_INLINE void fiat_25519_from_bytes(fiat_25519_tight_field_element out1, const uint8_t arg1[32]) {2050uint32_t x1;2051uint32_t x2;2052uint32_t x3;2053uint32_t x4;2054uint32_t x5;2055uint32_t x6;2056uint32_t x7;2057uint32_t x8;2058uint32_t x9;2059uint32_t x10;2060uint32_t x11;2061uint32_t x12;2062uint32_t x13;2063uint32_t x14;2064uint32_t x15;2065uint8_t x16;2066uint32_t x17;2067uint32_t x18;2068uint32_t x19;2069uint32_t x20;2070uint32_t x21;2071uint32_t x22;2072uint32_t x23;2073uint32_t x24;2074uint32_t x25;2075uint32_t x26;2076uint32_t x27;2077uint32_t x28;2078uint32_t x29;2079uint32_t x30;2080uint32_t x31;2081uint8_t x32;2082uint32_t x33;2083uint32_t x34;2084uint32_t x35;2085uint32_t x36;2086uint8_t x37;2087uint32_t x38;2088uint32_t x39;2089uint32_t x40;2090uint32_t x41;2091uint8_t x42;2092uint32_t x43;2093uint32_t x44;2094uint32_t x45;2095uint32_t x46;2096uint8_t x47;2097uint32_t x48;2098uint32_t x49;2099uint32_t x50;2100uint32_t x51;2101uint8_t x52;2102uint32_t x53;2103uint32_t x54;2104uint32_t x55;2105uint32_t x56;2106uint32_t x57;2107uint32_t x58;2108uint32_t x59;2109uint8_t x60;2110uint32_t x61;2111uint32_t x62;2112uint32_t x63;2113uint32_t x64;2114uint8_t x65;2115uint32_t x66;2116uint32_t x67;2117uint32_t x68;2118uint32_t x69;2119uint8_t x70;2120uint32_t x71;2121uint32_t x72;2122uint32_t x73;2123uint32_t x74;2124uint8_t x75;2125uint32_t x76;2126uint32_t x77;2127uint32_t x78;2128x1 = ((uint32_t)(arg1[31]) << 18);2129x2 = ((uint32_t)(arg1[30]) << 10);2130x3 = ((uint32_t)(arg1[29]) << 2);2131x4 = ((uint32_t)(arg1[28]) << 20);2132x5 = ((uint32_t)(arg1[27]) << 12);2133x6 = ((uint32_t)(arg1[26]) << 4);2134x7 = ((uint32_t)(arg1[25]) << 21);2135x8 = ((uint32_t)(arg1[24]) << 13);2136x9 = ((uint32_t)(arg1[23]) << 5);2137x10 = ((uint32_t)(arg1[22]) << 23);2138x11 = ((uint32_t)(arg1[21]) << 15);2139x12 = ((uint32_t)(arg1[20]) << 7);2140x13 = ((uint32_t)(arg1[19]) << 24);2141x14 = ((uint32_t)(arg1[18]) << 16);2142x15 = ((uint32_t)(arg1[17]) << 8);2143x16 = (arg1[16]);2144x17 = ((uint32_t)(arg1[15]) << 18);2145x18 = ((uint32_t)(arg1[14]) << 10);2146x19 = ((uint32_t)(arg1[13]) << 2);2147x20 = ((uint32_t)(arg1[12]) << 19);2148x21 = ((uint32_t)(arg1[11]) << 11);2149x22 = ((uint32_t)(arg1[10]) << 3);2150x23 = ((uint32_t)(arg1[9]) << 21);2151x24 = ((uint32_t)(arg1[8]) << 13);2152x25 = ((uint32_t)(arg1[7]) << 5);2153x26 = ((uint32_t)(arg1[6]) << 22);2154x27 = ((uint32_t)(arg1[5]) << 14);2155x28 = ((uint32_t)(arg1[4]) << 6);2156x29 = ((uint32_t)(arg1[3]) << 24);2157x30 = ((uint32_t)(arg1[2]) << 16);2158x31 = ((uint32_t)(arg1[1]) << 8);2159x32 = (arg1[0]);2160x33 = (x31 + (uint32_t)x32);2161x34 = (x30 + x33);2162x35 = (x29 + x34);2163x36 = (x35 & UINT32_C(0x3ffffff));2164x37 = (uint8_t)(x35 >> 26);2165x38 = (x28 + (uint32_t)x37);2166x39 = (x27 + x38);2167x40 = (x26 + x39);2168x41 = (x40 & UINT32_C(0x1ffffff));2169x42 = (uint8_t)(x40 >> 25);2170x43 = (x25 + (uint32_t)x42);2171x44 = (x24 + x43);2172x45 = (x23 + x44);2173x46 = (x45 & UINT32_C(0x3ffffff));2174x47 = (uint8_t)(x45 >> 26);2175x48 = (x22 + (uint32_t)x47);2176x49 = (x21 + x48);2177x50 = (x20 + x49);2178x51 = (x50 & UINT32_C(0x1ffffff));2179x52 = (uint8_t)(x50 >> 25);2180x53 = (x19 + (uint32_t)x52);2181x54 = (x18 + x53);2182x55 = (x17 + x54);2183x56 = (x15 + (uint32_t)x16);2184x57 = (x14 + x56);2185x58 = (x13 + x57);2186x59 = (x58 & UINT32_C(0x1ffffff));2187x60 = (uint8_t)(x58 >> 25);2188x61 = (x12 + (uint32_t)x60);2189x62 = (x11 + x61);2190x63 = (x10 + x62);2191x64 = (x63 & UINT32_C(0x3ffffff));2192x65 = (uint8_t)(x63 >> 26);2193x66 = (x9 + (uint32_t)x65);2194x67 = (x8 + x66);2195x68 = (x7 + x67);2196x69 = (x68 & UINT32_C(0x1ffffff));2197x70 = (uint8_t)(x68 >> 25);2198x71 = (x6 + (uint32_t)x70);2199x72 = (x5 + x71);2200x73 = (x4 + x72);2201x74 = (x73 & UINT32_C(0x3ffffff));2202x75 = (uint8_t)(x73 >> 26);2203x76 = (x3 + (uint32_t)x75);2204x77 = (x2 + x76);2205x78 = (x1 + x77);2206out1[0] = x36;2207out1[1] = x41;2208out1[2] = x46;2209out1[3] = x51;2210out1[4] = x55;2211out1[5] = x59;2212out1[6] = x64;2213out1[7] = x69;2214out1[8] = x74;2215out1[9] = x78;2216}22172218#endif /* not defined(BORINGSSL_CURVE25519_64BIT) */221922202221