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(0x260, mod(calldataload(0x240), f_q)) mstore(0x280, mod(calldataload(0x260), f_q)) mstore(0x2a0, mod(calldataload(0x280), f_q)) mstore(0x2c0, mod(calldataload(0x2a0), f_q)) mstore(0x2e0, mod(calldataload(0x2c0), f_q)) mstore(0x300, mod(calldataload(0x2e0), f_q)) mstore(0x320, mod(calldataload(0x300), f_q)) mstore(0x340, mod(calldataload(0x320), f_q)) mstore(0x360, mod(calldataload(0x340), f_q)) mstore(0x380, mod(calldataload(0x360), f_q)) mstore(0x3a0, mod(calldataload(0x380), f_q)) mstore(0x3c0, mod(calldataload(0x3a0), f_q)) mstore(0x3e0, mod(calldataload(0x3c0), f_q)) mstore(0x400, mod(calldataload(0x3e0), f_q)) mstore(0x420, mod(calldataload(0x400), f_q)) mstore(0x440, mod(calldataload(0x420), f_q)) mstore(0x460, mod(calldataload(0x440), f_q)) mstore(0x480, mod(calldataload(0x460), f_q)) mstore(0x4a0, mod(calldataload(0x480), f_q)) mstore(0x4c0, mod(calldataload(0x4a0), f_q)) mstore(0x4e0, mod(calldataload(0x4c0), f_q)) mstore(0x0, 12714566557495233314129647473762182141380482669824660892726865342775293934986) { let x := calldataload(0x4e0) mstore(0x500, x) let y := calldataload(0x500) mstore(0x520, y) success := and(validate_ec_point(x, y), success) } mstore(0x540, keccak256(0x0, 1344)) { let hash := mload(0x540) mstore(0x560, mod(hash, f_q)) mstore(0x580, hash) } { let x := calldataload(0x520) mstore(0x5a0, x) let y := calldataload(0x540) mstore(0x5c0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x560) mstore(0x5e0, x) let y := calldataload(0x580) mstore(0x600, y) success := and(validate_ec_point(x, y), success) } mstore(0x620, keccak256(0x580, 160)) { let hash := mload(0x620) mstore(0x640, mod(hash, f_q)) mstore(0x660, hash) } mstore8(1664, 1) mstore(0x680, keccak256(0x660, 33)) { let hash := mload(0x680) mstore(0x6a0, mod(hash, f_q)) mstore(0x6c0, hash) } { let x := calldataload(0x5a0) mstore(0x6e0, x) let y := calldataload(0x5c0) mstore(0x700, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x5e0) mstore(0x720, x) let y := calldataload(0x600) mstore(0x740, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x620) mstore(0x760, x) let y := calldataload(0x640) mstore(0x780, y) success := and(validate_ec_point(x, y), success) } mstore(0x7a0, keccak256(0x6c0, 224)) { let hash := mload(0x7a0) mstore(0x7c0, mod(hash, f_q)) mstore(0x7e0, hash) } { let x := calldataload(0x660) mstore(0x800, x) let y := calldataload(0x680) mstore(0x820, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x6a0) mstore(0x840, x) let y := calldataload(0x6c0) mstore(0x860, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x6e0) mstore(0x880, x) let y := calldataload(0x700) mstore(0x8a0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x720) mstore(0x8c0, x) let y := calldataload(0x740) mstore(0x8e0, y) success := and(validate_ec_point(x, y), success) } mstore(0x900, keccak256(0x7e0, 288)) { let hash := mload(0x900) mstore(0x920, mod(hash, f_q)) mstore(0x940, hash) } 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, keccak256(0x940, 640)) { let hash := mload(0xbc0) mstore(0xbe0, mod(hash, f_q)) mstore(0xc00, hash) } mstore8(3104, 1) mstore(0xc20, keccak256(0xc00, 33)) { let hash := mload(0xc20) mstore(0xc40, mod(hash, f_q)) mstore(0xc60, hash) } { let x := calldataload(0x9c0) mstore(0xc80, x) let y := calldataload(0x9e0) mstore(0xca0, y) success := and(validate_ec_point(x, y), success) } mstore(0xcc0, keccak256(0xc60, 96)) { let hash := mload(0xcc0) mstore(0xce0, mod(hash, f_q)) mstore(0xd00, hash) } { let x := calldataload(0xa00) mstore(0xd20, x) let y := calldataload(0xa20) mstore(0xd40, 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(3424, x) let y := mload(0x80) y := add(y, shl(88, mload(0xa0))) y := add(y, shl(176, mload(0xc0))) mstore(3456, 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(3488, x) let y := mload(0x140) y := add(y, shl(88, mload(0x160))) y := add(y, shl(176, mload(0x180))) mstore(3520, y) success := and(validate_ec_point(x, y), success) } mstore(0xde0, mulmod(mload(0x920), mload(0x920), f_q)) mstore(0xe00, mulmod(mload(0xde0), mload(0xde0), f_q)) mstore(0xe20, mulmod(mload(0xe00), mload(0xe00), f_q)) mstore(0xe40, mulmod(mload(0xe20), mload(0xe20), f_q)) mstore(0xe60, mulmod(mload(0xe40), mload(0xe40), f_q)) mstore(0xe80, mulmod(mload(0xe60), mload(0xe60), f_q)) mstore(0xea0, mulmod(mload(0xe80), mload(0xe80), f_q)) mstore(0xec0, mulmod(mload(0xea0), mload(0xea0), f_q)) mstore(0xee0, mulmod(mload(0xec0), mload(0xec0), f_q)) mstore(0xf00, mulmod(mload(0xee0), mload(0xee0), f_q)) mstore(0xf20, mulmod(mload(0xf00), mload(0xf00), f_q)) mstore(0xf40, mulmod(mload(0xf20), mload(0xf20), f_q)) mstore(0xf60, mulmod(mload(0xf40), mload(0xf40), f_q)) mstore(0xf80, mulmod(mload(0xf60), mload(0xf60), f_q)) mstore(0xfa0, mulmod(mload(0xf80), mload(0xf80), f_q)) mstore(0xfc0, mulmod(mload(0xfa0), mload(0xfa0), f_q)) mstore(0xfe0, mulmod(mload(0xfc0), mload(0xfc0), f_q)) mstore(0x1000, mulmod(mload(0xfe0), mload(0xfe0), f_q)) mstore(0x1020, mulmod(mload(0x1000), mload(0x1000), f_q)) mstore(0x1040, mulmod(mload(0x1020), mload(0x1020), f_q)) mstore(0x1060, mulmod(mload(0x1040), mload(0x1040), f_q)) mstore(0x1080, mulmod(mload(0x1060), mload(0x1060), f_q)) mstore(0x10a0, mulmod(mload(0x1080), mload(0x1080), f_q)) mstore(0x10c0, addmod(mload(0x10a0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) mstore(0x10e0, mulmod(mload(0x10c0), 21888240262557392955334514970720457388010314637169927192662615958087340972065, f_q)) mstore(0x1100, mulmod(mload(0x10e0), 4506835738822104338668100540817374747935106310012997856968187171738630203507, f_q)) mstore(0x1120, addmod(mload(0x920), 17381407133017170883578305204439900340613258090403036486730017014837178292110, f_q)) mstore(0x1140, mulmod(mload(0x10e0), 21710372849001950800533397158415938114909991150039389063546734567764856596059, f_q)) mstore(0x1160, addmod(mload(0x920), 177870022837324421713008586841336973638373250376645280151469618810951899558, f_q)) mstore(0x1180, mulmod(mload(0x10e0), 1887003188133998471169152042388914354640772748308168868301418279904560637395, f_q)) mstore(0x11a0, addmod(mload(0x920), 20001239683705276751077253702868360733907591652107865475396785906671247858222, f_q)) mstore(0x11c0, mulmod(mload(0x10e0), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q)) mstore(0x11e0, addmod(mload(0x920), 19102728315457599142069468034376470979900453007937332237837518576196438670601, f_q)) mstore(0x1200, mulmod(mload(0x10e0), 14655294445420895451632927078981340937842238432098198055057679026789553137428, f_q)) mstore(0x1220, addmod(mload(0x920), 7232948426418379770613478666275934150706125968317836288640525159786255358189, f_q)) mstore(0x1240, mulmod(mload(0x10e0), 8734126352828345679573237859165904705806588461301144420590422589042130041188, f_q)) mstore(0x1260, addmod(mload(0x920), 13154116519010929542673167886091370382741775939114889923107781597533678454429, f_q)) mstore(0x1280, mulmod(mload(0x10e0), 9741553891420464328295280489650144566903017206473301385034033384879943874347, f_q)) mstore(0x12a0, addmod(mload(0x920), 12146688980418810893951125255607130521645347193942732958664170801695864621270, f_q)) mstore(0x12c0, mulmod(mload(0x10e0), 1, f_q)) mstore(0x12e0, addmod(mload(0x920), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) mstore(0x1300, mulmod(mload(0x10e0), 8374374965308410102411073611984011876711565317741801500439755773472076597347, f_q)) mstore(0x1320, addmod(mload(0x920), 13513867906530865119835332133273263211836799082674232843258448413103731898270, f_q)) mstore(0x1340, mulmod(mload(0x10e0), 11211301017135681023579411905410872569206244553457844956874280139879520583390, f_q)) mstore(0x1360, addmod(mload(0x920), 10676941854703594198666993839846402519342119846958189386823924046696287912227, f_q)) mstore(0x1380, mulmod(mload(0x10e0), 3615478808282855240548287271348143516886772452944084747768312988864436725401, f_q)) mstore(0x13a0, addmod(mload(0x920), 18272764063556419981698118473909131571661591947471949595929891197711371770216, f_q)) mstore(0x13c0, mulmod(mload(0x10e0), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q)) mstore(0x13e0, addmod(mload(0x920), 20461838439117790833741043996939313553025008529160428886800406442142042007110, f_q)) mstore(0x1400, mulmod(mload(0x10e0), 216092043779272773661818549620449970334216366264741118684015851799902419467, f_q)) mstore(0x1420, addmod(mload(0x920), 21672150828060002448584587195636825118214148034151293225014188334775906076150, f_q)) mstore(0x1440, mulmod(mload(0x10e0), 12619617507853212586156872920672483948819476989779550311307282715684870266992, f_q)) mstore(0x1460, addmod(mload(0x920), 9268625363986062636089532824584791139728887410636484032390921470890938228625, f_q)) mstore(0x1480, mulmod(mload(0x10e0), 18610195890048912503953886742825279624920778288956610528523679659246523534888, f_q)) mstore(0x14a0, addmod(mload(0x920), 3278046981790362718292519002431995463627586111459423815174524527329284960729, f_q)) mstore(0x14c0, mulmod(mload(0x10e0), 19032961837237948602743626455740240236231119053033140765040043513661803148152, f_q)) mstore(0x14e0, addmod(mload(0x920), 2855281034601326619502779289517034852317245347382893578658160672914005347465, f_q)) mstore(0x1500, mulmod(mload(0x10e0), 14875928112196239563830800280253496262679717528621719058794366823499719730250, f_q)) mstore(0x1520, addmod(mload(0x920), 7012314759643035658415605465003778825868646871794315284903837363076088765367, f_q)) mstore(0x1540, mulmod(mload(0x10e0), 915149353520972163646494413843788069594022902357002628455555785223409501882, f_q)) mstore(0x1560, addmod(mload(0x920), 20973093518318303058599911331413487018954341498059031715242648401352398993735, f_q)) mstore(0x1580, mulmod(mload(0x10e0), 5522161504810533295870699551020523636289972223872138525048055197429246400245, f_q)) mstore(0x15a0, addmod(mload(0x920), 16366081367028741926375706194236751452258392176543895818650148989146562095372, f_q)) mstore(0x15c0, mulmod(mload(0x10e0), 3766081621734395783232337525162072736827576297943013392955872170138036189193, f_q)) mstore(0x15e0, addmod(mload(0x920), 18122161250104879439014068220095202351720788102473020950742332016437772306424, f_q)) mstore(0x1600, mulmod(mload(0x10e0), 9100833993744738801214480881117348002768153232283708533639316963648253510584, f_q)) mstore(0x1620, addmod(mload(0x920), 12787408878094536421031924864139927085780211168132325810058887222927554985033, f_q)) mstore(0x1640, mulmod(mload(0x10e0), 4245441013247250116003069945606352967193023389718465410501109428393342802981, f_q)) mstore(0x1660, addmod(mload(0x920), 17642801858592025106243335799650922121355341010697568933197094758182465692636, f_q)) mstore(0x1680, mulmod(mload(0x10e0), 6132660129994545119218258312491950835441607143741804980633129304664017206141, f_q)) mstore(0x16a0, addmod(mload(0x920), 15755582741844730103028147432765324253106757256674229363065074881911791289476, f_q)) mstore(0x16c0, mulmod(mload(0x10e0), 5854133144571823792863860130267644613802765696134002830362054821530146160770, f_q)) mstore(0x16e0, addmod(mload(0x920), 16034109727267451429382545614989630474745598704282031513336149365045662334847, f_q)) mstore(0x1700, mulmod(mload(0x10e0), 515148244606945972463850631189471072103916690263705052318085725998468254533, f_q)) mstore(0x1720, addmod(mload(0x920), 21373094627232329249782555114067804016444447710152329291380118460577340241084, f_q)) mstore(0x1740, mulmod(mload(0x10e0), 5980488956150442207659150513163747165544364597008566989111579977672498964212, f_q)) mstore(0x1760, addmod(mload(0x920), 15907753915688833014587255232093527923003999803407467354586624208903309531405, f_q)) mstore(0x1780, mulmod(mload(0x10e0), 5223738580615264174925218065001555728265216895679471490312087802465486318994, f_q)) mstore(0x17a0, addmod(mload(0x920), 16664504291224011047321187680255719360283147504736562853386116384110322176623, f_q)) mstore(0x17c0, mulmod(mload(0x10e0), 14557038802599140430182096396825290815503940951075961210638273254419942783582, f_q)) mstore(0x17e0, addmod(mload(0x920), 7331204069240134792064309348431984273044423449340073133059930932155865712035, f_q)) mstore(0x1800, mulmod(mload(0x10e0), 16976236069879939850923145256911338076234942200101755618884183331004076579046, f_q)) mstore(0x1820, addmod(mload(0x920), 4912006801959335371323260488345937012313422200314278724814020855571731916571, f_q)) mstore(0x1840, mulmod(mload(0x10e0), 13553911191894110065493137367144919847521088405945523452288398666974237857208, f_q)) mstore(0x1860, addmod(mload(0x920), 8334331679945165156753268378112355241027275994470510891409805519601570638409, f_q)) mstore(0x1880, mulmod(mload(0x10e0), 12222687719926148270818604386979005738180875192307070468454582955273533101023, f_q)) mstore(0x18a0, addmod(mload(0x920), 9665555151913126951427801358278269350367489208108963875243621231302275394594, f_q)) mstore(0x18c0, mulmod(mload(0x10e0), 9697063347556872083384215826199993067635178715531258559890418744774301211662, f_q)) mstore(0x18e0, addmod(mload(0x920), 12191179524282403138862189919057282020913185684884775783807785441801507283955, f_q)) mstore(0x1900, mulmod(mload(0x10e0), 13783318220968413117070077848579881425001701814458176881760898225529300547844, f_q)) mstore(0x1920, addmod(mload(0x920), 8104924650870862105176327896677393663546662585957857461937305961046507947773, f_q)) mstore(0x1940, mulmod(mload(0x10e0), 10807735674816066981985242612061336605021639643453679977988966079770672437131, f_q)) mstore(0x1960, addmod(mload(0x920), 11080507197023208240261163133195938483526724756962354365709238106805136058486, f_q)) mstore(0x1980, mulmod(mload(0x10e0), 15487660954688013862248478071816391715224351867581977083810729441220383572585, f_q)) mstore(0x19a0, addmod(mload(0x920), 6400581917151261359997927673440883373324012532834057259887474745355424923032, f_q)) mstore(0x19c0, mulmod(mload(0x10e0), 12459868075641381822485233712013080087763946065665469821362892189399541605692, f_q)) mstore(0x19e0, addmod(mload(0x920), 9428374796197893399761172033244195000784418334750564522335311997176266889925, f_q)) mstore(0x1a00, mulmod(mload(0x10e0), 12562571400845953139885120066983392294851269266041089223701347829190217414825, f_q)) mstore(0x1a20, addmod(mload(0x920), 9325671470993322082361285678273882793697095134374945119996856357385591080792, f_q)) mstore(0x1a40, mulmod(mload(0x10e0), 16038300751658239075779628684257016433412502747804121525056508685985277092575, f_q)) mstore(0x1a60, addmod(mload(0x920), 5849942120181036146466777061000258655135861652611912818641695500590531403042, f_q)) mstore(0x1a80, mulmod(mload(0x10e0), 17665522928519859765452767154433594409738037332395989540221744312194874941704, f_q)) mstore(0x1aa0, addmod(mload(0x920), 4222719943319415456793638590823680678810327068020044803476459874380933553913, f_q)) mstore(0x1ac0, mulmod(mload(0x10e0), 6955697244493336113861667751840378876927906302623587437721024018233754910398, f_q)) mstore(0x1ae0, addmod(mload(0x920), 14932545627345939108384737993416896211620458097792446905977180168342053585219, f_q)) mstore(0x1b00, mulmod(mload(0x10e0), 1918679275621049296283934091410967415474987212511681231948800935495808101054, f_q)) mstore(0x1b20, addmod(mload(0x920), 19969563596218225925962471653846307673073377187904353111749403251080000394563, f_q)) mstore(0x1b40, mulmod(mload(0x10e0), 13498745591877810872211159461644682954739332524336278910448604883789771736885, f_q)) mstore(0x1b60, addmod(mload(0x920), 8389497279961464350035246283612592133809031876079755433249599302786036758732, f_q)) mstore(0x1b80, mulmod(mload(0x10e0), 6604851689411953560355663038203889299997924520355363678860500374111951937637, f_q)) mstore(0x1ba0, addmod(mload(0x920), 15283391182427321661890742707053385788550439880060670664837703812463856557980, f_q)) mstore(0x1bc0, mulmod(mload(0x10e0), 20345677989844117909528750049476969581182118546166966482506114734614108237981, f_q)) mstore(0x1be0, addmod(mload(0x920), 1542564881995157312717655695780305507366245854249067861192089451961700257636, f_q)) mstore(0x1c00, mulmod(mload(0x10e0), 11244009323710436498447061620026171700033960328162115124806024297270121927878, f_q)) mstore(0x1c20, addmod(mload(0x920), 10644233548128838723799344125231103388514404072253919218892179889305686567739, f_q)) mstore(0x1c40, mulmod(mload(0x10e0), 790608022292213379425324383664216541739009722347092850716054055768832299157, f_q)) mstore(0x1c60, addmod(mload(0x920), 21097634849547061842821081361593058546809354678068941492982150130806976196460, f_q)) { let prod := mload(0x1120) prod := mulmod(mload(0x1160), prod, f_q) mstore(0x1c80, prod) prod := mulmod(mload(0x11a0), prod, f_q) mstore(0x1ca0, prod) prod := mulmod(mload(0x11e0), prod, f_q) mstore(0x1cc0, prod) prod := mulmod(mload(0x1220), prod, f_q) mstore(0x1ce0, prod) prod := mulmod(mload(0x1260), prod, f_q) mstore(0x1d00, prod) prod := mulmod(mload(0x12a0), prod, f_q) mstore(0x1d20, prod) prod := mulmod(mload(0x12e0), prod, f_q) mstore(0x1d40, prod) prod := mulmod(mload(0x1320), prod, f_q) mstore(0x1d60, prod) prod := mulmod(mload(0x1360), prod, f_q) mstore(0x1d80, prod) prod := mulmod(mload(0x13a0), prod, f_q) mstore(0x1da0, prod) prod := mulmod(mload(0x13e0), prod, f_q) mstore(0x1dc0, prod) prod := mulmod(mload(0x1420), prod, f_q) mstore(0x1de0, prod) prod := mulmod(mload(0x1460), prod, f_q) mstore(0x1e00, prod) prod := mulmod(mload(0x14a0), prod, f_q) mstore(0x1e20, prod) prod := mulmod(mload(0x14e0), prod, f_q) mstore(0x1e40, prod) prod := mulmod(mload(0x1520), prod, f_q) mstore(0x1e60, prod) prod := mulmod(mload(0x1560), prod, f_q) mstore(0x1e80, prod) prod := mulmod(mload(0x15a0), prod, f_q) mstore(0x1ea0, prod) prod := mulmod(mload(0x15e0), prod, f_q) mstore(0x1ec0, prod) prod := mulmod(mload(0x1620), prod, f_q) mstore(0x1ee0, prod) prod := mulmod(mload(0x1660), prod, f_q) mstore(0x1f00, prod) prod := mulmod(mload(0x16a0), prod, f_q) mstore(0x1f20, prod) prod := mulmod(mload(0x16e0), prod, f_q) mstore(0x1f40, prod) prod := mulmod(mload(0x1720), prod, f_q) mstore(0x1f60, prod) prod := mulmod(mload(0x1760), prod, f_q) mstore(0x1f80, prod) prod := mulmod(mload(0x17a0), prod, f_q) mstore(0x1fa0, prod) prod := mulmod(mload(0x17e0), prod, f_q) mstore(0x1fc0, prod) prod := mulmod(mload(0x1820), prod, f_q) mstore(0x1fe0, prod) prod := mulmod(mload(0x1860), prod, f_q) mstore(0x2000, prod) prod := mulmod(mload(0x18a0), prod, f_q) mstore(0x2020, prod) prod := mulmod(mload(0x18e0), prod, f_q) mstore(0x2040, prod) prod := mulmod(mload(0x1920), prod, f_q) mstore(0x2060, prod) prod := mulmod(mload(0x1960), prod, f_q) mstore(0x2080, prod) prod := mulmod(mload(0x19a0), prod, f_q) mstore(0x20a0, prod) prod := mulmod(mload(0x19e0), prod, f_q) mstore(0x20c0, prod) prod := mulmod(mload(0x1a20), prod, f_q) mstore(0x20e0, prod) prod := mulmod(mload(0x1a60), prod, f_q) mstore(0x2100, prod) prod := mulmod(mload(0x1aa0), prod, f_q) mstore(0x2120, prod) prod := mulmod(mload(0x1ae0), prod, f_q) mstore(0x2140, prod) prod := mulmod(mload(0x1b20), prod, f_q) mstore(0x2160, prod) prod := mulmod(mload(0x1b60), prod, f_q) mstore(0x2180, prod) prod := mulmod(mload(0x1ba0), prod, f_q) mstore(0x21a0, prod) prod := mulmod(mload(0x1be0), prod, f_q) mstore(0x21c0, prod) prod := mulmod(mload(0x1c20), prod, f_q) mstore(0x21e0, prod) prod := mulmod(mload(0x1c60), prod, f_q) mstore(0x2200, prod) prod := mulmod(mload(0x10c0), prod, f_q) mstore(0x2220, prod) } mstore(0x2260, 32) mstore(0x2280, 32) mstore(0x22a0, 32) mstore(0x22c0, mload(0x2220)) mstore(0x22e0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x2300, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x2260, 0xc0, 0x2240, 0x20), 1), success) { let inv := mload(0x2240) let v v := mload(0x10c0) mstore(4288, mulmod(mload(0x2200), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1c60) mstore(7264, mulmod(mload(0x21e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1c20) mstore(7200, mulmod(mload(0x21c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1be0) mstore(7136, mulmod(mload(0x21a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1ba0) mstore(7072, mulmod(mload(0x2180), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1b60) mstore(7008, mulmod(mload(0x2160), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1b20) mstore(6944, mulmod(mload(0x2140), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1ae0) mstore(6880, mulmod(mload(0x2120), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1aa0) mstore(6816, mulmod(mload(0x2100), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1a60) mstore(6752, mulmod(mload(0x20e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1a20) mstore(6688, mulmod(mload(0x20c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x19e0) mstore(6624, mulmod(mload(0x20a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x19a0) mstore(6560, mulmod(mload(0x2080), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1960) mstore(6496, mulmod(mload(0x2060), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1920) mstore(6432, mulmod(mload(0x2040), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x18e0) mstore(6368, mulmod(mload(0x2020), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x18a0) mstore(6304, mulmod(mload(0x2000), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1860) mstore(6240, mulmod(mload(0x1fe0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1820) mstore(6176, mulmod(mload(0x1fc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x17e0) mstore(6112, mulmod(mload(0x1fa0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x17a0) mstore(6048, mulmod(mload(0x1f80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1760) mstore(5984, mulmod(mload(0x1f60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1720) mstore(5920, mulmod(mload(0x1f40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x16e0) mstore(5856, mulmod(mload(0x1f20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x16a0) mstore(5792, mulmod(mload(0x1f00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1660) mstore(5728, mulmod(mload(0x1ee0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1620) mstore(5664, mulmod(mload(0x1ec0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x15e0) mstore(5600, mulmod(mload(0x1ea0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x15a0) mstore(5536, mulmod(mload(0x1e80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1560) mstore(5472, mulmod(mload(0x1e60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1520) mstore(5408, mulmod(mload(0x1e40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x14e0) mstore(5344, mulmod(mload(0x1e20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x14a0) mstore(5280, mulmod(mload(0x1e00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1460) mstore(5216, mulmod(mload(0x1de0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1420) mstore(5152, mulmod(mload(0x1dc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x13e0) mstore(5088, mulmod(mload(0x1da0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x13a0) mstore(5024, mulmod(mload(0x1d80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1360) mstore(4960, mulmod(mload(0x1d60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1320) mstore(4896, mulmod(mload(0x1d40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x12e0) mstore(4832, mulmod(mload(0x1d20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x12a0) mstore(4768, mulmod(mload(0x1d00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1260) mstore(4704, mulmod(mload(0x1ce0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1220) mstore(4640, mulmod(mload(0x1cc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x11e0) mstore(4576, mulmod(mload(0x1ca0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x11a0) mstore(4512, mulmod(mload(0x1c80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1160) mstore(4448, mulmod(mload(0x1120), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x1120, inv) } mstore(0x2320, mulmod(mload(0x1100), mload(0x1120), f_q)) mstore(0x2340, mulmod(mload(0x1140), mload(0x1160), f_q)) mstore(0x2360, mulmod(mload(0x1180), mload(0x11a0), f_q)) mstore(0x2380, mulmod(mload(0x11c0), mload(0x11e0), f_q)) mstore(0x23a0, mulmod(mload(0x1200), mload(0x1220), f_q)) mstore(0x23c0, mulmod(mload(0x1240), mload(0x1260), f_q)) mstore(0x23e0, mulmod(mload(0x1280), mload(0x12a0), f_q)) mstore(0x2400, mulmod(mload(0x12c0), mload(0x12e0), f_q)) mstore(0x2420, mulmod(mload(0x1300), mload(0x1320), f_q)) mstore(0x2440, mulmod(mload(0x1340), mload(0x1360), f_q)) mstore(0x2460, mulmod(mload(0x1380), mload(0x13a0), f_q)) mstore(0x2480, mulmod(mload(0x13c0), mload(0x13e0), f_q)) mstore(0x24a0, mulmod(mload(0x1400), mload(0x1420), f_q)) mstore(0x24c0, mulmod(mload(0x1440), mload(0x1460), f_q)) mstore(0x24e0, mulmod(mload(0x1480), mload(0x14a0), f_q)) mstore(0x2500, mulmod(mload(0x14c0), mload(0x14e0), f_q)) mstore(0x2520, mulmod(mload(0x1500), mload(0x1520), f_q)) mstore(0x2540, mulmod(mload(0x1540), mload(0x1560), f_q)) mstore(0x2560, mulmod(mload(0x1580), mload(0x15a0), f_q)) mstore(0x2580, mulmod(mload(0x15c0), mload(0x15e0), f_q)) mstore(0x25a0, mulmod(mload(0x1600), mload(0x1620), f_q)) mstore(0x25c0, mulmod(mload(0x1640), mload(0x1660), f_q)) mstore(0x25e0, mulmod(mload(0x1680), mload(0x16a0), f_q)) mstore(0x2600, mulmod(mload(0x16c0), mload(0x16e0), f_q)) mstore(0x2620, mulmod(mload(0x1700), mload(0x1720), f_q)) mstore(0x2640, mulmod(mload(0x1740), mload(0x1760), f_q)) mstore(0x2660, mulmod(mload(0x1780), mload(0x17a0), f_q)) mstore(0x2680, mulmod(mload(0x17c0), mload(0x17e0), f_q)) mstore(0x26a0, mulmod(mload(0x1800), mload(0x1820), f_q)) mstore(0x26c0, mulmod(mload(0x1840), mload(0x1860), f_q)) mstore(0x26e0, mulmod(mload(0x1880), mload(0x18a0), f_q)) mstore(0x2700, mulmod(mload(0x18c0), mload(0x18e0), f_q)) mstore(0x2720, mulmod(mload(0x1900), mload(0x1920), f_q)) mstore(0x2740, mulmod(mload(0x1940), mload(0x1960), f_q)) mstore(0x2760, mulmod(mload(0x1980), mload(0x19a0), f_q)) mstore(0x2780, mulmod(mload(0x19c0), mload(0x19e0), f_q)) mstore(0x27a0, mulmod(mload(0x1a00), mload(0x1a20), f_q)) mstore(0x27c0, mulmod(mload(0x1a40), mload(0x1a60), f_q)) mstore(0x27e0, mulmod(mload(0x1a80), mload(0x1aa0), f_q)) mstore(0x2800, mulmod(mload(0x1ac0), mload(0x1ae0), f_q)) mstore(0x2820, mulmod(mload(0x1b00), mload(0x1b20), f_q)) mstore(0x2840, mulmod(mload(0x1b40), mload(0x1b60), f_q)) mstore(0x2860, mulmod(mload(0x1b80), mload(0x1ba0), f_q)) mstore(0x2880, mulmod(mload(0x1bc0), mload(0x1be0), f_q)) mstore(0x28a0, mulmod(mload(0x1c00), mload(0x1c20), f_q)) mstore(0x28c0, mulmod(mload(0x1c40), mload(0x1c60), f_q)) { let result := mulmod(mload(0x2400), mload(0x20), f_q) result := addmod(mulmod(mload(0x2420), mload(0x40), f_q), result, f_q) result := addmod(mulmod(mload(0x2440), mload(0x60), f_q), result, f_q) result := addmod(mulmod(mload(0x2460), mload(0x80), f_q), result, f_q) result := addmod(mulmod(mload(0x2480), mload(0xa0), f_q), result, f_q) result := addmod(mulmod(mload(0x24a0), mload(0xc0), f_q), result, f_q) result := addmod(mulmod(mload(0x24c0), mload(0xe0), f_q), result, f_q) result := addmod(mulmod(mload(0x24e0), mload(0x100), f_q), result, f_q) result := addmod(mulmod(mload(0x2500), mload(0x120), f_q), result, f_q) result := addmod(mulmod(mload(0x2520), mload(0x140), f_q), result, f_q) result := addmod(mulmod(mload(0x2540), mload(0x160), f_q), result, f_q) result := addmod(mulmod(mload(0x2560), mload(0x180), f_q), result, f_q) result := addmod(mulmod(mload(0x2580), mload(0x1a0), f_q), result, f_q) result := addmod(mulmod(mload(0x25a0), mload(0x1c0), f_q), result, f_q) result := addmod(mulmod(mload(0x25c0), mload(0x1e0), f_q), result, f_q) result := addmod(mulmod(mload(0x25e0), mload(0x200), f_q), result, f_q) result := addmod(mulmod(mload(0x2600), mload(0x220), f_q), result, f_q) result := addmod(mulmod(mload(0x2620), mload(0x240), f_q), result, f_q) result := addmod(mulmod(mload(0x2640), mload(0x260), f_q), result, f_q) result := addmod(mulmod(mload(0x2660), mload(0x280), f_q), result, f_q) result := addmod(mulmod(mload(0x2680), mload(0x2a0), f_q), result, f_q) result := addmod(mulmod(mload(0x26a0), mload(0x2c0), f_q), result, f_q) result := addmod(mulmod(mload(0x26c0), mload(0x2e0), f_q), result, f_q) result := addmod(mulmod(mload(0x26e0), mload(0x300), f_q), result, f_q) result := addmod(mulmod(mload(0x2700), mload(0x320), f_q), result, f_q) result := addmod(mulmod(mload(0x2720), mload(0x340), f_q), result, f_q) result := addmod(mulmod(mload(0x2740), mload(0x360), f_q), result, f_q) result := addmod(mulmod(mload(0x2760), mload(0x380), f_q), result, f_q) result := addmod(mulmod(mload(0x2780), mload(0x3a0), f_q), result, f_q) result := addmod(mulmod(mload(0x27a0), mload(0x3c0), f_q), result, f_q) result := addmod(mulmod(mload(0x27c0), mload(0x3e0), f_q), result, f_q) result := addmod(mulmod(mload(0x27e0), mload(0x400), f_q), result, f_q) result := addmod(mulmod(mload(0x2800), mload(0x420), f_q), result, f_q) result := addmod(mulmod(mload(0x2820), mload(0x440), f_q), result, f_q) result := addmod(mulmod(mload(0x2840), mload(0x460), f_q), result, f_q) result := addmod(mulmod(mload(0x2860), mload(0x480), f_q), result, f_q) result := addmod(mulmod(mload(0x2880), mload(0x4a0), f_q), result, f_q) result := addmod(mulmod(mload(0x28a0), mload(0x4c0), f_q), result, f_q) result := addmod(mulmod(mload(0x28c0), mload(0x4e0), f_q), result, f_q) mstore(10464, result) } mstore(0x2900, mulmod(mload(0x9a0), mload(0x980), f_q)) mstore(0x2920, addmod(mload(0x960), mload(0x2900), f_q)) mstore(0x2940, addmod(mload(0x2920), sub(f_q, mload(0x9c0)), f_q)) mstore(0x2960, mulmod(mload(0x2940), mload(0xa40), f_q)) mstore(0x2980, mulmod(mload(0x7c0), mload(0x2960), f_q)) mstore(0x29a0, addmod(1, sub(f_q, mload(0xae0)), f_q)) mstore(0x29c0, mulmod(mload(0x29a0), mload(0x2400), f_q)) mstore(0x29e0, addmod(mload(0x2980), mload(0x29c0), f_q)) mstore(0x2a00, mulmod(mload(0x7c0), mload(0x29e0), f_q)) mstore(0x2a20, mulmod(mload(0xae0), mload(0xae0), f_q)) mstore(0x2a40, addmod(mload(0x2a20), sub(f_q, mload(0xae0)), f_q)) mstore(0x2a60, mulmod(mload(0x2a40), mload(0x2320), f_q)) mstore(0x2a80, addmod(mload(0x2a00), mload(0x2a60), f_q)) mstore(0x2aa0, mulmod(mload(0x7c0), mload(0x2a80), f_q)) mstore(0x2ac0, addmod(1, sub(f_q, mload(0x2320)), f_q)) mstore(0x2ae0, addmod(mload(0x2340), mload(0x2360), f_q)) mstore(0x2b00, addmod(mload(0x2ae0), mload(0x2380), f_q)) mstore(0x2b20, addmod(mload(0x2b00), mload(0x23a0), f_q)) mstore(0x2b40, addmod(mload(0x2b20), mload(0x23c0), f_q)) mstore(0x2b60, addmod(mload(0x2b40), mload(0x23e0), f_q)) mstore(0x2b80, addmod(mload(0x2ac0), sub(f_q, mload(0x2b60)), f_q)) mstore(0x2ba0, mulmod(mload(0xa80), mload(0x640), f_q)) mstore(0x2bc0, addmod(mload(0x9e0), mload(0x2ba0), f_q)) mstore(0x2be0, addmod(mload(0x2bc0), mload(0x6a0), f_q)) mstore(0x2c00, mulmod(mload(0xaa0), mload(0x640), f_q)) mstore(0x2c20, addmod(mload(0x960), mload(0x2c00), f_q)) mstore(0x2c40, addmod(mload(0x2c20), mload(0x6a0), f_q)) mstore(0x2c60, mulmod(mload(0x2c40), mload(0x2be0), f_q)) mstore(0x2c80, mulmod(mload(0xac0), mload(0x640), f_q)) mstore(0x2ca0, addmod(mload(0x28e0), mload(0x2c80), f_q)) mstore(0x2cc0, addmod(mload(0x2ca0), mload(0x6a0), f_q)) mstore(0x2ce0, mulmod(mload(0x2cc0), mload(0x2c60), f_q)) mstore(0x2d00, mulmod(mload(0x2ce0), mload(0xb00), f_q)) mstore(0x2d20, mulmod(1, mload(0x640), f_q)) mstore(0x2d40, mulmod(mload(0x920), mload(0x2d20), f_q)) mstore(0x2d60, addmod(mload(0x9e0), mload(0x2d40), f_q)) mstore(0x2d80, addmod(mload(0x2d60), mload(0x6a0), f_q)) mstore(0x2da0, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x640), f_q)) mstore(0x2dc0, mulmod(mload(0x920), mload(0x2da0), f_q)) mstore(0x2de0, addmod(mload(0x960), mload(0x2dc0), f_q)) mstore(0x2e00, addmod(mload(0x2de0), mload(0x6a0), f_q)) mstore(0x2e20, mulmod(mload(0x2e00), mload(0x2d80), f_q)) mstore(0x2e40, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x640), f_q)) mstore(0x2e60, mulmod(mload(0x920), mload(0x2e40), f_q)) mstore(0x2e80, addmod(mload(0x28e0), mload(0x2e60), f_q)) mstore(0x2ea0, addmod(mload(0x2e80), mload(0x6a0), f_q)) mstore(0x2ec0, mulmod(mload(0x2ea0), mload(0x2e20), f_q)) mstore(0x2ee0, mulmod(mload(0x2ec0), mload(0xae0), f_q)) mstore(0x2f00, addmod(mload(0x2d00), sub(f_q, mload(0x2ee0)), f_q)) mstore(0x2f20, mulmod(mload(0x2f00), mload(0x2b80), f_q)) mstore(0x2f40, addmod(mload(0x2aa0), mload(0x2f20), f_q)) mstore(0x2f60, mulmod(mload(0x7c0), mload(0x2f40), f_q)) mstore(0x2f80, addmod(1, sub(f_q, mload(0xb20)), f_q)) mstore(0x2fa0, mulmod(mload(0x2f80), mload(0x2400), f_q)) mstore(0x2fc0, addmod(mload(0x2f60), mload(0x2fa0), f_q)) mstore(0x2fe0, mulmod(mload(0x7c0), mload(0x2fc0), f_q)) mstore(0x3000, mulmod(mload(0xb20), mload(0xb20), f_q)) mstore(0x3020, addmod(mload(0x3000), sub(f_q, mload(0xb20)), f_q)) mstore(0x3040, mulmod(mload(0x3020), mload(0x2320), f_q)) mstore(0x3060, addmod(mload(0x2fe0), mload(0x3040), f_q)) mstore(0x3080, mulmod(mload(0x7c0), mload(0x3060), f_q)) mstore(0x30a0, addmod(mload(0xb60), mload(0x640), f_q)) mstore(0x30c0, mulmod(mload(0x30a0), mload(0xb40), f_q)) mstore(0x30e0, addmod(mload(0xba0), mload(0x6a0), f_q)) mstore(0x3100, mulmod(mload(0x30e0), mload(0x30c0), f_q)) mstore(0x3120, mulmod(mload(0x960), mload(0xa20), f_q)) mstore(0x3140, addmod(mload(0x3120), mload(0x640), f_q)) mstore(0x3160, mulmod(mload(0x3140), mload(0xb20), f_q)) mstore(0x3180, addmod(mload(0xa00), mload(0x6a0), f_q)) mstore(0x31a0, mulmod(mload(0x3180), mload(0x3160), f_q)) mstore(0x31c0, addmod(mload(0x3100), sub(f_q, mload(0x31a0)), f_q)) mstore(0x31e0, mulmod(mload(0x31c0), mload(0x2b80), f_q)) mstore(0x3200, addmod(mload(0x3080), mload(0x31e0), f_q)) mstore(0x3220, mulmod(mload(0x7c0), mload(0x3200), f_q)) mstore(0x3240, addmod(mload(0xb60), sub(f_q, mload(0xba0)), f_q)) mstore(0x3260, mulmod(mload(0x3240), mload(0x2400), f_q)) mstore(0x3280, addmod(mload(0x3220), mload(0x3260), f_q)) mstore(0x32a0, mulmod(mload(0x7c0), mload(0x3280), f_q)) mstore(0x32c0, mulmod(mload(0x3240), mload(0x2b80), f_q)) mstore(0x32e0, addmod(mload(0xb60), sub(f_q, mload(0xb80)), f_q)) mstore(0x3300, mulmod(mload(0x32e0), mload(0x32c0), f_q)) mstore(0x3320, addmod(mload(0x32a0), mload(0x3300), f_q)) mstore(0x3340, mulmod(mload(0x10a0), mload(0x10a0), f_q)) mstore(0x3360, mulmod(mload(0x3340), mload(0x10a0), f_q)) mstore(0x3380, mulmod(mload(0x3360), mload(0x10a0), f_q)) mstore(0x33a0, mulmod(1, mload(0x10a0), f_q)) mstore(0x33c0, mulmod(1, mload(0x3340), f_q)) mstore(0x33e0, mulmod(1, mload(0x3360), f_q)) mstore(0x3400, mulmod(mload(0x3320), mload(0x10c0), f_q)) mstore(0x3420, mulmod(mload(0xde0), mload(0x920), f_q)) mstore(0x3440, mulmod(mload(0x3420), mload(0x920), f_q)) mstore(0x3460, mulmod(mload(0x920), 1, f_q)) mstore(0x3480, addmod(mload(0xce0), sub(f_q, mload(0x3460)), f_q)) mstore(0x34a0, mulmod(mload(0x920), 3615478808282855240548287271348143516886772452944084747768312988864436725401, f_q)) mstore(0x34c0, addmod(mload(0xce0), sub(f_q, mload(0x34a0)), f_q)) mstore(0x34e0, mulmod(mload(0x920), 8374374965308410102411073611984011876711565317741801500439755773472076597347, f_q)) mstore(0x3500, addmod(mload(0xce0), sub(f_q, mload(0x34e0)), f_q)) mstore(0x3520, mulmod(mload(0x920), 9741553891420464328295280489650144566903017206473301385034033384879943874347, f_q)) mstore(0x3540, addmod(mload(0xce0), sub(f_q, mload(0x3520)), f_q)) mstore(0x3560, mulmod(mload(0x920), 11211301017135681023579411905410872569206244553457844956874280139879520583390, f_q)) mstore(0x3580, addmod(mload(0xce0), sub(f_q, mload(0x3560)), f_q)) { let result := mulmod(mload(0xce0), mulmod(mload(0x3420), 13213688729882003894512633350385593288217014177373218494356903340348818451480, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x3420), 8674554141957271327733772394871681800331350223042815849341300846226990044137, f_q), f_q), result, f_q) mstore(13728, result) } { let result := mulmod(mload(0xce0), mulmod(mload(0x3420), 8207090019724696496350398458716998472718344609680392612601596849934418295470, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x3420), 7391709068497399131897422873231908718558236401035363928063603272120120747483, f_q), f_q), result, f_q) mstore(13760, result) } { let result := mulmod(mload(0xce0), mulmod(mload(0x3420), 7391709068497399131897422873231908718558236401035363928063603272120120747483, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x3420), 1833147409647494756995474660497533717522217035849797032644829375745951548463, f_q), f_q), result, f_q) mstore(13792, result) } { let result := mulmod(mload(0xce0), mulmod(mload(0x3420), 19036273796805830823244991598792794567595348772040298280440552631112242221017, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x3420), 21424174760842011600237027652323753233820727276907995465687706728442780288120, f_q), f_q), result, f_q) mstore(13824, result) } mstore(0x3620, mulmod(1, mload(0x3480), f_q)) mstore(0x3640, mulmod(mload(0x3620), mload(0x3500), f_q)) mstore(0x3660, mulmod(mload(0x3640), mload(0x3580), f_q)) mstore(0x3680, mulmod(mload(0x3660), mload(0x34c0), f_q)) { let result := mulmod(mload(0xce0), mulmod(mload(0x920), 13513867906530865119835332133273263211836799082674232843258448413103731898271, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x920), 8374374965308410102411073611984011876711565317741801500439755773472076597346, f_q), f_q), result, f_q) mstore(13984, result) } { let result := mulmod(mload(0xce0), mulmod(mload(0x920), 8374374965308410102411073611984011876711565317741801500439755773472076597346, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x920), 19051316820012004301078067451830414396053685164699990887263679820168364509574, f_q), f_q), result, f_q) mstore(14016, result) } { let result := mulmod(mload(0xce0), mulmod(mload(0x920), 12146688980418810893951125255607130521645347193942732958664170801695864621271, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x920), 9741553891420464328295280489650144566903017206473301385034033384879943874346, f_q), f_q), result, f_q) mstore(14048, result) } { let result := mulmod(mload(0xce0), mulmod(mload(0x920), 9741553891420464328295280489650144566903017206473301385034033384879943874346, f_q), f_q) result := addmod(mulmod(mload(0x920), mulmod(mload(0x920), 1007427538592118648722042630484239861096428745172156964443610795837813833159, f_q), f_q), result, f_q) mstore(14080, result) } mstore(0x3720, mulmod(mload(0x3620), mload(0x3540), f_q)) { let result := mulmod(mload(0xce0), 1, f_q) result := addmod(mulmod(mload(0x920), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) mstore(14144, result) } { let prod := mload(0x35a0) prod := mulmod(mload(0x35c0), prod, f_q) mstore(0x3760, prod) prod := mulmod(mload(0x35e0), prod, f_q) mstore(0x3780, prod) prod := mulmod(mload(0x3600), prod, f_q) mstore(0x37a0, prod) prod := mulmod(mload(0x36a0), prod, f_q) mstore(0x37c0, prod) prod := mulmod(mload(0x36c0), prod, f_q) mstore(0x37e0, prod) prod := mulmod(mload(0x3640), prod, f_q) mstore(0x3800, prod) prod := mulmod(mload(0x36e0), prod, f_q) mstore(0x3820, prod) prod := mulmod(mload(0x3700), prod, f_q) mstore(0x3840, prod) prod := mulmod(mload(0x3720), prod, f_q) mstore(0x3860, prod) prod := mulmod(mload(0x3740), prod, f_q) mstore(0x3880, prod) prod := mulmod(mload(0x3620), prod, f_q) mstore(0x38a0, prod) } mstore(0x38e0, 32) mstore(0x3900, 32) mstore(0x3920, 32) mstore(0x3940, mload(0x38a0)) mstore(0x3960, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x3980, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x38e0, 0xc0, 0x38c0, 0x20), 1), success) { let inv := mload(0x38c0) let v v := mload(0x3620) mstore(13856, mulmod(mload(0x3880), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3740) mstore(14144, mulmod(mload(0x3860), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3720) mstore(14112, mulmod(mload(0x3840), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3700) mstore(14080, mulmod(mload(0x3820), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x36e0) mstore(14048, mulmod(mload(0x3800), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3640) mstore(13888, mulmod(mload(0x37e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x36c0) mstore(14016, mulmod(mload(0x37c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x36a0) mstore(13984, mulmod(mload(0x37a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3600) mstore(13824, mulmod(mload(0x3780), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x35e0) mstore(13792, mulmod(mload(0x3760), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x35c0) mstore(13760, mulmod(mload(0x35a0), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x35a0, inv) } { let result := mload(0x35a0) result := addmod(mload(0x35c0), result, f_q) result := addmod(mload(0x35e0), result, f_q) result := addmod(mload(0x3600), result, f_q) mstore(14752, result) } mstore(0x39c0, mulmod(mload(0x3680), mload(0x3640), f_q)) { let result := mload(0x36a0) result := addmod(mload(0x36c0), result, f_q) mstore(14816, result) } mstore(0x3a00, mulmod(mload(0x3680), mload(0x3720), f_q)) { let result := mload(0x36e0) result := addmod(mload(0x3700), result, f_q) mstore(14880, result) } mstore(0x3a40, mulmod(mload(0x3680), mload(0x3620), f_q)) { let result := mload(0x3740) mstore(14944, result) } { let prod := mload(0x39a0) prod := mulmod(mload(0x39e0), prod, f_q) mstore(0x3a80, prod) prod := mulmod(mload(0x3a20), prod, f_q) mstore(0x3aa0, prod) prod := mulmod(mload(0x3a60), prod, f_q) mstore(0x3ac0, prod) } mstore(0x3b00, 32) mstore(0x3b20, 32) mstore(0x3b40, 32) mstore(0x3b60, mload(0x3ac0)) mstore(0x3b80, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x3ba0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x3b00, 0xc0, 0x3ae0, 0x20), 1), success) { let inv := mload(0x3ae0) let v v := mload(0x3a60) mstore(14944, mulmod(mload(0x3aa0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x3a20) mstore(14880, mulmod(mload(0x3a80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x39e0) mstore(14816, mulmod(mload(0x39a0), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x39a0, inv) } mstore(0x3bc0, mulmod(mload(0x39c0), mload(0x39e0), f_q)) mstore(0x3be0, mulmod(mload(0x3a00), mload(0x3a20), f_q)) mstore(0x3c00, mulmod(mload(0x3a40), mload(0x3a60), f_q)) mstore(0x3c20, mulmod(mload(0xbe0), mload(0xbe0), f_q)) mstore(0x3c40, mulmod(mload(0x3c20), mload(0xbe0), f_q)) mstore(0x3c60, mulmod(mload(0x3c40), mload(0xbe0), f_q)) mstore(0x3c80, mulmod(mload(0x3c60), mload(0xbe0), f_q)) mstore(0x3ca0, mulmod(mload(0x3c80), mload(0xbe0), f_q)) mstore(0x3cc0, mulmod(mload(0x3ca0), mload(0xbe0), f_q)) mstore(0x3ce0, mulmod(mload(0x3cc0), mload(0xbe0), f_q)) mstore(0x3d00, mulmod(mload(0x3ce0), mload(0xbe0), f_q)) mstore(0x3d20, mulmod(mload(0x3d00), mload(0xbe0), f_q)) mstore(0x3d40, mulmod(mload(0xc40), mload(0xc40), f_q)) mstore(0x3d60, mulmod(mload(0x3d40), mload(0xc40), f_q)) mstore(0x3d80, mulmod(mload(0x3d60), mload(0xc40), f_q)) { let result := mulmod(mload(0x960), mload(0x35a0), f_q) result := addmod(mulmod(mload(0x980), mload(0x35c0), f_q), result, f_q) result := addmod(mulmod(mload(0x9a0), mload(0x35e0), f_q), result, f_q) result := addmod(mulmod(mload(0x9c0), mload(0x3600), f_q), result, f_q) mstore(15776, result) } mstore(0x3dc0, mulmod(mload(0x3da0), mload(0x39a0), f_q)) mstore(0x3de0, mulmod(sub(f_q, mload(0x3dc0)), 1, f_q)) mstore(0x3e00, mulmod(mload(0x3de0), 1, f_q)) mstore(0x3e20, mulmod(1, mload(0x39c0), f_q)) { let result := mulmod(mload(0xae0), mload(0x36a0), f_q) result := addmod(mulmod(mload(0xb00), mload(0x36c0), f_q), result, f_q) mstore(15936, result) } mstore(0x3e60, mulmod(mload(0x3e40), mload(0x3bc0), f_q)) mstore(0x3e80, mulmod(sub(f_q, mload(0x3e60)), 1, f_q)) mstore(0x3ea0, mulmod(mload(0x3e20), 1, f_q)) { let result := mulmod(mload(0xb20), mload(0x36a0), f_q) result := addmod(mulmod(mload(0xb40), mload(0x36c0), f_q), result, f_q) mstore(16064, result) } mstore(0x3ee0, mulmod(mload(0x3ec0), mload(0x3bc0), f_q)) mstore(0x3f00, mulmod(sub(f_q, mload(0x3ee0)), mload(0xbe0), f_q)) mstore(0x3f20, mulmod(mload(0x3e20), mload(0xbe0), f_q)) mstore(0x3f40, addmod(mload(0x3e80), mload(0x3f00), f_q)) mstore(0x3f60, mulmod(mload(0x3f40), mload(0xc40), f_q)) mstore(0x3f80, mulmod(mload(0x3ea0), mload(0xc40), f_q)) mstore(0x3fa0, mulmod(mload(0x3f20), mload(0xc40), f_q)) mstore(0x3fc0, addmod(mload(0x3e00), mload(0x3f60), f_q)) mstore(0x3fe0, mulmod(1, mload(0x3a00), f_q)) { let result := mulmod(mload(0xb60), mload(0x36e0), f_q) result := addmod(mulmod(mload(0xb80), mload(0x3700), f_q), result, f_q) mstore(16384, result) } mstore(0x4020, mulmod(mload(0x4000), mload(0x3be0), f_q)) mstore(0x4040, mulmod(sub(f_q, mload(0x4020)), 1, f_q)) mstore(0x4060, mulmod(mload(0x3fe0), 1, f_q)) mstore(0x4080, mulmod(mload(0x4040), mload(0x3d40), f_q)) mstore(0x40a0, mulmod(mload(0x4060), mload(0x3d40), f_q)) mstore(0x40c0, addmod(mload(0x3fc0), mload(0x4080), f_q)) mstore(0x40e0, mulmod(1, mload(0x3a40), f_q)) { let result := mulmod(mload(0xba0), mload(0x3740), f_q) mstore(16640, result) } mstore(0x4120, mulmod(mload(0x4100), mload(0x3c00), f_q)) mstore(0x4140, mulmod(sub(f_q, mload(0x4120)), 1, f_q)) mstore(0x4160, mulmod(mload(0x40e0), 1, f_q)) { let result := mulmod(mload(0x9e0), mload(0x3740), f_q) mstore(16768, result) } mstore(0x41a0, mulmod(mload(0x4180), mload(0x3c00), f_q)) mstore(0x41c0, mulmod(sub(f_q, mload(0x41a0)), mload(0xbe0), f_q)) mstore(0x41e0, mulmod(mload(0x40e0), mload(0xbe0), f_q)) mstore(0x4200, addmod(mload(0x4140), mload(0x41c0), f_q)) { let result := mulmod(mload(0xa00), mload(0x3740), f_q) mstore(16928, result) } mstore(0x4240, mulmod(mload(0x4220), mload(0x3c00), f_q)) mstore(0x4260, mulmod(sub(f_q, mload(0x4240)), mload(0x3c20), f_q)) mstore(0x4280, mulmod(mload(0x40e0), mload(0x3c20), f_q)) mstore(0x42a0, addmod(mload(0x4200), mload(0x4260), f_q)) { let result := mulmod(mload(0xa20), mload(0x3740), f_q) mstore(17088, result) } mstore(0x42e0, mulmod(mload(0x42c0), mload(0x3c00), f_q)) mstore(0x4300, mulmod(sub(f_q, mload(0x42e0)), mload(0x3c40), f_q)) mstore(0x4320, mulmod(mload(0x40e0), mload(0x3c40), f_q)) mstore(0x4340, addmod(mload(0x42a0), mload(0x4300), f_q)) { let result := mulmod(mload(0xa40), mload(0x3740), f_q) mstore(17248, result) } mstore(0x4380, mulmod(mload(0x4360), mload(0x3c00), f_q)) mstore(0x43a0, mulmod(sub(f_q, mload(0x4380)), mload(0x3c60), f_q)) mstore(0x43c0, mulmod(mload(0x40e0), mload(0x3c60), f_q)) mstore(0x43e0, addmod(mload(0x4340), mload(0x43a0), f_q)) { let result := mulmod(mload(0xa80), mload(0x3740), f_q) mstore(17408, result) } mstore(0x4420, mulmod(mload(0x4400), mload(0x3c00), f_q)) mstore(0x4440, mulmod(sub(f_q, mload(0x4420)), mload(0x3c80), f_q)) mstore(0x4460, mulmod(mload(0x40e0), mload(0x3c80), f_q)) mstore(0x4480, addmod(mload(0x43e0), mload(0x4440), f_q)) { let result := mulmod(mload(0xaa0), mload(0x3740), f_q) mstore(17568, result) } mstore(0x44c0, mulmod(mload(0x44a0), mload(0x3c00), f_q)) mstore(0x44e0, mulmod(sub(f_q, mload(0x44c0)), mload(0x3ca0), f_q)) mstore(0x4500, mulmod(mload(0x40e0), mload(0x3ca0), f_q)) mstore(0x4520, addmod(mload(0x4480), mload(0x44e0), f_q)) { let result := mulmod(mload(0xac0), mload(0x3740), f_q) mstore(17728, result) } mstore(0x4560, mulmod(mload(0x4540), mload(0x3c00), f_q)) mstore(0x4580, mulmod(sub(f_q, mload(0x4560)), mload(0x3cc0), f_q)) mstore(0x45a0, mulmod(mload(0x40e0), mload(0x3cc0), f_q)) mstore(0x45c0, addmod(mload(0x4520), mload(0x4580), f_q)) mstore(0x45e0, mulmod(mload(0x33a0), mload(0x3a40), f_q)) mstore(0x4600, mulmod(mload(0x33c0), mload(0x3a40), f_q)) mstore(0x4620, mulmod(mload(0x33e0), mload(0x3a40), f_q)) { let result := mulmod(mload(0x3400), mload(0x3740), f_q) mstore(17984, result) } mstore(0x4660, mulmod(mload(0x4640), mload(0x3c00), f_q)) mstore(0x4680, mulmod(sub(f_q, mload(0x4660)), mload(0x3ce0), f_q)) mstore(0x46a0, mulmod(mload(0x40e0), mload(0x3ce0), f_q)) mstore(0x46c0, mulmod(mload(0x45e0), mload(0x3ce0), f_q)) mstore(0x46e0, mulmod(mload(0x4600), mload(0x3ce0), f_q)) mstore(0x4700, mulmod(mload(0x4620), mload(0x3ce0), f_q)) mstore(0x4720, addmod(mload(0x45c0), mload(0x4680), f_q)) { let result := mulmod(mload(0xa60), mload(0x3740), f_q) mstore(18240, result) } mstore(0x4760, mulmod(mload(0x4740), mload(0x3c00), f_q)) mstore(0x4780, mulmod(sub(f_q, mload(0x4760)), mload(0x3d00), f_q)) mstore(0x47a0, mulmod(mload(0x40e0), mload(0x3d00), f_q)) mstore(0x47c0, addmod(mload(0x4720), mload(0x4780), f_q)) mstore(0x47e0, mulmod(mload(0x47c0), mload(0x3d60), f_q)) mstore(0x4800, mulmod(mload(0x4160), mload(0x3d60), f_q)) mstore(0x4820, mulmod(mload(0x41e0), mload(0x3d60), f_q)) mstore(0x4840, mulmod(mload(0x4280), mload(0x3d60), f_q)) mstore(0x4860, mulmod(mload(0x4320), mload(0x3d60), f_q)) mstore(0x4880, mulmod(mload(0x43c0), mload(0x3d60), f_q)) mstore(0x48a0, mulmod(mload(0x4460), mload(0x3d60), f_q)) mstore(0x48c0, mulmod(mload(0x4500), mload(0x3d60), f_q)) mstore(0x48e0, mulmod(mload(0x45a0), mload(0x3d60), f_q)) mstore(0x4900, mulmod(mload(0x46a0), mload(0x3d60), f_q)) mstore(0x4920, mulmod(mload(0x46c0), mload(0x3d60), f_q)) mstore(0x4940, mulmod(mload(0x46e0), mload(0x3d60), f_q)) mstore(0x4960, mulmod(mload(0x4700), mload(0x3d60), f_q)) mstore(0x4980, mulmod(mload(0x47a0), mload(0x3d60), f_q)) mstore(0x49a0, addmod(mload(0x40c0), mload(0x47e0), f_q)) mstore(0x49c0, mulmod(1, mload(0x3680), f_q)) mstore(0x49e0, mulmod(1, mload(0xce0), f_q)) mstore(0x4a00, 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(0x4a20, 0x0000000000000000000000000000000000000000000000000000000000000002) mstore(0x4a40, mload(0x49a0)) success := and(eq(staticcall(gas(), 0x7, 0x4a00, 0x60, 0x4a00, 0x40), 1), success) mstore(0x4a60, mload(0x4a00)) mstore(0x4a80, mload(0x4a20)) mstore(0x4aa0, mload(0x500)) mstore(0x4ac0, mload(0x520)) success := and(eq(staticcall(gas(), 0x6, 0x4a60, 0x80, 0x4a60, 0x40), 1), success) mstore(0x4ae0, mload(0x6e0)) mstore(0x4b00, mload(0x700)) mstore(0x4b20, mload(0x3f80)) success := and(eq(staticcall(gas(), 0x7, 0x4ae0, 0x60, 0x4ae0, 0x40), 1), success) mstore(0x4b40, mload(0x4a60)) mstore(0x4b60, mload(0x4a80)) mstore(0x4b80, mload(0x4ae0)) mstore(0x4ba0, mload(0x4b00)) success := and(eq(staticcall(gas(), 0x6, 0x4b40, 0x80, 0x4b40, 0x40), 1), success) mstore(0x4bc0, mload(0x720)) mstore(0x4be0, mload(0x740)) mstore(0x4c00, mload(0x3fa0)) success := and(eq(staticcall(gas(), 0x7, 0x4bc0, 0x60, 0x4bc0, 0x40), 1), success) mstore(0x4c20, mload(0x4b40)) mstore(0x4c40, mload(0x4b60)) mstore(0x4c60, mload(0x4bc0)) mstore(0x4c80, mload(0x4be0)) success := and(eq(staticcall(gas(), 0x6, 0x4c20, 0x80, 0x4c20, 0x40), 1), success) mstore(0x4ca0, mload(0x5a0)) mstore(0x4cc0, mload(0x5c0)) mstore(0x4ce0, mload(0x40a0)) success := and(eq(staticcall(gas(), 0x7, 0x4ca0, 0x60, 0x4ca0, 0x40), 1), success) mstore(0x4d00, mload(0x4c20)) mstore(0x4d20, mload(0x4c40)) mstore(0x4d40, mload(0x4ca0)) mstore(0x4d60, mload(0x4cc0)) success := and(eq(staticcall(gas(), 0x6, 0x4d00, 0x80, 0x4d00, 0x40), 1), success) mstore(0x4d80, mload(0x5e0)) mstore(0x4da0, mload(0x600)) mstore(0x4dc0, mload(0x4800)) success := and(eq(staticcall(gas(), 0x7, 0x4d80, 0x60, 0x4d80, 0x40), 1), success) mstore(0x4de0, mload(0x4d00)) mstore(0x4e00, mload(0x4d20)) mstore(0x4e20, mload(0x4d80)) mstore(0x4e40, mload(0x4da0)) success := and(eq(staticcall(gas(), 0x6, 0x4de0, 0x80, 0x4de0, 0x40), 1), success) mstore(0x4e60, 0x0b9a1d90f4d2149e6fd88763df52ee3b7fbd7479c8d3880038b37ab455228ca1) mstore(0x4e80, 0x0a126c5191f45b3f6db196968d725c39024e122f77faf484cadbf20d453bee9e) mstore(0x4ea0, mload(0x4820)) success := and(eq(staticcall(gas(), 0x7, 0x4e60, 0x60, 0x4e60, 0x40), 1), success) mstore(0x4ec0, mload(0x4de0)) mstore(0x4ee0, mload(0x4e00)) mstore(0x4f00, mload(0x4e60)) mstore(0x4f20, mload(0x4e80)) success := and(eq(staticcall(gas(), 0x6, 0x4ec0, 0x80, 0x4ec0, 0x40), 1), success) mstore(0x4f40, 0x14f9967686882b298d055eecfbeadcdaccdc11bb403d2595d9e009ea2fd4914b) mstore(0x4f60, 0x0f951ee95117ad514363247e2d918cbe010dc8a088ed831da215dd1667b233b4) mstore(0x4f80, mload(0x4840)) success := and(eq(staticcall(gas(), 0x7, 0x4f40, 0x60, 0x4f40, 0x40), 1), success) mstore(0x4fa0, mload(0x4ec0)) mstore(0x4fc0, mload(0x4ee0)) mstore(0x4fe0, mload(0x4f40)) mstore(0x5000, mload(0x4f60)) success := and(eq(staticcall(gas(), 0x6, 0x4fa0, 0x80, 0x4fa0, 0x40), 1), success) mstore(0x5020, 0x0f030ba7d233a926023772efd048a06115a81f44243d9eb142dcc334045e3984) mstore(0x5040, 0x122aef3feca33f9fa2b58473490d79bd7740e61c5e48be97fb8e03ffc56c1594) mstore(0x5060, mload(0x4860)) success := and(eq(staticcall(gas(), 0x7, 0x5020, 0x60, 0x5020, 0x40), 1), success) mstore(0x5080, mload(0x4fa0)) mstore(0x50a0, mload(0x4fc0)) mstore(0x50c0, mload(0x5020)) mstore(0x50e0, mload(0x5040)) success := and(eq(staticcall(gas(), 0x6, 0x5080, 0x80, 0x5080, 0x40), 1), success) mstore(0x5100, 0x2e2491f99291ea9f817cb8e6e6886faf5c55f365bbc21c797e229330ac7ebe65) mstore(0x5120, 0x259e1755aa8905122f69471618263dfac184a26ffae23687d515274a74e7a8ac) mstore(0x5140, mload(0x4880)) success := and(eq(staticcall(gas(), 0x7, 0x5100, 0x60, 0x5100, 0x40), 1), success) mstore(0x5160, mload(0x5080)) mstore(0x5180, mload(0x50a0)) mstore(0x51a0, mload(0x5100)) mstore(0x51c0, mload(0x5120)) success := and(eq(staticcall(gas(), 0x6, 0x5160, 0x80, 0x5160, 0x40), 1), success) mstore(0x51e0, 0x2f4d2bf2ca4cd42f927d0fabbd31965da8bd92a4a6363692f649113d222ee176) mstore(0x5200, 0x081f92dc68d325cac733543bfac7639fafdd59604910dd41e876bce399fff3a0) mstore(0x5220, mload(0x48a0)) success := and(eq(staticcall(gas(), 0x7, 0x51e0, 0x60, 0x51e0, 0x40), 1), success) mstore(0x5240, mload(0x5160)) mstore(0x5260, mload(0x5180)) mstore(0x5280, mload(0x51e0)) mstore(0x52a0, mload(0x5200)) success := and(eq(staticcall(gas(), 0x6, 0x5240, 0x80, 0x5240, 0x40), 1), success) mstore(0x52c0, 0x0acd7d0e602fca913d344401b686c3516f9b02695d957da91ba5c349eee3759f) mstore(0x52e0, 0x0e73c1bce2daf77a052c94603561ae6d05bdf5e61adfb8ee4628feca60e0f9c2) mstore(0x5300, mload(0x48c0)) success := and(eq(staticcall(gas(), 0x7, 0x52c0, 0x60, 0x52c0, 0x40), 1), success) mstore(0x5320, mload(0x5240)) mstore(0x5340, mload(0x5260)) mstore(0x5360, mload(0x52c0)) mstore(0x5380, mload(0x52e0)) success := and(eq(staticcall(gas(), 0x6, 0x5320, 0x80, 0x5320, 0x40), 1), success) mstore(0x53a0, 0x00f3b507db1425bc54a89078f8954e9ee67eee7b46bccdea7bb3adc9ed9c9248) mstore(0x53c0, 0x0a204ce583710da1783761b04a91bb79fe0e9de3e21e481e814d9f1c481c3523) mstore(0x53e0, mload(0x48e0)) success := and(eq(staticcall(gas(), 0x7, 0x53a0, 0x60, 0x53a0, 0x40), 1), success) mstore(0x5400, mload(0x5320)) mstore(0x5420, mload(0x5340)) mstore(0x5440, mload(0x53a0)) mstore(0x5460, mload(0x53c0)) success := and(eq(staticcall(gas(), 0x6, 0x5400, 0x80, 0x5400, 0x40), 1), success) mstore(0x5480, mload(0x800)) mstore(0x54a0, mload(0x820)) mstore(0x54c0, mload(0x4900)) success := and(eq(staticcall(gas(), 0x7, 0x5480, 0x60, 0x5480, 0x40), 1), success) mstore(0x54e0, mload(0x5400)) mstore(0x5500, mload(0x5420)) mstore(0x5520, mload(0x5480)) mstore(0x5540, mload(0x54a0)) success := and(eq(staticcall(gas(), 0x6, 0x54e0, 0x80, 0x54e0, 0x40), 1), success) mstore(0x5560, mload(0x840)) mstore(0x5580, mload(0x860)) mstore(0x55a0, mload(0x4920)) success := and(eq(staticcall(gas(), 0x7, 0x5560, 0x60, 0x5560, 0x40), 1), success) mstore(0x55c0, mload(0x54e0)) mstore(0x55e0, mload(0x5500)) mstore(0x5600, mload(0x5560)) mstore(0x5620, mload(0x5580)) success := and(eq(staticcall(gas(), 0x6, 0x55c0, 0x80, 0x55c0, 0x40), 1), success) mstore(0x5640, mload(0x880)) mstore(0x5660, mload(0x8a0)) mstore(0x5680, mload(0x4940)) success := and(eq(staticcall(gas(), 0x7, 0x5640, 0x60, 0x5640, 0x40), 1), success) mstore(0x56a0, mload(0x55c0)) mstore(0x56c0, mload(0x55e0)) mstore(0x56e0, mload(0x5640)) mstore(0x5700, mload(0x5660)) success := and(eq(staticcall(gas(), 0x6, 0x56a0, 0x80, 0x56a0, 0x40), 1), success) mstore(0x5720, mload(0x8c0)) mstore(0x5740, mload(0x8e0)) mstore(0x5760, mload(0x4960)) success := and(eq(staticcall(gas(), 0x7, 0x5720, 0x60, 0x5720, 0x40), 1), success) mstore(0x5780, mload(0x56a0)) mstore(0x57a0, mload(0x56c0)) mstore(0x57c0, mload(0x5720)) mstore(0x57e0, mload(0x5740)) success := and(eq(staticcall(gas(), 0x6, 0x5780, 0x80, 0x5780, 0x40), 1), success) mstore(0x5800, mload(0x760)) mstore(0x5820, mload(0x780)) mstore(0x5840, mload(0x4980)) success := and(eq(staticcall(gas(), 0x7, 0x5800, 0x60, 0x5800, 0x40), 1), success) mstore(0x5860, mload(0x5780)) mstore(0x5880, mload(0x57a0)) mstore(0x58a0, mload(0x5800)) mstore(0x58c0, mload(0x5820)) success := and(eq(staticcall(gas(), 0x6, 0x5860, 0x80, 0x5860, 0x40), 1), success) mstore(0x58e0, mload(0xc80)) mstore(0x5900, mload(0xca0)) mstore(0x5920, sub(f_q, mload(0x49c0))) success := and(eq(staticcall(gas(), 0x7, 0x58e0, 0x60, 0x58e0, 0x40), 1), success) mstore(0x5940, mload(0x5860)) mstore(0x5960, mload(0x5880)) mstore(0x5980, mload(0x58e0)) mstore(0x59a0, mload(0x5900)) success := and(eq(staticcall(gas(), 0x6, 0x5940, 0x80, 0x5940, 0x40), 1), success) mstore(0x59c0, mload(0xd20)) mstore(0x59e0, mload(0xd40)) mstore(0x5a00, mload(0x49e0)) success := and(eq(staticcall(gas(), 0x7, 0x59c0, 0x60, 0x59c0, 0x40), 1), success) mstore(0x5a20, mload(0x5940)) mstore(0x5a40, mload(0x5960)) mstore(0x5a60, mload(0x59c0)) mstore(0x5a80, mload(0x59e0)) success := and(eq(staticcall(gas(), 0x6, 0x5a20, 0x80, 0x5a20, 0x40), 1), success) mstore(0x5aa0, mload(0x5a20)) mstore(0x5ac0, mload(0x5a40)) mstore(0x5ae0, mload(0xd20)) mstore(0x5b00, mload(0xd40)) mstore(0x5b20, mload(0xd60)) mstore(0x5b40, mload(0xd80)) mstore(0x5b60, mload(0xda0)) mstore(0x5b80, mload(0xdc0)) mstore(0x5ba0, keccak256(0x5aa0, 256)) mstore(23488, mod(mload(23456), f_q)) mstore(0x5be0, mulmod(mload(0x5bc0), mload(0x5bc0), f_q)) mstore(0x5c00, mulmod(1, mload(0x5bc0), f_q)) mstore(0x5c20, mload(0x5b20)) mstore(0x5c40, mload(0x5b40)) mstore(0x5c60, mload(0x5c00)) success := and(eq(staticcall(gas(), 0x7, 0x5c20, 0x60, 0x5c20, 0x40), 1), success) mstore(0x5c80, mload(0x5aa0)) mstore(0x5ca0, mload(0x5ac0)) mstore(0x5cc0, mload(0x5c20)) mstore(0x5ce0, mload(0x5c40)) success := and(eq(staticcall(gas(), 0x6, 0x5c80, 0x80, 0x5c80, 0x40), 1), success) mstore(0x5d00, mload(0x5b60)) mstore(0x5d20, mload(0x5b80)) mstore(0x5d40, mload(0x5c00)) success := and(eq(staticcall(gas(), 0x7, 0x5d00, 0x60, 0x5d00, 0x40), 1), success) mstore(0x5d60, mload(0x5ae0)) mstore(0x5d80, mload(0x5b00)) mstore(0x5da0, mload(0x5d00)) mstore(0x5dc0, mload(0x5d20)) success := and(eq(staticcall(gas(), 0x6, 0x5d60, 0x80, 0x5d60, 0x40), 1), success) mstore(0x5de0, mload(0x5c80)) mstore(0x5e00, mload(0x5ca0)) mstore(0x5e20, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(0x5e40, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(0x5e60, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(0x5e80, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) mstore(0x5ea0, mload(0x5d60)) mstore(0x5ec0, mload(0x5d80)) mstore(0x5ee0, 0x138d5863615c12d3bd7d3fd007776d281a337f9d7f6dce23532100bb4bb5839d) mstore(0x5f00, 0x0a3bb881671ee4e9238366e87f6598f0de356372ed3dc870766ec8ac005211e4) mstore(0x5f20, 0x19c9d7d9c6e7ad2d9a0d5847ebdd2687c668939a202553ded2760d3eb8dbf559) mstore(0x5f40, 0x198adb441818c42721c88c532ed13a5da1ebb78b85574d0b7326d8e6f4c1e25a) success := and(eq(staticcall(gas(), 0x8, 0x5de0, 0x180, 0x5de0, 0x20), 1), success) success := and(eq(mload(0x5de0), 1), success) if not(success) { revert(0, 0) } return(0, 0) } } }