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

Analysis Run

aaa341f0-38cc-4646-93f3-38a868b28d36

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 1, 2026 12:23 AM
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
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Authorization based on tx.origin
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
30988 report.consolidate complete 1 / 1 3 months ago
94939 artifact.fetch complete 1 / 3 1 week ago
94940 tool.cast_disasm complete 1 / 3 1 week ago
94941 analysis.bundle complete 1 / 3 1 week ago
94942 capability.graph complete 1 / 3 1 week ago
94943 detector.run complete 1 / 3 1 week ago
94944 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
0
No findings?
yes
Summary
No concrete, exploitable value-extraction path identified in the runtime bytecode; external calls appear gated by owner/whitelist checks and the Uniswap V3 swap callback verifies the caller against the computed pool address. Bytecode-only limits apply.
View stderr
[codex:785577] OpenAI Codex v0.77.0 (research preview)
[codex:785577] --------
[codex:785577] workdir: /tmp/codex-multi-wjsaac4i
[codex:785577] model: gpt-5.2-codex
[codex:785577] provider: openai
[codex:785577] approval: never
[codex:785577] sandbox: read-only
[codex:785577] reasoning effort: xhigh
[codex:785577] reasoning summaries: auto
[codex:785577] session id: 019b76e8-b801-7370-ac8a-e677069e5053
[codex:785577] --------
[codex:785577] user
[codex:785577] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:785577] 
[codex:785577] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:785577] 
[codex:785577] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:785577] - Gas inefficiency, code quality, or best practices
[codex:785577] - Theoretical vulnerabilities without a clear extraction path
[codex:785577] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:785577] - Issues requiring social engineering or off-chain coordination
[codex:785577] 
[codex:785577] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:785577] - CALL/DELEGATECALL with controllable destination or calldata
[codex:785577] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:785577] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:785577] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:785577] - External calls before state updates (reentrancy)
[codex:785577] - SELFDESTRUCT with controllable beneficiary
[codex:785577] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:785577] 
[codex:785577] For each finding, you MUST explain:
[codex:785577] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:785577] 2. The concrete sequence of transactions to extract value
[codex:785577] 3. Why you believe this is exploitable (not just suspicious)
[codex:785577] 
[codex:785577] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:785577] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:785577] 
[codex:785577] Output MUST be valid JSON matching the provided schema.
[codex:785577] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:785577] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:785577] mcp startup: no servers
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Checking for relevant skills and reading instructions**
[codex:785577] exec
[codex:785577] /bin/bash -lc ls in /tmp/codex-multi-wjsaac4i succeeded in 6ms:
[codex:785577] BYTECODE_BUNDLE.txt
[codex:785577] codex-output-schema.json
[codex:785577] exec
[codex:785577] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-wjsaac4i succeeded in 5ms:
[codex:785577] Runtime bytecode bundle for best-effort auditing.
[codex:785577] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:785577] 
[codex:785577] FILE: runtime_bytecode.hex
[codex:785577] 0x608060405234801561001057600080fd5b506004361061016c5760003560e01c8063c133163c116100cd578063eeaf04b111610081578063f0ba326111610066578063f0ba32611461032c578063f31fad0014610365578063fa461e331461037857600080fd5b8063eeaf04b1146102f1578063eebe93781461031957600080fd5b8063ca04108f116100b2578063ca04108f146102b8578063cc9fb041146102cb578063d4fae269146102de57600080fd5b8063c133163c14610231578063c587533e1461027f57600080fd5b806375ddbe8b11610124578063820a885911610109578063820a8859146101f85780638e85abd61461020b578063ac07c9701461021e57600080fd5b806375ddbe8b146101d25780637b48a5bc146101e557600080fd5b806338088cbb1161015557806338088cbb146101995780635b1d3b20146101ac5780636518aab3146101bf57600080fd5b806302d889101461017157806337bd827d14610186575b600080fd5b61018461017f366004612358565b61038b565b005b6101846101943660046123ca565b6106d6565b6101846101a73660046122c0565b61084e565b6101846101ba3660046122dd565b610958565b6101846101cd3660046122dd565b610bba565b6101846101e0366004612358565b610d72565b6101846101f33660046122c0565b611008565b610184610206366004612358565b61110f565b6101846102193660046122c0565b6113ce565b61018461022c36600461240c565b6114d5565b61026a61023f3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61026a61028d3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6101846102c63660046122c0565b61175e565b6101846102d93660046122c0565b611861565b6101846102ec366004612358565b611964565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610276565b61018461032736600461239e565b611b74565b61026a61033a3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6101846103733660046122c0565b611b9a565b6101846103863660046124cd565b611c9c565b3360009081526001602052604090205460ff16610409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b8360008461042e73ffffffffffffffffffffffffffffffffffffffff82168487611e26565b6000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561047757600080fd5b505afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af91906125cc565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526dffffffffffffffffffffffffffff93841695509190921692508391908516906370a082319060240160206040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056c9190612611565b61057691906127bf565b93506000610586856103e5612782565b905060006105948383612782565b90506000826105a5866103e8612782565b6105af919061272f565b905060006105bd8284612747565b905089811015610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff891663022c0d9f60008330825b6040519080825280601f01601f191660200182016040528015610675576020820181803683370190505b506040518563ffffffff1660e01b815260040161069594939291906126d7565b600060405180830381600087803b1580156106af57600080fd5b505af11580156106c3573d6000803e3d6000fd5b5050505050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061070b57503360009081526002602052604090205460ff165b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f674a3565443900000000000000000000000000000000000000000000000000006044820152606401610400565b600054819073ffffffffffffffffffffffffffffffffffffffff808316911614806107c1575073ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205460ff165b610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f36316f49467300000000000000000000000000000000000000000000000000006044820152606401610400565b61084873ffffffffffffffffffffffffffffffffffffffff85168385611e26565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527fe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d9065091015b60405180910390a150565b3360009081526001602052604090205460ff166109d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8088166020830152881691810191909152606081018590528790600090608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012083830190925273ffffffffffffffffffffffffffffffffffffffff8b81168452908301829052909250600090841663128acb083083610a7e8b611eff565b8987604051602001610ab89190815173ffffffffffffffffffffffffffffffffffffffff1681526020918201519181019190915260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610ae7959493929190612690565b6040805180830381600087803b158015610b0057600080fd5b505af1158015610b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3891906124a9565b50905085610b458261283b565b1015610bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f35744438445000000000000000000000000000000000000000000000000000006044820152606401610400565b5050505050505050505050565b3360009081526001602052604090205460ff16610c33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b6040805173ffffffffffffffffffffffffffffffffffffffff88811660208084018290528983168486015260608085018a905285518086039091018152608085018087528151919092012060c0850190955290815260a090920183905289929190600090841663128acb08306001610caa8b611eff565b8987604051602001610ce49190815173ffffffffffffffffffffffffffffffffffffffff1681526020918201519181019190915260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610d13959493929190612690565b6040805180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6491906124a9565b9150508581610b459061283b565b3360009081526001602052604090205460ff16610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b60008490506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610e3957600080fd5b505afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7191906125cc565b506dffffffffffffffffffffffffffff91821693501690506000610e97866103e5612782565b90506000610ea58383612782565b9050600082610eb6866103e8612782565b610ec0919061272f565b90506000610ece8284612747565b905087811015610f3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b89610f5c73ffffffffffffffffffffffffffffffffffffffff82168d8c611e26565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f60008430825b6040519080825280601f01601f191660200182016040528015610fa8576020820181803683370190505b506040518563ffffffff1660e01b8152600401610fc894939291906126d7565b600060405180830381600087803b158015610fe257600080fd5b505af1158015610ff6573d6000803e3d6000fd5b50505050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558251938452908301527fe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5910161094d565b3360009081526001602052604090205460ff16611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b836000846111ad73ffffffffffffffffffffffffffffffffffffffff82168487611e26565b6000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e91906125cc565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526dffffffffffffffffffffffffffff93841695509190921692508291908516906370a082319060240160206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb9190612611565b6112f591906127bf565b93506000611305856103e5612782565b905060006113138483612782565b9050600082611324856103e8612782565b61132e919061272f565b9050600061133c8284612747565b9050898110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff891663022c0d9f826000308161064b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558251938452908301527f8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9910161094d565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061150a57503360009081526002602052604090205460ff165b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f674a3565443900000000000000000000000000000000000000000000000000006044820152606401610400565b600054819073ffffffffffffffffffffffffffffffffffffffff808316911614806115c0575073ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205460ff165b611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f36316f49467300000000000000000000000000000000000000000000000000006044820152606401610400565b60005b83811015611757576000858583818110611645576116456128a3565b905060200201602081019061165a91906122c0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a082319060240160206040518083038186803b1580156116c157600080fd5b505afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f99190612611565b90506117448482888886818110611712576117126128a3565b905060200201602081019061172791906122c0565b73ffffffffffffffffffffffffffffffffffffffff169190611e26565b508061174f81612802565b915050611629565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527fe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5910161094d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527f8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9910161094d565b3360009081526001602052604090205460ff166119dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b60008490506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611a2b57600080fd5b505afa158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6391906125cc565b506dffffffffffffffffffffffffffff91821693501690506000611a89866103e5612782565b90506000611a978483612782565b9050600082611aa8856103e8612782565b611ab2919061272f565b90506000611ac08284612747565b905087811015611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b89611b4e73ffffffffffffffffffffffffffffffffffffffff82168d8c611e26565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f8360003081610f7e565b611b9673ffffffffffffffffffffffffffffffffffffffff8316333084611f31565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905582519384528301527fe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d90650910161094d565b731f98431c8ad98523631ae4a59f267346ea31f9847fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546000611ce08486018661254d565b602081810151604080517fff0000000000000000000000000000000000000000000000000000000000000081850152606088901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021820152603581019290925260558083018790528151808403909101815260759092019052805191012090915073ffffffffffffffffffffffffffffffffffffffff81163314611de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f486b3136576400000000000000000000000000000000000000000000000000006044820152606401610400565b6000808913611df25787611df4565b885b8351909150611e1a73ffffffffffffffffffffffffffffffffffffffff82163384611e26565b50505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611efa9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f8f565b505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210611f2d57600080fd5b5090565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526108489085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611e78565b6000611ff1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661209b9092919063ffffffff16565b805190915015611efa578080602001905181019061200f9190612487565b611efa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610400565b60606120aa84846000856120b4565b90505b9392505050565b606082471015612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610400565b73ffffffffffffffffffffffffffffffffffffffff85163b6121c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610400565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516121ed9190612674565b60006040518083038185875af1925050503d806000811461222a576040519150601f19603f3d011682016040523d82523d6000602084013e61222f565b606091505b509150915061223f82828661224a565b979650505050505050565b606083156122595750816120ad565b8251156122695782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610400919061271c565b80516dffffffffffffffffffffffffffff811681146122bb57600080fd5b919050565b6000602082840312156122d257600080fd5b81356120ad816128d2565b600080600080600080600060e0888a0312156122f857600080fd5b8735612303816128d2565b96506020880135612313816128d2565b95506040880135612323816128d2565b9450606088013593506080880135925060a0880135915060c0880135612348816128d2565b8091505092959891949750929550565b6000806000806080858703121561236e57600080fd5b8435612379816128d2565b93506020850135612389816128d2565b93969395505050506040820135916060013590565b600080604083850312156123b157600080fd5b82356123bc816128d2565b946020939093013593505050565b6000806000606084860312156123df57600080fd5b83356123ea816128d2565b9250602084013591506040840135612401816128d2565b809150509250925092565b60008060006040848603121561242157600080fd5b833567ffffffffffffffff8082111561243957600080fd5b818601915086601f83011261244d57600080fd5b81358181111561245c57600080fd5b8760208260051b850101111561247157600080fd5b60209283019550935050840135612401816128d2565b60006020828403121561249957600080fd5b815180151581146120ad57600080fd5b600080604083850312156124bc57600080fd5b505080516020909101519092909150565b600080600080606085870312156124e357600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561250957600080fd5b818701915087601f83011261251d57600080fd5b81358181111561252c57600080fd5b88602082850101111561253e57600080fd5b95989497505060200194505050565b60006040828403121561255f57600080fd5b6040516040810181811067ffffffffffffffff821117156125a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282356125b7816128d2565b81526020928301359281019290925250919050565b6000806000606084860312156125e157600080fd5b6125ea8461229d565b92506125f86020850161229d565b9150604084015163ffffffff8116811461240157600080fd5b60006020828403121561262357600080fd5b5051919050565b600081518084526126428160208601602086016127d6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516126868184602087016127d6565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261223f60a083018461262a565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000612712608083018461262a565b9695505050505050565b6020815260006120ad602083018461262a565b6000821982111561274257612742612874565b500190565b60008261277d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127ba576127ba612874565b500290565b6000828210156127d1576127d1612874565b500390565b60005b838110156127f15781810151838201526020016127d9565b838111156108485750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561283457612834612874565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082141561286d5761286d612874565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146128f457600080fd5b5056fea264697066735822122032956574c9dedf8a502aec1a66f71fd2cea03abca87f4cfa89d2c47c82fc832b64736f6c63430008070033
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing Ethereum bytecode for vulnerabilities**
[codex:785577] 
[codex:785577] This bytecode contains many functions with access control via mappings and owner checks, likely managing token transfers and whitelist roles. I'm carefully mapping function selectors and storage slots to understand controls and searching for any unprotected token or ETH transfers to exploit. My goal is to confirm if any function allows unauthorized transfers or whitelist modifications that could lead to a concrete exploit.
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0]
[codex:785577] # remove possible spaces
[codex:785577] code=code.strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] # Actually file has '0x' at start of bytecode line; we already trimmed.
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] print('len',len(b))
[codex:785577] # define opcode names
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] # basic disassemble to list addresses of JUMPDESTs and maybe find delegatecall
[codex:785577] jumpdests=[]
[codex:785577] ops=[]
[codex:785577] i=0
[codex:785577] while i<len(b):
[codex:785577]     op=b[i]
[codex:785577]     name=opnames.get(op,hex(op))
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         n=op-0x5f
[codex:785577]         data=b[i+1:i+1+n]
[codex:785577]         ops.append((i,name,data.hex()))
[codex:785577]         i+=1+n
[codex:785577]     else:
[codex:785577]         ops.append((i,name,None))
[codex:785577]         if op==0x5b:
[codex:785577]             jumpdests.append(i)
[codex:785577]         i+=1
[codex:785577] 
[codex:785577] print('jumpdests',len(jumpdests),'delegatecall',any(op==0xf4 for op in b))
[codex:785577] # find any SELFDESTRUCT
[codex:785577] print('selfdestruct',any(op==0xff for op in b))
[codex:785577] 
[codex:785577] # print positions of CALL opcodes (0xf1)
[codex:785577] call_positions=[i for i,op in enumerate(b) if op==0xf1]
[codex:785577] print('CALLs',len(call_positions))
[codex:785577] 
[codex:785577] # find positions of DELEGATECALL (0xf4)
[codex:785577] print('DELEGATECALL positions', [i for i,op in enumerate(b) if op==0xf4][:10])
[codex:785577] 
[codex:785577] # find positions of SELFDESTRUCT
[codex:785577] print('SELFDESTRUCT positions', [i for i,op in enumerate(b) if op==0xff])
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 35ms:
[codex:785577] len 10541
[codex:785577] jumpdests 275 delegatecall True
[codex:785577] selfdestruct True
[codex:785577] CALLs 12
[codex:785577] DELEGATECALL positions [7354, 7664, 10478]
[codex:785577] SELFDESTRUCT positions [577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 614, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 692, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 865, 925, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1107, 1108, 1109, 1110, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1660, 1661, 1662, 1663, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1801, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1983, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2410, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2684, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2765, 2766, 2767, 2768, 3020, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148, 3240, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3321, 3322, 3323, 3324, 3460, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, 3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3605, 3606, 3607, 3608, 3700, 3701, 3702, 3703, 3704, 3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712, 3713, 3904, 3905, 3906, 3907, 3908, 3909, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, 3918, 3919, 3920, 3921, 3922, 3923, 3934, 3935, 3936, 3937, 3938, 3939, 3940, 3941, 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 3951, 3952, 3953, 4015, 4016, 4017, 4018, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4235, 4236, 4237, 4238, 4239, 4240, 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, 4254, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, 4302, 4303, 4304, 4305, 4306, 4307, 4308, 4354, 4385, 4497, 4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4531, 4532, 4533, 4534, 4535, 4536, 4537, 4538, 4539, 4540, 4541, 4542, 4543, 4544, 4545, 4546, 4547, 4548, 4549, 4550, 4562, 4563, 4564, 4565, 4695, 4696, 4697, 4698, 4699, 4700, 4701, 4702, 4703, 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, 4724, 4725, 4726, 4727, 4728, 4729, 4730, 4731, 4732, 4733, 4734, 4735, 4736, 4737, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, 5214, 5215, 5216, 5217, 5218, 5219, 5220, 5244, 5245, 5246, 5247, 5248, 5249, 5250, 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5262, 5263, 5264, 5265, 5266, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5338, 5339, 5340, 5341, 5342, 5343, 5344, 5345, 5346, 5347, 5348, 5349, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 5357, 5384, 5495, 5496, 5497, 5498, 5499, 5500, 5501, 5502, 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, 5536, 5537, 5538, 5539, 5540, 5541, 5542, 5543, 5544, 5545, 5546, 5547, 5566, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776, 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, 5929, 5930, 5931, 5932, 5933, 5934, 5935, 5936, 5937, 5938, 5939, 5940, 5941, 5942, 5943, 5944, 5945, 5946, 5947, 5948, 5987, 5988, 5989, 5990, 5991, 5992, 5993, 5994, 5995, 5996, 5997, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, 6006, 6113, 6114, 6115, 6116, 6117, 6118, 6119, 6120, 6121, 6122, 6123, 6124, 6125, 6126, 6127, 6128, 6129, 6130, 6131, 6132, 6155, 6156, 6157, 6158, 6159, 6160, 6161, 6162, 6163, 6164, 6165, 6166, 6167, 6168, 6169, 6170, 6171, 6172, 6173, 6174, 6175, 6176, 6177, 6178, 6179, 6180, 6181, 6182, 6183, 6184, 6185, 6228, 6246, 6247, 6248, 6249, 6250, 6251, 6252, 6253, 6254, 6255, 6256, 6257, 6258, 6259, 6260, 6261, 6262, 6263, 6264, 6265, 6372, 6373, 6374, 6375, 6376, 6377, 6378, 6379, 6380, 6381, 6382, 6383, 6384, 6385, 6386, 6387, 6388, 6389, 6390, 6391, 6414, 6415, 6416, 6417, 6418, 6419, 6420, 6421, 6422, 6423, 6424, 6425, 6426, 6427, 6428, 6429, 6430, 6431, 6432, 6433, 6434, 6435, 6436, 6437, 6438, 6439, 6440, 6441, 6442, 6443, 6444, 6518, 6632, 6633, 6634, 6635, 6636, 6637, 6638, 6639, 6640, 6641, 6642, 6643, 6644, 6645, 6646, 6647, 6648, 6649, 6650, 6651, 6663, 6664, 6665, 6666, 6758, 6759, 6760, 6761, 6762, 6763, 6764, 6765, 6766, 6767, 6768, 6769, 6770, 6771, 6962, 6963, 6964, 6965, 6966, 6967, 6968, 6969, 6970, 6971, 6972, 6973, 6974, 6975, 6976, 6977, 6978, 6979, 6980, 6981, 6992, 6993, 6994, 6995, 6996, 6997, 6998, 6999, 7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7033, 7034, 7035, 7036, 7037, 7038, 7039, 7040, 7041, 7042, 7043, 7044, 7045, 7046, 7047, 7048, 7049, 7050, 7051, 7052, 7071, 7072, 7073, 7074, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, 7086, 7087, 7088, 7089, 7090, 7197, 7198, 7199, 7200, 7201, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, 7211, 7212, 7213, 7214, 7215, 7216, 7240, 7241, 7242, 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7255, 7256, 7257, 7258, 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, 7267, 7268, 7269, 7270, 7404, 7446, 7447, 7448, 7449, 7450, 7451, 7452, 7453, 7454, 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7526, 7527, 7528, 7529, 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7678, 7679, 7680, 7681, 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691, 7692, 7693, 7694, 7695, 7696, 7697, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, 7806, 7807, 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7817, 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7832, 7833, 7834, 7835, 7836, 7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7884, 7885, 7886, 7887, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156, 8157, 8158, 8159, 8160, 8161, 8171, 8172, 8173, 8174, 8520, 8521, 8522, 8523, 8524, 8525, 8526, 8527, 8528, 8529, 8530, 8531, 8532, 8533, 8534, 8535, 8536, 8537, 8538, 8539, 8650, 8651, 8652, 8653, 8654, 8655, 8656, 8657, 8658, 8659, 8660, 8661, 8662, 8663, 8664, 8665, 8666, 8667, 8668, 8669, 8865, 8866, 8867, 8868, 8869, 8870, 8871, 8872, 8873, 8874, 8875, 8876, 8877, 8878, 9253, 9254, 9255, 9256, 9257, 9258, 9259, 9260, 9461, 9462, 9463, 9464, 9465, 9466, 9467, 9468, 9579, 9580, 9581, 9582, 9583, 9584, 9585, 9586, 9729, 9730, 9731, 9732, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 9828, 9829, 9876, 9877, 9878, 9879, 9880, 9881, 9882, 9883, 9884, 9885, 9886, 9887, 9888, 9889, 9890, 9891, 9892, 9893, 9894, 9895, 9954, 9955, 9956, 9957, 9958, 9959, 9960, 9961, 9962, 9963, 9964, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9972, 9973, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131, 10132, 10133, 10134, 10135, 10136, 10137, 10138, 10139, 10140, 10141, 10142, 10143, 10144, 10145, 10146, 10147, 10148, 10149, 10150, 10246, 10247, 10248, 10249, 10250, 10251, 10252, 10253, 10254, 10255, 10256, 10257, 10258, 10259, 10260, 10261, 10262, 10263, 10264, 10265, 10266, 10267, 10268, 10269, 10270, 10271, 10272, 10273, 10274, 10275, 10276, 10277, 10452, 10453, 10454, 10455, 10456, 10457, 10458, 10459, 10460, 10461, 10462, 10463, 10464, 10465, 10466, 10467, 10468, 10469, 10470, 10471]
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Verifying selfdestruct opcode detection**
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] i=0
[codex:785577] selfd=[]
[codex:785577] deleg=[]
[codex:785577] while i<len(b):
[codex:785577]     op=b[i]
[codex:785577]     name=opnames.get(op,hex(op))
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         n=op-0x5f
[codex:785577]         i+=1+n
[codex:785577]         continue
[codex:785577]     if op==0xff:
[codex:785577]         selfd.append(i)
[codex:785577]     if op==0xf4:
[codex:785577]         deleg.append(i)
[codex:785577]     i+=1
[codex:785577] 
[codex:785577] print('SELFDESTRUCT opcodes',selfd)
[codex:785577] print('DELEGATECALL opcodes',deleg)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 26ms:
[codex:785577] SELFDESTRUCT opcodes []
[codex:785577] DELEGATECALL opcodes []
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Clarifying opcode presence and vulnerability focus**
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] def disasm(start, count=20):
[codex:785577]     i=start
[codex:785577]     out=[]
[codex:785577]     while i<len(b) and len(out)<count:
[codex:785577]         op=b[i]
[codex:785577]         name=opnames.get(op,hex(op))
[codex:785577]         if 0x60<=op<=0x7f:
[codex:785577]             n=op-0x5f
[codex:785577]             data=b[i+1:i+1+n]
[codex:785577]             out.append((i,name,data.hex()))
[codex:785577]             i+=1+n
[codex:785577]         else:
[codex:785577]             out.append((i,name,''))
[codex:785577]             i+=1
[codex:785577]     return out
[codex:785577] 
[codex:785577] # find CALL opcodes and show preceding 15 ops
[codex:785577] call_positions=[]
[codex:785577] i=0
[codex:785577] positions=[]
[codex:785577] while i<len(b):
[codex:785577]     op=b[i]
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         i+=1+(op-0x5f)
[codex:785577]         continue
[codex:785577]     if op==0xf1:
[codex:785577]         positions.append(i)
[codex:785577]     i+=1
[codex:785577] 
[codex:785577] print('CALL opcodes',positions)
[codex:785577] 
[codex:785577] # show disasm windows around each CALL
[codex:785577] for pos in positions:
[codex:785577]     # show 12 ops before and 5 after
[codex:785577]     # get window start by scanning back some bytes
[codex:785577]     start=max(0,pos-60)
[codex:785577]     ops=disasm(start, count=25)
[codex:785577]     print('\\nCALL at',pos)
[codex:785577]     for o in ops:
[codex:785577]         if o[0]==pos:
[codex:785577]             print('->',o)
[codex:785577]         else:
[codex:785577]             print('  ',o)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 20ms:
[codex:785577] CALL opcodes [1714, 2819, 3375, 4069, 8698]
[codex:785577] 
[codex:785577] CALL at 1714
[codex:785577]    (1654, 'POP', '')
[codex:785577]    (1655, 'PUSH1', '40')
[codex:785577]    (1657, 'MLOAD', '')
[codex:785577]    (1658, 'DUP6', '')
[codex:785577]    (1659, 'PUSH4', 'ffffffff')
[codex:785577]    (1664, 'AND', '')
[codex:785577]    (1665, 'PUSH1', 'e0')
[codex:785577]    (1667, 'SHL', '')
[codex:785577]    (1668, 'DUP2', '')
[codex:785577]    (1669, 'MSTORE', '')
[codex:785577]    (1670, 'PUSH1', '04')
[codex:785577]    (1672, 'ADD', '')
[codex:785577]    (1673, 'PUSH2', '0695')
[codex:785577]    (1676, 'SWAP5', '')
[codex:785577]    (1677, 'SWAP4', '')
[codex:785577]    (1678, 'SWAP3', '')
[codex:785577]    (1679, 'SWAP2', '')
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing token transfer and access control functions**
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] def disasm_at(addr, count=80):
[codex:785577]     i=addr
[codex:785577]     out=[]
[codex:785577]     while i<len(b) and len(out)<count:
[codex:785577]         op=b[i]
[codex:785577]         name=opnames.get(op,hex(op))
[codex:785577]         if 0x60<=op<=0x7f:
[codex:785577]             n=op-0x5f
[codex:785577]             data=b[i+1:i+1+n]
[codex:785577]             out.append((i,name,data.hex()))
[codex:785577]             i+=1+n
[codex:785577]         else:
[codex:785577]             out.append((i,name,''))
[codex:785577]             i+=1
[codex:785577]     return out
[codex:785577] 
[codex:785577] for addr in [0x084e,0x0958,0x0bba,0x0d72,0x1008,0x110f,0x13ce,0x14d5,0x175e,0x1861,0x1964,0x1b74,0x1b9a,0x1c9c]:
[codex:785577]     print('\\nFunction at',hex(addr))
[codex:785577]     for o in disasm_at(addr, count=40):
[codex:785577]         print(o)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 19ms:
[codex:785577] 
[codex:785577] Function at 0x84e
[codex:785577] (2126, 'JUMPDEST', '')
[codex:785577] (2127, 'PUSH1', '00')
[codex:785577] (2129, 'SLOAD', '')
[codex:785577] (2130, 'PUSH20', 'ffffffffffffffffffffffffffffffffffffffff')
[codex:785577] (2151, 'AND', '')
[codex:785577] (2152, 'CALLER', '')
[codex:785577] (2153, 'EQ', '')
[codex:785577] (2154, 'PUSH2', '08cf')
[codex:785577] (2157, 'JUMPI', '')
[codex:785577] (2158, 'PUSH1', '40')
[codex:785577] (2160, 'MLOAD', '')
[codex:785577] (2161, 'PUSH32', '08c379a000000000000000000000000000000000000000000000000000000000')
[codex:785577] (2194, 'DUP2', '')
[codex:785577] (2195, 'MSTORE', '')
[codex:785577] (2196, 'PUSH1', '20')
[codex:785577] (2198, 'PUSH1', '04')
[codex:785577] (2200, 'DUP3', '')
[codex:785577] (2201, 'ADD', '')
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing function access controls and mappings**
[codex:785577] 
[codex:785577] I'm checking how functions control access using mappings and owner checks by inspecting keccak mappings and SLOADs. I want to confirm which functions are owner-only, whitelist-protected, or have combined checks, and identify any functions that modify these mappings—especially looking for storage writes (SSTORE) that change access lists and whether those are guarded properly. This will help me find potential vulnerabilities or open access points.
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] # disassemble and map pc -> op
[codex:785577] ops=[]
[codex:785577] i=0
[codex:785577] while i<len(b):
[codex:785577]     op=b[i]
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         n=op-0x5f
[codex:785577]         data=b[i+1:i+1+n]
[codex:785577]         ops.append((i, op, data))
[codex:785577]         i+=1+n
[codex:785577]     else:
[codex:785577]         ops.append((i, op, None))
[codex:785577]         i+=1
[codex:785577] 
[codex:785577] # find SSTORE opcodes and nearest previous JUMPDEST
[codex:785577] sstore_positions=[pc for pc,op,_ in ops if op==0x55]
[codex:785577] print('SSTORE positions',sstore_positions)
[codex:785577] 
[codex:785577] # map to nearest previous JUMPDEST
[codex:785577] jumpdests=[pc for pc,op,_ in ops if op==0x5b]
[codex:785577] 
[codex:785577] for pos in sstore_positions:
[codex:785577]     prev=[jd for jd in jumpdests if jd<pos]
[codex:785577]     jd=prev[-1] if prev else None
[codex:785577]     print('SSTORE at',pos,'nearest JUMPDEST',jd)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 21ms:
[codex:785577] SSTORE positions [2333, 4318, 5284, 6189, 6448, 7276]
[codex:785577] SSTORE at 2333 nearest JUMPDEST 2255
[codex:785577] SSTORE at 4318 nearest JUMPDEST 4233
[codex:785577] SSTORE at 5284 nearest JUMPDEST 5199
[codex:785577] SSTORE at 6189 nearest JUMPDEST 6111
[codex:785577] SSTORE at 6448 nearest JUMPDEST 6370
[codex:785577] SSTORE at 7276 nearest JUMPDEST 7195
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing SSTORE and CALL usage for access control**
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] # disassemble more for function at 0x958
[codex:785577] addr=0x958
[codex:785577] out=[]
[codex:785577] i=addr
[codex:785577] count=200
[codex:785577] while i<len(b) and len(out)<count:
[codex:785577]     op=b[i]
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         n=op-0x5f
[codex:785577]         data=b[i+1:i+1+n]
[codex:785577]         out.append((i,opnames.get(op,hex(op)),data.hex()))
[codex:785577]         i+=1+n
[codex:785577]     else:
[codex:785577]         out.append((i,opnames.get(op,hex(op)),''))
[codex:785577]         i+=1
[codex:785577] 
[codex:785577] for o in out:
[codex:785577]     print(o)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 20ms:
[codex:785577] (2392, 'JUMPDEST', '')
[codex:785577] (2393, 'CALLER', '')
[codex:785577] (2394, 'PUSH1', '00')
[codex:785577] (2396, 'SWAP1', '')
[codex:785577] (2397, 'DUP2', '')
[codex:785577] (2398, 'MSTORE', '')
[codex:785577] (2399, 'PUSH1', '01')
[codex:785577] (2401, 'PUSH1', '20')
[codex:785577] (2403, 'MSTORE', '')
[codex:785577] (2404, 'PUSH1', '40')
[codex:785577] (2406, 'SWAP1', '')
[codex:785577] (2407, 'SHA3', '')
[codex:785577] (2408, 'SLOAD', '')
[codex:785577] (2409, 'PUSH1', 'ff')
[codex:785577] (2411, 'AND', '')
[codex:785577] (2412, 'PUSH2', '09d1')
[codex:785577] (2415, 'JUMPI', '')
[codex:785577] (2416, 'PUSH1', '40')
[codex:785577] (2418, 'MLOAD', '')
[codex:785577] (2419, 'PUSH32', '08c379a000000000000000000000000000000000000000000000000000000000')
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing Uniswap V3 swap callback handling**
[codex:785577] 
[codex:785577] I'm examining how this contract interacts with Uniswap V3 pools by calling their `swap` function and implementing the required `uniswapV3SwapCallback`. I want to verify whether the contract properly authenticates the callback’s `msg.sender` to prevent potential exploits where attackers might trick the contract into sending tokens by calling the callback directly with manipulated data. I'll look deeper into the code around the callback function's address to confirm this critical security check.
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] # disassemble more at 0x1c9c
[codex:785577] addr=0x1c9c
[codex:785577] out=[]
[codex:785577] i=addr
[codex:785577] count=200
[codex:785577] while i<len(b) and len(out)<count:
[codex:785577]     op=b[i]
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         n=op-0x5f
[codex:785577]         data=b[i+1:i+1+n]
[codex:785577]         out.append((i,opnames.get(op,hex(op)),data.hex()))
[codex:785577]         i+=1+n
[codex:785577]     else:
[codex:785577]         out.append((i,opnames.get(op,hex(op)),''))
[codex:785577]         i+=1
[codex:785577] 
[codex:785577] for o in out:
[codex:785577]     print(o)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 21ms:
[codex:785577] (7324, 'JUMPDEST', '')
[codex:785577] (7325, 'PUSH20', '1f98431c8ad98523631ae4a59f267346ea31f984')
[codex:785577] (7346, 'PUSH32', 'e34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54')
[codex:785577] (7379, 'PUSH1', '00')
[codex:785577] (7381, 'PUSH2', '1ce0')
[codex:785577] (7384, 'DUP5', '')
[codex:785577] (7385, 'DUP7', '')
[codex:785577] (7386, 'ADD', '')
[codex:785577] (7387, 'DUP7', '')
[codex:785577] (7388, 'PUSH2', '254d')
[codex:785577] (7391, 'JUMP', '')
[codex:785577] (7392, 'JUMPDEST', '')
[codex:785577] (7393, 'PUSH1', '20')
[codex:785577] (7395, 'DUP2', '')
[codex:785577] (7396, 'DUP2', '')
[codex:785577] (7397, 'ADD', '')
[codex:785577] (7398, 'MLOAD', '')
[codex:785577] (7399, 'PUSH1', '40')
[codex:785577] (7401, 'DUP1', '')
[codex:785577] (7402, 'MLOAD', '')
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing potential token transfer vulnerabilities**
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] # disassemble and check if ORIGIN opcode present
[codex:785577] ops=[]
[codex:785577] 
[codex:785577] i=0
[codex:785577] origin_positions=[]
[codex:785577] while i<len(b):
[codex:785577]     op=b[i]
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         i+=1+(op-0x5f)
[codex:785577]         continue
[codex:785577]     if op==0x32:
[codex:785577]         origin_positions.append(i)
[codex:785577]     i+=1
[codex:785577] 
[codex:785577] print('ORIGIN opcodes',origin_positions)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 24ms:
[codex:785577] ORIGIN opcodes [10498]
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Investigating ORIGIN opcode usage**
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] addr=10498
[codex:785577] # show 30 ops before and after by disassembling from some bytes earlier
[codex:785577] start=10420
[codex:785577] out=[]
[codex:785577] i=start
[codex:785577] count=80
[codex:785577] while i<len(b) and len(out)<count:
[codex:785577]     op=b[i]
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         n=op-0x5f
[codex:785577]         data=b[i+1:i+1+n]
[codex:785577]         out.append((i,opnames.get(op,hex(op)),data.hex()))
[codex:785577]         i+=1+n
[codex:785577]     else:
[codex:785577]         out.append((i,opnames.get(op,hex(op)),''))
[codex:785577]         i+=1
[codex:785577] 
[codex:785577] for o in out:
[codex:785577]     print(o)
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 18ms:
[codex:785577] (10420, 'STOP', '')
[codex:785577] (10421, 'STOP', '')
[codex:785577] (10422, 'STOP', '')
[codex:785577] (10423, 'STOP', '')
[codex:785577] (10424, 'STOP', '')
[codex:785577] (10425, 'STOP', '')
[codex:785577] (10426, 'STOP', '')
[codex:785577] (10427, 'STOP', '')
[codex:785577] (10428, 'STOP', '')
[codex:785577] (10429, 'STOP', '')
[codex:785577] (10430, 'STOP', '')
[codex:785577] (10431, 'STOP', '')
[codex:785577] (10432, 'STOP', '')
[codex:785577] (10433, 'STOP', '')
[codex:785577] (10434, 'STOP', '')
[codex:785577] (10435, 'STOP', '')
[codex:785577] (10436, 'STOP', '')
[codex:785577] (10437, 'PUSH1', '00')
[codex:785577] (10439, 'MSTORE', '')
[codex:785577] (10440, 'PUSH1', '32')
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing potential vulnerabilities and access controls**
[codex:785577] 
[codex:785577] I'm carefully verifying any ETH transfers, nonpayable checks, whitelisting restrictions, and reentrancy protections to rule out exploits. I’m also evaluating Uniswap V3 callback logic and owner settings to see if attackers can bypass restrictions or drain tokens, concluding no concrete exploit paths after thorough inspection.
[codex:785577] exec
[codex:785577] /bin/bash -lc "python - <<'PY'
[codex:785577] from binascii import unhexlify
[codex:785577] code=open('/tmp/codex-multi-wjsaac4i/BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:785577] if code.startswith('0x'): code=code[2:]
[codex:785577] 
[codex:785577] b=bytes.fromhex(code)
[codex:785577] 
[codex:785577] opnames={
[codex:785577] 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:785577] 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:785577] 0x20:'SHA3',
[codex:785577] 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:785577] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:785577] 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:785577] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:785577] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:785577] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:785577] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:785577] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:785577] }
[codex:785577] 
[codex:785577] # disassemble around sstore at 2333
[codex:785577] start=2280
[codex:785577] end=2355
[codex:785577] 
[codex:785577] i=start
[codex:785577] while i<=end:
[codex:785577]     op=b[i]
[codex:785577]     if 0x60<=op<=0x7f:
[codex:785577]         n=op-0x5f
[codex:785577]         data=b[i+1:i+1+n]
[codex:785577]         print((i,opnames.get(op,hex(op)),data.hex()))
[codex:785577]         i+=1+n
[codex:785577]     else:
[codex:785577]         print((i,opnames.get(op,hex(op)),''))
[codex:785577]         i+=1
[codex:785577] PY" in /tmp/codex-multi-wjsaac4i succeeded in 23ms:
[codex:785577] (2280, 'STOP', '')
[codex:785577] (2281, 'DUP2', '')
[codex:785577] (2282, 'DUP2', '')
[codex:785577] (2283, 'MSTORE', '')
[codex:785577] (2284, 'PUSH1', '01')
[codex:785577] (2286, 'PUSH1', '20')
[codex:785577] (2288, 'SWAP1', '')
[codex:785577] (2289, 'DUP2', '')
[codex:785577] (2290, 'MSTORE', '')
[codex:785577] (2291, 'PUSH1', '40')
[codex:785577] (2293, 'DUP1', '')
[codex:785577] (2294, 'DUP4', '')
[codex:785577] (2295, 'SHA3', '')
[codex:785577] (2296, 'DUP1', '')
[codex:785577] (2297, 'SLOAD', '')
[codex:785577] (2298, 'PUSH32', 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00')
[codex:785577] (2331, 'AND', '')
[codex:785577] (2332, 'SWAP1', '')
[codex:785577] (2333, 'SSTORE', '')
[codex:785577] (2334, 'DUP1', '')
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Analyzing storage writes for exploits**
[codex:785577] exec
[codex:785577] /bin/bash -lc 'cat /tmp/codex-multi-wjsaac4i/codex-output-schema.json' in /tmp/codex-multi-wjsaac4i succeeded in 5ms:
[codex:785577] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:785577] 
[codex:785577] thinking
[codex:785577] **Preparing JSON output with summary and findings**
[codex:785577] codex
[codex:785577] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified in the runtime bytecode; external calls appear gated by owner/whitelist checks and the Uniswap V3 swap callback verifies the caller against the computed pool address. Bytecode-only limits apply.","findings":[]}
[codex:785577] tokens used
[codex:785577] 135,030
[codex:785577] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified in the runtime bytecode; external calls appear gated by owner/whitelist checks and the Uniswap V3 swap callback verifies the caller against the computed pool address. Bytecode-only limits apply.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-01T00:23:06.420960+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction path identified in the runtime bytecode; external calls appear gated by owner/whitelist checks and the Uniswap V3 swap callback verifies the caller against the computed pool address. Bytecode-only limits apply.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction path identified in the runtime bytecode; external calls appear gated by owner/whitelist checks and the Uniswap V3 swap callback verifies the caller against the computed pool address. Bytecode-only limits apply.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
12
EXT*/BALANCE
12
Total opcodes
4773
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x016c
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0xc133163c
00000026: GT
00000027: PUSH2 0x00cd
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0xeeaf04b1
00000031: GT
00000032: PUSH2 0x0081
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xf0ba3261
0000003c: GT
0000003d: PUSH2 0x0066
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xf0ba3261
00000047: EQ
00000048: PUSH2 0x032c
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xf31fad00
00000052: EQ
00000053: PUSH2 0x0365
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xfa461e33
0000005d: EQ
0000005e: PUSH2 0x0378
00000061: JUMPI
00000062: PUSH1 0x00
00000064: DUP1
00000065: REVERT
00000066: JUMPDEST
00000067: DUP1
00000068: PUSH4 0xeeaf04b1
0000006d: EQ
0000006e: PUSH2 0x02f1
00000071: JUMPI
00000072: DUP1
00000073: PUSH4 0xeebe9378
00000078: EQ
00000079: PUSH2 0x0319
0000007c: JUMPI
0000007d: PUSH1 0x00
0000007f: DUP1
00000080: REVERT
00000081: JUMPDEST
00000082: DUP1
00000083: PUSH4 0xca04108f
00000088: GT
00000089: PUSH2 0x00b2
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xca04108f
00000093: EQ
00000094: PUSH2 0x02b8
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xcc9fb041
0000009e: EQ
0000009f: PUSH2 0x02cb
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xd4fae269
000000a9: EQ
000000aa: PUSH2 0x02de
000000ad: JUMPI
000000ae: PUSH1 0x00
000000b0: DUP1
000000b1: REVERT
000000b2: JUMPDEST
000000b3: DUP1
000000b4: PUSH4 0xc133163c
000000b9: EQ
000000ba: PUSH2 0x0231
000000bd: JUMPI
000000be: DUP1
000000bf: PUSH4 0xc587533e
000000c4: EQ
000000c5: PUSH2 0x027f
000000c8: JUMPI
000000c9: PUSH1 0x00
000000cb: DUP1
000000cc: REVERT
000000cd: JUMPDEST
000000ce: DUP1
000000cf: PUSH4 0x75ddbe8b
000000d4: GT
000000d5: PUSH2 0x0124
000000d8: JUMPI
000000d9: DUP1
000000da: PUSH4 0x820a8859
000000df: GT
000000e0: PUSH2 0x0109
000000e3: JUMPI
000000e4: DUP1
000000e5: PUSH4 0x820a8859
000000ea: EQ
000000eb: PUSH2 0x01f8
000000ee: JUMPI
000000ef: DUP1
000000f0: PUSH4 0x8e85abd6
000000f5: EQ
000000f6: PUSH2 0x020b
000000f9: JUMPI
000000fa: DUP1
000000fb: PUSH4 0xac07c970
00000100: EQ
00000101: PUSH2 0x021e
00000104: JUMPI
00000105: PUSH1 0x00
00000107: DUP1
00000108: REVERT
00000109: JUMPDEST
0000010a: DUP1
0000010b: PUSH4 0x75ddbe8b
00000110: EQ
00000111: PUSH2 0x01d2
00000114: JUMPI
00000115: DUP1
00000116: PUSH4 0x7b48a5bc
0000011b: EQ
0000011c: PUSH2 0x01e5
0000011f: JUMPI
00000120: PUSH1 0x00
00000122: DUP1
00000123: REVERT
00000124: JUMPDEST
00000125: DUP1
00000126: PUSH4 0x38088cbb
0000012b: GT
0000012c: PUSH2 0x0155
0000012f: JUMPI
00000130: DUP1
00000131: PUSH4 0x38088cbb
00000136: EQ
00000137: PUSH2 0x0199
0000013a: JUMPI
0000013b: DUP1
0000013c: PUSH4 0x5b1d3b20
00000141: EQ
00000142: PUSH2 0x01ac
00000145: JUMPI
00000146: DUP1
00000147: PUSH4 0x6518aab3
0000014c: EQ
0000014d: PUSH2 0x01bf
00000150: JUMPI
00000151: PUSH1 0x00
00000153: DUP1
00000154: REVERT
00000155: JUMPDEST
00000156: DUP1
00000157: PUSH4 0x02d88910
0000015c: EQ
0000015d: PUSH2 0x0171
00000160: JUMPI
00000161: DUP1
00000162: PUSH4 0x37bd827d
00000167: EQ
00000168: PUSH2 0x0186
0000016b: JUMPI
0000016c: JUMPDEST
0000016d: PUSH1 0x00
0000016f: DUP1
00000170: REVERT
00000171: JUMPDEST
00000172: PUSH2 0x0184
00000175: PUSH2 0x017f
00000178: CALLDATASIZE
00000179: PUSH1 0x04
0000017b: PUSH2 0x2358
0000017e: JUMP
0000017f: JUMPDEST
00000180: PUSH2 0x038b
00000183: JUMP
00000184: JUMPDEST
00000185: STOP
00000186: JUMPDEST
00000187: PUSH2 0x0184
0000018a: PUSH2 0x0194
0000018d: CALLDATASIZE
0000018e: PUSH1 0x04
00000190: PUSH2 0x23ca
00000193: JUMP
00000194: JUMPDEST
00000195: PUSH2 0x06d6
00000198: JUMP
00000199: JUMPDEST
0000019a: PUSH2 0x0184
0000019d: PUSH2 0x01a7
000001a0: CALLDATASIZE
000001a1: PUSH1 0x04
000001a3: PUSH2 0x22c0
000001a6: JUMP
000001a7: JUMPDEST
000001a8: PUSH2 0x084e
000001ab: JUMP
000001ac: JUMPDEST
000001ad: PUSH2 0x0184
000001b0: PUSH2 0x01ba
000001b3: CALLDATASIZE
000001b4: PUSH1 0x04
000001b6: PUSH2 0x22dd
000001b9: JUMP
000001ba: JUMPDEST
000001bb: PUSH2 0x0958
000001be: JUMP
000001bf: JUMPDEST
000001c0: PUSH2 0x0184
000001c3: PUSH2 0x01cd
000001c6: CALLDATASIZE
000001c7: PUSH1 0x04
000001c9: PUSH2 0x22dd
000001cc: JUMP
000001cd: JUMPDEST
000001ce: PUSH2 0x0bba
000001d1: JUMP
000001d2: JUMPDEST
000001d3: PUSH2 0x0184
000001d6: PUSH2 0x01e0
000001d9: CALLDATASIZE
000001da: PUSH1 0x04
000001dc: PUSH2 0x2358
000001df: JUMP
000001e0: JUMPDEST
000001e1: PUSH2 0x0d72
000001e4: JUMP
000001e5: JUMPDEST
000001e6: PUSH2 0x0184
000001e9: PUSH2 0x01f3
000001ec: CALLDATASIZE
000001ed: PUSH1 0x04
000001ef: PUSH2 0x22c0
000001f2: JUMP
000001f3: JUMPDEST
000001f4: PUSH2 0x1008
000001f7: JUMP
000001f8: JUMPDEST
000001f9: PUSH2 0x0184
000001fc: PUSH2 0x0206
000001ff: CALLDATASIZE
00000200: PUSH1 0x04
00000202: PUSH2 0x2358
00000205: JUMP
00000206: JUMPDEST
00000207: PUSH2 0x110f
0000020a: JUMP
0000020b: JUMPDEST
0000020c: PUSH2 0x0184
0000020f: PUSH2 0x0219
00000212: CALLDATASIZE
00000213: PUSH1 0x04
00000215: PUSH2 0x22c0
00000218: JUMP
00000219: JUMPDEST
0000021a: PUSH2 0x13ce
0000021d: JUMP
0000021e: JUMPDEST
0000021f: PUSH2 0x0184
00000222: PUSH2 0x022c
00000225: CALLDATASIZE
00000226: PUSH1 0x04
00000228: PUSH2 0x240c
0000022b: JUMP
0000022c: JUMPDEST
0000022d: PUSH2 0x14d5
00000230: JUMP
00000231: JUMPDEST
00000232: PUSH2 0x026a
00000235: PUSH2 0x023f
00000238: CALLDATASIZE
00000239: PUSH1 0x04
0000023b: PUSH2 0x22c0
0000023e: JUMP
0000023f: JUMPDEST
00000240: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000255: AND
00000256: PUSH1 0x00
00000258: SWAP1
00000259: DUP2
0000025a: MSTORE
0000025b: PUSH1 0x03
0000025d: PUSH1 0x20
0000025f: MSTORE
00000260: PUSH1 0x40
00000262: SWAP1
00000263: KECCAK256
00000264: SLOAD
00000265: PUSH1 0xff
00000267: AND
00000268: SWAP1
00000269: JUMP
0000026a: JUMPDEST
0000026b: PUSH1 0x40
0000026d: MLOAD
0000026e: SWAP1
0000026f: ISZERO
00000270: ISZERO
00000271: DUP2
00000272: MSTORE
00000273: PUSH1 0x20
00000275: ADD
00000276: JUMPDEST
00000277: PUSH1 0x40
00000279: MLOAD
0000027a: DUP1
0000027b: SWAP2
0000027c: SUB
0000027d: SWAP1
0000027e: RETURN
0000027f: JUMPDEST
00000280: PUSH2 0x026a
00000283: PUSH2 0x028d
00000286: CALLDATASIZE
00000287: PUSH1 0x04
00000289: PUSH2 0x22c0
0000028c: JUMP
0000028d: JUMPDEST
0000028e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002a3: AND
000002a4: PUSH1 0x00
000002a6: SWAP1
000002a7: DUP2
000002a8: MSTORE
000002a9: PUSH1 0x01
000002ab: PUSH1 0x20
000002ad: MSTORE
000002ae: PUSH1 0x40
000002b0: SWAP1
000002b1: KECCAK256
000002b2: SLOAD
000002b3: PUSH1 0xff
000002b5: AND
000002b6: SWAP1
000002b7: JUMP
000002b8: JUMPDEST
000002b9: PUSH2 0x0184
000002bc: PUSH2 0x02c6
000002bf: CALLDATASIZE
000002c0: PUSH1 0x04
000002c2: PUSH2 0x22c0
000002c5: JUMP
000002c6: JUMPDEST
000002c7: PUSH2 0x175e
000002ca: JUMP
000002cb: JUMPDEST
000002cc: PUSH2 0x0184
000002cf: PUSH2 0x02d9
000002d2: CALLDATASIZE
000002d3: PUSH1 0x04
000002d5: PUSH2 0x22c0
000002d8: JUMP
000002d9: JUMPDEST
000002da: PUSH2 0x1861
000002dd: JUMP
000002de: JUMPDEST
000002df: PUSH2 0x0184
000002e2: PUSH2 0x02ec
000002e5: CALLDATASIZE
000002e6: PUSH1 0x04
000002e8: PUSH2 0x2358
000002eb: JUMP
000002ec: JUMPDEST
000002ed: PUSH2 0x1964
000002f0: JUMP
000002f1: JUMPDEST
000002f2: PUSH1 0x00
000002f4: SLOAD
000002f5: PUSH1 0x40
000002f7: MLOAD
000002f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000030d: SWAP1
0000030e: SWAP2
0000030f: AND
00000310: DUP2
00000311: MSTORE
00000312: PUSH1 0x20
00000314: ADD
00000315: PUSH2 0x0276
00000318: JUMP
00000319: JUMPDEST
0000031a: PUSH2 0x0184
0000031d: PUSH2 0x0327
00000320: CALLDATASIZE
00000321: PUSH1 0x04
00000323: PUSH2 0x239e
00000326: JUMP
00000327: JUMPDEST
00000328: PUSH2 0x1b74
0000032b: JUMP
0000032c: JUMPDEST
0000032d: PUSH2 0x026a
00000330: PUSH2 0x033a
00000333: CALLDATASIZE
00000334: PUSH1 0x04
00000336: PUSH2 0x22c0
00000339: JUMP
0000033a: JUMPDEST
0000033b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000350: AND
00000351: PUSH1 0x00
00000353: SWAP1
00000354: DUP2
00000355: MSTORE
00000356: PUSH1 0x02
00000358: PUSH1 0x20
0000035a: MSTORE
0000035b: PUSH1 0x40
0000035d: SWAP1
0000035e: KECCAK256
0000035f: SLOAD
00000360: PUSH1 0xff
00000362: AND
00000363: SWAP1
00000364: JUMP
00000365: JUMPDEST
00000366: PUSH2 0x0184
00000369: PUSH2 0x0373
0000036c: CALLDATASIZE
0000036d: PUSH1 0x04
0000036f: PUSH2 0x22c0
00000372: JUMP
00000373: JUMPDEST
00000374: PUSH2 0x1b9a
00000377: JUMP
00000378: JUMPDEST
00000379: PUSH2 0x0184
0000037c: PUSH2 0x0386
0000037f: CALLDATASIZE
00000380: PUSH1 0x04
00000382: PUSH2 0x24cd
00000385: JUMP
00000386: JUMPDEST
00000387: PUSH2 0x1c9c
0000038a: JUMP
0000038b: JUMPDEST
0000038c: CALLER
0000038d: PUSH1 0x00
0000038f: SWAP1
00000390: DUP2
00000391: MSTORE
00000392: PUSH1 0x01
00000394: PUSH1 0x20
00000396: MSTORE
00000397: PUSH1 0x40
00000399: SWAP1
0000039a: KECCAK256
0000039b: SLOAD
0000039c: PUSH1 0xff
0000039e: AND
0000039f: PUSH2 0x0409
000003a2: JUMPI
000003a3: PUSH1 0x40
000003a5: MLOAD
000003a6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000003c7: DUP2
000003c8: MSTORE
000003c9: PUSH1 0x20
000003cb: PUSH1 0x04
000003cd: DUP3
000003ce: ADD
000003cf: MSTORE
000003d0: PUSH1 0x06
000003d2: PUSH1 0x24
000003d4: DUP3
000003d5: ADD
000003d6: MSTORE
000003d7: PUSH32 0x46513637566a0000000000000000000000000000000000000000000000000000
000003f8: PUSH1 0x44
000003fa: DUP3
000003fb: ADD
000003fc: MSTORE
000003fd: PUSH1 0x64
000003ff: ADD
00000400: JUMPDEST
00000401: PUSH1 0x40
00000403: MLOAD
00000404: DUP1
00000405: SWAP2
00000406: SUB
00000407: SWAP1
00000408: REVERT
00000409: JUMPDEST
0000040a: DUP4
0000040b: PUSH1 0x00
0000040d: DUP5
0000040e: PUSH2 0x042e
00000411: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000426: DUP3
00000427: AND
00000428: DUP5
00000429: DUP8
0000042a: PUSH2 0x1e26
0000042d: JUMP
0000042e: JUMPDEST
0000042f: PUSH1 0x00
00000431: DUP1
00000432: DUP5
00000433: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000448: AND
00000449: PUSH4 0x0902f1ac
0000044e: PUSH1 0x40
00000450: MLOAD
00000451: DUP2
00000452: PUSH4 0xffffffff
00000457: AND
00000458: PUSH1 0xe0
0000045a: SHL
0000045b: DUP2
0000045c: MSTORE
0000045d: PUSH1 0x04
0000045f: ADD
00000460: PUSH1 0x60
00000462: PUSH1 0x40
00000464: MLOAD
00000465: DUP1
00000466: DUP4
00000467: SUB
00000468: DUP2
00000469: DUP7
0000046a: DUP1
0000046b: EXTCODESIZE
0000046c: ISZERO
0000046d: DUP1
0000046e: ISZERO
0000046f: PUSH2 0x0477
00000472: JUMPI
00000473: PUSH1 0x00
00000475: DUP1
00000476: REVERT
00000477: JUMPDEST
00000478: POP
00000479: GAS
0000047a: STATICCALL
0000047b: ISZERO
0000047c: DUP1
0000047d: ISZERO
0000047e: PUSH2 0x048b
00000481: JUMPI
00000482: RETURNDATASIZE
00000483: PUSH1 0x00
00000485: DUP1
00000486: RETURNDATACOPY
00000487: RETURNDATASIZE
00000488: PUSH1 0x00
0000048a: REVERT
0000048b: JUMPDEST
0000048c: POP
0000048d: POP
0000048e: POP
0000048f: POP
00000490: PUSH1 0x40
00000492: MLOAD
00000493: RETURNDATASIZE
00000494: PUSH1 0x1f
00000496: NOT
00000497: PUSH1 0x1f
00000499: DUP3
0000049a: ADD
0000049b: AND
0000049c: DUP3
0000049d: ADD
0000049e: DUP1
0000049f: PUSH1 0x40
000004a1: MSTORE
000004a2: POP
000004a3: DUP2
000004a4: ADD
000004a5: SWAP1
000004a6: PUSH2 0x04af
000004a9: SWAP2
000004aa: SWAP1
000004ab: PUSH2 0x25cc
000004ae: JUMP
000004af: JUMPDEST
000004b0: POP
000004b1: PUSH1 0x40
000004b3: MLOAD
000004b4: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
000004d5: DUP2
000004d6: MSTORE
000004d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004ec: DUP13
000004ed: DUP2
000004ee: AND
000004ef: PUSH1 0x04
000004f1: DUP4
000004f2: ADD
000004f3: MSTORE
000004f4: PUSH14 0xffffffffffffffffffffffffffff
00000503: SWAP4
00000504: DUP5
00000505: AND
00000506: SWAP6
00000507: POP
00000508: SWAP2
00000509: SWAP1
0000050a: SWAP3
0000050b: AND
0000050c: SWAP3
0000050d: POP
0000050e: DUP4
0000050f: SWAP2
00000510: SWAP1
00000511: DUP6
00000512: AND
00000513: SWAP1
00000514: PUSH4 0x70a08231
00000519: SWAP1
0000051a: PUSH1 0x24
0000051c: ADD
0000051d: PUSH1 0x20
0000051f: PUSH1 0x40
00000521: MLOAD
00000522: DUP1
00000523: DUP4
00000524: SUB
00000525: DUP2
00000526: DUP7
00000527: DUP1
00000528: EXTCODESIZE
00000529: ISZERO
0000052a: DUP1
0000052b: ISZERO
0000052c: PUSH2 0x0534
0000052f: JUMPI
00000530: PUSH1 0x00
00000532: DUP1
00000533: REVERT
00000534: JUMPDEST
00000535: POP
00000536: GAS
00000537: STATICCALL
00000538: ISZERO
00000539: DUP1
0000053a: ISZERO
0000053b: PUSH2 0x0548
0000053e: JUMPI
0000053f: RETURNDATASIZE
00000540: PUSH1 0x00
00000542: DUP1
00000543: RETURNDATACOPY
00000544: RETURNDATASIZE
00000545: PUSH1 0x00
00000547: REVERT
00000548: JUMPDEST
00000549: POP
0000054a: POP
0000054b: POP
0000054c: POP
0000054d: PUSH1 0x40
0000054f: MLOAD
00000550: RETURNDATASIZE
00000551: PUSH1 0x1f
00000553: NOT
00000554: PUSH1 0x1f
00000556: DUP3
00000557: ADD
00000558: AND
00000559: DUP3
0000055a: ADD
0000055b: DUP1
0000055c: PUSH1 0x40
0000055e: MSTORE
0000055f: POP
00000560: DUP2
00000561: ADD
00000562: SWAP1
00000563: PUSH2 0x056c
00000566: SWAP2
00000567: SWAP1
00000568: PUSH2 0x2611
0000056b: JUMP
0000056c: JUMPDEST
0000056d: PUSH2 0x0576
00000570: SWAP2
00000571: SWAP1
00000572: PUSH2 0x27bf
00000575: JUMP
00000576: JUMPDEST
00000577: SWAP4
00000578: POP
00000579: PUSH1 0x00
0000057b: PUSH2 0x0586
0000057e: DUP6
0000057f: PUSH2 0x03e5
00000582: PUSH2 0x2782
00000585: JUMP
00000586: JUMPDEST
00000587: SWAP1
00000588: POP
00000589: PUSH1 0x00
0000058b: PUSH2 0x0594
0000058e: DUP4
0000058f: DUP4
00000590: PUSH2 0x2782
00000593: JUMP
00000594: JUMPDEST
00000595: SWAP1
00000596: POP
00000597: PUSH1 0x00
00000599: DUP3
0000059a: PUSH2 0x05a5
0000059d: DUP7
0000059e: PUSH2 0x03e8
000005a1: PUSH2 0x2782
000005a4: JUMP
000005a5: JUMPDEST
000005a6: PUSH2 0x05af
000005a9: SWAP2
000005aa: SWAP1
000005ab: PUSH2 0x272f
000005ae: JUMP
000005af: JUMPDEST
000005b0: SWAP1
000005b1: POP
000005b2: PUSH1 0x00
000005b4: PUSH2 0x05bd
000005b7: DUP3
000005b8: DUP5
000005b9: PUSH2 0x2747
000005bc: JUMP
000005bd: JUMPDEST
000005be: SWAP1
000005bf: POP
000005c0: DUP10
000005c1: DUP2
000005c2: LT
000005c3: ISZERO
000005c4: PUSH2 0x0629
000005c7: JUMPI
000005c8: PUSH1 0x40
000005ca: MLOAD
000005cb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000005ec: DUP2
000005ed: MSTORE
000005ee: PUSH1 0x20
000005f0: PUSH1 0x04
000005f2: DUP3
000005f3: ADD
000005f4: MSTORE
000005f5: PUSH1 0x06
000005f7: PUSH1 0x24
000005f9: DUP3
000005fa: ADD
000005fb: MSTORE
000005fc: PUSH32 0x766e536430310000000000000000000000000000000000000000000000000000
0000061d: PUSH1 0x44
0000061f: DUP3
00000620: ADD
00000621: MSTORE
00000622: PUSH1 0x64
00000624: ADD
00000625: PUSH2 0x0400
00000628: JUMP
00000629: JUMPDEST
0000062a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000063f: DUP10
00000640: AND
00000641: PUSH4 0x022c0d9f
00000646: PUSH1 0x00
00000648: DUP4
00000649: ADDRESS
0000064a: DUP3
0000064b: JUMPDEST
0000064c: PUSH1 0x40
0000064e: MLOAD
0000064f: SWAP1
00000650: DUP1
00000651: DUP3
00000652: MSTORE
00000653: DUP1
00000654: PUSH1 0x1f
00000656: ADD
00000657: PUSH1 0x1f
00000659: NOT
0000065a: AND
0000065b: PUSH1 0x20
0000065d: ADD
0000065e: DUP3
0000065f: ADD
00000660: PUSH1 0x40
00000662: MSTORE
00000663: DUP1
00000664: ISZERO
00000665: PUSH2 0x0675
00000668: JUMPI
00000669: PUSH1 0x20
0000066b: DUP3
0000066c: ADD
0000066d: DUP2
0000066e: DUP1
0000066f: CALLDATASIZE
00000670: DUP4
00000671: CALLDATACOPY
00000672: ADD
00000673: SWAP1
00000674: POP
00000675: JUMPDEST
00000676: POP
00000677: PUSH1 0x40
00000679: MLOAD
0000067a: DUP6
0000067b: PUSH4 0xffffffff
00000680: AND
00000681: PUSH1 0xe0
00000683: SHL
00000684: DUP2
00000685: MSTORE
00000686: PUSH1 0x04
00000688: ADD
00000689: PUSH2 0x0695
0000068c: SWAP5
0000068d: SWAP4
0000068e: SWAP3
0000068f: SWAP2
00000690: SWAP1
00000691: PUSH2 0x26d7
00000694: JUMP
00000695: JUMPDEST
00000696: PUSH1 0x00
00000698: PUSH1 0x40
0000069a: MLOAD
0000069b: DUP1
0000069c: DUP4
0000069d: SUB
0000069e: DUP2
0000069f: PUSH1 0x00
000006a1: DUP8
000006a2: DUP1
000006a3: EXTCODESIZE
000006a4: ISZERO
000006a5: DUP1
000006a6: ISZERO
000006a7: PUSH2 0x06af
000006aa: JUMPI
000006ab: PUSH1 0x00
000006ad: DUP1
000006ae: REVERT
000006af: JUMPDEST
000006b0: POP
000006b1: GAS
000006b2: CALL
000006b3: ISZERO
000006b4: DUP1
000006b5: ISZERO
000006b6: PUSH2 0x06c3
000006b9: JUMPI
000006ba: RETURNDATASIZE
000006bb: PUSH1 0x00
000006bd: DUP1
000006be: RETURNDATACOPY
000006bf: RETURNDATASIZE
000006c0: PUSH1 0x00
000006c2: REVERT
000006c3: JUMPDEST
000006c4: POP
000006c5: POP
000006c6: POP
000006c7: POP
000006c8: POP
000006c9: POP
000006ca: POP
000006cb: POP
000006cc: POP
000006cd: POP
000006ce: POP
000006cf: POP
000006d0: POP
000006d1: POP
000006d2: POP
000006d3: POP
000006d4: POP
000006d5: JUMP
000006d6: JUMPDEST
000006d7: PUSH1 0x00
000006d9: SLOAD
000006da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006ef: AND
000006f0: CALLER
000006f1: EQ
000006f2: DUP1
000006f3: PUSH2 0x070b
000006f6: JUMPI
000006f7: POP
000006f8: CALLER
000006f9: PUSH1 0x00
000006fb: SWAP1
000006fc: DUP2
000006fd: MSTORE
000006fe: PUSH1 0x02
00000700: PUSH1 0x20
00000702: MSTORE
00000703: PUSH1 0x40
00000705: SWAP1
00000706: KECCAK256
00000707: SLOAD
00000708: PUSH1 0xff
0000070a: AND
0000070b: JUMPDEST
0000070c: PUSH2 0x0771
0000070f: JUMPI
00000710: PUSH1 0x40
00000712: MLOAD
00000713: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000734: DUP2
00000735: MSTORE
00000736: PUSH1 0x20
00000738: PUSH1 0x04
0000073a: DUP3
0000073b: ADD
0000073c: MSTORE
0000073d: PUSH1 0x06
0000073f: PUSH1 0x24
00000741: DUP3
00000742: ADD
00000743: MSTORE
00000744: PUSH32 0x674a356544390000000000000000000000000000000000000000000000000000
00000765: PUSH1 0x44
00000767: DUP3
00000768: ADD
00000769: MSTORE
0000076a: PUSH1 0x64
0000076c: ADD
0000076d: PUSH2 0x0400
00000770: JUMP
00000771: JUMPDEST
00000772: PUSH1 0x00
00000774: SLOAD
00000775: DUP2
00000776: SWAP1
00000777: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000078c: DUP1
0000078d: DUP4
0000078e: AND
0000078f: SWAP2
00000790: AND
00000791: EQ
00000792: DUP1
00000793: PUSH2 0x07c1
00000796: JUMPI
00000797: POP
00000798: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ad: DUP2
000007ae: AND
000007af: PUSH1 0x00
000007b1: SWAP1
000007b2: DUP2
000007b3: MSTORE
000007b4: PUSH1 0x03
000007b6: PUSH1 0x20
000007b8: MSTORE
000007b9: PUSH1 0x40
000007bb: SWAP1
000007bc: KECCAK256
000007bd: SLOAD
000007be: PUSH1 0xff
000007c0: AND
000007c1: JUMPDEST
000007c2: PUSH2 0x0827
000007c5: JUMPI
000007c6: PUSH1 0x40
000007c8: MLOAD
000007c9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000007ea: DUP2
000007eb: MSTORE
000007ec: PUSH1 0x20
000007ee: PUSH1 0x04
000007f0: DUP3
000007f1: ADD
000007f2: MSTORE
000007f3: PUSH1 0x06
000007f5: PUSH1 0x24
000007f7: DUP3
000007f8: ADD
000007f9: MSTORE
000007fa: PUSH32 0x36316f4946730000000000000000000000000000000000000000000000000000
0000081b: PUSH1 0x44
0000081d: DUP3
0000081e: ADD
0000081f: MSTORE
00000820: PUSH1 0x64
00000822: ADD
00000823: PUSH2 0x0400
00000826: JUMP
00000827: JUMPDEST
00000828: PUSH2 0x0848
0000082b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000840: DUP6
00000841: AND
00000842: DUP4
00000843: DUP6
00000844: PUSH2 0x1e26
00000847: JUMP
00000848: JUMPDEST
00000849: POP
0000084a: POP
0000084b: POP
0000084c: POP
0000084d: JUMP
0000084e: JUMPDEST
0000084f: PUSH1 0x00
00000851: SLOAD
00000852: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000867: AND
00000868: CALLER
00000869: EQ
0000086a: PUSH2 0x08cf
0000086d: JUMPI
0000086e: PUSH1 0x40
00000870: MLOAD
00000871: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000892: DUP2
00000893: MSTORE
00000894: PUSH1 0x20
00000896: PUSH1 0x04
00000898: DUP3
00000899: ADD
0000089a: MSTORE
0000089b: PUSH1 0x06
0000089d: PUSH1 0x24
0000089f: DUP3
000008a0: ADD
000008a1: MSTORE
000008a2: PUSH32 0x7a33325468440000000000000000000000000000000000000000000000000000
000008c3: PUSH1 0x44
000008c5: DUP3
000008c6: ADD
000008c7: MSTORE
000008c8: PUSH1 0x64
000008ca: ADD
000008cb: PUSH2 0x0400
000008ce: JUMP
000008cf: JUMPDEST
000008d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008e5: DUP2
000008e6: AND
000008e7: PUSH1 0x00
000008e9: DUP2
000008ea: DUP2
000008eb: MSTORE
000008ec: PUSH1 0x01
000008ee: PUSH1 0x20
000008f0: SWAP1
000008f1: DUP2
000008f2: MSTORE
000008f3: PUSH1 0x40
000008f5: DUP1
000008f6: DUP4
000008f7: KECCAK256
000008f8: DUP1
000008f9: SLOAD
000008fa: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
0000091b: AND
0000091c: SWAP1
0000091d: SSTORE
0000091e: DUP1
0000091f: MLOAD
00000920: SWAP4
00000921: DUP5
00000922: MSTORE
00000923: SWAP1
00000924: DUP4
00000925: ADD
00000926: SWAP2
00000927: SWAP1
00000928: SWAP2
00000929: MSTORE
0000092a: PUSH32 0xe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d90650
0000094b: SWAP2
0000094c: ADD
0000094d: JUMPDEST
0000094e: PUSH1 0x40
00000950: MLOAD
00000951: DUP1
00000952: SWAP2
00000953: SUB
00000954: SWAP1
00000955: LOG1
00000956: POP
00000957: JUMP
00000958: JUMPDEST
00000959: CALLER
0000095a: PUSH1 0x00
0000095c: SWAP1
0000095d: DUP2
0000095e: MSTORE
0000095f: PUSH1 0x01
00000961: PUSH1 0x20
00000963: MSTORE
00000964: PUSH1 0x40
00000966: SWAP1
00000967: KECCAK256
00000968: SLOAD
00000969: PUSH1 0xff
0000096b: AND
0000096c: PUSH2 0x09d1
0000096f: JUMPI
00000970: PUSH1 0x40
00000972: MLOAD
00000973: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000994: DUP2
00000995: MSTORE
00000996: PUSH1 0x20
00000998: PUSH1 0x04
0000099a: DUP3
0000099b: ADD
0000099c: MSTORE
0000099d: PUSH1 0x06
0000099f: PUSH1 0x24
000009a1: DUP3
000009a2: ADD
000009a3: MSTORE
000009a4: PUSH32 0x46513637566a0000000000000000000000000000000000000000000000000000
000009c5: PUSH1 0x44
000009c7: DUP3
000009c8: ADD
000009c9: MSTORE
000009ca: PUSH1 0x64
000009cc: ADD
000009cd: PUSH2 0x0400
000009d0: JUMP
000009d1: JUMPDEST
000009d2: PUSH1 0x40
000009d4: DUP1
000009d5: MLOAD
000009d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009eb: DUP1
000009ec: DUP9
000009ed: AND
000009ee: PUSH1 0x20
000009f0: DUP4
000009f1: ADD
000009f2: MSTORE
000009f3: DUP9
000009f4: AND
000009f5: SWAP2
000009f6: DUP2
000009f7: ADD
000009f8: SWAP2
000009f9: SWAP1
000009fa: SWAP2
000009fb: MSTORE
000009fc: PUSH1 0x60
000009fe: DUP2
000009ff: ADD
00000a00: DUP6
00000a01: SWAP1
00000a02: MSTORE
00000a03: DUP8
00000a04: SWAP1
00000a05: PUSH1 0x00
00000a07: SWAP1
00000a08: PUSH1 0x80
00000a0a: ADD
00000a0b: PUSH1 0x40
00000a0d: DUP1
00000a0e: MLOAD
00000a0f: DUP1
00000a10: DUP4
00000a11: SUB
00000a12: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00000a33: ADD
00000a34: DUP2
00000a35: MSTORE
00000a36: DUP3
00000a37: DUP3
00000a38: MSTORE
00000a39: DUP1
00000a3a: MLOAD
00000a3b: PUSH1 0x20
00000a3d: SWAP2
00000a3e: DUP3
00000a3f: ADD
00000a40: KECCAK256
00000a41: DUP4
00000a42: DUP4
00000a43: ADD
00000a44: SWAP1
00000a45: SWAP3
00000a46: MSTORE
00000a47: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a5c: DUP12
00000a5d: DUP2
00000a5e: AND
00000a5f: DUP5
00000a60: MSTORE
00000a61: SWAP1
00000a62: DUP4
00000a63: ADD
00000a64: DUP3
00000a65: SWAP1
00000a66: MSTORE
00000a67: SWAP1
00000a68: SWAP3
00000a69: POP
00000a6a: PUSH1 0x00
00000a6c: SWAP1
00000a6d: DUP5
00000a6e: AND
00000a6f: PUSH4 0x128acb08
00000a74: ADDRESS
00000a75: DUP4
00000a76: PUSH2 0x0a7e
00000a79: DUP12
00000a7a: PUSH2 0x1eff
00000a7d: JUMP
00000a7e: JUMPDEST
00000a7f: DUP10
00000a80: DUP8
00000a81: PUSH1 0x40
00000a83: MLOAD
00000a84: PUSH1 0x20
00000a86: ADD
00000a87: PUSH2 0x0ab8
00000a8a: SWAP2
00000a8b: SWAP1
00000a8c: DUP2
00000a8d: MLOAD
00000a8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000aa3: AND
00000aa4: DUP2
00000aa5: MSTORE
00000aa6: PUSH1 0x20
00000aa8: SWAP2
00000aa9: DUP3
00000aaa: ADD
00000aab: MLOAD
00000aac: SWAP2
00000aad: DUP2
00000aae: ADD
00000aaf: SWAP2
00000ab0: SWAP1
00000ab1: SWAP2
00000ab2: MSTORE
00000ab3: PUSH1 0x40
00000ab5: ADD
00000ab6: SWAP1
00000ab7: JUMP
00000ab8: JUMPDEST
00000ab9: PUSH1 0x40
00000abb: MLOAD
00000abc: PUSH1 0x20
00000abe: DUP2
00000abf: DUP4
00000ac0: SUB
00000ac1: SUB
00000ac2: DUP2
00000ac3: MSTORE
00000ac4: SWAP1
00000ac5: PUSH1 0x40
00000ac7: MSTORE
00000ac8: PUSH1 0x40
00000aca: MLOAD
00000acb: DUP7
00000acc: PUSH4 0xffffffff
00000ad1: AND
00000ad2: PUSH1 0xe0
00000ad4: SHL
00000ad5: DUP2
00000ad6: MSTORE
00000ad7: PUSH1 0x04
00000ad9: ADD
00000ada: PUSH2 0x0ae7
00000add: SWAP6
00000ade: SWAP5
00000adf: SWAP4
00000ae0: SWAP3
00000ae1: SWAP2
00000ae2: SWAP1
00000ae3: PUSH2 0x2690
00000ae6: JUMP
00000ae7: JUMPDEST
00000ae8: PUSH1 0x40
00000aea: DUP1
00000aeb: MLOAD
00000aec: DUP1
00000aed: DUP4
00000aee: SUB
00000aef: DUP2
00000af0: PUSH1 0x00
00000af2: DUP8
00000af3: DUP1
00000af4: EXTCODESIZE
00000af5: ISZERO
00000af6: DUP1
00000af7: ISZERO
00000af8: PUSH2 0x0b00
00000afb: JUMPI
00000afc: PUSH1 0x00
00000afe: DUP1
00000aff: REVERT
00000b00: JUMPDEST
00000b01: POP
00000b02: GAS
00000b03: CALL
00000b04: ISZERO
00000b05: DUP1
00000b06: ISZERO
00000b07: PUSH2 0x0b14
00000b0a: JUMPI
00000b0b: RETURNDATASIZE
00000b0c: PUSH1 0x00
00000b0e: DUP1
00000b0f: RETURNDATACOPY
00000b10: RETURNDATASIZE
00000b11: PUSH1 0x00
00000b13: REVERT
00000b14: JUMPDEST
00000b15: POP
00000b16: POP
00000b17: POP
00000b18: POP
00000b19: PUSH1 0x40
00000b1b: MLOAD
00000b1c: RETURNDATASIZE
00000b1d: PUSH1 0x1f
00000b1f: NOT
00000b20: PUSH1 0x1f
00000b22: DUP3
00000b23: ADD
00000b24: AND
00000b25: DUP3
00000b26: ADD
00000b27: DUP1
00000b28: PUSH1 0x40
00000b2a: MSTORE
00000b2b: POP
00000b2c: DUP2
00000b2d: ADD
00000b2e: SWAP1
00000b2f: PUSH2 0x0b38
00000b32: SWAP2
00000b33: SWAP1
00000b34: PUSH2 0x24a9
00000b37: JUMP
00000b38: JUMPDEST
00000b39: POP
00000b3a: SWAP1
00000b3b: POP
00000b3c: DUP6
00000b3d: PUSH2 0x0b45
00000b40: DUP3
00000b41: PUSH2 0x283b
00000b44: JUMP
00000b45: JUMPDEST
00000b46: LT
00000b47: ISZERO
00000b48: PUSH2 0x0bad
00000b4b: JUMPI
00000b4c: PUSH1 0x40
00000b4e: MLOAD
00000b4f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000b70: DUP2
00000b71: MSTORE
00000b72: PUSH1 0x20
00000b74: PUSH1 0x04
00000b76: DUP3
00000b77: ADD
00000b78: MSTORE
00000b79: PUSH1 0x06
00000b7b: PUSH1 0x24
00000b7d: DUP3
00000b7e: ADD
00000b7f: MSTORE
00000b80: PUSH32 0x3574443844500000000000000000000000000000000000000000000000000000
00000ba1: PUSH1 0x44
00000ba3: DUP3
00000ba4: ADD
00000ba5: MSTORE
00000ba6: PUSH1 0x64
00000ba8: ADD
00000ba9: PUSH2 0x0400
00000bac: JUMP
00000bad: JUMPDEST
00000bae: POP
00000baf: POP
00000bb0: POP
00000bb1: POP
00000bb2: POP
00000bb3: POP
00000bb4: POP
00000bb5: POP
00000bb6: POP
00000bb7: POP
00000bb8: POP
00000bb9: JUMP
00000bba: JUMPDEST
00000bbb: CALLER
00000bbc: PUSH1 0x00
00000bbe: SWAP1
00000bbf: DUP2
00000bc0: MSTORE
00000bc1: PUSH1 0x01
00000bc3: PUSH1 0x20
00000bc5: MSTORE
00000bc6: PUSH1 0x40
00000bc8: SWAP1
00000bc9: KECCAK256
00000bca: SLOAD
00000bcb: PUSH1 0xff
00000bcd: AND
00000bce: PUSH2 0x0c33
00000bd1: JUMPI
00000bd2: PUSH1 0x40
00000bd4: MLOAD
00000bd5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000bf6: DUP2
00000bf7: MSTORE
00000bf8: PUSH1 0x20
00000bfa: PUSH1 0x04
00000bfc: DUP3
00000bfd: ADD
00000bfe: MSTORE
00000bff: PUSH1 0x06
00000c01: PUSH1 0x24
00000c03: DUP3
00000c04: ADD
00000c05: MSTORE
00000c06: PUSH32 0x46513637566a0000000000000000000000000000000000000000000000000000
00000c27: PUSH1 0x44
00000c29: DUP3
00000c2a: ADD
00000c2b: MSTORE
00000c2c: PUSH1 0x64
00000c2e: ADD
00000c2f: PUSH2 0x0400
00000c32: JUMP
00000c33: JUMPDEST
00000c34: PUSH1 0x40
00000c36: DUP1
00000c37: MLOAD
00000c38: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c4d: DUP9
00000c4e: DUP2
00000c4f: AND
00000c50: PUSH1 0x20
00000c52: DUP1
00000c53: DUP5
00000c54: ADD
00000c55: DUP3
00000c56: SWAP1
00000c57: MSTORE
00000c58: DUP10
00000c59: DUP4
00000c5a: AND
00000c5b: DUP5
00000c5c: DUP7
00000c5d: ADD
00000c5e: MSTORE
00000c5f: PUSH1 0x60
00000c61: DUP1
00000c62: DUP6
00000c63: ADD
00000c64: DUP11
00000c65: SWAP1
00000c66: MSTORE
00000c67: DUP6
00000c68: MLOAD
00000c69: DUP1
00000c6a: DUP7
00000c6b: SUB
00000c6c: SWAP1
00000c6d: SWAP2
00000c6e: ADD
00000c6f: DUP2
00000c70: MSTORE
00000c71: PUSH1 0x80
00000c73: DUP6
00000c74: ADD
00000c75: DUP1
00000c76: DUP8
00000c77: MSTORE
00000c78: DUP2
00000c79: MLOAD
00000c7a: SWAP2
00000c7b: SWAP1
00000c7c: SWAP3
00000c7d: ADD
00000c7e: KECCAK256
00000c7f: PUSH1 0xc0
00000c81: DUP6
00000c82: ADD
00000c83: SWAP1
00000c84: SWAP6
00000c85: MSTORE
00000c86: SWAP1
00000c87: DUP2
00000c88: MSTORE
00000c89: PUSH1 0xa0
00000c8b: SWAP1
00000c8c: SWAP3
00000c8d: ADD
00000c8e: DUP4
00000c8f: SWAP1
00000c90: MSTORE
00000c91: DUP10
00000c92: SWAP3
00000c93: SWAP2
00000c94: SWAP1
00000c95: PUSH1 0x00
00000c97: SWAP1
00000c98: DUP5
00000c99: AND
00000c9a: PUSH4 0x128acb08
00000c9f: ADDRESS
00000ca0: PUSH1 0x01
00000ca2: PUSH2 0x0caa
00000ca5: DUP12
00000ca6: PUSH2 0x1eff
00000ca9: JUMP
00000caa: JUMPDEST
00000cab: DUP10
00000cac: DUP8
00000cad: PUSH1 0x40
00000caf: MLOAD
00000cb0: PUSH1 0x20
00000cb2: ADD
00000cb3: PUSH2 0x0ce4
00000cb6: SWAP2
00000cb7: SWAP1
00000cb8: DUP2
00000cb9: MLOAD
00000cba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ccf: AND
00000cd0: DUP2
00000cd1: MSTORE
00000cd2: PUSH1 0x20
00000cd4: SWAP2
00000cd5: DUP3
00000cd6: ADD
00000cd7: MLOAD
00000cd8: SWAP2
00000cd9: DUP2
00000cda: ADD
00000cdb: SWAP2
00000cdc: SWAP1
00000cdd: SWAP2
00000cde: MSTORE
00000cdf: PUSH1 0x40
00000ce1: ADD
00000ce2: SWAP1
00000ce3: JUMP
00000ce4: JUMPDEST
00000ce5: PUSH1 0x40
00000ce7: MLOAD
00000ce8: PUSH1 0x20
00000cea: DUP2
00000ceb: DUP4
00000cec: SUB
00000ced: SUB
00000cee: DUP2
00000cef: MSTORE
00000cf0: SWAP1
00000cf1: PUSH1 0x40
00000cf3: MSTORE
00000cf4: PUSH1 0x40
00000cf6: MLOAD
00000cf7: DUP7
00000cf8: PUSH4 0xffffffff
00000cfd: AND
00000cfe: PUSH1 0xe0
00000d00: SHL
00000d01: DUP2
00000d02: MSTORE
00000d03: PUSH1 0x04
00000d05: ADD
00000d06: PUSH2 0x0d13
00000d09: SWAP6
00000d0a: SWAP5
00000d0b: SWAP4
00000d0c: SWAP3
00000d0d: SWAP2
00000d0e: SWAP1
00000d0f: PUSH2 0x2690
00000d12: JUMP
00000d13: JUMPDEST
00000d14: PUSH1 0x40
00000d16: DUP1
00000d17: MLOAD
00000d18: DUP1
00000d19: DUP4
00000d1a: SUB
00000d1b: DUP2
00000d1c: PUSH1 0x00
00000d1e: DUP8
00000d1f: DUP1
00000d20: EXTCODESIZE
00000d21: ISZERO
00000d22: DUP1
00000d23: ISZERO
00000d24: PUSH2 0x0d2c
00000d27: JUMPI
00000d28: PUSH1 0x00
00000d2a: DUP1
00000d2b: REVERT
00000d2c: JUMPDEST
00000d2d: POP
00000d2e: GAS
00000d2f: CALL
00000d30: ISZERO
00000d31: DUP1
00000d32: ISZERO
00000d33: PUSH2 0x0d40
00000d36: JUMPI
00000d37: RETURNDATASIZE
00000d38: PUSH1 0x00
00000d3a: DUP1
00000d3b: RETURNDATACOPY
00000d3c: RETURNDATASIZE
00000d3d: PUSH1 0x00
00000d3f: REVERT
00000d40: JUMPDEST
00000d41: POP
00000d42: POP
00000d43: POP
00000d44: POP
00000d45: PUSH1 0x40
00000d47: MLOAD
00000d48: RETURNDATASIZE
00000d49: PUSH1 0x1f
00000d4b: NOT
00000d4c: PUSH1 0x1f
00000d4e: DUP3
00000d4f: ADD
00000d50: AND
00000d51: DUP3
00000d52: ADD
00000d53: DUP1
00000d54: PUSH1 0x40
00000d56: MSTORE
00000d57: POP
00000d58: DUP2
00000d59: ADD
00000d5a: SWAP1
00000d5b: PUSH2 0x0d64
00000d5e: SWAP2
00000d5f: SWAP1
00000d60: PUSH2 0x24a9
00000d63: JUMP
00000d64: JUMPDEST
00000d65: SWAP2
00000d66: POP
00000d67: POP
00000d68: DUP6
00000d69: DUP2
00000d6a: PUSH2 0x0b45
00000d6d: SWAP1
00000d6e: PUSH2 0x283b
00000d71: JUMP
00000d72: JUMPDEST
00000d73: CALLER
00000d74: PUSH1 0x00
00000d76: SWAP1
00000d77: DUP2
00000d78: MSTORE
00000d79: PUSH1 0x01
00000d7b: PUSH1 0x20
00000d7d: MSTORE
00000d7e: PUSH1 0x40
00000d80: SWAP1
00000d81: KECCAK256
00000d82: SLOAD
00000d83: PUSH1 0xff
00000d85: AND
00000d86: PUSH2 0x0deb
00000d89: JUMPI
00000d8a: PUSH1 0x40
00000d8c: MLOAD
00000d8d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000dae: DUP2
00000daf: MSTORE
00000db0: PUSH1 0x20
00000db2: PUSH1 0x04
00000db4: DUP3
00000db5: ADD
00000db6: MSTORE
00000db7: PUSH1 0x06
00000db9: PUSH1 0x24
00000dbb: DUP3
00000dbc: ADD
00000dbd: MSTORE
00000dbe: PUSH32 0x46513637566a0000000000000000000000000000000000000000000000000000
00000ddf: PUSH1 0x44
00000de1: DUP3
00000de2: ADD
00000de3: MSTORE
00000de4: PUSH1 0x64
00000de6: ADD
00000de7: PUSH2 0x0400
00000dea: JUMP
00000deb: JUMPDEST
00000dec: PUSH1 0x00
00000dee: DUP5
00000def: SWAP1
00000df0: POP
00000df1: PUSH1 0x00
00000df3: DUP1
00000df4: DUP3
00000df5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e0a: AND
00000e0b: PUSH4 0x0902f1ac
00000e10: PUSH1 0x40
00000e12: MLOAD
00000e13: DUP2
00000e14: PUSH4 0xffffffff
00000e19: AND
00000e1a: PUSH1 0xe0
00000e1c: SHL
00000e1d: DUP2
00000e1e: MSTORE
00000e1f: PUSH1 0x04
00000e21: ADD
00000e22: PUSH1 0x60
00000e24: PUSH1 0x40
00000e26: MLOAD
00000e27: DUP1
00000e28: DUP4
00000e29: SUB
00000e2a: DUP2
00000e2b: DUP7
00000e2c: DUP1
00000e2d: EXTCODESIZE
00000e2e: ISZERO
00000e2f: DUP1
00000e30: ISZERO
00000e31: PUSH2 0x0e39
00000e34: JUMPI
00000e35: PUSH1 0x00
00000e37: DUP1
00000e38: REVERT
00000e39: JUMPDEST
00000e3a: POP
00000e3b: GAS
00000e3c: STATICCALL
00000e3d: ISZERO
00000e3e: DUP1
00000e3f: ISZERO
00000e40: PUSH2 0x0e4d
00000e43: JUMPI
00000e44: RETURNDATASIZE
00000e45: PUSH1 0x00
00000e47: DUP1
00000e48: RETURNDATACOPY
00000e49: RETURNDATASIZE
00000e4a: PUSH1 0x00
00000e4c: REVERT
00000e4d: JUMPDEST
00000e4e: POP
00000e4f: POP
00000e50: POP
00000e51: POP
00000e52: PUSH1 0x40
00000e54: MLOAD
00000e55: RETURNDATASIZE
00000e56: PUSH1 0x1f
00000e58: NOT
00000e59: PUSH1 0x1f
00000e5b: DUP3
00000e5c: ADD
00000e5d: AND
00000e5e: DUP3
00000e5f: ADD
00000e60: DUP1
00000e61: PUSH1 0x40
00000e63: MSTORE
00000e64: POP
00000e65: DUP2
00000e66: ADD
00000e67: SWAP1
00000e68: PUSH2 0x0e71
00000e6b: SWAP2
00000e6c: SWAP1
00000e6d: PUSH2 0x25cc
00000e70: JUMP
00000e71: JUMPDEST
00000e72: POP
00000e73: PUSH14 0xffffffffffffffffffffffffffff
00000e82: SWAP2
00000e83: DUP3
00000e84: AND
00000e85: SWAP4
00000e86: POP
00000e87: AND
00000e88: SWAP1
00000e89: POP
00000e8a: PUSH1 0x00
00000e8c: PUSH2 0x0e97
00000e8f: DUP7
00000e90: PUSH2 0x03e5
00000e93: PUSH2 0x2782
00000e96: JUMP
00000e97: JUMPDEST
00000e98: SWAP1
00000e99: POP
00000e9a: PUSH1 0x00
00000e9c: PUSH2 0x0ea5
00000e9f: DUP4
00000ea0: DUP4
00000ea1: PUSH2 0x2782
00000ea4: JUMP
00000ea5: JUMPDEST
00000ea6: SWAP1
00000ea7: POP
00000ea8: PUSH1 0x00
00000eaa: DUP3
00000eab: PUSH2 0x0eb6
00000eae: DUP7
00000eaf: PUSH2 0x03e8
00000eb2: PUSH2 0x2782
00000eb5: JUMP
00000eb6: JUMPDEST
00000eb7: PUSH2 0x0ec0
00000eba: SWAP2
00000ebb: SWAP1
00000ebc: PUSH2 0x272f
00000ebf: JUMP
00000ec0: JUMPDEST
00000ec1: SWAP1
00000ec2: POP
00000ec3: PUSH1 0x00
00000ec5: PUSH2 0x0ece
00000ec8: DUP3
00000ec9: DUP5
00000eca: PUSH2 0x2747
00000ecd: JUMP
00000ece: JUMPDEST
00000ecf: SWAP1
00000ed0: POP
00000ed1: DUP8
00000ed2: DUP2
00000ed3: LT
00000ed4: ISZERO
00000ed5: PUSH2 0x0f3a
00000ed8: JUMPI
00000ed9: PUSH1 0x40
00000edb: MLOAD
00000edc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000efd: DUP2
00000efe: MSTORE
00000eff: PUSH1 0x20
00000f01: PUSH1 0x04
00000f03: DUP3
00000f04: ADD
00000f05: MSTORE
00000f06: PUSH1 0x06
00000f08: PUSH1 0x24
00000f0a: DUP3
00000f0b: ADD
00000f0c: MSTORE
00000f0d: PUSH32 0x766e536430310000000000000000000000000000000000000000000000000000
00000f2e: PUSH1 0x44
00000f30: DUP3
00000f31: ADD
00000f32: MSTORE
00000f33: PUSH1 0x64
00000f35: ADD
00000f36: PUSH2 0x0400
00000f39: JUMP
00000f3a: JUMPDEST
00000f3b: DUP10
00000f3c: PUSH2 0x0f5c
00000f3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f54: DUP3
00000f55: AND
00000f56: DUP14
00000f57: DUP13
00000f58: PUSH2 0x1e26
00000f5b: JUMP
00000f5c: JUMPDEST
00000f5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f72: DUP9
00000f73: AND
00000f74: PUSH4 0x022c0d9f
00000f79: PUSH1 0x00
00000f7b: DUP5
00000f7c: ADDRESS
00000f7d: DUP3
00000f7e: JUMPDEST
00000f7f: PUSH1 0x40
00000f81: MLOAD
00000f82: SWAP1
00000f83: DUP1
00000f84: DUP3
00000f85: MSTORE
00000f86: DUP1
00000f87: PUSH1 0x1f
00000f89: ADD
00000f8a: PUSH1 0x1f
00000f8c: NOT
00000f8d: AND
00000f8e: PUSH1 0x20
00000f90: ADD
00000f91: DUP3
00000f92: ADD
00000f93: PUSH1 0x40
00000f95: MSTORE
00000f96: DUP1
00000f97: ISZERO
00000f98: PUSH2 0x0fa8
00000f9b: JUMPI
00000f9c: PUSH1 0x20
00000f9e: DUP3
00000f9f: ADD
00000fa0: DUP2
00000fa1: DUP1
00000fa2: CALLDATASIZE
00000fa3: DUP4
00000fa4: CALLDATACOPY
00000fa5: ADD
00000fa6: SWAP1
00000fa7: POP
00000fa8: JUMPDEST
00000fa9: POP
00000faa: PUSH1 0x40
00000fac: MLOAD
00000fad: DUP6
00000fae: PUSH4 0xffffffff
00000fb3: AND
00000fb4: PUSH1 0xe0
00000fb6: SHL
00000fb7: DUP2
00000fb8: MSTORE
00000fb9: PUSH1 0x04
00000fbb: ADD
00000fbc: PUSH2 0x0fc8
00000fbf: SWAP5
00000fc0: SWAP4
00000fc1: SWAP3
00000fc2: SWAP2
00000fc3: SWAP1
00000fc4: PUSH2 0x26d7
00000fc7: JUMP
00000fc8: JUMPDEST
00000fc9: PUSH1 0x00
00000fcb: PUSH1 0x40
00000fcd: MLOAD
00000fce: DUP1
00000fcf: DUP4
00000fd0: SUB
00000fd1: DUP2
00000fd2: PUSH1 0x00
00000fd4: DUP8
00000fd5: DUP1
00000fd6: EXTCODESIZE
00000fd7: ISZERO
00000fd8: DUP1
00000fd9: ISZERO
00000fda: PUSH2 0x0fe2
00000fdd: JUMPI
00000fde: PUSH1 0x00
00000fe0: DUP1
00000fe1: REVERT
00000fe2: JUMPDEST
00000fe3: POP
00000fe4: GAS
00000fe5: CALL
00000fe6: ISZERO
00000fe7: DUP1
00000fe8: ISZERO
00000fe9: PUSH2 0x0ff6
00000fec: JUMPI
00000fed: RETURNDATASIZE
00000fee: PUSH1 0x00
00000ff0: DUP1
00000ff1: RETURNDATACOPY
00000ff2: RETURNDATASIZE
00000ff3: PUSH1 0x00
00000ff5: REVERT
00000ff6: JUMPDEST
00000ff7: POP
00000ff8: POP
00000ff9: POP
00000ffa: POP
00000ffb: POP
00000ffc: POP
00000ffd: POP
00000ffe: POP
00000fff: POP
00001000: POP
00001001: POP
00001002: POP
00001003: POP
00001004: POP
00001005: POP
00001006: POP
00001007: JUMP
00001008: JUMPDEST
00001009: PUSH1 0x00
0000100b: SLOAD
0000100c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001021: AND
00001022: CALLER
00001023: EQ
00001024: PUSH2 0x1089
00001027: JUMPI
00001028: PUSH1 0x40
0000102a: MLOAD
0000102b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000104c: DUP2
0000104d: MSTORE
0000104e: PUSH1 0x20
00001050: PUSH1 0x04
00001052: DUP3
00001053: ADD
00001054: MSTORE
00001055: PUSH1 0x06
00001057: PUSH1 0x24
00001059: DUP3
0000105a: ADD
0000105b: MSTORE
0000105c: PUSH32 0x7a33325468440000000000000000000000000000000000000000000000000000
0000107d: PUSH1 0x44
0000107f: DUP3
00001080: ADD
00001081: MSTORE
00001082: PUSH1 0x64
00001084: ADD
00001085: PUSH2 0x0400
00001088: JUMP
00001089: JUMPDEST
0000108a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000109f: DUP2
000010a0: AND
000010a1: PUSH1 0x00
000010a3: DUP2
000010a4: DUP2
000010a5: MSTORE
000010a6: PUSH1 0x02
000010a8: PUSH1 0x20
000010aa: SWAP1
000010ab: DUP2
000010ac: MSTORE
000010ad: PUSH1 0x40
000010af: SWAP2
000010b0: DUP3
000010b1: SWAP1
000010b2: KECCAK256
000010b3: DUP1
000010b4: SLOAD
000010b5: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
000010d6: AND
000010d7: PUSH1 0x01
000010d9: SWAP1
000010da: DUP2
000010db: OR
000010dc: SWAP1
000010dd: SWAP2
000010de: SSTORE
000010df: DUP3
000010e0: MLOAD
000010e1: SWAP4
000010e2: DUP5
000010e3: MSTORE
000010e4: SWAP1
000010e5: DUP4
000010e6: ADD
000010e7: MSTORE
000010e8: PUSH32 0xe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5
00001109: SWAP2
0000110a: ADD
0000110b: PUSH2 0x094d
0000110e: JUMP
0000110f: JUMPDEST
00001110: CALLER
00001111: PUSH1 0x00
00001113: SWAP1
00001114: DUP2
00001115: MSTORE
00001116: PUSH1 0x01
00001118: PUSH1 0x20
0000111a: MSTORE
0000111b: PUSH1 0x40
0000111d: SWAP1
0000111e: KECCAK256
0000111f: SLOAD
00001120: PUSH1 0xff
00001122: AND
00001123: PUSH2 0x1188
00001126: JUMPI
00001127: PUSH1 0x40
00001129: MLOAD
0000112a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000114b: DUP2
0000114c: MSTORE
0000114d: PUSH1 0x20
0000114f: PUSH1 0x04
00001151: DUP3
00001152: ADD
00001153: MSTORE
00001154: PUSH1 0x06
00001156: PUSH1 0x24
00001158: DUP3
00001159: ADD
0000115a: MSTORE
0000115b: PUSH32 0x46513637566a0000000000000000000000000000000000000000000000000000
0000117c: PUSH1 0x44
0000117e: DUP3
0000117f: ADD
00001180: MSTORE
00001181: PUSH1 0x64
00001183: ADD
00001184: PUSH2 0x0400
00001187: JUMP
00001188: JUMPDEST
00001189: DUP4
0000118a: PUSH1 0x00
0000118c: DUP5
0000118d: PUSH2 0x11ad
00001190: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011a5: DUP3
000011a6: AND
000011a7: DUP5
000011a8: DUP8
000011a9: PUSH2 0x1e26
000011ac: JUMP
000011ad: JUMPDEST
000011ae: PUSH1 0x00
000011b0: DUP1
000011b1: DUP5
000011b2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011c7: AND
000011c8: PUSH4 0x0902f1ac
000011cd: PUSH1 0x40
000011cf: MLOAD
000011d0: DUP2
000011d1: PUSH4 0xffffffff
000011d6: AND
000011d7: PUSH1 0xe0
000011d9: SHL
000011da: DUP2
000011db: MSTORE
000011dc: PUSH1 0x04
000011de: ADD
000011df: PUSH1 0x60
000011e1: PUSH1 0x40
000011e3: MLOAD
000011e4: DUP1
000011e5: DUP4
000011e6: SUB
000011e7: DUP2
000011e8: DUP7
000011e9: DUP1
000011ea: EXTCODESIZE
000011eb: ISZERO
000011ec: DUP1
000011ed: ISZERO
000011ee: PUSH2 0x11f6
000011f1: JUMPI
000011f2: PUSH1 0x00
000011f4: DUP1
000011f5: REVERT
000011f6: JUMPDEST
000011f7: POP
000011f8: GAS
000011f9: STATICCALL
000011fa: ISZERO
000011fb: DUP1
000011fc: ISZERO
000011fd: PUSH2 0x120a
00001200: JUMPI
00001201: RETURNDATASIZE
00001202: PUSH1 0x00
00001204: DUP1
00001205: RETURNDATACOPY
00001206: RETURNDATASIZE
00001207: PUSH1 0x00
00001209: REVERT
0000120a: JUMPDEST
0000120b: POP
0000120c: POP
0000120d: POP
0000120e: POP
0000120f: PUSH1 0x40
00001211: MLOAD
00001212: RETURNDATASIZE
00001213: PUSH1 0x1f
00001215: NOT
00001216: PUSH1 0x1f
00001218: DUP3
00001219: ADD
0000121a: AND
0000121b: DUP3
0000121c: ADD
0000121d: DUP1
0000121e: PUSH1 0x40
00001220: MSTORE
00001221: POP
00001222: DUP2
00001223: ADD
00001224: SWAP1
00001225: PUSH2 0x122e
00001228: SWAP2
00001229: SWAP1
0000122a: PUSH2 0x25cc
0000122d: JUMP
0000122e: JUMPDEST
0000122f: POP
00001230: PUSH1 0x40
00001232: MLOAD
00001233: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00001254: DUP2
00001255: MSTORE
00001256: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000126b: DUP13
0000126c: DUP2
0000126d: AND
0000126e: PUSH1 0x04
00001270: DUP4
00001271: ADD
00001272: MSTORE
00001273: PUSH14 0xffffffffffffffffffffffffffff
00001282: SWAP4
00001283: DUP5
00001284: AND
00001285: SWAP6
00001286: POP
00001287: SWAP2
00001288: SWAP1
00001289: SWAP3
0000128a: AND
0000128b: SWAP3
0000128c: POP
0000128d: DUP3
0000128e: SWAP2
0000128f: SWAP1
00001290: DUP6
00001291: AND
00001292: SWAP1
00001293: PUSH4 0x70a08231
00001298: SWAP1
00001299: PUSH1 0x24
0000129b: ADD
0000129c: PUSH1 0x20
0000129e: PUSH1 0x40
000012a0: MLOAD
000012a1: DUP1
000012a2: DUP4
000012a3: SUB
000012a4: DUP2
000012a5: DUP7
000012a6: DUP1
000012a7: EXTCODESIZE
000012a8: ISZERO
000012a9: DUP1
000012aa: ISZERO
000012ab: PUSH2 0x12b3
000012ae: JUMPI
000012af: PUSH1 0x00
000012b1: DUP1
000012b2: REVERT
000012b3: JUMPDEST
000012b4: POP
000012b5: GAS
000012b6: STATICCALL
000012b7: ISZERO
000012b8: DUP1
000012b9: ISZERO
000012ba: PUSH2 0x12c7
000012bd: JUMPI
000012be: RETURNDATASIZE
000012bf: PUSH1 0x00
000012c1: DUP1
000012c2: RETURNDATACOPY
000012c3: RETURNDATASIZE
000012c4: PUSH1 0x00
000012c6: REVERT
000012c7: JUMPDEST
000012c8: POP
000012c9: POP
000012ca: POP
000012cb: POP
000012cc: PUSH1 0x40
000012ce: MLOAD
000012cf: RETURNDATASIZE
000012d0: PUSH1 0x1f
000012d2: NOT
000012d3: PUSH1 0x1f
000012d5: DUP3
000012d6: ADD
000012d7: AND
000012d8: DUP3
000012d9: ADD
000012da: DUP1
000012db: PUSH1 0x40
000012dd: MSTORE
000012de: POP
000012df: DUP2
000012e0: ADD
000012e1: SWAP1
000012e2: PUSH2 0x12eb
000012e5: SWAP2
000012e6: SWAP1
000012e7: PUSH2 0x2611
000012ea: JUMP
000012eb: JUMPDEST
000012ec: PUSH2 0x12f5
000012ef: SWAP2
000012f0: SWAP1
000012f1: PUSH2 0x27bf
000012f4: JUMP
000012f5: JUMPDEST
000012f6: SWAP4
000012f7: POP
000012f8: PUSH1 0x00
000012fa: PUSH2 0x1305
000012fd: DUP6
000012fe: PUSH2 0x03e5
00001301: PUSH2 0x2782
00001304: JUMP
00001305: JUMPDEST
00001306: SWAP1
00001307: POP
00001308: PUSH1 0x00
0000130a: PUSH2 0x1313
0000130d: DUP5
0000130e: DUP4
0000130f: PUSH2 0x2782
00001312: JUMP
00001313: JUMPDEST
00001314: SWAP1
00001315: POP
00001316: PUSH1 0x00
00001318: DUP3
00001319: PUSH2 0x1324
0000131c: DUP6
0000131d: PUSH2 0x03e8
00001320: PUSH2 0x2782
00001323: JUMP
00001324: JUMPDEST
00001325: PUSH2 0x132e
00001328: SWAP2
00001329: SWAP1
0000132a: PUSH2 0x272f
0000132d: JUMP
0000132e: JUMPDEST
0000132f: SWAP1
00001330: POP
00001331: PUSH1 0x00
00001333: PUSH2 0x133c
00001336: DUP3
00001337: DUP5
00001338: PUSH2 0x2747
0000133b: JUMP
0000133c: JUMPDEST
0000133d: SWAP1
0000133e: POP
0000133f: DUP10
00001340: DUP2
00001341: LT
00001342: ISZERO
00001343: PUSH2 0x13a8
00001346: JUMPI
00001347: PUSH1 0x40
00001349: MLOAD
0000134a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000136b: DUP2
0000136c: MSTORE
0000136d: PUSH1 0x20
0000136f: PUSH1 0x04
00001371: DUP3
00001372: ADD
00001373: MSTORE
00001374: PUSH1 0x06
00001376: PUSH1 0x24
00001378: DUP3
00001379: ADD
0000137a: MSTORE
0000137b: PUSH32 0x766e536430310000000000000000000000000000000000000000000000000000
0000139c: PUSH1 0x44
0000139e: DUP3
0000139f: ADD
000013a0: MSTORE
000013a1: PUSH1 0x64
000013a3: ADD
000013a4: PUSH2 0x0400
000013a7: JUMP
000013a8: JUMPDEST
000013a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013be: DUP10
000013bf: AND
000013c0: PUSH4 0x022c0d9f
000013c5: DUP3
000013c6: PUSH1 0x00
000013c8: ADDRESS
000013c9: DUP2
000013ca: PUSH2 0x064b
000013cd: JUMP
000013ce: JUMPDEST
000013cf: PUSH1 0x00
000013d1: SLOAD
000013d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013e7: AND
000013e8: CALLER
000013e9: EQ
000013ea: PUSH2 0x144f
000013ed: JUMPI
000013ee: PUSH1 0x40
000013f0: MLOAD
000013f1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001412: DUP2
00001413: MSTORE
00001414: PUSH1 0x20
00001416: PUSH1 0x04
00001418: DUP3
00001419: ADD
0000141a: MSTORE
0000141b: PUSH1 0x06
0000141d: PUSH1 0x24
0000141f: DUP3
00001420: ADD
00001421: MSTORE
00001422: PUSH32 0x7a33325468440000000000000000000000000000000000000000000000000000
00001443: PUSH1 0x44
00001445: DUP3
00001446: ADD
00001447: MSTORE
00001448: PUSH1 0x64
0000144a: ADD
0000144b: PUSH2 0x0400
0000144e: JUMP
0000144f: JUMPDEST
00001450: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001465: DUP2
00001466: AND
00001467: PUSH1 0x00
00001469: DUP2
0000146a: DUP2
0000146b: MSTORE
0000146c: PUSH1 0x03
0000146e: PUSH1 0x20
00001470: SWAP1
00001471: DUP2
00001472: MSTORE
00001473: PUSH1 0x40
00001475: SWAP2
00001476: DUP3
00001477: SWAP1
00001478: KECCAK256
00001479: DUP1
0000147a: SLOAD
0000147b: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
0000149c: AND
0000149d: PUSH1 0x01
0000149f: SWAP1
000014a0: DUP2
000014a1: OR
000014a2: SWAP1
000014a3: SWAP2
000014a4: SSTORE
000014a5: DUP3
000014a6: MLOAD
000014a7: SWAP4
000014a8: DUP5
000014a9: MSTORE
000014aa: SWAP1
000014ab: DUP4
000014ac: ADD
000014ad: MSTORE
000014ae: PUSH32 0x8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9
000014cf: SWAP2
000014d0: ADD
000014d1: PUSH2 0x094d
000014d4: JUMP
000014d5: JUMPDEST
000014d6: PUSH1 0x00
000014d8: SLOAD
000014d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014ee: AND
000014ef: CALLER
000014f0: EQ
000014f1: DUP1
000014f2: PUSH2 0x150a
000014f5: JUMPI
000014f6: POP
000014f7: CALLER
000014f8: PUSH1 0x00
000014fa: SWAP1
000014fb: DUP2
000014fc: MSTORE
000014fd: PUSH1 0x02
000014ff: PUSH1 0x20
00001501: MSTORE
00001502: PUSH1 0x40
00001504: SWAP1
00001505: KECCAK256
00001506: SLOAD
00001507: PUSH1 0xff
00001509: AND
0000150a: JUMPDEST
0000150b: PUSH2 0x1570
0000150e: JUMPI
0000150f: PUSH1 0x40
00001511: MLOAD
00001512: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001533: DUP2
00001534: MSTORE
00001535: PUSH1 0x20
00001537: PUSH1 0x04
00001539: DUP3
0000153a: ADD
0000153b: MSTORE
0000153c: PUSH1 0x06
0000153e: PUSH1 0x24
00001540: DUP3
00001541: ADD
00001542: MSTORE
00001543: PUSH32 0x674a356544390000000000000000000000000000000000000000000000000000
00001564: PUSH1 0x44
00001566: DUP3
00001567: ADD
00001568: MSTORE
00001569: PUSH1 0x64
0000156b: ADD
0000156c: PUSH2 0x0400
0000156f: JUMP
00001570: JUMPDEST
00001571: PUSH1 0x00
00001573: SLOAD
00001574: DUP2
00001575: SWAP1
00001576: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000158b: DUP1
0000158c: DUP4
0000158d: AND
0000158e: SWAP2
0000158f: AND
00001590: EQ
00001591: DUP1
00001592: PUSH2 0x15c0
00001595: JUMPI
00001596: POP
00001597: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015ac: DUP2
000015ad: AND
000015ae: PUSH1 0x00
000015b0: SWAP1
000015b1: DUP2
000015b2: MSTORE
000015b3: PUSH1 0x03
000015b5: PUSH1 0x20
000015b7: MSTORE
000015b8: PUSH1 0x40
000015ba: SWAP1
000015bb: KECCAK256
000015bc: SLOAD
000015bd: PUSH1 0xff
000015bf: AND
000015c0: JUMPDEST
000015c1: PUSH2 0x1626
000015c4: JUMPI
000015c5: PUSH1 0x40
000015c7: MLOAD
000015c8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000015e9: DUP2
000015ea: MSTORE
000015eb: PUSH1 0x20
000015ed: PUSH1 0x04
000015ef: DUP3
000015f0: ADD
000015f1: MSTORE
000015f2: PUSH1 0x06
000015f4: PUSH1 0x24
000015f6: DUP3
000015f7: ADD
000015f8: MSTORE
000015f9: PUSH32 0x36316f4946730000000000000000000000000000000000000000000000000000
0000161a: PUSH1 0x44
0000161c: DUP3
0000161d: ADD
0000161e: MSTORE
0000161f: PUSH1 0x64
00001621: ADD
00001622: PUSH2 0x0400
00001625: JUMP
00001626: JUMPDEST
00001627: PUSH1 0x00
00001629: JUMPDEST
0000162a: DUP4
0000162b: DUP2
0000162c: LT
0000162d: ISZERO
0000162e: PUSH2 0x1757
00001631: JUMPI
00001632: PUSH1 0x00
00001634: DUP6
00001635: DUP6
00001636: DUP4
00001637: DUP2
00001638: DUP2
00001639: LT
0000163a: PUSH2 0x1645
0000163d: JUMPI
0000163e: PUSH2 0x1645
00001641: PUSH2 0x28a3
00001644: JUMP
00001645: JUMPDEST
00001646: SWAP1
00001647: POP
00001648: PUSH1 0x20
0000164a: MUL
0000164b: ADD
0000164c: PUSH1 0x20
0000164e: DUP2
0000164f: ADD
00001650: SWAP1
00001651: PUSH2 0x165a
00001654: SWAP2
00001655: SWAP1
00001656: PUSH2 0x22c0
00001659: JUMP
0000165a: JUMPDEST
0000165b: PUSH1 0x40
0000165d: MLOAD
0000165e: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
0000167f: DUP2
00001680: MSTORE
00001681: ADDRESS
00001682: PUSH1 0x04
00001684: DUP3
00001685: ADD
00001686: MSTORE
00001687: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000169c: SWAP2
0000169d: SWAP1
0000169e: SWAP2
0000169f: AND
000016a0: SWAP1
000016a1: PUSH4 0x70a08231
000016a6: SWAP1
000016a7: PUSH1 0x24
000016a9: ADD
000016aa: PUSH1 0x20
000016ac: PUSH1 0x40
000016ae: MLOAD
000016af: DUP1
000016b0: DUP4
000016b1: SUB
000016b2: DUP2
000016b3: DUP7
000016b4: DUP1
000016b5: EXTCODESIZE
000016b6: ISZERO
000016b7: DUP1
000016b8: ISZERO
000016b9: PUSH2 0x16c1
000016bc: JUMPI
000016bd: PUSH1 0x00
000016bf: DUP1
000016c0: REVERT
000016c1: JUMPDEST
000016c2: POP
000016c3: GAS
000016c4: STATICCALL
000016c5: ISZERO
000016c6: DUP1
000016c7: ISZERO
000016c8: PUSH2 0x16d5
000016cb: JUMPI
000016cc: RETURNDATASIZE
000016cd: PUSH1 0x00
000016cf: DUP1
000016d0: RETURNDATACOPY
000016d1: RETURNDATASIZE
000016d2: PUSH1 0x00
000016d4: REVERT
000016d5: JUMPDEST
000016d6: POP
000016d7: POP
000016d8: POP
000016d9: POP
000016da: PUSH1 0x40
000016dc: MLOAD
000016dd: RETURNDATASIZE
000016de: PUSH1 0x1f
000016e0: NOT
000016e1: PUSH1 0x1f
000016e3: DUP3
000016e4: ADD
000016e5: AND
000016e6: DUP3
000016e7: ADD
000016e8: DUP1
000016e9: PUSH1 0x40
000016eb: MSTORE
000016ec: POP
000016ed: DUP2
000016ee: ADD
000016ef: SWAP1
000016f0: PUSH2 0x16f9
000016f3: SWAP2
000016f4: SWAP1
000016f5: PUSH2 0x2611
000016f8: JUMP
000016f9: JUMPDEST
000016fa: SWAP1
000016fb: POP
000016fc: PUSH2 0x1744
000016ff: DUP5
00001700: DUP3
00001701: DUP9
00001702: DUP9
00001703: DUP7
00001704: DUP2
00001705: DUP2
00001706: LT
00001707: PUSH2 0x1712
0000170a: JUMPI
0000170b: PUSH2 0x1712
0000170e: PUSH2 0x28a3
00001711: JUMP
00001712: JUMPDEST
00001713: SWAP1
00001714: POP
00001715: PUSH1 0x20
00001717: MUL
00001718: ADD
00001719: PUSH1 0x20
0000171b: DUP2
0000171c: ADD
0000171d: SWAP1
0000171e: PUSH2 0x1727
00001721: SWAP2
00001722: SWAP1
00001723: PUSH2 0x22c0
00001726: JUMP
00001727: JUMPDEST
00001728: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000173d: AND
0000173e: SWAP2
0000173f: SWAP1
00001740: PUSH2 0x1e26
00001743: JUMP
00001744: JUMPDEST
00001745: POP
00001746: DUP1
00001747: PUSH2 0x174f
0000174a: DUP2
0000174b: PUSH2 0x2802
0000174e: JUMP
0000174f: JUMPDEST
00001750: SWAP2
00001751: POP
00001752: POP
00001753: PUSH2 0x1629
00001756: JUMP
00001757: JUMPDEST
00001758: POP
00001759: POP
0000175a: POP
0000175b: POP
0000175c: POP
0000175d: JUMP
0000175e: JUMPDEST
0000175f: PUSH1 0x00
00001761: SLOAD
00001762: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001777: AND
00001778: CALLER
00001779: EQ
0000177a: PUSH2 0x17df
0000177d: JUMPI
0000177e: PUSH1 0x40
00001780: MLOAD
00001781: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000017a2: DUP2
000017a3: MSTORE
000017a4: PUSH1 0x20
000017a6: PUSH1 0x04
000017a8: DUP3
000017a9: ADD
000017aa: MSTORE
000017ab: PUSH1 0x06
000017ad: PUSH1 0x24
000017af: DUP3
000017b0: ADD
000017b1: MSTORE
000017b2: PUSH32 0x7a33325468440000000000000000000000000000000000000000000000000000
000017d3: PUSH1 0x44
000017d5: DUP3
000017d6: ADD
000017d7: MSTORE
000017d8: PUSH1 0x64
000017da: ADD
000017db: PUSH2 0x0400
000017de: JUMP
000017df: JUMPDEST
000017e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017f5: DUP2
000017f6: AND
000017f7: PUSH1 0x00
000017f9: DUP2
000017fa: DUP2
000017fb: MSTORE
000017fc: PUSH1 0x02
000017fe: PUSH1 0x20
00001800: SWAP1
00001801: DUP2
00001802: MSTORE
00001803: PUSH1 0x40
00001805: DUP1
00001806: DUP4
00001807: KECCAK256
00001808: DUP1
00001809: SLOAD
0000180a: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
0000182b: AND
0000182c: SWAP1
0000182d: SSTORE
0000182e: DUP1
0000182f: MLOAD
00001830: SWAP4
00001831: DUP5
00001832: MSTORE
00001833: SWAP1
00001834: DUP4
00001835: ADD
00001836: SWAP2
00001837: SWAP1
00001838: SWAP2
00001839: MSTORE
0000183a: PUSH32 0xe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5
0000185b: SWAP2
0000185c: ADD
0000185d: PUSH2 0x094d
00001860: JUMP
00001861: JUMPDEST
00001862: PUSH1 0x00
00001864: SLOAD
00001865: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000187a: AND
0000187b: CALLER
0000187c: EQ
0000187d: PUSH2 0x18e2
00001880: JUMPI
00001881: PUSH1 0x40
00001883: MLOAD
00001884: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000018a5: DUP2
000018a6: MSTORE
000018a7: PUSH1 0x20
000018a9: PUSH1 0x04
000018ab: DUP3
000018ac: ADD
000018ad: MSTORE
000018ae: PUSH1 0x06
000018b0: PUSH1 0x24
000018b2: DUP3
000018b3: ADD
000018b4: MSTORE
000018b5: PUSH32 0x7a33325468440000000000000000000000000000000000000000000000000000
000018d6: PUSH1 0x44
000018d8: DUP3
000018d9: ADD
000018da: MSTORE
000018db: PUSH1 0x64
000018dd: ADD
000018de: PUSH2 0x0400
000018e1: JUMP
000018e2: JUMPDEST
000018e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018f8: DUP2
000018f9: AND
000018fa: PUSH1 0x00
000018fc: DUP2
000018fd: DUP2
000018fe: MSTORE
000018ff: PUSH1 0x03
00001901: PUSH1 0x20
00001903: SWAP1
00001904: DUP2
00001905: MSTORE
00001906: PUSH1 0x40
00001908: DUP1
00001909: DUP4
0000190a: KECCAK256
0000190b: DUP1
0000190c: SLOAD
0000190d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
0000192e: AND
0000192f: SWAP1
00001930: SSTORE
00001931: DUP1
00001932: MLOAD
00001933: SWAP4
00001934: DUP5
00001935: MSTORE
00001936: SWAP1
00001937: DUP4
00001938: ADD
00001939: SWAP2
0000193a: SWAP1
0000193b: SWAP2
0000193c: MSTORE
0000193d: PUSH32 0x8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9
0000195e: SWAP2
0000195f: ADD
00001960: PUSH2 0x094d
00001963: JUMP
00001964: JUMPDEST
00001965: CALLER
00001966: PUSH1 0x00
00001968: SWAP1
00001969: DUP2
0000196a: MSTORE
0000196b: PUSH1 0x01
0000196d: PUSH1 0x20
0000196f: MSTORE
00001970: PUSH1 0x40
00001972: SWAP1
00001973: KECCAK256
00001974: SLOAD
00001975: PUSH1 0xff
00001977: AND
00001978: PUSH2 0x19dd
0000197b: JUMPI
0000197c: PUSH1 0x40
0000197e: MLOAD
0000197f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000019a0: DUP2
000019a1: MSTORE
000019a2: PUSH1 0x20
000019a4: PUSH1 0x04
000019a6: DUP3
000019a7: ADD
000019a8: MSTORE
000019a9: PUSH1 0x06
000019ab: PUSH1 0x24
000019ad: DUP3
000019ae: ADD
000019af: MSTORE
000019b0: PUSH32 0x46513637566a0000000000000000000000000000000000000000000000000000
000019d1: PUSH1 0x44
000019d3: DUP3
000019d4: ADD
000019d5: MSTORE
000019d6: PUSH1 0x64
000019d8: ADD
000019d9: PUSH2 0x0400
000019dc: JUMP
000019dd: JUMPDEST
000019de: PUSH1 0x00
000019e0: DUP5
000019e1: SWAP1
000019e2: POP
000019e3: PUSH1 0x00
000019e5: DUP1
000019e6: DUP3
000019e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019fc: AND
000019fd: PUSH4 0x0902f1ac
00001a02: PUSH1 0x40
00001a04: MLOAD
00001a05: DUP2
00001a06: PUSH4 0xffffffff
00001a0b: AND
00001a0c: PUSH1 0xe0
00001a0e: SHL
00001a0f: DUP2
00001a10: MSTORE
00001a11: PUSH1 0x04
00001a13: ADD
00001a14: PUSH1 0x60
00001a16: PUSH1 0x40
00001a18: MLOAD
00001a19: DUP1
00001a1a: DUP4
00001a1b: SUB
00001a1c: DUP2
00001a1d: DUP7
00001a1e: DUP1
00001a1f: EXTCODESIZE
00001a20: ISZERO
00001a21: DUP1
00001a22: ISZERO
00001a23: PUSH2 0x1a2b
00001a26: JUMPI
00001a27: PUSH1 0x00
00001a29: DUP1
00001a2a: REVERT
00001a2b: JUMPDEST
00001a2c: POP
00001a2d: GAS
00001a2e: STATICCALL
00001a2f: ISZERO
00001a30: DUP1
00001a31: ISZERO
00001a32: PUSH2 0x1a3f
00001a35: JUMPI
00001a36: RETURNDATASIZE
00001a37: PUSH1 0x00
00001a39: DUP1
00001a3a: RETURNDATACOPY
00001a3b: RETURNDATASIZE
00001a3c: PUSH1 0x00
00001a3e: REVERT
00001a3f: JUMPDEST
00001a40: POP
00001a41: POP
00001a42: POP
00001a43: POP
00001a44: PUSH1 0x40
00001a46: MLOAD
00001a47: RETURNDATASIZE
00001a48: PUSH1 0x1f
00001a4a: NOT
00001a4b: PUSH1 0x1f
00001a4d: DUP3
00001a4e: ADD
00001a4f: AND
00001a50: DUP3
00001a51: ADD
00001a52: DUP1
00001a53: PUSH1 0x40
00001a55: MSTORE
00001a56: POP
00001a57: DUP2
00001a58: ADD
00001a59: SWAP1
00001a5a: PUSH2 0x1a63
00001a5d: SWAP2
00001a5e: SWAP1
00001a5f: PUSH2 0x25cc
00001a62: JUMP
00001a63: JUMPDEST
00001a64: POP
00001a65: PUSH14 0xffffffffffffffffffffffffffff
00001a74: SWAP2
00001a75: DUP3
00001a76: AND
00001a77: SWAP4
00001a78: POP
00001a79: AND
00001a7a: SWAP1
00001a7b: POP
00001a7c: PUSH1 0x00
00001a7e: PUSH2 0x1a89
00001a81: DUP7
00001a82: PUSH2 0x03e5
00001a85: PUSH2 0x2782
00001a88: JUMP
00001a89: JUMPDEST
00001a8a: SWAP1
00001a8b: POP
00001a8c: PUSH1 0x00
00001a8e: PUSH2 0x1a97
00001a91: DUP5
00001a92: DUP4
00001a93: PUSH2 0x2782
00001a96: JUMP
00001a97: JUMPDEST
00001a98: SWAP1
00001a99: POP
00001a9a: PUSH1 0x00
00001a9c: DUP3
00001a9d: PUSH2 0x1aa8
00001aa0: DUP6
00001aa1: PUSH2 0x03e8
00001aa4: PUSH2 0x2782
00001aa7: JUMP
00001aa8: JUMPDEST
00001aa9: PUSH2 0x1ab2
00001aac: SWAP2
00001aad: SWAP1
00001aae: PUSH2 0x272f
00001ab1: JUMP
00001ab2: JUMPDEST
00001ab3: SWAP1
00001ab4: POP
00001ab5: PUSH1 0x00
00001ab7: PUSH2 0x1ac0
00001aba: DUP3
00001abb: DUP5
00001abc: PUSH2 0x2747
00001abf: JUMP
00001ac0: JUMPDEST
00001ac1: SWAP1
00001ac2: POP
00001ac3: DUP8
00001ac4: DUP2
00001ac5: LT
00001ac6: ISZERO
00001ac7: PUSH2 0x1b2c
00001aca: JUMPI
00001acb: PUSH1 0x40
00001acd: MLOAD
00001ace: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001aef: DUP2
00001af0: MSTORE
00001af1: PUSH1 0x20
00001af3: PUSH1 0x04
00001af5: DUP3
00001af6: ADD
00001af7: MSTORE
00001af8: PUSH1 0x06
00001afa: PUSH1 0x24
00001afc: DUP3
00001afd: ADD
00001afe: MSTORE
00001aff: PUSH32 0x766e536430310000000000000000000000000000000000000000000000000000
00001b20: PUSH1 0x44
00001b22: DUP3
00001b23: ADD
00001b24: MSTORE
00001b25: PUSH1 0x64
00001b27: ADD
00001b28: PUSH2 0x0400
00001b2b: JUMP
00001b2c: JUMPDEST
00001b2d: DUP10
00001b2e: PUSH2 0x1b4e
00001b31: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b46: DUP3
00001b47: AND
00001b48: DUP14
00001b49: DUP13
00001b4a: PUSH2 0x1e26
00001b4d: JUMP
00001b4e: JUMPDEST
00001b4f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b64: DUP9
00001b65: AND
00001b66: PUSH4 0x022c0d9f
00001b6b: DUP4
00001b6c: PUSH1 0x00
00001b6e: ADDRESS
00001b6f: DUP2
00001b70: PUSH2 0x0f7e
00001b73: JUMP
00001b74: JUMPDEST
00001b75: PUSH2 0x1b96
00001b78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b8d: DUP4
00001b8e: AND
00001b8f: CALLER
00001b90: ADDRESS
00001b91: DUP5
00001b92: PUSH2 0x1f31
00001b95: JUMP
00001b96: JUMPDEST
00001b97: POP
00001b98: POP
00001b99: JUMP
00001b9a: JUMPDEST
00001b9b: PUSH1 0x00
00001b9d: SLOAD
00001b9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bb3: AND
00001bb4: CALLER
00001bb5: EQ
00001bb6: PUSH2 0x1c1b
00001bb9: JUMPI
00001bba: PUSH1 0x40
00001bbc: MLOAD
00001bbd: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001bde: DUP2
00001bdf: MSTORE
00001be0: PUSH1 0x20
00001be2: PUSH1 0x04
00001be4: DUP3
00001be5: ADD
00001be6: MSTORE
00001be7: PUSH1 0x06
00001be9: PUSH1 0x24
00001beb: DUP3
00001bec: ADD
00001bed: MSTORE
00001bee: PUSH32 0x7a33325468440000000000000000000000000000000000000000000000000000
00001c0f: PUSH1 0x44
00001c11: DUP3
00001c12: ADD
00001c13: MSTORE
00001c14: PUSH1 0x64
00001c16: ADD
00001c17: PUSH2 0x0400
00001c1a: JUMP
00001c1b: JUMPDEST
00001c1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c31: DUP2
00001c32: AND
00001c33: PUSH1 0x00
00001c35: DUP2
00001c36: DUP2
00001c37: MSTORE
00001c38: PUSH1 0x01
00001c3a: PUSH1 0x20
00001c3c: DUP2
00001c3d: DUP2
00001c3e: MSTORE
00001c3f: PUSH1 0x40
00001c41: SWAP3
00001c42: DUP4
00001c43: SWAP1
00001c44: KECCAK256
00001c45: DUP1
00001c46: SLOAD
00001c47: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00001c68: AND
00001c69: DUP4
00001c6a: OR
00001c6b: SWAP1
00001c6c: SSTORE
00001c6d: DUP3
00001c6e: MLOAD
00001c6f: SWAP4
00001c70: DUP5
00001c71: MSTORE
00001c72: DUP4
00001c73: ADD
00001c74: MSTORE
00001c75: PUSH32 0xe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d90650
00001c96: SWAP2
00001c97: ADD
00001c98: PUSH2 0x094d
00001c9b: JUMP
00001c9c: JUMPDEST
00001c9d: PUSH20 0x1f98431c8ad98523631ae4a59f267346ea31f984
00001cb2: PUSH32 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54
00001cd3: PUSH1 0x00
00001cd5: PUSH2 0x1ce0
00001cd8: DUP5
00001cd9: DUP7
00001cda: ADD
00001cdb: DUP7
00001cdc: PUSH2 0x254d
00001cdf: JUMP
00001ce0: JUMPDEST
00001ce1: PUSH1 0x20
00001ce3: DUP2
00001ce4: DUP2
00001ce5: ADD
00001ce6: MLOAD
00001ce7: PUSH1 0x40
00001ce9: DUP1
00001cea: MLOAD
00001ceb: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000
00001d0c: DUP2
00001d0d: DUP6
00001d0e: ADD
00001d0f: MSTORE
00001d10: PUSH1 0x60
00001d12: DUP9
00001d13: SWAP1
00001d14: SHL
00001d15: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
00001d36: AND
00001d37: PUSH1 0x21
00001d39: DUP3
00001d3a: ADD
00001d3b: MSTORE
00001d3c: PUSH1 0x35
00001d3e: DUP2
00001d3f: ADD
00001d40: SWAP3
00001d41: SWAP1
00001d42: SWAP3
00001d43: MSTORE
00001d44: PUSH1 0x55
00001d46: DUP1
00001d47: DUP4
00001d48: ADD
00001d49: DUP8
00001d4a: SWAP1
00001d4b: MSTORE
00001d4c: DUP2
00001d4d: MLOAD
00001d4e: DUP1
00001d4f: DUP5
00001d50: SUB
00001d51: SWAP1
00001d52: SWAP2
00001d53: ADD
00001d54: DUP2
00001d55: MSTORE
00001d56: PUSH1 0x75
00001d58: SWAP1
00001d59: SWAP3
00001d5a: ADD
00001d5b: SWAP1
00001d5c: MSTORE
00001d5d: DUP1
00001d5e: MLOAD
00001d5f: SWAP2
00001d60: ADD
00001d61: KECCAK256
00001d62: SWAP1
00001d63: SWAP2
00001d64: POP
00001d65: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d7a: DUP2
00001d7b: AND
00001d7c: CALLER
00001d7d: EQ
00001d7e: PUSH2 0x1de3
00001d81: JUMPI
00001d82: PUSH1 0x40
00001d84: MLOAD
00001d85: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001da6: DUP2
00001da7: MSTORE
00001da8: PUSH1 0x20
00001daa: PUSH1 0x04
00001dac: DUP3
00001dad: ADD
00001dae: MSTORE
00001daf: PUSH1 0x06
00001db1: PUSH1 0x24
00001db3: DUP3
00001db4: ADD
00001db5: MSTORE
00001db6: PUSH32 0x486b313657640000000000000000000000000000000000000000000000000000
00001dd7: PUSH1 0x44
00001dd9: DUP3
00001dda: ADD
00001ddb: MSTORE
00001ddc: PUSH1 0x64
00001dde: ADD
00001ddf: PUSH2 0x0400
00001de2: JUMP
00001de3: JUMPDEST
00001de4: PUSH1 0x00
00001de6: DUP1
00001de7: DUP10
00001de8: SGT
00001de9: PUSH2 0x1df2
00001dec: JUMPI
00001ded: DUP8
00001dee: PUSH2 0x1df4
00001df1: JUMP
00001df2: JUMPDEST
00001df3: DUP9
00001df4: JUMPDEST
00001df5: DUP4
00001df6: MLOAD
00001df7: SWAP1
00001df8: SWAP2
00001df9: POP
00001dfa: PUSH2 0x1e1a
00001dfd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e12: DUP3
00001e13: AND
00001e14: CALLER
00001e15: DUP5
00001e16: PUSH2 0x1e26
00001e19: JUMP
00001e1a: JUMPDEST
00001e1b: POP
00001e1c: POP
00001e1d: POP
00001e1e: POP
00001e1f: POP
00001e20: POP
00001e21: POP
00001e22: POP
00001e23: POP
00001e24: POP
00001e25: JUMP
00001e26: JUMPDEST
00001e27: PUSH1 0x40
00001e29: MLOAD
00001e2a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e3f: DUP4
00001e40: AND
00001e41: PUSH1 0x24
00001e43: DUP3
00001e44: ADD
00001e45: MSTORE
00001e46: PUSH1 0x44
00001e48: DUP2
00001e49: ADD
00001e4a: DUP3
00001e4b: SWAP1
00001e4c: MSTORE
00001e4d: PUSH2 0x1efa
00001e50: SWAP1
00001e51: DUP5
00001e52: SWAP1
00001e53: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00001e74: SWAP1
00001e75: PUSH1 0x64
00001e77: ADD
00001e78: JUMPDEST
00001e79: PUSH1 0x40
00001e7b: DUP1
00001e7c: MLOAD
00001e7d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001e9e: DUP2
00001e9f: DUP5
00001ea0: SUB
00001ea1: ADD
00001ea2: DUP2
00001ea3: MSTORE
00001ea4: SWAP2
00001ea5: SWAP1
00001ea6: MSTORE
00001ea7: PUSH1 0x20
00001ea9: DUP2
00001eaa: ADD
00001eab: DUP1
00001eac: MLOAD
00001ead: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001eca: AND
00001ecb: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
00001eec: SWAP1
00001eed: SWAP4
00001eee: AND
00001eef: SWAP3
00001ef0: SWAP1
00001ef1: SWAP3
00001ef2: OR
00001ef3: SWAP1
00001ef4: SWAP2
00001ef5: MSTORE
00001ef6: PUSH2 0x1f8f
00001ef9: JUMP
00001efa: JUMPDEST
00001efb: POP
00001efc: POP
00001efd: POP
00001efe: JUMP
00001eff: JUMPDEST
00001f00: PUSH1 0x00
00001f02: PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000
00001f23: DUP3
00001f24: LT
00001f25: PUSH2 0x1f2d
00001f28: JUMPI
00001f29: PUSH1 0x00
00001f2b: DUP1
00001f2c: REVERT
00001f2d: JUMPDEST
00001f2e: POP
00001f2f: SWAP1
00001f30: JUMP
00001f31: JUMPDEST
00001f32: PUSH1 0x40
00001f34: MLOAD
00001f35: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f4a: DUP1
00001f4b: DUP6
00001f4c: AND
00001f4d: PUSH1 0x24
00001f4f: DUP4
00001f50: ADD
00001f51: MSTORE
00001f52: DUP4
00001f53: AND
00001f54: PUSH1 0x44
00001f56: DUP3
00001f57: ADD
00001f58: MSTORE
00001f59: PUSH1 0x64
00001f5b: DUP2
00001f5c: ADD
00001f5d: DUP3
00001f5e: SWAP1
00001f5f: MSTORE
00001f60: PUSH2 0x0848
00001f63: SWAP1
00001f64: DUP6
00001f65: SWAP1
00001f66: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
00001f87: SWAP1
00001f88: PUSH1 0x84
00001f8a: ADD
00001f8b: PUSH2 0x1e78
00001f8e: JUMP
00001f8f: JUMPDEST
00001f90: PUSH1 0x00
00001f92: PUSH2 0x1ff1
00001f95: DUP3
00001f96: PUSH1 0x40
00001f98: MLOAD
00001f99: DUP1
00001f9a: PUSH1 0x40
00001f9c: ADD
00001f9d: PUSH1 0x40
00001f9f: MSTORE
00001fa0: DUP1
00001fa1: PUSH1 0x20
00001fa3: DUP2
00001fa4: MSTORE
00001fa5: PUSH1 0x20
00001fa7: ADD
00001fa8: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00001fc9: DUP2
00001fca: MSTORE
00001fcb: POP
00001fcc: DUP6
00001fcd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fe2: AND
00001fe3: PUSH2 0x209b
00001fe6: SWAP1
00001fe7: SWAP3
00001fe8: SWAP2
00001fe9: SWAP1
00001fea: PUSH4 0xffffffff
00001fef: AND
00001ff0: JUMP
00001ff1: JUMPDEST
00001ff2: DUP1
00001ff3: MLOAD
00001ff4: SWAP1
00001ff5: SWAP2
00001ff6: POP
00001ff7: ISZERO
00001ff8: PUSH2 0x1efa
00001ffb: JUMPI
00001ffc: DUP1
00001ffd: DUP1
00001ffe: PUSH1 0x20
00002000: ADD
00002001: SWAP1
00002002: MLOAD
00002003: DUP2
00002004: ADD
00002005: SWAP1
00002006: PUSH2 0x200f
00002009: SWAP2
0000200a: SWAP1
0000200b: PUSH2 0x2487
0000200e: JUMP
0000200f: JUMPDEST
00002010: PUSH2 0x1efa
00002013: JUMPI
00002014: PUSH1 0x40
00002016: MLOAD
00002017: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002038: DUP2
00002039: MSTORE
0000203a: PUSH1 0x20
0000203c: PUSH1 0x04
0000203e: DUP3
0000203f: ADD
00002040: MSTORE
00002041: PUSH1 0x2a
00002043: PUSH1 0x24
00002045: DUP3
00002046: ADD
00002047: MSTORE
00002048: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00002069: PUSH1 0x44
0000206b: DUP3
0000206c: ADD
0000206d: MSTORE
0000206e: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
0000208f: PUSH1 0x64
00002091: DUP3
00002092: ADD
00002093: MSTORE
00002094: PUSH1 0x84
00002096: ADD
00002097: PUSH2 0x0400
0000209a: JUMP
0000209b: JUMPDEST
0000209c: PUSH1 0x60
0000209e: PUSH2 0x20aa
000020a1: DUP5
000020a2: DUP5
000020a3: PUSH1 0x00
000020a5: DUP6
000020a6: PUSH2 0x20b4
000020a9: JUMP
000020aa: JUMPDEST
000020ab: SWAP1
000020ac: POP
000020ad: JUMPDEST
000020ae: SWAP4
000020af: SWAP3
000020b0: POP
000020b1: POP
000020b2: POP
000020b3: JUMP
000020b4: JUMPDEST
000020b5: PUSH1 0x60
000020b7: DUP3
000020b8: SELFBALANCE
000020b9: LT
000020ba: ISZERO
000020bb: PUSH2 0x2146
000020be: JUMPI
000020bf: PUSH1 0x40
000020c1: MLOAD
000020c2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000020e3: DUP2
000020e4: MSTORE
000020e5: PUSH1 0x20
000020e7: PUSH1 0x04
000020e9: DUP3
000020ea: ADD
000020eb: MSTORE
000020ec: PUSH1 0x26
000020ee: PUSH1 0x24
000020f0: DUP3
000020f1: ADD
000020f2: MSTORE
000020f3: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00002114: PUSH1 0x44
00002116: DUP3
00002117: ADD
00002118: MSTORE
00002119: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
0000213a: PUSH1 0x64
0000213c: DUP3
0000213d: ADD
0000213e: MSTORE
0000213f: PUSH1 0x84
00002141: ADD
00002142: PUSH2 0x0400
00002145: JUMP
00002146: JUMPDEST
00002147: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000215c: DUP6
0000215d: AND
0000215e: EXTCODESIZE
0000215f: PUSH2 0x21c4
00002162: JUMPI
00002163: PUSH1 0x40
00002165: MLOAD
00002166: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002187: DUP2
00002188: MSTORE
00002189: PUSH1 0x20
0000218b: PUSH1 0x04
0000218d: DUP3
0000218e: ADD
0000218f: MSTORE
00002190: PUSH1 0x1d
00002192: PUSH1 0x24
00002194: DUP3
00002195: ADD
00002196: MSTORE
00002197: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
000021b8: PUSH1 0x44
000021ba: DUP3
000021bb: ADD
000021bc: MSTORE
000021bd: PUSH1 0x64
000021bf: ADD
000021c0: PUSH2 0x0400
000021c3: JUMP
000021c4: JUMPDEST
000021c5: PUSH1 0x00
000021c7: DUP1
000021c8: DUP7
000021c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021de: AND
000021df: DUP6
000021e0: DUP8
000021e1: PUSH1 0x40
000021e3: MLOAD
000021e4: PUSH2 0x21ed
000021e7: SWAP2
000021e8: SWAP1
000021e9: PUSH2 0x2674
000021ec: JUMP
000021ed: JUMPDEST
000021ee: PUSH1 0x00
000021f0: PUSH1 0x40
000021f2: MLOAD
000021f3: DUP1
000021f4: DUP4
000021f5: SUB
000021f6: DUP2
000021f7: DUP6
000021f8: DUP8
000021f9: GAS
000021fa: CALL
000021fb: SWAP3
000021fc: POP
000021fd: POP
000021fe: POP
000021ff: RETURNDATASIZE
00002200: DUP1
00002201: PUSH1 0x00
00002203: DUP2
00002204: EQ
00002205: PUSH2 0x222a
00002208: JUMPI
00002209: PUSH1 0x40
0000220b: MLOAD
0000220c: SWAP2
0000220d: POP
0000220e: PUSH1 0x1f
00002210: NOT
00002211: PUSH1 0x3f
00002213: RETURNDATASIZE
00002214: ADD
00002215: AND
00002216: DUP3
00002217: ADD
00002218: PUSH1 0x40
0000221a: MSTORE
0000221b: RETURNDATASIZE
0000221c: DUP3
0000221d: MSTORE
0000221e: RETURNDATASIZE
0000221f: PUSH1 0x00
00002221: PUSH1 0x20
00002223: DUP5
00002224: ADD
00002225: RETURNDATACOPY
00002226: PUSH2 0x222f
00002229: JUMP
0000222a: JUMPDEST
0000222b: PUSH1 0x60
0000222d: SWAP2
0000222e: POP
0000222f: JUMPDEST
00002230: POP
00002231: SWAP2
00002232: POP
00002233: SWAP2
00002234: POP
00002235: PUSH2 0x223f
00002238: DUP3
00002239: DUP3
0000223a: DUP7
0000223b: PUSH2 0x224a
0000223e: JUMP
0000223f: JUMPDEST
00002240: SWAP8
00002241: SWAP7
00002242: POP
00002243: POP
00002244: POP
00002245: POP
00002246: POP
00002247: POP
00002248: POP
00002249: JUMP
0000224a: JUMPDEST
0000224b: PUSH1 0x60
0000224d: DUP4
0000224e: ISZERO
0000224f: PUSH2 0x2259
00002252: JUMPI
00002253: POP
00002254: DUP2
00002255: PUSH2 0x20ad
00002258: JUMP
00002259: JUMPDEST
0000225a: DUP3
0000225b: MLOAD
0000225c: ISZERO
0000225d: PUSH2 0x2269
00002260: JUMPI
00002261: DUP3
00002262: MLOAD
00002263: DUP1
00002264: DUP5
00002265: PUSH1 0x20
00002267: ADD
00002268: REVERT
00002269: JUMPDEST
0000226a: DUP2
0000226b: PUSH1 0x40
0000226d: MLOAD
0000226e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000228f: DUP2
00002290: MSTORE
00002291: PUSH1 0x04
00002293: ADD
00002294: PUSH2 0x0400
00002297: SWAP2
00002298: SWAP1
00002299: PUSH2 0x271c
0000229c: JUMP
0000229d: JUMPDEST
0000229e: DUP1
0000229f: MLOAD
000022a0: PUSH14 0xffffffffffffffffffffffffffff
000022af: DUP2
000022b0: AND
000022b1: DUP2
000022b2: EQ
000022b3: PUSH2 0x22bb
000022b6: JUMPI
000022b7: PUSH1 0x00
000022b9: DUP1
000022ba: REVERT
000022bb: JUMPDEST
000022bc: SWAP2
000022bd: SWAP1
000022be: POP
000022bf: JUMP
000022c0: JUMPDEST
000022c1: PUSH1 0x00
000022c3: PUSH1 0x20
000022c5: DUP3
000022c6: DUP5
000022c7: SUB
000022c8: SLT
000022c9: ISZERO
000022ca: PUSH2 0x22d2
000022cd: JUMPI
000022ce: PUSH1 0x00
000022d0: DUP1
000022d1: REVERT
000022d2: JUMPDEST
000022d3: DUP2
000022d4: CALLDATALOAD
000022d5: PUSH2 0x20ad
000022d8: DUP2
000022d9: PUSH2 0x28d2
000022dc: JUMP
000022dd: JUMPDEST
000022de: PUSH1 0x00
000022e0: DUP1
000022e1: PUSH1 0x00
000022e3: DUP1
000022e4: PUSH1 0x00
000022e6: DUP1
000022e7: PUSH1 0x00
000022e9: PUSH1 0xe0
000022eb: DUP9
000022ec: DUP11
000022ed: SUB
000022ee: SLT
000022ef: ISZERO
000022f0: PUSH2 0x22f8
000022f3: JUMPI
000022f4: PUSH1 0x00
000022f6: DUP1
000022f7: REVERT
000022f8: JUMPDEST
000022f9: DUP8
000022fa: CALLDATALOAD
000022fb: PUSH2 0x2303
000022fe: DUP2
000022ff: PUSH2 0x28d2
00002302: JUMP
00002303: JUMPDEST
00002304: SWAP7
00002305: POP
00002306: PUSH1 0x20
00002308: DUP9
00002309: ADD
0000230a: CALLDATALOAD
0000230b: PUSH2 0x2313
0000230e: DUP2
0000230f: PUSH2 0x28d2
00002312: JUMP
00002313: JUMPDEST
00002314: SWAP6
00002315: POP
00002316: PUSH1 0x40
00002318: DUP9
00002319: ADD
0000231a: CALLDATALOAD
0000231b: PUSH2 0x2323
0000231e: DUP2
0000231f: PUSH2 0x28d2
00002322: JUMP
00002323: JUMPDEST
00002324: SWAP5
00002325: POP
00002326: PUSH1 0x60
00002328: DUP9
00002329: ADD
0000232a: CALLDATALOAD
0000232b: SWAP4
0000232c: POP
0000232d: PUSH1 0x80
0000232f: DUP9
00002330: ADD
00002331: CALLDATALOAD
00002332: SWAP3
00002333: POP
00002334: PUSH1 0xa0
00002336: DUP9
00002337: ADD
00002338: CALLDATALOAD
00002339: SWAP2
0000233a: POP
0000233b: PUSH1 0xc0
0000233d: DUP9
0000233e: ADD
0000233f: CALLDATALOAD
00002340: PUSH2 0x2348
00002343: DUP2
00002344: PUSH2 0x28d2
00002347: JUMP
00002348: JUMPDEST
00002349: DUP1
0000234a: SWAP2
0000234b: POP
0000234c: POP
0000234d: SWAP3
0000234e: SWAP6
0000234f: SWAP9
00002350: SWAP2
00002351: SWAP5
00002352: SWAP8
00002353: POP
00002354: SWAP3
00002355: SWAP6
00002356: POP
00002357: JUMP
00002358: JUMPDEST
00002359: PUSH1 0x00
0000235b: DUP1
0000235c: PUSH1 0x00
0000235e: DUP1
0000235f: PUSH1 0x80
00002361: DUP6
00002362: DUP8
00002363: SUB
00002364: SLT
00002365: ISZERO
00002366: PUSH2 0x236e
00002369: JUMPI
0000236a: PUSH1 0x00
0000236c: DUP1
0000236d: REVERT
0000236e: JUMPDEST
0000236f: DUP5
00002370: CALLDATALOAD
00002371: PUSH2 0x2379
00002374: DUP2
00002375: PUSH2 0x28d2
00002378: JUMP
00002379: JUMPDEST
0000237a: SWAP4
0000237b: POP
0000237c: PUSH1 0x20
0000237e: DUP6
0000237f: ADD
00002380: CALLDATALOAD
00002381: PUSH2 0x2389
00002384: DUP2
00002385: PUSH2 0x28d2
00002388: JUMP
00002389: JUMPDEST
0000238a: SWAP4
0000238b: SWAP7
0000238c: SWAP4
0000238d: SWAP6
0000238e: POP
0000238f: POP
00002390: POP
00002391: POP
00002392: PUSH1 0x40
00002394: DUP3
00002395: ADD
00002396: CALLDATALOAD
00002397: SWAP2
00002398: PUSH1 0x60
0000239a: ADD
0000239b: CALLDATALOAD
0000239c: SWAP1
0000239d: JUMP
0000239e: JUMPDEST
0000239f: PUSH1 0x00
000023a1: DUP1
000023a2: PUSH1 0x40
000023a4: DUP4
000023a5: DUP6
000023a6: SUB
000023a7: SLT
000023a8: ISZERO
000023a9: PUSH2 0x23b1
000023ac: JUMPI
000023ad: PUSH1 0x00
000023af: DUP1
000023b0: REVERT
000023b1: JUMPDEST
000023b2: DUP3
000023b3: CALLDATALOAD
000023b4: PUSH2 0x23bc
000023b7: DUP2
000023b8: PUSH2 0x28d2
000023bb: JUMP
000023bc: JUMPDEST
000023bd: SWAP5
000023be: PUSH1 0x20
000023c0: SWAP4
000023c1: SWAP1
000023c2: SWAP4
000023c3: ADD
000023c4: CALLDATALOAD
000023c5: SWAP4
000023c6: POP
000023c7: POP
000023c8: POP
000023c9: JUMP
000023ca: JUMPDEST
000023cb: PUSH1 0x00
000023cd: DUP1
000023ce: PUSH1 0x00
000023d0: PUSH1 0x60
000023d2: DUP5
000023d3: DUP7
000023d4: SUB
000023d5: SLT
000023d6: ISZERO
000023d7: PUSH2 0x23df
000023da: JUMPI
000023db: PUSH1 0x00
000023dd: DUP1
000023de: REVERT
000023df: JUMPDEST
000023e0: DUP4
000023e1: CALLDATALOAD
000023e2: PUSH2 0x23ea
000023e5: DUP2
000023e6: PUSH2 0x28d2
000023e9: JUMP
000023ea: JUMPDEST
000023eb: SWAP3
000023ec: POP
000023ed: PUSH1 0x20
000023ef: DUP5
000023f0: ADD
000023f1: CALLDATALOAD
000023f2: SWAP2
000023f3: POP
000023f4: PUSH1 0x40
000023f6: DUP5
000023f7: ADD
000023f8: CALLDATALOAD
000023f9: PUSH2 0x2401
000023fc: DUP2
000023fd: PUSH2 0x28d2
00002400: JUMP
00002401: JUMPDEST
00002402: DUP1
00002403: SWAP2
00002404: POP
00002405: POP
00002406: SWAP3
00002407: POP
00002408: SWAP3
00002409: POP
0000240a: SWAP3
0000240b: JUMP
0000240c: JUMPDEST
0000240d: PUSH1 0x00
0000240f: DUP1
00002410: PUSH1 0x00
00002412: PUSH1 0x40
00002414: DUP5
00002415: DUP7
00002416: SUB
00002417: SLT
00002418: ISZERO
00002419: PUSH2 0x2421
0000241c: JUMPI
0000241d: PUSH1 0x00
0000241f: DUP1
00002420: REVERT
00002421: JUMPDEST
00002422: DUP4
00002423: CALLDATALOAD
00002424: PUSH8 0xffffffffffffffff
0000242d: DUP1
0000242e: DUP3
0000242f: GT
00002430: ISZERO
00002431: PUSH2 0x2439
00002434: JUMPI
00002435: PUSH1 0x00
00002437: DUP1
00002438: REVERT
00002439: JUMPDEST
0000243a: DUP2
0000243b: DUP7
0000243c: ADD
0000243d: SWAP2
0000243e: POP
0000243f: DUP7
00002440: PUSH1 0x1f
00002442: DUP4
00002443: ADD
00002444: SLT
00002445: PUSH2 0x244d
00002448: JUMPI
00002449: PUSH1 0x00
0000244b: DUP1
0000244c: REVERT
0000244d: JUMPDEST
0000244e: DUP2
0000244f: CALLDATALOAD
00002450: DUP2
00002451: DUP2
00002452: GT
00002453: ISZERO
00002454: PUSH2 0x245c
00002457: JUMPI
00002458: PUSH1 0x00
0000245a: DUP1
0000245b: REVERT
0000245c: JUMPDEST
0000245d: DUP8
0000245e: PUSH1 0x20
00002460: DUP3
00002461: PUSH1 0x05
00002463: SHL
00002464: DUP6
00002465: ADD
00002466: ADD
00002467: GT
00002468: ISZERO
00002469: PUSH2 0x2471
0000246c: JUMPI
0000246d: PUSH1 0x00
0000246f: DUP1
00002470: REVERT
00002471: JUMPDEST
00002472: PUSH1 0x20
00002474: SWAP3
00002475: DUP4
00002476: ADD
00002477: SWAP6
00002478: POP
00002479: SWAP4
0000247a: POP
0000247b: POP
0000247c: DUP5
0000247d: ADD
0000247e: CALLDATALOAD
0000247f: PUSH2 0x2401
00002482: DUP2
00002483: PUSH2 0x28d2
00002486: JUMP
00002487: JUMPDEST
00002488: PUSH1 0x00
0000248a: PUSH1 0x20
0000248c: DUP3
0000248d: DUP5
0000248e: SUB
0000248f: SLT
00002490: ISZERO
00002491: PUSH2 0x2499
00002494: JUMPI
00002495: PUSH1 0x00
00002497: DUP1
00002498: REVERT
00002499: JUMPDEST
0000249a: DUP2
0000249b: MLOAD
0000249c: DUP1
0000249d: ISZERO
0000249e: ISZERO
0000249f: DUP2
000024a0: EQ
000024a1: PUSH2 0x20ad
000024a4: JUMPI
000024a5: PUSH1 0x00
000024a7: DUP1
000024a8: REVERT
000024a9: JUMPDEST
000024aa: PUSH1 0x00
000024ac: DUP1
000024ad: PUSH1 0x40
000024af: DUP4
000024b0: DUP6
000024b1: SUB
000024b2: SLT
000024b3: ISZERO
000024b4: PUSH2 0x24bc
000024b7: JUMPI
000024b8: PUSH1 0x00
000024ba: DUP1
000024bb: REVERT
000024bc: JUMPDEST
000024bd: POP
000024be: POP
000024bf: DUP1
000024c0: MLOAD
000024c1: PUSH1 0x20
000024c3: SWAP1
000024c4: SWAP2
000024c5: ADD
000024c6: MLOAD
000024c7: SWAP1
000024c8: SWAP3
000024c9: SWAP1
000024ca: SWAP2
000024cb: POP
000024cc: JUMP
000024cd: JUMPDEST
000024ce: PUSH1 0x00
000024d0: DUP1
000024d1: PUSH1 0x00
000024d3: DUP1
000024d4: PUSH1 0x60
000024d6: DUP6
000024d7: DUP8
000024d8: SUB
000024d9: SLT
000024da: ISZERO
000024db: PUSH2 0x24e3
000024de: JUMPI
000024df: PUSH1 0x00
000024e1: DUP1
000024e2: REVERT
000024e3: JUMPDEST
000024e4: DUP5
000024e5: CALLDATALOAD
000024e6: SWAP4
000024e7: POP
000024e8: PUSH1 0x20
000024ea: DUP6
000024eb: ADD
000024ec: CALLDATALOAD
000024ed: SWAP3
000024ee: POP
000024ef: PUSH1 0x40
000024f1: DUP6
000024f2: ADD
000024f3: CALLDATALOAD
000024f4: PUSH8 0xffffffffffffffff
000024fd: DUP1
000024fe: DUP3
000024ff: GT
00002500: ISZERO
00002501: PUSH2 0x2509
00002504: JUMPI
00002505: PUSH1 0x00
00002507: DUP1
00002508: REVERT
00002509: JUMPDEST
0000250a: DUP2
0000250b: DUP8
0000250c: ADD
0000250d: SWAP2
0000250e: POP
0000250f: DUP8
00002510: PUSH1 0x1f
00002512: DUP4
00002513: ADD
00002514: SLT
00002515: PUSH2 0x251d
00002518: JUMPI
00002519: PUSH1 0x00
0000251b: DUP1
0000251c: REVERT
0000251d: JUMPDEST
0000251e: DUP2
0000251f: CALLDATALOAD
00002520: DUP2
00002521: DUP2
00002522: GT
00002523: ISZERO
00002524: PUSH2 0x252c
00002527: JUMPI
00002528: PUSH1 0x00
0000252a: DUP1
0000252b: REVERT
0000252c: JUMPDEST
0000252d: DUP9
0000252e: PUSH1 0x20
00002530: DUP3
00002531: DUP6
00002532: ADD
00002533: ADD
00002534: GT
00002535: ISZERO
00002536: PUSH2 0x253e
00002539: JUMPI
0000253a: PUSH1 0x00
0000253c: DUP1
0000253d: REVERT
0000253e: JUMPDEST
0000253f: SWAP6
00002540: SWAP9
00002541: SWAP5
00002542: SWAP8
00002543: POP
00002544: POP
00002545: PUSH1 0x20
00002547: ADD
00002548: SWAP5
00002549: POP
0000254a: POP
0000254b: POP
0000254c: JUMP
0000254d: JUMPDEST
0000254e: PUSH1 0x00
00002550: PUSH1 0x40
00002552: DUP3
00002553: DUP5
00002554: SUB
00002555: SLT
00002556: ISZERO
00002557: PUSH2 0x255f
0000255a: JUMPI
0000255b: PUSH1 0x00
0000255d: DUP1
0000255e: REVERT
0000255f: JUMPDEST
00002560: PUSH1 0x40
00002562: MLOAD
00002563: PUSH1 0x40
00002565: DUP2
00002566: ADD
00002567: DUP2
00002568: DUP2
00002569: LT
0000256a: PUSH8 0xffffffffffffffff
00002573: DUP3
00002574: GT
00002575: OR
00002576: ISZERO
00002577: PUSH2 0x25a9
0000257a: JUMPI
0000257b: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000259c: PUSH1 0x00
0000259e: MSTORE
0000259f: PUSH1 0x41
000025a1: PUSH1 0x04
000025a3: MSTORE
000025a4: PUSH1 0x24
000025a6: PUSH1 0x00
000025a8: REVERT
000025a9: JUMPDEST
000025aa: PUSH1 0x40
000025ac: MSTORE
000025ad: DUP3
000025ae: CALLDATALOAD
000025af: PUSH2 0x25b7
000025b2: DUP2
000025b3: PUSH2 0x28d2
000025b6: JUMP
000025b7: JUMPDEST
000025b8: DUP2
000025b9: MSTORE
000025ba: PUSH1 0x20
000025bc: SWAP3
000025bd: DUP4
000025be: ADD
000025bf: CALLDATALOAD
000025c0: SWAP3
000025c1: DUP2
000025c2: ADD
000025c3: SWAP3
000025c4: SWAP1
000025c5: SWAP3
000025c6: MSTORE
000025c7: POP
000025c8: SWAP2
000025c9: SWAP1
000025ca: POP
000025cb: JUMP
000025cc: JUMPDEST
000025cd: PUSH1 0x00
000025cf: DUP1
000025d0: PUSH1 0x00
000025d2: PUSH1 0x60
000025d4: DUP5
000025d5: DUP7
000025d6: SUB
000025d7: SLT
000025d8: ISZERO
000025d9: PUSH2 0x25e1
000025dc: JUMPI
000025dd: PUSH1 0x00
000025df: DUP1
000025e0: REVERT
000025e1: JUMPDEST
000025e2: PUSH2 0x25ea
000025e5: DUP5
000025e6: PUSH2 0x229d
000025e9: JUMP
000025ea: JUMPDEST
000025eb: SWAP3
000025ec: POP
000025ed: PUSH2 0x25f8
000025f0: PUSH1 0x20
000025f2: DUP6
000025f3: ADD
000025f4: PUSH2 0x229d
000025f7: JUMP
000025f8: JUMPDEST
000025f9: SWAP2
000025fa: POP
000025fb: PUSH1 0x40
000025fd: DUP5
000025fe: ADD
000025ff: MLOAD
00002600: PUSH4 0xffffffff
00002605: DUP2
00002606: AND
00002607: DUP2
00002608: EQ
00002609: PUSH2 0x2401
0000260c: JUMPI
0000260d: PUSH1 0x00
0000260f: DUP1
00002610: REVERT
00002611: JUMPDEST
00002612: PUSH1 0x00
00002614: PUSH1 0x20
00002616: DUP3
00002617: DUP5
00002618: SUB
00002619: SLT
0000261a: ISZERO
0000261b: PUSH2 0x2623
0000261e: JUMPI
0000261f: PUSH1 0x00
00002621: DUP1
00002622: REVERT
00002623: JUMPDEST
00002624: POP
00002625: MLOAD
00002626: SWAP2
00002627: SWAP1
00002628: POP
00002629: JUMP
0000262a: JUMPDEST
0000262b: PUSH1 0x00
0000262d: DUP2
0000262e: MLOAD
0000262f: DUP1
00002630: DUP5
00002631: MSTORE
00002632: PUSH2 0x2642
00002635: DUP2
00002636: PUSH1 0x20
00002638: DUP7
00002639: ADD
0000263a: PUSH1 0x20
0000263c: DUP7
0000263d: ADD
0000263e: PUSH2 0x27d6
00002641: JUMP
00002642: JUMPDEST
00002643: PUSH1 0x1f
00002645: ADD
00002646: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00002667: AND
00002668: SWAP3
00002669: SWAP1
0000266a: SWAP3
0000266b: ADD
0000266c: PUSH1 0x20
0000266e: ADD
0000266f: SWAP3
00002670: SWAP2
00002671: POP
00002672: POP
00002673: JUMP
00002674: JUMPDEST
00002675: PUSH1 0x00
00002677: DUP3
00002678: MLOAD
00002679: PUSH2 0x2686
0000267c: DUP2
0000267d: DUP5
0000267e: PUSH1 0x20
00002680: DUP8
00002681: ADD
00002682: PUSH2 0x27d6
00002685: JUMP
00002686: JUMPDEST
00002687: SWAP2
00002688: SWAP1
00002689: SWAP2
0000268a: ADD
0000268b: SWAP3
0000268c: SWAP2
0000268d: POP
0000268e: POP
0000268f: JUMP
00002690: JUMPDEST
00002691: PUSH1 0x00
00002693: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026a8: DUP1
000026a9: DUP9
000026aa: AND
000026ab: DUP4
000026ac: MSTORE
000026ad: DUP7
000026ae: ISZERO
000026af: ISZERO
000026b0: PUSH1 0x20
000026b2: DUP5
000026b3: ADD
000026b4: MSTORE
000026b5: DUP6
000026b6: PUSH1 0x40
000026b8: DUP5
000026b9: ADD
000026ba: MSTORE
000026bb: DUP1
000026bc: DUP6
000026bd: AND
000026be: PUSH1 0x60
000026c0: DUP5
000026c1: ADD
000026c2: MSTORE
000026c3: POP
000026c4: PUSH1 0xa0
000026c6: PUSH1 0x80
000026c8: DUP4
000026c9: ADD
000026ca: MSTORE
000026cb: PUSH2 0x223f
000026ce: PUSH1 0xa0
000026d0: DUP4
000026d1: ADD
000026d2: DUP5
000026d3: PUSH2 0x262a
000026d6: JUMP
000026d7: JUMPDEST
000026d8: DUP5
000026d9: DUP2
000026da: MSTORE
000026db: DUP4
000026dc: PUSH1 0x20
000026de: DUP3
000026df: ADD
000026e0: MSTORE
000026e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026f6: DUP4
000026f7: AND
000026f8: PUSH1 0x40
000026fa: DUP3
000026fb: ADD
000026fc: MSTORE
000026fd: PUSH1 0x80
000026ff: PUSH1 0x60
00002701: DUP3
00002702: ADD
00002703: MSTORE
00002704: PUSH1 0x00
00002706: PUSH2 0x2712
00002709: PUSH1 0x80
0000270b: DUP4
0000270c: ADD
0000270d: DUP5
0000270e: PUSH2 0x262a
00002711: JUMP
00002712: JUMPDEST
00002713: SWAP7
00002714: SWAP6
00002715: POP
00002716: POP
00002717: POP
00002718: POP
00002719: POP
0000271a: POP
0000271b: JUMP
0000271c: JUMPDEST
0000271d: PUSH1 0x20
0000271f: DUP2
00002720: MSTORE
00002721: PUSH1 0x00
00002723: PUSH2 0x20ad
00002726: PUSH1 0x20
00002728: DUP4
00002729: ADD
0000272a: DUP5
0000272b: PUSH2 0x262a
0000272e: JUMP
0000272f: JUMPDEST
00002730: PUSH1 0x00
00002732: DUP3
00002733: NOT
00002734: DUP3
00002735: GT
00002736: ISZERO
00002737: PUSH2 0x2742
0000273a: JUMPI
0000273b: PUSH2 0x2742
0000273e: PUSH2 0x2874
00002741: JUMP
00002742: JUMPDEST
00002743: POP
00002744: ADD
00002745: SWAP1
00002746: JUMP
00002747: JUMPDEST
00002748: PUSH1 0x00
0000274a: DUP3
0000274b: PUSH2 0x277d
0000274e: JUMPI
0000274f: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002770: PUSH1 0x00
00002772: MSTORE
00002773: PUSH1 0x12
00002775: PUSH1 0x04
00002777: MSTORE
00002778: PUSH1 0x24
0000277a: PUSH1 0x00
0000277c: REVERT
0000277d: JUMPDEST
0000277e: POP
0000277f: DIV
00002780: SWAP1
00002781: JUMP
00002782: JUMPDEST
00002783: PUSH1 0x00
00002785: DUP2
00002786: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000027a7: DIV
000027a8: DUP4
000027a9: GT
000027aa: DUP3
000027ab: ISZERO
000027ac: ISZERO
000027ad: AND
000027ae: ISZERO
000027af: PUSH2 0x27ba
000027b2: JUMPI
000027b3: PUSH2 0x27ba
000027b6: PUSH2 0x2874
000027b9: JUMP
000027ba: JUMPDEST
000027bb: POP
000027bc: MUL
000027bd: SWAP1
000027be: JUMP
000027bf: JUMPDEST
000027c0: PUSH1 0x00
000027c2: DUP3
000027c3: DUP3
000027c4: LT
000027c5: ISZERO
000027c6: PUSH2 0x27d1
000027c9: JUMPI
000027ca: PUSH2 0x27d1
000027cd: PUSH2 0x2874
000027d0: JUMP
000027d1: JUMPDEST
000027d2: POP
000027d3: SUB
000027d4: SWAP1
000027d5: JUMP
000027d6: JUMPDEST
000027d7: PUSH1 0x00
000027d9: JUMPDEST
000027da: DUP4
000027db: DUP2
000027dc: LT
000027dd: ISZERO
000027de: PUSH2 0x27f1
000027e1: JUMPI
000027e2: DUP2
000027e3: DUP2
000027e4: ADD
000027e5: MLOAD
000027e6: DUP4
000027e7: DUP3
000027e8: ADD
000027e9: MSTORE
000027ea: PUSH1 0x20
000027ec: ADD
000027ed: PUSH2 0x27d9
000027f0: JUMP
000027f1: JUMPDEST
000027f2: DUP4
000027f3: DUP2
000027f4: GT
000027f5: ISZERO
000027f6: PUSH2 0x0848
000027f9: JUMPI
000027fa: POP
000027fb: POP
000027fc: PUSH1 0x00
000027fe: SWAP2
000027ff: ADD
00002800: MSTORE
00002801: JUMP
00002802: JUMPDEST
00002803: PUSH1 0x00
00002805: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002826: DUP3
00002827: EQ
00002828: ISZERO
00002829: PUSH2 0x2834
0000282c: JUMPI
0000282d: PUSH2 0x2834
00002830: PUSH2 0x2874
00002833: JUMP
00002834: JUMPDEST
00002835: POP
00002836: PUSH1 0x01
00002838: ADD
00002839: SWAP1
0000283a: JUMP
0000283b: JUMPDEST
0000283c: PUSH1 0x00
0000283e: PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000
0000285f: DUP3
00002860: EQ
00002861: ISZERO
00002862: PUSH2 0x286d
00002865: JUMPI
00002866: PUSH2 0x286d
00002869: PUSH2 0x2874
0000286c: JUMP
0000286d: JUMPDEST
0000286e: POP
0000286f: PUSH1 0x00
00002871: SUB
00002872: SWAP1
00002873: JUMP
00002874: JUMPDEST
00002875: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002896: PUSH1 0x00
00002898: MSTORE
00002899: PUSH1 0x11
0000289b: PUSH1 0x04
0000289d: MSTORE
0000289e: PUSH1 0x24
000028a0: PUSH1 0x00
000028a2: REVERT
000028a3: JUMPDEST
000028a4: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000028c5: PUSH1 0x00
000028c7: MSTORE
000028c8: PUSH1 0x32
000028ca: PUSH1 0x04
000028cc: MSTORE
000028cd: PUSH1 0x24
000028cf: PUSH1 0x00
000028d1: REVERT
000028d2: JUMPDEST
000028d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028e8: DUP2
000028e9: AND
000028ea: DUP2
000028eb: EQ
000028ec: PUSH2 0x28f4
000028ef: JUMPI
000028f0: PUSH1 0x00
000028f2: DUP1
000028f3: REVERT
000028f4: JUMPDEST
000028f5: POP
000028f6: JUMP
000028f7: INVALID
000028f8: LOG2
000028f9: PUSH5 0x6970667358
000028ff: UNKNOWN(0x22)
00002900: SLT
00002901: KECCAK256
00002902: ORIGIN
00002903: SWAP6
00002904: PUSH6 0x74c9dedf8a50
0000290b: UNKNOWN(0x2A)
0000290c: UNKNOWN(0xEC)
0000290d: BYTE
0000290e: PUSH7 0xf71fd2cea03abc
00002916: UNKNOWN(0xA8)
00002917: PUSH32

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xf0ba3261",
            "selector": "0xf0ba3261",
            "calldata_variants": [
                "0xf0ba3261",
                "0xf0ba32610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf31fad00",
            "selector": "0xf31fad00",
            "calldata_variants": [
                "0xf31fad00",
                "0xf31fad000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeeaf04b1",
            "selector": "0xeeaf04b1",
            "calldata_variants": [
                "0xeeaf04b1",
                "0xeeaf04b10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeebe9378",
            "selector": "0xeebe9378",
            "calldata_variants": [
                "0xeebe9378",
                "0xeebe93780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca04108f",
            "selector": "0xca04108f",
            "calldata_variants": [
                "0xca04108f",
                "0xca04108f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc9fb041",
            "selector": "0xcc9fb041",
            "calldata_variants": [
                "0xcc9fb041",
                "0xcc9fb0410000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd4fae269",
            "selector": "0xd4fae269",
            "calldata_variants": [
                "0xd4fae269",
                "0xd4fae2690000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 10498,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x585acf8c39d40fac5b8dae7ab93d88d713ff100214d5bf6bd6167bd78fb741da
call_targets: 0x1a49d4afc3ef76d53fb295a194910544273ef55a
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x585acf8c39d40fac5b8dae7ab93d88d713ff100214d5bf6bd6167bd78fb741da",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x1a49d4afc3ef76d53fb295a194910544273ef55a"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xf0ba3261",
            "selector": "0xf0ba3261",
            "calldata_variants": [
                "0xf0ba3261",
                "0xf0ba32610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf31fad00",
            "selector": "0xf31fad00",
            "calldata_variants": [
                "0xf31fad00",
                "0xf31fad000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeeaf04b1",
            "selector": "0xeeaf04b1",
            "calldata_variants": [
                "0xeeaf04b1",
                "0xeeaf04b10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeebe9378",
            "selector": "0xeebe9378",
            "calldata_variants": [
                "0xeebe9378",
                "0xeebe93780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca04108f",
            "selector": "0xca04108f",
            "calldata_variants": [
                "0xca04108f",
                "0xca04108f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc9fb041",
            "selector": "0xcc9fb041",
            "calldata_variants": [
                "0xcc9fb041",
                "0xcc9fb0410000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd4fae269",
            "selector": "0xd4fae269",
            "calldata_variants": [
                "0xd4fae269",
                "0xd4fae2690000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1714,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2819,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3375,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 5,
    "guards_detected": [
        {
            "pc": 10498,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 5
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x585acf8c39d40fac5b8dae7ab93d88d713ff100214d5bf6bd6167bd78fb741da
call_targets: 0x1a49d4afc3ef76d53fb295a194910544273ef55a
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x585acf8c39d40fac5b8dae7ab93d88d713ff100214d5bf6bd6167bd78fb741da",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x1a49d4afc3ef76d53fb295a194910544273ef55a"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xf0ba3261",
            "selector": "0xf0ba3261",
            "calldata_variants": [
                "0xf0ba3261",
                "0xf0ba32610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf31fad00",
            "selector": "0xf31fad00",
            "calldata_variants": [
                "0xf31fad00",
                "0xf31fad000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa461e33",
            "selector": "0xfa461e33",
            "calldata_variants": [
                "0xfa461e33",
                "0xfa461e330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeeaf04b1",
            "selector": "0xeeaf04b1",
            "calldata_variants": [
                "0xeeaf04b1",
                "0xeeaf04b10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeebe9378",
            "selector": "0xeebe9378",
            "calldata_variants": [
                "0xeebe9378",
                "0xeebe93780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xca04108f",
            "selector": "0xca04108f",
            "calldata_variants": [
                "0xca04108f",
                "0xca04108f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc9fb041",
            "selector": "0xcc9fb041",
            "calldata_variants": [
                "0xcc9fb041",
                "0xcc9fb0410000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xd4fae269",
            "selector": "0xd4fae269",
            "calldata_variants": [
                "0xd4fae269",
                "0xd4fae2690000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1714,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2819,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3375,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 5,
    "guards_detected": [
        {
            "pc": 10498,
            "type": "tx_origin_used"
        }
    ]
}
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": 12
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 12
}