TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

019b3836-3ff9-7388-a9e7-a9e6cfa6cf52

complete
Chain ID
1
Address
Block Number
Created
Fri, Dec 19, 2025 8:03 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
2
Validated
2
Source
Bytecode only
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
crit 0 high 2 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
5139 artifact.fetch complete 1 / 3 3 months ago
5140 tool.cast_disasm complete 1 / 3 3 months ago
48828 analysis.bundle complete 1 / 3 1 week ago
48829 capability.graph complete 1 / 3 1 week ago
48830 detector.run complete 1 / 3 1 week ago
48831 validation.fork complete 1 / 3 1 week ago
113306 report.consolidate complete 1 / 6 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: no

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.
View stdout
{"no_findings":false,"summary":"BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.","findings":[{"severity":"medium","category":"other","title":"Best-effort inferred redemption path ignores ETH payout failure","exploit_scenario":"Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept.","recommendation":"Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.","evidence":"In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.","locations":["selector:0xe4849b32","pc:0x967","pc:0x9b5"]},{"severity":"low","category":"other","title":"Financial logic appears to use manipulable block data as randomness","exploit_scenario":"The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable.","recommendation":"Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.","evidence":"The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.","locations":["selector:0xa6f2ae3a","selector:0x41fa4876","pc:0x1e7","pc:0x85c","pc:0x8a8"]}]}
View stderr
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-x5qbg8gi
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5c6d-af02-72f0-9db8-23d33d762744
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc "pwd && ls -la && rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
/tmp/codex-x5qbg8gi
total 284
drwx------   2 noahkuhn noahkuhn   4096 Apr  5 06:56 .
drwxrwxrwt 270 nobody   nogroup   24576 Apr  5 06:56 ..
-rw-rw-r--   1 noahkuhn noahkuhn 252427 Apr  5 06:56 BYTECODE_BUNDLE.json
-rw-rw-r--   1 noahkuhn noahkuhn    815 Apr  5 06:56 codex-output-schema.json
BYTECODE_BUNDLE.json

exec
/bin/bash -lc "jq 'keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  "analysis_artifact",
  "analysis_run",
  "artifact",
  "capability_graph",
  "detector_findings",
  "heuristics_summary"
]

exec
/bin/bash -lc "jq '.detector_findings? // .detectors? // .findings? | if .==null then null else (type), (if type==\"array\" then length else keys end) end' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
"array"
3

exec
/bin/bash -lc "jq '.bytecode_summary? // .summary? // {}' BYTECODE_BUNDLE.json | sed -n '1,220p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{}

exec
/bin/bash -lc "jq '.analysis_artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  "address",
  "artifact_hash",
  "artifact_json",
  "block_number",
  "chain_id",
  "codehash",
  "created_at",
  "id",
  "updated_at",
  "version"
]

exec
/bin/bash -lc "jq '.artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  "codehash",
  "compiler_json",
  "implementation_address",
  "is_proxy",
  "runtime_bytecode",
  "verified_source"
]

exec
/bin/bash -lc "jq '.heuristics_summary | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  "create2_count",
  "delegatecall_count",
  "flags",
  "selfdestruct_count"
]

exec
/bin/bash -lc "jq '.capability_graph | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  "address",
  "block_number",
  "chain_id",
  "codehash",
  "created_at",
  "graph_hash",
  "graph_json",
  "id",
  "updated_at",
  "version"
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  "auth",
  "basic_blocks",
  "callsites",
  "cfg_edges",
  "cfg_hash",
  "dispatcher_type",
  "function_entries",
  "functions",
  "selectors",
  "sinks",
  "storage",
  "version"
]

exec
/bin/bash -lc "jq '.capability_graph.graph_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  "edges",
  "nodes",
  "version"
]

exec
/bin/bash -lc "jq '.detector_findings' BYTECODE_BUNDLE.json | sed -n '1,240p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  {
    "confidence": 60,
    "evidence_json": {
      "call_count": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 1126,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1194,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1458,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        }
      ],
      "guards_detected": [],
      "untrusted_call_count": 6
    },
    "normalized_json": {
      "sink": "CALL"
    },
    "severity": "high",
    "title": "Untrusted CALL target/value reachable",
    "validated": true,
    "validation_json": {
      "attempts": 1,
      "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
      ],
      "classification": "target_varies",
      "confirmed": true,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "confirmed",
      "target_varies": true,
      "trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
      "trace_mode": "callTracer"
    }
  },
  {
    "confidence": 55,
    "evidence_json": {
      "eth_value_calls": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 1126,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1194,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1458,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        }
      ],
      "guards_detected": []
    },
    "normalized_json": {
      "sink": "CALL",
      "value": "nonzero"
    },
    "severity": "high",
    "title": "ETH value transfer possible",
    "validated": true,
    "validation_json": {
      "attempts": 1,
      "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
      ],
      "classification": "target_varies",
      "confirmed": true,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "confirmed",
      "target_varies": true,
      "trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
      "trace_mode": "callTracer"
    }
  },
  {
    "confidence": 45,
    "evidence_json": {
      "create2_count": 2,
      "create_count": 0
    },
    "normalized_json": {
      "sink": "CREATE"
    },
    "severity": "medium",
    "title": "CREATE/CREATE2 reachable",
    "validated": false,
    "validation_json": {
      "attempts": 32,
      "call_targets": null,
      "classification": "no_sink",
      "confirmed": false,
      "errors": 0,
      "matched_probe": null,
      "sink": "CREATE",
      "status": "unknown",
      "target_varies": null,
      "trace_id": "0x42c3eea034cb5a22915e2bb9a55f1b44d524b5a84a6c13a7eb3108b245c52492",
      "trace_mode": "structLogs"
    }
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.dispatcher_type, .analysis_artifact.artifact_json.selectors, .analysis_artifact.artifact_json.function_entries' BYTECODE_BUNDLE.json | sed -n '1,260p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
"selector_jump_table"
[
  "0x06fdde03",
  "0x18160ddd",
  "0x1fe9eabc",
  "0x233de126",
  "0x23b872dd",
  "0x313ce567",
  "0x41fa4876",
  "0x70a08231",
  "0x7f2a8a80",
  "0x8da5cb5b",
  "0x95d89b41",
  "0xa6f2ae3a",
  "0xa9059cbb",
  "0xaa295de9",
  "0xbc094049",
  "0xc4839e8b",
  "0xcae9ca51",
  "0xdc3080f2",
  "0xdd62ed3e",
  "0xe4849b32",
  "0xf2fde38b",
  "0xff9b3acf"
]
[
  {
    "entry_pc": null,
    "selector": "0x06fdde03"
  },
  {
    "entry_pc": 535423676,
    "selector": "0x18160ddd"
  },
  {
    "entry_pc": 591257894,
    "selector": "0x1fe9eabc"
  },
  {
    "entry_pc": 599290589,
    "selector": "0x233de126"
  },
  {
    "entry_pc": 826074471,
    "selector": "0x23b872dd"
  },
  {
    "entry_pc": 1106921590,
    "selector": "0x313ce567"
  },
  {
    "entry_pc": 1889567281,
    "selector": "0x41fa4876"
  },
  {
    "entry_pc": 2133494400,
    "selector": "0x70a08231"
  },
  {
    "entry_pc": 2376452955,
    "selector": "0x7f2a8a80"
  },
  {
    "entry_pc": 2514000705,
    "selector": "0x8da5cb5b"
  },
  {
    "entry_pc": 2800922170,
    "selector": "0x95d89b41"
  },
  {
    "entry_pc": 2835717307,
    "selector": "0xa6f2ae3a"
  },
  {
    "entry_pc": 2854837737,
    "selector": "0xa9059cbb"
  },
  {
    "entry_pc": 3154722889,
    "selector": "0xaa295de9"
  },
  {
    "entry_pc": 3296960139,
    "selector": "0xbc094049"
  },
  {
    "entry_pc": 3404319313,
    "selector": "0xc4839e8b"
  },
  {
    "entry_pc": 3694166258,
    "selector": "0xcae9ca51"
  },
  {
    "entry_pc": 3714247998,
    "selector": "0xdc3080f2"
  },
  {
    "entry_pc": 3833895730,
    "selector": "0xdd62ed3e"
  },
  {
    "entry_pc": 4076725131,
    "selector": "0xe4849b32"
  },
  {
    "entry_pc": 4288363215,
    "selector": "0xf2fde38b"
  },
  {
    "entry_pc": null,
    "selector": "0xff9b3acf"
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.auth' BYTECODE_BUNDLE.json | sed -n '1,260p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{
  "guards": []
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json | sed -n '1,320p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  {
    "opcode": "CALL",
    "pc": 1126,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 1194,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 1458,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 2485,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALLCODE",
    "pc": 2575,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 2593,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  }
]

exec
/bin/bash -lc "jq '.capability_graph.graph_json.nodes[] | select((.pc? == 1126) or (.pc? == 1194) or (.pc? == 1458) or (.pc? == 2485) or (.pc? == 2575) or (.pc? == 2593) or (.selector? "'!= null))'"' BYTECODE_BUNDLE.json | sed -n '1,360p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{
  "id": "call:1126",
  "opcode": "CALL",
  "pc": 1126,
  "type": "callsite"
}
{
  "id": "call:1194",
  "opcode": "CALL",
  "pc": 1194,
  "type": "callsite"
}
{
  "id": "call:1458",
  "opcode": "CALL",
  "pc": 1458,
  "type": "callsite"
}
{
  "id": "call:2485",
  "opcode": "CALL",
  "pc": 2485,
  "type": "callsite"
}
{
  "id": "call:2575",
  "opcode": "CALLCODE",
  "pc": 2575,
  "type": "callsite"
}
{
  "id": "call:2593",
  "opcode": "CALL",
  "pc": 2593,
  "type": "callsite"
}
{
  "entry_pc": null,
  "id": "fn:0x06fdde03",
  "selector": "0x06fdde03",
  "type": "function"
}
{
  "entry_pc": 535423676,
  "id": "fn:0x18160ddd",
  "selector": "0x18160ddd",
  "type": "function"
}
{
  "entry_pc": 591257894,
  "id": "fn:0x1fe9eabc",
  "selector": "0x1fe9eabc",
  "type": "function"
}
{
  "entry_pc": 599290589,
  "id": "fn:0x233de126",
  "selector": "0x233de126",
  "type": "function"
}
{
  "entry_pc": 826074471,
  "id": "fn:0x23b872dd",
  "selector": "0x23b872dd",
  "type": "function"
}
{
  "entry_pc": 1106921590,
  "id": "fn:0x313ce567",
  "selector": "0x313ce567",
  "type": "function"
}
{
  "entry_pc": 1889567281,
  "id": "fn:0x41fa4876",
  "selector": "0x41fa4876",
  "type": "function"
}
{
  "entry_pc": 2133494400,
  "id": "fn:0x70a08231",
  "selector": "0x70a08231",
  "type": "function"
}
{
  "entry_pc": 2376452955,
  "id": "fn:0x7f2a8a80",
  "selector": "0x7f2a8a80",
  "type": "function"
}
{
  "entry_pc": 2514000705,
  "id": "fn:0x8da5cb5b",
  "selector": "0x8da5cb5b",
  "type": "function"
}
{
  "entry_pc": 2800922170,
  "id": "fn:0x95d89b41",
  "selector": "0x95d89b41",
  "type": "function"
}
{
  "entry_pc": 2835717307,
  "id": "fn:0xa6f2ae3a",
  "selector": "0xa6f2ae3a",
  "type": "function"
}
{
  "entry_pc": 2854837737,
  "id": "fn:0xa9059cbb",
  "selector": "0xa9059cbb",
  "type": "function"
}
{
  "entry_pc": 3154722889,
  "id": "fn:0xaa295de9",
  "selector": "0xaa295de9",
  "type": "function"
}
{
  "entry_pc": 3296960139,
  "id": "fn:0xbc094049",
  "selector": "0xbc094049",
  "type": "function"
}
{
  "entry_pc": 3404319313,
  "id": "fn:0xc4839e8b",
  "selector": "0xc4839e8b",
  "type": "function"
}
{
  "entry_pc": 3694166258,
  "id": "fn:0xcae9ca51",
  "selector": "0xcae9ca51",
  "type": "function"
}
{
  "entry_pc": 3714247998,
  "id": "fn:0xdc3080f2",
  "selector": "0xdc3080f2",
  "type": "function"
}
{
  "entry_pc": 3833895730,
  "id": "fn:0xdd62ed3e",
  "selector": "0xdd62ed3e",
  "type": "function"
}
{
  "entry_pc": 4076725131,
  "id": "fn:0xe4849b32",
  "selector": "0xe4849b32",
  "type": "function"
}
{
  "entry_pc": 4288363215,
  "id": "fn:0xf2fde38b",
  "selector": "0xf2fde38b",
  "type": "function"
}
{
  "entry_pc": null,
  "id": "fn:0xff9b3acf",
  "selector": "0xff9b3acf",
  "type": "function"
}

exec
/bin/bash -lc "jq '.capability_graph.graph_json.edges[] | select((.to_pc? == 1126) or (.to_pc? == 1194) or (.to_pc? == 1458) or (.to_pc? == 2485) or (.to_pc? == 2575) or (.to_pc? == 2593) or (.from_pc? == 1126) or (.from_pc? == 1194) or (.from_pc? == 1458) or (.from_pc? == 2485) or (.from_pc? == 2575) or (.from_pc? == 2593))' BYTECODE_BUNDLE.json | sed -n '1,360p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json | sed -n '1,360p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
[
  {
    "auth": {
      "guards": []
    },
    "entry_pc": null,
    "selector": "0x06fdde03",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 47,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 272,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 343,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 363,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 375,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 406,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 471,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 596,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 626,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 645,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 715,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 735,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 809,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 818,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 830,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SSTORE",
          "pc": 1001,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1296,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 1362,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1392,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2041,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2096,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2113,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 2179,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2216,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2281,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2352,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2463,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 2544,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 17
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 535423676,
    "selector": "0x18160ddd",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 47,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 272,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 343,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 363,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 375,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 406,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 471,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 596,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 626,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 645,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 715,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 735,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 809,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 818,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 830,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SSTORE",
          "pc": 1001,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1296,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 1362,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1392,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2041,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2096,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2113,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 2179,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2216,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2281,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2352,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2463,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 2544,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 17
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 591257894,
    "selector": "0x1fe9eabc",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 47,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 272,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 343,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 363,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 375,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 406,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 471,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 596,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {

exec
/bin/bash -lc "jq '.artifact' BYTECODE_BUNDLE.json | sed -n '1,220p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{
  "codehash": "0xbc9512dd31c5846060b826a844fee483fe053fcba40775ed9fb1e33a380ad47d",
  "compiler_json": {
    "etherscan": {
      "skipped": true
    }
  },
  "implementation_address": null,
  "is_proxy": false,
  "runtime_bytecode": {
    "full": "0x606060405236156101065760e060020a600035046306fdde03811461010857806318160ddd146101655780631fe9eabc1461016e578063233de1261461019057806323b872dd1461019f578063313ce567146101d157806341fa4876146101dd57806370a08231146102335780637f2a8a801461024b5780638da5cb5b1461026c57806395d89b411461027e578063a6f2ae3a146102d9578063a9059cbb146102f4578063aa295de914610323578063bc0940491461032c578063c4839e8b14610335578063cae9ca5114610356578063dc3080f2146104bd578063dd62ed3e146104e2578063e4849b3214610507578063f2fde38b14610549578063ff9b3acf1461056a575b005b60408051600180546020600282841615610100026000190190921691909104601f810182900482028401820190945283835261057c93908301828280156107e85780601f106107bd576101008083540402835291602001916107e8565b6105ea60045481565b610106600435600054600160a060020a0390811633909116146107f057610002565b6105fc60075463ffffffff1681565b6105ea600435602435604435600160a060020a038316600090815260096020526040812054829010156106d257610002565b61061660035460ff1681565b6105ea6004356024355b600080805b8381101561064957604080514383900360001901408152602081018790528151908190039091019020600290066000141561022b57600281900a909101905b6001016101ec565b6105ea60043560096020526000908152604090205481565b61010660043560005433600160a060020a039081169116146107f557610002565b61062c600054600160a060020a031681565b61057c6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107e85780601f106107bd576101008083540402835291602001916107e8565b6105ea60065434906000908190819084111561083e57610002565b61010660043560243533600160a060020a03166000908152600960205260409020548190101561065157610002565b6105ea60065481565b6105ea60085481565b61010660043560005433600160a060020a0390811691161461081757610002565b604080516020604435600481810135601f81018490048402850184019095528484526105ea9481359460248035959394606494929391019181908401838280828437509496505050505050506000600083600a600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156104905780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257506001979650505050505050565b600b602090815260043560009081526040808220909252602435815220546105ea9081565b600a602090815260043560009081526040808220909252602435815220546105ea9081565b6105ea60043560045430600160a060020a039081163164174876e800029190910460085533166000908152600960205260408120548290101561096757610002565b61010660043560005433600160a060020a039081169116146109ec57610002565b61062c600554600160a060020a031681565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805163ffffffff929092168252519081900360200190f35b6040805160ff9092168252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b509392505050565b600160a060020a038216600090815260096020526040902054818101101561067857610002565b33600160a060020a0390811660008181526009602090815260408083208054879003905593861680835291849020805486019055835185815293519193600080516020610a0e833981519152929081900390910190a35050565b600160a060020a03831660009081526009602052604090205480830110156106f957610002565b600160a060020a038481166000818152600a602090815260408083203390951680845294825280832054938352600b825280832094835293905291909120548301111561074557610002565b600160a060020a03848116600081815260096020908152604080832080548890039055878516808452818420805489019055848452600b83528184203390961684529482529182902080548701905581518681529151600080516020610a0e8339815191529281900390910190a35060019392505050565b820191906000526020600020905b8154815290600101906020018083116107cb57829003601f168201915b505050505081565b600655565b6005805473ffffffffffffffffffffffffffffffffffffffff19168217905550565b6102008163ffffffff16101561082c57610002565b6007805463ffffffff19168217905550565b60045430600160a060020a03163164174876e800020460085560408051438152426020820152808201869052905190819003606001902061088090600a6101e7565b60075490915063ffffffff1681106108a557600092506103e764174876e80085040491505b60075463ffffffff168110156108c35764174876e800600285020492505b33600160a060020a0390811660008181526009602090815260408083208054890190556005548516835280832080548801905530909416808352918490208054878901900390558351878152935192939192600080516020610a0e8339815191529281900390910190a3600554604080518481529051600160a060020a0392831692301691600080516020610a0e833981519152919081900360200190a350505090565b5030600160a060020a039081166000908152600960205260408082208054850190553390921680825282822080548590039055915160085464174876e800850402929190839082818181858883f1505060408051868152905130600160a060020a0316949350600080516020610a0e83398151915292509081900360200190a3919050565b6000805473ffffffffffffffffffffffffffffffffffffffff1916821790555056ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
    "head": null,
    "length": 5214,
    "tail": null,
    "truncated": false
  },
  "verified_source": false
}

exec
/bin/bash -lc "jq '.heuristics_summary' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{
  "create2_count": 2,
  "delegatecall_count": 0,
  "flags": [
    "create_opcodes_present"
  ],
  "selfdestruct_count": 0
}

exec
/bin/bash -lc "jq '.analysis_run' BYTECODE_BUNDLE.json" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{
  "address": "0x3456f6ea53a44d9bdf0d3da99254860531cb0af5",
  "block_number": null,
  "chain_id": 1,
  "child_links": [],
  "created_at": "2025-12-19T20:03:58.000000Z",
  "id": "019b3836-3ff9-7388-a9e7-a9e6cfa6cf52",
  "parent_links": [],
  "status": "running",
  "updated_at": "2026-04-04T19:59:30.000000Z"
}

exec
/bin/bash -lc "node -e 'const fs=require(\"fs\"); const x=JSON.parse(fs.readFileSync(\"BYTECODE_BUNDLE.json\",\"utf8\")); const b=x.artifact.runtime_bytecode.full.slice(2); console.log(b.length/2)'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
2606

exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
for(let pc=0;pc<bytes.length;){ const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else {pc++;} if(pc<420|| (pc>1050&&pc<1510)|| (pc>2400&&pc<2610)) console.log(line); }
NODE" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
   0 PUSH1 0x60
   2 PUSH1 0x40
   4 MSTORE
   5 CALLDATASIZE
   6 ISZERO
   7 PUSH2 0x0106
  10 JUMPI
  11 PUSH1 0xe0
  13 PUSH1 0x02
  15 EXP
  16 PUSH1 0x00
  18 CALLDATALOAD
  19 DIV
  20 PUSH4 0x06fdde03
  25 DUP2
  26 EQ
  27 PUSH2 0x0108
  30 JUMPI
  31 DUP1
  32 PUSH4 0x18160ddd
  37 EQ
  38 PUSH2 0x0165
  41 JUMPI
  42 DUP1
  43 PUSH4 0x1fe9eabc
  48 EQ
  49 PUSH2 0x016e
  52 JUMPI
  53 DUP1
  54 PUSH4 0x233de126
  59 EQ
  60 PUSH2 0x0190
  63 JUMPI
  64 DUP1
  65 PUSH4 0x23b872dd
  70 EQ
  71 PUSH2 0x019f
  74 JUMPI
  75 DUP1
  76 PUSH4 0x313ce567
  81 EQ
  82 PUSH2 0x01d1
  85 JUMPI
  86 DUP1
  87 PUSH4 0x41fa4876
  92 EQ
  93 PUSH2 0x01dd
  96 JUMPI
  97 DUP1
  98 PUSH4 0x70a08231
 103 EQ
 104 PUSH2 0x0233
 107 JUMPI
 108 DUP1
 109 PUSH4 0x7f2a8a80
 114 EQ
 115 PUSH2 0x024b
 118 JUMPI
 119 DUP1
 120 PUSH4 0x8da5cb5b
 125 EQ
 126 PUSH2 0x026c
 129 JUMPI
 130 DUP1
 131 PUSH4 0x95d89b41
 136 EQ
 137 PUSH2 0x027e
 140 JUMPI
 141 DUP1
 142 PUSH4 0xa6f2ae3a
 147 EQ
 148 PUSH2 0x02d9
 151 JUMPI
 152 DUP1
 153 PUSH4 0xa9059cbb
 158 EQ
 159 PUSH2 0x02f4
 162 JUMPI
 163 DUP1
 164 PUSH4 0xaa295de9
 169 EQ
 170 PUSH2 0x0323
 173 JUMPI
 174 DUP1
 175 PUSH4 0xbc094049
 180 EQ
 181 PUSH2 0x032c
 184 JUMPI
 185 DUP1
 186 PUSH4 0xc4839e8b
 191 EQ
 192 PUSH2 0x0335
 195 JUMPI
 196 DUP1
 197 PUSH4 0xcae9ca51
 202 EQ
 203 PUSH2 0x0356
 206 JUMPI
 207 DUP1
 208 PUSH4 0xdc3080f2
 213 EQ
 214 PUSH2 0x04bd
 217 JUMPI
 218 DUP1
 219 PUSH4 0xdd62ed3e
 224 EQ
 225 PUSH2 0x04e2
 228 JUMPI
 229 DUP1
 230 PUSH4 0xe4849b32
 235 EQ
 236 PUSH2 0x0507
 239 JUMPI
 240 DUP1
 241 PUSH4 0xf2fde38b
 246 EQ
 247 PUSH2 0x0549
 250 JUMPI
 251 DUP1
 252 PUSH4 0xff9b3acf
 257 EQ
 258 PUSH2 0x056a
 261 JUMPI
 262 JUMPDEST
 263 STOP
 264 JUMPDEST
 265 PUSH1 0x40
 267 DUP1
 268 MLOAD
 269 PUSH1 0x01
 271 DUP1
 272 SLOAD
 273 PUSH1 0x20
 275 PUSH1 0x02
 277 DUP3
 278 DUP5
 279 AND
 280 ISZERO
 281 PUSH2 0x0100
 284 MUL
 285 PUSH1 0x00
 287 NOT
 288 ADD
 289 SWAP1
 290 SWAP3
 291 AND
 292 SWAP2
 293 SWAP1
 294 SWAP2
 295 DIV
 296 PUSH1 0x1f
 298 DUP2
 299 ADD
 300 DUP3
 301 SWAP1
 302 DIV
 303 DUP3
 304 MUL
 305 DUP5
 306 ADD
 307 DUP3
 308 ADD
 309 SWAP1
 310 SWAP5
 311 MSTORE
 312 DUP4
 313 DUP4
 314 MSTORE
 315 PUSH2 0x057c
 318 SWAP4
 319 SWAP1
 320 DUP4
 321 ADD
 322 DUP3
 323 DUP3
 324 DUP1
 325 ISZERO
 326 PUSH2 0x07e8
 329 JUMPI
 330 DUP1
 331 PUSH1 0x1f
 333 LT
 334 PUSH2 0x07bd
 337 JUMPI
 338 PUSH2 0x0100
 341 DUP1
 342 DUP4
 343 SLOAD
 344 DIV
 345 MUL
 346 DUP4
 347 MSTORE
 348 SWAP2
 349 PUSH1 0x20
 351 ADD
 352 SWAP2
 353 PUSH2 0x07e8
 356 JUMP
 357 JUMPDEST
 358 PUSH2 0x05ea
 361 PUSH1 0x04
 363 SLOAD
 364 DUP2
 365 JUMP
 366 JUMPDEST
 367 PUSH2 0x0106
 370 PUSH1 0x04
 372 CALLDATALOAD
 373 PUSH1 0x00
 375 SLOAD
 376 PUSH1 0x01
 378 PUSH1 0xa0
 380 PUSH1 0x02
 382 EXP
 383 SUB
 384 SWAP1
 385 DUP2
 386 AND
 387 CALLER
 388 SWAP1
 389 SWAP2
 390 AND
 391 EQ
 392 PUSH2 0x07f0
 395 JUMPI
 396 PUSH2 0x0002
 399 JUMP
 400 JUMPDEST
 401 PUSH2 0x05fc
 404 PUSH1 0x07
 406 SLOAD
 407 PUSH4 0xffffffff
 412 AND
 413 DUP2
 414 JUMP
 415 JUMPDEST
 416 PUSH2 0x05ea
1050 AND
1051 DUP2
1052 MSTORE
1053 PUSH1 0x20
1055 ADD
1056 DUP5
1057 DUP2
1058 MSTORE
1059 PUSH1 0x20
1061 ADD
1062 DUP4
1063 PUSH1 0x01
1065 PUSH1 0xa0
1067 PUSH1 0x02
1069 EXP
1070 SUB
1071 AND
1072 DUP2
1073 MSTORE
1074 PUSH1 0x20
1076 ADD
1077 DUP1
1078 PUSH1 0x20
1080 ADD
1081 DUP3
1082 DUP2
1083 SUB
1084 DUP3
1085 MSTORE
1086 DUP4
1087 DUP2
1088 DUP2
1089 MLOAD
1090 DUP2
1091 MSTORE
1092 PUSH1 0x20
1094 ADD
1095 SWAP2
1096 POP
1097 DUP1
1098 MLOAD
1099 SWAP1
1100 PUSH1 0x20
1102 ADD
1103 SWAP1
1104 DUP1
1105 DUP4
1106 DUP4
1107 DUP3
1108 SWAP1
1109 PUSH1 0x00
1111 PUSH1 0x04
1113 PUSH1 0x20
1115 DUP5
1116 PUSH1 0x1f
1118 ADD
1119 DIV
1120 PUSH1 0x0f
1122 MUL
1123 PUSH1 0x03
1125 ADD
1126 CALL
1127 POP
1128 SWAP1
1129 POP
1130 SWAP1
1131 DUP2
1132 ADD
1133 SWAP1
1134 PUSH1 0x1f
1136 AND
1137 DUP1
1138 ISZERO
1139 PUSH2 0x0490
1142 JUMPI
1143 DUP1
1144 DUP3
1145 SUB
1146 DUP1
1147 MLOAD
1148 PUSH1 0x01
1150 DUP4
1151 PUSH1 0x20
1153 SUB
1154 PUSH2 0x0100
1157 EXP
1158 SUB
1159 NOT
1160 AND
1161 DUP2
1162 MSTORE
1163 PUSH1 0x20
1165 ADD
1166 SWAP2
1167 POP
1168 JUMPDEST
1169 POP
1170 SWAP6
1171 POP
1172 POP
1173 POP
1174 POP
1175 POP
1176 POP
1177 PUSH1 0x00
1179 PUSH1 0x40
1181 MLOAD
1182 DUP1
1183 DUP4
1184 SUB
1185 DUP2
1186 PUSH1 0x00
1188 DUP8
1189 PUSH2 0x61da
1192 GAS
1193 SUB
1194 CALL
1195 ISZERO
1196 PUSH2 0x0002
1199 JUMPI
1200 POP
1201 PUSH1 0x01
1203 SWAP8
1204 SWAP7
1205 POP
1206 POP
1207 POP
1208 POP
1209 POP
1210 POP
1211 POP
1212 JUMP
1213 JUMPDEST
1214 PUSH1 0x0b
1216 PUSH1 0x20
1218 SWAP1
1219 DUP2
1220 MSTORE
1221 PUSH1 0x04
1223 CALLDATALOAD
1224 PUSH1 0x00
1226 SWAP1
1227 DUP2
1228 MSTORE
1229 PUSH1 0x40
1231 DUP1
1232 DUP3
1233 SHA3
1234 SWAP1
1235 SWAP3
1236 MSTORE
1237 PUSH1 0x24
1239 CALLDATALOAD
1240 DUP2
1241 MSTORE
1242 SHA3
1243 SLOAD
1244 PUSH2 0x05ea
1247 SWAP1
1248 DUP2
1249 JUMP
1250 JUMPDEST
1251 PUSH1 0x0a
1253 PUSH1 0x20
1255 SWAP1
1256 DUP2
1257 MSTORE
1258 PUSH1 0x04
1260 CALLDATALOAD
1261 PUSH1 0x00
1263 SWAP1
1264 DUP2
1265 MSTORE
1266 PUSH1 0x40
1268 DUP1
1269 DUP3
1270 SHA3
1271 SWAP1
1272 SWAP3
1273 MSTORE
1274 PUSH1 0x24
1276 CALLDATALOAD
1277 DUP2
1278 MSTORE
1279 SHA3
1280 SLOAD
1281 PUSH2 0x05ea
1284 SWAP1
1285 DUP2
1286 JUMP
1287 JUMPDEST
1288 PUSH2 0x05ea
1291 PUSH1 0x04
1293 CALLDATALOAD
1294 PUSH1 0x04
1296 SLOAD
1297 ADDRESS
1298 PUSH1 0x01
1300 PUSH1 0xa0
1302 PUSH1 0x02
1304 EXP
1305 SUB
1306 SWAP1
1307 DUP2
1308 AND
1309 BALANCE
1310 PUSH5 0x174876e800
1316 MUL
1317 SWAP2
1318 SWAP1
1319 SWAP2
1320 DIV
1321 PUSH1 0x08
1323 SSTORE
1324 CALLER
1325 AND
1326 PUSH1 0x00
1328 SWAP1
1329 DUP2
1330 MSTORE
1331 PUSH1 0x09
1333 PUSH1 0x20
1335 MSTORE
1336 PUSH1 0x40
1338 DUP2
1339 SHA3
1340 SLOAD
1341 DUP3
1342 SWAP1
1343 LT
1344 ISZERO
1345 PUSH2 0x0967
1348 JUMPI
1349 PUSH2 0x0002
1352 JUMP
1353 JUMPDEST
1354 PUSH2 0x0106
1357 PUSH1 0x04
1359 CALLDATALOAD
1360 PUSH1 0x00
1362 SLOAD
1363 CALLER
1364 PUSH1 0x01
1366 PUSH1 0xa0
1368 PUSH1 0x02
1370 EXP
1371 SUB
1372 SWAP1
1373 DUP2
1374 AND
1375 SWAP2
1376 AND
1377 EQ
1378 PUSH2 0x09ec
1381 JUMPI
1382 PUSH2 0x0002
1385 JUMP
1386 JUMPDEST
1387 PUSH2 0x062c
1390 PUSH1 0x05
1392 SLOAD
1393 PUSH1 0x01
1395 PUSH1 0xa0
1397 PUSH1 0x02
1399 EXP
1400 SUB
1401 AND
1402 DUP2
1403 JUMP
1404 JUMPDEST
1405 PUSH1 0x40
1407 MLOAD
1408 DUP1
1409 DUP1
1410 PUSH1 0x20
1412 ADD
1413 DUP3
1414 DUP2
1415 SUB
1416 DUP3
1417 MSTORE
1418 DUP4
1419 DUP2
1420 DUP2
1421 MLOAD
1422 DUP2
1423 MSTORE
1424 PUSH1 0x20
1426 ADD
1427 SWAP2
1428 POP
1429 DUP1
1430 MLOAD
1431 SWAP1
1432 PUSH1 0x20
1434 ADD
1435 SWAP1
1436 DUP1
1437 DUP4
1438 DUP4
1439 DUP3
1440 SWAP1
1441 PUSH1 0x00
1443 PUSH1 0x04
1445 PUSH1 0x20
1447 DUP5
1448 PUSH1 0x1f
1450 ADD
1451 DIV
1452 PUSH1 0x0f
1454 MUL
1455 PUSH1 0x03
1457 ADD
1458 CALL
1459 POP
1460 SWAP1
1461 POP
1462 SWAP1
1463 DUP2
1464 ADD
1465 SWAP1
1466 PUSH1 0x1f
1468 AND
1469 DUP1
1470 ISZERO
1471 PUSH2 0x05dc
1474 JUMPI
1475 DUP1
1476 DUP3
1477 SUB
1478 DUP1
1479 MLOAD
1480 PUSH1 0x01
1482 DUP4
1483 PUSH1 0x20
1485 SUB
1486 PUSH2 0x0100
1489 EXP
1490 SUB
1491 NOT
1492 AND
1493 DUP2
1494 MSTORE
1495 PUSH1 0x20
1497 ADD
1498 SWAP2
1499 POP
1500 JUMPDEST
1501 POP
1502 SWAP3
1503 POP
1504 POP
1505 POP
1506 PUSH1 0x40
1508 MLOAD
2400 SWAP1
2401 LOG3
2402 POP
2403 POP
2404 POP
2405 SWAP1
2406 JUMP
2407 JUMPDEST
2408 POP
2409 ADDRESS
2410 PUSH1 0x01
2412 PUSH1 0xa0
2414 PUSH1 0x02
2416 EXP
2417 SUB
2418 SWAP1
2419 DUP2
2420 AND
2421 PUSH1 0x00
2423 SWAP1
2424 DUP2
2425 MSTORE
2426 PUSH1 0x09
2428 PUSH1 0x20
2430 MSTORE
2431 PUSH1 0x40
2433 DUP1
2434 DUP3
2435 SHA3
2436 DUP1
2437 SLOAD
2438 DUP6
2439 ADD
2440 SWAP1
2441 SSTORE
2442 CALLER
2443 SWAP1
2444 SWAP3
2445 AND
2446 DUP1
2447 DUP3
2448 MSTORE
2449 DUP3
2450 DUP3
2451 SHA3
2452 DUP1
2453 SLOAD
2454 DUP6
2455 SWAP1
2456 SUB
2457 SWAP1
2458 SSTORE
2459 SWAP2
2460 MLOAD
2461 PUSH1 0x08
2463 SLOAD
2464 PUSH5 0x174876e800
2470 DUP6
2471 DIV
2472 MUL
2473 SWAP3
2474 SWAP2
2475 SWAP1
2476 DUP4
2477 SWAP1
2478 DUP3
2479 DUP2
2480 DUP2
2481 DUP2
2482 DUP6
2483 DUP9
2484 DUP4
2485 CALL
2486 POP
2487 POP
2488 PUSH1 0x40
2490 DUP1
2491 MLOAD
2492 DUP7
2493 DUP2
2494 MSTORE
2495 SWAP1
2496 MLOAD
2497 ADDRESS
2498 PUSH1 0x01
2500 PUSH1 0xa0
2502 PUSH1 0x02
2504 EXP
2505 SUB
2506 AND
2507 SWAP5
2508 SWAP4
2509 POP
2510 PUSH1 0x00
2512 DUP1
2513 MLOAD
2514 PUSH1 0x20
2516 PUSH2 0x0a0e
2519 DUP4
2520 CODECOPY
2521 DUP2
2522 MLOAD
2523 SWAP2
2524 MSTORE
2525 SWAP3
2526 POP
2527 SWAP1
2528 DUP2
2529 SWAP1
2530 SUB
2531 PUSH1 0x20
2533 ADD
2534 SWAP1
2535 LOG3
2536 SWAP2
2537 SWAP1
2538 POP
2539 JUMP
2540 JUMPDEST
2541 PUSH1 0x00
2543 DUP1
2544 SLOAD
2545 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2566 NOT
2567 AND
2568 DUP3
2569 OR
2570 SWAP1
2571 SSTORE
2572 POP
2573 JUMP
2574 0xdd
2575 CALLCODE
2576 MSTORE
2577 LOG13
2578 SHL
2579 0xe2
2580 0xc8
2581 SWAP12
2582 PUSH10 0xc2b068fc378daa952ba7
2593 CALL
2594 PUSH4 0xc4a11628
2599 CREATE2
2600 GAS
2601 0x4d
2602 CREATE2
2603 0x23
2604 0xb3
2605 0xef

exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
function dump(start,end){for(let pc=start;pc<end;){const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else pc++; console.log(line);} }
dump(415,720)
NODE" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
 415 JUMPDEST
 416 PUSH2 0x05ea
 419 PUSH1 0x04
 421 CALLDATALOAD
 422 PUSH1 0x24
 424 CALLDATALOAD
 425 PUSH1 0x44
 427 CALLDATALOAD
 428 PUSH1 0x01
 430 PUSH1 0xa0
 432 PUSH1 0x02
 434 EXP
 435 SUB
 436 DUP4
 437 AND
 438 PUSH1 0x00
 440 SWAP1
 441 DUP2
 442 MSTORE
 443 PUSH1 0x09
 445 PUSH1 0x20
 447 MSTORE
 448 PUSH1 0x40
 450 DUP2
 451 SHA3
 452 SLOAD
 453 DUP3
 454 SWAP1
 455 LT
 456 ISZERO
 457 PUSH2 0x06d2
 460 JUMPI
 461 PUSH2 0x0002
 464 JUMP
 465 JUMPDEST
 466 PUSH2 0x0616
 469 PUSH1 0x03
 471 SLOAD
 472 PUSH1 0xff
 474 AND
 475 DUP2
 476 JUMP
 477 JUMPDEST
 478 PUSH2 0x05ea
 481 PUSH1 0x04
 483 CALLDATALOAD
 484 PUSH1 0x24
 486 CALLDATALOAD
 487 JUMPDEST
 488 PUSH1 0x00
 490 DUP1
 491 DUP1
 492 JUMPDEST
 493 DUP4
 494 DUP2
 495 LT
 496 ISZERO
 497 PUSH2 0x0649
 500 JUMPI
 501 PUSH1 0x40
 503 DUP1
 504 MLOAD
 505 NUMBER
 506 DUP4
 507 SWAP1
 508 SUB
 509 PUSH1 0x00
 511 NOT
 512 ADD
 513 BLOCKHASH
 514 DUP2
 515 MSTORE
 516 PUSH1 0x20
 518 DUP2
 519 ADD
 520 DUP8
 521 SWAP1
 522 MSTORE
 523 DUP2
 524 MLOAD
 525 SWAP1
 526 DUP2
 527 SWAP1
 528 SUB
 529 SWAP1
 530 SWAP2
 531 ADD
 532 SWAP1
 533 SHA3
 534 PUSH1 0x02
 536 SWAP1
 537 MOD
 538 PUSH1 0x00
 540 EQ
 541 ISZERO
 542 PUSH2 0x022b
 545 JUMPI
 546 PUSH1 0x02
 548 DUP2
 549 SWAP1
 550 EXP
 551 SWAP1
 552 SWAP2
 553 ADD
 554 SWAP1
 555 JUMPDEST
 556 PUSH1 0x01
 558 ADD
 559 PUSH2 0x01ec
 562 JUMP
 563 JUMPDEST
 564 PUSH2 0x05ea
 567 PUSH1 0x04
 569 CALLDATALOAD
 570 PUSH1 0x09
 572 PUSH1 0x20
 574 MSTORE
 575 PUSH1 0x00
 577 SWAP1
 578 DUP2
 579 MSTORE
 580 PUSH1 0x40
 582 SWAP1
 583 SHA3
 584 SLOAD
 585 DUP2
 586 JUMP
 587 JUMPDEST
 588 PUSH2 0x0106
 591 PUSH1 0x04
 593 CALLDATALOAD
 594 PUSH1 0x00
 596 SLOAD
 597 CALLER
 598 PUSH1 0x01
 600 PUSH1 0xa0
 602 PUSH1 0x02
 604 EXP
 605 SUB
 606 SWAP1
 607 DUP2
 608 AND
 609 SWAP2
 610 AND
 611 EQ
 612 PUSH2 0x07f5
 615 JUMPI
 616 PUSH2 0x0002
 619 JUMP
 620 JUMPDEST
 621 PUSH2 0x062c
 624 PUSH1 0x00
 626 SLOAD
 627 PUSH1 0x01
 629 PUSH1 0xa0
 631 PUSH1 0x02
 633 EXP
 634 SUB
 635 AND
 636 DUP2
 637 JUMP
 638 JUMPDEST
 639 PUSH2 0x057c
 642 PUSH1 0x02
 644 DUP1
 645 SLOAD
 646 PUSH1 0x40
 648 DUP1
 649 MLOAD
 650 PUSH1 0x20
 652 PUSH1 0x01
 654 DUP5
 655 AND
 656 ISZERO
 657 PUSH2 0x0100
 660 MUL
 661 PUSH1 0x00
 663 NOT
 664 ADD
 665 SWAP1
 666 SWAP4
 667 AND
 668 DUP5
 669 SWAP1
 670 DIV
 671 PUSH1 0x1f
 673 DUP2
 674 ADD
 675 DUP5
 676 SWAP1
 677 DIV
 678 DUP5
 679 MUL
 680 DUP3
 681 ADD
 682 DUP5
 683 ADD
 684 SWAP1
 685 SWAP3
 686 MSTORE
 687 DUP2
 688 DUP2
 689 MSTORE
 690 SWAP3
 691 SWAP2
 692 DUP4
 693 ADD
 694 DUP3
 695 DUP3
 696 DUP1
 697 ISZERO
 698 PUSH2 0x07e8
 701 JUMPI
 702 DUP1
 703 PUSH1 0x1f
 705 LT
 706 PUSH2 0x07bd
 709 JUMPI
 710 PUSH2 0x0100
 713 DUP1
 714 DUP4
 715 SLOAD
 716 DIV
 717 MUL
 718 DUP4
 719 MSTORE

exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
function dump(start,end){for(let pc=start;pc<end;){const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else pc++; console.log(line);} }
dump(720,1050); console.log('---'); dump(1500,2408);
NODE" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
 720 SWAP2
 721 PUSH1 0x20
 723 ADD
 724 SWAP2
 725 PUSH2 0x07e8
 728 JUMP
 729 JUMPDEST
 730 PUSH2 0x05ea
 733 PUSH1 0x06
 735 SLOAD
 736 CALLVALUE
 737 SWAP1
 738 PUSH1 0x00
 740 SWAP1
 741 DUP2
 742 SWAP1
 743 DUP2
 744 SWAP1
 745 DUP5
 746 GT
 747 ISZERO
 748 PUSH2 0x083e
 751 JUMPI
 752 PUSH2 0x0002
 755 JUMP
 756 JUMPDEST
 757 PUSH2 0x0106
 760 PUSH1 0x04
 762 CALLDATALOAD
 763 PUSH1 0x24
 765 CALLDATALOAD
 766 CALLER
 767 PUSH1 0x01
 769 PUSH1 0xa0
 771 PUSH1 0x02
 773 EXP
 774 SUB
 775 AND
 776 PUSH1 0x00
 778 SWAP1
 779 DUP2
 780 MSTORE
 781 PUSH1 0x09
 783 PUSH1 0x20
 785 MSTORE
 786 PUSH1 0x40
 788 SWAP1
 789 SHA3
 790 SLOAD
 791 DUP2
 792 SWAP1
 793 LT
 794 ISZERO
 795 PUSH2 0x0651
 798 JUMPI
 799 PUSH2 0x0002
 802 JUMP
 803 JUMPDEST
 804 PUSH2 0x05ea
 807 PUSH1 0x06
 809 SLOAD
 810 DUP2
 811 JUMP
 812 JUMPDEST
 813 PUSH2 0x05ea
 816 PUSH1 0x08
 818 SLOAD
 819 DUP2
 820 JUMP
 821 JUMPDEST
 822 PUSH2 0x0106
 825 PUSH1 0x04
 827 CALLDATALOAD
 828 PUSH1 0x00
 830 SLOAD
 831 CALLER
 832 PUSH1 0x01
 834 PUSH1 0xa0
 836 PUSH1 0x02
 838 EXP
 839 SUB
 840 SWAP1
 841 DUP2
 842 AND
 843 SWAP2
 844 AND
 845 EQ
 846 PUSH2 0x0817
 849 JUMPI
 850 PUSH2 0x0002
 853 JUMP
 854 JUMPDEST
 855 PUSH1 0x40
 857 DUP1
 858 MLOAD
 859 PUSH1 0x20
 861 PUSH1 0x44
 863 CALLDATALOAD
 864 PUSH1 0x04
 866 DUP2
 867 DUP2
 868 ADD
 869 CALLDATALOAD
 870 PUSH1 0x1f
 872 DUP2
 873 ADD
 874 DUP5
 875 SWAP1
 876 DIV
 877 DUP5
 878 MUL
 879 DUP6
 880 ADD
 881 DUP5
 882 ADD
 883 SWAP1
 884 SWAP6
 885 MSTORE
 886 DUP5
 887 DUP5
 888 MSTORE
 889 PUSH2 0x05ea
 892 SWAP5
 893 DUP2
 894 CALLDATALOAD
 895 SWAP5
 896 PUSH1 0x24
 898 DUP1
 899 CALLDATALOAD
 900 SWAP6
 901 SWAP4
 902 SWAP5
 903 PUSH1 0x64
 905 SWAP5
 906 SWAP3
 907 SWAP4
 908 SWAP2
 909 ADD
 910 SWAP2
 911 DUP2
 912 SWAP1
 913 DUP5
 914 ADD
 915 DUP4
 916 DUP3
 917 DUP1
 918 DUP3
 919 DUP5
 920 CALLDATACOPY
 921 POP
 922 SWAP5
 923 SWAP7
 924 POP
 925 POP
 926 POP
 927 POP
 928 POP
 929 POP
 930 POP
 931 PUSH1 0x00
 933 PUSH1 0x00
 935 DUP4
 936 PUSH1 0x0a
 938 PUSH1 0x00
 940 POP
 941 PUSH1 0x00
 943 CALLER
 944 PUSH1 0x01
 946 PUSH1 0xa0
 948 PUSH1 0x02
 950 EXP
 951 SUB
 952 AND
 953 DUP2
 954 MSTORE
 955 PUSH1 0x20
 957 ADD
 958 SWAP1
 959 DUP2
 960 MSTORE
 961 PUSH1 0x20
 963 ADD
 964 PUSH1 0x00
 966 SHA3
 967 PUSH1 0x00
 969 POP
 970 PUSH1 0x00
 972 DUP8
 973 PUSH1 0x01
 975 PUSH1 0xa0
 977 PUSH1 0x02
 979 EXP
 980 SUB
 981 AND
 982 DUP2
 983 MSTORE
 984 PUSH1 0x20
 986 ADD
 987 SWAP1
 988 DUP2
 989 MSTORE
 990 PUSH1 0x20
 992 ADD
 993 PUSH1 0x00
 995 SHA3
 996 PUSH1 0x00
 998 POP
 999 DUP2
1000 SWAP1
1001 SSTORE
1002 POP
1003 DUP5
1004 SWAP1
1005 POP
1006 DUP1
1007 PUSH1 0x01
1009 PUSH1 0xa0
1011 PUSH1 0x02
1013 EXP
1014 SUB
1015 AND
1016 PUSH4 0x8f4ffcb1
1021 CALLER
1022 DUP7
1023 ADDRESS
1024 DUP8
1025 PUSH1 0x40
1027 MLOAD
1028 DUP6
1029 PUSH1 0xe0
1031 PUSH1 0x02
1033 EXP
1034 MUL
1035 DUP2
1036 MSTORE
1037 PUSH1 0x04
1039 ADD
1040 DUP1
1041 DUP6
1042 PUSH1 0x01
1044 PUSH1 0xa0
1046 PUSH1 0x02
1048 EXP
1049 SUB
---
1500 JUMPDEST
1501 POP
1502 SWAP3
1503 POP
1504 POP
1505 POP
1506 PUSH1 0x40
1508 MLOAD
1509 DUP1
1510 SWAP2
1511 SUB
1512 SWAP1
1513 RETURN
1514 JUMPDEST
1515 PUSH1 0x40
1517 DUP1
1518 MLOAD
1519 SWAP2
1520 DUP3
1521 MSTORE
1522 MLOAD
1523 SWAP1
1524 DUP2
1525 SWAP1
1526 SUB
1527 PUSH1 0x20
1529 ADD
1530 SWAP1
1531 RETURN
1532 JUMPDEST
1533 PUSH1 0x40
1535 DUP1
1536 MLOAD
1537 PUSH4 0xffffffff
1542 SWAP3
1543 SWAP1
1544 SWAP3
1545 AND
1546 DUP3
1547 MSTORE
1548 MLOAD
1549 SWAP1
1550 DUP2
1551 SWAP1
1552 SUB
1553 PUSH1 0x20
1555 ADD
1556 SWAP1
1557 RETURN
1558 JUMPDEST
1559 PUSH1 0x40
1561 DUP1
1562 MLOAD
1563 PUSH1 0xff
1565 SWAP1
1566 SWAP3
1567 AND
1568 DUP3
1569 MSTORE
1570 MLOAD
1571 SWAP1
1572 DUP2
1573 SWAP1
1574 SUB
1575 PUSH1 0x20
1577 ADD
1578 SWAP1
1579 RETURN
1580 JUMPDEST
1581 PUSH1 0x40
1583 DUP1
1584 MLOAD
1585 PUSH1 0x01
1587 PUSH1 0xa0
1589 PUSH1 0x02
1591 EXP
1592 SUB
1593 SWAP3
1594 SWAP1
1595 SWAP3
1596 AND
1597 DUP3
1598 MSTORE
1599 MLOAD
1600 SWAP1
1601 DUP2
1602 SWAP1
1603 SUB
1604 PUSH1 0x20
1606 ADD
1607 SWAP1
1608 RETURN
1609 JUMPDEST
1610 POP
1611 SWAP4
1612 SWAP3
1613 POP
1614 POP
1615 POP
1616 JUMP
1617 JUMPDEST
1618 PUSH1 0x01
1620 PUSH1 0xa0
1622 PUSH1 0x02
1624 EXP
1625 SUB
1626 DUP3
1627 AND
1628 PUSH1 0x00
1630 SWAP1
1631 DUP2
1632 MSTORE
1633 PUSH1 0x09
1635 PUSH1 0x20
1637 MSTORE
1638 PUSH1 0x40
1640 SWAP1
1641 SHA3
1642 SLOAD
1643 DUP2
1644 DUP2
1645 ADD
1646 LT
1647 ISZERO
1648 PUSH2 0x0678
1651 JUMPI
1652 PUSH2 0x0002
1655 JUMP
1656 JUMPDEST
1657 CALLER
1658 PUSH1 0x01
1660 PUSH1 0xa0
1662 PUSH1 0x02
1664 EXP
1665 SUB
1666 SWAP1
1667 DUP2
1668 AND
1669 PUSH1 0x00
1671 DUP2
1672 DUP2
1673 MSTORE
1674 PUSH1 0x09
1676 PUSH1 0x20
1678 SWAP1
1679 DUP2
1680 MSTORE
1681 PUSH1 0x40
1683 DUP1
1684 DUP4
1685 SHA3
1686 DUP1
1687 SLOAD
1688 DUP8
1689 SWAP1
1690 SUB
1691 SWAP1
1692 SSTORE
1693 SWAP4
1694 DUP7
1695 AND
1696 DUP1
1697 DUP4
1698 MSTORE
1699 SWAP2
1700 DUP5
1701 SWAP1
1702 SHA3
1703 DUP1
1704 SLOAD
1705 DUP7
1706 ADD
1707 SWAP1
1708 SSTORE
1709 DUP4
1710 MLOAD
1711 DUP6
1712 DUP2
1713 MSTORE
1714 SWAP4
1715 MLOAD
1716 SWAP2
1717 SWAP4
1718 PUSH1 0x00
1720 DUP1
1721 MLOAD
1722 PUSH1 0x20
1724 PUSH2 0x0a0e
1727 DUP4
1728 CODECOPY
1729 DUP2
1730 MLOAD
1731 SWAP2
1732 MSTORE
1733 SWAP3
1734 SWAP1
1735 DUP2
1736 SWAP1
1737 SUB
1738 SWAP1
1739 SWAP2
1740 ADD
1741 SWAP1
1742 LOG3
1743 POP
1744 POP
1745 JUMP
1746 JUMPDEST
1747 PUSH1 0x01
1749 PUSH1 0xa0
1751 PUSH1 0x02
1753 EXP
1754 SUB
1755 DUP4
1756 AND
1757 PUSH1 0x00
1759 SWAP1
1760 DUP2
1761 MSTORE
1762 PUSH1 0x09
1764 PUSH1 0x20
1766 MSTORE
1767 PUSH1 0x40
1769 SWAP1
1770 SHA3
1771 SLOAD
1772 DUP1
1773 DUP4
1774 ADD
1775 LT
1776 ISZERO
1777 PUSH2 0x06f9
1780 JUMPI
1781 PUSH2 0x0002
1784 JUMP
1785 JUMPDEST
1786 PUSH1 0x01
1788 PUSH1 0xa0
1790 PUSH1 0x02
1792 EXP
1793 SUB
1794 DUP5
1795 DUP2
1796 AND
1797 PUSH1 0x00
1799 DUP2
1800 DUP2
1801 MSTORE
1802 PUSH1 0x0a
1804 PUSH1 0x20
1806 SWAP1
1807 DUP2
1808 MSTORE
1809 PUSH1 0x40
1811 DUP1
1812 DUP4
1813 SHA3
1814 CALLER
1815 SWAP1
1816 SWAP6
1817 AND
1818 DUP1
1819 DUP5
1820 MSTORE
1821 SWAP5
1822 DUP3
1823 MSTORE
1824 DUP1
1825 DUP4
1826 SHA3
1827 SLOAD
1828 SWAP4
1829 DUP4
1830 MSTORE
1831 PUSH1 0x0b
1833 DUP3
1834 MSTORE
1835 DUP1
1836 DUP4
1837 SHA3
1838 SWAP5
1839 DUP4
1840 MSTORE
1841 SWAP4
1842 SWAP1
1843 MSTORE
1844 SWAP2
1845 SWAP1
1846 SWAP2
1847 SHA3
1848 SLOAD
1849 DUP4
1850 ADD
1851 GT
1852 ISZERO
1853 PUSH2 0x0745
1856 JUMPI
1857 PUSH2 0x0002
1860 JUMP
1861 JUMPDEST
1862 PUSH1 0x01
1864 PUSH1 0xa0
1866 PUSH1 0x02
1868 EXP
1869 SUB
1870 DUP5
1871 DUP2
1872 AND
1873 PUSH1 0x00
1875 DUP2
1876 DUP2
1877 MSTORE
1878 PUSH1 0x09
1880 PUSH1 0x20
1882 SWAP1
1883 DUP2
1884 MSTORE
1885 PUSH1 0x40
1887 DUP1
1888 DUP4
1889 SHA3
1890 DUP1
1891 SLOAD
1892 DUP9
1893 SWAP1
1894 SUB
1895 SWAP1
1896 SSTORE
1897 DUP8
1898 DUP6
1899 AND
1900 DUP1
1901 DUP5
1902 MSTORE
1903 DUP2
1904 DUP5
1905 SHA3
1906 DUP1
1907 SLOAD
1908 DUP10
1909 ADD
1910 SWAP1
1911 SSTORE
1912 DUP5
1913 DUP5
1914 MSTORE
1915 PUSH1 0x0b
1917 DUP4
1918 MSTORE
1919 DUP2
1920 DUP5
1921 SHA3
1922 CALLER
1923 SWAP1
1924 SWAP7
1925 AND
1926 DUP5
1927 MSTORE
1928 SWAP5
1929 DUP3
1930 MSTORE
1931 SWAP2
1932 DUP3
1933 SWAP1
1934 SHA3
1935 DUP1
1936 SLOAD
1937 DUP8
1938 ADD
1939 SWAP1
1940 SSTORE
1941 DUP2
1942 MLOAD
1943 DUP7
1944 DUP2
1945 MSTORE
1946 SWAP2
1947 MLOAD
1948 PUSH1 0x00
1950 DUP1
1951 MLOAD
1952 PUSH1 0x20
1954 PUSH2 0x0a0e
1957 DUP4
1958 CODECOPY
1959 DUP2
1960 MLOAD
1961 SWAP2
1962 MSTORE
1963 SWAP3
1964 DUP2
1965 SWAP1
1966 SUB
1967 SWAP1
1968 SWAP2
1969 ADD
1970 SWAP1
1971 LOG3
1972 POP
1973 PUSH1 0x01
1975 SWAP4
1976 SWAP3
1977 POP
1978 POP
1979 POP
1980 JUMP
1981 JUMPDEST
1982 DUP3
1983 ADD
1984 SWAP2
1985 SWAP1
1986 PUSH1 0x00
1988 MSTORE
1989 PUSH1 0x20
1991 PUSH1 0x00
1993 SHA3
1994 SWAP1
1995 JUMPDEST
1996 DUP2
1997 SLOAD
1998 DUP2
1999 MSTORE
2000 SWAP1
2001 PUSH1 0x01
2003 ADD
2004 SWAP1
2005 PUSH1 0x20
2007 ADD
2008 DUP1
2009 DUP4
2010 GT
2011 PUSH2 0x07cb
2014 JUMPI
2015 DUP3
2016 SWAP1
2017 SUB
2018 PUSH1 0x1f
2020 AND
2021 DUP3
2022 ADD
2023 SWAP2
2024 JUMPDEST
2025 POP
2026 POP
2027 POP
2028 POP
2029 POP
2030 DUP2
2031 JUMP
2032 JUMPDEST
2033 PUSH1 0x06
2035 SSTORE
2036 JUMP
2037 JUMPDEST
2038 PUSH1 0x05
2040 DUP1
2041 SLOAD
2042 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2063 NOT
2064 AND
2065 DUP3
2066 OR
2067 SWAP1
2068 SSTORE
2069 POP
2070 JUMP
2071 JUMPDEST
2072 PUSH2 0x0200
2075 DUP2
2076 PUSH4 0xffffffff
2081 AND
2082 LT
2083 ISZERO
2084 PUSH2 0x082c
2087 JUMPI
2088 PUSH2 0x0002
2091 JUMP
2092 JUMPDEST
2093 PUSH1 0x07
2095 DUP1
2096 SLOAD
2097 PUSH4 0xffffffff
2102 NOT
2103 AND
2104 DUP3
2105 OR
2106 SWAP1
2107 SSTORE
2108 POP
2109 JUMP
2110 JUMPDEST
2111 PUSH1 0x04
2113 SLOAD
2114 ADDRESS
2115 PUSH1 0x01
2117 PUSH1 0xa0
2119 PUSH1 0x02
2121 EXP
2122 SUB
2123 AND
2124 BALANCE
2125 PUSH5 0x174876e800
2131 MUL
2132 DIV
2133 PUSH1 0x08
2135 SSTORE
2136 PUSH1 0x40
2138 DUP1
2139 MLOAD
2140 NUMBER
2141 DUP2
2142 MSTORE
2143 TIMESTAMP
2144 PUSH1 0x20
2146 DUP3
2147 ADD
2148 MSTORE
2149 DUP1
2150 DUP3
2151 ADD
2152 DUP7
2153 SWAP1
2154 MSTORE
2155 SWAP1
2156 MLOAD
2157 SWAP1
2158 DUP2
2159 SWAP1
2160 SUB
2161 PUSH1 0x60
2163 ADD
2164 SWAP1
2165 SHA3
2166 PUSH2 0x0880
2169 SWAP1
2170 PUSH1 0x0a
2172 PUSH2 0x01e7
2175 JUMP
2176 JUMPDEST
2177 PUSH1 0x07
2179 SLOAD
2180 SWAP1
2181 SWAP2
2182 POP
2183 PUSH4 0xffffffff
2188 AND
2189 DUP2
2190 LT
2191 PUSH2 0x08a5
2194 JUMPI
2195 PUSH1 0x00
2197 SWAP3
2198 POP
2199 PUSH2 0x03e7
2202 PUSH5 0x174876e800
2208 DUP6
2209 DIV
2210 DIV
2211 SWAP2
2212 POP
2213 JUMPDEST
2214 PUSH1 0x07
2216 SLOAD
2217 PUSH4 0xffffffff
2222 AND
2223 DUP2
2224 LT
2225 ISZERO
2226 PUSH2 0x08c3
2229 JUMPI
2230 PUSH5 0x174876e800
2236 PUSH1 0x02
2238 DUP6
2239 MUL
2240 DIV
2241 SWAP3
2242 POP
2243 JUMPDEST
2244 CALLER
2245 PUSH1 0x01
2247 PUSH1 0xa0
2249 PUSH1 0x02
2251 EXP
2252 SUB
2253 SWAP1
2254 DUP2
2255 AND
2256 PUSH1 0x00
2258 DUP2
2259 DUP2
2260 MSTORE
2261 PUSH1 0x09
2263 PUSH1 0x20
2265 SWAP1
2266 DUP2
2267 MSTORE
2268 PUSH1 0x40
2270 DUP1
2271 DUP4
2272 SHA3
2273 DUP1
2274 SLOAD
2275 DUP10
2276 ADD
2277 SWAP1
2278 SSTORE
2279 PUSH1 0x05
2281 SLOAD
2282 DUP6
2283 AND
2284 DUP4
2285 MSTORE
2286 DUP1
2287 DUP4
2288 SHA3
2289 DUP1
2290 SLOAD
2291 DUP9
2292 ADD
2293 SWAP1
2294 SSTORE
2295 ADDRESS
2296 SWAP1
2297 SWAP5
2298 AND
2299 DUP1
2300 DUP4
2301 MSTORE
2302 SWAP2
2303 DUP5
2304 SWAP1
2305 SHA3
2306 DUP1
2307 SLOAD
2308 DUP8
2309 DUP10
2310 ADD
2311 SWAP1
2312 SUB
2313 SWAP1
2314 SSTORE
2315 DUP4
2316 MLOAD
2317 DUP8
2318 DUP2
2319 MSTORE
2320 SWAP4
2321 MLOAD
2322 SWAP3
2323 SWAP4
2324 SWAP2
2325 SWAP3
2326 PUSH1 0x00
2328 DUP1
2329 MLOAD
2330 PUSH1 0x20
2332 PUSH2 0x0a0e
2335 DUP4
2336 CODECOPY
2337 DUP2
2338 MLOAD
2339 SWAP2
2340 MSTORE
2341 SWAP3
2342 DUP2
2343 SWAP1
2344 SUB
2345 SWAP1
2346 SWAP2
2347 ADD
2348 SWAP1
2349 LOG3
2350 PUSH1 0x05
2352 SLOAD
2353 PUSH1 0x40
2355 DUP1
2356 MLOAD
2357 DUP5
2358 DUP2
2359 MSTORE
2360 SWAP1
2361 MLOAD
2362 PUSH1 0x01
2364 PUSH1 0xa0
2366 PUSH1 0x02
2368 EXP
2369 SUB
2370 SWAP3
2371 DUP4
2372 AND
2373 SWAP3
2374 ADDRESS
2375 AND
2376 SWAP2
2377 PUSH1 0x00
2379 DUP1
2380 MLOAD
2381 PUSH1 0x20
2383 PUSH2 0x0a0e
2386 DUP4
2387 CODECOPY
2388 DUP2
2389 MLOAD
2390 SWAP2
2391 MSTORE
2392 SWAP2
2393 SWAP1
2394 DUP2
2395 SWAP1
2396 SUB
2397 PUSH1 0x20
2399 ADD
2400 SWAP1
2401 LOG3
2402 POP
2403 POP
2404 POP
2405 SWAP1
2406 JUMP
2407 JUMPDEST

exec
/bin/bash -lc "node <<'NODE'
const fs=require('fs');
const x=JSON.parse(fs.readFileSync('BYTECODE_BUNDLE.json','utf8'));
const hex=x.artifact.runtime_bytecode.full.slice(2);
const opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'};
for(let i=0;i<16;i++){opnames[0x80+i]='DUP'+(i+1);opnames[0x90+i]='SWAP'+(i+1);opnames[0xa0+i]='LOG'+i;}
for(let i=0;i<32;i++) opnames[0x60+i]='PUSH'+(i+1);
const bytes=[]; for(let i=0;i<hex.length;i+=2) bytes.push(parseInt(hex.slice(i,i+2),16));
function dump(start,end){for(let pc=start;pc<end;){const op=bytes[pc]; const name=opnames[op]||('0x'+op.toString(16)); let line=pc.toString().padStart(4)+' '+name; if(op>=0x60&&op<=0x7f){const n=op-0x5f; const data=hex.slice((pc+1)*2,(pc+1+n)*2); line+=' 0x'+data; pc+=1+n;} else pc++; console.log(line);} }
dump(2407,2574)
NODE" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
2407 JUMPDEST
2408 POP
2409 ADDRESS
2410 PUSH1 0x01
2412 PUSH1 0xa0
2414 PUSH1 0x02
2416 EXP
2417 SUB
2418 SWAP1
2419 DUP2
2420 AND
2421 PUSH1 0x00
2423 SWAP1
2424 DUP2
2425 MSTORE
2426 PUSH1 0x09
2428 PUSH1 0x20
2430 MSTORE
2431 PUSH1 0x40
2433 DUP1
2434 DUP3
2435 SHA3
2436 DUP1
2437 SLOAD
2438 DUP6
2439 ADD
2440 SWAP1
2441 SSTORE
2442 CALLER
2443 SWAP1
2444 SWAP3
2445 AND
2446 DUP1
2447 DUP3
2448 MSTORE
2449 DUP3
2450 DUP3
2451 SHA3
2452 DUP1
2453 SLOAD
2454 DUP6
2455 SWAP1
2456 SUB
2457 SWAP1
2458 SSTORE
2459 SWAP2
2460 MLOAD
2461 PUSH1 0x08
2463 SLOAD
2464 PUSH5 0x174876e800
2470 DUP6
2471 DIV
2472 MUL
2473 SWAP3
2474 SWAP2
2475 SWAP1
2476 DUP4
2477 SWAP1
2478 DUP3
2479 DUP2
2480 DUP2
2481 DUP2
2482 DUP6
2483 DUP9
2484 DUP4
2485 CALL
2486 POP
2487 POP
2488 PUSH1 0x40
2490 DUP1
2491 MLOAD
2492 DUP7
2493 DUP2
2494 MSTORE
2495 SWAP1
2496 MLOAD
2497 ADDRESS
2498 PUSH1 0x01
2500 PUSH1 0xa0
2502 PUSH1 0x02
2504 EXP
2505 SUB
2506 AND
2507 SWAP5
2508 SWAP4
2509 POP
2510 PUSH1 0x00
2512 DUP1
2513 MLOAD
2514 PUSH1 0x20
2516 PUSH2 0x0a0e
2519 DUP4
2520 CODECOPY
2521 DUP2
2522 MLOAD
2523 SWAP2
2524 MSTORE
2525 SWAP3
2526 POP
2527 SWAP1
2528 DUP2
2529 SWAP1
2530 SUB
2531 PUSH1 0x20
2533 ADD
2534 SWAP1
2535 LOG3
2536 SWAP2
2537 SWAP1
2538 POP
2539 JUMP
2540 JUMPDEST
2541 PUSH1 0x00
2543 DUP1
2544 SLOAD
2545 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
2566 NOT
2567 AND
2568 DUP3
2569 OR
2570 SWAP1
2571 SSTORE
2572 POP
2573 JUMP

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.sinks' BYTECODE_BUNDLE.json | sed -n '1,260p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{
  "call": 6,
  "create": 0,
  "create2": 2,
  "delegatecall": 0,
  "selfdestruct": 0,
  "staticcall": 0,
  "upgrade_slot_write_suspected": false
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' BYTECODE_BUNDLE.json | sed -n '1,320p'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
{
  "keccak_count": 30,
  "reads": 47,
  "slots": [
    {
      "op": "SLOAD",
      "pc": 272,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
    },
    {
      "op": "SLOAD",
      "pc": 343,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 363,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
    },
    {
      "op": "SLOAD",
      "pc": 375,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 406,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 471,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
    },
    {
      "op": "SLOAD",
      "pc": 596,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 626,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 645,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
    },
    {
      "op": "SLOAD",
      "pc": 715,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 735,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
    },
    {
      "op": "SLOAD",
      "pc": 809,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
    },
    {
      "op": "SLOAD",
      "pc": 818,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
    },
    {
      "op": "SLOAD",
      "pc": 830,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SSTORE",
      "pc": 1001,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1296,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
    },
    {
      "op": "SLOAD",
      "pc": 1362,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1392,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 2041,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 2096,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 2113,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
    },
    {
      "op": "SLOAD",
      "pc": 2179,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 2216,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 2281,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 2352,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 2463,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
    },
    {
      "op": "SLOAD",
      "pc": 2544,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ],
  "writes": 17
}

exec
/bin/bash -lc "node -e 'for (const n of [1126,1194,1458,2110,2140,2175,2216,2230,2407,2485,2540,2032,2037,2071]) console.log(n, \"0x\"+n.toString(16))'" in /tmp/codex-x5qbg8gi
 succeeded in 0ms:
1126 0x466
1194 0x4aa
1458 0x5b2
2110 0x83e
2140 0x85c
2175 0x87f
2216 0x8a8
2230 0x8b6
2407 0x967
2485 0x9b5
2540 0x9ec
2032 0x7f0
2037 0x7f5
2071 0x817

codex
{"no_findings":false,"summary":"BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.","findings":[{"severity":"medium","category":"other","title":"Best-effort inferred redemption path ignores ETH payout failure","exploit_scenario":"Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept.","recommendation":"Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.","evidence":"In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.","locations":["selector:0xe4849b32","pc:0x967","pc:0x9b5"]},{"severity":"low","category":"other","title":"Financial logic appears to use manipulable block data as randomness","exploit_scenario":"The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable.","recommendation":"Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.","evidence":"The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.","locations":["selector:0xa6f2ae3a","selector:0x41fa4876","pc:0x1e7","pc:0x85c","pc:0x8a8"]}]}
tokens used
76,641
Metadata
{
    "codex": {
        "ran_at": "2026-04-05T07:02:35.793562+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 5214,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.",
    "raw_final": {
        "summary": "BYTECODE_BUNDLE.json was reviewed directly. I did not find proxy/delegatecall issues. The generic CALL detector mostly hits expected patterns (identity precompile usage and an approve-and-callback flow), but one payout path has an unchecked low-level CALL, and the buy logic appears to rely on block-derived pseudo-randomness for financial outcomes.",
        "findings": [
            {
                "title": "Best-effort inferred redemption path ignores ETH payout failure",
                "category": "other",
                "evidence": "In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.",
                "severity": "medium",
                "locations": [
                    "selector:0xe4849b32",
                    "pc:0x967",
                    "pc:0x9b5"
                ],
                "recommendation": "Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.",
                "exploit_scenario": "Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept."
            },
            {
                "title": "Financial logic appears to use manipulable block data as randomness",
                "category": "other",
                "evidence": "The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.",
                "severity": "low",
                "locations": [
                    "selector:0xa6f2ae3a",
                    "selector:0x41fa4876",
                    "pc:0x1e7",
                    "pc:0x85c",
                    "pc:0x8a8"
                ],
                "recommendation": "Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.",
                "exploit_scenario": "The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
2
CALL-family (heavy)
6
EXT*/BALANCE
2
Total opcodes
1913
Flags
create_opcodes_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0106
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x06fdde03
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x0108
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x18160ddd
00000025: EQ
00000026: PUSH2 0x0165
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x1fe9eabc
00000030: EQ
00000031: PUSH2 0x016e
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0x233de126
0000003b: EQ
0000003c: PUSH2 0x0190
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x23b872dd
00000046: EQ
00000047: PUSH2 0x019f
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x313ce567
00000051: EQ
00000052: PUSH2 0x01d1
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x41fa4876
0000005c: EQ
0000005d: PUSH2 0x01dd
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x70a08231
00000067: EQ
00000068: PUSH2 0x0233
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x7f2a8a80
00000072: EQ
00000073: PUSH2 0x024b
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0x8da5cb5b
0000007d: EQ
0000007e: PUSH2 0x026c
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x95d89b41
00000088: EQ
00000089: PUSH2 0x027e
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xa6f2ae3a
00000093: EQ
00000094: PUSH2 0x02d9
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xa9059cbb
0000009e: EQ
0000009f: PUSH2 0x02f4
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xaa295de9
000000a9: EQ
000000aa: PUSH2 0x0323
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xbc094049
000000b4: EQ
000000b5: PUSH2 0x032c
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0xc4839e8b
000000bf: EQ
000000c0: PUSH2 0x0335
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0xcae9ca51
000000ca: EQ
000000cb: PUSH2 0x0356
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0xdc3080f2
000000d5: EQ
000000d6: PUSH2 0x04bd
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0xdd62ed3e
000000e0: EQ
000000e1: PUSH2 0x04e2
000000e4: JUMPI
000000e5: DUP1
000000e6: PUSH4 0xe4849b32
000000eb: EQ
000000ec: PUSH2 0x0507
000000ef: JUMPI
000000f0: DUP1
000000f1: PUSH4 0xf2fde38b
000000f6: EQ
000000f7: PUSH2 0x0549
000000fa: JUMPI
000000fb: DUP1
000000fc: PUSH4 0xff9b3acf
00000101: EQ
00000102: PUSH2 0x056a
00000105: JUMPI
00000106: JUMPDEST
00000107: STOP
00000108: JUMPDEST
00000109: PUSH1 0x40
0000010b: DUP1
0000010c: MLOAD
0000010d: PUSH1 0x01
0000010f: DUP1
00000110: SLOAD
00000111: PUSH1 0x20
00000113: PUSH1 0x02
00000115: DUP3
00000116: DUP5
00000117: AND
00000118: ISZERO
00000119: PUSH2 0x0100
0000011c: MUL
0000011d: PUSH1 0x00
0000011f: NOT
00000120: ADD
00000121: SWAP1
00000122: SWAP3
00000123: AND
00000124: SWAP2
00000125: SWAP1
00000126: SWAP2
00000127: DIV
00000128: PUSH1 0x1f
0000012a: DUP2
0000012b: ADD
0000012c: DUP3
0000012d: SWAP1
0000012e: DIV
0000012f: DUP3
00000130: MUL
00000131: DUP5
00000132: ADD
00000133: DUP3
00000134: ADD
00000135: SWAP1
00000136: SWAP5
00000137: MSTORE
00000138: DUP4
00000139: DUP4
0000013a: MSTORE
0000013b: PUSH2 0x057c
0000013e: SWAP4
0000013f: SWAP1
00000140: DUP4
00000141: ADD
00000142: DUP3
00000143: DUP3
00000144: DUP1
00000145: ISZERO
00000146: PUSH2 0x07e8
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH1 0x1f
0000014d: LT
0000014e: PUSH2 0x07bd
00000151: JUMPI
00000152: PUSH2 0x0100
00000155: DUP1
00000156: DUP4
00000157: SLOAD
00000158: DIV
00000159: MUL
0000015a: DUP4
0000015b: MSTORE
0000015c: SWAP2
0000015d: PUSH1 0x20
0000015f: ADD
00000160: SWAP2
00000161: PUSH2 0x07e8
00000164: JUMP
00000165: JUMPDEST
00000166: PUSH2 0x05ea
00000169: PUSH1 0x04
0000016b: SLOAD
0000016c: DUP2
0000016d: JUMP
0000016e: JUMPDEST
0000016f: PUSH2 0x0106
00000172: PUSH1 0x04
00000174: CALLDATALOAD
00000175: PUSH1 0x00
00000177: SLOAD
00000178: PUSH1 0x01
0000017a: PUSH1 0xa0
0000017c: PUSH1 0x02
0000017e: EXP
0000017f: SUB
00000180: SWAP1
00000181: DUP2
00000182: AND
00000183: CALLER
00000184: SWAP1
00000185: SWAP2
00000186: AND
00000187: EQ
00000188: PUSH2 0x07f0
0000018b: JUMPI
0000018c: PUSH2 0x0002
0000018f: JUMP
00000190: JUMPDEST
00000191: PUSH2 0x05fc
00000194: PUSH1 0x07
00000196: SLOAD
00000197: PUSH4 0xffffffff
0000019c: AND
0000019d: DUP2
0000019e: JUMP
0000019f: JUMPDEST
000001a0: PUSH2 0x05ea
000001a3: PUSH1 0x04
000001a5: CALLDATALOAD
000001a6: PUSH1 0x24
000001a8: CALLDATALOAD
000001a9: PUSH1 0x44
000001ab: CALLDATALOAD
000001ac: PUSH1 0x01
000001ae: PUSH1 0xa0
000001b0: PUSH1 0x02
000001b2: EXP
000001b3: SUB
000001b4: DUP4
000001b5: AND
000001b6: PUSH1 0x00
000001b8: SWAP1
000001b9: DUP2
000001ba: MSTORE
000001bb: PUSH1 0x09
000001bd: PUSH1 0x20
000001bf: MSTORE
000001c0: PUSH1 0x40
000001c2: DUP2
000001c3: KECCAK256
000001c4: SLOAD
000001c5: DUP3
000001c6: SWAP1
000001c7: LT
000001c8: ISZERO
000001c9: PUSH2 0x06d2
000001cc: JUMPI
000001cd: PUSH2 0x0002
000001d0: JUMP
000001d1: JUMPDEST
000001d2: PUSH2 0x0616
000001d5: PUSH1 0x03
000001d7: SLOAD
000001d8: PUSH1 0xff
000001da: AND
000001db: DUP2
000001dc: JUMP
000001dd: JUMPDEST
000001de: PUSH2 0x05ea
000001e1: PUSH1 0x04
000001e3: CALLDATALOAD
000001e4: PUSH1 0x24
000001e6: CALLDATALOAD
000001e7: JUMPDEST
000001e8: PUSH1 0x00
000001ea: DUP1
000001eb: DUP1
000001ec: JUMPDEST
000001ed: DUP4
000001ee: DUP2
000001ef: LT
000001f0: ISZERO
000001f1: PUSH2 0x0649
000001f4: JUMPI
000001f5: PUSH1 0x40
000001f7: DUP1
000001f8: MLOAD
000001f9: NUMBER
000001fa: DUP4
000001fb: SWAP1
000001fc: SUB
000001fd: PUSH1 0x00
000001ff: NOT
00000200: ADD
00000201: BLOCKHASH
00000202: DUP2
00000203: MSTORE
00000204: PUSH1 0x20
00000206: DUP2
00000207: ADD
00000208: DUP8
00000209: SWAP1
0000020a: MSTORE
0000020b: DUP2
0000020c: MLOAD
0000020d: SWAP1
0000020e: DUP2
0000020f: SWAP1
00000210: SUB
00000211: SWAP1
00000212: SWAP2
00000213: ADD
00000214: SWAP1
00000215: KECCAK256
00000216: PUSH1 0x02
00000218: SWAP1
00000219: MOD
0000021a: PUSH1 0x00
0000021c: EQ
0000021d: ISZERO
0000021e: PUSH2 0x022b
00000221: JUMPI
00000222: PUSH1 0x02
00000224: DUP2
00000225: SWAP1
00000226: EXP
00000227: SWAP1
00000228: SWAP2
00000229: ADD
0000022a: SWAP1
0000022b: JUMPDEST
0000022c: PUSH1 0x01
0000022e: ADD
0000022f: PUSH2 0x01ec
00000232: JUMP
00000233: JUMPDEST
00000234: PUSH2 0x05ea
00000237: PUSH1 0x04
00000239: CALLDATALOAD
0000023a: PUSH1 0x09
0000023c: PUSH1 0x20
0000023e: MSTORE
0000023f: PUSH1 0x00
00000241: SWAP1
00000242: DUP2
00000243: MSTORE
00000244: PUSH1 0x40
00000246: SWAP1
00000247: KECCAK256
00000248: SLOAD
00000249: DUP2
0000024a: JUMP
0000024b: JUMPDEST
0000024c: PUSH2 0x0106
0000024f: PUSH1 0x04
00000251: CALLDATALOAD
00000252: PUSH1 0x00
00000254: SLOAD
00000255: CALLER
00000256: PUSH1 0x01
00000258: PUSH1 0xa0
0000025a: PUSH1 0x02
0000025c: EXP
0000025d: SUB
0000025e: SWAP1
0000025f: DUP2
00000260: AND
00000261: SWAP2
00000262: AND
00000263: EQ
00000264: PUSH2 0x07f5
00000267: JUMPI
00000268: PUSH2 0x0002
0000026b: JUMP
0000026c: JUMPDEST
0000026d: PUSH2 0x062c
00000270: PUSH1 0x00
00000272: SLOAD
00000273: PUSH1 0x01
00000275: PUSH1 0xa0
00000277: PUSH1 0x02
00000279: EXP
0000027a: SUB
0000027b: AND
0000027c: DUP2
0000027d: JUMP
0000027e: JUMPDEST
0000027f: PUSH2 0x057c
00000282: PUSH1 0x02
00000284: DUP1
00000285: SLOAD
00000286: PUSH1 0x40
00000288: DUP1
00000289: MLOAD
0000028a: PUSH1 0x20
0000028c: PUSH1 0x01
0000028e: DUP5
0000028f: AND
00000290: ISZERO
00000291: PUSH2 0x0100
00000294: MUL
00000295: PUSH1 0x00
00000297: NOT
00000298: ADD
00000299: SWAP1
0000029a: SWAP4
0000029b: AND
0000029c: DUP5
0000029d: SWAP1
0000029e: DIV
0000029f: PUSH1 0x1f
000002a1: DUP2
000002a2: ADD
000002a3: DUP5
000002a4: SWAP1
000002a5: DIV
000002a6: DUP5
000002a7: MUL
000002a8: DUP3
000002a9: ADD
000002aa: DUP5
000002ab: ADD
000002ac: SWAP1
000002ad: SWAP3
000002ae: MSTORE
000002af: DUP2
000002b0: DUP2
000002b1: MSTORE
000002b2: SWAP3
000002b3: SWAP2
000002b4: DUP4
000002b5: ADD
000002b6: DUP3
000002b7: DUP3
000002b8: DUP1
000002b9: ISZERO
000002ba: PUSH2 0x07e8
000002bd: JUMPI
000002be: DUP1
000002bf: PUSH1 0x1f
000002c1: LT
000002c2: PUSH2 0x07bd
000002c5: JUMPI
000002c6: PUSH2 0x0100
000002c9: DUP1
000002ca: DUP4
000002cb: SLOAD
000002cc: DIV
000002cd: MUL
000002ce: DUP4
000002cf: MSTORE
000002d0: SWAP2
000002d1: PUSH1 0x20
000002d3: ADD
000002d4: SWAP2
000002d5: PUSH2 0x07e8
000002d8: JUMP
000002d9: JUMPDEST
000002da: PUSH2 0x05ea
000002dd: PUSH1 0x06
000002df: SLOAD
000002e0: CALLVALUE
000002e1: SWAP1
000002e2: PUSH1 0x00
000002e4: SWAP1
000002e5: DUP2
000002e6: SWAP1
000002e7: DUP2
000002e8: SWAP1
000002e9: DUP5
000002ea: GT
000002eb: ISZERO
000002ec: PUSH2 0x083e
000002ef: JUMPI
000002f0: PUSH2 0x0002
000002f3: JUMP
000002f4: JUMPDEST
000002f5: PUSH2 0x0106
000002f8: PUSH1 0x04
000002fa: CALLDATALOAD
000002fb: PUSH1 0x24
000002fd: CALLDATALOAD
000002fe: CALLER
000002ff: PUSH1 0x01
00000301: PUSH1 0xa0
00000303: PUSH1 0x02
00000305: EXP
00000306: SUB
00000307: AND
00000308: PUSH1 0x00
0000030a: SWAP1
0000030b: DUP2
0000030c: MSTORE
0000030d: PUSH1 0x09
0000030f: PUSH1 0x20
00000311: MSTORE
00000312: PUSH1 0x40
00000314: SWAP1
00000315: KECCAK256
00000316: SLOAD
00000317: DUP2
00000318: SWAP1
00000319: LT
0000031a: ISZERO
0000031b: PUSH2 0x0651
0000031e: JUMPI
0000031f: PUSH2 0x0002
00000322: JUMP
00000323: JUMPDEST
00000324: PUSH2 0x05ea
00000327: PUSH1 0x06
00000329: SLOAD
0000032a: DUP2
0000032b: JUMP
0000032c: JUMPDEST
0000032d: PUSH2 0x05ea
00000330: PUSH1 0x08
00000332: SLOAD
00000333: DUP2
00000334: JUMP
00000335: JUMPDEST
00000336: PUSH2 0x0106
00000339: PUSH1 0x04
0000033b: CALLDATALOAD
0000033c: PUSH1 0x00
0000033e: SLOAD
0000033f: CALLER
00000340: PUSH1 0x01
00000342: PUSH1 0xa0
00000344: PUSH1 0x02
00000346: EXP
00000347: SUB
00000348: SWAP1
00000349: DUP2
0000034a: AND
0000034b: SWAP2
0000034c: AND
0000034d: EQ
0000034e: PUSH2 0x0817
00000351: JUMPI
00000352: PUSH2 0x0002
00000355: JUMP
00000356: JUMPDEST
00000357: PUSH1 0x40
00000359: DUP1
0000035a: MLOAD
0000035b: PUSH1 0x20
0000035d: PUSH1 0x44
0000035f: CALLDATALOAD
00000360: PUSH1 0x04
00000362: DUP2
00000363: DUP2
00000364: ADD
00000365: CALLDATALOAD
00000366: PUSH1 0x1f
00000368: DUP2
00000369: ADD
0000036a: DUP5
0000036b: SWAP1
0000036c: DIV
0000036d: DUP5
0000036e: MUL
0000036f: DUP6
00000370: ADD
00000371: DUP5
00000372: ADD
00000373: SWAP1
00000374: SWAP6
00000375: MSTORE
00000376: DUP5
00000377: DUP5
00000378: MSTORE
00000379: PUSH2 0x05ea
0000037c: SWAP5
0000037d: DUP2
0000037e: CALLDATALOAD
0000037f: SWAP5
00000380: PUSH1 0x24
00000382: DUP1
00000383: CALLDATALOAD
00000384: SWAP6
00000385: SWAP4
00000386: SWAP5
00000387: PUSH1 0x64
00000389: SWAP5
0000038a: SWAP3
0000038b: SWAP4
0000038c: SWAP2
0000038d: ADD
0000038e: SWAP2
0000038f: DUP2
00000390: SWAP1
00000391: DUP5
00000392: ADD
00000393: DUP4
00000394: DUP3
00000395: DUP1
00000396: DUP3
00000397: DUP5
00000398: CALLDATACOPY
00000399: POP
0000039a: SWAP5
0000039b: SWAP7
0000039c: POP
0000039d: POP
0000039e: POP
0000039f: POP
000003a0: POP
000003a1: POP
000003a2: POP
000003a3: PUSH1 0x00
000003a5: PUSH1 0x00
000003a7: DUP4
000003a8: PUSH1 0x0a
000003aa: PUSH1 0x00
000003ac: POP
000003ad: PUSH1 0x00
000003af: CALLER
000003b0: PUSH1 0x01
000003b2: PUSH1 0xa0
000003b4: PUSH1 0x02
000003b6: EXP
000003b7: SUB
000003b8: AND
000003b9: DUP2
000003ba: MSTORE
000003bb: PUSH1 0x20
000003bd: ADD
000003be: SWAP1
000003bf: DUP2
000003c0: MSTORE
000003c1: PUSH1 0x20
000003c3: ADD
000003c4: PUSH1 0x00
000003c6: KECCAK256
000003c7: PUSH1 0x00
000003c9: POP
000003ca: PUSH1 0x00
000003cc: DUP8
000003cd: PUSH1 0x01
000003cf: PUSH1 0xa0
000003d1: PUSH1 0x02
000003d3: EXP
000003d4: SUB
000003d5: AND
000003d6: DUP2
000003d7: MSTORE
000003d8: PUSH1 0x20
000003da: ADD
000003db: SWAP1
000003dc: DUP2
000003dd: MSTORE
000003de: PUSH1 0x20
000003e0: ADD
000003e1: PUSH1 0x00
000003e3: KECCAK256
000003e4: PUSH1 0x00
000003e6: POP
000003e7: DUP2
000003e8: SWAP1
000003e9: SSTORE
000003ea: POP
000003eb: DUP5
000003ec: SWAP1
000003ed: POP
000003ee: DUP1
000003ef: PUSH1 0x01
000003f1: PUSH1 0xa0
000003f3: PUSH1 0x02
000003f5: EXP
000003f6: SUB
000003f7: AND
000003f8: PUSH4 0x8f4ffcb1
000003fd: CALLER
000003fe: DUP7
000003ff: ADDRESS
00000400: DUP8
00000401: PUSH1 0x40
00000403: MLOAD
00000404: DUP6
00000405: PUSH1 0xe0
00000407: PUSH1 0x02
00000409: EXP
0000040a: MUL
0000040b: DUP2
0000040c: MSTORE
0000040d: PUSH1 0x04
0000040f: ADD
00000410: DUP1
00000411: DUP6
00000412: PUSH1 0x01
00000414: PUSH1 0xa0
00000416: PUSH1 0x02
00000418: EXP
00000419: SUB
0000041a: AND
0000041b: DUP2
0000041c: MSTORE
0000041d: PUSH1 0x20
0000041f: ADD
00000420: DUP5
00000421: DUP2
00000422: MSTORE
00000423: PUSH1 0x20
00000425: ADD
00000426: DUP4
00000427: PUSH1 0x01
00000429: PUSH1 0xa0
0000042b: PUSH1 0x02
0000042d: EXP
0000042e: SUB
0000042f: AND
00000430: DUP2
00000431: MSTORE
00000432: PUSH1 0x20
00000434: ADD
00000435: DUP1
00000436: PUSH1 0x20
00000438: ADD
00000439: DUP3
0000043a: DUP2
0000043b: SUB
0000043c: DUP3
0000043d: MSTORE
0000043e: DUP4
0000043f: DUP2
00000440: DUP2
00000441: MLOAD
00000442: DUP2
00000443: MSTORE
00000444: PUSH1 0x20
00000446: ADD
00000447: SWAP2
00000448: POP
00000449: DUP1
0000044a: MLOAD
0000044b: SWAP1
0000044c: PUSH1 0x20
0000044e: ADD
0000044f: SWAP1
00000450: DUP1
00000451: DUP4
00000452: DUP4
00000453: DUP3
00000454: SWAP1
00000455: PUSH1 0x00
00000457: PUSH1 0x04
00000459: PUSH1 0x20
0000045b: DUP5
0000045c: PUSH1 0x1f
0000045e: ADD
0000045f: DIV
00000460: PUSH1 0x0f
00000462: MUL
00000463: PUSH1 0x03
00000465: ADD
00000466: CALL
00000467: POP
00000468: SWAP1
00000469: POP
0000046a: SWAP1
0000046b: DUP2
0000046c: ADD
0000046d: SWAP1
0000046e: PUSH1 0x1f
00000470: AND
00000471: DUP1
00000472: ISZERO
00000473: PUSH2 0x0490
00000476: JUMPI
00000477: DUP1
00000478: DUP3
00000479: SUB
0000047a: DUP1
0000047b: MLOAD
0000047c: PUSH1 0x01
0000047e: DUP4
0000047f: PUSH1 0x20
00000481: SUB
00000482: PUSH2 0x0100
00000485: EXP
00000486: SUB
00000487: NOT
00000488: AND
00000489: DUP2
0000048a: MSTORE
0000048b: PUSH1 0x20
0000048d: ADD
0000048e: SWAP2
0000048f: POP
00000490: JUMPDEST
00000491: POP
00000492: SWAP6
00000493: POP
00000494: POP
00000495: POP
00000496: POP
00000497: POP
00000498: POP
00000499: PUSH1 0x00
0000049b: PUSH1 0x40
0000049d: MLOAD
0000049e: DUP1
0000049f: DUP4
000004a0: SUB
000004a1: DUP2
000004a2: PUSH1 0x00
000004a4: DUP8
000004a5: PUSH2 0x61da
000004a8: GAS
000004a9: SUB
000004aa: CALL
000004ab: ISZERO
000004ac: PUSH2 0x0002
000004af: JUMPI
000004b0: POP
000004b1: PUSH1 0x01
000004b3: SWAP8
000004b4: SWAP7
000004b5: POP
000004b6: POP
000004b7: POP
000004b8: POP
000004b9: POP
000004ba: POP
000004bb: POP
000004bc: JUMP
000004bd: JUMPDEST
000004be: PUSH1 0x0b
000004c0: PUSH1 0x20
000004c2: SWAP1
000004c3: DUP2
000004c4: MSTORE
000004c5: PUSH1 0x04
000004c7: CALLDATALOAD
000004c8: PUSH1 0x00
000004ca: SWAP1
000004cb: DUP2
000004cc: MSTORE
000004cd: PUSH1 0x40
000004cf: DUP1
000004d0: DUP3
000004d1: KECCAK256
000004d2: SWAP1
000004d3: SWAP3
000004d4: MSTORE
000004d5: PUSH1 0x24
000004d7: CALLDATALOAD
000004d8: DUP2
000004d9: MSTORE
000004da: KECCAK256
000004db: SLOAD
000004dc: PUSH2 0x05ea
000004df: SWAP1
000004e0: DUP2
000004e1: JUMP
000004e2: JUMPDEST
000004e3: PUSH1 0x0a
000004e5: PUSH1 0x20
000004e7: SWAP1
000004e8: DUP2
000004e9: MSTORE
000004ea: PUSH1 0x04
000004ec: CALLDATALOAD
000004ed: PUSH1 0x00
000004ef: SWAP1
000004f0: DUP2
000004f1: MSTORE
000004f2: PUSH1 0x40
000004f4: DUP1
000004f5: DUP3
000004f6: KECCAK256
000004f7: SWAP1
000004f8: SWAP3
000004f9: MSTORE
000004fa: PUSH1 0x24
000004fc: CALLDATALOAD
000004fd: DUP2
000004fe: MSTORE
000004ff: KECCAK256
00000500: SLOAD
00000501: PUSH2 0x05ea
00000504: SWAP1
00000505: DUP2
00000506: JUMP
00000507: JUMPDEST
00000508: PUSH2 0x05ea
0000050b: PUSH1 0x04
0000050d: CALLDATALOAD
0000050e: PUSH1 0x04
00000510: SLOAD
00000511: ADDRESS
00000512: PUSH1 0x01
00000514: PUSH1 0xa0
00000516: PUSH1 0x02
00000518: EXP
00000519: SUB
0000051a: SWAP1
0000051b: DUP2
0000051c: AND
0000051d: BALANCE
0000051e: PUSH5 0x174876e800
00000524: MUL
00000525: SWAP2
00000526: SWAP1
00000527: SWAP2
00000528: DIV
00000529: PUSH1 0x08
0000052b: SSTORE
0000052c: CALLER
0000052d: AND
0000052e: PUSH1 0x00
00000530: SWAP1
00000531: DUP2
00000532: MSTORE
00000533: PUSH1 0x09
00000535: PUSH1 0x20
00000537: MSTORE
00000538: PUSH1 0x40
0000053a: DUP2
0000053b: KECCAK256
0000053c: SLOAD
0000053d: DUP3
0000053e: SWAP1
0000053f: LT
00000540: ISZERO
00000541: PUSH2 0x0967
00000544: JUMPI
00000545: PUSH2 0x0002
00000548: JUMP
00000549: JUMPDEST
0000054a: PUSH2 0x0106
0000054d: PUSH1 0x04
0000054f: CALLDATALOAD
00000550: PUSH1 0x00
00000552: SLOAD
00000553: CALLER
00000554: PUSH1 0x01
00000556: PUSH1 0xa0
00000558: PUSH1 0x02
0000055a: EXP
0000055b: SUB
0000055c: SWAP1
0000055d: DUP2
0000055e: AND
0000055f: SWAP2
00000560: AND
00000561: EQ
00000562: PUSH2 0x09ec
00000565: JUMPI
00000566: PUSH2 0x0002
00000569: JUMP
0000056a: JUMPDEST
0000056b: PUSH2 0x062c
0000056e: PUSH1 0x05
00000570: SLOAD
00000571: PUSH1 0x01
00000573: PUSH1 0xa0
00000575: PUSH1 0x02
00000577: EXP
00000578: SUB
00000579: AND
0000057a: DUP2
0000057b: JUMP
0000057c: JUMPDEST
0000057d: PUSH1 0x40
0000057f: MLOAD
00000580: DUP1
00000581: DUP1
00000582: PUSH1 0x20
00000584: ADD
00000585: DUP3
00000586: DUP2
00000587: SUB
00000588: DUP3
00000589: MSTORE
0000058a: DUP4
0000058b: DUP2
0000058c: DUP2
0000058d: MLOAD
0000058e: DUP2
0000058f: MSTORE
00000590: PUSH1 0x20
00000592: ADD
00000593: SWAP2
00000594: POP
00000595: DUP1
00000596: MLOAD
00000597: SWAP1
00000598: PUSH1 0x20
0000059a: ADD
0000059b: SWAP1
0000059c: DUP1
0000059d: DUP4
0000059e: DUP4
0000059f: DUP3
000005a0: SWAP1
000005a1: PUSH1 0x00
000005a3: PUSH1 0x04
000005a5: PUSH1 0x20
000005a7: DUP5
000005a8: PUSH1 0x1f
000005aa: ADD
000005ab: DIV
000005ac: PUSH1 0x0f
000005ae: MUL
000005af: PUSH1 0x03
000005b1: ADD
000005b2: CALL
000005b3: POP
000005b4: SWAP1
000005b5: POP
000005b6: SWAP1
000005b7: DUP2
000005b8: ADD
000005b9: SWAP1
000005ba: PUSH1 0x1f
000005bc: AND
000005bd: DUP1
000005be: ISZERO
000005bf: PUSH2 0x05dc
000005c2: JUMPI
000005c3: DUP1
000005c4: DUP3
000005c5: SUB
000005c6: DUP1
000005c7: MLOAD
000005c8: PUSH1 0x01
000005ca: DUP4
000005cb: PUSH1 0x20
000005cd: SUB
000005ce: PUSH2 0x0100
000005d1: EXP
000005d2: SUB
000005d3: NOT
000005d4: AND
000005d5: DUP2
000005d6: MSTORE
000005d7: PUSH1 0x20
000005d9: ADD
000005da: SWAP2
000005db: POP
000005dc: JUMPDEST
000005dd: POP
000005de: SWAP3
000005df: POP
000005e0: POP
000005e1: POP
000005e2: PUSH1 0x40
000005e4: MLOAD
000005e5: DUP1
000005e6: SWAP2
000005e7: SUB
000005e8: SWAP1
000005e9: RETURN
000005ea: JUMPDEST
000005eb: PUSH1 0x40
000005ed: DUP1
000005ee: MLOAD
000005ef: SWAP2
000005f0: DUP3
000005f1: MSTORE
000005f2: MLOAD
000005f3: SWAP1
000005f4: DUP2
000005f5: SWAP1
000005f6: SUB
000005f7: PUSH1 0x20
000005f9: ADD
000005fa: SWAP1
000005fb: RETURN
000005fc: JUMPDEST
000005fd: PUSH1 0x40
000005ff: DUP1
00000600: MLOAD
00000601: PUSH4 0xffffffff
00000606: SWAP3
00000607: SWAP1
00000608: SWAP3
00000609: AND
0000060a: DUP3
0000060b: MSTORE
0000060c: MLOAD
0000060d: SWAP1
0000060e: DUP2
0000060f: SWAP1
00000610: SUB
00000611: PUSH1 0x20
00000613: ADD
00000614: SWAP1
00000615: RETURN
00000616: JUMPDEST
00000617: PUSH1 0x40
00000619: DUP1
0000061a: MLOAD
0000061b: PUSH1 0xff
0000061d: SWAP1
0000061e: SWAP3
0000061f: AND
00000620: DUP3
00000621: MSTORE
00000622: MLOAD
00000623: SWAP1
00000624: DUP2
00000625: SWAP1
00000626: SUB
00000627: PUSH1 0x20
00000629: ADD
0000062a: SWAP1
0000062b: RETURN
0000062c: JUMPDEST
0000062d: PUSH1 0x40
0000062f: DUP1
00000630: MLOAD
00000631: PUSH1 0x01
00000633: PUSH1 0xa0
00000635: PUSH1 0x02
00000637: EXP
00000638: SUB
00000639: SWAP3
0000063a: SWAP1
0000063b: SWAP3
0000063c: AND
0000063d: DUP3
0000063e: MSTORE
0000063f: MLOAD
00000640: SWAP1
00000641: DUP2
00000642: SWAP1
00000643: SUB
00000644: PUSH1 0x20
00000646: ADD
00000647: SWAP1
00000648: RETURN
00000649: JUMPDEST
0000064a: POP
0000064b: SWAP4
0000064c: SWAP3
0000064d: POP
0000064e: POP
0000064f: POP
00000650: JUMP
00000651: JUMPDEST
00000652: PUSH1 0x01
00000654: PUSH1 0xa0
00000656: PUSH1 0x02
00000658: EXP
00000659: SUB
0000065a: DUP3
0000065b: AND
0000065c: PUSH1 0x00
0000065e: SWAP1
0000065f: DUP2
00000660: MSTORE
00000661: PUSH1 0x09
00000663: PUSH1 0x20
00000665: MSTORE
00000666: PUSH1 0x40
00000668: SWAP1
00000669: KECCAK256
0000066a: SLOAD
0000066b: DUP2
0000066c: DUP2
0000066d: ADD
0000066e: LT
0000066f: ISZERO
00000670: PUSH2 0x0678
00000673: JUMPI
00000674: PUSH2 0x0002
00000677: JUMP
00000678: JUMPDEST
00000679: CALLER
0000067a: PUSH1 0x01
0000067c: PUSH1 0xa0
0000067e: PUSH1 0x02
00000680: EXP
00000681: SUB
00000682: SWAP1
00000683: DUP2
00000684: AND
00000685: PUSH1 0x00
00000687: DUP2
00000688: DUP2
00000689: MSTORE
0000068a: PUSH1 0x09
0000068c: PUSH1 0x20
0000068e: SWAP1
0000068f: DUP2
00000690: MSTORE
00000691: PUSH1 0x40
00000693: DUP1
00000694: DUP4
00000695: KECCAK256
00000696: DUP1
00000697: SLOAD
00000698: DUP8
00000699: SWAP1
0000069a: SUB
0000069b: SWAP1
0000069c: SSTORE
0000069d: SWAP4
0000069e: DUP7
0000069f: AND
000006a0: DUP1
000006a1: DUP4
000006a2: MSTORE
000006a3: SWAP2
000006a4: DUP5
000006a5: SWAP1
000006a6: KECCAK256
000006a7: DUP1
000006a8: SLOAD
000006a9: DUP7
000006aa: ADD
000006ab: SWAP1
000006ac: SSTORE
000006ad: DUP4
000006ae: MLOAD
000006af: DUP6
000006b0: DUP2
000006b1: MSTORE
000006b2: SWAP4
000006b3: MLOAD
000006b4: SWAP2
000006b5: SWAP4
000006b6: PUSH1 0x00
000006b8: DUP1
000006b9: MLOAD
000006ba: PUSH1 0x20
000006bc: PUSH2 0x0a0e
000006bf: DUP4
000006c0: CODECOPY
000006c1: DUP2
000006c2: MLOAD
000006c3: SWAP2
000006c4: MSTORE
000006c5: SWAP3
000006c6: SWAP1
000006c7: DUP2
000006c8: SWAP1
000006c9: SUB
000006ca: SWAP1
000006cb: SWAP2
000006cc: ADD
000006cd: SWAP1
000006ce: LOG3
000006cf: POP
000006d0: POP
000006d1: JUMP
000006d2: JUMPDEST
000006d3: PUSH1 0x01
000006d5: PUSH1 0xa0
000006d7: PUSH1 0x02
000006d9: EXP
000006da: SUB
000006db: DUP4
000006dc: AND
000006dd: PUSH1 0x00
000006df: SWAP1
000006e0: DUP2
000006e1: MSTORE
000006e2: PUSH1 0x09
000006e4: PUSH1 0x20
000006e6: MSTORE
000006e7: PUSH1 0x40
000006e9: SWAP1
000006ea: KECCAK256
000006eb: SLOAD
000006ec: DUP1
000006ed: DUP4
000006ee: ADD
000006ef: LT
000006f0: ISZERO
000006f1: PUSH2 0x06f9
000006f4: JUMPI
000006f5: PUSH2 0x0002
000006f8: JUMP
000006f9: JUMPDEST
000006fa: PUSH1 0x01
000006fc: PUSH1 0xa0
000006fe: PUSH1 0x02
00000700: EXP
00000701: SUB
00000702: DUP5
00000703: DUP2
00000704: AND
00000705: PUSH1 0x00
00000707: DUP2
00000708: DUP2
00000709: MSTORE
0000070a: PUSH1 0x0a
0000070c: PUSH1 0x20
0000070e: SWAP1
0000070f: DUP2
00000710: MSTORE
00000711: PUSH1 0x40
00000713: DUP1
00000714: DUP4
00000715: KECCAK256
00000716: CALLER
00000717: SWAP1
00000718: SWAP6
00000719: AND
0000071a: DUP1
0000071b: DUP5
0000071c: MSTORE
0000071d: SWAP5
0000071e: DUP3
0000071f: MSTORE
00000720: DUP1
00000721: DUP4
00000722: KECCAK256
00000723: SLOAD
00000724: SWAP4
00000725: DUP4
00000726: MSTORE
00000727: PUSH1 0x0b
00000729: DUP3
0000072a: MSTORE
0000072b: DUP1
0000072c: DUP4
0000072d: KECCAK256
0000072e: SWAP5
0000072f: DUP4
00000730: MSTORE
00000731: SWAP4
00000732: SWAP1
00000733: MSTORE
00000734: SWAP2
00000735: SWAP1
00000736: SWAP2
00000737: KECCAK256
00000738: SLOAD
00000739: DUP4
0000073a: ADD
0000073b: GT
0000073c: ISZERO
0000073d: PUSH2 0x0745
00000740: JUMPI
00000741: PUSH2 0x0002
00000744: JUMP
00000745: JUMPDEST
00000746: PUSH1 0x01
00000748: PUSH1 0xa0
0000074a: PUSH1 0x02
0000074c: EXP
0000074d: SUB
0000074e: DUP5
0000074f: DUP2
00000750: AND
00000751: PUSH1 0x00
00000753: DUP2
00000754: DUP2
00000755: MSTORE
00000756: PUSH1 0x09
00000758: PUSH1 0x20
0000075a: SWAP1
0000075b: DUP2
0000075c: MSTORE
0000075d: PUSH1 0x40
0000075f: DUP1
00000760: DUP4
00000761: KECCAK256
00000762: DUP1
00000763: SLOAD
00000764: DUP9
00000765: SWAP1
00000766: SUB
00000767: SWAP1
00000768: SSTORE
00000769: DUP8
0000076a: DUP6
0000076b: AND
0000076c: DUP1
0000076d: DUP5
0000076e: MSTORE
0000076f: DUP2
00000770: DUP5
00000771: KECCAK256
00000772: DUP1
00000773: SLOAD
00000774: DUP10
00000775: ADD
00000776: SWAP1
00000777: SSTORE
00000778: DUP5
00000779: DUP5
0000077a: MSTORE
0000077b: PUSH1 0x0b
0000077d: DUP4
0000077e: MSTORE
0000077f: DUP2
00000780: DUP5
00000781: KECCAK256
00000782: CALLER
00000783: SWAP1
00000784: SWAP7
00000785: AND
00000786: DUP5
00000787: MSTORE
00000788: SWAP5
00000789: DUP3
0000078a: MSTORE
0000078b: SWAP2
0000078c: DUP3
0000078d: SWAP1
0000078e: KECCAK256
0000078f: DUP1
00000790: SLOAD
00000791: DUP8
00000792: ADD
00000793: SWAP1
00000794: SSTORE
00000795: DUP2
00000796: MLOAD
00000797: DUP7
00000798: DUP2
00000799: MSTORE
0000079a: SWAP2
0000079b: MLOAD
0000079c: PUSH1 0x00
0000079e: DUP1
0000079f: MLOAD
000007a0: PUSH1 0x20
000007a2: PUSH2 0x0a0e
000007a5: DUP4
000007a6: CODECOPY
000007a7: DUP2
000007a8: MLOAD
000007a9: SWAP2
000007aa: MSTORE
000007ab: SWAP3
000007ac: DUP2
000007ad: SWAP1
000007ae: SUB
000007af: SWAP1
000007b0: SWAP2
000007b1: ADD
000007b2: SWAP1
000007b3: LOG3
000007b4: POP
000007b5: PUSH1 0x01
000007b7: SWAP4
000007b8: SWAP3
000007b9: POP
000007ba: POP
000007bb: POP
000007bc: JUMP
000007bd: JUMPDEST
000007be: DUP3
000007bf: ADD
000007c0: SWAP2
000007c1: SWAP1
000007c2: PUSH1 0x00
000007c4: MSTORE
000007c5: PUSH1 0x20
000007c7: PUSH1 0x00
000007c9: KECCAK256
000007ca: SWAP1
000007cb: JUMPDEST
000007cc: DUP2
000007cd: SLOAD
000007ce: DUP2
000007cf: MSTORE
000007d0: SWAP1
000007d1: PUSH1 0x01
000007d3: ADD
000007d4: SWAP1
000007d5: PUSH1 0x20
000007d7: ADD
000007d8: DUP1
000007d9: DUP4
000007da: GT
000007db: PUSH2 0x07cb
000007de: JUMPI
000007df: DUP3
000007e0: SWAP1
000007e1: SUB
000007e2: PUSH1 0x1f
000007e4: AND
000007e5: DUP3
000007e6: ADD
000007e7: SWAP2
000007e8: JUMPDEST
000007e9: POP
000007ea: POP
000007eb: POP
000007ec: POP
000007ed: POP
000007ee: DUP2
000007ef: JUMP
000007f0: JUMPDEST
000007f1: PUSH1 0x06
000007f3: SSTORE
000007f4: JUMP
000007f5: JUMPDEST
000007f6: PUSH1 0x05
000007f8: DUP1
000007f9: SLOAD
000007fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000080f: NOT
00000810: AND
00000811: DUP3
00000812: OR
00000813: SWAP1
00000814: SSTORE
00000815: POP
00000816: JUMP
00000817: JUMPDEST
00000818: PUSH2 0x0200
0000081b: DUP2
0000081c: PUSH4 0xffffffff
00000821: AND
00000822: LT
00000823: ISZERO
00000824: PUSH2 0x082c
00000827: JUMPI
00000828: PUSH2 0x0002
0000082b: JUMP
0000082c: JUMPDEST
0000082d: PUSH1 0x07
0000082f: DUP1
00000830: SLOAD
00000831: PUSH4 0xffffffff
00000836: NOT
00000837: AND
00000838: DUP3
00000839: OR
0000083a: SWAP1
0000083b: SSTORE
0000083c: POP
0000083d: JUMP
0000083e: JUMPDEST
0000083f: PUSH1 0x04
00000841: SLOAD
00000842: ADDRESS
00000843: PUSH1 0x01
00000845: PUSH1 0xa0
00000847: PUSH1 0x02
00000849: EXP
0000084a: SUB
0000084b: AND
0000084c: BALANCE
0000084d: PUSH5 0x174876e800
00000853: MUL
00000854: DIV
00000855: PUSH1 0x08
00000857: SSTORE
00000858: PUSH1 0x40
0000085a: DUP1
0000085b: MLOAD
0000085c: NUMBER
0000085d: DUP2
0000085e: MSTORE
0000085f: TIMESTAMP
00000860: PUSH1 0x20
00000862: DUP3
00000863: ADD
00000864: MSTORE
00000865: DUP1
00000866: DUP3
00000867: ADD
00000868: DUP7
00000869: SWAP1
0000086a: MSTORE
0000086b: SWAP1
0000086c: MLOAD
0000086d: SWAP1
0000086e: DUP2
0000086f: SWAP1
00000870: SUB
00000871: PUSH1 0x60
00000873: ADD
00000874: SWAP1
00000875: KECCAK256
00000876: PUSH2 0x0880
00000879: SWAP1
0000087a: PUSH1 0x0a
0000087c: PUSH2 0x01e7
0000087f: JUMP
00000880: JUMPDEST
00000881: PUSH1 0x07
00000883: SLOAD
00000884: SWAP1
00000885: SWAP2
00000886: POP
00000887: PUSH4 0xffffffff
0000088c: AND
0000088d: DUP2
0000088e: LT
0000088f: PUSH2 0x08a5
00000892: JUMPI
00000893: PUSH1 0x00
00000895: SWAP3
00000896: POP
00000897: PUSH2 0x03e7
0000089a: PUSH5 0x174876e800
000008a0: DUP6
000008a1: DIV
000008a2: DIV
000008a3: SWAP2
000008a4: POP
000008a5: JUMPDEST
000008a6: PUSH1 0x07
000008a8: SLOAD
000008a9: PUSH4 0xffffffff
000008ae: AND
000008af: DUP2
000008b0: LT
000008b1: ISZERO
000008b2: PUSH2 0x08c3
000008b5: JUMPI
000008b6: PUSH5 0x174876e800
000008bc: PUSH1 0x02
000008be: DUP6
000008bf: MUL
000008c0: DIV
000008c1: SWAP3
000008c2: POP
000008c3: JUMPDEST
000008c4: CALLER
000008c5: PUSH1 0x01
000008c7: PUSH1 0xa0
000008c9: PUSH1 0x02
000008cb: EXP
000008cc: SUB
000008cd: SWAP1
000008ce: DUP2
000008cf: AND
000008d0: PUSH1 0x00
000008d2: DUP2
000008d3: DUP2
000008d4: MSTORE
000008d5: PUSH1 0x09
000008d7: PUSH1 0x20
000008d9: SWAP1
000008da: DUP2
000008db: MSTORE
000008dc: PUSH1 0x40
000008de: DUP1
000008df: DUP4
000008e0: KECCAK256
000008e1: DUP1
000008e2: SLOAD
000008e3: DUP10
000008e4: ADD
000008e5: SWAP1
000008e6: SSTORE
000008e7: PUSH1 0x05
000008e9: SLOAD
000008ea: DUP6
000008eb: AND
000008ec: DUP4
000008ed: MSTORE
000008ee: DUP1
000008ef: DUP4
000008f0: KECCAK256
000008f1: DUP1
000008f2: SLOAD
000008f3: DUP9
000008f4: ADD
000008f5: SWAP1
000008f6: SSTORE
000008f7: ADDRESS
000008f8: SWAP1
000008f9: SWAP5
000008fa: AND
000008fb: DUP1
000008fc: DUP4
000008fd: MSTORE
000008fe: SWAP2
000008ff: DUP5
00000900: SWAP1
00000901: KECCAK256
00000902: DUP1
00000903: SLOAD
00000904: DUP8
00000905: DUP10
00000906: ADD
00000907: SWAP1
00000908: SUB
00000909: SWAP1
0000090a: SSTORE
0000090b: DUP4
0000090c: MLOAD
0000090d: DUP8
0000090e: DUP2
0000090f: MSTORE
00000910: SWAP4
00000911: MLOAD
00000912: SWAP3
00000913: SWAP4
00000914: SWAP2
00000915: SWAP3
00000916: PUSH1 0x00
00000918: DUP1
00000919: MLOAD
0000091a: PUSH1 0x20
0000091c: PUSH2 0x0a0e
0000091f: DUP4
00000920: CODECOPY
00000921: DUP2
00000922: MLOAD
00000923: SWAP2
00000924: MSTORE
00000925: SWAP3
00000926: DUP2
00000927: SWAP1
00000928: SUB
00000929: SWAP1
0000092a: SWAP2
0000092b: ADD
0000092c: SWAP1
0000092d: LOG3
0000092e: PUSH1 0x05
00000930: SLOAD
00000931: PUSH1 0x40
00000933: DUP1
00000934: MLOAD
00000935: DUP5
00000936: DUP2
00000937: MSTORE
00000938: SWAP1
00000939: MLOAD
0000093a: PUSH1 0x01
0000093c: PUSH1 0xa0
0000093e: PUSH1 0x02
00000940: EXP
00000941: SUB
00000942: SWAP3
00000943: DUP4
00000944: AND
00000945: SWAP3
00000946: ADDRESS
00000947: AND
00000948: SWAP2
00000949: PUSH1 0x00
0000094b: DUP1
0000094c: MLOAD
0000094d: PUSH1 0x20
0000094f: PUSH2 0x0a0e
00000952: DUP4
00000953: CODECOPY
00000954: DUP2
00000955: MLOAD
00000956: SWAP2
00000957: MSTORE
00000958: SWAP2
00000959: SWAP1
0000095a: DUP2
0000095b: SWAP1
0000095c: SUB
0000095d: PUSH1 0x20
0000095f: ADD
00000960: SWAP1
00000961: LOG3
00000962: POP
00000963: POP
00000964: POP
00000965: SWAP1
00000966: JUMP
00000967: JUMPDEST
00000968: POP
00000969: ADDRESS
0000096a: PUSH1 0x01
0000096c: PUSH1 0xa0
0000096e: PUSH1 0x02
00000970: EXP
00000971: SUB
00000972: SWAP1
00000973: DUP2
00000974: AND
00000975: PUSH1 0x00
00000977: SWAP1
00000978: DUP2
00000979: MSTORE
0000097a: PUSH1 0x09
0000097c: PUSH1 0x20
0000097e: MSTORE
0000097f: PUSH1 0x40
00000981: DUP1
00000982: DUP3
00000983: KECCAK256
00000984: DUP1
00000985: SLOAD
00000986: DUP6
00000987: ADD
00000988: SWAP1
00000989: SSTORE
0000098a: CALLER
0000098b: SWAP1
0000098c: SWAP3
0000098d: AND
0000098e: DUP1
0000098f: DUP3
00000990: MSTORE
00000991: DUP3
00000992: DUP3
00000993: KECCAK256
00000994: DUP1
00000995: SLOAD
00000996: DUP6
00000997: SWAP1
00000998: SUB
00000999: SWAP1
0000099a: SSTORE
0000099b: SWAP2
0000099c: MLOAD
0000099d: PUSH1 0x08
0000099f: SLOAD
000009a0: PUSH5 0x174876e800
000009a6: DUP6
000009a7: DIV
000009a8: MUL
000009a9: SWAP3
000009aa: SWAP2
000009ab: SWAP1
000009ac: DUP4
000009ad: SWAP1
000009ae: DUP3
000009af: DUP2
000009b0: DUP2
000009b1: DUP2
000009b2: DUP6
000009b3: DUP9
000009b4: DUP4
000009b5: CALL
000009b6: POP
000009b7: POP
000009b8: PUSH1 0x40
000009ba: DUP1
000009bb: MLOAD
000009bc: DUP7
000009bd: DUP2
000009be: MSTORE
000009bf: SWAP1
000009c0: MLOAD
000009c1: ADDRESS
000009c2: PUSH1 0x01
000009c4: PUSH1 0xa0
000009c6: PUSH1 0x02
000009c8: EXP
000009c9: SUB
000009ca: AND
000009cb: SWAP5
000009cc: SWAP4
000009cd: POP
000009ce: PUSH1 0x00
000009d0: DUP1
000009d1: MLOAD
000009d2: PUSH1 0x20
000009d4: PUSH2 0x0a0e
000009d7: DUP4
000009d8: CODECOPY
000009d9: DUP2
000009da: MLOAD
000009db: SWAP2
000009dc: MSTORE
000009dd: SWAP3
000009de: POP
000009df: SWAP1
000009e0: DUP2
000009e1: SWAP1
000009e2: SUB
000009e3: PUSH1 0x20
000009e5: ADD
000009e6: SWAP1
000009e7: LOG3
000009e8: SWAP2
000009e9: SWAP1
000009ea: POP
000009eb: JUMP
000009ec: JUMPDEST
000009ed: PUSH1 0x00
000009ef: DUP1
000009f0: SLOAD
000009f1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a06: NOT
00000a07: AND
00000a08: DUP3
00000a09: OR
00000a0a: SWAP1
00000a0b: SSTORE
00000a0c: POP
00000a0d: JUMP
00000a0e: UNKNOWN(0xDD)
00000a0f: CALLCODE
00000a10: MSTORE
00000a11: UNKNOWN(0xAD)
00000a12: SHL
00000a13: UNKNOWN(0xE2)
00000a14: UNKNOWN(0xC8)
00000a15: SWAP12
00000a16: PUSH10 0xc2b068fc378daa952ba7
00000a21: CALL
00000a22: PUSH4 0xc4a11628
00000a27: CREATE2
00000a28: GAS
00000a29: UNKNOWN(0x4D)
00000a2a: CREATE2
00000a2b: UNKNOWN(0x23)
00000a2c: UNKNOWN(0xB3)
00000a2d: UNKNOWN(0xEF)
View stderr
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.

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 yes yes
view
trace_id: 0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d
call_targets: 0x0000000000000000000000000000000000000004, 0x3456f6ea53a44d9bdf0d3da99254860531cb0af5
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x233de126",
            "selector": "0x233de126",
            "calldata_variants": [
                "0x233de126",
                "0x233de1260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1126,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1194,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1458,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [],
    "untrusted_call_count": 6
}
high other detector ETH value transfer possible 55 yes yes
view
trace_id: 0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d
call_targets: 0x0000000000000000000000000000000000000004, 0x3456f6ea53a44d9bdf0d3da99254860531cb0af5
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0xeba4f167f849775dd329b361f5a177637c62393369b940242a641a427c57ea1d",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x3456f6ea53a44d9bdf0d3da99254860531cb0af5"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x233de126",
            "selector": "0x233de126",
            "calldata_variants": [
                "0x233de126",
                "0x233de1260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1126,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1194,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1458,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": []
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0x42c3eea034cb5a22915e2bb9a55f1b44d524b5a84a6c13a7eb3108b245c52492
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0x42c3eea034cb5a22915e2bb9a55f1b44d524b5a84a6c13a7eb3108b245c52492",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x233de126",
            "selector": "0x233de126",
            "calldata_variants": [
                "0x233de126",
                "0x233de1260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 0,
    "create2_count": 2
}
medium other codex Best-effort inferred redemption path ignores ETH payout failure 75 no
view
evidence_json
{
    "evidence": "In the `0xe4849b32` path, storage is modified before the external call (`SSTORE` at pcs 0x989 and 0x99a, following reads at 0x984 and 0x995). The payout `CALL` occurs at pc 0x9b5, and the next instructions are `POP; POP` rather than `ISZERO`/conditional revert. This is strong evidence of unchecked call success on a value-transferring path.",
    "locations": [
        "selector:0xe4849b32",
        "pc:0x967",
        "pc:0x9b5"
    ],
    "recommendation": "Check the `CALL` result and revert on failure, or switch to a pull-payment pattern where users withdraw ETH separately after accounting is finalized.",
    "exploit_scenario": "Best-effort selector inference suggests `0xe4849b32` is a token-for-ETH redemption/sell path. The code updates storage first, then performs a low-level `CALL` to send ETH, but immediately pops the return value instead of reverting on failure. If the recipient is a contract with a reverting/expensive fallback, or the call otherwise fails, the function can still complete after debiting the seller's accounting, leaving them unpaid while their balance changes are kept."
}
low other codex Financial logic appears to use manipulable block data as randomness 65 no
view
evidence_json
{
    "evidence": "The internal routine starting near pc 0x1e7 iterates over prior blocks and uses `NUMBER`/`BLOCKHASH`/`SHA3`/`MOD` (`NUMBER` at 0x1f9, `BLOCKHASH` at 0x201, `SHA3` at 0x215). The payable buy path (`selector:0xa6f2ae3a`) prepares a seed with `NUMBER` and `TIMESTAMP` (`pcs 0x85c-0x875`) and jumps into that routine before applying threshold-dependent math using slot 7 (`pcs 0x883-0x8c3`). This is strong evidence of on-chain pseudo-randomness influencing value logic.",
    "locations": [
        "selector:0xa6f2ae3a",
        "selector:0x41fa4876",
        "pc:0x1e7",
        "pc:0x85c",
        "pc:0x8a8"
    ],
    "recommendation": "Do not use block variables as a randomness source for value-bearing logic. Replace this with a commit-reveal design or a verifiable randomness source.",
    "exploit_scenario": "The contract appears to hash `NUMBER`, `TIMESTAMP`, and prior `BLOCKHASH` values to derive a branch that changes financial behavior in the buy path. If that branch affects token amounts, bonuses, or pricing, block producers and sophisticated order-flow actors can bias or selectively include transactions when outcomes are favorable."
}