019b3836-21ba-7125-a495-b3a817f9d105
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 |
|---|---|---|---|---|
| 159 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 160 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 43543 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 43544 | capability.graph | complete | 1 / 3 | 1 week ago |
| 43545 | detector.run | complete | 1 / 3 | 1 week ago |
| 43546 | validation.fork | complete | 1 / 3 | 1 week ago |
| 87612 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode-only review found a concrete reentrancy surface in the payout loop of the embedded child contract, unchecked low-level ETH sends that can silently skip payouts, and a privileged destroy/migrate path in the outer contract. Selector inference is best-effort; findings below rely on control-flow and opcode evidence rather than verified source names.","findings":[{"severity":"high","category":"reentrancy","title":"Reentrant payout loop can recurse into finalization and sweep remaining funds","exploit_scenario":"The embedded child contract pays recorded recipients via a raw CALL. A malicious recipient contract can reenter during its payout and call the payable entrypoint again with a small amount. Because that entrypoint itself checks the threshold and can immediately re-enter the payout/selfdestruct path, the attacker can trigger recursive finalization before the outer loop finishes, potentially causing incomplete payouts and sweeping residual ETH to the configured sink address.","recommendation":"Do not perform push-based payouts and self-destruction in the same execution path. Set a finalized/reentrancy-lock flag before the first external call, or switch to a pull-payment model where recipients withdraw individually after finalization.","evidence":"In the child runtime, selector 0x119f8747 appends (caller,msg.value) into the slot-4 array and updates slot5; when slot5 exceeds slot2 it jumps into the payout routine at pc 0xb2c. The payout routine iterates storage-backed recipients and executes CALL at pc 0xc02 with no guard or state freeze before the external interaction. Selector 0x86d1a69f also routes into the same payout routine before a SELFDESTRUCT path. From bytecode alone I cannot prove exploit profitability in every deployment, but the reentrant control flow is present.","locations":["selector:0x119f8747","selector:0x86d1a69f","pc:0xb2c","pc:0xc02"]},{"severity":"medium","category":"other","title":"Unchecked low-level ETH sends can permanently skip payouts","exploit_scenario":"If any recorded recipient is a contract that reverts on receive or otherwise causes the low-level send to fail, the payout loop continues anyway. The unpaid amount then remains inside the contract until the surrounding finalization path selfdestructs the contract to a sink address, so the intended recipient can lose funds permanently.","recommendation":"Check the CALL success bit and revert or record unpaid balances for later withdrawal. Avoid sweeping remaining balance with SELFDESTRUCT after partial-send failures.","evidence":"At pc 0xc02 the payout loop performs a raw CALL using the stored recipient address and amount. The returned success value is immediately discarded (pc 0xc03 onward pops the result and continues the loop), and there is no failure branch or retry accounting. The same child contract has SELFDESTRUCT finalization paths after payout completion, so skipped transfers are not recoverably tracked. This is inferred from bytecode; returndata handling is unknown because no explicit checks are present.","locations":["pc:0xc02","selector:0x119f8747","selector:0x86d1a69f"]},{"severity":"medium","category":"upgradeability","title":"Privileged destroy/migrate path can replace the live contract by creating a child and selfdestructing","exploit_scenario":"A privileged controller stored in slot0 can invoke the outer contract's owner-checked lifecycle functions to either selfdestruct directly or deploy an embedded child contract and immediately selfdestruct into it. If that controller is compromised or behaves maliciously, users can lose availability and have funds forcibly migrated out of the current contract.","recommendation":"If this lifecycle control is intentional, protect it with a timelock and multisig and document it clearly. Otherwise remove direct SELFDESTRUCT-based migration/kill functionality.","evidence":"The outer runtime compares CALLER against the slot0 address at pc 0x4aa and 0x544. One privileged path reaches SELFDESTRUCT at pc 0x500. Another privileged path builds embedded init code, executes CREATE at pc 0x603, and then immediately SELFDESTRUCTs to the newly created address at pc 0x61d. This is not a standard proxy, but it is still a powerful privileged migration mechanism visible in bytecode.","locations":["selector:0xea8a1af0","selector:0x0fe65b36","pc:0x4aa","pc:0x544","pc:0x603","pc:0x61d"]}]}
"end_pc": 1855,
"hash": "0xd71df518ae9752010b5750f2771aeab95c30e057a1173e158150adf0f5b039c8",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 1845
},
{
"end_pc": 1866,
"hash": "0xb0d9057d3698085c81811ed1293fac66750365438e72a733240067f7fa8efdc1",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 1856
},
{
"end_pc": 1877,
"hash": "0x83663871afcdae065d89f35314457159e1eece9f9c20aa5c9aa0efdaf7c2316e",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 1867
},
{
"end_pc": 1888,
"hash": "0xce3c8545df6f5d3036a01f8ea3cfe8d69365d390c73289cce566fdac43f370c5",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 1878
},
{
"end_pc": 1892,
"hash": "0x2aced8730faa56d5f728bb291f210f40d5fd60814212d5012ed851fc33c690d0",
"opcodes": [
"PUSH2",
"JUMP"
],
"start_pc": 1889
},
{
"end_pc": 1894,
"hash": "0x31b9b5a3517d6f133042fc8e2bb76ed253b37b03d51ae0b7b018c2d06b3a659f",
"opcodes": [
"JUMPDEST",
"STOP"
],
"start_pc": 1893
},
{
"end_pc": 1905,
"hash": "0xd401b81691faffdbe344ee134fe9197f01989f7b39618a6e0d4c078e622e47b4",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 1895
},
{
"end_pc": 1907,
"hash": "0x3cce2dd69233ad009b18d7fe735fc638157b83015b4afb12202bf6b9ce5bf93d",
"opcodes": [
"JUMPDEST",
"STOP"
],
"start_pc": 1906
},
{
"end_pc": 1918,
"hash": "0x227be2bf2046632b2e6d889b55e8b28f57f8bfa26395b86c28d3d984ff833846",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 1908
},
{
"end_pc": 1940,
"hash": "0xaed43bf280075e6980d851481ebe311d2a48e3d7740c3ea7f04cd6ad0d4750e0",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
],
"start_pc": 1919
},
{
"end_pc": 1957,
"hash": "0xee1f7648373ac34564a871bd2473c0d579416b55548948e9b5e5c05544383073",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"OP_80",
"CALLDATALOAD",
"OP_90",
"PUSH1",
"ADD",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 1941
},
{
"end_pc": 2008,
"hash": "0x225620f81c2825a1b8e02eff573206b00551656a93042673e1a0d7b81d8e7cca",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"PUSH20",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_92",
"POP",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
],
"start_pc": 1958
},
{
"end_pc": 2019,
"hash": "0x29e9cadcc8e74899786b6b61ff807e140bcb34cad999c638fe287989c3067613",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 2009
},
{
"end_pc": 2063,
"hash": "0x04ee83bf695e74d7dbcee8ab7f8e0275dec694072eac0547504f5095ffa4a507",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_82",
"PUSH20",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
],
"start_pc": 2020
},
{
"end_pc": 2074,
"hash": "0x904e4905ae5a64028eb48bd1b9697a4924e536231f3d20cb0ff6e925dad10c99",
exec
/bin/bash -lc "sed -n '1561,1820p' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 2064
},
{
"end_pc": 2118,
"hash": "0xc42029750f6e341a55fa1654c0df9cc33114065cb751d3eadd430847fd6b7dbe",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_82",
"PUSH20",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
],
"start_pc": 2075
},
{
"end_pc": 2129,
"hash": "0x1a512d6f635cf7dcded58a822e49ca076ed0026e3ecc8f5c2819429f23090f27",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 2119
},
{
"end_pc": 2151,
"hash": "0x7ef1e002f146232d71234c6a0bcba8185203ad2467ba68779ccc554bd1af327f",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
],
"start_pc": 2130
},
{
"end_pc": 2162,
"hash": "0xab788bf03c396529722d50fe514db51181ed3bd332f59a51c9ffb07bdc3e8ee5",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 2152
},
{
"end_pc": 2164,
"hash": "0x02cc6da5f367e9d3fb4ec4881e82a1c5dc97cacb305ec6a9f485c794625c6444",
"opcodes": [
"JUMPDEST",
"STOP"
],
"start_pc": 2163
},
{
"end_pc": 2175,
"hash": "0xfb610c4521db491365822a6834c8302ebfda24cc9365ccea11b1c959c50b931d",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 2165
},
{
"end_pc": 2197,
"hash": "0xb74a29b6de0e0133eda92c6628462d058a5708590aa6ab428c59d2704c43e6b5",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
],
"start_pc": 2176
},
{
"end_pc": 2235,
"hash": "0xaa99f965378764cfa264f9a142e4fbc75367706d4f2f95933cb8240f580a77a2",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"OP_81",
"JUMP"
],
"start_pc": 2198
},
{
"end_pc": 2273,
"hash": "0x207066748da2c51404a67b9a1ed6335e671b7212869f4834243572f36e515d69",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"OP_81",
"JUMP"
],
"start_pc": 2236
},
{
"end_pc": 2282,
"hash": "0xa2103f297796cb66b0bb74e71241d52dfa094eaf539cc30227bd7542f7ec16a9",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"POP",
"SLOAD",
"OP_81",
"JUMP"
],
"start_pc": 2274
},
{
"end_pc": 2291,
"hash": "0xff008d5fb6470831b7613ad972b60c51cb5344609b33eae04574e0d46f3d0a3c",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"POP",
"SLOAD",
"OP_81",
"JUMP"
],
"start_pc": 2283
},
{
"end_pc": 2307,
"hash": "0xb3266afbc0fc2893be0394f881c5df7280b3eeabe03c9e8ea604446a9e4b080c",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"POP",
"OP_81",
"OP_81",
"SLOAD",
"OP_81",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2292
},
{
"end_pc": 2377,
"hash": "0x2c2d1523803fcde14171116ad79067309159d467b7cd27997938684129fb43c2",
"opcodes": [
"OP_90",
"PUSH1",
"MSTORE",
"PUSH1",
"PUSH1",
"SHA3",
"OP_90",
"PUSH1",
"MUL",
"ADD",
"PUSH1",
"OP_91",
"POP",
"OP_90",
"POP",
"OP_80",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"OP_90",
exec
/bin/bash -lc "sed -n '1821,2080p' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
"OP_80",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SLOAD",
"OP_90",
"POP",
"OP_82",
"JUMP"
],
"start_pc": 2308
},
{
"end_pc": 2386,
"hash": "0x247cb0be65f9dc95b5d3ab3fe8c9022b58ad4685e695b9b5f97594a957119765",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"POP",
"SLOAD",
"OP_81",
"JUMP"
],
"start_pc": 2378
},
{
"end_pc": 2401,
"hash": "0x30e5d8952e2eaf7ea5183b0cc25b425f0b345354b940a9ae977022759e5af8f9",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"POP",
"SLOAD",
"TIMESTAMP",
"LT",
"ISZERO",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2387
},
{
"end_pc": 2408,
"hash": "0x2b16f45c7d62a9d2591d66d8e919c292a49c4a4e4db74bff98298b7d7d802392",
"opcodes": [
"PUSH2",
"PUSH2",
"JUMP"
],
"start_pc": 2402
},
{
"end_pc": 2467,
"hash": "0x6e104db7a98c9d2f692b7495c8ca90dd979729dddfdb98edc47ef20713c1bbb5",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"PUSH20",
"AND",
"SELFDESTRUCT"
],
"start_pc": 2409
},
{
"end_pc": 2468,
"hash": "0x7012d2fd7e9f2747933f63d3f0e274b58f62c15191748712532236c0b4fd3c65",
"opcodes": [
"JUMPDEST"
],
"start_pc": 2468
},
{
"end_pc": 2470,
"hash": "0x91cff8a0baa84300c5057a292532e041e44f7188ec1d746d468ae8b423442394",
"opcodes": [
"JUMPDEST",
"JUMP"
],
"start_pc": 2469
},
{
"end_pc": 2480,
"hash": "0x3a21b88dd3460965577b17aef0bf0c71d366a1bfa69b9066ea11bde245f08955",
"opcodes": [
"JUMPDEST",
"PUSH1",
"CALLVALUE",
"GT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2471
},
{
"end_pc": 2538,
"hash": "0xbbece3b9b3e481de09bdb34cbb96412c234173886818352550e326a96b1202f5",
"opcodes": [
"PUSH1",
"PUSH1",
"MLOAD",
"OP_90",
"OP_81",
"ADD",
"PUSH1",
"MSTORE",
"OP_80",
"CALLER",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"CALLVALUE",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"POP",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"POP",
"OP_80",
"SLOAD",
"OP_80",
"OP_91",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"OP_90",
"OP_81",
"SLOAD",
"OP_81",
"OP_83",
"SSTORE",
"OP_81",
"OP_81",
"ISZERO",
"GT",
"PUSH2",
"JUMPI"
],
"start_pc": 2481
},
{
"end_pc": 2568,
"hash": "0x83db702dfaccd1ed9071eac0047ec4e3a7533d1f63d520dc566cee90ef1ddacb",
"opcodes": [
"PUSH1",
"MUL",
"OP_81",
"PUSH1",
"MUL",
"OP_83",
"PUSH1",
"MSTORE",
"PUSH1",
"PUSH1",
"SHA3",
"OP_91",
"OP_82",
"ADD",
"OP_91",
"ADD",
"PUSH2",
"OP_91",
"OP_90",
"PUSH2",
"JUMP"
],
"start_pc": 2539
},
{
"end_pc": 2577,
"hash": "0xb13da45cd8dc7e33c5b5472e6271f6e6bf7db888815bcd03d7f7cad6e7033d54",
"opcodes": [
"JUMPDEST",
"OP_80",
"OP_82",
"GT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2569
},
{
"end_pc": 2637,
"hash": "0x6adf278dbbd7f7df6a0ca916692c3b29a1b7351ede2e368d3e99fcc240438536",
"opcodes": [
"PUSH1",
"PUSH1",
"OP_82",
"ADD",
"PUSH1",
"PUSH2",
"EXP",
"OP_81",
"SLOAD",
"OP_90",
"PUSH20",
"MUL",
"NOT",
"AND",
"OP_90",
"SSTORE",
"PUSH1",
"OP_82",
"ADD",
"PUSH1",
"POP",
"PUSH1",
"OP_90",
"SSTORE",
"POP",
"PUSH1",
"ADD",
"PUSH2",
"JUMP"
],
"start_pc": 2578
},
{
"end_pc": 2641,
"hash": "0xe673ebee0344de64233d5107de5a2297f53caed71b174ffacf964610a2087555",
"opcodes": [
"JUMPDEST",
"POP",
"OP_90",
"JUMP"
],
"start_pc": 2638
},
{
"end_pc": 2642,
"hash": "0xc07538f346ec5449bc1134b09d18095ab249d770a1dd888afe86bac336308014",
"opcodes": [
"JUMPDEST"
],
"start_pc": 2642
},
{
"end_pc": 2655,
exec
/bin/bash -lc "sed -n '2081,2340p' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
"hash": "0x7e26b76c11eba33e0a1a3cb697416ff8b60daf39ce82d1d3bff2df880c8a7921",
"opcodes": [
"JUMPDEST",
"POP",
"POP",
"POP",
"OP_81",
"SLOAD",
"OP_81",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2643
},
{
"end_pc": 2859,
"hash": "0x0452089148b85ef993a695ea6101d8d19775d891352ca0a4ae6ae9e8985bc7ca",
"opcodes": [
"OP_90",
"PUSH1",
"MSTORE",
"PUSH1",
"PUSH1",
"SHA3",
"OP_90",
"PUSH1",
"MUL",
"ADD",
"PUSH1",
"POP",
"PUSH1",
"OP_82",
"ADD",
"MLOAD",
"OP_81",
"PUSH1",
"ADD",
"PUSH1",
"PUSH2",
"EXP",
"OP_81",
"SLOAD",
"OP_81",
"PUSH20",
"MUL",
"NOT",
"AND",
"OP_90",
"OP_83",
"MUL",
"OR",
"OP_90",
"SSTORE",
"POP",
"PUSH1",
"OP_82",
"ADD",
"MLOAD",
"OP_81",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SSTORE",
"OP_90",
"POP",
"POP",
"CALLVALUE",
"PUSH1",
"PUSH1",
"OP_82",
"OP_82",
"OP_82",
"POP",
"SLOAD",
"ADD",
"OP_92",
"POP",
"POP",
"OP_81",
"OP_90",
"SSTORE",
"POP",
"PUSH32",
"CALLER",
"CALLVALUE",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"PUSH20",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_92",
"POP",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"OP_A1",
"PUSH1",
"PUSH1",
"POP",
"SLOAD",
"PUSH1",
"PUSH1",
"POP",
"SLOAD",
"LT",
"ISZERO",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2656
},
{
"end_pc": 2866,
"hash": "0xbe395fb56c59f7a1195d537016643a83e1c261103d59f8e390e98c4328d4f209",
"opcodes": [
"PUSH2",
"PUSH2",
"JUMP"
],
"start_pc": 2860
},
{
"end_pc": 2925,
"hash": "0xe72acfc6d255869db9be045491c9185d4ada34ac41c0dba1489fca1179ba960c",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"PUSH20",
"AND",
"SELFDESTRUCT"
],
"start_pc": 2867
},
{
"end_pc": 2926,
"hash": "0x5f48b3ba23c742be6910d3d10eefdca4122d2f82d52e36a4b2003022daecc977",
"opcodes": [
"JUMPDEST"
],
"start_pc": 2926
},
{
"end_pc": 2927,
"hash": "0xe070d1add5b668b2b317f939d09db53ec9864f8e7bc26479e96abe09d5c5627c",
"opcodes": [
"JUMPDEST"
],
"start_pc": 2927
},
{
"end_pc": 2929,
"hash": "0x36c5ee6fcb6f7fe25075a038d08292f4ab099e5216cf2d675163a0847f87578b",
"opcodes": [
"JUMPDEST",
"JUMP"
],
"start_pc": 2928
},
{
"end_pc": 2938,
"hash": "0x11410ab04094a2bf6de413b1e6ca9dd55cdd844dbc840ff1f0c80fbcec2a6167",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_91",
"POP"
],
"start_pc": 2930
},
{
"end_pc": 2952,
"hash": "0x268f535e233842af240d6d479e030dcf90c70fafde1737c062c861cb0706e00c",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"POP",
"SLOAD",
"OP_82",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2939
},
{
"end_pc": 2967,
"hash": "0xa4283e6fab2fae82dfe194794006913f91ee46a4da3b0f5bfee8f54fc46e5ed0",
"opcodes": [
"PUSH1",
"PUSH1",
"POP",
"OP_82",
"OP_81",
"SLOAD",
"OP_81",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2953
},
{
"end_pc": 3080,
"hash": "0xb35c530eb8469bb59909e8a9f38166640a60d7aa95cad29247eda25f353b00cf",
"opcodes": [
"OP_90",
"PUSH1",
"MSTORE",
"PUSH1",
"PUSH1",
"SHA3",
"OP_90",
"PUSH1",
"MUL",
"ADD",
"PUSH1",
"POP",
"OP_90",
"POP",
"OP_80",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
exec
/bin/bash -lc "sed -n '2341,2600p' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"PUSH20",
"AND",
"PUSH1",
"OP_82",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SLOAD",
"PUSH1",
"MLOAD",
"OP_80",
"OP_90",
"POP",
"PUSH1",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"SUB",
"OP_81",
"OP_85",
"OP_88",
"OP_88",
"CALL",
"OP_93",
"POP",
"POP",
"POP",
"POP",
"POP"
],
"start_pc": 2968
},
{
"end_pc": 3093,
"hash": "0x5b61a0b0798143c5f76b3c4bdf5a5fc1cd3bd3887536e20b4f335bb42dbd6049",
"opcodes": [
"JUMPDEST",
"OP_81",
"OP_80",
"PUSH1",
"ADD",
"OP_92",
"POP",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 3081
},
{
"end_pc": 3094,
"hash": "0xd45c038604b5e77ae629c5be3c05a0f588b56e83cbd5222d7a5500cfd5f73928",
"opcodes": [
"JUMPDEST"
],
"start_pc": 3094
},
{
"end_pc": 3098,
"hash": "0xc4dd8e5fd839173eaa3fc689fa81a50c7f680f8e70bbab1f050f94030f3ef1c1",
"opcodes": [
"JUMPDEST",
"POP",
"POP",
"JUMP"
],
"start_pc": 3095
}
],
"callsites": [
{
"opcode": "CALL",
"pc": 3074,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"cfg_edges": [
{
"from": "bb:0",
"to": "bb:68",
"type": "control_flow"
},
{
"from": "bb:0",
"to": "bb:51",
"type": "control_flow_fallthrough"
},
{
"from": "bb:51",
"to": "bb:87",
"type": "control_flow"
},
{
"from": "bb:51",
"to": "bb:62",
"type": "control_flow_fallthrough"
},
{
"from": "bb:62",
"to": "bb:66",
"type": "control_flow"
},
{
"from": "bb:68",
"to": "bb:154",
"type": "control_flow"
},
{
"from": "bb:87",
"to": "bb:218",
"type": "control_flow"
},
{
"from": "bb:154",
"to": "bb:215",
"type": "control_flow_fallthrough"
},
{
"from": "bb:218",
"to": "bb:291",
"type": "control_flow"
},
{
"from": "bb:218",
"to": "bb:283",
"type": "control_flow_fallthrough"
},
{
"from": "bb:283",
"to": "bb:462",
"type": "control_flow"
},
{
"from": "bb:291",
"to": "bb:462",
"type": "control_flow"
},
{
"from": "bb:471",
"to": "bb:512",
"type": "control_flow_fallthrough"
},
{
"from": "bb:512",
"to": "bb:609",
"type": "control_flow_fallthrough"
},
{
"from": "bb:627",
"to": "bb:638",
"type": "control_flow_fallthrough"
},
{
"from": "bb:638",
"to": "bb:684",
"type": "control_flow_fallthrough"
},
{
"from": "bb:684",
"to": "bb:695",
"type": "control_flow_fallthrough"
},
{
"from": "bb:695",
"to": "bb:706",
"type": "control_flow_fallthrough"
},
{
"from": "bb:706",
"to": "bb:717",
"type": "control_flow_fallthrough"
},
{
"from": "bb:717",
"to": "bb:728",
"type": "control_flow_fallthrough"
},
{
"from": "bb:728",
"to": "bb:739",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1060",
"to": "bb:1075",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1133",
"to": "bb:1134",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1136",
"to": "bb:1223",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1281",
"to": "bb:1282",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1284",
"to": "bb:1377",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1573",
"to": "bb:1574",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1582",
"to": "bb:1629",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1629",
"to": "bb:1736",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1755",
"to": "bb:1766",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1766",
"to": "bb:1812",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1812",
"to": "bb:1823",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1823",
"to": "bb:1834",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1834",
"to": "bb:1845",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1845",
"to": "bb:1856",
exec
/bin/bash -lc "rg -n 'detector|selector|storage|slot|evidence|function|proxy|delegate|selfdestruct|callsite|public|abi|summary' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
2418: "callsites": [
2700: "dispatcher_type": "selector_jump_table",
2701: "function_entries": [
2704: "selector": "0x9e39db73"
2708: "selector": "0xa9059cbb"
2712: "selector": "0x0fe65b36"
2716: "selector": "0x66d003ac"
2720: "selector": "0x86d1a69f"
2724: "selector": "0x8da5cb5b"
2728: "selector": "0xb91d4001"
2732: "selector": "0xea8a1af0"
2736: "selector": "0x119f8747"
2740: "selector": "0x29dcb0cf"
2744: "selector": "0x3c24b7d7"
2748: "selector": "0x552079dc"
2752: "selector": "0x702c35fb"
2756: "selector": "0xc9e7e29b"
2759: "functions": [
2776: "selector": "0x9e39db73",
2779: "delegatecall": 0,
2780: "selfdestruct": 5,
2783: "storage": {
2785: "slots": [
2789: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2794: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2799: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2804: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2809: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2814: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2819: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2824: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2829: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2834: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2839: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2844: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2849: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2854: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
2859: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
2864: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2869: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
2874: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
2879: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2884: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
2889: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
2894: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
2899: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2904: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
2909: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2914: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
2919: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
2924: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2946: "selector": "0xa9059cbb",
2949: "delegatecall": 0,
2950: "selfdestruct": 5,
2953: "storage": {
2955: "slots": [
2959: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2964: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2969: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2974: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2979: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2984: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2989: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2994: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2999: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3004: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3009: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3014: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3019: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3024: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3029: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3034: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3039: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3044: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3049: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3054: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3059: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3064: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3069: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3074: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3079: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3084: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3089: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3094: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3116: "selector": "0x0fe65b36",
3119: "delegatecall": 0,
3120: "selfdestruct": 5,
3123: "storage": {
3125: "slots": [
3129: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3134: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3139: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3144: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3149: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3154: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3159: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3164: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3169: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3174: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3179: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3184: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3189: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3194: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3199: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3204: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3209: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3214: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3219: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3224: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3229: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3234: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3239: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3244: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3249: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3254: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3259: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3264: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3286: "selector": "0x66d003ac",
3289: "delegatecall": 0,
3290: "selfdestruct": 5,
3293: "storage": {
3295: "slots": [
3299: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3304: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3309: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3314: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3319: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3324: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3329: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3334: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3339: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3344: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3349: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3354: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3359: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3364: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3369: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3374: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3379: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3384: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3389: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3394: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3399: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3404: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3409: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3414: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3419: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3424: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3429: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3434: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3456: "selector": "0x86d1a69f",
3459: "delegatecall": 0,
3460: "selfdestruct": 5,
3463: "storage": {
3465: "slots": [
3469: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3474: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3479: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3484: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3489: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3494: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3499: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3504: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3509: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3514: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3519: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3524: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3529: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3534: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3539: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3544: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3549: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3554: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3559: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3564: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3569: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3574: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3579: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3584: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3589: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3594: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3599: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3604: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3626: "selector": "0x8da5cb5b",
3629: "delegatecall": 0,
3630: "selfdestruct": 5,
3633: "storage": {
3635: "slots": [
3639: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3644: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3649: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3654: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3659: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3664: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3669: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3674: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3679: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3684: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3689: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3694: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3699: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3704: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3709: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3714: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3719: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3724: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3729: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3734: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3739: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3744: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3749: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3754: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3759: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3764: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3769: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3774: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3796: "selector": "0xb91d4001",
3799: "delegatecall": 0,
3800: "selfdestruct": 5,
3803: "storage": {
3805: "slots": [
3809: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3814: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3819: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3824: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3829: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3834: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3839: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3844: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3849: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3854: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3859: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3864: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3869: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3874: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3879: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3884: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3889: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3894: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
3899: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3904: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3909: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3914: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3919: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3924: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
3929: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3934: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3939: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
3944: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3966: "selector": "0xea8a1af0",
3969: "delegatecall": 0,
3970: "selfdestruct": 5,
3973: "storage": {
3975: "slots": [
3979: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3984: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3989: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3994: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3999: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4004: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4009: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4014: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4019: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4024: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4029: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4034: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4039: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4044: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4049: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4054: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4059: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4064: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4069: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4074: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4079: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4084: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4089: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4094: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4099: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4104: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4109: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4114: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4136: "selector": "0x119f8747",
4139: "delegatecall": 0,
4140: "selfdestruct": 5,
4143: "storage": {
4145: "slots": [
4149: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4154: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4159: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4164: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4169: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4174: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4179: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4184: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4189: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4194: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4199: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4204: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4209: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4214: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4219: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4224: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4229: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4234: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4239: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4244: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4249: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4254: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4259: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4264: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4269: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4274: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4279: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4284: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4306: "selector": "0x29dcb0cf",
4309: "delegatecall": 0,
4310: "selfdestruct": 5,
4313: "storage": {
4315: "slots": [
4319: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4324: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4329: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4334: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4339: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4344: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4349: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4354: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4359: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4364: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4369: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4374: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4379: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4384: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4389: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4394: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4399: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4404: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4409: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4414: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4419: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4424: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4429: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4434: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4439: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4444: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4449: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4454: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4476: "selector": "0x3c24b7d7",
4479: "delegatecall": 0,
4480: "selfdestruct": 5,
4483: "storage": {
4485: "slots": [
4489: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4494: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4499: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4504: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4509: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4514: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4519: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4524: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4529: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4534: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4539: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4544: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4549: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4554: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4559: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4564: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4569: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4574: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4579: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4584: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4589: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4594: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4599: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4604: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4609: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4614: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4619: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4624: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4646: "selector": "0x552079dc",
4649: "delegatecall": 0,
4650: "selfdestruct": 5,
4653: "storage": {
4655: "slots": [
4659: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4664: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4669: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4674: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4679: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4684: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4689: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4694: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4699: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4704: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4709: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4714: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4719: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4724: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4729: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4734: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4739: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4744: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4749: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4754: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4759: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4764: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4769: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4774: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4779: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4784: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4789: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4794: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4816: "selector": "0x702c35fb",
4819: "delegatecall": 0,
4820: "selfdestruct": 5,
4823: "storage": {
4825: "slots": [
4829: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4834: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4839: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4844: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4849: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4854: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4859: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4864: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4869: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4874: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4879: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4884: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4889: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4894: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4899: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4904: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4909: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4914: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
4919: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4924: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4929: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4934: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4939: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
4944: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
4949: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4954: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4959: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
4964: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
4986: "selector": "0xc9e7e29b",
4989: "delegatecall": 0,
4990: "selfdestruct": 5,
4993: "storage": {
4995: "slots": [
4999: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5004: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5009: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5014: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5019: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5024: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5029: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5034: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5039: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5044: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5049: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5054: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5059: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5064: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
5069: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5074: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5079: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
5084: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
5089: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5094: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5099: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5104: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
5109: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5114: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
5119: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5124: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5129: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5134: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5141: "selectors": [
5161: "delegatecall": 0,
5162: "selfdestruct": 5,
5164: "upgrade_slot_write_suspected": false
5166: "storage": {
5169: "slots": [
5173: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5178: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5183: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5188: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5193: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5198: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5203: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5208: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5213: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5218: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5223: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5228: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5233: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5238: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
5243: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5248: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5253: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
5258: "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
5263: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5268: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5273: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5278: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
5283: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
5288: "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
5293: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5298: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5303: "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
5308: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5342: "is_proxy": false,
5352: "capability_graph": {
5694: "type": "capability"
6549: "type": "callsite"
6558: "selector": "0x9e39db73",
6559: "type": "function"
6564: "selector": "0xa9059cbb",
6565: "type": "function"
6570: "selector": "0x0fe65b36",
6571: "type": "function"
6576: "selector": "0x66d003ac",
6577: "type": "function"
6582: "selector": "0x86d1a69f",
6583: "type": "function"
6588: "selector": "0x8da5cb5b",
6589: "type": "function"
6594: "selector": "0xb91d4001",
6595: "type": "function"
6600: "selector": "0xea8a1af0",
6601: "type": "function"
6606: "selector": "0x119f8747",
6607: "type": "function"
6612: "selector": "0x29dcb0cf",
6613: "type": "function"
6618: "selector": "0x3c24b7d7",
6619: "type": "function"
6624: "selector": "0x552079dc",
6625: "type": "function"
6630: "selector": "0x702c35fb",
6631: "type": "function"
6636: "selector": "0xc9e7e29b",
6637: "type": "function"
6640: "version": "capability_graph_v1"
6644: "version": "capability_graph_v1"
6646: "detector_findings": [
6649: "evidence_json": {
6698: "evidence_json": {
6747: "evidence_json": {
6760: "selfdestruct_count": 5
6784: "evidence_json": {
6809: "heuristics_summary": {
6811: "delegatecall_count": 0,
6813: "selfdestruct_present",
6816: "selfdestruct_count": 5
exec
/bin/bash -lc "sed -n '2688,2768p' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
{
"from": "bb:2968",
"to": "bb:3081",
"type": "control_flow_fallthrough"
},
{
"from": "bb:3094",
"to": "bb:3095",
"type": "control_flow_fallthrough"
}
],
"cfg_hash": "0x8ac548e6f64b3be28b048f1eb7abe84502867c70918154a5d23c5265675e6353",
"dispatcher_type": "selector_jump_table",
"function_entries": [
{
"entry_pc": 2835717307,
"selector": "0x9e39db73"
},
{
"entry_pc": null,
"selector": "0xa9059cbb"
},
{
"entry_pc": 1724908460,
"selector": "0x0fe65b36"
},
{
"entry_pc": 2261886623,
"selector": "0x66d003ac"
},
{
"entry_pc": 2376452955,
"selector": "0x86d1a69f"
},
{
"entry_pc": 3105701889,
"selector": "0x8da5cb5b"
},
{
"entry_pc": 3934919408,
"selector": "0xb91d4001"
},
{
"entry_pc": null,
"selector": "0xea8a1af0"
},
{
"entry_pc": 702329039,
"selector": "0x119f8747"
},
{
"entry_pc": 1009039319,
"selector": "0x29dcb0cf"
},
{
"entry_pc": 1428191708,
"selector": "0x3c24b7d7"
},
{
"entry_pc": 1724908460,
"selector": "0x552079dc"
},
{
"entry_pc": 2261886623,
"selector": "0x702c35fb"
},
{
"entry_pc": null,
"selector": "0xc9e7e29b"
}
],
"functions": [
{
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
exec
/bin/bash -lc "sed -n '6640,6825p' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
"version": "capability_graph_v1"
},
"id": 1546,
"updated_at": "2026-04-04T19:45:28.000000Z",
"version": "capability_graph_v1"
},
"detector_findings": [
{
"confidence": 45,
"evidence_json": {
"call_count": 1,
"examples": [
{
"opcode": "CALL",
"pc": 3074,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 1
},
"normalized_json": {
"sink": "CALL"
},
"severity": "medium",
"title": "Untrusted CALL target/value reachable",
"validated": false,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x40c3506a8446bb5d806fe0030d451142c8044f77"
],
"classification": "constant_target",
"confirmed": false,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "sink_reached",
"target_varies": false,
"trace_id": "0x8ebb1bc5bcfc076f8384c587edd0245813eb71403aec99ac5beefad3b2f54401",
"trace_mode": "callTracer"
}
},
{
"confidence": 40,
"evidence_json": {
"eth_value_calls": 1,
"examples": [
{
"opcode": "CALL",
"pc": 3074,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"normalized_json": {
"sink": "CALL",
"value": "nonzero"
},
"severity": "medium",
"title": "ETH value transfer possible",
"validated": false,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x40c3506a8446bb5d806fe0030d451142c8044f77"
],
"classification": "constant_target",
"confirmed": false,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "sink_reached",
"target_varies": false,
"trace_id": "0x8ebb1bc5bcfc076f8384c587edd0245813eb71403aec99ac5beefad3b2f54401",
"trace_mode": "callTracer"
}
},
{
"confidence": 45,
"evidence_json": {
"guards_detected": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"selfdestruct_count": 5
},
"normalized_json": {
"sink": "SELFDESTRUCT"
},
"severity": "medium",
"title": "SELFDESTRUCT reachable",
"validated": false,
"validation_json": {
"attempts": 28,
"call_targets": null,
"classification": "no_sink",
"confirmed": false,
"errors": 0,
"matched_probe": null,
"sink": "SELFDESTRUCT",
"status": "unknown",
"target_varies": null,
"trace_id": "0x0be20107aaf59795ef361acbe60c8e28eb5a0ed52b0ed73d5f0c19705edbfb6e",
"trace_mode": "structLogs"
}
},
{
"confidence": 45,
"evidence_json": {
"create2_count": 0,
"create_count": 2
},
"normalized_json": {
"sink": "CREATE"
},
"severity": "medium",
"title": "CREATE/CREATE2 reachable",
"validated": true,
"validation_json": {
"attempts": 3,
"call_targets": null,
"classification": "sink_reached",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CREATE",
"status": "confirmed",
"target_varies": null,
"trace_id": "0xdfc14e73190fd2ae6e0e8eb1ef89b7ab40c1024754c376bdd1febd343a4191d7",
"trace_mode": "structLogs"
}
}
],
"heuristics_summary": {
"create2_count": 0,
"delegatecall_count": 0,
"flags": [
"selfdestruct_present",
"create_opcodes_present"
],
"selfdestruct_count": 5
}
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors, .analysis_artifact.artifact_json.functions[] | {selector, entry_pc, exits, auth, storage, summary, effects}' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
exited 5 in 0ms:
jq: error (at BYTECODE_BUNDLE.json:6817): Cannot index array with string "selector"
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
[
"0x9e39db73",
"0xa9059cbb",
"0x0fe65b36",
"0x66d003ac",
"0x86d1a69f",
"0x8da5cb5b",
"0xb91d4001",
"0xea8a1af0",
"0x119f8747",
"0x29dcb0cf",
"0x3c24b7d7",
"0x552079dc",
"0x702c35fb",
"0xc9e7e29b"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions[] | {selector, auth, calls, storage, halstead, names, tags, mutability, summary}' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
{
"selector": "0x9e39db73",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0xa9059cbb",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x0fe65b36",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x66d003ac",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x86d1a69f",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x8da5cb5b",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0xb91d4001",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0xea8a1af0",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x119f8747",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x29dcb0cf",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x3c24b7d7",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x552079dc",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0x702c35fb",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
{
"selector": "0xc9e7e29b",
"auth": {
"guards": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"calls": null,
"storage": {
"reads": 40,
"slots": [
{
"op": "SLOAD",
"pc": 299,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 981,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1019,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1057,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1066,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 1080,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1142,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1228,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1386,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2204,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2242,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2280,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2289,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2300,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2335,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2384,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2517,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SSTORE",
"pc": 2530,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2747,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2846,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 2852,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2873,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2945,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2960,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2994,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 15
},
"halstead": null,
"names": null,
"tags": null,
"mutability": null,
"summary": null
}
exec
/bin/bash -lc "rg -n 'bytecode|deployed|runtime|creation|hex' BYTECODE_BUNDLE.json | head -n 80" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
5343: "runtime_bytecode": {
exec
/bin/bash -lc "sed -n '5336,5366p' BYTECODE_BUNDLE.json" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
"compiler_json": {
"etherscan": {
"skipped": true
}
},
"implementation_address": null,
"is_proxy": false,
"runtime_bytecode": {
"full": "0x60606040526000357c0100000000000000000000000000000000000000000000000000000000900480639e39db7314610044578063a9059cbb1461005757610042565b005b61005560048035906020015061009a565b005b61006e6004803590602001803590602001506100da565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34600160005060008373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505401925050819055505b50565b60006000600033915083600160005060008473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054101561012357600092506101ce565b81856000600050544201604051610a44806101d7833901808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051809103906000f0905083600160005060008473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505403925050819055508092506101ce565b50509291505056006060604052604051606080610a448339016040526060805190602001805190602001805190602001505b82600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550806002600050819055505b5050506109a88061009c6000396000f30060606040523615610074576000357c0100000000000000000000000000000000000000000000000000000000900480630fe65b361461007657806366d003ac146100b357806386d1a69f146100ea5780638da5cb5b146100f7578063b91d40011461012e578063ea8a1af01461014f57610074565b005b610087600480359060200150610291565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100be600450610182565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100f56004506101b1565b005b61010260045061015c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101396004506101a8565b6040518082815260200191505060405180910390f35b61015a6004506101fd565b005b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026000505481565b600260005054421015156101fa57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561028e57600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b600060006000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103b25760009150600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16823073ffffffffffffffffffffffffffffffffffffffff1631866040516105ed806103bb833901808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001945050505050604051809103906000f090508073ffffffffffffffffffffffffffffffffffffffff16ff8092506103b3565b5b5050919050560060606040526040516080806105ed8339016040526060805190602001805190602001805190602001805190602001505b83600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555081600260005081905550806003600050819055505b50505050610540806100ad6000396000f3006060604052361561008a576000357c010000000000000000000000000000000000000000000000000000000090048063119f87471461008c57806329dcb0cf146100995780633c24b7d7146100ba578063552079dc146100fe57806366d003ac14610135578063702c35fb1461016c57806386d1a69f1461018d578063c9e7e29b1461019a5761008a565b005b6100976004506102cc565b005b6100a4600450610210565b6040518082815260200191505060405180910390f35b6100cb600480359060200150610219565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b6101096004506101bb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101406004506101e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017760045061026f565b6040518082815260200191505060405180910390f35b610198600450610278565b005b6101a5600450610207565b6040518082815260200191505060405180910390f35b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026000505481565b60036000505481565b60046000508181548110156100025790600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160005054905082565b60056000505481565b600360005054421015156102c95761028e610497565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b60003411156104945760406040519081016040528033815260200134815260200150600460005060046000508054809190600101909081548183558181151161037857600202816002028360005260206000209182019101610377919061032e565b808211156103735760006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600050600090555060010161032e565b5090565b5b505050815481101561000257906000526020600020906002020160005060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690830217905550602082015181600101600050559050503460056000828282505401925050819055507f8fc4de83eddb2e6be67e269b8bfdc735778c7339168d5f734290f474f5647e143334604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160026000505460056000505410151561049357610458610497565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b5b565b60006000600091505b60046000505482101561053b57600460005082815481101561000257906000526020600020906002020160005090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008260010160005054604051809050600060405180830381858888f19350505050505b81806001019250506104a0565b5b505056",
"head": null,
"length": 6200,
"tail": null,
"truncated": false
},
"verified_source": false
},
"capability_graph": {
"address": "0x40c3506a8446bb5d806fe0030d451142c8044f77",
"block_number": null,
"chain_id": 1,
"codehash": "0xb74e10a8eed7d90d98563900eb46a0a6637ddd97400ff26fc4a6a1a62ebc4d64",
"created_at": "2026-04-04T19:45:28.000000Z",
"graph_hash": "0xccad48b8f33423d512ecad8c149ac4ebfd0aad0a3f9cbc3edb6aea4bda2227df",
"graph_json": {
"edges": [
{
"from": "bb:0",
"to": "bb:68",
"type": "control_flow"
},
{
exec
/bin/bash -lc "node - <<'NODE'
const fs = require('fs');
const j = JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex = j.analysis_artifact.runtime_bytecode.full.slice(2);
const buf = Buffer.from(hex,'hex');
const names = {};
['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND',null,null,null,null,'LT','GT','SLT','SGT','EQ','ISZERO','AND','OR','XOR','NOT','BYTE','SHL','SHR','SAR',null,null,'SHA3'].forEach((n,i)=>{if(n) names[i]=n});
['ADDRESS','BALANCE','ORIGIN','CALLER','CALLVALUE','CALLDATALOAD','CALLDATASIZE','CALLDATACOPY','CODESIZE','CODECOPY','GASPRICE','EXTCODESIZE','EXTCODECOPY','RETURNDATASIZE','RETURNDATACOPY','EXTCODEHASH','BLOCKHASH','COINBASE','TIMESTAMP','NUMBER','PREVRANDAO','GASLIMIT','CHAINID','SELFBALANCE','BASEFEE'].forEach((n,i)=>names[0x30+i]=n);
['POP','MLOAD','MSTORE','MSTORE8','SLOAD','SSTORE','JUMP','JUMPI','PC','MSIZE','GAS','JUMPDEST'].forEach((n,i)=>names[0x50+i]=n);
for(let i=1;i<=32;i++) names[0x5f+i] = 'PUSH'+i;
for(let i=1;i<=16;i++) names[0x7f+i] = 'DUP'+i;
for(let i=1;i<=16;i++) names[0x8f+i] = 'SWAP'+i;
for(let i=0;i<5;i++) names[0xa0+i]='LOG'+i;
['CREATE','CALL','CALLCODE','RETURN','DELEGATECALL','CREATE2',null,'STATICCALL',null,'REVERT','INVALID','SELFDESTRUCT'].forEach((n,i)=>{if(n) names[0xf0+i]=n});
function disasm(start,end){
let pc=0; while(pc<buf.length){ const here=pc; const op=buf[pc++]; const name=names[op]||('OP_'+op.toString(16)); let arg=''; if(op>=0x60&&op<=0x7f){ const n=op-0x5f; arg='0x'+buf.slice(pc,pc+n).toString('hex'); pc+=n; } if(here>=start&&here<=end) console.log(here.toString().padStart(4), name.padEnd(12), arg); }
}
disasm(740,900);
console.log('---');
disasm(1460,1570);
console.log('--- inner');
disasm(620,900);
console.log('--- payout');
disasm(1160,1360);
NODE" in /tmp/codex-3vdnw0bq
exited 1 in 0ms:
[stdin]:3
const hex = j.analysis_artifact.runtime_bytecode.full.slice(2);
^
TypeError: Cannot read properties of undefined (reading 'full')
at [stdin]:3:50
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [stdin]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
at node:internal/main/eval_stdin:32:5
at Socket.<anonymous> (node:internal/process/execution:237:5)
at Socket.emit (node:events:525:35)
at endReadableNT (node:internal/streams/readable:1696:12)
Node.js v23.3.0
exec
/bin/bash -lc "node - <<'NODE'
const fs = require('fs');
const j = JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex = j.analysis_artifact.runtime_bytecode.full.slice(2);
const buf = Buffer.from(hex,'hex');
const names = {};
['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND',null,null,null,null,'LT','GT','SLT','SGT','EQ','ISZERO','AND','OR','XOR','NOT','BYTE','SHL','SHR','SAR',null,null,'SHA3'].forEach((n,i)=>{if(n) names[i]=n});
['ADDRESS','BALANCE','ORIGIN','CALLER','CALLVALUE','CALLDATALOAD','CALLDATASIZE','CALLDATACOPY','CODESIZE','CODECOPY','GASPRICE','EXTCODESIZE','EXTCODECOPY','RETURNDATASIZE','RETURNDATACOPY','EXTCODEHASH','BLOCKHASH','COINBASE','TIMESTAMP','NUMBER','PREVRANDAO','GASLIMIT','CHAINID','SELFBALANCE','BASEFEE'].forEach((n,i)=>names[0x30+i]=n);
['POP','MLOAD','MSTORE','MSTORE8','SLOAD','SSTORE','JUMP','JUMPI','PC','MSIZE','GAS','JUMPDEST'].forEach((n,i)=>names[0x50+i]=n);
for(let i=1;i<=32;i++) names[0x5f+i] = 'PUSH'+i;
for(let i=1;i<=16;i++) names[0x7f+i] = 'DUP'+i;
for(let i=1;i<=16;i++) names[0x8f+i] = 'SWAP'+i;
for(let i=0;i<5;i++) names[0xa0+i]='LOG'+i;
['CREATE','CALL','CALLCODE','RETURN','DELEGATECALL','CREATE2',null,'STATICCALL',null,'REVERT','INVALID','SELFDESTRUCT'].forEach((n,i)=>{if(n) names[0xf0+i]=n});
function disasm(start,end){
let pc=0; while(pc<buf.length){ const here=pc; const op=buf[pc++]; const name=names[op]||('OP_'+op.toString(16)); let arg=''; if(op>=0x60&&op<=0x7f){ const n=op-0x5f; arg='0x'+buf.slice(pc,pc+n).toString('hex'); pc+=n; } if(here>=start&&here<=end) console.log(here.toString().padStart(4), name.padEnd(12), arg); }
}
console.log('outer entry region');
disasm(0,420);
console.log('--- outer create/kill');
disasm(420,610);
console.log('--- inner runtime start');
disasm(1700,2100);
console.log('--- inner contribute');
disasm(2460,2875);
console.log('--- inner payout');
disasm(2920,3098);
NODE" in /tmp/codex-3vdnw0bq
exited 1 in 0ms:
[stdin]:3
const hex = j.analysis_artifact.runtime_bytecode.full.slice(2);
^
TypeError: Cannot read properties of undefined (reading 'full')
at [stdin]:3:50
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [stdin]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
at node:internal/main/eval_stdin:32:5
at Socket.<anonymous> (node:internal/process/execution:237:5)
at Socket.emit (node:events:525:35)
at endReadableNT (node:internal/streams/readable:1696:12)
Node.js v23.3.0
exec
/bin/bash -lc "node - <<'NODE'
const fs = require('fs');
const j = JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
console.log(Object.keys(j));
console.log(Object.keys(j.analysis_artifact));
NODE" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
[
'analysis_artifact',
'analysis_run',
'artifact',
'capability_graph',
'detector_findings',
'heuristics_summary'
]
[
'address',
'artifact_hash',
'artifact_json',
'block_number',
'chain_id',
'codehash',
'created_at',
'id',
'updated_at',
'version'
]
exec
/bin/bash -lc "node - <<'NODE'
const fs = require('fs');
const j = JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
console.log(Object.keys(j.artifact));
NODE" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
[
'codehash',
'compiler_json',
'implementation_address',
'is_proxy',
'runtime_bytecode',
'verified_source'
]
exec
/bin/bash -lc "node - <<'NODE'
const fs = require('fs');
const j = JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex = j.artifact.runtime_bytecode.full.slice(2);
const buf = Buffer.from(hex,'hex');
const names = {};
['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND',null,null,null,null,'LT','GT','SLT','SGT','EQ','ISZERO','AND','OR','XOR','NOT','BYTE','SHL','SHR','SAR',null,null,'SHA3'].forEach((n,i)=>{if(n) names[i]=n});
['ADDRESS','BALANCE','ORIGIN','CALLER','CALLVALUE','CALLDATALOAD','CALLDATASIZE','CALLDATACOPY','CODESIZE','CODECOPY','GASPRICE','EXTCODESIZE','EXTCODECOPY','RETURNDATASIZE','RETURNDATACOPY','EXTCODEHASH','BLOCKHASH','COINBASE','TIMESTAMP','NUMBER','PREVRANDAO','GASLIMIT','CHAINID','SELFBALANCE','BASEFEE'].forEach((n,i)=>names[0x30+i]=n);
['POP','MLOAD','MSTORE','MSTORE8','SLOAD','SSTORE','JUMP','JUMPI','PC','MSIZE','GAS','JUMPDEST'].forEach((n,i)=>names[0x50+i]=n);
for(let i=1;i<=32;i++) names[0x5f+i] = 'PUSH'+i;
for(let i=1;i<=16;i++) names[0x7f+i] = 'DUP'+i;
for(let i=1;i<=16;i++) names[0x8f+i] = 'SWAP'+i;
for(let i=0;i<5;i++) names[0xa0+i]='LOG'+i;
['CREATE','CALL','CALLCODE','RETURN','DELEGATECALL','CREATE2',null,'STATICCALL',null,'REVERT','INVALID','SELFDESTRUCT'].forEach((n,i)=>{if(n) names[0xf0+i]=n});
function disasm(start,end){
let pc=0; while(pc<buf.length){ const here=pc; const op=buf[pc++]; const name=names[op]||('OP_'+op.toString(16)); let arg=''; if(op>=0x60&&op<=0x7f){ const n=op-0x5f; arg='0x'+buf.slice(pc,pc+n).toString('hex'); pc+=n; } if(here>=start&&here<=end) console.log(here.toString().padStart(4), name.padEnd(12), arg); }
}
console.log('outer entry');
disasm(0,430);
console.log('--- outer create/kill');
disasm(430,620);
console.log('--- inner runtime start');
disasm(1700,2100);
console.log('--- inner contribute');
disasm(2460,2875);
console.log('--- inner payout');
disasm(2920,3098);
NODE" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
outer entry
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 PUSH1 0x00
7 CALLDATALOAD
8 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
38 SWAP1
39 DIV
40 DUP1
41 PUSH4 0x9e39db73
46 EQ
47 PUSH2 0x0044
50 JUMPI
51 DUP1
52 PUSH4 0xa9059cbb
57 EQ
58 PUSH2 0x0057
61 JUMPI
62 PUSH2 0x0042
65 JUMP
66 JUMPDEST
67 STOP
68 JUMPDEST
69 PUSH2 0x0055
72 PUSH1 0x04
74 DUP1
75 CALLDATALOAD
76 SWAP1
77 PUSH1 0x20
79 ADD
80 POP
81 PUSH2 0x009a
84 JUMP
85 JUMPDEST
86 STOP
87 JUMPDEST
88 PUSH2 0x006e
91 PUSH1 0x04
93 DUP1
94 CALLDATALOAD
95 SWAP1
96 PUSH1 0x20
98 ADD
99 DUP1
100 CALLDATALOAD
101 SWAP1
102 PUSH1 0x20
104 ADD
105 POP
106 PUSH2 0x00da
109 JUMP
110 JUMPDEST
111 PUSH1 0x40
113 MLOAD
114 DUP1
115 DUP3
116 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
137 AND
138 DUP2
139 MSTORE
140 PUSH1 0x20
142 ADD
143 SWAP2
144 POP
145 POP
146 PUSH1 0x40
148 MLOAD
149 DUP1
150 SWAP2
151 SUB
152 SWAP1
153 RETURN
154 JUMPDEST
155 CALLVALUE
156 PUSH1 0x01
158 PUSH1 0x00
160 POP
161 PUSH1 0x00
163 DUP4
164 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
185 AND
186 DUP2
187 MSTORE
188 PUSH1 0x20
190 ADD
191 SWAP1
192 DUP2
193 MSTORE
194 PUSH1 0x20
196 ADD
197 PUSH1 0x00
199 SHA3
200 PUSH1 0x00
202 DUP3
203 DUP3
204 DUP3
205 POP
206 SLOAD
207 ADD
208 SWAP3
209 POP
210 POP
211 DUP2
212 SWAP1
213 SSTORE
214 POP
215 JUMPDEST
216 POP
217 JUMP
218 JUMPDEST
219 PUSH1 0x00
221 PUSH1 0x00
223 PUSH1 0x00
225 CALLER
226 SWAP2
227 POP
228 DUP4
229 PUSH1 0x01
231 PUSH1 0x00
233 POP
234 PUSH1 0x00
236 DUP5
237 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
258 AND
259 DUP2
260 MSTORE
261 PUSH1 0x20
263 ADD
264 SWAP1
265 DUP2
266 MSTORE
267 PUSH1 0x20
269 ADD
270 PUSH1 0x00
272 SHA3
273 PUSH1 0x00
275 POP
276 SLOAD
277 LT
278 ISZERO
279 PUSH2 0x0123
282 JUMPI
283 PUSH1 0x00
285 SWAP3
286 POP
287 PUSH2 0x01ce
290 JUMP
291 JUMPDEST
292 DUP2
293 DUP6
294 PUSH1 0x00
296 PUSH1 0x00
298 POP
299 SLOAD
300 TIMESTAMP
301 ADD
302 PUSH1 0x40
304 MLOAD
305 PUSH2 0x0a44
308 DUP1
309 PUSH2 0x01d7
312 DUP4
313 CODECOPY
314 ADD
315 DUP1
316 DUP5
317 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
338 AND
339 DUP2
340 MSTORE
341 PUSH1 0x20
343 ADD
344 DUP4
345 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
366 AND
367 DUP2
368 MSTORE
369 PUSH1 0x20
371 ADD
372 DUP3
373 DUP2
374 MSTORE
375 PUSH1 0x20
377 ADD
378 SWAP4
379 POP
380 POP
381 POP
382 POP
383 PUSH1 0x40
385 MLOAD
386 DUP1
387 SWAP2
388 SUB
389 SWAP1
390 PUSH1 0x00
392 CREATE
393 SWAP1
394 POP
395 DUP4
396 PUSH1 0x01
398 PUSH1 0x00
400 POP
401 PUSH1 0x00
403 DUP5
404 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
425 AND
426 DUP2
427 MSTORE
428 PUSH1 0x20
430 ADD
--- outer create/kill
430 ADD
431 SWAP1
432 DUP2
433 MSTORE
434 PUSH1 0x20
436 ADD
437 PUSH1 0x00
439 SHA3
440 PUSH1 0x00
442 DUP3
443 DUP3
444 DUP3
445 POP
446 SLOAD
447 SUB
448 SWAP3
449 POP
450 POP
451 DUP2
452 SWAP1
453 SSTORE
454 POP
455 DUP1
456 SWAP3
457 POP
458 PUSH2 0x01ce
461 JUMP
462 JUMPDEST
463 POP
464 POP
465 SWAP3
466 SWAP2
467 POP
468 POP
469 JUMP
470 STOP
471 PUSH1 0x60
473 PUSH1 0x40
475 MSTORE
476 PUSH1 0x40
478 MLOAD
479 PUSH1 0x60
481 DUP1
482 PUSH2 0x0a44
485 DUP4
486 CODECOPY
487 ADD
488 PUSH1 0x40
490 MSTORE
491 PUSH1 0x60
493 DUP1
494 MLOAD
495 SWAP1
496 PUSH1 0x20
498 ADD
499 DUP1
500 MLOAD
501 SWAP1
502 PUSH1 0x20
504 ADD
505 DUP1
506 MLOAD
507 SWAP1
508 PUSH1 0x20
510 ADD
511 POP
512 JUMPDEST
513 DUP3
514 PUSH1 0x00
516 PUSH1 0x00
518 PUSH2 0x0100
521 EXP
522 DUP2
523 SLOAD
524 DUP2
525 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
546 MUL
547 NOT
548 AND
549 SWAP1
550 DUP4
551 MUL
552 OR
553 SWAP1
554 SSTORE
555 POP
556 DUP2
557 PUSH1 0x01
559 PUSH1 0x00
561 PUSH2 0x0100
564 EXP
565 DUP2
566 SLOAD
567 DUP2
568 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
589 MUL
590 NOT
591 AND
592 SWAP1
593 DUP4
594 MUL
595 OR
596 SWAP1
597 SSTORE
598 POP
599 DUP1
600 PUSH1 0x02
602 PUSH1 0x00
604 POP
605 DUP2
606 SWAP1
607 SSTORE
608 POP
609 JUMPDEST
610 POP
611 POP
612 POP
613 PUSH2 0x09a8
616 DUP1
617 PUSH2 0x009c
620 PUSH1 0x00
--- inner runtime start
1706 MUL
1707 NOT
1708 AND
1709 SWAP1
1710 DUP4
1711 MUL
1712 OR
1713 SWAP1
1714 SSTORE
1715 POP
1716 DUP2
1717 PUSH1 0x02
1719 PUSH1 0x00
1721 POP
1722 DUP2
1723 SWAP1
1724 SSTORE
1725 POP
1726 DUP1
1727 PUSH1 0x03
1729 PUSH1 0x00
1731 POP
1732 DUP2
1733 SWAP1
1734 SSTORE
1735 POP
1736 JUMPDEST
1737 POP
1738 POP
1739 POP
1740 POP
1741 PUSH2 0x0540
1744 DUP1
1745 PUSH2 0x00ad
1748 PUSH1 0x00
1750 CODECOPY
1751 PUSH1 0x00
1753 RETURN
1754 STOP
1755 PUSH1 0x60
1757 PUSH1 0x40
1759 MSTORE
1760 CALLDATASIZE
1761 ISZERO
1762 PUSH2 0x008a
1765 JUMPI
1766 PUSH1 0x00
1768 CALLDATALOAD
1769 PUSH29 0x0100000000000000000000000000000000000000000000000000000000
1799 SWAP1
1800 DIV
1801 DUP1
1802 PUSH4 0x119f8747
1807 EQ
1808 PUSH2 0x008c
1811 JUMPI
1812 DUP1
1813 PUSH4 0x29dcb0cf
1818 EQ
1819 PUSH2 0x0099
1822 JUMPI
1823 DUP1
1824 PUSH4 0x3c24b7d7
1829 EQ
1830 PUSH2 0x00ba
1833 JUMPI
1834 DUP1
1835 PUSH4 0x552079dc
1840 EQ
1841 PUSH2 0x00fe
1844 JUMPI
1845 DUP1
1846 PUSH4 0x66d003ac
1851 EQ
1852 PUSH2 0x0135
1855 JUMPI
1856 DUP1
1857 PUSH4 0x702c35fb
1862 EQ
1863 PUSH2 0x016c
1866 JUMPI
1867 DUP1
1868 PUSH4 0x86d1a69f
1873 EQ
1874 PUSH2 0x018d
1877 JUMPI
1878 DUP1
1879 PUSH4 0xc9e7e29b
1884 EQ
1885 PUSH2 0x019a
1888 JUMPI
1889 PUSH2 0x008a
1892 JUMP
1893 JUMPDEST
1894 STOP
1895 JUMPDEST
1896 PUSH2 0x0097
1899 PUSH1 0x04
1901 POP
1902 PUSH2 0x02cc
1905 JUMP
1906 JUMPDEST
1907 STOP
1908 JUMPDEST
1909 PUSH2 0x00a4
1912 PUSH1 0x04
1914 POP
1915 PUSH2 0x0210
1918 JUMP
1919 JUMPDEST
1920 PUSH1 0x40
1922 MLOAD
1923 DUP1
1924 DUP3
1925 DUP2
1926 MSTORE
1927 PUSH1 0x20
1929 ADD
1930 SWAP2
1931 POP
1932 POP
1933 PUSH1 0x40
1935 MLOAD
1936 DUP1
1937 SWAP2
1938 SUB
1939 SWAP1
1940 RETURN
1941 JUMPDEST
1942 PUSH2 0x00cb
1945 PUSH1 0x04
1947 DUP1
1948 CALLDATALOAD
1949 SWAP1
1950 PUSH1 0x20
1952 ADD
1953 POP
1954 PUSH2 0x0219
1957 JUMP
1958 JUMPDEST
1959 PUSH1 0x40
1961 MLOAD
1962 DUP1
1963 DUP4
1964 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1985 AND
1986 DUP2
1987 MSTORE
1988 PUSH1 0x20
1990 ADD
1991 DUP3
1992 DUP2
1993 MSTORE
1994 PUSH1 0x20
1996 ADD
1997 SWAP3
1998 POP
1999 POP
2000 POP
2001 PUSH1 0x40
2003 MLOAD
2004 DUP1
2005 SWAP2
2006 SUB
2007 SWAP1
2008 RETURN
2009 JUMPDEST
2010 PUSH2 0x0109
2013 PUSH1 0x04
2015 POP
2016 PUSH2 0x01bb
2019 JUMP
2020 JUMPDEST
2021 PUSH1 0x40
2023 MLOAD
2024 DUP1
2025 DUP3
2026 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2047 AND
2048 DUP2
2049 MSTORE
2050 PUSH1 0x20
2052 ADD
2053 SWAP2
2054 POP
2055 POP
2056 PUSH1 0x40
2058 MLOAD
2059 DUP1
2060 SWAP2
2061 SUB
2062 SWAP1
2063 RETURN
2064 JUMPDEST
2065 PUSH2 0x0140
2068 PUSH1 0x04
2070 POP
2071 PUSH2 0x01e1
2074 JUMP
2075 JUMPDEST
2076 PUSH1 0x40
2078 MLOAD
2079 DUP1
2080 DUP3
2081 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
--- inner contribute
2466 AND
2467 OP_ff
2468 JUMPDEST
2469 JUMPDEST
2470 JUMP
2471 JUMPDEST
2472 PUSH1 0x00
2474 CALLVALUE
2475 GT
2476 ISZERO
2477 PUSH2 0x0494
2480 JUMPI
2481 PUSH1 0x40
2483 PUSH1 0x40
2485 MLOAD
2486 SWAP1
2487 DUP2
2488 ADD
2489 PUSH1 0x40
2491 MSTORE
2492 DUP1
2493 CALLER
2494 DUP2
2495 MSTORE
2496 PUSH1 0x20
2498 ADD
2499 CALLVALUE
2500 DUP2
2501 MSTORE
2502 PUSH1 0x20
2504 ADD
2505 POP
2506 PUSH1 0x04
2508 PUSH1 0x00
2510 POP
2511 PUSH1 0x04
2513 PUSH1 0x00
2515 POP
2516 DUP1
2517 SLOAD
2518 DUP1
2519 SWAP2
2520 SWAP1
2521 PUSH1 0x01
2523 ADD
2524 SWAP1
2525 SWAP1
2526 DUP2
2527 SLOAD
2528 DUP2
2529 DUP4
2530 SSTORE
2531 DUP2
2532 DUP2
2533 ISZERO
2534 GT
2535 PUSH2 0x0378
2538 JUMPI
2539 PUSH1 0x02
2541 MUL
2542 DUP2
2543 PUSH1 0x02
2545 MUL
2546 DUP4
2547 PUSH1 0x00
2549 MSTORE
2550 PUSH1 0x20
2552 PUSH1 0x00
2554 SHA3
2555 SWAP2
2556 DUP3
2557 ADD
2558 SWAP2
2559 ADD
2560 PUSH2 0x0377
2563 SWAP2
2564 SWAP1
2565 PUSH2 0x032e
2568 JUMP
2569 JUMPDEST
2570 DUP1
2571 DUP3
2572 GT
2573 ISZERO
2574 PUSH2 0x0373
2577 JUMPI
2578 PUSH1 0x00
2580 PUSH1 0x00
2582 DUP3
2583 ADD
2584 PUSH1 0x00
2586 PUSH2 0x0100
2589 EXP
2590 DUP2
2591 SLOAD
2592 SWAP1
2593 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2614 MUL
2615 NOT
2616 AND
2617 SWAP1
2618 SSTORE
2619 PUSH1 0x01
2621 DUP3
2622 ADD
2623 PUSH1 0x00
2625 POP
2626 PUSH1 0x00
2628 SWAP1
2629 SSTORE
2630 POP
2631 PUSH1 0x01
2633 ADD
2634 PUSH2 0x032e
2637 JUMP
2638 JUMPDEST
2639 POP
2640 SWAP1
2641 JUMP
2642 JUMPDEST
2643 JUMPDEST
2644 POP
2645 POP
2646 POP
2647 DUP2
2648 SLOAD
2649 DUP2
2650 LT
2651 ISZERO
2652 PUSH2 0x0002
2655 JUMPI
2656 SWAP1
2657 PUSH1 0x00
2659 MSTORE
2660 PUSH1 0x20
2662 PUSH1 0x00
2664 SHA3
2665 SWAP1
2666 PUSH1 0x02
2668 MUL
2669 ADD
2670 PUSH1 0x00
2672 POP
2673 PUSH1 0x00
2675 DUP3
2676 ADD
2677 MLOAD
2678 DUP2
2679 PUSH1 0x00
2681 ADD
2682 PUSH1 0x00
2684 PUSH2 0x0100
2687 EXP
2688 DUP2
2689 SLOAD
2690 DUP2
2691 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2712 MUL
2713 NOT
2714 AND
2715 SWAP1
2716 DUP4
2717 MUL
2718 OR
2719 SWAP1
2720 SSTORE
2721 POP
2722 PUSH1 0x20
2724 DUP3
2725 ADD
2726 MLOAD
2727 DUP2
2728 PUSH1 0x01
2730 ADD
2731 PUSH1 0x00
2733 POP
2734 SSTORE
2735 SWAP1
2736 POP
2737 POP
2738 CALLVALUE
2739 PUSH1 0x05
2741 PUSH1 0x00
2743 DUP3
2744 DUP3
2745 DUP3
2746 POP
2747 SLOAD
2748 ADD
2749 SWAP3
2750 POP
2751 POP
2752 DUP2
2753 SWAP1
2754 SSTORE
2755 POP
2756 PUSH32 0x8fc4de83eddb2e6be67e269b8bfdc735778c7339168d5f734290f474f5647e14
2789 CALLER
2790 CALLVALUE
2791 PUSH1 0x40
2793 MLOAD
2794 DUP1
2795 DUP4
2796 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2817 AND
2818 DUP2
2819 MSTORE
2820 PUSH1 0x20
2822 ADD
2823 DUP3
2824 DUP2
2825 MSTORE
2826 PUSH1 0x20
2828 ADD
2829 SWAP3
2830 POP
2831 POP
2832 POP
2833 PUSH1 0x40
2835 MLOAD
2836 DUP1
2837 SWAP2
2838 SUB
2839 SWAP1
2840 LOG1
2841 PUSH1 0x02
2843 PUSH1 0x00
2845 POP
2846 SLOAD
2847 PUSH1 0x05
2849 PUSH1 0x00
2851 POP
2852 SLOAD
2853 LT
2854 ISZERO
2855 ISZERO
2856 PUSH2 0x0493
2859 JUMPI
2860 PUSH2 0x0458
2863 PUSH2 0x0497
2866 JUMP
2867 JUMPDEST
2868 PUSH1 0x01
2870 PUSH1 0x00
2872 SWAP1
2873 SLOAD
2874 SWAP1
2875 PUSH2 0x0100
--- inner payout
2924 AND
2925 OP_ff
2926 JUMPDEST
2927 JUMPDEST
2928 JUMPDEST
2929 JUMP
2930 JUMPDEST
2931 PUSH1 0x00
2933 PUSH1 0x00
2935 PUSH1 0x00
2937 SWAP2
2938 POP
2939 JUMPDEST
2940 PUSH1 0x04
2942 PUSH1 0x00
2944 POP
2945 SLOAD
2946 DUP3
2947 LT
2948 ISZERO
2949 PUSH2 0x053b
2952 JUMPI
2953 PUSH1 0x04
2955 PUSH1 0x00
2957 POP
2958 DUP3
2959 DUP2
2960 SLOAD
2961 DUP2
2962 LT
2963 ISZERO
2964 PUSH2 0x0002
2967 JUMPI
2968 SWAP1
2969 PUSH1 0x00
2971 MSTORE
2972 PUSH1 0x20
2974 PUSH1 0x00
2976 SHA3
2977 SWAP1
2978 PUSH1 0x02
2980 MUL
2981 ADD
2982 PUSH1 0x00
2984 POP
2985 SWAP1
2986 POP
2987 DUP1
2988 PUSH1 0x00
2990 ADD
2991 PUSH1 0x00
2993 SWAP1
2994 SLOAD
2995 SWAP1
2996 PUSH2 0x0100
2999 EXP
3000 SWAP1
3001 DIV
3002 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
3023 AND
3024 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
3045 AND
3046 PUSH1 0x00
3048 DUP3
3049 PUSH1 0x01
3051 ADD
3052 PUSH1 0x00
3054 POP
3055 SLOAD
3056 PUSH1 0x40
3058 MLOAD
3059 DUP1
3060 SWAP1
3061 POP
3062 PUSH1 0x00
3064 PUSH1 0x40
3066 MLOAD
3067 DUP1
3068 DUP4
3069 SUB
3070 DUP2
3071 DUP6
3072 DUP9
3073 DUP9
3074 CALL
3075 SWAP4
3076 POP
3077 POP
3078 POP
3079 POP
3080 POP
3081 JUMPDEST
3082 DUP2
3083 DUP1
3084 PUSH1 0x01
3086 ADD
3087 SWAP3
3088 POP
3089 POP
3090 PUSH2 0x04a0
3093 JUMP
3094 JUMPDEST
3095 JUMPDEST
3096 POP
3097 POP
3098 JUMP
exec
/bin/bash -lc "node - <<'NODE'
const fs = require('fs');
const j = JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex = j.artifact.runtime_bytecode.full.slice(2);
const buf = Buffer.from(hex,'hex');
const names = {};
['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND',null,null,null,null,'LT','GT','SLT','SGT','EQ','ISZERO','AND','OR','XOR','NOT','BYTE','SHL','SHR','SAR',null,null,'SHA3'].forEach((n,i)=>{if(n) names[i]=n});
['ADDRESS','BALANCE','ORIGIN','CALLER','CALLVALUE','CALLDATALOAD','CALLDATASIZE','CALLDATACOPY','CODESIZE','CODECOPY','GASPRICE','EXTCODESIZE','EXTCODECOPY','RETURNDATASIZE','RETURNDATACOPY','EXTCODEHASH','BLOCKHASH','COINBASE','TIMESTAMP','NUMBER','PREVRANDAO','GASLIMIT','CHAINID','SELFBALANCE','BASEFEE'].forEach((n,i)=>names[0x30+i]=n);
['POP','MLOAD','MSTORE','MSTORE8','SLOAD','SSTORE','JUMP','JUMPI','PC','MSIZE','GAS','JUMPDEST'].forEach((n,i)=>names[0x50+i]=n);
for(let i=1;i<=32;i++) names[0x5f+i] = 'PUSH'+i;
for(let i=1;i<=16;i++) names[0x7f+i] = 'DUP'+i;
for(let i=1;i<=16;i++) names[0x8f+i] = 'SWAP'+i;
for(let i=0;i<5;i++) names[0xa0+i]='LOG'+i;
['CREATE','CALL','CALLCODE','RETURN','DELEGATECALL','CREATE2',null,'STATICCALL',null,'REVERT','INVALID','SELFDESTRUCT'].forEach((n,i)=>{if(n) names[0xf0+i]=n});
let pc=0; while(pc<buf.length){ const here=pc; const op=buf[pc++]; const name=names[op]||('OP_'+op.toString(16)); let arg=''; if(op>=0x60&&op<=0x7f){ const n=op-0x5f; arg='0x'+buf.slice(pc,pc+n).toString('hex'); pc+=n; } if(here>=2100&&here<=2475) console.log(here.toString().padStart(4), name.padEnd(12), arg); }
NODE" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
2102 AND
2103 DUP2
2104 MSTORE
2105 PUSH1 0x20
2107 ADD
2108 SWAP2
2109 POP
2110 POP
2111 PUSH1 0x40
2113 MLOAD
2114 DUP1
2115 SWAP2
2116 SUB
2117 SWAP1
2118 RETURN
2119 JUMPDEST
2120 PUSH2 0x0177
2123 PUSH1 0x04
2125 POP
2126 PUSH2 0x026f
2129 JUMP
2130 JUMPDEST
2131 PUSH1 0x40
2133 MLOAD
2134 DUP1
2135 DUP3
2136 DUP2
2137 MSTORE
2138 PUSH1 0x20
2140 ADD
2141 SWAP2
2142 POP
2143 POP
2144 PUSH1 0x40
2146 MLOAD
2147 DUP1
2148 SWAP2
2149 SUB
2150 SWAP1
2151 RETURN
2152 JUMPDEST
2153 PUSH2 0x0198
2156 PUSH1 0x04
2158 POP
2159 PUSH2 0x0278
2162 JUMP
2163 JUMPDEST
2164 STOP
2165 JUMPDEST
2166 PUSH2 0x01a5
2169 PUSH1 0x04
2171 POP
2172 PUSH2 0x0207
2175 JUMP
2176 JUMPDEST
2177 PUSH1 0x40
2179 MLOAD
2180 DUP1
2181 DUP3
2182 DUP2
2183 MSTORE
2184 PUSH1 0x20
2186 ADD
2187 SWAP2
2188 POP
2189 POP
2190 PUSH1 0x40
2192 MLOAD
2193 DUP1
2194 SWAP2
2195 SUB
2196 SWAP1
2197 RETURN
2198 JUMPDEST
2199 PUSH1 0x00
2201 PUSH1 0x00
2203 SWAP1
2204 SLOAD
2205 SWAP1
2206 PUSH2 0x0100
2209 EXP
2210 SWAP1
2211 DIV
2212 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2233 AND
2234 DUP2
2235 JUMP
2236 JUMPDEST
2237 PUSH1 0x01
2239 PUSH1 0x00
2241 SWAP1
2242 SLOAD
2243 SWAP1
2244 PUSH2 0x0100
2247 EXP
2248 SWAP1
2249 DIV
2250 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2271 AND
2272 DUP2
2273 JUMP
2274 JUMPDEST
2275 PUSH1 0x02
2277 PUSH1 0x00
2279 POP
2280 SLOAD
2281 DUP2
2282 JUMP
2283 JUMPDEST
2284 PUSH1 0x03
2286 PUSH1 0x00
2288 POP
2289 SLOAD
2290 DUP2
2291 JUMP
2292 JUMPDEST
2293 PUSH1 0x04
2295 PUSH1 0x00
2297 POP
2298 DUP2
2299 DUP2
2300 SLOAD
2301 DUP2
2302 LT
2303 ISZERO
2304 PUSH2 0x0002
2307 JUMPI
2308 SWAP1
2309 PUSH1 0x00
2311 MSTORE
2312 PUSH1 0x20
2314 PUSH1 0x00
2316 SHA3
2317 SWAP1
2318 PUSH1 0x02
2320 MUL
2321 ADD
2322 PUSH1 0x00
2324 SWAP2
2325 POP
2326 SWAP1
2327 POP
2328 DUP1
2329 PUSH1 0x00
2331 ADD
2332 PUSH1 0x00
2334 SWAP1
2335 SLOAD
2336 SWAP1
2337 PUSH2 0x0100
2340 EXP
2341 SWAP1
2342 DIV
2343 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2364 AND
2365 SWAP1
2366 DUP1
2367 PUSH1 0x01
2369 ADD
2370 PUSH1 0x00
2372 POP
2373 SLOAD
2374 SWAP1
2375 POP
2376 DUP3
2377 JUMP
2378 JUMPDEST
2379 PUSH1 0x05
2381 PUSH1 0x00
2383 POP
2384 SLOAD
2385 DUP2
2386 JUMP
2387 JUMPDEST
2388 PUSH1 0x03
2390 PUSH1 0x00
2392 POP
2393 SLOAD
2394 TIMESTAMP
2395 LT
2396 ISZERO
2397 ISZERO
2398 PUSH2 0x02c9
2401 JUMPI
2402 PUSH2 0x028e
2405 PUSH2 0x0497
2408 JUMP
2409 JUMPDEST
2410 PUSH1 0x00
2412 PUSH1 0x00
2414 SWAP1
2415 SLOAD
2416 SWAP1
2417 PUSH2 0x0100
2420 EXP
2421 SWAP1
2422 DIV
2423 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2444 AND
2445 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2466 AND
2467 OP_ff
2468 JUMPDEST
2469 JUMPDEST
2470 JUMP
2471 JUMPDEST
2472 PUSH1 0x00
2474 CALLVALUE
2475 GT
exec
/bin/bash -lc "node - <<'NODE'
const fs = require('fs');
const j = JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex = j.artifact.runtime_bytecode.full.slice(2);
const buf = Buffer.from(hex,'hex');
const names = {};
['STOP','ADD','MUL','SUB','DIV','SDIV','MOD','SMOD','ADDMOD','MULMOD','EXP','SIGNEXTEND',null,null,null,null,'LT','GT','SLT','SGT','EQ','ISZERO','AND','OR','XOR','NOT','BYTE','SHL','SHR','SAR',null,null,'SHA3'].forEach((n,i)=>{if(n) names[i]=n});
['ADDRESS','BALANCE','ORIGIN','CALLER','CALLVALUE','CALLDATALOAD','CALLDATASIZE','CALLDATACOPY','CODESIZE','CODECOPY','GASPRICE','EXTCODESIZE','EXTCODECOPY','RETURNDATASIZE','RETURNDATACOPY','EXTCODEHASH','BLOCKHASH','COINBASE','TIMESTAMP','NUMBER','PREVRANDAO','GASLIMIT','CHAINID','SELFBALANCE','BASEFEE'].forEach((n,i)=>names[0x30+i]=n);
['POP','MLOAD','MSTORE','MSTORE8','SLOAD','SSTORE','JUMP','JUMPI','PC','MSIZE','GAS','JUMPDEST'].forEach((n,i)=>names[0x50+i]=n);
for(let i=1;i<=32;i++) names[0x5f+i] = 'PUSH'+i;
for(let i=1;i<=16;i++) names[0x7f+i] = 'DUP'+i;
for(let i=1;i<=16;i++) names[0x8f+i] = 'SWAP'+i;
for(let i=0;i<5;i++) names[0xa0+i]='LOG'+i;
['CREATE','CALL','CALLCODE','RETURN','DELEGATECALL','CREATE2',null,'STATICCALL',null,'REVERT','INVALID','SELFDESTRUCT'].forEach((n,i)=>{if(n) names[0xf0+i]=n});
let pc=0; while(pc<buf.length){ const here=pc; const op=buf[pc++]; const name=names[op]||('OP_'+op.toString(16)); let arg=''; if(op>=0x60&&op<=0x7f){ const n=op-0x5f; arg='0x'+buf.slice(pc,pc+n).toString('hex'); pc+=n; } if(here>=970&&here<=1580) console.log(here.toString().padStart(4), name.padEnd(12), arg); }
NODE" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
972 JUMP
973 JUMPDEST
974 STOP
975 JUMPDEST
976 PUSH1 0x00
978 PUSH1 0x00
980 SWAP1
981 SLOAD
982 SWAP1
983 PUSH2 0x0100
986 EXP
987 SWAP1
988 DIV
989 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1010 AND
1011 DUP2
1012 JUMP
1013 JUMPDEST
1014 PUSH1 0x01
1016 PUSH1 0x00
1018 SWAP1
1019 SLOAD
1020 SWAP1
1021 PUSH2 0x0100
1024 EXP
1025 SWAP1
1026 DIV
1027 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1048 AND
1049 DUP2
1050 JUMP
1051 JUMPDEST
1052 PUSH1 0x02
1054 PUSH1 0x00
1056 POP
1057 SLOAD
1058 DUP2
1059 JUMP
1060 JUMPDEST
1061 PUSH1 0x02
1063 PUSH1 0x00
1065 POP
1066 SLOAD
1067 TIMESTAMP
1068 LT
1069 ISZERO
1070 ISZERO
1071 PUSH2 0x01fa
1074 JUMPI
1075 PUSH1 0x01
1077 PUSH1 0x00
1079 SWAP1
1080 SLOAD
1081 SWAP1
1082 PUSH2 0x0100
1085 EXP
1086 SWAP1
1087 DIV
1088 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1109 AND
1110 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1131 AND
1132 OP_ff
1133 JUMPDEST
1134 JUMPDEST
1135 JUMP
1136 JUMPDEST
1137 PUSH1 0x00
1139 PUSH1 0x00
1141 SWAP1
1142 SLOAD
1143 SWAP1
1144 PUSH2 0x0100
1147 EXP
1148 SWAP1
1149 DIV
1150 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1171 AND
1172 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1193 AND
1194 CALLER
1195 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1216 AND
1217 EQ
1218 ISZERO
1219 PUSH2 0x028e
1222 JUMPI
1223 PUSH1 0x00
1225 PUSH1 0x00
1227 SWAP1
1228 SLOAD
1229 SWAP1
1230 PUSH2 0x0100
1233 EXP
1234 SWAP1
1235 DIV
1236 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1257 AND
1258 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1279 AND
1280 OP_ff
1281 JUMPDEST
1282 JUMPDEST
1283 JUMP
1284 JUMPDEST
1285 PUSH1 0x00
1287 PUSH1 0x00
1289 PUSH1 0x00
1291 PUSH1 0x00
1293 PUSH1 0x00
1295 SWAP1
1296 SLOAD
1297 SWAP1
1298 PUSH2 0x0100
1301 EXP
1302 SWAP1
1303 DIV
1304 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1325 AND
1326 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1347 AND
1348 CALLER
1349 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1370 AND
1371 EQ
1372 ISZERO
1373 PUSH2 0x03b2
1376 JUMPI
1377 PUSH1 0x00
1379 SWAP2
1380 POP
1381 PUSH1 0x00
1383 PUSH1 0x00
1385 SWAP1
1386 SLOAD
1387 SWAP1
1388 PUSH2 0x0100
1391 EXP
1392 SWAP1
1393 DIV
1394 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1415 AND
1416 DUP3
1417 ADDRESS
1418 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1439 AND
1440 BALANCE
1441 DUP7
1442 PUSH1 0x40
1444 MLOAD
1445 PUSH2 0x05ed
1448 DUP1
1449 PUSH2 0x03bb
1452 DUP4
1453 CODECOPY
1454 ADD
1455 DUP1
1456 DUP6
1457 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1478 AND
1479 DUP2
1480 MSTORE
1481 PUSH1 0x20
1483 ADD
1484 DUP5
1485 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1506 AND
1507 DUP2
1508 MSTORE
1509 PUSH1 0x20
1511 ADD
1512 DUP4
1513 DUP2
1514 MSTORE
1515 PUSH1 0x20
1517 ADD
1518 DUP3
1519 DUP2
1520 MSTORE
1521 PUSH1 0x20
1523 ADD
1524 SWAP5
1525 POP
1526 POP
1527 POP
1528 POP
1529 POP
1530 PUSH1 0x40
1532 MLOAD
1533 DUP1
1534 SWAP2
1535 SUB
1536 SWAP1
1537 PUSH1 0x00
1539 CREATE
1540 SWAP1
1541 POP
1542 DUP1
1543 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
1564 AND
1565 OP_ff
1566 DUP1
1567 SWAP3
1568 POP
1569 PUSH2 0x03b3
1572 JUMP
1573 JUMPDEST
1574 JUMPDEST
1575 POP
1576 POP
1577 SWAP2
1578 SWAP1
1579 POP
1580 JUMP
exec
/bin/bash -lc "python - <<'PY'
print(hex(3074), hex(2860), hex(2925), hex(2467), hex(1539), hex(1565), hex(1280), hex(1194), hex(1348))
PY" in /tmp/codex-3vdnw0bq
succeeded in 0ms:
0xc02 0xb2c 0xb6d 0x9a3 0x603 0x61d 0x500 0x4aa 0x544
codex
{"no_findings":false,"summary":"Bytecode-only review found a concrete reentrancy surface in the payout loop of the embedded child contract, unchecked low-level ETH sends that can silently skip payouts, and a privileged destroy/migrate path in the outer contract. Selector inference is best-effort; findings below rely on control-flow and opcode evidence rather than verified source names.","findings":[{"severity":"high","category":"reentrancy","title":"Reentrant payout loop can recurse into finalization and sweep remaining funds","exploit_scenario":"The embedded child contract pays recorded recipients via a raw CALL. A malicious recipient contract can reenter during its payout and call the payable entrypoint again with a small amount. Because that entrypoint itself checks the threshold and can immediately re-enter the payout/selfdestruct path, the attacker can trigger recursive finalization before the outer loop finishes, potentially causing incomplete payouts and sweeping residual ETH to the configured sink address.","recommendation":"Do not perform push-based payouts and self-destruction in the same execution path. Set a finalized/reentrancy-lock flag before the first external call, or switch to a pull-payment model where recipients withdraw individually after finalization.","evidence":"In the child runtime, selector 0x119f8747 appends (caller,msg.value) into the slot-4 array and updates slot5; when slot5 exceeds slot2 it jumps into the payout routine at pc 0xb2c. The payout routine iterates storage-backed recipients and executes CALL at pc 0xc02 with no guard or state freeze before the external interaction. Selector 0x86d1a69f also routes into the same payout routine before a SELFDESTRUCT path. From bytecode alone I cannot prove exploit profitability in every deployment, but the reentrant control flow is present.","locations":["selector:0x119f8747","selector:0x86d1a69f","pc:0xb2c","pc:0xc02"]},{"severity":"medium","category":"other","title":"Unchecked low-level ETH sends can permanently skip payouts","exploit_scenario":"If any recorded recipient is a contract that reverts on receive or otherwise causes the low-level send to fail, the payout loop continues anyway. The unpaid amount then remains inside the contract until the surrounding finalization path selfdestructs the contract to a sink address, so the intended recipient can lose funds permanently.","recommendation":"Check the CALL success bit and revert or record unpaid balances for later withdrawal. Avoid sweeping remaining balance with SELFDESTRUCT after partial-send failures.","evidence":"At pc 0xc02 the payout loop performs a raw CALL using the stored recipient address and amount. The returned success value is immediately discarded (pc 0xc03 onward pops the result and continues the loop), and there is no failure branch or retry accounting. The same child contract has SELFDESTRUCT finalization paths after payout completion, so skipped transfers are not recoverably tracked. This is inferred from bytecode; returndata handling is unknown because no explicit checks are present.","locations":["pc:0xc02","selector:0x119f8747","selector:0x86d1a69f"]},{"severity":"medium","category":"upgradeability","title":"Privileged destroy/migrate path can replace the live contract by creating a child and selfdestructing","exploit_scenario":"A privileged controller stored in slot0 can invoke the outer contract's owner-checked lifecycle functions to either selfdestruct directly or deploy an embedded child contract and immediately selfdestruct into it. If that controller is compromised or behaves maliciously, users can lose availability and have funds forcibly migrated out of the current contract.","recommendation":"If this lifecycle control is intentional, protect it with a timelock and multisig and document it clearly. Otherwise remove direct SELFDESTRUCT-based migration/kill functionality.","evidence":"The outer runtime compares CALLER against the slot0 address at pc 0x4aa and 0x544. One privileged path reaches SELFDESTRUCT at pc 0x500. Another privileged path builds embedded init code, executes CREATE at pc 0x603, and then immediately SELFDESTRUCTs to the newly created address at pc 0x61d. This is not a standard proxy, but it is still a powerful privileged migration mechanism visible in bytecode.","locations":["selector:0xea8a1af0","selector:0x0fe65b36","pc:0x4aa","pc:0x544","pc:0x603","pc:0x61d"]}]}
tokens used
110,214
{
"codex": {
"ran_at": "2026-04-04T22:20:55.292537+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 6200,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode-only review found a concrete reentrancy surface in the payout loop of the embedded child contract, unchecked low-level ETH sends that can silently skip payouts, and a privileged destroy/migrate path in the outer contract. Selector inference is best-effort; findings below rely on control-flow and opcode evidence rather than verified source names.",
"raw_final": {
"summary": "Bytecode-only review found a concrete reentrancy surface in the payout loop of the embedded child contract, unchecked low-level ETH sends that can silently skip payouts, and a privileged destroy/migrate path in the outer contract. Selector inference is best-effort; findings below rely on control-flow and opcode evidence rather than verified source names.",
"findings": [
{
"title": "Reentrant payout loop can recurse into finalization and sweep remaining funds",
"category": "reentrancy",
"evidence": "In the child runtime, selector 0x119f8747 appends (caller,msg.value) into the slot-4 array and updates slot5; when slot5 exceeds slot2 it jumps into the payout routine at pc 0xb2c. The payout routine iterates storage-backed recipients and executes CALL at pc 0xc02 with no guard or state freeze before the external interaction. Selector 0x86d1a69f also routes into the same payout routine before a SELFDESTRUCT path. From bytecode alone I cannot prove exploit profitability in every deployment, but the reentrant control flow is present.",
"severity": "high",
"locations": [
"selector:0x119f8747",
"selector:0x86d1a69f",
"pc:0xb2c",
"pc:0xc02"
],
"recommendation": "Do not perform push-based payouts and self-destruction in the same execution path. Set a finalized/reentrancy-lock flag before the first external call, or switch to a pull-payment model where recipients withdraw individually after finalization.",
"exploit_scenario": "The embedded child contract pays recorded recipients via a raw CALL. A malicious recipient contract can reenter during its payout and call the payable entrypoint again with a small amount. Because that entrypoint itself checks the threshold and can immediately re-enter the payout/selfdestruct path, the attacker can trigger recursive finalization before the outer loop finishes, potentially causing incomplete payouts and sweeping residual ETH to the configured sink address."
},
{
"title": "Unchecked low-level ETH sends can permanently skip payouts",
"category": "other",
"evidence": "At pc 0xc02 the payout loop performs a raw CALL using the stored recipient address and amount. The returned success value is immediately discarded (pc 0xc03 onward pops the result and continues the loop), and there is no failure branch or retry accounting. The same child contract has SELFDESTRUCT finalization paths after payout completion, so skipped transfers are not recoverably tracked. This is inferred from bytecode; returndata handling is unknown because no explicit checks are present.",
"severity": "medium",
"locations": [
"pc:0xc02",
"selector:0x119f8747",
"selector:0x86d1a69f"
],
"recommendation": "Check the CALL success bit and revert or record unpaid balances for later withdrawal. Avoid sweeping remaining balance with SELFDESTRUCT after partial-send failures.",
"exploit_scenario": "If any recorded recipient is a contract that reverts on receive or otherwise causes the low-level send to fail, the payout loop continues anyway. The unpaid amount then remains inside the contract until the surrounding finalization path selfdestructs the contract to a sink address, so the intended recipient can lose funds permanently."
},
{
"title": "Privileged destroy/migrate path can replace the live contract by creating a child and selfdestructing",
"category": "upgradeability",
"evidence": "The outer runtime compares CALLER against the slot0 address at pc 0x4aa and 0x544. One privileged path reaches SELFDESTRUCT at pc 0x500. Another privileged path builds embedded init code, executes CREATE at pc 0x603, and then immediately SELFDESTRUCTs to the newly created address at pc 0x61d. This is not a standard proxy, but it is still a powerful privileged migration mechanism visible in bytecode.",
"severity": "medium",
"locations": [
"selector:0xea8a1af0",
"selector:0x0fe65b36",
"pc:0x4aa",
"pc:0x544",
"pc:0x603",
"pc:0x61d"
],
"recommendation": "If this lifecycle control is intentional, protect it with a timelock and multisig and document it clearly. Otherwise remove direct SELFDESTRUCT-based migration/kill functionality.",
"exploit_scenario": "A privileged controller stored in slot0 can invoke the outer contract's owner-checked lifecycle functions to either selfdestruct directly or deploy an embedded child contract and immediately selfdestruct into it. If that controller is compromised or behaves maliciously, users can lose availability and have funds forcibly migrated out of the current contract."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x00 00000007: CALLDATALOAD 00000008: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000026: SWAP1 00000027: DIV 00000028: DUP1 00000029: PUSH4 0x9e39db73 0000002e: EQ 0000002f: PUSH2 0x0044 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xa9059cbb 00000039: EQ 0000003a: PUSH2 0x0057 0000003d: JUMPI 0000003e: PUSH2 0x0042 00000041: JUMP 00000042: JUMPDEST 00000043: STOP 00000044: JUMPDEST 00000045: PUSH2 0x0055 00000048: PUSH1 0x04 0000004a: DUP1 0000004b: CALLDATALOAD 0000004c: SWAP1 0000004d: PUSH1 0x20 0000004f: ADD 00000050: POP 00000051: PUSH2 0x009a 00000054: JUMP 00000055: JUMPDEST 00000056: STOP 00000057: JUMPDEST 00000058: PUSH2 0x006e 0000005b: PUSH1 0x04 0000005d: DUP1 0000005e: CALLDATALOAD 0000005f: SWAP1 00000060: PUSH1 0x20 00000062: ADD 00000063: DUP1 00000064: CALLDATALOAD 00000065: SWAP1 00000066: PUSH1 0x20 00000068: ADD 00000069: POP 0000006a: PUSH2 0x00da 0000006d: JUMP 0000006e: JUMPDEST 0000006f: PUSH1 0x40 00000071: MLOAD 00000072: DUP1 00000073: DUP3 00000074: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000089: AND 0000008a: DUP2 0000008b: MSTORE 0000008c: PUSH1 0x20 0000008e: ADD 0000008f: SWAP2 00000090: POP 00000091: POP 00000092: PUSH1 0x40 00000094: MLOAD 00000095: DUP1 00000096: SWAP2 00000097: SUB 00000098: SWAP1 00000099: RETURN 0000009a: JUMPDEST 0000009b: CALLVALUE 0000009c: PUSH1 0x01 0000009e: PUSH1 0x00 000000a0: POP 000000a1: PUSH1 0x00 000000a3: DUP4 000000a4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000b9: AND 000000ba: DUP2 000000bb: MSTORE 000000bc: PUSH1 0x20 000000be: ADD 000000bf: SWAP1 000000c0: DUP2 000000c1: MSTORE 000000c2: PUSH1 0x20 000000c4: ADD 000000c5: PUSH1 0x00 000000c7: KECCAK256 000000c8: PUSH1 0x00 000000ca: DUP3 000000cb: DUP3 000000cc: DUP3 000000cd: POP 000000ce: SLOAD 000000cf: ADD 000000d0: SWAP3 000000d1: POP 000000d2: POP 000000d3: DUP2 000000d4: SWAP1 000000d5: SSTORE 000000d6: POP 000000d7: JUMPDEST 000000d8: POP 000000d9: JUMP 000000da: JUMPDEST 000000db: PUSH1 0x00 000000dd: PUSH1 0x00 000000df: PUSH1 0x00 000000e1: CALLER 000000e2: SWAP2 000000e3: POP 000000e4: DUP4 000000e5: PUSH1 0x01 000000e7: PUSH1 0x00 000000e9: POP 000000ea: PUSH1 0x00 000000ec: DUP5 000000ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000102: AND 00000103: DUP2 00000104: MSTORE 00000105: PUSH1 0x20 00000107: ADD 00000108: SWAP1 00000109: DUP2 0000010a: MSTORE 0000010b: PUSH1 0x20 0000010d: ADD 0000010e: PUSH1 0x00 00000110: KECCAK256 00000111: PUSH1 0x00 00000113: POP 00000114: SLOAD 00000115: LT 00000116: ISZERO 00000117: PUSH2 0x0123 0000011a: JUMPI 0000011b: PUSH1 0x00 0000011d: SWAP3 0000011e: POP 0000011f: PUSH2 0x01ce 00000122: JUMP 00000123: JUMPDEST 00000124: DUP2 00000125: DUP6 00000126: PUSH1 0x00 00000128: PUSH1 0x00 0000012a: POP 0000012b: SLOAD 0000012c: TIMESTAMP 0000012d: ADD 0000012e: PUSH1 0x40 00000130: MLOAD 00000131: PUSH2 0x0a44 00000134: DUP1 00000135: PUSH2 0x01d7 00000138: DUP4 00000139: CODECOPY 0000013a: ADD 0000013b: DUP1 0000013c: DUP5 0000013d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000152: AND 00000153: DUP2 00000154: MSTORE 00000155: PUSH1 0x20 00000157: ADD 00000158: DUP4 00000159: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000016e: AND 0000016f: DUP2 00000170: MSTORE 00000171: PUSH1 0x20 00000173: ADD 00000174: DUP3 00000175: DUP2 00000176: MSTORE 00000177: PUSH1 0x20 00000179: ADD 0000017a: SWAP4 0000017b: POP 0000017c: POP 0000017d: POP 0000017e: POP 0000017f: PUSH1 0x40 00000181: MLOAD 00000182: DUP1 00000183: SWAP2 00000184: SUB 00000185: SWAP1 00000186: PUSH1 0x00 00000188: CREATE 00000189: SWAP1 0000018a: POP 0000018b: DUP4 0000018c: PUSH1 0x01 0000018e: PUSH1 0x00 00000190: POP 00000191: PUSH1 0x00 00000193: DUP5 00000194: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001a9: AND 000001aa: DUP2 000001ab: MSTORE 000001ac: PUSH1 0x20 000001ae: ADD 000001af: SWAP1 000001b0: DUP2 000001b1: MSTORE 000001b2: PUSH1 0x20 000001b4: ADD 000001b5: PUSH1 0x00 000001b7: KECCAK256 000001b8: PUSH1 0x00 000001ba: DUP3 000001bb: DUP3 000001bc: DUP3 000001bd: POP 000001be: SLOAD 000001bf: SUB 000001c0: SWAP3 000001c1: POP 000001c2: POP 000001c3: DUP2 000001c4: SWAP1 000001c5: SSTORE 000001c6: POP 000001c7: DUP1 000001c8: SWAP3 000001c9: POP 000001ca: PUSH2 0x01ce 000001cd: JUMP 000001ce: JUMPDEST 000001cf: POP 000001d0: POP 000001d1: SWAP3 000001d2: SWAP2 000001d3: POP 000001d4: POP 000001d5: JUMP 000001d6: STOP 000001d7: PUSH1 0x60 000001d9: PUSH1 0x40 000001db: MSTORE 000001dc: PUSH1 0x40 000001de: MLOAD 000001df: PUSH1 0x60 000001e1: DUP1 000001e2: PUSH2 0x0a44 000001e5: DUP4 000001e6: CODECOPY 000001e7: ADD 000001e8: PUSH1 0x40 000001ea: MSTORE 000001eb: PUSH1 0x60 000001ed: DUP1 000001ee: MLOAD 000001ef: SWAP1 000001f0: PUSH1 0x20 000001f2: ADD 000001f3: DUP1 000001f4: MLOAD 000001f5: SWAP1 000001f6: PUSH1 0x20 000001f8: ADD 000001f9: DUP1 000001fa: MLOAD 000001fb: SWAP1 000001fc: PUSH1 0x20 000001fe: ADD 000001ff: POP 00000200: JUMPDEST 00000201: DUP3 00000202: PUSH1 0x00 00000204: PUSH1 0x00 00000206: PUSH2 0x0100 00000209: EXP 0000020a: DUP2 0000020b: SLOAD 0000020c: DUP2 0000020d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000222: MUL 00000223: NOT 00000224: AND 00000225: SWAP1 00000226: DUP4 00000227: MUL 00000228: OR 00000229: SWAP1 0000022a: SSTORE 0000022b: POP 0000022c: DUP2 0000022d: PUSH1 0x01 0000022f: PUSH1 0x00 00000231: PUSH2 0x0100 00000234: EXP 00000235: DUP2 00000236: SLOAD 00000237: DUP2 00000238: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000024d: MUL 0000024e: NOT 0000024f: AND 00000250: SWAP1 00000251: DUP4 00000252: MUL 00000253: OR 00000254: SWAP1 00000255: SSTORE 00000256: POP 00000257: DUP1 00000258: PUSH1 0x02 0000025a: PUSH1 0x00 0000025c: POP 0000025d: DUP2 0000025e: SWAP1 0000025f: SSTORE 00000260: POP 00000261: JUMPDEST 00000262: POP 00000263: POP 00000264: POP 00000265: PUSH2 0x09a8 00000268: DUP1 00000269: PUSH2 0x009c 0000026c: PUSH1 0x00 0000026e: CODECOPY 0000026f: PUSH1 0x00 00000271: RETURN 00000272: STOP 00000273: PUSH1 0x60 00000275: PUSH1 0x40 00000277: MSTORE 00000278: CALLDATASIZE 00000279: ISZERO 0000027a: PUSH2 0x0074 0000027d: JUMPI 0000027e: PUSH1 0x00 00000280: CALLDATALOAD 00000281: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000029f: SWAP1 000002a0: DIV 000002a1: DUP1 000002a2: PUSH4 0x0fe65b36 000002a7: EQ 000002a8: PUSH2 0x0076 000002ab: JUMPI 000002ac: DUP1 000002ad: PUSH4 0x66d003ac 000002b2: EQ 000002b3: PUSH2 0x00b3 000002b6: JUMPI 000002b7: DUP1 000002b8: PUSH4 0x86d1a69f 000002bd: EQ 000002be: PUSH2 0x00ea 000002c1: JUMPI 000002c2: DUP1 000002c3: PUSH4 0x8da5cb5b 000002c8: EQ 000002c9: PUSH2 0x00f7 000002cc: JUMPI 000002cd: DUP1 000002ce: PUSH4 0xb91d4001 000002d3: EQ 000002d4: PUSH2 0x012e 000002d7: JUMPI 000002d8: DUP1 000002d9: PUSH4 0xea8a1af0 000002de: EQ 000002df: PUSH2 0x014f 000002e2: JUMPI 000002e3: PUSH2 0x0074 000002e6: JUMP 000002e7: JUMPDEST 000002e8: STOP 000002e9: JUMPDEST 000002ea: PUSH2 0x0087 000002ed: PUSH1 0x04 000002ef: DUP1 000002f0: CALLDATALOAD 000002f1: SWAP1 000002f2: PUSH1 0x20 000002f4: ADD 000002f5: POP 000002f6: PUSH2 0x0291 000002f9: JUMP 000002fa: JUMPDEST 000002fb: PUSH1 0x40 000002fd: MLOAD 000002fe: DUP1 000002ff: DUP3 00000300: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000315: AND 00000316: DUP2 00000317: MSTORE 00000318: PUSH1 0x20 0000031a: ADD 0000031b: SWAP2 0000031c: POP 0000031d: POP 0000031e: PUSH1 0x40 00000320: MLOAD 00000321: DUP1 00000322: SWAP2 00000323: SUB 00000324: SWAP1 00000325: RETURN 00000326: JUMPDEST 00000327: PUSH2 0x00be 0000032a: PUSH1 0x04 0000032c: POP 0000032d: PUSH2 0x0182 00000330: JUMP 00000331: JUMPDEST 00000332: PUSH1 0x40 00000334: MLOAD 00000335: DUP1 00000336: DUP3 00000337: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000034c: AND 0000034d: DUP2 0000034e: MSTORE 0000034f: PUSH1 0x20 00000351: ADD 00000352: SWAP2 00000353: POP 00000354: POP 00000355: PUSH1 0x40 00000357: MLOAD 00000358: DUP1 00000359: SWAP2 0000035a: SUB 0000035b: SWAP1 0000035c: RETURN 0000035d: JUMPDEST 0000035e: PUSH2 0x00f5 00000361: PUSH1 0x04 00000363: POP 00000364: PUSH2 0x01b1 00000367: JUMP 00000368: JUMPDEST 00000369: STOP 0000036a: JUMPDEST 0000036b: PUSH2 0x0102 0000036e: PUSH1 0x04 00000370: POP 00000371: PUSH2 0x015c 00000374: JUMP 00000375: JUMPDEST 00000376: PUSH1 0x40 00000378: MLOAD 00000379: DUP1 0000037a: DUP3 0000037b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000390: AND 00000391: DUP2 00000392: MSTORE 00000393: PUSH1 0x20 00000395: ADD 00000396: SWAP2 00000397: POP 00000398: POP 00000399: PUSH1 0x40 0000039b: MLOAD 0000039c: DUP1 0000039d: SWAP2 0000039e: SUB 0000039f: SWAP1 000003a0: RETURN 000003a1: JUMPDEST 000003a2: PUSH2 0x0139 000003a5: PUSH1 0x04 000003a7: POP 000003a8: PUSH2 0x01a8 000003ab: JUMP 000003ac: JUMPDEST 000003ad: PUSH1 0x40 000003af: MLOAD 000003b0: DUP1 000003b1: DUP3 000003b2: DUP2 000003b3: MSTORE 000003b4: PUSH1 0x20 000003b6: ADD 000003b7: SWAP2 000003b8: POP 000003b9: POP 000003ba: PUSH1 0x40 000003bc: MLOAD 000003bd: DUP1 000003be: SWAP2 000003bf: SUB 000003c0: SWAP1 000003c1: RETURN 000003c2: JUMPDEST 000003c3: PUSH2 0x015a 000003c6: PUSH1 0x04 000003c8: POP 000003c9: PUSH2 0x01fd 000003cc: JUMP 000003cd: JUMPDEST 000003ce: STOP 000003cf: JUMPDEST 000003d0: PUSH1 0x00 000003d2: PUSH1 0x00 000003d4: SWAP1 000003d5: SLOAD 000003d6: SWAP1 000003d7: PUSH2 0x0100 000003da: EXP 000003db: SWAP1 000003dc: DIV 000003dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003f2: AND 000003f3: DUP2 000003f4: JUMP 000003f5: JUMPDEST 000003f6: PUSH1 0x01 000003f8: PUSH1 0x00 000003fa: SWAP1 000003fb: SLOAD 000003fc: SWAP1 000003fd: PUSH2 0x0100 00000400: EXP 00000401: SWAP1 00000402: DIV 00000403: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000418: AND 00000419: DUP2 0000041a: JUMP 0000041b: JUMPDEST 0000041c: PUSH1 0x02 0000041e: PUSH1 0x00 00000420: POP 00000421: SLOAD 00000422: DUP2 00000423: JUMP 00000424: JUMPDEST 00000425: PUSH1 0x02 00000427: PUSH1 0x00 00000429: POP 0000042a: SLOAD 0000042b: TIMESTAMP 0000042c: LT 0000042d: ISZERO 0000042e: ISZERO 0000042f: PUSH2 0x01fa 00000432: JUMPI 00000433: PUSH1 0x01 00000435: PUSH1 0x00 00000437: SWAP1 00000438: SLOAD 00000439: SWAP1 0000043a: PUSH2 0x0100 0000043d: EXP 0000043e: SWAP1 0000043f: DIV 00000440: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000455: AND 00000456: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000046b: AND 0000046c: SELFDESTRUCT 0000046d: JUMPDEST 0000046e: JUMPDEST 0000046f: JUMP 00000470: JUMPDEST 00000471: PUSH1 0x00 00000473: PUSH1 0x00 00000475: SWAP1 00000476: SLOAD 00000477: SWAP1 00000478: PUSH2 0x0100 0000047b: EXP 0000047c: SWAP1 0000047d: DIV 0000047e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000493: AND 00000494: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004a9: AND 000004aa: CALLER 000004ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004c0: AND 000004c1: EQ 000004c2: ISZERO 000004c3: PUSH2 0x028e 000004c6: JUMPI 000004c7: PUSH1 0x00 000004c9: PUSH1 0x00 000004cb: SWAP1 000004cc: SLOAD 000004cd: SWAP1 000004ce: PUSH2 0x0100 000004d1: EXP 000004d2: SWAP1 000004d3: DIV 000004d4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004e9: AND 000004ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004ff: AND 00000500: SELFDESTRUCT 00000501: JUMPDEST 00000502: JUMPDEST 00000503: JUMP 00000504: JUMPDEST 00000505: PUSH1 0x00 00000507: PUSH1 0x00 00000509: PUSH1 0x00 0000050b: PUSH1 0x00 0000050d: PUSH1 0x00 0000050f: SWAP1 00000510: SLOAD 00000511: SWAP1 00000512: PUSH2 0x0100 00000515: EXP 00000516: SWAP1 00000517: DIV 00000518: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000052d: AND 0000052e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000543: AND 00000544: CALLER 00000545: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000055a: AND 0000055b: EQ 0000055c: ISZERO 0000055d: PUSH2 0x03b2 00000560: JUMPI 00000561: PUSH1 0x00 00000563: SWAP2 00000564: POP 00000565: PUSH1 0x00 00000567: PUSH1 0x00 00000569: SWAP1 0000056a: SLOAD 0000056b: SWAP1 0000056c: PUSH2 0x0100 0000056f: EXP 00000570: SWAP1 00000571: DIV 00000572: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000587: AND 00000588: DUP3 00000589: ADDRESS 0000058a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000059f: AND 000005a0: BALANCE 000005a1: DUP7 000005a2: PUSH1 0x40 000005a4: MLOAD 000005a5: PUSH2 0x05ed 000005a8: DUP1 000005a9: PUSH2 0x03bb 000005ac: DUP4 000005ad: CODECOPY 000005ae: ADD 000005af: DUP1 000005b0: DUP6 000005b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005c6: AND 000005c7: DUP2 000005c8: MSTORE 000005c9: PUSH1 0x20 000005cb: ADD 000005cc: DUP5 000005cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005e2: AND 000005e3: DUP2 000005e4: MSTORE 000005e5: PUSH1 0x20 000005e7: ADD 000005e8: DUP4 000005e9: DUP2 000005ea: MSTORE 000005eb: PUSH1 0x20 000005ed: ADD 000005ee: DUP3 000005ef: DUP2 000005f0: MSTORE 000005f1: PUSH1 0x20 000005f3: ADD 000005f4: SWAP5 000005f5: POP 000005f6: POP 000005f7: POP 000005f8: POP 000005f9: POP 000005fa: PUSH1 0x40 000005fc: MLOAD 000005fd: DUP1 000005fe: SWAP2 000005ff: SUB 00000600: SWAP1 00000601: PUSH1 0x00 00000603: CREATE 00000604: SWAP1 00000605: POP 00000606: DUP1 00000607: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000061c: AND 0000061d: SELFDESTRUCT 0000061e: DUP1 0000061f: SWAP3 00000620: POP 00000621: PUSH2 0x03b3 00000624: JUMP 00000625: JUMPDEST 00000626: JUMPDEST 00000627: POP 00000628: POP 00000629: SWAP2 0000062a: SWAP1 0000062b: POP 0000062c: JUMP 0000062d: STOP 0000062e: PUSH1 0x60 00000630: PUSH1 0x40 00000632: MSTORE 00000633: PUSH1 0x40 00000635: MLOAD 00000636: PUSH1 0x80 00000638: DUP1 00000639: PUSH2 0x05ed 0000063c: DUP4 0000063d: CODECOPY 0000063e: ADD 0000063f: PUSH1 0x40 00000641: MSTORE 00000642: PUSH1 0x60 00000644: DUP1 00000645: MLOAD 00000646: SWAP1 00000647: PUSH1 0x20 00000649: ADD 0000064a: DUP1 0000064b: MLOAD 0000064c: SWAP1 0000064d: PUSH1 0x20 0000064f: ADD 00000650: DUP1 00000651: MLOAD 00000652: SWAP1 00000653: PUSH1 0x20 00000655: ADD 00000656: DUP1 00000657: MLOAD 00000658: SWAP1 00000659: PUSH1 0x20 0000065b: ADD 0000065c: POP 0000065d: JUMPDEST 0000065e: DUP4 0000065f: PUSH1 0x00 00000661: PUSH1 0x00 00000663: PUSH2 0x0100 00000666: EXP 00000667: DUP2 00000668: SLOAD 00000669: DUP2 0000066a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000067f: MUL 00000680: NOT 00000681: AND 00000682: SWAP1 00000683: DUP4 00000684: MUL 00000685: OR 00000686: SWAP1 00000687: SSTORE 00000688: POP 00000689: DUP3 0000068a: PUSH1 0x01 0000068c: PUSH1 0x00 0000068e: PUSH2 0x0100 00000691: EXP 00000692: DUP2 00000693: SLOAD 00000694: DUP2 00000695: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006aa: MUL 000006ab: NOT 000006ac: AND 000006ad: SWAP1 000006ae: DUP4 000006af: MUL 000006b0: OR 000006b1: SWAP1 000006b2: SSTORE 000006b3: POP 000006b4: DUP2 000006b5: PUSH1 0x02 000006b7: PUSH1 0x00 000006b9: POP 000006ba: DUP2 000006bb: SWAP1 000006bc: SSTORE 000006bd: POP 000006be: DUP1 000006bf: PUSH1 0x03 000006c1: PUSH1 0x00 000006c3: POP 000006c4: DUP2 000006c5: SWAP1 000006c6: SSTORE 000006c7: POP 000006c8: JUMPDEST 000006c9: POP 000006ca: POP 000006cb: POP 000006cc: POP 000006cd: PUSH2 0x0540 000006d0: DUP1 000006d1: PUSH2 0x00ad 000006d4: PUSH1 0x00 000006d6: CODECOPY 000006d7: PUSH1 0x00 000006d9: RETURN 000006da: STOP 000006db: PUSH1 0x60 000006dd: PUSH1 0x40 000006df: MSTORE 000006e0: CALLDATASIZE 000006e1: ISZERO 000006e2: PUSH2 0x008a 000006e5: JUMPI 000006e6: PUSH1 0x00 000006e8: CALLDATALOAD 000006e9: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000707: SWAP1 00000708: DIV 00000709: DUP1 0000070a: PUSH4 0x119f8747 0000070f: EQ 00000710: PUSH2 0x008c 00000713: JUMPI 00000714: DUP1 00000715: PUSH4 0x29dcb0cf 0000071a: EQ 0000071b: PUSH2 0x0099 0000071e: JUMPI 0000071f: DUP1 00000720: PUSH4 0x3c24b7d7 00000725: EQ 00000726: PUSH2 0x00ba 00000729: JUMPI 0000072a: DUP1 0000072b: PUSH4 0x552079dc 00000730: EQ 00000731: PUSH2 0x00fe 00000734: JUMPI 00000735: DUP1 00000736: PUSH4 0x66d003ac 0000073b: EQ 0000073c: PUSH2 0x0135 0000073f: JUMPI 00000740: DUP1 00000741: PUSH4 0x702c35fb 00000746: EQ 00000747: PUSH2 0x016c 0000074a: JUMPI 0000074b: DUP1 0000074c: PUSH4 0x86d1a69f 00000751: EQ 00000752: PUSH2 0x018d 00000755: JUMPI 00000756: DUP1 00000757: PUSH4 0xc9e7e29b 0000075c: EQ 0000075d: PUSH2 0x019a 00000760: JUMPI 00000761: PUSH2 0x008a 00000764: JUMP 00000765: JUMPDEST 00000766: STOP 00000767: JUMPDEST 00000768: PUSH2 0x0097 0000076b: PUSH1 0x04 0000076d: POP 0000076e: PUSH2 0x02cc 00000771: JUMP 00000772: JUMPDEST 00000773: STOP 00000774: JUMPDEST 00000775: PUSH2 0x00a4 00000778: PUSH1 0x04 0000077a: POP 0000077b: PUSH2 0x0210 0000077e: JUMP 0000077f: JUMPDEST 00000780: PUSH1 0x40 00000782: MLOAD 00000783: DUP1 00000784: DUP3 00000785: DUP2 00000786: MSTORE 00000787: PUSH1 0x20 00000789: ADD 0000078a: SWAP2 0000078b: POP 0000078c: POP 0000078d: PUSH1 0x40 0000078f: MLOAD 00000790: DUP1 00000791: SWAP2 00000792: SUB 00000793: SWAP1 00000794: RETURN 00000795: JUMPDEST 00000796: PUSH2 0x00cb 00000799: PUSH1 0x04 0000079b: DUP1 0000079c: CALLDATALOAD 0000079d: SWAP1 0000079e: PUSH1 0x20 000007a0: ADD 000007a1: POP 000007a2: PUSH2 0x0219 000007a5: JUMP 000007a6: JUMPDEST 000007a7: PUSH1 0x40 000007a9: MLOAD 000007aa: DUP1 000007ab: DUP4 000007ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007c1: AND 000007c2: DUP2 000007c3: MSTORE 000007c4: PUSH1 0x20 000007c6: ADD 000007c7: DUP3 000007c8: DUP2 000007c9: MSTORE 000007ca: PUSH1 0x20 000007cc: ADD 000007cd: SWAP3 000007ce: POP 000007cf: POP 000007d0: POP 000007d1: PUSH1 0x40 000007d3: MLOAD 000007d4: DUP1 000007d5: SWAP2 000007d6: SUB 000007d7: SWAP1 000007d8: RETURN 000007d9: JUMPDEST 000007da: PUSH2 0x0109 000007dd: PUSH1 0x04 000007df: POP 000007e0: PUSH2 0x01bb 000007e3: JUMP 000007e4: JUMPDEST 000007e5: PUSH1 0x40 000007e7: MLOAD 000007e8: DUP1 000007e9: DUP3 000007ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007ff: AND 00000800: DUP2 00000801: MSTORE 00000802: PUSH1 0x20 00000804: ADD 00000805: SWAP2 00000806: POP 00000807: POP 00000808: PUSH1 0x40 0000080a: MLOAD 0000080b: DUP1 0000080c: SWAP2 0000080d: SUB 0000080e: SWAP1 0000080f: RETURN 00000810: JUMPDEST 00000811: PUSH2 0x0140 00000814: PUSH1 0x04 00000816: POP 00000817: PUSH2 0x01e1 0000081a: JUMP 0000081b: JUMPDEST 0000081c: PUSH1 0x40 0000081e: MLOAD 0000081f: DUP1 00000820: DUP3 00000821: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000836: AND 00000837: DUP2 00000838: MSTORE 00000839: PUSH1 0x20 0000083b: ADD 0000083c: SWAP2 0000083d: POP 0000083e: POP 0000083f: PUSH1 0x40 00000841: MLOAD 00000842: DUP1 00000843: SWAP2 00000844: SUB 00000845: SWAP1 00000846: RETURN 00000847: JUMPDEST 00000848: PUSH2 0x0177 0000084b: PUSH1 0x04 0000084d: POP 0000084e: PUSH2 0x026f 00000851: JUMP 00000852: JUMPDEST 00000853: PUSH1 0x40 00000855: MLOAD 00000856: DUP1 00000857: DUP3 00000858: DUP2 00000859: MSTORE 0000085a: PUSH1 0x20 0000085c: ADD 0000085d: SWAP2 0000085e: POP 0000085f: POP 00000860: PUSH1 0x40 00000862: MLOAD 00000863: DUP1 00000864: SWAP2 00000865: SUB 00000866: SWAP1 00000867: RETURN 00000868: JUMPDEST 00000869: PUSH2 0x0198 0000086c: PUSH1 0x04 0000086e: POP 0000086f: PUSH2 0x0278 00000872: JUMP 00000873: JUMPDEST 00000874: STOP 00000875: JUMPDEST 00000876: PUSH2 0x01a5 00000879: PUSH1 0x04 0000087b: POP 0000087c: PUSH2 0x0207 0000087f: JUMP 00000880: JUMPDEST 00000881: PUSH1 0x40 00000883: MLOAD 00000884: DUP1 00000885: DUP3 00000886: DUP2 00000887: MSTORE 00000888: PUSH1 0x20 0000088a: ADD 0000088b: SWAP2 0000088c: POP 0000088d: POP 0000088e: PUSH1 0x40 00000890: MLOAD 00000891: DUP1 00000892: SWAP2 00000893: SUB 00000894: SWAP1 00000895: RETURN 00000896: JUMPDEST 00000897: PUSH1 0x00 00000899: PUSH1 0x00 0000089b: SWAP1 0000089c: SLOAD 0000089d: SWAP1 0000089e: PUSH2 0x0100 000008a1: EXP 000008a2: SWAP1 000008a3: DIV 000008a4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008b9: AND 000008ba: DUP2 000008bb: JUMP 000008bc: JUMPDEST 000008bd: PUSH1 0x01 000008bf: PUSH1 0x00 000008c1: SWAP1 000008c2: SLOAD 000008c3: SWAP1 000008c4: PUSH2 0x0100 000008c7: EXP 000008c8: SWAP1 000008c9: DIV 000008ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008df: AND 000008e0: DUP2 000008e1: JUMP 000008e2: JUMPDEST 000008e3: PUSH1 0x02 000008e5: PUSH1 0x00 000008e7: POP 000008e8: SLOAD 000008e9: DUP2 000008ea: JUMP 000008eb: JUMPDEST 000008ec: PUSH1 0x03 000008ee: PUSH1 0x00 000008f0: POP 000008f1: SLOAD 000008f2: DUP2 000008f3: JUMP 000008f4: JUMPDEST 000008f5: PUSH1 0x04 000008f7: PUSH1 0x00 000008f9: POP 000008fa: DUP2 000008fb: DUP2 000008fc: SLOAD 000008fd: DUP2 000008fe: LT 000008ff: ISZERO 00000900: PUSH2 0x0002 00000903: JUMPI 00000904: SWAP1 00000905: PUSH1 0x00 00000907: MSTORE 00000908: PUSH1 0x20 0000090a: PUSH1 0x00 0000090c: KECCAK256 0000090d: SWAP1 0000090e: PUSH1 0x02 00000910: MUL 00000911: ADD 00000912: PUSH1 0x00 00000914: SWAP2 00000915: POP 00000916: SWAP1 00000917: POP 00000918: DUP1 00000919: PUSH1 0x00 0000091b: ADD 0000091c: PUSH1 0x00 0000091e: SWAP1 0000091f: SLOAD 00000920: SWAP1 00000921: PUSH2 0x0100 00000924: EXP 00000925: SWAP1 00000926: DIV 00000927: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000093c: AND 0000093d: SWAP1 0000093e: DUP1 0000093f: PUSH1 0x01 00000941: ADD 00000942: PUSH1 0x00 00000944: POP 00000945: SLOAD 00000946: SWAP1 00000947: POP 00000948: DUP3 00000949: JUMP 0000094a: JUMPDEST 0000094b: PUSH1 0x05 0000094d: PUSH1 0x00 0000094f: POP 00000950: SLOAD 00000951: DUP2 00000952: JUMP 00000953: JUMPDEST 00000954: PUSH1 0x03 00000956: PUSH1 0x00 00000958: POP 00000959: SLOAD 0000095a: TIMESTAMP 0000095b: LT 0000095c: ISZERO 0000095d: ISZERO 0000095e: PUSH2 0x02c9 00000961: JUMPI 00000962: PUSH2 0x028e 00000965: PUSH2 0x0497 00000968: JUMP 00000969: JUMPDEST 0000096a: PUSH1 0x00 0000096c: PUSH1 0x00 0000096e: SWAP1 0000096f: SLOAD 00000970: SWAP1 00000971: PUSH2 0x0100 00000974: EXP 00000975: SWAP1 00000976: DIV 00000977: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000098c: AND 0000098d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009a2: AND 000009a3: SELFDESTRUCT 000009a4: JUMPDEST 000009a5: JUMPDEST 000009a6: JUMP 000009a7: JUMPDEST 000009a8: PUSH1 0x00 000009aa: CALLVALUE 000009ab: GT 000009ac: ISZERO 000009ad: PUSH2 0x0494 000009b0: JUMPI 000009b1: PUSH1 0x40 000009b3: PUSH1 0x40 000009b5: MLOAD 000009b6: SWAP1 000009b7: DUP2 000009b8: ADD 000009b9: PUSH1 0x40 000009bb: MSTORE 000009bc: DUP1 000009bd: CALLER 000009be: DUP2 000009bf: MSTORE 000009c0: PUSH1 0x20 000009c2: ADD 000009c3: CALLVALUE 000009c4: DUP2 000009c5: MSTORE 000009c6: PUSH1 0x20 000009c8: ADD 000009c9: POP 000009ca: PUSH1 0x04 000009cc: PUSH1 0x00 000009ce: POP 000009cf: PUSH1 0x04 000009d1: PUSH1 0x00 000009d3: POP 000009d4: DUP1 000009d5: SLOAD 000009d6: DUP1 000009d7: SWAP2 000009d8: SWAP1 000009d9: PUSH1 0x01 000009db: ADD 000009dc: SWAP1 000009dd: SWAP1 000009de: DUP2 000009df: SLOAD 000009e0: DUP2 000009e1: DUP4 000009e2: SSTORE 000009e3: DUP2 000009e4: DUP2 000009e5: ISZERO 000009e6: GT 000009e7: PUSH2 0x0378 000009ea: JUMPI 000009eb: PUSH1 0x02 000009ed: MUL 000009ee: DUP2 000009ef: PUSH1 0x02 000009f1: MUL 000009f2: DUP4 000009f3: PUSH1 0x00 000009f5: MSTORE 000009f6: PUSH1 0x20 000009f8: PUSH1 0x00 000009fa: KECCAK256 000009fb: SWAP2 000009fc: DUP3 000009fd: ADD 000009fe: SWAP2 000009ff: ADD 00000a00: PUSH2 0x0377 00000a03: SWAP2 00000a04: SWAP1 00000a05: PUSH2 0x032e 00000a08: JUMP 00000a09: JUMPDEST 00000a0a: DUP1 00000a0b: DUP3 00000a0c: GT 00000a0d: ISZERO 00000a0e: PUSH2 0x0373 00000a11: JUMPI 00000a12: PUSH1 0x00 00000a14: PUSH1 0x00 00000a16: DUP3 00000a17: ADD 00000a18: PUSH1 0x00 00000a1a: PUSH2 0x0100 00000a1d: EXP 00000a1e: DUP2 00000a1f: SLOAD 00000a20: SWAP1 00000a21: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a36: MUL 00000a37: NOT 00000a38: AND 00000a39: SWAP1 00000a3a: SSTORE 00000a3b: PUSH1 0x01 00000a3d: DUP3 00000a3e: ADD 00000a3f: PUSH1 0x00 00000a41: POP 00000a42: PUSH1 0x00 00000a44: SWAP1 00000a45: SSTORE 00000a46: POP 00000a47: PUSH1 0x01 00000a49: ADD 00000a4a: PUSH2 0x032e 00000a4d: JUMP 00000a4e: JUMPDEST 00000a4f: POP 00000a50: SWAP1 00000a51: JUMP 00000a52: JUMPDEST 00000a53: JUMPDEST 00000a54: POP 00000a55: POP 00000a56: POP 00000a57: DUP2 00000a58: SLOAD 00000a59: DUP2 00000a5a: LT 00000a5b: ISZERO 00000a5c: PUSH2 0x0002 00000a5f: JUMPI 00000a60: SWAP1 00000a61: PUSH1 0x00 00000a63: MSTORE 00000a64: PUSH1 0x20 00000a66: PUSH1 0x00 00000a68: KECCAK256 00000a69: SWAP1 00000a6a: PUSH1 0x02 00000a6c: MUL 00000a6d: ADD 00000a6e: PUSH1 0x00 00000a70: POP 00000a71: PUSH1 0x00 00000a73: DUP3 00000a74: ADD 00000a75: MLOAD 00000a76: DUP2 00000a77: PUSH1 0x00 00000a79: ADD 00000a7a: PUSH1 0x00 00000a7c: PUSH2 0x0100 00000a7f: EXP 00000a80: DUP2 00000a81: SLOAD 00000a82: DUP2 00000a83: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a98: MUL 00000a99: NOT 00000a9a: AND 00000a9b: SWAP1 00000a9c: DUP4 00000a9d: MUL 00000a9e: OR 00000a9f: SWAP1 00000aa0: SSTORE 00000aa1: POP 00000aa2: PUSH1 0x20 00000aa4: DUP3 00000aa5: ADD 00000aa6: MLOAD 00000aa7: DUP2 00000aa8: PUSH1 0x01 00000aaa: ADD 00000aab: PUSH1 0x00 00000aad: POP 00000aae: SSTORE 00000aaf: SWAP1 00000ab0: POP 00000ab1: POP 00000ab2: CALLVALUE 00000ab3: PUSH1 0x05 00000ab5: PUSH1 0x00 00000ab7: DUP3 00000ab8: DUP3 00000ab9: DUP3 00000aba: POP 00000abb: SLOAD 00000abc: ADD 00000abd: SWAP3 00000abe: POP 00000abf: POP 00000ac0: DUP2 00000ac1: SWAP1 00000ac2: SSTORE 00000ac3: POP 00000ac4: PUSH32 0x8fc4de83eddb2e6be67e269b8bfdc735778c7339168d5f734290f474f5647e14 00000ae5: CALLER 00000ae6: CALLVALUE 00000ae7: PUSH1 0x40 00000ae9: MLOAD 00000aea: DUP1 00000aeb: DUP4 00000aec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b01: AND 00000b02: DUP2 00000b03: MSTORE 00000b04: PUSH1 0x20 00000b06: ADD 00000b07: DUP3 00000b08: DUP2 00000b09: MSTORE 00000b0a: PUSH1 0x20 00000b0c: ADD 00000b0d: SWAP3 00000b0e: POP 00000b0f: POP 00000b10: POP 00000b11: PUSH1 0x40 00000b13: MLOAD 00000b14: DUP1 00000b15: SWAP2 00000b16: SUB 00000b17: SWAP1 00000b18: LOG1 00000b19: PUSH1 0x02 00000b1b: PUSH1 0x00 00000b1d: POP 00000b1e: SLOAD 00000b1f: PUSH1 0x05 00000b21: PUSH1 0x00 00000b23: POP 00000b24: SLOAD 00000b25: LT 00000b26: ISZERO 00000b27: ISZERO 00000b28: PUSH2 0x0493 00000b2b: JUMPI 00000b2c: PUSH2 0x0458 00000b2f: PUSH2 0x0497 00000b32: JUMP 00000b33: JUMPDEST 00000b34: PUSH1 0x01 00000b36: PUSH1 0x00 00000b38: SWAP1 00000b39: SLOAD 00000b3a: SWAP1 00000b3b: PUSH2 0x0100 00000b3e: EXP 00000b3f: SWAP1 00000b40: DIV 00000b41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b56: AND 00000b57: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b6c: AND 00000b6d: SELFDESTRUCT 00000b6e: JUMPDEST 00000b6f: JUMPDEST 00000b70: JUMPDEST 00000b71: JUMP 00000b72: JUMPDEST 00000b73: PUSH1 0x00 00000b75: PUSH1 0x00 00000b77: PUSH1 0x00 00000b79: SWAP2 00000b7a: POP 00000b7b: JUMPDEST 00000b7c: PUSH1 0x04 00000b7e: PUSH1 0x00 00000b80: POP 00000b81: SLOAD 00000b82: DUP3 00000b83: LT 00000b84: ISZERO 00000b85: PUSH2 0x053b 00000b88: JUMPI 00000b89: PUSH1 0x04 00000b8b: PUSH1 0x00 00000b8d: POP 00000b8e: DUP3 00000b8f: DUP2 00000b90: SLOAD 00000b91: DUP2 00000b92: LT 00000b93: ISZERO 00000b94: PUSH2 0x0002 00000b97: JUMPI 00000b98: SWAP1 00000b99: PUSH1 0x00 00000b9b: MSTORE 00000b9c: PUSH1 0x20 00000b9e: PUSH1 0x00 00000ba0: KECCAK256 00000ba1: SWAP1 00000ba2: PUSH1 0x02 00000ba4: MUL 00000ba5: ADD 00000ba6: PUSH1 0x00 00000ba8: POP 00000ba9: SWAP1 00000baa: POP 00000bab: DUP1 00000bac: PUSH1 0x00 00000bae: ADD 00000baf: PUSH1 0x00 00000bb1: SWAP1 00000bb2: SLOAD 00000bb3: SWAP1 00000bb4: PUSH2 0x0100 00000bb7: EXP 00000bb8: SWAP1 00000bb9: DIV 00000bba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bcf: AND 00000bd0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000be5: AND 00000be6: PUSH1 0x00 00000be8: DUP3 00000be9: PUSH1 0x01 00000beb: ADD 00000bec: PUSH1 0x00 00000bee: POP 00000bef: SLOAD 00000bf0: PUSH1 0x40 00000bf2: MLOAD 00000bf3: DUP1 00000bf4: SWAP1 00000bf5: POP 00000bf6: PUSH1 0x00 00000bf8: PUSH1 0x40 00000bfa: MLOAD 00000bfb: DUP1 00000bfc: DUP4 00000bfd: SUB 00000bfe: DUP2 00000bff: DUP6 00000c00: DUP9 00000c01: DUP9 00000c02: CALL 00000c03: SWAP4 00000c04: POP 00000c05: POP 00000c06: POP 00000c07: POP 00000c08: POP 00000c09: JUMPDEST 00000c0a: DUP2 00000c0b: DUP1 00000c0c: PUSH1 0x01 00000c0e: ADD 00000c0f: SWAP3 00000c10: POP 00000c11: POP 00000c12: PUSH2 0x04a0 00000c15: JUMP 00000c16: JUMPDEST 00000c17: JUMPDEST 00000c18: POP 00000c19: POP 00000c1a: JUMP
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | reentrancy | codex | Reentrant payout loop can recurse into finalization and sweep remaining funds | 85 | no | — |
viewevidence_json{
"evidence": "In the child runtime, selector 0x119f8747 appends (caller,msg.value) into the slot-4 array and updates slot5; when slot5 exceeds slot2 it jumps into the payout routine at pc 0xb2c. The payout routine iterates storage-backed recipients and executes CALL at pc 0xc02 with no guard or state freeze before the external interaction. Selector 0x86d1a69f also routes into the same payout routine before a SELFDESTRUCT path. From bytecode alone I cannot prove exploit profitability in every deployment, but the reentrant control flow is present.",
"locations": [
"selector:0x119f8747",
"selector:0x86d1a69f",
"pc:0xb2c",
"pc:0xc02"
],
"recommendation": "Do not perform push-based payouts and self-destruction in the same execution path. Set a finalized/reentrancy-lock flag before the first external call, or switch to a pull-payment model where recipients withdraw individually after finalization.",
"exploit_scenario": "The embedded child contract pays recorded recipients via a raw CALL. A malicious recipient contract can reenter during its payout and call the payable entrypoint again with a small amount. Because that entrypoint itself checks the threshold and can immediately re-enter the payout/selfdestruct path, the attacker can trigger recursive finalization before the outer loop finishes, potentially causing incomplete payouts and sweeping residual ETH to the configured sink address."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x8ebb1bc5bcfc076f8384c587edd0245813eb71403aec99ac5beefad3b2f54401
call_targets:
0x40c3506a8446bb5d806fe0030d451142c8044f77
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8ebb1bc5bcfc076f8384c587edd0245813eb71403aec99ac5beefad3b2f54401",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x40c3506a8446bb5d806fe0030d451142c8044f77"
],
"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": "0x9e39db73",
"selector": "0x9e39db73",
"calldata_variants": [
"0x9e39db73",
"0x9e39db730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0fe65b36",
"selector": "0x0fe65b36",
"calldata_variants": [
"0x0fe65b36",
"0x0fe65b360000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x66d003ac",
"selector": "0x66d003ac",
"calldata_variants": [
"0x66d003ac",
"0x66d003ac0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x86d1a69f",
"selector": "0x86d1a69f",
"calldata_variants": [
"0x86d1a69f",
"0x86d1a69f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb91d4001",
"selector": "0xb91d4001",
"calldata_variants": [
"0xb91d4001",
"0xb91d40010000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xea8a1af0",
"selector": "0xea8a1af0",
"calldata_variants": [
"0xea8a1af0",
"0xea8a1af00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3074,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x8ebb1bc5bcfc076f8384c587edd0245813eb71403aec99ac5beefad3b2f54401
call_targets:
0x40c3506a8446bb5d806fe0030d451142c8044f77
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x8ebb1bc5bcfc076f8384c587edd0245813eb71403aec99ac5beefad3b2f54401",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x40c3506a8446bb5d806fe0030d451142c8044f77"
],
"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": "0x9e39db73",
"selector": "0x9e39db73",
"calldata_variants": [
"0x9e39db73",
"0x9e39db730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0fe65b36",
"selector": "0x0fe65b36",
"calldata_variants": [
"0x0fe65b36",
"0x0fe65b360000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x66d003ac",
"selector": "0x66d003ac",
"calldata_variants": [
"0x66d003ac",
"0x66d003ac0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x86d1a69f",
"selector": "0x86d1a69f",
"calldata_variants": [
"0x86d1a69f",
"0x86d1a69f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb91d4001",
"selector": "0xb91d4001",
"calldata_variants": [
"0xb91d4001",
"0xb91d40010000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xea8a1af0",
"selector": "0xea8a1af0",
"calldata_variants": [
"0xea8a1af0",
"0xea8a1af00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3074,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| medium | other | detector | SELFDESTRUCT reachable | 45 | no | no |
viewtrace_id: 0x0be20107aaf59795ef361acbe60c8e28eb5a0ed52b0ed73d5f0c19705edbfb6e
validation_json{
"sink": "SELFDESTRUCT",
"errors": 0,
"status": "unknown",
"attempts": 28,
"trace_id": "0x0be20107aaf59795ef361acbe60c8e28eb5a0ed52b0ed73d5f0c19705edbfb6e",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x9e39db73",
"selector": "0x9e39db73",
"calldata_variants": [
"0x9e39db73",
"0x9e39db730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0fe65b36",
"selector": "0x0fe65b36",
"calldata_variants": [
"0x0fe65b36",
"0x0fe65b360000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x66d003ac",
"selector": "0x66d003ac",
"calldata_variants": [
"0x66d003ac",
"0x66d003ac0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x86d1a69f",
"selector": "0x86d1a69f",
"calldata_variants": [
"0x86d1a69f",
"0x86d1a69f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb91d4001",
"selector": "0xb91d4001",
"calldata_variants": [
"0xb91d4001",
"0xb91d40010000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xea8a1af0",
"selector": "0xea8a1af0",
"calldata_variants": [
"0xea8a1af0",
"0xea8a1af00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 1194,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1348,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"selfdestruct_count": 5
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | yes | yes |
viewtrace_id: 0xdfc14e73190fd2ae6e0e8eb1ef89b7ab40c1024754c376bdd1febd343a4191d7
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "confirmed",
"attempts": 3,
"trace_id": "0xdfc14e73190fd2ae6e0e8eb1ef89b7ab40c1024754c376bdd1febd343a4191d7",
"confirmed": true,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "sink_reached"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x9e39db73",
"selector": "0x9e39db73",
"calldata_variants": [
"0x9e39db73",
"0x9e39db730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0fe65b36",
"selector": "0x0fe65b36",
"calldata_variants": [
"0x0fe65b36",
"0x0fe65b360000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x66d003ac",
"selector": "0x66d003ac",
"calldata_variants": [
"0x66d003ac",
"0x66d003ac0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x86d1a69f",
"selector": "0x86d1a69f",
"calldata_variants": [
"0x86d1a69f",
"0x86d1a69f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8da5cb5b",
"selector": "0x8da5cb5b",
"calldata_variants": [
"0x8da5cb5b",
"0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb91d4001",
"selector": "0xb91d4001",
"calldata_variants": [
"0xb91d4001",
"0xb91d40010000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xea8a1af0",
"selector": "0xea8a1af0",
"calldata_variants": [
"0xea8a1af0",
"0xea8a1af00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 2,
"create2_count": 0
}
|
| medium | other | codex | Unchecked low-level ETH sends can permanently skip payouts | 75 | no | — |
viewevidence_json{
"evidence": "At pc 0xc02 the payout loop performs a raw CALL using the stored recipient address and amount. The returned success value is immediately discarded (pc 0xc03 onward pops the result and continues the loop), and there is no failure branch or retry accounting. The same child contract has SELFDESTRUCT finalization paths after payout completion, so skipped transfers are not recoverably tracked. This is inferred from bytecode; returndata handling is unknown because no explicit checks are present.",
"locations": [
"pc:0xc02",
"selector:0x119f8747",
"selector:0x86d1a69f"
],
"recommendation": "Check the CALL success bit and revert or record unpaid balances for later withdrawal. Avoid sweeping remaining balance with SELFDESTRUCT after partial-send failures.",
"exploit_scenario": "If any recorded recipient is a contract that reverts on receive or otherwise causes the low-level send to fail, the payout loop continues anyway. The unpaid amount then remains inside the contract until the surrounding finalization path selfdestructs the contract to a sink address, so the intended recipient can lose funds permanently."
}
|
| medium | upgradeability | codex | Privileged destroy/migrate path can replace the live contract by creating a child and selfdestructing | 75 | no | — |
viewevidence_json{
"evidence": "The outer runtime compares CALLER against the slot0 address at pc 0x4aa and 0x544. One privileged path reaches SELFDESTRUCT at pc 0x500. Another privileged path builds embedded init code, executes CREATE at pc 0x603, and then immediately SELFDESTRUCTs to the newly created address at pc 0x61d. This is not a standard proxy, but it is still a powerful privileged migration mechanism visible in bytecode.",
"locations": [
"selector:0xea8a1af0",
"selector:0x0fe65b36",
"pc:0x4aa",
"pc:0x544",
"pc:0x603",
"pc:0x61d"
],
"recommendation": "If this lifecycle control is intentional, protect it with a timelock and multisig and document it clearly. Otherwise remove direct SELFDESTRUCT-based migration/kill functionality.",
"exploit_scenario": "A privileged controller stored in slot0 can invoke the outer contract's owner-checked lifecycle functions to either selfdestruct directly or deploy an embedded child contract and immediately selfdestruct into it. If that controller is compromised or behaves maliciously, users can lose availability and have funds forcibly migrated out of the current contract."
}
|