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

Analysis Run

019d5666-7222-713e-be7e-db522974661d

complete
Chain ID
1
Address
Block Number
Created
Sat, Apr 4, 2026 2:50 AM
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
0
Validated
0
Source
Bytecode only
Review Backing
Present
Best current signal
Authorization based on tx.origin
crit 0 high 0 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
42876 artifact.fetch complete 1 / 3 1 week ago
42877 proxy.resolve complete 1 / 3 1 week ago
42878 tool.cast_disasm complete 1 / 3 1 week ago
42879 analysis.bundle complete 1 / 3 1 week ago
42880 capability.graph complete 1 / 3 1 week ago
42881 detector.run complete 1 / 3 1 week ago
42882 validation.fork complete 1 / 3 1 week ago
42980 report.consolidate complete 1 / 6 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: no
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Bytecode-only review found two meaningful issues: privileged sweep paths can move ETH/ERC20 out of the contract despite user-balance accounting, and the token deposit path credits the requested amount after `transferFrom` without proving the same amount was actually received. I did not count the `tx.origin` / `SELFDESTRUCT` detector hits as findings because they appear in the metadata trailer after `STOP` at `pc:0x152c`, so reachability is not evidenced from runtime code.
View stdout
{"no_findings":false,"summary":"Bytecode-only review found two meaningful issues: privileged sweep paths can move ETH/ERC20 out of the contract despite user-balance accounting, and the token deposit path credits the requested amount after `transferFrom` without proving the same amount was actually received. I did not count the `tx.origin` / `SELFDESTRUCT` detector hits as findings because they appear in the metadata trailer after `STOP` at `pc:0x152c`, so reachability is not evidenced from runtime code.","findings":[{"severity":"medium","category":"access_control","title":"Privileged owner can sweep custodial ETH and ERC20 balances","exploit_scenario":"If this contract is used as a custody/escrow/exchange balance holder, the slot-0 owner can call the admin withdrawal paths to send ERC20 or ETH from the contract to an arbitrary recipient. Because user balances are also tracked in storage elsewhere, those sweeps can leave users with unbacked claims or an insolvent pool. The apparent per-call cap does not prevent draining over multiple transactions.","recommendation":"Remove arbitrary owner sweep capability for user-backed assets, or restrict it to tightly-scoped rescue flows behind a multisig/timelock and explicit asset allowlists. If admin rescue must exist, reconcile or block withdrawal of assets that back user balances.","evidence":"`pc:0x349` begins with a slot-0 owner check (`SLOAD` -> masked address -> `CALLER EQ`). That path performs `balanceOf(address(this))` on an arbitrary token at `pc:0x3f3` and then an ERC20 `transfer` call (`0xa9059cbb`) at `pc:0x4fa`. A second owner-gated path at `pc:0xb3e` performs a raw ETH `CALL` at `pc:0xbed`. Separately, the contract records depositor balances via storage updates on payable/token-deposit flows (for example `pc:0xa3e-0xa7a` and `pc:0xe7d-0xe98`), so these sweeps can bypass internal accounting.","locations":["selector:0x1e2284ed","pc:0x349","pc:0x3f3","pc:0x4fa","selector:0xa6fb97d1","pc:0xb3e","pc:0xbed","selector:0xf851a440"]},{"severity":"medium","category":"other","title":"Token deposits credit the requested amount, not the amount actually received","exploit_scenario":"A user can deposit a fee-on-transfer, rebasing, or otherwise non-standard ERC20 that returns success from `transferFrom` while delivering fewer tokens than requested. The contract then credits the user's internal balance with the full requested amount, allowing later withdrawal/trading against more balance than the contract actually holds and potentially socializing the deficit to other users.","recommendation":"Measure actual tokens received by comparing pre/post balances, or only support a vetted allowlist of vanilla ERC20s whose transfers are known to be 1:1. Do not credit user balances solely from the requested `amount` parameter.","evidence":"In the `selector:0xcc2c5164` path, the contract builds calldata for standard ERC20 `transferFrom(address,address,uint256)` (`0x23b872dd`) at `pc:0xdbf-0xe16` and executes the external call at `pc:0xe2b`. After only checking call success / returned bool (`pc:0xe2c-0xe5e`), it immediately increments internal storage balances at `pc:0xe7d-0xe98` and related counters at `pc:0xeae-0xebb`. No pre/post `balanceOf` delta is observed on this path before crediting.","locations":["selector:0xcc2c5164","pc:0xdbf","pc:0xe2b","pc:0xe7d","pc:0xe98","pc:0xeae"]}]}
View stderr
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-c_36tz1k
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d569e-2c9c-7012-9fbc-9822047a805e
--------
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 'ls -la' in /tmp/codex-c_36tz1k
 succeeded in 0ms:
total 380
drwx------   2 noahkuhn noahkuhn   4096 Apr  4 03:51 .
drwxrwxrwt 253 nobody   nogroup   24576 Apr  4 03:51 ..
-rw-rw-r--   1 noahkuhn noahkuhn 349555 Apr  4 03:51 BYTECODE_BUNDLE.json
-rw-rw-r--   1 noahkuhn noahkuhn    815 Apr  4 03:51 codex-output-schema.json

exec
/bin/bash -lc "pwd && rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md' -g '*.json'" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
/tmp/codex-c_36tz1k
BYTECODE_BUNDLE.json
codex-output-schema.json

exec
/bin/bash -lc "jq '.' codex-output-schema.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "no_findings",
    "summary",
    "findings"
  ],
  "properties": {
    "no_findings": {
      "type": "boolean"
    },
    "summary": {
      "type": "string"
    },
    "findings": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "severity",
          "category",
          "title",
          "evidence",
          "locations",
          "exploit_scenario",
          "recommendation"
        ],
        "properties": {
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "low",
              "medium",
              "high",
              "critical"
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "access_control",
              "reentrancy",
              "math",
              "oracle",
              "upgradeability",
              "auth",
              "other"
            ]
          },
          "title": {
            "type": "string"
          },
          "exploit_scenario": {
            "type": "string"
          },
          "recommendation": {
            "type": "string"
          },
          "evidence": {
            "type": "string"
          },
          "locations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}

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

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

exec
/bin/bash -lc "jq '.detector_findings | {count:length, by_detector:(group_by(.detector) | map({detector: .[0].detector, count:length}))}' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "count": 4,
  "by_detector": [
    {
      "detector": null,
      "count": 4
    }
  ]
}

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

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 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 '.heuristics_summary' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "create2_count": 0,
  "delegatecall_count": 0,
  "flags": [
    "selfdestruct_present",
    "heavy_ext_balance_usage"
  ],
  "selfdestruct_count": 1
}

exec
/bin/bash -lc "jq '.detector_findings' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
[
  {
    "confidence": 70,
    "evidence_json": {
      "guards_detected": [
        {
          "pc": 5487,
          "type": "tx_origin_used"
        }
      ]
    },
    "normalized_json": {
      "pattern": "tx.origin"
    },
    "severity": "high",
    "title": "Authorization based on tx.origin",
    "validated": false,
    "validation_json": {
      "reason": "missing sink mapping",
      "status": "no_sink"
    }
  },
  {
    "confidence": 45,
    "evidence_json": {
      "call_count": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 1011,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1274,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 3053,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        }
      ],
      "guards_detected": [
        {
          "pc": 5487,
          "type": "tx_origin_used"
        }
      ],
      "untrusted_call_count": 6
    },
    "normalized_json": {
      "sink": "CALL"
    },
    "severity": "medium",
    "title": "Untrusted CALL target/value reachable",
    "validated": false,
    "validation_json": {
      "attempts": 1,
      "call_targets": [
        "0x96541c4926a32ea3a97fd8d335aff1f81e50ffe9"
      ],
      "classification": "constant_target",
      "confirmed": false,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "sink_reached",
      "target_varies": false,
      "trace_id": "0xadf92b7cae4a946e4e654e57ce890afe08dce46b68dd16a27c9e2e5ba4412f70",
      "trace_mode": "callTracer"
    }
  },
  {
    "confidence": 40,
    "evidence_json": {
      "eth_value_calls": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 1011,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1274,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 3053,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        }
      ],
      "guards_detected": [
        {
          "pc": 5487,
          "type": "tx_origin_used"
        }
      ]
    },
    "normalized_json": {
      "sink": "CALL",
      "value": "nonzero"
    },
    "severity": "medium",
    "title": "ETH value transfer possible",
    "validated": false,
    "validation_json": {
      "attempts": 1,
      "call_targets": [
        "0x96541c4926a32ea3a97fd8d335aff1f81e50ffe9"
      ],
      "classification": "constant_target",
      "confirmed": false,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "sink_reached",
      "target_varies": false,
      "trace_id": "0xadf92b7cae4a946e4e654e57ce890afe08dce46b68dd16a27c9e2e5ba4412f70",
      "trace_mode": "callTracer"
    }
  },
  {
    "confidence": 45,
    "evidence_json": {
      "guards_detected": [
        {
          "pc": 5487,
          "type": "tx_origin_used"
        }
      ],
      "selfdestruct_count": 1
    },
    "normalized_json": {
      "sink": "SELFDESTRUCT"
    },
    "severity": "medium",
    "title": "SELFDESTRUCT reachable",
    "validated": false,
    "validation_json": {
      "attempts": 24,
      "call_targets": null,
      "classification": "no_sink",
      "confirmed": false,
      "errors": 0,
      "matched_probe": null,
      "sink": "SELFDESTRUCT",
      "status": "unknown",
      "target_varies": null,
      "trace_id": "0x562c1b9dd7f428da630378218d394337cd53a5c1f5775cf344fc631de11129c5",
      "trace_mode": "structLogs"
    }
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
[
  "0x1e2284ed",
  "0x4adae0da",
  "0x98e0b39a",
  "0x997805d4",
  "0xa26e1186",
  "0xa6fb97d1",
  "0xad2de9b0",
  "0xcc2c5164",
  "0xdc131545",
  "0xf56e81fa",
  "0xf851a440",
  "0xfb7311b1"
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.auth' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "guards": [
    {
      "pc": 5487,
      "type": "tx_origin_used"
    }
  ]
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.function_entries' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
[
  {
    "entry_pc": null,
    "selector": "0x1e2284ed"
  },
  {
    "entry_pc": 2564862874,
    "selector": "0x4adae0da"
  },
  {
    "entry_pc": 2574779860,
    "selector": "0x98e0b39a"
  },
  {
    "entry_pc": 2725122438,
    "selector": "0x997805d4"
  },
  {
    "entry_pc": 2801506257,
    "selector": "0xa26e1186"
  },
  {
    "entry_pc": 2905467312,
    "selector": "0xa6fb97d1"
  },
  {
    "entry_pc": 3425456484,
    "selector": "0xad2de9b0"
  },
  {
    "entry_pc": 3692238149,
    "selector": "0xcc2c5164"
  },
  {
    "entry_pc": 4117660154,
    "selector": "0xdc131545"
  },
  {
    "entry_pc": 4166100032,
    "selector": "0xf56e81fa"
  },
  {
    "entry_pc": 4218622385,
    "selector": "0xf851a440"
  },
  {
    "entry_pc": 0,
    "selector": "0xfb7311b1"
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
[
  {
    "opcode": "CALL",
    "pc": 1011,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 1274,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 3053,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 3198,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 3627,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 4734,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "STATICCALL",
    "pc": 5426,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "n/a"
  }
]

exec
/bin/bash -lc "jq '.capability_graph | keys' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 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.storage' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "keccak_count": 39,
  "reads": 62,
  "slots": [
    {
      "op": "SLOAD",
      "pc": 845,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1424,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1457,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1489,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1595,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 1678,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1811,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1844,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1960,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 2089,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 2122,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 2237,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 2317,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 2882,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 3961,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 4068,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 4156,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 4189,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 4305,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 4392,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 4491,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 4628,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 4763,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 4976,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 5052,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ],
  "writes": 19
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc<=1011 and .end_pc>=1011)' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "end_pc": 1018,
  "hash": "0xdd8c22d1e5503e0c83b31fa5ca418971a1285a891d81c38b01716cb45ad586a9",
  "opcodes": [
    "JUMPDEST",
    "POP",
    "GAS",
    "CALL",
    "ISZERO",
    "OP_80",
    "ISZERO",
    "PUSH2",
    "JUMPI"
  ],
  "start_pc": 1008
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc<=5487 and .end_pc>=5487)' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "end_pc": 5489,
  "hash": "0x42bfce7772004d1f3a408f9cebc7b30374549ab699747ae55da82bdce66b44b6",
  "opcodes": [
    "SGT",
    "OP_24",
    "OP_B0",
    "STATICCALL",
    "PUSH30",
    "PUSH19",
    "MOD",
    "OP_49",
    "OP_2E",
    "OP_2C",
    "OP_AB",
    "CODESIZE",
    "OP_9B",
    "OP_88",
    "OP_95",
    "ORIGIN",
    "OR",
    "PUSH7"
  ],
  "start_pc": 5423
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions | length' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
12

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions[0]' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "auth": {
    "guards": [
      {
        "pc": 5487,
        "type": "tx_origin_used"
      }
    ]
  },
  "entry_pc": null,
  "selector": "0x1e2284ed",
  "sinks": {
    "call": 6,
    "delegatecall": 0,
    "selfdestruct": 1,
    "staticcall": 1
  },
  "storage": {
    "reads": 62,
    "slots": [
      {
        "op": "SLOAD",
        "pc": 845,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 1424,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 1457,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 1489,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 1595,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
      },
      {
        "op": "SLOAD",
        "pc": 1678,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 1811,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 1844,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 1960,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
      },
      {
        "op": "SLOAD",
        "pc": 2089,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 2122,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 2237,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
      },
      {
        "op": "SLOAD",
        "pc": 2317,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 2882,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 3961,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 4068,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 4156,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 4189,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 4305,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
      },
      {
        "op": "SLOAD",
        "pc": 4392,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 4491,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 4628,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
      },
      {
        "op": "SLOAD",
        "pc": 4763,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      },
      {
        "op": "SLOAD",
        "pc": 4976,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
      },
      {
        "op": "SLOAD",
        "pc": 5052,
        "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      }
    ],
    "writes": 19
  }
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json | head -c 12000" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
[
  {
    "auth": {
      "guards": [
        {
          "pc": 5487,
          "type": "tx_origin_used"
        }
      ]
    },
    "entry_pc": null,
    "selector": "0x1e2284ed",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 1,
      "staticcall": 1
    },
    "storage": {
      "reads": 62,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 845,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1424,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1457,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1489,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1595,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 1678,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1811,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1844,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1960,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 2089,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2122,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2237,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 2317,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2882,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 3961,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4068,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4156,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4189,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4305,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 4392,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4491,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4628,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 4763,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4976,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 5052,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 19
    }
  },
  {
    "auth": {
      "guards": [
        {
          "pc": 5487,
          "type": "tx_origin_used"
        }
      ]
    },
    "entry_pc": 2564862874,
    "selector": "0x4adae0da",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 1,
      "staticcall": 1
    },
    "storage": {
      "reads": 62,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 845,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1424,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1457,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1489,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1595,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 1678,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1811,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1844,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1960,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 2089,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2122,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2237,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 2317,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2882,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 3961,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4068,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4156,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4189,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4305,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 4392,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4491,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4628,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 4763,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4976,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 5052,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 19
    }
  },
  {
    "auth": {
      "guards": [
        {
          "pc": 5487,
          "type": "tx_origin_used"
        }
      ]
    },
    "entry_pc": 2574779860,
    "selector": "0x98e0b39a",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 1,
      "staticcall": 1
    },
    "storage": {
      "reads": 62,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 845,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1424,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1457,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1489,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1595,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 1678,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1811,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1844,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1960,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 2089,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2122,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2237,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 2317,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2882,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 3961,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4068,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4156,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4189,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 4305,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 4392,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAError: writing output failed: Broken pipe

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

exec
/bin/bash -lc "jq '.analysis_run | keys' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
[
  "address",
  "block_number",
  "chain_id",
  "child_links",
  "created_at",
  "id",
  "parent_links",
  "status",
  "updated_at"
]

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

exec
/bin/bash -lc "jq -r '.artifact.runtime_bytecode | \"len=\" + ((length-2)/2|tostring) + \"\\n\" + .[0:120] + \"...\"' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 exited 5 in 0ms:
jq: error (at BYTECODE_BUNDLE.json:12966): Cannot index object with object

exec
/bin/bash -lc "jq '.artifact | {is_proxy, implementation_address, verified_source, compiler_json}' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
{
  "is_proxy": false,
  "implementation_address": null,
  "verified_source": false,
  "compiler_json": {
    "compiler_version": null,
    "etherscan": {
      "contract_name": null,
      "implementation": null,
      "license": "Unknown",
      "proxy": "0",
      "swarm_source": null
    },
    "optimizer_enabled": false,
    "optimizer_runs": 0,
    "proxy_evidence": {
      "status": "not_proxy"
    }
  }
}

exec
/bin/bash -lc "jq '.artifact.runtime_bytecode | type, .' BYTECODE_BUNDLE.json | head -c 2000" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
"object"
{
  "full": "0x6080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631e2284ed81146100be5780634adae0da146100e057806398e0b39a14610107578063997805d4146101b4578063a26e1186146101d4578063a6fb97d114610220578063ad2de9b01461023a578063cc2c51641461025b578063dc131545146102bc578063f56e81fa146102d6578063f851a44014610300578063fb7311b114610331575b600080fd5b6100de600435600160a060020a0360243581169060443516606435610349565b005b3480156100ec57600080fd5b506100f5610535565b60408051918252519081900360200190f35b34801561011357600080fd5b5061012e600160a060020a036004358116906024351661053b565b6040518084815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6100de600435600160a060020a036024358116906044351660643561068a565b6040805160206004803580820135601f81018490048402850184019095528484526100de9436949293602493928401919081908401838280828437509497506109599650505050505050565b6100de600435600160a060020a0360243516604435610b3e565b34801561024657600080fd5b506100f5600160a060020a0360043516610c03565b6040805160206004803580820135601f81018490048402850184019095528484526100de94369492936024939284019190819084018382808284375094975050508335600160a060020a031694505050602082013591604001359050610cad565b6100de600435600160a060020a0360243516604435610f75565b3480156102e257600080fd5b5061012e600160a060020a03600435811690602435166044356112df565b34801561030c57600080fd5b506103156113b9565b60408051600160a060020a039092168252519081900360200190f35b34801561033d57600080fd5b506100f56004356113c8565b60008054600160a060020a03163314801561036f57506a084595161401484a0000008211155b151561037a57600080fd5b600160a060020a038316151561038f57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038516916370a0823191602480830192602092919082Error: writing output failed: Broken pipe

exec
/bin/bash -lc "jq '.artifact.runtime_bytecode | keys' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
[
  "full",
  "head",
  "length",
  "tail",
  "truncated"
]

exec
/bin/bash -lc "jq -r '.artifact.runtime_bytecode.full | \"len=\" + ((length-2)/2|tostring)' BYTECODE_BUNDLE.json" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
len=5496

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops = {i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
ops.update({i:f'DUP{i-0x7f}' for i in range(0x80,0x90)})
ops.update({i:f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
ops.update({i:f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={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:'PREVRANDAO',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'}
ops.update(base)
bytecode=json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full'][2:]
code=bytes.fromhex(bytecode)

def disasm(start,end):
    pc=start
    while pc<end and pc<len(code):
        op=code[pc]
        name=ops.get(op,f'OP_{op:02x}')
        if 0x60 <= op <= 0x7f:
            n=op-0x5f
            data=code[pc+1:pc+1+n]
            print(f'{pc:04x}: {name} 0x{data.hex()}')
            pc += 1+n
        else:
            print(f'{pc:04x}: {name}')
            pc += 1

for start,end in [(0x0,0x120),(0x349,0x430),(0x530,0x620),(0x680,0x760),(0xbe0,0xc90),(0x1260,0x12e0),(0x1500,0x1580)]:
    print('\\n===',hex(start),hex(end),'===')
    disasm(start,end)
PY" in /tmp/codex-c_36tz1k
 succeeded in 0ms:

=== 0x0 0x120 ===
0000: PUSH1 0x80
0002: PUSH1 0x40
0004: MSTORE
0005: PUSH1 0x04
0007: CALLDATASIZE
0008: LT
0009: PUSH2 0x00b9
000c: JUMPI
000d: PUSH4 0xffffffff
0012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0030: PUSH1 0x00
0032: CALLDATALOAD
0033: DIV
0034: AND
0035: PUSH4 0x1e2284ed
003a: DUP2
003b: EQ
003c: PUSH2 0x00be
003f: JUMPI
0040: DUP1
0041: PUSH4 0x4adae0da
0046: EQ
0047: PUSH2 0x00e0
004a: JUMPI
004b: DUP1
004c: PUSH4 0x98e0b39a
0051: EQ
0052: PUSH2 0x0107
0055: JUMPI
0056: DUP1
0057: PUSH4 0x997805d4
005c: EQ
005d: PUSH2 0x01b4
0060: JUMPI
0061: DUP1
0062: PUSH4 0xa26e1186
0067: EQ
0068: PUSH2 0x01d4
006b: JUMPI
006c: DUP1
006d: PUSH4 0xa6fb97d1
0072: EQ
0073: PUSH2 0x0220
0076: JUMPI
0077: DUP1
0078: PUSH4 0xad2de9b0
007d: EQ
007e: PUSH2 0x023a
0081: JUMPI
0082: DUP1
0083: PUSH4 0xcc2c5164
0088: EQ
0089: PUSH2 0x025b
008c: JUMPI
008d: DUP1
008e: PUSH4 0xdc131545
0093: EQ
0094: PUSH2 0x02bc
0097: JUMPI
0098: DUP1
0099: PUSH4 0xf56e81fa
009e: EQ
009f: PUSH2 0x02d6
00a2: JUMPI
00a3: DUP1
00a4: PUSH4 0xf851a440
00a9: EQ
00aa: PUSH2 0x0300
00ad: JUMPI
00ae: DUP1
00af: PUSH4 0xfb7311b1
00b4: EQ
00b5: PUSH2 0x0331
00b8: JUMPI
00b9: JUMPDEST
00ba: PUSH1 0x00
00bc: DUP1
00bd: REVERT
00be: JUMPDEST
00bf: PUSH2 0x00de
00c2: PUSH1 0x04
00c4: CALLDATALOAD
00c5: PUSH1 0x01
00c7: PUSH1 0xa0
00c9: PUSH1 0x02
00cb: EXP
00cc: SUB
00cd: PUSH1 0x24
00cf: CALLDATALOAD
00d0: DUP2
00d1: AND
00d2: SWAP1
00d3: PUSH1 0x44
00d5: CALLDATALOAD
00d6: AND
00d7: PUSH1 0x64
00d9: CALLDATALOAD
00da: PUSH2 0x0349
00dd: JUMP
00de: JUMPDEST
00df: STOP
00e0: JUMPDEST
00e1: CALLVALUE
00e2: DUP1
00e3: ISZERO
00e4: PUSH2 0x00ec
00e7: JUMPI
00e8: PUSH1 0x00
00ea: DUP1
00eb: REVERT
00ec: JUMPDEST
00ed: POP
00ee: PUSH2 0x00f5
00f1: PUSH2 0x0535
00f4: JUMP
00f5: JUMPDEST
00f6: PUSH1 0x40
00f8: DUP1
00f9: MLOAD
00fa: SWAP2
00fb: DUP3
00fc: MSTORE
00fd: MLOAD
00fe: SWAP1
00ff: DUP2
0100: SWAP1
0101: SUB
0102: PUSH1 0x20
0104: ADD
0105: SWAP1
0106: RETURN
0107: JUMPDEST
0108: CALLVALUE
0109: DUP1
010a: ISZERO
010b: PUSH2 0x0113
010e: JUMPI
010f: PUSH1 0x00
0111: DUP1
0112: REVERT
0113: JUMPDEST
0114: POP
0115: PUSH2 0x012e
0118: PUSH1 0x01
011a: PUSH1 0xa0
011c: PUSH1 0x02
011e: EXP
011f: SUB

=== 0x349 0x430 ===
0349: JUMPDEST
034a: PUSH1 0x00
034c: DUP1
034d: SLOAD
034e: PUSH1 0x01
0350: PUSH1 0xa0
0352: PUSH1 0x02
0354: EXP
0355: SUB
0356: AND
0357: CALLER
0358: EQ
0359: DUP1
035a: ISZERO
035b: PUSH2 0x036f
035e: JUMPI
035f: POP
0360: PUSH11 0x084595161401484a000000
036c: DUP3
036d: GT
036e: ISZERO
036f: JUMPDEST
0370: ISZERO
0371: ISZERO
0372: PUSH2 0x037a
0375: JUMPI
0376: PUSH1 0x00
0378: DUP1
0379: REVERT
037a: JUMPDEST
037b: PUSH1 0x01
037d: PUSH1 0xa0
037f: PUSH1 0x02
0381: EXP
0382: SUB
0383: DUP4
0384: AND
0385: ISZERO
0386: ISZERO
0387: PUSH2 0x038f
038a: JUMPI
038b: PUSH1 0x00
038d: DUP1
038e: REVERT
038f: JUMPDEST
0390: PUSH1 0x40
0392: DUP1
0393: MLOAD
0394: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
03b5: DUP2
03b6: MSTORE
03b7: ADDRESS
03b8: PUSH1 0x04
03ba: DUP3
03bb: ADD
03bc: MSTORE
03bd: SWAP1
03be: MLOAD
03bf: PUSH1 0x01
03c1: PUSH1 0xa0
03c3: PUSH1 0x02
03c5: EXP
03c6: SUB
03c7: DUP6
03c8: AND
03c9: SWAP2
03ca: PUSH4 0x70a08231
03cf: SWAP2
03d0: PUSH1 0x24
03d2: DUP1
03d3: DUP4
03d4: ADD
03d5: SWAP3
03d6: PUSH1 0x20
03d8: SWAP3
03d9: SWAP2
03da: SWAP1
03db: DUP3
03dc: SWAP1
03dd: SUB
03de: ADD
03df: DUP2
03e0: PUSH1 0x00
03e2: DUP8
03e3: DUP1
03e4: EXTCODESIZE
03e5: ISZERO
03e6: DUP1
03e7: ISZERO
03e8: PUSH2 0x03f0
03eb: JUMPI
03ec: PUSH1 0x00
03ee: DUP1
03ef: REVERT
03f0: JUMPDEST
03f1: POP
03f2: GAS
03f3: CALL
03f4: ISZERO
03f5: DUP1
03f6: ISZERO
03f7: PUSH2 0x0404
03fa: JUMPI
03fb: RETURNDATASIZE
03fc: PUSH1 0x00
03fe: DUP1
03ff: RETURNDATACOPY
0400: RETURNDATASIZE
0401: PUSH1 0x00
0403: REVERT
0404: JUMPDEST
0405: POP
0406: POP
0407: POP
0408: POP
0409: PUSH1 0x40
040b: MLOAD
040c: RETURNDATASIZE
040d: PUSH1 0x20
040f: DUP2
0410: LT
0411: ISZERO
0412: PUSH2 0x041a
0415: JUMPI
0416: PUSH1 0x00
0418: DUP1
0419: REVERT
041a: JUMPDEST
041b: POP
041c: MLOAD
041d: SWAP1
041e: POP
041f: DUP2
0420: DUP2
0421: LT
0422: ISZERO
0423: PUSH2 0x042b
0426: JUMPI
0427: PUSH1 0x00
0429: DUP1
042a: REVERT
042b: JUMPDEST
042c: PUSH1 0x40
042e: DUP1
042f: MLOAD

=== 0x530 0x620 ===
0530: POP
0531: POP
0532: POP
0533: POP
0534: JUMP
0535: JUMPDEST
0536: ADDRESS
0537: BALANCE
0538: JUMPDEST
0539: SWAP1
053a: JUMP
053b: JUMPDEST
053c: PUSH1 0x01
053e: PUSH1 0xa0
0540: PUSH1 0x02
0542: EXP
0543: SUB
0544: DUP1
0545: DUP4
0546: AND
0547: PUSH1 0x00
0549: SWAP1
054a: DUP2
054b: MSTORE
054c: PUSH1 0x01
054e: PUSH1 0x20
0550: SWAP1
0551: DUP2
0552: MSTORE
0553: PUSH1 0x40
0555: DUP1
0556: DUP4
0557: SHA3
0558: SWAP4
0559: DUP6
055a: AND
055b: DUP4
055c: MSTORE
055d: SWAP3
055e: SWAP1
055f: MSTORE
0560: SWAP1
0561: DUP2
0562: SHA3
0563: DUP1
0564: SLOAD
0565: PUSH1 0x60
0567: SWAP2
0568: DUP4
0569: SWAP2
056a: ISZERO
056b: ISZERO
056c: PUSH2 0x058b
056f: JUMPI
0570: PUSH1 0x40
0572: DUP1
0573: MLOAD
0574: PUSH1 0x20
0576: DUP2
0577: ADD
0578: SWAP1
0579: SWAP2
057a: MSTORE
057b: PUSH1 0x00
057d: DUP1
057e: DUP3
057f: MSTORE
0580: SWAP5
0581: POP
0582: SWAP3
0583: POP
0584: DUP4
0585: SWAP2
0586: POP
0587: PUSH2 0x0682
058a: JUMP
058b: JUMPDEST
058c: DUP1
058d: PUSH1 0x00
058f: DUP2
0590: SLOAD
0591: DUP2
0592: LT
0593: ISZERO
0594: ISZERO
0595: PUSH2 0x059a
0598: JUMPI
0599: INVALID
059a: JUMPDEST
059b: SWAP1
059c: PUSH1 0x00
059e: MSTORE
059f: PUSH1 0x20
05a1: PUSH1 0x00
05a3: SHA3
05a4: SWAP1
05a5: PUSH1 0x03
05a7: MUL
05a8: ADD
05a9: PUSH1 0x00
05ab: ADD
05ac: SLOAD
05ad: DUP2
05ae: PUSH1 0x00
05b0: DUP2
05b1: SLOAD
05b2: DUP2
05b3: LT
05b4: ISZERO
05b5: ISZERO
05b6: PUSH2 0x05bb
05b9: JUMPI
05ba: INVALID
05bb: JUMPDEST
05bc: SWAP1
05bd: PUSH1 0x00
05bf: MSTORE
05c0: PUSH1 0x20
05c2: PUSH1 0x00
05c4: SHA3
05c5: SWAP1
05c6: PUSH1 0x03
05c8: MUL
05c9: ADD
05ca: PUSH1 0x01
05cc: ADD
05cd: DUP3
05ce: PUSH1 0x00
05d0: DUP2
05d1: SLOAD
05d2: DUP2
05d3: LT
05d4: ISZERO
05d5: ISZERO
05d6: PUSH2 0x05db
05d9: JUMPI
05da: INVALID
05db: JUMPDEST
05dc: PUSH1 0x00
05de: SWAP2
05df: DUP3
05e0: MSTORE
05e1: PUSH1 0x20
05e3: SWAP2
05e4: DUP3
05e5: SWAP1
05e6: SHA3
05e7: PUSH1 0x02
05e9: PUSH1 0x03
05eb: SWAP1
05ec: SWAP3
05ed: MUL
05ee: ADD
05ef: DUP2
05f0: ADD
05f1: SLOAD
05f2: DUP4
05f3: SLOAD
05f4: PUSH1 0x40
05f6: DUP1
05f7: MLOAD
05f8: PUSH1 0x1f
05fa: PUSH1 0x00
05fc: NOT
05fd: PUSH2 0x0100
0600: PUSH1 0x01
0602: DUP7
0603: AND
0604: ISZERO
0605: MUL
0606: ADD
0607: SWAP1
0608: SWAP4
0609: AND
060a: SWAP5
060b: SWAP1
060c: SWAP5
060d: DIV
060e: SWAP2
060f: DUP3
0610: ADD
0611: DUP6
0612: SWAP1
0613: DIV
0614: DUP6
0615: MUL
0616: DUP5
0617: ADD
0618: DUP6
0619: ADD
061a: SWAP1
061b: MSTORE
061c: DUP1
061d: DUP4
061e: MSTORE
061f: SWAP1

=== 0x680 0x760 ===
0680: SWAP4
0681: POP
0682: JUMPDEST
0683: POP
0684: SWAP3
0685: POP
0686: SWAP3
0687: POP
0688: SWAP3
0689: JUMP
068a: JUMPDEST
068b: PUSH1 0x00
068d: DUP1
068e: SLOAD
068f: PUSH1 0x01
0691: PUSH1 0xa0
0693: PUSH1 0x02
0695: EXP
0696: SUB
0697: AND
0698: CALLER
0699: EQ
069a: PUSH2 0x06a2
069d: JUMPI
069e: PUSH1 0x00
06a0: DUP1
06a1: REVERT
06a2: JUMPDEST
06a3: POP
06a4: PUSH1 0x01
06a6: PUSH1 0xa0
06a8: PUSH1 0x02
06aa: EXP
06ab: SUB
06ac: DUP1
06ad: DUP4
06ae: AND
06af: PUSH1 0x00
06b1: SWAP1
06b2: DUP2
06b3: MSTORE
06b4: PUSH1 0x01
06b6: PUSH1 0x20
06b8: DUP2
06b9: DUP2
06ba: MSTORE
06bb: PUSH1 0x40
06bd: DUP1
06be: DUP5
06bf: SHA3
06c0: SWAP5
06c1: DUP9
06c2: AND
06c3: DUP5
06c4: MSTORE
06c5: SWAP4
06c6: SWAP1
06c7: MSTORE
06c8: SWAP2
06c9: SWAP1
06ca: SHA3
06cb: DUP1
06cc: SLOAD
06cd: SWAP1
06ce: SWAP2
06cf: EQ
06d0: PUSH2 0x06d8
06d3: JUMPI
06d4: PUSH1 0x00
06d6: DUP1
06d7: REVERT
06d8: JUMPDEST
06d9: DUP2
06da: PUSH1 0x01
06dc: EQ
06dd: ISZERO
06de: PUSH2 0x07f7
06e1: JUMPI
06e2: DUP4
06e3: PUSH1 0x01
06e5: PUSH1 0xa0
06e7: PUSH1 0x02
06e9: EXP
06ea: SUB
06eb: AND
06ec: CALLER
06ed: PUSH1 0x01
06ef: PUSH1 0xa0
06f1: PUSH1 0x02
06f3: EXP
06f4: SUB
06f5: AND
06f6: DUP5
06f7: PUSH1 0x01
06f9: PUSH1 0xa0
06fb: PUSH1 0x02
06fd: EXP
06fe: SUB
06ff: AND
0700: PUSH1 0x00
0702: DUP1
0703: MLOAD
0704: PUSH1 0x20
0706: PUSH2 0x152d
0709: DUP4
070a: CODECOPY
070b: DUP2
070c: MLOAD
070d: SWAP2
070e: MSTORE
070f: DUP5
0710: PUSH1 0x00
0712: DUP2
0713: SLOAD
0714: DUP2
0715: LT
0716: ISZERO
0717: ISZERO
0718: PUSH2 0x071d
071b: JUMPI
071c: INVALID
071d: JUMPDEST
071e: SWAP1
071f: PUSH1 0x00
0721: MSTORE
0722: PUSH1 0x20
0724: PUSH1 0x00
0726: SHA3
0727: SWAP1
0728: PUSH1 0x03
072a: MUL
072b: ADD
072c: PUSH1 0x01
072e: ADD
072f: DUP10
0730: DUP7
0731: PUSH1 0x00
0733: DUP2
0734: SLOAD
0735: DUP2
0736: LT
0737: ISZERO
0738: ISZERO
0739: PUSH2 0x073e
073c: JUMPI
073d: INVALID
073e: JUMPDEST
073f: PUSH1 0x00
0741: SWAP2
0742: DUP3
0743: MSTORE
0744: PUSH1 0x20
0746: SWAP2
0747: DUP3
0748: SWAP1
0749: SHA3
074a: PUSH1 0x03
074c: SWAP1
074d: SWAP2
074e: MUL
074f: ADD
0750: SLOAD
0751: PUSH1 0x40
0753: DUP1
0754: MLOAD
0755: SWAP3
0756: DUP4
0757: ADD
0758: DUP5
0759: SWAP1
075a: MSTORE
075b: DUP3
075c: ADD
075d: DUP2
075e: SWAP1
075f: MSTORE

=== 0xbe0 0xc90 ===
0be0: OP_fc
0be1: MUL
0be2: SWAP1
0be3: DUP5
0be4: SWAP1
0be5: PUSH1 0x00
0be7: DUP2
0be8: DUP2
0be9: DUP2
0bea: DUP6
0beb: DUP9
0bec: DUP9
0bed: CALL
0bee: SWAP4
0bef: POP
0bf0: POP
0bf1: POP
0bf2: POP
0bf3: ISZERO
0bf4: DUP1
0bf5: ISZERO
0bf6: PUSH2 0x052e
0bf9: JUMPI
0bfa: RETURNDATASIZE
0bfb: PUSH1 0x00
0bfd: DUP1
0bfe: RETURNDATACOPY
0bff: RETURNDATASIZE
0c00: PUSH1 0x00
0c02: REVERT
0c03: JUMPDEST
0c04: PUSH1 0x00
0c06: PUSH1 0x01
0c08: PUSH1 0xa0
0c0a: PUSH1 0x02
0c0c: EXP
0c0d: SUB
0c0e: DUP3
0c0f: AND
0c10: ISZERO
0c11: ISZERO
0c12: PUSH2 0x0c1a
0c15: JUMPI
0c16: PUSH1 0x00
0c18: DUP1
0c19: REVERT
0c1a: JUMPDEST
0c1b: PUSH1 0x40
0c1d: DUP1
0c1e: MLOAD
0c1f: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
0c40: DUP2
0c41: MSTORE
0c42: ADDRESS
0c43: PUSH1 0x04
0c45: DUP3
0c46: ADD
0c47: MSTORE
0c48: SWAP1
0c49: MLOAD
0c4a: PUSH1 0x01
0c4c: PUSH1 0xa0
0c4e: PUSH1 0x02
0c50: EXP
0c51: SUB
0c52: DUP5
0c53: AND
0c54: SWAP2
0c55: PUSH4 0x70a08231
0c5a: SWAP2
0c5b: PUSH1 0x24
0c5d: DUP1
0c5e: DUP4
0c5f: ADD
0c60: SWAP3
0c61: PUSH1 0x20
0c63: SWAP3
0c64: SWAP2
0c65: SWAP1
0c66: DUP3
0c67: SWAP1
0c68: SUB
0c69: ADD
0c6a: DUP2
0c6b: PUSH1 0x00
0c6d: DUP8
0c6e: DUP1
0c6f: EXTCODESIZE
0c70: ISZERO
0c71: DUP1
0c72: ISZERO
0c73: PUSH2 0x0c7b
0c76: JUMPI
0c77: PUSH1 0x00
0c79: DUP1
0c7a: REVERT
0c7b: JUMPDEST
0c7c: POP
0c7d: GAS
0c7e: CALL
0c7f: ISZERO
0c80: DUP1
0c81: ISZERO
0c82: PUSH2 0x0c8f
0c85: JUMPI
0c86: RETURNDATASIZE
0c87: PUSH1 0x00
0c89: DUP1
0c8a: RETURNDATACOPY
0c8b: RETURNDATASIZE
0c8c: PUSH1 0x00
0c8e: REVERT
0c8f: JUMPDEST

=== 0x1260 0x12e0 ===
1260: BLOCKHASH
1261: MLOAD
1262: PUSH1 0x01
1264: PUSH1 0xa0
1266: PUSH1 0x02
1268: EXP
1269: SUB
126a: DUP6
126b: AND
126c: SWAP1
126d: DUP3
126e: ISZERO
126f: PUSH2 0x08fc
1272: MUL
1273: SWAP1
1274: DUP4
1275: SWAP1
1276: PUSH1 0x00
1278: DUP2
1279: DUP2
127a: DUP2
127b: DUP6
127c: DUP9
127d: DUP9
127e: CALL
127f: SWAP4
1280: POP
1281: POP
1282: POP
1283: POP
1284: ISZERO
1285: DUP1
1286: ISZERO
1287: PUSH2 0x1294
128a: JUMPI
128b: RETURNDATASIZE
128c: PUSH1 0x00
128e: DUP1
128f: RETURNDATACOPY
1290: RETURNDATASIZE
1291: PUSH1 0x00
1293: REVERT
1294: JUMPDEST
1295: POP
1296: JUMPDEST
1297: DUP2
1298: PUSH1 0x00
129a: DUP2
129b: SLOAD
129c: DUP2
129d: LT
129e: ISZERO
129f: ISZERO
12a0: PUSH2 0x12a5
12a3: JUMPI
12a4: INVALID
12a5: JUMPDEST
12a6: PUSH1 0x00
12a8: SWAP2
12a9: DUP3
12aa: MSTORE
12ab: PUSH1 0x20
12ad: DUP3
12ae: SHA3
12af: PUSH1 0x03
12b1: SWAP1
12b2: SWAP2
12b3: MUL
12b4: ADD
12b5: DUP2
12b6: DUP2
12b7: SSTORE
12b8: SWAP1
12b9: PUSH2 0x12c5
12bc: PUSH1 0x01
12be: DUP4
12bf: ADD
12c0: DUP3
12c1: PUSH2 0x13ec
12c4: JUMP
12c5: JUMPDEST
12c6: POP
12c7: PUSH1 0x00
12c9: PUSH1 0x02
12cb: SWAP2
12cc: SWAP1
12cd: SWAP2
12ce: ADD
12cf: SSTORE
12d0: DUP2
12d1: SLOAD
12d2: PUSH2 0x0951
12d5: DUP4
12d6: PUSH1 0x00
12d8: NOT
12d9: DUP4
12da: ADD
12db: PUSH2 0x1433
12de: JUMP
12df: JUMPDEST

=== 0x1500 0x1580 ===
1500: SWAP2
1501: SWAP1
1502: JUMPDEST
1503: DUP1
1504: DUP3
1505: GT
1506: ISZERO
1507: PUSH2 0x14de
150a: JUMPI
150b: PUSH1 0x00
150d: DUP1
150e: DUP3
150f: SSTORE
1510: PUSH2 0x151c
1513: PUSH1 0x01
1515: DUP4
1516: ADD
1517: DUP3
1518: PUSH2 0x13ec
151b: JUMP
151c: JUMPDEST
151d: POP
151e: PUSH1 0x00
1520: PUSH1 0x02
1522: DUP3
1523: ADD
1524: SSTORE
1525: PUSH1 0x03
1527: ADD
1528: PUSH2 0x1502
152b: JUMP
152c: STOP
152d: DUP12
152e: SELFDESTRUCT
152f: SGT
1530: OP_24
1531: OP_b0
1532: STATICCALL
1533: PUSH30 0x97bc7fbd7f353ac82329a90efae36ccaef984e02f333bcd484a165627a7a
1552: PUSH19 0x3058201cbc4d051d0268c805de5073f954feea
1566: MOD
1567: OP_49
1568: OP_2e
1569: OP_2c
156a: OP_ab
156b: CODESIZE
156c: SWAP12
156d: DUP9
156e: SWAP6
156f: ORIGIN
1570: OR
1571: PUSH7 0x3ac489510029

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
ops.update({i:f'DUP{i-0x7f}' for i in range(0x80,0x90)})
ops.update({i:f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
ops.update({i:f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={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:'PREVRANDAO',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'}
ops.update(base)
code=bytes.fromhex(json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full'][2:])

def disasm(center, before=40, after=80):
    start=max(0, center-before)
    end=min(len(code), center+after)
    pc=start
    while pc<end:
        op=code[pc]
        name=ops.get(op,f'OP_{op:02x}')
        marker='>>' if pc==center else '  '
        if 0x60 <= op <= 0x7f:
            n=op-0x5f
            data=code[pc+1:pc+1+n]
            print(f'{marker} {pc:04x}: {name} 0x{data.hex()}')
            pc += 1+n
        else:
            print(f'{marker} {pc:04x}: {name}')
            pc += 1

for c in [0x4fa,0xbed,0xc7e,0xe2b,0x127e]:
    print('\\n=== around',hex(c),'===')
    disasm(c, before=80, after=120)
PY" in /tmp/codex-c_36tz1k
 succeeded in 0ms:

=== around 0x4fa ===
   04aa: STOP
   04ab: STOP
   04ac: STOP
   04ad: STOP
   04ae: STOP
   04af: STOP
   04b0: STOP
   04b1: STOP
   04b2: STOP
   04b3: STOP
   04b4: STOP
   04b5: MUL
   04b6: DUP2
   04b7: MSTORE
   04b8: PUSH1 0x04
   04ba: ADD
   04bb: DUP1
   04bc: DUP4
   04bd: PUSH1 0x01
   04bf: PUSH1 0xa0
   04c1: PUSH1 0x02
   04c3: EXP
   04c4: SUB
   04c5: AND
   04c6: PUSH1 0x01
   04c8: PUSH1 0xa0
   04ca: PUSH1 0x02
   04cc: EXP
   04cd: SUB
   04ce: AND
   04cf: DUP2
   04d0: MSTORE
   04d1: PUSH1 0x20
   04d3: ADD
   04d4: DUP3
   04d5: DUP2
   04d6: MSTORE
   04d7: PUSH1 0x20
   04d9: ADD
   04da: SWAP3
   04db: POP
   04dc: POP
   04dd: POP
   04de: PUSH1 0x20
   04e0: PUSH1 0x40
   04e2: MLOAD
   04e3: DUP1
   04e4: DUP4
   04e5: SUB
   04e6: DUP2
   04e7: PUSH1 0x00
   04e9: DUP8
   04ea: DUP1
   04eb: EXTCODESIZE
   04ec: ISZERO
   04ed: DUP1
   04ee: ISZERO
   04ef: PUSH2 0x04f7
   04f2: JUMPI
   04f3: PUSH1 0x00
   04f5: DUP1
   04f6: REVERT
   04f7: JUMPDEST
   04f8: POP
   04f9: GAS
>> 04fa: CALL
   04fb: ISZERO
   04fc: DUP1
   04fd: ISZERO
   04fe: PUSH2 0x050b
   0501: JUMPI
   0502: RETURNDATASIZE
   0503: PUSH1 0x00
   0505: DUP1
   0506: RETURNDATACOPY
   0507: RETURNDATASIZE
   0508: PUSH1 0x00
   050a: REVERT
   050b: JUMPDEST
   050c: POP
   050d: POP
   050e: POP
   050f: POP
   0510: PUSH1 0x40
   0512: MLOAD
   0513: RETURNDATASIZE
   0514: PUSH1 0x20
   0516: DUP2
   0517: LT
   0518: ISZERO
   0519: PUSH2 0x0521
   051c: JUMPI
   051d: PUSH1 0x00
   051f: DUP1
   0520: REVERT
   0521: JUMPDEST
   0522: POP
   0523: MLOAD
   0524: ISZERO
   0525: ISZERO
   0526: PUSH2 0x052e
   0529: JUMPI
   052a: PUSH1 0x00
   052c: DUP1
   052d: REVERT
   052e: JUMPDEST
   052f: POP
   0530: POP
   0531: POP
   0532: POP
   0533: POP
   0534: JUMP
   0535: JUMPDEST
   0536: ADDRESS
   0537: BALANCE
   0538: JUMPDEST
   0539: SWAP1
   053a: JUMP
   053b: JUMPDEST
   053c: PUSH1 0x01
   053e: PUSH1 0xa0
   0540: PUSH1 0x02
   0542: EXP
   0543: SUB
   0544: DUP1
   0545: DUP4
   0546: AND
   0547: PUSH1 0x00
   0549: SWAP1
   054a: DUP2
   054b: MSTORE
   054c: PUSH1 0x01
   054e: PUSH1 0x20
   0550: SWAP1
   0551: DUP2
   0552: MSTORE
   0553: PUSH1 0x40
   0555: DUP1
   0556: DUP4
   0557: SHA3
   0558: SWAP4
   0559: DUP6
   055a: AND
   055b: DUP4
   055c: MSTORE
   055d: SWAP3
   055e: SWAP1
   055f: MSTORE
   0560: SWAP1
   0561: DUP2
   0562: SHA3
   0563: DUP1
   0564: SLOAD
   0565: PUSH1 0x60
   0567: SWAP2
   0568: DUP4
   0569: SWAP2
   056a: ISZERO
   056b: ISZERO
   056c: PUSH2 0x058b
   056f: JUMPI
   0570: PUSH1 0x40

=== around 0xbed ===
   0b9d: SUB
   0b9e: DUP6
   0b9f: AND
   0ba0: SWAP2
   0ba1: PUSH1 0x00
   0ba3: SWAP2
   0ba4: PUSH32 0x83fa319e3dcab86af4165864bb9e9e884168247533a1e4abf5520b5f0321a0fe
   0bc5: SWAP2
   0bc6: DUP2
   0bc7: SWAP1
   0bc8: SUB
   0bc9: PUSH1 0x60
   0bcb: ADD
   0bcc: SWAP1
   0bcd: LOG3
   0bce: PUSH1 0x40
   0bd0: MLOAD
   0bd1: PUSH1 0x01
   0bd3: PUSH1 0xa0
   0bd5: PUSH1 0x02
   0bd7: EXP
   0bd8: SUB
   0bd9: DUP5
   0bda: AND
   0bdb: SWAP1
   0bdc: DUP4
   0bdd: ISZERO
   0bde: PUSH2 0x08fc
   0be1: MUL
   0be2: SWAP1
   0be3: DUP5
   0be4: SWAP1
   0be5: PUSH1 0x00
   0be7: DUP2
   0be8: DUP2
   0be9: DUP2
   0bea: DUP6
   0beb: DUP9
   0bec: DUP9
>> 0bed: CALL
   0bee: SWAP4
   0bef: POP
   0bf0: POP
   0bf1: POP
   0bf2: POP
   0bf3: ISZERO
   0bf4: DUP1
   0bf5: ISZERO
   0bf6: PUSH2 0x052e
   0bf9: JUMPI
   0bfa: RETURNDATASIZE
   0bfb: PUSH1 0x00
   0bfd: DUP1
   0bfe: RETURNDATACOPY
   0bff: RETURNDATASIZE
   0c00: PUSH1 0x00
   0c02: REVERT
   0c03: JUMPDEST
   0c04: PUSH1 0x00
   0c06: PUSH1 0x01
   0c08: PUSH1 0xa0
   0c0a: PUSH1 0x02
   0c0c: EXP
   0c0d: SUB
   0c0e: DUP3
   0c0f: AND
   0c10: ISZERO
   0c11: ISZERO
   0c12: PUSH2 0x0c1a
   0c15: JUMPI
   0c16: PUSH1 0x00
   0c18: DUP1
   0c19: REVERT
   0c1a: JUMPDEST
   0c1b: PUSH1 0x40
   0c1d: DUP1
   0c1e: MLOAD
   0c1f: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
   0c40: DUP2
   0c41: MSTORE
   0c42: ADDRESS
   0c43: PUSH1 0x04
   0c45: DUP3
   0c46: ADD
   0c47: MSTORE
   0c48: SWAP1
   0c49: MLOAD
   0c4a: PUSH1 0x01
   0c4c: PUSH1 0xa0
   0c4e: PUSH1 0x02
   0c50: EXP
   0c51: SUB
   0c52: DUP5
   0c53: AND
   0c54: SWAP2
   0c55: PUSH4 0x70a08231
   0c5a: SWAP2
   0c5b: PUSH1 0x24
   0c5d: DUP1
   0c5e: DUP4
   0c5f: ADD
   0c60: SWAP3
   0c61: PUSH1 0x20
   0c63: SWAP3
   0c64: SWAP2

=== around 0xc7e ===
   0c2e: STOP
   0c2f: STOP
   0c30: STOP
   0c31: STOP
   0c32: STOP
   0c33: STOP
   0c34: STOP
   0c35: STOP
   0c36: STOP
   0c37: STOP
   0c38: STOP
   0c39: STOP
   0c3a: STOP
   0c3b: STOP
   0c3c: STOP
   0c3d: STOP
   0c3e: STOP
   0c3f: STOP
   0c40: DUP2
   0c41: MSTORE
   0c42: ADDRESS
   0c43: PUSH1 0x04
   0c45: DUP3
   0c46: ADD
   0c47: MSTORE
   0c48: SWAP1
   0c49: MLOAD
   0c4a: PUSH1 0x01
   0c4c: PUSH1 0xa0
   0c4e: PUSH1 0x02
   0c50: EXP
   0c51: SUB
   0c52: DUP5
   0c53: AND
   0c54: SWAP2
   0c55: PUSH4 0x70a08231
   0c5a: SWAP2
   0c5b: PUSH1 0x24
   0c5d: DUP1
   0c5e: DUP4
   0c5f: ADD
   0c60: SWAP3
   0c61: PUSH1 0x20
   0c63: SWAP3
   0c64: SWAP2
   0c65: SWAP1
   0c66: DUP3
   0c67: SWAP1
   0c68: SUB
   0c69: ADD
   0c6a: DUP2
   0c6b: PUSH1 0x00
   0c6d: DUP8
   0c6e: DUP1
   0c6f: EXTCODESIZE
   0c70: ISZERO
   0c71: DUP1
   0c72: ISZERO
   0c73: PUSH2 0x0c7b
   0c76: JUMPI
   0c77: PUSH1 0x00
   0c79: DUP1
   0c7a: REVERT
   0c7b: JUMPDEST
   0c7c: POP
   0c7d: GAS
>> 0c7e: CALL
   0c7f: ISZERO
   0c80: DUP1
   0c81: ISZERO
   0c82: PUSH2 0x0c8f
   0c85: JUMPI
   0c86: RETURNDATASIZE
   0c87: PUSH1 0x00
   0c89: DUP1
   0c8a: RETURNDATACOPY
   0c8b: RETURNDATASIZE
   0c8c: PUSH1 0x00
   0c8e: REVERT
   0c8f: JUMPDEST
   0c90: POP
   0c91: POP
   0c92: POP
   0c93: POP
   0c94: PUSH1 0x40
   0c96: MLOAD
   0c97: RETURNDATASIZE
   0c98: PUSH1 0x20
   0c9a: DUP2
   0c9b: LT
   0c9c: ISZERO
   0c9d: PUSH2 0x0ca5
   0ca0: JUMPI
   0ca1: PUSH1 0x00
   0ca3: DUP1
   0ca4: REVERT
   0ca5: JUMPDEST
   0ca6: POP
   0ca7: MLOAD
   0ca8: SWAP3
   0ca9: SWAP2
   0caa: POP
   0cab: POP
   0cac: JUMP
   0cad: JUMPDEST
   0cae: PUSH1 0x00
   0cb0: DUP1
   0cb1: DUP1
   0cb2: PUSH1 0x01
   0cb4: PUSH1 0xa0
   0cb6: PUSH1 0x02
   0cb8: EXP
   0cb9: SUB
   0cba: DUP7
   0cbb: AND
   0cbc: ISZERO
   0cbd: ISZERO
   0cbe: PUSH2 0x0cc6
   0cc1: JUMPI
   0cc2: PUSH1 0x00
   0cc4: DUP1
   0cc5: REVERT
   0cc6: JUMPDEST
   0cc7: DUP7
   0cc8: PUSH1 0x00
   0cca: DUP2
   0ccb: MLOAD
   0ccc: DUP2
   0ccd: LT
   0cce: ISZERO
   0ccf: ISZERO
   0cd0: PUSH2 0x0cd5
   0cd3: JUMPI
   0cd4: INVALID
   0cd5: JUMPDEST
   0cd6: PUSH1 0x20
   0cd8: SWAP2
   0cd9: ADD
   0cda: ADD
   0cdb: MLOAD
   0cdc: PUSH1 0xf8
   0cde: PUSH1 0x02
   0ce0: EXP
   0ce1: SWAP1
   0ce2: DUP2
   0ce3: SWAP1
   0ce4: DIV
   0ce5: MUL
   0ce6: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000

=== around 0xe2b ===
   0ddb: STOP
   0ddc: STOP
   0ddd: STOP
   0dde: STOP
   0ddf: STOP
   0de0: DUP2
   0de1: MSTORE
   0de2: CALLER
   0de3: PUSH1 0x04
   0de5: DUP3
   0de6: ADD
   0de7: MSTORE
   0de8: ADDRESS
   0de9: PUSH1 0x24
   0deb: DUP3
   0dec: ADD
   0ded: MSTORE
   0dee: PUSH1 0x44
   0df0: DUP2
   0df1: ADD
   0df2: DUP8
   0df3: SWAP1
   0df4: MSTORE
   0df5: SWAP1
   0df6: MLOAD
   0df7: PUSH1 0x01
   0df9: PUSH1 0xa0
   0dfb: PUSH1 0x02
   0dfd: EXP
   0dfe: SUB
   0dff: DUP9
   0e00: AND
   0e01: SWAP2
   0e02: PUSH4 0x23b872dd
   0e07: SWAP2
   0e08: PUSH1 0x64
   0e0a: DUP1
   0e0b: DUP4
   0e0c: ADD
   0e0d: SWAP3
   0e0e: PUSH1 0x20
   0e10: SWAP3
   0e11: SWAP2
   0e12: SWAP1
   0e13: DUP3
   0e14: SWAP1
   0e15: SUB
   0e16: ADD
   0e17: DUP2
   0e18: PUSH1 0x00
   0e1a: DUP8
   0e1b: DUP1
   0e1c: EXTCODESIZE
   0e1d: ISZERO
   0e1e: DUP1
   0e1f: ISZERO
   0e20: PUSH2 0x0e28
   0e23: JUMPI
   0e24: PUSH1 0x00
   0e26: DUP1
   0e27: REVERT
   0e28: JUMPDEST
   0e29: POP
   0e2a: GAS
>> 0e2b: CALL
   0e2c: ISZERO
   0e2d: DUP1
   0e2e: ISZERO
   0e2f: PUSH2 0x0e3c
   0e32: JUMPI
   0e33: RETURNDATASIZE
   0e34: PUSH1 0x00
   0e36: DUP1
   0e37: RETURNDATACOPY
   0e38: RETURNDATASIZE
   0e39: PUSH1 0x00
   0e3b: REVERT
   0e3c: JUMPDEST
   0e3d: POP
   0e3e: POP
   0e3f: POP
   0e40: POP
   0e41: PUSH1 0x40
   0e43: MLOAD
   0e44: RETURNDATASIZE
   0e45: PUSH1 0x20
   0e47: DUP2
   0e48: LT
   0e49: ISZERO
   0e4a: PUSH2 0x0e52
   0e4d: JUMPI
   0e4e: PUSH1 0x00
   0e50: DUP1
   0e51: REVERT
   0e52: JUMPDEST
   0e53: POP
   0e54: MLOAD
   0e55: ISZERO
   0e56: ISZERO
   0e57: PUSH2 0x0e5f
   0e5a: JUMPI
   0e5b: PUSH1 0x00
   0e5d: DUP1
   0e5e: REVERT
   0e5f: JUMPDEST
   0e60: PUSH1 0x40
   0e62: DUP1
   0e63: MLOAD
   0e64: PUSH1 0x60
   0e66: DUP2
   0e67: ADD
   0e68: DUP3
   0e69: MSTORE
   0e6a: DUP7
   0e6b: DUP2
   0e6c: MSTORE
   0e6d: PUSH1 0x20
   0e6f: DUP1
   0e70: DUP3
   0e71: ADD
   0e72: DUP11
   0e73: DUP2
   0e74: MSTORE
   0e75: PUSH1 0x00
   0e77: SWAP4
   0e78: DUP4
   0e79: ADD
   0e7a: DUP5
   0e7b: SWAP1
   0e7c: MSTORE
   0e7d: DUP5
   0e7e: SLOAD
   0e7f: PUSH1 0x01
   0e81: DUP2
   0e82: DUP2
   0e83: ADD
   0e84: DUP1
   0e85: DUP9
   0e86: SSTORE
   0e87: DUP8
   0e88: DUP8
   0e89: MSTORE
   0e8a: SWAP6
   0e8b: DUP5
   0e8c: SWAP1
   0e8d: SHA3
   0e8e: DUP6
   0e8f: MLOAD
   0e90: PUSH1 0x03
   0e92: SWAP1
   0e93: SWAP4
   0e94: MUL
   0e95: ADD
   0e96: SWAP2
   0e97: DUP3
   0e98: SSTORE
   0e99: SWAP2
   0e9a: MLOAD
   0e9b: DUP1
   0e9c: MLOAD
   0e9d: SWAP2
   0e9e: SWAP4
   0e9f: PUSH2 0x0ead
   0ea2: SWAP4

=== around 0x127e ===
   122e: SHA3
   122f: SWAP1
   1230: JUMPDEST
   1231: DUP2
   1232: SLOAD
   1233: DUP2
   1234: MSTORE
   1235: SWAP1
   1236: PUSH1 0x01
   1238: ADD
   1239: SWAP1
   123a: PUSH1 0x20
   123c: ADD
   123d: DUP1
   123e: DUP4
   123f: GT
   1240: PUSH2 0x1230
   1243: JUMPI
   1244: DUP3
   1245: SWAP1
   1246: SUB
   1247: PUSH1 0x1f
   1249: AND
   124a: DUP3
   124b: ADD
   124c: SWAP2
   124d: JUMPDEST
   124e: POP
   124f: POP
   1250: SWAP6
   1251: POP
   1252: POP
   1253: POP
   1254: POP
   1255: POP
   1256: POP
   1257: PUSH1 0x40
   1259: MLOAD
   125a: DUP1
   125b: SWAP2
   125c: SUB
   125d: SWAP1
   125e: LOG4
   125f: PUSH1 0x40
   1261: MLOAD
   1262: PUSH1 0x01
   1264: PUSH1 0xa0
   1266: PUSH1 0x02
   1268: EXP
   1269: SUB
   126a: DUP6
   126b: AND
   126c: SWAP1
   126d: DUP3
   126e: ISZERO
   126f: PUSH2 0x08fc
   1272: MUL
   1273: SWAP1
   1274: DUP4
   1275: SWAP1
   1276: PUSH1 0x00
   1278: DUP2
   1279: DUP2
   127a: DUP2
   127b: DUP6
   127c: DUP9
   127d: DUP9
>> 127e: CALL
   127f: SWAP4
   1280: POP
   1281: POP
   1282: POP
   1283: POP
   1284: ISZERO
   1285: DUP1
   1286: ISZERO
   1287: PUSH2 0x1294
   128a: JUMPI
   128b: RETURNDATASIZE
   128c: PUSH1 0x00
   128e: DUP1
   128f: RETURNDATACOPY
   1290: RETURNDATASIZE
   1291: PUSH1 0x00
   1293: REVERT
   1294: JUMPDEST
   1295: POP
   1296: JUMPDEST
   1297: DUP2
   1298: PUSH1 0x00
   129a: DUP2
   129b: SLOAD
   129c: DUP2
   129d: LT
   129e: ISZERO
   129f: ISZERO
   12a0: PUSH2 0x12a5
   12a3: JUMPI
   12a4: INVALID
   12a5: JUMPDEST
   12a6: PUSH1 0x00
   12a8: SWAP2
   12a9: DUP3
   12aa: MSTORE
   12ab: PUSH1 0x20
   12ad: DUP3
   12ae: SHA3
   12af: PUSH1 0x03
   12b1: SWAP1
   12b2: SWAP2
   12b3: MUL
   12b4: ADD
   12b5: DUP2
   12b6: DUP2
   12b7: SSTORE
   12b8: SWAP1
   12b9: PUSH2 0x12c5
   12bc: PUSH1 0x01
   12be: DUP4
   12bf: ADD
   12c0: DUP3
   12c1: PUSH2 0x13ec
   12c4: JUMP
   12c5: JUMPDEST
   12c6: POP
   12c7: PUSH1 0x00
   12c9: PUSH1 0x02
   12cb: SWAP2
   12cc: SWAP1
   12cd: SWAP2
   12ce: ADD
   12cf: SSTORE
   12d0: DUP2
   12d1: SLOAD
   12d2: PUSH2 0x0951
   12d5: DUP4
   12d6: PUSH1 0x00
   12d8: NOT
   12d9: DUP4
   12da: ADD
   12db: PUSH2 0x1433
   12de: JUMP
   12df: JUMPDEST
   12e0: PUSH1 0x01
   12e2: PUSH1 0x20
   12e4: MSTORE
   12e5: DUP3
   12e6: PUSH1 0x00
   12e8: MSTORE
   12e9: PUSH1 0x40
   12eb: PUSH1 0x00
   12ed: SHA3
   12ee: PUSH1 0x20
   12f0: MSTORE
   12f1: DUP2
   12f2: PUSH1 0x00
   12f4: MSTORE
   12f5: PUSH1 0x40

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
ops.update({i:f'DUP{i-0x7f}' for i in range(0x80,0x90)})
ops.update({i:f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
ops.update({i:f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={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:'PREVRANDAO',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'}
ops.update(base)
code=bytes.fromhex(json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full'][2:])
start,end=0x430,0x530
pc=start
while pc<end:
    op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
    if 0x60<=op<=0x7f:
        n=op-0x5f; data=code[pc+1:pc+1+n]
        print(f'{pc:04x}: {name} 0x{data.hex()}')
        pc+=1+n
    else:
        print(f'{pc:04x}: {name}')
        pc+=1
PY" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
0430: DUP7
0431: DUP2
0432: MSTORE
0433: PUSH1 0x20
0435: DUP2
0436: ADD
0437: DUP5
0438: SWAP1
0439: MSTORE
043a: DUP1
043b: DUP3
043c: ADD
043d: DUP4
043e: SWAP1
043f: MSTORE
0440: SWAP1
0441: MLOAD
0442: PUSH1 0x01
0444: PUSH1 0xa0
0446: PUSH1 0x02
0448: EXP
0449: SUB
044a: DUP1
044b: DUP8
044c: AND
044d: SWAP3
044e: SWAP1
044f: DUP7
0450: AND
0451: SWAP2
0452: PUSH32 0x83fa319e3dcab86af4165864bb9e9e884168247533a1e4abf5520b5f0321a0fe
0473: SWAP2
0474: DUP2
0475: SWAP1
0476: SUB
0477: PUSH1 0x60
0479: ADD
047a: SWAP1
047b: LOG3
047c: DUP3
047d: PUSH1 0x01
047f: PUSH1 0xa0
0481: PUSH1 0x02
0483: EXP
0484: SUB
0485: AND
0486: PUSH4 0xa9059cbb
048b: DUP6
048c: DUP5
048d: PUSH1 0x40
048f: MLOAD
0490: DUP4
0491: PUSH4 0xffffffff
0496: AND
0497: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
04b5: MUL
04b6: DUP2
04b7: MSTORE
04b8: PUSH1 0x04
04ba: ADD
04bb: DUP1
04bc: DUP4
04bd: PUSH1 0x01
04bf: PUSH1 0xa0
04c1: PUSH1 0x02
04c3: EXP
04c4: SUB
04c5: AND
04c6: PUSH1 0x01
04c8: PUSH1 0xa0
04ca: PUSH1 0x02
04cc: EXP
04cd: SUB
04ce: AND
04cf: DUP2
04d0: MSTORE
04d1: PUSH1 0x20
04d3: ADD
04d4: DUP3
04d5: DUP2
04d6: MSTORE
04d7: PUSH1 0x20
04d9: ADD
04da: SWAP3
04db: POP
04dc: POP
04dd: POP
04de: PUSH1 0x20
04e0: PUSH1 0x40
04e2: MLOAD
04e3: DUP1
04e4: DUP4
04e5: SUB
04e6: DUP2
04e7: PUSH1 0x00
04e9: DUP8
04ea: DUP1
04eb: EXTCODESIZE
04ec: ISZERO
04ed: DUP1
04ee: ISZERO
04ef: PUSH2 0x04f7
04f2: JUMPI
04f3: PUSH1 0x00
04f5: DUP1
04f6: REVERT
04f7: JUMPDEST
04f8: POP
04f9: GAS
04fa: CALL
04fb: ISZERO
04fc: DUP1
04fd: ISZERO
04fe: PUSH2 0x050b
0501: JUMPI
0502: RETURNDATASIZE
0503: PUSH1 0x00
0505: DUP1
0506: RETURNDATACOPY
0507: RETURNDATASIZE
0508: PUSH1 0x00
050a: REVERT
050b: JUMPDEST
050c: POP
050d: POP
050e: POP
050f: POP
0510: PUSH1 0x40
0512: MLOAD
0513: RETURNDATASIZE
0514: PUSH1 0x20
0516: DUP2
0517: LT
0518: ISZERO
0519: PUSH2 0x0521
051c: JUMPI
051d: PUSH1 0x00
051f: DUP1
0520: REVERT
0521: JUMPDEST
0522: POP
0523: MLOAD
0524: ISZERO
0525: ISZERO
0526: PUSH2 0x052e
0529: JUMPI
052a: PUSH1 0x00
052c: DUP1
052d: REVERT
052e: JUMPDEST
052f: POP

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
ops.update({i:f'DUP{i-0x7f}' for i in range(0x80,0x90)})
ops.update({i:f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
ops.update({i:f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={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:'PREVRANDAO',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'}
ops.update(base)
code=bytes.fromhex(json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full'][2:])
for start,end in [(0x13b0,0x1455),(0xf75,0x10a0)]:
    print('\\n===',hex(start),hex(end),'===')
    pc=start
    while pc<end:
        op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
        if 0x60<=op<=0x7f:
            n=op-0x5f; data=code[pc+1:pc+1+n]
            print(f'{pc:04x}: {name} 0x{data.hex()}')
            pc+=1+n
        else:
            print(f'{pc:04x}: {name}')
            pc+=1
PY" in /tmp/codex-c_36tz1k
 succeeded in 0ms:

=== 0x13b0 0x1455 ===
13b0: DUP1
13b1: PUSH1 0x02
13b3: ADD
13b4: SLOAD
13b5: SWAP1
13b6: POP
13b7: DUP4
13b8: JUMP
13b9: JUMPDEST
13ba: PUSH1 0x00
13bc: SLOAD
13bd: PUSH1 0x01
13bf: PUSH1 0xa0
13c1: PUSH1 0x02
13c3: EXP
13c4: SUB
13c5: AND
13c6: DUP2
13c7: JUMP
13c8: JUMPDEST
13c9: PUSH1 0x00
13cb: SWAP1
13cc: DUP2
13cd: MSTORE
13ce: PUSH1 0x02
13d0: PUSH1 0x20
13d2: MSTORE
13d3: PUSH1 0x40
13d5: SWAP1
13d6: SHA3
13d7: SLOAD
13d8: SWAP1
13d9: JUMP
13da: JUMPDEST
13db: PUSH1 0x00
13dd: DUP3
13de: DUP3
13df: GT
13e0: ISZERO
13e1: PUSH2 0x13e6
13e4: JUMPI
13e5: INVALID
13e6: JUMPDEST
13e7: POP
13e8: SWAP1
13e9: SUB
13ea: SWAP1
13eb: JUMP
13ec: JUMPDEST
13ed: POP
13ee: DUP1
13ef: SLOAD
13f0: PUSH1 0x01
13f2: DUP2
13f3: PUSH1 0x01
13f5: AND
13f6: ISZERO
13f7: PUSH2 0x0100
13fa: MUL
13fb: SUB
13fc: AND
13fd: PUSH1 0x02
13ff: SWAP1
1400: DIV
1401: PUSH1 0x00
1403: DUP3
1404: SSTORE
1405: DUP1
1406: PUSH1 0x1f
1408: LT
1409: PUSH2 0x1412
140c: JUMPI
140d: POP
140e: PUSH2 0x1430
1411: JUMP
1412: JUMPDEST
1413: PUSH1 0x1f
1415: ADD
1416: PUSH1 0x20
1418: SWAP1
1419: DIV
141a: SWAP1
141b: PUSH1 0x00
141d: MSTORE
141e: PUSH1 0x20
1420: PUSH1 0x00
1422: SHA3
1423: SWAP1
1424: DUP2
1425: ADD
1426: SWAP1
1427: PUSH2 0x1430
142a: SWAP2
142b: SWAP1
142c: PUSH2 0x14e2
142f: JUMP
1430: JUMPDEST
1431: POP
1432: JUMP
1433: JUMPDEST
1434: DUP2
1435: SLOAD
1436: DUP2
1437: DUP4
1438: SSTORE
1439: DUP2
143a: DUP2
143b: GT
143c: ISZERO
143d: PUSH2 0x145f
1440: JUMPI
1441: PUSH1 0x03
1443: MUL
1444: DUP2
1445: PUSH1 0x03
1447: MUL
1448: DUP4
1449: PUSH1 0x00
144b: MSTORE
144c: PUSH1 0x20
144e: PUSH1 0x00
1450: SHA3
1451: SWAP2
1452: DUP3
1453: ADD
1454: SWAP2

=== 0xf75 0x10a0 ===
0f75: JUMPDEST
0f76: PUSH1 0x00
0f78: DUP1
0f79: SLOAD
0f7a: DUP2
0f7b: SWAP1
0f7c: PUSH1 0x01
0f7e: PUSH1 0xa0
0f80: PUSH1 0x02
0f82: EXP
0f83: SUB
0f84: AND
0f85: CALLER
0f86: EQ
0f87: PUSH2 0x0f8f
0f8a: JUMPI
0f8b: PUSH1 0x00
0f8d: DUP1
0f8e: REVERT
0f8f: JUMPDEST
0f90: PUSH1 0x01
0f92: PUSH1 0xa0
0f94: PUSH1 0x02
0f96: EXP
0f97: SUB
0f98: DUP5
0f99: AND
0f9a: PUSH1 0x00
0f9c: SWAP1
0f9d: DUP2
0f9e: MSTORE
0f9f: PUSH32 0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49
0fc0: PUSH1 0x20
0fc2: MSTORE
0fc3: PUSH1 0x40
0fc5: SWAP1
0fc6: SHA3
0fc7: DUP1
0fc8: SLOAD
0fc9: SWAP1
0fca: SWAP3
0fcb: POP
0fcc: PUSH1 0x01
0fce: EQ
0fcf: PUSH2 0x0fd7
0fd2: JUMPI
0fd3: PUSH1 0x00
0fd5: DUP1
0fd6: REVERT
0fd7: JUMPDEST
0fd8: PUSH7 0x038d7ea4c68000
0fe0: DUP3
0fe1: PUSH1 0x00
0fe3: DUP2
0fe4: SLOAD
0fe5: DUP2
0fe6: LT
0fe7: ISZERO
0fe8: ISZERO
0fe9: PUSH2 0x0fee
0fec: JUMPI
0fed: INVALID
0fee: JUMPDEST
0fef: PUSH1 0x00
0ff1: SWAP2
0ff2: DUP3
0ff3: MSTORE
0ff4: PUSH1 0x20
0ff6: SWAP1
0ff7: SWAP2
0ff8: SHA3
0ff9: PUSH1 0x03
0ffb: SWAP1
0ffc: SWAP2
0ffd: MUL
0ffe: ADD
0fff: SLOAD
1000: GT
1001: PUSH2 0x1009
1004: JUMPI
1005: PUSH1 0x00
1007: DUP1
1008: REVERT
1009: JUMPDEST
100a: DUP3
100b: PUSH1 0x01
100d: EQ
100e: ISZERO
100f: PUSH2 0x1120
1012: JUMPI
1013: DUP4
1014: PUSH1 0x01
1016: PUSH1 0xa0
1018: PUSH1 0x02
101a: EXP
101b: SUB
101c: AND
101d: CALLER
101e: PUSH1 0x01
1020: PUSH1 0xa0
1022: PUSH1 0x02
1024: EXP
1025: SUB
1026: AND
1027: PUSH1 0x00
1029: PUSH1 0x00
102b: DUP1
102c: MLOAD
102d: PUSH1 0x20
102f: PUSH2 0x152d
1032: DUP4
1033: CODECOPY
1034: DUP2
1035: MLOAD
1036: SWAP2
1037: MSTORE
1038: DUP6
1039: PUSH1 0x00
103b: DUP2
103c: SLOAD
103d: DUP2
103e: LT
103f: ISZERO
1040: ISZERO
1041: PUSH2 0x1046
1044: JUMPI
1045: INVALID
1046: JUMPDEST
1047: SWAP1
1048: PUSH1 0x00
104a: MSTORE
104b: PUSH1 0x20
104d: PUSH1 0x00
104f: SHA3
1050: SWAP1
1051: PUSH1 0x03
1053: MUL
1054: ADD
1055: PUSH1 0x01
1057: ADD
1058: DUP10
1059: DUP8
105a: PUSH1 0x00
105c: DUP2
105d: SLOAD
105e: DUP2
105f: LT
1060: ISZERO
1061: ISZERO
1062: PUSH2 0x1067
1065: JUMPI
1066: INVALID
1067: JUMPDEST
1068: PUSH1 0x00
106a: SWAP2
106b: DUP3
106c: MSTORE
106d: PUSH1 0x20
106f: SWAP2
1070: DUP3
1071: SWAP1
1072: SHA3
1073: PUSH1 0x03
1075: SWAP1
1076: SWAP2
1077: MUL
1078: ADD
1079: SLOAD
107a: PUSH1 0x40
107c: DUP1
107d: MLOAD
107e: SWAP3
107f: DUP4
1080: ADD
1081: DUP5
1082: SWAP1
1083: MSTORE
1084: DUP3
1085: ADD
1086: DUP2
1087: SWAP1
1088: MSTORE
1089: PUSH1 0x01
108b: PUSH1 0x60
108d: DUP4
108e: ADD
108f: DUP2
1090: SWAP1
1091: MSTORE
1092: PUSH1 0x80
1094: DUP1
1095: DUP5
1096: MSTORE
1097: DUP6
1098: SLOAD
1099: PUSH1 0x02
109b: PUSH2 0x0100
109e: DUP3
109f: DUP6

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
ops.update({i:f'DUP{i-0x7f}' for i in range(0x80,0x90)})
ops.update({i:f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
ops.update({i:f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={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:'PREVRANDAO',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'}
ops.update(base)
code=bytes.fromhex(json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full'][2:])
for start,end in [(0x1100,0x1298),(0xb3e,0xc03)]:
    print('\\n===',hex(start),hex(end),'===')
    pc=start
    while pc<end:
        op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
        if 0x60<=op<=0x7f:
            n=op-0x5f; data=code[pc+1:pc+1+n]
            print(f'{pc:04x}: {name} 0x{data.hex()}')
            pc+=1+n
        else:
            print(f'{pc:04x}: {name}')
            pc+=1
PY" in /tmp/codex-c_36tz1k
 succeeded in 0ms:

=== 0x1100 0x1298 ===
1100: JUMPI
1101: DUP3
1102: SWAP1
1103: SUB
1104: PUSH1 0x1f
1106: AND
1107: DUP3
1108: ADD
1109: SWAP2
110a: JUMPDEST
110b: POP
110c: POP
110d: SWAP6
110e: POP
110f: POP
1110: POP
1111: POP
1112: POP
1113: POP
1114: PUSH1 0x40
1116: MLOAD
1117: DUP1
1118: SWAP2
1119: SUB
111a: SWAP1
111b: LOG4
111c: PUSH2 0x1296
111f: JUMP
1120: JUMPDEST
1121: PUSH2 0x1151
1124: DUP3
1125: PUSH1 0x00
1127: DUP2
1128: SLOAD
1129: DUP2
112a: LT
112b: ISZERO
112c: ISZERO
112d: PUSH2 0x1132
1130: JUMPI
1131: INVALID
1132: JUMPDEST
1133: SWAP1
1134: PUSH1 0x00
1136: MSTORE
1137: PUSH1 0x20
1139: PUSH1 0x00
113b: SHA3
113c: SWAP1
113d: PUSH1 0x03
113f: MUL
1140: ADD
1141: PUSH1 0x00
1143: ADD
1144: SLOAD
1145: PUSH7 0x038d7ea4c68000
114d: PUSH2 0x13da
1150: JUMP
1151: JUMPDEST
1152: SWAP1
1153: POP
1154: ADDRESS
1155: BALANCE
1156: DUP2
1157: GT
1158: ISZERO
1159: PUSH2 0x1161
115c: JUMPI
115d: PUSH1 0x00
115f: DUP1
1160: REVERT
1161: JUMPDEST
1162: DUP4
1163: PUSH1 0x01
1165: PUSH1 0xa0
1167: PUSH1 0x02
1169: EXP
116a: SUB
116b: AND
116c: CALLER
116d: PUSH1 0x01
116f: PUSH1 0xa0
1171: PUSH1 0x02
1173: EXP
1174: SUB
1175: AND
1176: PUSH1 0x00
1178: PUSH1 0x00
117a: DUP1
117b: MLOAD
117c: PUSH1 0x20
117e: PUSH2 0x152d
1181: DUP4
1182: CODECOPY
1183: DUP2
1184: MLOAD
1185: SWAP2
1186: MSTORE
1187: DUP6
1188: PUSH1 0x00
118a: DUP2
118b: SLOAD
118c: DUP2
118d: LT
118e: ISZERO
118f: ISZERO
1190: PUSH2 0x1195
1193: JUMPI
1194: INVALID
1195: JUMPDEST
1196: SWAP1
1197: PUSH1 0x00
1199: MSTORE
119a: PUSH1 0x20
119c: PUSH1 0x00
119e: SHA3
119f: SWAP1
11a0: PUSH1 0x03
11a2: MUL
11a3: ADD
11a4: PUSH1 0x01
11a6: ADD
11a7: DUP10
11a8: DUP7
11a9: PUSH1 0x02
11ab: PUSH1 0x40
11ad: MLOAD
11ae: DUP1
11af: DUP1
11b0: PUSH1 0x20
11b2: ADD
11b3: DUP6
11b4: PUSH1 0x00
11b6: NOT
11b7: AND
11b8: PUSH1 0x00
11ba: NOT
11bb: AND
11bc: DUP2
11bd: MSTORE
11be: PUSH1 0x20
11c0: ADD
11c1: DUP5
11c2: DUP2
11c3: MSTORE
11c4: PUSH1 0x20
11c6: ADD
11c7: DUP4
11c8: DUP2
11c9: MSTORE
11ca: PUSH1 0x20
11cc: ADD
11cd: DUP3
11ce: DUP2
11cf: SUB
11d0: DUP3
11d1: MSTORE
11d2: DUP7
11d3: DUP2
11d4: DUP2
11d5: SLOAD
11d6: PUSH1 0x01
11d8: DUP2
11d9: PUSH1 0x01
11db: AND
11dc: ISZERO
11dd: PUSH2 0x0100
11e0: MUL
11e1: SUB
11e2: AND
11e3: PUSH1 0x02
11e5: SWAP1
11e6: DIV
11e7: DUP2
11e8: MSTORE
11e9: PUSH1 0x20
11eb: ADD
11ec: SWAP2
11ed: POP
11ee: DUP1
11ef: SLOAD
11f0: PUSH1 0x01
11f2: DUP2
11f3: PUSH1 0x01
11f5: AND
11f6: ISZERO
11f7: PUSH2 0x0100
11fa: MUL
11fb: SUB
11fc: AND
11fd: PUSH1 0x02
11ff: SWAP1
1200: DIV
1201: DUP1
1202: ISZERO
1203: PUSH2 0x124d
1206: JUMPI
1207: DUP1
1208: PUSH1 0x1f
120a: LT
120b: PUSH2 0x1222
120e: JUMPI
120f: PUSH2 0x0100
1212: DUP1
1213: DUP4
1214: SLOAD
1215: DIV
1216: MUL
1217: DUP4
1218: MSTORE
1219: SWAP2
121a: PUSH1 0x20
121c: ADD
121d: SWAP2
121e: PUSH2 0x124d
1221: JUMP
1222: JUMPDEST
1223: DUP3
1224: ADD
1225: SWAP2
1226: SWAP1
1227: PUSH1 0x00
1229: MSTORE
122a: PUSH1 0x20
122c: PUSH1 0x00
122e: SHA3
122f: SWAP1
1230: JUMPDEST
1231: DUP2
1232: SLOAD
1233: DUP2
1234: MSTORE
1235: SWAP1
1236: PUSH1 0x01
1238: ADD
1239: SWAP1
123a: PUSH1 0x20
123c: ADD
123d: DUP1
123e: DUP4
123f: GT
1240: PUSH2 0x1230
1243: JUMPI
1244: DUP3
1245: SWAP1
1246: SUB
1247: PUSH1 0x1f
1249: AND
124a: DUP3
124b: ADD
124c: SWAP2
124d: JUMPDEST
124e: POP
124f: POP
1250: SWAP6
1251: POP
1252: POP
1253: POP
1254: POP
1255: POP
1256: POP
1257: PUSH1 0x40
1259: MLOAD
125a: DUP1
125b: SWAP2
125c: SUB
125d: SWAP1
125e: LOG4
125f: PUSH1 0x40
1261: MLOAD
1262: PUSH1 0x01
1264: PUSH1 0xa0
1266: PUSH1 0x02
1268: EXP
1269: SUB
126a: DUP6
126b: AND
126c: SWAP1
126d: DUP3
126e: ISZERO
126f: PUSH2 0x08fc
1272: MUL
1273: SWAP1
1274: DUP4
1275: SWAP1
1276: PUSH1 0x00
1278: DUP2
1279: DUP2
127a: DUP2
127b: DUP6
127c: DUP9
127d: DUP9
127e: CALL
127f: SWAP4
1280: POP
1281: POP
1282: POP
1283: POP
1284: ISZERO
1285: DUP1
1286: ISZERO
1287: PUSH2 0x1294
128a: JUMPI
128b: RETURNDATASIZE
128c: PUSH1 0x00
128e: DUP1
128f: RETURNDATACOPY
1290: RETURNDATASIZE
1291: PUSH1 0x00
1293: REVERT
1294: JUMPDEST
1295: POP
1296: JUMPDEST
1297: DUP2

=== 0xb3e 0xc03 ===
0b3e: JUMPDEST
0b3f: PUSH1 0x00
0b41: DUP1
0b42: SLOAD
0b43: PUSH1 0x01
0b45: PUSH1 0xa0
0b47: PUSH1 0x02
0b49: EXP
0b4a: SUB
0b4b: AND
0b4c: CALLER
0b4d: EQ
0b4e: DUP1
0b4f: ISZERO
0b50: PUSH2 0x0b64
0b53: JUMPI
0b54: POP
0b55: PUSH11 0x084595161401484a000000
0b61: DUP3
0b62: GT
0b63: ISZERO
0b64: JUMPDEST
0b65: ISZERO
0b66: ISZERO
0b67: PUSH2 0x0b6f
0b6a: JUMPI
0b6b: PUSH1 0x00
0b6d: DUP1
0b6e: REVERT
0b6f: JUMPDEST
0b70: POP
0b71: ADDRESS
0b72: BALANCE
0b73: DUP2
0b74: DUP2
0b75: LT
0b76: ISZERO
0b77: PUSH2 0x0b7f
0b7a: JUMPI
0b7b: PUSH1 0x00
0b7d: DUP1
0b7e: REVERT
0b7f: JUMPDEST
0b80: PUSH1 0x40
0b82: DUP1
0b83: MLOAD
0b84: DUP6
0b85: DUP2
0b86: MSTORE
0b87: PUSH1 0x20
0b89: DUP2
0b8a: ADD
0b8b: DUP5
0b8c: SWAP1
0b8d: MSTORE
0b8e: DUP1
0b8f: DUP3
0b90: ADD
0b91: DUP4
0b92: SWAP1
0b93: MSTORE
0b94: SWAP1
0b95: MLOAD
0b96: PUSH1 0x01
0b98: PUSH1 0xa0
0b9a: PUSH1 0x02
0b9c: EXP
0b9d: SUB
0b9e: DUP6
0b9f: AND
0ba0: SWAP2
0ba1: PUSH1 0x00
0ba3: SWAP2
0ba4: PUSH32 0x83fa319e3dcab86af4165864bb9e9e884168247533a1e4abf5520b5f0321a0fe
0bc5: SWAP2
0bc6: DUP2
0bc7: SWAP1
0bc8: SUB
0bc9: PUSH1 0x60
0bcb: ADD
0bcc: SWAP1
0bcd: LOG3
0bce: PUSH1 0x40
0bd0: MLOAD
0bd1: PUSH1 0x01
0bd3: PUSH1 0xa0
0bd5: PUSH1 0x02
0bd7: EXP
0bd8: SUB
0bd9: DUP5
0bda: AND
0bdb: SWAP1
0bdc: DUP4
0bdd: ISZERO
0bde: PUSH2 0x08fc
0be1: MUL
0be2: SWAP1
0be3: DUP5
0be4: SWAP1
0be5: PUSH1 0x00
0be7: DUP2
0be8: DUP2
0be9: DUP2
0bea: DUP6
0beb: DUP9
0bec: DUP9
0bed: CALL
0bee: SWAP4
0bef: POP
0bf0: POP
0bf1: POP
0bf2: POP
0bf3: ISZERO
0bf4: DUP1
0bf5: ISZERO
0bf6: PUSH2 0x052e
0bf9: JUMPI
0bfa: RETURNDATASIZE
0bfb: PUSH1 0x00
0bfd: DUP1
0bfe: RETURNDATACOPY
0bff: RETURNDATASIZE
0c00: PUSH1 0x00
0c02: REVERT

web search: 
web search: 4byte 1e2284ed
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
ops.update({i:f'DUP{i-0x7f}' for i in range(0x80,0x90)})
ops.update({i:f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
ops.update({i:f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={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:'PREVRANDAO',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'}
ops.update(base)
code=bytes.fromhex(json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full'][2:])
start,end=0x959,0xb40
pc=start
while pc<end:
    op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
    if 0x60<=op<=0x7f:
        n=op-0x5f; data=code[pc+1:pc+1+n]
        print(f'{pc:04x}: {name} 0x{data.hex()}')
        pc+=1+n
    else:
        print(f'{pc:04x}: {name}')
        pc+=1
PY" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
0959: JUMPDEST
095a: PUSH1 0x00
095c: DUP2
095d: PUSH1 0x00
095f: DUP2
0960: MLOAD
0961: DUP2
0962: LT
0963: ISZERO
0964: ISZERO
0965: PUSH2 0x096a
0968: JUMPI
0969: INVALID
096a: JUMPDEST
096b: SWAP1
096c: PUSH1 0x20
096e: ADD
096f: ADD
0970: MLOAD
0971: PUSH1 0xf8
0973: PUSH1 0x02
0975: EXP
0976: SWAP1
0977: DIV
0978: PUSH1 0xf8
097a: PUSH1 0x02
097c: EXP
097d: MUL
097e: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
099e: NOT
099f: AND
09a0: PUSH32 0x6a00000000000000000000000000000000000000000000000000000000000000
09c1: EQ
09c2: ISZERO
09c3: ISZERO
09c4: PUSH2 0x09cc
09c7: JUMPI
09c8: PUSH1 0x00
09ca: DUP1
09cb: REVERT
09cc: JUMPDEST
09cd: POP
09ce: CALLER
09cf: PUSH1 0x00
09d1: SWAP1
09d2: DUP2
09d3: MSTORE
09d4: PUSH32 0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49
09f5: PUSH1 0x20
09f7: MSTORE
09f8: PUSH1 0x40
09fa: SWAP1
09fb: SHA3
09fc: DUP1
09fd: SLOAD
09fe: ISZERO
09ff: DUP1
0a00: ISZERO
0a01: PUSH2 0x0a15
0a04: JUMPI
0a05: POP
0a06: PUSH11 0x084595161401484a000000
0a12: CALLVALUE
0a13: GT
0a14: ISZERO
0a15: JUMPDEST
0a16: ISZERO
0a17: ISZERO
0a18: PUSH2 0x0a20
0a1b: JUMPI
0a1c: PUSH1 0x00
0a1e: DUP1
0a1f: REVERT
0a20: JUMPDEST
0a21: PUSH1 0x40
0a23: DUP1
0a24: MLOAD
0a25: PUSH1 0x60
0a27: DUP2
0a28: ADD
0a29: DUP3
0a2a: MSTORE
0a2b: CALLVALUE
0a2c: DUP2
0a2d: MSTORE
0a2e: PUSH1 0x20
0a30: DUP1
0a31: DUP3
0a32: ADD
0a33: DUP6
0a34: DUP2
0a35: MSTORE
0a36: PUSH1 0x00
0a38: SWAP4
0a39: DUP4
0a3a: ADD
0a3b: DUP5
0a3c: SWAP1
0a3d: MSTORE
0a3e: DUP5
0a3f: SLOAD
0a40: PUSH1 0x01
0a42: DUP2
0a43: DUP2
0a44: ADD
0a45: DUP1
0a46: DUP9
0a47: SSTORE
0a48: DUP8
0a49: DUP8
0a4a: MSTORE
0a4b: SWAP6
0a4c: DUP5
0a4d: SWAP1
0a4e: SHA3
0a4f: DUP6
0a50: MLOAD
0a51: PUSH1 0x03
0a53: SWAP1
0a54: SWAP4
0a55: MUL
0a56: ADD
0a57: SWAP2
0a58: DUP3
0a59: SSTORE
0a5a: SWAP2
0a5b: MLOAD
0a5c: DUP1
0a5d: MLOAD
0a5e: SWAP2
0a5f: SWAP4
0a60: PUSH2 0x0a6e
0a63: SWAP4
0a64: DUP6
0a65: ADD
0a66: SWAP3
0a67: SWAP2
0a68: ADD
0a69: SWAP1
0a6a: PUSH2 0x1464
0a6d: JUMP
0a6e: JUMPDEST
0a6f: POP
0a70: PUSH1 0x40
0a72: DUP3
0a73: ADD
0a74: MLOAD
0a75: DUP2
0a76: PUSH1 0x02
0a78: ADD
0a79: SSTORE
0a7a: POP
0a7b: POP
0a7c: POP
0a7d: CALLER
0a7e: PUSH1 0x01
0a80: PUSH1 0xa0
0a82: PUSH1 0x02
0a84: EXP
0a85: SUB
0a86: AND
0a87: CALLER
0a88: PUSH1 0x01
0a8a: PUSH1 0xa0
0a8c: PUSH1 0x02
0a8e: EXP
0a8f: SUB
0a90: AND
0a91: PUSH1 0x00
0a93: PUSH1 0x00
0a95: DUP1
0a96: MLOAD
0a97: PUSH1 0x20
0a99: PUSH2 0x152d
0a9c: DUP4
0a9d: CODECOPY
0a9e: DUP2
0a9f: MLOAD
0aa0: SWAP2
0aa1: MSTORE
0aa2: DUP6
0aa3: PUSH1 0x00
0aa5: CALLVALUE
0aa6: PUSH1 0x00
0aa8: PUSH1 0x40
0aaa: MLOAD
0aab: DUP1
0aac: DUP1
0aad: PUSH1 0x20
0aaf: ADD
0ab0: DUP6
0ab1: PUSH1 0x01
0ab3: MUL
0ab4: PUSH1 0x00
0ab6: NOT
0ab7: AND
0ab8: DUP2
0ab9: MSTORE
0aba: PUSH1 0x20
0abc: ADD
0abd: DUP5
0abe: DUP2
0abf: MSTORE
0ac0: PUSH1 0x20
0ac2: ADD
0ac3: DUP4
0ac4: DUP2
0ac5: MSTORE
0ac6: PUSH1 0x20
0ac8: ADD
0ac9: DUP3
0aca: DUP2
0acb: SUB
0acc: DUP3
0acd: MSTORE
0ace: DUP7
0acf: DUP2
0ad0: DUP2
0ad1: MLOAD
0ad2: DUP2
0ad3: MSTORE
0ad4: PUSH1 0x20
0ad6: ADD
0ad7: SWAP2
0ad8: POP
0ad9: DUP1
0ada: MLOAD
0adb: SWAP1
0adc: PUSH1 0x20
0ade: ADD
0adf: SWAP1
0ae0: DUP1
0ae1: DUP4
0ae2: DUP4
0ae3: PUSH1 0x00
0ae5: JUMPDEST
0ae6: DUP4
0ae7: DUP2
0ae8: LT
0ae9: ISZERO
0aea: PUSH2 0x0afd
0aed: JUMPI
0aee: DUP2
0aef: DUP2
0af0: ADD
0af1: MLOAD
0af2: DUP4
0af3: DUP3
0af4: ADD
0af5: MSTORE
0af6: PUSH1 0x20
0af8: ADD
0af9: PUSH2 0x0ae5
0afc: JUMP
0afd: JUMPDEST
0afe: POP
0aff: POP
0b00: POP
0b01: POP
0b02: SWAP1
0b03: POP
0b04: SWAP1
0b05: DUP2
0b06: ADD
0b07: SWAP1
0b08: PUSH1 0x1f
0b0a: AND
0b0b: DUP1
0b0c: ISZERO
0b0d: PUSH2 0x0b2a
0b10: JUMPI
0b11: DUP1
0b12: DUP3
0b13: SUB
0b14: DUP1
0b15: MLOAD
0b16: PUSH1 0x01
0b18: DUP4
0b19: PUSH1 0x20
0b1b: SUB
0b1c: PUSH2 0x0100
0b1f: EXP
0b20: SUB
0b21: NOT
0b22: AND
0b23: DUP2
0b24: MSTORE
0b25: PUSH1 0x20
0b27: ADD
0b28: SWAP2
0b29: POP
0b2a: JUMPDEST
0b2b: POP
0b2c: SWAP6
0b2d: POP
0b2e: POP
0b2f: POP
0b30: POP
0b31: POP
0b32: POP
0b33: PUSH1 0x40
0b35: MLOAD
0b36: DUP1
0b37: SWAP2
0b38: SUB
0b39: SWAP1
0b3a: LOG4
0b3b: POP
0b3c: POP
0b3d: JUMP
0b3e: JUMPDEST
0b3f: PUSH1 0x00

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops={i:f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
ops.update({i:f'DUP{i-0x7f}' for i in range(0x80,0x90)})
ops.update({i:f'SWAP{i-0x8f}' for i in range(0x90,0xa0)})
ops.update({i:f'LOG{i-0xa0}' for i in range(0xa0,0xa5)})
base={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:'PREVRANDAO',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'}
ops.update(base)
code=bytes.fromhex(json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full'][2:])
start,end=0xcc0,0xf80
pc=start
while pc<end:
    op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
    if 0x60<=op<=0x7f:
        n=op-0x5f; data=code[pc+1:pc+1+n]
        print(f'{pc:04x}: {name} 0x{data.hex()}')
        pc+=1+n
    else:
        print(f'{pc:04x}: {name}')
        pc+=1
PY" in /tmp/codex-c_36tz1k
 succeeded in 0ms:
0cc0: OP_c6
0cc1: JUMPI
0cc2: PUSH1 0x00
0cc4: DUP1
0cc5: REVERT
0cc6: JUMPDEST
0cc7: DUP7
0cc8: PUSH1 0x00
0cca: DUP2
0ccb: MLOAD
0ccc: DUP2
0ccd: LT
0cce: ISZERO
0ccf: ISZERO
0cd0: PUSH2 0x0cd5
0cd3: JUMPI
0cd4: INVALID
0cd5: JUMPDEST
0cd6: PUSH1 0x20
0cd8: SWAP2
0cd9: ADD
0cda: ADD
0cdb: MLOAD
0cdc: PUSH1 0xf8
0cde: PUSH1 0x02
0ce0: EXP
0ce1: SWAP1
0ce2: DUP2
0ce3: SWAP1
0ce4: DIV
0ce5: MUL
0ce6: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000
0d07: AND
0d08: PUSH32 0x6a00000000000000000000000000000000000000000000000000000000000000
0d29: EQ
0d2a: SWAP3
0d2b: POP
0d2c: PUSH1 0x00
0d2e: DUP5
0d2f: GT
0d30: SWAP2
0d31: POP
0d32: DUP3
0d33: PUSH2 0x0d3b
0d36: JUMPI
0d37: PUSH1 0x00
0d39: DUP1
0d3a: REVERT
0d3b: JUMPDEST
0d3c: POP
0d3d: PUSH1 0x01
0d3f: PUSH1 0xa0
0d41: PUSH1 0x02
0d43: EXP
0d44: SUB
0d45: DUP6
0d46: AND
0d47: PUSH1 0x00
0d49: SWAP1
0d4a: DUP2
0d4b: MSTORE
0d4c: PUSH1 0x01
0d4e: PUSH1 0x20
0d50: SWAP1
0d51: DUP2
0d52: MSTORE
0d53: PUSH1 0x40
0d55: DUP1
0d56: DUP4
0d57: SHA3
0d58: CALLER
0d59: DUP5
0d5a: MSTORE
0d5b: SWAP1
0d5c: SWAP2
0d5d: MSTORE
0d5e: SWAP1
0d5f: SHA3
0d60: DUP1
0d61: SLOAD
0d62: ISZERO
0d63: DUP1
0d64: ISZERO
0d65: PUSH2 0x0d79
0d68: JUMPI
0d69: POP
0d6a: PUSH11 0x084595161401484a000000
0d76: DUP6
0d77: GT
0d78: ISZERO
0d79: JUMPDEST
0d7a: ISZERO
0d7b: ISZERO
0d7c: PUSH2 0x0d84
0d7f: JUMPI
0d80: PUSH1 0x00
0d82: DUP1
0d83: REVERT
0d84: JUMPDEST
0d85: DUP2
0d86: ISZERO
0d87: PUSH2 0x0dba
0d8a: JUMPI
0d8b: PUSH1 0x00
0d8d: DUP5
0d8e: DUP2
0d8f: MSTORE
0d90: PUSH1 0x02
0d92: PUSH1 0x20
0d94: MSTORE
0d95: PUSH1 0x40
0d97: SWAP1
0d98: SHA3
0d99: SLOAD
0d9a: ISZERO
0d9b: PUSH2 0x0da3
0d9e: JUMPI
0d9f: PUSH1 0x00
0da1: DUP1
0da2: REVERT
0da3: JUMPDEST
0da4: PUSH1 0x00
0da6: DUP5
0da7: DUP2
0da8: MSTORE
0da9: PUSH1 0x02
0dab: PUSH1 0x20
0dad: MSTORE
0dae: PUSH1 0x40
0db0: SWAP1
0db1: SHA3
0db2: PUSH1 0x01
0db4: SWAP1
0db5: SSTORE
0db6: PUSH2 0x0e5f
0db9: JUMP
0dba: JUMPDEST
0dbb: PUSH1 0x40
0dbd: DUP1
0dbe: MLOAD
0dbf: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
0de0: DUP2
0de1: MSTORE
0de2: CALLER
0de3: PUSH1 0x04
0de5: DUP3
0de6: ADD
0de7: MSTORE
0de8: ADDRESS
0de9: PUSH1 0x24
0deb: DUP3
0dec: ADD
0ded: MSTORE
0dee: PUSH1 0x44
0df0: DUP2
0df1: ADD
0df2: DUP8
0df3: SWAP1
0df4: MSTORE
0df5: SWAP1
0df6: MLOAD
0df7: PUSH1 0x01
0df9: PUSH1 0xa0
0dfb: PUSH1 0x02
0dfd: EXP
0dfe: SUB
0dff: DUP9
0e00: AND
0e01: SWAP2
0e02: PUSH4 0x23b872dd
0e07: SWAP2
0e08: PUSH1 0x64
0e0a: DUP1
0e0b: DUP4
0e0c: ADD
0e0d: SWAP3
0e0e: PUSH1 0x20
0e10: SWAP3
0e11: SWAP2
0e12: SWAP1
0e13: DUP3
0e14: SWAP1
0e15: SUB
0e16: ADD
0e17: DUP2
0e18: PUSH1 0x00
0e1a: DUP8
0e1b: DUP1
0e1c: EXTCODESIZE
0e1d: ISZERO
0e1e: DUP1
0e1f: ISZERO
0e20: PUSH2 0x0e28
0e23: JUMPI
0e24: PUSH1 0x00
0e26: DUP1
0e27: REVERT
0e28: JUMPDEST
0e29: POP
0e2a: GAS
0e2b: CALL
0e2c: ISZERO
0e2d: DUP1
0e2e: ISZERO
0e2f: PUSH2 0x0e3c
0e32: JUMPI
0e33: RETURNDATASIZE
0e34: PUSH1 0x00
0e36: DUP1
0e37: RETURNDATACOPY
0e38: RETURNDATASIZE
0e39: PUSH1 0x00
0e3b: REVERT
0e3c: JUMPDEST
0e3d: POP
0e3e: POP
0e3f: POP
0e40: POP
0e41: PUSH1 0x40
0e43: MLOAD
0e44: RETURNDATASIZE
0e45: PUSH1 0x20
0e47: DUP2
0e48: LT
0e49: ISZERO
0e4a: PUSH2 0x0e52
0e4d: JUMPI
0e4e: PUSH1 0x00
0e50: DUP1
0e51: REVERT
0e52: JUMPDEST
0e53: POP
0e54: MLOAD
0e55: ISZERO
0e56: ISZERO
0e57: PUSH2 0x0e5f
0e5a: JUMPI
0e5b: PUSH1 0x00
0e5d: DUP1
0e5e: REVERT
0e5f: JUMPDEST
0e60: PUSH1 0x40
0e62: DUP1
0e63: MLOAD
0e64: PUSH1 0x60
0e66: DUP2
0e67: ADD
0e68: DUP3
0e69: MSTORE
0e6a: DUP7
0e6b: DUP2
0e6c: MSTORE
0e6d: PUSH1 0x20
0e6f: DUP1
0e70: DUP3
0e71: ADD
0e72: DUP11
0e73: DUP2
0e74: MSTORE
0e75: PUSH1 0x00
0e77: SWAP4
0e78: DUP4
0e79: ADD
0e7a: DUP5
0e7b: SWAP1
0e7c: MSTORE
0e7d: DUP5
0e7e: SLOAD
0e7f: PUSH1 0x01
0e81: DUP2
0e82: DUP2
0e83: ADD
0e84: DUP1
0e85: DUP9
0e86: SSTORE
0e87: DUP8
0e88: DUP8
0e89: MSTORE
0e8a: SWAP6
0e8b: DUP5
0e8c: SWAP1
0e8d: SHA3
0e8e: DUP6
0e8f: MLOAD
0e90: PUSH1 0x03
0e92: SWAP1
0e93: SWAP4
0e94: MUL
0e95: ADD
0e96: SWAP2
0e97: DUP3
0e98: SSTORE
0e99: SWAP2
0e9a: MLOAD
0e9b: DUP1
0e9c: MLOAD
0e9d: SWAP2
0e9e: SWAP4
0e9f: PUSH2 0x0ead
0ea2: SWAP4
0ea3: DUP6
0ea4: ADD
0ea5: SWAP3
0ea6: SWAP2
0ea7: ADD
0ea8: SWAP1
0ea9: PUSH2 0x1464
0eac: JUMP
0ead: JUMPDEST
0eae: POP
0eaf: PUSH1 0x40
0eb1: SWAP2
0eb2: DUP3
0eb3: ADD
0eb4: MLOAD
0eb5: PUSH1 0x02
0eb7: SWAP1
0eb8: SWAP2
0eb9: ADD
0eba: SSTORE
0ebb: DUP1
0ebc: MLOAD
0ebd: PUSH1 0x20
0ebf: DUP1
0ec0: DUP3
0ec1: ADD
0ec2: DUP9
0ec3: SWAP1
0ec4: MSTORE
0ec5: SWAP2
0ec6: DUP2
0ec7: ADD
0ec8: DUP9
0ec9: SWAP1
0eca: MSTORE
0ecb: PUSH1 0x00
0ecd: PUSH1 0x60
0ecf: DUP3
0ed0: ADD
0ed1: DUP2
0ed2: SWAP1
0ed3: MSTORE
0ed4: PUSH1 0x80
0ed6: DUP1
0ed7: DUP4
0ed8: MSTORE
0ed9: DUP12
0eda: MLOAD
0edb: SWAP1
0edc: DUP4
0edd: ADD
0ede: MSTORE
0edf: DUP11
0ee0: MLOAD
0ee1: CALLER
0ee2: SWAP5
0ee3: POP
0ee4: DUP5
0ee5: SWAP4
0ee6: PUSH1 0x01
0ee8: PUSH1 0xa0
0eea: PUSH1 0x02
0eec: EXP
0eed: SUB
0eee: DUP13
0eef: AND
0ef0: SWAP4
0ef1: PUSH1 0x00
0ef3: DUP1
0ef4: MLOAD
0ef5: PUSH1 0x20
0ef7: PUSH2 0x152d
0efa: DUP4
0efb: CODECOPY
0efc: DUP2
0efd: MLOAD
0efe: SWAP2
0eff: MSTORE
0f00: SWAP4
0f01: DUP15
0f02: SWAP4
0f03: DUP13
0f04: SWAP4
0f05: DUP15
0f06: SWAP4
0f07: SWAP2
0f08: DUP3
0f09: SWAP2
0f0a: PUSH1 0xa0
0f0c: DUP4
0f0d: ADD
0f0e: SWAP2
0f0f: SWAP1
0f10: DUP9
0f11: ADD
0f12: SWAP1
0f13: DUP1
0f14: DUP4
0f15: DUP4
0f16: DUP9
0f17: JUMPDEST
0f18: DUP4
0f19: DUP2
0f1a: LT
0f1b: ISZERO
0f1c: PUSH2 0x0f2f
0f1f: JUMPI
0f20: DUP2
0f21: DUP2
0f22: ADD
0f23: MLOAD
0f24: DUP4
0f25: DUP3
0f26: ADD
0f27: MSTORE
0f28: PUSH1 0x20
0f2a: ADD
0f2b: PUSH2 0x0f17
0f2e: JUMP
0f2f: JUMPDEST
0f30: POP
0f31: POP
0f32: POP
0f33: POP
0f34: SWAP1
0f35: POP
0f36: SWAP1
0f37: DUP2
0f38: ADD
0f39: SWAP1
0f3a: PUSH1 0x1f
0f3c: AND
0f3d: DUP1
0f3e: ISZERO
0f3f: PUSH2 0x0f5c
0f42: JUMPI
0f43: DUP1
0f44: DUP3
0f45: SUB
0f46: DUP1
0f47: MLOAD
0f48: PUSH1 0x01
0f4a: DUP4
0f4b: PUSH1 0x20
0f4d: SUB
0f4e: PUSH2 0x0100
0f51: EXP
0f52: SUB
0f53: NOT
0f54: AND
0f55: DUP2
0f56: MSTORE
0f57: PUSH1 0x20
0f59: ADD
0f5a: SWAP2
0f5b: POP
0f5c: JUMPDEST
0f5d: POP
0f5e: SWAP6
0f5f: POP
0f60: POP
0f61: POP
0f62: POP
0f63: POP
0f64: POP
0f65: PUSH1 0x40
0f67: MLOAD
0f68: DUP1
0f69: SWAP2
0f6a: SUB
0f6b: SWAP1
0f6c: LOG4
0f6d: POP
0f6e: POP
0f6f: POP
0f70: POP
0f71: POP
0f72: POP
0f73: POP
0f74: JUMP
0f75: JUMPDEST
0f76: PUSH1 0x00
0f78: DUP1
0f79: SLOAD
0f7a: DUP2
0f7b: SWAP1
0f7c: PUSH1 0x01
0f7e: PUSH1 0xa0

codex
{"no_findings":false,"summary":"Bytecode-only review found two meaningful issues: privileged sweep paths can move ETH/ERC20 out of the contract despite user-balance accounting, and the token deposit path credits the requested amount after `transferFrom` without proving the same amount was actually received. I did not count the `tx.origin` / `SELFDESTRUCT` detector hits as findings because they appear in the metadata trailer after `STOP` at `pc:0x152c`, so reachability is not evidenced from runtime code.","findings":[{"severity":"medium","category":"access_control","title":"Privileged owner can sweep custodial ETH and ERC20 balances","exploit_scenario":"If this contract is used as a custody/escrow/exchange balance holder, the slot-0 owner can call the admin withdrawal paths to send ERC20 or ETH from the contract to an arbitrary recipient. Because user balances are also tracked in storage elsewhere, those sweeps can leave users with unbacked claims or an insolvent pool. The apparent per-call cap does not prevent draining over multiple transactions.","recommendation":"Remove arbitrary owner sweep capability for user-backed assets, or restrict it to tightly-scoped rescue flows behind a multisig/timelock and explicit asset allowlists. If admin rescue must exist, reconcile or block withdrawal of assets that back user balances.","evidence":"`pc:0x349` begins with a slot-0 owner check (`SLOAD` -> masked address -> `CALLER EQ`). That path performs `balanceOf(address(this))` on an arbitrary token at `pc:0x3f3` and then an ERC20 `transfer` call (`0xa9059cbb`) at `pc:0x4fa`. A second owner-gated path at `pc:0xb3e` performs a raw ETH `CALL` at `pc:0xbed`. Separately, the contract records depositor balances via storage updates on payable/token-deposit flows (for example `pc:0xa3e-0xa7a` and `pc:0xe7d-0xe98`), so these sweeps can bypass internal accounting.","locations":["selector:0x1e2284ed","pc:0x349","pc:0x3f3","pc:0x4fa","selector:0xa6fb97d1","pc:0xb3e","pc:0xbed","selector:0xf851a440"]},{"severity":"medium","category":"other","title":"Token deposits credit the requested amount, not the amount actually received","exploit_scenario":"A user can deposit a fee-on-transfer, rebasing, or otherwise non-standard ERC20 that returns success from `transferFrom` while delivering fewer tokens than requested. The contract then credits the user's internal balance with the full requested amount, allowing later withdrawal/trading against more balance than the contract actually holds and potentially socializing the deficit to other users.","recommendation":"Measure actual tokens received by comparing pre/post balances, or only support a vetted allowlist of vanilla ERC20s whose transfers are known to be 1:1. Do not credit user balances solely from the requested `amount` parameter.","evidence":"In the `selector:0xcc2c5164` path, the contract builds calldata for standard ERC20 `transferFrom(address,address,uint256)` (`0x23b872dd`) at `pc:0xdbf-0xe16` and executes the external call at `pc:0xe2b`. After only checking call success / returned bool (`pc:0xe2c-0xe5e`), it immediately increments internal storage balances at `pc:0xe7d-0xe98` and related counters at `pc:0xeae-0xebb`. No pre/post `balanceOf` delta is observed on this path before crediting.","locations":["selector:0xcc2c5164","pc:0xdbf","pc:0xe2b","pc:0xe7d","pc:0xe98","pc:0xeae"]}]}
tokens used
97,006
Metadata
{
    "codex": {
        "ran_at": "2026-04-04T03:56:29.947938+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 10994,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode-only review found two meaningful issues: privileged sweep paths can move ETH/ERC20 out of the contract despite user-balance accounting, and the token deposit path credits the requested amount after `transferFrom` without proving the same amount was actually received. I did not count the `tx.origin` / `SELFDESTRUCT` detector hits as findings because they appear in the metadata trailer after `STOP` at `pc:0x152c`, so reachability is not evidenced from runtime code.",
    "raw_final": {
        "summary": "Bytecode-only review found two meaningful issues: privileged sweep paths can move ETH/ERC20 out of the contract despite user-balance accounting, and the token deposit path credits the requested amount after `transferFrom` without proving the same amount was actually received. I did not count the `tx.origin` / `SELFDESTRUCT` detector hits as findings because they appear in the metadata trailer after `STOP` at `pc:0x152c`, so reachability is not evidenced from runtime code.",
        "findings": [
            {
                "title": "Privileged owner can sweep custodial ETH and ERC20 balances",
                "category": "access_control",
                "evidence": "`pc:0x349` begins with a slot-0 owner check (`SLOAD` -> masked address -> `CALLER EQ`). That path performs `balanceOf(address(this))` on an arbitrary token at `pc:0x3f3` and then an ERC20 `transfer` call (`0xa9059cbb`) at `pc:0x4fa`. A second owner-gated path at `pc:0xb3e` performs a raw ETH `CALL` at `pc:0xbed`. Separately, the contract records depositor balances via storage updates on payable/token-deposit flows (for example `pc:0xa3e-0xa7a` and `pc:0xe7d-0xe98`), so these sweeps can bypass internal accounting.",
                "severity": "medium",
                "locations": [
                    "selector:0x1e2284ed",
                    "pc:0x349",
                    "pc:0x3f3",
                    "pc:0x4fa",
                    "selector:0xa6fb97d1",
                    "pc:0xb3e",
                    "pc:0xbed",
                    "selector:0xf851a440"
                ],
                "recommendation": "Remove arbitrary owner sweep capability for user-backed assets, or restrict it to tightly-scoped rescue flows behind a multisig/timelock and explicit asset allowlists. If admin rescue must exist, reconcile or block withdrawal of assets that back user balances.",
                "exploit_scenario": "If this contract is used as a custody/escrow/exchange balance holder, the slot-0 owner can call the admin withdrawal paths to send ERC20 or ETH from the contract to an arbitrary recipient. Because user balances are also tracked in storage elsewhere, those sweeps can leave users with unbacked claims or an insolvent pool. The apparent per-call cap does not prevent draining over multiple transactions."
            },
            {
                "title": "Token deposits credit the requested amount, not the amount actually received",
                "category": "other",
                "evidence": "In the `selector:0xcc2c5164` path, the contract builds calldata for standard ERC20 `transferFrom(address,address,uint256)` (`0x23b872dd`) at `pc:0xdbf-0xe16` and executes the external call at `pc:0xe2b`. After only checking call success / returned bool (`pc:0xe2c-0xe5e`), it immediately increments internal storage balances at `pc:0xe7d-0xe98` and related counters at `pc:0xeae-0xebb`. No pre/post `balanceOf` delta is observed on this path before crediting.",
                "severity": "medium",
                "locations": [
                    "selector:0xcc2c5164",
                    "pc:0xdbf",
                    "pc:0xe2b",
                    "pc:0xe7d",
                    "pc:0xe98",
                    "pc:0xeae"
                ],
                "recommendation": "Measure actual tokens received by comparing pre/post balances, or only support a vetted allowlist of vanilla ERC20s whose transfers are known to be 1:1. Do not credit user balances solely from the requested `amount` parameter.",
                "exploit_scenario": "A user can deposit a fee-on-transfer, rebasing, or otherwise non-standard ERC20 that returns success from `transferFrom` while delivering fewer tokens than requested. The contract then credits the user's internal balance with the full requested amount, allowing later withdrawal/trading against more balance than the contract actually holds and potentially socializing the deficit to other users."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
1
CREATE2
0
CALL-family (heavy)
7
EXT*/BALANCE
7
Total opcodes
3880
Flags
selfdestruct_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00b9
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000030: PUSH1 0x00
00000032: CALLDATALOAD
00000033: DIV
00000034: AND
00000035: PUSH4 0x1e2284ed
0000003a: DUP2
0000003b: EQ
0000003c: PUSH2 0x00be
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x4adae0da
00000046: EQ
00000047: PUSH2 0x00e0
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x98e0b39a
00000051: EQ
00000052: PUSH2 0x0107
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x997805d4
0000005c: EQ
0000005d: PUSH2 0x01b4
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0xa26e1186
00000067: EQ
00000068: PUSH2 0x01d4
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0xa6fb97d1
00000072: EQ
00000073: PUSH2 0x0220
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0xad2de9b0
0000007d: EQ
0000007e: PUSH2 0x023a
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0xcc2c5164
00000088: EQ
00000089: PUSH2 0x025b
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xdc131545
00000093: EQ
00000094: PUSH2 0x02bc
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xf56e81fa
0000009e: EQ
0000009f: PUSH2 0x02d6
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xf851a440
000000a9: EQ
000000aa: PUSH2 0x0300
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xfb7311b1
000000b4: EQ
000000b5: PUSH2 0x0331
000000b8: JUMPI
000000b9: JUMPDEST
000000ba: PUSH1 0x00
000000bc: DUP1
000000bd: REVERT
000000be: JUMPDEST
000000bf: PUSH2 0x00de
000000c2: PUSH1 0x04
000000c4: CALLDATALOAD
000000c5: PUSH1 0x01
000000c7: PUSH1 0xa0
000000c9: PUSH1 0x02
000000cb: EXP
000000cc: SUB
000000cd: PUSH1 0x24
000000cf: CALLDATALOAD
000000d0: DUP2
000000d1: AND
000000d2: SWAP1
000000d3: PUSH1 0x44
000000d5: CALLDATALOAD
000000d6: AND
000000d7: PUSH1 0x64
000000d9: CALLDATALOAD
000000da: PUSH2 0x0349
000000dd: JUMP
000000de: JUMPDEST
000000df: STOP
000000e0: JUMPDEST
000000e1: CALLVALUE
000000e2: DUP1
000000e3: ISZERO
000000e4: PUSH2 0x00ec
000000e7: JUMPI
000000e8: PUSH1 0x00
000000ea: DUP1
000000eb: REVERT
000000ec: JUMPDEST
000000ed: POP
000000ee: PUSH2 0x00f5
000000f1: PUSH2 0x0535
000000f4: JUMP
000000f5: JUMPDEST
000000f6: PUSH1 0x40
000000f8: DUP1
000000f9: MLOAD
000000fa: SWAP2
000000fb: DUP3
000000fc: MSTORE
000000fd: MLOAD
000000fe: SWAP1
000000ff: DUP2
00000100: SWAP1
00000101: SUB
00000102: PUSH1 0x20
00000104: ADD
00000105: SWAP1
00000106: RETURN
00000107: JUMPDEST
00000108: CALLVALUE
00000109: DUP1
0000010a: ISZERO
0000010b: PUSH2 0x0113
0000010e: JUMPI
0000010f: PUSH1 0x00
00000111: DUP1
00000112: REVERT
00000113: JUMPDEST
00000114: POP
00000115: PUSH2 0x012e
00000118: PUSH1 0x01
0000011a: PUSH1 0xa0
0000011c: PUSH1 0x02
0000011e: EXP
0000011f: SUB
00000120: PUSH1 0x04
00000122: CALLDATALOAD
00000123: DUP2
00000124: AND
00000125: SWAP1
00000126: PUSH1 0x24
00000128: CALLDATALOAD
00000129: AND
0000012a: PUSH2 0x053b
0000012d: JUMP
0000012e: JUMPDEST
0000012f: PUSH1 0x40
00000131: MLOAD
00000132: DUP1
00000133: DUP5
00000134: DUP2
00000135: MSTORE
00000136: PUSH1 0x20
00000138: ADD
00000139: DUP1
0000013a: PUSH1 0x20
0000013c: ADD
0000013d: DUP4
0000013e: DUP2
0000013f: MSTORE
00000140: PUSH1 0x20
00000142: ADD
00000143: DUP3
00000144: DUP2
00000145: SUB
00000146: DUP3
00000147: MSTORE
00000148: DUP5
00000149: DUP2
0000014a: DUP2
0000014b: MLOAD
0000014c: DUP2
0000014d: MSTORE
0000014e: PUSH1 0x20
00000150: ADD
00000151: SWAP2
00000152: POP
00000153: DUP1
00000154: MLOAD
00000155: SWAP1
00000156: PUSH1 0x20
00000158: ADD
00000159: SWAP1
0000015a: DUP1
0000015b: DUP4
0000015c: DUP4
0000015d: PUSH1 0x00
0000015f: JUMPDEST
00000160: DUP4
00000161: DUP2
00000162: LT
00000163: ISZERO
00000164: PUSH2 0x0177
00000167: JUMPI
00000168: DUP2
00000169: DUP2
0000016a: ADD
0000016b: MLOAD
0000016c: DUP4
0000016d: DUP3
0000016e: ADD
0000016f: MSTORE
00000170: PUSH1 0x20
00000172: ADD
00000173: PUSH2 0x015f
00000176: JUMP
00000177: JUMPDEST
00000178: POP
00000179: POP
0000017a: POP
0000017b: POP
0000017c: SWAP1
0000017d: POP
0000017e: SWAP1
0000017f: DUP2
00000180: ADD
00000181: SWAP1
00000182: PUSH1 0x1f
00000184: AND
00000185: DUP1
00000186: ISZERO
00000187: PUSH2 0x01a4
0000018a: JUMPI
0000018b: DUP1
0000018c: DUP3
0000018d: SUB
0000018e: DUP1
0000018f: MLOAD
00000190: PUSH1 0x01
00000192: DUP4
00000193: PUSH1 0x20
00000195: SUB
00000196: PUSH2 0x0100
00000199: EXP
0000019a: SUB
0000019b: NOT
0000019c: AND
0000019d: DUP2
0000019e: MSTORE
0000019f: PUSH1 0x20
000001a1: ADD
000001a2: SWAP2
000001a3: POP
000001a4: JUMPDEST
000001a5: POP
000001a6: SWAP5
000001a7: POP
000001a8: POP
000001a9: POP
000001aa: POP
000001ab: POP
000001ac: PUSH1 0x40
000001ae: MLOAD
000001af: DUP1
000001b0: SWAP2
000001b1: SUB
000001b2: SWAP1
000001b3: RETURN
000001b4: JUMPDEST
000001b5: PUSH2 0x00de
000001b8: PUSH1 0x04
000001ba: CALLDATALOAD
000001bb: PUSH1 0x01
000001bd: PUSH1 0xa0
000001bf: PUSH1 0x02
000001c1: EXP
000001c2: SUB
000001c3: PUSH1 0x24
000001c5: CALLDATALOAD
000001c6: DUP2
000001c7: AND
000001c8: SWAP1
000001c9: PUSH1 0x44
000001cb: CALLDATALOAD
000001cc: AND
000001cd: PUSH1 0x64
000001cf: CALLDATALOAD
000001d0: PUSH2 0x068a
000001d3: JUMP
000001d4: JUMPDEST
000001d5: PUSH1 0x40
000001d7: DUP1
000001d8: MLOAD
000001d9: PUSH1 0x20
000001db: PUSH1 0x04
000001dd: DUP1
000001de: CALLDATALOAD
000001df: DUP1
000001e0: DUP3
000001e1: ADD
000001e2: CALLDATALOAD
000001e3: PUSH1 0x1f
000001e5: DUP2
000001e6: ADD
000001e7: DUP5
000001e8: SWAP1
000001e9: DIV
000001ea: DUP5
000001eb: MUL
000001ec: DUP6
000001ed: ADD
000001ee: DUP5
000001ef: ADD
000001f0: SWAP1
000001f1: SWAP6
000001f2: MSTORE
000001f3: DUP5
000001f4: DUP5
000001f5: MSTORE
000001f6: PUSH2 0x00de
000001f9: SWAP5
000001fa: CALLDATASIZE
000001fb: SWAP5
000001fc: SWAP3
000001fd: SWAP4
000001fe: PUSH1 0x24
00000200: SWAP4
00000201: SWAP3
00000202: DUP5
00000203: ADD
00000204: SWAP2
00000205: SWAP1
00000206: DUP2
00000207: SWAP1
00000208: DUP5
00000209: ADD
0000020a: DUP4
0000020b: DUP3
0000020c: DUP1
0000020d: DUP3
0000020e: DUP5
0000020f: CALLDATACOPY
00000210: POP
00000211: SWAP5
00000212: SWAP8
00000213: POP
00000214: PUSH2 0x0959
00000217: SWAP7
00000218: POP
00000219: POP
0000021a: POP
0000021b: POP
0000021c: POP
0000021d: POP
0000021e: POP
0000021f: JUMP
00000220: JUMPDEST
00000221: PUSH2 0x00de
00000224: PUSH1 0x04
00000226: CALLDATALOAD
00000227: PUSH1 0x01
00000229: PUSH1 0xa0
0000022b: PUSH1 0x02
0000022d: EXP
0000022e: SUB
0000022f: PUSH1 0x24
00000231: CALLDATALOAD
00000232: AND
00000233: PUSH1 0x44
00000235: CALLDATALOAD
00000236: PUSH2 0x0b3e
00000239: JUMP
0000023a: JUMPDEST
0000023b: CALLVALUE
0000023c: DUP1
0000023d: ISZERO
0000023e: PUSH2 0x0246
00000241: JUMPI
00000242: PUSH1 0x00
00000244: DUP1
00000245: REVERT
00000246: JUMPDEST
00000247: POP
00000248: PUSH2 0x00f5
0000024b: PUSH1 0x01
0000024d: PUSH1 0xa0
0000024f: PUSH1 0x02
00000251: EXP
00000252: SUB
00000253: PUSH1 0x04
00000255: CALLDATALOAD
00000256: AND
00000257: PUSH2 0x0c03
0000025a: JUMP
0000025b: JUMPDEST
0000025c: PUSH1 0x40
0000025e: DUP1
0000025f: MLOAD
00000260: PUSH1 0x20
00000262: PUSH1 0x04
00000264: DUP1
00000265: CALLDATALOAD
00000266: DUP1
00000267: DUP3
00000268: ADD
00000269: CALLDATALOAD
0000026a: PUSH1 0x1f
0000026c: DUP2
0000026d: ADD
0000026e: DUP5
0000026f: SWAP1
00000270: DIV
00000271: DUP5
00000272: MUL
00000273: DUP6
00000274: ADD
00000275: DUP5
00000276: ADD
00000277: SWAP1
00000278: SWAP6
00000279: MSTORE
0000027a: DUP5
0000027b: DUP5
0000027c: MSTORE
0000027d: PUSH2 0x00de
00000280: SWAP5
00000281: CALLDATASIZE
00000282: SWAP5
00000283: SWAP3
00000284: SWAP4
00000285: PUSH1 0x24
00000287: SWAP4
00000288: SWAP3
00000289: DUP5
0000028a: ADD
0000028b: SWAP2
0000028c: SWAP1
0000028d: DUP2
0000028e: SWAP1
0000028f: DUP5
00000290: ADD
00000291: DUP4
00000292: DUP3
00000293: DUP1
00000294: DUP3
00000295: DUP5
00000296: CALLDATACOPY
00000297: POP
00000298: SWAP5
00000299: SWAP8
0000029a: POP
0000029b: POP
0000029c: POP
0000029d: DUP4
0000029e: CALLDATALOAD
0000029f: PUSH1 0x01
000002a1: PUSH1 0xa0
000002a3: PUSH1 0x02
000002a5: EXP
000002a6: SUB
000002a7: AND
000002a8: SWAP5
000002a9: POP
000002aa: POP
000002ab: POP
000002ac: PUSH1 0x20
000002ae: DUP3
000002af: ADD
000002b0: CALLDATALOAD
000002b1: SWAP2
000002b2: PUSH1 0x40
000002b4: ADD
000002b5: CALLDATALOAD
000002b6: SWAP1
000002b7: POP
000002b8: PUSH2 0x0cad
000002bb: JUMP
000002bc: JUMPDEST
000002bd: PUSH2 0x00de
000002c0: PUSH1 0x04
000002c2: CALLDATALOAD
000002c3: PUSH1 0x01
000002c5: PUSH1 0xa0
000002c7: PUSH1 0x02
000002c9: EXP
000002ca: SUB
000002cb: PUSH1 0x24
000002cd: CALLDATALOAD
000002ce: AND
000002cf: PUSH1 0x44
000002d1: CALLDATALOAD
000002d2: PUSH2 0x0f75
000002d5: JUMP
000002d6: JUMPDEST
000002d7: CALLVALUE
000002d8: DUP1
000002d9: ISZERO
000002da: PUSH2 0x02e2
000002dd: JUMPI
000002de: PUSH1 0x00
000002e0: DUP1
000002e1: REVERT
000002e2: JUMPDEST
000002e3: POP
000002e4: PUSH2 0x012e
000002e7: PUSH1 0x01
000002e9: PUSH1 0xa0
000002eb: PUSH1 0x02
000002ed: EXP
000002ee: SUB
000002ef: PUSH1 0x04
000002f1: CALLDATALOAD
000002f2: DUP2
000002f3: AND
000002f4: SWAP1
000002f5: PUSH1 0x24
000002f7: CALLDATALOAD
000002f8: AND
000002f9: PUSH1 0x44
000002fb: CALLDATALOAD
000002fc: PUSH2 0x12df
000002ff: JUMP
00000300: JUMPDEST
00000301: CALLVALUE
00000302: DUP1
00000303: ISZERO
00000304: PUSH2 0x030c
00000307: JUMPI
00000308: PUSH1 0x00
0000030a: DUP1
0000030b: REVERT
0000030c: JUMPDEST
0000030d: POP
0000030e: PUSH2 0x0315
00000311: PUSH2 0x13b9
00000314: JUMP
00000315: JUMPDEST
00000316: PUSH1 0x40
00000318: DUP1
00000319: MLOAD
0000031a: PUSH1 0x01
0000031c: PUSH1 0xa0
0000031e: PUSH1 0x02
00000320: EXP
00000321: SUB
00000322: SWAP1
00000323: SWAP3
00000324: AND
00000325: DUP3
00000326: MSTORE
00000327: MLOAD
00000328: SWAP1
00000329: DUP2
0000032a: SWAP1
0000032b: SUB
0000032c: PUSH1 0x20
0000032e: ADD
0000032f: SWAP1
00000330: RETURN
00000331: JUMPDEST
00000332: CALLVALUE
00000333: DUP1
00000334: ISZERO
00000335: PUSH2 0x033d
00000338: JUMPI
00000339: PUSH1 0x00
0000033b: DUP1
0000033c: REVERT
0000033d: JUMPDEST
0000033e: POP
0000033f: PUSH2 0x00f5
00000342: PUSH1 0x04
00000344: CALLDATALOAD
00000345: PUSH2 0x13c8
00000348: JUMP
00000349: JUMPDEST
0000034a: PUSH1 0x00
0000034c: DUP1
0000034d: SLOAD
0000034e: PUSH1 0x01
00000350: PUSH1 0xa0
00000352: PUSH1 0x02
00000354: EXP
00000355: SUB
00000356: AND
00000357: CALLER
00000358: EQ
00000359: DUP1
0000035a: ISZERO
0000035b: PUSH2 0x036f
0000035e: JUMPI
0000035f: POP
00000360: PUSH11 0x084595161401484a000000
0000036c: DUP3
0000036d: GT
0000036e: ISZERO
0000036f: JUMPDEST
00000370: ISZERO
00000371: ISZERO
00000372: PUSH2 0x037a
00000375: JUMPI
00000376: PUSH1 0x00
00000378: DUP1
00000379: REVERT
0000037a: JUMPDEST
0000037b: PUSH1 0x01
0000037d: PUSH1 0xa0
0000037f: PUSH1 0x02
00000381: EXP
00000382: SUB
00000383: DUP4
00000384: AND
00000385: ISZERO
00000386: ISZERO
00000387: PUSH2 0x038f
0000038a: JUMPI
0000038b: PUSH1 0x00
0000038d: DUP1
0000038e: REVERT
0000038f: JUMPDEST
00000390: PUSH1 0x40
00000392: DUP1
00000393: MLOAD
00000394: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
000003b5: DUP2
000003b6: MSTORE
000003b7: ADDRESS
000003b8: PUSH1 0x04
000003ba: DUP3
000003bb: ADD
000003bc: MSTORE
000003bd: SWAP1
000003be: MLOAD
000003bf: PUSH1 0x01
000003c1: PUSH1 0xa0
000003c3: PUSH1 0x02
000003c5: EXP
000003c6: SUB
000003c7: DUP6
000003c8: AND
000003c9: SWAP2
000003ca: PUSH4 0x70a08231
000003cf: SWAP2
000003d0: PUSH1 0x24
000003d2: DUP1
000003d3: DUP4
000003d4: ADD
000003d5: SWAP3
000003d6: PUSH1 0x20
000003d8: SWAP3
000003d9: SWAP2
000003da: SWAP1
000003db: DUP3
000003dc: SWAP1
000003dd: SUB
000003de: ADD
000003df: DUP2
000003e0: PUSH1 0x00
000003e2: DUP8
000003e3: DUP1
000003e4: EXTCODESIZE
000003e5: ISZERO
000003e6: DUP1
000003e7: ISZERO
000003e8: PUSH2 0x03f0
000003eb: JUMPI
000003ec: PUSH1 0x00
000003ee: DUP1
000003ef: REVERT
000003f0: JUMPDEST
000003f1: POP
000003f2: GAS
000003f3: CALL
000003f4: ISZERO
000003f5: DUP1
000003f6: ISZERO
000003f7: PUSH2 0x0404
000003fa: JUMPI
000003fb: RETURNDATASIZE
000003fc: PUSH1 0x00
000003fe: DUP1
000003ff: RETURNDATACOPY
00000400: RETURNDATASIZE
00000401: PUSH1 0x00
00000403: REVERT
00000404: JUMPDEST
00000405: POP
00000406: POP
00000407: POP
00000408: POP
00000409: PUSH1 0x40
0000040b: MLOAD
0000040c: RETURNDATASIZE
0000040d: PUSH1 0x20
0000040f: DUP2
00000410: LT
00000411: ISZERO
00000412: PUSH2 0x041a
00000415: JUMPI
00000416: PUSH1 0x00
00000418: DUP1
00000419: REVERT
0000041a: JUMPDEST
0000041b: POP
0000041c: MLOAD
0000041d: SWAP1
0000041e: POP
0000041f: DUP2
00000420: DUP2
00000421: LT
00000422: ISZERO
00000423: PUSH2 0x042b
00000426: JUMPI
00000427: PUSH1 0x00
00000429: DUP1
0000042a: REVERT
0000042b: JUMPDEST
0000042c: PUSH1 0x40
0000042e: DUP1
0000042f: MLOAD
00000430: DUP7
00000431: DUP2
00000432: MSTORE
00000433: PUSH1 0x20
00000435: DUP2
00000436: ADD
00000437: DUP5
00000438: SWAP1
00000439: MSTORE
0000043a: DUP1
0000043b: DUP3
0000043c: ADD
0000043d: DUP4
0000043e: SWAP1
0000043f: MSTORE
00000440: SWAP1
00000441: MLOAD
00000442: PUSH1 0x01
00000444: PUSH1 0xa0
00000446: PUSH1 0x02
00000448: EXP
00000449: SUB
0000044a: DUP1
0000044b: DUP8
0000044c: AND
0000044d: SWAP3
0000044e: SWAP1
0000044f: DUP7
00000450: AND
00000451: SWAP2
00000452: PUSH32 0x83fa319e3dcab86af4165864bb9e9e884168247533a1e4abf5520b5f0321a0fe
00000473: SWAP2
00000474: DUP2
00000475: SWAP1
00000476: SUB
00000477: PUSH1 0x60
00000479: ADD
0000047a: SWAP1
0000047b: LOG3
0000047c: DUP3
0000047d: PUSH1 0x01
0000047f: PUSH1 0xa0
00000481: PUSH1 0x02
00000483: EXP
00000484: SUB
00000485: AND
00000486: PUSH4 0xa9059cbb
0000048b: DUP6
0000048c: DUP5
0000048d: PUSH1 0x40
0000048f: MLOAD
00000490: DUP4
00000491: PUSH4 0xffffffff
00000496: AND
00000497: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000004b5: MUL
000004b6: DUP2
000004b7: MSTORE
000004b8: PUSH1 0x04
000004ba: ADD
000004bb: DUP1
000004bc: DUP4
000004bd: PUSH1 0x01
000004bf: PUSH1 0xa0
000004c1: PUSH1 0x02
000004c3: EXP
000004c4: SUB
000004c5: AND
000004c6: PUSH1 0x01
000004c8: PUSH1 0xa0
000004ca: PUSH1 0x02
000004cc: EXP
000004cd: SUB
000004ce: AND
000004cf: DUP2
000004d0: MSTORE
000004d1: PUSH1 0x20
000004d3: ADD
000004d4: DUP3
000004d5: DUP2
000004d6: MSTORE
000004d7: PUSH1 0x20
000004d9: ADD
000004da: SWAP3
000004db: POP
000004dc: POP
000004dd: POP
000004de: PUSH1 0x20
000004e0: PUSH1 0x40
000004e2: MLOAD
000004e3: DUP1
000004e4: DUP4
000004e5: SUB
000004e6: DUP2
000004e7: PUSH1 0x00
000004e9: DUP8
000004ea: DUP1
000004eb: EXTCODESIZE
000004ec: ISZERO
000004ed: DUP1
000004ee: ISZERO
000004ef: PUSH2 0x04f7
000004f2: JUMPI
000004f3: PUSH1 0x00
000004f5: DUP1
000004f6: REVERT
000004f7: JUMPDEST
000004f8: POP
000004f9: GAS
000004fa: CALL
000004fb: ISZERO
000004fc: DUP1
000004fd: ISZERO
000004fe: PUSH2 0x050b
00000501: JUMPI
00000502: RETURNDATASIZE
00000503: PUSH1 0x00
00000505: DUP1
00000506: RETURNDATACOPY
00000507: RETURNDATASIZE
00000508: PUSH1 0x00
0000050a: REVERT
0000050b: JUMPDEST
0000050c: POP
0000050d: POP
0000050e: POP
0000050f: POP
00000510: PUSH1 0x40
00000512: MLOAD
00000513: RETURNDATASIZE
00000514: PUSH1 0x20
00000516: DUP2
00000517: LT
00000518: ISZERO
00000519: PUSH2 0x0521
0000051c: JUMPI
0000051d: PUSH1 0x00
0000051f: DUP1
00000520: REVERT
00000521: JUMPDEST
00000522: POP
00000523: MLOAD
00000524: ISZERO
00000525: ISZERO
00000526: PUSH2 0x052e
00000529: JUMPI
0000052a: PUSH1 0x00
0000052c: DUP1
0000052d: REVERT
0000052e: JUMPDEST
0000052f: POP
00000530: POP
00000531: POP
00000532: POP
00000533: POP
00000534: JUMP
00000535: JUMPDEST
00000536: ADDRESS
00000537: BALANCE
00000538: JUMPDEST
00000539: SWAP1
0000053a: JUMP
0000053b: JUMPDEST
0000053c: PUSH1 0x01
0000053e: PUSH1 0xa0
00000540: PUSH1 0x02
00000542: EXP
00000543: SUB
00000544: DUP1
00000545: DUP4
00000546: AND
00000547: PUSH1 0x00
00000549: SWAP1
0000054a: DUP2
0000054b: MSTORE
0000054c: PUSH1 0x01
0000054e: PUSH1 0x20
00000550: SWAP1
00000551: DUP2
00000552: MSTORE
00000553: PUSH1 0x40
00000555: DUP1
00000556: DUP4
00000557: KECCAK256
00000558: SWAP4
00000559: DUP6
0000055a: AND
0000055b: DUP4
0000055c: MSTORE
0000055d: SWAP3
0000055e: SWAP1
0000055f: MSTORE
00000560: SWAP1
00000561: DUP2
00000562: KECCAK256
00000563: DUP1
00000564: SLOAD
00000565: PUSH1 0x60
00000567: SWAP2
00000568: DUP4
00000569: SWAP2
0000056a: ISZERO
0000056b: ISZERO
0000056c: PUSH2 0x058b
0000056f: JUMPI
00000570: PUSH1 0x40
00000572: DUP1
00000573: MLOAD
00000574: PUSH1 0x20
00000576: DUP2
00000577: ADD
00000578: SWAP1
00000579: SWAP2
0000057a: MSTORE
0000057b: PUSH1 0x00
0000057d: DUP1
0000057e: DUP3
0000057f: MSTORE
00000580: SWAP5
00000581: POP
00000582: SWAP3
00000583: POP
00000584: DUP4
00000585: SWAP2
00000586: POP
00000587: PUSH2 0x0682
0000058a: JUMP
0000058b: JUMPDEST
0000058c: DUP1
0000058d: PUSH1 0x00
0000058f: DUP2
00000590: SLOAD
00000591: DUP2
00000592: LT
00000593: ISZERO
00000594: ISZERO
00000595: PUSH2 0x059a
00000598: JUMPI
00000599: INVALID
0000059a: JUMPDEST
0000059b: SWAP1
0000059c: PUSH1 0x00
0000059e: MSTORE
0000059f: PUSH1 0x20
000005a1: PUSH1 0x00
000005a3: KECCAK256
000005a4: SWAP1
000005a5: PUSH1 0x03
000005a7: MUL
000005a8: ADD
000005a9: PUSH1 0x00
000005ab: ADD
000005ac: SLOAD
000005ad: DUP2
000005ae: PUSH1 0x00
000005b0: DUP2
000005b1: SLOAD
000005b2: DUP2
000005b3: LT
000005b4: ISZERO
000005b5: ISZERO
000005b6: PUSH2 0x05bb
000005b9: JUMPI
000005ba: INVALID
000005bb: JUMPDEST
000005bc: SWAP1
000005bd: PUSH1 0x00
000005bf: MSTORE
000005c0: PUSH1 0x20
000005c2: PUSH1 0x00
000005c4: KECCAK256
000005c5: SWAP1
000005c6: PUSH1 0x03
000005c8: MUL
000005c9: ADD
000005ca: PUSH1 0x01
000005cc: ADD
000005cd: DUP3
000005ce: PUSH1 0x00
000005d0: DUP2
000005d1: SLOAD
000005d2: DUP2
000005d3: LT
000005d4: ISZERO
000005d5: ISZERO
000005d6: PUSH2 0x05db
000005d9: JUMPI
000005da: INVALID
000005db: JUMPDEST
000005dc: PUSH1 0x00
000005de: SWAP2
000005df: DUP3
000005e0: MSTORE
000005e1: PUSH1 0x20
000005e3: SWAP2
000005e4: DUP3
000005e5: SWAP1
000005e6: KECCAK256
000005e7: PUSH1 0x02
000005e9: PUSH1 0x03
000005eb: SWAP1
000005ec: SWAP3
000005ed: MUL
000005ee: ADD
000005ef: DUP2
000005f0: ADD
000005f1: SLOAD
000005f2: DUP4
000005f3: SLOAD
000005f4: PUSH1 0x40
000005f6: DUP1
000005f7: MLOAD
000005f8: PUSH1 0x1f
000005fa: PUSH1 0x00
000005fc: NOT
000005fd: PUSH2 0x0100
00000600: PUSH1 0x01
00000602: DUP7
00000603: AND
00000604: ISZERO
00000605: MUL
00000606: ADD
00000607: SWAP1
00000608: SWAP4
00000609: AND
0000060a: SWAP5
0000060b: SWAP1
0000060c: SWAP5
0000060d: DIV
0000060e: SWAP2
0000060f: DUP3
00000610: ADD
00000611: DUP6
00000612: SWAP1
00000613: DIV
00000614: DUP6
00000615: MUL
00000616: DUP5
00000617: ADD
00000618: DUP6
00000619: ADD
0000061a: SWAP1
0000061b: MSTORE
0000061c: DUP1
0000061d: DUP4
0000061e: MSTORE
0000061f: SWAP1
00000620: SWAP3
00000621: DUP5
00000622: SWAP2
00000623: SWAP1
00000624: DUP4
00000625: ADD
00000626: DUP3
00000627: DUP3
00000628: DUP1
00000629: ISZERO
0000062a: PUSH2 0x0674
0000062d: JUMPI
0000062e: DUP1
0000062f: PUSH1 0x1f
00000631: LT
00000632: PUSH2 0x0649
00000635: JUMPI
00000636: PUSH2 0x0100
00000639: DUP1
0000063a: DUP4
0000063b: SLOAD
0000063c: DIV
0000063d: MUL
0000063e: DUP4
0000063f: MSTORE
00000640: SWAP2
00000641: PUSH1 0x20
00000643: ADD
00000644: SWAP2
00000645: PUSH2 0x0674
00000648: JUMP
00000649: JUMPDEST
0000064a: DUP3
0000064b: ADD
0000064c: SWAP2
0000064d: SWAP1
0000064e: PUSH1 0x00
00000650: MSTORE
00000651: PUSH1 0x20
00000653: PUSH1 0x00
00000655: KECCAK256
00000656: SWAP1
00000657: JUMPDEST
00000658: DUP2
00000659: SLOAD
0000065a: DUP2
0000065b: MSTORE
0000065c: SWAP1
0000065d: PUSH1 0x01
0000065f: ADD
00000660: SWAP1
00000661: PUSH1 0x20
00000663: ADD
00000664: DUP1
00000665: DUP4
00000666: GT
00000667: PUSH2 0x0657
0000066a: JUMPI
0000066b: DUP3
0000066c: SWAP1
0000066d: SUB
0000066e: PUSH1 0x1f
00000670: AND
00000671: DUP3
00000672: ADD
00000673: SWAP2
00000674: JUMPDEST
00000675: POP
00000676: POP
00000677: POP
00000678: POP
00000679: POP
0000067a: SWAP2
0000067b: POP
0000067c: SWAP4
0000067d: POP
0000067e: SWAP4
0000067f: POP
00000680: SWAP4
00000681: POP
00000682: JUMPDEST
00000683: POP
00000684: SWAP3
00000685: POP
00000686: SWAP3
00000687: POP
00000688: SWAP3
00000689: JUMP
0000068a: JUMPDEST
0000068b: PUSH1 0x00
0000068d: DUP1
0000068e: SLOAD
0000068f: PUSH1 0x01
00000691: PUSH1 0xa0
00000693: PUSH1 0x02
00000695: EXP
00000696: SUB
00000697: AND
00000698: CALLER
00000699: EQ
0000069a: PUSH2 0x06a2
0000069d: JUMPI
0000069e: PUSH1 0x00
000006a0: DUP1
000006a1: REVERT
000006a2: JUMPDEST
000006a3: POP
000006a4: PUSH1 0x01
000006a6: PUSH1 0xa0
000006a8: PUSH1 0x02
000006aa: EXP
000006ab: SUB
000006ac: DUP1
000006ad: DUP4
000006ae: AND
000006af: PUSH1 0x00
000006b1: SWAP1
000006b2: DUP2
000006b3: MSTORE
000006b4: PUSH1 0x01
000006b6: PUSH1 0x20
000006b8: DUP2
000006b9: DUP2
000006ba: MSTORE
000006bb: PUSH1 0x40
000006bd: DUP1
000006be: DUP5
000006bf: KECCAK256
000006c0: SWAP5
000006c1: DUP9
000006c2: AND
000006c3: DUP5
000006c4: MSTORE
000006c5: SWAP4
000006c6: SWAP1
000006c7: MSTORE
000006c8: SWAP2
000006c9: SWAP1
000006ca: KECCAK256
000006cb: DUP1
000006cc: SLOAD
000006cd: SWAP1
000006ce: SWAP2
000006cf: EQ
000006d0: PUSH2 0x06d8
000006d3: JUMPI
000006d4: PUSH1 0x00
000006d6: DUP1
000006d7: REVERT
000006d8: JUMPDEST
000006d9: DUP2
000006da: PUSH1 0x01
000006dc: EQ
000006dd: ISZERO
000006de: PUSH2 0x07f7
000006e1: JUMPI
000006e2: DUP4
000006e3: PUSH1 0x01
000006e5: PUSH1 0xa0
000006e7: PUSH1 0x02
000006e9: EXP
000006ea: SUB
000006eb: AND
000006ec: CALLER
000006ed: PUSH1 0x01
000006ef: PUSH1 0xa0
000006f1: PUSH1 0x02
000006f3: EXP
000006f4: SUB
000006f5: AND
000006f6: DUP5
000006f7: PUSH1 0x01
000006f9: PUSH1 0xa0
000006fb: PUSH1 0x02
000006fd: EXP
000006fe: SUB
000006ff: AND
00000700: PUSH1 0x00
00000702: DUP1
00000703: MLOAD
00000704: PUSH1 0x20
00000706: PUSH2 0x152d
00000709: DUP4
0000070a: CODECOPY
0000070b: DUP2
0000070c: MLOAD
0000070d: SWAP2
0000070e: MSTORE
0000070f: DUP5
00000710: PUSH1 0x00
00000712: DUP2
00000713: SLOAD
00000714: DUP2
00000715: LT
00000716: ISZERO
00000717: ISZERO
00000718: PUSH2 0x071d
0000071b: JUMPI
0000071c: INVALID
0000071d: JUMPDEST
0000071e: SWAP1
0000071f: PUSH1 0x00
00000721: MSTORE
00000722: PUSH1 0x20
00000724: PUSH1 0x00
00000726: KECCAK256
00000727: SWAP1
00000728: PUSH1 0x03
0000072a: MUL
0000072b: ADD
0000072c: PUSH1 0x01
0000072e: ADD
0000072f: DUP10
00000730: DUP7
00000731: PUSH1 0x00
00000733: DUP2
00000734: SLOAD
00000735: DUP2
00000736: LT
00000737: ISZERO
00000738: ISZERO
00000739: PUSH2 0x073e
0000073c: JUMPI
0000073d: INVALID
0000073e: JUMPDEST
0000073f: PUSH1 0x00
00000741: SWAP2
00000742: DUP3
00000743: MSTORE
00000744: PUSH1 0x20
00000746: SWAP2
00000747: DUP3
00000748: SWAP1
00000749: KECCAK256
0000074a: PUSH1 0x03
0000074c: SWAP1
0000074d: SWAP2
0000074e: MUL
0000074f: ADD
00000750: SLOAD
00000751: PUSH1 0x40
00000753: DUP1
00000754: MLOAD
00000755: SWAP3
00000756: DUP4
00000757: ADD
00000758: DUP5
00000759: SWAP1
0000075a: MSTORE
0000075b: DUP3
0000075c: ADD
0000075d: DUP2
0000075e: SWAP1
0000075f: MSTORE
00000760: PUSH1 0x01
00000762: PUSH1 0x60
00000764: DUP4
00000765: ADD
00000766: DUP2
00000767: SWAP1
00000768: MSTORE
00000769: PUSH1 0x80
0000076b: DUP1
0000076c: DUP5
0000076d: MSTORE
0000076e: DUP6
0000076f: SLOAD
00000770: PUSH1 0x02
00000772: PUSH2 0x0100
00000775: DUP3
00000776: DUP6
00000777: AND
00000778: ISZERO
00000779: MUL
0000077a: PUSH1 0x00
0000077c: NOT
0000077d: ADD
0000077e: SWAP1
0000077f: SWAP2
00000780: AND
00000781: DIV
00000782: SWAP1
00000783: DUP5
00000784: ADD
00000785: DUP2
00000786: SWAP1
00000787: MSTORE
00000788: SWAP2
00000789: SWAP3
0000078a: SWAP1
0000078b: SWAP2
0000078c: DUP2
0000078d: SWAP1
0000078e: PUSH1 0xa0
00000790: DUP3
00000791: ADD
00000792: SWAP1
00000793: DUP8
00000794: SWAP1
00000795: DUP1
00000796: ISZERO
00000797: PUSH2 0x07e1
0000079a: JUMPI
0000079b: DUP1
0000079c: PUSH1 0x1f
0000079e: LT
0000079f: PUSH2 0x07b6
000007a2: JUMPI
000007a3: PUSH2 0x0100
000007a6: DUP1
000007a7: DUP4
000007a8: SLOAD
000007a9: DIV
000007aa: MUL
000007ab: DUP4
000007ac: MSTORE
000007ad: SWAP2
000007ae: PUSH1 0x20
000007b0: ADD
000007b1: SWAP2
000007b2: PUSH2 0x07e1
000007b5: JUMP
000007b6: JUMPDEST
000007b7: DUP3
000007b8: ADD
000007b9: SWAP2
000007ba: SWAP1
000007bb: PUSH1 0x00
000007bd: MSTORE
000007be: PUSH1 0x20
000007c0: PUSH1 0x00
000007c2: KECCAK256
000007c3: SWAP1
000007c4: JUMPDEST
000007c5: DUP2
000007c6: SLOAD
000007c7: DUP2
000007c8: MSTORE
000007c9: SWAP1
000007ca: PUSH1 0x01
000007cc: ADD
000007cd: SWAP1
000007ce: PUSH1 0x20
000007d0: ADD
000007d1: DUP1
000007d2: DUP4
000007d3: GT
000007d4: PUSH2 0x07c4
000007d7: JUMPI
000007d8: DUP3
000007d9: SWAP1
000007da: SUB
000007db: PUSH1 0x1f
000007dd: AND
000007de: DUP3
000007df: ADD
000007e0: SWAP2
000007e1: JUMPDEST
000007e2: POP
000007e3: POP
000007e4: SWAP6
000007e5: POP
000007e6: POP
000007e7: POP
000007e8: POP
000007e9: POP
000007ea: POP
000007eb: PUSH1 0x40
000007ed: MLOAD
000007ee: DUP1
000007ef: SWAP2
000007f0: SUB
000007f1: SWAP1
000007f2: LOG4
000007f3: PUSH2 0x0908
000007f6: JUMP
000007f7: JUMPDEST
000007f8: DUP4
000007f9: PUSH1 0x01
000007fb: PUSH1 0xa0
000007fd: PUSH1 0x02
000007ff: EXP
00000800: SUB
00000801: AND
00000802: CALLER
00000803: PUSH1 0x01
00000805: PUSH1 0xa0
00000807: PUSH1 0x02
00000809: EXP
0000080a: SUB
0000080b: AND
0000080c: DUP5
0000080d: PUSH1 0x01
0000080f: PUSH1 0xa0
00000811: PUSH1 0x02
00000813: EXP
00000814: SUB
00000815: AND
00000816: PUSH1 0x00
00000818: DUP1
00000819: MLOAD
0000081a: PUSH1 0x20
0000081c: PUSH2 0x152d
0000081f: DUP4
00000820: CODECOPY
00000821: DUP2
00000822: MLOAD
00000823: SWAP2
00000824: MSTORE
00000825: DUP5
00000826: PUSH1 0x00
00000828: DUP2
00000829: SLOAD
0000082a: DUP2
0000082b: LT
0000082c: ISZERO
0000082d: ISZERO
0000082e: PUSH2 0x0833
00000831: JUMPI
00000832: INVALID
00000833: JUMPDEST
00000834: SWAP1
00000835: PUSH1 0x00
00000837: MSTORE
00000838: PUSH1 0x20
0000083a: PUSH1 0x00
0000083c: KECCAK256
0000083d: SWAP1
0000083e: PUSH1 0x03
00000840: MUL
00000841: ADD
00000842: PUSH1 0x01
00000844: ADD
00000845: DUP10
00000846: DUP7
00000847: PUSH1 0x00
00000849: DUP2
0000084a: SLOAD
0000084b: DUP2
0000084c: LT
0000084d: ISZERO
0000084e: ISZERO
0000084f: PUSH2 0x0854
00000852: JUMPI
00000853: INVALID
00000854: JUMPDEST
00000855: PUSH1 0x00
00000857: SWAP2
00000858: DUP3
00000859: MSTORE
0000085a: PUSH1 0x20
0000085c: SWAP2
0000085d: DUP3
0000085e: SWAP1
0000085f: KECCAK256
00000860: PUSH1 0x03
00000862: SWAP1
00000863: SWAP2
00000864: MUL
00000865: ADD
00000866: SLOAD
00000867: PUSH1 0x40
00000869: DUP1
0000086a: MLOAD
0000086b: SWAP3
0000086c: DUP4
0000086d: ADD
0000086e: DUP5
0000086f: SWAP1
00000870: MSTORE
00000871: DUP3
00000872: ADD
00000873: DUP2
00000874: SWAP1
00000875: MSTORE
00000876: PUSH1 0x02
00000878: PUSH1 0x60
0000087a: DUP4
0000087b: ADD
0000087c: DUP2
0000087d: SWAP1
0000087e: MSTORE
0000087f: PUSH1 0x80
00000881: DUP1
00000882: DUP5
00000883: MSTORE
00000884: DUP6
00000885: SLOAD
00000886: PUSH2 0x0100
00000889: PUSH1 0x01
0000088b: DUP3
0000088c: AND
0000088d: ISZERO
0000088e: MUL
0000088f: PUSH1 0x00
00000891: NOT
00000892: ADD
00000893: AND
00000894: DUP3
00000895: SWAP1
00000896: DIV
00000897: SWAP1
00000898: DUP5
00000899: ADD
0000089a: DUP2
0000089b: SWAP1
0000089c: MSTORE
0000089d: SWAP2
0000089e: SWAP3
0000089f: SWAP1
000008a0: SWAP2
000008a1: DUP2
000008a2: SWAP1
000008a3: PUSH1 0xa0
000008a5: DUP3
000008a6: ADD
000008a7: SWAP1
000008a8: DUP8
000008a9: SWAP1
000008aa: DUP1
000008ab: ISZERO
000008ac: PUSH2 0x08f6
000008af: JUMPI
000008b0: DUP1
000008b1: PUSH1 0x1f
000008b3: LT
000008b4: PUSH2 0x08cb
000008b7: JUMPI
000008b8: PUSH2 0x0100
000008bb: DUP1
000008bc: DUP4
000008bd: SLOAD
000008be: DIV
000008bf: MUL
000008c0: DUP4
000008c1: MSTORE
000008c2: SWAP2
000008c3: PUSH1 0x20
000008c5: ADD
000008c6: SWAP2
000008c7: PUSH2 0x08f6
000008ca: JUMP
000008cb: JUMPDEST
000008cc: DUP3
000008cd: ADD
000008ce: SWAP2
000008cf: SWAP1
000008d0: PUSH1 0x00
000008d2: MSTORE
000008d3: PUSH1 0x20
000008d5: PUSH1 0x00
000008d7: KECCAK256
000008d8: SWAP1
000008d9: JUMPDEST
000008da: DUP2
000008db: SLOAD
000008dc: DUP2
000008dd: MSTORE
000008de: SWAP1
000008df: PUSH1 0x01
000008e1: ADD
000008e2: SWAP1
000008e3: PUSH1 0x20
000008e5: ADD
000008e6: DUP1
000008e7: DUP4
000008e8: GT
000008e9: PUSH2 0x08d9
000008ec: JUMPI
000008ed: DUP3
000008ee: SWAP1
000008ef: SUB
000008f0: PUSH1 0x1f
000008f2: AND
000008f3: DUP3
000008f4: ADD
000008f5: SWAP2
000008f6: JUMPDEST
000008f7: POP
000008f8: POP
000008f9: SWAP6
000008fa: POP
000008fb: POP
000008fc: POP
000008fd: POP
000008fe: POP
000008ff: POP
00000900: PUSH1 0x40
00000902: MLOAD
00000903: DUP1
00000904: SWAP2
00000905: SUB
00000906: SWAP1
00000907: LOG4
00000908: JUMPDEST
00000909: DUP1
0000090a: PUSH1 0x00
0000090c: DUP2
0000090d: SLOAD
0000090e: DUP2
0000090f: LT
00000910: ISZERO
00000911: ISZERO
00000912: PUSH2 0x0917
00000915: JUMPI
00000916: INVALID
00000917: JUMPDEST
00000918: PUSH1 0x00
0000091a: SWAP2
0000091b: DUP3
0000091c: MSTORE
0000091d: PUSH1 0x20
0000091f: DUP3
00000920: KECCAK256
00000921: PUSH1 0x03
00000923: SWAP1
00000924: SWAP2
00000925: MUL
00000926: ADD
00000927: DUP2
00000928: DUP2
00000929: SSTORE
0000092a: SWAP1
0000092b: PUSH2 0x0937
0000092e: PUSH1 0x01
00000930: DUP4
00000931: ADD
00000932: DUP3
00000933: PUSH2 0x13ec
00000936: JUMP
00000937: JUMPDEST
00000938: POP
00000939: PUSH1 0x00
0000093b: PUSH1 0x02
0000093d: SWAP2
0000093e: SWAP1
0000093f: SWAP2
00000940: ADD
00000941: SSTORE
00000942: DUP1
00000943: SLOAD
00000944: PUSH2 0x0951
00000947: DUP3
00000948: PUSH1 0x00
0000094a: NOT
0000094b: DUP4
0000094c: ADD
0000094d: PUSH2 0x1433
00000950: JUMP
00000951: JUMPDEST
00000952: POP
00000953: POP
00000954: POP
00000955: POP
00000956: POP
00000957: POP
00000958: JUMP
00000959: JUMPDEST
0000095a: PUSH1 0x00
0000095c: DUP2
0000095d: PUSH1 0x00
0000095f: DUP2
00000960: MLOAD
00000961: DUP2
00000962: LT
00000963: ISZERO
00000964: ISZERO
00000965: PUSH2 0x096a
00000968: JUMPI
00000969: INVALID
0000096a: JUMPDEST
0000096b: SWAP1
0000096c: PUSH1 0x20
0000096e: ADD
0000096f: ADD
00000970: MLOAD
00000971: PUSH1 0xf8
00000973: PUSH1 0x02
00000975: EXP
00000976: SWAP1
00000977: DIV
00000978: PUSH1 0xf8
0000097a: PUSH1 0x02
0000097c: EXP
0000097d: MUL
0000097e: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000099e: NOT
0000099f: AND
000009a0: PUSH32 0x6a00000000000000000000000000000000000000000000000000000000000000
000009c1: EQ
000009c2: ISZERO
000009c3: ISZERO
000009c4: PUSH2 0x09cc
000009c7: JUMPI
000009c8: PUSH1 0x00
000009ca: DUP1
000009cb: REVERT
000009cc: JUMPDEST
000009cd: POP
000009ce: CALLER
000009cf: PUSH1 0x00
000009d1: SWAP1
000009d2: DUP2
000009d3: MSTORE
000009d4: PUSH32 0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49
000009f5: PUSH1 0x20
000009f7: MSTORE
000009f8: PUSH1 0x40
000009fa: SWAP1
000009fb: KECCAK256
000009fc: DUP1
000009fd: SLOAD
000009fe: ISZERO
000009ff: DUP1
00000a00: ISZERO
00000a01: PUSH2 0x0a15
00000a04: JUMPI
00000a05: POP
00000a06: PUSH11 0x084595161401484a000000
00000a12: CALLVALUE
00000a13: GT
00000a14: ISZERO
00000a15: JUMPDEST
00000a16: ISZERO
00000a17: ISZERO
00000a18: PUSH2 0x0a20
00000a1b: JUMPI
00000a1c: PUSH1 0x00
00000a1e: DUP1
00000a1f: REVERT
00000a20: JUMPDEST
00000a21: PUSH1 0x40
00000a23: DUP1
00000a24: MLOAD
00000a25: PUSH1 0x60
00000a27: DUP2
00000a28: ADD
00000a29: DUP3
00000a2a: MSTORE
00000a2b: CALLVALUE
00000a2c: DUP2
00000a2d: MSTORE
00000a2e: PUSH1 0x20
00000a30: DUP1
00000a31: DUP3
00000a32: ADD
00000a33: DUP6
00000a34: DUP2
00000a35: MSTORE
00000a36: PUSH1 0x00
00000a38: SWAP4
00000a39: DUP4
00000a3a: ADD
00000a3b: DUP5
00000a3c: SWAP1
00000a3d: MSTORE
00000a3e: DUP5
00000a3f: SLOAD
00000a40: PUSH1 0x01
00000a42: DUP2
00000a43: DUP2
00000a44: ADD
00000a45: DUP1
00000a46: DUP9
00000a47: SSTORE
00000a48: DUP8
00000a49: DUP8
00000a4a: MSTORE
00000a4b: SWAP6
00000a4c: DUP5
00000a4d: SWAP1
00000a4e: KECCAK256
00000a4f: DUP6
00000a50: MLOAD
00000a51: PUSH1 0x03
00000a53: SWAP1
00000a54: SWAP4
00000a55: MUL
00000a56: ADD
00000a57: SWAP2
00000a58: DUP3
00000a59: SSTORE
00000a5a: SWAP2
00000a5b: MLOAD
00000a5c: DUP1
00000a5d: MLOAD
00000a5e: SWAP2
00000a5f: SWAP4
00000a60: PUSH2 0x0a6e
00000a63: SWAP4
00000a64: DUP6
00000a65: ADD
00000a66: SWAP3
00000a67: SWAP2
00000a68: ADD
00000a69: SWAP1
00000a6a: PUSH2 0x1464
00000a6d: JUMP
00000a6e: JUMPDEST
00000a6f: POP
00000a70: PUSH1 0x40
00000a72: DUP3
00000a73: ADD
00000a74: MLOAD
00000a75: DUP2
00000a76: PUSH1 0x02
00000a78: ADD
00000a79: SSTORE
00000a7a: POP
00000a7b: POP
00000a7c: POP
00000a7d: CALLER
00000a7e: PUSH1 0x01
00000a80: PUSH1 0xa0
00000a82: PUSH1 0x02
00000a84: EXP
00000a85: SUB
00000a86: AND
00000a87: CALLER
00000a88: PUSH1 0x01
00000a8a: PUSH1 0xa0
00000a8c: PUSH1 0x02
00000a8e: EXP
00000a8f: SUB
00000a90: AND
00000a91: PUSH1 0x00
00000a93: PUSH1 0x00
00000a95: DUP1
00000a96: MLOAD
00000a97: PUSH1 0x20
00000a99: PUSH2 0x152d
00000a9c: DUP4
00000a9d: CODECOPY
00000a9e: DUP2
00000a9f: MLOAD
00000aa0: SWAP2
00000aa1: MSTORE
00000aa2: DUP6
00000aa3: PUSH1 0x00
00000aa5: CALLVALUE
00000aa6: PUSH1 0x00
00000aa8: PUSH1 0x40
00000aaa: MLOAD
00000aab: DUP1
00000aac: DUP1
00000aad: PUSH1 0x20
00000aaf: ADD
00000ab0: DUP6
00000ab1: PUSH1 0x01
00000ab3: MUL
00000ab4: PUSH1 0x00
00000ab6: NOT
00000ab7: AND
00000ab8: DUP2
00000ab9: MSTORE
00000aba: PUSH1 0x20
00000abc: ADD
00000abd: DUP5
00000abe: DUP2
00000abf: MSTORE
00000ac0: PUSH1 0x20
00000ac2: ADD
00000ac3: DUP4
00000ac4: DUP2
00000ac5: MSTORE
00000ac6: PUSH1 0x20
00000ac8: ADD
00000ac9: DUP3
00000aca: DUP2
00000acb: SUB
00000acc: DUP3
00000acd: MSTORE
00000ace: DUP7
00000acf: DUP2
00000ad0: DUP2
00000ad1: MLOAD
00000ad2: DUP2
00000ad3: MSTORE
00000ad4: PUSH1 0x20
00000ad6: ADD
00000ad7: SWAP2
00000ad8: POP
00000ad9: DUP1
00000ada: MLOAD
00000adb: SWAP1
00000adc: PUSH1 0x20
00000ade: ADD
00000adf: SWAP1
00000ae0: DUP1
00000ae1: DUP4
00000ae2: DUP4
00000ae3: PUSH1 0x00
00000ae5: JUMPDEST
00000ae6: DUP4
00000ae7: DUP2
00000ae8: LT
00000ae9: ISZERO
00000aea: PUSH2 0x0afd
00000aed: JUMPI
00000aee: DUP2
00000aef: DUP2
00000af0: ADD
00000af1: MLOAD
00000af2: DUP4
00000af3: DUP3
00000af4: ADD
00000af5: MSTORE
00000af6: PUSH1 0x20
00000af8: ADD
00000af9: PUSH2 0x0ae5
00000afc: JUMP
00000afd: JUMPDEST
00000afe: POP
00000aff: POP
00000b00: POP
00000b01: POP
00000b02: SWAP1
00000b03: POP
00000b04: SWAP1
00000b05: DUP2
00000b06: ADD
00000b07: SWAP1
00000b08: PUSH1 0x1f
00000b0a: AND
00000b0b: DUP1
00000b0c: ISZERO
00000b0d: PUSH2 0x0b2a
00000b10: JUMPI
00000b11: DUP1
00000b12: DUP3
00000b13: SUB
00000b14: DUP1
00000b15: MLOAD
00000b16: PUSH1 0x01
00000b18: DUP4
00000b19: PUSH1 0x20
00000b1b: SUB
00000b1c: PUSH2 0x0100
00000b1f: EXP
00000b20: SUB
00000b21: NOT
00000b22: AND
00000b23: DUP2
00000b24: MSTORE
00000b25: PUSH1 0x20
00000b27: ADD
00000b28: SWAP2
00000b29: POP
00000b2a: JUMPDEST
00000b2b: POP
00000b2c: SWAP6
00000b2d: POP
00000b2e: POP
00000b2f: POP
00000b30: POP
00000b31: POP
00000b32: POP
00000b33: PUSH1 0x40
00000b35: MLOAD
00000b36: DUP1
00000b37: SWAP2
00000b38: SUB
00000b39: SWAP1
00000b3a: LOG4
00000b3b: POP
00000b3c: POP
00000b3d: JUMP
00000b3e: JUMPDEST
00000b3f: PUSH1 0x00
00000b41: DUP1
00000b42: SLOAD
00000b43: PUSH1 0x01
00000b45: PUSH1 0xa0
00000b47: PUSH1 0x02
00000b49: EXP
00000b4a: SUB
00000b4b: AND
00000b4c: CALLER
00000b4d: EQ
00000b4e: DUP1
00000b4f: ISZERO
00000b50: PUSH2 0x0b64
00000b53: JUMPI
00000b54: POP
00000b55: PUSH11 0x084595161401484a000000
00000b61: DUP3
00000b62: GT
00000b63: ISZERO
00000b64: JUMPDEST
00000b65: ISZERO
00000b66: ISZERO
00000b67: PUSH2 0x0b6f
00000b6a: JUMPI
00000b6b: PUSH1 0x00
00000b6d: DUP1
00000b6e: REVERT
00000b6f: JUMPDEST
00000b70: POP
00000b71: ADDRESS
00000b72: BALANCE
00000b73: DUP2
00000b74: DUP2
00000b75: LT
00000b76: ISZERO
00000b77: PUSH2 0x0b7f
00000b7a: JUMPI
00000b7b: PUSH1 0x00
00000b7d: DUP1
00000b7e: REVERT
00000b7f: JUMPDEST
00000b80: PUSH1 0x40
00000b82: DUP1
00000b83: MLOAD
00000b84: DUP6
00000b85: DUP2
00000b86: MSTORE
00000b87: PUSH1 0x20
00000b89: DUP2
00000b8a: ADD
00000b8b: DUP5
00000b8c: SWAP1
00000b8d: MSTORE
00000b8e: DUP1
00000b8f: DUP3
00000b90: ADD
00000b91: DUP4
00000b92: SWAP1
00000b93: MSTORE
00000b94: SWAP1
00000b95: MLOAD
00000b96: PUSH1 0x01
00000b98: PUSH1 0xa0
00000b9a: PUSH1 0x02
00000b9c: EXP
00000b9d: SUB
00000b9e: DUP6
00000b9f: AND
00000ba0: SWAP2
00000ba1: PUSH1 0x00
00000ba3: SWAP2
00000ba4: PUSH32 0x83fa319e3dcab86af4165864bb9e9e884168247533a1e4abf5520b5f0321a0fe
00000bc5: SWAP2
00000bc6: DUP2
00000bc7: SWAP1
00000bc8: SUB
00000bc9: PUSH1 0x60
00000bcb: ADD
00000bcc: SWAP1
00000bcd: LOG3
00000bce: PUSH1 0x40
00000bd0: MLOAD
00000bd1: PUSH1 0x01
00000bd3: PUSH1 0xa0
00000bd5: PUSH1 0x02
00000bd7: EXP
00000bd8: SUB
00000bd9: DUP5
00000bda: AND
00000bdb: SWAP1
00000bdc: DUP4
00000bdd: ISZERO
00000bde: PUSH2 0x08fc
00000be1: MUL
00000be2: SWAP1
00000be3: DUP5
00000be4: SWAP1
00000be5: PUSH1 0x00
00000be7: DUP2
00000be8: DUP2
00000be9: DUP2
00000bea: DUP6
00000beb: DUP9
00000bec: DUP9
00000bed: CALL
00000bee: SWAP4
00000bef: POP
00000bf0: POP
00000bf1: POP
00000bf2: POP
00000bf3: ISZERO
00000bf4: DUP1
00000bf5: ISZERO
00000bf6: PUSH2 0x052e
00000bf9: JUMPI
00000bfa: RETURNDATASIZE
00000bfb: PUSH1 0x00
00000bfd: DUP1
00000bfe: RETURNDATACOPY
00000bff: RETURNDATASIZE
00000c00: PUSH1 0x00
00000c02: REVERT
00000c03: JUMPDEST
00000c04: PUSH1 0x00
00000c06: PUSH1 0x01
00000c08: PUSH1 0xa0
00000c0a: PUSH1 0x02
00000c0c: EXP
00000c0d: SUB
00000c0e: DUP3
00000c0f: AND
00000c10: ISZERO
00000c11: ISZERO
00000c12: PUSH2 0x0c1a
00000c15: JUMPI
00000c16: PUSH1 0x00
00000c18: DUP1
00000c19: REVERT
00000c1a: JUMPDEST
00000c1b: PUSH1 0x40
00000c1d: DUP1
00000c1e: MLOAD
00000c1f: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00000c40: DUP2
00000c41: MSTORE
00000c42: ADDRESS
00000c43: PUSH1 0x04
00000c45: DUP3
00000c46: ADD
00000c47: MSTORE
00000c48: SWAP1
00000c49: MLOAD
00000c4a: PUSH1 0x01
00000c4c: PUSH1 0xa0
00000c4e: PUSH1 0x02
00000c50: EXP
00000c51: SUB
00000c52: DUP5
00000c53: AND
00000c54: SWAP2
00000c55: PUSH4 0x70a08231
00000c5a: SWAP2
00000c5b: PUSH1 0x24
00000c5d: DUP1
00000c5e: DUP4
00000c5f: ADD
00000c60: SWAP3
00000c61: PUSH1 0x20
00000c63: SWAP3
00000c64: SWAP2
00000c65: SWAP1
00000c66: DUP3
00000c67: SWAP1
00000c68: SUB
00000c69: ADD
00000c6a: DUP2
00000c6b: PUSH1 0x00
00000c6d: DUP8
00000c6e: DUP1
00000c6f: EXTCODESIZE
00000c70: ISZERO
00000c71: DUP1
00000c72: ISZERO
00000c73: PUSH2 0x0c7b
00000c76: JUMPI
00000c77: PUSH1 0x00
00000c79: DUP1
00000c7a: REVERT
00000c7b: JUMPDEST
00000c7c: POP
00000c7d: GAS
00000c7e: CALL
00000c7f: ISZERO
00000c80: DUP1
00000c81: ISZERO
00000c82: PUSH2 0x0c8f
00000c85: JUMPI
00000c86: RETURNDATASIZE
00000c87: PUSH1 0x00
00000c89: DUP1
00000c8a: RETURNDATACOPY
00000c8b: RETURNDATASIZE
00000c8c: PUSH1 0x00
00000c8e: REVERT
00000c8f: JUMPDEST
00000c90: POP
00000c91: POP
00000c92: POP
00000c93: POP
00000c94: PUSH1 0x40
00000c96: MLOAD
00000c97: RETURNDATASIZE
00000c98: PUSH1 0x20
00000c9a: DUP2
00000c9b: LT
00000c9c: ISZERO
00000c9d: PUSH2 0x0ca5
00000ca0: JUMPI
00000ca1: PUSH1 0x00
00000ca3: DUP1
00000ca4: REVERT
00000ca5: JUMPDEST
00000ca6: POP
00000ca7: MLOAD
00000ca8: SWAP3
00000ca9: SWAP2
00000caa: POP
00000cab: POP
00000cac: JUMP
00000cad: JUMPDEST
00000cae: PUSH1 0x00
00000cb0: DUP1
00000cb1: DUP1
00000cb2: PUSH1 0x01
00000cb4: PUSH1 0xa0
00000cb6: PUSH1 0x02
00000cb8: EXP
00000cb9: SUB
00000cba: DUP7
00000cbb: AND
00000cbc: ISZERO
00000cbd: ISZERO
00000cbe: PUSH2 0x0cc6
00000cc1: JUMPI
00000cc2: PUSH1 0x00
00000cc4: DUP1
00000cc5: REVERT
00000cc6: JUMPDEST
00000cc7: DUP7
00000cc8: PUSH1 0x00
00000cca: DUP2
00000ccb: MLOAD
00000ccc: DUP2
00000ccd: LT
00000cce: ISZERO
00000ccf: ISZERO
00000cd0: PUSH2 0x0cd5
00000cd3: JUMPI
00000cd4: INVALID
00000cd5: JUMPDEST
00000cd6: PUSH1 0x20
00000cd8: SWAP2
00000cd9: ADD
00000cda: ADD
00000cdb: MLOAD
00000cdc: PUSH1 0xf8
00000cde: PUSH1 0x02
00000ce0: EXP
00000ce1: SWAP1
00000ce2: DUP2
00000ce3: SWAP1
00000ce4: DIV
00000ce5: MUL
00000ce6: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000
00000d07: AND
00000d08: PUSH32 0x6a00000000000000000000000000000000000000000000000000000000000000
00000d29: EQ
00000d2a: SWAP3
00000d2b: POP
00000d2c: PUSH1 0x00
00000d2e: DUP5
00000d2f: GT
00000d30: SWAP2
00000d31: POP
00000d32: DUP3
00000d33: PUSH2 0x0d3b
00000d36: JUMPI
00000d37: PUSH1 0x00
00000d39: DUP1
00000d3a: REVERT
00000d3b: JUMPDEST
00000d3c: POP
00000d3d: PUSH1 0x01
00000d3f: PUSH1 0xa0
00000d41: PUSH1 0x02
00000d43: EXP
00000d44: SUB
00000d45: DUP6
00000d46: AND
00000d47: PUSH1 0x00
00000d49: SWAP1
00000d4a: DUP2
00000d4b: MSTORE
00000d4c: PUSH1 0x01
00000d4e: PUSH1 0x20
00000d50: SWAP1
00000d51: DUP2
00000d52: MSTORE
00000d53: PUSH1 0x40
00000d55: DUP1
00000d56: DUP4
00000d57: KECCAK256
00000d58: CALLER
00000d59: DUP5
00000d5a: MSTORE
00000d5b: SWAP1
00000d5c: SWAP2
00000d5d: MSTORE
00000d5e: SWAP1
00000d5f: KECCAK256
00000d60: DUP1
00000d61: SLOAD
00000d62: ISZERO
00000d63: DUP1
00000d64: ISZERO
00000d65: PUSH2 0x0d79
00000d68: JUMPI
00000d69: POP
00000d6a: PUSH11 0x084595161401484a000000
00000d76: DUP6
00000d77: GT
00000d78: ISZERO
00000d79: JUMPDEST
00000d7a: ISZERO
00000d7b: ISZERO
00000d7c: PUSH2 0x0d84
00000d7f: JUMPI
00000d80: PUSH1 0x00
00000d82: DUP1
00000d83: REVERT
00000d84: JUMPDEST
00000d85: DUP2
00000d86: ISZERO
00000d87: PUSH2 0x0dba
00000d8a: JUMPI
00000d8b: PUSH1 0x00
00000d8d: DUP5
00000d8e: DUP2
00000d8f: MSTORE
00000d90: PUSH1 0x02
00000d92: PUSH1 0x20
00000d94: MSTORE
00000d95: PUSH1 0x40
00000d97: SWAP1
00000d98: KECCAK256
00000d99: SLOAD
00000d9a: ISZERO
00000d9b: PUSH2 0x0da3
00000d9e: JUMPI
00000d9f: PUSH1 0x00
00000da1: DUP1
00000da2: REVERT
00000da3: JUMPDEST
00000da4: PUSH1 0x00
00000da6: DUP5
00000da7: DUP2
00000da8: MSTORE
00000da9: PUSH1 0x02
00000dab: PUSH1 0x20
00000dad: MSTORE
00000dae: PUSH1 0x40
00000db0: SWAP1
00000db1: KECCAK256
00000db2: PUSH1 0x01
00000db4: SWAP1
00000db5: SSTORE
00000db6: PUSH2 0x0e5f
00000db9: JUMP
00000dba: JUMPDEST
00000dbb: PUSH1 0x40
00000dbd: DUP1
00000dbe: MLOAD
00000dbf: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
00000de0: DUP2
00000de1: MSTORE
00000de2: CALLER
00000de3: PUSH1 0x04
00000de5: DUP3
00000de6: ADD
00000de7: MSTORE
00000de8: ADDRESS
00000de9: PUSH1 0x24
00000deb: DUP3
00000dec: ADD
00000ded: MSTORE
00000dee: PUSH1 0x44
00000df0: DUP2
00000df1: ADD
00000df2: DUP8
00000df3: SWAP1
00000df4: MSTORE
00000df5: SWAP1
00000df6: MLOAD
00000df7: PUSH1 0x01
00000df9: PUSH1 0xa0
00000dfb: PUSH1 0x02
00000dfd: EXP
00000dfe: SUB
00000dff: DUP9
00000e00: AND
00000e01: SWAP2
00000e02: PUSH4 0x23b872dd
00000e07: SWAP2
00000e08: PUSH1 0x64
00000e0a: DUP1
00000e0b: DUP4
00000e0c: ADD
00000e0d: SWAP3
00000e0e: PUSH1 0x20
00000e10: SWAP3
00000e11: SWAP2
00000e12: SWAP1
00000e13: DUP3
00000e14: SWAP1
00000e15: SUB
00000e16: ADD
00000e17: DUP2
00000e18: PUSH1 0x00
00000e1a: DUP8
00000e1b: DUP1
00000e1c: EXTCODESIZE
00000e1d: ISZERO
00000e1e: DUP1
00000e1f: ISZERO
00000e20: PUSH2 0x0e28
00000e23: JUMPI
00000e24: PUSH1 0x00
00000e26: DUP1
00000e27: REVERT
00000e28: JUMPDEST
00000e29: POP
00000e2a: GAS
00000e2b: CALL
00000e2c: ISZERO
00000e2d: DUP1
00000e2e: ISZERO
00000e2f: PUSH2 0x0e3c
00000e32: JUMPI
00000e33: RETURNDATASIZE
00000e34: PUSH1 0x00
00000e36: DUP1
00000e37: RETURNDATACOPY
00000e38: RETURNDATASIZE
00000e39: PUSH1 0x00
00000e3b: REVERT
00000e3c: JUMPDEST
00000e3d: POP
00000e3e: POP
00000e3f: POP
00000e40: POP
00000e41: PUSH1 0x40
00000e43: MLOAD
00000e44: RETURNDATASIZE
00000e45: PUSH1 0x20
00000e47: DUP2
00000e48: LT
00000e49: ISZERO
00000e4a: PUSH2 0x0e52
00000e4d: JUMPI
00000e4e: PUSH1 0x00
00000e50: DUP1
00000e51: REVERT
00000e52: JUMPDEST
00000e53: POP
00000e54: MLOAD
00000e55: ISZERO
00000e56: ISZERO
00000e57: PUSH2 0x0e5f
00000e5a: JUMPI
00000e5b: PUSH1 0x00
00000e5d: DUP1
00000e5e: REVERT
00000e5f: JUMPDEST
00000e60: PUSH1 0x40
00000e62: DUP1
00000e63: MLOAD
00000e64: PUSH1 0x60
00000e66: DUP2
00000e67: ADD
00000e68: DUP3
00000e69: MSTORE
00000e6a: DUP7
00000e6b: DUP2
00000e6c: MSTORE
00000e6d: PUSH1 0x20
00000e6f: DUP1
00000e70: DUP3
00000e71: ADD
00000e72: DUP11
00000e73: DUP2
00000e74: MSTORE
00000e75: PUSH1 0x00
00000e77: SWAP4
00000e78: DUP4
00000e79: ADD
00000e7a: DUP5
00000e7b: SWAP1
00000e7c: MSTORE
00000e7d: DUP5
00000e7e: SLOAD
00000e7f: PUSH1 0x01
00000e81: DUP2
00000e82: DUP2
00000e83: ADD
00000e84: DUP1
00000e85: DUP9
00000e86: SSTORE
00000e87: DUP8
00000e88: DUP8
00000e89: MSTORE
00000e8a: SWAP6
00000e8b: DUP5
00000e8c: SWAP1
00000e8d: KECCAK256
00000e8e: DUP6
00000e8f: MLOAD
00000e90: PUSH1 0x03
00000e92: SWAP1
00000e93: SWAP4
00000e94: MUL
00000e95: ADD
00000e96: SWAP2
00000e97: DUP3
00000e98: SSTORE
00000e99: SWAP2
00000e9a: MLOAD
00000e9b: DUP1
00000e9c: MLOAD
00000e9d: SWAP2
00000e9e: SWAP4
00000e9f: PUSH2 0x0ead
00000ea2: SWAP4
00000ea3: DUP6
00000ea4: ADD
00000ea5: SWAP3
00000ea6: SWAP2
00000ea7: ADD
00000ea8: SWAP1
00000ea9: PUSH2 0x1464
00000eac: JUMP
00000ead: JUMPDEST
00000eae: POP
00000eaf: PUSH1 0x40
00000eb1: SWAP2
00000eb2: DUP3
00000eb3: ADD
00000eb4: MLOAD
00000eb5: PUSH1 0x02
00000eb7: SWAP1
00000eb8: SWAP2
00000eb9: ADD
00000eba: SSTORE
00000ebb: DUP1
00000ebc: MLOAD
00000ebd: PUSH1 0x20
00000ebf: DUP1
00000ec0: DUP3
00000ec1: ADD
00000ec2: DUP9
00000ec3: SWAP1
00000ec4: MSTORE
00000ec5: SWAP2
00000ec6: DUP2
00000ec7: ADD
00000ec8: DUP9
00000ec9: SWAP1
00000eca: MSTORE
00000ecb: PUSH1 0x00
00000ecd: PUSH1 0x60
00000ecf: DUP3
00000ed0: ADD
00000ed1: DUP2
00000ed2: SWAP1
00000ed3: MSTORE
00000ed4: PUSH1 0x80
00000ed6: DUP1
00000ed7: DUP4
00000ed8: MSTORE
00000ed9: DUP12
00000eda: MLOAD
00000edb: SWAP1
00000edc: DUP4
00000edd: ADD
00000ede: MSTORE
00000edf: DUP11
00000ee0: MLOAD
00000ee1: CALLER
00000ee2: SWAP5
00000ee3: POP
00000ee4: DUP5
00000ee5: SWAP4
00000ee6: PUSH1 0x01
00000ee8: PUSH1 0xa0
00000eea: PUSH1 0x02
00000eec: EXP
00000eed: SUB
00000eee: DUP13
00000eef: AND
00000ef0: SWAP4
00000ef1: PUSH1 0x00
00000ef3: DUP1
00000ef4: MLOAD
00000ef5: PUSH1 0x20
00000ef7: PUSH2 0x152d
00000efa: DUP4
00000efb: CODECOPY
00000efc: DUP2
00000efd: MLOAD
00000efe: SWAP2
00000eff: MSTORE
00000f00: SWAP4
00000f01: DUP15
00000f02: SWAP4
00000f03: DUP13
00000f04: SWAP4
00000f05: DUP15
00000f06: SWAP4
00000f07: SWAP2
00000f08: DUP3
00000f09: SWAP2
00000f0a: PUSH1 0xa0
00000f0c: DUP4
00000f0d: ADD
00000f0e: SWAP2
00000f0f: SWAP1
00000f10: DUP9
00000f11: ADD
00000f12: SWAP1
00000f13: DUP1
00000f14: DUP4
00000f15: DUP4
00000f16: DUP9
00000f17: JUMPDEST
00000f18: DUP4
00000f19: DUP2
00000f1a: LT
00000f1b: ISZERO
00000f1c: PUSH2 0x0f2f
00000f1f: JUMPI
00000f20: DUP2
00000f21: DUP2
00000f22: ADD
00000f23: MLOAD
00000f24: DUP4
00000f25: DUP3
00000f26: ADD
00000f27: MSTORE
00000f28: PUSH1 0x20
00000f2a: ADD
00000f2b: PUSH2 0x0f17
00000f2e: JUMP
00000f2f: JUMPDEST
00000f30: POP
00000f31: POP
00000f32: POP
00000f33: POP
00000f34: SWAP1
00000f35: POP
00000f36: SWAP1
00000f37: DUP2
00000f38: ADD
00000f39: SWAP1
00000f3a: PUSH1 0x1f
00000f3c: AND
00000f3d: DUP1
00000f3e: ISZERO
00000f3f: PUSH2 0x0f5c
00000f42: JUMPI
00000f43: DUP1
00000f44: DUP3
00000f45: SUB
00000f46: DUP1
00000f47: MLOAD
00000f48: PUSH1 0x01
00000f4a: DUP4
00000f4b: PUSH1 0x20
00000f4d: SUB
00000f4e: PUSH2 0x0100
00000f51: EXP
00000f52: SUB
00000f53: NOT
00000f54: AND
00000f55: DUP2
00000f56: MSTORE
00000f57: PUSH1 0x20
00000f59: ADD
00000f5a: SWAP2
00000f5b: POP
00000f5c: JUMPDEST
00000f5d: POP
00000f5e: SWAP6
00000f5f: POP
00000f60: POP
00000f61: POP
00000f62: POP
00000f63: POP
00000f64: POP
00000f65: PUSH1 0x40
00000f67: MLOAD
00000f68: DUP1
00000f69: SWAP2
00000f6a: SUB
00000f6b: SWAP1
00000f6c: LOG4
00000f6d: POP
00000f6e: POP
00000f6f: POP
00000f70: POP
00000f71: POP
00000f72: POP
00000f73: POP
00000f74: JUMP
00000f75: JUMPDEST
00000f76: PUSH1 0x00
00000f78: DUP1
00000f79: SLOAD
00000f7a: DUP2
00000f7b: SWAP1
00000f7c: PUSH1 0x01
00000f7e: PUSH1 0xa0
00000f80: PUSH1 0x02
00000f82: EXP
00000f83: SUB
00000f84: AND
00000f85: CALLER
00000f86: EQ
00000f87: PUSH2 0x0f8f
00000f8a: JUMPI
00000f8b: PUSH1 0x00
00000f8d: DUP1
00000f8e: REVERT
00000f8f: JUMPDEST
00000f90: PUSH1 0x01
00000f92: PUSH1 0xa0
00000f94: PUSH1 0x02
00000f96: EXP
00000f97: SUB
00000f98: DUP5
00000f99: AND
00000f9a: PUSH1 0x00
00000f9c: SWAP1
00000f9d: DUP2
00000f9e: MSTORE
00000f9f: PUSH32 0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49
00000fc0: PUSH1 0x20
00000fc2: MSTORE
00000fc3: PUSH1 0x40
00000fc5: SWAP1
00000fc6: KECCAK256
00000fc7: DUP1
00000fc8: SLOAD
00000fc9: SWAP1
00000fca: SWAP3
00000fcb: POP
00000fcc: PUSH1 0x01
00000fce: EQ
00000fcf: PUSH2 0x0fd7
00000fd2: JUMPI
00000fd3: PUSH1 0x00
00000fd5: DUP1
00000fd6: REVERT
00000fd7: JUMPDEST
00000fd8: PUSH7 0x038d7ea4c68000
00000fe0: DUP3
00000fe1: PUSH1 0x00
00000fe3: DUP2
00000fe4: SLOAD
00000fe5: DUP2
00000fe6: LT
00000fe7: ISZERO
00000fe8: ISZERO
00000fe9: PUSH2 0x0fee
00000fec: JUMPI
00000fed: INVALID
00000fee: JUMPDEST
00000fef: PUSH1 0x00
00000ff1: SWAP2
00000ff2: DUP3
00000ff3: MSTORE
00000ff4: PUSH1 0x20
00000ff6: SWAP1
00000ff7: SWAP2
00000ff8: KECCAK256
00000ff9: PUSH1 0x03
00000ffb: SWAP1
00000ffc: SWAP2
00000ffd: MUL
00000ffe: ADD
00000fff: SLOAD
00001000: GT
00001001: PUSH2 0x1009
00001004: JUMPI
00001005: PUSH1 0x00
00001007: DUP1
00001008: REVERT
00001009: JUMPDEST
0000100a: DUP3
0000100b: PUSH1 0x01
0000100d: EQ
0000100e: ISZERO
0000100f: PUSH2 0x1120
00001012: JUMPI
00001013: DUP4
00001014: PUSH1 0x01
00001016: PUSH1 0xa0
00001018: PUSH1 0x02
0000101a: EXP
0000101b: SUB
0000101c: AND
0000101d: CALLER
0000101e: PUSH1 0x01
00001020: PUSH1 0xa0
00001022: PUSH1 0x02
00001024: EXP
00001025: SUB
00001026: AND
00001027: PUSH1 0x00
00001029: PUSH1 0x00
0000102b: DUP1
0000102c: MLOAD
0000102d: PUSH1 0x20
0000102f: PUSH2 0x152d
00001032: DUP4
00001033: CODECOPY
00001034: DUP2
00001035: MLOAD
00001036: SWAP2
00001037: MSTORE
00001038: DUP6
00001039: PUSH1 0x00
0000103b: DUP2
0000103c: SLOAD
0000103d: DUP2
0000103e: LT
0000103f: ISZERO
00001040: ISZERO
00001041: PUSH2 0x1046
00001044: JUMPI
00001045: INVALID
00001046: JUMPDEST
00001047: SWAP1
00001048: PUSH1 0x00
0000104a: MSTORE
0000104b: PUSH1 0x20
0000104d: PUSH1 0x00
0000104f: KECCAK256
00001050: SWAP1
00001051: PUSH1 0x03
00001053: MUL
00001054: ADD
00001055: PUSH1 0x01
00001057: ADD
00001058: DUP10
00001059: DUP8
0000105a: PUSH1 0x00
0000105c: DUP2
0000105d: SLOAD
0000105e: DUP2
0000105f: LT
00001060: ISZERO
00001061: ISZERO
00001062: PUSH2 0x1067
00001065: JUMPI
00001066: INVALID
00001067: JUMPDEST
00001068: PUSH1 0x00
0000106a: SWAP2
0000106b: DUP3
0000106c: MSTORE
0000106d: PUSH1 0x20
0000106f: SWAP2
00001070: DUP3
00001071: SWAP1
00001072: KECCAK256
00001073: PUSH1 0x03
00001075: SWAP1
00001076: SWAP2
00001077: MUL
00001078: ADD
00001079: SLOAD
0000107a: PUSH1 0x40
0000107c: DUP1
0000107d: MLOAD
0000107e: SWAP3
0000107f: DUP4
00001080: ADD
00001081: DUP5
00001082: SWAP1
00001083: MSTORE
00001084: DUP3
00001085: ADD
00001086: DUP2
00001087: SWAP1
00001088: MSTORE
00001089: PUSH1 0x01
0000108b: PUSH1 0x60
0000108d: DUP4
0000108e: ADD
0000108f: DUP2
00001090: SWAP1
00001091: MSTORE
00001092: PUSH1 0x80
00001094: DUP1
00001095: DUP5
00001096: MSTORE
00001097: DUP6
00001098: SLOAD
00001099: PUSH1 0x02
0000109b: PUSH2 0x0100
0000109e: DUP3
0000109f: DUP6
000010a0: AND
000010a1: ISZERO
000010a2: MUL
000010a3: PUSH1 0x00
000010a5: NOT
000010a6: ADD
000010a7: SWAP1
000010a8: SWAP2
000010a9: AND
000010aa: DIV
000010ab: SWAP1
000010ac: DUP5
000010ad: ADD
000010ae: DUP2
000010af: SWAP1
000010b0: MSTORE
000010b1: SWAP2
000010b2: SWAP3
000010b3: SWAP1
000010b4: SWAP2
000010b5: DUP2
000010b6: SWAP1
000010b7: PUSH1 0xa0
000010b9: DUP3
000010ba: ADD
000010bb: SWAP1
000010bc: DUP8
000010bd: SWAP1
000010be: DUP1
000010bf: ISZERO
000010c0: PUSH2 0x110a
000010c3: JUMPI
000010c4: DUP1
000010c5: PUSH1 0x1f
000010c7: LT
000010c8: PUSH2 0x10df
000010cb: JUMPI
000010cc: PUSH2 0x0100
000010cf: DUP1
000010d0: DUP4
000010d1: SLOAD
000010d2: DIV
000010d3: MUL
000010d4: DUP4
000010d5: MSTORE
000010d6: SWAP2
000010d7: PUSH1 0x20
000010d9: ADD
000010da: SWAP2
000010db: PUSH2 0x110a
000010de: JUMP
000010df: JUMPDEST
000010e0: DUP3
000010e1: ADD
000010e2: SWAP2
000010e3: SWAP1
000010e4: PUSH1 0x00
000010e6: MSTORE
000010e7: PUSH1 0x20
000010e9: PUSH1 0x00
000010eb: KECCAK256
000010ec: SWAP1
000010ed: JUMPDEST
000010ee: DUP2
000010ef: SLOAD
000010f0: DUP2
000010f1: MSTORE
000010f2: SWAP1
000010f3: PUSH1 0x01
000010f5: ADD
000010f6: SWAP1
000010f7: PUSH1 0x20
000010f9: ADD
000010fa: DUP1
000010fb: DUP4
000010fc: GT
000010fd: PUSH2 0x10ed
00001100: JUMPI
00001101: DUP3
00001102: SWAP1
00001103: SUB
00001104: PUSH1 0x1f
00001106: AND
00001107: DUP3
00001108: ADD
00001109: SWAP2
0000110a: JUMPDEST
0000110b: POP
0000110c: POP
0000110d: SWAP6
0000110e: POP
0000110f: POP
00001110: POP
00001111: POP
00001112: POP
00001113: POP
00001114: PUSH1 0x40
00001116: MLOAD
00001117: DUP1
00001118: SWAP2
00001119: SUB
0000111a: SWAP1
0000111b: LOG4
0000111c: PUSH2 0x1296
0000111f: JUMP
00001120: JUMPDEST
00001121: PUSH2 0x1151
00001124: DUP3
00001125: PUSH1 0x00
00001127: DUP2
00001128: SLOAD
00001129: DUP2
0000112a: LT
0000112b: ISZERO
0000112c: ISZERO
0000112d: PUSH2 0x1132
00001130: JUMPI
00001131: INVALID
00001132: JUMPDEST
00001133: SWAP1
00001134: PUSH1 0x00
00001136: MSTORE
00001137: PUSH1 0x20
00001139: PUSH1 0x00
0000113b: KECCAK256
0000113c: SWAP1
0000113d: PUSH1 0x03
0000113f: MUL
00001140: ADD
00001141: PUSH1 0x00
00001143: ADD
00001144: SLOAD
00001145: PUSH7 0x038d7ea4c68000
0000114d: PUSH2 0x13da
00001150: JUMP
00001151: JUMPDEST
00001152: SWAP1
00001153: POP
00001154: ADDRESS
00001155: BALANCE
00001156: DUP2
00001157: GT
00001158: ISZERO
00001159: PUSH2 0x1161
0000115c: JUMPI
0000115d: PUSH1 0x00
0000115f: DUP1
00001160: REVERT
00001161: JUMPDEST
00001162: DUP4
00001163: PUSH1 0x01
00001165: PUSH1 0xa0
00001167: PUSH1 0x02
00001169: EXP
0000116a: SUB
0000116b: AND
0000116c: CALLER
0000116d: PUSH1 0x01
0000116f: PUSH1 0xa0
00001171: PUSH1 0x02
00001173: EXP
00001174: SUB
00001175: AND
00001176: PUSH1 0x00
00001178: PUSH1 0x00
0000117a: DUP1
0000117b: MLOAD
0000117c: PUSH1 0x20
0000117e: PUSH2 0x152d
00001181: DUP4
00001182: CODECOPY
00001183: DUP2
00001184: MLOAD
00001185: SWAP2
00001186: MSTORE
00001187: DUP6
00001188: PUSH1 0x00
0000118a: DUP2
0000118b: SLOAD
0000118c: DUP2
0000118d: LT
0000118e: ISZERO
0000118f: ISZERO
00001190: PUSH2 0x1195
00001193: JUMPI
00001194: INVALID
00001195: JUMPDEST
00001196: SWAP1
00001197: PUSH1 0x00
00001199: MSTORE
0000119a: PUSH1 0x20
0000119c: PUSH1 0x00
0000119e: KECCAK256
0000119f: SWAP1
000011a0: PUSH1 0x03
000011a2: MUL
000011a3: ADD
000011a4: PUSH1 0x01
000011a6: ADD
000011a7: DUP10
000011a8: DUP7
000011a9: PUSH1 0x02
000011ab: PUSH1 0x40
000011ad: MLOAD
000011ae: DUP1
000011af: DUP1
000011b0: PUSH1 0x20
000011b2: ADD
000011b3: DUP6
000011b4: PUSH1 0x00
000011b6: NOT
000011b7: AND
000011b8: PUSH1 0x00
000011ba: NOT
000011bb: AND
000011bc: DUP2
000011bd: MSTORE
000011be: PUSH1 0x20
000011c0: ADD
000011c1: DUP5
000011c2: DUP2
000011c3: MSTORE
000011c4: PUSH1 0x20
000011c6: ADD
000011c7: DUP4
000011c8: DUP2
000011c9: MSTORE
000011ca: PUSH1 0x20
000011cc: ADD
000011cd: DUP3
000011ce: DUP2
000011cf: SUB
000011d0: DUP3
000011d1: MSTORE
000011d2: DUP7
000011d3: DUP2
000011d4: DUP2
000011d5: SLOAD
000011d6: PUSH1 0x01
000011d8: DUP2
000011d9: PUSH1 0x01
000011db: AND
000011dc: ISZERO
000011dd: PUSH2 0x0100
000011e0: MUL
000011e1: SUB
000011e2: AND
000011e3: PUSH1 0x02
000011e5: SWAP1
000011e6: DIV
000011e7: DUP2
000011e8: MSTORE
000011e9: PUSH1 0x20
000011eb: ADD
000011ec: SWAP2
000011ed: POP
000011ee: DUP1
000011ef: SLOAD
000011f0: PUSH1 0x01
000011f2: DUP2
000011f3: PUSH1 0x01
000011f5: AND
000011f6: ISZERO
000011f7: PUSH2 0x0100
000011fa: MUL
000011fb: SUB
000011fc: AND
000011fd: PUSH1 0x02
000011ff: SWAP1
00001200: DIV
00001201: DUP1
00001202: ISZERO
00001203: PUSH2 0x124d
00001206: JUMPI
00001207: DUP1
00001208: PUSH1 0x1f
0000120a: LT
0000120b: PUSH2 0x1222
0000120e: JUMPI
0000120f: PUSH2 0x0100
00001212: DUP1
00001213: DUP4
00001214: SLOAD
00001215: DIV
00001216: MUL
00001217: DUP4
00001218: MSTORE
00001219: SWAP2
0000121a: PUSH1 0x20
0000121c: ADD
0000121d: SWAP2
0000121e: PUSH2 0x124d
00001221: JUMP
00001222: JUMPDEST
00001223: DUP3
00001224: ADD
00001225: SWAP2
00001226: SWAP1
00001227: PUSH1 0x00
00001229: MSTORE
0000122a: PUSH1 0x20
0000122c: PUSH1 0x00
0000122e: KECCAK256
0000122f: SWAP1
00001230: JUMPDEST
00001231: DUP2
00001232: SLOAD
00001233: DUP2
00001234: MSTORE
00001235: SWAP1
00001236: PUSH1 0x01
00001238: ADD
00001239: SWAP1
0000123a: PUSH1 0x20
0000123c: ADD
0000123d: DUP1
0000123e: DUP4
0000123f: GT
00001240: PUSH2 0x1230
00001243: JUMPI
00001244: DUP3
00001245: SWAP1
00001246: SUB
00001247: PUSH1 0x1f
00001249: AND
0000124a: DUP3
0000124b: ADD
0000124c: SWAP2
0000124d: JUMPDEST
0000124e: POP
0000124f: POP
00001250: SWAP6
00001251: POP
00001252: POP
00001253: POP
00001254: POP
00001255: POP
00001256: POP
00001257: PUSH1 0x40
00001259: MLOAD
0000125a: DUP1
0000125b: SWAP2
0000125c: SUB
0000125d: SWAP1
0000125e: LOG4
0000125f: PUSH1 0x40
00001261: MLOAD
00001262: PUSH1 0x01
00001264: PUSH1 0xa0
00001266: PUSH1 0x02
00001268: EXP
00001269: SUB
0000126a: DUP6
0000126b: AND
0000126c: SWAP1
0000126d: DUP3
0000126e: ISZERO
0000126f: PUSH2 0x08fc
00001272: MUL
00001273: SWAP1
00001274: DUP4
00001275: SWAP1
00001276: PUSH1 0x00
00001278: DUP2
00001279: DUP2
0000127a: DUP2
0000127b: DUP6
0000127c: DUP9
0000127d: DUP9
0000127e: CALL
0000127f: SWAP4
00001280: POP
00001281: POP
00001282: POP
00001283: POP
00001284: ISZERO
00001285: DUP1
00001286: ISZERO
00001287: PUSH2 0x1294
0000128a: JUMPI
0000128b: RETURNDATASIZE
0000128c: PUSH1 0x00
0000128e: DUP1
0000128f: RETURNDATACOPY
00001290: RETURNDATASIZE
00001291: PUSH1 0x00
00001293: REVERT
00001294: JUMPDEST
00001295: POP
00001296: JUMPDEST
00001297: DUP2
00001298: PUSH1 0x00
0000129a: DUP2
0000129b: SLOAD
0000129c: DUP2
0000129d: LT
0000129e: ISZERO
0000129f: ISZERO
000012a0: PUSH2 0x12a5
000012a3: JUMPI
000012a4: INVALID
000012a5: JUMPDEST
000012a6: PUSH1 0x00
000012a8: SWAP2
000012a9: DUP3
000012aa: MSTORE
000012ab: PUSH1 0x20
000012ad: DUP3
000012ae: KECCAK256
000012af: PUSH1 0x03
000012b1: SWAP1
000012b2: SWAP2
000012b3: MUL
000012b4: ADD
000012b5: DUP2
000012b6: DUP2
000012b7: SSTORE
000012b8: SWAP1
000012b9: PUSH2 0x12c5
000012bc: PUSH1 0x01
000012be: DUP4
000012bf: ADD
000012c0: DUP3
000012c1: PUSH2 0x13ec
000012c4: JUMP
000012c5: JUMPDEST
000012c6: POP
000012c7: PUSH1 0x00
000012c9: PUSH1 0x02
000012cb: SWAP2
000012cc: SWAP1
000012cd: SWAP2
000012ce: ADD
000012cf: SSTORE
000012d0: DUP2
000012d1: SLOAD
000012d2: PUSH2 0x0951
000012d5: DUP4
000012d6: PUSH1 0x00
000012d8: NOT
000012d9: DUP4
000012da: ADD
000012db: PUSH2 0x1433
000012de: JUMP
000012df: JUMPDEST
000012e0: PUSH1 0x01
000012e2: PUSH1 0x20
000012e4: MSTORE
000012e5: DUP3
000012e6: PUSH1 0x00
000012e8: MSTORE
000012e9: PUSH1 0x40
000012eb: PUSH1 0x00
000012ed: KECCAK256
000012ee: PUSH1 0x20
000012f0: MSTORE
000012f1: DUP2
000012f2: PUSH1 0x00
000012f4: MSTORE
000012f5: PUSH1 0x40
000012f7: PUSH1 0x00
000012f9: KECCAK256
000012fa: DUP2
000012fb: DUP2
000012fc: SLOAD
000012fd: DUP2
000012fe: LT
000012ff: ISZERO
00001300: ISZERO
00001301: PUSH2 0x1306
00001304: JUMPI
00001305: INVALID
00001306: JUMPDEST
00001307: PUSH1 0x00
00001309: SWAP2
0000130a: DUP3
0000130b: MSTORE
0000130c: PUSH1 0x20
0000130e: SWAP2
0000130f: DUP3
00001310: SWAP1
00001311: KECCAK256
00001312: PUSH1 0x03
00001314: SWAP2
00001315: SWAP1
00001316: SWAP2
00001317: MUL
00001318: ADD
00001319: DUP1
0000131a: SLOAD
0000131b: PUSH1 0x01
0000131d: DUP1
0000131e: DUP4
0000131f: ADD
00001320: DUP1
00001321: SLOAD
00001322: PUSH1 0x40
00001324: DUP1
00001325: MLOAD
00001326: PUSH1 0x02
00001328: SWAP5
00001329: DUP4
0000132a: AND
0000132b: ISZERO
0000132c: PUSH2 0x0100
0000132f: MUL
00001330: PUSH1 0x00
00001332: NOT
00001333: ADD
00001334: SWAP1
00001335: SWAP3
00001336: AND
00001337: SWAP4
00001338: SWAP1
00001339: SWAP4
0000133a: DIV
0000133b: PUSH1 0x1f
0000133d: DUP2
0000133e: ADD
0000133f: DUP8
00001340: SWAP1
00001341: DIV
00001342: DUP8
00001343: MUL
00001344: DUP3
00001345: ADD
00001346: DUP8
00001347: ADD
00001348: SWAP1
00001349: SWAP4
0000134a: MSTORE
0000134b: DUP3
0000134c: DUP2
0000134d: MSTORE
0000134e: SWAP3
0000134f: SWAP8
00001350: POP
00001351: SWAP3
00001352: SWAP6
00001353: POP
00001354: SWAP1
00001355: SWAP4
00001356: POP
00001357: SWAP1
00001358: SWAP2
00001359: DUP4
0000135a: ADD
0000135b: DUP3
0000135c: DUP3
0000135d: DUP1
0000135e: ISZERO
0000135f: PUSH2 0x13a9
00001362: JUMPI
00001363: DUP1
00001364: PUSH1 0x1f
00001366: LT
00001367: PUSH2 0x137e
0000136a: JUMPI
0000136b: PUSH2 0x0100
0000136e: DUP1
0000136f: DUP4
00001370: SLOAD
00001371: DIV
00001372: MUL
00001373: DUP4
00001374: MSTORE
00001375: SWAP2
00001376: PUSH1 0x20
00001378: ADD
00001379: SWAP2
0000137a: PUSH2 0x13a9
0000137d: JUMP
0000137e: JUMPDEST
0000137f: DUP3
00001380: ADD
00001381: SWAP2
00001382: SWAP1
00001383: PUSH1 0x00
00001385: MSTORE
00001386: PUSH1 0x20
00001388: PUSH1 0x00
0000138a: KECCAK256
0000138b: SWAP1
0000138c: JUMPDEST
0000138d: DUP2
0000138e: SLOAD
0000138f: DUP2
00001390: MSTORE
00001391: SWAP1
00001392: PUSH1 0x01
00001394: ADD
00001395: SWAP1
00001396: PUSH1 0x20
00001398: ADD
00001399: DUP1
0000139a: DUP4
0000139b: GT
0000139c: PUSH2 0x138c
0000139f: JUMPI
000013a0: DUP3
000013a1: SWAP1
000013a2: SUB
000013a3: PUSH1 0x1f
000013a5: AND
000013a6: DUP3
000013a7: ADD
000013a8: SWAP2
000013a9: JUMPDEST
000013aa: POP
000013ab: POP
000013ac: POP
000013ad: POP
000013ae: POP
000013af: SWAP1
000013b0: DUP1
000013b1: PUSH1 0x02
000013b3: ADD
000013b4: SLOAD
000013b5: SWAP1
000013b6: POP
000013b7: DUP4
000013b8: JUMP
000013b9: JUMPDEST
000013ba: PUSH1 0x00
000013bc: SLOAD
000013bd: PUSH1 0x01
000013bf: PUSH1 0xa0
000013c1: PUSH1 0x02
000013c3: EXP
000013c4: SUB
000013c5: AND
000013c6: DUP2
000013c7: JUMP
000013c8: JUMPDEST
000013c9: PUSH1 0x00
000013cb: SWAP1
000013cc: DUP2
000013cd: MSTORE
000013ce: PUSH1 0x02
000013d0: PUSH1 0x20
000013d2: MSTORE
000013d3: PUSH1 0x40
000013d5: SWAP1
000013d6: KECCAK256
000013d7: SLOAD
000013d8: SWAP1
000013d9: JUMP
000013da: JUMPDEST
000013db: PUSH1 0x00
000013dd: DUP3
000013de: DUP3
000013df: GT
000013e0: ISZERO
000013e1: PUSH2 0x13e6
000013e4: JUMPI
000013e5: INVALID
000013e6: JUMPDEST
000013e7: POP
000013e8: SWAP1
000013e9: SUB
000013ea: SWAP1
000013eb: JUMP
000013ec: JUMPDEST
000013ed: POP
000013ee: DUP1
000013ef: SLOAD
000013f0: PUSH1 0x01
000013f2: DUP2
000013f3: PUSH1 0x01
000013f5: AND
000013f6: ISZERO
000013f7: PUSH2 0x0100
000013fa: MUL
000013fb: SUB
000013fc: AND
000013fd: PUSH1 0x02
000013ff: SWAP1
00001400: DIV
00001401: PUSH1 0x00
00001403: DUP3
00001404: SSTORE
00001405: DUP1
00001406: PUSH1 0x1f
00001408: LT
00001409: PUSH2 0x1412
0000140c: JUMPI
0000140d: POP
0000140e: PUSH2 0x1430
00001411: JUMP
00001412: JUMPDEST
00001413: PUSH1 0x1f
00001415: ADD
00001416: PUSH1 0x20
00001418: SWAP1
00001419: DIV
0000141a: SWAP1
0000141b: PUSH1 0x00
0000141d: MSTORE
0000141e: PUSH1 0x20
00001420: PUSH1 0x00
00001422: KECCAK256
00001423: SWAP1
00001424: DUP2
00001425: ADD
00001426: SWAP1
00001427: PUSH2 0x1430
0000142a: SWAP2
0000142b: SWAP1
0000142c: PUSH2 0x14e2
0000142f: JUMP
00001430: JUMPDEST
00001431: POP
00001432: JUMP
00001433: JUMPDEST
00001434: DUP2
00001435: SLOAD
00001436: DUP2
00001437: DUP4
00001438: SSTORE
00001439: DUP2
0000143a: DUP2
0000143b: GT
0000143c: ISZERO
0000143d: PUSH2 0x145f
00001440: JUMPI
00001441: PUSH1 0x03
00001443: MUL
00001444: DUP2
00001445: PUSH1 0x03
00001447: MUL
00001448: DUP4
00001449: PUSH1 0x00
0000144b: MSTORE
0000144c: PUSH1 0x20
0000144e: PUSH1 0x00
00001450: KECCAK256
00001451: SWAP2
00001452: DUP3
00001453: ADD
00001454: SWAP2
00001455: ADD
00001456: PUSH2 0x145f
00001459: SWAP2
0000145a: SWAP1
0000145b: PUSH2 0x14fc
0000145e: JUMP
0000145f: JUMPDEST
00001460: POP
00001461: POP
00001462: POP
00001463: JUMP
00001464: JUMPDEST
00001465: DUP3
00001466: DUP1
00001467: SLOAD
00001468: PUSH1 0x01
0000146a: DUP2
0000146b: PUSH1 0x01
0000146d: AND
0000146e: ISZERO
0000146f: PUSH2 0x0100
00001472: MUL
00001473: SUB
00001474: AND
00001475: PUSH1 0x02
00001477: SWAP1
00001478: DIV
00001479: SWAP1
0000147a: PUSH1 0x00
0000147c: MSTORE
0000147d: PUSH1 0x20
0000147f: PUSH1 0x00
00001481: KECCAK256
00001482: SWAP1
00001483: PUSH1 0x1f
00001485: ADD
00001486: PUSH1 0x20
00001488: SWAP1
00001489: DIV
0000148a: DUP2
0000148b: ADD
0000148c: SWAP3
0000148d: DUP3
0000148e: PUSH1 0x1f
00001490: LT
00001491: PUSH2 0x14a5
00001494: JUMPI
00001495: DUP1
00001496: MLOAD
00001497: PUSH1 0xff
00001499: NOT
0000149a: AND
0000149b: DUP4
0000149c: DUP1
0000149d: ADD
0000149e: OR
0000149f: DUP6
000014a0: SSTORE
000014a1: PUSH2 0x14d2
000014a4: JUMP
000014a5: JUMPDEST
000014a6: DUP3
000014a7: DUP1
000014a8: ADD
000014a9: PUSH1 0x01
000014ab: ADD
000014ac: DUP6
000014ad: SSTORE
000014ae: DUP3
000014af: ISZERO
000014b0: PUSH2 0x14d2
000014b3: JUMPI
000014b4: SWAP2
000014b5: DUP3
000014b6: ADD
000014b7: JUMPDEST
000014b8: DUP3
000014b9: DUP2
000014ba: GT
000014bb: ISZERO
000014bc: PUSH2 0x14d2
000014bf: JUMPI
000014c0: DUP3
000014c1: MLOAD
000014c2: DUP3
000014c3: SSTORE
000014c4: SWAP2
000014c5: PUSH1 0x20
000014c7: ADD
000014c8: SWAP2
000014c9: SWAP1
000014ca: PUSH1 0x01
000014cc: ADD
000014cd: SWAP1
000014ce: PUSH2 0x14b7
000014d1: JUMP
000014d2: JUMPDEST
000014d3: POP
000014d4: PUSH2 0x14de
000014d7: SWAP3
000014d8: SWAP2
000014d9: POP
000014da: PUSH2 0x14e2
000014dd: JUMP
000014de: JUMPDEST
000014df: POP
000014e0: SWAP1
000014e1: JUMP
000014e2: JUMPDEST
000014e3: PUSH2 0x0538
000014e6: SWAP2
000014e7: SWAP1
000014e8: JUMPDEST
000014e9: DUP1
000014ea: DUP3
000014eb: GT
000014ec: ISZERO
000014ed: PUSH2 0x14de
000014f0: JUMPI
000014f1: PUSH1 0x00
000014f3: DUP2
000014f4: SSTORE
000014f5: PUSH1 0x01
000014f7: ADD
000014f8: PUSH2 0x14e8
000014fb: JUMP
000014fc: JUMPDEST
000014fd: PUSH2 0x0538
00001500: SWAP2
00001501: SWAP1
00001502: JUMPDEST
00001503: DUP1
00001504: DUP3
00001505: GT
00001506: ISZERO
00001507: PUSH2 0x14de
0000150a: JUMPI
0000150b: PUSH1 0x00
0000150d: DUP1
0000150e: DUP3
0000150f: SSTORE
00001510: PUSH2 0x151c
00001513: PUSH1 0x01
00001515: DUP4
00001516: ADD
00001517: DUP3
00001518: PUSH2 0x13ec
0000151b: JUMP
0000151c: JUMPDEST
0000151d: POP
0000151e: PUSH1 0x00
00001520: PUSH1 0x02
00001522: DUP3
00001523: ADD
00001524: SSTORE
00001525: PUSH1 0x03
00001527: ADD
00001528: PUSH2 0x1502
0000152b: JUMP
0000152c: STOP
0000152d: DUP12
0000152e: SELFDESTRUCT
0000152f: SGT
00001530: UNKNOWN(0x24)
00001531: UNKNOWN(0xB0)
00001532: STATICCALL
00001533: PUSH30 0x97bc7fbd7f353ac82329a90efae36ccaef984e02f333bcd484a165627a7a
00001552: PUSH19 0x3058201cbc4d051d0268c805de5073f954feea
00001566: MOD
00001567: BLOBHASH
00001568: UNKNOWN(0x2E)
00001569: UNKNOWN(0x2C)
0000156a: UNKNOWN(0xAB)
0000156b: CODESIZE
0000156c: SWAP12
0000156d: DUP9
0000156e: SWAP6
0000156f: ORIGIN
00001570: OR
00001571: PUSH7

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x1e2284ed",
            "selector": "0x1e2284ed",
            "calldata_variants": [
                "0x1e2284ed",
                "0x1e2284ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4adae0da",
            "selector": "0x4adae0da",
            "calldata_variants": [
                "0x4adae0da",
                "0x4adae0da0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98e0b39a",
            "selector": "0x98e0b39a",
            "calldata_variants": [
                "0x98e0b39a",
                "0x98e0b39a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x997805d4",
            "selector": "0x997805d4",
            "calldata_variants": [
                "0x997805d4",
                "0x997805d40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa26e1186",
            "selector": "0xa26e1186",
            "calldata_variants": [
                "0xa26e1186",
                "0xa26e11860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6fb97d1",
            "selector": "0xa6fb97d1",
            "calldata_variants": [
                "0xa6fb97d1",
                "0xa6fb97d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad2de9b0",
            "selector": "0xad2de9b0",
            "calldata_variants": [
                "0xad2de9b0",
                "0xad2de9b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc2c5164",
            "selector": "0xcc2c5164",
            "calldata_variants": [
                "0xcc2c5164",
                "0xcc2c51640000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 5487,
            "type": "tx_origin_used"
        }
    ]
}
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xadf92b7cae4a946e4e654e57ce890afe08dce46b68dd16a27c9e2e5ba4412f70
call_targets: 0x96541c4926a32ea3a97fd8d335aff1f81e50ffe9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xadf92b7cae4a946e4e654e57ce890afe08dce46b68dd16a27c9e2e5ba4412f70",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x96541c4926a32ea3a97fd8d335aff1f81e50ffe9"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x1e2284ed",
            "selector": "0x1e2284ed",
            "calldata_variants": [
                "0x1e2284ed",
                "0x1e2284ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4adae0da",
            "selector": "0x4adae0da",
            "calldata_variants": [
                "0x4adae0da",
                "0x4adae0da0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98e0b39a",
            "selector": "0x98e0b39a",
            "calldata_variants": [
                "0x98e0b39a",
                "0x98e0b39a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x997805d4",
            "selector": "0x997805d4",
            "calldata_variants": [
                "0x997805d4",
                "0x997805d40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa26e1186",
            "selector": "0xa26e1186",
            "calldata_variants": [
                "0xa26e1186",
                "0xa26e11860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6fb97d1",
            "selector": "0xa6fb97d1",
            "calldata_variants": [
                "0xa6fb97d1",
                "0xa6fb97d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad2de9b0",
            "selector": "0xad2de9b0",
            "calldata_variants": [
                "0xad2de9b0",
                "0xad2de9b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc2c5164",
            "selector": "0xcc2c5164",
            "calldata_variants": [
                "0xcc2c5164",
                "0xcc2c51640000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1011,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1274,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3053,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": [
        {
            "pc": 5487,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x562c1b9dd7f428da630378218d394337cd53a5c1f5775cf344fc631de11129c5
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 24,
    "trace_id": "0x562c1b9dd7f428da630378218d394337cd53a5c1f5775cf344fc631de11129c5",
    "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": "0x1e2284ed",
            "selector": "0x1e2284ed",
            "calldata_variants": [
                "0x1e2284ed",
                "0x1e2284ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4adae0da",
            "selector": "0x4adae0da",
            "calldata_variants": [
                "0x4adae0da",
                "0x4adae0da0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98e0b39a",
            "selector": "0x98e0b39a",
            "calldata_variants": [
                "0x98e0b39a",
                "0x98e0b39a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x997805d4",
            "selector": "0x997805d4",
            "calldata_variants": [
                "0x997805d4",
                "0x997805d40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa26e1186",
            "selector": "0xa26e1186",
            "calldata_variants": [
                "0xa26e1186",
                "0xa26e11860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6fb97d1",
            "selector": "0xa6fb97d1",
            "calldata_variants": [
                "0xa6fb97d1",
                "0xa6fb97d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad2de9b0",
            "selector": "0xad2de9b0",
            "calldata_variants": [
                "0xad2de9b0",
                "0xad2de9b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc2c5164",
            "selector": "0xcc2c5164",
            "calldata_variants": [
                "0xcc2c5164",
                "0xcc2c51640000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 5487,
            "type": "tx_origin_used"
        }
    ],
    "selfdestruct_count": 1
}
medium access_control codex Privileged owner can sweep custodial ETH and ERC20 balances 75 no
view
evidence_json
{
    "evidence": "`pc:0x349` begins with a slot-0 owner check (`SLOAD` -> masked address -> `CALLER EQ`). That path performs `balanceOf(address(this))` on an arbitrary token at `pc:0x3f3` and then an ERC20 `transfer` call (`0xa9059cbb`) at `pc:0x4fa`. A second owner-gated path at `pc:0xb3e` performs a raw ETH `CALL` at `pc:0xbed`. Separately, the contract records depositor balances via storage updates on payable/token-deposit flows (for example `pc:0xa3e-0xa7a` and `pc:0xe7d-0xe98`), so these sweeps can bypass internal accounting.",
    "locations": [
        "selector:0x1e2284ed",
        "pc:0x349",
        "pc:0x3f3",
        "pc:0x4fa",
        "selector:0xa6fb97d1",
        "pc:0xb3e",
        "pc:0xbed",
        "selector:0xf851a440"
    ],
    "recommendation": "Remove arbitrary owner sweep capability for user-backed assets, or restrict it to tightly-scoped rescue flows behind a multisig/timelock and explicit asset allowlists. If admin rescue must exist, reconcile or block withdrawal of assets that back user balances.",
    "exploit_scenario": "If this contract is used as a custody/escrow/exchange balance holder, the slot-0 owner can call the admin withdrawal paths to send ERC20 or ETH from the contract to an arbitrary recipient. Because user balances are also tracked in storage elsewhere, those sweeps can leave users with unbacked claims or an insolvent pool. The apparent per-call cap does not prevent draining over multiple transactions."
}
medium other codex Token deposits credit the requested amount, not the amount actually received 75 no
view
evidence_json
{
    "evidence": "In the `selector:0xcc2c5164` path, the contract builds calldata for standard ERC20 `transferFrom(address,address,uint256)` (`0x23b872dd`) at `pc:0xdbf-0xe16` and executes the external call at `pc:0xe2b`. After only checking call success / returned bool (`pc:0xe2c-0xe5e`), it immediately increments internal storage balances at `pc:0xe7d-0xe98` and related counters at `pc:0xeae-0xebb`. No pre/post `balanceOf` delta is observed on this path before crediting.",
    "locations": [
        "selector:0xcc2c5164",
        "pc:0xdbf",
        "pc:0xe2b",
        "pc:0xe7d",
        "pc:0xe98",
        "pc:0xeae"
    ],
    "recommendation": "Measure actual tokens received by comparing pre/post balances, or only support a vetted allowlist of vanilla ERC20s whose transfers are known to be 1:1. Do not credit user balances solely from the requested `amount` parameter.",
    "exploit_scenario": "A user can deposit a fee-on-transfer, rebasing, or otherwise non-standard ERC20 that returns success from `transferFrom` while delivering fewer tokens than requested. The contract then credits the user's internal balance with the full requested amount, allowing later withdrawal/trading against more balance than the contract actually holds and potentially socializing the deficit to other users."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xadf92b7cae4a946e4e654e57ce890afe08dce46b68dd16a27c9e2e5ba4412f70
call_targets: 0x96541c4926a32ea3a97fd8d335aff1f81e50ffe9
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xadf92b7cae4a946e4e654e57ce890afe08dce46b68dd16a27c9e2e5ba4412f70",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x96541c4926a32ea3a97fd8d335aff1f81e50ffe9"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x1e2284ed",
            "selector": "0x1e2284ed",
            "calldata_variants": [
                "0x1e2284ed",
                "0x1e2284ed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4adae0da",
            "selector": "0x4adae0da",
            "calldata_variants": [
                "0x4adae0da",
                "0x4adae0da0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98e0b39a",
            "selector": "0x98e0b39a",
            "calldata_variants": [
                "0x98e0b39a",
                "0x98e0b39a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x997805d4",
            "selector": "0x997805d4",
            "calldata_variants": [
                "0x997805d4",
                "0x997805d40000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa26e1186",
            "selector": "0xa26e1186",
            "calldata_variants": [
                "0xa26e1186",
                "0xa26e11860000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa6fb97d1",
            "selector": "0xa6fb97d1",
            "calldata_variants": [
                "0xa6fb97d1",
                "0xa6fb97d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xad2de9b0",
            "selector": "0xad2de9b0",
            "calldata_variants": [
                "0xad2de9b0",
                "0xad2de9b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc2c5164",
            "selector": "0xcc2c5164",
            "calldata_variants": [
                "0xcc2c5164",
                "0xcc2c51640000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1011,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1274,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3053,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [
        {
            "pc": 5487,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 6
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 7
}