fdc96e56-7733-4245-94be-d45bb0bfa698
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 |
|---|---|---|---|---|
| 30691 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 75142 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 75143 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 75144 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 75145 | capability.graph | complete | 1 / 3 | 1 week ago |
| 75146 | detector.run | complete | 1 / 3 | 1 week ago |
| 75147 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1510145] OpenAI Codex v0.77.0 (research preview)
[codex:1510145] --------
[codex:1510145] workdir: /tmp/codex-multi-_n4h4xk2
[codex:1510145] model: gpt-5.2-codex
[codex:1510145] provider: openai
[codex:1510145] approval: never
[codex:1510145] sandbox: read-only
[codex:1510145] reasoning effort: xhigh
[codex:1510145] reasoning summaries: auto
[codex:1510145] session id: 019b6f86-c8b8-7470-9e16-42068c840fb4
[codex:1510145] --------
[codex:1510145] user
[codex:1510145] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1510145] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1510145]
[codex:1510145] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1510145]
[codex:1510145] Output MUST be valid JSON matching the provided schema.
[codex:1510145] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1510145] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1510145]
[codex:1510145] Output constraints (IMPORTANT):
[codex:1510145] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1510145] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1510145] mcp startup: no servers
[codex:1510145]
[codex:1510145] thinking
[codex:1510145] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:1510145] exec
[codex:1510145] /bin/bash -lc ls in /tmp/codex-multi-_n4h4xk2 succeeded in 5ms:
[codex:1510145] BYTECODE_BUNDLE.txt
[codex:1510145] codex-output-schema.json
[codex:1510145] exec
[codex:1510145] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-_n4h4xk2 succeeded in 5ms:
[codex:1510145] Runtime bytecode bundle for best-effort auditing.
[codex:1510145] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1510145]
[codex:1510145] FILE: runtime_bytecode.hex
[codex:1510145] 0x6080604052600436106100cb5760003560e01c806398c6c32211610074578063d0e30db01161004e578063d0e30db0146102ab578063ec700c73146102b3578063eed55403146102d357600080fd5b806398c6c322146102375780639cf342041461026b578063a201ccf61461028b57600080fd5b80635b3297f1116100a55780635b3297f11461018a578063626173ca146101e357806372dfe4891461020357600080fd5b806327d853f7146100df578063471947a9146100ff578063522088e11461014457600080fd5b366100da576100d86102f3565b005b600080fd5b3480156100eb57600080fd5b506100d86100fa366004610f81565b6103b4565b34801561010b57600080fd5b5061012f61011a366004610f81565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561015057600080fd5b5061012f61015f366004610f81565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b34801561019657600080fd5b506101be7f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013b565b3480156101ef57600080fd5b506100d86101fe366004610fa5565b6104ca565b34801561020f57600080fd5b506101be7f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c81565b34801561024357600080fd5b506101be7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561027757600080fd5b506100d8610286366004610fd1565b6106ab565b34801561029757600080fd5b506100d86102a6366004610fa5565b610924565b6100d86102f3565b3480156102bf57600080fd5b506100d86102ce366004610fea565b610a2a565b3480156102df57600080fd5b506100d86102ee366004610f81565b610ac4565b337f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16146103b2577f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505b565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff161461047e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526020819052604090205460ff16610543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f7520617265206e6f7420616e20617070726f76656420636f6e74726163746044820152606401610475565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156105cb57600080fd5b505af11580156105df573d6000803e3d6000fd5b50506040516000925073ffffffffffffffffffffffffffffffffffffffff8516915083156108fc0290849084818181858888f193505050509050806106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5472616e7366657272696e67206d6f6e657920746f2075736572206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b505050565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff1614610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b5050505060007f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461088a576040519150601f19603f3d011682016040523d82523d6000602084013e61088f565b606091505b5050905080610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5472616e7366657272696e6720657468206c6971756964697479206f7574206f60448201527f6620706f6f6c206661696c6564000000000000000000000000000000000000006064820152608401610475565b5050565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b61092073ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c83610bd8565b3360009081526020819052604090205460ff16610aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f7520617265206e6f7420616e20617070726f76656420636f6e74726163746044820152606401610475565b6106a673ffffffffffffffffffffffffffffffffffffffff84168383610bd8565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff1614610b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526106a692869291600091610ca3918516908490610d4d565b8051909150156106a65780806020019051810190610cc1919061102b565b6106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610475565b6060610d5c8484600085610d64565b949350505050565b606082471015610df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610475565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610e1f9190611071565b60006040518083038185875af1925050503d8060008114610e5c576040519150601f19603f3d011682016040523d82523d6000602084013e610e61565b606091505b5091509150610e7287838387610e7d565b979650505050505050565b60608315610f13578251600003610f0c5773ffffffffffffffffffffffffffffffffffffffff85163b610f0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610475565b5081610d5c565b610d5c8383815115610f285781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610475919061108d565b73ffffffffffffffffffffffffffffffffffffffff81168114610f7e57600080fd5b50565b600060208284031215610f9357600080fd5b8135610f9e81610f5c565b9392505050565b60008060408385031215610fb857600080fd5b8235610fc381610f5c565b946020939093013593505050565b600060208284031215610fe357600080fd5b5035919050565b600080600060608486031215610fff57600080fd5b833561100a81610f5c565b9250602084013561101a81610f5c565b929592945050506040919091013590565b60006020828403121561103d57600080fd5b81518015158114610f9e57600080fd5b60005b83811015611068578181015183820152602001611050565b50506000910152565b6000825161108381846020870161104d565b9190910192915050565b60208152600082518060208401526110ac81604085016020870161104d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200b3c6ddf67f0d909f94590b0f543e36a89edd4a6573eb7001455be164e9c313b64736f6c63430008130033
[codex:1510145]
[codex:1510145]
[codex:1510145]
[codex:1510145] thinking
[codex:1510145] **Analyzing bytecode structure and access control**
[codex:1510145] thinking
[codex:1510145] **Examining function parameters and access checks**
[codex:1510145]
[codex:1510145] I'm sorting through how different functions decode parameters—some take one, two, or three arguments with address and uint types—and confirming which have access restrictions like manager-only or approved-contract-only. It’s interesting how certain functions share decoders and that parameter types sometimes seem truncated or reused in unusual ways, so I’m carefully matching selectors, decoded params, and access control to understand the contract’s behavior and constraints.
[codex:1510145] thinking
[codex:1510145] **Tracing ETH withdrawal and token transfer logic**
[codex:1510145]
[codex:1510145] I'm piecing together how the manager-only ETH withdrawal function works with WETH unwrap and forwarding ETH, and trying to decode how token transfer functions handle parameters—especially how some pass two addresses while the internal safeTransfer expects three parameters including amount. It looks like some functions might use constants or read token balances internally to supply missing arguments, so I’m investigating that to clarify the call structure.
[codex:1510145] exec
[codex:1510145] /bin/bash -lc 'rg -n "70a08231|18160ddd|a9059cbb|23b872dd" BYTECODE_BUNDLE.txt' in /tmp/codex-multi-_n4h4xk2 succeeded in 6ms:
[codex:1510145] 5:0x6080604052600436106100cb5760003560e01c806398c6c32211610074578063d0e30db01161004e578063d0e30db0146102ab578063ec700c73146102b3578063eed55403146102d357600080fd5b806398c6c322146102375780639cf342041461026b578063a201ccf61461028b57600080fd5b80635b3297f1116100a55780635b3297f11461018a578063626173ca146101e357806372dfe4891461020357600080fd5b806327d853f7146100df578063471947a9146100ff578063522088e11461014457600080fd5b366100da576100d86102f3565b005b600080fd5b3480156100eb57600080fd5b506100d86100fa366004610f81565b6103b4565b34801561010b57600080fd5b5061012f61011a366004610f81565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561015057600080fd5b5061012f61015f366004610f81565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b34801561019657600080fd5b506101be7f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013b565b3480156101ef57600080fd5b506100d86101fe366004610fa5565b6104ca565b34801561020f57600080fd5b506101be7f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c81565b34801561024357600080fd5b506101be7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561027757600080fd5b506100d8610286366004610fd1565b6106ab565b34801561029757600080fd5b506100d86102a6366004610fa5565b610924565b6100d86102f3565b3480156102bf57600080fd5b506100d86102ce366004610fea565b610a2a565b3480156102df57600080fd5b506100d86102ee366004610f81565b610ac4565b337f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16146103b2577f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505b565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff161461047e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526020819052604090205460ff16610543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f7520617265206e6f7420616e20617070726f76656420636f6e74726163746044820152606401610475565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156105cb57600080fd5b505af11580156105df573d6000803e3d6000fd5b50506040516000925073ffffffffffffffffffffffffffffffffffffffff8516915083156108fc0290849084818181858888f193505050509050806106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5472616e7366657272696e67206d6f6e657920746f2075736572206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b505050565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff1614610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b5050505060007f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461088a576040519150601f19603f3d011682016040523d82523d6000602084013e61088f565b606091505b5050905080610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5472616e7366657272696e6720657468206c6971756964697479206f7574206f60448201527f6620706f6f6c206661696c6564000000000000000000000000000000000000006064820152608401610475565b5050565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b61092073ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c83610bd8565b3360009081526020819052604090205460ff16610aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f7520617265206e6f7420616e20617070726f76656420636f6e74726163746044820152606401610475565b6106a673ffffffffffffffffffffffffffffffffffffffff84168383610bd8565b337f000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c73ffffffffffffffffffffffffffffffffffffffff1614610b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f596f7520617265206e6f7420746865204c6971756964697479204d616e61676560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610475565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526106a692869291600091610ca3918516908490610d4d565b8051909150156106a65780806020019051810190610cc1919061102b565b6106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610475565b6060610d5c8484600085610d64565b949350505050565b606082471015610df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610475565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610e1f9190611071565b60006040518083038185875af1925050503d8060008114610e5c576040519150601f19603f3d011682016040523d82523d6000602084013e610e61565b606091505b5091509150610e7287838387610e7d565b979650505050505050565b60608315610f13578251600003610f0c5773ffffffffffffffffffffffffffffffffffffffff85163b610f0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610475565b5081610d5c565b610d5c8383815115610f285781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610475919061108d565b73ffffffffffffffffffffffffffffffffffffffff81168114610f7e57600080fd5b50565b600060208284031215610f9357600080fd5b8135610f9e81610f5c565b9392505050565b60008060408385031215610fb857600080fd5b8235610fc381610f5c565b946020939093013593505050565b600060208284031215610fe357600080fd5b5035919050565b600080600060608486031215610fff57600080fd5b833561100a81610f5c565b9250602084013561101a81610f5c565b929592945050506040919091013590565b60006020828403121561103d57600080fd5b81518015158114610f9e57600080fd5b60005b83811015611068578181015183820152602001611050565b50506000910152565b6000825161108381846020870161104d565b9190910192915050565b60208152600082518060208401526110ac81604085016020870161104d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200b3c6ddf67f0d909f94590b0f543e36a89edd4a6573eb7001455be164e9c313b64736f6c63430008130033
[codex:1510145]
[codex:1510145] thinking
[codex:1510145] **Implementing simple EVM disassembler**
[codex:1510145]
[codex:1510145] I’m planning to write a quick Python script to parse the runtime bytecode hex and output opcodes with offsets. This should help me inspect specific function areas like 0x924 and understand how parameters are passed, since existing tools aren’t handy here. It feels doable to hack this up offline and get clarity on the functions' internals.
[codex:1510145] exec
[codex:1510145] /bin/bash -lc "python3 - <<'PY'
[codex:1510145] import re
[codex:1510145] from pathlib import Path
[codex:1510145] hexstr=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1]
[codex:1510145] hexstr=re.search(r'0x[0-9a-fA-F]+', hexstr).group(0)[2:]
[codex:1510145] code=bytes.fromhex(hexstr)
[codex:1510145] # opcode table
[codex:1510145] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1510145] # dup
[codex:1510145] for i in range(0x80,0x90): opcodes[i]=f'DUP{i-0x7f}'
[codex:1510145] for i in range(0x90,0xa0): opcodes[i]=f'SWAP{i-0x8f}'
[codex:1510145] for i in range(0xa0,0xa5): opcodes[i]=f'LOG{i-0xa0}'
[codex:1510145] base = {
[codex:1510145] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1510145] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1510145] 0x20:'SHA3',
[codex:1510145] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1510145] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1510145] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:1510145] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1510145] }
[codex:1510145] opcodes.update(base)
[codex:1510145]
[codex:1510145] def disasm(start=0,end=None):
[codex:1510145] i=start
[codex:1510145] res=[]
[codex:1510145] n=len(code)
[codex:1510145] if end is None: end=n
[codex:1510145] while i<end:
[codex:1510145] op=code[i]
[codex:1510145] name=opcodes.get(op, f'UNKNOWN_{op:02x}')
[codex:1510145] if 0x60<=op<=0x7f:
[codex:1510145] l=op-0x5f
[codex:1510145] data=code[i+1:i+1+l]
[codex:1510145] res.append((i, name, data.hex()))
[codex:1510145] i+=1+l
[codex:1510145] else:
[codex:1510145] res.append((i,name,''))
[codex:1510145] i+=1
[codex:1510145] return res
[codex:1510145]
[codex:1510145] # disasm around offsets of interest
[codex:1510145] for start in [0x3b4,0x4ca,0x6ab,0x924,0xa2a,0xac4,0xbd8]:
[codex:1510145] print('---',hex(start))
[codex:1510145] for off,name,arg in disasm(start, start+0x120):
[codex:1510145] if arg:
[codex:1510145] print(f'{off:04x}: {name} 0x{arg}')
[codex:1510145] else:
[codex:1510145] print(f'{off:04x}: {name}')
[codex:1510145] print()
[codex:1510145] PY" in /tmp/codex-multi-_n4h4xk2 succeeded in 27ms:
[codex:1510145] --- 0x3b4
[codex:1510145] 03b4: JUMPDEST
[codex:1510145] 03b5: CALLER
[codex:1510145] 03b6: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c
[codex:1510145] 03d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1510145] 03ec: AND
[codex:1510145] 03ed: EQ
[codex:1510145] 03ee: PUSH2 0x047e
[codex:1510145] 03f1: JUMPI
[codex:1510145] 03f2: PUSH1 0x40
[codex:1510145] 03f4: MLOAD
[codex:1510145] 03f5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1510145] 0416: DUP2
[codex:1510145] 0417: MSTORE
[codex:1510145] 0418: PUSH1 0x20
[codex:1510145] 041a: PUSH1 0x04
[codex:1510145] 041c: DUP3
[codex:1510145] 041d: ADD
[codex:1510145] 041e: MSTORE
[codex:1510145] 041f: PUSH1 0x21
[codex:1510145]
[codex:1510145] thinking
[codex:1510145] **Examining stack usage at function 0xbd8**
[codex:1510145] exec
[codex:1510145] /bin/bash -lc "python3 - <<'PY'
[codex:1510145] from pathlib import Path
[codex:1510145] import re
[codex:1510145] hexstr=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1]
[codex:1510145] hexstr=re.search(r'0x[0-9a-fA-F]+', hexstr).group(0)[2:]
[codex:1510145] code=bytes.fromhex(hexstr)
[codex:1510145] # simple disasm function
[codex:1510145] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1510145] for i in range(0x80,0x90): opcodes[i]=f'DUP{i-0x7f}'
[codex:1510145] for i in range(0x90,0xa0): opcodes[i]=f'SWAP{i-0x8f}'
[codex:1510145] for i in range(0xa0,0xa5): opcodes[i]=f'LOG{i-0xa0}'
[codex:1510145] base={
[codex:1510145] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1510145] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1510145] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1510145] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1510145] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:1510145] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1510145] }
[codex:1510145] opcodes.update(base)
[codex:1510145]
[codex:1510145] def disasm(start,end):
[codex:1510145] i=start
[codex:1510145] while i<end:
[codex:1510145] op=code[i]
[codex:1510145] name=opcodes.get(op, f'UNK_{op:02x}')
[codex:1510145] if 0x60<=op<=0x7f:
[codex:1510145] l=op-0x5f
[codex:1510145] data=code[i+1:i+1+l]
[codex:1510145] print(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1510145] i+=1+l
[codex:1510145] else:
[codex:1510145] print(f'{i:04x}: {name}')
[codex:1510145] i+=1
[codex:1510145]
[codex:1510145] print('--- decoder 0xfea')
[codex:1510145] disasm(0x0fea,0x1015)
[codex:1510145] print('--- decoder 0xfa5')
[codex:1510145] disasm(0x0fa5,0x0fdd)
[codex:1510145] PY" in /tmp/codex-multi-_n4h4xk2 succeeded in 31ms:
[codex:1510145] --- decoder 0xfea
[codex:1510145] 0fea: JUMPDEST
[codex:1510145] 0feb: PUSH1 0x00
[codex:1510145] 0fed: DUP1
[codex:1510145] 0fee: PUSH1 0x00
[codex:1510145] 0ff0: PUSH1 0x60
[codex:1510145] 0ff2: DUP5
[codex:1510145] 0ff3: DUP7
[codex:1510145] 0ff4: SUB
[codex:1510145] 0ff5: SLT
[codex:1510145] 0ff6: ISZERO
[codex:1510145] 0ff7: PUSH2 0x0fff
[codex:1510145] 0ffa: JUMPI
[codex:1510145] 0ffb: PUSH1 0x00
[codex:1510145] 0ffd: DUP1
[codex:1510145] 0ffe: REVERT
[codex:1510145] 0fff: JUMPDEST
[codex:1510145] 1000: DUP4
[codex:1510145] 1001: CALLDATALOAD
[codex:1510145] 1002: PUSH2 0x100a
[codex:1510145]
[codex:1510145] thinking
[codex:1510145] **Analyzing decoder argument handling**
[codex:1510145] exec
[codex:1510145] /bin/bash -lc "python3 - <<'PY'
[codex:1510145] from pathlib import Path
[codex:1510145] import re
[codex:1510145] hexstr=Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1]
[codex:1510145] hexstr=re.search(r'0x[0-9a-fA-F]+', hexstr).group(0)[2:]
[codex:1510145] code=bytes.fromhex(hexstr)
[codex:1510145]
[codex:1510145] opcodes = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1510145] for i in range(0x80,0x90): opcodes[i]=f'DUP{i-0x7f}'
[codex:1510145] for i in range(0x90,0xa0): opcodes[i]=f'SWAP{i-0x8f}'
[codex:1510145] for i in range(0xa0,0xa5): opcodes[i]=f'LOG{i-0xa0}'
[codex:1510145] base={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1510145] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1510145] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1510145] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1510145] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:1510145] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1510145] opcodes.update(base)
[codex:1510145]
[codex:1510145] def disasm(start,end):
[codex:1510145] i=start
[codex:1510145] while i<end:
[codex:1510145] op=code[i]
[codex:1510145] name=opcodes.get(op, f'UNK_{op:02x}')
[codex:1510145] if 0x60<=op<=0x7f:
[codex:1510145] l=op-0x5f
[codex:1510145] data=code[i+1:i+1+l]
[codex:1510145] print(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1510145] i+=1+l
[codex:1510145] else:
[codex:1510145] print(f'{i:04x}: {name}')
[codex:1510145] i+=1
[codex:1510145]
[codex:1510145] disasm(0x1012,0x1035)
[codex:1510145] PY" in /tmp/codex-multi-_n4h4xk2 succeeded in 29ms:
[codex:1510145] 1012: PUSH2 0x101a
[codex:1510145] 1015: DUP2
[codex:1510145] 1016: PUSH2 0x0f5c
[codex:1510145] 1019: JUMP
[codex:1510145] 101a: JUMPDEST
[codex:1510145] 101b: SWAP3
[codex:1510145] 101c: SWAP6
[codex:1510145] 101d: SWAP3
[codex:1510145] 101e: SWAP5
[codex:1510145] 101f: POP
[codex:1510145] 1020: POP
[codex:1510145] 1021: POP
[codex:1510145] 1022: PUSH1 0x40
[codex:1510145] 1024: SWAP2
[codex:1510145] 1025: SWAP1
[codex:1510145] 1026: SWAP2
[codex:1510145] 1027: ADD
[codex:1510145] 1028: CALLDATALOAD
[codex:1510145] 1029: SWAP1
[codex:1510145] 102a: JUMP
[codex:1510145]
[codex:1510145]
[codex:1510145] thinking
[codex:1510145] **Analyzing stack and control flow in SafeERC20**
[codex:1510145] thinking
[codex:1510145] **Preparing audit report JSON**
[codex:1510145]
[codex:1510145] I'll assemble a JSON report including no_findings, a concise summary about the centralization risk due to the hardcoded manager, and a findings array describing the access control concern with evidence pointing to relevant bytecode locations.
[codex:1510145] codex
[codex:1510145] {"no_findings":false,"summary":"Identified a centralization/access-control risk: a hardcoded liquidity manager address can move assets and approve other contracts; no other concrete bytecode-level issues found.","findings":[{"severity":"info","category":"access_control","title":"Hardcoded liquidity manager can arbitrarily move assets and grant withdrawal rights","exploit_scenario":"If the hardcoded manager address is compromised (or acts maliciously), it can call manager-gated functions to withdraw WETH/ETH and transfer any ERC20 held by the contract, and can approve additional contracts that then gain withdrawal capabilities, leading to complete asset drain.","recommendation":"If this is not strictly intended, store the manager in storage with a secure update mechanism (e.g., timelocked multisig) and minimize or remove broad withdrawal approvals; otherwise document the trust assumptions explicitly.","evidence":"Runtime bytecode contains a constant manager address (0xe31727817a0057de56fcb01f4913c9393c52c58c) compared against CALLER with error string “You are not the Liquidity Manager,” followed by code paths that invoke WETH withdraw (0x2e1a7d4d) and SafeERC20 transfer (0xa9059cbb) and mutate the approved-contract mapping.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
[codex:1510145] tokens used
[codex:1510145] 43,836
[codex:1510145] {"no_findings":false,"summary":"Identified a centralization/access-control risk: a hardcoded liquidity manager address can move assets and approve other contracts; no other concrete bytecode-level issues found.","findings":[{"severity":"info","category":"access_control","title":"Hardcoded liquidity manager can arbitrarily move assets and grant withdrawal rights","exploit_scenario":"If the hardcoded manager address is compromised (or acts maliciously), it can call manager-gated functions to withdraw WETH/ETH and transfer any ERC20 held by the contract, and can approve additional contracts that then gain withdrawal capabilities, leading to complete asset drain.","recommendation":"If this is not strictly intended, store the manager in storage with a secure update mechanism (e.g., timelocked multisig) and minimize or remove broad withdrawal approvals; otherwise document the trust assumptions explicitly.","evidence":"Runtime bytecode contains a constant manager address (0xe31727817a0057de56fcb01f4913c9393c52c58c) compared against CALLER with error string “You are not the Liquidity Manager,” followed by code paths that invoke WETH withdraw (0x2e1a7d4d) and SafeERC20 transfer (0xa9059cbb) and mutate the approved-contract mapping.","locations":["BYTECODE_BUNDLE.txt:5"]}]}
{
"codex": {
"ran_at": "2025-12-30T13:57:51.069282+00:00",
"returncode": 0
},
"summary": "Identified a centralization/access-control risk: a hardcoded liquidity manager address can move assets and approve other contracts; no other concrete bytecode-level issues found.",
"raw_final": {
"summary": "Identified a centralization/access-control risk: a hardcoded liquidity manager address can move assets and approve other contracts; no other concrete bytecode-level issues found.",
"findings": [
{
"title": "Hardcoded liquidity manager can arbitrarily move assets and grant withdrawal rights",
"category": "access_control",
"evidence": "Runtime bytecode contains a constant manager address (0xe31727817a0057de56fcb01f4913c9393c52c58c) compared against CALLER with error string \u201cYou are not the Liquidity Manager,\u201d followed by code paths that invoke WETH withdraw (0x2e1a7d4d) and SafeERC20 transfer (0xa9059cbb) and mutate the approved-contract mapping.",
"severity": "info",
"locations": [
"BYTECODE_BUNDLE.txt:5"
],
"recommendation": "If this is not strictly intended, store the manager in storage with a secure update mechanism (e.g., timelocked multisig) and minimize or remove broad withdrawal approvals; otherwise document the trust assumptions explicitly.",
"exploit_scenario": "If the hardcoded manager address is compromised (or acts maliciously), it can call manager-gated functions to withdraw WETH/ETH and transfer any ERC20 held by the contract, and can approve additional contracts that then gain withdrawal capabilities, leading to complete asset drain."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00cb 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x98c6c322 00000019: GT 0000001a: PUSH2 0x0074 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xd0e30db0 00000024: GT 00000025: PUSH2 0x004e 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd0e30db0 0000002f: EQ 00000030: PUSH2 0x02ab 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xec700c73 0000003a: EQ 0000003b: PUSH2 0x02b3 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xeed55403 00000045: EQ 00000046: PUSH2 0x02d3 00000049: JUMPI 0000004a: PUSH1 0x00 0000004c: DUP1 0000004d: REVERT 0000004e: JUMPDEST 0000004f: DUP1 00000050: PUSH4 0x98c6c322 00000055: EQ 00000056: PUSH2 0x0237 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0x9cf34204 00000060: EQ 00000061: PUSH2 0x026b 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0xa201ccf6 0000006b: EQ 0000006c: PUSH2 0x028b 0000006f: JUMPI 00000070: PUSH1 0x00 00000072: DUP1 00000073: REVERT 00000074: JUMPDEST 00000075: DUP1 00000076: PUSH4 0x5b3297f1 0000007b: GT 0000007c: PUSH2 0x00a5 0000007f: JUMPI 00000080: DUP1 00000081: PUSH4 0x5b3297f1 00000086: EQ 00000087: PUSH2 0x018a 0000008a: JUMPI 0000008b: DUP1 0000008c: PUSH4 0x626173ca 00000091: EQ 00000092: PUSH2 0x01e3 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0x72dfe489 0000009c: EQ 0000009d: PUSH2 0x0203 000000a0: JUMPI 000000a1: PUSH1 0x00 000000a3: DUP1 000000a4: REVERT 000000a5: JUMPDEST 000000a6: DUP1 000000a7: PUSH4 0x27d853f7 000000ac: EQ 000000ad: PUSH2 0x00df 000000b0: JUMPI 000000b1: DUP1 000000b2: PUSH4 0x471947a9 000000b7: EQ 000000b8: PUSH2 0x00ff 000000bb: JUMPI 000000bc: DUP1 000000bd: PUSH4 0x522088e1 000000c2: EQ 000000c3: PUSH2 0x0144 000000c6: JUMPI 000000c7: PUSH1 0x00 000000c9: DUP1 000000ca: REVERT 000000cb: JUMPDEST 000000cc: CALLDATASIZE 000000cd: PUSH2 0x00da 000000d0: JUMPI 000000d1: PUSH2 0x00d8 000000d4: PUSH2 0x02f3 000000d7: JUMP 000000d8: JUMPDEST 000000d9: STOP 000000da: JUMPDEST 000000db: PUSH1 0x00 000000dd: DUP1 000000de: REVERT 000000df: JUMPDEST 000000e0: CALLVALUE 000000e1: DUP1 000000e2: ISZERO 000000e3: PUSH2 0x00eb 000000e6: JUMPI 000000e7: PUSH1 0x00 000000e9: DUP1 000000ea: REVERT 000000eb: JUMPDEST 000000ec: POP 000000ed: PUSH2 0x00d8 000000f0: PUSH2 0x00fa 000000f3: CALLDATASIZE 000000f4: PUSH1 0x04 000000f6: PUSH2 0x0f81 000000f9: JUMP 000000fa: JUMPDEST 000000fb: PUSH2 0x03b4 000000fe: JUMP 000000ff: JUMPDEST 00000100: CALLVALUE 00000101: DUP1 00000102: ISZERO 00000103: PUSH2 0x010b 00000106: JUMPI 00000107: PUSH1 0x00 00000109: DUP1 0000010a: REVERT 0000010b: JUMPDEST 0000010c: POP 0000010d: PUSH2 0x012f 00000110: PUSH2 0x011a 00000113: CALLDATASIZE 00000114: PUSH1 0x04 00000116: PUSH2 0x0f81 00000119: JUMP 0000011a: JUMPDEST 0000011b: PUSH1 0x00 0000011d: PUSH1 0x20 0000011f: DUP2 00000120: SWAP1 00000121: MSTORE 00000122: SWAP1 00000123: DUP2 00000124: MSTORE 00000125: PUSH1 0x40 00000127: SWAP1 00000128: KECCAK256 00000129: SLOAD 0000012a: PUSH1 0xff 0000012c: AND 0000012d: DUP2 0000012e: JUMP 0000012f: JUMPDEST 00000130: PUSH1 0x40 00000132: MLOAD 00000133: SWAP1 00000134: ISZERO 00000135: ISZERO 00000136: DUP2 00000137: MSTORE 00000138: PUSH1 0x20 0000013a: ADD 0000013b: JUMPDEST 0000013c: PUSH1 0x40 0000013e: MLOAD 0000013f: DUP1 00000140: SWAP2 00000141: SUB 00000142: SWAP1 00000143: RETURN 00000144: JUMPDEST 00000145: CALLVALUE 00000146: DUP1 00000147: ISZERO 00000148: PUSH2 0x0150 0000014b: JUMPI 0000014c: PUSH1 0x00 0000014e: DUP1 0000014f: REVERT 00000150: JUMPDEST 00000151: POP 00000152: PUSH2 0x012f 00000155: PUSH2 0x015f 00000158: CALLDATASIZE 00000159: PUSH1 0x04 0000015b: PUSH2 0x0f81 0000015e: JUMP 0000015f: JUMPDEST 00000160: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000175: AND 00000176: PUSH1 0x00 00000178: SWAP1 00000179: DUP2 0000017a: MSTORE 0000017b: PUSH1 0x20 0000017d: DUP2 0000017e: SWAP1 0000017f: MSTORE 00000180: PUSH1 0x40 00000182: SWAP1 00000183: KECCAK256 00000184: SLOAD 00000185: PUSH1 0xff 00000187: AND 00000188: SWAP1 00000189: JUMP 0000018a: JUMPDEST 0000018b: CALLVALUE 0000018c: DUP1 0000018d: ISZERO 0000018e: PUSH2 0x0196 00000191: JUMPI 00000192: PUSH1 0x00 00000194: DUP1 00000195: REVERT 00000196: JUMPDEST 00000197: POP 00000198: PUSH2 0x01be 0000019b: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 000001bc: DUP2 000001bd: JUMP 000001be: JUMPDEST 000001bf: PUSH1 0x40 000001c1: MLOAD 000001c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001d7: SWAP1 000001d8: SWAP2 000001d9: AND 000001da: DUP2 000001db: MSTORE 000001dc: PUSH1 0x20 000001de: ADD 000001df: PUSH2 0x013b 000001e2: JUMP 000001e3: JUMPDEST 000001e4: CALLVALUE 000001e5: DUP1 000001e6: ISZERO 000001e7: PUSH2 0x01ef 000001ea: JUMPI 000001eb: PUSH1 0x00 000001ed: DUP1 000001ee: REVERT 000001ef: JUMPDEST 000001f0: POP 000001f1: PUSH2 0x00d8 000001f4: PUSH2 0x01fe 000001f7: CALLDATASIZE 000001f8: PUSH1 0x04 000001fa: PUSH2 0x0fa5 000001fd: JUMP 000001fe: JUMPDEST 000001ff: PUSH2 0x04ca 00000202: JUMP 00000203: JUMPDEST 00000204: CALLVALUE 00000205: DUP1 00000206: ISZERO 00000207: PUSH2 0x020f 0000020a: JUMPI 0000020b: PUSH1 0x00 0000020d: DUP1 0000020e: REVERT 0000020f: JUMPDEST 00000210: POP 00000211: PUSH2 0x01be 00000214: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 00000235: DUP2 00000236: JUMP 00000237: JUMPDEST 00000238: CALLVALUE 00000239: DUP1 0000023a: ISZERO 0000023b: PUSH2 0x0243 0000023e: JUMPI 0000023f: PUSH1 0x00 00000241: DUP1 00000242: REVERT 00000243: JUMPDEST 00000244: POP 00000245: PUSH2 0x01be 00000248: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000269: DUP2 0000026a: JUMP 0000026b: JUMPDEST 0000026c: CALLVALUE 0000026d: DUP1 0000026e: ISZERO 0000026f: PUSH2 0x0277 00000272: JUMPI 00000273: PUSH1 0x00 00000275: DUP1 00000276: REVERT 00000277: JUMPDEST 00000278: POP 00000279: PUSH2 0x00d8 0000027c: PUSH2 0x0286 0000027f: CALLDATASIZE 00000280: PUSH1 0x04 00000282: PUSH2 0x0fd1 00000285: JUMP 00000286: JUMPDEST 00000287: PUSH2 0x06ab 0000028a: JUMP 0000028b: JUMPDEST 0000028c: CALLVALUE 0000028d: DUP1 0000028e: ISZERO 0000028f: PUSH2 0x0297 00000292: JUMPI 00000293: PUSH1 0x00 00000295: DUP1 00000296: REVERT 00000297: JUMPDEST 00000298: POP 00000299: PUSH2 0x00d8 0000029c: PUSH2 0x02a6 0000029f: CALLDATASIZE 000002a0: PUSH1 0x04 000002a2: PUSH2 0x0fa5 000002a5: JUMP 000002a6: JUMPDEST 000002a7: PUSH2 0x0924 000002aa: JUMP 000002ab: JUMPDEST 000002ac: PUSH2 0x00d8 000002af: PUSH2 0x02f3 000002b2: JUMP 000002b3: JUMPDEST 000002b4: CALLVALUE 000002b5: DUP1 000002b6: ISZERO 000002b7: PUSH2 0x02bf 000002ba: JUMPI 000002bb: PUSH1 0x00 000002bd: DUP1 000002be: REVERT 000002bf: JUMPDEST 000002c0: POP 000002c1: PUSH2 0x00d8 000002c4: PUSH2 0x02ce 000002c7: CALLDATASIZE 000002c8: PUSH1 0x04 000002ca: PUSH2 0x0fea 000002cd: JUMP 000002ce: JUMPDEST 000002cf: PUSH2 0x0a2a 000002d2: JUMP 000002d3: JUMPDEST 000002d4: CALLVALUE 000002d5: DUP1 000002d6: ISZERO 000002d7: PUSH2 0x02df 000002da: JUMPI 000002db: PUSH1 0x00 000002dd: DUP1 000002de: REVERT 000002df: JUMPDEST 000002e0: POP 000002e1: PUSH2 0x00d8 000002e4: PUSH2 0x02ee 000002e7: CALLDATASIZE 000002e8: PUSH1 0x04 000002ea: PUSH2 0x0f81 000002ed: JUMP 000002ee: JUMPDEST 000002ef: PUSH2 0x0ac4 000002f2: JUMP 000002f3: JUMPDEST 000002f4: CALLER 000002f5: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000316: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000032b: AND 0000032c: EQ 0000032d: PUSH2 0x03b2 00000330: JUMPI 00000331: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000352: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000367: AND 00000368: PUSH4 0xd0e30db0 0000036d: CALLVALUE 0000036e: PUSH1 0x40 00000370: MLOAD 00000371: DUP3 00000372: PUSH4 0xffffffff 00000377: AND 00000378: PUSH1 0xe0 0000037a: SHL 0000037b: DUP2 0000037c: MSTORE 0000037d: PUSH1 0x04 0000037f: ADD 00000380: PUSH1 0x00 00000382: PUSH1 0x40 00000384: MLOAD 00000385: DUP1 00000386: DUP4 00000387: SUB 00000388: DUP2 00000389: DUP6 0000038a: DUP9 0000038b: DUP1 0000038c: EXTCODESIZE 0000038d: ISZERO 0000038e: DUP1 0000038f: ISZERO 00000390: PUSH2 0x0398 00000393: JUMPI 00000394: PUSH1 0x00 00000396: DUP1 00000397: REVERT 00000398: JUMPDEST 00000399: POP 0000039a: GAS 0000039b: CALL 0000039c: ISZERO 0000039d: DUP1 0000039e: ISZERO 0000039f: PUSH2 0x03ac 000003a2: JUMPI 000003a3: RETURNDATASIZE 000003a4: PUSH1 0x00 000003a6: DUP1 000003a7: RETURNDATACOPY 000003a8: RETURNDATASIZE 000003a9: PUSH1 0x00 000003ab: REVERT 000003ac: JUMPDEST 000003ad: POP 000003ae: POP 000003af: POP 000003b0: POP 000003b1: POP 000003b2: JUMPDEST 000003b3: JUMP 000003b4: JUMPDEST 000003b5: CALLER 000003b6: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 000003d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003ec: AND 000003ed: EQ 000003ee: PUSH2 0x047e 000003f1: JUMPI 000003f2: PUSH1 0x40 000003f4: MLOAD 000003f5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000416: DUP2 00000417: MSTORE 00000418: PUSH1 0x20 0000041a: PUSH1 0x04 0000041c: DUP3 0000041d: ADD 0000041e: MSTORE 0000041f: PUSH1 0x21 00000421: PUSH1 0x24 00000423: DUP3 00000424: ADD 00000425: MSTORE 00000426: PUSH32 0x596f7520617265206e6f7420746865204c6971756964697479204d616e616765 00000447: PUSH1 0x44 00000449: DUP3 0000044a: ADD 0000044b: MSTORE 0000044c: PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 0000046d: PUSH1 0x64 0000046f: DUP3 00000470: ADD 00000471: MSTORE 00000472: PUSH1 0x84 00000474: ADD 00000475: JUMPDEST 00000476: PUSH1 0x40 00000478: MLOAD 00000479: DUP1 0000047a: SWAP2 0000047b: SUB 0000047c: SWAP1 0000047d: REVERT 0000047e: JUMPDEST 0000047f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000494: AND 00000495: PUSH1 0x00 00000497: SWAP1 00000498: DUP2 00000499: MSTORE 0000049a: PUSH1 0x20 0000049c: DUP2 0000049d: SWAP1 0000049e: MSTORE 0000049f: PUSH1 0x40 000004a1: SWAP1 000004a2: KECCAK256 000004a3: DUP1 000004a4: SLOAD 000004a5: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000004c6: AND 000004c7: SWAP1 000004c8: SSTORE 000004c9: JUMP 000004ca: JUMPDEST 000004cb: CALLER 000004cc: PUSH1 0x00 000004ce: SWAP1 000004cf: DUP2 000004d0: MSTORE 000004d1: PUSH1 0x20 000004d3: DUP2 000004d4: SWAP1 000004d5: MSTORE 000004d6: PUSH1 0x40 000004d8: SWAP1 000004d9: KECCAK256 000004da: SLOAD 000004db: PUSH1 0xff 000004dd: AND 000004de: PUSH2 0x0543 000004e1: JUMPI 000004e2: PUSH1 0x40 000004e4: MLOAD 000004e5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000506: DUP2 00000507: MSTORE 00000508: PUSH1 0x20 0000050a: PUSH1 0x04 0000050c: DUP3 0000050d: ADD 0000050e: DUP2 0000050f: SWAP1 00000510: MSTORE 00000511: PUSH1 0x24 00000513: DUP3 00000514: ADD 00000515: MSTORE 00000516: PUSH32 0x596f7520617265206e6f7420616e20617070726f76656420636f6e7472616374 00000537: PUSH1 0x44 00000539: DUP3 0000053a: ADD 0000053b: MSTORE 0000053c: PUSH1 0x64 0000053e: ADD 0000053f: PUSH2 0x0475 00000542: JUMP 00000543: JUMPDEST 00000544: PUSH1 0x40 00000546: MLOAD 00000547: PUSH32 0x2e1a7d4d00000000000000000000000000000000000000000000000000000000 00000568: DUP2 00000569: MSTORE 0000056a: PUSH1 0x04 0000056c: DUP2 0000056d: ADD 0000056e: DUP3 0000056f: SWAP1 00000570: MSTORE 00000571: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000592: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005a7: AND 000005a8: SWAP1 000005a9: PUSH4 0x2e1a7d4d 000005ae: SWAP1 000005af: PUSH1 0x24 000005b1: ADD 000005b2: PUSH1 0x00 000005b4: PUSH1 0x40 000005b6: MLOAD 000005b7: DUP1 000005b8: DUP4 000005b9: SUB 000005ba: DUP2 000005bb: PUSH1 0x00 000005bd: DUP8 000005be: DUP1 000005bf: EXTCODESIZE 000005c0: ISZERO 000005c1: DUP1 000005c2: ISZERO 000005c3: PUSH2 0x05cb 000005c6: JUMPI 000005c7: PUSH1 0x00 000005c9: DUP1 000005ca: REVERT 000005cb: JUMPDEST 000005cc: POP 000005cd: GAS 000005ce: CALL 000005cf: ISZERO 000005d0: DUP1 000005d1: ISZERO 000005d2: PUSH2 0x05df 000005d5: JUMPI 000005d6: RETURNDATASIZE 000005d7: PUSH1 0x00 000005d9: DUP1 000005da: RETURNDATACOPY 000005db: RETURNDATASIZE 000005dc: PUSH1 0x00 000005de: REVERT 000005df: JUMPDEST 000005e0: POP 000005e1: POP 000005e2: PUSH1 0x40 000005e4: MLOAD 000005e5: PUSH1 0x00 000005e7: SWAP3 000005e8: POP 000005e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005fe: DUP6 000005ff: AND 00000600: SWAP2 00000601: POP 00000602: DUP4 00000603: ISZERO 00000604: PUSH2 0x08fc 00000607: MUL 00000608: SWAP1 00000609: DUP5 0000060a: SWAP1 0000060b: DUP5 0000060c: DUP2 0000060d: DUP2 0000060e: DUP2 0000060f: DUP6 00000610: DUP9 00000611: DUP9 00000612: CALL 00000613: SWAP4 00000614: POP 00000615: POP 00000616: POP 00000617: POP 00000618: SWAP1 00000619: POP 0000061a: DUP1 0000061b: PUSH2 0x06a6 0000061e: JUMPI 0000061f: PUSH1 0x40 00000621: MLOAD 00000622: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000643: DUP2 00000644: MSTORE 00000645: PUSH1 0x20 00000647: PUSH1 0x04 00000649: DUP3 0000064a: ADD 0000064b: MSTORE 0000064c: PUSH1 0x21 0000064e: PUSH1 0x24 00000650: DUP3 00000651: ADD 00000652: MSTORE 00000653: PUSH32 0x5472616e7366657272696e67206d6f6e657920746f2075736572206661696c65 00000674: PUSH1 0x44 00000676: DUP3 00000677: ADD 00000678: MSTORE 00000679: PUSH32 0x6400000000000000000000000000000000000000000000000000000000000000 0000069a: PUSH1 0x64 0000069c: DUP3 0000069d: ADD 0000069e: MSTORE 0000069f: PUSH1 0x84 000006a1: ADD 000006a2: PUSH2 0x0475 000006a5: JUMP 000006a6: JUMPDEST 000006a7: POP 000006a8: POP 000006a9: POP 000006aa: JUMP 000006ab: JUMPDEST 000006ac: CALLER 000006ad: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 000006ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006e3: AND 000006e4: EQ 000006e5: PUSH2 0x0770 000006e8: JUMPI 000006e9: PUSH1 0x40 000006eb: MLOAD 000006ec: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000070d: DUP2 0000070e: MSTORE 0000070f: PUSH1 0x20 00000711: PUSH1 0x04 00000713: DUP3 00000714: ADD 00000715: MSTORE 00000716: PUSH1 0x21 00000718: PUSH1 0x24 0000071a: DUP3 0000071b: ADD 0000071c: MSTORE 0000071d: PUSH32 0x596f7520617265206e6f7420746865204c6971756964697479204d616e616765 0000073e: PUSH1 0x44 00000740: DUP3 00000741: ADD 00000742: MSTORE 00000743: PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 00000764: PUSH1 0x64 00000766: DUP3 00000767: ADD 00000768: MSTORE 00000769: PUSH1 0x84 0000076b: ADD 0000076c: PUSH2 0x0475 0000076f: JUMP 00000770: JUMPDEST 00000771: PUSH1 0x40 00000773: MLOAD 00000774: PUSH32 0x2e1a7d4d00000000000000000000000000000000000000000000000000000000 00000795: DUP2 00000796: MSTORE 00000797: PUSH1 0x04 00000799: DUP2 0000079a: ADD 0000079b: DUP3 0000079c: SWAP1 0000079d: MSTORE 0000079e: PUSH32 0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 000007bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007d4: AND 000007d5: SWAP1 000007d6: PUSH4 0x2e1a7d4d 000007db: SWAP1 000007dc: PUSH1 0x24 000007de: ADD 000007df: PUSH1 0x00 000007e1: PUSH1 0x40 000007e3: MLOAD 000007e4: DUP1 000007e5: DUP4 000007e6: SUB 000007e7: DUP2 000007e8: PUSH1 0x00 000007ea: DUP8 000007eb: DUP1 000007ec: EXTCODESIZE 000007ed: ISZERO 000007ee: DUP1 000007ef: ISZERO 000007f0: PUSH2 0x07f8 000007f3: JUMPI 000007f4: PUSH1 0x00 000007f6: DUP1 000007f7: REVERT 000007f8: JUMPDEST 000007f9: POP 000007fa: GAS 000007fb: CALL 000007fc: ISZERO 000007fd: DUP1 000007fe: ISZERO 000007ff: PUSH2 0x080c 00000802: JUMPI 00000803: RETURNDATASIZE 00000804: PUSH1 0x00 00000806: DUP1 00000807: RETURNDATACOPY 00000808: RETURNDATASIZE 00000809: PUSH1 0x00 0000080b: REVERT 0000080c: JUMPDEST 0000080d: POP 0000080e: POP 0000080f: POP 00000810: POP 00000811: PUSH1 0x00 00000813: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 00000834: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000849: AND 0000084a: DUP3 0000084b: PUSH1 0x40 0000084d: MLOAD 0000084e: PUSH1 0x00 00000850: PUSH1 0x40 00000852: MLOAD 00000853: DUP1 00000854: DUP4 00000855: SUB 00000856: DUP2 00000857: DUP6 00000858: DUP8 00000859: GAS 0000085a: CALL 0000085b: SWAP3 0000085c: POP 0000085d: POP 0000085e: POP 0000085f: RETURNDATASIZE 00000860: DUP1 00000861: PUSH1 0x00 00000863: DUP2 00000864: EQ 00000865: PUSH2 0x088a 00000868: JUMPI 00000869: PUSH1 0x40 0000086b: MLOAD 0000086c: SWAP2 0000086d: POP 0000086e: PUSH1 0x1f 00000870: NOT 00000871: PUSH1 0x3f 00000873: RETURNDATASIZE 00000874: ADD 00000875: AND 00000876: DUP3 00000877: ADD 00000878: PUSH1 0x40 0000087a: MSTORE 0000087b: RETURNDATASIZE 0000087c: DUP3 0000087d: MSTORE 0000087e: RETURNDATASIZE 0000087f: PUSH1 0x00 00000881: PUSH1 0x20 00000883: DUP5 00000884: ADD 00000885: RETURNDATACOPY 00000886: PUSH2 0x088f 00000889: JUMP 0000088a: JUMPDEST 0000088b: PUSH1 0x60 0000088d: SWAP2 0000088e: POP 0000088f: JUMPDEST 00000890: POP 00000891: POP 00000892: SWAP1 00000893: POP 00000894: DUP1 00000895: PUSH2 0x0920 00000898: JUMPI 00000899: PUSH1 0x40 0000089b: MLOAD 0000089c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000008bd: DUP2 000008be: MSTORE 000008bf: PUSH1 0x20 000008c1: PUSH1 0x04 000008c3: DUP3 000008c4: ADD 000008c5: MSTORE 000008c6: PUSH1 0x2d 000008c8: PUSH1 0x24 000008ca: DUP3 000008cb: ADD 000008cc: MSTORE 000008cd: PUSH32 0x5472616e7366657272696e6720657468206c6971756964697479206f7574206f 000008ee: PUSH1 0x44 000008f0: DUP3 000008f1: ADD 000008f2: MSTORE 000008f3: PUSH32 0x6620706f6f6c206661696c656400000000000000000000000000000000000000 00000914: PUSH1 0x64 00000916: DUP3 00000917: ADD 00000918: MSTORE 00000919: PUSH1 0x84 0000091b: ADD 0000091c: PUSH2 0x0475 0000091f: JUMP 00000920: JUMPDEST 00000921: POP 00000922: POP 00000923: JUMP 00000924: JUMPDEST 00000925: CALLER 00000926: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 00000947: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000095c: AND 0000095d: EQ 0000095e: PUSH2 0x09e9 00000961: JUMPI 00000962: PUSH1 0x40 00000964: MLOAD 00000965: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000986: DUP2 00000987: MSTORE 00000988: PUSH1 0x20 0000098a: PUSH1 0x04 0000098c: DUP3 0000098d: ADD 0000098e: MSTORE 0000098f: PUSH1 0x21 00000991: PUSH1 0x24 00000993: DUP3 00000994: ADD 00000995: MSTORE 00000996: PUSH32 0x596f7520617265206e6f7420746865204c6971756964697479204d616e616765 000009b7: PUSH1 0x44 000009b9: DUP3 000009ba: ADD 000009bb: MSTORE 000009bc: PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 000009dd: PUSH1 0x64 000009df: DUP3 000009e0: ADD 000009e1: MSTORE 000009e2: PUSH1 0x84 000009e4: ADD 000009e5: PUSH2 0x0475 000009e8: JUMP 000009e9: JUMPDEST 000009ea: PUSH2 0x0920 000009ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a02: DUP4 00000a03: AND 00000a04: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 00000a25: DUP4 00000a26: PUSH2 0x0bd8 00000a29: JUMP 00000a2a: JUMPDEST 00000a2b: CALLER 00000a2c: PUSH1 0x00 00000a2e: SWAP1 00000a2f: DUP2 00000a30: MSTORE 00000a31: PUSH1 0x20 00000a33: DUP2 00000a34: SWAP1 00000a35: MSTORE 00000a36: PUSH1 0x40 00000a38: SWAP1 00000a39: KECCAK256 00000a3a: SLOAD 00000a3b: PUSH1 0xff 00000a3d: AND 00000a3e: PUSH2 0x0aa3 00000a41: JUMPI 00000a42: PUSH1 0x40 00000a44: MLOAD 00000a45: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a66: DUP2 00000a67: MSTORE 00000a68: PUSH1 0x20 00000a6a: PUSH1 0x04 00000a6c: DUP3 00000a6d: ADD 00000a6e: DUP2 00000a6f: SWAP1 00000a70: MSTORE 00000a71: PUSH1 0x24 00000a73: DUP3 00000a74: ADD 00000a75: MSTORE 00000a76: PUSH32 0x596f7520617265206e6f7420616e20617070726f76656420636f6e7472616374 00000a97: PUSH1 0x44 00000a99: DUP3 00000a9a: ADD 00000a9b: MSTORE 00000a9c: PUSH1 0x64 00000a9e: ADD 00000a9f: PUSH2 0x0475 00000aa2: JUMP 00000aa3: JUMPDEST 00000aa4: PUSH2 0x06a6 00000aa7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000abc: DUP5 00000abd: AND 00000abe: DUP4 00000abf: DUP4 00000ac0: PUSH2 0x0bd8 00000ac3: JUMP 00000ac4: JUMPDEST 00000ac5: CALLER 00000ac6: PUSH32 0x000000000000000000000000e31727817a0057de56fcb01f4913c9393c52c58c 00000ae7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000afc: AND 00000afd: EQ 00000afe: PUSH2 0x0b89 00000b01: JUMPI 00000b02: PUSH1 0x40 00000b04: MLOAD 00000b05: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b26: DUP2 00000b27: MSTORE 00000b28: PUSH1 0x20 00000b2a: PUSH1 0x04 00000b2c: DUP3 00000b2d: ADD 00000b2e: MSTORE 00000b2f: PUSH1 0x21 00000b31: PUSH1 0x24 00000b33: DUP3 00000b34: ADD 00000b35: MSTORE 00000b36: PUSH32 0x596f7520617265206e6f7420746865204c6971756964697479204d616e616765 00000b57: PUSH1 0x44 00000b59: DUP3 00000b5a: ADD 00000b5b: MSTORE 00000b5c: PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 00000b7d: PUSH1 0x64 00000b7f: DUP3 00000b80: ADD 00000b81: MSTORE 00000b82: PUSH1 0x84 00000b84: ADD 00000b85: PUSH2 0x0475 00000b88: JUMP 00000b89: JUMPDEST 00000b8a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b9f: AND 00000ba0: PUSH1 0x00 00000ba2: SWAP1 00000ba3: DUP2 00000ba4: MSTORE 00000ba5: PUSH1 0x20 00000ba7: DUP2 00000ba8: SWAP1 00000ba9: MSTORE 00000baa: PUSH1 0x40 00000bac: SWAP1 00000bad: KECCAK256 00000bae: DUP1 00000baf: SLOAD 00000bb0: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000bd1: AND 00000bd2: PUSH1 0x01 00000bd4: OR 00000bd5: SWAP1 00000bd6: SSTORE 00000bd7: JUMP 00000bd8: JUMPDEST 00000bd9: PUSH1 0x40 00000bdb: DUP1 00000bdc: MLOAD 00000bdd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bf2: DUP5 00000bf3: DUP2 00000bf4: AND 00000bf5: PUSH1 0x24 00000bf7: DUP4 00000bf8: ADD 00000bf9: MSTORE 00000bfa: PUSH1 0x44 00000bfc: DUP1 00000bfd: DUP4 00000bfe: ADD 00000bff: DUP6 00000c00: SWAP1 00000c01: MSTORE 00000c02: DUP4 00000c03: MLOAD 00000c04: DUP1 00000c05: DUP5 00000c06: SUB 00000c07: SWAP1 00000c08: SWAP2 00000c09: ADD 00000c0a: DUP2 00000c0b: MSTORE 00000c0c: PUSH1 0x64 00000c0e: SWAP1 00000c0f: SWAP3 00000c10: ADD 00000c11: DUP4 00000c12: MSTORE 00000c13: PUSH1 0x20 00000c15: DUP1 00000c16: DUP4 00000c17: ADD 00000c18: DUP1 00000c19: MLOAD 00000c1a: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000c37: AND 00000c38: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00000c59: OR 00000c5a: SWAP1 00000c5b: MSTORE 00000c5c: DUP4 00000c5d: MLOAD 00000c5e: DUP1 00000c5f: DUP6 00000c60: ADD 00000c61: SWAP1 00000c62: SWAP5 00000c63: MSTORE 00000c64: DUP1 00000c65: DUP5 00000c66: MSTORE 00000c67: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00000c88: SWAP1 00000c89: DUP5 00000c8a: ADD 00000c8b: MSTORE 00000c8c: PUSH2 0x06a6 00000c8f: SWAP3 00000c90: DUP7 00000c91: SWAP3 00000c92: SWAP2 00000c93: PUSH1 0x00 00000c95: SWAP2 00000c96: PUSH2 0x0ca3 00000c99: SWAP2 00000c9a: DUP6 00000c9b: AND 00000c9c: SWAP1 00000c9d: DUP5 00000c9e: SWAP1 00000c9f: PUSH2 0x0d4d 00000ca2: JUMP 00000ca3: JUMPDEST 00000ca4: DUP1 00000ca5: MLOAD 00000ca6: SWAP1 00000ca7: SWAP2 00000ca8: POP 00000ca9: ISZERO 00000caa: PUSH2 0x06a6 00000cad: JUMPI 00000cae: DUP1 00000caf: DUP1 00000cb0: PUSH1 0x20 00000cb2: ADD 00000cb3: SWAP1 00000cb4: MLOAD 00000cb5: DUP2 00000cb6: ADD 00000cb7: SWAP1 00000cb8: PUSH2 0x0cc1 00000cbb: SWAP2 00000cbc: SWAP1 00000cbd: PUSH2 0x102b 00000cc0: JUMP 00000cc1: JUMPDEST 00000cc2: PUSH2 0x06a6 00000cc5: JUMPI 00000cc6: PUSH1 0x40 00000cc8: MLOAD 00000cc9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000cea: DUP2 00000ceb: MSTORE 00000cec: PUSH1 0x20 00000cee: PUSH1 0x04 00000cf0: DUP3 00000cf1: ADD 00000cf2: MSTORE 00000cf3: PUSH1 0x2a 00000cf5: PUSH1 0x24 00000cf7: DUP3 00000cf8: ADD 00000cf9: MSTORE 00000cfa: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00000d1b: PUSH1 0x44 00000d1d: DUP3 00000d1e: ADD 00000d1f: MSTORE 00000d20: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00000d41: PUSH1 0x64 00000d43: DUP3 00000d44: ADD 00000d45: MSTORE 00000d46: PUSH1 0x84 00000d48: ADD 00000d49: PUSH2 0x0475 00000d4c: JUMP 00000d4d: JUMPDEST 00000d4e: PUSH1 0x60 00000d50: PUSH2 0x0d5c 00000d53: DUP5 00000d54: DUP5 00000d55: PUSH1 0x00 00000d57: DUP6 00000d58: PUSH2 0x0d64 00000d5b: JUMP 00000d5c: JUMPDEST 00000d5d: SWAP5 00000d5e: SWAP4 00000d5f: POP 00000d60: POP 00000d61: POP 00000d62: POP 00000d63: JUMP 00000d64: JUMPDEST 00000d65: PUSH1 0x60 00000d67: DUP3 00000d68: SELFBALANCE 00000d69: LT 00000d6a: ISZERO 00000d6b: PUSH2 0x0df6 00000d6e: JUMPI 00000d6f: PUSH1 0x40 00000d71: MLOAD 00000d72: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000d93: DUP2 00000d94: MSTORE 00000d95: PUSH1 0x20 00000d97: PUSH1 0x04 00000d99: DUP3 00000d9a: ADD 00000d9b: MSTORE 00000d9c: PUSH1 0x26 00000d9e: PUSH1 0x24 00000da0: DUP3 00000da1: ADD 00000da2: MSTORE 00000da3: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00000dc4: PUSH1 0x44 00000dc6: DUP3 00000dc7: ADD 00000dc8: MSTORE 00000dc9: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 00000dea: PUSH1 0x64 00000dec: DUP3 00000ded: ADD 00000dee: MSTORE 00000def: PUSH1 0x84 00000df1: ADD 00000df2: PUSH2 0x0475 00000df5: JUMP 00000df6: JUMPDEST 00000df7: PUSH1 0x00 00000df9: DUP1 00000dfa: DUP7 00000dfb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e10: AND 00000e11: DUP6 00000e12: DUP8 00000e13: PUSH1 0x40 00000e15: MLOAD 00000e16: PUSH2 0x0e1f 00000e19: SWAP2 00000e1a: SWAP1 00000e1b: PUSH2 0x1071 00000e1e: JUMP 00000e1f: JUMPDEST 00000e20: PUSH1 0x00 00000e22: PUSH1 0x40 00000e24: MLOAD 00000e25: DUP1 00000e26: DUP4 00000e27: SUB 00000e28: DUP2 00000e29: DUP6 00000e2a: DUP8 00000e2b: GAS 00000e2c: CALL 00000e2d: SWAP3 00000e2e: POP 00000e2f: POP 00000e30: POP 00000e31: RETURNDATASIZE 00000e32: DUP1 00000e33: PUSH1 0x00 00000e35: DUP2 00000e36: EQ 00000e37: PUSH2 0x0e5c 00000e3a: JUMPI 00000e3b: PUSH1 0x40 00000e3d: MLOAD 00000e3e: SWAP2 00000e3f: POP 00000e40: PUSH1 0x1f 00000e42: NOT 00000e43: PUSH1 0x3f 00000e45: RETURNDATASIZE 00000e46: ADD 00000e47: AND 00000e48: DUP3 00000e49: ADD 00000e4a: PUSH1 0x40 00000e4c: MSTORE 00000e4d: RETURNDATASIZE 00000e4e: DUP3 00000e4f: MSTORE 00000e50: RETURNDATASIZE 00000e51: PUSH1 0x00 00000e53: PUSH1 0x20 00000e55: DUP5 00000e56: ADD 00000e57: RETURNDATACOPY 00000e58: PUSH2 0x0e61 00000e5b: JUMP 00000e5c: JUMPDEST 00000e5d: PUSH1 0x60 00000e5f: SWAP2 00000e60: POP 00000e61: JUMPDEST 00000e62: POP 00000e63: SWAP2 00000e64: POP 00000e65: SWAP2 00000e66: POP 00000e67: PUSH2 0x0e72 00000e6a: DUP8 00000e6b: DUP4 00000e6c: DUP4 00000e6d: DUP8 00000e6e: PUSH2 0x0e7d 00000e71: JUMP 00000e72: JUMPDEST 00000e73: SWAP8 00000e74: SWAP7 00000e75: POP 00000e76: POP 00000e77: POP 00000e78: POP 00000e79: POP 00000e7a: POP 00000e7b: POP 00000e7c: JUMP 00000e7d: JUMPDEST 00000e7e: PUSH1 0x60 00000e80: DUP4 00000e81: ISZERO 00000e82: PUSH2 0x0f13 00000e85: JUMPI 00000e86: DUP3 00000e87: MLOAD 00000e88: PUSH1 0x00 00000e8a: SUB 00000e8b: PUSH2 0x0f0c 00000e8e: JUMPI 00000e8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ea4: DUP6 00000ea5: AND 00000ea6: EXTCODESIZE 00000ea7: PUSH2 0x0f0c 00000eaa: JUMPI 00000eab: PUSH1 0x40 00000ead: MLOAD 00000eae: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ecf: DUP2 00000ed0: MSTORE 00000ed1: PUSH1 0x20 00000ed3: PUSH1 0x04 00000ed5: DUP3 00000ed6: ADD 00000ed7: MSTORE 00000ed8: PUSH1 0x1d 00000eda: PUSH1 0x24 00000edc: DUP3 00000edd: ADD 00000ede: MSTORE 00000edf: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00000f00: PUSH1 0x44 00000f02: DUP3 00000f03: ADD 00000f04: MSTORE 00000f05: PUSH1 0x64 00000f07: ADD 00000f08: PUSH2 0x0475 00000f0b: JUMP 00000f0c: JUMPDEST 00000f0d: POP 00000f0e: DUP2 00000f0f: PUSH2 0x0d5c 00000f12: JUMP 00000f13: JUMPDEST 00000f14: PUSH2 0x0d5c 00000f17: DUP4 00000f18: DUP4 00000f19: DUP2 00000f1a: MLOAD 00000f1b: ISZERO 00000f1c: PUSH2 0x0f28 00000f1f: JUMPI 00000f20: DUP2 00000f21: MLOAD 00000f22: DUP1 00000f23: DUP4 00000f24: PUSH1 0x20 00000f26: ADD 00000f27: REVERT 00000f28: JUMPDEST 00000f29: DUP1 00000f2a: PUSH1 0x40 00000f2c: MLOAD 00000f2d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f4e: DUP2 00000f4f: MSTORE 00000f50: PUSH1 0x04 00000f52: ADD 00000f53: PUSH2 0x0475 00000f56: SWAP2 00000f57: SWAP1 00000f58: PUSH2 0x108d 00000f5b: JUMP 00000f5c: JUMPDEST 00000f5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f72: DUP2 00000f73: AND 00000f74: DUP2 00000f75: EQ 00000f76: PUSH2 0x0f7e 00000f79: JUMPI 00000f7a: PUSH1 0x00 00000f7c: DUP1 00000f7d: REVERT 00000f7e: JUMPDEST 00000f7f: POP 00000f80: JUMP 00000f81: JUMPDEST 00000f82: PUSH1 0x00 00000f84: PUSH1 0x20 00000f86: DUP3 00000f87: DUP5 00000f88: SUB 00000f89: SLT 00000f8a: ISZERO 00000f8b: PUSH2 0x0f93 00000f8e: JUMPI 00000f8f: PUSH1 0x00 00000f91: DUP1 00000f92: REVERT 00000f93: JUMPDEST 00000f94: DUP2 00000f95: CALLDATALOAD 00000f96: PUSH2 0x0f9e 00000f99: DUP2 00000f9a: PUSH2 0x0f5c 00000f9d: JUMP 00000f9e: JUMPDEST 00000f9f: SWAP4 00000fa0: SWAP3 00000fa1: POP 00000fa2: POP 00000fa3: POP 00000fa4: JUMP 00000fa5: JUMPDEST 00000fa6: PUSH1 0x00 00000fa8: DUP1 00000fa9: PUSH1 0x40 00000fab: DUP4 00000fac: DUP6 00000fad: SUB 00000fae: SLT 00000faf: ISZERO 00000fb0: PUSH2 0x0fb8 00000fb3: JUMPI 00000fb4: PUSH1 0x00 00000fb6: DUP1 00000fb7: REVERT 00000fb8: JUMPDEST 00000fb9: DUP3 00000fba: CALLDATALOAD 00000fbb: PUSH2 0x0fc3 00000fbe: DUP2 00000fbf: PUSH2 0x0f5c 00000fc2: JUMP 00000fc3: JUMPDEST 00000fc4: SWAP5 00000fc5: PUSH1 0x20 00000fc7: SWAP4 00000fc8: SWAP1 00000fc9: SWAP4 00000fca: ADD 00000fcb: CALLDATALOAD 00000fcc: SWAP4 00000fcd: POP 00000fce: POP 00000fcf: POP 00000fd0: JUMP 00000fd1: JUMPDEST 00000fd2: PUSH1 0x00 00000fd4: PUSH1 0x20 00000fd6: DUP3 00000fd7: DUP5 00000fd8: SUB 00000fd9: SLT 00000fda: ISZERO 00000fdb: PUSH2 0x0fe3 00000fde: JUMPI 00000fdf: PUSH1 0x00 00000fe1: DUP1 00000fe2: REVERT 00000fe3: JUMPDEST 00000fe4: POP 00000fe5: CALLDATALOAD 00000fe6: SWAP2 00000fe7: SWAP1 00000fe8: POP 00000fe9: JUMP 00000fea: JUMPDEST 00000feb: PUSH1 0x00 00000fed: DUP1 00000fee: PUSH1 0x00 00000ff0: PUSH1 0x60 00000ff2: DUP5 00000ff3: DUP7 00000ff4: SUB 00000ff5: SLT 00000ff6: ISZERO 00000ff7: PUSH2 0x0fff 00000ffa: JUMPI 00000ffb: PUSH1 0x00 00000ffd: DUP1 00000ffe: REVERT 00000fff: JUMPDEST 00001000: DUP4 00001001: CALLDATALOAD 00001002: PUSH2 0x100a 00001005: DUP2 00001006: PUSH2 0x0f5c 00001009: JUMP 0000100a: JUMPDEST 0000100b: SWAP3 0000100c: POP 0000100d: PUSH1 0x20 0000100f: DUP5 00001010: ADD 00001011: CALLDATALOAD 00001012: PUSH2 0x101a 00001015: DUP2 00001016: PUSH2 0x0f5c 00001019: JUMP 0000101a: JUMPDEST 0000101b: SWAP3 0000101c: SWAP6 0000101d: SWAP3 0000101e: SWAP5 0000101f: POP 00001020: POP 00001021: POP 00001022: PUSH1 0x40 00001024: SWAP2 00001025: SWAP1 00001026: SWAP2 00001027: ADD 00001028: CALLDATALOAD 00001029: SWAP1 0000102a: JUMP 0000102b: JUMPDEST 0000102c: PUSH1 0x00 0000102e: PUSH1 0x20 00001030: DUP3 00001031: DUP5 00001032: SUB 00001033: SLT 00001034: ISZERO 00001035: PUSH2 0x103d 00001038: JUMPI 00001039: PUSH1 0x00 0000103b: DUP1 0000103c: REVERT 0000103d: JUMPDEST 0000103e: DUP2 0000103f: MLOAD 00001040: DUP1 00001041: ISZERO 00001042: ISZERO 00001043: DUP2 00001044: EQ 00001045: PUSH2 0x0f9e 00001048: JUMPI 00001049: PUSH1 0x00 0000104b: DUP1 0000104c: REVERT 0000104d: JUMPDEST 0000104e: PUSH1 0x00 00001050: JUMPDEST 00001051: DUP4 00001052: DUP2 00001053: LT 00001054: ISZERO 00001055: PUSH2 0x1068 00001058: JUMPI 00001059: DUP2 0000105a: DUP2 0000105b: ADD 0000105c: MLOAD 0000105d: DUP4 0000105e: DUP3 0000105f: ADD 00001060: MSTORE 00001061: PUSH1 0x20 00001063: ADD 00001064: PUSH2 0x1050 00001067: JUMP 00001068: JUMPDEST 00001069: POP 0000106a: POP 0000106b: PUSH1 0x00 0000106d: SWAP2 0000106e: ADD 0000106f: MSTORE 00001070: JUMP 00001071: JUMPDEST 00001072: PUSH1 0x00 00001074: DUP3 00001075: MLOAD 00001076: PUSH2 0x1083 00001079: DUP2 0000107a: DUP5 0000107b: PUSH1 0x20 0000107d: DUP8 0000107e: ADD 0000107f: PUSH2 0x104d 00001082: JUMP 00001083: JUMPDEST 00001084: SWAP2 00001085: SWAP1 00001086: SWAP2 00001087: ADD 00001088: SWAP3 00001089: SWAP2 0000108a: POP 0000108b: POP 0000108c: JUMP 0000108d: JUMPDEST 0000108e: PUSH1 0x20 00001090: DUP2 00001091: MSTORE 00001092: PUSH1 0x00 00001094: DUP3 00001095: MLOAD 00001096: DUP1 00001097: PUSH1 0x20 00001099: DUP5 0000109a: ADD 0000109b: MSTORE 0000109c: PUSH2 0x10ac 0000109f: DUP2 000010a0: PUSH1 0x40 000010a2: DUP6 000010a3: ADD 000010a4: PUSH1 0x20 000010a6: DUP8 000010a7: ADD 000010a8: PUSH2 0x104d 000010ab: JUMP 000010ac: JUMPDEST 000010ad: PUSH1 0x1f 000010af: ADD 000010b0: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 000010d1: AND 000010d2: SWAP2 000010d3: SWAP1 000010d4: SWAP2 000010d5: ADD 000010d6: PUSH1 0x40 000010d8: ADD 000010d9: SWAP3 000010da: SWAP2 000010db: POP 000010dc: POP 000010dd: JUMP 000010de: INVALID 000010df: LOG2 000010e0: PUSH5 0x6970667358 000010e6: UNKNOWN(0x22) 000010e7: SLT 000010e8: KECCAK256 000010e9: SIGNEXTEND 000010ea: EXTCODECOPY 000010eb: PUSH14 0xdf67f0d909f94590b0f543e36a89 000010fa: UNKNOWN(0xED) 000010fb: UNKNOWN(0xD4) 000010fc: UNKNOWN(0xA6) 000010fd: JUMPI 000010fe: RETURNDATACOPY 000010ff: UNKNOWN(0xB7) 00001100: STOP 00001101: EQ 00001102: SSTORE 00001103: UNKNOWN(0xBE) 00001104: AND 00001105: UNKNOWN(0x4E) 00001106: SWAP13 00001107: BALANCE 00001108: EXTCODESIZE 00001109: PUSH5 0x736f6c6343 0000110f: STOP 00001110: ADDMOD 00001111: SGT 00001112: STOP 00001113: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | yes | yes |
viewtrace_id: 0x47b13bf5752d15dfcceff9ffd8a8affa270ee3f1235e414163ed2c5de5b537a7
call_targets:
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2, 0xcad22983d6e9336cfa1a604a4aaee6a40485f911
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x47b13bf5752d15dfcceff9ffd8a8affa270ee3f1235e414163ed2c5de5b537a7",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"0xcad22983d6e9336cfa1a604a4aaee6a40485f911"
],
"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": "0xd0e30db0",
"selector": "0xd0e30db0",
"calldata_variants": [
"0xd0e30db0",
"0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec700c73",
"selector": "0xec700c73",
"calldata_variants": [
"0xec700c73",
"0xec700c730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeed55403",
"selector": "0xeed55403",
"calldata_variants": [
"0xeed55403",
"0xeed554030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x98c6c322",
"selector": "0x98c6c322",
"calldata_variants": [
"0x98c6c322",
"0x98c6c3220000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9cf34204",
"selector": "0x9cf34204",
"calldata_variants": [
"0x9cf34204",
"0x9cf342040000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa201ccf6",
"selector": "0xa201ccf6",
"calldata_variants": [
"0xa201ccf6",
"0xa201ccf60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5b3297f1",
"selector": "0x5b3297f1",
"calldata_variants": [
"0x5b3297f1",
"0x5b3297f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x626173ca",
"selector": "0x626173ca",
"calldata_variants": [
"0x626173ca",
"0x626173ca0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 923,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1486,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1554,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 6,
"guards_detected": [
{
"pc": 756,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 949,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1708,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2341,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2757,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 6
}
|
| medium | other | detector | ETH value transfer possible | 40 | yes | yes |
viewtrace_id: 0x47b13bf5752d15dfcceff9ffd8a8affa270ee3f1235e414163ed2c5de5b537a7
call_targets:
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2, 0xcad22983d6e9336cfa1a604a4aaee6a40485f911
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x47b13bf5752d15dfcceff9ffd8a8affa270ee3f1235e414163ed2c5de5b537a7",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"0xcad22983d6e9336cfa1a604a4aaee6a40485f911"
],
"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": "0xd0e30db0",
"selector": "0xd0e30db0",
"calldata_variants": [
"0xd0e30db0",
"0xd0e30db00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec700c73",
"selector": "0xec700c73",
"calldata_variants": [
"0xec700c73",
"0xec700c730000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeed55403",
"selector": "0xeed55403",
"calldata_variants": [
"0xeed55403",
"0xeed554030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x98c6c322",
"selector": "0x98c6c322",
"calldata_variants": [
"0x98c6c322",
"0x98c6c3220000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9cf34204",
"selector": "0x9cf34204",
"calldata_variants": [
"0x9cf34204",
"0x9cf342040000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa201ccf6",
"selector": "0xa201ccf6",
"calldata_variants": [
"0xa201ccf6",
"0xa201ccf60000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5b3297f1",
"selector": "0x5b3297f1",
"calldata_variants": [
"0x5b3297f1",
"0x5b3297f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x626173ca",
"selector": "0x626173ca",
"calldata_variants": [
"0x626173ca",
"0x626173ca0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 923,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1486,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1554,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 6,
"guards_detected": [
{
"pc": 756,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 949,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1708,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2341,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2757,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| info | access_control | codex | Hardcoded liquidity manager can arbitrarily move assets and grant withdrawal rights | 60 | no | — |
viewevidence_json{
"evidence": "Runtime bytecode contains a constant manager address (0xe31727817a0057de56fcb01f4913c9393c52c58c) compared against CALLER with error string \u201cYou are not the Liquidity Manager,\u201d followed by code paths that invoke WETH withdraw (0x2e1a7d4d) and SafeERC20 transfer (0xa9059cbb) and mutate the approved-contract mapping.",
"locations": [
"BYTECODE_BUNDLE.txt:5"
],
"recommendation": "If this is not strictly intended, store the manager in storage with a secure update mechanism (e.g., timelocked multisig) and minimize or remove broad withdrawal approvals; otherwise document the trust assumptions explicitly.",
"exploit_scenario": "If the hardcoded manager address is compromised (or acts maliciously), it can call manager-gated functions to withdraw WETH/ETH and transfer any ERC20 held by the contract, and can approve additional contracts that then gain withdrawal capabilities, leading to complete asset drain."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 7
}
|