019b3836-3ff9-7388-a9e7-a9e6cfa6cf52
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 |
|---|---|---|---|---|
| 5139 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 5140 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 48828 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 48829 | capability.graph | complete | 1 / 3 | 1 week ago |
| 48830 | detector.run | complete | 1 / 3 | 1 week ago |
| 48831 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113306 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.","findings":[{"severity":"medium","category":"other","title":"Best-effort inferred redemption path ignores ETH payout failure","exploit_scenario":"Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept.","recommendation":"Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.","evidence":"In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.","locations":["selector:0xe4849b32","pc:0x967","pc:0x9b5"]},{"severity":"low","category":"other","title":"Financial logic appears to use manipulable block data as randomness","exploit_scenario":"The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable.","recommendation":"Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.","evidence":"The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.","locations":["selector:0xa6f2ae3a","selector:0x41fa4876","pc:0x1e7","pc:0x85c","pc:0x8a8"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-x5qbg8gi
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5c6d-af02-72f0-9db8-23d33d762744
--------
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.
exec
/bin/bash -lc "pwd && ls -la && rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
/tmp/codex-x5qbg8gi
total 284
drwx------ 2 noahkuhn noahkuhn 4096 Apr 5 06:56 .
drwxrwxrwt 270 nobody nogroup 24576 Apr 5 06:56 ..
-rw-rw-r-- 1 noahkuhn noahkuhn 252427 Apr 5 06:56 BYTECODE_BUNDLE.json
-rw-rw-r-- 1 noahkuhn noahkuhn 815 Apr 5 06:56 codex-output-schema.json
BYTECODE_BUNDLE.json
exec
/bin/bash -lc "jq 'keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
"analysis_artifact",
"analysis_run",
"artifact",
"capability_graph",
"detector_findings",
"heuristics_summary"
]
exec
/bin/bash -lc "jq '.detector_findings? // .detectors? // .findings? | if .==null then null else (type), (if type==\"array\" then length else keys end) end' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
"array"
3
exec
/bin/bash -lc "jq '.bytecode_summary? // .summary? // {}' BYTECODE_BUNDLE.json | sed -n '1,220p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{}
exec
/bin/bash -lc "jq '.analysis_artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
"address",
"artifact_hash",
"artifact_json",
"block_number",
"chain_id",
"codehash",
"created_at",
"id",
"updated_at",
"version"
]
exec
/bin/bash -lc "jq '.artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
"codehash",
"compiler_json",
"implementation_address",
"is_proxy",
"runtime_bytecode",
"verified_source"
]
exec
/bin/bash -lc "jq '.heuristics_summary | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
"create2_count",
"delegatecall_count",
"flags",
"selfdestruct_count"
]
exec
/bin/bash -lc "jq '.capability_graph | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
"address",
"block_number",
"chain_id",
"codehash",
"created_at",
"graph_hash",
"graph_json",
"id",
"updated_at",
"version"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
"auth",
"basic_blocks",
"callsites",
"cfg_edges",
"cfg_hash",
"dispatcher_type",
"function_entries",
"functions",
"selectors",
"sinks",
"storage",
"version"
]
exec
/bin/bash -lc "jq '.capability_graph.graph_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
"edges",
"nodes",
"version"
]
exec
/bin/bash -lc "jq '.detector_findings' BYTECODE_BUNDLE.json | sed -n '1,240p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
{
"confidence": 60,
"evidence_json": {
"call_count": 6,
"examples": [
{
"opcode": "CALL",
"pc": 1126,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1194,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1458,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [],
"untrusted_call_count": 6
},
"normalized_json": {
"sink": "CALL"
},
"severity": "high",
"title": "Untrusted CALL target/value reachable",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
"trace_mode": "callTracer"
}
},
{
"confidence": 55,
"evidence_json": {
"eth_value_calls": 6,
"examples": [
{
"opcode": "CALL",
"pc": 1126,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1194,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1458,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": []
},
"normalized_json": {
"sink": "CALL",
"value": "nonzero"
},
"severity": "high",
"title": "ETH value transfer possible",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
"trace_mode": "callTracer"
}
},
{
"confidence": 45,
"evidence_json": {
"create2_count": 2,
"create_count": 0
},
"normalized_json": {
"sink": "CREATE"
},
"severity": "medium",
"title": "CREATE/CREATE2 reachable",
"validated": false,
"validation_json": {
"attempts": 32,
"call_targets": null,
"classification": "no_sink",
"confirmed": false,
"errors": 0,
"matched_probe": null,
"sink": "CREATE",
"status": "unknown",
"target_varies": null,
"trace_id": "0x42c3eea034cb5a22915e2bb9a55f1b44d524b5a84a6c13a7eb3108b245c52492",
"trace_mode": "structLogs"
}
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.dispatcher_type, .analysis_artifact.artifact_json.selectors, .analysis_artifact.artifact_json.function_entries' BYTECODE_BUNDLE.json | sed -n '1,260p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
"selector_jump_table"
[
"0x06fdde03",
"0x18160ddd",
"0x1fe9eabc",
"0x233de126",
"0x23b872dd",
"0x313ce567",
"0x41fa4876",
"0x70a08231",
"0x7f2a8a80",
"0x8da5cb5b",
"0x95d89b41",
"0xa6f2ae3a",
"0xa9059cbb",
"0xaa295de9",
"0xbc094049",
"0xc4839e8b",
"0xcae9ca51",
"0xdc3080f2",
"0xdd62ed3e",
"0xe4849b32",
"0xf2fde38b",
"0xff9b3acf"
]
[
{
"entry_pc": null,
"selector": "0x06fdde03"
},
{
"entry_pc": 535423676,
"selector": "0x18160ddd"
},
{
"entry_pc": 591257894,
"selector": "0x1fe9eabc"
},
{
"entry_pc": 599290589,
"selector": "0x233de126"
},
{
"entry_pc": 826074471,
"selector": "0x23b872dd"
},
{
"entry_pc": 1106921590,
"selector": "0x313ce567"
},
{
"entry_pc": 1889567281,
"selector": "0x41fa4876"
},
{
"entry_pc": 2133494400,
"selector": "0x70a08231"
},
{
"entry_pc": 2376452955,
"selector": "0x7f2a8a80"
},
{
"entry_pc": 2514000705,
"selector": "0x8da5cb5b"
},
{
"entry_pc": 2800922170,
"selector": "0x95d89b41"
},
{
"entry_pc": 2835717307,
"selector": "0xa6f2ae3a"
},
{
"entry_pc": 2854837737,
"selector": "0xa9059cbb"
},
{
"entry_pc": 3154722889,
"selector": "0xaa295de9"
},
{
"entry_pc": 3296960139,
"selector": "0xbc094049"
},
{
"entry_pc": 3404319313,
"selector": "0xc4839e8b"
},
{
"entry_pc": 3694166258,
"selector": "0xcae9ca51"
},
{
"entry_pc": 3714247998,
"selector": "0xdc3080f2"
},
{
"entry_pc": 3833895730,
"selector": "0xdd62ed3e"
},
{
"entry_pc": 4076725131,
"selector": "0xe4849b32"
},
{
"entry_pc": 4288363215,
"selector": "0xf2fde38b"
},
{
"entry_pc": null,
"selector": "0xff9b3acf"
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.auth' BYTECODE_BUNDLE.json | sed -n '1,260p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{
"guards": []
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json | sed -n '1,320p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
{
"opcode": "CALL",
"pc": 1126,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1194,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1458,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 2485,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALLCODE",
"pc": 2575,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 2593,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
]
exec
/bin/bash -lc "jq '.capability_graph.graph_json.nodes[] | select((.pc? == 1126) or (.pc? == 1194) or (.pc? == 1458) or (.pc? == 2485) or (.pc? == 2575) or (.pc? == 2593) or (.selector? "'!= null))'"' BYTECODE_BUNDLE.json | sed -n '1,360p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{
"id": "call:1126",
"opcode": "CALL",
"pc": 1126,
"type": "callsite"
}
{
"id": "call:1194",
"opcode": "CALL",
"pc": 1194,
"type": "callsite"
}
{
"id": "call:1458",
"opcode": "CALL",
"pc": 1458,
"type": "callsite"
}
{
"id": "call:2485",
"opcode": "CALL",
"pc": 2485,
"type": "callsite"
}
{
"id": "call:2575",
"opcode": "CALLCODE",
"pc": 2575,
"type": "callsite"
}
{
"id": "call:2593",
"opcode": "CALL",
"pc": 2593,
"type": "callsite"
}
{
"entry_pc": null,
"id": "fn:0x06fdde03",
"selector": "0x06fdde03",
"type": "function"
}
{
"entry_pc": 535423676,
"id": "fn:0x18160ddd",
"selector": "0x18160ddd",
"type": "function"
}
{
"entry_pc": 591257894,
"id": "fn:0x1fe9eabc",
"selector": "0x1fe9eabc",
"type": "function"
}
{
"entry_pc": 599290589,
"id": "fn:0x233de126",
"selector": "0x233de126",
"type": "function"
}
{
"entry_pc": 826074471,
"id": "fn:0x23b872dd",
"selector": "0x23b872dd",
"type": "function"
}
{
"entry_pc": 1106921590,
"id": "fn:0x313ce567",
"selector": "0x313ce567",
"type": "function"
}
{
"entry_pc": 1889567281,
"id": "fn:0x41fa4876",
"selector": "0x41fa4876",
"type": "function"
}
{
"entry_pc": 2133494400,
"id": "fn:0x70a08231",
"selector": "0x70a08231",
"type": "function"
}
{
"entry_pc": 2376452955,
"id": "fn:0x7f2a8a80",
"selector": "0x7f2a8a80",
"type": "function"
}
{
"entry_pc": 2514000705,
"id": "fn:0x8da5cb5b",
"selector": "0x8da5cb5b",
"type": "function"
}
{
"entry_pc": 2800922170,
"id": "fn:0x95d89b41",
"selector": "0x95d89b41",
"type": "function"
}
{
"entry_pc": 2835717307,
"id": "fn:0xa6f2ae3a",
"selector": "0xa6f2ae3a",
"type": "function"
}
{
"entry_pc": 2854837737,
"id": "fn:0xa9059cbb",
"selector": "0xa9059cbb",
"type": "function"
}
{
"entry_pc": 3154722889,
"id": "fn:0xaa295de9",
"selector": "0xaa295de9",
"type": "function"
}
{
"entry_pc": 3296960139,
"id": "fn:0xbc094049",
"selector": "0xbc094049",
"type": "function"
}
{
"entry_pc": 3404319313,
"id": "fn:0xc4839e8b",
"selector": "0xc4839e8b",
"type": "function"
}
{
"entry_pc": 3694166258,
"id": "fn:0xcae9ca51",
"selector": "0xcae9ca51",
"type": "function"
}
{
"entry_pc": 3714247998,
"id": "fn:0xdc3080f2",
"selector": "0xdc3080f2",
"type": "function"
}
{
"entry_pc": 3833895730,
"id": "fn:0xdd62ed3e",
"selector": "0xdd62ed3e",
"type": "function"
}
{
"entry_pc": 4076725131,
"id": "fn:0xe4849b32",
"selector": "0xe4849b32",
"type": "function"
}
{
"entry_pc": 4288363215,
"id": "fn:0xf2fde38b",
"selector": "0xf2fde38b",
"type": "function"
}
{
"entry_pc": null,
"id": "fn:0xff9b3acf",
"selector": "0xff9b3acf",
"type": "function"
}
exec
/bin/bash -lc "jq '.capability_graph.graph_json.edges[] | select((.to_pc? == 1126) or (.to_pc? == 1194) or (.to_pc? == 1458) or (.to_pc? == 2485) or (.to_pc? == 2575) or (.to_pc? == 2593) or (.from_pc? == 1126) or (.from_pc? == 1194) or (.from_pc? == 1458) or (.from_pc? == 2485) or (.from_pc? == 2575) or (.from_pc? == 2593))' BYTECODE_BUNDLE.json | sed -n '1,360p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json | sed -n '1,360p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
[
{
"auth": {
"guards": []
},
"entry_pc": null,
"selector": "0x06fdde03",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 47,
"slots": [
{
"op": "SLOAD",
"pc": 272,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 343,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 363,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 375,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 406,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 471,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 596,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 626,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 645,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 715,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 735,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
},
{
"op": "SLOAD",
"pc": 809,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
},
{
"op": "SLOAD",
"pc": 818,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 830,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 1001,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 1362,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1392,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2041,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2096,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2113,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2179,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2216,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2281,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2352,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2463,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 2544,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 17
}
},
{
"auth": {
"guards": []
},
"entry_pc": 535423676,
"selector": "0x18160ddd",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 47,
"slots": [
{
"op": "SLOAD",
"pc": 272,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 343,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 363,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 375,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 406,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 471,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 596,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 626,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 645,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 715,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 735,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
},
{
"op": "SLOAD",
"pc": 809,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
},
{
"op": "SLOAD",
"pc": 818,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 830,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 1001,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 1362,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1392,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2041,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2096,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2113,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2179,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2216,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2281,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2352,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2463,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 2544,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 17
}
},
{
"auth": {
"guards": []
},
"entry_pc": 591257894,
"selector": "0x1fe9eabc",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 47,
"slots": [
{
"op": "SLOAD",
"pc": 272,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 343,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 363,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 375,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 406,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 471,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 596,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
exec
/bin/bash -lc "jq '.artifact' BYTECODE_BUNDLE.json | sed -n '1,220p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{
"codehash": "0xbc9512dd31c5846060b826a844fee483fe053fcba40775ed9fb1e33a380ad47d",
"compiler_json": {
"etherscan": {
"skipped": true
}
},
"implementation_address": null,
"is_proxy": false,
"runtime_bytecode": {
"full": "0x606060405236156101065760e060020a600035046306fdde03811461010857806318160ddd146101655780631fe9eabc1461016e578063233de1261461019057806323b872dd1461019f578063313ce567146101d157806341fa4876146101dd57806370a08231146102335780637f2a8a801461024b5780638da5cb5b1461026c57806395d89b411461027e578063a6f2ae3a146102d9578063a9059cbb146102f4578063aa295de914610323578063bc0940491461032c578063c4839e8b14610335578063cae9ca5114610356578063dc3080f2146104bd578063dd62ed3e146104e2578063e4849b3214610507578063f2fde38b14610549578063ff9b3acf1461056a575b005b60408051600180546020600282841615610100026000190190921691909104601f810182900482028401820190945283835261057c93908301828280156107e85780601f106107bd576101008083540402835291602001916107e8565b6105ea60045481565b610106600435600054600160a060020a0390811633909116146107f057610002565b6105fc60075463ffffffff1681565b6105ea600435602435604435600160a060020a038316600090815260096020526040812054829010156106d257610002565b61061660035460ff1681565b6105ea6004356024355b600080805b8381101561064957604080514383900360001901408152602081018790528151908190039091019020600290066000141561022b57600281900a909101905b6001016101ec565b6105ea60043560096020526000908152604090205481565b61010660043560005433600160a060020a039081169116146107f557610002565b61062c600054600160a060020a031681565b61057c6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107e85780601f106107bd576101008083540402835291602001916107e8565b6105ea60065434906000908190819084111561083e57610002565b61010660043560243533600160a060020a03166000908152600960205260409020548190101561065157610002565b6105ea60065481565b6105ea60085481565b61010660043560005433600160a060020a0390811691161461081757610002565b604080516020604435600481810135601f81018490048402850184019095528484526105ea9481359460248035959394606494929391019181908401838280828437509496505050505050506000600083600a600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156104905780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257506001979650505050505050565b600b602090815260043560009081526040808220909252602435815220546105ea9081565b600a602090815260043560009081526040808220909252602435815220546105ea9081565b6105ea60043560045430600160a060020a039081163164174876e800029190910460085533166000908152600960205260408120548290101561096757610002565b61010660043560005433600160a060020a039081169116146109ec57610002565b61062c600554600160a060020a031681565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805163ffffffff929092168252519081900360200190f35b6040805160ff9092168252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b509392505050565b600160a060020a038216600090815260096020526040902054818101101561067857610002565b33600160a060020a0390811660008181526009602090815260408083208054879003905593861680835291849020805486019055835185815293519193600080516020610a0e833981519152929081900390910190a35050565b600160a060020a03831660009081526009602052604090205480830110156106f957610002565b600160a060020a038481166000818152600a602090815260408083203390951680845294825280832054938352600b825280832094835293905291909120548301111561074557610002565b600160a060020a03848116600081815260096020908152604080832080548890039055878516808452818420805489019055848452600b83528184203390961684529482529182902080548701905581518681529151600080516020610a0e8339815191529281900390910190a35060019392505050565b820191906000526020600020905b8154815290600101906020018083116107cb57829003601f168201915b505050505081565b600655565b6005805473ffffffffffffffffffffffffffffffffffffffff19168217905550565b6102008163ffffffff16101561082c57610002565b6007805463ffffffff19168217905550565b60045430600160a060020a03163164174876e800020460085560408051438152426020820152808201869052905190819003606001902061088090600a6101e7565b60075490915063ffffffff1681106108a557600092506103e764174876e80085040491505b60075463ffffffff168110156108c35764174876e800600285020492505b33600160a060020a0390811660008181526009602090815260408083208054890190556005548516835280832080548801905530909416808352918490208054878901900390558351878152935192939192600080516020610a0e8339815191529281900390910190a3600554604080518481529051600160a060020a0392831692301691600080516020610a0e833981519152919081900360200190a350505090565b5030600160a060020a039081166000908152600960205260408082208054850190553390921680825282822080548590039055915160085464174876e800850402929190839082818181858883f1505060408051868152905130600160a060020a0316949350600080516020610a0e83398151915292509081900360200190a3919050565b6000805473ffffffffffffffffffffffffffffffffffffffff1916821790555056ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"head": null,
"length": 5214,
"tail": null,
"truncated": false
},
"verified_source": false
}
exec
/bin/bash -lc "jq '.heuristics_summary' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{
"create2_count": 2,
"delegatecall_count": 0,
"flags": [
"create_opcodes_present"
],
"selfdestruct_count": 0
}
exec
/bin/bash -lc "jq '.analysis_run' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{
"address": "0x3456f6ea53a44d9bdf0d3da99254860531cb0af5",
"block_number": null,
"chain_id": 1,
"child_links": [],
"created_at": "2025-12-19T20:03:58.000000Z",
"id": "019b3836-3ff9-7388-a9e7-a9e6cfa6cf52",
"parent_links": [],
"status": "running",
"updated_at": "2026-04-04T19:59:30.000000Z"
}
exec
/bin/bash -lc "node -e 'const fs=require(\"fs\"); const x=JSON.parse(fs.readFileSync(\"BYTECODE_BUNDLE.json\",\"utf8\")); const b=x.artifact.runtime_bytecode.full.slice(2); console.log(b.length/2)'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
2606
exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
for(let pc=0;pc<bytes.length;){ const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else {pc++;} if(pc<420|| (pc>1050&&pc<1510)|| (pc>2400&&pc<2610)) console.log(line); }
NODE" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
0 PUSH1 0x60
2 PUSH1 0x40
4 MSTORE
5 CALLDATASIZE
6 ISZERO
7 PUSH2 0x0106
10 JUMPI
11 PUSH1 0xe0
13 PUSH1 0x02
15 EXP
16 PUSH1 0x00
18 CALLDATALOAD
19 DIV
20 PUSH4 0x06fdde03
25 DUP2
26 EQ
27 PUSH2 0x0108
30 JUMPI
31 DUP1
32 PUSH4 0x18160ddd
37 EQ
38 PUSH2 0x0165
41 JUMPI
42 DUP1
43 PUSH4 0x1fe9eabc
48 EQ
49 PUSH2 0x016e
52 JUMPI
53 DUP1
54 PUSH4 0x233de126
59 EQ
60 PUSH2 0x0190
63 JUMPI
64 DUP1
65 PUSH4 0x23b872dd
70 EQ
71 PUSH2 0x019f
74 JUMPI
75 DUP1
76 PUSH4 0x313ce567
81 EQ
82 PUSH2 0x01d1
85 JUMPI
86 DUP1
87 PUSH4 0x41fa4876
92 EQ
93 PUSH2 0x01dd
96 JUMPI
97 DUP1
98 PUSH4 0x70a08231
103 EQ
104 PUSH2 0x0233
107 JUMPI
108 DUP1
109 PUSH4 0x7f2a8a80
114 EQ
115 PUSH2 0x024b
118 JUMPI
119 DUP1
120 PUSH4 0x8da5cb5b
125 EQ
126 PUSH2 0x026c
129 JUMPI
130 DUP1
131 PUSH4 0x95d89b41
136 EQ
137 PUSH2 0x027e
140 JUMPI
141 DUP1
142 PUSH4 0xa6f2ae3a
147 EQ
148 PUSH2 0x02d9
151 JUMPI
152 DUP1
153 PUSH4 0xa9059cbb
158 EQ
159 PUSH2 0x02f4
162 JUMPI
163 DUP1
164 PUSH4 0xaa295de9
169 EQ
170 PUSH2 0x0323
173 JUMPI
174 DUP1
175 PUSH4 0xbc094049
180 EQ
181 PUSH2 0x032c
184 JUMPI
185 DUP1
186 PUSH4 0xc4839e8b
191 EQ
192 PUSH2 0x0335
195 JUMPI
196 DUP1
197 PUSH4 0xcae9ca51
202 EQ
203 PUSH2 0x0356
206 JUMPI
207 DUP1
208 PUSH4 0xdc3080f2
213 EQ
214 PUSH2 0x04bd
217 JUMPI
218 DUP1
219 PUSH4 0xdd62ed3e
224 EQ
225 PUSH2 0x04e2
228 JUMPI
229 DUP1
230 PUSH4 0xe4849b32
235 EQ
236 PUSH2 0x0507
239 JUMPI
240 DUP1
241 PUSH4 0xf2fde38b
246 EQ
247 PUSH2 0x0549
250 JUMPI
251 DUP1
252 PUSH4 0xff9b3acf
257 EQ
258 PUSH2 0x056a
261 JUMPI
262 JUMPDEST
263 STOP
264 JUMPDEST
265 PUSH1 0x40
267 DUP1
268 MLOAD
269 PUSH1 0x01
271 DUP1
272 SLOAD
273 PUSH1 0x20
275 PUSH1 0x02
277 DUP3
278 DUP5
279 AND
280 ISZERO
281 PUSH2 0x0100
284 MUL
285 PUSH1 0x00
287 NOT
288 ADD
289 SWAP1
290 SWAP3
291 AND
292 SWAP2
293 SWAP1
294 SWAP2
295 DIV
296 PUSH1 0x1f
298 DUP2
299 ADD
300 DUP3
301 SWAP1
302 DIV
303 DUP3
304 MUL
305 DUP5
306 ADD
307 DUP3
308 ADD
309 SWAP1
310 SWAP5
311 MSTORE
312 DUP4
313 DUP4
314 MSTORE
315 PUSH2 0x057c
318 SWAP4
319 SWAP1
320 DUP4
321 ADD
322 DUP3
323 DUP3
324 DUP1
325 ISZERO
326 PUSH2 0x07e8
329 JUMPI
330 DUP1
331 PUSH1 0x1f
333 LT
334 PUSH2 0x07bd
337 JUMPI
338 PUSH2 0x0100
341 DUP1
342 DUP4
343 SLOAD
344 DIV
345 MUL
346 DUP4
347 MSTORE
348 SWAP2
349 PUSH1 0x20
351 ADD
352 SWAP2
353 PUSH2 0x07e8
356 JUMP
357 JUMPDEST
358 PUSH2 0x05ea
361 PUSH1 0x04
363 SLOAD
364 DUP2
365 JUMP
366 JUMPDEST
367 PUSH2 0x0106
370 PUSH1 0x04
372 CALLDATALOAD
373 PUSH1 0x00
375 SLOAD
376 PUSH1 0x01
378 PUSH1 0xa0
380 PUSH1 0x02
382 EXP
383 SUB
384 SWAP1
385 DUP2
386 AND
387 CALLER
388 SWAP1
389 SWAP2
390 AND
391 EQ
392 PUSH2 0x07f0
395 JUMPI
396 PUSH2 0x0002
399 JUMP
400 JUMPDEST
401 PUSH2 0x05fc
404 PUSH1 0x07
406 SLOAD
407 PUSH4 0xffffffff
412 AND
413 DUP2
414 JUMP
415 JUMPDEST
416 PUSH2 0x05ea
1050 AND
1051 DUP2
1052 MSTORE
1053 PUSH1 0x20
1055 ADD
1056 DUP5
1057 DUP2
1058 MSTORE
1059 PUSH1 0x20
1061 ADD
1062 DUP4
1063 PUSH1 0x01
1065 PUSH1 0xa0
1067 PUSH1 0x02
1069 EXP
1070 SUB
1071 AND
1072 DUP2
1073 MSTORE
1074 PUSH1 0x20
1076 ADD
1077 DUP1
1078 PUSH1 0x20
1080 ADD
1081 DUP3
1082 DUP2
1083 SUB
1084 DUP3
1085 MSTORE
1086 DUP4
1087 DUP2
1088 DUP2
1089 MLOAD
1090 DUP2
1091 MSTORE
1092 PUSH1 0x20
1094 ADD
1095 SWAP2
1096 POP
1097 DUP1
1098 MLOAD
1099 SWAP1
1100 PUSH1 0x20
1102 ADD
1103 SWAP1
1104 DUP1
1105 DUP4
1106 DUP4
1107 DUP3
1108 SWAP1
1109 PUSH1 0x00
1111 PUSH1 0x04
1113 PUSH1 0x20
1115 DUP5
1116 PUSH1 0x1f
1118 ADD
1119 DIV
1120 PUSH1 0x0f
1122 MUL
1123 PUSH1 0x03
1125 ADD
1126 CALL
1127 POP
1128 SWAP1
1129 POP
1130 SWAP1
1131 DUP2
1132 ADD
1133 SWAP1
1134 PUSH1 0x1f
1136 AND
1137 DUP1
1138 ISZERO
1139 PUSH2 0x0490
1142 JUMPI
1143 DUP1
1144 DUP3
1145 SUB
1146 DUP1
1147 MLOAD
1148 PUSH1 0x01
1150 DUP4
1151 PUSH1 0x20
1153 SUB
1154 PUSH2 0x0100
1157 EXP
1158 SUB
1159 NOT
1160 AND
1161 DUP2
1162 MSTORE
1163 PUSH1 0x20
1165 ADD
1166 SWAP2
1167 POP
1168 JUMPDEST
1169 POP
1170 SWAP6
1171 POP
1172 POP
1173 POP
1174 POP
1175 POP
1176 POP
1177 PUSH1 0x00
1179 PUSH1 0x40
1181 MLOAD
1182 DUP1
1183 DUP4
1184 SUB
1185 DUP2
1186 PUSH1 0x00
1188 DUP8
1189 PUSH2 0x61da
1192 GAS
1193 SUB
1194 CALL
1195 ISZERO
1196 PUSH2 0x0002
1199 JUMPI
1200 POP
1201 PUSH1 0x01
1203 SWAP8
1204 SWAP7
1205 POP
1206 POP
1207 POP
1208 POP
1209 POP
1210 POP
1211 POP
1212 JUMP
1213 JUMPDEST
1214 PUSH1 0x0b
1216 PUSH1 0x20
1218 SWAP1
1219 DUP2
1220 MSTORE
1221 PUSH1 0x04
1223 CALLDATALOAD
1224 PUSH1 0x00
1226 SWAP1
1227 DUP2
1228 MSTORE
1229 PUSH1 0x40
1231 DUP1
1232 DUP3
1233 SHA3
1234 SWAP1
1235 SWAP3
1236 MSTORE
1237 PUSH1 0x24
1239 CALLDATALOAD
1240 DUP2
1241 MSTORE
1242 SHA3
1243 SLOAD
1244 PUSH2 0x05ea
1247 SWAP1
1248 DUP2
1249 JUMP
1250 JUMPDEST
1251 PUSH1 0x0a
1253 PUSH1 0x20
1255 SWAP1
1256 DUP2
1257 MSTORE
1258 PUSH1 0x04
1260 CALLDATALOAD
1261 PUSH1 0x00
1263 SWAP1
1264 DUP2
1265 MSTORE
1266 PUSH1 0x40
1268 DUP1
1269 DUP3
1270 SHA3
1271 SWAP1
1272 SWAP3
1273 MSTORE
1274 PUSH1 0x24
1276 CALLDATALOAD
1277 DUP2
1278 MSTORE
1279 SHA3
1280 SLOAD
1281 PUSH2 0x05ea
1284 SWAP1
1285 DUP2
1286 JUMP
1287 JUMPDEST
1288 PUSH2 0x05ea
1291 PUSH1 0x04
1293 CALLDATALOAD
1294 PUSH1 0x04
1296 SLOAD
1297 ADDRESS
1298 PUSH1 0x01
1300 PUSH1 0xa0
1302 PUSH1 0x02
1304 EXP
1305 SUB
1306 SWAP1
1307 DUP2
1308 AND
1309 BALANCE
1310 PUSH5 0x174876e800
1316 MUL
1317 SWAP2
1318 SWAP1
1319 SWAP2
1320 DIV
1321 PUSH1 0x08
1323 SSTORE
1324 CALLER
1325 AND
1326 PUSH1 0x00
1328 SWAP1
1329 DUP2
1330 MSTORE
1331 PUSH1 0x09
1333 PUSH1 0x20
1335 MSTORE
1336 PUSH1 0x40
1338 DUP2
1339 SHA3
1340 SLOAD
1341 DUP3
1342 SWAP1
1343 LT
1344 ISZERO
1345 PUSH2 0x0967
1348 JUMPI
1349 PUSH2 0x0002
1352 JUMP
1353 JUMPDEST
1354 PUSH2 0x0106
1357 PUSH1 0x04
1359 CALLDATALOAD
1360 PUSH1 0x00
1362 SLOAD
1363 CALLER
1364 PUSH1 0x01
1366 PUSH1 0xa0
1368 PUSH1 0x02
1370 EXP
1371 SUB
1372 SWAP1
1373 DUP2
1374 AND
1375 SWAP2
1376 AND
1377 EQ
1378 PUSH2 0x09ec
1381 JUMPI
1382 PUSH2 0x0002
1385 JUMP
1386 JUMPDEST
1387 PUSH2 0x062c
1390 PUSH1 0x05
1392 SLOAD
1393 PUSH1 0x01
1395 PUSH1 0xa0
1397 PUSH1 0x02
1399 EXP
1400 SUB
1401 AND
1402 DUP2
1403 JUMP
1404 JUMPDEST
1405 PUSH1 0x40
1407 MLOAD
1408 DUP1
1409 DUP1
1410 PUSH1 0x20
1412 ADD
1413 DUP3
1414 DUP2
1415 SUB
1416 DUP3
1417 MSTORE
1418 DUP4
1419 DUP2
1420 DUP2
1421 MLOAD
1422 DUP2
1423 MSTORE
1424 PUSH1 0x20
1426 ADD
1427 SWAP2
1428 POP
1429 DUP1
1430 MLOAD
1431 SWAP1
1432 PUSH1 0x20
1434 ADD
1435 SWAP1
1436 DUP1
1437 DUP4
1438 DUP4
1439 DUP3
1440 SWAP1
1441 PUSH1 0x00
1443 PUSH1 0x04
1445 PUSH1 0x20
1447 DUP5
1448 PUSH1 0x1f
1450 ADD
1451 DIV
1452 PUSH1 0x0f
1454 MUL
1455 PUSH1 0x03
1457 ADD
1458 CALL
1459 POP
1460 SWAP1
1461 POP
1462 SWAP1
1463 DUP2
1464 ADD
1465 SWAP1
1466 PUSH1 0x1f
1468 AND
1469 DUP1
1470 ISZERO
1471 PUSH2 0x05dc
1474 JUMPI
1475 DUP1
1476 DUP3
1477 SUB
1478 DUP1
1479 MLOAD
1480 PUSH1 0x01
1482 DUP4
1483 PUSH1 0x20
1485 SUB
1486 PUSH2 0x0100
1489 EXP
1490 SUB
1491 NOT
1492 AND
1493 DUP2
1494 MSTORE
1495 PUSH1 0x20
1497 ADD
1498 SWAP2
1499 POP
1500 JUMPDEST
1501 POP
1502 SWAP3
1503 POP
1504 POP
1505 POP
1506 PUSH1 0x40
1508 MLOAD
2400 SWAP1
2401 LOG3
2402 POP
2403 POP
2404 POP
2405 SWAP1
2406 JUMP
2407 JUMPDEST
2408 POP
2409 ADDRESS
2410 PUSH1 0x01
2412 PUSH1 0xa0
2414 PUSH1 0x02
2416 EXP
2417 SUB
2418 SWAP1
2419 DUP2
2420 AND
2421 PUSH1 0x00
2423 SWAP1
2424 DUP2
2425 MSTORE
2426 PUSH1 0x09
2428 PUSH1 0x20
2430 MSTORE
2431 PUSH1 0x40
2433 DUP1
2434 DUP3
2435 SHA3
2436 DUP1
2437 SLOAD
2438 DUP6
2439 ADD
2440 SWAP1
2441 SSTORE
2442 CALLER
2443 SWAP1
2444 SWAP3
2445 AND
2446 DUP1
2447 DUP3
2448 MSTORE
2449 DUP3
2450 DUP3
2451 SHA3
2452 DUP1
2453 SLOAD
2454 DUP6
2455 SWAP1
2456 SUB
2457 SWAP1
2458 SSTORE
2459 SWAP2
2460 MLOAD
2461 PUSH1 0x08
2463 SLOAD
2464 PUSH5 0x174876e800
2470 DUP6
2471 DIV
2472 MUL
2473 SWAP3
2474 SWAP2
2475 SWAP1
2476 DUP4
2477 SWAP1
2478 DUP3
2479 DUP2
2480 DUP2
2481 DUP2
2482 DUP6
2483 DUP9
2484 DUP4
2485 CALL
2486 POP
2487 POP
2488 PUSH1 0x40
2490 DUP1
2491 MLOAD
2492 DUP7
2493 DUP2
2494 MSTORE
2495 SWAP1
2496 MLOAD
2497 ADDRESS
2498 PUSH1 0x01
2500 PUSH1 0xa0
2502 PUSH1 0x02
2504 EXP
2505 SUB
2506 AND
2507 SWAP5
2508 SWAP4
2509 POP
2510 PUSH1 0x00
2512 DUP1
2513 MLOAD
2514 PUSH1 0x20
2516 PUSH2 0x0a0e
2519 DUP4
2520 CODECOPY
2521 DUP2
2522 MLOAD
2523 SWAP2
2524 MSTORE
2525 SWAP3
2526 POP
2527 SWAP1
2528 DUP2
2529 SWAP1
2530 SUB
2531 PUSH1 0x20
2533 ADD
2534 SWAP1
2535 LOG3
2536 SWAP2
2537 SWAP1
2538 POP
2539 JUMP
2540 JUMPDEST
2541 PUSH1 0x00
2543 DUP1
2544 SLOAD
2545 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2566 NOT
2567 AND
2568 DUP3
2569 OR
2570 SWAP1
2571 SSTORE
2572 POP
2573 JUMP
2574 0xdd
2575 CALLCODE
2576 MSTORE
2577 LOG13
2578 SHL
2579 0xe2
2580 0xc8
2581 SWAP12
2582 PUSH10 0xc2b068fc378daa952ba7
2593 CALL
2594 PUSH4 0xc4a11628
2599 CREATE2
2600 GAS
2601 0x4d
2602 CREATE2
2603 0x23
2604 0xb3
2605 0xef
exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
function dump(start,end){for(let pc=start;pc<end;){const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else pc++; console.log(line);} }
dump(415,720)
NODE" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
415 JUMPDEST
416 PUSH2 0x05ea
419 PUSH1 0x04
421 CALLDATALOAD
422 PUSH1 0x24
424 CALLDATALOAD
425 PUSH1 0x44
427 CALLDATALOAD
428 PUSH1 0x01
430 PUSH1 0xa0
432 PUSH1 0x02
434 EXP
435 SUB
436 DUP4
437 AND
438 PUSH1 0x00
440 SWAP1
441 DUP2
442 MSTORE
443 PUSH1 0x09
445 PUSH1 0x20
447 MSTORE
448 PUSH1 0x40
450 DUP2
451 SHA3
452 SLOAD
453 DUP3
454 SWAP1
455 LT
456 ISZERO
457 PUSH2 0x06d2
460 JUMPI
461 PUSH2 0x0002
464 JUMP
465 JUMPDEST
466 PUSH2 0x0616
469 PUSH1 0x03
471 SLOAD
472 PUSH1 0xff
474 AND
475 DUP2
476 JUMP
477 JUMPDEST
478 PUSH2 0x05ea
481 PUSH1 0x04
483 CALLDATALOAD
484 PUSH1 0x24
486 CALLDATALOAD
487 JUMPDEST
488 PUSH1 0x00
490 DUP1
491 DUP1
492 JUMPDEST
493 DUP4
494 DUP2
495 LT
496 ISZERO
497 PUSH2 0x0649
500 JUMPI
501 PUSH1 0x40
503 DUP1
504 MLOAD
505 NUMBER
506 DUP4
507 SWAP1
508 SUB
509 PUSH1 0x00
511 NOT
512 ADD
513 BLOCKHASH
514 DUP2
515 MSTORE
516 PUSH1 0x20
518 DUP2
519 ADD
520 DUP8
521 SWAP1
522 MSTORE
523 DUP2
524 MLOAD
525 SWAP1
526 DUP2
527 SWAP1
528 SUB
529 SWAP1
530 SWAP2
531 ADD
532 SWAP1
533 SHA3
534 PUSH1 0x02
536 SWAP1
537 MOD
538 PUSH1 0x00
540 EQ
541 ISZERO
542 PUSH2 0x022b
545 JUMPI
546 PUSH1 0x02
548 DUP2
549 SWAP1
550 EXP
551 SWAP1
552 SWAP2
553 ADD
554 SWAP1
555 JUMPDEST
556 PUSH1 0x01
558 ADD
559 PUSH2 0x01ec
562 JUMP
563 JUMPDEST
564 PUSH2 0x05ea
567 PUSH1 0x04
569 CALLDATALOAD
570 PUSH1 0x09
572 PUSH1 0x20
574 MSTORE
575 PUSH1 0x00
577 SWAP1
578 DUP2
579 MSTORE
580 PUSH1 0x40
582 SWAP1
583 SHA3
584 SLOAD
585 DUP2
586 JUMP
587 JUMPDEST
588 PUSH2 0x0106
591 PUSH1 0x04
593 CALLDATALOAD
594 PUSH1 0x00
596 SLOAD
597 CALLER
598 PUSH1 0x01
600 PUSH1 0xa0
602 PUSH1 0x02
604 EXP
605 SUB
606 SWAP1
607 DUP2
608 AND
609 SWAP2
610 AND
611 EQ
612 PUSH2 0x07f5
615 JUMPI
616 PUSH2 0x0002
619 JUMP
620 JUMPDEST
621 PUSH2 0x062c
624 PUSH1 0x00
626 SLOAD
627 PUSH1 0x01
629 PUSH1 0xa0
631 PUSH1 0x02
633 EXP
634 SUB
635 AND
636 DUP2
637 JUMP
638 JUMPDEST
639 PUSH2 0x057c
642 PUSH1 0x02
644 DUP1
645 SLOAD
646 PUSH1 0x40
648 DUP1
649 MLOAD
650 PUSH1 0x20
652 PUSH1 0x01
654 DUP5
655 AND
656 ISZERO
657 PUSH2 0x0100
660 MUL
661 PUSH1 0x00
663 NOT
664 ADD
665 SWAP1
666 SWAP4
667 AND
668 DUP5
669 SWAP1
670 DIV
671 PUSH1 0x1f
673 DUP2
674 ADD
675 DUP5
676 SWAP1
677 DIV
678 DUP5
679 MUL
680 DUP3
681 ADD
682 DUP5
683 ADD
684 SWAP1
685 SWAP3
686 MSTORE
687 DUP2
688 DUP2
689 MSTORE
690 SWAP3
691 SWAP2
692 DUP4
693 ADD
694 DUP3
695 DUP3
696 DUP1
697 ISZERO
698 PUSH2 0x07e8
701 JUMPI
702 DUP1
703 PUSH1 0x1f
705 LT
706 PUSH2 0x07bd
709 JUMPI
710 PUSH2 0x0100
713 DUP1
714 DUP4
715 SLOAD
716 DIV
717 MUL
718 DUP4
719 MSTORE
exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
function dump(start,end){for(let pc=start;pc<end;){const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else pc++; console.log(line);} }
dump(720,1050); console.log('---'); dump(1500,2408);
NODE" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
720 SWAP2
721 PUSH1 0x20
723 ADD
724 SWAP2
725 PUSH2 0x07e8
728 JUMP
729 JUMPDEST
730 PUSH2 0x05ea
733 PUSH1 0x06
735 SLOAD
736 CALLVALUE
737 SWAP1
738 PUSH1 0x00
740 SWAP1
741 DUP2
742 SWAP1
743 DUP2
744 SWAP1
745 DUP5
746 GT
747 ISZERO
748 PUSH2 0x083e
751 JUMPI
752 PUSH2 0x0002
755 JUMP
756 JUMPDEST
757 PUSH2 0x0106
760 PUSH1 0x04
762 CALLDATALOAD
763 PUSH1 0x24
765 CALLDATALOAD
766 CALLER
767 PUSH1 0x01
769 PUSH1 0xa0
771 PUSH1 0x02
773 EXP
774 SUB
775 AND
776 PUSH1 0x00
778 SWAP1
779 DUP2
780 MSTORE
781 PUSH1 0x09
783 PUSH1 0x20
785 MSTORE
786 PUSH1 0x40
788 SWAP1
789 SHA3
790 SLOAD
791 DUP2
792 SWAP1
793 LT
794 ISZERO
795 PUSH2 0x0651
798 JUMPI
799 PUSH2 0x0002
802 JUMP
803 JUMPDEST
804 PUSH2 0x05ea
807 PUSH1 0x06
809 SLOAD
810 DUP2
811 JUMP
812 JUMPDEST
813 PUSH2 0x05ea
816 PUSH1 0x08
818 SLOAD
819 DUP2
820 JUMP
821 JUMPDEST
822 PUSH2 0x0106
825 PUSH1 0x04
827 CALLDATALOAD
828 PUSH1 0x00
830 SLOAD
831 CALLER
832 PUSH1 0x01
834 PUSH1 0xa0
836 PUSH1 0x02
838 EXP
839 SUB
840 SWAP1
841 DUP2
842 AND
843 SWAP2
844 AND
845 EQ
846 PUSH2 0x0817
849 JUMPI
850 PUSH2 0x0002
853 JUMP
854 JUMPDEST
855 PUSH1 0x40
857 DUP1
858 MLOAD
859 PUSH1 0x20
861 PUSH1 0x44
863 CALLDATALOAD
864 PUSH1 0x04
866 DUP2
867 DUP2
868 ADD
869 CALLDATALOAD
870 PUSH1 0x1f
872 DUP2
873 ADD
874 DUP5
875 SWAP1
876 DIV
877 DUP5
878 MUL
879 DUP6
880 ADD
881 DUP5
882 ADD
883 SWAP1
884 SWAP6
885 MSTORE
886 DUP5
887 DUP5
888 MSTORE
889 PUSH2 0x05ea
892 SWAP5
893 DUP2
894 CALLDATALOAD
895 SWAP5
896 PUSH1 0x24
898 DUP1
899 CALLDATALOAD
900 SWAP6
901 SWAP4
902 SWAP5
903 PUSH1 0x64
905 SWAP5
906 SWAP3
907 SWAP4
908 SWAP2
909 ADD
910 SWAP2
911 DUP2
912 SWAP1
913 DUP5
914 ADD
915 DUP4
916 DUP3
917 DUP1
918 DUP3
919 DUP5
920 CALLDATACOPY
921 POP
922 SWAP5
923 SWAP7
924 POP
925 POP
926 POP
927 POP
928 POP
929 POP
930 POP
931 PUSH1 0x00
933 PUSH1 0x00
935 DUP4
936 PUSH1 0x0a
938 PUSH1 0x00
940 POP
941 PUSH1 0x00
943 CALLER
944 PUSH1 0x01
946 PUSH1 0xa0
948 PUSH1 0x02
950 EXP
951 SUB
952 AND
953 DUP2
954 MSTORE
955 PUSH1 0x20
957 ADD
958 SWAP1
959 DUP2
960 MSTORE
961 PUSH1 0x20
963 ADD
964 PUSH1 0x00
966 SHA3
967 PUSH1 0x00
969 POP
970 PUSH1 0x00
972 DUP8
973 PUSH1 0x01
975 PUSH1 0xa0
977 PUSH1 0x02
979 EXP
980 SUB
981 AND
982 DUP2
983 MSTORE
984 PUSH1 0x20
986 ADD
987 SWAP1
988 DUP2
989 MSTORE
990 PUSH1 0x20
992 ADD
993 PUSH1 0x00
995 SHA3
996 PUSH1 0x00
998 POP
999 DUP2
1000 SWAP1
1001 SSTORE
1002 POP
1003 DUP5
1004 SWAP1
1005 POP
1006 DUP1
1007 PUSH1 0x01
1009 PUSH1 0xa0
1011 PUSH1 0x02
1013 EXP
1014 SUB
1015 AND
1016 PUSH4 0x8f4ffcb1
1021 CALLER
1022 DUP7
1023 ADDRESS
1024 DUP8
1025 PUSH1 0x40
1027 MLOAD
1028 DUP6
1029 PUSH1 0xe0
1031 PUSH1 0x02
1033 EXP
1034 MUL
1035 DUP2
1036 MSTORE
1037 PUSH1 0x04
1039 ADD
1040 DUP1
1041 DUP6
1042 PUSH1 0x01
1044 PUSH1 0xa0
1046 PUSH1 0x02
1048 EXP
1049 SUB
---
1500 JUMPDEST
1501 POP
1502 SWAP3
1503 POP
1504 POP
1505 POP
1506 PUSH1 0x40
1508 MLOAD
1509 DUP1
1510 SWAP2
1511 SUB
1512 SWAP1
1513 RETURN
1514 JUMPDEST
1515 PUSH1 0x40
1517 DUP1
1518 MLOAD
1519 SWAP2
1520 DUP3
1521 MSTORE
1522 MLOAD
1523 SWAP1
1524 DUP2
1525 SWAP1
1526 SUB
1527 PUSH1 0x20
1529 ADD
1530 SWAP1
1531 RETURN
1532 JUMPDEST
1533 PUSH1 0x40
1535 DUP1
1536 MLOAD
1537 PUSH4 0xffffffff
1542 SWAP3
1543 SWAP1
1544 SWAP3
1545 AND
1546 DUP3
1547 MSTORE
1548 MLOAD
1549 SWAP1
1550 DUP2
1551 SWAP1
1552 SUB
1553 PUSH1 0x20
1555 ADD
1556 SWAP1
1557 RETURN
1558 JUMPDEST
1559 PUSH1 0x40
1561 DUP1
1562 MLOAD
1563 PUSH1 0xff
1565 SWAP1
1566 SWAP3
1567 AND
1568 DUP3
1569 MSTORE
1570 MLOAD
1571 SWAP1
1572 DUP2
1573 SWAP1
1574 SUB
1575 PUSH1 0x20
1577 ADD
1578 SWAP1
1579 RETURN
1580 JUMPDEST
1581 PUSH1 0x40
1583 DUP1
1584 MLOAD
1585 PUSH1 0x01
1587 PUSH1 0xa0
1589 PUSH1 0x02
1591 EXP
1592 SUB
1593 SWAP3
1594 SWAP1
1595 SWAP3
1596 AND
1597 DUP3
1598 MSTORE
1599 MLOAD
1600 SWAP1
1601 DUP2
1602 SWAP1
1603 SUB
1604 PUSH1 0x20
1606 ADD
1607 SWAP1
1608 RETURN
1609 JUMPDEST
1610 POP
1611 SWAP4
1612 SWAP3
1613 POP
1614 POP
1615 POP
1616 JUMP
1617 JUMPDEST
1618 PUSH1 0x01
1620 PUSH1 0xa0
1622 PUSH1 0x02
1624 EXP
1625 SUB
1626 DUP3
1627 AND
1628 PUSH1 0x00
1630 SWAP1
1631 DUP2
1632 MSTORE
1633 PUSH1 0x09
1635 PUSH1 0x20
1637 MSTORE
1638 PUSH1 0x40
1640 SWAP1
1641 SHA3
1642 SLOAD
1643 DUP2
1644 DUP2
1645 ADD
1646 LT
1647 ISZERO
1648 PUSH2 0x0678
1651 JUMPI
1652 PUSH2 0x0002
1655 JUMP
1656 JUMPDEST
1657 CALLER
1658 PUSH1 0x01
1660 PUSH1 0xa0
1662 PUSH1 0x02
1664 EXP
1665 SUB
1666 SWAP1
1667 DUP2
1668 AND
1669 PUSH1 0x00
1671 DUP2
1672 DUP2
1673 MSTORE
1674 PUSH1 0x09
1676 PUSH1 0x20
1678 SWAP1
1679 DUP2
1680 MSTORE
1681 PUSH1 0x40
1683 DUP1
1684 DUP4
1685 SHA3
1686 DUP1
1687 SLOAD
1688 DUP8
1689 SWAP1
1690 SUB
1691 SWAP1
1692 SSTORE
1693 SWAP4
1694 DUP7
1695 AND
1696 DUP1
1697 DUP4
1698 MSTORE
1699 SWAP2
1700 DUP5
1701 SWAP1
1702 SHA3
1703 DUP1
1704 SLOAD
1705 DUP7
1706 ADD
1707 SWAP1
1708 SSTORE
1709 DUP4
1710 MLOAD
1711 DUP6
1712 DUP2
1713 MSTORE
1714 SWAP4
1715 MLOAD
1716 SWAP2
1717 SWAP4
1718 PUSH1 0x00
1720 DUP1
1721 MLOAD
1722 PUSH1 0x20
1724 PUSH2 0x0a0e
1727 DUP4
1728 CODECOPY
1729 DUP2
1730 MLOAD
1731 SWAP2
1732 MSTORE
1733 SWAP3
1734 SWAP1
1735 DUP2
1736 SWAP1
1737 SUB
1738 SWAP1
1739 SWAP2
1740 ADD
1741 SWAP1
1742 LOG3
1743 POP
1744 POP
1745 JUMP
1746 JUMPDEST
1747 PUSH1 0x01
1749 PUSH1 0xa0
1751 PUSH1 0x02
1753 EXP
1754 SUB
1755 DUP4
1756 AND
1757 PUSH1 0x00
1759 SWAP1
1760 DUP2
1761 MSTORE
1762 PUSH1 0x09
1764 PUSH1 0x20
1766 MSTORE
1767 PUSH1 0x40
1769 SWAP1
1770 SHA3
1771 SLOAD
1772 DUP1
1773 DUP4
1774 ADD
1775 LT
1776 ISZERO
1777 PUSH2 0x06f9
1780 JUMPI
1781 PUSH2 0x0002
1784 JUMP
1785 JUMPDEST
1786 PUSH1 0x01
1788 PUSH1 0xa0
1790 PUSH1 0x02
1792 EXP
1793 SUB
1794 DUP5
1795 DUP2
1796 AND
1797 PUSH1 0x00
1799 DUP2
1800 DUP2
1801 MSTORE
1802 PUSH1 0x0a
1804 PUSH1 0x20
1806 SWAP1
1807 DUP2
1808 MSTORE
1809 PUSH1 0x40
1811 DUP1
1812 DUP4
1813 SHA3
1814 CALLER
1815 SWAP1
1816 SWAP6
1817 AND
1818 DUP1
1819 DUP5
1820 MSTORE
1821 SWAP5
1822 DUP3
1823 MSTORE
1824 DUP1
1825 DUP4
1826 SHA3
1827 SLOAD
1828 SWAP4
1829 DUP4
1830 MSTORE
1831 PUSH1 0x0b
1833 DUP3
1834 MSTORE
1835 DUP1
1836 DUP4
1837 SHA3
1838 SWAP5
1839 DUP4
1840 MSTORE
1841 SWAP4
1842 SWAP1
1843 MSTORE
1844 SWAP2
1845 SWAP1
1846 SWAP2
1847 SHA3
1848 SLOAD
1849 DUP4
1850 ADD
1851 GT
1852 ISZERO
1853 PUSH2 0x0745
1856 JUMPI
1857 PUSH2 0x0002
1860 JUMP
1861 JUMPDEST
1862 PUSH1 0x01
1864 PUSH1 0xa0
1866 PUSH1 0x02
1868 EXP
1869 SUB
1870 DUP5
1871 DUP2
1872 AND
1873 PUSH1 0x00
1875 DUP2
1876 DUP2
1877 MSTORE
1878 PUSH1 0x09
1880 PUSH1 0x20
1882 SWAP1
1883 DUP2
1884 MSTORE
1885 PUSH1 0x40
1887 DUP1
1888 DUP4
1889 SHA3
1890 DUP1
1891 SLOAD
1892 DUP9
1893 SWAP1
1894 SUB
1895 SWAP1
1896 SSTORE
1897 DUP8
1898 DUP6
1899 AND
1900 DUP1
1901 DUP5
1902 MSTORE
1903 DUP2
1904 DUP5
1905 SHA3
1906 DUP1
1907 SLOAD
1908 DUP10
1909 ADD
1910 SWAP1
1911 SSTORE
1912 DUP5
1913 DUP5
1914 MSTORE
1915 PUSH1 0x0b
1917 DUP4
1918 MSTORE
1919 DUP2
1920 DUP5
1921 SHA3
1922 CALLER
1923 SWAP1
1924 SWAP7
1925 AND
1926 DUP5
1927 MSTORE
1928 SWAP5
1929 DUP3
1930 MSTORE
1931 SWAP2
1932 DUP3
1933 SWAP1
1934 SHA3
1935 DUP1
1936 SLOAD
1937 DUP8
1938 ADD
1939 SWAP1
1940 SSTORE
1941 DUP2
1942 MLOAD
1943 DUP7
1944 DUP2
1945 MSTORE
1946 SWAP2
1947 MLOAD
1948 PUSH1 0x00
1950 DUP1
1951 MLOAD
1952 PUSH1 0x20
1954 PUSH2 0x0a0e
1957 DUP4
1958 CODECOPY
1959 DUP2
1960 MLOAD
1961 SWAP2
1962 MSTORE
1963 SWAP3
1964 DUP2
1965 SWAP1
1966 SUB
1967 SWAP1
1968 SWAP2
1969 ADD
1970 SWAP1
1971 LOG3
1972 POP
1973 PUSH1 0x01
1975 SWAP4
1976 SWAP3
1977 POP
1978 POP
1979 POP
1980 JUMP
1981 JUMPDEST
1982 DUP3
1983 ADD
1984 SWAP2
1985 SWAP1
1986 PUSH1 0x00
1988 MSTORE
1989 PUSH1 0x20
1991 PUSH1 0x00
1993 SHA3
1994 SWAP1
1995 JUMPDEST
1996 DUP2
1997 SLOAD
1998 DUP2
1999 MSTORE
2000 SWAP1
2001 PUSH1 0x01
2003 ADD
2004 SWAP1
2005 PUSH1 0x20
2007 ADD
2008 DUP1
2009 DUP4
2010 GT
2011 PUSH2 0x07cb
2014 JUMPI
2015 DUP3
2016 SWAP1
2017 SUB
2018 PUSH1 0x1f
2020 AND
2021 DUP3
2022 ADD
2023 SWAP2
2024 JUMPDEST
2025 POP
2026 POP
2027 POP
2028 POP
2029 POP
2030 DUP2
2031 JUMP
2032 JUMPDEST
2033 PUSH1 0x06
2035 SSTORE
2036 JUMP
2037 JUMPDEST
2038 PUSH1 0x05
2040 DUP1
2041 SLOAD
2042 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2063 NOT
2064 AND
2065 DUP3
2066 OR
2067 SWAP1
2068 SSTORE
2069 POP
2070 JUMP
2071 JUMPDEST
2072 PUSH2 0x0200
2075 DUP2
2076 PUSH4 0xffffffff
2081 AND
2082 LT
2083 ISZERO
2084 PUSH2 0x082c
2087 JUMPI
2088 PUSH2 0x0002
2091 JUMP
2092 JUMPDEST
2093 PUSH1 0x07
2095 DUP1
2096 SLOAD
2097 PUSH4 0xffffffff
2102 NOT
2103 AND
2104 DUP3
2105 OR
2106 SWAP1
2107 SSTORE
2108 POP
2109 JUMP
2110 JUMPDEST
2111 PUSH1 0x04
2113 SLOAD
2114 ADDRESS
2115 PUSH1 0x01
2117 PUSH1 0xa0
2119 PUSH1 0x02
2121 EXP
2122 SUB
2123 AND
2124 BALANCE
2125 PUSH5 0x174876e800
2131 MUL
2132 DIV
2133 PUSH1 0x08
2135 SSTORE
2136 PUSH1 0x40
2138 DUP1
2139 MLOAD
2140 NUMBER
2141 DUP2
2142 MSTORE
2143 TIMESTAMP
2144 PUSH1 0x20
2146 DUP3
2147 ADD
2148 MSTORE
2149 DUP1
2150 DUP3
2151 ADD
2152 DUP7
2153 SWAP1
2154 MSTORE
2155 SWAP1
2156 MLOAD
2157 SWAP1
2158 DUP2
2159 SWAP1
2160 SUB
2161 PUSH1 0x60
2163 ADD
2164 SWAP1
2165 SHA3
2166 PUSH2 0x0880
2169 SWAP1
2170 PUSH1 0x0a
2172 PUSH2 0x01e7
2175 JUMP
2176 JUMPDEST
2177 PUSH1 0x07
2179 SLOAD
2180 SWAP1
2181 SWAP2
2182 POP
2183 PUSH4 0xffffffff
2188 AND
2189 DUP2
2190 LT
2191 PUSH2 0x08a5
2194 JUMPI
2195 PUSH1 0x00
2197 SWAP3
2198 POP
2199 PUSH2 0x03e7
2202 PUSH5 0x174876e800
2208 DUP6
2209 DIV
2210 DIV
2211 SWAP2
2212 POP
2213 JUMPDEST
2214 PUSH1 0x07
2216 SLOAD
2217 PUSH4 0xffffffff
2222 AND
2223 DUP2
2224 LT
2225 ISZERO
2226 PUSH2 0x08c3
2229 JUMPI
2230 PUSH5 0x174876e800
2236 PUSH1 0x02
2238 DUP6
2239 MUL
2240 DIV
2241 SWAP3
2242 POP
2243 JUMPDEST
2244 CALLER
2245 PUSH1 0x01
2247 PUSH1 0xa0
2249 PUSH1 0x02
2251 EXP
2252 SUB
2253 SWAP1
2254 DUP2
2255 AND
2256 PUSH1 0x00
2258 DUP2
2259 DUP2
2260 MSTORE
2261 PUSH1 0x09
2263 PUSH1 0x20
2265 SWAP1
2266 DUP2
2267 MSTORE
2268 PUSH1 0x40
2270 DUP1
2271 DUP4
2272 SHA3
2273 DUP1
2274 SLOAD
2275 DUP10
2276 ADD
2277 SWAP1
2278 SSTORE
2279 PUSH1 0x05
2281 SLOAD
2282 DUP6
2283 AND
2284 DUP4
2285 MSTORE
2286 DUP1
2287 DUP4
2288 SHA3
2289 DUP1
2290 SLOAD
2291 DUP9
2292 ADD
2293 SWAP1
2294 SSTORE
2295 ADDRESS
2296 SWAP1
2297 SWAP5
2298 AND
2299 DUP1
2300 DUP4
2301 MSTORE
2302 SWAP2
2303 DUP5
2304 SWAP1
2305 SHA3
2306 DUP1
2307 SLOAD
2308 DUP8
2309 DUP10
2310 ADD
2311 SWAP1
2312 SUB
2313 SWAP1
2314 SSTORE
2315 DUP4
2316 MLOAD
2317 DUP8
2318 DUP2
2319 MSTORE
2320 SWAP4
2321 MLOAD
2322 SWAP3
2323 SWAP4
2324 SWAP2
2325 SWAP3
2326 PUSH1 0x00
2328 DUP1
2329 MLOAD
2330 PUSH1 0x20
2332 PUSH2 0x0a0e
2335 DUP4
2336 CODECOPY
2337 DUP2
2338 MLOAD
2339 SWAP2
2340 MSTORE
2341 SWAP3
2342 DUP2
2343 SWAP1
2344 SUB
2345 SWAP1
2346 SWAP2
2347 ADD
2348 SWAP1
2349 LOG3
2350 PUSH1 0x05
2352 SLOAD
2353 PUSH1 0x40
2355 DUP1
2356 MLOAD
2357 DUP5
2358 DUP2
2359 MSTORE
2360 SWAP1
2361 MLOAD
2362 PUSH1 0x01
2364 PUSH1 0xa0
2366 PUSH1 0x02
2368 EXP
2369 SUB
2370 SWAP3
2371 DUP4
2372 AND
2373 SWAP3
2374 ADDRESS
2375 AND
2376 SWAP2
2377 PUSH1 0x00
2379 DUP1
2380 MLOAD
2381 PUSH1 0x20
2383 PUSH2 0x0a0e
2386 DUP4
2387 CODECOPY
2388 DUP2
2389 MLOAD
2390 SWAP2
2391 MSTORE
2392 SWAP2
2393 SWAP1
2394 DUP2
2395 SWAP1
2396 SUB
2397 PUSH1 0x20
2399 ADD
2400 SWAP1
2401 LOG3
2402 POP
2403 POP
2404 POP
2405 SWAP1
2406 JUMP
2407 JUMPDEST
exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
function dump(start,end){for(let pc=start;pc<end;){const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else pc++; console.log(line);} }
dump(2407,2574)
NODE" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
2407 JUMPDEST
2408 POP
2409 ADDRESS
2410 PUSH1 0x01
2412 PUSH1 0xa0
2414 PUSH1 0x02
2416 EXP
2417 SUB
2418 SWAP1
2419 DUP2
2420 AND
2421 PUSH1 0x00
2423 SWAP1
2424 DUP2
2425 MSTORE
2426 PUSH1 0x09
2428 PUSH1 0x20
2430 MSTORE
2431 PUSH1 0x40
2433 DUP1
2434 DUP3
2435 SHA3
2436 DUP1
2437 SLOAD
2438 DUP6
2439 ADD
2440 SWAP1
2441 SSTORE
2442 CALLER
2443 SWAP1
2444 SWAP3
2445 AND
2446 DUP1
2447 DUP3
2448 MSTORE
2449 DUP3
2450 DUP3
2451 SHA3
2452 DUP1
2453 SLOAD
2454 DUP6
2455 SWAP1
2456 SUB
2457 SWAP1
2458 SSTORE
2459 SWAP2
2460 MLOAD
2461 PUSH1 0x08
2463 SLOAD
2464 PUSH5 0x174876e800
2470 DUP6
2471 DIV
2472 MUL
2473 SWAP3
2474 SWAP2
2475 SWAP1
2476 DUP4
2477 SWAP1
2478 DUP3
2479 DUP2
2480 DUP2
2481 DUP2
2482 DUP6
2483 DUP9
2484 DUP4
2485 CALL
2486 POP
2487 POP
2488 PUSH1 0x40
2490 DUP1
2491 MLOAD
2492 DUP7
2493 DUP2
2494 MSTORE
2495 SWAP1
2496 MLOAD
2497 ADDRESS
2498 PUSH1 0x01
2500 PUSH1 0xa0
2502 PUSH1 0x02
2504 EXP
2505 SUB
2506 AND
2507 SWAP5
2508 SWAP4
2509 POP
2510 PUSH1 0x00
2512 DUP1
2513 MLOAD
2514 PUSH1 0x20
2516 PUSH2 0x0a0e
2519 DUP4
2520 CODECOPY
2521 DUP2
2522 MLOAD
2523 SWAP2
2524 MSTORE
2525 SWAP3
2526 POP
2527 SWAP1
2528 DUP2
2529 SWAP1
2530 SUB
2531 PUSH1 0x20
2533 ADD
2534 SWAP1
2535 LOG3
2536 SWAP2
2537 SWAP1
2538 POP
2539 JUMP
2540 JUMPDEST
2541 PUSH1 0x00
2543 DUP1
2544 SLOAD
2545 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2566 NOT
2567 AND
2568 DUP3
2569 OR
2570 SWAP1
2571 SSTORE
2572 POP
2573 JUMP
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.sinks' BYTECODE_BUNDLE.json | sed -n '1,260p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{
"call": 6,
"create": 0,
"create2": 2,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0,
"upgrade_slot_write_suspected": false
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' BYTECODE_BUNDLE.json | sed -n '1,320p'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
{
"keccak_count": 30,
"reads": 47,
"slots": [
{
"op": "SLOAD",
"pc": 272,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 343,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 363,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 375,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 406,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 471,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 596,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 626,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 645,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 715,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 735,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
},
{
"op": "SLOAD",
"pc": 809,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
},
{
"op": "SLOAD",
"pc": 818,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 830,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 1001,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1296,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 1362,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1392,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2041,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2096,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2113,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
},
{
"op": "SLOAD",
"pc": 2179,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2216,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
},
{
"op": "SLOAD",
"pc": 2281,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2352,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
},
{
"op": "SLOAD",
"pc": 2463,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
},
{
"op": "SLOAD",
"pc": 2544,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 17
}
exec
/bin/bash -lc "node -e 'for (const n of [1126,1194,1458,2110,2140,2175,2216,2230,2407,2485,2540,2032,2037,2071]) console.log(n, \"0x\"+n.toString(16))'" in /tmp/codex-x5qbg8gi
succeeded in 0ms:
1126 0x466
1194 0x4aa
1458 0x5b2
2110 0x83e
2140 0x85c
2175 0x87f
2216 0x8a8
2230 0x8b6
2407 0x967
2485 0x9b5
2540 0x9ec
2032 0x7f0
2037 0x7f5
2071 0x817
codex
{"no_findings":false,"summary":"BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.","findings":[{"severity":"medium","category":"other","title":"Best-effort inferred redemption path ignores ETH payout failure","exploit_scenario":"Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept.","recommendation":"Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.","evidence":"In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.","locations":["selector:0xe4849b32","pc:0x967","pc:0x9b5"]},{"severity":"low","category":"other","title":"Financial logic appears to use manipulable block data as randomness","exploit_scenario":"The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable.","recommendation":"Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.","evidence":"The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.","locations":["selector:0xa6f2ae3a","selector:0x41fa4876","pc:0x1e7","pc:0x85c","pc:0x8a8"]}]}
tokens used
76,641
{
"codex": {
"ran_at": "2026-04-05T07:02:35.793562+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 5214,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.",
"raw_final": {
"summary": "BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.",
"findings": [
{
"title": "Best-effort inferred redemption path ignores ETH payout failure",
"category": "other",
"evidence": "In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.",
"severity": "medium",
"locations": [
"selector:0xe4849b32",
"pc:0x967",
"pc:0x9b5"
],
"recommendation": "Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.",
"exploit_scenario": "Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept."
},
{
"title": "Financial logic appears to use manipulable block data as randomness",
"category": "other",
"evidence": "The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.",
"severity": "low",
"locations": [
"selector:0xa6f2ae3a",
"selector:0x41fa4876",
"pc:0x1e7",
"pc:0x85c",
"pc:0x8a8"
],
"recommendation": "Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.",
"exploit_scenario": "The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0106 0000000a: JUMPI 0000000b: PUSH1 0xe0 0000000d: PUSH1 0x02 0000000f: EXP 00000010: PUSH1 0x00 00000012: CALLDATALOAD 00000013: DIV 00000014: PUSH4 0x06fdde03 00000019: DUP2 0000001a: EQ 0000001b: PUSH2 0x0108 0000001e: JUMPI 0000001f: DUP1 00000020: PUSH4 0x18160ddd 00000025: EQ 00000026: PUSH2 0x0165 00000029: JUMPI 0000002a: DUP1 0000002b: PUSH4 0x1fe9eabc 00000030: EQ 00000031: PUSH2 0x016e 00000034: JUMPI 00000035: DUP1 00000036: PUSH4 0x233de126 0000003b: EQ 0000003c: PUSH2 0x0190 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x23b872dd 00000046: EQ 00000047: PUSH2 0x019f 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0x313ce567 00000051: EQ 00000052: PUSH2 0x01d1 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0x41fa4876 0000005c: EQ 0000005d: PUSH2 0x01dd 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x70a08231 00000067: EQ 00000068: PUSH2 0x0233 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x7f2a8a80 00000072: EQ 00000073: PUSH2 0x024b 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x8da5cb5b 0000007d: EQ 0000007e: PUSH2 0x026c 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0x95d89b41 00000088: EQ 00000089: PUSH2 0x027e 0000008c: JUMPI 0000008d: DUP1 0000008e: PUSH4 0xa6f2ae3a 00000093: EQ 00000094: PUSH2 0x02d9 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0xa9059cbb 0000009e: EQ 0000009f: PUSH2 0x02f4 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xaa295de9 000000a9: EQ 000000aa: PUSH2 0x0323 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xbc094049 000000b4: EQ 000000b5: PUSH2 0x032c 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0xc4839e8b 000000bf: EQ 000000c0: PUSH2 0x0335 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0xcae9ca51 000000ca: EQ 000000cb: PUSH2 0x0356 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0xdc3080f2 000000d5: EQ 000000d6: PUSH2 0x04bd 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0xdd62ed3e 000000e0: EQ 000000e1: PUSH2 0x04e2 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0xe4849b32 000000eb: EQ 000000ec: PUSH2 0x0507 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0xf2fde38b 000000f6: EQ 000000f7: PUSH2 0x0549 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0xff9b3acf 00000101: EQ 00000102: PUSH2 0x056a 00000105: JUMPI 00000106: JUMPDEST 00000107: STOP 00000108: JUMPDEST 00000109: PUSH1 0x40 0000010b: DUP1 0000010c: MLOAD 0000010d: PUSH1 0x01 0000010f: DUP1 00000110: SLOAD 00000111: PUSH1 0x20 00000113: PUSH1 0x02 00000115: DUP3 00000116: DUP5 00000117: AND 00000118: ISZERO 00000119: PUSH2 0x0100 0000011c: MUL 0000011d: PUSH1 0x00 0000011f: NOT 00000120: ADD 00000121: SWAP1 00000122: SWAP3 00000123: AND 00000124: SWAP2 00000125: SWAP1 00000126: SWAP2 00000127: DIV 00000128: PUSH1 0x1f 0000012a: DUP2 0000012b: ADD 0000012c: DUP3 0000012d: SWAP1 0000012e: DIV 0000012f: DUP3 00000130: MUL 00000131: DUP5 00000132: ADD 00000133: DUP3 00000134: ADD 00000135: SWAP1 00000136: SWAP5 00000137: MSTORE 00000138: DUP4 00000139: DUP4 0000013a: MSTORE 0000013b: PUSH2 0x057c 0000013e: SWAP4 0000013f: SWAP1 00000140: DUP4 00000141: ADD 00000142: DUP3 00000143: DUP3 00000144: DUP1 00000145: ISZERO 00000146: PUSH2 0x07e8 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH1 0x1f 0000014d: LT 0000014e: PUSH2 0x07bd 00000151: JUMPI 00000152: PUSH2 0x0100 00000155: DUP1 00000156: DUP4 00000157: SLOAD 00000158: DIV 00000159: MUL 0000015a: DUP4 0000015b: MSTORE 0000015c: SWAP2 0000015d: PUSH1 0x20 0000015f: ADD 00000160: SWAP2 00000161: PUSH2 0x07e8 00000164: JUMP 00000165: JUMPDEST 00000166: PUSH2 0x05ea 00000169: PUSH1 0x04 0000016b: SLOAD 0000016c: DUP2 0000016d: JUMP 0000016e: JUMPDEST 0000016f: PUSH2 0x0106 00000172: PUSH1 0x04 00000174: CALLDATALOAD 00000175: PUSH1 0x00 00000177: SLOAD 00000178: PUSH1 0x01 0000017a: PUSH1 0xa0 0000017c: PUSH1 0x02 0000017e: EXP 0000017f: SUB 00000180: SWAP1 00000181: DUP2 00000182: AND 00000183: CALLER 00000184: SWAP1 00000185: SWAP2 00000186: AND 00000187: EQ 00000188: PUSH2 0x07f0 0000018b: JUMPI 0000018c: PUSH2 0x0002 0000018f: JUMP 00000190: JUMPDEST 00000191: PUSH2 0x05fc 00000194: PUSH1 0x07 00000196: SLOAD 00000197: PUSH4 0xffffffff 0000019c: AND 0000019d: DUP2 0000019e: JUMP 0000019f: JUMPDEST 000001a0: PUSH2 0x05ea 000001a3: PUSH1 0x04 000001a5: CALLDATALOAD 000001a6: PUSH1 0x24 000001a8: CALLDATALOAD 000001a9: PUSH1 0x44 000001ab: CALLDATALOAD 000001ac: PUSH1 0x01 000001ae: PUSH1 0xa0 000001b0: PUSH1 0x02 000001b2: EXP 000001b3: SUB 000001b4: DUP4 000001b5: AND 000001b6: PUSH1 0x00 000001b8: SWAP1 000001b9: DUP2 000001ba: MSTORE 000001bb: PUSH1 0x09 000001bd: PUSH1 0x20 000001bf: MSTORE 000001c0: PUSH1 0x40 000001c2: DUP2 000001c3: KECCAK256 000001c4: SLOAD 000001c5: DUP3 000001c6: SWAP1 000001c7: LT 000001c8: ISZERO 000001c9: PUSH2 0x06d2 000001cc: JUMPI 000001cd: PUSH2 0x0002 000001d0: JUMP 000001d1: JUMPDEST 000001d2: PUSH2 0x0616 000001d5: PUSH1 0x03 000001d7: SLOAD 000001d8: PUSH1 0xff 000001da: AND 000001db: DUP2 000001dc: JUMP 000001dd: JUMPDEST 000001de: PUSH2 0x05ea 000001e1: PUSH1 0x04 000001e3: CALLDATALOAD 000001e4: PUSH1 0x24 000001e6: CALLDATALOAD 000001e7: JUMPDEST 000001e8: PUSH1 0x00 000001ea: DUP1 000001eb: DUP1 000001ec: JUMPDEST 000001ed: DUP4 000001ee: DUP2 000001ef: LT 000001f0: ISZERO 000001f1: PUSH2 0x0649 000001f4: JUMPI 000001f5: PUSH1 0x40 000001f7: DUP1 000001f8: MLOAD 000001f9: NUMBER 000001fa: DUP4 000001fb: SWAP1 000001fc: SUB 000001fd: PUSH1 0x00 000001ff: NOT 00000200: ADD 00000201: BLOCKHASH 00000202: DUP2 00000203: MSTORE 00000204: PUSH1 0x20 00000206: DUP2 00000207: ADD 00000208: DUP8 00000209: SWAP1 0000020a: MSTORE 0000020b: DUP2 0000020c: MLOAD 0000020d: SWAP1 0000020e: DUP2 0000020f: SWAP1 00000210: SUB 00000211: SWAP1 00000212: SWAP2 00000213: ADD 00000214: SWAP1 00000215: KECCAK256 00000216: PUSH1 0x02 00000218: SWAP1 00000219: MOD 0000021a: PUSH1 0x00 0000021c: EQ 0000021d: ISZERO 0000021e: PUSH2 0x022b 00000221: JUMPI 00000222: PUSH1 0x02 00000224: DUP2 00000225: SWAP1 00000226: EXP 00000227: SWAP1 00000228: SWAP2 00000229: ADD 0000022a: SWAP1 0000022b: JUMPDEST 0000022c: PUSH1 0x01 0000022e: ADD 0000022f: PUSH2 0x01ec 00000232: JUMP 00000233: JUMPDEST 00000234: PUSH2 0x05ea 00000237: PUSH1 0x04 00000239: CALLDATALOAD 0000023a: PUSH1 0x09 0000023c: PUSH1 0x20 0000023e: MSTORE 0000023f: PUSH1 0x00 00000241: SWAP1 00000242: DUP2 00000243: MSTORE 00000244: PUSH1 0x40 00000246: SWAP1 00000247: KECCAK256 00000248: SLOAD 00000249: DUP2 0000024a: JUMP 0000024b: JUMPDEST 0000024c: PUSH2 0x0106 0000024f: PUSH1 0x04 00000251: CALLDATALOAD 00000252: PUSH1 0x00 00000254: SLOAD 00000255: CALLER 00000256: PUSH1 0x01 00000258: PUSH1 0xa0 0000025a: PUSH1 0x02 0000025c: EXP 0000025d: SUB 0000025e: SWAP1 0000025f: DUP2 00000260: AND 00000261: SWAP2 00000262: AND 00000263: EQ 00000264: PUSH2 0x07f5 00000267: JUMPI 00000268: PUSH2 0x0002 0000026b: JUMP 0000026c: JUMPDEST 0000026d: PUSH2 0x062c 00000270: PUSH1 0x00 00000272: SLOAD 00000273: PUSH1 0x01 00000275: PUSH1 0xa0 00000277: PUSH1 0x02 00000279: EXP 0000027a: SUB 0000027b: AND 0000027c: DUP2 0000027d: JUMP 0000027e: JUMPDEST 0000027f: PUSH2 0x057c 00000282: PUSH1 0x02 00000284: DUP1 00000285: SLOAD 00000286: PUSH1 0x40 00000288: DUP1 00000289: MLOAD 0000028a: PUSH1 0x20 0000028c: PUSH1 0x01 0000028e: DUP5 0000028f: AND 00000290: ISZERO 00000291: PUSH2 0x0100 00000294: MUL 00000295: PUSH1 0x00 00000297: NOT 00000298: ADD 00000299: SWAP1 0000029a: SWAP4 0000029b: AND 0000029c: DUP5 0000029d: SWAP1 0000029e: DIV 0000029f: PUSH1 0x1f 000002a1: DUP2 000002a2: ADD 000002a3: DUP5 000002a4: SWAP1 000002a5: DIV 000002a6: DUP5 000002a7: MUL 000002a8: DUP3 000002a9: ADD 000002aa: DUP5 000002ab: ADD 000002ac: SWAP1 000002ad: SWAP3 000002ae: MSTORE 000002af: DUP2 000002b0: DUP2 000002b1: MSTORE 000002b2: SWAP3 000002b3: SWAP2 000002b4: DUP4 000002b5: ADD 000002b6: DUP3 000002b7: DUP3 000002b8: DUP1 000002b9: ISZERO 000002ba: PUSH2 0x07e8 000002bd: JUMPI 000002be: DUP1 000002bf: PUSH1 0x1f 000002c1: LT 000002c2: PUSH2 0x07bd 000002c5: JUMPI 000002c6: PUSH2 0x0100 000002c9: DUP1 000002ca: DUP4 000002cb: SLOAD 000002cc: DIV 000002cd: MUL 000002ce: DUP4 000002cf: MSTORE 000002d0: SWAP2 000002d1: PUSH1 0x20 000002d3: ADD 000002d4: SWAP2 000002d5: PUSH2 0x07e8 000002d8: JUMP 000002d9: JUMPDEST 000002da: PUSH2 0x05ea 000002dd: PUSH1 0x06 000002df: SLOAD 000002e0: CALLVALUE 000002e1: SWAP1 000002e2: PUSH1 0x00 000002e4: SWAP1 000002e5: DUP2 000002e6: SWAP1 000002e7: DUP2 000002e8: SWAP1 000002e9: DUP5 000002ea: GT 000002eb: ISZERO 000002ec: PUSH2 0x083e 000002ef: JUMPI 000002f0: PUSH2 0x0002 000002f3: JUMP 000002f4: JUMPDEST 000002f5: PUSH2 0x0106 000002f8: PUSH1 0x04 000002fa: CALLDATALOAD 000002fb: PUSH1 0x24 000002fd: CALLDATALOAD 000002fe: CALLER 000002ff: PUSH1 0x01 00000301: PUSH1 0xa0 00000303: PUSH1 0x02 00000305: EXP 00000306: SUB 00000307: AND 00000308: PUSH1 0x00 0000030a: SWAP1 0000030b: DUP2 0000030c: MSTORE 0000030d: PUSH1 0x09 0000030f: PUSH1 0x20 00000311: MSTORE 00000312: PUSH1 0x40 00000314: SWAP1 00000315: KECCAK256 00000316: SLOAD 00000317: DUP2 00000318: SWAP1 00000319: LT 0000031a: ISZERO 0000031b: PUSH2 0x0651 0000031e: JUMPI 0000031f: PUSH2 0x0002 00000322: JUMP 00000323: JUMPDEST 00000324: PUSH2 0x05ea 00000327: PUSH1 0x06 00000329: SLOAD 0000032a: DUP2 0000032b: JUMP 0000032c: JUMPDEST 0000032d: PUSH2 0x05ea 00000330: PUSH1 0x08 00000332: SLOAD 00000333: DUP2 00000334: JUMP 00000335: JUMPDEST 00000336: PUSH2 0x0106 00000339: PUSH1 0x04 0000033b: CALLDATALOAD 0000033c: PUSH1 0x00 0000033e: SLOAD 0000033f: CALLER 00000340: PUSH1 0x01 00000342: PUSH1 0xa0 00000344: PUSH1 0x02 00000346: EXP 00000347: SUB 00000348: SWAP1 00000349: DUP2 0000034a: AND 0000034b: SWAP2 0000034c: AND 0000034d: EQ 0000034e: PUSH2 0x0817 00000351: JUMPI 00000352: PUSH2 0x0002 00000355: JUMP 00000356: JUMPDEST 00000357: PUSH1 0x40 00000359: DUP1 0000035a: MLOAD 0000035b: PUSH1 0x20 0000035d: PUSH1 0x44 0000035f: CALLDATALOAD 00000360: PUSH1 0x04 00000362: DUP2 00000363: DUP2 00000364: ADD 00000365: CALLDATALOAD 00000366: PUSH1 0x1f 00000368: DUP2 00000369: ADD 0000036a: DUP5 0000036b: SWAP1 0000036c: DIV 0000036d: DUP5 0000036e: MUL 0000036f: DUP6 00000370: ADD 00000371: DUP5 00000372: ADD 00000373: SWAP1 00000374: SWAP6 00000375: MSTORE 00000376: DUP5 00000377: DUP5 00000378: MSTORE 00000379: PUSH2 0x05ea 0000037c: SWAP5 0000037d: DUP2 0000037e: CALLDATALOAD 0000037f: SWAP5 00000380: PUSH1 0x24 00000382: DUP1 00000383: CALLDATALOAD 00000384: SWAP6 00000385: SWAP4 00000386: SWAP5 00000387: PUSH1 0x64 00000389: SWAP5 0000038a: SWAP3 0000038b: SWAP4 0000038c: SWAP2 0000038d: ADD 0000038e: SWAP2 0000038f: DUP2 00000390: SWAP1 00000391: DUP5 00000392: ADD 00000393: DUP4 00000394: DUP3 00000395: DUP1 00000396: DUP3 00000397: DUP5 00000398: CALLDATACOPY 00000399: POP 0000039a: SWAP5 0000039b: SWAP7 0000039c: POP 0000039d: POP 0000039e: POP 0000039f: POP 000003a0: POP 000003a1: POP 000003a2: POP 000003a3: PUSH1 0x00 000003a5: PUSH1 0x00 000003a7: DUP4 000003a8: PUSH1 0x0a 000003aa: PUSH1 0x00 000003ac: POP 000003ad: PUSH1 0x00 000003af: CALLER 000003b0: PUSH1 0x01 000003b2: PUSH1 0xa0 000003b4: PUSH1 0x02 000003b6: EXP 000003b7: SUB 000003b8: AND 000003b9: DUP2 000003ba: MSTORE 000003bb: PUSH1 0x20 000003bd: ADD 000003be: SWAP1 000003bf: DUP2 000003c0: MSTORE 000003c1: PUSH1 0x20 000003c3: ADD 000003c4: PUSH1 0x00 000003c6: KECCAK256 000003c7: PUSH1 0x00 000003c9: POP 000003ca: PUSH1 0x00 000003cc: DUP8 000003cd: PUSH1 0x01 000003cf: PUSH1 0xa0 000003d1: PUSH1 0x02 000003d3: EXP 000003d4: SUB 000003d5: AND 000003d6: DUP2 000003d7: MSTORE 000003d8: PUSH1 0x20 000003da: ADD 000003db: SWAP1 000003dc: DUP2 000003dd: MSTORE 000003de: PUSH1 0x20 000003e0: ADD 000003e1: PUSH1 0x00 000003e3: KECCAK256 000003e4: PUSH1 0x00 000003e6: POP 000003e7: DUP2 000003e8: SWAP1 000003e9: SSTORE 000003ea: POP 000003eb: DUP5 000003ec: SWAP1 000003ed: POP 000003ee: DUP1 000003ef: PUSH1 0x01 000003f1: PUSH1 0xa0 000003f3: PUSH1 0x02 000003f5: EXP 000003f6: SUB 000003f7: AND 000003f8: PUSH4 0x8f4ffcb1 000003fd: CALLER 000003fe: DUP7 000003ff: ADDRESS 00000400: DUP8 00000401: PUSH1 0x40 00000403: MLOAD 00000404: DUP6 00000405: PUSH1 0xe0 00000407: PUSH1 0x02 00000409: EXP 0000040a: MUL 0000040b: DUP2 0000040c: MSTORE 0000040d: PUSH1 0x04 0000040f: ADD 00000410: DUP1 00000411: DUP6 00000412: PUSH1 0x01 00000414: PUSH1 0xa0 00000416: PUSH1 0x02 00000418: EXP 00000419: SUB 0000041a: AND 0000041b: DUP2 0000041c: MSTORE 0000041d: PUSH1 0x20 0000041f: ADD 00000420: DUP5 00000421: DUP2 00000422: MSTORE 00000423: PUSH1 0x20 00000425: ADD 00000426: DUP4 00000427: PUSH1 0x01 00000429: PUSH1 0xa0 0000042b: PUSH1 0x02 0000042d: EXP 0000042e: SUB 0000042f: AND 00000430: DUP2 00000431: MSTORE 00000432: PUSH1 0x20 00000434: ADD 00000435: DUP1 00000436: PUSH1 0x20 00000438: ADD 00000439: DUP3 0000043a: DUP2 0000043b: SUB 0000043c: DUP3 0000043d: MSTORE 0000043e: DUP4 0000043f: DUP2 00000440: DUP2 00000441: MLOAD 00000442: DUP2 00000443: MSTORE 00000444: PUSH1 0x20 00000446: ADD 00000447: SWAP2 00000448: POP 00000449: DUP1 0000044a: MLOAD 0000044b: SWAP1 0000044c: PUSH1 0x20 0000044e: ADD 0000044f: SWAP1 00000450: DUP1 00000451: DUP4 00000452: DUP4 00000453: DUP3 00000454: SWAP1 00000455: PUSH1 0x00 00000457: PUSH1 0x04 00000459: PUSH1 0x20 0000045b: DUP5 0000045c: PUSH1 0x1f 0000045e: ADD 0000045f: DIV 00000460: PUSH1 0x0f 00000462: MUL 00000463: PUSH1 0x03 00000465: ADD 00000466: CALL 00000467: POP 00000468: SWAP1 00000469: POP 0000046a: SWAP1 0000046b: DUP2 0000046c: ADD 0000046d: SWAP1 0000046e: PUSH1 0x1f 00000470: AND 00000471: DUP1 00000472: ISZERO 00000473: PUSH2 0x0490 00000476: JUMPI 00000477: DUP1 00000478: DUP3 00000479: SUB 0000047a: DUP1 0000047b: MLOAD 0000047c: PUSH1 0x01 0000047e: DUP4 0000047f: PUSH1 0x20 00000481: SUB 00000482: PUSH2 0x0100 00000485: EXP 00000486: SUB 00000487: NOT 00000488: AND 00000489: DUP2 0000048a: MSTORE 0000048b: PUSH1 0x20 0000048d: ADD 0000048e: SWAP2 0000048f: POP 00000490: JUMPDEST 00000491: POP 00000492: SWAP6 00000493: POP 00000494: POP 00000495: POP 00000496: POP 00000497: POP 00000498: POP 00000499: PUSH1 0x00 0000049b: PUSH1 0x40 0000049d: MLOAD 0000049e: DUP1 0000049f: DUP4 000004a0: SUB 000004a1: DUP2 000004a2: PUSH1 0x00 000004a4: DUP8 000004a5: PUSH2 0x61da 000004a8: GAS 000004a9: SUB 000004aa: CALL 000004ab: ISZERO 000004ac: PUSH2 0x0002 000004af: JUMPI 000004b0: POP 000004b1: PUSH1 0x01 000004b3: SWAP8 000004b4: SWAP7 000004b5: POP 000004b6: POP 000004b7: POP 000004b8: POP 000004b9: POP 000004ba: POP 000004bb: POP 000004bc: JUMP 000004bd: JUMPDEST 000004be: PUSH1 0x0b 000004c0: PUSH1 0x20 000004c2: SWAP1 000004c3: DUP2 000004c4: MSTORE 000004c5: PUSH1 0x04 000004c7: CALLDATALOAD 000004c8: PUSH1 0x00 000004ca: SWAP1 000004cb: DUP2 000004cc: MSTORE 000004cd: PUSH1 0x40 000004cf: DUP1 000004d0: DUP3 000004d1: KECCAK256 000004d2: SWAP1 000004d3: SWAP3 000004d4: MSTORE 000004d5: PUSH1 0x24 000004d7: CALLDATALOAD 000004d8: DUP2 000004d9: MSTORE 000004da: KECCAK256 000004db: SLOAD 000004dc: PUSH2 0x05ea 000004df: SWAP1 000004e0: DUP2 000004e1: JUMP 000004e2: JUMPDEST 000004e3: PUSH1 0x0a 000004e5: PUSH1 0x20 000004e7: SWAP1 000004e8: DUP2 000004e9: MSTORE 000004ea: PUSH1 0x04 000004ec: CALLDATALOAD 000004ed: PUSH1 0x00 000004ef: SWAP1 000004f0: DUP2 000004f1: MSTORE 000004f2: PUSH1 0x40 000004f4: DUP1 000004f5: DUP3 000004f6: KECCAK256 000004f7: SWAP1 000004f8: SWAP3 000004f9: MSTORE 000004fa: PUSH1 0x24 000004fc: CALLDATALOAD 000004fd: DUP2 000004fe: MSTORE 000004ff: KECCAK256 00000500: SLOAD 00000501: PUSH2 0x05ea 00000504: SWAP1 00000505: DUP2 00000506: JUMP 00000507: JUMPDEST 00000508: PUSH2 0x05ea 0000050b: PUSH1 0x04 0000050d: CALLDATALOAD 0000050e: PUSH1 0x04 00000510: SLOAD 00000511: ADDRESS 00000512: PUSH1 0x01 00000514: PUSH1 0xa0 00000516: PUSH1 0x02 00000518: EXP 00000519: SUB 0000051a: SWAP1 0000051b: DUP2 0000051c: AND 0000051d: BALANCE 0000051e: PUSH5 0x174876e800 00000524: MUL 00000525: SWAP2 00000526: SWAP1 00000527: SWAP2 00000528: DIV 00000529: PUSH1 0x08 0000052b: SSTORE 0000052c: CALLER 0000052d: AND 0000052e: PUSH1 0x00 00000530: SWAP1 00000531: DUP2 00000532: MSTORE 00000533: PUSH1 0x09 00000535: PUSH1 0x20 00000537: MSTORE 00000538: PUSH1 0x40 0000053a: DUP2 0000053b: KECCAK256 0000053c: SLOAD 0000053d: DUP3 0000053e: SWAP1 0000053f: LT 00000540: ISZERO 00000541: PUSH2 0x0967 00000544: JUMPI 00000545: PUSH2 0x0002 00000548: JUMP 00000549: JUMPDEST 0000054a: PUSH2 0x0106 0000054d: PUSH1 0x04 0000054f: CALLDATALOAD 00000550: PUSH1 0x00 00000552: SLOAD 00000553: CALLER 00000554: PUSH1 0x01 00000556: PUSH1 0xa0 00000558: PUSH1 0x02 0000055a: EXP 0000055b: SUB 0000055c: SWAP1 0000055d: DUP2 0000055e: AND 0000055f: SWAP2 00000560: AND 00000561: EQ 00000562: PUSH2 0x09ec 00000565: JUMPI 00000566: PUSH2 0x0002 00000569: JUMP 0000056a: JUMPDEST 0000056b: PUSH2 0x062c 0000056e: PUSH1 0x05 00000570: SLOAD 00000571: PUSH1 0x01 00000573: PUSH1 0xa0 00000575: PUSH1 0x02 00000577: EXP 00000578: SUB 00000579: AND 0000057a: DUP2 0000057b: JUMP 0000057c: JUMPDEST 0000057d: PUSH1 0x40 0000057f: MLOAD 00000580: DUP1 00000581: DUP1 00000582: PUSH1 0x20 00000584: ADD 00000585: DUP3 00000586: DUP2 00000587: SUB 00000588: DUP3 00000589: MSTORE 0000058a: DUP4 0000058b: DUP2 0000058c: DUP2 0000058d: MLOAD 0000058e: DUP2 0000058f: MSTORE 00000590: PUSH1 0x20 00000592: ADD 00000593: SWAP2 00000594: POP 00000595: DUP1 00000596: MLOAD 00000597: SWAP1 00000598: PUSH1 0x20 0000059a: ADD 0000059b: SWAP1 0000059c: DUP1 0000059d: DUP4 0000059e: DUP4 0000059f: DUP3 000005a0: SWAP1 000005a1: PUSH1 0x00 000005a3: PUSH1 0x04 000005a5: PUSH1 0x20 000005a7: DUP5 000005a8: PUSH1 0x1f 000005aa: ADD 000005ab: DIV 000005ac: PUSH1 0x0f 000005ae: MUL 000005af: PUSH1 0x03 000005b1: ADD 000005b2: CALL 000005b3: POP 000005b4: SWAP1 000005b5: POP 000005b6: SWAP1 000005b7: DUP2 000005b8: ADD 000005b9: SWAP1 000005ba: PUSH1 0x1f 000005bc: AND 000005bd: DUP1 000005be: ISZERO 000005bf: PUSH2 0x05dc 000005c2: JUMPI 000005c3: DUP1 000005c4: DUP3 000005c5: SUB 000005c6: DUP1 000005c7: MLOAD 000005c8: PUSH1 0x01 000005ca: DUP4 000005cb: PUSH1 0x20 000005cd: SUB 000005ce: PUSH2 0x0100 000005d1: EXP 000005d2: SUB 000005d3: NOT 000005d4: AND 000005d5: DUP2 000005d6: MSTORE 000005d7: PUSH1 0x20 000005d9: ADD 000005da: SWAP2 000005db: POP 000005dc: JUMPDEST 000005dd: POP 000005de: SWAP3 000005df: POP 000005e0: POP 000005e1: POP 000005e2: PUSH1 0x40 000005e4: MLOAD 000005e5: DUP1 000005e6: SWAP2 000005e7: SUB 000005e8: SWAP1 000005e9: RETURN 000005ea: JUMPDEST 000005eb: PUSH1 0x40 000005ed: DUP1 000005ee: MLOAD 000005ef: SWAP2 000005f0: DUP3 000005f1: MSTORE 000005f2: MLOAD 000005f3: SWAP1 000005f4: DUP2 000005f5: SWAP1 000005f6: SUB 000005f7: PUSH1 0x20 000005f9: ADD 000005fa: SWAP1 000005fb: RETURN 000005fc: JUMPDEST 000005fd: PUSH1 0x40 000005ff: DUP1 00000600: MLOAD 00000601: PUSH4 0xffffffff 00000606: SWAP3 00000607: SWAP1 00000608: SWAP3 00000609: AND 0000060a: DUP3 0000060b: MSTORE 0000060c: MLOAD 0000060d: SWAP1 0000060e: DUP2 0000060f: SWAP1 00000610: SUB 00000611: PUSH1 0x20 00000613: ADD 00000614: SWAP1 00000615: RETURN 00000616: JUMPDEST 00000617: PUSH1 0x40 00000619: DUP1 0000061a: MLOAD 0000061b: PUSH1 0xff 0000061d: SWAP1 0000061e: SWAP3 0000061f: AND 00000620: DUP3 00000621: MSTORE 00000622: MLOAD 00000623: SWAP1 00000624: DUP2 00000625: SWAP1 00000626: SUB 00000627: PUSH1 0x20 00000629: ADD 0000062a: SWAP1 0000062b: RETURN 0000062c: JUMPDEST 0000062d: PUSH1 0x40 0000062f: DUP1 00000630: MLOAD 00000631: PUSH1 0x01 00000633: PUSH1 0xa0 00000635: PUSH1 0x02 00000637: EXP 00000638: SUB 00000639: SWAP3 0000063a: SWAP1 0000063b: SWAP3 0000063c: AND 0000063d: DUP3 0000063e: MSTORE 0000063f: MLOAD 00000640: SWAP1 00000641: DUP2 00000642: SWAP1 00000643: SUB 00000644: PUSH1 0x20 00000646: ADD 00000647: SWAP1 00000648: RETURN 00000649: JUMPDEST 0000064a: POP 0000064b: SWAP4 0000064c: SWAP3 0000064d: POP 0000064e: POP 0000064f: POP 00000650: JUMP 00000651: JUMPDEST 00000652: PUSH1 0x01 00000654: PUSH1 0xa0 00000656: PUSH1 0x02 00000658: EXP 00000659: SUB 0000065a: DUP3 0000065b: AND 0000065c: PUSH1 0x00 0000065e: SWAP1 0000065f: DUP2 00000660: MSTORE 00000661: PUSH1 0x09 00000663: PUSH1 0x20 00000665: MSTORE 00000666: PUSH1 0x40 00000668: SWAP1 00000669: KECCAK256 0000066a: SLOAD 0000066b: DUP2 0000066c: DUP2 0000066d: ADD 0000066e: LT 0000066f: ISZERO 00000670: PUSH2 0x0678 00000673: JUMPI 00000674: PUSH2 0x0002 00000677: JUMP 00000678: JUMPDEST 00000679: CALLER 0000067a: PUSH1 0x01 0000067c: PUSH1 0xa0 0000067e: PUSH1 0x02 00000680: EXP 00000681: SUB 00000682: SWAP1 00000683: DUP2 00000684: AND 00000685: PUSH1 0x00 00000687: DUP2 00000688: DUP2 00000689: MSTORE 0000068a: PUSH1 0x09 0000068c: PUSH1 0x20 0000068e: SWAP1 0000068f: DUP2 00000690: MSTORE 00000691: PUSH1 0x40 00000693: DUP1 00000694: DUP4 00000695: KECCAK256 00000696: DUP1 00000697: SLOAD 00000698: DUP8 00000699: SWAP1 0000069a: SUB 0000069b: SWAP1 0000069c: SSTORE 0000069d: SWAP4 0000069e: DUP7 0000069f: AND 000006a0: DUP1 000006a1: DUP4 000006a2: MSTORE 000006a3: SWAP2 000006a4: DUP5 000006a5: SWAP1 000006a6: KECCAK256 000006a7: DUP1 000006a8: SLOAD 000006a9: DUP7 000006aa: ADD 000006ab: SWAP1 000006ac: SSTORE 000006ad: DUP4 000006ae: MLOAD 000006af: DUP6 000006b0: DUP2 000006b1: MSTORE 000006b2: SWAP4 000006b3: MLOAD 000006b4: SWAP2 000006b5: SWAP4 000006b6: PUSH1 0x00 000006b8: DUP1 000006b9: MLOAD 000006ba: PUSH1 0x20 000006bc: PUSH2 0x0a0e 000006bf: DUP4 000006c0: CODECOPY 000006c1: DUP2 000006c2: MLOAD 000006c3: SWAP2 000006c4: MSTORE 000006c5: SWAP3 000006c6: SWAP1 000006c7: DUP2 000006c8: SWAP1 000006c9: SUB 000006ca: SWAP1 000006cb: SWAP2 000006cc: ADD 000006cd: SWAP1 000006ce: LOG3 000006cf: POP 000006d0: POP 000006d1: JUMP 000006d2: JUMPDEST 000006d3: PUSH1 0x01 000006d5: PUSH1 0xa0 000006d7: PUSH1 0x02 000006d9: EXP 000006da: SUB 000006db: DUP4 000006dc: AND 000006dd: PUSH1 0x00 000006df: SWAP1 000006e0: DUP2 000006e1: MSTORE 000006e2: PUSH1 0x09 000006e4: PUSH1 0x20 000006e6: MSTORE 000006e7: PUSH1 0x40 000006e9: SWAP1 000006ea: KECCAK256 000006eb: SLOAD 000006ec: DUP1 000006ed: DUP4 000006ee: ADD 000006ef: LT 000006f0: ISZERO 000006f1: PUSH2 0x06f9 000006f4: JUMPI 000006f5: PUSH2 0x0002 000006f8: JUMP 000006f9: JUMPDEST 000006fa: PUSH1 0x01 000006fc: PUSH1 0xa0 000006fe: PUSH1 0x02 00000700: EXP 00000701: SUB 00000702: DUP5 00000703: DUP2 00000704: AND 00000705: PUSH1 0x00 00000707: DUP2 00000708: DUP2 00000709: MSTORE 0000070a: PUSH1 0x0a 0000070c: PUSH1 0x20 0000070e: SWAP1 0000070f: DUP2 00000710: MSTORE 00000711: PUSH1 0x40 00000713: DUP1 00000714: DUP4 00000715: KECCAK256 00000716: CALLER 00000717: SWAP1 00000718: SWAP6 00000719: AND 0000071a: DUP1 0000071b: DUP5 0000071c: MSTORE 0000071d: SWAP5 0000071e: DUP3 0000071f: MSTORE 00000720: DUP1 00000721: DUP4 00000722: KECCAK256 00000723: SLOAD 00000724: SWAP4 00000725: DUP4 00000726: MSTORE 00000727: PUSH1 0x0b 00000729: DUP3 0000072a: MSTORE 0000072b: DUP1 0000072c: DUP4 0000072d: KECCAK256 0000072e: SWAP5 0000072f: DUP4 00000730: MSTORE 00000731: SWAP4 00000732: SWAP1 00000733: MSTORE 00000734: SWAP2 00000735: SWAP1 00000736: SWAP2 00000737: KECCAK256 00000738: SLOAD 00000739: DUP4 0000073a: ADD 0000073b: GT 0000073c: ISZERO 0000073d: PUSH2 0x0745 00000740: JUMPI 00000741: PUSH2 0x0002 00000744: JUMP 00000745: JUMPDEST 00000746: PUSH1 0x01 00000748: PUSH1 0xa0 0000074a: PUSH1 0x02 0000074c: EXP 0000074d: SUB 0000074e: DUP5 0000074f: DUP2 00000750: AND 00000751: PUSH1 0x00 00000753: DUP2 00000754: DUP2 00000755: MSTORE 00000756: PUSH1 0x09 00000758: PUSH1 0x20 0000075a: SWAP1 0000075b: DUP2 0000075c: MSTORE 0000075d: PUSH1 0x40 0000075f: DUP1 00000760: DUP4 00000761: KECCAK256 00000762: DUP1 00000763: SLOAD 00000764: DUP9 00000765: SWAP1 00000766: SUB 00000767: SWAP1 00000768: SSTORE 00000769: DUP8 0000076a: DUP6 0000076b: AND 0000076c: DUP1 0000076d: DUP5 0000076e: MSTORE 0000076f: DUP2 00000770: DUP5 00000771: KECCAK256 00000772: DUP1 00000773: SLOAD 00000774: DUP10 00000775: ADD 00000776: SWAP1 00000777: SSTORE 00000778: DUP5 00000779: DUP5 0000077a: MSTORE 0000077b: PUSH1 0x0b 0000077d: DUP4 0000077e: MSTORE 0000077f: DUP2 00000780: DUP5 00000781: KECCAK256 00000782: CALLER 00000783: SWAP1 00000784: SWAP7 00000785: AND 00000786: DUP5 00000787: MSTORE 00000788: SWAP5 00000789: DUP3 0000078a: MSTORE 0000078b: SWAP2 0000078c: DUP3 0000078d: SWAP1 0000078e: KECCAK256 0000078f: DUP1 00000790: SLOAD 00000791: DUP8 00000792: ADD 00000793: SWAP1 00000794: SSTORE 00000795: DUP2 00000796: MLOAD 00000797: DUP7 00000798: DUP2 00000799: MSTORE 0000079a: SWAP2 0000079b: MLOAD 0000079c: PUSH1 0x00 0000079e: DUP1 0000079f: MLOAD 000007a0: PUSH1 0x20 000007a2: PUSH2 0x0a0e 000007a5: DUP4 000007a6: CODECOPY 000007a7: DUP2 000007a8: MLOAD 000007a9: SWAP2 000007aa: MSTORE 000007ab: SWAP3 000007ac: DUP2 000007ad: SWAP1 000007ae: SUB 000007af: SWAP1 000007b0: SWAP2 000007b1: ADD 000007b2: SWAP1 000007b3: LOG3 000007b4: POP 000007b5: PUSH1 0x01 000007b7: SWAP4 000007b8: SWAP3 000007b9: POP 000007ba: POP 000007bb: POP 000007bc: JUMP 000007bd: JUMPDEST 000007be: DUP3 000007bf: ADD 000007c0: SWAP2 000007c1: SWAP1 000007c2: PUSH1 0x00 000007c4: MSTORE 000007c5: PUSH1 0x20 000007c7: PUSH1 0x00 000007c9: KECCAK256 000007ca: SWAP1 000007cb: JUMPDEST 000007cc: DUP2 000007cd: SLOAD 000007ce: DUP2 000007cf: MSTORE 000007d0: SWAP1 000007d1: PUSH1 0x01 000007d3: ADD 000007d4: SWAP1 000007d5: PUSH1 0x20 000007d7: ADD 000007d8: DUP1 000007d9: DUP4 000007da: GT 000007db: PUSH2 0x07cb 000007de: JUMPI 000007df: DUP3 000007e0: SWAP1 000007e1: SUB 000007e2: PUSH1 0x1f 000007e4: AND 000007e5: DUP3 000007e6: ADD 000007e7: SWAP2 000007e8: JUMPDEST 000007e9: POP 000007ea: POP 000007eb: POP 000007ec: POP 000007ed: POP 000007ee: DUP2 000007ef: JUMP 000007f0: JUMPDEST 000007f1: PUSH1 0x06 000007f3: SSTORE 000007f4: JUMP 000007f5: JUMPDEST 000007f6: PUSH1 0x05 000007f8: DUP1 000007f9: SLOAD 000007fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000080f: NOT 00000810: AND 00000811: DUP3 00000812: OR 00000813: SWAP1 00000814: SSTORE 00000815: POP 00000816: JUMP 00000817: JUMPDEST 00000818: PUSH2 0x0200 0000081b: DUP2 0000081c: PUSH4 0xffffffff 00000821: AND 00000822: LT 00000823: ISZERO 00000824: PUSH2 0x082c 00000827: JUMPI 00000828: PUSH2 0x0002 0000082b: JUMP 0000082c: JUMPDEST 0000082d: PUSH1 0x07 0000082f: DUP1 00000830: SLOAD 00000831: PUSH4 0xffffffff 00000836: NOT 00000837: AND 00000838: DUP3 00000839: OR 0000083a: SWAP1 0000083b: SSTORE 0000083c: POP 0000083d: JUMP 0000083e: JUMPDEST 0000083f: PUSH1 0x04 00000841: SLOAD 00000842: ADDRESS 00000843: PUSH1 0x01 00000845: PUSH1 0xa0 00000847: PUSH1 0x02 00000849: EXP 0000084a: SUB 0000084b: AND 0000084c: BALANCE 0000084d: PUSH5 0x174876e800 00000853: MUL 00000854: DIV 00000855: PUSH1 0x08 00000857: SSTORE 00000858: PUSH1 0x40 0000085a: DUP1 0000085b: MLOAD 0000085c: NUMBER 0000085d: DUP2 0000085e: MSTORE 0000085f: TIMESTAMP 00000860: PUSH1 0x20 00000862: DUP3 00000863: ADD 00000864: MSTORE 00000865: DUP1 00000866: DUP3 00000867: ADD 00000868: DUP7 00000869: SWAP1 0000086a: MSTORE 0000086b: SWAP1 0000086c: MLOAD 0000086d: SWAP1 0000086e: DUP2 0000086f: SWAP1 00000870: SUB 00000871: PUSH1 0x60 00000873: ADD 00000874: SWAP1 00000875: KECCAK256 00000876: PUSH2 0x0880 00000879: SWAP1 0000087a: PUSH1 0x0a 0000087c: PUSH2 0x01e7 0000087f: JUMP 00000880: JUMPDEST 00000881: PUSH1 0x07 00000883: SLOAD 00000884: SWAP1 00000885: SWAP2 00000886: POP 00000887: PUSH4 0xffffffff 0000088c: AND 0000088d: DUP2 0000088e: LT 0000088f: PUSH2 0x08a5 00000892: JUMPI 00000893: PUSH1 0x00 00000895: SWAP3 00000896: POP 00000897: PUSH2 0x03e7 0000089a: PUSH5 0x174876e800 000008a0: DUP6 000008a1: DIV 000008a2: DIV 000008a3: SWAP2 000008a4: POP 000008a5: JUMPDEST 000008a6: PUSH1 0x07 000008a8: SLOAD 000008a9: PUSH4 0xffffffff 000008ae: AND 000008af: DUP2 000008b0: LT 000008b1: ISZERO 000008b2: PUSH2 0x08c3 000008b5: JUMPI 000008b6: PUSH5 0x174876e800 000008bc: PUSH1 0x02 000008be: DUP6 000008bf: MUL 000008c0: DIV 000008c1: SWAP3 000008c2: POP 000008c3: JUMPDEST 000008c4: CALLER 000008c5: PUSH1 0x01 000008c7: PUSH1 0xa0 000008c9: PUSH1 0x02 000008cb: EXP 000008cc: SUB 000008cd: SWAP1 000008ce: DUP2 000008cf: AND 000008d0: PUSH1 0x00 000008d2: DUP2 000008d3: DUP2 000008d4: MSTORE 000008d5: PUSH1 0x09 000008d7: PUSH1 0x20 000008d9: SWAP1 000008da: DUP2 000008db: MSTORE 000008dc: PUSH1 0x40 000008de: DUP1 000008df: DUP4 000008e0: KECCAK256 000008e1: DUP1 000008e2: SLOAD 000008e3: DUP10 000008e4: ADD 000008e5: SWAP1 000008e6: SSTORE 000008e7: PUSH1 0x05 000008e9: SLOAD 000008ea: DUP6 000008eb: AND 000008ec: DUP4 000008ed: MSTORE 000008ee: DUP1 000008ef: DUP4 000008f0: KECCAK256 000008f1: DUP1 000008f2: SLOAD 000008f3: DUP9 000008f4: ADD 000008f5: SWAP1 000008f6: SSTORE 000008f7: ADDRESS 000008f8: SWAP1 000008f9: SWAP5 000008fa: AND 000008fb: DUP1 000008fc: DUP4 000008fd: MSTORE 000008fe: SWAP2 000008ff: DUP5 00000900: SWAP1 00000901: KECCAK256 00000902: DUP1 00000903: SLOAD 00000904: DUP8 00000905: DUP10 00000906: ADD 00000907: SWAP1 00000908: SUB 00000909: SWAP1 0000090a: SSTORE 0000090b: DUP4 0000090c: MLOAD 0000090d: DUP8 0000090e: DUP2 0000090f: MSTORE 00000910: SWAP4 00000911: MLOAD 00000912: SWAP3 00000913: SWAP4 00000914: SWAP2 00000915: SWAP3 00000916: PUSH1 0x00 00000918: DUP1 00000919: MLOAD 0000091a: PUSH1 0x20 0000091c: PUSH2 0x0a0e 0000091f: DUP4 00000920: CODECOPY 00000921: DUP2 00000922: MLOAD 00000923: SWAP2 00000924: MSTORE 00000925: SWAP3 00000926: DUP2 00000927: SWAP1 00000928: SUB 00000929: SWAP1 0000092a: SWAP2 0000092b: ADD 0000092c: SWAP1 0000092d: LOG3 0000092e: PUSH1 0x05 00000930: SLOAD 00000931: PUSH1 0x40 00000933: DUP1 00000934: MLOAD 00000935: DUP5 00000936: DUP2 00000937: MSTORE 00000938: SWAP1 00000939: MLOAD 0000093a: PUSH1 0x01 0000093c: PUSH1 0xa0 0000093e: PUSH1 0x02 00000940: EXP 00000941: SUB 00000942: SWAP3 00000943: DUP4 00000944: AND 00000945: SWAP3 00000946: ADDRESS 00000947: AND 00000948: SWAP2 00000949: PUSH1 0x00 0000094b: DUP1 0000094c: MLOAD 0000094d: PUSH1 0x20 0000094f: PUSH2 0x0a0e 00000952: DUP4 00000953: CODECOPY 00000954: DUP2 00000955: MLOAD 00000956: SWAP2 00000957: MSTORE 00000958: SWAP2 00000959: SWAP1 0000095a: DUP2 0000095b: SWAP1 0000095c: SUB 0000095d: PUSH1 0x20 0000095f: ADD 00000960: SWAP1 00000961: LOG3 00000962: POP 00000963: POP 00000964: POP 00000965: SWAP1 00000966: JUMP 00000967: JUMPDEST 00000968: POP 00000969: ADDRESS 0000096a: PUSH1 0x01 0000096c: PUSH1 0xa0 0000096e: PUSH1 0x02 00000970: EXP 00000971: SUB 00000972: SWAP1 00000973: DUP2 00000974: AND 00000975: PUSH1 0x00 00000977: SWAP1 00000978: DUP2 00000979: MSTORE 0000097a: PUSH1 0x09 0000097c: PUSH1 0x20 0000097e: MSTORE 0000097f: PUSH1 0x40 00000981: DUP1 00000982: DUP3 00000983: KECCAK256 00000984: DUP1 00000985: SLOAD 00000986: DUP6 00000987: ADD 00000988: SWAP1 00000989: SSTORE 0000098a: CALLER 0000098b: SWAP1 0000098c: SWAP3 0000098d: AND 0000098e: DUP1 0000098f: DUP3 00000990: MSTORE 00000991: DUP3 00000992: DUP3 00000993: KECCAK256 00000994: DUP1 00000995: SLOAD 00000996: DUP6 00000997: SWAP1 00000998: SUB 00000999: SWAP1 0000099a: SSTORE 0000099b: SWAP2 0000099c: MLOAD 0000099d: PUSH1 0x08 0000099f: SLOAD 000009a0: PUSH5 0x174876e800 000009a6: DUP6 000009a7: DIV 000009a8: MUL 000009a9: SWAP3 000009aa: SWAP2 000009ab: SWAP1 000009ac: DUP4 000009ad: SWAP1 000009ae: DUP3 000009af: DUP2 000009b0: DUP2 000009b1: DUP2 000009b2: DUP6 000009b3: DUP9 000009b4: DUP4 000009b5: CALL 000009b6: POP 000009b7: POP 000009b8: PUSH1 0x40 000009ba: DUP1 000009bb: MLOAD 000009bc: DUP7 000009bd: DUP2 000009be: MSTORE 000009bf: SWAP1 000009c0: MLOAD 000009c1: ADDRESS 000009c2: PUSH1 0x01 000009c4: PUSH1 0xa0 000009c6: PUSH1 0x02 000009c8: EXP 000009c9: SUB 000009ca: AND 000009cb: SWAP5 000009cc: SWAP4 000009cd: POP 000009ce: PUSH1 0x00 000009d0: DUP1 000009d1: MLOAD 000009d2: PUSH1 0x20 000009d4: PUSH2 0x0a0e 000009d7: DUP4 000009d8: CODECOPY 000009d9: DUP2 000009da: MLOAD 000009db: SWAP2 000009dc: MSTORE 000009dd: SWAP3 000009de: POP 000009df: SWAP1 000009e0: DUP2 000009e1: SWAP1 000009e2: SUB 000009e3: PUSH1 0x20 000009e5: ADD 000009e6: SWAP1 000009e7: LOG3 000009e8: SWAP2 000009e9: SWAP1 000009ea: POP 000009eb: JUMP 000009ec: JUMPDEST 000009ed: PUSH1 0x00 000009ef: DUP1 000009f0: SLOAD 000009f1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a06: NOT 00000a07: AND 00000a08: DUP3 00000a09: OR 00000a0a: SWAP1 00000a0b: SSTORE 00000a0c: POP 00000a0d: JUMP 00000a0e: UNKNOWN(0xDD) 00000a0f: CALLCODE 00000a10: MSTORE 00000a11: UNKNOWN(0xAD) 00000a12: SHL 00000a13: UNKNOWN(0xE2) 00000a14: UNKNOWN(0xC8) 00000a15: SWAP12 00000a16: PUSH10 0xc2b068fc378daa952ba7 00000a21: CALL 00000a22: PUSH4 0xc4a11628 00000a27: CREATE2 00000a28: GAS 00000a29: UNKNOWN(0x4D) 00000a2a: CREATE2 00000a2b: UNKNOWN(0x23) 00000a2c: UNKNOWN(0xB3) 00000a2d: UNKNOWN(0xEF)
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | yes | yes |
viewtrace_id: 0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d
call_targets:
0x0000000000000000000000000000000000000004, 0x3456f6ea53a44d9bdf0d3da99254860531cb0af5
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
],
"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": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1fe9eabc",
"selector": "0x1fe9eabc",
"calldata_variants": [
"0x1fe9eabc",
"0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x233de126",
"selector": "0x233de126",
"calldata_variants": [
"0x233de126",
"0x233de1260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x41fa4876",
"selector": "0x41fa4876",
"calldata_variants": [
"0x41fa4876",
"0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x70a08231",
"selector": "0x70a08231",
"calldata_variants": [
"0x70a08231",
"0x70a082310000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1126,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1194,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1458,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 6,
"guards_detected": [],
"untrusted_call_count": 6
}
|
| high | other | detector | ETH value transfer possible | 55 | yes | yes |
viewtrace_id: 0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d
call_targets:
0x0000000000000000000000000000000000000004, 0x3456f6ea53a44d9bdf0d3da99254860531cb0af5
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
],
"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": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1fe9eabc",
"selector": "0x1fe9eabc",
"calldata_variants": [
"0x1fe9eabc",
"0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x233de126",
"selector": "0x233de126",
"calldata_variants": [
"0x233de126",
"0x233de1260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x41fa4876",
"selector": "0x41fa4876",
"calldata_variants": [
"0x41fa4876",
"0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x70a08231",
"selector": "0x70a08231",
"calldata_variants": [
"0x70a08231",
"0x70a082310000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1126,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1194,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1458,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 6,
"guards_detected": []
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x42c3eea034cb5a22915e2bb9a55f1b44d524b5a84a6c13a7eb3108b245c52492
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x42c3eea034cb5a22915e2bb9a55f1b44d524b5a84a6c13a7eb3108b245c52492",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x18160ddd",
"selector": "0x18160ddd",
"calldata_variants": [
"0x18160ddd",
"0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1fe9eabc",
"selector": "0x1fe9eabc",
"calldata_variants": [
"0x1fe9eabc",
"0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x233de126",
"selector": "0x233de126",
"calldata_variants": [
"0x233de126",
"0x233de1260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x41fa4876",
"selector": "0x41fa4876",
"calldata_variants": [
"0x41fa4876",
"0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x70a08231",
"selector": "0x70a08231",
"calldata_variants": [
"0x70a08231",
"0x70a082310000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| medium | other | codex | Best-effort inferred redemption path ignores ETH payout failure | 75 | no | — |
viewevidence_json{
"evidence": "In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.",
"locations": [
"selector:0xe4849b32",
"pc:0x967",
"pc:0x9b5"
],
"recommendation": "Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.",
"exploit_scenario": "Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept."
}
|
| low | other | codex | Financial logic appears to use manipulable block data as randomness | 65 | no | — |
viewevidence_json{
"evidence": "The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.",
"locations": [
"selector:0xa6f2ae3a",
"selector:0x41fa4876",
"pc:0x1e7",
"pc:0x85c",
"pc:0x8a8"
],
"recommendation": "Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.",
"exploit_scenario": "The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable."
}
|