019b3836-37bb-71d2-9811-79d9de3d6ebf
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 |
|---|---|---|---|---|
| 3803 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 3804 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 47008 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 47009 | capability.graph | complete | 1 / 3 | 1 week ago |
| 47010 | detector.run | complete | 1 / 3 | 1 week ago |
| 47011 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113276 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"Conservative bytecode-only review found two medium-confidence issues. The contract routes all ERC20-like operations through a mutable external backend stored in slot 0x1, and the same slot also anchors privileged authorization. Separately, every backend CALL decodes a 32-byte return value without returndata-length or code-existence checks, so misconfigured or non-compliant targets can produce false success or bogus reads. No delegatecall/proxy-slot write issue was evidenced in the runtime analyzed.","findings":[{"severity":"medium","category":"access_control","title":"Privileged authority is coupled to the live external backend","exploit_scenario":"Best-effort bytecode inference shows slot 0x1 is both the backend called by normal token entrypoints and the authority consulted by privileged paths. If that backend is malicious, upgraded unsafely, or compromised, a routine user call can trigger a callback from the backend into this wrapper; because the backend is also the trusted authority, the callback can pass auth and rewrite the backend/mode or emit arbitrary ERC20 events, permanently redirecting the wrapper or falsifying logs.","recommendation":"Separate authorization from the mutable backend address. Store owner/authority independently from the token backend, and do not let the currently called backend satisfy privileged checks. Adding explicit non-reentrant protection around privileged configuration/event-only functions would further reduce callback risk.","evidence":"Slot 0x1 is loaded as the CALL target for all externally exposed token-style wrappers (`pc:0x5e6`, `pc:0x69d`, `pc:0x774`, `pc:0x854`, `pc:0x952`, `pc:0xa33`, `pc:0xbbf`). The auth routine at `pc:0xa52` also uses slot 0x1: in one mode it accepts `msg.sender == slot1`, and in the other it calls `0xb7009613`, which matches `canCall(address,address,bytes4)`, on slot 0x1 (`pc:0xb16`). Privileged selectors `0x7e1db2a1` and `0x92eefe9b` then write slot 0x1 directly (`pc:0x348`, `pc:0x3ee`).","locations":["pc:0xa52","pc:0xb16","pc:0x348","pc:0x3ee","pc:0x5e6","pc:0x69d","pc:0x774","pc:0x854","pc:0x952","pc:0xa33","pc:0xbbf","selector:0x7e1db2a1","selector:0x92eefe9b"]},{"severity":"medium","category":"other","title":"Backend CALL return data is decoded without length or interface validation","exploit_scenario":"If slot 0x1 is set to an EOA, to this contract itself, or to a contract that returns short or empty data, the low-level CALL can still succeed. The wrapper then reads 32 bytes from memory and returns that as a bool/uint/address result. Because the code reuses the same memory region for call input and output, stale calldata words can be reported as successful `transfer`/`approve` results or as bogus balances/allowances/total supply.","recommendation":"Validate slot 0x1 before storing it: reject zero/EOA/self targets and require expected code/interface support. After each external CALL, check returndata length before decoding, and revert on empty or malformed responses instead of blindly `MLOAD`ing the output buffer.","evidence":"Every external backend invocation requests a fixed 32-byte output and immediately loads it from memory after CALL success, with no visible `RETURNDATASIZE` check and no code-existence check before the call (`pc:0x5ef`-`pc:0x5f3`, `pc:0x6a6`-`pc:0x6aa`, `pc:0x77d`-`pc:0x781`, `pc:0x85d`-`pc:0x861`, `pc:0x95b`-`pc:0x95f`, `pc:0xa3c`-`pc:0xa40`, `pc:0xbc8`-`pc:0xbcc`). The config setters inferred from selectors `0x7e1db2a1` and `0x92eefe9b` store arbitrary addresses into slot 0x1 without any visible contract/interface validation (`pc:0x348`, `pc:0x3ee`).","locations":["pc:0x5ef","pc:0x6a6","pc:0x77d","pc:0x85d","pc:0x95b","pc:0xa3c","pc:0xbc8","pc:0x348","pc:0x3ee","selector:0x7e1db2a1","selector:0x92eefe9b"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-g936cym_
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5bfb-8d2b-70e1-b111-a1ee02a965df
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.
Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
→ Inspect BYTECODE_BUNDLE.json and related artifacts to understand bytecode, selectors, storage, and detector outputs
• Assess likely security issues from runtime bytecode evidence with conservative severity and explicit uncertainty
• Produce JSON audit findings matching the required schema
exec
/bin/bash -lc pwd in /tmp/codex-g936cym_
succeeded in 0ms:
/tmp/codex-g936cym_
exec
/bin/bash -lc 'rg --files' in /tmp/codex-g936cym_
succeeded in 0ms:
codex-output-schema.json
BYTECODE_BUNDLE.json
exec
/bin/bash -lc "sed -n '1,260p' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
{
"analysis_artifact": {
"address": "0xc66ea802717bfb9833400264dd12c2bceaa34a6d",
"artifact_hash": "0x1606f3bd5d9fb1df3c0350d2f21564228145d29a02f1c33270bedce5c6271f71",
"artifact_json": {
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"basic_blocks": [
{
"end_pc": 10,
"hash": "0x8707fb847587a17eebc1e102cecb330d4092cae78bfef09d441df6ca228003e1",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"CALLDATASIZE",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 0
},
{
"end_pc": 56,
"hash": "0xdffb8e1cdf9d0372d5d5c35443b07aa5e27508ea1dacd8444f4fd82f3e5e125e",
"opcodes": [
"PUSH1",
"CALLDATALOAD",
"PUSH29",
"OP_90",
"DIV",
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 11
},
{
"end_pc": 67,
"hash": "0x0e68c62685aac72c23ba5517273d1558f0787046915f4525f1a110d90ce060c1",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 57
},
{
"end_pc": 78,
"hash": "0xf09d4ccf8e7fb96af15a36cf3a3757886b7fc54ddcde19375016f2133612012d",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 68
},
{
"end_pc": 89,
"hash": "0x6816d17a68537e88f33ab578f54cee7c8376d6578db5134834956b2208362631",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 79
},
{
"end_pc": 100,
"hash": "0x2654216f680d49c9c612dfe8c6899e29b13269d7459944acbace80a933a50178",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 90
},
{
"end_pc": 111,
"hash": "0xc03c1bdf747646d594eadb71b6af9efc44c6a82a6ea9a1173759d75cf163a18a",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 101
},
{
"end_pc": 122,
"hash": "0x77bc7690c8f0f0cc319bfb4eb0f7d3b36b89c0ad3e45216c3758be0464fa2dcc",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 112
},
{
"end_pc": 133,
"hash": "0x47902d2c10d333306f354eef555c1b262b0d362d2e596c5eeaf00debbd402186",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 123
},
{
"end_pc": 144,
"hash": "0x5ecdecf104e06d8fd1359a4582a4966381617017540215dc8016752aa2553896",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 134
},
{
"end_pc": 155,
"hash": "0x26d93a1a331ca04fb0c1a615d822adb74de398e58d364e5ba09ce62c403ff079",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 145
},
{
"end_pc": 166,
"hash": "0x4606fbcc46b74b67f43562e9b03e4ea842e25e1864bf9e11b4368f620548bf6c",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 156
},
{
"end_pc": 177,
"hash": "0x29003cc5ab99fb2b20fd7ca32d4fd0aa33aec1c8b7d91b99b187bd7ef71857f5",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 167
},
{
"end_pc": 188,
"hash": "0xa5ed245cdd12d4951db21763e84048ba81bdbeff0560eef9840c3f0b216ba4da",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 178
},
{
"end_pc": 192,
"hash": "0xdfa62202f3e379ed7aee45db829106e6ef33418b69b966f521abe6d2099502f0",
"opcodes": [
"PUSH2",
"JUMP"
],
"start_pc": 189
},
{
"end_pc": 194,
"hash": "0xb63e7795bdf2ea7d0402180fb5cdcbb8ba0d843e01b80a93e71c5720008cf5ad",
"opcodes": [
"JUMPDEST",
"STOP"
],
"start_pc": 193
},
{
"end_pc": 225,
"hash": "0x74087f337e5ec5816be824498abb6e6647c6af2353ebf29c15192cc2c9bb0845",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"OP_80",
"OP_80",
"CALLDATALOAD",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"OP_91",
"OP_90",
"OP_80",
"CALLDATALOAD",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"OP_91",
"OP_90",
"POP",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 195
},
{
"end_pc": 247,
"hash": "0x770090c3c9c3e392db02643b4fca573a16bb9b5ec031dedaf856473c272c6720",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
exec
/bin/bash -lc "sed -n '1,220p' codex-output-schema.json" in /tmp/codex-g936cym_
succeeded in 0ms:
{"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
exec
/bin/bash -lc "jq 'keys, .analysis_artifact.artifact_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
[
0,
1,
2,
3,
4,
5
]
[
"auth",
"basic_blocks",
"callsites",
"cfg_edges",
"cfg_hash",
"dispatcher_type",
"function_entries",
"functions",
"selectors",
"sinks",
"storage",
"version"
]
exec
/bin/bash -lc "jq '.[0]' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
exited 5 in 0ms:
jq: error (at BYTECODE_BUNDLE.json:5396): Cannot index object with number
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors, .analysis_artifact.artifact_json.function_entries, .analysis_artifact.artifact_json.callsites, .analysis_artifact.artifact_json.sinks, .analysis_artifact.artifact_json.storage, .analysis_artifact.artifact_json.functions, .analysis_artifact.artifact_json.auth' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
[
"0x095ea7b3",
"0x18160ddd",
"0x23b872dd",
"0x23de6651",
"0x3018205f",
"0x5687f2b8",
"0x70a08231",
"0x7e1db2a1",
"0x92eefe9b",
"0xa9059cbb",
"0xc2205ee1",
"0xd551f601",
"0xdd62ed3e"
]
[
{
"entry_pc": 404098525,
"selector": "0x095ea7b3"
},
{
"entry_pc": 599290589,
"selector": "0x18160ddd"
},
{
"entry_pc": 601777745,
"selector": "0x23b872dd"
},
{
"entry_pc": 806887519,
"selector": "0x23de6651"
},
{
"entry_pc": 1451750072,
"selector": "0x3018205f"
},
{
"entry_pc": 1889567281,
"selector": "0x5687f2b8"
},
{
"entry_pc": 2115875489,
"selector": "0x70a08231"
},
{
"entry_pc": 2465136283,
"selector": "0x7e1db2a1"
},
{
"entry_pc": 2835717307,
"selector": "0x92eefe9b"
},
{
"entry_pc": 3256901345,
"selector": "0xa9059cbb"
},
{
"entry_pc": 3578918401,
"selector": "0xc2205ee1"
},
{
"entry_pc": 3714247998,
"selector": "0xd551f601"
},
{
"entry_pc": null,
"selector": "0xdd62ed3e"
}
]
[
{
"opcode": "CALL",
"pc": 1510,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1693,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1908,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 2132,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 2386,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 2611,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 3007,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
]
{
"call": 7,
"create": 0,
"create2": 0,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0,
"upgrade_slot_write_suspected": false
}
{
"keccak_count": 0,
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
[
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 404098525,
"selector": "0x095ea7b3",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 599290589,
"selector": "0x18160ddd",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 601777745,
"selector": "0x23b872dd",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 806887519,
"selector": "0x23de6651",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1451750072,
"selector": "0x3018205f",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1889567281,
"selector": "0x5687f2b8",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 2115875489,
"selector": "0x70a08231",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 2465136283,
"selector": "0x7e1db2a1",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 2835717307,
"selector": "0x92eefe9b",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 3256901345,
"selector": "0xa9059cbb",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 3578918401,
"selector": "0xc2205ee1",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 3714247998,
"selector": "0xd551f601",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
},
{
"auth": {
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": null,
"selector": "0xdd62ed3e",
"sinks": {
"call": 7,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 1027,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1046,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1086,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1393,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1546,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1731,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1947,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2171,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2426,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2652,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2674,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 2764,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2786,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
}
}
]
{
"guards": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
exec
/bin/bash -lc "jq 'keys' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
[
"analysis_artifact",
"analysis_run",
"artifact",
"capability_graph",
"detector_findings",
"heuristics_summary"
]
exec
/bin/bash -lc "jq '.artifact | {runtime_bytecode_len: (.runtime_bytecode|length), creation_bytecode_len: (.creation_bytecode|length), chain_id, deployed_block, source_map_present, abi_present, metadata_keys: (keys - [\"runtime_bytecode\",\"creation_bytecode\"]) }' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
{
"runtime_bytecode_len": 5,
"creation_bytecode_len": 0,
"chain_id": null,
"deployed_block": null,
"source_map_present": null,
"abi_present": null,
"metadata_keys": [
"codehash",
"compiler_json",
"implementation_address",
"is_proxy",
"verified_source"
]
}
exec
/bin/bash -lc "jq '.detector_findings' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
[
{
"confidence": 45,
"evidence_json": {
"call_count": 7,
"examples": [
{
"opcode": "CALL",
"pc": 1510,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1693,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1908,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 7
},
"normalized_json": {
"sink": "CALL"
},
"severity": "medium",
"title": "Untrusted CALL target/value reachable",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x77a79a78c56504c6c1f7499852b6e1918a6d0ab4",
"0x96477a1c968a0e64e53b7ed01d0d6e4a311945c2",
"0xbaf42749e027bb38ce4f23ddae8c84da8a15488f",
"0xc66ea802717bfb9833400264dd12c2bceaa34a6d"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0x4c6039fa534935c141f27cf080fee53f2bab6812c93dca9c53f00438c305071d",
"trace_mode": "callTracer"
}
},
{
"confidence": 40,
"evidence_json": {
"eth_value_calls": 7,
"examples": [
{
"opcode": "CALL",
"pc": 1510,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1693,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1908,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"normalized_json": {
"sink": "CALL",
"value": "nonzero"
},
"severity": "medium",
"title": "ETH value transfer possible",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x77a79a78c56504c6c1f7499852b6e1918a6d0ab4",
"0x96477a1c968a0e64e53b7ed01d0d6e4a311945c2",
"0xbaf42749e027bb38ce4f23ddae8c84da8a15488f",
"0xc66ea802717bfb9833400264dd12c2bceaa34a6d"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0x4c6039fa534935c141f27cf080fee53f2bab6812c93dca9c53f00438c305071d",
"trace_mode": "callTracer"
}
}
]
exec
/bin/bash -lc "jq '.heuristics_summary, .capability_graph' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
{
"create2_count": 0,
"delegatecall_count": 0,
"flags": [],
"selfdestruct_count": 0
}
{
"address": "0xc66ea802717bfb9833400264dd12c2bceaa34a6d",
"block_number": null,
"chain_id": 1,
"codehash": "0x4ef03bb8b5844e789b18f8e73e6698e7b14de90b9f9b347200666c30e3f5e0c9",
"created_at": "2026-04-04T19:56:48.000000Z",
"graph_hash": "0xb125423ea1ec0fa9df424fe8d60cfa17ced5dec9f800cd3a57dbae01e74fc943",
"graph_json": {
"edges": [
{
"from": "bb:0",
"to": "bb:193",
"type": "control_flow"
},
{
"from": "bb:0",
"to": "bb:11",
"type": "control_flow_fallthrough"
},
{
"from": "bb:11",
"to": "bb:195",
"type": "control_flow"
},
{
"from": "bb:11",
"to": "bb:57",
"type": "control_flow_fallthrough"
},
{
"from": "bb:57",
"to": "bb:248",
"type": "control_flow"
},
{
"from": "bb:57",
"to": "bb:68",
"type": "control_flow_fallthrough"
},
{
"from": "bb:68",
"to": "bb:283",
"type": "control_flow"
},
{
"from": "bb:68",
"to": "bb:79",
"type": "control_flow_fallthrough"
},
{
"from": "bb:79",
"to": "bb:345",
"type": "control_flow"
},
{
"from": "bb:79",
"to": "bb:90",
"type": "control_flow_fallthrough"
},
{
"from": "bb:90",
"to": "bb:387",
"type": "control_flow"
},
{
"from": "bb:90",
"to": "bb:101",
"type": "control_flow_fallthrough"
},
{
"from": "bb:101",
"to": "bb:444",
"type": "control_flow"
},
{
"from": "bb:101",
"to": "bb:112",
"type": "control_flow_fallthrough"
},
{
"from": "bb:112",
"to": "bb:486",
"type": "control_flow"
},
{
"from": "bb:112",
"to": "bb:123",
"type": "control_flow_fallthrough"
},
{
"from": "bb:123",
"to": "bb:530",
"type": "control_flow"
},
{
"from": "bb:123",
"to": "bb:134",
"type": "control_flow_fallthrough"
},
{
"from": "bb:134",
"to": "bb:563",
"type": "control_flow"
},
{
"from": "bb:134",
"to": "bb:145",
"type": "control_flow_fallthrough"
},
{
"from": "bb:145",
"to": "bb:587",
"type": "control_flow"
},
{
"from": "bb:145",
"to": "bb:156",
"type": "control_flow_fallthrough"
},
{
"from": "bb:156",
"to": "bb:640",
"type": "control_flow"
},
{
"from": "bb:156",
"to": "bb:167",
"type": "control_flow_fallthrough"
},
{
"from": "bb:167",
"to": "bb:697",
"type": "control_flow"
},
{
"from": "bb:167",
"to": "bb:178",
"type": "control_flow_fallthrough"
},
{
"from": "bb:178",
"to": "bb:732",
"type": "control_flow"
},
{
"from": "bb:178",
"to": "bb:189",
"type": "control_flow_fallthrough"
},
{
"from": "bb:189",
"to": "bb:193",
"type": "control_flow"
},
{
"from": "bb:195",
"to": "bb:2418",
"type": "control_flow"
},
{
"from": "bb:248",
"to": "bb:1385",
"type": "control_flow"
},
{
"from": "bb:283",
"to": "bb:2163",
"type": "control_flow"
},
{
"from": "bb:345",
"to": "bb:1125",
"type": "control_flow"
},
{
"from": "bb:387",
"to": "bb:1078",
"type": "control_flow"
},
{
"from": "bb:444",
"to": "bb:1255",
"type": "control_flow"
},
{
"from": "bb:486",
"to": "bb:1538",
"type": "control_flow"
},
{
"from": "bb:530",
"to": "bb:785",
"type": "control_flow"
},
{
"from": "bb:563",
"to": "bb:951",
"type": "control_flow"
},
{
"from": "bb:587",
"to": "bb:1939",
"type": "control_flow"
},
{
"from": "bb:640",
"to": "bb:1040",
"type": "control_flow"
},
{
"from": "bb:697",
"to": "bb:1021",
"type": "control_flow"
},
{
"from": "bb:732",
"to": "bb:1723",
"type": "control_flow"
},
{
"from": "bb:785",
"to": "bb:2642",
"type": "control_flow"
},
{
"from": "bb:793",
"to": "bb:941",
"type": "control_flow"
},
{
"from": "bb:793",
"to": "bb:799",
"type": "control_flow_fallthrough"
},
{
"from": "bb:799",
"to": "bb:946",
"type": "control_flow"
},
{
"from": "bb:946",
"to": "bb:947",
"type": "control_flow_fallthrough"
},
{
"from": "bb:951",
"to": "bb:2642",
"type": "control_flow"
},
{
"from": "bb:959",
"to": "bb:1012",
"type": "control_flow"
},
{
"from": "bb:959",
"to": "bb:965",
"type": "control_flow_fallthrough"
},
{
"from": "bb:965",
"to": "bb:1017",
"type": "control_flow"
},
{
"from": "bb:1017",
"to": "bb:1018",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1078",
"to": "bb:1122",
"type": "control_flow"
},
{
"from": "bb:1125",
"to": "bb:2642",
"type": "control_flow"
},
{
"from": "bb:1133",
"to": "bb:1244",
"type": "control_flow"
},
{
"from": "bb:1133",
"to": "bb:1139",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1139",
"to": "bb:1249",
"type": "control_flow"
},
{
"from": "bb:1249",
"to": "bb:1250",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1255",
"to": "bb:2642",
"type": "control_flow"
},
{
"from": "bb:1263",
"to": "bb:1374",
"type": "control_flow"
},
{
"from": "bb:1263",
"to": "bb:1269",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1269",
"to": "bb:1379",
"type": "control_flow"
},
{
"from": "bb:1379",
"to": "bb:1380",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1385",
"to": "bb:1516",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1516",
"to": "bb:1535",
"type": "control_flow"
},
{
"from": "bb:1538",
"to": "bb:1699",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1699",
"to": "bb:1718",
"type": "control_flow"
},
{
"from": "bb:1723",
"to": "bb:1914",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1914",
"to": "bb:1933",
"type": "control_flow"
},
{
"from": "bb:1939",
"to": "bb:2138",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2138",
"to": "bb:2157",
"type": "control_flow"
},
{
"from": "bb:2163",
"to": "bb:2392",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2392",
"to": "bb:2411",
"type": "control_flow"
},
{
"from": "bb:2418",
"to": "bb:2617",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2617",
"to": "bb:2636",
"type": "control_flow"
},
{
"from": "bb:2642",
"to": "bb:2756",
"type": "control_flow"
},
{
"from": "bb:2642",
"to": "bb:2669",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2669",
"to": "bb:3037",
"type": "control_flow"
},
{
"from": "bb:2756",
"to": "bb:3032",
"type": "control_flow"
},
{
"from": "bb:2756",
"to": "bb:2781",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2781",
"to": "bb:3013",
"type": "control_flow_fallthrough"
},
{
"from": "bb:3013",
"to": "bb:3037",
"type": "control_flow"
},
{
"from": "fn:0x095ea7b3",
"to": "bb:404098525",
"type": "entry"
},
{
"from": "fn:0x18160ddd",
"to": "bb:599290589",
"type": "entry"
},
{
"from": "fn:0x23b872dd",
"to": "bb:601777745",
"type": "entry"
},
{
"from": "fn:0x23de6651",
"to": "bb:806887519",
"type": "entry"
},
{
"from": "fn:0x3018205f",
"to": "bb:1451750072",
"type": "entry"
},
{
"from": "fn:0x5687f2b8",
"to": "bb:1889567281",
"type": "entry"
},
{
"from": "fn:0x70a08231",
"to": "bb:2115875489",
"type": "entry"
},
{
"from": "fn:0x7e1db2a1",
"to": "bb:2465136283",
"type": "entry"
},
{
"from": "fn:0x92eefe9b",
"to": "bb:2835717307",
"type": "entry"
},
{
"from": "fn:0xa9059cbb",
"to": "bb:3256901345",
"type": "entry"
},
{
"from": "fn:0xc2205ee1",
"to": "bb:3578918401",
"type": "entry"
},
{
"from": "fn:0xd551f601",
"to": "bb:3714247998",
"type": "entry"
},
{
"from": "bb:1385",
"to": "call:1510",
"type": "contains"
},
{
"from": "call:1510",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1538",
"to": "call:1693",
"type": "contains"
},
{
"from": "call:1693",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1723",
"to": "call:1908",
"type": "contains"
},
{
"from": "call:1908",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1939",
"to": "call:2132",
"type": "contains"
},
{
"from": "call:2132",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:2163",
"to": "call:2386",
"type": "contains"
},
{
"from": "call:2386",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:2418",
"to": "call:2611",
"type": "contains"
},
{
"from": "call:2611",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:2781",
"to": "call:3007",
"type": "contains"
},
{
"from": "call:3007",
"to": "sink:call",
"type": "capability"
}
],
"nodes": [
{
"end_pc": 10,
"hash": "0x8707fb847587a17eebc1e102cecb330d4092cae78bfef09d441df6ca228003e1",
"id": "bb:0",
"start_pc": 0,
"type": "basic_block"
},
{
"end_pc": 56,
"hash": "0xdffb8e1cdf9d0372d5d5c35443b07aa5e27508ea1dacd8444f4fd82f3e5e125e",
"id": "bb:11",
"start_pc": 11,
"type": "basic_block"
},
{
"end_pc": 67,
"hash": "0x0e68c62685aac72c23ba5517273d1558f0787046915f4525f1a110d90ce060c1",
"id": "bb:57",
"start_pc": 57,
"type": "basic_block"
},
{
"end_pc": 78,
"hash": "0xf09d4ccf8e7fb96af15a36cf3a3757886b7fc54ddcde19375016f2133612012d",
"id": "bb:68",
"start_pc": 68,
"type": "basic_block"
},
{
"end_pc": 89,
"hash": "0x6816d17a68537e88f33ab578f54cee7c8376d6578db5134834956b2208362631",
"id": "bb:79",
"start_pc": 79,
"type": "basic_block"
},
{
"end_pc": 100,
"hash": "0x2654216f680d49c9c612dfe8c6899e29b13269d7459944acbace80a933a50178",
"id": "bb:90",
"start_pc": 90,
"type": "basic_block"
},
{
"end_pc": 111,
"hash": "0xc03c1bdf747646d594eadb71b6af9efc44c6a82a6ea9a1173759d75cf163a18a",
"id": "bb:101",
"start_pc": 101,
"type": "basic_block"
},
{
"end_pc": 122,
"hash": "0x77bc7690c8f0f0cc319bfb4eb0f7d3b36b89c0ad3e45216c3758be0464fa2dcc",
"id": "bb:112",
"start_pc": 112,
"type": "basic_block"
},
{
"end_pc": 133,
"hash": "0x47902d2c10d333306f354eef555c1b262b0d362d2e596c5eeaf00debbd402186",
"id": "bb:123",
"start_pc": 123,
"type": "basic_block"
},
{
"end_pc": 144,
"hash": "0x5ecdecf104e06d8fd1359a4582a4966381617017540215dc8016752aa2553896",
"id": "bb:134",
"start_pc": 134,
"type": "basic_block"
},
{
"end_pc": 155,
"hash": "0x26d93a1a331ca04fb0c1a615d822adb74de398e58d364e5ba09ce62c403ff079",
"id": "bb:145",
"start_pc": 145,
"type": "basic_block"
},
{
"end_pc": 166,
"hash": "0x4606fbcc46b74b67f43562e9b03e4ea842e25e1864bf9e11b4368f620548bf6c",
"id": "bb:156",
"start_pc": 156,
"type": "basic_block"
},
{
"end_pc": 177,
"hash": "0x29003cc5ab99fb2b20fd7ca32d4fd0aa33aec1c8b7d91b99b187bd7ef71857f5",
"id": "bb:167",
"start_pc": 167,
"type": "basic_block"
},
{
"end_pc": 188,
"hash": "0xa5ed245cdd12d4951db21763e84048ba81bdbeff0560eef9840c3f0b216ba4da",
"id": "bb:178",
"start_pc": 178,
"type": "basic_block"
},
{
"end_pc": 192,
"hash": "0xdfa62202f3e379ed7aee45db829106e6ef33418b69b966f521abe6d2099502f0",
"id": "bb:189",
"start_pc": 189,
"type": "basic_block"
},
{
"end_pc": 194,
"hash": "0xb63e7795bdf2ea7d0402180fb5cdcbb8ba0d843e01b80a93e71c5720008cf5ad",
"id": "bb:193",
"start_pc": 193,
"type": "basic_block"
},
{
"end_pc": 225,
"hash": "0x74087f337e5ec5816be824498abb6e6647c6af2353ebf29c15192cc2c9bb0845",
"id": "bb:195",
"start_pc": 195,
"type": "basic_block"
},
{
"end_pc": 247,
"hash": "0x770090c3c9c3e392db02643b4fca573a16bb9b5ec031dedaf856473c272c6720",
"id": "bb:226",
"start_pc": 226,
"type": "basic_block"
},
{
"end_pc": 260,
"hash": "0xe7384efb9f48f9de3969126dc814f72248a977d3a2549f1b8e70b151c6baa60e",
"id": "bb:248",
"start_pc": 248,
"type": "basic_block"
},
{
"end_pc": 282,
"hash": "0xc61f189c3491f7a6c471a2b968e1948bf3cd66c52ba9f3e4f144b93da55ae3f7",
"id": "bb:261",
"start_pc": 261,
"type": "basic_block"
},
{
"end_pc": 322,
"hash": "0xd3bbd9e9110c402c45439314b82cc8029708b7a7adfdc6197ff8b06a3cd8a25e",
"id": "bb:283",
"start_pc": 283,
"type": "basic_block"
},
{
"end_pc": 344,
"hash": "0xd10fa562457b4d4d7e9f995ecfa62bb1710ef760932c7e8b339177eb798a2cda",
"id": "bb:323",
"start_pc": 323,
"type": "basic_block"
},
{
"end_pc": 384,
"hash": "0x952e683e42eb33103e533549c624f8712ff0a3b1e995faf6da78080164684b3b",
"id": "bb:345",
"start_pc": 345,
"type": "basic_block"
},
{
"end_pc": 386,
"hash": "0xa35edc3e374ed98e0a4fbf13d9a49e011257588a70fc7ae03aee5a1ae3315b96",
"id": "bb:385",
"start_pc": 385,
"type": "basic_block"
},
{
"end_pc": 399,
"hash": "0xe63b92f1a1a0ec236f9b1fc5c10727b444a9c99e0be9f073b5c20e8e4d4444ab",
"id": "bb:387",
"start_pc": 387,
"type": "basic_block"
},
{
"end_pc": 443,
"hash": "0xbede7aa0fe5afb9e088c2af94a55a0f037ee85e3e25641154530a4a9872501ae",
"id": "bb:400",
"start_pc": 400,
"type": "basic_block"
},
{
"end_pc": 483,
"hash": "0xf2f9370fd0673a98de856e9882a23dfa0b16fd915d3bc5b0752ff9b02fa6dfb6",
"id": "bb:444",
"start_pc": 444,
"type": "basic_block"
},
{
"end_pc": 485,
"hash": "0x9630c78e46184edd56ee311145006a6f872b44d9a7bd331caa83e63762e6feb0",
"id": "bb:484",
"start_pc": 484,
"type": "basic_block"
},
{
"end_pc": 507,
"hash": "0xf11f98c6246a23aebc7a8b5b3bc1d3d0eb22be7bfd6c1f4df3ffa7166e7c9c9e",
"id": "bb:486",
"start_pc": 486,
"type": "basic_block"
},
{
"end_pc": 529,
"hash": "0x90fcfed8d90a9045d9a50b100bdb53f0cf31cce8530441c738f7fbd5c7f68278",
"id": "bb:508",
"start_pc": 508,
"type": "basic_block"
},
{
"end_pc": 560,
"hash": "0x8a6d759cd3888e86bdaa2bf32b7c89c3a58b46bfdb13f0ea49fbbf13595e029f",
"id": "bb:530",
"start_pc": 530,
"type": "basic_block"
},
{
"end_pc": 562,
"hash": "0x96b7de1026dae30a13a06e85f80abf922a59bf30781950850d5662f550c71643",
"id": "bb:561",
"start_pc": 561,
"type": "basic_block"
},
{
"end_pc": 584,
"hash": "0xdbed1da77302b2c99925a4f52287dbe7bf970ba355930b31d10275990d5afc01",
"id": "bb:563",
"start_pc": 563,
"type": "basic_block"
},
{
"end_pc": 586,
"hash": "0x6ec57a605bc82f8d2f6b240e40c68a419886a17149c34076c190f959d96db81c",
"id": "bb:585",
"start_pc": 585,
"type": "basic_block"
},
{
"end_pc": 617,
"hash": "0xd2232062c966f6c3eddc8ff3580a3adcfd864521db05650410d311ba035b54cc",
"id": "bb:587",
"start_pc": 587,
"type": "basic_block"
},
{
"end_pc": 639,
"hash": "0x86721e400c0cc873f1d3bcf3c458ecadae534c9cbc0cd84608438d22eba4749c",
"id": "bb:618",
"start_pc": 618,
"type": "basic_block"
},
{
"end_pc": 652,
"hash": "0xc08d3e414c51f9dc0f8971c340ab295a5f3f164484f964132c01d3497927011f",
"id": "bb:640",
"start_pc": 640,
"type": "basic_block"
},
{
"end_pc": 696,
"hash": "0xa3763b92458edc4b6e7dc56f1ce78756048c73fb7864da18a852daef829ab495",
"id": "bb:653",
"start_pc": 653,
"type": "basic_block"
},
{
"end_pc": 709,
"hash": "0xd04a2daf22fa74f65689d84af7ef2350dc13bb5769100fa6dcf311a43cfe3629",
"id": "bb:697",
"start_pc": 697,
"type": "basic_block"
},
{
"end_pc": 731,
"hash": "0xcc153f7b5b36c098cac6980866b621ddaae86afc1b2f9e0c700489b0f46cbd2a",
"id": "bb:710",
"start_pc": 710,
"type": "basic_block"
},
{
"end_pc": 762,
"hash": "0x269df0f31f6faff7d4c391b0c707699bf621ec1804ecb3bf803594d4ef66052d",
"id": "bb:732",
"start_pc": 732,
"type": "basic_block"
},
{
"end_pc": 784,
"hash": "0x4479c0f293670a13fa2aac0f2839414284083c3006b771cd39a65058401b7282",
"id": "bb:763",
"start_pc": 763,
"type": "basic_block"
},
{
"end_pc": 792,
"hash": "0xad03dcb136c955ae5d822d293ec213aaca2f524ef4d731b8494792e61f4877fc",
"id": "bb:785",
"start_pc": 785,
"type": "basic_block"
},
{
"end_pc": 798,
"hash": "0x74592dd2299d32e7e91d54f770ae1035f82ba8d7d542bf80af909c90c6dbb538",
"id": "bb:793",
"start_pc": 793,
"type": "basic_block"
},
{
"end_pc": 940,
"hash": "0xb22d41a70f919b9b4745191bcdea55ffb8b12b9366daa3bd3766b561d7881d91",
"id": "bb:799",
"start_pc": 799,
"type": "basic_block"
},
{
"end_pc": 945,
"hash": "0x756b1171841fe4739e9e6e9ee22887c6a095bd2dee8b3b3892982627530a36e0",
"id": "bb:941",
"start_pc": 941,
"type": "basic_block"
},
{
"end_pc": 946,
"hash": "0x56787a33a2b390609e84faad4c9e11685a370745656713ffef4b6ea7e241b22a",
"id": "bb:946",
"start_pc": 946,
"type": "basic_block"
},
{
"end_pc": 950,
"hash": "0xca3c2a54d6a9b18c82323367580364ac8500c0afdab2c8d639b19b5245bcc599",
"id": "bb:947",
"start_pc": 947,
"type": "basic_block"
},
{
"end_pc": 958,
"hash": "0x7ea95c492d402e4e9f1e7483355a922630174fd2a952f6a0f8f08373aee83646",
"id": "bb:951",
"start_pc": 951,
"type": "basic_block"
},
{
"end_pc": 964,
"hash": "0x427bde054313e6cf86d01b36aae97dc0323f5db7e243d39ce7b1939462e8f6c8",
"id": "bb:959",
"start_pc": 959,
"type": "basic_block"
},
{
"end_pc": 1011,
"hash": "0x17c81fabf61e5b2ab04b3bac1300f730908372240bdf5fccecb31b7bf4f28478",
"id": "bb:965",
"start_pc": 965,
"type": "basic_block"
},
{
"end_pc": 1016,
"hash": "0xf3a91669bb25d1e881dd0d04f0e17612fc1cdfdac846bd26351a317e7c9bf8ed",
"id": "bb:1012",
"start_pc": 1012,
"type": "basic_block"
},
{
"end_pc": 1017,
"hash": "0x7fce57fa762a3138c7509bb4eef6a7b7521d8ef1fde5e5403061d167089d54a9",
"id": "bb:1017",
"start_pc": 1017,
"type": "basic_block"
},
{
"end_pc": 1020,
"hash": "0xf401ba865342e35870de7085d8717d104e588af53e5e479abcb18ff2c6ea9aa2",
"id": "bb:1018",
"start_pc": 1018,
"type": "basic_block"
},
{
"end_pc": 1039,
"hash": "0x45cad272ec9a317a15e6a835c7d2537ef52393905287640f070920dd401532dc",
"id": "bb:1021",
"start_pc": 1021,
"type": "basic_block"
},
{
"end_pc": 1077,
"hash": "0x2c4de7235f38e57744e1b535c317796d65276cd5846a9d859f991bbe92cf32a3",
"id": "bb:1040",
"start_pc": 1040,
"type": "basic_block"
},
{
"end_pc": 1121,
"hash": "0x25aebad2b7ec3b88fdcd2b228afc518c53cc22ca567e45472e6458710fd01424",
"id": "bb:1078",
"start_pc": 1078,
"type": "basic_block"
},
{
"end_pc": 1124,
"hash": "0x54c4b17dc9974d50698f5cdb73e5d6881f73c477eda3b62395b9db150f5b7494",
"id": "bb:1122",
"start_pc": 1122,
"type": "basic_block"
},
{
"end_pc": 1132,
"hash": "0x97085831908ebe6c7354b78509959deb792136b17fdfc17a6c9c94a07b14629c",
"id": "bb:1125",
"start_pc": 1125,
"type": "basic_block"
},
{
"end_pc": 1138,
"hash": "0x83bf2d0fba4abe462fc07570acfceff6ec77ec6afcc25322debc696c5259d65b",
"id": "bb:1133",
"start_pc": 1133,
"type": "basic_block"
},
{
"end_pc": 1243,
"hash": "0xea926f98b9e9943693537f489e231ba5dff7d411e9188ba5e3690b2ef7776cc4",
"id": "bb:1139",
"start_pc": 1139,
"type": "basic_block"
},
{
"end_pc": 1248,
"hash": "0xc5b5b2abc176fbfa235d4f218d5297de17f03c80afc5694c0b7820eeaf78f4cf",
"id": "bb:1244",
"start_pc": 1244,
"type": "basic_block"
},
{
"end_pc": 1249,
"hash": "0x27ad002fa4335ef52a44d07987b5e50fc91c9884d0f6cbe1291b6c959e0c23c6",
"id": "bb:1249",
"start_pc": 1249,
"type": "basic_block"
},
{
"end_pc": 1254,
"hash": "0x9110d6305ddb0438a74ffbc560d340c3b262e03bf4321aed13585607276f763e",
"id": "bb:1250",
"start_pc": 1250,
"type": "basic_block"
},
{
"end_pc": 1262,
"hash": "0x84d3a14598688d2f067d218ecc516a6ad76726a125f4738b55bd347d02bfddbb",
"id": "bb:1255",
"start_pc": 1255,
"type": "basic_block"
},
{
"end_pc": 1268,
"hash": "0xff7c0f0dd081f8f3a6195ed49969433760d4b80e29b99a7038a53f5cfcc44de6",
"id": "bb:1263",
"start_pc": 1263,
"type": "basic_block"
},
{
"end_pc": 1373,
"hash": "0x0b8845505a6b90d73e3f2f7a6681c1468eb4b2b0dc0c25b415c6b30f934fbc17",
"id": "bb:1269",
"start_pc": 1269,
"type": "basic_block"
},
{
"end_pc": 1378,
"hash": "0x72894608d85d862985fb0e051fd43cda848186524829850863ac2b36fdf8aa75",
"id": "bb:1374",
"start_pc": 1374,
"type": "basic_block"
},
{
"end_pc": 1379,
"hash": "0xc033218540aeb7f8b9d5fa84061fe23e213ff00893d58b3d86ca9ea6426e3b1d",
"id": "bb:1379",
"start_pc": 1379,
"type": "basic_block"
},
{
"end_pc": 1384,
"hash": "0x1038ef1b5b7cc1d261fd73c093822a5fc795873a8c5d91bbdfcffd6d7d56870b",
"id": "bb:1380",
"start_pc": 1380,
"type": "basic_block"
},
{
"end_pc": 1515,
"hash": "0x164b1dade149b2380a0bae0f8030d70e4293c049998e24b990c632d818efe796",
"id": "bb:1385",
"start_pc": 1385,
"type": "basic_block"
},
{
"end_pc": 1534,
"hash": "0x400d2568689396a794a37117f74824ac0013cc2806b0a100b1f0d646eb6e6d24",
"id": "bb:1516",
"start_pc": 1516,
"type": "basic_block"
},
{
"end_pc": 1537,
"hash": "0x3c69376ff0a36391525a2ceb5f1e81c30130e56b692852129177f3e76ef7e85a",
"id": "bb:1535",
"start_pc": 1535,
"type": "basic_block"
},
{
"end_pc": 1698,
"hash": "0xead9841f7413956bd6bd766c654136abfb8b8ec13dea8c8f4b3423bbe2f97677",
"id": "bb:1538",
"start_pc": 1538,
"type": "basic_block"
},
{
"end_pc": 1717,
"hash": "0x9839ca98a404761fa2f40edc5528556b1044f10ccde6255a68d4a507d7c480cf",
"id": "bb:1699",
"start_pc": 1699,
"type": "basic_block"
},
{
"end_pc": 1722,
"hash": "0x36fa2ef0acfba670a14564023568c2d8246e9813f458e53525797197041be011",
"id": "bb:1718",
"start_pc": 1718,
"type": "basic_block"
},
{
"end_pc": 1913,
"hash": "0x72d2aa21abc64e2293ecab5bc37ba9866557d257f867b1e3ce8bdddfcd3cbdea",
"id": "bb:1723",
"start_pc": 1723,
"type": "basic_block"
},
{
"end_pc": 1932,
"hash": "0xdfdb6072decee946b12e155474bbc86a69a294524d7e9c4174d1ba2a2b53e5bd",
"id": "bb:1914",
"start_pc": 1914,
"type": "basic_block"
},
{
"end_pc": 1938,
"hash": "0x936e6702caaaa4c0c2a1a576997c6349f8f20ba916d579d8749d0c24ba87729d",
"id": "bb:1933",
"start_pc": 1933,
"type": "basic_block"
},
{
"end_pc": 2137,
"hash": "0xc7942c473685e64835e02690ca5fe7d17c9c2a62812c739b2330faf211623259",
"id": "bb:1939",
"start_pc": 1939,
"type": "basic_block"
},
{
"end_pc": 2156,
"hash": "0x26c710220fd07dc89114e7a3aef071cd21190ebca15b5ca63b609a5d8f0b4c11",
"id": "bb:2138",
"start_pc": 2138,
"type": "basic_block"
},
{
"end_pc": 2162,
"hash": "0x9f310ed05e77c9dad3a507506c57d4c40a5b886ee7798dc74bd95b3b262666ba",
"id": "bb:2157",
"start_pc": 2157,
"type": "basic_block"
},
{
"end_pc": 2391,
"hash": "0x5a8e1e3f7d477b1279ba64523806a3a0f31f0baefda44a857710036c2b2f541d",
"id": "bb:2163",
"start_pc": 2163,
"type": "basic_block"
},
{
"end_pc": 2410,
"hash": "0x3240d321d01f07a51b992089aa64bd772f20636b3bd3f2595e89330c162976e0",
"id": "bb:2392",
"start_pc": 2392,
"type": "basic_block"
},
{
"end_pc": 2417,
"hash": "0x0ef90cd7e20efbfa79f90e3a70609a9cf3e31266dc4006a5e4023ef8b2e720ec",
"id": "bb:2411",
"start_pc": 2411,
"type": "basic_block"
},
{
"end_pc": 2616,
"hash": "0x553dc14a7eebfe68681392e5352c5d9c2ee06ce24db8887676aa319ec7ddcb90",
"id": "bb:2418",
"start_pc": 2418,
"type": "basic_block"
},
{
"end_pc": 2635,
"hash": "0x56725221e5d52fd8e76381f6e54f16bbd110334648b639a02ea240e77a8578e4",
"id": "bb:2617",
"start_pc": 2617,
"type": "basic_block"
},
{
"end_pc": 2641,
"hash": "0x23c3039a36279102526ab6b2e2861c238339e6969f83ae459968888178c313bd",
"id": "bb:2636",
"start_pc": 2636,
"type": "basic_block"
},
{
"end_pc": 2668,
"hash": "0x4c27c0802775d7221011160008cf572f4e88ae2d71da7e781243fbfc8c855a9b",
"id": "bb:2642",
"start_pc": 2642,
"type": "basic_block"
},
{
"end_pc": 2755,
"hash": "0x35fc33f48c4e460c781f1595514a0007f3d22a257ea35a7228de016f78ad6cd1",
"id": "bb:2669",
"start_pc": 2669,
"type": "basic_block"
},
{
"end_pc": 2780,
"hash": "0xbc12fc00bcb6b3fae911e19d50785aacb15784bdd876e32a0a32e8a05cada3d7",
"id": "bb:2756",
"start_pc": 2756,
"type": "basic_block"
},
{
"end_pc": 3012,
"hash": "0xf997b7337b52ed1af0993f16d767001d23fb1668bfe7bb9d2f49426610e0d777",
"id": "bb:2781",
"start_pc": 2781,
"type": "basic_block"
},
{
"end_pc": 3031,
"hash": "0x658792b6fcd992464a65cd56af19f208c5b7767322942665969f97e07d40b62e",
"id": "bb:3013",
"start_pc": 3013,
"type": "basic_block"
},
{
"end_pc": 3036,
"hash": "0x528cd93059e43bf6b1a28ff6f6b9773efe4feebd7e60ecfab1dfba613f0dc25e",
"id": "bb:3032",
"start_pc": 3032,
"type": "basic_block"
},
{
"end_pc": 3039,
"hash": "0xe32639893cbf9a95a460cf24b96a97a8c5cf9f8cbdc705b217dd4656339e8d7e",
"id": "bb:3037",
"start_pc": 3037,
"type": "basic_block"
},
{
"id": "call:1510",
"opcode": "CALL",
"pc": 1510,
"type": "callsite"
},
{
"id": "call:1693",
"opcode": "CALL",
"pc": 1693,
"type": "callsite"
},
{
"id": "call:1908",
"opcode": "CALL",
"pc": 1908,
"type": "callsite"
},
{
"id": "call:2132",
"opcode": "CALL",
"pc": 2132,
"type": "callsite"
},
{
"id": "call:2386",
"opcode": "CALL",
"pc": 2386,
"type": "callsite"
},
{
"id": "call:2611",
"opcode": "CALL",
"pc": 2611,
"type": "callsite"
},
{
"id": "call:3007",
"opcode": "CALL",
"pc": 3007,
"type": "callsite"
},
{
"id": "sink:call",
"type": "sink"
},
{
"entry_pc": 404098525,
"id": "fn:0x095ea7b3",
"selector": "0x095ea7b3",
"type": "function"
},
{
"entry_pc": 599290589,
"id": "fn:0x18160ddd",
"selector": "0x18160ddd",
"type": "function"
},
{
"entry_pc": 601777745,
"id": "fn:0x23b872dd",
"selector": "0x23b872dd",
"type": "function"
},
{
"entry_pc": 806887519,
"id": "fn:0x23de6651",
"selector": "0x23de6651",
"type": "function"
},
{
"entry_pc": 1451750072,
"id": "fn:0x3018205f",
"selector": "0x3018205f",
"type": "function"
},
{
"entry_pc": 1889567281,
"id": "fn:0x5687f2b8",
"selector": "0x5687f2b8",
"type": "function"
},
{
"entry_pc": 2115875489,
"id": "fn:0x70a08231",
"selector": "0x70a08231",
"type": "function"
},
{
"entry_pc": 2465136283,
"id": "fn:0x7e1db2a1",
"selector": "0x7e1db2a1",
"type": "function"
},
{
"entry_pc": 2835717307,
"id": "fn:0x92eefe9b",
"selector": "0x92eefe9b",
"type": "function"
},
{
"entry_pc": 3256901345,
"id": "fn:0xa9059cbb",
"selector": "0xa9059cbb",
"type": "function"
},
{
"entry_pc": 3578918401,
"id": "fn:0xc2205ee1",
"selector": "0xc2205ee1",
"type": "function"
},
{
"entry_pc": 3714247998,
"id": "fn:0xd551f601",
"selector": "0xd551f601",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xdd62ed3e",
"selector": "0xdd62ed3e",
"type": "function"
}
],
"version": "capability_graph_v1"
},
"id": 2409,
"updated_at": "2026-04-05T01:45:29.000000Z",
"version": "capability_graph_v1"
}
exec
/bin/bash -lc "jq '.artifact.codehash, .artifact.compiler_json, .artifact.implementation_address, .artifact.is_proxy, .artifact.verified_source' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
"0x4ef03bb8b5844e789b18f8e73e6698e7b14de90b9f9b347200666c30e3f5e0c9"
{
"etherscan": {
"skipped": true
}
}
null
false
false
exec
/bin/bash -lc "jq '.artifact.runtime_bytecode' BYTECODE_BUNDLE.json" in /tmp/codex-g936cym_
succeeded in 0ms:
{
"full": "0x606060405236156100c1576000357c010000000000000000000000000000000000000000000000000000000090048063095ea7b3146100c357806318160ddd146100f857806323b872dd1461011b57806323de6651146101595780633018205f146101835780635687f2b8146101bc57806370a08231146101e65780637e1db2a11461021257806392eefe9b14610233578063a9059cbb1461024b578063c2205ee114610280578063d551f601146102b9578063dd62ed3e146102dc576100c1565b005b6100e26004808035906020019091908035906020019091905050610972565b6040518082815260200191505060405180910390f35b6101056004805050610569565b6040518082815260200191505060405180910390f35b6101436004808035906020019091908035906020019091908035906020019091905050610873565b6040518082815260200191505060405180910390f35b6101816004808035906020019091908035906020019091908035906020019091905050610465565b005b6101906004805050610436565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e460048080359060200190919080359060200190919080359060200190919050506104e7565b005b6101fc6004808035906020019091905050610602565b6040518082815260200191505060405180910390f35b6102316004808035906020019091908035906020019091905050610311565b005b61024960048080359060200190919050506103b7565b005b61026a6004808035906020019091908035906020019091905050610793565b6040518082815260200191505060405180910390f35b61028d6004805050610410565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c660048050506103fd565b6040518082815260200191505060405180910390f35b6102fb60048080359060200190919080359060200190919050506106bb565b6040518082815260200191505060405180910390f35b610319610a52565b156103ad5781600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555080600060006101000a81548160ff02191690830217905550808273ffffffffffffffffffffffffffffffffffffffff167fb96a5204da93e5d7ddd5b0c2616fd5f76322b9c383c5010b94fdc3df11b7be5260405180905060405180910390a36103b2565b610002565b5b5050565b6103bf610a52565b156103f45780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908302179055506103f9565b610002565b5b50565b600060009054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610462565b90565b61046d610a52565b156104dc578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36104e1565b610002565b5b505050565b6104ef610a52565b1561055e578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3610563565b610002565b5b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd604051817c01000000000000000000000000000000000000000000000000000000000281526004018090506020604051808303816000876161da5a03f115610002575050506040518051906020015090506105ff565b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823183604051827c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1681526020019150506020604051808303816000876161da5a03f115610002575050506040518051906020015090506106b6565b919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8484604051837c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001925050506020604051808303816000876161da5a03f1156100025750505060405180519060200150905061078d565b92915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663beabacc8338585604051847c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506020604051808303816000876161da5a03f1156100025750505060405180519060200150905061086d565b92915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea33868686604051857c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506020604051808303816000876161da5a03f1156100025750505060405180519060200150905061096b565b9392505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c67338585604051847c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506020604051808303816000876161da5a03f11561000257505050604051805190602001509050610a4c565b92915050565b60006000600060009054906101000a900460ff161415610ac457600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16149050610bdd565b6001600060009054906101000a900460ff161415610bd857600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b700961333306000357fffffffff0000000000000000000000000000000000000000000000000000000016604051847c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506020604051808303816000876161da5a03f11561000257505050604051805190602001509050610bdd565b610002565b9056",
"head": null,
"length": 6082,
"tail": null,
"truncated": false
}
exec
/bin/bash -lc 'which cast' in /tmp/codex-g936cym_
succeeded in 0ms:
/home/noahkuhn/.foundry/bin/cast
exec
/bin/bash -lc 'which evm' in /tmp/codex-g936cym_
exited 1 in 0ms:
exec
/bin/bash -lc 'which hevm' in /tmp/codex-g936cym_
exited 1 in 0ms:
exec
/bin/bash -lc "cast --help | sed -n '1,220p'" in /tmp/codex-g936cym_
succeeded in 0ms:
A Swiss Army knife for interacting with Ethereum applications from the command line
Usage: cast [OPTIONS] <COMMAND>
Commands:
4byte Get the function signatures for the given selector from
<https://openchain.xyz> [aliases: 4, 4b]
4byte-calldata Decode ABI-encoded calldata using <https://openchain.xyz> [aliases: 4c,
4bc]
4byte-event Get the event signature for a given topic 0 from <https://openchain.xyz>
[aliases: 4e, 4be, topic0-event, t0e]
abi-encode ABI encode the given function argument, excluding the selector [aliases:
ae]
abi-encode-event ABI encode an event and its arguments to generate topics and data [aliases:
aee]
access-list Create an access list for a transaction [aliases: ac, acl]
address-zero Prints the zero address [aliases: --address-zero, az]
admin Fetch the EIP-1967 admin account [aliases: adm]
age Get the timestamp of a block [aliases: a]
artifact Generate an artifact file, that can be used to deploy a contract locally
[aliases: ar]
b2e-payload Convert Beacon payload to execution payload [aliases: b2e]
balance Get the balance of an account in wei [aliases: b]
base-fee Get the basefee of a block [aliases: ba, fee, basefee]
bind Generate a rust binding from a given ABI [aliases: bi]
block Get information about a block [aliases: bl]
block-number Get the latest block number [aliases: bn]
call Perform a call on an account without publishing a transaction [aliases: c]
calldata ABI-encode a function with arguments [aliases: cd]
chain Get the symbolic name of the current chain
chain-id Get the Ethereum chain ID [aliases: ci, cid]
client Get the current client version [aliases: cl]
code Get the runtime bytecode of a contract [aliases: co]
codehash Get the codehash for an account
codesize Get the runtime bytecode size of a contract [aliases: cs]
completions Generate shell completions script [aliases: com]
compute-address Compute the contract address from a given nonce and deployer address
[aliases: ca]
concat-hex Concatenate hex strings [aliases: --concat-hex, ch]
constructor-args Display constructor arguments used for the contract initialization
[aliases: cra]
create2 Generate a deterministic contract address using CREATE2 [aliases: c2]
creation-code Download a contract creation code from Etherscan and RPC [aliases: cc]
da-estimate Estimates the data availability size of a given opstack block
decode-abi Decode ABI-encoded input or output data [aliases: abi-decode, --abi-decode,
ad]
decode-calldata Decode ABI-encoded input data [aliases: calldata-decode, --calldata-decode,
cdd]
decode-error Decode custom error data [aliases: error-decode, --error-decode, erd]
decode-event Decode event data [aliases: event-decode, --event-decode, ed]
decode-string Decode ABI-encoded string [aliases: string-decode, --string-decode, sd]
decode-transaction Decodes a raw signed EIP 2718 typed transaction [aliases: dt, decode-tx]
disassemble Disassembles a hex-encoded bytecode into a human-readable representation
[aliases: da]
erc20-token ERC20 token operations [aliases: erc20]
estimate Estimate the gas cost of a transaction [aliases: e]
find-block Get the block number closest to the provided timestamp [aliases: f]
format-bytes32-string Formats a string into bytes32 encoding [aliases: --format-bytes32-string]
format-units Format a number from smallest unit to decimal with arbitrary decimals
[aliases: --format-units, fun]
from-bin Convert binary data into hex data [aliases: --from-bin, from-binx, fb]
from-fixed-point Convert a fixed point number into an integer [aliases: --from-fix, ff]
from-rlp Decodes RLP hex-encoded data [aliases: --from-rlp]
from-utf8 Convert UTF8 text to hex [aliases: --from-ascii, --from-utf8, from-ascii,
fu, fa]
from-wei Convert wei into an ETH amount [aliases: --from-wei, fw]
gas-price Get the current gas price [aliases: g]
hash-message Hash a message according to EIP-191 [aliases: --hash-message, hm]
hash-zero Prints the zero hash [aliases: --hash-zero, hz]
help Print this message or the help of the given subcommand(s)
implementation Fetch the EIP-1967 implementation for a contract Can read from the
implementation slot or the beacon slot [aliases: impl]
index Compute the storage slot for an entry in a mapping [aliases: in]
index-erc7201 Compute storage slots as specified by `ERC-7201: Namespaced Storage Layout`
[aliases: index7201, in7201]
interface Generate a Solidity interface from a given ABI [aliases: i]
keccak Hash arbitrary data using Keccak-256 [aliases: k, keccak256]
logs Get logs by signature or topic [aliases: l]
lookup-address Perform an ENS reverse lookup [aliases: la]
max-int Prints the maximum value of the given integer type [aliases: --max-int,
maxi]
max-uint Prints the maximum value of the given integer type [aliases: --max-uint,
maxu]
min-int Prints the minimum value of the given integer type [aliases: --min-int,
mini]
mktx Build and sign a transaction [aliases: m]
namehash Calculate the ENS namehash of a name [aliases: na, nh]
nonce Get the nonce for an account [aliases: n]
pad Pads hex data to a specified length [aliases: pd]
parse-bytes32-address Parses a checksummed address from bytes32 encoding. [aliases:
--parse-bytes32-address]
parse-bytes32-string Parses a string from bytes32 encoding [aliases: --parse-bytes32-string]
parse-units Convert a number from decimal to smallest unit with arbitrary decimals
[aliases: --parse-units, pun]
pretty-calldata Pretty print calldata [aliases: pc]
proof Generate a storage proof for a given storage slot [aliases: pr]
publish Publish a raw transaction to the network [aliases: p]
receipt Get the transaction receipt for a transaction [aliases: re]
recover-authority Recovery an EIP-7702 authority from a Authorization JSON string [aliases:
decode-auth]
resolve-name Perform an ENS lookup [aliases: rn]
rpc Perform a raw JSON-RPC request [aliases: rp]
run Runs a published transaction in a local environment and prints the trace
[aliases: r]
selectors Extracts function selectors and arguments from bytecode [aliases: sel]
send Sign and publish a transaction [aliases: s]
shl Perform a left shifting operation
shr Perform a right shifting operation
sig Get the selector for a function [aliases: si]
sig-event Generate event signatures from event string [aliases: se]
source Get the source code of a contract from a block explorer [aliases: et, src]
storage Get the raw value of a contract's storage slot [aliases: st]
storage-root Get the storage root for an account [aliases: sr]
to-ascii Convert hex data to an ASCII string [aliases: --to-ascii, tas, 2as]
to-base Converts a number of one base to another [aliases: --to-base, --to-radix,
to-radix, tr, 2r]
to-bytes32 Right-pads hex data to 32 bytes [aliases: --to-bytes32, tb, 2b]
to-check-sum-address Convert an address to a checksummed format (EIP-55) [aliases:
--to-checksum-address, --to-checksum, to-checksum, ta, 2a]
to-dec Converts a number of one base to decimal [aliases: --to-dec, td, 2d]
to-fixed-point Convert an integer into a fixed point number [aliases: --to-fix, tf, 2f]
to-hex Converts a number of one base to another [aliases: --to-hex, th, 2h]
to-hexdata Normalize the input to lowercase, 0x-prefixed hex [aliases: --to-hexdata,
thd, 2hd]
to-int256 Convert a number to a hex-encoded int256 [aliases: --to-int256, ti, 2i]
to-rlp RLP encodes hex data, or an array of hex data [aliases: --to-rlp]
to-uint256 Convert a number to a hex-encoded uint256 [aliases: --to-uint256, tu, 2u]
to-unit Convert an ETH amount into another unit (ether, gwei or wei) [aliases:
--to-unit, tun, 2un]
to-utf8 Convert hex data to a utf-8 string [aliases: --to-utf8, tu8, 2u8]
to-wei Convert an ETH amount to wei [aliases: --to-wei, tw, 2w]
trace CLI arguments for `cast trace`
tx Get information about a transaction [aliases: t]
tx-pool Inspect the TxPool of a node [aliases: tp]
upload-signature Upload the given signatures to <https://openchain.xyz> [aliases: ups]
wallet Wallet management utilities [aliases: w]
Options:
-h, --help
Print help (see a summary with '-h')
-j, --threads <THREADS>
Number of threads to use. Specifying 0 defaults to the number of logical cores
[aliases: --jobs]
-V, --version
Print version
Display options:
--color <COLOR>
The color of the log messages
Possible values:
- auto: Intelligently guess whether to use color output (default)
- always: Force color output
- never: Force disable color output
--json
Format log messages as JSON
--md
Format log messages as Markdown
-q, --quiet
Do not print log messages
-v, --verbosity...
Verbosity level of the log messages.
Pass multiple times to increase the verbosity (e.g. -v, -vv, -vvv).
Depending on the context the verbosity levels have different meanings.
For example, the verbosity levels of the EVM are:
- 2 (-vv): Print logs for all tests.
- 3 (-vvv): Print execution traces for failing tests.
- 4 (-vvvv): Print execution traces for all tests, and setup traces for failing tests.
- 5 (-vvvvv): Print execution and setup traces for all tests, including storage changes
and
backtraces with line numbers.
Find more information in the book: https://getfoundry.sh/cast/overview
exec
/bin/bash -lc "cast disassemble --help | sed -n '1,200p'" in /tmp/codex-g936cym_
succeeded in 0ms:
Disassembles a hex-encoded bytecode into a human-readable representation
Usage: cast disassemble [OPTIONS] [BYTECODE]
Arguments:
[BYTECODE]
The hex-encoded bytecode
Options:
-h, --help
Print help (see a summary with '-h')
-j, --threads <THREADS>
Number of threads to use. Specifying 0 defaults to the number of logical cores
[aliases: --jobs]
Display options:
--color <COLOR>
The color of the log messages
Possible values:
- auto: Intelligently guess whether to use color output (default)
- always: Force color output
- never: Force disable color output
--json
Format log messages as JSON
--md
Format log messages as Markdown
-q, --quiet
Do not print log messages
-v, --verbosity...
Verbosity level of the log messages.
Pass multiple times to increase the verbosity (e.g. -v, -vv, -vvv).
Depending on the context the verbosity levels have different meanings.
For example, the verbosity levels of the EVM are:
- 2 (-vv): Print logs for all tests.
- 3 (-vvv): Print execution traces for failing tests.
- 4 (-vvvv): Print execution traces for all tests, and setup traces for failing tests.
- 5 (-vvvvv): Print execution and setup traces for all tests, including storage changes
and
backtraces with line numbers.
exec
/bin/bash -lc 'cast disassemble $(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json) | sed -n '1,260p'" in /tmp/codex-g936cym_
succeeded in 0ms:
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00c1
0000000a: JUMPI
0000000b: PUSH1 0x00
0000000d: CALLDATALOAD
0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002c: SWAP1
0000002d: DIV
0000002e: DUP1
0000002f: PUSH4 0x095ea7b3
00000034: EQ
00000035: PUSH2 0x00c3
00000038: JUMPI
00000039: DUP1
0000003a: PUSH4 0x18160ddd
0000003f: EQ
00000040: PUSH2 0x00f8
00000043: JUMPI
00000044: DUP1
00000045: PUSH4 0x23b872dd
0000004a: EQ
0000004b: PUSH2 0x011b
0000004e: JUMPI
0000004f: DUP1
00000050: PUSH4 0x23de6651
00000055: EQ
00000056: PUSH2 0x0159
00000059: JUMPI
0000005a: DUP1
0000005b: PUSH4 0x3018205f
00000060: EQ
00000061: PUSH2 0x0183
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x5687f2b8
0000006b: EQ
0000006c: PUSH2 0x01bc
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x70a08231
00000076: EQ
00000077: PUSH2 0x01e6
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x7e1db2a1
00000081: EQ
00000082: PUSH2 0x0212
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x92eefe9b
0000008c: EQ
0000008d: PUSH2 0x0233
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0xa9059cbb
00000097: EQ
00000098: PUSH2 0x024b
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0xc2205ee1
000000a2: EQ
000000a3: PUSH2 0x0280
000000a6: JUMPI
000000a7: DUP1
000000a8: PUSH4 0xd551f601
000000ad: EQ
000000ae: PUSH2 0x02b9
000000b1: JUMPI
000000b2: DUP1
000000b3: PUSH4 0xdd62ed3e
000000b8: EQ
000000b9: PUSH2 0x02dc
000000bc: JUMPI
000000bd: PUSH2 0x00c1
000000c0: JUMP
000000c1: JUMPDEST
000000c2: STOP
000000c3: JUMPDEST
000000c4: PUSH2 0x00e2
000000c7: PUSH1 0x04
000000c9: DUP1
000000ca: DUP1
000000cb: CALLDATALOAD
000000cc: SWAP1
000000cd: PUSH1 0x20
000000cf: ADD
000000d0: SWAP1
000000d1: SWAP2
000000d2: SWAP1
000000d3: DUP1
000000d4: CALLDATALOAD
000000d5: SWAP1
000000d6: PUSH1 0x20
000000d8: ADD
000000d9: SWAP1
000000da: SWAP2
000000db: SWAP1
000000dc: POP
000000dd: POP
000000de: PUSH2 0x0972
000000e1: JUMP
000000e2: JUMPDEST
000000e3: PUSH1 0x40
000000e5: MLOAD
000000e6: DUP1
000000e7: DUP3
000000e8: DUP2
000000e9: MSTORE
000000ea: PUSH1 0x20
000000ec: ADD
000000ed: SWAP2
000000ee: POP
000000ef: POP
000000f0: PUSH1 0x40
000000f2: MLOAD
000000f3: DUP1
000000f4: SWAP2
000000f5: SUB
000000f6: SWAP1
000000f7: RETURN
000000f8: JUMPDEST
000000f9: PUSH2 0x0105
000000fc: PUSH1 0x04
000000fe: DUP1
000000ff: POP
00000100: POP
00000101: PUSH2 0x0569
00000104: JUMP
00000105: JUMPDEST
00000106: PUSH1 0x40
00000108: MLOAD
00000109: DUP1
0000010a: DUP3
0000010b: DUP2
0000010c: MSTORE
0000010d: PUSH1 0x20
0000010f: ADD
00000110: SWAP2
00000111: POP
00000112: POP
00000113: PUSH1 0x40
00000115: MLOAD
00000116: DUP1
00000117: SWAP2
00000118: SUB
00000119: SWAP1
0000011a: RETURN
0000011b: JUMPDEST
0000011c: PUSH2 0x0143
0000011f: PUSH1 0x04
00000121: DUP1
00000122: DUP1
00000123: CALLDATALOAD
00000124: SWAP1
00000125: PUSH1 0x20
00000127: ADD
00000128: SWAP1
00000129: SWAP2
0000012a: SWAP1
0000012b: DUP1
0000012c: CALLDATALOAD
0000012d: SWAP1
0000012e: PUSH1 0x20
00000130: ADD
00000131: SWAP1
00000132: SWAP2
00000133: SWAP1
00000134: DUP1
00000135: CALLDATALOAD
00000136: SWAP1
00000137: PUSH1 0x20
00000139: ADD
0000013a: SWAP1
0000013b: SWAP2
0000013c: SWAP1
0000013d: POP
0000013e: POP
0000013f: PUSH2 0x0873
00000142: JUMP
00000143: JUMPDEST
00000144: PUSH1 0x40
00000146: MLOAD
00000147: DUP1
00000148: DUP3
00000149: DUP2
0000014a: MSTORE
0000014b: PUSH1 0x20
0000014d: ADD
0000014e: SWAP2
0000014f: POP
00000150: POP
00000151: PUSH1 0x40
00000153: MLOAD
00000154: DUP1
00000155: SWAP2
00000156: SUB
00000157: SWAP1
00000158: RETURN
00000159: JUMPDEST
0000015a: PUSH2 0x0181
0000015d: PUSH1 0x04
0000015f: DUP1
00000160: DUP1
00000161: CALLDATALOAD
00000162: SWAP1
00000163: PUSH1 0x20
00000165: ADD
00000166: SWAP1
00000167: SWAP2
00000168: SWAP1
00000169: DUP1
0000016a: CALLDATALOAD
0000016b: SWAP1
0000016c: PUSH1 0x20
0000016e: ADD
0000016f: SWAP1
00000170: SWAP2
00000171: SWAP1
00000172: DUP1
00000173: CALLDATALOAD
00000174: SWAP1
00000175: PUSH1 0x20
00000177: ADD
00000178: SWAP1
00000179: SWAP2
0000017a: SWAP1
0000017b: POP
0000017c: POP
0000017d: PUSH2 0x0465
00000180: JUMP
00000181: JUMPDEST
00000182: STOP
00000183: JUMPDEST
00000184: PUSH2 0x0190
00000187: PUSH1 0x04
00000189: DUP1
0000018a: POP
0000018b: POP
0000018c: PUSH2 0x0436
0000018f: JUMP
00000190: JUMPDEST
00000191: PUSH1 0x40
00000193: MLOAD
00000194: DUP1
00000195: DUP3
00000196: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001ab: AND
000001ac: DUP2
000001ad: MSTORE
000001ae: PUSH1 0x20
000001b0: ADD
000001b1: SWAP2
000001b2: POP
000001b3: POP
000001b4: PUSH1 0x40
000001b6: MLOAD
exec
/bin/bash -lc 'cast disassemble $(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json) | sed -n '260,520p'" in /tmp/codex-g936cym_
succeeded in 0ms:
000001b6: MLOAD
000001b7: DUP1
000001b8: SWAP2
000001b9: SUB
000001ba: SWAP1
000001bb: RETURN
000001bc: JUMPDEST
000001bd: PUSH2 0x01e4
000001c0: PUSH1 0x04
000001c2: DUP1
000001c3: DUP1
000001c4: CALLDATALOAD
000001c5: SWAP1
000001c6: PUSH1 0x20
000001c8: ADD
000001c9: SWAP1
000001ca: SWAP2
000001cb: SWAP1
000001cc: DUP1
000001cd: CALLDATALOAD
000001ce: SWAP1
000001cf: PUSH1 0x20
000001d1: ADD
000001d2: SWAP1
000001d3: SWAP2
000001d4: SWAP1
000001d5: DUP1
000001d6: CALLDATALOAD
000001d7: SWAP1
000001d8: PUSH1 0x20
000001da: ADD
000001db: SWAP1
000001dc: SWAP2
000001dd: SWAP1
000001de: POP
000001df: POP
000001e0: PUSH2 0x04e7
000001e3: JUMP
000001e4: JUMPDEST
000001e5: STOP
000001e6: JUMPDEST
000001e7: PUSH2 0x01fc
000001ea: PUSH1 0x04
000001ec: DUP1
000001ed: DUP1
000001ee: CALLDATALOAD
000001ef: SWAP1
000001f0: PUSH1 0x20
000001f2: ADD
000001f3: SWAP1
000001f4: SWAP2
000001f5: SWAP1
000001f6: POP
000001f7: POP
000001f8: PUSH2 0x0602
000001fb: JUMP
000001fc: JUMPDEST
000001fd: PUSH1 0x40
000001ff: MLOAD
00000200: DUP1
00000201: DUP3
00000202: DUP2
00000203: MSTORE
00000204: PUSH1 0x20
00000206: ADD
00000207: SWAP2
00000208: POP
00000209: POP
0000020a: PUSH1 0x40
0000020c: MLOAD
0000020d: DUP1
0000020e: SWAP2
0000020f: SUB
00000210: SWAP1
00000211: RETURN
00000212: JUMPDEST
00000213: PUSH2 0x0231
00000216: PUSH1 0x04
00000218: DUP1
00000219: DUP1
0000021a: CALLDATALOAD
0000021b: SWAP1
0000021c: PUSH1 0x20
0000021e: ADD
0000021f: SWAP1
00000220: SWAP2
00000221: SWAP1
00000222: DUP1
00000223: CALLDATALOAD
00000224: SWAP1
00000225: PUSH1 0x20
00000227: ADD
00000228: SWAP1
00000229: SWAP2
0000022a: SWAP1
0000022b: POP
0000022c: POP
0000022d: PUSH2 0x0311
00000230: JUMP
00000231: JUMPDEST
00000232: STOP
00000233: JUMPDEST
00000234: PUSH2 0x0249
00000237: PUSH1 0x04
00000239: DUP1
0000023a: DUP1
0000023b: CALLDATALOAD
0000023c: SWAP1
0000023d: PUSH1 0x20
0000023f: ADD
00000240: SWAP1
00000241: SWAP2
00000242: SWAP1
00000243: POP
00000244: POP
00000245: PUSH2 0x03b7
00000248: JUMP
00000249: JUMPDEST
0000024a: STOP
0000024b: JUMPDEST
0000024c: PUSH2 0x026a
0000024f: PUSH1 0x04
00000251: DUP1
00000252: DUP1
00000253: CALLDATALOAD
00000254: SWAP1
00000255: PUSH1 0x20
00000257: ADD
00000258: SWAP1
00000259: SWAP2
0000025a: SWAP1
0000025b: DUP1
0000025c: CALLDATALOAD
0000025d: SWAP1
0000025e: PUSH1 0x20
00000260: ADD
00000261: SWAP1
00000262: SWAP2
00000263: SWAP1
00000264: POP
00000265: POP
00000266: PUSH2 0x0793
00000269: JUMP
0000026a: JUMPDEST
0000026b: PUSH1 0x40
0000026d: MLOAD
0000026e: DUP1
0000026f: DUP3
00000270: DUP2
00000271: MSTORE
00000272: PUSH1 0x20
00000274: ADD
00000275: SWAP2
00000276: POP
00000277: POP
00000278: PUSH1 0x40
0000027a: MLOAD
0000027b: DUP1
0000027c: SWAP2
0000027d: SUB
0000027e: SWAP1
0000027f: RETURN
00000280: JUMPDEST
00000281: PUSH2 0x028d
00000284: PUSH1 0x04
00000286: DUP1
00000287: POP
00000288: POP
00000289: PUSH2 0x0410
0000028c: JUMP
0000028d: JUMPDEST
0000028e: PUSH1 0x40
00000290: MLOAD
00000291: DUP1
00000292: DUP3
00000293: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002a8: AND
000002a9: DUP2
000002aa: MSTORE
000002ab: PUSH1 0x20
000002ad: ADD
000002ae: SWAP2
000002af: POP
000002b0: POP
000002b1: PUSH1 0x40
000002b3: MLOAD
000002b4: DUP1
000002b5: SWAP2
000002b6: SUB
000002b7: SWAP1
000002b8: RETURN
000002b9: JUMPDEST
000002ba: PUSH2 0x02c6
000002bd: PUSH1 0x04
000002bf: DUP1
000002c0: POP
000002c1: POP
000002c2: PUSH2 0x03fd
000002c5: JUMP
000002c6: JUMPDEST
000002c7: PUSH1 0x40
000002c9: MLOAD
000002ca: DUP1
000002cb: DUP3
000002cc: DUP2
000002cd: MSTORE
000002ce: PUSH1 0x20
000002d0: ADD
000002d1: SWAP2
000002d2: POP
000002d3: POP
000002d4: PUSH1 0x40
000002d6: MLOAD
000002d7: DUP1
000002d8: SWAP2
000002d9: SUB
000002da: SWAP1
000002db: RETURN
000002dc: JUMPDEST
000002dd: PUSH2 0x02fb
000002e0: PUSH1 0x04
000002e2: DUP1
000002e3: DUP1
000002e4: CALLDATALOAD
000002e5: SWAP1
000002e6: PUSH1 0x20
000002e8: ADD
000002e9: SWAP1
000002ea: SWAP2
000002eb: SWAP1
000002ec: DUP1
000002ed: CALLDATALOAD
000002ee: SWAP1
000002ef: PUSH1 0x20
000002f1: ADD
000002f2: SWAP1
000002f3: SWAP2
000002f4: SWAP1
000002f5: POP
000002f6: POP
000002f7: PUSH2 0x06bb
000002fa: JUMP
000002fb: JUMPDEST
000002fc: PUSH1 0x40
000002fe: MLOAD
000002ff: DUP1
00000300: DUP3
00000301: DUP2
00000302: MSTORE
00000303: PUSH1 0x20
00000305: ADD
00000306: SWAP2
00000307: POP
00000308: POP
00000309: PUSH1 0x40
0000030b: MLOAD
0000030c: DUP1
0000030d: SWAP2
0000030e: SUB
0000030f: SWAP1
00000310: RETURN
exec
/bin/bash -lc 'cast disassemble $(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json) | sed -n '520,860p'" in /tmp/codex-g936cym_
succeeded in 0ms:
00000310: RETURN
00000311: JUMPDEST
00000312: PUSH2 0x0319
00000315: PUSH2 0x0a52
00000318: JUMP
00000319: JUMPDEST
0000031a: ISZERO
0000031b: PUSH2 0x03ad
0000031e: JUMPI
0000031f: DUP2
00000320: PUSH1 0x00
00000322: PUSH1 0x01
00000324: PUSH2 0x0100
00000327: EXP
00000328: DUP2
00000329: SLOAD
0000032a: DUP2
0000032b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000340: MUL
00000341: NOT
00000342: AND
00000343: SWAP1
00000344: DUP4
00000345: MUL
00000346: OR
00000347: SWAP1
00000348: SSTORE
00000349: POP
0000034a: DUP1
0000034b: PUSH1 0x00
0000034d: PUSH1 0x00
0000034f: PUSH2 0x0100
00000352: EXP
00000353: DUP2
00000354: SLOAD
00000355: DUP2
00000356: PUSH1 0xff
00000358: MUL
00000359: NOT
0000035a: AND
0000035b: SWAP1
0000035c: DUP4
0000035d: MUL
0000035e: OR
0000035f: SWAP1
00000360: SSTORE
00000361: POP
00000362: DUP1
00000363: DUP3
00000364: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000379: AND
0000037a: PUSH32 0xb96a5204da93e5d7ddd5b0c2616fd5f76322b9c383c5010b94fdc3df11b7be52
0000039b: PUSH1 0x40
0000039d: MLOAD
0000039e: DUP1
0000039f: SWAP1
000003a0: POP
000003a1: PUSH1 0x40
000003a3: MLOAD
000003a4: DUP1
000003a5: SWAP2
000003a6: SUB
000003a7: SWAP1
000003a8: LOG3
000003a9: PUSH2 0x03b2
000003ac: JUMP
000003ad: JUMPDEST
000003ae: PUSH2 0x0002
000003b1: JUMP
000003b2: JUMPDEST
000003b3: JUMPDEST
000003b4: POP
000003b5: POP
000003b6: JUMP
000003b7: JUMPDEST
000003b8: PUSH2 0x03bf
000003bb: PUSH2 0x0a52
000003be: JUMP
000003bf: JUMPDEST
000003c0: ISZERO
000003c1: PUSH2 0x03f4
000003c4: JUMPI
000003c5: DUP1
000003c6: PUSH1 0x01
000003c8: PUSH1 0x00
000003ca: PUSH2 0x0100
000003cd: EXP
000003ce: DUP2
000003cf: SLOAD
000003d0: DUP2
000003d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003e6: MUL
000003e7: NOT
000003e8: AND
000003e9: SWAP1
000003ea: DUP4
000003eb: MUL
000003ec: OR
000003ed: SWAP1
000003ee: SSTORE
000003ef: POP
000003f0: PUSH2 0x03f9
000003f3: JUMP
000003f4: JUMPDEST
000003f5: PUSH2 0x0002
000003f8: JUMP
000003f9: JUMPDEST
000003fa: JUMPDEST
000003fb: POP
000003fc: JUMP
000003fd: JUMPDEST
000003fe: PUSH1 0x00
00000400: PUSH1 0x00
00000402: SWAP1
00000403: SLOAD
00000404: SWAP1
00000405: PUSH2 0x0100
00000408: EXP
00000409: SWAP1
0000040a: DIV
0000040b: PUSH1 0xff
0000040d: AND
0000040e: DUP2
0000040f: JUMP
00000410: JUMPDEST
00000411: PUSH1 0x00
00000413: PUSH1 0x01
00000415: SWAP1
00000416: SLOAD
00000417: SWAP1
00000418: PUSH2 0x0100
0000041b: EXP
0000041c: SWAP1
0000041d: DIV
0000041e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000433: AND
00000434: DUP2
00000435: JUMP
00000436: JUMPDEST
00000437: PUSH1 0x00
00000439: PUSH1 0x01
0000043b: PUSH1 0x00
0000043d: SWAP1
0000043e: SLOAD
0000043f: SWAP1
00000440: PUSH2 0x0100
00000443: EXP
00000444: SWAP1
00000445: DIV
00000446: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000045b: AND
0000045c: SWAP1
0000045d: POP
0000045e: PUSH2 0x0462
00000461: JUMP
00000462: JUMPDEST
00000463: SWAP1
00000464: JUMP
00000465: JUMPDEST
00000466: PUSH2 0x046d
00000469: PUSH2 0x0a52
0000046c: JUMP
0000046d: JUMPDEST
0000046e: ISZERO
0000046f: PUSH2 0x04dc
00000472: JUMPI
00000473: DUP2
00000474: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000489: AND
0000048a: DUP4
0000048b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004a0: AND
000004a1: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
000004c2: DUP4
000004c3: PUSH1 0x40
000004c5: MLOAD
000004c6: DUP1
000004c7: DUP3
000004c8: DUP2
000004c9: MSTORE
000004ca: PUSH1 0x20
000004cc: ADD
000004cd: SWAP2
000004ce: POP
000004cf: POP
000004d0: PUSH1 0x40
000004d2: MLOAD
000004d3: DUP1
000004d4: SWAP2
000004d5: SUB
000004d6: SWAP1
000004d7: LOG3
000004d8: PUSH2 0x04e1
000004db: JUMP
000004dc: JUMPDEST
000004dd: PUSH2 0x0002
000004e0: JUMP
000004e1: JUMPDEST
000004e2: JUMPDEST
000004e3: POP
000004e4: POP
000004e5: POP
000004e6: JUMP
000004e7: JUMPDEST
000004e8: PUSH2 0x04ef
000004eb: PUSH2 0x0a52
000004ee: JUMP
000004ef: JUMPDEST
000004f0: ISZERO
000004f1: PUSH2 0x055e
000004f4: JUMPI
000004f5: DUP2
000004f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000050b: AND
0000050c: DUP4
0000050d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000522: AND
00000523: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
00000544: DUP4
00000545: PUSH1 0x40
00000547: MLOAD
00000548: DUP1
00000549: DUP3
0000054a: DUP2
0000054b: MSTORE
0000054c: PUSH1 0x20
0000054e: ADD
0000054f: SWAP2
00000550: POP
00000551: POP
00000552: PUSH1 0x40
00000554: MLOAD
00000555: DUP1
00000556: SWAP2
00000557: SUB
00000558: SWAP1
00000559: LOG3
0000055a: PUSH2 0x0563
0000055d: JUMP
0000055e: JUMPDEST
0000055f: PUSH2 0x0002
00000562: JUMP
00000563: JUMPDEST
00000564: JUMPDEST
00000565: POP
00000566: POP
00000567: POP
00000568: JUMP
00000569: JUMPDEST
0000056a: PUSH1 0x00
0000056c: PUSH1 0x01
0000056e: PUSH1 0x00
00000570: SWAP1
00000571: SLOAD
00000572: SWAP1
00000573: PUSH2 0x0100
00000576: EXP
00000577: SWAP1
00000578: DIV
00000579: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000058e: AND
0000058f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005a4: AND
000005a5: PUSH4 0x18160ddd
000005aa: PUSH1 0x40
000005ac: MLOAD
000005ad: DUP2
000005ae: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000005cc: MUL
000005cd: DUP2
000005ce: MSTORE
000005cf: PUSH1 0x04
000005d1: ADD
000005d2: DUP1
000005d3: SWAP1
000005d4: POP
000005d5: PUSH1 0x20
000005d7: PUSH1 0x40
000005d9: MLOAD
000005da: DUP1
000005db: DUP4
000005dc: SUB
000005dd: DUP2
000005de: PUSH1 0x00
000005e0: DUP8
000005e1: PUSH2 0x61da
000005e4: GAS
000005e5: SUB
000005e6: CALL
000005e7: ISZERO
000005e8: PUSH2 0x0002
000005eb: JUMPI
000005ec: POP
000005ed: POP
000005ee: POP
000005ef: PUSH1 0x40
000005f1: MLOAD
000005f2: DUP1
000005f3: MLOAD
000005f4: SWAP1
000005f5: PUSH1 0x20
000005f7: ADD
000005f8: POP
000005f9: SWAP1
000005fa: POP
000005fb: PUSH2 0x05ff
000005fe: JUMP
000005ff: JUMPDEST
00000600: SWAP1
00000601: JUMP
00000602: JUMPDEST
00000603: PUSH1 0x00
00000605: PUSH1 0x01
00000607: PUSH1 0x00
00000609: SWAP1
0000060a: SLOAD
0000060b: SWAP1
0000060c: PUSH2 0x0100
0000060f: EXP
00000610: SWAP1
00000611: DIV
00000612: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000627: AND
00000628: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000063d: AND
0000063e: PUSH4 0x70a08231
00000643: DUP4
00000644: PUSH1 0x40
00000646: MLOAD
00000647: DUP3
00000648: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000666: MUL
00000667: DUP2
00000668: MSTORE
00000669: PUSH1 0x04
0000066b: ADD
0000066c: DUP1
0000066d: DUP3
0000066e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000683: AND
00000684: DUP2
exec
/bin/bash -lc 'cast disassemble $(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json) | sed -n '860,1220p'" in /tmp/codex-g936cym_
succeeded in 0ms:
00000684: DUP2
00000685: MSTORE
00000686: PUSH1 0x20
00000688: ADD
00000689: SWAP2
0000068a: POP
0000068b: POP
0000068c: PUSH1 0x20
0000068e: PUSH1 0x40
00000690: MLOAD
00000691: DUP1
00000692: DUP4
00000693: SUB
00000694: DUP2
00000695: PUSH1 0x00
00000697: DUP8
00000698: PUSH2 0x61da
0000069b: GAS
0000069c: SUB
0000069d: CALL
0000069e: ISZERO
0000069f: PUSH2 0x0002
000006a2: JUMPI
000006a3: POP
000006a4: POP
000006a5: POP
000006a6: PUSH1 0x40
000006a8: MLOAD
000006a9: DUP1
000006aa: MLOAD
000006ab: SWAP1
000006ac: PUSH1 0x20
000006ae: ADD
000006af: POP
000006b0: SWAP1
000006b1: POP
000006b2: PUSH2 0x06b6
000006b5: JUMP
000006b6: JUMPDEST
000006b7: SWAP2
000006b8: SWAP1
000006b9: POP
000006ba: JUMP
000006bb: JUMPDEST
000006bc: PUSH1 0x00
000006be: PUSH1 0x01
000006c0: PUSH1 0x00
000006c2: SWAP1
000006c3: SLOAD
000006c4: SWAP1
000006c5: PUSH2 0x0100
000006c8: EXP
000006c9: SWAP1
000006ca: DIV
000006cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006e0: AND
000006e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006f6: AND
000006f7: PUSH4 0xdd62ed3e
000006fc: DUP5
000006fd: DUP5
000006fe: PUSH1 0x40
00000700: MLOAD
00000701: DUP4
00000702: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000720: MUL
00000721: DUP2
00000722: MSTORE
00000723: PUSH1 0x04
00000725: ADD
00000726: DUP1
00000727: DUP4
00000728: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000073d: AND
0000073e: DUP2
0000073f: MSTORE
00000740: PUSH1 0x20
00000742: ADD
00000743: DUP3
00000744: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000759: AND
0000075a: DUP2
0000075b: MSTORE
0000075c: PUSH1 0x20
0000075e: ADD
0000075f: SWAP3
00000760: POP
00000761: POP
00000762: POP
00000763: PUSH1 0x20
00000765: PUSH1 0x40
00000767: MLOAD
00000768: DUP1
00000769: DUP4
0000076a: SUB
0000076b: DUP2
0000076c: PUSH1 0x00
0000076e: DUP8
0000076f: PUSH2 0x61da
00000772: GAS
00000773: SUB
00000774: CALL
00000775: ISZERO
00000776: PUSH2 0x0002
00000779: JUMPI
0000077a: POP
0000077b: POP
0000077c: POP
0000077d: PUSH1 0x40
0000077f: MLOAD
00000780: DUP1
00000781: MLOAD
00000782: SWAP1
00000783: PUSH1 0x20
00000785: ADD
00000786: POP
00000787: SWAP1
00000788: POP
00000789: PUSH2 0x078d
0000078c: JUMP
0000078d: JUMPDEST
0000078e: SWAP3
0000078f: SWAP2
00000790: POP
00000791: POP
00000792: JUMP
00000793: JUMPDEST
00000794: PUSH1 0x00
00000796: PUSH1 0x01
00000798: PUSH1 0x00
0000079a: SWAP1
0000079b: SLOAD
0000079c: SWAP1
0000079d: PUSH2 0x0100
000007a0: EXP
000007a1: SWAP1
000007a2: DIV
000007a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007b8: AND
000007b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ce: AND
000007cf: PUSH4 0xbeabacc8
000007d4: CALLER
000007d5: DUP6
000007d6: DUP6
000007d7: PUSH1 0x40
000007d9: MLOAD
000007da: DUP5
000007db: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000007f9: MUL
000007fa: DUP2
000007fb: MSTORE
000007fc: PUSH1 0x04
000007fe: ADD
000007ff: DUP1
00000800: DUP5
00000801: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000816: AND
00000817: DUP2
00000818: MSTORE
00000819: PUSH1 0x20
0000081b: ADD
0000081c: DUP4
0000081d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000832: AND
00000833: DUP2
00000834: MSTORE
00000835: PUSH1 0x20
00000837: ADD
00000838: DUP3
00000839: DUP2
0000083a: MSTORE
0000083b: PUSH1 0x20
0000083d: ADD
0000083e: SWAP4
0000083f: POP
00000840: POP
00000841: POP
00000842: POP
00000843: PUSH1 0x20
00000845: PUSH1 0x40
00000847: MLOAD
00000848: DUP1
00000849: DUP4
0000084a: SUB
0000084b: DUP2
0000084c: PUSH1 0x00
0000084e: DUP8
0000084f: PUSH2 0x61da
00000852: GAS
00000853: SUB
00000854: CALL
00000855: ISZERO
00000856: PUSH2 0x0002
00000859: JUMPI
0000085a: POP
0000085b: POP
0000085c: POP
0000085d: PUSH1 0x40
0000085f: MLOAD
00000860: DUP1
00000861: MLOAD
00000862: SWAP1
00000863: PUSH1 0x20
00000865: ADD
00000866: POP
00000867: SWAP1
00000868: POP
00000869: PUSH2 0x086d
0000086c: JUMP
0000086d: JUMPDEST
0000086e: SWAP3
0000086f: SWAP2
00000870: POP
00000871: POP
00000872: JUMP
00000873: JUMPDEST
00000874: PUSH1 0x00
00000876: PUSH1 0x01
00000878: PUSH1 0x00
0000087a: SWAP1
0000087b: SLOAD
0000087c: SWAP1
0000087d: PUSH2 0x0100
00000880: EXP
00000881: SWAP1
00000882: DIV
00000883: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000898: AND
00000899: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008ae: AND
000008af: PUSH4 0x15dacbea
000008b4: CALLER
000008b5: DUP7
000008b6: DUP7
000008b7: DUP7
000008b8: PUSH1 0x40
000008ba: MLOAD
000008bb: DUP6
000008bc: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000008da: MUL
000008db: DUP2
000008dc: MSTORE
000008dd: PUSH1 0x04
000008df: ADD
000008e0: DUP1
000008e1: DUP6
000008e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008f7: AND
000008f8: DUP2
000008f9: MSTORE
000008fa: PUSH1 0x20
000008fc: ADD
000008fd: DUP5
000008fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000913: AND
00000914: DUP2
00000915: MSTORE
00000916: PUSH1 0x20
00000918: ADD
00000919: DUP4
0000091a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000092f: AND
00000930: DUP2
00000931: MSTORE
00000932: PUSH1 0x20
00000934: ADD
00000935: DUP3
00000936: DUP2
00000937: MSTORE
00000938: PUSH1 0x20
0000093a: ADD
0000093b: SWAP5
0000093c: POP
0000093d: POP
0000093e: POP
0000093f: POP
00000940: POP
00000941: PUSH1 0x20
00000943: PUSH1 0x40
00000945: MLOAD
00000946: DUP1
00000947: DUP4
00000948: SUB
00000949: DUP2
0000094a: PUSH1 0x00
0000094c: DUP8
0000094d: PUSH2 0x61da
00000950: GAS
00000951: SUB
00000952: CALL
00000953: ISZERO
00000954: PUSH2 0x0002
00000957: JUMPI
00000958: POP
00000959: POP
0000095a: POP
0000095b: PUSH1 0x40
0000095d: MLOAD
0000095e: DUP1
0000095f: MLOAD
00000960: SWAP1
00000961: PUSH1 0x20
00000963: ADD
00000964: POP
00000965: SWAP1
00000966: POP
00000967: PUSH2 0x096b
0000096a: JUMP
0000096b: JUMPDEST
0000096c: SWAP4
0000096d: SWAP3
0000096e: POP
0000096f: POP
00000970: POP
00000971: JUMP
00000972: JUMPDEST
00000973: PUSH1 0x00
00000975: PUSH1 0x01
00000977: PUSH1 0x00
00000979: SWAP1
0000097a: SLOAD
0000097b: SWAP1
0000097c: PUSH2 0x0100
0000097f: EXP
00000980: SWAP1
00000981: DIV
00000982: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000997: AND
00000998: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009ad: AND
000009ae: PUSH4 0xe1f21c67
000009b3: CALLER
000009b4: DUP6
000009b5: DUP6
000009b6: PUSH1 0x40
000009b8: MLOAD
000009b9: DUP5
000009ba: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000009d8: MUL
000009d9: DUP2
000009da: MSTORE
000009db: PUSH1 0x04
000009dd: ADD
000009de: DUP1
000009df: DUP5
000009e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009f5: AND
000009f6: DUP2
000009f7: MSTORE
000009f8: PUSH1 0x20
000009fa: ADD
000009fb: DUP4
000009fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a11: AND
00000a12: DUP2
00000a13: MSTORE
00000a14: PUSH1 0x20
00000a16: ADD
00000a17: DUP3
00000a18: DUP2
exec
/bin/bash -lc 'cast disassemble $(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json) | sed -n '1220,1460p'" in /tmp/codex-g936cym_
succeeded in 0ms:
00000a18: DUP2
00000a19: MSTORE
00000a1a: PUSH1 0x20
00000a1c: ADD
00000a1d: SWAP4
00000a1e: POP
00000a1f: POP
00000a20: POP
00000a21: POP
00000a22: PUSH1 0x20
00000a24: PUSH1 0x40
00000a26: MLOAD
00000a27: DUP1
00000a28: DUP4
00000a29: SUB
00000a2a: DUP2
00000a2b: PUSH1 0x00
00000a2d: DUP8
00000a2e: PUSH2 0x61da
00000a31: GAS
00000a32: SUB
00000a33: CALL
00000a34: ISZERO
00000a35: PUSH2 0x0002
00000a38: JUMPI
00000a39: POP
00000a3a: POP
00000a3b: POP
00000a3c: PUSH1 0x40
00000a3e: MLOAD
00000a3f: DUP1
00000a40: MLOAD
00000a41: SWAP1
00000a42: PUSH1 0x20
00000a44: ADD
00000a45: POP
00000a46: SWAP1
00000a47: POP
00000a48: PUSH2 0x0a4c
00000a4b: JUMP
00000a4c: JUMPDEST
00000a4d: SWAP3
00000a4e: SWAP2
00000a4f: POP
00000a50: POP
00000a51: JUMP
00000a52: JUMPDEST
00000a53: PUSH1 0x00
00000a55: PUSH1 0x00
00000a57: PUSH1 0x00
00000a59: PUSH1 0x00
00000a5b: SWAP1
00000a5c: SLOAD
00000a5d: SWAP1
00000a5e: PUSH2 0x0100
00000a61: EXP
00000a62: SWAP1
00000a63: DIV
00000a64: PUSH1 0xff
00000a66: AND
00000a67: EQ
00000a68: ISZERO
00000a69: PUSH2 0x0ac4
00000a6c: JUMPI
00000a6d: PUSH1 0x00
00000a6f: PUSH1 0x01
00000a71: SWAP1
00000a72: SLOAD
00000a73: SWAP1
00000a74: PUSH2 0x0100
00000a77: EXP
00000a78: SWAP1
00000a79: DIV
00000a7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a8f: AND
00000a90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aa5: AND
00000aa6: CALLER
00000aa7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000abc: AND
00000abd: EQ
00000abe: SWAP1
00000abf: POP
00000ac0: PUSH2 0x0bdd
00000ac3: JUMP
00000ac4: JUMPDEST
00000ac5: PUSH1 0x01
00000ac7: PUSH1 0x00
00000ac9: PUSH1 0x00
00000acb: SWAP1
00000acc: SLOAD
00000acd: SWAP1
00000ace: PUSH2 0x0100
00000ad1: EXP
00000ad2: SWAP1
00000ad3: DIV
00000ad4: PUSH1 0xff
00000ad6: AND
00000ad7: EQ
00000ad8: ISZERO
00000ad9: PUSH2 0x0bd8
00000adc: JUMPI
00000add: PUSH1 0x00
00000adf: PUSH1 0x01
00000ae1: SWAP1
00000ae2: SLOAD
00000ae3: SWAP1
00000ae4: PUSH2 0x0100
00000ae7: EXP
00000ae8: SWAP1
00000ae9: DIV
00000aea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aff: AND
00000b00: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b15: AND
00000b16: PUSH4 0xb7009613
00000b1b: CALLER
00000b1c: ADDRESS
00000b1d: PUSH1 0x00
00000b1f: CALLDATALOAD
00000b20: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00000b41: AND
00000b42: PUSH1 0x40
00000b44: MLOAD
00000b45: DUP5
00000b46: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000b64: MUL
00000b65: DUP2
00000b66: MSTORE
00000b67: PUSH1 0x04
00000b69: ADD
00000b6a: DUP1
00000b6b: DUP5
00000b6c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b81: AND
00000b82: DUP2
00000b83: MSTORE
00000b84: PUSH1 0x20
00000b86: ADD
00000b87: DUP4
00000b88: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b9d: AND
00000b9e: DUP2
00000b9f: MSTORE
00000ba0: PUSH1 0x20
00000ba2: ADD
00000ba3: DUP3
00000ba4: DUP2
00000ba5: MSTORE
00000ba6: PUSH1 0x20
00000ba8: ADD
00000ba9: SWAP4
00000baa: POP
00000bab: POP
00000bac: POP
00000bad: POP
00000bae: PUSH1 0x20
00000bb0: PUSH1 0x40
00000bb2: MLOAD
00000bb3: DUP1
00000bb4: DUP4
00000bb5: SUB
00000bb6: DUP2
00000bb7: PUSH1 0x00
00000bb9: DUP8
00000bba: PUSH2 0x61da
00000bbd: GAS
00000bbe: SUB
00000bbf: CALL
00000bc0: ISZERO
00000bc1: PUSH2 0x0002
00000bc4: JUMPI
00000bc5: POP
00000bc6: POP
00000bc7: POP
00000bc8: PUSH1 0x40
00000bca: MLOAD
00000bcb: DUP1
00000bcc: MLOAD
00000bcd: SWAP1
00000bce: PUSH1 0x20
00000bd0: ADD
00000bd1: POP
00000bd2: SWAP1
00000bd3: POP
00000bd4: PUSH2 0x0bdd
00000bd7: JUMP
00000bd8: JUMPDEST
00000bd9: PUSH2 0x0002
00000bdc: JUMP
00000bdd: JUMPDEST
00000bde: SWAP1
00000bdf: JUMP
exec
/bin/bash -lc "cast sig 'canCall(address,address,bytes4)'" in /tmp/codex-g936cym_
succeeded in 0ms:
0xb7009613
exec
/bin/bash -lc 'cast disassemble $(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json) | sed -n '980,1100p'" in /tmp/codex-g936cym_
succeeded in 0ms:
0000078d: JUMPDEST
0000078e: SWAP3
0000078f: SWAP2
00000790: POP
00000791: POP
00000792: JUMP
00000793: JUMPDEST
00000794: PUSH1 0x00
00000796: PUSH1 0x01
00000798: PUSH1 0x00
0000079a: SWAP1
0000079b: SLOAD
0000079c: SWAP1
0000079d: PUSH2 0x0100
000007a0: EXP
000007a1: SWAP1
000007a2: DIV
000007a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007b8: AND
000007b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ce: AND
000007cf: PUSH4 0xbeabacc8
000007d4: CALLER
000007d5: DUP6
000007d6: DUP6
000007d7: PUSH1 0x40
000007d9: MLOAD
000007da: DUP5
000007db: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000007f9: MUL
000007fa: DUP2
000007fb: MSTORE
000007fc: PUSH1 0x04
000007fe: ADD
000007ff: DUP1
00000800: DUP5
00000801: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000816: AND
00000817: DUP2
00000818: MSTORE
00000819: PUSH1 0x20
0000081b: ADD
0000081c: DUP4
0000081d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000832: AND
00000833: DUP2
00000834: MSTORE
00000835: PUSH1 0x20
00000837: ADD
00000838: DUP3
00000839: DUP2
0000083a: MSTORE
0000083b: PUSH1 0x20
0000083d: ADD
0000083e: SWAP4
0000083f: POP
00000840: POP
00000841: POP
00000842: POP
00000843: PUSH1 0x20
00000845: PUSH1 0x40
00000847: MLOAD
00000848: DUP1
00000849: DUP4
0000084a: SUB
0000084b: DUP2
0000084c: PUSH1 0x00
0000084e: DUP8
0000084f: PUSH2 0x61da
00000852: GAS
00000853: SUB
00000854: CALL
00000855: ISZERO
00000856: PUSH2 0x0002
00000859: JUMPI
0000085a: POP
0000085b: POP
0000085c: POP
0000085d: PUSH1 0x40
0000085f: MLOAD
00000860: DUP1
00000861: MLOAD
00000862: SWAP1
00000863: PUSH1 0x20
00000865: ADD
00000866: POP
00000867: SWAP1
00000868: POP
00000869: PUSH2 0x086d
0000086c: JUMP
0000086d: JUMPDEST
0000086e: SWAP3
0000086f: SWAP2
00000870: POP
00000871: POP
00000872: JUMP
00000873: JUMPDEST
00000874: PUSH1 0x00
00000876: PUSH1 0x01
00000878: PUSH1 0x00
0000087a: SWAP1
0000087b: SLOAD
0000087c: SWAP1
0000087d: PUSH2 0x0100
00000880: EXP
00000881: SWAP1
00000882: DIV
00000883: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000898: AND
00000899: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008ae: AND
000008af: PUSH4 0x15dacbea
000008b4: CALLER
000008b5: DUP7
000008b6: DUP7
000008b7: DUP7
000008b8: PUSH1 0x40
000008ba: MLOAD
000008bb: DUP6
000008bc: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000008da: MUL
exec
js_repl in /tmp/codex-g936cym_
succeeded in 145ms:
00 PUSH1 0x00 ["arg_to","arg_amount","ret_pc","0x00"]
01 PUSH1 0x01 ["arg_to","arg_amount","ret_pc","0x00","0x01"]
02 PUSH1 0x00 ["arg_to","arg_amount","ret_pc","0x00","0x01","0x00"]
03 SWAP1 ["arg_to","arg_amount","ret_pc","0x00","0x00","0x01"]
04 SLOAD ["arg_to","arg_amount","ret_pc","0x00","0x00","s[0x01]"]
05 SWAP1 ["arg_to","arg_amount","ret_pc","0x00","s[0x01]","0x00"]
06 PUSH2 0x0100 ["arg_to","arg_amount","ret_pc","0x00","s[0x01]","0x00","0x0100"]
07 EXP ["arg_to","arg_amount","ret_pc","0x00","s[0x01]","(0x00**0x0100)"]
08 SWAP1 ["arg_to","arg_amount","ret_pc","0x00","(0x00**0x0100)","s[0x01]"]
09 DIV ["arg_to","arg_amount","ret_pc","0x00","((0x00**0x0100)/s[0x01])"]
10 PUSH20 0xffffffffffffffffffffffffffffffffffffffff ["arg_to","arg_amount","ret_pc","0x00","((0x00**0x0100)/s[0x01])","0xffffffffffffffffffffffffffffffffffffffff"]
11 AND ["arg_to","arg_amount","ret_pc","0x00","(((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)"]
12 PUSH20 0xffffffffffffffffffffffffffffffffffffffff ["arg_to","arg_amount","ret_pc","0x00","(((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)","0xffffffffffffffffffffffffffffffffffffffff"]
13 AND ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)"]
14 PUSH4 0xbeabacc8 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8"]
15 CALLER ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller"]
16 DUP6 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount"]
17 DUP6 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc"]
18 PUSH1 0x40 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","0x40"]
19 MLOAD ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","freeptr"]
20 DUP5 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","freeptr","0xbeabacc8"]
21 PUSH29 0x0100000000000000000000000000000000000000000000000000000000 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","freeptr","0xbeabacc8","0x0100000000000000000000000000000000000000000000000000000000"]
22 MUL ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","freeptr","(0xbeabacc8*0x0100000000000000000000000000000000000000000000000000000000)"]
23 DUP2 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","freeptr","(0xbeabacc8*0x0100000000000000000000000000000000000000000000000000000000)","freeptr"]
24 MSTORE ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","freeptr"]
25 PUSH1 0x04 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","freeptr","0x04"]
26 ADD ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)"]
27 DUP1 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(freeptr+0x04)"]
28 DUP5 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(freeptr+0x04)","caller"]
29 PUSH20 0xffffffffffffffffffffffffffffffffffffffff ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(freeptr+0x04)","caller","0xffffffffffffffffffffffffffffffffffffffff"]
30 AND ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(freeptr+0x04)","(caller&0xffffffffffffffffffffffffffffffffffffffff)"]
31 DUP2 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(freeptr+0x04)","(caller&0xffffffffffffffffffffffffffffffffffffffff)","(freeptr+0x04)"]
32 MSTORE ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(freeptr+0x04)"]
33 PUSH1 0x20 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(freeptr+0x04)","0x20"]
34 ADD ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((freeptr+0x04)+0x20)"]
35 DUP4 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((freeptr+0x04)+0x20)","arg_amount"]
36 PUSH20 0xffffffffffffffffffffffffffffffffffffffff ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((freeptr+0x04)+0x20)","arg_amount","0xffffffffffffffffffffffffffffffffffffffff"]
37 AND ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((freeptr+0x04)+0x20)","(arg_amount&0xffffffffffffffffffffffffffffffffffffffff)"]
38 DUP2 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((freeptr+0x04)+0x20)","(arg_amount&0xffffffffffffffffffffffffffffffffffffffff)","((freeptr+0x04)+0x20)"]
39 MSTORE ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((freeptr+0x04)+0x20)"]
40 PUSH1 0x20 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((freeptr+0x04)+0x20)","0x20"]
41 ADD ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(((freeptr+0x04)+0x20)+0x20)"]
42 DUP3 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(((freeptr+0x04)+0x20)+0x20)","ret_pc"]
43 DUP2 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(((freeptr+0x04)+0x20)+0x20)","ret_pc","(((freeptr+0x04)+0x20)+0x20)"]
44 MSTORE ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(((freeptr+0x04)+0x20)+0x20)"]
45 PUSH1 0x20 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","(((freeptr+0x04)+0x20)+0x20)","0x20"]
46 ADD ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","caller","arg_amount","ret_pc","(freeptr+0x04)","((((freeptr+0x04)+0x20)+0x20)+0x20)"]
47 SWAP4 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","arg_amount","ret_pc","(freeptr+0x04)","caller"]
48 POP ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","arg_amount","ret_pc","(freeptr+0x04)"]
49 POP ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","arg_amount","ret_pc"]
50 POP ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","arg_amount"]
51 POP ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)"]
52 PUSH1 0x20 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20"]
53 PUSH1 0x40 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","0x40"]
54 MLOAD ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr"]
55 DUP1 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","freeptr"]
56 DUP4 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","freeptr","((((freeptr+0x04)+0x20)+0x20)+0x20)"]
57 SUB ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","(freeptr-((((freeptr+0x04)+0x20)+0x20)+0x20))"]
58 DUP2 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","(freeptr-((((freeptr+0x04)+0x20)+0x20)+0x20))","freeptr"]
59 PUSH1 0x00 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","(freeptr-((((freeptr+0x04)+0x20)+0x20)+0x20))","freeptr","0x00"]
60 DUP8 ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","(freeptr-((((freeptr+0x04)+0x20)+0x20)+0x20))","freeptr","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)"]
61 PUSH2 0x61da ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","(freeptr-((((freeptr+0x04)+0x20)+0x20)+0x20))","freeptr","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0x61da"]
62 GAS ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","(freeptr-((((freeptr+0x04)+0x20)+0x20)+0x20))","freeptr","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0x61da","gas"]
63 SUB ["arg_to","arg_amount","ret_pc","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","0xbeabacc8","((((freeptr+0x04)+0x20)+0x20)+0x20)","0x20","freeptr","(freeptr-((((freeptr+0x04)+0x20)+0x20)+0x20))","freeptr","0x00","((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)","(0x61da-gas)"]
exec
js_repl in /tmp/codex-g936cym_
succeeded in 23ms:
PUSH2 0x026a ["calldata","0x026a"]
PUSH1 0x04 ["calldata","0x026a","0x04"]
DUP1 ["calldata","0x026a","0x04","0x04"]
DUP1 ["calldata","0x026a","0x04","0x04","0x04"]
CALLDATALOAD ["calldata","0x026a","0x04","0x04","cd[0x04]"]
SWAP1 ["calldata","0x026a","0x04","cd[0x04]","0x04"]
PUSH1 0x20 ["calldata","0x026a","0x04","cd[0x04]","0x04","0x20"]
ADD ["calldata","0x026a","0x04","cd[0x04]","(0x04+0x20)"]
SWAP1 ["calldata","0x026a","0x04","(0x04+0x20)","cd[0x04]"]
SWAP2 ["calldata","0x026a","cd[0x04]","(0x04+0x20)","0x04"]
SWAP1 ["calldata","0x026a","cd[0x04]","0x04","(0x04+0x20)"]
DUP1 ["calldata","0x026a","cd[0x04]","0x04","(0x04+0x20)","(0x04+0x20)"]
CALLDATALOAD ["calldata","0x026a","cd[0x04]","0x04","(0x04+0x20)","cd[(0x04+0x20)]"]
SWAP1 ["calldata","0x026a","cd[0x04]","0x04","cd[(0x04+0x20)]","(0x04+0x20)"]
PUSH1 0x20 ["calldata","0x026a","cd[0x04]","0x04","cd[(0x04+0x20)]","(0x04+0x20)","0x20"]
ADD ["calldata","0x026a","cd[0x04]","0x04","cd[(0x04+0x20)]","((0x04+0x20)+0x20)"]
SWAP1 ["calldata","0x026a","cd[0x04]","0x04","((0x04+0x20)+0x20)","cd[(0x04+0x20)]"]
SWAP2 ["calldata","0x026a","cd[0x04]","cd[(0x04+0x20)]","((0x04+0x20)+0x20)","0x04"]
SWAP1 ["calldata","0x026a","cd[0x04]","cd[(0x04+0x20)]","0x04","((0x04+0x20)+0x20)"]
POP ["calldata","0x026a","cd[0x04]","cd[(0x04+0x20)]","0x04"]
POP ["calldata","0x026a","cd[0x04]","cd[(0x04+0x20)]"]
PUSH2 0x0793 ["calldata","0x026a","cd[0x04]","cd[(0x04+0x20)]","0x0793"]
JUMP ["calldata","0x026a","cd[0x04]","cd[(0x04+0x20)]","0x0793"]
exec
js_repl in /tmp/codex-g936cym_
succeeded in 7ms:
Before CALL stack bottom->top: [
'ret_pc',
'to',
'amount',
'0x00',
'((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)',
'0xbeabacc8',
'((((0x80+0x04)+0x20)+0x20)+0x20)',
'0x20',
'0x80',
'(0x80-((((0x80+0x04)+0x20)+0x20)+0x20))',
'0x80',
'0x00',
'((((0x00**0x0100)/s[0x01])&0xffffffffffffffffffffffffffffffffffffffff)&0xffffffffffffffffffffffffffffffffffffffff)',
'(0x61da-gas)'
]
codex
{"no_findings":false,"summary":"Conservative bytecode-only review found two medium-confidence issues. The contract routes all ERC20-like operations through a mutable external backend stored in slot 0x1, and the same slot also anchors privileged authorization. Separately, every backend CALL decodes a 32-byte return value without returndata-length or code-existence checks, so misconfigured or non-compliant targets can produce false success or bogus reads. No delegatecall/proxy-slot write issue was evidenced in the runtime analyzed.","findings":[{"severity":"medium","category":"access_control","title":"Privileged authority is coupled to the live external backend","exploit_scenario":"Best-effort bytecode inference shows slot 0x1 is both the backend called by normal token entrypoints and the authority consulted by privileged paths. If that backend is malicious, upgraded unsafely, or compromised, a routine user call can trigger a callback from the backend into this wrapper; because the backend is also the trusted authority, the callback can pass auth and rewrite the backend/mode or emit arbitrary ERC20 events, permanently redirecting the wrapper or falsifying logs.","recommendation":"Separate authorization from the mutable backend address. Store owner/authority independently from the token backend, and do not let the currently called backend satisfy privileged checks. Adding explicit non-reentrant protection around privileged configuration/event-only functions would further reduce callback risk.","evidence":"Slot 0x1 is loaded as the CALL target for all externally exposed token-style wrappers (`pc:0x5e6`, `pc:0x69d`, `pc:0x774`, `pc:0x854`, `pc:0x952`, `pc:0xa33`, `pc:0xbbf`). The auth routine at `pc:0xa52` also uses slot 0x1: in one mode it accepts `msg.sender == slot1`, and in the other it calls `0xb7009613`, which matches `canCall(address,address,bytes4)`, on slot 0x1 (`pc:0xb16`). Privileged selectors `0x7e1db2a1` and `0x92eefe9b` then write slot 0x1 directly (`pc:0x348`, `pc:0x3ee`).","locations":["pc:0xa52","pc:0xb16","pc:0x348","pc:0x3ee","pc:0x5e6","pc:0x69d","pc:0x774","pc:0x854","pc:0x952","pc:0xa33","pc:0xbbf","selector:0x7e1db2a1","selector:0x92eefe9b"]},{"severity":"medium","category":"other","title":"Backend CALL return data is decoded without length or interface validation","exploit_scenario":"If slot 0x1 is set to an EOA, to this contract itself, or to a contract that returns short or empty data, the low-level CALL can still succeed. The wrapper then reads 32 bytes from memory and returns that as a bool/uint/address result. Because the code reuses the same memory region for call input and output, stale calldata words can be reported as successful `transfer`/`approve` results or as bogus balances/allowances/total supply.","recommendation":"Validate slot 0x1 before storing it: reject zero/EOA/self targets and require expected code/interface support. After each external CALL, check returndata length before decoding, and revert on empty or malformed responses instead of blindly `MLOAD`ing the output buffer.","evidence":"Every external backend invocation requests a fixed 32-byte output and immediately loads it from memory after CALL success, with no visible `RETURNDATASIZE` check and no code-existence check before the call (`pc:0x5ef`-`pc:0x5f3`, `pc:0x6a6`-`pc:0x6aa`, `pc:0x77d`-`pc:0x781`, `pc:0x85d`-`pc:0x861`, `pc:0x95b`-`pc:0x95f`, `pc:0xa3c`-`pc:0xa40`, `pc:0xbc8`-`pc:0xbcc`). The config setters inferred from selectors `0x7e1db2a1` and `0x92eefe9b` store arbitrary addresses into slot 0x1 without any visible contract/interface validation (`pc:0x348`, `pc:0x3ee`).","locations":["pc:0x5ef","pc:0x6a6","pc:0x77d","pc:0x85d","pc:0x95b","pc:0xa3c","pc:0xbc8","pc:0x348","pc:0x3ee","selector:0x7e1db2a1","selector:0x92eefe9b"]}]}
tokens used
96,597
{
"codex": {
"ran_at": "2026-04-05T04:55:51.913787+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 6082,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Conservative bytecode-only review found two medium-confidence issues. The contract routes all ERC20-like operations through a mutable external backend stored in slot 0x1, and the same slot also anchors privileged authorization. Separately, every backend CALL decodes a 32-byte return value without returndata-length or code-existence checks, so misconfigured or non-compliant targets can produce false success or bogus reads. No delegatecall/proxy-slot write issue was evidenced in the runtime analyzed.",
"raw_final": {
"summary": "Conservative bytecode-only review found two medium-confidence issues. The contract routes all ERC20-like operations through a mutable external backend stored in slot 0x1, and the same slot also anchors privileged authorization. Separately, every backend CALL decodes a 32-byte return value without returndata-length or code-existence checks, so misconfigured or non-compliant targets can produce false success or bogus reads. No delegatecall/proxy-slot write issue was evidenced in the runtime analyzed.",
"findings": [
{
"title": "Privileged authority is coupled to the live external backend",
"category": "access_control",
"evidence": "Slot 0x1 is loaded as the CALL target for all externally exposed token-style wrappers (`pc:0x5e6`, `pc:0x69d`, `pc:0x774`, `pc:0x854`, `pc:0x952`, `pc:0xa33`, `pc:0xbbf`). The auth routine at `pc:0xa52` also uses slot 0x1: in one mode it accepts `msg.sender == slot1`, and in the other it calls `0xb7009613`, which matches `canCall(address,address,bytes4)`, on slot 0x1 (`pc:0xb16`). Privileged selectors `0x7e1db2a1` and `0x92eefe9b` then write slot 0x1 directly (`pc:0x348`, `pc:0x3ee`).",
"severity": "medium",
"locations": [
"pc:0xa52",
"pc:0xb16",
"pc:0x348",
"pc:0x3ee",
"pc:0x5e6",
"pc:0x69d",
"pc:0x774",
"pc:0x854",
"pc:0x952",
"pc:0xa33",
"pc:0xbbf",
"selector:0x7e1db2a1",
"selector:0x92eefe9b"
],
"recommendation": "Separate authorization from the mutable backend address. Store owner/authority independently from the token backend, and do not let the currently called backend satisfy privileged checks. Adding explicit non-reentrant protection around privileged configuration/event-only functions would further reduce callback risk.",
"exploit_scenario": "Best-effort bytecode inference shows slot 0x1 is both the backend called by normal token entrypoints and the authority consulted by privileged paths. If that backend is malicious, upgraded unsafely, or compromised, a routine user call can trigger a callback from the backend into this wrapper; because the backend is also the trusted authority, the callback can pass auth and rewrite the backend/mode or emit arbitrary ERC20 events, permanently redirecting the wrapper or falsifying logs."
},
{
"title": "Backend CALL return data is decoded without length or interface validation",
"category": "other",
"evidence": "Every external backend invocation requests a fixed 32-byte output and immediately loads it from memory after CALL success, with no visible `RETURNDATASIZE` check and no code-existence check before the call (`pc:0x5ef`-`pc:0x5f3`, `pc:0x6a6`-`pc:0x6aa`, `pc:0x77d`-`pc:0x781`, `pc:0x85d`-`pc:0x861`, `pc:0x95b`-`pc:0x95f`, `pc:0xa3c`-`pc:0xa40`, `pc:0xbc8`-`pc:0xbcc`). The config setters inferred from selectors `0x7e1db2a1` and `0x92eefe9b` store arbitrary addresses into slot 0x1 without any visible contract/interface validation (`pc:0x348`, `pc:0x3ee`).",
"severity": "medium",
"locations": [
"pc:0x5ef",
"pc:0x6a6",
"pc:0x77d",
"pc:0x85d",
"pc:0x95b",
"pc:0xa3c",
"pc:0xbc8",
"pc:0x348",
"pc:0x3ee",
"selector:0x7e1db2a1",
"selector:0x92eefe9b"
],
"recommendation": "Validate slot 0x1 before storing it: reject zero/EOA/self targets and require expected code/interface support. After each external CALL, check returndata length before decoding, and revert on empty or malformed responses instead of blindly `MLOAD`ing the output buffer.",
"exploit_scenario": "If slot 0x1 is set to an EOA, to this contract itself, or to a contract that returns short or empty data, the low-level CALL can still succeed. The wrapper then reads 32 bytes from memory and returns that as a bool/uint/address result. Because the code reuses the same memory region for call input and output, stale calldata words can be reported as successful `transfer`/`approve` results or as bogus balances/allowances/total supply."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x00c1 0000000a: JUMPI 0000000b: PUSH1 0x00 0000000d: CALLDATALOAD 0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000002c: SWAP1 0000002d: DIV 0000002e: DUP1 0000002f: PUSH4 0x095ea7b3 00000034: EQ 00000035: PUSH2 0x00c3 00000038: JUMPI 00000039: DUP1 0000003a: PUSH4 0x18160ddd 0000003f: EQ 00000040: PUSH2 0x00f8 00000043: JUMPI 00000044: DUP1 00000045: PUSH4 0x23b872dd 0000004a: EQ 0000004b: PUSH2 0x011b 0000004e: JUMPI 0000004f: DUP1 00000050: PUSH4 0x23de6651 00000055: EQ 00000056: PUSH2 0x0159 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0x3018205f 00000060: EQ 00000061: PUSH2 0x0183 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0x5687f2b8 0000006b: EQ 0000006c: PUSH2 0x01bc 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x70a08231 00000076: EQ 00000077: PUSH2 0x01e6 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x7e1db2a1 00000081: EQ 00000082: PUSH2 0x0212 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0x92eefe9b 0000008c: EQ 0000008d: PUSH2 0x0233 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xa9059cbb 00000097: EQ 00000098: PUSH2 0x024b 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xc2205ee1 000000a2: EQ 000000a3: PUSH2 0x0280 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xd551f601 000000ad: EQ 000000ae: PUSH2 0x02b9 000000b1: JUMPI 000000b2: DUP1 000000b3: PUSH4 0xdd62ed3e 000000b8: EQ 000000b9: PUSH2 0x02dc 000000bc: JUMPI 000000bd: PUSH2 0x00c1 000000c0: JUMP 000000c1: JUMPDEST 000000c2: STOP 000000c3: JUMPDEST 000000c4: PUSH2 0x00e2 000000c7: PUSH1 0x04 000000c9: DUP1 000000ca: DUP1 000000cb: CALLDATALOAD 000000cc: SWAP1 000000cd: PUSH1 0x20 000000cf: ADD 000000d0: SWAP1 000000d1: SWAP2 000000d2: SWAP1 000000d3: DUP1 000000d4: CALLDATALOAD 000000d5: SWAP1 000000d6: PUSH1 0x20 000000d8: ADD 000000d9: SWAP1 000000da: SWAP2 000000db: SWAP1 000000dc: POP 000000dd: POP 000000de: PUSH2 0x0972 000000e1: JUMP 000000e2: JUMPDEST 000000e3: PUSH1 0x40 000000e5: MLOAD 000000e6: DUP1 000000e7: DUP3 000000e8: DUP2 000000e9: MSTORE 000000ea: PUSH1 0x20 000000ec: ADD 000000ed: SWAP2 000000ee: POP 000000ef: POP 000000f0: PUSH1 0x40 000000f2: MLOAD 000000f3: DUP1 000000f4: SWAP2 000000f5: SUB 000000f6: SWAP1 000000f7: RETURN 000000f8: JUMPDEST 000000f9: PUSH2 0x0105 000000fc: PUSH1 0x04 000000fe: DUP1 000000ff: POP 00000100: POP 00000101: PUSH2 0x0569 00000104: JUMP 00000105: JUMPDEST 00000106: PUSH1 0x40 00000108: MLOAD 00000109: DUP1 0000010a: DUP3 0000010b: DUP2 0000010c: MSTORE 0000010d: PUSH1 0x20 0000010f: ADD 00000110: SWAP2 00000111: POP 00000112: POP 00000113: PUSH1 0x40 00000115: MLOAD 00000116: DUP1 00000117: SWAP2 00000118: SUB 00000119: SWAP1 0000011a: RETURN 0000011b: JUMPDEST 0000011c: PUSH2 0x0143 0000011f: PUSH1 0x04 00000121: DUP1 00000122: DUP1 00000123: CALLDATALOAD 00000124: SWAP1 00000125: PUSH1 0x20 00000127: ADD 00000128: SWAP1 00000129: SWAP2 0000012a: SWAP1 0000012b: DUP1 0000012c: CALLDATALOAD 0000012d: SWAP1 0000012e: PUSH1 0x20 00000130: ADD 00000131: SWAP1 00000132: SWAP2 00000133: SWAP1 00000134: DUP1 00000135: CALLDATALOAD 00000136: SWAP1 00000137: PUSH1 0x20 00000139: ADD 0000013a: SWAP1 0000013b: SWAP2 0000013c: SWAP1 0000013d: POP 0000013e: POP 0000013f: PUSH2 0x0873 00000142: JUMP 00000143: JUMPDEST 00000144: PUSH1 0x40 00000146: MLOAD 00000147: DUP1 00000148: DUP3 00000149: DUP2 0000014a: MSTORE 0000014b: PUSH1 0x20 0000014d: ADD 0000014e: SWAP2 0000014f: POP 00000150: POP 00000151: PUSH1 0x40 00000153: MLOAD 00000154: DUP1 00000155: SWAP2 00000156: SUB 00000157: SWAP1 00000158: RETURN 00000159: JUMPDEST 0000015a: PUSH2 0x0181 0000015d: PUSH1 0x04 0000015f: DUP1 00000160: DUP1 00000161: CALLDATALOAD 00000162: SWAP1 00000163: PUSH1 0x20 00000165: ADD 00000166: SWAP1 00000167: SWAP2 00000168: SWAP1 00000169: DUP1 0000016a: CALLDATALOAD 0000016b: SWAP1 0000016c: PUSH1 0x20 0000016e: ADD 0000016f: SWAP1 00000170: SWAP2 00000171: SWAP1 00000172: DUP1 00000173: CALLDATALOAD 00000174: SWAP1 00000175: PUSH1 0x20 00000177: ADD 00000178: SWAP1 00000179: SWAP2 0000017a: SWAP1 0000017b: POP 0000017c: POP 0000017d: PUSH2 0x0465 00000180: JUMP 00000181: JUMPDEST 00000182: STOP 00000183: JUMPDEST 00000184: PUSH2 0x0190 00000187: PUSH1 0x04 00000189: DUP1 0000018a: POP 0000018b: POP 0000018c: PUSH2 0x0436 0000018f: JUMP 00000190: JUMPDEST 00000191: PUSH1 0x40 00000193: MLOAD 00000194: DUP1 00000195: DUP3 00000196: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001ab: AND 000001ac: DUP2 000001ad: MSTORE 000001ae: PUSH1 0x20 000001b0: ADD 000001b1: SWAP2 000001b2: POP 000001b3: POP 000001b4: PUSH1 0x40 000001b6: MLOAD 000001b7: DUP1 000001b8: SWAP2 000001b9: SUB 000001ba: SWAP1 000001bb: RETURN 000001bc: JUMPDEST 000001bd: PUSH2 0x01e4 000001c0: PUSH1 0x04 000001c2: DUP1 000001c3: DUP1 000001c4: CALLDATALOAD 000001c5: SWAP1 000001c6: PUSH1 0x20 000001c8: ADD 000001c9: SWAP1 000001ca: SWAP2 000001cb: SWAP1 000001cc: DUP1 000001cd: CALLDATALOAD 000001ce: SWAP1 000001cf: PUSH1 0x20 000001d1: ADD 000001d2: SWAP1 000001d3: SWAP2 000001d4: SWAP1 000001d5: DUP1 000001d6: CALLDATALOAD 000001d7: SWAP1 000001d8: PUSH1 0x20 000001da: ADD 000001db: SWAP1 000001dc: SWAP2 000001dd: SWAP1 000001de: POP 000001df: POP 000001e0: PUSH2 0x04e7 000001e3: JUMP 000001e4: JUMPDEST 000001e5: STOP 000001e6: JUMPDEST 000001e7: PUSH2 0x01fc 000001ea: PUSH1 0x04 000001ec: DUP1 000001ed: DUP1 000001ee: CALLDATALOAD 000001ef: SWAP1 000001f0: PUSH1 0x20 000001f2: ADD 000001f3: SWAP1 000001f4: SWAP2 000001f5: SWAP1 000001f6: POP 000001f7: POP 000001f8: PUSH2 0x0602 000001fb: JUMP 000001fc: JUMPDEST 000001fd: PUSH1 0x40 000001ff: MLOAD 00000200: DUP1 00000201: DUP3 00000202: DUP2 00000203: MSTORE 00000204: PUSH1 0x20 00000206: ADD 00000207: SWAP2 00000208: POP 00000209: POP 0000020a: PUSH1 0x40 0000020c: MLOAD 0000020d: DUP1 0000020e: SWAP2 0000020f: SUB 00000210: SWAP1 00000211: RETURN 00000212: JUMPDEST 00000213: PUSH2 0x0231 00000216: PUSH1 0x04 00000218: DUP1 00000219: DUP1 0000021a: CALLDATALOAD 0000021b: SWAP1 0000021c: PUSH1 0x20 0000021e: ADD 0000021f: SWAP1 00000220: SWAP2 00000221: SWAP1 00000222: DUP1 00000223: CALLDATALOAD 00000224: SWAP1 00000225: PUSH1 0x20 00000227: ADD 00000228: SWAP1 00000229: SWAP2 0000022a: SWAP1 0000022b: POP 0000022c: POP 0000022d: PUSH2 0x0311 00000230: JUMP 00000231: JUMPDEST 00000232: STOP 00000233: JUMPDEST 00000234: PUSH2 0x0249 00000237: PUSH1 0x04 00000239: DUP1 0000023a: DUP1 0000023b: CALLDATALOAD 0000023c: SWAP1 0000023d: PUSH1 0x20 0000023f: ADD 00000240: SWAP1 00000241: SWAP2 00000242: SWAP1 00000243: POP 00000244: POP 00000245: PUSH2 0x03b7 00000248: JUMP 00000249: JUMPDEST 0000024a: STOP 0000024b: JUMPDEST 0000024c: PUSH2 0x026a 0000024f: PUSH1 0x04 00000251: DUP1 00000252: DUP1 00000253: CALLDATALOAD 00000254: SWAP1 00000255: PUSH1 0x20 00000257: ADD 00000258: SWAP1 00000259: SWAP2 0000025a: SWAP1 0000025b: DUP1 0000025c: CALLDATALOAD 0000025d: SWAP1 0000025e: PUSH1 0x20 00000260: ADD 00000261: SWAP1 00000262: SWAP2 00000263: SWAP1 00000264: POP 00000265: POP 00000266: PUSH2 0x0793 00000269: JUMP 0000026a: JUMPDEST 0000026b: PUSH1 0x40 0000026d: MLOAD 0000026e: DUP1 0000026f: DUP3 00000270: DUP2 00000271: MSTORE 00000272: PUSH1 0x20 00000274: ADD 00000275: SWAP2 00000276: POP 00000277: POP 00000278: PUSH1 0x40 0000027a: MLOAD 0000027b: DUP1 0000027c: SWAP2 0000027d: SUB 0000027e: SWAP1 0000027f: RETURN 00000280: JUMPDEST 00000281: PUSH2 0x028d 00000284: PUSH1 0x04 00000286: DUP1 00000287: POP 00000288: POP 00000289: PUSH2 0x0410 0000028c: JUMP 0000028d: JUMPDEST 0000028e: PUSH1 0x40 00000290: MLOAD 00000291: DUP1 00000292: DUP3 00000293: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002a8: AND 000002a9: DUP2 000002aa: MSTORE 000002ab: PUSH1 0x20 000002ad: ADD 000002ae: SWAP2 000002af: POP 000002b0: POP 000002b1: PUSH1 0x40 000002b3: MLOAD 000002b4: DUP1 000002b5: SWAP2 000002b6: SUB 000002b7: SWAP1 000002b8: RETURN 000002b9: JUMPDEST 000002ba: PUSH2 0x02c6 000002bd: PUSH1 0x04 000002bf: DUP1 000002c0: POP 000002c1: POP 000002c2: PUSH2 0x03fd 000002c5: JUMP 000002c6: JUMPDEST 000002c7: PUSH1 0x40 000002c9: MLOAD 000002ca: DUP1 000002cb: DUP3 000002cc: DUP2 000002cd: MSTORE 000002ce: PUSH1 0x20 000002d0: ADD 000002d1: SWAP2 000002d2: POP 000002d3: POP 000002d4: PUSH1 0x40 000002d6: MLOAD 000002d7: DUP1 000002d8: SWAP2 000002d9: SUB 000002da: SWAP1 000002db: RETURN 000002dc: JUMPDEST 000002dd: PUSH2 0x02fb 000002e0: PUSH1 0x04 000002e2: DUP1 000002e3: DUP1 000002e4: CALLDATALOAD 000002e5: SWAP1 000002e6: PUSH1 0x20 000002e8: ADD 000002e9: SWAP1 000002ea: SWAP2 000002eb: SWAP1 000002ec: DUP1 000002ed: CALLDATALOAD 000002ee: SWAP1 000002ef: PUSH1 0x20 000002f1: ADD 000002f2: SWAP1 000002f3: SWAP2 000002f4: SWAP1 000002f5: POP 000002f6: POP 000002f7: PUSH2 0x06bb 000002fa: JUMP 000002fb: JUMPDEST 000002fc: PUSH1 0x40 000002fe: MLOAD 000002ff: DUP1 00000300: DUP3 00000301: DUP2 00000302: MSTORE 00000303: PUSH1 0x20 00000305: ADD 00000306: SWAP2 00000307: POP 00000308: POP 00000309: PUSH1 0x40 0000030b: MLOAD 0000030c: DUP1 0000030d: SWAP2 0000030e: SUB 0000030f: SWAP1 00000310: RETURN 00000311: JUMPDEST 00000312: PUSH2 0x0319 00000315: PUSH2 0x0a52 00000318: JUMP 00000319: JUMPDEST 0000031a: ISZERO 0000031b: PUSH2 0x03ad 0000031e: JUMPI 0000031f: DUP2 00000320: PUSH1 0x00 00000322: PUSH1 0x01 00000324: PUSH2 0x0100 00000327: EXP 00000328: DUP2 00000329: SLOAD 0000032a: DUP2 0000032b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000340: MUL 00000341: NOT 00000342: AND 00000343: SWAP1 00000344: DUP4 00000345: MUL 00000346: OR 00000347: SWAP1 00000348: SSTORE 00000349: POP 0000034a: DUP1 0000034b: PUSH1 0x00 0000034d: PUSH1 0x00 0000034f: PUSH2 0x0100 00000352: EXP 00000353: DUP2 00000354: SLOAD 00000355: DUP2 00000356: PUSH1 0xff 00000358: MUL 00000359: NOT 0000035a: AND 0000035b: SWAP1 0000035c: DUP4 0000035d: MUL 0000035e: OR 0000035f: SWAP1 00000360: SSTORE 00000361: POP 00000362: DUP1 00000363: DUP3 00000364: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000379: AND 0000037a: PUSH32 0xb96a5204da93e5d7ddd5b0c2616fd5f76322b9c383c5010b94fdc3df11b7be52 0000039b: PUSH1 0x40 0000039d: MLOAD 0000039e: DUP1 0000039f: SWAP1 000003a0: POP 000003a1: PUSH1 0x40 000003a3: MLOAD 000003a4: DUP1 000003a5: SWAP2 000003a6: SUB 000003a7: SWAP1 000003a8: LOG3 000003a9: PUSH2 0x03b2 000003ac: JUMP 000003ad: JUMPDEST 000003ae: PUSH2 0x0002 000003b1: JUMP 000003b2: JUMPDEST 000003b3: JUMPDEST 000003b4: POP 000003b5: POP 000003b6: JUMP 000003b7: JUMPDEST 000003b8: PUSH2 0x03bf 000003bb: PUSH2 0x0a52 000003be: JUMP 000003bf: JUMPDEST 000003c0: ISZERO 000003c1: PUSH2 0x03f4 000003c4: JUMPI 000003c5: DUP1 000003c6: PUSH1 0x01 000003c8: PUSH1 0x00 000003ca: PUSH2 0x0100 000003cd: EXP 000003ce: DUP2 000003cf: SLOAD 000003d0: DUP2 000003d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003e6: MUL 000003e7: NOT 000003e8: AND 000003e9: SWAP1 000003ea: DUP4 000003eb: MUL 000003ec: OR 000003ed: SWAP1 000003ee: SSTORE 000003ef: POP 000003f0: PUSH2 0x03f9 000003f3: JUMP 000003f4: JUMPDEST 000003f5: PUSH2 0x0002 000003f8: JUMP 000003f9: JUMPDEST 000003fa: JUMPDEST 000003fb: POP 000003fc: JUMP 000003fd: JUMPDEST 000003fe: PUSH1 0x00 00000400: PUSH1 0x00 00000402: SWAP1 00000403: SLOAD 00000404: SWAP1 00000405: PUSH2 0x0100 00000408: EXP 00000409: SWAP1 0000040a: DIV 0000040b: PUSH1 0xff 0000040d: AND 0000040e: DUP2 0000040f: JUMP 00000410: JUMPDEST 00000411: PUSH1 0x00 00000413: PUSH1 0x01 00000415: SWAP1 00000416: SLOAD 00000417: SWAP1 00000418: PUSH2 0x0100 0000041b: EXP 0000041c: SWAP1 0000041d: DIV 0000041e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000433: AND 00000434: DUP2 00000435: JUMP 00000436: JUMPDEST 00000437: PUSH1 0x00 00000439: PUSH1 0x01 0000043b: PUSH1 0x00 0000043d: SWAP1 0000043e: SLOAD 0000043f: SWAP1 00000440: PUSH2 0x0100 00000443: EXP 00000444: SWAP1 00000445: DIV 00000446: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000045b: AND 0000045c: SWAP1 0000045d: POP 0000045e: PUSH2 0x0462 00000461: JUMP 00000462: JUMPDEST 00000463: SWAP1 00000464: JUMP 00000465: JUMPDEST 00000466: PUSH2 0x046d 00000469: PUSH2 0x0a52 0000046c: JUMP 0000046d: JUMPDEST 0000046e: ISZERO 0000046f: PUSH2 0x04dc 00000472: JUMPI 00000473: DUP2 00000474: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000489: AND 0000048a: DUP4 0000048b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004a0: AND 000004a1: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000004c2: DUP4 000004c3: PUSH1 0x40 000004c5: MLOAD 000004c6: DUP1 000004c7: DUP3 000004c8: DUP2 000004c9: MSTORE 000004ca: PUSH1 0x20 000004cc: ADD 000004cd: SWAP2 000004ce: POP 000004cf: POP 000004d0: PUSH1 0x40 000004d2: MLOAD 000004d3: DUP1 000004d4: SWAP2 000004d5: SUB 000004d6: SWAP1 000004d7: LOG3 000004d8: PUSH2 0x04e1 000004db: JUMP 000004dc: JUMPDEST 000004dd: PUSH2 0x0002 000004e0: JUMP 000004e1: JUMPDEST 000004e2: JUMPDEST 000004e3: POP 000004e4: POP 000004e5: POP 000004e6: JUMP 000004e7: JUMPDEST 000004e8: PUSH2 0x04ef 000004eb: PUSH2 0x0a52 000004ee: JUMP 000004ef: JUMPDEST 000004f0: ISZERO 000004f1: PUSH2 0x055e 000004f4: JUMPI 000004f5: DUP2 000004f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000050b: AND 0000050c: DUP4 0000050d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000522: AND 00000523: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000544: DUP4 00000545: PUSH1 0x40 00000547: MLOAD 00000548: DUP1 00000549: DUP3 0000054a: DUP2 0000054b: MSTORE 0000054c: PUSH1 0x20 0000054e: ADD 0000054f: SWAP2 00000550: POP 00000551: POP 00000552: PUSH1 0x40 00000554: MLOAD 00000555: DUP1 00000556: SWAP2 00000557: SUB 00000558: SWAP1 00000559: LOG3 0000055a: PUSH2 0x0563 0000055d: JUMP 0000055e: JUMPDEST 0000055f: PUSH2 0x0002 00000562: JUMP 00000563: JUMPDEST 00000564: JUMPDEST 00000565: POP 00000566: POP 00000567: POP 00000568: JUMP 00000569: JUMPDEST 0000056a: PUSH1 0x00 0000056c: PUSH1 0x01 0000056e: PUSH1 0x00 00000570: SWAP1 00000571: SLOAD 00000572: SWAP1 00000573: PUSH2 0x0100 00000576: EXP 00000577: SWAP1 00000578: DIV 00000579: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000058e: AND 0000058f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005a4: AND 000005a5: PUSH4 0x18160ddd 000005aa: PUSH1 0x40 000005ac: MLOAD 000005ad: DUP2 000005ae: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000005cc: MUL 000005cd: DUP2 000005ce: MSTORE 000005cf: PUSH1 0x04 000005d1: ADD 000005d2: DUP1 000005d3: SWAP1 000005d4: POP 000005d5: PUSH1 0x20 000005d7: PUSH1 0x40 000005d9: MLOAD 000005da: DUP1 000005db: DUP4 000005dc: SUB 000005dd: DUP2 000005de: PUSH1 0x00 000005e0: DUP8 000005e1: PUSH2 0x61da 000005e4: GAS 000005e5: SUB 000005e6: CALL 000005e7: ISZERO 000005e8: PUSH2 0x0002 000005eb: JUMPI 000005ec: POP 000005ed: POP 000005ee: POP 000005ef: PUSH1 0x40 000005f1: MLOAD 000005f2: DUP1 000005f3: MLOAD 000005f4: SWAP1 000005f5: PUSH1 0x20 000005f7: ADD 000005f8: POP 000005f9: SWAP1 000005fa: POP 000005fb: PUSH2 0x05ff 000005fe: JUMP 000005ff: JUMPDEST 00000600: SWAP1 00000601: JUMP 00000602: JUMPDEST 00000603: PUSH1 0x00 00000605: PUSH1 0x01 00000607: PUSH1 0x00 00000609: SWAP1 0000060a: SLOAD 0000060b: SWAP1 0000060c: PUSH2 0x0100 0000060f: EXP 00000610: SWAP1 00000611: DIV 00000612: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000627: AND 00000628: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000063d: AND 0000063e: PUSH4 0x70a08231 00000643: DUP4 00000644: PUSH1 0x40 00000646: MLOAD 00000647: DUP3 00000648: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000666: MUL 00000667: DUP2 00000668: MSTORE 00000669: PUSH1 0x04 0000066b: ADD 0000066c: DUP1 0000066d: DUP3 0000066e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000683: AND 00000684: DUP2 00000685: MSTORE 00000686: PUSH1 0x20 00000688: ADD 00000689: SWAP2 0000068a: POP 0000068b: POP 0000068c: PUSH1 0x20 0000068e: PUSH1 0x40 00000690: MLOAD 00000691: DUP1 00000692: DUP4 00000693: SUB 00000694: DUP2 00000695: PUSH1 0x00 00000697: DUP8 00000698: PUSH2 0x61da 0000069b: GAS 0000069c: SUB 0000069d: CALL 0000069e: ISZERO 0000069f: PUSH2 0x0002 000006a2: JUMPI 000006a3: POP 000006a4: POP 000006a5: POP 000006a6: PUSH1 0x40 000006a8: MLOAD 000006a9: DUP1 000006aa: MLOAD 000006ab: SWAP1 000006ac: PUSH1 0x20 000006ae: ADD 000006af: POP 000006b0: SWAP1 000006b1: POP 000006b2: PUSH2 0x06b6 000006b5: JUMP 000006b6: JUMPDEST 000006b7: SWAP2 000006b8: SWAP1 000006b9: POP 000006ba: JUMP 000006bb: JUMPDEST 000006bc: PUSH1 0x00 000006be: PUSH1 0x01 000006c0: PUSH1 0x00 000006c2: SWAP1 000006c3: SLOAD 000006c4: SWAP1 000006c5: PUSH2 0x0100 000006c8: EXP 000006c9: SWAP1 000006ca: DIV 000006cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006e0: AND 000006e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006f6: AND 000006f7: PUSH4 0xdd62ed3e 000006fc: DUP5 000006fd: DUP5 000006fe: PUSH1 0x40 00000700: MLOAD 00000701: DUP4 00000702: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000720: MUL 00000721: DUP2 00000722: MSTORE 00000723: PUSH1 0x04 00000725: ADD 00000726: DUP1 00000727: DUP4 00000728: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000073d: AND 0000073e: DUP2 0000073f: MSTORE 00000740: PUSH1 0x20 00000742: ADD 00000743: DUP3 00000744: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000759: AND 0000075a: DUP2 0000075b: MSTORE 0000075c: PUSH1 0x20 0000075e: ADD 0000075f: SWAP3 00000760: POP 00000761: POP 00000762: POP 00000763: PUSH1 0x20 00000765: PUSH1 0x40 00000767: MLOAD 00000768: DUP1 00000769: DUP4 0000076a: SUB 0000076b: DUP2 0000076c: PUSH1 0x00 0000076e: DUP8 0000076f: PUSH2 0x61da 00000772: GAS 00000773: SUB 00000774: CALL 00000775: ISZERO 00000776: PUSH2 0x0002 00000779: JUMPI 0000077a: POP 0000077b: POP 0000077c: POP 0000077d: PUSH1 0x40 0000077f: MLOAD 00000780: DUP1 00000781: MLOAD 00000782: SWAP1 00000783: PUSH1 0x20 00000785: ADD 00000786: POP 00000787: SWAP1 00000788: POP 00000789: PUSH2 0x078d 0000078c: JUMP 0000078d: JUMPDEST 0000078e: SWAP3 0000078f: SWAP2 00000790: POP 00000791: POP 00000792: JUMP 00000793: JUMPDEST 00000794: PUSH1 0x00 00000796: PUSH1 0x01 00000798: PUSH1 0x00 0000079a: SWAP1 0000079b: SLOAD 0000079c: SWAP1 0000079d: PUSH2 0x0100 000007a0: EXP 000007a1: SWAP1 000007a2: DIV 000007a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007b8: AND 000007b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007ce: AND 000007cf: PUSH4 0xbeabacc8 000007d4: CALLER 000007d5: DUP6 000007d6: DUP6 000007d7: PUSH1 0x40 000007d9: MLOAD 000007da: DUP5 000007db: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000007f9: MUL 000007fa: DUP2 000007fb: MSTORE 000007fc: PUSH1 0x04 000007fe: ADD 000007ff: DUP1 00000800: DUP5 00000801: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000816: AND 00000817: DUP2 00000818: MSTORE 00000819: PUSH1 0x20 0000081b: ADD 0000081c: DUP4 0000081d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000832: AND 00000833: DUP2 00000834: MSTORE 00000835: PUSH1 0x20 00000837: ADD 00000838: DUP3 00000839: DUP2 0000083a: MSTORE 0000083b: PUSH1 0x20 0000083d: ADD 0000083e: SWAP4 0000083f: POP 00000840: POP 00000841: POP 00000842: POP 00000843: PUSH1 0x20 00000845: PUSH1 0x40 00000847: MLOAD 00000848: DUP1 00000849: DUP4 0000084a: SUB 0000084b: DUP2 0000084c: PUSH1 0x00 0000084e: DUP8 0000084f: PUSH2 0x61da 00000852: GAS 00000853: SUB 00000854: CALL 00000855: ISZERO 00000856: PUSH2 0x0002 00000859: JUMPI 0000085a: POP 0000085b: POP 0000085c: POP 0000085d: PUSH1 0x40 0000085f: MLOAD 00000860: DUP1 00000861: MLOAD 00000862: SWAP1 00000863: PUSH1 0x20 00000865: ADD 00000866: POP 00000867: SWAP1 00000868: POP 00000869: PUSH2 0x086d 0000086c: JUMP 0000086d: JUMPDEST 0000086e: SWAP3 0000086f: SWAP2 00000870: POP 00000871: POP 00000872: JUMP 00000873: JUMPDEST 00000874: PUSH1 0x00 00000876: PUSH1 0x01 00000878: PUSH1 0x00 0000087a: SWAP1 0000087b: SLOAD 0000087c: SWAP1 0000087d: PUSH2 0x0100 00000880: EXP 00000881: SWAP1 00000882: DIV 00000883: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000898: AND 00000899: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008ae: AND 000008af: PUSH4 0x15dacbea 000008b4: CALLER 000008b5: DUP7 000008b6: DUP7 000008b7: DUP7 000008b8: PUSH1 0x40 000008ba: MLOAD 000008bb: DUP6 000008bc: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000008da: MUL 000008db: DUP2 000008dc: MSTORE 000008dd: PUSH1 0x04 000008df: ADD 000008e0: DUP1 000008e1: DUP6 000008e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008f7: AND 000008f8: DUP2 000008f9: MSTORE 000008fa: PUSH1 0x20 000008fc: ADD 000008fd: DUP5 000008fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000913: AND 00000914: DUP2 00000915: MSTORE 00000916: PUSH1 0x20 00000918: ADD 00000919: DUP4 0000091a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000092f: AND 00000930: DUP2 00000931: MSTORE 00000932: PUSH1 0x20 00000934: ADD 00000935: DUP3 00000936: DUP2 00000937: MSTORE 00000938: PUSH1 0x20 0000093a: ADD 0000093b: SWAP5 0000093c: POP 0000093d: POP 0000093e: POP 0000093f: POP 00000940: POP 00000941: PUSH1 0x20 00000943: PUSH1 0x40 00000945: MLOAD 00000946: DUP1 00000947: DUP4 00000948: SUB 00000949: DUP2 0000094a: PUSH1 0x00 0000094c: DUP8 0000094d: PUSH2 0x61da 00000950: GAS 00000951: SUB 00000952: CALL 00000953: ISZERO 00000954: PUSH2 0x0002 00000957: JUMPI 00000958: POP 00000959: POP 0000095a: POP 0000095b: PUSH1 0x40 0000095d: MLOAD 0000095e: DUP1 0000095f: MLOAD 00000960: SWAP1 00000961: PUSH1 0x20 00000963: ADD 00000964: POP 00000965: SWAP1 00000966: POP 00000967: PUSH2 0x096b 0000096a: JUMP 0000096b: JUMPDEST 0000096c: SWAP4 0000096d: SWAP3 0000096e: POP 0000096f: POP 00000970: POP 00000971: JUMP 00000972: JUMPDEST 00000973: PUSH1 0x00 00000975: PUSH1 0x01 00000977: PUSH1 0x00 00000979: SWAP1 0000097a: SLOAD 0000097b: SWAP1 0000097c: PUSH2 0x0100 0000097f: EXP 00000980: SWAP1 00000981: DIV 00000982: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000997: AND 00000998: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009ad: AND 000009ae: PUSH4 0xe1f21c67 000009b3: CALLER 000009b4: DUP6 000009b5: DUP6 000009b6: PUSH1 0x40 000009b8: MLOAD 000009b9: DUP5 000009ba: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000009d8: MUL 000009d9: DUP2 000009da: MSTORE 000009db: PUSH1 0x04 000009dd: ADD 000009de: DUP1 000009df: DUP5 000009e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009f5: AND 000009f6: DUP2 000009f7: MSTORE 000009f8: PUSH1 0x20 000009fa: ADD 000009fb: DUP4 000009fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a11: AND 00000a12: DUP2 00000a13: MSTORE 00000a14: PUSH1 0x20 00000a16: ADD 00000a17: DUP3 00000a18: DUP2 00000a19: MSTORE 00000a1a: PUSH1 0x20 00000a1c: ADD 00000a1d: SWAP4 00000a1e: POP 00000a1f: POP 00000a20: POP 00000a21: POP 00000a22: PUSH1 0x20 00000a24: PUSH1 0x40 00000a26: MLOAD 00000a27: DUP1 00000a28: DUP4 00000a29: SUB 00000a2a: DUP2 00000a2b: PUSH1 0x00 00000a2d: DUP8 00000a2e: PUSH2 0x61da 00000a31: GAS 00000a32: SUB 00000a33: CALL 00000a34: ISZERO 00000a35: PUSH2 0x0002 00000a38: JUMPI 00000a39: POP 00000a3a: POP 00000a3b: POP 00000a3c: PUSH1 0x40 00000a3e: MLOAD 00000a3f: DUP1 00000a40: MLOAD 00000a41: SWAP1 00000a42: PUSH1 0x20 00000a44: ADD 00000a45: POP 00000a46: SWAP1 00000a47: POP 00000a48: PUSH2 0x0a4c 00000a4b: JUMP 00000a4c: JUMPDEST 00000a4d: SWAP3 00000a4e: SWAP2 00000a4f: POP 00000a50: POP 00000a51: JUMP 00000a52: JUMPDEST 00000a53: PUSH1 0x00 00000a55: PUSH1 0x00 00000a57: PUSH1 0x00 00000a59: PUSH1 0x00 00000a5b: SWAP1 00000a5c: SLOAD 00000a5d: SWAP1 00000a5e: PUSH2 0x0100 00000a61: EXP 00000a62: SWAP1 00000a63: DIV 00000a64: PUSH1 0xff 00000a66: AND 00000a67: EQ 00000a68: ISZERO 00000a69: PUSH2 0x0ac4 00000a6c: JUMPI 00000a6d: PUSH1 0x00 00000a6f: PUSH1 0x01 00000a71: SWAP1 00000a72: SLOAD 00000a73: SWAP1 00000a74: PUSH2 0x0100 00000a77: EXP 00000a78: SWAP1 00000a79: DIV 00000a7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a8f: AND 00000a90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aa5: AND 00000aa6: CALLER 00000aa7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000abc: AND 00000abd: EQ 00000abe: SWAP1 00000abf: POP 00000ac0: PUSH2 0x0bdd 00000ac3: JUMP 00000ac4: JUMPDEST 00000ac5: PUSH1 0x01 00000ac7: PUSH1 0x00 00000ac9: PUSH1 0x00 00000acb: SWAP1 00000acc: SLOAD 00000acd: SWAP1 00000ace: PUSH2 0x0100 00000ad1: EXP 00000ad2: SWAP1 00000ad3: DIV 00000ad4: PUSH1 0xff 00000ad6: AND 00000ad7: EQ 00000ad8: ISZERO 00000ad9: PUSH2 0x0bd8 00000adc: JUMPI 00000add: PUSH1 0x00 00000adf: PUSH1 0x01 00000ae1: SWAP1 00000ae2: SLOAD 00000ae3: SWAP1 00000ae4: PUSH2 0x0100 00000ae7: EXP 00000ae8: SWAP1 00000ae9: DIV 00000aea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aff: AND 00000b00: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b15: AND 00000b16: PUSH4 0xb7009613 00000b1b: CALLER 00000b1c: ADDRESS 00000b1d: PUSH1 0x00 00000b1f: CALLDATALOAD 00000b20: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00000b41: AND 00000b42: PUSH1 0x40 00000b44: MLOAD 00000b45: DUP5 00000b46: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000b64: MUL 00000b65: DUP2 00000b66: MSTORE 00000b67: PUSH1 0x04 00000b69: ADD 00000b6a: DUP1 00000b6b: DUP5 00000b6c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b81: AND 00000b82: DUP2 00000b83: MSTORE 00000b84: PUSH1 0x20 00000b86: ADD 00000b87: DUP4 00000b88: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b9d: AND 00000b9e: DUP2 00000b9f: MSTORE 00000ba0: PUSH1 0x20 00000ba2: ADD 00000ba3: DUP3 00000ba4: DUP2 00000ba5: MSTORE 00000ba6: PUSH1 0x20 00000ba8: ADD 00000ba9: SWAP4 00000baa: POP 00000bab: POP 00000bac: POP 00000bad: POP 00000bae: PUSH1 0x20 00000bb0: PUSH1 0x40 00000bb2: MLOAD 00000bb3: DUP1 00000bb4: DUP4 00000bb5: SUB 00000bb6: DUP2 00000bb7: PUSH1 0x00 00000bb9: DUP8 00000bba: PUSH2 0x61da 00000bbd: GAS 00000bbe: SUB 00000bbf: CALL 00000bc0: ISZERO 00000bc1: PUSH2 0x0002 00000bc4: JUMPI 00000bc5: POP 00000bc6: POP 00000bc7: POP 00000bc8: PUSH1 0x40 00000bca: MLOAD 00000bcb: DUP1 00000bcc: MLOAD 00000bcd: SWAP1 00000bce: PUSH1 0x20 00000bd0: ADD 00000bd1: POP 00000bd2: SWAP1 00000bd3: POP 00000bd4: PUSH2 0x0bdd 00000bd7: JUMP 00000bd8: JUMPDEST 00000bd9: PUSH2 0x0002 00000bdc: JUMP 00000bdd: JUMPDEST 00000bde: SWAP1 00000bdf: 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 |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | yes | yes |
viewtrace_id: 0x4c6039fa534935c141f27cf080fee53f2bab6812c93dca9c53f00438c305071d
call_targets:
0x77a79a78c56504c6c1f7499852b6e1918a6d0ab4, 0x96477a1c968a0e64e53b7ed01d0d6e4a311945c2, 0xbaf42749e027bb38ce4f23ddae8c84da8a15488f, 0xc66ea802717bfb9833400264dd12c2bceaa34a6d
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x4c6039fa534935c141f27cf080fee53f2bab6812c93dca9c53f00438c305071d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x77a79a78c56504c6c1f7499852b6e1918a6d0ab4",
"0x96477a1c968a0e64e53b7ed01d0d6e4a311945c2",
"0xbaf42749e027bb38ce4f23ddae8c84da8a15488f",
"0xc66ea802717bfb9833400264dd12c2bceaa34a6d"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23de6651",
"selector": "0x23de6651",
"calldata_variants": [
"0x23de6651",
"0x23de66510000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3018205f",
"selector": "0x3018205f",
"calldata_variants": [
"0x3018205f",
"0x3018205f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5687f2b8",
"selector": "0x5687f2b8",
"calldata_variants": [
"0x5687f2b8",
"0x5687f2b80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x70a08231",
"selector": "0x70a08231",
"calldata_variants": [
"0x70a08231",
"0x70a082310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7e1db2a1",
"selector": "0x7e1db2a1",
"calldata_variants": [
"0x7e1db2a1",
"0x7e1db2a10000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1510,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1693,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1908,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 7
}
|
| medium | other | detector | ETH value transfer possible | 40 | yes | yes |
viewtrace_id: 0x4c6039fa534935c141f27cf080fee53f2bab6812c93dca9c53f00438c305071d
call_targets:
0x77a79a78c56504c6c1f7499852b6e1918a6d0ab4, 0x96477a1c968a0e64e53b7ed01d0d6e4a311945c2, 0xbaf42749e027bb38ce4f23ddae8c84da8a15488f, 0xc66ea802717bfb9833400264dd12c2bceaa34a6d
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x4c6039fa534935c141f27cf080fee53f2bab6812c93dca9c53f00438c305071d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x77a79a78c56504c6c1f7499852b6e1918a6d0ab4",
"0x96477a1c968a0e64e53b7ed01d0d6e4a311945c2",
"0xbaf42749e027bb38ce4f23ddae8c84da8a15488f",
"0xc66ea802717bfb9833400264dd12c2bceaa34a6d"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23de6651",
"selector": "0x23de6651",
"calldata_variants": [
"0x23de6651",
"0x23de66510000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3018205f",
"selector": "0x3018205f",
"calldata_variants": [
"0x3018205f",
"0x3018205f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5687f2b8",
"selector": "0x5687f2b8",
"calldata_variants": [
"0x5687f2b8",
"0x5687f2b80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x70a08231",
"selector": "0x70a08231",
"calldata_variants": [
"0x70a08231",
"0x70a082310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7e1db2a1",
"selector": "0x7e1db2a1",
"calldata_variants": [
"0x7e1db2a1",
"0x7e1db2a10000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1510,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1693,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1908,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": [
{
"pc": 2726,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| medium | access_control | codex | Privileged authority is coupled to the live external backend | 75 | no | — |
viewevidence_json{
"evidence": "Slot 0x1 is loaded as the CALL target for all externally exposed token-style wrappers (`pc:0x5e6`, `pc:0x69d`, `pc:0x774`, `pc:0x854`, `pc:0x952`, `pc:0xa33`, `pc:0xbbf`). The auth routine at `pc:0xa52` also uses slot 0x1: in one mode it accepts `msg.sender == slot1`, and in the other it calls `0xb7009613`, which matches `canCall(address,address,bytes4)`, on slot 0x1 (`pc:0xb16`). Privileged selectors `0x7e1db2a1` and `0x92eefe9b` then write slot 0x1 directly (`pc:0x348`, `pc:0x3ee`).",
"locations": [
"pc:0xa52",
"pc:0xb16",
"pc:0x348",
"pc:0x3ee",
"pc:0x5e6",
"pc:0x69d",
"pc:0x774",
"pc:0x854",
"pc:0x952",
"pc:0xa33",
"pc:0xbbf",
"selector:0x7e1db2a1",
"selector:0x92eefe9b"
],
"recommendation": "Separate authorization from the mutable backend address. Store owner/authority independently from the token backend, and do not let the currently called backend satisfy privileged checks. Adding explicit non-reentrant protection around privileged configuration/event-only functions would further reduce callback risk.",
"exploit_scenario": "Best-effort bytecode inference shows slot 0x1 is both the backend called by normal token entrypoints and the authority consulted by privileged paths. If that backend is malicious, upgraded unsafely, or compromised, a routine user call can trigger a callback from the backend into this wrapper; because the backend is also the trusted authority, the callback can pass auth and rewrite the backend/mode or emit arbitrary ERC20 events, permanently redirecting the wrapper or falsifying logs."
}
|
| medium | other | codex | Backend CALL return data is decoded without length or interface validation | 75 | no | — |
viewevidence_json{
"evidence": "Every external backend invocation requests a fixed 32-byte output and immediately loads it from memory after CALL success, with no visible `RETURNDATASIZE` check and no code-existence check before the call (`pc:0x5ef`-`pc:0x5f3`, `pc:0x6a6`-`pc:0x6aa`, `pc:0x77d`-`pc:0x781`, `pc:0x85d`-`pc:0x861`, `pc:0x95b`-`pc:0x95f`, `pc:0xa3c`-`pc:0xa40`, `pc:0xbc8`-`pc:0xbcc`). The config setters inferred from selectors `0x7e1db2a1` and `0x92eefe9b` store arbitrary addresses into slot 0x1 without any visible contract/interface validation (`pc:0x348`, `pc:0x3ee`).",
"locations": [
"pc:0x5ef",
"pc:0x6a6",
"pc:0x77d",
"pc:0x85d",
"pc:0x95b",
"pc:0xa3c",
"pc:0xbc8",
"pc:0x348",
"pc:0x3ee",
"selector:0x7e1db2a1",
"selector:0x92eefe9b"
],
"recommendation": "Validate slot 0x1 before storing it: reject zero/EOA/self targets and require expected code/interface support. After each external CALL, check returndata length before decoding, and revert on empty or malformed responses instead of blindly `MLOAD`ing the output buffer.",
"exploit_scenario": "If slot 0x1 is set to an EOA, to this contract itself, or to a contract that returns short or empty data, the low-level CALL can still succeed. The wrapper then reads 32 bytes from memory and returns that as a bool/uint/address result. Because the code reuses the same memory region for call input and output, stale calldata words can be reported as successful `transfer`/`approve` results or as bogus balances/allowances/total supply."
}
|