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

Analysis Run

fdc96e56-7733-4245-94be-d45bb0bfa698

complete
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 1:57 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
2
Validated
2
Source
Bytecode only
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: no

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
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.
View stderr
[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"]}]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
7
Total opcodes
1685
Flags
heavy_ext_balance_usage
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 yes yes
view
trace_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
view
trace_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
view
evidence_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
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 7
}