019b3836-2ec8-72a4-87d8-32f40c869605
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 |
|---|---|---|---|---|
| 2331 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 2332 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 45444 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 45445 | capability.graph | complete | 1 / 3 | 1 week ago |
| 45446 | detector.run | complete | 1 / 3 | 1 week ago |
| 45447 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113245 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode-only review found two high-risk issues and no proxy/delegatecall pattern. The dispatcher exposes selector:0x35f46994 to a confirmed SELFDESTRUCT path with no caller check on that path, and selector:0x9e1a00aa reaches a low-level CALL-with-value site whose target/value appear stack-derived and whose success is ignored. Selector names and storage semantics are best-effort because this is runtime-bytecode analysis only.","findings":[{"severity":"high","category":"access_control","title":"Publicly reachable SELFDESTRUCT path","exploit_scenario":"An arbitrary caller can invoke selector 0x35f46994 and terminate the contract, permanently disabling it and forcing its ETH balance to the beneficiary loaded from storage. That is an immediate denial of service; if some other public path can influence that beneficiary, the impact could escalate to theft, but that storage-authority link is not fully provable from this artifact alone.","recommendation":"Remove SELFDESTRUCT entirely if possible. If a shutdown path is required, gate it with a strong owner/multisig check on the same execution path and make the payout recipient immutable or tightly controlled.","evidence":"The dispatcher routes selector:0x35f46994 at pc 0x14b directly to pc 0x6e3. The body at pc 0x6e3-0x73d contains no CALLER/auth check and ends in SELFDESTRUCT at pc 0x73d after loading an address from storage (keccak-derived base plus offset 2, then DIV 0x100 and mask to 20 bytes). The bundle's detector also validated SELFDESTRUCT reachability.","locations":["selector:0x35f46994","pc:0x6e3","pc:0x73d"]},{"severity":"high","category":"access_control","title":"Public low-level CALL with ETH/value semantics and no success handling","exploit_scenario":"A caller can invoke selector 0x9e1a00aa and drive the contract into a low-level CALL path that appears to use stack-derived target/value operands. If those operands are caller-controlled as the bytecode suggests, the contract can be used as an arbitrary call/value forwarder and its ETH can be drained or redirected. Even when the call fails, the function continues without reverting, so logs/off-chain accounting can report an action that never succeeded.","recommendation":"Restrict this function to an authorized operator, avoid raw CALL for value transfers unless strictly necessary, and require explicit success checks with revert-on-failure. If external calls must remain, follow checks-effects-interactions and emit events only after a confirmed success.","evidence":"Selector:0x9e1a00aa dispatches from pc 0x25d to pc 0x2c8 with no caller check on that path. The call sequence at pc 0x345-0x371 builds the CALL arguments from stack values, including target materialized via DUP3/AND and value via DUP4, then executes CALL at pc 0x371. There is no SSTORE before the call on this path and no post-CALL success branch: the return value is discarded via SWAP4/POP...POP at pc 0x372-0x377. The automated validator saw one trace where the target resolved to the contract itself, but the static bytecode is not hardcoded to a constant target, so that trace does not rule out broader caller influence.","locations":["selector:0x9e1a00aa","pc:0x2c8","pc:0x345","pc:0x371"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-cfs6mgzj
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5b91-2710-7b42-a62e-c9cf2de225a0
--------
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 && rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md' -g '*.json' ." in /tmp/codex-cfs6mgzj
succeeded in 0ms:
/tmp/codex-cfs6mgzj
./BYTECODE_BUNDLE.json
./codex-output-schema.json
exec
/bin/bash -lc "wc -c BYTECODE_BUNDLE.json && jq 'keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
122532 BYTECODE_BUNDLE.json
[
"analysis_artifact",
"analysis_run",
"artifact",
"capability_graph",
"detector_findings",
"heuristics_summary"
]
exec
/bin/bash -lc "jq '.' codex-output-schema.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"type": "object",
"additionalProperties": false,
"required": [
"no_findings",
"summary",
"findings"
],
"properties": {
"no_findings": {
"type": "boolean"
},
"summary": {
"type": "string"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"severity",
"category",
"title",
"evidence",
"locations",
"exploit_scenario",
"recommendation"
],
"properties": {
"severity": {
"type": "string",
"enum": [
"info",
"low",
"medium",
"high",
"critical"
]
},
"category": {
"type": "string",
"enum": [
"access_control",
"reentrancy",
"math",
"oracle",
"upgradeability",
"auth",
"other"
]
},
"title": {
"type": "string"
},
"exploit_scenario": {
"type": "string"
},
"recommendation": {
"type": "string"
},
"evidence": {
"type": "string"
},
"locations": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
exec
/bin/bash -lc "jq '.heuristics_summary' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"create2_count": 0,
"delegatecall_count": 0,
"flags": [
"selfdestruct_present"
],
"selfdestruct_count": 1
}
exec
/bin/bash -lc "jq '.detector_findings' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
{
"confidence": 45,
"evidence_json": {
"call_count": 1,
"examples": [
{
"opcode": "CALL",
"pc": 881,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 1
},
"normalized_json": {
"sink": "CALL"
},
"severity": "medium",
"title": "Untrusted CALL target/value reachable",
"validated": false,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x8d06ce37c1ec69a0402688c3a9d34e583adcc88a"
],
"classification": "constant_target",
"confirmed": false,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "sink_reached",
"target_varies": false,
"trace_id": "0x3b6675ee8531990c64c45996aa2951d320b062f5e5a325b9474d0a0afb5671d8",
"trace_mode": "callTracer"
}
},
{
"confidence": 40,
"evidence_json": {
"eth_value_calls": 1,
"examples": [
{
"opcode": "CALL",
"pc": 881,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"normalized_json": {
"sink": "CALL",
"value": "nonzero"
},
"severity": "medium",
"title": "ETH value transfer possible",
"validated": false,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x8d06ce37c1ec69a0402688c3a9d34e583adcc88a"
],
"classification": "constant_target",
"confirmed": false,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "sink_reached",
"target_varies": false,
"trace_id": "0x3b6675ee8531990c64c45996aa2951d320b062f5e5a325b9474d0a0afb5671d8",
"trace_mode": "callTracer"
}
},
{
"confidence": 45,
"evidence_json": {
"guards_detected": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"selfdestruct_count": 1
},
"normalized_json": {
"sink": "SELFDESTRUCT"
},
"severity": "medium",
"title": "SELFDESTRUCT reachable",
"validated": true,
"validation_json": {
"attempts": 3,
"call_targets": null,
"classification": "sink_reached",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "SELFDESTRUCT",
"status": "confirmed",
"target_varies": null,
"trace_id": "0xd439a15996244e37b63182096c35d671934ccc006e3572afa9a62f1d0651bdb3",
"trace_mode": "structLogs"
}
}
]
exec
/bin/bash -lc "jq '.analysis_artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"address",
"artifact_hash",
"artifact_json",
"block_number",
"chain_id",
"codehash",
"created_at",
"id",
"updated_at",
"version"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"auth",
"basic_blocks",
"callsites",
"cfg_edges",
"cfg_hash",
"dispatcher_type",
"function_entries",
"functions",
"selectors",
"sinks",
"storage",
"version"
]
exec
/bin/bash -lc "jq '.capability_graph | keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"address",
"block_number",
"chain_id",
"codehash",
"created_at",
"graph_hash",
"graph_json",
"id",
"updated_at",
"version"
]
exec
/bin/bash -lc "jq '.analysis_run | keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"address",
"block_number",
"chain_id",
"child_links",
"created_at",
"id",
"parent_links",
"status",
"updated_at"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"0x12065fe0",
"0x35f46994",
"0x4001a81f",
"0x5dea5e47",
"0x690b90a9",
"0x6adcef6b",
"0x6ccb5d02",
"0x75724990",
"0x7f616488",
"0x9e1a00aa",
"0xd5002f2e",
"0xdda1a1e6",
"0xf50ad617"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.function_entries' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
{
"entry_pc": 905210260,
"selector": "0x12065fe0"
},
{
"entry_pc": 1073850399,
"selector": "0x35f46994"
},
{
"entry_pc": 1575640647,
"selector": "0x4001a81f"
},
{
"entry_pc": 1762365609,
"selector": "0x5dea5e47"
},
{
"entry_pc": 1792864107,
"selector": "0x690b90a9"
},
{
"entry_pc": 1825266946,
"selector": "0x6adcef6b"
},
{
"entry_pc": 1970424208,
"selector": "0x6ccb5d02"
},
{
"entry_pc": 2137089160,
"selector": "0x75724990"
},
{
"entry_pc": 2652504234,
"selector": "0x7f616488"
},
{
"entry_pc": 3573559086,
"selector": "0x9e1a00aa"
},
{
"entry_pc": 3718357478,
"selector": "0xd5002f2e"
},
{
"entry_pc": 4111128087,
"selector": "0xdda1a1e6"
},
{
"entry_pc": null,
"selector": "0xf50ad617"
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
{
"opcode": "CALL",
"pc": 881,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.sinks' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"call": 1,
"create": 0,
"create2": 0,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0,
"upgrade_slot_write_suspected": false
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.auth' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"keccak_count": 20,
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 905210260,
"selector": "0x12065fe0",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1073850399,
"selector": "0x35f46994",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1575640647,
"selector": "0x4001a81f",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1762365609,
"selector": "0x5dea5e47",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1792864107,
"selector": "0x690b90a9",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1825266946,
"selector": "0x6adcef6b",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 1970424208,
"selector": "0x6ccb5d02",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 2137089160,
"selector": "0x75724990",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 2652504234,
"selector": "0x7f616488",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 3573559086,
"selector": "0x9e1a00aa",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 3718357478,
"selector": "0xd5002f2e",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 4111128087,
"selector": "0xdda1a1e6",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
},
{
"auth": {
"guards": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": null,
"selector": "0xf50ad617",
"sinks": {
"call": 1,
"delegatecall": 0,
"selfdestruct": 1,
"staticcall": 0
},
"storage": {
"reads": 24,
"slots": [
{
"op": "SLOAD",
"pc": 1385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1472,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1658,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1685,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1801,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 14
}
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[0]' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"end_pc": 10,
"hash": "0x8707fb847587a17eebc1e102cecb330d4092cae78bfef09d441df6ca228003e1",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"CALLDATASIZE",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 0
}
exec
/bin/bash -lc "jq '.capability_graph.graph_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"edges",
"nodes",
"version"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc <= 881 and .end_pc >= 881 or .start_pc <= 1524 and .end_pc >= 1524 or .opcodes | index(\"SELFDESTRUCT\"))' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
exited 5 in 0ms:
jq: error (at BYTECODE_BUNDLE.json:4644): Cannot index boolean with string "SELFDESTRUCT"
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc <= 881 and .end_pc >= 881)' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"end_pc": 887,
"hash": "0xd1ba2b2108f78580be0ce9f39110e7bc261985fd5250b5b9dc1ad5c1f81e09d3",
"opcodes": [
"JUMPDEST",
"PUSH1",
"NUMBER",
"PUSH32",
"OP_84",
"OP_84",
"TIMESTAMP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_84",
"PUSH20",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_83",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_93",
"POP",
"POP",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"OP_A2",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_90",
"POP",
"OP_82",
"PUSH20",
"AND",
"PUSH1",
"OP_83",
"PUSH1",
"MLOAD",
"OP_80",
"OP_90",
"POP",
"PUSH1",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"SUB",
"OP_81",
"OP_85",
"OP_88",
"OP_88",
"CALL",
"OP_93",
"POP",
"POP",
"POP",
"POP",
"POP"
],
"start_pc": 712
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc <= 1524 and .end_pc >= 1524)' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"end_pc": 1552,
"hash": "0x1316a63199409cee90a4752e2e953057f850ee07ff2ab70871dc0765100396da",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_93",
"POP",
"OP_83",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"PUSH20",
"AND",
"CALLER",
"PUSH20",
"AND",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1428
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select((.opcodes | index(\"SELFDESTRUCT\")) "'!= null)'"' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"end_pc": 1853,
"hash": "0x8982b9942c06e979b0acf59dafed50e2745676b49fca85cc3240ed37b085aef0",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_90",
"POP",
"OP_80",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"PUSH20",
"AND",
"SELFDESTRUCT"
],
"start_pc": 1763
}
exec
/bin/bash -lc "jq '{address: .analysis_artifact.address, chain_id: .analysis_artifact.chain_id, block_number: .analysis_artifact.block_number, codehash: .analysis_artifact.codehash, dispatcher_type: .analysis_artifact.artifact_json.dispatcher_type}' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"address": "0x8d06ce37c1ec69a0402688c3a9d34e583adcc88a",
"chain_id": 1,
"block_number": null,
"codehash": "0x03f1dac0c32f9af6f86ffbde9aa54ba50757b9d3b8e6278e7c51d51882203532",
"dispatcher_type": "selector_jump_table"
}
exec
/bin/bash -lc "jq '[.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc>=650 and .start_pc<=950) | {start_pc,end_pc,opcodes}]' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
{
"start_pc": 651,
"end_pc": 672,
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
]
},
{
"start_pc": 673,
"end_pc": 694,
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"OP_80",
"OP_80",
"CALLDATALOAD",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"OP_91",
"OP_90",
"POP",
"POP",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 695,
"end_pc": 696,
"opcodes": [
"JUMPDEST",
"STOP"
]
},
{
"start_pc": 697,
"end_pc": 709,
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"OP_80",
"POP",
"POP",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 710,
"end_pc": 711,
"opcodes": [
"JUMPDEST",
"STOP"
]
},
{
"start_pc": 712,
"end_pc": 887,
"opcodes": [
"JUMPDEST",
"PUSH1",
"NUMBER",
"PUSH32",
"OP_84",
"OP_84",
"TIMESTAMP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_84",
"PUSH20",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_83",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_82",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_93",
"POP",
"POP",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"OP_A2",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_90",
"POP",
"OP_82",
"PUSH20",
"AND",
"PUSH1",
"OP_83",
"PUSH1",
"MLOAD",
"OP_80",
"OP_90",
"POP",
"PUSH1",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"SUB",
"OP_81",
"OP_85",
"OP_88",
"OP_88",
"CALL",
"OP_93",
"POP",
"POP",
"POP",
"POP",
"POP"
]
},
{
"start_pc": 888,
"end_pc": 892,
"opcodes": [
"JUMPDEST",
"POP",
"POP",
"POP",
"JUMP"
]
},
{
"start_pc": 893,
"end_pc": 1117,
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_91",
"POP",
"OP_81",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"PUSH1",
"OP_86",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_90",
"POP",
"PUSH1",
"PUSH1",
"MLOAD",
"OP_90",
"OP_81",
"ADD",
"PUSH1",
"MSTORE",
"OP_80",
"OP_85",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_84",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"TIMESTAMP",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"POP",
"OP_81",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"PUSH1",
"OP_83",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SLOAD",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"PUSH1",
"OP_82",
"ADD",
"MLOAD",
"OP_81",
"PUSH1",
"ADD",
"PUSH1",
"PUSH2",
"EXP",
"OP_81",
"SLOAD",
"OP_81",
"PUSH20",
"MUL",
"NOT",
"AND",
"OP_90",
"OP_83",
"MUL",
"OR",
"OP_90",
"SSTORE",
"POP",
"PUSH1",
"OP_82",
"ADD",
"MLOAD",
"OP_81",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SSTORE",
"PUSH1",
"OP_82",
"ADD",
"MLOAD",
"OP_81",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SSTORE",
"OP_90",
"POP",
"POP",
"OP_80",
"PUSH1",
"ADD",
"PUSH1",
"OP_81",
"OP_81",
"POP",
"SLOAD",
"PUSH1",
"ADD",
"OP_91",
"OP_90",
"POP",
"OP_81",
"OP_90",
"SSTORE",
"POP"
]
}
]
exec
/bin/bash -lc "jq '[.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc>=1380 and .start_pc<=1860) | {start_pc,end_pc,opcodes}]' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
{
"start_pc": 1421,
"end_pc": 1427,
"opcodes": [
"JUMPDEST",
"POP",
"POP",
"OP_91",
"OP_90",
"POP",
"JUMP"
]
},
{
"start_pc": 1428,
"end_pc": 1552,
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_93",
"POP",
"OP_83",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"PUSH20",
"AND",
"CALLER",
"PUSH20",
"AND",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
]
},
{
"start_pc": 1553,
"end_pc": 1556,
"opcodes": [
"PUSH1",
"OP_92",
"POP"
]
},
{
"start_pc": 1557,
"end_pc": 1572,
"opcodes": [
"JUMPDEST",
"OP_83",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SLOAD",
"OP_83",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
]
},
{
"start_pc": 1573,
"end_pc": 1648,
"opcodes": [
"OP_83",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"PUSH1",
"OP_84",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_91",
"POP",
"PUSH1",
"OP_82",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SLOAD",
"OP_86",
"MUL",
"MUL",
"OP_90",
"POP",
"OP_80",
"ADDRESS",
"PUSH20",
"AND",
"BALANCE",
"LT",
"ISZERO",
"ISZERO",
"PUSH2",
"JUMPI"
]
},
{
"start_pc": 1649,
"end_pc": 1674,
"opcodes": [
"PUSH1",
"OP_82",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH1",
"AND",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
]
},
{
"start_pc": 1675,
"end_pc": 1719,
"opcodes": [
"PUSH2",
"OP_82",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"OP_82",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 1720,
"end_pc": 1720,
"opcodes": [
"JUMPDEST"
]
},
{
"start_pc": 1721,
"end_pc": 1725,
"opcodes": [
"JUMPDEST",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 1726,
"end_pc": 1730,
"opcodes": [
"JUMPDEST",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 1731,
"end_pc": 1731,
"opcodes": [
"JUMPDEST"
]
},
{
"start_pc": 1732,
"end_pc": 1744,
"opcodes": [
"JUMPDEST",
"OP_82",
"OP_80",
"PUSH1",
"ADD",
"OP_93",
"POP",
"POP",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 1745,
"end_pc": 1749,
"opcodes": [
"JUMPDEST",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 1750,
"end_pc": 1754,
"opcodes": [
"JUMPDEST",
"PUSH2",
"JUMP"
]
},
{
"start_pc": 1755,
"end_pc": 1755,
"opcodes": [
"JUMPDEST"
]
},
{
"start_pc": 1756,
"end_pc": 1762,
"opcodes": [
"JUMPDEST",
"POP",
"POP",
"POP",
"POP",
"POP",
"JUMP"
]
},
{
"start_pc": 1763,
"end_pc": 1853,
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_90",
"POP",
"OP_80",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"SLOAD",
"OP_90",
"PUSH2",
"EXP",
"OP_90",
"DIV",
"PUSH20",
"AND",
"PUSH20",
"AND",
"SELFDESTRUCT"
]
},
{
"start_pc": 1854,
"end_pc": 1856,
"opcodes": [
"JUMPDEST",
"POP",
"JUMP"
]
},
{
"start_pc": 1857,
"end_pc": 1903,
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_90",
"POP",
"OP_80",
"PUSH1",
"ADD",
"PUSH1",
"POP",
"SLOAD",
"OP_82",
"GT",
"ISZERO",
"ISZERO",
"PUSH2",
"JUMPI"
]
}
]
exec
/bin/bash -lc "jq '.artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"codehash",
"compiler_json",
"implementation_address",
"is_proxy",
"runtime_bytecode",
"verified_source"
]
exec
/bin/bash -lc "jq '.artifact | {is_proxy, implementation_address, codehash, verified_source, compiler_json}' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
{
"is_proxy": false,
"implementation_address": null,
"codehash": "0x03f1dac0c32f9af6f86ffbde9aa54ba50757b9d3b8e6278e7c51d51882203532",
"verified_source": false,
"compiler_json": {
"etherscan": {
"skipped": true
}
}
}
exec
/bin/bash -lc "jq -r '.artifact.runtime_bytecode' BYTECODE_BUNDLE.json | wc -c" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
5029
exec
/bin/bash -lc 'which evm || true; which cast || true; which python3 || true; which node || true' in /tmp/codex-cfs6mgzj
succeeded in 0ms:
/home/noahkuhn/.foundry/bin/cast
/var/www/tripwire/.venv/bin/python3
/home/noahkuhn/.nvm/versions/node/v23.3.0/bin/node
exec
/bin/bash -lc 'cast --help | rg -n "disassemble|disasm|4byte|sig"' in /tmp/codex-cfs6mgzj
succeeded in 0ms:
6: 4byte Get the function signatures for the given selector from
8: 4byte-calldata Decode ABI-encoded calldata using <https://openchain.xyz> [aliases: 4c,
10: 4byte-event Get the event signature for a given topic 0 from <https://openchain.xyz>
52: decode-transaction Decodes a raw signed EIP 2718 typed transaction [aliases: dt, decode-tx]
53: disassemble Disassembles a hex-encoded bytecode into a human-readable representation
78: logs Get logs by signature or topic [aliases: l]
86: mktx Build and sign a transaction [aliases: m]
109: sig Get the selector for a function [aliases: si]
110: sig-event Generate event signatures from event string [aliases: se]
135: upload-signature Upload the given signatures to <https://openchain.xyz> [aliases: ups]
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'BEGIN{show=0} {split("'$1,a,":"); pc=a[1]+0; if (pc>=700 && pc<=900) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
Error: invalid character '{' at position 0
exec
/bin/bash -lc "jq -r '.artifact.runtime_bytecode[:20]' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
exited 5 in 0ms:
jq: error (at BYTECODE_BUNDLE.json:4644): Cannot index object with object
exec
/bin/bash -lc "jq '.artifact.runtime_bytecode | type' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
"object"
exec
/bin/bash -lc "jq '.artifact.runtime_bytecode | keys' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
[
"full",
"head",
"length",
"tail",
"truncated"
]
exec
/bin/bash -lc "jq '.artifact.runtime_bytecode.length' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
4940
exec
/bin/bash -lc "jq -r '.artifact.runtime_bytecode.head, .artifact.runtime_bytecode.tail' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
null
null
exec
/bin/bash -lc "jq -r '.artifact.runtime_bytecode.full "'!= null'"' BYTECODE_BUNDLE.json" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
true
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{split("'$1,a,":"); pc=a[1]+0; if (pc>=700 && pc<=900) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000700: SWAP1
00000701: POP
00000702: DUP1
00000703: PUSH1 0x02
00000705: ADD
00000706: PUSH1 0x00
00000708: SWAP1
00000709: SLOAD
00000710: DIV
00000711: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000726: AND
00000727: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000740: JUMP
00000741: JUMPDEST
00000742: PUSH1 0x00
00000744: PUSH1 0x00
00000746: PUSH1 0x00
00000748: POP
00000749: PUSH1 0x00
00000751: ADD
00000752: SWAP1
00000753: DUP2
00000754: MSTORE
00000755: PUSH1 0x20
00000757: ADD
00000758: PUSH1 0x00
00000760: DUP1
00000761: PUSH1 0x06
00000763: ADD
00000764: PUSH1 0x00
00000766: POP
00000767: SLOAD
00000768: DUP3
00000769: GT
00000770: PUSH1 0x60
00000772: PUSH1 0x40
00000774: MLOAD
00000775: SWAP1
00000776: DUP2
00000777: ADD
00000778: PUSH1 0x40
00000781: ADD
00000782: DUP4
00000783: DUP2
00000784: MSTORE
00000785: PUSH1 0x20
00000787: ADD
00000788: PUSH1 0x01
00000790: DUP2
00000791: PUSH1 0x00
00000793: ADD
00000794: PUSH1 0x00
00000796: POP
00000797: PUSH1 0x00
00000799: DUP4
000007e2: POP
00000800: SLOAD
00000801: DUP2
00000802: PUSH1 0xff
00000804: MUL
00000805: NOT
00000806: AND
00000807: SWAP1
00000808: DUP4
00000809: MUL
00000810: POP
00000811: DUP2
00000812: DUP2
00000813: PUSH1 0x06
00000815: ADD
00000816: PUSH1 0x00
00000818: DUP3
00000819: DUP3
00000820: POP
00000821: DUP2
00000822: SWAP1
00000823: SSTORE
00000824: POP
00000825: DUP1
00000826: PUSH1 0x05
00000828: ADD
00000829: PUSH1 0x00
00000831: ADD
00000832: SWAP2
00000833: SWAP1
00000834: POP
00000835: DUP2
00000836: SWAP1
00000837: SSTORE
00000838: POP
00000839: PUSH2 0x0842
00000841: JUMP
00000842: JUMPDEST
00000843: JUMPDEST
00000844: POP
00000845: POP
00000846: POP
00000847: JUMP
00000848: JUMPDEST
00000849: PUSH1 0x00
00000851: POP
00000852: PUSH1 0x00
00000854: PUSH1 0x00
00000856: DUP2
00000857: MSTORE
00000858: PUSH1 0x20
00000860: ADD
00000861: PUSH1 0x00
00000863: KECCAK256
00000864: PUSH1 0x00
00000866: POP
00000867: SWAP2
00000868: POP
00000869: DUP2
00000870: PUSH1 0x00
00000872: DUP5
00000873: DUP2
00000874: MSTORE
00000875: PUSH1 0x20
00000877: ADD
00000878: SWAP1
00000879: DUP2
00000880: KECCAK256
00000881: PUSH1 0x00
00000883: POP
00000884: SWAP1
00000885: POP
00000886: PUSH1 0x00
00000888: DUP2
00000889: PUSH1 0x02
00000891: EXP
00000892: DUP2
00000893: SLOAD
00000894: DUP2
00000895: PUSH1 0xff
00000897: MUL
00000898: NOT
00000899: AND
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{pc=substr("'$1,1,length($1)-1)+0; if (pc>=840 && pc<=920) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000841: JUMP
00000842: JUMPDEST
00000843: JUMPDEST
00000844: POP
00000845: POP
00000846: POP
00000847: JUMP
00000848: JUMPDEST
00000849: PUSH1 0x00
00000851: POP
00000852: PUSH1 0x00
00000854: PUSH1 0x00
00000856: DUP2
00000857: MSTORE
00000858: PUSH1 0x20
00000860: ADD
00000861: PUSH1 0x00
00000863: KECCAK256
00000864: PUSH1 0x00
00000866: POP
00000867: SWAP2
00000868: POP
00000869: DUP2
00000870: PUSH1 0x00
00000872: DUP5
00000873: DUP2
00000874: MSTORE
00000875: PUSH1 0x20
00000877: ADD
00000878: SWAP1
00000879: DUP2
00000880: KECCAK256
00000881: PUSH1 0x00
00000883: POP
00000884: SWAP1
00000885: POP
00000886: PUSH1 0x00
00000888: DUP2
00000889: PUSH1 0x02
00000891: EXP
00000892: DUP2
00000893: SLOAD
00000894: DUP2
00000895: PUSH1 0xff
00000897: MUL
00000898: NOT
00000899: AND
00000901: POP
00000902: PUSH1 0x00
00000904: DUP3
00000905: ADD
00000906: MLOAD
00000907: DUP2
00000908: PUSH1 0x01
00000911: DUP3
00000912: ADD
00000913: MLOAD
00000914: DUP2
00000915: PUSH1 0x02
00000917: ADD
00000918: PUSH1 0x00
00000920: DUP2
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{pc=substr("'$1,1,length($1)-1)+0; if (pc>=920 && pc<=980) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000920: DUP2
00000921: PUSH1 0xff
00000923: MUL
00000924: NOT
00000925: AND
00000926: SWAP1
00000927: DUP4
00000928: MUL
00000929: OR
00000930: DUP1
00000931: PUSH1 0x07
00000933: ADD
00000934: PUSH1 0x00
00000936: DUP2
00000937: DUP2
00000938: POP
00000939: SLOAD
00000940: DUP2
00000941: SWAP1
00000942: SSTORE
00000943: POP
00000944: JUMPDEST
00000945: POP
00000946: JUMP
00000947: JUMPDEST
00000948: PUSH1 0x00
00000950: POP
00000951: PUSH1 0x00
00000953: PUSH1 0x00
00000955: DUP2
00000956: MSTORE
00000957: PUSH1 0x20
00000959: ADD
00000960: PUSH1 0x00
00000962: KECCAK256
00000963: PUSH1 0x00
00000965: POP
00000966: SWAP2
00000967: POP
00000968: DUP2
00000969: PUSH1 0x01
00000971: DUP5
00000972: DUP2
00000973: MSTORE
00000974: PUSH1 0x20
00000976: ADD
00000977: SWAP1
00000978: DUP2
00000979: MSTORE
00000980: PUSH1 0x00
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | rg -n "CALL$|DELEGATECALL|SELFDESTRUCT|JUMPDEST|PUSH4"' in /tmp/codex-cfs6mgzj
succeeded in 0ms:
14:0000002f: PUSH4 0x12065fe0
19:0000003a: PUSH4 0x35f46994
24:00000045: PUSH4 0x4001a81f
29:00000050: PUSH4 0x5dea5e47
34:0000005b: PUSH4 0x690b90a9
39:00000066: PUSH4 0x6adcef6b
44:00000071: PUSH4 0x6ccb5d02
49:0000007c: PUSH4 0x75724990
54:00000087: PUSH4 0x7f616488
59:00000092: PUSH4 0x9e1a00aa
64:0000009d: PUSH4 0xd5002f2e
69:000000a8: PUSH4 0xdda1a1e6
74:000000b3: PUSH4 0xf50ad617
80:000000c1: JUMPDEST
82:000000c5: JUMPDEST
120:00000124: JUMPDEST
122:00000126: JUMPDEST
124:00000128: JUMPDEST
132:00000135: JUMPDEST
151:0000014b: JUMPDEST
159:00000158: JUMPDEST
161:0000015a: JUMPDEST
193:00000182: JUMPDEST
195:00000184: JUMPDEST
211:0000019a: JUMPDEST
213:0000019c: JUMPDEST
221:000001a9: JUMPDEST
240:000001bf: JUMPDEST
256:000001d5: JUMPDEST
258:000001d7: JUMPDEST
274:000001ed: JUMPDEST
295:00000219: JUMPDEST
319:00000238: JUMPDEST
321:0000023a: JUMPDEST
329:00000247: JUMPDEST
348:0000025d: JUMPDEST
372:0000027c: JUMPDEST
374:0000027e: JUMPDEST
382:0000028b: JUMPDEST
401:000002a1: JUMPDEST
417:000002b7: JUMPDEST
419:000002b9: JUMPDEST
427:000002c6: JUMPDEST
429:000002c8: JUMPDEST
508:00000371: CALL
515:00000378: JUMPDEST
520:0000037d: JUMPDEST
679:0000045e: JUMPDEST
686:00000465: JUMPDEST
696:00000486: JUMPDEST
699:00000489: JUMPDEST
732:000004b8: JUMPDEST
736:000004bc: JUMPDEST
769:000004eb: JUMPDEST
773:000004ef: JUMPDEST
806:0000051e: JUMPDEST
810:00000522: JUMPDEST
873:0000058d: JUMPDEST
880:00000594: JUMPDEST
930:00000615: JUMPDEST
1021:000006b8: JUMPDEST
1022:000006b9: JUMPDEST
1025:000006be: JUMPDEST
1028:000006c3: JUMPDEST
1029:000006c4: JUMPDEST
1039:000006d1: JUMPDEST
1042:000006d6: JUMPDEST
1045:000006db: JUMPDEST
1046:000006dc: JUMPDEST
1053:000006e3: JUMPDEST
1090:0000073d: SELFDESTRUCT
1091:0000073e: JUMPDEST
1094:00000741: JUMPDEST
1276:0000083d: JUMPDEST
1279:00000842: JUMPDEST
1280:00000843: JUMPDEST
1285:00000848: JUMPDEST
1351:000008a1: JUMPDEST
1356:000008a6: JUMPDEST
1477:00000944: JUMPDEST
1480:00000947: JUMPDEST
1546:000009a0: JUMPDEST
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{pc=substr("'$1,1,length($1)-1)+0; if (pc>=820 && pc<=900) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000820: POP
00000821: DUP2
00000822: SWAP1
00000823: SSTORE
00000824: POP
00000825: DUP1
00000826: PUSH1 0x05
00000828: ADD
00000829: PUSH1 0x00
00000831: ADD
00000832: SWAP2
00000833: SWAP1
00000834: POP
00000835: DUP2
00000836: SWAP1
00000837: SSTORE
00000838: POP
00000839: PUSH2 0x0842
00000841: JUMP
00000842: JUMPDEST
00000843: JUMPDEST
00000844: POP
00000845: POP
00000846: POP
00000847: JUMP
00000848: JUMPDEST
00000849: PUSH1 0x00
00000851: POP
00000852: PUSH1 0x00
00000854: PUSH1 0x00
00000856: DUP2
00000857: MSTORE
00000858: PUSH1 0x20
00000860: ADD
00000861: PUSH1 0x00
00000863: KECCAK256
00000864: PUSH1 0x00
00000866: POP
00000867: SWAP2
00000868: POP
00000869: DUP2
00000870: PUSH1 0x00
00000872: DUP5
00000873: DUP2
00000874: MSTORE
00000875: PUSH1 0x20
00000877: ADD
00000878: SWAP1
00000879: DUP2
00000880: KECCAK256
00000881: PUSH1 0x00
00000883: POP
00000884: SWAP1
00000885: POP
00000886: PUSH1 0x00
00000888: DUP2
00000889: PUSH1 0x02
00000891: EXP
00000892: DUP2
00000893: SLOAD
00000894: DUP2
00000895: PUSH1 0xff
00000897: MUL
00000898: NOT
00000899: AND
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x330 && pc<=0x390) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000330: PUSH1 0x00
00000332: DUP2
00000333: MSTORE
00000334: PUSH1 0x20
00000336: ADD
00000337: SWAP1
00000338: DUP2
00000339: MSTORE
0000033a: PUSH1 0x20
0000033c: ADD
0000033d: PUSH1 0x00
0000033f: KECCAK256
00000340: PUSH1 0x00
00000342: POP
00000343: SWAP1
00000344: POP
00000345: DUP3
00000346: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000035b: AND
0000035c: PUSH1 0x00
0000035e: DUP4
0000035f: PUSH1 0x40
00000361: MLOAD
00000362: DUP1
00000363: SWAP1
00000364: POP
00000365: PUSH1 0x00
00000367: PUSH1 0x40
00000369: MLOAD
0000036a: DUP1
0000036b: DUP4
0000036c: SUB
0000036d: DUP2
0000036e: DUP6
0000036f: DUP9
00000370: DUP9
00000371: CALL
00000372: SWAP4
00000373: POP
00000374: POP
00000375: POP
00000376: POP
00000377: POP
00000378: JUMPDEST
00000379: POP
0000037a: POP
0000037b: POP
0000037c: JUMP
0000037d: JUMPDEST
0000037e: PUSH1 0x00
00000380: PUSH1 0x00
00000382: PUSH1 0x00
00000384: PUSH1 0x00
00000386: POP
00000387: PUSH1 0x00
00000389: PUSH1 0x00
0000038b: DUP2
0000038c: MSTORE
0000038d: PUSH1 0x20
0000038f: ADD
00000390: SWAP1
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x5c0 && pc<=0x630) print; }'"'" in /tmp/codex-cfs6mgzj
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x700 && pc<=0x750) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
000005c0: SLOAD
000005c1: SWAP1
000005c2: PUSH2 0x0100
000005c5: EXP
000005c6: SWAP1
000005c7: DIV
000005c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005dd: AND
000005de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005f3: AND
000005f4: CALLER
000005f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000060a: AND
0000060b: EQ
0000060c: ISZERO
0000060d: PUSH2 0x06d6
00000610: JUMPI
00000611: PUSH1 0x00
00000613: SWAP3
00000614: POP
00000615: JUMPDEST
00000616: DUP4
00000617: PUSH1 0x05
00000619: ADD
0000061a: PUSH1 0x00
0000061c: POP
0000061d: SLOAD
0000061e: DUP4
0000061f: LT
00000620: ISZERO
00000621: PUSH2 0x06d1
00000624: JUMPI
00000625: DUP4
00000626: PUSH1 0x00
00000628: ADD
00000629: PUSH1 0x00
0000062b: POP
0000062c: PUSH1 0x00
0000062e: DUP5
0000062f: DUP2
00000630: MSTORE
succeeded in 0ms:
00000700: SWAP1
00000701: POP
00000702: DUP1
00000703: PUSH1 0x02
00000705: ADD
00000706: PUSH1 0x00
00000708: SWAP1
00000709: SLOAD
0000070a: SWAP1
0000070b: PUSH2 0x0100
0000070e: EXP
0000070f: SWAP1
00000710: DIV
00000711: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000726: AND
00000727: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000073c: AND
0000073d: SELFDESTRUCT
0000073e: JUMPDEST
0000073f: POP
00000740: JUMP
00000741: JUMPDEST
00000742: PUSH1 0x00
00000744: PUSH1 0x00
00000746: PUSH1 0x00
00000748: POP
00000749: PUSH1 0x00
0000074b: PUSH1 0x00
0000074d: DUP2
0000074e: MSTORE
0000074f: PUSH1 0x20
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc<=0x130) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00c1
0000000a: JUMPI
0000000b: PUSH1 0x00
0000000d: CALLDATALOAD
0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002c: SWAP1
0000002d: DIV
0000002e: DUP1
0000002f: PUSH4 0x12065fe0
00000034: EQ
00000035: PUSH2 0x0128
00000038: JUMPI
00000039: DUP1
0000003a: PUSH4 0x35f46994
0000003f: EQ
00000040: PUSH2 0x014b
00000043: JUMPI
00000044: DUP1
00000045: PUSH4 0x4001a81f
0000004a: EQ
0000004b: PUSH2 0x015a
0000004e: JUMPI
0000004f: DUP1
00000050: PUSH4 0x5dea5e47
00000055: EQ
00000056: PUSH2 0x0184
00000059: JUMPI
0000005a: DUP1
0000005b: PUSH4 0x690b90a9
00000060: EQ
00000061: PUSH2 0x019c
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x6adcef6b
0000006b: EQ
0000006c: PUSH2 0x01bf
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x6ccb5d02
00000076: EQ
00000077: PUSH2 0x01d7
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x75724990
00000081: EQ
00000082: PUSH2 0x0219
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x7f616488
0000008c: EQ
0000008d: PUSH2 0x023a
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0x9e1a00aa
00000097: EQ
00000098: PUSH2 0x025d
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0xd5002f2e
000000a2: EQ
000000a3: PUSH2 0x027e
000000a6: JUMPI
000000a7: DUP1
000000a8: PUSH4 0xdda1a1e6
000000ad: EQ
000000ae: PUSH2 0x02a1
000000b1: JUMPI
000000b2: DUP1
000000b3: PUSH4 0xf50ad617
000000b8: EQ
000000b9: PUSH2 0x02b9
000000bc: JUMPI
000000bd: PUSH2 0x00c1
000000c0: JUMP
000000c1: JUMPDEST
000000c2: PUSH2 0x0126
000000c5: JUMPDEST
000000c6: NUMBER
000000c7: PUSH32 0x5d6ac9b7defd8fbb29ef2ab0f08c3744192b3777466dd98d1fd7daed5064b6db
000000e8: CALLER
000000e9: CALLVALUE
000000ea: TIMESTAMP
000000eb: PUSH1 0x40
000000ed: MLOAD
000000ee: DUP1
000000ef: DUP5
000000f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000105: AND
00000106: DUP2
00000107: MSTORE
00000108: PUSH1 0x20
0000010a: ADD
0000010b: DUP4
0000010c: DUP2
0000010d: MSTORE
0000010e: PUSH1 0x20
00000110: ADD
00000111: DUP3
00000112: DUP2
00000113: MSTORE
00000114: PUSH1 0x20
00000116: ADD
00000117: SWAP4
00000118: POP
00000119: POP
0000011a: POP
0000011b: POP
0000011c: PUSH1 0x40
0000011e: MLOAD
0000011f: DUP1
00000120: SWAP2
00000121: SUB
00000122: SWAP1
00000123: LOG2
00000124: JUMPDEST
00000125: JUMP
00000126: JUMPDEST
00000127: STOP
00000128: JUMPDEST
00000129: PUSH2 0x0135
0000012c: PUSH1 0x04
0000012e: DUP1
0000012f: POP
00000130: POP
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x128 && pc<=0x2c8) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000128: JUMPDEST
00000129: PUSH2 0x0135
0000012c: PUSH1 0x04
0000012e: DUP1
0000012f: POP
00000130: POP
00000131: PUSH2 0x0465
00000134: JUMP
00000135: JUMPDEST
00000136: PUSH1 0x40
00000138: MLOAD
00000139: DUP1
0000013a: DUP3
0000013b: DUP2
0000013c: MSTORE
0000013d: PUSH1 0x20
0000013f: ADD
00000140: SWAP2
00000141: POP
00000142: POP
00000143: PUSH1 0x40
00000145: MLOAD
00000146: DUP1
00000147: SWAP2
00000148: SUB
00000149: SWAP1
0000014a: RETURN
0000014b: JUMPDEST
0000014c: PUSH2 0x0158
0000014f: PUSH1 0x04
00000151: DUP1
00000152: POP
00000153: POP
00000154: PUSH2 0x06e3
00000157: JUMP
00000158: JUMPDEST
00000159: STOP
0000015a: JUMPDEST
0000015b: PUSH2 0x0182
0000015e: PUSH1 0x04
00000160: DUP1
00000161: DUP1
00000162: CALLDATALOAD
00000163: SWAP1
00000164: PUSH1 0x20
00000166: ADD
00000167: SWAP1
00000168: SWAP2
00000169: SWAP1
0000016a: DUP1
0000016b: CALLDATALOAD
0000016c: SWAP1
0000016d: PUSH1 0x20
0000016f: ADD
00000170: SWAP1
00000171: SWAP2
00000172: SWAP1
00000173: DUP1
00000174: CALLDATALOAD
00000175: SWAP1
00000176: PUSH1 0x20
00000178: ADD
00000179: SWAP1
0000017a: SWAP2
0000017b: SWAP1
0000017c: POP
0000017d: POP
0000017e: PUSH2 0x037d
00000181: JUMP
00000182: JUMPDEST
00000183: STOP
00000184: JUMPDEST
00000185: PUSH2 0x019a
00000188: PUSH1 0x04
0000018a: DUP1
0000018b: DUP1
0000018c: CALLDATALOAD
0000018d: SWAP1
0000018e: PUSH1 0x20
00000190: ADD
00000191: SWAP1
00000192: SWAP2
00000193: SWAP1
00000194: POP
00000195: POP
00000196: PUSH2 0x0947
00000199: JUMP
0000019a: JUMPDEST
0000019b: STOP
0000019c: JUMPDEST
0000019d: PUSH2 0x01a9
000001a0: PUSH1 0x04
000001a2: DUP1
000001a3: POP
000001a4: POP
000001a5: PUSH2 0x04bc
000001a8: JUMP
000001a9: JUMPDEST
000001aa: PUSH1 0x40
000001ac: MLOAD
000001ad: DUP1
000001ae: DUP3
000001af: DUP2
000001b0: MSTORE
000001b1: PUSH1 0x20
000001b3: ADD
000001b4: SWAP2
000001b5: POP
000001b6: POP
000001b7: PUSH1 0x40
000001b9: MLOAD
000001ba: DUP1
000001bb: SWAP2
000001bc: SUB
000001bd: SWAP1
000001be: RETURN
000001bf: JUMPDEST
000001c0: PUSH2 0x01d5
000001c3: PUSH1 0x04
000001c5: DUP1
000001c6: DUP1
000001c7: CALLDATALOAD
000001c8: SWAP1
000001c9: PUSH1 0x20
000001cb: ADD
000001cc: SWAP1
000001cd: SWAP2
000001ce: SWAP1
000001cf: POP
000001d0: POP
000001d1: PUSH2 0x0594
000001d4: JUMP
000001d5: JUMPDEST
000001d6: STOP
000001d7: JUMPDEST
000001d8: PUSH2 0x01ed
000001db: PUSH1 0x04
000001dd: DUP1
000001de: DUP1
000001df: CALLDATALOAD
000001e0: SWAP1
000001e1: PUSH1 0x20
000001e3: ADD
000001e4: SWAP1
000001e5: SWAP2
000001e6: SWAP1
000001e7: POP
000001e8: POP
000001e9: PUSH2 0x0522
000001ec: JUMP
000001ed: JUMPDEST
000001ee: PUSH1 0x40
000001f0: MLOAD
000001f1: DUP1
000001f2: DUP3
000001f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000208: AND
00000209: DUP2
0000020a: MSTORE
0000020b: PUSH1 0x20
0000020d: ADD
0000020e: SWAP2
0000020f: POP
00000210: POP
00000211: PUSH1 0x40
00000213: MLOAD
00000214: DUP1
00000215: SWAP2
00000216: SUB
00000217: SWAP1
00000218: RETURN
00000219: JUMPDEST
0000021a: PUSH2 0x0238
0000021d: PUSH1 0x04
0000021f: DUP1
00000220: DUP1
00000221: CALLDATALOAD
00000222: SWAP1
00000223: PUSH1 0x20
00000225: ADD
00000226: SWAP1
00000227: SWAP2
00000228: SWAP1
00000229: DUP1
0000022a: CALLDATALOAD
0000022b: SWAP1
0000022c: PUSH1 0x20
0000022e: ADD
0000022f: SWAP1
00000230: SWAP2
00000231: SWAP1
00000232: POP
00000233: POP
00000234: PUSH2 0x0741
00000237: JUMP
00000238: JUMPDEST
00000239: STOP
0000023a: JUMPDEST
0000023b: PUSH2 0x0247
0000023e: PUSH1 0x04
00000240: DUP1
00000241: POP
00000242: POP
00000243: PUSH2 0x04ef
00000246: JUMP
00000247: JUMPDEST
00000248: PUSH1 0x40
0000024a: MLOAD
0000024b: DUP1
0000024c: DUP3
0000024d: DUP2
0000024e: MSTORE
0000024f: PUSH1 0x20
00000251: ADD
00000252: SWAP2
00000253: POP
00000254: POP
00000255: PUSH1 0x40
00000257: MLOAD
00000258: DUP1
00000259: SWAP2
0000025a: SUB
0000025b: SWAP1
0000025c: RETURN
0000025d: JUMPDEST
0000025e: PUSH2 0x027c
00000261: PUSH1 0x04
00000263: DUP1
00000264: DUP1
00000265: CALLDATALOAD
00000266: SWAP1
00000267: PUSH1 0x20
00000269: ADD
0000026a: SWAP1
0000026b: SWAP2
0000026c: SWAP1
0000026d: DUP1
0000026e: CALLDATALOAD
0000026f: SWAP1
00000270: PUSH1 0x20
00000272: ADD
00000273: SWAP1
00000274: SWAP2
00000275: SWAP1
00000276: POP
00000277: POP
00000278: PUSH2 0x02c8
0000027b: JUMP
0000027c: JUMPDEST
0000027d: STOP
0000027e: JUMPDEST
0000027f: PUSH2 0x028b
00000282: PUSH1 0x04
00000284: DUP1
00000285: POP
00000286: POP
00000287: PUSH2 0x0489
0000028a: JUMP
0000028b: JUMPDEST
0000028c: PUSH1 0x40
0000028e: MLOAD
0000028f: DUP1
00000290: DUP3
00000291: DUP2
00000292: MSTORE
00000293: PUSH1 0x20
00000295: ADD
00000296: SWAP2
00000297: POP
00000298: POP
00000299: PUSH1 0x40
0000029b: MLOAD
0000029c: DUP1
0000029d: SWAP2
0000029e: SUB
0000029f: SWAP1
000002a0: RETURN
000002a1: JUMPDEST
000002a2: PUSH2 0x02b7
000002a5: PUSH1 0x04
000002a7: DUP1
000002a8: DUP1
000002a9: CALLDATALOAD
000002aa: SWAP1
000002ab: PUSH1 0x20
000002ad: ADD
000002ae: SWAP1
000002af: SWAP2
000002b0: SWAP1
000002b1: POP
000002b2: POP
000002b3: PUSH2 0x0848
000002b6: JUMP
000002b7: JUMPDEST
000002b8: STOP
000002b9: JUMPDEST
000002ba: PUSH2 0x02c6
000002bd: PUSH1 0x04
000002bf: DUP1
000002c0: POP
000002c1: POP
000002c2: PUSH2 0x08a6
000002c5: JUMP
000002c6: JUMPDEST
000002c7: STOP
000002c8: JUMPDEST
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x2c8 && pc<=0x380) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
000002c8: JUMPDEST
000002c9: PUSH1 0x00
000002cb: NUMBER
000002cc: PUSH32 0x5ab8dc610f1c5d672561a1c397fb11717ad7b220565f7916904984963a1f43ef
000002ed: DUP5
000002ee: DUP5
000002ef: TIMESTAMP
000002f0: PUSH1 0x40
000002f2: MLOAD
000002f3: DUP1
000002f4: DUP5
000002f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000030a: AND
0000030b: DUP2
0000030c: MSTORE
0000030d: PUSH1 0x20
0000030f: ADD
00000310: DUP4
00000311: DUP2
00000312: MSTORE
00000313: PUSH1 0x20
00000315: ADD
00000316: DUP3
00000317: DUP2
00000318: MSTORE
00000319: PUSH1 0x20
0000031b: ADD
0000031c: SWAP4
0000031d: POP
0000031e: POP
0000031f: POP
00000320: POP
00000321: PUSH1 0x40
00000323: MLOAD
00000324: DUP1
00000325: SWAP2
00000326: SUB
00000327: SWAP1
00000328: LOG2
00000329: PUSH1 0x00
0000032b: PUSH1 0x00
0000032d: POP
0000032e: PUSH1 0x00
00000330: PUSH1 0x00
00000332: DUP2
00000333: MSTORE
00000334: PUSH1 0x20
00000336: ADD
00000337: SWAP1
00000338: DUP2
00000339: MSTORE
0000033a: PUSH1 0x20
0000033c: ADD
0000033d: PUSH1 0x00
0000033f: KECCAK256
00000340: PUSH1 0x00
00000342: POP
00000343: SWAP1
00000344: POP
00000345: DUP3
00000346: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000035b: AND
0000035c: PUSH1 0x00
0000035e: DUP4
0000035f: PUSH1 0x40
00000361: MLOAD
00000362: DUP1
00000363: SWAP1
00000364: POP
00000365: PUSH1 0x00
00000367: PUSH1 0x40
00000369: MLOAD
0000036a: DUP1
0000036b: DUP4
0000036c: SUB
0000036d: DUP2
0000036e: DUP6
0000036f: DUP9
00000370: DUP9
00000371: CALL
00000372: SWAP4
00000373: POP
00000374: POP
00000375: POP
00000376: POP
00000377: POP
00000378: JUMPDEST
00000379: POP
0000037a: POP
0000037b: POP
0000037c: JUMP
0000037d: JUMPDEST
0000037e: PUSH1 0x00
00000380: PUSH1 0x00
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x380 && pc<=0x520) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000380: PUSH1 0x00
00000382: PUSH1 0x00
00000384: PUSH1 0x00
00000386: POP
00000387: PUSH1 0x00
00000389: PUSH1 0x00
0000038b: DUP2
0000038c: MSTORE
0000038d: PUSH1 0x20
0000038f: ADD
00000390: SWAP1
00000391: DUP2
00000392: MSTORE
00000393: PUSH1 0x20
00000395: ADD
00000396: PUSH1 0x00
00000398: KECCAK256
00000399: PUSH1 0x00
0000039b: POP
0000039c: SWAP2
0000039d: POP
0000039e: DUP2
0000039f: PUSH1 0x01
000003a1: ADD
000003a2: PUSH1 0x00
000003a4: POP
000003a5: PUSH1 0x00
000003a7: DUP7
000003a8: DUP2
000003a9: MSTORE
000003aa: PUSH1 0x20
000003ac: ADD
000003ad: SWAP1
000003ae: DUP2
000003af: MSTORE
000003b0: PUSH1 0x20
000003b2: ADD
000003b3: PUSH1 0x00
000003b5: KECCAK256
000003b6: PUSH1 0x00
000003b8: POP
000003b9: SWAP1
000003ba: POP
000003bb: PUSH1 0x60
000003bd: PUSH1 0x40
000003bf: MLOAD
000003c0: SWAP1
000003c1: DUP2
000003c2: ADD
000003c3: PUSH1 0x40
000003c5: MSTORE
000003c6: DUP1
000003c7: DUP6
000003c8: DUP2
000003c9: MSTORE
000003ca: PUSH1 0x20
000003cc: ADD
000003cd: DUP5
000003ce: DUP2
000003cf: MSTORE
000003d0: PUSH1 0x20
000003d2: ADD
000003d3: TIMESTAMP
000003d4: DUP2
000003d5: MSTORE
000003d6: PUSH1 0x20
000003d8: ADD
000003d9: POP
000003da: DUP2
000003db: PUSH1 0x00
000003dd: ADD
000003de: PUSH1 0x00
000003e0: POP
000003e1: PUSH1 0x00
000003e3: DUP4
000003e4: PUSH1 0x01
000003e6: ADD
000003e7: PUSH1 0x00
000003e9: POP
000003ea: SLOAD
000003eb: DUP2
000003ec: MSTORE
000003ed: PUSH1 0x20
000003ef: ADD
000003f0: SWAP1
000003f1: DUP2
000003f2: MSTORE
000003f3: PUSH1 0x20
000003f5: ADD
000003f6: PUSH1 0x00
000003f8: KECCAK256
000003f9: PUSH1 0x00
000003fb: POP
000003fc: PUSH1 0x00
000003fe: DUP3
000003ff: ADD
00000400: MLOAD
00000401: DUP2
00000402: PUSH1 0x00
00000404: ADD
00000405: PUSH1 0x00
00000407: PUSH2 0x0100
0000040a: EXP
0000040b: DUP2
0000040c: SLOAD
0000040d: DUP2
0000040e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000423: MUL
00000424: NOT
00000425: AND
00000426: SWAP1
00000427: DUP4
00000428: MUL
00000429: OR
0000042a: SWAP1
0000042b: SSTORE
0000042c: POP
0000042d: PUSH1 0x20
0000042f: DUP3
00000430: ADD
00000431: MLOAD
00000432: DUP2
00000433: PUSH1 0x01
00000435: ADD
00000436: PUSH1 0x00
00000438: POP
00000439: SSTORE
0000043a: PUSH1 0x40
0000043c: DUP3
0000043d: ADD
0000043e: MLOAD
0000043f: DUP2
00000440: PUSH1 0x02
00000442: ADD
00000443: PUSH1 0x00
00000445: POP
00000446: SSTORE
00000447: SWAP1
00000448: POP
00000449: POP
0000044a: DUP1
0000044b: PUSH1 0x01
0000044d: ADD
0000044e: PUSH1 0x00
00000450: DUP2
00000451: DUP2
00000452: POP
00000453: SLOAD
00000454: PUSH1 0x01
00000456: ADD
00000457: SWAP2
00000458: SWAP1
00000459: POP
0000045a: DUP2
0000045b: SWAP1
0000045c: SSTORE
0000045d: POP
0000045e: JUMPDEST
0000045f: POP
00000460: POP
00000461: POP
00000462: POP
00000463: POP
00000464: JUMP
00000465: JUMPDEST
00000466: PUSH1 0x00
00000468: ADDRESS
00000469: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000047e: AND
0000047f: BALANCE
00000480: SWAP1
00000481: POP
00000482: PUSH2 0x0486
00000485: JUMP
00000486: JUMPDEST
00000487: SWAP1
00000488: JUMP
00000489: JUMPDEST
0000048a: PUSH1 0x00
0000048c: PUSH1 0x00
0000048e: PUSH1 0x00
00000490: PUSH1 0x00
00000492: POP
00000493: PUSH1 0x00
00000495: PUSH1 0x00
00000497: DUP2
00000498: MSTORE
00000499: PUSH1 0x20
0000049b: ADD
0000049c: SWAP1
0000049d: DUP2
0000049e: MSTORE
0000049f: PUSH1 0x20
000004a1: ADD
000004a2: PUSH1 0x00
000004a4: KECCAK256
000004a5: PUSH1 0x00
000004a7: POP
000004a8: SWAP1
000004a9: POP
000004aa: DUP1
000004ab: PUSH1 0x06
000004ad: ADD
000004ae: PUSH1 0x00
000004b0: POP
000004b1: SLOAD
000004b2: SWAP2
000004b3: POP
000004b4: PUSH2 0x04b8
000004b7: JUMP
000004b8: JUMPDEST
000004b9: POP
000004ba: SWAP1
000004bb: JUMP
000004bc: JUMPDEST
000004bd: PUSH1 0x00
000004bf: PUSH1 0x00
000004c1: PUSH1 0x00
000004c3: PUSH1 0x00
000004c5: POP
000004c6: PUSH1 0x00
000004c8: PUSH1 0x00
000004ca: DUP2
000004cb: MSTORE
000004cc: PUSH1 0x20
000004ce: ADD
000004cf: SWAP1
000004d0: DUP2
000004d1: MSTORE
000004d2: PUSH1 0x20
000004d4: ADD
000004d5: PUSH1 0x00
000004d7: KECCAK256
000004d8: PUSH1 0x00
000004da: POP
000004db: SWAP1
000004dc: POP
000004dd: DUP1
000004de: PUSH1 0x05
000004e0: ADD
000004e1: PUSH1 0x00
000004e3: POP
000004e4: SLOAD
000004e5: SWAP2
000004e6: POP
000004e7: PUSH2 0x04eb
000004ea: JUMP
000004eb: JUMPDEST
000004ec: POP
000004ed: SWAP1
000004ee: JUMP
000004ef: JUMPDEST
000004f0: PUSH1 0x00
000004f2: PUSH1 0x00
000004f4: PUSH1 0x00
000004f6: PUSH1 0x00
000004f8: POP
000004f9: PUSH1 0x00
000004fb: PUSH1 0x00
000004fd: DUP2
000004fe: MSTORE
000004ff: PUSH1 0x20
00000501: ADD
00000502: SWAP1
00000503: DUP2
00000504: MSTORE
00000505: PUSH1 0x20
00000507: ADD
00000508: PUSH1 0x00
0000050a: KECCAK256
0000050b: PUSH1 0x00
0000050d: POP
0000050e: SWAP1
0000050f: POP
00000510: DUP1
00000511: PUSH1 0x07
00000513: ADD
00000514: PUSH1 0x00
00000516: POP
00000517: SLOAD
00000518: SWAP2
00000519: POP
0000051a: PUSH2 0x051e
0000051d: JUMP
0000051e: JUMPDEST
0000051f: POP
00000520: SWAP1
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x520 && pc<=0x700) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000520: SWAP1
00000521: JUMP
00000522: JUMPDEST
00000523: PUSH1 0x00
00000525: PUSH1 0x00
00000527: PUSH1 0x00
00000529: PUSH1 0x00
0000052b: PUSH1 0x00
0000052d: POP
0000052e: PUSH1 0x00
00000530: PUSH1 0x00
00000532: DUP2
00000533: MSTORE
00000534: PUSH1 0x20
00000536: ADD
00000537: SWAP1
00000538: DUP2
00000539: MSTORE
0000053a: PUSH1 0x20
0000053c: ADD
0000053d: PUSH1 0x00
0000053f: KECCAK256
00000540: PUSH1 0x00
00000542: POP
00000543: SWAP2
00000544: POP
00000545: DUP2
00000546: PUSH1 0x00
00000548: ADD
00000549: PUSH1 0x00
0000054b: POP
0000054c: PUSH1 0x00
0000054e: DUP6
0000054f: DUP2
00000550: MSTORE
00000551: PUSH1 0x20
00000553: ADD
00000554: SWAP1
00000555: DUP2
00000556: MSTORE
00000557: PUSH1 0x20
00000559: ADD
0000055a: PUSH1 0x00
0000055c: KECCAK256
0000055d: PUSH1 0x00
0000055f: POP
00000560: SWAP1
00000561: POP
00000562: DUP1
00000563: PUSH1 0x00
00000565: ADD
00000566: PUSH1 0x00
00000568: SWAP1
00000569: SLOAD
0000056a: SWAP1
0000056b: PUSH2 0x0100
0000056e: EXP
0000056f: SWAP1
00000570: DIV
00000571: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000586: AND
00000587: SWAP3
00000588: POP
00000589: PUSH2 0x058d
0000058c: JUMP
0000058d: JUMPDEST
0000058e: POP
0000058f: POP
00000590: SWAP2
00000591: SWAP1
00000592: POP
00000593: JUMP
00000594: JUMPDEST
00000595: PUSH1 0x00
00000597: PUSH1 0x00
00000599: PUSH1 0x00
0000059b: PUSH1 0x00
0000059d: PUSH1 0x00
0000059f: PUSH1 0x00
000005a1: POP
000005a2: PUSH1 0x00
000005a4: PUSH1 0x00
000005a6: DUP2
000005a7: MSTORE
000005a8: PUSH1 0x20
000005aa: ADD
000005ab: SWAP1
000005ac: DUP2
000005ad: MSTORE
000005ae: PUSH1 0x20
000005b0: ADD
000005b1: PUSH1 0x00
000005b3: KECCAK256
000005b4: PUSH1 0x00
000005b6: POP
000005b7: SWAP4
000005b8: POP
000005b9: DUP4
000005ba: PUSH1 0x02
000005bc: ADD
000005bd: PUSH1 0x00
000005bf: SWAP1
000005c0: SLOAD
000005c1: SWAP1
000005c2: PUSH2 0x0100
000005c5: EXP
000005c6: SWAP1
000005c7: DIV
000005c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005dd: AND
000005de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005f3: AND
000005f4: CALLER
000005f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000060a: AND
0000060b: EQ
0000060c: ISZERO
0000060d: PUSH2 0x06d6
00000610: JUMPI
00000611: PUSH1 0x00
00000613: SWAP3
00000614: POP
00000615: JUMPDEST
00000616: DUP4
00000617: PUSH1 0x05
00000619: ADD
0000061a: PUSH1 0x00
0000061c: POP
0000061d: SLOAD
0000061e: DUP4
0000061f: LT
00000620: ISZERO
00000621: PUSH2 0x06d1
00000624: JUMPI
00000625: DUP4
00000626: PUSH1 0x00
00000628: ADD
00000629: PUSH1 0x00
0000062b: POP
0000062c: PUSH1 0x00
0000062e: DUP5
0000062f: DUP2
00000630: MSTORE
00000631: PUSH1 0x20
00000633: ADD
00000634: SWAP1
00000635: DUP2
00000636: MSTORE
00000637: PUSH1 0x20
00000639: ADD
0000063a: PUSH1 0x00
0000063c: KECCAK256
0000063d: PUSH1 0x00
0000063f: POP
00000640: SWAP2
00000641: POP
00000642: PUSH1 0x00
00000644: DUP3
00000645: PUSH1 0x01
00000647: ADD
00000648: PUSH1 0x00
0000064a: POP
0000064b: SLOAD
0000064c: DUP7
0000064d: MUL
0000064e: MUL
0000064f: SWAP1
00000650: POP
00000651: DUP1
00000652: ADDRESS
00000653: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000668: AND
00000669: BALANCE
0000066a: LT
0000066b: ISZERO
0000066c: ISZERO
0000066d: PUSH2 0x06be
00000670: JUMPI
00000671: PUSH1 0x01
00000673: DUP3
00000674: PUSH1 0x02
00000676: ADD
00000677: PUSH1 0x00
00000679: SWAP1
0000067a: SLOAD
0000067b: SWAP1
0000067c: PUSH2 0x0100
0000067f: EXP
00000680: SWAP1
00000681: DIV
00000682: PUSH1 0xff
00000684: AND
00000685: EQ
00000686: ISZERO
00000687: PUSH2 0x06b9
0000068a: JUMPI
0000068b: PUSH2 0x06b8
0000068e: DUP3
0000068f: PUSH1 0x00
00000691: ADD
00000692: PUSH1 0x00
00000694: SWAP1
00000695: SLOAD
00000696: SWAP1
00000697: PUSH2 0x0100
0000069a: EXP
0000069b: SWAP1
0000069c: DIV
0000069d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006b2: AND
000006b3: DUP3
000006b4: PUSH2 0x02c8
000006b7: JUMP
000006b8: JUMPDEST
000006b9: JUMPDEST
000006ba: PUSH2 0x06c3
000006bd: JUMP
000006be: JUMPDEST
000006bf: PUSH2 0x0002
000006c2: JUMP
000006c3: JUMPDEST
000006c4: JUMPDEST
000006c5: DUP3
000006c6: DUP1
000006c7: PUSH1 0x01
000006c9: ADD
000006ca: SWAP4
000006cb: POP
000006cc: POP
000006cd: PUSH2 0x0615
000006d0: JUMP
000006d1: JUMPDEST
000006d2: PUSH2 0x06db
000006d5: JUMP
000006d6: JUMPDEST
000006d7: PUSH2 0x0002
000006da: JUMP
000006db: JUMPDEST
000006dc: JUMPDEST
000006dd: POP
000006de: POP
000006df: POP
000006e0: POP
000006e1: POP
000006e2: JUMP
000006e3: JUMPDEST
000006e4: PUSH1 0x00
000006e6: PUSH1 0x00
000006e8: PUSH1 0x00
000006ea: POP
000006eb: PUSH1 0x00
000006ed: PUSH1 0x00
000006ef: DUP2
000006f0: MSTORE
000006f1: PUSH1 0x20
000006f3: ADD
000006f4: SWAP1
000006f5: DUP2
000006f6: MSTORE
000006f7: PUSH1 0x20
000006f9: ADD
000006fa: PUSH1 0x00
000006fc: KECCAK256
000006fd: PUSH1 0x00
000006ff: POP
00000700: SWAP1
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x700 && pc<=0x900) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000700: SWAP1
00000701: POP
00000702: DUP1
00000703: PUSH1 0x02
00000705: ADD
00000706: PUSH1 0x00
00000708: SWAP1
00000709: SLOAD
0000070a: SWAP1
0000070b: PUSH2 0x0100
0000070e: EXP
0000070f: SWAP1
00000710: DIV
00000711: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000726: AND
00000727: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000073c: AND
0000073d: SELFDESTRUCT
0000073e: JUMPDEST
0000073f: POP
00000740: JUMP
00000741: JUMPDEST
00000742: PUSH1 0x00
00000744: PUSH1 0x00
00000746: PUSH1 0x00
00000748: POP
00000749: PUSH1 0x00
0000074b: PUSH1 0x00
0000074d: DUP2
0000074e: MSTORE
0000074f: PUSH1 0x20
00000751: ADD
00000752: SWAP1
00000753: DUP2
00000754: MSTORE
00000755: PUSH1 0x20
00000757: ADD
00000758: PUSH1 0x00
0000075a: KECCAK256
0000075b: PUSH1 0x00
0000075d: POP
0000075e: SWAP1
0000075f: POP
00000760: DUP1
00000761: PUSH1 0x06
00000763: ADD
00000764: PUSH1 0x00
00000766: POP
00000767: SLOAD
00000768: DUP3
00000769: GT
0000076a: ISZERO
0000076b: ISZERO
0000076c: PUSH2 0x083d
0000076f: JUMPI
00000770: PUSH1 0x60
00000772: PUSH1 0x40
00000774: MLOAD
00000775: SWAP1
00000776: DUP2
00000777: ADD
00000778: PUSH1 0x40
0000077a: MSTORE
0000077b: DUP1
0000077c: DUP5
0000077d: DUP2
0000077e: MSTORE
0000077f: PUSH1 0x20
00000781: ADD
00000782: DUP4
00000783: DUP2
00000784: MSTORE
00000785: PUSH1 0x20
00000787: ADD
00000788: PUSH1 0x01
0000078a: DUP2
0000078b: MSTORE
0000078c: PUSH1 0x20
0000078e: ADD
0000078f: POP
00000790: DUP2
00000791: PUSH1 0x00
00000793: ADD
00000794: PUSH1 0x00
00000796: POP
00000797: PUSH1 0x00
00000799: DUP4
0000079a: PUSH1 0x05
0000079c: ADD
0000079d: PUSH1 0x00
0000079f: POP
000007a0: SLOAD
000007a1: DUP2
000007a2: MSTORE
000007a3: PUSH1 0x20
000007a5: ADD
000007a6: SWAP1
000007a7: DUP2
000007a8: MSTORE
000007a9: PUSH1 0x20
000007ab: ADD
000007ac: PUSH1 0x00
000007ae: KECCAK256
000007af: PUSH1 0x00
000007b1: POP
000007b2: PUSH1 0x00
000007b4: DUP3
000007b5: ADD
000007b6: MLOAD
000007b7: DUP2
000007b8: PUSH1 0x00
000007ba: ADD
000007bb: PUSH1 0x00
000007bd: PUSH2 0x0100
000007c0: EXP
000007c1: DUP2
000007c2: SLOAD
000007c3: DUP2
000007c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007d9: MUL
000007da: NOT
000007db: AND
000007dc: SWAP1
000007dd: DUP4
000007de: MUL
000007df: OR
000007e0: SWAP1
000007e1: SSTORE
000007e2: POP
000007e3: PUSH1 0x20
000007e5: DUP3
000007e6: ADD
000007e7: MLOAD
000007e8: DUP2
000007e9: PUSH1 0x01
000007eb: ADD
000007ec: PUSH1 0x00
000007ee: POP
000007ef: SSTORE
000007f0: PUSH1 0x40
000007f2: DUP3
000007f3: ADD
000007f4: MLOAD
000007f5: DUP2
000007f6: PUSH1 0x02
000007f8: ADD
000007f9: PUSH1 0x00
000007fb: PUSH2 0x0100
000007fe: EXP
000007ff: DUP2
00000800: SLOAD
00000801: DUP2
00000802: PUSH1 0xff
00000804: MUL
00000805: NOT
00000806: AND
00000807: SWAP1
00000808: DUP4
00000809: MUL
0000080a: OR
0000080b: SWAP1
0000080c: SSTORE
0000080d: POP
0000080e: SWAP1
0000080f: POP
00000810: POP
00000811: DUP2
00000812: DUP2
00000813: PUSH1 0x06
00000815: ADD
00000816: PUSH1 0x00
00000818: DUP3
00000819: DUP3
0000081a: DUP3
0000081b: POP
0000081c: SLOAD
0000081d: SUB
0000081e: SWAP3
0000081f: POP
00000820: POP
00000821: DUP2
00000822: SWAP1
00000823: SSTORE
00000824: POP
00000825: DUP1
00000826: PUSH1 0x05
00000828: ADD
00000829: PUSH1 0x00
0000082b: DUP2
0000082c: DUP2
0000082d: POP
0000082e: SLOAD
0000082f: PUSH1 0x01
00000831: ADD
00000832: SWAP2
00000833: SWAP1
00000834: POP
00000835: DUP2
00000836: SWAP1
00000837: SSTORE
00000838: POP
00000839: PUSH2 0x0842
0000083c: JUMP
0000083d: JUMPDEST
0000083e: PUSH2 0x0002
00000841: JUMP
00000842: JUMPDEST
00000843: JUMPDEST
00000844: POP
00000845: POP
00000846: POP
00000847: JUMP
00000848: JUMPDEST
00000849: PUSH1 0x00
0000084b: PUSH1 0x00
0000084d: PUSH1 0x00
0000084f: PUSH1 0x00
00000851: POP
00000852: PUSH1 0x00
00000854: PUSH1 0x00
00000856: DUP2
00000857: MSTORE
00000858: PUSH1 0x20
0000085a: ADD
0000085b: SWAP1
0000085c: DUP2
0000085d: MSTORE
0000085e: PUSH1 0x20
00000860: ADD
00000861: PUSH1 0x00
00000863: KECCAK256
00000864: PUSH1 0x00
00000866: POP
00000867: SWAP2
00000868: POP
00000869: DUP2
0000086a: PUSH1 0x00
0000086c: ADD
0000086d: PUSH1 0x00
0000086f: POP
00000870: PUSH1 0x00
00000872: DUP5
00000873: DUP2
00000874: MSTORE
00000875: PUSH1 0x20
00000877: ADD
00000878: SWAP1
00000879: DUP2
0000087a: MSTORE
0000087b: PUSH1 0x20
0000087d: ADD
0000087e: PUSH1 0x00
00000880: KECCAK256
00000881: PUSH1 0x00
00000883: POP
00000884: SWAP1
00000885: POP
00000886: PUSH1 0x00
00000888: DUP2
00000889: PUSH1 0x02
0000088b: ADD
0000088c: PUSH1 0x00
0000088e: PUSH2 0x0100
00000891: EXP
00000892: DUP2
00000893: SLOAD
00000894: DUP2
00000895: PUSH1 0xff
00000897: MUL
00000898: NOT
00000899: AND
0000089a: SWAP1
0000089b: DUP4
0000089c: MUL
0000089d: OR
0000089e: SWAP1
0000089f: SSTORE
000008a0: POP
000008a1: JUMPDEST
000008a2: POP
000008a3: POP
000008a4: POP
000008a5: JUMP
000008a6: JUMPDEST
000008a7: PUSH1 0x00
000008a9: PUSH1 0x00
000008ab: PUSH1 0x00
000008ad: POP
000008ae: PUSH1 0x00
000008b0: PUSH1 0x00
000008b2: DUP2
000008b3: MSTORE
000008b4: PUSH1 0x20
000008b6: ADD
000008b7: SWAP1
000008b8: DUP2
000008b9: MSTORE
000008ba: PUSH1 0x20
000008bc: ADD
000008bd: PUSH1 0x00
000008bf: KECCAK256
000008c0: PUSH1 0x00
000008c2: POP
000008c3: SWAP1
000008c4: POP
000008c5: PUSH1 0x40
000008c7: PUSH1 0x40
000008c9: MLOAD
000008ca: SWAP1
000008cb: DUP2
000008cc: ADD
000008cd: PUSH1 0x40
000008cf: MSTORE
000008d0: DUP1
000008d1: PUSH1 0x00
000008d3: DUP2
000008d4: MSTORE
000008d5: PUSH1 0x20
000008d7: ADD
000008d8: PUSH1 0x01
000008da: DUP2
000008db: MSTORE
000008dc: PUSH1 0x20
000008de: ADD
000008df: POP
000008e0: DUP2
000008e1: PUSH1 0x01
000008e3: ADD
000008e4: PUSH1 0x00
000008e6: POP
000008e7: PUSH1 0x00
000008e9: DUP4
000008ea: PUSH1 0x07
000008ec: ADD
000008ed: PUSH1 0x00
000008ef: POP
000008f0: SLOAD
000008f1: DUP2
000008f2: MSTORE
000008f3: PUSH1 0x20
000008f5: ADD
000008f6: SWAP1
000008f7: DUP2
000008f8: MSTORE
000008f9: PUSH1 0x20
000008fb: ADD
000008fc: PUSH1 0x00
000008fe: KECCAK256
000008ff: PUSH1 0x00
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | awk '"'{addr=substr("'$1,1,length($1)-1); pc=strtonum("0x" addr); if (pc>=0x900 && pc<=0xa50) print; }'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
00000901: POP
00000902: PUSH1 0x00
00000904: DUP3
00000905: ADD
00000906: MLOAD
00000907: DUP2
00000908: PUSH1 0x01
0000090a: ADD
0000090b: PUSH1 0x00
0000090d: POP
0000090e: SSTORE
0000090f: PUSH1 0x20
00000911: DUP3
00000912: ADD
00000913: MLOAD
00000914: DUP2
00000915: PUSH1 0x02
00000917: ADD
00000918: PUSH1 0x00
0000091a: PUSH2 0x0100
0000091d: EXP
0000091e: DUP2
0000091f: SLOAD
00000920: DUP2
00000921: PUSH1 0xff
00000923: MUL
00000924: NOT
00000925: AND
00000926: SWAP1
00000927: DUP4
00000928: MUL
00000929: OR
0000092a: SWAP1
0000092b: SSTORE
0000092c: POP
0000092d: SWAP1
0000092e: POP
0000092f: POP
00000930: DUP1
00000931: PUSH1 0x07
00000933: ADD
00000934: PUSH1 0x00
00000936: DUP2
00000937: DUP2
00000938: POP
00000939: SLOAD
0000093a: PUSH1 0x01
0000093c: ADD
0000093d: SWAP2
0000093e: SWAP1
0000093f: POP
00000940: DUP2
00000941: SWAP1
00000942: SSTORE
00000943: POP
00000944: JUMPDEST
00000945: POP
00000946: JUMP
00000947: JUMPDEST
00000948: PUSH1 0x00
0000094a: PUSH1 0x00
0000094c: PUSH1 0x00
0000094e: PUSH1 0x00
00000950: POP
00000951: PUSH1 0x00
00000953: PUSH1 0x00
00000955: DUP2
00000956: MSTORE
00000957: PUSH1 0x20
00000959: ADD
0000095a: SWAP1
0000095b: DUP2
0000095c: MSTORE
0000095d: PUSH1 0x20
0000095f: ADD
00000960: PUSH1 0x00
00000962: KECCAK256
00000963: PUSH1 0x00
00000965: POP
00000966: SWAP2
00000967: POP
00000968: DUP2
00000969: PUSH1 0x01
0000096b: ADD
0000096c: PUSH1 0x00
0000096e: POP
0000096f: PUSH1 0x00
00000971: DUP5
00000972: DUP2
00000973: MSTORE
00000974: PUSH1 0x20
00000976: ADD
00000977: SWAP1
00000978: DUP2
00000979: MSTORE
0000097a: PUSH1 0x20
0000097c: ADD
0000097d: PUSH1 0x00
0000097f: KECCAK256
00000980: PUSH1 0x00
00000982: POP
00000983: SWAP1
00000984: POP
00000985: PUSH1 0x00
00000987: DUP2
00000988: PUSH1 0x02
0000098a: ADD
0000098b: PUSH1 0x00
0000098d: PUSH2 0x0100
00000990: EXP
00000991: DUP2
00000992: SLOAD
00000993: DUP2
00000994: PUSH1 0xff
00000996: MUL
00000997: NOT
00000998: AND
00000999: SWAP1
0000099a: DUP4
0000099b: MUL
0000099c: OR
0000099d: SWAP1
0000099e: SSTORE
0000099f: POP
000009a0: JUMPDEST
000009a1: POP
000009a2: POP
000009a3: POP
000009a4: JUMP
exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.artifact.runtime_bytecode.full' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | rg '"'CALLER|ORIGIN|DELEGATECALL|CALLCODE|STATICCALL|SELFDESTRUCT|SSTORE|SLOAD|CALL"'$'"'" in /tmp/codex-cfs6mgzj
succeeded in 0ms:
000000e8: CALLER
00000371: CALL
000003ea: SLOAD
0000040c: SLOAD
0000042b: SSTORE
00000439: SSTORE
00000446: SSTORE
00000453: SLOAD
0000045c: SSTORE
000004b1: SLOAD
000004e4: SLOAD
00000517: SLOAD
00000569: SLOAD
000005c0: SLOAD
000005f4: CALLER
0000061d: SLOAD
0000064b: SLOAD
0000067a: SLOAD
00000695: SLOAD
00000709: SLOAD
0000073d: SELFDESTRUCT
00000767: SLOAD
000007a0: SLOAD
000007c2: SLOAD
000007e1: SSTORE
000007ef: SSTORE
00000800: SLOAD
0000080c: SSTORE
0000081c: SLOAD
00000823: SSTORE
0000082e: SLOAD
00000837: SSTORE
00000893: SLOAD
0000089f: SSTORE
000008f0: SLOAD
0000090e: SSTORE
0000091f: SLOAD
0000092b: SSTORE
00000939: SLOAD
00000942: SSTORE
00000992: SLOAD
0000099e: SSTORE
codex
{"no_findings":false,"summary":"Bytecode-only review found two high-risk issues and no proxy/delegatecall pattern. The dispatcher exposes selector:0x35f46994 to a confirmed SELFDESTRUCT path with no caller check on that path, and selector:0x9e1a00aa reaches a low-level CALL-with-value site whose target/value appear stack-derived and whose success is ignored. Selector names and storage semantics are best-effort because this is runtime-bytecode analysis only.","findings":[{"severity":"high","category":"access_control","title":"Publicly reachable SELFDESTRUCT path","exploit_scenario":"An arbitrary caller can invoke selector 0x35f46994 and terminate the contract, permanently disabling it and forcing its ETH balance to the beneficiary loaded from storage. That is an immediate denial of service; if some other public path can influence that beneficiary, the impact could escalate to theft, but that storage-authority link is not fully provable from this artifact alone.","recommendation":"Remove SELFDESTRUCT entirely if possible. If a shutdown path is required, gate it with a strong owner/multisig check on the same execution path and make the payout recipient immutable or tightly controlled.","evidence":"The dispatcher routes selector:0x35f46994 at pc 0x14b directly to pc 0x6e3. The body at pc 0x6e3-0x73d contains no CALLER/auth check and ends in SELFDESTRUCT at pc 0x73d after loading an address from storage (keccak-derived base plus offset 2, then DIV 0x100 and mask to 20 bytes). The bundle's detector also validated SELFDESTRUCT reachability.","locations":["selector:0x35f46994","pc:0x6e3","pc:0x73d"]},{"severity":"high","category":"access_control","title":"Public low-level CALL with ETH/value semantics and no success handling","exploit_scenario":"A caller can invoke selector 0x9e1a00aa and drive the contract into a low-level CALL path that appears to use stack-derived target/value operands. If those operands are caller-controlled as the bytecode suggests, the contract can be used as an arbitrary call/value forwarder and its ETH can be drained or redirected. Even when the call fails, the function continues without reverting, so logs/off-chain accounting can report an action that never succeeded.","recommendation":"Restrict this function to an authorized operator, avoid raw CALL for value transfers unless strictly necessary, and require explicit success checks with revert-on-failure. If external calls must remain, follow checks-effects-interactions and emit events only after a confirmed success.","evidence":"Selector:0x9e1a00aa dispatches from pc 0x25d to pc 0x2c8 with no caller check on that path. The call sequence at pc 0x345-0x371 builds the CALL arguments from stack values, including target materialized via DUP3/AND and value via DUP4, then executes CALL at pc 0x371. There is no SSTORE before the call on this path and no post-CALL success branch: the return value is discarded via SWAP4/POP...POP at pc 0x372-0x377. The automated validator saw one trace where the target resolved to the contract itself, but the static bytecode is not hardcoded to a constant target, so that trace does not rule out broader caller influence.","locations":["selector:0x9e1a00aa","pc:0x2c8","pc:0x345","pc:0x371"]}]}
tokens used
77,113
{
"codex": {
"ran_at": "2026-04-05T02:59:36.180283+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 4940,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode-only review found two high-risk issues and no proxy/delegatecall pattern. The dispatcher exposes selector:0x35f46994 to a confirmed SELFDESTRUCT path with no caller check on that path, and selector:0x9e1a00aa reaches a low-level CALL-with-value site whose target/value appear stack-derived and whose success is ignored. Selector names and storage semantics are best-effort because this is runtime-bytecode analysis only.",
"raw_final": {
"summary": "Bytecode-only review found two high-risk issues and no proxy/delegatecall pattern. The dispatcher exposes selector:0x35f46994 to a confirmed SELFDESTRUCT path with no caller check on that path, and selector:0x9e1a00aa reaches a low-level CALL-with-value site whose target/value appear stack-derived and whose success is ignored. Selector names and storage semantics are best-effort because this is runtime-bytecode analysis only.",
"findings": [
{
"title": "Publicly reachable SELFDESTRUCT path",
"category": "access_control",
"evidence": "The dispatcher routes selector:0x35f46994 at pc 0x14b directly to pc 0x6e3. The body at pc 0x6e3-0x73d contains no CALLER/auth check and ends in SELFDESTRUCT at pc 0x73d after loading an address from storage (keccak-derived base plus offset 2, then DIV 0x100 and mask to 20 bytes). The bundle's detector also validated SELFDESTRUCT reachability.",
"severity": "high",
"locations": [
"selector:0x35f46994",
"pc:0x6e3",
"pc:0x73d"
],
"recommendation": "Remove SELFDESTRUCT entirely if possible. If a shutdown path is required, gate it with a strong owner/multisig check on the same execution path and make the payout recipient immutable or tightly controlled.",
"exploit_scenario": "An arbitrary caller can invoke selector 0x35f46994 and terminate the contract, permanently disabling it and forcing its ETH balance to the beneficiary loaded from storage. That is an immediate denial of service; if some other public path can influence that beneficiary, the impact could escalate to theft, but that storage-authority link is not fully provable from this artifact alone."
},
{
"title": "Public low-level CALL with ETH/value semantics and no success handling",
"category": "access_control",
"evidence": "Selector:0x9e1a00aa dispatches from pc 0x25d to pc 0x2c8 with no caller check on that path. The call sequence at pc 0x345-0x371 builds the CALL arguments from stack values, including target materialized via DUP3/AND and value via DUP4, then executes CALL at pc 0x371. There is no SSTORE before the call on this path and no post-CALL success branch: the return value is discarded via SWAP4/POP...POP at pc 0x372-0x377. The automated validator saw one trace where the target resolved to the contract itself, but the static bytecode is not hardcoded to a constant target, so that trace does not rule out broader caller influence.",
"severity": "high",
"locations": [
"selector:0x9e1a00aa",
"pc:0x2c8",
"pc:0x345",
"pc:0x371"
],
"recommendation": "Restrict this function to an authorized operator, avoid raw CALL for value transfers unless strictly necessary, and require explicit success checks with revert-on-failure. If external calls must remain, follow checks-effects-interactions and emit events only after a confirmed success.",
"exploit_scenario": "A caller can invoke selector 0x9e1a00aa and drive the contract into a low-level CALL path that appears to use stack-derived target/value operands. If those operands are caller-controlled as the bytecode suggests, the contract can be used as an arbitrary call/value forwarder and its ETH can be drained or redirected. Even when the call fails, the function continues without reverting, so logs/off-chain accounting can report an action that never succeeded."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x00c1 0000000a: JUMPI 0000000b: PUSH1 0x00 0000000d: CALLDATALOAD 0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000002c: SWAP1 0000002d: DIV 0000002e: DUP1 0000002f: PUSH4 0x12065fe0 00000034: EQ 00000035: PUSH2 0x0128 00000038: JUMPI 00000039: DUP1 0000003a: PUSH4 0x35f46994 0000003f: EQ 00000040: PUSH2 0x014b 00000043: JUMPI 00000044: DUP1 00000045: PUSH4 0x4001a81f 0000004a: EQ 0000004b: PUSH2 0x015a 0000004e: JUMPI 0000004f: DUP1 00000050: PUSH4 0x5dea5e47 00000055: EQ 00000056: PUSH2 0x0184 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0x690b90a9 00000060: EQ 00000061: PUSH2 0x019c 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0x6adcef6b 0000006b: EQ 0000006c: PUSH2 0x01bf 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x6ccb5d02 00000076: EQ 00000077: PUSH2 0x01d7 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x75724990 00000081: EQ 00000082: PUSH2 0x0219 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0x7f616488 0000008c: EQ 0000008d: PUSH2 0x023a 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0x9e1a00aa 00000097: EQ 00000098: PUSH2 0x025d 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xd5002f2e 000000a2: EQ 000000a3: PUSH2 0x027e 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xdda1a1e6 000000ad: EQ 000000ae: PUSH2 0x02a1 000000b1: JUMPI 000000b2: DUP1 000000b3: PUSH4 0xf50ad617 000000b8: EQ 000000b9: PUSH2 0x02b9 000000bc: JUMPI 000000bd: PUSH2 0x00c1 000000c0: JUMP 000000c1: JUMPDEST 000000c2: PUSH2 0x0126 000000c5: JUMPDEST 000000c6: NUMBER 000000c7: PUSH32 0x5d6ac9b7defd8fbb29ef2ab0f08c3744192b3777466dd98d1fd7daed5064b6db 000000e8: CALLER 000000e9: CALLVALUE 000000ea: TIMESTAMP 000000eb: PUSH1 0x40 000000ed: MLOAD 000000ee: DUP1 000000ef: DUP5 000000f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000105: AND 00000106: DUP2 00000107: MSTORE 00000108: PUSH1 0x20 0000010a: ADD 0000010b: DUP4 0000010c: DUP2 0000010d: MSTORE 0000010e: PUSH1 0x20 00000110: ADD 00000111: DUP3 00000112: DUP2 00000113: MSTORE 00000114: PUSH1 0x20 00000116: ADD 00000117: SWAP4 00000118: POP 00000119: POP 0000011a: POP 0000011b: POP 0000011c: PUSH1 0x40 0000011e: MLOAD 0000011f: DUP1 00000120: SWAP2 00000121: SUB 00000122: SWAP1 00000123: LOG2 00000124: JUMPDEST 00000125: JUMP 00000126: JUMPDEST 00000127: STOP 00000128: JUMPDEST 00000129: PUSH2 0x0135 0000012c: PUSH1 0x04 0000012e: DUP1 0000012f: POP 00000130: POP 00000131: PUSH2 0x0465 00000134: JUMP 00000135: JUMPDEST 00000136: PUSH1 0x40 00000138: MLOAD 00000139: DUP1 0000013a: DUP3 0000013b: DUP2 0000013c: MSTORE 0000013d: PUSH1 0x20 0000013f: ADD 00000140: SWAP2 00000141: POP 00000142: POP 00000143: PUSH1 0x40 00000145: MLOAD 00000146: DUP1 00000147: SWAP2 00000148: SUB 00000149: SWAP1 0000014a: RETURN 0000014b: JUMPDEST 0000014c: PUSH2 0x0158 0000014f: PUSH1 0x04 00000151: DUP1 00000152: POP 00000153: POP 00000154: PUSH2 0x06e3 00000157: JUMP 00000158: JUMPDEST 00000159: STOP 0000015a: JUMPDEST 0000015b: PUSH2 0x0182 0000015e: PUSH1 0x04 00000160: DUP1 00000161: DUP1 00000162: CALLDATALOAD 00000163: SWAP1 00000164: PUSH1 0x20 00000166: ADD 00000167: SWAP1 00000168: SWAP2 00000169: SWAP1 0000016a: DUP1 0000016b: CALLDATALOAD 0000016c: SWAP1 0000016d: PUSH1 0x20 0000016f: ADD 00000170: SWAP1 00000171: SWAP2 00000172: SWAP1 00000173: DUP1 00000174: CALLDATALOAD 00000175: SWAP1 00000176: PUSH1 0x20 00000178: ADD 00000179: SWAP1 0000017a: SWAP2 0000017b: SWAP1 0000017c: POP 0000017d: POP 0000017e: PUSH2 0x037d 00000181: JUMP 00000182: JUMPDEST 00000183: STOP 00000184: JUMPDEST 00000185: PUSH2 0x019a 00000188: PUSH1 0x04 0000018a: DUP1 0000018b: DUP1 0000018c: CALLDATALOAD 0000018d: SWAP1 0000018e: PUSH1 0x20 00000190: ADD 00000191: SWAP1 00000192: SWAP2 00000193: SWAP1 00000194: POP 00000195: POP 00000196: PUSH2 0x0947 00000199: JUMP 0000019a: JUMPDEST 0000019b: STOP 0000019c: JUMPDEST 0000019d: PUSH2 0x01a9 000001a0: PUSH1 0x04 000001a2: DUP1 000001a3: POP 000001a4: POP 000001a5: PUSH2 0x04bc 000001a8: JUMP 000001a9: JUMPDEST 000001aa: PUSH1 0x40 000001ac: MLOAD 000001ad: DUP1 000001ae: DUP3 000001af: DUP2 000001b0: MSTORE 000001b1: PUSH1 0x20 000001b3: ADD 000001b4: SWAP2 000001b5: POP 000001b6: POP 000001b7: PUSH1 0x40 000001b9: MLOAD 000001ba: DUP1 000001bb: SWAP2 000001bc: SUB 000001bd: SWAP1 000001be: RETURN 000001bf: JUMPDEST 000001c0: PUSH2 0x01d5 000001c3: PUSH1 0x04 000001c5: DUP1 000001c6: DUP1 000001c7: CALLDATALOAD 000001c8: SWAP1 000001c9: PUSH1 0x20 000001cb: ADD 000001cc: SWAP1 000001cd: SWAP2 000001ce: SWAP1 000001cf: POP 000001d0: POP 000001d1: PUSH2 0x0594 000001d4: JUMP 000001d5: JUMPDEST 000001d6: STOP 000001d7: JUMPDEST 000001d8: PUSH2 0x01ed 000001db: PUSH1 0x04 000001dd: DUP1 000001de: DUP1 000001df: CALLDATALOAD 000001e0: SWAP1 000001e1: PUSH1 0x20 000001e3: ADD 000001e4: SWAP1 000001e5: SWAP2 000001e6: SWAP1 000001e7: POP 000001e8: POP 000001e9: PUSH2 0x0522 000001ec: JUMP 000001ed: JUMPDEST 000001ee: PUSH1 0x40 000001f0: MLOAD 000001f1: DUP1 000001f2: DUP3 000001f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000208: AND 00000209: DUP2 0000020a: MSTORE 0000020b: PUSH1 0x20 0000020d: ADD 0000020e: SWAP2 0000020f: POP 00000210: POP 00000211: PUSH1 0x40 00000213: MLOAD 00000214: DUP1 00000215: SWAP2 00000216: SUB 00000217: SWAP1 00000218: RETURN 00000219: JUMPDEST 0000021a: PUSH2 0x0238 0000021d: PUSH1 0x04 0000021f: DUP1 00000220: DUP1 00000221: CALLDATALOAD 00000222: SWAP1 00000223: PUSH1 0x20 00000225: ADD 00000226: SWAP1 00000227: SWAP2 00000228: SWAP1 00000229: DUP1 0000022a: CALLDATALOAD 0000022b: SWAP1 0000022c: PUSH1 0x20 0000022e: ADD 0000022f: SWAP1 00000230: SWAP2 00000231: SWAP1 00000232: POP 00000233: POP 00000234: PUSH2 0x0741 00000237: JUMP 00000238: JUMPDEST 00000239: STOP 0000023a: JUMPDEST 0000023b: PUSH2 0x0247 0000023e: PUSH1 0x04 00000240: DUP1 00000241: POP 00000242: POP 00000243: PUSH2 0x04ef 00000246: JUMP 00000247: JUMPDEST 00000248: PUSH1 0x40 0000024a: MLOAD 0000024b: DUP1 0000024c: DUP3 0000024d: DUP2 0000024e: MSTORE 0000024f: PUSH1 0x20 00000251: ADD 00000252: SWAP2 00000253: POP 00000254: POP 00000255: PUSH1 0x40 00000257: MLOAD 00000258: DUP1 00000259: SWAP2 0000025a: SUB 0000025b: SWAP1 0000025c: RETURN 0000025d: JUMPDEST 0000025e: PUSH2 0x027c 00000261: PUSH1 0x04 00000263: DUP1 00000264: DUP1 00000265: CALLDATALOAD 00000266: SWAP1 00000267: PUSH1 0x20 00000269: ADD 0000026a: SWAP1 0000026b: SWAP2 0000026c: SWAP1 0000026d: DUP1 0000026e: CALLDATALOAD 0000026f: SWAP1 00000270: PUSH1 0x20 00000272: ADD 00000273: SWAP1 00000274: SWAP2 00000275: SWAP1 00000276: POP 00000277: POP 00000278: PUSH2 0x02c8 0000027b: JUMP 0000027c: JUMPDEST 0000027d: STOP 0000027e: JUMPDEST 0000027f: PUSH2 0x028b 00000282: PUSH1 0x04 00000284: DUP1 00000285: POP 00000286: POP 00000287: PUSH2 0x0489 0000028a: JUMP 0000028b: JUMPDEST 0000028c: PUSH1 0x40 0000028e: MLOAD 0000028f: DUP1 00000290: DUP3 00000291: DUP2 00000292: MSTORE 00000293: PUSH1 0x20 00000295: ADD 00000296: SWAP2 00000297: POP 00000298: POP 00000299: PUSH1 0x40 0000029b: MLOAD 0000029c: DUP1 0000029d: SWAP2 0000029e: SUB 0000029f: SWAP1 000002a0: RETURN 000002a1: JUMPDEST 000002a2: PUSH2 0x02b7 000002a5: PUSH1 0x04 000002a7: DUP1 000002a8: DUP1 000002a9: CALLDATALOAD 000002aa: SWAP1 000002ab: PUSH1 0x20 000002ad: ADD 000002ae: SWAP1 000002af: SWAP2 000002b0: SWAP1 000002b1: POP 000002b2: POP 000002b3: PUSH2 0x0848 000002b6: JUMP 000002b7: JUMPDEST 000002b8: STOP 000002b9: JUMPDEST 000002ba: PUSH2 0x02c6 000002bd: PUSH1 0x04 000002bf: DUP1 000002c0: POP 000002c1: POP 000002c2: PUSH2 0x08a6 000002c5: JUMP 000002c6: JUMPDEST 000002c7: STOP 000002c8: JUMPDEST 000002c9: PUSH1 0x00 000002cb: NUMBER 000002cc: PUSH32 0x5ab8dc610f1c5d672561a1c397fb11717ad7b220565f7916904984963a1f43ef 000002ed: DUP5 000002ee: DUP5 000002ef: TIMESTAMP 000002f0: PUSH1 0x40 000002f2: MLOAD 000002f3: DUP1 000002f4: DUP5 000002f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000030a: AND 0000030b: DUP2 0000030c: MSTORE 0000030d: PUSH1 0x20 0000030f: ADD 00000310: DUP4 00000311: DUP2 00000312: MSTORE 00000313: PUSH1 0x20 00000315: ADD 00000316: DUP3 00000317: DUP2 00000318: MSTORE 00000319: PUSH1 0x20 0000031b: ADD 0000031c: SWAP4 0000031d: POP 0000031e: POP 0000031f: POP 00000320: POP 00000321: PUSH1 0x40 00000323: MLOAD 00000324: DUP1 00000325: SWAP2 00000326: SUB 00000327: SWAP1 00000328: LOG2 00000329: PUSH1 0x00 0000032b: PUSH1 0x00 0000032d: POP 0000032e: PUSH1 0x00 00000330: PUSH1 0x00 00000332: DUP2 00000333: MSTORE 00000334: PUSH1 0x20 00000336: ADD 00000337: SWAP1 00000338: DUP2 00000339: MSTORE 0000033a: PUSH1 0x20 0000033c: ADD 0000033d: PUSH1 0x00 0000033f: KECCAK256 00000340: PUSH1 0x00 00000342: POP 00000343: SWAP1 00000344: POP 00000345: DUP3 00000346: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000035b: AND 0000035c: PUSH1 0x00 0000035e: DUP4 0000035f: PUSH1 0x40 00000361: MLOAD 00000362: DUP1 00000363: SWAP1 00000364: POP 00000365: PUSH1 0x00 00000367: PUSH1 0x40 00000369: MLOAD 0000036a: DUP1 0000036b: DUP4 0000036c: SUB 0000036d: DUP2 0000036e: DUP6 0000036f: DUP9 00000370: DUP9 00000371: CALL 00000372: SWAP4 00000373: POP 00000374: POP 00000375: POP 00000376: POP 00000377: POP 00000378: JUMPDEST 00000379: POP 0000037a: POP 0000037b: POP 0000037c: JUMP 0000037d: JUMPDEST 0000037e: PUSH1 0x00 00000380: PUSH1 0x00 00000382: PUSH1 0x00 00000384: PUSH1 0x00 00000386: POP 00000387: PUSH1 0x00 00000389: PUSH1 0x00 0000038b: DUP2 0000038c: MSTORE 0000038d: PUSH1 0x20 0000038f: ADD 00000390: SWAP1 00000391: DUP2 00000392: MSTORE 00000393: PUSH1 0x20 00000395: ADD 00000396: PUSH1 0x00 00000398: KECCAK256 00000399: PUSH1 0x00 0000039b: POP 0000039c: SWAP2 0000039d: POP 0000039e: DUP2 0000039f: PUSH1 0x01 000003a1: ADD 000003a2: PUSH1 0x00 000003a4: POP 000003a5: PUSH1 0x00 000003a7: DUP7 000003a8: DUP2 000003a9: MSTORE 000003aa: PUSH1 0x20 000003ac: ADD 000003ad: SWAP1 000003ae: DUP2 000003af: MSTORE 000003b0: PUSH1 0x20 000003b2: ADD 000003b3: PUSH1 0x00 000003b5: KECCAK256 000003b6: PUSH1 0x00 000003b8: POP 000003b9: SWAP1 000003ba: POP 000003bb: PUSH1 0x60 000003bd: PUSH1 0x40 000003bf: MLOAD 000003c0: SWAP1 000003c1: DUP2 000003c2: ADD 000003c3: PUSH1 0x40 000003c5: MSTORE 000003c6: DUP1 000003c7: DUP6 000003c8: DUP2 000003c9: MSTORE 000003ca: PUSH1 0x20 000003cc: ADD 000003cd: DUP5 000003ce: DUP2 000003cf: MSTORE 000003d0: PUSH1 0x20 000003d2: ADD 000003d3: TIMESTAMP 000003d4: DUP2 000003d5: MSTORE 000003d6: PUSH1 0x20 000003d8: ADD 000003d9: POP 000003da: DUP2 000003db: PUSH1 0x00 000003dd: ADD 000003de: PUSH1 0x00 000003e0: POP 000003e1: PUSH1 0x00 000003e3: DUP4 000003e4: PUSH1 0x01 000003e6: ADD 000003e7: PUSH1 0x00 000003e9: POP 000003ea: SLOAD 000003eb: DUP2 000003ec: MSTORE 000003ed: PUSH1 0x20 000003ef: ADD 000003f0: SWAP1 000003f1: DUP2 000003f2: MSTORE 000003f3: PUSH1 0x20 000003f5: ADD 000003f6: PUSH1 0x00 000003f8: KECCAK256 000003f9: PUSH1 0x00 000003fb: POP 000003fc: PUSH1 0x00 000003fe: DUP3 000003ff: ADD 00000400: MLOAD 00000401: DUP2 00000402: PUSH1 0x00 00000404: ADD 00000405: PUSH1 0x00 00000407: PUSH2 0x0100 0000040a: EXP 0000040b: DUP2 0000040c: SLOAD 0000040d: DUP2 0000040e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000423: MUL 00000424: NOT 00000425: AND 00000426: SWAP1 00000427: DUP4 00000428: MUL 00000429: OR 0000042a: SWAP1 0000042b: SSTORE 0000042c: POP 0000042d: PUSH1 0x20 0000042f: DUP3 00000430: ADD 00000431: MLOAD 00000432: DUP2 00000433: PUSH1 0x01 00000435: ADD 00000436: PUSH1 0x00 00000438: POP 00000439: SSTORE 0000043a: PUSH1 0x40 0000043c: DUP3 0000043d: ADD 0000043e: MLOAD 0000043f: DUP2 00000440: PUSH1 0x02 00000442: ADD 00000443: PUSH1 0x00 00000445: POP 00000446: SSTORE 00000447: SWAP1 00000448: POP 00000449: POP 0000044a: DUP1 0000044b: PUSH1 0x01 0000044d: ADD 0000044e: PUSH1 0x00 00000450: DUP2 00000451: DUP2 00000452: POP 00000453: SLOAD 00000454: PUSH1 0x01 00000456: ADD 00000457: SWAP2 00000458: SWAP1 00000459: POP 0000045a: DUP2 0000045b: SWAP1 0000045c: SSTORE 0000045d: POP 0000045e: JUMPDEST 0000045f: POP 00000460: POP 00000461: POP 00000462: POP 00000463: POP 00000464: JUMP 00000465: JUMPDEST 00000466: PUSH1 0x00 00000468: ADDRESS 00000469: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000047e: AND 0000047f: BALANCE 00000480: SWAP1 00000481: POP 00000482: PUSH2 0x0486 00000485: JUMP 00000486: JUMPDEST 00000487: SWAP1 00000488: JUMP 00000489: JUMPDEST 0000048a: PUSH1 0x00 0000048c: PUSH1 0x00 0000048e: PUSH1 0x00 00000490: PUSH1 0x00 00000492: POP 00000493: PUSH1 0x00 00000495: PUSH1 0x00 00000497: DUP2 00000498: MSTORE 00000499: PUSH1 0x20 0000049b: ADD 0000049c: SWAP1 0000049d: DUP2 0000049e: MSTORE 0000049f: PUSH1 0x20 000004a1: ADD 000004a2: PUSH1 0x00 000004a4: KECCAK256 000004a5: PUSH1 0x00 000004a7: POP 000004a8: SWAP1 000004a9: POP 000004aa: DUP1 000004ab: PUSH1 0x06 000004ad: ADD 000004ae: PUSH1 0x00 000004b0: POP 000004b1: SLOAD 000004b2: SWAP2 000004b3: POP 000004b4: PUSH2 0x04b8 000004b7: JUMP 000004b8: JUMPDEST 000004b9: POP 000004ba: SWAP1 000004bb: JUMP 000004bc: JUMPDEST 000004bd: PUSH1 0x00 000004bf: PUSH1 0x00 000004c1: PUSH1 0x00 000004c3: PUSH1 0x00 000004c5: POP 000004c6: PUSH1 0x00 000004c8: PUSH1 0x00 000004ca: DUP2 000004cb: MSTORE 000004cc: PUSH1 0x20 000004ce: ADD 000004cf: SWAP1 000004d0: DUP2 000004d1: MSTORE 000004d2: PUSH1 0x20 000004d4: ADD 000004d5: PUSH1 0x00 000004d7: KECCAK256 000004d8: PUSH1 0x00 000004da: POP 000004db: SWAP1 000004dc: POP 000004dd: DUP1 000004de: PUSH1 0x05 000004e0: ADD 000004e1: PUSH1 0x00 000004e3: POP 000004e4: SLOAD 000004e5: SWAP2 000004e6: POP 000004e7: PUSH2 0x04eb 000004ea: JUMP 000004eb: JUMPDEST 000004ec: POP 000004ed: SWAP1 000004ee: JUMP 000004ef: JUMPDEST 000004f0: PUSH1 0x00 000004f2: PUSH1 0x00 000004f4: PUSH1 0x00 000004f6: PUSH1 0x00 000004f8: POP 000004f9: PUSH1 0x00 000004fb: PUSH1 0x00 000004fd: DUP2 000004fe: MSTORE 000004ff: PUSH1 0x20 00000501: ADD 00000502: SWAP1 00000503: DUP2 00000504: MSTORE 00000505: PUSH1 0x20 00000507: ADD 00000508: PUSH1 0x00 0000050a: KECCAK256 0000050b: PUSH1 0x00 0000050d: POP 0000050e: SWAP1 0000050f: POP 00000510: DUP1 00000511: PUSH1 0x07 00000513: ADD 00000514: PUSH1 0x00 00000516: POP 00000517: SLOAD 00000518: SWAP2 00000519: POP 0000051a: PUSH2 0x051e 0000051d: JUMP 0000051e: JUMPDEST 0000051f: POP 00000520: SWAP1 00000521: JUMP 00000522: JUMPDEST 00000523: PUSH1 0x00 00000525: PUSH1 0x00 00000527: PUSH1 0x00 00000529: PUSH1 0x00 0000052b: PUSH1 0x00 0000052d: POP 0000052e: PUSH1 0x00 00000530: PUSH1 0x00 00000532: DUP2 00000533: MSTORE 00000534: PUSH1 0x20 00000536: ADD 00000537: SWAP1 00000538: DUP2 00000539: MSTORE 0000053a: PUSH1 0x20 0000053c: ADD 0000053d: PUSH1 0x00 0000053f: KECCAK256 00000540: PUSH1 0x00 00000542: POP 00000543: SWAP2 00000544: POP 00000545: DUP2 00000546: PUSH1 0x00 00000548: ADD 00000549: PUSH1 0x00 0000054b: POP 0000054c: PUSH1 0x00 0000054e: DUP6 0000054f: DUP2 00000550: MSTORE 00000551: PUSH1 0x20 00000553: ADD 00000554: SWAP1 00000555: DUP2 00000556: MSTORE 00000557: PUSH1 0x20 00000559: ADD 0000055a: PUSH1 0x00 0000055c: KECCAK256 0000055d: PUSH1 0x00 0000055f: POP 00000560: SWAP1 00000561: POP 00000562: DUP1 00000563: PUSH1 0x00 00000565: ADD 00000566: PUSH1 0x00 00000568: SWAP1 00000569: SLOAD 0000056a: SWAP1 0000056b: PUSH2 0x0100 0000056e: EXP 0000056f: SWAP1 00000570: DIV 00000571: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000586: AND 00000587: SWAP3 00000588: POP 00000589: PUSH2 0x058d 0000058c: JUMP 0000058d: JUMPDEST 0000058e: POP 0000058f: POP 00000590: SWAP2 00000591: SWAP1 00000592: POP 00000593: JUMP 00000594: JUMPDEST 00000595: PUSH1 0x00 00000597: PUSH1 0x00 00000599: PUSH1 0x00 0000059b: PUSH1 0x00 0000059d: PUSH1 0x00 0000059f: PUSH1 0x00 000005a1: POP 000005a2: PUSH1 0x00 000005a4: PUSH1 0x00 000005a6: DUP2 000005a7: MSTORE 000005a8: PUSH1 0x20 000005aa: ADD 000005ab: SWAP1 000005ac: DUP2 000005ad: MSTORE 000005ae: PUSH1 0x20 000005b0: ADD 000005b1: PUSH1 0x00 000005b3: KECCAK256 000005b4: PUSH1 0x00 000005b6: POP 000005b7: SWAP4 000005b8: POP 000005b9: DUP4 000005ba: PUSH1 0x02 000005bc: ADD 000005bd: PUSH1 0x00 000005bf: SWAP1 000005c0: SLOAD 000005c1: SWAP1 000005c2: PUSH2 0x0100 000005c5: EXP 000005c6: SWAP1 000005c7: DIV 000005c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005dd: AND 000005de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005f3: AND 000005f4: CALLER 000005f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000060a: AND 0000060b: EQ 0000060c: ISZERO 0000060d: PUSH2 0x06d6 00000610: JUMPI 00000611: PUSH1 0x00 00000613: SWAP3 00000614: POP 00000615: JUMPDEST 00000616: DUP4 00000617: PUSH1 0x05 00000619: ADD 0000061a: PUSH1 0x00 0000061c: POP 0000061d: SLOAD 0000061e: DUP4 0000061f: LT 00000620: ISZERO 00000621: PUSH2 0x06d1 00000624: JUMPI 00000625: DUP4 00000626: PUSH1 0x00 00000628: ADD 00000629: PUSH1 0x00 0000062b: POP 0000062c: PUSH1 0x00 0000062e: DUP5 0000062f: DUP2 00000630: MSTORE 00000631: PUSH1 0x20 00000633: ADD 00000634: SWAP1 00000635: DUP2 00000636: MSTORE 00000637: PUSH1 0x20 00000639: ADD 0000063a: PUSH1 0x00 0000063c: KECCAK256 0000063d: PUSH1 0x00 0000063f: POP 00000640: SWAP2 00000641: POP 00000642: PUSH1 0x00 00000644: DUP3 00000645: PUSH1 0x01 00000647: ADD 00000648: PUSH1 0x00 0000064a: POP 0000064b: SLOAD 0000064c: DUP7 0000064d: MUL 0000064e: MUL 0000064f: SWAP1 00000650: POP 00000651: DUP1 00000652: ADDRESS 00000653: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000668: AND 00000669: BALANCE 0000066a: LT 0000066b: ISZERO 0000066c: ISZERO 0000066d: PUSH2 0x06be 00000670: JUMPI 00000671: PUSH1 0x01 00000673: DUP3 00000674: PUSH1 0x02 00000676: ADD 00000677: PUSH1 0x00 00000679: SWAP1 0000067a: SLOAD 0000067b: SWAP1 0000067c: PUSH2 0x0100 0000067f: EXP 00000680: SWAP1 00000681: DIV 00000682: PUSH1 0xff 00000684: AND 00000685: EQ 00000686: ISZERO 00000687: PUSH2 0x06b9 0000068a: JUMPI 0000068b: PUSH2 0x06b8 0000068e: DUP3 0000068f: PUSH1 0x00 00000691: ADD 00000692: PUSH1 0x00 00000694: SWAP1 00000695: SLOAD 00000696: SWAP1 00000697: PUSH2 0x0100 0000069a: EXP 0000069b: SWAP1 0000069c: DIV 0000069d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006b2: AND 000006b3: DUP3 000006b4: PUSH2 0x02c8 000006b7: JUMP 000006b8: JUMPDEST 000006b9: JUMPDEST 000006ba: PUSH2 0x06c3 000006bd: JUMP 000006be: JUMPDEST 000006bf: PUSH2 0x0002 000006c2: JUMP 000006c3: JUMPDEST 000006c4: JUMPDEST 000006c5: DUP3 000006c6: DUP1 000006c7: PUSH1 0x01 000006c9: ADD 000006ca: SWAP4 000006cb: POP 000006cc: POP 000006cd: PUSH2 0x0615 000006d0: JUMP 000006d1: JUMPDEST 000006d2: PUSH2 0x06db 000006d5: JUMP 000006d6: JUMPDEST 000006d7: PUSH2 0x0002 000006da: JUMP 000006db: JUMPDEST 000006dc: JUMPDEST 000006dd: POP 000006de: POP 000006df: POP 000006e0: POP 000006e1: POP 000006e2: JUMP 000006e3: JUMPDEST 000006e4: PUSH1 0x00 000006e6: PUSH1 0x00 000006e8: PUSH1 0x00 000006ea: POP 000006eb: PUSH1 0x00 000006ed: PUSH1 0x00 000006ef: DUP2 000006f0: MSTORE 000006f1: PUSH1 0x20 000006f3: ADD 000006f4: SWAP1 000006f5: DUP2 000006f6: MSTORE 000006f7: PUSH1 0x20 000006f9: ADD 000006fa: PUSH1 0x00 000006fc: KECCAK256 000006fd: PUSH1 0x00 000006ff: POP 00000700: SWAP1 00000701: POP 00000702: DUP1 00000703: PUSH1 0x02 00000705: ADD 00000706: PUSH1 0x00 00000708: SWAP1 00000709: SLOAD 0000070a: SWAP1 0000070b: PUSH2 0x0100 0000070e: EXP 0000070f: SWAP1 00000710: DIV 00000711: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000726: AND 00000727: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000073c: AND 0000073d: SELFDESTRUCT 0000073e: JUMPDEST 0000073f: POP 00000740: JUMP 00000741: JUMPDEST 00000742: PUSH1 0x00 00000744: PUSH1 0x00 00000746: PUSH1 0x00 00000748: POP 00000749: PUSH1 0x00 0000074b: PUSH1 0x00 0000074d: DUP2 0000074e: MSTORE 0000074f: PUSH1 0x20 00000751: ADD 00000752: SWAP1 00000753: DUP2 00000754: MSTORE 00000755: PUSH1 0x20 00000757: ADD 00000758: PUSH1 0x00 0000075a: KECCAK256 0000075b: PUSH1 0x00 0000075d: POP 0000075e: SWAP1 0000075f: POP 00000760: DUP1 00000761: PUSH1 0x06 00000763: ADD 00000764: PUSH1 0x00 00000766: POP 00000767: SLOAD 00000768: DUP3 00000769: GT 0000076a: ISZERO 0000076b: ISZERO 0000076c: PUSH2 0x083d 0000076f: JUMPI 00000770: PUSH1 0x60 00000772: PUSH1 0x40 00000774: MLOAD 00000775: SWAP1 00000776: DUP2 00000777: ADD 00000778: PUSH1 0x40 0000077a: MSTORE 0000077b: DUP1 0000077c: DUP5 0000077d: DUP2 0000077e: MSTORE 0000077f: PUSH1 0x20 00000781: ADD 00000782: DUP4 00000783: DUP2 00000784: MSTORE 00000785: PUSH1 0x20 00000787: ADD 00000788: PUSH1 0x01 0000078a: DUP2 0000078b: MSTORE 0000078c: PUSH1 0x20 0000078e: ADD 0000078f: POP 00000790: DUP2 00000791: PUSH1 0x00 00000793: ADD 00000794: PUSH1 0x00 00000796: POP 00000797: PUSH1 0x00 00000799: DUP4 0000079a: PUSH1 0x05 0000079c: ADD 0000079d: PUSH1 0x00 0000079f: POP 000007a0: SLOAD 000007a1: DUP2 000007a2: MSTORE 000007a3: PUSH1 0x20 000007a5: ADD 000007a6: SWAP1 000007a7: DUP2 000007a8: MSTORE 000007a9: PUSH1 0x20 000007ab: ADD 000007ac: PUSH1 0x00 000007ae: KECCAK256 000007af: PUSH1 0x00 000007b1: POP 000007b2: PUSH1 0x00 000007b4: DUP3 000007b5: ADD 000007b6: MLOAD 000007b7: DUP2 000007b8: PUSH1 0x00 000007ba: ADD 000007bb: PUSH1 0x00 000007bd: PUSH2 0x0100 000007c0: EXP 000007c1: DUP2 000007c2: SLOAD 000007c3: DUP2 000007c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007d9: MUL 000007da: NOT 000007db: AND 000007dc: SWAP1 000007dd: DUP4 000007de: MUL 000007df: OR 000007e0: SWAP1 000007e1: SSTORE 000007e2: POP 000007e3: PUSH1 0x20 000007e5: DUP3 000007e6: ADD 000007e7: MLOAD 000007e8: DUP2 000007e9: PUSH1 0x01 000007eb: ADD 000007ec: PUSH1 0x00 000007ee: POP 000007ef: SSTORE 000007f0: PUSH1 0x40 000007f2: DUP3 000007f3: ADD 000007f4: MLOAD 000007f5: DUP2 000007f6: PUSH1 0x02 000007f8: ADD 000007f9: PUSH1 0x00 000007fb: PUSH2 0x0100 000007fe: EXP 000007ff: DUP2 00000800: SLOAD 00000801: DUP2 00000802: PUSH1 0xff 00000804: MUL 00000805: NOT 00000806: AND 00000807: SWAP1 00000808: DUP4 00000809: MUL 0000080a: OR 0000080b: SWAP1 0000080c: SSTORE 0000080d: POP 0000080e: SWAP1 0000080f: POP 00000810: POP 00000811: DUP2 00000812: DUP2 00000813: PUSH1 0x06 00000815: ADD 00000816: PUSH1 0x00 00000818: DUP3 00000819: DUP3 0000081a: DUP3 0000081b: POP 0000081c: SLOAD 0000081d: SUB 0000081e: SWAP3 0000081f: POP 00000820: POP 00000821: DUP2 00000822: SWAP1 00000823: SSTORE 00000824: POP 00000825: DUP1 00000826: PUSH1 0x05 00000828: ADD 00000829: PUSH1 0x00 0000082b: DUP2 0000082c: DUP2 0000082d: POP 0000082e: SLOAD 0000082f: PUSH1 0x01 00000831: ADD 00000832: SWAP2 00000833: SWAP1 00000834: POP 00000835: DUP2 00000836: SWAP1 00000837: SSTORE 00000838: POP 00000839: PUSH2 0x0842 0000083c: JUMP 0000083d: JUMPDEST 0000083e: PUSH2 0x0002 00000841: JUMP 00000842: JUMPDEST 00000843: JUMPDEST 00000844: POP 00000845: POP 00000846: POP 00000847: JUMP 00000848: JUMPDEST 00000849: PUSH1 0x00 0000084b: PUSH1 0x00 0000084d: PUSH1 0x00 0000084f: PUSH1 0x00 00000851: POP 00000852: PUSH1 0x00 00000854: PUSH1 0x00 00000856: DUP2 00000857: MSTORE 00000858: PUSH1 0x20 0000085a: ADD 0000085b: SWAP1 0000085c: DUP2 0000085d: MSTORE 0000085e: PUSH1 0x20 00000860: ADD 00000861: PUSH1 0x00 00000863: KECCAK256 00000864: PUSH1 0x00 00000866: POP 00000867: SWAP2 00000868: POP 00000869: DUP2 0000086a: PUSH1 0x00 0000086c: ADD 0000086d: PUSH1 0x00 0000086f: POP 00000870: PUSH1 0x00 00000872: DUP5 00000873: DUP2 00000874: MSTORE 00000875: PUSH1 0x20 00000877: ADD 00000878: SWAP1 00000879: DUP2 0000087a: MSTORE 0000087b: PUSH1 0x20 0000087d: ADD 0000087e: PUSH1 0x00 00000880: KECCAK256 00000881: PUSH1 0x00 00000883: POP 00000884: SWAP1 00000885: POP 00000886: PUSH1 0x00 00000888: DUP2 00000889: PUSH1 0x02 0000088b: ADD 0000088c: PUSH1 0x00 0000088e: PUSH2 0x0100 00000891: EXP 00000892: DUP2 00000893: SLOAD 00000894: DUP2 00000895: PUSH1 0xff 00000897: MUL 00000898: NOT 00000899: AND 0000089a: SWAP1 0000089b: DUP4 0000089c: MUL 0000089d: OR 0000089e: SWAP1 0000089f: SSTORE 000008a0: POP 000008a1: JUMPDEST 000008a2: POP 000008a3: POP 000008a4: POP 000008a5: JUMP 000008a6: JUMPDEST 000008a7: PUSH1 0x00 000008a9: PUSH1 0x00 000008ab: PUSH1 0x00 000008ad: POP 000008ae: PUSH1 0x00 000008b0: PUSH1 0x00 000008b2: DUP2 000008b3: MSTORE 000008b4: PUSH1 0x20 000008b6: ADD 000008b7: SWAP1 000008b8: DUP2 000008b9: MSTORE 000008ba: PUSH1 0x20 000008bc: ADD 000008bd: PUSH1 0x00 000008bf: KECCAK256 000008c0: PUSH1 0x00 000008c2: POP 000008c3: SWAP1 000008c4: POP 000008c5: PUSH1 0x40 000008c7: PUSH1 0x40 000008c9: MLOAD 000008ca: SWAP1 000008cb: DUP2 000008cc: ADD 000008cd: PUSH1 0x40 000008cf: MSTORE 000008d0: DUP1 000008d1: PUSH1 0x00 000008d3: DUP2 000008d4: MSTORE 000008d5: PUSH1 0x20 000008d7: ADD 000008d8: PUSH1 0x01 000008da: DUP2 000008db: MSTORE 000008dc: PUSH1 0x20 000008de: ADD 000008df: POP 000008e0: DUP2 000008e1: PUSH1 0x01 000008e3: ADD 000008e4: PUSH1 0x00 000008e6: POP 000008e7: PUSH1 0x00 000008e9: DUP4 000008ea: PUSH1 0x07 000008ec: ADD 000008ed: PUSH1 0x00 000008ef: POP 000008f0: SLOAD 000008f1: DUP2 000008f2: MSTORE 000008f3: PUSH1 0x20 000008f5: ADD 000008f6: SWAP1 000008f7: DUP2 000008f8: MSTORE 000008f9: PUSH1 0x20 000008fb: ADD 000008fc: PUSH1 0x00 000008fe: KECCAK256 000008ff: PUSH1 0x00 00000901: POP 00000902: PUSH1 0x00 00000904: DUP3 00000905: ADD 00000906: MLOAD 00000907: DUP2 00000908: PUSH1 0x01 0000090a: ADD 0000090b: PUSH1 0x00 0000090d: POP 0000090e: SSTORE 0000090f: PUSH1 0x20 00000911: DUP3 00000912: ADD 00000913: MLOAD 00000914: DUP2 00000915: PUSH1 0x02 00000917: ADD 00000918: PUSH1 0x00 0000091a: PUSH2 0x0100 0000091d: EXP 0000091e: DUP2 0000091f: SLOAD 00000920: DUP2 00000921: PUSH1 0xff 00000923: MUL 00000924: NOT 00000925: AND 00000926: SWAP1 00000927: DUP4 00000928: MUL 00000929: OR 0000092a: SWAP1 0000092b: SSTORE 0000092c: POP 0000092d: SWAP1 0000092e: POP 0000092f: POP 00000930: DUP1 00000931: PUSH1 0x07 00000933: ADD 00000934: PUSH1 0x00 00000936: DUP2 00000937: DUP2 00000938: POP 00000939: SLOAD 0000093a: PUSH1 0x01 0000093c: ADD 0000093d: SWAP2 0000093e: SWAP1 0000093f: POP 00000940: DUP2 00000941: SWAP1 00000942: SSTORE 00000943: POP 00000944: JUMPDEST 00000945: POP 00000946: JUMP 00000947: JUMPDEST 00000948: PUSH1 0x00 0000094a: PUSH1 0x00 0000094c: PUSH1 0x00 0000094e: PUSH1 0x00 00000950: POP 00000951: PUSH1 0x00 00000953: PUSH1 0x00 00000955: DUP2 00000956: MSTORE 00000957: PUSH1 0x20 00000959: ADD 0000095a: SWAP1 0000095b: DUP2 0000095c: MSTORE 0000095d: PUSH1 0x20 0000095f: ADD 00000960: PUSH1 0x00 00000962: KECCAK256 00000963: PUSH1 0x00 00000965: POP 00000966: SWAP2 00000967: POP 00000968: DUP2 00000969: PUSH1 0x01 0000096b: ADD 0000096c: PUSH1 0x00 0000096e: POP 0000096f: PUSH1 0x00 00000971: DUP5 00000972: DUP2 00000973: MSTORE 00000974: PUSH1 0x20 00000976: ADD 00000977: SWAP1 00000978: DUP2 00000979: MSTORE 0000097a: PUSH1 0x20 0000097c: ADD 0000097d: PUSH1 0x00 0000097f: KECCAK256 00000980: PUSH1 0x00 00000982: POP 00000983: SWAP1 00000984: POP 00000985: PUSH1 0x00 00000987: DUP2 00000988: PUSH1 0x02 0000098a: ADD 0000098b: PUSH1 0x00 0000098d: PUSH2 0x0100 00000990: EXP 00000991: DUP2 00000992: SLOAD 00000993: DUP2 00000994: PUSH1 0xff 00000996: MUL 00000997: NOT 00000998: AND 00000999: SWAP1 0000099a: DUP4 0000099b: MUL 0000099c: OR 0000099d: SWAP1 0000099e: SSTORE 0000099f: POP 000009a0: JUMPDEST 000009a1: POP 000009a2: POP 000009a3: POP 000009a4: 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 | access_control | codex | Publicly reachable SELFDESTRUCT path | 85 | no | — |
viewevidence_json{
"evidence": "The dispatcher routes selector:0x35f46994 at pc 0x14b directly to pc 0x6e3. The body at pc 0x6e3-0x73d contains no CALLER/auth check and ends in SELFDESTRUCT at pc 0x73d after loading an address from storage (keccak-derived base plus offset 2, then DIV 0x100 and mask to 20 bytes). The bundle's detector also validated SELFDESTRUCT reachability.",
"locations": [
"selector:0x35f46994",
"pc:0x6e3",
"pc:0x73d"
],
"recommendation": "Remove SELFDESTRUCT entirely if possible. If a shutdown path is required, gate it with a strong owner/multisig check on the same execution path and make the payout recipient immutable or tightly controlled.",
"exploit_scenario": "An arbitrary caller can invoke selector 0x35f46994 and terminate the contract, permanently disabling it and forcing its ETH balance to the beneficiary loaded from storage. That is an immediate denial of service; if some other public path can influence that beneficiary, the impact could escalate to theft, but that storage-authority link is not fully provable from this artifact alone."
}
|
| high | access_control | codex | Public low-level CALL with ETH/value semantics and no success handling | 85 | no | — |
viewevidence_json{
"evidence": "Selector:0x9e1a00aa dispatches from pc 0x25d to pc 0x2c8 with no caller check on that path. The call sequence at pc 0x345-0x371 builds the CALL arguments from stack values, including target materialized via DUP3/AND and value via DUP4, then executes CALL at pc 0x371. There is no SSTORE before the call on this path and no post-CALL success branch: the return value is discarded via SWAP4/POP...POP at pc 0x372-0x377. The automated validator saw one trace where the target resolved to the contract itself, but the static bytecode is not hardcoded to a constant target, so that trace does not rule out broader caller influence.",
"locations": [
"selector:0x9e1a00aa",
"pc:0x2c8",
"pc:0x345",
"pc:0x371"
],
"recommendation": "Restrict this function to an authorized operator, avoid raw CALL for value transfers unless strictly necessary, and require explicit success checks with revert-on-failure. If external calls must remain, follow checks-effects-interactions and emit events only after a confirmed success.",
"exploit_scenario": "A caller can invoke selector 0x9e1a00aa and drive the contract into a low-level CALL path that appears to use stack-derived target/value operands. If those operands are caller-controlled as the bytecode suggests, the contract can be used as an arbitrary call/value forwarder and its ETH can be drained or redirected. Even when the call fails, the function continues without reverting, so logs/off-chain accounting can report an action that never succeeded."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x3b6675ee8531990c64c45996aa2951d320b062f5e5a325b9474d0a0afb5671d8
call_targets:
0x8d06ce37c1ec69a0402688c3a9d34e583adcc88a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x3b6675ee8531990c64c45996aa2951d320b062f5e5a325b9474d0a0afb5671d8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8d06ce37c1ec69a0402688c3a9d34e583adcc88a"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x12065fe0",
"selector": "0x12065fe0",
"calldata_variants": [
"0x12065fe0",
"0x12065fe00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x35f46994",
"selector": "0x35f46994",
"calldata_variants": [
"0x35f46994",
"0x35f469940000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4001a81f",
"selector": "0x4001a81f",
"calldata_variants": [
"0x4001a81f",
"0x4001a81f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5dea5e47",
"selector": "0x5dea5e47",
"calldata_variants": [
"0x5dea5e47",
"0x5dea5e470000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x690b90a9",
"selector": "0x690b90a9",
"calldata_variants": [
"0x690b90a9",
"0x690b90a90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6adcef6b",
"selector": "0x6adcef6b",
"calldata_variants": [
"0x6adcef6b",
"0x6adcef6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6ccb5d02",
"selector": "0x6ccb5d02",
"calldata_variants": [
"0x6ccb5d02",
"0x6ccb5d020000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x75724990",
"selector": "0x75724990",
"calldata_variants": [
"0x75724990",
"0x757249900000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 881,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x3b6675ee8531990c64c45996aa2951d320b062f5e5a325b9474d0a0afb5671d8
call_targets:
0x8d06ce37c1ec69a0402688c3a9d34e583adcc88a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x3b6675ee8531990c64c45996aa2951d320b062f5e5a325b9474d0a0afb5671d8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8d06ce37c1ec69a0402688c3a9d34e583adcc88a"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x12065fe0",
"selector": "0x12065fe0",
"calldata_variants": [
"0x12065fe0",
"0x12065fe00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x35f46994",
"selector": "0x35f46994",
"calldata_variants": [
"0x35f46994",
"0x35f469940000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4001a81f",
"selector": "0x4001a81f",
"calldata_variants": [
"0x4001a81f",
"0x4001a81f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5dea5e47",
"selector": "0x5dea5e47",
"calldata_variants": [
"0x5dea5e47",
"0x5dea5e470000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x690b90a9",
"selector": "0x690b90a9",
"calldata_variants": [
"0x690b90a9",
"0x690b90a90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6adcef6b",
"selector": "0x6adcef6b",
"calldata_variants": [
"0x6adcef6b",
"0x6adcef6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6ccb5d02",
"selector": "0x6ccb5d02",
"calldata_variants": [
"0x6ccb5d02",
"0x6ccb5d020000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x75724990",
"selector": "0x75724990",
"calldata_variants": [
"0x75724990",
"0x757249900000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 881,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| medium | other | detector | SELFDESTRUCT reachable | 45 | yes | yes |
viewtrace_id: 0xd439a15996244e37b63182096c35d671934ccc006e3572afa9a62f1d0651bdb3
validation_json{
"sink": "SELFDESTRUCT",
"errors": 0,
"status": "confirmed",
"attempts": 3,
"trace_id": "0xd439a15996244e37b63182096c35d671934ccc006e3572afa9a62f1d0651bdb3",
"confirmed": true,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "sink_reached"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x12065fe0",
"selector": "0x12065fe0",
"calldata_variants": [
"0x12065fe0",
"0x12065fe00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x35f46994",
"selector": "0x35f46994",
"calldata_variants": [
"0x35f46994",
"0x35f469940000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4001a81f",
"selector": "0x4001a81f",
"calldata_variants": [
"0x4001a81f",
"0x4001a81f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5dea5e47",
"selector": "0x5dea5e47",
"calldata_variants": [
"0x5dea5e47",
"0x5dea5e470000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x690b90a9",
"selector": "0x690b90a9",
"calldata_variants": [
"0x690b90a9",
"0x690b90a90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6adcef6b",
"selector": "0x6adcef6b",
"calldata_variants": [
"0x6adcef6b",
"0x6adcef6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6ccb5d02",
"selector": "0x6ccb5d02",
"calldata_variants": [
"0x6ccb5d02",
"0x6ccb5d020000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x75724990",
"selector": "0x75724990",
"calldata_variants": [
"0x75724990",
"0x757249900000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 1524,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"selfdestruct_count": 1
}
|