019b3836-22ec-70fe-bb44-362659c898ea
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 377 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 378 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 43739 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 43740 | capability.graph | complete | 1 / 3 | 1 week ago |
| 43741 | detector.run | complete | 1 / 3 | 1 week ago |
| 43742 | validation.fork | complete | 1 / 3 | 1 week ago |
| 102187 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode-only review found meaningful unchecked ETH-transfer risks. The main payout path uses fixed-gas CALLs to computed recipient addresses, ignores the success flag, and then clears storage-backed entitlement state; this can silently burn payouts or desynchronize accounting when a recipient is a contract or intentionally reverts. A second, lower-confidence issue exists in the overpayment/refund branch, which also ignores refund failure and appears to return a sentinel value instead of reverting, potentially trapping excess ETH.","findings":[{"severity":"medium","category":"other","title":"Unchecked fixed-gas payout CALLs can fail silently while entitlement state is cleared","exploit_scenario":"In the best-effort selector path at `0xf2e497ae`, payouts are sent to computed storage-derived addresses. If one of those recipients is a contract wallet, has a reverting `receive`/fallback, or simply needs more than the hard-coded 5000 gas stipend, the CALL can fail. The bytecode then continues, and later zeroes multiple storage slots associated with the same account/round, so the recipient can lose their claim while the ETH remains in the contract.","recommendation":"Do not ignore CALL results on value transfers. Revert on failed payouts, or convert this logic to a pull-payment model that records unpaid balances for later withdrawal. Avoid fixed 5000-gas value pushes unless contract recipients are intentionally unsupported and that restriction is enforced/documented.","evidence":"At `pc:0x82d` and `pc:0x89c`, the contract performs `CALL` after pushing gas `0x1388` (5000). The success bit is immediately discarded with `POP` at the next instruction (`pc:0x82e` / `pc:0x89d`). After the later payout path, the bytecode emits an event and clears storage with `SSTORE` at `pc:0x8e5`, `pc:0x8f3`, `pc:0x901`, `pc:0x932`, `pc:0x951`, `pc:0x960`, `pc:0x96f`, `pc:0x97e`, `pc:0x98d`, and `pc:0x9cf`. Slot names are unknown from bytecode, but the sequence is consistent with state cleanup after unverified external value transfers.","locations":["selector:0xf2e497ae","pc:0x82d","pc:0x89c","pc:0x8e5","pc:0x932","pc:0x9cf"]},{"severity":"low","category":"other","title":"Overpayment refund branch ignores refund failure and appears to leave excess ETH trapped","exploit_scenario":"In the payable entry selector `0x5a9809ed`, an overpayment branch sends `msg.value` back to `msg.sender` with a raw CALL. If the caller is a contract that rejects ETH or needs more gas than provided, that refund can fail silently. The function then returns a sentinel value instead of reverting, so the excess ETH may remain stuck in the contract with no visible recovery path in the bytecode.","recommendation":"Treat refund failure as a hard failure and revert, or store refundable balances and require users to withdraw explicitly. Avoid push-style refunds to arbitrary callers when failure is ignored.","evidence":"The branch at `pc:0x6e`-`pc:0x74` compares a calldata-derived amount against `CALLVALUE` and jumps into the refund path. The refund itself occurs at `pc:0x82` via `CALL` to `CALLER` with `CALLVALUE`; the return status is discarded by `POP` at `pc:0x83`, and the function returns a sentinel all-ones value through `pc:0x84`-`pc:0x92` instead of reverting. Because this is bytecode-only analysis, selector semantics are uncertain, but the unchecked refund pattern is explicit.","locations":["selector:0x5a9809ed","pc:0x6e","pc:0x82","pc:0x83"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-728_ya93
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5b2d-b24a-7c63-873d-d77ead4028ab
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.
Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc "pwd && rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md' -g '*.json'" in /tmp/codex-728_ya93
succeeded in 0ms:
/tmp/codex-728_ya93
codex-output-schema.json
BYTECODE_BUNDLE.json
exec
/bin/bash -lc "sed -n '1,260p' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
{
"analysis_artifact": {
"address": "0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8",
"artifact_hash": "0xd2a403fdc71e331e4afdc99378557bfeec5f7b924211662e7cca390cfaf90ed4",
"artifact_json": {
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"basic_blocks": [
{
"end_pc": 51,
"hash": "0x5723e7b581a74915e4bb870d0de7cef828473daa28271a75e0901edf45dba1f4",
"opcodes": [
"PUSH1",
"PUSH2",
"MSTORE8",
"PUSH29",
"PUSH1",
"CALLDATALOAD",
"DIV",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 0
},
{
"end_pc": 116,
"hash": "0xc64afa52a6ed8bede3d748810a7ce462e4981d12064d05e580e91fca3c57f64e",
"opcodes": [
"CALLDATASIZE",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"CALLDATASIZE",
"PUSH1",
"OP_82",
"CALLDATACOPY",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"OP_82",
"ADD",
"ADD",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"OP_82",
"ADD",
"ADD",
"PUSH1",
"MSTORE",
"POP",
"PUSH1",
"MLOAD",
"CALLVALUE",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 52
},
{
"end_pc": 146,
"hash": "0x95d0c443df0c99f8a354fb812005646077227c41ffc97c4664d745bfc7492010",
"opcodes": [
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"CALLVALUE",
"CALLER",
"PUSH2",
"CALL",
"POP",
"PUSH1",
"PUSH1",
"SUB",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"RETURN"
],
"start_pc": 117
},
{
"end_pc": 218,
"hash": "0xb9ce58bbe35e398f5c2229dc30c044b46aaa7239b0fb94f3c9bb027c4002249b",
"opcodes": [
"JUMPDEST",
"PUSH15",
"SLOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"MLOAD",
"CALLVALUE",
"SUB",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"SSTORE",
"PUSH1",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SSTORE",
"PUSH1",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"MSTORE"
],
"start_pc": 147
},
{
"end_pc": 236,
"hash": "0x995d1a31fd400d8af3a2d04aceb99954c5bd7a6681dde9f2c81ec11ed124e370",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"MLOAD",
"SUB",
"MLOAD",
"PUSH2",
"MLOAD",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 219
},
{
"end_pc": 347,
"hash": "0x3e990b6c38dc198ae8495684638192469132e758e31727ee2aef2318d12cb651",
"opcodes": [
"PUSH2",
"MLOAD",
"PUSH1",
"MUL",
"PUSH1",
"MLOAD",
"ADD",
"MLOAD",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"ADD",
"SSTORE",
"PUSH1",
"PUSH1",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"ADD",
"PUSH2",
"MLOAD",
"PUSH1",
"MUL",
"PUSH1",
"MLOAD",
"ADD",
"MLOAD",
"PUSH2",
"MLOAD",
"PUSH32",
"PUSH1",
"OP_84",
"OP_A3",
"POP",
"PUSH1",
"PUSH2",
"MLOAD",
"ADD",
"PUSH2",
"MSTORE",
"PUSH2",
"JUMP"
],
"start_pc": 237
},
{
"end_pc": 410,
"hash": "0x4f5fe04325200d70b49280d95a20c5c825946d7dd27bd922b0f3729ac923e317",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"MLOAD",
"SUB",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH1",
"MLOAD",
"PUSH2",
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json | keys' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
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 'keys' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
[
"analysis_artifact",
"analysis_run",
"artifact",
"capability_graph",
"detector_findings",
"heuristics_summary"
]
exec
/bin/bash -lc "jq '{analysis_run, heuristics_summary, detector_findings}' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
{
"analysis_run": {
"address": "0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8",
"block_number": null,
"chain_id": 1,
"child_links": [],
"created_at": "2025-12-19T20:03:50.000000Z",
"id": "019b3836-22ec-70fe-bb44-362659c898ea",
"parent_links": [],
"status": "running",
"updated_at": "2026-04-04T19:45:51.000000Z"
},
"heuristics_summary": {
"create2_count": 0,
"delegatecall_count": 0,
"flags": [],
"selfdestruct_count": 0
},
"detector_findings": [
{
"confidence": 45,
"evidence_json": {
"call_count": 6,
"examples": [
{
"opcode": "CALL",
"pc": 652,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "constant"
},
{
"opcode": "CALL",
"pc": 691,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 731,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
],
"untrusted_call_count": 3
},
"normalized_json": {
"sink": "CALL"
},
"severity": "medium",
"title": "Untrusted CALL target/value reachable",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0x3b0a391c422c78338b0f0787124bdb437bd53db775c371d87fbbdcb63c23b604",
"trace_mode": "callTracer"
}
},
{
"confidence": 40,
"evidence_json": {
"eth_value_calls": 3,
"examples": [
{
"opcode": "CALL",
"pc": 652,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "constant"
},
{
"opcode": "CALL",
"pc": 691,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 731,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"normalized_json": {
"sink": "CALL",
"value": "nonzero"
},
"severity": "medium",
"title": "ETH value transfer possible",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0x3b0a391c422c78338b0f0787124bdb437bd53db775c371d87fbbdcb63c23b604",
"trace_mode": "callTracer"
}
}
]
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
[
"0x5a9809ed",
"0xd5f39e24",
"0xa11af387",
"0x7b0ae934",
"0xd966f799",
"0x3cd86b77",
"0x8f26e0fe",
"0xf2e497ae"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.function_entries' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
[
{
"entry_pc": null,
"selector": "0x5a9809ed"
},
{
"entry_pc": null,
"selector": "0xd5f39e24"
},
{
"entry_pc": null,
"selector": "0xa11af387"
},
{
"entry_pc": null,
"selector": "0x7b0ae934"
},
{
"entry_pc": null,
"selector": "0xd966f799"
},
{
"entry_pc": null,
"selector": "0x3cd86b77"
},
{
"entry_pc": null,
"selector": "0x8f26e0fe"
},
{
"entry_pc": null,
"selector": "0xf2e497ae"
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
[
{
"opcode": "CALL",
"pc": 130,
"returndata_checked": null,
"target_expression_category": "constant",
"value_expression_category": "constant_zero"
},
{
"opcode": "CALL",
"pc": 652,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "constant"
},
{
"opcode": "CALL",
"pc": 691,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 731,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 2093,
"returndata_checked": null,
"target_expression_category": "constant",
"value_expression_category": "constant_zero"
},
{
"opcode": "CALL",
"pc": 2204,
"returndata_checked": null,
"target_expression_category": "constant",
"value_expression_category": "constant_zero"
}
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
{
"keccak_count": 0,
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
exec
/bin/bash -lc "jq '.artifact | keys' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
[
"codehash",
"compiler_json",
"implementation_address",
"is_proxy",
"runtime_bytecode",
"verified_source"
]
exec
/bin/bash -lc "jq '.capability_graph' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
{
"address": "0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8",
"block_number": null,
"chain_id": 1,
"codehash": "0x06e903f07f386313bdba0219bcb54efb28e6665f749fca5175eda524771cb2e7",
"created_at": "2026-04-04T19:45:51.000000Z",
"graph_hash": "0x509f47bb336e6e7fae48949762d31f9d051456fc385e64cf541e807f198a56a6",
"graph_json": {
"edges": [
{
"from": "bb:0",
"to": "bb:812",
"type": "control_flow"
},
{
"from": "bb:0",
"to": "bb:52",
"type": "control_flow_fallthrough"
},
{
"from": "bb:52",
"to": "bb:147",
"type": "control_flow"
},
{
"from": "bb:52",
"to": "bb:117",
"type": "control_flow_fallthrough"
},
{
"from": "bb:147",
"to": "bb:219",
"type": "control_flow_fallthrough"
},
{
"from": "bb:219",
"to": "bb:348",
"type": "control_flow"
},
{
"from": "bb:219",
"to": "bb:237",
"type": "control_flow_fallthrough"
},
{
"from": "bb:237",
"to": "bb:219",
"type": "control_flow"
},
{
"from": "bb:348",
"to": "bb:411",
"type": "control_flow_fallthrough"
},
{
"from": "bb:411",
"to": "bb:480",
"type": "control_flow"
},
{
"from": "bb:411",
"to": "bb:432",
"type": "control_flow_fallthrough"
},
{
"from": "bb:432",
"to": "bb:411",
"type": "control_flow"
},
{
"from": "bb:480",
"to": "bb:658",
"type": "control_flow"
},
{
"from": "bb:480",
"to": "bb:657",
"type": "control_flow_fallthrough"
},
{
"from": "bb:658",
"to": "bb:697",
"type": "control_flow"
},
{
"from": "bb:658",
"to": "bb:696",
"type": "control_flow_fallthrough"
},
{
"from": "bb:697",
"to": "bb:737",
"type": "control_flow"
},
{
"from": "bb:697",
"to": "bb:736",
"type": "control_flow_fallthrough"
},
{
"from": "bb:812",
"to": "bb:851",
"type": "control_flow"
},
{
"from": "bb:812",
"to": "bb:825",
"type": "control_flow_fallthrough"
},
{
"from": "bb:851",
"to": "bb:949",
"type": "control_flow"
},
{
"from": "bb:851",
"to": "bb:864",
"type": "control_flow_fallthrough"
},
{
"from": "bb:948",
"to": "bb:949",
"type": "control_flow_fallthrough"
},
{
"from": "bb:949",
"to": "bb:1103",
"type": "control_flow"
},
{
"from": "bb:949",
"to": "bb:962",
"type": "control_flow_fallthrough"
},
{
"from": "bb:962",
"to": "bb:1007",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1007",
"to": "bb:1071",
"type": "control_flow"
},
{
"from": "bb:1007",
"to": "bb:1023",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1023",
"to": "bb:1007",
"type": "control_flow"
},
{
"from": "bb:1102",
"to": "bb:1103",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1103",
"to": "bb:1146",
"type": "control_flow"
},
{
"from": "bb:1103",
"to": "bb:1116",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1146",
"to": "bb:1314",
"type": "control_flow"
},
{
"from": "bb:1146",
"to": "bb:1159",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1159",
"to": "bb:1205",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1205",
"to": "bb:1276",
"type": "control_flow"
},
{
"from": "bb:1205",
"to": "bb:1224",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1224",
"to": "bb:1205",
"type": "control_flow"
},
{
"from": "bb:1313",
"to": "bb:1314",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1314",
"to": "bb:1354",
"type": "control_flow"
},
{
"from": "bb:1314",
"to": "bb:1327",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1354",
"to": "bb:2542",
"type": "control_flow"
},
{
"from": "bb:1354",
"to": "bb:1367",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1367",
"to": "bb:1411",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1411",
"to": "bb:1521",
"type": "control_flow"
},
{
"from": "bb:1411",
"to": "bb:1435",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1435",
"to": "bb:1505",
"type": "control_flow"
},
{
"from": "bb:1435",
"to": "bb:1459",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1459",
"to": "bb:1504",
"type": "control_flow"
},
{
"from": "bb:1459",
"to": "bb:1496",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1496",
"to": "bb:1504",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1504",
"to": "bb:1505",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1505",
"to": "bb:1411",
"type": "control_flow"
},
{
"from": "bb:1521",
"to": "bb:1552",
"type": "control_flow"
},
{
"from": "bb:1521",
"to": "bb:1541",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1541",
"to": "bb:1555",
"type": "control_flow"
},
{
"from": "bb:1552",
"to": "bb:1555",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1555",
"to": "bb:1568",
"type": "control_flow"
},
{
"from": "bb:1555",
"to": "bb:1561",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1561",
"to": "bb:1568",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1568",
"to": "bb:1599",
"type": "control_flow"
},
{
"from": "bb:1568",
"to": "bb:1588",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1588",
"to": "bb:1602",
"type": "control_flow"
},
{
"from": "bb:1599",
"to": "bb:1602",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1602",
"to": "bb:1615",
"type": "control_flow"
},
{
"from": "bb:1602",
"to": "bb:1608",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1608",
"to": "bb:1615",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1615",
"to": "bb:1643",
"type": "control_flow"
},
{
"from": "bb:1615",
"to": "bb:1631",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1643",
"to": "bb:1918",
"type": "control_flow"
},
{
"from": "bb:1643",
"to": "bb:1757",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1757",
"to": "bb:1841",
"type": "control_flow"
},
{
"from": "bb:1757",
"to": "bb:1766",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1766",
"to": "bb:1836",
"type": "control_flow"
},
{
"from": "bb:1766",
"to": "bb:1830",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1830",
"to": "bb:1836",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1836",
"to": "bb:1913",
"type": "control_flow"
},
{
"from": "bb:1841",
"to": "bb:1912",
"type": "control_flow"
},
{
"from": "bb:1841",
"to": "bb:1906",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1906",
"to": "bb:1912",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1912",
"to": "bb:1913",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1913",
"to": "bb:1942",
"type": "control_flow"
},
{
"from": "bb:1918",
"to": "bb:1934",
"type": "control_flow"
},
{
"from": "bb:1918",
"to": "bb:1928",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1928",
"to": "bb:1937",
"type": "control_flow"
},
{
"from": "bb:1934",
"to": "bb:1937",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1937",
"to": "bb:1942",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1942",
"to": "bb:2529",
"type": "control_flow"
},
{
"from": "bb:1942",
"to": "bb:1952",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1952",
"to": "bb:2011",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2011",
"to": "bb:2111",
"type": "control_flow"
},
{
"from": "bb:2011",
"to": "bb:2035",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2035",
"to": "bb:2095",
"type": "control_flow"
},
{
"from": "bb:2035",
"to": "bb:2061",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2061",
"to": "bb:2095",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2095",
"to": "bb:2011",
"type": "control_flow"
},
{
"from": "bb:2111",
"to": "bb:2140",
"type": "control_flow"
},
{
"from": "bb:2111",
"to": "bb:2124",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2124",
"to": "bb:2153",
"type": "control_flow"
},
{
"from": "bb:2140",
"to": "bb:2153",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2153",
"to": "bb:2312",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2312",
"to": "bb:2370",
"type": "control_flow"
},
{
"from": "bb:2312",
"to": "bb:2336",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2336",
"to": "bb:2312",
"type": "control_flow"
},
{
"from": "bb:2370",
"to": "bb:2452",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2452",
"to": "bb:2528",
"type": "control_flow"
},
{
"from": "bb:2452",
"to": "bb:2465",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2465",
"to": "bb:2512",
"type": "control_flow"
},
{
"from": "bb:2465",
"to": "bb:2492",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2492",
"to": "bb:2512",
"type": "control_flow_fallthrough"
},
{
"from": "bb:2512",
"to": "bb:2452",
"type": "control_flow"
},
{
"from": "bb:2528",
"to": "bb:2529",
"type": "control_flow_fallthrough"
},
{
"from": "bb:117",
"to": "call:130",
"type": "contains"
},
{
"from": "call:130",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:480",
"to": "call:652",
"type": "contains"
},
{
"from": "call:652",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:658",
"to": "call:691",
"type": "contains"
},
{
"from": "call:691",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:697",
"to": "call:731",
"type": "contains"
},
{
"from": "call:731",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:2061",
"to": "call:2093",
"type": "contains"
},
{
"from": "call:2093",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:2153",
"to": "call:2204",
"type": "contains"
},
{
"from": "call:2204",
"to": "sink:call",
"type": "capability"
}
],
"nodes": [
{
"end_pc": 51,
"hash": "0x5723e7b581a74915e4bb870d0de7cef828473daa28271a75e0901edf45dba1f4",
"id": "bb:0",
"start_pc": 0,
"type": "basic_block"
},
{
"end_pc": 116,
"hash": "0xc64afa52a6ed8bede3d748810a7ce462e4981d12064d05e580e91fca3c57f64e",
"id": "bb:52",
"start_pc": 52,
"type": "basic_block"
},
{
"end_pc": 146,
"hash": "0x95d0c443df0c99f8a354fb812005646077227c41ffc97c4664d745bfc7492010",
"id": "bb:117",
"start_pc": 117,
"type": "basic_block"
},
{
"end_pc": 218,
"hash": "0xb9ce58bbe35e398f5c2229dc30c044b46aaa7239b0fb94f3c9bb027c4002249b",
"id": "bb:147",
"start_pc": 147,
"type": "basic_block"
},
{
"end_pc": 236,
"hash": "0x995d1a31fd400d8af3a2d04aceb99954c5bd7a6681dde9f2c81ec11ed124e370",
"id": "bb:219",
"start_pc": 219,
"type": "basic_block"
},
{
"end_pc": 347,
"hash": "0x3e990b6c38dc198ae8495684638192469132e758e31727ee2aef2318d12cb651",
"id": "bb:237",
"start_pc": 237,
"type": "basic_block"
},
{
"end_pc": 410,
"hash": "0x4f5fe04325200d70b49280d95a20c5c825946d7dd27bd922b0f3729ac923e317",
"id": "bb:348",
"start_pc": 348,
"type": "basic_block"
},
{
"end_pc": 431,
"hash": "0xbb5eaa7d8ade37dfdbe2fd7fc17d1f46146c144d8a78ce12a3703db2924e4581",
"id": "bb:411",
"start_pc": 411,
"type": "basic_block"
},
{
"end_pc": 479,
"hash": "0x8ce3febd87531c167b39638f21ff3277425467da4f9abeb9f8e71582433c17b2",
"id": "bb:432",
"start_pc": 432,
"type": "basic_block"
},
{
"end_pc": 656,
"hash": "0xdc6cde18a506eb8fcca268f7dbd46f64cc981f13ceea8af6eb02d3b402a4ea3a",
"id": "bb:480",
"start_pc": 480,
"type": "basic_block"
},
{
"end_pc": 657,
"hash": "0x3bfb78486b215386193bd29d00dbe4ac6b0cc2bb4333a925f2ffeeb14de05570",
"id": "bb:657",
"start_pc": 657,
"type": "basic_block"
},
{
"end_pc": 695,
"hash": "0xa9dd62bb1a7afd457f24065aad81d2301267c39581238ecde5f642358d7e955b",
"id": "bb:658",
"start_pc": 658,
"type": "basic_block"
},
{
"end_pc": 696,
"hash": "0xdec2f753288586d9e2ce2cd344f33f06fcf14bccb3208cceebacfc21dd4026f9",
"id": "bb:696",
"start_pc": 696,
"type": "basic_block"
},
{
"end_pc": 735,
"hash": "0x8521eca7a6ee9c51f0f220f240e6ab0af81ff23e025699bba01827bd52c56284",
"id": "bb:697",
"start_pc": 697,
"type": "basic_block"
},
{
"end_pc": 736,
"hash": "0x78b379482b810b0e2ed777c9e81b1a10f5bcc0b4527db810231d4b5ad42a71d6",
"id": "bb:736",
"start_pc": 736,
"type": "basic_block"
},
{
"end_pc": 811,
"hash": "0xc70880fb03365c6bd80352c76c51a7d5e6e37db0b3dd8b4d6e6013aa1eb982ca",
"id": "bb:737",
"start_pc": 737,
"type": "basic_block"
},
{
"end_pc": 824,
"hash": "0x46e7c7733ecb5418befbaa55330483d9fa2b50ebf3a842180e5daae87abee271",
"id": "bb:812",
"start_pc": 812,
"type": "basic_block"
},
{
"end_pc": 850,
"hash": "0x2d36bfbb744e530c24d7278c75a29770a36639e23d42fafae7bc3bc9fe78e867",
"id": "bb:825",
"start_pc": 825,
"type": "basic_block"
},
{
"end_pc": 863,
"hash": "0xd2bd1cf66a9f14b968652acb6f14b10449e5a0f14626d360c36513b0a3c6ada1",
"id": "bb:851",
"start_pc": 851,
"type": "basic_block"
},
{
"end_pc": 947,
"hash": "0x069b40b273d1b688084652d5ee7fb91552c7bb0d4a46d99e69eb9a561151db5d",
"id": "bb:864",
"start_pc": 864,
"type": "basic_block"
},
{
"end_pc": 948,
"hash": "0xbcc65cc92732a07883cb9111bde4c1fa5a6f371bf7dccf29ef65f0cbb4063e68",
"id": "bb:948",
"start_pc": 948,
"type": "basic_block"
},
{
"end_pc": 961,
"hash": "0xba51cd9d0179eb293bf7c31b56b9e9b23895a653c3e3d044204ace2b8f1b9a79",
"id": "bb:949",
"start_pc": 949,
"type": "basic_block"
},
{
"end_pc": 1006,
"hash": "0x0aeae1e0355e00ca3dc45c15921adb98c7049a27d94f4acfcd258c431b04846d",
"id": "bb:962",
"start_pc": 962,
"type": "basic_block"
},
{
"end_pc": 1022,
"hash": "0xfb81baa1ccd845b16cb09169ca0973cf932576a0013c77c423a60af062911223",
"id": "bb:1007",
"start_pc": 1007,
"type": "basic_block"
},
{
"end_pc": 1070,
"hash": "0xced929f1f813864818c1eb52a43224e774d0906e859f60343897eba7dcab87b9",
"id": "bb:1023",
"start_pc": 1023,
"type": "basic_block"
},
{
"end_pc": 1101,
"hash": "0xac371ab0ac073e3c33c7337ec7cea7c46b1ccf013ba45a35ca39192519fbd147",
"id": "bb:1071",
"start_pc": 1071,
"type": "basic_block"
},
{
"end_pc": 1102,
"hash": "0xfdb3064c6afbc844b1b59aa429f73fc8ca8bebb6dedcb8be354695e1cd608cc7",
"id": "bb:1102",
"start_pc": 1102,
"type": "basic_block"
},
{
"end_pc": 1115,
"hash": "0x878c0ac6a1c54b02ef506a8d94ccae7536a94be422594b0b12a194aea0e9eb41",
"id": "bb:1103",
"start_pc": 1103,
"type": "basic_block"
},
{
"end_pc": 1145,
"hash": "0x1ac9669ea15371da163d55ad1efc1794eadd4aac2e7c029edb29ff0040b1bb1b",
"id": "bb:1116",
"start_pc": 1116,
"type": "basic_block"
},
{
"end_pc": 1158,
"hash": "0xee0450e91529a68bdfcda9bab942ec2a2bd885d3b07cb32733dfe91285167ea1",
"id": "bb:1146",
"start_pc": 1146,
"type": "basic_block"
},
{
"end_pc": 1204,
"hash": "0xc3855da757179a9777c7376267eda3023b77a9fa1ddd88466a776f0bb3cd1dfa",
"id": "bb:1159",
"start_pc": 1159,
"type": "basic_block"
},
{
"end_pc": 1223,
"hash": "0x98d99eb414bfe6e7f52d6571a3ad4cb79249f7c61db1e06485ce2b48603e552e",
"id": "bb:1205",
"start_pc": 1205,
"type": "basic_block"
},
{
"end_pc": 1275,
"hash": "0x4e8d35feabba534bd714be260c1735d52eeb21bfeb54bf9ac5ec41097815be8e",
"id": "bb:1224",
"start_pc": 1224,
"type": "basic_block"
},
{
"end_pc": 1312,
"hash": "0x41c11aed06fdfef02e3ae6e48b98599c9c16c27cf49afc2805f848859e93e3a2",
"id": "bb:1276",
"start_pc": 1276,
"type": "basic_block"
},
{
"end_pc": 1313,
"hash": "0x322f08406cdb67a1dfad5403143175f427654f135688990e8a661f59182705f5",
"id": "bb:1313",
"start_pc": 1313,
"type": "basic_block"
},
{
"end_pc": 1326,
"hash": "0xcd971c88892faf823ef6b0f464328baf11cd30375e5d8a0bdb7c5ae5395b21e9",
"id": "bb:1314",
"start_pc": 1314,
"type": "basic_block"
},
{
"end_pc": 1353,
"hash": "0xc429efdb539523877e3ec082f9dce562e0cc73beba8b0a10f6b10e37a21c94da",
"id": "bb:1327",
"start_pc": 1327,
"type": "basic_block"
},
{
"end_pc": 1366,
"hash": "0xbf93d4f2c0fc5a767d92b348f445be0892942316e6ae24f8d73540d67500bd2e",
"id": "bb:1354",
"start_pc": 1354,
"type": "basic_block"
},
{
"end_pc": 1410,
"hash": "0xa243201e35e077b4f1d5d155568156b32911b16dc91e1469047a89c1c3d319b8",
"id": "bb:1367",
"start_pc": 1367,
"type": "basic_block"
},
{
"end_pc": 1434,
"hash": "0x34cf6ddbf2ecde259e77fa3f68b4a4e9c439543593329bb556fc6c3ad4b9e44e",
"id": "bb:1411",
"start_pc": 1411,
"type": "basic_block"
},
{
"end_pc": 1458,
"hash": "0x4070326fdf4c2d3b74e6b1c5b856b9463840245062c1ee85d2e020c7637ab667",
"id": "bb:1435",
"start_pc": 1435,
"type": "basic_block"
},
{
"end_pc": 1495,
"hash": "0x6f695bc6cc3c204d49f1006db097756855af68512350430a62cdc3ed54894723",
"id": "bb:1459",
"start_pc": 1459,
"type": "basic_block"
},
{
"end_pc": 1503,
"hash": "0xd79f80a8855e4dd6935e807b75f231c31c2ede67cb95bc066f775d9a611c26ba",
"id": "bb:1496",
"start_pc": 1496,
"type": "basic_block"
},
{
"end_pc": 1504,
"hash": "0xf8a0f5a98beadf8f2f0b15991e3c49914b03898cd58375df58e028ecaed3aba6",
"id": "bb:1504",
"start_pc": 1504,
"type": "basic_block"
},
{
"end_pc": 1520,
"hash": "0xe3891146d668a92d37a5f8956c1b68950adb4322cbd02abfcde926ed1743c456",
"id": "bb:1505",
"start_pc": 1505,
"type": "basic_block"
},
{
"end_pc": 1540,
"hash": "0x034b682c8fca7f8e2e61544b4069ea970ead3010a413d7db9ad058dcef0a328d",
"id": "bb:1521",
"start_pc": 1521,
"type": "basic_block"
},
{
"end_pc": 1551,
"hash": "0x70bf7a2e1418f90ed84439bf1f857f4cdc48f0a7ec5dc15676e7c6196ee7de9d",
"id": "bb:1541",
"start_pc": 1541,
"type": "basic_block"
},
{
"end_pc": 1553,
"hash": "0x4843abda37db57888a978b8506e6099579af0460f1999a9afb2f3d0e6cfbcfa8",
"id": "bb:1552",
"start_pc": 1552,
"type": "basic_block"
},
{
"end_pc": 1560,
"hash": "0x722f2a7cf63fd4078b19b4695c0994ca512afdb46d4e26bb3d4c6cfe225943e7",
"id": "bb:1555",
"start_pc": 1555,
"type": "basic_block"
},
{
"end_pc": 1567,
"hash": "0xdea805b369cb267983325890728a0bc13c2e11b05ba9275fcfdcd36993106446",
"id": "bb:1561",
"start_pc": 1561,
"type": "basic_block"
},
{
"end_pc": 1587,
"hash": "0xd4f9d07bfef67cef493f5adc5666626e006277fa6f31e4c509a02cdd7215b49d",
"id": "bb:1568",
"start_pc": 1568,
"type": "basic_block"
},
{
"end_pc": 1598,
"hash": "0x565a7967da32dfa95a961771c3f1a97055cdca73994e49f52ad0a4d93183dfde",
"id": "bb:1588",
"start_pc": 1588,
"type": "basic_block"
},
{
"end_pc": 1600,
"hash": "0xb42ee911e3b3470b89c1745396371117532b98187109774a0a0e9f5de704bae5",
"id": "bb:1599",
"start_pc": 1599,
"type": "basic_block"
},
{
"end_pc": 1607,
"hash": "0x718387923d96916713451da1bcc9302fba604f39b801f4dfb2f73ef183aaa679",
"id": "bb:1602",
"start_pc": 1602,
"type": "basic_block"
},
{
"end_pc": 1614,
"hash": "0x97d9d397e689432c8afa8181a70f2a9a4a1e2df73e90a6be434bbd981db77af3",
"id": "bb:1608",
"start_pc": 1608,
"type": "basic_block"
},
{
"end_pc": 1630,
"hash": "0x87f91d1302ef3894f0ba69a8326fb08c8518be0367f901b9b33623acee3f65af",
"id": "bb:1615",
"start_pc": 1615,
"type": "basic_block"
},
{
"end_pc": 1642,
"hash": "0x540b6864389e2a568c3fa6696f6fb977e3b96b21b011510b5700b9bf31e69619",
"id": "bb:1631",
"start_pc": 1631,
"type": "basic_block"
},
{
"end_pc": 1756,
"hash": "0x4fd70c58ac628034d969f5545db2075a21dae2b7d6ef585cd531f2dd912de634",
"id": "bb:1643",
"start_pc": 1643,
"type": "basic_block"
},
{
"end_pc": 1765,
"hash": "0xbbf1b53b9e59f3e87269964c734c9d9da5fa60e2ec8d5484ce40598e89067e0a",
"id": "bb:1757",
"start_pc": 1757,
"type": "basic_block"
},
{
"end_pc": 1829,
"hash": "0xc4684678509ef8b7bcd2e9df853f4fec54e5914feac8c3bb4dfc9a815b551c2f",
"id": "bb:1766",
"start_pc": 1766,
"type": "basic_block"
},
{
"end_pc": 1835,
"hash": "0x5310ad09bf805c4e419b645896601ed24c5919c0ea0601f2ea8f05b7081ed1fc",
"id": "bb:1830",
"start_pc": 1830,
"type": "basic_block"
},
{
"end_pc": 1840,
"hash": "0x093b0046e8aa1a7047a0ee7e7a4db084b9ff3b7a4e05a7e35cfe22a90f761bf6",
"id": "bb:1836",
"start_pc": 1836,
"type": "basic_block"
},
{
"end_pc": 1905,
"hash": "0xd5d1c69f1093459add85a328f8f65b1b6643834847b0a147738f59474ab067fe",
"id": "bb:1841",
"start_pc": 1841,
"type": "basic_block"
},
{
"end_pc": 1911,
"hash": "0x6ae22c81a626dc8fd4729f09ddbdf37f933f9a3bef0888692118c6ede57ed4c2",
"id": "bb:1906",
"start_pc": 1906,
"type": "basic_block"
},
{
"end_pc": 1912,
"hash": "0x34fe9165c95ab3aa838787d3e44f9b39525c1686c2cf3b2639691aabd2b8acf0",
"id": "bb:1912",
"start_pc": 1912,
"type": "basic_block"
},
{
"end_pc": 1917,
"hash": "0x70ecfe3424c2a9276a82415606b6b490c99227df654c56b4be532440c49f3091",
"id": "bb:1913",
"start_pc": 1913,
"type": "basic_block"
},
{
"end_pc": 1927,
"hash": "0x58fb84486744040f33249763c5ed64f1921ef6317155314c5eacbe4a9f2f0701",
"id": "bb:1918",
"start_pc": 1918,
"type": "basic_block"
},
{
"end_pc": 1933,
"hash": "0xfba84a5b5d4501bf5affa9de3a469096346a899161477dd0d7d83b81460f155a",
"id": "bb:1928",
"start_pc": 1928,
"type": "basic_block"
},
{
"end_pc": 1935,
"hash": "0x40f33ce5dd6b6d1fb0afdc58e80a33989ce581511cd6017a084aa4c0256cbb84",
"id": "bb:1934",
"start_pc": 1934,
"type": "basic_block"
},
{
"end_pc": 1941,
"hash": "0xbb1a3cc93750d1406d846cb4959daa3a2db3ccec9066bcadbab21079b26c2658",
"id": "bb:1937",
"start_pc": 1937,
"type": "basic_block"
},
{
"end_pc": 1951,
"hash": "0x83afc05bf893dc878104a31a02f517913b0d9e19b945e1e73b1965d48eddaffa",
"id": "bb:1942",
"start_pc": 1942,
"type": "basic_block"
},
{
"end_pc": 2010,
"hash": "0xee9bca1be50b575e13d3813ff0967a06a01d7693fb635f54452fa68164fb47a8",
"id": "bb:1952",
"start_pc": 1952,
"type": "basic_block"
},
{
"end_pc": 2034,
"hash": "0x5bb0d9457e267eb56ecda8fbd920a074f062262c5a29d0200aeca7c827ccef06",
"id": "bb:2011",
"start_pc": 2011,
"type": "basic_block"
},
{
"end_pc": 2060,
"hash": "0x224863a61fef07c89053db252c212d527f8f73a545edb193cb8c26394cd98b8a",
"id": "bb:2035",
"start_pc": 2035,
"type": "basic_block"
},
{
"end_pc": 2094,
"hash": "0x42ff6bf526478becaacafde6c6e0d0f3f370e1ebf0d61a13437902461514c791",
"id": "bb:2061",
"start_pc": 2061,
"type": "basic_block"
},
{
"end_pc": 2110,
"hash": "0x463a7ebc012d07596a116301308dd880ef8fddc0346076964aad6798e36f9905",
"id": "bb:2095",
"start_pc": 2095,
"type": "basic_block"
},
{
"end_pc": 2123,
"hash": "0xe0a12b150e74b8c3124681fdfaf5972423579fd7624c973e32d67c125a1b1128",
"id": "bb:2111",
"start_pc": 2111,
"type": "basic_block"
},
{
"end_pc": 2139,
"hash": "0x21630389780de18cfbbd499d2dff5a00151757b8a4af9eba62c101981a4909b2",
"id": "bb:2124",
"start_pc": 2124,
"type": "basic_block"
},
{
"end_pc": 2152,
"hash": "0x9872c244e66f103dbe658d67fa280684f999cce4de30efe1e6978f1c8f65dd07",
"id": "bb:2140",
"start_pc": 2140,
"type": "basic_block"
},
{
"end_pc": 2311,
"hash": "0xde4a74deb9464a524892f8e2a414174277c0b02690ee80cf5a3c7acfea5882f7",
"id": "bb:2153",
"start_pc": 2153,
"type": "basic_block"
},
{
"end_pc": 2335,
"hash": "0x84ad4e3879f351974821c23343925ead2f24285487f95772d35af8afde47fcf8",
"id": "bb:2312",
"start_pc": 2312,
"type": "basic_block"
},
{
"end_pc": 2369,
"hash": "0xc014eeeaac836d24ac7d7aec0de501e439b37805428276b54488b80fe7ee51ce",
"id": "bb:2336",
"start_pc": 2336,
"type": "basic_block"
},
{
"end_pc": 2451,
"hash": "0x0a75b3c389144eead7a444c405ac74ede33df4c4906c44ae1761352f3b3221f2",
"id": "bb:2370",
"start_pc": 2370,
"type": "basic_block"
},
{
"end_pc": 2464,
"hash": "0xc4926b055e59535368159e21dd71ec23857206c0dd307d066d9928538b0d546e",
"id": "bb:2452",
"start_pc": 2452,
"type": "basic_block"
},
{
"end_pc": 2491,
"hash": "0x8e07c885c5107e93d28add3203f9abe07a3801f348830a819265bbd24760d709",
"id": "bb:2465",
"start_pc": 2465,
"type": "basic_block"
},
{
"end_pc": 2511,
"hash": "0x06a16bbdc912edc24e20f6f28a636e4ac35fc762f0af4bc0145dc88e27d42b27",
"id": "bb:2492",
"start_pc": 2492,
"type": "basic_block"
},
{
"end_pc": 2527,
"hash": "0x070950c975e6973b8898d2347b96ac0931d5c967a20616c3e8149dfeed229fbf",
"id": "bb:2512",
"start_pc": 2512,
"type": "basic_block"
},
{
"end_pc": 2528,
"hash": "0xe3bf256cfab860436a52357043f0436c7af07a3b7afffecbe8b2e36791bf7d6e",
"id": "bb:2528",
"start_pc": 2528,
"type": "basic_block"
},
{
"end_pc": 2541,
"hash": "0x1c6609552e96255244721b70fa03a761fea1affdb274664803810e6f48a5761f",
"id": "bb:2529",
"start_pc": 2529,
"type": "basic_block"
},
{
"end_pc": 2543,
"hash": "0xca34432540a8da9e726ee419a126785b71a57ecb0d06b7b4058b65a83db669b1",
"id": "bb:2542",
"start_pc": 2542,
"type": "basic_block"
},
{
"id": "call:130",
"opcode": "CALL",
"pc": 130,
"type": "callsite"
},
{
"id": "call:652",
"opcode": "CALL",
"pc": 652,
"type": "callsite"
},
{
"id": "call:691",
"opcode": "CALL",
"pc": 691,
"type": "callsite"
},
{
"id": "call:731",
"opcode": "CALL",
"pc": 731,
"type": "callsite"
},
{
"id": "call:2093",
"opcode": "CALL",
"pc": 2093,
"type": "callsite"
},
{
"id": "call:2204",
"opcode": "CALL",
"pc": 2204,
"type": "callsite"
},
{
"id": "sink:call",
"type": "sink"
},
{
"entry_pc": null,
"id": "fn:0x5a9809ed",
"selector": "0x5a9809ed",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xd5f39e24",
"selector": "0xd5f39e24",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xa11af387",
"selector": "0xa11af387",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0x7b0ae934",
"selector": "0x7b0ae934",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xd966f799",
"selector": "0xd966f799",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0x3cd86b77",
"selector": "0x3cd86b77",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0x8f26e0fe",
"selector": "0x8f26e0fe",
"type": "function"
},
{
"entry_pc": null,
"id": "fn:0xf2e497ae",
"selector": "0xf2e497ae",
"type": "function"
}
],
"version": "capability_graph_v1"
},
"id": 1595,
"updated_at": "2026-04-04T19:45:51.000000Z",
"version": "capability_graph_v1"
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.functions' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
[
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0x5a9809ed",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
},
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0xd5f39e24",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
},
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0xa11af387",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
},
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0x7b0ae934",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
},
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0xd966f799",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
},
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0x3cd86b77",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
},
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0x8f26e0fe",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
},
{
"auth": {
"guards": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
},
"entry_pc": null,
"selector": "0xf2e497ae",
"sinks": {
"call": 6,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 34,
"slots": [
{
"op": "SLOAD",
"pc": 164,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 197,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000060"
},
{
"op": "SSTORE",
"pc": 212,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000080"
},
{
"op": "SSTORE",
"pc": 384,
"slot": "0x00000000000000000000000000000000000000000000000000000000000000c0"
},
{
"op": "SLOAD",
"pc": 1343,
"slot": "0x0000000000000000000000000000000000027220000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2277,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2291,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2305,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2354,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2385,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2400,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2415,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2430,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2445,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SSTORE",
"pc": 2511,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
],
"writes": 22
}
}
]
exec
/bin/bash -lc "jq '.artifact.compiler_json, .artifact.is_proxy, .artifact.implementation_address, .artifact.verified_source' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
{
"etherscan": {
"skipped": true
}
}
false
null
false
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.dispatcher_type, .analysis_artifact.artifact_json.sinks' BYTECODE_BUNDLE.json" in /tmp/codex-728_ya93
succeeded in 0ms:
"selector_jump_table"
{
"call": 6,
"create": 0,
"create2": 0,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0,
"upgrade_slot_write_suspected": false
}
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops = {
0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}
for i in range(1,17): ops[0xa0+i]=f'LOG{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
bytecode = json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']
code = bytes.fromhex(bytecode[2:] if bytecode.startswith('0x') else bytecode)
# disassemble full with indexed pcs
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
name=ops.get(op,f'OP_{op:02x}')
arg=None
size=1
if 0x60 <= op <= 0x7f:
n=op-0x5f
arg=code[pc+1:pc+1+n]
size+=n
instrs.append((pc,name,arg))
pc += size
# print windows around key pcs
keys=[117,130,147,480,652,691,731,1314,1343,1435,1453,1521,1535,1568,1582,1643,1918,1942,2061,2093,2153,2204,2277,2354,2452,2511]
for key in keys:
print(f'===== around {key} =====')
for pc,name,arg in instrs:
if key-20 <= pc <= key+25:
if arg is None:
print(f'{pc:04d}: {name}')
else:
print(f'{pc:04d}: {name} 0x{arg.hex()}')
PY" in /tmp/codex-728_ya93
exited 1 in 0ms:
Traceback (most recent call last):
File "<stdin>", line 19, in <module>
AttributeError: 'dict' object has no attribute 'startswith'
exec
/bin/bash -lc "jq '.artifact.runtime_bytecode | type, .' BYTECODE_BUNDLE.json | sed -n '1,40p'" in /tmp/codex-728_ya93
succeeded in 0ms:
"object"
{
"full": "0x600061047f537c010000000000000000000000000000000000000000000000000000000060003504635a9809ed81141561032c573659905901600090523660048237600435606052602435608052604435602082010160a05260643560c052608435602082010160e0525060c0513412156100935760006000600060003433611388f1506001600003610100526020610100f35b6e027220000000000000000000000000546101205260c05134036127226101205102556060516127226101205102600101556080516127226101205102600201556000610140525b602060a051035161014051121561015c576101405160200260a05101516101405161272261012051026003010155601c60205990590160009052016101405160200260a0510151610120517f1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e600084a35060016101405101610140526100db565b602060a05103516127226101205102612713015560c05161272261012051026127170155602060e0510351612722610120510261271801556000610140525b602060e05103516020610140510212156101e0576101405160200260e0510151600161014051016127226101205102612718010155600161014051016101405261019b565b600161012051016e027220000000000000000000000000556080601c6101a059905901600090520160c0513403815260a05160208103516020026020018360208401526020820360a0840152806101208401528084019350505060c051604082015260e0516020601f602083035101046020026020018360608401526020820360e0840152806101608401528084019350505081600401599059016000905260808160808460006004601ef161029257fe5b6080810192506101208201518080858260a087015160006004600a8705601201f16102b957fe5b508084019350506101608201518080858260e087015160006004600a8705601201f16102e157fe5b50808401935050808303610120516080516060517f8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba8486a45050505061012051610220526020610220f35b63d5f39e248114156103535760043561012052612722610120510254610240526020610240f35b63a11af3878114156103b5576004356101205260605990590160009052600281526127226101205102600101546020820152612722610120510260020154604082015260208101905060206040820352602060208203510260400160408203f3505b637b0ae93481141561044f576004356101205260c859905901600090526102a052612722610120510261271301546102a051526000610140525b6102a0515161014051121561042f576101405161272261012051026003010154600161014051016020026102a051015260016101405101610140526103ef565b60206102a0510160206040820352602060208203510260400160408203f3505b63d966f79981141561047a5760043561012052612722610120510261271701546102e05260206102e0f35b633cd86b7781141561052257600435610120526101405990590160009052610300526000610140526127226101205102612718015461030051525b61030051516020610140510212156104fc576001610140510161272261012051026127180101546001610140510160200261030051015260016101405101610140526104b5565b60206103005101602060408203526020601f6020830351604001010460200260408203f3505b638f26e0fe81141561054a576e02722000000000000000000000000054610340526020610340f35b63f2e497ae8114156109ee5736599059016000905236600482376004356101205260243561036052506001600003610380526000610140525b612722610120510261271301546101405112156105f15733610140516127226101205102600301015414156105e1576101405160020a6103a0526000612722610120510261271401546103a0511614156105e05761014051610380525b5b6001610140510161014052610583565b3361272261012051026001015414156106105760006103605114610613565b60005b15610620576103e7610380525b33612722610120510260020154141561063f5760016103605114610642565b60005b1561064f576103e7610380525b600160000361038051141561066b5760006103c05260206103c0f35b60006103e0526103a051612722610120510261271401541761272261012051026127140155601c604059905901600090520161036051815233610120517fcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26602084a3506103e76103805114151561077e5761036051156107315760016127226101205102612715015401612722610120510261271501556127226101205102612713015460026127226101205102612715015402131561072c5760016103e0525b610779565b6001612722610120510261271601540161272261012051026127160155612722610120510261271301546002612722610120510261271601540213156107785760026103e0525b5b610796565b610360511561078e576001610791565b60025b6103e0525b6103e051156109e15760006101405261272261012051026127160154612722610120510261271501540161040052610400516127226101205102612717015405610420525b6127226101205102612713015461014051121561083f57612722610120510261271401546101405160020a161561082f576000600060006000610420516101405161272261012051026003010154611388f1505b60016101405101610140526107db565b60016103e051141561085c57612722610120510260010154610869565b6127226101205102600201545b6104405260006000600060006000610400511461272261012051026127170154026127226101205102540161044051611388f150601c6040599059016000905201610440518152610120517fd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3602083a2506000612722610120510255600061272261012051026001015560006127226101205102600201556000610140525b6127226101205102612713015461014051121561094257600061014051612722610120510260030101556001610140510161014052610908565b6000612722610120510261271301556000612722610120510261271401556000612722610120510261271501556000612722610120510261271601556000612722610120510261271701556000610140525b600a6101405112156109e05760006101405161272261012051026127180101541415156109d05760006101405161272261012051026127180101555b6001610140510161014052610994565b5b6001610460526020610460f35b50",
"head": null,
"length": 5090,
"tail": null,
"truncated": false
}
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops = {
0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
}
bytecode = json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full']
code = bytes.fromhex(bytecode[2:])
instrs=[]
pc=0
while pc < len(code):
op=code[pc]
name=ops.get(op,f'OP_{op:02x}')
arg=None
size=1
if 0x60 <= op <= 0x7f:
n=op-0x5f
arg=code[pc+1:pc+1+n]
size+=n
instrs.append((pc,name,arg))
pc += size
keys=[0,52,117,130,147,219,237,348,411,432,480,652,658,691,697,731,737,812,851,949,1103,1146,1314,1343,1411,1435,1453,1521,1535,1568,1582,1643,1918,1942,1952,2011,2061,2093,2111,2153,2204,2277,2354,2452,2511,2529]
for key in keys:
print(f'===== around {key} =====')
for pc,name,arg in instrs:
if key-20 <= pc <= key+30:
if arg is None:
print(f'{pc:04d}: {name}')
else:
print(f'{pc:04d}: {name} 0x{arg.hex()}')
PY" in /tmp/codex-728_ya93
succeeded in 0ms:
===== around 0 =====
0000: PUSH1 0x00
0002: PUSH2 0x047f
0005: MSTORE8
0006: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
===== around 52 =====
0036: PUSH1 0x00
0038: CALLDATALOAD
0039: DIV
0040: PUSH4 0x5a9809ed
0045: DUP2
0046: EQ
0047: ISZERO
0048: PUSH2 0x032c
0051: JUMPI
0052: CALLDATASIZE
0053: MSIZE
0054: SWAP1
0055: MSIZE
0056: ADD
0057: PUSH1 0x00
0059: SWAP1
0060: MSTORE
0061: CALLDATASIZE
0062: PUSH1 0x04
0064: DUP3
0065: CALLDATACOPY
0066: PUSH1 0x04
0068: CALLDATALOAD
0069: PUSH1 0x60
0071: MSTORE
0072: PUSH1 0x24
0074: CALLDATALOAD
0075: PUSH1 0x80
0077: MSTORE
0078: PUSH1 0x44
0080: CALLDATALOAD
0081: PUSH1 0x20
===== around 117 =====
0097: CALLDATALOAD
0098: PUSH1 0x20
0100: DUP3
0101: ADD
0102: ADD
0103: PUSH1 0xe0
0105: MSTORE
0106: POP
0107: PUSH1 0xc0
0109: MLOAD
0110: CALLVALUE
0111: SLT
0112: ISZERO
0113: PUSH2 0x0093
0116: JUMPI
0117: PUSH1 0x00
0119: PUSH1 0x00
0121: PUSH1 0x00
0123: PUSH1 0x00
0125: CALLVALUE
0126: CALLER
0127: PUSH2 0x1388
0130: CALL
0131: POP
0132: PUSH1 0x01
0134: PUSH1 0x00
0136: SUB
0137: PUSH2 0x0100
0140: MSTORE
0141: PUSH1 0x20
0143: PUSH2 0x0100
0146: RETURN
0147: JUMPDEST
===== around 130 =====
0110: CALLVALUE
0111: SLT
0112: ISZERO
0113: PUSH2 0x0093
0116: JUMPI
0117: PUSH1 0x00
0119: PUSH1 0x00
0121: PUSH1 0x00
0123: PUSH1 0x00
0125: CALLVALUE
0126: CALLER
0127: PUSH2 0x1388
0130: CALL
0131: POP
0132: PUSH1 0x01
0134: PUSH1 0x00
0136: SUB
0137: PUSH2 0x0100
0140: MSTORE
0141: PUSH1 0x20
0143: PUSH2 0x0100
0146: RETURN
0147: JUMPDEST
0148: PUSH15 0x027220000000000000000000000000
===== around 147 =====
0127: PUSH2 0x1388
0130: CALL
0131: POP
0132: PUSH1 0x01
0134: PUSH1 0x00
0136: SUB
0137: PUSH2 0x0100
0140: MSTORE
0141: PUSH1 0x20
0143: PUSH2 0x0100
0146: RETURN
0147: JUMPDEST
0148: PUSH15 0x027220000000000000000000000000
0164: SLOAD
0165: PUSH2 0x0120
0168: MSTORE
0169: PUSH1 0xc0
0171: MLOAD
0172: CALLVALUE
0173: SUB
0174: PUSH2 0x2722
0177: PUSH2 0x0120
===== around 219 =====
0200: MLOAD
0201: PUSH2 0x2722
0204: PUSH2 0x0120
0207: MLOAD
0208: MUL
0209: PUSH1 0x02
0211: ADD
0212: SSTORE
0213: PUSH1 0x00
0215: PUSH2 0x0140
0218: MSTORE
0219: JUMPDEST
0220: PUSH1 0x20
0222: PUSH1 0xa0
0224: MLOAD
0225: SUB
0226: MLOAD
0227: PUSH2 0x0140
0230: MLOAD
0231: SLT
0232: ISZERO
0233: PUSH2 0x015c
0236: JUMPI
0237: PUSH2 0x0140
0240: MLOAD
0241: PUSH1 0x20
0243: MUL
0244: PUSH1 0xa0
0246: MLOAD
0247: ADD
0248: MLOAD
0249: PUSH2 0x0140
===== around 237 =====
0218: MSTORE
0219: JUMPDEST
0220: PUSH1 0x20
0222: PUSH1 0xa0
0224: MLOAD
0225: SUB
0226: MLOAD
0227: PUSH2 0x0140
0230: MLOAD
0231: SLT
0232: ISZERO
0233: PUSH2 0x015c
0236: JUMPI
0237: PUSH2 0x0140
0240: MLOAD
0241: PUSH1 0x20
0243: MUL
0244: PUSH1 0xa0
0246: MLOAD
0247: ADD
0248: MLOAD
0249: PUSH2 0x0140
0252: MLOAD
0253: PUSH2 0x2722
0256: PUSH2 0x0120
0259: MLOAD
0260: MUL
0261: PUSH1 0x03
0263: ADD
0264: ADD
0265: SSTORE
0266: PUSH1 0x1c
===== around 348 =====
0328: PUSH1 0x00
0330: DUP5
0331: LOG3
0332: POP
0333: PUSH1 0x01
0335: PUSH2 0x0140
0338: MLOAD
0339: ADD
0340: PUSH2 0x0140
0343: MSTORE
0344: PUSH2 0x00db
0347: JUMP
0348: JUMPDEST
0349: PUSH1 0x20
0351: PUSH1 0xa0
0353: MLOAD
0354: SUB
0355: MLOAD
0356: PUSH2 0x2722
0359: PUSH2 0x0120
0362: MLOAD
0363: MUL
0364: PUSH2 0x2713
0367: ADD
0368: SSTORE
0369: PUSH1 0xc0
0371: MLOAD
0372: PUSH2 0x2722
0375: PUSH2 0x0120
0378: MLOAD
===== around 411 =====
0391: MLOAD
0392: PUSH2 0x2722
0395: PUSH2 0x0120
0398: MLOAD
0399: MUL
0400: PUSH2 0x2718
0403: ADD
0404: SSTORE
0405: PUSH1 0x00
0407: PUSH2 0x0140
0410: MSTORE
0411: JUMPDEST
0412: PUSH1 0x20
0414: PUSH1 0xe0
0416: MLOAD
0417: SUB
0418: MLOAD
0419: PUSH1 0x20
0421: PUSH2 0x0140
0424: MLOAD
0425: MUL
0426: SLT
0427: ISZERO
0428: PUSH2 0x01e0
0431: JUMPI
0432: PUSH2 0x0140
0435: MLOAD
0436: PUSH1 0x20
0438: MUL
0439: PUSH1 0xe0
0441: MLOAD
===== around 432 =====
0412: PUSH1 0x20
0414: PUSH1 0xe0
0416: MLOAD
0417: SUB
0418: MLOAD
0419: PUSH1 0x20
0421: PUSH2 0x0140
0424: MLOAD
0425: MUL
0426: SLT
0427: ISZERO
0428: PUSH2 0x01e0
0431: JUMPI
0432: PUSH2 0x0140
0435: MLOAD
0436: PUSH1 0x20
0438: MUL
0439: PUSH1 0xe0
0441: MLOAD
0442: ADD
0443: MLOAD
0444: PUSH1 0x01
0446: PUSH2 0x0140
0449: MLOAD
0450: ADD
0451: PUSH2 0x2722
0454: PUSH2 0x0120
0457: MLOAD
0458: MUL
0459: PUSH2 0x2718
0462: ADD
===== around 480 =====
0462: ADD
0463: ADD
0464: SSTORE
0465: PUSH1 0x01
0467: PUSH2 0x0140
0470: MLOAD
0471: ADD
0472: PUSH2 0x0140
0475: MSTORE
0476: PUSH2 0x019b
0479: JUMP
0480: JUMPDEST
0481: PUSH1 0x01
0483: PUSH2 0x0120
0486: MLOAD
0487: ADD
0488: PUSH15 0x027220000000000000000000000000
0504: SSTORE
0505: PUSH1 0x80
0507: PUSH1 0x1c
0509: PUSH2 0x01a0
===== around 652 =====
0632: MSIZE
0633: SWAP1
0634: MSIZE
0635: ADD
0636: PUSH1 0x00
0638: SWAP1
0639: MSTORE
0640: PUSH1 0x80
0642: DUP2
0643: PUSH1 0x80
0645: DUP5
0646: PUSH1 0x00
0648: PUSH1 0x04
0650: PUSH1 0x1e
0652: CALL
0653: PUSH2 0x0292
0656: JUMPI
0657: INVALID
0658: JUMPDEST
0659: PUSH1 0x80
0661: DUP2
0662: ADD
0663: SWAP3
0664: POP
0665: PUSH2 0x0120
0668: DUP3
0669: ADD
0670: MLOAD
0671: DUP1
0672: DUP1
0673: DUP6
0674: DUP3
0675: PUSH1 0xa0
0677: DUP8
0678: ADD
0679: MLOAD
0680: PUSH1 0x00
0682: PUSH1 0x04
===== around 658 =====
0638: SWAP1
0639: MSTORE
0640: PUSH1 0x80
0642: DUP2
0643: PUSH1 0x80
0645: DUP5
0646: PUSH1 0x00
0648: PUSH1 0x04
0650: PUSH1 0x1e
0652: CALL
0653: PUSH2 0x0292
0656: JUMPI
0657: INVALID
0658: JUMPDEST
0659: PUSH1 0x80
0661: DUP2
0662: ADD
0663: SWAP3
0664: POP
0665: PUSH2 0x0120
0668: DUP3
0669: ADD
0670: MLOAD
0671: DUP1
0672: DUP1
0673: DUP6
0674: DUP3
0675: PUSH1 0xa0
0677: DUP8
0678: ADD
0679: MLOAD
0680: PUSH1 0x00
0682: PUSH1 0x04
0684: PUSH1 0x0a
0686: DUP8
0687: SDIV
0688: PUSH1 0x12
===== around 691 =====
0671: DUP1
0672: DUP1
0673: DUP6
0674: DUP3
0675: PUSH1 0xa0
0677: DUP8
0678: ADD
0679: MLOAD
0680: PUSH1 0x00
0682: PUSH1 0x04
0684: PUSH1 0x0a
0686: DUP8
0687: SDIV
0688: PUSH1 0x12
0690: ADD
0691: CALL
0692: PUSH2 0x02b9
0695: JUMPI
0696: INVALID
0697: JUMPDEST
0698: POP
0699: DUP1
0700: DUP5
0701: ADD
0702: SWAP4
0703: POP
0704: POP
0705: PUSH2 0x0160
0708: DUP3
0709: ADD
0710: MLOAD
0711: DUP1
0712: DUP1
0713: DUP6
0714: DUP3
0715: PUSH1 0xe0
0717: DUP8
0718: ADD
0719: MLOAD
0720: PUSH1 0x00
===== around 697 =====
0677: DUP8
0678: ADD
0679: MLOAD
0680: PUSH1 0x00
0682: PUSH1 0x04
0684: PUSH1 0x0a
0686: DUP8
0687: SDIV
0688: PUSH1 0x12
0690: ADD
0691: CALL
0692: PUSH2 0x02b9
0695: JUMPI
0696: INVALID
0697: JUMPDEST
0698: POP
0699: DUP1
0700: DUP5
0701: ADD
0702: SWAP4
0703: POP
0704: POP
0705: PUSH2 0x0160
0708: DUP3
0709: ADD
0710: MLOAD
0711: DUP1
0712: DUP1
0713: DUP6
0714: DUP3
0715: PUSH1 0xe0
0717: DUP8
0718: ADD
0719: MLOAD
0720: PUSH1 0x00
0722: PUSH1 0x04
0724: PUSH1 0x0a
0726: DUP8
0727: SDIV
===== around 731 =====
0711: DUP1
0712: DUP1
0713: DUP6
0714: DUP3
0715: PUSH1 0xe0
0717: DUP8
0718: ADD
0719: MLOAD
0720: PUSH1 0x00
0722: PUSH1 0x04
0724: PUSH1 0x0a
0726: DUP8
0727: SDIV
0728: PUSH1 0x12
0730: ADD
0731: CALL
0732: PUSH2 0x02e1
0735: JUMPI
0736: INVALID
0737: JUMPDEST
0738: POP
0739: DUP1
0740: DUP5
0741: ADD
0742: SWAP4
0743: POP
0744: POP
0745: DUP1
0746: DUP4
0747: SUB
0748: PUSH2 0x0120
0751: MLOAD
0752: PUSH1 0x80
0754: MLOAD
0755: PUSH1 0x60
0757: MLOAD
0758: PUSH32 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba
===== around 737 =====
0717: DUP8
0718: ADD
0719: MLOAD
0720: PUSH1 0x00
0722: PUSH1 0x04
0724: PUSH1 0x0a
0726: DUP8
0727: SDIV
0728: PUSH1 0x12
0730: ADD
0731: CALL
0732: PUSH2 0x02e1
0735: JUMPI
0736: INVALID
0737: JUMPDEST
0738: POP
0739: DUP1
0740: DUP5
0741: ADD
0742: SWAP4
0743: POP
0744: POP
0745: DUP1
0746: DUP4
0747: SUB
0748: PUSH2 0x0120
0751: MLOAD
0752: PUSH1 0x80
0754: MLOAD
0755: PUSH1 0x60
0757: MLOAD
0758: PUSH32 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba
===== around 812 =====
0792: DUP7
0793: LOG4
0794: POP
0795: POP
0796: POP
0797: POP
0798: PUSH2 0x0120
0801: MLOAD
0802: PUSH2 0x0220
0805: MSTORE
0806: PUSH1 0x20
0808: PUSH2 0x0220
0811: RETURN
0812: JUMPDEST
0813: PUSH4 0xd5f39e24
0818: DUP2
0819: EQ
0820: ISZERO
0821: PUSH2 0x0353
0824: JUMPI
0825: PUSH1 0x04
0827: CALLDATALOAD
0828: PUSH2 0x0120
0831: MSTORE
0832: PUSH2 0x2722
0835: PUSH2 0x0120
0838: MLOAD
0839: MUL
0840: SLOAD
0841: PUSH2 0x0240
===== around 851 =====
0831: MSTORE
0832: PUSH2 0x2722
0835: PUSH2 0x0120
0838: MLOAD
0839: MUL
0840: SLOAD
0841: PUSH2 0x0240
0844: MSTORE
0845: PUSH1 0x20
0847: PUSH2 0x0240
0850: RETURN
0851: JUMPDEST
0852: PUSH4 0xa11af387
0857: DUP2
0858: EQ
0859: ISZERO
0860: PUSH2 0x03b5
0863: JUMPI
0864: PUSH1 0x04
0866: CALLDATALOAD
0867: PUSH2 0x0120
0870: MSTORE
0871: PUSH1 0x60
0873: MSIZE
0874: SWAP1
0875: MSIZE
0876: ADD
0877: PUSH1 0x00
0879: SWAP1
0880: MSTORE
0881: PUSH1 0x02
===== around 949 =====
0929: DUP3
0930: SUB
0931: MSTORE
0932: PUSH1 0x20
0934: PUSH1 0x20
0936: DUP3
0937: SUB
0938: MLOAD
0939: MUL
0940: PUSH1 0x40
0942: ADD
0943: PUSH1 0x40
0945: DUP3
0946: SUB
0947: RETURN
0948: POP
0949: JUMPDEST
0950: PUSH4 0x7b0ae934
0955: DUP2
0956: EQ
0957: ISZERO
0958: PUSH2 0x044f
0961: JUMPI
0962: PUSH1 0x04
0964: CALLDATALOAD
0965: PUSH2 0x0120
0968: MSTORE
0969: PUSH1 0xc8
0971: MSIZE
0972: SWAP1
0973: MSIZE
0974: ADD
0975: PUSH1 0x00
0977: SWAP1
0978: MSTORE
0979: PUSH2 0x02a0
===== around 1103 =====
1083: DUP3
1084: SUB
1085: MSTORE
1086: PUSH1 0x20
1088: PUSH1 0x20
1090: DUP3
1091: SUB
1092: MLOAD
1093: MUL
1094: PUSH1 0x40
1096: ADD
1097: PUSH1 0x40
1099: DUP3
1100: SUB
1101: RETURN
1102: POP
1103: JUMPDEST
1104: PUSH4 0xd966f799
1109: DUP2
1110: EQ
1111: ISZERO
1112: PUSH2 0x047a
1115: JUMPI
1116: PUSH1 0x04
1118: CALLDATALOAD
1119: PUSH2 0x0120
1122: MSTORE
1123: PUSH2 0x2722
1126: PUSH2 0x0120
1129: MLOAD
1130: MUL
1131: PUSH2 0x2717
===== around 1146 =====
1126: PUSH2 0x0120
1129: MLOAD
1130: MUL
1131: PUSH2 0x2717
1134: ADD
1135: SLOAD
1136: PUSH2 0x02e0
1139: MSTORE
1140: PUSH1 0x20
1142: PUSH2 0x02e0
1145: RETURN
1146: JUMPDEST
1147: PUSH4 0x3cd86b77
1152: DUP2
1153: EQ
1154: ISZERO
1155: PUSH2 0x0522
1158: JUMPI
1159: PUSH1 0x04
1161: CALLDATALOAD
1162: PUSH2 0x0120
1165: MSTORE
1166: PUSH2 0x0140
1169: MSIZE
1170: SWAP1
1171: MSIZE
1172: ADD
1173: PUSH1 0x00
1175: SWAP1
1176: MSTORE
===== around 1314 =====
1295: PUSH1 0x20
1297: DUP4
1298: SUB
1299: MLOAD
1300: PUSH1 0x40
1302: ADD
1303: ADD
1304: DIV
1305: PUSH1 0x20
1307: MUL
1308: PUSH1 0x40
1310: DUP3
1311: SUB
1312: RETURN
1313: POP
1314: JUMPDEST
1315: PUSH4 0x8f26e0fe
1320: DUP2
1321: EQ
1322: ISZERO
1323: PUSH2 0x054a
1326: JUMPI
1327: PUSH15 0x027220000000000000000000000000
1343: SLOAD
1344: PUSH2 0x0340
===== around 1343 =====
1323: PUSH2 0x054a
1326: JUMPI
1327: PUSH15 0x027220000000000000000000000000
1343: SLOAD
1344: PUSH2 0x0340
1347: MSTORE
1348: PUSH1 0x20
1350: PUSH2 0x0340
1353: RETURN
1354: JUMPDEST
1355: PUSH4 0xf2e497ae
1360: DUP2
1361: EQ
1362: ISZERO
1363: PUSH2 0x09ee
1366: JUMPI
1367: CALLDATASIZE
1368: MSIZE
1369: SWAP1
1370: MSIZE
1371: ADD
1372: PUSH1 0x00
===== around 1411 =====
1391: PUSH2 0x0360
1394: MSTORE
1395: POP
1396: PUSH1 0x01
1398: PUSH1 0x00
1400: SUB
1401: PUSH2 0x0380
1404: MSTORE
1405: PUSH1 0x00
1407: PUSH2 0x0140
1410: MSTORE
1411: JUMPDEST
1412: PUSH2 0x2722
1415: PUSH2 0x0120
1418: MLOAD
1419: MUL
1420: PUSH2 0x2713
1423: ADD
1424: SLOAD
1425: PUSH2 0x0140
1428: MLOAD
1429: SLT
1430: ISZERO
1431: PUSH2 0x05f1
1434: JUMPI
1435: CALLER
1436: PUSH2 0x0140
1439: MLOAD
1440: PUSH2 0x2722
===== around 1435 =====
1415: PUSH2 0x0120
1418: MLOAD
1419: MUL
1420: PUSH2 0x2713
1423: ADD
1424: SLOAD
1425: PUSH2 0x0140
1428: MLOAD
1429: SLT
1430: ISZERO
1431: PUSH2 0x05f1
1434: JUMPI
1435: CALLER
1436: PUSH2 0x0140
1439: MLOAD
1440: PUSH2 0x2722
1443: PUSH2 0x0120
1446: MLOAD
1447: MUL
1448: PUSH1 0x03
1450: ADD
1451: ADD
1452: SLOAD
1453: EQ
1454: ISZERO
1455: PUSH2 0x05e1
1458: JUMPI
1459: PUSH2 0x0140
1462: MLOAD
1463: PUSH1 0x02
1465: EXP
===== around 1453 =====
1434: JUMPI
1435: CALLER
1436: PUSH2 0x0140
1439: MLOAD
1440: PUSH2 0x2722
1443: PUSH2 0x0120
1446: MLOAD
1447: MUL
1448: PUSH1 0x03
1450: ADD
1451: ADD
1452: SLOAD
1453: EQ
1454: ISZERO
1455: PUSH2 0x05e1
1458: JUMPI
1459: PUSH2 0x0140
1462: MLOAD
1463: PUSH1 0x02
1465: EXP
1466: PUSH2 0x03a0
1469: MSTORE
1470: PUSH1 0x00
1472: PUSH2 0x2722
1475: PUSH2 0x0120
1478: MLOAD
1479: MUL
1480: PUSH2 0x2714
1483: ADD
===== around 1521 =====
1503: MSTORE
1504: JUMPDEST
1505: JUMPDEST
1506: PUSH1 0x01
1508: PUSH2 0x0140
1511: MLOAD
1512: ADD
1513: PUSH2 0x0140
1516: MSTORE
1517: PUSH2 0x0583
1520: JUMP
1521: JUMPDEST
1522: CALLER
1523: PUSH2 0x2722
1526: PUSH2 0x0120
1529: MLOAD
1530: MUL
1531: PUSH1 0x01
1533: ADD
1534: SLOAD
1535: EQ
1536: ISZERO
1537: PUSH2 0x0610
1540: JUMPI
1541: PUSH1 0x00
1543: PUSH2 0x0360
1546: MLOAD
1547: EQ
1548: PUSH2 0x0613
1551: JUMP
===== around 1535 =====
1516: MSTORE
1517: PUSH2 0x0583
1520: JUMP
1521: JUMPDEST
1522: CALLER
1523: PUSH2 0x2722
1526: PUSH2 0x0120
1529: MLOAD
1530: MUL
1531: PUSH1 0x01
1533: ADD
1534: SLOAD
1535: EQ
1536: ISZERO
1537: PUSH2 0x0610
1540: JUMPI
1541: PUSH1 0x00
1543: PUSH2 0x0360
1546: MLOAD
1547: EQ
1548: PUSH2 0x0613
1551: JUMP
1552: JUMPDEST
1553: PUSH1 0x00
1555: JUMPDEST
1556: ISZERO
1557: PUSH2 0x0620
1560: JUMPI
1561: PUSH2 0x03e7
1564: PUSH2 0x0380
===== around 1568 =====
1548: PUSH2 0x0613
1551: JUMP
1552: JUMPDEST
1553: PUSH1 0x00
1555: JUMPDEST
1556: ISZERO
1557: PUSH2 0x0620
1560: JUMPI
1561: PUSH2 0x03e7
1564: PUSH2 0x0380
1567: MSTORE
1568: JUMPDEST
1569: CALLER
1570: PUSH2 0x2722
1573: PUSH2 0x0120
1576: MLOAD
1577: MUL
1578: PUSH1 0x02
1580: ADD
1581: SLOAD
1582: EQ
1583: ISZERO
1584: PUSH2 0x063f
1587: JUMPI
1588: PUSH1 0x01
1590: PUSH2 0x0360
1593: MLOAD
1594: EQ
1595: PUSH2 0x0642
1598: JUMP
===== around 1582 =====
1564: PUSH2 0x0380
1567: MSTORE
1568: JUMPDEST
1569: CALLER
1570: PUSH2 0x2722
1573: PUSH2 0x0120
1576: MLOAD
1577: MUL
1578: PUSH1 0x02
1580: ADD
1581: SLOAD
1582: EQ
1583: ISZERO
1584: PUSH2 0x063f
1587: JUMPI
1588: PUSH1 0x01
1590: PUSH2 0x0360
1593: MLOAD
1594: EQ
1595: PUSH2 0x0642
1598: JUMP
1599: JUMPDEST
1600: PUSH1 0x00
1602: JUMPDEST
1603: ISZERO
1604: PUSH2 0x064f
1607: JUMPI
1608: PUSH2 0x03e7
1611: PUSH2 0x0380
===== around 1643 =====
1624: MLOAD
1625: EQ
1626: ISZERO
1627: PUSH2 0x066b
1630: JUMPI
1631: PUSH1 0x00
1633: PUSH2 0x03c0
1636: MSTORE
1637: PUSH1 0x20
1639: PUSH2 0x03c0
1642: RETURN
1643: JUMPDEST
1644: PUSH1 0x00
1646: PUSH2 0x03e0
1649: MSTORE
1650: PUSH2 0x03a0
1653: MLOAD
1654: PUSH2 0x2722
1657: PUSH2 0x0120
1660: MLOAD
1661: MUL
1662: PUSH2 0x2714
1665: ADD
1666: SLOAD
1667: OR
1668: PUSH2 0x2722
1671: PUSH2 0x0120
===== around 1918 =====
1898: SLOAD
1899: MUL
1900: SGT
1901: ISZERO
1902: PUSH2 0x0778
1905: JUMPI
1906: PUSH1 0x02
1908: PUSH2 0x03e0
1911: MSTORE
1912: JUMPDEST
1913: JUMPDEST
1914: PUSH2 0x0796
1917: JUMP
1918: JUMPDEST
1919: PUSH2 0x0360
1922: MLOAD
1923: ISZERO
1924: PUSH2 0x078e
1927: JUMPI
1928: PUSH1 0x01
1930: PUSH2 0x0791
1933: JUMP
1934: JUMPDEST
1935: PUSH1 0x02
1937: JUMPDEST
1938: PUSH2 0x03e0
1941: MSTORE
1942: JUMPDEST
1943: PUSH2 0x03e0
1946: MLOAD
1947: ISZERO
1948: PUSH2 0x09e1
===== around 1942 =====
1922: MLOAD
1923: ISZERO
1924: PUSH2 0x078e
1927: JUMPI
1928: PUSH1 0x01
1930: PUSH2 0x0791
1933: JUMP
1934: JUMPDEST
1935: PUSH1 0x02
1937: JUMPDEST
1938: PUSH2 0x03e0
1941: MSTORE
1942: JUMPDEST
1943: PUSH2 0x03e0
1946: MLOAD
1947: ISZERO
1948: PUSH2 0x09e1
1951: JUMPI
1952: PUSH1 0x00
1954: PUSH2 0x0140
1957: MSTORE
1958: PUSH2 0x2722
1961: PUSH2 0x0120
1964: MLOAD
1965: MUL
1966: PUSH2 0x2716
1969: ADD
1970: SLOAD
1971: PUSH2 0x2722
===== around 1952 =====
1933: JUMP
1934: JUMPDEST
1935: PUSH1 0x02
1937: JUMPDEST
1938: PUSH2 0x03e0
1941: MSTORE
1942: JUMPDEST
1943: PUSH2 0x03e0
1946: MLOAD
1947: ISZERO
1948: PUSH2 0x09e1
1951: JUMPI
1952: PUSH1 0x00
1954: PUSH2 0x0140
1957: MSTORE
1958: PUSH2 0x2722
1961: PUSH2 0x0120
1964: MLOAD
1965: MUL
1966: PUSH2 0x2716
1969: ADD
1970: SLOAD
1971: PUSH2 0x2722
1974: PUSH2 0x0120
1977: MLOAD
1978: MUL
1979: PUSH2 0x2715
1982: ADD
===== around 2011 =====
1992: MLOAD
1993: PUSH2 0x2722
1996: PUSH2 0x0120
1999: MLOAD
2000: MUL
2001: PUSH2 0x2717
2004: ADD
2005: SLOAD
2006: SDIV
2007: PUSH2 0x0420
2010: MSTORE
2011: JUMPDEST
2012: PUSH2 0x2722
2015: PUSH2 0x0120
2018: MLOAD
2019: MUL
2020: PUSH2 0x2713
2023: ADD
2024: SLOAD
2025: PUSH2 0x0140
2028: MLOAD
2029: SLT
2030: ISZERO
2031: PUSH2 0x083f
2034: JUMPI
2035: PUSH2 0x2722
2038: PUSH2 0x0120
2041: MLOAD
===== around 2061 =====
2041: MLOAD
2042: MUL
2043: PUSH2 0x2714
2046: ADD
2047: SLOAD
2048: PUSH2 0x0140
2051: MLOAD
2052: PUSH1 0x02
2054: EXP
2055: AND
2056: ISZERO
2057: PUSH2 0x082f
2060: JUMPI
2061: PUSH1 0x00
2063: PUSH1 0x00
2065: PUSH1 0x00
2067: PUSH1 0x00
2069: PUSH2 0x0420
2072: MLOAD
2073: PUSH2 0x0140
2076: MLOAD
2077: PUSH2 0x2722
2080: PUSH2 0x0120
2083: MLOAD
2084: MUL
2085: PUSH1 0x03
2087: ADD
2088: ADD
2089: SLOAD
2090: PUSH2 0x1388
===== around 2093 =====
2073: PUSH2 0x0140
2076: MLOAD
2077: PUSH2 0x2722
2080: PUSH2 0x0120
2083: MLOAD
2084: MUL
2085: PUSH1 0x03
2087: ADD
2088: ADD
2089: SLOAD
2090: PUSH2 0x1388
2093: CALL
2094: POP
2095: JUMPDEST
2096: PUSH1 0x01
2098: PUSH2 0x0140
2101: MLOAD
2102: ADD
2103: PUSH2 0x0140
2106: MSTORE
2107: PUSH2 0x07db
2110: JUMP
2111: JUMPDEST
2112: PUSH1 0x01
2114: PUSH2 0x03e0
2117: MLOAD
2118: EQ
2119: ISZERO
2120: PUSH2 0x085c
2123: JUMPI
===== around 2111 =====
2093: CALL
2094: POP
2095: JUMPDEST
2096: PUSH1 0x01
2098: PUSH2 0x0140
2101: MLOAD
2102: ADD
2103: PUSH2 0x0140
2106: MSTORE
2107: PUSH2 0x07db
2110: JUMP
2111: JUMPDEST
2112: PUSH1 0x01
2114: PUSH2 0x03e0
2117: MLOAD
2118: EQ
2119: ISZERO
2120: PUSH2 0x085c
2123: JUMPI
2124: PUSH2 0x2722
2127: PUSH2 0x0120
2130: MLOAD
2131: MUL
2132: PUSH1 0x01
2134: ADD
2135: SLOAD
2136: PUSH2 0x0869
2139: JUMP
2140: JUMPDEST
2141: PUSH2 0x2722
===== around 2153 =====
2134: ADD
2135: SLOAD
2136: PUSH2 0x0869
2139: JUMP
2140: JUMPDEST
2141: PUSH2 0x2722
2144: PUSH2 0x0120
2147: MLOAD
2148: MUL
2149: PUSH1 0x02
2151: ADD
2152: SLOAD
2153: JUMPDEST
2154: PUSH2 0x0440
2157: MSTORE
2158: PUSH1 0x00
2160: PUSH1 0x00
2162: PUSH1 0x00
2164: PUSH1 0x00
2166: PUSH1 0x00
2168: PUSH2 0x0400
2171: MLOAD
2172: EQ
2173: PUSH2 0x2722
2176: PUSH2 0x0120
2179: MLOAD
2180: MUL
2181: PUSH2 0x2717
===== around 2204 =====
2184: ADD
2185: SLOAD
2186: MUL
2187: PUSH2 0x2722
2190: PUSH2 0x0120
2193: MLOAD
2194: MUL
2195: SLOAD
2196: ADD
2197: PUSH2 0x0440
2200: MLOAD
2201: PUSH2 0x1388
2204: CALL
2205: POP
2206: PUSH1 0x1c
2208: PUSH1 0x40
2210: MSIZE
2211: SWAP1
2212: MSIZE
2213: ADD
2214: PUSH1 0x00
2216: SWAP1
2217: MSTORE
2218: ADD
2219: PUSH2 0x0440
2222: MLOAD
2223: DUP2
2224: MSTORE
2225: PUSH2 0x0120
2228: MLOAD
2229: PUSH32 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3
===== around 2277 =====
2262: PUSH1 0x20
2264: DUP4
2265: LOG2
2266: POP
2267: PUSH1 0x00
2269: PUSH2 0x2722
2272: PUSH2 0x0120
2275: MLOAD
2276: MUL
2277: SSTORE
2278: PUSH1 0x00
2280: PUSH2 0x2722
2283: PUSH2 0x0120
2286: MLOAD
2287: MUL
2288: PUSH1 0x01
2290: ADD
2291: SSTORE
2292: PUSH1 0x00
2294: PUSH2 0x2722
2297: PUSH2 0x0120
2300: MLOAD
2301: MUL
2302: PUSH1 0x02
2304: ADD
2305: SSTORE
2306: PUSH1 0x00
===== around 2354 =====
2335: JUMPI
2336: PUSH1 0x00
2338: PUSH2 0x0140
2341: MLOAD
2342: PUSH2 0x2722
2345: PUSH2 0x0120
2348: MLOAD
2349: MUL
2350: PUSH1 0x03
2352: ADD
2353: ADD
2354: SSTORE
2355: PUSH1 0x01
2357: PUSH2 0x0140
2360: MLOAD
2361: ADD
2362: PUSH2 0x0140
2365: MSTORE
2366: PUSH2 0x0908
2369: JUMP
2370: JUMPDEST
2371: PUSH1 0x00
2373: PUSH2 0x2722
2376: PUSH2 0x0120
2379: MLOAD
2380: MUL
2381: PUSH2 0x2713
2384: ADD
===== around 2452 =====
2433: PUSH2 0x2722
2436: PUSH2 0x0120
2439: MLOAD
2440: MUL
2441: PUSH2 0x2717
2444: ADD
2445: SSTORE
2446: PUSH1 0x00
2448: PUSH2 0x0140
2451: MSTORE
2452: JUMPDEST
2453: PUSH1 0x0a
2455: PUSH2 0x0140
2458: MLOAD
2459: SLT
2460: ISZERO
2461: PUSH2 0x09e0
2464: JUMPI
2465: PUSH1 0x00
2467: PUSH2 0x0140
2470: MLOAD
2471: PUSH2 0x2722
2474: PUSH2 0x0120
2477: MLOAD
2478: MUL
2479: PUSH2 0x2718
2482: ADD
===== around 2511 =====
2491: JUMPI
2492: PUSH1 0x00
2494: PUSH2 0x0140
2497: MLOAD
2498: PUSH2 0x2722
2501: PUSH2 0x0120
2504: MLOAD
2505: MUL
2506: PUSH2 0x2718
2509: ADD
2510: ADD
2511: SSTORE
2512: JUMPDEST
2513: PUSH1 0x01
2515: PUSH2 0x0140
2518: MLOAD
2519: ADD
2520: PUSH2 0x0140
2523: MSTORE
2524: PUSH2 0x0994
2527: JUMP
2528: JUMPDEST
2529: JUMPDEST
2530: PUSH1 0x01
2532: PUSH2 0x0460
2535: MSTORE
2536: PUSH1 0x20
2538: PUSH2 0x0460
2541: RETURN
===== around 2529 =====
2509: ADD
2510: ADD
2511: SSTORE
2512: JUMPDEST
2513: PUSH1 0x01
2515: PUSH2 0x0140
2518: MLOAD
2519: ADD
2520: PUSH2 0x0140
2523: MSTORE
2524: PUSH2 0x0994
2527: JUMP
2528: JUMPDEST
2529: JUMPDEST
2530: PUSH1 0x01
2532: PUSH2 0x0460
2535: MSTORE
2536: PUSH1 0x20
2538: PUSH2 0x0460
2541: RETURN
2542: JUMPDEST
2543: POP
exec
/bin/bash -lc "python - <<'PY'
import subprocess,shlex,os
sels=['5a9809ed','d5f39e24','a11af387','7b0ae934','d966f799','3cd86b77','8f26e0fe','f2e497ae']
# search common local 4byte databases if present
paths=[]
for root in ['/usr/share','/usr/local/share',os.path.expanduser('~/.local/share'),os.path.expanduser('~')]:
if os.path.exists(root):
try:
out=subprocess.check_output(['bash','-lc',f\"rg -n --no-messages '{'|'.join(sels)}' {shlex.quote(root)} | head -n 50\"], text=True)
if out.strip():
print('ROOT',root)
print(out)
except subprocess.CalledProcessError:
pass
PY" in /tmp/codex-728_ya93
succeeded in 6371ms:
exec
/bin/bash -lc "python - <<'PY'
import json
from pathlib import Path
ops = {**{i:n for i,n in [(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]} }
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
bytecode = json.loads(Path('BYTECODE_BUNDLE.json').read_text())['artifact']['runtime_bytecode']['full']
code = bytes.fromhex(bytecode[2:])
pc=0
while pc < len(code):
op=code[pc]; name=ops.get(op,f'OP_{op:02x}'); size=1; arg=''
if 0x60 <= op <= 0x7f:
n=op-0x5f; arg=' 0x'+code[pc+1:pc+1+n].hex(); size += n
if 1367 <= pc <= 2543:
print(f'{pc:04d}: {name}{arg}')
pc += size
PY" in /tmp/codex-728_ya93
succeeded in 0ms:
1367: CALLDATASIZE
1368: MSIZE
1369: SWAP1
1370: MSIZE
1371: ADD
1372: PUSH1 0x00
1374: SWAP1
1375: MSTORE
1376: CALLDATASIZE
1377: PUSH1 0x04
1379: DUP3
1380: CALLDATACOPY
1381: PUSH1 0x04
1383: CALLDATALOAD
1384: PUSH2 0x0120
1387: MSTORE
1388: PUSH1 0x24
1390: CALLDATALOAD
1391: PUSH2 0x0360
1394: MSTORE
1395: POP
1396: PUSH1 0x01
1398: PUSH1 0x00
1400: SUB
1401: PUSH2 0x0380
1404: MSTORE
1405: PUSH1 0x00
1407: PUSH2 0x0140
1410: MSTORE
1411: JUMPDEST
1412: PUSH2 0x2722
1415: PUSH2 0x0120
1418: MLOAD
1419: MUL
1420: PUSH2 0x2713
1423: ADD
1424: SLOAD
1425: PUSH2 0x0140
1428: MLOAD
1429: SLT
1430: ISZERO
1431: PUSH2 0x05f1
1434: JUMPI
1435: CALLER
1436: PUSH2 0x0140
1439: MLOAD
1440: PUSH2 0x2722
1443: PUSH2 0x0120
1446: MLOAD
1447: MUL
1448: PUSH1 0x03
1450: ADD
1451: ADD
1452: SLOAD
1453: EQ
1454: ISZERO
1455: PUSH2 0x05e1
1458: JUMPI
1459: PUSH2 0x0140
1462: MLOAD
1463: PUSH1 0x02
1465: EXP
1466: PUSH2 0x03a0
1469: MSTORE
1470: PUSH1 0x00
1472: PUSH2 0x2722
1475: PUSH2 0x0120
1478: MLOAD
1479: MUL
1480: PUSH2 0x2714
1483: ADD
1484: SLOAD
1485: PUSH2 0x03a0
1488: MLOAD
1489: AND
1490: EQ
1491: ISZERO
1492: PUSH2 0x05e0
1495: JUMPI
1496: PUSH2 0x0140
1499: MLOAD
1500: PUSH2 0x0380
1503: MSTORE
1504: JUMPDEST
1505: JUMPDEST
1506: PUSH1 0x01
1508: PUSH2 0x0140
1511: MLOAD
1512: ADD
1513: PUSH2 0x0140
1516: MSTORE
1517: PUSH2 0x0583
1520: JUMP
1521: JUMPDEST
1522: CALLER
1523: PUSH2 0x2722
1526: PUSH2 0x0120
1529: MLOAD
1530: MUL
1531: PUSH1 0x01
1533: ADD
1534: SLOAD
1535: EQ
1536: ISZERO
1537: PUSH2 0x0610
1540: JUMPI
1541: PUSH1 0x00
1543: PUSH2 0x0360
1546: MLOAD
1547: EQ
1548: PUSH2 0x0613
1551: JUMP
1552: JUMPDEST
1553: PUSH1 0x00
1555: JUMPDEST
1556: ISZERO
1557: PUSH2 0x0620
1560: JUMPI
1561: PUSH2 0x03e7
1564: PUSH2 0x0380
1567: MSTORE
1568: JUMPDEST
1569: CALLER
1570: PUSH2 0x2722
1573: PUSH2 0x0120
1576: MLOAD
1577: MUL
1578: PUSH1 0x02
1580: ADD
1581: SLOAD
1582: EQ
1583: ISZERO
1584: PUSH2 0x063f
1587: JUMPI
1588: PUSH1 0x01
1590: PUSH2 0x0360
1593: MLOAD
1594: EQ
1595: PUSH2 0x0642
1598: JUMP
1599: JUMPDEST
1600: PUSH1 0x00
1602: JUMPDEST
1603: ISZERO
1604: PUSH2 0x064f
1607: JUMPI
1608: PUSH2 0x03e7
1611: PUSH2 0x0380
1614: MSTORE
1615: JUMPDEST
1616: PUSH1 0x01
1618: PUSH1 0x00
1620: SUB
1621: PUSH2 0x0380
1624: MLOAD
1625: EQ
1626: ISZERO
1627: PUSH2 0x066b
1630: JUMPI
1631: PUSH1 0x00
1633: PUSH2 0x03c0
1636: MSTORE
1637: PUSH1 0x20
1639: PUSH2 0x03c0
1642: RETURN
1643: JUMPDEST
1644: PUSH1 0x00
1646: PUSH2 0x03e0
1649: MSTORE
1650: PUSH2 0x03a0
1653: MLOAD
1654: PUSH2 0x2722
1657: PUSH2 0x0120
1660: MLOAD
1661: MUL
1662: PUSH2 0x2714
1665: ADD
1666: SLOAD
1667: OR
1668: PUSH2 0x2722
1671: PUSH2 0x0120
1674: MLOAD
1675: MUL
1676: PUSH2 0x2714
1679: ADD
1680: SSTORE
1681: PUSH1 0x1c
1683: PUSH1 0x40
1685: MSIZE
1686: SWAP1
1687: MSIZE
1688: ADD
1689: PUSH1 0x00
1691: SWAP1
1692: MSTORE
1693: ADD
1694: PUSH2 0x0360
1697: MLOAD
1698: DUP2
1699: MSTORE
1700: CALLER
1701: PUSH2 0x0120
1704: MLOAD
1705: PUSH32 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26
1738: PUSH1 0x20
1740: DUP5
1741: LOG3
1742: POP
1743: PUSH2 0x03e7
1746: PUSH2 0x0380
1749: MLOAD
1750: EQ
1751: ISZERO
1752: ISZERO
1753: PUSH2 0x077e
1756: JUMPI
1757: PUSH2 0x0360
1760: MLOAD
1761: ISZERO
1762: PUSH2 0x0731
1765: JUMPI
1766: PUSH1 0x01
1768: PUSH2 0x2722
1771: PUSH2 0x0120
1774: MLOAD
1775: MUL
1776: PUSH2 0x2715
1779: ADD
1780: SLOAD
1781: ADD
1782: PUSH2 0x2722
1785: PUSH2 0x0120
1788: MLOAD
1789: MUL
1790: PUSH2 0x2715
1793: ADD
1794: SSTORE
1795: PUSH2 0x2722
1798: PUSH2 0x0120
1801: MLOAD
1802: MUL
1803: PUSH2 0x2713
1806: ADD
1807: SLOAD
1808: PUSH1 0x02
1810: PUSH2 0x2722
1813: PUSH2 0x0120
1816: MLOAD
1817: MUL
1818: PUSH2 0x2715
1821: ADD
1822: SLOAD
1823: MUL
1824: SGT
1825: ISZERO
1826: PUSH2 0x072c
1829: JUMPI
1830: PUSH1 0x01
1832: PUSH2 0x03e0
1835: MSTORE
1836: JUMPDEST
1837: PUSH2 0x0779
1840: JUMP
1841: JUMPDEST
1842: PUSH1 0x01
1844: PUSH2 0x2722
1847: PUSH2 0x0120
1850: MLOAD
1851: MUL
1852: PUSH2 0x2716
1855: ADD
1856: SLOAD
1857: ADD
1858: PUSH2 0x2722
1861: PUSH2 0x0120
1864: MLOAD
1865: MUL
1866: PUSH2 0x2716
1869: ADD
1870: SSTORE
1871: PUSH2 0x2722
1874: PUSH2 0x0120
1877: MLOAD
1878: MUL
1879: PUSH2 0x2713
1882: ADD
1883: SLOAD
1884: PUSH1 0x02
1886: PUSH2 0x2722
1889: PUSH2 0x0120
1892: MLOAD
1893: MUL
1894: PUSH2 0x2716
1897: ADD
1898: SLOAD
1899: MUL
1900: SGT
1901: ISZERO
1902: PUSH2 0x0778
1905: JUMPI
1906: PUSH1 0x02
1908: PUSH2 0x03e0
1911: MSTORE
1912: JUMPDEST
1913: JUMPDEST
1914: PUSH2 0x0796
1917: JUMP
1918: JUMPDEST
1919: PUSH2 0x0360
1922: MLOAD
1923: ISZERO
1924: PUSH2 0x078e
1927: JUMPI
1928: PUSH1 0x01
1930: PUSH2 0x0791
1933: JUMP
1934: JUMPDEST
1935: PUSH1 0x02
1937: JUMPDEST
1938: PUSH2 0x03e0
1941: MSTORE
1942: JUMPDEST
1943: PUSH2 0x03e0
1946: MLOAD
1947: ISZERO
1948: PUSH2 0x09e1
1951: JUMPI
1952: PUSH1 0x00
1954: PUSH2 0x0140
1957: MSTORE
1958: PUSH2 0x2722
1961: PUSH2 0x0120
1964: MLOAD
1965: MUL
1966: PUSH2 0x2716
1969: ADD
1970: SLOAD
1971: PUSH2 0x2722
1974: PUSH2 0x0120
1977: MLOAD
1978: MUL
1979: PUSH2 0x2715
1982: ADD
1983: SLOAD
1984: ADD
1985: PUSH2 0x0400
1988: MSTORE
1989: PUSH2 0x0400
1992: MLOAD
1993: PUSH2 0x2722
1996: PUSH2 0x0120
1999: MLOAD
2000: MUL
2001: PUSH2 0x2717
2004: ADD
2005: SLOAD
2006: SDIV
2007: PUSH2 0x0420
2010: MSTORE
2011: JUMPDEST
2012: PUSH2 0x2722
2015: PUSH2 0x0120
2018: MLOAD
2019: MUL
2020: PUSH2 0x2713
2023: ADD
2024: SLOAD
2025: PUSH2 0x0140
2028: MLOAD
2029: SLT
2030: ISZERO
2031: PUSH2 0x083f
2034: JUMPI
2035: PUSH2 0x2722
2038: PUSH2 0x0120
2041: MLOAD
2042: MUL
2043: PUSH2 0x2714
2046: ADD
2047: SLOAD
2048: PUSH2 0x0140
2051: MLOAD
2052: PUSH1 0x02
2054: EXP
2055: AND
2056: ISZERO
2057: PUSH2 0x082f
2060: JUMPI
2061: PUSH1 0x00
2063: PUSH1 0x00
2065: PUSH1 0x00
2067: PUSH1 0x00
2069: PUSH2 0x0420
2072: MLOAD
2073: PUSH2 0x0140
2076: MLOAD
2077: PUSH2 0x2722
2080: PUSH2 0x0120
2083: MLOAD
2084: MUL
2085: PUSH1 0x03
2087: ADD
2088: ADD
2089: SLOAD
2090: PUSH2 0x1388
2093: CALL
2094: POP
2095: JUMPDEST
2096: PUSH1 0x01
2098: PUSH2 0x0140
2101: MLOAD
2102: ADD
2103: PUSH2 0x0140
2106: MSTORE
2107: PUSH2 0x07db
2110: JUMP
2111: JUMPDEST
2112: PUSH1 0x01
2114: PUSH2 0x03e0
2117: MLOAD
2118: EQ
2119: ISZERO
2120: PUSH2 0x085c
2123: JUMPI
2124: PUSH2 0x2722
2127: PUSH2 0x0120
2130: MLOAD
2131: MUL
2132: PUSH1 0x01
2134: ADD
2135: SLOAD
2136: PUSH2 0x0869
2139: JUMP
2140: JUMPDEST
2141: PUSH2 0x2722
2144: PUSH2 0x0120
2147: MLOAD
2148: MUL
2149: PUSH1 0x02
2151: ADD
2152: SLOAD
2153: JUMPDEST
2154: PUSH2 0x0440
2157: MSTORE
2158: PUSH1 0x00
2160: PUSH1 0x00
2162: PUSH1 0x00
2164: PUSH1 0x00
2166: PUSH1 0x00
2168: PUSH2 0x0400
2171: MLOAD
2172: EQ
2173: PUSH2 0x2722
2176: PUSH2 0x0120
2179: MLOAD
2180: MUL
2181: PUSH2 0x2717
2184: ADD
2185: SLOAD
2186: MUL
2187: PUSH2 0x2722
2190: PUSH2 0x0120
2193: MLOAD
2194: MUL
2195: SLOAD
2196: ADD
2197: PUSH2 0x0440
2200: MLOAD
2201: PUSH2 0x1388
2204: CALL
2205: POP
2206: PUSH1 0x1c
2208: PUSH1 0x40
2210: MSIZE
2211: SWAP1
2212: MSIZE
2213: ADD
2214: PUSH1 0x00
2216: SWAP1
2217: MSTORE
2218: ADD
2219: PUSH2 0x0440
2222: MLOAD
2223: DUP2
2224: MSTORE
2225: PUSH2 0x0120
2228: MLOAD
2229: PUSH32 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3
2262: PUSH1 0x20
2264: DUP4
2265: LOG2
2266: POP
2267: PUSH1 0x00
2269: PUSH2 0x2722
2272: PUSH2 0x0120
2275: MLOAD
2276: MUL
2277: SSTORE
2278: PUSH1 0x00
2280: PUSH2 0x2722
2283: PUSH2 0x0120
2286: MLOAD
2287: MUL
2288: PUSH1 0x01
2290: ADD
2291: SSTORE
2292: PUSH1 0x00
2294: PUSH2 0x2722
2297: PUSH2 0x0120
2300: MLOAD
2301: MUL
2302: PUSH1 0x02
2304: ADD
2305: SSTORE
2306: PUSH1 0x00
2308: PUSH2 0x0140
2311: MSTORE
2312: JUMPDEST
2313: PUSH2 0x2722
2316: PUSH2 0x0120
2319: MLOAD
2320: MUL
2321: PUSH2 0x2713
2324: ADD
2325: SLOAD
2326: PUSH2 0x0140
2329: MLOAD
2330: SLT
2331: ISZERO
2332: PUSH2 0x0942
2335: JUMPI
2336: PUSH1 0x00
2338: PUSH2 0x0140
2341: MLOAD
2342: PUSH2 0x2722
2345: PUSH2 0x0120
2348: MLOAD
2349: MUL
2350: PUSH1 0x03
2352: ADD
2353: ADD
2354: SSTORE
2355: PUSH1 0x01
2357: PUSH2 0x0140
2360: MLOAD
2361: ADD
2362: PUSH2 0x0140
2365: MSTORE
2366: PUSH2 0x0908
2369: JUMP
2370: JUMPDEST
2371: PUSH1 0x00
2373: PUSH2 0x2722
2376: PUSH2 0x0120
2379: MLOAD
2380: MUL
2381: PUSH2 0x2713
2384: ADD
2385: SSTORE
2386: PUSH1 0x00
2388: PUSH2 0x2722
2391: PUSH2 0x0120
2394: MLOAD
2395: MUL
2396: PUSH2 0x2714
2399: ADD
2400: SSTORE
2401: PUSH1 0x00
2403: PUSH2 0x2722
2406: PUSH2 0x0120
2409: MLOAD
2410: MUL
2411: PUSH2 0x2715
2414: ADD
2415: SSTORE
2416: PUSH1 0x00
2418: PUSH2 0x2722
2421: PUSH2 0x0120
2424: MLOAD
2425: MUL
2426: PUSH2 0x2716
2429: ADD
2430: SSTORE
2431: PUSH1 0x00
2433: PUSH2 0x2722
2436: PUSH2 0x0120
2439: MLOAD
2440: MUL
2441: PUSH2 0x2717
2444: ADD
2445: SSTORE
2446: PUSH1 0x00
2448: PUSH2 0x0140
2451: MSTORE
2452: JUMPDEST
2453: PUSH1 0x0a
2455: PUSH2 0x0140
2458: MLOAD
2459: SLT
2460: ISZERO
2461: PUSH2 0x09e0
2464: JUMPI
2465: PUSH1 0x00
2467: PUSH2 0x0140
2470: MLOAD
2471: PUSH2 0x2722
2474: PUSH2 0x0120
2477: MLOAD
2478: MUL
2479: PUSH2 0x2718
2482: ADD
2483: ADD
2484: SLOAD
2485: EQ
2486: ISZERO
2487: ISZERO
2488: PUSH2 0x09d0
2491: JUMPI
2492: PUSH1 0x00
2494: PUSH2 0x0140
2497: MLOAD
2498: PUSH2 0x2722
2501: PUSH2 0x0120
2504: MLOAD
2505: MUL
2506: PUSH2 0x2718
2509: ADD
2510: ADD
2511: SSTORE
2512: JUMPDEST
2513: PUSH1 0x01
2515: PUSH2 0x0140
2518: MLOAD
2519: ADD
2520: PUSH2 0x0140
2523: MSTORE
2524: PUSH2 0x0994
2527: JUMP
2528: JUMPDEST
2529: JUMPDEST
2530: PUSH1 0x01
2532: PUSH2 0x0460
2535: MSTORE
2536: PUSH1 0x20
2538: PUSH2 0x0460
2541: RETURN
2542: JUMPDEST
2543: POP
codex
{"no_findings":false,"summary":"Bytecode-only review found meaningful unchecked ETH-transfer risks. The main payout path uses fixed-gas CALLs to computed recipient addresses, ignores the success flag, and then clears storage-backed entitlement state; this can silently burn payouts or desynchronize accounting when a recipient is a contract or intentionally reverts. A second, lower-confidence issue exists in the overpayment/refund branch, which also ignores refund failure and appears to return a sentinel value instead of reverting, potentially trapping excess ETH.","findings":[{"severity":"medium","category":"other","title":"Unchecked fixed-gas payout CALLs can fail silently while entitlement state is cleared","exploit_scenario":"In the best-effort selector path at `0xf2e497ae`, payouts are sent to computed storage-derived addresses. If one of those recipients is a contract wallet, has a reverting `receive`/fallback, or simply needs more than the hard-coded 5000 gas stipend, the CALL can fail. The bytecode then continues, and later zeroes multiple storage slots associated with the same account/round, so the recipient can lose their claim while the ETH remains in the contract.","recommendation":"Do not ignore CALL results on value transfers. Revert on failed payouts, or convert this logic to a pull-payment model that records unpaid balances for later withdrawal. Avoid fixed 5000-gas value pushes unless contract recipients are intentionally unsupported and that restriction is enforced/documented.","evidence":"At `pc:0x82d` and `pc:0x89c`, the contract performs `CALL` after pushing gas `0x1388` (5000). The success bit is immediately discarded with `POP` at the next instruction (`pc:0x82e` / `pc:0x89d`). After the later payout path, the bytecode emits an event and clears storage with `SSTORE` at `pc:0x8e5`, `pc:0x8f3`, `pc:0x901`, `pc:0x932`, `pc:0x951`, `pc:0x960`, `pc:0x96f`, `pc:0x97e`, `pc:0x98d`, and `pc:0x9cf`. Slot names are unknown from bytecode, but the sequence is consistent with state cleanup after unverified external value transfers.","locations":["selector:0xf2e497ae","pc:0x82d","pc:0x89c","pc:0x8e5","pc:0x932","pc:0x9cf"]},{"severity":"low","category":"other","title":"Overpayment refund branch ignores refund failure and appears to leave excess ETH trapped","exploit_scenario":"In the payable entry selector `0x5a9809ed`, an overpayment branch sends `msg.value` back to `msg.sender` with a raw CALL. If the caller is a contract that rejects ETH or needs more gas than provided, that refund can fail silently. The function then returns a sentinel value instead of reverting, so the excess ETH may remain stuck in the contract with no visible recovery path in the bytecode.","recommendation":"Treat refund failure as a hard failure and revert, or store refundable balances and require users to withdraw explicitly. Avoid push-style refunds to arbitrary callers when failure is ignored.","evidence":"The branch at `pc:0x6e`-`pc:0x74` compares a calldata-derived amount against `CALLVALUE` and jumps into the refund path. The refund itself occurs at `pc:0x82` via `CALL` to `CALLER` with `CALLVALUE`; the return status is discarded by `POP` at `pc:0x83`, and the function returns a sentinel all-ones value through `pc:0x84`-`pc:0x92` instead of reverting. Because this is bytecode-only analysis, selector semantics are uncertain, but the unchecked refund pattern is explicit.","locations":["selector:0x5a9809ed","pc:0x6e","pc:0x82","pc:0x83"]}]}
tokens used
83,941
{
"codex": {
"ran_at": "2026-04-05T01:10:54.255418+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 5090,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode-only review found meaningful unchecked ETH-transfer risks. The main payout path uses fixed-gas CALLs to computed recipient addresses, ignores the success flag, and then clears storage-backed entitlement state; this can silently burn payouts or desynchronize accounting when a recipient is a contract or intentionally reverts. A second, lower-confidence issue exists in the overpayment/refund branch, which also ignores refund failure and appears to return a sentinel value instead of reverting, potentially trapping excess ETH.",
"raw_final": {
"summary": "Bytecode-only review found meaningful unchecked ETH-transfer risks. The main payout path uses fixed-gas CALLs to computed recipient addresses, ignores the success flag, and then clears storage-backed entitlement state; this can silently burn payouts or desynchronize accounting when a recipient is a contract or intentionally reverts. A second, lower-confidence issue exists in the overpayment/refund branch, which also ignores refund failure and appears to return a sentinel value instead of reverting, potentially trapping excess ETH.",
"findings": [
{
"title": "Unchecked fixed-gas payout CALLs can fail silently while entitlement state is cleared",
"category": "other",
"evidence": "At `pc:0x82d` and `pc:0x89c`, the contract performs `CALL` after pushing gas `0x1388` (5000). The success bit is immediately discarded with `POP` at the next instruction (`pc:0x82e` / `pc:0x89d`). After the later payout path, the bytecode emits an event and clears storage with `SSTORE` at `pc:0x8e5`, `pc:0x8f3`, `pc:0x901`, `pc:0x932`, `pc:0x951`, `pc:0x960`, `pc:0x96f`, `pc:0x97e`, `pc:0x98d`, and `pc:0x9cf`. Slot names are unknown from bytecode, but the sequence is consistent with state cleanup after unverified external value transfers.",
"severity": "medium",
"locations": [
"selector:0xf2e497ae",
"pc:0x82d",
"pc:0x89c",
"pc:0x8e5",
"pc:0x932",
"pc:0x9cf"
],
"recommendation": "Do not ignore CALL results on value transfers. Revert on failed payouts, or convert this logic to a pull-payment model that records unpaid balances for later withdrawal. Avoid fixed 5000-gas value pushes unless contract recipients are intentionally unsupported and that restriction is enforced/documented.",
"exploit_scenario": "In the best-effort selector path at `0xf2e497ae`, payouts are sent to computed storage-derived addresses. If one of those recipients is a contract wallet, has a reverting `receive`/fallback, or simply needs more than the hard-coded 5000 gas stipend, the CALL can fail. The bytecode then continues, and later zeroes multiple storage slots associated with the same account/round, so the recipient can lose their claim while the ETH remains in the contract."
},
{
"title": "Overpayment refund branch ignores refund failure and appears to leave excess ETH trapped",
"category": "other",
"evidence": "The branch at `pc:0x6e`-`pc:0x74` compares a calldata-derived amount against `CALLVALUE` and jumps into the refund path. The refund itself occurs at `pc:0x82` via `CALL` to `CALLER` with `CALLVALUE`; the return status is discarded by `POP` at `pc:0x83`, and the function returns a sentinel all-ones value through `pc:0x84`-`pc:0x92` instead of reverting. Because this is bytecode-only analysis, selector semantics are uncertain, but the unchecked refund pattern is explicit.",
"severity": "low",
"locations": [
"selector:0x5a9809ed",
"pc:0x6e",
"pc:0x82",
"pc:0x83"
],
"recommendation": "Treat refund failure as a hard failure and revert, or store refundable balances and require users to withdraw explicitly. Avoid push-style refunds to arbitrary callers when failure is ignored.",
"exploit_scenario": "In the payable entry selector `0x5a9809ed`, an overpayment branch sends `msg.value` back to `msg.sender` with a raw CALL. If the caller is a contract that rejects ETH or needs more gas than provided, that refund can fail silently. The function then returns a sentinel value instead of reverting, so the excess ETH may remain stuck in the contract with no visible recovery path in the bytecode."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x00 00000002: PUSH2 0x047f 00000005: MSTORE8 00000006: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000024: PUSH1 0x00 00000026: CALLDATALOAD 00000027: DIV 00000028: PUSH4 0x5a9809ed 0000002d: DUP2 0000002e: EQ 0000002f: ISZERO 00000030: PUSH2 0x032c 00000033: JUMPI 00000034: CALLDATASIZE 00000035: MSIZE 00000036: SWAP1 00000037: MSIZE 00000038: ADD 00000039: PUSH1 0x00 0000003b: SWAP1 0000003c: MSTORE 0000003d: CALLDATASIZE 0000003e: PUSH1 0x04 00000040: DUP3 00000041: CALLDATACOPY 00000042: PUSH1 0x04 00000044: CALLDATALOAD 00000045: PUSH1 0x60 00000047: MSTORE 00000048: PUSH1 0x24 0000004a: CALLDATALOAD 0000004b: PUSH1 0x80 0000004d: MSTORE 0000004e: PUSH1 0x44 00000050: CALLDATALOAD 00000051: PUSH1 0x20 00000053: DUP3 00000054: ADD 00000055: ADD 00000056: PUSH1 0xa0 00000058: MSTORE 00000059: PUSH1 0x64 0000005b: CALLDATALOAD 0000005c: PUSH1 0xc0 0000005e: MSTORE 0000005f: PUSH1 0x84 00000061: CALLDATALOAD 00000062: PUSH1 0x20 00000064: DUP3 00000065: ADD 00000066: ADD 00000067: PUSH1 0xe0 00000069: MSTORE 0000006a: POP 0000006b: PUSH1 0xc0 0000006d: MLOAD 0000006e: CALLVALUE 0000006f: SLT 00000070: ISZERO 00000071: PUSH2 0x0093 00000074: JUMPI 00000075: PUSH1 0x00 00000077: PUSH1 0x00 00000079: PUSH1 0x00 0000007b: PUSH1 0x00 0000007d: CALLVALUE 0000007e: CALLER 0000007f: PUSH2 0x1388 00000082: CALL 00000083: POP 00000084: PUSH1 0x01 00000086: PUSH1 0x00 00000088: SUB 00000089: PUSH2 0x0100 0000008c: MSTORE 0000008d: PUSH1 0x20 0000008f: PUSH2 0x0100 00000092: RETURN 00000093: JUMPDEST 00000094: PUSH15 0x027220000000000000000000000000 000000a4: SLOAD 000000a5: PUSH2 0x0120 000000a8: MSTORE 000000a9: PUSH1 0xc0 000000ab: MLOAD 000000ac: CALLVALUE 000000ad: SUB 000000ae: PUSH2 0x2722 000000b1: PUSH2 0x0120 000000b4: MLOAD 000000b5: MUL 000000b6: SSTORE 000000b7: PUSH1 0x60 000000b9: MLOAD 000000ba: PUSH2 0x2722 000000bd: PUSH2 0x0120 000000c0: MLOAD 000000c1: MUL 000000c2: PUSH1 0x01 000000c4: ADD 000000c5: SSTORE 000000c6: PUSH1 0x80 000000c8: MLOAD 000000c9: PUSH2 0x2722 000000cc: PUSH2 0x0120 000000cf: MLOAD 000000d0: MUL 000000d1: PUSH1 0x02 000000d3: ADD 000000d4: SSTORE 000000d5: PUSH1 0x00 000000d7: PUSH2 0x0140 000000da: MSTORE 000000db: JUMPDEST 000000dc: PUSH1 0x20 000000de: PUSH1 0xa0 000000e0: MLOAD 000000e1: SUB 000000e2: MLOAD 000000e3: PUSH2 0x0140 000000e6: MLOAD 000000e7: SLT 000000e8: ISZERO 000000e9: PUSH2 0x015c 000000ec: JUMPI 000000ed: PUSH2 0x0140 000000f0: MLOAD 000000f1: PUSH1 0x20 000000f3: MUL 000000f4: PUSH1 0xa0 000000f6: MLOAD 000000f7: ADD 000000f8: MLOAD 000000f9: PUSH2 0x0140 000000fc: MLOAD 000000fd: PUSH2 0x2722 00000100: PUSH2 0x0120 00000103: MLOAD 00000104: MUL 00000105: PUSH1 0x03 00000107: ADD 00000108: ADD 00000109: SSTORE 0000010a: PUSH1 0x1c 0000010c: PUSH1 0x20 0000010e: MSIZE 0000010f: SWAP1 00000110: MSIZE 00000111: ADD 00000112: PUSH1 0x00 00000114: SWAP1 00000115: MSTORE 00000116: ADD 00000117: PUSH2 0x0140 0000011a: MLOAD 0000011b: PUSH1 0x20 0000011d: MUL 0000011e: PUSH1 0xa0 00000120: MLOAD 00000121: ADD 00000122: MLOAD 00000123: PUSH2 0x0120 00000126: MLOAD 00000127: PUSH32 0x1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e 00000148: PUSH1 0x00 0000014a: DUP5 0000014b: LOG3 0000014c: POP 0000014d: PUSH1 0x01 0000014f: PUSH2 0x0140 00000152: MLOAD 00000153: ADD 00000154: PUSH2 0x0140 00000157: MSTORE 00000158: PUSH2 0x00db 0000015b: JUMP 0000015c: JUMPDEST 0000015d: PUSH1 0x20 0000015f: PUSH1 0xa0 00000161: MLOAD 00000162: SUB 00000163: MLOAD 00000164: PUSH2 0x2722 00000167: PUSH2 0x0120 0000016a: MLOAD 0000016b: MUL 0000016c: PUSH2 0x2713 0000016f: ADD 00000170: SSTORE 00000171: PUSH1 0xc0 00000173: MLOAD 00000174: PUSH2 0x2722 00000177: PUSH2 0x0120 0000017a: MLOAD 0000017b: MUL 0000017c: PUSH2 0x2717 0000017f: ADD 00000180: SSTORE 00000181: PUSH1 0x20 00000183: PUSH1 0xe0 00000185: MLOAD 00000186: SUB 00000187: MLOAD 00000188: PUSH2 0x2722 0000018b: PUSH2 0x0120 0000018e: MLOAD 0000018f: MUL 00000190: PUSH2 0x2718 00000193: ADD 00000194: SSTORE 00000195: PUSH1 0x00 00000197: PUSH2 0x0140 0000019a: MSTORE 0000019b: JUMPDEST 0000019c: PUSH1 0x20 0000019e: PUSH1 0xe0 000001a0: MLOAD 000001a1: SUB 000001a2: MLOAD 000001a3: PUSH1 0x20 000001a5: PUSH2 0x0140 000001a8: MLOAD 000001a9: MUL 000001aa: SLT 000001ab: ISZERO 000001ac: PUSH2 0x01e0 000001af: JUMPI 000001b0: PUSH2 0x0140 000001b3: MLOAD 000001b4: PUSH1 0x20 000001b6: MUL 000001b7: PUSH1 0xe0 000001b9: MLOAD 000001ba: ADD 000001bb: MLOAD 000001bc: PUSH1 0x01 000001be: PUSH2 0x0140 000001c1: MLOAD 000001c2: ADD 000001c3: PUSH2 0x2722 000001c6: PUSH2 0x0120 000001c9: MLOAD 000001ca: MUL 000001cb: PUSH2 0x2718 000001ce: ADD 000001cf: ADD 000001d0: SSTORE 000001d1: PUSH1 0x01 000001d3: PUSH2 0x0140 000001d6: MLOAD 000001d7: ADD 000001d8: PUSH2 0x0140 000001db: MSTORE 000001dc: PUSH2 0x019b 000001df: JUMP 000001e0: JUMPDEST 000001e1: PUSH1 0x01 000001e3: PUSH2 0x0120 000001e6: MLOAD 000001e7: ADD 000001e8: PUSH15 0x027220000000000000000000000000 000001f8: SSTORE 000001f9: PUSH1 0x80 000001fb: PUSH1 0x1c 000001fd: PUSH2 0x01a0 00000200: MSIZE 00000201: SWAP1 00000202: MSIZE 00000203: ADD 00000204: PUSH1 0x00 00000206: SWAP1 00000207: MSTORE 00000208: ADD 00000209: PUSH1 0xc0 0000020b: MLOAD 0000020c: CALLVALUE 0000020d: SUB 0000020e: DUP2 0000020f: MSTORE 00000210: PUSH1 0xa0 00000212: MLOAD 00000213: PUSH1 0x20 00000215: DUP2 00000216: SUB 00000217: MLOAD 00000218: PUSH1 0x20 0000021a: MUL 0000021b: PUSH1 0x20 0000021d: ADD 0000021e: DUP4 0000021f: PUSH1 0x20 00000221: DUP5 00000222: ADD 00000223: MSTORE 00000224: PUSH1 0x20 00000226: DUP3 00000227: SUB 00000228: PUSH1 0xa0 0000022a: DUP5 0000022b: ADD 0000022c: MSTORE 0000022d: DUP1 0000022e: PUSH2 0x0120 00000231: DUP5 00000232: ADD 00000233: MSTORE 00000234: DUP1 00000235: DUP5 00000236: ADD 00000237: SWAP4 00000238: POP 00000239: POP 0000023a: POP 0000023b: PUSH1 0xc0 0000023d: MLOAD 0000023e: PUSH1 0x40 00000240: DUP3 00000241: ADD 00000242: MSTORE 00000243: PUSH1 0xe0 00000245: MLOAD 00000246: PUSH1 0x20 00000248: PUSH1 0x1f 0000024a: PUSH1 0x20 0000024c: DUP4 0000024d: SUB 0000024e: MLOAD 0000024f: ADD 00000250: DIV 00000251: PUSH1 0x20 00000253: MUL 00000254: PUSH1 0x20 00000256: ADD 00000257: DUP4 00000258: PUSH1 0x60 0000025a: DUP5 0000025b: ADD 0000025c: MSTORE 0000025d: PUSH1 0x20 0000025f: DUP3 00000260: SUB 00000261: PUSH1 0xe0 00000263: DUP5 00000264: ADD 00000265: MSTORE 00000266: DUP1 00000267: PUSH2 0x0160 0000026a: DUP5 0000026b: ADD 0000026c: MSTORE 0000026d: DUP1 0000026e: DUP5 0000026f: ADD 00000270: SWAP4 00000271: POP 00000272: POP 00000273: POP 00000274: DUP2 00000275: PUSH1 0x04 00000277: ADD 00000278: MSIZE 00000279: SWAP1 0000027a: MSIZE 0000027b: ADD 0000027c: PUSH1 0x00 0000027e: SWAP1 0000027f: MSTORE 00000280: PUSH1 0x80 00000282: DUP2 00000283: PUSH1 0x80 00000285: DUP5 00000286: PUSH1 0x00 00000288: PUSH1 0x04 0000028a: PUSH1 0x1e 0000028c: CALL 0000028d: PUSH2 0x0292 00000290: JUMPI 00000291: INVALID 00000292: JUMPDEST 00000293: PUSH1 0x80 00000295: DUP2 00000296: ADD 00000297: SWAP3 00000298: POP 00000299: PUSH2 0x0120 0000029c: DUP3 0000029d: ADD 0000029e: MLOAD 0000029f: DUP1 000002a0: DUP1 000002a1: DUP6 000002a2: DUP3 000002a3: PUSH1 0xa0 000002a5: DUP8 000002a6: ADD 000002a7: MLOAD 000002a8: PUSH1 0x00 000002aa: PUSH1 0x04 000002ac: PUSH1 0x0a 000002ae: DUP8 000002af: SDIV 000002b0: PUSH1 0x12 000002b2: ADD 000002b3: CALL 000002b4: PUSH2 0x02b9 000002b7: JUMPI 000002b8: INVALID 000002b9: JUMPDEST 000002ba: POP 000002bb: DUP1 000002bc: DUP5 000002bd: ADD 000002be: SWAP4 000002bf: POP 000002c0: POP 000002c1: PUSH2 0x0160 000002c4: DUP3 000002c5: ADD 000002c6: MLOAD 000002c7: DUP1 000002c8: DUP1 000002c9: DUP6 000002ca: DUP3 000002cb: PUSH1 0xe0 000002cd: DUP8 000002ce: ADD 000002cf: MLOAD 000002d0: PUSH1 0x00 000002d2: PUSH1 0x04 000002d4: PUSH1 0x0a 000002d6: DUP8 000002d7: SDIV 000002d8: PUSH1 0x12 000002da: ADD 000002db: CALL 000002dc: PUSH2 0x02e1 000002df: JUMPI 000002e0: INVALID 000002e1: JUMPDEST 000002e2: POP 000002e3: DUP1 000002e4: DUP5 000002e5: ADD 000002e6: SWAP4 000002e7: POP 000002e8: POP 000002e9: DUP1 000002ea: DUP4 000002eb: SUB 000002ec: PUSH2 0x0120 000002ef: MLOAD 000002f0: PUSH1 0x80 000002f2: MLOAD 000002f3: PUSH1 0x60 000002f5: MLOAD 000002f6: PUSH32 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba 00000317: DUP5 00000318: DUP7 00000319: LOG4 0000031a: POP 0000031b: POP 0000031c: POP 0000031d: POP 0000031e: PUSH2 0x0120 00000321: MLOAD 00000322: PUSH2 0x0220 00000325: MSTORE 00000326: PUSH1 0x20 00000328: PUSH2 0x0220 0000032b: RETURN 0000032c: JUMPDEST 0000032d: PUSH4 0xd5f39e24 00000332: DUP2 00000333: EQ 00000334: ISZERO 00000335: PUSH2 0x0353 00000338: JUMPI 00000339: PUSH1 0x04 0000033b: CALLDATALOAD 0000033c: PUSH2 0x0120 0000033f: MSTORE 00000340: PUSH2 0x2722 00000343: PUSH2 0x0120 00000346: MLOAD 00000347: MUL 00000348: SLOAD 00000349: PUSH2 0x0240 0000034c: MSTORE 0000034d: PUSH1 0x20 0000034f: PUSH2 0x0240 00000352: RETURN 00000353: JUMPDEST 00000354: PUSH4 0xa11af387 00000359: DUP2 0000035a: EQ 0000035b: ISZERO 0000035c: PUSH2 0x03b5 0000035f: JUMPI 00000360: PUSH1 0x04 00000362: CALLDATALOAD 00000363: PUSH2 0x0120 00000366: MSTORE 00000367: PUSH1 0x60 00000369: MSIZE 0000036a: SWAP1 0000036b: MSIZE 0000036c: ADD 0000036d: PUSH1 0x00 0000036f: SWAP1 00000370: MSTORE 00000371: PUSH1 0x02 00000373: DUP2 00000374: MSTORE 00000375: PUSH2 0x2722 00000378: PUSH2 0x0120 0000037b: MLOAD 0000037c: MUL 0000037d: PUSH1 0x01 0000037f: ADD 00000380: SLOAD 00000381: PUSH1 0x20 00000383: DUP3 00000384: ADD 00000385: MSTORE 00000386: PUSH2 0x2722 00000389: PUSH2 0x0120 0000038c: MLOAD 0000038d: MUL 0000038e: PUSH1 0x02 00000390: ADD 00000391: SLOAD 00000392: PUSH1 0x40 00000394: DUP3 00000395: ADD 00000396: MSTORE 00000397: PUSH1 0x20 00000399: DUP2 0000039a: ADD 0000039b: SWAP1 0000039c: POP 0000039d: PUSH1 0x20 0000039f: PUSH1 0x40 000003a1: DUP3 000003a2: SUB 000003a3: MSTORE 000003a4: PUSH1 0x20 000003a6: PUSH1 0x20 000003a8: DUP3 000003a9: SUB 000003aa: MLOAD 000003ab: MUL 000003ac: PUSH1 0x40 000003ae: ADD 000003af: PUSH1 0x40 000003b1: DUP3 000003b2: SUB 000003b3: RETURN 000003b4: POP 000003b5: JUMPDEST 000003b6: PUSH4 0x7b0ae934 000003bb: DUP2 000003bc: EQ 000003bd: ISZERO 000003be: PUSH2 0x044f 000003c1: JUMPI 000003c2: PUSH1 0x04 000003c4: CALLDATALOAD 000003c5: PUSH2 0x0120 000003c8: MSTORE 000003c9: PUSH1 0xc8 000003cb: MSIZE 000003cc: SWAP1 000003cd: MSIZE 000003ce: ADD 000003cf: PUSH1 0x00 000003d1: SWAP1 000003d2: MSTORE 000003d3: PUSH2 0x02a0 000003d6: MSTORE 000003d7: PUSH2 0x2722 000003da: PUSH2 0x0120 000003dd: MLOAD 000003de: MUL 000003df: PUSH2 0x2713 000003e2: ADD 000003e3: SLOAD 000003e4: PUSH2 0x02a0 000003e7: MLOAD 000003e8: MSTORE 000003e9: PUSH1 0x00 000003eb: PUSH2 0x0140 000003ee: MSTORE 000003ef: JUMPDEST 000003f0: PUSH2 0x02a0 000003f3: MLOAD 000003f4: MLOAD 000003f5: PUSH2 0x0140 000003f8: MLOAD 000003f9: SLT 000003fa: ISZERO 000003fb: PUSH2 0x042f 000003fe: JUMPI 000003ff: PUSH2 0x0140 00000402: MLOAD 00000403: PUSH2 0x2722 00000406: PUSH2 0x0120 00000409: MLOAD 0000040a: MUL 0000040b: PUSH1 0x03 0000040d: ADD 0000040e: ADD 0000040f: SLOAD 00000410: PUSH1 0x01 00000412: PUSH2 0x0140 00000415: MLOAD 00000416: ADD 00000417: PUSH1 0x20 00000419: MUL 0000041a: PUSH2 0x02a0 0000041d: MLOAD 0000041e: ADD 0000041f: MSTORE 00000420: PUSH1 0x01 00000422: PUSH2 0x0140 00000425: MLOAD 00000426: ADD 00000427: PUSH2 0x0140 0000042a: MSTORE 0000042b: PUSH2 0x03ef 0000042e: JUMP 0000042f: JUMPDEST 00000430: PUSH1 0x20 00000432: PUSH2 0x02a0 00000435: MLOAD 00000436: ADD 00000437: PUSH1 0x20 00000439: PUSH1 0x40 0000043b: DUP3 0000043c: SUB 0000043d: MSTORE 0000043e: PUSH1 0x20 00000440: PUSH1 0x20 00000442: DUP3 00000443: SUB 00000444: MLOAD 00000445: MUL 00000446: PUSH1 0x40 00000448: ADD 00000449: PUSH1 0x40 0000044b: DUP3 0000044c: SUB 0000044d: RETURN 0000044e: POP 0000044f: JUMPDEST 00000450: PUSH4 0xd966f799 00000455: DUP2 00000456: EQ 00000457: ISZERO 00000458: PUSH2 0x047a 0000045b: JUMPI 0000045c: PUSH1 0x04 0000045e: CALLDATALOAD 0000045f: PUSH2 0x0120 00000462: MSTORE 00000463: PUSH2 0x2722 00000466: PUSH2 0x0120 00000469: MLOAD 0000046a: MUL 0000046b: PUSH2 0x2717 0000046e: ADD 0000046f: SLOAD 00000470: PUSH2 0x02e0 00000473: MSTORE 00000474: PUSH1 0x20 00000476: PUSH2 0x02e0 00000479: RETURN 0000047a: JUMPDEST 0000047b: PUSH4 0x3cd86b77 00000480: DUP2 00000481: EQ 00000482: ISZERO 00000483: PUSH2 0x0522 00000486: JUMPI 00000487: PUSH1 0x04 00000489: CALLDATALOAD 0000048a: PUSH2 0x0120 0000048d: MSTORE 0000048e: PUSH2 0x0140 00000491: MSIZE 00000492: SWAP1 00000493: MSIZE 00000494: ADD 00000495: PUSH1 0x00 00000497: SWAP1 00000498: MSTORE 00000499: PUSH2 0x0300 0000049c: MSTORE 0000049d: PUSH1 0x00 0000049f: PUSH2 0x0140 000004a2: MSTORE 000004a3: PUSH2 0x2722 000004a6: PUSH2 0x0120 000004a9: MLOAD 000004aa: MUL 000004ab: PUSH2 0x2718 000004ae: ADD 000004af: SLOAD 000004b0: PUSH2 0x0300 000004b3: MLOAD 000004b4: MSTORE 000004b5: JUMPDEST 000004b6: PUSH2 0x0300 000004b9: MLOAD 000004ba: MLOAD 000004bb: PUSH1 0x20 000004bd: PUSH2 0x0140 000004c0: MLOAD 000004c1: MUL 000004c2: SLT 000004c3: ISZERO 000004c4: PUSH2 0x04fc 000004c7: JUMPI 000004c8: PUSH1 0x01 000004ca: PUSH2 0x0140 000004cd: MLOAD 000004ce: ADD 000004cf: PUSH2 0x2722 000004d2: PUSH2 0x0120 000004d5: MLOAD 000004d6: MUL 000004d7: PUSH2 0x2718 000004da: ADD 000004db: ADD 000004dc: SLOAD 000004dd: PUSH1 0x01 000004df: PUSH2 0x0140 000004e2: MLOAD 000004e3: ADD 000004e4: PUSH1 0x20 000004e6: MUL 000004e7: PUSH2 0x0300 000004ea: MLOAD 000004eb: ADD 000004ec: MSTORE 000004ed: PUSH1 0x01 000004ef: PUSH2 0x0140 000004f2: MLOAD 000004f3: ADD 000004f4: PUSH2 0x0140 000004f7: MSTORE 000004f8: PUSH2 0x04b5 000004fb: JUMP 000004fc: JUMPDEST 000004fd: PUSH1 0x20 000004ff: PUSH2 0x0300 00000502: MLOAD 00000503: ADD 00000504: PUSH1 0x20 00000506: PUSH1 0x40 00000508: DUP3 00000509: SUB 0000050a: MSTORE 0000050b: PUSH1 0x20 0000050d: PUSH1 0x1f 0000050f: PUSH1 0x20 00000511: DUP4 00000512: SUB 00000513: MLOAD 00000514: PUSH1 0x40 00000516: ADD 00000517: ADD 00000518: DIV 00000519: PUSH1 0x20 0000051b: MUL 0000051c: PUSH1 0x40 0000051e: DUP3 0000051f: SUB 00000520: RETURN 00000521: POP 00000522: JUMPDEST 00000523: PUSH4 0x8f26e0fe 00000528: DUP2 00000529: EQ 0000052a: ISZERO 0000052b: PUSH2 0x054a 0000052e: JUMPI 0000052f: PUSH15 0x027220000000000000000000000000 0000053f: SLOAD 00000540: PUSH2 0x0340 00000543: MSTORE 00000544: PUSH1 0x20 00000546: PUSH2 0x0340 00000549: RETURN 0000054a: JUMPDEST 0000054b: PUSH4 0xf2e497ae 00000550: DUP2 00000551: EQ 00000552: ISZERO 00000553: PUSH2 0x09ee 00000556: JUMPI 00000557: CALLDATASIZE 00000558: MSIZE 00000559: SWAP1 0000055a: MSIZE 0000055b: ADD 0000055c: PUSH1 0x00 0000055e: SWAP1 0000055f: MSTORE 00000560: CALLDATASIZE 00000561: PUSH1 0x04 00000563: DUP3 00000564: CALLDATACOPY 00000565: PUSH1 0x04 00000567: CALLDATALOAD 00000568: PUSH2 0x0120 0000056b: MSTORE 0000056c: PUSH1 0x24 0000056e: CALLDATALOAD 0000056f: PUSH2 0x0360 00000572: MSTORE 00000573: POP 00000574: PUSH1 0x01 00000576: PUSH1 0x00 00000578: SUB 00000579: PUSH2 0x0380 0000057c: MSTORE 0000057d: PUSH1 0x00 0000057f: PUSH2 0x0140 00000582: MSTORE 00000583: JUMPDEST 00000584: PUSH2 0x2722 00000587: PUSH2 0x0120 0000058a: MLOAD 0000058b: MUL 0000058c: PUSH2 0x2713 0000058f: ADD 00000590: SLOAD 00000591: PUSH2 0x0140 00000594: MLOAD 00000595: SLT 00000596: ISZERO 00000597: PUSH2 0x05f1 0000059a: JUMPI 0000059b: CALLER 0000059c: PUSH2 0x0140 0000059f: MLOAD 000005a0: PUSH2 0x2722 000005a3: PUSH2 0x0120 000005a6: MLOAD 000005a7: MUL 000005a8: PUSH1 0x03 000005aa: ADD 000005ab: ADD 000005ac: SLOAD 000005ad: EQ 000005ae: ISZERO 000005af: PUSH2 0x05e1 000005b2: JUMPI 000005b3: PUSH2 0x0140 000005b6: MLOAD 000005b7: PUSH1 0x02 000005b9: EXP 000005ba: PUSH2 0x03a0 000005bd: MSTORE 000005be: PUSH1 0x00 000005c0: PUSH2 0x2722 000005c3: PUSH2 0x0120 000005c6: MLOAD 000005c7: MUL 000005c8: PUSH2 0x2714 000005cb: ADD 000005cc: SLOAD 000005cd: PUSH2 0x03a0 000005d0: MLOAD 000005d1: AND 000005d2: EQ 000005d3: ISZERO 000005d4: PUSH2 0x05e0 000005d7: JUMPI 000005d8: PUSH2 0x0140 000005db: MLOAD 000005dc: PUSH2 0x0380 000005df: MSTORE 000005e0: JUMPDEST 000005e1: JUMPDEST 000005e2: PUSH1 0x01 000005e4: PUSH2 0x0140 000005e7: MLOAD 000005e8: ADD 000005e9: PUSH2 0x0140 000005ec: MSTORE 000005ed: PUSH2 0x0583 000005f0: JUMP 000005f1: JUMPDEST 000005f2: CALLER 000005f3: PUSH2 0x2722 000005f6: PUSH2 0x0120 000005f9: MLOAD 000005fa: MUL 000005fb: PUSH1 0x01 000005fd: ADD 000005fe: SLOAD 000005ff: EQ 00000600: ISZERO 00000601: PUSH2 0x0610 00000604: JUMPI 00000605: PUSH1 0x00 00000607: PUSH2 0x0360 0000060a: MLOAD 0000060b: EQ 0000060c: PUSH2 0x0613 0000060f: JUMP 00000610: JUMPDEST 00000611: PUSH1 0x00 00000613: JUMPDEST 00000614: ISZERO 00000615: PUSH2 0x0620 00000618: JUMPI 00000619: PUSH2 0x03e7 0000061c: PUSH2 0x0380 0000061f: MSTORE 00000620: JUMPDEST 00000621: CALLER 00000622: PUSH2 0x2722 00000625: PUSH2 0x0120 00000628: MLOAD 00000629: MUL 0000062a: PUSH1 0x02 0000062c: ADD 0000062d: SLOAD 0000062e: EQ 0000062f: ISZERO 00000630: PUSH2 0x063f 00000633: JUMPI 00000634: PUSH1 0x01 00000636: PUSH2 0x0360 00000639: MLOAD 0000063a: EQ 0000063b: PUSH2 0x0642 0000063e: JUMP 0000063f: JUMPDEST 00000640: PUSH1 0x00 00000642: JUMPDEST 00000643: ISZERO 00000644: PUSH2 0x064f 00000647: JUMPI 00000648: PUSH2 0x03e7 0000064b: PUSH2 0x0380 0000064e: MSTORE 0000064f: JUMPDEST 00000650: PUSH1 0x01 00000652: PUSH1 0x00 00000654: SUB 00000655: PUSH2 0x0380 00000658: MLOAD 00000659: EQ 0000065a: ISZERO 0000065b: PUSH2 0x066b 0000065e: JUMPI 0000065f: PUSH1 0x00 00000661: PUSH2 0x03c0 00000664: MSTORE 00000665: PUSH1 0x20 00000667: PUSH2 0x03c0 0000066a: RETURN 0000066b: JUMPDEST 0000066c: PUSH1 0x00 0000066e: PUSH2 0x03e0 00000671: MSTORE 00000672: PUSH2 0x03a0 00000675: MLOAD 00000676: PUSH2 0x2722 00000679: PUSH2 0x0120 0000067c: MLOAD 0000067d: MUL 0000067e: PUSH2 0x2714 00000681: ADD 00000682: SLOAD 00000683: OR 00000684: PUSH2 0x2722 00000687: PUSH2 0x0120 0000068a: MLOAD 0000068b: MUL 0000068c: PUSH2 0x2714 0000068f: ADD 00000690: SSTORE 00000691: PUSH1 0x1c 00000693: PUSH1 0x40 00000695: MSIZE 00000696: SWAP1 00000697: MSIZE 00000698: ADD 00000699: PUSH1 0x00 0000069b: SWAP1 0000069c: MSTORE 0000069d: ADD 0000069e: PUSH2 0x0360 000006a1: MLOAD 000006a2: DUP2 000006a3: MSTORE 000006a4: CALLER 000006a5: PUSH2 0x0120 000006a8: MLOAD 000006a9: PUSH32 0xcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26 000006ca: PUSH1 0x20 000006cc: DUP5 000006cd: LOG3 000006ce: POP 000006cf: PUSH2 0x03e7 000006d2: PUSH2 0x0380 000006d5: MLOAD 000006d6: EQ 000006d7: ISZERO 000006d8: ISZERO 000006d9: PUSH2 0x077e 000006dc: JUMPI 000006dd: PUSH2 0x0360 000006e0: MLOAD 000006e1: ISZERO 000006e2: PUSH2 0x0731 000006e5: JUMPI 000006e6: PUSH1 0x01 000006e8: PUSH2 0x2722 000006eb: PUSH2 0x0120 000006ee: MLOAD 000006ef: MUL 000006f0: PUSH2 0x2715 000006f3: ADD 000006f4: SLOAD 000006f5: ADD 000006f6: PUSH2 0x2722 000006f9: PUSH2 0x0120 000006fc: MLOAD 000006fd: MUL 000006fe: PUSH2 0x2715 00000701: ADD 00000702: SSTORE 00000703: PUSH2 0x2722 00000706: PUSH2 0x0120 00000709: MLOAD 0000070a: MUL 0000070b: PUSH2 0x2713 0000070e: ADD 0000070f: SLOAD 00000710: PUSH1 0x02 00000712: PUSH2 0x2722 00000715: PUSH2 0x0120 00000718: MLOAD 00000719: MUL 0000071a: PUSH2 0x2715 0000071d: ADD 0000071e: SLOAD 0000071f: MUL 00000720: SGT 00000721: ISZERO 00000722: PUSH2 0x072c 00000725: JUMPI 00000726: PUSH1 0x01 00000728: PUSH2 0x03e0 0000072b: MSTORE 0000072c: JUMPDEST 0000072d: PUSH2 0x0779 00000730: JUMP 00000731: JUMPDEST 00000732: PUSH1 0x01 00000734: PUSH2 0x2722 00000737: PUSH2 0x0120 0000073a: MLOAD 0000073b: MUL 0000073c: PUSH2 0x2716 0000073f: ADD 00000740: SLOAD 00000741: ADD 00000742: PUSH2 0x2722 00000745: PUSH2 0x0120 00000748: MLOAD 00000749: MUL 0000074a: PUSH2 0x2716 0000074d: ADD 0000074e: SSTORE 0000074f: PUSH2 0x2722 00000752: PUSH2 0x0120 00000755: MLOAD 00000756: MUL 00000757: PUSH2 0x2713 0000075a: ADD 0000075b: SLOAD 0000075c: PUSH1 0x02 0000075e: PUSH2 0x2722 00000761: PUSH2 0x0120 00000764: MLOAD 00000765: MUL 00000766: PUSH2 0x2716 00000769: ADD 0000076a: SLOAD 0000076b: MUL 0000076c: SGT 0000076d: ISZERO 0000076e: PUSH2 0x0778 00000771: JUMPI 00000772: PUSH1 0x02 00000774: PUSH2 0x03e0 00000777: MSTORE 00000778: JUMPDEST 00000779: JUMPDEST 0000077a: PUSH2 0x0796 0000077d: JUMP 0000077e: JUMPDEST 0000077f: PUSH2 0x0360 00000782: MLOAD 00000783: ISZERO 00000784: PUSH2 0x078e 00000787: JUMPI 00000788: PUSH1 0x01 0000078a: PUSH2 0x0791 0000078d: JUMP 0000078e: JUMPDEST 0000078f: PUSH1 0x02 00000791: JUMPDEST 00000792: PUSH2 0x03e0 00000795: MSTORE 00000796: JUMPDEST 00000797: PUSH2 0x03e0 0000079a: MLOAD 0000079b: ISZERO 0000079c: PUSH2 0x09e1 0000079f: JUMPI 000007a0: PUSH1 0x00 000007a2: PUSH2 0x0140 000007a5: MSTORE 000007a6: PUSH2 0x2722 000007a9: PUSH2 0x0120 000007ac: MLOAD 000007ad: MUL 000007ae: PUSH2 0x2716 000007b1: ADD 000007b2: SLOAD 000007b3: PUSH2 0x2722 000007b6: PUSH2 0x0120 000007b9: MLOAD 000007ba: MUL 000007bb: PUSH2 0x2715 000007be: ADD 000007bf: SLOAD 000007c0: ADD 000007c1: PUSH2 0x0400 000007c4: MSTORE 000007c5: PUSH2 0x0400 000007c8: MLOAD 000007c9: PUSH2 0x2722 000007cc: PUSH2 0x0120 000007cf: MLOAD 000007d0: MUL 000007d1: PUSH2 0x2717 000007d4: ADD 000007d5: SLOAD 000007d6: SDIV 000007d7: PUSH2 0x0420 000007da: MSTORE 000007db: JUMPDEST 000007dc: PUSH2 0x2722 000007df: PUSH2 0x0120 000007e2: MLOAD 000007e3: MUL 000007e4: PUSH2 0x2713 000007e7: ADD 000007e8: SLOAD 000007e9: PUSH2 0x0140 000007ec: MLOAD 000007ed: SLT 000007ee: ISZERO 000007ef: PUSH2 0x083f 000007f2: JUMPI 000007f3: PUSH2 0x2722 000007f6: PUSH2 0x0120 000007f9: MLOAD 000007fa: MUL 000007fb: PUSH2 0x2714 000007fe: ADD 000007ff: SLOAD 00000800: PUSH2 0x0140 00000803: MLOAD 00000804: PUSH1 0x02 00000806: EXP 00000807: AND 00000808: ISZERO 00000809: PUSH2 0x082f 0000080c: JUMPI 0000080d: PUSH1 0x00 0000080f: PUSH1 0x00 00000811: PUSH1 0x00 00000813: PUSH1 0x00 00000815: PUSH2 0x0420 00000818: MLOAD 00000819: PUSH2 0x0140 0000081c: MLOAD 0000081d: PUSH2 0x2722 00000820: PUSH2 0x0120 00000823: MLOAD 00000824: MUL 00000825: PUSH1 0x03 00000827: ADD 00000828: ADD 00000829: SLOAD 0000082a: PUSH2 0x1388 0000082d: CALL 0000082e: POP 0000082f: JUMPDEST 00000830: PUSH1 0x01 00000832: PUSH2 0x0140 00000835: MLOAD 00000836: ADD 00000837: PUSH2 0x0140 0000083a: MSTORE 0000083b: PUSH2 0x07db 0000083e: JUMP 0000083f: JUMPDEST 00000840: PUSH1 0x01 00000842: PUSH2 0x03e0 00000845: MLOAD 00000846: EQ 00000847: ISZERO 00000848: PUSH2 0x085c 0000084b: JUMPI 0000084c: PUSH2 0x2722 0000084f: PUSH2 0x0120 00000852: MLOAD 00000853: MUL 00000854: PUSH1 0x01 00000856: ADD 00000857: SLOAD 00000858: PUSH2 0x0869 0000085b: JUMP 0000085c: JUMPDEST 0000085d: PUSH2 0x2722 00000860: PUSH2 0x0120 00000863: MLOAD 00000864: MUL 00000865: PUSH1 0x02 00000867: ADD 00000868: SLOAD 00000869: JUMPDEST 0000086a: PUSH2 0x0440 0000086d: MSTORE 0000086e: PUSH1 0x00 00000870: PUSH1 0x00 00000872: PUSH1 0x00 00000874: PUSH1 0x00 00000876: PUSH1 0x00 00000878: PUSH2 0x0400 0000087b: MLOAD 0000087c: EQ 0000087d: PUSH2 0x2722 00000880: PUSH2 0x0120 00000883: MLOAD 00000884: MUL 00000885: PUSH2 0x2717 00000888: ADD 00000889: SLOAD 0000088a: MUL 0000088b: PUSH2 0x2722 0000088e: PUSH2 0x0120 00000891: MLOAD 00000892: MUL 00000893: SLOAD 00000894: ADD 00000895: PUSH2 0x0440 00000898: MLOAD 00000899: PUSH2 0x1388 0000089c: CALL 0000089d: POP 0000089e: PUSH1 0x1c 000008a0: PUSH1 0x40 000008a2: MSIZE 000008a3: SWAP1 000008a4: MSIZE 000008a5: ADD 000008a6: PUSH1 0x00 000008a8: SWAP1 000008a9: MSTORE 000008aa: ADD 000008ab: PUSH2 0x0440 000008ae: MLOAD 000008af: DUP2 000008b0: MSTORE 000008b1: PUSH2 0x0120 000008b4: MLOAD 000008b5: PUSH32 0xd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3 000008d6: PUSH1 0x20 000008d8: DUP4 000008d9: LOG2 000008da: POP 000008db: PUSH1 0x00 000008dd: PUSH2 0x2722 000008e0: PUSH2 0x0120 000008e3: MLOAD 000008e4: MUL 000008e5: SSTORE 000008e6: PUSH1 0x00 000008e8: PUSH2 0x2722 000008eb: PUSH2 0x0120 000008ee: MLOAD 000008ef: MUL 000008f0: PUSH1 0x01 000008f2: ADD 000008f3: SSTORE 000008f4: PUSH1 0x00 000008f6: PUSH2 0x2722 000008f9: PUSH2 0x0120 000008fc: MLOAD 000008fd: MUL 000008fe: PUSH1 0x02 00000900: ADD 00000901: SSTORE 00000902: PUSH1 0x00 00000904: PUSH2 0x0140 00000907: MSTORE 00000908: JUMPDEST 00000909: PUSH2 0x2722 0000090c: PUSH2 0x0120 0000090f: MLOAD 00000910: MUL 00000911: PUSH2 0x2713 00000914: ADD 00000915: SLOAD 00000916: PUSH2 0x0140 00000919: MLOAD 0000091a: SLT 0000091b: ISZERO 0000091c: PUSH2 0x0942 0000091f: JUMPI 00000920: PUSH1 0x00 00000922: PUSH2 0x0140 00000925: MLOAD 00000926: PUSH2 0x2722 00000929: PUSH2 0x0120 0000092c: MLOAD 0000092d: MUL 0000092e: PUSH1 0x03 00000930: ADD 00000931: ADD 00000932: SSTORE 00000933: PUSH1 0x01 00000935: PUSH2 0x0140 00000938: MLOAD 00000939: ADD 0000093a: PUSH2 0x0140 0000093d: MSTORE 0000093e: PUSH2 0x0908 00000941: JUMP 00000942: JUMPDEST 00000943: PUSH1 0x00 00000945: PUSH2 0x2722 00000948: PUSH2 0x0120 0000094b: MLOAD 0000094c: MUL 0000094d: PUSH2 0x2713 00000950: ADD 00000951: SSTORE 00000952: PUSH1 0x00 00000954: PUSH2 0x2722 00000957: PUSH2 0x0120 0000095a: MLOAD 0000095b: MUL 0000095c: PUSH2 0x2714 0000095f: ADD 00000960: SSTORE 00000961: PUSH1 0x00 00000963: PUSH2 0x2722 00000966: PUSH2 0x0120 00000969: MLOAD 0000096a: MUL 0000096b: PUSH2 0x2715 0000096e: ADD 0000096f: SSTORE 00000970: PUSH1 0x00 00000972: PUSH2 0x2722 00000975: PUSH2 0x0120 00000978: MLOAD 00000979: MUL 0000097a: PUSH2 0x2716 0000097d: ADD 0000097e: SSTORE 0000097f: PUSH1 0x00 00000981: PUSH2 0x2722 00000984: PUSH2 0x0120 00000987: MLOAD 00000988: MUL 00000989: PUSH2 0x2717 0000098c: ADD 0000098d: SSTORE 0000098e: PUSH1 0x00 00000990: PUSH2 0x0140 00000993: MSTORE 00000994: JUMPDEST 00000995: PUSH1 0x0a 00000997: PUSH2 0x0140 0000099a: MLOAD 0000099b: SLT 0000099c: ISZERO 0000099d: PUSH2 0x09e0 000009a0: JUMPI 000009a1: PUSH1 0x00 000009a3: PUSH2 0x0140 000009a6: MLOAD 000009a7: PUSH2 0x2722 000009aa: PUSH2 0x0120 000009ad: MLOAD 000009ae: MUL 000009af: PUSH2 0x2718 000009b2: ADD 000009b3: ADD 000009b4: SLOAD 000009b5: EQ 000009b6: ISZERO 000009b7: ISZERO 000009b8: PUSH2 0x09d0 000009bb: JUMPI 000009bc: PUSH1 0x00 000009be: PUSH2 0x0140 000009c1: MLOAD 000009c2: PUSH2 0x2722 000009c5: PUSH2 0x0120 000009c8: MLOAD 000009c9: MUL 000009ca: PUSH2 0x2718 000009cd: ADD 000009ce: ADD 000009cf: SSTORE 000009d0: JUMPDEST 000009d1: PUSH1 0x01 000009d3: PUSH2 0x0140 000009d6: MLOAD 000009d7: ADD 000009d8: PUSH2 0x0140 000009db: MSTORE 000009dc: PUSH2 0x0994 000009df: JUMP 000009e0: JUMPDEST 000009e1: JUMPDEST 000009e2: PUSH1 0x01 000009e4: PUSH2 0x0460 000009e7: MSTORE 000009e8: PUSH1 0x20 000009ea: PUSH2 0x0460 000009ed: RETURN 000009ee: JUMPDEST 000009ef: POP
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | yes | yes |
viewtrace_id: 0x3b0a391c422c78338b0f0787124bdb437bd53db775c371d87fbbdcb63c23b604
call_targets:
0x0000000000000000000000000000000000000004, 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x3b0a391c422c78338b0f0787124bdb437bd53db775c371d87fbbdcb63c23b604",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8"
],
"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": "0x5a9809ed",
"selector": "0x5a9809ed",
"calldata_variants": [
"0x5a9809ed",
"0x5a9809ed0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd5f39e24",
"selector": "0xd5f39e24",
"calldata_variants": [
"0xd5f39e24",
"0xd5f39e240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa11af387",
"selector": "0xa11af387",
"calldata_variants": [
"0xa11af387",
"0xa11af3870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7b0ae934",
"selector": "0x7b0ae934",
"calldata_variants": [
"0x7b0ae934",
"0x7b0ae9340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd966f799",
"selector": "0xd966f799",
"calldata_variants": [
"0xd966f799",
"0xd966f7990000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3cd86b77",
"selector": "0x3cd86b77",
"calldata_variants": [
"0x3cd86b77",
"0x3cd86b770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8f26e0fe",
"selector": "0x8f26e0fe",
"calldata_variants": [
"0x8f26e0fe",
"0x8f26e0fe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2e497ae",
"selector": "0xf2e497ae",
"calldata_variants": [
"0xf2e497ae",
"0xf2e497ae0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 652,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "constant",
"target_expression_category": "computed"
},
{
"pc": 691,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 731,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 6,
"guards_detected": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
],
"untrusted_call_count": 3
}
|
| medium | other | detector | ETH value transfer possible | 40 | yes | yes |
viewtrace_id: 0x3b0a391c422c78338b0f0787124bdb437bd53db775c371d87fbbdcb63c23b604
call_targets:
0x0000000000000000000000000000000000000004, 0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x3b0a391c422c78338b0f0787124bdb437bd53db775c371d87fbbdcb63c23b604",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0x7e2d0fe0ffdd78c264f8d40d19acb7d04390c6e8"
],
"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": "0x5a9809ed",
"selector": "0x5a9809ed",
"calldata_variants": [
"0x5a9809ed",
"0x5a9809ed0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd5f39e24",
"selector": "0xd5f39e24",
"calldata_variants": [
"0xd5f39e24",
"0xd5f39e240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa11af387",
"selector": "0xa11af387",
"calldata_variants": [
"0xa11af387",
"0xa11af3870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7b0ae934",
"selector": "0x7b0ae934",
"calldata_variants": [
"0x7b0ae934",
"0x7b0ae9340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd966f799",
"selector": "0xd966f799",
"calldata_variants": [
"0xd966f799",
"0xd966f7990000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3cd86b77",
"selector": "0x3cd86b77",
"calldata_variants": [
"0x3cd86b77",
"0x3cd86b770000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8f26e0fe",
"selector": "0x8f26e0fe",
"calldata_variants": [
"0x8f26e0fe",
"0x8f26e0fe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2e497ae",
"selector": "0xf2e497ae",
"calldata_variants": [
"0xf2e497ae",
"0xf2e497ae0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 652,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "constant",
"target_expression_category": "computed"
},
{
"pc": 691,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 731,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": [
{
"pc": 1453,
"type": "msg_sender_eq_storage"
},
{
"pc": 1535,
"type": "msg_sender_eq_storage"
},
{
"pc": 1582,
"type": "msg_sender_eq_storage"
}
]
}
|
| medium | other | codex | Unchecked fixed-gas payout CALLs can fail silently while entitlement state is cleared | 75 | no | — |
viewevidence_json{
"evidence": "At `pc:0x82d` and `pc:0x89c`, the contract performs `CALL` after pushing gas `0x1388` (5000). The success bit is immediately discarded with `POP` at the next instruction (`pc:0x82e` / `pc:0x89d`). After the later payout path, the bytecode emits an event and clears storage with `SSTORE` at `pc:0x8e5`, `pc:0x8f3`, `pc:0x901`, `pc:0x932`, `pc:0x951`, `pc:0x960`, `pc:0x96f`, `pc:0x97e`, `pc:0x98d`, and `pc:0x9cf`. Slot names are unknown from bytecode, but the sequence is consistent with state cleanup after unverified external value transfers.",
"locations": [
"selector:0xf2e497ae",
"pc:0x82d",
"pc:0x89c",
"pc:0x8e5",
"pc:0x932",
"pc:0x9cf"
],
"recommendation": "Do not ignore CALL results on value transfers. Revert on failed payouts, or convert this logic to a pull-payment model that records unpaid balances for later withdrawal. Avoid fixed 5000-gas value pushes unless contract recipients are intentionally unsupported and that restriction is enforced/documented.",
"exploit_scenario": "In the best-effort selector path at `0xf2e497ae`, payouts are sent to computed storage-derived addresses. If one of those recipients is a contract wallet, has a reverting `receive`/fallback, or simply needs more than the hard-coded 5000 gas stipend, the CALL can fail. The bytecode then continues, and later zeroes multiple storage slots associated with the same account/round, so the recipient can lose their claim while the ETH remains in the contract."
}
|
| low | other | codex | Overpayment refund branch ignores refund failure and appears to leave excess ETH trapped | 65 | no | — |
viewevidence_json{
"evidence": "The branch at `pc:0x6e`-`pc:0x74` compares a calldata-derived amount against `CALLVALUE` and jumps into the refund path. The refund itself occurs at `pc:0x82` via `CALL` to `CALLER` with `CALLVALUE`; the return status is discarded by `POP` at `pc:0x83`, and the function returns a sentinel all-ones value through `pc:0x84`-`pc:0x92` instead of reverting. Because this is bytecode-only analysis, selector semantics are uncertain, but the unchecked refund pattern is explicit.",
"locations": [
"selector:0x5a9809ed",
"pc:0x6e",
"pc:0x82",
"pc:0x83"
],
"recommendation": "Treat refund failure as a hard failure and revert, or store refundable balances and require users to withdraw explicitly. Avoid push-style refunds to arbitrary callers when failure is ignored.",
"exploit_scenario": "In the payable entry selector `0x5a9809ed`, an overpayment branch sends `msg.value` back to `msg.sender` with a raw CALL. If the caller is a contract that rejects ETH or needs more gas than provided, that refund can fail silently. The function then returns a sentinel value instead of reverting, so the excess ETH may remain stuck in the contract with no visible recovery path in the bytecode."
}
|