019b3836-2901-713f-8003-3b6a8dabb217
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 |
|---|---|---|---|---|
| 1349 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 1350 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 44896 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 44897 | capability.graph | complete | 1 / 3 | 1 week ago |
| 44898 | detector.run | complete | 1 / 3 | 1 week ago |
| 44899 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113234 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode-only review found unauthenticated ETH-spending external call paths, public reconfiguration of the oracle/provider target, and an owner-gated SELFDESTRUCT. Selector names are inferred only from raw selectors, so function semantics are best-effort.","findings":[{"severity":"high","category":"access_control","title":"Public entrypoints can trigger non-zero-value external calls from contract balance","exploit_scenario":"Selectors `0xa2e62045` and `0xd7c26adb` are externally callable without any detected guard and drive multiple `CALL` sites. An attacker can repeatedly invoke these paths to force the contract to pay external fees or otherwise transfer ETH out of the contract. Exact recipient/value semantics are uncertain from bytecode alone, but the artifact validator confirmed varying call targets and possible non-zero ETH transfer.","recommendation":"Restrict fee-spending/query-triggering functions to an authorized role, or require the caller to fund the operation explicitly via `msg.value`. Add rate limits/accounting so repeated public calls cannot drain contract ETH.","evidence":"`auth.guards` is empty. The dispatcher sends `0xa2e62045` to `pc 0x01d2` and `0xd7c26adb` to `pc 0x0539`; these paths reach `CALL` instructions at `pc 0x02ce`, `0x03c9`, `0x04c6`, `0x0587`, and `0x0601`. `detector_findings` validated both `Untrusted CALL target/value reachable` and `ETH value transfer possible`, with observed targets including `0x1d11e5eae3112dbd44f99266872ff1d07c77dce8`, `0x6f28b146804dba2d6f944c03528a8fdbc673df2c`, and the contract itself.","locations":["selector:0xa2e62045","selector:0xd7c26adb","pc:0x02ce","pc:0x03c9","pc:0x04c6","pc:0x0587","pc:0x0601"]},{"severity":"medium","category":"oracle","title":"Oracle/provider selection is publicly reconfigurable","exploit_scenario":"Any caller can invoke selector `0x6b3fdc5a` and switch slot `0x0` among multiple hardcoded external addresses. Because slot `0x0` is later used as the target for outbound calls, an attacker can grief the system by forcing it onto an unexpected/deprecated provider or resolver, causing failed updates or dependence on a weaker endpoint.","recommendation":"Make the provider/resolver immutable after deployment, or restrict reconfiguration to a trusted admin with clear events and preferably a timelock. If multiple providers are required, validate liveness/integrity before switching.","evidence":"At `selector 0x6b3fdc5a` (`pc 0x0190`), the code writes hardcoded addresses into storage slot `0x0` via `SSTORE` at `pc 0x01c8`, `0x06bf`, and `0x06f6` for argument values `0x01`, `0x02`, and `0xa1`. Slot `0x0` is then read immediately before outbound calls at `pc 0x00ac/0x00e5`, `0x028f/0x02ce`, and `0x0545/0x0587`. No access-control check appears on this setter path.","locations":["selector:0x6b3fdc5a","pc:0x01c8","pc:0x06bf","pc:0x06f6","pc:0x00e5","pc:0x02ce","pc:0x0587"]},{"severity":"low","category":"other","title":"Privileged kill-switch can selfdestruct the contract and sweep ETH","exploit_scenario":"Whoever controls the address stored in slot `0x2` can destroy the contract and send its remaining ETH balance to themselves. If that key is compromised or governance is weaker than expected, the contract can be permanently disabled and funds removed.","recommendation":"Remove `SELFDESTRUCT` if the contract is meant to be long-lived. If a break-glass path is required, protect it with stronger governance such as a timelock and multisig, and document the operational assumptions.","evidence":"Selector `0x41c0e1b5` jumps to `pc 0x0169`, loads slot `0x2`, compares it to `CALLER`, and executes `SELFDESTRUCT` at `pc 0x018f` on success. The bundle heuristics also flag `selfdestruct_present`. With runtime bytecode only, the provenance and rotation model for slot `0x2` cannot be verified.","locations":["selector:0x41c0e1b5","pc:0x016f","pc:0x018f"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-8mzp5rde
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5b6e-6056-7a43-b4fe-0d9ac97589b4
--------
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 in /tmp/codex-8mzp5rde
succeeded in 0ms:
/tmp/codex-8mzp5rde
exec
/bin/bash -lc "rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md'" in /tmp/codex-8mzp5rde
succeeded in 0ms:
BYTECODE_BUNDLE.json
exec
/bin/bash -lc 'wc -c BYTECODE_BUNDLE.json' in /tmp/codex-8mzp5rde
succeeded in 0ms:
108184 BYTECODE_BUNDLE.json
exec
/bin/bash -lc "sed -n '1,220p' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
{
"analysis_artifact": {
"address": "0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d",
"artifact_hash": "0x3d0e47cff153ba5faf68b7ca2043c90b60e2c39a1986f89fa2b7d37066b40f46",
"artifact_json": {
"auth": {
"guards": []
},
"basic_blocks": [
{
"end_pc": 10,
"hash": "0xd3735ca9c20e935b30a407d576a537251104b99507f47da2b56ac0d6547da5e0",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"CALLDATASIZE",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 0
},
{
"end_pc": 30,
"hash": "0xdf87a9326f62437c94bfcc1ea52a498fa27bb5974cc93fd67fbc52c4cc2ea732",
"opcodes": [
"PUSH1",
"PUSH1",
"EXP",
"PUSH1",
"CALLDATALOAD",
"DIV",
"PUSH4",
"OP_81",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 11
},
{
"end_pc": 41,
"hash": "0x53defbfabb5a8f0b33a26413e150d5d9dc5de495196247a74c7b3757f163cb3f",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 31
},
{
"end_pc": 52,
"hash": "0xc542a69fd0ea6fa7970517def1da09b0927d8f086cc7fc95b6d8fe2285ebca84",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 42
},
{
"end_pc": 63,
"hash": "0xe1f1ee774754b4d3331ef6797fc7b260a5f9cae9cb76b132f3a8e6649ef82884",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 53
},
{
"end_pc": 74,
"hash": "0x7189438a2df56e017656cf8f73b60b01369c53f6a0a8df82ae0b8631888c9516",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 64
},
{
"end_pc": 85,
"hash": "0x3ef7813465216732058feb067606e26ef9d68ec955485139ea16a2b8d1689f39",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 75
},
{
"end_pc": 87,
"hash": "0x5f16f1452b945fe2013a5da2a330eeba5ff0e75bc87856dd3fe9b41c091b9e59",
"opcodes": [
"JUMPDEST",
"STOP"
],
"start_pc": 86
},
{
"end_pc": 234,
"hash": "0x09213e301cd492b83d573cabdc60c7f61d09de500a3a06e8691c7f63eb2d6ab9",
"opcodes": [
"JUMPDEST",
"PUSH1",
"OP_80",
"MLOAD",
"PUSH1",
"PUSH1",
"OP_80",
"CALLDATALOAD",
"PUSH1",
"OP_81",
"OP_81",
"ADD",
"CALLDATALOAD",
"PUSH1",
"OP_81",
"ADD",
"OP_85",
"OP_90",
"DIV",
"OP_85",
"MUL",
"OP_86",
"ADD",
"OP_85",
"ADD",
"OP_90",
"OP_96",
"MSTORE",
"OP_85",
"OP_85",
"MSTORE",
"PUSH2",
"OP_95",
"OP_81",
"CALLDATALOAD",
"OP_95",
"OP_91",
"OP_94",
"PUSH1",
"OP_94",
"OP_92",
"OP_93",
"OP_90",
"OP_92",
"ADD",
"OP_91",
"OP_81",
"OP_90",
"OP_84",
"ADD",
"OP_83",
"OP_82",
"OP_80",
"OP_82",
"OP_84",
"CALLDATACOPY",
"POP",
"OP_94",
"OP_96",
"POP",
"POP",
"POP",
"POP",
"POP",
"POP",
"POP",
"PUSH2",
"PUSH1",
"OP_80",
"MLOAD",
"PUSH1",
"OP_80",
"SLOAD",
"PUSH1",
"PUSH1",
"EXP",
"PUSH4",
"MUL",
"OP_83",
"MSTORE",
"OP_92",
"MLOAD",
"OP_90",
"OP_92",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"AND",
"OP_91",
"PUSH4",
"OP_91",
"PUSH1",
"OP_82",
"OP_81",
"ADD",
"OP_92",
"PUSH1",
"OP_92",
"OP_91",
"OP_90",
"OP_82",
"OP_90",
"SUB",
"ADD",
exec
/bin/bash -lc "jq 'keys' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
[
"analysis_artifact",
"analysis_run",
"artifact",
"capability_graph",
"detector_findings",
"heuristics_summary"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
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 '.analysis_artifact.artifact_json.function_entries' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
[
{
"entry_pc": null,
"selector": "0x27dc297e"
},
{
"entry_pc": 1799347290,
"selector": "0x41c0e1b5"
},
{
"entry_pc": 2732990533,
"selector": "0x6b3fdc5a"
},
{
"entry_pc": 3077981301,
"selector": "0xa2e62045"
},
{
"entry_pc": 3619842779,
"selector": "0xb7764475"
},
{
"entry_pc": null,
"selector": "0xd7c26adb"
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
[
"0x27dc297e",
"0x41c0e1b5",
"0x6b3fdc5a",
"0xa2e62045",
"0xb7764475",
"0xd7c26adb"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
[
{
"opcode": "CALL",
"pc": 229,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 344,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 718,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 904,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 969,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1066,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1155,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1222,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1415,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "constant"
},
{
"opcode": "CALL",
"pc": 1537,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1621,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
{
"keccak_count": 2,
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 172,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 246,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 367,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 655,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 771,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 807,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1251,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 1323,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 1349,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1432,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1693,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1748,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 10
}
exec
/bin/bash -lc "jq '.detector_findings' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
[
{
"confidence": 60,
"evidence_json": {
"call_count": 11,
"examples": [
{
"opcode": "CALL",
"pc": 229,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 344,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 718,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [],
"untrusted_call_count": 11
},
"normalized_json": {
"sink": "CALL"
},
"severity": "high",
"title": "Untrusted CALL target/value reachable",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x1d11e5eae3112dbd44f99266872ff1d07c77dce8",
"0x6f28b146804dba2d6f944c03528a8fdbc673df2c",
"0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xe1c16600a66a4cc0ec0fe8e551e4a8e304bf72236cebebf676429afb7fe41bcc",
"trace_mode": "callTracer"
}
},
{
"confidence": 55,
"evidence_json": {
"eth_value_calls": 11,
"examples": [
{
"opcode": "CALL",
"pc": 229,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 344,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 718,
"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": [
"0x1d11e5eae3112dbd44f99266872ff1d07c77dce8",
"0x6f28b146804dba2d6f944c03528a8fdbc673df2c",
"0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xe1c16600a66a4cc0ec0fe8e551e4a8e304bf72236cebebf676429afb7fe41bcc",
"trace_mode": "callTracer"
}
},
{
"confidence": 65,
"evidence_json": {
"guards_detected": [],
"selfdestruct_count": 1
},
"normalized_json": {
"sink": "SELFDESTRUCT"
},
"severity": "high",
"title": "SELFDESTRUCT reachable",
"validated": false,
"validation_json": {
"attempts": 12,
"call_targets": null,
"classification": "no_sink",
"confirmed": false,
"errors": 0,
"matched_probe": null,
"sink": "SELFDESTRUCT",
"status": "unknown",
"target_varies": null,
"trace_id": "0x806a39ef2a7674c5d0247226d03fec30ca98b155833b8b0b160357bceaabc592",
"trace_mode": "structLogs"
}
}
]
exec
/bin/bash -lc "jq '.heuristics_summary' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
{
"create2_count": 0,
"delegatecall_count": 0,
"flags": [
"selfdestruct_present"
],
"selfdestruct_count": 1
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
[
{
"auth": {
"guards": []
},
"entry_pc": null,
"selector": "0x27dc297e",
"sinks": {
"call": 11,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 172,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 246,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 367,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 655,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 771,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 807,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1251,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 1323,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 1349,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1432,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1693,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1748,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 10
}
},
{
"auth": {
"guards": []
},
"entry_pc": 1799347290,
"selector": "0x41c0e1b5",
"sinks": {
"call": 11,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 172,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 246,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 367,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 655,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 771,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 807,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1251,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 1323,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 1349,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1432,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1693,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1748,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 10
}
},
{
"auth": {
"guards": []
},
"entry_pc": 2732990533,
"selector": "0x6b3fdc5a",
"sinks": {
"call": 11,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 172,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 246,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 367,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 655,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 771,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 807,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1251,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 1323,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 1349,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1432,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1693,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1748,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 10
}
},
{
"auth": {
"guards": []
},
"entry_pc": 3077981301,
"selector": "0xa2e62045",
"sinks": {
"call": 11,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 172,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 246,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 367,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 655,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 771,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 807,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1251,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 1323,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 1349,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1432,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1693,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1748,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 10
}
},
{
"auth": {
"guards": []
},
"entry_pc": 3619842779,
"selector": "0xb7764475",
"sinks": {
"call": 11,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 172,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 246,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 367,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 655,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 771,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 807,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1251,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 1323,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 1349,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1432,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1693,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1748,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 10
}
},
{
"auth": {
"guards": []
},
"entry_pc": null,
"selector": "0xd7c26adb",
"sinks": {
"call": 11,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 16,
"slots": [
{
"op": "SLOAD",
"pc": 172,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 246,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 367,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 655,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 771,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 807,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1251,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
},
{
"op": "SLOAD",
"pc": 1323,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 1349,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1432,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1693,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1748,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 10
}
}
]
exec
/bin/bash -lc "jq '.artifact' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
{
"codehash": "0x3ca4c006b81d9b9302a6d69942deb01995e8941f531ce8027e29828f14d7f199",
"compiler_json": {
"etherscan": {
"skipped": true
}
},
"implementation_address": null,
"is_proxy": false,
"runtime_bytecode": {
"full": "0x606060405236156100565760e060020a600035046327dc297e811461005857806341c0e1b5146101695780636b3fdc5a14610190578063a2e62045146101d2578063b7764475146104db578063d7c26adb14610539575b005b60408051602060248035600481810135601f81018590048502860185019096528585526100569581359591946044949293909201918190840183828082843750949650505050505050610736604080516000805460e060020a6338cc483102835292519092600160a060020a0316916338cc4831916004828101926020929190829003018187876161da5a03f11561000257505060408051805160018054600160a060020a031916909117908190557fc281d19e0000000000000000000000000000000000000000000000000000000082529151600160a060020a0392909216925063c281d19e916004828101926020929190829003018187876161da5a03f1156100025750506040515191505090565b610056600254600160a060020a039081163390911614156107fe5733600160a060020a0316ff5b61060d600435600060ff82166001141561068d578054600160a060020a031916731d11e5eae3112dbd44f99266872ff1d07c77dce81781555b5060015b919050565b6100565b604080518082018252600381527f55524c00000000000000000000000000000000000000000000000000000000006020828101919091528251608081018452604c81527f6a736f6e2868747470733a2f2f6170692e6b72616b656e2e636f6d2f302f7075818301527f626c69632f5469636b65723f706169723d455448584254292e726573756c742e818501527f58455448585842542e632e300000000000000000000000000000000000000000606082015283516000805460e060020a6338cc4831028352955161060a96603c96959293600160a060020a0391909116926338cc483192600483810193829003018187876161da5a03f1156100025750505060405180519060200150600160006101000a815481600160a060020a0302191690830217905550600160009054906101000a9004600160a060020a0316600160a060020a031663adf59f99600160009054906101000a9004600160a060020a0316600160a060020a031663524f3889866040518260e060020a02815260040180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156103b25780820380516001836020036101000a031916815260200191505b50925050506020604051808303816000876161da5a03f11561000257505050604051805190602001508686866040518560e060020a0281526004018084815260200180602001806020018381038352858181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104545780820380516001836020036101000a031916815260200191505b508381038252848181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156104ad5780820380516001836020036101000a031916815260200191505b509550505050505060206040518083038185886185025a03f115610002575050604051519695505050505050565b6040805160038054602060026001831615610100026000190190921691909104601f810182900482028401820190945283835261061f939083018282801561072e5780601f106107035761010080835404028352916020019161072e565b610056600435600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316040518160e060020a0281526004018090506020604051808303816000876161da5a03f11561000257505060408051805160018054600160a060020a031916909117908190557f688dcfd7000000000000000000000000000000000000000000000000000000008252600482018590529151600160a060020a0392909216925063688dcfd7916024828101926000929190829003018183876161da5a03f115610002575050505b50565b60408051918252519081900360200190f35b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561067f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60ff8216600214156106c45760008054600160a060020a031916730ae06d5934fd75d214951eb96633fbd7f9262a7c1790556101c9565b60ff821660a114156106fb5760008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf1790556101c9565b5060006101cd565b820191906000526020600020905b81548152906001019060200180831161071157829003601f168201915b505050505081565b600160a060020a031633600160a060020a031614151561075557610002565b8060036000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106107bc57805160ff19168380011785555b506107ec9291505b808211156107f657600081556001016107a8565b828001600101855582156107a0579182015b828111156107a05782518260005055916020019190600101906107ce565b50506107fa6101d6565b5090565b5050565b56",
"head": null,
"length": 4098,
"tail": null,
"truncated": false
},
"verified_source": false
}
exec
/bin/bash -lc "jq '.analysis_run' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
{
"address": "0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d",
"block_number": null,
"chain_id": 1,
"child_links": [],
"created_at": "2025-12-19T20:03:52.000000Z",
"id": "019b3836-2901-713f-8003-3b6a8dabb217",
"parent_links": [],
"status": "running",
"updated_at": "2026-04-04T19:52:31.000000Z"
}
exec
/bin/bash -lc "jq '.capability_graph' BYTECODE_BUNDLE.json" in /tmp/codex-8mzp5rde
succeeded in 0ms:
{
"address": "0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d",
"block_number": null,
"chain_id": 1,
"codehash": "0x3ca4c006b81d9b9302a6d69942deb01995e8941f531ce8027e29828f14d7f199",
"created_at": "2026-04-04T19:52:31.000000Z",
"graph_hash": "0xddcf453f81cc2065fa2246430dce559eb9dbc7a50aa241b9497bf9a02ce939f5",
"graph_json": {
"edges": [
{
"from": "bb:0",
"to": "bb:86",
"type": "control_flow"
},
{
"from": "bb:0",
"to": "bb:11",
"type": "control_flow_fallthrough"
},
{
"from": "bb:11",
"to": "bb:88",
"type": "control_flow"
},
{
"from": "bb:11",
"to": "bb:31",
"type": "control_flow_fallthrough"
},
{
"from": "bb:31",
"to": "bb:361",
"type": "control_flow"
},
{
"from": "bb:31",
"to": "bb:42",
"type": "control_flow_fallthrough"
},
{
"from": "bb:42",
"to": "bb:400",
"type": "control_flow"
},
{
"from": "bb:42",
"to": "bb:53",
"type": "control_flow_fallthrough"
},
{
"from": "bb:53",
"to": "bb:466",
"type": "control_flow"
},
{
"from": "bb:53",
"to": "bb:64",
"type": "control_flow_fallthrough"
},
{
"from": "bb:64",
"to": "bb:1243",
"type": "control_flow"
},
{
"from": "bb:64",
"to": "bb:75",
"type": "control_flow_fallthrough"
},
{
"from": "bb:75",
"to": "bb:1337",
"type": "control_flow"
},
{
"from": "bb:75",
"to": "bb:86",
"type": "control_flow_fallthrough"
},
{
"from": "bb:88",
"to": "bb:235",
"type": "control_flow_fallthrough"
},
{
"from": "bb:235",
"to": "bb:350",
"type": "control_flow_fallthrough"
},
{
"from": "bb:361",
"to": "bb:2046",
"type": "control_flow"
},
{
"from": "bb:361",
"to": "bb:389",
"type": "control_flow_fallthrough"
},
{
"from": "bb:400",
"to": "bb:1677",
"type": "control_flow"
},
{
"from": "bb:400",
"to": "bb:421",
"type": "control_flow_fallthrough"
},
{
"from": "bb:421",
"to": "bb:457",
"type": "control_flow_fallthrough"
},
{
"from": "bb:457",
"to": "bb:461",
"type": "control_flow_fallthrough"
},
{
"from": "bb:466",
"to": "bb:470",
"type": "control_flow_fallthrough"
},
{
"from": "bb:470",
"to": "bb:724",
"type": "control_flow_fallthrough"
},
{
"from": "bb:724",
"to": "bb:946",
"type": "control_flow"
},
{
"from": "bb:724",
"to": "bb:921",
"type": "control_flow_fallthrough"
},
{
"from": "bb:921",
"to": "bb:946",
"type": "control_flow_fallthrough"
},
{
"from": "bb:946",
"to": "bb:975",
"type": "control_flow_fallthrough"
},
{
"from": "bb:975",
"to": "bb:1108",
"type": "control_flow"
},
{
"from": "bb:975",
"to": "bb:1083",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1083",
"to": "bb:1108",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1108",
"to": "bb:1197",
"type": "control_flow"
},
{
"from": "bb:1108",
"to": "bb:1172",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1172",
"to": "bb:1197",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1197",
"to": "bb:1228",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1243",
"to": "bb:1838",
"type": "control_flow"
},
{
"from": "bb:1243",
"to": "bb:1310",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1310",
"to": "bb:1795",
"type": "control_flow"
},
{
"from": "bb:1310",
"to": "bb:1318",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1318",
"to": "bb:1838",
"type": "control_flow"
},
{
"from": "bb:1337",
"to": "bb:1421",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1421",
"to": "bb:1543",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1543",
"to": "bb:1546",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1567",
"to": "bb:1663",
"type": "control_flow"
},
{
"from": "bb:1567",
"to": "bb:1638",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1638",
"to": "bb:1663",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1677",
"to": "bb:1732",
"type": "control_flow"
},
{
"from": "bb:1677",
"to": "bb:1690",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1690",
"to": "bb:457",
"type": "control_flow"
},
{
"from": "bb:1732",
"to": "bb:1787",
"type": "control_flow"
},
{
"from": "bb:1732",
"to": "bb:1745",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1745",
"to": "bb:457",
"type": "control_flow"
},
{
"from": "bb:1787",
"to": "bb:461",
"type": "control_flow"
},
{
"from": "bb:1795",
"to": "bb:1809",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1809",
"to": "bb:1809",
"type": "control_flow"
},
{
"from": "bb:1809",
"to": "bb:1829",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1829",
"to": "bb:1838",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1846",
"to": "bb:1877",
"type": "control_flow"
},
{
"from": "bb:1846",
"to": "bb:1873",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1877",
"to": "bb:1980",
"type": "control_flow"
},
{
"from": "bb:1877",
"to": "bb:1940",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1940",
"to": "bb:1952",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1952",
"to": "bb:1960",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1960",
"to": "bb:2038",
"type": "control_flow"
},
{
"from": "bb:1960",
"to": "bb:1969",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1969",
"to": "bb:1960",
"type": "control_flow"
},
{
"from": "bb:1980",
"to": "bb:1952",
"type": "control_flow"
},
{
"from": "bb:1980",
"to": "bb:1995",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1995",
"to": "bb:1998",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1998",
"to": "bb:1952",
"type": "control_flow"
},
{
"from": "bb:1998",
"to": "bb:2007",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2007",
"to": "bb:1998",
"type": "control_flow"
},
{
"from": "bb:2028",
"to": "bb:470",
"type": "control_flow"
},
{
"from": "fn:0x41c0e1b5",
"to": "bb:1799347290",
"type": "entry"
},
{
"from": "fn:0x6b3fdc5a",
"to": "bb:2732990533",
"type": "entry"
},
{
"from": "fn:0xa2e62045",
"to": "bb:3077981301",
"type": "entry"
},
{
"from": "fn:0xb7764475",
"to": "bb:3619842779",
"type": "entry"
},
{
"from": "bb:88",
"to": "call:229",
"type": "contains"
},
{
"from": "call:229",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:235",
"to": "call:344",
"type": "contains"
},
{
"from": "call:344",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:470",
"to": "call:718",
"type": "contains"
},
{
"from": "call:718",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:724",
"to": "call:904",
"type": "contains"
},
{
"from": "call:904",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:946",
"to": "call:969",
"type": "contains"
},
{
"from": "call:969",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:975",
"to": "call:1066",
"type": "contains"
},
{
"from": "call:1066",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1108",
"to": "call:1155",
"type": "contains"
},
{
"from": "call:1155",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1197",
"to": "call:1222",
"type": "contains"
},
{
"from": "call:1222",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1337",
"to": "call:1415",
"type": "contains"
},
{
"from": "call:1415",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1421",
"to": "call:1537",
"type": "contains"
},
{
"from": "call:1537",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1567",
"to": "call:1621",
"type": "contains"
},
{
"from": "call:1621",
"to": "sink:call",
"type": "capability"
}
],
"nodes": [
{
"end_pc": 10,
"hash": "0xd3735ca9c20e935b30a407d576a537251104b99507f47da2b56ac0d6547da5e0",
"id": "bb:0",
"start_pc": 0,
"type": "basic_block"
},
{
"end_pc": 30,
"hash": "0xdf87a9326f62437c94bfcc1ea52a498fa27bb5974cc93fd67fbc52c4cc2ea732",
"id": "bb:11",
"start_pc": 11,
"type": "basic_block"
},
{
"end_pc": 41,
"hash": "0x53defbfabb5a8f0b33a26413e150d5d9dc5de495196247a74c7b3757f163cb3f",
"id": "bb:31",
"start_pc": 31,
"type": "basic_block"
},
{
"end_pc": 52,
"hash": "0xc542a69fd0ea6fa7970517def1da09b0927d8f086cc7fc95b6d8fe2285ebca84",
"id": "bb:42",
"start_pc": 42,
"type": "basic_block"
},
{
"end_pc": 63,
"hash": "0xe1f1ee774754b4d3331ef6797fc7b260a5f9cae9cb76b132f3a8e6649ef82884",
"id": "bb:53",
"start_pc": 53,
"type": "basic_block"
},
{
"end_pc": 74,
"hash": "0x7189438a2df56e017656cf8f73b60b01369c53f6a0a8df82ae0b8631888c9516",
"id": "bb:64",
"start_pc": 64,
"type": "basic_block"
},
{
"end_pc": 85,
"hash": "0x3ef7813465216732058feb067606e26ef9d68ec955485139ea16a2b8d1689f39",
"id": "bb:75",
"start_pc": 75,
"type": "basic_block"
},
{
"end_pc": 87,
"hash": "0x5f16f1452b945fe2013a5da2a330eeba5ff0e75bc87856dd3fe9b41c091b9e59",
"id": "bb:86",
"start_pc": 86,
"type": "basic_block"
},
{
"end_pc": 234,
"hash": "0x09213e301cd492b83d573cabdc60c7f61d09de500a3a06e8691c7f63eb2d6ab9",
"id": "bb:88",
"start_pc": 88,
"type": "basic_block"
},
{
"end_pc": 349,
"hash": "0x2b1ae2617fcbdd41e00b969e2faddb6bfb89f884ba822acaf61a1f75e766dca8",
"id": "bb:235",
"start_pc": 235,
"type": "basic_block"
},
{
"end_pc": 360,
"hash": "0xb3203458871efd337782a4c55ec159436740b61d10b3cad958d15c97744438c8",
"id": "bb:350",
"start_pc": 350,
"type": "basic_block"
},
{
"end_pc": 388,
"hash": "0x2688e6f7e2466eff69db9d6f6913c47eb79869cea63a0b1f085c018a0571b99b",
"id": "bb:361",
"start_pc": 361,
"type": "basic_block"
},
{
"end_pc": 399,
"hash": "0xac8fc90538041eb3de91eabb31b0d7bab69c5649d8dd0136729638aea1fb12c1",
"id": "bb:389",
"start_pc": 389,
"type": "basic_block"
},
{
"end_pc": 420,
"hash": "0x148d6405a1e14166a13ddddfab63fbbec85d0250dfc0f815ccc8b039e9074b94",
"id": "bb:400",
"start_pc": 400,
"type": "basic_block"
},
{
"end_pc": 456,
"hash": "0x633ec51055c40d6126a9fcd4a273154966f22b55af3fbf91fb282b8154136e16",
"id": "bb:421",
"start_pc": 421,
"type": "basic_block"
},
{
"end_pc": 459,
"hash": "0x0df13f30d920044b754240114b11d850aedc3a76a6d0fad6ad5cbca42b647745",
"id": "bb:457",
"start_pc": 457,
"type": "basic_block"
},
{
"end_pc": 465,
"hash": "0xc3dcc9fa65f03ce5205f94c5fef9fc98e254bd2efbf0901abe07fafcb3f27a65",
"id": "bb:461",
"start_pc": 461,
"type": "basic_block"
},
{
"end_pc": 467,
"hash": "0x1a438f541db105aed03355c766a01aa8a501c9a3b8d8b72a866a2fb1fc0443b9",
"id": "bb:466",
"start_pc": 466,
"type": "basic_block"
},
{
"end_pc": 723,
"hash": "0x2cdee89aad8e7b9796219c9dc8cdfe5f796884de75cd5dbc0a4a2441baf7ea07",
"id": "bb:470",
"start_pc": 470,
"type": "basic_block"
},
{
"end_pc": 920,
"hash": "0xe88270359e44b69696a85ca5077a72b0a3310c24652701578cd5918ad8a2a20b",
"id": "bb:724",
"start_pc": 724,
"type": "basic_block"
},
{
"end_pc": 945,
"hash": "0x003ea2b06446e85d8c362de9d48dcd67a6d751a1b57470c696eca7f7600e9c64",
"id": "bb:921",
"start_pc": 921,
"type": "basic_block"
},
{
"end_pc": 974,
"hash": "0xc43c721d15f330a0effe56bb1241f406f40f94f5dbb7bfa4973dfb12317a72bc",
"id": "bb:946",
"start_pc": 946,
"type": "basic_block"
},
{
"end_pc": 1082,
"hash": "0xd7e2122cc4fce6a156004132f620bfd3e223633c406535b732de7767f7d85ca9",
"id": "bb:975",
"start_pc": 975,
"type": "basic_block"
},
{
"end_pc": 1107,
"hash": "0x3958736970547f62d8515c63c4c991f5f44fe4f97a89462f8283da8ce82096ad",
"id": "bb:1083",
"start_pc": 1083,
"type": "basic_block"
},
{
"end_pc": 1171,
"hash": "0x6d38f61f02a4f5d4468d5d4d5a7d274cec9a323b681422ce5045c5bd2ae7597d",
"id": "bb:1108",
"start_pc": 1108,
"type": "basic_block"
},
{
"end_pc": 1196,
"hash": "0x48b5bc235731f768996d214fea4cc7a620a10ee22942714bb2b6c8cd2cd2dd5e",
"id": "bb:1172",
"start_pc": 1172,
"type": "basic_block"
},
{
"end_pc": 1227,
"hash": "0x66f8e8216435f8128d16b53b0bb048796e1e67bb299a8c60db0cce0614fc9916",
"id": "bb:1197",
"start_pc": 1197,
"type": "basic_block"
},
{
"end_pc": 1242,
"hash": "0x22b39e77b67ecd26554ec9f864a8d59bfc62b822692d86f53deb5017528e9716",
"id": "bb:1228",
"start_pc": 1228,
"type": "basic_block"
},
{
"end_pc": 1309,
"hash": "0x7ac814b08373d6905ec988c75e33dd12fd79fb7c914ab3c90f441e622c4b9dce",
"id": "bb:1243",
"start_pc": 1243,
"type": "basic_block"
},
{
"end_pc": 1317,
"hash": "0x5a4d7967e9226ac91425253cc164976ccf0ce16e9569d30d6833a5eaeeb30699",
"id": "bb:1310",
"start_pc": 1310,
"type": "basic_block"
},
{
"end_pc": 1336,
"hash": "0x551b4c411288731a450bf225cab2a1c8023e873c6ab3deae251fe836196656ac",
"id": "bb:1318",
"start_pc": 1318,
"type": "basic_block"
},
{
"end_pc": 1420,
"hash": "0x3b4febb82ed88d5dee2bbf9b7568af9b8cefeedb431f8345ab231257899adcd7",
"id": "bb:1337",
"start_pc": 1337,
"type": "basic_block"
},
{
"end_pc": 1542,
"hash": "0xf348f958e454918148a4727120377f01c46c785e2129ba8a9feac48bd3dd4b1d",
"id": "bb:1421",
"start_pc": 1421,
"type": "basic_block"
},
{
"end_pc": 1545,
"hash": "0xcef03e1547772fd8db1b526c3297cb83fe5de094f964a35f0dd5a48ce7f4828b",
"id": "bb:1543",
"start_pc": 1543,
"type": "basic_block"
},
{
"end_pc": 1548,
"hash": "0xd629834c209fd4c67c240499429617cab76b43ac64adda89d5b2249d86331479",
"id": "bb:1546",
"start_pc": 1546,
"type": "basic_block"
},
{
"end_pc": 1566,
"hash": "0x01b35b9f49f2893530b7cf7bbab2d3a24e4f485c79c66a29fe6aaaa21bc3597e",
"id": "bb:1549",
"start_pc": 1549,
"type": "basic_block"
},
{
"end_pc": 1637,
"hash": "0x84c1b1f7575dd995be464ed53ac1ebcacd782b84213d349f079ce2ae86f904dc",
"id": "bb:1567",
"start_pc": 1567,
"type": "basic_block"
},
{
"end_pc": 1662,
"hash": "0xf16889a757d6e357d6d572740a76261953355b91b215b6c7572032404554acf9",
"id": "bb:1638",
"start_pc": 1638,
"type": "basic_block"
},
{
"end_pc": 1676,
"hash": "0xf73b0ffae291d554c1d352c0a644af8cf27441d11b4a0c48e3830681f769dc73",
"id": "bb:1663",
"start_pc": 1663,
"type": "basic_block"
},
{
"end_pc": 1689,
"hash": "0x8c2262872df387fce57184c09c54d5972d94e083bbef153a2b1ba17d1f5847e8",
"id": "bb:1677",
"start_pc": 1677,
"type": "basic_block"
},
{
"end_pc": 1731,
"hash": "0x5a40cd5ae2289a1a7419b4e2035ce2eb062dd86d0def99f16f9df22c7e36fbd4",
"id": "bb:1690",
"start_pc": 1690,
"type": "basic_block"
},
{
"end_pc": 1744,
"hash": "0xabb7c92ebd070edddd00de63be73d144ed374c933225a50c5a5cb4ebc39ff05e",
"id": "bb:1732",
"start_pc": 1732,
"type": "basic_block"
},
{
"end_pc": 1786,
"hash": "0x55784f0a30b36e12b3e82488c66f1db13a7b64dadcc50459c435e8197b5d2d41",
"id": "bb:1745",
"start_pc": 1745,
"type": "basic_block"
},
{
"end_pc": 1794,
"hash": "0x68bed9853c99379725f093625497bce69b59b285e21735545b30dd70078aab85",
"id": "bb:1787",
"start_pc": 1787,
"type": "basic_block"
},
{
"end_pc": 1808,
"hash": "0xad85f1fd5d49da229483d219a7b986b26b921d02838d991f38edc292437c3705",
"id": "bb:1795",
"start_pc": 1795,
"type": "basic_block"
},
{
"end_pc": 1828,
"hash": "0x6bf88ea967c107098e05ffb994e73cd75add8ad0cd92d2fca711ed258b493178",
"id": "bb:1809",
"start_pc": 1809,
"type": "basic_block"
},
{
"end_pc": 1837,
"hash": "0x1d80c257133fdbb1fc86844a889c2c3e31ad7b15663193bbad3658762461a99b",
"id": "bb:1829",
"start_pc": 1829,
"type": "basic_block"
},
{
"end_pc": 1845,
"hash": "0xf55788fe7ceebf9a3d9120df3ab9afa9efce79f9ebdd4054da21137bd3a97249",
"id": "bb:1838",
"start_pc": 1838,
"type": "basic_block"
},
{
"end_pc": 1872,
"hash": "0xfd208a9beee557643d9ffc6867a996e2be282dea2e719480481e8bda89f83233",
"id": "bb:1846",
"start_pc": 1846,
"type": "basic_block"
},
{
"end_pc": 1876,
"hash": "0xa11abcb70f3015ca9d16741c9e0dddc6b087aefc3b34caa308ef2fb78ed4a982",
"id": "bb:1873",
"start_pc": 1873,
"type": "basic_block"
},
{
"end_pc": 1939,
"hash": "0xeb9e012c5be60d77755ffcc128e9ec9cd09dde79c457e49f98f853edc1e6166d",
"id": "bb:1877",
"start_pc": 1877,
"type": "basic_block"
},
{
"end_pc": 1951,
"hash": "0xd2170d06b24d5d84793e3ed3882a78a0e59b6e09bdbd71f9b6de9e94c0160b68",
"id": "bb:1940",
"start_pc": 1940,
"type": "basic_block"
},
{
"end_pc": 1959,
"hash": "0x32fa405f22d731e192d1d838fbbbba987aca9b7688cf4cf464a2f4e97082abc1",
"id": "bb:1952",
"start_pc": 1952,
"type": "basic_block"
},
{
"end_pc": 1968,
"hash": "0xf7dd78aa79093af3124b9dd2d32c50250d96d7833d76fdeddd20fbc9c2c35f14",
"id": "bb:1960",
"start_pc": 1960,
"type": "basic_block"
},
{
"end_pc": 1979,
"hash": "0x14304a5895f1f2a50c3d5bd524bd6b1e9f966ea28f974951b12f05bbf492f925",
"id": "bb:1969",
"start_pc": 1969,
"type": "basic_block"
},
{
"end_pc": 1994,
"hash": "0x779803e0ca7d28cd59cd97b0068daebcb5757e32898fa4e470d9ebfba58eccbf",
"id": "bb:1980",
"start_pc": 1980,
"type": "basic_block"
},
{
"end_pc": 1997,
"hash": "0x2672624d38540b42d0bbf2beb32f96bce3b239974951ff761ab0798ec13963ff",
"id": "bb:1995",
"start_pc": 1995,
"type": "basic_block"
},
{
"end_pc": 2006,
"hash": "0xf6b5365e48cc381c5d34d2f65e772f88e2c0e7e2cb559833a45426191d113045",
"id": "bb:1998",
"start_pc": 1998,
"type": "basic_block"
},
{
"end_pc": 2027,
"hash": "0x76c0939770fa5221a8e8270d17771ac162c23676350974eb95a87a8f80615b1e",
"id": "bb:2007",
"start_pc": 2007,
"type": "basic_block"
},
{
"end_pc": 2037,
"hash": "0x6f87e8d38b1193be7e8787b9613bc5e48dcd615c40704c0cfa2d3636fa1dfcbc",
"id": "bb:2028",
"start_pc": 2028,
"type": "basic_block"
},
{
"end_pc": 2041,
"hash": "0xfdc105839eeb2d7fec5f521ba89ec733fa91e6fb9d462a641fa2774cf4da6314",
"id": "bb:2038",
"start_pc": 2038,
"type": "basic_block"
},
{
"end_pc": 2045,
"hash": "0x0a2e8ec3a087c00f66ac32511438781a119964297dffa789eb8129b9f69bd4f0",
"id": "bb:2042",
"start_pc": 2042,
"type": "basic_block"
},
{
"end_pc": 2047,
"hash": "0xbfecca77f8b05361ac74da6773104d4320341fa6cf2cb71e681061e16e296703",
"id": "bb:2046",
"start_pc": 2046,
"type": "basic_block"
},
{
"id": "call:229",
"opcode": "CALL",
"pc": 229,
"type": "callsite"
},
{
"id": "call:344",
"opcode": "CALL",
"pc": 344,
"type": "callsite"
},
{
"id": "call:718",
"opcode": "CALL",
"pc": 718,
"type": "callsite"
},
{
"id": "call:904",
"opcode": "CALL",
"pc": 904,
"type": "callsite"
},
{
"id": "call:969",
"opcode": "CALL",
"pc": 969,
"type": "callsite"
},
{
"id": "call:1066",
"opcode": "CALL",
"pc": 1066,
"type": "callsite"
},
{
"id": "call:1155",
"opcode": "CALL",
"pc": 1155,
"type": "callsite"
},
{
"id": "call:1222",
"opcode": "CALL",
"pc": 1222,
"type": "callsite"
},
{
"id": "call:1415",
"opcode": "CALL",
"pc": 1415,
"type": "callsite"
},
{
"id": "call:1537",
"opcode": "CALL",
"pc": 1537,
"type": "callsite"
},
{
"id": "call:1621",
"opcode": "CALL",
"pc": 1621,
"type": "callsite"
},
{
"id": "sink:call",
"type": "sink"
},
{
"entry_pc": null,
"id": "fn:0x27dc297e",
"selector": "0x27dc297e",
"type": "function"
},
{
"entry_pc": 1799347290,
"id": "fn:0x41c0e1b5",
"selector": "0x41c0e1b5",
"type": "function"
},
{
"entry_pc": 2732990533,
"id": "fn:0x6b3fdc5a",
"selector": "0x6b3fdc5a",
"type": "function"
},
{
"entry_pc": 3077981301,
"id": "fn:0xa2e62045",
"selector": "0xa2e62045",
"type": "function"
},
{
"entry_pc": 3619842779,
"id": "fn:0xb7764475",
"selector": "0xb7764475",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xd7c26adb",
"selector": "0xd7c26adb",
"type": "function"
}
],
"version": "capability_graph_v1"
},
"id": 1882,
"updated_at": "2026-04-04T19:52:31.000000Z",
"version": "capability_graph_v1"
}
exec
/bin/bash -lc "python - <<'PY'
code='606060405236156100565760e060020a600035046327dc297e811461005857806341c0e1b5146101695780636b3fdc5a14610190578063a2e62045146101d2578063b7764475146104db578063d7c26adb14610539575b005b60408051602060248035600481810135601f81018590048502860185019096528585526100569581359591946044949293909201918190840183828082843750949650505050505050610736604080516000805460e060020a6338cc483102835292519092600160a060020a0316916338cc4831916004828101926020929190829003018187876161da5a03f11561000257505060408051805160018054600160a060020a031916909117908190557fc281d19e0000000000000000000000000000000000000000000000000000000082529151600160a060020a0392909216925063c281d19e916004828101926020929190829003018187876161da5a03f1156100025750506040515191505090565b610056600254600160a060020a039081163390911614156107fe5733600160a060020a0316ff5b61060d600435600060ff82166001141561068d578054600160a060020a031916731d11e5eae3112dbd44f99266872ff1d07c77dce81781555b5060015b919050565b6100565b604080518082018252600381527f55524c00000000000000000000000000000000000000000000000000000000006020828101919091528251608081018452604c81527f6a736f6e2868747470733a2f2f6170692e6b72616b656e2e636f6d2f302f7075818301527f626c69632f5469636b65723f706169723d455448584254292e726573756c742e818501527f58455448585842542e632e300000000000000000000000000000000000000000606082015283516000805460e060020a6338cc4831028352955161060a96603c96959293600160a060020a0391909116926338cc483192600483810193829003018187876161da5a03f1156100025750505060405180519060200150600160006101000a815481600160a060020a0302191690830217905550600160009054906101000a9004600160a060020a0316600160a060020a031663adf59f99600160009054906101000a9004600160a060020a0316600160a060020a031663524f3889866040518260e060020a02815260040180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156103b25780820380516001836020036101000a031916815260200191505b50925050506020604051808303816000876161da5a03f115610002575050604051519695505050505050565b6040805160038054602060026001831615610100026000190190921691909104601f810182900482028401820190945283835261061f939083018282801561072e5780601f106107035761010080835404028352916020019161072e565b610056600435600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316040518160e060020a0281526004018090506020604051808303816000876161da5a03f11561000257505060408051805160018054600160a060020a031916909117908190557f688dcfd7000000000000000000000000000000000000000000000000000000008252600482018590529151600160a060020a0392909216925063688dcfd7916024828101926000929190829003018183876161da5a03f115610002575050505b50565b60408051918252519081900360200190f35b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561067f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60ff8216600214156106c45760008054600160a060020a031916730ae06d5934fd75d214951eb96633fbd7f9262a7c1790556101c9565b60ff821660a114156106fb5760008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf1790556101c9565b5060006101cd565b820191906000526020600020905b81548152906001019060200180831161071157829003601f168201915b505050505081565b600160a060020a031633600160a060020a031614151561075557610002565b8060036000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106107bc57805160ff19168380011785555b506107ec9291505b808211156107f657600081556001016107a8565b828001600101855582156107a0579182015b828111156107a05782518260005055916020019190600101906107ce565b50506107fa6101d6565b5090565b5050565b56'
from collections import namedtuple
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',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',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
b=bytes.fromhex(code)
pc=0
while pc < len(b):
op=b[pc]
name=ops.get(op,f'OP_{op:02x}')
if name.startswith('PUSH'):
n=int(name[4:])
data=b[pc+1:pc+1+n]
print(f'{pc:04x}: {name} 0x{data.hex()}')
pc+=1+n
else:
print(f'{pc:04x}: {name}')
pc+=1
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
0000: PUSH1 0x60
0002: PUSH1 0x40
0004: MSTORE
0005: CALLDATASIZE
0006: ISZERO
0007: PUSH2 0x0056
000a: JUMPI
000b: PUSH1 0xe0
000d: PUSH1 0x02
000f: EXP
0010: PUSH1 0x00
0012: CALLDATALOAD
0013: DIV
0014: PUSH4 0x27dc297e
0019: DUP2
001a: EQ
001b: PUSH2 0x0058
001e: JUMPI
001f: DUP1
0020: PUSH4 0x41c0e1b5
0025: EQ
0026: PUSH2 0x0169
0029: JUMPI
002a: DUP1
002b: PUSH4 0x6b3fdc5a
0030: EQ
0031: PUSH2 0x0190
0034: JUMPI
0035: DUP1
0036: PUSH4 0xa2e62045
003b: EQ
003c: PUSH2 0x01d2
003f: JUMPI
0040: DUP1
0041: PUSH4 0xb7764475
0046: EQ
0047: PUSH2 0x04db
004a: JUMPI
004b: DUP1
004c: PUSH4 0xd7c26adb
0051: EQ
0052: PUSH2 0x0539
0055: JUMPI
0056: JUMPDEST
0057: STOP
0058: JUMPDEST
0059: PUSH1 0x40
005b: DUP1
005c: MLOAD
005d: PUSH1 0x20
005f: PUSH1 0x24
0061: DUP1
0062: CALLDATALOAD
0063: PUSH1 0x04
0065: DUP2
0066: DUP2
0067: ADD
0068: CALLDATALOAD
0069: PUSH1 0x1f
006b: DUP2
006c: ADD
006d: DUP6
006e: SWAP1
006f: DIV
0070: DUP6
0071: MUL
0072: DUP7
0073: ADD
0074: DUP6
0075: ADD
0076: SWAP1
0077: SWAP7
0078: MSTORE
0079: DUP6
007a: DUP6
007b: MSTORE
007c: PUSH2 0x0056
007f: SWAP6
0080: DUP2
0081: CALLDATALOAD
0082: SWAP6
0083: SWAP2
0084: SWAP5
0085: PUSH1 0x44
0087: SWAP5
0088: SWAP3
0089: SWAP4
008a: SWAP1
008b: SWAP3
008c: ADD
008d: SWAP2
008e: DUP2
008f: SWAP1
0090: DUP5
0091: ADD
0092: DUP4
0093: DUP3
0094: DUP1
0095: DUP3
0096: DUP5
0097: CALLDATACOPY
0098: POP
0099: SWAP5
009a: SWAP7
009b: POP
009c: POP
009d: POP
009e: POP
009f: POP
00a0: POP
00a1: POP
00a2: PUSH2 0x0736
00a5: PUSH1 0x40
00a7: DUP1
00a8: MLOAD
00a9: PUSH1 0x00
00ab: DUP1
00ac: SLOAD
00ad: PUSH1 0xe0
00af: PUSH1 0x02
00b1: EXP
00b2: PUSH4 0x38cc4831
00b7: MUL
00b8: DUP4
00b9: MSTORE
00ba: SWAP3
00bb: MLOAD
00bc: SWAP1
00bd: SWAP3
00be: PUSH1 0x01
00c0: PUSH1 0xa0
00c2: PUSH1 0x02
00c4: EXP
00c5: SUB
00c6: AND
00c7: SWAP2
00c8: PUSH4 0x38cc4831
00cd: SWAP2
00ce: PUSH1 0x04
00d0: DUP3
00d1: DUP2
00d2: ADD
00d3: SWAP3
00d4: PUSH1 0x20
00d6: SWAP3
00d7: SWAP2
00d8: SWAP1
00d9: DUP3
00da: SWAP1
00db: SUB
00dc: ADD
00dd: DUP2
00de: DUP8
00df: DUP8
00e0: PUSH2 0x61da
00e3: GAS
00e4: SUB
00e5: CALL
00e6: ISZERO
00e7: PUSH2 0x0002
00ea: JUMPI
00eb: POP
00ec: POP
00ed: PUSH1 0x40
00ef: DUP1
00f0: MLOAD
00f1: DUP1
00f2: MLOAD
00f3: PUSH1 0x01
00f5: DUP1
00f6: SLOAD
00f7: PUSH1 0x01
00f9: PUSH1 0xa0
00fb: PUSH1 0x02
00fd: EXP
00fe: SUB
00ff: NOT
0100: AND
0101: SWAP1
0102: SWAP2
0103: OR
0104: SWAP1
0105: DUP2
0106: SWAP1
0107: SSTORE
0108: PUSH32 0xc281d19e00000000000000000000000000000000000000000000000000000000
0129: DUP3
012a: MSTORE
012b: SWAP2
012c: MLOAD
012d: PUSH1 0x01
012f: PUSH1 0xa0
0131: PUSH1 0x02
0133: EXP
0134: SUB
0135: SWAP3
0136: SWAP1
0137: SWAP3
0138: AND
0139: SWAP3
013a: POP
013b: PUSH4 0xc281d19e
0140: SWAP2
0141: PUSH1 0x04
0143: DUP3
0144: DUP2
0145: ADD
0146: SWAP3
0147: PUSH1 0x20
0149: SWAP3
014a: SWAP2
014b: SWAP1
014c: DUP3
014d: SWAP1
014e: SUB
014f: ADD
0150: DUP2
0151: DUP8
0152: DUP8
0153: PUSH2 0x61da
0156: GAS
0157: SUB
0158: CALL
0159: ISZERO
015a: PUSH2 0x0002
015d: JUMPI
015e: POP
015f: POP
0160: PUSH1 0x40
0162: MLOAD
0163: MLOAD
0164: SWAP2
0165: POP
0166: POP
0167: SWAP1
0168: JUMP
0169: JUMPDEST
016a: PUSH2 0x0056
016d: PUSH1 0x02
016f: SLOAD
0170: PUSH1 0x01
0172: PUSH1 0xa0
0174: PUSH1 0x02
0176: EXP
0177: SUB
0178: SWAP1
0179: DUP2
017a: AND
017b: CALLER
017c: SWAP1
017d: SWAP2
017e: AND
017f: EQ
0180: ISZERO
0181: PUSH2 0x07fe
0184: JUMPI
0185: CALLER
0186: PUSH1 0x01
0188: PUSH1 0xa0
018a: PUSH1 0x02
018c: EXP
018d: SUB
018e: AND
018f: SELFDESTRUCT
0190: JUMPDEST
0191: PUSH2 0x060d
0194: PUSH1 0x04
0196: CALLDATALOAD
0197: PUSH1 0x00
0199: PUSH1 0xff
019b: DUP3
019c: AND
019d: PUSH1 0x01
019f: EQ
01a0: ISZERO
01a1: PUSH2 0x068d
01a4: JUMPI
01a5: DUP1
01a6: SLOAD
01a7: PUSH1 0x01
01a9: PUSH1 0xa0
01ab: PUSH1 0x02
01ad: EXP
01ae: SUB
01af: NOT
01b0: AND
01b1: PUSH20 0x1d11e5eae3112dbd44f99266872ff1d07c77dce8
01c6: OR
01c7: DUP2
01c8: SSTORE
01c9: JUMPDEST
01ca: POP
01cb: PUSH1 0x01
01cd: JUMPDEST
01ce: SWAP2
01cf: SWAP1
01d0: POP
01d1: JUMP
01d2: JUMPDEST
01d3: PUSH2 0x0056
01d6: JUMPDEST
01d7: PUSH1 0x40
01d9: DUP1
01da: MLOAD
01db: DUP1
01dc: DUP3
01dd: ADD
01de: DUP3
01df: MSTORE
01e0: PUSH1 0x03
01e2: DUP2
01e3: MSTORE
01e4: PUSH32 0x55524c0000000000000000000000000000000000000000000000000000000000
0205: PUSH1 0x20
0207: DUP3
0208: DUP2
0209: ADD
020a: SWAP2
020b: SWAP1
020c: SWAP2
020d: MSTORE
020e: DUP3
020f: MLOAD
0210: PUSH1 0x80
0212: DUP2
0213: ADD
0214: DUP5
0215: MSTORE
0216: PUSH1 0x4c
0218: DUP2
0219: MSTORE
021a: PUSH32 0x6a736f6e2868747470733a2f2f6170692e6b72616b656e2e636f6d2f302f7075
023b: DUP2
023c: DUP4
023d: ADD
023e: MSTORE
023f: PUSH32 0x626c69632f5469636b65723f706169723d455448584254292e726573756c742e
0260: DUP2
0261: DUP6
0262: ADD
0263: MSTORE
0264: PUSH32 0x58455448585842542e632e300000000000000000000000000000000000000000
0285: PUSH1 0x60
0287: DUP3
0288: ADD
0289: MSTORE
028a: DUP4
028b: MLOAD
028c: PUSH1 0x00
028e: DUP1
028f: SLOAD
0290: PUSH1 0xe0
0292: PUSH1 0x02
0294: EXP
0295: PUSH4 0x38cc4831
029a: MUL
029b: DUP4
029c: MSTORE
029d: SWAP6
029e: MLOAD
029f: PUSH2 0x060a
02a2: SWAP7
02a3: PUSH1 0x3c
02a5: SWAP7
02a6: SWAP6
02a7: SWAP3
02a8: SWAP4
02a9: PUSH1 0x01
02ab: PUSH1 0xa0
02ad: PUSH1 0x02
02af: EXP
02b0: SUB
02b1: SWAP2
02b2: SWAP1
02b3: SWAP2
02b4: AND
02b5: SWAP3
02b6: PUSH4 0x38cc4831
02bb: SWAP3
02bc: PUSH1 0x04
02be: DUP4
02bf: DUP2
02c0: ADD
02c1: SWAP4
02c2: DUP3
02c3: SWAP1
02c4: SUB
02c5: ADD
02c6: DUP2
02c7: DUP8
02c8: DUP8
02c9: PUSH2 0x61da
02cc: GAS
02cd: SUB
02ce: CALL
02cf: ISZERO
02d0: PUSH2 0x0002
02d3: JUMPI
02d4: POP
02d5: POP
02d6: POP
02d7: PUSH1 0x40
02d9: MLOAD
02da: DUP1
02db: MLOAD
02dc: SWAP1
02dd: PUSH1 0x20
02df: ADD
02e0: POP
02e1: PUSH1 0x01
02e3: PUSH1 0x00
02e5: PUSH2 0x0100
02e8: EXP
02e9: DUP2
02ea: SLOAD
02eb: DUP2
02ec: PUSH1 0x01
02ee: PUSH1 0xa0
02f0: PUSH1 0x02
02f2: EXP
02f3: SUB
02f4: MUL
02f5: NOT
02f6: AND
02f7: SWAP1
02f8: DUP4
02f9: MUL
02fa: OR
02fb: SWAP1
02fc: SSTORE
02fd: POP
02fe: PUSH1 0x01
0300: PUSH1 0x00
0302: SWAP1
0303: SLOAD
0304: SWAP1
0305: PUSH2 0x0100
0308: EXP
0309: SWAP1
030a: DIV
030b: PUSH1 0x01
030d: PUSH1 0xa0
030f: PUSH1 0x02
0311: EXP
0312: SUB
0313: AND
0314: PUSH1 0x01
0316: PUSH1 0xa0
0318: PUSH1 0x02
031a: EXP
031b: SUB
031c: AND
031d: PUSH4 0xadf59f99
0322: PUSH1 0x01
0324: PUSH1 0x00
0326: SWAP1
0327: SLOAD
0328: SWAP1
0329: PUSH2 0x0100
032c: EXP
032d: SWAP1
032e: DIV
032f: PUSH1 0x01
0331: PUSH1 0xa0
0333: PUSH1 0x02
0335: EXP
0336: SUB
0337: AND
0338: PUSH1 0x01
033a: PUSH1 0xa0
033c: PUSH1 0x02
033e: EXP
033f: SUB
0340: AND
0341: PUSH4 0x524f3889
0346: DUP7
0347: PUSH1 0x40
0349: MLOAD
034a: DUP3
034b: PUSH1 0xe0
034d: PUSH1 0x02
034f: EXP
0350: MUL
0351: DUP2
0352: MSTORE
0353: PUSH1 0x04
0355: ADD
0356: DUP1
0357: DUP1
0358: PUSH1 0x20
035a: ADD
035b: DUP3
035c: DUP2
035d: SUB
035e: DUP3
035f: MSTORE
0360: DUP4
0361: DUP2
0362: DUP2
0363: MLOAD
0364: DUP2
0365: MSTORE
0366: PUSH1 0x20
0368: ADD
0369: SWAP2
036a: POP
036b: DUP1
036c: MLOAD
036d: SWAP1
036e: PUSH1 0x20
0370: ADD
0371: SWAP1
0372: DUP1
0373: DUP4
0374: DUP4
0375: DUP3
0376: SWAP1
0377: PUSH1 0x00
0379: PUSH1 0x04
037b: PUSH1 0x20
037d: DUP5
037e: PUSH1 0x1f
0380: ADD
0381: DIV
0382: PUSH1 0x03
0384: MUL
0385: PUSH1 0x0f
0387: ADD
0388: CALL
0389: POP
038a: SWAP1
038b: POP
038c: SWAP1
038d: DUP2
038e: ADD
038f: SWAP1
0390: PUSH1 0x1f
0392: AND
0393: DUP1
0394: ISZERO
0395: PUSH2 0x03b2
0398: JUMPI
0399: DUP1
039a: DUP3
039b: SUB
039c: DUP1
039d: MLOAD
039e: PUSH1 0x01
03a0: DUP4
03a1: PUSH1 0x20
03a3: SUB
03a4: PUSH2 0x0100
03a7: EXP
03a8: SUB
03a9: NOT
03aa: AND
03ab: DUP2
03ac: MSTORE
03ad: PUSH1 0x20
03af: ADD
03b0: SWAP2
03b1: POP
03b2: JUMPDEST
03b3: POP
03b4: SWAP3
03b5: POP
03b6: POP
03b7: POP
03b8: PUSH1 0x20
03ba: PUSH1 0x40
03bc: MLOAD
03bd: DUP1
03be: DUP4
03bf: SUB
03c0: DUP2
03c1: PUSH1 0x00
03c3: DUP8
03c4: PUSH2 0x61da
03c7: GAS
03c8: SUB
03c9: CALL
03ca: ISZERO
03cb: PUSH2 0x0002
03ce: JUMPI
03cf: POP
03d0: POP
03d1: PUSH1 0x40
03d3: MLOAD
03d4: MLOAD
03d5: SWAP7
03d6: SWAP6
03d7: POP
03d8: POP
03d9: POP
03da: POP
03db: POP
03dc: POP
03dd: JUMP
03de: JUMPDEST
03df: PUSH1 0x40
03e1: DUP1
03e2: MLOAD
03e3: PUSH1 0x03
03e5: DUP1
03e6: SLOAD
03e7: PUSH1 0x20
03e9: PUSH1 0x02
03eb: PUSH1 0x01
03ed: DUP4
03ee: AND
03ef: ISZERO
03f0: PUSH2 0x0100
03f3: MUL
03f4: PUSH1 0x00
03f6: NOT
03f7: ADD
03f8: SWAP1
03f9: SWAP3
03fa: AND
03fb: SWAP2
03fc: SWAP1
03fd: SWAP2
03fe: DIV
03ff: PUSH1 0x1f
0401: DUP2
0402: ADD
0403: DUP3
0404: SWAP1
0405: DIV
0406: DUP3
0407: MUL
0408: DUP5
0409: ADD
040a: DUP3
040b: ADD
040c: SWAP1
040d: SWAP5
040e: MSTORE
040f: DUP4
0410: DUP4
0411: MSTORE
0412: PUSH2 0x061f
0415: SWAP4
0416: SWAP1
0417: DUP4
0418: ADD
0419: DUP3
041a: DUP3
041b: DUP1
041c: ISZERO
041d: PUSH2 0x072e
0420: JUMPI
0421: DUP1
0422: PUSH1 0x1f
0424: LT
0425: PUSH2 0x0703
0428: JUMPI
0429: PUSH2 0x0100
042c: DUP1
042d: DUP4
042e: SLOAD
042f: DIV
0430: MUL
0431: DUP4
0432: MSTORE
0433: SWAP2
0434: PUSH1 0x20
0436: ADD
0437: SWAP2
0438: PUSH2 0x072e
043b: JUMP
043c: JUMPDEST
043d: PUSH2 0x0056
0440: PUSH1 0x04
0442: CALLDATALOAD
0443: PUSH1 0x00
0445: PUSH1 0x00
0447: SWAP1
0448: SLOAD
0449: SWAP1
044a: PUSH2 0x0100
044d: EXP
044e: SWAP1
044f: DIV
0450: PUSH1 0x01
0452: PUSH1 0xa0
0454: PUSH1 0x02
0456: EXP
0457: SUB
0458: AND
0459: PUSH1 0x01
045b: PUSH1 0xa0
045d: PUSH1 0x02
045f: EXP
0460: SUB
0461: AND
0462: PUSH4 0x38cc4831
0467: PUSH1 0x40
0469: MLOAD
046a: DUP2
046b: PUSH1 0xe0
046d: PUSH1 0x02
046f: EXP
0470: MUL
0471: DUP2
0472: MSTORE
0473: PUSH1 0x04
0475: ADD
0476: DUP1
0477: SWAP1
0478: POP
0479: PUSH1 0x20
047b: PUSH1 0x40
047d: MLOAD
047e: DUP1
047f: DUP4
0480: SUB
0481: DUP2
0482: PUSH1 0x00
0484: DUP8
0485: PUSH2 0x61da
0488: GAS
0489: SUB
048a: CALL
048b: ISZERO
048c: PUSH2 0x0002
048f: JUMPI
0490: POP
0491: POP
0492: PUSH1 0x40
0494: DUP1
0495: MLOAD
0496: DUP1
0497: MLOAD
0498: PUSH1 0x01
049a: DUP1
049b: SLOAD
049c: PUSH1 0x01
049e: PUSH1 0xa0
04a0: PUSH1 0x02
04a2: EXP
04a3: SUB
04a4: NOT
04a5: AND
04a6: SWAP1
04a7: SWAP2
04a8: OR
04a9: SWAP1
04aa: DUP2
04ab: SWAP1
04ac: SSTORE
04ad: PUSH32 0x688dcfd700000000000000000000000000000000000000000000000000000000
04ce: DUP3
04cf: MSTORE
04d0: PUSH1 0x04
04d2: DUP3
04d3: ADD
04d4: DUP6
04d5: SWAP1
04d6: MSTORE
04d7: SWAP2
04d8: MLOAD
04d9: PUSH1 0x01
04db: PUSH1 0xa0
04dd: PUSH1 0x02
04df: EXP
04e0: SUB
04e1: SWAP3
04e2: SWAP1
04e3: SWAP3
04e4: AND
04e5: SWAP3
04e6: POP
04e7: PUSH4 0x688dcfd7
04ec: SWAP2
04ed: PUSH1 0x24
04ef: DUP3
04f0: DUP2
04f1: ADD
04f2: SWAP3
04f3: PUSH1 0x00
04f5: SWAP3
04f6: SWAP2
04f7: SWAP1
04f8: DUP3
04f9: SWAP1
04fa: SUB
04fb: ADD
04fc: DUP2
04fd: DUP4
04fe: DUP8
04ff: PUSH2 0x61da
0502: GAS
0503: SUB
0504: CALL
0505: ISZERO
0506: PUSH2 0x0002
0509: JUMPI
050a: POP
050b: POP
050c: POP
050d: JUMPDEST
050e: POP
050f: JUMP
0510: JUMPDEST
0511: PUSH1 0x40
0513: DUP1
0514: MLOAD
0515: SWAP2
0516: DUP3
0517: MSTORE
0518: MLOAD
0519: SWAP1
051a: DUP2
051b: SWAP1
051c: SUB
051d: PUSH1 0x20
051f: ADD
0520: SWAP1
0521: RETURN
0522: JUMPDEST
0523: PUSH1 0x40
0525: MLOAD
0526: DUP1
0527: DUP1
0528: PUSH1 0x20
052a: ADD
052b: DUP3
052c: DUP2
052d: SUB
052e: DUP3
052f: MSTORE
0530: DUP4
0531: DUP2
0532: DUP2
0533: MLOAD
0534: DUP2
0535: MSTORE
0536: PUSH1 0x20
0538: ADD
0539: SWAP2
053a: POP
053b: DUP1
053c: MLOAD
053d: SWAP1
053e: PUSH1 0x20
0540: ADD
0541: SWAP1
0542: DUP1
0543: DUP4
0544: DUP4
0545: DUP3
0546: SWAP1
0547: PUSH1 0x00
0549: PUSH1 0x04
054b: PUSH1 0x20
054d: DUP5
054e: PUSH1 0x1f
0550: ADD
0551: DIV
0552: PUSH1 0x03
0554: MUL
0555: PUSH1 0x0f
0557: ADD
0558: CALL
0559: POP
055a: SWAP1
055b: POP
055c: SWAP1
055d: DUP2
055e: ADD
055f: SWAP1
0560: PUSH1 0x1f
0562: AND
0563: DUP1
0564: ISZERO
0565: PUSH2 0x067f
0568: JUMPI
0569: DUP1
056a: DUP3
056b: SUB
056c: DUP1
056d: MLOAD
056e: PUSH1 0x01
0570: DUP4
0571: PUSH1 0x20
0573: SUB
0574: PUSH2 0x0100
0577: EXP
0578: SUB
0579: NOT
057a: AND
057b: DUP2
057c: MSTORE
057d: PUSH1 0x20
057f: ADD
0580: SWAP2
0581: POP
0582: JUMPDEST
0583: POP
0584: SWAP3
0585: POP
0586: POP
0587: POP
0588: PUSH1 0x40
058a: MLOAD
058b: DUP1
058c: SWAP2
058d: SUB
058e: SWAP1
058f: RETURN
0590: JUMPDEST
0591: PUSH1 0xff
0593: DUP3
0594: AND
0595: PUSH1 0x02
0597: EQ
0598: ISZERO
0599: PUSH2 0x06c4
059c: JUMPI
059d: PUSH1 0x00
059f: DUP1
05a0: SLOAD
05a1: PUSH1 0x01
05a3: PUSH1 0xa0
05a5: PUSH1 0x02
05a7: EXP
05a8: SUB
05a9: NOT
05aa: AND
05ab: PUSH20 0x0ae06d5934fd75d214951eb96633fbd7f9262a7c
05c0: OR
05c1: SWAP1
05c2: SSTORE
05c3: PUSH2 0x01c9
05c6: JUMP
05c7: JUMPDEST
05c8: PUSH1 0xff
05ca: DUP3
05cb: AND
05cc: PUSH1 0xa1
05ce: EQ
05cf: ISZERO
05d0: PUSH2 0x06fb
05d3: JUMPI
05d4: PUSH1 0x00
05d6: DUP1
05d7: SLOAD
05d8: PUSH1 0x01
05da: PUSH1 0xa0
05dc: PUSH1 0x02
05de: EXP
05df: SUB
05e0: NOT
05e1: AND
05e2: PUSH20 0x20e12a1f859b3feae5fb2a0a32c18f5a65555bbf
05f7: OR
05f8: SWAP1
05f9: SSTORE
05fa: PUSH2 0x01c9
05fd: JUMP
05fe: JUMPDEST
05ff: POP
0600: PUSH1 0x00
0602: PUSH2 0x01cd
0605: JUMP
0606: JUMPDEST
0607: DUP3
0608: ADD
0609: SWAP2
060a: SWAP1
060b: PUSH1 0x00
060d: MSTORE
060e: PUSH1 0x20
0610: PUSH1 0x00
0612: SHA3
0613: SWAP1
0614: JUMPDEST
0615: DUP2
0616: SLOAD
0617: DUP2
0618: MSTORE
0619: SWAP1
061a: PUSH1 0x01
061c: ADD
061d: SWAP1
061e: PUSH1 0x20
0620: ADD
0621: DUP1
0622: DUP4
0623: GT
0624: PUSH2 0x0711
0627: JUMPI
0628: DUP3
0629: SWAP1
062a: SUB
062b: PUSH1 0x1f
062d: AND
062e: DUP3
062f: ADD
0630: SWAP2
0631: JUMPDEST
0632: POP
0633: POP
0634: POP
0635: POP
0636: POP
0637: DUP2
0638: JUMP
0639: JUMPDEST
063a: PUSH1 0x01
063c: PUSH1 0xa0
063e: PUSH1 0x02
0640: EXP
0641: SUB
0642: AND
0643: CALLER
0644: PUSH1 0x01
0646: PUSH1 0xa0
0648: PUSH1 0x02
064a: EXP
064b: SUB
064c: AND
064d: EQ
064e: ISZERO
064f: ISZERO
0650: PUSH2 0x0755
0653: JUMPI
0654: PUSH2 0x0002
0657: JUMP
0658: JUMPDEST
0659: DUP1
065a: PUSH1 0x03
065c: PUSH1 0x00
065e: POP
065f: SWAP1
0660: DUP1
0661: MLOAD
0662: SWAP1
0663: PUSH1 0x20
0665: ADD
0666: SWAP1
0667: DUP3
0668: DUP1
0669: SLOAD
066a: PUSH1 0x01
066c: DUP2
066d: PUSH1 0x01
066f: AND
0670: ISZERO
0671: PUSH2 0x0100
0674: MUL
0675: SUB
0676: AND
0677: PUSH1 0x02
0679: SWAP1
067a: DIV
067b: SWAP1
067c: PUSH1 0x00
067e: MSTORE
067f: PUSH1 0x20
0681: PUSH1 0x00
0683: SHA3
0684: SWAP1
0685: PUSH1 0x1f
0687: ADD
0688: PUSH1 0x20
068a: SWAP1
068b: DIV
068c: DUP2
068d: ADD
068e: SWAP3
068f: DUP3
0690: PUSH1 0x1f
0692: LT
0693: PUSH2 0x07bc
0696: JUMPI
0697: DUP1
0698: MLOAD
0699: PUSH1 0xff
069b: NOT
069c: AND
069d: DUP4
069e: DUP1
069f: ADD
06a0: OR
06a1: DUP6
06a2: SSTORE
06a3: JUMPDEST
06a4: POP
06a5: PUSH2 0x07ec
06a8: SWAP3
06a9: SWAP2
06aa: POP
06ab: JUMPDEST
06ac: DUP1
06ad: DUP3
06ae: GT
06af: ISZERO
06b0: PUSH2 0x07f6
06b3: JUMPI
06b4: PUSH1 0x00
06b6: DUP2
06b7: SSTORE
06b8: PUSH1 0x01
06ba: ADD
06bb: PUSH2 0x07a8
06be: JUMP
06bf: JUMPDEST
06c0: DUP3
06c1: DUP1
06c2: ADD
06c3: PUSH1 0x01
06c5: ADD
06c6: DUP6
06c7: SSTORE
06c8: DUP3
06c9: ISZERO
06ca: PUSH2 0x07a0
06cd: JUMPI
06ce: SWAP2
06cf: DUP3
06d0: ADD
06d1: JUMPDEST
06d2: DUP3
06d3: DUP2
06d4: GT
06d5: ISZERO
06d6: PUSH2 0x07a0
06d9: JUMPI
06da: DUP3
06db: MLOAD
06dc: DUP3
06dd: PUSH1 0x00
06df: POP
06e0: SSTORE
06e1: SWAP2
06e2: PUSH1 0x20
06e4: ADD
06e5: SWAP2
06e6: SWAP1
06e7: PUSH1 0x01
06e9: ADD
06ea: SWAP1
06eb: PUSH2 0x07ce
06ee: JUMP
06ef: JUMPDEST
06f0: POP
06f1: POP
06f2: PUSH2 0x07fa
06f5: PUSH2 0x01d6
06f8: JUMP
06f9: JUMPDEST
06fa: POP
06fb: SWAP1
06fc: JUMP
06fd: JUMPDEST
06fe: POP
06ff: POP
0700: JUMP
0701: JUMPDEST
0702: JUMP
exec
/bin/bash -lc 'command -v cast || command -v evm || command -v hevm || command -v python' in /tmp/codex-8mzp5rde
succeeded in 0ms:
/home/noahkuhn/.foundry/bin/cast
exec
/bin/bash -lc "python - <<'PY'
from pathlib import Path
import json
b=json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'][2:]
print(b[2*1230:2*1260])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
604051519695505050505050565b60408051600380546020600260018316
exec
/bin/bash -lc "python - <<'PY'
import json, subprocess, textwrap, os, tempfile
bytecode=json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full']
open('/tmp/bytecode.hex','w').write(bytecode)
PY
cast disassemble "'$(cat /tmp/bytecode.hex) | sed -n '"'1,260p'" in /tmp/codex-8mzp5rde
succeeded in 0ms:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
OSError: [Errno 30] Read-only file system: '/tmp/bytecode.hex'
cat: /tmp/bytecode.hex: No such file or directory
exec
/bin/bash -lc "python - <<'PY' | cast disassemble | sed -n '1,260p'
import json
print(json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0056
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x27dc297e
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x0058
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x41c0e1b5
00000025: EQ
00000026: PUSH2 0x0169
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x6b3fdc5a
00000030: EQ
00000031: PUSH2 0x0190
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0xa2e62045
0000003b: EQ
0000003c: PUSH2 0x01d2
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0xb7764475
00000046: EQ
00000047: PUSH2 0x04db
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0xd7c26adb
00000051: EQ
00000052: PUSH2 0x0539
00000055: JUMPI
00000056: JUMPDEST
00000057: STOP
00000058: JUMPDEST
00000059: PUSH1 0x40
0000005b: DUP1
0000005c: MLOAD
0000005d: PUSH1 0x20
0000005f: PUSH1 0x24
00000061: DUP1
00000062: CALLDATALOAD
00000063: PUSH1 0x04
00000065: DUP2
00000066: DUP2
00000067: ADD
00000068: CALLDATALOAD
00000069: PUSH1 0x1f
0000006b: DUP2
0000006c: ADD
0000006d: DUP6
0000006e: SWAP1
0000006f: DIV
00000070: DUP6
00000071: MUL
00000072: DUP7
00000073: ADD
00000074: DUP6
00000075: ADD
00000076: SWAP1
00000077: SWAP7
00000078: MSTORE
00000079: DUP6
0000007a: DUP6
0000007b: MSTORE
0000007c: PUSH2 0x0056
0000007f: SWAP6
00000080: DUP2
00000081: CALLDATALOAD
00000082: SWAP6
00000083: SWAP2
00000084: SWAP5
00000085: PUSH1 0x44
00000087: SWAP5
00000088: SWAP3
00000089: SWAP4
0000008a: SWAP1
0000008b: SWAP3
0000008c: ADD
0000008d: SWAP2
0000008e: DUP2
0000008f: SWAP1
00000090: DUP5
00000091: ADD
00000092: DUP4
00000093: DUP3
00000094: DUP1
00000095: DUP3
00000096: DUP5
00000097: CALLDATACOPY
00000098: POP
00000099: SWAP5
0000009a: SWAP7
0000009b: POP
0000009c: POP
0000009d: POP
0000009e: POP
0000009f: POP
000000a0: POP
000000a1: POP
000000a2: PUSH2 0x0736
000000a5: PUSH1 0x40
000000a7: DUP1
000000a8: MLOAD
000000a9: PUSH1 0x00
000000ab: DUP1
000000ac: SLOAD
000000ad: PUSH1 0xe0
000000af: PUSH1 0x02
000000b1: EXP
000000b2: PUSH4 0x38cc4831
000000b7: MUL
000000b8: DUP4
000000b9: MSTORE
000000ba: SWAP3
000000bb: MLOAD
000000bc: SWAP1
000000bd: SWAP3
000000be: PUSH1 0x01
000000c0: PUSH1 0xa0
000000c2: PUSH1 0x02
000000c4: EXP
000000c5: SUB
000000c6: AND
000000c7: SWAP2
000000c8: PUSH4 0x38cc4831
000000cd: SWAP2
000000ce: PUSH1 0x04
000000d0: DUP3
000000d1: DUP2
000000d2: ADD
000000d3: SWAP3
000000d4: PUSH1 0x20
000000d6: SWAP3
000000d7: SWAP2
000000d8: SWAP1
000000d9: DUP3
000000da: SWAP1
000000db: SUB
000000dc: ADD
000000dd: DUP2
000000de: DUP8
000000df: DUP8
000000e0: PUSH2 0x61da
000000e3: GAS
000000e4: SUB
000000e5: CALL
000000e6: ISZERO
000000e7: PUSH2 0x0002
000000ea: JUMPI
000000eb: POP
000000ec: POP
000000ed: PUSH1 0x40
000000ef: DUP1
000000f0: MLOAD
000000f1: DUP1
000000f2: MLOAD
000000f3: PUSH1 0x01
000000f5: DUP1
000000f6: SLOAD
000000f7: PUSH1 0x01
000000f9: PUSH1 0xa0
000000fb: PUSH1 0x02
000000fd: EXP
000000fe: SUB
000000ff: NOT
00000100: AND
00000101: SWAP1
00000102: SWAP2
00000103: OR
00000104: SWAP1
00000105: DUP2
00000106: SWAP1
00000107: SSTORE
00000108: PUSH32 0xc281d19e00000000000000000000000000000000000000000000000000000000
00000129: DUP3
0000012a: MSTORE
0000012b: SWAP2
0000012c: MLOAD
0000012d: PUSH1 0x01
0000012f: PUSH1 0xa0
00000131: PUSH1 0x02
00000133: EXP
00000134: SUB
00000135: SWAP3
00000136: SWAP1
00000137: SWAP3
00000138: AND
00000139: SWAP3
0000013a: POP
0000013b: PUSH4 0xc281d19e
00000140: SWAP2
00000141: PUSH1 0x04
00000143: DUP3
00000144: DUP2
00000145: ADD
00000146: SWAP3
00000147: PUSH1 0x20
00000149: SWAP3
0000014a: SWAP2
0000014b: SWAP1
0000014c: DUP3
0000014d: SWAP1
0000014e: SUB
0000014f: ADD
00000150: DUP2
00000151: DUP8
00000152: DUP8
00000153: PUSH2 0x61da
00000156: GAS
00000157: SUB
00000158: CALL
00000159: ISZERO
0000015a: PUSH2 0x0002
0000015d: JUMPI
0000015e: POP
0000015f: POP
00000160: PUSH1 0x40
00000162: MLOAD
00000163: MLOAD
00000164: SWAP2
00000165: POP
00000166: POP
00000167: SWAP1
00000168: JUMP
00000169: JUMPDEST
0000016a: PUSH2 0x0056
0000016d: PUSH1 0x02
0000016f: SLOAD
00000170: PUSH1 0x01
00000172: PUSH1 0xa0
00000174: PUSH1 0x02
00000176: EXP
00000177: SUB
00000178: SWAP1
00000179: DUP2
0000017a: AND
0000017b: CALLER
0000017c: SWAP1
0000017d: SWAP2
0000017e: AND
0000017f: EQ
00000180: ISZERO
00000181: PUSH2 0x07fe
00000184: JUMPI
00000185: CALLER
00000186: PUSH1 0x01
00000188: PUSH1 0xa0
0000018a: PUSH1 0x02
exec
/bin/bash -lc "python - <<'PY' | cast disassemble | sed -n '261,520p'
import json
print(json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
0000018c: EXP
0000018d: SUB
0000018e: AND
0000018f: SELFDESTRUCT
00000190: JUMPDEST
00000191: PUSH2 0x060d
00000194: PUSH1 0x04
00000196: CALLDATALOAD
00000197: PUSH1 0x00
00000199: PUSH1 0xff
0000019b: DUP3
0000019c: AND
0000019d: PUSH1 0x01
0000019f: EQ
000001a0: ISZERO
000001a1: PUSH2 0x068d
000001a4: JUMPI
000001a5: DUP1
000001a6: SLOAD
000001a7: PUSH1 0x01
000001a9: PUSH1 0xa0
000001ab: PUSH1 0x02
000001ad: EXP
000001ae: SUB
000001af: NOT
000001b0: AND
000001b1: PUSH20 0x1d11e5eae3112dbd44f99266872ff1d07c77dce8
000001c6: OR
000001c7: DUP2
000001c8: SSTORE
000001c9: JUMPDEST
000001ca: POP
000001cb: PUSH1 0x01
000001cd: JUMPDEST
000001ce: SWAP2
000001cf: SWAP1
000001d0: POP
000001d1: JUMP
000001d2: JUMPDEST
000001d3: PUSH2 0x0056
000001d6: JUMPDEST
000001d7: PUSH1 0x40
000001d9: DUP1
000001da: MLOAD
000001db: DUP1
000001dc: DUP3
000001dd: ADD
000001de: DUP3
000001df: MSTORE
000001e0: PUSH1 0x03
000001e2: DUP2
000001e3: MSTORE
000001e4: PUSH32 0x55524c0000000000000000000000000000000000000000000000000000000000
00000205: PUSH1 0x20
00000207: DUP3
00000208: DUP2
00000209: ADD
0000020a: SWAP2
0000020b: SWAP1
0000020c: SWAP2
0000020d: MSTORE
0000020e: DUP3
0000020f: MLOAD
00000210: PUSH1 0x80
00000212: DUP2
00000213: ADD
00000214: DUP5
00000215: MSTORE
00000216: PUSH1 0x4c
00000218: DUP2
00000219: MSTORE
0000021a: PUSH32 0x6a736f6e2868747470733a2f2f6170692e6b72616b656e2e636f6d2f302f7075
0000023b: DUP2
0000023c: DUP4
0000023d: ADD
0000023e: MSTORE
0000023f: PUSH32 0x626c69632f5469636b65723f706169723d455448584254292e726573756c742e
00000260: DUP2
00000261: DUP6
00000262: ADD
00000263: MSTORE
00000264: PUSH32 0x58455448585842542e632e300000000000000000000000000000000000000000
00000285: PUSH1 0x60
00000287: DUP3
00000288: ADD
00000289: MSTORE
0000028a: DUP4
0000028b: MLOAD
0000028c: PUSH1 0x00
0000028e: DUP1
0000028f: SLOAD
00000290: PUSH1 0xe0
00000292: PUSH1 0x02
00000294: EXP
00000295: PUSH4 0x38cc4831
0000029a: MUL
0000029b: DUP4
0000029c: MSTORE
0000029d: SWAP6
0000029e: MLOAD
0000029f: PUSH2 0x060a
000002a2: SWAP7
000002a3: PUSH1 0x3c
000002a5: SWAP7
000002a6: SWAP6
000002a7: SWAP3
000002a8: SWAP4
000002a9: PUSH1 0x01
000002ab: PUSH1 0xa0
000002ad: PUSH1 0x02
000002af: EXP
000002b0: SUB
000002b1: SWAP2
000002b2: SWAP1
000002b3: SWAP2
000002b4: AND
000002b5: SWAP3
000002b6: PUSH4 0x38cc4831
000002bb: SWAP3
000002bc: PUSH1 0x04
000002be: DUP4
000002bf: DUP2
000002c0: ADD
000002c1: SWAP4
000002c2: DUP3
000002c3: SWAP1
000002c4: SUB
000002c5: ADD
000002c6: DUP2
000002c7: DUP8
000002c8: DUP8
000002c9: PUSH2 0x61da
000002cc: GAS
000002cd: SUB
000002ce: CALL
000002cf: ISZERO
000002d0: PUSH2 0x0002
000002d3: JUMPI
000002d4: POP
000002d5: POP
000002d6: POP
000002d7: PUSH1 0x40
000002d9: MLOAD
000002da: DUP1
000002db: MLOAD
000002dc: SWAP1
000002dd: PUSH1 0x20
000002df: ADD
000002e0: POP
000002e1: PUSH1 0x01
000002e3: PUSH1 0x00
000002e5: PUSH2 0x0100
000002e8: EXP
000002e9: DUP2
000002ea: SLOAD
000002eb: DUP2
000002ec: PUSH1 0x01
000002ee: PUSH1 0xa0
000002f0: PUSH1 0x02
000002f2: EXP
000002f3: SUB
000002f4: MUL
000002f5: NOT
000002f6: AND
000002f7: SWAP1
000002f8: DUP4
000002f9: MUL
000002fa: OR
000002fb: SWAP1
000002fc: SSTORE
000002fd: POP
000002fe: PUSH1 0x01
00000300: PUSH1 0x00
00000302: SWAP1
00000303: SLOAD
00000304: SWAP1
00000305: PUSH2 0x0100
00000308: EXP
00000309: SWAP1
0000030a: DIV
0000030b: PUSH1 0x01
0000030d: PUSH1 0xa0
0000030f: PUSH1 0x02
00000311: EXP
00000312: SUB
00000313: AND
00000314: PUSH1 0x01
00000316: PUSH1 0xa0
00000318: PUSH1 0x02
0000031a: EXP
0000031b: SUB
0000031c: AND
0000031d: PUSH4 0xadf59f99
00000322: PUSH1 0x01
00000324: PUSH1 0x00
00000326: SWAP1
00000327: SLOAD
00000328: SWAP1
00000329: PUSH2 0x0100
0000032c: EXP
0000032d: SWAP1
0000032e: DIV
0000032f: PUSH1 0x01
00000331: PUSH1 0xa0
00000333: PUSH1 0x02
00000335: EXP
00000336: SUB
00000337: AND
00000338: PUSH1 0x01
0000033a: PUSH1 0xa0
0000033c: PUSH1 0x02
0000033e: EXP
0000033f: SUB
00000340: AND
00000341: PUSH4 0x524f3889
00000346: DUP7
00000347: PUSH1 0x40
00000349: MLOAD
0000034a: DUP3
0000034b: PUSH1 0xe0
0000034d: PUSH1 0x02
0000034f: EXP
00000350: MUL
00000351: DUP2
00000352: MSTORE
00000353: PUSH1 0x04
00000355: ADD
00000356: DUP1
00000357: DUP1
00000358: PUSH1 0x20
0000035a: ADD
0000035b: DUP3
0000035c: DUP2
0000035d: SUB
0000035e: DUP3
0000035f: MSTORE
00000360: DUP4
00000361: DUP2
00000362: DUP2
00000363: MLOAD
00000364: DUP2
00000365: MSTORE
00000366: PUSH1 0x20
00000368: ADD
00000369: SWAP2
0000036a: POP
0000036b: DUP1
0000036c: MLOAD
0000036d: SWAP1
0000036e: PUSH1 0x20
00000370: ADD
00000371: SWAP1
00000372: DUP1
00000373: DUP4
00000374: DUP4
00000375: DUP3
00000376: SWAP1
00000377: PUSH1 0x00
00000379: PUSH1 0x04
0000037b: PUSH1 0x20
exec
/bin/bash -lc "python - <<'PY' | cast disassemble | sed -n '521,780p'
import json
print(json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
0000037d: DUP5
0000037e: PUSH1 0x1f
00000380: ADD
00000381: DIV
00000382: PUSH1 0x03
00000384: MUL
00000385: PUSH1 0x0f
00000387: ADD
00000388: CALL
00000389: POP
0000038a: SWAP1
0000038b: POP
0000038c: SWAP1
0000038d: DUP2
0000038e: ADD
0000038f: SWAP1
00000390: PUSH1 0x1f
00000392: AND
00000393: DUP1
00000394: ISZERO
00000395: PUSH2 0x03b2
00000398: JUMPI
00000399: DUP1
0000039a: DUP3
0000039b: SUB
0000039c: DUP1
0000039d: MLOAD
0000039e: PUSH1 0x01
000003a0: DUP4
000003a1: PUSH1 0x20
000003a3: SUB
000003a4: PUSH2 0x0100
000003a7: EXP
000003a8: SUB
000003a9: NOT
000003aa: AND
000003ab: DUP2
000003ac: MSTORE
000003ad: PUSH1 0x20
000003af: ADD
000003b0: SWAP2
000003b1: POP
000003b2: JUMPDEST
000003b3: POP
000003b4: SWAP3
000003b5: POP
000003b6: POP
000003b7: POP
000003b8: PUSH1 0x20
000003ba: PUSH1 0x40
000003bc: MLOAD
000003bd: DUP1
000003be: DUP4
000003bf: SUB
000003c0: DUP2
000003c1: PUSH1 0x00
000003c3: DUP8
000003c4: PUSH2 0x61da
000003c7: GAS
000003c8: SUB
000003c9: CALL
000003ca: ISZERO
000003cb: PUSH2 0x0002
000003ce: JUMPI
000003cf: POP
000003d0: POP
000003d1: POP
000003d2: PUSH1 0x40
000003d4: MLOAD
000003d5: DUP1
000003d6: MLOAD
000003d7: SWAP1
000003d8: PUSH1 0x20
000003da: ADD
000003db: POP
000003dc: DUP7
000003dd: DUP7
000003de: DUP7
000003df: PUSH1 0x40
000003e1: MLOAD
000003e2: DUP6
000003e3: PUSH1 0xe0
000003e5: PUSH1 0x02
000003e7: EXP
000003e8: MUL
000003e9: DUP2
000003ea: MSTORE
000003eb: PUSH1 0x04
000003ed: ADD
000003ee: DUP1
000003ef: DUP5
000003f0: DUP2
000003f1: MSTORE
000003f2: PUSH1 0x20
000003f4: ADD
000003f5: DUP1
000003f6: PUSH1 0x20
000003f8: ADD
000003f9: DUP1
000003fa: PUSH1 0x20
000003fc: ADD
000003fd: DUP4
000003fe: DUP2
000003ff: SUB
00000400: DUP4
00000401: MSTORE
00000402: DUP6
00000403: DUP2
00000404: DUP2
00000405: MLOAD
00000406: DUP2
00000407: MSTORE
00000408: PUSH1 0x20
0000040a: ADD
0000040b: SWAP2
0000040c: POP
0000040d: DUP1
0000040e: MLOAD
0000040f: SWAP1
00000410: PUSH1 0x20
00000412: ADD
00000413: SWAP1
00000414: DUP1
00000415: DUP4
00000416: DUP4
00000417: DUP3
00000418: SWAP1
00000419: PUSH1 0x00
0000041b: PUSH1 0x04
0000041d: PUSH1 0x20
0000041f: DUP5
00000420: PUSH1 0x1f
00000422: ADD
00000423: DIV
00000424: PUSH1 0x03
00000426: MUL
00000427: PUSH1 0x0f
00000429: ADD
0000042a: CALL
0000042b: POP
0000042c: SWAP1
0000042d: POP
0000042e: SWAP1
0000042f: DUP2
00000430: ADD
00000431: SWAP1
00000432: PUSH1 0x1f
00000434: AND
00000435: DUP1
00000436: ISZERO
00000437: PUSH2 0x0454
0000043a: JUMPI
0000043b: DUP1
0000043c: DUP3
0000043d: SUB
0000043e: DUP1
0000043f: MLOAD
00000440: PUSH1 0x01
00000442: DUP4
00000443: PUSH1 0x20
00000445: SUB
00000446: PUSH2 0x0100
00000449: EXP
0000044a: SUB
0000044b: NOT
0000044c: AND
0000044d: DUP2
0000044e: MSTORE
0000044f: PUSH1 0x20
00000451: ADD
00000452: SWAP2
00000453: POP
00000454: JUMPDEST
00000455: POP
00000456: DUP4
00000457: DUP2
00000458: SUB
00000459: DUP3
0000045a: MSTORE
0000045b: DUP5
0000045c: DUP2
0000045d: DUP2
0000045e: MLOAD
0000045f: DUP2
00000460: MSTORE
00000461: PUSH1 0x20
00000463: ADD
00000464: SWAP2
00000465: POP
00000466: DUP1
00000467: MLOAD
00000468: SWAP1
00000469: PUSH1 0x20
0000046b: ADD
0000046c: SWAP1
0000046d: DUP1
0000046e: DUP4
0000046f: DUP4
00000470: DUP3
00000471: SWAP1
00000472: PUSH1 0x00
00000474: PUSH1 0x04
00000476: PUSH1 0x20
00000478: DUP5
00000479: PUSH1 0x1f
0000047b: ADD
0000047c: DIV
0000047d: PUSH1 0x03
0000047f: MUL
00000480: PUSH1 0x0f
00000482: ADD
00000483: CALL
00000484: POP
00000485: SWAP1
00000486: POP
00000487: SWAP1
00000488: DUP2
00000489: ADD
0000048a: SWAP1
0000048b: PUSH1 0x1f
0000048d: AND
0000048e: DUP1
0000048f: ISZERO
00000490: PUSH2 0x04ad
00000493: JUMPI
00000494: DUP1
00000495: DUP3
00000496: SUB
00000497: DUP1
00000498: MLOAD
00000499: PUSH1 0x01
0000049b: DUP4
0000049c: PUSH1 0x20
0000049e: SUB
0000049f: PUSH2 0x0100
000004a2: EXP
000004a3: SUB
000004a4: NOT
000004a5: AND
000004a6: DUP2
000004a7: MSTORE
000004a8: PUSH1 0x20
000004aa: ADD
000004ab: SWAP2
000004ac: POP
000004ad: JUMPDEST
000004ae: POP
000004af: SWAP6
000004b0: POP
000004b1: POP
000004b2: POP
000004b3: POP
000004b4: POP
000004b5: POP
000004b6: PUSH1 0x20
000004b8: PUSH1 0x40
000004ba: MLOAD
000004bb: DUP1
000004bc: DUP4
000004bd: SUB
exec
/bin/bash -lc "python - <<'PY' | cast disassemble | sed -n '781,1040p'
import json
print(json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
000004be: DUP2
000004bf: DUP6
000004c0: DUP9
000004c1: PUSH2 0x8502
000004c4: GAS
000004c5: SUB
000004c6: CALL
000004c7: ISZERO
000004c8: PUSH2 0x0002
000004cb: JUMPI
000004cc: POP
000004cd: POP
000004ce: PUSH1 0x40
000004d0: MLOAD
000004d1: MLOAD
000004d2: SWAP7
000004d3: SWAP6
000004d4: POP
000004d5: POP
000004d6: POP
000004d7: POP
000004d8: POP
000004d9: POP
000004da: JUMP
000004db: JUMPDEST
000004dc: PUSH1 0x40
000004de: DUP1
000004df: MLOAD
000004e0: PUSH1 0x03
000004e2: DUP1
000004e3: SLOAD
000004e4: PUSH1 0x20
000004e6: PUSH1 0x02
000004e8: PUSH1 0x01
000004ea: DUP4
000004eb: AND
000004ec: ISZERO
000004ed: PUSH2 0x0100
000004f0: MUL
000004f1: PUSH1 0x00
000004f3: NOT
000004f4: ADD
000004f5: SWAP1
000004f6: SWAP3
000004f7: AND
000004f8: SWAP2
000004f9: SWAP1
000004fa: SWAP2
000004fb: DIV
000004fc: PUSH1 0x1f
000004fe: DUP2
000004ff: ADD
00000500: DUP3
00000501: SWAP1
00000502: DIV
00000503: DUP3
00000504: MUL
00000505: DUP5
00000506: ADD
00000507: DUP3
00000508: ADD
00000509: SWAP1
0000050a: SWAP5
0000050b: MSTORE
0000050c: DUP4
0000050d: DUP4
0000050e: MSTORE
0000050f: PUSH2 0x061f
00000512: SWAP4
00000513: SWAP1
00000514: DUP4
00000515: ADD
00000516: DUP3
00000517: DUP3
00000518: DUP1
00000519: ISZERO
0000051a: PUSH2 0x072e
0000051d: JUMPI
0000051e: DUP1
0000051f: PUSH1 0x1f
00000521: LT
00000522: PUSH2 0x0703
00000525: JUMPI
00000526: PUSH2 0x0100
00000529: DUP1
0000052a: DUP4
0000052b: SLOAD
0000052c: DIV
0000052d: MUL
0000052e: DUP4
0000052f: MSTORE
00000530: SWAP2
00000531: PUSH1 0x20
00000533: ADD
00000534: SWAP2
00000535: PUSH2 0x072e
00000538: JUMP
00000539: JUMPDEST
0000053a: PUSH2 0x0056
0000053d: PUSH1 0x04
0000053f: CALLDATALOAD
00000540: PUSH1 0x00
00000542: PUSH1 0x00
00000544: SWAP1
00000545: SLOAD
00000546: SWAP1
00000547: PUSH2 0x0100
0000054a: EXP
0000054b: SWAP1
0000054c: DIV
0000054d: PUSH1 0x01
0000054f: PUSH1 0xa0
00000551: PUSH1 0x02
00000553: EXP
00000554: SUB
00000555: AND
00000556: PUSH1 0x01
00000558: PUSH1 0xa0
0000055a: PUSH1 0x02
0000055c: EXP
0000055d: SUB
0000055e: AND
0000055f: PUSH4 0x38cc4831
00000564: PUSH1 0x40
00000566: MLOAD
00000567: DUP2
00000568: PUSH1 0xe0
0000056a: PUSH1 0x02
0000056c: EXP
0000056d: MUL
0000056e: DUP2
0000056f: MSTORE
00000570: PUSH1 0x04
00000572: ADD
00000573: DUP1
00000574: SWAP1
00000575: POP
00000576: PUSH1 0x20
00000578: PUSH1 0x40
0000057a: MLOAD
0000057b: DUP1
0000057c: DUP4
0000057d: SUB
0000057e: DUP2
0000057f: PUSH1 0x00
00000581: DUP8
00000582: PUSH2 0x61da
00000585: GAS
00000586: SUB
00000587: CALL
00000588: ISZERO
00000589: PUSH2 0x0002
0000058c: JUMPI
0000058d: POP
0000058e: POP
0000058f: PUSH1 0x40
00000591: DUP1
00000592: MLOAD
00000593: DUP1
00000594: MLOAD
00000595: PUSH1 0x01
00000597: DUP1
00000598: SLOAD
00000599: PUSH1 0x01
0000059b: PUSH1 0xa0
0000059d: PUSH1 0x02
0000059f: EXP
000005a0: SUB
000005a1: NOT
000005a2: AND
000005a3: SWAP1
000005a4: SWAP2
000005a5: OR
000005a6: SWAP1
000005a7: DUP2
000005a8: SWAP1
000005a9: SSTORE
000005aa: PUSH32 0x688dcfd700000000000000000000000000000000000000000000000000000000
000005cb: DUP3
000005cc: MSTORE
000005cd: PUSH1 0x04
000005cf: DUP3
000005d0: ADD
000005d1: DUP6
000005d2: SWAP1
000005d3: MSTORE
000005d4: SWAP2
000005d5: MLOAD
000005d6: PUSH1 0x01
000005d8: PUSH1 0xa0
000005da: PUSH1 0x02
000005dc: EXP
000005dd: SUB
000005de: SWAP3
000005df: SWAP1
000005e0: SWAP3
000005e1: AND
000005e2: SWAP3
000005e3: POP
000005e4: PUSH4 0x688dcfd7
000005e9: SWAP2
000005ea: PUSH1 0x24
000005ec: DUP3
000005ed: DUP2
000005ee: ADD
000005ef: SWAP3
000005f0: PUSH1 0x00
000005f2: SWAP3
000005f3: SWAP2
000005f4: SWAP1
000005f5: DUP3
000005f6: SWAP1
000005f7: SUB
000005f8: ADD
000005f9: DUP2
000005fa: DUP4
000005fb: DUP8
000005fc: PUSH2 0x61da
000005ff: GAS
00000600: SUB
00000601: CALL
00000602: ISZERO
00000603: PUSH2 0x0002
00000606: JUMPI
00000607: POP
00000608: POP
00000609: POP
0000060a: JUMPDEST
0000060b: POP
0000060c: JUMP
0000060d: JUMPDEST
0000060e: PUSH1 0x40
00000610: DUP1
00000611: MLOAD
00000612: SWAP2
00000613: DUP3
00000614: MSTORE
00000615: MLOAD
00000616: SWAP1
00000617: DUP2
00000618: SWAP1
00000619: SUB
0000061a: PUSH1 0x20
0000061c: ADD
0000061d: SWAP1
0000061e: RETURN
0000061f: JUMPDEST
00000620: PUSH1 0x40
00000622: MLOAD
00000623: DUP1
00000624: DUP1
00000625: PUSH1 0x20
00000627: ADD
00000628: DUP3
00000629: DUP2
0000062a: SUB
0000062b: DUP3
0000062c: MSTORE
0000062d: DUP4
0000062e: DUP2
exec
/bin/bash -lc "python - <<'PY' | cast disassemble | sed -n '1041,1240p'
import json
print(json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
0000062f: DUP2
00000630: MLOAD
00000631: DUP2
00000632: MSTORE
00000633: PUSH1 0x20
00000635: ADD
00000636: SWAP2
00000637: POP
00000638: DUP1
00000639: MLOAD
0000063a: SWAP1
0000063b: PUSH1 0x20
0000063d: ADD
0000063e: SWAP1
0000063f: DUP1
00000640: DUP4
00000641: DUP4
00000642: DUP3
00000643: SWAP1
00000644: PUSH1 0x00
00000646: PUSH1 0x04
00000648: PUSH1 0x20
0000064a: DUP5
0000064b: PUSH1 0x1f
0000064d: ADD
0000064e: DIV
0000064f: PUSH1 0x03
00000651: MUL
00000652: PUSH1 0x0f
00000654: ADD
00000655: CALL
00000656: POP
00000657: SWAP1
00000658: POP
00000659: SWAP1
0000065a: DUP2
0000065b: ADD
0000065c: SWAP1
0000065d: PUSH1 0x1f
0000065f: AND
00000660: DUP1
00000661: ISZERO
00000662: PUSH2 0x067f
00000665: JUMPI
00000666: DUP1
00000667: DUP3
00000668: SUB
00000669: DUP1
0000066a: MLOAD
0000066b: PUSH1 0x01
0000066d: DUP4
0000066e: PUSH1 0x20
00000670: SUB
00000671: PUSH2 0x0100
00000674: EXP
00000675: SUB
00000676: NOT
00000677: AND
00000678: DUP2
00000679: MSTORE
0000067a: PUSH1 0x20
0000067c: ADD
0000067d: SWAP2
0000067e: POP
0000067f: JUMPDEST
00000680: POP
00000681: SWAP3
00000682: POP
00000683: POP
00000684: POP
00000685: PUSH1 0x40
00000687: MLOAD
00000688: DUP1
00000689: SWAP2
0000068a: SUB
0000068b: SWAP1
0000068c: RETURN
0000068d: JUMPDEST
0000068e: PUSH1 0xff
00000690: DUP3
00000691: AND
00000692: PUSH1 0x02
00000694: EQ
00000695: ISZERO
00000696: PUSH2 0x06c4
00000699: JUMPI
0000069a: PUSH1 0x00
0000069c: DUP1
0000069d: SLOAD
0000069e: PUSH1 0x01
000006a0: PUSH1 0xa0
000006a2: PUSH1 0x02
000006a4: EXP
000006a5: SUB
000006a6: NOT
000006a7: AND
000006a8: PUSH20 0x0ae06d5934fd75d214951eb96633fbd7f9262a7c
000006bd: OR
000006be: SWAP1
000006bf: SSTORE
000006c0: PUSH2 0x01c9
000006c3: JUMP
000006c4: JUMPDEST
000006c5: PUSH1 0xff
000006c7: DUP3
000006c8: AND
000006c9: PUSH1 0xa1
000006cb: EQ
000006cc: ISZERO
000006cd: PUSH2 0x06fb
000006d0: JUMPI
000006d1: PUSH1 0x00
000006d3: DUP1
000006d4: SLOAD
000006d5: PUSH1 0x01
000006d7: PUSH1 0xa0
000006d9: PUSH1 0x02
000006db: EXP
000006dc: SUB
000006dd: NOT
000006de: AND
000006df: PUSH20 0x20e12a1f859b3feae5fb2a0a32c18f5a65555bbf
000006f4: OR
000006f5: SWAP1
000006f6: SSTORE
000006f7: PUSH2 0x01c9
000006fa: JUMP
000006fb: JUMPDEST
000006fc: POP
000006fd: PUSH1 0x00
000006ff: PUSH2 0x01cd
00000702: JUMP
00000703: JUMPDEST
00000704: DUP3
00000705: ADD
00000706: SWAP2
00000707: SWAP1
00000708: PUSH1 0x00
0000070a: MSTORE
0000070b: PUSH1 0x20
0000070d: PUSH1 0x00
0000070f: KECCAK256
00000710: SWAP1
00000711: JUMPDEST
00000712: DUP2
00000713: SLOAD
00000714: DUP2
00000715: MSTORE
00000716: SWAP1
00000717: PUSH1 0x01
00000719: ADD
0000071a: SWAP1
0000071b: PUSH1 0x20
0000071d: ADD
0000071e: DUP1
0000071f: DUP4
00000720: GT
00000721: PUSH2 0x0711
00000724: JUMPI
00000725: DUP3
00000726: SWAP1
00000727: SUB
00000728: PUSH1 0x1f
0000072a: AND
0000072b: DUP3
0000072c: ADD
0000072d: SWAP2
0000072e: JUMPDEST
0000072f: POP
00000730: POP
00000731: POP
00000732: POP
00000733: POP
00000734: DUP2
00000735: JUMP
00000736: JUMPDEST
00000737: PUSH1 0x01
00000739: PUSH1 0xa0
0000073b: PUSH1 0x02
0000073d: EXP
0000073e: SUB
0000073f: AND
00000740: CALLER
00000741: PUSH1 0x01
00000743: PUSH1 0xa0
00000745: PUSH1 0x02
00000747: EXP
00000748: SUB
00000749: AND
0000074a: EQ
0000074b: ISZERO
0000074c: ISZERO
0000074d: PUSH2 0x0755
00000750: JUMPI
00000751: PUSH2 0x0002
00000754: JUMP
00000755: JUMPDEST
00000756: DUP1
00000757: PUSH1 0x03
00000759: PUSH1 0x00
exec
/bin/bash -lc "python - <<'PY' | cast disassemble | sed -n '1241,1360p'
import json
print(json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
0000075b: POP
0000075c: SWAP1
0000075d: DUP1
0000075e: MLOAD
0000075f: SWAP1
00000760: PUSH1 0x20
00000762: ADD
00000763: SWAP1
00000764: DUP3
00000765: DUP1
00000766: SLOAD
00000767: PUSH1 0x01
00000769: DUP2
0000076a: PUSH1 0x01
0000076c: AND
0000076d: ISZERO
0000076e: PUSH2 0x0100
00000771: MUL
00000772: SUB
00000773: AND
00000774: PUSH1 0x02
00000776: SWAP1
00000777: DIV
00000778: SWAP1
00000779: PUSH1 0x00
0000077b: MSTORE
0000077c: PUSH1 0x20
0000077e: PUSH1 0x00
00000780: KECCAK256
00000781: SWAP1
00000782: PUSH1 0x1f
00000784: ADD
00000785: PUSH1 0x20
00000787: SWAP1
00000788: DIV
00000789: DUP2
0000078a: ADD
0000078b: SWAP3
0000078c: DUP3
0000078d: PUSH1 0x1f
0000078f: LT
00000790: PUSH2 0x07bc
00000793: JUMPI
00000794: DUP1
00000795: MLOAD
00000796: PUSH1 0xff
00000798: NOT
00000799: AND
0000079a: DUP4
0000079b: DUP1
0000079c: ADD
0000079d: OR
0000079e: DUP6
0000079f: SSTORE
000007a0: JUMPDEST
000007a1: POP
000007a2: PUSH2 0x07ec
000007a5: SWAP3
000007a6: SWAP2
000007a7: POP
000007a8: JUMPDEST
000007a9: DUP1
000007aa: DUP3
000007ab: GT
000007ac: ISZERO
000007ad: PUSH2 0x07f6
000007b0: JUMPI
000007b1: PUSH1 0x00
000007b3: DUP2
000007b4: SSTORE
000007b5: PUSH1 0x01
000007b7: ADD
000007b8: PUSH2 0x07a8
000007bb: JUMP
000007bc: JUMPDEST
000007bd: DUP3
000007be: DUP1
000007bf: ADD
000007c0: PUSH1 0x01
000007c2: ADD
000007c3: DUP6
000007c4: SSTORE
000007c5: DUP3
000007c6: ISZERO
000007c7: PUSH2 0x07a0
000007ca: JUMPI
000007cb: SWAP2
000007cc: DUP3
000007cd: ADD
000007ce: JUMPDEST
000007cf: DUP3
000007d0: DUP2
000007d1: GT
000007d2: ISZERO
000007d3: PUSH2 0x07a0
000007d6: JUMPI
000007d7: DUP3
000007d8: MLOAD
000007d9: DUP3
000007da: PUSH1 0x00
000007dc: POP
000007dd: SSTORE
000007de: SWAP2
000007df: PUSH1 0x20
000007e1: ADD
000007e2: SWAP2
000007e3: SWAP1
000007e4: PUSH1 0x01
000007e6: ADD
000007e7: SWAP1
000007e8: PUSH2 0x07ce
000007eb: JUMP
000007ec: JUMPDEST
000007ed: POP
000007ee: POP
000007ef: PUSH2 0x07fa
000007f2: PUSH2 0x01d6
000007f5: JUMP
000007f6: JUMPDEST
000007f7: POP
exec
/bin/bash -lc "python - <<'PY' | cast disassemble | sed -n '1361,1405p'
import json
print(json.load(open('BYTECODE_BUNDLE.json'))['artifact']['runtime_bytecode']['full'])
PY" in /tmp/codex-8mzp5rde
succeeded in 0ms:
000007f8: SWAP1
000007f9: JUMP
000007fa: JUMPDEST
000007fb: POP
000007fc: POP
000007fd: JUMP
000007fe: JUMPDEST
000007ff: JUMP
codex
{"no_findings":false,"summary":"Bytecode-only review found unauthenticated ETH-spending external call paths, public reconfiguration of the oracle/provider target, and an owner-gated SELFDESTRUCT. Selector names are inferred only from raw selectors, so function semantics are best-effort.","findings":[{"severity":"high","category":"access_control","title":"Public entrypoints can trigger non-zero-value external calls from contract balance","exploit_scenario":"Selectors `0xa2e62045` and `0xd7c26adb` are externally callable without any detected guard and drive multiple `CALL` sites. An attacker can repeatedly invoke these paths to force the contract to pay external fees or otherwise transfer ETH out of the contract. Exact recipient/value semantics are uncertain from bytecode alone, but the artifact validator confirmed varying call targets and possible non-zero ETH transfer.","recommendation":"Restrict fee-spending/query-triggering functions to an authorized role, or require the caller to fund the operation explicitly via `msg.value`. Add rate limits/accounting so repeated public calls cannot drain contract ETH.","evidence":"`auth.guards` is empty. The dispatcher sends `0xa2e62045` to `pc 0x01d2` and `0xd7c26adb` to `pc 0x0539`; these paths reach `CALL` instructions at `pc 0x02ce`, `0x03c9`, `0x04c6`, `0x0587`, and `0x0601`. `detector_findings` validated both `Untrusted CALL target/value reachable` and `ETH value transfer possible`, with observed targets including `0x1d11e5eae3112dbd44f99266872ff1d07c77dce8`, `0x6f28b146804dba2d6f944c03528a8fdbc673df2c`, and the contract itself.","locations":["selector:0xa2e62045","selector:0xd7c26adb","pc:0x02ce","pc:0x03c9","pc:0x04c6","pc:0x0587","pc:0x0601"]},{"severity":"medium","category":"oracle","title":"Oracle/provider selection is publicly reconfigurable","exploit_scenario":"Any caller can invoke selector `0x6b3fdc5a` and switch slot `0x0` among multiple hardcoded external addresses. Because slot `0x0` is later used as the target for outbound calls, an attacker can grief the system by forcing it onto an unexpected/deprecated provider or resolver, causing failed updates or dependence on a weaker endpoint.","recommendation":"Make the provider/resolver immutable after deployment, or restrict reconfiguration to a trusted admin with clear events and preferably a timelock. If multiple providers are required, validate liveness/integrity before switching.","evidence":"At `selector 0x6b3fdc5a` (`pc 0x0190`), the code writes hardcoded addresses into storage slot `0x0` via `SSTORE` at `pc 0x01c8`, `0x06bf`, and `0x06f6` for argument values `0x01`, `0x02`, and `0xa1`. Slot `0x0` is then read immediately before outbound calls at `pc 0x00ac/0x00e5`, `0x028f/0x02ce`, and `0x0545/0x0587`. No access-control check appears on this setter path.","locations":["selector:0x6b3fdc5a","pc:0x01c8","pc:0x06bf","pc:0x06f6","pc:0x00e5","pc:0x02ce","pc:0x0587"]},{"severity":"low","category":"other","title":"Privileged kill-switch can selfdestruct the contract and sweep ETH","exploit_scenario":"Whoever controls the address stored in slot `0x2` can destroy the contract and send its remaining ETH balance to themselves. If that key is compromised or governance is weaker than expected, the contract can be permanently disabled and funds removed.","recommendation":"Remove `SELFDESTRUCT` if the contract is meant to be long-lived. If a break-glass path is required, protect it with stronger governance such as a timelock and multisig, and document the operational assumptions.","evidence":"Selector `0x41c0e1b5` jumps to `pc 0x0169`, loads slot `0x2`, compares it to `CALLER`, and executes `SELFDESTRUCT` at `pc 0x018f` on success. The bundle heuristics also flag `selfdestruct_present`. With runtime bytecode only, the provenance and rotation model for slot `0x2` cannot be verified.","locations":["selector:0x41c0e1b5","pc:0x016f","pc:0x018f"]}]}
tokens used
63,764
{
"codex": {
"ran_at": "2026-04-05T02:21:04.587390+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 4098,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode-only review found unauthenticated ETH-spending external call paths, public reconfiguration of the oracle/provider target, and an owner-gated SELFDESTRUCT. Selector names are inferred only from raw selectors, so function semantics are best-effort.",
"raw_final": {
"summary": "Bytecode-only review found unauthenticated ETH-spending external call paths, public reconfiguration of the oracle/provider target, and an owner-gated SELFDESTRUCT. Selector names are inferred only from raw selectors, so function semantics are best-effort.",
"findings": [
{
"title": "Public entrypoints can trigger non-zero-value external calls from contract balance",
"category": "access_control",
"evidence": "`auth.guards` is empty. The dispatcher sends `0xa2e62045` to `pc 0x01d2` and `0xd7c26adb` to `pc 0x0539`; these paths reach `CALL` instructions at `pc 0x02ce`, `0x03c9`, `0x04c6`, `0x0587`, and `0x0601`. `detector_findings` validated both `Untrusted CALL target/value reachable` and `ETH value transfer possible`, with observed targets including `0x1d11e5eae3112dbd44f99266872ff1d07c77dce8`, `0x6f28b146804dba2d6f944c03528a8fdbc673df2c`, and the contract itself.",
"severity": "high",
"locations": [
"selector:0xa2e62045",
"selector:0xd7c26adb",
"pc:0x02ce",
"pc:0x03c9",
"pc:0x04c6",
"pc:0x0587",
"pc:0x0601"
],
"recommendation": "Restrict fee-spending/query-triggering functions to an authorized role, or require the caller to fund the operation explicitly via `msg.value`. Add rate limits/accounting so repeated public calls cannot drain contract ETH.",
"exploit_scenario": "Selectors `0xa2e62045` and `0xd7c26adb` are externally callable without any detected guard and drive multiple `CALL` sites. An attacker can repeatedly invoke these paths to force the contract to pay external fees or otherwise transfer ETH out of the contract. Exact recipient/value semantics are uncertain from bytecode alone, but the artifact validator confirmed varying call targets and possible non-zero ETH transfer."
},
{
"title": "Oracle/provider selection is publicly reconfigurable",
"category": "oracle",
"evidence": "At `selector 0x6b3fdc5a` (`pc 0x0190`), the code writes hardcoded addresses into storage slot `0x0` via `SSTORE` at `pc 0x01c8`, `0x06bf`, and `0x06f6` for argument values `0x01`, `0x02`, and `0xa1`. Slot `0x0` is then read immediately before outbound calls at `pc 0x00ac/0x00e5`, `0x028f/0x02ce`, and `0x0545/0x0587`. No access-control check appears on this setter path.",
"severity": "medium",
"locations": [
"selector:0x6b3fdc5a",
"pc:0x01c8",
"pc:0x06bf",
"pc:0x06f6",
"pc:0x00e5",
"pc:0x02ce",
"pc:0x0587"
],
"recommendation": "Make the provider/resolver immutable after deployment, or restrict reconfiguration to a trusted admin with clear events and preferably a timelock. If multiple providers are required, validate liveness/integrity before switching.",
"exploit_scenario": "Any caller can invoke selector `0x6b3fdc5a` and switch slot `0x0` among multiple hardcoded external addresses. Because slot `0x0` is later used as the target for outbound calls, an attacker can grief the system by forcing it onto an unexpected/deprecated provider or resolver, causing failed updates or dependence on a weaker endpoint."
},
{
"title": "Privileged kill-switch can selfdestruct the contract and sweep ETH",
"category": "other",
"evidence": "Selector `0x41c0e1b5` jumps to `pc 0x0169`, loads slot `0x2`, compares it to `CALLER`, and executes `SELFDESTRUCT` at `pc 0x018f` on success. The bundle heuristics also flag `selfdestruct_present`. With runtime bytecode only, the provenance and rotation model for slot `0x2` cannot be verified.",
"severity": "low",
"locations": [
"selector:0x41c0e1b5",
"pc:0x016f",
"pc:0x018f"
],
"recommendation": "Remove `SELFDESTRUCT` if the contract is meant to be long-lived. If a break-glass path is required, protect it with stronger governance such as a timelock and multisig, and document the operational assumptions.",
"exploit_scenario": "Whoever controls the address stored in slot `0x2` can destroy the contract and send its remaining ETH balance to themselves. If that key is compromised or governance is weaker than expected, the contract can be permanently disabled and funds removed."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0056 0000000a: JUMPI 0000000b: PUSH1 0xe0 0000000d: PUSH1 0x02 0000000f: EXP 00000010: PUSH1 0x00 00000012: CALLDATALOAD 00000013: DIV 00000014: PUSH4 0x27dc297e 00000019: DUP2 0000001a: EQ 0000001b: PUSH2 0x0058 0000001e: JUMPI 0000001f: DUP1 00000020: PUSH4 0x41c0e1b5 00000025: EQ 00000026: PUSH2 0x0169 00000029: JUMPI 0000002a: DUP1 0000002b: PUSH4 0x6b3fdc5a 00000030: EQ 00000031: PUSH2 0x0190 00000034: JUMPI 00000035: DUP1 00000036: PUSH4 0xa2e62045 0000003b: EQ 0000003c: PUSH2 0x01d2 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0xb7764475 00000046: EQ 00000047: PUSH2 0x04db 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0xd7c26adb 00000051: EQ 00000052: PUSH2 0x0539 00000055: JUMPI 00000056: JUMPDEST 00000057: STOP 00000058: JUMPDEST 00000059: PUSH1 0x40 0000005b: DUP1 0000005c: MLOAD 0000005d: PUSH1 0x20 0000005f: PUSH1 0x24 00000061: DUP1 00000062: CALLDATALOAD 00000063: PUSH1 0x04 00000065: DUP2 00000066: DUP2 00000067: ADD 00000068: CALLDATALOAD 00000069: PUSH1 0x1f 0000006b: DUP2 0000006c: ADD 0000006d: DUP6 0000006e: SWAP1 0000006f: DIV 00000070: DUP6 00000071: MUL 00000072: DUP7 00000073: ADD 00000074: DUP6 00000075: ADD 00000076: SWAP1 00000077: SWAP7 00000078: MSTORE 00000079: DUP6 0000007a: DUP6 0000007b: MSTORE 0000007c: PUSH2 0x0056 0000007f: SWAP6 00000080: DUP2 00000081: CALLDATALOAD 00000082: SWAP6 00000083: SWAP2 00000084: SWAP5 00000085: PUSH1 0x44 00000087: SWAP5 00000088: SWAP3 00000089: SWAP4 0000008a: SWAP1 0000008b: SWAP3 0000008c: ADD 0000008d: SWAP2 0000008e: DUP2 0000008f: SWAP1 00000090: DUP5 00000091: ADD 00000092: DUP4 00000093: DUP3 00000094: DUP1 00000095: DUP3 00000096: DUP5 00000097: CALLDATACOPY 00000098: POP 00000099: SWAP5 0000009a: SWAP7 0000009b: POP 0000009c: POP 0000009d: POP 0000009e: POP 0000009f: POP 000000a0: POP 000000a1: POP 000000a2: PUSH2 0x0736 000000a5: PUSH1 0x40 000000a7: DUP1 000000a8: MLOAD 000000a9: PUSH1 0x00 000000ab: DUP1 000000ac: SLOAD 000000ad: PUSH1 0xe0 000000af: PUSH1 0x02 000000b1: EXP 000000b2: PUSH4 0x38cc4831 000000b7: MUL 000000b8: DUP4 000000b9: MSTORE 000000ba: SWAP3 000000bb: MLOAD 000000bc: SWAP1 000000bd: SWAP3 000000be: PUSH1 0x01 000000c0: PUSH1 0xa0 000000c2: PUSH1 0x02 000000c4: EXP 000000c5: SUB 000000c6: AND 000000c7: SWAP2 000000c8: PUSH4 0x38cc4831 000000cd: SWAP2 000000ce: PUSH1 0x04 000000d0: DUP3 000000d1: DUP2 000000d2: ADD 000000d3: SWAP3 000000d4: PUSH1 0x20 000000d6: SWAP3 000000d7: SWAP2 000000d8: SWAP1 000000d9: DUP3 000000da: SWAP1 000000db: SUB 000000dc: ADD 000000dd: DUP2 000000de: DUP8 000000df: DUP8 000000e0: PUSH2 0x61da 000000e3: GAS 000000e4: SUB 000000e5: CALL 000000e6: ISZERO 000000e7: PUSH2 0x0002 000000ea: JUMPI 000000eb: POP 000000ec: POP 000000ed: PUSH1 0x40 000000ef: DUP1 000000f0: MLOAD 000000f1: DUP1 000000f2: MLOAD 000000f3: PUSH1 0x01 000000f5: DUP1 000000f6: SLOAD 000000f7: PUSH1 0x01 000000f9: PUSH1 0xa0 000000fb: PUSH1 0x02 000000fd: EXP 000000fe: SUB 000000ff: NOT 00000100: AND 00000101: SWAP1 00000102: SWAP2 00000103: OR 00000104: SWAP1 00000105: DUP2 00000106: SWAP1 00000107: SSTORE 00000108: PUSH32 0xc281d19e00000000000000000000000000000000000000000000000000000000 00000129: DUP3 0000012a: MSTORE 0000012b: SWAP2 0000012c: MLOAD 0000012d: PUSH1 0x01 0000012f: PUSH1 0xa0 00000131: PUSH1 0x02 00000133: EXP 00000134: SUB 00000135: SWAP3 00000136: SWAP1 00000137: SWAP3 00000138: AND 00000139: SWAP3 0000013a: POP 0000013b: PUSH4 0xc281d19e 00000140: SWAP2 00000141: PUSH1 0x04 00000143: DUP3 00000144: DUP2 00000145: ADD 00000146: SWAP3 00000147: PUSH1 0x20 00000149: SWAP3 0000014a: SWAP2 0000014b: SWAP1 0000014c: DUP3 0000014d: SWAP1 0000014e: SUB 0000014f: ADD 00000150: DUP2 00000151: DUP8 00000152: DUP8 00000153: PUSH2 0x61da 00000156: GAS 00000157: SUB 00000158: CALL 00000159: ISZERO 0000015a: PUSH2 0x0002 0000015d: JUMPI 0000015e: POP 0000015f: POP 00000160: PUSH1 0x40 00000162: MLOAD 00000163: MLOAD 00000164: SWAP2 00000165: POP 00000166: POP 00000167: SWAP1 00000168: JUMP 00000169: JUMPDEST 0000016a: PUSH2 0x0056 0000016d: PUSH1 0x02 0000016f: SLOAD 00000170: PUSH1 0x01 00000172: PUSH1 0xa0 00000174: PUSH1 0x02 00000176: EXP 00000177: SUB 00000178: SWAP1 00000179: DUP2 0000017a: AND 0000017b: CALLER 0000017c: SWAP1 0000017d: SWAP2 0000017e: AND 0000017f: EQ 00000180: ISZERO 00000181: PUSH2 0x07fe 00000184: JUMPI 00000185: CALLER 00000186: PUSH1 0x01 00000188: PUSH1 0xa0 0000018a: PUSH1 0x02 0000018c: EXP 0000018d: SUB 0000018e: AND 0000018f: SELFDESTRUCT 00000190: JUMPDEST 00000191: PUSH2 0x060d 00000194: PUSH1 0x04 00000196: CALLDATALOAD 00000197: PUSH1 0x00 00000199: PUSH1 0xff 0000019b: DUP3 0000019c: AND 0000019d: PUSH1 0x01 0000019f: EQ 000001a0: ISZERO 000001a1: PUSH2 0x068d 000001a4: JUMPI 000001a5: DUP1 000001a6: SLOAD 000001a7: PUSH1 0x01 000001a9: PUSH1 0xa0 000001ab: PUSH1 0x02 000001ad: EXP 000001ae: SUB 000001af: NOT 000001b0: AND 000001b1: PUSH20 0x1d11e5eae3112dbd44f99266872ff1d07c77dce8 000001c6: OR 000001c7: DUP2 000001c8: SSTORE 000001c9: JUMPDEST 000001ca: POP 000001cb: PUSH1 0x01 000001cd: JUMPDEST 000001ce: SWAP2 000001cf: SWAP1 000001d0: POP 000001d1: JUMP 000001d2: JUMPDEST 000001d3: PUSH2 0x0056 000001d6: JUMPDEST 000001d7: PUSH1 0x40 000001d9: DUP1 000001da: MLOAD 000001db: DUP1 000001dc: DUP3 000001dd: ADD 000001de: DUP3 000001df: MSTORE 000001e0: PUSH1 0x03 000001e2: DUP2 000001e3: MSTORE 000001e4: PUSH32 0x55524c0000000000000000000000000000000000000000000000000000000000 00000205: PUSH1 0x20 00000207: DUP3 00000208: DUP2 00000209: ADD 0000020a: SWAP2 0000020b: SWAP1 0000020c: SWAP2 0000020d: MSTORE 0000020e: DUP3 0000020f: MLOAD 00000210: PUSH1 0x80 00000212: DUP2 00000213: ADD 00000214: DUP5 00000215: MSTORE 00000216: PUSH1 0x4c 00000218: DUP2 00000219: MSTORE 0000021a: PUSH32 0x6a736f6e2868747470733a2f2f6170692e6b72616b656e2e636f6d2f302f7075 0000023b: DUP2 0000023c: DUP4 0000023d: ADD 0000023e: MSTORE 0000023f: PUSH32 0x626c69632f5469636b65723f706169723d455448584254292e726573756c742e 00000260: DUP2 00000261: DUP6 00000262: ADD 00000263: MSTORE 00000264: PUSH32 0x58455448585842542e632e300000000000000000000000000000000000000000 00000285: PUSH1 0x60 00000287: DUP3 00000288: ADD 00000289: MSTORE 0000028a: DUP4 0000028b: MLOAD 0000028c: PUSH1 0x00 0000028e: DUP1 0000028f: SLOAD 00000290: PUSH1 0xe0 00000292: PUSH1 0x02 00000294: EXP 00000295: PUSH4 0x38cc4831 0000029a: MUL 0000029b: DUP4 0000029c: MSTORE 0000029d: SWAP6 0000029e: MLOAD 0000029f: PUSH2 0x060a 000002a2: SWAP7 000002a3: PUSH1 0x3c 000002a5: SWAP7 000002a6: SWAP6 000002a7: SWAP3 000002a8: SWAP4 000002a9: PUSH1 0x01 000002ab: PUSH1 0xa0 000002ad: PUSH1 0x02 000002af: EXP 000002b0: SUB 000002b1: SWAP2 000002b2: SWAP1 000002b3: SWAP2 000002b4: AND 000002b5: SWAP3 000002b6: PUSH4 0x38cc4831 000002bb: SWAP3 000002bc: PUSH1 0x04 000002be: DUP4 000002bf: DUP2 000002c0: ADD 000002c1: SWAP4 000002c2: DUP3 000002c3: SWAP1 000002c4: SUB 000002c5: ADD 000002c6: DUP2 000002c7: DUP8 000002c8: DUP8 000002c9: PUSH2 0x61da 000002cc: GAS 000002cd: SUB 000002ce: CALL 000002cf: ISZERO 000002d0: PUSH2 0x0002 000002d3: JUMPI 000002d4: POP 000002d5: POP 000002d6: POP 000002d7: PUSH1 0x40 000002d9: MLOAD 000002da: DUP1 000002db: MLOAD 000002dc: SWAP1 000002dd: PUSH1 0x20 000002df: ADD 000002e0: POP 000002e1: PUSH1 0x01 000002e3: PUSH1 0x00 000002e5: PUSH2 0x0100 000002e8: EXP 000002e9: DUP2 000002ea: SLOAD 000002eb: DUP2 000002ec: PUSH1 0x01 000002ee: PUSH1 0xa0 000002f0: PUSH1 0x02 000002f2: EXP 000002f3: SUB 000002f4: MUL 000002f5: NOT 000002f6: AND 000002f7: SWAP1 000002f8: DUP4 000002f9: MUL 000002fa: OR 000002fb: SWAP1 000002fc: SSTORE 000002fd: POP 000002fe: PUSH1 0x01 00000300: PUSH1 0x00 00000302: SWAP1 00000303: SLOAD 00000304: SWAP1 00000305: PUSH2 0x0100 00000308: EXP 00000309: SWAP1 0000030a: DIV 0000030b: PUSH1 0x01 0000030d: PUSH1 0xa0 0000030f: PUSH1 0x02 00000311: EXP 00000312: SUB 00000313: AND 00000314: PUSH1 0x01 00000316: PUSH1 0xa0 00000318: PUSH1 0x02 0000031a: EXP 0000031b: SUB 0000031c: AND 0000031d: PUSH4 0xadf59f99 00000322: PUSH1 0x01 00000324: PUSH1 0x00 00000326: SWAP1 00000327: SLOAD 00000328: SWAP1 00000329: PUSH2 0x0100 0000032c: EXP 0000032d: SWAP1 0000032e: DIV 0000032f: PUSH1 0x01 00000331: PUSH1 0xa0 00000333: PUSH1 0x02 00000335: EXP 00000336: SUB 00000337: AND 00000338: PUSH1 0x01 0000033a: PUSH1 0xa0 0000033c: PUSH1 0x02 0000033e: EXP 0000033f: SUB 00000340: AND 00000341: PUSH4 0x524f3889 00000346: DUP7 00000347: PUSH1 0x40 00000349: MLOAD 0000034a: DUP3 0000034b: PUSH1 0xe0 0000034d: PUSH1 0x02 0000034f: EXP 00000350: MUL 00000351: DUP2 00000352: MSTORE 00000353: PUSH1 0x04 00000355: ADD 00000356: DUP1 00000357: DUP1 00000358: PUSH1 0x20 0000035a: ADD 0000035b: DUP3 0000035c: DUP2 0000035d: SUB 0000035e: DUP3 0000035f: MSTORE 00000360: DUP4 00000361: DUP2 00000362: DUP2 00000363: MLOAD 00000364: DUP2 00000365: MSTORE 00000366: PUSH1 0x20 00000368: ADD 00000369: SWAP2 0000036a: POP 0000036b: DUP1 0000036c: MLOAD 0000036d: SWAP1 0000036e: PUSH1 0x20 00000370: ADD 00000371: SWAP1 00000372: DUP1 00000373: DUP4 00000374: DUP4 00000375: DUP3 00000376: SWAP1 00000377: PUSH1 0x00 00000379: PUSH1 0x04 0000037b: PUSH1 0x20 0000037d: DUP5 0000037e: PUSH1 0x1f 00000380: ADD 00000381: DIV 00000382: PUSH1 0x03 00000384: MUL 00000385: PUSH1 0x0f 00000387: ADD 00000388: CALL 00000389: POP 0000038a: SWAP1 0000038b: POP 0000038c: SWAP1 0000038d: DUP2 0000038e: ADD 0000038f: SWAP1 00000390: PUSH1 0x1f 00000392: AND 00000393: DUP1 00000394: ISZERO 00000395: PUSH2 0x03b2 00000398: JUMPI 00000399: DUP1 0000039a: DUP3 0000039b: SUB 0000039c: DUP1 0000039d: MLOAD 0000039e: PUSH1 0x01 000003a0: DUP4 000003a1: PUSH1 0x20 000003a3: SUB 000003a4: PUSH2 0x0100 000003a7: EXP 000003a8: SUB 000003a9: NOT 000003aa: AND 000003ab: DUP2 000003ac: MSTORE 000003ad: PUSH1 0x20 000003af: ADD 000003b0: SWAP2 000003b1: POP 000003b2: JUMPDEST 000003b3: POP 000003b4: SWAP3 000003b5: POP 000003b6: POP 000003b7: POP 000003b8: PUSH1 0x20 000003ba: PUSH1 0x40 000003bc: MLOAD 000003bd: DUP1 000003be: DUP4 000003bf: SUB 000003c0: DUP2 000003c1: PUSH1 0x00 000003c3: DUP8 000003c4: PUSH2 0x61da 000003c7: GAS 000003c8: SUB 000003c9: CALL 000003ca: ISZERO 000003cb: PUSH2 0x0002 000003ce: JUMPI 000003cf: POP 000003d0: POP 000003d1: POP 000003d2: PUSH1 0x40 000003d4: MLOAD 000003d5: DUP1 000003d6: MLOAD 000003d7: SWAP1 000003d8: PUSH1 0x20 000003da: ADD 000003db: POP 000003dc: DUP7 000003dd: DUP7 000003de: DUP7 000003df: PUSH1 0x40 000003e1: MLOAD 000003e2: DUP6 000003e3: PUSH1 0xe0 000003e5: PUSH1 0x02 000003e7: EXP 000003e8: MUL 000003e9: DUP2 000003ea: MSTORE 000003eb: PUSH1 0x04 000003ed: ADD 000003ee: DUP1 000003ef: DUP5 000003f0: DUP2 000003f1: MSTORE 000003f2: PUSH1 0x20 000003f4: ADD 000003f5: DUP1 000003f6: PUSH1 0x20 000003f8: ADD 000003f9: DUP1 000003fa: PUSH1 0x20 000003fc: ADD 000003fd: DUP4 000003fe: DUP2 000003ff: SUB 00000400: DUP4 00000401: MSTORE 00000402: DUP6 00000403: DUP2 00000404: DUP2 00000405: MLOAD 00000406: DUP2 00000407: MSTORE 00000408: PUSH1 0x20 0000040a: ADD 0000040b: SWAP2 0000040c: POP 0000040d: DUP1 0000040e: MLOAD 0000040f: SWAP1 00000410: PUSH1 0x20 00000412: ADD 00000413: SWAP1 00000414: DUP1 00000415: DUP4 00000416: DUP4 00000417: DUP3 00000418: SWAP1 00000419: PUSH1 0x00 0000041b: PUSH1 0x04 0000041d: PUSH1 0x20 0000041f: DUP5 00000420: PUSH1 0x1f 00000422: ADD 00000423: DIV 00000424: PUSH1 0x03 00000426: MUL 00000427: PUSH1 0x0f 00000429: ADD 0000042a: CALL 0000042b: POP 0000042c: SWAP1 0000042d: POP 0000042e: SWAP1 0000042f: DUP2 00000430: ADD 00000431: SWAP1 00000432: PUSH1 0x1f 00000434: AND 00000435: DUP1 00000436: ISZERO 00000437: PUSH2 0x0454 0000043a: JUMPI 0000043b: DUP1 0000043c: DUP3 0000043d: SUB 0000043e: DUP1 0000043f: MLOAD 00000440: PUSH1 0x01 00000442: DUP4 00000443: PUSH1 0x20 00000445: SUB 00000446: PUSH2 0x0100 00000449: EXP 0000044a: SUB 0000044b: NOT 0000044c: AND 0000044d: DUP2 0000044e: MSTORE 0000044f: PUSH1 0x20 00000451: ADD 00000452: SWAP2 00000453: POP 00000454: JUMPDEST 00000455: POP 00000456: DUP4 00000457: DUP2 00000458: SUB 00000459: DUP3 0000045a: MSTORE 0000045b: DUP5 0000045c: DUP2 0000045d: DUP2 0000045e: MLOAD 0000045f: DUP2 00000460: MSTORE 00000461: PUSH1 0x20 00000463: ADD 00000464: SWAP2 00000465: POP 00000466: DUP1 00000467: MLOAD 00000468: SWAP1 00000469: PUSH1 0x20 0000046b: ADD 0000046c: SWAP1 0000046d: DUP1 0000046e: DUP4 0000046f: DUP4 00000470: DUP3 00000471: SWAP1 00000472: PUSH1 0x00 00000474: PUSH1 0x04 00000476: PUSH1 0x20 00000478: DUP5 00000479: PUSH1 0x1f 0000047b: ADD 0000047c: DIV 0000047d: PUSH1 0x03 0000047f: MUL 00000480: PUSH1 0x0f 00000482: ADD 00000483: CALL 00000484: POP 00000485: SWAP1 00000486: POP 00000487: SWAP1 00000488: DUP2 00000489: ADD 0000048a: SWAP1 0000048b: PUSH1 0x1f 0000048d: AND 0000048e: DUP1 0000048f: ISZERO 00000490: PUSH2 0x04ad 00000493: JUMPI 00000494: DUP1 00000495: DUP3 00000496: SUB 00000497: DUP1 00000498: MLOAD 00000499: PUSH1 0x01 0000049b: DUP4 0000049c: PUSH1 0x20 0000049e: SUB 0000049f: PUSH2 0x0100 000004a2: EXP 000004a3: SUB 000004a4: NOT 000004a5: AND 000004a6: DUP2 000004a7: MSTORE 000004a8: PUSH1 0x20 000004aa: ADD 000004ab: SWAP2 000004ac: POP 000004ad: JUMPDEST 000004ae: POP 000004af: SWAP6 000004b0: POP 000004b1: POP 000004b2: POP 000004b3: POP 000004b4: POP 000004b5: POP 000004b6: PUSH1 0x20 000004b8: PUSH1 0x40 000004ba: MLOAD 000004bb: DUP1 000004bc: DUP4 000004bd: SUB 000004be: DUP2 000004bf: DUP6 000004c0: DUP9 000004c1: PUSH2 0x8502 000004c4: GAS 000004c5: SUB 000004c6: CALL 000004c7: ISZERO 000004c8: PUSH2 0x0002 000004cb: JUMPI 000004cc: POP 000004cd: POP 000004ce: PUSH1 0x40 000004d0: MLOAD 000004d1: MLOAD 000004d2: SWAP7 000004d3: SWAP6 000004d4: POP 000004d5: POP 000004d6: POP 000004d7: POP 000004d8: POP 000004d9: POP 000004da: JUMP 000004db: JUMPDEST 000004dc: PUSH1 0x40 000004de: DUP1 000004df: MLOAD 000004e0: PUSH1 0x03 000004e2: DUP1 000004e3: SLOAD 000004e4: PUSH1 0x20 000004e6: PUSH1 0x02 000004e8: PUSH1 0x01 000004ea: DUP4 000004eb: AND 000004ec: ISZERO 000004ed: PUSH2 0x0100 000004f0: MUL 000004f1: PUSH1 0x00 000004f3: NOT 000004f4: ADD 000004f5: SWAP1 000004f6: SWAP3 000004f7: AND 000004f8: SWAP2 000004f9: SWAP1 000004fa: SWAP2 000004fb: DIV 000004fc: PUSH1 0x1f 000004fe: DUP2 000004ff: ADD 00000500: DUP3 00000501: SWAP1 00000502: DIV 00000503: DUP3 00000504: MUL 00000505: DUP5 00000506: ADD 00000507: DUP3 00000508: ADD 00000509: SWAP1 0000050a: SWAP5 0000050b: MSTORE 0000050c: DUP4 0000050d: DUP4 0000050e: MSTORE 0000050f: PUSH2 0x061f 00000512: SWAP4 00000513: SWAP1 00000514: DUP4 00000515: ADD 00000516: DUP3 00000517: DUP3 00000518: DUP1 00000519: ISZERO 0000051a: PUSH2 0x072e 0000051d: JUMPI 0000051e: DUP1 0000051f: PUSH1 0x1f 00000521: LT 00000522: PUSH2 0x0703 00000525: JUMPI 00000526: PUSH2 0x0100 00000529: DUP1 0000052a: DUP4 0000052b: SLOAD 0000052c: DIV 0000052d: MUL 0000052e: DUP4 0000052f: MSTORE 00000530: SWAP2 00000531: PUSH1 0x20 00000533: ADD 00000534: SWAP2 00000535: PUSH2 0x072e 00000538: JUMP 00000539: JUMPDEST 0000053a: PUSH2 0x0056 0000053d: PUSH1 0x04 0000053f: CALLDATALOAD 00000540: PUSH1 0x00 00000542: PUSH1 0x00 00000544: SWAP1 00000545: SLOAD 00000546: SWAP1 00000547: PUSH2 0x0100 0000054a: EXP 0000054b: SWAP1 0000054c: DIV 0000054d: PUSH1 0x01 0000054f: PUSH1 0xa0 00000551: PUSH1 0x02 00000553: EXP 00000554: SUB 00000555: AND 00000556: PUSH1 0x01 00000558: PUSH1 0xa0 0000055a: PUSH1 0x02 0000055c: EXP 0000055d: SUB 0000055e: AND 0000055f: PUSH4 0x38cc4831 00000564: PUSH1 0x40 00000566: MLOAD 00000567: DUP2 00000568: PUSH1 0xe0 0000056a: PUSH1 0x02 0000056c: EXP 0000056d: MUL 0000056e: DUP2 0000056f: MSTORE 00000570: PUSH1 0x04 00000572: ADD 00000573: DUP1 00000574: SWAP1 00000575: POP 00000576: PUSH1 0x20 00000578: PUSH1 0x40 0000057a: MLOAD 0000057b: DUP1 0000057c: DUP4 0000057d: SUB 0000057e: DUP2 0000057f: PUSH1 0x00 00000581: DUP8 00000582: PUSH2 0x61da 00000585: GAS 00000586: SUB 00000587: CALL 00000588: ISZERO 00000589: PUSH2 0x0002 0000058c: JUMPI 0000058d: POP 0000058e: POP 0000058f: PUSH1 0x40 00000591: DUP1 00000592: MLOAD 00000593: DUP1 00000594: MLOAD 00000595: PUSH1 0x01 00000597: DUP1 00000598: SLOAD 00000599: PUSH1 0x01 0000059b: PUSH1 0xa0 0000059d: PUSH1 0x02 0000059f: EXP 000005a0: SUB 000005a1: NOT 000005a2: AND 000005a3: SWAP1 000005a4: SWAP2 000005a5: OR 000005a6: SWAP1 000005a7: DUP2 000005a8: SWAP1 000005a9: SSTORE 000005aa: PUSH32 0x688dcfd700000000000000000000000000000000000000000000000000000000 000005cb: DUP3 000005cc: MSTORE 000005cd: PUSH1 0x04 000005cf: DUP3 000005d0: ADD 000005d1: DUP6 000005d2: SWAP1 000005d3: MSTORE 000005d4: SWAP2 000005d5: MLOAD 000005d6: PUSH1 0x01 000005d8: PUSH1 0xa0 000005da: PUSH1 0x02 000005dc: EXP 000005dd: SUB 000005de: SWAP3 000005df: SWAP1 000005e0: SWAP3 000005e1: AND 000005e2: SWAP3 000005e3: POP 000005e4: PUSH4 0x688dcfd7 000005e9: SWAP2 000005ea: PUSH1 0x24 000005ec: DUP3 000005ed: DUP2 000005ee: ADD 000005ef: SWAP3 000005f0: PUSH1 0x00 000005f2: SWAP3 000005f3: SWAP2 000005f4: SWAP1 000005f5: DUP3 000005f6: SWAP1 000005f7: SUB 000005f8: ADD 000005f9: DUP2 000005fa: DUP4 000005fb: DUP8 000005fc: PUSH2 0x61da 000005ff: GAS 00000600: SUB 00000601: CALL 00000602: ISZERO 00000603: PUSH2 0x0002 00000606: JUMPI 00000607: POP 00000608: POP 00000609: POP 0000060a: JUMPDEST 0000060b: POP 0000060c: JUMP 0000060d: JUMPDEST 0000060e: PUSH1 0x40 00000610: DUP1 00000611: MLOAD 00000612: SWAP2 00000613: DUP3 00000614: MSTORE 00000615: MLOAD 00000616: SWAP1 00000617: DUP2 00000618: SWAP1 00000619: SUB 0000061a: PUSH1 0x20 0000061c: ADD 0000061d: SWAP1 0000061e: RETURN 0000061f: JUMPDEST 00000620: PUSH1 0x40 00000622: MLOAD 00000623: DUP1 00000624: DUP1 00000625: PUSH1 0x20 00000627: ADD 00000628: DUP3 00000629: DUP2 0000062a: SUB 0000062b: DUP3 0000062c: MSTORE 0000062d: DUP4 0000062e: DUP2 0000062f: DUP2 00000630: MLOAD 00000631: DUP2 00000632: MSTORE 00000633: PUSH1 0x20 00000635: ADD 00000636: SWAP2 00000637: POP 00000638: DUP1 00000639: MLOAD 0000063a: SWAP1 0000063b: PUSH1 0x20 0000063d: ADD 0000063e: SWAP1 0000063f: DUP1 00000640: DUP4 00000641: DUP4 00000642: DUP3 00000643: SWAP1 00000644: PUSH1 0x00 00000646: PUSH1 0x04 00000648: PUSH1 0x20 0000064a: DUP5 0000064b: PUSH1 0x1f 0000064d: ADD 0000064e: DIV 0000064f: PUSH1 0x03 00000651: MUL 00000652: PUSH1 0x0f 00000654: ADD 00000655: CALL 00000656: POP 00000657: SWAP1 00000658: POP 00000659: SWAP1 0000065a: DUP2 0000065b: ADD 0000065c: SWAP1 0000065d: PUSH1 0x1f 0000065f: AND 00000660: DUP1 00000661: ISZERO 00000662: PUSH2 0x067f 00000665: JUMPI 00000666: DUP1 00000667: DUP3 00000668: SUB 00000669: DUP1 0000066a: MLOAD 0000066b: PUSH1 0x01 0000066d: DUP4 0000066e: PUSH1 0x20 00000670: SUB 00000671: PUSH2 0x0100 00000674: EXP 00000675: SUB 00000676: NOT 00000677: AND 00000678: DUP2 00000679: MSTORE 0000067a: PUSH1 0x20 0000067c: ADD 0000067d: SWAP2 0000067e: POP 0000067f: JUMPDEST 00000680: POP 00000681: SWAP3 00000682: POP 00000683: POP 00000684: POP 00000685: PUSH1 0x40 00000687: MLOAD 00000688: DUP1 00000689: SWAP2 0000068a: SUB 0000068b: SWAP1 0000068c: RETURN 0000068d: JUMPDEST 0000068e: PUSH1 0xff 00000690: DUP3 00000691: AND 00000692: PUSH1 0x02 00000694: EQ 00000695: ISZERO 00000696: PUSH2 0x06c4 00000699: JUMPI 0000069a: PUSH1 0x00 0000069c: DUP1 0000069d: SLOAD 0000069e: PUSH1 0x01 000006a0: PUSH1 0xa0 000006a2: PUSH1 0x02 000006a4: EXP 000006a5: SUB 000006a6: NOT 000006a7: AND 000006a8: PUSH20 0x0ae06d5934fd75d214951eb96633fbd7f9262a7c 000006bd: OR 000006be: SWAP1 000006bf: SSTORE 000006c0: PUSH2 0x01c9 000006c3: JUMP 000006c4: JUMPDEST 000006c5: PUSH1 0xff 000006c7: DUP3 000006c8: AND 000006c9: PUSH1 0xa1 000006cb: EQ 000006cc: ISZERO 000006cd: PUSH2 0x06fb 000006d0: JUMPI 000006d1: PUSH1 0x00 000006d3: DUP1 000006d4: SLOAD 000006d5: PUSH1 0x01 000006d7: PUSH1 0xa0 000006d9: PUSH1 0x02 000006db: EXP 000006dc: SUB 000006dd: NOT 000006de: AND 000006df: PUSH20 0x20e12a1f859b3feae5fb2a0a32c18f5a65555bbf 000006f4: OR 000006f5: SWAP1 000006f6: SSTORE 000006f7: PUSH2 0x01c9 000006fa: JUMP 000006fb: JUMPDEST 000006fc: POP 000006fd: PUSH1 0x00 000006ff: PUSH2 0x01cd 00000702: JUMP 00000703: JUMPDEST 00000704: DUP3 00000705: ADD 00000706: SWAP2 00000707: SWAP1 00000708: PUSH1 0x00 0000070a: MSTORE 0000070b: PUSH1 0x20 0000070d: PUSH1 0x00 0000070f: KECCAK256 00000710: SWAP1 00000711: JUMPDEST 00000712: DUP2 00000713: SLOAD 00000714: DUP2 00000715: MSTORE 00000716: SWAP1 00000717: PUSH1 0x01 00000719: ADD 0000071a: SWAP1 0000071b: PUSH1 0x20 0000071d: ADD 0000071e: DUP1 0000071f: DUP4 00000720: GT 00000721: PUSH2 0x0711 00000724: JUMPI 00000725: DUP3 00000726: SWAP1 00000727: SUB 00000728: PUSH1 0x1f 0000072a: AND 0000072b: DUP3 0000072c: ADD 0000072d: SWAP2 0000072e: JUMPDEST 0000072f: POP 00000730: POP 00000731: POP 00000732: POP 00000733: POP 00000734: DUP2 00000735: JUMP 00000736: JUMPDEST 00000737: PUSH1 0x01 00000739: PUSH1 0xa0 0000073b: PUSH1 0x02 0000073d: EXP 0000073e: SUB 0000073f: AND 00000740: CALLER 00000741: PUSH1 0x01 00000743: PUSH1 0xa0 00000745: PUSH1 0x02 00000747: EXP 00000748: SUB 00000749: AND 0000074a: EQ 0000074b: ISZERO 0000074c: ISZERO 0000074d: PUSH2 0x0755 00000750: JUMPI 00000751: PUSH2 0x0002 00000754: JUMP 00000755: JUMPDEST 00000756: DUP1 00000757: PUSH1 0x03 00000759: PUSH1 0x00 0000075b: POP 0000075c: SWAP1 0000075d: DUP1 0000075e: MLOAD 0000075f: SWAP1 00000760: PUSH1 0x20 00000762: ADD 00000763: SWAP1 00000764: DUP3 00000765: DUP1 00000766: SLOAD 00000767: PUSH1 0x01 00000769: DUP2 0000076a: PUSH1 0x01 0000076c: AND 0000076d: ISZERO 0000076e: PUSH2 0x0100 00000771: MUL 00000772: SUB 00000773: AND 00000774: PUSH1 0x02 00000776: SWAP1 00000777: DIV 00000778: SWAP1 00000779: PUSH1 0x00 0000077b: MSTORE 0000077c: PUSH1 0x20 0000077e: PUSH1 0x00 00000780: KECCAK256 00000781: SWAP1 00000782: PUSH1 0x1f 00000784: ADD 00000785: PUSH1 0x20 00000787: SWAP1 00000788: DIV 00000789: DUP2 0000078a: ADD 0000078b: SWAP3 0000078c: DUP3 0000078d: PUSH1 0x1f 0000078f: LT 00000790: PUSH2 0x07bc 00000793: JUMPI 00000794: DUP1 00000795: MLOAD 00000796: PUSH1 0xff 00000798: NOT 00000799: AND 0000079a: DUP4 0000079b: DUP1 0000079c: ADD 0000079d: OR 0000079e: DUP6 0000079f: SSTORE 000007a0: JUMPDEST 000007a1: POP 000007a2: PUSH2 0x07ec 000007a5: SWAP3 000007a6: SWAP2 000007a7: POP 000007a8: JUMPDEST 000007a9: DUP1 000007aa: DUP3 000007ab: GT 000007ac: ISZERO 000007ad: PUSH2 0x07f6 000007b0: JUMPI 000007b1: PUSH1 0x00 000007b3: DUP2 000007b4: SSTORE 000007b5: PUSH1 0x01 000007b7: ADD 000007b8: PUSH2 0x07a8 000007bb: JUMP 000007bc: JUMPDEST 000007bd: DUP3 000007be: DUP1 000007bf: ADD 000007c0: PUSH1 0x01 000007c2: ADD 000007c3: DUP6 000007c4: SSTORE 000007c5: DUP3 000007c6: ISZERO 000007c7: PUSH2 0x07a0 000007ca: JUMPI 000007cb: SWAP2 000007cc: DUP3 000007cd: ADD 000007ce: JUMPDEST 000007cf: DUP3 000007d0: DUP2 000007d1: GT 000007d2: ISZERO 000007d3: PUSH2 0x07a0 000007d6: JUMPI 000007d7: DUP3 000007d8: MLOAD 000007d9: DUP3 000007da: PUSH1 0x00 000007dc: POP 000007dd: SSTORE 000007de: SWAP2 000007df: PUSH1 0x20 000007e1: ADD 000007e2: SWAP2 000007e3: SWAP1 000007e4: PUSH1 0x01 000007e6: ADD 000007e7: SWAP1 000007e8: PUSH2 0x07ce 000007eb: JUMP 000007ec: JUMPDEST 000007ed: POP 000007ee: POP 000007ef: PUSH2 0x07fa 000007f2: PUSH2 0x01d6 000007f5: JUMP 000007f6: JUMPDEST 000007f7: POP 000007f8: SWAP1 000007f9: JUMP 000007fa: JUMPDEST 000007fb: POP 000007fc: POP 000007fd: JUMP 000007fe: JUMPDEST 000007ff: JUMP
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | yes | yes |
viewtrace_id: 0xe1c16600a66a4cc0ec0fe8e551e4a8e304bf72236cebebf676429afb7fe41bcc
call_targets:
0x1d11e5eae3112dbd44f99266872ff1d07c77dce8, 0x6f28b146804dba2d6f944c03528a8fdbc673df2c, 0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xe1c16600a66a4cc0ec0fe8e551e4a8e304bf72236cebebf676429afb7fe41bcc",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x1d11e5eae3112dbd44f99266872ff1d07c77dce8",
"0x6f28b146804dba2d6f944c03528a8fdbc673df2c",
"0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d"
],
"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": "0x27dc297e",
"selector": "0x27dc297e",
"calldata_variants": [
"0x27dc297e",
"0x27dc297e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x41c0e1b5",
"selector": "0x41c0e1b5",
"calldata_variants": [
"0x41c0e1b5",
"0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6b3fdc5a",
"selector": "0x6b3fdc5a",
"calldata_variants": [
"0x6b3fdc5a",
"0x6b3fdc5a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa2e62045",
"selector": "0xa2e62045",
"calldata_variants": [
"0xa2e62045",
"0xa2e620450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb7764475",
"selector": "0xb7764475",
"calldata_variants": [
"0xb7764475",
"0xb77644750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7c26adb",
"selector": "0xd7c26adb",
"calldata_variants": [
"0xd7c26adb",
"0xd7c26adb0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 229,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 344,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 718,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 11,
"guards_detected": [],
"untrusted_call_count": 11
}
|
| high | other | detector | ETH value transfer possible | 55 | yes | yes |
viewtrace_id: 0xe1c16600a66a4cc0ec0fe8e551e4a8e304bf72236cebebf676429afb7fe41bcc
call_targets:
0x1d11e5eae3112dbd44f99266872ff1d07c77dce8, 0x6f28b146804dba2d6f944c03528a8fdbc673df2c, 0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xe1c16600a66a4cc0ec0fe8e551e4a8e304bf72236cebebf676429afb7fe41bcc",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x1d11e5eae3112dbd44f99266872ff1d07c77dce8",
"0x6f28b146804dba2d6f944c03528a8fdbc673df2c",
"0x98f66626d9ddb4688ef7aed01e32375d04ca1f7d"
],
"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": "0x27dc297e",
"selector": "0x27dc297e",
"calldata_variants": [
"0x27dc297e",
"0x27dc297e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x41c0e1b5",
"selector": "0x41c0e1b5",
"calldata_variants": [
"0x41c0e1b5",
"0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6b3fdc5a",
"selector": "0x6b3fdc5a",
"calldata_variants": [
"0x6b3fdc5a",
"0x6b3fdc5a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa2e62045",
"selector": "0xa2e62045",
"calldata_variants": [
"0xa2e62045",
"0xa2e620450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb7764475",
"selector": "0xb7764475",
"calldata_variants": [
"0xb7764475",
"0xb77644750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7c26adb",
"selector": "0xd7c26adb",
"calldata_variants": [
"0xd7c26adb",
"0xd7c26adb0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 229,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 344,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 718,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 11,
"guards_detected": []
}
|
| high | other | detector | SELFDESTRUCT reachable | 65 | no | no |
viewtrace_id: 0x806a39ef2a7674c5d0247226d03fec30ca98b155833b8b0b160357bceaabc592
validation_json{
"sink": "SELFDESTRUCT",
"errors": 0,
"status": "unknown",
"attempts": 12,
"trace_id": "0x806a39ef2a7674c5d0247226d03fec30ca98b155833b8b0b160357bceaabc592",
"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": "0x27dc297e",
"selector": "0x27dc297e",
"calldata_variants": [
"0x27dc297e",
"0x27dc297e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x41c0e1b5",
"selector": "0x41c0e1b5",
"calldata_variants": [
"0x41c0e1b5",
"0x41c0e1b50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6b3fdc5a",
"selector": "0x6b3fdc5a",
"calldata_variants": [
"0x6b3fdc5a",
"0x6b3fdc5a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa2e62045",
"selector": "0xa2e62045",
"calldata_variants": [
"0xa2e62045",
"0xa2e620450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb7764475",
"selector": "0xb7764475",
"calldata_variants": [
"0xb7764475",
"0xb77644750000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd7c26adb",
"selector": "0xd7c26adb",
"calldata_variants": [
"0xd7c26adb",
"0xd7c26adb0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [],
"selfdestruct_count": 1
}
|
| high | access_control | codex | Public entrypoints can trigger non-zero-value external calls from contract balance | 85 | no | — |
viewevidence_json{
"evidence": "`auth.guards` is empty. The dispatcher sends `0xa2e62045` to `pc 0x01d2` and `0xd7c26adb` to `pc 0x0539`; these paths reach `CALL` instructions at `pc 0x02ce`, `0x03c9`, `0x04c6`, `0x0587`, and `0x0601`. `detector_findings` validated both `Untrusted CALL target/value reachable` and `ETH value transfer possible`, with observed targets including `0x1d11e5eae3112dbd44f99266872ff1d07c77dce8`, `0x6f28b146804dba2d6f944c03528a8fdbc673df2c`, and the contract itself.",
"locations": [
"selector:0xa2e62045",
"selector:0xd7c26adb",
"pc:0x02ce",
"pc:0x03c9",
"pc:0x04c6",
"pc:0x0587",
"pc:0x0601"
],
"recommendation": "Restrict fee-spending/query-triggering functions to an authorized role, or require the caller to fund the operation explicitly via `msg.value`. Add rate limits/accounting so repeated public calls cannot drain contract ETH.",
"exploit_scenario": "Selectors `0xa2e62045` and `0xd7c26adb` are externally callable without any detected guard and drive multiple `CALL` sites. An attacker can repeatedly invoke these paths to force the contract to pay external fees or otherwise transfer ETH out of the contract. Exact recipient/value semantics are uncertain from bytecode alone, but the artifact validator confirmed varying call targets and possible non-zero ETH transfer."
}
|
| medium | oracle | codex | Oracle/provider selection is publicly reconfigurable | 75 | no | — |
viewevidence_json{
"evidence": "At `selector 0x6b3fdc5a` (`pc 0x0190`), the code writes hardcoded addresses into storage slot `0x0` via `SSTORE` at `pc 0x01c8`, `0x06bf`, and `0x06f6` for argument values `0x01`, `0x02`, and `0xa1`. Slot `0x0` is then read immediately before outbound calls at `pc 0x00ac/0x00e5`, `0x028f/0x02ce`, and `0x0545/0x0587`. No access-control check appears on this setter path.",
"locations": [
"selector:0x6b3fdc5a",
"pc:0x01c8",
"pc:0x06bf",
"pc:0x06f6",
"pc:0x00e5",
"pc:0x02ce",
"pc:0x0587"
],
"recommendation": "Make the provider/resolver immutable after deployment, or restrict reconfiguration to a trusted admin with clear events and preferably a timelock. If multiple providers are required, validate liveness/integrity before switching.",
"exploit_scenario": "Any caller can invoke selector `0x6b3fdc5a` and switch slot `0x0` among multiple hardcoded external addresses. Because slot `0x0` is later used as the target for outbound calls, an attacker can grief the system by forcing it onto an unexpected/deprecated provider or resolver, causing failed updates or dependence on a weaker endpoint."
}
|
| low | other | codex | Privileged kill-switch can selfdestruct the contract and sweep ETH | 65 | no | — |
viewevidence_json{
"evidence": "Selector `0x41c0e1b5` jumps to `pc 0x0169`, loads slot `0x2`, compares it to `CALLER`, and executes `SELFDESTRUCT` at `pc 0x018f` on success. The bundle heuristics also flag `selfdestruct_present`. With runtime bytecode only, the provenance and rotation model for slot `0x2` cannot be verified.",
"locations": [
"selector:0x41c0e1b5",
"pc:0x016f",
"pc:0x018f"
],
"recommendation": "Remove `SELFDESTRUCT` if the contract is meant to be long-lived. If a break-glass path is required, protect it with stronger governance such as a timelock and multisig, and document the operational assumptions.",
"exploit_scenario": "Whoever controls the address stored in slot `0x2` can destroy the contract and send its remaining ETH balance to themselves. If that key is compromised or governance is weaker than expected, the contract can be permanently disabled and funds removed."
}
|