Skip to content

Instantly share code, notes, and snippets.

@enricobottazzi
Created June 29, 2023 08:16
Show Gist options
  • Save enricobottazzi/7f26cba5b592b3889dae590170cf1566 to your computer and use it in GitHub Desktop.
Save enricobottazzi/7f26cba5b592b3889dae590170cf1566 to your computer and use it in GitHub Desktop.
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(0x0, 15367683707754885707179186092780743289109707942910960174458480259744777213930)
{
let x := calldataload(0x260)
mstore(0x280, x)
let y := calldataload(0x280)
mstore(0x2a0, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x2a0)
mstore(0x2c0, x)
let y := calldataload(0x2c0)
mstore(0x2e0, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x2e0)
mstore(0x300, x)
let y := calldataload(0x300)
mstore(0x320, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x320)
mstore(0x340, x)
let y := calldataload(0x340)
mstore(0x360, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x360)
mstore(0x380, x)
let y := calldataload(0x380)
mstore(0x3a0, y)
success := and(validate_ec_point(x, y), success)
}
mstore(0x3c0, keccak256(0x0, 960))
{
let hash := mload(0x3c0)
mstore(0x3e0, mod(hash, f_q))
mstore(0x400, hash)
}
{
let x := calldataload(0x3a0)
mstore(0x420, x)
let y := calldataload(0x3c0)
mstore(0x440, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x3e0)
mstore(0x460, x)
let y := calldataload(0x400)
mstore(0x480, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x420)
mstore(0x4a0, x)
let y := calldataload(0x440)
mstore(0x4c0, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x460)
mstore(0x4e0, x)
let y := calldataload(0x480)
mstore(0x500, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x4a0)
mstore(0x520, x)
let y := calldataload(0x4c0)
mstore(0x540, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x4e0)
mstore(0x560, x)
let y := calldataload(0x500)
mstore(0x580, y)
success := and(validate_ec_point(x, y), success)
}
{
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)
}
{
let x := calldataload(0x5a0)
mstore(0x620, x)
let y := calldataload(0x5c0)
mstore(0x640, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x5e0)
mstore(0x660, x)
let y := calldataload(0x600)
mstore(0x680, y)
success := and(validate_ec_point(x, y), success)
}
mstore(0x6a0, keccak256(0x400, 672))
{
let hash := mload(0x6a0)
mstore(0x6c0, mod(hash, f_q))
mstore(0x6e0, hash)
}
mstore8(1792, 1)
mstore(0x700, keccak256(0x6e0, 33))
{
let hash := mload(0x700)
mstore(0x720, mod(hash, f_q))
mstore(0x740, hash)
}
{
let x := calldataload(0x620)
mstore(0x760, x)
let y := calldataload(0x640)
mstore(0x780, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x660)
mstore(0x7a0, x)
let y := calldataload(0x680)
mstore(0x7c0, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x6a0)
mstore(0x7e0, x)
let y := calldataload(0x6c0)
mstore(0x800, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x6e0)
mstore(0x820, x)
let y := calldataload(0x700)
mstore(0x840, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x720)
mstore(0x860, x)
let y := calldataload(0x740)
mstore(0x880, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x760)
mstore(0x8a0, x)
let y := calldataload(0x780)
mstore(0x8c0, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x7a0)
mstore(0x8e0, x)
let y := calldataload(0x7c0)
mstore(0x900, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x7e0)
mstore(0x920, x)
let y := calldataload(0x800)
mstore(0x940, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x820)
mstore(0x960, x)
let y := calldataload(0x840)
mstore(0x980, y)
success := and(validate_ec_point(x, y), success)
}
mstore(0x9a0, keccak256(0x740, 608))
{
let hash := mload(0x9a0)
mstore(0x9c0, mod(hash, f_q))
mstore(0x9e0, hash)
}
{
let x := calldataload(0x860)
mstore(0xa00, x)
let y := calldataload(0x880)
mstore(0xa20, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x8a0)
mstore(0xa40, x)
let y := calldataload(0x8c0)
mstore(0xa60, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x8e0)
mstore(0xa80, x)
let y := calldataload(0x900)
mstore(0xaa0, y)
success := and(validate_ec_point(x, y), success)
}
{
let x := calldataload(0x920)
mstore(0xac0, x)
let y := calldataload(0x940)
mstore(0xae0, y)
success := and(validate_ec_point(x, y), success)
}
mstore(0xb00, keccak256(0x9e0, 288))
{
let hash := mload(0xb00)
mstore(0xb20, mod(hash, f_q))
mstore(0xb40, hash)
}
mstore(0xb60, mod(calldataload(0x960), f_q))
mstore(0xb80, mod(calldataload(0x980), f_q))
mstore(0xba0, mod(calldataload(0x9a0), f_q))
mstore(0xbc0, mod(calldataload(0x9c0), f_q))
mstore(0xbe0, mod(calldataload(0x9e0), f_q))
mstore(0xc00, mod(calldataload(0xa00), f_q))
mstore(0xc20, mod(calldataload(0xa20), f_q))
mstore(0xc40, mod(calldataload(0xa40), f_q))
mstore(0xc60, mod(calldataload(0xa60), f_q))
mstore(0xc80, mod(calldataload(0xa80), f_q))
mstore(0xca0, mod(calldataload(0xaa0), f_q))
mstore(0xcc0, mod(calldataload(0xac0), f_q))
mstore(0xce0, mod(calldataload(0xae0), f_q))
mstore(0xd00, mod(calldataload(0xb00), f_q))
mstore(0xd20, mod(calldataload(0xb20), f_q))
mstore(0xd40, mod(calldataload(0xb40), f_q))
mstore(0xd60, mod(calldataload(0xb60), f_q))
mstore(0xd80, mod(calldataload(0xb80), f_q))
mstore(0xda0, mod(calldataload(0xba0), f_q))
mstore(0xdc0, mod(calldataload(0xbc0), f_q))
mstore(0xde0, mod(calldataload(0xbe0), f_q))
mstore(0xe00, mod(calldataload(0xc00), f_q))
mstore(0xe20, mod(calldataload(0xc20), f_q))
mstore(0xe40, mod(calldataload(0xc40), f_q))
mstore(0xe60, mod(calldataload(0xc60), f_q))
mstore(0xe80, mod(calldataload(0xc80), f_q))
mstore(0xea0, mod(calldataload(0xca0), f_q))
mstore(0xec0, mod(calldataload(0xcc0), f_q))
mstore(0xee0, mod(calldataload(0xce0), f_q))
mstore(0xf00, mod(calldataload(0xd00), f_q))
mstore(0xf20, 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, mod(calldataload(0xe40), f_q))
mstore(0x1060, mod(calldataload(0xe60), f_q))
mstore(0x1080, mod(calldataload(0xe80), f_q))
mstore(0x10a0, mod(calldataload(0xea0), f_q))
mstore(0x10c0, mod(calldataload(0xec0), f_q))
mstore(0x10e0, mod(calldataload(0xee0), f_q))
mstore(0x1100, mod(calldataload(0xf00), f_q))
mstore(0x1120, mod(calldataload(0xf20), f_q))
mstore(0x1140, mod(calldataload(0xf40), f_q))
mstore(0x1160, mod(calldataload(0xf60), f_q))
mstore(0x1180, mod(calldataload(0xf80), f_q))
mstore(0x11a0, mod(calldataload(0xfa0), f_q))
mstore(0x11c0, mod(calldataload(0xfc0), f_q))
mstore(0x11e0, mod(calldataload(0xfe0), f_q))
mstore(0x1200, mod(calldataload(0x1000), f_q))
mstore(0x1220, mod(calldataload(0x1020), f_q))
mstore(0x1240, mod(calldataload(0x1040), f_q))
mstore(0x1260, mod(calldataload(0x1060), f_q))
mstore(0x1280, mod(calldataload(0x1080), f_q))
mstore(0x12a0, mod(calldataload(0x10a0), f_q))
mstore(0x12c0, mod(calldataload(0x10c0), f_q))
mstore(0x12e0, mod(calldataload(0x10e0), f_q))
mstore(0x1300, keccak256(0xb40, 1984))
{
let hash := mload(0x1300)
mstore(0x1320, mod(hash, f_q))
mstore(0x1340, hash)
}
mstore8(4960, 1)
mstore(0x1360, keccak256(0x1340, 33))
{
let hash := mload(0x1360)
mstore(0x1380, mod(hash, f_q))
mstore(0x13a0, hash)
}
{
let x := calldataload(0x1100)
mstore(0x13c0, x)
let y := calldataload(0x1120)
mstore(0x13e0, y)
success := and(validate_ec_point(x, y), success)
}
mstore(0x1400, keccak256(0x13a0, 96))
{
let hash := mload(0x1400)
mstore(0x1420, mod(hash, f_q))
mstore(0x1440, hash)
}
{
let x := calldataload(0x1140)
mstore(0x1460, x)
let y := calldataload(0x1160)
mstore(0x1480, y)
success := and(validate_ec_point(x, y), success)
}
mstore(0x14a0, mulmod(mload(0xb20), mload(0xb20), 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, mulmod(mload(0x1540), mload(0x1540), f_q))
mstore(0x1580, mulmod(mload(0x1560), mload(0x1560), f_q))
mstore(0x15a0, mulmod(mload(0x1580), mload(0x1580), f_q))
mstore(0x15c0, mulmod(mload(0x15a0), mload(0x15a0), f_q))
mstore(0x15e0, mulmod(mload(0x15c0), mload(0x15c0), f_q))
mstore(0x1600, mulmod(mload(0x15e0), mload(0x15e0), f_q))
mstore(0x1620, mulmod(mload(0x1600), mload(0x1600), f_q))
mstore(0x1640, mulmod(mload(0x1620), mload(0x1620), f_q))
mstore(0x1660, mulmod(mload(0x1640), mload(0x1640), f_q))
mstore(0x1680, mulmod(mload(0x1660), mload(0x1660), f_q))
mstore(0x16a0, mulmod(mload(0x1680), mload(0x1680), f_q))
mstore(0x16c0, mulmod(mload(0x16a0), mload(0x16a0), f_q))
mstore(0x16e0, mulmod(mload(0x16c0), mload(0x16c0), f_q))
mstore(0x1700, mulmod(mload(0x16e0), mload(0x16e0), f_q))
mstore(0x1720, mulmod(mload(0x1700), mload(0x1700), f_q))
mstore(0x1740, addmod(mload(0x1720), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))
mstore(0x1760, mulmod(mload(0x1740), 21888232434711746154598842647110004286396165347431605739555851272621938401409, f_q))
mstore(0x1780, mulmod(mload(0x1760), 495188420091111145957709789221178673495499187437761988132837836548330853701, f_q))
mstore(0x17a0, addmod(mload(0xb20), 21393054451748164076288695956036096415052865212978272355565366350027477641916, f_q))
mstore(0x17c0, mulmod(mload(0x1760), 16064522944768515290584536219762686197737451920702130080538975732575755569557, f_q))
mstore(0x17e0, addmod(mload(0xb20), 5823719927070759931661869525494588890810912479713904263159228454000052926060, f_q))
mstore(0x1800, mulmod(mload(0x1760), 14686510910986211321976396297238126901237973400949744736326777596334651355305, f_q))
mstore(0x1820, addmod(mload(0xb20), 7201731960853063900270009448019148187310390999466289607371426590241157140312, f_q))
mstore(0x1840, mulmod(mload(0x1760), 10939663269433627367777756708678102241564365262857670666700619874077960926249, f_q))
mstore(0x1860, addmod(mload(0xb20), 10948579602405647854468649036579172846983999137558363676997584312497847569368, f_q))
mstore(0x1880, mulmod(mload(0x1760), 15402826414547299628414612080036060696555554914079673875872749760617770134879, f_q))
mstore(0x18a0, addmod(mload(0xb20), 6485416457291975593831793665221214391992809486336360467825454425958038360738, f_q))
mstore(0x18c0, mulmod(mload(0x1760), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q))
mstore(0x18e0, addmod(mload(0xb20), 19102728315457599142069468034376470979900453007937332237837518576196438670601, f_q))
mstore(0x1900, mulmod(mload(0x1760), 1, f_q))
mstore(0x1920, addmod(mload(0xb20), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))
mstore(0x1940, mulmod(mload(0x1760), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q))
mstore(0x1960, addmod(mload(0xb20), 20461838439117790833741043996939313553025008529160428886800406442142042007110, f_q))
mstore(0x1980, mulmod(mload(0x1760), 19032961837237948602743626455740240236231119053033140765040043513661803148152, f_q))
mstore(0x19a0, addmod(mload(0xb20), 2855281034601326619502779289517034852317245347382893578658160672914005347465, f_q))
mstore(0x19c0, mulmod(mload(0x1760), 3766081621734395783232337525162072736827576297943013392955872170138036189193, f_q))
mstore(0x19e0, addmod(mload(0xb20), 18122161250104879439014068220095202351720788102473020950742332016437772306424, f_q))
mstore(0x1a00, mulmod(mload(0x1760), 5854133144571823792863860130267644613802765696134002830362054821530146160770, f_q))
mstore(0x1a20, addmod(mload(0xb20), 16034109727267451429382545614989630474745598704282031513336149365045662334847, f_q))
mstore(0x1a40, mulmod(mload(0x1760), 14557038802599140430182096396825290815503940951075961210638273254419942783582, f_q))
mstore(0x1a60, addmod(mload(0xb20), 7331204069240134792064309348431984273044423449340073133059930932155865712035, f_q))
mstore(0x1a80, mulmod(mload(0x1760), 9697063347556872083384215826199993067635178715531258559890418744774301211662, f_q))
mstore(0x1aa0, addmod(mload(0xb20), 12191179524282403138862189919057282020913185684884775783807785441801507283955, f_q))
mstore(0x1ac0, mulmod(mload(0x1760), 12459868075641381822485233712013080087763946065665469821362892189399541605692, f_q))
mstore(0x1ae0, addmod(mload(0xb20), 9428374796197893399761172033244195000784418334750564522335311997176266889925, f_q))
mstore(0x1b00, mulmod(mload(0x1760), 6955697244493336113861667751840378876927906302623587437721024018233754910398, f_q))
mstore(0x1b20, addmod(mload(0xb20), 14932545627345939108384737993416896211620458097792446905977180168342053585219, f_q))
mstore(0x1b40, mulmod(mload(0x1760), 20345677989844117909528750049476969581182118546166966482506114734614108237981, f_q))
mstore(0x1b60, addmod(mload(0xb20), 1542564881995157312717655695780305507366245854249067861192089451961700257636, f_q))
mstore(0x1b80, mulmod(mload(0x1760), 5289443209903185443361862148540090689648485914368835830972895623576469023722, f_q))
mstore(0x1ba0, addmod(mload(0xb20), 16598799661936089778884543596717184398899878486047198512725308562999339471895, f_q))
mstore(0x1bc0, mulmod(mload(0x1760), 557567375339945239933617516585967620814823575807691402619711360028043331811, f_q))
mstore(0x1be0, addmod(mload(0xb20), 21330675496499329982312788228671307467733540824608342941078492826547765163806, f_q))
mstore(0x1c00, mulmod(mload(0x1760), 4509404676247677387317362072810231899718070082381452255950861037254608304934, f_q))
mstore(0x1c20, addmod(mload(0xb20), 17378838195591597834929043672447043188830294318034582087747343149321200190683, f_q))
mstore(0x1c40, mulmod(mload(0x1760), 20169013865622130318472103510465966222180994822334426398191891983290742724178, f_q))
mstore(0x1c60, addmod(mload(0xb20), 1719229006217144903774302234791308866367369578081607945506312203285065771439, f_q))
mstore(0x1c80, mulmod(mload(0x1760), 2579947959091681244170407980400327834520881737801886423874592072501514087543, f_q))
mstore(0x1ca0, addmod(mload(0xb20), 19308294912747593978075997764856947254027482662614147919823612114074294408074, f_q))
mstore(0x1cc0, mulmod(mload(0x1760), 1881761935718519990121799628252273658786792458106649887437395059872945867717, f_q))
mstore(0x1ce0, addmod(mload(0xb20), 20006480936120755232124606117005001429761571942309384456260809126702862627900, f_q))
{
let prod := mload(0x17a0)
prod := mulmod(mload(0x17e0), prod, f_q)
mstore(0x1d00, prod)
prod := mulmod(mload(0x1820), prod, f_q)
mstore(0x1d20, prod)
prod := mulmod(mload(0x1860), prod, f_q)
mstore(0x1d40, prod)
prod := mulmod(mload(0x18a0), prod, f_q)
mstore(0x1d60, prod)
prod := mulmod(mload(0x18e0), prod, f_q)
mstore(0x1d80, prod)
prod := mulmod(mload(0x1920), prod, f_q)
mstore(0x1da0, prod)
prod := mulmod(mload(0x1960), prod, f_q)
mstore(0x1dc0, prod)
prod := mulmod(mload(0x19a0), prod, f_q)
mstore(0x1de0, prod)
prod := mulmod(mload(0x19e0), prod, f_q)
mstore(0x1e00, prod)
prod := mulmod(mload(0x1a20), prod, f_q)
mstore(0x1e20, prod)
prod := mulmod(mload(0x1a60), prod, f_q)
mstore(0x1e40, prod)
prod := mulmod(mload(0x1aa0), prod, f_q)
mstore(0x1e60, prod)
prod := mulmod(mload(0x1ae0), prod, f_q)
mstore(0x1e80, prod)
prod := mulmod(mload(0x1b20), prod, f_q)
mstore(0x1ea0, prod)
prod := mulmod(mload(0x1b60), prod, f_q)
mstore(0x1ec0, prod)
prod := mulmod(mload(0x1ba0), prod, f_q)
mstore(0x1ee0, prod)
prod := mulmod(mload(0x1be0), prod, f_q)
mstore(0x1f00, prod)
prod := mulmod(mload(0x1c20), prod, f_q)
mstore(0x1f20, prod)
prod := mulmod(mload(0x1c60), prod, f_q)
mstore(0x1f40, prod)
prod := mulmod(mload(0x1ca0), prod, f_q)
mstore(0x1f60, prod)
prod := mulmod(mload(0x1ce0), prod, f_q)
mstore(0x1f80, prod)
prod := mulmod(mload(0x1740), prod, f_q)
mstore(0x1fa0, prod)
}
mstore(0x1fe0, 32)
mstore(0x2000, 32)
mstore(0x2020, 32)
mstore(0x2040, mload(0x1fa0))
mstore(0x2060, 21888242871839275222246405745257275088548364400416034343698204186575808495615)
mstore(0x2080, 21888242871839275222246405745257275088548364400416034343698204186575808495617)
success := and(eq(staticcall(gas(), 0x5, 0x1fe0, 0xc0, 0x1fc0, 0x20), 1), success)
{
let inv := mload(0x1fc0)
let v
v := mload(0x1740)
mstore(5952, mulmod(mload(0x1f80), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1ce0)
mstore(7392, mulmod(mload(0x1f60), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1ca0)
mstore(7328, mulmod(mload(0x1f40), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1c60)
mstore(7264, mulmod(mload(0x1f20), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1c20)
mstore(7200, mulmod(mload(0x1f00), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1be0)
mstore(7136, mulmod(mload(0x1ee0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1ba0)
mstore(7072, mulmod(mload(0x1ec0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1b60)
mstore(7008, mulmod(mload(0x1ea0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1b20)
mstore(6944, mulmod(mload(0x1e80), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1ae0)
mstore(6880, mulmod(mload(0x1e60), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1aa0)
mstore(6816, mulmod(mload(0x1e40), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1a60)
mstore(6752, mulmod(mload(0x1e20), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1a20)
mstore(6688, mulmod(mload(0x1e00), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x19e0)
mstore(6624, mulmod(mload(0x1de0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x19a0)
mstore(6560, mulmod(mload(0x1dc0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1960)
mstore(6496, mulmod(mload(0x1da0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1920)
mstore(6432, mulmod(mload(0x1d80), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x18e0)
mstore(6368, mulmod(mload(0x1d60), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x18a0)
mstore(6304, mulmod(mload(0x1d40), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1860)
mstore(6240, mulmod(mload(0x1d20), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x1820)
mstore(6176, mulmod(mload(0x1d00), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x17e0)
mstore(6112, mulmod(mload(0x17a0), inv, f_q))
inv := mulmod(v, inv, f_q)
mstore(0x17a0, inv)
}
mstore(0x20a0, mulmod(mload(0x1780), mload(0x17a0), f_q))
mstore(0x20c0, mulmod(mload(0x17c0), mload(0x17e0), f_q))
mstore(0x20e0, mulmod(mload(0x1800), mload(0x1820), f_q))
mstore(0x2100, mulmod(mload(0x1840), mload(0x1860), f_q))
mstore(0x2120, mulmod(mload(0x1880), mload(0x18a0), f_q))
mstore(0x2140, mulmod(mload(0x18c0), mload(0x18e0), f_q))
mstore(0x2160, mulmod(mload(0x1900), mload(0x1920), f_q))
mstore(0x2180, mulmod(mload(0x1940), mload(0x1960), f_q))
mstore(0x21a0, mulmod(mload(0x1980), mload(0x19a0), f_q))
mstore(0x21c0, mulmod(mload(0x19c0), mload(0x19e0), f_q))
mstore(0x21e0, mulmod(mload(0x1a00), mload(0x1a20), f_q))
mstore(0x2200, mulmod(mload(0x1a40), mload(0x1a60), f_q))
mstore(0x2220, mulmod(mload(0x1a80), mload(0x1aa0), f_q))
mstore(0x2240, mulmod(mload(0x1ac0), mload(0x1ae0), f_q))
mstore(0x2260, mulmod(mload(0x1b00), mload(0x1b20), f_q))
mstore(0x2280, mulmod(mload(0x1b40), mload(0x1b60), f_q))
mstore(0x22a0, mulmod(mload(0x1b80), mload(0x1ba0), f_q))
mstore(0x22c0, mulmod(mload(0x1bc0), mload(0x1be0), f_q))
mstore(0x22e0, mulmod(mload(0x1c00), mload(0x1c20), f_q))
mstore(0x2300, mulmod(mload(0x1c40), mload(0x1c60), f_q))
mstore(0x2320, mulmod(mload(0x1c80), mload(0x1ca0), f_q))
mstore(0x2340, mulmod(mload(0x1cc0), mload(0x1ce0), f_q))
{
let result := mulmod(mload(0x2160), mload(0x20), f_q)
result := addmod(mulmod(mload(0x2180), mload(0x40), f_q), result, f_q)
result := addmod(mulmod(mload(0x21a0), mload(0x60), f_q), result, f_q)
mstore(9056, result)
}
{
let result := mulmod(mload(0x2160), mload(0x80), f_q)
result := addmod(mulmod(mload(0x2180), mload(0xa0), f_q), result, f_q)
result := addmod(mulmod(mload(0x21a0), mload(0xc0), f_q), result, f_q)
result := addmod(mulmod(mload(0x21c0), mload(0xe0), f_q), result, f_q)
result := addmod(mulmod(mload(0x21e0), mload(0x100), f_q), result, f_q)
result := addmod(mulmod(mload(0x2200), mload(0x120), f_q), result, f_q)
result := addmod(mulmod(mload(0x2220), mload(0x140), f_q), result, f_q)
result := addmod(mulmod(mload(0x2240), mload(0x160), f_q), result, f_q)
result := addmod(mulmod(mload(0x2260), mload(0x180), f_q), result, f_q)
result := addmod(mulmod(mload(0x2280), mload(0x1a0), f_q), result, f_q)
result := addmod(mulmod(mload(0x22a0), mload(0x1c0), f_q), result, f_q)
result := addmod(mulmod(mload(0x22c0), mload(0x1e0), f_q), result, f_q)
result := addmod(mulmod(mload(0x22e0), mload(0x200), f_q), result, f_q)
result := addmod(mulmod(mload(0x2300), mload(0x220), f_q), result, f_q)
result := addmod(mulmod(mload(0x2320), mload(0x240), f_q), result, f_q)
result := addmod(mulmod(mload(0x2340), mload(0x260), f_q), result, f_q)
mstore(9088, result)
}
mstore(0x23a0, mulmod(mload(0xc20), mload(0xb60), f_q))
mstore(0x23c0, mulmod(mload(0xc40), mload(0xb80), f_q))
mstore(0x23e0, addmod(mload(0x23a0), mload(0x23c0), f_q))
mstore(0x2400, mulmod(mload(0xc60), mload(0xba0), f_q))
mstore(0x2420, addmod(mload(0x23e0), mload(0x2400), f_q))
mstore(0x2440, mulmod(mload(0xc80), mload(0xbc0), f_q))
mstore(0x2460, addmod(mload(0x2420), mload(0x2440), f_q))
mstore(0x2480, mulmod(mload(0xca0), mload(0xbe0), f_q))
mstore(0x24a0, addmod(mload(0x2460), mload(0x2480), f_q))
mstore(0x24c0, mulmod(mload(0xb80), mload(0xb60), f_q))
mstore(0x24e0, mulmod(mload(0xce0), mload(0x24c0), f_q))
mstore(0x2500, addmod(mload(0x24a0), mload(0x24e0), f_q))
mstore(0x2520, mulmod(mload(0xbc0), mload(0xba0), f_q))
mstore(0x2540, mulmod(mload(0xd00), mload(0x2520), f_q))
mstore(0x2560, addmod(mload(0x2500), mload(0x2540), f_q))
mstore(0x2580, mulmod(mload(0xc00), mload(0xcc0), f_q))
mstore(0x25a0, addmod(mload(0x2560), mload(0x2580), f_q))
mstore(0x25c0, addmod(mload(0x25a0), mload(0xd20), f_q))
mstore(0x25e0, mulmod(mload(0x9c0), mload(0x25c0), f_q))
mstore(0x2600, addmod(1, sub(f_q, mload(0xee0)), f_q))
mstore(0x2620, mulmod(mload(0x2600), mload(0x2160), f_q))
mstore(0x2640, addmod(mload(0x25e0), mload(0x2620), f_q))
mstore(0x2660, mulmod(mload(0x9c0), mload(0x2640), f_q))
mstore(0x2680, mulmod(mload(0xfa0), mload(0xfa0), f_q))
mstore(0x26a0, addmod(mload(0x2680), sub(f_q, mload(0xfa0)), f_q))
mstore(0x26c0, mulmod(mload(0x26a0), mload(0x20a0), f_q))
mstore(0x26e0, addmod(mload(0x2660), mload(0x26c0), f_q))
mstore(0x2700, mulmod(mload(0x9c0), mload(0x26e0), f_q))
mstore(0x2720, addmod(mload(0xf40), sub(f_q, mload(0xf20)), f_q))
mstore(0x2740, mulmod(mload(0x2720), mload(0x2160), f_q))
mstore(0x2760, addmod(mload(0x2700), mload(0x2740), f_q))
mstore(0x2780, mulmod(mload(0x9c0), mload(0x2760), f_q))
mstore(0x27a0, addmod(mload(0xfa0), sub(f_q, mload(0xf80)), f_q))
mstore(0x27c0, mulmod(mload(0x27a0), mload(0x2160), f_q))
mstore(0x27e0, addmod(mload(0x2780), mload(0x27c0), f_q))
mstore(0x2800, mulmod(mload(0x9c0), mload(0x27e0), f_q))
mstore(0x2820, addmod(1, sub(f_q, mload(0x20a0)), f_q))
mstore(0x2840, addmod(mload(0x20c0), mload(0x20e0), f_q))
mstore(0x2860, addmod(mload(0x2840), mload(0x2100), f_q))
mstore(0x2880, addmod(mload(0x2860), mload(0x2120), f_q))
mstore(0x28a0, addmod(mload(0x2880), mload(0x2140), f_q))
mstore(0x28c0, addmod(mload(0x2820), sub(f_q, mload(0x28a0)), f_q))
mstore(0x28e0, mulmod(mload(0xe00), mload(0x6c0), f_q))
mstore(0x2900, addmod(mload(0x2360), mload(0x28e0), f_q))
mstore(0x2920, addmod(mload(0x2900), mload(0x720), f_q))
mstore(0x2940, mulmod(mload(0xe20), mload(0x6c0), f_q))
mstore(0x2960, addmod(mload(0xb60), mload(0x2940), f_q))
mstore(0x2980, addmod(mload(0x2960), mload(0x720), f_q))
mstore(0x29a0, mulmod(mload(0x2980), mload(0x2920), f_q))
mstore(0x29c0, mulmod(mload(0xe40), mload(0x6c0), f_q))
mstore(0x29e0, addmod(mload(0xb80), mload(0x29c0), f_q))
mstore(0x2a00, addmod(mload(0x29e0), mload(0x720), f_q))
mstore(0x2a20, mulmod(mload(0x2a00), mload(0x29a0), f_q))
mstore(0x2a40, mulmod(mload(0x2a20), mload(0xf00), f_q))
mstore(0x2a60, mulmod(1, mload(0x6c0), f_q))
mstore(0x2a80, mulmod(mload(0xb20), mload(0x2a60), f_q))
mstore(0x2aa0, addmod(mload(0x2360), mload(0x2a80), f_q))
mstore(0x2ac0, addmod(mload(0x2aa0), mload(0x720), f_q))
mstore(0x2ae0, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x6c0), f_q))
mstore(0x2b00, mulmod(mload(0xb20), mload(0x2ae0), f_q))
mstore(0x2b20, addmod(mload(0xb60), mload(0x2b00), f_q))
mstore(0x2b40, addmod(mload(0x2b20), mload(0x720), f_q))
mstore(0x2b60, mulmod(mload(0x2b40), mload(0x2ac0), f_q))
mstore(0x2b80, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x6c0), f_q))
mstore(0x2ba0, mulmod(mload(0xb20), mload(0x2b80), f_q))
mstore(0x2bc0, addmod(mload(0xb80), mload(0x2ba0), f_q))
mstore(0x2be0, addmod(mload(0x2bc0), mload(0x720), f_q))
mstore(0x2c00, mulmod(mload(0x2be0), mload(0x2b60), f_q))
mstore(0x2c20, mulmod(mload(0x2c00), mload(0xee0), f_q))
mstore(0x2c40, addmod(mload(0x2a40), sub(f_q, mload(0x2c20)), f_q))
mstore(0x2c60, mulmod(mload(0x2c40), mload(0x28c0), f_q))
mstore(0x2c80, addmod(mload(0x2800), mload(0x2c60), f_q))
mstore(0x2ca0, mulmod(mload(0x9c0), mload(0x2c80), f_q))
mstore(0x2cc0, mulmod(mload(0xe60), mload(0x6c0), f_q))
mstore(0x2ce0, addmod(mload(0xba0), mload(0x2cc0), f_q))
mstore(0x2d00, addmod(mload(0x2ce0), mload(0x720), f_q))
mstore(0x2d20, mulmod(mload(0xe80), mload(0x6c0), f_q))
mstore(0x2d40, addmod(mload(0xbc0), mload(0x2d20), f_q))
mstore(0x2d60, addmod(mload(0x2d40), mload(0x720), f_q))
mstore(0x2d80, mulmod(mload(0x2d60), mload(0x2d00), f_q))
mstore(0x2da0, mulmod(mload(0xea0), mload(0x6c0), f_q))
mstore(0x2dc0, addmod(mload(0xbe0), mload(0x2da0), f_q))
mstore(0x2de0, addmod(mload(0x2dc0), mload(0x720), f_q))
mstore(0x2e00, mulmod(mload(0x2de0), mload(0x2d80), f_q))
mstore(0x2e20, mulmod(mload(0x2e00), mload(0xf60), f_q))
mstore(0x2e40, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x6c0), f_q))
mstore(0x2e60, mulmod(mload(0xb20), mload(0x2e40), f_q))
mstore(0x2e80, addmod(mload(0xba0), mload(0x2e60), f_q))
mstore(0x2ea0, addmod(mload(0x2e80), mload(0x720), f_q))
mstore(0x2ec0, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x6c0), f_q))
mstore(0x2ee0, mulmod(mload(0xb20), mload(0x2ec0), f_q))
mstore(0x2f00, addmod(mload(0xbc0), mload(0x2ee0), f_q))
mstore(0x2f20, addmod(mload(0x2f00), mload(0x720), f_q))
mstore(0x2f40, mulmod(mload(0x2f20), mload(0x2ea0), f_q))
mstore(0x2f60, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x6c0), f_q))
mstore(0x2f80, mulmod(mload(0xb20), mload(0x2f60), f_q))
mstore(0x2fa0, addmod(mload(0xbe0), mload(0x2f80), f_q))
mstore(0x2fc0, addmod(mload(0x2fa0), mload(0x720), f_q))
mstore(0x2fe0, mulmod(mload(0x2fc0), mload(0x2f40), f_q))
mstore(0x3000, mulmod(mload(0x2fe0), mload(0xf40), f_q))
mstore(0x3020, addmod(mload(0x2e20), sub(f_q, mload(0x3000)), f_q))
mstore(0x3040, mulmod(mload(0x3020), mload(0x28c0), f_q))
mstore(0x3060, addmod(mload(0x2ca0), mload(0x3040), f_q))
mstore(0x3080, mulmod(mload(0x9c0), mload(0x3060), f_q))
mstore(0x30a0, mulmod(mload(0xec0), mload(0x6c0), f_q))
mstore(0x30c0, addmod(mload(0x2380), mload(0x30a0), f_q))
mstore(0x30e0, addmod(mload(0x30c0), mload(0x720), f_q))
mstore(0x3100, mulmod(mload(0x30e0), mload(0xfc0), f_q))
mstore(0x3120, mulmod(5625741653535312224677218588085279924365897425605943700675464992185016992283, mload(0x6c0), f_q))
mstore(0x3140, mulmod(mload(0xb20), mload(0x3120), f_q))
mstore(0x3160, addmod(mload(0x2380), mload(0x3140), f_q))
mstore(0x3180, addmod(mload(0x3160), mload(0x720), f_q))
mstore(0x31a0, mulmod(mload(0x3180), mload(0xfa0), f_q))
mstore(0x31c0, addmod(mload(0x3100), sub(f_q, mload(0x31a0)), f_q))
mstore(0x31e0, mulmod(mload(0x31c0), mload(0x28c0), f_q))
mstore(0x3200, addmod(mload(0x3080), mload(0x31e0), f_q))
mstore(0x3220, mulmod(mload(0x9c0), mload(0x3200), f_q))
mstore(0x3240, addmod(1, sub(f_q, mload(0xfe0)), f_q))
mstore(0x3260, mulmod(mload(0x3240), mload(0x2160), f_q))
mstore(0x3280, addmod(mload(0x3220), mload(0x3260), f_q))
mstore(0x32a0, mulmod(mload(0x9c0), mload(0x3280), f_q))
mstore(0x32c0, mulmod(mload(0xfe0), mload(0xfe0), f_q))
mstore(0x32e0, addmod(mload(0x32c0), sub(f_q, mload(0xfe0)), f_q))
mstore(0x3300, mulmod(mload(0x32e0), mload(0x20a0), f_q))
mstore(0x3320, addmod(mload(0x32a0), mload(0x3300), f_q))
mstore(0x3340, mulmod(mload(0x9c0), mload(0x3320), f_q))
mstore(0x3360, addmod(mload(0x1020), mload(0x6c0), f_q))
mstore(0x3380, mulmod(mload(0x3360), mload(0x1000), f_q))
mstore(0x33a0, addmod(mload(0x1060), mload(0x720), f_q))
mstore(0x33c0, mulmod(mload(0x33a0), mload(0x3380), f_q))
mstore(0x33e0, mulmod(5, mload(0xda0), f_q))
mstore(0x3400, mulmod(mload(0x3e0), mload(0x33e0), f_q))
mstore(0x3420, mulmod(mload(0xb60), mload(0xda0), f_q))
mstore(0x3440, addmod(mload(0x3400), mload(0x3420), f_q))
mstore(0x3460, addmod(mload(0x3440), mload(0x6c0), f_q))
mstore(0x3480, mulmod(mload(0x3460), mload(0xfe0), f_q))
mstore(0x34a0, mulmod(mload(0x3e0), mload(0xd40), f_q))
mstore(0x34c0, addmod(mload(0x34a0), mload(0xd60), f_q))
mstore(0x34e0, addmod(mload(0x34c0), mload(0x720), f_q))
mstore(0x3500, mulmod(mload(0x34e0), mload(0x3480), f_q))
mstore(0x3520, addmod(mload(0x33c0), sub(f_q, mload(0x3500)), f_q))
mstore(0x3540, mulmod(mload(0x3520), mload(0x28c0), f_q))
mstore(0x3560, addmod(mload(0x3340), mload(0x3540), f_q))
mstore(0x3580, mulmod(mload(0x9c0), mload(0x3560), f_q))
mstore(0x35a0, addmod(mload(0x1020), sub(f_q, mload(0x1060)), f_q))
mstore(0x35c0, mulmod(mload(0x35a0), mload(0x2160), f_q))
mstore(0x35e0, addmod(mload(0x3580), mload(0x35c0), f_q))
mstore(0x3600, mulmod(mload(0x9c0), mload(0x35e0), f_q))
mstore(0x3620, mulmod(mload(0x35a0), mload(0x28c0), f_q))
mstore(0x3640, addmod(mload(0x1020), sub(f_q, mload(0x1040)), f_q))
mstore(0x3660, mulmod(mload(0x3640), mload(0x3620), f_q))
mstore(0x3680, addmod(mload(0x3600), mload(0x3660), f_q))
mstore(0x36a0, mulmod(mload(0x9c0), mload(0x3680), f_q))
mstore(0x36c0, addmod(1, sub(f_q, mload(0x1080)), f_q))
mstore(0x36e0, mulmod(mload(0x36c0), mload(0x2160), f_q))
mstore(0x3700, addmod(mload(0x36a0), mload(0x36e0), f_q))
mstore(0x3720, mulmod(mload(0x9c0), mload(0x3700), f_q))
mstore(0x3740, mulmod(mload(0x1080), mload(0x1080), f_q))
mstore(0x3760, addmod(mload(0x3740), sub(f_q, mload(0x1080)), f_q))
mstore(0x3780, mulmod(mload(0x3760), mload(0x20a0), f_q))
mstore(0x37a0, addmod(mload(0x3720), mload(0x3780), f_q))
mstore(0x37c0, mulmod(mload(0x9c0), mload(0x37a0), f_q))
mstore(0x37e0, addmod(mload(0x10c0), mload(0x6c0), f_q))
mstore(0x3800, mulmod(mload(0x37e0), mload(0x10a0), f_q))
mstore(0x3820, addmod(mload(0x1100), mload(0x720), f_q))
mstore(0x3840, mulmod(mload(0x3820), mload(0x3800), f_q))
mstore(0x3860, mulmod(mload(0xb80), mload(0xda0), f_q))
mstore(0x3880, addmod(mload(0x3400), mload(0x3860), f_q))
mstore(0x38a0, addmod(mload(0x3880), mload(0x6c0), f_q))
mstore(0x38c0, mulmod(mload(0x38a0), mload(0x1080), f_q))
mstore(0x38e0, mulmod(mload(0x34e0), mload(0x38c0), f_q))
mstore(0x3900, addmod(mload(0x3840), sub(f_q, mload(0x38e0)), f_q))
mstore(0x3920, mulmod(mload(0x3900), mload(0x28c0), f_q))
mstore(0x3940, addmod(mload(0x37c0), mload(0x3920), f_q))
mstore(0x3960, mulmod(mload(0x9c0), mload(0x3940), f_q))
mstore(0x3980, addmod(mload(0x10c0), sub(f_q, mload(0x1100)), f_q))
mstore(0x39a0, mulmod(mload(0x3980), mload(0x2160), f_q))
mstore(0x39c0, addmod(mload(0x3960), mload(0x39a0), f_q))
mstore(0x39e0, mulmod(mload(0x9c0), mload(0x39c0), f_q))
mstore(0x3a00, mulmod(mload(0x3980), mload(0x28c0), f_q))
mstore(0x3a20, addmod(mload(0x10c0), sub(f_q, mload(0x10e0)), f_q))
mstore(0x3a40, mulmod(mload(0x3a20), mload(0x3a00), f_q))
mstore(0x3a60, addmod(mload(0x39e0), mload(0x3a40), f_q))
mstore(0x3a80, mulmod(mload(0x9c0), mload(0x3a60), f_q))
mstore(0x3aa0, addmod(1, sub(f_q, mload(0x1120)), f_q))
mstore(0x3ac0, mulmod(mload(0x3aa0), mload(0x2160), f_q))
mstore(0x3ae0, addmod(mload(0x3a80), mload(0x3ac0), f_q))
mstore(0x3b00, mulmod(mload(0x9c0), mload(0x3ae0), f_q))
mstore(0x3b20, mulmod(mload(0x1120), mload(0x1120), f_q))
mstore(0x3b40, addmod(mload(0x3b20), sub(f_q, mload(0x1120)), f_q))
mstore(0x3b60, mulmod(mload(0x3b40), mload(0x20a0), f_q))
mstore(0x3b80, addmod(mload(0x3b00), mload(0x3b60), f_q))
mstore(0x3ba0, mulmod(mload(0x9c0), mload(0x3b80), f_q))
mstore(0x3bc0, addmod(mload(0x1160), mload(0x6c0), f_q))
mstore(0x3be0, mulmod(mload(0x3bc0), mload(0x1140), f_q))
mstore(0x3c00, addmod(mload(0x11a0), mload(0x720), f_q))
mstore(0x3c20, mulmod(mload(0x3c00), mload(0x3be0), f_q))
mstore(0x3c40, mulmod(mload(0xba0), mload(0xda0), f_q))
mstore(0x3c60, addmod(mload(0x3400), mload(0x3c40), f_q))
mstore(0x3c80, addmod(mload(0x3c60), mload(0x6c0), f_q))
mstore(0x3ca0, mulmod(mload(0x3c80), mload(0x1120), f_q))
mstore(0x3cc0, mulmod(mload(0x34e0), mload(0x3ca0), f_q))
mstore(0x3ce0, addmod(mload(0x3c20), sub(f_q, mload(0x3cc0)), f_q))
mstore(0x3d00, mulmod(mload(0x3ce0), mload(0x28c0), f_q))
mstore(0x3d20, addmod(mload(0x3ba0), mload(0x3d00), f_q))
mstore(0x3d40, mulmod(mload(0x9c0), mload(0x3d20), f_q))
mstore(0x3d60, addmod(mload(0x1160), sub(f_q, mload(0x11a0)), f_q))
mstore(0x3d80, mulmod(mload(0x3d60), mload(0x2160), f_q))
mstore(0x3da0, addmod(mload(0x3d40), mload(0x3d80), f_q))
mstore(0x3dc0, mulmod(mload(0x9c0), mload(0x3da0), f_q))
mstore(0x3de0, mulmod(mload(0x3d60), mload(0x28c0), f_q))
mstore(0x3e00, addmod(mload(0x1160), sub(f_q, mload(0x1180)), f_q))
mstore(0x3e20, mulmod(mload(0x3e00), mload(0x3de0), f_q))
mstore(0x3e40, addmod(mload(0x3dc0), mload(0x3e20), f_q))
mstore(0x3e60, mulmod(mload(0x9c0), mload(0x3e40), f_q))
mstore(0x3e80, addmod(1, sub(f_q, mload(0x11c0)), f_q))
mstore(0x3ea0, mulmod(mload(0x3e80), mload(0x2160), f_q))
mstore(0x3ec0, addmod(mload(0x3e60), mload(0x3ea0), f_q))
mstore(0x3ee0, mulmod(mload(0x9c0), mload(0x3ec0), f_q))
mstore(0x3f00, mulmod(mload(0x11c0), mload(0x11c0), f_q))
mstore(0x3f20, addmod(mload(0x3f00), sub(f_q, mload(0x11c0)), f_q))
mstore(0x3f40, mulmod(mload(0x3f20), mload(0x20a0), f_q))
mstore(0x3f60, addmod(mload(0x3ee0), mload(0x3f40), f_q))
mstore(0x3f80, mulmod(mload(0x9c0), mload(0x3f60), f_q))
mstore(0x3fa0, addmod(mload(0x1200), mload(0x6c0), f_q))
mstore(0x3fc0, mulmod(mload(0x3fa0), mload(0x11e0), f_q))
mstore(0x3fe0, addmod(mload(0x1240), mload(0x720), f_q))
mstore(0x4000, mulmod(mload(0x3fe0), mload(0x3fc0), f_q))
mstore(0x4020, mulmod(mload(0xbc0), mload(0xda0), f_q))
mstore(0x4040, addmod(mload(0x3400), mload(0x4020), f_q))
mstore(0x4060, addmod(mload(0x4040), mload(0x6c0), f_q))
mstore(0x4080, mulmod(mload(0x4060), mload(0x11c0), f_q))
mstore(0x40a0, mulmod(mload(0x34e0), mload(0x4080), f_q))
mstore(0x40c0, addmod(mload(0x4000), sub(f_q, mload(0x40a0)), f_q))
mstore(0x40e0, mulmod(mload(0x40c0), mload(0x28c0), f_q))
mstore(0x4100, addmod(mload(0x3f80), mload(0x40e0), f_q))
mstore(0x4120, mulmod(mload(0x9c0), mload(0x4100), f_q))
mstore(0x4140, addmod(mload(0x1200), sub(f_q, mload(0x1240)), f_q))
mstore(0x4160, mulmod(mload(0x4140), mload(0x2160), f_q))
mstore(0x4180, addmod(mload(0x4120), mload(0x4160), f_q))
mstore(0x41a0, mulmod(mload(0x9c0), mload(0x4180), f_q))
mstore(0x41c0, mulmod(mload(0x4140), mload(0x28c0), f_q))
mstore(0x41e0, addmod(mload(0x1200), sub(f_q, mload(0x1220)), f_q))
mstore(0x4200, mulmod(mload(0x41e0), mload(0x41c0), f_q))
mstore(0x4220, addmod(mload(0x41a0), mload(0x4200), f_q))
mstore(0x4240, mulmod(mload(0x9c0), mload(0x4220), f_q))
mstore(0x4260, addmod(1, sub(f_q, mload(0x1260)), f_q))
mstore(0x4280, mulmod(mload(0x4260), mload(0x2160), f_q))
mstore(0x42a0, addmod(mload(0x4240), mload(0x4280), f_q))
mstore(0x42c0, mulmod(mload(0x9c0), mload(0x42a0), f_q))
mstore(0x42e0, mulmod(mload(0x1260), mload(0x1260), f_q))
mstore(0x4300, addmod(mload(0x42e0), sub(f_q, mload(0x1260)), f_q))
mstore(0x4320, mulmod(mload(0x4300), mload(0x20a0), f_q))
mstore(0x4340, addmod(mload(0x42c0), mload(0x4320), f_q))
mstore(0x4360, mulmod(mload(0x9c0), mload(0x4340), f_q))
mstore(0x4380, addmod(mload(0x12a0), mload(0x6c0), f_q))
mstore(0x43a0, mulmod(mload(0x4380), mload(0x1280), f_q))
mstore(0x43c0, addmod(mload(0x12e0), mload(0x720), f_q))
mstore(0x43e0, mulmod(mload(0x43c0), mload(0x43a0), f_q))
mstore(0x4400, mulmod(mload(0x3e0), mload(0xd80), f_q))
mstore(0x4420, mulmod(mload(0xb60), mload(0xdc0), f_q))
mstore(0x4440, addmod(mload(0x4400), mload(0x4420), f_q))
mstore(0x4460, addmod(mload(0x4440), mload(0x6c0), f_q))
mstore(0x4480, mulmod(mload(0x4460), mload(0x1260), f_q))
mstore(0x44a0, mulmod(mload(0x34e0), mload(0x4480), f_q))
mstore(0x44c0, addmod(mload(0x43e0), sub(f_q, mload(0x44a0)), f_q))
mstore(0x44e0, mulmod(mload(0x44c0), mload(0x28c0), f_q))
mstore(0x4500, addmod(mload(0x4360), mload(0x44e0), f_q))
mstore(0x4520, mulmod(mload(0x9c0), mload(0x4500), f_q))
mstore(0x4540, addmod(mload(0x12a0), sub(f_q, mload(0x12e0)), f_q))
mstore(0x4560, mulmod(mload(0x4540), mload(0x2160), f_q))
mstore(0x4580, addmod(mload(0x4520), mload(0x4560), f_q))
mstore(0x45a0, mulmod(mload(0x9c0), mload(0x4580), f_q))
mstore(0x45c0, mulmod(mload(0x4540), mload(0x28c0), f_q))
mstore(0x45e0, addmod(mload(0x12a0), sub(f_q, mload(0x12c0)), f_q))
mstore(0x4600, mulmod(mload(0x45e0), mload(0x45c0), f_q))
mstore(0x4620, addmod(mload(0x45a0), mload(0x4600), f_q))
mstore(0x4640, mulmod(mload(0x1720), mload(0x1720), f_q))
mstore(0x4660, mulmod(mload(0x4640), mload(0x1720), f_q))
mstore(0x4680, mulmod(mload(0x4660), mload(0x1720), f_q))
mstore(0x46a0, mulmod(1, mload(0x1720), f_q))
mstore(0x46c0, mulmod(1, mload(0x4640), f_q))
mstore(0x46e0, mulmod(1, mload(0x4660), f_q))
mstore(0x4700, mulmod(mload(0x4620), mload(0x1740), f_q))
mstore(0x4720, mulmod(mload(0x14a0), mload(0xb20), f_q))
mstore(0x4740, mulmod(mload(0xb20), 1, f_q))
mstore(0x4760, addmod(mload(0x1420), sub(f_q, mload(0x4740)), f_q))
mstore(0x4780, mulmod(mload(0xb20), 495188420091111145957709789221178673495499187437761988132837836548330853701, f_q))
mstore(0x47a0, addmod(mload(0x1420), sub(f_q, mload(0x4780)), f_q))
mstore(0x47c0, mulmod(mload(0xb20), 1426404432721484388505361748317961535523355871255605456897797744433766488507, f_q))
mstore(0x47e0, addmod(mload(0x1420), sub(f_q, mload(0x47c0)), f_q))
mstore(0x4800, mulmod(mload(0xb20), 2785514556381676080176937710880804108647911392478702105860685610379369825016, f_q))
mstore(0x4820, addmod(mload(0x1420), sub(f_q, mload(0x4800)), f_q))
{
let result := mulmod(mload(0x1420), 1, f_q)
result := addmod(mulmod(mload(0xb20), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q)
mstore(18496, result)
}
mstore(0x4860, mulmod(1, mload(0x4760), f_q))
{
let result := mulmod(mload(0x1420), mulmod(mload(0xb20), 20461838439117790833741043996939313553025008529160428886800406442142042007111, f_q), f_q)
result := addmod(mulmod(mload(0xb20), mulmod(mload(0xb20), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q), result, f_q)
mstore(18560, result)
}
{
let result := mulmod(mload(0x1420), mulmod(mload(0xb20), 1426404432721484388505361748317961535523355871255605456897797744433766488506, f_q), f_q)
result := addmod(mulmod(mload(0xb20), mulmod(mload(0xb20), 4281685467322811008008141037834996387840601218638499035555958417347771835972, f_q), f_q), result, f_q)
mstore(18592, result)
}
mstore(0x48c0, mulmod(mload(0x4860), mload(0x47e0), f_q))
{
let result := mulmod(mload(0x1420), mulmod(mload(0x14a0), 14142930091955919756121464682223545988718596862008762635508340151593658227350, f_q), f_q)
result := addmod(mulmod(mload(0xb20), mulmod(mload(0x14a0), 7745312779883355466124941063033729099829767538407271708189864034982150268267, f_q), f_q), result, f_q)
mstore(18656, result)
}
{
let result := mulmod(mload(0x1420), mulmod(mload(0x14a0), 2037222879839060069611438276880771176465810448513167215736107873200611943789, f_q), f_q)
result := addmod(mulmod(mload(0xb20), mulmod(mload(0x14a0), 13888868181721248850903149008053608202904064235337742027871973207282662744707, f_q), f_q), result, f_q)
mstore(18688, result)
}
{
let result := mulmod(mload(0x1420), mulmod(mload(0x14a0), 20070160267951204998196501818802085800643093048527715995697677839462643870561, f_q), f_q)
result := addmod(mulmod(mload(0xb20), mulmod(mload(0x14a0), 3458839671000767838720780123596291134963704031100680951395660163256242312546, f_q), f_q), result, f_q)
mstore(18720, result)
}
mstore(0x4940, mulmod(mload(0x48c0), mload(0x47a0), f_q))
{
let result := mulmod(mload(0x1420), mulmod(mload(0xb20), 19102728315457599142069468034376470979900453007937332237837518576196438670602, f_q), f_q)
result := addmod(mulmod(mload(0xb20), mulmod(mload(0xb20), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q), result, f_q)
mstore(18784, result)
}
{
let result := mulmod(mload(0x1420), mulmod(mload(0xb20), 2785514556381676080176937710880804108647911392478702105860685610379369825015, f_q), f_q)
result := addmod(mulmod(mload(0xb20), mulmod(mload(0xb20), 9270931013673651674008731376102018500640720878815062573686140036337408185754, f_q), f_q), result, f_q)
mstore(18816, result)
}
mstore(0x49a0, mulmod(mload(0x4860), mload(0x4820), f_q))
{
let prod := mload(0x4840)
prod := mulmod(mload(0x4880), prod, f_q)
mstore(0x49c0, prod)
prod := mulmod(mload(0x48a0), prod, f_q)
mstore(0x49e0, prod)
prod := mulmod(mload(0x48c0), prod, f_q)
mstore(0x4a00, prod)
prod := mulmod(mload(0x48e0), prod, f_q)
mstore(0x4a20, prod)
prod := mulmod(mload(0x4900), prod, f_q)
mstore(0x4a40, prod)
prod := mulmod(mload(0x4920), prod, f_q)
mstore(0x4a60, prod)
prod := mulmod(mload(0x4940), prod, f_q)
mstore(0x4a80, prod)
prod := mulmod(mload(0x4960), prod, f_q)
mstore(0x4aa0, prod)
prod := mulmod(mload(0x4980), prod, f_q)
mstore(0x4ac0, prod)
prod := mulmod(mload(0x49a0), prod, f_q)
mstore(0x4ae0, prod)
}
mstore(0x4b20, 32)
mstore(0x4b40, 32)
mstore(0x4b60, 32)
mstore(0x4b80, mload(0x4ae0))
mstore(0x4ba0, 21888242871839275222246405745257275088548364400416034343698204186575808495615)
mstore(0x4bc0, 21888242871839275222246405745257275088548364400416034343698204186575808495617)
success := and(eq(staticcall(gas(), 0x5, 0x4b20, 0xc0, 0x4b00, 0x20), 1), success)
{
let inv := mload(0x4b00)
let v
v := mload(0x49a0)
mstore(18848, mulmod(mload(0x4ac0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4980)
mstore(18816, mulmod(mload(0x4aa0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4960)
mstore(18784, mulmod(mload(0x4a80), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4940)
mstore(18752, mulmod(mload(0x4a60), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4920)
mstore(18720, mulmod(mload(0x4a40), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4900)
mstore(18688, mulmod(mload(0x4a20), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x48e0)
mstore(18656, mulmod(mload(0x4a00), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x48c0)
mstore(18624, mulmod(mload(0x49e0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x48a0)
mstore(18592, mulmod(mload(0x49c0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4880)
mstore(18560, mulmod(mload(0x4840), inv, f_q))
inv := mulmod(v, inv, f_q)
mstore(0x4840, inv)
}
{
let result := mload(0x4840)
mstore(19424, result)
}
mstore(0x4c00, mulmod(mload(0x4860), mload(0x48c0), f_q))
{
let result := mload(0x4880)
result := addmod(mload(0x48a0), result, f_q)
mstore(19488, result)
}
mstore(0x4c40, mulmod(mload(0x4860), mload(0x4940), f_q))
{
let result := mload(0x48e0)
result := addmod(mload(0x4900), result, f_q)
result := addmod(mload(0x4920), result, f_q)
mstore(19552, result)
}
mstore(0x4c80, mulmod(mload(0x4860), mload(0x49a0), f_q))
{
let result := mload(0x4960)
result := addmod(mload(0x4980), result, f_q)
mstore(19616, result)
}
{
let prod := mload(0x4be0)
prod := mulmod(mload(0x4c20), prod, f_q)
mstore(0x4cc0, prod)
prod := mulmod(mload(0x4c60), prod, f_q)
mstore(0x4ce0, prod)
prod := mulmod(mload(0x4ca0), prod, f_q)
mstore(0x4d00, prod)
}
mstore(0x4d40, 32)
mstore(0x4d60, 32)
mstore(0x4d80, 32)
mstore(0x4da0, mload(0x4d00))
mstore(0x4dc0, 21888242871839275222246405745257275088548364400416034343698204186575808495615)
mstore(0x4de0, 21888242871839275222246405745257275088548364400416034343698204186575808495617)
success := and(eq(staticcall(gas(), 0x5, 0x4d40, 0xc0, 0x4d20, 0x20), 1), success)
{
let inv := mload(0x4d20)
let v
v := mload(0x4ca0)
mstore(19616, mulmod(mload(0x4ce0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4c60)
mstore(19552, mulmod(mload(0x4cc0), inv, f_q))
inv := mulmod(v, inv, f_q)
v := mload(0x4c20)
mstore(19488, mulmod(mload(0x4be0), inv, f_q))
inv := mulmod(v, inv, f_q)
mstore(0x4be0, inv)
}
mstore(0x4e00, mulmod(mload(0x4c00), mload(0x4c20), f_q))
mstore(0x4e20, mulmod(mload(0x4c40), mload(0x4c60), f_q))
mstore(0x4e40, mulmod(mload(0x4c80), mload(0x4ca0), f_q))
mstore(0x4e60, mulmod(mload(0x1320), mload(0x1320), f_q))
mstore(0x4e80, mulmod(mload(0x4e60), mload(0x1320), f_q))
mstore(0x4ea0, mulmod(mload(0x4e80), mload(0x1320), f_q))
mstore(0x4ec0, mulmod(mload(0x4ea0), mload(0x1320), f_q))
mstore(0x4ee0, mulmod(mload(0x4ec0), mload(0x1320), f_q))
mstore(0x4f00, mulmod(mload(0x4ee0), mload(0x1320), f_q))
mstore(0x4f20, mulmod(mload(0x4f00), mload(0x1320), f_q))
mstore(0x4f40, mulmod(mload(0x4f20), mload(0x1320), f_q))
mstore(0x4f60, mulmod(mload(0x4f40), mload(0x1320), f_q))
mstore(0x4f80, mulmod(mload(0x4f60), mload(0x1320), f_q))
mstore(0x4fa0, mulmod(mload(0x4f80), mload(0x1320), f_q))
mstore(0x4fc0, mulmod(mload(0x4fa0), mload(0x1320), f_q))
mstore(0x4fe0, mulmod(mload(0x4fc0), mload(0x1320), f_q))
mstore(0x5000, mulmod(mload(0x4fe0), mload(0x1320), f_q))
mstore(0x5020, mulmod(mload(0x5000), mload(0x1320), f_q))
mstore(0x5040, mulmod(mload(0x5020), mload(0x1320), f_q))
mstore(0x5060, mulmod(mload(0x5040), mload(0x1320), f_q))
mstore(0x5080, mulmod(mload(0x5060), mload(0x1320), f_q))
mstore(0x50a0, mulmod(mload(0x5080), mload(0x1320), f_q))
mstore(0x50c0, mulmod(mload(0x50a0), mload(0x1320), f_q))
mstore(0x50e0, mulmod(mload(0x50c0), mload(0x1320), f_q))
mstore(0x5100, mulmod(mload(0x50e0), mload(0x1320), f_q))
mstore(0x5120, mulmod(mload(0x5100), mload(0x1320), f_q))
mstore(0x5140, mulmod(mload(0x5120), mload(0x1320), f_q))
mstore(0x5160, mulmod(mload(0x5140), mload(0x1320), f_q))
mstore(0x5180, mulmod(mload(0x5160), mload(0x1320), f_q))
mstore(0x51a0, mulmod(mload(0x5180), mload(0x1320), f_q))
mstore(0x51c0, mulmod(mload(0x51a0), mload(0x1320), f_q))
mstore(0x51e0, mulmod(mload(0x51c0), mload(0x1320), f_q))
mstore(0x5200, mulmod(mload(0x51e0), mload(0x1320), f_q))
mstore(0x5220, mulmod(mload(0x5200), mload(0x1320), f_q))
mstore(0x5240, mulmod(mload(0x1380), mload(0x1380), f_q))
mstore(0x5260, mulmod(mload(0x5240), mload(0x1380), f_q))
mstore(0x5280, mulmod(mload(0x5260), mload(0x1380), f_q))
{
let result := mulmod(mload(0xb60), mload(0x4840), f_q)
mstore(21152, result)
}
mstore(0x52c0, mulmod(mload(0x52a0), mload(0x4be0), f_q))
mstore(0x52e0, mulmod(sub(f_q, mload(0x52c0)), 1, f_q))
{
let result := mulmod(mload(0xb80), mload(0x4840), f_q)
mstore(21248, result)
}
mstore(0x5320, mulmod(mload(0x5300), mload(0x4be0), f_q))
mstore(0x5340, mulmod(sub(f_q, mload(0x5320)), mload(0x1320), f_q))
mstore(0x5360, mulmod(1, mload(0x1320), f_q))
mstore(0x5380, addmod(mload(0x52e0), mload(0x5340), f_q))
{
let result := mulmod(mload(0xba0), mload(0x4840), f_q)
mstore(21408, result)
}
mstore(0x53c0, mulmod(mload(0x53a0), mload(0x4be0), f_q))
mstore(0x53e0, mulmod(sub(f_q, mload(0x53c0)), mload(0x4e60), f_q))
mstore(0x5400, mulmod(1, mload(0x4e60), f_q))
mstore(0x5420, addmod(mload(0x5380), mload(0x53e0), f_q))
{
let result := mulmod(mload(0xbc0), mload(0x4840), f_q)
mstore(21568, result)
}
mstore(0x5460, mulmod(mload(0x5440), mload(0x4be0), f_q))
mstore(0x5480, mulmod(sub(f_q, mload(0x5460)), mload(0x4e80), f_q))
mstore(0x54a0, mulmod(1, mload(0x4e80), f_q))
mstore(0x54c0, addmod(mload(0x5420), mload(0x5480), f_q))
{
let result := mulmod(mload(0x1060), mload(0x4840), f_q)
mstore(21728, result)
}
mstore(0x5500, mulmod(mload(0x54e0), mload(0x4be0), f_q))
mstore(0x5520, mulmod(sub(f_q, mload(0x5500)), mload(0x4ea0), f_q))
mstore(0x5540, mulmod(1, mload(0x4ea0), f_q))
mstore(0x5560, addmod(mload(0x54c0), mload(0x5520), f_q))
{
let result := mulmod(mload(0x1100), mload(0x4840), f_q)
mstore(21888, result)
}
mstore(0x55a0, mulmod(mload(0x5580), mload(0x4be0), f_q))
mstore(0x55c0, mulmod(sub(f_q, mload(0x55a0)), mload(0x4ec0), f_q))
mstore(0x55e0, mulmod(1, mload(0x4ec0), f_q))
mstore(0x5600, addmod(mload(0x5560), mload(0x55c0), f_q))
{
let result := mulmod(mload(0x11a0), mload(0x4840), f_q)
mstore(22048, result)
}
mstore(0x5640, mulmod(mload(0x5620), mload(0x4be0), f_q))
mstore(0x5660, mulmod(sub(f_q, mload(0x5640)), mload(0x4ee0), f_q))
mstore(0x5680, mulmod(1, mload(0x4ee0), f_q))
mstore(0x56a0, addmod(mload(0x5600), mload(0x5660), f_q))
{
let result := mulmod(mload(0x1240), mload(0x4840), f_q)
mstore(22208, result)
}
mstore(0x56e0, mulmod(mload(0x56c0), mload(0x4be0), f_q))
mstore(0x5700, mulmod(sub(f_q, mload(0x56e0)), mload(0x4f00), f_q))
mstore(0x5720, mulmod(1, mload(0x4f00), f_q))
mstore(0x5740, addmod(mload(0x56a0), mload(0x5700), f_q))
{
let result := mulmod(mload(0x12e0), mload(0x4840), f_q)
mstore(22368, result)
}
mstore(0x5780, mulmod(mload(0x5760), mload(0x4be0), f_q))
mstore(0x57a0, mulmod(sub(f_q, mload(0x5780)), mload(0x4f20), f_q))
mstore(0x57c0, mulmod(1, mload(0x4f20), f_q))
mstore(0x57e0, addmod(mload(0x5740), mload(0x57a0), f_q))
{
let result := mulmod(mload(0xc20), mload(0x4840), f_q)
mstore(22528, result)
}
mstore(0x5820, mulmod(mload(0x5800), mload(0x4be0), f_q))
mstore(0x5840, mulmod(sub(f_q, mload(0x5820)), mload(0x4f40), f_q))
mstore(0x5860, mulmod(1, mload(0x4f40), f_q))
mstore(0x5880, addmod(mload(0x57e0), mload(0x5840), f_q))
{
let result := mulmod(mload(0xc40), mload(0x4840), f_q)
mstore(22688, result)
}
mstore(0x58c0, mulmod(mload(0x58a0), mload(0x4be0), f_q))
mstore(0x58e0, mulmod(sub(f_q, mload(0x58c0)), mload(0x4f60), f_q))
mstore(0x5900, mulmod(1, mload(0x4f60), f_q))
mstore(0x5920, addmod(mload(0x5880), mload(0x58e0), f_q))
{
let result := mulmod(mload(0xc60), mload(0x4840), f_q)
mstore(22848, result)
}
mstore(0x5960, mulmod(mload(0x5940), mload(0x4be0), f_q))
mstore(0x5980, mulmod(sub(f_q, mload(0x5960)), mload(0x4f80), f_q))
mstore(0x59a0, mulmod(1, mload(0x4f80), f_q))
mstore(0x59c0, addmod(mload(0x5920), mload(0x5980), f_q))
{
let result := mulmod(mload(0xc80), mload(0x4840), f_q)
mstore(23008, result)
}
mstore(0x5a00, mulmod(mload(0x59e0), mload(0x4be0), f_q))
mstore(0x5a20, mulmod(sub(f_q, mload(0x5a00)), mload(0x4fa0), f_q))
mstore(0x5a40, mulmod(1, mload(0x4fa0), f_q))
mstore(0x5a60, addmod(mload(0x59c0), mload(0x5a20), f_q))
{
let result := mulmod(mload(0xca0), mload(0x4840), f_q)
mstore(23168, result)
}
mstore(0x5aa0, mulmod(mload(0x5a80), mload(0x4be0), f_q))
mstore(0x5ac0, mulmod(sub(f_q, mload(0x5aa0)), mload(0x4fc0), f_q))
mstore(0x5ae0, mulmod(1, mload(0x4fc0), f_q))
mstore(0x5b00, addmod(mload(0x5a60), mload(0x5ac0), f_q))
{
let result := mulmod(mload(0xcc0), mload(0x4840), f_q)
mstore(23328, result)
}
mstore(0x5b40, mulmod(mload(0x5b20), mload(0x4be0), f_q))
mstore(0x5b60, mulmod(sub(f_q, mload(0x5b40)), mload(0x4fe0), f_q))
mstore(0x5b80, mulmod(1, mload(0x4fe0), f_q))
mstore(0x5ba0, addmod(mload(0x5b00), mload(0x5b60), f_q))
{
let result := mulmod(mload(0xce0), mload(0x4840), f_q)
mstore(23488, result)
}
mstore(0x5be0, mulmod(mload(0x5bc0), mload(0x4be0), f_q))
mstore(0x5c00, mulmod(sub(f_q, mload(0x5be0)), mload(0x5000), f_q))
mstore(0x5c20, mulmod(1, mload(0x5000), f_q))
mstore(0x5c40, addmod(mload(0x5ba0), mload(0x5c00), f_q))
{
let result := mulmod(mload(0xd00), mload(0x4840), f_q)
mstore(23648, result)
}
mstore(0x5c80, mulmod(mload(0x5c60), mload(0x4be0), f_q))
mstore(0x5ca0, mulmod(sub(f_q, mload(0x5c80)), mload(0x5020), f_q))
mstore(0x5cc0, mulmod(1, mload(0x5020), f_q))
mstore(0x5ce0, addmod(mload(0x5c40), mload(0x5ca0), f_q))
{
let result := mulmod(mload(0xd20), mload(0x4840), f_q)
mstore(23808, result)
}
mstore(0x5d20, mulmod(mload(0x5d00), mload(0x4be0), f_q))
mstore(0x5d40, mulmod(sub(f_q, mload(0x5d20)), mload(0x5040), f_q))
mstore(0x5d60, mulmod(1, mload(0x5040), f_q))
mstore(0x5d80, addmod(mload(0x5ce0), mload(0x5d40), f_q))
{
let result := mulmod(mload(0xd40), mload(0x4840), f_q)
mstore(23968, result)
}
mstore(0x5dc0, mulmod(mload(0x5da0), mload(0x4be0), f_q))
mstore(0x5de0, mulmod(sub(f_q, mload(0x5dc0)), mload(0x5060), f_q))
mstore(0x5e00, mulmod(1, mload(0x5060), f_q))
mstore(0x5e20, addmod(mload(0x5d80), mload(0x5de0), f_q))
{
let result := mulmod(mload(0xd60), mload(0x4840), f_q)
mstore(24128, result)
}
mstore(0x5e60, mulmod(mload(0x5e40), mload(0x4be0), f_q))
mstore(0x5e80, mulmod(sub(f_q, mload(0x5e60)), mload(0x5080), f_q))
mstore(0x5ea0, mulmod(1, mload(0x5080), f_q))
mstore(0x5ec0, addmod(mload(0x5e20), mload(0x5e80), f_q))
{
let result := mulmod(mload(0xd80), mload(0x4840), f_q)
mstore(24288, result)
}
mstore(0x5f00, mulmod(mload(0x5ee0), mload(0x4be0), f_q))
mstore(0x5f20, mulmod(sub(f_q, mload(0x5f00)), mload(0x50a0), f_q))
mstore(0x5f40, mulmod(1, mload(0x50a0), f_q))
mstore(0x5f60, addmod(mload(0x5ec0), mload(0x5f20), f_q))
{
let result := mulmod(mload(0xda0), mload(0x4840), f_q)
mstore(24448, result)
}
mstore(0x5fa0, mulmod(mload(0x5f80), mload(0x4be0), f_q))
mstore(0x5fc0, mulmod(sub(f_q, mload(0x5fa0)), mload(0x50c0), f_q))
mstore(0x5fe0, mulmod(1, mload(0x50c0), f_q))
mstore(0x6000, addmod(mload(0x5f60), mload(0x5fc0), f_q))
{
let result := mulmod(mload(0xdc0), mload(0x4840), f_q)
mstore(24608, result)
}
mstore(0x6040, mulmod(mload(0x6020), mload(0x4be0), f_q))
mstore(0x6060, mulmod(sub(f_q, mload(0x6040)), mload(0x50e0), f_q))
mstore(0x6080, mulmod(1, mload(0x50e0), f_q))
mstore(0x60a0, addmod(mload(0x6000), mload(0x6060), f_q))
{
let result := mulmod(mload(0xe00), mload(0x4840), f_q)
mstore(24768, result)
}
mstore(0x60e0, mulmod(mload(0x60c0), mload(0x4be0), f_q))
mstore(0x6100, mulmod(sub(f_q, mload(0x60e0)), mload(0x5100), f_q))
mstore(0x6120, mulmod(1, mload(0x5100), f_q))
mstore(0x6140, addmod(mload(0x60a0), mload(0x6100), f_q))
{
let result := mulmod(mload(0xe20), mload(0x4840), f_q)
mstore(24928, result)
}
mstore(0x6180, mulmod(mload(0x6160), mload(0x4be0), f_q))
mstore(0x61a0, mulmod(sub(f_q, mload(0x6180)), mload(0x5120), f_q))
mstore(0x61c0, mulmod(1, mload(0x5120), f_q))
mstore(0x61e0, addmod(mload(0x6140), mload(0x61a0), f_q))
{
let result := mulmod(mload(0xe40), mload(0x4840), f_q)
mstore(25088, result)
}
mstore(0x6220, mulmod(mload(0x6200), mload(0x4be0), f_q))
mstore(0x6240, mulmod(sub(f_q, mload(0x6220)), mload(0x5140), f_q))
mstore(0x6260, mulmod(1, mload(0x5140), f_q))
mstore(0x6280, addmod(mload(0x61e0), mload(0x6240), f_q))
{
let result := mulmod(mload(0xe60), mload(0x4840), f_q)
mstore(25248, result)
}
mstore(0x62c0, mulmod(mload(0x62a0), mload(0x4be0), f_q))
mstore(0x62e0, mulmod(sub(f_q, mload(0x62c0)), mload(0x5160), f_q))
mstore(0x6300, mulmod(1, mload(0x5160), f_q))
mstore(0x6320, addmod(mload(0x6280), mload(0x62e0), f_q))
{
let result := mulmod(mload(0xe80), mload(0x4840), f_q)
mstore(25408, result)
}
mstore(0x6360, mulmod(mload(0x6340), mload(0x4be0), f_q))
mstore(0x6380, mulmod(sub(f_q, mload(0x6360)), mload(0x5180), f_q))
mstore(0x63a0, mulmod(1, mload(0x5180), f_q))
mstore(0x63c0, addmod(mload(0x6320), mload(0x6380), f_q))
{
let result := mulmod(mload(0xea0), mload(0x4840), f_q)
mstore(25568, result)
}
mstore(0x6400, mulmod(mload(0x63e0), mload(0x4be0), f_q))
mstore(0x6420, mulmod(sub(f_q, mload(0x6400)), mload(0x51a0), f_q))
mstore(0x6440, mulmod(1, mload(0x51a0), f_q))
mstore(0x6460, addmod(mload(0x63c0), mload(0x6420), f_q))
{
let result := mulmod(mload(0xec0), mload(0x4840), f_q)
mstore(25728, result)
}
mstore(0x64a0, mulmod(mload(0x6480), mload(0x4be0), f_q))
mstore(0x64c0, mulmod(sub(f_q, mload(0x64a0)), mload(0x51c0), f_q))
mstore(0x64e0, mulmod(1, mload(0x51c0), f_q))
mstore(0x6500, addmod(mload(0x6460), mload(0x64c0), f_q))
{
let result := mulmod(mload(0x4700), mload(0x4840), f_q)
mstore(25888, result)
}
mstore(0x6540, mulmod(mload(0x6520), mload(0x4be0), f_q))
mstore(0x6560, mulmod(sub(f_q, mload(0x6540)), mload(0x51e0), f_q))
mstore(0x6580, mulmod(1, mload(0x51e0), f_q))
mstore(0x65a0, mulmod(mload(0x46a0), mload(0x51e0), f_q))
mstore(0x65c0, mulmod(mload(0x46c0), mload(0x51e0), f_q))
mstore(0x65e0, mulmod(mload(0x46e0), mload(0x51e0), f_q))
mstore(0x6600, addmod(mload(0x6500), mload(0x6560), f_q))
{
let result := mulmod(mload(0xde0), mload(0x4840), f_q)
mstore(26144, result)
}
mstore(0x6640, mulmod(mload(0x6620), mload(0x4be0), f_q))
mstore(0x6660, mulmod(sub(f_q, mload(0x6640)), mload(0x5200), f_q))
mstore(0x6680, mulmod(1, mload(0x5200), f_q))
mstore(0x66a0, addmod(mload(0x6600), mload(0x6660), f_q))
mstore(0x66c0, mulmod(mload(0x66a0), 1, f_q))
mstore(0x66e0, mulmod(mload(0x5360), 1, f_q))
mstore(0x6700, mulmod(mload(0x5400), 1, f_q))
mstore(0x6720, mulmod(mload(0x54a0), 1, f_q))
mstore(0x6740, mulmod(mload(0x5540), 1, f_q))
mstore(0x6760, mulmod(mload(0x55e0), 1, f_q))
mstore(0x6780, mulmod(mload(0x5680), 1, f_q))
mstore(0x67a0, mulmod(mload(0x5720), 1, f_q))
mstore(0x67c0, mulmod(mload(0x57c0), 1, f_q))
mstore(0x67e0, mulmod(mload(0x5860), 1, f_q))
mstore(0x6800, mulmod(mload(0x5900), 1, f_q))
mstore(0x6820, mulmod(mload(0x59a0), 1, f_q))
mstore(0x6840, mulmod(mload(0x5a40), 1, f_q))
mstore(0x6860, mulmod(mload(0x5ae0), 1, f_q))
mstore(0x6880, mulmod(mload(0x5b80), 1, f_q))
mstore(0x68a0, mulmod(mload(0x5c20), 1, f_q))
mstore(0x68c0, mulmod(mload(0x5cc0), 1, f_q))
mstore(0x68e0, mulmod(mload(0x5d60), 1, f_q))
mstore(0x6900, mulmod(mload(0x5e00), 1, f_q))
mstore(0x6920, mulmod(mload(0x5ea0), 1, f_q))
mstore(0x6940, mulmod(mload(0x5f40), 1, f_q))
mstore(0x6960, mulmod(mload(0x5fe0), 1, f_q))
mstore(0x6980, mulmod(mload(0x6080), 1, f_q))
mstore(0x69a0, mulmod(mload(0x6120), 1, f_q))
mstore(0x69c0, mulmod(mload(0x61c0), 1, f_q))
mstore(0x69e0, mulmod(mload(0x6260), 1, f_q))
mstore(0x6a00, mulmod(mload(0x6300), 1, f_q))
mstore(0x6a20, mulmod(mload(0x63a0), 1, f_q))
mstore(0x6a40, mulmod(mload(0x6440), 1, f_q))
mstore(0x6a60, mulmod(mload(0x64e0), 1, f_q))
mstore(0x6a80, mulmod(mload(0x6580), 1, f_q))
mstore(0x6aa0, mulmod(mload(0x65a0), 1, f_q))
mstore(0x6ac0, mulmod(mload(0x65c0), 1, f_q))
mstore(0x6ae0, mulmod(mload(0x65e0), 1, f_q))
mstore(0x6b00, mulmod(mload(0x6680), 1, f_q))
mstore(0x6b20, mulmod(1, mload(0x4c00), f_q))
{
let result := mulmod(mload(0xbe0), mload(0x4880), f_q)
result := addmod(mulmod(mload(0xc00), mload(0x48a0), f_q), result, f_q)
mstore(27456, result)
}
mstore(0x6b60, mulmod(mload(0x6b40), mload(0x4e00), f_q))
mstore(0x6b80, mulmod(sub(f_q, mload(0x6b60)), 1, f_q))
mstore(0x6ba0, mulmod(mload(0x6b20), 1, f_q))
{
let result := mulmod(mload(0xfa0), mload(0x4880), f_q)
result := addmod(mulmod(mload(0xfc0), mload(0x48a0), f_q), result, f_q)
mstore(27584, result)
}
mstore(0x6be0, mulmod(mload(0x6bc0), mload(0x4e00), f_q))
mstore(0x6c00, mulmod(sub(f_q, mload(0x6be0)), mload(0x1320), f_q))
mstore(0x6c20, mulmod(mload(0x6b20), mload(0x1320), f_q))
mstore(0x6c40, addmod(mload(0x6b80), mload(0x6c00), f_q))
{
let result := mulmod(mload(0xfe0), mload(0x4880), f_q)
result := addmod(mulmod(mload(0x1000), mload(0x48a0), f_q), result, f_q)
mstore(27744, result)
}
mstore(0x6c80, mulmod(mload(0x6c60), mload(0x4e00), f_q))
mstore(0x6ca0, mulmod(sub(f_q, mload(0x6c80)), mload(0x4e60), f_q))
mstore(0x6cc0, mulmod(mload(0x6b20), mload(0x4e60), f_q))
mstore(0x6ce0, addmod(mload(0x6c40), mload(0x6ca0), f_q))
{
let result := mulmod(mload(0x1080), mload(0x4880), f_q)
result := addmod(mulmod(mload(0x10a0), mload(0x48a0), f_q), result, f_q)
mstore(27904, result)
}
mstore(0x6d20, mulmod(mload(0x6d00), mload(0x4e00), f_q))
mstore(0x6d40, mulmod(sub(f_q, mload(0x6d20)), mload(0x4e80), f_q))
mstore(0x6d60, mulmod(mload(0x6b20), mload(0x4e80), f_q))
mstore(0x6d80, addmod(mload(0x6ce0), mload(0x6d40), f_q))
{
let result := mulmod(mload(0x1120), mload(0x4880), f_q)
result := addmod(mulmod(mload(0x1140), mload(0x48a0), f_q), result, f_q)
mstore(28064, result)
}
mstore(0x6dc0, mulmod(mload(0x6da0), mload(0x4e00), f_q))
mstore(0x6de0, mulmod(sub(f_q, mload(0x6dc0)), mload(0x4ea0), f_q))
mstore(0x6e00, mulmod(mload(0x6b20), mload(0x4ea0), f_q))
mstore(0x6e20, addmod(mload(0x6d80), mload(0x6de0), f_q))
{
let result := mulmod(mload(0x11c0), mload(0x4880), f_q)
result := addmod(mulmod(mload(0x11e0), mload(0x48a0), f_q), result, f_q)
mstore(28224, result)
}
mstore(0x6e60, mulmod(mload(0x6e40), mload(0x4e00), f_q))
mstore(0x6e80, mulmod(sub(f_q, mload(0x6e60)), mload(0x4ec0), f_q))
mstore(0x6ea0, mulmod(mload(0x6b20), mload(0x4ec0), f_q))
mstore(0x6ec0, addmod(mload(0x6e20), mload(0x6e80), f_q))
{
let result := mulmod(mload(0x1260), mload(0x4880), f_q)
result := addmod(mulmod(mload(0x1280), mload(0x48a0), f_q), result, f_q)
mstore(28384, result)
}
mstore(0x6f00, mulmod(mload(0x6ee0), mload(0x4e00), f_q))
mstore(0x6f20, mulmod(sub(f_q, mload(0x6f00)), mload(0x4ee0), f_q))
mstore(0x6f40, mulmod(mload(0x6b20), mload(0x4ee0), f_q))
mstore(0x6f60, addmod(mload(0x6ec0), mload(0x6f20), f_q))
mstore(0x6f80, mulmod(mload(0x6f60), mload(0x1380), f_q))
mstore(0x6fa0, mulmod(mload(0x6ba0), mload(0x1380), f_q))
mstore(0x6fc0, mulmod(mload(0x6c20), mload(0x1380), f_q))
mstore(0x6fe0, mulmod(mload(0x6cc0), mload(0x1380), f_q))
mstore(0x7000, mulmod(mload(0x6d60), mload(0x1380), f_q))
mstore(0x7020, mulmod(mload(0x6e00), mload(0x1380), f_q))
mstore(0x7040, mulmod(mload(0x6ea0), mload(0x1380), f_q))
mstore(0x7060, mulmod(mload(0x6f40), mload(0x1380), f_q))
mstore(0x7080, addmod(mload(0x66c0), mload(0x6f80), f_q))
mstore(0x70a0, mulmod(1, mload(0x4c40), f_q))
{
let result := mulmod(mload(0xee0), mload(0x48e0), f_q)
result := addmod(mulmod(mload(0xf00), mload(0x4900), f_q), result, f_q)
result := addmod(mulmod(mload(0xf20), mload(0x4920), f_q), result, f_q)
mstore(28864, result)
}
mstore(0x70e0, mulmod(mload(0x70c0), mload(0x4e20), f_q))
mstore(0x7100, mulmod(sub(f_q, mload(0x70e0)), 1, f_q))
mstore(0x7120, mulmod(mload(0x70a0), 1, f_q))
{
let result := mulmod(mload(0xf40), mload(0x48e0), f_q)
result := addmod(mulmod(mload(0xf60), mload(0x4900), f_q), result, f_q)
result := addmod(mulmod(mload(0xf80), mload(0x4920), f_q), result, f_q)
mstore(28992, result)
}
mstore(0x7160, mulmod(mload(0x7140), mload(0x4e20), f_q))
mstore(0x7180, mulmod(sub(f_q, mload(0x7160)), mload(0x1320), f_q))
mstore(0x71a0, mulmod(mload(0x70a0), mload(0x1320), f_q))
mstore(0x71c0, addmod(mload(0x7100), mload(0x7180), f_q))
mstore(0x71e0, mulmod(mload(0x71c0), mload(0x5240), f_q))
mstore(0x7200, mulmod(mload(0x7120), mload(0x5240), f_q))
mstore(0x7220, mulmod(mload(0x71a0), mload(0x5240), f_q))
mstore(0x7240, addmod(mload(0x7080), mload(0x71e0), f_q))
mstore(0x7260, mulmod(1, mload(0x4c80), f_q))
{
let result := mulmod(mload(0x1020), mload(0x4960), f_q)
result := addmod(mulmod(mload(0x1040), mload(0x4980), f_q), result, f_q)
mstore(29312, result)
}
mstore(0x72a0, mulmod(mload(0x7280), mload(0x4e40), f_q))
mstore(0x72c0, mulmod(sub(f_q, mload(0x72a0)), 1, f_q))
mstore(0x72e0, mulmod(mload(0x7260), 1, f_q))
{
let result := mulmod(mload(0x10c0), mload(0x4960), f_q)
result := addmod(mulmod(mload(0x10e0), mload(0x4980), f_q), result, f_q)
mstore(29440, result)
}
mstore(0x7320, mulmod(mload(0x7300), mload(0x4e40), f_q))
mstore(0x7340, mulmod(sub(f_q, mload(0x7320)), mload(0x1320), f_q))
mstore(0x7360, mulmod(mload(0x7260), mload(0x1320), f_q))
mstore(0x7380, addmod(mload(0x72c0), mload(0x7340), f_q))
{
let result := mulmod(mload(0x1160), mload(0x4960), f_q)
result := addmod(mulmod(mload(0x1180), mload(0x4980), f_q), result, f_q)
mstore(29600, result)
}
mstore(0x73c0, mulmod(mload(0x73a0), mload(0x4e40), f_q))
mstore(0x73e0, mulmod(sub(f_q, mload(0x73c0)), mload(0x4e60), f_q))
mstore(0x7400, mulmod(mload(0x7260), mload(0x4e60), f_q))
mstore(0x7420, addmod(mload(0x7380), mload(0x73e0), f_q))
{
let result := mulmod(mload(0x1200), mload(0x4960), f_q)
result := addmod(mulmod(mload(0x1220), mload(0x4980), f_q), result, f_q)
mstore(29760, result)
}
mstore(0x7460, mulmod(mload(0x7440), mload(0x4e40), f_q))
mstore(0x7480, mulmod(sub(f_q, mload(0x7460)), mload(0x4e80), f_q))
mstore(0x74a0, mulmod(mload(0x7260), mload(0x4e80), f_q))
mstore(0x74c0, addmod(mload(0x7420), mload(0x7480), f_q))
{
let result := mulmod(mload(0x12a0), mload(0x4960), f_q)
result := addmod(mulmod(mload(0x12c0), mload(0x4980), f_q), result, f_q)
mstore(29920, result)
}
mstore(0x7500, mulmod(mload(0x74e0), mload(0x4e40), f_q))
mstore(0x7520, mulmod(sub(f_q, mload(0x7500)), mload(0x4ea0), f_q))
mstore(0x7540, mulmod(mload(0x7260), mload(0x4ea0), f_q))
mstore(0x7560, addmod(mload(0x74c0), mload(0x7520), f_q))
mstore(0x7580, mulmod(mload(0x7560), mload(0x5260), f_q))
mstore(0x75a0, mulmod(mload(0x72e0), mload(0x5260), f_q))
mstore(0x75c0, mulmod(mload(0x7360), mload(0x5260), f_q))
mstore(0x75e0, mulmod(mload(0x7400), mload(0x5260), f_q))
mstore(0x7600, mulmod(mload(0x74a0), mload(0x5260), f_q))
mstore(0x7620, mulmod(mload(0x7540), mload(0x5260), f_q))
mstore(0x7640, addmod(mload(0x7240), mload(0x7580), f_q))
mstore(0x7660, mulmod(1, mload(0x4860), f_q))
mstore(0x7680, mulmod(1, mload(0x1420), f_q))
mstore(0x76a0, 0x0000000000000000000000000000000000000000000000000000000000000001)
mstore(0x76c0, 0x0000000000000000000000000000000000000000000000000000000000000002)
mstore(0x76e0, mload(0x7640))
success := and(eq(staticcall(gas(), 0x7, 0x76a0, 0x60, 0x76a0, 0x40), 1), success)
mstore(0x7700, mload(0x76a0))
mstore(0x7720, mload(0x76c0))
mstore(0x7740, mload(0x280))
mstore(0x7760, mload(0x2a0))
success := and(eq(staticcall(gas(), 0x6, 0x7700, 0x80, 0x7700, 0x40), 1), success)
mstore(0x7780, mload(0x2c0))
mstore(0x77a0, mload(0x2e0))
mstore(0x77c0, mload(0x66e0))
success := and(eq(staticcall(gas(), 0x7, 0x7780, 0x60, 0x7780, 0x40), 1), success)
mstore(0x77e0, mload(0x7700))
mstore(0x7800, mload(0x7720))
mstore(0x7820, mload(0x7780))
mstore(0x7840, mload(0x77a0))
success := and(eq(staticcall(gas(), 0x6, 0x77e0, 0x80, 0x77e0, 0x40), 1), success)
mstore(0x7860, mload(0x300))
mstore(0x7880, mload(0x320))
mstore(0x78a0, mload(0x6700))
success := and(eq(staticcall(gas(), 0x7, 0x7860, 0x60, 0x7860, 0x40), 1), success)
mstore(0x78c0, mload(0x77e0))
mstore(0x78e0, mload(0x7800))
mstore(0x7900, mload(0x7860))
mstore(0x7920, mload(0x7880))
success := and(eq(staticcall(gas(), 0x6, 0x78c0, 0x80, 0x78c0, 0x40), 1), success)
mstore(0x7940, mload(0x340))
mstore(0x7960, mload(0x360))
mstore(0x7980, mload(0x6720))
success := and(eq(staticcall(gas(), 0x7, 0x7940, 0x60, 0x7940, 0x40), 1), success)
mstore(0x79a0, mload(0x78c0))
mstore(0x79c0, mload(0x78e0))
mstore(0x79e0, mload(0x7940))
mstore(0x7a00, mload(0x7960))
success := and(eq(staticcall(gas(), 0x6, 0x79a0, 0x80, 0x79a0, 0x40), 1), success)
mstore(0x7a20, mload(0x460))
mstore(0x7a40, mload(0x480))
mstore(0x7a60, mload(0x6740))
success := and(eq(staticcall(gas(), 0x7, 0x7a20, 0x60, 0x7a20, 0x40), 1), success)
mstore(0x7a80, mload(0x79a0))
mstore(0x7aa0, mload(0x79c0))
mstore(0x7ac0, mload(0x7a20))
mstore(0x7ae0, mload(0x7a40))
success := and(eq(staticcall(gas(), 0x6, 0x7a80, 0x80, 0x7a80, 0x40), 1), success)
mstore(0x7b00, mload(0x4e0))
mstore(0x7b20, mload(0x500))
mstore(0x7b40, mload(0x6760))
success := and(eq(staticcall(gas(), 0x7, 0x7b00, 0x60, 0x7b00, 0x40), 1), success)
mstore(0x7b60, mload(0x7a80))
mstore(0x7b80, mload(0x7aa0))
mstore(0x7ba0, mload(0x7b00))
mstore(0x7bc0, mload(0x7b20))
success := and(eq(staticcall(gas(), 0x6, 0x7b60, 0x80, 0x7b60, 0x40), 1), success)
mstore(0x7be0, mload(0x560))
mstore(0x7c00, mload(0x580))
mstore(0x7c20, mload(0x6780))
success := and(eq(staticcall(gas(), 0x7, 0x7be0, 0x60, 0x7be0, 0x40), 1), success)
mstore(0x7c40, mload(0x7b60))
mstore(0x7c60, mload(0x7b80))
mstore(0x7c80, mload(0x7be0))
mstore(0x7ca0, mload(0x7c00))
success := and(eq(staticcall(gas(), 0x6, 0x7c40, 0x80, 0x7c40, 0x40), 1), success)
mstore(0x7cc0, mload(0x5e0))
mstore(0x7ce0, mload(0x600))
mstore(0x7d00, mload(0x67a0))
success := and(eq(staticcall(gas(), 0x7, 0x7cc0, 0x60, 0x7cc0, 0x40), 1), success)
mstore(0x7d20, mload(0x7c40))
mstore(0x7d40, mload(0x7c60))
mstore(0x7d60, mload(0x7cc0))
mstore(0x7d80, mload(0x7ce0))
success := and(eq(staticcall(gas(), 0x6, 0x7d20, 0x80, 0x7d20, 0x40), 1), success)
mstore(0x7da0, mload(0x660))
mstore(0x7dc0, mload(0x680))
mstore(0x7de0, mload(0x67c0))
success := and(eq(staticcall(gas(), 0x7, 0x7da0, 0x60, 0x7da0, 0x40), 1), success)
mstore(0x7e00, mload(0x7d20))
mstore(0x7e20, mload(0x7d40))
mstore(0x7e40, mload(0x7da0))
mstore(0x7e60, mload(0x7dc0))
success := and(eq(staticcall(gas(), 0x6, 0x7e00, 0x80, 0x7e00, 0x40), 1), success)
mstore(0x7e80, 0x0f9486700c2ec174467701d2ce11865c1c3eac7e3dc4f4546329e0c429bfaf55)
mstore(0x7ea0, 0x17b53a417b56bc95371952f44c9c7089a6c6464d686304899dfd7556af78778b)
mstore(0x7ec0, mload(0x67e0))
success := and(eq(staticcall(gas(), 0x7, 0x7e80, 0x60, 0x7e80, 0x40), 1), success)
mstore(0x7ee0, mload(0x7e00))
mstore(0x7f00, mload(0x7e20))
mstore(0x7f20, mload(0x7e80))
mstore(0x7f40, mload(0x7ea0))
success := and(eq(staticcall(gas(), 0x6, 0x7ee0, 0x80, 0x7ee0, 0x40), 1), success)
mstore(0x7f60, 0x1a74d9fc8c2ae14fb725e22e90e942d04d40e10c7511df2dcf38ac6c0626d1e5)
mstore(0x7f80, 0x27623aa041272b12ca69b8a7b44d312734b3a05767d564e764ad6bebdef39064)
mstore(0x7fa0, mload(0x6800))
success := and(eq(staticcall(gas(), 0x7, 0x7f60, 0x60, 0x7f60, 0x40), 1), success)
mstore(0x7fc0, mload(0x7ee0))
mstore(0x7fe0, mload(0x7f00))
mstore(0x8000, mload(0x7f60))
mstore(0x8020, mload(0x7f80))
success := and(eq(staticcall(gas(), 0x6, 0x7fc0, 0x80, 0x7fc0, 0x40), 1), success)
mstore(0x8040, 0x1787a2ebce3b5dcb596871a401258806a1e974b6279b359dbb890fbeab4aa737)
mstore(0x8060, 0x15adc21ed9a5d8063b2b29834b9c0dc66f5be4958bd1bcd66dfbbf03ce993343)
mstore(0x8080, mload(0x6820))
success := and(eq(staticcall(gas(), 0x7, 0x8040, 0x60, 0x8040, 0x40), 1), success)
mstore(0x80a0, mload(0x7fc0))
mstore(0x80c0, mload(0x7fe0))
mstore(0x80e0, mload(0x8040))
mstore(0x8100, mload(0x8060))
success := and(eq(staticcall(gas(), 0x6, 0x80a0, 0x80, 0x80a0, 0x40), 1), success)
mstore(0x8120, 0x1bbeae43cc036011e6bd9459d5061982660c3f5338922757a11e1b3470801d80)
mstore(0x8140, 0x0b1e6641fcd872f4437497917361bbdd703b02bfeba85377a14d3b97d397d2e4)
mstore(0x8160, mload(0x6840))
success := and(eq(staticcall(gas(), 0x7, 0x8120, 0x60, 0x8120, 0x40), 1), success)
mstore(0x8180, mload(0x80a0))
mstore(0x81a0, mload(0x80c0))
mstore(0x81c0, mload(0x8120))
mstore(0x81e0, mload(0x8140))
success := and(eq(staticcall(gas(), 0x6, 0x8180, 0x80, 0x8180, 0x40), 1), success)
mstore(0x8200, 0x221a094874fa0ffef4b4dabf0810968b5f2830faa4878f502aba3cf776b09ad7)
mstore(0x8220, 0x1dcf470c45d9f7b96d7913cdcd5ac7940c543aa84d8aee0dc16a429e896b4270)
mstore(0x8240, mload(0x6860))
success := and(eq(staticcall(gas(), 0x7, 0x8200, 0x60, 0x8200, 0x40), 1), success)
mstore(0x8260, mload(0x8180))
mstore(0x8280, mload(0x81a0))
mstore(0x82a0, mload(0x8200))
mstore(0x82c0, mload(0x8220))
success := and(eq(staticcall(gas(), 0x6, 0x8260, 0x80, 0x8260, 0x40), 1), success)
mstore(0x82e0, 0x2af8d95bb2bddf0f6c8d67e69d0a216bb511fa20b941af4f3c294df0a383f1ca)
mstore(0x8300, 0x1c3e805e4cfbe7d77fbd58f62f4a6d8f1da3aff05d7dd5e6b78c9d1bf95a34d8)
mstore(0x8320, mload(0x6880))
success := and(eq(staticcall(gas(), 0x7, 0x82e0, 0x60, 0x82e0, 0x40), 1), success)
mstore(0x8340, mload(0x8260))
mstore(0x8360, mload(0x8280))
mstore(0x8380, mload(0x82e0))
mstore(0x83a0, mload(0x8300))
success := and(eq(staticcall(gas(), 0x6, 0x8340, 0x80, 0x8340, 0x40), 1), success)
mstore(0x83c0, 0x013ba055e83ef990dcde9b74ba5f550f2ce52ec9e2808c02ecd4d2d4183e6e34)
mstore(0x83e0, 0x203567a99f26086afc23c40d1a913279b723bfec1f3341975de2b47f8fabc68c)
mstore(0x8400, mload(0x68a0))
success := and(eq(staticcall(gas(), 0x7, 0x83c0, 0x60, 0x83c0, 0x40), 1), success)
mstore(0x8420, mload(0x8340))
mstore(0x8440, mload(0x8360))
mstore(0x8460, mload(0x83c0))
mstore(0x8480, mload(0x83e0))
success := and(eq(staticcall(gas(), 0x6, 0x8420, 0x80, 0x8420, 0x40), 1), success)
mstore(0x84a0, 0x2d6fcfe744f77954b1ba9662678ac943ab00292e9f79e65306cf1ceb039d9934)
mstore(0x84c0, 0x1bd7163bac195b3a228fcffda10857c29d2f0c9cbd648e4618e54be3d70913ca)
mstore(0x84e0, mload(0x68c0))
success := and(eq(staticcall(gas(), 0x7, 0x84a0, 0x60, 0x84a0, 0x40), 1), success)
mstore(0x8500, mload(0x8420))
mstore(0x8520, mload(0x8440))
mstore(0x8540, mload(0x84a0))
mstore(0x8560, mload(0x84c0))
success := and(eq(staticcall(gas(), 0x6, 0x8500, 0x80, 0x8500, 0x40), 1), success)
mstore(0x8580, 0x304a06d6be3715cf31e72e55c2edcc7a61bfbde6a9479a8662740cb4d480ed8d)
mstore(0x85a0, 0x057b91e15fbb5f6adc0ed375821e3988d8e38c9f2720c4759b51a74da460efa6)
mstore(0x85c0, mload(0x68e0))
success := and(eq(staticcall(gas(), 0x7, 0x8580, 0x60, 0x8580, 0x40), 1), success)
mstore(0x85e0, mload(0x8500))
mstore(0x8600, mload(0x8520))
mstore(0x8620, mload(0x8580))
mstore(0x8640, mload(0x85a0))
success := and(eq(staticcall(gas(), 0x6, 0x85e0, 0x80, 0x85e0, 0x40), 1), success)
mstore(0x8660, 0x0f5a131236240e4a97151ec25b81d9cb724e059145dc61ccfbd085fe492cdc0a)
mstore(0x8680, 0x08bf528a8a28938808fa9b71ca335344d2040212abef9d68cfd084539187d98c)
mstore(0x86a0, mload(0x6900))
success := and(eq(staticcall(gas(), 0x7, 0x8660, 0x60, 0x8660, 0x40), 1), success)
mstore(0x86c0, mload(0x85e0))
mstore(0x86e0, mload(0x8600))
mstore(0x8700, mload(0x8660))
mstore(0x8720, mload(0x8680))
success := and(eq(staticcall(gas(), 0x6, 0x86c0, 0x80, 0x86c0, 0x40), 1), success)
mstore(0x8740, 0x04e5e933c6e628fec30f669985ec414c42491b69a273ed158ea8bb9ad12ff6bd)
mstore(0x8760, 0x1d7232394b3f71a041aa2ea76a2eafef946c56584edb44f59cde29f0751cc2ad)
mstore(0x8780, mload(0x6920))
success := and(eq(staticcall(gas(), 0x7, 0x8740, 0x60, 0x8740, 0x40), 1), success)
mstore(0x87a0, mload(0x86c0))
mstore(0x87c0, mload(0x86e0))
mstore(0x87e0, mload(0x8740))
mstore(0x8800, mload(0x8760))
success := and(eq(staticcall(gas(), 0x6, 0x87a0, 0x80, 0x87a0, 0x40), 1), success)
mstore(0x8820, 0x0292e62486a4c069ec86719b7e842723bcf75b29950a578baa5d32283596445d)
mstore(0x8840, 0x2f61b7d5332207a2b8424293c5e176ccf6bc8575c81ef9a77b824ea109cc1955)
mstore(0x8860, mload(0x6940))
success := and(eq(staticcall(gas(), 0x7, 0x8820, 0x60, 0x8820, 0x40), 1), success)
mstore(0x8880, mload(0x87a0))
mstore(0x88a0, mload(0x87c0))
mstore(0x88c0, mload(0x8820))
mstore(0x88e0, mload(0x8840))
success := and(eq(staticcall(gas(), 0x6, 0x8880, 0x80, 0x8880, 0x40), 1), success)
mstore(0x8900, 0x12d789f32f44f7c07f708ded6613f260a7fa1c3e150ea03a80a538fdb867fbeb)
mstore(0x8920, 0x255c5fa3e08909c09b6f3c15cb3f40c9139a9aab3d1fe8f110352711af49ffd6)
mstore(0x8940, mload(0x6960))
success := and(eq(staticcall(gas(), 0x7, 0x8900, 0x60, 0x8900, 0x40), 1), success)
mstore(0x8960, mload(0x8880))
mstore(0x8980, mload(0x88a0))
mstore(0x89a0, mload(0x8900))
mstore(0x89c0, mload(0x8920))
success := and(eq(staticcall(gas(), 0x6, 0x8960, 0x80, 0x8960, 0x40), 1), success)
mstore(0x89e0, 0x28d776b0de06d8bed4226c002c3542e867116c2c8d0641a668cc07f47f83bce9)
mstore(0x8a00, 0x2a009e37a8a21936b510ea3e33fb94234221781127d585bbfb2b3bb7c9b3429c)
mstore(0x8a20, mload(0x6980))
success := and(eq(staticcall(gas(), 0x7, 0x89e0, 0x60, 0x89e0, 0x40), 1), success)
mstore(0x8a40, mload(0x8960))
mstore(0x8a60, mload(0x8980))
mstore(0x8a80, mload(0x89e0))
mstore(0x8aa0, mload(0x8a00))
success := and(eq(staticcall(gas(), 0x6, 0x8a40, 0x80, 0x8a40, 0x40), 1), success)
mstore(0x8ac0, 0x1d6b2612ad1798d4df207fa82f7a6825a2e6c381ddc70357754afd9105f2bc33)
mstore(0x8ae0, 0x2ca7d3b673e233dcf5e7c9daee570c3ee0513817ffcd48e4bd640869c2b7a395)
mstore(0x8b00, mload(0x69a0))
success := and(eq(staticcall(gas(), 0x7, 0x8ac0, 0x60, 0x8ac0, 0x40), 1), success)
mstore(0x8b20, mload(0x8a40))
mstore(0x8b40, mload(0x8a60))
mstore(0x8b60, mload(0x8ac0))
mstore(0x8b80, mload(0x8ae0))
success := and(eq(staticcall(gas(), 0x6, 0x8b20, 0x80, 0x8b20, 0x40), 1), success)
mstore(0x8ba0, 0x24984c5c821dcab5afabcc1a85825509f154025795c527f396e99a40a578ef81)
mstore(0x8bc0, 0x192158a52c4ac6a6b638e7eff28b1c12eb4941bb8cab3e2beccb451352e9f031)
mstore(0x8be0, mload(0x69c0))
success := and(eq(staticcall(gas(), 0x7, 0x8ba0, 0x60, 0x8ba0, 0x40), 1), success)
mstore(0x8c00, mload(0x8b20))
mstore(0x8c20, mload(0x8b40))
mstore(0x8c40, mload(0x8ba0))
mstore(0x8c60, mload(0x8bc0))
success := and(eq(staticcall(gas(), 0x6, 0x8c00, 0x80, 0x8c00, 0x40), 1), success)
mstore(0x8c80, 0x14c08d2536cdc2ae3af8e660a3751eb08f21ba12b16befaee45a302e9f980e09)
mstore(0x8ca0, 0x29d5c6270c6b2aa906cd5ebb8a81bebc71e2a35ea36dd3250ff5d2224c1f9ca4)
mstore(0x8cc0, mload(0x69e0))
success := and(eq(staticcall(gas(), 0x7, 0x8c80, 0x60, 0x8c80, 0x40), 1), success)
mstore(0x8ce0, mload(0x8c00))
mstore(0x8d00, mload(0x8c20))
mstore(0x8d20, mload(0x8c80))
mstore(0x8d40, mload(0x8ca0))
success := and(eq(staticcall(gas(), 0x6, 0x8ce0, 0x80, 0x8ce0, 0x40), 1), success)
mstore(0x8d60, 0x1ab9637a7fedfe6e54ddbf4793a9099961ca565205f6c725b9300e47ddddb1ab)
mstore(0x8d80, 0x2f6451b1a73f7d3dcf89f7f44e6a0be4c90343a6619c070ea031765404400476)
mstore(0x8da0, mload(0x6a00))
success := and(eq(staticcall(gas(), 0x7, 0x8d60, 0x60, 0x8d60, 0x40), 1), success)
mstore(0x8dc0, mload(0x8ce0))
mstore(0x8de0, mload(0x8d00))
mstore(0x8e00, mload(0x8d60))
mstore(0x8e20, mload(0x8d80))
success := and(eq(staticcall(gas(), 0x6, 0x8dc0, 0x80, 0x8dc0, 0x40), 1), success)
mstore(0x8e40, 0x2ec1e775a8fea6f6d6d61a653cd1c5c44ddcc7b311e5c82d755e45f3e1d20755)
mstore(0x8e60, 0x283e00e5319aa7fa758e2498f250325a8c3c48292cbb815913da5ac8c80a8c47)
mstore(0x8e80, mload(0x6a20))
success := and(eq(staticcall(gas(), 0x7, 0x8e40, 0x60, 0x8e40, 0x40), 1), success)
mstore(0x8ea0, mload(0x8dc0))
mstore(0x8ec0, mload(0x8de0))
mstore(0x8ee0, mload(0x8e40))
mstore(0x8f00, mload(0x8e60))
success := and(eq(staticcall(gas(), 0x6, 0x8ea0, 0x80, 0x8ea0, 0x40), 1), success)
mstore(0x8f20, 0x1339d2a8bec26a6c4f14db9daa009535653563fb482fb16f7d9e841f10a4be21)
mstore(0x8f40, 0x0d55974c1db98eafdfba49ea8e6f504ad1774fb0a20d23d66a9a1c590c05b120)
mstore(0x8f60, mload(0x6a40))
success := and(eq(staticcall(gas(), 0x7, 0x8f20, 0x60, 0x8f20, 0x40), 1), success)
mstore(0x8f80, mload(0x8ea0))
mstore(0x8fa0, mload(0x8ec0))
mstore(0x8fc0, mload(0x8f20))
mstore(0x8fe0, mload(0x8f40))
success := and(eq(staticcall(gas(), 0x6, 0x8f80, 0x80, 0x8f80, 0x40), 1), success)
mstore(0x9000, 0x0b2c4d4d42146e245bc97f74e68b24027b41221f6ab96514a94d3a96d21ce942)
mstore(0x9020, 0x2446275d31a06bee659dd415ce25273386a3b04381367fb46318df43689d2ad9)
mstore(0x9040, mload(0x6a60))
success := and(eq(staticcall(gas(), 0x7, 0x9000, 0x60, 0x9000, 0x40), 1), success)
mstore(0x9060, mload(0x8f80))
mstore(0x9080, mload(0x8fa0))
mstore(0x90a0, mload(0x9000))
mstore(0x90c0, mload(0x9020))
success := and(eq(staticcall(gas(), 0x6, 0x9060, 0x80, 0x9060, 0x40), 1), success)
mstore(0x90e0, mload(0xa00))
mstore(0x9100, mload(0xa20))
mstore(0x9120, mload(0x6a80))
success := and(eq(staticcall(gas(), 0x7, 0x90e0, 0x60, 0x90e0, 0x40), 1), success)
mstore(0x9140, mload(0x9060))
mstore(0x9160, mload(0x9080))
mstore(0x9180, mload(0x90e0))
mstore(0x91a0, mload(0x9100))
success := and(eq(staticcall(gas(), 0x6, 0x9140, 0x80, 0x9140, 0x40), 1), success)
mstore(0x91c0, mload(0xa40))
mstore(0x91e0, mload(0xa60))
mstore(0x9200, mload(0x6aa0))
success := and(eq(staticcall(gas(), 0x7, 0x91c0, 0x60, 0x91c0, 0x40), 1), success)
mstore(0x9220, mload(0x9140))
mstore(0x9240, mload(0x9160))
mstore(0x9260, mload(0x91c0))
mstore(0x9280, mload(0x91e0))
success := and(eq(staticcall(gas(), 0x6, 0x9220, 0x80, 0x9220, 0x40), 1), success)
mstore(0x92a0, mload(0xa80))
mstore(0x92c0, mload(0xaa0))
mstore(0x92e0, mload(0x6ac0))
success := and(eq(staticcall(gas(), 0x7, 0x92a0, 0x60, 0x92a0, 0x40), 1), success)
mstore(0x9300, mload(0x9220))
mstore(0x9320, mload(0x9240))
mstore(0x9340, mload(0x92a0))
mstore(0x9360, mload(0x92c0))
success := and(eq(staticcall(gas(), 0x6, 0x9300, 0x80, 0x9300, 0x40), 1), success)
mstore(0x9380, mload(0xac0))
mstore(0x93a0, mload(0xae0))
mstore(0x93c0, mload(0x6ae0))
success := and(eq(staticcall(gas(), 0x7, 0x9380, 0x60, 0x9380, 0x40), 1), success)
mstore(0x93e0, mload(0x9300))
mstore(0x9400, mload(0x9320))
mstore(0x9420, mload(0x9380))
mstore(0x9440, mload(0x93a0))
success := and(eq(staticcall(gas(), 0x6, 0x93e0, 0x80, 0x93e0, 0x40), 1), success)
mstore(0x9460, mload(0x960))
mstore(0x9480, mload(0x980))
mstore(0x94a0, mload(0x6b00))
success := and(eq(staticcall(gas(), 0x7, 0x9460, 0x60, 0x9460, 0x40), 1), success)
mstore(0x94c0, mload(0x93e0))
mstore(0x94e0, mload(0x9400))
mstore(0x9500, mload(0x9460))
mstore(0x9520, mload(0x9480))
success := and(eq(staticcall(gas(), 0x6, 0x94c0, 0x80, 0x94c0, 0x40), 1), success)
mstore(0x9540, mload(0x380))
mstore(0x9560, mload(0x3a0))
mstore(0x9580, mload(0x6fa0))
success := and(eq(staticcall(gas(), 0x7, 0x9540, 0x60, 0x9540, 0x40), 1), success)
mstore(0x95a0, mload(0x94c0))
mstore(0x95c0, mload(0x94e0))
mstore(0x95e0, mload(0x9540))
mstore(0x9600, mload(0x9560))
success := and(eq(staticcall(gas(), 0x6, 0x95a0, 0x80, 0x95a0, 0x40), 1), success)
mstore(0x9620, mload(0x7e0))
mstore(0x9640, mload(0x800))
mstore(0x9660, mload(0x6fc0))
success := and(eq(staticcall(gas(), 0x7, 0x9620, 0x60, 0x9620, 0x40), 1), success)
mstore(0x9680, mload(0x95a0))
mstore(0x96a0, mload(0x95c0))
mstore(0x96c0, mload(0x9620))
mstore(0x96e0, mload(0x9640))
success := and(eq(staticcall(gas(), 0x6, 0x9680, 0x80, 0x9680, 0x40), 1), success)
mstore(0x9700, mload(0x820))
mstore(0x9720, mload(0x840))
mstore(0x9740, mload(0x6fe0))
success := and(eq(staticcall(gas(), 0x7, 0x9700, 0x60, 0x9700, 0x40), 1), success)
mstore(0x9760, mload(0x9680))
mstore(0x9780, mload(0x96a0))
mstore(0x97a0, mload(0x9700))
mstore(0x97c0, mload(0x9720))
success := and(eq(staticcall(gas(), 0x6, 0x9760, 0x80, 0x9760, 0x40), 1), success)
mstore(0x97e0, mload(0x860))
mstore(0x9800, mload(0x880))
mstore(0x9820, mload(0x7000))
success := and(eq(staticcall(gas(), 0x7, 0x97e0, 0x60, 0x97e0, 0x40), 1), success)
mstore(0x9840, mload(0x9760))
mstore(0x9860, mload(0x9780))
mstore(0x9880, mload(0x97e0))
mstore(0x98a0, mload(0x9800))
success := and(eq(staticcall(gas(), 0x6, 0x9840, 0x80, 0x9840, 0x40), 1), success)
mstore(0x98c0, mload(0x8a0))
mstore(0x98e0, mload(0x8c0))
mstore(0x9900, mload(0x7020))
success := and(eq(staticcall(gas(), 0x7, 0x98c0, 0x60, 0x98c0, 0x40), 1), success)
mstore(0x9920, mload(0x9840))
mstore(0x9940, mload(0x9860))
mstore(0x9960, mload(0x98c0))
mstore(0x9980, mload(0x98e0))
success := and(eq(staticcall(gas(), 0x6, 0x9920, 0x80, 0x9920, 0x40), 1), success)
mstore(0x99a0, mload(0x8e0))
mstore(0x99c0, mload(0x900))
mstore(0x99e0, mload(0x7040))
success := and(eq(staticcall(gas(), 0x7, 0x99a0, 0x60, 0x99a0, 0x40), 1), success)
mstore(0x9a00, mload(0x9920))
mstore(0x9a20, mload(0x9940))
mstore(0x9a40, mload(0x99a0))
mstore(0x9a60, mload(0x99c0))
success := and(eq(staticcall(gas(), 0x6, 0x9a00, 0x80, 0x9a00, 0x40), 1), success)
mstore(0x9a80, mload(0x920))
mstore(0x9aa0, mload(0x940))
mstore(0x9ac0, mload(0x7060))
success := and(eq(staticcall(gas(), 0x7, 0x9a80, 0x60, 0x9a80, 0x40), 1), success)
mstore(0x9ae0, mload(0x9a00))
mstore(0x9b00, mload(0x9a20))
mstore(0x9b20, mload(0x9a80))
mstore(0x9b40, mload(0x9aa0))
success := and(eq(staticcall(gas(), 0x6, 0x9ae0, 0x80, 0x9ae0, 0x40), 1), success)
mstore(0x9b60, mload(0x760))
mstore(0x9b80, mload(0x780))
mstore(0x9ba0, mload(0x7200))
success := and(eq(staticcall(gas(), 0x7, 0x9b60, 0x60, 0x9b60, 0x40), 1), success)
mstore(0x9bc0, mload(0x9ae0))
mstore(0x9be0, mload(0x9b00))
mstore(0x9c00, mload(0x9b60))
mstore(0x9c20, mload(0x9b80))
success := and(eq(staticcall(gas(), 0x6, 0x9bc0, 0x80, 0x9bc0, 0x40), 1), success)
mstore(0x9c40, mload(0x7a0))
mstore(0x9c60, mload(0x7c0))
mstore(0x9c80, mload(0x7220))
success := and(eq(staticcall(gas(), 0x7, 0x9c40, 0x60, 0x9c40, 0x40), 1), success)
mstore(0x9ca0, mload(0x9bc0))
mstore(0x9cc0, mload(0x9be0))
mstore(0x9ce0, mload(0x9c40))
mstore(0x9d00, mload(0x9c60))
success := and(eq(staticcall(gas(), 0x6, 0x9ca0, 0x80, 0x9ca0, 0x40), 1), success)
mstore(0x9d20, mload(0x420))
mstore(0x9d40, mload(0x440))
mstore(0x9d60, mload(0x75a0))
success := and(eq(staticcall(gas(), 0x7, 0x9d20, 0x60, 0x9d20, 0x40), 1), success)
mstore(0x9d80, mload(0x9ca0))
mstore(0x9da0, mload(0x9cc0))
mstore(0x9dc0, mload(0x9d20))
mstore(0x9de0, mload(0x9d40))
success := and(eq(staticcall(gas(), 0x6, 0x9d80, 0x80, 0x9d80, 0x40), 1), success)
mstore(0x9e00, mload(0x4a0))
mstore(0x9e20, mload(0x4c0))
mstore(0x9e40, mload(0x75c0))
success := and(eq(staticcall(gas(), 0x7, 0x9e00, 0x60, 0x9e00, 0x40), 1), success)
mstore(0x9e60, mload(0x9d80))
mstore(0x9e80, mload(0x9da0))
mstore(0x9ea0, mload(0x9e00))
mstore(0x9ec0, mload(0x9e20))
success := and(eq(staticcall(gas(), 0x6, 0x9e60, 0x80, 0x9e60, 0x40), 1), success)
mstore(0x9ee0, mload(0x520))
mstore(0x9f00, mload(0x540))
mstore(0x9f20, mload(0x75e0))
success := and(eq(staticcall(gas(), 0x7, 0x9ee0, 0x60, 0x9ee0, 0x40), 1), success)
mstore(0x9f40, mload(0x9e60))
mstore(0x9f60, mload(0x9e80))
mstore(0x9f80, mload(0x9ee0))
mstore(0x9fa0, mload(0x9f00))
success := and(eq(staticcall(gas(), 0x6, 0x9f40, 0x80, 0x9f40, 0x40), 1), success)
mstore(0x9fc0, mload(0x5a0))
mstore(0x9fe0, mload(0x5c0))
mstore(0xa000, mload(0x7600))
success := and(eq(staticcall(gas(), 0x7, 0x9fc0, 0x60, 0x9fc0, 0x40), 1), success)
mstore(0xa020, mload(0x9f40))
mstore(0xa040, mload(0x9f60))
mstore(0xa060, mload(0x9fc0))
mstore(0xa080, mload(0x9fe0))
success := and(eq(staticcall(gas(), 0x6, 0xa020, 0x80, 0xa020, 0x40), 1), success)
mstore(0xa0a0, mload(0x620))
mstore(0xa0c0, mload(0x640))
mstore(0xa0e0, mload(0x7620))
success := and(eq(staticcall(gas(), 0x7, 0xa0a0, 0x60, 0xa0a0, 0x40), 1), success)
mstore(0xa100, mload(0xa020))
mstore(0xa120, mload(0xa040))
mstore(0xa140, mload(0xa0a0))
mstore(0xa160, mload(0xa0c0))
success := and(eq(staticcall(gas(), 0x6, 0xa100, 0x80, 0xa100, 0x40), 1), success)
mstore(0xa180, mload(0x13c0))
mstore(0xa1a0, mload(0x13e0))
mstore(0xa1c0, sub(f_q, mload(0x7660)))
success := and(eq(staticcall(gas(), 0x7, 0xa180, 0x60, 0xa180, 0x40), 1), success)
mstore(0xa1e0, mload(0xa100))
mstore(0xa200, mload(0xa120))
mstore(0xa220, mload(0xa180))
mstore(0xa240, mload(0xa1a0))
success := and(eq(staticcall(gas(), 0x6, 0xa1e0, 0x80, 0xa1e0, 0x40), 1), success)
mstore(0xa260, mload(0x1460))
mstore(0xa280, mload(0x1480))
mstore(0xa2a0, mload(0x7680))
success := and(eq(staticcall(gas(), 0x7, 0xa260, 0x60, 0xa260, 0x40), 1), success)
mstore(0xa2c0, mload(0xa1e0))
mstore(0xa2e0, mload(0xa200))
mstore(0xa300, mload(0xa260))
mstore(0xa320, mload(0xa280))
success := and(eq(staticcall(gas(), 0x6, 0xa2c0, 0x80, 0xa2c0, 0x40), 1), success)
mstore(0xa340, mload(0xa2c0))
mstore(0xa360, mload(0xa2e0))
mstore(0xa380, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2)
mstore(0xa3a0, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed)
mstore(0xa3c0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b)
mstore(0xa3e0, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)
mstore(0xa400, mload(0x1460))
mstore(0xa420, mload(0x1480))
mstore(0xa440, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d)
mstore(0xa460, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e)
mstore(0xa480, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145)
mstore(0xa4a0, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)
success := and(eq(staticcall(gas(), 0x8, 0xa340, 0x180, 0xa340, 0x20), 1), success)
success := and(eq(mload(0xa340), 1), success)
if not(success) { revert(0, 0) }
return(0, 0)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment