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

Analysis Run

019b3836-4034-73e0-8162-117f992b4342

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
ETH value transfer possible
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
5179 artifact.fetch complete 1 / 3 3 months ago
5180 tool.cast_disasm complete 1 / 3 3 months ago
48756 analysis.bundle complete 1 / 3 1 week ago
48757 capability.graph complete 1 / 3 1 week ago
48758 detector.run complete 1 / 3 1 week ago
48759 validation.fork complete 1 / 3 1 week ago
113301 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 is not a proxy and I did not see reachable DELEGATECALL. The meaningful issues are a silent-failure payout path in `sell(uint256)` and value-bearing randomness derived from block variables in `buy()`. I treated the generic CALL/CALLCODE detector output conservatively: one CALLCODE is in embedded event-topic data at pc 0x09b7, and the validated CALL targets included the identity precompile and self, so I did not elevate those generic findings by themselves.
View stdout
{"no_findings":false,"summary":"Bytecode is not a proxy and I did not see reachable DELEGATECALL. The meaningful issues are a silent-failure payout path in `sell(uint256)` and value-bearing randomness derived from block variables in `buy()`. I treated the generic CALL/CALLCODE detector output conservatively: one CALLCODE is in embedded event-topic data at pc 0x09b7, and the validated CALL targets included the identity precompile and self, so I did not elevate those generic findings by themselves.","findings":[{"severity":"medium","category":"other","title":"`sell(uint256)` updates balances before a low-level payout CALL whose success is ignored","exploit_scenario":"A user calls `sell(uint256)` from an address or contract that causes the payout CALL to fail, or the contract simply lacks funds for the computed payout. The function still updates storage to move/burn the seller's tokens, then discards the CALL result and returns normally. The seller can lose tokens without receiving the expected proceeds, and the contract's economic state diverges from the intended sell-for-value invariant.","recommendation":"Make the payout leg revert on failure: capture the CALL success flag and `require(success)` before keeping the storage writes, or switch to a pull-payment pattern. If external interaction must remain inline, keep checks-effects-interactions and explicitly handle the failure case.","evidence":"Selector `0xe4849b32` matches `sell(uint256)`. After the balance check, execution jumps into the sell handler at pc `0x0938`. That path performs storage writes before the external interaction (`SSTORE` around pc `0x095a` and `0x096b`), computes the payout from `slot8 * amount` at pc `0x0970`-`0x0972`, then executes `CALL` at pc `0x097f`. The very next instruction is `POP` at pc `0x0980`, with no conditional branch or revert on failure. The exact CALL target is stack-computed and not fully recoverable from bytecode alone, but this is the payout leg of `sell(uint256)`.","locations":["selector:0xe4849b32","pc:0x0938","pc:0x095a","pc:0x096b","pc:0x097f","pc:0x0980"]},{"severity":"medium","category":"oracle","title":"`buy()` uses miner/validator-influenced block data as entropy for value-bearing outcomes","exploit_scenario":"A validator, builder, or sophisticated searcher can bias or selectively include `buy()` transactions when the derived random branch is favorable. Because the outcome depends on `block.number`, `block.timestamp`, historical `BLOCKHASH`, and `msg.value`, the randomness is not unpredictable for an adversary controlling inclusion or timestamp within normal protocol bounds. If this branch controls token rewards or jackpot-like payouts, the game can be systematically biased.","recommendation":"Do not derive value-bearing randomness from block variables alone. Use a commit-reveal flow, an external VRF, or another scheme where the party deciding inclusion cannot cheaply bias the result.","evidence":"Selector `0xa6f2ae3a` matches `buy()`. In the buy path, pc `0x083a` loads `NUMBER` and pc `0x083d` loads `TIMESTAMP`; the code then hashes these values and jumps into the helper at pc `0x01e7`, which invokes `BLOCKHASH` at pc `0x0201` and reduces the result modulo 10 at pc `0x0216`-`0x0219`. The resulting value is compared against the owner-settable threshold in `slot7` at pc `0x085f`-`0x086d` and again around pc `0x0876`-`0x0894`, and that branch feeds subsequent balance updates. This is classic weak entropy from block data rather than an unbiased randomness source.","locations":["selector:0xa6f2ae3a","pc:0x083a","pc:0x083d","pc:0x01e7","pc:0x0201","pc:0x0219","pc:0x085f","pc:0x0894"]}]}
View stderr
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-n86eu21s
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5c58-c94b-77d2-b6ff-205fcd9d2aad
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

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

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

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

exec
/bin/bash -lc 'rg --files' in /tmp/codex-n86eu21s
 succeeded in 0ms:
codex-output-schema.json
BYTECODE_BUNDLE.json

exec
/bin/bash -lc 'wc -c BYTECODE_BUNDLE.json codex-output-schema.json' in /tmp/codex-n86eu21s
 succeeded in 0ms:
241525 BYTECODE_BUNDLE.json
   815 codex-output-schema.json
242340 total

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

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

exec
/bin/bash -lc "jq '.detector_findings' BYTECODE_BUNDLE.json" in /tmp/codex-n86eu21s
 succeeded in 0ms:
[
  {
    "confidence": 55,
    "evidence_json": {
      "eth_value_calls": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 1126,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1194,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1436,
          "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",
        "0xf5540ea5638cf4bda40e6e34ebc005095926aafc"
      ],
      "classification": "target_varies",
      "confirmed": true,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "confirmed",
      "target_varies": true,
      "trace_id": "0x3ce6bbfd7fb102b7a4d9114203725380a4f698b34d8c422656d1a316303b00be",
      "trace_mode": "callTracer"
    }
  },
  {
    "confidence": 60,
    "evidence_json": {
      "call_count": 6,
      "examples": [
        {
          "opcode": "CALL",
          "pc": 1126,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1194,
          "returndata_checked": null,
          "target_expression_category": "computed",
          "value_expression_category": "computed"
        },
        {
          "opcode": "CALL",
          "pc": 1436,
          "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",
        "0xf5540ea5638cf4bda40e6e34ebc005095926aafc"
      ],
      "classification": "target_varies",
      "confirmed": true,
      "errors": 0,
      "matched_probe": null,
      "sink": "CALL",
      "status": "confirmed",
      "target_varies": true,
      "trace_id": "0x3ce6bbfd7fb102b7a4d9114203725380a4f698b34d8c422656d1a316303b00be",
      "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": "0x452663a790b9804fcae803623814571567435489435a205594c196d7d9371b34",
      "trace_mode": "structLogs"
    }
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.summary // .analysis_artifact.bytecode_summary // .analysis_artifact.overview // .analysis_artifact' BYTECODE_BUNDLE.json | head -c 12000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "address": "0xf5540ea5638cf4bda40e6e34ebc005095926aafc",
  "artifact_hash": "0xf9f0d1c1b90d4adeb34015a5e90fcf5fcc07f597badf71d7ad31958cb5656649",
  "artifact_json": {
    "auth": {
      "guards": []
    },
    "basic_blocks": [
      {
        "end_pc": 10,
        "hash": "0xf11444caaf4db510565a598ec5db1095f6815c9db671a85c90dde30dacbe11e2",
        "opcodes": [
          "PUSH1",
          "PUSH1",
          "MSTORE",
          "CALLDATASIZE",
          "ISZERO",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 0
      },
      {
        "end_pc": 30,
        "hash": "0x81ba1990cb6d08ec7e9f5cef473cf689c892f720fb932454a377fa40a7b6acb2",
        "opcodes": [
          "PUSH1",
          "PUSH1",
          "EXP",
          "PUSH1",
          "CALLDATALOAD",
          "DIV",
          "PUSH4",
          "OP_81",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 11
      },
      {
        "end_pc": 41,
        "hash": "0xbb4adb6b0343b466b21e5c872124ae1246c15937f907412dff7a45be4b89e23a",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 31
      },
      {
        "end_pc": 52,
        "hash": "0xea19454bfe01c00dbab35612f8aa52f8f8f0fb5376f0c092cc366ffb9e4c6857",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 42
      },
      {
        "end_pc": 63,
        "hash": "0xd69d368fec6c14dd7b3dc3a73b7ce17524cd586475c440422e4028feda4fe985",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 53
      },
      {
        "end_pc": 74,
        "hash": "0x22ac288b26f96d1f2be88284216b7a65d533ac2cbf794a41853e29d9f15cb49f",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 64
      },
      {
        "end_pc": 85,
        "hash": "0x4a871c50e75c9501bcbed914881e4008e1796505737385677e4df8f3d54ca784",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 75
      },
      {
        "end_pc": 96,
        "hash": "0xd514a7eacaee8fb4ebdcbdcb38800c29184eab38b16861dd8b97b17c70aaa2ff",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 86
      },
      {
        "end_pc": 107,
        "hash": "0x57d0236ed3c086498b49e1b50433804bdf79e7109c7b83755797f666e9fc8f6c",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 97
      },
      {
        "end_pc": 118,
        "hash": "0x93f7d5d4e7efa89e76f8f86896757b0bc1282a0b1c617a39aa1a86408e7ae1ee",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 108
      },
      {
        "end_pc": 129,
        "hash": "0xcc3c70fb9af60426f8e26d7e1f9ec383d88776d6512a9954f6bb6e8aff45b879",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 119
      },
      {
        "end_pc": 140,
        "hash": "0x86e3595e017f2af8a502c2e68c7814eb5c9f0907f0afa551477a81f71d8834b2",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 130
      },
      {
        "end_pc": 151,
        "hash": "0x48179b41f3610338adb51b04894be3a884a3d97e0d492a8aae6c114b635c31a3",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 141
      },
      {
        "end_pc": 162,
        "hash": "0x00f2e521531902fffd26347661a176ca2eda1a0744be870cff160418e21f3b2e",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 152
      },
      {
        "end_pc": 173,
        "hash": "0xdb6f001418c531caf78313cae502f5f6289e688d09acec1f8dc3970f238367c3",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 163
      },
      {
        "end_pc": 184,
        "hash": "0x4d86ffa9c19fdc81e9e81d77c7c811e836ae5ff72a61881ab0f873a1c0d3f0be",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 174
      },
      {
        "end_pc": 195,
        "hash": "0xa91d7fb99828f9689dc6ccda4a2a36fe23e57cd79450cabcd6123e9f6e7d764c",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 185
      },
      {
        "end_pc": 206,
        "hash": "0x1997e43099f71cafa68597bcff4a83984a35254f78f24a47a1305635b012542c",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 196
      },
      {
        "end_pc": 217,
        "hash": "0x2ac83c9fbd12121cfe837b579d467c8796a299f150c24a3d76eecf07a39b419f",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 207
      },
      {
        "end_pc": 228,
        "hash": "0x0b9c7a41d23b43c8eb6b6cb37b34be1c160c87c1c13630c81ff211022224aa87",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 218
      },
      {
        "end_pc": 239,
        "hash": "0x3101111f07321a4cb5fae2cfc264ca9ed59c8fa33a986357bc8acbc0e8c143f4",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 229
      },
      {
        "end_pc": 250,
        "hash": "0x0744dbb6cd58b3038fe60de22a96eff378a0420bcf310515ce1aeaf9929a08d3",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 240
      },
      {
        "end_pc": 261,
        "hash": "0xa2c51aba88be8405fa240a0076209f80349abc432670dc43adc997cd03a58e6d",
        "opcodes": [
          "OP_80",
          "PUSH4",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 251
      },
      {
        "end_pc": 263,
        "hash": "0xfa58d4586ba563afea8a6209e1c275e39f7a607bbb2afbfa6b1803387a47055c",
        "opcodes": [
          "JUMPDEST",
          "STOP"
        ],
        "start_pc": 262
      },
      {
        "end_pc": 329,
        "hash": "0x0a33371b27117f25a7860dfff512f34e43d5ece199b7523123a4a5b45f03cc3d",
        "opcodes": [
          "JUMPDEST",
          "PUSH1",
          "OP_80",
          "MLOAD",
          "PUSH1",
          "OP_80",
          "SLOAD",
          "PUSH1",
          "PUSH1",
          "OP_82",
          "OP_84",
          "AND",
          "ISZERO",
          "PUSH2",
          "MUL",
          "PUSH1",
          "NOT",
          "ADD",
          "OP_90",
          "OP_92",
          "AND",
          "OP_91",
          "OP_90",
          "OP_91",
          "DIV",
          "PUSH1",
          "OP_81",
          "ADD",
          "OP_82",
          "OP_90",
          "DIV",
          "OP_82",
          "MUL",
          "OP_84",
          "ADD",
          "OP_82",
          "ADD",
          "OP_90",
          "OP_94",
          "MSTORE",
          "OP_83",
          "OP_83",
          "MSTORE",
          "PUSH2",
          "OP_93",
          "OP_90",
          "OP_83",
          "ADD",
          "OP_82",
          "OP_82",
          "OP_80",
          "ISZERO",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 264
      },
      {
        "end_pc": 337,
        "hash": "0x2d5d8be3694ad11e330b04219e0803fc9207c60e294fdafa5cce9912a19e7731",
        "opcodes": [
          "OP_80",
          "PUSH1",
          "LT",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 330
      },
      {
        "end_pc": 356,
        "hash": "0xf356b65db4ad2e66f5cc70f5b99151c72682890746f0290a555bd307a8a9a8f1",
        "opcodes": [
          "PUSH2",
          "OP_80",
          "OP_83",
          "SLOAD",
          "DIV",
          "MUL",
          "OP_83",
          "MSTORE",
          "OP_91",
          "PUSH1",
          "ADD",
          "OP_91",
          "PUSH2",
          "JUMP"
        ],
        "start_pc": 338
      },
      {
        "end_pc": 365,
        "hash": "0x5355a75f3e32c3ff6b59b35cf8ebad4c8946c512f81833383123c6371865cce2",
        "opcodes": [
          "JUMPDEST",
          "PUSH2",
          "PUSH1",
          "SLOAD",
          "OP_81",
          "JUMP"
        ],
        "start_pc": 357
      },
      {
        "end_pc": 395,
        "hash": "0x2c57ee52e13001017913430129bcedb53aa5c5f299e08ce8514f8bbe936f0cd9",
        "opcodes": [
          "JUMPDEST",
          "PUSH2",
          "PUSH1",
          "CALLDATALOAD",
          "PUSH1",
          "SLOAD",
          "PUSH1",
          "PUSH1",
          "PUSH1",
          "EXP",
          "SUB",
          "OP_90",
          "OP_81",
          "AND",
          "CALLER",
          "OP_90",
          "OP_91",
          "AND",
          "EQ",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 366
      },
      {
        "end_pc": 399,
        "hash": "0x308901a1166184fe53071bea39dd107613c9a5d3e90924c678f29754c5b948ac",
        "opcodes": [
          "PUSH2",
          "JUMP"
        ],
        "start_pc": 396
      },
      {
        "end_pc": 414,
        "hash": "0x4304b330bcd2157b6c920f24c3c28b0cdefd386b765f0c18b1efb33e7ee409e2",
        "opcodes": [
          "JUMPDEST",
          "PUSH2",
          "PUSH1",
          "SLOAD",
          "PUSH4",
          "AND",
          "OP_81",
          "JUMP"
        ],
        "start_pc": 400
      },
      {
        "end_pc": 460,
        "hash": "0xb651867d4f6b3ef7509b871f1b5526b543177c96ad2282c8256cec26f78231b3",
        "opcodes": [
          "JUMPDEST",
          "PUSH2",
          "PUSH1",
          "CALLDATALOAD",
          "PUSH1",
          "CALLDATALOAD",
          "PUSH1",
          "CALLDATALOAD",
          "PUSH1",
          "PUSH1",
          "PUSH1",
          "EXP",
          "SUB",
          "OP_83",
          "AND",
          "PUSH1",
          "OP_90",
          "OP_81",
          "MSTORE",
          "PUSH1",
          "PUSH1",
          "MSTORE",
          "PUSH1",
          "OP_81",
          "SHA3",
          "SLOAD",
          "OP_82",
          "OP_90",
          "LT",
          "ISZERO",
          "PUSH2",
          "JUMPI"
        ],
        "start_pc": 415
      },
      {
        "end_pc": 464,
        "hash": "0x06f1bd585a2974e4edd144946dc5578111a51c3918f67134544c236bc997f9cf",
        "opcodes": [
          "PUSH2",
          "JUMP"
        ],
        "start_pc": 461
      },
      {
        "end_pc": 476,
        "hash": "0xb543112cb3079ff3863a459325f47e8d3851e361fe78eceebb73df8e735d4398",
        "opcodes": [
          "JUMPDEST",
          "PUSH2",
          "PUSH1",
          "SLOAD",
          "PUSH1",
          "AND",
          "OP_81",
          "JUMP"
        ],
        "start_pc": 465
      },
      {
        "end_pc": 486,
        "hash": "0xfd5fffb0b3dfded5666312d3563c9b72259498f03f32fee7905521d6e1dff11d",
        "opcodes": [
          "JUMPDEST",
          "PUSH2",
          "PUSH1",
          "CALLDATALOAD",
          "PUSH1",
          "CALLDATALOAD"
        ],
        "start_pc": 477
      },
      {
        "end_pc": 491,
        "hash": "0x8c860dd4a744b83f5d603fa28aafd9adea96022d0bd3350c095efd519d9f1ba2",
Error: writing output failed: Broken pipe

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

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

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.dispatch // .analysis_artifact.artifact_json.function_selectors // .analysis_artifact.artifact_json.selectors // .analysis_artifact.artifact_json.callsites // empty' BYTECODE_BUNDLE.json | head -c 12000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
[
  "0x06fdde03",
  "0x18160ddd",
  "0x1fe9eabc",
  "0x233de126",
  "0x23b872dd",
  "0x313ce567",
  "0x41fa4876",
  "0x70a08231",
  "0x7f2a8a80",
  "0x8da5cb5b",
  "0x95d89b41",
  "0xa6f2ae3a",
  "0xa9059cbb",
  "0xaa295de9",
  "0xbc094049",
  "0xc4839e8b",
  "0xcae9ca51",
  "0xdc3080f2",
  "0xdd62ed3e",
  "0xe4849b32",
  "0xf2fde38b",
  "0xff9b3acf"
]

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

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json | head -c 16000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
[
  {
    "auth": {
      "guards": []
    },
    "entry_pc": null,
    "selector": "0x06fdde03",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 45,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 272,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 343,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 363,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 375,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 406,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 471,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 596,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 626,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 645,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 715,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 735,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 809,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 818,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 830,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SSTORE",
          "pc": 1001,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1340,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1370,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1591,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2053,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2087,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2145,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2168,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2234,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2305,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2416,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        }
      ],
      "writes": 15
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 535423676,
    "selector": "0x18160ddd",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 45,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 272,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 343,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 363,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 375,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 406,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 471,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 596,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 626,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 645,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 715,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 735,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 809,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 818,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 830,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SSTORE",
          "pc": 1001,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1340,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1370,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1591,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2053,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2087,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2145,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2168,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2234,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2305,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2416,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        }
      ],
      "writes": 15
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 591257894,
    "selector": "0x1fe9eabc",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 45,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 272,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 343,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 363,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 375,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 406,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 471,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 596,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 626,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 645,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 715,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 735,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 809,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 818,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 830,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SSTORE",
          "pc": 1001,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1340,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1370,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1591,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2053,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2087,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2145,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2168,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2234,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2305,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2416,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        }
      ],
      "writes": 15
    }
  },
  {
    "auth": {
      "guards": []
    },
    "entry_pc": 599290589,
    "selector": "0x233de126",
    "sinks": {
      "call": 6,
      "delegatecall": 0,
      "selfdestruct": 0,
      "staticcall": 0
    },
    "storage": {
      "reads": 45,
      "slots": [
        {
          "op": "SLOAD",
          "pc": 272,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
        },
        {
          "op": "SLOAD",
          "pc": 343,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 363,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
        },
        {
          "op": "SLOAD",
          "pc": 375,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 406,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 471,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
        },
        {
          "op": "SLOAD",
          "pc": 596,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 626,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 645,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
        },
        {
          "op": "SLOAD",
          "pc": 715,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
        },
        {
          "op": "SLOAD",
          "pc": 735,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 809,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
        },
        {
          "op": "SLOAD",
          "pc": 818,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
        },
        {
          "op": "SLOAD",
          "pc": 830,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SSTORE",
          "pc": 1001,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1340,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 1370,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 1591,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        {
          "op": "SLOAD",
          "pc": 2053,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
        },
        {
          "op": "SLOAD",
          "pc": 2087,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
        {
          "op": "SLOAD",
          "pc": 2145,
          "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
        },
 Error: writing output failed: Broken pipe

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json | head -c 16000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
[
  {
    "opcode": "CALL",
    "pc": 1126,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 1194,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 1436,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 2431,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALLCODE",
    "pc": 2487,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  },
  {
    "opcode": "CALL",
    "pc": 2505,
    "returndata_checked": null,
    "target_expression_category": "computed",
    "value_expression_category": "computed"
  }
]

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc<=1150 and .end_pc>=1080)' BYTECODE_BUNDLE.json" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "end_pc": 1142,
  "hash": "0x6c3bec8ad2197379e97ce7c15d090fefd675ffbc51b725c82688af5488456e58",
  "opcodes": [
    "JUMPDEST",
    "PUSH1",
    "OP_80",
    "MLOAD",
    "PUSH1",
    "PUSH1",
    "CALLDATALOAD",
    "PUSH1",
    "OP_81",
    "OP_81",
    "ADD",
    "CALLDATALOAD",
    "PUSH1",
    "OP_81",
    "ADD",
    "OP_84",
    "OP_90",
    "DIV",
    "OP_84",
    "MUL",
    "OP_85",
    "ADD",
    "OP_84",
    "ADD",
    "OP_90",
    "OP_95",
    "MSTORE",
    "OP_84",
    "OP_84",
    "MSTORE",
    "PUSH2",
    "OP_94",
    "OP_81",
    "CALLDATALOAD",
    "OP_94",
    "PUSH1",
    "OP_80",
    "CALLDATALOAD",
    "OP_95",
    "OP_93",
    "OP_94",
    "PUSH1",
    "OP_94",
    "OP_92",
    "OP_93",
    "OP_91",
    "ADD",
    "OP_91",
    "OP_81",
    "OP_90",
    "OP_84",
    "ADD",
    "OP_83",
    "OP_82",
    "OP_80",
    "OP_82",
    "OP_84",
    "CALLDATACOPY",
    "POP",
    "OP_94",
    "OP_96",
    "POP",
    "POP",
    "POP",
    "POP",
    "POP",
    "POP",
    "POP",
    "PUSH1",
    "PUSH1",
    "OP_83",
    "PUSH1",
    "PUSH1",
    "POP",
    "PUSH1",
    "CALLER",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "AND",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_90",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "PUSH1",
    "SHA3",
    "PUSH1",
    "POP",
    "PUSH1",
    "OP_87",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "AND",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_90",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "PUSH1",
    "SHA3",
    "PUSH1",
    "POP",
    "OP_81",
    "OP_90",
    "SSTORE",
    "POP",
    "OP_84",
    "OP_90",
    "POP",
    "OP_80",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "AND",
    "PUSH4",
    "CALLER",
    "OP_86",
    "ADDRESS",
    "OP_87",
    "PUSH1",
    "MLOAD",
    "OP_85",
    "PUSH1",
    "PUSH1",
    "EXP",
    "MUL",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_80",
    "OP_85",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "AND",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_84",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_83",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "AND",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_80",
    "PUSH1",
    "ADD",
    "OP_82",
    "OP_81",
    "SUB",
    "OP_82",
    "MSTORE",
    "OP_83",
    "OP_81",
    "OP_81",
    "MLOAD",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_91",
    "POP",
    "OP_80",
    "MLOAD",
    "OP_90",
    "PUSH1",
    "ADD",
    "OP_90",
    "OP_80",
    "OP_83",
    "OP_83",
    "OP_82",
    "OP_90",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "OP_84",
    "PUSH1",
    "ADD",
    "DIV",
    "PUSH1",
    "MUL",
    "PUSH1",
    "ADD",
    "CALL",
    "POP",
    "OP_90",
    "POP",
    "OP_90",
    "OP_81",
    "ADD",
    "OP_90",
    "PUSH1",
    "AND",
    "OP_80",
    "ISZERO",
    "PUSH2",
    "JUMPI"
  ],
  "start_pc": 854
}
{
  "end_pc": 1167,
  "hash": "0xb5d50d3e73296dfb1ef27af6c131ccf6951d16e423282d9784276c6565299717",
  "opcodes": [
    "OP_80",
    "OP_82",
    "SUB",
    "OP_80",
    "MLOAD",
    "PUSH1",
    "OP_83",
    "PUSH1",
    "SUB",
    "PUSH2",
    "EXP",
    "SUB",
    "NOT",
    "AND",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_91",
    "POP"
  ],
  "start_pc": 1143
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc<=1450 and .end_pc>=1380)' BYTECODE_BUNDLE.json" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "end_pc": 1381,
  "hash": "0xe284d6cbc41c05af638ec7157a27d2268206dbca2eb088a84f0ba0b0638eca90",
  "opcodes": [
    "JUMPDEST",
    "PUSH2",
    "PUSH1",
    "SLOAD",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "AND",
    "OP_81",
    "JUMP"
  ],
  "start_pc": 1364
}
{
  "end_pc": 1452,
  "hash": "0x96461ab3bc00a3ed037c6de2cec21c8dbe3e2af0b9ef0b1115e74e0968648c95",
  "opcodes": [
    "JUMPDEST",
    "PUSH1",
    "MLOAD",
    "OP_80",
    "OP_80",
    "PUSH1",
    "ADD",
    "OP_82",
    "OP_81",
    "SUB",
    "OP_82",
    "MSTORE",
    "OP_83",
    "OP_81",
    "OP_81",
    "MLOAD",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "ADD",
    "OP_91",
    "POP",
    "OP_80",
    "MLOAD",
    "OP_90",
    "PUSH1",
    "ADD",
    "OP_90",
    "OP_80",
    "OP_83",
    "OP_83",
    "OP_82",
    "OP_90",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "OP_84",
    "PUSH1",
    "ADD",
    "DIV",
    "PUSH1",
    "MUL",
    "PUSH1",
    "ADD",
    "CALL",
    "POP",
    "OP_90",
    "POP",
    "OP_90",
    "OP_81",
    "ADD",
    "OP_90",
    "PUSH1",
    "AND",
    "OP_80",
    "ISZERO",
    "PUSH2",
    "JUMPI"
  ],
  "start_pc": 1382
}

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc<=2520 and .end_pc>=2400)' BYTECODE_BUNDLE.json" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "end_pc": 2485,
  "hash": "0xc6491c883e82c19af2d22cc89b39031ae7516047668a3ee1e1f5be8c4d5c6749",
  "opcodes": [
    "JUMPDEST",
    "POP",
    "ADDRESS",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "OP_90",
    "OP_81",
    "AND",
    "PUSH1",
    "OP_90",
    "OP_81",
    "MSTORE",
    "PUSH1",
    "PUSH1",
    "MSTORE",
    "PUSH1",
    "OP_80",
    "OP_82",
    "SHA3",
    "OP_80",
    "SLOAD",
    "OP_85",
    "ADD",
    "OP_90",
    "SSTORE",
    "CALLER",
    "OP_90",
    "OP_92",
    "AND",
    "OP_80",
    "OP_82",
    "MSTORE",
    "OP_82",
    "OP_82",
    "SHA3",
    "OP_80",
    "SLOAD",
    "OP_85",
    "OP_90",
    "SUB",
    "OP_90",
    "SSTORE",
    "OP_91",
    "MLOAD",
    "PUSH1",
    "SLOAD",
    "OP_84",
    "MUL",
    "OP_92",
    "OP_91",
    "OP_90",
    "OP_83",
    "OP_90",
    "OP_82",
    "OP_81",
    "OP_81",
    "OP_81",
    "OP_85",
    "OP_88",
    "OP_83",
    "CALL",
    "POP",
    "POP",
    "PUSH1",
    "OP_80",
    "MLOAD",
    "OP_86",
    "OP_81",
    "MSTORE",
    "OP_90",
    "MLOAD",
    "ADDRESS",
    "PUSH1",
    "PUSH1",
    "PUSH1",
    "EXP",
    "SUB",
    "AND",
    "OP_94",
    "OP_93",
    "POP",
    "PUSH1",
    "OP_80",
    "MLOAD",
    "PUSH1",
    "PUSH2",
    "OP_83",
    "CODECOPY",
    "OP_81",
    "MLOAD",
    "OP_91",
    "MSTORE",
    "OP_92",
    "POP",
    "OP_90",
    "OP_81",
    "OP_90",
    "SUB",
    "PUSH1",
    "ADD",
    "OP_90",
    "OP_A3",
    "OP_91",
    "OP_90",
    "POP",
    "JUMP"
  ],
  "start_pc": 2360
}
{
  "end_pc": 2517,
  "hash": "0xe8c93e2f110af93693b9f98b9a3c3e1c10ab135912f01dcdc646c5a5650d7dfc",
  "opcodes": [
    "OP_DD",
    "CALLCODE",
    "MSTORE",
    "OP_AD",
    "SHL",
    "OP_E2",
    "OP_C8",
    "OP_9B",
    "PUSH10",
    "CALL",
    "PUSH4",
    "CREATE2",
    "GAS",
    "OP_4D",
    "CREATE2",
    "OP_23",
    "OP_B3",
    "OP_EF"
  ],
  "start_pc": 2486
}

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

exec
/bin/bash -lc "jq '.capability_graph.graph_json' BYTECODE_BUNDLE.json | head -c 16000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "edges": [
    {
      "from": "bb:0",
      "to": "bb:262",
      "type": "control_flow"
    },
    {
      "from": "bb:0",
      "to": "bb:11",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:11",
      "to": "bb:264",
      "type": "control_flow"
    },
    {
      "from": "bb:11",
      "to": "bb:31",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:31",
      "to": "bb:357",
      "type": "control_flow"
    },
    {
      "from": "bb:31",
      "to": "bb:42",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:42",
      "to": "bb:366",
      "type": "control_flow"
    },
    {
      "from": "bb:42",
      "to": "bb:53",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:53",
      "to": "bb:400",
      "type": "control_flow"
    },
    {
      "from": "bb:53",
      "to": "bb:64",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:64",
      "to": "bb:415",
      "type": "control_flow"
    },
    {
      "from": "bb:64",
      "to": "bb:75",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:75",
      "to": "bb:465",
      "type": "control_flow"
    },
    {
      "from": "bb:75",
      "to": "bb:86",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:86",
      "to": "bb:477",
      "type": "control_flow"
    },
    {
      "from": "bb:86",
      "to": "bb:97",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:97",
      "to": "bb:563",
      "type": "control_flow"
    },
    {
      "from": "bb:97",
      "to": "bb:108",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:108",
      "to": "bb:587",
      "type": "control_flow"
    },
    {
      "from": "bb:108",
      "to": "bb:119",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:119",
      "to": "bb:620",
      "type": "control_flow"
    },
    {
      "from": "bb:119",
      "to": "bb:130",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:130",
      "to": "bb:638",
      "type": "control_flow"
    },
    {
      "from": "bb:130",
      "to": "bb:141",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:141",
      "to": "bb:729",
      "type": "control_flow"
    },
    {
      "from": "bb:141",
      "to": "bb:152",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:152",
      "to": "bb:756",
      "type": "control_flow"
    },
    {
      "from": "bb:152",
      "to": "bb:163",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:163",
      "to": "bb:803",
      "type": "control_flow"
    },
    {
      "from": "bb:163",
      "to": "bb:174",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:174",
      "to": "bb:812",
      "type": "control_flow"
    },
    {
      "from": "bb:174",
      "to": "bb:185",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:185",
      "to": "bb:821",
      "type": "control_flow"
    },
    {
      "from": "bb:185",
      "to": "bb:196",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:196",
      "to": "bb:854",
      "type": "control_flow"
    },
    {
      "from": "bb:196",
      "to": "bb:207",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:207",
      "to": "bb:1213",
      "type": "control_flow"
    },
    {
      "from": "bb:207",
      "to": "bb:218",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:218",
      "to": "bb:1250",
      "type": "control_flow"
    },
    {
      "from": "bb:218",
      "to": "bb:229",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:229",
      "to": "bb:1287",
      "type": "control_flow"
    },
    {
      "from": "bb:229",
      "to": "bb:240",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:240",
      "to": "bb:1331",
      "type": "control_flow"
    },
    {
      "from": "bb:240",
      "to": "bb:251",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:251",
      "to": "bb:1364",
      "type": "control_flow"
    },
    {
      "from": "bb:251",
      "to": "bb:262",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:264",
      "to": "bb:1664",
      "type": "control_flow"
    },
    {
      "from": "bb:264",
      "to": "bb:330",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:330",
      "to": "bb:1621",
      "type": "control_flow"
    },
    {
      "from": "bb:330",
      "to": "bb:338",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:338",
      "to": "bb:1664",
      "type": "control_flow"
    },
    {
      "from": "bb:366",
      "to": "bb:2044",
      "type": "control_flow"
    },
    {
      "from": "bb:366",
      "to": "bb:396",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:415",
      "to": "bb:1809",
      "type": "control_flow"
    },
    {
      "from": "bb:415",
      "to": "bb:461",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:477",
      "to": "bb:487",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:487",
      "to": "bb:492",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:492",
      "to": "bb:1672",
      "type": "control_flow"
    },
    {
      "from": "bb:492",
      "to": "bb:501",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:501",
      "to": "bb:555",
      "type": "control_flow"
    },
    {
      "from": "bb:501",
      "to": "bb:546",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:546",
      "to": "bb:555",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:555",
      "to": "bb:492",
      "type": "control_flow"
    },
    {
      "from": "bb:587",
      "to": "bb:2049",
      "type": "control_flow"
    },
    {
      "from": "bb:587",
      "to": "bb:616",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:638",
      "to": "bb:1664",
      "type": "control_flow"
    },
    {
      "from": "bb:638",
      "to": "bb:702",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:702",
      "to": "bb:1621",
      "type": "control_flow"
    },
    {
      "from": "bb:702",
      "to": "bb:710",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:710",
      "to": "bb:1664",
      "type": "control_flow"
    },
    {
      "from": "bb:729",
      "to": "bb:2101",
      "type": "control_flow"
    },
    {
      "from": "bb:729",
      "to": "bb:752",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:756",
      "to": "bb:1680",
      "type": "control_flow"
    },
    {
      "from": "bb:756",
      "to": "bb:799",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:821",
      "to": "bb:2083",
      "type": "control_flow"
    },
    {
      "from": "bb:821",
      "to": "bb:850",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:854",
      "to": "bb:1168",
      "type": "control_flow"
    },
    {
      "from": "bb:854",
      "to": "bb:1143",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1143",
      "to": "bb:1168",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1168",
      "to": "bb:1200",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1287",
      "to": "bb:2360",
      "type": "control_flow"
    },
    {
      "from": "bb:1287",
      "to": "bb:1327",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1331",
      "to": "bb:1587",
      "type": "control_flow"
    },
    {
      "from": "bb:1331",
      "to": "bb:1360",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1382",
      "to": "bb:1478",
      "type": "control_flow"
    },
    {
      "from": "bb:1382",
      "to": "bb:1453",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1453",
      "to": "bb:1478",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1621",
      "to": "bb:1635",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1635",
      "to": "bb:1635",
      "type": "control_flow"
    },
    {
      "from": "bb:1635",
      "to": "bb:1655",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1655",
      "to": "bb:1664",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1680",
      "to": "bb:1719",
      "type": "control_flow"
    },
    {
      "from": "bb:1680",
      "to": "bb:1715",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1809",
      "to": "bb:1848",
      "type": "control_flow"
    },
    {
      "from": "bb:1809",
      "to": "bb:1844",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:1848",
      "to": "bb:1924",
      "type": "control_flow"
    },
    {
      "from": "bb:1848",
      "to": "bb:1920",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:2101",
      "to": "bb:487",
      "type": "control_flow"
    },
    {
      "from": "bb:2142",
      "to": "bb:2165",
      "type": "control_flow"
    },
    {
      "from": "bb:2142",
      "to": "bb:2161",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:2161",
      "to": "bb:2165",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:2165",
      "to": "bb:2196",
      "type": "control_flow"
    },
    {
      "from": "bb:2165",
      "to": "bb:2189",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "bb:2189",
      "to": "bb:2196",
      "type": "control_flow_fallthrough"
    },
    {
      "from": "fn:0x18160ddd",
      "to": "bb:535423676",
      "type": "entry"
    },
    {
      "from": "fn:0x1fe9eabc",
      "to": "bb:591257894",
      "type": "entry"
    },
    {
      "from": "fn:0x233de126",
      "to": "bb:599290589",
      "type": "entry"
    },
    {
      "from": "fn:0x23b872dd",
      "to": "bb:826074471",
      "type": "entry"
    },
    {
      "from": "fn:0x313ce567",
      "to": "bb:1106921590",
      "type": "entry"
    },
    {
      "from": "fn:0x41fa4876",
      "to": "bb:1889567281",
      "type": "entry"
    },
    {
      "from": "fn:0x70a08231",
      "to": "bb:2133494400",
      "type": "entry"
    },
    {
      "from": "fn:0x7f2a8a80",
      "to": "bb:2376452955",
      "type": "entry"
    },
    {
      "from": "fn:0x8da5cb5b",
      "to": "bb:2514000705",
      "type": "entry"
    },
    {
      "from": "fn:0x95d89b41",
      "to": "bb:2800922170",
      "type": "entry"
    },
    {
      "from": "fn:0xa6f2ae3a",
      "to": "bb:2835717307",
      "type": "entry"
    },
    {
      "from": "fn:0xa9059cbb",
      "to": "bb:2854837737",
      "type": "entry"
    },
    {
      "from": "fn:0xaa295de9",
      "to": "bb:3154722889",
      "type": "entry"
    },
    {
      "from": "fn:0xbc094049",
      "to": "bb:3296960139",
      "type": "entry"
    },
    {
      "from": "fn:0xc4839e8b",
      "to": "bb:3404319313",
      "type": "entry"
    },
    {
      "from": "fn:0xcae9ca51",
      "to": "bb:3694166258",
      "type": "entry"
    },
    {
      "from": "fn:0xdc3080f2",
      "to": "bb:3714247998",
      "type": "entry"
    },
    {
      "from": "fn:0xdd62ed3e",
      "to": "bb:3833895730",
      "type": "entry"
    },
    {
      "from": "fn:0xe4849b32",
      "to": "bb:4076725131",
      "type": "entry"
    },
    {
      "from": "fn:0xf2fde38b",
      "to": "bb:4288363215",
      "type": "entry"
    },
    {
      "from": "bb:854",
      "to": "call:1126",
      "type": "contains"
    },
    {
      "from": "call:1126",
      "to": "sink:call",
      "type": "capability"
    },
    {
      "from": "bb:1168",
      "to": "call:1194",
      "type": "contains"
    },
    {
      "from": "call:1194",
      "to": "sink:call",
      "type": "capability"
    },
    {
      "from": "bb:1382",
      "to": "call:1436",
      "type": "contains"
    },
    {
      "from": "call:1436",
      "to": "sink:call",
      "type": "capability"
    },
    {
      "from": "bb:2360",
      "to": "call:2431",
      "type": "contains"
    },
    {
      "from": "call:2431",
      "to": "sink:call",
      "type": "capability"
    },
    {
      "from": "bb:2486",
      "to": "call:2487",
      "type": "contains"
    },
    {
      "from": "call:2487",
      "to": "sink:callcode",
      "type": "capability"
    },
    {
      "from": "bb:2486",
      "to": "call:2505",
      "type": "contains"
    },
    {
      "from": "call:2505",
      "to": "sink:call",
      "type": "capability"
    }
  ],
  "nodes": [
    {
      "end_pc": 10,
      "hash": "0xf11444caaf4db510565a598ec5db1095f6815c9db671a85c90dde30dacbe11e2",
      "id": "bb:0",
      "start_pc": 0,
      "type": "basic_block"
    },
    {
      "end_pc": 30,
      "hash": "0x81ba1990cb6d08ec7e9f5cef473cf689c892f720fb932454a377fa40a7b6acb2",
      "id": "bb:11",
      "start_pc": 11,
      "type": "basic_block"
    },
    {
      "end_pc": 41,
      "hash": "0xbb4adb6b0343b466b21e5c872124ae1246c15937f907412dff7a45be4b89e23a",
      "id": "bb:31",
      "start_pc": 31,
      "type": "basic_block"
    },
    {
      "end_pc": 52,
      "hash": "0xea19454bfe01c00dbab35612f8aa52f8f8f0fb5376f0c092cc366ffb9e4c6857",
      "id": "bb:42",
      "start_pc": 42,
      "type": "basic_block"
    },
    {
      "end_pc": 63,
      "hash": "0xd69d368fec6c14dd7b3dc3a73b7ce17524cd586475c440422e4028feda4fe985",
      "id": "bb:53",
      "start_pc": 53,
      "type": "basic_block"
    },
    {
      "end_pc": 74,
      "hash": "0x22ac288b26f96d1f2be88284216b7a65d533ac2cbf794a41853e29d9f15cb49f",
      "id": "bb:64",
      "start_pc": 64,
      "type": "basic_block"
    },
    {
      "end_pc": 85,
      "hash": "0x4a871c50e75c9501bcbed914881e4008e1796505737385677e4df8f3d54ca784",
      "id": "bb:75",
      "start_pc": 75,
      "type": "basic_block"
    },
    {
      "end_pc": 96,
      "hash": "0xd514a7eacaee8fb4ebdcbdcb38800c29184eab38b16861dd8b97b17c70aaa2ff",
      "id": "bb:86",
      "start_pc": 86,
      "type": "basic_block"
    },
    {
      "end_pc": 107,
      "hash": "0x57d0236ed3c086498b49e1b50433804bdf79e7109c7b83755797f666e9fc8f6c",
      "id": "bb:97",
      "start_pc": 97,
      "type": "basic_block"
    },
    {
      "end_pc": 118,
      "hash": "0x93f7d5d4e7efa89e76f8f86896757b0bc1282a0b1c617a39aa1a86408e7ae1ee",
      "id": "bb:108",
      "start_pc": 108,
      "type": "basic_block"
    },
    {
      "end_pc": 129,
      "hash": "0xcc3c70fb9af60426f8e26d7e1f9ec383d88776d6512a9954f6bb6e8aff45b879",
      "id": "bb:119",
      "start_pc": 119,
      "type": "basic_block"
    },
    {
      "end_pc": 140,
      "hash": "0x86e3595e017f2af8a502c2e68c7814eb5c9f0907f0afa551477a81f71d8834b2",
      "id": "bb:130",
      "start_pc": 130,
      "type": "basic_block"
    },
    {
      "end_pc": 151,
      "hash": "0x48179b41f3610338adb51b04894be3a884a3d97e0d492a8aae6c114b635c31a3",
      "id": "bb:141",
      "start_pc": 141,
      "type": "basic_block"
    },
    {
      "end_pc": 162,
      "hash": "0x00f2e521531902fffd26347661a176ca2eda1a0744be870cff160418e21f3b2e",
      "id": "bb:152",
      "start_pc": 152,
      "type": "basic_block"
    },
    {
      "end_pc": 173,
      "hash": "0xdb6f001418c531caf78313cae502f5f6289e688d09acec1f8dc3970f238367c3",
      "id": "bb:163",
      "start_pc": 163,
      "type": "basic_block"
    },
    {
      "end_pc": 184,
      "hash": "0x4d86ffa9c19fdc81e9e81d77c7c811e836ae5ff72a61881ab0f873a1c0d3f0be",
      "id": "bb:174",
      "start_pc": 174,
      "type": "basic_block"
    },
    {
      "end_pc": 195,
      "hash": "0xa91d7fb99828f9689dc6ccda4a2a36fe23e57cd79450cabcd6123e9f6e7d76Error: writing output failed: Broken pipe

exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' BYTECODE_BUNDLE.json | head -c 12000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "keccak_count": 30,
  "reads": 45,
  "slots": [
    {
      "op": "SLOAD",
      "pc": 272,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
    },
    {
      "op": "SLOAD",
      "pc": 343,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 363,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000004"
    },
    {
      "op": "SLOAD",
      "pc": 375,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 406,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 471,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000003"
    },
    {
      "op": "SLOAD",
      "pc": 596,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 626,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 645,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
    },
    {
      "op": "SLOAD",
      "pc": 715,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
    },
    {
      "op": "SLOAD",
      "pc": 735,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
    },
    {
      "op": "SLOAD",
      "pc": 809,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000006"
    },
    {
      "op": "SLOAD",
      "pc": 818,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
    },
    {
      "op": "SLOAD",
      "pc": 830,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SSTORE",
      "pc": 1001,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1340,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 1370,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 1591,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
    },
    {
      "op": "SLOAD",
      "pc": 2053,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 2087,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 2145,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 2168,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000007"
    },
    {
      "op": "SLOAD",
      "pc": 2234,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 2305,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000005"
    },
    {
      "op": "SLOAD",
      "pc": 2416,
      "slot": "0x0000000000000000000000000000000000000000000000000000000000000008"
    }
  ],
  "writes": 15
}

exec
/bin/bash -lc "jq '.. | .runtime_bytecode? // empty' BYTECODE_BUNDLE.json | head -c 4000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "full": "0x606060405236156101065760e060020a600035046306fdde03811461010857806318160ddd146101655780631fe9eabc1461016e578063233de1261461019057806323b872dd1461019f578063313ce567146101d157806341fa4876146101dd57806370a08231146102335780637f2a8a801461024b5780638da5cb5b1461026c57806395d89b411461027e578063a6f2ae3a146102d9578063a9059cbb146102f4578063aa295de914610323578063bc0940491461032c578063c4839e8b14610335578063cae9ca5114610356578063dc3080f2146104bd578063dd62ed3e146104e2578063e4849b3214610507578063f2fde38b14610533578063ff9b3acf14610554575b005b60408051600180546020600282841615610100026000190190921691909104601f810182900482028401820190945283835261056693908301828280156106805780601f1061065557610100808354040283529160200191610680565b6105d460045481565b610106600435600054600160a060020a0390811633909116146107fc57610002565b6105e660075463ffffffff1681565b6105d4600435602435604435600160a060020a0383166000908152600960205260408120548290101561071157610002565b61060060035460ff1681565b6105d46004356024355b600080805b8381101561068857604080514383900360001901408152602081018790528151908190039091019020600290066000141561022b57600281900a909101905b6001016101ec565b6105d460043560096020526000908152604090205481565b61010660043560005433600160a060020a0390811691161461080157610002565b610616600054600160a060020a031681565b6105666002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156106805780601f1061065557610100808354040283529160200191610680565b6105d460065434906000908190819084111561083557610002565b61010660043560243533600160a060020a03166000908152600960205260409020548190101561069057610002565b6105d460065481565b6105d460085481565b61010660043560005433600160a060020a0390811691161461082357610002565b604080516020604435600481810135601f81018490048402850184019095528484526105d49481359460248035959394606494929391019181908401838280828437509496505050505050506000600083600a600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156104905780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257506001979650505050505050565b600b602090815260043560009081526040808220909252602435815220546105d49081565b600a602090815260043560009081526040808220909252602435815220546105d49081565b6105d460043533600160a060020a03166000908152600960205260408120548290101561093857610002565b61010660043560005433600160a060020a0390811691161461063357610002565b610616600554600160a060020a031681565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805163ffffffff929092168252519081900360200190f35b6040805160ff9092168252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b6000805473ffffffffffffffffffffffffffffffffffffffff19168217905550565b820191906000526020600020905b81548152906001019060200180831161066357829003601f168201915b505050505081565b509392505050565b600160a060020a03821660009081526009602052604090205481810110156106b757610002565b33600160a060020a03908116600081815260096020908152604080832080548790039055938616808352918490208054860190558351858152935191936000805160206109b6833981519152929081900390910190a35050565b600160a060020a038316600090815260096020526040902054808301101561073857610002565b600160a060020a038481166000818152600a602090815260408083203390951680845294825280832054938352600b825280832094835293905291909120548301111561078457610002565b600160a060020a03848116600081815260096020908152604080832080548890039055878516808452818420805489019055848452600b8352818420339096168452948Error: writing output failed: Broken pipe

exec
/bin/bash -lc "jq '.. | .bytecode? // empty' BYTECODE_BUNDLE.json | head -c 4000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
exec
/bin/bash -lc "jq '.. | .deployed_bytecode? // empty' BYTECODE_BUNDLE.json | head -c 4000" in /tmp/codex-n86eu21s
 succeeded in 0ms:
exec
/bin/bash -lc 'command -v evm || true' in /tmp/codex-n86eu21s
 succeeded in 0ms:
exec
/bin/bash -lc 'command -v cast || true' in /tmp/codex-n86eu21s
 succeeded in 0ms:
/home/noahkuhn/.foundry/bin/cast

exec
/bin/bash -lc 'command -v python3 || true' in /tmp/codex-n86eu21s
 succeeded in 0ms:
/var/www/tripwire/.venv/bin/python3

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | sed -n '"'1,260p'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0106
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x06fdde03
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x0108
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x18160ddd
00000025: EQ
00000026: PUSH2 0x0165
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x1fe9eabc
00000030: EQ
00000031: PUSH2 0x016e
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0x233de126
0000003b: EQ
0000003c: PUSH2 0x0190
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x23b872dd
00000046: EQ
00000047: PUSH2 0x019f
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x313ce567
00000051: EQ
00000052: PUSH2 0x01d1
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x41fa4876
0000005c: EQ
0000005d: PUSH2 0x01dd
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x70a08231
00000067: EQ
00000068: PUSH2 0x0233
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x7f2a8a80
00000072: EQ
00000073: PUSH2 0x024b
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0x8da5cb5b
0000007d: EQ
0000007e: PUSH2 0x026c
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x95d89b41
00000088: EQ
00000089: PUSH2 0x027e
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xa6f2ae3a
00000093: EQ
00000094: PUSH2 0x02d9
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xa9059cbb
0000009e: EQ
0000009f: PUSH2 0x02f4
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xaa295de9
000000a9: EQ
000000aa: PUSH2 0x0323
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xbc094049
000000b4: EQ
000000b5: PUSH2 0x032c
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0xc4839e8b
000000bf: EQ
000000c0: PUSH2 0x0335
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0xcae9ca51
000000ca: EQ
000000cb: PUSH2 0x0356
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0xdc3080f2
000000d5: EQ
000000d6: PUSH2 0x04bd
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0xdd62ed3e
000000e0: EQ
000000e1: PUSH2 0x04e2
000000e4: JUMPI
000000e5: DUP1
000000e6: PUSH4 0xe4849b32
000000eb: EQ
000000ec: PUSH2 0x0507
000000ef: JUMPI
000000f0: DUP1
000000f1: PUSH4 0xf2fde38b
000000f6: EQ
000000f7: PUSH2 0x0533
000000fa: JUMPI
000000fb: DUP1
000000fc: PUSH4 0xff9b3acf
00000101: EQ
00000102: PUSH2 0x0554
00000105: JUMPI
00000106: JUMPDEST
00000107: STOP
00000108: JUMPDEST
00000109: PUSH1 0x40
0000010b: DUP1
0000010c: MLOAD
0000010d: PUSH1 0x01
0000010f: DUP1
00000110: SLOAD
00000111: PUSH1 0x20
00000113: PUSH1 0x02
00000115: DUP3
00000116: DUP5
00000117: AND
00000118: ISZERO
00000119: PUSH2 0x0100
0000011c: MUL
0000011d: PUSH1 0x00
0000011f: NOT
00000120: ADD
00000121: SWAP1
00000122: SWAP3
00000123: AND
00000124: SWAP2
00000125: SWAP1
00000126: SWAP2
00000127: DIV
00000128: PUSH1 0x1f
0000012a: DUP2
0000012b: ADD
0000012c: DUP3
0000012d: SWAP1
0000012e: DIV
0000012f: DUP3
00000130: MUL
00000131: DUP5
00000132: ADD
00000133: DUP3
00000134: ADD
00000135: SWAP1
00000136: SWAP5
00000137: MSTORE
00000138: DUP4
00000139: DUP4
0000013a: MSTORE
0000013b: PUSH2 0x0566
0000013e: SWAP4
0000013f: SWAP1
00000140: DUP4
00000141: ADD
00000142: DUP3
00000143: DUP3
00000144: DUP1
00000145: ISZERO
00000146: PUSH2 0x0680
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH1 0x1f
0000014d: LT
0000014e: PUSH2 0x0655
00000151: JUMPI
00000152: PUSH2 0x0100
00000155: DUP1
00000156: DUP4
00000157: SLOAD
00000158: DIV
00000159: MUL
0000015a: DUP4
0000015b: MSTORE
0000015c: SWAP2
0000015d: PUSH1 0x20
0000015f: ADD
00000160: SWAP2
00000161: PUSH2 0x0680
00000164: JUMP
00000165: JUMPDEST
00000166: PUSH2 0x05d4
00000169: PUSH1 0x04
0000016b: SLOAD
0000016c: DUP2
0000016d: JUMP
0000016e: JUMPDEST
0000016f: PUSH2 0x0106
00000172: PUSH1 0x04
00000174: CALLDATALOAD
00000175: PUSH1 0x00
00000177: SLOAD
00000178: PUSH1 0x01
0000017a: PUSH1 0xa0
0000017c: PUSH1 0x02
0000017e: EXP
0000017f: SUB
00000180: SWAP1
00000181: DUP2
00000182: AND
00000183: CALLER
00000184: SWAP1
00000185: SWAP2
00000186: AND
00000187: EQ
00000188: PUSH2 0x07fc
0000018b: JUMPI
0000018c: PUSH2 0x0002
0000018f: JUMP
00000190: JUMPDEST
00000191: PUSH2 0x05e6
00000194: PUSH1 0x07
00000196: SLOAD
00000197: PUSH4 0xffffffff
0000019c: AND
0000019d: DUP2
0000019e: JUMP
0000019f: JUMPDEST
000001a0: PUSH2 0x05d4
000001a3: PUSH1 0x04
000001a5: CALLDATALOAD
000001a6: PUSH1 0x24
000001a8: CALLDATALOAD
000001a9: PUSH1 0x44
000001ab: CALLDATALOAD
000001ac: PUSH1 0x01
000001ae: PUSH1 0xa0
000001b0: PUSH1 0x02
000001b2: EXP
000001b3: SUB
000001b4: DUP4
000001b5: AND
000001b6: PUSH1 0x00
000001b8: SWAP1
000001b9: DUP2
000001ba: MSTORE
000001bb: PUSH1 0x09
000001bd: PUSH1 0x20
000001bf: MSTORE
000001c0: PUSH1 0x40
000001c2: DUP2
000001c3: KECCAK256

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast 4byte 0x1fe9eabc; cast 4byte 0x233de126; cast 4byte 0x41fa4876; cast 4byte 0x7f2a8a80; cast 4byte 0xa6f2ae3a; cast 4byte 0xaa295de9; cast 4byte 0xbc094049; cast 4byte 0xc4839e8b; cast 4byte 0xcae9ca51; cast 4byte 0xdc3080f2; cast 4byte 0xe4849b32; cast 4byte 0xff9b3acf" in /tmp/codex-n86eu21s
 exited 1 in 189ms:
Error: error sending request for url (https://api.4byte.sourcify.dev/signature-database/v1/lookup?function=0xaa295de9)

Context:
- Error #0: client error (Connect)
- Error #1: dns error
- Error #2: failed to lookup address information: Temporary failure in name resolution
Error: error sending request for url (https://api.4byte.sourcify.dev/signature-database/v1/lookup?function=0xbc094049)

Context:
- Error #0: client error (Connect)
- Error #1: dns error
- Error #2: failed to lookup address information: Temporary failure in name resolution
Error: error sending request for url (https://api.4byte.sourcify.dev/signature-database/v1/lookup?function=0xc4839e8b)

Context:
- Error #0: client error (Connect)
- Error #1: dns error
- Error #2: failed to lookup address information: Temporary failure in name resolution
Error: error sending request for url (https://api.4byte.sourcify.dev/signature-database/v1/lookup?function=0xcae9ca51)

Context:
- Error #0: client error (Connect)
- Error #1: dns error
- Error #2: failed to lookup address information: Temporary failure in name resolution
Error: error sending request for url (https://api.4byte.sourcify.dev/signature-database/v1/lookup?function=0xdc3080f2)

Context:
- Error #0: client error (Connect)
- Error #1: dns error
- Error #2: failed to lookup address information: Temporary failure in name resolution
Error: error sending request for url (https://api.4byte.sourcify.dev/signature-database/v1/lookup?function=0xe4849b32)

Context:
- Error #0: client error (Connect)
- Error #1: dns error
- Error #2: failed to lookup address information: Temporary failure in name resolution
Error: error sending request for url (https://api.4byte.sourcify.dev/signature-database/v1/lookup?function=0xff9b3acf)

Context:
- Error #0: client error (Connect)
- Error #1: dns error
- Error #2: failed to lookup address information: Temporary failure in name resolution

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | sed -n '"'260,520p'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
000001c3: KECCAK256
000001c4: SLOAD
000001c5: DUP3
000001c6: SWAP1
000001c7: LT
000001c8: ISZERO
000001c9: PUSH2 0x0711
000001cc: JUMPI
000001cd: PUSH2 0x0002
000001d0: JUMP
000001d1: JUMPDEST
000001d2: PUSH2 0x0600
000001d5: PUSH1 0x03
000001d7: SLOAD
000001d8: PUSH1 0xff
000001da: AND
000001db: DUP2
000001dc: JUMP
000001dd: JUMPDEST
000001de: PUSH2 0x05d4
000001e1: PUSH1 0x04
000001e3: CALLDATALOAD
000001e4: PUSH1 0x24
000001e6: CALLDATALOAD
000001e7: JUMPDEST
000001e8: PUSH1 0x00
000001ea: DUP1
000001eb: DUP1
000001ec: JUMPDEST
000001ed: DUP4
000001ee: DUP2
000001ef: LT
000001f0: ISZERO
000001f1: PUSH2 0x0688
000001f4: JUMPI
000001f5: PUSH1 0x40
000001f7: DUP1
000001f8: MLOAD
000001f9: NUMBER
000001fa: DUP4
000001fb: SWAP1
000001fc: SUB
000001fd: PUSH1 0x00
000001ff: NOT
00000200: ADD
00000201: BLOCKHASH
00000202: DUP2
00000203: MSTORE
00000204: PUSH1 0x20
00000206: DUP2
00000207: ADD
00000208: DUP8
00000209: SWAP1
0000020a: MSTORE
0000020b: DUP2
0000020c: MLOAD
0000020d: SWAP1
0000020e: DUP2
0000020f: SWAP1
00000210: SUB
00000211: SWAP1
00000212: SWAP2
00000213: ADD
00000214: SWAP1
00000215: KECCAK256
00000216: PUSH1 0x02
00000218: SWAP1
00000219: MOD
0000021a: PUSH1 0x00
0000021c: EQ
0000021d: ISZERO
0000021e: PUSH2 0x022b
00000221: JUMPI
00000222: PUSH1 0x02
00000224: DUP2
00000225: SWAP1
00000226: EXP
00000227: SWAP1
00000228: SWAP2
00000229: ADD
0000022a: SWAP1
0000022b: JUMPDEST
0000022c: PUSH1 0x01
0000022e: ADD
0000022f: PUSH2 0x01ec
00000232: JUMP
00000233: JUMPDEST
00000234: PUSH2 0x05d4
00000237: PUSH1 0x04
00000239: CALLDATALOAD
0000023a: PUSH1 0x09
0000023c: PUSH1 0x20
0000023e: MSTORE
0000023f: PUSH1 0x00
00000241: SWAP1
00000242: DUP2
00000243: MSTORE
00000244: PUSH1 0x40
00000246: SWAP1
00000247: KECCAK256
00000248: SLOAD
00000249: DUP2
0000024a: JUMP
0000024b: JUMPDEST
0000024c: PUSH2 0x0106
0000024f: PUSH1 0x04
00000251: CALLDATALOAD
00000252: PUSH1 0x00
00000254: SLOAD
00000255: CALLER
00000256: PUSH1 0x01
00000258: PUSH1 0xa0
0000025a: PUSH1 0x02
0000025c: EXP
0000025d: SUB
0000025e: SWAP1
0000025f: DUP2
00000260: AND
00000261: SWAP2
00000262: AND
00000263: EQ
00000264: PUSH2 0x0801
00000267: JUMPI
00000268: PUSH2 0x0002
0000026b: JUMP
0000026c: JUMPDEST
0000026d: PUSH2 0x0616
00000270: PUSH1 0x00
00000272: SLOAD
00000273: PUSH1 0x01
00000275: PUSH1 0xa0
00000277: PUSH1 0x02
00000279: EXP
0000027a: SUB
0000027b: AND
0000027c: DUP2
0000027d: JUMP
0000027e: JUMPDEST
0000027f: PUSH2 0x0566
00000282: PUSH1 0x02
00000284: DUP1
00000285: SLOAD
00000286: PUSH1 0x40
00000288: DUP1
00000289: MLOAD
0000028a: PUSH1 0x20
0000028c: PUSH1 0x01
0000028e: DUP5
0000028f: AND
00000290: ISZERO
00000291: PUSH2 0x0100
00000294: MUL
00000295: PUSH1 0x00
00000297: NOT
00000298: ADD
00000299: SWAP1
0000029a: SWAP4
0000029b: AND
0000029c: DUP5
0000029d: SWAP1
0000029e: DIV
0000029f: PUSH1 0x1f
000002a1: DUP2
000002a2: ADD
000002a3: DUP5
000002a4: SWAP1
000002a5: DIV
000002a6: DUP5
000002a7: MUL
000002a8: DUP3
000002a9: ADD
000002aa: DUP5
000002ab: ADD
000002ac: SWAP1
000002ad: SWAP3
000002ae: MSTORE
000002af: DUP2
000002b0: DUP2
000002b1: MSTORE
000002b2: SWAP3
000002b3: SWAP2
000002b4: DUP4
000002b5: ADD
000002b6: DUP3
000002b7: DUP3
000002b8: DUP1
000002b9: ISZERO
000002ba: PUSH2 0x0680
000002bd: JUMPI
000002be: DUP1
000002bf: PUSH1 0x1f
000002c1: LT
000002c2: PUSH2 0x0655
000002c5: JUMPI
000002c6: PUSH2 0x0100
000002c9: DUP1
000002ca: DUP4
000002cb: SLOAD
000002cc: DIV
000002cd: MUL
000002ce: DUP4
000002cf: MSTORE
000002d0: SWAP2
000002d1: PUSH1 0x20
000002d3: ADD
000002d4: SWAP2
000002d5: PUSH2 0x0680
000002d8: JUMP
000002d9: JUMPDEST
000002da: PUSH2 0x05d4
000002dd: PUSH1 0x06
000002df: SLOAD
000002e0: CALLVALUE
000002e1: SWAP1
000002e2: PUSH1 0x00
000002e4: SWAP1
000002e5: DUP2
000002e6: SWAP1
000002e7: DUP2
000002e8: SWAP1
000002e9: DUP5
000002ea: GT
000002eb: ISZERO
000002ec: PUSH2 0x0835
000002ef: JUMPI
000002f0: PUSH2 0x0002
000002f3: JUMP
000002f4: JUMPDEST
000002f5: PUSH2 0x0106
000002f8: PUSH1 0x04
000002fa: CALLDATALOAD
000002fb: PUSH1 0x24
000002fd: CALLDATALOAD
000002fe: CALLER
000002ff: PUSH1 0x01
00000301: PUSH1 0xa0
00000303: PUSH1 0x02
00000305: EXP
00000306: SUB
00000307: AND
00000308: PUSH1 0x00
0000030a: SWAP1
0000030b: DUP2
0000030c: MSTORE
0000030d: PUSH1 0x09
0000030f: PUSH1 0x20
00000311: MSTORE
00000312: PUSH1 0x40
00000314: SWAP1
00000315: KECCAK256
00000316: SLOAD
00000317: DUP2
00000318: SWAP1
00000319: LT
0000031a: ISZERO
0000031b: PUSH2 0x0690
0000031e: JUMPI
0000031f: PUSH2 0x0002
00000322: JUMP
00000323: JUMPDEST
00000324: PUSH2 0x05d4

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | sed -n '"'520,820p'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
00000324: PUSH2 0x05d4
00000327: PUSH1 0x06
00000329: SLOAD
0000032a: DUP2
0000032b: JUMP
0000032c: JUMPDEST
0000032d: PUSH2 0x05d4
00000330: PUSH1 0x08
00000332: SLOAD
00000333: DUP2
00000334: JUMP
00000335: JUMPDEST
00000336: PUSH2 0x0106
00000339: PUSH1 0x04
0000033b: CALLDATALOAD
0000033c: PUSH1 0x00
0000033e: SLOAD
0000033f: CALLER
00000340: PUSH1 0x01
00000342: PUSH1 0xa0
00000344: PUSH1 0x02
00000346: EXP
00000347: SUB
00000348: SWAP1
00000349: DUP2
0000034a: AND
0000034b: SWAP2
0000034c: AND
0000034d: EQ
0000034e: PUSH2 0x0823
00000351: JUMPI
00000352: PUSH2 0x0002
00000355: JUMP
00000356: JUMPDEST
00000357: PUSH1 0x40
00000359: DUP1
0000035a: MLOAD
0000035b: PUSH1 0x20
0000035d: PUSH1 0x44
0000035f: CALLDATALOAD
00000360: PUSH1 0x04
00000362: DUP2
00000363: DUP2
00000364: ADD
00000365: CALLDATALOAD
00000366: PUSH1 0x1f
00000368: DUP2
00000369: ADD
0000036a: DUP5
0000036b: SWAP1
0000036c: DIV
0000036d: DUP5
0000036e: MUL
0000036f: DUP6
00000370: ADD
00000371: DUP5
00000372: ADD
00000373: SWAP1
00000374: SWAP6
00000375: MSTORE
00000376: DUP5
00000377: DUP5
00000378: MSTORE
00000379: PUSH2 0x05d4
0000037c: SWAP5
0000037d: DUP2
0000037e: CALLDATALOAD
0000037f: SWAP5
00000380: PUSH1 0x24
00000382: DUP1
00000383: CALLDATALOAD
00000384: SWAP6
00000385: SWAP4
00000386: SWAP5
00000387: PUSH1 0x64
00000389: SWAP5
0000038a: SWAP3
0000038b: SWAP4
0000038c: SWAP2
0000038d: ADD
0000038e: SWAP2
0000038f: DUP2
00000390: SWAP1
00000391: DUP5
00000392: ADD
00000393: DUP4
00000394: DUP3
00000395: DUP1
00000396: DUP3
00000397: DUP5
00000398: CALLDATACOPY
00000399: POP
0000039a: SWAP5
0000039b: SWAP7
0000039c: POP
0000039d: POP
0000039e: POP
0000039f: POP
000003a0: POP
000003a1: POP
000003a2: POP
000003a3: PUSH1 0x00
000003a5: PUSH1 0x00
000003a7: DUP4
000003a8: PUSH1 0x0a
000003aa: PUSH1 0x00
000003ac: POP
000003ad: PUSH1 0x00
000003af: CALLER
000003b0: PUSH1 0x01
000003b2: PUSH1 0xa0
000003b4: PUSH1 0x02
000003b6: EXP
000003b7: SUB
000003b8: AND
000003b9: DUP2
000003ba: MSTORE
000003bb: PUSH1 0x20
000003bd: ADD
000003be: SWAP1
000003bf: DUP2
000003c0: MSTORE
000003c1: PUSH1 0x20
000003c3: ADD
000003c4: PUSH1 0x00
000003c6: KECCAK256
000003c7: PUSH1 0x00
000003c9: POP
000003ca: PUSH1 0x00
000003cc: DUP8
000003cd: PUSH1 0x01
000003cf: PUSH1 0xa0
000003d1: PUSH1 0x02
000003d3: EXP
000003d4: SUB
000003d5: AND
000003d6: DUP2
000003d7: MSTORE
000003d8: PUSH1 0x20
000003da: ADD
000003db: SWAP1
000003dc: DUP2
000003dd: MSTORE
000003de: PUSH1 0x20
000003e0: ADD
000003e1: PUSH1 0x00
000003e3: KECCAK256
000003e4: PUSH1 0x00
000003e6: POP
000003e7: DUP2
000003e8: SWAP1
000003e9: SSTORE
000003ea: POP
000003eb: DUP5
000003ec: SWAP1
000003ed: POP
000003ee: DUP1
000003ef: PUSH1 0x01
000003f1: PUSH1 0xa0
000003f3: PUSH1 0x02
000003f5: EXP
000003f6: SUB
000003f7: AND
000003f8: PUSH4 0x8f4ffcb1
000003fd: CALLER
000003fe: DUP7
000003ff: ADDRESS
00000400: DUP8
00000401: PUSH1 0x40
00000403: MLOAD
00000404: DUP6
00000405: PUSH1 0xe0
00000407: PUSH1 0x02
00000409: EXP
0000040a: MUL
0000040b: DUP2
0000040c: MSTORE
0000040d: PUSH1 0x04
0000040f: ADD
00000410: DUP1
00000411: DUP6
00000412: PUSH1 0x01
00000414: PUSH1 0xa0
00000416: PUSH1 0x02
00000418: EXP
00000419: SUB
0000041a: AND
0000041b: DUP2
0000041c: MSTORE
0000041d: PUSH1 0x20
0000041f: ADD
00000420: DUP5
00000421: DUP2
00000422: MSTORE
00000423: PUSH1 0x20
00000425: ADD
00000426: DUP4
00000427: PUSH1 0x01
00000429: PUSH1 0xa0
0000042b: PUSH1 0x02
0000042d: EXP
0000042e: SUB
0000042f: AND
00000430: DUP2
00000431: MSTORE
00000432: PUSH1 0x20
00000434: ADD
00000435: DUP1
00000436: PUSH1 0x20
00000438: ADD
00000439: DUP3
0000043a: DUP2
0000043b: SUB
0000043c: DUP3
0000043d: MSTORE
0000043e: DUP4
0000043f: DUP2
00000440: DUP2
00000441: MLOAD
00000442: DUP2
00000443: MSTORE
00000444: PUSH1 0x20
00000446: ADD
00000447: SWAP2
00000448: POP
00000449: DUP1
0000044a: MLOAD
0000044b: SWAP1
0000044c: PUSH1 0x20
0000044e: ADD
0000044f: SWAP1
00000450: DUP1
00000451: DUP4
00000452: DUP4
00000453: DUP3
00000454: SWAP1
00000455: PUSH1 0x00
00000457: PUSH1 0x04
00000459: PUSH1 0x20
0000045b: DUP5
0000045c: PUSH1 0x1f
0000045e: ADD
0000045f: DIV
00000460: PUSH1 0x0f
00000462: MUL
00000463: PUSH1 0x03
00000465: ADD
00000466: CALL
00000467: POP
00000468: SWAP1
00000469: POP
0000046a: SWAP1
0000046b: DUP2
0000046c: ADD
0000046d: SWAP1
0000046e: PUSH1 0x1f
00000470: AND
00000471: DUP1
00000472: ISZERO
00000473: PUSH2 0x0490
00000476: JUMPI
00000477: DUP1
00000478: DUP3
00000479: SUB
0000047a: DUP1
0000047b: MLOAD
0000047c: PUSH1 0x01
0000047e: DUP4
0000047f: PUSH1 0x20
00000481: SUB
00000482: PUSH2 0x0100
00000485: EXP
00000486: SUB
00000487: NOT
00000488: AND
00000489: DUP2
0000048a: MSTORE
0000048b: PUSH1 0x20
0000048d: ADD
0000048e: SWAP2
0000048f: POP
00000490: JUMPDEST
00000491: POP
00000492: SWAP6
00000493: POP
00000494: POP
00000495: POP
00000496: POP
00000497: POP
00000498: POP
00000499: PUSH1 0x00
0000049b: PUSH1 0x40
0000049d: MLOAD
0000049e: DUP1
0000049f: DUP4
000004a0: SUB
000004a1: DUP2
000004a2: PUSH1 0x00
000004a4: DUP8
000004a5: PUSH2 0x61da
000004a8: GAS

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | sed -n '"'820,1120p'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
000004a8: GAS
000004a9: SUB
000004aa: CALL
000004ab: ISZERO
000004ac: PUSH2 0x0002
000004af: JUMPI
000004b0: POP
000004b1: PUSH1 0x01
000004b3: SWAP8
000004b4: SWAP7
000004b5: POP
000004b6: POP
000004b7: POP
000004b8: POP
000004b9: POP
000004ba: POP
000004bb: POP
000004bc: JUMP
000004bd: JUMPDEST
000004be: PUSH1 0x0b
000004c0: PUSH1 0x20
000004c2: SWAP1
000004c3: DUP2
000004c4: MSTORE
000004c5: PUSH1 0x04
000004c7: CALLDATALOAD
000004c8: PUSH1 0x00
000004ca: SWAP1
000004cb: DUP2
000004cc: MSTORE
000004cd: PUSH1 0x40
000004cf: DUP1
000004d0: DUP3
000004d1: KECCAK256
000004d2: SWAP1
000004d3: SWAP3
000004d4: MSTORE
000004d5: PUSH1 0x24
000004d7: CALLDATALOAD
000004d8: DUP2
000004d9: MSTORE
000004da: KECCAK256
000004db: SLOAD
000004dc: PUSH2 0x05d4
000004df: SWAP1
000004e0: DUP2
000004e1: JUMP
000004e2: JUMPDEST
000004e3: PUSH1 0x0a
000004e5: PUSH1 0x20
000004e7: SWAP1
000004e8: DUP2
000004e9: MSTORE
000004ea: PUSH1 0x04
000004ec: CALLDATALOAD
000004ed: PUSH1 0x00
000004ef: SWAP1
000004f0: DUP2
000004f1: MSTORE
000004f2: PUSH1 0x40
000004f4: DUP1
000004f5: DUP3
000004f6: KECCAK256
000004f7: SWAP1
000004f8: SWAP3
000004f9: MSTORE
000004fa: PUSH1 0x24
000004fc: CALLDATALOAD
000004fd: DUP2
000004fe: MSTORE
000004ff: KECCAK256
00000500: SLOAD
00000501: PUSH2 0x05d4
00000504: SWAP1
00000505: DUP2
00000506: JUMP
00000507: JUMPDEST
00000508: PUSH2 0x05d4
0000050b: PUSH1 0x04
0000050d: CALLDATALOAD
0000050e: CALLER
0000050f: PUSH1 0x01
00000511: PUSH1 0xa0
00000513: PUSH1 0x02
00000515: EXP
00000516: SUB
00000517: AND
00000518: PUSH1 0x00
0000051a: SWAP1
0000051b: DUP2
0000051c: MSTORE
0000051d: PUSH1 0x09
0000051f: PUSH1 0x20
00000521: MSTORE
00000522: PUSH1 0x40
00000524: DUP2
00000525: KECCAK256
00000526: SLOAD
00000527: DUP3
00000528: SWAP1
00000529: LT
0000052a: ISZERO
0000052b: PUSH2 0x0938
0000052e: JUMPI
0000052f: PUSH2 0x0002
00000532: JUMP
00000533: JUMPDEST
00000534: PUSH2 0x0106
00000537: PUSH1 0x04
00000539: CALLDATALOAD
0000053a: PUSH1 0x00
0000053c: SLOAD
0000053d: CALLER
0000053e: PUSH1 0x01
00000540: PUSH1 0xa0
00000542: PUSH1 0x02
00000544: EXP
00000545: SUB
00000546: SWAP1
00000547: DUP2
00000548: AND
00000549: SWAP2
0000054a: AND
0000054b: EQ
0000054c: PUSH2 0x0633
0000054f: JUMPI
00000550: PUSH2 0x0002
00000553: JUMP
00000554: JUMPDEST
00000555: PUSH2 0x0616
00000558: PUSH1 0x05
0000055a: SLOAD
0000055b: PUSH1 0x01
0000055d: PUSH1 0xa0
0000055f: PUSH1 0x02
00000561: EXP
00000562: SUB
00000563: AND
00000564: DUP2
00000565: JUMP
00000566: JUMPDEST
00000567: PUSH1 0x40
00000569: MLOAD
0000056a: DUP1
0000056b: DUP1
0000056c: PUSH1 0x20
0000056e: ADD
0000056f: DUP3
00000570: DUP2
00000571: SUB
00000572: DUP3
00000573: MSTORE
00000574: DUP4
00000575: DUP2
00000576: DUP2
00000577: MLOAD
00000578: DUP2
00000579: MSTORE
0000057a: PUSH1 0x20
0000057c: ADD
0000057d: SWAP2
0000057e: POP
0000057f: DUP1
00000580: MLOAD
00000581: SWAP1
00000582: PUSH1 0x20
00000584: ADD
00000585: SWAP1
00000586: DUP1
00000587: DUP4
00000588: DUP4
00000589: DUP3
0000058a: SWAP1
0000058b: PUSH1 0x00
0000058d: PUSH1 0x04
0000058f: PUSH1 0x20
00000591: DUP5
00000592: PUSH1 0x1f
00000594: ADD
00000595: DIV
00000596: PUSH1 0x0f
00000598: MUL
00000599: PUSH1 0x03
0000059b: ADD
0000059c: CALL
0000059d: POP
0000059e: SWAP1
0000059f: POP
000005a0: SWAP1
000005a1: DUP2
000005a2: ADD
000005a3: SWAP1
000005a4: PUSH1 0x1f
000005a6: AND
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05c6
000005ac: JUMPI
000005ad: DUP1
000005ae: DUP3
000005af: SUB
000005b0: DUP1
000005b1: MLOAD
000005b2: PUSH1 0x01
000005b4: DUP4
000005b5: PUSH1 0x20
000005b7: SUB
000005b8: PUSH2 0x0100
000005bb: EXP
000005bc: SUB
000005bd: NOT
000005be: AND
000005bf: DUP2
000005c0: MSTORE
000005c1: PUSH1 0x20
000005c3: ADD
000005c4: SWAP2
000005c5: POP
000005c6: JUMPDEST
000005c7: POP
000005c8: SWAP3
000005c9: POP
000005ca: POP
000005cb: POP
000005cc: PUSH1 0x40
000005ce: MLOAD
000005cf: DUP1
000005d0: SWAP2
000005d1: SUB
000005d2: SWAP1
000005d3: RETURN
000005d4: JUMPDEST
000005d5: PUSH1 0x40
000005d7: DUP1
000005d8: MLOAD
000005d9: SWAP2
000005da: DUP3
000005db: MSTORE
000005dc: MLOAD
000005dd: SWAP1
000005de: DUP2
000005df: SWAP1
000005e0: SUB
000005e1: PUSH1 0x20
000005e3: ADD
000005e4: SWAP1
000005e5: RETURN
000005e6: JUMPDEST
000005e7: PUSH1 0x40
000005e9: DUP1
000005ea: MLOAD
000005eb: PUSH4 0xffffffff
000005f0: SWAP3
000005f1: SWAP1
000005f2: SWAP3
000005f3: AND
000005f4: DUP3
000005f5: MSTORE
000005f6: MLOAD
000005f7: SWAP1
000005f8: DUP2
000005f9: SWAP1
000005fa: SUB
000005fb: PUSH1 0x20
000005fd: ADD
000005fe: SWAP1
000005ff: RETURN
00000600: JUMPDEST
00000601: PUSH1 0x40
00000603: DUP1
00000604: MLOAD
00000605: PUSH1 0xff
00000607: SWAP1
00000608: SWAP3
00000609: AND
0000060a: DUP3
0000060b: MSTORE
0000060c: MLOAD
0000060d: SWAP1
0000060e: DUP2
0000060f: SWAP1
00000610: SUB
00000611: PUSH1 0x20
00000613: ADD
00000614: SWAP1
00000615: RETURN
00000616: JUMPDEST
00000617: PUSH1 0x40
00000619: DUP1
0000061a: MLOAD
0000061b: PUSH1 0x01
0000061d: PUSH1 0xa0
0000061f: PUSH1 0x02
00000621: EXP
00000622: SUB
00000623: SWAP3
00000624: SWAP1
00000625: SWAP3
00000626: AND
00000627: DUP3
00000628: MSTORE

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | sed -n '"'1120,1420p'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
00000628: MSTORE
00000629: MLOAD
0000062a: SWAP1
0000062b: DUP2
0000062c: SWAP1
0000062d: SUB
0000062e: PUSH1 0x20
00000630: ADD
00000631: SWAP1
00000632: RETURN
00000633: JUMPDEST
00000634: PUSH1 0x00
00000636: DUP1
00000637: SLOAD
00000638: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000064d: NOT
0000064e: AND
0000064f: DUP3
00000650: OR
00000651: SWAP1
00000652: SSTORE
00000653: POP
00000654: JUMP
00000655: JUMPDEST
00000656: DUP3
00000657: ADD
00000658: SWAP2
00000659: SWAP1
0000065a: PUSH1 0x00
0000065c: MSTORE
0000065d: PUSH1 0x20
0000065f: PUSH1 0x00
00000661: KECCAK256
00000662: SWAP1
00000663: JUMPDEST
00000664: DUP2
00000665: SLOAD
00000666: DUP2
00000667: MSTORE
00000668: SWAP1
00000669: PUSH1 0x01
0000066b: ADD
0000066c: SWAP1
0000066d: PUSH1 0x20
0000066f: ADD
00000670: DUP1
00000671: DUP4
00000672: GT
00000673: PUSH2 0x0663
00000676: JUMPI
00000677: DUP3
00000678: SWAP1
00000679: SUB
0000067a: PUSH1 0x1f
0000067c: AND
0000067d: DUP3
0000067e: ADD
0000067f: SWAP2
00000680: JUMPDEST
00000681: POP
00000682: POP
00000683: POP
00000684: POP
00000685: POP
00000686: DUP2
00000687: JUMP
00000688: JUMPDEST
00000689: POP
0000068a: SWAP4
0000068b: SWAP3
0000068c: POP
0000068d: POP
0000068e: POP
0000068f: JUMP
00000690: JUMPDEST
00000691: PUSH1 0x01
00000693: PUSH1 0xa0
00000695: PUSH1 0x02
00000697: EXP
00000698: SUB
00000699: DUP3
0000069a: AND
0000069b: PUSH1 0x00
0000069d: SWAP1
0000069e: DUP2
0000069f: MSTORE
000006a0: PUSH1 0x09
000006a2: PUSH1 0x20
000006a4: MSTORE
000006a5: PUSH1 0x40
000006a7: SWAP1
000006a8: KECCAK256
000006a9: SLOAD
000006aa: DUP2
000006ab: DUP2
000006ac: ADD
000006ad: LT
000006ae: ISZERO
000006af: PUSH2 0x06b7
000006b2: JUMPI
000006b3: PUSH2 0x0002
000006b6: JUMP
000006b7: JUMPDEST
000006b8: CALLER
000006b9: PUSH1 0x01
000006bb: PUSH1 0xa0
000006bd: PUSH1 0x02
000006bf: EXP
000006c0: SUB
000006c1: SWAP1
000006c2: DUP2
000006c3: AND
000006c4: PUSH1 0x00
000006c6: DUP2
000006c7: DUP2
000006c8: MSTORE
000006c9: PUSH1 0x09
000006cb: PUSH1 0x20
000006cd: SWAP1
000006ce: DUP2
000006cf: MSTORE
000006d0: PUSH1 0x40
000006d2: DUP1
000006d3: DUP4
000006d4: KECCAK256
000006d5: DUP1
000006d6: SLOAD
000006d7: DUP8
000006d8: SWAP1
000006d9: SUB
000006da: SWAP1
000006db: SSTORE
000006dc: SWAP4
000006dd: DUP7
000006de: AND
000006df: DUP1
000006e0: DUP4
000006e1: MSTORE
000006e2: SWAP2
000006e3: DUP5
000006e4: SWAP1
000006e5: KECCAK256
000006e6: DUP1
000006e7: SLOAD
000006e8: DUP7
000006e9: ADD
000006ea: SWAP1
000006eb: SSTORE
000006ec: DUP4
000006ed: MLOAD
000006ee: DUP6
000006ef: DUP2
000006f0: MSTORE
000006f1: SWAP4
000006f2: MLOAD
000006f3: SWAP2
000006f4: SWAP4
000006f5: PUSH1 0x00
000006f7: DUP1
000006f8: MLOAD
000006f9: PUSH1 0x20
000006fb: PUSH2 0x09b6
000006fe: DUP4
000006ff: CODECOPY
00000700: DUP2
00000701: MLOAD
00000702: SWAP2
00000703: MSTORE
00000704: SWAP3
00000705: SWAP1
00000706: DUP2
00000707: SWAP1
00000708: SUB
00000709: SWAP1
0000070a: SWAP2
0000070b: ADD
0000070c: SWAP1
0000070d: LOG3
0000070e: POP
0000070f: POP
00000710: JUMP
00000711: JUMPDEST
00000712: PUSH1 0x01
00000714: PUSH1 0xa0
00000716: PUSH1 0x02
00000718: EXP
00000719: SUB
0000071a: DUP4
0000071b: AND
0000071c: PUSH1 0x00
0000071e: SWAP1
0000071f: DUP2
00000720: MSTORE
00000721: PUSH1 0x09
00000723: PUSH1 0x20
00000725: MSTORE
00000726: PUSH1 0x40
00000728: SWAP1
00000729: KECCAK256
0000072a: SLOAD
0000072b: DUP1
0000072c: DUP4
0000072d: ADD
0000072e: LT
0000072f: ISZERO
00000730: PUSH2 0x0738
00000733: JUMPI
00000734: PUSH2 0x0002
00000737: JUMP
00000738: JUMPDEST
00000739: PUSH1 0x01
0000073b: PUSH1 0xa0
0000073d: PUSH1 0x02
0000073f: EXP
00000740: SUB
00000741: DUP5
00000742: DUP2
00000743: AND
00000744: PUSH1 0x00
00000746: DUP2
00000747: DUP2
00000748: MSTORE
00000749: PUSH1 0x0a
0000074b: PUSH1 0x20
0000074d: SWAP1
0000074e: DUP2
0000074f: MSTORE
00000750: PUSH1 0x40
00000752: DUP1
00000753: DUP4
00000754: KECCAK256
00000755: CALLER
00000756: SWAP1
00000757: SWAP6
00000758: AND
00000759: DUP1
0000075a: DUP5
0000075b: MSTORE
0000075c: SWAP5
0000075d: DUP3
0000075e: MSTORE
0000075f: DUP1
00000760: DUP4
00000761: KECCAK256
00000762: SLOAD
00000763: SWAP4
00000764: DUP4
00000765: MSTORE
00000766: PUSH1 0x0b
00000768: DUP3
00000769: MSTORE
0000076a: DUP1
0000076b: DUP4
0000076c: KECCAK256
0000076d: SWAP5
0000076e: DUP4
0000076f: MSTORE
00000770: SWAP4
00000771: SWAP1
00000772: MSTORE
00000773: SWAP2
00000774: SWAP1
00000775: SWAP2
00000776: KECCAK256
00000777: SLOAD
00000778: DUP4
00000779: ADD
0000077a: GT
0000077b: ISZERO
0000077c: PUSH2 0x0784
0000077f: JUMPI
00000780: PUSH2 0x0002
00000783: JUMP
00000784: JUMPDEST
00000785: PUSH1 0x01
00000787: PUSH1 0xa0
00000789: PUSH1 0x02
0000078b: EXP
0000078c: SUB
0000078d: DUP5
0000078e: DUP2
0000078f: AND
00000790: PUSH1 0x00
00000792: DUP2
00000793: DUP2
00000794: MSTORE
00000795: PUSH1 0x09
00000797: PUSH1 0x20
00000799: SWAP1
0000079a: DUP2
0000079b: MSTORE
0000079c: PUSH1 0x40
0000079e: DUP1
0000079f: DUP4
000007a0: KECCAK256
000007a1: DUP1
000007a2: SLOAD
000007a3: DUP9
000007a4: SWAP1
000007a5: SUB
000007a6: SWAP1

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | sed -n '"'1420,1720p'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
000007a6: SWAP1
000007a7: SSTORE
000007a8: DUP8
000007a9: DUP6
000007aa: AND
000007ab: DUP1
000007ac: DUP5
000007ad: MSTORE
000007ae: DUP2
000007af: DUP5
000007b0: KECCAK256
000007b1: DUP1
000007b2: SLOAD
000007b3: DUP10
000007b4: ADD
000007b5: SWAP1
000007b6: SSTORE
000007b7: DUP5
000007b8: DUP5
000007b9: MSTORE
000007ba: PUSH1 0x0b
000007bc: DUP4
000007bd: MSTORE
000007be: DUP2
000007bf: DUP5
000007c0: KECCAK256
000007c1: CALLER
000007c2: SWAP1
000007c3: SWAP7
000007c4: AND
000007c5: DUP5
000007c6: MSTORE
000007c7: SWAP5
000007c8: DUP3
000007c9: MSTORE
000007ca: SWAP2
000007cb: DUP3
000007cc: SWAP1
000007cd: KECCAK256
000007ce: DUP1
000007cf: SLOAD
000007d0: DUP8
000007d1: ADD
000007d2: SWAP1
000007d3: SSTORE
000007d4: DUP2
000007d5: MLOAD
000007d6: DUP7
000007d7: DUP2
000007d8: MSTORE
000007d9: SWAP2
000007da: MLOAD
000007db: PUSH1 0x00
000007dd: DUP1
000007de: MLOAD
000007df: PUSH1 0x20
000007e1: PUSH2 0x09b6
000007e4: DUP4
000007e5: CODECOPY
000007e6: DUP2
000007e7: MLOAD
000007e8: SWAP2
000007e9: MSTORE
000007ea: SWAP3
000007eb: DUP2
000007ec: SWAP1
000007ed: SUB
000007ee: SWAP1
000007ef: SWAP2
000007f0: ADD
000007f1: SWAP1
000007f2: LOG3
000007f3: POP
000007f4: PUSH1 0x01
000007f6: SWAP4
000007f7: SWAP3
000007f8: POP
000007f9: POP
000007fa: POP
000007fb: JUMP
000007fc: JUMPDEST
000007fd: PUSH1 0x06
000007ff: SSTORE
00000800: JUMP
00000801: JUMPDEST
00000802: PUSH1 0x05
00000804: DUP1
00000805: SLOAD
00000806: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000081b: NOT
0000081c: AND
0000081d: DUP3
0000081e: OR
0000081f: SWAP1
00000820: SSTORE
00000821: POP
00000822: JUMP
00000823: JUMPDEST
00000824: PUSH1 0x07
00000826: DUP1
00000827: SLOAD
00000828: PUSH4 0xffffffff
0000082d: NOT
0000082e: AND
0000082f: DUP3
00000830: OR
00000831: SWAP1
00000832: SSTORE
00000833: POP
00000834: JUMP
00000835: JUMPDEST
00000836: PUSH1 0x40
00000838: DUP1
00000839: MLOAD
0000083a: NUMBER
0000083b: DUP2
0000083c: MSTORE
0000083d: TIMESTAMP
0000083e: PUSH1 0x20
00000840: DUP3
00000841: ADD
00000842: MSTORE
00000843: DUP1
00000844: DUP3
00000845: ADD
00000846: DUP7
00000847: SWAP1
00000848: MSTORE
00000849: SWAP1
0000084a: MLOAD
0000084b: SWAP1
0000084c: DUP2
0000084d: SWAP1
0000084e: SUB
0000084f: PUSH1 0x60
00000851: ADD
00000852: SWAP1
00000853: KECCAK256
00000854: PUSH2 0x085e
00000857: SWAP1
00000858: PUSH1 0x0a
0000085a: PUSH2 0x01e7
0000085d: JUMP
0000085e: JUMPDEST
0000085f: PUSH1 0x07
00000861: SLOAD
00000862: SWAP1
00000863: SWAP2
00000864: POP
00000865: PUSH4 0xffffffff
0000086a: AND
0000086b: DUP2
0000086c: LT
0000086d: PUSH2 0x0875
00000870: JUMPI
00000871: PUSH1 0x01
00000873: SWAP3
00000874: POP
00000875: JUMPDEST
00000876: PUSH1 0x07
00000878: SLOAD
00000879: PUSH1 0x00
0000087b: NOT
0000087c: DUP6
0000087d: ADD
0000087e: SWAP3
0000087f: POP
00000880: PUSH4 0xffffffff
00000885: AND
00000886: DUP2
00000887: LT
00000888: ISZERO
00000889: PUSH2 0x0894
0000088c: JUMPI
0000088d: PUSH2 0x4e1e
00000890: DUP5
00000891: MUL
00000892: SWAP3
00000893: POP
00000894: JUMPDEST
00000895: CALLER
00000896: PUSH1 0x01
00000898: PUSH1 0xa0
0000089a: PUSH1 0x02
0000089c: EXP
0000089d: SUB
0000089e: SWAP1
0000089f: DUP2
000008a0: AND
000008a1: PUSH1 0x00
000008a3: DUP2
000008a4: DUP2
000008a5: MSTORE
000008a6: PUSH1 0x09
000008a8: PUSH1 0x20
000008aa: SWAP1
000008ab: DUP2
000008ac: MSTORE
000008ad: PUSH1 0x40
000008af: DUP1
000008b0: DUP4
000008b1: KECCAK256
000008b2: DUP1
000008b3: SLOAD
000008b4: DUP10
000008b5: ADD
000008b6: SWAP1
000008b7: SSTORE
000008b8: PUSH1 0x05
000008ba: SLOAD
000008bb: DUP6
000008bc: AND
000008bd: DUP4
000008be: MSTORE
000008bf: DUP1
000008c0: DUP4
000008c1: KECCAK256
000008c2: DUP1
000008c3: SLOAD
000008c4: DUP9
000008c5: ADD
000008c6: SWAP1
000008c7: SSTORE
000008c8: ADDRESS
000008c9: SWAP1
000008ca: SWAP5
000008cb: AND
000008cc: DUP1
000008cd: DUP4
000008ce: MSTORE
000008cf: SWAP2
000008d0: DUP5
000008d1: SWAP1
000008d2: KECCAK256
000008d3: DUP1
000008d4: SLOAD
000008d5: DUP9
000008d6: DUP9
000008d7: ADD
000008d8: SWAP1
000008d9: SUB
000008da: SWAP1
000008db: SSTORE
000008dc: DUP4
000008dd: MLOAD
000008de: DUP8
000008df: DUP2
000008e0: MSTORE
000008e1: SWAP4
000008e2: MLOAD
000008e3: SWAP3
000008e4: SWAP4
000008e5: SWAP2
000008e6: SWAP3
000008e7: PUSH1 0x00
000008e9: DUP1
000008ea: MLOAD
000008eb: PUSH1 0x20
000008ed: PUSH2 0x09b6
000008f0: DUP4
000008f1: CODECOPY
000008f2: DUP2
000008f3: MLOAD
000008f4: SWAP2
000008f5: MSTORE
000008f6: SWAP3
000008f7: DUP2
000008f8: SWAP1
000008f9: SUB
000008fa: SWAP1
000008fb: SWAP2
000008fc: ADD
000008fd: SWAP1
000008fe: LOG3
000008ff: PUSH1 0x05
00000901: SLOAD
00000902: PUSH1 0x40
00000904: DUP1
00000905: MLOAD
00000906: DUP5
00000907: DUP2
00000908: MSTORE
00000909: SWAP1
0000090a: MLOAD
0000090b: PUSH1 0x01
0000090d: PUSH1 0xa0
0000090f: PUSH1 0x02
00000911: EXP
00000912: SUB
00000913: SWAP3
00000914: DUP4
00000915: AND
00000916: SWAP3
00000917: ADDRESS
00000918: AND
00000919: SWAP2
0000091a: PUSH1 0x00
0000091c: DUP1
0000091d: MLOAD
0000091e: PUSH1 0x20
00000920: PUSH2 0x09b6

exec
/bin/bash -lc 'BYTECODE=$(jq -r '"'.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json); cast disassemble \""'$BYTECODE" | sed -n '"'1720,2020p'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
00000920: PUSH2 0x09b6
00000923: DUP4
00000924: CODECOPY
00000925: DUP2
00000926: MLOAD
00000927: SWAP2
00000928: MSTORE
00000929: SWAP2
0000092a: SWAP1
0000092b: DUP2
0000092c: SWAP1
0000092d: SUB
0000092e: PUSH1 0x20
00000930: ADD
00000931: SWAP1
00000932: LOG3
00000933: POP
00000934: POP
00000935: POP
00000936: SWAP1
00000937: JUMP
00000938: JUMPDEST
00000939: POP
0000093a: ADDRESS
0000093b: PUSH1 0x01
0000093d: PUSH1 0xa0
0000093f: PUSH1 0x02
00000941: EXP
00000942: SUB
00000943: SWAP1
00000944: DUP2
00000945: AND
00000946: PUSH1 0x00
00000948: SWAP1
00000949: DUP2
0000094a: MSTORE
0000094b: PUSH1 0x09
0000094d: PUSH1 0x20
0000094f: MSTORE
00000950: PUSH1 0x40
00000952: DUP1
00000953: DUP3
00000954: KECCAK256
00000955: DUP1
00000956: SLOAD
00000957: DUP6
00000958: ADD
00000959: SWAP1
0000095a: SSTORE
0000095b: CALLER
0000095c: SWAP1
0000095d: SWAP3
0000095e: AND
0000095f: DUP1
00000960: DUP3
00000961: MSTORE
00000962: DUP3
00000963: DUP3
00000964: KECCAK256
00000965: DUP1
00000966: SLOAD
00000967: DUP6
00000968: SWAP1
00000969: SUB
0000096a: SWAP1
0000096b: SSTORE
0000096c: SWAP2
0000096d: MLOAD
0000096e: PUSH1 0x08
00000970: SLOAD
00000971: DUP5
00000972: MUL
00000973: SWAP3
00000974: SWAP2
00000975: SWAP1
00000976: DUP4
00000977: SWAP1
00000978: DUP3
00000979: DUP2
0000097a: DUP2
0000097b: DUP2
0000097c: DUP6
0000097d: DUP9
0000097e: DUP4
0000097f: CALL
00000980: POP
00000981: POP
00000982: PUSH1 0x40
00000984: DUP1
00000985: MLOAD
00000986: DUP7
00000987: DUP2
00000988: MSTORE
00000989: SWAP1
0000098a: MLOAD
0000098b: ADDRESS
0000098c: PUSH1 0x01
0000098e: PUSH1 0xa0
00000990: PUSH1 0x02
00000992: EXP
00000993: SUB
00000994: AND
00000995: SWAP5
00000996: SWAP4
00000997: POP
00000998: PUSH1 0x00
0000099a: DUP1
0000099b: MLOAD
0000099c: PUSH1 0x20
0000099e: PUSH2 0x09b6
000009a1: DUP4
000009a2: CODECOPY
000009a3: DUP2
000009a4: MLOAD
000009a5: SWAP2
000009a6: MSTORE
000009a7: SWAP3
000009a8: POP
000009a9: SWAP1
000009aa: DUP2
000009ab: SWAP1
000009ac: SUB
000009ad: PUSH1 0x20
000009af: ADD
000009b0: SWAP1
000009b1: LOG3
000009b2: SWAP2
000009b3: SWAP1
000009b4: POP
000009b5: JUMP
000009b6: UNKNOWN(0xDD)
000009b7: CALLCODE
000009b8: MSTORE
000009b9: UNKNOWN(0xAD)
000009ba: SHL
000009bb: UNKNOWN(0xE2)
000009bc: UNKNOWN(0xC8)
000009bd: SWAP12
000009be: PUSH10 0xc2b068fc378daa952ba7
000009c9: CALL
000009ca: PUSH4 0xc4a11628
000009cf: CREATE2
000009d0: GAS
000009d1: UNKNOWN(0x4D)
000009d2: CREATE2
000009d3: UNKNOWN(0x23)
000009d4: UNKNOWN(0xB3)
000009d5: UNKNOWN(0xEF)


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

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

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

exec
/bin/bash -lc "jq '.artifact.compiler_json' BYTECODE_BUNDLE.json" in /tmp/codex-n86eu21s
 succeeded in 0ms:
{
  "etherscan": {
    "skipped": true
  }
}

exec
/bin/bash -lc "jq '.artifact.is_proxy, .artifact.implementation_address, .artifact.verified_source' BYTECODE_BUNDLE.json" in /tmp/codex-n86eu21s
 succeeded in 0ms:
false
null
false

exec
/bin/bash -lc "cast sig 'approveAndCall(address,uint256,bytes)' && cast sig 'receiveApproval(address,uint256,address,bytes)' && cast sig 'buy()' && cast sig 'sell(uint256)'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
0xcae9ca51
0x8f4ffcb1
0xa6f2ae3a
0xe4849b32

exec
/bin/bash -lc "cast sig 'price()' && cast sig 'wallet()' && cast sig 'payout()' && cast sig 'jackpot()' && cast sig 'bet()' && cast sig 'maxBet()' && cast sig 'treasury()'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
0xa035b1fe
0x521eb273
0x63bd1d4a
0x6b31ee01
0x11610c25
0x2e5b2168
0x61d027b3

exec
/bin/bash -lc "python3 - <<'PY'
import subprocess, json, re
from collections import defaultdict
import sys
import shlex

# get disassembly
bytecode = subprocess.check_output(\"jq -r '.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json\", shell=True, cwd='/tmp/codex-n86eu21s', text=True).strip()
dis = subprocess.check_output(['bash','-lc', f'cast disassemble {shlex.quote(bytecode)}'], cwd='/tmp/codex-n86eu21s', text=True)
ops = {}
for line in dis.splitlines():
    m = re.match(r'([0-9a-fA-F]{8}):\\s+([A-Z0-9_]+)(?:\\s+(.*))?"'$'"', line)
    if not m: continue
    pc = int(m.group(1),16)
    op = m.group(2)
    arg = m.group(3)
    ops[pc]=(op,arg)

# sequential pc mapping
pcs = sorted(ops)
nextpc = {pcs[i]: (pcs[i+1] if i+1 < len(pcs) else None) for i in range(len(pcs))}

def sym(op,*args):
    return f\"{op}({', '.join(map(str,args))})\"

# stack top at end of list
stack=[]
mem={}
storage={}
pc=0x0507
# path choices: take JUMPI at 052e to 0938
steps=0
while pc is not None and steps<600:
    steps+=1
    op,arg=ops[pc]
    def pop():
        return stack.pop() if stack else 'UNDERFLOW'
    def push(x):
        stack.append(x)
    # print(pc, op, arg, stack)
    if op.startswith('PUSH'):
        push(arg)
    elif op.startswith('DUP'):
        n=int(op[3:])
        push(stack[-n])
    elif op.startswith('SWAP'):
        n=int(op[4:])
        stack[-1], stack[-1-n] = stack[-1-n], stack[-1]
    elif op=='CALLDATALOAD':
        off=pop(); push(f'calldata[{off}]')
    elif op=='CALLER':
        push('caller')
    elif op=='ADDRESS':
        push('this')
    elif op=='CALLVALUE':
        push('callvalue')
    elif op in ('ADD','SUB','MUL','DIV','MOD','EXP','AND','OR','LT','GT','EQ'):
        a=pop(); b=pop(); push(sym(op,b,a))
    elif op=='ISZERO':
        a=pop(); push(sym('ISZERO',a))
    elif op=='NOT':
        a=pop(); push(sym('NOT',a))
    elif op=='MLOAD':
        off=pop(); push(mem.get(off, f'mem[{off}]'))
    elif op=='MSTORE':
        off=pop(); val=pop(); mem[off]=val
    elif op=='SLOAD':
        slot=pop(); push(storage.get(slot, f'storage[{slot}]'))
    elif op=='SSTORE':
        slot=pop(); val=pop(); storage[slot]=val
    elif op=='KECCAK256':
        off=pop(); size=pop(); push(sym('KECCAK', off, size, mem.copy()))
    elif op=='POP':
        pop()
    elif op=='JUMPI':
        dest=pop(); cond=pop()
        if pc==0x052e:
            pc=0x0938
            continue
        elif pc in (0x000a,0x001e,0x0029,0x0034,0x003f,0x004a,0x0055,0x0060,0x006b,0x0076,0x0081,0x008c,0x0097,0x00a2,0x00ad,0x00b8,0x00c3,0x00ce,0x00d9,0x00e4,0x00ef,0x00fa,0x0105):
            # dispatcher not used
            pass
        else:
            print('Unhandled JUMPI at',hex(pc),'dest',dest,'cond',cond); break
    elif op=='JUMP':
        dest=pop()
        print('JUMP to',dest,'from',hex(pc),'stack',stack)
        break
    elif op=='LOG3':
        mstart=pop(); msz=pop(); t1=pop(); t2=pop(); t3=pop();
    elif op=='NUMBER': push('block.number')
    elif op=='TIMESTAMP': push('block.timestamp')
    elif op=='BLOCKHASH': a=pop(); push(sym('BLOCKHASH',a))
    elif op=='CODECOPY':
        dest=pop(); off=pop(); size=pop(); mem[dest]=f'code[{off}:{size}]'
    elif op=='RETURN':
        print('RETURN',stack); break
    elif op=='CALL':
        out_size=pop(); out_off=pop(); in_size=pop(); in_off=pop(); value=pop(); to=pop(); gas=pop();
        print('CALL at',hex(pc), 'gas=',gas,'to=',to,'value=',value,'in_off=',in_off,'in_size=',in_size,'out_off=',out_off,'out_size=',out_size)
        push(f'call_result@{hex(pc)}')
    else:
        print('Unhandled op',op,'at',hex(pc)); break
    pc=nextpc[pc]

print('final stack',stack)
print('mem keys',list(mem.keys())[:10])
print('storage writes',storage)
PY" in /tmp/codex-n86eu21s
 succeeded in 125ms:
Unhandled op JUMPDEST at 0x507
final stack []
mem keys []
storage writes {}

exec
/bin/bash -lc "python3 - <<'PY'
import subprocess, re, shlex
bytecode = subprocess.check_output(\"jq -r '.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json\", shell=True, cwd='/tmp/codex-n86eu21s', text=True).strip()
dis = subprocess.check_output(['bash','-lc', f'cast disassemble {shlex.quote(bytecode)}'], cwd='/tmp/codex-n86eu21s', text=True)
ops = {}
for line in dis.splitlines():
    m = re.match(r'([0-9a-fA-F]{8}):\\s+([A-Z0-9_]+)(?:\\s+(.*))?"'$'"', line)
    if m:
        ops[int(m.group(1),16)] = (m.group(2), m.group(3))
pcs=sorted(ops)
nextpc={pcs[i]: (pcs[i+1] if i+1<len(pcs) else None) for i in range(len(pcs))}

def sym(op,*args): return f\"{op}({', '.join(map(str,args))})\"
stack=[]; mem={}; storage={}; pc=0x0507
for _ in range(800):
    op,arg=ops[pc]
    def pop(): return stack.pop() if stack else 'UNDERFLOW'
    def push(x): stack.append(x)
    #print(hex(pc), op, arg, 'STACK', stack)
    if op=='JUMPDEST':
        pass
    elif op.startswith('PUSH'):
        push(arg)
    elif op.startswith('DUP'):
        push(stack[-int(op[3:])])
    elif op.startswith('SWAP'):
        n=int(op[4:]); stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
    elif op=='CALLDATALOAD': push(f'calldata[{pop()}]')
    elif op=='CALLER': push('caller')
    elif op=='ADDRESS': push('this')
    elif op=='CALLVALUE': push('callvalue')
    elif op in ('ADD','SUB','MUL','DIV','MOD','EXP','AND','OR','LT','GT','EQ'):
        a=pop(); b=pop(); push(sym(op,b,a))
    elif op=='ISZERO': push(sym('ISZERO',pop()))
    elif op=='NOT': push(sym('NOT',pop()))
    elif op=='MLOAD': push(mem.get(pop(), f'mem[{pop}]'))
    elif op=='MSTORE':
        off=pop(); val=pop(); mem[off]=val
    elif op=='SLOAD':
        slot=pop(); push(storage.get(slot, f'storage[{slot}]'))
    elif op=='SSTORE':
        slot=pop(); val=pop(); storage[slot]=val
    elif op=='KECCAK256':
        off=pop(); size=pop(); push(sym('KECCAK', off, size))
    elif op=='POP': pop()
    elif op=='JUMPI':
        dest=pop(); cond=pop()
        if pc==0x052e:
            pc=0x0938; continue
        else:
            # assume fallthrough for others
            pass
    elif op=='JUMP':
        dest=pop(); print('JUMP from',hex(pc),'to',dest); break
    elif op=='LOG3':
        [pop() for __ in range(5)]
    elif op=='NUMBER': push('block.number')
    elif op=='TIMESTAMP': push('block.timestamp')
    elif op=='BLOCKHASH': push(sym('BLOCKHASH',pop()))
    elif op=='CODECOPY':
        dest=pop(); off=pop(); size=pop(); mem[dest]=f'code[{off}:{size}]'
    elif op=='RETURN':
        print('RETURN',stack); break
    elif op=='CALL':
        out_size=pop(); out_off=pop(); in_size=pop(); in_off=pop(); value=pop(); to=pop(); gas=pop();
        print('CALL at',hex(pc), 'gas=',gas,'to=',to,'value=',value,'in_off=',in_off,'in_size=',in_size,'out_off=',out_off,'out_size=',out_size)
        push(f'call_result@{hex(pc)}')
    else:
        print('Unhandled',op,'at',hex(pc)); break
    pc=nextpc[pc]
else:
    print('loop end')
print('FINAL STACK',stack)
print('MEM',mem)
print('STORAGE',storage)
PY" in /tmp/codex-n86eu21s
 succeeded in 0ms:
CALL at 0x97f gas= 0x00 to= mem[<function pop at 0x7f08db166520>] value= 0x00 in_off= mem[<function pop at 0x7f08db166520>] in_size= MUL(storage[0x08], calldata[0x04]) out_off= AND(caller, SUB(0x01, EXP(0xa0, 0x02))) out_size= 0x00
JUMP from 0x9b5 to 0x05d4
FINAL STACK ['MUL(storage[0x08], calldata[0x04])']
MEM {'0x00': 'AND(caller, SUB(0x01, EXP(0xa0, 0x02)))', '0x20': '0x09', 'mem[<function pop at 0x7f08db1659e0>]': 'calldata[0x04]'}
STORAGE {'KECCAK(0x00, 0x40)': 'SUB(calldata[0x04], ADD(storage[KECCAK(0x00, 0x40)], calldata[0x04]))'}

exec
/bin/bash -lc "python3 - <<'PY'
import subprocess, re, shlex
bytecode = subprocess.check_output(\"jq -r '.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json\", shell=True, cwd='/tmp/codex-n86eu21s', text=True).strip()
dis = subprocess.check_output(['bash','-lc', f'cast disassemble {shlex.quote(bytecode)}'], cwd='/tmp/codex-n86eu21s', text=True)
ops={}
for line in dis.splitlines():
    m=re.match(r'([0-9a-fA-F]{8}):\\s+([A-Z0-9_]+)(?:\\s+(.*))?"'$'"', line)
    if m: ops[int(m.group(1),16)]=(m.group(2),m.group(3))
pcs=sorted(ops)
nextpc={pcs[i]: (pcs[i+1] if i+1<len(pcs) else None) for i in range(len(pcs))}

def sym(op,*args): return f\"{op}({', '.join(map(str,args))})\"
stack=[]; mem={}; storage={}; pc=0x0507
for _ in range(500):
    op,arg=ops[pc]
    def pop(): return stack.pop() if stack else 'UNDERFLOW'
    def push(x): stack.append(x)
    if op=='JUMPDEST': pass
    elif op.startswith('PUSH'): push(arg)
    elif op.startswith('DUP'): push(stack[-int(op[3:])])
    elif op.startswith('SWAP'):
        n=int(op[4:]); stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
    elif op=='CALLDATALOAD': off=pop(); push(f'calldata[{off}]')
    elif op=='CALLER': push('caller')
    elif op=='ADDRESS': push('this')
    elif op=='CALLVALUE': push('callvalue')
    elif op in ('ADD','SUB','MUL','DIV','MOD','EXP','AND','OR','LT','GT','EQ'):
        a=pop(); b=pop(); push(sym(op,b,a))
    elif op=='ISZERO': a=pop(); push(sym('ISZERO',a))
    elif op=='NOT': a=pop(); push(sym('NOT',a))
    elif op=='MLOAD': off=pop(); push(mem.get(off, f'mem[{off}]'))
    elif op=='MSTORE': off=pop(); val=pop(); mem[off]=val
    elif op=='SLOAD': slot=pop(); push(storage.get(slot, f'storage[{slot}]'))
    elif op=='SSTORE': slot=pop(); val=pop(); storage[slot]=val
    elif op=='KECCAK256': off=pop(); size=pop(); push(sym('KECCAK',off,size))
    elif op=='POP': pop()
    elif op=='JUMPI':
        dest=pop(); cond=pop();
        if pc==0x052e: pc=0x0938; continue
    elif op=='JUMP':
        print('JUMP',hex(pc),'to',pop()); break
    elif op=='LOG3':
        mstart=pop(); msize=pop(); t1=pop(); t2=pop(); t3=pop();
    elif op=='NUMBER': push('block.number')
    elif op=='TIMESTAMP': push('block.timestamp')
    elif op=='BLOCKHASH': a=pop(); push(sym('BLOCKHASH',a))
    elif op=='CODECOPY': dest=pop(); off=pop(); size=pop(); mem[dest]=f'code[{off}:{size}]'
    elif op=='RETURN': print('RETURN',stack); break
    elif op=='CALL':
        out_size=pop(); out_off=pop(); in_size=pop(); in_off=pop(); value=pop(); to=pop(); gas=pop();
        print('CALL at',hex(pc))
        print(' gas ',gas) ; print(' to ',to); print(' value ',value); print(' in_off ',in_off); print(' in_size ',in_size); print(' out_off ',out_off); print(' out_size ',out_size)
        push(f'call_result@{hex(pc)}')
    else:
        print('Unhandled',op,hex(pc)); break
    pc=nextpc[pc]
print('stack',stack)
print('mem',mem)
print('storage',storage)
PY" in /tmp/codex-n86eu21s
 succeeded in 0ms:
CALL at 0x97f
 gas  0x00
 to  mem[0x40]
 value  0x00
 in_off  mem[0x40]
 in_size  MUL(storage[0x08], calldata[0x04])
 out_off  AND(caller, SUB(0x01, EXP(0xa0, 0x02)))
 out_size  0x00
JUMP 0x9b5 to 0x05d4
stack ['MUL(storage[0x08], calldata[0x04])']
mem {'0x00': 'AND(caller, SUB(0x01, EXP(0xa0, 0x02)))', '0x20': '0x09', 'mem[0x40]': 'calldata[0x04]'}
storage {'KECCAK(0x00, 0x40)': 'SUB(calldata[0x04], ADD(storage[KECCAK(0x00, 0x40)], calldata[0x04]))'}

exec
/bin/bash -lc "python3 - <<'PY'
import subprocess, re, shlex
bytecode = subprocess.check_output(\"jq -r '.. | .runtime_bytecode?.full // empty' BYTECODE_BUNDLE.json\", shell=True, cwd='/tmp/codex-n86eu21s', text=True).strip()
dis = subprocess.check_output(['bash','-lc', f'cast disassemble {shlex.quote(bytecode)}'], cwd='/tmp/codex-n86eu21s', text=True)
ops={}
for line in dis.splitlines():
    m=re.match(r'([0-9a-fA-F]{8}):\\s+([A-Z0-9_]+)(?:\\s+(.*))?"'$'"', line)
    if m: ops[int(m.group(1),16)]=(m.group(2),m.group(3))
pcs=sorted(ops)
nextpc={pcs[i]: (pcs[i+1] if i+1<len(pcs) else None) for i in range(len(pcs))}

def simp(x):
    return {'0x00':'0','0x20':'32','0x40':'64','0x80':'128'}.get(x,x)

def sym(op,*args): return f\"{op}({', '.join(map(str,args))})\"
stack=[]; mem={'0x40':'0x80'}; storage={}; pc=0x0507
for _ in range(500):
    op,arg=ops[pc]
    def pop(): return stack.pop() if stack else 'UNDERFLOW'
    def push(x): stack.append(simp(x))
    if op=='JUMPDEST': pass
    elif op.startswith('PUSH'): push(arg)
    elif op.startswith('DUP'): push(stack[-int(op[3:])])
    elif op.startswith('SWAP'):
        n=int(op[4:]); stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
    elif op=='CALLDATALOAD': off=pop(); push(f'calldata[{off}]')
    elif op=='CALLER': push('caller')
    elif op=='ADDRESS': push('this')
    elif op=='CALLVALUE': push('callvalue')
    elif op in ('ADD','SUB','MUL','DIV','MOD','EXP','AND','OR','LT','GT','EQ'):
        a=pop(); b=pop(); push(sym(op,b,a))
    elif op=='ISZERO': a=pop(); push(sym('ISZERO',a))
    elif op=='NOT': a=pop(); push(sym('NOT',a))
    elif op=='MLOAD': off=pop(); push(mem.get(off, f'mem[{off}]'))
    elif op=='MSTORE': off=pop(); val=pop(); mem[off]=val
    elif op=='SLOAD': slot=pop(); push(storage.get(slot, f'storage[{slot}]'))
    elif op=='SSTORE': slot=pop(); val=pop(); storage[slot]=val
    elif op=='KECCAK256': off=pop(); size=pop(); push(sym('KECCAK',off,size))
    elif op=='POP': pop()
    elif op=='JUMPI':
        dest=pop(); cond=pop();
        if pc==0x052e: pc=0x0938; continue
    elif op=='JUMP':
        print('JUMP',hex(pc),'to',pop()); break
    elif op=='LOG3': [pop() for __ in range(5)]
    elif op=='NUMBER': push('block.number')
    elif op=='TIMESTAMP': push('block.timestamp')
    elif op=='BLOCKHASH': a=pop(); push(sym('BLOCKHASH',a))
    elif op=='CODECOPY': dest=pop(); off=pop(); size=pop(); mem[dest]=f'code[{off}:{size}]'
    elif op=='RETURN': print('RETURN',stack); break
    elif op=='CALL':
        out_size=pop(); out_off=pop(); in_size=pop(); in_off=pop(); value=pop(); to=pop(); gas=pop();
        print('CALL at',hex(pc), {'gas':gas,'to':to,'value':value,'in_off':in_off,'in_size':in_size,'out_off':out_off,'out_size':out_size})
        push(f'call_result@{hex(pc)}')
    else:
        print('Unhandled',op,hex(pc)); break
    pc=nextpc[pc]
print('stack',stack)
print('mem',mem)
print('storage',storage)
PY" in /tmp/codex-n86eu21s
 succeeded in 0ms:
CALL at 0x97f {'gas': '0', 'to': 'mem[64]', 'value': '0', 'in_off': 'mem[64]', 'in_size': 'MUL(storage[0x08], calldata[0x04])', 'out_off': 'AND(caller, SUB(0x01, EXP(0xa0, 0x02)))', 'out_size': '0'}
JUMP 0x9b5 to 0x05d4
stack ['MUL(storage[0x08], calldata[0x04])']
mem {'0x40': '0x80', '0': 'AND(caller, SUB(0x01, EXP(0xa0, 0x02)))', '32': '0x09', 'mem[64]': 'calldata[0x04]'}
storage {'KECCAK(0, 64)': 'SUB(calldata[0x04], ADD(storage[KECCAK(0, 64)], calldata[0x04]))'}

exec
/bin/bash -lc "cast sig 'buyPrice()' && cast sig 'sellPrice()' && cast sig 'setBuyPrice(uint256)' && cast sig 'setSellPrice(uint256)'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
0x8620410b
0x4b750334
0x63ae8d6c
0xfc6634b9

exec
/bin/bash -lc "cast sig 'ownerWallet()' && cast sig 'setOwnerWallet(address)' && cast sig 'jackpotLimit()' && cast sig 'setJackpotLimit(uint32)'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
0x9335dcb7
0xbb542ef0
0x1a23d2a2
0x4617f100

exec
/bin/bash -lc "cast sig 'maxBet()' && cast sig 'setMaxBet(uint256)' && cast sig 'winPercentage()' && cast sig 'setWinPercentage(uint32)' && cast sig 'houseAddress()' && cast sig 'setHouseAddress(address)'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
0x2e5b2168
0x881eff1e
0x01c67203
0xc63d06f1
0xd7cee31e
0xef3aaf54

exec
/bin/bash -lc "cast sig 'threshold()' && cast sig 'setThreshold(uint32)' && cast sig 'bankroll()' && cast sig 'bank()' && cast sig 'setBank(address)' && cast sig 'wallet()' && cast sig 'setWallet(address)'" in /tmp/codex-n86eu21s
 succeeded in 0ms:
0x42cde4e8
0x6693f253
0x0c657eb0
0x76cdb03b
0x090d23b9
0x521eb273
0xdeaa59df

codex
{"no_findings":false,"summary":"Bytecode is not a proxy and I did not see reachable DELEGATECALL. The meaningful issues are a silent-failure payout path in `sell(uint256)` and value-bearing randomness derived from block variables in `buy()`. I treated the generic CALL/CALLCODE detector output conservatively: one CALLCODE is in embedded event-topic data at pc 0x09b7, and the validated CALL targets included the identity precompile and self, so I did not elevate those generic findings by themselves.","findings":[{"severity":"medium","category":"other","title":"`sell(uint256)` updates balances before a low-level payout CALL whose success is ignored","exploit_scenario":"A user calls `sell(uint256)` from an address or contract that causes the payout CALL to fail, or the contract simply lacks funds for the computed payout. The function still updates storage to move/burn the seller's tokens, then discards the CALL result and returns normally. The seller can lose tokens without receiving the expected proceeds, and the contract's economic state diverges from the intended sell-for-value invariant.","recommendation":"Make the payout leg revert on failure: capture the CALL success flag and `require(success)` before keeping the storage writes, or switch to a pull-payment pattern. If external interaction must remain inline, keep checks-effects-interactions and explicitly handle the failure case.","evidence":"Selector `0xe4849b32` matches `sell(uint256)`. After the balance check, execution jumps into the sell handler at pc `0x0938`. That path performs storage writes before the external interaction (`SSTORE` around pc `0x095a` and `0x096b`), computes the payout from `slot8 * amount` at pc `0x0970`-`0x0972`, then executes `CALL` at pc `0x097f`. The very next instruction is `POP` at pc `0x0980`, with no conditional branch or revert on failure. The exact CALL target is stack-computed and not fully recoverable from bytecode alone, but this is the payout leg of `sell(uint256)`.","locations":["selector:0xe4849b32","pc:0x0938","pc:0x095a","pc:0x096b","pc:0x097f","pc:0x0980"]},{"severity":"medium","category":"oracle","title":"`buy()` uses miner/validator-influenced block data as entropy for value-bearing outcomes","exploit_scenario":"A validator, builder, or sophisticated searcher can bias or selectively include `buy()` transactions when the derived random branch is favorable. Because the outcome depends on `block.number`, `block.timestamp`, historical `BLOCKHASH`, and `msg.value`, the randomness is not unpredictable for an adversary controlling inclusion or timestamp within normal protocol bounds. If this branch controls token rewards or jackpot-like payouts, the game can be systematically biased.","recommendation":"Do not derive value-bearing randomness from block variables alone. Use a commit-reveal flow, an external VRF, or another scheme where the party deciding inclusion cannot cheaply bias the result.","evidence":"Selector `0xa6f2ae3a` matches `buy()`. In the buy path, pc `0x083a` loads `NUMBER` and pc `0x083d` loads `TIMESTAMP`; the code then hashes these values and jumps into the helper at pc `0x01e7`, which invokes `BLOCKHASH` at pc `0x0201` and reduces the result modulo 10 at pc `0x0216`-`0x0219`. The resulting value is compared against the owner-settable threshold in `slot7` at pc `0x085f`-`0x086d` and again around pc `0x0876`-`0x0894`, and that branch feeds subsequent balance updates. This is classic weak entropy from block data rather than an unbiased randomness source.","locations":["selector:0xa6f2ae3a","pc:0x083a","pc:0x083d","pc:0x01e7","pc:0x0201","pc:0x0219","pc:0x085f","pc:0x0894"]}]}
tokens used
100,095
Metadata
{
    "codex": {
        "ran_at": "2026-04-05T06:40:17.406289+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 5038,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode is not a proxy and I did not see reachable DELEGATECALL. The meaningful issues are a silent-failure payout path in `sell(uint256)` and value-bearing randomness derived from block variables in `buy()`. I treated the generic CALL/CALLCODE detector output conservatively: one CALLCODE is in embedded event-topic data at pc 0x09b7, and the validated CALL targets included the identity precompile and self, so I did not elevate those generic findings by themselves.",
    "raw_final": {
        "summary": "Bytecode is not a proxy and I did not see reachable DELEGATECALL. The meaningful issues are a silent-failure payout path in `sell(uint256)` and value-bearing randomness derived from block variables in `buy()`. I treated the generic CALL/CALLCODE detector output conservatively: one CALLCODE is in embedded event-topic data at pc 0x09b7, and the validated CALL targets included the identity precompile and self, so I did not elevate those generic findings by themselves.",
        "findings": [
            {
                "title": "`sell(uint256)` updates balances before a low-level payout CALL whose success is ignored",
                "category": "other",
                "evidence": "Selector `0xe4849b32` matches `sell(uint256)`. After the balance check, execution jumps into the sell handler at pc `0x0938`. That path performs storage writes before the external interaction (`SSTORE` around pc `0x095a` and `0x096b`), computes the payout from `slot8 * amount` at pc `0x0970`-`0x0972`, then executes `CALL` at pc `0x097f`. The very next instruction is `POP` at pc `0x0980`, with no conditional branch or revert on failure. The exact CALL target is stack-computed and not fully recoverable from bytecode alone, but this is the payout leg of `sell(uint256)`.",
                "severity": "medium",
                "locations": [
                    "selector:0xe4849b32",
                    "pc:0x0938",
                    "pc:0x095a",
                    "pc:0x096b",
                    "pc:0x097f",
                    "pc:0x0980"
                ],
                "recommendation": "Make the payout leg revert on failure: capture the CALL success flag and `require(success)` before keeping the storage writes, or switch to a pull-payment pattern. If external interaction must remain inline, keep checks-effects-interactions and explicitly handle the failure case.",
                "exploit_scenario": "A user calls `sell(uint256)` from an address or contract that causes the payout CALL to fail, or the contract simply lacks funds for the computed payout. The function still updates storage to move/burn the seller's tokens, then discards the CALL result and returns normally. The seller can lose tokens without receiving the expected proceeds, and the contract's economic state diverges from the intended sell-for-value invariant."
            },
            {
                "title": "`buy()` uses miner/validator-influenced block data as entropy for value-bearing outcomes",
                "category": "oracle",
                "evidence": "Selector `0xa6f2ae3a` matches `buy()`. In the buy path, pc `0x083a` loads `NUMBER` and pc `0x083d` loads `TIMESTAMP`; the code then hashes these values and jumps into the helper at pc `0x01e7`, which invokes `BLOCKHASH` at pc `0x0201` and reduces the result modulo 10 at pc `0x0216`-`0x0219`. The resulting value is compared against the owner-settable threshold in `slot7` at pc `0x085f`-`0x086d` and again around pc `0x0876`-`0x0894`, and that branch feeds subsequent balance updates. This is classic weak entropy from block data rather than an unbiased randomness source.",
                "severity": "medium",
                "locations": [
                    "selector:0xa6f2ae3a",
                    "pc:0x083a",
                    "pc:0x083d",
                    "pc:0x01e7",
                    "pc:0x0201",
                    "pc:0x0219",
                    "pc:0x085f",
                    "pc:0x0894"
                ],
                "recommendation": "Do not derive value-bearing randomness from block variables alone. Use a commit-reveal flow, an external VRF, or another scheme where the party deciding inclusion cannot cheaply bias the result.",
                "exploit_scenario": "A validator, builder, or sophisticated searcher can bias or selectively include `buy()` transactions when the derived random branch is favorable. Because the outcome depends on `block.number`, `block.timestamp`, historical `BLOCKHASH`, and `msg.value`, the randomness is not unpredictable for an adversary controlling inclusion or timestamp within normal protocol bounds. If this branch controls token rewards or jackpot-like payouts, the game can be systematically biased."
            }
        ],
        "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
1867
Flags
create_opcodes_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0106
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x06fdde03
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x0108
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x18160ddd
00000025: EQ
00000026: PUSH2 0x0165
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x1fe9eabc
00000030: EQ
00000031: PUSH2 0x016e
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0x233de126
0000003b: EQ
0000003c: PUSH2 0x0190
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x23b872dd
00000046: EQ
00000047: PUSH2 0x019f
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x313ce567
00000051: EQ
00000052: PUSH2 0x01d1
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x41fa4876
0000005c: EQ
0000005d: PUSH2 0x01dd
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x70a08231
00000067: EQ
00000068: PUSH2 0x0233
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x7f2a8a80
00000072: EQ
00000073: PUSH2 0x024b
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0x8da5cb5b
0000007d: EQ
0000007e: PUSH2 0x026c
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x95d89b41
00000088: EQ
00000089: PUSH2 0x027e
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xa6f2ae3a
00000093: EQ
00000094: PUSH2 0x02d9
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xa9059cbb
0000009e: EQ
0000009f: PUSH2 0x02f4
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xaa295de9
000000a9: EQ
000000aa: PUSH2 0x0323
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xbc094049
000000b4: EQ
000000b5: PUSH2 0x032c
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0xc4839e8b
000000bf: EQ
000000c0: PUSH2 0x0335
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0xcae9ca51
000000ca: EQ
000000cb: PUSH2 0x0356
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0xdc3080f2
000000d5: EQ
000000d6: PUSH2 0x04bd
000000d9: JUMPI
000000da: DUP1
000000db: PUSH4 0xdd62ed3e
000000e0: EQ
000000e1: PUSH2 0x04e2
000000e4: JUMPI
000000e5: DUP1
000000e6: PUSH4 0xe4849b32
000000eb: EQ
000000ec: PUSH2 0x0507
000000ef: JUMPI
000000f0: DUP1
000000f1: PUSH4 0xf2fde38b
000000f6: EQ
000000f7: PUSH2 0x0533
000000fa: JUMPI
000000fb: DUP1
000000fc: PUSH4 0xff9b3acf
00000101: EQ
00000102: PUSH2 0x0554
00000105: JUMPI
00000106: JUMPDEST
00000107: STOP
00000108: JUMPDEST
00000109: PUSH1 0x40
0000010b: DUP1
0000010c: MLOAD
0000010d: PUSH1 0x01
0000010f: DUP1
00000110: SLOAD
00000111: PUSH1 0x20
00000113: PUSH1 0x02
00000115: DUP3
00000116: DUP5
00000117: AND
00000118: ISZERO
00000119: PUSH2 0x0100
0000011c: MUL
0000011d: PUSH1 0x00
0000011f: NOT
00000120: ADD
00000121: SWAP1
00000122: SWAP3
00000123: AND
00000124: SWAP2
00000125: SWAP1
00000126: SWAP2
00000127: DIV
00000128: PUSH1 0x1f
0000012a: DUP2
0000012b: ADD
0000012c: DUP3
0000012d: SWAP1
0000012e: DIV
0000012f: DUP3
00000130: MUL
00000131: DUP5
00000132: ADD
00000133: DUP3
00000134: ADD
00000135: SWAP1
00000136: SWAP5
00000137: MSTORE
00000138: DUP4
00000139: DUP4
0000013a: MSTORE
0000013b: PUSH2 0x0566
0000013e: SWAP4
0000013f: SWAP1
00000140: DUP4
00000141: ADD
00000142: DUP3
00000143: DUP3
00000144: DUP1
00000145: ISZERO
00000146: PUSH2 0x0680
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH1 0x1f
0000014d: LT
0000014e: PUSH2 0x0655
00000151: JUMPI
00000152: PUSH2 0x0100
00000155: DUP1
00000156: DUP4
00000157: SLOAD
00000158: DIV
00000159: MUL
0000015a: DUP4
0000015b: MSTORE
0000015c: SWAP2
0000015d: PUSH1 0x20
0000015f: ADD
00000160: SWAP2
00000161: PUSH2 0x0680
00000164: JUMP
00000165: JUMPDEST
00000166: PUSH2 0x05d4
00000169: PUSH1 0x04
0000016b: SLOAD
0000016c: DUP2
0000016d: JUMP
0000016e: JUMPDEST
0000016f: PUSH2 0x0106
00000172: PUSH1 0x04
00000174: CALLDATALOAD
00000175: PUSH1 0x00
00000177: SLOAD
00000178: PUSH1 0x01
0000017a: PUSH1 0xa0
0000017c: PUSH1 0x02
0000017e: EXP
0000017f: SUB
00000180: SWAP1
00000181: DUP2
00000182: AND
00000183: CALLER
00000184: SWAP1
00000185: SWAP2
00000186: AND
00000187: EQ
00000188: PUSH2 0x07fc
0000018b: JUMPI
0000018c: PUSH2 0x0002
0000018f: JUMP
00000190: JUMPDEST
00000191: PUSH2 0x05e6
00000194: PUSH1 0x07
00000196: SLOAD
00000197: PUSH4 0xffffffff
0000019c: AND
0000019d: DUP2
0000019e: JUMP
0000019f: JUMPDEST
000001a0: PUSH2 0x05d4
000001a3: PUSH1 0x04
000001a5: CALLDATALOAD
000001a6: PUSH1 0x24
000001a8: CALLDATALOAD
000001a9: PUSH1 0x44
000001ab: CALLDATALOAD
000001ac: PUSH1 0x01
000001ae: PUSH1 0xa0
000001b0: PUSH1 0x02
000001b2: EXP
000001b3: SUB
000001b4: DUP4
000001b5: AND
000001b6: PUSH1 0x00
000001b8: SWAP1
000001b9: DUP2
000001ba: MSTORE
000001bb: PUSH1 0x09
000001bd: PUSH1 0x20
000001bf: MSTORE
000001c0: PUSH1 0x40
000001c2: DUP2
000001c3: KECCAK256
000001c4: SLOAD
000001c5: DUP3
000001c6: SWAP1
000001c7: LT
000001c8: ISZERO
000001c9: PUSH2 0x0711
000001cc: JUMPI
000001cd: PUSH2 0x0002
000001d0: JUMP
000001d1: JUMPDEST
000001d2: PUSH2 0x0600
000001d5: PUSH1 0x03
000001d7: SLOAD
000001d8: PUSH1 0xff
000001da: AND
000001db: DUP2
000001dc: JUMP
000001dd: JUMPDEST
000001de: PUSH2 0x05d4
000001e1: PUSH1 0x04
000001e3: CALLDATALOAD
000001e4: PUSH1 0x24
000001e6: CALLDATALOAD
000001e7: JUMPDEST
000001e8: PUSH1 0x00
000001ea: DUP1
000001eb: DUP1
000001ec: JUMPDEST
000001ed: DUP4
000001ee: DUP2
000001ef: LT
000001f0: ISZERO
000001f1: PUSH2 0x0688
000001f4: JUMPI
000001f5: PUSH1 0x40
000001f7: DUP1
000001f8: MLOAD
000001f9: NUMBER
000001fa: DUP4
000001fb: SWAP1
000001fc: SUB
000001fd: PUSH1 0x00
000001ff: NOT
00000200: ADD
00000201: BLOCKHASH
00000202: DUP2
00000203: MSTORE
00000204: PUSH1 0x20
00000206: DUP2
00000207: ADD
00000208: DUP8
00000209: SWAP1
0000020a: MSTORE
0000020b: DUP2
0000020c: MLOAD
0000020d: SWAP1
0000020e: DUP2
0000020f: SWAP1
00000210: SUB
00000211: SWAP1
00000212: SWAP2
00000213: ADD
00000214: SWAP1
00000215: KECCAK256
00000216: PUSH1 0x02
00000218: SWAP1
00000219: MOD
0000021a: PUSH1 0x00
0000021c: EQ
0000021d: ISZERO
0000021e: PUSH2 0x022b
00000221: JUMPI
00000222: PUSH1 0x02
00000224: DUP2
00000225: SWAP1
00000226: EXP
00000227: SWAP1
00000228: SWAP2
00000229: ADD
0000022a: SWAP1
0000022b: JUMPDEST
0000022c: PUSH1 0x01
0000022e: ADD
0000022f: PUSH2 0x01ec
00000232: JUMP
00000233: JUMPDEST
00000234: PUSH2 0x05d4
00000237: PUSH1 0x04
00000239: CALLDATALOAD
0000023a: PUSH1 0x09
0000023c: PUSH1 0x20
0000023e: MSTORE
0000023f: PUSH1 0x00
00000241: SWAP1
00000242: DUP2
00000243: MSTORE
00000244: PUSH1 0x40
00000246: SWAP1
00000247: KECCAK256
00000248: SLOAD
00000249: DUP2
0000024a: JUMP
0000024b: JUMPDEST
0000024c: PUSH2 0x0106
0000024f: PUSH1 0x04
00000251: CALLDATALOAD
00000252: PUSH1 0x00
00000254: SLOAD
00000255: CALLER
00000256: PUSH1 0x01
00000258: PUSH1 0xa0
0000025a: PUSH1 0x02
0000025c: EXP
0000025d: SUB
0000025e: SWAP1
0000025f: DUP2
00000260: AND
00000261: SWAP2
00000262: AND
00000263: EQ
00000264: PUSH2 0x0801
00000267: JUMPI
00000268: PUSH2 0x0002
0000026b: JUMP
0000026c: JUMPDEST
0000026d: PUSH2 0x0616
00000270: PUSH1 0x00
00000272: SLOAD
00000273: PUSH1 0x01
00000275: PUSH1 0xa0
00000277: PUSH1 0x02
00000279: EXP
0000027a: SUB
0000027b: AND
0000027c: DUP2
0000027d: JUMP
0000027e: JUMPDEST
0000027f: PUSH2 0x0566
00000282: PUSH1 0x02
00000284: DUP1
00000285: SLOAD
00000286: PUSH1 0x40
00000288: DUP1
00000289: MLOAD
0000028a: PUSH1 0x20
0000028c: PUSH1 0x01
0000028e: DUP5
0000028f: AND
00000290: ISZERO
00000291: PUSH2 0x0100
00000294: MUL
00000295: PUSH1 0x00
00000297: NOT
00000298: ADD
00000299: SWAP1
0000029a: SWAP4
0000029b: AND
0000029c: DUP5
0000029d: SWAP1
0000029e: DIV
0000029f: PUSH1 0x1f
000002a1: DUP2
000002a2: ADD
000002a3: DUP5
000002a4: SWAP1
000002a5: DIV
000002a6: DUP5
000002a7: MUL
000002a8: DUP3
000002a9: ADD
000002aa: DUP5
000002ab: ADD
000002ac: SWAP1
000002ad: SWAP3
000002ae: MSTORE
000002af: DUP2
000002b0: DUP2
000002b1: MSTORE
000002b2: SWAP3
000002b3: SWAP2
000002b4: DUP4
000002b5: ADD
000002b6: DUP3
000002b7: DUP3
000002b8: DUP1
000002b9: ISZERO
000002ba: PUSH2 0x0680
000002bd: JUMPI
000002be: DUP1
000002bf: PUSH1 0x1f
000002c1: LT
000002c2: PUSH2 0x0655
000002c5: JUMPI
000002c6: PUSH2 0x0100
000002c9: DUP1
000002ca: DUP4
000002cb: SLOAD
000002cc: DIV
000002cd: MUL
000002ce: DUP4
000002cf: MSTORE
000002d0: SWAP2
000002d1: PUSH1 0x20
000002d3: ADD
000002d4: SWAP2
000002d5: PUSH2 0x0680
000002d8: JUMP
000002d9: JUMPDEST
000002da: PUSH2 0x05d4
000002dd: PUSH1 0x06
000002df: SLOAD
000002e0: CALLVALUE
000002e1: SWAP1
000002e2: PUSH1 0x00
000002e4: SWAP1
000002e5: DUP2
000002e6: SWAP1
000002e7: DUP2
000002e8: SWAP1
000002e9: DUP5
000002ea: GT
000002eb: ISZERO
000002ec: PUSH2 0x0835
000002ef: JUMPI
000002f0: PUSH2 0x0002
000002f3: JUMP
000002f4: JUMPDEST
000002f5: PUSH2 0x0106
000002f8: PUSH1 0x04
000002fa: CALLDATALOAD
000002fb: PUSH1 0x24
000002fd: CALLDATALOAD
000002fe: CALLER
000002ff: PUSH1 0x01
00000301: PUSH1 0xa0
00000303: PUSH1 0x02
00000305: EXP
00000306: SUB
00000307: AND
00000308: PUSH1 0x00
0000030a: SWAP1
0000030b: DUP2
0000030c: MSTORE
0000030d: PUSH1 0x09
0000030f: PUSH1 0x20
00000311: MSTORE
00000312: PUSH1 0x40
00000314: SWAP1
00000315: KECCAK256
00000316: SLOAD
00000317: DUP2
00000318: SWAP1
00000319: LT
0000031a: ISZERO
0000031b: PUSH2 0x0690
0000031e: JUMPI
0000031f: PUSH2 0x0002
00000322: JUMP
00000323: JUMPDEST
00000324: PUSH2 0x05d4
00000327: PUSH1 0x06
00000329: SLOAD
0000032a: DUP2
0000032b: JUMP
0000032c: JUMPDEST
0000032d: PUSH2 0x05d4
00000330: PUSH1 0x08
00000332: SLOAD
00000333: DUP2
00000334: JUMP
00000335: JUMPDEST
00000336: PUSH2 0x0106
00000339: PUSH1 0x04
0000033b: CALLDATALOAD
0000033c: PUSH1 0x00
0000033e: SLOAD
0000033f: CALLER
00000340: PUSH1 0x01
00000342: PUSH1 0xa0
00000344: PUSH1 0x02
00000346: EXP
00000347: SUB
00000348: SWAP1
00000349: DUP2
0000034a: AND
0000034b: SWAP2
0000034c: AND
0000034d: EQ
0000034e: PUSH2 0x0823
00000351: JUMPI
00000352: PUSH2 0x0002
00000355: JUMP
00000356: JUMPDEST
00000357: PUSH1 0x40
00000359: DUP1
0000035a: MLOAD
0000035b: PUSH1 0x20
0000035d: PUSH1 0x44
0000035f: CALLDATALOAD
00000360: PUSH1 0x04
00000362: DUP2
00000363: DUP2
00000364: ADD
00000365: CALLDATALOAD
00000366: PUSH1 0x1f
00000368: DUP2
00000369: ADD
0000036a: DUP5
0000036b: SWAP1
0000036c: DIV
0000036d: DUP5
0000036e: MUL
0000036f: DUP6
00000370: ADD
00000371: DUP5
00000372: ADD
00000373: SWAP1
00000374: SWAP6
00000375: MSTORE
00000376: DUP5
00000377: DUP5
00000378: MSTORE
00000379: PUSH2 0x05d4
0000037c: SWAP5
0000037d: DUP2
0000037e: CALLDATALOAD
0000037f: SWAP5
00000380: PUSH1 0x24
00000382: DUP1
00000383: CALLDATALOAD
00000384: SWAP6
00000385: SWAP4
00000386: SWAP5
00000387: PUSH1 0x64
00000389: SWAP5
0000038a: SWAP3
0000038b: SWAP4
0000038c: SWAP2
0000038d: ADD
0000038e: SWAP2
0000038f: DUP2
00000390: SWAP1
00000391: DUP5
00000392: ADD
00000393: DUP4
00000394: DUP3
00000395: DUP1
00000396: DUP3
00000397: DUP5
00000398: CALLDATACOPY
00000399: POP
0000039a: SWAP5
0000039b: SWAP7
0000039c: POP
0000039d: POP
0000039e: POP
0000039f: POP
000003a0: POP
000003a1: POP
000003a2: POP
000003a3: PUSH1 0x00
000003a5: PUSH1 0x00
000003a7: DUP4
000003a8: PUSH1 0x0a
000003aa: PUSH1 0x00
000003ac: POP
000003ad: PUSH1 0x00
000003af: CALLER
000003b0: PUSH1 0x01
000003b2: PUSH1 0xa0
000003b4: PUSH1 0x02
000003b6: EXP
000003b7: SUB
000003b8: AND
000003b9: DUP2
000003ba: MSTORE
000003bb: PUSH1 0x20
000003bd: ADD
000003be: SWAP1
000003bf: DUP2
000003c0: MSTORE
000003c1: PUSH1 0x20
000003c3: ADD
000003c4: PUSH1 0x00
000003c6: KECCAK256
000003c7: PUSH1 0x00
000003c9: POP
000003ca: PUSH1 0x00
000003cc: DUP8
000003cd: PUSH1 0x01
000003cf: PUSH1 0xa0
000003d1: PUSH1 0x02
000003d3: EXP
000003d4: SUB
000003d5: AND
000003d6: DUP2
000003d7: MSTORE
000003d8: PUSH1 0x20
000003da: ADD
000003db: SWAP1
000003dc: DUP2
000003dd: MSTORE
000003de: PUSH1 0x20
000003e0: ADD
000003e1: PUSH1 0x00
000003e3: KECCAK256
000003e4: PUSH1 0x00
000003e6: POP
000003e7: DUP2
000003e8: SWAP1
000003e9: SSTORE
000003ea: POP
000003eb: DUP5
000003ec: SWAP1
000003ed: POP
000003ee: DUP1
000003ef: PUSH1 0x01
000003f1: PUSH1 0xa0
000003f3: PUSH1 0x02
000003f5: EXP
000003f6: SUB
000003f7: AND
000003f8: PUSH4 0x8f4ffcb1
000003fd: CALLER
000003fe: DUP7
000003ff: ADDRESS
00000400: DUP8
00000401: PUSH1 0x40
00000403: MLOAD
00000404: DUP6
00000405: PUSH1 0xe0
00000407: PUSH1 0x02
00000409: EXP
0000040a: MUL
0000040b: DUP2
0000040c: MSTORE
0000040d: PUSH1 0x04
0000040f: ADD
00000410: DUP1
00000411: DUP6
00000412: PUSH1 0x01
00000414: PUSH1 0xa0
00000416: PUSH1 0x02
00000418: EXP
00000419: SUB
0000041a: AND
0000041b: DUP2
0000041c: MSTORE
0000041d: PUSH1 0x20
0000041f: ADD
00000420: DUP5
00000421: DUP2
00000422: MSTORE
00000423: PUSH1 0x20
00000425: ADD
00000426: DUP4
00000427: PUSH1 0x01
00000429: PUSH1 0xa0
0000042b: PUSH1 0x02
0000042d: EXP
0000042e: SUB
0000042f: AND
00000430: DUP2
00000431: MSTORE
00000432: PUSH1 0x20
00000434: ADD
00000435: DUP1
00000436: PUSH1 0x20
00000438: ADD
00000439: DUP3
0000043a: DUP2
0000043b: SUB
0000043c: DUP3
0000043d: MSTORE
0000043e: DUP4
0000043f: DUP2
00000440: DUP2
00000441: MLOAD
00000442: DUP2
00000443: MSTORE
00000444: PUSH1 0x20
00000446: ADD
00000447: SWAP2
00000448: POP
00000449: DUP1
0000044a: MLOAD
0000044b: SWAP1
0000044c: PUSH1 0x20
0000044e: ADD
0000044f: SWAP1
00000450: DUP1
00000451: DUP4
00000452: DUP4
00000453: DUP3
00000454: SWAP1
00000455: PUSH1 0x00
00000457: PUSH1 0x04
00000459: PUSH1 0x20
0000045b: DUP5
0000045c: PUSH1 0x1f
0000045e: ADD
0000045f: DIV
00000460: PUSH1 0x0f
00000462: MUL
00000463: PUSH1 0x03
00000465: ADD
00000466: CALL
00000467: POP
00000468: SWAP1
00000469: POP
0000046a: SWAP1
0000046b: DUP2
0000046c: ADD
0000046d: SWAP1
0000046e: PUSH1 0x1f
00000470: AND
00000471: DUP1
00000472: ISZERO
00000473: PUSH2 0x0490
00000476: JUMPI
00000477: DUP1
00000478: DUP3
00000479: SUB
0000047a: DUP1
0000047b: MLOAD
0000047c: PUSH1 0x01
0000047e: DUP4
0000047f: PUSH1 0x20
00000481: SUB
00000482: PUSH2 0x0100
00000485: EXP
00000486: SUB
00000487: NOT
00000488: AND
00000489: DUP2
0000048a: MSTORE
0000048b: PUSH1 0x20
0000048d: ADD
0000048e: SWAP2
0000048f: POP
00000490: JUMPDEST
00000491: POP
00000492: SWAP6
00000493: POP
00000494: POP
00000495: POP
00000496: POP
00000497: POP
00000498: POP
00000499: PUSH1 0x00
0000049b: PUSH1 0x40
0000049d: MLOAD
0000049e: DUP1
0000049f: DUP4
000004a0: SUB
000004a1: DUP2
000004a2: PUSH1 0x00
000004a4: DUP8
000004a5: PUSH2 0x61da
000004a8: GAS
000004a9: SUB
000004aa: CALL
000004ab: ISZERO
000004ac: PUSH2 0x0002
000004af: JUMPI
000004b0: POP
000004b1: PUSH1 0x01
000004b3: SWAP8
000004b4: SWAP7
000004b5: POP
000004b6: POP
000004b7: POP
000004b8: POP
000004b9: POP
000004ba: POP
000004bb: POP
000004bc: JUMP
000004bd: JUMPDEST
000004be: PUSH1 0x0b
000004c0: PUSH1 0x20
000004c2: SWAP1
000004c3: DUP2
000004c4: MSTORE
000004c5: PUSH1 0x04
000004c7: CALLDATALOAD
000004c8: PUSH1 0x00
000004ca: SWAP1
000004cb: DUP2
000004cc: MSTORE
000004cd: PUSH1 0x40
000004cf: DUP1
000004d0: DUP3
000004d1: KECCAK256
000004d2: SWAP1
000004d3: SWAP3
000004d4: MSTORE
000004d5: PUSH1 0x24
000004d7: CALLDATALOAD
000004d8: DUP2
000004d9: MSTORE
000004da: KECCAK256
000004db: SLOAD
000004dc: PUSH2 0x05d4
000004df: SWAP1
000004e0: DUP2
000004e1: JUMP
000004e2: JUMPDEST
000004e3: PUSH1 0x0a
000004e5: PUSH1 0x20
000004e7: SWAP1
000004e8: DUP2
000004e9: MSTORE
000004ea: PUSH1 0x04
000004ec: CALLDATALOAD
000004ed: PUSH1 0x00
000004ef: SWAP1
000004f0: DUP2
000004f1: MSTORE
000004f2: PUSH1 0x40
000004f4: DUP1
000004f5: DUP3
000004f6: KECCAK256
000004f7: SWAP1
000004f8: SWAP3
000004f9: MSTORE
000004fa: PUSH1 0x24
000004fc: CALLDATALOAD
000004fd: DUP2
000004fe: MSTORE
000004ff: KECCAK256
00000500: SLOAD
00000501: PUSH2 0x05d4
00000504: SWAP1
00000505: DUP2
00000506: JUMP
00000507: JUMPDEST
00000508: PUSH2 0x05d4
0000050b: PUSH1 0x04
0000050d: CALLDATALOAD
0000050e: CALLER
0000050f: PUSH1 0x01
00000511: PUSH1 0xa0
00000513: PUSH1 0x02
00000515: EXP
00000516: SUB
00000517: AND
00000518: PUSH1 0x00
0000051a: SWAP1
0000051b: DUP2
0000051c: MSTORE
0000051d: PUSH1 0x09
0000051f: PUSH1 0x20
00000521: MSTORE
00000522: PUSH1 0x40
00000524: DUP2
00000525: KECCAK256
00000526: SLOAD
00000527: DUP3
00000528: SWAP1
00000529: LT
0000052a: ISZERO
0000052b: PUSH2 0x0938
0000052e: JUMPI
0000052f: PUSH2 0x0002
00000532: JUMP
00000533: JUMPDEST
00000534: PUSH2 0x0106
00000537: PUSH1 0x04
00000539: CALLDATALOAD
0000053a: PUSH1 0x00
0000053c: SLOAD
0000053d: CALLER
0000053e: PUSH1 0x01
00000540: PUSH1 0xa0
00000542: PUSH1 0x02
00000544: EXP
00000545: SUB
00000546: SWAP1
00000547: DUP2
00000548: AND
00000549: SWAP2
0000054a: AND
0000054b: EQ
0000054c: PUSH2 0x0633
0000054f: JUMPI
00000550: PUSH2 0x0002
00000553: JUMP
00000554: JUMPDEST
00000555: PUSH2 0x0616
00000558: PUSH1 0x05
0000055a: SLOAD
0000055b: PUSH1 0x01
0000055d: PUSH1 0xa0
0000055f: PUSH1 0x02
00000561: EXP
00000562: SUB
00000563: AND
00000564: DUP2
00000565: JUMP
00000566: JUMPDEST
00000567: PUSH1 0x40
00000569: MLOAD
0000056a: DUP1
0000056b: DUP1
0000056c: PUSH1 0x20
0000056e: ADD
0000056f: DUP3
00000570: DUP2
00000571: SUB
00000572: DUP3
00000573: MSTORE
00000574: DUP4
00000575: DUP2
00000576: DUP2
00000577: MLOAD
00000578: DUP2
00000579: MSTORE
0000057a: PUSH1 0x20
0000057c: ADD
0000057d: SWAP2
0000057e: POP
0000057f: DUP1
00000580: MLOAD
00000581: SWAP1
00000582: PUSH1 0x20
00000584: ADD
00000585: SWAP1
00000586: DUP1
00000587: DUP4
00000588: DUP4
00000589: DUP3
0000058a: SWAP1
0000058b: PUSH1 0x00
0000058d: PUSH1 0x04
0000058f: PUSH1 0x20
00000591: DUP5
00000592: PUSH1 0x1f
00000594: ADD
00000595: DIV
00000596: PUSH1 0x0f
00000598: MUL
00000599: PUSH1 0x03
0000059b: ADD
0000059c: CALL
0000059d: POP
0000059e: SWAP1
0000059f: POP
000005a0: SWAP1
000005a1: DUP2
000005a2: ADD
000005a3: SWAP1
000005a4: PUSH1 0x1f
000005a6: AND
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05c6
000005ac: JUMPI
000005ad: DUP1
000005ae: DUP3
000005af: SUB
000005b0: DUP1
000005b1: MLOAD
000005b2: PUSH1 0x01
000005b4: DUP4
000005b5: PUSH1 0x20
000005b7: SUB
000005b8: PUSH2 0x0100
000005bb: EXP
000005bc: SUB
000005bd: NOT
000005be: AND
000005bf: DUP2
000005c0: MSTORE
000005c1: PUSH1 0x20
000005c3: ADD
000005c4: SWAP2
000005c5: POP
000005c6: JUMPDEST
000005c7: POP
000005c8: SWAP3
000005c9: POP
000005ca: POP
000005cb: POP
000005cc: PUSH1 0x40
000005ce: MLOAD
000005cf: DUP1
000005d0: SWAP2
000005d1: SUB
000005d2: SWAP1
000005d3: RETURN
000005d4: JUMPDEST
000005d5: PUSH1 0x40
000005d7: DUP1
000005d8: MLOAD
000005d9: SWAP2
000005da: DUP3
000005db: MSTORE
000005dc: MLOAD
000005dd: SWAP1
000005de: DUP2
000005df: SWAP1
000005e0: SUB
000005e1: PUSH1 0x20
000005e3: ADD
000005e4: SWAP1
000005e5: RETURN
000005e6: JUMPDEST
000005e7: PUSH1 0x40
000005e9: DUP1
000005ea: MLOAD
000005eb: PUSH4 0xffffffff
000005f0: SWAP3
000005f1: SWAP1
000005f2: SWAP3
000005f3: AND
000005f4: DUP3
000005f5: MSTORE
000005f6: MLOAD
000005f7: SWAP1
000005f8: DUP2
000005f9: SWAP1
000005fa: SUB
000005fb: PUSH1 0x20
000005fd: ADD
000005fe: SWAP1
000005ff: RETURN
00000600: JUMPDEST
00000601: PUSH1 0x40
00000603: DUP1
00000604: MLOAD
00000605: PUSH1 0xff
00000607: SWAP1
00000608: SWAP3
00000609: AND
0000060a: DUP3
0000060b: MSTORE
0000060c: MLOAD
0000060d: SWAP1
0000060e: DUP2
0000060f: SWAP1
00000610: SUB
00000611: PUSH1 0x20
00000613: ADD
00000614: SWAP1
00000615: RETURN
00000616: JUMPDEST
00000617: PUSH1 0x40
00000619: DUP1
0000061a: MLOAD
0000061b: PUSH1 0x01
0000061d: PUSH1 0xa0
0000061f: PUSH1 0x02
00000621: EXP
00000622: SUB
00000623: SWAP3
00000624: SWAP1
00000625: SWAP3
00000626: AND
00000627: DUP3
00000628: MSTORE
00000629: MLOAD
0000062a: SWAP1
0000062b: DUP2
0000062c: SWAP1
0000062d: SUB
0000062e: PUSH1 0x20
00000630: ADD
00000631: SWAP1
00000632: RETURN
00000633: JUMPDEST
00000634: PUSH1 0x00
00000636: DUP1
00000637: SLOAD
00000638: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000064d: NOT
0000064e: AND
0000064f: DUP3
00000650: OR
00000651: SWAP1
00000652: SSTORE
00000653: POP
00000654: JUMP
00000655: JUMPDEST
00000656: DUP3
00000657: ADD
00000658: SWAP2
00000659: SWAP1
0000065a: PUSH1 0x00
0000065c: MSTORE
0000065d: PUSH1 0x20
0000065f: PUSH1 0x00
00000661: KECCAK256
00000662: SWAP1
00000663: JUMPDEST
00000664: DUP2
00000665: SLOAD
00000666: DUP2
00000667: MSTORE
00000668: SWAP1
00000669: PUSH1 0x01
0000066b: ADD
0000066c: SWAP1
0000066d: PUSH1 0x20
0000066f: ADD
00000670: DUP1
00000671: DUP4
00000672: GT
00000673: PUSH2 0x0663
00000676: JUMPI
00000677: DUP3
00000678: SWAP1
00000679: SUB
0000067a: PUSH1 0x1f
0000067c: AND
0000067d: DUP3
0000067e: ADD
0000067f: SWAP2
00000680: JUMPDEST
00000681: POP
00000682: POP
00000683: POP
00000684: POP
00000685: POP
00000686: DUP2
00000687: JUMP
00000688: JUMPDEST
00000689: POP
0000068a: SWAP4
0000068b: SWAP3
0000068c: POP
0000068d: POP
0000068e: POP
0000068f: JUMP
00000690: JUMPDEST
00000691: PUSH1 0x01
00000693: PUSH1 0xa0
00000695: PUSH1 0x02
00000697: EXP
00000698: SUB
00000699: DUP3
0000069a: AND
0000069b: PUSH1 0x00
0000069d: SWAP1
0000069e: DUP2
0000069f: MSTORE
000006a0: PUSH1 0x09
000006a2: PUSH1 0x20
000006a4: MSTORE
000006a5: PUSH1 0x40
000006a7: SWAP1
000006a8: KECCAK256
000006a9: SLOAD
000006aa: DUP2
000006ab: DUP2
000006ac: ADD
000006ad: LT
000006ae: ISZERO
000006af: PUSH2 0x06b7
000006b2: JUMPI
000006b3: PUSH2 0x0002
000006b6: JUMP
000006b7: JUMPDEST
000006b8: CALLER
000006b9: PUSH1 0x01
000006bb: PUSH1 0xa0
000006bd: PUSH1 0x02
000006bf: EXP
000006c0: SUB
000006c1: SWAP1
000006c2: DUP2
000006c3: AND
000006c4: PUSH1 0x00
000006c6: DUP2
000006c7: DUP2
000006c8: MSTORE
000006c9: PUSH1 0x09
000006cb: PUSH1 0x20
000006cd: SWAP1
000006ce: DUP2
000006cf: MSTORE
000006d0: PUSH1 0x40
000006d2: DUP1
000006d3: DUP4
000006d4: KECCAK256
000006d5: DUP1
000006d6: SLOAD
000006d7: DUP8
000006d8: SWAP1
000006d9: SUB
000006da: SWAP1
000006db: SSTORE
000006dc: SWAP4
000006dd: DUP7
000006de: AND
000006df: DUP1
000006e0: DUP4
000006e1: MSTORE
000006e2: SWAP2
000006e3: DUP5
000006e4: SWAP1
000006e5: KECCAK256
000006e6: DUP1
000006e7: SLOAD
000006e8: DUP7
000006e9: ADD
000006ea: SWAP1
000006eb: SSTORE
000006ec: DUP4
000006ed: MLOAD
000006ee: DUP6
000006ef: DUP2
000006f0: MSTORE
000006f1: SWAP4
000006f2: MLOAD
000006f3: SWAP2
000006f4: SWAP4
000006f5: PUSH1 0x00
000006f7: DUP1
000006f8: MLOAD
000006f9: PUSH1 0x20
000006fb: PUSH2 0x09b6
000006fe: DUP4
000006ff: CODECOPY
00000700: DUP2
00000701: MLOAD
00000702: SWAP2
00000703: MSTORE
00000704: SWAP3
00000705: SWAP1
00000706: DUP2
00000707: SWAP1
00000708: SUB
00000709: SWAP1
0000070a: SWAP2
0000070b: ADD
0000070c: SWAP1
0000070d: LOG3
0000070e: POP
0000070f: POP
00000710: JUMP
00000711: JUMPDEST
00000712: PUSH1 0x01
00000714: PUSH1 0xa0
00000716: PUSH1 0x02
00000718: EXP
00000719: SUB
0000071a: DUP4
0000071b: AND
0000071c: PUSH1 0x00
0000071e: SWAP1
0000071f: DUP2
00000720: MSTORE
00000721: PUSH1 0x09
00000723: PUSH1 0x20
00000725: MSTORE
00000726: PUSH1 0x40
00000728: SWAP1
00000729: KECCAK256
0000072a: SLOAD
0000072b: DUP1
0000072c: DUP4
0000072d: ADD
0000072e: LT
0000072f: ISZERO
00000730: PUSH2 0x0738
00000733: JUMPI
00000734: PUSH2 0x0002
00000737: JUMP
00000738: JUMPDEST
00000739: PUSH1 0x01
0000073b: PUSH1 0xa0
0000073d: PUSH1 0x02
0000073f: EXP
00000740: SUB
00000741: DUP5
00000742: DUP2
00000743: AND
00000744: PUSH1 0x00
00000746: DUP2
00000747: DUP2
00000748: MSTORE
00000749: PUSH1 0x0a
0000074b: PUSH1 0x20
0000074d: SWAP1
0000074e: DUP2
0000074f: MSTORE
00000750: PUSH1 0x40
00000752: DUP1
00000753: DUP4
00000754: KECCAK256
00000755: CALLER
00000756: SWAP1
00000757: SWAP6
00000758: AND
00000759: DUP1
0000075a: DUP5
0000075b: MSTORE
0000075c: SWAP5
0000075d: DUP3
0000075e: MSTORE
0000075f: DUP1
00000760: DUP4
00000761: KECCAK256
00000762: SLOAD
00000763: SWAP4
00000764: DUP4
00000765: MSTORE
00000766: PUSH1 0x0b
00000768: DUP3
00000769: MSTORE
0000076a: DUP1
0000076b: DUP4
0000076c: KECCAK256
0000076d: SWAP5
0000076e: DUP4
0000076f: MSTORE
00000770: SWAP4
00000771: SWAP1
00000772: MSTORE
00000773: SWAP2
00000774: SWAP1
00000775: SWAP2
00000776: KECCAK256
00000777: SLOAD
00000778: DUP4
00000779: ADD
0000077a: GT
0000077b: ISZERO
0000077c: PUSH2 0x0784
0000077f: JUMPI
00000780: PUSH2 0x0002
00000783: JUMP
00000784: JUMPDEST
00000785: PUSH1 0x01
00000787: PUSH1 0xa0
00000789: PUSH1 0x02
0000078b: EXP
0000078c: SUB
0000078d: DUP5
0000078e: DUP2
0000078f: AND
00000790: PUSH1 0x00
00000792: DUP2
00000793: DUP2
00000794: MSTORE
00000795: PUSH1 0x09
00000797: PUSH1 0x20
00000799: SWAP1
0000079a: DUP2
0000079b: MSTORE
0000079c: PUSH1 0x40
0000079e: DUP1
0000079f: DUP4
000007a0: KECCAK256
000007a1: DUP1
000007a2: SLOAD
000007a3: DUP9
000007a4: SWAP1
000007a5: SUB
000007a6: SWAP1
000007a7: SSTORE
000007a8: DUP8
000007a9: DUP6
000007aa: AND
000007ab: DUP1
000007ac: DUP5
000007ad: MSTORE
000007ae: DUP2
000007af: DUP5
000007b0: KECCAK256
000007b1: DUP1
000007b2: SLOAD
000007b3: DUP10
000007b4: ADD
000007b5: SWAP1
000007b6: SSTORE
000007b7: DUP5
000007b8: DUP5
000007b9: MSTORE
000007ba: PUSH1 0x0b
000007bc: DUP4
000007bd: MSTORE
000007be: DUP2
000007bf: DUP5
000007c0: KECCAK256
000007c1: CALLER
000007c2: SWAP1
000007c3: SWAP7
000007c4: AND
000007c5: DUP5
000007c6: MSTORE
000007c7: SWAP5
000007c8: DUP3
000007c9: MSTORE
000007ca: SWAP2
000007cb: DUP3
000007cc: SWAP1
000007cd: KECCAK256
000007ce: DUP1
000007cf: SLOAD
000007d0: DUP8
000007d1: ADD
000007d2: SWAP1
000007d3: SSTORE
000007d4: DUP2
000007d5: MLOAD
000007d6: DUP7
000007d7: DUP2
000007d8: MSTORE
000007d9: SWAP2
000007da: MLOAD
000007db: PUSH1 0x00
000007dd: DUP1
000007de: MLOAD
000007df: PUSH1 0x20
000007e1: PUSH2 0x09b6
000007e4: DUP4
000007e5: CODECOPY
000007e6: DUP2
000007e7: MLOAD
000007e8: SWAP2
000007e9: MSTORE
000007ea: SWAP3
000007eb: DUP2
000007ec: SWAP1
000007ed: SUB
000007ee: SWAP1
000007ef: SWAP2
000007f0: ADD
000007f1: SWAP1
000007f2: LOG3
000007f3: POP
000007f4: PUSH1 0x01
000007f6: SWAP4
000007f7: SWAP3
000007f8: POP
000007f9: POP
000007fa: POP
000007fb: JUMP
000007fc: JUMPDEST
000007fd: PUSH1 0x06
000007ff: SSTORE
00000800: JUMP
00000801: JUMPDEST
00000802: PUSH1 0x05
00000804: DUP1
00000805: SLOAD
00000806: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000081b: NOT
0000081c: AND
0000081d: DUP3
0000081e: OR
0000081f: SWAP1
00000820: SSTORE
00000821: POP
00000822: JUMP
00000823: JUMPDEST
00000824: PUSH1 0x07
00000826: DUP1
00000827: SLOAD
00000828: PUSH4 0xffffffff
0000082d: NOT
0000082e: AND
0000082f: DUP3
00000830: OR
00000831: SWAP1
00000832: SSTORE
00000833: POP
00000834: JUMP
00000835: JUMPDEST
00000836: PUSH1 0x40
00000838: DUP1
00000839: MLOAD
0000083a: NUMBER
0000083b: DUP2
0000083c: MSTORE
0000083d: TIMESTAMP
0000083e: PUSH1 0x20
00000840: DUP3
00000841: ADD
00000842: MSTORE
00000843: DUP1
00000844: DUP3
00000845: ADD
00000846: DUP7
00000847: SWAP1
00000848: MSTORE
00000849: SWAP1
0000084a: MLOAD
0000084b: SWAP1
0000084c: DUP2
0000084d: SWAP1
0000084e: SUB
0000084f: PUSH1 0x60
00000851: ADD
00000852: SWAP1
00000853: KECCAK256
00000854: PUSH2 0x085e
00000857: SWAP1
00000858: PUSH1 0x0a
0000085a: PUSH2 0x01e7
0000085d: JUMP
0000085e: JUMPDEST
0000085f: PUSH1 0x07
00000861: SLOAD
00000862: SWAP1
00000863: SWAP2
00000864: POP
00000865: PUSH4 0xffffffff
0000086a: AND
0000086b: DUP2
0000086c: LT
0000086d: PUSH2 0x0875
00000870: JUMPI
00000871: PUSH1 0x01
00000873: SWAP3
00000874: POP
00000875: JUMPDEST
00000876: PUSH1 0x07
00000878: SLOAD
00000879: PUSH1 0x00
0000087b: NOT
0000087c: DUP6
0000087d: ADD
0000087e: SWAP3
0000087f: POP
00000880: PUSH4 0xffffffff
00000885: AND
00000886: DUP2
00000887: LT
00000888: ISZERO
00000889: PUSH2 0x0894
0000088c: JUMPI
0000088d: PUSH2 0x4e1e
00000890: DUP5
00000891: MUL
00000892: SWAP3
00000893: POP
00000894: JUMPDEST
00000895: CALLER
00000896: PUSH1 0x01
00000898: PUSH1 0xa0
0000089a: PUSH1 0x02
0000089c: EXP
0000089d: SUB
0000089e: SWAP1
0000089f: DUP2
000008a0: AND
000008a1: PUSH1 0x00
000008a3: DUP2
000008a4: DUP2
000008a5: MSTORE
000008a6: PUSH1 0x09
000008a8: PUSH1 0x20
000008aa: SWAP1
000008ab: DUP2
000008ac: MSTORE
000008ad: PUSH1 0x40
000008af: DUP1
000008b0: DUP4
000008b1: KECCAK256
000008b2: DUP1
000008b3: SLOAD
000008b4: DUP10
000008b5: ADD
000008b6: SWAP1
000008b7: SSTORE
000008b8: PUSH1 0x05
000008ba: SLOAD
000008bb: DUP6
000008bc: AND
000008bd: DUP4
000008be: MSTORE
000008bf: DUP1
000008c0: DUP4
000008c1: KECCAK256
000008c2: DUP1
000008c3: SLOAD
000008c4: DUP9
000008c5: ADD
000008c6: SWAP1
000008c7: SSTORE
000008c8: ADDRESS
000008c9: SWAP1
000008ca: SWAP5
000008cb: AND
000008cc: DUP1
000008cd: DUP4
000008ce: MSTORE
000008cf: SWAP2
000008d0: DUP5
000008d1: SWAP1
000008d2: KECCAK256
000008d3: DUP1
000008d4: SLOAD
000008d5: DUP9
000008d6: DUP9
000008d7: ADD
000008d8: SWAP1
000008d9: SUB
000008da: SWAP1
000008db: SSTORE
000008dc: DUP4
000008dd: MLOAD
000008de: DUP8
000008df: DUP2
000008e0: MSTORE
000008e1: SWAP4
000008e2: MLOAD
000008e3: SWAP3
000008e4: SWAP4
000008e5: SWAP2
000008e6: SWAP3
000008e7: PUSH1 0x00
000008e9: DUP1
000008ea: MLOAD
000008eb: PUSH1 0x20
000008ed: PUSH2 0x09b6
000008f0: DUP4
000008f1: CODECOPY
000008f2: DUP2
000008f3: MLOAD
000008f4: SWAP2
000008f5: MSTORE
000008f6: SWAP3
000008f7: DUP2
000008f8: SWAP1
000008f9: SUB
000008fa: SWAP1
000008fb: SWAP2
000008fc: ADD
000008fd: SWAP1
000008fe: LOG3
000008ff: PUSH1 0x05
00000901: SLOAD
00000902: PUSH1 0x40
00000904: DUP1
00000905: MLOAD
00000906: DUP5
00000907: DUP2
00000908: MSTORE
00000909: SWAP1
0000090a: MLOAD
0000090b: PUSH1 0x01
0000090d: PUSH1 0xa0
0000090f: PUSH1 0x02
00000911: EXP
00000912: SUB
00000913: SWAP3
00000914: DUP4
00000915: AND
00000916: SWAP3
00000917: ADDRESS
00000918: AND
00000919: SWAP2
0000091a: PUSH1 0x00
0000091c: DUP1
0000091d: MLOAD
0000091e: PUSH1 0x20
00000920: PUSH2 0x09b6
00000923: DUP4
00000924: CODECOPY
00000925: DUP2
00000926: MLOAD
00000927: SWAP2
00000928: MSTORE
00000929: SWAP2
0000092a: SWAP1
0000092b: DUP2
0000092c: SWAP1
0000092d: SUB
0000092e: PUSH1 0x20
00000930: ADD
00000931: SWAP1
00000932: LOG3
00000933: POP
00000934: POP
00000935: POP
00000936: SWAP1
00000937: JUMP
00000938: JUMPDEST
00000939: POP
0000093a: ADDRESS
0000093b: PUSH1 0x01
0000093d: PUSH1 0xa0
0000093f: PUSH1 0x02
00000941: EXP
00000942: SUB
00000943: SWAP1
00000944: DUP2
00000945: AND
00000946: PUSH1 0x00
00000948: SWAP1
00000949: DUP2
0000094a: MSTORE
0000094b: PUSH1 0x09
0000094d: PUSH1 0x20
0000094f: MSTORE
00000950: PUSH1 0x40
00000952: DUP1
00000953: DUP3
00000954: KECCAK256
00000955: DUP1
00000956: SLOAD
00000957: DUP6
00000958: ADD
00000959: SWAP1
0000095a: SSTORE
0000095b: CALLER
0000095c: SWAP1
0000095d: SWAP3
0000095e: AND
0000095f: DUP1
00000960: DUP3
00000961: MSTORE
00000962: DUP3
00000963: DUP3
00000964: KECCAK256
00000965: DUP1
00000966: SLOAD
00000967: DUP6
00000968: SWAP1
00000969: SUB
0000096a: SWAP1
0000096b: SSTORE
0000096c: SWAP2
0000096d: MLOAD
0000096e: PUSH1 0x08
00000970: SLOAD
00000971: DUP5
00000972: MUL
00000973: SWAP3
00000974: SWAP2
00000975: SWAP1
00000976: DUP4
00000977: SWAP1
00000978: DUP3
00000979: DUP2
0000097a: DUP2
0000097b: DUP2
0000097c: DUP6
0000097d: DUP9
0000097e: DUP4
0000097f: CALL
00000980: POP
00000981: POP
00000982: PUSH1 0x40
00000984: DUP1
00000985: MLOAD
00000986: DUP7
00000987: DUP2
00000988: MSTORE
00000989: SWAP1
0000098a: MLOAD
0000098b: ADDRESS
0000098c: PUSH1 0x01
0000098e: PUSH1 0xa0
00000990: PUSH1 0x02
00000992: EXP
00000993: SUB
00000994: AND
00000995: SWAP5
00000996: SWAP4
00000997: POP
00000998: PUSH1 0x00
0000099a: DUP1
0000099b: MLOAD
0000099c: PUSH1 0x20
0000099e: PUSH2 0x09b6
000009a1: DUP4
000009a2: CODECOPY
000009a3: DUP2
000009a4: MLOAD
000009a5: SWAP2
000009a6: MSTORE
000009a7: SWAP3
000009a8: POP
000009a9: SWAP1
000009aa: DUP2
000009ab: SWAP1
000009ac: SUB
000009ad: PUSH1 0x20
000009af: ADD
000009b0: SWAP1
000009b1: LOG3
000009b2: SWAP2
000009b3: SWAP1
000009b4: POP
000009b5: JUMP
000009b6: UNKNOWN(0xDD)
000009b7: CALLCODE
000009b8: MSTORE
000009b9: UNKNOWN(0xAD)
000009ba: SHL
000009bb: UNKNOWN(0xE2)
000009bc: UNKNOWN(0xC8)
000009bd: SWAP12
000009be: PUSH10 0xc2b068fc378daa952ba7
000009c9: CALL
000009ca: PUSH4 0xc4a11628
000009cf: CREATE2
000009d0: GAS
000009d1: UNKNOWN(0x4D)
000009d2: CREATE2
000009d3: UNKNOWN(0x23)
000009d4: UNKNOWN(0xB3)
000009d5: 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 ETH value transfer possible 55 yes yes
view
trace_id: 0x3ce6bbfd7fb102b7a4d9114203725380a4f698b34d8c422656d1a316303b00be
call_targets: 0x0000000000000000000000000000000000000004, 0xf5540ea5638cf4bda40e6e34ebc005095926aafc
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x3ce6bbfd7fb102b7a4d9114203725380a4f698b34d8c422656d1a316303b00be",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0xf5540ea5638cf4bda40e6e34ebc005095926aafc"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x233de126",
            "selector": "0x233de126",
            "calldata_variants": [
                "0x233de126",
                "0x233de1260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1126,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1194,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1436,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": []
}
high other detector Untrusted CALL target/value reachable 60 yes yes
view
trace_id: 0x3ce6bbfd7fb102b7a4d9114203725380a4f698b34d8c422656d1a316303b00be
call_targets: 0x0000000000000000000000000000000000000004, 0xf5540ea5638cf4bda40e6e34ebc005095926aafc
target_varies: yes
classification: target_varies
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "confirmed",
    "attempts": 1,
    "trace_id": "0x3ce6bbfd7fb102b7a4d9114203725380a4f698b34d8c422656d1a316303b00be",
    "confirmed": true,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0000000000000000000000000000000000000004",
        "0xf5540ea5638cf4bda40e6e34ebc005095926aafc"
    ],
    "matched_probe": null,
    "target_varies": true,
    "classification": "target_varies"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x233de126",
            "selector": "0x233de126",
            "calldata_variants": [
                "0x233de126",
                "0x233de1260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1126,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1194,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1436,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [],
    "untrusted_call_count": 6
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0x452663a790b9804fcae803623814571567435489435a205594c196d7d9371b34
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0x452663a790b9804fcae803623814571567435489435a205594c196d7d9371b34",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1fe9eabc",
            "selector": "0x1fe9eabc",
            "calldata_variants": [
                "0x1fe9eabc",
                "0x1fe9eabc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x233de126",
            "selector": "0x233de126",
            "calldata_variants": [
                "0x233de126",
                "0x233de1260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x23b872dd",
            "selector": "0x23b872dd",
            "calldata_variants": [
                "0x23b872dd",
                "0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x41fa4876",
            "selector": "0x41fa4876",
            "calldata_variants": [
                "0x41fa4876",
                "0x41fa48760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x70a08231",
            "selector": "0x70a08231",
            "calldata_variants": [
                "0x70a08231",
                "0x70a082310000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 0,
    "create2_count": 2
}
medium other codex `sell(uint256)` updates balances before a low-level payout CALL whose success is ignored 75 no
view
evidence_json
{
    "evidence": "Selector `0xe4849b32` matches `sell(uint256)`. After the balance check, execution jumps into the sell handler at pc `0x0938`. That path performs storage writes before the external interaction (`SSTORE` around pc `0x095a` and `0x096b`), computes the payout from `slot8 * amount` at pc `0x0970`-`0x0972`, then executes `CALL` at pc `0x097f`. The very next instruction is `POP` at pc `0x0980`, with no conditional branch or revert on failure. The exact CALL target is stack-computed and not fully recoverable from bytecode alone, but this is the payout leg of `sell(uint256)`.",
    "locations": [
        "selector:0xe4849b32",
        "pc:0x0938",
        "pc:0x095a",
        "pc:0x096b",
        "pc:0x097f",
        "pc:0x0980"
    ],
    "recommendation": "Make the payout leg revert on failure: capture the CALL success flag and `require(success)` before keeping the storage writes, or switch to a pull-payment pattern. If external interaction must remain inline, keep checks-effects-interactions and explicitly handle the failure case.",
    "exploit_scenario": "A user calls `sell(uint256)` from an address or contract that causes the payout CALL to fail, or the contract simply lacks funds for the computed payout. The function still updates storage to move/burn the seller's tokens, then discards the CALL result and returns normally. The seller can lose tokens without receiving the expected proceeds, and the contract's economic state diverges from the intended sell-for-value invariant."
}
medium oracle codex `buy()` uses miner/validator-influenced block data as entropy for value-bearing outcomes 75 no
view
evidence_json
{
    "evidence": "Selector `0xa6f2ae3a` matches `buy()`. In the buy path, pc `0x083a` loads `NUMBER` and pc `0x083d` loads `TIMESTAMP`; the code then hashes these values and jumps into the helper at pc `0x01e7`, which invokes `BLOCKHASH` at pc `0x0201` and reduces the result modulo 10 at pc `0x0216`-`0x0219`. The resulting value is compared against the owner-settable threshold in `slot7` at pc `0x085f`-`0x086d` and again around pc `0x0876`-`0x0894`, and that branch feeds subsequent balance updates. This is classic weak entropy from block data rather than an unbiased randomness source.",
    "locations": [
        "selector:0xa6f2ae3a",
        "pc:0x083a",
        "pc:0x083d",
        "pc:0x01e7",
        "pc:0x0201",
        "pc:0x0219",
        "pc:0x085f",
        "pc:0x0894"
    ],
    "recommendation": "Do not derive value-bearing randomness from block variables alone. Use a commit-reveal flow, an external VRF, or another scheme where the party deciding inclusion cannot cheaply bias the result.",
    "exploit_scenario": "A validator, builder, or sophisticated searcher can bias or selectively include `buy()` transactions when the derived random branch is favorable. Because the outcome depends on `block.number`, `block.timestamp`, historical `BLOCKHASH`, and `msg.value`, the randomness is not unpredictable for an adversary controlling inclusion or timestamp within normal protocol bounds. If this branch controls token rewards or jackpot-like payouts, the game can be systematically biased."
}