019d5666-7233-730f-8581-38faccd30bf8
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 42897 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 42898 | proxy.resolve | complete | 1 / 3 | 1 week ago |
| 42899 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 42900 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 42901 | capability.graph | complete | 1 / 3 | 1 week ago |
| 42902 | detector.run | complete | 1 / 3 | 1 week ago |
| 42903 | validation.fork | complete | 1 / 3 | 1 week ago |
| 42992 | report.consolidate | complete | 1 / 6 | 1 week ago |
{
"method": "etherscan+onchain",
"status": "confirmed",
"etherscan_hint": {
"source": "etherscan",
"etherscan": {
"proxy_flag": true,
"implementation": "0x4f8b564e25337f6a3e66f12553221f6c05a13085"
}
},
"implementation": "0x4f8b564e25337f6a3e66f12553221f6c05a13085",
"onchain_method": "eip1967"
}
No slither job recorded yet.
{"no_findings":true,"summary":"Reviewed BYTECODE_BUNDLE.json and the embedded runtime bytecode for implementation 0x4f8b564e25337f6a3e66f12553221f6c05a13085, treating proxy storage as authoritative because the parent proxy 0x3d126d6b1581f7566a34bd4e912920bba41367d5 is linked via confirmed EIP-1967 metadata. I did not find a concrete implementation vulnerability that is defensible from bytecode alone. The dangerous sinks are real, but the evidence points to them being role-gated or registry-backed: owner-gated admin call paths revert with \"Only owner\"; the main swap/execution path reverts with \"Only PoolManager\" and temporarily clears/restores the pool-manager slot around execution, which is consistent with a reentrancy guard; and the reachable DELEGATECALL used for swap execution appears to load its implementation from a storage-backed implementation registry, with owner-managed implementation writes gated by an upgrade-window check (\"not in upgrade window\") and implementation validation (\"Invalid implementation\" / \"Swap implementation not set\"). One reported DELEGATECALL at pc:0x415e is in the CBOR metadata tail and is not executable code. Because this is a bytecode-only review, selector inference and role semantics remain best-effort, so residual design risk remains around trusted-owner/trusted-pool-manager assumptions, but I do not have enough evidence to elevate that into a concrete exploitable finding.","findings":[]}
},
{
"end_pc": 14907,
"hash": "0x41669bf8e25aef1e4f09d8707a396d6ff4e24a06dbea208565c1dd7fa286a10e",
"id": "bb:14903",
"start_pc": 14903,
"type": "basic_block"
},
{
"end_pc": 14919,
"hash": "0x419b9828651a38f29cb9e6eda9e381d0d3c3672087ed05040c57570f28c00c86",
"id": "bb:14908",
"start_pc": 14908,
"type": "basic_block"
},
{
"end_pc": 14926,
"hash": "0x4191a566351f78dba31192210bc7e70785da51e090d0e3d7951c3ae6b4b2615a",
"id": "bb:14920",
"start_pc": 14920,
"type": "basic_block"
},
{
"end_pc": 14948,
"hash": "0xe0ba64abefbe56e799371119d46767da1cd0320dd25a94a1cac6fa760a7c2902",
"id": "bb:14927",
"start_pc": 14927,
"type": "basic_block"
},
{
"end_pc": 14955,
"hash": "0xd3ce3eb8244527a79910a1f03d2c7beae945b0afcdfd599ffcf499e0582a1a65",
"id": "bb:14949",
"start_pc": 14949,
"type": "basic_block"
},
{
"end_pc": 14972,
"hash": "0x8214a77e79bfc42c83f63033b59a66155afc513ec2cf75bd3b52d32956727bd1",
"id": "bb:14956",
"start_pc": 14956,
"type": "basic_block"
},
{
"end_pc": 14996,
"hash": "0xd784c9c04fde5fdedf1ff82d7535fe9ce7652137217dc87819ffcdc82aabc7ba",
"id": "bb:14973",
"start_pc": 14973,
"type": "basic_block"
},
{
"end_pc": 15003,
"hash": "0xd8f70a1f9228cfdc412b8ec767ec925accad5ee69ce3e788813609b521bc108d",
"id": "bb:14997",
"start_pc": 14997,
"type": "basic_block"
},
{
"end_pc": 15044,
"hash": "0xcda801bebde3b34dfc955c2c3131639ce35e6c59697a00a38f4d9c00f93bd381",
"id": "bb:15004",
"start_pc": 15004,
"type": "basic_block"
},
{
"end_pc": 15092,
"hash": "0x7fe868ebd40ff7d9fbcee069420272fca33136082a71ad25d699845fa75d15b9",
"id": "bb:15045",
"start_pc": 15045,
"type": "basic_block"
},
{
"end_pc": 15095,
"hash": "0xc36725bf6f714f1e0915d9177a5248e8c2475b0833fd9e6b4325057dbd0d620f",
"id": "bb:15093",
"start_pc": 15093,
"type": "basic_block"
},
{
"end_pc": 15123,
"hash": "0x834569c426a0c2f9ff835a19e4c84c238cdcf21c800c3987753c050f5c754cd1",
"id": "bb:15096",
"start_pc": 15096,
"type": "basic_block"
},
{
"end_pc": 15126,
"hash": "0x2946ad3a7c46f85ce698cc4f76eafa96b67d93f7523fc03f6b502893d205e2a4",
"id": "bb:15124",
"start_pc": 15124,
"type": "basic_block"
},
{
"end_pc": 15140,
"hash": "0xe507959028678e787b1f5aea3ad3ad8b58bdc1a9efae3eec2427c50e0da0dae2",
"id": "bb:15127",
"start_pc": 15127,
"type": "basic_block"
},
{
"end_pc": 15143,
"hash": "0x63d603d23947740e2af29a9850ee7759a38ce2833b097dc0664a353a96137489",
"id": "bb:15141",
"start_pc": 15141,
"type": "basic_block"
},
{
"end_pc": 15188,
"hash": "0x024a1cfe2bc9a1f01150d5b980bee582c851957dcdc5d2c54027e05a076a56c3",
"id": "bb:15144",
"start_pc": 15144,
"type": "basic_block"
},
{
"end_pc": 15191,
"hash": "0x56426b15036a9bf1e20e84b07a61395e37f0ff15717b0325d13049fbf40cc3c9",
"id": "bb:15189",
"start_pc": 15189,
"type": "basic_block"
},
{
"end_pc": 15216,
"hash": "0x34ac9406b82787cc68ec23226030450854421eefdf04d60b01a759b69073a016",
"id": "bb:15192",
"start_pc": 15192,
"type": "basic_block"
},
{
"end_pc": 15229,
"hash": "0xd62ee2f54278e5e38d6a8b05bf7851feaa2a2a32cf2282accd04fa2fe0b879a3",
"id": "bb:15217",
"start_pc": 15217,
"type": "basic_block"
},
{
"end_pc": 15232,
"hash": "0x4a622db3166c52ec08c2c239823cb1f2d9f5446d988125b6011a7bccbf3e8251",
"id": "bb:15230",
"start_pc": 15230,
"type": "basic_block"
},
{
"end_pc": 15262,
"hash": "0xee880384cea27f44fd94e3dfac819537711cfda216bdabb7f12415a581424425",
"id": "bb:15233",
"start_pc": 15233,
"type": "basic_block"
},
{
"end_pc": 15271,
"hash": "0x1cf4c2d9439b6040091ea637cd63aeadaa9ee00f153b1d0521b1916ff4a40494",
"id": "bb:15263",
"start_pc": 15263,
"type": "basic_block"
},
{
"end_pc": 15355,
"hash": "0x6d7bcae61f515f5b8850816575e22af65f190e7376e59e5d2517bb33b6d2b60c",
"id": "bb:15272",
"start_pc": 15272,
"type": "basic_block"
},
{
"end_pc": 15358,
"hash": "0x4b0b24d567903d98690e944bcbe3538bba7be5dbaac9893ee047625e01f8b395",
"id": "bb:15356",
"start_pc": 15356,
"type": "basic_block"
},
{
"end_pc": 15373,
"hash": "0xb8f8afff0b4631bf375d64aca6586d527daf42e7e95519b63fd80c5115b50514",
"id": "bb:15359",
"start_pc": 15359,
"type": "basic_block"
},
{
"end_pc": 15435,
"hash": "0x230b6b008874dc9f46c191fc78afeb7d8066f566b8466f12ee29a866e702344e",
"id": "bb:15374",
"start_pc": 15374,
"type": "basic_block"
},
{
"end_pc": 15438,
"hash": "0xd66043ff99506f12c8aef6fe7fccf932e2fa453b6a5bac52c65b537922a65558",
"id": "bb:15436",
"start_pc": 15436,
"type": "basic_block"
},
{
"end_pc": 15462,
"hash": "0xfd735b5d798e9c9d7805aea041b6ad0f0081f555e75990a3fb350cbe67aeeb08",
"id": "bb:15439",
"start_pc": 15439,
"type": "basic_block"
},
{
"end_pc": 15465,
"hash": "0xad80c398afaa4426d18123a50f898e90991b5620475883c273e60cc2cff827e8",
"id": "bb:15463",
"start_pc": 15463,
"type": "basic_block"
},
{
"end_pc": 15476,
"hash": "0x4e6ed2faa13b98aef438b7d294ca2952a7648db20751e24f491b2ab25ac73829",
"id": "bb:15466",
"start_pc": 15466,
"type": "basic_block"
},
{
"end_pc": 15479,
"hash": "0x585563180cc3bfe519afafcf9b7045bd0c2776e497846bba69f815c0e88a91e1",
"id": "bb:15477",
"start_pc": 15477,
"type": "basic_block"
},
{
"end_pc": 15497,
"hash": "0x95bfb98521013afdc96f132fda0de12d13b9ad087333e04a288b19762a2933e3",
"id": "bb:15480",
"start_pc": 15480,
"type": "basic_block"
},
{
"end_pc": 15513,
"hash": "0x9a753fedf64f123c97a98f247f539b91b276fdd963b24c9eb9fe13aa29498b2d",
"id": "bb:15498",
"start_pc": 15498,
"type": "basic_block"
},
{
"end_pc": 15531,
"hash": "0xd859e1a84482cda77b26748f09e82cf348634b5565477979bfde359dadfed4d0",
"id": "bb:15514",
"start_pc": 15514,
"type": "basic_block"
},
{
"end_pc": 15546,
"hash": "0xd79fff5b0efe1df7ee0c09e2d7c79886db28e3102e37843f5713ed3340f2160e",
"id": "bb:15532",
"start_pc": 15532,
"type": "basic_block"
},
{
"end_pc": 15575,
"hash": "0x74d8f8126beb57d2c1733d342d1670353adf60fb319b6d2818e643216823f430",
"id": "bb:15547",
"start_pc": 15547,
"type": "basic_block"
},
{
"end_pc": 15598,
"hash": "0x50be22444ac50006b8d4829386f0458a437e2d2f5fa1f99071a0b9f54831c6d3",
"id": "bb:15576",
"start_pc": 15576,
"type": "basic_block"
},
{
"end_pc": 15610,
"hash": "0x0434b3ac0b9c9aaf3a24d0a02bb31aae34164781eacca8b9be8ff9a4413fc5f6",
"id": "bb:15599",
"start_pc": 15599,
"type": "basic_block"
},
{
"end_pc": 15613,
"hash": "0xe9469dcf981cd32ef7b740a93f47a9b74ea41734142d3c0cc2a72fd019cd7e2c",
"id": "bb:15611",
"start_pc": 15611,
"type": "basic_block"
},
{
"end_pc": 15629,
"hash": "0x2f14a636b82b48eed35431da82165e5d80d65ead1409297aaeda43b5ba4eb048",
"id": "bb:15614",
"start_pc": 15614,
"type": "basic_block"
},
{
"end_pc": 15656,
"hash": "0xfbf46cc6c1ad7135caae0db5251fc2d263c2ee16c8482d9dd5c3db9a9f84c686",
"id": "bb:15630",
"start_pc": 15630,
"type": "basic_block"
},
{
"end_pc": 15659,
"hash": "0xe116950022ad69a13de1139d42aaf0acfd57a494bbd9d6f0892c82630962a292",
"id": "bb:15657",
"start_pc": 15657,
"type": "basic_block"
},
{
"end_pc": 15663,
"hash": "0x94d453bd0278aa83d05fbc2a8e2ee503d23bbc9f8fefafbbd640f7a205e19895",
"id": "bb:15660",
"start_pc": 15660,
"type": "basic_block"
},
{
"end_pc": 15672,
"hash": "0x59db649c26e3a9d114c1a7e5c2c9a88ebe63647b42b4550ec5cf2f54d0de5434",
"id": "bb:15664",
"start_pc": 15664,
"type": "basic_block"
},
{
"end_pc": 15691,
"hash": "0x2d5ad6c996dbb8752ab28d4f08aaf4e96ad28dac8166909d026f09eb467c2004",
"id": "bb:15673",
"start_pc": 15673,
"type": "basic_block"
},
{
"end_pc": 15694,
"hash": "0x12f8c893b981d7733e030a0401430a5311bca958280ed029534a79adb02eb163",
"id": "bb:15692",
"start_pc": 15692,
"type": "basic_block"
},
{
"end_pc": 15717,
"hash": "0xbfeed287c443304a755026d170587b66ea6834634fb4cd086897d83730980405",
"id": "bb:15695",
"start_pc": 15695,
"type": "basic_block"
},
{
"end_pc": 15720,
"hash": "0x11a8bc0b95a3b9d8893f5bd220e505fd90b5d7455ca27932b44f207cb1b8d452",
"id": "bb:15718",
"start_pc": 15718,
"type": "basic_block"
},
{
"end_pc": 15728,
"hash": "0x9479ed9151ad65d5fb4c6ee3e2a4bd9aed02924e6c005d07db17f6ea15d95a42",
"id": "bb:15721",
"start_pc": 15721,
"type": "basic_block"
},
{
"end_pc": 15739,
"hash": "0x8985c3422eaed7ebe303d162ac2e1d0a8143e091cf2c62154adfb92302a034f6",
"id": "bb:15729",
"start_pc": 15729,
"type": "basic_block"
},
{
"end_pc": 15754,
"hash": "0xc3a1dd9436c11fbdb85f9512a1c16086585747dc892539bdfed2967779c3eb03",
"id": "bb:15740",
"start_pc": 15740,
"type": "basic_block"
},
{
"end_pc": 15771,
"hash": "0x4f85cc7b75760f2c2102b56556aa75db7261da606a65874dfc423e1464c60a85",
"id": "bb:15755",
"start_pc": 15755,
"type": "basic_block"
},
{
"end_pc": 15790,
"hash": "0xf8d6be8b3beaf69abb28c19e060c6d14a21e1b107736e16e5b6dd7d0d0af3fc4",
"id": "bb:15772",
"start_pc": 15772,
"type": "basic_block"
},
{
"end_pc": 15807,
"hash": "0x15fd67ff3504ab51caea2ee3a5772399e7c0ef5036b145f7f43e57bdc7f7eec8",
"id": "bb:15791",
"start_pc": 15791,
"type": "basic_block"
},
{
"end_pc": 15826,
"hash": "0x080b2be599c2e6485ce1e046a49520fb5280e0a940562092338a39639ed78e45",
"id": "bb:15808",
"start_pc": 15808,
"type": "basic_block"
},
{
"end_pc": 15845,
"hash": "0x798efa687b8d7cd5b2ca3579b0c706ee4e917f6e67c3035a981f854b243b09ed",
"id": "bb:15827",
"start_pc": 15827,
"type": "basic_block"
},
{
"end_pc": 15848,
"hash": "0xea6e522097c01eb7ad0a204d0dfdc126f90a8d0ba4a9fbbbee31747087673abb",
"id": "bb:15846",
"start_pc": 15846,
"type": "basic_block"
},
{
"end_pc": 15862,
"hash": "0x49a9385026586089339b31354b24e2bbb3bcd6bf0e4c48f485dace8284b8a03b",
"id": "bb:15849",
"start_pc": 15849,
"type": "basic_block"
},
{
"end_pc": 15883,
"hash": "0x19cca3d1c28688dca010b9adbb22b7a21d7dfc9ecb9f767e7fcd892c4f196279",
"id": "bb:15863",
"start_pc": 15863,
"type": "basic_block"
},
{
"end_pc": 15908,
"hash": "0x2c92fa4d1a8595d7d15d2fd90606432c167022c0a053ef11a0328b422813912e",
"id": "bb:15884",
"start_pc": 15884,
"type": "basic_block"
},
{
"end_pc": 15919,
"hash": "0x5ca6fbfb31c05554ab1818ab3825231a45c60cb586cc9fb9546b72d6424e2864",
"id": "bb:15909",
"start_pc": 15909,
"type": "basic_block"
},
{
"end_pc": 15922,
"hash": "0x543ce5b705d8b2e57ee278febe9067a52ae91079ba6bfcb76607c9b12403807b",
"id": "bb:15920",
"start_pc": 15920,
"type": "basic_block"
},
{
"end_pc": 15936,
"hash": "0x9a8877ff9f43e9c16da508b383159473b9c2c66eb9b78efbdb0dc74a4ffa805a",
"id": "bb:15923",
"start_pc": 15923,
"type": "basic_block"
},
{
"end_pc": 15939,
"hash": "0xab06b488c265d54b1d7da58ee4ebfdf4e953657ee6304759926fad6c7a0aca9e",
"id": "bb:15937",
"start_pc": 15937,
"type": "basic_block"
},
{
"end_pc": 15947,
"hash": "0x27514d1aef000d83bcd3afa8ab5cf0534da823b854e8174226ce5b249d44481c",
"id": "bb:15940",
"start_pc": 15940,
"type": "basic_block"
},
{
"end_pc": 15985,
"hash": "0xbee7827e20ffef04cde587af10b08d41ced83dc534db813937dd2802a232141d",
"id": "bb:15948",
"start_pc": 15948,
"type": "basic_block"
},
{
"end_pc": 15988,
"hash": "0xbaa5b1af569913cc82627408ce6c6dcfe85878741abe32d0df66f45623f54fae",
"id": "bb:15986",
"start_pc": 15986,
"type": "basic_block"
},
{
"end_pc": 16005,
"hash": "0xf610693b7d915a3cfbe3ef083fff3fa5c1bc00820f7bf908562962675d4f03dc",
"id": "bb:15989",
"start_pc": 15989,
"type": "basic_block"
},
{
"end_pc": 16008,
"hash": "0x8c00b2f4b2acdb231bc2173edabf42daf62022446e7685c1b82a106e672fbfc8",
"id": "bb:16006",
"start_pc": 16006,
"type": "basic_block"
},
{
"end_pc": 16016,
"hash": "0xc0692e8f83d9ff10dba834bd6173dbf1d26ec0ddc1549a6ab5e388b46ca64bca",
"id": "bb:16009",
"start_pc": 16009,
"type": "basic_block"
},
{
"end_pc": 16027,
"hash": "0x65c45f3cbdb8edae16e4a86d79bcec8dca5b958bb4cdffa5220365e919b11cd9",
"id": "bb:16017",
"start_pc": 16017,
"type": "basic_block"
},
{
"end_pc": 16042,
"hash": "0xa531aa0d593d61aa0924c5a719346a49e09132af2212bc98e0654e5f69533791",
"id": "bb:16028",
"start_pc": 16028,
"type": "basic_block"
},
{
"end_pc": 16045,
"hash": "0x13c856e96783c81853649f11dc86c579953bbf0a4dd75f8ac9e889cf0ec4d7ae",
"id": "bb:16043",
"start_pc": 16043,
"type": "basic_block"
},
{
"end_pc": 16058,
"hash": "0x2c9133033e1c3f64fb5fcf45e8c4bfde1eeb335701aadee3b2e6a259bc1454fb",
"id": "bb:16046",
"start_pc": 16046,
"type": "basic_block"
},
{
"end_pc": 16061,
"hash": "0x21a754af865fcf9569494cef63855fdc480ede368fb084ac67d96fd45bcec18d",
"id": "bb:16059",
"start_pc": 16059,
"type": "basic_block"
},
{
"end_pc": 16075,
"hash": "0xf67a2890b7a8a16e1c4a0a1d5f392e38b8b4ea15f4fe9b2a700d710853eb6b2e",
"id": "bb:16062",
"start_pc": 16062,
"type": "basic_block"
},
{
"end_pc": 16099,
"hash": "0xd18e974f2abd2029bb4c4246514cfcd1944afb62fcda5c06f1a393e2a9c26bb7",
"id": "bb:16076",
"start_pc": 16076,
"type": "basic_block"
},
{
"end_pc": 16102,
"hash": "0x66b9d659280bbe2e60a5f081f9266d55f7f8a9388a411019405c78b38e2ac139",
"id": "bb:16100",
"start_pc": 16100,
"type": "basic_block"
},
{
"end_pc": 16107,
"hash": "0x0de9c30ff651f0581eaaf01432e2312039af210fc3dac0f22e4168f7a1b5d13b",
"id": "bb:16103",
"start_pc": 16103,
"type": "basic_block"
},
{
"end_pc": 16116,
"hash": "0x7c2b60b659f85511cca23b09cff0a1c19af49362f4a0a5713e2c800ddd272dff",
"id": "bb:16108",
"start_pc": 16108,
"type": "basic_block"
},
{
"end_pc": 16126,
"hash": "0x7ab21cca9038a9bb7f5e4fe996a4d16efef2ff2a9e09214df5f50a9709655cfa",
"id": "bb:16117",
"start_pc": 16117,
"type": "basic_block"
},
{
"end_pc": 16129,
"hash": "0x81ee163256cda91bc58bc0f10f61831da1f5226fc65dd8a26e3656acb51226ba",
"id": "bb:16127",
"start_pc": 16127,
"type": "basic_block"
},
{
"end_pc": 16137,
"hash": "0xe081dea68eacfd3214348e4a38a829fef33840a717c6bcff7f5869ec9b6244c3",
"id": "bb:16130",
"start_pc": 16130,
"type": "basic_block"
},
{
"end_pc": 16148,
"hash": "0x8e96cfa02c6b6c7e94d70d60238347165a84ce1c8020b21d6537309577573206",
"id": "bb:16138",
"start_pc": 16138,
"type": "basic_block"
},
{
"end_pc": 16161,
"hash": "0x739e0fdb822d8df35dc67dde01a853097a2566766cca804fc7bfe3ff8884fcd9",
"id": "bb:16149",
"start_pc": 16149,
"type": "basic_block"
},
{
"end_pc": 16176,
"hash": "0x836ef92e0be8f929c6e9961b7845d1022b4554ae5c530a1ccebbb77378ab2f24",
"id": "bb:16162",
"start_pc": 16162,
"type": "basic_block"
},
{
"end_pc": 16195,
"hash": "0xe8271d5a2b212f70bfb06901713c8835c82fc91bc726e49ad76bcf8dd591e542",
"id": "bb:16177",
"start_pc": 16177,
"type": "basic_block"
},
{
"end_pc": 16219,
"hash": "0x99710f14fb14f6e2df32d875d0a44f4c9e313539bdf5aa6bb8e4b9f9f90372d0",
"id": "bb:16196",
"start_pc": 16196,
"type": "basic_block"
},
{
"end_pc": 16222,
"hash": "0xdec3da07318920ea27af28073fabe32828e6a6c263b1b43c30753a9d656e2a20",
"id": "bb:16220",
"start_pc": 16220,
"type": "basic_block"
},
{
"end_pc": 16234,
"hash": "0xeea48cd6f3e59b39f4ee1e82998abe16a39f6ad95c8989080aa0db0a6961c06a",
"id": "bb:16223",
"start_pc": 16223,
"type": "basic_block"
},
{
"end_pc": 16249,
"hash": "0xbb397abf68fb9ebd97f9d6095e9af688aa73f3da9929cc26b5c2e61d94f22c8c",
"id": "bb:16235",
"start_pc": 16235,
"type": "basic_block"
},
{
"end_pc": 16271,
"hash": "0xa83ea42afd4b6aa46c5be8052941cd335800ec1088c7e069e19bad9686124e85",
"id": "bb:16250",
"start_pc": 16250,
"type": "basic_block"
},
{
"end_pc": 16283,
"hash": "0xe6d20482da19749d8f848f06c898dde4a5c9a8d69ac03221ffbb68d8dc6f7dd4",
"id": "bb:16272",
"start_pc": 16272,
"type": "basic_block"
},
{
"end_pc": 16290,
"hash": "0x2c15d9ec6fd3b954b66ea0d68b54223d3990fde6a26f120ef666a0cf37c9d4ac",
"id": "bb:16284",
"start_pc": 16284,
"type": "basic_block"
},
{
"end_pc": 16306,
"hash": "0xd926b1fbb4149269a6d671e0c43253c89678acbe5d431225ed032d2574549123",
"id": "bb:16291",
"start_pc": 16291,
"type": "basic_block"
},
{
"end_pc": 16313,
"hash": "0x68e2a32dca6a66a6bb2079165f63413a39aadd7f200e620a76fbad39183e3efa",
"id": "bb:16307",
"start_pc": 16307,
"type": "basic_block"
},
{
"end_pc": 16331,
"hash": "0xfd6907cedd178c63cf329ea2acfb098e01bb513aca14279011a4dd700fa3cc55",
"id": "bb:16314",
"start_pc": 16314,
"type": "basic_block"
},
{
"end_pc": 16338,
"hash": "0xc36cfa570f5620e493e115a2ea6f43ade76c81ef941d9ad3303d97ce1aa489ee",
"id": "bb:16332",
"start_pc": 16332,
"type": "basic_block"
},
{
"end_pc": 16383,
"hash": "0x09628600050f51d73c9b83700e1cd640c8195a247d91b05a06c4a42485b20b0a",
"id": "bb:16339",
"start_pc": 16339,
"type": "basic_block"
},
{
"end_pc": 16482,
"hash": "0xb9de4ccbfae5176bb8413bc19c042b78bc3c187e90aefc320835e0121177faa7",
"id": "bb:16384",
"start_pc": 16384,
"type": "basic_block"
},
{
"end_pc": 16673,
"hash": "0x7751f3aea01dc13dbf655610cb7ddbc272a1e5a36d60ede9e401b16600fe008a",
"id": "bb:16483",
"start_pc": 16483,
"type": "basic_block"
},
{
"end_pc": 16695,
"hash": "0x3760b79bce8103a7fb8052ed3db75ab97936f7516bb5e1a5b79ed3c9fd812b2a",
"id": "bb:16674",
"start_pc": 16674,
"type": "basic_block"
},
{
"end_pc": 16719,
"hash": "0x6cfde01ac0e8f09fb41c3e15b67194ec68b17536625c52545ea5cd01ea150cbf",
"id": "bb:16696",
"start_pc": 16696,
"type": "basic_block"
},
{
"end_pc": 16720,
"hash": "0x99d871f292d6bfdd7ddcfc6cc26fcd30a3e2087eb566b81827f65f1c0b442c7e",
"id": "bb:16720",
"start_pc": 16720,
"type": "basic_block"
},
{
"end_pc": 16769,
"hash": "0x39817a586565fecb3531ba23f996d0fabdf2b60c0a4358d54ccdd47ca5c5d0cb",
"id": "bb:16721",
"start_pc": 16721,
"type": "basic_block"
},
{
"end_pc": 16772,
"hash": "0xbdb7f0e7f0f170b10759e34f3da66d3d6565175fcd8e3cfb0adb7d0d68b107b2",
"id": "bb:16770",
"start_pc": 16770,
"type": "basic_block"
},
{
"end_pc": 16773,
"hash": "0x5bd49c3074fdf08710d4f341727140697781c232e3dd2dd6df45dcfbc40d050a",
"id": "bb:16773",
"start_pc": 16773,
"type": "basic_block"
},
{
"id": "call:1862",
"opcode": "CALL",
"pc": 1862,
"type": "callsite"
},
{
"id": "call:3869",
"opcode": "CALL",
"pc": 3869,
"type": "callsite"
},
{
"id": "call:4242",
"opcode": "CALL",
"pc": 4242,
"type": "callsite"
},
{
"id": "call:4308",
"opcode": "CALL",
"pc": 4308,
"type": "callsite"
},
{
"id": "call:4461",
"opcode": "CALL",
"pc": 4461,
"type": "callsite"
},
{
"id": "call:4547",
"opcode": "CALL",
"pc": 4547,
"type": "callsite"
},
{
"id": "call:4733",
"opcode": "CALL",
"pc": 4733,
"type": "callsite"
},
{
"id": "call:5105",
"opcode": "CALL",
"pc": 5105,
"type": "callsite"
},
{
"id": "call:5171",
"opcode": "CALL",
"pc": 5171,
"type": "callsite"
},
{
"id": "call:5327",
"opcode": "CALL",
"pc": 5327,
"type": "callsite"
},
{
"id": "call:5413",
"opcode": "CALL",
"pc": 5413,
"type": "callsite"
},
{
"id": "call:6034",
"opcode": "STATICCALL",
"pc": 6034,
"type": "callsite"
},
{
"id": "call:6780",
"opcode": "CALL",
"pc": 6780,
"type": "callsite"
},
{
"id": "call:8623",
"opcode": "CALL",
"pc": 8623,
"type": "callsite"
},
{
"id": "call:8807",
"opcode": "DELEGATECALL",
"pc": 8807,
"type": "callsite"
},
{
"id": "call:9152",
"opcode": "CALL",
"pc": 9152,
"type": "callsite"
},
{
"id": "call:10994",
"opcode": "CALL",
"pc": 10994,
"type": "callsite"
},
{
"id": "call:11164",
"opcode": "CALL",
"pc": 11164,
"type": "callsite"
},
{
"id": "call:11543",
"opcode": "DELEGATECALL",
"pc": 11543,
"type": "callsite"
},
{
"id": "call:16734",
"opcode": "DELEGATECALL",
"pc": 16734,
"type": "callsite"
},
{
"id": "sink:call",
"type": "sink"
},
{
"id": "sink:staticcall",
"type": "sink"
},
{
"id": "sink:delegatecall",
"type": "sink"
},
{
"entry_pc": 4076725131,
"id": "fn:0xf2fde38b",
"selector": "0xf2fde38b",
"type": "function"
},
{
"entry_pc": 4198899251,
"id": "fn:0xf3fef3a3",
"selector": "0xf3fef3a3",
"type": "function"
},
{
"entry_pc": 4199038578,
"id": "fn:0xfa461e33",
"selector": "0xfa461e33",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xfa483e72",
"selector": "0xfa483e72",
"type": "function"
},
{
"entry_pc": 3850598587,
"id": "fn:0xe3f33a5e",
"selector": "0xe3f33a5e",
"type": "function"
},
{
"entry_pc": 4047638694,
"id": "fn:0xe58378bb",
"selector": "0xe58378bb",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xf14210a6",
"selector": "0xf14210a6",
"type": "function"
},
{
"entry_pc": 3469779665,
"id": "fn:0xced0a2d1",
"selector": "0xced0a2d1",
"type": "function"
},
{
"entry_pc": 3578229791,
"id": "fn:0xd3e1c284",
"selector": "0xd3e1c284",
"type": "function"
},
{
"entry_pc": 3719238696,
"id": "fn:0xd547741f",
"selector": "0xd547741f",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xddaf1428",
"selector": "0xddaf1428",
"type": "function"
},
{
"entry_pc": 2715464939,
"id": "fn:0x91dd7346",
"selector": "0x91dd7346",
"type": "function"
},
{
"entry_pc": 2719481311,
"id": "fn:0xa1dab4eb",
"selector": "0xa1dab4eb",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xa217fddf",
"selector": "0xa217fddf",
"type": "function"
},
{
"entry_pc": 1699439751,
"id": "fn:0x654b6487",
"selector": "0x654b6487",
"type": "function"
},
{
"entry_pc": 1942955512,
"id": "fn:0x7065cb48",
"selector": "0x7065cb48",
"type": "function"
},
{
"entry_pc": 2446411860,
"id": "fn:0x73cf25f8",
"selector": "0x73cf25f8",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0x91d14854",
"selector": "0x91d14854",
"type": "function"
},
{
"entry_pc": 911641278,
"id": "fn:0x2f2ff15d",
"selector": "0x2f2ff15d",
"type": "function"
},
{
"entry_pc": 1422344060,
"id": "fn:0x36568abe",
"selector": "0x36568abe",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0x54c73f7c",
"selector": "0x54c73f7c",
"type": "function"
},
{
"entry_pc": 410519172,
"id": "fn:0x18780684",
"selector": "0x18780684",
"type": "function"
},
{
"entry_pc": 613063843,
"id": "fn:0x23a69e75",
"selector": "0x23a69e75",
"type": "function"
},
{
"entry_pc": 747198710,
"id": "fn:0x248a9ca3",
"selector": "0x248a9ca3",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0x2c8958f6",
"selector": "0x2c8958f6",
"type": "function"
},
{
"entry_pc": 227670416,
"id": "fn:0x01ffc9a7",
"selector": "0x01ffc9a7",
"type": "function"
},
{
"entry_pc": 389555673,
"id": "fn:0x0d91f990",
"selector": "0x0d91f990",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0x173825d9",
"selector": "0x173825d9",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xffffffff",
"selector": "0xffffffff",
"type": "function"
}
],
"version": "capability_graph_v1"
},
"id": 1413,
"updated_at": "2026-04-04T03:58:06.000000Z",
"version": "capability_graph_v1"
}
exec
/bin/bash -lc "rg -n 'bytecode|runtime|evidence|selector|signature|owner|admin|implementation|eip1967|upgrade|delegatecall' BYTECODE_BUNDLE.json" in /tmp/codex-d0goo8i1
succeeded in 0ms:
20944: "dispatcher_type": "selector_jump_table",
20948: "selector": "0xf2fde38b"
20952: "selector": "0xf3fef3a3"
20956: "selector": "0xfa461e33"
20960: "selector": "0xfa483e72"
20964: "selector": "0xe3f33a5e"
20968: "selector": "0xe58378bb"
20972: "selector": "0xf14210a6"
20976: "selector": "0xced0a2d1"
20980: "selector": "0xd3e1c284"
20984: "selector": "0xd547741f"
20988: "selector": "0xddaf1428"
20992: "selector": "0x91dd7346"
20996: "selector": "0xa1dab4eb"
21000: "selector": "0xa217fddf"
21004: "selector": "0x654b6487"
21008: "selector": "0x7065cb48"
21012: "selector": "0x73cf25f8"
21016: "selector": "0x91d14854"
21020: "selector": "0x2f2ff15d"
21024: "selector": "0x36568abe"
21028: "selector": "0x54c73f7c"
21032: "selector": "0x18780684"
21036: "selector": "0x23a69e75"
21040: "selector": "0x248a9ca3"
21044: "selector": "0x2c8958f6"
21048: "selector": "0x01ffc9a7"
21052: "selector": "0x0d91f990"
21056: "selector": "0x173825d9"
21060: "selector": "0xffffffff"
21069: "selector": "0xf2fde38b",
21072: "delegatecall": 3,
21118: "selector": "0xf3fef3a3",
21121: "delegatecall": 3,
21167: "selector": "0xfa461e33",
21170: "delegatecall": 3,
21216: "selector": "0xfa483e72",
21219: "delegatecall": 3,
21265: "selector": "0xe3f33a5e",
21268: "delegatecall": 3,
21314: "selector": "0xe58378bb",
21317: "delegatecall": 3,
21363: "selector": "0xf14210a6",
21366: "delegatecall": 3,
21412: "selector": "0xced0a2d1",
21415: "delegatecall": 3,
21461: "selector": "0xd3e1c284",
21464: "delegatecall": 3,
21510: "selector": "0xd547741f",
21513: "delegatecall": 3,
21559: "selector": "0xddaf1428",
21562: "delegatecall": 3,
21608: "selector": "0x91dd7346",
21611: "delegatecall": 3,
21657: "selector": "0xa1dab4eb",
21660: "delegatecall": 3,
21706: "selector": "0xa217fddf",
21709: "delegatecall": 3,
21755: "selector": "0x654b6487",
21758: "delegatecall": 3,
21804: "selector": "0x7065cb48",
21807: "delegatecall": 3,
21853: "selector": "0x73cf25f8",
21856: "delegatecall": 3,
21902: "selector": "0x91d14854",
21905: "delegatecall": 3,
21951: "selector": "0x2f2ff15d",
21954: "delegatecall": 3,
22000: "selector": "0x36568abe",
22003: "delegatecall": 3,
22049: "selector": "0x54c73f7c",
22052: "delegatecall": 3,
22098: "selector": "0x18780684",
22101: "delegatecall": 3,
22147: "selector": "0x23a69e75",
22150: "delegatecall": 3,
22196: "selector": "0x248a9ca3",
22199: "delegatecall": 3,
22245: "selector": "0x2c8958f6",
22248: "delegatecall": 3,
22294: "selector": "0x01ffc9a7",
22297: "delegatecall": 3,
22343: "selector": "0x0d91f990",
22346: "delegatecall": 3,
22392: "selector": "0x173825d9",
22395: "delegatecall": 3,
22441: "selector": "0xffffffff",
22444: "delegatecall": 3,
22486: "selectors": [
22521: "delegatecall": 3,
22524: "upgrade_slot_write_suspected": false
22585: "link_type": "implementation",
22589: "implementation": "0x4f8b564e25337f6a3e66f12553221f6c05a13085",
22594: "implementation": "0x4f8b564e25337f6a3e66f12553221f6c05a13085",
22596: "onchain_method": "eip1967",
22621: "implementation": null,
22628: "proxy_evidence": {
22632: "implementation_address": null,
22634: "runtime_bytecode": {
27844: "to": "sink:delegatecall",
27884: "to": "sink:delegatecall",
27894: "to": "sink:delegatecall",
34314: "id": "sink:delegatecall",
34320: "selector": "0xf2fde38b",
34326: "selector": "0xf3fef3a3",
34332: "selector": "0xfa461e33",
34338: "selector": "0xfa483e72",
34344: "selector": "0xe3f33a5e",
34350: "selector": "0xe58378bb",
34356: "selector": "0xf14210a6",
34362: "selector": "0xced0a2d1",
34368: "selector": "0xd3e1c284",
34374: "selector": "0xd547741f",
34380: "selector": "0xddaf1428",
34386: "selector": "0x91dd7346",
34392: "selector": "0xa1dab4eb",
34398: "selector": "0xa217fddf",
34404: "selector": "0x654b6487",
34410: "selector": "0x7065cb48",
34416: "selector": "0x73cf25f8",
34422: "selector": "0x91d14854",
34428: "selector": "0x2f2ff15d",
34434: "selector": "0x36568abe",
34440: "selector": "0x54c73f7c",
34446: "selector": "0x18780684",
34452: "selector": "0x23a69e75",
34458: "selector": "0x248a9ca3",
34464: "selector": "0x2c8958f6",
34470: "selector": "0x01ffc9a7",
34476: "selector": "0x0d91f990",
34482: "selector": "0x173825d9",
34488: "selector": "0xffffffff",
34501: "evidence_json": {
34502: "delegatecall_count": 3,
34527: "untrusted_delegatecall_count": 3
34551: "evidence_json": {
34603: "evidence_json": {
34656: "delegatecall_count": 3,
34658: "delegatecall_present",
exec
/bin/bash -lc "jq '.artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-d0goo8i1
succeeded in 0ms:
[
"codehash",
"compiler_json",
"implementation_address",
"is_proxy",
"runtime_bytecode",
"verified_source"
]
exec
/bin/bash -lc "jq '.analysis_run | keys' BYTECODE_BUNDLE.json" in /tmp/codex-d0goo8i1
succeeded in 0ms:
[
"address",
"block_number",
"chain_id",
"child_links",
"created_at",
"id",
"parent_links",
"status",
"updated_at"
]
exec
/bin/bash -lc "sed -n '22570,22650p' BYTECODE_BUNDLE.json" in /tmp/codex-d0goo8i1
succeeded in 0ms:
"updated_at": "2026-04-04T03:58:06.000000Z",
"version": "analysis_artifact_v1"
},
"analysis_run": {
"address": "0x4f8b564e25337f6a3e66f12553221f6c05a13085",
"block_number": null,
"chain_id": 1,
"child_links": [],
"created_at": "2026-04-04T02:51:27.000000Z",
"id": "019d5667-0d9d-728c-b832-799ea2787070",
"parent_links": [
{
"child_run_id": "019d5667-0d9d-728c-b832-799ea2787070",
"created_at": "2026-04-04T02:51:27.000000Z",
"id": 236,
"link_type": "implementation",
"meta_json": {
"etherscan_hint": {
"etherscan": {
"implementation": "0x4f8b564e25337f6a3e66f12553221f6c05a13085",
"proxy_flag": true
},
"source": "etherscan"
},
"implementation": "0x4f8b564e25337f6a3e66f12553221f6c05a13085",
"method": "etherscan+onchain",
"onchain_method": "eip1967",
"status": "confirmed"
},
"parent": {
"address": "0x3d126d6b1581f7566a34bd4e912920bba41367d5",
"block_number": null,
"chain_id": 1,
"created_at": "2026-04-04T02:50:47.000000Z",
"id": "019d5666-7233-730f-8581-38faccd30bf8",
"status": "running",
"updated_at": "2026-04-04T02:51:26.000000Z"
},
"parent_run_id": "019d5666-7233-730f-8581-38faccd30bf8",
"updated_at": "2026-04-04T02:51:27.000000Z"
}
],
"status": "running",
"updated_at": "2026-04-04T03:58:05.000000Z"
},
"artifact": {
"codehash": "0x0c635b95af49c84f163cc043b9e7fb41b57c1d16697f341354631a9bcdb329ba",
"compiler_json": {
"compiler_version": null,
"etherscan": {
"contract_name": null,
"implementation": null,
"license": "Unknown",
"proxy": "0",
"swarm_source": null
},
"optimizer_enabled": false,
"optimizer_runs": 0,
"proxy_evidence": {
"status": "not_proxy"
}
},
"implementation_address": null,
"is_proxy": false,
"runtime_bytecode": {
"full": "0x6080604052600436106101ba575f3560e01c806391dd7346116100eb578063e3f33a5e11610089578063f2fde38b11610063578063f2fde38b146104da578063f3fef3a3146104f9578063fa461e3314610240578063fa483e7214610240576101c1565b8063e3f33a5e14610454578063e58378bb14610488578063f14210a6146104bb576101c1565b8063ced0a2d1116100c5578063ced0a2d1146103f7578063d3e1c28414610240578063d547741f14610416578063ddaf142814610435576101c1565b806391dd7346146103b8578063a1dab4eb14610240578063a217fddf146103e4576101c1565b80632f2ff15d11610158578063654b648711610132578063654b6487146102405780637065cb481461031757806373cf25f81461033657806391d1485414610355576101c1565b80632f2ff15d146102ba57806336568abe146102d957806354c73f7c146102f8576101c1565b80631878068411610194578063187806841461024057806323a69e7514610240578063248a9ca31461025f5780632c8958f614610240576101c1565b806301ffc9a7146101ce5780630d91f99014610202578063173825d914610221576101c1565b366101c157005b3480156101cc575f80fd5b005b3480156101d9575f80fd5b506101ed6101e8366004612df6565b610518565b60405190151581526020015b60405180910390f35b34801561020d575f80fd5b506101cc61021c366004612e84565b6105b0565b34801561022c575f80fd5b506101cc61023b366004612ef0565b61079e565b34801561024b575f80fd5b506101cc61025a366004612f49565b6108a1565b34801561026a575f80fd5b506102ac610279366004612f98565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f9565b3480156102c5575f80fd5b506101cc6102d4366004612faf565b610983565b3480156102e4575f80fd5b506101cc6102f3366004612faf565b6109c6565b348015610303575f80fd5b506101cc610312366004612faf565b610a17565b348015610322575f80fd5b506101cc610331366004612ef0565b610af8565b348015610341575f80fd5b506101cc6103503660046131ac565b610b9f565b348015610360575f80fd5b506101ed61036f366004612faf565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103c3575f80fd5b506103d76103d236600461320c565b610d1f565b6040516101f99190613298565b3480156103ef575f80fd5b506102ac5f81565b348015610402575f80fd5b506101cc6104113660046131ac565b6115c6565b348015610421575f80fd5b506101cc610430366004612faf565b611680565b348015610440575f80fd5b506101cc61044f3660046133e4565b6116c3565b34801561045f575f80fd5b5061047361046e366004613446565b61182f565b604080519283526020830191909152016101f9565b348015610493575f80fd5b506102ac7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b3480156104c6575f80fd5b506101cc6104d5366004612f98565b6119e9565b3480156104e5575f80fd5b506101cc6104f4366004612ef0565b611a90565b348015610504575f80fd5b506101cc6105133660046134d8565b611b62565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806105aa57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff166106325760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b824311156040518060400160405280600181526020017f42000000000000000000000000000000000000000000000000000000000000008152509061068a5760405162461bcd60e51b81526004016106299190613298565b505f5b81811015610798575f808484848181106106a9576106a9613502565b90506020028101906106bb919061352f565b6106c9906020810190612ef0565b6001600160a01b03168585858181106106e4576106e4613502565b90506020028101906106f6919061352f565b6040013586868681811061070c5761070c613502565b905060200281019061071e919061352f565b61072c90602081019061356b565b60405161073a9291906135cc565b5f6040518083038185875af1925050503d805f8114610774576040519150601f19603f3d011682016040523d82523d5f602084013e610779565b606091505b50915091508161078e5761078c81611bf3565b505b505060010161068d565b50505050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff1661081b5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b6001600160a01b03811633036108735760405162461bcd60e51b815260206004820152601160248201527f53656c662d72656d6f7665206f776e65720000000000000000000000000000006044820152606401610629565b61089d7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82611c7d565b5050565b7fc9147e3daeff8607fb9627a5944bc77f03892cccc54d9465147fac738f6c1ea4546001600160a01b0316336001600160a01b0316146040518060400160405280600181526020017f50000000000000000000000000000000000000000000000000000000000000008152509061092b5760405162461bcd60e51b81526004016106299190613298565b506109545f7fc9147e3daeff8607fb9627a5944bc77f03892cccc54d9465147fac738f6c1ea455565b5f80610962838501856134d8565b909250905061097b6001600160a01b0383163383611d4f565b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109bc81611dc3565b6107988383611dd0565b6001600160a01b0381163314610a08576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a128282611c7d565b505050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16610a945760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b60096017610aa28282611eb1565b610aee5760405162461bcd60e51b815260206004820152601560248201527f6e6f7420696e20757067726164652077696e646f7700000000000000000000006044820152606401610629565b6107988484611ee4565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16610b755760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b61089d7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82611dd0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610be95750825b90505f8267ffffffffffffffff166001148015610c055750303b155b905081158015610c13575080155b15610c4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610cab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610cb587876115c6565b8315610d165784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b60605f610d4a7f162468a4167773432f8698ed7a10337877b87465381ef8fdb8745365f36a11005490565b9050336001600160a01b038216148015610d6c57506001600160a01b03811615155b610db85760405162461bcd60e51b815260206004820152601060248201527f4f6e6c7920506f6f6c4d616e61676572000000000000000000000000000000006044820152606401610629565b610de05f7f162468a4167773432f8698ed7a10337877b87465381ef8fdb8745365f36a110055565b5f80808080610df1888a018a613635565b835194995092975090955093509150339015610e685785516001600160a01b03858116911614610e635760405162461bcd60e51b815260206004820152601060248201527f746f6b656e496e206d69736d61746368000000000000000000000000000000006044820152606401610629565b610ec7565b60208601516001600160a01b03858116911614610ec75760405162461bcd60e51b815260206004820152601060248201527f746f6b656e496e206d69736d61746368000000000000000000000000000000006044820152606401610629565b6040517ff3cd914c0000000000000000000000000000000000000000000000000000000081525f906001600160a01b0383169063f3cd914c90610f10908a908a90600401613705565b6020604051808303815f875af1158015610f2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f50919061378a565b90505f610f5d8260801d90565b87519091508290156112c5575f82600f0b1315610fbc5760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746130207369676e000000000000000000006044820152606401610629565b5f81600f0b121561100f5760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746131207369676e000000000000000000006044820152606401610629565b5f611019836137ce565b6fffffffffffffffffffffffffffffffff169050851561110e5789516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b15801561108f575f80fd5b505af11580156110a1573d5f803e3d5ffd5b50505050846001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156110e3573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611108919061378a565b506111f8565b89516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b15801561116a575f80fd5b505af115801561117c573d5f803e3d5ffd5b50611195925050506001600160a01b0389163383611d4f565b846001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af11580156111d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f6919061378a565b505b60208a01516040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015288821660248201526fffffffffffffffffffffffffffffffff84166044820181905291871690630b0d9c09906064015b5f604051808303815f87803b15801561127a575f80fd5b505af115801561128c573d5f803e3d5ffd5b50505050806040516020016112a391815260200190565b6040516020818303038152906040529c505050505050505050505050506105aa565b5f82600f0b12156113185760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746130207369676e000000000000000000006044820152606401610629565b5f81600f0b131561136b5760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746131207369676e000000000000000000006044820152606401610629565b5f611375826137ce565b6fffffffffffffffffffffffffffffffff169050851561146d5760208a01516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b1580156113ee575f80fd5b505af1158015611400573d5f803e3d5ffd5b50505050846001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af1158015611442573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611467919061378a565b5061155a565b60208a01516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b1580156114cc575f80fd5b505af11580156114de573d5f803e3d5ffd5b506114f7925050506001600160a01b0389163383611d4f565b846001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611534573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611558919061378a565b505b89516040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015288821660248201526fffffffffffffffffffffffffffffffff85166044820181905291871690630b0d9c0990606401611263565b6115ce611f6d565b5f82511161161e5760405162461bcd60e51b815260206004820152600c60248201527f656d707479206f776e65727300000000000000000000000000000000000000006044820152606401610629565b5f81511161166e5760405162461bcd60e51b815260206004820152600f60248201527f656d7074792073776170496d706c7300000000000000000000000000000000006044820152606401610629565b61167782611fd6565b61089d8161203d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546116b981611dc3565b6107988383611c7d565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff166117405760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b60808101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156117a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c5919061378a565b90508381101561181a57604080518082018252600281527f42520000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b828111156118255750815b610798818361207b565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd6020526040812054819060ff166118ae5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b864311156040518060400160405280600181526020017f4200000000000000000000000000000000000000000000000000000000000000815250906119065760405162461bcd60e51b81526004016106299190613298565b50611910856121fc565b909250905061195b6119218761380a565b828461193060208a018a6138df565b8681811061194057611940613502565b9050602002810190611952919061352f565b602001356123a4565b82811080156119a457505f84848381811061197857611978613502565b905060200281019061198a9190613943565b611998906020810190612ef0565b6001600160a01b031614155b156119df576119df828585848181106119bf576119bf613502565b90506020028101906119d19190613943565b6119da90613975565b61207b565b9550959350505050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16611a665760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b604051339082156108fc029083905f818181858888f1935050505015801561089d573d5f803e3d5ffd5b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16611b0d5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b611b377fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82611dd0565b5061089d7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e33611c7d565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16611bdf5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b61089d6001600160a01b0383163383611d4f565b6060604482511015611c4a57604080518082018252600181527f55000000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b60048201915081806020019051810190611c649190613980565b60405162461bcd60e51b81526004016106299190613298565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611d3f575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506105aa565b5f9150506105aa565b5092915050565b6040516001600160a01b03838116602483015260448201839052610a1291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b1565b611dcd8133612436565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611d3f575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e673390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506105aa565b5f806018611ec1610e1042613a16565b611ecb9190613a29565b9050808411158015611edc57508281105b949350505050565b6001600160a01b038116611f3a5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420696d706c656d656e746174696f6e000000000000000000006044820152606401610629565b5f611f65837f27a7c29818a01378f2bedc8ddf9f92d28ddb97e7a6080124cb8f283ef9f38e2d613a3c565b919091555050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611fd4576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611fde611f6d565b611fe66124c2565b5f5b815181101561089d576120347fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e83838151811061202757612027613502565b6020026020010151611dd0565b50600101611fe8565b612045611f6d565b5f5b815181101561089d576120738183838151811061206657612066613502565b6020026020010151611ee4565b600101612047565b63ffffffff8160a0015163ffffffff161461214d575f826040516020016120a491815260200190565b60405160208183030381529060405290505f5b60208163ffffffff16101561214a57818163ffffffff16815181106120de576120de613502565b602001015160f81c60f81b8360200151828560a001516120fe9190613a4f565b63ffffffff168151811061211457612114613502565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016120b7565b50505b8060c001511561217d5761217d81606001518383608001516001600160a01b03166124ca9092919063ffffffff16565b5f80825f01516001600160a01b0316836040015184602001516040516121a39190613a6c565b5f6040518083038185875af1925050503d805f81146121dd576040519150601f19603f3d011682016040523d82523d5f602084013e6121e2565b606091505b509150915081610798576121f581611bf3565b5050505050565b5f8080737e2d0c9f25015b5d2b9d71345557560aa391107263038deb0961222386806138df565b600161223260208a018a6138df565b61223d929150613a7d565b6040518463ffffffff1660e01b815260040161225b93929190613b81565b602060405180830381865af4158015612276573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229a919061378a565b90505f8112156122ef57604080518082018252600181527f43000000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b9050805f61230060208601866138df565b8481811061231057612310613502565b9050602002810190612322919061352f565b61232b90613e33565b905061233e815f01518260400151612587565b935080602001518410156040518060400160405280600181526020017f41000000000000000000000000000000000000000000000000000000000000008152509061239c5760405162461bcd60e51b81526004016106299190613298565b505050915091565b610798848484845f612971565b5f8060205f8451602086015f885af1806123d0576040513d5f823e3d81fd5b50505f513d915081156123e75780600114156123f4565b6001600160a01b0384163b155b15610798576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610629565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661089d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610629565b611fd4611f6d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526125498482612b8b565b610798576040516001600160a01b0384811660248301525f604483015261257d91869182169063095ea7b390606401611d7c565b61079884826123b1565b80515f906001600160a01b031661259c573082525b5f82602001515167ffffffffffffffff8111156125bb576125bb612fdd565b6040519080825280602002602001820160405280156125e4578160200160208202803683370190505b50905083815f815181106125fa576125fa613502565b6020026020010181815250505f805f5b856040015151811015612918575f8660400151828151811061262e5761262e613502565b60200260200101519050815f148061267b57506040870151612651600184613f90565b8151811061266157612661613502565b60200260200101516040015160ff16816040015160ff1614155b156126cd5784816040015160ff168151811061269957612699613502565b602002602001015193508392505f85826040015160ff16815181106126c0576126c0613502565b6020026020010181815250505b6040870151515f906126e0846001613a3c565b108015612721575060408801516126f8846001613a3c565b8151811061270857612708613502565b60200260200101516040015160ff16826040015160ff16145b90505f8260e001511515600115150361275e57620f4240836020015162ffffff168761274d9190613fa3565b6127579190613a16565b9050612797565b610100830151156127755750610100820151612797565b811561279457620f4240836020015162ffffff168761274d9190613fa3565b50835b5f620f42408a60200151856040015160ff16815181106127b9576127b9613502565b60200260200101516040015162ffffff16836127d59190613fa3565b6127df9190613a16565b6127e99083613f90565b90505f8a6020015151856060015160016128039190613fba565b60ff16146128115730612814565b8a515b90505f61289d6040518060c00160405280868152602001858152602001846001600160a01b031681526020018e60200151896040015160ff168151811061285d5761285d613502565b602002602001015181526020018e60200151896060015160ff168151811061288757612887613502565b6020026020010151815260200188815250612bd4565b9050856060015160ff16866040015160ff16036128c8576128be8189613a3c565b9750879850612906565b6128d28489613f90565b9750808a876060015160ff16815181106128ee576128ee613502565b602002602001018181516129029190613a3c565b9052505b50506001909401935061260a92505050565b50825f8660600151600181111561293157612931613fd3565b1461293c575f61294e565b600186602001515161294e9190613f90565b8151811061295e5761295e613502565b6020026020010151935050505092915050565b84516001600160a01b03161580159061298e575083856020015151115b156121f5575f856020015185815181106129aa576129aa613502565b60200260200101516040015190508281116129c557506121f5565b5f8185116129d357846129d5565b815b90505f6129e28584613f90565b6129ec8684613f90565b89602001518981518110612a0257612a02613502565b60200260200101515f01518a602001518a81518110612a2357612a23613502565b602002602001015160200151612a399190613f90565b612a439190613fa3565b612a4d9190613a16565b88602001518881518110612a6357612a63613502565b60200260200101515f0151612a789190613a3c565b90505f612a858547613f90565b905080821115612ad75760405162461bcd60e51b815260206004820152601b60248201527f4272696265206578636565647320617661696c61626c652045544800000000006044820152606401610629565b88516040515f916001600160a01b03169084908381818185875af1925050503d805f8114612b20576040519150601f19603f3d011682016040523d82523d5f602084013e612b25565b606091505b50509050806040518060400160405280600c81526020017f4272696265206661696c6564000000000000000000000000000000000000000081525090612b7e5760405162461bcd60e51b81526004016106299190613298565b5050505050505050505050565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612bca57508115612bbc5780600114612bca565b5f866001600160a01b03163b115b9695505050505050565b60a0810151608001515f908190600960ff82161080612bf6575060ff8116600e145b80612c04575060ff8116600f145b15612c1957612c125f612dc2565b9150612c26565b612c236001612dc2565b91505b6001600160a01b038216612c7c5760405162461bcd60e51b815260206004820152601b60248201527f5377617020696d706c656d656e746174696f6e206e6f742073657400000000006044820152606401610629565b5f80836001600160a01b031663237974fa60e01b87604051602401612ca19190614000565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612d0c9190613a6c565b5f60405180830381855af49150503d805f8114612d44576040519150601f19603f3d011682016040523d82523d5f602084013e612d49565b606091505b509150915081612dae57805115612d635780518082602001fd5b604080518082018252600181527f50000000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b80806020019051810190612bca919061378a565b5f80612dee837f27a7c29818a01378f2bedc8ddf9f92d28ddb97e7a6080124cb8f283ef9f38e2d613a3c565b549392505050565b5f60208284031215612e06575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e35575f80fd5b9392505050565b5f8083601f840112612e4c575f80fd5b50813567ffffffffffffffff811115612e63575f80fd5b6020830191508360208260051b8501011115612e7d575f80fd5b9250929050565b5f805f60408486031215612e96575f80fd5b83359250602084013567ffffffffffffffff811115612eb3575f80fd5b612ebf86828701612e3c565b9497909650939450505050565b6001600160a01b0381168114611dcd575f80fd5b8035612eeb81612ecc565b919050565b5f60208284031215612f00575f80fd5b8135612e3581612ecc565b5f8083601f840112612f1b575f80fd5b50813567ffffffffffffffff811115612f32575f80fd5b602083019150836020828501011115612e7d575f80fd5b5f805f8060608587031215612f5c575f80fd5b8435935060208501359250604085013567ffffffffffffffff811115612f80575f80fd5b612f8c87828801612f0b565b95989497509550505050565b5f60208284031215612fa8575f80fd5b5035919050565b5f8060408385031215612fc0575f80fd5b823591506020830135612fd281612ecc565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160e0810167ffffffffffffffff8111828210171561302d5761302d612fdd565b60405290565b6040516060810167ffffffffffffffff8111828210171561302d5761302d612fdd565b60405160a0810167ffffffffffffffff8111828210171561302d5761302d612fdd565b6040805190810167ffffffffffffffff8111828210171561302d5761302d612fdd565b604051610120810167ffffffffffffffff8111828210171561302d5761302d612fdd565b6040516080810167ffffffffffffffff8111828210171561302d5761302d612fdd565b604051601f8201601f1916810167ffffffffffffffff8111828210171561310c5761310c612fdd565b604052919050565b5f67ffffffffffffffff82111561312d5761312d612fdd565b5060051b60200190565b5f82601f830112613146575f80fd5b8135602061315b61315683613114565b6130e3565b8083825260208201915060208460051b87010193508684111561317c575f80fd5b602086015b848110156131a157803561319481612ecc565b8352918301918301613181565b509695505050505050565b5f80604083850312156131bd575f80fd5b823567ffffffffffffffff808211156131d4575f80fd5b6131e086838701613137565b935060208501359150808211156131f5575f80fd5b5061320285828601613137565b9150509250929050565b5f806020838503121561321d575f80fd5b823567ffffffffffffffff811115613233575f80fd5b61323f85828601612f0b565b90969095509350505050565b5f5b8381101561326557818101518382015260200161324d565b50505f910152565b5f815180845261328481602086016020860161324b565b601f01601f19169290920160200192915050565b602081525f612e35602083018461326d565b5f67ffffffffffffffff8211156132c3576132c3612fdd565b50601f01601f191660200190565b5f82601f8301126132e0575f80fd5b81356132ee613156826132aa565b818152846020838601011115613302575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114612eeb575f80fd5b80358015158114612eeb575f80fd5b5f60e08284031215613350575f80fd5b61335861300a565b905061336382612ee0565b8152602082013567ffffffffffffffff81111561337e575f80fd5b61338a848285016132d1565b602083015250604082013560408201526133a660608301612ee0565b60608201526133b760808301612ee0565b60808201526133c860a0830161331e565b60a08201526133d960c08301613331565b60c082015292915050565b5f805f606084860312156133f6575f80fd5b8335925060208401359150604084013567ffffffffffffffff81111561341a575f80fd5b61342686828701613340565b9150509250925092565b5f60408284031215613440575f80fd5b50919050565b5f805f805f6080868803121561345a575f80fd5b85359450602086013567ffffffffffffffff80821115613478575f80fd5b61348489838a01613430565b95506040880135915080821115613499575f80fd5b6134a589838a01613430565b945060608801359150808211156134ba575f80fd5b506134c788828901612e3c565b969995985093965092949392505050565b5f80604083850312156134e9575f80fd5b82356134f481612ecc565b946020939093013593505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112613561575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261359e575f80fd5b83018035915067ffffffffffffffff8211156135b8575f80fd5b602001915036819003821315612e7d575f80fd5b818382375f9101908152919050565b803562ffffff81168114612eeb575f80fd5b5f606082840312156135fd575f80fd5b613605613033565b905061361082613331565b815260208201356020820152604082013561362a81612ecc565b604082015292915050565b5f805f805f85870361016081121561364b575f80fd5b60a0811215613658575f80fd5b50613661613056565b863561366c81612ecc565b8152602087013561367c81612ecc565b602082015261368d604088016135db565b604082015260608701358060020b81146136a5575f80fd5b606082015260808701356136b881612ecc565b608082015294506136cc8760a088016135ed565b93506136db6101008701612ee0565b92506136ea6101208701612ee0565b91506136f96101408701613331565b90509295509295909350565b5f6101206001600160a01b0380865116845280602087015116602085015262ffffff6040870151166040850152606086015160020b60608501528060808701511660808501528451151560a0850152602085015160c08501528060408601511660e085015250806101008401526137818184015f815260200190565b95945050505050565b5f6020828403121561379a575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f81600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103613802576138026137a1565b5f0392915050565b5f604080833603121561381b575f80fd5b613823613079565b833561382e81612ecc565b815260208481013567ffffffffffffffff81111561384a575f80fd5b850136601f82011261385a575f80fd5b803561386861315682613114565b81815260609182028301840191848201919036841115613886575f80fd5b938501935b838510156138cc578085360312156138a1575f80fd5b6138a9613033565b85358152868601358782015288860135898201528352938401939185019161388b565b5093850193909352509195945050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613912575f80fd5b83018035915067ffffffffffffffff82111561392c575f80fd5b6020019150600581901b3603821315612e7d575f80fd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21833603018112613561575f80fd5b5f6105aa3683613340565b5f60208284031215613990575f80fd5b815167ffffffffffffffff8111156139a6575f80fd5b8201601f810184136139b6575f80fd5b80516139c4613156826132aa565b8181528560208385010111156139d8575f80fd5b61378182602083016020860161324b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82613a2457613a246139e9565b500490565b5f82613a3757613a376139e9565b500690565b808201808211156105aa576105aa6137a1565b63ffffffff818116838216019080821115611d4857611d486137a1565b5f825161356181846020870161324b565b8181035f831280158383131683831282161715611d4857611d486137a1565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613af8575f80fd5b830160208101925035905067ffffffffffffffff811115613b17575f80fd5b8060051b3603821315612e7d575f80fd5b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613b58575f80fd5b8260051b80836020870137939093016020019392505050565b803560ff81168114612eeb575f80fd5b60408082528181018490525f906060808401600587901b8501820188855b89811015613cd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818c3603018112613bff575f80fd5b8b0160808135613c0e81612ecc565b6001600160a01b03168552602082810135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112613c4f575f80fd5b8301818101903567ffffffffffffffff811115613c6a575f80fd5b803603821315613c78575f80fd5b8383890152613c8a8489018284613a9c565b93505050613c9a89840184613ac5565b8784038b890152613cac848284613b28565b93505050613cbb888401613b71565b60ff16958801959095529484019493929092019150600101613b9f565b505080945050505050826020830152949350505050565b5f82601f830112613cfe575f80fd5b81356020613d0e61315683613114565b82815260059290921b84018101918181019086841115613d2c575f80fd5b8286015b848110156131a157803567ffffffffffffffff80821115613d4f575f80fd5b818901915061012080601f19848d03011215613d69575f80fd5b613d7161309c565b613d7c888501612ee0565b81526040613d8b8186016135db565b898301526060613d9c818701613b71565b8284015260809150613daf828701613b71565b9083015260a0613dc0868201613b71565b8284015260c09150613dd3828701613331565b9083015260e08581013585811115613de9575f80fd5b613df78f8c838a01016132d1565b83850152506101009450613e0c858701613331565b9083015250920135908201528352918301918301613d30565b803560028110612eeb575f80fd5b5f6060808336031215613e44575f80fd5b613e4c613033565b833581526020808501358183015260408086013567ffffffffffffffff80821115613e75575f80fd5b818801915060808236031215613e89575f80fd5b613e916130c0565b8235613e9c81612ecc565b81528285013582811115613eae575f80fd5b830136601f820112613ebe575f80fd5b8035613ecc61315682613114565b81815290890282018701908781019036831115613ee7575f80fd5b928801925b82841015613f44578a8436031215613f02575f80fd5b613f0a613033565b8435613f1581612ecc565b8152613f22858b016135db565b8a820152613f318986016135db565b818a01528252928a019290880190613eec565b80898601525050505083830135945081851115613f5f575f80fd5b613f6b36868501613cef565b84820152613f7a878401613e25565b9681019690965250508201929092529392505050565b818103818111156105aa576105aa6137a1565b80820281158282048414176105aa576105aa6137a1565b60ff81811683821601908111156105aa576105aa6137a1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020815281516020820152602082015160408201526001600160a01b0360408301511660608201525f6060830151614063608084018280516001600160a01b0316825260208082015162ffffff9081169184019190915260409182015116910152565b50608083015180516001600160a01b031660e0840152602081015162ffffff9081166101008501526040820151166101208401525060a08301516101408381015280516001600160a01b0316610160840152602081015162ffffff811661018085015250604081015160ff81166101a085015250606081015160ff81166101c085015250608081015160ff81166101e08501525060a08101518015156102008501525060c081015161012061022085015261412261028085018261326d565b905060e082015161413861024086018215159052565b5061010082015161026085015280925050509291505056fea264697066735822122033a730f4dc49e8c71a143e1b78af0dd35b4c502bc9ea378a1b5195965fc0922764736f6c63430008180033",
"head": null,
"length": 33550,
"tail": null,
"truncated": false
},
"verified_source": false
},
"capability_graph": {
"address": "0x4f8b564e25337f6a3e66f12553221f6c05a13085",
"block_number": null,
"chain_id": 1,
"codehash": "0x0c635b95af49c84f163cc043b9e7fb41b57c1d16697f341354631a9bcdb329ba",
"created_at": "2026-04-04T03:58:06.000000Z",
"graph_hash": "0x26bfa7f80be3ded4cc3815a805a234e473a756c50dfc4e7596dcc0d12fe73c64",
"graph_json": {
exec
/bin/bash -lc "jq '.artifact' BYTECODE_BUNDLE.json" in /tmp/codex-d0goo8i1
succeeded in 0ms:
{
"codehash": "0x0c635b95af49c84f163cc043b9e7fb41b57c1d16697f341354631a9bcdb329ba",
"compiler_json": {
"compiler_version": null,
"etherscan": {
"contract_name": null,
"implementation": null,
"license": "Unknown",
"proxy": "0",
"swarm_source": null
},
"optimizer_enabled": false,
"optimizer_runs": 0,
"proxy_evidence": {
"status": "not_proxy"
}
},
"implementation_address": null,
"is_proxy": false,
"runtime_bytecode": {
"full": "0x6080604052600436106101ba575f3560e01c806391dd7346116100eb578063e3f33a5e11610089578063f2fde38b11610063578063f2fde38b146104da578063f3fef3a3146104f9578063fa461e3314610240578063fa483e7214610240576101c1565b8063e3f33a5e14610454578063e58378bb14610488578063f14210a6146104bb576101c1565b8063ced0a2d1116100c5578063ced0a2d1146103f7578063d3e1c28414610240578063d547741f14610416578063ddaf142814610435576101c1565b806391dd7346146103b8578063a1dab4eb14610240578063a217fddf146103e4576101c1565b80632f2ff15d11610158578063654b648711610132578063654b6487146102405780637065cb481461031757806373cf25f81461033657806391d1485414610355576101c1565b80632f2ff15d146102ba57806336568abe146102d957806354c73f7c146102f8576101c1565b80631878068411610194578063187806841461024057806323a69e7514610240578063248a9ca31461025f5780632c8958f614610240576101c1565b806301ffc9a7146101ce5780630d91f99014610202578063173825d914610221576101c1565b366101c157005b3480156101cc575f80fd5b005b3480156101d9575f80fd5b506101ed6101e8366004612df6565b610518565b60405190151581526020015b60405180910390f35b34801561020d575f80fd5b506101cc61021c366004612e84565b6105b0565b34801561022c575f80fd5b506101cc61023b366004612ef0565b61079e565b34801561024b575f80fd5b506101cc61025a366004612f49565b6108a1565b34801561026a575f80fd5b506102ac610279366004612f98565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6040519081526020016101f9565b3480156102c5575f80fd5b506101cc6102d4366004612faf565b610983565b3480156102e4575f80fd5b506101cc6102f3366004612faf565b6109c6565b348015610303575f80fd5b506101cc610312366004612faf565b610a17565b348015610322575f80fd5b506101cc610331366004612ef0565b610af8565b348015610341575f80fd5b506101cc6103503660046131ac565b610b9f565b348015610360575f80fd5b506101ed61036f366004612faf565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103c3575f80fd5b506103d76103d236600461320c565b610d1f565b6040516101f99190613298565b3480156103ef575f80fd5b506102ac5f81565b348015610402575f80fd5b506101cc6104113660046131ac565b6115c6565b348015610421575f80fd5b506101cc610430366004612faf565b611680565b348015610440575f80fd5b506101cc61044f3660046133e4565b6116c3565b34801561045f575f80fd5b5061047361046e366004613446565b61182f565b604080519283526020830191909152016101f9565b348015610493575f80fd5b506102ac7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b3480156104c6575f80fd5b506101cc6104d5366004612f98565b6119e9565b3480156104e5575f80fd5b506101cc6104f4366004612ef0565b611a90565b348015610504575f80fd5b506101cc6105133660046134d8565b611b62565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806105aa57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff166106325760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b824311156040518060400160405280600181526020017f42000000000000000000000000000000000000000000000000000000000000008152509061068a5760405162461bcd60e51b81526004016106299190613298565b505f5b81811015610798575f808484848181106106a9576106a9613502565b90506020028101906106bb919061352f565b6106c9906020810190612ef0565b6001600160a01b03168585858181106106e4576106e4613502565b90506020028101906106f6919061352f565b6040013586868681811061070c5761070c613502565b905060200281019061071e919061352f565b61072c90602081019061356b565b60405161073a9291906135cc565b5f6040518083038185875af1925050503d805f8114610774576040519150601f19603f3d011682016040523d82523d5f602084013e610779565b606091505b50915091508161078e5761078c81611bf3565b505b505060010161068d565b50505050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff1661081b5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b6001600160a01b03811633036108735760405162461bcd60e51b815260206004820152601160248201527f53656c662d72656d6f7665206f776e65720000000000000000000000000000006044820152606401610629565b61089d7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82611c7d565b5050565b7fc9147e3daeff8607fb9627a5944bc77f03892cccc54d9465147fac738f6c1ea4546001600160a01b0316336001600160a01b0316146040518060400160405280600181526020017f50000000000000000000000000000000000000000000000000000000000000008152509061092b5760405162461bcd60e51b81526004016106299190613298565b506109545f7fc9147e3daeff8607fb9627a5944bc77f03892cccc54d9465147fac738f6c1ea455565b5f80610962838501856134d8565b909250905061097b6001600160a01b0383163383611d4f565b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546109bc81611dc3565b6107988383611dd0565b6001600160a01b0381163314610a08576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a128282611c7d565b505050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16610a945760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b60096017610aa28282611eb1565b610aee5760405162461bcd60e51b815260206004820152601560248201527f6e6f7420696e20757067726164652077696e646f7700000000000000000000006044820152606401610629565b6107988484611ee4565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16610b755760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b61089d7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82611dd0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610be95750825b90505f8267ffffffffffffffff166001148015610c055750303b155b905081158015610c13575080155b15610c4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610cab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610cb587876115c6565b8315610d165784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b60605f610d4a7f162468a4167773432f8698ed7a10337877b87465381ef8fdb8745365f36a11005490565b9050336001600160a01b038216148015610d6c57506001600160a01b03811615155b610db85760405162461bcd60e51b815260206004820152601060248201527f4f6e6c7920506f6f6c4d616e61676572000000000000000000000000000000006044820152606401610629565b610de05f7f162468a4167773432f8698ed7a10337877b87465381ef8fdb8745365f36a110055565b5f80808080610df1888a018a613635565b835194995092975090955093509150339015610e685785516001600160a01b03858116911614610e635760405162461bcd60e51b815260206004820152601060248201527f746f6b656e496e206d69736d61746368000000000000000000000000000000006044820152606401610629565b610ec7565b60208601516001600160a01b03858116911614610ec75760405162461bcd60e51b815260206004820152601060248201527f746f6b656e496e206d69736d61746368000000000000000000000000000000006044820152606401610629565b6040517ff3cd914c0000000000000000000000000000000000000000000000000000000081525f906001600160a01b0383169063f3cd914c90610f10908a908a90600401613705565b6020604051808303815f875af1158015610f2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f50919061378a565b90505f610f5d8260801d90565b87519091508290156112c5575f82600f0b1315610fbc5760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746130207369676e000000000000000000006044820152606401610629565b5f81600f0b121561100f5760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746131207369676e000000000000000000006044820152606401610629565b5f611019836137ce565b6fffffffffffffffffffffffffffffffff169050851561110e5789516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b15801561108f575f80fd5b505af11580156110a1573d5f803e3d5ffd5b50505050846001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156110e3573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611108919061378a565b506111f8565b89516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b15801561116a575f80fd5b505af115801561117c573d5f803e3d5ffd5b50611195925050506001600160a01b0389163383611d4f565b846001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af11580156111d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f6919061378a565b505b60208a01516040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015288821660248201526fffffffffffffffffffffffffffffffff84166044820181905291871690630b0d9c09906064015b5f604051808303815f87803b15801561127a575f80fd5b505af115801561128c573d5f803e3d5ffd5b50505050806040516020016112a391815260200190565b6040516020818303038152906040529c505050505050505050505050506105aa565b5f82600f0b12156113185760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746130207369676e000000000000000000006044820152606401610629565b5f81600f0b131561136b5760405162461bcd60e51b815260206004820152601660248201527f556e65787065637465642064656c746131207369676e000000000000000000006044820152606401610629565b5f611375826137ce565b6fffffffffffffffffffffffffffffffff169050851561146d5760208a01516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b1580156113ee575f80fd5b505af1158015611400573d5f803e3d5ffd5b50505050846001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af1158015611442573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611467919061378a565b5061155a565b60208a01516040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529086169063a5841194906024015f604051808303815f87803b1580156114cc575f80fd5b505af11580156114de573d5f803e3d5ffd5b506114f7925050506001600160a01b0389163383611d4f565b846001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611534573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611558919061378a565b505b89516040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015288821660248201526fffffffffffffffffffffffffffffffff85166044820181905291871690630b0d9c0990606401611263565b6115ce611f6d565b5f82511161161e5760405162461bcd60e51b815260206004820152600c60248201527f656d707479206f776e65727300000000000000000000000000000000000000006044820152606401610629565b5f81511161166e5760405162461bcd60e51b815260206004820152600f60248201527f656d7074792073776170496d706c7300000000000000000000000000000000006044820152606401610629565b61167782611fd6565b61089d8161203d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546116b981611dc3565b6107988383611c7d565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff166117405760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b60808101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156117a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c5919061378a565b90508381101561181a57604080518082018252600281527f42520000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b828111156118255750815b610798818361207b565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd6020526040812054819060ff166118ae5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b864311156040518060400160405280600181526020017f4200000000000000000000000000000000000000000000000000000000000000815250906119065760405162461bcd60e51b81526004016106299190613298565b50611910856121fc565b909250905061195b6119218761380a565b828461193060208a018a6138df565b8681811061194057611940613502565b9050602002810190611952919061352f565b602001356123a4565b82811080156119a457505f84848381811061197857611978613502565b905060200281019061198a9190613943565b611998906020810190612ef0565b6001600160a01b031614155b156119df576119df828585848181106119bf576119bf613502565b90506020028101906119d19190613943565b6119da90613975565b61207b565b9550959350505050565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16611a665760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b604051339082156108fc029083905f818181858888f1935050505015801561089d573d5f803e3d5ffd5b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16611b0d5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b611b377fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e82611dd0565b5061089d7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e33611c7d565b335f9081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16611bdf5760405162461bcd60e51b815260206004820152600a60248201527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610629565b61089d6001600160a01b0383163383611d4f565b6060604482511015611c4a57604080518082018252600181527f55000000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b60048201915081806020019051810190611c649190613980565b60405162461bcd60e51b81526004016106299190613298565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611d3f575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506105aa565b5f9150506105aa565b5092915050565b6040516001600160a01b03838116602483015260448201839052610a1291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123b1565b611dcd8133612436565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611d3f575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e673390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506105aa565b5f806018611ec1610e1042613a16565b611ecb9190613a29565b9050808411158015611edc57508281105b949350505050565b6001600160a01b038116611f3a5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420696d706c656d656e746174696f6e000000000000000000006044820152606401610629565b5f611f65837f27a7c29818a01378f2bedc8ddf9f92d28ddb97e7a6080124cb8f283ef9f38e2d613a3c565b919091555050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611fd4576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611fde611f6d565b611fe66124c2565b5f5b815181101561089d576120347fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e83838151811061202757612027613502565b6020026020010151611dd0565b50600101611fe8565b612045611f6d565b5f5b815181101561089d576120738183838151811061206657612066613502565b6020026020010151611ee4565b600101612047565b63ffffffff8160a0015163ffffffff161461214d575f826040516020016120a491815260200190565b60405160208183030381529060405290505f5b60208163ffffffff16101561214a57818163ffffffff16815181106120de576120de613502565b602001015160f81c60f81b8360200151828560a001516120fe9190613a4f565b63ffffffff168151811061211457612114613502565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016120b7565b50505b8060c001511561217d5761217d81606001518383608001516001600160a01b03166124ca9092919063ffffffff16565b5f80825f01516001600160a01b0316836040015184602001516040516121a39190613a6c565b5f6040518083038185875af1925050503d805f81146121dd576040519150601f19603f3d011682016040523d82523d5f602084013e6121e2565b606091505b509150915081610798576121f581611bf3565b5050505050565b5f8080737e2d0c9f25015b5d2b9d71345557560aa391107263038deb0961222386806138df565b600161223260208a018a6138df565b61223d929150613a7d565b6040518463ffffffff1660e01b815260040161225b93929190613b81565b602060405180830381865af4158015612276573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229a919061378a565b90505f8112156122ef57604080518082018252600181527f43000000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b9050805f61230060208601866138df565b8481811061231057612310613502565b9050602002810190612322919061352f565b61232b90613e33565b905061233e815f01518260400151612587565b935080602001518410156040518060400160405280600181526020017f41000000000000000000000000000000000000000000000000000000000000008152509061239c5760405162461bcd60e51b81526004016106299190613298565b505050915091565b610798848484845f612971565b5f8060205f8451602086015f885af1806123d0576040513d5f823e3d81fd5b50505f513d915081156123e75780600114156123f4565b6001600160a01b0384163b155b15610798576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610629565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661089d576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610629565b611fd4611f6d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526125498482612b8b565b610798576040516001600160a01b0384811660248301525f604483015261257d91869182169063095ea7b390606401611d7c565b61079884826123b1565b80515f906001600160a01b031661259c573082525b5f82602001515167ffffffffffffffff8111156125bb576125bb612fdd565b6040519080825280602002602001820160405280156125e4578160200160208202803683370190505b50905083815f815181106125fa576125fa613502565b6020026020010181815250505f805f5b856040015151811015612918575f8660400151828151811061262e5761262e613502565b60200260200101519050815f148061267b57506040870151612651600184613f90565b8151811061266157612661613502565b60200260200101516040015160ff16816040015160ff1614155b156126cd5784816040015160ff168151811061269957612699613502565b602002602001015193508392505f85826040015160ff16815181106126c0576126c0613502565b6020026020010181815250505b6040870151515f906126e0846001613a3c565b108015612721575060408801516126f8846001613a3c565b8151811061270857612708613502565b60200260200101516040015160ff16826040015160ff16145b90505f8260e001511515600115150361275e57620f4240836020015162ffffff168761274d9190613fa3565b6127579190613a16565b9050612797565b610100830151156127755750610100820151612797565b811561279457620f4240836020015162ffffff168761274d9190613fa3565b50835b5f620f42408a60200151856040015160ff16815181106127b9576127b9613502565b60200260200101516040015162ffffff16836127d59190613fa3565b6127df9190613a16565b6127e99083613f90565b90505f8a6020015151856060015160016128039190613fba565b60ff16146128115730612814565b8a515b90505f61289d6040518060c00160405280868152602001858152602001846001600160a01b031681526020018e60200151896040015160ff168151811061285d5761285d613502565b602002602001015181526020018e60200151896060015160ff168151811061288757612887613502565b6020026020010151815260200188815250612bd4565b9050856060015160ff16866040015160ff16036128c8576128be8189613a3c565b9750879850612906565b6128d28489613f90565b9750808a876060015160ff16815181106128ee576128ee613502565b602002602001018181516129029190613a3c565b9052505b50506001909401935061260a92505050565b50825f8660600151600181111561293157612931613fd3565b1461293c575f61294e565b600186602001515161294e9190613f90565b8151811061295e5761295e613502565b6020026020010151935050505092915050565b84516001600160a01b03161580159061298e575083856020015151115b156121f5575f856020015185815181106129aa576129aa613502565b60200260200101516040015190508281116129c557506121f5565b5f8185116129d357846129d5565b815b90505f6129e28584613f90565b6129ec8684613f90565b89602001518981518110612a0257612a02613502565b60200260200101515f01518a602001518a81518110612a2357612a23613502565b602002602001015160200151612a399190613f90565b612a439190613fa3565b612a4d9190613a16565b88602001518881518110612a6357612a63613502565b60200260200101515f0151612a789190613a3c565b90505f612a858547613f90565b905080821115612ad75760405162461bcd60e51b815260206004820152601b60248201527f4272696265206578636565647320617661696c61626c652045544800000000006044820152606401610629565b88516040515f916001600160a01b03169084908381818185875af1925050503d805f8114612b20576040519150601f19603f3d011682016040523d82523d5f602084013e612b25565b606091505b50509050806040518060400160405280600c81526020017f4272696265206661696c6564000000000000000000000000000000000000000081525090612b7e5760405162461bcd60e51b81526004016106299190613298565b5050505050505050505050565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612bca57508115612bbc5780600114612bca565b5f866001600160a01b03163b115b9695505050505050565b60a0810151608001515f908190600960ff82161080612bf6575060ff8116600e145b80612c04575060ff8116600f145b15612c1957612c125f612dc2565b9150612c26565b612c236001612dc2565b91505b6001600160a01b038216612c7c5760405162461bcd60e51b815260206004820152601b60248201527f5377617020696d706c656d656e746174696f6e206e6f742073657400000000006044820152606401610629565b5f80836001600160a01b031663237974fa60e01b87604051602401612ca19190614000565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612d0c9190613a6c565b5f60405180830381855af49150503d805f8114612d44576040519150601f19603f3d011682016040523d82523d5f602084013e612d49565b606091505b509150915081612dae57805115612d635780518082602001fd5b604080518082018252600181527f50000000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526106299190600401613298565b80806020019051810190612bca919061378a565b5f80612dee837f27a7c29818a01378f2bedc8ddf9f92d28ddb97e7a6080124cb8f283ef9f38e2d613a3c565b549392505050565b5f60208284031215612e06575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e35575f80fd5b9392505050565b5f8083601f840112612e4c575f80fd5b50813567ffffffffffffffff811115612e63575f80fd5b6020830191508360208260051b8501011115612e7d575f80fd5b9250929050565b5f805f60408486031215612e96575f80fd5b83359250602084013567ffffffffffffffff811115612eb3575f80fd5b612ebf86828701612e3c565b9497909650939450505050565b6001600160a01b0381168114611dcd575f80fd5b8035612eeb81612ecc565b919050565b5f60208284031215612f00575f80fd5b8135612e3581612ecc565b5f8083601f840112612f1b575f80fd5b50813567ffffffffffffffff811115612f32575f80fd5b602083019150836020828501011115612e7d575f80fd5b5f805f8060608587031215612f5c575f80fd5b8435935060208501359250604085013567ffffffffffffffff811115612f80575f80fd5b612f8c87828801612f0b565b95989497509550505050565b5f60208284031215612fa8575f80fd5b5035919050565b5f8060408385031215612fc0575f80fd5b823591506020830135612fd281612ecc565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160e0810167ffffffffffffffff8111828210171561302d5761302d612fdd565b60405290565b6040516060810167ffffffffffffffff8111828210171561302d5761302d612fdd565b60405160a0810167ffffffffffffffff8111828210171561302d5761302d612fdd565b6040805190810167ffffffffffffffff8111828210171561302d5761302d612fdd565b604051610120810167ffffffffffffffff8111828210171561302d5761302d612fdd565b6040516080810167ffffffffffffffff8111828210171561302d5761302d612fdd565b604051601f8201601f1916810167ffffffffffffffff8111828210171561310c5761310c612fdd565b604052919050565b5f67ffffffffffffffff82111561312d5761312d612fdd565b5060051b60200190565b5f82601f830112613146575f80fd5b8135602061315b61315683613114565b6130e3565b8083825260208201915060208460051b87010193508684111561317c575f80fd5b602086015b848110156131a157803561319481612ecc565b8352918301918301613181565b509695505050505050565b5f80604083850312156131bd575f80fd5b823567ffffffffffffffff808211156131d4575f80fd5b6131e086838701613137565b935060208501359150808211156131f5575f80fd5b5061320285828601613137565b9150509250929050565b5f806020838503121561321d575f80fd5b823567ffffffffffffffff811115613233575f80fd5b61323f85828601612f0b565b90969095509350505050565b5f5b8381101561326557818101518382015260200161324d565b50505f910152565b5f815180845261328481602086016020860161324b565b601f01601f19169290920160200192915050565b602081525f612e35602083018461326d565b5f67ffffffffffffffff8211156132c3576132c3612fdd565b50601f01601f191660200190565b5f82601f8301126132e0575f80fd5b81356132ee613156826132aa565b818152846020838601011115613302575f80fd5b816020850160208301375f918101602001919091529392505050565b803563ffffffff81168114612eeb575f80fd5b80358015158114612eeb575f80fd5b5f60e08284031215613350575f80fd5b61335861300a565b905061336382612ee0565b8152602082013567ffffffffffffffff81111561337e575f80fd5b61338a848285016132d1565b602083015250604082013560408201526133a660608301612ee0565b60608201526133b760808301612ee0565b60808201526133c860a0830161331e565b60a08201526133d960c08301613331565b60c082015292915050565b5f805f606084860312156133f6575f80fd5b8335925060208401359150604084013567ffffffffffffffff81111561341a575f80fd5b61342686828701613340565b9150509250925092565b5f60408284031215613440575f80fd5b50919050565b5f805f805f6080868803121561345a575f80fd5b85359450602086013567ffffffffffffffff80821115613478575f80fd5b61348489838a01613430565b95506040880135915080821115613499575f80fd5b6134a589838a01613430565b945060608801359150808211156134ba575f80fd5b506134c788828901612e3c565b969995985093965092949392505050565b5f80604083850312156134e9575f80fd5b82356134f481612ecc565b946020939093013593505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112613561575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261359e575f80fd5b83018035915067ffffffffffffffff8211156135b8575f80fd5b602001915036819003821315612e7d575f80fd5b818382375f9101908152919050565b803562ffffff81168114612eeb575f80fd5b5f606082840312156135fd575f80fd5b613605613033565b905061361082613331565b815260208201356020820152604082013561362a81612ecc565b604082015292915050565b5f805f805f85870361016081121561364b575f80fd5b60a0811215613658575f80fd5b50613661613056565b863561366c81612ecc565b8152602087013561367c81612ecc565b602082015261368d604088016135db565b604082015260608701358060020b81146136a5575f80fd5b606082015260808701356136b881612ecc565b608082015294506136cc8760a088016135ed565b93506136db6101008701612ee0565b92506136ea6101208701612ee0565b91506136f96101408701613331565b90509295509295909350565b5f6101206001600160a01b0380865116845280602087015116602085015262ffffff6040870151166040850152606086015160020b60608501528060808701511660808501528451151560a0850152602085015160c08501528060408601511660e085015250806101008401526137818184015f815260200190565b95945050505050565b5f6020828403121561379a575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f81600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103613802576138026137a1565b5f0392915050565b5f604080833603121561381b575f80fd5b613823613079565b833561382e81612ecc565b815260208481013567ffffffffffffffff81111561384a575f80fd5b850136601f82011261385a575f80fd5b803561386861315682613114565b81815260609182028301840191848201919036841115613886575f80fd5b938501935b838510156138cc578085360312156138a1575f80fd5b6138a9613033565b85358152868601358782015288860135898201528352938401939185019161388b565b5093850193909352509195945050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613912575f80fd5b83018035915067ffffffffffffffff82111561392c575f80fd5b6020019150600581901b3603821315612e7d575f80fd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21833603018112613561575f80fd5b5f6105aa3683613340565b5f60208284031215613990575f80fd5b815167ffffffffffffffff8111156139a6575f80fd5b8201601f810184136139b6575f80fd5b80516139c4613156826132aa565b8181528560208385010111156139d8575f80fd5b61378182602083016020860161324b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82613a2457613a246139e9565b500490565b5f82613a3757613a376139e9565b500690565b808201808211156105aa576105aa6137a1565b63ffffffff818116838216019080821115611d4857611d486137a1565b5f825161356181846020870161324b565b8181035f831280158383131683831282161715611d4857611d486137a1565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613af8575f80fd5b830160208101925035905067ffffffffffffffff811115613b17575f80fd5b8060051b3603821315612e7d575f80fd5b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613b58575f80fd5b8260051b80836020870137939093016020019392505050565b803560ff81168114612eeb575f80fd5b60408082528181018490525f906060808401600587901b8501820188855b89811015613cd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818c3603018112613bff575f80fd5b8b0160808135613c0e81612ecc565b6001600160a01b03168552602082810135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112613c4f575f80fd5b8301818101903567ffffffffffffffff811115613c6a575f80fd5b803603821315613c78575f80fd5b8383890152613c8a8489018284613a9c565b93505050613c9a89840184613ac5565b8784038b890152613cac848284613b28565b93505050613cbb888401613b71565b60ff16958801959095529484019493929092019150600101613b9f565b505080945050505050826020830152949350505050565b5f82601f830112613cfe575f80fd5b81356020613d0e61315683613114565b82815260059290921b84018101918181019086841115613d2c575f80fd5b8286015b848110156131a157803567ffffffffffffffff80821115613d4f575f80fd5b818901915061012080601f19848d03011215613d69575f80fd5b613d7161309c565b613d7c888501612ee0565b81526040613d8b8186016135db565b898301526060613d9c818701613b71565b8284015260809150613daf828701613b71565b9083015260a0613dc0868201613b71565b8284015260c09150613dd3828701613331565b9083015260e08581013585811115613de9575f80fd5b613df78f8c838a01016132d1565b83850152506101009450613e0c858701613331565b9083015250920135908201528352918301918301613d30565b803560028110612eeb575f80fd5b5f6060808336031215613e44575f80fd5b613e4c613033565b833581526020808501358183015260408086013567ffffffffffffffff80821115613e75575f80fd5b818801915060808236031215613e89575f80fd5b613e916130c0565b8235613e9c81612ecc565b81528285013582811115613eae575f80fd5b830136601f820112613ebe575f80fd5b8035613ecc61315682613114565b81815290890282018701908781019036831115613ee7575f80fd5b928801925b82841015613f44578a8436031215613f02575f80fd5b613f0a613033565b8435613f1581612ecc565b8152613f22858b016135db565b8a820152613f318986016135db565b818a01528252928a019290880190613eec565b80898601525050505083830135945081851115613f5f575f80fd5b613f6b36868501613cef565b84820152613f7a878401613e25565b9681019690965250508201929092529392505050565b818103818111156105aa576105aa6137a1565b80820281158282048414176105aa576105aa6137a1565b60ff81811683821601908111156105aa576105aa6137a1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020815281516020820152602082015160408201526001600160a01b0360408301511660608201525f6060830151614063608084018280516001600160a01b0316825260208082015162ffffff9081169184019190915260409182015116910152565b50608083015180516001600160a01b031660e0840152602081015162ffffff9081166101008501526040820151166101208401525060a08301516101408381015280516001600160a01b0316610160840152602081015162ffffff811661018085015250604081015160ff81166101a085015250606081015160ff81166101c085015250608081015160ff81166101e08501525060a08101518015156102008501525060c081015161012061022085015261412261028085018261326d565b905060e082015161413861024086018215159052565b5061010082015161026085015280925050509291505056fea264697066735822122033a730f4dc49e8c71a143e1b78af0dd35b4c502bc9ea378a1b5195965fc0922764736f6c63430008180033",
"head": null,
"length": 33550,
"tail": null,
"truncated": false
},
"verified_source": false
}
I’ve read the bundle and confirmed the implementation bytecode is embedded, along with proxy linkage from the target proxy. Next I’m mapping the high-risk entrypoints and callsites from the runtime bytecode, then I’ll decide whether the evidence supports concrete implementation findings or only lower-confidence proxy/mechanics notes.
→ Map selectors, guards, storage slots, and privileged entrypoints from BYTECODE_BUNDLE.json and runtime bytecode
• Trace high-risk call/delegatecall/value-transfer paths and classify whether targets are controlled or constrained
• Assemble conservative findings with explicit bytecode uncertainty and exact pc/selector references
exec
/bin/bash -lc "python - <<'PY'
import json
from textwrap import wrap
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bytecode=data['artifact']['runtime_bytecode']['full'][2:]
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
code=bytes.fromhex(bytecode)
def dis(start,end):
pc=start
while pc<end and pc<len(code):
op=code[pc]
name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f
arg=code[pc+1:pc+1+n].hex()
print(f'{pc:5d}: {name} 0x{arg}')
pc+=1+n
else:
print(f'{pc:5d}: {name}')
pc+=1
for rng in [(0,700),(2200,2405),(2975,3565),(3800,3905),(4200,4325),(4440,4565),(4700,4755),(5070,5430),(6000,6065),(6760,6820),(8600,8845),(9130,9170),(10970,11210),(11520,11570),(16710,16750)]:
print('\\n=== range',rng,'===')
dis(*rng)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
=== range (0, 700) ===
0: PUSH1 0x80
2: PUSH1 0x40
4: MSTORE
5: PUSH1 0x04
7: CALLDATASIZE
8: LT
9: PUSH2 0x01ba
12: JUMPI
13: PUSH0
14: CALLDATALOAD
15: PUSH1 0xe0
17: SHR
18: DUP1
19: PUSH4 0x91dd7346
24: GT
25: PUSH2 0x00eb
28: JUMPI
29: DUP1
30: PUSH4 0xe3f33a5e
35: GT
36: PUSH2 0x0089
39: JUMPI
40: DUP1
41: PUSH4 0xf2fde38b
46: GT
47: PUSH2 0x0063
50: JUMPI
51: DUP1
52: PUSH4 0xf2fde38b
57: EQ
58: PUSH2 0x04da
61: JUMPI
62: DUP1
63: PUSH4 0xf3fef3a3
68: EQ
69: PUSH2 0x04f9
72: JUMPI
73: DUP1
74: PUSH4 0xfa461e33
79: EQ
80: PUSH2 0x0240
83: JUMPI
84: DUP1
85: PUSH4 0xfa483e72
90: EQ
91: PUSH2 0x0240
94: JUMPI
95: PUSH2 0x01c1
98: JUMP
99: JUMPDEST
100: DUP1
101: PUSH4 0xe3f33a5e
106: EQ
107: PUSH2 0x0454
110: JUMPI
111: DUP1
112: PUSH4 0xe58378bb
117: EQ
118: PUSH2 0x0488
121: JUMPI
122: DUP1
123: PUSH4 0xf14210a6
128: EQ
129: PUSH2 0x04bb
132: JUMPI
133: PUSH2 0x01c1
136: JUMP
137: JUMPDEST
138: DUP1
139: PUSH4 0xced0a2d1
144: GT
145: PUSH2 0x00c5
148: JUMPI
149: DUP1
150: PUSH4 0xced0a2d1
155: EQ
156: PUSH2 0x03f7
159: JUMPI
160: DUP1
161: PUSH4 0xd3e1c284
166: EQ
167: PUSH2 0x0240
170: JUMPI
171: DUP1
172: PUSH4 0xd547741f
177: EQ
178: PUSH2 0x0416
181: JUMPI
182: DUP1
183: PUSH4 0xddaf1428
188: EQ
189: PUSH2 0x0435
192: JUMPI
193: PUSH2 0x01c1
196: JUMP
197: JUMPDEST
198: DUP1
199: PUSH4 0x91dd7346
204: EQ
205: PUSH2 0x03b8
208: JUMPI
209: DUP1
210: PUSH4 0xa1dab4eb
215: EQ
216: PUSH2 0x0240
219: JUMPI
220: DUP1
221: PUSH4 0xa217fddf
226: EQ
227: PUSH2 0x03e4
230: JUMPI
231: PUSH2 0x01c1
234: JUMP
235: JUMPDEST
236: DUP1
237: PUSH4 0x2f2ff15d
242: GT
243: PUSH2 0x0158
246: JUMPI
247: DUP1
248: PUSH4 0x654b6487
253: GT
254: PUSH2 0x0132
257: JUMPI
258: DUP1
259: PUSH4 0x654b6487
264: EQ
265: PUSH2 0x0240
268: JUMPI
269: DUP1
270: PUSH4 0x7065cb48
275: EQ
276: PUSH2 0x0317
279: JUMPI
280: DUP1
281: PUSH4 0x73cf25f8
286: EQ
287: PUSH2 0x0336
290: JUMPI
291: DUP1
292: PUSH4 0x91d14854
297: EQ
298: PUSH2 0x0355
301: JUMPI
302: PUSH2 0x01c1
305: JUMP
306: JUMPDEST
307: DUP1
308: PUSH4 0x2f2ff15d
313: EQ
314: PUSH2 0x02ba
317: JUMPI
318: DUP1
319: PUSH4 0x36568abe
324: EQ
325: PUSH2 0x02d9
328: JUMPI
329: DUP1
330: PUSH4 0x54c73f7c
335: EQ
336: PUSH2 0x02f8
339: JUMPI
340: PUSH2 0x01c1
343: JUMP
344: JUMPDEST
345: DUP1
346: PUSH4 0x18780684
351: GT
352: PUSH2 0x0194
355: JUMPI
356: DUP1
357: PUSH4 0x18780684
362: EQ
363: PUSH2 0x0240
366: JUMPI
367: DUP1
368: PUSH4 0x23a69e75
373: EQ
374: PUSH2 0x0240
377: JUMPI
378: DUP1
379: PUSH4 0x248a9ca3
384: EQ
385: PUSH2 0x025f
388: JUMPI
389: DUP1
390: PUSH4 0x2c8958f6
395: EQ
396: PUSH2 0x0240
399: JUMPI
400: PUSH2 0x01c1
403: JUMP
404: JUMPDEST
405: DUP1
406: PUSH4 0x01ffc9a7
411: EQ
412: PUSH2 0x01ce
415: JUMPI
416: DUP1
417: PUSH4 0x0d91f990
422: EQ
423: PUSH2 0x0202
426: JUMPI
427: DUP1
428: PUSH4 0x173825d9
433: EQ
434: PUSH2 0x0221
437: JUMPI
438: PUSH2 0x01c1
441: JUMP
442: JUMPDEST
443: CALLDATASIZE
444: PUSH2 0x01c1
447: JUMPI
448: STOP
449: JUMPDEST
450: CALLVALUE
451: DUP1
452: ISZERO
453: PUSH2 0x01cc
456: JUMPI
457: PUSH0
458: DUP1
459: REVERT
460: JUMPDEST
461: STOP
462: JUMPDEST
463: CALLVALUE
464: DUP1
465: ISZERO
466: PUSH2 0x01d9
469: JUMPI
470: PUSH0
471: DUP1
472: REVERT
473: JUMPDEST
474: POP
475: PUSH2 0x01ed
478: PUSH2 0x01e8
481: CALLDATASIZE
482: PUSH1 0x04
484: PUSH2 0x2df6
487: JUMP
488: JUMPDEST
489: PUSH2 0x0518
492: JUMP
493: JUMPDEST
494: PUSH1 0x40
496: MLOAD
497: SWAP1
498: ISZERO
499: ISZERO
500: DUP2
501: MSTORE
502: PUSH1 0x20
504: ADD
505: JUMPDEST
506: PUSH1 0x40
508: MLOAD
509: DUP1
510: SWAP2
511: SUB
512: SWAP1
513: RETURN
514: JUMPDEST
515: CALLVALUE
516: DUP1
517: ISZERO
518: PUSH2 0x020d
521: JUMPI
522: PUSH0
523: DUP1
524: REVERT
525: JUMPDEST
526: POP
527: PUSH2 0x01cc
530: PUSH2 0x021c
533: CALLDATASIZE
534: PUSH1 0x04
536: PUSH2 0x2e84
539: JUMP
540: JUMPDEST
541: PUSH2 0x05b0
544: JUMP
545: JUMPDEST
546: CALLVALUE
547: DUP1
548: ISZERO
549: PUSH2 0x022c
552: JUMPI
553: PUSH0
554: DUP1
555: REVERT
556: JUMPDEST
557: POP
558: PUSH2 0x01cc
561: PUSH2 0x023b
564: CALLDATASIZE
565: PUSH1 0x04
567: PUSH2 0x2ef0
570: JUMP
571: JUMPDEST
572: PUSH2 0x079e
575: JUMP
576: JUMPDEST
577: CALLVALUE
578: DUP1
579: ISZERO
580: PUSH2 0x024b
583: JUMPI
584: PUSH0
585: DUP1
586: REVERT
587: JUMPDEST
588: POP
589: PUSH2 0x01cc
592: PUSH2 0x025a
595: CALLDATASIZE
596: PUSH1 0x04
598: PUSH2 0x2f49
601: JUMP
602: JUMPDEST
603: PUSH2 0x08a1
606: JUMP
607: JUMPDEST
608: CALLVALUE
609: DUP1
610: ISZERO
611: PUSH2 0x026a
614: JUMPI
615: PUSH0
616: DUP1
617: REVERT
618: JUMPDEST
619: POP
620: PUSH2 0x02ac
623: PUSH2 0x0279
626: CALLDATASIZE
627: PUSH1 0x04
629: PUSH2 0x2f98
632: JUMP
633: JUMPDEST
634: PUSH0
635: SWAP1
636: DUP2
637: MSTORE
638: PUSH32 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800
671: PUSH1 0x20
673: MSTORE
674: PUSH1 0x40
676: SWAP1
677: SHA3
678: PUSH1 0x01
680: ADD
681: SLOAD
682: SWAP1
683: JUMP
684: JUMPDEST
685: PUSH1 0x40
687: MLOAD
688: SWAP1
689: DUP2
690: MSTORE
691: PUSH1 0x20
693: ADD
694: PUSH2 0x01f9
697: JUMP
698: JUMPDEST
699: CALLVALUE
=== range (2200, 2405) ===
2200: DUP3
2201: PUSH2 0x1c7d
2204: JUMP
2205: JUMPDEST
2206: POP
2207: POP
2208: JUMP
2209: JUMPDEST
2210: PUSH32 0xc9147e3daeff8607fb9627a5944bc77f03892cccc54d9465147fac738f6c1ea4
2243: SLOAD
2244: PUSH1 0x01
2246: PUSH1 0x01
2248: PUSH1 0xa0
2250: SHL
2251: SUB
2252: AND
2253: CALLER
2254: PUSH1 0x01
2256: PUSH1 0x01
2258: PUSH1 0xa0
2260: SHL
2261: SUB
2262: AND
2263: EQ
2264: PUSH1 0x40
2266: MLOAD
2267: DUP1
2268: PUSH1 0x40
2270: ADD
2271: PUSH1 0x40
2273: MSTORE
2274: DUP1
2275: PUSH1 0x01
2277: DUP2
2278: MSTORE
2279: PUSH1 0x20
2281: ADD
2282: PUSH32 0x5000000000000000000000000000000000000000000000000000000000000000
2315: DUP2
2316: MSTORE
2317: POP
2318: SWAP1
2319: PUSH2 0x092b
2322: JUMPI
2323: PUSH1 0x40
2325: MLOAD
2326: PUSH3 0x461bcd
2330: PUSH1 0xe5
2332: SHL
2333: DUP2
2334: MSTORE
2335: PUSH1 0x04
2337: ADD
2338: PUSH2 0x0629
2341: SWAP2
2342: SWAP1
2343: PUSH2 0x3298
2346: JUMP
2347: JUMPDEST
2348: POP
2349: PUSH2 0x0954
2352: PUSH0
2353: PUSH32 0xc9147e3daeff8607fb9627a5944bc77f03892cccc54d9465147fac738f6c1ea4
2386: SSTORE
2387: JUMP
2388: JUMPDEST
2389: PUSH0
2390: DUP1
2391: PUSH2 0x0962
2394: DUP4
2395: DUP6
2396: ADD
2397: DUP6
2398: PUSH2 0x34d8
2401: JUMP
2402: JUMPDEST
2403: SWAP1
2404: SWAP3
=== range (2975, 3565) ===
2975: JUMPDEST
2976: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
3009: DUP1
3010: SLOAD
3011: PUSH9 0x010000000000000000
3021: DUP2
3022: DIV
3023: PUSH1 0xff
3025: AND
3026: ISZERO
3027: SWAP1
3028: PUSH8 0xffffffffffffffff
3037: AND
3038: PUSH0
3039: DUP2
3040: ISZERO
3041: DUP1
3042: ISZERO
3043: PUSH2 0x0be9
3046: JUMPI
3047: POP
3048: DUP3
3049: JUMPDEST
3050: SWAP1
3051: POP
3052: PUSH0
3053: DUP3
3054: PUSH8 0xffffffffffffffff
3063: AND
3064: PUSH1 0x01
3066: EQ
3067: DUP1
3068: ISZERO
3069: PUSH2 0x0c05
3072: JUMPI
3073: POP
3074: ADDRESS
3075: EXTCODESIZE
3076: ISZERO
3077: JUMPDEST
3078: SWAP1
3079: POP
3080: DUP2
3081: ISZERO
3082: DUP1
3083: ISZERO
3084: PUSH2 0x0c13
3087: JUMPI
3088: POP
3089: DUP1
3090: ISZERO
3091: JUMPDEST
3092: ISZERO
3093: PUSH2 0x0c4a
3096: JUMPI
3097: PUSH1 0x40
3099: MLOAD
3100: PUSH32 0xf92ee8a900000000000000000000000000000000000000000000000000000000
3133: DUP2
3134: MSTORE
3135: PUSH1 0x04
3137: ADD
3138: PUSH1 0x40
3140: MLOAD
3141: DUP1
3142: SWAP2
3143: SUB
3144: SWAP1
3145: REVERT
3146: JUMPDEST
3147: DUP5
3148: SLOAD
3149: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
3182: AND
3183: PUSH1 0x01
3185: OR
3186: DUP6
3187: SSTORE
3188: DUP4
3189: ISZERO
3190: PUSH2 0x0cab
3193: JUMPI
3194: DUP5
3195: SLOAD
3196: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
3229: AND
3230: PUSH9 0x010000000000000000
3240: OR
3241: DUP6
3242: SSTORE
3243: JUMPDEST
3244: PUSH2 0x0cb5
3247: DUP8
3248: DUP8
3249: PUSH2 0x15c6
3252: JUMP
3253: JUMPDEST
3254: DUP4
3255: ISZERO
3256: PUSH2 0x0d16
3259: JUMPI
3260: DUP5
3261: SLOAD
3262: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
3295: AND
3296: DUP6
3297: SSTORE
3298: PUSH1 0x40
3300: MLOAD
3301: PUSH1 0x01
3303: DUP2
3304: MSTORE
3305: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2
3338: SWAP1
3339: PUSH1 0x20
3341: ADD
3342: PUSH1 0x40
3344: MLOAD
3345: DUP1
3346: SWAP2
3347: SUB
3348: SWAP1
3349: LOG1
3350: JUMPDEST
3351: POP
3352: POP
3353: POP
3354: POP
3355: POP
3356: POP
3357: POP
3358: JUMP
3359: JUMPDEST
3360: PUSH1 0x60
3362: PUSH0
3363: PUSH2 0x0d4a
3366: PUSH32 0x162468a4167773432f8698ed7a10337877b87465381ef8fdb8745365f36a1100
3399: SLOAD
3400: SWAP1
3401: JUMP
3402: JUMPDEST
3403: SWAP1
3404: POP
3405: CALLER
3406: PUSH1 0x01
3408: PUSH1 0x01
3410: PUSH1 0xa0
3412: SHL
3413: SUB
3414: DUP3
3415: AND
3416: EQ
3417: DUP1
3418: ISZERO
3419: PUSH2 0x0d6c
3422: JUMPI
3423: POP
3424: PUSH1 0x01
3426: PUSH1 0x01
3428: PUSH1 0xa0
3430: SHL
3431: SUB
3432: DUP2
3433: AND
3434: ISZERO
3435: ISZERO
3436: JUMPDEST
3437: PUSH2 0x0db8
3440: JUMPI
3441: PUSH1 0x40
3443: MLOAD
3444: PUSH3 0x461bcd
3448: PUSH1 0xe5
3450: SHL
3451: DUP2
3452: MSTORE
3453: PUSH1 0x20
3455: PUSH1 0x04
3457: DUP3
3458: ADD
3459: MSTORE
3460: PUSH1 0x10
3462: PUSH1 0x24
3464: DUP3
3465: ADD
3466: MSTORE
3467: PUSH32 0x4f6e6c7920506f6f6c4d616e6167657200000000000000000000000000000000
3500: PUSH1 0x44
3502: DUP3
3503: ADD
3504: MSTORE
3505: PUSH1 0x64
3507: ADD
3508: PUSH2 0x0629
3511: JUMP
3512: JUMPDEST
3513: PUSH2 0x0de0
3516: PUSH0
3517: PUSH32 0x162468a4167773432f8698ed7a10337877b87465381ef8fdb8745365f36a1100
3550: SSTORE
3551: JUMP
3552: JUMPDEST
3553: PUSH0
3554: DUP1
3555: DUP1
3556: DUP1
3557: DUP1
3558: PUSH2 0x0df1
3561: DUP9
3562: DUP11
3563: ADD
3564: DUP11
=== range (3800, 3905) ===
3800: STOP
3801: STOP
3802: STOP
3803: STOP
3804: STOP
3805: STOP
3806: STOP
3807: STOP
3808: STOP
3809: STOP
3810: STOP
3811: STOP
3812: STOP
3813: STOP
3814: STOP
3815: STOP
3816: STOP
3817: STOP
3818: STOP
3819: STOP
3820: DUP2
3821: MSTORE
3822: PUSH0
3823: SWAP1
3824: PUSH1 0x01
3826: PUSH1 0x01
3828: PUSH1 0xa0
3830: SHL
3831: SUB
3832: DUP4
3833: AND
3834: SWAP1
3835: PUSH4 0xf3cd914c
3840: SWAP1
3841: PUSH2 0x0f10
3844: SWAP1
3845: DUP11
3846: SWAP1
3847: DUP11
3848: SWAP1
3849: PUSH1 0x04
3851: ADD
3852: PUSH2 0x3705
3855: JUMP
3856: JUMPDEST
3857: PUSH1 0x20
3859: PUSH1 0x40
3861: MLOAD
3862: DUP1
3863: DUP4
3864: SUB
3865: DUP2
3866: PUSH0
3867: DUP8
3868: GAS
3869: CALL
3870: ISZERO
3871: DUP1
3872: ISZERO
3873: PUSH2 0x0f2c
3876: JUMPI
3877: RETURNDATASIZE
3878: PUSH0
3879: DUP1
3880: RETURNDATACOPY
3881: RETURNDATASIZE
3882: PUSH0
3883: REVERT
3884: JUMPDEST
3885: POP
3886: POP
3887: POP
3888: POP
3889: PUSH1 0x40
3891: MLOAD
3892: RETURNDATASIZE
3893: PUSH1 0x1f
3895: NOT
3896: PUSH1 0x1f
3898: DUP3
3899: ADD
3900: AND
3901: DUP3
3902: ADD
3903: DUP1
3904: PUSH1 0x40
=== range (4200, 4325) ===
4200: DIV
4201: DUP3
4202: ADD
4203: MSTORE
4204: SWAP1
4205: DUP7
4206: AND
4207: SWAP1
4208: PUSH4 0xa5841194
4213: SWAP1
4214: PUSH1 0x24
4216: ADD
4217: PUSH0
4218: PUSH1 0x40
4220: MLOAD
4221: DUP1
4222: DUP4
4223: SUB
4224: DUP2
4225: PUSH0
4226: DUP8
4227: DUP1
4228: EXTCODESIZE
4229: ISZERO
4230: DUP1
4231: ISZERO
4232: PUSH2 0x108f
4235: JUMPI
4236: PUSH0
4237: DUP1
4238: REVERT
4239: JUMPDEST
4240: POP
4241: GAS
4242: CALL
4243: ISZERO
4244: DUP1
4245: ISZERO
4246: PUSH2 0x10a1
4249: JUMPI
4250: RETURNDATASIZE
4251: PUSH0
4252: DUP1
4253: RETURNDATACOPY
4254: RETURNDATASIZE
4255: PUSH0
4256: REVERT
4257: JUMPDEST
4258: POP
4259: POP
4260: POP
4261: POP
4262: DUP5
4263: PUSH1 0x01
4265: PUSH1 0x01
4267: PUSH1 0xa0
4269: SHL
4270: SUB
4271: AND
4272: PUSH4 0x11da60b4
4277: DUP3
4278: PUSH1 0x40
4280: MLOAD
4281: DUP3
4282: PUSH4 0xffffffff
4287: AND
4288: PUSH1 0xe0
4290: SHL
4291: DUP2
4292: MSTORE
4293: PUSH1 0x04
4295: ADD
4296: PUSH1 0x20
4298: PUSH1 0x40
4300: MLOAD
4301: DUP1
4302: DUP4
4303: SUB
4304: DUP2
4305: DUP6
4306: DUP9
4307: GAS
4308: CALL
4309: ISZERO
4310: DUP1
4311: ISZERO
4312: PUSH2 0x10e3
4315: JUMPI
4316: RETURNDATASIZE
4317: PUSH0
4318: DUP1
4319: RETURNDATACOPY
4320: RETURNDATASIZE
4321: PUSH0
4322: REVERT
4323: JUMPDEST
4324: POP
=== range (4440, 4565) ===
4440: DUP1
4441: DUP4
4442: SUB
4443: DUP2
4444: PUSH0
4445: DUP8
4446: DUP1
4447: EXTCODESIZE
4448: ISZERO
4449: DUP1
4450: ISZERO
4451: PUSH2 0x116a
4454: JUMPI
4455: PUSH0
4456: DUP1
4457: REVERT
4458: JUMPDEST
4459: POP
4460: GAS
4461: CALL
4462: ISZERO
4463: DUP1
4464: ISZERO
4465: PUSH2 0x117c
4468: JUMPI
4469: RETURNDATASIZE
4470: PUSH0
4471: DUP1
4472: RETURNDATACOPY
4473: RETURNDATASIZE
4474: PUSH0
4475: REVERT
4476: JUMPDEST
4477: POP
4478: PUSH2 0x1195
4481: SWAP3
4482: POP
4483: POP
4484: POP
4485: PUSH1 0x01
4487: PUSH1 0x01
4489: PUSH1 0xa0
4491: SHL
4492: SUB
4493: DUP10
4494: AND
4495: CALLER
4496: DUP4
4497: PUSH2 0x1d4f
4500: JUMP
4501: JUMPDEST
4502: DUP5
4503: PUSH1 0x01
4505: PUSH1 0x01
4507: PUSH1 0xa0
4509: SHL
4510: SUB
4511: AND
4512: PUSH4 0x11da60b4
4517: PUSH1 0x40
4519: MLOAD
4520: DUP2
4521: PUSH4 0xffffffff
4526: AND
4527: PUSH1 0xe0
4529: SHL
4530: DUP2
4531: MSTORE
4532: PUSH1 0x04
4534: ADD
4535: PUSH1 0x20
4537: PUSH1 0x40
4539: MLOAD
4540: DUP1
4541: DUP4
4542: SUB
4543: DUP2
4544: PUSH0
4545: DUP8
4546: GAS
4547: CALL
4548: ISZERO
4549: DUP1
4550: ISZERO
4551: PUSH2 0x11d2
4554: JUMPI
4555: RETURNDATASIZE
4556: PUSH0
4557: DUP1
4558: RETURNDATACOPY
4559: RETURNDATASIZE
4560: PUSH0
4561: REVERT
4562: JUMPDEST
4563: POP
4564: POP
=== range (4700, 4755) ===
4700: OP_0d
4701: SWAP13
4702: MULMOD
4703: SWAP1
4704: PUSH1 0x64
4706: ADD
4707: JUMPDEST
4708: PUSH0
4709: PUSH1 0x40
4711: MLOAD
4712: DUP1
4713: DUP4
4714: SUB
4715: DUP2
4716: PUSH0
4717: DUP8
4718: DUP1
4719: EXTCODESIZE
4720: ISZERO
4721: DUP1
4722: ISZERO
4723: PUSH2 0x127a
4726: JUMPI
4727: PUSH0
4728: DUP1
4729: REVERT
4730: JUMPDEST
4731: POP
4732: GAS
4733: CALL
4734: ISZERO
4735: DUP1
4736: ISZERO
4737: PUSH2 0x128c
4740: JUMPI
4741: RETURNDATASIZE
4742: PUSH0
4743: DUP1
4744: RETURNDATACOPY
4745: RETURNDATASIZE
4746: PUSH0
4747: REVERT
4748: JUMPDEST
4749: POP
4750: POP
4751: POP
4752: POP
4753: DUP1
4754: PUSH1 0x40
=== range (5070, 5430) ===
5070: SWAP1
5071: PUSH4 0xa5841194
5076: SWAP1
5077: PUSH1 0x24
5079: ADD
5080: PUSH0
5081: PUSH1 0x40
5083: MLOAD
5084: DUP1
5085: DUP4
5086: SUB
5087: DUP2
5088: PUSH0
5089: DUP8
5090: DUP1
5091: EXTCODESIZE
5092: ISZERO
5093: DUP1
5094: ISZERO
5095: PUSH2 0x13ee
5098: JUMPI
5099: PUSH0
5100: DUP1
5101: REVERT
5102: JUMPDEST
5103: POP
5104: GAS
5105: CALL
5106: ISZERO
5107: DUP1
5108: ISZERO
5109: PUSH2 0x1400
5112: JUMPI
5113: RETURNDATASIZE
5114: PUSH0
5115: DUP1
5116: RETURNDATACOPY
5117: RETURNDATASIZE
5118: PUSH0
5119: REVERT
5120: JUMPDEST
5121: POP
5122: POP
5123: POP
5124: POP
5125: DUP5
5126: PUSH1 0x01
5128: PUSH1 0x01
5130: PUSH1 0xa0
5132: SHL
5133: SUB
5134: AND
5135: PUSH4 0x11da60b4
5140: DUP3
5141: PUSH1 0x40
5143: MLOAD
5144: DUP3
5145: PUSH4 0xffffffff
5150: AND
5151: PUSH1 0xe0
5153: SHL
5154: DUP2
5155: MSTORE
5156: PUSH1 0x04
5158: ADD
5159: PUSH1 0x20
5161: PUSH1 0x40
5163: MLOAD
5164: DUP1
5165: DUP4
5166: SUB
5167: DUP2
5168: DUP6
5169: DUP9
5170: GAS
5171: CALL
5172: ISZERO
5173: DUP1
5174: ISZERO
5175: PUSH2 0x1442
5178: JUMPI
5179: RETURNDATASIZE
5180: PUSH0
5181: DUP1
5182: RETURNDATACOPY
5183: RETURNDATASIZE
5184: PUSH0
5185: REVERT
5186: JUMPDEST
5187: POP
5188: POP
5189: POP
5190: POP
5191: POP
5192: PUSH1 0x40
5194: MLOAD
5195: RETURNDATASIZE
5196: PUSH1 0x1f
5198: NOT
5199: PUSH1 0x1f
5201: DUP3
5202: ADD
5203: AND
5204: DUP3
5205: ADD
5206: DUP1
5207: PUSH1 0x40
5209: MSTORE
5210: POP
5211: DUP2
5212: ADD
5213: SWAP1
5214: PUSH2 0x1467
5217: SWAP2
5218: SWAP1
5219: PUSH2 0x378a
5222: JUMP
5223: JUMPDEST
5224: POP
5225: PUSH2 0x155a
5228: JUMP
5229: JUMPDEST
5230: PUSH1 0x20
5232: DUP11
5233: ADD
5234: MLOAD
5235: PUSH1 0x40
5237: MLOAD
5238: PUSH32 0xa584119400000000000000000000000000000000000000000000000000000000
5271: DUP2
5272: MSTORE
5273: PUSH1 0x01
5275: PUSH1 0x01
5277: PUSH1 0xa0
5279: SHL
5280: SUB
5281: SWAP2
5282: DUP3
5283: AND
5284: PUSH1 0x04
5286: DUP3
5287: ADD
5288: MSTORE
5289: SWAP1
5290: DUP7
5291: AND
5292: SWAP1
5293: PUSH4 0xa5841194
5298: SWAP1
5299: PUSH1 0x24
5301: ADD
5302: PUSH0
5303: PUSH1 0x40
5305: MLOAD
5306: DUP1
5307: DUP4
5308: SUB
5309: DUP2
5310: PUSH0
5311: DUP8
5312: DUP1
5313: EXTCODESIZE
5314: ISZERO
5315: DUP1
5316: ISZERO
5317: PUSH2 0x14cc
5320: JUMPI
5321: PUSH0
5322: DUP1
5323: REVERT
5324: JUMPDEST
5325: POP
5326: GAS
5327: CALL
5328: ISZERO
5329: DUP1
5330: ISZERO
5331: PUSH2 0x14de
5334: JUMPI
5335: RETURNDATASIZE
5336: PUSH0
5337: DUP1
5338: RETURNDATACOPY
5339: RETURNDATASIZE
5340: PUSH0
5341: REVERT
5342: JUMPDEST
5343: POP
5344: PUSH2 0x14f7
5347: SWAP3
5348: POP
5349: POP
5350: POP
5351: PUSH1 0x01
5353: PUSH1 0x01
5355: PUSH1 0xa0
5357: SHL
5358: SUB
5359: DUP10
5360: AND
5361: CALLER
5362: DUP4
5363: PUSH2 0x1d4f
5366: JUMP
5367: JUMPDEST
5368: DUP5
5369: PUSH1 0x01
5371: PUSH1 0x01
5373: PUSH1 0xa0
5375: SHL
5376: SUB
5377: AND
5378: PUSH4 0x11da60b4
5383: PUSH1 0x40
5385: MLOAD
5386: DUP2
5387: PUSH4 0xffffffff
5392: AND
5393: PUSH1 0xe0
5395: SHL
5396: DUP2
5397: MSTORE
5398: PUSH1 0x04
5400: ADD
5401: PUSH1 0x20
5403: PUSH1 0x40
5405: MLOAD
5406: DUP1
5407: DUP4
5408: SUB
5409: DUP2
5410: PUSH0
5411: DUP8
5412: GAS
5413: CALL
5414: ISZERO
5415: DUP1
5416: ISZERO
5417: PUSH2 0x1534
5420: JUMPI
5421: RETURNDATASIZE
5422: PUSH0
5423: DUP1
5424: RETURNDATACOPY
5425: RETURNDATASIZE
5426: PUSH0
5427: REVERT
5428: JUMPDEST
5429: POP
=== range (6000, 6065) ===
6000: ADD
6001: MSTORE
6002: PUSH0
6003: SWAP2
6004: PUSH1 0x01
6006: PUSH1 0x01
6008: PUSH1 0xa0
6010: SHL
6011: SUB
6012: AND
6013: SWAP1
6014: PUSH4 0x70a08231
6019: SWAP1
6020: PUSH1 0x24
6022: ADD
6023: PUSH1 0x20
6025: PUSH1 0x40
6027: MLOAD
6028: DUP1
6029: DUP4
6030: SUB
6031: DUP2
6032: DUP7
6033: GAS
6034: STATICCALL
6035: ISZERO
6036: DUP1
6037: ISZERO
6038: PUSH2 0x17a1
6041: JUMPI
6042: RETURNDATASIZE
6043: PUSH0
6044: DUP1
6045: RETURNDATACOPY
6046: RETURNDATASIZE
6047: PUSH0
6048: REVERT
6049: JUMPDEST
6050: POP
6051: POP
6052: POP
6053: POP
6054: PUSH1 0x40
6056: MLOAD
6057: RETURNDATASIZE
6058: PUSH1 0x1f
6060: NOT
6061: PUSH1 0x1f
6063: DUP3
6064: ADD
=== range (6760, 6820) ===
6760: BLOCKHASH
6761: MLOAD
6762: CALLER
6763: SWAP1
6764: DUP3
6765: ISZERO
6766: PUSH2 0x08fc
6769: MUL
6770: SWAP1
6771: DUP4
6772: SWAP1
6773: PUSH0
6774: DUP2
6775: DUP2
6776: DUP2
6777: DUP6
6778: DUP9
6779: DUP9
6780: CALL
6781: SWAP4
6782: POP
6783: POP
6784: POP
6785: POP
6786: ISZERO
6787: DUP1
6788: ISZERO
6789: PUSH2 0x089d
6792: JUMPI
6793: RETURNDATASIZE
6794: PUSH0
6795: DUP1
6796: RETURNDATACOPY
6797: RETURNDATASIZE
6798: PUSH0
6799: REVERT
6800: JUMPDEST
6801: CALLER
6802: PUSH0
6803: SWAP1
6804: DUP2
6805: MSTORE
6806: PUSH32 0xc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd
=== range (8600, 8845) ===
8600: BLOCKHASH
8601: MLOAD
8602: PUSH2 0x21a3
8605: SWAP2
8606: SWAP1
8607: PUSH2 0x3a6c
8610: JUMP
8611: JUMPDEST
8612: PUSH0
8613: PUSH1 0x40
8615: MLOAD
8616: DUP1
8617: DUP4
8618: SUB
8619: DUP2
8620: DUP6
8621: DUP8
8622: GAS
8623: CALL
8624: SWAP3
8625: POP
8626: POP
8627: POP
8628: RETURNDATASIZE
8629: DUP1
8630: PUSH0
8631: DUP2
8632: EQ
8633: PUSH2 0x21dd
8636: JUMPI
8637: PUSH1 0x40
8639: MLOAD
8640: SWAP2
8641: POP
8642: PUSH1 0x1f
8644: NOT
8645: PUSH1 0x3f
8647: RETURNDATASIZE
8648: ADD
8649: AND
8650: DUP3
8651: ADD
8652: PUSH1 0x40
8654: MSTORE
8655: RETURNDATASIZE
8656: DUP3
8657: MSTORE
8658: RETURNDATASIZE
8659: PUSH0
8660: PUSH1 0x20
8662: DUP5
8663: ADD
8664: RETURNDATACOPY
8665: PUSH2 0x21e2
8668: JUMP
8669: JUMPDEST
8670: PUSH1 0x60
8672: SWAP2
8673: POP
8674: JUMPDEST
8675: POP
8676: SWAP2
8677: POP
8678: SWAP2
8679: POP
8680: DUP2
8681: PUSH2 0x0798
8684: JUMPI
8685: PUSH2 0x21f5
8688: DUP2
8689: PUSH2 0x1bf3
8692: JUMP
8693: JUMPDEST
8694: POP
8695: POP
8696: POP
8697: POP
8698: POP
8699: JUMP
8700: JUMPDEST
8701: PUSH0
8702: DUP1
8703: DUP1
8704: PUSH20 0x7e2d0c9f25015b5d2b9d71345557560aa3911072
8725: PUSH4 0x038deb09
8730: PUSH2 0x2223
8733: DUP7
8734: DUP1
8735: PUSH2 0x38df
8738: JUMP
8739: JUMPDEST
8740: PUSH1 0x01
8742: PUSH2 0x2232
8745: PUSH1 0x20
8747: DUP11
8748: ADD
8749: DUP11
8750: PUSH2 0x38df
8753: JUMP
8754: JUMPDEST
8755: PUSH2 0x223d
8758: SWAP3
8759: SWAP2
8760: POP
8761: PUSH2 0x3a7d
8764: JUMP
8765: JUMPDEST
8766: PUSH1 0x40
8768: MLOAD
8769: DUP5
8770: PUSH4 0xffffffff
8775: AND
8776: PUSH1 0xe0
8778: SHL
8779: DUP2
8780: MSTORE
8781: PUSH1 0x04
8783: ADD
8784: PUSH2 0x225b
8787: SWAP4
8788: SWAP3
8789: SWAP2
8790: SWAP1
8791: PUSH2 0x3b81
8794: JUMP
8795: JUMPDEST
8796: PUSH1 0x20
8798: PUSH1 0x40
8800: MLOAD
8801: DUP1
8802: DUP4
8803: SUB
8804: DUP2
8805: DUP7
8806: GAS
8807: DELEGATECALL
8808: ISZERO
8809: DUP1
8810: ISZERO
8811: PUSH2 0x2276
8814: JUMPI
8815: RETURNDATASIZE
8816: PUSH0
8817: DUP1
8818: RETURNDATACOPY
8819: RETURNDATASIZE
8820: PUSH0
8821: REVERT
8822: JUMPDEST
8823: POP
8824: POP
8825: POP
8826: POP
8827: PUSH1 0x40
8829: MLOAD
8830: RETURNDATASIZE
8831: PUSH1 0x1f
8833: NOT
8834: PUSH1 0x1f
8836: DUP3
8837: ADD
8838: AND
8839: DUP3
8840: ADD
8841: DUP1
8842: PUSH1 0x40
8844: MSTORE
=== range (9130, 9170) ===
9130: DUP5
9131: DUP5
9132: PUSH0
9133: PUSH2 0x2971
9136: JUMP
9137: JUMPDEST
9138: PUSH0
9139: DUP1
9140: PUSH1 0x20
9142: PUSH0
9143: DUP5
9144: MLOAD
9145: PUSH1 0x20
9147: DUP7
9148: ADD
9149: PUSH0
9150: DUP9
9151: GAS
9152: CALL
9153: DUP1
9154: PUSH2 0x23d0
9157: JUMPI
9158: PUSH1 0x40
9160: MLOAD
9161: RETURNDATASIZE
9162: PUSH0
9163: DUP3
9164: RETURNDATACOPY
9165: RETURNDATASIZE
9166: DUP2
9167: REVERT
9168: JUMPDEST
9169: POP
=== range (10970, 11210) ===
10970: PUSH1 0x40
10972: MLOAD
10973: PUSH0
10974: SWAP2
10975: PUSH1 0x01
10977: PUSH1 0x01
10979: PUSH1 0xa0
10981: SHL
10982: SUB
10983: AND
10984: SWAP1
10985: DUP5
10986: SWAP1
10987: DUP4
10988: DUP2
10989: DUP2
10990: DUP2
10991: DUP6
10992: DUP8
10993: GAS
10994: CALL
10995: SWAP3
10996: POP
10997: POP
10998: POP
10999: RETURNDATASIZE
11000: DUP1
11001: PUSH0
11002: DUP2
11003: EQ
11004: PUSH2 0x2b20
11007: JUMPI
11008: PUSH1 0x40
11010: MLOAD
11011: SWAP2
11012: POP
11013: PUSH1 0x1f
11015: NOT
11016: PUSH1 0x3f
11018: RETURNDATASIZE
11019: ADD
11020: AND
11021: DUP3
11022: ADD
11023: PUSH1 0x40
11025: MSTORE
11026: RETURNDATASIZE
11027: DUP3
11028: MSTORE
11029: RETURNDATASIZE
11030: PUSH0
11031: PUSH1 0x20
11033: DUP5
11034: ADD
11035: RETURNDATACOPY
11036: PUSH2 0x2b25
11039: JUMP
11040: JUMPDEST
11041: PUSH1 0x60
11043: SWAP2
11044: POP
11045: JUMPDEST
11046: POP
11047: POP
11048: SWAP1
11049: POP
11050: DUP1
11051: PUSH1 0x40
11053: MLOAD
11054: DUP1
11055: PUSH1 0x40
11057: ADD
11058: PUSH1 0x40
11060: MSTORE
11061: DUP1
11062: PUSH1 0x0c
11064: DUP2
11065: MSTORE
11066: PUSH1 0x20
11068: ADD
11069: PUSH32 0x4272696265206661696c65640000000000000000000000000000000000000000
11102: DUP2
11103: MSTORE
11104: POP
11105: SWAP1
11106: PUSH2 0x2b7e
11109: JUMPI
11110: PUSH1 0x40
11112: MLOAD
11113: PUSH3 0x461bcd
11117: PUSH1 0xe5
11119: SHL
11120: DUP2
11121: MSTORE
11122: PUSH1 0x04
11124: ADD
11125: PUSH2 0x0629
11128: SWAP2
11129: SWAP1
11130: PUSH2 0x3298
11133: JUMP
11134: JUMPDEST
11135: POP
11136: POP
11137: POP
11138: POP
11139: POP
11140: POP
11141: POP
11142: POP
11143: POP
11144: POP
11145: POP
11146: JUMP
11147: JUMPDEST
11148: PUSH0
11149: DUP1
11150: PUSH0
11151: DUP1
11152: PUSH1 0x20
11154: PUSH0
11155: DUP7
11156: MLOAD
11157: PUSH1 0x20
11159: DUP9
11160: ADD
11161: PUSH0
11162: DUP11
11163: GAS
11164: CALL
11165: SWAP3
11166: POP
11167: RETURNDATASIZE
11168: SWAP2
11169: POP
11170: PUSH0
11171: MLOAD
11172: SWAP1
11173: POP
11174: DUP3
11175: DUP1
11176: ISZERO
11177: PUSH2 0x2bca
11180: JUMPI
11181: POP
11182: DUP2
11183: ISZERO
11184: PUSH2 0x2bbc
11187: JUMPI
11188: DUP1
11189: PUSH1 0x01
11191: EQ
11192: PUSH2 0x2bca
11195: JUMP
11196: JUMPDEST
11197: PUSH0
11198: DUP7
11199: PUSH1 0x01
11201: PUSH1 0x01
11203: PUSH1 0xa0
11205: SHL
11206: SUB
11207: AND
11208: EXTCODESIZE
11209: GT
=== range (11520, 11570) ===
11520: MSTORE
11521: SWAP1
11522: MLOAD
11523: PUSH2 0x2d0c
11526: SWAP2
11527: SWAP1
11528: PUSH2 0x3a6c
11531: JUMP
11532: JUMPDEST
11533: PUSH0
11534: PUSH1 0x40
11536: MLOAD
11537: DUP1
11538: DUP4
11539: SUB
11540: DUP2
11541: DUP6
11542: GAS
11543: DELEGATECALL
11544: SWAP2
11545: POP
11546: POP
11547: RETURNDATASIZE
11548: DUP1
11549: PUSH0
11550: DUP2
11551: EQ
11552: PUSH2 0x2d44
11555: JUMPI
11556: PUSH1 0x40
11558: MLOAD
11559: SWAP2
11560: POP
11561: PUSH1 0x1f
11563: NOT
11564: PUSH1 0x3f
11566: RETURNDATASIZE
11567: ADD
11568: AND
11569: DUP3
=== range (16710, 16750) ===
16710: DUP1
16711: SWAP3
16712: POP
16713: POP
16714: POP
16715: SWAP3
16716: SWAP2
16717: POP
16718: POP
16719: JUMP
16720: INVALID
16721: LOG2
16722: PUSH5 0x6970667358
16728: OP_22
16729: SLT
16730: SHA3
16731: CALLER
16732: OP_a7
16733: ADDRESS
16734: DELEGATECALL
16735: OP_dc
16736: BLOBHASH
16737: OP_e8
16738: OP_c7
16739: BYTE
16740: EQ
16741: RETURNDATACOPY
16742: SHL
16743: PUSH25 0xaf0dd35b4c502bc9ea378a1b5195965fc0922764736f6c6343
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
for s,e in [(2450,2865),(2940,3365),(5560,6055),(6180,6830),(7290,7670),(7850,7935)]:
print(f'\\n=== {s}-{e} ===')
dis(s,e)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
=== 2450-2865 ===
2450: OP_a7
2451: PUSH22 0xe58dd541e08a116c6c53815c0bd028192f7b62680060
2474: SHA3
2475: MSTORE
2476: PUSH1 0x40
2478: SWAP1
2479: SHA3
2480: PUSH1 0x01
2482: ADD
2483: SLOAD
2484: PUSH2 0x09bc
2487: DUP2
2488: PUSH2 0x1dc3
2491: JUMP
2492: JUMPDEST
2493: PUSH2 0x0798
2496: DUP4
2497: DUP4
2498: PUSH2 0x1dd0
2501: JUMP
2502: JUMPDEST
2503: PUSH1 0x01
2505: PUSH1 0x01
2507: PUSH1 0xa0
2509: SHL
2510: SUB
2511: DUP2
2512: AND
2513: CALLER
2514: EQ
2515: PUSH2 0x0a08
2518: JUMPI
2519: PUSH1 0x40
2521: MLOAD
2522: PUSH32 0x6697b23200000000000000000000000000000000000000000000000000000000
2555: DUP2
2556: MSTORE
2557: PUSH1 0x04
2559: ADD
2560: PUSH1 0x40
2562: MLOAD
2563: DUP1
2564: SWAP2
2565: SUB
2566: SWAP1
2567: REVERT
2568: JUMPDEST
2569: PUSH2 0x0a12
2572: DUP3
2573: DUP3
2574: PUSH2 0x1c7d
2577: JUMP
2578: JUMPDEST
2579: POP
2580: POP
2581: POP
2582: JUMP
2583: JUMPDEST
2584: CALLER
2585: PUSH0
2586: SWAP1
2587: DUP2
2588: MSTORE
2589: PUSH32 0xc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd
2622: PUSH1 0x20
2624: MSTORE
2625: PUSH1 0x40
2627: SWAP1
2628: SHA3
2629: SLOAD
2630: PUSH1 0xff
2632: AND
2633: PUSH2 0x0a94
2636: JUMPI
2637: PUSH1 0x40
2639: MLOAD
2640: PUSH3 0x461bcd
2644: PUSH1 0xe5
2646: SHL
2647: DUP2
2648: MSTORE
2649: PUSH1 0x20
2651: PUSH1 0x04
2653: DUP3
2654: ADD
2655: MSTORE
2656: PUSH1 0x0a
2658: PUSH1 0x24
2660: DUP3
2661: ADD
2662: MSTORE
2663: PUSH32 0x4f6e6c79206f776e657200000000000000000000000000000000000000000000
2696: PUSH1 0x44
2698: DUP3
2699: ADD
2700: MSTORE
2701: PUSH1 0x64
2703: ADD
2704: PUSH2 0x0629
2707: JUMP
2708: JUMPDEST
2709: PUSH1 0x09
2711: PUSH1 0x17
2713: PUSH2 0x0aa2
2716: DUP3
2717: DUP3
2718: PUSH2 0x1eb1
2721: JUMP
2722: JUMPDEST
2723: PUSH2 0x0aee
2726: JUMPI
2727: PUSH1 0x40
2729: MLOAD
2730: PUSH3 0x461bcd
2734: PUSH1 0xe5
2736: SHL
2737: DUP2
2738: MSTORE
2739: PUSH1 0x20
2741: PUSH1 0x04
2743: DUP3
2744: ADD
2745: MSTORE
2746: PUSH1 0x15
2748: PUSH1 0x24
2750: DUP3
2751: ADD
2752: MSTORE
2753: PUSH32 0x6e6f7420696e20757067726164652077696e646f770000000000000000000000
2786: PUSH1 0x44
2788: DUP3
2789: ADD
2790: MSTORE
2791: PUSH1 0x64
2793: ADD
2794: PUSH2 0x0629
2797: JUMP
2798: JUMPDEST
2799: PUSH2 0x0798
2802: DUP5
2803: DUP5
2804: PUSH2 0x1ee4
2807: JUMP
2808: JUMPDEST
2809: CALLER
2810: PUSH0
2811: SWAP1
2812: DUP2
2813: MSTORE
2814: PUSH32 0xc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd
2847: PUSH1 0x20
2849: MSTORE
2850: PUSH1 0x40
2852: SWAP1
2853: SHA3
2854: SLOAD
2855: PUSH1 0xff
2857: AND
2858: PUSH2 0x0b75
2861: JUMPI
2862: PUSH1 0x40
2864: MLOAD
=== 2940-3365 ===
2940: CHAINID
2941: OP_df
2942: CREATE
2943: OP_1e
2944: DUP6
2945: PUSH16 0xb3f010c267a7b1c60363cf8a4664e21c
2962: OP_c8
2963: SWAP13
2964: OP_26
2965: OP_22
2966: CHAINID
2967: SHA3
2968: OP_21
2969: OP_4e
2970: DUP3
2971: PUSH2 0x1dd0
2974: JUMP
2975: JUMPDEST
2976: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
3009: DUP1
3010: SLOAD
3011: PUSH9 0x010000000000000000
3021: DUP2
3022: DIV
3023: PUSH1 0xff
3025: AND
3026: ISZERO
3027: SWAP1
3028: PUSH8 0xffffffffffffffff
3037: AND
3038: PUSH0
3039: DUP2
3040: ISZERO
3041: DUP1
3042: ISZERO
3043: PUSH2 0x0be9
3046: JUMPI
3047: POP
3048: DUP3
3049: JUMPDEST
3050: SWAP1
3051: POP
3052: PUSH0
3053: DUP3
3054: PUSH8 0xffffffffffffffff
3063: AND
3064: PUSH1 0x01
3066: EQ
3067: DUP1
3068: ISZERO
3069: PUSH2 0x0c05
3072: JUMPI
3073: POP
3074: ADDRESS
3075: EXTCODESIZE
3076: ISZERO
3077: JUMPDEST
3078: SWAP1
3079: POP
3080: DUP2
3081: ISZERO
3082: DUP1
3083: ISZERO
3084: PUSH2 0x0c13
3087: JUMPI
3088: POP
3089: DUP1
3090: ISZERO
3091: JUMPDEST
3092: ISZERO
3093: PUSH2 0x0c4a
3096: JUMPI
3097: PUSH1 0x40
3099: MLOAD
3100: PUSH32 0xf92ee8a900000000000000000000000000000000000000000000000000000000
3133: DUP2
3134: MSTORE
3135: PUSH1 0x04
3137: ADD
3138: PUSH1 0x40
3140: MLOAD
3141: DUP1
3142: SWAP2
3143: SUB
3144: SWAP1
3145: REVERT
3146: JUMPDEST
3147: DUP5
3148: SLOAD
3149: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
3182: AND
3183: PUSH1 0x01
3185: OR
3186: DUP6
3187: SSTORE
3188: DUP4
3189: ISZERO
3190: PUSH2 0x0cab
3193: JUMPI
3194: DUP5
3195: SLOAD
3196: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
3229: AND
3230: PUSH9 0x010000000000000000
3240: OR
3241: DUP6
3242: SSTORE
3243: JUMPDEST
3244: PUSH2 0x0cb5
3247: DUP8
3248: DUP8
3249: PUSH2 0x15c6
3252: JUMP
3253: JUMPDEST
3254: DUP4
3255: ISZERO
3256: PUSH2 0x0d16
3259: JUMPI
3260: DUP5
3261: SLOAD
3262: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
3295: AND
3296: DUP6
3297: SSTORE
3298: PUSH1 0x40
3300: MLOAD
3301: PUSH1 0x01
3303: DUP2
3304: MSTORE
3305: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2
3338: SWAP1
3339: PUSH1 0x20
3341: ADD
3342: PUSH1 0x40
3344: MLOAD
3345: DUP1
3346: SWAP2
3347: SUB
3348: SWAP1
3349: LOG1
3350: JUMPDEST
3351: POP
3352: POP
3353: POP
3354: POP
3355: POP
3356: POP
3357: POP
3358: JUMP
3359: JUMPDEST
3360: PUSH1 0x60
3362: PUSH0
3363: PUSH2 0x0d4a
=== 5560-6055 ===
5560: SWAP1
5561: PUSH4 0x0b0d9c09
5566: SWAP1
5567: PUSH1 0x64
5569: ADD
5570: PUSH2 0x1263
5573: JUMP
5574: JUMPDEST
5575: PUSH2 0x15ce
5578: PUSH2 0x1f6d
5581: JUMP
5582: JUMPDEST
5583: PUSH0
5584: DUP3
5585: MLOAD
5586: GT
5587: PUSH2 0x161e
5590: JUMPI
5591: PUSH1 0x40
5593: MLOAD
5594: PUSH3 0x461bcd
5598: PUSH1 0xe5
5600: SHL
5601: DUP2
5602: MSTORE
5603: PUSH1 0x20
5605: PUSH1 0x04
5607: DUP3
5608: ADD
5609: MSTORE
5610: PUSH1 0x0c
5612: PUSH1 0x24
5614: DUP3
5615: ADD
5616: MSTORE
5617: PUSH32 0x656d707479206f776e6572730000000000000000000000000000000000000000
5650: PUSH1 0x44
5652: DUP3
5653: ADD
5654: MSTORE
5655: PUSH1 0x64
5657: ADD
5658: PUSH2 0x0629
5661: JUMP
5662: JUMPDEST
5663: PUSH0
5664: DUP2
5665: MLOAD
5666: GT
5667: PUSH2 0x166e
5670: JUMPI
5671: PUSH1 0x40
5673: MLOAD
5674: PUSH3 0x461bcd
5678: PUSH1 0xe5
5680: SHL
5681: DUP2
5682: MSTORE
5683: PUSH1 0x20
5685: PUSH1 0x04
5687: DUP3
5688: ADD
5689: MSTORE
5690: PUSH1 0x0f
5692: PUSH1 0x24
5694: DUP3
5695: ADD
5696: MSTORE
5697: PUSH32 0x656d7074792073776170496d706c730000000000000000000000000000000000
5730: PUSH1 0x44
5732: DUP3
5733: ADD
5734: MSTORE
5735: PUSH1 0x64
5737: ADD
5738: PUSH2 0x0629
5741: JUMP
5742: JUMPDEST
5743: PUSH2 0x1677
5746: DUP3
5747: PUSH2 0x1fd6
5750: JUMP
5751: JUMPDEST
5752: PUSH2 0x089d
5755: DUP2
5756: PUSH2 0x203d
5759: JUMP
5760: JUMPDEST
5761: PUSH0
5762: DUP3
5763: DUP2
5764: MSTORE
5765: PUSH32 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800
5798: PUSH1 0x20
5800: MSTORE
5801: PUSH1 0x40
5803: SWAP1
5804: SHA3
5805: PUSH1 0x01
5807: ADD
5808: SLOAD
5809: PUSH2 0x16b9
5812: DUP2
5813: PUSH2 0x1dc3
5816: JUMP
5817: JUMPDEST
5818: PUSH2 0x0798
5821: DUP4
5822: DUP4
5823: PUSH2 0x1c7d
5826: JUMP
5827: JUMPDEST
5828: CALLER
5829: PUSH0
5830: SWAP1
5831: DUP2
5832: MSTORE
5833: PUSH32 0xc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd
5866: PUSH1 0x20
5868: MSTORE
5869: PUSH1 0x40
5871: SWAP1
5872: SHA3
5873: SLOAD
5874: PUSH1 0xff
5876: AND
5877: PUSH2 0x1740
5880: JUMPI
5881: PUSH1 0x40
5883: MLOAD
5884: PUSH3 0x461bcd
5888: PUSH1 0xe5
5890: SHL
5891: DUP2
5892: MSTORE
5893: PUSH1 0x20
5895: PUSH1 0x04
5897: DUP3
5898: ADD
5899: MSTORE
5900: PUSH1 0x0a
5902: PUSH1 0x24
5904: DUP3
5905: ADD
5906: MSTORE
5907: PUSH32 0x4f6e6c79206f776e657200000000000000000000000000000000000000000000
5940: PUSH1 0x44
5942: DUP3
5943: ADD
5944: MSTORE
5945: PUSH1 0x64
5947: ADD
5948: PUSH2 0x0629
5951: JUMP
5952: JUMPDEST
5953: PUSH1 0x80
5955: DUP2
5956: ADD
5957: MLOAD
5958: PUSH1 0x40
5960: MLOAD
5961: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
5994: DUP2
5995: MSTORE
5996: ADDRESS
5997: PUSH1 0x04
5999: DUP3
6000: ADD
6001: MSTORE
6002: PUSH0
6003: SWAP2
6004: PUSH1 0x01
6006: PUSH1 0x01
6008: PUSH1 0xa0
6010: SHL
6011: SUB
6012: AND
6013: SWAP1
6014: PUSH4 0x70a08231
6019: SWAP1
6020: PUSH1 0x24
6022: ADD
6023: PUSH1 0x20
6025: PUSH1 0x40
6027: MLOAD
6028: DUP1
6029: DUP4
6030: SUB
6031: DUP2
6032: DUP7
6033: GAS
6034: STATICCALL
6035: ISZERO
6036: DUP1
6037: ISZERO
6038: PUSH2 0x17a1
6041: JUMPI
6042: RETURNDATASIZE
6043: PUSH0
6044: DUP1
6045: RETURNDATACOPY
6046: RETURNDATASIZE
6047: PUSH0
6048: REVERT
6049: JUMPDEST
6050: POP
6051: POP
6052: POP
6053: POP
6054: PUSH1 0x40
=== 6180-6830 ===
6180: DUP2
6181: JUMPDEST
6182: PUSH2 0x0798
6185: DUP2
6186: DUP4
6187: PUSH2 0x207b
6190: JUMP
6191: JUMPDEST
6192: CALLER
6193: PUSH0
6194: SWAP1
6195: DUP2
6196: MSTORE
6197: PUSH32 0xc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd
6230: PUSH1 0x20
6232: MSTORE
6233: PUSH1 0x40
6235: DUP2
6236: SHA3
6237: SLOAD
6238: DUP2
6239: SWAP1
6240: PUSH1 0xff
6242: AND
6243: PUSH2 0x18ae
6246: JUMPI
6247: PUSH1 0x40
6249: MLOAD
6250: PUSH3 0x461bcd
6254: PUSH1 0xe5
6256: SHL
6257: DUP2
6258: MSTORE
6259: PUSH1 0x20
6261: PUSH1 0x04
6263: DUP3
6264: ADD
6265: MSTORE
6266: PUSH1 0x0a
6268: PUSH1 0x24
6270: DUP3
6271: ADD
6272: MSTORE
6273: PUSH32 0x4f6e6c79206f776e657200000000000000000000000000000000000000000000
6306: PUSH1 0x44
6308: DUP3
6309: ADD
6310: MSTORE
6311: PUSH1 0x64
6313: ADD
6314: PUSH2 0x0629
6317: JUMP
6318: JUMPDEST
6319: DUP7
6320: NUMBER
6321: GT
6322: ISZERO
6323: PUSH1 0x40
6325: MLOAD
6326: DUP1
6327: PUSH1 0x40
6329: ADD
6330: PUSH1 0x40
6332: MSTORE
6333: DUP1
6334: PUSH1 0x01
6336: DUP2
6337: MSTORE
6338: PUSH1 0x20
6340: ADD
6341: PUSH32 0x4200000000000000000000000000000000000000000000000000000000000000
6374: DUP2
6375: MSTORE
6376: POP
6377: SWAP1
6378: PUSH2 0x1906
6381: JUMPI
6382: PUSH1 0x40
6384: MLOAD
6385: PUSH3 0x461bcd
6389: PUSH1 0xe5
6391: SHL
6392: DUP2
6393: MSTORE
6394: PUSH1 0x04
6396: ADD
6397: PUSH2 0x0629
6400: SWAP2
6401: SWAP1
6402: PUSH2 0x3298
6405: JUMP
6406: JUMPDEST
6407: POP
6408: PUSH2 0x1910
6411: DUP6
6412: PUSH2 0x21fc
6415: JUMP
6416: JUMPDEST
6417: SWAP1
6418: SWAP3
6419: POP
6420: SWAP1
6421: POP
6422: PUSH2 0x195b
6425: PUSH2 0x1921
6428: DUP8
6429: PUSH2 0x380a
6432: JUMP
6433: JUMPDEST
6434: DUP3
6435: DUP5
6436: PUSH2 0x1930
6439: PUSH1 0x20
6441: DUP11
6442: ADD
6443: DUP11
6444: PUSH2 0x38df
6447: JUMP
6448: JUMPDEST
6449: DUP7
6450: DUP2
6451: DUP2
6452: LT
6453: PUSH2 0x1940
6456: JUMPI
6457: PUSH2 0x1940
6460: PUSH2 0x3502
6463: JUMP
6464: JUMPDEST
6465: SWAP1
6466: POP
6467: PUSH1 0x20
6469: MUL
6470: DUP2
6471: ADD
6472: SWAP1
6473: PUSH2 0x1952
6476: SWAP2
6477: SWAP1
6478: PUSH2 0x352f
6481: JUMP
6482: JUMPDEST
6483: PUSH1 0x20
6485: ADD
6486: CALLDATALOAD
6487: PUSH2 0x23a4
6490: JUMP
6491: JUMPDEST
6492: DUP3
6493: DUP2
6494: LT
6495: DUP1
6496: ISZERO
6497: PUSH2 0x19a4
6500: JUMPI
6501: POP
6502: PUSH0
6503: DUP5
6504: DUP5
6505: DUP4
6506: DUP2
6507: DUP2
6508: LT
6509: PUSH2 0x1978
6512: JUMPI
6513: PUSH2 0x1978
6516: PUSH2 0x3502
6519: JUMP
6520: JUMPDEST
6521: SWAP1
6522: POP
6523: PUSH1 0x20
6525: MUL
6526: DUP2
6527: ADD
6528: SWAP1
6529: PUSH2 0x198a
6532: SWAP2
6533: SWAP1
6534: PUSH2 0x3943
6537: JUMP
6538: JUMPDEST
6539: PUSH2 0x1998
6542: SWAP1
6543: PUSH1 0x20
6545: DUP2
6546: ADD
6547: SWAP1
6548: PUSH2 0x2ef0
6551: JUMP
6552: JUMPDEST
6553: PUSH1 0x01
6555: PUSH1 0x01
6557: PUSH1 0xa0
6559: SHL
6560: SUB
6561: AND
6562: EQ
6563: ISZERO
6564: JUMPDEST
6565: ISZERO
6566: PUSH2 0x19df
6569: JUMPI
6570: PUSH2 0x19df
6573: DUP3
6574: DUP6
6575: DUP6
6576: DUP5
6577: DUP2
6578: DUP2
6579: LT
6580: PUSH2 0x19bf
6583: JUMPI
6584: PUSH2 0x19bf
6587: PUSH2 0x3502
6590: JUMP
6591: JUMPDEST
6592: SWAP1
6593: POP
6594: PUSH1 0x20
6596: MUL
6597: DUP2
6598: ADD
6599: SWAP1
6600: PUSH2 0x19d1
6603: SWAP2
6604: SWAP1
6605: PUSH2 0x3943
6608: JUMP
6609: JUMPDEST
6610: PUSH2 0x19da
6613: SWAP1
6614: PUSH2 0x3975
6617: JUMP
6618: JUMPDEST
6619: PUSH2 0x207b
6622: JUMP
6623: JUMPDEST
6624: SWAP6
6625: POP
6626: SWAP6
6627: SWAP4
6628: POP
6629: POP
6630: POP
6631: POP
6632: JUMP
6633: JUMPDEST
6634: CALLER
6635: PUSH0
6636: SWAP1
6637: DUP2
6638: MSTORE
6639: PUSH32 0xc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd
6672: PUSH1 0x20
6674: MSTORE
6675: PUSH1 0x40
6677: SWAP1
6678: SHA3
6679: SLOAD
6680: PUSH1 0xff
6682: AND
6683: PUSH2 0x1a66
6686: JUMPI
6687: PUSH1 0x40
6689: MLOAD
6690: PUSH3 0x461bcd
6694: PUSH1 0xe5
6696: SHL
6697: DUP2
6698: MSTORE
6699: PUSH1 0x20
6701: PUSH1 0x04
6703: DUP3
6704: ADD
6705: MSTORE
6706: PUSH1 0x0a
6708: PUSH1 0x24
6710: DUP3
6711: ADD
6712: MSTORE
6713: PUSH32 0x4f6e6c79206f776e657200000000000000000000000000000000000000000000
6746: PUSH1 0x44
6748: DUP3
6749: ADD
6750: MSTORE
6751: PUSH1 0x64
6753: ADD
6754: PUSH2 0x0629
6757: JUMP
6758: JUMPDEST
6759: PUSH1 0x40
6761: MLOAD
6762: CALLER
6763: SWAP1
6764: DUP3
6765: ISZERO
6766: PUSH2 0x08fc
6769: MUL
6770: SWAP1
6771: DUP4
6772: SWAP1
6773: PUSH0
6774: DUP2
6775: DUP2
6776: DUP2
6777: DUP6
6778: DUP9
6779: DUP9
6780: CALL
6781: SWAP4
6782: POP
6783: POP
6784: POP
6785: POP
6786: ISZERO
6787: DUP1
6788: ISZERO
6789: PUSH2 0x089d
6792: JUMPI
6793: RETURNDATASIZE
6794: PUSH0
6795: DUP1
6796: RETURNDATACOPY
6797: RETURNDATASIZE
6798: PUSH0
6799: REVERT
6800: JUMPDEST
6801: CALLER
6802: PUSH0
6803: SWAP1
6804: DUP2
6805: MSTORE
6806: PUSH32 0xc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd
=== 7290-7670 ===
7290: ORIGIN
7291: SWAP9
7292: JUMP
7293: JUMPDEST
7294: PUSH0
7295: DUP3
7296: DUP2
7297: MSTORE
7298: PUSH32 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800
7331: PUSH1 0x20
7333: DUP2
7334: DUP2
7335: MSTORE
7336: PUSH1 0x40
7338: DUP1
7339: DUP5
7340: SHA3
7341: PUSH1 0x01
7343: PUSH1 0x01
7345: PUSH1 0xa0
7347: SHL
7348: SUB
7349: DUP7
7350: AND
7351: DUP6
7352: MSTORE
7353: SWAP1
7354: SWAP2
7355: MSTORE
7356: DUP3
7357: SHA3
7358: SLOAD
7359: PUSH1 0xff
7361: AND
7362: ISZERO
7363: PUSH2 0x1d3f
7366: JUMPI
7367: PUSH0
7368: DUP5
7369: DUP2
7370: MSTORE
7371: PUSH1 0x20
7373: DUP3
7374: DUP2
7375: MSTORE
7376: PUSH1 0x40
7378: DUP1
7379: DUP4
7380: SHA3
7381: PUSH1 0x01
7383: PUSH1 0x01
7385: PUSH1 0xa0
7387: SHL
7388: SUB
7389: DUP8
7390: AND
7391: DUP1
7392: DUP6
7393: MSTORE
7394: SWAP3
7395: MSTORE
7396: DUP1
7397: DUP4
7398: SHA3
7399: DUP1
7400: SLOAD
7401: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
7434: AND
7435: SWAP1
7436: SSTORE
7437: MLOAD
7438: CALLER
7439: SWAP3
7440: DUP8
7441: SWAP2
7442: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b
7475: SWAP2
7476: SWAP1
7477: LOG4
7478: PUSH1 0x01
7480: SWAP2
7481: POP
7482: POP
7483: PUSH2 0x05aa
7486: JUMP
7487: JUMPDEST
7488: PUSH0
7489: SWAP2
7490: POP
7491: POP
7492: PUSH2 0x05aa
7495: JUMP
7496: JUMPDEST
7497: POP
7498: SWAP3
7499: SWAP2
7500: POP
7501: POP
7502: JUMP
7503: JUMPDEST
7504: PUSH1 0x40
7506: MLOAD
7507: PUSH1 0x01
7509: PUSH1 0x01
7511: PUSH1 0xa0
7513: SHL
7514: SUB
7515: DUP4
7516: DUP2
7517: AND
7518: PUSH1 0x24
7520: DUP4
7521: ADD
7522: MSTORE
7523: PUSH1 0x44
7525: DUP3
7526: ADD
7527: DUP4
7528: SWAP1
7529: MSTORE
7530: PUSH2 0x0a12
7533: SWAP2
7534: DUP6
7535: SWAP2
7536: DUP3
7537: AND
7538: SWAP1
7539: PUSH4 0xa9059cbb
7544: SWAP1
7545: PUSH1 0x64
7547: ADD
7548: JUMPDEST
7549: PUSH1 0x40
7551: MLOAD
7552: PUSH1 0x20
7554: DUP2
7555: DUP4
7556: SUB
7557: SUB
7558: DUP2
7559: MSTORE
7560: SWAP1
7561: PUSH1 0x40
7563: MSTORE
7564: SWAP2
7565: POP
7566: PUSH1 0xe0
7568: SHL
7569: PUSH1 0x20
7571: DUP3
7572: ADD
7573: DUP1
7574: MLOAD
7575: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
7604: DUP4
7605: DUP2
7606: DUP4
7607: AND
7608: OR
7609: DUP4
7610: MSTORE
7611: POP
7612: POP
7613: POP
7614: POP
7615: PUSH2 0x23b1
7618: JUMP
7619: JUMPDEST
7620: PUSH2 0x1dcd
7623: DUP2
7624: CALLER
7625: PUSH2 0x2436
7628: JUMP
7629: JUMPDEST
7630: POP
7631: JUMP
7632: JUMPDEST
7633: PUSH0
7634: DUP3
7635: DUP2
7636: MSTORE
7637: PUSH32 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800
=== 7850-7935 ===
7850: SWAP2
7851: POP
7852: POP
7853: PUSH2 0x05aa
7856: JUMP
7857: JUMPDEST
7858: PUSH0
7859: DUP1
7860: PUSH1 0x18
7862: PUSH2 0x1ec1
7865: PUSH2 0x0e10
7868: TIMESTAMP
7869: PUSH2 0x3a16
7872: JUMP
7873: JUMPDEST
7874: PUSH2 0x1ecb
7877: SWAP2
7878: SWAP1
7879: PUSH2 0x3a29
7882: JUMP
7883: JUMPDEST
7884: SWAP1
7885: POP
7886: DUP1
7887: DUP5
7888: GT
7889: ISZERO
7890: DUP1
7891: ISZERO
7892: PUSH2 0x1edc
7895: JUMPI
7896: POP
7897: DUP3
7898: DUP2
7899: LT
7900: JUMPDEST
7901: SWAP5
7902: SWAP4
7903: POP
7904: POP
7905: POP
7906: POP
7907: JUMP
7908: JUMPDEST
7909: PUSH1 0x01
7911: PUSH1 0x01
7913: PUSH1 0xa0
7915: SHL
7916: SUB
7917: DUP2
7918: AND
7919: PUSH2 0x1f3a
7922: JUMPI
7923: PUSH1 0x40
7925: MLOAD
7926: PUSH3 0x461bcd
7930: PUSH1 0xe5
7932: SHL
7933: DUP2
7934: MSTORE
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
for s,e in [(11200,11680),(12180,12480),(12680,13020),(13520,13840)]:
print(f'\\n=== {s}-{e} ===')
dis(s,e)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
=== 11200-11680 ===
11200: ADD
11201: PUSH1 0x01
11203: PUSH1 0xa0
11205: SHL
11206: SUB
11207: AND
11208: EXTCODESIZE
11209: GT
11210: JUMPDEST
11211: SWAP7
11212: SWAP6
11213: POP
11214: POP
11215: POP
11216: POP
11217: POP
11218: POP
11219: JUMP
11220: JUMPDEST
11221: PUSH1 0xa0
11223: DUP2
11224: ADD
11225: MLOAD
11226: PUSH1 0x80
11228: ADD
11229: MLOAD
11230: PUSH0
11231: SWAP1
11232: DUP2
11233: SWAP1
11234: PUSH1 0x09
11236: PUSH1 0xff
11238: DUP3
11239: AND
11240: LT
11241: DUP1
11242: PUSH2 0x2bf6
11245: JUMPI
11246: POP
11247: PUSH1 0xff
11249: DUP2
11250: AND
11251: PUSH1 0x0e
11253: EQ
11254: JUMPDEST
11255: DUP1
11256: PUSH2 0x2c04
11259: JUMPI
11260: POP
11261: PUSH1 0xff
11263: DUP2
11264: AND
11265: PUSH1 0x0f
11267: EQ
11268: JUMPDEST
11269: ISZERO
11270: PUSH2 0x2c19
11273: JUMPI
11274: PUSH2 0x2c12
11277: PUSH0
11278: PUSH2 0x2dc2
11281: JUMP
11282: JUMPDEST
11283: SWAP2
11284: POP
11285: PUSH2 0x2c26
11288: JUMP
11289: JUMPDEST
11290: PUSH2 0x2c23
11293: PUSH1 0x01
11295: PUSH2 0x2dc2
11298: JUMP
11299: JUMPDEST
11300: SWAP2
11301: POP
11302: JUMPDEST
11303: PUSH1 0x01
11305: PUSH1 0x01
11307: PUSH1 0xa0
11309: SHL
11310: SUB
11311: DUP3
11312: AND
11313: PUSH2 0x2c7c
11316: JUMPI
11317: PUSH1 0x40
11319: MLOAD
11320: PUSH3 0x461bcd
11324: PUSH1 0xe5
11326: SHL
11327: DUP2
11328: MSTORE
11329: PUSH1 0x20
11331: PUSH1 0x04
11333: DUP3
11334: ADD
11335: MSTORE
11336: PUSH1 0x1b
11338: PUSH1 0x24
11340: DUP3
11341: ADD
11342: MSTORE
11343: PUSH32 0x5377617020696d706c656d656e746174696f6e206e6f74207365740000000000
11376: PUSH1 0x44
11378: DUP3
11379: ADD
11380: MSTORE
11381: PUSH1 0x64
11383: ADD
11384: PUSH2 0x0629
11387: JUMP
11388: JUMPDEST
11389: PUSH0
11390: DUP1
11391: DUP4
11392: PUSH1 0x01
11394: PUSH1 0x01
11396: PUSH1 0xa0
11398: SHL
11399: SUB
11400: AND
11401: PUSH4 0x237974fa
11406: PUSH1 0xe0
11408: SHL
11409: DUP8
11410: PUSH1 0x40
11412: MLOAD
11413: PUSH1 0x24
11415: ADD
11416: PUSH2 0x2ca1
11419: SWAP2
11420: SWAP1
11421: PUSH2 0x4000
11424: JUMP
11425: JUMPDEST
11426: PUSH1 0x40
11428: DUP1
11429: MLOAD
11430: PUSH1 0x1f
11432: NOT
11433: DUP2
11434: DUP5
11435: SUB
11436: ADD
11437: DUP2
11438: MSTORE
11439: SWAP2
11440: DUP2
11441: MSTORE
11442: PUSH1 0x20
11444: DUP3
11445: ADD
11446: DUP1
11447: MLOAD
11448: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
11477: AND
11478: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
11511: SWAP1
11512: SWAP5
11513: AND
11514: SWAP4
11515: SWAP1
11516: SWAP4
11517: OR
11518: SWAP1
11519: SWAP3
11520: MSTORE
11521: SWAP1
11522: MLOAD
11523: PUSH2 0x2d0c
11526: SWAP2
11527: SWAP1
11528: PUSH2 0x3a6c
11531: JUMP
11532: JUMPDEST
11533: PUSH0
11534: PUSH1 0x40
11536: MLOAD
11537: DUP1
11538: DUP4
11539: SUB
11540: DUP2
11541: DUP6
11542: GAS
11543: DELEGATECALL
11544: SWAP2
11545: POP
11546: POP
11547: RETURNDATASIZE
11548: DUP1
11549: PUSH0
11550: DUP2
11551: EQ
11552: PUSH2 0x2d44
11555: JUMPI
11556: PUSH1 0x40
11558: MLOAD
11559: SWAP2
11560: POP
11561: PUSH1 0x1f
11563: NOT
11564: PUSH1 0x3f
11566: RETURNDATASIZE
11567: ADD
11568: AND
11569: DUP3
11570: ADD
11571: PUSH1 0x40
11573: MSTORE
11574: RETURNDATASIZE
11575: DUP3
11576: MSTORE
11577: RETURNDATASIZE
11578: PUSH0
11579: PUSH1 0x20
11581: DUP5
11582: ADD
11583: RETURNDATACOPY
11584: PUSH2 0x2d49
11587: JUMP
11588: JUMPDEST
11589: PUSH1 0x60
11591: SWAP2
11592: POP
11593: JUMPDEST
11594: POP
11595: SWAP2
11596: POP
11597: SWAP2
11598: POP
11599: DUP2
11600: PUSH2 0x2dae
11603: JUMPI
11604: DUP1
11605: MLOAD
11606: ISZERO
11607: PUSH2 0x2d63
11610: JUMPI
11611: DUP1
11612: MLOAD
11613: DUP1
11614: DUP3
11615: PUSH1 0x20
11617: ADD
11618: REVERT
11619: JUMPDEST
11620: PUSH1 0x40
11622: DUP1
11623: MLOAD
11624: DUP1
11625: DUP3
11626: ADD
11627: DUP3
11628: MSTORE
11629: PUSH1 0x01
11631: DUP2
11632: MSTORE
11633: PUSH32 0x5000000000000000000000000000000000000000000000000000000000000000
11666: PUSH1 0x20
11668: DUP3
11669: ADD
11670: MSTORE
11671: SWAP1
11672: MLOAD
11673: PUSH3 0x461bcd
11677: PUSH1 0xe5
11679: SHL
=== 12180-12480 ===
12180: POP
12181: POP
12182: POP
12183: JUMP
12184: JUMPDEST
12185: PUSH0
12186: PUSH1 0x20
12188: DUP3
12189: DUP5
12190: SUB
12191: SLT
12192: ISZERO
12193: PUSH2 0x2fa8
12196: JUMPI
12197: PUSH0
12198: DUP1
12199: REVERT
12200: JUMPDEST
12201: POP
12202: CALLDATALOAD
12203: SWAP2
12204: SWAP1
12205: POP
12206: JUMP
12207: JUMPDEST
12208: PUSH0
12209: DUP1
12210: PUSH1 0x40
12212: DUP4
12213: DUP6
12214: SUB
12215: SLT
12216: ISZERO
12217: PUSH2 0x2fc0
12220: JUMPI
12221: PUSH0
12222: DUP1
12223: REVERT
12224: JUMPDEST
12225: DUP3
12226: CALLDATALOAD
12227: SWAP2
12228: POP
12229: PUSH1 0x20
12231: DUP4
12232: ADD
12233: CALLDATALOAD
12234: PUSH2 0x2fd2
12237: DUP2
12238: PUSH2 0x2ecc
12241: JUMP
12242: JUMPDEST
12243: DUP1
12244: SWAP2
12245: POP
12246: POP
12247: SWAP3
12248: POP
12249: SWAP3
12250: SWAP1
12251: POP
12252: JUMP
12253: JUMPDEST
12254: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
12287: PUSH0
12288: MSTORE
12289: PUSH1 0x41
12291: PUSH1 0x04
12293: MSTORE
12294: PUSH1 0x24
12296: PUSH0
12297: REVERT
12298: JUMPDEST
12299: PUSH1 0x40
12301: MLOAD
12302: PUSH1 0xe0
12304: DUP2
12305: ADD
12306: PUSH8 0xffffffffffffffff
12315: DUP2
12316: GT
12317: DUP3
12318: DUP3
12319: LT
12320: OR
12321: ISZERO
12322: PUSH2 0x302d
12325: JUMPI
12326: PUSH2 0x302d
12329: PUSH2 0x2fdd
12332: JUMP
12333: JUMPDEST
12334: PUSH1 0x40
12336: MSTORE
12337: SWAP1
12338: JUMP
12339: JUMPDEST
12340: PUSH1 0x40
12342: MLOAD
12343: PUSH1 0x60
12345: DUP2
12346: ADD
12347: PUSH8 0xffffffffffffffff
12356: DUP2
12357: GT
12358: DUP3
12359: DUP3
12360: LT
12361: OR
12362: ISZERO
12363: PUSH2 0x302d
12366: JUMPI
12367: PUSH2 0x302d
12370: PUSH2 0x2fdd
12373: JUMP
12374: JUMPDEST
12375: PUSH1 0x40
12377: MLOAD
12378: PUSH1 0xa0
12380: DUP2
12381: ADD
12382: PUSH8 0xffffffffffffffff
12391: DUP2
12392: GT
12393: DUP3
12394: DUP3
12395: LT
12396: OR
12397: ISZERO
12398: PUSH2 0x302d
12401: JUMPI
12402: PUSH2 0x302d
12405: PUSH2 0x2fdd
12408: JUMP
12409: JUMPDEST
12410: PUSH1 0x40
12412: DUP1
12413: MLOAD
12414: SWAP1
12415: DUP2
12416: ADD
12417: PUSH8 0xffffffffffffffff
12426: DUP2
12427: GT
12428: DUP3
12429: DUP3
12430: LT
12431: OR
12432: ISZERO
12433: PUSH2 0x302d
12436: JUMPI
12437: PUSH2 0x302d
12440: PUSH2 0x2fdd
12443: JUMP
12444: JUMPDEST
12445: PUSH1 0x40
12447: MLOAD
12448: PUSH2 0x0120
12451: DUP2
12452: ADD
12453: PUSH8 0xffffffffffffffff
12462: DUP2
12463: GT
12464: DUP3
12465: DUP3
12466: LT
12467: OR
12468: ISZERO
12469: PUSH2 0x302d
12472: JUMPI
12473: PUSH2 0x302d
12476: PUSH2 0x2fdd
12479: JUMP
=== 12680-13020 ===
12680: LOG1
12681: JUMPI
12682: DUP1
12683: CALLDATALOAD
12684: PUSH2 0x3194
12687: DUP2
12688: PUSH2 0x2ecc
12691: JUMP
12692: JUMPDEST
12693: DUP4
12694: MSTORE
12695: SWAP2
12696: DUP4
12697: ADD
12698: SWAP2
12699: DUP4
12700: ADD
12701: PUSH2 0x3181
12704: JUMP
12705: JUMPDEST
12706: POP
12707: SWAP7
12708: SWAP6
12709: POP
12710: POP
12711: POP
12712: POP
12713: POP
12714: POP
12715: JUMP
12716: JUMPDEST
12717: PUSH0
12718: DUP1
12719: PUSH1 0x40
12721: DUP4
12722: DUP6
12723: SUB
12724: SLT
12725: ISZERO
12726: PUSH2 0x31bd
12729: JUMPI
12730: PUSH0
12731: DUP1
12732: REVERT
12733: JUMPDEST
12734: DUP3
12735: CALLDATALOAD
12736: PUSH8 0xffffffffffffffff
12745: DUP1
12746: DUP3
12747: GT
12748: ISZERO
12749: PUSH2 0x31d4
12752: JUMPI
12753: PUSH0
12754: DUP1
12755: REVERT
12756: JUMPDEST
12757: PUSH2 0x31e0
12760: DUP7
12761: DUP4
12762: DUP8
12763: ADD
12764: PUSH2 0x3137
12767: JUMP
12768: JUMPDEST
12769: SWAP4
12770: POP
12771: PUSH1 0x20
12773: DUP6
12774: ADD
12775: CALLDATALOAD
12776: SWAP2
12777: POP
12778: DUP1
12779: DUP3
12780: GT
12781: ISZERO
12782: PUSH2 0x31f5
12785: JUMPI
12786: PUSH0
12787: DUP1
12788: REVERT
12789: JUMPDEST
12790: POP
12791: PUSH2 0x3202
12794: DUP6
12795: DUP3
12796: DUP7
12797: ADD
12798: PUSH2 0x3137
12801: JUMP
12802: JUMPDEST
12803: SWAP2
12804: POP
12805: POP
12806: SWAP3
12807: POP
12808: SWAP3
12809: SWAP1
12810: POP
12811: JUMP
12812: JUMPDEST
12813: PUSH0
12814: DUP1
12815: PUSH1 0x20
12817: DUP4
12818: DUP6
12819: SUB
12820: SLT
12821: ISZERO
12822: PUSH2 0x321d
12825: JUMPI
12826: PUSH0
12827: DUP1
12828: REVERT
12829: JUMPDEST
12830: DUP3
12831: CALLDATALOAD
12832: PUSH8 0xffffffffffffffff
12841: DUP2
12842: GT
12843: ISZERO
12844: PUSH2 0x3233
12847: JUMPI
12848: PUSH0
12849: DUP1
12850: REVERT
12851: JUMPDEST
12852: PUSH2 0x323f
12855: DUP6
12856: DUP3
12857: DUP7
12858: ADD
12859: PUSH2 0x2f0b
12862: JUMP
12863: JUMPDEST
12864: SWAP1
12865: SWAP7
12866: SWAP1
12867: SWAP6
12868: POP
12869: SWAP4
12870: POP
12871: POP
12872: POP
12873: POP
12874: JUMP
12875: JUMPDEST
12876: PUSH0
12877: JUMPDEST
12878: DUP4
12879: DUP2
12880: LT
12881: ISZERO
12882: PUSH2 0x3265
12885: JUMPI
12886: DUP2
12887: DUP2
12888: ADD
12889: MLOAD
12890: DUP4
12891: DUP3
12892: ADD
12893: MSTORE
12894: PUSH1 0x20
12896: ADD
12897: PUSH2 0x324d
12900: JUMP
12901: JUMPDEST
12902: POP
12903: POP
12904: PUSH0
12905: SWAP2
12906: ADD
12907: MSTORE
12908: JUMP
12909: JUMPDEST
12910: PUSH0
12911: DUP2
12912: MLOAD
12913: DUP1
12914: DUP5
12915: MSTORE
12916: PUSH2 0x3284
12919: DUP2
12920: PUSH1 0x20
12922: DUP7
12923: ADD
12924: PUSH1 0x20
12926: DUP7
12927: ADD
12928: PUSH2 0x324b
12931: JUMP
12932: JUMPDEST
12933: PUSH1 0x1f
12935: ADD
12936: PUSH1 0x1f
12938: NOT
12939: AND
12940: SWAP3
12941: SWAP1
12942: SWAP3
12943: ADD
12944: PUSH1 0x20
12946: ADD
12947: SWAP3
12948: SWAP2
12949: POP
12950: POP
12951: JUMP
12952: JUMPDEST
12953: PUSH1 0x20
12955: DUP2
12956: MSTORE
12957: PUSH0
12958: PUSH2 0x2e35
12961: PUSH1 0x20
12963: DUP4
12964: ADD
12965: DUP5
12966: PUSH2 0x326d
12969: JUMP
12970: JUMPDEST
12971: PUSH0
12972: PUSH8 0xffffffffffffffff
12981: DUP3
12982: GT
12983: ISZERO
12984: PUSH2 0x32c3
12987: JUMPI
12988: PUSH2 0x32c3
12991: PUSH2 0x2fdd
12994: JUMP
12995: JUMPDEST
12996: POP
12997: PUSH1 0x1f
12999: ADD
13000: PUSH1 0x1f
13002: NOT
13003: AND
13004: PUSH1 0x20
13006: ADD
13007: SWAP1
13008: JUMP
13009: JUMPDEST
13010: PUSH0
13011: DUP3
13012: PUSH1 0x1f
13014: DUP4
13015: ADD
13016: SLT
13017: PUSH2 0x32e0
=== 13520-13840 ===
13520: SWAP3
13521: SWAP5
13522: SWAP4
13523: SWAP3
13524: POP
13525: POP
13526: POP
13527: JUMP
13528: JUMPDEST
13529: PUSH0
13530: DUP1
13531: PUSH1 0x40
13533: DUP4
13534: DUP6
13535: SUB
13536: SLT
13537: ISZERO
13538: PUSH2 0x34e9
13541: JUMPI
13542: PUSH0
13543: DUP1
13544: REVERT
13545: JUMPDEST
13546: DUP3
13547: CALLDATALOAD
13548: PUSH2 0x34f4
13551: DUP2
13552: PUSH2 0x2ecc
13555: JUMP
13556: JUMPDEST
13557: SWAP5
13558: PUSH1 0x20
13560: SWAP4
13561: SWAP1
13562: SWAP4
13563: ADD
13564: CALLDATALOAD
13565: SWAP4
13566: POP
13567: POP
13568: POP
13569: JUMP
13570: JUMPDEST
13571: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
13604: PUSH0
13605: MSTORE
13606: PUSH1 0x32
13608: PUSH1 0x04
13610: MSTORE
13611: PUSH1 0x24
13613: PUSH0
13614: REVERT
13615: JUMPDEST
13616: PUSH0
13617: DUP3
13618: CALLDATALOAD
13619: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1
13652: DUP4
13653: CALLDATASIZE
13654: SUB
13655: ADD
13656: DUP2
13657: SLT
13658: PUSH2 0x3561
13661: JUMPI
13662: PUSH0
13663: DUP1
13664: REVERT
13665: JUMPDEST
13666: SWAP2
13667: SWAP1
13668: SWAP2
13669: ADD
13670: SWAP3
13671: SWAP2
13672: POP
13673: POP
13674: JUMP
13675: JUMPDEST
13676: PUSH0
13677: DUP1
13678: DUP4
13679: CALLDATALOAD
13680: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1
13713: DUP5
13714: CALLDATASIZE
13715: SUB
13716: ADD
13717: DUP2
13718: SLT
13719: PUSH2 0x359e
13722: JUMPI
13723: PUSH0
13724: DUP1
13725: REVERT
13726: JUMPDEST
13727: DUP4
13728: ADD
13729: DUP1
13730: CALLDATALOAD
13731: SWAP2
13732: POP
13733: PUSH8 0xffffffffffffffff
13742: DUP3
13743: GT
13744: ISZERO
13745: PUSH2 0x35b8
13748: JUMPI
13749: PUSH0
13750: DUP1
13751: REVERT
13752: JUMPDEST
13753: PUSH1 0x20
13755: ADD
13756: SWAP2
13757: POP
13758: CALLDATASIZE
13759: DUP2
13760: SWAP1
13761: SUB
13762: DUP3
13763: SGT
13764: ISZERO
13765: PUSH2 0x2e7d
13768: JUMPI
13769: PUSH0
13770: DUP1
13771: REVERT
13772: JUMPDEST
13773: DUP2
13774: DUP4
13775: DUP3
13776: CALLDATACOPY
13777: PUSH0
13778: SWAP2
13779: ADD
13780: SWAP1
13781: DUP2
13782: MSTORE
13783: SWAP2
13784: SWAP1
13785: POP
13786: JUMP
13787: JUMPDEST
13788: DUP1
13789: CALLDATALOAD
13790: PUSH3 0xffffff
13794: DUP2
13795: AND
13796: DUP2
13797: EQ
13798: PUSH2 0x2eeb
13801: JUMPI
13802: PUSH0
13803: DUP1
13804: REVERT
13805: JUMPDEST
13806: PUSH0
13807: PUSH1 0x60
13809: DUP3
13810: DUP5
13811: SUB
13812: SLT
13813: ISZERO
13814: PUSH2 0x35fd
13817: JUMPI
13818: PUSH0
13819: DUP1
13820: REVERT
13821: JUMPDEST
13822: PUSH2 0x3605
13825: PUSH2 0x3033
13828: JUMP
13829: JUMPDEST
13830: SWAP1
13831: POP
13832: PUSH2 0x3610
13835: DUP3
13836: PUSH2 0x3331
13839: JUMP
exec
/bin/bash -lc "python - <<'PY'
import json,re
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
# quick scan for PUSH2 0x21f5 or 0x2223 etc
for target in [0x21f5,0x2223,0x2bd4,0x2c7c,0x2d0c,0x21fc,0x15c6,0x16c3,0x1fd6,0x203d]:
seq=bytes([0x61,(target>>8)&0xff,target&0xff])
poss=[]
start=0
while True:
idx=code.find(seq,start)
if idx==-1: break
poss.append(idx)
start=idx+1
print(hex(target), poss[:20])
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
0x21f5 [8685, 10640, 10689]
0x2223 [8730]
0x2bd4 [10393]
0x2c7c [11313]
0x2d0c [11523]
0x21fc [6412]
0x15c6 [1042, 3249]
0x16c3 [1104]
0x1fd6 [5747]
0x203d [5756]
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(10280,10550)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
10280: MSTORE
10281: PUSH1 0x20
10283: ADD
10284: DUP6
10285: DUP2
10286: MSTORE
10287: PUSH1 0x20
10289: ADD
10290: DUP5
10291: PUSH1 0x01
10293: PUSH1 0x01
10295: PUSH1 0xa0
10297: SHL
10298: SUB
10299: AND
10300: DUP2
10301: MSTORE
10302: PUSH1 0x20
10304: ADD
10305: DUP15
10306: PUSH1 0x20
10308: ADD
10309: MLOAD
10310: DUP10
10311: PUSH1 0x40
10313: ADD
10314: MLOAD
10315: PUSH1 0xff
10317: AND
10318: DUP2
10319: MLOAD
10320: DUP2
10321: LT
10322: PUSH2 0x285d
10325: JUMPI
10326: PUSH2 0x285d
10329: PUSH2 0x3502
10332: JUMP
10333: JUMPDEST
10334: PUSH1 0x20
10336: MUL
10337: PUSH1 0x20
10339: ADD
10340: ADD
10341: MLOAD
10342: DUP2
10343: MSTORE
10344: PUSH1 0x20
10346: ADD
10347: DUP15
10348: PUSH1 0x20
10350: ADD
10351: MLOAD
10352: DUP10
10353: PUSH1 0x60
10355: ADD
10356: MLOAD
10357: PUSH1 0xff
10359: AND
10360: DUP2
10361: MLOAD
10362: DUP2
10363: LT
10364: PUSH2 0x2887
10367: JUMPI
10368: PUSH2 0x2887
10371: PUSH2 0x3502
10374: JUMP
10375: JUMPDEST
10376: PUSH1 0x20
10378: MUL
10379: PUSH1 0x20
10381: ADD
10382: ADD
10383: MLOAD
10384: DUP2
10385: MSTORE
10386: PUSH1 0x20
10388: ADD
10389: DUP9
10390: DUP2
10391: MSTORE
10392: POP
10393: PUSH2 0x2bd4
10396: JUMP
10397: JUMPDEST
10398: SWAP1
10399: POP
10400: DUP6
10401: PUSH1 0x60
10403: ADD
10404: MLOAD
10405: PUSH1 0xff
10407: AND
10408: DUP7
10409: PUSH1 0x40
10411: ADD
10412: MLOAD
10413: PUSH1 0xff
10415: AND
10416: SUB
10417: PUSH2 0x28c8
10420: JUMPI
10421: PUSH2 0x28be
10424: DUP2
10425: DUP10
10426: PUSH2 0x3a3c
10429: JUMP
10430: JUMPDEST
10431: SWAP8
10432: POP
10433: DUP8
10434: SWAP9
10435: POP
10436: PUSH2 0x2906
10439: JUMP
10440: JUMPDEST
10441: PUSH2 0x28d2
10444: DUP5
10445: DUP10
10446: PUSH2 0x3f90
10449: JUMP
10450: JUMPDEST
10451: SWAP8
10452: POP
10453: DUP1
10454: DUP11
10455: DUP8
10456: PUSH1 0x60
10458: ADD
10459: MLOAD
10460: PUSH1 0xff
10462: AND
10463: DUP2
10464: MLOAD
10465: DUP2
10466: LT
10467: PUSH2 0x28ee
10470: JUMPI
10471: PUSH2 0x28ee
10474: PUSH2 0x3502
10477: JUMP
10478: JUMPDEST
10479: PUSH1 0x20
10481: MUL
10482: PUSH1 0x20
10484: ADD
10485: ADD
10486: DUP2
10487: DUP2
10488: MLOAD
10489: PUSH2 0x2902
10492: SWAP2
10493: SWAP1
10494: PUSH2 0x3a3c
10497: JUMP
10498: JUMPDEST
10499: SWAP1
10500: MSTORE
10501: POP
10502: JUMPDEST
10503: POP
10504: POP
10505: PUSH1 0x01
10507: SWAP1
10508: SWAP5
10509: ADD
10510: SWAP4
10511: POP
10512: PUSH2 0x260a
10515: SWAP3
10516: POP
10517: POP
10518: POP
10519: JUMP
10520: JUMPDEST
10521: POP
10522: DUP3
10523: PUSH0
10524: DUP7
10525: PUSH1 0x60
10527: ADD
10528: MLOAD
10529: PUSH1 0x01
10531: DUP2
10532: GT
10533: ISZERO
10534: PUSH2 0x2931
10537: JUMPI
10538: PUSH2 0x2931
10541: PUSH2 0x3fd3
10544: JUMP
10545: JUMPDEST
10546: EQ
10547: PUSH2 0x293c
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(8110,8325)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
8110: STOP
8111: STOP
8112: STOP
8113: STOP
8114: STOP
8115: STOP
8116: STOP
8117: STOP
8118: STOP
8119: STOP
8120: STOP
8121: STOP
8122: STOP
8123: STOP
8124: STOP
8125: STOP
8126: STOP
8127: STOP
8128: STOP
8129: STOP
8130: STOP
8131: STOP
8132: STOP
8133: STOP
8134: STOP
8135: DUP2
8136: MSTORE
8137: PUSH1 0x04
8139: ADD
8140: PUSH1 0x40
8142: MLOAD
8143: DUP1
8144: SWAP2
8145: SUB
8146: SWAP1
8147: REVERT
8148: JUMPDEST
8149: JUMP
8150: JUMPDEST
8151: PUSH2 0x1fde
8154: PUSH2 0x1f6d
8157: JUMP
8158: JUMPDEST
8159: PUSH2 0x1fe6
8162: PUSH2 0x24c2
8165: JUMP
8166: JUMPDEST
8167: PUSH0
8168: JUMPDEST
8169: DUP2
8170: MLOAD
8171: DUP2
8172: LT
8173: ISZERO
8174: PUSH2 0x089d
8177: JUMPI
8178: PUSH2 0x2034
8181: PUSH32 0xb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e
8214: DUP4
8215: DUP4
8216: DUP2
8217: MLOAD
8218: DUP2
8219: LT
8220: PUSH2 0x2027
8223: JUMPI
8224: PUSH2 0x2027
8227: PUSH2 0x3502
8230: JUMP
8231: JUMPDEST
8232: PUSH1 0x20
8234: MUL
8235: PUSH1 0x20
8237: ADD
8238: ADD
8239: MLOAD
8240: PUSH2 0x1dd0
8243: JUMP
8244: JUMPDEST
8245: POP
8246: PUSH1 0x01
8248: ADD
8249: PUSH2 0x1fe8
8252: JUMP
8253: JUMPDEST
8254: PUSH2 0x2045
8257: PUSH2 0x1f6d
8260: JUMP
8261: JUMPDEST
8262: PUSH0
8263: JUMPDEST
8264: DUP2
8265: MLOAD
8266: DUP2
8267: LT
8268: ISZERO
8269: PUSH2 0x089d
8272: JUMPI
8273: PUSH2 0x2073
8276: DUP2
8277: DUP4
8278: DUP4
8279: DUP2
8280: MLOAD
8281: DUP2
8282: LT
8283: PUSH2 0x2066
8286: JUMPI
8287: PUSH2 0x2066
8290: PUSH2 0x3502
8293: JUMP
8294: JUMPDEST
8295: PUSH1 0x20
8297: MUL
8298: PUSH1 0x20
8300: ADD
8301: ADD
8302: MLOAD
8303: PUSH2 0x1ee4
8306: JUMP
8307: JUMPDEST
8308: PUSH1 0x01
8310: ADD
8311: PUSH2 0x2047
8314: JUMP
8315: JUMPDEST
8316: PUSH4 0xffffffff
8321: DUP2
8322: PUSH1 0xa0
8324: ADD
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(7870,8095)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
7870: GASPRICE
7871: AND
7872: JUMP
7873: JUMPDEST
7874: PUSH2 0x1ecb
7877: SWAP2
7878: SWAP1
7879: PUSH2 0x3a29
7882: JUMP
7883: JUMPDEST
7884: SWAP1
7885: POP
7886: DUP1
7887: DUP5
7888: GT
7889: ISZERO
7890: DUP1
7891: ISZERO
7892: PUSH2 0x1edc
7895: JUMPI
7896: POP
7897: DUP3
7898: DUP2
7899: LT
7900: JUMPDEST
7901: SWAP5
7902: SWAP4
7903: POP
7904: POP
7905: POP
7906: POP
7907: JUMP
7908: JUMPDEST
7909: PUSH1 0x01
7911: PUSH1 0x01
7913: PUSH1 0xa0
7915: SHL
7916: SUB
7917: DUP2
7918: AND
7919: PUSH2 0x1f3a
7922: JUMPI
7923: PUSH1 0x40
7925: MLOAD
7926: PUSH3 0x461bcd
7930: PUSH1 0xe5
7932: SHL
7933: DUP2
7934: MSTORE
7935: PUSH1 0x20
7937: PUSH1 0x04
7939: DUP3
7940: ADD
7941: MSTORE
7942: PUSH1 0x16
7944: PUSH1 0x24
7946: DUP3
7947: ADD
7948: MSTORE
7949: PUSH32 0x496e76616c696420696d706c656d656e746174696f6e00000000000000000000
7982: PUSH1 0x44
7984: DUP3
7985: ADD
7986: MSTORE
7987: PUSH1 0x64
7989: ADD
7990: PUSH2 0x0629
7993: JUMP
7994: JUMPDEST
7995: PUSH0
7996: PUSH2 0x1f65
7999: DUP4
8000: PUSH32 0x27a7c29818a01378f2bedc8ddf9f92d28ddb97e7a6080124cb8f283ef9f38e2d
8033: PUSH2 0x3a3c
8036: JUMP
8037: JUMPDEST
8038: SWAP2
8039: SWAP1
8040: SWAP2
8041: SSTORE
8042: POP
8043: POP
8044: JUMP
8045: JUMPDEST
8046: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
8079: SLOAD
8080: PUSH9 0x010000000000000000
8090: SWAP1
8091: DIV
8092: PUSH1 0xff
8094: AND
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(11780,11940)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
11780: DUP1
11781: REVERT
11782: JUMPDEST
11783: DUP2
11784: CALLDATALOAD
11785: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
11818: DUP2
11819: AND
11820: DUP2
11821: EQ
11822: PUSH2 0x2e35
11825: JUMPI
11826: PUSH0
11827: DUP1
11828: REVERT
11829: JUMPDEST
11830: SWAP4
11831: SWAP3
11832: POP
11833: POP
11834: POP
11835: JUMP
11836: JUMPDEST
11837: PUSH0
11838: DUP1
11839: DUP4
11840: PUSH1 0x1f
11842: DUP5
11843: ADD
11844: SLT
11845: PUSH2 0x2e4c
11848: JUMPI
11849: PUSH0
11850: DUP1
11851: REVERT
11852: JUMPDEST
11853: POP
11854: DUP2
11855: CALLDATALOAD
11856: PUSH8 0xffffffffffffffff
11865: DUP2
11866: GT
11867: ISZERO
11868: PUSH2 0x2e63
11871: JUMPI
11872: PUSH0
11873: DUP1
11874: REVERT
11875: JUMPDEST
11876: PUSH1 0x20
11878: DUP4
11879: ADD
11880: SWAP2
11881: POP
11882: DUP4
11883: PUSH1 0x20
11885: DUP3
11886: PUSH1 0x05
11888: SHL
11889: DUP6
11890: ADD
11891: ADD
11892: GT
11893: ISZERO
11894: PUSH2 0x2e7d
11897: JUMPI
11898: PUSH0
11899: DUP1
11900: REVERT
11901: JUMPDEST
11902: SWAP3
11903: POP
11904: SWAP3
11905: SWAP1
11906: POP
11907: JUMP
11908: JUMPDEST
11909: PUSH0
11910: DUP1
11911: PUSH0
11912: PUSH1 0x40
11914: DUP5
11915: DUP7
11916: SUB
11917: SLT
11918: ISZERO
11919: PUSH2 0x2e96
11922: JUMPI
11923: PUSH0
11924: DUP1
11925: REVERT
11926: JUMPDEST
11927: DUP4
11928: CALLDATALOAD
11929: SWAP3
11930: POP
11931: PUSH1 0x20
11933: DUP5
11934: ADD
11935: CALLDATALOAD
11936: PUSH8 0xffffffffffffffff
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
# find exact pc 0x2dc2
print(0x2dc2)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
11714
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(11690,11740)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
11690: PUSH2 0x3298
11693: JUMP
11694: JUMPDEST
11695: DUP1
11696: DUP1
11697: PUSH1 0x20
11699: ADD
11700: SWAP1
11701: MLOAD
11702: DUP2
11703: ADD
11704: SWAP1
11705: PUSH2 0x2bca
11708: SWAP2
11709: SWAP1
11710: PUSH2 0x378a
11713: JUMP
11714: JUMPDEST
11715: PUSH0
11716: DUP1
11717: PUSH2 0x2dee
11720: DUP4
11721: PUSH32 0x27a7c29818a01378f2bedc8ddf9f92d28ddb97e7a6080124cb8f283ef9f38e2d
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(11714,11780)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
11714: JUMPDEST
11715: PUSH0
11716: DUP1
11717: PUSH2 0x2dee
11720: DUP4
11721: PUSH32 0x27a7c29818a01378f2bedc8ddf9f92d28ddb97e7a6080124cb8f283ef9f38e2d
11754: PUSH2 0x3a3c
11757: JUMP
11758: JUMPDEST
11759: SLOAD
11760: SWAP4
11761: SWAP3
11762: POP
11763: POP
11764: POP
11765: JUMP
11766: JUMPDEST
11767: PUSH0
11768: PUSH1 0x20
11770: DUP3
11771: DUP5
11772: SUB
11773: SLT
11774: ISZERO
11775: PUSH2 0x2e06
11778: JUMPI
11779: PUSH0
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(7520,7870)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
7520: DUP4
7521: ADD
7522: MSTORE
7523: PUSH1 0x44
7525: DUP3
7526: ADD
7527: DUP4
7528: SWAP1
7529: MSTORE
7530: PUSH2 0x0a12
7533: SWAP2
7534: DUP6
7535: SWAP2
7536: DUP3
7537: AND
7538: SWAP1
7539: PUSH4 0xa9059cbb
7544: SWAP1
7545: PUSH1 0x64
7547: ADD
7548: JUMPDEST
7549: PUSH1 0x40
7551: MLOAD
7552: PUSH1 0x20
7554: DUP2
7555: DUP4
7556: SUB
7557: SUB
7558: DUP2
7559: MSTORE
7560: SWAP1
7561: PUSH1 0x40
7563: MSTORE
7564: SWAP2
7565: POP
7566: PUSH1 0xe0
7568: SHL
7569: PUSH1 0x20
7571: DUP3
7572: ADD
7573: DUP1
7574: MLOAD
7575: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
7604: DUP4
7605: DUP2
7606: DUP4
7607: AND
7608: OR
7609: DUP4
7610: MSTORE
7611: POP
7612: POP
7613: POP
7614: POP
7615: PUSH2 0x23b1
7618: JUMP
7619: JUMPDEST
7620: PUSH2 0x1dcd
7623: DUP2
7624: CALLER
7625: PUSH2 0x2436
7628: JUMP
7629: JUMPDEST
7630: POP
7631: JUMP
7632: JUMPDEST
7633: PUSH0
7634: DUP3
7635: DUP2
7636: MSTORE
7637: PUSH32 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800
7670: PUSH1 0x20
7672: DUP2
7673: DUP2
7674: MSTORE
7675: PUSH1 0x40
7677: DUP1
7678: DUP5
7679: SHA3
7680: PUSH1 0x01
7682: PUSH1 0x01
7684: PUSH1 0xa0
7686: SHL
7687: SUB
7688: DUP7
7689: AND
7690: DUP6
7691: MSTORE
7692: SWAP1
7693: SWAP2
7694: MSTORE
7695: DUP3
7696: SHA3
7697: SLOAD
7698: PUSH1 0xff
7700: AND
7701: PUSH2 0x1d3f
7704: JUMPI
7705: PUSH0
7706: DUP5
7707: DUP2
7708: MSTORE
7709: PUSH1 0x20
7711: DUP3
7712: DUP2
7713: MSTORE
7714: PUSH1 0x40
7716: DUP1
7717: DUP4
7718: SHA3
7719: PUSH1 0x01
7721: PUSH1 0x01
7723: PUSH1 0xa0
7725: SHL
7726: SUB
7727: DUP8
7728: AND
7729: DUP5
7730: MSTORE
7731: SWAP1
7732: SWAP2
7733: MSTORE
7734: SWAP1
7735: SHA3
7736: DUP1
7737: SLOAD
7738: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
7771: AND
7772: PUSH1 0x01
7774: OR
7775: SWAP1
7776: SSTORE
7777: PUSH2 0x1e67
7780: CALLER
7781: SWAP1
7782: JUMP
7783: JUMPDEST
7784: PUSH1 0x01
7786: PUSH1 0x01
7788: PUSH1 0xa0
7790: SHL
7791: SUB
7792: AND
7793: DUP4
7794: PUSH1 0x01
7796: PUSH1 0x01
7798: PUSH1 0xa0
7800: SHL
7801: SUB
7802: AND
7803: DUP6
7804: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d
7837: PUSH1 0x40
7839: MLOAD
7840: PUSH1 0x40
7842: MLOAD
7843: DUP1
7844: SWAP2
7845: SUB
7846: SWAP1
7847: LOG4
7848: PUSH1 0x01
7850: SWAP2
7851: POP
7852: POP
7853: PUSH2 0x05aa
7856: JUMP
7857: JUMPDEST
7858: PUSH0
7859: DUP1
7860: PUSH1 0x18
7862: PUSH2 0x1ec1
7865: PUSH2 0x0e10
7868: TIMESTAMP
7869: PUSH2 0x3a16
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:data=json.load(f)
code=bytes.fromhex(data['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'PREVRANDAO',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x49:'BLOBHASH',0x4a:'BLOBBASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
def dis(start,end):
pc=start
while pc<end:
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if 0x60<=op<=0x7f:
n=op-0x5f; arg=code[pc+1:pc+1+n].hex(); print(f'{pc:5d}: {name} 0x{arg}'); pc+=1+n
else:
print(f'{pc:5d}: {name}'); pc+=1
dis(10590,10730)
PY" in /tmp/codex-d0goo8i1
succeeded in 0ms:
10590: JUMPDEST
10591: PUSH1 0x20
10593: MUL
10594: PUSH1 0x20
10596: ADD
10597: ADD
10598: MLOAD
10599: SWAP4
10600: POP
10601: POP
10602: POP
10603: POP
10604: SWAP3
10605: SWAP2
10606: POP
10607: POP
10608: JUMP
10609: JUMPDEST
10610: DUP5
10611: MLOAD
10612: PUSH1 0x01
10614: PUSH1 0x01
10616: PUSH1 0xa0
10618: SHL
10619: SUB
10620: AND
10621: ISZERO
10622: DUP1
10623: ISZERO
10624: SWAP1
10625: PUSH2 0x298e
10628: JUMPI
10629: POP
10630: DUP4
10631: DUP6
10632: PUSH1 0x20
10634: ADD
10635: MLOAD
10636: MLOAD
10637: GT
10638: JUMPDEST
10639: ISZERO
10640: PUSH2 0x21f5
10643: JUMPI
10644: PUSH0
10645: DUP6
10646: PUSH1 0x20
10648: ADD
10649: MLOAD
10650: DUP6
10651: DUP2
10652: MLOAD
10653: DUP2
10654: LT
10655: PUSH2 0x29aa
10658: JUMPI
10659: PUSH2 0x29aa
10662: PUSH2 0x3502
10665: JUMP
10666: JUMPDEST
10667: PUSH1 0x20
10669: MUL
10670: PUSH1 0x20
10672: ADD
10673: ADD
10674: MLOAD
10675: PUSH1 0x40
10677: ADD
10678: MLOAD
10679: SWAP1
10680: POP
10681: DUP3
10682: DUP2
10683: GT
10684: PUSH2 0x29c5
10687: JUMPI
10688: POP
10689: PUSH2 0x21f5
10692: JUMP
10693: JUMPDEST
10694: PUSH0
10695: DUP2
10696: DUP6
10697: GT
10698: PUSH2 0x29d3
10701: JUMPI
10702: DUP5
10703: PUSH2 0x29d5
10706: JUMP
10707: JUMPDEST
10708: DUP2
10709: JUMPDEST
10710: SWAP1
10711: POP
10712: PUSH0
10713: PUSH2 0x29e2
10716: DUP6
10717: DUP5
10718: PUSH2 0x3f90
10721: JUMP
10722: JUMPDEST
10723: PUSH2 0x29ec
10726: DUP7
10727: DUP5
10728: PUSH2 0x3f90
codex
{"no_findings":true,"summary":"Reviewed BYTECODE_BUNDLE.json and the embedded runtime bytecode for implementation 0x4f8b564e25337f6a3e66f12553221f6c05a13085, treating proxy storage as authoritative because the parent proxy 0x3d126d6b1581f7566a34bd4e912920bba41367d5 is linked via confirmed EIP-1967 metadata. I did not find a concrete implementation vulnerability that is defensible from bytecode alone. The dangerous sinks are real, but the evidence points to them being role-gated or registry-backed: owner-gated admin call paths revert with \"Only owner\"; the main swap/execution path reverts with \"Only PoolManager\" and temporarily clears/restores the pool-manager slot around execution, which is consistent with a reentrancy guard; and the reachable DELEGATECALL used for swap execution appears to load its implementation from a storage-backed implementation registry, with owner-managed implementation writes gated by an upgrade-window check (\"not in upgrade window\") and implementation validation (\"Invalid implementation\" / \"Swap implementation not set\"). One reported DELEGATECALL at pc:0x415e is in the CBOR metadata tail and is not executable code. Because this is a bytecode-only review, selector inference and role semantics remain best-effort, so residual design risk remains around trusted-owner/trusted-pool-manager assumptions, but I do not have enough evidence to elevate that into a concrete exploitable finding.","findings":[]}
tokens used
152,023
{
"codex": {
"ran_at": "2026-04-04T04:03:26.519546+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 33550,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Reviewed BYTECODE_BUNDLE.json and the embedded runtime bytecode for implementation 0x4f8b564e25337f6a3e66f12553221f6c05a13085, treating proxy storage as authoritative because the parent proxy 0x3d126d6b1581f7566a34bd4e912920bba41367d5 is linked via confirmed EIP-1967 metadata. I did not find a concrete implementation vulnerability that is defensible from bytecode alone. The dangerous sinks are real, but the evidence points to them being role-gated or registry-backed: owner-gated admin call paths revert with \"Only owner\"; the main swap/execution path reverts with \"Only PoolManager\" and temporarily clears/restores the pool-manager slot around execution, which is consistent with a reentrancy guard; and the reachable DELEGATECALL used for swap execution appears to load its implementation from a storage-backed implementation registry, with owner-managed implementation writes gated by an upgrade-window check (\"not in upgrade window\") and implementation validation (\"Invalid implementation\" / \"Swap implementation not set\"). One reported DELEGATECALL at pc:0x415e is in the CBOR metadata tail and is not executable code. Because this is a bytecode-only review, selector inference and role semantics remain best-effort, so residual design risk remains around trusted-owner/trusted-pool-manager assumptions, but I do not have enough evidence to elevate that into a concrete exploitable finding.",
"raw_final": {
"summary": "Reviewed BYTECODE_BUNDLE.json and the embedded runtime bytecode for implementation 0x4f8b564e25337f6a3e66f12553221f6c05a13085, treating proxy storage as authoritative because the parent proxy 0x3d126d6b1581f7566a34bd4e912920bba41367d5 is linked via confirmed EIP-1967 metadata. I did not find a concrete implementation vulnerability that is defensible from bytecode alone. The dangerous sinks are real, but the evidence points to them being role-gated or registry-backed: owner-gated admin call paths revert with \"Only owner\"; the main swap/execution path reverts with \"Only PoolManager\" and temporarily clears/restores the pool-manager slot around execution, which is consistent with a reentrancy guard; and the reachable DELEGATECALL used for swap execution appears to load its implementation from a storage-backed implementation registry, with owner-managed implementation writes gated by an upgrade-window check (\"not in upgrade window\") and implementation validation (\"Invalid implementation\" / \"Swap implementation not set\"). One reported DELEGATECALL at pc:0x415e is in the CBOR metadata tail and is not executable code. Because this is a bytecode-only review, selector inference and role semantics remain best-effort, so residual design risk remains around trusted-owner/trusted-pool-manager assumptions, but I do not have enough evidence to elevate that into a concrete exploitable finding.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"proxy_context": {
"proxy_run_id": "019d5666-7233-730f-8581-38faccd30bf8",
"proxy_address": "0x3d126d6b1581f7566a34bd4e912920bba41367d5",
"implementation_run_id": "019d5667-0d9d-728c-b832-799ea2787070",
"implementation_address": "0x4f8b564e25337f6a3e66f12553221f6c05a13085"
},
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH2 0x000c 00000008: PUSH2 0x000e 0000000b: JUMP 0000000c: JUMPDEST 0000000d: STOP 0000000e: JUMPDEST 0000000f: PUSH32 0x000000000000000000000000fd9688b109c06ab8de02ca6f395e811d845905b2 00000030: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000045: AND 00000046: CALLER 00000047: SUB 00000048: PUSH2 0x00d1 0000004b: JUMPI 0000004c: PUSH0 0000004d: CALLDATALOAD 0000004e: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 0000006f: AND 00000070: PUSH32 0x4f1ef28600000000000000000000000000000000000000000000000000000000 00000091: EQ 00000092: PUSH2 0x00c7 00000095: JUMPI 00000096: PUSH1 0x40 00000098: MLOAD 00000099: PUSH32 0xd2b576ec00000000000000000000000000000000000000000000000000000000 000000ba: DUP2 000000bb: MSTORE 000000bc: PUSH1 0x04 000000be: ADD 000000bf: PUSH1 0x40 000000c1: MLOAD 000000c2: DUP1 000000c3: SWAP2 000000c4: SUB 000000c5: SWAP1 000000c6: REVERT 000000c7: JUMPDEST 000000c8: PUSH2 0x00cf 000000cb: PUSH2 0x00d9 000000ce: JUMP 000000cf: JUMPDEST 000000d0: JUMP 000000d1: JUMPDEST 000000d2: PUSH2 0x00cf 000000d5: PUSH2 0x0107 000000d8: JUMP 000000d9: JUMPDEST 000000da: PUSH0 000000db: DUP1 000000dc: PUSH2 0x00e8 000000df: CALLDATASIZE 000000e0: PUSH1 0x04 000000e2: DUP2 000000e3: DUP5 000000e4: PUSH2 0x043e 000000e7: JUMP 000000e8: JUMPDEST 000000e9: DUP2 000000ea: ADD 000000eb: SWAP1 000000ec: PUSH2 0x00f5 000000ef: SWAP2 000000f0: SWAP1 000000f1: PUSH2 0x0492 000000f4: JUMP 000000f5: JUMPDEST 000000f6: SWAP2 000000f7: POP 000000f8: SWAP2 000000f9: POP 000000fa: PUSH2 0x0103 000000fd: DUP3 000000fe: DUP3 000000ff: PUSH2 0x0117 00000102: JUMP 00000103: JUMPDEST 00000104: POP 00000105: POP 00000106: JUMP 00000107: JUMPDEST 00000108: PUSH2 0x00cf 0000010b: PUSH2 0x0112 0000010e: PUSH2 0x017e 00000111: JUMP 00000112: JUMPDEST 00000113: PUSH2 0x01c2 00000116: JUMP 00000117: JUMPDEST 00000118: PUSH2 0x0120 0000011b: DUP3 0000011c: PUSH2 0x01e0 0000011f: JUMP 00000120: JUMPDEST 00000121: PUSH1 0x40 00000123: MLOAD 00000124: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000139: DUP4 0000013a: AND 0000013b: SWAP1 0000013c: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b 0000015d: SWAP1 0000015e: PUSH0 0000015f: SWAP1 00000160: LOG2 00000161: DUP1 00000162: MLOAD 00000163: ISZERO 00000164: PUSH2 0x0176 00000167: JUMPI 00000168: PUSH2 0x0171 0000016b: DUP3 0000016c: DUP3 0000016d: PUSH2 0x02b3 00000170: JUMP 00000171: JUMPDEST 00000172: POP 00000173: POP 00000174: POP 00000175: JUMP 00000176: JUMPDEST 00000177: PUSH2 0x0103 0000017a: PUSH2 0x0332 0000017d: JUMP 0000017e: JUMPDEST 0000017f: PUSH0 00000180: PUSH2 0x01bd 00000183: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 000001a4: SLOAD 000001a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001ba: AND 000001bb: SWAP1 000001bc: JUMP 000001bd: JUMPDEST 000001be: SWAP1 000001bf: POP 000001c0: SWAP1 000001c1: JUMP 000001c2: JUMPDEST 000001c3: CALLDATASIZE 000001c4: PUSH0 000001c5: DUP1 000001c6: CALLDATACOPY 000001c7: PUSH0 000001c8: DUP1 000001c9: CALLDATASIZE 000001ca: PUSH0 000001cb: DUP5 000001cc: GAS 000001cd: DELEGATECALL 000001ce: RETURNDATASIZE 000001cf: PUSH0 000001d0: DUP1 000001d1: RETURNDATACOPY 000001d2: DUP1 000001d3: DUP1 000001d4: ISZERO 000001d5: PUSH2 0x01dc 000001d8: JUMPI 000001d9: RETURNDATASIZE 000001da: PUSH0 000001db: RETURN 000001dc: JUMPDEST 000001dd: RETURNDATASIZE 000001de: PUSH0 000001df: REVERT 000001e0: JUMPDEST 000001e1: DUP1 000001e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001f7: AND 000001f8: EXTCODESIZE 000001f9: PUSH0 000001fa: SUB 000001fb: PUSH2 0x024d 000001fe: JUMPI 000001ff: PUSH1 0x40 00000201: MLOAD 00000202: PUSH32 0x4c9c8ce300000000000000000000000000000000000000000000000000000000 00000223: DUP2 00000224: MSTORE 00000225: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000023a: DUP3 0000023b: AND 0000023c: PUSH1 0x04 0000023e: DUP3 0000023f: ADD 00000240: MSTORE 00000241: PUSH1 0x24 00000243: ADD 00000244: JUMPDEST 00000245: PUSH1 0x40 00000247: MLOAD 00000248: DUP1 00000249: SWAP2 0000024a: SUB 0000024b: SWAP1 0000024c: REVERT 0000024d: JUMPDEST 0000024e: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0000026f: DUP1 00000270: SLOAD 00000271: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000292: AND 00000293: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002a8: SWAP3 000002a9: SWAP1 000002aa: SWAP3 000002ab: AND 000002ac: SWAP2 000002ad: SWAP1 000002ae: SWAP2 000002af: OR 000002b0: SWAP1 000002b1: SSTORE 000002b2: JUMP 000002b3: JUMPDEST 000002b4: PUSH1 0x60 000002b6: PUSH0 000002b7: DUP1 000002b8: DUP5 000002b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002ce: AND 000002cf: DUP5 000002d0: PUSH1 0x40 000002d2: MLOAD 000002d3: PUSH2 0x02dc 000002d6: SWAP2 000002d7: SWAP1 000002d8: PUSH2 0x0586 000002db: JUMP 000002dc: JUMPDEST 000002dd: PUSH0 000002de: PUSH1 0x40 000002e0: MLOAD 000002e1: DUP1 000002e2: DUP4 000002e3: SUB 000002e4: DUP2 000002e5: DUP6 000002e6: GAS 000002e7: DELEGATECALL 000002e8: SWAP2 000002e9: POP 000002ea: POP 000002eb: RETURNDATASIZE 000002ec: DUP1 000002ed: PUSH0 000002ee: DUP2 000002ef: EQ 000002f0: PUSH2 0x0314 000002f3: JUMPI 000002f4: PUSH1 0x40 000002f6: MLOAD 000002f7: SWAP2 000002f8: POP 000002f9: PUSH1 0x1f 000002fb: NOT 000002fc: PUSH1 0x3f 000002fe: RETURNDATASIZE 000002ff: ADD 00000300: AND 00000301: DUP3 00000302: ADD 00000303: PUSH1 0x40 00000305: MSTORE 00000306: RETURNDATASIZE 00000307: DUP3 00000308: MSTORE 00000309: RETURNDATASIZE 0000030a: PUSH0 0000030b: PUSH1 0x20 0000030d: DUP5 0000030e: ADD 0000030f: RETURNDATACOPY 00000310: PUSH2 0x0319 00000313: JUMP 00000314: JUMPDEST 00000315: PUSH1 0x60 00000317: SWAP2 00000318: POP 00000319: JUMPDEST 0000031a: POP 0000031b: SWAP2 0000031c: POP 0000031d: SWAP2 0000031e: POP 0000031f: PUSH2 0x0329 00000322: DUP6 00000323: DUP4 00000324: DUP4 00000325: PUSH2 0x036a 00000328: JUMP 00000329: JUMPDEST 0000032a: SWAP6 0000032b: SWAP5 0000032c: POP 0000032d: POP 0000032e: POP 0000032f: POP 00000330: POP 00000331: JUMP 00000332: JUMPDEST 00000333: CALLVALUE 00000334: ISZERO 00000335: PUSH2 0x00cf 00000338: JUMPI 00000339: PUSH1 0x40 0000033b: MLOAD 0000033c: PUSH32 0xb398979f00000000000000000000000000000000000000000000000000000000 0000035d: DUP2 0000035e: MSTORE 0000035f: PUSH1 0x04 00000361: ADD 00000362: PUSH1 0x40 00000364: MLOAD 00000365: DUP1 00000366: SWAP2 00000367: SUB 00000368: SWAP1 00000369: REVERT 0000036a: JUMPDEST 0000036b: PUSH1 0x60 0000036d: DUP3 0000036e: PUSH2 0x037f 00000371: JUMPI 00000372: PUSH2 0x037a 00000375: DUP3 00000376: PUSH2 0x03fc 00000379: JUMP 0000037a: JUMPDEST 0000037b: PUSH2 0x03f5 0000037e: JUMP 0000037f: JUMPDEST 00000380: DUP2 00000381: MLOAD 00000382: ISZERO 00000383: DUP1 00000384: ISZERO 00000385: PUSH2 0x03a3 00000388: JUMPI 00000389: POP 0000038a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000039f: DUP5 000003a0: AND 000003a1: EXTCODESIZE 000003a2: ISZERO 000003a3: JUMPDEST 000003a4: ISZERO 000003a5: PUSH2 0x03f2 000003a8: JUMPI 000003a9: PUSH1 0x40 000003ab: MLOAD 000003ac: PUSH32 0x9996b31500000000000000000000000000000000000000000000000000000000 000003cd: DUP2 000003ce: MSTORE 000003cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003e4: DUP6 000003e5: AND 000003e6: PUSH1 0x04 000003e8: DUP3 000003e9: ADD 000003ea: MSTORE 000003eb: PUSH1 0x24 000003ed: ADD 000003ee: PUSH2 0x0244 000003f1: JUMP 000003f2: JUMPDEST 000003f3: POP 000003f4: DUP1 000003f5: JUMPDEST 000003f6: SWAP4 000003f7: SWAP3 000003f8: POP 000003f9: POP 000003fa: POP 000003fb: JUMP 000003fc: JUMPDEST 000003fd: DUP1 000003fe: MLOAD 000003ff: ISZERO 00000400: PUSH2 0x040c 00000403: JUMPI 00000404: DUP1 00000405: MLOAD 00000406: DUP1 00000407: DUP3 00000408: PUSH1 0x20 0000040a: ADD 0000040b: REVERT 0000040c: JUMPDEST 0000040d: PUSH1 0x40 0000040f: MLOAD 00000410: PUSH32 0xd6bda27500000000000000000000000000000000000000000000000000000000 00000431: DUP2 00000432: MSTORE 00000433: PUSH1 0x04 00000435: ADD 00000436: PUSH1 0x40 00000438: MLOAD 00000439: DUP1 0000043a: SWAP2 0000043b: SUB 0000043c: SWAP1 0000043d: REVERT 0000043e: JUMPDEST 0000043f: PUSH0 00000440: DUP1 00000441: DUP6 00000442: DUP6 00000443: GT 00000444: ISZERO 00000445: PUSH2 0x044c 00000448: JUMPI 00000449: PUSH0 0000044a: DUP1 0000044b: REVERT 0000044c: JUMPDEST 0000044d: DUP4 0000044e: DUP7 0000044f: GT 00000450: ISZERO 00000451: PUSH2 0x0458 00000454: JUMPI 00000455: PUSH0 00000456: DUP1 00000457: REVERT 00000458: JUMPDEST 00000459: POP 0000045a: POP 0000045b: DUP3 0000045c: ADD 0000045d: SWAP4 0000045e: SWAP2 0000045f: SWAP1 00000460: SWAP3 00000461: SUB 00000462: SWAP2 00000463: POP 00000464: JUMP 00000465: JUMPDEST 00000466: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00000487: PUSH0 00000488: MSTORE 00000489: PUSH1 0x41 0000048b: PUSH1 0x04 0000048d: MSTORE 0000048e: PUSH1 0x24 00000490: PUSH0 00000491: REVERT 00000492: JUMPDEST 00000493: PUSH0 00000494: DUP1 00000495: PUSH1 0x40 00000497: DUP4 00000498: DUP6 00000499: SUB 0000049a: SLT 0000049b: ISZERO 0000049c: PUSH2 0x04a3 0000049f: JUMPI 000004a0: PUSH0 000004a1: DUP1 000004a2: REVERT 000004a3: JUMPDEST 000004a4: DUP3 000004a5: CALLDATALOAD 000004a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004bb: DUP2 000004bc: AND 000004bd: DUP2 000004be: EQ 000004bf: PUSH2 0x04c6 000004c2: JUMPI 000004c3: PUSH0 000004c4: DUP1 000004c5: REVERT 000004c6: JUMPDEST 000004c7: SWAP2 000004c8: POP 000004c9: PUSH1 0x20 000004cb: DUP4 000004cc: ADD 000004cd: CALLDATALOAD 000004ce: PUSH8 0xffffffffffffffff 000004d7: DUP1 000004d8: DUP3 000004d9: GT 000004da: ISZERO 000004db: PUSH2 0x04e2 000004de: JUMPI 000004df: PUSH0 000004e0: DUP1 000004e1: REVERT 000004e2: JUMPDEST 000004e3: DUP2 000004e4: DUP6 000004e5: ADD 000004e6: SWAP2 000004e7: POP 000004e8: DUP6 000004e9: PUSH1 0x1f 000004eb: DUP4 000004ec: ADD 000004ed: SLT 000004ee: PUSH2 0x04f5 000004f1: JUMPI 000004f2: PUSH0 000004f3: DUP1 000004f4: REVERT 000004f5: JUMPDEST 000004f6: DUP2 000004f7: CALLDATALOAD 000004f8: DUP2 000004f9: DUP2 000004fa: GT 000004fb: ISZERO 000004fc: PUSH2 0x0507 000004ff: JUMPI 00000500: PUSH2 0x0507 00000503: PUSH2 0x0465 00000506: JUMP 00000507: JUMPDEST 00000508: PUSH1 0x40 0000050a: MLOAD 0000050b: PUSH1 0x1f 0000050d: DUP3 0000050e: ADD 0000050f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00000530: SWAP1 00000531: DUP2 00000532: AND 00000533: PUSH1 0x3f 00000535: ADD 00000536: AND 00000537: DUP2 00000538: ADD 00000539: SWAP1 0000053a: DUP4 0000053b: DUP3 0000053c: GT 0000053d: DUP2 0000053e: DUP4 0000053f: LT 00000540: OR 00000541: ISZERO 00000542: PUSH2 0x054d 00000545: JUMPI 00000546: PUSH2 0x054d 00000549: PUSH2 0x0465 0000054c: JUMP 0000054d: JUMPDEST 0000054e: DUP2 0000054f: PUSH1 0x40 00000551: MSTORE 00000552: DUP3 00000553: DUP2 00000554: MSTORE 00000555: DUP9 00000556: PUSH1 0x20 00000558: DUP5 00000559: DUP8 0000055a: ADD 0000055b: ADD 0000055c: GT 0000055d: ISZERO 0000055e: PUSH2 0x0565 00000561: JUMPI 00000562: PUSH0 00000563: DUP1 00000564: REVERT 00000565: JUMPDEST 00000566: DUP3 00000567: PUSH1 0x20 00000569: DUP7 0000056a: ADD 0000056b: PUSH1 0x20 0000056d: DUP4 0000056e: ADD 0000056f: CALLDATACOPY 00000570: PUSH0 00000571: PUSH1 0x20 00000573: DUP5 00000574: DUP4 00000575: ADD 00000576: ADD 00000577: MSTORE 00000578: DUP1 00000579: SWAP6 0000057a: POP 0000057b: POP 0000057c: POP 0000057d: POP 0000057e: POP 0000057f: POP 00000580: SWAP3 00000581: POP 00000582: SWAP3 00000583: SWAP1 00000584: POP 00000585: JUMP 00000586: JUMPDEST 00000587: PUSH0 00000588: DUP3 00000589: MLOAD 0000058a: PUSH0 0000058b: JUMPDEST 0000058c: DUP2 0000058d: DUP2 0000058e: LT 0000058f: ISZERO 00000590: PUSH2 0x05a5 00000593: JUMPI 00000594: PUSH1 0x20 00000596: DUP2 00000597: DUP7 00000598: ADD 00000599: DUP2 0000059a: ADD 0000059b: MLOAD 0000059c: DUP6 0000059d: DUP4 0000059e: ADD 0000059f: MSTORE 000005a0: ADD 000005a1: PUSH2 0x058b 000005a4: JUMP 000005a5: JUMPDEST 000005a6: POP 000005a7: PUSH0 000005a8: SWAP3 000005a9: ADD 000005aa: SWAP2 000005ab: DUP3 000005ac: MSTORE 000005ad: POP 000005ae: SWAP2 000005af: SWAP1 000005b0: POP 000005b1: JUMP 000005b2: INVALID 000005b3: LOG2 000005b4: PUSH5 0x6970667358 000005ba: UNKNOWN(0x22) 000005bb: SLT 000005bc: KECCAK256 000005bd: MSTORE 000005be: SWAP11 000005bf: SWAP11 000005c0: DUP14 000005c1: DUP15 000005c2: UNKNOWN(0xAC) 000005c3: PUSH18 0x32d05588a2abbe7ad1eb517a8a80734e4263 000005d6: SSTORE 000005d7: SELFBALANCE 000005d8: RETURNDATACOPY 000005d9: DUP6 000005da: UNKNOWN(0x22) 000005db: UNKNOWN(0xC3) 000005dc: UNKNOWN(0xB4) 000005dd: PUSH5 0x736f6c6343 000005e3: STOP 000005e4: ADDMOD 000005e5: XOR 000005e6: STOP 000005e7: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0x9f7607277608c91715f45babdd3af7e052780f35f85603fc60f3d5adf4ff6b8a
call_targets:
0x4f8b564e25337f6a3e66f12553221f6c05a13085
target_varies:
no
classification:
constant_target
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x9f7607277608c91715f45babdd3af7e052780f35f85603fc60f3d5adf4ff6b8a",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x4f8b564e25337f6a3e66f12553221f6c05a13085"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x",
"selector": "fallback",
"calldata_variants": [
"0x"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 461,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 743,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 2,
"untrusted_delegatecall_count": 2
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 2
}
|