019b3836-360e-730b-adcd-d15852dc100d
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 |
|---|---|---|---|---|
| 3519 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 3520 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 46396 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 46397 | capability.graph | complete | 1 / 3 | 1 week ago |
| 46398 | detector.run | complete | 1 / 3 | 1 week ago |
| 46399 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113261 | report.consolidate | complete | 1 / 6 | 1 week ago |
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode review found one critical issue: a publicly reachable, unguarded selector appears to act like an initializer/mint routine and can overwrite the caller's token balance and token metadata. No proxy/delegatecall path was evidenced.","findings":[{"severity":"critical","category":"auth","title":"Public unguarded initializer-like function can assign caller balance and rewrite token metadata","exploit_scenario":"Best-effort inference from bytecode: selector 0xe6a55699 decodes two dynamic string/bytes arguments plus two fixed values, substitutes a default amount of 1,000,000 when one amount input is zero, then writes directly to the caller's balance mapping at slot base 0x03. The same path also writes token metadata-style storage (the contract's string slots used by name()/symbol() and the low byte of slot 0x02 used by decimals()). Because no owner/once-only guard is visible before these writes, any attacker can call this function after deployment to set their own balance to an arbitrary value (or at least 1,000,000 via the default branch) and alter metadata, then transfer those tokens out.","recommendation":"Treat selector 0xe6a55699 as an exposed constructor/initializer until proven otherwise. Remove or permanently disable it after deployment, or gate it with a strict one-time initialization check plus privileged access control. If the contract is already deployed and immutable, assume token balances/metadata are attacker-controlled and migrate.","evidence":"Dispatcher exposes selector 0xe6a55699. Its path contains no auth checks before state writes. At pc 0x0405-0x0413 it branches to a hardcoded default amount 0x0f4240. At pc 0x0415-0x0431 it computes keccak(msg.sender, 0x03) and SSTOREs the supplied amount into the caller balance slot. The same function then performs string-storage writes rooted at slot 0x00/its data area (pc 0x0432-0x0493) and later writes the low byte of slot 0x02 (pc 0x0609-0x0614), matching the slots read by name()/symbol()/decimals().","locations":["selector:0xe6a55699","pc:0x0405","pc:0x042f","pc:0x0431","pc:0x0609","pc:0x0614"]}]}
OpenAI Codex v0.118.0 (research preview)
--------
workdir: /tmp/codex-6oubwxvx
model: gpt-5.4
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: none
session id: 019d5bc2-0a22-7c63-925a-cec3ec2f1a8d
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.
Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime.
exec
/bin/bash -lc "pwd && rg --files -g 'BYTECODE_BUNDLE.json' -g 'AGENTS.md'" in /tmp/codex-6oubwxvx
succeeded in 0ms:
/tmp/codex-6oubwxvx
BYTECODE_BUNDLE.json
exec
/bin/bash -lc "sed -n '1,260p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
{
"analysis_artifact": {
"address": "0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e",
"artifact_hash": "0xfea0adb18744356b8eb99b6533a70b0a822674b96a9a2dc7eaaf984766a5a5ed",
"artifact_json": {
"auth": {
"guards": []
},
"basic_blocks": [
{
"end_pc": 10,
"hash": "0xea84cd9b520f9ac15ee69facebf0514d237ae3f350495e573c06816e7e3d08cf",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"CALLDATASIZE",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 0
},
{
"end_pc": 30,
"hash": "0x8351f5fd39e1769e53f7b93891e5bf598f6939b3ca7289b6c03bc34019c93201",
"opcodes": [
"PUSH1",
"PUSH1",
"EXP",
"PUSH1",
"CALLDATALOAD",
"DIV",
"PUSH4",
"OP_81",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 11
},
{
"end_pc": 41,
"hash": "0xea91c1b81d5ade23782261ac75a2ddbefec41c29e5137fe0f73d110d1360453a",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 31
},
{
"end_pc": 52,
"hash": "0x228d4f4a0da6e8bd757cd28745f2b4958c98f67409067116a44ee02e8fb97f2e",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 42
},
{
"end_pc": 63,
"hash": "0x8096f3cfd9edec3e7cc023f44a1b3efc324394bf105a360e74ee74cec9645bee",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 53
},
{
"end_pc": 74,
"hash": "0xbd0a2e97a2bec8ff409bd49d326d4bf123281b9f3389fc84be8d43e868501fda",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 64
},
{
"end_pc": 85,
"hash": "0x323160771fb6e7c7da57f8357b78993b37652095a88c7d92e450971fdd87a521",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 75
},
{
"end_pc": 96,
"hash": "0x28d78f8c295f5d6fa4668c2c25bc255a1de639c44330425dc83b2d4af5d0d1b3",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 86
},
{
"end_pc": 107,
"hash": "0x14fa9bb36dc33abaefb59b781741c01df2241d4bc3938f8a5464713a8a15b36b",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 97
},
{
"end_pc": 118,
"hash": "0xf5dcd67c858320278cac7baf5040cb5147bce7dd8b519b24eaba45d5fe0a1009",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 108
},
{
"end_pc": 129,
"hash": "0x28f905c7a227a234e956a16c5275ba2797487e3de2e5267d4ba2df8db3e34f4c",
"opcodes": [
"OP_80",
"PUSH4",
"EQ",
"PUSH2",
"JUMPI"
],
"start_pc": 119
},
{
"end_pc": 137,
"hash": "0x656b8169beec60c42239989f91c962dd84d0262fd46d3f7eb1ba22508d55b606",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH2",
"JUMP"
],
"start_pc": 130
},
{
"end_pc": 204,
"hash": "0x38971221762cbfec0153d84fe906fd6c9dc28d87bfffa225e8fd4966a6afbaeb",
"opcodes": [
"JUMPDEST",
"PUSH1",
"OP_80",
"MLOAD",
"PUSH1",
"OP_80",
"SLOAD",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_83",
"AND",
"ISZERO",
"PUSH2",
"MUL",
"PUSH1",
"NOT",
"ADD",
"OP_90",
"OP_92",
"AND",
"OP_91",
"OP_90",
"OP_91",
"DIV",
"PUSH1",
"OP_81",
"ADD",
"OP_82",
"OP_90",
"DIV",
"OP_82",
"MUL",
"OP_84",
"ADD",
"OP_82",
"ADD",
"OP_90",
"OP_94",
"MSTORE",
"OP_83",
"OP_83",
"MSTORE",
"PUSH2",
"OP_93",
"OP_90",
"OP_83",
"ADD",
"OP_82",
"OP_82",
"OP_80",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 138
},
{
"end_pc": 212,
"hash": "0x928ebfc536e486a92c1c3c2ac85d2ffc79efe0a62d98edefc901aa993c36cdf8",
"opcodes": [
"OP_80",
"PUSH1",
"LT",
"PUSH2",
"JUMPI"
],
"start_pc": 205
},
{
"end_pc": 231,
"hash": "0xc81dbc6115471deb494f3879f83e159c33370e1a61cd4c3025937246f5ec2c48",
"opcodes": [
"PUSH2",
"OP_80",
"OP_83",
"SLOAD",
"DIV",
"MUL",
"OP_83",
"MSTORE",
"OP_91",
"PUSH1",
"ADD",
"OP_91",
"PUSH2",
"JUMP"
],
"start_pc": 213
},
{
"end_pc": 277,
"hash": "0x3727821badd7555d42d8b36030ebe49c8cdfed69d0c332453f2296758a68c865",
"opcodes": [
"JUMPDEST",
"PUSH2",
exec
/bin/bash -lc "sed -n '261,520p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"OP_83",
"AND",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"OP_81",
"SHA3",
"SLOAD",
"OP_82",
"OP_90",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 232
},
{
"end_pc": 281,
"hash": "0x023ddd88da6bacdf435db2f10910d47ff60d71a6ea606f961f9b83b1ae104a28",
"opcodes": [
"PUSH2",
"JUMP"
],
"start_pc": 278
},
{
"end_pc": 293,
"hash": "0x462a56aa72e9ff02dacf52c17579dade6411f9ceb064b53336bc9c7d58755dec",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"SLOAD",
"PUSH1",
"AND",
"OP_81",
"JUMP"
],
"start_pc": 282
},
{
"end_pc": 317,
"hash": "0xda6e4981f173e6846859f48d3ee8d0a4d11cd03d5630e84f60b02f42cffa5a68",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"OP_90",
"SHA3",
"SLOAD",
"OP_81",
"JUMP"
],
"start_pc": 294
},
{
"end_pc": 383,
"hash": "0x79440b01e09d06218d0758f678c100c6b7585d97c44fe6297bc1b2ddfb672c24",
"opcodes": [
"JUMPDEST",
"PUSH1",
"OP_80",
"MLOAD",
"PUSH1",
"OP_80",
"SLOAD",
"PUSH1",
"PUSH1",
"OP_82",
"OP_84",
"AND",
"ISZERO",
"PUSH2",
"MUL",
"PUSH1",
"NOT",
"ADD",
"OP_90",
"OP_92",
"AND",
"OP_91",
"OP_90",
"OP_91",
"DIV",
"PUSH1",
"OP_81",
"ADD",
"OP_82",
"OP_90",
"DIV",
"OP_82",
"MUL",
"OP_84",
"ADD",
"OP_82",
"ADD",
"OP_90",
"OP_94",
"MSTORE",
"OP_83",
"OP_83",
"MSTORE",
"PUSH2",
"OP_93",
"OP_90",
"OP_83",
"ADD",
"OP_82",
"OP_82",
"OP_80",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 318
},
{
"end_pc": 391,
"hash": "0x4d086cb51e2525272cdaedaf0bff8b98b465d4b48af9f9d8d9e2f10dbef35f41",
"opcodes": [
"OP_80",
"PUSH1",
"LT",
"PUSH2",
"JUMPI"
],
"start_pc": 384
},
{
"end_pc": 410,
"hash": "0xfb3cd24b9f64b5ac274cbb174f7dbd0cfe4eb930a257bcd0b74a056f38a2a53b",
"opcodes": [
"PUSH2",
"OP_80",
"OP_83",
"SLOAD",
"DIV",
"MUL",
"OP_83",
"MSTORE",
"OP_91",
"PUSH1",
"ADD",
"OP_91",
"PUSH2",
"JUMP"
],
"start_pc": 392
},
{
"end_pc": 453,
"hash": "0x78494d4ec59d88eb683ce17dc9dfb54a579887623c0a8946ccf8509edb8a806f",
"opcodes": [
"JUMPDEST",
"PUSH2",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"CALLER",
"AND",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"OP_90",
"SHA3",
"SLOAD",
"OP_81",
"OP_90",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 411
},
{
"end_pc": 457,
"hash": "0x958fbcdb7a5ddbe9800f3036e3e1271ad6366089e41feec49d2009270f7a633c",
"opcodes": [
"PUSH2",
"JUMP"
],
"start_pc": 454
},
{
"end_pc": 746,
"hash": "0xb1a9ccc4293e762601f5777144e0565aedded23f54abec5a2a67ad1ab696e176",
"opcodes": [
"JUMPDEST",
"PUSH1",
"OP_80",
"MLOAD",
"PUSH1",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"OP_81",
"OP_81",
"ADD",
"CALLDATALOAD",
"PUSH1",
"OP_81",
"ADD",
"OP_84",
"OP_90",
"DIV",
"OP_84",
"MUL",
"OP_85",
"ADD",
"OP_84",
"ADD",
"OP_90",
"OP_95",
"MSTORE",
"OP_84",
"OP_84",
"MSTORE",
"PUSH2",
"OP_94",
"OP_81",
"CALLDATALOAD",
"OP_94",
exec
/bin/bash -lc "sed -n '521,780p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"PUSH1",
"OP_80",
"CALLDATALOAD",
"OP_95",
"OP_93",
"OP_94",
"PUSH1",
"OP_94",
"OP_92",
"OP_93",
"OP_91",
"ADD",
"OP_91",
"OP_81",
"OP_90",
"OP_84",
"ADD",
"OP_83",
"OP_82",
"OP_80",
"OP_82",
"OP_84",
"CALLDATACOPY",
"POP",
"OP_94",
"OP_96",
"POP",
"POP",
"POP",
"POP",
"POP",
"POP",
"POP",
"PUSH1",
"PUSH1",
"OP_83",
"PUSH1",
"PUSH1",
"POP",
"PUSH1",
"CALLER",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"PUSH1",
"OP_87",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"PUSH1",
"SHA3",
"PUSH1",
"POP",
"OP_81",
"OP_90",
"SSTORE",
"POP",
"OP_84",
"OP_90",
"POP",
"OP_80",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"AND",
"PUSH4",
"CALLER",
"OP_86",
"ADDRESS",
"OP_87",
"PUSH1",
"MLOAD",
"OP_85",
"PUSH1",
"PUSH1",
"EXP",
"MUL",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_80",
"OP_85",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_84",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_83",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_80",
"PUSH1",
"ADD",
"OP_82",
"OP_81",
"SUB",
"OP_82",
"MSTORE",
"OP_83",
"OP_81",
"OP_81",
"MLOAD",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"OP_80",
"MLOAD",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"OP_80",
"OP_83",
"OP_83",
"OP_82",
"OP_90",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_84",
"PUSH1",
"ADD",
"DIV",
"PUSH1",
"MUL",
"PUSH1",
"ADD",
"CALL",
"POP",
"OP_90",
"POP",
"OP_90",
"OP_81",
"ADD",
"OP_90",
"PUSH1",
"AND",
"OP_80",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 458
},
{
"end_pc": 771,
"hash": "0x7c2076afc0682a3d6432dcba9c9d72eae5659d0deac2fdf4963620548e4c0bf6",
"opcodes": [
"OP_80",
"OP_82",
"SUB",
"OP_80",
"MLOAD",
"PUSH1",
"OP_83",
"PUSH1",
"SUB",
"PUSH2",
"EXP",
"SUB",
"NOT",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP"
],
"start_pc": 747
},
{
"end_pc": 803,
"hash": "0x682309155583e9bf5684c645805d02775c0489d8a310e39a455eed1845ae107b",
"opcodes": [
"JUMPDEST",
"POP",
"OP_95",
"POP",
"POP",
"POP",
"POP",
"POP",
"POP",
"PUSH1",
"PUSH1",
"MLOAD",
"OP_80",
"OP_83",
"SUB",
"OP_81",
"PUSH1",
"OP_87",
"PUSH2",
"GAS",
"SUB",
"CALL",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 772
},
{
"end_pc": 813,
"hash": "0x8423287e75318bb1a97109158b92abd95e8ab3344b10d1323330706b22a820e1",
"opcodes": [
"POP",
exec
/bin/bash -lc "sed -n '781,1040p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"POP",
"POP",
"POP",
"OP_93",
"OP_92",
"POP",
"POP",
"POP",
"JUMP"
],
"start_pc": 804
},
{
"end_pc": 850,
"hash": "0x92c9e32cf0f987f1a236d75ac5d4c138e581e3d6a86237e091fac06940024978",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"OP_80",
"OP_82",
"SHA3",
"OP_90",
"OP_92",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"OP_81",
"MSTORE",
"SHA3",
"SLOAD",
"PUSH2",
"OP_90",
"OP_81",
"JUMP"
],
"start_pc": 814
},
{
"end_pc": 886,
"hash": "0x78e6651f795163cda33a1f7d0e0c76914e57579b5bd8a6706bd4e2edfe8572ea",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"OP_81",
"OP_81",
"MSTORE",
"OP_90",
"CALLDATALOAD",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"OP_80",
"OP_82",
"SHA3",
"OP_90",
"OP_92",
"MSTORE",
"PUSH1",
"CALLDATALOAD",
"OP_81",
"MSTORE",
"SHA3",
"SLOAD",
"PUSH2",
"OP_90",
"OP_81",
"JUMP"
],
"start_pc": 851
},
{
"end_pc": 1037,
"hash": "0x67efb1797e26c9ccb6d697ddb1f38d26a53d286b514f57d2602f4ad3e9bdfd71",
"opcodes": [
"JUMPDEST",
"PUSH1",
"OP_80",
"MLOAD",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_80",
"CALLDATALOAD",
"OP_82",
"OP_81",
"ADD",
"CALLDATALOAD",
"PUSH1",
"OP_81",
"ADD",
"OP_85",
"OP_90",
"DIV",
"OP_85",
"MUL",
"OP_86",
"ADD",
"OP_85",
"ADD",
"OP_90",
"OP_96",
"MSTORE",
"OP_85",
"OP_85",
"MSTORE",
"PUSH2",
"OP_95",
"OP_83",
"CALLDATALOAD",
"OP_95",
"OP_93",
"OP_94",
"PUSH1",
"OP_94",
"OP_93",
"OP_92",
"OP_90",
"OP_92",
"ADD",
"OP_91",
"OP_81",
"OP_90",
"OP_84",
"ADD",
"OP_83",
"OP_82",
"OP_80",
"OP_82",
"OP_84",
"CALLDATACOPY",
"POP",
"POP",
"PUSH1",
"OP_80",
"MLOAD",
"PUSH1",
"PUSH1",
"CALLDATALOAD",
"OP_80",
"OP_8B",
"ADD",
"CALLDATALOAD",
"PUSH1",
"OP_81",
"ADD",
"OP_83",
"OP_90",
"DIV",
"OP_83",
"MUL",
"OP_84",
"ADD",
"OP_83",
"ADD",
"OP_90",
"OP_94",
"MSTORE",
"OP_83",
"OP_83",
"MSTORE",
"OP_97",
"OP_99",
"OP_98",
"CALLDATALOAD",
"OP_98",
"OP_97",
"PUSH1",
"OP_97",
"POP",
"OP_91",
"OP_95",
"POP",
"PUSH1",
"OP_91",
"OP_90",
"OP_91",
"ADD",
"OP_93",
"POP",
"OP_90",
"OP_91",
"POP",
"OP_81",
"OP_90",
"OP_84",
"ADD",
"OP_83",
"OP_82",
"OP_80",
"OP_82",
"OP_84",
"CALLDATACOPY",
"POP",
"OP_94",
"OP_96",
"POP",
"POP",
"POP",
"POP",
"POP",
"POP",
"POP",
"OP_83",
"PUSH1",
"EQ",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 887
},
{
"end_pc": 1043,
"hash": "0x5cc8f085bf045416d506a06eca3f45893d7d9c52f57fe2e639c54db01115e953",
"opcodes": [
"PUSH3",
"OP_93",
"POP"
],
"start_pc": 1038
},
{
"end_pc": 1159,
"hash": "0x8174752e74b8def418331b7165089609798a5734a04fdd5f85e0cf0d221c1e3e",
"opcodes": [
"JUMPDEST",
"CALLER",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"AND",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"OP_82",
"SHA3",
"OP_86",
exec
/bin/bash -lc "sed -n '1041,1300p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"OP_90",
"SSTORE",
"OP_81",
"SLOAD",
"OP_85",
"MLOAD",
"OP_83",
"OP_80",
"MSTORE",
"PUSH32",
"PUSH1",
"PUSH1",
"OP_84",
"AND",
"ISZERO",
"PUSH2",
"MUL",
"PUSH1",
"NOT",
"ADD",
"OP_90",
"OP_93",
"AND",
"OP_92",
"OP_90",
"OP_92",
"DIV",
"PUSH1",
"OP_90",
"OP_81",
"ADD",
"OP_84",
"OP_90",
"DIV",
"OP_83",
"ADD",
"OP_93",
"OP_91",
"OP_92",
"OP_91",
"OP_88",
"ADD",
"OP_90",
"OP_83",
"OP_90",
"LT",
"PUSH2",
"JUMPI"
],
"start_pc": 1044
},
{
"end_pc": 1171,
"hash": "0xc2594a85c8424b4aa8682355108db57e7975c538e8280d2edaf2820ac1f56bc4",
"opcodes": [
"OP_80",
"MLOAD",
"PUSH1",
"NOT",
"AND",
"OP_83",
"OP_80",
"ADD",
"OR",
"OP_85",
"SSTORE"
],
"start_pc": 1160
},
{
"end_pc": 1179,
"hash": "0x47df8deec78e215adda608591446915028e81768f8106c607d0ed62004dfd868",
"opcodes": [
"JUMPDEST",
"POP",
"PUSH2",
"OP_92",
"OP_91",
"POP"
],
"start_pc": 1172
},
{
"end_pc": 1188,
"hash": "0x83ae68d2d97dadea7d665d4f4a82e04e308bcef01d09838c4dfdadb9ca755f09",
"opcodes": [
"JUMPDEST",
"OP_80",
"OP_82",
"GT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1180
},
{
"end_pc": 1199,
"hash": "0x4867b9bb9af12967835219ac5485f157f44d0b4989d3b4dbbb0f55521667907f",
"opcodes": [
"PUSH1",
"OP_81",
"SSTORE",
"PUSH1",
"ADD",
"PUSH2",
"JUMP"
],
"start_pc": 1189
},
{
"end_pc": 1201,
"hash": "0x27c317ad1a54b6db4f67a7c719d879f80caf5d6801a3c25b5ccfebdfe3c1bcd4",
"opcodes": [
"JUMPDEST",
"STOP"
],
"start_pc": 1200
},
{
"end_pc": 1272,
"hash": "0x870d8e186946ce7aae17d83b53734c9fcbcc3b4a02d0b2718bc7af9560d31d34",
"opcodes": [
"JUMPDEST",
"PUSH1",
"MLOAD",
"OP_80",
"OP_80",
"PUSH1",
"ADD",
"OP_82",
"OP_81",
"SUB",
"OP_82",
"MSTORE",
"OP_83",
"OP_81",
"OP_81",
"MLOAD",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP",
"OP_80",
"MLOAD",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"OP_80",
"OP_83",
"OP_83",
"OP_82",
"OP_90",
"PUSH1",
"PUSH1",
"PUSH1",
"OP_84",
"PUSH1",
"ADD",
"DIV",
"PUSH1",
"MUL",
"PUSH1",
"ADD",
"CALL",
"POP",
"OP_90",
"POP",
"OP_90",
"OP_81",
"ADD",
"OP_90",
"PUSH1",
"AND",
"OP_80",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1202
},
{
"end_pc": 1297,
"hash": "0xe69d9fe9ee12c042e74938a1ac6a4ef3de80d31f481ade0fd37efa6ba65f3049",
"opcodes": [
"OP_80",
"OP_82",
"SUB",
"OP_80",
"MLOAD",
"PUSH1",
"OP_83",
"PUSH1",
"SUB",
"PUSH2",
"EXP",
"SUB",
"NOT",
"AND",
"OP_81",
"MSTORE",
"PUSH1",
"ADD",
"OP_91",
"POP"
],
"start_pc": 1273
},
{
"end_pc": 1311,
"hash": "0x184c3035d2b104dba14e64b04c82f37e9443c82faadf877a8909961217ab1364",
"opcodes": [
"JUMPDEST",
"POP",
"OP_92",
"POP",
"POP",
"POP",
"PUSH1",
"MLOAD",
"OP_80",
"OP_91",
"SUB",
"OP_90",
"RETURN"
],
"start_pc": 1298
},
{
"end_pc": 1329,
"hash": "0x1d1008b7a5732c71d2606411876fd0afba8f65ba284a8d2afca4c1fc8e4accd0",
"opcodes": [
"JUMPDEST",
"PUSH1",
"OP_80",
"MLOAD",
"OP_91",
"OP_82",
"MSTORE",
"MLOAD",
"OP_90",
"OP_81",
"OP_90",
"SUB",
"PUSH1",
"ADD",
"OP_90",
"RETURN"
],
"start_pc": 1312
},
{
"end_pc": 1352,
"hash": "0x09420f56ef15035d2227cb28a919609caa878665b8cdd261d6ebd5ae832a6e66",
"opcodes": [
"JUMPDEST",
"PUSH1",
exec
/bin/bash -lc "sed -n '1301,1560p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"OP_80",
"MLOAD",
"PUSH1",
"OP_92",
"OP_90",
"OP_92",
"AND",
"OP_82",
"MSTORE",
"MLOAD",
"OP_90",
"OP_81",
"OP_90",
"SUB",
"PUSH1",
"ADD",
"OP_90",
"RETURN"
],
"start_pc": 1330
},
{
"end_pc": 1367,
"hash": "0xbb0b2612a5e5b39bb5477fce03a1b55257c3476df41e2412656c9096804d45bc",
"opcodes": [
"JUMPDEST",
"OP_82",
"OP_80",
"ADD",
"PUSH1",
"ADD",
"OP_85",
"SSTORE",
"OP_82",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1353
},
{
"end_pc": 1370,
"hash": "0x13b17a5c8fdfa48b410caff42f1fdaefad767abef48eddd4bf9923d0774236a8",
"opcodes": [
"OP_91",
"OP_82",
"ADD"
],
"start_pc": 1368
},
{
"end_pc": 1379,
"hash": "0xbfdff3d5c5912b6479818eb1b264172d85ccbfa9470e741fbd14ba927598501c",
"opcodes": [
"JUMPDEST",
"OP_82",
"OP_81",
"GT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1371
},
{
"end_pc": 1400,
"hash": "0xbb9e291c7aca8baa054d812b37f9d9b4ab8ba40d07da3decb32d7c72855150e6",
"opcodes": [
"OP_82",
"MLOAD",
"OP_82",
"PUSH1",
"POP",
"SSTORE",
"OP_91",
"PUSH1",
"ADD",
"OP_91",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"PUSH2",
"JUMP"
],
"start_pc": 1380
},
{
"end_pc": 1465,
"hash": "0x388e53b0506aa00eb8615308b9261f1c367cb5659ae2ca261cfb1e2ccd115fc6",
"opcodes": [
"JUMPDEST",
"POP",
"POP",
"OP_80",
"PUSH1",
"PUSH1",
"POP",
"OP_90",
"OP_80",
"MLOAD",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"OP_82",
"OP_80",
"SLOAD",
"PUSH1",
"OP_81",
"PUSH1",
"AND",
"ISZERO",
"PUSH2",
"MUL",
"SUB",
"AND",
"PUSH1",
"OP_90",
"DIV",
"OP_90",
"PUSH1",
"MSTORE",
"PUSH1",
"PUSH1",
"SHA3",
"OP_90",
"PUSH1",
"ADD",
"PUSH1",
"OP_90",
"DIV",
"OP_81",
"ADD",
"OP_92",
"OP_82",
"PUSH1",
"LT",
"PUSH2",
"JUMPI"
],
"start_pc": 1401
},
{
"end_pc": 1477,
"hash": "0x75f8f4a754bab781dce2195c9f4580a2332a5951a456e7535dc55bd2a6cc5f2b",
"opcodes": [
"OP_80",
"MLOAD",
"PUSH1",
"NOT",
"AND",
"OP_83",
"OP_80",
"ADD",
"OR",
"OP_85",
"SSTORE"
],
"start_pc": 1466
},
{
"end_pc": 1489,
"hash": "0x976d149b0f65788f03ba599039443002c5ae96c1610dbf4e72c25b2a7dbedeae",
"opcodes": [
"JUMPDEST",
"POP",
"PUSH2",
"OP_92",
"OP_91",
"POP",
"PUSH2",
"JUMP"
],
"start_pc": 1478
},
{
"end_pc": 1493,
"hash": "0xfcf560b5d3c59a69c761c56d74a8444a98a89d43009b278d14839bfa6a36c781",
"opcodes": [
"JUMPDEST",
"POP",
"OP_90",
"JUMP"
],
"start_pc": 1490
},
{
"end_pc": 1508,
"hash": "0x9f778431795dd53b148a2a7138b15c04bdc02a8ddd041cc9c145952157726f6e",
"opcodes": [
"JUMPDEST",
"OP_82",
"OP_80",
"ADD",
"PUSH1",
"ADD",
"OP_85",
"SSTORE",
"OP_82",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1494
},
{
"end_pc": 1511,
"hash": "0x5eb78e9fca7bfc8b39c303bf362216752f998ffc240a6164abe60cebee10a754",
"opcodes": [
"OP_91",
"OP_82",
"ADD"
],
"start_pc": 1509
},
{
"end_pc": 1520,
"hash": "0x45f57e2ad7f6ae4d5dbc786de040e95de2dfc0de2850e170569d8fe91fe5112c",
"opcodes": [
"JUMPDEST",
"OP_82",
"OP_81",
"GT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1512
},
{
"end_pc": 1541,
"hash": "0x93e73e8ca84e6a1111492c972da49a54be645fa13e8ffe10fca845a08c9b8f28",
"opcodes": [
"OP_82",
"MLOAD",
"OP_82",
"PUSH1",
"POP",
"SSTORE",
"OP_91",
"PUSH1",
"ADD",
"OP_91",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"PUSH2",
"JUMP"
],
"start_pc": 1521
},
{
"end_pc": 1561,
"hash": "0x1bd25c4766b3439c88b8da3a221f3dcaa3306b80f7465d420d65a3eca3843b32",
"opcodes": [
"JUMPDEST",
"POP",
"POP",
exec
/bin/bash -lc "sed -n '1561,1820p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"PUSH1",
"OP_80",
"SLOAD",
"PUSH1",
"NOT",
"AND",
"OP_83",
"OR",
"OP_90",
"SSTORE",
"POP",
"POP",
"POP",
"POP",
"JUMP"
],
"start_pc": 1542
},
{
"end_pc": 1596,
"hash": "0x18d03af663e95b906a79dc769474652c4cdb498702d89ce629226bf8a0e8809e",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"OP_83",
"AND",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"OP_90",
"SHA3",
"SLOAD",
"OP_80",
"OP_83",
"ADD",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1562
},
{
"end_pc": 1600,
"hash": "0xa2662acadea39c1b83bffbb8d25c4996a4f2fec7e61308e2c92defb72eb54e49",
"opcodes": [
"PUSH2",
"JUMP"
],
"start_pc": 1597
},
{
"end_pc": 1672,
"hash": "0xd4660133f6e645b0cd03c21369c648f51ac93f17999890ff7254175090ebbf4d",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"OP_84",
"OP_81",
"AND",
"PUSH1",
"OP_81",
"OP_81",
"MSTORE",
"PUSH1",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"OP_80",
"OP_83",
"SHA3",
"CALLER",
"OP_90",
"OP_95",
"AND",
"OP_80",
"OP_84",
"MSTORE",
"OP_94",
"OP_82",
"MSTORE",
"OP_80",
"OP_83",
"SHA3",
"SLOAD",
"OP_93",
"OP_83",
"MSTORE",
"PUSH1",
"OP_82",
"MSTORE",
"OP_80",
"OP_83",
"SHA3",
"OP_94",
"OP_83",
"MSTORE",
"OP_93",
"OP_90",
"MSTORE",
"OP_91",
"OP_90",
"OP_91",
"SHA3",
"SLOAD",
"OP_83",
"ADD",
"GT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1601
},
{
"end_pc": 1676,
"hash": "0x870472c7bff8639efb07babd426ec1a231cdbd624bb8723583a57b0a029866dc",
"opcodes": [
"PUSH2",
"JUMP"
],
"start_pc": 1673
},
{
"end_pc": 1815,
"hash": "0xa85a8d0954048a0699f2ce1d4c1489da609fb5f3c7e7bf05d347acc31d26a76b",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"OP_84",
"OP_81",
"AND",
"PUSH1",
"OP_81",
"OP_81",
"MSTORE",
"PUSH1",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"OP_80",
"OP_83",
"SHA3",
"OP_80",
"SLOAD",
"OP_88",
"OP_90",
"SUB",
"OP_90",
"SSTORE",
"OP_87",
"OP_85",
"AND",
"OP_80",
"OP_84",
"MSTORE",
"OP_81",
"OP_84",
"SHA3",
"OP_80",
"SLOAD",
"OP_89",
"ADD",
"OP_90",
"SSTORE",
"OP_93",
"OP_83",
"MSTORE",
"PUSH1",
"OP_82",
"MSTORE",
"OP_80",
"OP_83",
"SHA3",
"CALLER",
"OP_90",
"OP_95",
"AND",
"OP_80",
"OP_84",
"MSTORE",
"OP_94",
"OP_82",
"MSTORE",
"OP_91",
"OP_82",
"OP_90",
"SHA3",
"OP_80",
"SLOAD",
"OP_87",
"ADD",
"OP_90",
"SSTORE",
"OP_81",
"MLOAD",
"OP_86",
"OP_81",
"MSTORE",
"OP_91",
"MLOAD",
"OP_92",
"OP_93",
"OP_92",
"PUSH32",
"OP_92",
"OP_81",
"OP_90",
"SUB",
"OP_90",
"OP_91",
"ADD",
"OP_90",
"OP_A3",
"OP_93",
"OP_92",
"POP",
"POP",
"POP",
"JUMP"
],
"start_pc": 1677
},
{
"end_pc": 1850,
"hash": "0xc7d3ed3f99a15e3133bf58d125cd82dccbd6556ec31048c30d036537d6392907",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"OP_82",
"AND",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
exec
/bin/bash -lc "sed -n '1821,2080p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"OP_90",
"SHA3",
"SLOAD",
"OP_80",
"OP_82",
"ADD",
"LT",
"ISZERO",
"PUSH2",
"JUMPI"
],
"start_pc": 1816
},
{
"end_pc": 1854,
"hash": "0x957e2b614a25914b20777a7e4743ceb61b3f2239bfef81b392c1950188f79742",
"opcodes": [
"PUSH2",
"JUMP"
],
"start_pc": 1851
},
{
"end_pc": 1961,
"hash": "0xa9d8fbba03866b6d5a09e917f24ad76a1abad106d4ad673bc107911a84b4df65",
"opcodes": [
"JUMPDEST",
"PUSH1",
"PUSH1",
"PUSH1",
"EXP",
"SUB",
"CALLER",
"OP_81",
"AND",
"PUSH1",
"OP_81",
"OP_81",
"MSTORE",
"PUSH1",
"PUSH1",
"OP_90",
"OP_81",
"MSTORE",
"PUSH1",
"OP_80",
"OP_83",
"SHA3",
"OP_80",
"SLOAD",
"OP_87",
"OP_90",
"SUB",
"OP_90",
"SSTORE",
"OP_93",
"OP_86",
"AND",
"OP_80",
"OP_83",
"MSTORE",
"OP_91",
"OP_84",
"OP_90",
"SHA3",
"OP_80",
"SLOAD",
"OP_86",
"ADD",
"OP_90",
"SSTORE",
"OP_83",
"MLOAD",
"OP_85",
"OP_81",
"MSTORE",
"OP_93",
"MLOAD",
"OP_91",
"OP_93",
"PUSH32",
"OP_92",
"OP_90",
"OP_81",
"OP_90",
"SUB",
"OP_90",
"OP_91",
"ADD",
"OP_90",
"OP_A3",
"POP",
"POP",
"JUMP"
],
"start_pc": 1855
},
{
"end_pc": 1975,
"hash": "0x069a527f18c11b5c184ad8af8e2a44a7271d00299085f2c75fa58bc7b14c6e8a",
"opcodes": [
"JUMPDEST",
"OP_82",
"ADD",
"OP_91",
"OP_90",
"PUSH1",
"MSTORE",
"PUSH1",
"PUSH1",
"SHA3",
"OP_90"
],
"start_pc": 1962
},
{
"end_pc": 1995,
"hash": "0x7f74445fa727d64c60bc43dfcd9cfbc323fc343a915df69776c3c584e11d2b21",
"opcodes": [
"JUMPDEST",
"OP_81",
"SLOAD",
"OP_81",
"MSTORE",
"OP_90",
"PUSH1",
"ADD",
"OP_90",
"PUSH1",
"ADD",
"OP_80",
"OP_83",
"GT",
"PUSH2",
"JUMPI"
],
"start_pc": 1976
},
{
"end_pc": 2004,
"hash": "0x0f98a4d4fe86de2980c9621395cce18f4e0131f415ad575d16e2aa9a8abb4431",
"opcodes": [
"OP_82",
"OP_90",
"SUB",
"PUSH1",
"AND",
"OP_82",
"ADD",
"OP_91"
],
"start_pc": 1996
},
{
"end_pc": 2012,
"hash": "0x900b7c6e9ccca62a2f0a9ebd4a4d82d50ef20e22eee5bf2417eff09b642ae5d1",
"opcodes": [
"JUMPDEST",
"POP",
"POP",
"POP",
"POP",
"POP",
"OP_81",
"JUMP"
],
"start_pc": 2005
}
],
"callsites": [
{
"opcode": "CALL",
"pc": 730,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 798,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1256,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"cfg_edges": [
{
"from": "bb:0",
"to": "bb:130",
"type": "control_flow"
},
{
"from": "bb:0",
"to": "bb:11",
"type": "control_flow_fallthrough"
},
{
"from": "bb:11",
"to": "bb:138",
"type": "control_flow"
},
{
"from": "bb:11",
"to": "bb:31",
"type": "control_flow_fallthrough"
},
{
"from": "bb:31",
"to": "bb:232",
"type": "control_flow"
},
{
"from": "bb:31",
"to": "bb:42",
"type": "control_flow_fallthrough"
},
{
"from": "bb:42",
"to": "bb:282",
"type": "control_flow"
},
{
"from": "bb:42",
"to": "bb:53",
"type": "control_flow_fallthrough"
},
{
"from": "bb:53",
"to": "bb:294",
"type": "control_flow"
},
{
"from": "bb:53",
"to": "bb:64",
"type": "control_flow_fallthrough"
},
{
"from": "bb:64",
"to": "bb:318",
"type": "control_flow"
},
{
"from": "bb:64",
"to": "bb:75",
"type": "control_flow_fallthrough"
},
{
"from": "bb:75",
"to": "bb:411",
exec
/bin/bash -lc "rg -n 'selectors|detector|storage|proxy|delegate|eip|1967|minimal|beacon|findings|evidence|summary|function|slot' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
2416: "function_entries": [
2458: "functions": [
2467: "delegatecall": 0,
2471: "storage": {
2473: "slots": [
2477: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2482: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2487: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2492: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2497: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2502: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2507: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2521: "delegatecall": 0,
2525: "storage": {
2527: "slots": [
2531: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2536: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2541: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2546: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2551: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2556: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2561: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2575: "delegatecall": 0,
2579: "storage": {
2581: "slots": [
2585: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2590: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2595: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2600: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2605: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2610: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2615: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2629: "delegatecall": 0,
2633: "storage": {
2635: "slots": [
2639: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2644: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2649: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2654: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2659: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2664: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2669: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2683: "delegatecall": 0,
2687: "storage": {
2689: "slots": [
2693: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2698: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2703: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2708: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2713: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2718: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2723: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2737: "delegatecall": 0,
2741: "storage": {
2743: "slots": [
2747: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2752: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2757: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2762: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2767: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2772: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2777: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2791: "delegatecall": 0,
2795: "storage": {
2797: "slots": [
2801: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2806: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2811: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2816: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2821: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2826: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2831: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2845: "delegatecall": 0,
2849: "storage": {
2851: "slots": [
2855: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2860: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2865: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2870: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2875: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2880: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2885: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2899: "delegatecall": 0,
2903: "storage": {
2905: "slots": [
2909: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2914: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2919: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2924: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2929: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2934: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2939: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2953: "delegatecall": 0,
2957: "storage": {
2959: "slots": [
2963: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2968: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2973: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
2978: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
2983: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
2988: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
2993: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3000: "selectors": [
3016: "delegatecall": 0,
3019: "upgrade_slot_write_suspected": false
3021: "storage": {
3024: "slots": [
3028: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3033: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
3038: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3043: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
3048: "slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
3053: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
3058: "slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
3092: "is_proxy": false,
4085: "type": "function"
4091: "type": "function"
4097: "type": "function"
4103: "type": "function"
4109: "type": "function"
4115: "type": "function"
4121: "type": "function"
4127: "type": "function"
4133: "type": "function"
4139: "type": "function"
4148: "detector_findings": [
4151: "evidence_json": {
4204: "evidence_json": {
4256: "heuristics_summary": {
4258: "delegatecall_count": 0,
exec
/bin/bash -lc "sed -n '2400,3065p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"to": "bb:1976",
"type": "control_flow"
},
{
"from": "bb:1976",
"to": "bb:1996",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1996",
"to": "bb:2005",
"type": "control_flow_fallthrough"
}
],
"cfg_hash": "0xeff6114514882b30af3310e8e3e8858171c54b501ad262b929edf57618a8644b",
"dispatcher_type": "selector_jump_table",
"function_entries": [
{
"entry_pc": null,
"selector": "0x06fdde03"
},
{
"entry_pc": 826074471,
"selector": "0x23b872dd"
},
{
"entry_pc": 1889567281,
"selector": "0x313ce567"
},
{
"entry_pc": 2514000705,
"selector": "0x70a08231"
},
{
"entry_pc": 2835717307,
"selector": "0x95d89b41"
},
{
"entry_pc": 3404319313,
"selector": "0xa9059cbb"
},
{
"entry_pc": 3694166258,
"selector": "0xcae9ca51"
},
{
"entry_pc": 3714247998,
"selector": "0xdc3080f2"
},
{
"entry_pc": 3869595289,
"selector": "0xdd62ed3e"
},
{
"entry_pc": 1200,
"selector": "0xe6a55699"
}
],
"functions": [
{
"auth": {
"guards": []
},
"entry_pc": null,
"selector": "0x06fdde03",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 826074471,
"selector": "0x23b872dd",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 1889567281,
"selector": "0x313ce567",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 2514000705,
"selector": "0x70a08231",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 2835717307,
"selector": "0x95d89b41",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 3404319313,
"selector": "0xa9059cbb",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 3694166258,
"selector": "0xcae9ca51",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 3714247998,
"selector": "0xdc3080f2",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 3869595289,
"selector": "0xdd62ed3e",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
},
{
"auth": {
"guards": []
},
"entry_pc": 1200,
"selector": "0xe6a55699",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
}
}
],
"selectors": [
"0x06fdde03",
"0x23b872dd",
"0x313ce567",
"0x70a08231",
"0x95d89b41",
"0xa9059cbb",
"0xcae9ca51",
"0xdc3080f2",
"0xdd62ed3e",
"0xe6a55699"
],
"sinks": {
"call": 3,
"create": 0,
"create2": 0,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0,
"upgrade_slot_write_suspected": false
},
"storage": {
"keccak_count": 24,
"reads": 23,
"slots": [
{
"op": "SLOAD",
"pc": 146,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 218,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SLOAD",
"pc": 288,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
},
{
"op": "SLOAD",
"pc": 326,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 397,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000100"
},
{
"op": "SSTORE",
"pc": 605,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 1548,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000002"
}
],
"writes": 15
},
"version": "analysis_artifact_v1"
},
"block_number": null,
exec
/bin/bash -lc "sed -n '3066,4305p' BYTECODE_BUNDLE.json" in /tmp/codex-6oubwxvx
succeeded in 0ms:
"chain_id": 1,
"codehash": "0xb82f4cf330c308fc4ae018c6e614624522012565a0acc3a1a22dc4c44d007cef",
"created_at": "2026-04-04T19:55:26.000000Z",
"id": 2256,
"updated_at": "2026-04-04T19:55:26.000000Z",
"version": "analysis_artifact_v1"
},
"analysis_run": {
"address": "0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e",
"block_number": null,
"chain_id": 1,
"child_links": [],
"created_at": "2025-12-19T20:03:55.000000Z",
"id": "019b3836-360e-730b-adcd-d15852dc100d",
"parent_links": [],
"status": "running",
"updated_at": "2026-04-04T19:55:26.000000Z"
},
"artifact": {
"codehash": "0xb82f4cf330c308fc4ae018c6e614624522012565a0acc3a1a22dc4c44d007cef",
"compiler_json": {
"etherscan": {
"skipped": true
}
},
"implementation_address": null,
"is_proxy": false,
"runtime_bytecode": {
"full": "0x606060405236156100825760e060020a600035046306fdde03811461008a57806323b872dd146100e8578063313ce5671461011a57806370a082311461012657806395d89b411461013e578063a9059cbb1461019b578063cae9ca51146101ca578063dc3080f21461032e578063dd62ed3e14610353578063e6a5569914610377575b6104b0610002565b6040805160008054602060026001831615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b610520600435602435604435600160a060020a0383166000908152600360205260408120548290101561061a57610002565b61053260025460ff1681565b61052060043560036020526000908152604090205481565b60408051600180546020600282841615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b6104b0600435602435600160a060020a0333166000908152600360205260409020548190101561071857610002565b604080516020604435600481810135601f810184900484028501840190955284845261052094813594602480359593946064949293910191819084018382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546105209081565b60046020818152903560009081526040808220909252602435815220546105209081565b60408051602060046024803582810135601f81018590048502860185019096528585526104b0958335959394604494939290920191819084018382808284375050604080516020606435808b0135601f81018390048302840183019094528383529799983598976084975091955060249190910193509091508190840183828082843750949650505050505050836000141561041457620f424093505b33600160a060020a031660009081526003602090815260408220869055815485518380527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360026001841615610100026000190190931692909204601f90810184900483019391929188019083901061054957805160ff19168380011785555b506105799291505b808211156105d2576000815560010161049c565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805160ff929092168252519081900360200190f35b82800160010185558215610494579182015b8281111561049457825182600050559160200191906001019061055b565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106105d657805160ff19168380011785555b5061060692915061049c565b5090565b828001600101855582156105c6579182015b828111156105c65782518260005055916020019190600101906105e8565b50506002805460ff19168317905550505050565b600160a060020a038316600090815260036020526040902054808301101561064157610002565b600160a060020a03848116600081815260046020908152604080832033909516808452948252808320549383526005825280832094835293905291909120548301111561068d57610002565b600160a060020a03848116600081815260036020908152604080832080548890039055878516808452818420805489019055938352600582528083203390951680845294825291829020805487019055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a39392505050565b600160a060020a038216600090815260036020526040902054808201101561073f57610002565b600160a060020a03338116600081815260036020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b50505050508156",
"head": null,
"length": 4028,
"tail": null,
"truncated": false
},
"verified_source": false
},
"capability_graph": {
"address": "0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e",
"block_number": null,
"chain_id": 1,
"codehash": "0xb82f4cf330c308fc4ae018c6e614624522012565a0acc3a1a22dc4c44d007cef",
"created_at": "2026-04-04T19:55:27.000000Z",
"graph_hash": "0xe2ab8bdee7d7f30898694e4ec7e474b078b769d20cbe14a56797512666f8ba58",
"graph_json": {
"edges": [
{
"from": "bb:0",
"to": "bb:130",
"type": "control_flow"
},
{
"from": "bb:0",
"to": "bb:11",
"type": "control_flow_fallthrough"
},
{
"from": "bb:11",
"to": "bb:138",
"type": "control_flow"
},
{
"from": "bb:11",
"to": "bb:31",
"type": "control_flow_fallthrough"
},
{
"from": "bb:31",
"to": "bb:232",
"type": "control_flow"
},
{
"from": "bb:31",
"to": "bb:42",
"type": "control_flow_fallthrough"
},
{
"from": "bb:42",
"to": "bb:282",
"type": "control_flow"
},
{
"from": "bb:42",
"to": "bb:53",
"type": "control_flow_fallthrough"
},
{
"from": "bb:53",
"to": "bb:294",
"type": "control_flow"
},
{
"from": "bb:53",
"to": "bb:64",
"type": "control_flow_fallthrough"
},
{
"from": "bb:64",
"to": "bb:318",
"type": "control_flow"
},
{
"from": "bb:64",
"to": "bb:75",
"type": "control_flow_fallthrough"
},
{
"from": "bb:75",
"to": "bb:411",
"type": "control_flow"
},
{
"from": "bb:75",
"to": "bb:86",
"type": "control_flow_fallthrough"
},
{
"from": "bb:86",
"to": "bb:458",
"type": "control_flow"
},
{
"from": "bb:86",
"to": "bb:97",
"type": "control_flow_fallthrough"
},
{
"from": "bb:97",
"to": "bb:814",
"type": "control_flow"
},
{
"from": "bb:97",
"to": "bb:108",
"type": "control_flow_fallthrough"
},
{
"from": "bb:108",
"to": "bb:851",
"type": "control_flow"
},
{
"from": "bb:108",
"to": "bb:119",
"type": "control_flow_fallthrough"
},
{
"from": "bb:119",
"to": "bb:887",
"type": "control_flow"
},
{
"from": "bb:119",
"to": "bb:130",
"type": "control_flow_fallthrough"
},
{
"from": "bb:138",
"to": "bb:2005",
"type": "control_flow"
},
{
"from": "bb:138",
"to": "bb:205",
"type": "control_flow_fallthrough"
},
{
"from": "bb:205",
"to": "bb:1962",
"type": "control_flow"
},
{
"from": "bb:205",
"to": "bb:213",
"type": "control_flow_fallthrough"
},
{
"from": "bb:213",
"to": "bb:2005",
"type": "control_flow"
},
{
"from": "bb:232",
"to": "bb:1562",
"type": "control_flow"
},
{
"from": "bb:232",
"to": "bb:278",
"type": "control_flow_fallthrough"
},
{
"from": "bb:318",
"to": "bb:2005",
"type": "control_flow"
},
{
"from": "bb:318",
"to": "bb:384",
"type": "control_flow_fallthrough"
},
{
"from": "bb:384",
"to": "bb:1962",
"type": "control_flow"
},
{
"from": "bb:384",
"to": "bb:392",
"type": "control_flow_fallthrough"
},
{
"from": "bb:392",
"to": "bb:2005",
"type": "control_flow"
},
{
"from": "bb:411",
"to": "bb:1816",
"type": "control_flow"
},
{
"from": "bb:411",
"to": "bb:454",
"type": "control_flow_fallthrough"
},
{
"from": "bb:458",
"to": "bb:772",
"type": "control_flow"
},
{
"from": "bb:458",
"to": "bb:747",
"type": "control_flow_fallthrough"
},
{
"from": "bb:747",
"to": "bb:772",
"type": "control_flow_fallthrough"
},
{
"from": "bb:772",
"to": "bb:804",
"type": "control_flow_fallthrough"
},
{
"from": "bb:887",
"to": "bb:1044",
"type": "control_flow"
},
{
"from": "bb:887",
"to": "bb:1038",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1038",
"to": "bb:1044",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1044",
"to": "bb:1353",
"type": "control_flow"
},
{
"from": "bb:1044",
"to": "bb:1160",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1160",
"to": "bb:1172",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1172",
"to": "bb:1180",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1180",
"to": "bb:1490",
"type": "control_flow"
},
{
"from": "bb:1180",
"to": "bb:1189",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1189",
"to": "bb:1180",
"type": "control_flow"
},
{
"from": "bb:1202",
"to": "bb:1298",
"type": "control_flow"
},
{
"from": "bb:1202",
"to": "bb:1273",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1273",
"to": "bb:1298",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1353",
"to": "bb:1172",
"type": "control_flow"
},
{
"from": "bb:1353",
"to": "bb:1368",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1368",
"to": "bb:1371",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1371",
"to": "bb:1172",
"type": "control_flow"
},
{
"from": "bb:1371",
"to": "bb:1380",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1380",
"to": "bb:1371",
"type": "control_flow"
},
{
"from": "bb:1401",
"to": "bb:1494",
"type": "control_flow"
},
{
"from": "bb:1401",
"to": "bb:1466",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1466",
"to": "bb:1478",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1478",
"to": "bb:1180",
"type": "control_flow"
},
{
"from": "bb:1494",
"to": "bb:1478",
"type": "control_flow"
},
{
"from": "bb:1494",
"to": "bb:1509",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1509",
"to": "bb:1512",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1512",
"to": "bb:1478",
"type": "control_flow"
},
{
"from": "bb:1512",
"to": "bb:1521",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1521",
"to": "bb:1512",
"type": "control_flow"
},
{
"from": "bb:1562",
"to": "bb:1601",
"type": "control_flow"
},
{
"from": "bb:1562",
"to": "bb:1597",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1601",
"to": "bb:1677",
"type": "control_flow"
},
{
"from": "bb:1601",
"to": "bb:1673",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1816",
"to": "bb:1855",
"type": "control_flow"
},
{
"from": "bb:1816",
"to": "bb:1851",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1962",
"to": "bb:1976",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1976",
"to": "bb:1976",
"type": "control_flow"
},
{
"from": "bb:1976",
"to": "bb:1996",
"type": "control_flow_fallthrough"
},
{
"from": "bb:1996",
"to": "bb:2005",
"type": "control_flow_fallthrough"
},
{
"from": "fn:0x23b872dd",
"to": "bb:826074471",
"type": "entry"
},
{
"from": "fn:0x313ce567",
"to": "bb:1889567281",
"type": "entry"
},
{
"from": "fn:0x70a08231",
"to": "bb:2514000705",
"type": "entry"
},
{
"from": "fn:0x95d89b41",
"to": "bb:2835717307",
"type": "entry"
},
{
"from": "fn:0xa9059cbb",
"to": "bb:3404319313",
"type": "entry"
},
{
"from": "fn:0xcae9ca51",
"to": "bb:3694166258",
"type": "entry"
},
{
"from": "fn:0xdc3080f2",
"to": "bb:3714247998",
"type": "entry"
},
{
"from": "fn:0xdd62ed3e",
"to": "bb:3869595289",
"type": "entry"
},
{
"from": "fn:0xe6a55699",
"to": "bb:1200",
"type": "entry"
},
{
"from": "bb:458",
"to": "call:730",
"type": "contains"
},
{
"from": "call:730",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:772",
"to": "call:798",
"type": "contains"
},
{
"from": "call:798",
"to": "sink:call",
"type": "capability"
},
{
"from": "bb:1202",
"to": "call:1256",
"type": "contains"
},
{
"from": "call:1256",
"to": "sink:call",
"type": "capability"
}
],
"nodes": [
{
"end_pc": 10,
"hash": "0xea84cd9b520f9ac15ee69facebf0514d237ae3f350495e573c06816e7e3d08cf",
"id": "bb:0",
"start_pc": 0,
"type": "basic_block"
},
{
"end_pc": 30,
"hash": "0x8351f5fd39e1769e53f7b93891e5bf598f6939b3ca7289b6c03bc34019c93201",
"id": "bb:11",
"start_pc": 11,
"type": "basic_block"
},
{
"end_pc": 41,
"hash": "0xea91c1b81d5ade23782261ac75a2ddbefec41c29e5137fe0f73d110d1360453a",
"id": "bb:31",
"start_pc": 31,
"type": "basic_block"
},
{
"end_pc": 52,
"hash": "0x228d4f4a0da6e8bd757cd28745f2b4958c98f67409067116a44ee02e8fb97f2e",
"id": "bb:42",
"start_pc": 42,
"type": "basic_block"
},
{
"end_pc": 63,
"hash": "0x8096f3cfd9edec3e7cc023f44a1b3efc324394bf105a360e74ee74cec9645bee",
"id": "bb:53",
"start_pc": 53,
"type": "basic_block"
},
{
"end_pc": 74,
"hash": "0xbd0a2e97a2bec8ff409bd49d326d4bf123281b9f3389fc84be8d43e868501fda",
"id": "bb:64",
"start_pc": 64,
"type": "basic_block"
},
{
"end_pc": 85,
"hash": "0x323160771fb6e7c7da57f8357b78993b37652095a88c7d92e450971fdd87a521",
"id": "bb:75",
"start_pc": 75,
"type": "basic_block"
},
{
"end_pc": 96,
"hash": "0x28d78f8c295f5d6fa4668c2c25bc255a1de639c44330425dc83b2d4af5d0d1b3",
"id": "bb:86",
"start_pc": 86,
"type": "basic_block"
},
{
"end_pc": 107,
"hash": "0x14fa9bb36dc33abaefb59b781741c01df2241d4bc3938f8a5464713a8a15b36b",
"id": "bb:97",
"start_pc": 97,
"type": "basic_block"
},
{
"end_pc": 118,
"hash": "0xf5dcd67c858320278cac7baf5040cb5147bce7dd8b519b24eaba45d5fe0a1009",
"id": "bb:108",
"start_pc": 108,
"type": "basic_block"
},
{
"end_pc": 129,
"hash": "0x28f905c7a227a234e956a16c5275ba2797487e3de2e5267d4ba2df8db3e34f4c",
"id": "bb:119",
"start_pc": 119,
"type": "basic_block"
},
{
"end_pc": 137,
"hash": "0x656b8169beec60c42239989f91c962dd84d0262fd46d3f7eb1ba22508d55b606",
"id": "bb:130",
"start_pc": 130,
"type": "basic_block"
},
{
"end_pc": 204,
"hash": "0x38971221762cbfec0153d84fe906fd6c9dc28d87bfffa225e8fd4966a6afbaeb",
"id": "bb:138",
"start_pc": 138,
"type": "basic_block"
},
{
"end_pc": 212,
"hash": "0x928ebfc536e486a92c1c3c2ac85d2ffc79efe0a62d98edefc901aa993c36cdf8",
"id": "bb:205",
"start_pc": 205,
"type": "basic_block"
},
{
"end_pc": 231,
"hash": "0xc81dbc6115471deb494f3879f83e159c33370e1a61cd4c3025937246f5ec2c48",
"id": "bb:213",
"start_pc": 213,
"type": "basic_block"
},
{
"end_pc": 277,
"hash": "0x3727821badd7555d42d8b36030ebe49c8cdfed69d0c332453f2296758a68c865",
"id": "bb:232",
"start_pc": 232,
"type": "basic_block"
},
{
"end_pc": 281,
"hash": "0x023ddd88da6bacdf435db2f10910d47ff60d71a6ea606f961f9b83b1ae104a28",
"id": "bb:278",
"start_pc": 278,
"type": "basic_block"
},
{
"end_pc": 293,
"hash": "0x462a56aa72e9ff02dacf52c17579dade6411f9ceb064b53336bc9c7d58755dec",
"id": "bb:282",
"start_pc": 282,
"type": "basic_block"
},
{
"end_pc": 317,
"hash": "0xda6e4981f173e6846859f48d3ee8d0a4d11cd03d5630e84f60b02f42cffa5a68",
"id": "bb:294",
"start_pc": 294,
"type": "basic_block"
},
{
"end_pc": 383,
"hash": "0x79440b01e09d06218d0758f678c100c6b7585d97c44fe6297bc1b2ddfb672c24",
"id": "bb:318",
"start_pc": 318,
"type": "basic_block"
},
{
"end_pc": 391,
"hash": "0x4d086cb51e2525272cdaedaf0bff8b98b465d4b48af9f9d8d9e2f10dbef35f41",
"id": "bb:384",
"start_pc": 384,
"type": "basic_block"
},
{
"end_pc": 410,
"hash": "0xfb3cd24b9f64b5ac274cbb174f7dbd0cfe4eb930a257bcd0b74a056f38a2a53b",
"id": "bb:392",
"start_pc": 392,
"type": "basic_block"
},
{
"end_pc": 453,
"hash": "0x78494d4ec59d88eb683ce17dc9dfb54a579887623c0a8946ccf8509edb8a806f",
"id": "bb:411",
"start_pc": 411,
"type": "basic_block"
},
{
"end_pc": 457,
"hash": "0x958fbcdb7a5ddbe9800f3036e3e1271ad6366089e41feec49d2009270f7a633c",
"id": "bb:454",
"start_pc": 454,
"type": "basic_block"
},
{
"end_pc": 746,
"hash": "0xb1a9ccc4293e762601f5777144e0565aedded23f54abec5a2a67ad1ab696e176",
"id": "bb:458",
"start_pc": 458,
"type": "basic_block"
},
{
"end_pc": 771,
"hash": "0x7c2076afc0682a3d6432dcba9c9d72eae5659d0deac2fdf4963620548e4c0bf6",
"id": "bb:747",
"start_pc": 747,
"type": "basic_block"
},
{
"end_pc": 803,
"hash": "0x682309155583e9bf5684c645805d02775c0489d8a310e39a455eed1845ae107b",
"id": "bb:772",
"start_pc": 772,
"type": "basic_block"
},
{
"end_pc": 813,
"hash": "0x8423287e75318bb1a97109158b92abd95e8ab3344b10d1323330706b22a820e1",
"id": "bb:804",
"start_pc": 804,
"type": "basic_block"
},
{
"end_pc": 850,
"hash": "0x92c9e32cf0f987f1a236d75ac5d4c138e581e3d6a86237e091fac06940024978",
"id": "bb:814",
"start_pc": 814,
"type": "basic_block"
},
{
"end_pc": 886,
"hash": "0x78e6651f795163cda33a1f7d0e0c76914e57579b5bd8a6706bd4e2edfe8572ea",
"id": "bb:851",
"start_pc": 851,
"type": "basic_block"
},
{
"end_pc": 1037,
"hash": "0x67efb1797e26c9ccb6d697ddb1f38d26a53d286b514f57d2602f4ad3e9bdfd71",
"id": "bb:887",
"start_pc": 887,
"type": "basic_block"
},
{
"end_pc": 1043,
"hash": "0x5cc8f085bf045416d506a06eca3f45893d7d9c52f57fe2e639c54db01115e953",
"id": "bb:1038",
"start_pc": 1038,
"type": "basic_block"
},
{
"end_pc": 1159,
"hash": "0x8174752e74b8def418331b7165089609798a5734a04fdd5f85e0cf0d221c1e3e",
"id": "bb:1044",
"start_pc": 1044,
"type": "basic_block"
},
{
"end_pc": 1171,
"hash": "0xc2594a85c8424b4aa8682355108db57e7975c538e8280d2edaf2820ac1f56bc4",
"id": "bb:1160",
"start_pc": 1160,
"type": "basic_block"
},
{
"end_pc": 1179,
"hash": "0x47df8deec78e215adda608591446915028e81768f8106c607d0ed62004dfd868",
"id": "bb:1172",
"start_pc": 1172,
"type": "basic_block"
},
{
"end_pc": 1188,
"hash": "0x83ae68d2d97dadea7d665d4f4a82e04e308bcef01d09838c4dfdadb9ca755f09",
"id": "bb:1180",
"start_pc": 1180,
"type": "basic_block"
},
{
"end_pc": 1199,
"hash": "0x4867b9bb9af12967835219ac5485f157f44d0b4989d3b4dbbb0f55521667907f",
"id": "bb:1189",
"start_pc": 1189,
"type": "basic_block"
},
{
"end_pc": 1201,
"hash": "0x27c317ad1a54b6db4f67a7c719d879f80caf5d6801a3c25b5ccfebdfe3c1bcd4",
"id": "bb:1200",
"start_pc": 1200,
"type": "basic_block"
},
{
"end_pc": 1272,
"hash": "0x870d8e186946ce7aae17d83b53734c9fcbcc3b4a02d0b2718bc7af9560d31d34",
"id": "bb:1202",
"start_pc": 1202,
"type": "basic_block"
},
{
"end_pc": 1297,
"hash": "0xe69d9fe9ee12c042e74938a1ac6a4ef3de80d31f481ade0fd37efa6ba65f3049",
"id": "bb:1273",
"start_pc": 1273,
"type": "basic_block"
},
{
"end_pc": 1311,
"hash": "0x184c3035d2b104dba14e64b04c82f37e9443c82faadf877a8909961217ab1364",
"id": "bb:1298",
"start_pc": 1298,
"type": "basic_block"
},
{
"end_pc": 1329,
"hash": "0x1d1008b7a5732c71d2606411876fd0afba8f65ba284a8d2afca4c1fc8e4accd0",
"id": "bb:1312",
"start_pc": 1312,
"type": "basic_block"
},
{
"end_pc": 1352,
"hash": "0x09420f56ef15035d2227cb28a919609caa878665b8cdd261d6ebd5ae832a6e66",
"id": "bb:1330",
"start_pc": 1330,
"type": "basic_block"
},
{
"end_pc": 1367,
"hash": "0xbb0b2612a5e5b39bb5477fce03a1b55257c3476df41e2412656c9096804d45bc",
"id": "bb:1353",
"start_pc": 1353,
"type": "basic_block"
},
{
"end_pc": 1370,
"hash": "0x13b17a5c8fdfa48b410caff42f1fdaefad767abef48eddd4bf9923d0774236a8",
"id": "bb:1368",
"start_pc": 1368,
"type": "basic_block"
},
{
"end_pc": 1379,
"hash": "0xbfdff3d5c5912b6479818eb1b264172d85ccbfa9470e741fbd14ba927598501c",
"id": "bb:1371",
"start_pc": 1371,
"type": "basic_block"
},
{
"end_pc": 1400,
"hash": "0xbb9e291c7aca8baa054d812b37f9d9b4ab8ba40d07da3decb32d7c72855150e6",
"id": "bb:1380",
"start_pc": 1380,
"type": "basic_block"
},
{
"end_pc": 1465,
"hash": "0x388e53b0506aa00eb8615308b9261f1c367cb5659ae2ca261cfb1e2ccd115fc6",
"id": "bb:1401",
"start_pc": 1401,
"type": "basic_block"
},
{
"end_pc": 1477,
"hash": "0x75f8f4a754bab781dce2195c9f4580a2332a5951a456e7535dc55bd2a6cc5f2b",
"id": "bb:1466",
"start_pc": 1466,
"type": "basic_block"
},
{
"end_pc": 1489,
"hash": "0x976d149b0f65788f03ba599039443002c5ae96c1610dbf4e72c25b2a7dbedeae",
"id": "bb:1478",
"start_pc": 1478,
"type": "basic_block"
},
{
"end_pc": 1493,
"hash": "0xfcf560b5d3c59a69c761c56d74a8444a98a89d43009b278d14839bfa6a36c781",
"id": "bb:1490",
"start_pc": 1490,
"type": "basic_block"
},
{
"end_pc": 1508,
"hash": "0x9f778431795dd53b148a2a7138b15c04bdc02a8ddd041cc9c145952157726f6e",
"id": "bb:1494",
"start_pc": 1494,
"type": "basic_block"
},
{
"end_pc": 1511,
"hash": "0x5eb78e9fca7bfc8b39c303bf362216752f998ffc240a6164abe60cebee10a754",
"id": "bb:1509",
"start_pc": 1509,
"type": "basic_block"
},
{
"end_pc": 1520,
"hash": "0x45f57e2ad7f6ae4d5dbc786de040e95de2dfc0de2850e170569d8fe91fe5112c",
"id": "bb:1512",
"start_pc": 1512,
"type": "basic_block"
},
{
"end_pc": 1541,
"hash": "0x93e73e8ca84e6a1111492c972da49a54be645fa13e8ffe10fca845a08c9b8f28",
"id": "bb:1521",
"start_pc": 1521,
"type": "basic_block"
},
{
"end_pc": 1561,
"hash": "0x1bd25c4766b3439c88b8da3a221f3dcaa3306b80f7465d420d65a3eca3843b32",
"id": "bb:1542",
"start_pc": 1542,
"type": "basic_block"
},
{
"end_pc": 1596,
"hash": "0x18d03af663e95b906a79dc769474652c4cdb498702d89ce629226bf8a0e8809e",
"id": "bb:1562",
"start_pc": 1562,
"type": "basic_block"
},
{
"end_pc": 1600,
"hash": "0xa2662acadea39c1b83bffbb8d25c4996a4f2fec7e61308e2c92defb72eb54e49",
"id": "bb:1597",
"start_pc": 1597,
"type": "basic_block"
},
{
"end_pc": 1672,
"hash": "0xd4660133f6e645b0cd03c21369c648f51ac93f17999890ff7254175090ebbf4d",
"id": "bb:1601",
"start_pc": 1601,
"type": "basic_block"
},
{
"end_pc": 1676,
"hash": "0x870472c7bff8639efb07babd426ec1a231cdbd624bb8723583a57b0a029866dc",
"id": "bb:1673",
"start_pc": 1673,
"type": "basic_block"
},
{
"end_pc": 1815,
"hash": "0xa85a8d0954048a0699f2ce1d4c1489da609fb5f3c7e7bf05d347acc31d26a76b",
"id": "bb:1677",
"start_pc": 1677,
"type": "basic_block"
},
{
"end_pc": 1850,
"hash": "0xc7d3ed3f99a15e3133bf58d125cd82dccbd6556ec31048c30d036537d6392907",
"id": "bb:1816",
"start_pc": 1816,
"type": "basic_block"
},
{
"end_pc": 1854,
"hash": "0x957e2b614a25914b20777a7e4743ceb61b3f2239bfef81b392c1950188f79742",
"id": "bb:1851",
"start_pc": 1851,
"type": "basic_block"
},
{
"end_pc": 1961,
"hash": "0xa9d8fbba03866b6d5a09e917f24ad76a1abad106d4ad673bc107911a84b4df65",
"id": "bb:1855",
"start_pc": 1855,
"type": "basic_block"
},
{
"end_pc": 1975,
"hash": "0x069a527f18c11b5c184ad8af8e2a44a7271d00299085f2c75fa58bc7b14c6e8a",
"id": "bb:1962",
"start_pc": 1962,
"type": "basic_block"
},
{
"end_pc": 1995,
"hash": "0x7f74445fa727d64c60bc43dfcd9cfbc323fc343a915df69776c3c584e11d2b21",
"id": "bb:1976",
"start_pc": 1976,
"type": "basic_block"
},
{
"end_pc": 2004,
"hash": "0x0f98a4d4fe86de2980c9621395cce18f4e0131f415ad575d16e2aa9a8abb4431",
"id": "bb:1996",
"start_pc": 1996,
"type": "basic_block"
},
{
"end_pc": 2012,
"hash": "0x900b7c6e9ccca62a2f0a9ebd4a4d82d50ef20e22eee5bf2417eff09b642ae5d1",
"id": "bb:2005",
"start_pc": 2005,
"type": "basic_block"
},
{
"id": "call:730",
"opcode": "CALL",
"pc": 730,
"type": "callsite"
},
{
"id": "call:798",
"opcode": "CALL",
"pc": 798,
"type": "callsite"
},
{
"id": "call:1256",
"opcode": "CALL",
"pc": 1256,
"type": "callsite"
},
{
"id": "sink:call",
"type": "sink"
},
{
"entry_pc": null,
"id": "fn:0x06fdde03",
"selector": "0x06fdde03",
"type": "function"
},
{
"entry_pc": 826074471,
"id": "fn:0x23b872dd",
"selector": "0x23b872dd",
"type": "function"
},
{
"entry_pc": 1889567281,
"id": "fn:0x313ce567",
"selector": "0x313ce567",
"type": "function"
},
{
"entry_pc": 2514000705,
"id": "fn:0x70a08231",
"selector": "0x70a08231",
"type": "function"
},
{
"entry_pc": 2835717307,
"id": "fn:0x95d89b41",
"selector": "0x95d89b41",
"type": "function"
},
{
"entry_pc": 3404319313,
"id": "fn:0xa9059cbb",
"selector": "0xa9059cbb",
"type": "function"
},
{
"entry_pc": 3694166258,
"id": "fn:0xcae9ca51",
"selector": "0xcae9ca51",
"type": "function"
},
{
"entry_pc": 3714247998,
"id": "fn:0xdc3080f2",
"selector": "0xdc3080f2",
"type": "function"
},
{
"entry_pc": 3869595289,
"id": "fn:0xdd62ed3e",
"selector": "0xdd62ed3e",
"type": "function"
},
{
"entry_pc": 1200,
"id": "fn:0xe6a55699",
"selector": "0xe6a55699",
"type": "function"
}
],
"version": "capability_graph_v1"
},
"id": 2256,
"updated_at": "2026-04-04T19:55:27.000000Z",
"version": "capability_graph_v1"
},
"detector_findings": [
{
"confidence": 60,
"evidence_json": {
"call_count": 3,
"examples": [
{
"opcode": "CALL",
"pc": 730,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 798,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1256,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": [],
"untrusted_call_count": 3
},
"normalized_json": {
"sink": "CALL"
},
"severity": "high",
"title": "Untrusted CALL target/value reachable",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xa9d677aa6509ece2fd226c7db29b18b9c179b96b8e0ead3a3912327c1670adbb",
"trace_mode": "callTracer"
}
},
{
"confidence": 55,
"evidence_json": {
"eth_value_calls": 3,
"examples": [
{
"opcode": "CALL",
"pc": 730,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 798,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
},
{
"opcode": "CALL",
"pc": 1256,
"returndata_checked": null,
"target_expression_category": "computed",
"value_expression_category": "computed"
}
],
"guards_detected": []
},
"normalized_json": {
"sink": "CALL",
"value": "nonzero"
},
"severity": "high",
"title": "ETH value transfer possible",
"validated": true,
"validation_json": {
"attempts": 1,
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e"
],
"classification": "target_varies",
"confirmed": true,
"errors": 0,
"matched_probe": null,
"sink": "CALL",
"status": "confirmed",
"target_varies": true,
"trace_id": "0xa9d677aa6509ece2fd226c7db29b18b9c179b96b8e0ead3a3912327c1670adbb",
"trace_mode": "callTracer"
}
}
],
"heuristics_summary": {
"create2_count": 0,
"delegatecall_count": 0,
"flags": [],
"selfdestruct_count": 0
}
}
exec
/bin/bash -lc "python - <<'PY'
from textwrap import wrap
bytecode='606060405236156100825760e060020a600035046306fdde03811461008a57806323b872dd146100e8578063313ce5671461011a57806370a082311461012657806395d89b411461013e578063a9059cbb1461019b578063cae9ca51146101ca578063dc3080f21461032e578063dd62ed3e14610353578063e6a5569914610377575b6104b0610002565b6040805160008054602060026001831615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b610520600435602435604435600160a060020a0383166000908152600360205260408120548290101561061a57610002565b61053260025460ff1681565b61052060043560036020526000908152604090205481565b60408051600180546020600282841615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b6104b0600435602435600160a060020a0333166000908152600360205260409020548190101561071857610002565b604080516020604435600481810135601f810184900484028501840190955284845261052094813594602480359593946064949293910191819084018382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546105209081565b60046020818152903560009081526040808220909252602435815220546105209081565b60408051602060046024803582810135601f81018590048502860185019096528585526104b0958335959394604494939290920191819084018382808284375050604080516020606435808b0135601f81018390048302840183019094528383529799983598976084975091955060249190910193509091508190840183828082843750949650505050505050836000141561041457620f424093505b33600160a060020a031660009081526003602090815260408220869055815485518380527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360026001841615610100026000190190931692909204601f90810184900483019391929188019083901061054957805160ff19168380011785555b506105799291505b808211156105d2576000815560010161049c565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805160ff929092168252519081900360200190f35b82800160010185558215610494579182015b8281111561049457825182600050559160200191906001019061055b565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106105d657805160ff19168380011785555b5061060692915061049c565b5090565b828001600101855582156105c6579182015b828111156105c65782518260005055916020019190600101906105e8565b50506002805460ff19168317905550505050565b600160a060020a038316600090815260036020526040902054808301101561064157610002565b600160a060020a03848116600081815260046020908152604080832033909516808452948252808320549383526005825280832094835293905291909120548301111561068d57610002565b600160a060020a03848116600081815260036020908152604080832080548890039055878516808452818420805489019055938352600582528083203390951680845294825291829020805487019055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a39392505050565b600160a060020a038216600090815260036020526040902054808201101561073f57610002565b600160a060020a03338116600081815260036020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b50505050508156'
try:
import pyevmasm
except ImportError as e:
print('no pyevmasm', e)
PY" in /tmp/codex-6oubwxvx
succeeded in 0ms:
no pyevmasm No module named 'pyevmasm'
exec
/bin/bash -lc "python - <<'PY'
bytecode='606060405236156100825760e060020a600035046306fdde03811461008a57806323b872dd146100e8578063313ce5671461011a57806370a082311461012657806395d89b411461013e578063a9059cbb1461019b578063cae9ca51146101ca578063dc3080f21461032e578063dd62ed3e14610353578063e6a5569914610377575b6104b0610002565b6040805160008054602060026001831615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b610520600435602435604435600160a060020a0383166000908152600360205260408120548290101561061a57610002565b61053260025460ff1681565b61052060043560036020526000908152604090205481565b60408051600180546020600282841615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b6104b0600435602435600160a060020a0333166000908152600360205260409020548190101561071857610002565b604080516020604435600481810135601f810184900484028501840190955284845261052094813594602480359593946064949293910191819084018382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546105209081565b60046020818152903560009081526040808220909252602435815220546105209081565b60408051602060046024803582810135601f81018590048502860185019096528585526104b0958335959394604494939290920191819084018382808284375050604080516020606435808b0135601f81018390048302840183019094528383529799983598976084975091955060249190910193509091508190840183828082843750949650505050505050836000141561041457620f424093505b33600160a060020a031660009081526003602090815260408220869055815485518380527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360026001841615610100026000190190931692909204601f90810184900483019391929188019083901061054957805160ff19168380011785555b506105799291505b808211156105d2576000815560010161049c565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805160ff929092168252519081900360200190f35b82800160010185558215610494579182015b8281111561049457825182600050559160200191906001019061055b565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106105d657805160ff19168380011785555b5061060692915061049c565b5090565b828001600101855582156105c6579182015b828111156105c65782518260005055916020019190600101906105e8565b50506002805460ff19168317905550505050565b600160a060020a038316600090815260036020526040902054808301101561064157610002565b600160a060020a03848116600081815260046020908152604080832033909516808452948252808320549383526005825280832094835293905291909120548301111561068d57610002565b600160a060020a03848116600081815260036020908152604080832080548890039055878516808452818420805489019055938352600582528083203390951680845294825291829020805487019055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a39392505050565b600160a060020a038216600090815260036020526040902054808201101561073f57610002565b600160a060020a03338116600081815260036020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b50505050508156'
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
code=bytes.fromhex(bytecode)
pcs_to_show={0x19b,0x1ca,0x32e,0x377,0x520,0x532,0x61a,0x718,0x414,0x458,0x772,0x1202,0x1044,0x1677,0x1855,0x814,0x851}
# print around certain ranges
ranges=[(0x180,0x330),(0x330,0x3a0),(0x500,0x740)]
for start,end in ranges:
print(f'-- range {start:#x}-{end:#x} --')
pc=start
while pc<end and pc<len(code):
op=code[pc]
name=ops.get(op,f'OP_{op:02x}')
if name.startswith('PUSH'):
n=int(name[4:])
data=code[pc+1:pc+1+n]
print(f'{pc:04x}: {name} 0x{data.hex()}')
pc+=1+n
else:
print(f'{pc:04x}: {name}')
pc+=1
PY" in /tmp/codex-6oubwxvx
succeeded in 0ms:
-- range 0x180-0x330 --
0180: DUP1
0181: PUSH1 0x1f
0183: LT
0184: PUSH2 0x07aa
0187: JUMPI
0188: PUSH2 0x0100
018b: DUP1
018c: DUP4
018d: SLOAD
018e: DIV
018f: MUL
0190: DUP4
0191: MSTORE
0192: SWAP2
0193: PUSH1 0x20
0195: ADD
0196: SWAP2
0197: PUSH2 0x07d5
019a: JUMP
019b: JUMPDEST
019c: PUSH2 0x04b0
019f: PUSH1 0x04
01a1: CALLDATALOAD
01a2: PUSH1 0x24
01a4: CALLDATALOAD
01a5: PUSH1 0x01
01a7: PUSH1 0xa0
01a9: PUSH1 0x02
01ab: EXP
01ac: SUB
01ad: CALLER
01ae: AND
01af: PUSH1 0x00
01b1: SWAP1
01b2: DUP2
01b3: MSTORE
01b4: PUSH1 0x03
01b6: PUSH1 0x20
01b8: MSTORE
01b9: PUSH1 0x40
01bb: SWAP1
01bc: SHA3
01bd: SLOAD
01be: DUP2
01bf: SWAP1
01c0: LT
01c1: ISZERO
01c2: PUSH2 0x0718
01c5: JUMPI
01c6: PUSH2 0x0002
01c9: JUMP
01ca: JUMPDEST
01cb: PUSH1 0x40
01cd: DUP1
01ce: MLOAD
01cf: PUSH1 0x20
01d1: PUSH1 0x44
01d3: CALLDATALOAD
01d4: PUSH1 0x04
01d6: DUP2
01d7: DUP2
01d8: ADD
01d9: CALLDATALOAD
01da: PUSH1 0x1f
01dc: DUP2
01dd: ADD
01de: DUP5
01df: SWAP1
01e0: DIV
01e1: DUP5
01e2: MUL
01e3: DUP6
01e4: ADD
01e5: DUP5
01e6: ADD
01e7: SWAP1
01e8: SWAP6
01e9: MSTORE
01ea: DUP5
01eb: DUP5
01ec: MSTORE
01ed: PUSH2 0x0520
01f0: SWAP5
01f1: DUP2
01f2: CALLDATALOAD
01f3: SWAP5
01f4: PUSH1 0x24
01f6: DUP1
01f7: CALLDATALOAD
01f8: SWAP6
01f9: SWAP4
01fa: SWAP5
01fb: PUSH1 0x64
01fd: SWAP5
01fe: SWAP3
01ff: SWAP4
0200: SWAP2
0201: ADD
0202: SWAP2
0203: DUP2
0204: SWAP1
0205: DUP5
0206: ADD
0207: DUP4
0208: DUP3
0209: DUP1
020a: DUP3
020b: DUP5
020c: CALLDATACOPY
020d: POP
020e: SWAP5
020f: SWAP7
0210: POP
0211: POP
0212: POP
0213: POP
0214: POP
0215: POP
0216: POP
0217: PUSH1 0x00
0219: PUSH1 0x00
021b: DUP4
021c: PUSH1 0x04
021e: PUSH1 0x00
0220: POP
0221: PUSH1 0x00
0223: CALLER
0224: PUSH1 0x01
0226: PUSH1 0xa0
0228: PUSH1 0x02
022a: EXP
022b: SUB
022c: AND
022d: DUP2
022e: MSTORE
022f: PUSH1 0x20
0231: ADD
0232: SWAP1
0233: DUP2
0234: MSTORE
0235: PUSH1 0x20
0237: ADD
0238: PUSH1 0x00
023a: SHA3
023b: PUSH1 0x00
023d: POP
023e: PUSH1 0x00
0240: DUP8
0241: PUSH1 0x01
0243: PUSH1 0xa0
0245: PUSH1 0x02
0247: EXP
0248: SUB
0249: AND
024a: DUP2
024b: MSTORE
024c: PUSH1 0x20
024e: ADD
024f: SWAP1
0250: DUP2
0251: MSTORE
0252: PUSH1 0x20
0254: ADD
0255: PUSH1 0x00
0257: SHA3
0258: PUSH1 0x00
025a: POP
025b: DUP2
025c: SWAP1
025d: SSTORE
025e: POP
025f: DUP5
0260: SWAP1
0261: POP
0262: DUP1
0263: PUSH1 0x01
0265: PUSH1 0xa0
0267: PUSH1 0x02
0269: EXP
026a: SUB
026b: AND
026c: PUSH4 0x8f4ffcb1
0271: CALLER
0272: DUP7
0273: ADDRESS
0274: DUP8
0275: PUSH1 0x40
0277: MLOAD
0278: DUP6
0279: PUSH1 0xe0
027b: PUSH1 0x02
027d: EXP
027e: MUL
027f: DUP2
0280: MSTORE
0281: PUSH1 0x04
0283: ADD
0284: DUP1
0285: DUP6
0286: PUSH1 0x01
0288: PUSH1 0xa0
028a: PUSH1 0x02
028c: EXP
028d: SUB
028e: AND
028f: DUP2
0290: MSTORE
0291: PUSH1 0x20
0293: ADD
0294: DUP5
0295: DUP2
0296: MSTORE
0297: PUSH1 0x20
0299: ADD
029a: DUP4
029b: PUSH1 0x01
029d: PUSH1 0xa0
029f: PUSH1 0x02
02a1: EXP
02a2: SUB
02a3: AND
02a4: DUP2
02a5: MSTORE
02a6: PUSH1 0x20
02a8: ADD
02a9: DUP1
02aa: PUSH1 0x20
02ac: ADD
02ad: DUP3
02ae: DUP2
02af: SUB
02b0: DUP3
02b1: MSTORE
02b2: DUP4
02b3: DUP2
02b4: DUP2
02b5: MLOAD
02b6: DUP2
02b7: MSTORE
02b8: PUSH1 0x20
02ba: ADD
02bb: SWAP2
02bc: POP
02bd: DUP1
02be: MLOAD
02bf: SWAP1
02c0: PUSH1 0x20
02c2: ADD
02c3: SWAP1
02c4: DUP1
02c5: DUP4
02c6: DUP4
02c7: DUP3
02c8: SWAP1
02c9: PUSH1 0x00
02cb: PUSH1 0x04
02cd: PUSH1 0x20
02cf: DUP5
02d0: PUSH1 0x1f
02d2: ADD
02d3: DIV
02d4: PUSH1 0x0f
02d6: MUL
02d7: PUSH1 0x03
02d9: ADD
02da: CALL
02db: POP
02dc: SWAP1
02dd: POP
02de: SWAP1
02df: DUP2
02e0: ADD
02e1: SWAP1
02e2: PUSH1 0x1f
02e4: AND
02e5: DUP1
02e6: ISZERO
02e7: PUSH2 0x0304
02ea: JUMPI
02eb: DUP1
02ec: DUP3
02ed: SUB
02ee: DUP1
02ef: MLOAD
02f0: PUSH1 0x01
02f2: DUP4
02f3: PUSH1 0x20
02f5: SUB
02f6: PUSH2 0x0100
02f9: EXP
02fa: SUB
02fb: NOT
02fc: AND
02fd: DUP2
02fe: MSTORE
02ff: PUSH1 0x20
0301: ADD
0302: SWAP2
0303: POP
0304: JUMPDEST
0305: POP
0306: SWAP6
0307: POP
0308: POP
0309: POP
030a: POP
030b: POP
030c: POP
030d: PUSH1 0x00
030f: PUSH1 0x40
0311: MLOAD
0312: DUP1
0313: DUP4
0314: SUB
0315: DUP2
0316: PUSH1 0x00
0318: DUP8
0319: PUSH2 0x61da
031c: GAS
031d: SUB
031e: CALL
031f: ISZERO
0320: PUSH2 0x0002
0323: JUMPI
0324: POP
0325: POP
0326: POP
0327: POP
0328: SWAP4
0329: SWAP3
032a: POP
032b: POP
032c: POP
032d: JUMP
032e: JUMPDEST
032f: PUSH1 0x05
-- range 0x330-0x3a0 --
0330: SDIV
0331: PUSH1 0x20
0333: SWAP1
0334: DUP2
0335: MSTORE
0336: PUSH1 0x04
0338: CALLDATALOAD
0339: PUSH1 0x00
033b: SWAP1
033c: DUP2
033d: MSTORE
033e: PUSH1 0x40
0340: DUP1
0341: DUP3
0342: SHA3
0343: SWAP1
0344: SWAP3
0345: MSTORE
0346: PUSH1 0x24
0348: CALLDATALOAD
0349: DUP2
034a: MSTORE
034b: SHA3
034c: SLOAD
034d: PUSH2 0x0520
0350: SWAP1
0351: DUP2
0352: JUMP
0353: JUMPDEST
0354: PUSH1 0x04
0356: PUSH1 0x20
0358: DUP2
0359: DUP2
035a: MSTORE
035b: SWAP1
035c: CALLDATALOAD
035d: PUSH1 0x00
035f: SWAP1
0360: DUP2
0361: MSTORE
0362: PUSH1 0x40
0364: DUP1
0365: DUP3
0366: SHA3
0367: SWAP1
0368: SWAP3
0369: MSTORE
036a: PUSH1 0x24
036c: CALLDATALOAD
036d: DUP2
036e: MSTORE
036f: SHA3
0370: SLOAD
0371: PUSH2 0x0520
0374: SWAP1
0375: DUP2
0376: JUMP
0377: JUMPDEST
0378: PUSH1 0x40
037a: DUP1
037b: MLOAD
037c: PUSH1 0x20
037e: PUSH1 0x04
0380: PUSH1 0x24
0382: DUP1
0383: CALLDATALOAD
0384: DUP3
0385: DUP2
0386: ADD
0387: CALLDATALOAD
0388: PUSH1 0x1f
038a: DUP2
038b: ADD
038c: DUP6
038d: SWAP1
038e: DIV
038f: DUP6
0390: MUL
0391: DUP7
0392: ADD
0393: DUP6
0394: ADD
0395: SWAP1
0396: SWAP7
0397: MSTORE
0398: DUP6
0399: DUP6
039a: MSTORE
039b: PUSH2 0x04b0
039e: SWAP6
039f: DUP4
-- range 0x500-0x740 --
0500: DUP4
0501: PUSH1 0x20
0503: SUB
0504: PUSH2 0x0100
0507: EXP
0508: SUB
0509: NOT
050a: AND
050b: DUP2
050c: MSTORE
050d: PUSH1 0x20
050f: ADD
0510: SWAP2
0511: POP
0512: JUMPDEST
0513: POP
0514: SWAP3
0515: POP
0516: POP
0517: POP
0518: PUSH1 0x40
051a: MLOAD
051b: DUP1
051c: SWAP2
051d: SUB
051e: SWAP1
051f: RETURN
0520: JUMPDEST
0521: PUSH1 0x40
0523: DUP1
0524: MLOAD
0525: SWAP2
0526: DUP3
0527: MSTORE
0528: MLOAD
0529: SWAP1
052a: DUP2
052b: SWAP1
052c: SUB
052d: PUSH1 0x20
052f: ADD
0530: SWAP1
0531: RETURN
0532: JUMPDEST
0533: PUSH1 0x40
0535: DUP1
0536: MLOAD
0537: PUSH1 0xff
0539: SWAP3
053a: SWAP1
053b: SWAP3
053c: AND
053d: DUP3
053e: MSTORE
053f: MLOAD
0540: SWAP1
0541: DUP2
0542: SWAP1
0543: SUB
0544: PUSH1 0x20
0546: ADD
0547: SWAP1
0548: RETURN
0549: JUMPDEST
054a: DUP3
054b: DUP1
054c: ADD
054d: PUSH1 0x01
054f: ADD
0550: DUP6
0551: SSTORE
0552: DUP3
0553: ISZERO
0554: PUSH2 0x0494
0557: JUMPI
0558: SWAP2
0559: DUP3
055a: ADD
055b: JUMPDEST
055c: DUP3
055d: DUP2
055e: GT
055f: ISZERO
0560: PUSH2 0x0494
0563: JUMPI
0564: DUP3
0565: MLOAD
0566: DUP3
0567: PUSH1 0x00
0569: POP
056a: SSTORE
056b: SWAP2
056c: PUSH1 0x20
056e: ADD
056f: SWAP2
0570: SWAP1
0571: PUSH1 0x01
0573: ADD
0574: SWAP1
0575: PUSH2 0x055b
0578: JUMP
0579: JUMPDEST
057a: POP
057b: POP
057c: DUP1
057d: PUSH1 0x01
057f: PUSH1 0x00
0581: POP
0582: SWAP1
0583: DUP1
0584: MLOAD
0585: SWAP1
0586: PUSH1 0x20
0588: ADD
0589: SWAP1
058a: DUP3
058b: DUP1
058c: SLOAD
058d: PUSH1 0x01
058f: DUP2
0590: PUSH1 0x01
0592: AND
0593: ISZERO
0594: PUSH2 0x0100
0597: MUL
0598: SUB
0599: AND
059a: PUSH1 0x02
059c: SWAP1
059d: DIV
059e: SWAP1
059f: PUSH1 0x00
05a1: MSTORE
05a2: PUSH1 0x20
05a4: PUSH1 0x00
05a6: SHA3
05a7: SWAP1
05a8: PUSH1 0x1f
05aa: ADD
05ab: PUSH1 0x20
05ad: SWAP1
05ae: DIV
05af: DUP2
05b0: ADD
05b1: SWAP3
05b2: DUP3
05b3: PUSH1 0x1f
05b5: LT
05b6: PUSH2 0x05d6
05b9: JUMPI
05ba: DUP1
05bb: MLOAD
05bc: PUSH1 0xff
05be: NOT
05bf: AND
05c0: DUP4
05c1: DUP1
05c2: ADD
05c3: OR
05c4: DUP6
05c5: SSTORE
05c6: JUMPDEST
05c7: POP
05c8: PUSH2 0x0606
05cb: SWAP3
05cc: SWAP2
05cd: POP
05ce: PUSH2 0x049c
05d1: JUMP
05d2: JUMPDEST
05d3: POP
05d4: SWAP1
05d5: JUMP
05d6: JUMPDEST
05d7: DUP3
05d8: DUP1
05d9: ADD
05da: PUSH1 0x01
05dc: ADD
05dd: DUP6
05de: SSTORE
05df: DUP3
05e0: ISZERO
05e1: PUSH2 0x05c6
05e4: JUMPI
05e5: SWAP2
05e6: DUP3
05e7: ADD
05e8: JUMPDEST
05e9: DUP3
05ea: DUP2
05eb: GT
05ec: ISZERO
05ed: PUSH2 0x05c6
05f0: JUMPI
05f1: DUP3
05f2: MLOAD
05f3: DUP3
05f4: PUSH1 0x00
05f6: POP
05f7: SSTORE
05f8: SWAP2
05f9: PUSH1 0x20
05fb: ADD
05fc: SWAP2
05fd: SWAP1
05fe: PUSH1 0x01
0600: ADD
0601: SWAP1
0602: PUSH2 0x05e8
0605: JUMP
0606: JUMPDEST
0607: POP
0608: POP
0609: PUSH1 0x02
060b: DUP1
060c: SLOAD
060d: PUSH1 0xff
060f: NOT
0610: AND
0611: DUP4
0612: OR
0613: SWAP1
0614: SSTORE
0615: POP
0616: POP
0617: POP
0618: POP
0619: JUMP
061a: JUMPDEST
061b: PUSH1 0x01
061d: PUSH1 0xa0
061f: PUSH1 0x02
0621: EXP
0622: SUB
0623: DUP4
0624: AND
0625: PUSH1 0x00
0627: SWAP1
0628: DUP2
0629: MSTORE
062a: PUSH1 0x03
062c: PUSH1 0x20
062e: MSTORE
062f: PUSH1 0x40
0631: SWAP1
0632: SHA3
0633: SLOAD
0634: DUP1
0635: DUP4
0636: ADD
0637: LT
0638: ISZERO
0639: PUSH2 0x0641
063c: JUMPI
063d: PUSH2 0x0002
0640: JUMP
0641: JUMPDEST
0642: PUSH1 0x01
0644: PUSH1 0xa0
0646: PUSH1 0x02
0648: EXP
0649: SUB
064a: DUP5
064b: DUP2
064c: AND
064d: PUSH1 0x00
064f: DUP2
0650: DUP2
0651: MSTORE
0652: PUSH1 0x04
0654: PUSH1 0x20
0656: SWAP1
0657: DUP2
0658: MSTORE
0659: PUSH1 0x40
065b: DUP1
065c: DUP4
065d: SHA3
065e: CALLER
065f: SWAP1
0660: SWAP6
0661: AND
0662: DUP1
0663: DUP5
0664: MSTORE
0665: SWAP5
0666: DUP3
0667: MSTORE
0668: DUP1
0669: DUP4
066a: SHA3
066b: SLOAD
066c: SWAP4
066d: DUP4
066e: MSTORE
066f: PUSH1 0x05
0671: DUP3
0672: MSTORE
0673: DUP1
0674: DUP4
0675: SHA3
0676: SWAP5
0677: DUP4
0678: MSTORE
0679: SWAP4
067a: SWAP1
067b: MSTORE
067c: SWAP2
067d: SWAP1
067e: SWAP2
067f: SHA3
0680: SLOAD
0681: DUP4
0682: ADD
0683: GT
0684: ISZERO
0685: PUSH2 0x068d
0688: JUMPI
0689: PUSH2 0x0002
068c: JUMP
068d: JUMPDEST
068e: PUSH1 0x01
0690: PUSH1 0xa0
0692: PUSH1 0x02
0694: EXP
0695: SUB
0696: DUP5
0697: DUP2
0698: AND
0699: PUSH1 0x00
069b: DUP2
069c: DUP2
069d: MSTORE
069e: PUSH1 0x03
06a0: PUSH1 0x20
06a2: SWAP1
06a3: DUP2
06a4: MSTORE
06a5: PUSH1 0x40
06a7: DUP1
06a8: DUP4
06a9: SHA3
06aa: DUP1
06ab: SLOAD
06ac: DUP9
06ad: SWAP1
06ae: SUB
06af: SWAP1
06b0: SSTORE
06b1: DUP8
06b2: DUP6
06b3: AND
06b4: DUP1
06b5: DUP5
06b6: MSTORE
06b7: DUP2
06b8: DUP5
06b9: SHA3
06ba: DUP1
06bb: SLOAD
06bc: DUP10
06bd: ADD
06be: SWAP1
06bf: SSTORE
06c0: SWAP4
06c1: DUP4
06c2: MSTORE
06c3: PUSH1 0x05
06c5: DUP3
06c6: MSTORE
06c7: DUP1
06c8: DUP4
06c9: SHA3
06ca: CALLER
06cb: SWAP1
06cc: SWAP6
06cd: AND
06ce: DUP1
06cf: DUP5
06d0: MSTORE
06d1: SWAP5
06d2: DUP3
06d3: MSTORE
06d4: SWAP2
06d5: DUP3
06d6: SWAP1
06d7: SHA3
06d8: DUP1
06d9: SLOAD
06da: DUP8
06db: ADD
06dc: SWAP1
06dd: SSTORE
06de: DUP2
06df: MLOAD
06e0: DUP7
06e1: DUP2
06e2: MSTORE
06e3: SWAP2
06e4: MLOAD
06e5: SWAP3
06e6: SWAP4
06e7: SWAP3
06e8: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0709: SWAP3
070a: DUP2
070b: SWAP1
070c: SUB
070d: SWAP1
070e: SWAP2
070f: ADD
0710: SWAP1
0711: LOG3
0712: SWAP4
0713: SWAP3
0714: POP
0715: POP
0716: POP
0717: JUMP
0718: JUMPDEST
0719: PUSH1 0x01
071b: PUSH1 0xa0
071d: PUSH1 0x02
071f: EXP
0720: SUB
0721: DUP3
0722: AND
0723: PUSH1 0x00
0725: SWAP1
0726: DUP2
0727: MSTORE
0728: PUSH1 0x03
072a: PUSH1 0x20
072c: MSTORE
072d: PUSH1 0x40
072f: SWAP1
0730: SHA3
0731: SLOAD
0732: DUP1
0733: DUP3
0734: ADD
0735: LT
0736: ISZERO
0737: PUSH2 0x073f
073a: JUMPI
073b: PUSH2 0x0002
073e: JUMP
073f: JUMPDEST
exec
/bin/bash -lc "python - <<'PY'
bytecode='606060405236156100825760e060020a600035046306fdde03811461008a57806323b872dd146100e8578063313ce5671461011a57806370a082311461012657806395d89b411461013e578063a9059cbb1461019b578063cae9ca51146101ca578063dc3080f21461032e578063dd62ed3e14610353578063e6a5569914610377575b6104b0610002565b6040805160008054602060026001831615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b610520600435602435604435600160a060020a0383166000908152600360205260408120548290101561061a57610002565b61053260025460ff1681565b61052060043560036020526000908152604090205481565b60408051600180546020600282841615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b6104b0600435602435600160a060020a0333166000908152600360205260409020548190101561071857610002565b604080516020604435600481810135601f810184900484028501840190955284845261052094813594602480359593946064949293910191819084018382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546105209081565b60046020818152903560009081526040808220909252602435815220546105209081565b60408051602060046024803582810135601f81018590048502860185019096528585526104b0958335959394604494939290920191819084018382808284375050604080516020606435808b0135601f81018390048302840183019094528383529799983598976084975091955060249190910193509091508190840183828082843750949650505050505050836000141561041457620f424093505b33600160a060020a031660009081526003602090815260408220869055815485518380527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360026001841615610100026000190190931692909204601f90810184900483019391929188019083901061054957805160ff19168380011785555b506105799291505b808211156105d2576000815560010161049c565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805160ff929092168252519081900360200190f35b82800160010185558215610494579182015b8281111561049457825182600050559160200191906001019061055b565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106105d657805160ff19168380011785555b5061060692915061049c565b5090565b828001600101855582156105c6579182015b828111156105c65782518260005055916020019190600101906105e8565b50506002805460ff19168317905550505050565b600160a060020a038316600090815260036020526040902054808301101561064157610002565b600160a060020a03848116600081815260046020908152604080832033909516808452948252808320549383526005825280832094835293905291909120548301111561068d57610002565b600160a060020a03848116600081815260036020908152604080832080548890039055878516808452818420805489019055938352600582528083203390951680845294825291829020805487019055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a39392505050565b600160a060020a038216600090815260036020526040902054808201101561073f57610002565b600160a060020a03338116600081815260036020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b50505050508156'
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
code=bytes.fromhex(bytecode)
start,end=0x73f,0x7c0
pc=start
while pc<end and pc<len(code):
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if name.startswith('PUSH'):
n=int(name[4:]); data=code[pc+1:pc+1+n]
print(f'{pc:04x}: {name} 0x{data.hex()}'); pc+=1+n
else:
print(f'{pc:04x}: {name}'); pc+=1
PY" in /tmp/codex-6oubwxvx
succeeded in 0ms:
073f: JUMPDEST
0740: PUSH1 0x01
0742: PUSH1 0xa0
0744: PUSH1 0x02
0746: EXP
0747: SUB
0748: CALLER
0749: DUP2
074a: AND
074b: PUSH1 0x00
074d: DUP2
074e: DUP2
074f: MSTORE
0750: PUSH1 0x03
0752: PUSH1 0x20
0754: SWAP1
0755: DUP2
0756: MSTORE
0757: PUSH1 0x40
0759: DUP1
075a: DUP4
075b: SHA3
075c: DUP1
075d: SLOAD
075e: DUP8
075f: SWAP1
0760: SUB
0761: SWAP1
0762: SSTORE
0763: SWAP4
0764: DUP7
0765: AND
0766: DUP1
0767: DUP4
0768: MSTORE
0769: SWAP2
076a: DUP5
076b: SWAP1
076c: SHA3
076d: DUP1
076e: SLOAD
076f: DUP7
0770: ADD
0771: SWAP1
0772: SSTORE
0773: DUP4
0774: MLOAD
0775: DUP6
0776: DUP2
0777: MSTORE
0778: SWAP4
0779: MLOAD
077a: SWAP2
077b: SWAP4
077c: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
079d: SWAP3
079e: SWAP1
079f: DUP2
07a0: SWAP1
07a1: SUB
07a2: SWAP1
07a3: SWAP2
07a4: ADD
07a5: SWAP1
07a6: LOG3
07a7: POP
07a8: POP
07a9: JUMP
07aa: JUMPDEST
07ab: DUP3
07ac: ADD
07ad: SWAP2
07ae: SWAP1
07af: PUSH1 0x00
07b1: MSTORE
07b2: PUSH1 0x20
07b4: PUSH1 0x00
07b6: SHA3
07b7: SWAP1
07b8: JUMPDEST
07b9: DUP2
07ba: SLOAD
07bb: DUP2
07bc: MSTORE
07bd: SWAP1
07be: PUSH1 0x01
exec
/bin/bash -lc "python - <<'PY'
# continue small tail
bytecode='606060405236156100825760e060020a600035046306fdde03811461008a57806323b872dd146100e8578063313ce5671461011a57806370a082311461012657806395d89b411461013e578063a9059cbb1461019b578063cae9ca51146101ca578063dc3080f21461032e578063dd62ed3e14610353578063e6a5569914610377575b6104b0610002565b6040805160008054602060026001831615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b610520600435602435604435600160a060020a0383166000908152600360205260408120548290101561061a57610002565b61053260025460ff1681565b61052060043560036020526000908152604090205481565b60408051600180546020600282841615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b6104b0600435602435600160a060020a0333166000908152600360205260409020548190101561071857610002565b604080516020604435600481810135601f810184900484028501840190955284845261052094813594602480359593946064949293910191819084018382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546105209081565b60046020818152903560009081526040808220909252602435815220546105209081565b60408051602060046024803582810135601f81018590048502860185019096528585526104b0958335959394604494939290920191819084018382808284375050604080516020606435808b0135601f81018390048302840183019094528383529799983598976084975091955060249190910193509091508190840183828082843750949650505050505050836000141561041457620f424093505b33600160a060020a031660009081526003602090815260408220869055815485518380527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360026001841615610100026000190190931692909204601f90810184900483019391929188019083901061054957805160ff19168380011785555b506105799291505b808211156105d2576000815560010161049c565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805160ff929092168252519081900360200190f35b82800160010185558215610494579182015b8281111561049457825182600050559160200191906001019061055b565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106105d657805160ff19168380011785555b5061060692915061049c565b5090565b828001600101855582156105c6579182015b828111156105c65782518260005055916020019190600101906105e8565b50506002805460ff19168317905550505050565b600160a060020a038316600090815260036020526040902054808301101561064157610002565b600160a060020a03848116600081815260046020908152604080832033909516808452948252808320549383526005825280832094835293905291909120548301111561068d57610002565b600160a060020a03848116600081815260036020908152604080832080548890039055878516808452818420805489019055938352600582528083203390951680845294825291829020805487019055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a39392505050565b600160a060020a038216600090815260036020526040902054808201101561073f57610002565b600160a060020a03338116600081815260036020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b50505050508156'
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
code=bytes.fromhex(bytecode)
start,end=0x7be,0x7e6
pc=start
while pc<end and pc<len(code):
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if name.startswith('PUSH'):
n=int(name[4:]); data=code[pc+1:pc+1+n]
print(f'{pc:04x}: {name} 0x{data.hex()}'); pc+=1+n
else:
print(f'{pc:04x}: {name}'); pc+=1
PY" in /tmp/codex-6oubwxvx
succeeded in 0ms:
07be: PUSH1 0x01
07c0: ADD
07c1: SWAP1
07c2: PUSH1 0x20
07c4: ADD
07c5: DUP1
07c6: DUP4
07c7: GT
07c8: PUSH2 0x07b8
07cb: JUMPI
07cc: DUP3
07cd: SWAP1
07ce: SUB
07cf: PUSH1 0x1f
07d1: AND
07d2: DUP3
07d3: ADD
07d4: SWAP2
07d5: JUMPDEST
07d6: POP
07d7: POP
07d8: POP
07d9: POP
07da: POP
07db: DUP2
07dc: JUMP
exec
/bin/bash -lc "python - <<'PY'
# disassemble 0x377-0x4b5 region
bytecode='606060405236156100825760e060020a600035046306fdde03811461008a57806323b872dd146100e8578063313ce5671461011a57806370a082311461012657806395d89b411461013e578063a9059cbb1461019b578063cae9ca51146101ca578063dc3080f21461032e578063dd62ed3e14610353578063e6a5569914610377575b6104b0610002565b6040805160008054602060026001831615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b610520600435602435604435600160a060020a0383166000908152600360205260408120548290101561061a57610002565b61053260025460ff1681565b61052060043560036020526000908152604090205481565b60408051600180546020600282841615610100026000190190921691909104601f81018290048202840182019094528383526104b293908301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b6104b0600435602435600160a060020a0333166000908152600360205260409020548190101561071857610002565b604080516020604435600481810135601f810184900484028501840190955284845261052094813594602480359593946064949293910191819084018382808284375094965050505050505060006000836004600050600033600160a060020a03168152602001908152602001600020600050600087600160a060020a031681526020019081526020016000206000508190555084905080600160a060020a0316638f4ffcb1338630876040518560e060020a0281526004018085600160a060020a0316815260200184815260200183600160a060020a03168152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303816000876161da5a03f11561000257505050509392505050565b6005602090815260043560009081526040808220909252602435815220546105209081565b60046020818152903560009081526040808220909252602435815220546105209081565b60408051602060046024803582810135601f81018590048502860185019096528585526104b0958335959394604494939290920191819084018382808284375050604080516020606435808b0135601f81018390048302840183019094528383529799983598976084975091955060249190910193509091508190840183828082843750949650505050505050836000141561041457620f424093505b33600160a060020a031660009081526003602090815260408220869055815485518380527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360026001841615610100026000190190931692909204601f90810184900483019391929188019083901061054957805160ff19168380011785555b506105799291505b808211156105d2576000815560010161049c565b005b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156105125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60408051918252519081900360200190f35b6040805160ff929092168252519081900360200190f35b82800160010185558215610494579182015b8281111561049457825182600050559160200191906001019061055b565b50508060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106105d657805160ff19168380011785555b5061060692915061049c565b5090565b828001600101855582156105c6579182015b828111156105c65782518260005055916020019190600101906105e8565b50506002805460ff19168317905550505050565b600160a060020a038316600090815260036020526040902054808301101561064157610002565b600160a060020a03848116600081815260046020908152604080832033909516808452948252808320549383526005825280832094835293905291909120548301111561068d57610002565b600160a060020a03848116600081815260036020908152604080832080548890039055878516808452818420805489019055938352600582528083203390951680845294825291829020805487019055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a39392505050565b600160a060020a038216600090815260036020526040902054808201101561073f57610002565b600160a060020a03338116600081815260036020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b50505050508156'
ops={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
for i in range(1,33): ops[0x5f+i]=f'PUSH{i}'
for i in range(1,17): ops[0x7f+i]=f'DUP{i}'
for i in range(1,17): ops[0x8f+i]=f'SWAP{i}'
for i in range(0,5): ops[0xa0+i]=f'LOG{i}'
code=bytes.fromhex(bytecode)
start,end=0x377,0x4b5
pc=start
while pc<end and pc<len(code):
op=code[pc]; name=ops.get(op,f'OP_{op:02x}')
if name.startswith('PUSH'):
n=int(name[4:]); data=code[pc+1:pc+1+n]
print(f'{pc:04x}: {name} 0x{data.hex()}'); pc+=1+n
else:
print(f'{pc:04x}: {name}'); pc+=1
PY" in /tmp/codex-6oubwxvx
succeeded in 0ms:
0377: JUMPDEST
0378: PUSH1 0x40
037a: DUP1
037b: MLOAD
037c: PUSH1 0x20
037e: PUSH1 0x04
0380: PUSH1 0x24
0382: DUP1
0383: CALLDATALOAD
0384: DUP3
0385: DUP2
0386: ADD
0387: CALLDATALOAD
0388: PUSH1 0x1f
038a: DUP2
038b: ADD
038c: DUP6
038d: SWAP1
038e: DIV
038f: DUP6
0390: MUL
0391: DUP7
0392: ADD
0393: DUP6
0394: ADD
0395: SWAP1
0396: SWAP7
0397: MSTORE
0398: DUP6
0399: DUP6
039a: MSTORE
039b: PUSH2 0x04b0
039e: SWAP6
039f: DUP4
03a0: CALLDATALOAD
03a1: SWAP6
03a2: SWAP4
03a3: SWAP5
03a4: PUSH1 0x44
03a6: SWAP5
03a7: SWAP4
03a8: SWAP3
03a9: SWAP1
03aa: SWAP3
03ab: ADD
03ac: SWAP2
03ad: DUP2
03ae: SWAP1
03af: DUP5
03b0: ADD
03b1: DUP4
03b2: DUP3
03b3: DUP1
03b4: DUP3
03b5: DUP5
03b6: CALLDATACOPY
03b7: POP
03b8: POP
03b9: PUSH1 0x40
03bb: DUP1
03bc: MLOAD
03bd: PUSH1 0x20
03bf: PUSH1 0x64
03c1: CALLDATALOAD
03c2: DUP1
03c3: DUP12
03c4: ADD
03c5: CALLDATALOAD
03c6: PUSH1 0x1f
03c8: DUP2
03c9: ADD
03ca: DUP4
03cb: SWAP1
03cc: DIV
03cd: DUP4
03ce: MUL
03cf: DUP5
03d0: ADD
03d1: DUP4
03d2: ADD
03d3: SWAP1
03d4: SWAP5
03d5: MSTORE
03d6: DUP4
03d7: DUP4
03d8: MSTORE
03d9: SWAP8
03da: SWAP10
03db: SWAP9
03dc: CALLDATALOAD
03dd: SWAP9
03de: SWAP8
03df: PUSH1 0x84
03e1: SWAP8
03e2: POP
03e3: SWAP2
03e4: SWAP6
03e5: POP
03e6: PUSH1 0x24
03e8: SWAP2
03e9: SWAP1
03ea: SWAP2
03eb: ADD
03ec: SWAP4
03ed: POP
03ee: SWAP1
03ef: SWAP2
03f0: POP
03f1: DUP2
03f2: SWAP1
03f3: DUP5
03f4: ADD
03f5: DUP4
03f6: DUP3
03f7: DUP1
03f8: DUP3
03f9: DUP5
03fa: CALLDATACOPY
03fb: POP
03fc: SWAP5
03fd: SWAP7
03fe: POP
03ff: POP
0400: POP
0401: POP
0402: POP
0403: POP
0404: POP
0405: DUP4
0406: PUSH1 0x00
0408: EQ
0409: ISZERO
040a: PUSH2 0x0414
040d: JUMPI
040e: PUSH3 0x0f4240
0412: SWAP4
0413: POP
0414: JUMPDEST
0415: CALLER
0416: PUSH1 0x01
0418: PUSH1 0xa0
041a: PUSH1 0x02
041c: EXP
041d: SUB
041e: AND
041f: PUSH1 0x00
0421: SWAP1
0422: DUP2
0423: MSTORE
0424: PUSH1 0x03
0426: PUSH1 0x20
0428: SWAP1
0429: DUP2
042a: MSTORE
042b: PUSH1 0x40
042d: DUP3
042e: SHA3
042f: DUP7
0430: SWAP1
0431: SSTORE
0432: DUP2
0433: SLOAD
0434: DUP6
0435: MLOAD
0436: DUP4
0437: DUP1
0438: MSTORE
0439: PUSH32 0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563
045a: PUSH1 0x02
045c: PUSH1 0x01
045e: DUP5
045f: AND
0460: ISZERO
0461: PUSH2 0x0100
0464: MUL
0465: PUSH1 0x00
0467: NOT
0468: ADD
0469: SWAP1
046a: SWAP4
046b: AND
046c: SWAP3
046d: SWAP1
046e: SWAP3
046f: DIV
0470: PUSH1 0x1f
0472: SWAP1
0473: DUP2
0474: ADD
0475: DUP5
0476: SWAP1
0477: DIV
0478: DUP4
0479: ADD
047a: SWAP4
047b: SWAP2
047c: SWAP3
047d: SWAP2
047e: DUP9
047f: ADD
0480: SWAP1
0481: DUP4
0482: SWAP1
0483: LT
0484: PUSH2 0x0549
0487: JUMPI
0488: DUP1
0489: MLOAD
048a: PUSH1 0xff
048c: NOT
048d: AND
048e: DUP4
048f: DUP1
0490: ADD
0491: OR
0492: DUP6
0493: SSTORE
0494: JUMPDEST
0495: POP
0496: PUSH2 0x0579
0499: SWAP3
049a: SWAP2
049b: POP
049c: JUMPDEST
049d: DUP1
049e: DUP3
049f: GT
04a0: ISZERO
04a1: PUSH2 0x05d2
04a4: JUMPI
04a5: PUSH1 0x00
04a7: DUP2
04a8: SSTORE
04a9: PUSH1 0x01
04ab: ADD
04ac: PUSH2 0x049c
04af: JUMP
04b0: JUMPDEST
04b1: STOP
04b2: JUMPDEST
04b3: PUSH1 0x40
exec
/bin/bash -lc "rg -n \"e6a55699|cae9ca51|dc3080f2|8f4ffcb1\" /usr /home -g '*.json' -g '*.txt' -g '*.csv' -g '*.md' -g '*.ts' -g '*.js' -g '*.py' 2>/dev/null | head -n 50" in /tmp/codex-6oubwxvx
succeeded in 1443ms:
codex
{"no_findings":false,"summary":"Bytecode review found one critical issue: a publicly reachable, unguarded selector appears to act like an initializer/mint routine and can overwrite the caller's token balance and token metadata. No proxy/delegatecall path was evidenced.","findings":[{"severity":"critical","category":"auth","title":"Public unguarded initializer-like function can assign caller balance and rewrite token metadata","exploit_scenario":"Best-effort inference from bytecode: selector 0xe6a55699 decodes two dynamic string/bytes arguments plus two fixed values, substitutes a default amount of 1,000,000 when one amount input is zero, then writes directly to the caller's balance mapping at slot base 0x03. The same path also writes token metadata-style storage (the contract's string slots used by name()/symbol() and the low byte of slot 0x02 used by decimals()). Because no owner/once-only guard is visible before these writes, any attacker can call this function after deployment to set their own balance to an arbitrary value (or at least 1,000,000 via the default branch) and alter metadata, then transfer those tokens out.","recommendation":"Treat selector 0xe6a55699 as an exposed constructor/initializer until proven otherwise. Remove or permanently disable it after deployment, or gate it with a strict one-time initialization check plus privileged access control. If the contract is already deployed and immutable, assume token balances/metadata are attacker-controlled and migrate.","evidence":"Dispatcher exposes selector 0xe6a55699. Its path contains no auth checks before state writes. At pc 0x0405-0x0413 it branches to a hardcoded default amount 0x0f4240. At pc 0x0415-0x0431 it computes keccak(msg.sender, 0x03) and SSTOREs the supplied amount into the caller balance slot. The same function then performs string-storage writes rooted at slot 0x00/its data area (pc 0x0432-0x0493) and later writes the low byte of slot 0x02 (pc 0x0609-0x0614), matching the slots read by name()/symbol()/decimals().","locations":["selector:0xe6a55699","pc:0x0405","pc:0x042f","pc:0x0431","pc:0x0609","pc:0x0614"]}]}
tokens used
102,897
{
"codex": {
"ran_at": "2026-04-05T03:54:54.506067+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 4028,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode review found one critical issue: a publicly reachable, unguarded selector appears to act like an initializer/mint routine and can overwrite the caller's token balance and token metadata. No proxy/delegatecall path was evidenced.",
"raw_final": {
"summary": "Bytecode review found one critical issue: a publicly reachable, unguarded selector appears to act like an initializer/mint routine and can overwrite the caller's token balance and token metadata. No proxy/delegatecall path was evidenced.",
"findings": [
{
"title": "Public unguarded initializer-like function can assign caller balance and rewrite token metadata",
"category": "auth",
"evidence": "Dispatcher exposes selector 0xe6a55699. Its path contains no auth checks before state writes. At pc 0x0405-0x0413 it branches to a hardcoded default amount 0x0f4240. At pc 0x0415-0x0431 it computes keccak(msg.sender, 0x03) and SSTOREs the supplied amount into the caller balance slot. The same function then performs string-storage writes rooted at slot 0x00/its data area (pc 0x0432-0x0493) and later writes the low byte of slot 0x02 (pc 0x0609-0x0614), matching the slots read by name()/symbol()/decimals().",
"severity": "critical",
"locations": [
"selector:0xe6a55699",
"pc:0x0405",
"pc:0x042f",
"pc:0x0431",
"pc:0x0609",
"pc:0x0614"
],
"recommendation": "Treat selector 0xe6a55699 as an exposed constructor/initializer until proven otherwise. Remove or permanently disable it after deployment, or gate it with a strict one-time initialization check plus privileged access control. If the contract is already deployed and immutable, assume token balances/metadata are attacker-controlled and migrate.",
"exploit_scenario": "Best-effort inference from bytecode: selector 0xe6a55699 decodes two dynamic string/bytes arguments plus two fixed values, substitutes a default amount of 1,000,000 when one amount input is zero, then writes directly to the caller's balance mapping at slot base 0x03. The same path also writes token metadata-style storage (the contract's string slots used by name()/symbol() and the low byte of slot 0x02 used by decimals()). Because no owner/once-only guard is visible before these writes, any attacker can call this function after deployment to set their own balance to an arbitrary value (or at least 1,000,000 via the default branch) and alter metadata, then transfer those tokens out."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLDATASIZE 00000006: ISZERO 00000007: PUSH2 0x0082 0000000a: JUMPI 0000000b: PUSH1 0xe0 0000000d: PUSH1 0x02 0000000f: EXP 00000010: PUSH1 0x00 00000012: CALLDATALOAD 00000013: DIV 00000014: PUSH4 0x06fdde03 00000019: DUP2 0000001a: EQ 0000001b: PUSH2 0x008a 0000001e: JUMPI 0000001f: DUP1 00000020: PUSH4 0x23b872dd 00000025: EQ 00000026: PUSH2 0x00e8 00000029: JUMPI 0000002a: DUP1 0000002b: PUSH4 0x313ce567 00000030: EQ 00000031: PUSH2 0x011a 00000034: JUMPI 00000035: DUP1 00000036: PUSH4 0x70a08231 0000003b: EQ 0000003c: PUSH2 0x0126 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x95d89b41 00000046: EQ 00000047: PUSH2 0x013e 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0xa9059cbb 00000051: EQ 00000052: PUSH2 0x019b 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0xcae9ca51 0000005c: EQ 0000005d: PUSH2 0x01ca 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0xdc3080f2 00000067: EQ 00000068: PUSH2 0x032e 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0xdd62ed3e 00000072: EQ 00000073: PUSH2 0x0353 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0xe6a55699 0000007d: EQ 0000007e: PUSH2 0x0377 00000081: JUMPI 00000082: JUMPDEST 00000083: PUSH2 0x04b0 00000086: PUSH2 0x0002 00000089: JUMP 0000008a: JUMPDEST 0000008b: PUSH1 0x40 0000008d: DUP1 0000008e: MLOAD 0000008f: PUSH1 0x00 00000091: DUP1 00000092: SLOAD 00000093: PUSH1 0x20 00000095: PUSH1 0x02 00000097: PUSH1 0x01 00000099: DUP4 0000009a: AND 0000009b: ISZERO 0000009c: PUSH2 0x0100 0000009f: MUL 000000a0: PUSH1 0x00 000000a2: NOT 000000a3: ADD 000000a4: SWAP1 000000a5: SWAP3 000000a6: AND 000000a7: SWAP2 000000a8: SWAP1 000000a9: SWAP2 000000aa: DIV 000000ab: PUSH1 0x1f 000000ad: DUP2 000000ae: ADD 000000af: DUP3 000000b0: SWAP1 000000b1: DIV 000000b2: DUP3 000000b3: MUL 000000b4: DUP5 000000b5: ADD 000000b6: DUP3 000000b7: ADD 000000b8: SWAP1 000000b9: SWAP5 000000ba: MSTORE 000000bb: DUP4 000000bc: DUP4 000000bd: MSTORE 000000be: PUSH2 0x04b2 000000c1: SWAP4 000000c2: SWAP1 000000c3: DUP4 000000c4: ADD 000000c5: DUP3 000000c6: DUP3 000000c7: DUP1 000000c8: ISZERO 000000c9: PUSH2 0x07d5 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH1 0x1f 000000d0: LT 000000d1: PUSH2 0x07aa 000000d4: JUMPI 000000d5: PUSH2 0x0100 000000d8: DUP1 000000d9: DUP4 000000da: SLOAD 000000db: DIV 000000dc: MUL 000000dd: DUP4 000000de: MSTORE 000000df: SWAP2 000000e0: PUSH1 0x20 000000e2: ADD 000000e3: SWAP2 000000e4: PUSH2 0x07d5 000000e7: JUMP 000000e8: JUMPDEST 000000e9: PUSH2 0x0520 000000ec: PUSH1 0x04 000000ee: CALLDATALOAD 000000ef: PUSH1 0x24 000000f1: CALLDATALOAD 000000f2: PUSH1 0x44 000000f4: CALLDATALOAD 000000f5: PUSH1 0x01 000000f7: PUSH1 0xa0 000000f9: PUSH1 0x02 000000fb: EXP 000000fc: SUB 000000fd: DUP4 000000fe: AND 000000ff: PUSH1 0x00 00000101: SWAP1 00000102: DUP2 00000103: MSTORE 00000104: PUSH1 0x03 00000106: PUSH1 0x20 00000108: MSTORE 00000109: PUSH1 0x40 0000010b: DUP2 0000010c: KECCAK256 0000010d: SLOAD 0000010e: DUP3 0000010f: SWAP1 00000110: LT 00000111: ISZERO 00000112: PUSH2 0x061a 00000115: JUMPI 00000116: PUSH2 0x0002 00000119: JUMP 0000011a: JUMPDEST 0000011b: PUSH2 0x0532 0000011e: PUSH1 0x02 00000120: SLOAD 00000121: PUSH1 0xff 00000123: AND 00000124: DUP2 00000125: JUMP 00000126: JUMPDEST 00000127: PUSH2 0x0520 0000012a: PUSH1 0x04 0000012c: CALLDATALOAD 0000012d: PUSH1 0x03 0000012f: PUSH1 0x20 00000131: MSTORE 00000132: PUSH1 0x00 00000134: SWAP1 00000135: DUP2 00000136: MSTORE 00000137: PUSH1 0x40 00000139: SWAP1 0000013a: KECCAK256 0000013b: SLOAD 0000013c: DUP2 0000013d: JUMP 0000013e: JUMPDEST 0000013f: PUSH1 0x40 00000141: DUP1 00000142: MLOAD 00000143: PUSH1 0x01 00000145: DUP1 00000146: SLOAD 00000147: PUSH1 0x20 00000149: PUSH1 0x02 0000014b: DUP3 0000014c: DUP5 0000014d: AND 0000014e: ISZERO 0000014f: PUSH2 0x0100 00000152: MUL 00000153: PUSH1 0x00 00000155: NOT 00000156: ADD 00000157: SWAP1 00000158: SWAP3 00000159: AND 0000015a: SWAP2 0000015b: SWAP1 0000015c: SWAP2 0000015d: DIV 0000015e: PUSH1 0x1f 00000160: DUP2 00000161: ADD 00000162: DUP3 00000163: SWAP1 00000164: DIV 00000165: DUP3 00000166: MUL 00000167: DUP5 00000168: ADD 00000169: DUP3 0000016a: ADD 0000016b: SWAP1 0000016c: SWAP5 0000016d: MSTORE 0000016e: DUP4 0000016f: DUP4 00000170: MSTORE 00000171: PUSH2 0x04b2 00000174: SWAP4 00000175: SWAP1 00000176: DUP4 00000177: ADD 00000178: DUP3 00000179: DUP3 0000017a: DUP1 0000017b: ISZERO 0000017c: PUSH2 0x07d5 0000017f: JUMPI 00000180: DUP1 00000181: PUSH1 0x1f 00000183: LT 00000184: PUSH2 0x07aa 00000187: JUMPI 00000188: PUSH2 0x0100 0000018b: DUP1 0000018c: DUP4 0000018d: SLOAD 0000018e: DIV 0000018f: MUL 00000190: DUP4 00000191: MSTORE 00000192: SWAP2 00000193: PUSH1 0x20 00000195: ADD 00000196: SWAP2 00000197: PUSH2 0x07d5 0000019a: JUMP 0000019b: JUMPDEST 0000019c: PUSH2 0x04b0 0000019f: PUSH1 0x04 000001a1: CALLDATALOAD 000001a2: PUSH1 0x24 000001a4: CALLDATALOAD 000001a5: PUSH1 0x01 000001a7: PUSH1 0xa0 000001a9: PUSH1 0x02 000001ab: EXP 000001ac: SUB 000001ad: CALLER 000001ae: AND 000001af: PUSH1 0x00 000001b1: SWAP1 000001b2: DUP2 000001b3: MSTORE 000001b4: PUSH1 0x03 000001b6: PUSH1 0x20 000001b8: MSTORE 000001b9: PUSH1 0x40 000001bb: SWAP1 000001bc: KECCAK256 000001bd: SLOAD 000001be: DUP2 000001bf: SWAP1 000001c0: LT 000001c1: ISZERO 000001c2: PUSH2 0x0718 000001c5: JUMPI 000001c6: PUSH2 0x0002 000001c9: JUMP 000001ca: JUMPDEST 000001cb: PUSH1 0x40 000001cd: DUP1 000001ce: MLOAD 000001cf: PUSH1 0x20 000001d1: PUSH1 0x44 000001d3: CALLDATALOAD 000001d4: PUSH1 0x04 000001d6: DUP2 000001d7: DUP2 000001d8: ADD 000001d9: CALLDATALOAD 000001da: PUSH1 0x1f 000001dc: DUP2 000001dd: ADD 000001de: DUP5 000001df: SWAP1 000001e0: DIV 000001e1: DUP5 000001e2: MUL 000001e3: DUP6 000001e4: ADD 000001e5: DUP5 000001e6: ADD 000001e7: SWAP1 000001e8: SWAP6 000001e9: MSTORE 000001ea: DUP5 000001eb: DUP5 000001ec: MSTORE 000001ed: PUSH2 0x0520 000001f0: SWAP5 000001f1: DUP2 000001f2: CALLDATALOAD 000001f3: SWAP5 000001f4: PUSH1 0x24 000001f6: DUP1 000001f7: CALLDATALOAD 000001f8: SWAP6 000001f9: SWAP4 000001fa: SWAP5 000001fb: PUSH1 0x64 000001fd: SWAP5 000001fe: SWAP3 000001ff: SWAP4 00000200: SWAP2 00000201: ADD 00000202: SWAP2 00000203: DUP2 00000204: SWAP1 00000205: DUP5 00000206: ADD 00000207: DUP4 00000208: DUP3 00000209: DUP1 0000020a: DUP3 0000020b: DUP5 0000020c: CALLDATACOPY 0000020d: POP 0000020e: SWAP5 0000020f: SWAP7 00000210: POP 00000211: POP 00000212: POP 00000213: POP 00000214: POP 00000215: POP 00000216: POP 00000217: PUSH1 0x00 00000219: PUSH1 0x00 0000021b: DUP4 0000021c: PUSH1 0x04 0000021e: PUSH1 0x00 00000220: POP 00000221: PUSH1 0x00 00000223: CALLER 00000224: PUSH1 0x01 00000226: PUSH1 0xa0 00000228: PUSH1 0x02 0000022a: EXP 0000022b: SUB 0000022c: AND 0000022d: DUP2 0000022e: MSTORE 0000022f: PUSH1 0x20 00000231: ADD 00000232: SWAP1 00000233: DUP2 00000234: MSTORE 00000235: PUSH1 0x20 00000237: ADD 00000238: PUSH1 0x00 0000023a: KECCAK256 0000023b: PUSH1 0x00 0000023d: POP 0000023e: PUSH1 0x00 00000240: DUP8 00000241: PUSH1 0x01 00000243: PUSH1 0xa0 00000245: PUSH1 0x02 00000247: EXP 00000248: SUB 00000249: AND 0000024a: DUP2 0000024b: MSTORE 0000024c: PUSH1 0x20 0000024e: ADD 0000024f: SWAP1 00000250: DUP2 00000251: MSTORE 00000252: PUSH1 0x20 00000254: ADD 00000255: PUSH1 0x00 00000257: KECCAK256 00000258: PUSH1 0x00 0000025a: POP 0000025b: DUP2 0000025c: SWAP1 0000025d: SSTORE 0000025e: POP 0000025f: DUP5 00000260: SWAP1 00000261: POP 00000262: DUP1 00000263: PUSH1 0x01 00000265: PUSH1 0xa0 00000267: PUSH1 0x02 00000269: EXP 0000026a: SUB 0000026b: AND 0000026c: PUSH4 0x8f4ffcb1 00000271: CALLER 00000272: DUP7 00000273: ADDRESS 00000274: DUP8 00000275: PUSH1 0x40 00000277: MLOAD 00000278: DUP6 00000279: PUSH1 0xe0 0000027b: PUSH1 0x02 0000027d: EXP 0000027e: MUL 0000027f: DUP2 00000280: MSTORE 00000281: PUSH1 0x04 00000283: ADD 00000284: DUP1 00000285: DUP6 00000286: PUSH1 0x01 00000288: PUSH1 0xa0 0000028a: PUSH1 0x02 0000028c: EXP 0000028d: SUB 0000028e: AND 0000028f: DUP2 00000290: MSTORE 00000291: PUSH1 0x20 00000293: ADD 00000294: DUP5 00000295: DUP2 00000296: MSTORE 00000297: PUSH1 0x20 00000299: ADD 0000029a: DUP4 0000029b: PUSH1 0x01 0000029d: PUSH1 0xa0 0000029f: PUSH1 0x02 000002a1: EXP 000002a2: SUB 000002a3: AND 000002a4: DUP2 000002a5: MSTORE 000002a6: PUSH1 0x20 000002a8: ADD 000002a9: DUP1 000002aa: PUSH1 0x20 000002ac: ADD 000002ad: DUP3 000002ae: DUP2 000002af: SUB 000002b0: DUP3 000002b1: MSTORE 000002b2: DUP4 000002b3: DUP2 000002b4: DUP2 000002b5: MLOAD 000002b6: DUP2 000002b7: MSTORE 000002b8: PUSH1 0x20 000002ba: ADD 000002bb: SWAP2 000002bc: POP 000002bd: DUP1 000002be: MLOAD 000002bf: SWAP1 000002c0: PUSH1 0x20 000002c2: ADD 000002c3: SWAP1 000002c4: DUP1 000002c5: DUP4 000002c6: DUP4 000002c7: DUP3 000002c8: SWAP1 000002c9: PUSH1 0x00 000002cb: PUSH1 0x04 000002cd: PUSH1 0x20 000002cf: DUP5 000002d0: PUSH1 0x1f 000002d2: ADD 000002d3: DIV 000002d4: PUSH1 0x0f 000002d6: MUL 000002d7: PUSH1 0x03 000002d9: ADD 000002da: CALL 000002db: POP 000002dc: SWAP1 000002dd: POP 000002de: SWAP1 000002df: DUP2 000002e0: ADD 000002e1: SWAP1 000002e2: PUSH1 0x1f 000002e4: AND 000002e5: DUP1 000002e6: ISZERO 000002e7: PUSH2 0x0304 000002ea: JUMPI 000002eb: DUP1 000002ec: DUP3 000002ed: SUB 000002ee: DUP1 000002ef: MLOAD 000002f0: PUSH1 0x01 000002f2: DUP4 000002f3: PUSH1 0x20 000002f5: SUB 000002f6: PUSH2 0x0100 000002f9: EXP 000002fa: SUB 000002fb: NOT 000002fc: AND 000002fd: DUP2 000002fe: MSTORE 000002ff: PUSH1 0x20 00000301: ADD 00000302: SWAP2 00000303: POP 00000304: JUMPDEST 00000305: POP 00000306: SWAP6 00000307: POP 00000308: POP 00000309: POP 0000030a: POP 0000030b: POP 0000030c: POP 0000030d: PUSH1 0x00 0000030f: PUSH1 0x40 00000311: MLOAD 00000312: DUP1 00000313: DUP4 00000314: SUB 00000315: DUP2 00000316: PUSH1 0x00 00000318: DUP8 00000319: PUSH2 0x61da 0000031c: GAS 0000031d: SUB 0000031e: CALL 0000031f: ISZERO 00000320: PUSH2 0x0002 00000323: JUMPI 00000324: POP 00000325: POP 00000326: POP 00000327: POP 00000328: SWAP4 00000329: SWAP3 0000032a: POP 0000032b: POP 0000032c: POP 0000032d: JUMP 0000032e: JUMPDEST 0000032f: PUSH1 0x05 00000331: PUSH1 0x20 00000333: SWAP1 00000334: DUP2 00000335: MSTORE 00000336: PUSH1 0x04 00000338: CALLDATALOAD 00000339: PUSH1 0x00 0000033b: SWAP1 0000033c: DUP2 0000033d: MSTORE 0000033e: PUSH1 0x40 00000340: DUP1 00000341: DUP3 00000342: KECCAK256 00000343: SWAP1 00000344: SWAP3 00000345: MSTORE 00000346: PUSH1 0x24 00000348: CALLDATALOAD 00000349: DUP2 0000034a: MSTORE 0000034b: KECCAK256 0000034c: SLOAD 0000034d: PUSH2 0x0520 00000350: SWAP1 00000351: DUP2 00000352: JUMP 00000353: JUMPDEST 00000354: PUSH1 0x04 00000356: PUSH1 0x20 00000358: DUP2 00000359: DUP2 0000035a: MSTORE 0000035b: SWAP1 0000035c: CALLDATALOAD 0000035d: PUSH1 0x00 0000035f: SWAP1 00000360: DUP2 00000361: MSTORE 00000362: PUSH1 0x40 00000364: DUP1 00000365: DUP3 00000366: KECCAK256 00000367: SWAP1 00000368: SWAP3 00000369: MSTORE 0000036a: PUSH1 0x24 0000036c: CALLDATALOAD 0000036d: DUP2 0000036e: MSTORE 0000036f: KECCAK256 00000370: SLOAD 00000371: PUSH2 0x0520 00000374: SWAP1 00000375: DUP2 00000376: JUMP 00000377: JUMPDEST 00000378: PUSH1 0x40 0000037a: DUP1 0000037b: MLOAD 0000037c: PUSH1 0x20 0000037e: PUSH1 0x04 00000380: PUSH1 0x24 00000382: DUP1 00000383: CALLDATALOAD 00000384: DUP3 00000385: DUP2 00000386: ADD 00000387: CALLDATALOAD 00000388: PUSH1 0x1f 0000038a: DUP2 0000038b: ADD 0000038c: DUP6 0000038d: SWAP1 0000038e: DIV 0000038f: DUP6 00000390: MUL 00000391: DUP7 00000392: ADD 00000393: DUP6 00000394: ADD 00000395: SWAP1 00000396: SWAP7 00000397: MSTORE 00000398: DUP6 00000399: DUP6 0000039a: MSTORE 0000039b: PUSH2 0x04b0 0000039e: SWAP6 0000039f: DUP4 000003a0: CALLDATALOAD 000003a1: SWAP6 000003a2: SWAP4 000003a3: SWAP5 000003a4: PUSH1 0x44 000003a6: SWAP5 000003a7: SWAP4 000003a8: SWAP3 000003a9: SWAP1 000003aa: SWAP3 000003ab: ADD 000003ac: SWAP2 000003ad: DUP2 000003ae: SWAP1 000003af: DUP5 000003b0: ADD 000003b1: DUP4 000003b2: DUP3 000003b3: DUP1 000003b4: DUP3 000003b5: DUP5 000003b6: CALLDATACOPY 000003b7: POP 000003b8: POP 000003b9: PUSH1 0x40 000003bb: DUP1 000003bc: MLOAD 000003bd: PUSH1 0x20 000003bf: PUSH1 0x64 000003c1: CALLDATALOAD 000003c2: DUP1 000003c3: DUP12 000003c4: ADD 000003c5: CALLDATALOAD 000003c6: PUSH1 0x1f 000003c8: DUP2 000003c9: ADD 000003ca: DUP4 000003cb: SWAP1 000003cc: DIV 000003cd: DUP4 000003ce: MUL 000003cf: DUP5 000003d0: ADD 000003d1: DUP4 000003d2: ADD 000003d3: SWAP1 000003d4: SWAP5 000003d5: MSTORE 000003d6: DUP4 000003d7: DUP4 000003d8: MSTORE 000003d9: SWAP8 000003da: SWAP10 000003db: SWAP9 000003dc: CALLDATALOAD 000003dd: SWAP9 000003de: SWAP8 000003df: PUSH1 0x84 000003e1: SWAP8 000003e2: POP 000003e3: SWAP2 000003e4: SWAP6 000003e5: POP 000003e6: PUSH1 0x24 000003e8: SWAP2 000003e9: SWAP1 000003ea: SWAP2 000003eb: ADD 000003ec: SWAP4 000003ed: POP 000003ee: SWAP1 000003ef: SWAP2 000003f0: POP 000003f1: DUP2 000003f2: SWAP1 000003f3: DUP5 000003f4: ADD 000003f5: DUP4 000003f6: DUP3 000003f7: DUP1 000003f8: DUP3 000003f9: DUP5 000003fa: CALLDATACOPY 000003fb: POP 000003fc: SWAP5 000003fd: SWAP7 000003fe: POP 000003ff: POP 00000400: POP 00000401: POP 00000402: POP 00000403: POP 00000404: POP 00000405: DUP4 00000406: PUSH1 0x00 00000408: EQ 00000409: ISZERO 0000040a: PUSH2 0x0414 0000040d: JUMPI 0000040e: PUSH3 0x0f4240 00000412: SWAP4 00000413: POP 00000414: JUMPDEST 00000415: CALLER 00000416: PUSH1 0x01 00000418: PUSH1 0xa0 0000041a: PUSH1 0x02 0000041c: EXP 0000041d: SUB 0000041e: AND 0000041f: PUSH1 0x00 00000421: SWAP1 00000422: DUP2 00000423: MSTORE 00000424: PUSH1 0x03 00000426: PUSH1 0x20 00000428: SWAP1 00000429: DUP2 0000042a: MSTORE 0000042b: PUSH1 0x40 0000042d: DUP3 0000042e: KECCAK256 0000042f: DUP7 00000430: SWAP1 00000431: SSTORE 00000432: DUP2 00000433: SLOAD 00000434: DUP6 00000435: MLOAD 00000436: DUP4 00000437: DUP1 00000438: MSTORE 00000439: PUSH32 0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563 0000045a: PUSH1 0x02 0000045c: PUSH1 0x01 0000045e: DUP5 0000045f: AND 00000460: ISZERO 00000461: PUSH2 0x0100 00000464: MUL 00000465: PUSH1 0x00 00000467: NOT 00000468: ADD 00000469: SWAP1 0000046a: SWAP4 0000046b: AND 0000046c: SWAP3 0000046d: SWAP1 0000046e: SWAP3 0000046f: DIV 00000470: PUSH1 0x1f 00000472: SWAP1 00000473: DUP2 00000474: ADD 00000475: DUP5 00000476: SWAP1 00000477: DIV 00000478: DUP4 00000479: ADD 0000047a: SWAP4 0000047b: SWAP2 0000047c: SWAP3 0000047d: SWAP2 0000047e: DUP9 0000047f: ADD 00000480: SWAP1 00000481: DUP4 00000482: SWAP1 00000483: LT 00000484: PUSH2 0x0549 00000487: JUMPI 00000488: DUP1 00000489: MLOAD 0000048a: PUSH1 0xff 0000048c: NOT 0000048d: AND 0000048e: DUP4 0000048f: DUP1 00000490: ADD 00000491: OR 00000492: DUP6 00000493: SSTORE 00000494: JUMPDEST 00000495: POP 00000496: PUSH2 0x0579 00000499: SWAP3 0000049a: SWAP2 0000049b: POP 0000049c: JUMPDEST 0000049d: DUP1 0000049e: DUP3 0000049f: GT 000004a0: ISZERO 000004a1: PUSH2 0x05d2 000004a4: JUMPI 000004a5: PUSH1 0x00 000004a7: DUP2 000004a8: SSTORE 000004a9: PUSH1 0x01 000004ab: ADD 000004ac: PUSH2 0x049c 000004af: JUMP 000004b0: JUMPDEST 000004b1: STOP 000004b2: JUMPDEST 000004b3: PUSH1 0x40 000004b5: MLOAD 000004b6: DUP1 000004b7: DUP1 000004b8: PUSH1 0x20 000004ba: ADD 000004bb: DUP3 000004bc: DUP2 000004bd: SUB 000004be: DUP3 000004bf: MSTORE 000004c0: DUP4 000004c1: DUP2 000004c2: DUP2 000004c3: MLOAD 000004c4: DUP2 000004c5: MSTORE 000004c6: PUSH1 0x20 000004c8: ADD 000004c9: SWAP2 000004ca: POP 000004cb: DUP1 000004cc: MLOAD 000004cd: SWAP1 000004ce: PUSH1 0x20 000004d0: ADD 000004d1: SWAP1 000004d2: DUP1 000004d3: DUP4 000004d4: DUP4 000004d5: DUP3 000004d6: SWAP1 000004d7: PUSH1 0x00 000004d9: PUSH1 0x04 000004db: PUSH1 0x20 000004dd: DUP5 000004de: PUSH1 0x1f 000004e0: ADD 000004e1: DIV 000004e2: PUSH1 0x0f 000004e4: MUL 000004e5: PUSH1 0x03 000004e7: ADD 000004e8: CALL 000004e9: POP 000004ea: SWAP1 000004eb: POP 000004ec: SWAP1 000004ed: DUP2 000004ee: ADD 000004ef: SWAP1 000004f0: PUSH1 0x1f 000004f2: AND 000004f3: DUP1 000004f4: ISZERO 000004f5: PUSH2 0x0512 000004f8: JUMPI 000004f9: DUP1 000004fa: DUP3 000004fb: SUB 000004fc: DUP1 000004fd: MLOAD 000004fe: PUSH1 0x01 00000500: DUP4 00000501: PUSH1 0x20 00000503: SUB 00000504: PUSH2 0x0100 00000507: EXP 00000508: SUB 00000509: NOT 0000050a: AND 0000050b: DUP2 0000050c: MSTORE 0000050d: PUSH1 0x20 0000050f: ADD 00000510: SWAP2 00000511: POP 00000512: JUMPDEST 00000513: POP 00000514: SWAP3 00000515: POP 00000516: POP 00000517: POP 00000518: PUSH1 0x40 0000051a: MLOAD 0000051b: DUP1 0000051c: SWAP2 0000051d: SUB 0000051e: SWAP1 0000051f: RETURN 00000520: JUMPDEST 00000521: PUSH1 0x40 00000523: DUP1 00000524: MLOAD 00000525: SWAP2 00000526: DUP3 00000527: MSTORE 00000528: MLOAD 00000529: SWAP1 0000052a: DUP2 0000052b: SWAP1 0000052c: SUB 0000052d: PUSH1 0x20 0000052f: ADD 00000530: SWAP1 00000531: RETURN 00000532: JUMPDEST 00000533: PUSH1 0x40 00000535: DUP1 00000536: MLOAD 00000537: PUSH1 0xff 00000539: SWAP3 0000053a: SWAP1 0000053b: SWAP3 0000053c: AND 0000053d: DUP3 0000053e: MSTORE 0000053f: MLOAD 00000540: SWAP1 00000541: DUP2 00000542: SWAP1 00000543: SUB 00000544: PUSH1 0x20 00000546: ADD 00000547: SWAP1 00000548: RETURN 00000549: JUMPDEST 0000054a: DUP3 0000054b: DUP1 0000054c: ADD 0000054d: PUSH1 0x01 0000054f: ADD 00000550: DUP6 00000551: SSTORE 00000552: DUP3 00000553: ISZERO 00000554: PUSH2 0x0494 00000557: JUMPI 00000558: SWAP2 00000559: DUP3 0000055a: ADD 0000055b: JUMPDEST 0000055c: DUP3 0000055d: DUP2 0000055e: GT 0000055f: ISZERO 00000560: PUSH2 0x0494 00000563: JUMPI 00000564: DUP3 00000565: MLOAD 00000566: DUP3 00000567: PUSH1 0x00 00000569: POP 0000056a: SSTORE 0000056b: SWAP2 0000056c: PUSH1 0x20 0000056e: ADD 0000056f: SWAP2 00000570: SWAP1 00000571: PUSH1 0x01 00000573: ADD 00000574: SWAP1 00000575: PUSH2 0x055b 00000578: JUMP 00000579: JUMPDEST 0000057a: POP 0000057b: POP 0000057c: DUP1 0000057d: PUSH1 0x01 0000057f: PUSH1 0x00 00000581: POP 00000582: SWAP1 00000583: DUP1 00000584: MLOAD 00000585: SWAP1 00000586: PUSH1 0x20 00000588: ADD 00000589: SWAP1 0000058a: DUP3 0000058b: DUP1 0000058c: SLOAD 0000058d: PUSH1 0x01 0000058f: DUP2 00000590: PUSH1 0x01 00000592: AND 00000593: ISZERO 00000594: PUSH2 0x0100 00000597: MUL 00000598: SUB 00000599: AND 0000059a: PUSH1 0x02 0000059c: SWAP1 0000059d: DIV 0000059e: SWAP1 0000059f: PUSH1 0x00 000005a1: MSTORE 000005a2: PUSH1 0x20 000005a4: PUSH1 0x00 000005a6: KECCAK256 000005a7: SWAP1 000005a8: PUSH1 0x1f 000005aa: ADD 000005ab: PUSH1 0x20 000005ad: SWAP1 000005ae: DIV 000005af: DUP2 000005b0: ADD 000005b1: SWAP3 000005b2: DUP3 000005b3: PUSH1 0x1f 000005b5: LT 000005b6: PUSH2 0x05d6 000005b9: JUMPI 000005ba: DUP1 000005bb: MLOAD 000005bc: PUSH1 0xff 000005be: NOT 000005bf: AND 000005c0: DUP4 000005c1: DUP1 000005c2: ADD 000005c3: OR 000005c4: DUP6 000005c5: SSTORE 000005c6: JUMPDEST 000005c7: POP 000005c8: PUSH2 0x0606 000005cb: SWAP3 000005cc: SWAP2 000005cd: POP 000005ce: PUSH2 0x049c 000005d1: JUMP 000005d2: JUMPDEST 000005d3: POP 000005d4: SWAP1 000005d5: JUMP 000005d6: JUMPDEST 000005d7: DUP3 000005d8: DUP1 000005d9: ADD 000005da: PUSH1 0x01 000005dc: ADD 000005dd: DUP6 000005de: SSTORE 000005df: DUP3 000005e0: ISZERO 000005e1: PUSH2 0x05c6 000005e4: JUMPI 000005e5: SWAP2 000005e6: DUP3 000005e7: ADD 000005e8: JUMPDEST 000005e9: DUP3 000005ea: DUP2 000005eb: GT 000005ec: ISZERO 000005ed: PUSH2 0x05c6 000005f0: JUMPI 000005f1: DUP3 000005f2: MLOAD 000005f3: DUP3 000005f4: PUSH1 0x00 000005f6: POP 000005f7: SSTORE 000005f8: SWAP2 000005f9: PUSH1 0x20 000005fb: ADD 000005fc: SWAP2 000005fd: SWAP1 000005fe: PUSH1 0x01 00000600: ADD 00000601: SWAP1 00000602: PUSH2 0x05e8 00000605: JUMP 00000606: JUMPDEST 00000607: POP 00000608: POP 00000609: PUSH1 0x02 0000060b: DUP1 0000060c: SLOAD 0000060d: PUSH1 0xff 0000060f: NOT 00000610: AND 00000611: DUP4 00000612: OR 00000613: SWAP1 00000614: SSTORE 00000615: POP 00000616: POP 00000617: POP 00000618: POP 00000619: JUMP 0000061a: JUMPDEST 0000061b: PUSH1 0x01 0000061d: PUSH1 0xa0 0000061f: PUSH1 0x02 00000621: EXP 00000622: SUB 00000623: DUP4 00000624: AND 00000625: PUSH1 0x00 00000627: SWAP1 00000628: DUP2 00000629: MSTORE 0000062a: PUSH1 0x03 0000062c: PUSH1 0x20 0000062e: MSTORE 0000062f: PUSH1 0x40 00000631: SWAP1 00000632: KECCAK256 00000633: SLOAD 00000634: DUP1 00000635: DUP4 00000636: ADD 00000637: LT 00000638: ISZERO 00000639: PUSH2 0x0641 0000063c: JUMPI 0000063d: PUSH2 0x0002 00000640: JUMP 00000641: JUMPDEST 00000642: PUSH1 0x01 00000644: PUSH1 0xa0 00000646: PUSH1 0x02 00000648: EXP 00000649: SUB 0000064a: DUP5 0000064b: DUP2 0000064c: AND 0000064d: PUSH1 0x00 0000064f: DUP2 00000650: DUP2 00000651: MSTORE 00000652: PUSH1 0x04 00000654: PUSH1 0x20 00000656: SWAP1 00000657: DUP2 00000658: MSTORE 00000659: PUSH1 0x40 0000065b: DUP1 0000065c: DUP4 0000065d: KECCAK256 0000065e: CALLER 0000065f: SWAP1 00000660: SWAP6 00000661: AND 00000662: DUP1 00000663: DUP5 00000664: MSTORE 00000665: SWAP5 00000666: DUP3 00000667: MSTORE 00000668: DUP1 00000669: DUP4 0000066a: KECCAK256 0000066b: SLOAD 0000066c: SWAP4 0000066d: DUP4 0000066e: MSTORE 0000066f: PUSH1 0x05 00000671: DUP3 00000672: MSTORE 00000673: DUP1 00000674: DUP4 00000675: KECCAK256 00000676: SWAP5 00000677: DUP4 00000678: MSTORE 00000679: SWAP4 0000067a: SWAP1 0000067b: MSTORE 0000067c: SWAP2 0000067d: SWAP1 0000067e: SWAP2 0000067f: KECCAK256 00000680: SLOAD 00000681: DUP4 00000682: ADD 00000683: GT 00000684: ISZERO 00000685: PUSH2 0x068d 00000688: JUMPI 00000689: PUSH2 0x0002 0000068c: JUMP 0000068d: JUMPDEST 0000068e: PUSH1 0x01 00000690: PUSH1 0xa0 00000692: PUSH1 0x02 00000694: EXP 00000695: SUB 00000696: DUP5 00000697: DUP2 00000698: AND 00000699: PUSH1 0x00 0000069b: DUP2 0000069c: DUP2 0000069d: MSTORE 0000069e: PUSH1 0x03 000006a0: PUSH1 0x20 000006a2: SWAP1 000006a3: DUP2 000006a4: MSTORE 000006a5: PUSH1 0x40 000006a7: DUP1 000006a8: DUP4 000006a9: KECCAK256 000006aa: DUP1 000006ab: SLOAD 000006ac: DUP9 000006ad: SWAP1 000006ae: SUB 000006af: SWAP1 000006b0: SSTORE 000006b1: DUP8 000006b2: DUP6 000006b3: AND 000006b4: DUP1 000006b5: DUP5 000006b6: MSTORE 000006b7: DUP2 000006b8: DUP5 000006b9: KECCAK256 000006ba: DUP1 000006bb: SLOAD 000006bc: DUP10 000006bd: ADD 000006be: SWAP1 000006bf: SSTORE 000006c0: SWAP4 000006c1: DUP4 000006c2: MSTORE 000006c3: PUSH1 0x05 000006c5: DUP3 000006c6: MSTORE 000006c7: DUP1 000006c8: DUP4 000006c9: KECCAK256 000006ca: CALLER 000006cb: SWAP1 000006cc: SWAP6 000006cd: AND 000006ce: DUP1 000006cf: DUP5 000006d0: MSTORE 000006d1: SWAP5 000006d2: DUP3 000006d3: MSTORE 000006d4: SWAP2 000006d5: DUP3 000006d6: SWAP1 000006d7: KECCAK256 000006d8: DUP1 000006d9: SLOAD 000006da: DUP8 000006db: ADD 000006dc: SWAP1 000006dd: SSTORE 000006de: DUP2 000006df: MLOAD 000006e0: DUP7 000006e1: DUP2 000006e2: MSTORE 000006e3: SWAP2 000006e4: MLOAD 000006e5: SWAP3 000006e6: SWAP4 000006e7: SWAP3 000006e8: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00000709: SWAP3 0000070a: DUP2 0000070b: SWAP1 0000070c: SUB 0000070d: SWAP1 0000070e: SWAP2 0000070f: ADD 00000710: SWAP1 00000711: LOG3 00000712: SWAP4 00000713: SWAP3 00000714: POP 00000715: POP 00000716: POP 00000717: JUMP 00000718: JUMPDEST 00000719: PUSH1 0x01 0000071b: PUSH1 0xa0 0000071d: PUSH1 0x02 0000071f: EXP 00000720: SUB 00000721: DUP3 00000722: AND 00000723: PUSH1 0x00 00000725: SWAP1 00000726: DUP2 00000727: MSTORE 00000728: PUSH1 0x03 0000072a: PUSH1 0x20 0000072c: MSTORE 0000072d: PUSH1 0x40 0000072f: SWAP1 00000730: KECCAK256 00000731: SLOAD 00000732: DUP1 00000733: DUP3 00000734: ADD 00000735: LT 00000736: ISZERO 00000737: PUSH2 0x073f 0000073a: JUMPI 0000073b: PUSH2 0x0002 0000073e: JUMP 0000073f: JUMPDEST 00000740: PUSH1 0x01 00000742: PUSH1 0xa0 00000744: PUSH1 0x02 00000746: EXP 00000747: SUB 00000748: CALLER 00000749: DUP2 0000074a: AND 0000074b: PUSH1 0x00 0000074d: DUP2 0000074e: DUP2 0000074f: MSTORE 00000750: PUSH1 0x03 00000752: PUSH1 0x20 00000754: SWAP1 00000755: DUP2 00000756: MSTORE 00000757: PUSH1 0x40 00000759: DUP1 0000075a: DUP4 0000075b: KECCAK256 0000075c: DUP1 0000075d: SLOAD 0000075e: DUP8 0000075f: SWAP1 00000760: SUB 00000761: SWAP1 00000762: SSTORE 00000763: SWAP4 00000764: DUP7 00000765: AND 00000766: DUP1 00000767: DUP4 00000768: MSTORE 00000769: SWAP2 0000076a: DUP5 0000076b: SWAP1 0000076c: KECCAK256 0000076d: DUP1 0000076e: SLOAD 0000076f: DUP7 00000770: ADD 00000771: SWAP1 00000772: SSTORE 00000773: DUP4 00000774: MLOAD 00000775: DUP6 00000776: DUP2 00000777: MSTORE 00000778: SWAP4 00000779: MLOAD 0000077a: SWAP2 0000077b: SWAP4 0000077c: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000079d: SWAP3 0000079e: SWAP1 0000079f: DUP2 000007a0: SWAP1 000007a1: SUB 000007a2: SWAP1 000007a3: SWAP2 000007a4: ADD 000007a5: SWAP1 000007a6: LOG3 000007a7: POP 000007a8: POP 000007a9: JUMP 000007aa: JUMPDEST 000007ab: DUP3 000007ac: ADD 000007ad: SWAP2 000007ae: SWAP1 000007af: PUSH1 0x00 000007b1: MSTORE 000007b2: PUSH1 0x20 000007b4: PUSH1 0x00 000007b6: KECCAK256 000007b7: SWAP1 000007b8: JUMPDEST 000007b9: DUP2 000007ba: SLOAD 000007bb: DUP2 000007bc: MSTORE 000007bd: SWAP1 000007be: PUSH1 0x01 000007c0: ADD 000007c1: SWAP1 000007c2: PUSH1 0x20 000007c4: ADD 000007c5: DUP1 000007c6: DUP4 000007c7: GT 000007c8: PUSH2 0x07b8 000007cb: JUMPI 000007cc: DUP3 000007cd: SWAP1 000007ce: SUB 000007cf: PUSH1 0x1f 000007d1: AND 000007d2: DUP3 000007d3: ADD 000007d4: SWAP2 000007d5: JUMPDEST 000007d6: POP 000007d7: POP 000007d8: POP 000007d9: POP 000007da: POP 000007db: DUP2 000007dc: JUMP
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 |
|---|---|---|---|---|---|---|---|
| critical | auth | codex | Public unguarded initializer-like function can assign caller balance and rewrite token metadata | 90 | no | — |
viewevidence_json{
"evidence": "Dispatcher exposes selector 0xe6a55699. Its path contains no auth checks before state writes. At pc 0x0405-0x0413 it branches to a hardcoded default amount 0x0f4240. At pc 0x0415-0x0431 it computes keccak(msg.sender, 0x03) and SSTOREs the supplied amount into the caller balance slot. The same function then performs string-storage writes rooted at slot 0x00/its data area (pc 0x0432-0x0493) and later writes the low byte of slot 0x02 (pc 0x0609-0x0614), matching the slots read by name()/symbol()/decimals().",
"locations": [
"selector:0xe6a55699",
"pc:0x0405",
"pc:0x042f",
"pc:0x0431",
"pc:0x0609",
"pc:0x0614"
],
"recommendation": "Treat selector 0xe6a55699 as an exposed constructor/initializer until proven otherwise. Remove or permanently disable it after deployment, or gate it with a strict one-time initialization check plus privileged access control. If the contract is already deployed and immutable, assume token balances/metadata are attacker-controlled and migrate.",
"exploit_scenario": "Best-effort inference from bytecode: selector 0xe6a55699 decodes two dynamic string/bytes arguments plus two fixed values, substitutes a default amount of 1,000,000 when one amount input is zero, then writes directly to the caller's balance mapping at slot base 0x03. The same path also writes token metadata-style storage (the contract's string slots used by name()/symbol() and the low byte of slot 0x02 used by decimals()). Because no owner/once-only guard is visible before these writes, any attacker can call this function after deployment to set their own balance to an arbitrary value (or at least 1,000,000 via the default branch) and alter metadata, then transfer those tokens out."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | yes | yes |
viewtrace_id: 0xa9d677aa6509ece2fd226c7db29b18b9c179b96b8e0ead3a3912327c1670adbb
call_targets:
0x0000000000000000000000000000000000000004, 0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xa9d677aa6509ece2fd226c7db29b18b9c179b96b8e0ead3a3912327c1670adbb",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x70a08231",
"selector": "0x70a08231",
"calldata_variants": [
"0x70a08231",
"0x70a082310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x95d89b41",
"selector": "0x95d89b41",
"calldata_variants": [
"0x95d89b41",
"0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcae9ca51",
"selector": "0xcae9ca51",
"calldata_variants": [
"0xcae9ca51",
"0xcae9ca510000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdc3080f2",
"selector": "0xdc3080f2",
"calldata_variants": [
"0xdc3080f2",
"0xdc3080f20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 730,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 798,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1256,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [],
"untrusted_call_count": 3
}
|
| high | other | detector | ETH value transfer possible | 55 | yes | yes |
viewtrace_id: 0xa9d677aa6509ece2fd226c7db29b18b9c179b96b8e0ead3a3912327c1670adbb
call_targets:
0x0000000000000000000000000000000000000004, 0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0xa9d677aa6509ece2fd226c7db29b18b9c179b96b8e0ead3a3912327c1670adbb",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x0000000000000000000000000000000000000004",
"0xd7e021cd9096cc0ca642828c1045eb10c6b1ff2e"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x23b872dd",
"selector": "0x23b872dd",
"calldata_variants": [
"0x23b872dd",
"0x23b872dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x70a08231",
"selector": "0x70a08231",
"calldata_variants": [
"0x70a08231",
"0x70a082310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x95d89b41",
"selector": "0x95d89b41",
"calldata_variants": [
"0x95d89b41",
"0x95d89b410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcae9ca51",
"selector": "0xcae9ca51",
"calldata_variants": [
"0xcae9ca51",
"0xcae9ca510000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdc3080f2",
"selector": "0xdc3080f2",
"calldata_variants": [
"0xdc3080f2",
"0xdc3080f20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 730,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 798,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1256,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": []
}
|