019b3836-229f-7340-9526-a8183608906c
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 |
|---|---|---|---|---|
| 325 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 326 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 43639 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 43640 | capability.graph | complete | 1 / 3 | 1 week ago |
| 43641 | detector.run | complete | 1 / 3 | 1 week ago |
| 43642 | validation.fork | complete | 1 / 3 | 1 week ago |
| 96181 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode-only review found two meaningful accounting risks: settlement/refund paths use value-transferring CALLs with a hard-coded 5000 gas cap, ignore the success flag, and in the main settlement path clear storage afterward. No delegatecall/proxy issue was evidenced in the bundle.","findings":[{"severity":"high","category":"other","title":"Settlement clears accounting even when ETH payouts fail","exploit_scenario":"A participant or payout recipient can be a contract whose fallback reverts or needs more than 5000 gas. When the settlement path executes, the ETH sends fail silently, but the function continues and clears the tracked balances/recipient state. The contract balance then remains in the contract without matching storage, so users can lose access to owed funds even though the settlement appears to have completed.","recommendation":"Do not ignore low-level call results. Revert the whole settlement if any payout fails, or switch to a pull-payment model where recipients withdraw themselves. Avoid hard-coded 5000-gas sends to untrusted recipients unless failure is explicitly handled.","evidence":"In selector 0xf2e497ae, pc 2093 and pc 2204 perform CALL with nonzero value to storage-derived recipients using gas 0x1388 (5000) and immediately POP the return value. The same routine then zeroes settlement-related storage with SSTOREs at pcs 2277, 2291, 2305, 2354, 2385, 2400, 2415, 2430, 2445, and 2511. This is strong evidence that failed payouts do not roll back accounting. This conclusion is based on bytecode semantics; exact field names are unknown.","locations":["selector:0xf2e497ae","pc:0x82d","pc:0x89c","pc:0x8e5","pc:0x8f3","pc:0x901","pc:0x932","pc:0x951","pc:0x960","pc:0x96f","pc:0x97e","pc:0x98d","pc:0x9cf"]},{"severity":"medium","category":"other","title":"Refund-on-error path can silently trap ETH","exploit_scenario":"If the payable entry path decides the supplied value is invalid, it attempts to refund msg.value back to msg.sender. A contract caller with a reverting or gas-hungry fallback can cause that refund to fail, while the function still returns an error code instead of reverting. The user-facing effect is that the call looks handled, but the ETH stays inside the contract.","recommendation":"For refund/error handling, check the CALL success flag and revert if the refund fails. Alternatively, avoid inline refunds and require explicit withdrawal from a credited balance.","evidence":"In selector 0x5a9809ed, the branch at pc 117 executes a CALL to CALLER with value=CALLVALUE and gas 0x1388 (5000), then POPs the success flag and returns a sentinel value. There is no evidence of a revert or compensating state update if that refund CALL fails. Because this is inferred from bytecode only, the exact business condition triggering the refund is best-effort.","locations":["selector:0x5a9809ed","pc:0x82"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-9rch6zu6
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5b1a-cc99-7b01-a3dc-aa4ab1adac0e
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.
Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc 'ls -la /tmp/codex-9rch6zu6' in /tmp/codex-9rch6zu6
succeeded in 0ms:
total 176
drwx------ 2 noahkuhn noahkuhn 4096 Apr 5 00:46 .
drwxrwxrwt 270 nobody nogroup 24576 Apr 5 00:46 ..
-rw-rw-r-- 1 noahkuhn noahkuhn 141895 Apr 5 00:46 BYTECODE_BUNDLE.json
-rw-rw-r-- 1 noahkuhn noahkuhn 815 Apr 5 00:46 codex-output-schema.json
exec
/bin/bash -lc 'pwd && rg --files' in /tmp/codex-9rch6zu6
succeeded in 0ms:
/tmp/codex-9rch6zu6
codex-output-schema.json
BYTECODE_BUNDLE.json
exec
/bin/bash -lc "sed -n '1,220p' /tmp/codex-9rch6zu6/codex-output-schema.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
exec
/bin/bash -lc "sed -n '1,260p' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{
"analysis_artifact": {
"address": "0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98",
"artifact_hash": "0x3429f7040a761f9baf463cc18ace85e86466a442cc7162e7419e135c50894833",
"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": "0x04e9bedf1d5e76f7b3ddd89fba307c47a47c9facb81aa2ed6c78f62dbf111cae",
"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",
"PUSH2",
"MLOAD",
"PUSH1",
"MUL",
"PUSH1",
"MLOAD",
"ADD",
"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 "rg -n 'detector|delegatecall|DELEGATECALL|CALL\\\"|CALL,|STATICCALL|SELFDESTRUCT|selectors|storage|proxy|1967|callsites|findings|external|SSTORE|CALLER' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
10: "type": "msg_sender_eq_storage"
14: "type": "msg_sender_eq_storage"
18: "type": "msg_sender_eq_storage"
107: "CALLER",
109: "CALL",
139: "SSTORE",
148: "SSTORE",
157: "SSTORE",
204: "SSTORE",
257: "SSTORE",
266: "SSTORE",
278: "SSTORE",
329: "SSTORE",
351: "SSTORE",
464: "CALL",
507: "CALL",
552: "CALL",
1150: "CALLER",
1236: "CALLER",
1299: "CALLER",
1411: "SSTORE",
1426: "CALLER",
1476: "SSTORE",
1540: "SSTORE",
1750: "CALL",
1849: "CALL",
1877: "SSTORE",
1885: "SSTORE",
1893: "SSTORE",
1935: "SSTORE",
1959: "SSTORE",
1967: "SSTORE",
1975: "SSTORE",
1983: "SSTORE",
1991: "SSTORE",
2050: "SSTORE"
2102: "callsites": [
2104: "opcode": "CALL",
2111: "opcode": "CALL",
2118: "opcode": "CALL",
2125: "opcode": "CALL",
2132: "opcode": "CALL",
2139: "opcode": "CALL",
2750: "type": "msg_sender_eq_storage"
2754: "type": "msg_sender_eq_storage"
2758: "type": "msg_sender_eq_storage"
2766: "delegatecall": 0,
2770: "storage": {
2779: "op": "SSTORE",
2784: "op": "SSTORE",
2789: "op": "SSTORE",
2799: "op": "SSTORE",
2804: "op": "SSTORE",
2809: "op": "SSTORE",
2814: "op": "SSTORE",
2819: "op": "SSTORE",
2824: "op": "SSTORE",
2829: "op": "SSTORE",
2834: "op": "SSTORE",
2839: "op": "SSTORE",
2844: "op": "SSTORE",
2857: "type": "msg_sender_eq_storage"
2861: "type": "msg_sender_eq_storage"
2865: "type": "msg_sender_eq_storage"
2873: "delegatecall": 0,
2877: "storage": {
2886: "op": "SSTORE",
2891: "op": "SSTORE",
2896: "op": "SSTORE",
2906: "op": "SSTORE",
2911: "op": "SSTORE",
2916: "op": "SSTORE",
2921: "op": "SSTORE",
2926: "op": "SSTORE",
2931: "op": "SSTORE",
2936: "op": "SSTORE",
2941: "op": "SSTORE",
2946: "op": "SSTORE",
2951: "op": "SSTORE",
2964: "type": "msg_sender_eq_storage"
2968: "type": "msg_sender_eq_storage"
2972: "type": "msg_sender_eq_storage"
2980: "delegatecall": 0,
2984: "storage": {
2993: "op": "SSTORE",
2998: "op": "SSTORE",
3003: "op": "SSTORE",
3013: "op": "SSTORE",
3018: "op": "SSTORE",
3023: "op": "SSTORE",
3028: "op": "SSTORE",
3033: "op": "SSTORE",
3038: "op": "SSTORE",
3043: "op": "SSTORE",
3048: "op": "SSTORE",
3053: "op": "SSTORE",
3058: "op": "SSTORE",
3071: "type": "msg_sender_eq_storage"
3075: "type": "msg_sender_eq_storage"
3079: "type": "msg_sender_eq_storage"
3087: "delegatecall": 0,
3091: "storage": {
3100: "op": "SSTORE",
3105: "op": "SSTORE",
3110: "op": "SSTORE",
3120: "op": "SSTORE",
3125: "op": "SSTORE",
3130: "op": "SSTORE",
3135: "op": "SSTORE",
3140: "op": "SSTORE",
3145: "op": "SSTORE",
3150: "op": "SSTORE",
3155: "op": "SSTORE",
3160: "op": "SSTORE",
3165: "op": "SSTORE",
3178: "type": "msg_sender_eq_storage"
3182: "type": "msg_sender_eq_storage"
3186: "type": "msg_sender_eq_storage"
3194: "delegatecall": 0,
3198: "storage": {
3207: "op": "SSTORE",
3212: "op": "SSTORE",
3217: "op": "SSTORE",
3227: "op": "SSTORE",
3232: "op": "SSTORE",
3237: "op": "SSTORE",
3242: "op": "SSTORE",
3247: "op": "SSTORE",
3252: "op": "SSTORE",
3257: "op": "SSTORE",
3262: "op": "SSTORE",
3267: "op": "SSTORE",
3272: "op": "SSTORE",
3285: "type": "msg_sender_eq_storage"
3289: "type": "msg_sender_eq_storage"
3293: "type": "msg_sender_eq_storage"
3301: "delegatecall": 0,
3305: "storage": {
3314: "op": "SSTORE",
3319: "op": "SSTORE",
3324: "op": "SSTORE",
3334: "op": "SSTORE",
3339: "op": "SSTORE",
3344: "op": "SSTORE",
3349: "op": "SSTORE",
3354: "op": "SSTORE",
3359: "op": "SSTORE",
3364: "op": "SSTORE",
3369: "op": "SSTORE",
3374: "op": "SSTORE",
3379: "op": "SSTORE",
3392: "type": "msg_sender_eq_storage"
3396: "type": "msg_sender_eq_storage"
3400: "type": "msg_sender_eq_storage"
3408: "delegatecall": 0,
3412: "storage": {
3421: "op": "SSTORE",
3426: "op": "SSTORE",
3431: "op": "SSTORE",
3441: "op": "SSTORE",
3446: "op": "SSTORE",
3451: "op": "SSTORE",
3456: "op": "SSTORE",
3461: "op": "SSTORE",
3466: "op": "SSTORE",
3471: "op": "SSTORE",
3476: "op": "SSTORE",
3481: "op": "SSTORE",
3486: "op": "SSTORE",
3499: "type": "msg_sender_eq_storage"
3503: "type": "msg_sender_eq_storage"
3507: "type": "msg_sender_eq_storage"
3515: "delegatecall": 0,
3519: "storage": {
3528: "op": "SSTORE",
3533: "op": "SSTORE",
3538: "op": "SSTORE",
3548: "op": "SSTORE",
3553: "op": "SSTORE",
3558: "op": "SSTORE",
3563: "op": "SSTORE",
3568: "op": "SSTORE",
3573: "op": "SSTORE",
3578: "op": "SSTORE",
3583: "op": "SSTORE",
3588: "op": "SSTORE",
3593: "op": "SSTORE",
3602: "selectors": [
3616: "delegatecall": 0,
3621: "storage": {
3631: "op": "SSTORE",
3636: "op": "SSTORE",
3641: "op": "SSTORE",
3651: "op": "SSTORE",
3656: "op": "SSTORE",
3661: "op": "SSTORE",
3666: "op": "SSTORE",
3671: "op": "SSTORE",
3676: "op": "SSTORE",
3681: "op": "SSTORE",
3686: "op": "SSTORE",
3691: "op": "SSTORE",
3696: "op": "SSTORE",
3732: "is_proxy": false,
5005: "opcode": "CALL",
5011: "opcode": "CALL",
5017: "opcode": "CALL",
5023: "opcode": "CALL",
5029: "opcode": "CALL",
5035: "opcode": "CALL",
5098: "detector_findings": [
5105: "opcode": "CALL",
5112: "opcode": "CALL",
5119: "opcode": "CALL",
5129: "type": "msg_sender_eq_storage"
5133: "type": "msg_sender_eq_storage"
5137: "type": "msg_sender_eq_storage"
5143: "sink": "CALL"
5158: "sink": "CALL",
5171: "opcode": "CALL",
5178: "opcode": "CALL",
5185: "opcode": "CALL",
5195: "type": "msg_sender_eq_storage"
5199: "type": "msg_sender_eq_storage"
5203: "type": "msg_sender_eq_storage"
5208: "sink": "CALL",
5224: "sink": "CALL",
5234: "delegatecall_count": 0,
exec
/bin/bash -lc "jq 'keys' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
[
"analysis_artifact",
"analysis_run",
"artifact",
"capability_graph",
"detector_findings",
"heuristics_summary"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.selectors' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
[
"0x5a9809ed",
"0xd5f39e24",
"0xa11af387",
"0x7b0ae934",
"0xd966f799",
"0x3cd86b77",
"0x8f26e0fe",
"0xf2e497ae"
]
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.callsites' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
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 '.detector_findings' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
[
{
"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",
"0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xecb988addb74b8b83ee7d34fd147817300d9a87bc616c829980120049f95f98d",
"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",
"0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xecb988addb74b8b83ee7d34fd147817300d9a87bc616c829980120049f95f98d",
"trace_mode": "callTracer"
}
}
]
exec
/bin/bash -lc "jq '.heuristics_summary' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{
"create2_count": 0,
"delegatecall_count": 0,
"flags": [],
"selfdestruct_count": 0
}
exec
/bin/bash -lc "jq '.capability_graph' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{
"address": "0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98",
"block_number": null,
"chain_id": 1,
"codehash": "0x14ec3badbfda5bbc9e5df724588ca0f91275c1d43d4ac9b14449d713212a2c1a",
"created_at": "2026-04-04T19:45:40.000000Z",
"graph_hash": "0x54508cfc3299d6ddc0da332e8ac6f2de56de3de8d0acd21b57e224b0f055c4e7",
"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": "0x04e9bedf1d5e76f7b3ddd89fba307c47a47c9facb81aa2ed6c78f62dbf111cae",
"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": 1570,
"updated_at": "2026-04-04T19:45:40.000000Z",
"version": "capability_graph_v1"
}
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.storage' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
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 '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc==480 or .start_pc==658 or .start_pc==697 or .start_pc==737 or .start_pc==1952 or .start_pc==2011 or .start_pc==2035 or .start_pc==2061 or .start_pc==2111 or .start_pc==2153 or .start_pc==1643 or .start_pc==1757 or .start_pc==1841 or .start_pc==1411 or .start_pc==1435 or .start_pc==1459 or .start_pc==1521 or .start_pc==1568 or .start_pc==1615 or .start_pc==1314 or .start_pc==1367)' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{
"end_pc": 656,
"hash": "0xdc6cde18a506eb8fcca268f7dbd46f64cc981f13ceea8af6eb02d3b402a4ea3a",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MLOAD",
"ADD",
"PUSH15",
"SSTORE",
"PUSH1",
"PUSH1",
"PUSH2",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"ADD",
"PUSH1",
"MLOAD",
"CALLVALUE",
"SUB",
"OP_81",
"MSTORE",
"PUSH1",
"MLOAD",
"PUSH1",
"OP_81",
"SUB",
"MLOAD",
"PUSH1",
"MUL",
"PUSH1",
"ADD",
"OP_83",
"PUSH1",
"OP_84",
"ADD",
"MSTORE",
"PUSH1",
"OP_82",
"SUB",
"PUSH1",
"OP_84",
"ADD",
"MSTORE",
"OP_80",
"PUSH2",
"OP_84",
"ADD",
"MSTORE",
"OP_80",
"OP_84",
"ADD",
"OP_93",
"POP",
"POP",
"POP",
"PUSH1",
"MLOAD",
"PUSH1",
"OP_82",
"ADD",
"MSTORE",
"PUSH1",
"MLOAD",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_83",
"SUB",
"MLOAD",
"ADD",
"DIV",
"PUSH1",
"MUL",
"PUSH1",
"ADD",
"OP_83",
"PUSH1",
"OP_84",
"ADD",
"MSTORE",
"PUSH1",
"OP_82",
"SUB",
"PUSH1",
"OP_84",
"ADD",
"MSTORE",
"OP_80",
"PUSH2",
"OP_84",
"ADD",
"MSTORE",
"OP_80",
"OP_84",
"ADD",
"OP_93",
"POP",
"POP",
"POP",
"OP_81",
"PUSH1",
"ADD",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"PUSH1",
"OP_81",
"PUSH1",
"OP_84",
"PUSH1",
"PUSH1",
"PUSH1",
"CALL",
"PUSH2",
"JUMPI"
],
"start_pc": 480
}
{
"end_pc": 695,
"hash": "0xa9dd62bb1a7afd457f24065aad81d2301267c39581238ecde5f642358d7e955b",
"opcodes": [
"JUMPDEST",
"PUSH1",
"OP_81",
"ADD",
"OP_92",
"POP",
"PUSH2",
"OP_82",
"ADD",
"MLOAD",
"OP_80",
"OP_80",
"OP_85",
"OP_82",
"PUSH1",
"OP_87",
"ADD",
"MLOAD",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_87",
"SDIV",
"PUSH1",
"ADD",
"CALL",
"PUSH2",
"JUMPI"
],
"start_pc": 658
}
{
"end_pc": 735,
"hash": "0x8521eca7a6ee9c51f0f220f240e6ab0af81ff23e025699bba01827bd52c56284",
"opcodes": [
"JUMPDEST",
"POP",
"OP_80",
"OP_84",
"ADD",
"OP_93",
"POP",
"POP",
"PUSH2",
"OP_82",
"ADD",
"MLOAD",
"OP_80",
"OP_80",
"OP_85",
"OP_82",
"PUSH1",
"OP_87",
"ADD",
"MLOAD",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_87",
"SDIV",
"PUSH1",
"ADD",
"CALL",
"PUSH2",
"JUMPI"
],
"start_pc": 697
}
{
"end_pc": 811,
"hash": "0xc70880fb03365c6bd80352c76c51a7d5e6e37db0b3dd8b4d6e6013aa1eb982ca",
"opcodes": [
"JUMPDEST",
"POP",
"OP_80",
"OP_84",
"ADD",
"OP_93",
"POP",
"POP",
"OP_80",
"OP_83",
"SUB",
"PUSH2",
"MLOAD",
"PUSH1",
"MLOAD",
"PUSH1",
"MLOAD",
"PUSH32",
"OP_84",
"OP_86",
"OP_A4",
"POP",
"POP",
"POP",
"POP",
"PUSH2",
"MLOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"RETURN"
],
"start_pc": 737
}
{
"end_pc": 1326,
"hash": "0xcd971c88892faf823ef6b0f464328baf11cd30375e5d8a0bdb7c5ae5395b21e9",
"opcodes": [
"JUMPDEST",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1314
}
{
"end_pc": 1410,
"hash": "0xa243201e35e077b4f1d5d155568156b32911b16dc91e1469047a89c1c3d319b8",
"opcodes": [
"CALLDATASIZE",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"CALLDATASIZE",
"PUSH1",
"OP_82",
"CALLDATACOPY",
"PUSH1",
"CALLDATALOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"PUSH2",
"MSTORE",
"POP",
"PUSH1",
"PUSH1",
"SUB",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"MSTORE"
],
"start_pc": 1367
}
{
"end_pc": 1434,
"hash": "0x34cf6ddbf2ecde259e77fa3f68b4a4e9c439543593329bb556fc6c3ad4b9e44e",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MLOAD",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1411
}
{
"end_pc": 1458,
"hash": "0x4070326fdf4c2d3b74e6b1c5b856b9463840245062c1ee85d2e020c7637ab667",
"opcodes": [
"CALLER",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"ADD",
"SLOAD",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1435
}
{
"end_pc": 1495,
"hash": "0x6f695bc6cc3c204d49f1006db097756855af68512350430a62cdc3ed54894723",
"opcodes": [
"PUSH2",
"MLOAD",
"PUSH1",
"EXP",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MLOAD",
"AND",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1459
}
{
"end_pc": 1540,
"hash": "0x034b682c8fca7f8e2e61544b4069ea970ead3010a413d7db9ad058dcef0a328d",
"opcodes": [
"JUMPDEST",
"CALLER",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SLOAD",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1521
}
{
"end_pc": 1587,
"hash": "0xd4f9d07bfef67cef493f5adc5666626e006277fa6f31e4c509a02cdd7215b49d",
"opcodes": [
"JUMPDEST",
"CALLER",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SLOAD",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1568
}
{
"end_pc": 1630,
"hash": "0x87f91d1302ef3894f0ba69a8326fb08c8518be0367f901b9b33623acee3f65af",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"SUB",
"PUSH2",
"MLOAD",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1615
}
{
"end_pc": 1756,
"hash": "0x4fd70c58ac628034d969f5545db2075a21dae2b7d6ef585cd531f2dd912de634",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MSTORE",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"OR",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH1",
"PUSH1",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"ADD",
"PUSH2",
"MLOAD",
"OP_81",
"MSTORE",
"CALLER",
"PUSH2",
"MLOAD",
"PUSH32",
"PUSH1",
"OP_84",
"OP_A3",
"POP",
"PUSH2",
"PUSH2",
"MLOAD",
"EQ",
"ISZERO",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1643
}
{
"end_pc": 1765,
"hash": "0xbbf1b53b9e59f3e87269964c734c9d9da5fa60e2ec8d5484ce40598e89067e0a",
"opcodes": [
"PUSH2",
"MLOAD",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1757
}
{
"end_pc": 1905,
"hash": "0xd5d1c69f1093459add85a328f8f65b1b6643834847b0a147738f59474ab067fe",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"ADD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"MUL",
"SGT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1841
}
{
"end_pc": 2010,
"hash": "0xee9bca1be50b575e13d3813ff0967a06a01d7693fb635f54452fa68164fb47a8",
"opcodes": [
"PUSH1",
"PUSH2",
"MSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"ADD",
"PUSH2",
"MSTORE",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"SDIV",
"PUSH2",
"MSTORE"
],
"start_pc": 1952
}
{
"end_pc": 2034,
"hash": "0x5bb0d9457e267eb56ecda8fbd920a074f062262c5a29d0200aeca7c827ccef06",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MLOAD",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2011
}
{
"end_pc": 2060,
"hash": "0x224863a61fef07c89053db252c212d527f8f73a545edb193cb8c26394cd98b8a",
"opcodes": [
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MLOAD",
"PUSH1",
"EXP",
"AND",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2035
}
{
"end_pc": 2094,
"hash": "0x42ff6bf526478becaacafde6c6e0d0f3f370e1ebf0d61a13437902461514c791",
"opcodes": [
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH2",
"MLOAD",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"ADD",
"SLOAD",
"PUSH2",
"CALL",
"POP"
],
"start_pc": 2061
}
{
"end_pc": 2123,
"hash": "0xe0a12b150e74b8c3124681fdfaf5972423579fd7624c973e32d67c125a1b1128",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MLOAD",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2111
}
{
"end_pc": 2311,
"hash": "0xde4a74deb9464a524892f8e2a414174277c0b02690ee80cf5a3c7acfea5882f7",
"opcodes": [
"JUMPDEST",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH1",
"PUSH2",
"MLOAD",
"EQ",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"MUL",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"SLOAD",
"ADD",
"PUSH2",
"MLOAD",
"PUSH2",
"CALL",
"POP",
"PUSH1",
"PUSH1",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"ADD",
"PUSH2",
"MLOAD",
"OP_81",
"MSTORE",
"PUSH2",
"MLOAD",
"PUSH32",
"PUSH1",
"OP_83",
"OP_A2",
"POP",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"SSTORE",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"MSTORE"
],
"start_pc": 2153
}
exec
/bin/bash -lc "jq '.artifact | keys' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
[
"codehash",
"compiler_json",
"implementation_address",
"is_proxy",
"runtime_bytecode",
"verified_source"
]
exec
/bin/bash -lc "jq '.analysis_run' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{
"address": "0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98",
"block_number": null,
"chain_id": 1,
"child_links": [],
"created_at": "2025-12-19T20:03:50.000000Z",
"id": "019b3836-229f-7340-9526-a8183608906c",
"parent_links": [],
"status": "running",
"updated_at": "2026-04-04T19:45:39.000000Z"
}
exec
/bin/bash -lc "jq '.artifact.compiler_json, .artifact.is_proxy, .artifact.implementation_address, .artifact.verified_source' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{
"etherscan": {
"skipped": true
}
}
false
null
false
exec
/bin/bash -lc "jq '.analysis_artifact.artifact_json.basic_blocks[] | select(.start_pc==812 or .start_pc==825 or .start_pc==851 or .start_pc==864 or .start_pc==949 or .start_pc==962 or .start_pc==1007 or .start_pc==1071 or .start_pc==1103 or .start_pc==1116 or .start_pc==1146 or .start_pc==1159 or .start_pc==1205 or .start_pc==1276 or .start_pc==1327 or .start_pc==1354 or .start_pc==1521 or .start_pc==1541 or .start_pc==1552 or .start_pc==1555 or .start_pc==1561 or .start_pc==1588 or .start_pc==1599 or .start_pc==1602 or .start_pc==1608 or .start_pc==1631 or .start_pc==1766 or .start_pc==1830 or .start_pc==1836 or .start_pc==1918 or .start_pc==1928 or .start_pc==1934 or .start_pc==1937 or .start_pc==1942 or .start_pc==2312 or .start_pc==2336 or .start_pc==2370 or .start_pc==2452 or .start_pc==2465 or .start_pc==2492 or .start_pc==2512 or .start_pc==2529 or .start_pc==2542)' /tmp/codex-9rch6zu6/BYTECODE_BUNDLE.json" in /tmp/codex-9rch6zu6
succeeded in 0ms:
{
"end_pc": 824,
"hash": "0x46e7c7733ecb5418befbaa55330483d9fa2b50ebf3a842180e5daae87abee271",
"opcodes": [
"JUMPDEST",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 812
}
{
"end_pc": 850,
"hash": "0x2d36bfbb744e530c24d7278c75a29770a36639e23d42fafae7bc3bc9fe78e867",
"opcodes": [
"PUSH1",
"CALLDATALOAD",
"PUSH2",
"MSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"SLOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"RETURN"
],
"start_pc": 825
}
{
"end_pc": 863,
"hash": "0xd2bd1cf66a9f14b968652acb6f14b10449e5a0f14626d360c36513b0a3c6ada1",
"opcodes": [
"JUMPDEST",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 851
}
{
"end_pc": 947,
"hash": "0x069b40b273d1b688084652d5ee7fb91552c7bb0d4a46d99e69eb9a561151db5d",
"opcodes": [
"PUSH1",
"CALLDATALOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"PUSH1",
"OP_81",
"MSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SLOAD",
"PUSH1",
"OP_82",
"ADD",
"MSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SLOAD",
"PUSH1",
"OP_82",
"ADD",
"MSTORE",
"PUSH1",
"OP_81",
"ADD",
"OP_90",
"POP",
"PUSH1",
"PUSH1",
"OP_82",
"SUB",
"MSTORE",
"PUSH1",
"PUSH1",
"OP_82",
"SUB",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"PUSH1",
"OP_82",
"SUB",
"RETURN"
],
"start_pc": 864
}
{
"end_pc": 961,
"hash": "0xba51cd9d0179eb293bf7c31b56b9e9b23895a653c3e3d044204ace2b8f1b9a79",
"opcodes": [
"JUMPDEST",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 949
}
{
"end_pc": 1006,
"hash": "0x0aeae1e0355e00ca3dc45c15921adb98c7049a27d94f4acfcd258c431b04846d",
"opcodes": [
"PUSH1",
"CALLDATALOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"PUSH2",
"MSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MLOAD",
"MSTORE",
"PUSH1",
"PUSH2",
"MSTORE"
],
"start_pc": 962
}
{
"end_pc": 1022,
"hash": "0xfb81baa1ccd845b16cb09169ca0973cf932576a0013c77c423a60af062911223",
"opcodes": [
"JUMPDEST",
"PUSH2",
"MLOAD",
"MLOAD",
"PUSH2",
"MLOAD",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1007
}
{
"end_pc": 1101,
"hash": "0xac371ab0ac073e3c33c7337ec7cea7c46b1ccf013ba45a35ca39192519fbd147",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MLOAD",
"ADD",
"PUSH1",
"PUSH1",
"OP_82",
"SUB",
"MSTORE",
"PUSH1",
"PUSH1",
"OP_82",
"SUB",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"PUSH1",
"OP_82",
"SUB",
"RETURN"
],
"start_pc": 1071
}
{
"end_pc": 1115,
"hash": "0x878c0ac6a1c54b02ef506a8d94ccae7536a94be422594b0b12a194aea0e9eb41",
"opcodes": [
"JUMPDEST",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1103
}
{
"end_pc": 1145,
"hash": "0x1ac9669ea15371da163d55ad1efc1794eadd4aac2e7c029edb29ff0040b1bb1b",
"opcodes": [
"PUSH1",
"CALLDATALOAD",
"PUSH2",
"MSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"RETURN"
],
"start_pc": 1116
}
{
"end_pc": 1158,
"hash": "0xee0450e91529a68bdfcda9bab942ec2a2bd885d3b07cb32733dfe91285167ea1",
"opcodes": [
"JUMPDEST",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1146
}
{
"end_pc": 1204,
"hash": "0xc3855da757179a9777c7376267eda3023b77a9fa1ddd88466a776f0bb3cd1dfa",
"opcodes": [
"PUSH1",
"CALLDATALOAD",
"PUSH2",
"MSTORE",
"PUSH2",
"MSIZE",
"OP_90",
"MSIZE",
"ADD",
"PUSH1",
"OP_90",
"MSTORE",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"MSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MLOAD",
"MSTORE"
],
"start_pc": 1159
}
{
"end_pc": 1223,
"hash": "0x98d99eb414bfe6e7f52d6571a3ad4cb79249f7c61db1e06485ce2b48603e552e",
"opcodes": [
"JUMPDEST",
"PUSH2",
"MLOAD",
"MLOAD",
"PUSH1",
"PUSH2",
"MLOAD",
"MUL",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1205
}
{
"end_pc": 1312,
"hash": "0x41c11aed06fdfef02e3ae6e48b98599c9c16c27cf49afc2805f848859e93e3a2",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MLOAD",
"ADD",
"PUSH1",
"PUSH1",
"OP_82",
"SUB",
"MSTORE",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_83",
"SUB",
"MLOAD",
"PUSH1",
"ADD",
"ADD",
"DIV",
"PUSH1",
"MUL",
"PUSH1",
"OP_82",
"SUB",
"RETURN"
],
"start_pc": 1276
}
{
"end_pc": 1353,
"hash": "0xc429efdb539523877e3ec082f9dce562e0cc73beba8b0a10f6b10e37a21c94da",
"opcodes": [
"PUSH15",
"SLOAD",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"RETURN"
],
"start_pc": 1327
}
{
"end_pc": 1366,
"hash": "0xbf93d4f2c0fc5a767d92b348f445be0892942316e6ae24f8d73540d67500bd2e",
"opcodes": [
"JUMPDEST",
"PUSH4",
"OP_81",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1354
}
{
"end_pc": 1540,
"hash": "0x034b682c8fca7f8e2e61544b4069ea970ead3010a413d7db9ad058dcef0a328d",
"opcodes": [
"JUMPDEST",
"CALLER",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"SLOAD",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1521
}
{
"end_pc": 1551,
"hash": "0x70bf7a2e1418f90ed84439bf1f857f4cdc48f0a7ec5dc15676e7c6196ee7de9d",
"opcodes": [
"PUSH1",
"PUSH2",
"MLOAD",
"EQ",
"PUSH2",
"JUMP"
],
"start_pc": 1541
}
{
"end_pc": 1553,
"hash": "0x4843abda37db57888a978b8506e6099579af0460f1999a9afb2f3d0e6cfbcfa8",
"opcodes": [
"JUMPDEST",
"PUSH1"
],
"start_pc": 1552
}
{
"end_pc": 1560,
"hash": "0x722f2a7cf63fd4078b19b4695c0994ca512afdb46d4e26bb3d4c6cfe225943e7",
"opcodes": [
"JUMPDEST",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1555
}
{
"end_pc": 1567,
"hash": "0xdea805b369cb267983325890728a0bc13c2e11b05ba9275fcfdcd36993106446",
"opcodes": [
"PUSH2",
"PUSH2",
"MSTORE"
],
"start_pc": 1561
}
{
"end_pc": 1598,
"hash": "0x565a7967da32dfa95a961771c3f1a97055cdca73994e49f52ad0a4d93183dfde",
"opcodes": [
"PUSH1",
"PUSH2",
"MLOAD",
"EQ",
"PUSH2",
"JUMP"
],
"start_pc": 1588
}
{
"end_pc": 1600,
"hash": "0xb42ee911e3b3470b89c1745396371117532b98187109774a0a0e9f5de704bae5",
"opcodes": [
"JUMPDEST",
"PUSH1"
],
"start_pc": 1599
}
{
"end_pc": 1607,
"hash": "0x718387923d96916713451da1bcc9302fba604f39b801f4dfb2f73ef183aaa679",
"opcodes": [
"JUMPDEST",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1602
}
{
"end_pc": 1614,
"hash": "0x97d9d397e689432c8afa8181a70f2a9a4a1e2df73e90a6be434bbd981db77af3",
"opcodes": [
"PUSH2",
"PUSH2",
"MSTORE"
],
"start_pc": 1608
}
{
"end_pc": 1642,
"hash": "0x540b6864389e2a568c3fa6696f6fb977e3b96b21b011510b5700b9bf31e69619",
"opcodes": [
"PUSH1",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"RETURN"
],
"start_pc": 1631
}
{
"end_pc": 1829,
"hash": "0xc4684678509ef8b7bcd2e9df853f4fec54e5914feac8c3bb4dfc9a815b551c2f",
"opcodes": [
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"ADD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"MUL",
"SGT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1766
}
{
"end_pc": 1835,
"hash": "0x5310ad09bf805c4e419b645896601ed24c5919c0ea0601f2ea8f05b7081ed1fc",
"opcodes": [
"PUSH1",
"PUSH2",
"MSTORE"
],
"start_pc": 1830
}
{
"end_pc": 1840,
"hash": "0x093b0046e8aa1a7047a0ee7e7a4db084b9ff3b7a4e05a7e35cfe22a90f761bf6",
"opcodes": [
"JUMPDEST",
"PUSH2",
"JUMP"
],
"start_pc": 1836
}
{
"end_pc": 1927,
"hash": "0x58fb84486744040f33249763c5ed64f1921ef6317155314c5eacbe4a9f2f0701",
"opcodes": [
"JUMPDEST",
"PUSH2",
"MLOAD",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1918
}
{
"end_pc": 1933,
"hash": "0xfba84a5b5d4501bf5affa9de3a469096346a899161477dd0d7d83b81460f155a",
"opcodes": [
"PUSH1",
"PUSH2",
"JUMP"
],
"start_pc": 1928
}
{
"end_pc": 1935,
"hash": "0x40f33ce5dd6b6d1fb0afdc58e80a33989ce581511cd6017a084aa4c0256cbb84",
"opcodes": [
"JUMPDEST",
"PUSH1"
],
"start_pc": 1934
}
{
"end_pc": 1941,
"hash": "0xbb1a3cc93750d1406d846cb4959daa3a2db3ccec9066bcadbab21079b26c2658",
"opcodes": [
"JUMPDEST",
"PUSH2",
"MSTORE"
],
"start_pc": 1937
}
{
"end_pc": 1951,
"hash": "0x83afc05bf893dc878104a31a02f517913b0d9e19b945e1e73b1965d48eddaffa",
"opcodes": [
"JUMPDEST",
"PUSH2",
"MLOAD",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1942
}
{
"end_pc": 2335,
"hash": "0x84ad4e3879f351974821c23343925ead2f24285487f95772d35af8afde47fcf8",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SLOAD",
"PUSH2",
"MLOAD",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2312
}
{
"end_pc": 2369,
"hash": "0xc014eeeaac836d24ac7d7aec0de501e439b37805428276b54488b80fe7ee51ce",
"opcodes": [
"PUSH1",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH1",
"ADD",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"MLOAD",
"ADD",
"PUSH2",
"MSTORE",
"PUSH2",
"JUMP"
],
"start_pc": 2336
}
{
"end_pc": 2451,
"hash": "0x0a75b3c389144eead7a444c405ac74ede33df4c4906c44ae1761352f3b3221f2",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"SSTORE",
"PUSH1",
"PUSH2",
"MSTORE"
],
"start_pc": 2370
}
{
"end_pc": 2464,
"hash": "0xc4926b055e59535368159e21dd71ec23857206c0dd307d066d9928538b0d546e",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MLOAD",
"SLT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2452
}
{
"end_pc": 2491,
"hash": "0x8e07c885c5107e93d28add3203f9abe07a3801f348830a819265bbd24760d709",
"opcodes": [
"PUSH1",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"ADD",
"SLOAD",
"EQ",
"ISZERO",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 2465
}
{
"end_pc": 2511,
"hash": "0x06a16bbdc912edc24e20f6f28a636e4ac35fc762f0af4bc0145dc88e27d42b27",
"opcodes": [
"PUSH1",
"PUSH2",
"MLOAD",
"PUSH2",
"PUSH2",
"MLOAD",
"MUL",
"PUSH2",
"ADD",
"ADD",
"SSTORE"
],
"start_pc": 2492
}
{
"end_pc": 2527,
"hash": "0x070950c975e6973b8898d2347b96ac0931d5c967a20616c3e8149dfeed229fbf",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MLOAD",
"ADD",
"PUSH2",
"MSTORE",
"PUSH2",
"JUMP"
],
"start_pc": 2512
}
{
"end_pc": 2541,
"hash": "0x1c6609552e96255244721b70fa03a761fea1affdb274664803810e6f48a5761f",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH2",
"MSTORE",
"PUSH1",
"PUSH2",
"RETURN"
],
"start_pc": 2529
}
{
"end_pc": 2543,
"hash": "0xca34432540a8da9e726ee419a126785b71a57ecb0d06b7b4058b65a83db669b1",
"opcodes": [
"JUMPDEST",
"POP"
],
"start_pc": 2542
}
exec
js_repl in /tmp/codex-9rch6zu6
2026-04-05T00:47:32.047366Z ERROR codex_core::tools::router: error=bundle.artifact.runtime_bytecode.replace is not a function
exited 1 in 185ms:
bundle.artifact.runtime_bytecode.replace is not a function
exec
js_repl in /tmp/codex-9rch6zu6
succeeded in 6ms:
exec
js_repl in /tmp/codex-9rch6zu6
succeeded in 1ms:
object
{
full: '0x600061047f537c010000000000000000000000000000000000000000000000000000000060003504635a9809ed81141561032c573659905901600090523660048237600435606052602435608052604435602082010160a05260643560c052608435602082010160e0525060c0513412156100935760006000600060003433611388f1506001600003610100526020610100f35b6e027220000000000000000000000000546101205260c05134036127226101205102556060516127226101205102600101556080516127226101205102600201556000610140525b602060a051035161014051121561015c576101405160200260a05101516101405161272261012051026003010155601c6020599059016000905201610120516101405160200260a05101517f1250e52636eed438f884679df55d2911cf41764cf8b2da1bd22d29b0eb14f80e600084a35060016101405101610140526100db565b602060a05103516127226101205102612713015560c05161272261012051026127170155602060e0510351612722610120510261271801556000610140525b602060e05103516020610140510212156101e0576101405160200260e0510151600161014051016127226101205102612718010155600161014051016101405261019b565b600161012051016e027220000000000000000000000000556080601c6101a059905901600090520160c0513403815260a05160208103516020026020018360208401526020820360a0840152806101208401528084019350505060c051604082015260e0516020601f602083035101046020026020018360608401526020820360e0840152806101608401528084019350505081600401599059016000905260808160808460006004601ef161029257fe5b6080810192506101208201518080858260a087015160006004600a8705601201f16102b957fe5b508084019350506101608201518080858260e087015160006004600a8705601201f16102e157fe5b50808401935050808303610120516080516060517f8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba8486a45050505061012051610220526020610220f35b63d5f39e248114156103535760043561012052612722610120510254610240526020610240f35b63a11af3878114156103b5576004356101205260605990590160009052600281526127226101205102600101546020820152612722610120510260020154604082015260208101905060206040820352602060208203510260400160408203f3505b637b0ae93481141561044f576004356101205260c859905901600090526102a052612722610120510261271301546102a051526000610140525b6102a0515161014051121561042f576101405161272261012051026003010154600161014051016020026102a051015260016101405101610140526103ef565b60206102a0510160206040820352602060208203510260400160408203f3505b63d966f79981141561047a5760043561012052612722610120510261271701546102e05260206102e0f35b633cd86b7781141561052257600435610120526101405990590160009052610300526000610140526127226101205102612718015461030051525b61030051516020610140510212156104fc576001610140510161272261012051026127180101546001610140510160200261030051015260016101405101610140526104b5565b60206103005101602060408203526020601f6020830351604001010460200260408203f3505b638f26e0fe81141561054a576e02722000000000000000000000000054610340526020610340f35b63f2e497ae8114156109ee5736599059016000905236600482376004356101205260243561036052506001600003610380526000610140525b612722610120510261271301546101405112156105f15733610140516127226101205102600301015414156105e1576101405160020a6103a0526000612722610120510261271401546103a0511614156105e05761014051610380525b5b6001610140510161014052610583565b3361272261012051026001015414156106105760006103605114610613565b60005b15610620576103e7610380525b33612722610120510260020154141561063f5760016103605114610642565b60005b1561064f576103e7610380525b600160000361038051141561066b5760006103c05260206103c0f35b60006103e0526103a051612722610120510261271401541761272261012051026127140155601c604059905901600090520161036051815233610120517fcfa82ef0390c8f3e57ebe6c0665352a383667e792af012d350d9786ee5173d26602084a3506103e76103805114151561077e5761036051156107315760016127226101205102612715015401612722610120510261271501556127226101205102612713015460026127226101205102612715015402131561072c5760016103e0525b610779565b6001612722610120510261271601540161272261012051026127160155612722610120510261271301546002612722610120510261271601540213156107785760026103e0525b5b610796565b610360511561078e576001610791565b60025b6103e0525b6103e051156109e15760006101405261272261012051026127160154612722610120510261271501540161040052610400516127226101205102612717015405610420525b6127226101205102612713015461014051121561083f57612722610120510261271401546101405160020a161561082f576000600060006000610420516101405161272261012051026003010154611388f1505b60016101405101610140526107db565b60016103e051141561085c57612722610120510260010154610869565b6127226101205102600201545b6104405260006000600060006000610400511461272261012051026127170154026127226101205102540161044051611388f150601c6040599059016000905201610440518152610120517fd73429fe3d5eae9e487e60af3e9befceddbdbd53695543a735e2d8face8269d3602083a2506000612722610120510255600061272261012051026001015560006127226101205102600201556000610140525b6127226101205102612713015461014051121561094257600061014051612722610120510260030101556001610140510161014052610908565b6000612722610120510261271301556000612722610120510261271401556000612722610120510261271501556000612722610120510261271601556000612722610120510261271701556000610140525b600a6101405112156109e05760006101405161272261012051026127180101541415156109d05760006101405161272261012051026127180101555b6001610140510161014052610994565b5b6001610460526020610460f35b50',
head: null,
length: 5090,
tail: null,
truncated: false
}
exec
js_repl in /tmp/codex-9rch6zu6
succeeded in 5ms:
0: PUSH1 0x00
2: PUSH2 0x047f
5: MSTORE8
6: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
36: PUSH1 0x00
38: CALLDATALOAD
39: DIV
40: PUSH4 0x5a9809ed
45: DUP2
46: EQ
47: ISZERO
48: PUSH2 0x032c
51: JUMPI
52: CALLDATASIZE
53: MSIZE
54: SWAP1
55: MSIZE
56: ADD
57: PUSH1 0x00
59: SWAP1
60: MSTORE
61: CALLDATASIZE
62: PUSH1 0x04
64: DUP3
65: CALLDATACOPY
66: PUSH1 0x04
68: CALLDATALOAD
69: PUSH1 0x60
71: MSTORE
72: PUSH1 0x24
74: CALLDATALOAD
75: PUSH1 0x80
77: MSTORE
78: PUSH1 0x44
80: CALLDATALOAD
81: PUSH1 0x20
83: DUP3
84: ADD
85: ADD
86: PUSH1 0xa0
88: MSTORE
89: PUSH1 0x64
91: CALLDATALOAD
92: PUSH1 0xc0
94: MSTORE
95: PUSH1 0x84
97: CALLDATALOAD
98: PUSH1 0x20
100: DUP3
101: ADD
102: ADD
103: PUSH1 0xe0
105: MSTORE
106: POP
107: PUSH1 0xc0
109: MLOAD
110: CALLVALUE
111: SLT
112: ISZERO
113: PUSH2 0x0093
116: JUMPI
117: PUSH1 0x00
119: PUSH1 0x00
121: PUSH1 0x00
123: PUSH1 0x00
125: CALLVALUE
126: CALLER
127: PUSH2 0x1388
130: CALL
131: POP
132: PUSH1 0x01
134: PUSH1 0x00
136: SUB
137: PUSH2 0x0100
140: MSTORE
141: PUSH1 0x20
143: PUSH2 0x0100
146: RETURN
147: JUMPDEST
148: PUSH15 0x027220000000000000000000000000
164: SLOAD
165: PUSH2 0x0120
168: MSTORE
169: PUSH1 0xc0
171: MLOAD
172: CALLVALUE
173: SUB
174: PUSH2 0x2722
177: PUSH2 0x0120
180: MLOAD
181: MUL
182: SSTORE
183: PUSH1 0x60
185: MLOAD
186: PUSH2 0x2722
189: PUSH2 0x0120
192: MLOAD
193: MUL
194: PUSH1 0x01
196: ADD
197: SSTORE
198: PUSH1 0x80
200: MLOAD
201: PUSH2 0x2722
204: PUSH2 0x0120
207: MLOAD
208: MUL
209: PUSH1 0x02
211: ADD
212: SSTORE
213: PUSH1 0x00
215: PUSH2 0x0140
218: MSTORE
219: JUMPDEST
220: PUSH1 0x20
---
1320: DUP2
1321: EQ
1322: ISZERO
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
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
---
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
exec
js_repl in /tmp/codex-9rch6zu6
succeeded in 5ms:
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
exec
js_repl in /tmp/codex-9rch6zu6
succeeded in 6ms:
801: MLOAD
802: PUSH2 0x0220
805: MSTORE
806: PUSH1 0x20
808: PUSH2 0x0220
811: RETURN
812: JUMPDEST
813: PUSH4 0xd5f39e24
818: DUP2
819: EQ
820: ISZERO
821: PUSH2 0x0353
824: JUMPI
825: PUSH1 0x04
827: CALLDATALOAD
828: PUSH2 0x0120
831: MSTORE
832: PUSH2 0x2722
835: PUSH2 0x0120
838: MLOAD
839: MUL
840: SLOAD
841: PUSH2 0x0240
844: MSTORE
845: PUSH1 0x20
847: PUSH2 0x0240
850: RETURN
851: JUMPDEST
852: PUSH4 0xa11af387
857: DUP2
858: EQ
859: ISZERO
860: PUSH2 0x03b5
863: JUMPI
864: PUSH1 0x04
866: CALLDATALOAD
867: PUSH2 0x0120
870: MSTORE
871: PUSH1 0x60
873: MSIZE
874: SWAP1
875: MSIZE
876: ADD
877: PUSH1 0x00
879: SWAP1
880: MSTORE
881: PUSH1 0x02
883: DUP2
884: MSTORE
885: PUSH2 0x2722
888: PUSH2 0x0120
891: MLOAD
892: MUL
893: PUSH1 0x01
895: ADD
896: SLOAD
897: PUSH1 0x20
899: DUP3
900: ADD
901: MSTORE
902: PUSH2 0x2722
905: PUSH2 0x0120
908: MLOAD
909: MUL
910: PUSH1 0x02
912: ADD
913: SLOAD
914: PUSH1 0x40
916: DUP3
917: ADD
918: MSTORE
919: PUSH1 0x20
921: DUP2
922: ADD
923: SWAP1
924: POP
925: PUSH1 0x20
927: PUSH1 0x40
929: DUP3
930: SUB
931: MSTORE
932: PUSH1 0x20
934: PUSH1 0x20
936: DUP3
937: SUB
938: MLOAD
939: MUL
940: PUSH1 0x40
942: ADD
943: PUSH1 0x40
945: DUP3
946: SUB
947: RETURN
948: POP
949: JUMPDEST
950: PUSH4 0x7b0ae934
955: DUP2
956: EQ
957: ISZERO
958: PUSH2 0x044f
961: JUMPI
962: PUSH1 0x04
964: CALLDATALOAD
965: PUSH2 0x0120
968: MSTORE
969: PUSH1 0xc8
971: MSIZE
972: SWAP1
973: MSIZE
974: ADD
975: PUSH1 0x00
977: SWAP1
978: MSTORE
979: PUSH2 0x02a0
982: MSTORE
983: PUSH2 0x2722
986: PUSH2 0x0120
989: MLOAD
990: MUL
991: PUSH2 0x2713
994: ADD
995: SLOAD
996: PUSH2 0x02a0
999: MLOAD
1000: MSTORE
1001: PUSH1 0x00
1003: PUSH2 0x0140
1006: MSTORE
1007: JUMPDEST
1008: PUSH2 0x02a0
1011: MLOAD
1012: MLOAD
1013: PUSH2 0x0140
1016: MLOAD
1017: SLT
1018: ISZERO
1019: PUSH2 0x042f
1022: JUMPI
1023: PUSH2 0x0140
1026: MLOAD
1027: PUSH2 0x2722
1030: PUSH2 0x0120
1033: MLOAD
1034: MUL
1035: PUSH1 0x03
1037: ADD
1038: ADD
1039: SLOAD
1040: PUSH1 0x01
1042: PUSH2 0x0140
1045: MLOAD
1046: ADD
1047: PUSH1 0x20
1049: MUL
1050: PUSH2 0x02a0
1053: MLOAD
1054: ADD
1055: MSTORE
1056: PUSH1 0x01
1058: PUSH2 0x0140
1061: MLOAD
1062: ADD
1063: PUSH2 0x0140
1066: MSTORE
1067: PUSH2 0x03ef
1070: JUMP
1071: JUMPDEST
1072: PUSH1 0x20
1074: PUSH2 0x02a0
1077: MLOAD
1078: ADD
1079: PUSH1 0x20
1081: PUSH1 0x40
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
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
1177: PUSH2 0x0300
1180: MSTORE
1181: PUSH1 0x00
1183: PUSH2 0x0140
1186: MSTORE
1187: PUSH2 0x2722
1190: PUSH2 0x0120
1193: MLOAD
1194: MUL
1195: PUSH2 0x2718
1198: ADD
1199: SLOAD
1200: PUSH2 0x0300
1203: MLOAD
1204: MSTORE
1205: JUMPDEST
1206: PUSH2 0x0300
1209: MLOAD
1210: MLOAD
1211: PUSH1 0x20
1213: PUSH2 0x0140
1216: MLOAD
1217: MUL
1218: SLT
1219: ISZERO
1220: PUSH2 0x04fc
1223: JUMPI
1224: PUSH1 0x01
1226: PUSH2 0x0140
1229: MLOAD
1230: ADD
1231: PUSH2 0x2722
1234: PUSH2 0x0120
1237: MLOAD
1238: MUL
1239: PUSH2 0x2718
1242: ADD
1243: ADD
1244: SLOAD
1245: PUSH1 0x01
1247: PUSH2 0x0140
1250: MLOAD
1251: ADD
1252: PUSH1 0x20
1254: MUL
1255: PUSH2 0x0300
1258: MLOAD
1259: ADD
1260: MSTORE
1261: PUSH1 0x01
1263: PUSH2 0x0140
1266: MLOAD
1267: ADD
1268: PUSH2 0x0140
1271: MSTORE
1272: PUSH2 0x04b5
1275: JUMP
1276: JUMPDEST
1277: PUSH1 0x20
1279: PUSH2 0x0300
1282: MLOAD
1283: ADD
1284: PUSH1 0x20
1286: PUSH1 0x40
1288: DUP3
1289: SUB
1290: MSTORE
1291: PUSH1 0x20
1293: PUSH1 0x1f
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
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
exec
js_repl in /tmp/codex-9rch6zu6
succeeded in 2ms:
462: ADD
463: ADD
464: SSTORE
465: PUSH1 0x01
467: PUSH2 0x0140
470: MLOAD
471: ADD
472: PUSH2 0x0140
475: MSTORE
476: PUSH2 0x019b
479: JUMP
480: JUMPDEST
481: PUSH1 0x01
483: PUSH2 0x0120
486: MLOAD
487: ADD
488: PUSH15 0x027220000000000000000000000000
504: SSTORE
505: PUSH1 0x80
507: PUSH1 0x1c
509: PUSH2 0x01a0
512: MSIZE
513: SWAP1
514: MSIZE
515: ADD
516: PUSH1 0x00
518: SWAP1
519: MSTORE
520: ADD
521: PUSH1 0xc0
523: MLOAD
524: CALLVALUE
525: SUB
526: DUP2
527: MSTORE
528: PUSH1 0xa0
530: MLOAD
531: PUSH1 0x20
533: DUP2
534: SUB
535: MLOAD
536: PUSH1 0x20
538: MUL
539: PUSH1 0x20
541: ADD
542: DUP4
543: PUSH1 0x20
545: DUP5
546: ADD
547: MSTORE
548: PUSH1 0x20
550: DUP3
551: SUB
552: PUSH1 0xa0
554: DUP5
555: ADD
556: MSTORE
557: DUP1
558: PUSH2 0x0120
561: DUP5
562: ADD
563: MSTORE
564: DUP1
565: DUP5
566: ADD
567: SWAP4
568: POP
569: POP
570: POP
571: PUSH1 0xc0
573: MLOAD
574: PUSH1 0x40
576: DUP3
577: ADD
578: MSTORE
579: PUSH1 0xe0
581: MLOAD
582: PUSH1 0x20
584: PUSH1 0x1f
586: PUSH1 0x20
588: DUP4
589: SUB
590: MLOAD
591: ADD
592: DIV
593: PUSH1 0x20
595: MUL
596: PUSH1 0x20
598: ADD
599: DUP4
600: PUSH1 0x60
602: DUP5
603: ADD
604: MSTORE
605: PUSH1 0x20
607: DUP3
608: SUB
609: PUSH1 0xe0
611: DUP5
612: ADD
613: MSTORE
614: DUP1
615: PUSH2 0x0160
618: DUP5
619: ADD
620: MSTORE
621: DUP1
622: DUP5
623: ADD
624: SWAP4
625: POP
626: POP
627: POP
628: DUP2
629: PUSH1 0x04
631: ADD
632: MSIZE
633: SWAP1
634: MSIZE
635: ADD
636: PUSH1 0x00
638: SWAP1
639: MSTORE
640: PUSH1 0x80
642: DUP2
643: PUSH1 0x80
645: DUP5
646: PUSH1 0x00
648: PUSH1 0x04
650: PUSH1 0x1e
652: CALL
653: PUSH2 0x0292
656: JUMPI
657: INVALID
658: JUMPDEST
659: PUSH1 0x80
661: DUP2
662: ADD
663: SWAP3
664: POP
665: PUSH2 0x0120
668: DUP3
669: ADD
670: MLOAD
671: DUP1
672: DUP1
673: DUP6
674: DUP3
675: PUSH1 0xa0
677: DUP8
678: ADD
679: MLOAD
680: PUSH1 0x00
682: PUSH1 0x04
684: PUSH1 0x0a
686: DUP8
687: SDIV
688: PUSH1 0x12
690: ADD
691: CALL
692: PUSH2 0x02b9
695: JUMPI
696: INVALID
697: JUMPDEST
698: POP
699: DUP1
700: DUP5
701: ADD
702: SWAP4
703: POP
704: POP
705: PUSH2 0x0160
708: DUP3
709: ADD
710: MLOAD
711: DUP1
712: DUP1
713: DUP6
714: DUP3
715: PUSH1 0xe0
717: DUP8
718: ADD
719: MLOAD
720: PUSH1 0x00
722: PUSH1 0x04
724: PUSH1 0x0a
726: DUP8
727: SDIV
728: PUSH1 0x12
730: ADD
731: CALL
732: PUSH2 0x02e1
735: JUMPI
736: INVALID
737: JUMPDEST
738: POP
739: DUP1
740: DUP5
741: ADD
742: SWAP4
743: POP
744: POP
745: DUP1
746: DUP4
747: SUB
748: PUSH2 0x0120
751: MLOAD
752: PUSH1 0x80
754: MLOAD
755: PUSH1 0x60
757: MLOAD
758: PUSH32 0x8d936b1bd3fc635710969ccfba471fb17d598d9d1971b538dd712e1e4b4f4dba
codex
{"no_findings":false,"summary":"Bytecode-only review found two meaningful accounting risks: settlement/refund paths use value-transferring CALLs with a hard-coded 5000 gas cap, ignore the success flag, and in the main settlement path clear storage afterward. No delegatecall/proxy issue was evidenced in the bundle.","findings":[{"severity":"high","category":"other","title":"Settlement clears accounting even when ETH payouts fail","exploit_scenario":"A participant or payout recipient can be a contract whose fallback reverts or needs more than 5000 gas. When the settlement path executes, the ETH sends fail silently, but the function continues and clears the tracked balances/recipient state. The contract balance then remains in the contract without matching storage, so users can lose access to owed funds even though the settlement appears to have completed.","recommendation":"Do not ignore low-level call results. Revert the whole settlement if any payout fails, or switch to a pull-payment model where recipients withdraw themselves. Avoid hard-coded 5000-gas sends to untrusted recipients unless failure is explicitly handled.","evidence":"In selector 0xf2e497ae, pc 2093 and pc 2204 perform CALL with nonzero value to storage-derived recipients using gas 0x1388 (5000) and immediately POP the return value. The same routine then zeroes settlement-related storage with SSTOREs at pcs 2277, 2291, 2305, 2354, 2385, 2400, 2415, 2430, 2445, and 2511. This is strong evidence that failed payouts do not roll back accounting. This conclusion is based on bytecode semantics; exact field names are unknown.","locations":["selector:0xf2e497ae","pc:0x82d","pc:0x89c","pc:0x8e5","pc:0x8f3","pc:0x901","pc:0x932","pc:0x951","pc:0x960","pc:0x96f","pc:0x97e","pc:0x98d","pc:0x9cf"]},{"severity":"medium","category":"other","title":"Refund-on-error path can silently trap ETH","exploit_scenario":"If the payable entry path decides the supplied value is invalid, it attempts to refund msg.value back to msg.sender. A contract caller with a reverting or gas-hungry fallback can cause that refund to fail, while the function still returns an error code instead of reverting. The user-facing effect is that the call looks handled, but the ETH stays inside the contract.","recommendation":"For refund/error handling, check the CALL success flag and revert if the refund fails. Alternatively, avoid inline refunds and require explicit withdrawal from a credited balance.","evidence":"In selector 0x5a9809ed, the branch at pc 117 executes a CALL to CALLER with value=CALLVALUE and gas 0x1388 (5000), then POPs the success flag and returns a sentinel value. There is no evidence of a revert or compensating state update if that refund CALL fails. Because this is inferred from bytecode only, the exact business condition triggering the refund is best-effort.","locations":["selector:0x5a9809ed","pc:0x82"]}]}
tokens used
82,146
{
"codex": {
"ran_at": "2026-04-05T00:49:50.382229+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 two meaningful accounting risks: settlement/refund paths use value-transferring CALLs with a hard-coded 5000 gas cap, ignore the success flag, and in the main settlement path clear storage afterward. No delegatecall/proxy issue was evidenced in the bundle.",
"raw_final": {
"summary": "Bytecode-only review found two meaningful accounting risks: settlement/refund paths use value-transferring CALLs with a hard-coded 5000 gas cap, ignore the success flag, and in the main settlement path clear storage afterward. No delegatecall/proxy issue was evidenced in the bundle.",
"findings": [
{
"title": "Settlement clears accounting even when ETH payouts fail",
"category": "other",
"evidence": "In selector 0xf2e497ae, pc 2093 and pc 2204 perform CALL with nonzero value to storage-derived recipients using gas 0x1388 (5000) and immediately POP the return value. The same routine then zeroes settlement-related storage with SSTOREs at pcs 2277, 2291, 2305, 2354, 2385, 2400, 2415, 2430, 2445, and 2511. This is strong evidence that failed payouts do not roll back accounting. This conclusion is based on bytecode semantics; exact field names are unknown.",
"severity": "high",
"locations": [
"selector:0xf2e497ae",
"pc:0x82d",
"pc:0x89c",
"pc:0x8e5",
"pc:0x8f3",
"pc:0x901",
"pc:0x932",
"pc:0x951",
"pc:0x960",
"pc:0x96f",
"pc:0x97e",
"pc:0x98d",
"pc:0x9cf"
],
"recommendation": "Do not ignore low-level call results. Revert the whole settlement if any payout fails, or switch to a pull-payment model where recipients withdraw themselves. Avoid hard-coded 5000-gas sends to untrusted recipients unless failure is explicitly handled.",
"exploit_scenario": "A participant or payout recipient can be a contract whose fallback reverts or needs more than 5000 gas. When the settlement path executes, the ETH sends fail silently, but the function continues and clears the tracked balances/recipient state. The contract balance then remains in the contract without matching storage, so users can lose access to owed funds even though the settlement appears to have completed."
},
{
"title": "Refund-on-error path can silently trap ETH",
"category": "other",
"evidence": "In selector 0x5a9809ed, the branch at pc 117 executes a CALL to CALLER with value=CALLVALUE and gas 0x1388 (5000), then POPs the success flag and returns a sentinel value. There is no evidence of a revert or compensating state update if that refund CALL fails. Because this is inferred from bytecode only, the exact business condition triggering the refund is best-effort.",
"severity": "medium",
"locations": [
"selector:0x5a9809ed",
"pc:0x82"
],
"recommendation": "For refund/error handling, check the CALL success flag and revert if the refund fails. Alternatively, avoid inline refunds and require explicit withdrawal from a credited balance.",
"exploit_scenario": "If the payable entry path decides the supplied value is invalid, it attempts to refund msg.value back to msg.sender. A contract caller with a reverting or gas-hungry fallback can cause that refund to fail, while the function still returns an error code instead of reverting. The user-facing effect is that the call looks handled, but the ETH stays inside the contract."
}
],
"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 0x0120 0000011a: MLOAD 0000011b: PUSH2 0x0140 0000011e: MLOAD 0000011f: PUSH1 0x20 00000121: MUL 00000122: PUSH1 0xa0 00000124: MLOAD 00000125: ADD 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 |
|---|---|---|---|---|---|---|---|
| high | other | codex | Settlement clears accounting even when ETH payouts fail | 85 | no | — |
viewevidence_json{
"evidence": "In selector 0xf2e497ae, pc 2093 and pc 2204 perform CALL with nonzero value to storage-derived recipients using gas 0x1388 (5000) and immediately POP the return value. The same routine then zeroes settlement-related storage with SSTOREs at pcs 2277, 2291, 2305, 2354, 2385, 2400, 2415, 2430, 2445, and 2511. This is strong evidence that failed payouts do not roll back accounting. This conclusion is based on bytecode semantics; exact field names are unknown.",
"locations": [
"selector:0xf2e497ae",
"pc:0x82d",
"pc:0x89c",
"pc:0x8e5",
"pc:0x8f3",
"pc:0x901",
"pc:0x932",
"pc:0x951",
"pc:0x960",
"pc:0x96f",
"pc:0x97e",
"pc:0x98d",
"pc:0x9cf"
],
"recommendation": "Do not ignore low-level call results. Revert the whole settlement if any payout fails, or switch to a pull-payment model where recipients withdraw themselves. Avoid hard-coded 5000-gas sends to untrusted recipients unless failure is explicitly handled.",
"exploit_scenario": "A participant or payout recipient can be a contract whose fallback reverts or needs more than 5000 gas. When the settlement path executes, the ETH sends fail silently, but the function continues and clears the tracked balances/recipient state. The contract balance then remains in the contract without matching storage, so users can lose access to owed funds even though the settlement appears to have completed."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | yes | yes |
viewtrace_id: 0xecb988addb74b8b83ee7d34fd147817300d9a87bc616c829980120049f95f98d
call_targets:
0x0000000000000000000000000000000000000004, 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xecb988addb74b8b83ee7d34fd147817300d9a87bc616c829980120049f95f98d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98"
],
"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: 0xecb988addb74b8b83ee7d34fd147817300d9a87bc616c829980120049f95f98d
call_targets:
0x0000000000000000000000000000000000000004, 0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xecb988addb74b8b83ee7d34fd147817300d9a87bc616c829980120049f95f98d",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0xe881af13bf55c97562fe8d2da2f6ea8e3ff66f98"
],
"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 | Refund-on-error path can silently trap ETH | 75 | no | — |
viewevidence_json{
"evidence": "In selector 0x5a9809ed, the branch at pc 117 executes a CALL to CALLER with value=CALLVALUE and gas 0x1388 (5000), then POPs the success flag and returns a sentinel value. There is no evidence of a revert or compensating state update if that refund CALL fails. Because this is inferred from bytecode only, the exact business condition triggering the refund is best-effort.",
"locations": [
"selector:0x5a9809ed",
"pc:0x82"
],
"recommendation": "For refund/error handling, check the CALL success flag and revert if the refund fails. Alternatively, avoid inline refunds and require explicit withdrawal from a credited balance.",
"exploit_scenario": "If the payable entry path decides the supplied value is invalid, it attempts to refund msg.value back to msg.sender. A contract caller with a reverting or gas-hungry fallback can cause that refund to fail, while the function still returns an error code instead of reverting. The user-facing effect is that the call looks handled, but the ETH stays inside the contract."
}
|