object "plonk_verifier" { code { function allocate(size) -> ptr { ptr := mload(0x40) if eq(ptr, 0) { ptr := 0x60 } mstore(0x40, add(ptr, size)) } let size := datasize("Runtime") let offset := allocate(size) datacopy(offset, dataoffset("Runtime"), size) return(offset, size) } object "Runtime" { code { let success:bool := true let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 function validate_ec_point(x, y) -> valid:bool { { let x_lt_p:bool := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let y_lt_p:bool := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) valid := and(x_lt_p, y_lt_p) } { let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let is_affine:bool := eq(x_cube_plus_3, y_square) valid := and(valid, is_affine) } } mstore(0x20, mod(calldataload(0x0), f_q)) mstore(0x40, mod(calldataload(0x20), f_q)) mstore(0x60, mod(calldataload(0x40), f_q)) mstore(0x80, mod(calldataload(0x60), f_q)) mstore(0xa0, mod(calldataload(0x80), f_q)) mstore(0xc0, mod(calldataload(0xa0), f_q)) mstore(0xe0, mod(calldataload(0xc0), f_q)) mstore(0x100, mod(calldataload(0xe0), f_q)) mstore(0x120, mod(calldataload(0x100), f_q)) mstore(0x140, mod(calldataload(0x120), f_q)) mstore(0x160, mod(calldataload(0x140), f_q)) mstore(0x180, mod(calldataload(0x160), f_q)) mstore(0x1a0, mod(calldataload(0x180), f_q)) mstore(0x1c0, mod(calldataload(0x1a0), f_q)) mstore(0x1e0, mod(calldataload(0x1c0), f_q)) mstore(0x200, mod(calldataload(0x1e0), f_q)) mstore(0x220, mod(calldataload(0x200), f_q)) mstore(0x240, mod(calldataload(0x220), f_q)) mstore(0x0, 636471555827657750166888787375234867401705836697401370361760792659418825816) { let x := calldataload(0x240) mstore(0x260, x) let y := calldataload(0x260) mstore(0x280, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x280) mstore(0x2a0, x) let y := calldataload(0x2a0) mstore(0x2c0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x2c0) mstore(0x2e0, x) let y := calldataload(0x2e0) mstore(0x300, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x300) mstore(0x320, x) let y := calldataload(0x320) mstore(0x340, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x340) mstore(0x360, x) let y := calldataload(0x360) mstore(0x380, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x380) mstore(0x3a0, x) let y := calldataload(0x3a0) mstore(0x3c0, y) success := and(validate_ec_point(x, y), success) } mstore(0x3e0, keccak256(0x0, 992)) { let hash := mload(0x3e0) mstore(0x400, mod(hash, f_q)) mstore(0x420, hash) } { let x := calldataload(0x3c0) mstore(0x440, x) let y := calldataload(0x3e0) mstore(0x460, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x400) mstore(0x480, x) let y := calldataload(0x420) mstore(0x4a0, y) success := and(validate_ec_point(x, y), success) } mstore(0x4c0, keccak256(0x420, 160)) { let hash := mload(0x4c0) mstore(0x4e0, mod(hash, f_q)) mstore(0x500, hash) } mstore8(1312, 1) mstore(0x520, keccak256(0x500, 33)) { let hash := mload(0x520) mstore(0x540, mod(hash, f_q)) mstore(0x560, hash) } { let x := calldataload(0x440) mstore(0x580, x) let y := calldataload(0x460) mstore(0x5a0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x480) mstore(0x5c0, x) let y := calldataload(0x4a0) mstore(0x5e0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x4c0) mstore(0x600, x) let y := calldataload(0x4e0) mstore(0x620, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x500) mstore(0x640, x) let y := calldataload(0x520) mstore(0x660, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x540) mstore(0x680, x) let y := calldataload(0x560) mstore(0x6a0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x580) mstore(0x6c0, x) let y := calldataload(0x5a0) mstore(0x6e0, y) success := and(validate_ec_point(x, y), success) } mstore(0x700, keccak256(0x560, 416)) { let hash := mload(0x700) mstore(0x720, mod(hash, f_q)) mstore(0x740, hash) } { let x := calldataload(0x5c0) mstore(0x760, x) let y := calldataload(0x5e0) mstore(0x780, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x600) mstore(0x7a0, x) let y := calldataload(0x620) mstore(0x7c0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x640) mstore(0x7e0, x) let y := calldataload(0x660) mstore(0x800, y) success := and(validate_ec_point(x, y), success) } mstore(0x820, keccak256(0x740, 224)) { let hash := mload(0x820) mstore(0x840, mod(hash, f_q)) mstore(0x860, hash) } mstore(0x880, mod(calldataload(0x680), f_q)) mstore(0x8a0, mod(calldataload(0x6a0), f_q)) mstore(0x8c0, mod(calldataload(0x6c0), f_q)) mstore(0x8e0, mod(calldataload(0x6e0), f_q)) mstore(0x900, mod(calldataload(0x700), f_q)) mstore(0x920, mod(calldataload(0x720), f_q)) mstore(0x940, mod(calldataload(0x740), f_q)) mstore(0x960, mod(calldataload(0x760), f_q)) mstore(0x980, mod(calldataload(0x780), f_q)) mstore(0x9a0, mod(calldataload(0x7a0), f_q)) mstore(0x9c0, mod(calldataload(0x7c0), f_q)) mstore(0x9e0, mod(calldataload(0x7e0), f_q)) mstore(0xa00, mod(calldataload(0x800), f_q)) mstore(0xa20, mod(calldataload(0x820), f_q)) mstore(0xa40, mod(calldataload(0x840), f_q)) mstore(0xa60, mod(calldataload(0x860), f_q)) mstore(0xa80, mod(calldataload(0x880), f_q)) mstore(0xaa0, mod(calldataload(0x8a0), f_q)) mstore(0xac0, mod(calldataload(0x8c0), f_q)) mstore(0xae0, mod(calldataload(0x8e0), f_q)) mstore(0xb00, mod(calldataload(0x900), f_q)) mstore(0xb20, mod(calldataload(0x920), f_q)) mstore(0xb40, mod(calldataload(0x940), f_q)) mstore(0xb60, mod(calldataload(0x960), f_q)) mstore(0xb80, mod(calldataload(0x980), f_q)) mstore(0xba0, mod(calldataload(0x9a0), f_q)) mstore(0xbc0, mod(calldataload(0x9c0), f_q)) mstore(0xbe0, mod(calldataload(0x9e0), f_q)) mstore(0xc00, mod(calldataload(0xa00), f_q)) mstore(0xc20, mod(calldataload(0xa20), f_q)) mstore(0xc40, mod(calldataload(0xa40), f_q)) mstore(0xc60, mod(calldataload(0xa60), f_q)) mstore(0xc80, mod(calldataload(0xa80), f_q)) mstore(0xca0, mod(calldataload(0xaa0), f_q)) mstore(0xcc0, mod(calldataload(0xac0), f_q)) mstore(0xce0, mod(calldataload(0xae0), f_q)) mstore(0xd00, mod(calldataload(0xb00), f_q)) mstore(0xd20, mod(calldataload(0xb20), f_q)) mstore(0xd40, mod(calldataload(0xb40), f_q)) mstore(0xd60, mod(calldataload(0xb60), f_q)) mstore(0xd80, mod(calldataload(0xb80), f_q)) mstore(0xda0, mod(calldataload(0xba0), f_q)) mstore(0xdc0, mod(calldataload(0xbc0), f_q)) mstore(0xde0, mod(calldataload(0xbe0), f_q)) mstore(0xe00, mod(calldataload(0xc00), f_q)) mstore(0xe20, mod(calldataload(0xc20), f_q)) mstore(0xe40, mod(calldataload(0xc40), f_q)) mstore(0xe60, mod(calldataload(0xc60), f_q)) mstore(0xe80, mod(calldataload(0xc80), f_q)) mstore(0xea0, mod(calldataload(0xca0), f_q)) mstore(0xec0, mod(calldataload(0xcc0), f_q)) mstore(0xee0, mod(calldataload(0xce0), f_q)) mstore(0xf00, mod(calldataload(0xd00), f_q)) mstore(0xf20, keccak256(0x860, 1728)) { let hash := mload(0xf20) mstore(0xf40, mod(hash, f_q)) mstore(0xf60, hash) } mstore8(3968, 1) mstore(0xf80, keccak256(0xf60, 33)) { let hash := mload(0xf80) mstore(0xfa0, mod(hash, f_q)) mstore(0xfc0, hash) } { let x := calldataload(0xd20) mstore(0xfe0, x) let y := calldataload(0xd40) mstore(0x1000, y) success := and(validate_ec_point(x, y), success) } mstore(0x1020, keccak256(0xfc0, 96)) { let hash := mload(0x1020) mstore(0x1040, mod(hash, f_q)) mstore(0x1060, hash) } { let x := calldataload(0xd60) mstore(0x1080, x) let y := calldataload(0xd80) mstore(0x10a0, y) success := and(validate_ec_point(x, y), success) } { let x := mload(0x20) x := add(x, shl(88, mload(0x40))) x := add(x, shl(176, mload(0x60))) mstore(4288, x) let y := mload(0x80) y := add(y, shl(88, mload(0xa0))) y := add(y, shl(176, mload(0xc0))) mstore(4320, y) success := and(validate_ec_point(x, y), success) } { let x := mload(0xe0) x := add(x, shl(88, mload(0x100))) x := add(x, shl(176, mload(0x120))) mstore(4352, x) let y := mload(0x140) y := add(y, shl(88, mload(0x160))) y := add(y, shl(176, mload(0x180))) mstore(4384, y) success := and(validate_ec_point(x, y), success) } mstore(0x1140, mulmod(mload(0x840), mload(0x840), f_q)) mstore(0x1160, mulmod(mload(0x1140), mload(0x1140), f_q)) mstore(0x1180, mulmod(mload(0x1160), mload(0x1160), f_q)) mstore(0x11a0, mulmod(mload(0x1180), mload(0x1180), f_q)) mstore(0x11c0, mulmod(mload(0x11a0), mload(0x11a0), f_q)) mstore(0x11e0, mulmod(mload(0x11c0), mload(0x11c0), f_q)) mstore(0x1200, mulmod(mload(0x11e0), mload(0x11e0), f_q)) mstore(0x1220, mulmod(mload(0x1200), mload(0x1200), f_q)) mstore(0x1240, mulmod(mload(0x1220), mload(0x1220), f_q)) mstore(0x1260, mulmod(mload(0x1240), mload(0x1240), f_q)) mstore(0x1280, mulmod(mload(0x1260), mload(0x1260), f_q)) mstore(0x12a0, mulmod(mload(0x1280), mload(0x1280), f_q)) mstore(0x12c0, mulmod(mload(0x12a0), mload(0x12a0), f_q)) mstore(0x12e0, mulmod(mload(0x12c0), mload(0x12c0), f_q)) mstore(0x1300, mulmod(mload(0x12e0), mload(0x12e0), f_q)) mstore(0x1320, mulmod(mload(0x1300), mload(0x1300), f_q)) mstore(0x1340, mulmod(mload(0x1320), mload(0x1320), f_q)) mstore(0x1360, mulmod(mload(0x1340), mload(0x1340), f_q)) mstore(0x1380, mulmod(mload(0x1360), mload(0x1360), f_q)) mstore(0x13a0, mulmod(mload(0x1380), mload(0x1380), f_q)) mstore(0x13c0, mulmod(mload(0x13a0), mload(0x13a0), f_q)) mstore(0x13e0, mulmod(mload(0x13c0), mload(0x13c0), f_q)) mstore(0x1400, addmod(mload(0x13e0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) mstore(0x1420, mulmod(mload(0x1400), 21888237653275510688422624196183639687472264873923820041627027729598873448513, f_q)) mstore(0x1440, mulmod(mload(0x1420), 13225785879531581993054172815365636627224369411478295502904397545373139154045, f_q)) mstore(0x1460, addmod(mload(0x840), 8662456992307693229192232929891638461323994988937738840793806641202669341572, f_q)) mstore(0x1480, mulmod(mload(0x1420), 10939663269433627367777756708678102241564365262857670666700619874077960926249, f_q)) mstore(0x14a0, addmod(mload(0x840), 10948579602405647854468649036579172846983999137558363676997584312497847569368, f_q)) mstore(0x14c0, mulmod(mload(0x1420), 11016257578652593686382655500910603527869149377564754001549454008164059876499, f_q)) mstore(0x14e0, addmod(mload(0x840), 10871985293186681535863750244346671560679215022851280342148750178411748619118, f_q)) mstore(0x1500, mulmod(mload(0x1420), 15402826414547299628414612080036060696555554914079673875872749760617770134879, f_q)) mstore(0x1520, addmod(mload(0x840), 6485416457291975593831793665221214391992809486336360467825454425958038360738, f_q)) mstore(0x1540, mulmod(mload(0x1420), 21710372849001950800533397158415938114909991150039389063546734567764856596059, f_q)) mstore(0x1560, addmod(mload(0x840), 177870022837324421713008586841336973638373250376645280151469618810951899558, f_q)) mstore(0x1580, mulmod(mload(0x1420), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) mstore(0x15a0, addmod(mload(0x840), 19102728315457599142069468034376470979900453007937332237837518576196438670601, f_q)) mstore(0x15c0, mulmod(mload(0x1420), 8734126352828345679573237859165904705806588461301144420590422589042130041188, f_q)) mstore(0x15e0, addmod(mload(0x840), 13154116519010929542673167886091370382741775939114889923107781597533678454429, f_q)) mstore(0x1600, mulmod(mload(0x1420), 1, f_q)) mstore(0x1620, addmod(mload(0x840), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) mstore(0x1640, mulmod(mload(0x1420), 11211301017135681023579411905410872569206244553457844956874280139879520583390, f_q)) mstore(0x1660, addmod(mload(0x840), 10676941854703594198666993839846402519342119846958189386823924046696287912227, f_q)) mstore(0x1680, mulmod(mload(0x1420), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q)) mstore(0x16a0, addmod(mload(0x840), 20461838439117790833741043996939313553025008529160428886800406442142042007110, f_q)) mstore(0x16c0, mulmod(mload(0x1420), 12619617507853212586156872920672483948819476989779550311307282715684870266992, f_q)) mstore(0x16e0, addmod(mload(0x840), 9268625363986062636089532824584791139728887410636484032390921470890938228625, f_q)) mstore(0x1700, mulmod(mload(0x1420), 19032961837237948602743626455740240236231119053033140765040043513661803148152, f_q)) mstore(0x1720, addmod(mload(0x840), 2855281034601326619502779289517034852317245347382893578658160672914005347465, f_q)) mstore(0x1740, mulmod(mload(0x1420), 915149353520972163646494413843788069594022902357002628455555785223409501882, f_q)) mstore(0x1760, addmod(mload(0x840), 20973093518318303058599911331413487018954341498059031715242648401352398993735, f_q)) mstore(0x1780, mulmod(mload(0x1420), 3766081621734395783232337525162072736827576297943013392955872170138036189193, f_q)) mstore(0x17a0, addmod(mload(0x840), 18122161250104879439014068220095202351720788102473020950742332016437772306424, f_q)) mstore(0x17c0, mulmod(mload(0x1420), 4245441013247250116003069945606352967193023389718465410501109428393342802981, f_q)) mstore(0x17e0, addmod(mload(0x840), 17642801858592025106243335799650922121355341010697568933197094758182465692636, f_q)) mstore(0x1800, mulmod(mload(0x1420), 5854133144571823792863860130267644613802765696134002830362054821530146160770, f_q)) mstore(0x1820, addmod(mload(0x840), 16034109727267451429382545614989630474745598704282031513336149365045662334847, f_q)) mstore(0x1840, mulmod(mload(0x1420), 5980488956150442207659150513163747165544364597008566989111579977672498964212, f_q)) mstore(0x1860, addmod(mload(0x840), 15907753915688833014587255232093527923003999803407467354586624208903309531405, f_q)) mstore(0x1880, mulmod(mload(0x1420), 14557038802599140430182096396825290815503940951075961210638273254419942783582, f_q)) mstore(0x18a0, addmod(mload(0x840), 7331204069240134792064309348431984273044423449340073133059930932155865712035, f_q)) mstore(0x18c0, mulmod(mload(0x1420), 13553911191894110065493137367144919847521088405945523452288398666974237857208, f_q)) mstore(0x18e0, addmod(mload(0x840), 8334331679945165156753268378112355241027275994470510891409805519601570638409, f_q)) mstore(0x1900, mulmod(mload(0x1420), 9697063347556872083384215826199993067635178715531258559890418744774301211662, f_q)) mstore(0x1920, addmod(mload(0x840), 12191179524282403138862189919057282020913185684884775783807785441801507283955, f_q)) mstore(0x1940, mulmod(mload(0x1420), 10807735674816066981985242612061336605021639643453679977988966079770672437131, f_q)) mstore(0x1960, addmod(mload(0x840), 11080507197023208240261163133195938483526724756962354365709238106805136058486, f_q)) mstore(0x1980, mulmod(mload(0x1420), 12459868075641381822485233712013080087763946065665469821362892189399541605692, f_q)) mstore(0x19a0, addmod(mload(0x840), 9428374796197893399761172033244195000784418334750564522335311997176266889925, f_q)) mstore(0x19c0, mulmod(mload(0x1420), 16038300751658239075779628684257016433412502747804121525056508685985277092575, f_q)) mstore(0x19e0, addmod(mload(0x840), 5849942120181036146466777061000258655135861652611912818641695500590531403042, f_q)) mstore(0x1a00, mulmod(mload(0x1420), 6955697244493336113861667751840378876927906302623587437721024018233754910398, f_q)) mstore(0x1a20, addmod(mload(0x840), 14932545627345939108384737993416896211620458097792446905977180168342053585219, f_q)) mstore(0x1a40, mulmod(mload(0x1420), 13498745591877810872211159461644682954739332524336278910448604883789771736885, f_q)) mstore(0x1a60, addmod(mload(0x840), 8389497279961464350035246283612592133809031876079755433249599302786036758732, f_q)) { let prod := mload(0x1460) prod := mulmod(mload(0x14a0), prod, f_q) mstore(0x1a80, prod) prod := mulmod(mload(0x14e0), prod, f_q) mstore(0x1aa0, prod) prod := mulmod(mload(0x1520), prod, f_q) mstore(0x1ac0, prod) prod := mulmod(mload(0x1560), prod, f_q) mstore(0x1ae0, prod) prod := mulmod(mload(0x15a0), prod, f_q) mstore(0x1b00, prod) prod := mulmod(mload(0x15e0), prod, f_q) mstore(0x1b20, prod) prod := mulmod(mload(0x1620), prod, f_q) mstore(0x1b40, prod) prod := mulmod(mload(0x1660), prod, f_q) mstore(0x1b60, prod) prod := mulmod(mload(0x16a0), prod, f_q) mstore(0x1b80, prod) prod := mulmod(mload(0x16e0), prod, f_q) mstore(0x1ba0, prod) prod := mulmod(mload(0x1720), prod, f_q) mstore(0x1bc0, prod) prod := mulmod(mload(0x1760), prod, f_q) mstore(0x1be0, prod) prod := mulmod(mload(0x17a0), prod, f_q) mstore(0x1c00, prod) prod := mulmod(mload(0x17e0), prod, f_q) mstore(0x1c20, prod) prod := mulmod(mload(0x1820), prod, f_q) mstore(0x1c40, prod) prod := mulmod(mload(0x1860), prod, f_q) mstore(0x1c60, prod) prod := mulmod(mload(0x18a0), prod, f_q) mstore(0x1c80, prod) prod := mulmod(mload(0x18e0), prod, f_q) mstore(0x1ca0, prod) prod := mulmod(mload(0x1920), prod, f_q) mstore(0x1cc0, prod) prod := mulmod(mload(0x1960), prod, f_q) mstore(0x1ce0, prod) prod := mulmod(mload(0x19a0), prod, f_q) mstore(0x1d00, prod) prod := mulmod(mload(0x19e0), prod, f_q) mstore(0x1d20, prod) prod := mulmod(mload(0x1a20), prod, f_q) mstore(0x1d40, prod) prod := mulmod(mload(0x1a60), prod, f_q) mstore(0x1d60, prod) prod := mulmod(mload(0x1400), prod, f_q) mstore(0x1d80, prod) } mstore(0x1dc0, 32) mstore(0x1de0, 32) mstore(0x1e00, 32) mstore(0x1e20, mload(0x1d80)) mstore(0x1e40, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x1e60, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x1dc0, 0xc0, 0x1da0, 0x20), 1), success) { let inv := mload(0x1da0) let v v := mload(0x1400) mstore(5120, mulmod(mload(0x1d60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1a60) mstore(6752, mulmod(mload(0x1d40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1a20) mstore(6688, mulmod(mload(0x1d20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x19e0) mstore(6624, mulmod(mload(0x1d00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x19a0) mstore(6560, mulmod(mload(0x1ce0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1960) mstore(6496, mulmod(mload(0x1cc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1920) mstore(6432, mulmod(mload(0x1ca0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x18e0) mstore(6368, mulmod(mload(0x1c80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x18a0) mstore(6304, mulmod(mload(0x1c60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1860) mstore(6240, mulmod(mload(0x1c40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1820) mstore(6176, mulmod(mload(0x1c20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x17e0) mstore(6112, mulmod(mload(0x1c00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x17a0) mstore(6048, mulmod(mload(0x1be0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1760) mstore(5984, mulmod(mload(0x1bc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1720) mstore(5920, mulmod(mload(0x1ba0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x16e0) mstore(5856, mulmod(mload(0x1b80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x16a0) mstore(5792, mulmod(mload(0x1b60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1660) mstore(5728, mulmod(mload(0x1b40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1620) mstore(5664, mulmod(mload(0x1b20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x15e0) mstore(5600, mulmod(mload(0x1b00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x15a0) mstore(5536, mulmod(mload(0x1ae0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1560) mstore(5472, mulmod(mload(0x1ac0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1520) mstore(5408, mulmod(mload(0x1aa0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x14e0) mstore(5344, mulmod(mload(0x1a80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x14a0) mstore(5280, mulmod(mload(0x1460), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x1460, inv) } mstore(0x1e80, mulmod(mload(0x1440), mload(0x1460), f_q)) mstore(0x1ea0, mulmod(mload(0x1480), mload(0x14a0), f_q)) mstore(0x1ec0, mulmod(mload(0x14c0), mload(0x14e0), f_q)) mstore(0x1ee0, mulmod(mload(0x1500), mload(0x1520), f_q)) mstore(0x1f00, mulmod(mload(0x1540), mload(0x1560), f_q)) mstore(0x1f20, mulmod(mload(0x1580), mload(0x15a0), f_q)) mstore(0x1f40, mulmod(mload(0x15c0), mload(0x15e0), f_q)) mstore(0x1f60, mulmod(mload(0x1600), mload(0x1620), f_q)) mstore(0x1f80, mulmod(mload(0x1640), mload(0x1660), f_q)) mstore(0x1fa0, mulmod(mload(0x1680), mload(0x16a0), f_q)) mstore(0x1fc0, mulmod(mload(0x16c0), mload(0x16e0), f_q)) mstore(0x1fe0, mulmod(mload(0x1700), mload(0x1720), f_q)) mstore(0x2000, mulmod(mload(0x1740), mload(0x1760), f_q)) mstore(0x2020, mulmod(mload(0x1780), mload(0x17a0), f_q)) mstore(0x2040, mulmod(mload(0x17c0), mload(0x17e0), f_q)) mstore(0x2060, mulmod(mload(0x1800), mload(0x1820), f_q)) mstore(0x2080, mulmod(mload(0x1840), mload(0x1860), f_q)) mstore(0x20a0, mulmod(mload(0x1880), mload(0x18a0), f_q)) mstore(0x20c0, mulmod(mload(0x18c0), mload(0x18e0), f_q)) mstore(0x20e0, mulmod(mload(0x1900), mload(0x1920), f_q)) mstore(0x2100, mulmod(mload(0x1940), mload(0x1960), f_q)) mstore(0x2120, mulmod(mload(0x1980), mload(0x19a0), f_q)) mstore(0x2140, mulmod(mload(0x19c0), mload(0x19e0), f_q)) mstore(0x2160, mulmod(mload(0x1a00), mload(0x1a20), f_q)) mstore(0x2180, mulmod(mload(0x1a40), mload(0x1a60), f_q)) { let result := mulmod(mload(0x1f60), mload(0x20), f_q) result := addmod(mulmod(mload(0x1f80), mload(0x40), f_q), result, f_q) result := addmod(mulmod(mload(0x1fa0), mload(0x60), f_q), result, f_q) result := addmod(mulmod(mload(0x1fc0), mload(0x80), f_q), result, f_q) result := addmod(mulmod(mload(0x1fe0), mload(0xa0), f_q), result, f_q) result := addmod(mulmod(mload(0x2000), mload(0xc0), f_q), result, f_q) result := addmod(mulmod(mload(0x2020), mload(0xe0), f_q), result, f_q) result := addmod(mulmod(mload(0x2040), mload(0x100), f_q), result, f_q) result := addmod(mulmod(mload(0x2060), mload(0x120), f_q), result, f_q) result := addmod(mulmod(mload(0x2080), mload(0x140), f_q), result, f_q) result := addmod(mulmod(mload(0x20a0), mload(0x160), f_q), result, f_q) result := addmod(mulmod(mload(0x20c0), mload(0x180), f_q), result, f_q) result := addmod(mulmod(mload(0x20e0), mload(0x1a0), f_q), result, f_q) result := addmod(mulmod(mload(0x2100), mload(0x1c0), f_q), result, f_q) result := addmod(mulmod(mload(0x2120), mload(0x1e0), f_q), result, f_q) result := addmod(mulmod(mload(0x2140), mload(0x200), f_q), result, f_q) result := addmod(mulmod(mload(0x2160), mload(0x220), f_q), result, f_q) result := addmod(mulmod(mload(0x2180), mload(0x240), f_q), result, f_q) mstore(8608, result) } mstore(0x21c0, mulmod(mload(0x8c0), mload(0x8a0), f_q)) mstore(0x21e0, addmod(mload(0x880), mload(0x21c0), f_q)) mstore(0x2200, addmod(mload(0x21e0), sub(f_q, mload(0x8e0)), f_q)) mstore(0x2220, mulmod(mload(0x2200), mload(0xb60), f_q)) mstore(0x2240, mulmod(mload(0x720), mload(0x2220), f_q)) mstore(0x2260, mulmod(mload(0x940), mload(0x920), f_q)) mstore(0x2280, addmod(mload(0x900), mload(0x2260), f_q)) mstore(0x22a0, addmod(mload(0x2280), sub(f_q, mload(0x960)), f_q)) mstore(0x22c0, mulmod(mload(0x22a0), mload(0xb80), f_q)) mstore(0x22e0, addmod(mload(0x2240), mload(0x22c0), f_q)) mstore(0x2300, mulmod(mload(0x720), mload(0x22e0), f_q)) mstore(0x2320, mulmod(mload(0x9c0), mload(0x9a0), f_q)) mstore(0x2340, addmod(mload(0x980), mload(0x2320), f_q)) mstore(0x2360, addmod(mload(0x2340), sub(f_q, mload(0x9e0)), f_q)) mstore(0x2380, mulmod(mload(0x2360), mload(0xba0), f_q)) mstore(0x23a0, addmod(mload(0x2300), mload(0x2380), f_q)) mstore(0x23c0, mulmod(mload(0x720), mload(0x23a0), f_q)) mstore(0x23e0, mulmod(mload(0xa40), mload(0xa20), f_q)) mstore(0x2400, addmod(mload(0xa00), mload(0x23e0), f_q)) mstore(0x2420, addmod(mload(0x2400), sub(f_q, mload(0xa60)), f_q)) mstore(0x2440, mulmod(mload(0x2420), mload(0xbc0), f_q)) mstore(0x2460, addmod(mload(0x23c0), mload(0x2440), f_q)) mstore(0x2480, mulmod(mload(0x720), mload(0x2460), f_q)) mstore(0x24a0, mulmod(mload(0xac0), mload(0xaa0), f_q)) mstore(0x24c0, addmod(mload(0xa80), mload(0x24a0), f_q)) mstore(0x24e0, addmod(mload(0x24c0), sub(f_q, mload(0xae0)), f_q)) mstore(0x2500, mulmod(mload(0x24e0), mload(0xbe0), f_q)) mstore(0x2520, addmod(mload(0x2480), mload(0x2500), f_q)) mstore(0x2540, mulmod(mload(0x720), mload(0x2520), f_q)) mstore(0x2560, addmod(1, sub(f_q, mload(0xd20)), f_q)) mstore(0x2580, mulmod(mload(0x2560), mload(0x1f60), f_q)) mstore(0x25a0, addmod(mload(0x2540), mload(0x2580), f_q)) mstore(0x25c0, mulmod(mload(0x720), mload(0x25a0), f_q)) mstore(0x25e0, mulmod(mload(0xe40), mload(0xe40), f_q)) mstore(0x2600, addmod(mload(0x25e0), sub(f_q, mload(0xe40)), f_q)) mstore(0x2620, mulmod(mload(0x2600), mload(0x1e80), f_q)) mstore(0x2640, addmod(mload(0x25c0), mload(0x2620), f_q)) mstore(0x2660, mulmod(mload(0x720), mload(0x2640), f_q)) mstore(0x2680, addmod(mload(0xd80), sub(f_q, mload(0xd60)), f_q)) mstore(0x26a0, mulmod(mload(0x2680), mload(0x1f60), f_q)) mstore(0x26c0, addmod(mload(0x2660), mload(0x26a0), f_q)) mstore(0x26e0, mulmod(mload(0x720), mload(0x26c0), f_q)) mstore(0x2700, addmod(mload(0xde0), sub(f_q, mload(0xdc0)), f_q)) mstore(0x2720, mulmod(mload(0x2700), mload(0x1f60), f_q)) mstore(0x2740, addmod(mload(0x26e0), mload(0x2720), f_q)) mstore(0x2760, mulmod(mload(0x720), mload(0x2740), f_q)) mstore(0x2780, addmod(mload(0xe40), sub(f_q, mload(0xe20)), f_q)) mstore(0x27a0, mulmod(mload(0x2780), mload(0x1f60), f_q)) mstore(0x27c0, addmod(mload(0x2760), mload(0x27a0), f_q)) mstore(0x27e0, mulmod(mload(0x720), mload(0x27c0), f_q)) mstore(0x2800, addmod(1, sub(f_q, mload(0x1e80)), f_q)) mstore(0x2820, addmod(mload(0x1ea0), mload(0x1ec0), f_q)) mstore(0x2840, addmod(mload(0x2820), mload(0x1ee0), f_q)) mstore(0x2860, addmod(mload(0x2840), mload(0x1f00), f_q)) mstore(0x2880, addmod(mload(0x2860), mload(0x1f20), f_q)) mstore(0x28a0, addmod(mload(0x2880), mload(0x1f40), f_q)) mstore(0x28c0, addmod(mload(0x2800), sub(f_q, mload(0x28a0)), f_q)) mstore(0x28e0, mulmod(mload(0xc20), mload(0x4e0), f_q)) mstore(0x2900, addmod(mload(0xb20), mload(0x28e0), f_q)) mstore(0x2920, addmod(mload(0x2900), mload(0x540), f_q)) mstore(0x2940, mulmod(mload(0xc40), mload(0x4e0), f_q)) mstore(0x2960, addmod(mload(0x880), mload(0x2940), f_q)) mstore(0x2980, addmod(mload(0x2960), mload(0x540), f_q)) mstore(0x29a0, mulmod(mload(0x2980), mload(0x2920), f_q)) mstore(0x29c0, mulmod(mload(0x29a0), mload(0xd40), f_q)) mstore(0x29e0, mulmod(1, mload(0x4e0), f_q)) mstore(0x2a00, mulmod(mload(0x840), mload(0x29e0), f_q)) mstore(0x2a20, addmod(mload(0xb20), mload(0x2a00), f_q)) mstore(0x2a40, addmod(mload(0x2a20), mload(0x540), f_q)) mstore(0x2a60, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x4e0), f_q)) mstore(0x2a80, mulmod(mload(0x840), mload(0x2a60), f_q)) mstore(0x2aa0, addmod(mload(0x880), mload(0x2a80), f_q)) mstore(0x2ac0, addmod(mload(0x2aa0), mload(0x540), f_q)) mstore(0x2ae0, mulmod(mload(0x2ac0), mload(0x2a40), f_q)) mstore(0x2b00, mulmod(mload(0x2ae0), mload(0xd20), f_q)) mstore(0x2b20, addmod(mload(0x29c0), sub(f_q, mload(0x2b00)), f_q)) mstore(0x2b40, mulmod(mload(0x2b20), mload(0x28c0), f_q)) mstore(0x2b60, addmod(mload(0x27e0), mload(0x2b40), f_q)) mstore(0x2b80, mulmod(mload(0x720), mload(0x2b60), f_q)) mstore(0x2ba0, mulmod(mload(0xc60), mload(0x4e0), f_q)) mstore(0x2bc0, addmod(mload(0x900), mload(0x2ba0), f_q)) mstore(0x2be0, addmod(mload(0x2bc0), mload(0x540), f_q)) mstore(0x2c00, mulmod(mload(0xc80), mload(0x4e0), f_q)) mstore(0x2c20, addmod(mload(0x980), mload(0x2c00), f_q)) mstore(0x2c40, addmod(mload(0x2c20), mload(0x540), f_q)) mstore(0x2c60, mulmod(mload(0x2c40), mload(0x2be0), f_q)) mstore(0x2c80, mulmod(mload(0x2c60), mload(0xda0), f_q)) mstore(0x2ca0, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x4e0), f_q)) mstore(0x2cc0, mulmod(mload(0x840), mload(0x2ca0), f_q)) mstore(0x2ce0, addmod(mload(0x900), mload(0x2cc0), f_q)) mstore(0x2d00, addmod(mload(0x2ce0), mload(0x540), f_q)) mstore(0x2d20, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x4e0), f_q)) mstore(0x2d40, mulmod(mload(0x840), mload(0x2d20), f_q)) mstore(0x2d60, addmod(mload(0x980), mload(0x2d40), f_q)) mstore(0x2d80, addmod(mload(0x2d60), mload(0x540), f_q)) mstore(0x2da0, mulmod(mload(0x2d80), mload(0x2d00), f_q)) mstore(0x2dc0, mulmod(mload(0x2da0), mload(0xd80), f_q)) mstore(0x2de0, addmod(mload(0x2c80), sub(f_q, mload(0x2dc0)), f_q)) mstore(0x2e00, mulmod(mload(0x2de0), mload(0x28c0), f_q)) mstore(0x2e20, addmod(mload(0x2b80), mload(0x2e00), f_q)) mstore(0x2e40, mulmod(mload(0x720), mload(0x2e20), f_q)) mstore(0x2e60, mulmod(mload(0xca0), mload(0x4e0), f_q)) mstore(0x2e80, addmod(mload(0xa00), mload(0x2e60), f_q)) mstore(0x2ea0, addmod(mload(0x2e80), mload(0x540), f_q)) mstore(0x2ec0, mulmod(mload(0xcc0), mload(0x4e0), f_q)) mstore(0x2ee0, addmod(mload(0xa80), mload(0x2ec0), f_q)) mstore(0x2f00, addmod(mload(0x2ee0), mload(0x540), f_q)) mstore(0x2f20, mulmod(mload(0x2f00), mload(0x2ea0), f_q)) mstore(0x2f40, mulmod(mload(0x2f20), mload(0xe00), f_q)) mstore(0x2f60, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x4e0), f_q)) mstore(0x2f80, mulmod(mload(0x840), mload(0x2f60), f_q)) mstore(0x2fa0, addmod(mload(0xa00), mload(0x2f80), f_q)) mstore(0x2fc0, addmod(mload(0x2fa0), mload(0x540), f_q)) mstore(0x2fe0, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x4e0), f_q)) mstore(0x3000, mulmod(mload(0x840), mload(0x2fe0), f_q)) mstore(0x3020, addmod(mload(0xa80), mload(0x3000), f_q)) mstore(0x3040, addmod(mload(0x3020), mload(0x540), f_q)) mstore(0x3060, mulmod(mload(0x3040), mload(0x2fc0), f_q)) mstore(0x3080, mulmod(mload(0x3060), mload(0xde0), f_q)) mstore(0x30a0, addmod(mload(0x2f40), sub(f_q, mload(0x3080)), f_q)) mstore(0x30c0, mulmod(mload(0x30a0), mload(0x28c0), f_q)) mstore(0x30e0, addmod(mload(0x2e40), mload(0x30c0), f_q)) mstore(0x3100, mulmod(mload(0x720), mload(0x30e0), f_q)) mstore(0x3120, mulmod(mload(0xce0), mload(0x4e0), f_q)) mstore(0x3140, addmod(mload(0xb00), mload(0x3120), f_q)) mstore(0x3160, addmod(mload(0x3140), mload(0x540), f_q)) mstore(0x3180, mulmod(mload(0xd00), mload(0x4e0), f_q)) mstore(0x31a0, addmod(mload(0x21a0), mload(0x3180), f_q)) mstore(0x31c0, addmod(mload(0x31a0), mload(0x540), f_q)) mstore(0x31e0, mulmod(mload(0x31c0), mload(0x3160), f_q)) mstore(0x3200, mulmod(mload(0x31e0), mload(0xe60), f_q)) mstore(0x3220, mulmod(5625741653535312224677218588085279924365897425605943700675464992185016992283, mload(0x4e0), f_q)) mstore(0x3240, mulmod(mload(0x840), mload(0x3220), f_q)) mstore(0x3260, addmod(mload(0xb00), mload(0x3240), f_q)) mstore(0x3280, addmod(mload(0x3260), mload(0x540), f_q)) mstore(0x32a0, mulmod(14704729814417906439424896605881467874595262020190401576785074330126828718155, mload(0x4e0), f_q)) mstore(0x32c0, mulmod(mload(0x840), mload(0x32a0), f_q)) mstore(0x32e0, addmod(mload(0x21a0), mload(0x32c0), f_q)) mstore(0x3300, addmod(mload(0x32e0), mload(0x540), f_q)) mstore(0x3320, mulmod(mload(0x3300), mload(0x3280), f_q)) mstore(0x3340, mulmod(mload(0x3320), mload(0xe40), f_q)) mstore(0x3360, addmod(mload(0x3200), sub(f_q, mload(0x3340)), f_q)) mstore(0x3380, mulmod(mload(0x3360), mload(0x28c0), f_q)) mstore(0x33a0, addmod(mload(0x3100), mload(0x3380), f_q)) mstore(0x33c0, mulmod(mload(0x720), mload(0x33a0), f_q)) mstore(0x33e0, addmod(1, sub(f_q, mload(0xe80)), f_q)) mstore(0x3400, mulmod(mload(0x33e0), mload(0x1f60), f_q)) mstore(0x3420, addmod(mload(0x33c0), mload(0x3400), f_q)) mstore(0x3440, mulmod(mload(0x720), mload(0x3420), f_q)) mstore(0x3460, mulmod(mload(0xe80), mload(0xe80), f_q)) mstore(0x3480, addmod(mload(0x3460), sub(f_q, mload(0xe80)), f_q)) mstore(0x34a0, mulmod(mload(0x3480), mload(0x1e80), f_q)) mstore(0x34c0, addmod(mload(0x3440), mload(0x34a0), f_q)) mstore(0x34e0, mulmod(mload(0x720), mload(0x34c0), f_q)) mstore(0x3500, addmod(mload(0xec0), mload(0x4e0), f_q)) mstore(0x3520, mulmod(mload(0x3500), mload(0xea0), f_q)) mstore(0x3540, addmod(mload(0xf00), mload(0x540), f_q)) mstore(0x3560, mulmod(mload(0x3540), mload(0x3520), f_q)) mstore(0x3580, addmod(mload(0xb00), mload(0x4e0), f_q)) mstore(0x35a0, mulmod(mload(0x3580), mload(0xe80), f_q)) mstore(0x35c0, addmod(mload(0xb40), mload(0x540), f_q)) mstore(0x35e0, mulmod(mload(0x35c0), mload(0x35a0), f_q)) mstore(0x3600, addmod(mload(0x3560), sub(f_q, mload(0x35e0)), f_q)) mstore(0x3620, mulmod(mload(0x3600), mload(0x28c0), f_q)) mstore(0x3640, addmod(mload(0x34e0), mload(0x3620), f_q)) mstore(0x3660, mulmod(mload(0x720), mload(0x3640), f_q)) mstore(0x3680, addmod(mload(0xec0), sub(f_q, mload(0xf00)), f_q)) mstore(0x36a0, mulmod(mload(0x3680), mload(0x1f60), f_q)) mstore(0x36c0, addmod(mload(0x3660), mload(0x36a0), f_q)) mstore(0x36e0, mulmod(mload(0x720), mload(0x36c0), f_q)) mstore(0x3700, mulmod(mload(0x3680), mload(0x28c0), f_q)) mstore(0x3720, addmod(mload(0xec0), sub(f_q, mload(0xee0)), f_q)) mstore(0x3740, mulmod(mload(0x3720), mload(0x3700), f_q)) mstore(0x3760, addmod(mload(0x36e0), mload(0x3740), f_q)) mstore(0x3780, mulmod(mload(0x13e0), mload(0x13e0), f_q)) mstore(0x37a0, mulmod(mload(0x3780), mload(0x13e0), f_q)) mstore(0x37c0, mulmod(1, mload(0x13e0), f_q)) mstore(0x37e0, mulmod(1, mload(0x3780), f_q)) mstore(0x3800, mulmod(mload(0x3760), mload(0x1400), f_q)) mstore(0x3820, mulmod(mload(0x1140), mload(0x840), f_q)) mstore(0x3840, mulmod(mload(0x3820), mload(0x840), f_q)) mstore(0x3860, mulmod(mload(0x840), 1, f_q)) mstore(0x3880, addmod(mload(0x1040), sub(f_q, mload(0x3860)), f_q)) mstore(0x38a0, mulmod(mload(0x840), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q)) mstore(0x38c0, addmod(mload(0x1040), sub(f_q, mload(0x38a0)), f_q)) mstore(0x38e0, mulmod(mload(0x840), 8734126352828345679573237859165904705806588461301144420590422589042130041188, f_q)) mstore(0x3900, addmod(mload(0x1040), sub(f_q, mload(0x38e0)), f_q)) mstore(0x3920, mulmod(mload(0x840), 11211301017135681023579411905410872569206244553457844956874280139879520583390, f_q)) mstore(0x3940, addmod(mload(0x1040), sub(f_q, mload(0x3920)), f_q)) mstore(0x3960, mulmod(mload(0x840), 12619617507853212586156872920672483948819476989779550311307282715684870266992, f_q)) mstore(0x3980, addmod(mload(0x1040), sub(f_q, mload(0x3960)), f_q)) mstore(0x39a0, mulmod(mload(0x840), 13225785879531581993054172815365636627224369411478295502904397545373139154045, f_q)) mstore(0x39c0, addmod(mload(0x1040), sub(f_q, mload(0x39a0)), f_q)) { let result := mulmod(mload(0x1040), mulmod(mload(0x3820), 3544324119167359571073009690693121464267965232733679586767649244433889388945, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x3820), 18343918752671915651173396054564153624280399167682354756930554942141919106672, f_q), f_q), result, f_q) mstore(14816, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x3820), 3860370625838117017501327045244227871206764201116468958063324100051382735289, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x3820), 21616901807277407275624036604424346159916096890712898844034238973395610537327, f_q), f_q), result, f_q) mstore(14848, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x3820), 21616901807277407275624036604424346159916096890712898844034238973395610537327, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x3820), 889236556954614024749610889108815341999962898269585485843658889664869519176, f_q), f_q), result, f_q) mstore(14880, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x3820), 3209408481237076479025468386201293941554240476766691830436732310949352383503, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x3820), 12080394110851700286656425387058292751221637853580771255128961096834426654570, f_q), f_q), result, f_q) mstore(14912, result) } mstore(0x3a60, mulmod(1, mload(0x3880), f_q)) mstore(0x3a80, mulmod(mload(0x3a60), mload(0x3940), f_q)) mstore(0x3aa0, mulmod(mload(0x3a80), mload(0x38c0), f_q)) mstore(0x3ac0, mulmod(mload(0x3aa0), mload(0x3980), f_q)) { let result := mulmod(mload(0x1040), 1, f_q) result := addmod(mulmod(mload(0x840), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) mstore(15072, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x1140), 8390819244605639573390577733158868133682115698337564550620146375401109684432, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x1140), 13497423627233635648855828012098406954866248702078469793078057811174698811185, f_q), f_q), result, f_q) mstore(15104, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x1140), 14389468897523033212448771694851898440525479866834419679925499462425232628530, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x1140), 10771624105926513343199793365135253961557027396599172824137553349410803667382, f_q), f_q), result, f_q) mstore(15136, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x1140), 8021781111580269725587432039983408559403601261632071736490564397134126857583, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x1140), 13263758384809315129424392494083758423780924407584659157289746760747196496964, f_q), f_q), result, f_q) mstore(15168, result) } mstore(0x3b60, mulmod(mload(0x3a80), mload(0x39c0), f_q)) { let result := mulmod(mload(0x1040), mulmod(mload(0x840), 10676941854703594198666993839846402519342119846958189386823924046696287912228, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x840), 11211301017135681023579411905410872569206244553457844956874280139879520583389, f_q), f_q), result, f_q) mstore(15232, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x840), 11211301017135681023579411905410872569206244553457844956874280139879520583389, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x840), 9784896584414196635074050157092911033682888682202239499976482395445754094883, f_q), f_q), result, f_q) mstore(15264, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x840), 13154116519010929542673167886091370382741775939114889923107781597533678454430, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x840), 8734126352828345679573237859165904705806588461301144420590422589042130041187, f_q), f_q), result, f_q) mstore(15296, result) } { let result := mulmod(mload(0x1040), mulmod(mload(0x840), 8734126352828345679573237859165904705806588461301144420590422589042130041187, f_q), f_q) result := addmod(mulmod(mload(0x840), mulmod(mload(0x840), 5948611796446669599396300148285100597158677068822442314729736978662760216172, f_q), f_q), result, f_q) mstore(15328, result) } mstore(0x3c00, mulmod(mload(0x3a60), mload(0x3900), f_q)) { let prod := mload(0x39e0) prod := mulmod(mload(0x3a00), prod, f_q) mstore(0x3c20, prod) prod := mulmod(mload(0x3a20), prod, f_q) mstore(0x3c40, prod) prod := mulmod(mload(0x3a40), prod, f_q) mstore(0x3c60, prod) prod := mulmod(mload(0x3ae0), prod, f_q) mstore(0x3c80, prod) prod := mulmod(mload(0x3a60), prod, f_q) mstore(0x3ca0, prod) prod := mulmod(mload(0x3b00), prod, f_q) mstore(0x3cc0, prod) prod := mulmod(mload(0x3b20), prod, f_q) mstore(0x3ce0, prod) prod := mulmod(mload(0x3b40), prod, f_q) mstore(0x3d00, prod) prod := mulmod(mload(0x3b60), prod, f_q) mstore(0x3d20, prod) prod := mulmod(mload(0x3b80), prod, f_q) mstore(0x3d40, prod) prod := mulmod(mload(0x3ba0), prod, f_q) mstore(0x3d60, prod) prod := mulmod(mload(0x3a80), prod, f_q) mstore(0x3d80, prod) prod := mulmod(mload(0x3bc0), prod, f_q) mstore(0x3da0, prod) prod := mulmod(mload(0x3be0), prod, f_q) mstore(0x3dc0, prod) prod := mulmod(mload(0x3c00), prod, f_q) mstore(0x3de0, prod) } mstore(0x3e20, 32) mstore(0x3e40, 32) mstore(0x3e60, 32) mstore(0x3e80, mload(0x3de0)) mstore(0x3ea0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x3ec0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x3e20, 0xc0, 0x3e00, 0x20), 1), success) { let inv := mload(0x3e00) let v v := mload(0x3c00) mstore(15360, mulmod(mload(0x3dc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3be0) mstore(15328, mulmod(mload(0x3da0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3bc0) mstore(15296, mulmod(mload(0x3d80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3a80) mstore(14976, mulmod(mload(0x3d60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3ba0) mstore(15264, mulmod(mload(0x3d40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3b80) mstore(15232, mulmod(mload(0x3d20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3b60) mstore(15200, mulmod(mload(0x3d00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3b40) mstore(15168, mulmod(mload(0x3ce0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3b20) mstore(15136, mulmod(mload(0x3cc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3b00) mstore(15104, mulmod(mload(0x3ca0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3a60) mstore(14944, mulmod(mload(0x3c80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3ae0) mstore(15072, mulmod(mload(0x3c60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3a40) mstore(14912, mulmod(mload(0x3c40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3a20) mstore(14880, mulmod(mload(0x3c20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3a00) mstore(14848, mulmod(mload(0x39e0), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x39e0, inv) } { let result := mload(0x39e0) result := addmod(mload(0x3a00), result, f_q) result := addmod(mload(0x3a20), result, f_q) result := addmod(mload(0x3a40), result, f_q) mstore(16096, result) } mstore(0x3f00, mulmod(mload(0x3ac0), mload(0x3a60), f_q)) { let result := mload(0x3ae0) mstore(16160, result) } mstore(0x3f40, mulmod(mload(0x3ac0), mload(0x3b60), f_q)) { let result := mload(0x3b00) result := addmod(mload(0x3b20), result, f_q) result := addmod(mload(0x3b40), result, f_q) mstore(16224, result) } mstore(0x3f80, mulmod(mload(0x3ac0), mload(0x3a80), f_q)) { let result := mload(0x3b80) result := addmod(mload(0x3ba0), result, f_q) mstore(16288, result) } mstore(0x3fc0, mulmod(mload(0x3ac0), mload(0x3c00), f_q)) { let result := mload(0x3bc0) result := addmod(mload(0x3be0), result, f_q) mstore(16352, result) } { let prod := mload(0x3ee0) prod := mulmod(mload(0x3f20), prod, f_q) mstore(0x4000, prod) prod := mulmod(mload(0x3f60), prod, f_q) mstore(0x4020, prod) prod := mulmod(mload(0x3fa0), prod, f_q) mstore(0x4040, prod) prod := mulmod(mload(0x3fe0), prod, f_q) mstore(0x4060, prod) } mstore(0x40a0, 32) mstore(0x40c0, 32) mstore(0x40e0, 32) mstore(0x4100, mload(0x4060)) mstore(0x4120, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x4140, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x40a0, 0xc0, 0x4080, 0x20), 1), success) { let inv := mload(0x4080) let v v := mload(0x3fe0) mstore(16352, mulmod(mload(0x4040), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3fa0) mstore(16288, mulmod(mload(0x4020), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3f60) mstore(16224, mulmod(mload(0x4000), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3f20) mstore(16160, mulmod(mload(0x3ee0), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x3ee0, inv) } mstore(0x4160, mulmod(mload(0x3f00), mload(0x3f20), f_q)) mstore(0x4180, mulmod(mload(0x3f40), mload(0x3f60), f_q)) mstore(0x41a0, mulmod(mload(0x3f80), mload(0x3fa0), f_q)) mstore(0x41c0, mulmod(mload(0x3fc0), mload(0x3fe0), f_q)) mstore(0x41e0, mulmod(mload(0xf40), mload(0xf40), f_q)) mstore(0x4200, mulmod(mload(0x41e0), mload(0xf40), f_q)) mstore(0x4220, mulmod(mload(0x4200), mload(0xf40), f_q)) mstore(0x4240, mulmod(mload(0x4220), mload(0xf40), f_q)) mstore(0x4260, mulmod(mload(0x4240), mload(0xf40), f_q)) mstore(0x4280, mulmod(mload(0x4260), mload(0xf40), f_q)) mstore(0x42a0, mulmod(mload(0x4280), mload(0xf40), f_q)) mstore(0x42c0, mulmod(mload(0x42a0), mload(0xf40), f_q)) mstore(0x42e0, mulmod(mload(0x42c0), mload(0xf40), f_q)) mstore(0x4300, mulmod(mload(0x42e0), mload(0xf40), f_q)) mstore(0x4320, mulmod(mload(0x4300), mload(0xf40), f_q)) mstore(0x4340, mulmod(mload(0x4320), mload(0xf40), f_q)) mstore(0x4360, mulmod(mload(0x4340), mload(0xf40), f_q)) mstore(0x4380, mulmod(mload(0x4360), mload(0xf40), f_q)) mstore(0x43a0, mulmod(mload(0x4380), mload(0xf40), f_q)) mstore(0x43c0, mulmod(mload(0x43a0), mload(0xf40), f_q)) mstore(0x43e0, mulmod(mload(0x43c0), mload(0xf40), f_q)) mstore(0x4400, mulmod(mload(0x43e0), mload(0xf40), f_q)) mstore(0x4420, mulmod(mload(0xfa0), mload(0xfa0), f_q)) mstore(0x4440, mulmod(mload(0x4420), mload(0xfa0), f_q)) mstore(0x4460, mulmod(mload(0x4440), mload(0xfa0), f_q)) mstore(0x4480, mulmod(mload(0x4460), mload(0xfa0), f_q)) { let result := mulmod(mload(0x880), mload(0x39e0), f_q) result := addmod(mulmod(mload(0x8a0), mload(0x3a00), f_q), result, f_q) result := addmod(mulmod(mload(0x8c0), mload(0x3a20), f_q), result, f_q) result := addmod(mulmod(mload(0x8e0), mload(0x3a40), f_q), result, f_q) mstore(17568, result) } mstore(0x44c0, mulmod(mload(0x44a0), mload(0x3ee0), f_q)) mstore(0x44e0, mulmod(sub(f_q, mload(0x44c0)), 1, f_q)) { let result := mulmod(mload(0x900), mload(0x39e0), f_q) result := addmod(mulmod(mload(0x920), mload(0x3a00), f_q), result, f_q) result := addmod(mulmod(mload(0x940), mload(0x3a20), f_q), result, f_q) result := addmod(mulmod(mload(0x960), mload(0x3a40), f_q), result, f_q) mstore(17664, result) } mstore(0x4520, mulmod(mload(0x4500), mload(0x3ee0), f_q)) mstore(0x4540, mulmod(sub(f_q, mload(0x4520)), mload(0xf40), f_q)) mstore(0x4560, mulmod(1, mload(0xf40), f_q)) mstore(0x4580, addmod(mload(0x44e0), mload(0x4540), f_q)) { let result := mulmod(mload(0x980), mload(0x39e0), f_q) result := addmod(mulmod(mload(0x9a0), mload(0x3a00), f_q), result, f_q) result := addmod(mulmod(mload(0x9c0), mload(0x3a20), f_q), result, f_q) result := addmod(mulmod(mload(0x9e0), mload(0x3a40), f_q), result, f_q) mstore(17824, result) } mstore(0x45c0, mulmod(mload(0x45a0), mload(0x3ee0), f_q)) mstore(0x45e0, mulmod(sub(f_q, mload(0x45c0)), mload(0x41e0), f_q)) mstore(0x4600, mulmod(1, mload(0x41e0), f_q)) mstore(0x4620, addmod(mload(0x4580), mload(0x45e0), f_q)) { let result := mulmod(mload(0xa00), mload(0x39e0), f_q) result := addmod(mulmod(mload(0xa20), mload(0x3a00), f_q), result, f_q) result := addmod(mulmod(mload(0xa40), mload(0x3a20), f_q), result, f_q) result := addmod(mulmod(mload(0xa60), mload(0x3a40), f_q), result, f_q) mstore(17984, result) } mstore(0x4660, mulmod(mload(0x4640), mload(0x3ee0), f_q)) mstore(0x4680, mulmod(sub(f_q, mload(0x4660)), mload(0x4200), f_q)) mstore(0x46a0, mulmod(1, mload(0x4200), f_q)) mstore(0x46c0, addmod(mload(0x4620), mload(0x4680), f_q)) { let result := mulmod(mload(0xa80), mload(0x39e0), f_q) result := addmod(mulmod(mload(0xaa0), mload(0x3a00), f_q), result, f_q) result := addmod(mulmod(mload(0xac0), mload(0x3a20), f_q), result, f_q) result := addmod(mulmod(mload(0xae0), mload(0x3a40), f_q), result, f_q) mstore(18144, result) } mstore(0x4700, mulmod(mload(0x46e0), mload(0x3ee0), f_q)) mstore(0x4720, mulmod(sub(f_q, mload(0x4700)), mload(0x4220), f_q)) mstore(0x4740, mulmod(1, mload(0x4220), f_q)) mstore(0x4760, addmod(mload(0x46c0), mload(0x4720), f_q)) mstore(0x4780, mulmod(mload(0x4760), 1, f_q)) mstore(0x47a0, mulmod(mload(0x4560), 1, f_q)) mstore(0x47c0, mulmod(mload(0x4600), 1, f_q)) mstore(0x47e0, mulmod(mload(0x46a0), 1, f_q)) mstore(0x4800, mulmod(mload(0x4740), 1, f_q)) mstore(0x4820, mulmod(1, mload(0x3f00), f_q)) { let result := mulmod(mload(0xb00), mload(0x3ae0), f_q) mstore(18496, result) } mstore(0x4860, mulmod(mload(0x4840), mload(0x4160), f_q)) mstore(0x4880, mulmod(sub(f_q, mload(0x4860)), 1, f_q)) mstore(0x48a0, mulmod(mload(0x4820), 1, f_q)) { let result := mulmod(mload(0xf00), mload(0x3ae0), f_q) mstore(18624, result) } mstore(0x48e0, mulmod(mload(0x48c0), mload(0x4160), f_q)) mstore(0x4900, mulmod(sub(f_q, mload(0x48e0)), mload(0xf40), f_q)) mstore(0x4920, mulmod(mload(0x4820), mload(0xf40), f_q)) mstore(0x4940, addmod(mload(0x4880), mload(0x4900), f_q)) { let result := mulmod(mload(0xb20), mload(0x3ae0), f_q) mstore(18784, result) } mstore(0x4980, mulmod(mload(0x4960), mload(0x4160), f_q)) mstore(0x49a0, mulmod(sub(f_q, mload(0x4980)), mload(0x41e0), f_q)) mstore(0x49c0, mulmod(mload(0x4820), mload(0x41e0), f_q)) mstore(0x49e0, addmod(mload(0x4940), mload(0x49a0), f_q)) { let result := mulmod(mload(0xb40), mload(0x3ae0), f_q) mstore(18944, result) } mstore(0x4a20, mulmod(mload(0x4a00), mload(0x4160), f_q)) mstore(0x4a40, mulmod(sub(f_q, mload(0x4a20)), mload(0x4200), f_q)) mstore(0x4a60, mulmod(mload(0x4820), mload(0x4200), f_q)) mstore(0x4a80, addmod(mload(0x49e0), mload(0x4a40), f_q)) { let result := mulmod(mload(0xb60), mload(0x3ae0), f_q) mstore(19104, result) } mstore(0x4ac0, mulmod(mload(0x4aa0), mload(0x4160), f_q)) mstore(0x4ae0, mulmod(sub(f_q, mload(0x4ac0)), mload(0x4220), f_q)) mstore(0x4b00, mulmod(mload(0x4820), mload(0x4220), f_q)) mstore(0x4b20, addmod(mload(0x4a80), mload(0x4ae0), f_q)) { let result := mulmod(mload(0xb80), mload(0x3ae0), f_q) mstore(19264, result) } mstore(0x4b60, mulmod(mload(0x4b40), mload(0x4160), f_q)) mstore(0x4b80, mulmod(sub(f_q, mload(0x4b60)), mload(0x4240), f_q)) mstore(0x4ba0, mulmod(mload(0x4820), mload(0x4240), f_q)) mstore(0x4bc0, addmod(mload(0x4b20), mload(0x4b80), f_q)) { let result := mulmod(mload(0xba0), mload(0x3ae0), f_q) mstore(19424, result) } mstore(0x4c00, mulmod(mload(0x4be0), mload(0x4160), f_q)) mstore(0x4c20, mulmod(sub(f_q, mload(0x4c00)), mload(0x4260), f_q)) mstore(0x4c40, mulmod(mload(0x4820), mload(0x4260), f_q)) mstore(0x4c60, addmod(mload(0x4bc0), mload(0x4c20), f_q)) { let result := mulmod(mload(0xbc0), mload(0x3ae0), f_q) mstore(19584, result) } mstore(0x4ca0, mulmod(mload(0x4c80), mload(0x4160), f_q)) mstore(0x4cc0, mulmod(sub(f_q, mload(0x4ca0)), mload(0x4280), f_q)) mstore(0x4ce0, mulmod(mload(0x4820), mload(0x4280), f_q)) mstore(0x4d00, addmod(mload(0x4c60), mload(0x4cc0), f_q)) { let result := mulmod(mload(0xbe0), mload(0x3ae0), f_q) mstore(19744, result) } mstore(0x4d40, mulmod(mload(0x4d20), mload(0x4160), f_q)) mstore(0x4d60, mulmod(sub(f_q, mload(0x4d40)), mload(0x42a0), f_q)) mstore(0x4d80, mulmod(mload(0x4820), mload(0x42a0), f_q)) mstore(0x4da0, addmod(mload(0x4d00), mload(0x4d60), f_q)) { let result := mulmod(mload(0xc20), mload(0x3ae0), f_q) mstore(19904, result) } mstore(0x4de0, mulmod(mload(0x4dc0), mload(0x4160), f_q)) mstore(0x4e00, mulmod(sub(f_q, mload(0x4de0)), mload(0x42c0), f_q)) mstore(0x4e20, mulmod(mload(0x4820), mload(0x42c0), f_q)) mstore(0x4e40, addmod(mload(0x4da0), mload(0x4e00), f_q)) { let result := mulmod(mload(0xc40), mload(0x3ae0), f_q) mstore(20064, result) } mstore(0x4e80, mulmod(mload(0x4e60), mload(0x4160), f_q)) mstore(0x4ea0, mulmod(sub(f_q, mload(0x4e80)), mload(0x42e0), f_q)) mstore(0x4ec0, mulmod(mload(0x4820), mload(0x42e0), f_q)) mstore(0x4ee0, addmod(mload(0x4e40), mload(0x4ea0), f_q)) { let result := mulmod(mload(0xc60), mload(0x3ae0), f_q) mstore(20224, result) } mstore(0x4f20, mulmod(mload(0x4f00), mload(0x4160), f_q)) mstore(0x4f40, mulmod(sub(f_q, mload(0x4f20)), mload(0x4300), f_q)) mstore(0x4f60, mulmod(mload(0x4820), mload(0x4300), f_q)) mstore(0x4f80, addmod(mload(0x4ee0), mload(0x4f40), f_q)) { let result := mulmod(mload(0xc80), mload(0x3ae0), f_q) mstore(20384, result) } mstore(0x4fc0, mulmod(mload(0x4fa0), mload(0x4160), f_q)) mstore(0x4fe0, mulmod(sub(f_q, mload(0x4fc0)), mload(0x4320), f_q)) mstore(0x5000, mulmod(mload(0x4820), mload(0x4320), f_q)) mstore(0x5020, addmod(mload(0x4f80), mload(0x4fe0), f_q)) { let result := mulmod(mload(0xca0), mload(0x3ae0), f_q) mstore(20544, result) } mstore(0x5060, mulmod(mload(0x5040), mload(0x4160), f_q)) mstore(0x5080, mulmod(sub(f_q, mload(0x5060)), mload(0x4340), f_q)) mstore(0x50a0, mulmod(mload(0x4820), mload(0x4340), f_q)) mstore(0x50c0, addmod(mload(0x5020), mload(0x5080), f_q)) { let result := mulmod(mload(0xcc0), mload(0x3ae0), f_q) mstore(20704, result) } mstore(0x5100, mulmod(mload(0x50e0), mload(0x4160), f_q)) mstore(0x5120, mulmod(sub(f_q, mload(0x5100)), mload(0x4360), f_q)) mstore(0x5140, mulmod(mload(0x4820), mload(0x4360), f_q)) mstore(0x5160, addmod(mload(0x50c0), mload(0x5120), f_q)) { let result := mulmod(mload(0xce0), mload(0x3ae0), f_q) mstore(20864, result) } mstore(0x51a0, mulmod(mload(0x5180), mload(0x4160), f_q)) mstore(0x51c0, mulmod(sub(f_q, mload(0x51a0)), mload(0x4380), f_q)) mstore(0x51e0, mulmod(mload(0x4820), mload(0x4380), f_q)) mstore(0x5200, addmod(mload(0x5160), mload(0x51c0), f_q)) { let result := mulmod(mload(0xd00), mload(0x3ae0), f_q) mstore(21024, result) } mstore(0x5240, mulmod(mload(0x5220), mload(0x4160), f_q)) mstore(0x5260, mulmod(sub(f_q, mload(0x5240)), mload(0x43a0), f_q)) mstore(0x5280, mulmod(mload(0x4820), mload(0x43a0), f_q)) mstore(0x52a0, addmod(mload(0x5200), mload(0x5260), f_q)) mstore(0x52c0, mulmod(mload(0x37c0), mload(0x3f00), f_q)) mstore(0x52e0, mulmod(mload(0x37e0), mload(0x3f00), f_q)) { let result := mulmod(mload(0x3800), mload(0x3ae0), f_q) mstore(21248, result) } mstore(0x5320, mulmod(mload(0x5300), mload(0x4160), f_q)) mstore(0x5340, mulmod(sub(f_q, mload(0x5320)), mload(0x43c0), f_q)) mstore(0x5360, mulmod(mload(0x4820), mload(0x43c0), f_q)) mstore(0x5380, mulmod(mload(0x52c0), mload(0x43c0), f_q)) mstore(0x53a0, mulmod(mload(0x52e0), mload(0x43c0), f_q)) mstore(0x53c0, addmod(mload(0x52a0), mload(0x5340), f_q)) { let result := mulmod(mload(0xc00), mload(0x3ae0), f_q) mstore(21472, result) } mstore(0x5400, mulmod(mload(0x53e0), mload(0x4160), f_q)) mstore(0x5420, mulmod(sub(f_q, mload(0x5400)), mload(0x43e0), f_q)) mstore(0x5440, mulmod(mload(0x4820), mload(0x43e0), f_q)) mstore(0x5460, addmod(mload(0x53c0), mload(0x5420), f_q)) mstore(0x5480, mulmod(mload(0x5460), mload(0xfa0), f_q)) mstore(0x54a0, mulmod(mload(0x48a0), mload(0xfa0), f_q)) mstore(0x54c0, mulmod(mload(0x4920), mload(0xfa0), f_q)) mstore(0x54e0, mulmod(mload(0x49c0), mload(0xfa0), f_q)) mstore(0x5500, mulmod(mload(0x4a60), mload(0xfa0), f_q)) mstore(0x5520, mulmod(mload(0x4b00), mload(0xfa0), f_q)) mstore(0x5540, mulmod(mload(0x4ba0), mload(0xfa0), f_q)) mstore(0x5560, mulmod(mload(0x4c40), mload(0xfa0), f_q)) mstore(0x5580, mulmod(mload(0x4ce0), mload(0xfa0), f_q)) mstore(0x55a0, mulmod(mload(0x4d80), mload(0xfa0), f_q)) mstore(0x55c0, mulmod(mload(0x4e20), mload(0xfa0), f_q)) mstore(0x55e0, mulmod(mload(0x4ec0), mload(0xfa0), f_q)) mstore(0x5600, mulmod(mload(0x4f60), mload(0xfa0), f_q)) mstore(0x5620, mulmod(mload(0x5000), mload(0xfa0), f_q)) mstore(0x5640, mulmod(mload(0x50a0), mload(0xfa0), f_q)) mstore(0x5660, mulmod(mload(0x5140), mload(0xfa0), f_q)) mstore(0x5680, mulmod(mload(0x51e0), mload(0xfa0), f_q)) mstore(0x56a0, mulmod(mload(0x5280), mload(0xfa0), f_q)) mstore(0x56c0, mulmod(mload(0x5360), mload(0xfa0), f_q)) mstore(0x56e0, mulmod(mload(0x5380), mload(0xfa0), f_q)) mstore(0x5700, mulmod(mload(0x53a0), mload(0xfa0), f_q)) mstore(0x5720, mulmod(mload(0x5440), mload(0xfa0), f_q)) mstore(0x5740, addmod(mload(0x4780), mload(0x5480), f_q)) mstore(0x5760, mulmod(1, mload(0x3f40), f_q)) { let result := mulmod(mload(0xd20), mload(0x3b00), f_q) result := addmod(mulmod(mload(0xd40), mload(0x3b20), f_q), result, f_q) result := addmod(mulmod(mload(0xd60), mload(0x3b40), f_q), result, f_q) mstore(22400, result) } mstore(0x57a0, mulmod(mload(0x5780), mload(0x4180), f_q)) mstore(0x57c0, mulmod(sub(f_q, mload(0x57a0)), 1, f_q)) mstore(0x57e0, mulmod(mload(0x5760), 1, f_q)) { let result := mulmod(mload(0xd80), mload(0x3b00), f_q) result := addmod(mulmod(mload(0xda0), mload(0x3b20), f_q), result, f_q) result := addmod(mulmod(mload(0xdc0), mload(0x3b40), f_q), result, f_q) mstore(22528, result) } mstore(0x5820, mulmod(mload(0x5800), mload(0x4180), f_q)) mstore(0x5840, mulmod(sub(f_q, mload(0x5820)), mload(0xf40), f_q)) mstore(0x5860, mulmod(mload(0x5760), mload(0xf40), f_q)) mstore(0x5880, addmod(mload(0x57c0), mload(0x5840), f_q)) { let result := mulmod(mload(0xde0), mload(0x3b00), f_q) result := addmod(mulmod(mload(0xe00), mload(0x3b20), f_q), result, f_q) result := addmod(mulmod(mload(0xe20), mload(0x3b40), f_q), result, f_q) mstore(22688, result) } mstore(0x58c0, mulmod(mload(0x58a0), mload(0x4180), f_q)) mstore(0x58e0, mulmod(sub(f_q, mload(0x58c0)), mload(0x41e0), f_q)) mstore(0x5900, mulmod(mload(0x5760), mload(0x41e0), f_q)) mstore(0x5920, addmod(mload(0x5880), mload(0x58e0), f_q)) mstore(0x5940, mulmod(mload(0x5920), mload(0x4420), f_q)) mstore(0x5960, mulmod(mload(0x57e0), mload(0x4420), f_q)) mstore(0x5980, mulmod(mload(0x5860), mload(0x4420), f_q)) mstore(0x59a0, mulmod(mload(0x5900), mload(0x4420), f_q)) mstore(0x59c0, addmod(mload(0x5740), mload(0x5940), f_q)) mstore(0x59e0, mulmod(1, mload(0x3f80), f_q)) { let result := mulmod(mload(0xe40), mload(0x3b80), f_q) result := addmod(mulmod(mload(0xe60), mload(0x3ba0), f_q), result, f_q) mstore(23040, result) } mstore(0x5a20, mulmod(mload(0x5a00), mload(0x41a0), f_q)) mstore(0x5a40, mulmod(sub(f_q, mload(0x5a20)), 1, f_q)) mstore(0x5a60, mulmod(mload(0x59e0), 1, f_q)) { let result := mulmod(mload(0xe80), mload(0x3b80), f_q) result := addmod(mulmod(mload(0xea0), mload(0x3ba0), f_q), result, f_q) mstore(23168, result) } mstore(0x5aa0, mulmod(mload(0x5a80), mload(0x41a0), f_q)) mstore(0x5ac0, mulmod(sub(f_q, mload(0x5aa0)), mload(0xf40), f_q)) mstore(0x5ae0, mulmod(mload(0x59e0), mload(0xf40), f_q)) mstore(0x5b00, addmod(mload(0x5a40), mload(0x5ac0), f_q)) mstore(0x5b20, mulmod(mload(0x5b00), mload(0x4440), f_q)) mstore(0x5b40, mulmod(mload(0x5a60), mload(0x4440), f_q)) mstore(0x5b60, mulmod(mload(0x5ae0), mload(0x4440), f_q)) mstore(0x5b80, addmod(mload(0x59c0), mload(0x5b20), f_q)) mstore(0x5ba0, mulmod(1, mload(0x3fc0), f_q)) { let result := mulmod(mload(0xec0), mload(0x3bc0), f_q) result := addmod(mulmod(mload(0xee0), mload(0x3be0), f_q), result, f_q) mstore(23488, result) } mstore(0x5be0, mulmod(mload(0x5bc0), mload(0x41c0), f_q)) mstore(0x5c00, mulmod(sub(f_q, mload(0x5be0)), 1, f_q)) mstore(0x5c20, mulmod(mload(0x5ba0), 1, f_q)) mstore(0x5c40, mulmod(mload(0x5c00), mload(0x4460), f_q)) mstore(0x5c60, mulmod(mload(0x5c20), mload(0x4460), f_q)) mstore(0x5c80, addmod(mload(0x5b80), mload(0x5c40), f_q)) mstore(0x5ca0, mulmod(1, mload(0x3ac0), f_q)) mstore(0x5cc0, mulmod(1, mload(0x1040), f_q)) mstore(0x5ce0, 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(0x5d00, 0x0000000000000000000000000000000000000000000000000000000000000002) mstore(0x5d20, mload(0x5c80)) success := and(eq(staticcall(gas(), 0x7, 0x5ce0, 0x60, 0x5ce0, 0x40), 1), success) mstore(0x5d40, mload(0x5ce0)) mstore(0x5d60, mload(0x5d00)) mstore(0x5d80, mload(0x260)) mstore(0x5da0, mload(0x280)) success := and(eq(staticcall(gas(), 0x6, 0x5d40, 0x80, 0x5d40, 0x40), 1), success) mstore(0x5dc0, mload(0x2a0)) mstore(0x5de0, mload(0x2c0)) mstore(0x5e00, mload(0x47a0)) success := and(eq(staticcall(gas(), 0x7, 0x5dc0, 0x60, 0x5dc0, 0x40), 1), success) mstore(0x5e20, mload(0x5d40)) mstore(0x5e40, mload(0x5d60)) mstore(0x5e60, mload(0x5dc0)) mstore(0x5e80, mload(0x5de0)) success := and(eq(staticcall(gas(), 0x6, 0x5e20, 0x80, 0x5e20, 0x40), 1), success) mstore(0x5ea0, mload(0x2e0)) mstore(0x5ec0, mload(0x300)) mstore(0x5ee0, mload(0x47c0)) success := and(eq(staticcall(gas(), 0x7, 0x5ea0, 0x60, 0x5ea0, 0x40), 1), success) mstore(0x5f00, mload(0x5e20)) mstore(0x5f20, mload(0x5e40)) mstore(0x5f40, mload(0x5ea0)) mstore(0x5f60, mload(0x5ec0)) success := and(eq(staticcall(gas(), 0x6, 0x5f00, 0x80, 0x5f00, 0x40), 1), success) mstore(0x5f80, mload(0x320)) mstore(0x5fa0, mload(0x340)) mstore(0x5fc0, mload(0x47e0)) success := and(eq(staticcall(gas(), 0x7, 0x5f80, 0x60, 0x5f80, 0x40), 1), success) mstore(0x5fe0, mload(0x5f00)) mstore(0x6000, mload(0x5f20)) mstore(0x6020, mload(0x5f80)) mstore(0x6040, mload(0x5fa0)) success := and(eq(staticcall(gas(), 0x6, 0x5fe0, 0x80, 0x5fe0, 0x40), 1), success) mstore(0x6060, mload(0x360)) mstore(0x6080, mload(0x380)) mstore(0x60a0, mload(0x4800)) success := and(eq(staticcall(gas(), 0x7, 0x6060, 0x60, 0x6060, 0x40), 1), success) mstore(0x60c0, mload(0x5fe0)) mstore(0x60e0, mload(0x6000)) mstore(0x6100, mload(0x6060)) mstore(0x6120, mload(0x6080)) success := and(eq(staticcall(gas(), 0x6, 0x60c0, 0x80, 0x60c0, 0x40), 1), success) mstore(0x6140, mload(0x3a0)) mstore(0x6160, mload(0x3c0)) mstore(0x6180, mload(0x54a0)) success := and(eq(staticcall(gas(), 0x7, 0x6140, 0x60, 0x6140, 0x40), 1), success) mstore(0x61a0, mload(0x60c0)) mstore(0x61c0, mload(0x60e0)) mstore(0x61e0, mload(0x6140)) mstore(0x6200, mload(0x6160)) success := and(eq(staticcall(gas(), 0x6, 0x61a0, 0x80, 0x61a0, 0x40), 1), success) mstore(0x6220, mload(0x480)) mstore(0x6240, mload(0x4a0)) mstore(0x6260, mload(0x54c0)) success := and(eq(staticcall(gas(), 0x7, 0x6220, 0x60, 0x6220, 0x40), 1), success) mstore(0x6280, mload(0x61a0)) mstore(0x62a0, mload(0x61c0)) mstore(0x62c0, mload(0x6220)) mstore(0x62e0, mload(0x6240)) success := and(eq(staticcall(gas(), 0x6, 0x6280, 0x80, 0x6280, 0x40), 1), success) mstore(0x6300, 0x1f224f5998f14bc19a1fc8ab9271b179aa55c5c2188c466029c96038ef96993e) mstore(0x6320, 0x051ac90c8a88cbae8df335e747936e9567931d8b470dec40c0fc3b4d510e4973) mstore(0x6340, mload(0x54e0)) success := and(eq(staticcall(gas(), 0x7, 0x6300, 0x60, 0x6300, 0x40), 1), success) mstore(0x6360, mload(0x6280)) mstore(0x6380, mload(0x62a0)) mstore(0x63a0, mload(0x6300)) mstore(0x63c0, mload(0x6320)) success := and(eq(staticcall(gas(), 0x6, 0x6360, 0x80, 0x6360, 0x40), 1), success) mstore(0x63e0, 0x04528ec7365a2881b7d3c8925570e06bb3b17f04f6a95384ac8ed19a30c12097) mstore(0x6400, 0x28d1ef470a8a5278ad6d2eb9047ad7e93024113f543b06870f1bbea7177db404) mstore(0x6420, mload(0x5500)) success := and(eq(staticcall(gas(), 0x7, 0x63e0, 0x60, 0x63e0, 0x40), 1), success) mstore(0x6440, mload(0x6360)) mstore(0x6460, mload(0x6380)) mstore(0x6480, mload(0x63e0)) mstore(0x64a0, mload(0x6400)) success := and(eq(staticcall(gas(), 0x6, 0x6440, 0x80, 0x6440, 0x40), 1), success) mstore(0x64c0, 0x148da7a45ae1351d24cb90fac1678751b258a5aff7b437f9183860716b066d1e) mstore(0x64e0, 0x083fe9b9175e0b464d258a01327e37688eea7a94859457f95cfc50edf15e7d37) mstore(0x6500, mload(0x5520)) success := and(eq(staticcall(gas(), 0x7, 0x64c0, 0x60, 0x64c0, 0x40), 1), success) mstore(0x6520, mload(0x6440)) mstore(0x6540, mload(0x6460)) mstore(0x6560, mload(0x64c0)) mstore(0x6580, mload(0x64e0)) success := and(eq(staticcall(gas(), 0x6, 0x6520, 0x80, 0x6520, 0x40), 1), success) mstore(0x65a0, 0x2c89ef76f1ff53371da882bd1f56419409140a67f6e43f9cb6b8e3dc290f3d32) mstore(0x65c0, 0x092b7306ff29f079a954b0e67cd377246de2fda9e67852ac4ac9b239380844d7) mstore(0x65e0, mload(0x5540)) success := and(eq(staticcall(gas(), 0x7, 0x65a0, 0x60, 0x65a0, 0x40), 1), success) mstore(0x6600, mload(0x6520)) mstore(0x6620, mload(0x6540)) mstore(0x6640, mload(0x65a0)) mstore(0x6660, mload(0x65c0)) success := and(eq(staticcall(gas(), 0x6, 0x6600, 0x80, 0x6600, 0x40), 1), success) mstore(0x6680, 0x264ba2649108dc04cf91bfe5ce7f9e39718ef3489c3a63af4434ef95d78947d3) mstore(0x66a0, 0x1f7b8d6de9ff44a2b5ce79cf4d428ae53d24106c5a8b496018d4527c988ccaa8) mstore(0x66c0, mload(0x5560)) success := and(eq(staticcall(gas(), 0x7, 0x6680, 0x60, 0x6680, 0x40), 1), success) mstore(0x66e0, mload(0x6600)) mstore(0x6700, mload(0x6620)) mstore(0x6720, mload(0x6680)) mstore(0x6740, mload(0x66a0)) success := and(eq(staticcall(gas(), 0x6, 0x66e0, 0x80, 0x66e0, 0x40), 1), success) mstore(0x6760, 0x01c33b5a6e9a4bd6d333d8cebc27b12269a07577f863423cb21af26f8882fb1b) mstore(0x6780, 0x13ec8460a262474074812c8d0013ae3348c30cd29d9f2bf0b7544af011c7e86c) mstore(0x67a0, mload(0x5580)) success := and(eq(staticcall(gas(), 0x7, 0x6760, 0x60, 0x6760, 0x40), 1), success) mstore(0x67c0, mload(0x66e0)) mstore(0x67e0, mload(0x6700)) mstore(0x6800, mload(0x6760)) mstore(0x6820, mload(0x6780)) success := and(eq(staticcall(gas(), 0x6, 0x67c0, 0x80, 0x67c0, 0x40), 1), success) mstore(0x6840, 0x138ca2ca05c4c86af016dce6765689ad133c465f3ae958265217d6f3bf956096) mstore(0x6860, 0x27df80ac3bfaa603862f1baee6eb9f3da5e7995e5def2f3f836802ff4abbcfc7) mstore(0x6880, mload(0x55a0)) success := and(eq(staticcall(gas(), 0x7, 0x6840, 0x60, 0x6840, 0x40), 1), success) mstore(0x68a0, mload(0x67c0)) mstore(0x68c0, mload(0x67e0)) mstore(0x68e0, mload(0x6840)) mstore(0x6900, mload(0x6860)) success := and(eq(staticcall(gas(), 0x6, 0x68a0, 0x80, 0x68a0, 0x40), 1), success) mstore(0x6920, 0x13e0e546075988f7a28874395078b73892d877975ff57cf00aa6316aa5abd52d) mstore(0x6940, 0x10c6b7871774e2609ecc62b7cf0a80fa3594d43705cc239619b3ea3bcfd30829) mstore(0x6960, mload(0x55c0)) success := and(eq(staticcall(gas(), 0x7, 0x6920, 0x60, 0x6920, 0x40), 1), success) mstore(0x6980, mload(0x68a0)) mstore(0x69a0, mload(0x68c0)) mstore(0x69c0, mload(0x6920)) mstore(0x69e0, mload(0x6940)) success := and(eq(staticcall(gas(), 0x6, 0x6980, 0x80, 0x6980, 0x40), 1), success) mstore(0x6a00, 0x246e7ca9b83c0f5457b0733911aef2997251e5af5f1144016162f307f8a69596) mstore(0x6a20, 0x02000973e02faa177b17b846e7b1a2ba349c22c20badb7da24299a175d5b43ec) mstore(0x6a40, mload(0x55e0)) success := and(eq(staticcall(gas(), 0x7, 0x6a00, 0x60, 0x6a00, 0x40), 1), success) mstore(0x6a60, mload(0x6980)) mstore(0x6a80, mload(0x69a0)) mstore(0x6aa0, mload(0x6a00)) mstore(0x6ac0, mload(0x6a20)) success := and(eq(staticcall(gas(), 0x6, 0x6a60, 0x80, 0x6a60, 0x40), 1), success) mstore(0x6ae0, 0x290ffddf7e57e7249144c7e2a528da0ae6bc012eadcfcf530f101416a002b3f1) mstore(0x6b00, 0x121773be2cc80e3dbfb20e8d8eb60617a5d2a4bbd5cbef21593ff1da7e7695fd) mstore(0x6b20, mload(0x5600)) success := and(eq(staticcall(gas(), 0x7, 0x6ae0, 0x60, 0x6ae0, 0x40), 1), success) mstore(0x6b40, mload(0x6a60)) mstore(0x6b60, mload(0x6a80)) mstore(0x6b80, mload(0x6ae0)) mstore(0x6ba0, mload(0x6b00)) success := and(eq(staticcall(gas(), 0x6, 0x6b40, 0x80, 0x6b40, 0x40), 1), success) mstore(0x6bc0, 0x2ece498dabef6ec6074c536e36548f87384a81b09b17745e1848e3fe41046ed8) mstore(0x6be0, 0x25742093fb504498c37f80b511cde8e51398711b35ffc1a56b1bf2f155ea1f54) mstore(0x6c00, mload(0x5620)) success := and(eq(staticcall(gas(), 0x7, 0x6bc0, 0x60, 0x6bc0, 0x40), 1), success) mstore(0x6c20, mload(0x6b40)) mstore(0x6c40, mload(0x6b60)) mstore(0x6c60, mload(0x6bc0)) mstore(0x6c80, mload(0x6be0)) success := and(eq(staticcall(gas(), 0x6, 0x6c20, 0x80, 0x6c20, 0x40), 1), success) mstore(0x6ca0, 0x1eaf3b78ae89964c57cbb6ffd74ae258c84106fcfacdf0b34cfb7f0517c83d34) mstore(0x6cc0, 0x03fc9b6fb73e4108bb2725c51e3243cb49d65e30692b1104511477c67a64ff3e) mstore(0x6ce0, mload(0x5640)) success := and(eq(staticcall(gas(), 0x7, 0x6ca0, 0x60, 0x6ca0, 0x40), 1), success) mstore(0x6d00, mload(0x6c20)) mstore(0x6d20, mload(0x6c40)) mstore(0x6d40, mload(0x6ca0)) mstore(0x6d60, mload(0x6cc0)) success := and(eq(staticcall(gas(), 0x6, 0x6d00, 0x80, 0x6d00, 0x40), 1), success) mstore(0x6d80, 0x211c7ebb676fb55bf5bf70d25c8099113588fa46f9487b31c80fdd19c99c56b6) mstore(0x6da0, 0x28c5339caf705e65ce8437725dafa12804573290575791b19eceea6aef10c8a8) mstore(0x6dc0, mload(0x5660)) success := and(eq(staticcall(gas(), 0x7, 0x6d80, 0x60, 0x6d80, 0x40), 1), success) mstore(0x6de0, mload(0x6d00)) mstore(0x6e00, mload(0x6d20)) mstore(0x6e20, mload(0x6d80)) mstore(0x6e40, mload(0x6da0)) success := and(eq(staticcall(gas(), 0x6, 0x6de0, 0x80, 0x6de0, 0x40), 1), success) mstore(0x6e60, 0x0ece099bd367af0715b4d47e7bc614bfe9a9f45c51f9969d4b104f4dcb0c279f) mstore(0x6e80, 0x0c7702bd2b7cafe83d79c152ef77a1661a50c4331f3458377a383a8ac68bb8ae) mstore(0x6ea0, mload(0x5680)) success := and(eq(staticcall(gas(), 0x7, 0x6e60, 0x60, 0x6e60, 0x40), 1), success) mstore(0x6ec0, mload(0x6de0)) mstore(0x6ee0, mload(0x6e00)) mstore(0x6f00, mload(0x6e60)) mstore(0x6f20, mload(0x6e80)) success := and(eq(staticcall(gas(), 0x6, 0x6ec0, 0x80, 0x6ec0, 0x40), 1), success) mstore(0x6f40, 0x131587b948c9547bfb0ece7b4031b60b72c7a08bd30b600d57b831f772955941) mstore(0x6f60, 0x0967910d6f98d32bfa6d7debd908f5b9a3e084269b7116d76d4a0b7bf4fa8758) mstore(0x6f80, mload(0x56a0)) success := and(eq(staticcall(gas(), 0x7, 0x6f40, 0x60, 0x6f40, 0x40), 1), success) mstore(0x6fa0, mload(0x6ec0)) mstore(0x6fc0, mload(0x6ee0)) mstore(0x6fe0, mload(0x6f40)) mstore(0x7000, mload(0x6f60)) success := and(eq(staticcall(gas(), 0x6, 0x6fa0, 0x80, 0x6fa0, 0x40), 1), success) mstore(0x7020, mload(0x760)) mstore(0x7040, mload(0x780)) mstore(0x7060, mload(0x56c0)) success := and(eq(staticcall(gas(), 0x7, 0x7020, 0x60, 0x7020, 0x40), 1), success) mstore(0x7080, mload(0x6fa0)) mstore(0x70a0, mload(0x6fc0)) mstore(0x70c0, mload(0x7020)) mstore(0x70e0, mload(0x7040)) success := and(eq(staticcall(gas(), 0x6, 0x7080, 0x80, 0x7080, 0x40), 1), success) mstore(0x7100, mload(0x7a0)) mstore(0x7120, mload(0x7c0)) mstore(0x7140, mload(0x56e0)) success := and(eq(staticcall(gas(), 0x7, 0x7100, 0x60, 0x7100, 0x40), 1), success) mstore(0x7160, mload(0x7080)) mstore(0x7180, mload(0x70a0)) mstore(0x71a0, mload(0x7100)) mstore(0x71c0, mload(0x7120)) success := and(eq(staticcall(gas(), 0x6, 0x7160, 0x80, 0x7160, 0x40), 1), success) mstore(0x71e0, mload(0x7e0)) mstore(0x7200, mload(0x800)) mstore(0x7220, mload(0x5700)) success := and(eq(staticcall(gas(), 0x7, 0x71e0, 0x60, 0x71e0, 0x40), 1), success) mstore(0x7240, mload(0x7160)) mstore(0x7260, mload(0x7180)) mstore(0x7280, mload(0x71e0)) mstore(0x72a0, mload(0x7200)) success := and(eq(staticcall(gas(), 0x6, 0x7240, 0x80, 0x7240, 0x40), 1), success) mstore(0x72c0, mload(0x6c0)) mstore(0x72e0, mload(0x6e0)) mstore(0x7300, mload(0x5720)) success := and(eq(staticcall(gas(), 0x7, 0x72c0, 0x60, 0x72c0, 0x40), 1), success) mstore(0x7320, mload(0x7240)) mstore(0x7340, mload(0x7260)) mstore(0x7360, mload(0x72c0)) mstore(0x7380, mload(0x72e0)) success := and(eq(staticcall(gas(), 0x6, 0x7320, 0x80, 0x7320, 0x40), 1), success) mstore(0x73a0, mload(0x580)) mstore(0x73c0, mload(0x5a0)) mstore(0x73e0, mload(0x5960)) success := and(eq(staticcall(gas(), 0x7, 0x73a0, 0x60, 0x73a0, 0x40), 1), success) mstore(0x7400, mload(0x7320)) mstore(0x7420, mload(0x7340)) mstore(0x7440, mload(0x73a0)) mstore(0x7460, mload(0x73c0)) success := and(eq(staticcall(gas(), 0x6, 0x7400, 0x80, 0x7400, 0x40), 1), success) mstore(0x7480, mload(0x5c0)) mstore(0x74a0, mload(0x5e0)) mstore(0x74c0, mload(0x5980)) success := and(eq(staticcall(gas(), 0x7, 0x7480, 0x60, 0x7480, 0x40), 1), success) mstore(0x74e0, mload(0x7400)) mstore(0x7500, mload(0x7420)) mstore(0x7520, mload(0x7480)) mstore(0x7540, mload(0x74a0)) success := and(eq(staticcall(gas(), 0x6, 0x74e0, 0x80, 0x74e0, 0x40), 1), success) mstore(0x7560, mload(0x600)) mstore(0x7580, mload(0x620)) mstore(0x75a0, mload(0x59a0)) success := and(eq(staticcall(gas(), 0x7, 0x7560, 0x60, 0x7560, 0x40), 1), success) mstore(0x75c0, mload(0x74e0)) mstore(0x75e0, mload(0x7500)) mstore(0x7600, mload(0x7560)) mstore(0x7620, mload(0x7580)) success := and(eq(staticcall(gas(), 0x6, 0x75c0, 0x80, 0x75c0, 0x40), 1), success) mstore(0x7640, mload(0x640)) mstore(0x7660, mload(0x660)) mstore(0x7680, mload(0x5b40)) success := and(eq(staticcall(gas(), 0x7, 0x7640, 0x60, 0x7640, 0x40), 1), success) mstore(0x76a0, mload(0x75c0)) mstore(0x76c0, mload(0x75e0)) mstore(0x76e0, mload(0x7640)) mstore(0x7700, mload(0x7660)) success := and(eq(staticcall(gas(), 0x6, 0x76a0, 0x80, 0x76a0, 0x40), 1), success) mstore(0x7720, mload(0x680)) mstore(0x7740, mload(0x6a0)) mstore(0x7760, mload(0x5b60)) success := and(eq(staticcall(gas(), 0x7, 0x7720, 0x60, 0x7720, 0x40), 1), success) mstore(0x7780, mload(0x76a0)) mstore(0x77a0, mload(0x76c0)) mstore(0x77c0, mload(0x7720)) mstore(0x77e0, mload(0x7740)) success := and(eq(staticcall(gas(), 0x6, 0x7780, 0x80, 0x7780, 0x40), 1), success) mstore(0x7800, mload(0x440)) mstore(0x7820, mload(0x460)) mstore(0x7840, mload(0x5c60)) success := and(eq(staticcall(gas(), 0x7, 0x7800, 0x60, 0x7800, 0x40), 1), success) mstore(0x7860, mload(0x7780)) mstore(0x7880, mload(0x77a0)) mstore(0x78a0, mload(0x7800)) mstore(0x78c0, mload(0x7820)) success := and(eq(staticcall(gas(), 0x6, 0x7860, 0x80, 0x7860, 0x40), 1), success) mstore(0x78e0, mload(0xfe0)) mstore(0x7900, mload(0x1000)) mstore(0x7920, sub(f_q, mload(0x5ca0))) success := and(eq(staticcall(gas(), 0x7, 0x78e0, 0x60, 0x78e0, 0x40), 1), success) mstore(0x7940, mload(0x7860)) mstore(0x7960, mload(0x7880)) mstore(0x7980, mload(0x78e0)) mstore(0x79a0, mload(0x7900)) success := and(eq(staticcall(gas(), 0x6, 0x7940, 0x80, 0x7940, 0x40), 1), success) mstore(0x79c0, mload(0x1080)) mstore(0x79e0, mload(0x10a0)) mstore(0x7a00, mload(0x5cc0)) success := and(eq(staticcall(gas(), 0x7, 0x79c0, 0x60, 0x79c0, 0x40), 1), success) mstore(0x7a20, mload(0x7940)) mstore(0x7a40, mload(0x7960)) mstore(0x7a60, mload(0x79c0)) mstore(0x7a80, mload(0x79e0)) success := and(eq(staticcall(gas(), 0x6, 0x7a20, 0x80, 0x7a20, 0x40), 1), success) mstore(0x7aa0, mload(0x7a20)) mstore(0x7ac0, mload(0x7a40)) mstore(0x7ae0, mload(0x1080)) mstore(0x7b00, mload(0x10a0)) mstore(0x7b20, mload(0x10c0)) mstore(0x7b40, mload(0x10e0)) mstore(0x7b60, mload(0x1100)) mstore(0x7b80, mload(0x1120)) mstore(0x7ba0, keccak256(0x7aa0, 256)) mstore(31680, mod(mload(31648), f_q)) mstore(0x7be0, mulmod(mload(0x7bc0), mload(0x7bc0), f_q)) mstore(0x7c00, mulmod(1, mload(0x7bc0), f_q)) mstore(0x7c20, mload(0x7b20)) mstore(0x7c40, mload(0x7b40)) mstore(0x7c60, mload(0x7c00)) success := and(eq(staticcall(gas(), 0x7, 0x7c20, 0x60, 0x7c20, 0x40), 1), success) mstore(0x7c80, mload(0x7aa0)) mstore(0x7ca0, mload(0x7ac0)) mstore(0x7cc0, mload(0x7c20)) mstore(0x7ce0, mload(0x7c40)) success := and(eq(staticcall(gas(), 0x6, 0x7c80, 0x80, 0x7c80, 0x40), 1), success) mstore(0x7d00, mload(0x7b60)) mstore(0x7d20, mload(0x7b80)) mstore(0x7d40, mload(0x7c00)) success := and(eq(staticcall(gas(), 0x7, 0x7d00, 0x60, 0x7d00, 0x40), 1), success) mstore(0x7d60, mload(0x7ae0)) mstore(0x7d80, mload(0x7b00)) mstore(0x7da0, mload(0x7d00)) mstore(0x7dc0, mload(0x7d20)) success := and(eq(staticcall(gas(), 0x6, 0x7d60, 0x80, 0x7d60, 0x40), 1), success) mstore(0x7de0, mload(0x7c80)) mstore(0x7e00, mload(0x7ca0)) mstore(0x7e20, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(0x7e40, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(0x7e60, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(0x7e80, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) mstore(0x7ea0, mload(0x7d60)) mstore(0x7ec0, mload(0x7d80)) mstore(0x7ee0, 0x0181624e80f3d6ae28df7e01eaeab1c0e919877a3b8a6b7fbc69a6817d596ea2) mstore(0x7f00, 0x1783d30dcb12d259bb89098addf6280fa4b653be7a152542a28f7b926e27e648) mstore(0x7f20, 0x00ae44489d41a0d179e2dfdc03bddd883b7109f8b6ae316a59e815c1a6b35304) mstore(0x7f40, 0x0b2147ab62a386bd63e6de1522109b8c9588ab466f5aadfde8c41ca3749423ee) success := and(eq(staticcall(gas(), 0x8, 0x7de0, 0x180, 0x7de0, 0x20), 1), success) success := and(eq(mload(0x7de0), 1), success) if not(success) { revert(0, 0) } return(0, 0) } } }