aaa341f0-38cc-4646-93f3-38a868b28d36
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 12
}
|