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(0x500, mod(calldataload(0x4e0), f_q)) mstore(0x520, mod(calldataload(0x500), f_q)) mstore(0x540, mod(calldataload(0x520), f_q)) mstore(0x560, mod(calldataload(0x540), f_q)) mstore(0x580, mod(calldataload(0x560), f_q)) mstore(0x5a0, mod(calldataload(0x580), f_q)) mstore(0x5c0, mod(calldataload(0x5a0), f_q)) mstore(0x5e0, mod(calldataload(0x5c0), f_q)) mstore(0x600, mod(calldataload(0x5e0), f_q)) mstore(0x620, mod(calldataload(0x600), f_q)) mstore(0x640, mod(calldataload(0x620), f_q)) mstore(0x660, mod(calldataload(0x640), f_q)) mstore(0x680, mod(calldataload(0x660), f_q)) mstore(0x6a0, mod(calldataload(0x680), f_q)) mstore(0x6c0, mod(calldataload(0x6a0), f_q)) mstore(0x6e0, mod(calldataload(0x6c0), f_q)) mstore(0x700, mod(calldataload(0x6e0), f_q)) mstore(0x0, 3070330598423483684997578132342042775302428088284443187127165829370988263872) { let x := calldataload(0x700) mstore(0x720, x) let y := calldataload(0x720) mstore(0x740, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x740) mstore(0x760, x) let y := calldataload(0x760) mstore(0x780, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x780) mstore(0x7a0, x) let y := calldataload(0x7a0) mstore(0x7c0, y) success := and(validate_ec_point(x, y), success) } mstore(0x7e0, keccak256(0x0, 2016)) { let hash := mload(0x7e0) mstore(0x800, mod(hash, f_q)) mstore(0x820, hash) } { let x := calldataload(0x7c0) mstore(0x840, x) let y := calldataload(0x7e0) mstore(0x860, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x800) mstore(0x880, x) let y := calldataload(0x820) mstore(0x8a0, y) success := and(validate_ec_point(x, y), success) } mstore(0x8c0, keccak256(0x820, 160)) { let hash := mload(0x8c0) mstore(0x8e0, mod(hash, f_q)) mstore(0x900, hash) } mstore8(2336, 1) mstore(0x920, keccak256(0x900, 33)) { let hash := mload(0x920) mstore(0x940, mod(hash, f_q)) mstore(0x960, hash) } { let x := calldataload(0x840) mstore(0x980, x) let y := calldataload(0x860) mstore(0x9a0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x880) mstore(0x9c0, x) let y := calldataload(0x8a0) mstore(0x9e0, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x8c0) mstore(0xa00, x) let y := calldataload(0x8e0) mstore(0xa20, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x900) mstore(0xa40, x) let y := calldataload(0x920) mstore(0xa60, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x940) mstore(0xa80, x) let y := calldataload(0x960) mstore(0xaa0, y) success := and(validate_ec_point(x, y), success) } mstore(0xac0, keccak256(0x960, 352)) { let hash := mload(0xac0) mstore(0xae0, mod(hash, f_q)) mstore(0xb00, hash) } { let x := calldataload(0x980) mstore(0xb20, x) let y := calldataload(0x9a0) mstore(0xb40, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0x9c0) mstore(0xb60, x) let y := calldataload(0x9e0) mstore(0xb80, y) success := and(validate_ec_point(x, y), success) } { let x := calldataload(0xa00) mstore(0xba0, x) let y := calldataload(0xa20) mstore(0xbc0, y) success := and(validate_ec_point(x, y), success) } mstore(0xbe0, keccak256(0xb00, 224)) { let hash := mload(0xbe0) mstore(0xc00, mod(hash, f_q)) mstore(0xc20, hash) } 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, mod(calldataload(0xd20), f_q)) mstore(0xf40, mod(calldataload(0xd40), f_q)) mstore(0xf60, mod(calldataload(0xd60), f_q)) mstore(0xf80, mod(calldataload(0xd80), f_q)) mstore(0xfa0, mod(calldataload(0xda0), f_q)) mstore(0xfc0, mod(calldataload(0xdc0), f_q)) mstore(0xfe0, mod(calldataload(0xde0), f_q)) mstore(0x1000, mod(calldataload(0xe00), f_q)) mstore(0x1020, mod(calldataload(0xe20), f_q)) mstore(0x1040, keccak256(0xc20, 1056)) { let hash := mload(0x1040) mstore(0x1060, mod(hash, f_q)) mstore(0x1080, hash) } mstore8(4256, 1) mstore(0x10a0, keccak256(0x1080, 33)) { let hash := mload(0x10a0) mstore(0x10c0, mod(hash, f_q)) mstore(0x10e0, hash) } { let x := calldataload(0xe40) mstore(0x1100, x) let y := calldataload(0xe60) mstore(0x1120, y) success := and(validate_ec_point(x, y), success) } mstore(0x1140, keccak256(0x10e0, 96)) { let hash := mload(0x1140) mstore(0x1160, mod(hash, f_q)) mstore(0x1180, hash) } { let x := calldataload(0xe80) mstore(0x11a0, x) let y := calldataload(0xea0) mstore(0x11c0, 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(4576, x) let y := mload(0x80) y := add(y, shl(88, mload(0xa0))) y := add(y, shl(176, mload(0xc0))) mstore(4608, 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(4640, x) let y := mload(0x140) y := add(y, shl(88, mload(0x160))) y := add(y, shl(176, mload(0x180))) mstore(4672, y) success := and(validate_ec_point(x, y), success) } mstore(0x1260, mulmod(mload(0xc00), mload(0xc00), 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, mulmod(mload(0x13e0), mload(0x13e0), f_q)) mstore(0x1420, mulmod(mload(0x1400), mload(0x1400), f_q)) mstore(0x1440, mulmod(mload(0x1420), mload(0x1420), f_q)) mstore(0x1460, mulmod(mload(0x1440), mload(0x1440), f_q)) mstore(0x1480, mulmod(mload(0x1460), mload(0x1460), f_q)) mstore(0x14a0, mulmod(mload(0x1480), mload(0x1480), f_q)) mstore(0x14c0, mulmod(mload(0x14a0), mload(0x14a0), f_q)) mstore(0x14e0, mulmod(mload(0x14c0), mload(0x14c0), f_q)) mstore(0x1500, mulmod(mload(0x14e0), mload(0x14e0), f_q)) mstore(0x1520, mulmod(mload(0x1500), mload(0x1500), f_q)) mstore(0x1540, mulmod(mload(0x1520), mload(0x1520), f_q)) mstore(0x1560, addmod(mload(0x1540), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) mstore(0x1580, mulmod(mload(0x1560), 21888241567198334088790460357988866238279339518792980768180410072331574733841, f_q)) mstore(0x15a0, mulmod(mload(0x1580), 12929131318670223636853686797196826072950305380535537217467769528748593133487, f_q)) mstore(0x15c0, addmod(mload(0xc00), 8959111553169051585392718948060449015598059019880497126230434657827215362130, f_q)) mstore(0x15e0, mulmod(mload(0x1580), 14655294445420895451632927078981340937842238432098198055057679026789553137428, f_q)) mstore(0x1600, addmod(mload(0xc00), 7232948426418379770613478666275934150706125968317836288640525159786255358189, f_q)) mstore(0x1620, mulmod(mload(0x1580), 12220484078924208264862893648548198807365556694478604924193442790112568454894, f_q)) mstore(0x1640, addmod(mload(0xc00), 9667758792915066957383512096709076281182807705937429419504761396463240040723, f_q)) mstore(0x1660, mulmod(mload(0x1580), 8734126352828345679573237859165904705806588461301144420590422589042130041188, f_q)) mstore(0x1680, addmod(mload(0xc00), 13154116519010929542673167886091370382741775939114889923107781597533678454429, f_q)) mstore(0x16a0, mulmod(mload(0x1580), 7358966525675286471217089135633860168646304224547606326237275077574224349359, f_q)) mstore(0x16c0, addmod(mload(0xc00), 14529276346163988751029316609623414919902060175868428017460929109001584146258, f_q)) mstore(0x16e0, mulmod(mload(0x1580), 9741553891420464328295280489650144566903017206473301385034033384879943874347, f_q)) mstore(0x1700, addmod(mload(0xc00), 12146688980418810893951125255607130521645347193942732958664170801695864621270, f_q)) mstore(0x1720, mulmod(mload(0x1580), 17329448237240114492580865744088056414251735686965494637158808787419781175510, f_q)) mstore(0x1740, addmod(mload(0xc00), 4558794634599160729665540001169218674296628713450539706539395399156027320107, f_q)) mstore(0x1760, mulmod(mload(0x1580), 1, f_q)) mstore(0x1780, addmod(mload(0xc00), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) mstore(0x17a0, mulmod(mload(0x1580), 11451405578697956743456240853980216273390554734748796433026540431386972584651, f_q)) mstore(0x17c0, addmod(mload(0xc00), 10436837293141318478790164891277058815157809665667237910671663755188835910966, f_q)) mstore(0x17e0, mulmod(mload(0x1580), 8374374965308410102411073611984011876711565317741801500439755773472076597347, f_q)) mstore(0x1800, addmod(mload(0xc00), 13513867906530865119835332133273263211836799082674232843258448413103731898270, f_q)) mstore(0x1820, mulmod(mload(0x1580), 21490807004895109926141140246143262403290679459142140821740925192625185504522, f_q)) mstore(0x1840, addmod(mload(0xc00), 397435866944165296105265499114012685257684941273893521957278993950622991095, f_q)) mstore(0x1860, mulmod(mload(0x1580), 11211301017135681023579411905410872569206244553457844956874280139879520583390, f_q)) mstore(0x1880, addmod(mload(0xc00), 10676941854703594198666993839846402519342119846958189386823924046696287912227, f_q)) mstore(0x18a0, mulmod(mload(0x1580), 18846108080730935585192484934247867403156699586319724728525857970312957475341, f_q)) mstore(0x18c0, addmod(mload(0xc00), 3042134791108339637053920811009407685391664814096309615172346216262851020276, f_q)) mstore(0x18e0, mulmod(mload(0x1580), 3615478808282855240548287271348143516886772452944084747768312988864436725401, f_q)) mstore(0x1900, addmod(mload(0xc00), 18272764063556419981698118473909131571661591947471949595929891197711371770216, f_q)) mstore(0x1920, mulmod(mload(0x1580), 21451937155080765789602997556105366785934335730087568134349216848800867145453, f_q)) mstore(0x1940, addmod(mload(0xc00), 436305716758509432643408189151908302614028670328466209348987337774941350164, f_q)) mstore(0x1960, mulmod(mload(0x1580), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q)) mstore(0x1980, addmod(mload(0xc00), 20461838439117790833741043996939313553025008529160428886800406442142042007110, f_q)) mstore(0x19a0, mulmod(mload(0x1580), 13982290267294411190096162596630216412723378687553046594730793425118513274800, f_q)) mstore(0x19c0, addmod(mload(0xc00), 7905952604544864032150243148627058675824985712862987748967410761457295220817, f_q)) mstore(0x19e0, mulmod(mload(0x1580), 216092043779272773661818549620449970334216366264741118684015851799902419467, f_q)) mstore(0x1a00, addmod(mload(0xc00), 21672150828060002448584587195636825118214148034151293225014188334775906076150, f_q)) mstore(0x1a20, mulmod(mload(0x1580), 9537783784440837896026284659246718978615447564543116209283382057778110278482, f_q)) mstore(0x1a40, addmod(mload(0xc00), 12350459087398437326220121086010556109932916835872918134414822128797698217135, f_q)) mstore(0x1a60, mulmod(mload(0x1580), 12619617507853212586156872920672483948819476989779550311307282715684870266992, f_q)) mstore(0x1a80, addmod(mload(0xc00), 9268625363986062636089532824584791139728887410636484032390921470890938228625, f_q)) mstore(0x1aa0, mulmod(mload(0x1580), 3947443723575973965644279767310964219908423994086470065513888332899718123222, f_q)) mstore(0x1ac0, addmod(mload(0xc00), 17940799148263301256602125977946310868639940406329564278184315853676090372395, f_q)) mstore(0x1ae0, mulmod(mload(0x1580), 18610195890048912503953886742825279624920778288956610528523679659246523534888, f_q)) mstore(0x1b00, addmod(mload(0xc00), 3278046981790362718292519002431995463627586111459423815174524527329284960729, f_q)) mstore(0x1b20, mulmod(mload(0x1580), 1539082509056298927655194235755440186888826897239928178265486731666142403222, f_q)) mstore(0x1b40, addmod(mload(0xc00), 20349160362782976294591211509501834901659537503176106165432717454909666092395, f_q)) mstore(0x1b60, mulmod(mload(0x1580), 19032961837237948602743626455740240236231119053033140765040043513661803148152, f_q)) mstore(0x1b80, addmod(mload(0xc00), 2855281034601326619502779289517034852317245347382893578658160672914005347465, f_q)) mstore(0x1ba0, mulmod(mload(0x1580), 4317410353320599552056040796202302907960891408523818766419977508859423800635, f_q)) mstore(0x1bc0, addmod(mload(0xc00), 17570832518518675670190364949054972180587472991892215577278226677716384694982, f_q)) mstore(0x1be0, mulmod(mload(0x1580), 14875928112196239563830800280253496262679717528621719058794366823499719730250, f_q)) mstore(0x1c00, addmod(mload(0xc00), 7012314759643035658415605465003778825868646871794315284903837363076088765367, f_q)) mstore(0x1c20, mulmod(mload(0x1580), 2366023502186770334390939928726871658997402416352868340984630739442624219298, f_q)) mstore(0x1c40, addmod(mload(0xc00), 19522219369652504887855465816530403429550961984063166002713573447133184276319, f_q)) mstore(0x1c60, mulmod(mload(0x1580), 915149353520972163646494413843788069594022902357002628455555785223409501882, f_q)) mstore(0x1c80, addmod(mload(0xc00), 20973093518318303058599911331413487018954341498059031715242648401352398993735, f_q)) mstore(0x1ca0, mulmod(mload(0x1580), 14391499717548074167711220639833994904150450341569029103202493919171555826079, f_q)) mstore(0x1cc0, addmod(mload(0xc00), 7496743154291201054535185105423280184397914058847005240495710267404252669538, f_q)) mstore(0x1ce0, mulmod(mload(0x1580), 5522161504810533295870699551020523636289972223872138525048055197429246400245, f_q)) mstore(0x1d00, addmod(mload(0xc00), 16366081367028741926375706194236751452258392176543895818650148989146562095372, f_q)) mstore(0x1d20, mulmod(mload(0x1580), 10119780362642123194334092174270235809557798114544683654677907882314807212354, f_q)) mstore(0x1d40, addmod(mload(0xc00), 11768462509197152027912313570987039278990566285871350689020296304261001283263, f_q)) mstore(0x1d60, mulmod(mload(0x1580), 3766081621734395783232337525162072736827576297943013392955872170138036189193, f_q)) mstore(0x1d80, addmod(mload(0xc00), 18122161250104879439014068220095202351720788102473020950742332016437772306424, f_q)) mstore(0x1da0, mulmod(mload(0x1580), 2080322550956715654503104356805349981348621877591103674778333538652571537127, f_q)) mstore(0x1dc0, addmod(mload(0xc00), 19807920320882559567743301388451925107199742522824930668919870647923236958490, f_q)) mstore(0x1de0, mulmod(mload(0x1580), 9100833993744738801214480881117348002768153232283708533639316963648253510584, f_q)) mstore(0x1e00, addmod(mload(0xc00), 12787408878094536421031924864139927085780211168132325810058887222927554985033, f_q)) mstore(0x1e20, mulmod(mload(0x1580), 11145214675344139457514777444556774698911688619991656085001542609383151586084, f_q)) mstore(0x1e40, addmod(mload(0xc00), 10743028196495135764731628300700500389636675780424378258696661577192656909533, f_q)) mstore(0x1e60, mulmod(mload(0x1580), 4245441013247250116003069945606352967193023389718465410501109428393342802981, f_q)) mstore(0x1e80, addmod(mload(0xc00), 17642801858592025106243335799650922121355341010697568933197094758182465692636, f_q)) mstore(0x1ea0, mulmod(mload(0x1580), 19228510170961893342195489288913594506775385223367826565223897736323409650249, f_q)) mstore(0x1ec0, addmod(mload(0xc00), 2659732700877381880050916456343680581772979177048207778474306450252398845368, f_q)) mstore(0x1ee0, mulmod(mload(0x1580), 6132660129994545119218258312491950835441607143741804980633129304664017206141, f_q)) mstore(0x1f00, addmod(mload(0xc00), 15755582741844730103028147432765324253106757256674229363065074881911791289476, f_q)) mstore(0x1f20, mulmod(mload(0x1580), 10094752117139066216691253588991632982053223883646966177987813353508871280747, f_q)) mstore(0x1f40, addmod(mload(0xc00), 11793490754700209005555152156265642106495140516769068165710390833066937214870, f_q)) mstore(0x1f60, mulmod(mload(0x1580), 5854133144571823792863860130267644613802765696134002830362054821530146160770, f_q)) mstore(0x1f80, addmod(mload(0xc00), 16034109727267451429382545614989630474745598704282031513336149365045662334847, f_q)) mstore(0x1fa0, mulmod(mload(0x1580), 21346203717540287263608402129024479709126363130664317843105498655869866203005, f_q)) mstore(0x1fc0, addmod(mload(0xc00), 542039154298987958638003616232795379422001269751716500592705530705942292612, f_q)) mstore(0x1fe0, mulmod(mload(0x1580), 515148244606945972463850631189471072103916690263705052318085725998468254533, f_q)) mstore(0x2000, addmod(mload(0xc00), 21373094627232329249782555114067804016444447710152329291380118460577340241084, f_q)) mstore(0x2020, mulmod(mload(0x1580), 13788243025932779125104144225768424453664118806559109014238064020826883170336, f_q)) mstore(0x2040, addmod(mload(0xc00), 8099999845906496097142261519488850634884245593856925329460140165748925325281, f_q)) mstore(0x2060, mulmod(mload(0x1580), 5980488956150442207659150513163747165544364597008566989111579977672498964212, f_q)) mstore(0x2080, addmod(mload(0xc00), 15907753915688833014587255232093527923003999803407467354586624208903309531405, f_q)) mstore(0x20a0, mulmod(mload(0x1580), 8561696234966975469289029207282849740510759316794581475824569334969644143582, f_q)) mstore(0x20c0, addmod(mload(0xc00), 13326546636872299752957376537974425348037605083621452867873634851606164352035, f_q)) mstore(0x20e0, mulmod(mload(0x1580), 5223738580615264174925218065001555728265216895679471490312087802465486318994, f_q)) mstore(0x2100, addmod(mload(0xc00), 16664504291224011047321187680255719360283147504736562853386116384110322176623, f_q)) mstore(0x2120, mulmod(mload(0x1580), 3302268277365219249160464068848832456250192077357408622723420445620736662125, f_q)) mstore(0x2140, addmod(mload(0xc00), 18585974594474055973085941676408442632298172323058625720974783740955071833492, f_q)) mstore(0x2160, mulmod(mload(0x1580), 14557038802599140430182096396825290815503940951075961210638273254419942783582, f_q)) mstore(0x2180, addmod(mload(0xc00), 7331204069240134792064309348431984273044423449340073133059930932155865712035, f_q)) mstore(0x21a0, mulmod(mload(0x1580), 21631349642691366221117117325940229443266870213711402446456178962469345982255, f_q)) mstore(0x21c0, addmod(mload(0xc00), 256893229147909001129288419317045645281494186704631897242025224106462513362, f_q)) mstore(0x21e0, mulmod(mload(0x1580), 16976236069879939850923145256911338076234942200101755618884183331004076579046, f_q)) mstore(0x2200, addmod(mload(0xc00), 4912006801959335371323260488345937012313422200314278724814020855571731916571, f_q)) mstore(0x2220, mulmod(mload(0x1580), 18106030913818996184930975996483865250387924434749113154514488995517615180373, f_q)) mstore(0x2240, addmod(mload(0xc00), 3782211958020279037315429748773409838160439965666921189183715191058193315244, f_q)) mstore(0x2260, mulmod(mload(0x1580), 13553911191894110065493137367144919847521088405945523452288398666974237857208, f_q)) mstore(0x2280, addmod(mload(0xc00), 8334331679945165156753268378112355241027275994470510891409805519601570638409, f_q)) mstore(0x22a0, mulmod(mload(0x1580), 15126807493918544618788554261654793824894621953586710625413511093368555507114, f_q)) mstore(0x22c0, addmod(mload(0xc00), 6761435377920730603457851483602481263653742446829323718284693093207252988503, f_q)) mstore(0x22e0, mulmod(mload(0x1580), 12222687719926148270818604386979005738180875192307070468454582955273533101023, f_q)) mstore(0x2300, addmod(mload(0xc00), 9665555151913126951427801358278269350367489208108963875243621231302275394594, f_q)) mstore(0x2320, mulmod(mload(0x1580), 16714975918200644516413377824646615398811161167186708005951772994925725210988, f_q)) mstore(0x2340, addmod(mload(0xc00), 5173266953638630705833027920610659689737203233229326337746431191650083284629, f_q)) mstore(0x2360, mulmod(mload(0x1580), 9697063347556872083384215826199993067635178715531258559890418744774301211662, f_q)) mstore(0x2380, addmod(mload(0xc00), 12191179524282403138862189919057282020913185684884775783807785441801507283955, f_q)) mstore(0x23a0, mulmod(mload(0x1580), 8232431451150482057473812611943294635402895089782291356256081195754688638419, f_q)) mstore(0x23c0, addmod(mload(0xc00), 13655811420688793164772593133313980453145469310633742987442122990821119857198, f_q)) mstore(0x23e0, mulmod(mload(0x1580), 13783318220968413117070077848579881425001701814458176881760898225529300547844, f_q)) mstore(0x2400, addmod(mload(0xc00), 8104924650870862105176327896677393663546662585957857461937305961046507947773, f_q)) mstore(0x2420, mulmod(mload(0x1580), 17070294809977715215077308683367050851120007385961664319144486981376266100228, f_q)) mstore(0x2440, addmod(mload(0xc00), 4817948061861560007169097061890224237428357014454370024553717205199542395389, f_q)) mstore(0x2460, mulmod(mload(0x1580), 10807735674816066981985242612061336605021639643453679977988966079770672437131, f_q)) mstore(0x2480, addmod(mload(0xc00), 11080507197023208240261163133195938483526724756962354365709238106805136058486, f_q)) mstore(0x24a0, mulmod(mload(0x1580), 10320222094738691136760616041626757686650252828592064883134944032883139493239, f_q)) mstore(0x24c0, addmod(mload(0xc00), 11568020777100584085485789703630517401898111571823969460563260153692669002378, f_q)) mstore(0x24e0, mulmod(mload(0x1580), 15487660954688013862248478071816391715224351867581977083810729441220383572585, f_q)) mstore(0x2500, addmod(mload(0xc00), 6400581917151261359997927673440883373324012532834057259887474745355424923032, f_q)) mstore(0x2520, mulmod(mload(0x1580), 12896114329936223826328336851156210236116218608332234285980274197209453560736, f_q)) mstore(0x2540, addmod(mload(0xc00), 8992128541903051395918068894101064852432145792083800057717929989366354934881, f_q)) { let prod := mload(0x15c0) prod := mulmod(mload(0x1600), prod, f_q) mstore(0x2560, prod) prod := mulmod(mload(0x1640), prod, f_q) mstore(0x2580, prod) prod := mulmod(mload(0x1680), prod, f_q) mstore(0x25a0, prod) prod := mulmod(mload(0x16c0), prod, f_q) mstore(0x25c0, prod) prod := mulmod(mload(0x1700), prod, f_q) mstore(0x25e0, prod) prod := mulmod(mload(0x1740), prod, f_q) mstore(0x2600, prod) prod := mulmod(mload(0x1780), prod, f_q) mstore(0x2620, prod) prod := mulmod(mload(0x17c0), prod, f_q) mstore(0x2640, prod) prod := mulmod(mload(0x1800), prod, f_q) mstore(0x2660, prod) prod := mulmod(mload(0x1840), prod, f_q) mstore(0x2680, prod) prod := mulmod(mload(0x1880), prod, f_q) mstore(0x26a0, prod) prod := mulmod(mload(0x18c0), prod, f_q) mstore(0x26c0, prod) prod := mulmod(mload(0x1900), prod, f_q) mstore(0x26e0, prod) prod := mulmod(mload(0x1940), prod, f_q) mstore(0x2700, prod) prod := mulmod(mload(0x1980), prod, f_q) mstore(0x2720, prod) prod := mulmod(mload(0x19c0), prod, f_q) mstore(0x2740, prod) prod := mulmod(mload(0x1a00), prod, f_q) mstore(0x2760, prod) prod := mulmod(mload(0x1a40), prod, f_q) mstore(0x2780, prod) prod := mulmod(mload(0x1a80), prod, f_q) mstore(0x27a0, prod) prod := mulmod(mload(0x1ac0), prod, f_q) mstore(0x27c0, prod) prod := mulmod(mload(0x1b00), prod, f_q) mstore(0x27e0, prod) prod := mulmod(mload(0x1b40), prod, f_q) mstore(0x2800, prod) prod := mulmod(mload(0x1b80), prod, f_q) mstore(0x2820, prod) prod := mulmod(mload(0x1bc0), prod, f_q) mstore(0x2840, prod) prod := mulmod(mload(0x1c00), prod, f_q) mstore(0x2860, prod) prod := mulmod(mload(0x1c40), prod, f_q) mstore(0x2880, prod) prod := mulmod(mload(0x1c80), prod, f_q) mstore(0x28a0, prod) prod := mulmod(mload(0x1cc0), prod, f_q) mstore(0x28c0, prod) prod := mulmod(mload(0x1d00), prod, f_q) mstore(0x28e0, prod) prod := mulmod(mload(0x1d40), prod, f_q) mstore(0x2900, prod) prod := mulmod(mload(0x1d80), prod, f_q) mstore(0x2920, prod) prod := mulmod(mload(0x1dc0), prod, f_q) mstore(0x2940, prod) prod := mulmod(mload(0x1e00), prod, f_q) mstore(0x2960, prod) prod := mulmod(mload(0x1e40), prod, f_q) mstore(0x2980, prod) prod := mulmod(mload(0x1e80), prod, f_q) mstore(0x29a0, prod) prod := mulmod(mload(0x1ec0), prod, f_q) mstore(0x29c0, prod) prod := mulmod(mload(0x1f00), prod, f_q) mstore(0x29e0, prod) prod := mulmod(mload(0x1f40), prod, f_q) mstore(0x2a00, prod) prod := mulmod(mload(0x1f80), prod, f_q) mstore(0x2a20, prod) prod := mulmod(mload(0x1fc0), prod, f_q) mstore(0x2a40, prod) prod := mulmod(mload(0x2000), prod, f_q) mstore(0x2a60, prod) prod := mulmod(mload(0x2040), prod, f_q) mstore(0x2a80, prod) prod := mulmod(mload(0x2080), prod, f_q) mstore(0x2aa0, prod) prod := mulmod(mload(0x20c0), prod, f_q) mstore(0x2ac0, prod) prod := mulmod(mload(0x2100), prod, f_q) mstore(0x2ae0, prod) prod := mulmod(mload(0x2140), prod, f_q) mstore(0x2b00, prod) prod := mulmod(mload(0x2180), prod, f_q) mstore(0x2b20, prod) prod := mulmod(mload(0x21c0), prod, f_q) mstore(0x2b40, prod) prod := mulmod(mload(0x2200), prod, f_q) mstore(0x2b60, prod) prod := mulmod(mload(0x2240), prod, f_q) mstore(0x2b80, prod) prod := mulmod(mload(0x2280), prod, f_q) mstore(0x2ba0, prod) prod := mulmod(mload(0x22c0), prod, f_q) mstore(0x2bc0, prod) prod := mulmod(mload(0x2300), prod, f_q) mstore(0x2be0, prod) prod := mulmod(mload(0x2340), prod, f_q) mstore(0x2c00, prod) prod := mulmod(mload(0x2380), prod, f_q) mstore(0x2c20, prod) prod := mulmod(mload(0x23c0), prod, f_q) mstore(0x2c40, prod) prod := mulmod(mload(0x2400), prod, f_q) mstore(0x2c60, prod) prod := mulmod(mload(0x2440), prod, f_q) mstore(0x2c80, prod) prod := mulmod(mload(0x2480), prod, f_q) mstore(0x2ca0, prod) prod := mulmod(mload(0x24c0), prod, f_q) mstore(0x2cc0, prod) prod := mulmod(mload(0x2500), prod, f_q) mstore(0x2ce0, prod) prod := mulmod(mload(0x2540), prod, f_q) mstore(0x2d00, prod) prod := mulmod(mload(0x1560), prod, f_q) mstore(0x2d20, prod) } mstore(0x2d60, 32) mstore(0x2d80, 32) mstore(0x2da0, 32) mstore(0x2dc0, mload(0x2d20)) mstore(0x2de0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x2e00, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x2d60, 0xc0, 0x2d40, 0x20), 1), success) { let inv := mload(0x2d40) let v v := mload(0x1560) mstore(5472, mulmod(mload(0x2d00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2540) mstore(9536, mulmod(mload(0x2ce0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2500) mstore(9472, mulmod(mload(0x2cc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x24c0) mstore(9408, mulmod(mload(0x2ca0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2480) mstore(9344, mulmod(mload(0x2c80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2440) mstore(9280, mulmod(mload(0x2c60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2400) mstore(9216, mulmod(mload(0x2c40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x23c0) mstore(9152, mulmod(mload(0x2c20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2380) mstore(9088, mulmod(mload(0x2c00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2340) mstore(9024, mulmod(mload(0x2be0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2300) mstore(8960, mulmod(mload(0x2bc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x22c0) mstore(8896, mulmod(mload(0x2ba0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2280) mstore(8832, mulmod(mload(0x2b80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2240) mstore(8768, mulmod(mload(0x2b60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2200) mstore(8704, mulmod(mload(0x2b40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x21c0) mstore(8640, mulmod(mload(0x2b20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2180) mstore(8576, mulmod(mload(0x2b00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2140) mstore(8512, mulmod(mload(0x2ae0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2100) mstore(8448, mulmod(mload(0x2ac0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x20c0) mstore(8384, mulmod(mload(0x2aa0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2080) mstore(8320, mulmod(mload(0x2a80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2040) mstore(8256, mulmod(mload(0x2a60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x2000) mstore(8192, mulmod(mload(0x2a40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1fc0) mstore(8128, mulmod(mload(0x2a20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1f80) mstore(8064, mulmod(mload(0x2a00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1f40) mstore(8000, mulmod(mload(0x29e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1f00) mstore(7936, mulmod(mload(0x29c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1ec0) mstore(7872, mulmod(mload(0x29a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1e80) mstore(7808, mulmod(mload(0x2980), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1e40) mstore(7744, mulmod(mload(0x2960), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1e00) mstore(7680, mulmod(mload(0x2940), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1dc0) mstore(7616, mulmod(mload(0x2920), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1d80) mstore(7552, mulmod(mload(0x2900), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1d40) mstore(7488, mulmod(mload(0x28e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1d00) mstore(7424, mulmod(mload(0x28c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1cc0) mstore(7360, mulmod(mload(0x28a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1c80) mstore(7296, mulmod(mload(0x2880), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1c40) mstore(7232, mulmod(mload(0x2860), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1c00) mstore(7168, mulmod(mload(0x2840), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1bc0) mstore(7104, mulmod(mload(0x2820), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1b80) mstore(7040, mulmod(mload(0x2800), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1b40) mstore(6976, mulmod(mload(0x27e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1b00) mstore(6912, mulmod(mload(0x27c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1ac0) mstore(6848, mulmod(mload(0x27a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1a80) mstore(6784, mulmod(mload(0x2780), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1a40) mstore(6720, mulmod(mload(0x2760), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1a00) mstore(6656, mulmod(mload(0x2740), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x19c0) mstore(6592, mulmod(mload(0x2720), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1980) mstore(6528, mulmod(mload(0x2700), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1940) mstore(6464, mulmod(mload(0x26e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1900) mstore(6400, mulmod(mload(0x26c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x18c0) mstore(6336, mulmod(mload(0x26a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1880) mstore(6272, mulmod(mload(0x2680), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1840) mstore(6208, mulmod(mload(0x2660), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1800) mstore(6144, mulmod(mload(0x2640), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x17c0) mstore(6080, mulmod(mload(0x2620), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1780) mstore(6016, mulmod(mload(0x2600), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1740) mstore(5952, mulmod(mload(0x25e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1700) mstore(5888, mulmod(mload(0x25c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x16c0) mstore(5824, mulmod(mload(0x25a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1680) mstore(5760, mulmod(mload(0x2580), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1640) mstore(5696, mulmod(mload(0x2560), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x1600) mstore(5632, mulmod(mload(0x15c0), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x15c0, inv) } mstore(0x2e20, mulmod(mload(0x15a0), mload(0x15c0), f_q)) mstore(0x2e40, mulmod(mload(0x15e0), mload(0x1600), f_q)) mstore(0x2e60, mulmod(mload(0x1620), mload(0x1640), f_q)) mstore(0x2e80, mulmod(mload(0x1660), mload(0x1680), f_q)) mstore(0x2ea0, mulmod(mload(0x16a0), mload(0x16c0), f_q)) mstore(0x2ec0, mulmod(mload(0x16e0), mload(0x1700), f_q)) mstore(0x2ee0, mulmod(mload(0x1720), mload(0x1740), f_q)) mstore(0x2f00, mulmod(mload(0x1760), mload(0x1780), f_q)) mstore(0x2f20, mulmod(mload(0x17a0), mload(0x17c0), f_q)) mstore(0x2f40, mulmod(mload(0x17e0), mload(0x1800), f_q)) mstore(0x2f60, mulmod(mload(0x1820), mload(0x1840), f_q)) mstore(0x2f80, mulmod(mload(0x1860), mload(0x1880), f_q)) mstore(0x2fa0, mulmod(mload(0x18a0), mload(0x18c0), f_q)) mstore(0x2fc0, mulmod(mload(0x18e0), mload(0x1900), f_q)) mstore(0x2fe0, mulmod(mload(0x1920), mload(0x1940), f_q)) mstore(0x3000, mulmod(mload(0x1960), mload(0x1980), f_q)) mstore(0x3020, mulmod(mload(0x19a0), mload(0x19c0), f_q)) mstore(0x3040, mulmod(mload(0x19e0), mload(0x1a00), f_q)) mstore(0x3060, mulmod(mload(0x1a20), mload(0x1a40), f_q)) mstore(0x3080, mulmod(mload(0x1a60), mload(0x1a80), f_q)) mstore(0x30a0, mulmod(mload(0x1aa0), mload(0x1ac0), f_q)) mstore(0x30c0, mulmod(mload(0x1ae0), mload(0x1b00), f_q)) mstore(0x30e0, mulmod(mload(0x1b20), mload(0x1b40), f_q)) mstore(0x3100, mulmod(mload(0x1b60), mload(0x1b80), f_q)) mstore(0x3120, mulmod(mload(0x1ba0), mload(0x1bc0), f_q)) mstore(0x3140, mulmod(mload(0x1be0), mload(0x1c00), f_q)) mstore(0x3160, mulmod(mload(0x1c20), mload(0x1c40), f_q)) mstore(0x3180, mulmod(mload(0x1c60), mload(0x1c80), f_q)) mstore(0x31a0, mulmod(mload(0x1ca0), mload(0x1cc0), f_q)) mstore(0x31c0, mulmod(mload(0x1ce0), mload(0x1d00), f_q)) mstore(0x31e0, mulmod(mload(0x1d20), mload(0x1d40), f_q)) mstore(0x3200, mulmod(mload(0x1d60), mload(0x1d80), f_q)) mstore(0x3220, mulmod(mload(0x1da0), mload(0x1dc0), f_q)) mstore(0x3240, mulmod(mload(0x1de0), mload(0x1e00), f_q)) mstore(0x3260, mulmod(mload(0x1e20), mload(0x1e40), f_q)) mstore(0x3280, mulmod(mload(0x1e60), mload(0x1e80), f_q)) mstore(0x32a0, mulmod(mload(0x1ea0), mload(0x1ec0), f_q)) mstore(0x32c0, mulmod(mload(0x1ee0), mload(0x1f00), f_q)) mstore(0x32e0, mulmod(mload(0x1f20), mload(0x1f40), f_q)) mstore(0x3300, mulmod(mload(0x1f60), mload(0x1f80), f_q)) mstore(0x3320, mulmod(mload(0x1fa0), mload(0x1fc0), f_q)) mstore(0x3340, mulmod(mload(0x1fe0), mload(0x2000), f_q)) mstore(0x3360, mulmod(mload(0x2020), mload(0x2040), f_q)) mstore(0x3380, mulmod(mload(0x2060), mload(0x2080), f_q)) mstore(0x33a0, mulmod(mload(0x20a0), mload(0x20c0), f_q)) mstore(0x33c0, mulmod(mload(0x20e0), mload(0x2100), f_q)) mstore(0x33e0, mulmod(mload(0x2120), mload(0x2140), f_q)) mstore(0x3400, mulmod(mload(0x2160), mload(0x2180), f_q)) mstore(0x3420, mulmod(mload(0x21a0), mload(0x21c0), f_q)) mstore(0x3440, mulmod(mload(0x21e0), mload(0x2200), f_q)) mstore(0x3460, mulmod(mload(0x2220), mload(0x2240), f_q)) mstore(0x3480, mulmod(mload(0x2260), mload(0x2280), f_q)) mstore(0x34a0, mulmod(mload(0x22a0), mload(0x22c0), f_q)) mstore(0x34c0, mulmod(mload(0x22e0), mload(0x2300), f_q)) mstore(0x34e0, mulmod(mload(0x2320), mload(0x2340), f_q)) mstore(0x3500, mulmod(mload(0x2360), mload(0x2380), f_q)) mstore(0x3520, mulmod(mload(0x23a0), mload(0x23c0), f_q)) mstore(0x3540, mulmod(mload(0x23e0), mload(0x2400), f_q)) mstore(0x3560, mulmod(mload(0x2420), mload(0x2440), f_q)) mstore(0x3580, mulmod(mload(0x2460), mload(0x2480), f_q)) mstore(0x35a0, mulmod(mload(0x24a0), mload(0x24c0), f_q)) mstore(0x35c0, mulmod(mload(0x24e0), mload(0x2500), f_q)) mstore(0x35e0, mulmod(mload(0x2520), mload(0x2540), f_q)) { let result := mulmod(mload(0x2f00), mload(0x20), f_q) result := addmod(mulmod(mload(0x2f20), mload(0x40), f_q), result, f_q) result := addmod(mulmod(mload(0x2f40), mload(0x60), f_q), result, f_q) result := addmod(mulmod(mload(0x2f60), mload(0x80), f_q), result, f_q) result := addmod(mulmod(mload(0x2f80), mload(0xa0), f_q), result, f_q) result := addmod(mulmod(mload(0x2fa0), mload(0xc0), f_q), result, f_q) result := addmod(mulmod(mload(0x2fc0), mload(0xe0), f_q), result, f_q) result := addmod(mulmod(mload(0x2fe0), mload(0x100), f_q), result, f_q) result := addmod(mulmod(mload(0x3000), mload(0x120), f_q), result, f_q) result := addmod(mulmod(mload(0x3020), mload(0x140), f_q), result, f_q) result := addmod(mulmod(mload(0x3040), mload(0x160), f_q), result, f_q) result := addmod(mulmod(mload(0x3060), mload(0x180), f_q), result, f_q) result := addmod(mulmod(mload(0x3080), mload(0x1a0), f_q), result, f_q) result := addmod(mulmod(mload(0x30a0), mload(0x1c0), f_q), result, f_q) result := addmod(mulmod(mload(0x30c0), mload(0x1e0), f_q), result, f_q) result := addmod(mulmod(mload(0x30e0), mload(0x200), f_q), result, f_q) result := addmod(mulmod(mload(0x3100), mload(0x220), f_q), result, f_q) result := addmod(mulmod(mload(0x3120), mload(0x240), f_q), result, f_q) result := addmod(mulmod(mload(0x3140), mload(0x260), f_q), result, f_q) result := addmod(mulmod(mload(0x3160), mload(0x280), f_q), result, f_q) result := addmod(mulmod(mload(0x3180), mload(0x2a0), f_q), result, f_q) result := addmod(mulmod(mload(0x31a0), mload(0x2c0), f_q), result, f_q) result := addmod(mulmod(mload(0x31c0), mload(0x2e0), f_q), result, f_q) result := addmod(mulmod(mload(0x31e0), mload(0x300), f_q), result, f_q) result := addmod(mulmod(mload(0x3200), mload(0x320), f_q), result, f_q) result := addmod(mulmod(mload(0x3220), mload(0x340), f_q), result, f_q) result := addmod(mulmod(mload(0x3240), mload(0x360), f_q), result, f_q) result := addmod(mulmod(mload(0x3260), mload(0x380), f_q), result, f_q) result := addmod(mulmod(mload(0x3280), mload(0x3a0), f_q), result, f_q) result := addmod(mulmod(mload(0x32a0), mload(0x3c0), f_q), result, f_q) result := addmod(mulmod(mload(0x32c0), mload(0x3e0), f_q), result, f_q) result := addmod(mulmod(mload(0x32e0), mload(0x400), f_q), result, f_q) result := addmod(mulmod(mload(0x3300), mload(0x420), f_q), result, f_q) result := addmod(mulmod(mload(0x3320), mload(0x440), f_q), result, f_q) result := addmod(mulmod(mload(0x3340), mload(0x460), f_q), result, f_q) result := addmod(mulmod(mload(0x3360), mload(0x480), f_q), result, f_q) result := addmod(mulmod(mload(0x3380), mload(0x4a0), f_q), result, f_q) result := addmod(mulmod(mload(0x33a0), mload(0x4c0), f_q), result, f_q) result := addmod(mulmod(mload(0x33c0), mload(0x4e0), f_q), result, f_q) result := addmod(mulmod(mload(0x33e0), mload(0x500), f_q), result, f_q) result := addmod(mulmod(mload(0x3400), mload(0x520), f_q), result, f_q) result := addmod(mulmod(mload(0x3420), mload(0x540), f_q), result, f_q) result := addmod(mulmod(mload(0x3440), mload(0x560), f_q), result, f_q) result := addmod(mulmod(mload(0x3460), mload(0x580), f_q), result, f_q) result := addmod(mulmod(mload(0x3480), mload(0x5a0), f_q), result, f_q) result := addmod(mulmod(mload(0x34a0), mload(0x5c0), f_q), result, f_q) result := addmod(mulmod(mload(0x34c0), mload(0x5e0), f_q), result, f_q) result := addmod(mulmod(mload(0x34e0), mload(0x600), f_q), result, f_q) result := addmod(mulmod(mload(0x3500), mload(0x620), f_q), result, f_q) result := addmod(mulmod(mload(0x3520), mload(0x640), f_q), result, f_q) result := addmod(mulmod(mload(0x3540), mload(0x660), f_q), result, f_q) result := addmod(mulmod(mload(0x3560), mload(0x680), f_q), result, f_q) result := addmod(mulmod(mload(0x3580), mload(0x6a0), f_q), result, f_q) result := addmod(mulmod(mload(0x35a0), mload(0x6c0), f_q), result, f_q) result := addmod(mulmod(mload(0x35c0), mload(0x6e0), f_q), result, f_q) result := addmod(mulmod(mload(0x35e0), mload(0x700), f_q), result, f_q) mstore(13824, result) } mstore(0x3620, mulmod(mload(0xc80), mload(0xc60), f_q)) mstore(0x3640, addmod(mload(0xc40), mload(0x3620), f_q)) mstore(0x3660, addmod(mload(0x3640), sub(f_q, mload(0xca0)), f_q)) mstore(0x3680, mulmod(mload(0x3660), mload(0xda0), f_q)) mstore(0x36a0, mulmod(mload(0xae0), mload(0x3680), f_q)) mstore(0x36c0, mulmod(mload(0xd00), mload(0xce0), f_q)) mstore(0x36e0, addmod(mload(0xcc0), mload(0x36c0), f_q)) mstore(0x3700, addmod(mload(0x36e0), sub(f_q, mload(0xd20)), f_q)) mstore(0x3720, mulmod(mload(0x3700), mload(0xdc0), f_q)) mstore(0x3740, addmod(mload(0x36a0), mload(0x3720), f_q)) mstore(0x3760, mulmod(mload(0xae0), mload(0x3740), f_q)) mstore(0x3780, addmod(1, sub(f_q, mload(0xea0)), f_q)) mstore(0x37a0, mulmod(mload(0x3780), mload(0x2f00), f_q)) mstore(0x37c0, addmod(mload(0x3760), mload(0x37a0), f_q)) mstore(0x37e0, mulmod(mload(0xae0), mload(0x37c0), f_q)) mstore(0x3800, mulmod(mload(0xf60), mload(0xf60), f_q)) mstore(0x3820, addmod(mload(0x3800), sub(f_q, mload(0xf60)), f_q)) mstore(0x3840, mulmod(mload(0x3820), mload(0x2e20), f_q)) mstore(0x3860, addmod(mload(0x37e0), mload(0x3840), f_q)) mstore(0x3880, mulmod(mload(0xae0), mload(0x3860), f_q)) mstore(0x38a0, addmod(mload(0xf00), sub(f_q, mload(0xee0)), f_q)) mstore(0x38c0, mulmod(mload(0x38a0), mload(0x2f00), f_q)) mstore(0x38e0, addmod(mload(0x3880), mload(0x38c0), f_q)) mstore(0x3900, mulmod(mload(0xae0), mload(0x38e0), f_q)) mstore(0x3920, addmod(mload(0xf60), sub(f_q, mload(0xf40)), f_q)) mstore(0x3940, mulmod(mload(0x3920), mload(0x2f00), f_q)) mstore(0x3960, addmod(mload(0x3900), mload(0x3940), f_q)) mstore(0x3980, mulmod(mload(0xae0), mload(0x3960), f_q)) mstore(0x39a0, addmod(1, sub(f_q, mload(0x2e20)), f_q)) mstore(0x39c0, addmod(mload(0x2e40), mload(0x2e60), f_q)) mstore(0x39e0, addmod(mload(0x39c0), mload(0x2e80), f_q)) mstore(0x3a00, addmod(mload(0x39e0), mload(0x2ea0), f_q)) mstore(0x3a20, addmod(mload(0x3a00), mload(0x2ec0), f_q)) mstore(0x3a40, addmod(mload(0x3a20), mload(0x2ee0), f_q)) mstore(0x3a60, addmod(mload(0x39a0), sub(f_q, mload(0x3a40)), f_q)) mstore(0x3a80, mulmod(mload(0xe00), mload(0x8e0), f_q)) mstore(0x3aa0, addmod(mload(0xd60), mload(0x3a80), f_q)) mstore(0x3ac0, addmod(mload(0x3aa0), mload(0x940), f_q)) mstore(0x3ae0, mulmod(mload(0xe20), mload(0x8e0), f_q)) mstore(0x3b00, addmod(mload(0xc40), mload(0x3ae0), f_q)) mstore(0x3b20, addmod(mload(0x3b00), mload(0x940), f_q)) mstore(0x3b40, mulmod(mload(0x3b20), mload(0x3ac0), f_q)) mstore(0x3b60, mulmod(mload(0x3b40), mload(0xec0), f_q)) mstore(0x3b80, mulmod(1, mload(0x8e0), f_q)) mstore(0x3ba0, mulmod(mload(0xc00), mload(0x3b80), f_q)) mstore(0x3bc0, addmod(mload(0xd60), mload(0x3ba0), f_q)) mstore(0x3be0, addmod(mload(0x3bc0), mload(0x940), f_q)) mstore(0x3c00, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x8e0), f_q)) mstore(0x3c20, mulmod(mload(0xc00), mload(0x3c00), f_q)) mstore(0x3c40, addmod(mload(0xc40), mload(0x3c20), f_q)) mstore(0x3c60, addmod(mload(0x3c40), mload(0x940), f_q)) mstore(0x3c80, mulmod(mload(0x3c60), mload(0x3be0), f_q)) mstore(0x3ca0, mulmod(mload(0x3c80), mload(0xea0), f_q)) mstore(0x3cc0, addmod(mload(0x3b60), sub(f_q, mload(0x3ca0)), f_q)) mstore(0x3ce0, mulmod(mload(0x3cc0), mload(0x3a60), f_q)) mstore(0x3d00, addmod(mload(0x3980), mload(0x3ce0), f_q)) mstore(0x3d20, mulmod(mload(0xae0), mload(0x3d00), f_q)) mstore(0x3d40, mulmod(mload(0xe40), mload(0x8e0), f_q)) mstore(0x3d60, addmod(mload(0xcc0), mload(0x3d40), f_q)) mstore(0x3d80, addmod(mload(0x3d60), mload(0x940), f_q)) mstore(0x3da0, mulmod(mload(0xe60), mload(0x8e0), f_q)) mstore(0x3dc0, addmod(mload(0xd40), mload(0x3da0), f_q)) mstore(0x3de0, addmod(mload(0x3dc0), mload(0x940), f_q)) mstore(0x3e00, mulmod(mload(0x3de0), mload(0x3d80), f_q)) mstore(0x3e20, mulmod(mload(0x3e00), mload(0xf20), f_q)) mstore(0x3e40, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x8e0), f_q)) mstore(0x3e60, mulmod(mload(0xc00), mload(0x3e40), f_q)) mstore(0x3e80, addmod(mload(0xcc0), mload(0x3e60), f_q)) mstore(0x3ea0, addmod(mload(0x3e80), mload(0x940), f_q)) mstore(0x3ec0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x8e0), f_q)) mstore(0x3ee0, mulmod(mload(0xc00), mload(0x3ec0), f_q)) mstore(0x3f00, addmod(mload(0xd40), mload(0x3ee0), f_q)) mstore(0x3f20, addmod(mload(0x3f00), mload(0x940), f_q)) mstore(0x3f40, mulmod(mload(0x3f20), mload(0x3ea0), f_q)) mstore(0x3f60, mulmod(mload(0x3f40), mload(0xf00), f_q)) mstore(0x3f80, addmod(mload(0x3e20), sub(f_q, mload(0x3f60)), f_q)) mstore(0x3fa0, mulmod(mload(0x3f80), mload(0x3a60), f_q)) mstore(0x3fc0, addmod(mload(0x3d20), mload(0x3fa0), f_q)) mstore(0x3fe0, mulmod(mload(0xae0), mload(0x3fc0), f_q)) mstore(0x4000, mulmod(mload(0xe80), mload(0x8e0), f_q)) mstore(0x4020, addmod(mload(0x3600), mload(0x4000), f_q)) mstore(0x4040, addmod(mload(0x4020), mload(0x940), f_q)) mstore(0x4060, mulmod(mload(0x4040), mload(0xf80), f_q)) mstore(0x4080, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x8e0), f_q)) mstore(0x40a0, mulmod(mload(0xc00), mload(0x4080), f_q)) mstore(0x40c0, addmod(mload(0x3600), mload(0x40a0), f_q)) mstore(0x40e0, addmod(mload(0x40c0), mload(0x940), f_q)) mstore(0x4100, mulmod(mload(0x40e0), mload(0xf60), f_q)) mstore(0x4120, addmod(mload(0x4060), sub(f_q, mload(0x4100)), f_q)) mstore(0x4140, mulmod(mload(0x4120), mload(0x3a60), f_q)) mstore(0x4160, addmod(mload(0x3fe0), mload(0x4140), f_q)) mstore(0x4180, mulmod(mload(0xae0), mload(0x4160), f_q)) mstore(0x41a0, addmod(1, sub(f_q, mload(0xfa0)), f_q)) mstore(0x41c0, mulmod(mload(0x41a0), mload(0x2f00), f_q)) mstore(0x41e0, addmod(mload(0x4180), mload(0x41c0), f_q)) mstore(0x4200, mulmod(mload(0xae0), mload(0x41e0), f_q)) mstore(0x4220, mulmod(mload(0xfa0), mload(0xfa0), f_q)) mstore(0x4240, addmod(mload(0x4220), sub(f_q, mload(0xfa0)), f_q)) mstore(0x4260, mulmod(mload(0x4240), mload(0x2e20), f_q)) mstore(0x4280, addmod(mload(0x4200), mload(0x4260), f_q)) mstore(0x42a0, mulmod(mload(0xae0), mload(0x4280), f_q)) mstore(0x42c0, addmod(mload(0xfe0), mload(0x8e0), f_q)) mstore(0x42e0, mulmod(mload(0x42c0), mload(0xfc0), f_q)) mstore(0x4300, addmod(mload(0x1020), mload(0x940), f_q)) mstore(0x4320, mulmod(mload(0x4300), mload(0x42e0), f_q)) mstore(0x4340, addmod(mload(0xd40), mload(0x8e0), f_q)) mstore(0x4360, mulmod(mload(0x4340), mload(0xfa0), f_q)) mstore(0x4380, addmod(mload(0xd80), mload(0x940), f_q)) mstore(0x43a0, mulmod(mload(0x4380), mload(0x4360), f_q)) mstore(0x43c0, addmod(mload(0x4320), sub(f_q, mload(0x43a0)), f_q)) mstore(0x43e0, mulmod(mload(0x43c0), mload(0x3a60), f_q)) mstore(0x4400, addmod(mload(0x42a0), mload(0x43e0), f_q)) mstore(0x4420, mulmod(mload(0xae0), mload(0x4400), f_q)) mstore(0x4440, addmod(mload(0xfe0), sub(f_q, mload(0x1020)), f_q)) mstore(0x4460, mulmod(mload(0x4440), mload(0x2f00), f_q)) mstore(0x4480, addmod(mload(0x4420), mload(0x4460), f_q)) mstore(0x44a0, mulmod(mload(0xae0), mload(0x4480), f_q)) mstore(0x44c0, mulmod(mload(0x4440), mload(0x3a60), f_q)) mstore(0x44e0, addmod(mload(0xfe0), sub(f_q, mload(0x1000)), f_q)) mstore(0x4500, mulmod(mload(0x44e0), mload(0x44c0), f_q)) mstore(0x4520, addmod(mload(0x44a0), mload(0x4500), f_q)) mstore(0x4540, mulmod(mload(0x1540), mload(0x1540), f_q)) mstore(0x4560, mulmod(mload(0x4540), mload(0x1540), f_q)) mstore(0x4580, mulmod(1, mload(0x1540), f_q)) mstore(0x45a0, mulmod(1, mload(0x4540), f_q)) mstore(0x45c0, mulmod(mload(0x4520), mload(0x1560), f_q)) mstore(0x45e0, mulmod(mload(0x1260), mload(0xc00), f_q)) mstore(0x4600, mulmod(mload(0x45e0), mload(0xc00), f_q)) mstore(0x4620, mulmod(mload(0xc00), 1, f_q)) mstore(0x4640, addmod(mload(0x1160), sub(f_q, mload(0x4620)), f_q)) mstore(0x4660, mulmod(mload(0xc00), 8374374965308410102411073611984011876711565317741801500439755773472076597347, f_q)) mstore(0x4680, addmod(mload(0x1160), sub(f_q, mload(0x4660)), f_q)) mstore(0x46a0, mulmod(mload(0xc00), 11451405578697956743456240853980216273390554734748796433026540431386972584651, f_q)) mstore(0x46c0, addmod(mload(0x1160), sub(f_q, mload(0x46a0)), f_q)) mstore(0x46e0, mulmod(mload(0xc00), 12929131318670223636853686797196826072950305380535537217467769528748593133487, f_q)) mstore(0x4700, addmod(mload(0x1160), sub(f_q, mload(0x46e0)), f_q)) mstore(0x4720, mulmod(mload(0xc00), 17329448237240114492580865744088056414251735686965494637158808787419781175510, f_q)) mstore(0x4740, addmod(mload(0x1160), sub(f_q, mload(0x4720)), f_q)) mstore(0x4760, mulmod(mload(0xc00), 21490807004895109926141140246143262403290679459142140821740925192625185504522, f_q)) mstore(0x4780, addmod(mload(0x1160), sub(f_q, mload(0x4760)), f_q)) { let result := mulmod(mload(0x1160), mulmod(mload(0x45e0), 6616149745577394522356295102346368305374051634342887004165528916468992151333, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0x45e0), 15272093126261880699890110642910906783174312766073147339532675270106816344284, f_q), f_q), result, f_q) mstore(18336, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0x45e0), 530501691302793820034524283154921640443166880847115433758691660016816186416, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0x45e0), 6735468303947967792722299167169712601265763928443086612877978228369959138708, f_q), f_q), result, f_q) mstore(18368, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0x45e0), 6735468303947967792722299167169712601265763928443086612877978228369959138708, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0x45e0), 21402573809525492531235934453699988060841876665026314791644170130242704768864, f_q), f_q), result, f_q) mstore(18400, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0x45e0), 21558793644302942916864965630979640748886316167261336210841195936026980690666, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0x45e0), 21647881284526053590463969745634050372655996593461286860577821962674562513632, f_q), f_q), result, f_q) mstore(18432, result) } mstore(0x4820, mulmod(1, mload(0x4640), f_q)) mstore(0x4840, mulmod(mload(0x4820), mload(0x46c0), f_q)) mstore(0x4860, mulmod(mload(0x4840), mload(0x4680), f_q)) mstore(0x4880, mulmod(mload(0x4860), mload(0x4780), f_q)) { let result := mulmod(mload(0x1160), 1, f_q) result := addmod(mulmod(mload(0xc00), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) mstore(18592, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0x1260), 12163000419891990293569405173061573680049742717229898748261573253229795914908, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0x1260), 9725242451947284928677000572195701408498621683186135595436630933346012580709, f_q), f_q), result, f_q) mstore(18624, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0x1260), 17085049131699056766421998221476555826977441931846378573521510030619952504372, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0x1260), 6337000465755888211746305680664882431492568521396101891532798530745714905908, f_q), f_q), result, f_q) mstore(18656, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0x1260), 10262058425268217215884133263876699099081481632544093361167483234163265012860, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0x1260), 14297308348282218433797077139696728813764374573836158179437870281950912384055, f_q), f_q), result, f_q) mstore(18688, result) } mstore(0x4920, mulmod(mload(0x4840), mload(0x4700), f_q)) { let result := mulmod(mload(0x1160), mulmod(mload(0xc00), 10436837293141318478790164891277058815157809665667237910671663755188835910967, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0xc00), 11451405578697956743456240853980216273390554734748796433026540431386972584650, f_q), f_q), result, f_q) mstore(18752, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0xc00), 11451405578697956743456240853980216273390554734748796433026540431386972584650, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0xc00), 3077030613389546641045167241996204396678989417006994932586784657914895987304, f_q), f_q), result, f_q) mstore(18784, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0xc00), 4558794634599160729665540001169218674296628713450539706539395399156027320108, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0xc00), 17329448237240114492580865744088056414251735686965494637158808787419781175509, f_q), f_q), result, f_q) mstore(18816, result) } { let result := mulmod(mload(0x1160), mulmod(mload(0xc00), 17329448237240114492580865744088056414251735686965494637158808787419781175509, f_q), f_q) result := addmod(mulmod(mload(0xc00), mulmod(mload(0xc00), 7587894345819650164285585254437911847348718480492193252124775402539837301163, f_q), f_q), result, f_q) mstore(18848, result) } mstore(0x49c0, mulmod(mload(0x4820), mload(0x4740), f_q)) { let prod := mload(0x47a0) prod := mulmod(mload(0x47c0), prod, f_q) mstore(0x49e0, prod) prod := mulmod(mload(0x47e0), prod, f_q) mstore(0x4a00, prod) prod := mulmod(mload(0x4800), prod, f_q) mstore(0x4a20, prod) prod := mulmod(mload(0x48a0), prod, f_q) mstore(0x4a40, prod) prod := mulmod(mload(0x4820), prod, f_q) mstore(0x4a60, prod) prod := mulmod(mload(0x48c0), prod, f_q) mstore(0x4a80, prod) prod := mulmod(mload(0x48e0), prod, f_q) mstore(0x4aa0, prod) prod := mulmod(mload(0x4900), prod, f_q) mstore(0x4ac0, prod) prod := mulmod(mload(0x4920), prod, f_q) mstore(0x4ae0, prod) prod := mulmod(mload(0x4940), prod, f_q) mstore(0x4b00, prod) prod := mulmod(mload(0x4960), prod, f_q) mstore(0x4b20, prod) prod := mulmod(mload(0x4840), prod, f_q) mstore(0x4b40, prod) prod := mulmod(mload(0x4980), prod, f_q) mstore(0x4b60, prod) prod := mulmod(mload(0x49a0), prod, f_q) mstore(0x4b80, prod) prod := mulmod(mload(0x49c0), prod, f_q) mstore(0x4ba0, prod) } mstore(0x4be0, 32) mstore(0x4c00, 32) mstore(0x4c20, 32) mstore(0x4c40, mload(0x4ba0)) mstore(0x4c60, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x4c80, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x4be0, 0xc0, 0x4bc0, 0x20), 1), success) { let inv := mload(0x4bc0) let v v := mload(0x49c0) mstore(18880, mulmod(mload(0x4b80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x49a0) mstore(18848, mulmod(mload(0x4b60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4980) mstore(18816, mulmod(mload(0x4b40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4840) mstore(18496, mulmod(mload(0x4b20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4960) mstore(18784, mulmod(mload(0x4b00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4940) mstore(18752, mulmod(mload(0x4ae0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4920) mstore(18720, mulmod(mload(0x4ac0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4900) mstore(18688, mulmod(mload(0x4aa0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x48e0) mstore(18656, mulmod(mload(0x4a80), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x48c0) mstore(18624, mulmod(mload(0x4a60), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4820) mstore(18464, mulmod(mload(0x4a40), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x48a0) mstore(18592, mulmod(mload(0x4a20), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4800) mstore(18432, mulmod(mload(0x4a00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x47e0) mstore(18400, mulmod(mload(0x49e0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x47c0) mstore(18368, mulmod(mload(0x47a0), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x47a0, inv) } { let result := mload(0x47a0) result := addmod(mload(0x47c0), result, f_q) result := addmod(mload(0x47e0), result, f_q) result := addmod(mload(0x4800), result, f_q) mstore(19616, result) } mstore(0x4cc0, mulmod(mload(0x4880), mload(0x4820), f_q)) { let result := mload(0x48a0) mstore(19680, result) } mstore(0x4d00, mulmod(mload(0x4880), mload(0x4920), f_q)) { let result := mload(0x48c0) result := addmod(mload(0x48e0), result, f_q) result := addmod(mload(0x4900), result, f_q) mstore(19744, result) } mstore(0x4d40, mulmod(mload(0x4880), mload(0x4840), f_q)) { let result := mload(0x4940) result := addmod(mload(0x4960), result, f_q) mstore(19808, result) } mstore(0x4d80, mulmod(mload(0x4880), mload(0x49c0), f_q)) { let result := mload(0x4980) result := addmod(mload(0x49a0), result, f_q) mstore(19872, result) } { let prod := mload(0x4ca0) prod := mulmod(mload(0x4ce0), prod, f_q) mstore(0x4dc0, prod) prod := mulmod(mload(0x4d20), prod, f_q) mstore(0x4de0, prod) prod := mulmod(mload(0x4d60), prod, f_q) mstore(0x4e00, prod) prod := mulmod(mload(0x4da0), prod, f_q) mstore(0x4e20, prod) } mstore(0x4e60, 32) mstore(0x4e80, 32) mstore(0x4ea0, 32) mstore(0x4ec0, mload(0x4e20)) mstore(0x4ee0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) mstore(0x4f00, 21888242871839275222246405745257275088548364400416034343698204186575808495617) success := and(eq(staticcall(gas(), 0x5, 0x4e60, 0xc0, 0x4e40, 0x20), 1), success) { let inv := mload(0x4e40) let v v := mload(0x4da0) mstore(19872, mulmod(mload(0x4e00), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4d60) mstore(19808, mulmod(mload(0x4de0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4d20) mstore(19744, mulmod(mload(0x4dc0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0x4ce0) mstore(19680, mulmod(mload(0x4ca0), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(0x4ca0, inv) } mstore(0x4f20, mulmod(mload(0x4cc0), mload(0x4ce0), f_q)) mstore(0x4f40, mulmod(mload(0x4d00), mload(0x4d20), f_q)) mstore(0x4f60, mulmod(mload(0x4d40), mload(0x4d60), f_q)) mstore(0x4f80, mulmod(mload(0x4d80), mload(0x4da0), f_q)) mstore(0x4fa0, mulmod(mload(0x1060), mload(0x1060), f_q)) mstore(0x4fc0, mulmod(mload(0x4fa0), mload(0x1060), f_q)) mstore(0x4fe0, mulmod(mload(0x4fc0), mload(0x1060), f_q)) mstore(0x5000, mulmod(mload(0x4fe0), mload(0x1060), f_q)) mstore(0x5020, mulmod(mload(0x5000), mload(0x1060), f_q)) mstore(0x5040, mulmod(mload(0x5020), mload(0x1060), f_q)) mstore(0x5060, mulmod(mload(0x5040), mload(0x1060), f_q)) mstore(0x5080, mulmod(mload(0x5060), mload(0x1060), f_q)) mstore(0x50a0, mulmod(mload(0x5080), mload(0x1060), f_q)) mstore(0x50c0, mulmod(mload(0x50a0), mload(0x1060), f_q)) mstore(0x50e0, mulmod(mload(0x50c0), mload(0x1060), f_q)) mstore(0x5100, mulmod(mload(0x50e0), mload(0x1060), f_q)) mstore(0x5120, mulmod(mload(0x10c0), mload(0x10c0), f_q)) mstore(0x5140, mulmod(mload(0x5120), mload(0x10c0), f_q)) mstore(0x5160, mulmod(mload(0x5140), mload(0x10c0), f_q)) mstore(0x5180, mulmod(mload(0x5160), mload(0x10c0), f_q)) { let result := mulmod(mload(0xc40), mload(0x47a0), f_q) result := addmod(mulmod(mload(0xc60), mload(0x47c0), f_q), result, f_q) result := addmod(mulmod(mload(0xc80), mload(0x47e0), f_q), result, f_q) result := addmod(mulmod(mload(0xca0), mload(0x4800), f_q), result, f_q) mstore(20896, result) } mstore(0x51c0, mulmod(mload(0x51a0), mload(0x4ca0), f_q)) mstore(0x51e0, mulmod(sub(f_q, mload(0x51c0)), 1, f_q)) { let result := mulmod(mload(0xcc0), mload(0x47a0), f_q) result := addmod(mulmod(mload(0xce0), mload(0x47c0), f_q), result, f_q) result := addmod(mulmod(mload(0xd00), mload(0x47e0), f_q), result, f_q) result := addmod(mulmod(mload(0xd20), mload(0x4800), f_q), result, f_q) mstore(20992, result) } mstore(0x5220, mulmod(mload(0x5200), mload(0x4ca0), f_q)) mstore(0x5240, mulmod(sub(f_q, mload(0x5220)), mload(0x1060), f_q)) mstore(0x5260, mulmod(1, mload(0x1060), f_q)) mstore(0x5280, addmod(mload(0x51e0), mload(0x5240), f_q)) mstore(0x52a0, mulmod(mload(0x5280), 1, f_q)) mstore(0x52c0, mulmod(mload(0x5260), 1, f_q)) mstore(0x52e0, mulmod(1, mload(0x4cc0), f_q)) { let result := mulmod(mload(0xd40), mload(0x48a0), f_q) mstore(21248, result) } mstore(0x5320, mulmod(mload(0x5300), mload(0x4f20), f_q)) mstore(0x5340, mulmod(sub(f_q, mload(0x5320)), 1, f_q)) mstore(0x5360, mulmod(mload(0x52e0), 1, f_q)) { let result := mulmod(mload(0x1020), mload(0x48a0), f_q) mstore(21376, result) } mstore(0x53a0, mulmod(mload(0x5380), mload(0x4f20), f_q)) mstore(0x53c0, mulmod(sub(f_q, mload(0x53a0)), mload(0x1060), f_q)) mstore(0x53e0, mulmod(mload(0x52e0), mload(0x1060), f_q)) mstore(0x5400, addmod(mload(0x5340), mload(0x53c0), f_q)) { let result := mulmod(mload(0xd60), mload(0x48a0), f_q) mstore(21536, result) } mstore(0x5440, mulmod(mload(0x5420), mload(0x4f20), f_q)) mstore(0x5460, mulmod(sub(f_q, mload(0x5440)), mload(0x4fa0), f_q)) mstore(0x5480, mulmod(mload(0x52e0), mload(0x4fa0), f_q)) mstore(0x54a0, addmod(mload(0x5400), mload(0x5460), f_q)) { let result := mulmod(mload(0xd80), mload(0x48a0), f_q) mstore(21696, result) } mstore(0x54e0, mulmod(mload(0x54c0), mload(0x4f20), f_q)) mstore(0x5500, mulmod(sub(f_q, mload(0x54e0)), mload(0x4fc0), f_q)) mstore(0x5520, mulmod(mload(0x52e0), mload(0x4fc0), f_q)) mstore(0x5540, addmod(mload(0x54a0), mload(0x5500), f_q)) { let result := mulmod(mload(0xda0), mload(0x48a0), f_q) mstore(21856, result) } mstore(0x5580, mulmod(mload(0x5560), mload(0x4f20), f_q)) mstore(0x55a0, mulmod(sub(f_q, mload(0x5580)), mload(0x4fe0), f_q)) mstore(0x55c0, mulmod(mload(0x52e0), mload(0x4fe0), f_q)) mstore(0x55e0, addmod(mload(0x5540), mload(0x55a0), f_q)) { let result := mulmod(mload(0xdc0), mload(0x48a0), f_q) mstore(22016, result) } mstore(0x5620, mulmod(mload(0x5600), mload(0x4f20), f_q)) mstore(0x5640, mulmod(sub(f_q, mload(0x5620)), mload(0x5000), f_q)) mstore(0x5660, mulmod(mload(0x52e0), mload(0x5000), f_q)) mstore(0x5680, addmod(mload(0x55e0), mload(0x5640), f_q)) { let result := mulmod(mload(0xe00), mload(0x48a0), f_q) mstore(22176, result) } mstore(0x56c0, mulmod(mload(0x56a0), mload(0x4f20), f_q)) mstore(0x56e0, mulmod(sub(f_q, mload(0x56c0)), mload(0x5020), f_q)) mstore(0x5700, mulmod(mload(0x52e0), mload(0x5020), f_q)) mstore(0x5720, addmod(mload(0x5680), mload(0x56e0), f_q)) { let result := mulmod(mload(0xe20), mload(0x48a0), f_q) mstore(22336, result) } mstore(0x5760, mulmod(mload(0x5740), mload(0x4f20), f_q)) mstore(0x5780, mulmod(sub(f_q, mload(0x5760)), mload(0x5040), f_q)) mstore(0x57a0, mulmod(mload(0x52e0), mload(0x5040), f_q)) mstore(0x57c0, addmod(mload(0x5720), mload(0x5780), f_q)) { let result := mulmod(mload(0xe40), mload(0x48a0), f_q) mstore(22496, result) } mstore(0x5800, mulmod(mload(0x57e0), mload(0x4f20), f_q)) mstore(0x5820, mulmod(sub(f_q, mload(0x5800)), mload(0x5060), f_q)) mstore(0x5840, mulmod(mload(0x52e0), mload(0x5060), f_q)) mstore(0x5860, addmod(mload(0x57c0), mload(0x5820), f_q)) { let result := mulmod(mload(0xe60), mload(0x48a0), f_q) mstore(22656, result) } mstore(0x58a0, mulmod(mload(0x5880), mload(0x4f20), f_q)) mstore(0x58c0, mulmod(sub(f_q, mload(0x58a0)), mload(0x5080), f_q)) mstore(0x58e0, mulmod(mload(0x52e0), mload(0x5080), f_q)) mstore(0x5900, addmod(mload(0x5860), mload(0x58c0), f_q)) { let result := mulmod(mload(0xe80), mload(0x48a0), f_q) mstore(22816, result) } mstore(0x5940, mulmod(mload(0x5920), mload(0x4f20), f_q)) mstore(0x5960, mulmod(sub(f_q, mload(0x5940)), mload(0x50a0), f_q)) mstore(0x5980, mulmod(mload(0x52e0), mload(0x50a0), f_q)) mstore(0x59a0, addmod(mload(0x5900), mload(0x5960), f_q)) mstore(0x59c0, mulmod(mload(0x4580), mload(0x4cc0), f_q)) mstore(0x59e0, mulmod(mload(0x45a0), mload(0x4cc0), f_q)) { let result := mulmod(mload(0x45c0), mload(0x48a0), f_q) mstore(23040, result) } mstore(0x5a20, mulmod(mload(0x5a00), mload(0x4f20), f_q)) mstore(0x5a40, mulmod(sub(f_q, mload(0x5a20)), mload(0x50c0), f_q)) mstore(0x5a60, mulmod(mload(0x52e0), mload(0x50c0), f_q)) mstore(0x5a80, mulmod(mload(0x59c0), mload(0x50c0), f_q)) mstore(0x5aa0, mulmod(mload(0x59e0), mload(0x50c0), f_q)) mstore(0x5ac0, addmod(mload(0x59a0), mload(0x5a40), f_q)) { let result := mulmod(mload(0xde0), mload(0x48a0), f_q) mstore(23264, result) } mstore(0x5b00, mulmod(mload(0x5ae0), mload(0x4f20), f_q)) mstore(0x5b20, mulmod(sub(f_q, mload(0x5b00)), mload(0x50e0), f_q)) mstore(0x5b40, mulmod(mload(0x52e0), mload(0x50e0), f_q)) mstore(0x5b60, addmod(mload(0x5ac0), mload(0x5b20), f_q)) mstore(0x5b80, mulmod(mload(0x5b60), mload(0x10c0), f_q)) mstore(0x5ba0, mulmod(mload(0x5360), mload(0x10c0), f_q)) mstore(0x5bc0, mulmod(mload(0x53e0), mload(0x10c0), f_q)) mstore(0x5be0, mulmod(mload(0x5480), mload(0x10c0), f_q)) mstore(0x5c00, mulmod(mload(0x5520), mload(0x10c0), f_q)) mstore(0x5c20, mulmod(mload(0x55c0), mload(0x10c0), f_q)) mstore(0x5c40, mulmod(mload(0x5660), mload(0x10c0), f_q)) mstore(0x5c60, mulmod(mload(0x5700), mload(0x10c0), f_q)) mstore(0x5c80, mulmod(mload(0x57a0), mload(0x10c0), f_q)) mstore(0x5ca0, mulmod(mload(0x5840), mload(0x10c0), f_q)) mstore(0x5cc0, mulmod(mload(0x58e0), mload(0x10c0), f_q)) mstore(0x5ce0, mulmod(mload(0x5980), mload(0x10c0), f_q)) mstore(0x5d00, mulmod(mload(0x5a60), mload(0x10c0), f_q)) mstore(0x5d20, mulmod(mload(0x5a80), mload(0x10c0), f_q)) mstore(0x5d40, mulmod(mload(0x5aa0), mload(0x10c0), f_q)) mstore(0x5d60, mulmod(mload(0x5b40), mload(0x10c0), f_q)) mstore(0x5d80, addmod(mload(0x52a0), mload(0x5b80), f_q)) mstore(0x5da0, mulmod(1, mload(0x4d00), f_q)) { let result := mulmod(mload(0xea0), mload(0x48c0), f_q) result := addmod(mulmod(mload(0xec0), mload(0x48e0), f_q), result, f_q) result := addmod(mulmod(mload(0xee0), mload(0x4900), f_q), result, f_q) mstore(24000, result) } mstore(0x5de0, mulmod(mload(0x5dc0), mload(0x4f40), f_q)) mstore(0x5e00, mulmod(sub(f_q, mload(0x5de0)), 1, f_q)) mstore(0x5e20, mulmod(mload(0x5da0), 1, f_q)) { let result := mulmod(mload(0xf00), mload(0x48c0), f_q) result := addmod(mulmod(mload(0xf20), mload(0x48e0), f_q), result, f_q) result := addmod(mulmod(mload(0xf40), mload(0x4900), f_q), result, f_q) mstore(24128, result) } mstore(0x5e60, mulmod(mload(0x5e40), mload(0x4f40), f_q)) mstore(0x5e80, mulmod(sub(f_q, mload(0x5e60)), mload(0x1060), f_q)) mstore(0x5ea0, mulmod(mload(0x5da0), mload(0x1060), f_q)) mstore(0x5ec0, addmod(mload(0x5e00), mload(0x5e80), f_q)) mstore(0x5ee0, mulmod(mload(0x5ec0), mload(0x5120), f_q)) mstore(0x5f00, mulmod(mload(0x5e20), mload(0x5120), f_q)) mstore(0x5f20, mulmod(mload(0x5ea0), mload(0x5120), f_q)) mstore(0x5f40, addmod(mload(0x5d80), mload(0x5ee0), f_q)) mstore(0x5f60, mulmod(1, mload(0x4d40), f_q)) { let result := mulmod(mload(0xf60), mload(0x4940), f_q) result := addmod(mulmod(mload(0xf80), mload(0x4960), f_q), result, f_q) mstore(24448, result) } mstore(0x5fa0, mulmod(mload(0x5f80), mload(0x4f60), f_q)) mstore(0x5fc0, mulmod(sub(f_q, mload(0x5fa0)), 1, f_q)) mstore(0x5fe0, mulmod(mload(0x5f60), 1, f_q)) { let result := mulmod(mload(0xfa0), mload(0x4940), f_q) result := addmod(mulmod(mload(0xfc0), mload(0x4960), f_q), result, f_q) mstore(24576, result) } mstore(0x6020, mulmod(mload(0x6000), mload(0x4f60), f_q)) mstore(0x6040, mulmod(sub(f_q, mload(0x6020)), mload(0x1060), f_q)) mstore(0x6060, mulmod(mload(0x5f60), mload(0x1060), f_q)) mstore(0x6080, addmod(mload(0x5fc0), mload(0x6040), f_q)) mstore(0x60a0, mulmod(mload(0x6080), mload(0x5140), f_q)) mstore(0x60c0, mulmod(mload(0x5fe0), mload(0x5140), f_q)) mstore(0x60e0, mulmod(mload(0x6060), mload(0x5140), f_q)) mstore(0x6100, addmod(mload(0x5f40), mload(0x60a0), f_q)) mstore(0x6120, mulmod(1, mload(0x4d80), f_q)) { let result := mulmod(mload(0xfe0), mload(0x4980), f_q) result := addmod(mulmod(mload(0x1000), mload(0x49a0), f_q), result, f_q) mstore(24896, result) } mstore(0x6160, mulmod(mload(0x6140), mload(0x4f80), f_q)) mstore(0x6180, mulmod(sub(f_q, mload(0x6160)), 1, f_q)) mstore(0x61a0, mulmod(mload(0x6120), 1, f_q)) mstore(0x61c0, mulmod(mload(0x6180), mload(0x5160), f_q)) mstore(0x61e0, mulmod(mload(0x61a0), mload(0x5160), f_q)) mstore(0x6200, addmod(mload(0x6100), mload(0x61c0), f_q)) mstore(0x6220, mulmod(1, mload(0x4880), f_q)) mstore(0x6240, mulmod(1, mload(0x1160), f_q)) mstore(0x6260, 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(0x6280, 0x0000000000000000000000000000000000000000000000000000000000000002) mstore(0x62a0, mload(0x6200)) success := and(eq(staticcall(gas(), 0x7, 0x6260, 0x60, 0x6260, 0x40), 1), success) mstore(0x62c0, mload(0x6260)) mstore(0x62e0, mload(0x6280)) mstore(0x6300, mload(0x720)) mstore(0x6320, mload(0x740)) success := and(eq(staticcall(gas(), 0x6, 0x62c0, 0x80, 0x62c0, 0x40), 1), success) mstore(0x6340, mload(0x760)) mstore(0x6360, mload(0x780)) mstore(0x6380, mload(0x52c0)) success := and(eq(staticcall(gas(), 0x7, 0x6340, 0x60, 0x6340, 0x40), 1), success) mstore(0x63a0, mload(0x62c0)) mstore(0x63c0, mload(0x62e0)) mstore(0x63e0, mload(0x6340)) mstore(0x6400, mload(0x6360)) success := and(eq(staticcall(gas(), 0x6, 0x63a0, 0x80, 0x63a0, 0x40), 1), success) mstore(0x6420, mload(0x7a0)) mstore(0x6440, mload(0x7c0)) mstore(0x6460, mload(0x5ba0)) success := and(eq(staticcall(gas(), 0x7, 0x6420, 0x60, 0x6420, 0x40), 1), success) mstore(0x6480, mload(0x63a0)) mstore(0x64a0, mload(0x63c0)) mstore(0x64c0, mload(0x6420)) mstore(0x64e0, mload(0x6440)) success := and(eq(staticcall(gas(), 0x6, 0x6480, 0x80, 0x6480, 0x40), 1), success) mstore(0x6500, mload(0x880)) mstore(0x6520, mload(0x8a0)) mstore(0x6540, mload(0x5bc0)) success := and(eq(staticcall(gas(), 0x7, 0x6500, 0x60, 0x6500, 0x40), 1), success) mstore(0x6560, mload(0x6480)) mstore(0x6580, mload(0x64a0)) mstore(0x65a0, mload(0x6500)) mstore(0x65c0, mload(0x6520)) success := and(eq(staticcall(gas(), 0x6, 0x6560, 0x80, 0x6560, 0x40), 1), success) mstore(0x65e0, 0x052fef9c6915b7fb3db3f21b29b01aeb9ee6532165bf6fcbd235f7be282d74ed) mstore(0x6600, 0x2d6f4fffe3096d9bf5e63b02a1d25e23d53fa855763d0cb68f5cf9f95a133868) mstore(0x6620, mload(0x5be0)) success := and(eq(staticcall(gas(), 0x7, 0x65e0, 0x60, 0x65e0, 0x40), 1), success) mstore(0x6640, mload(0x6560)) mstore(0x6660, mload(0x6580)) mstore(0x6680, mload(0x65e0)) mstore(0x66a0, mload(0x6600)) success := and(eq(staticcall(gas(), 0x6, 0x6640, 0x80, 0x6640, 0x40), 1), success) mstore(0x66c0, 0x18ab8615a39222924f8bfe2bf3b88612fb692de0efa6e24f90c2ddc05661b634) mstore(0x66e0, 0x2b7033475410a3db82d02c345da2b6f1246c3cf96ba28ac7d657a1ca08a68262) mstore(0x6700, mload(0x5c00)) success := and(eq(staticcall(gas(), 0x7, 0x66c0, 0x60, 0x66c0, 0x40), 1), success) mstore(0x6720, mload(0x6640)) mstore(0x6740, mload(0x6660)) mstore(0x6760, mload(0x66c0)) mstore(0x6780, mload(0x66e0)) success := and(eq(staticcall(gas(), 0x6, 0x6720, 0x80, 0x6720, 0x40), 1), success) mstore(0x67a0, 0x259b90135dc570023ee29da41add0c2e2911e5fd5e7847293c43286256d85c82) mstore(0x67c0, 0x233538fa1b5e4d2135c173543cd83005995bb2b638f7784a9faebfe1aa002297) mstore(0x67e0, mload(0x5c20)) success := and(eq(staticcall(gas(), 0x7, 0x67a0, 0x60, 0x67a0, 0x40), 1), success) mstore(0x6800, mload(0x6720)) mstore(0x6820, mload(0x6740)) mstore(0x6840, mload(0x67a0)) mstore(0x6860, mload(0x67c0)) success := and(eq(staticcall(gas(), 0x6, 0x6800, 0x80, 0x6800, 0x40), 1), success) mstore(0x6880, 0x25cc6cabf373c5cc3cd17f2058ab5f36ba95744bd0a0a83fa6009a3c90bb503f) mstore(0x68a0, 0x1ff986851274b80031fa7d31fa9fba16a5004556e8598dab4b49c0c5dcdf6aef) mstore(0x68c0, mload(0x5c40)) success := and(eq(staticcall(gas(), 0x7, 0x6880, 0x60, 0x6880, 0x40), 1), success) mstore(0x68e0, mload(0x6800)) mstore(0x6900, mload(0x6820)) mstore(0x6920, mload(0x6880)) mstore(0x6940, mload(0x68a0)) success := and(eq(staticcall(gas(), 0x6, 0x68e0, 0x80, 0x68e0, 0x40), 1), success) mstore(0x6960, 0x05c1c4db8c04629723402ae5f05825228810a792dd3fea746683b0d0104ec490) mstore(0x6980, 0x2b7fe37ad98c0fa894e68e047c33e33327d6c3aa2b9c1c0911f4513d281bebfa) mstore(0x69a0, mload(0x5c60)) success := and(eq(staticcall(gas(), 0x7, 0x6960, 0x60, 0x6960, 0x40), 1), success) mstore(0x69c0, mload(0x68e0)) mstore(0x69e0, mload(0x6900)) mstore(0x6a00, mload(0x6960)) mstore(0x6a20, mload(0x6980)) success := and(eq(staticcall(gas(), 0x6, 0x69c0, 0x80, 0x69c0, 0x40), 1), success) mstore(0x6a40, 0x0dfdf63a8514b1155d732148b7f0ff487a5bd48fafc3203597d55c8f608fc615) mstore(0x6a60, 0x05f8827b24a83d5ab29f2189037355a22fef5fb2a246f9783dfaff1691dca957) mstore(0x6a80, mload(0x5c80)) success := and(eq(staticcall(gas(), 0x7, 0x6a40, 0x60, 0x6a40, 0x40), 1), success) mstore(0x6aa0, mload(0x69c0)) mstore(0x6ac0, mload(0x69e0)) mstore(0x6ae0, mload(0x6a40)) mstore(0x6b00, mload(0x6a60)) success := and(eq(staticcall(gas(), 0x6, 0x6aa0, 0x80, 0x6aa0, 0x40), 1), success) mstore(0x6b20, 0x1fac4291d7aa01f5a48c51802981a94695af4ba420f4ae84b09a9e93f43d78a1) mstore(0x6b40, 0x27fc59f3644ad31b19991dd181eff24eb0c777ac5ca29dd97e408483c20f3a64) mstore(0x6b60, mload(0x5ca0)) success := and(eq(staticcall(gas(), 0x7, 0x6b20, 0x60, 0x6b20, 0x40), 1), success) mstore(0x6b80, mload(0x6aa0)) mstore(0x6ba0, mload(0x6ac0)) mstore(0x6bc0, mload(0x6b20)) mstore(0x6be0, mload(0x6b40)) success := and(eq(staticcall(gas(), 0x6, 0x6b80, 0x80, 0x6b80, 0x40), 1), success) mstore(0x6c00, 0x2ef56aa248b578d21a0bc79c35bfa32fc9393563715aaed6c38371f5081c66fc) mstore(0x6c20, 0x15a7b64da6f594573f55bc7f733510aba338cbacd75152f82452460fc5e475ba) mstore(0x6c40, mload(0x5cc0)) success := and(eq(staticcall(gas(), 0x7, 0x6c00, 0x60, 0x6c00, 0x40), 1), success) mstore(0x6c60, mload(0x6b80)) mstore(0x6c80, mload(0x6ba0)) mstore(0x6ca0, mload(0x6c00)) mstore(0x6cc0, mload(0x6c20)) success := and(eq(staticcall(gas(), 0x6, 0x6c60, 0x80, 0x6c60, 0x40), 1), success) mstore(0x6ce0, 0x171d03d85f31d499df4757cc276cd9941a36d4b7841672b9199bb70c9b434143) mstore(0x6d00, 0x136d1d20f5b04044a94d1c3a6f6c77e296af0cac540bc9b4ae20f951a7b9bfa1) mstore(0x6d20, mload(0x5ce0)) success := and(eq(staticcall(gas(), 0x7, 0x6ce0, 0x60, 0x6ce0, 0x40), 1), success) mstore(0x6d40, mload(0x6c60)) mstore(0x6d60, mload(0x6c80)) mstore(0x6d80, mload(0x6ce0)) mstore(0x6da0, mload(0x6d00)) success := and(eq(staticcall(gas(), 0x6, 0x6d40, 0x80, 0x6d40, 0x40), 1), success) mstore(0x6dc0, mload(0xb20)) mstore(0x6de0, mload(0xb40)) mstore(0x6e00, mload(0x5d00)) success := and(eq(staticcall(gas(), 0x7, 0x6dc0, 0x60, 0x6dc0, 0x40), 1), success) mstore(0x6e20, mload(0x6d40)) mstore(0x6e40, mload(0x6d60)) mstore(0x6e60, mload(0x6dc0)) mstore(0x6e80, mload(0x6de0)) success := and(eq(staticcall(gas(), 0x6, 0x6e20, 0x80, 0x6e20, 0x40), 1), success) mstore(0x6ea0, mload(0xb60)) mstore(0x6ec0, mload(0xb80)) mstore(0x6ee0, mload(0x5d20)) success := and(eq(staticcall(gas(), 0x7, 0x6ea0, 0x60, 0x6ea0, 0x40), 1), success) mstore(0x6f00, mload(0x6e20)) mstore(0x6f20, mload(0x6e40)) mstore(0x6f40, mload(0x6ea0)) mstore(0x6f60, mload(0x6ec0)) success := and(eq(staticcall(gas(), 0x6, 0x6f00, 0x80, 0x6f00, 0x40), 1), success) mstore(0x6f80, mload(0xba0)) mstore(0x6fa0, mload(0xbc0)) mstore(0x6fc0, mload(0x5d40)) success := and(eq(staticcall(gas(), 0x7, 0x6f80, 0x60, 0x6f80, 0x40), 1), success) mstore(0x6fe0, mload(0x6f00)) mstore(0x7000, mload(0x6f20)) mstore(0x7020, mload(0x6f80)) mstore(0x7040, mload(0x6fa0)) success := and(eq(staticcall(gas(), 0x6, 0x6fe0, 0x80, 0x6fe0, 0x40), 1), success) mstore(0x7060, mload(0xa80)) mstore(0x7080, mload(0xaa0)) mstore(0x70a0, mload(0x5d60)) success := and(eq(staticcall(gas(), 0x7, 0x7060, 0x60, 0x7060, 0x40), 1), success) mstore(0x70c0, mload(0x6fe0)) mstore(0x70e0, mload(0x7000)) mstore(0x7100, mload(0x7060)) mstore(0x7120, mload(0x7080)) success := and(eq(staticcall(gas(), 0x6, 0x70c0, 0x80, 0x70c0, 0x40), 1), success) mstore(0x7140, mload(0x980)) mstore(0x7160, mload(0x9a0)) mstore(0x7180, mload(0x5f00)) success := and(eq(staticcall(gas(), 0x7, 0x7140, 0x60, 0x7140, 0x40), 1), success) mstore(0x71a0, mload(0x70c0)) mstore(0x71c0, mload(0x70e0)) mstore(0x71e0, mload(0x7140)) mstore(0x7200, mload(0x7160)) success := and(eq(staticcall(gas(), 0x6, 0x71a0, 0x80, 0x71a0, 0x40), 1), success) mstore(0x7220, mload(0x9c0)) mstore(0x7240, mload(0x9e0)) mstore(0x7260, mload(0x5f20)) success := and(eq(staticcall(gas(), 0x7, 0x7220, 0x60, 0x7220, 0x40), 1), success) mstore(0x7280, mload(0x71a0)) mstore(0x72a0, mload(0x71c0)) mstore(0x72c0, mload(0x7220)) mstore(0x72e0, mload(0x7240)) success := and(eq(staticcall(gas(), 0x6, 0x7280, 0x80, 0x7280, 0x40), 1), success) mstore(0x7300, mload(0xa00)) mstore(0x7320, mload(0xa20)) mstore(0x7340, mload(0x60c0)) success := and(eq(staticcall(gas(), 0x7, 0x7300, 0x60, 0x7300, 0x40), 1), success) mstore(0x7360, mload(0x7280)) mstore(0x7380, mload(0x72a0)) mstore(0x73a0, mload(0x7300)) mstore(0x73c0, mload(0x7320)) success := and(eq(staticcall(gas(), 0x6, 0x7360, 0x80, 0x7360, 0x40), 1), success) mstore(0x73e0, mload(0xa40)) mstore(0x7400, mload(0xa60)) mstore(0x7420, mload(0x60e0)) success := and(eq(staticcall(gas(), 0x7, 0x73e0, 0x60, 0x73e0, 0x40), 1), success) mstore(0x7440, mload(0x7360)) mstore(0x7460, mload(0x7380)) mstore(0x7480, mload(0x73e0)) mstore(0x74a0, mload(0x7400)) success := and(eq(staticcall(gas(), 0x6, 0x7440, 0x80, 0x7440, 0x40), 1), success) mstore(0x74c0, mload(0x840)) mstore(0x74e0, mload(0x860)) mstore(0x7500, mload(0x61e0)) success := and(eq(staticcall(gas(), 0x7, 0x74c0, 0x60, 0x74c0, 0x40), 1), success) mstore(0x7520, mload(0x7440)) mstore(0x7540, mload(0x7460)) mstore(0x7560, mload(0x74c0)) mstore(0x7580, mload(0x74e0)) success := and(eq(staticcall(gas(), 0x6, 0x7520, 0x80, 0x7520, 0x40), 1), success) mstore(0x75a0, mload(0x1100)) mstore(0x75c0, mload(0x1120)) mstore(0x75e0, sub(f_q, mload(0x6220))) success := and(eq(staticcall(gas(), 0x7, 0x75a0, 0x60, 0x75a0, 0x40), 1), success) mstore(0x7600, mload(0x7520)) mstore(0x7620, mload(0x7540)) mstore(0x7640, mload(0x75a0)) mstore(0x7660, mload(0x75c0)) success := and(eq(staticcall(gas(), 0x6, 0x7600, 0x80, 0x7600, 0x40), 1), success) mstore(0x7680, mload(0x11a0)) mstore(0x76a0, mload(0x11c0)) mstore(0x76c0, mload(0x6240)) success := and(eq(staticcall(gas(), 0x7, 0x7680, 0x60, 0x7680, 0x40), 1), success) mstore(0x76e0, mload(0x7600)) mstore(0x7700, mload(0x7620)) mstore(0x7720, mload(0x7680)) mstore(0x7740, mload(0x76a0)) success := and(eq(staticcall(gas(), 0x6, 0x76e0, 0x80, 0x76e0, 0x40), 1), success) mstore(0x7760, mload(0x76e0)) mstore(0x7780, mload(0x7700)) mstore(0x77a0, mload(0x11a0)) mstore(0x77c0, mload(0x11c0)) mstore(0x77e0, mload(0x11e0)) mstore(0x7800, mload(0x1200)) mstore(0x7820, mload(0x1220)) mstore(0x7840, mload(0x1240)) mstore(0x7860, keccak256(0x7760, 256)) mstore(30848, mod(mload(30816), f_q)) mstore(0x78a0, mulmod(mload(0x7880), mload(0x7880), f_q)) mstore(0x78c0, mulmod(1, mload(0x7880), f_q)) mstore(0x78e0, mload(0x77e0)) mstore(0x7900, mload(0x7800)) mstore(0x7920, mload(0x78c0)) success := and(eq(staticcall(gas(), 0x7, 0x78e0, 0x60, 0x78e0, 0x40), 1), success) mstore(0x7940, mload(0x7760)) mstore(0x7960, mload(0x7780)) mstore(0x7980, mload(0x78e0)) mstore(0x79a0, mload(0x7900)) success := and(eq(staticcall(gas(), 0x6, 0x7940, 0x80, 0x7940, 0x40), 1), success) mstore(0x79c0, mload(0x7820)) mstore(0x79e0, mload(0x7840)) mstore(0x7a00, mload(0x78c0)) success := and(eq(staticcall(gas(), 0x7, 0x79c0, 0x60, 0x79c0, 0x40), 1), success) mstore(0x7a20, mload(0x77a0)) mstore(0x7a40, mload(0x77c0)) mstore(0x7a60, mload(0x79c0)) mstore(0x7a80, mload(0x79e0)) success := and(eq(staticcall(gas(), 0x6, 0x7a20, 0x80, 0x7a20, 0x40), 1), success) mstore(0x7aa0, mload(0x7940)) mstore(0x7ac0, mload(0x7960)) mstore(0x7ae0, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(0x7b00, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(0x7b20, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(0x7b40, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) mstore(0x7b60, mload(0x7a20)) mstore(0x7b80, mload(0x7a40)) mstore(0x7ba0, 0x186282957db913abd99f91db59fe69922e95040603ef44c0bd7aa3adeef8f5ac) mstore(0x7bc0, 0x17944351223333f260ddc3b4af45191b856689eda9eab5cbcddbbe570ce860d2) mstore(0x7be0, 0x06d971ff4a7467c3ec596ed6efc674572e32fd6f52b721f97e35b0b3d3546753) mstore(0x7c00, 0x06ecdb9f9567f59ed2eee36e1e1d58797fd13cc97fafc2910f5e8a12f202fa9a) success := and(eq(staticcall(gas(), 0x8, 0x7aa0, 0x180, 0x7aa0, 0x20), 1), success) success := and(eq(mload(0x7aa0), 1), success) if not(success) { revert(0, 0) } return(0, 0) } } }