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

Analysis Run

019b3836-4070-73ff-9bdf-855dfff3d504

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

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
5219 artifact.fetch complete 1 / 3 3 months ago
5220 tool.cast_disasm complete 1 / 3 3 months ago
48668 analysis.bundle complete 1 / 3 1 week ago
48669 capability.graph complete 1 / 3 1 week ago
48670 detector.run complete 1 / 3 1 week ago
48671 validation.fork complete 1 / 3 1 week ago
113295 report.consolidate complete 1 / 6 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Bytecode suggests an ERC20-like token with owner-controlled parameters plus callback-style extensions. The strongest risk is a public allowance/callback path that writes state and then performs an external CALL to a user-supplied address without a detected reentrancy guard. A second public path also reaches a computed CALL with unresolved target/value; because this is bytecode-only analysis, that second issue is lower confidence.
View stdout
{"no_findings":false,"summary":"Bytecode suggests an ERC20-like token with owner-controlled parameters plus callback-style extensions. The strongest risk is a public allowance/callback path that writes state and then performs an external CALL to a user-supplied address without a detected reentrancy guard. A second public path also reaches a computed CALL with unresolved target/value; because this is bytecode-only analysis, that second issue is lower confidence.","findings":[{"severity":"medium","category":"reentrancy","title":"Callback-style allowance flow writes state before calling an untrusted contract","exploit_scenario":"A user invokes selector 0xcae9ca51 with an attacker-controlled spender contract. The function stores a value into a slot-8-like mapping at pc 0x364 and then calls the supplied address at pc 0x425 using callback selector 0x8f4ffcb1. Because the callee receives control after the write and no reentrancy guard was detected, the spender can reenter token logic such as transfer/transferFrom or other custom functions while the freshly written allowance/state is live.","recommendation":"Treat this path as check-effects-interactions sensitive. Add an explicit reentrancy guard around callback entrypoints, constrain callbacks to trusted targets if possible, and avoid leaving temporary approval/state live across the external call. If callback behavior is intended, document the risk and validate returndata explicitly.","evidence":"Selector 0xcae9ca51 enters at pc 0x2d1. The bytecode copies user-supplied bytes, performs an SSTORE at pc 0x364 to a keccak-derived slot, then executes CALL at pc 0x425 to the masked calldata address cd[0x4]. The artifact reports no detected auth guards, and the callsite metadata marks CALL targets/value as computed with returndata checking unknown. The call payload starts with selector 0x8f4ffcb1, consistent with a callback/approve-and-call pattern.","locations":["selector:0xcae9ca51","pc:0x364","pc:0x425"]},{"severity":"low","category":"other","title":"Public function 0xe4849b32 reaches a computed external CALL with ambiguous target/value","exploit_scenario":"An externally callable path beginning at selector 0xe4849b32 reaches CALL pc 0x856 after only a balance-like threshold check, not an owner-style check. If calldata or mutable state influence the destination or ETH amount, an attacker with the prerequisite balance could route execution into attacker-controlled code and potentially trigger unexpected side effects or reentrancy. Because only bytecode is available, the exact destination/value semantics remain uncertain.","recommendation":"Audit selector 0xe4849b32 at source level or with traces against known inputs. Constrain the destination to a trusted constant or vetted interface, avoid low-level CALL where possible, validate returndata, and add a reentrancy guard if the call is intentionally public.","evidence":"The selector table exposes public selector 0xe4849b32. Its path checks a slot-7-like balance condition around pc 0x482-0x4ad, then proceeds to CALL pc 0x856. The bundle callsite metadata marks this CALL as computed target/computed value with returndata_checked=null, and the artifact has no detected auth guards. Detector output also confirms reachable CALL sinks with variable targets, but the exact semantics of this specific path cannot be proven from bytecode alone.","locations":["selector:0xe4849b32","pc:0x4ad","pc:0x856"]}]}
View stderr
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-dw1e6a6j
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5c3d-3584-7c72-b91e-c654cc50218a
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

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

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

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc 'pwd && rg --files' in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
/tmp/codex-dw1e6a6j
codex-output-schema.json
BYTECODE_BUNDLE.json

exec
/bin/bash -lc "wc -c BYTECODE_BUNDLE.json && sed -n '1,260p' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
181092 BYTECODE_BUNDLE.json
{
  "analysis_artifact": {
    "address": "0x47e3b185398c178c89cad8bda809d037462008a9",
    "artifact_hash": "0x239f959deb52b2b0864393aafd921906fd2dce60c72fa067a478fae2b04e3cb5",
    "artifact_json": {
      "auth": {
        "guards": []
      },
      "basic_blocks": [
        {
          "end_pc": 10,
          "hash": "0xf6fa896c78200211a2ca6e1b165b4e9685d4727ad609c41f07a5d3162d788ed7",
          "opcodes": [
            "PUSH1",
            "PUSH1",
            "MSTORE",
            "CALLDATASIZE",
            "ISZERO",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 0
        },
        {
          "end_pc": 30,
          "hash": "0xaa8508e79922bef88de7680412ebb93d9b8132af38a790d94ddd35af4ee3a037",
          "opcodes": [
            "PUSH1",
            "PUSH1",
            "EXP",
            "PUSH1",
            "CALLDATALOAD",
            "DIV",
            "PUSH4",
            "OP_81",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 11
        },
        {
          "end_pc": 41,
          "hash": "0x99719e856f48bd75b92ac93bf06034d38494c7dac1d0f3ed6653b6e1bf9750ca",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 31
        },
        {
          "end_pc": 52,
          "hash": "0x56c66b4f18ac653e3ff09ec9ac1ada47fcba82b1f13369586bb78a5e813e6bb9",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 42
        },
        {
          "end_pc": 63,
          "hash": "0x930168b52e472355110186433922de45bc8231fd780bab61206332657b096892",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 53
        },
        {
          "end_pc": 74,
          "hash": "0x4c32ba1ac8c88786fe1ca127dab04b8304545c3c5ad4f5466833986eb17b5338",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 64
        },
        {
          "end_pc": 85,
          "hash": "0x6c7273896767103e3785a54fe9673f0b1f68b1303d4aea11fad1c51e0019ffe5",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 75
        },
        {
          "end_pc": 96,
          "hash": "0x873ca376ec44d8194b32d64d75680767ae7bc46e2fc9a8ae19e3e0797b9e63c4",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 86
        },
        {
          "end_pc": 107,
          "hash": "0x13edb0156227b3456f643b34470534eb76fceec30c14f604a48e4ba8f9e6a404",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 97
        },
        {
          "end_pc": 118,
          "hash": "0x976ae12cb4a3f950fde210b0123acc4baf7764b00a36c16dcab9a4ae3da13f12",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 108
        },
        {
          "end_pc": 129,
          "hash": "0xb496755ff668dbf52227a1ce407046b77e34fd6f3d4887fbd6715e9d600ccf6e",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 119
        },
        {
          "end_pc": 140,
          "hash": "0xbf7c66d1d098246e9257d708b8e1f484663d602b6e58809e9a355b2cef164653",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 130
        },
        {
          "end_pc": 151,
          "hash": "0xbf5904f7cd1fc3795aa3da8b60d8ac86c585b167fa2b4c14cd8507889d65579a",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 141
        },
        {
          "end_pc": 162,
          "hash": "0xe5e42d2f2eb13fbd61a1f321c79cd5d6f5cafd8ea6bd76601666bcc2a78251e7",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 152
        },
        {
          "end_pc": 173,
          "hash": "0x5aeb831fb43090f6662c8f02bc5771ceb3635f318f9a3f4574f16badd9960630",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 163
        },
        {
          "end_pc": 184,
          "hash": "0x80df280cb60d437d980381bb4bd5a7022245428d86d4cc43daf10c3d8d36d24c",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 174
        },
        {
          "end_pc": 195,
          "hash": "0x73d755749374743def218e6a5c0addf73b0815477405ee90024c003de597826d",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 185
        },
        {
          "end_pc": 206,
          "hash": "0xeb4e20f1fde12488fdef13b5d832bddaff35784ed7ba34624af119f62e2dfb68",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 196
        },
        {
          "end_pc": 217,
          "hash": "0xdc92189328a98ef1669923503c5da2e19723704d405fc058c1a4d5ffd1e6d69a",
          "opcodes": [
            "OP_80",
            "PUSH4",
            "EQ",
            "PUSH2",
            "JUMPI"
          ],
          "start_pc": 207
        },
        {
          "end_pc": 219,
          "hash": "0x2286a7c0717c300debce089d669bb16374df7df3d8fc4fbb3b828285ee4a4fd0",
          "opcodes": [
            "JUMPDEST",
            "STOP"
          ],
          "start_pc": 218
        },
        {
          "end_pc": 285,
          "hash": "0xf29097d4001f65af8eb82840d868d8a949e7cd31210d4400680f7f39b70bc599",
          "opcodes": [
            "JUMPDEST",
            "PUSH1",

exec
/bin/bash -lc "sed -n '1,200p' codex-output-schema.json" in /tmp/codex-dw1e6a6j
 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-dw1e6a6j
 succeeded in 0ms:
[
  "analysis_artifact",
  "analysis_run",
  "artifact",
  "capability_graph",
  "detector_findings",
  "heuristics_summary"
]

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

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.dispatcher_type, .analysis_artifact.artifact_json.selectors, .analysis_artifact.artifact_json.function_entries, .analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
"selector_jump_table"
[
  "0x06fdde03",
  "0x18160ddd",
  "0x1fe9eabc",
  "0x23b872dd",
  "0x313ce567",
  "0x41fa4876",
  "0x70a08231",
  "0x8da5cb5b",
  "0x95d89b41",
  "0xa6f2ae3a",
  "0xa9059cbb",
  "0xaa295de9",
  "0xcae9ca51",
  "0xdc3080f2",
  "0xdd62ed3e",
  "0xe4849b32",
  "0xf2fde38b",
  "0xff9b3acf"
]
[
  {
    "entry_pc": null,
    "selector": "0x06fdde03"
  },
  {
    "entry_pc": 535423676,
    "selector": "0x18160ddd"
  },
  {
    "entry_pc": 599290589,
    "selector": "0x1fe9eabc"
  },
  {
    "entry_pc": 826074471,
    "selector": "0x23b872dd"
  },
  {
    "entry_pc": 1106921590,
    "selector": "0x313ce567"
  },
  {
    "entry_pc": 1889567281,
    "selector": "0x41fa4876"
  },
  {
    "entry_pc": 2376452955,
    "selector": "0x70a08231"
  },
  {
    "entry_pc": 2514000705,
    "selector": "0x8da5cb5b"
  },
  {
    "entry_pc": 2800922170,
    "selector": "0x95d89b41"
  },
  {
    "entry_pc": 2835717307,
    "selector": "0xa6f2ae3a"
  },
  {
    "entry_pc": 2854837737,
    "selector": "0xa9059cbb"
  },
  {
    "entry_pc": 3404319313,
    "selector": "0xaa295de9"
  },
  {
    "entry_pc": 3694166258,
    "selector": "0xcae9ca51"
  },
  {
    "entry_pc": 3714247998,
    "selector": "0xdc3080f2"
  },
  {
    "entry_pc": 3833895730,
    "selector": "0xdd62ed3e"
  },
  {
    "entry_pc": 4076725131,
    "selector": "0xe4849b32"
  },
  {
    "entry_pc": 4288363215,
    "selector": "0xf2fde38b"
  },
  {
    "entry_pc": null,
    "selector": "0xff9b3acf"
  }
]
[
  {
    "auth": {
      "guards": []
    },
    "entry_pc": null,
    "selector": "0x06fdde03",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 535423676,
    "selector": "0x18160ddd",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 599290589,
    "selector": "0x1fe9eabc",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 826074471,
    "selector": "0x23b872dd",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 1106921590,
    "selector": "0x313ce567",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 1889567281,
    "selector": "0x41fa4876",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 2376452955,
    "selector": "0x70a08231",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 2514000705,
    "selector": "0x8da5cb5b",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 2800922170,
    "selector": "0x95d89b41",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 2835717307,
    "selector": "0xa6f2ae3a",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 2854837737,
    "selector": "0xa9059cbb",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 3404319313,
    "selector": "0xaa295de9",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 3694166258,
    "selector": "0xcae9ca51",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 3714247998,
    "selector": "0xdc3080f2",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 3833895730,
    "selector": "0xdd62ed3e",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 4076725131,
    "selector": "0xe4849b32",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 4288363215,
    "selector": "0xf2fde38b",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": null,
    "selector": "0xff9b3acf",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 38,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 228,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 299,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 319,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 331,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 412,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 534,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 553,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 623,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 643,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 718,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SSTORE",
          "pc": 868,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1211,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1241,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1829,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1936,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2031,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        }
      ],
      "writes": 14
    }
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
[
  {
    "opcode": "CALL",
    "pc": 993,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 1061,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 1307,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 2134,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALLCODE",
    "pc": 2426,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 2444,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
{
  "keccak_count": 32,
  "reads": 38,
  "slots": [
    {
      "op": "SLOAD",
      "pc": 228,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
    },
    {
      "op": "SLOAD",
      "pc": 299,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 319,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
    },
    {
      "op": "SLOAD",
      "pc": 331,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 412,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
    },
    {
      "op": "SLOAD",
      "pc": 534,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 553,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
    },
    {
      "op": "SLOAD",
      "pc": 623,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 643,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
    },
    {
      "op": "SLOAD",
      "pc": 718,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
    },
    {
      "op": "SSTORE",
      "pc": 868,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1211,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1241,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 1829,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1936,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 2031,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    }
  ],
  "writes": 14
}

exec
/bin/bash -lc "jq '.detector_findings, .heuristics_summary' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
[
  {
    "confidence": 60,
    "evidence_json": {
      "call_count": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 993,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1061,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1307,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        }
      ],
      "guards_detected": [],
      "untrusted_call_count": 6
    },
    "normalized_json": {
      "sink": "CALL"
    },
    "severity": "high",
    "title": "Untrusted CALL target/value reachable",
    "validated": true,
    "validation_json": {
      "attempts": 1,
      "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x47e3b185398c178c89cad8bda809d037462008a9"
      ],
      "classification": "target_varies",
      "confirmed": true,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "confirmed",
      "target_varies": true,
      "trace_id": "0xc241540bfb2ef49c158b04968ef0969216a89cb29e6e0bbd8a2eb45de1fef250",
      "trace_mode": "callTracer"
    }
  },
  {
    "confidence": 55,
    "evidence_json": {
      "eth_value_calls": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 993,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1061,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1307,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        }
      ],
      "guards_detected": []
    },
    "normalized_json": {
      "sink": "CALL",
      "value": "nonzero"
    },
    "severity": "high",
    "title": "ETH value transfer possible",
    "validated": true,
    "validation_json": {
      "attempts": 1,
      "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x47e3b185398c178c89cad8bda809d037462008a9"
      ],
      "classification": "target_varies",
      "confirmed": true,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "confirmed",
      "target_varies": true,
      "trace_id": "0xc241540bfb2ef49c158b04968ef0969216a89cb29e6e0bbd8a2eb45de1fef250",
      "trace_mode": "callTracer"
    }
  },
  {
    "confidence": 45,
    "evidence_json": {
      "create2_count": 2,
      "create_count": 0
    },
    "normalized_json": {
      "sink": "CREATE"
    },
    "severity": "medium",
    "title": "CREATE/CREATE2 reachable",
    "validated": false,
    "validation_json": {
      "attempts": 32,
      "call_targets": null,
      "classification": "no_sink",
      "confirmed": false,
      "errors": 0,
      "matched_probe": null,
      "sink": "CREATE",
      "status": "unknown",
      "target_varies": null,
      "trace_id": "0xf3ecd33f4407999282b3e7c7c77e8409b6cdaffd554d89b7878fe3c08047d3b0",
      "trace_mode": "structLogs"
    }
  }
]
{
  "create2_count": 2,
  "delegatecall_count": 0,
  "flags": [
    "create_opcodes_present"
  ],
  "selfdestruct_count": 0
}

exec
/bin/bash -lc "jq '.analysis_run' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
{
  "address": "0x47e3b185398c178c89cad8bda809d037462008a9",
  "block_number": null,
  "chain_id": 1,
  "child_links": [],
  "created_at": "2025-12-19T20:03:58.000000Z",
  "id": "019b3836-4070-73ff-9bdf-855dfff3d504",
  "parent_links": [],
  "status": "running",
  "updated_at": "2026-04-04T19:59:08.000000Z"
}

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

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

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

exec
/bin/bash -lc "jq '.capability_graph.graph_json' BYTECODE_BUNDLE.json | sed -n '1,260p'" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
{
  "edges": [
    {
      "from": "bb:0",
      "to": "bb:218",
      "type": "control_flow"
    },
    {
      "from": "bb:0",
      "to": "bb:11",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:11",
      "to": "bb:220",
      "type": "control_flow"
    },
    {
      "from": "bb:11",
      "to": "bb:31",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:31",
      "to": "bb:313",
      "type": "control_flow"
    },
    {
      "from": "bb:31",
      "to": "bb:42",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:42",
      "to": "bb:322",
      "type": "control_flow"
    },
    {
      "from": "bb:42",
      "to": "bb:53",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:53",
      "to": "bb:356",
      "type": "control_flow"
    },
    {
      "from": "bb:53",
      "to": "bb:64",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:64",
      "to": "bb:406",
      "type": "control_flow"
    },
    {
      "from": "bb:64",
      "to": "bb:75",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:75",
      "to": "bb:418",
      "type": "control_flow"
    },
    {
      "from": "bb:75",
      "to": "bb:86",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:86",
      "to": "bb:504",
      "type": "control_flow"
    },
    {
      "from": "bb:86",
      "to": "bb:97",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:97",
      "to": "bb:528",
      "type": "control_flow"
    },
    {
      "from": "bb:97",
      "to": "bb:108",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:108",
      "to": "bb:546",
      "type": "control_flow"
    },
    {
      "from": "bb:108",
      "to": "bb:119",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:119",
      "to": "bb:637",
      "type": "control_flow"
    },
    {
      "from": "bb:119",
      "to": "bb:130",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:130",
      "to": "bb:665",
      "type": "control_flow"
    },
    {
      "from": "bb:130",
      "to": "bb:141",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:141",
      "to": "bb:712",
      "type": "control_flow"
    },
    {
      "from": "bb:141",
      "to": "bb:152",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:152",
      "to": "bb:721",
      "type": "control_flow"
    },
    {
      "from": "bb:152",
      "to": "bb:163",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:163",
      "to": "bb:1080",
      "type": "control_flow"
    },
    {
      "from": "bb:163",
      "to": "bb:174",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:174",
      "to": "bb:1117",
      "type": "control_flow"
    },
    {
      "from": "bb:174",
      "to": "bb:185",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:185",
      "to": "bb:1154",
      "type": "control_flow"
    },
    {
      "from": "bb:185",
      "to": "bb:196",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:196",
      "to": "bb:1202",
      "type": "control_flow"
    },
    {
      "from": "bb:196",
      "to": "bb:207",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:207",
      "to": "bb:1235",
      "type": "control_flow"
    },
    {
      "from": "bb:207",
      "to": "bb:218",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:220",
      "to": "bb:1475",
      "type": "control_flow"
    },
    {
      "from": "bb:220",
      "to": "bb:286",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:286",
      "to": "bb:1432",
      "type": "control_flow"
    },
    {
      "from": "bb:286",
      "to": "bb:294",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:294",
      "to": "bb:1475",
      "type": "control_flow"
    },
    {
      "from": "bb:322",
      "to": "bb:2014",
      "type": "control_flow"
    },
    {
      "from": "bb:322",
      "to": "bb:352",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:356",
      "to": "bb:2190",
      "type": "control_flow"
    },
    {
      "from": "bb:356",
      "to": "bb:402",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:418",
      "to": "bb:428",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:428",
      "to": "bb:433",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:433",
      "to": "bb:2019",
      "type": "control_flow"
    },
    {
      "from": "bb:433",
      "to": "bb:442",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:442",
      "to": "bb:496",

exec
/bin/bash -lc "jq '.artifact.compiler_json, .artifact.is_proxy, .artifact.implementation_address, .artifact.verified_source' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
{
  "etherscan": {
    "skipped": true
  }
}
false
null
false

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
bytecode=obj['artifact']['runtime_bytecode']
if bytecode.startswith('0x'): bytecode=bytecode[2:]
code=bytes.fromhex(bytecode)
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for pc_target in [930,960,980,990,993,1000,1030,1061,1080,1280,1307,2100,2134,2400,2426,2444]:
    start=max(0,pc_target-25); end=min(len(code),pc_target+40)
    print(f'--- around pc {pc_target} ---')
    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-dw1e6a6j
 exited 1 in 0ms:
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
AttributeError: 'dict' object has no attribute 'startswith'

exec
/bin/bash -lc "jq '.artifact.runtime_bytecode | type, .[0:120]' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 exited 5 in 0ms:
"object"
jq: error (at BYTECODE_BUNDLE.json:6529): Cannot index object with object

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

exec
/bin/bash -lc "jq '.artifact.runtime_bytecode.length, .artifact.runtime_bytecode.truncated, .artifact.runtime_bytecode.head, .artifact.runtime_bytecode.tail' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
4916
false
null
null

exec
/bin/bash -lc "jq '.artifact.runtime_bytecode.full[0:140]' BYTECODE_BUNDLE.json" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
"0x606060405236156100da5760e060020a600035046306fdde0381146100dc57806318160ddd146101395780631fe9eabc1461014257806323b872dd14610164578063313ce5"

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
bytecode=obj['artifact']['runtime_bytecode']['full']
if bytecode.startswith('0x'): bytecode=bytecode[2:]
code=bytes.fromhex(bytecode)
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for pc_target in [930,960,980,993,1000,1030,1061,1080,1280,1307,2100,2134,2400,2426,2444]:
    start=max(0,pc_target-25); end=min(len(code),pc_target+40)
    print(f'--- around pc {pc_target} ---')
    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-dw1e6a6j
 succeeded in 0ms:
--- around pc 930 ---
0389: DIV
038a: ADD
038b: DUP1
038c: DUP6
038d: PUSH1 0x01
038f: PUSH1 0xa0
0391: PUSH1 0x02
0393: EXP
0394: SUB
0395: AND
0396: DUP2
0397: MSTORE
0398: PUSH1 0x20
039a: ADD
039b: DUP5
039c: DUP2
039d: MSTORE
039e: PUSH1 0x20
03a0: ADD
03a1: DUP4
03a2: PUSH1 0x01
03a4: PUSH1 0xa0
03a6: PUSH1 0x02
03a8: EXP
03a9: SUB
03aa: AND
03ab: DUP2
03ac: MSTORE
03ad: PUSH1 0x20
03af: ADD
03b0: DUP1
03b1: PUSH1 0x20
03b3: ADD
03b4: DUP3
03b5: DUP2
03b6: SUB
03b7: DUP3
03b8: MSTORE
03b9: DUP4
03ba: DUP2
03bb: DUP2
03bc: MLOAD
03bd: DUP2
03be: MSTORE
03bf: PUSH1 0x20
03c1: ADD
03c2: SWAP2
03c3: POP
03c4: DUP1
03c5: MLOAD
03c6: SWAP1
03c7: PUSH1 0x20
03c9: ADD
--- around pc 960 ---
03a7: MUL
03a8: EXP
03a9: SUB
03aa: AND
03ab: DUP2
03ac: MSTORE
03ad: PUSH1 0x20
03af: ADD
03b0: DUP1
03b1: PUSH1 0x20
03b3: ADD
03b4: DUP3
03b5: DUP2
03b6: SUB
03b7: DUP3
03b8: MSTORE
03b9: DUP4
03ba: DUP2
03bb: DUP2
03bc: MLOAD
03bd: DUP2
03be: MSTORE
03bf: PUSH1 0x20
03c1: ADD
03c2: SWAP2
03c3: POP
03c4: DUP1
03c5: MLOAD
03c6: SWAP1
03c7: PUSH1 0x20
03c9: ADD
03ca: SWAP1
03cb: DUP1
03cc: DUP4
03cd: DUP4
03ce: DUP3
03cf: SWAP1
03d0: PUSH1 0x00
03d2: PUSH1 0x04
03d4: PUSH1 0x20
03d6: DUP5
03d7: PUSH1 0x1f
03d9: ADD
03da: DIV
03db: PUSH1 0x0f
03dd: MUL
03de: PUSH1 0x03
03e0: ADD
03e1: CALL
03e2: POP
03e3: SWAP1
03e4: POP
03e5: SWAP1
03e6: DUP2
03e7: ADD
--- around pc 980 ---
03bb: DUP2
03bc: MLOAD
03bd: DUP2
03be: MSTORE
03bf: PUSH1 0x20
03c1: ADD
03c2: SWAP2
03c3: POP
03c4: DUP1
03c5: MLOAD
03c6: SWAP1
03c7: PUSH1 0x20
03c9: ADD
03ca: SWAP1
03cb: DUP1
03cc: DUP4
03cd: DUP4
03ce: DUP3
03cf: SWAP1
03d0: PUSH1 0x00
03d2: PUSH1 0x04
03d4: PUSH1 0x20
03d6: DUP5
03d7: PUSH1 0x1f
03d9: ADD
03da: DIV
03db: PUSH1 0x0f
03dd: MUL
03de: PUSH1 0x03
03e0: ADD
03e1: CALL
03e2: POP
03e3: SWAP1
03e4: POP
03e5: SWAP1
03e6: DUP2
03e7: ADD
03e8: SWAP1
03e9: PUSH1 0x1f
03eb: AND
03ec: DUP1
03ed: ISZERO
03ee: PUSH2 0x040b
03f1: JUMPI
03f2: DUP1
03f3: DUP3
03f4: SUB
03f5: DUP1
03f6: MLOAD
03f7: PUSH1 0x01
03f9: DUP4
03fa: PUSH1 0x20
--- around pc 993 ---
03c8: SHA3
03c9: ADD
03ca: SWAP1
03cb: DUP1
03cc: DUP4
03cd: DUP4
03ce: DUP3
03cf: SWAP1
03d0: PUSH1 0x00
03d2: PUSH1 0x04
03d4: PUSH1 0x20
03d6: DUP5
03d7: PUSH1 0x1f
03d9: ADD
03da: DIV
03db: PUSH1 0x0f
03dd: MUL
03de: PUSH1 0x03
03e0: ADD
03e1: CALL
03e2: POP
03e3: SWAP1
03e4: POP
03e5: SWAP1
03e6: DUP2
03e7: ADD
03e8: SWAP1
03e9: PUSH1 0x1f
03eb: AND
03ec: DUP1
03ed: ISZERO
03ee: PUSH2 0x040b
03f1: JUMPI
03f2: DUP1
03f3: DUP3
03f4: SUB
03f5: DUP1
03f6: MLOAD
03f7: PUSH1 0x01
03f9: DUP4
03fa: PUSH1 0x20
03fc: SUB
03fd: PUSH2 0x0100
0400: EXP
0401: SUB
0402: NOT
0403: AND
0404: DUP2
0405: MSTORE
0406: PUSH1 0x20
0408: ADD
--- around pc 1000 ---
03cf: SWAP1
03d0: PUSH1 0x00
03d2: PUSH1 0x04
03d4: PUSH1 0x20
03d6: DUP5
03d7: PUSH1 0x1f
03d9: ADD
03da: DIV
03db: PUSH1 0x0f
03dd: MUL
03de: PUSH1 0x03
03e0: ADD
03e1: CALL
03e2: POP
03e3: SWAP1
03e4: POP
03e5: SWAP1
03e6: DUP2
03e7: ADD
03e8: SWAP1
03e9: PUSH1 0x1f
03eb: AND
03ec: DUP1
03ed: ISZERO
03ee: PUSH2 0x040b
03f1: JUMPI
03f2: DUP1
03f3: DUP3
03f4: SUB
03f5: DUP1
03f6: MLOAD
03f7: PUSH1 0x01
03f9: DUP4
03fa: PUSH1 0x20
03fc: SUB
03fd: PUSH2 0x0100
0400: EXP
0401: SUB
0402: NOT
0403: AND
0404: DUP2
0405: MSTORE
0406: PUSH1 0x20
0408: ADD
0409: SWAP2
040a: POP
040b: JUMPDEST
040c: POP
040d: SWAP6
040e: POP
040f: POP
--- around pc 1030 ---
03ed: ISZERO
03ee: PUSH2 0x040b
03f1: JUMPI
03f2: DUP1
03f3: DUP3
03f4: SUB
03f5: DUP1
03f6: MLOAD
03f7: PUSH1 0x01
03f9: DUP4
03fa: PUSH1 0x20
03fc: SUB
03fd: PUSH2 0x0100
0400: EXP
0401: SUB
0402: NOT
0403: AND
0404: DUP2
0405: MSTORE
0406: PUSH1 0x20
0408: ADD
0409: SWAP2
040a: POP
040b: JUMPDEST
040c: POP
040d: SWAP6
040e: POP
040f: POP
0410: POP
0411: POP
0412: POP
0413: POP
0414: PUSH1 0x00
0416: PUSH1 0x40
0418: MLOAD
0419: DUP1
041a: DUP4
041b: SUB
041c: DUP2
041d: PUSH1 0x00
041f: DUP8
0420: PUSH2 0x61da
0423: GAS
0424: SUB
0425: CALL
0426: ISZERO
0427: PUSH2 0x0002
042a: JUMPI
042b: POP
042c: PUSH1 0x01
--- around pc 1061 ---
040c: POP
040d: SWAP6
040e: POP
040f: POP
0410: POP
0411: POP
0412: POP
0413: POP
0414: PUSH1 0x00
0416: PUSH1 0x40
0418: MLOAD
0419: DUP1
041a: DUP4
041b: SUB
041c: DUP2
041d: PUSH1 0x00
041f: DUP8
0420: PUSH2 0x61da
0423: GAS
0424: SUB
0425: CALL
0426: ISZERO
0427: PUSH2 0x0002
042a: JUMPI
042b: POP
042c: PUSH1 0x01
042e: SWAP8
042f: SWAP7
0430: POP
0431: POP
0432: POP
0433: POP
0434: POP
0435: POP
0436: POP
0437: JUMP
0438: JUMPDEST
0439: PUSH1 0x09
043b: PUSH1 0x20
043d: SWAP1
043e: DUP2
043f: MSTORE
0440: PUSH1 0x04
0442: CALLDATALOAD
0443: PUSH1 0x00
0445: SWAP1
0446: DUP2
0447: MSTORE
0448: PUSH1 0x40
044a: DUP1
044b: DUP3
044c: SHA3
--- around pc 1080 ---
041f: DUP8
0420: PUSH2 0x61da
0423: GAS
0424: SUB
0425: CALL
0426: ISZERO
0427: PUSH2 0x0002
042a: JUMPI
042b: POP
042c: PUSH1 0x01
042e: SWAP8
042f: SWAP7
0430: POP
0431: POP
0432: POP
0433: POP
0434: POP
0435: POP
0436: POP
0437: JUMP
0438: JUMPDEST
0439: PUSH1 0x09
043b: PUSH1 0x20
043d: SWAP1
043e: DUP2
043f: MSTORE
0440: PUSH1 0x04
0442: CALLDATALOAD
0443: PUSH1 0x00
0445: SWAP1
0446: DUP2
0447: MSTORE
0448: PUSH1 0x40
044a: DUP1
044b: DUP3
044c: SHA3
044d: SWAP1
044e: SWAP3
044f: MSTORE
0450: PUSH1 0x24
0452: CALLDATALOAD
0453: DUP2
0454: MSTORE
0455: SHA3
0456: SLOAD
0457: PUSH2 0x0553
045a: SWAP1
045b: DUP2
045c: JUMP
045d: JUMPDEST
045e: PUSH1 0x08
--- around pc 1280 ---
04e7: BLOCKHASH
04e8: MLOAD
04e9: DUP1
04ea: DUP1
04eb: PUSH1 0x20
04ed: ADD
04ee: DUP3
04ef: DUP2
04f0: SUB
04f1: DUP3
04f2: MSTORE
04f3: DUP4
04f4: DUP2
04f5: DUP2
04f6: MLOAD
04f7: DUP2
04f8: MSTORE
04f9: PUSH1 0x20
04fb: ADD
04fc: SWAP2
04fd: POP
04fe: DUP1
04ff: MLOAD
0500: SWAP1
0501: PUSH1 0x20
0503: ADD
0504: SWAP1
0505: DUP1
0506: DUP4
0507: DUP4
0508: DUP3
0509: SWAP1
050a: PUSH1 0x00
050c: PUSH1 0x04
050e: PUSH1 0x20
0510: DUP5
0511: PUSH1 0x1f
0513: ADD
0514: DIV
0515: PUSH1 0x0f
0517: MUL
0518: PUSH1 0x03
051a: ADD
051b: CALL
051c: POP
051d: SWAP1
051e: POP
051f: SWAP1
0520: DUP2
0521: ADD
0522: SWAP1
0523: PUSH1 0x1f
0525: AND
0526: DUP1
0527: ISZERO
--- around pc 1307 ---
0502: SHA3
0503: ADD
0504: SWAP1
0505: DUP1
0506: DUP4
0507: DUP4
0508: DUP3
0509: SWAP1
050a: PUSH1 0x00
050c: PUSH1 0x04
050e: PUSH1 0x20
0510: DUP5
0511: PUSH1 0x1f
0513: ADD
0514: DIV
0515: PUSH1 0x0f
0517: MUL
0518: PUSH1 0x03
051a: ADD
051b: CALL
051c: POP
051d: SWAP1
051e: POP
051f: SWAP1
0520: DUP2
0521: ADD
0522: SWAP1
0523: PUSH1 0x1f
0525: AND
0526: DUP1
0527: ISZERO
0528: PUSH2 0x0545
052b: JUMPI
052c: DUP1
052d: DUP3
052e: SUB
052f: DUP1
0530: MLOAD
0531: PUSH1 0x01
0533: DUP4
0534: PUSH1 0x20
0536: SUB
0537: PUSH2 0x0100
053a: EXP
053b: SUB
053c: NOT
053d: AND
053e: DUP2
053f: MSTORE
0540: PUSH1 0x20
0542: ADD
--- around pc 2100 ---
081b: STOP
081c: SWAP1
081d: DUP2
081e: MSTORE
081f: PUSH1 0x07
0821: PUSH1 0x20
0823: MSTORE
0824: PUSH1 0x40
0826: DUP1
0827: DUP3
0828: SHA3
0829: DUP1
082a: SLOAD
082b: DUP8
082c: ADD
082d: SWAP1
082e: SSTORE
082f: CALLER
0830: SWAP1
0831: SWAP3
0832: AND
0833: DUP1
0834: DUP3
0835: MSTORE
0836: DUP3
0837: DUP3
0838: SHA3
0839: DUP1
083a: SLOAD
083b: DUP8
083c: SWAP1
083d: SUB
083e: SWAP1
083f: SSTORE
0840: SWAP2
0841: MLOAD
0842: PUSH4 0xffffffff
0847: DUP5
0848: AND
0849: DUP7
084a: MUL
084b: SWAP5
084c: POP
084d: DUP5
084e: SWAP1
084f: DUP3
0850: DUP2
0851: DUP2
0852: DUP2
0853: DUP6
0854: DUP9
0855: DUP4
0856: CALL
0857: POP
0858: POP
0859: PUSH1 0x40
085b: DUP1
--- around pc 2134 ---
083d: SUB
083e: SWAP1
083f: SSTORE
0840: SWAP2
0841: MLOAD
0842: PUSH4 0xffffffff
0847: DUP5
0848: AND
0849: DUP7
084a: MUL
084b: SWAP5
084c: POP
084d: DUP5
084e: SWAP1
084f: DUP3
0850: DUP2
0851: DUP2
0852: DUP2
0853: DUP6
0854: DUP9
0855: DUP4
0856: CALL
0857: POP
0858: POP
0859: PUSH1 0x40
085b: DUP1
085c: MLOAD
085d: DUP8
085e: DUP2
085f: MSTORE
0860: SWAP1
0861: MLOAD
0862: ADDRESS
0863: PUSH1 0x01
0865: PUSH1 0xa0
0867: PUSH1 0x02
0869: EXP
086a: SUB
086b: AND
086c: SWAP5
086d: SWAP4
086e: POP
086f: PUSH1 0x00
0871: DUP1
0872: MLOAD
0873: PUSH1 0x20
0875: PUSH2 0x0979
0878: DUP4
0879: CODECOPY
087a: DUP2
087b: MLOAD
087c: SWAP2
087d: MSTORE
--- around pc 2400 ---
0947: SWAP2
0948: DUP3
0949: SWAP1
094a: SHA3
094b: DUP1
094c: SLOAD
094d: DUP8
094e: ADD
094f: SWAP1
0950: SSTORE
0951: DUP2
0952: MLOAD
0953: DUP7
0954: DUP2
0955: MSTORE
0956: SWAP2
0957: MLOAD
0958: PUSH1 0x00
095a: DUP1
095b: MLOAD
095c: PUSH1 0x20
095e: PUSH2 0x0979
0961: DUP4
0962: CODECOPY
0963: DUP2
0964: MLOAD
0965: SWAP2
0966: MSTORE
0967: SWAP3
0968: DUP2
0969: SWAP1
096a: SUB
096b: SWAP1
096c: SWAP2
096d: ADD
096e: SWAP1
096f: LOG3
0970: POP
0971: PUSH1 0x01
0973: SWAP4
0974: SWAP3
0975: POP
0976: POP
0977: POP
0978: JUMP
0979: OP_dd
097a: CALLCODE
097b: MSTORE
097c: OP_ad
097d: SHL
097e: OP_e2
097f: OP_c8
0980: SWAP12
0981: PUSH10 0xc2b068fc378daa952ba7
--- around pc 2426 ---
0961: DUP4
0962: CODECOPY
0963: DUP2
0964: MLOAD
0965: SWAP2
0966: MSTORE
0967: SWAP3
0968: DUP2
0969: SWAP1
096a: SUB
096b: SWAP1
096c: SWAP2
096d: ADD
096e: SWAP1
096f: LOG3
0970: POP
0971: PUSH1 0x01
0973: SWAP4
0974: SWAP3
0975: POP
0976: POP
0977: POP
0978: JUMP
0979: OP_dd
097a: CALLCODE
097b: MSTORE
097c: OP_ad
097d: SHL
097e: OP_e2
097f: OP_c8
0980: SWAP12
0981: PUSH10 0xc2b068fc378daa952ba7
098c: CALL
098d: PUSH4 0xc4a11628
0992: CREATE2
0993: GAS
0994: OP_4d
0995: CREATE2
0996: OP_23
0997: OP_b3
0998: OP_ef
--- around pc 2444 ---
0973: SWAP4
0974: SWAP3
0975: POP
0976: POP
0977: POP
0978: JUMP
0979: OP_dd
097a: CALLCODE
097b: MSTORE
097c: OP_ad
097d: SHL
097e: OP_e2
097f: OP_c8
0980: SWAP12
0981: PUSH10 0xc2b068fc378daa952ba7
098c: CALL
098d: PUSH4 0xc4a11628
0992: CREATE2
0993: GAS
0994: OP_4d
0995: CREATE2
0996: OP_23
0997: OP_b3
0998: OP_ef

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
bytecode=obj['artifact']['runtime_bytecode']['full'][2:]
code=bytes.fromhex(bytecode)
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(0x60,0x80): ops[i]=f'PUSH{i-0x5f}'
for i in range(0x80,0x90): ops[i]=f'DUP{i-0x7f}'
for i in range(0x90,0xa0): ops[i]=f'SWAP{i-0x8f}'
start,end=220,760
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-dw1e6a6j
 succeeded in 0ms:
00dc: JUMPDEST
00dd: PUSH1 0x40
00df: DUP1
00e0: MLOAD
00e1: PUSH1 0x01
00e3: DUP1
00e4: SLOAD
00e5: PUSH1 0x20
00e7: PUSH1 0x02
00e9: DUP3
00ea: DUP5
00eb: AND
00ec: ISZERO
00ed: PUSH2 0x0100
00f0: MUL
00f1: PUSH1 0x00
00f3: NOT
00f4: ADD
00f5: SWAP1
00f6: SWAP3
00f7: AND
00f8: SWAP2
00f9: SWAP1
00fa: SWAP2
00fb: DIV
00fc: PUSH1 0x1f
00fe: DUP2
00ff: ADD
0100: DUP3
0101: SWAP1
0102: DIV
0103: DUP3
0104: MUL
0105: DUP5
0106: ADD
0107: DUP3
0108: ADD
0109: SWAP1
010a: SWAP5
010b: MSTORE
010c: DUP4
010d: DUP4
010e: MSTORE
010f: PUSH2 0x04e5
0112: SWAP4
0113: SWAP1
0114: DUP4
0115: ADD
0116: DUP3
0117: DUP3
0118: DUP1
0119: ISZERO
011a: PUSH2 0x05c3
011d: JUMPI
011e: DUP1
011f: PUSH1 0x1f
0121: LT
0122: PUSH2 0x0598
0125: JUMPI
0126: PUSH2 0x0100
0129: DUP1
012a: DUP4
012b: SLOAD
012c: DIV
012d: MUL
012e: DUP4
012f: MSTORE
0130: SWAP2
0131: PUSH1 0x20
0133: ADD
0134: SWAP2
0135: PUSH2 0x05c3
0138: JUMP
0139: JUMPDEST
013a: PUSH2 0x0553
013d: PUSH1 0x04
013f: SLOAD
0140: DUP2
0141: JUMP
0142: JUMPDEST
0143: PUSH2 0x00da
0146: PUSH1 0x04
0148: CALLDATALOAD
0149: PUSH1 0x00
014b: SLOAD
014c: PUSH1 0x01
014e: PUSH1 0xa0
0150: PUSH1 0x02
0152: EXP
0153: SUB
0154: SWAP1
0155: DUP2
0156: AND
0157: CALLER
0158: SWAP1
0159: SWAP2
015a: AND
015b: EQ
015c: PUSH2 0x07de
015f: JUMPI
0160: PUSH2 0x0002
0163: JUMP
0164: JUMPDEST
0165: PUSH2 0x0553
0168: PUSH1 0x04
016a: CALLDATALOAD
016b: PUSH1 0x24
016d: CALLDATALOAD
016e: PUSH1 0x44
0170: CALLDATALOAD
0171: PUSH1 0x01
0173: PUSH1 0xa0
0175: PUSH1 0x02
0177: EXP
0178: SUB
0179: DUP4
017a: AND
017b: PUSH1 0x00
017d: SWAP1
017e: DUP2
017f: MSTORE
0180: PUSH1 0x07
0182: PUSH1 0x20
0184: MSTORE
0185: PUSH1 0x40
0187: DUP2
0188: SHA3
0189: SLOAD
018a: DUP3
018b: SWAP1
018c: LT
018d: ISZERO
018e: PUSH2 0x088e
0191: JUMPI
0192: PUSH2 0x0002
0195: JUMP
0196: JUMPDEST
0197: PUSH2 0x0565
019a: PUSH1 0x03
019c: SLOAD
019d: PUSH1 0xff
019f: AND
01a0: DUP2
01a1: JUMP
01a2: JUMPDEST
01a3: PUSH2 0x0553
01a6: PUSH1 0x04
01a8: CALLDATALOAD
01a9: PUSH1 0x24
01ab: CALLDATALOAD
01ac: JUMPDEST
01ad: PUSH1 0x00
01af: DUP1
01b0: DUP1
01b1: JUMPDEST
01b2: DUP4
01b3: DUP2
01b4: LT
01b5: ISZERO
01b6: PUSH2 0x07e3
01b9: JUMPI
01ba: PUSH1 0x40
01bc: DUP1
01bd: MLOAD
01be: NUMBER
01bf: DUP4
01c0: SWAP1
01c1: SUB
01c2: PUSH1 0x00
01c4: NOT
01c5: ADD
01c6: BLOCKHASH
01c7: DUP2
01c8: MSTORE
01c9: PUSH1 0x20
01cb: DUP2
01cc: ADD
01cd: DUP8
01ce: SWAP1
01cf: MSTORE
01d0: DUP2
01d1: MLOAD
01d2: SWAP1
01d3: DUP2
01d4: SWAP1
01d5: SUB
01d6: SWAP1
01d7: SWAP2
01d8: ADD
01d9: SWAP1
01da: SHA3
01db: PUSH1 0x02
01dd: SWAP1
01de: MOD
01df: PUSH1 0x00
01e1: EQ
01e2: ISZERO
01e3: PUSH2 0x01f0
01e6: JUMPI
01e7: PUSH1 0x02
01e9: DUP2
01ea: SWAP1
01eb: EXP
01ec: SWAP1
01ed: SWAP2
01ee: ADD
01ef: SWAP1
01f0: JUMPDEST
01f1: PUSH1 0x01
01f3: ADD
01f4: PUSH2 0x01b1
01f7: JUMP
01f8: JUMPDEST
01f9: PUSH2 0x0553
01fc: PUSH1 0x04
01fe: CALLDATALOAD
01ff: PUSH1 0x07
0201: PUSH1 0x20
0203: MSTORE
0204: PUSH1 0x00
0206: SWAP1
0207: DUP2
0208: MSTORE
0209: PUSH1 0x40
020b: SWAP1
020c: SHA3
020d: SLOAD
020e: DUP2
020f: JUMP
0210: JUMPDEST
0211: PUSH2 0x057b
0214: PUSH1 0x00
0216: SLOAD
0217: PUSH1 0x01
0219: PUSH1 0xa0
021b: PUSH1 0x02
021d: EXP
021e: SUB
021f: AND
0220: DUP2
0221: JUMP
0222: JUMPDEST
0223: PUSH2 0x04e5
0226: PUSH1 0x02
0228: DUP1
0229: SLOAD
022a: PUSH1 0x40
022c: DUP1
022d: MLOAD
022e: PUSH1 0x20
0230: PUSH1 0x01
0232: DUP5
0233: AND
0234: ISZERO
0235: PUSH2 0x0100
0238: MUL
0239: PUSH1 0x00
023b: NOT
023c: ADD
023d: SWAP1
023e: SWAP4
023f: AND
0240: DUP5
0241: SWAP1
0242: DIV
0243: PUSH1 0x1f
0245: DUP2
0246: ADD
0247: DUP5
0248: SWAP1
0249: DIV
024a: DUP5
024b: MUL
024c: DUP3
024d: ADD
024e: DUP5
024f: ADD
0250: SWAP1
0251: SWAP3
0252: MSTORE
0253: DUP2
0254: DUP2
0255: MSTORE
0256: SWAP3
0257: SWAP2
0258: DUP4
0259: ADD
025a: DUP3
025b: DUP3
025c: DUP1
025d: ISZERO
025e: PUSH2 0x05c3
0261: JUMPI
0262: DUP1
0263: PUSH1 0x1f
0265: LT
0266: PUSH2 0x0598
0269: JUMPI
026a: PUSH2 0x0100
026d: DUP1
026e: DUP4
026f: SLOAD
0270: DIV
0271: MUL
0272: DUP4
0273: MSTORE
0274: SWAP2
0275: PUSH1 0x20
0277: ADD
0278: SWAP2
0279: PUSH2 0x05c3
027c: JUMP
027d: JUMPDEST
027e: PUSH2 0x0553
0281: PUSH1 0x06
0283: SLOAD
0284: CALLVALUE
0285: SWAP1
0286: PUSH1 0x00
0288: SWAP1
0289: PUSH1 0x64
028b: SWAP1
028c: DUP3
028d: SWAP1
028e: DUP5
028f: GT
0290: ISZERO
0291: PUSH2 0x064c
0294: JUMPI
0295: PUSH2 0x0002
0298: JUMP
0299: JUMPDEST
029a: PUSH2 0x00da
029d: PUSH1 0x04
029f: CALLDATALOAD
02a0: PUSH1 0x24
02a2: CALLDATALOAD
02a3: CALLER
02a4: PUSH1 0x01
02a6: PUSH1 0xa0
02a8: PUSH1 0x02
02aa: EXP
02ab: SUB
02ac: AND
02ad: PUSH1 0x00
02af: SWAP1
02b0: DUP2
02b1: MSTORE
02b2: PUSH1 0x07
02b4: PUSH1 0x20
02b6: MSTORE
02b7: PUSH1 0x40
02b9: SWAP1
02ba: SHA3
02bb: SLOAD
02bc: DUP2
02bd: SWAP1
02be: LT
02bf: ISZERO
02c0: PUSH2 0x05cb
02c3: JUMPI
02c4: PUSH2 0x0002
02c7: JUMP
02c8: JUMPDEST
02c9: PUSH2 0x0553
02cc: PUSH1 0x06
02ce: SLOAD
02cf: DUP2
02d0: JUMP
02d1: JUMPDEST
02d2: PUSH1 0x40
02d4: DUP1
02d5: MLOAD
02d6: PUSH1 0x20
02d8: PUSH1 0x44
02da: CALLDATALOAD
02db: PUSH1 0x04
02dd: DUP2
02de: DUP2
02df: ADD
02e0: CALLDATALOAD
02e1: PUSH1 0x1f
02e3: DUP2
02e4: ADD
02e5: DUP5
02e6: SWAP1
02e7: DIV
02e8: DUP5
02e9: MUL
02ea: DUP6
02eb: ADD
02ec: DUP5
02ed: ADD
02ee: SWAP1
02ef: SWAP6
02f0: MSTORE
02f1: DUP5
02f2: DUP5
02f3: MSTORE
02f4: PUSH2 0x0553
02f7: SWAP5

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(0x60,0x80): ops[i]=f'PUSH{i-0x5f}'
for i in range(0x80,0x90): ops[i]=f'DUP{i-0x7f}'
for i in range(0x90,0xa0): ops[i]=f'SWAP{i-0x8f}'
start,end=760,1238
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-dw1e6a6j
 succeeded in 0ms:
02f8: DUP2
02f9: CALLDATALOAD
02fa: SWAP5
02fb: PUSH1 0x24
02fd: DUP1
02fe: CALLDATALOAD
02ff: SWAP6
0300: SWAP4
0301: SWAP5
0302: PUSH1 0x64
0304: SWAP5
0305: SWAP3
0306: SWAP4
0307: SWAP2
0308: ADD
0309: SWAP2
030a: DUP2
030b: SWAP1
030c: DUP5
030d: ADD
030e: DUP4
030f: DUP3
0310: DUP1
0311: DUP3
0312: DUP5
0313: CALLDATACOPY
0314: POP
0315: SWAP5
0316: SWAP7
0317: POP
0318: POP
0319: POP
031a: POP
031b: POP
031c: POP
031d: POP
031e: PUSH1 0x00
0320: PUSH1 0x00
0322: DUP4
0323: PUSH1 0x08
0325: PUSH1 0x00
0327: POP
0328: PUSH1 0x00
032a: CALLER
032b: PUSH1 0x01
032d: PUSH1 0xa0
032f: PUSH1 0x02
0331: EXP
0332: SUB
0333: AND
0334: DUP2
0335: MSTORE
0336: PUSH1 0x20
0338: ADD
0339: SWAP1
033a: DUP2
033b: MSTORE
033c: PUSH1 0x20
033e: ADD
033f: PUSH1 0x00
0341: SHA3
0342: PUSH1 0x00
0344: POP
0345: PUSH1 0x00
0347: DUP8
0348: PUSH1 0x01
034a: PUSH1 0xa0
034c: PUSH1 0x02
034e: EXP
034f: SUB
0350: AND
0351: DUP2
0352: MSTORE
0353: PUSH1 0x20
0355: ADD
0356: SWAP1
0357: DUP2
0358: MSTORE
0359: PUSH1 0x20
035b: ADD
035c: PUSH1 0x00
035e: SHA3
035f: PUSH1 0x00
0361: POP
0362: DUP2
0363: SWAP1
0364: SSTORE
0365: POP
0366: DUP5
0367: SWAP1
0368: POP
0369: DUP1
036a: PUSH1 0x01
036c: PUSH1 0xa0
036e: PUSH1 0x02
0370: EXP
0371: SUB
0372: AND
0373: PUSH4 0x8f4ffcb1
0378: CALLER
0379: DUP7
037a: ADDRESS
037b: DUP8
037c: PUSH1 0x40
037e: MLOAD
037f: DUP6
0380: PUSH1 0xe0
0382: PUSH1 0x02
0384: EXP
0385: MUL
0386: DUP2
0387: MSTORE
0388: PUSH1 0x04
038a: ADD
038b: DUP1
038c: DUP6
038d: PUSH1 0x01
038f: PUSH1 0xa0
0391: PUSH1 0x02
0393: EXP
0394: SUB
0395: AND
0396: DUP2
0397: MSTORE
0398: PUSH1 0x20
039a: ADD
039b: DUP5
039c: DUP2
039d: MSTORE
039e: PUSH1 0x20
03a0: ADD
03a1: DUP4
03a2: PUSH1 0x01
03a4: PUSH1 0xa0
03a6: PUSH1 0x02
03a8: EXP
03a9: SUB
03aa: AND
03ab: DUP2
03ac: MSTORE
03ad: PUSH1 0x20
03af: ADD
03b0: DUP1
03b1: PUSH1 0x20
03b3: ADD
03b4: DUP3
03b5: DUP2
03b6: SUB
03b7: DUP3
03b8: MSTORE
03b9: DUP4
03ba: DUP2
03bb: DUP2
03bc: MLOAD
03bd: DUP2
03be: MSTORE
03bf: PUSH1 0x20
03c1: ADD
03c2: SWAP2
03c3: POP
03c4: DUP1
03c5: MLOAD
03c6: SWAP1
03c7: PUSH1 0x20
03c9: ADD
03ca: SWAP1
03cb: DUP1
03cc: DUP4
03cd: DUP4
03ce: DUP3
03cf: SWAP1
03d0: PUSH1 0x00
03d2: PUSH1 0x04
03d4: PUSH1 0x20
03d6: DUP5
03d7: PUSH1 0x1f
03d9: ADD
03da: DIV
03db: PUSH1 0x0f
03dd: MUL
03de: PUSH1 0x03
03e0: ADD
03e1: CALL
03e2: POP
03e3: SWAP1
03e4: POP
03e5: SWAP1
03e6: DUP2
03e7: ADD
03e8: SWAP1
03e9: PUSH1 0x1f
03eb: AND
03ec: DUP1
03ed: ISZERO
03ee: PUSH2 0x040b
03f1: JUMPI
03f2: DUP1
03f3: DUP3
03f4: SUB
03f5: DUP1
03f6: MLOAD
03f7: PUSH1 0x01
03f9: DUP4
03fa: PUSH1 0x20
03fc: SUB
03fd: PUSH2 0x0100
0400: EXP
0401: SUB
0402: NOT
0403: AND
0404: DUP2
0405: MSTORE
0406: PUSH1 0x20
0408: ADD
0409: SWAP2
040a: POP
040b: JUMPDEST
040c: POP
040d: SWAP6
040e: POP
040f: POP
0410: POP
0411: POP
0412: POP
0413: POP
0414: PUSH1 0x00
0416: PUSH1 0x40
0418: MLOAD
0419: DUP1
041a: DUP4
041b: SUB
041c: DUP2
041d: PUSH1 0x00
041f: DUP8
0420: PUSH2 0x61da
0423: GAS
0424: SUB
0425: CALL
0426: ISZERO
0427: PUSH2 0x0002
042a: JUMPI
042b: POP
042c: PUSH1 0x01
042e: SWAP8
042f: SWAP7
0430: POP
0431: POP
0432: POP
0433: POP
0434: POP
0435: POP
0436: POP
0437: JUMP
0438: JUMPDEST
0439: PUSH1 0x09
043b: PUSH1 0x20
043d: SWAP1
043e: DUP2
043f: MSTORE
0440: PUSH1 0x04
0442: CALLDATALOAD
0443: PUSH1 0x00
0445: SWAP1
0446: DUP2
0447: MSTORE
0448: PUSH1 0x40
044a: DUP1
044b: DUP3
044c: SHA3
044d: SWAP1
044e: SWAP3
044f: MSTORE
0450: PUSH1 0x24
0452: CALLDATALOAD
0453: DUP2
0454: MSTORE
0455: SHA3
0456: SLOAD
0457: PUSH2 0x0553
045a: SWAP1
045b: DUP2
045c: JUMP
045d: JUMPDEST
045e: PUSH1 0x08
0460: PUSH1 0x20
0462: SWAP1
0463: DUP2
0464: MSTORE
0465: PUSH1 0x04
0467: CALLDATALOAD
0468: PUSH1 0x00
046a: SWAP1
046b: DUP2
046c: MSTORE
046d: PUSH1 0x40
046f: DUP1
0470: DUP3
0471: SHA3
0472: SWAP1
0473: SWAP3
0474: MSTORE
0475: PUSH1 0x24
0477: CALLDATALOAD
0478: DUP2
0479: MSTORE
047a: SHA3
047b: SLOAD
047c: PUSH2 0x0553
047f: SWAP1
0480: DUP2
0481: JUMP
0482: JUMPDEST
0483: PUSH2 0x0553
0486: PUSH1 0x04
0488: CALLDATALOAD
0489: CALLER
048a: PUSH1 0x01
048c: PUSH1 0xa0
048e: PUSH1 0x02
0490: EXP
0491: SUB
0492: AND
0493: PUSH1 0x00
0495: SWAP1
0496: DUP2
0497: MSTORE
0498: PUSH1 0x07
049a: PUSH1 0x20
049c: MSTORE
049d: PUSH1 0x40
049f: DUP2
04a0: SHA3
04a1: SLOAD
04a2: PUSH2 0x1388
04a5: SWAP1
04a6: DUP4
04a7: SWAP1
04a8: LT
04a9: ISZERO
04aa: PUSH2 0x080d
04ad: JUMPI
04ae: PUSH2 0x0002
04b1: JUMP
04b2: JUMPDEST
04b3: PUSH2 0x00da
04b6: PUSH1 0x04
04b8: CALLDATALOAD
04b9: PUSH1 0x00
04bb: SLOAD
04bc: CALLER
04bd: PUSH1 0x01
04bf: PUSH1 0xa0
04c1: PUSH1 0x02
04c3: EXP
04c4: SUB
04c5: SWAP1
04c6: DUP2
04c7: AND
04c8: SWAP2
04c9: AND
04ca: EQ
04cb: PUSH2 0x07eb
04ce: JUMPI
04cf: PUSH2 0x0002
04d2: JUMP
04d3: JUMPDEST
04d4: PUSH2 0x057b

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(0x60,0x80): ops[i]=f'PUSH{i-0x5f}'
for i in range(0x80,0x90): ops[i]=f'DUP{i-0x7f}'
for i in range(0x90,0xa0): ops[i]=f'SWAP{i-0x8f}'
start,end=1235,1705
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-dw1e6a6j
 succeeded in 0ms:
04d3: JUMPDEST
04d4: PUSH2 0x057b
04d7: PUSH1 0x05
04d9: SLOAD
04da: PUSH1 0x01
04dc: PUSH1 0xa0
04de: PUSH1 0x02
04e0: EXP
04e1: SUB
04e2: AND
04e3: DUP2
04e4: JUMP
04e5: JUMPDEST
04e6: PUSH1 0x40
04e8: MLOAD
04e9: DUP1
04ea: DUP1
04eb: PUSH1 0x20
04ed: ADD
04ee: DUP3
04ef: DUP2
04f0: SUB
04f1: DUP3
04f2: MSTORE
04f3: DUP4
04f4: DUP2
04f5: DUP2
04f6: MLOAD
04f7: DUP2
04f8: MSTORE
04f9: PUSH1 0x20
04fb: ADD
04fc: SWAP2
04fd: POP
04fe: DUP1
04ff: MLOAD
0500: SWAP1
0501: PUSH1 0x20
0503: ADD
0504: SWAP1
0505: DUP1
0506: DUP4
0507: DUP4
0508: DUP3
0509: SWAP1
050a: PUSH1 0x00
050c: PUSH1 0x04
050e: PUSH1 0x20
0510: DUP5
0511: PUSH1 0x1f
0513: ADD
0514: DIV
0515: PUSH1 0x0f
0517: MUL
0518: PUSH1 0x03
051a: ADD
051b: CALL
051c: POP
051d: SWAP1
051e: POP
051f: SWAP1
0520: DUP2
0521: ADD
0522: SWAP1
0523: PUSH1 0x1f
0525: AND
0526: DUP1
0527: ISZERO
0528: PUSH2 0x0545
052b: JUMPI
052c: DUP1
052d: DUP3
052e: SUB
052f: DUP1
0530: MLOAD
0531: PUSH1 0x01
0533: DUP4
0534: PUSH1 0x20
0536: SUB
0537: PUSH2 0x0100
053a: EXP
053b: SUB
053c: NOT
053d: AND
053e: DUP2
053f: MSTORE
0540: PUSH1 0x20
0542: ADD
0543: SWAP2
0544: POP
0545: JUMPDEST
0546: POP
0547: SWAP3
0548: POP
0549: POP
054a: POP
054b: PUSH1 0x40
054d: MLOAD
054e: DUP1
054f: SWAP2
0550: SUB
0551: SWAP1
0552: RETURN
0553: JUMPDEST
0554: PUSH1 0x40
0556: DUP1
0557: MLOAD
0558: SWAP2
0559: DUP3
055a: MSTORE
055b: MLOAD
055c: SWAP1
055d: DUP2
055e: SWAP1
055f: SUB
0560: PUSH1 0x20
0562: ADD
0563: SWAP1
0564: RETURN
0565: JUMPDEST
0566: PUSH1 0x40
0568: DUP1
0569: MLOAD
056a: PUSH1 0xff
056c: SWAP1
056d: SWAP3
056e: AND
056f: DUP3
0570: MSTORE
0571: MLOAD
0572: SWAP1
0573: DUP2
0574: SWAP1
0575: SUB
0576: PUSH1 0x20
0578: ADD
0579: SWAP1
057a: RETURN
057b: JUMPDEST
057c: PUSH1 0x40
057e: DUP1
057f: MLOAD
0580: PUSH1 0x01
0582: PUSH1 0xa0
0584: PUSH1 0x02
0586: EXP
0587: SUB
0588: SWAP3
0589: SWAP1
058a: SWAP3
058b: AND
058c: DUP3
058d: MSTORE
058e: MLOAD
058f: SWAP1
0590: DUP2
0591: SWAP1
0592: SUB
0593: PUSH1 0x20
0595: ADD
0596: SWAP1
0597: RETURN
0598: JUMPDEST
0599: DUP3
059a: ADD
059b: SWAP2
059c: SWAP1
059d: PUSH1 0x00
059f: MSTORE
05a0: PUSH1 0x20
05a2: PUSH1 0x00
05a4: SHA3
05a5: SWAP1
05a6: JUMPDEST
05a7: DUP2
05a8: SLOAD
05a9: DUP2
05aa: MSTORE
05ab: SWAP1
05ac: PUSH1 0x01
05ae: ADD
05af: SWAP1
05b0: PUSH1 0x20
05b2: ADD
05b3: DUP1
05b4: DUP4
05b5: GT
05b6: PUSH2 0x05a6
05b9: JUMPI
05ba: DUP3
05bb: SWAP1
05bc: SUB
05bd: PUSH1 0x1f
05bf: AND
05c0: DUP3
05c1: ADD
05c2: SWAP2
05c3: JUMPDEST
05c4: POP
05c5: POP
05c6: POP
05c7: POP
05c8: POP
05c9: DUP2
05ca: JUMP
05cb: JUMPDEST
05cc: PUSH1 0x01
05ce: PUSH1 0xa0
05d0: PUSH1 0x02
05d2: EXP
05d3: SUB
05d4: DUP3
05d5: AND
05d6: PUSH1 0x00
05d8: SWAP1
05d9: DUP2
05da: MSTORE
05db: PUSH1 0x07
05dd: PUSH1 0x20
05df: MSTORE
05e0: PUSH1 0x40
05e2: SWAP1
05e3: SHA3
05e4: SLOAD
05e5: DUP2
05e6: DUP2
05e7: ADD
05e8: LT
05e9: ISZERO
05ea: PUSH2 0x05f2
05ed: JUMPI
05ee: PUSH2 0x0002
05f1: JUMP
05f2: JUMPDEST
05f3: CALLER
05f4: PUSH1 0x01
05f6: PUSH1 0xa0
05f8: PUSH1 0x02
05fa: EXP
05fb: SUB
05fc: SWAP1
05fd: DUP2
05fe: AND
05ff: PUSH1 0x00
0601: DUP2
0602: DUP2
0603: MSTORE
0604: PUSH1 0x07
0606: PUSH1 0x20
0608: SWAP1
0609: DUP2
060a: MSTORE
060b: PUSH1 0x40
060d: DUP1
060e: DUP4
060f: SHA3
0610: DUP1
0611: SLOAD
0612: DUP8
0613: SWAP1
0614: SUB
0615: SWAP1
0616: SSTORE
0617: SWAP4
0618: DUP7
0619: AND
061a: DUP1
061b: DUP4
061c: MSTORE
061d: SWAP2
061e: DUP5
061f: SWAP1
0620: SHA3
0621: DUP1
0622: SLOAD
0623: DUP7
0624: ADD
0625: SWAP1
0626: SSTORE
0627: DUP4
0628: MLOAD
0629: DUP6
062a: DUP2
062b: MSTORE
062c: SWAP4
062d: MLOAD
062e: SWAP2
062f: SWAP4
0630: PUSH1 0x00
0632: DUP1
0633: MLOAD
0634: PUSH1 0x20
0636: PUSH2 0x0979
0639: DUP4
063a: CODECOPY
063b: DUP2
063c: MLOAD
063d: SWAP2
063e: MSTORE
063f: SWAP3
0640: SWAP1
0641: DUP2
0642: SWAP1
0643: SUB
0644: SWAP1
0645: SWAP2
0646: ADD
0647: SWAP1
0648: OP_a3
0649: POP
064a: POP
064b: JUMP
064c: JUMPDEST
064d: PUSH1 0x40
064f: DUP1
0650: MLOAD
0651: NUMBER
0652: DUP2
0653: MSTORE
0654: TIMESTAMP
0655: PUSH1 0x20
0657: DUP3
0658: ADD
0659: MSTORE
065a: DUP1
065b: DUP3
065c: ADD
065d: DUP7
065e: SWAP1
065f: MSTORE
0660: SWAP1
0661: MLOAD
0662: SWAP1
0663: DUP2
0664: SWAP1
0665: SUB
0666: PUSH1 0x60
0668: ADD
0669: SWAP1
066a: SHA3
066b: PUSH2 0x0675
066e: SWAP1
066f: PUSH1 0x0a
0671: PUSH2 0x01ac
0674: JUMP
0675: JUMPDEST
0676: SWAP1
0677: POP
0678: PUSH2 0x0200
067b: DUP2
067c: LT
067d: PUSH2 0x0687
0680: JUMPI
0681: PUSH1 0x64
0683: DUP5
0684: MUL
0685: SWAP3
0686: POP
0687: JUMPDEST
0688: PUSH2 0x0200
068b: DUP2
068c: LT
068d: ISZERO
068e: PUSH2 0x0699
0691: JUMPI
0692: PUSH2 0x2648
0695: DUP5
0696: MUL
0697: SWAP3
0698: POP
0699: JUMPDEST
069a: ADDRESS
069b: PUSH1 0x01
069d: PUSH1 0xa0
069f: PUSH1 0x02
06a1: EXP
06a2: SUB
06a3: AND
06a4: PUSH1 0x00
06a6: SWAP1
06a7: DUP2
06a8: MSTORE

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xa3:'LOG3',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(0x60,0x80): ops[i]=f'PUSH{i-0x5f}'
for i in range(0x80,0x90): ops[i]=f'DUP{i-0x7f}'
for i in range(0x90,0xa0): ops[i]=f'SWAP{i-0x8f}'
start,end=1705,2235
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-dw1e6a6j
 succeeded in 0ms:
06a9: PUSH1 0x07
06ab: PUSH1 0x20
06ad: MSTORE
06ae: PUSH1 0x40
06b0: SWAP1
06b1: SHA3
06b2: SLOAD
06b3: DUP4
06b4: SWAP1
06b5: LT
06b6: ISZERO
06b7: PUSH2 0x06bf
06ba: JUMPI
06bb: PUSH2 0x0002
06be: JUMP
06bf: JUMPDEST
06c0: CALLER
06c1: PUSH1 0x01
06c3: PUSH1 0xa0
06c5: PUSH1 0x02
06c7: EXP
06c8: SUB
06c9: SWAP1
06ca: DUP2
06cb: AND
06cc: PUSH1 0x00
06ce: DUP2
06cf: DUP2
06d0: MSTORE
06d1: PUSH1 0x07
06d3: PUSH1 0x20
06d5: SWAP1
06d6: DUP2
06d7: MSTORE
06d8: PUSH1 0x40
06da: DUP1
06db: DUP4
06dc: SHA3
06dd: DUP1
06de: SLOAD
06df: DUP10
06e0: ADD
06e1: SWAP1
06e2: SSTORE
06e3: ADDRESS
06e4: SWAP1
06e5: SWAP5
06e6: AND
06e7: DUP1
06e8: DUP4
06e9: MSTORE
06ea: SWAP2
06eb: DUP5
06ec: SWAP1
06ed: SHA3
06ee: DUP1
06ef: SLOAD
06f0: DUP9
06f1: SWAP1
06f2: SUB
06f3: SWAP1
06f4: SSTORE
06f5: DUP4
06f6: MLOAD
06f7: DUP8
06f8: DUP2
06f9: MSTORE
06fa: SWAP4
06fb: MLOAD
06fc: SWAP3
06fd: SWAP4
06fe: SWAP2
06ff: SWAP3
0700: PUSH1 0x00
0702: DUP1
0703: MLOAD
0704: PUSH1 0x20
0706: PUSH2 0x0979
0709: DUP4
070a: CODECOPY
070b: DUP2
070c: MLOAD
070d: SWAP2
070e: MSTORE
070f: SWAP3
0710: DUP2
0711: SWAP1
0712: SUB
0713: SWAP1
0714: SWAP2
0715: ADD
0716: SWAP1
0717: LOG3
0718: DUP2
0719: PUSH1 0x07
071b: PUSH1 0x00
071d: POP
071e: PUSH1 0x00
0720: PUSH1 0x05
0722: PUSH1 0x00
0724: SWAP1
0725: SLOAD
0726: SWAP1
0727: PUSH2 0x0100
072a: EXP
072b: SWAP1
072c: DIV
072d: PUSH1 0x01
072f: PUSH1 0xa0
0731: PUSH1 0x02
0733: EXP
0734: SUB
0735: AND
0736: PUSH1 0x01
0738: PUSH1 0xa0
073a: PUSH1 0x02
073c: EXP
073d: SUB
073e: AND
073f: DUP2
0740: MSTORE
0741: PUSH1 0x20
0743: ADD
0744: SWAP1
0745: DUP2
0746: MSTORE
0747: PUSH1 0x20
0749: ADD
074a: PUSH1 0x00
074c: SHA3
074d: PUSH1 0x00
074f: DUP3
0750: DUP3
0751: DUP3
0752: POP
0753: SLOAD
0754: ADD
0755: SWAP3
0756: POP
0757: POP
0758: DUP2
0759: SWAP1
075a: SSTORE
075b: POP
075c: DUP2
075d: PUSH1 0x07
075f: PUSH1 0x00
0761: POP
0762: PUSH1 0x00
0764: ADDRESS
0765: PUSH1 0x01
0767: PUSH1 0xa0
0769: PUSH1 0x02
076b: EXP
076c: SUB
076d: AND
076e: DUP2
076f: MSTORE
0770: PUSH1 0x20
0772: ADD
0773: SWAP1
0774: DUP2
0775: MSTORE
0776: PUSH1 0x20
0778: ADD
0779: PUSH1 0x00
077b: SHA3
077c: PUSH1 0x00
077e: DUP3
077f: DUP3
0780: DUP3
0781: POP
0782: SLOAD
0783: SUB
0784: SWAP3
0785: POP
0786: POP
0787: DUP2
0788: SWAP1
0789: SSTORE
078a: POP
078b: PUSH1 0x05
078d: PUSH1 0x00
078f: SWAP1
0790: SLOAD
0791: SWAP1
0792: PUSH2 0x0100
0795: EXP
0796: SWAP1
0797: DIV
0798: PUSH1 0x01
079a: PUSH1 0xa0
079c: PUSH1 0x02
079e: EXP
079f: SUB
07a0: AND
07a1: PUSH1 0x01
07a3: PUSH1 0xa0
07a5: PUSH1 0x02
07a7: EXP
07a8: SUB
07a9: AND
07aa: ADDRESS
07ab: PUSH1 0x01
07ad: PUSH1 0xa0
07af: PUSH1 0x02
07b1: EXP
07b2: SUB
07b3: AND
07b4: PUSH1 0x00
07b6: DUP1
07b7: MLOAD
07b8: PUSH1 0x20
07ba: PUSH2 0x0979
07bd: DUP4
07be: CODECOPY
07bf: DUP2
07c0: MLOAD
07c1: SWAP2
07c2: MSTORE
07c3: DUP5
07c4: PUSH1 0x40
07c6: MLOAD
07c7: DUP1
07c8: DUP3
07c9: DUP2
07ca: MSTORE
07cb: PUSH1 0x20
07cd: ADD
07ce: SWAP2
07cf: POP
07d0: POP
07d1: PUSH1 0x40
07d3: MLOAD
07d4: DUP1
07d5: SWAP2
07d6: SUB
07d7: SWAP1
07d8: LOG3
07d9: POP
07da: POP
07db: POP
07dc: SWAP1
07dd: JUMP
07de: JUMPDEST
07df: PUSH1 0x06
07e1: SSTORE
07e2: JUMP
07e3: JUMPDEST
07e4: POP
07e5: SWAP4
07e6: SWAP3
07e7: POP
07e8: POP
07e9: POP
07ea: JUMP
07eb: JUMPDEST
07ec: PUSH1 0x00
07ee: DUP1
07ef: SLOAD
07f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0805: NOT
0806: AND
0807: DUP3
0808: OR
0809: SWAP1
080a: SSTORE
080b: POP
080c: JUMP
080d: JUMPDEST
080e: ADDRESS
080f: PUSH1 0x01
0811: PUSH1 0xa0
0813: PUSH1 0x02
0815: EXP
0816: SUB
0817: SWAP1
0818: DUP2
0819: AND
081a: PUSH1 0x00
081c: SWAP1
081d: DUP2
081e: MSTORE
081f: PUSH1 0x07
0821: PUSH1 0x20
0823: MSTORE
0824: PUSH1 0x40
0826: DUP1
0827: DUP3
0828: SHA3
0829: DUP1
082a: SLOAD
082b: DUP8
082c: ADD
082d: SWAP1
082e: SSTORE
082f: CALLER
0830: SWAP1
0831: SWAP3
0832: AND
0833: DUP1
0834: DUP3
0835: MSTORE
0836: DUP3
0837: DUP3
0838: SHA3
0839: DUP1
083a: SLOAD
083b: DUP8
083c: SWAP1
083d: SUB
083e: SWAP1
083f: SSTORE
0840: SWAP2
0841: MLOAD
0842: PUSH4 0xffffffff
0847: DUP5
0848: AND
0849: DUP7
084a: MUL
084b: SWAP5
084c: POP
084d: DUP5
084e: SWAP1
084f: DUP3
0850: DUP2
0851: DUP2
0852: DUP2
0853: DUP6
0854: DUP9
0855: DUP4
0856: CALL
0857: POP
0858: POP
0859: PUSH1 0x40
085b: DUP1
085c: MLOAD
085d: DUP8
085e: DUP2
085f: MSTORE
0860: SWAP1
0861: MLOAD
0862: ADDRESS
0863: PUSH1 0x01
0865: PUSH1 0xa0
0867: PUSH1 0x02
0869: EXP
086a: SUB
086b: AND
086c: SWAP5
086d: SWAP4
086e: POP
086f: PUSH1 0x00
0871: DUP1
0872: MLOAD
0873: PUSH1 0x20
0875: PUSH2 0x0979
0878: DUP4
0879: CODECOPY
087a: DUP2
087b: MLOAD
087c: SWAP2
087d: MSTORE
087e: SWAP3
087f: POP
0880: SWAP1
0881: DUP2
0882: SWAP1
0883: SUB
0884: PUSH1 0x20
0886: ADD
0887: SWAP1
0888: LOG3
0889: POP
088a: SWAP2
088b: SWAP1
088c: POP
088d: JUMP
088e: JUMPDEST
088f: PUSH1 0x01
0891: PUSH1 0xa0
0893: PUSH1 0x02
0895: EXP
0896: SUB
0897: DUP4
0898: AND
0899: PUSH1 0x00
089b: SWAP1
089c: DUP2
089d: MSTORE
089e: PUSH1 0x07
08a0: PUSH1 0x20
08a2: MSTORE
08a3: PUSH1 0x40
08a5: SWAP1
08a6: SHA3
08a7: SLOAD
08a8: DUP1
08a9: DUP4
08aa: ADD
08ab: LT
08ac: ISZERO
08ad: PUSH2 0x08b5
08b0: JUMPI
08b1: PUSH2 0x0002
08b4: JUMP
08b5: JUMPDEST
08b6: PUSH1 0x01
08b8: PUSH1 0xa0
08ba: PUSH1 0x02

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xa3:'LOG3',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(0x60,0x80): ops[i]=f'PUSH{i-0x5f}'
for i in range(0x80,0x90): ops[i]=f'DUP{i-0x7f}'
for i in range(0x90,0xa0): ops[i]=f'SWAP{i-0x8f}'
start,end=2235,2421
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-dw1e6a6j
 succeeded in 0ms:
08bb: MUL
08bc: EXP
08bd: SUB
08be: DUP5
08bf: DUP2
08c0: AND
08c1: PUSH1 0x00
08c3: DUP2
08c4: DUP2
08c5: MSTORE
08c6: PUSH1 0x08
08c8: PUSH1 0x20
08ca: SWAP1
08cb: DUP2
08cc: MSTORE
08cd: PUSH1 0x40
08cf: DUP1
08d0: DUP4
08d1: SHA3
08d2: CALLER
08d3: SWAP1
08d4: SWAP6
08d5: AND
08d6: DUP1
08d7: DUP5
08d8: MSTORE
08d9: SWAP5
08da: DUP3
08db: MSTORE
08dc: DUP1
08dd: DUP4
08de: SHA3
08df: SLOAD
08e0: SWAP4
08e1: DUP4
08e2: MSTORE
08e3: PUSH1 0x09
08e5: DUP3
08e6: MSTORE
08e7: DUP1
08e8: DUP4
08e9: SHA3
08ea: SWAP5
08eb: DUP4
08ec: MSTORE
08ed: SWAP4
08ee: SWAP1
08ef: MSTORE
08f0: SWAP2
08f1: SWAP1
08f2: SWAP2
08f3: SHA3
08f4: SLOAD
08f5: DUP4
08f6: ADD
08f7: GT
08f8: ISZERO
08f9: PUSH2 0x0901
08fc: JUMPI
08fd: PUSH2 0x0002
0900: JUMP
0901: JUMPDEST
0902: PUSH1 0x01
0904: PUSH1 0xa0
0906: PUSH1 0x02
0908: EXP
0909: SUB
090a: DUP5
090b: DUP2
090c: AND
090d: PUSH1 0x00
090f: DUP2
0910: DUP2
0911: MSTORE
0912: PUSH1 0x07
0914: PUSH1 0x20
0916: SWAP1
0917: DUP2
0918: MSTORE
0919: PUSH1 0x40
091b: DUP1
091c: DUP4
091d: SHA3
091e: DUP1
091f: SLOAD
0920: DUP9
0921: SWAP1
0922: SUB
0923: SWAP1
0924: SSTORE
0925: DUP8
0926: DUP6
0927: AND
0928: DUP1
0929: DUP5
092a: MSTORE
092b: DUP2
092c: DUP5
092d: SHA3
092e: DUP1
092f: SLOAD
0930: DUP10
0931: ADD
0932: SWAP1
0933: SSTORE
0934: DUP5
0935: DUP5
0936: MSTORE
0937: PUSH1 0x09
0939: DUP4
093a: MSTORE
093b: DUP2
093c: DUP5
093d: SHA3
093e: CALLER
093f: SWAP1
0940: SWAP7
0941: AND
0942: DUP5
0943: MSTORE
0944: SWAP5
0945: DUP3
0946: MSTORE
0947: SWAP2
0948: DUP3
0949: SWAP1
094a: SHA3
094b: DUP1
094c: SLOAD
094d: DUP8
094e: ADD
094f: SWAP1
0950: SSTORE
0951: DUP2
0952: MLOAD
0953: DUP7
0954: DUP2
0955: MSTORE
0956: SWAP2
0957: MLOAD
0958: PUSH1 0x00
095a: DUP1
095b: MLOAD
095c: PUSH1 0x20
095e: PUSH2 0x0979
0961: DUP4
0962: CODECOPY
0963: DUP2
0964: MLOAD
0965: SWAP2
0966: MSTORE
0967: SWAP3
0968: DUP2
0969: SWAP1
096a: SUB
096b: SWAP1
096c: SWAP2
096d: ADD
096e: SWAP1
096f: LOG3
0970: POP
0971: PUSH1 0x01
0973: SWAP4
0974: SWAP3

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xa3:'LOG3',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(0x60,0x80): ops[i]=f'PUSH{i-0x5f}'
for i in range(0x80,0x90): ops[i]=f'DUP{i-0x7f}'
for i in range(0x90,0xa0): ops[i]=f'SWAP{i-0x8f}'
start,end=2230,2420
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-dw1e6a6j
 succeeded in 0ms:
08b6: PUSH1 0x01
08b8: PUSH1 0xa0
08ba: PUSH1 0x02
08bc: EXP
08bd: SUB
08be: DUP5
08bf: DUP2
08c0: AND
08c1: PUSH1 0x00
08c3: DUP2
08c4: DUP2
08c5: MSTORE
08c6: PUSH1 0x08
08c8: PUSH1 0x20
08ca: SWAP1
08cb: DUP2
08cc: MSTORE
08cd: PUSH1 0x40
08cf: DUP1
08d0: DUP4
08d1: SHA3
08d2: CALLER
08d3: SWAP1
08d4: SWAP6
08d5: AND
08d6: DUP1
08d7: DUP5
08d8: MSTORE
08d9: SWAP5
08da: DUP3
08db: MSTORE
08dc: DUP1
08dd: DUP4
08de: SHA3
08df: SLOAD
08e0: SWAP4
08e1: DUP4
08e2: MSTORE
08e3: PUSH1 0x09
08e5: DUP3
08e6: MSTORE
08e7: DUP1
08e8: DUP4
08e9: SHA3
08ea: SWAP5
08eb: DUP4
08ec: MSTORE
08ed: SWAP4
08ee: SWAP1
08ef: MSTORE
08f0: SWAP2
08f1: SWAP1
08f2: SWAP2
08f3: SHA3
08f4: SLOAD
08f5: DUP4
08f6: ADD
08f7: GT
08f8: ISZERO
08f9: PUSH2 0x0901
08fc: JUMPI
08fd: PUSH2 0x0002
0900: JUMP
0901: JUMPDEST
0902: PUSH1 0x01
0904: PUSH1 0xa0
0906: PUSH1 0x02
0908: EXP
0909: SUB
090a: DUP5
090b: DUP2
090c: AND
090d: PUSH1 0x00
090f: DUP2
0910: DUP2
0911: MSTORE
0912: PUSH1 0x07
0914: PUSH1 0x20
0916: SWAP1
0917: DUP2
0918: MSTORE
0919: PUSH1 0x40
091b: DUP1
091c: DUP4
091d: SHA3
091e: DUP1
091f: SLOAD
0920: DUP9
0921: SWAP1
0922: SUB
0923: SWAP1
0924: SSTORE
0925: DUP8
0926: DUP6
0927: AND
0928: DUP1
0929: DUP5
092a: MSTORE
092b: DUP2
092c: DUP5
092d: SHA3
092e: DUP1
092f: SLOAD
0930: DUP10
0931: ADD
0932: SWAP1
0933: SSTORE
0934: DUP5
0935: DUP5
0936: MSTORE
0937: PUSH1 0x09
0939: DUP4
093a: MSTORE
093b: DUP2
093c: DUP5
093d: SHA3
093e: CALLER
093f: SWAP1
0940: SWAP7
0941: AND
0942: DUP5
0943: MSTORE
0944: SWAP5
0945: DUP3
0946: MSTORE
0947: SWAP2
0948: DUP3
0949: SWAP1
094a: SHA3
094b: DUP1
094c: SLOAD
094d: DUP8
094e: ADD
094f: SWAP1
0950: SSTORE
0951: DUP2
0952: MLOAD
0953: DUP7
0954: DUP2
0955: MSTORE
0956: SWAP2
0957: MLOAD
0958: PUSH1 0x00
095a: DUP1
095b: MLOAD
095c: PUSH1 0x20
095e: PUSH2 0x0979
0961: DUP4
0962: CODECOPY
0963: DUP2
0964: MLOAD
0965: SWAP2
0966: MSTORE
0967: SWAP3
0968: DUP2
0969: SWAP1
096a: SUB
096b: SWAP1
096c: SWAP2
096d: ADD
096e: SWAP1
096f: LOG3
0970: POP
0971: PUSH1 0x01
0973: SWAP4

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])

def dis(pc):
    op=code[pc]
    if 0x60<=op<=0x7f:
        n=op-0x5f
        return op, code[pc+1:pc+1+n], pc+1+n
    return op, b'', pc+1

def opname(op):
    base={0x00:'STOP',0x01:'ADD',0x03:'SUB',0x04:'DIV',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x19:'NOT',0x20:'SHA3',0x30:'ADDRESS',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x39:'CODECOPY',0x40:'BLOCKHASH',0x42:'TIMESTAMP',0x43:'NUMBER',0x51:'MLOAD',0x52:'MSTORE',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',0x5a:'GAS',0xa3:'LOG3',0xf1:'CALL',0xf3:'RETURN'}
    if 0x60<=op<=0x7f: return f'PUSH{op-0x5f}'
    if 0x80<=op<=0x8f: return f'DUP{op-0x7f}'
    if 0x90<=op<=0x9f: return f'SWAP{op-0x8f}'
    return base.get(op,hex(op))

def binop(stack,sym):
    a=stack.pop(); b=stack.pop(); stack.append(f'({b}{sym}{a})')

def run(start,end,initial):
    stack=initial[:]
    mem={}
    pc=start
    while pc<end:
        op,data,npc=dis(pc)
        name=opname(op)
        # print(pc, name, stack)
        if 0x60<=op<=0x7f:
            stack.append(hex(int.from_bytes(data,'big')))
        elif 0x80<=op<=0x8f:
            i=op-0x7f; stack.append(stack[-i])
        elif 0x90<=op<=0x9f:
            i=op-0x8f; stack[-1],stack[-1-i]=stack[-1-i],stack[-1]
        elif op==0x50:
            stack.pop()
        elif op==0x51:
            off=stack.pop(); stack.append(mem.get(off,f'm[{off}]'))
        elif op==0x52:
            off=stack.pop(); val=stack.pop(); mem[off]=val
        elif op==0x54:
            slot=stack.pop(); stack.append(f's[{slot}]')
        elif op==0x55:
            slot=stack.pop(); val=stack.pop(); print(f'SSTORE pc {pc:x}: {slot} = {val}')
        elif op==0x33:
            stack.append('caller')
        elif op==0x30:
            stack.append('address(this)')
        elif op==0x34:
            stack.append('callvalue')
        elif op==0x35:
            off=stack.pop(); stack.append(f'cd[{off}]')
        elif op==0x43:
            stack.append('number')
        elif op==0x42:
            stack.append('timestamp')
        elif op==0x40:
            x=stack.pop(); stack.append(f'blockhash({x})')
        elif op==0x01:
            binop(stack,'+')
        elif op==0x03:
            binop(stack,'-')
        elif op==0x04:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}/{a})')
        elif op==0x10:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}<{a})')
        elif op==0x11:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}>{a})')
        elif op==0x14:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}=={a})')
        elif op==0x15:
            a=stack.pop(); stack.append(f'iszero({a})')
        elif op==0x16:
            binop(stack,'&')
        elif op==0x19:
            a=stack.pop(); stack.append(f'~{a}')
        elif op==0x20:
            off=stack.pop(); size=stack.pop(); stack.append(f'keccak({off},{size})')
        elif op==0x36:
            stack.append('calldatasize')
        elif op==0x37:
            dest=stack.pop(); off=stack.pop(); size=stack.pop(); print(f'CALLDATACOPY {dest} {off} {size}')
        elif op==0x39:
            dest=stack.pop(); off=stack.pop(); size=stack.pop(); print(f'CODECOPY {dest} {off} {size}')
        elif op==0x5a:
            stack.append('gas')
        elif op==0x57:
            dest=stack.pop(); cond=stack.pop(); print(f'JUMPI pc {pc:x} dest {dest} cond {cond}')
        elif op==0x56:
            dest=stack.pop(); print(f'JUMP pc {pc:x} dest {dest} stack_top={stack[-5:] if stack else []}'); break
        elif op==0xf1:
            gas=stack.pop(); to=stack.pop(); value=stack.pop(); in_off=stack.pop(); in_sz=stack.pop(); out_off=stack.pop(); out_sz=stack.pop();
            print(f'CALL pc {pc:x}: to={to}, value={value}, in=mem[{in_off}:{in_sz}], out={out_off}:{out_sz}, gas={gas}')
            stack.append(f'call({to})')
        elif op==0xa3:
            mstart=stack.pop(); msz=stack.pop(); t1=stack.pop(); t2=stack.pop(); t3=stack.pop(); print(f'LOG3 pc {pc:x}: topics {t1},{t2},{t3}, data {mstart}:{msz}')
        elif op in (0x5b,):
            pass
        else:
            print(f'stopping unsupported pc {pc:x} {name} stack={stack[-8:]}')
            break
        pc=npc
    print('Final stack', stack[-12:])
    print('Mem', mem)

print('=== 02d1 -> 0425 ===')
# initial stack before entry: [ret?]. From dispatcher pattern it likely pushes return helper before jumping. Use placeholders bottom->top.
run(0x02d1,0x0426,['ret'])
print('\\n=== 0482 -> 0856 ===')
run(0x0482,0x0857,['ret'])
PY" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
=== 02d1 -> 0425 ===
stopping unsupported pc 2e9 0x2 stack=['0x40', 'm[0x40]', '0x20', 'cd[0x44]', '0x4', 'cd[(cd[0x44]+0x4)]', '(0x20/(0x1f+cd[(cd[0x44]+0x4)]))', '0x20']
Final stack ['ret', '0x40', 'm[0x40]', '0x20', 'cd[0x44]', '0x4', 'cd[(cd[0x44]+0x4)]', '(0x20/(0x1f+cd[(cd[0x44]+0x4)]))', '0x20']
Mem {}

=== 0482 -> 0856 ===
stopping unsupported pc 490 0xa stack=['ret', '0x553', 'cd[0x4]', 'caller', '0x1', '0xa0', '0x2']
Final stack ['ret', '0x553', 'cd[0x4]', 'caller', '0x1', '0xa0', '0x2']
Mem {}

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])

def dis(pc):
    op=code[pc]
    if 0x60<=op<=0x7f:
        n=op-0x5f
        return op, code[pc+1:pc+1+n], pc+1+n
    return op, b'', pc+1

def binop(stack,sym):
    a=stack.pop(); b=stack.pop(); stack.append(f'({b}{sym}{a})')

def run(start,end,initial):
    stack=initial[:]
    mem={}
    pc=start
    while pc<end:
        op,data,npc=dis(pc)
        if 0x60<=op<=0x7f:
            stack.append(hex(int.from_bytes(data,'big')))
        elif 0x80<=op<=0x8f:
            i=op-0x7f; stack.append(stack[-i])
        elif 0x90<=op<=0x9f:
            i=op-0x8f; stack[-1],stack[-1-i]=stack[-1-i],stack[-1]
        elif op==0x50:
            stack.pop()
        elif op==0x51:
            off=stack.pop(); stack.append(mem.get(off,f'm[{off}]'))
        elif op==0x52:
            off=stack.pop(); val=stack.pop(); mem[off]=val
        elif op==0x54:
            slot=stack.pop(); stack.append(f's[{slot}]')
        elif op==0x55:
            slot=stack.pop(); val=stack.pop(); print(f'SSTORE pc 0x{pc:x}: {slot} = {val}')
        elif op==0x33: stack.append('caller')
        elif op==0x30: stack.append('address(this)')
        elif op==0x34: stack.append('callvalue')
        elif op==0x35:
            off=stack.pop(); stack.append(f'cd[{off}]')
        elif op==0x43: stack.append('number')
        elif op==0x42: stack.append('timestamp')
        elif op==0x40:
            x=stack.pop(); stack.append(f'blockhash({x})')
        elif op==0x01: binop(stack,'+')
        elif op==0x02: binop(stack,'*')
        elif op==0x03: binop(stack,'-')
        elif op==0x04:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}/{a})')
        elif op==0x0a:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}**{a})')
        elif op==0x10: binop(stack,'<')
        elif op==0x11: binop(stack,'>')
        elif op==0x14: binop(stack,'==')
        elif op==0x15:
            a=stack.pop(); stack.append(f'iszero({a})')
        elif op==0x16: binop(stack,'&')
        elif op==0x17: binop(stack,'|')
        elif op==0x19:
            a=stack.pop(); stack.append(f'~{a}')
        elif op==0x20:
            off=stack.pop(); size=stack.pop(); stack.append(f'keccak({off},{size})')
        elif op==0x36: stack.append('calldatasize')
        elif op==0x37:
            dest=stack.pop(); off=stack.pop(); size=stack.pop(); mem[dest]=f'calldata[{off}:{size}]'; print(f'CALLDATACOPY pc 0x{pc:x}: {dest} <- calldata[{off}:{size}]')
        elif op==0x39:
            dest=stack.pop(); off=stack.pop(); size=stack.pop(); mem[dest]=f'code[{off}:{size}]'; print(f'CODECOPY pc 0x{pc:x}: {dest} <- code[{off}:{size}]')
        elif op==0x5a: stack.append('gas')
        elif op==0x57:
            dest=stack.pop(); cond=stack.pop(); print(f'JUMPI pc 0x{pc:x} dest {dest} cond {cond}')
        elif op==0x56:
            dest=stack.pop(); print(f'JUMP pc 0x{pc:x} dest {dest} stack_top={stack[-8:]}'); break
        elif op==0xf1:
            gas=stack.pop(); to=stack.pop(); value=stack.pop(); in_off=stack.pop(); in_sz=stack.pop(); out_off=stack.pop(); out_sz=stack.pop();
            print(f'CALL pc 0x{pc:x}: to={to}, value={value}, in_off={in_off}, in_sz={in_sz}, out_off={out_off}, out_sz={out_sz}, gas={gas}')
            stack.append(f'call({to})')
        elif op==0xa3:
            mstart=stack.pop(); msz=stack.pop(); t1=stack.pop(); t2=stack.pop(); t3=stack.pop(); print(f'LOG3 pc 0x{pc:x}: topics=[{t1},{t2},{t3}] data={mstart}:{msz}')
        elif op in (0x5b,):
            pass
        elif op==0xfd:
            print(f'REVERT pc 0x{pc:x} stack={stack[-8:]}'); break
        else:
            print(f'stopping unsupported pc 0x{pc:x} op=0x{op:x} stack={stack[-10:]}')
            break
        pc=npc
    print('Final stack', stack[-15:])
    print('Mem keys', mem)

print('=== 02d1 -> 0425 ===')
run(0x02d1,0x0426,['ret'])
print('\\n=== 0482 -> 0856 ===')
run(0x0482,0x0857,['ret'])
PY" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
=== 02d1 -> 0425 ===
CALLDATACOPY pc 0x313: (0x20+m[0x40]) <- calldata[(cd[0x44]+0x24):cd[(cd[0x44]+0x4)]]
SSTORE pc 0x364: keccak(0x0,((0x0+0x20)+0x20)) = cd[0x24]
CALL pc 0x3e1: to=0x4, value=0x0, in_off=(m[0x40]+0x20), in_sz=cd[(cd[0x44]+0x4)], out_off=((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20), out_sz=cd[(cd[0x44]+0x4)], gas=(((0x20/(cd[(cd[0x44]+0x4)]+0x1f))*0xf)+0x3)
JUMPI pc 0x3f1 dest 0x40b cond iszero((cd[(cd[0x44]+0x4)]&0x1f))
CALL pc 0x425: to=(cd[0x4]&(0x1-(0xa0**0x2))), value=0x0, in_off=((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20), in_sz=(((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)-(((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))+0x20)), out_off=((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20), out_sz=0x0, gas=(0x61da-gas)
Final stack ['ret', '0x553', 'cd[0x4]', 'cd[0x24]', 'm[0x40]', '0x0', 'cd[0x4]', '(cd[0x4]&(0x1-(0xa0**0x2)))', '0x8f4ffcb1', '(((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))+0x20)', 'call((cd[0x4]&(0x1-(0xa0**0x2))))']
Mem keys {'0x40': '((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)', 'm[0x40]': 'cd[(cd[0x44]+0x4)]', '(0x20+m[0x40])': 'calldata[(cd[0x44]+0x24):cd[(cd[0x44]+0x4)]]', '0x0': '(cd[0x4]&(0x1-(0xa0**0x2)))', '(0x0+0x20)': 'keccak(0x0,((0x0+0x20)+0x20))', '((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)': '(0x8f4ffcb1*(0xe0**0x2))', '(((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)': '(caller&(0x1-(0xa0**0x2)))', '((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)': 'cd[0x24]', '(((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)': '(address(this)&(0x1-(0xa0**0x2)))', '((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)': '((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)-(((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20))', '(((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)': 'cd[(cd[0x44]+0x4)]', '((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))': '(m[((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))]&~(0x1-(((cd[(cd[0x44]+0x4)]&0x1f)-0x20)**0x100)))'}

=== 0482 -> 0856 ===
JUMPI pc 0x4ad dest 0x80d cond iszero((cd[0x4]<s[keccak(0x0,0x40)]))
JUMP pc 0x4b1 dest 0x2 stack_top=['ret', '0x553', 'cd[0x4]', '0x0', '0x1388']
Final stack ['ret', '0x553', 'cd[0x4]', '0x0', '0x1388']
Mem keys {'0x0': '(caller&(0x1-(0xa0**0x2)))', '0x20': '0x7'}

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])

def dis(pc):
    op=code[pc]
    if 0x60<=op<=0x7f:
        n=op-0x5f
        return op, code[pc+1:pc+1+n], pc+1+n
    return op, b'', pc+1

def binop(stack,sym):
    a=stack.pop(); b=stack.pop(); stack.append(f'({b}{sym}{a})')

def run(start,end,initial):
    stack=initial[:]
    mem={}
    pc=start
    while pc<end:
        op,data,npc=dis(pc)
        if 0x60<=op<=0x7f:
            stack.append(hex(int.from_bytes(data,'big')))
        elif 0x80<=op<=0x8f:
            i=op-0x7f; stack.append(stack[-i])
        elif 0x90<=op<=0x9f:
            i=op-0x8f; stack[-1],stack[-1-i]=stack[-1-i],stack[-1]
        elif op==0x50: stack.pop()
        elif op==0x51:
            off=stack.pop(); stack.append(mem.get(off,f'm[{off}]'))
        elif op==0x52:
            off=stack.pop(); val=stack.pop(); mem[off]=val
        elif op==0x54:
            slot=stack.pop(); stack.append(f's[{slot}]')
        elif op==0x55:
            slot=stack.pop(); val=stack.pop(); print(f'SSTORE pc 0x{pc:x}: {slot} = {val}')
        elif op==0x33: stack.append('caller')
        elif op==0x30: stack.append('address(this)')
        elif op==0x35:
            off=stack.pop(); stack.append(f'cd[{off}]')
        elif op==0x01: binop(stack,'+')
        elif op==0x02: binop(stack,'*')
        elif op==0x03: binop(stack,'-')
        elif op==0x0a: binop(stack,'**')
        elif op==0x16: binop(stack,'&')
        elif op==0x20:
            off=stack.pop(); size=stack.pop(); stack.append(f'keccak({off},{size})')
        elif op==0x39:
            dest=stack.pop(); off=stack.pop(); size=stack.pop(); mem[dest]=f'code[{off}:{size}]'; print(f'CODECOPY pc 0x{pc:x}: {dest} <- code[{off}:{size}]')
        elif op==0x5a: stack.append('gas')
        elif op==0xf1:
            gas=stack.pop(); to=stack.pop(); value=stack.pop(); in_off=stack.pop(); in_sz=stack.pop(); out_off=stack.pop(); out_sz=stack.pop();
            print(f'CALL pc 0x{pc:x}: to={to}, value={value}, in_off={in_off}, in_sz={in_sz}, out_off={out_off}, out_sz={out_sz}, gas={gas}')
            stack.append(f'call({to})')
        elif op==0xa3:
            mstart=stack.pop(); msz=stack.pop(); t1=stack.pop(); t2=stack.pop(); t3=stack.pop(); print(f'LOG3 pc 0x{pc:x}: topics=[{t1},{t2},{t3}] data={mstart}:{msz}')
        elif op in (0x5b,): pass
        else:
            print(f'pc 0x{pc:x} op 0x{op:x} stack_top={stack[-12:]}');
            if op==0x57:
                dest=stack.pop(); cond=stack.pop(); print(f'JUMPI dest={dest} cond={cond}')
            elif op==0x56:
                dest=stack.pop(); print(f'JUMP dest={dest}')
                break
            else:
                break
        pc=npc
    print('Final stack', stack[-20:])
    print('Mem', mem)

run(0x080d,0x0857,['ret','arg0','0x1388'])
PY" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
SSTORE pc 0x82e: keccak(0x0,0x40) = (s[keccak(0x0,0x40)]+ret)
SSTORE pc 0x83f: keccak(0x0,0x40) = (ret-s[keccak(0x0,0x40)])
CALL pc 0x856: to=(caller&(0x1-(0xa0**0x2))), value=((0xffffffff&0x1388)*ret), in_off=m[0x40], in_sz=0x0, out_off=m[0x40], out_sz=0x0, gas=0x0
Final stack ['ret', '((0xffffffff&0x1388)*ret)', '0x1388', '(caller&(0x1-(0xa0**0x2)))', '0x0', '((0xffffffff&0x1388)*ret)', 'm[0x40]', 'call((caller&(0x1-(0xa0**0x2))))']
Mem {'0x0': '(caller&(0x1-(0xa0**0x2)))', '0x20': '0x7'}

exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
obj=json.loads(Path('BYTECODE_BUNDLE.json').read_text())
code=bytes.fromhex(obj['artifact']['runtime_bytecode']['full'][2:])

def dis(pc):
    op=code[pc]
    if 0x60<=op<=0x7f:
        n=op-0x5f
        return op, code[pc+1:pc+1+n], pc+1+n
    return op, b'', pc+1

def binop(stack,sym):
    a=stack.pop(); b=stack.pop(); stack.append(f'({b}{sym}{a})')

def run(start,end,initial,label):
    print('===',label,'===')
    stack=initial[:]
    mem={}
    pc=start
    while pc<end:
        op,data,npc=dis(pc)
        if 0x60<=op<=0x7f:
            stack.append(hex(int.from_bytes(data,'big')))
        elif 0x80<=op<=0x8f:
            i=op-0x7f; stack.append(stack[-i])
        elif 0x90<=op<=0x9f:
            i=op-0x8f; stack[-1],stack[-1-i]=stack[-1-i],stack[-1]
        elif op==0x50: stack.pop()
        elif op==0x51:
            off=stack.pop(); stack.append(mem.get(off,f'm[{off}]'))
        elif op==0x52:
            off=stack.pop(); val=stack.pop(); mem[off]=val
        elif op==0x54:
            slot=stack.pop(); stack.append(f's[{slot}]')
        elif op==0x55:
            slot=stack.pop(); val=stack.pop(); print(f'SSTORE pc 0x{pc:x}: s[{slot}] = {val}')
        elif op==0x33: stack.append('caller')
        elif op==0x30: stack.append('address(this)')
        elif op==0x34: stack.append('callvalue')
        elif op==0x35:
            off=stack.pop(); stack.append(f'cd[{off}]')
        elif op==0x43: stack.append('number')
        elif op==0x42: stack.append('timestamp')
        elif op==0x40:
            x=stack.pop(); stack.append(f'blockhash({x})')
        elif op==0x01: binop(stack,'+')
        elif op==0x02: binop(stack,'*')
        elif op==0x03: binop(stack,'-')
        elif op==0x04:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}/{a})')
        elif op==0x06:
            a=stack.pop(); b=stack.pop(); stack.append(f'({b}%{a})')
        elif op==0x0a: binop(stack,'**')
        elif op==0x10: binop(stack,'<')
        elif op==0x11: binop(stack,'>')
        elif op==0x14: binop(stack,'==')
        elif op==0x15:
            a=stack.pop(); stack.append(f'iszero({a})')
        elif op==0x16: binop(stack,'&')
        elif op==0x17: binop(stack,'|')
        elif op==0x19:
            a=stack.pop(); stack.append(f'~{a}')
        elif op==0x20:
            off=stack.pop(); size=stack.pop(); stack.append(f'keccak({off},{size})')
        elif op==0x36: stack.append('calldatasize')
        elif op==0x37:
            dest=stack.pop(); off=stack.pop(); size=stack.pop(); mem[dest]=f'calldata[{off}:{size}]'; print(f'CALLDATACOPY pc 0x{pc:x}: m[{dest}] <- calldata[{off}:{size}]')
        elif op==0x39:
            dest=stack.pop(); off=stack.pop(); size=stack.pop(); mem[dest]=f'code[{off}:{size}]'; print(f'CODECOPY pc 0x{pc:x}: m[{dest}] <- code[{off}:{size}]')
        elif op==0x5a: stack.append('gas')
        elif op==0x57:
            dest=stack.pop(); cond=stack.pop(); print(f'JUMPI pc 0x{pc:x}: dest={dest}, cond={cond}')
        elif op==0x56:
            dest=stack.pop(); print(f'JUMP pc 0x{pc:x}: dest={dest}, stack={stack[-8:]}'); break
        elif op==0xf1:
            gas=stack.pop(); to=stack.pop(); value=stack.pop(); in_off=stack.pop(); in_sz=stack.pop(); out_off=stack.pop(); out_sz=stack.pop();
            print(f'CALL pc 0x{pc:x}: to={to}, value={value}, in=[{in_off}:{in_sz}], out=[{out_off}:{out_sz}], gas={gas}')
            stack.append(f'call({to})')
        elif op==0xa3:
            mstart=stack.pop(); msz=stack.pop(); t1=stack.pop(); t2=stack.pop(); t3=stack.pop(); print(f'LOG3 pc 0x{pc:x}: topics=[{t1},{t2},{t3}] data=[{mstart}:{msz}]')
        elif op in (0x5b,): pass
        elif op==0xfd:
            print(f'REVERT pc 0x{pc:x} stack={stack[-8:]}'); break
        else:
            print(f'unsupported pc 0x{pc:x} op=0x{op:x} stack={stack[-12:]}')
            break
        pc=npc
    print('Final stack', stack[-20:])
    print('Mem', mem)

run(0x02d1,0x0426,['ret'],'02d1->0425')
run(0x0482,0x04ae,['ret'],'0482 precheck')
# after branch likely [ret,arg0,0x1388]
run(0x080d,0x0857,['ret','arg0','0x1388'],'080d->0856')
PY" in /tmp/codex-dw1e6a6j
 succeeded in 0ms:
=== 02d1->0425 ===
CALLDATACOPY pc 0x313: m[(0x20+m[0x40])] <- calldata[(cd[0x44]+0x24):cd[(cd[0x44]+0x4)]]
SSTORE pc 0x364: s[keccak(0x0,((0x0+0x20)+0x20))] = cd[0x24]
CALL pc 0x3e1: to=0x4, value=0x0, in=[(m[0x40]+0x20):cd[(cd[0x44]+0x4)]], out=[((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20):cd[(cd[0x44]+0x4)]], gas=(((0x20/(cd[(cd[0x44]+0x4)]+0x1f))*0xf)+0x3)
JUMPI pc 0x3f1: dest=0x40b, cond=iszero((cd[(cd[0x44]+0x4)]&0x1f))
CALL pc 0x425: to=(cd[0x4]&(0x1-(0xa0**0x2))), value=0x0, in=[((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20):(((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)-(((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))+0x20))], out=[((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20):0x0], gas=(0x61da-gas)
Final stack ['ret', '0x553', 'cd[0x4]', 'cd[0x24]', 'm[0x40]', '0x0', 'cd[0x4]', '(cd[0x4]&(0x1-(0xa0**0x2)))', '0x8f4ffcb1', '(((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))+0x20)', 'call((cd[0x4]&(0x1-(0xa0**0x2))))']
Mem {'0x40': '((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)', 'm[0x40]': 'cd[(cd[0x44]+0x4)]', '(0x20+m[0x40])': 'calldata[(cd[0x44]+0x24):cd[(cd[0x44]+0x4)]]', '0x0': '(cd[0x4]&(0x1-(0xa0**0x2)))', '(0x0+0x20)': 'keccak(0x0,((0x0+0x20)+0x20))', '((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)': '(0x8f4ffcb1*(0xe0**0x2))', '(((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)': '(caller&(0x1-(0xa0**0x2)))', '((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)': 'cd[0x24]', '(((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)': '(address(this)&(0x1-(0xa0**0x2)))', '((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)': '((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)-(((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20))', '(((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)': 'cd[(cd[0x44]+0x4)]', '((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))': '(m[((cd[(cd[0x44]+0x4)]&0x1f)-(((((((((((0x20/(0x1f+cd[(cd[0x44]+0x4)]))*0x20)+m[0x40])+0x20)+0x4)+0x20)+0x20)+0x20)+0x20)+0x20)+cd[(cd[0x44]+0x4)]))]&~(0x1-(((cd[(cd[0x44]+0x4)]&0x1f)-0x20)**0x100)))'}
=== 0482 precheck ===
JUMPI pc 0x4ad: dest=0x80d, cond=iszero((cd[0x4]<s[keccak(0x0,0x40)]))
Final stack ['ret', '0x553', 'cd[0x4]', '0x0', '0x1388']
Mem {'0x0': '(caller&(0x1-(0xa0**0x2)))', '0x20': '0x7'}
=== 080d->0856 ===
SSTORE pc 0x82e: s[keccak(0x0,0x40)] = (s[keccak(0x0,0x40)]+ret)
SSTORE pc 0x83f: s[keccak(0x0,0x40)] = (ret-s[keccak(0x0,0x40)])
CALL pc 0x856: to=(caller&(0x1-(0xa0**0x2))), value=((0xffffffff&0x1388)*ret), in=[m[0x40]:0x0], out=[m[0x40]:0x0], gas=0x0
Final stack ['ret', '((0xffffffff&0x1388)*ret)', '0x1388', '(caller&(0x1-(0xa0**0x2)))', '0x0', '((0xffffffff&0x1388)*ret)', 'm[0x40]', 'call((caller&(0x1-(0xa0**0x2))))']
Mem {'0x0': '(caller&(0x1-(0xa0**0x2)))', '0x20': '0x7'}

codex
{"no_findings":false,"summary":"Bytecode suggests an ERC20-like token with owner-controlled parameters plus callback-style extensions. The strongest risk is a public allowance/callback path that writes state and then performs an external CALL to a user-supplied address without a detected reentrancy guard. A second public path also reaches a computed CALL with unresolved target/value; because this is bytecode-only analysis, that second issue is lower confidence.","findings":[{"severity":"medium","category":"reentrancy","title":"Callback-style allowance flow writes state before calling an untrusted contract","exploit_scenario":"A user invokes selector 0xcae9ca51 with an attacker-controlled spender contract. The function stores a value into a slot-8-like mapping at pc 0x364 and then calls the supplied address at pc 0x425 using callback selector 0x8f4ffcb1. Because the callee receives control after the write and no reentrancy guard was detected, the spender can reenter token logic such as transfer/transferFrom or other custom functions while the freshly written allowance/state is live.","recommendation":"Treat this path as check-effects-interactions sensitive. Add an explicit reentrancy guard around callback entrypoints, constrain callbacks to trusted targets if possible, and avoid leaving temporary approval/state live across the external call. If callback behavior is intended, document the risk and validate returndata explicitly.","evidence":"Selector 0xcae9ca51 enters at pc 0x2d1. The bytecode copies user-supplied bytes, performs an SSTORE at pc 0x364 to a keccak-derived slot, then executes CALL at pc 0x425 to the masked calldata address cd[0x4]. The artifact reports no detected auth guards, and the callsite metadata marks CALL targets/value as computed with returndata checking unknown. The call payload starts with selector 0x8f4ffcb1, consistent with a callback/approve-and-call pattern.","locations":["selector:0xcae9ca51","pc:0x364","pc:0x425"]},{"severity":"low","category":"other","title":"Public function 0xe4849b32 reaches a computed external CALL with ambiguous target/value","exploit_scenario":"An externally callable path beginning at selector 0xe4849b32 reaches CALL pc 0x856 after only a balance-like threshold check, not an owner-style check. If calldata or mutable state influence the destination or ETH amount, an attacker with the prerequisite balance could route execution into attacker-controlled code and potentially trigger unexpected side effects or reentrancy. Because only bytecode is available, the exact destination/value semantics remain uncertain.","recommendation":"Audit selector 0xe4849b32 at source level or with traces against known inputs. Constrain the destination to a trusted constant or vetted interface, avoid low-level CALL where possible, validate returndata, and add a reentrancy guard if the call is intentionally public.","evidence":"The selector table exposes public selector 0xe4849b32. Its path checks a slot-7-like balance condition around pc 0x482-0x4ad, then proceeds to CALL pc 0x856. The bundle callsite metadata marks this CALL as computed target/computed value with returndata_checked=null, and the artifact has no detected auth guards. Detector output also confirms reachable CALL sinks with variable targets, but the exact semantics of this specific path cannot be proven from bytecode alone.","locations":["selector:0xe4849b32","pc:0x4ad","pc:0x856"]}]}
tokens used
114,947
Metadata
{
    "codex": {
        "ran_at": "2026-04-05T06:10:38.380057+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 4916,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode suggests an ERC20-like token with owner-controlled parameters plus callback-style extensions. The strongest risk is a public allowance/callback path that writes state and then performs an external CALL to a user-supplied address without a detected reentrancy guard. A second public path also reaches a computed CALL with unresolved target/value; because this is bytecode-only analysis, that second issue is lower confidence.",
    "raw_final": {
        "summary": "Bytecode suggests an ERC20-like token with owner-controlled parameters plus callback-style extensions. The strongest risk is a public allowance/callback path that writes state and then performs an external CALL to a user-supplied address without a detected reentrancy guard. A second public path also reaches a computed CALL with unresolved target/value; because this is bytecode-only analysis, that second issue is lower confidence.",
        "findings": [
            {
                "title": "Callback-style allowance flow writes state before calling an untrusted contract",
                "category": "reentrancy",
                "evidence": "Selector 0xcae9ca51 enters at pc 0x2d1. The bytecode copies user-supplied bytes, performs an SSTORE at pc 0x364 to a keccak-derived slot, then executes CALL at pc 0x425 to the masked calldata address cd[0x4]. The artifact reports no detected auth guards, and the callsite metadata marks CALL targets/value as computed with returndata checking unknown. The call payload starts with selector 0x8f4ffcb1, consistent with a callback/approve-and-call pattern.",
                "severity": "medium",
                "locations": [
                    "selector:0xcae9ca51",
                    "pc:0x364",
                    "pc:0x425"
                ],
                "recommendation": "Treat this path as check-effects-interactions sensitive. Add an explicit reentrancy guard around callback entrypoints, constrain callbacks to trusted targets if possible, and avoid leaving temporary approval/state live across the external call. If callback behavior is intended, document the risk and validate returndata explicitly.",
                "exploit_scenario": "A user invokes selector 0xcae9ca51 with an attacker-controlled spender contract. The function stores a value into a slot-8-like mapping at pc 0x364 and then calls the supplied address at pc 0x425 using callback selector 0x8f4ffcb1. Because the callee receives control after the write and no reentrancy guard was detected, the spender can reenter token logic such as transfer/transferFrom or other custom functions while the freshly written allowance/state is live."
            },
            {
                "title": "Public function 0xe4849b32 reaches a computed external CALL with ambiguous target/value",
                "category": "other",
                "evidence": "The selector table exposes public selector 0xe4849b32. Its path checks a slot-7-like balance condition around pc 0x482-0x4ad, then proceeds to CALL pc 0x856. The bundle callsite metadata marks this CALL as computed target/computed value with returndata_checked=null, and the artifact has no detected auth guards. Detector output also confirms reachable CALL sinks with variable targets, but the exact semantics of this specific path cannot be proven from bytecode alone.",
                "severity": "low",
                "locations": [
                    "selector:0xe4849b32",
                    "pc:0x4ad",
                    "pc:0x856"
                ],
                "recommendation": "Audit selector 0xe4849b32 at source level or with traces against known inputs. Constrain the destination to a trusted constant or vetted interface, avoid low-level CALL where possible, validate returndata, and add a reentrancy guard if the call is intentionally public.",
                "exploit_scenario": "An externally callable path beginning at selector 0xe4849b32 reaches CALL pc 0x856 after only a balance-like threshold check, not an owner-style check. If calldata or mutable state influence the destination or ETH amount, an attacker with the prerequisite balance could route execution into attacker-controlled code and potentially trigger unexpected side effects or reentrancy. Because only bytecode is available, the exact destination/value semantics remain uncertain."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
2
CALL-family (heavy)
6
EXT*/BALANCE
0
Total opcodes
1848
Flags
create_opcodes_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00da
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x06fdde03
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x00dc
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x18160ddd
00000025: EQ
00000026: PUSH2 0x0139
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x1fe9eabc
00000030: EQ
00000031: PUSH2 0x0142
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0x23b872dd
0000003b: EQ
0000003c: PUSH2 0x0164
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x313ce567
00000046: EQ
00000047: PUSH2 0x0196
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x41fa4876
00000051: EQ
00000052: PUSH2 0x01a2
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x70a08231
0000005c: EQ
0000005d: PUSH2 0x01f8
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x8da5cb5b
00000067: EQ
00000068: PUSH2 0x0210
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x95d89b41
00000072: EQ
00000073: PUSH2 0x0222
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0xa6f2ae3a
0000007d: EQ
0000007e: PUSH2 0x027d
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0xa9059cbb
00000088: EQ
00000089: PUSH2 0x0299
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xaa295de9
00000093: EQ
00000094: PUSH2 0x02c8
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xcae9ca51
0000009e: EQ
0000009f: PUSH2 0x02d1
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xdc3080f2
000000a9: EQ
000000aa: PUSH2 0x0438
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xdd62ed3e
000000b4: EQ
000000b5: PUSH2 0x045d
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0xe4849b32
000000bf: EQ
000000c0: PUSH2 0x0482
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0xf2fde38b
000000ca: EQ
000000cb: PUSH2 0x04b2
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0xff9b3acf
000000d5: EQ
000000d6: PUSH2 0x04d3
000000d9: JUMPI
000000da: JUMPDEST
000000db: STOP
000000dc: JUMPDEST
000000dd: PUSH1 0x40
000000df: DUP1
000000e0: MLOAD
000000e1: PUSH1 0x01
000000e3: DUP1
000000e4: SLOAD
000000e5: PUSH1 0x20
000000e7: PUSH1 0x02
000000e9: DUP3
000000ea: DUP5
000000eb: AND
000000ec: ISZERO
000000ed: PUSH2 0x0100
000000f0: MUL
000000f1: PUSH1 0x00
000000f3: NOT
000000f4: ADD
000000f5: SWAP1
000000f6: SWAP3
000000f7: AND
000000f8: SWAP2
000000f9: SWAP1
000000fa: SWAP2
000000fb: DIV
000000fc: PUSH1 0x1f
000000fe: DUP2
000000ff: ADD
00000100: DUP3
00000101: SWAP1
00000102: DIV
00000103: DUP3
00000104: MUL
00000105: DUP5
00000106: ADD
00000107: DUP3
00000108: ADD
00000109: SWAP1
0000010a: SWAP5
0000010b: MSTORE
0000010c: DUP4
0000010d: DUP4
0000010e: MSTORE
0000010f: PUSH2 0x04e5
00000112: SWAP4
00000113: SWAP1
00000114: DUP4
00000115: ADD
00000116: DUP3
00000117: DUP3
00000118: DUP1
00000119: ISZERO
0000011a: PUSH2 0x05c3
0000011d: JUMPI
0000011e: DUP1
0000011f: PUSH1 0x1f
00000121: LT
00000122: PUSH2 0x0598
00000125: JUMPI
00000126: PUSH2 0x0100
00000129: DUP1
0000012a: DUP4
0000012b: SLOAD
0000012c: DIV
0000012d: MUL
0000012e: DUP4
0000012f: MSTORE
00000130: SWAP2
00000131: PUSH1 0x20
00000133: ADD
00000134: SWAP2
00000135: PUSH2 0x05c3
00000138: JUMP
00000139: JUMPDEST
0000013a: PUSH2 0x0553
0000013d: PUSH1 0x04
0000013f: SLOAD
00000140: DUP2
00000141: JUMP
00000142: JUMPDEST
00000143: PUSH2 0x00da
00000146: PUSH1 0x04
00000148: CALLDATALOAD
00000149: PUSH1 0x00
0000014b: SLOAD
0000014c: PUSH1 0x01
0000014e: PUSH1 0xa0
00000150: PUSH1 0x02
00000152: EXP
00000153: SUB
00000154: SWAP1
00000155: DUP2
00000156: AND
00000157: CALLER
00000158: SWAP1
00000159: SWAP2
0000015a: AND
0000015b: EQ
0000015c: PUSH2 0x07de
0000015f: JUMPI
00000160: PUSH2 0x0002
00000163: JUMP
00000164: JUMPDEST
00000165: PUSH2 0x0553
00000168: PUSH1 0x04
0000016a: CALLDATALOAD
0000016b: PUSH1 0x24
0000016d: CALLDATALOAD
0000016e: PUSH1 0x44
00000170: CALLDATALOAD
00000171: PUSH1 0x01
00000173: PUSH1 0xa0
00000175: PUSH1 0x02
00000177: EXP
00000178: SUB
00000179: DUP4
0000017a: AND
0000017b: PUSH1 0x00
0000017d: SWAP1
0000017e: DUP2
0000017f: MSTORE
00000180: PUSH1 0x07
00000182: PUSH1 0x20
00000184: MSTORE
00000185: PUSH1 0x40
00000187: DUP2
00000188: KECCAK256
00000189: SLOAD
0000018a: DUP3
0000018b: SWAP1
0000018c: LT
0000018d: ISZERO
0000018e: PUSH2 0x088e
00000191: JUMPI
00000192: PUSH2 0x0002
00000195: JUMP
00000196: JUMPDEST
00000197: PUSH2 0x0565
0000019a: PUSH1 0x03
0000019c: SLOAD
0000019d: PUSH1 0xff
0000019f: AND
000001a0: DUP2
000001a1: JUMP
000001a2: JUMPDEST
000001a3: PUSH2 0x0553
000001a6: PUSH1 0x04
000001a8: CALLDATALOAD
000001a9: PUSH1 0x24
000001ab: CALLDATALOAD
000001ac: JUMPDEST
000001ad: PUSH1 0x00
000001af: DUP1
000001b0: DUP1
000001b1: JUMPDEST
000001b2: DUP4
000001b3: DUP2
000001b4: LT
000001b5: ISZERO
000001b6: PUSH2 0x07e3
000001b9: JUMPI
000001ba: PUSH1 0x40
000001bc: DUP1
000001bd: MLOAD
000001be: NUMBER
000001bf: DUP4
000001c0: SWAP1
000001c1: SUB
000001c2: PUSH1 0x00
000001c4: NOT
000001c5: ADD
000001c6: BLOCKHASH
000001c7: DUP2
000001c8: MSTORE
000001c9: PUSH1 0x20
000001cb: DUP2
000001cc: ADD
000001cd: DUP8
000001ce: SWAP1
000001cf: MSTORE
000001d0: DUP2
000001d1: MLOAD
000001d2: SWAP1
000001d3: DUP2
000001d4: SWAP1
000001d5: SUB
000001d6: SWAP1
000001d7: SWAP2
000001d8: ADD
000001d9: SWAP1
000001da: KECCAK256
000001db: PUSH1 0x02
000001dd: SWAP1
000001de: MOD
000001df: PUSH1 0x00
000001e1: EQ
000001e2: ISZERO
000001e3: PUSH2 0x01f0
000001e6: JUMPI
000001e7: PUSH1 0x02
000001e9: DUP2
000001ea: SWAP1
000001eb: EXP
000001ec: SWAP1
000001ed: SWAP2
000001ee: ADD
000001ef: SWAP1
000001f0: JUMPDEST
000001f1: PUSH1 0x01
000001f3: ADD
000001f4: PUSH2 0x01b1
000001f7: JUMP
000001f8: JUMPDEST
000001f9: PUSH2 0x0553
000001fc: PUSH1 0x04
000001fe: CALLDATALOAD
000001ff: PUSH1 0x07
00000201: PUSH1 0x20
00000203: MSTORE
00000204: PUSH1 0x00
00000206: SWAP1
00000207: DUP2
00000208: MSTORE
00000209: PUSH1 0x40
0000020b: SWAP1
0000020c: KECCAK256
0000020d: SLOAD
0000020e: DUP2
0000020f: JUMP
00000210: JUMPDEST
00000211: PUSH2 0x057b
00000214: PUSH1 0x00
00000216: SLOAD
00000217: PUSH1 0x01
00000219: PUSH1 0xa0
0000021b: PUSH1 0x02
0000021d: EXP
0000021e: SUB
0000021f: AND
00000220: DUP2
00000221: JUMP
00000222: JUMPDEST
00000223: PUSH2 0x04e5
00000226: PUSH1 0x02
00000228: DUP1
00000229: SLOAD
0000022a: PUSH1 0x40
0000022c: DUP1
0000022d: MLOAD
0000022e: PUSH1 0x20
00000230: PUSH1 0x01
00000232: DUP5
00000233: AND
00000234: ISZERO
00000235: PUSH2 0x0100
00000238: MUL
00000239: PUSH1 0x00
0000023b: NOT
0000023c: ADD
0000023d: SWAP1
0000023e: SWAP4
0000023f: AND
00000240: DUP5
00000241: SWAP1
00000242: DIV
00000243: PUSH1 0x1f
00000245: DUP2
00000246: ADD
00000247: DUP5
00000248: SWAP1
00000249: DIV
0000024a: DUP5
0000024b: MUL
0000024c: DUP3
0000024d: ADD
0000024e: DUP5
0000024f: ADD
00000250: SWAP1
00000251: SWAP3
00000252: MSTORE
00000253: DUP2
00000254: DUP2
00000255: MSTORE
00000256: SWAP3
00000257: SWAP2
00000258: DUP4
00000259: ADD
0000025a: DUP3
0000025b: DUP3
0000025c: DUP1
0000025d: ISZERO
0000025e: PUSH2 0x05c3
00000261: JUMPI
00000262: DUP1
00000263: PUSH1 0x1f
00000265: LT
00000266: PUSH2 0x0598
00000269: JUMPI
0000026a: PUSH2 0x0100
0000026d: DUP1
0000026e: DUP4
0000026f: SLOAD
00000270: DIV
00000271: MUL
00000272: DUP4
00000273: MSTORE
00000274: SWAP2
00000275: PUSH1 0x20
00000277: ADD
00000278: SWAP2
00000279: PUSH2 0x05c3
0000027c: JUMP
0000027d: JUMPDEST
0000027e: PUSH2 0x0553
00000281: PUSH1 0x06
00000283: SLOAD
00000284: CALLVALUE
00000285: SWAP1
00000286: PUSH1 0x00
00000288: SWAP1
00000289: PUSH1 0x64
0000028b: SWAP1
0000028c: DUP3
0000028d: SWAP1
0000028e: DUP5
0000028f: GT
00000290: ISZERO
00000291: PUSH2 0x064c
00000294: JUMPI
00000295: PUSH2 0x0002
00000298: JUMP
00000299: JUMPDEST
0000029a: PUSH2 0x00da
0000029d: PUSH1 0x04
0000029f: CALLDATALOAD
000002a0: PUSH1 0x24
000002a2: CALLDATALOAD
000002a3: CALLER
000002a4: PUSH1 0x01
000002a6: PUSH1 0xa0
000002a8: PUSH1 0x02
000002aa: EXP
000002ab: SUB
000002ac: AND
000002ad: PUSH1 0x00
000002af: SWAP1
000002b0: DUP2
000002b1: MSTORE
000002b2: PUSH1 0x07
000002b4: PUSH1 0x20
000002b6: MSTORE
000002b7: PUSH1 0x40
000002b9: SWAP1
000002ba: KECCAK256
000002bb: SLOAD
000002bc: DUP2
000002bd: SWAP1
000002be: LT
000002bf: ISZERO
000002c0: PUSH2 0x05cb
000002c3: JUMPI
000002c4: PUSH2 0x0002
000002c7: JUMP
000002c8: JUMPDEST
000002c9: PUSH2 0x0553
000002cc: PUSH1 0x06
000002ce: SLOAD
000002cf: DUP2
000002d0: JUMP
000002d1: JUMPDEST
000002d2: PUSH1 0x40
000002d4: DUP1
000002d5: MLOAD
000002d6: PUSH1 0x20
000002d8: PUSH1 0x44
000002da: CALLDATALOAD
000002db: PUSH1 0x04
000002dd: DUP2
000002de: DUP2
000002df: ADD
000002e0: CALLDATALOAD
000002e1: PUSH1 0x1f
000002e3: DUP2
000002e4: ADD
000002e5: DUP5
000002e6: SWAP1
000002e7: DIV
000002e8: DUP5
000002e9: MUL
000002ea: DUP6
000002eb: ADD
000002ec: DUP5
000002ed: ADD
000002ee: SWAP1
000002ef: SWAP6
000002f0: MSTORE
000002f1: DUP5
000002f2: DUP5
000002f3: MSTORE
000002f4: PUSH2 0x0553
000002f7: SWAP5
000002f8: DUP2
000002f9: CALLDATALOAD
000002fa: SWAP5
000002fb: PUSH1 0x24
000002fd: DUP1
000002fe: CALLDATALOAD
000002ff: SWAP6
00000300: SWAP4
00000301: SWAP5
00000302: PUSH1 0x64
00000304: SWAP5
00000305: SWAP3
00000306: SWAP4
00000307: SWAP2
00000308: ADD
00000309: SWAP2
0000030a: DUP2
0000030b: SWAP1
0000030c: DUP5
0000030d: ADD
0000030e: DUP4
0000030f: DUP3
00000310: DUP1
00000311: DUP3
00000312: DUP5
00000313: CALLDATACOPY
00000314: POP
00000315: SWAP5
00000316: SWAP7
00000317: POP
00000318: POP
00000319: POP
0000031a: POP
0000031b: POP
0000031c: POP
0000031d: POP
0000031e: PUSH1 0x00
00000320: PUSH1 0x00
00000322: DUP4
00000323: PUSH1 0x08
00000325: PUSH1 0x00
00000327: POP
00000328: PUSH1 0x00
0000032a: CALLER
0000032b: PUSH1 0x01
0000032d: PUSH1 0xa0
0000032f: PUSH1 0x02
00000331: EXP
00000332: SUB
00000333: AND
00000334: DUP2
00000335: MSTORE
00000336: PUSH1 0x20
00000338: ADD
00000339: SWAP1
0000033a: DUP2
0000033b: MSTORE
0000033c: PUSH1 0x20
0000033e: ADD
0000033f: PUSH1 0x00
00000341: KECCAK256
00000342: PUSH1 0x00
00000344: POP
00000345: PUSH1 0x00
00000347: DUP8
00000348: PUSH1 0x01
0000034a: PUSH1 0xa0
0000034c: PUSH1 0x02
0000034e: EXP
0000034f: SUB
00000350: AND
00000351: DUP2
00000352: MSTORE
00000353: PUSH1 0x20
00000355: ADD
00000356: SWAP1
00000357: DUP2
00000358: MSTORE
00000359: PUSH1 0x20
0000035b: ADD
0000035c: PUSH1 0x00
0000035e: KECCAK256
0000035f: PUSH1 0x00
00000361: POP
00000362: DUP2
00000363: SWAP1
00000364: SSTORE
00000365: POP
00000366: DUP5
00000367: SWAP1
00000368: POP
00000369: DUP1
0000036a: PUSH1 0x01
0000036c: PUSH1 0xa0
0000036e: PUSH1 0x02
00000370: EXP
00000371: SUB
00000372: AND
00000373: PUSH4 0x8f4ffcb1
00000378: CALLER
00000379: DUP7
0000037a: ADDRESS
0000037b: DUP8
0000037c: PUSH1 0x40
0000037e: MLOAD
0000037f: DUP6
00000380: PUSH1 0xe0
00000382: PUSH1 0x02
00000384: EXP
00000385: MUL
00000386: DUP2
00000387: MSTORE
00000388: PUSH1 0x04
0000038a: ADD
0000038b: DUP1
0000038c: DUP6
0000038d: PUSH1 0x01
0000038f: PUSH1 0xa0
00000391: PUSH1 0x02
00000393: EXP
00000394: SUB
00000395: AND
00000396: DUP2
00000397: MSTORE
00000398: PUSH1 0x20
0000039a: ADD
0000039b: DUP5
0000039c: DUP2
0000039d: MSTORE
0000039e: PUSH1 0x20
000003a0: ADD
000003a1: DUP4
000003a2: PUSH1 0x01
000003a4: PUSH1 0xa0
000003a6: PUSH1 0x02
000003a8: EXP
000003a9: SUB
000003aa: AND
000003ab: DUP2
000003ac: MSTORE
000003ad: PUSH1 0x20
000003af: ADD
000003b0: DUP1
000003b1: PUSH1 0x20
000003b3: ADD
000003b4: DUP3
000003b5: DUP2
000003b6: SUB
000003b7: DUP3
000003b8: MSTORE
000003b9: DUP4
000003ba: DUP2
000003bb: DUP2
000003bc: MLOAD
000003bd: DUP2
000003be: MSTORE
000003bf: PUSH1 0x20
000003c1: ADD
000003c2: SWAP2
000003c3: POP
000003c4: DUP1
000003c5: MLOAD
000003c6: SWAP1
000003c7: PUSH1 0x20
000003c9: ADD
000003ca: SWAP1
000003cb: DUP1
000003cc: DUP4
000003cd: DUP4
000003ce: DUP3
000003cf: SWAP1
000003d0: PUSH1 0x00
000003d2: PUSH1 0x04
000003d4: PUSH1 0x20
000003d6: DUP5
000003d7: PUSH1 0x1f
000003d9: ADD
000003da: DIV
000003db: PUSH1 0x0f
000003dd: MUL
000003de: PUSH1 0x03
000003e0: ADD
000003e1: CALL
000003e2: POP
000003e3: SWAP1
000003e4: POP
000003e5: SWAP1
000003e6: DUP2
000003e7: ADD
000003e8: SWAP1
000003e9: PUSH1 0x1f
000003eb: AND
000003ec: DUP1
000003ed: ISZERO
000003ee: PUSH2 0x040b
000003f1: JUMPI
000003f2: DUP1
000003f3: DUP3
000003f4: SUB
000003f5: DUP1
000003f6: MLOAD
000003f7: PUSH1 0x01
000003f9: DUP4
000003fa: PUSH1 0x20
000003fc: SUB
000003fd: PUSH2 0x0100
00000400: EXP
00000401: SUB
00000402: NOT
00000403: AND
00000404: DUP2
00000405: MSTORE
00000406: PUSH1 0x20
00000408: ADD
00000409: SWAP2
0000040a: POP
0000040b: JUMPDEST
0000040c: POP
0000040d: SWAP6
0000040e: POP
0000040f: POP
00000410: POP
00000411: POP
00000412: POP
00000413: POP
00000414: PUSH1 0x00
00000416: PUSH1 0x40
00000418: MLOAD
00000419: DUP1
0000041a: DUP4
0000041b: SUB
0000041c: DUP2
0000041d: PUSH1 0x00
0000041f: DUP8
00000420: PUSH2 0x61da
00000423: GAS
00000424: SUB
00000425: CALL
00000426: ISZERO
00000427: PUSH2 0x0002
0000042a: JUMPI
0000042b: POP
0000042c: PUSH1 0x01
0000042e: SWAP8
0000042f: SWAP7
00000430: POP
00000431: POP
00000432: POP
00000433: POP
00000434: POP
00000435: POP
00000436: POP
00000437: JUMP
00000438: JUMPDEST
00000439: PUSH1 0x09
0000043b: PUSH1 0x20
0000043d: SWAP1
0000043e: DUP2
0000043f: MSTORE
00000440: PUSH1 0x04
00000442: CALLDATALOAD
00000443: PUSH1 0x00
00000445: SWAP1
00000446: DUP2
00000447: MSTORE
00000448: PUSH1 0x40
0000044a: DUP1
0000044b: DUP3
0000044c: KECCAK256
0000044d: SWAP1
0000044e: SWAP3
0000044f: MSTORE
00000450: PUSH1 0x24
00000452: CALLDATALOAD
00000453: DUP2
00000454: MSTORE
00000455: KECCAK256
00000456: SLOAD
00000457: PUSH2 0x0553
0000045a: SWAP1
0000045b: DUP2
0000045c: JUMP
0000045d: JUMPDEST
0000045e: PUSH1 0x08
00000460: PUSH1 0x20
00000462: SWAP1
00000463: DUP2
00000464: MSTORE
00000465: PUSH1 0x04
00000467: CALLDATALOAD
00000468: PUSH1 0x00
0000046a: SWAP1
0000046b: DUP2
0000046c: MSTORE
0000046d: PUSH1 0x40
0000046f: DUP1
00000470: DUP3
00000471: KECCAK256
00000472: SWAP1
00000473: SWAP3
00000474: MSTORE
00000475: PUSH1 0x24
00000477: CALLDATALOAD
00000478: DUP2
00000479: MSTORE
0000047a: KECCAK256
0000047b: SLOAD
0000047c: PUSH2 0x0553
0000047f: SWAP1
00000480: DUP2
00000481: JUMP
00000482: JUMPDEST
00000483: PUSH2 0x0553
00000486: PUSH1 0x04
00000488: CALLDATALOAD
00000489: CALLER
0000048a: PUSH1 0x01
0000048c: PUSH1 0xa0
0000048e: PUSH1 0x02
00000490: EXP
00000491: SUB
00000492: AND
00000493: PUSH1 0x00
00000495: SWAP1
00000496: DUP2
00000497: MSTORE
00000498: PUSH1 0x07
0000049a: PUSH1 0x20
0000049c: MSTORE
0000049d: PUSH1 0x40
0000049f: DUP2
000004a0: KECCAK256
000004a1: SLOAD
000004a2: PUSH2 0x1388
000004a5: SWAP1
000004a6: DUP4
000004a7: SWAP1
000004a8: LT
000004a9: ISZERO
000004aa: PUSH2 0x080d
000004ad: JUMPI
000004ae: PUSH2 0x0002
000004b1: JUMP
000004b2: JUMPDEST
000004b3: PUSH2 0x00da
000004b6: PUSH1 0x04
000004b8: CALLDATALOAD
000004b9: PUSH1 0x00
000004bb: SLOAD
000004bc: CALLER
000004bd: PUSH1 0x01
000004bf: PUSH1 0xa0
000004c1: PUSH1 0x02
000004c3: EXP
000004c4: SUB
000004c5: SWAP1
000004c6: DUP2
000004c7: AND
000004c8: SWAP2
000004c9: AND
000004ca: EQ
000004cb: PUSH2 0x07eb
000004ce: JUMPI
000004cf: PUSH2 0x0002
000004d2: JUMP
000004d3: JUMPDEST
000004d4: PUSH2 0x057b
000004d7: PUSH1 0x05
000004d9: SLOAD
000004da: PUSH1 0x01
000004dc: PUSH1 0xa0
000004de: PUSH1 0x02
000004e0: EXP
000004e1: SUB
000004e2: AND
000004e3: DUP2
000004e4: JUMP
000004e5: JUMPDEST
000004e6: PUSH1 0x40
000004e8: MLOAD
000004e9: DUP1
000004ea: DUP1
000004eb: PUSH1 0x20
000004ed: ADD
000004ee: DUP3
000004ef: DUP2
000004f0: SUB
000004f1: DUP3
000004f2: MSTORE
000004f3: DUP4
000004f4: DUP2
000004f5: DUP2
000004f6: MLOAD
000004f7: DUP2
000004f8: MSTORE
000004f9: PUSH1 0x20
000004fb: ADD
000004fc: SWAP2
000004fd: POP
000004fe: DUP1
000004ff: MLOAD
00000500: SWAP1
00000501: PUSH1 0x20
00000503: ADD
00000504: SWAP1
00000505: DUP1
00000506: DUP4
00000507: DUP4
00000508: DUP3
00000509: SWAP1
0000050a: PUSH1 0x00
0000050c: PUSH1 0x04
0000050e: PUSH1 0x20
00000510: DUP5
00000511: PUSH1 0x1f
00000513: ADD
00000514: DIV
00000515: PUSH1 0x0f
00000517: MUL
00000518: PUSH1 0x03
0000051a: ADD
0000051b: CALL
0000051c: POP
0000051d: SWAP1
0000051e: POP
0000051f: SWAP1
00000520: DUP2
00000521: ADD
00000522: SWAP1
00000523: PUSH1 0x1f
00000525: AND
00000526: DUP1
00000527: ISZERO
00000528: PUSH2 0x0545
0000052b: JUMPI
0000052c: DUP1
0000052d: DUP3
0000052e: SUB
0000052f: DUP1
00000530: MLOAD
00000531: PUSH1 0x01
00000533: DUP4
00000534: PUSH1 0x20
00000536: SUB
00000537: PUSH2 0x0100
0000053a: EXP
0000053b: SUB
0000053c: NOT
0000053d: AND
0000053e: DUP2
0000053f: MSTORE
00000540: PUSH1 0x20
00000542: ADD
00000543: SWAP2
00000544: POP
00000545: JUMPDEST
00000546: POP
00000547: SWAP3
00000548: POP
00000549: POP
0000054a: POP
0000054b: PUSH1 0x40
0000054d: MLOAD
0000054e: DUP1
0000054f: SWAP2
00000550: SUB
00000551: SWAP1
00000552: RETURN
00000553: JUMPDEST
00000554: PUSH1 0x40
00000556: DUP1
00000557: MLOAD
00000558: SWAP2
00000559: DUP3
0000055a: MSTORE
0000055b: MLOAD
0000055c: SWAP1
0000055d: DUP2
0000055e: SWAP1
0000055f: SUB
00000560: PUSH1 0x20
00000562: ADD
00000563: SWAP1
00000564: RETURN
00000565: JUMPDEST
00000566: PUSH1 0x40
00000568: DUP1
00000569: MLOAD
0000056a: PUSH1 0xff
0000056c: SWAP1
0000056d: SWAP3
0000056e: AND
0000056f: DUP3
00000570: MSTORE
00000571: MLOAD
00000572: SWAP1
00000573: DUP2
00000574: SWAP1
00000575: SUB
00000576: PUSH1 0x20
00000578: ADD
00000579: SWAP1
0000057a: RETURN
0000057b: JUMPDEST
0000057c: PUSH1 0x40
0000057e: DUP1
0000057f: MLOAD
00000580: PUSH1 0x01
00000582: PUSH1 0xa0
00000584: PUSH1 0x02
00000586: EXP
00000587: SUB
00000588: SWAP3
00000589: SWAP1
0000058a: SWAP3
0000058b: AND
0000058c: DUP3
0000058d: MSTORE
0000058e: MLOAD
0000058f: SWAP1
00000590: DUP2
00000591: SWAP1
00000592: SUB
00000593: PUSH1 0x20
00000595: ADD
00000596: SWAP1
00000597: RETURN
00000598: JUMPDEST
00000599: DUP3
0000059a: ADD
0000059b: SWAP2
0000059c: SWAP1
0000059d: PUSH1 0x00
0000059f: MSTORE
000005a0: PUSH1 0x20
000005a2: PUSH1 0x00
000005a4: KECCAK256
000005a5: SWAP1
000005a6: JUMPDEST
000005a7: DUP2
000005a8: SLOAD
000005a9: DUP2
000005aa: MSTORE
000005ab: SWAP1
000005ac: PUSH1 0x01
000005ae: ADD
000005af: SWAP1
000005b0: PUSH1 0x20
000005b2: ADD
000005b3: DUP1
000005b4: DUP4
000005b5: GT
000005b6: PUSH2 0x05a6
000005b9: JUMPI
000005ba: DUP3
000005bb: SWAP1
000005bc: SUB
000005bd: PUSH1 0x1f
000005bf: AND
000005c0: DUP3
000005c1: ADD
000005c2: SWAP2
000005c3: JUMPDEST
000005c4: POP
000005c5: POP
000005c6: POP
000005c7: POP
000005c8: POP
000005c9: DUP2
000005ca: JUMP
000005cb: JUMPDEST
000005cc: PUSH1 0x01
000005ce: PUSH1 0xa0
000005d0: PUSH1 0x02
000005d2: EXP
000005d3: SUB
000005d4: DUP3
000005d5: AND
000005d6: PUSH1 0x00
000005d8: SWAP1
000005d9: DUP2
000005da: MSTORE
000005db: PUSH1 0x07
000005dd: PUSH1 0x20
000005df: MSTORE
000005e0: PUSH1 0x40
000005e2: SWAP1
000005e3: KECCAK256
000005e4: SLOAD
000005e5: DUP2
000005e6: DUP2
000005e7: ADD
000005e8: LT
000005e9: ISZERO
000005ea: PUSH2 0x05f2
000005ed: JUMPI
000005ee: PUSH2 0x0002
000005f1: JUMP
000005f2: JUMPDEST
000005f3: CALLER
000005f4: PUSH1 0x01
000005f6: PUSH1 0xa0
000005f8: PUSH1 0x02
000005fa: EXP
000005fb: SUB
000005fc: SWAP1
000005fd: DUP2
000005fe: AND
000005ff: PUSH1 0x00
00000601: DUP2
00000602: DUP2
00000603: MSTORE
00000604: PUSH1 0x07
00000606: PUSH1 0x20
00000608: SWAP1
00000609: DUP2
0000060a: MSTORE
0000060b: PUSH1 0x40
0000060d: DUP1
0000060e: DUP4
0000060f: KECCAK256
00000610: DUP1
00000611: SLOAD
00000612: DUP8
00000613: SWAP1
00000614: SUB
00000615: SWAP1
00000616: SSTORE
00000617: SWAP4
00000618: DUP7
00000619: AND
0000061a: DUP1
0000061b: DUP4
0000061c: MSTORE
0000061d: SWAP2
0000061e: DUP5
0000061f: SWAP1
00000620: KECCAK256
00000621: DUP1
00000622: SLOAD
00000623: DUP7
00000624: ADD
00000625: SWAP1
00000626: SSTORE
00000627: DUP4
00000628: MLOAD
00000629: DUP6
0000062a: DUP2
0000062b: MSTORE
0000062c: SWAP4
0000062d: MLOAD
0000062e: SWAP2
0000062f: SWAP4
00000630: PUSH1 0x00
00000632: DUP1
00000633: MLOAD
00000634: PUSH1 0x20
00000636: PUSH2 0x0979
00000639: DUP4
0000063a: CODECOPY
0000063b: DUP2
0000063c: MLOAD
0000063d: SWAP2
0000063e: MSTORE
0000063f: SWAP3
00000640: SWAP1
00000641: DUP2
00000642: SWAP1
00000643: SUB
00000644: SWAP1
00000645: SWAP2
00000646: ADD
00000647: SWAP1
00000648: LOG3
00000649: POP
0000064a: POP
0000064b: JUMP
0000064c: JUMPDEST
0000064d: PUSH1 0x40
0000064f: DUP1
00000650: MLOAD
00000651: NUMBER
00000652: DUP2
00000653: MSTORE
00000654: TIMESTAMP
00000655: PUSH1 0x20
00000657: DUP3
00000658: ADD
00000659: MSTORE
0000065a: DUP1
0000065b: DUP3
0000065c: ADD
0000065d: DUP7
0000065e: SWAP1
0000065f: MSTORE
00000660: SWAP1
00000661: MLOAD
00000662: SWAP1
00000663: DUP2
00000664: SWAP1
00000665: SUB
00000666: PUSH1 0x60
00000668: ADD
00000669: SWAP1
0000066a: KECCAK256
0000066b: PUSH2 0x0675
0000066e: SWAP1
0000066f: PUSH1 0x0a
00000671: PUSH2 0x01ac
00000674: JUMP
00000675: JUMPDEST
00000676: SWAP1
00000677: POP
00000678: PUSH2 0x0200
0000067b: DUP2
0000067c: LT
0000067d: PUSH2 0x0687
00000680: JUMPI
00000681: PUSH1 0x64
00000683: DUP5
00000684: MUL
00000685: SWAP3
00000686: POP
00000687: JUMPDEST
00000688: PUSH2 0x0200
0000068b: DUP2
0000068c: LT
0000068d: ISZERO
0000068e: PUSH2 0x0699
00000691: JUMPI
00000692: PUSH2 0x2648
00000695: DUP5
00000696: MUL
00000697: SWAP3
00000698: POP
00000699: JUMPDEST
0000069a: ADDRESS
0000069b: PUSH1 0x01
0000069d: PUSH1 0xa0
0000069f: PUSH1 0x02
000006a1: EXP
000006a2: SUB
000006a3: AND
000006a4: PUSH1 0x00
000006a6: SWAP1
000006a7: DUP2
000006a8: MSTORE
000006a9: PUSH1 0x07
000006ab: PUSH1 0x20
000006ad: MSTORE
000006ae: PUSH1 0x40
000006b0: SWAP1
000006b1: KECCAK256
000006b2: SLOAD
000006b3: DUP4
000006b4: SWAP1
000006b5: LT
000006b6: ISZERO
000006b7: PUSH2 0x06bf
000006ba: JUMPI
000006bb: PUSH2 0x0002
000006be: JUMP
000006bf: JUMPDEST
000006c0: CALLER
000006c1: PUSH1 0x01
000006c3: PUSH1 0xa0
000006c5: PUSH1 0x02
000006c7: EXP
000006c8: SUB
000006c9: SWAP1
000006ca: DUP2
000006cb: AND
000006cc: PUSH1 0x00
000006ce: DUP2
000006cf: DUP2
000006d0: MSTORE
000006d1: PUSH1 0x07
000006d3: PUSH1 0x20
000006d5: SWAP1
000006d6: DUP2
000006d7: MSTORE
000006d8: PUSH1 0x40
000006da: DUP1
000006db: DUP4
000006dc: KECCAK256
000006dd: DUP1
000006de: SLOAD
000006df: DUP10
000006e0: ADD
000006e1: SWAP1
000006e2: SSTORE
000006e3: ADDRESS
000006e4: SWAP1
000006e5: SWAP5
000006e6: AND
000006e7: DUP1
000006e8: DUP4
000006e9: MSTORE
000006ea: SWAP2
000006eb: DUP5
000006ec: SWAP1
000006ed: KECCAK256
000006ee: DUP1
000006ef: SLOAD
000006f0: DUP9
000006f1: SWAP1
000006f2: SUB
000006f3: SWAP1
000006f4: SSTORE
000006f5: DUP4
000006f6: MLOAD
000006f7: DUP8
000006f8: DUP2
000006f9: MSTORE
000006fa: SWAP4
000006fb: MLOAD
000006fc: SWAP3
000006fd: SWAP4
000006fe: SWAP2
000006ff: SWAP3
00000700: PUSH1 0x00
00000702: DUP1
00000703: MLOAD
00000704: PUSH1 0x20
00000706: PUSH2 0x0979
00000709: DUP4
0000070a: CODECOPY
0000070b: DUP2
0000070c: MLOAD
0000070d: SWAP2
0000070e: MSTORE
0000070f: SWAP3
00000710: DUP2
00000711: SWAP1
00000712: SUB
00000713: SWAP1
00000714: SWAP2
00000715: ADD
00000716: SWAP1
00000717: LOG3
00000718: DUP2
00000719: PUSH1 0x07
0000071b: PUSH1 0x00
0000071d: POP
0000071e: PUSH1 0x00
00000720: PUSH1 0x05
00000722: PUSH1 0x00
00000724: SWAP1
00000725: SLOAD
00000726: SWAP1
00000727: PUSH2 0x0100
0000072a: EXP
0000072b: SWAP1
0000072c: DIV
0000072d: PUSH1 0x01
0000072f: PUSH1 0xa0
00000731: PUSH1 0x02
00000733: EXP
00000734: SUB
00000735: AND
00000736: PUSH1 0x01
00000738: PUSH1 0xa0
0000073a: PUSH1 0x02
0000073c: EXP
0000073d: SUB
0000073e: AND
0000073f: DUP2
00000740: MSTORE
00000741: PUSH1 0x20
00000743: ADD
00000744: SWAP1
00000745: DUP2
00000746: MSTORE
00000747: PUSH1 0x20
00000749: ADD
0000074a: PUSH1 0x00
0000074c: KECCAK256
0000074d: PUSH1 0x00
0000074f: DUP3
00000750: DUP3
00000751: DUP3
00000752: POP
00000753: SLOAD
00000754: ADD
00000755: SWAP3
00000756: POP
00000757: POP
00000758: DUP2
00000759: SWAP1
0000075a: SSTORE
0000075b: POP
0000075c: DUP2
0000075d: PUSH1 0x07
0000075f: PUSH1 0x00
00000761: POP
00000762: PUSH1 0x00
00000764: ADDRESS
00000765: PUSH1 0x01
00000767: PUSH1 0xa0
00000769: PUSH1 0x02
0000076b: EXP
0000076c: SUB
0000076d: AND
0000076e: DUP2
0000076f: MSTORE
00000770: PUSH1 0x20
00000772: ADD
00000773: SWAP1
00000774: DUP2
00000775: MSTORE
00000776: PUSH1 0x20
00000778: ADD
00000779: PUSH1 0x00
0000077b: KECCAK256
0000077c: PUSH1 0x00
0000077e: DUP3
0000077f: DUP3
00000780: DUP3
00000781: POP
00000782: SLOAD
00000783: SUB
00000784: SWAP3
00000785: POP
00000786: POP
00000787: DUP2
00000788: SWAP1
00000789: SSTORE
0000078a: POP
0000078b: PUSH1 0x05
0000078d: PUSH1 0x00
0000078f: SWAP1
00000790: SLOAD
00000791: SWAP1
00000792: PUSH2 0x0100
00000795: EXP
00000796: SWAP1
00000797: DIV
00000798: PUSH1 0x01
0000079a: PUSH1 0xa0
0000079c: PUSH1 0x02
0000079e: EXP
0000079f: SUB
000007a0: AND
000007a1: PUSH1 0x01
000007a3: PUSH1 0xa0
000007a5: PUSH1 0x02
000007a7: EXP
000007a8: SUB
000007a9: AND
000007aa: ADDRESS
000007ab: PUSH1 0x01
000007ad: PUSH1 0xa0
000007af: PUSH1 0x02
000007b1: EXP
000007b2: SUB
000007b3: AND
000007b4: PUSH1 0x00
000007b6: DUP1
000007b7: MLOAD
000007b8: PUSH1 0x20
000007ba: PUSH2 0x0979
000007bd: DUP4
000007be: CODECOPY
000007bf: DUP2
000007c0: MLOAD
000007c1: SWAP2
000007c2: MSTORE
000007c3: DUP5
000007c4: PUSH1 0x40
000007c6: MLOAD
000007c7: DUP1
000007c8: DUP3
000007c9: DUP2
000007ca: MSTORE
000007cb: PUSH1 0x20
000007cd: ADD
000007ce: SWAP2
000007cf: POP
000007d0: POP
000007d1: PUSH1 0x40
000007d3: MLOAD
000007d4: DUP1
000007d5: SWAP2
000007d6: SUB
000007d7: SWAP1
000007d8: LOG3
000007d9: POP
000007da: POP
000007db: POP
000007dc: SWAP1
000007dd: JUMP
000007de: JUMPDEST
000007df: PUSH1 0x06
000007e1: SSTORE
000007e2: JUMP
000007e3: JUMPDEST
000007e4: POP
000007e5: SWAP4
000007e6: SWAP3
000007e7: POP
000007e8: POP
000007e9: POP
000007ea: JUMP
000007eb: JUMPDEST
000007ec: PUSH1 0x00
000007ee: DUP1
000007ef: SLOAD
000007f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000805: NOT
00000806: AND
00000807: DUP3
00000808: OR
00000809: SWAP1
0000080a: SSTORE
0000080b: POP
0000080c: JUMP
0000080d: JUMPDEST
0000080e: ADDRESS
0000080f: PUSH1 0x01
00000811: PUSH1 0xa0
00000813: PUSH1 0x02
00000815: EXP
00000816: SUB
00000817: SWAP1
00000818: DUP2
00000819: AND
0000081a: PUSH1 0x00
0000081c: SWAP1
0000081d: DUP2
0000081e: MSTORE
0000081f: PUSH1 0x07
00000821: PUSH1 0x20
00000823: MSTORE
00000824: PUSH1 0x40
00000826: DUP1
00000827: DUP3
00000828: KECCAK256
00000829: DUP1
0000082a: SLOAD
0000082b: DUP8
0000082c: ADD
0000082d: SWAP1
0000082e: SSTORE
0000082f: CALLER
00000830: SWAP1
00000831: SWAP3
00000832: AND
00000833: DUP1
00000834: DUP3
00000835: MSTORE
00000836: DUP3
00000837: DUP3
00000838: KECCAK256
00000839: DUP1
0000083a: SLOAD
0000083b: DUP8
0000083c: SWAP1
0000083d: SUB
0000083e: SWAP1
0000083f: SSTORE
00000840: SWAP2
00000841: MLOAD
00000842: PUSH4 0xffffffff
00000847: DUP5
00000848: AND
00000849: DUP7
0000084a: MUL
0000084b: SWAP5
0000084c: POP
0000084d: DUP5
0000084e: SWAP1
0000084f: DUP3
00000850: DUP2
00000851: DUP2
00000852: DUP2
00000853: DUP6
00000854: DUP9
00000855: DUP4
00000856: CALL
00000857: POP
00000858: POP
00000859: PUSH1 0x40
0000085b: DUP1
0000085c: MLOAD
0000085d: DUP8
0000085e: DUP2
0000085f: MSTORE
00000860: SWAP1
00000861: MLOAD
00000862: ADDRESS
00000863: PUSH1 0x01
00000865: PUSH1 0xa0
00000867: PUSH1 0x02
00000869: EXP
0000086a: SUB
0000086b: AND
0000086c: SWAP5
0000086d: SWAP4
0000086e: POP
0000086f: PUSH1 0x00
00000871: DUP1
00000872: MLOAD
00000873: PUSH1 0x20
00000875: PUSH2 0x0979
00000878: DUP4
00000879: CODECOPY
0000087a: DUP2
0000087b: MLOAD
0000087c: SWAP2
0000087d: MSTORE
0000087e: SWAP3
0000087f: POP
00000880: SWAP1
00000881: DUP2
00000882: SWAP1
00000883: SUB
00000884: PUSH1 0x20
00000886: ADD
00000887: SWAP1
00000888: LOG3
00000889: POP
0000088a: SWAP2
0000088b: SWAP1
0000088c: POP
0000088d: JUMP
0000088e: JUMPDEST
0000088f: PUSH1 0x01
00000891: PUSH1 0xa0
00000893: PUSH1 0x02
00000895: EXP
00000896: SUB
00000897: DUP4
00000898: AND
00000899: PUSH1 0x00
0000089b: SWAP1
0000089c: DUP2
0000089d: MSTORE
0000089e: PUSH1 0x07
000008a0: PUSH1 0x20
000008a2: MSTORE
000008a3: PUSH1 0x40
000008a5: SWAP1
000008a6: KECCAK256
000008a7: SLOAD
000008a8: DUP1
000008a9: DUP4
000008aa: ADD
000008ab: LT
000008ac: ISZERO
000008ad: PUSH2 0x08b5
000008b0: JUMPI
000008b1: PUSH2 0x0002
000008b4: JUMP
000008b5: JUMPDEST
000008b6: PUSH1 0x01
000008b8: PUSH1 0xa0
000008ba: PUSH1 0x02
000008bc: EXP
000008bd: SUB
000008be: DUP5
000008bf: DUP2
000008c0: AND
000008c1: PUSH1 0x00
000008c3: DUP2
000008c4: DUP2
000008c5: MSTORE
000008c6: PUSH1 0x08
000008c8: PUSH1 0x20
000008ca: SWAP1
000008cb: DUP2
000008cc: MSTORE
000008cd: PUSH1 0x40
000008cf: DUP1
000008d0: DUP4
000008d1: KECCAK256
000008d2: CALLER
000008d3: SWAP1
000008d4: SWAP6
000008d5: AND
000008d6: DUP1
000008d7: DUP5
000008d8: MSTORE
000008d9: SWAP5
000008da: DUP3
000008db: MSTORE
000008dc: DUP1
000008dd: DUP4
000008de: KECCAK256
000008df: SLOAD
000008e0: SWAP4
000008e1: DUP4
000008e2: MSTORE
000008e3: PUSH1 0x09
000008e5: DUP3
000008e6: MSTORE
000008e7: DUP1
000008e8: DUP4
000008e9: KECCAK256
000008ea: SWAP5
000008eb: DUP4
000008ec: MSTORE
000008ed: SWAP4
000008ee: SWAP1
000008ef: MSTORE
000008f0: SWAP2
000008f1: SWAP1
000008f2: SWAP2
000008f3: KECCAK256
000008f4: SLOAD
000008f5: DUP4
000008f6: ADD
000008f7: GT
000008f8: ISZERO
000008f9: PUSH2 0x0901
000008fc: JUMPI
000008fd: PUSH2 0x0002
00000900: JUMP
00000901: JUMPDEST
00000902: PUSH1 0x01
00000904: PUSH1 0xa0
00000906: PUSH1 0x02
00000908: EXP
00000909: SUB
0000090a: DUP5
0000090b: DUP2
0000090c: AND
0000090d: PUSH1 0x00
0000090f: DUP2
00000910: DUP2
00000911: MSTORE
00000912: PUSH1 0x07
00000914: PUSH1 0x20
00000916: SWAP1
00000917: DUP2
00000918: MSTORE
00000919: PUSH1 0x40
0000091b: DUP1
0000091c: DUP4
0000091d: KECCAK256
0000091e: DUP1
0000091f: SLOAD
00000920: DUP9
00000921: SWAP1
00000922: SUB
00000923: SWAP1
00000924: SSTORE
00000925: DUP8
00000926: DUP6
00000927: AND
00000928: DUP1
00000929: DUP5
0000092a: MSTORE
0000092b: DUP2
0000092c: DUP5
0000092d: KECCAK256
0000092e: DUP1
0000092f: SLOAD
00000930: DUP10
00000931: ADD
00000932: SWAP1
00000933: SSTORE
00000934: DUP5
00000935: DUP5
00000936: MSTORE
00000937: PUSH1 0x09
00000939: DUP4
0000093a: MSTORE
0000093b: DUP2
0000093c: DUP5
0000093d: KECCAK256
0000093e: CALLER
0000093f: SWAP1
00000940: SWAP7
00000941: AND
00000942: DUP5
00000943: MSTORE
00000944: SWAP5
00000945: DUP3
00000946: MSTORE
00000947: SWAP2
00000948: DUP3
00000949: SWAP1
0000094a: KECCAK256
0000094b: DUP1
0000094c: SLOAD
0000094d: DUP8
0000094e: ADD
0000094f: SWAP1
00000950: SSTORE
00000951: DUP2
00000952: MLOAD
00000953: DUP7
00000954: DUP2
00000955: MSTORE
00000956: SWAP2
00000957: MLOAD
00000958: PUSH1 0x00
0000095a: DUP1
0000095b: MLOAD
0000095c: PUSH1 0x20
0000095e: PUSH2 0x0979
00000961: DUP4
00000962: CODECOPY
00000963: DUP2
00000964: MLOAD
00000965: SWAP2
00000966: MSTORE
00000967: SWAP3
00000968: DUP2
00000969: SWAP1
0000096a: SUB
0000096b: SWAP1
0000096c: SWAP2
0000096d: ADD
0000096e: SWAP1
0000096f: LOG3
00000970: POP
00000971: PUSH1 0x01
00000973: SWAP4
00000974: SWAP3
00000975: POP
00000976: POP
00000977: POP
00000978: JUMP
00000979: UNKNOWN(0xDD)
0000097a: CALLCODE
0000097b: MSTORE
0000097c: UNKNOWN(0xAD)
0000097d: SHL
0000097e: UNKNOWN(0xE2)
0000097f: UNKNOWN(0xC8)
00000980: SWAP12
00000981: PUSH10 0xc2b068fc378daa952ba7
0000098c: CALL
0000098d: PUSH4 0xc4a11628
00000992: CREATE2
00000993: GAS
00000994: UNKNOWN(0x4D)
00000995: CREATE2
00000996: UNKNOWN(0x23)
00000997: UNKNOWN(0xB3)
00000998: UNKNOWN(0xEF)
View stderr
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 yes yes
view
trace_id: 0xc241540bfb2ef49c158b04968ef0969216a89cb29e6e0bbd8a2eb45de1fef250
call_targets: 0x0000000000000000000000000000000000000004, 0x47e3b185398c178c89cad8bda809d037462008a9
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0xc241540bfb2ef49c158b04968ef0969216a89cb29e6e0bbd8a2eb45de1fef250",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x47e3b185398c178c89cad8bda809d037462008a9"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 993,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1061,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1307,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [],
    "untrusted_call_count": 6
}
high other detector ETH value transfer possible 55 yes yes
view
trace_id: 0xc241540bfb2ef49c158b04968ef0969216a89cb29e6e0bbd8a2eb45de1fef250
call_targets: 0x0000000000000000000000000000000000000004, 0x47e3b185398c178c89cad8bda809d037462008a9
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0xc241540bfb2ef49c158b04968ef0969216a89cb29e6e0bbd8a2eb45de1fef250",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0x47e3b185398c178c89cad8bda809d037462008a9"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 993,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1061,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1307,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": []
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0xf3ecd33f4407999282b3e7c7c77e8409b6cdaffd554d89b7878fe3c08047d3b0
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0xf3ecd33f4407999282b3e7c7c77e8409b6cdaffd554d89b7878fe3c08047d3b0",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 0,
    "create2_count": 2
}
medium reentrancy codex Callback-style allowance flow writes state before calling an untrusted contract 75 no
view
evidence_json
{
    "evidence": "Selector 0xcae9ca51 enters at pc 0x2d1. The bytecode copies user-supplied bytes, performs an SSTORE at pc 0x364 to a keccak-derived slot, then executes CALL at pc 0x425 to the masked calldata address cd[0x4]. The artifact reports no detected auth guards, and the callsite metadata marks CALL targets/value as computed with returndata checking unknown. The call payload starts with selector 0x8f4ffcb1, consistent with a callback/approve-and-call pattern.",
    "locations": [
        "selector:0xcae9ca51",
        "pc:0x364",
        "pc:0x425"
    ],
    "recommendation": "Treat this path as check-effects-interactions sensitive. Add an explicit reentrancy guard around callback entrypoints, constrain callbacks to trusted targets if possible, and avoid leaving temporary approval/state live across the external call. If callback behavior is intended, document the risk and validate returndata explicitly.",
    "exploit_scenario": "A user invokes selector 0xcae9ca51 with an attacker-controlled spender contract. The function stores a value into a slot-8-like mapping at pc 0x364 and then calls the supplied address at pc 0x425 using callback selector 0x8f4ffcb1. Because the callee receives control after the write and no reentrancy guard was detected, the spender can reenter token logic such as transfer/transferFrom or other custom functions while the freshly written allowance/state is live."
}
low other codex Public function 0xe4849b32 reaches a computed external CALL with ambiguous target/value 65 no
view
evidence_json
{
    "evidence": "The selector table exposes public selector 0xe4849b32. Its path checks a slot-7-like balance condition around pc 0x482-0x4ad, then proceeds to CALL pc 0x856. The bundle callsite metadata marks this CALL as computed target/computed value with returndata_checked=null, and the artifact has no detected auth guards. Detector output also confirms reachable CALL sinks with variable targets, but the exact semantics of this specific path cannot be proven from bytecode alone.",
    "locations": [
        "selector:0xe4849b32",
        "pc:0x4ad",
        "pc:0x856"
    ],
    "recommendation": "Audit selector 0xe4849b32 at source level or with traces against known inputs. Constrain the destination to a trusted constant or vetted interface, avoid low-level CALL where possible, validate returndata, and add a reentrancy guard if the call is intentionally public.",
    "exploit_scenario": "An externally callable path beginning at selector 0xe4849b32 reaches CALL pc 0x856 after only a balance-like threshold check, not an owner-style check. If calldata or mutable state influence the destination or ETH amount, an attacker with the prerequisite balance could route execution into attacker-controlled code and potentially trigger unexpected side effects or reentrancy. Because only bytecode is available, the exact destination/value semantics remain uncertain."
}