5c191618-8592-4dd2-9d7f-cadcc5ff4d40
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 |
|---|---|---|---|---|
| 30662 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 74968 | artifact.fetch | complete | 1 / 3 | 2 weeks ago |
| 74969 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 74970 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 74971 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 74972 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 74973 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:713015] OpenAI Codex v0.77.0 (research preview)
[codex:713015] --------
[codex:713015] workdir: /tmp/codex-multi-4yerr9fx
[codex:713015] model: gpt-5.2-codex
[codex:713015] provider: openai
[codex:713015] approval: never
[codex:713015] sandbox: read-only
[codex:713015] reasoning effort: xhigh
[codex:713015] reasoning summaries: auto
[codex:713015] session id: 019b6d13-4e3c-72e0-a07f-39aabce90306
[codex:713015] --------
[codex:713015] user
[codex:713015] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:713015] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:713015]
[codex:713015] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:713015]
[codex:713015] Output MUST be valid JSON matching the provided schema.
[codex:713015] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:713015] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:713015]
[codex:713015] Output constraints (IMPORTANT):
[codex:713015] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:713015] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:713015] mcp startup: no servers
[codex:713015]
[codex:713015] thinking
[codex:713015] **Reading BYTECODE_BUNDLE.txt file**
[codex:713015] exec
[codex:713015] /bin/bash -lc 'cat /tmp/codex-multi-4yerr9fx/BYTECODE_BUNDLE.txt' in /tmp/codex-multi-4yerr9fx succeeded in 5ms:
[codex:713015] Runtime bytecode bundle for best-effort auditing.
[codex:713015] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:713015]
[codex:713015] FILE: runtime_bytecode.hex
[codex:713015] 0x608060405234801561001057600080fd5b506004361061016c5760003560e01c8063c133163c116100cd578063eeaf04b111610081578063f0ba326111610066578063f0ba32611461032c578063f31fad0014610365578063fa461e331461037857600080fd5b8063eeaf04b1146102f1578063eebe93781461031957600080fd5b8063ca04108f116100b2578063ca04108f146102b8578063cc9fb041146102cb578063d4fae269146102de57600080fd5b8063c133163c14610231578063c587533e1461027f57600080fd5b806375ddbe8b11610124578063820a885911610109578063820a8859146101f85780638e85abd61461020b578063ac07c9701461021e57600080fd5b806375ddbe8b146101d25780637b48a5bc146101e557600080fd5b806338088cbb1161015557806338088cbb146101995780635b1d3b20146101ac5780636518aab3146101bf57600080fd5b806302d889101461017157806337bd827d14610186575b600080fd5b61018461017f366004612358565b61038b565b005b6101846101943660046123ca565b6106d6565b6101846101a73660046122c0565b61084e565b6101846101ba3660046122dd565b610958565b6101846101cd3660046122dd565b610bba565b6101846101e0366004612358565b610d72565b6101846101f33660046122c0565b611008565b610184610206366004612358565b61110f565b6101846102193660046122c0565b6113ce565b61018461022c36600461240c565b6114d5565b61026a61023f3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61026a61028d3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6101846102c63660046122c0565b61175e565b6101846102d93660046122c0565b611861565b6101846102ec366004612358565b611964565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610276565b61018461032736600461239e565b611b74565b61026a61033a3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6101846103733660046122c0565b611b9a565b6101846103863660046124cd565b611c9c565b3360009081526001602052604090205460ff16610409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b8360008461042e73ffffffffffffffffffffffffffffffffffffffff82168487611e26565b6000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561047757600080fd5b505afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af91906125cc565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526dffffffffffffffffffffffffffff93841695509190921692508391908516906370a082319060240160206040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056c9190612611565b61057691906127bf565b93506000610586856103e5612782565b905060006105948383612782565b90506000826105a5866103e8612782565b6105af919061272f565b905060006105bd8284612747565b905089811015610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff891663022c0d9f60008330825b6040519080825280601f01601f191660200182016040528015610675576020820181803683370190505b506040518563ffffffff1660e01b815260040161069594939291906126d7565b600060405180830381600087803b1580156106af57600080fd5b505af11580156106c3573d6000803e3d6000fd5b5050505050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061070b57503360009081526002602052604090205460ff165b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f674a3565443900000000000000000000000000000000000000000000000000006044820152606401610400565b600054819073ffffffffffffffffffffffffffffffffffffffff808316911614806107c1575073ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205460ff165b610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f36316f49467300000000000000000000000000000000000000000000000000006044820152606401610400565b61084873ffffffffffffffffffffffffffffffffffffffff85168385611e26565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527fe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d9065091015b60405180910390a150565b3360009081526001602052604090205460ff166109d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8088166020830152881691810191909152606081018590528790600090608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012083830190925273ffffffffffffffffffffffffffffffffffffffff8b81168452908301829052909250600090841663128acb083083610a7e8b611eff565b8987604051602001610ab89190815173ffffffffffffffffffffffffffffffffffffffff1681526020918201519181019190915260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610ae7959493929190612690565b6040805180830381600087803b158015610b0057600080fd5b505af1158015610b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3891906124a9565b50905085610b458261283b565b1015610bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f35744438445000000000000000000000000000000000000000000000000000006044820152606401610400565b5050505050505050505050565b3360009081526001602052604090205460ff16610c33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b6040805173ffffffffffffffffffffffffffffffffffffffff88811660208084018290528983168486015260608085018a905285518086039091018152608085018087528151919092012060c0850190955290815260a090920183905289929190600090841663128acb08306001610caa8b611eff565b8987604051602001610ce49190815173ffffffffffffffffffffffffffffffffffffffff1681526020918201519181019190915260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610d13959493929190612690565b6040805180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6491906124a9565b9150508581610b459061283b565b3360009081526001602052604090205460ff16610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b60008490506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610e3957600080fd5b505afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7191906125cc565b506dffffffffffffffffffffffffffff91821693501690506000610e97866103e5612782565b90506000610ea58383612782565b9050600082610eb6866103e8612782565b610ec0919061272f565b90506000610ece8284612747565b905087811015610f3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b89610f5c73ffffffffffffffffffffffffffffffffffffffff82168d8c611e26565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f60008430825b6040519080825280601f01601f191660200182016040528015610fa8576020820181803683370190505b506040518563ffffffff1660e01b8152600401610fc894939291906126d7565b600060405180830381600087803b158015610fe257600080fd5b505af1158015610ff6573d6000803e3d6000fd5b50505050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558251938452908301527fe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5910161094d565b3360009081526001602052604090205460ff16611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b836000846111ad73ffffffffffffffffffffffffffffffffffffffff82168487611e26565b6000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e91906125cc565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526dffffffffffffffffffffffffffff93841695509190921692508291908516906370a082319060240160206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb9190612611565b6112f591906127bf565b93506000611305856103e5612782565b905060006113138483612782565b9050600082611324856103e8612782565b61132e919061272f565b9050600061133c8284612747565b9050898110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff891663022c0d9f826000308161064b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558251938452908301527f8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9910161094d565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061150a57503360009081526002602052604090205460ff165b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f674a3565443900000000000000000000000000000000000000000000000000006044820152606401610400565b600054819073ffffffffffffffffffffffffffffffffffffffff808316911614806115c0575073ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205460ff165b611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f36316f49467300000000000000000000000000000000000000000000000000006044820152606401610400565b60005b83811015611757576000858583818110611645576116456128a3565b905060200201602081019061165a91906122c0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a082319060240160206040518083038186803b1580156116c157600080fd5b505afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f99190612611565b90506117448482888886818110611712576117126128a3565b905060200201602081019061172791906122c0565b73ffffffffffffffffffffffffffffffffffffffff169190611e26565b508061174f81612802565b915050611629565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527fe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5910161094d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527f8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9910161094d565b3360009081526001602052604090205460ff166119dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b60008490506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611a2b57600080fd5b505afa158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6391906125cc565b506dffffffffffffffffffffffffffff91821693501690506000611a89866103e5612782565b90506000611a978483612782565b9050600082611aa8856103e8612782565b611ab2919061272f565b90506000611ac08284612747565b905087811015611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b89611b4e73ffffffffffffffffffffffffffffffffffffffff82168d8c611e26565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f8360003081610f7e565b611b9673ffffffffffffffffffffffffffffffffffffffff8316333084611f31565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905582519384528301527fe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d90650910161094d565b731f98431c8ad98523631ae4a59f267346ea31f9847fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546000611ce08486018661254d565b602081810151604080517fff0000000000000000000000000000000000000000000000000000000000000081850152606088901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021820152603581019290925260558083018790528151808403909101815260759092019052805191012090915073ffffffffffffffffffffffffffffffffffffffff81163314611de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f486b3136576400000000000000000000000000000000000000000000000000006044820152606401610400565b6000808913611df25787611df4565b885b8351909150611e1a73ffffffffffffffffffffffffffffffffffffffff82163384611e26565b50505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611efa9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f8f565b505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210611f2d57600080fd5b5090565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526108489085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611e78565b6000611ff1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661209b9092919063ffffffff16565b805190915015611efa578080602001905181019061200f9190612487565b611efa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610400565b60606120aa84846000856120b4565b90505b9392505050565b606082471015612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610400565b73ffffffffffffffffffffffffffffffffffffffff85163b6121c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610400565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516121ed9190612674565b60006040518083038185875af1925050503d806000811461222a576040519150601f19603f3d011682016040523d82523d6000602084013e61222f565b606091505b509150915061223f82828661224a565b979650505050505050565b606083156122595750816120ad565b8251156122695782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610400919061271c565b80516dffffffffffffffffffffffffffff811681146122bb57600080fd5b919050565b6000602082840312156122d257600080fd5b81356120ad816128d2565b600080600080600080600060e0888a0312156122f857600080fd5b8735612303816128d2565b96506020880135612313816128d2565b95506040880135612323816128d2565b9450606088013593506080880135925060a0880135915060c0880135612348816128d2565b8091505092959891949750929550565b6000806000806080858703121561236e57600080fd5b8435612379816128d2565b93506020850135612389816128d2565b93969395505050506040820135916060013590565b600080604083850312156123b157600080fd5b82356123bc816128d2565b946020939093013593505050565b6000806000606084860312156123df57600080fd5b83356123ea816128d2565b9250602084013591506040840135612401816128d2565b809150509250925092565b60008060006040848603121561242157600080fd5b833567ffffffffffffffff8082111561243957600080fd5b818601915086601f83011261244d57600080fd5b81358181111561245c57600080fd5b8760208260051b850101111561247157600080fd5b60209283019550935050840135612401816128d2565b60006020828403121561249957600080fd5b815180151581146120ad57600080fd5b600080604083850312156124bc57600080fd5b505080516020909101519092909150565b600080600080606085870312156124e357600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561250957600080fd5b818701915087601f83011261251d57600080fd5b81358181111561252c57600080fd5b88602082850101111561253e57600080fd5b95989497505060200194505050565b60006040828403121561255f57600080fd5b6040516040810181811067ffffffffffffffff821117156125a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282356125b7816128d2565b81526020928301359281019290925250919050565b6000806000606084860312156125e157600080fd5b6125ea8461229d565b92506125f86020850161229d565b9150604084015163ffffffff8116811461240157600080fd5b60006020828403121561262357600080fd5b5051919050565b600081518084526126428160208601602086016127d6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516126868184602087016127d6565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261223f60a083018461262a565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000612712608083018461262a565b9695505050505050565b6020815260006120ad602083018461262a565b6000821982111561274257612742612874565b500190565b60008261277d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127ba576127ba612874565b500290565b6000828210156127d1576127d1612874565b500390565b60005b838110156127f15781810151838201526020016127d9565b838111156108485750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561283457612834612874565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082141561286d5761286d612874565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146128f457600080fd5b5056fea264697066735822122032956574c9dedf8a502aec1a66f71fd2cea03abca87f4cfa89d2c47c82fc832b64736f6c63430008070033
[codex:713015]
[codex:713015] thinking
[codex:713015] **Analyzing bytecode for vulnerabilities**
[codex:713015]
[codex:713015] I'm examining the bytecode patterns to spot access control checks, external calls, and potential risks like missing reentrancy guards or unsafe delegatecalls. Since I can't run external tools, I'll write a Python script to disassemble the bytecode and look for critical opcodes like ORIGIN or DELEGATECALL, aiming for concrete findings without guessing.
[codex:713015] exec
[codex:713015] /bin/bash -lc "python - <<'PY'
[codex:713015] import re
[codex:713015] from pathlib import Path
[codex:713015]
[codex:713015] path = Path('/tmp/codex-multi-4yerr9fx/BYTECODE_BUNDLE.txt')
[codex:713015] text = path.read_text()
[codex:713015] # extract runtime bytecode hex after line 'FILE: runtime_bytecode.hex'
[codex:713015] hex_match = re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:713015] if not hex_match:
[codex:713015] print('hex not found')
[codex:713015] raise SystemExit
[codex:713015] hexstr = hex_match.group(1)[2:]
[codex:713015] # map opcodes
[codex:713015] opcodes = {i: f'OP_{i:02x}' for i in range(256)}
[codex:713015] # fill known opcodes
[codex:713015] names = {
[codex:713015] 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:713015] 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:713015] 0x20:'SHA3',
[codex:713015] 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:713015] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:713015] 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:713015] 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:713015] 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:713015] 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:713015] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:713015] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:713015] }
[codex:713015]
[codex:713015] for k,v in names.items():
[codex:713015] opcodes[k] = v
[codex:713015]
[codex:713015] # disassemble and find potential risk ops
[codex:713015] b = bytes.fromhex(hexstr)
[codex:713015] ops = []
[codex:713015] i=0
[codex:713015] while i < len(b):
[codex:713015] op = b[i]
[codex:713015] name = opcodes[op]
[codex:713015] if 0x60 <= op <= 0x7f:
[codex:713015] n = op-0x5f
[codex:713015] data = b[i+1:i+1+n]
[codex:713015] ops.append((i, name, data.hex()))
[codex:713015] i += 1+n
[codex:713015] else:
[codex:713015] ops.append((i, name, ''))
[codex:713015] i += 1
[codex:713015]
[codex:713015] # quick scans
[codex:713015] interesting = {'DELEGATECALL','SELFDESTRUCT','CALLCODE','ORIGIN'}
[codex:713015] found = [(i,name,arg) for (i,name,arg) in ops if name in interesting]
[codex:713015] print('interesting ops:', found[:20])
[codex:713015] print('counts:', {op: sum(1 for _,n,_ in ops if n==op) for op in interesting})
[codex:713015] # count CALL and SSTORE for potential reentrancy patterns later
[codex:713015] print('CALL count', sum(1 for _,n,_ in ops if n=='CALL'))
[codex:713015] print('SSTORE count', sum(1 for _,n,_ in ops if n=='SSTORE'))
[codex:713015]
[codex:713015] # show first occurrences of ORIGIN if any
[codex:713015] for i,name,arg in found:
[codex:713015] if name == 'ORIGIN':
[codex:713015] print('origin at', hex(i))
[codex:713015]
[codex:713015] PY" in /tmp/codex-multi-4yerr9fx succeeded in 51ms:
[codex:713015] interesting ops: [(10498, 'ORIGIN', '')]
[codex:713015] counts: {'SELFDESTRUCT': 0, 'DELEGATECALL': 0, 'ORIGIN': 1, 'CALLCODE': 0}
[codex:713015] CALL count 5
[codex:713015] SSTORE count 6
[codex:713015] origin at 0x2902
[codex:713015]
[codex:713015] thinking
[codex:713015] **Inspecting ORIGIN opcode usage**
[codex:713015] exec
[codex:713015] /bin/bash -lc "python - <<'PY'
[codex:713015] import re
[codex:713015] from pathlib import Path
[codex:713015]
[codex:713015] path = Path('/tmp/codex-multi-4yerr9fx/BYTECODE_BUNDLE.txt')
[codex:713015] text = path.read_text()
[codex:713015] hex_match = re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:713015] hexstr = hex_match.group(1)[2:]
[codex:713015]
[codex:713015] opcodes = {i: f'OP_{i:02x}' for i in range(256)}
[codex:713015] names = {
[codex:713015] 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:713015] 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:713015] 0x20:'SHA3',
[codex:713015] 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:713015] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:713015] 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:713015] 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:713015] 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:713015] 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:713015] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:713015] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:713015] }
[codex:713015] for k,v in names.items():
[codex:713015] opcodes[k] = v
[codex:713015]
[codex:713015] b = bytes.fromhex(hexstr)
[codex:713015] ops = []
[codex:713015] i=0
[codex:713015] while i < len(b):
[codex:713015] op = b[i]
[codex:713015] name = opcodes[op]
[codex:713015] if 0x60 <= op <= 0x7f:
[codex:713015] n = op-0x5f
[codex:713015] data = b[i+1:i+1+n]
[codex:713015] ops.append((i, name, data.hex()))
[codex:713015] i += 1+n
[codex:713015] else:
[codex:713015] ops.append((i, name, ''))
[codex:713015] i += 1
[codex:713015]
[codex:713015] # find context around origin offset 0x2902
[codex:713015] origin_offset = 0x2902
[codex:713015] # find index in ops list near this offset
[codex:713015] idx = next(i for i,(off,_,__) in enumerate(ops) if off == origin_offset)
[codex:713015] start = max(0, idx-20)
[codex:713015] end = min(len(ops), idx+20)
[codex:713015] for off, name, data in ops[start:end]:
[codex:713015] if data:
[codex:713015] print(f\"{off:06x}: {name} 0x{data}\")
[codex:713015] else:
[codex:713015] print(f\"{off:06x}: {name}\")
[codex:713015] PY" in /tmp/codex-multi-4yerr9fx succeeded in 36ms:
[codex:713015] 0028d2: JUMPDEST
[codex:713015] 0028d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:713015] 0028e8: DUP2
[codex:713015] 0028e9: AND
[codex:713015] 0028ea: DUP2
[codex:713015] 0028eb: EQ
[codex:713015] 0028ec: PUSH2 0x28f4
[codex:713015] 0028ef: JUMPI
[codex:713015] 0028f0: PUSH1 0x00
[codex:713015] 0028f2: DUP1
[codex:713015] 0028f3: REVERT
[codex:713015] 0028f4: JUMPDEST
[codex:713015] 0028f5: POP
[codex:713015] 0028f6: JUMP
[codex:713015] 0028f7: INVALID
[codex:713015] 0028f8: LOG2
[codex:713015] 0028f9: PUSH5 0x6970667358
[codex:713015] 0028ff: OP_22
[codex:713015] 002900: SLT
[codex:713015] 002901: SHA3
[codex:713015]
[codex:713015] thinking
[codex:713015] **Analyzing metadata and storage modifications for vulnerabilities**
[codex:713015]
[codex:713015] I'm investigating the bytecode metadata where ORIGIN appears but is not executed code, so it's likely not a vulnerability source. Next, I'm focusing on CALL and SSTORE instructions to check if state changes happen after external calls without protection, which might indicate reentrancy risks. I'll script a disassembly to track SSTORE positions and surrounding instructions to see if access control or reentrancy guards exist around those storage writes.
[codex:713015] exec
[codex:713015] /bin/bash -lc "python - <<'PY'
[codex:713015] import re
[codex:713015] from pathlib import Path
[codex:713015]
[codex:713015] text = Path('/tmp/codex-multi-4yerr9fx/BYTECODE_BUNDLE.txt').read_text()
[codex:713015] hex_match = re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:713015] hexstr = hex_match.group(1)[2:]
[codex:713015]
[codex:713015] opcodes = {i: f'OP_{i:02x}' for i in range(256)}
[codex:713015] names = {
[codex:713015] 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:713015] 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:713015] 0x20:'SHA3',
[codex:713015] 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:713015] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:713015] 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:713015] 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:713015] 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:713015] 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:713015] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:713015] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:713015] }
[codex:713015] for k,v in names.items():
[codex:713015] opcodes[k] = v
[codex:713015]
[codex:713015] b = bytes.fromhex(hexstr)
[codex:713015] ops = []
[codex:713015] i=0
[codex:713015] while i < len(b):
[codex:713015] op = b[i]
[codex:713015] name = opcodes[op]
[codex:713015] if 0x60 <= op <= 0x7f:
[codex:713015] n = op-0x5f
[codex:713015] data = b[i+1:i+1+n]
[codex:713015] ops.append((i, name, data.hex()))
[codex:713015] i += 1+n
[codex:713015] else:
[codex:713015] ops.append((i, name, ''))
[codex:713015] i += 1
[codex:713015]
[codex:713015] # find SSTORE positions
[codex:713015] sstore_indices = [idx for idx,(off,name,arg) in enumerate(ops) if name=='SSTORE']
[codex:713015] print('SSTORE count', len(sstore_indices))
[codex:713015] for idx in sstore_indices:
[codex:713015] start = max(0, idx-10)
[codex:713015] end = min(len(ops), idx+10)
[codex:713015] print('\\n--- SSTORE at offset', hex(ops[idx][0]), '---')
[codex:713015] for off,name,arg in ops[start:end]:
[codex:713015] if arg:
[codex:713015] print(f\"{off:06x}: {name} 0x{arg}\")
[codex:713015] else:
[codex:713015] print(f\"{off:06x}: {name}\")
[codex:713015] PY" in /tmp/codex-multi-4yerr9fx succeeded in 33ms:
[codex:713015] SSTORE count 6
[codex:713015]
[codex:713015] --- SSTORE at offset 0x91d ---
[codex:713015] 0008f2: MSTORE
[codex:713015] 0008f3: PUSH1 0x40
[codex:713015] 0008f5: DUP1
[codex:713015] 0008f6: DUP4
[codex:713015] 0008f7: SHA3
[codex:713015] 0008f8: DUP1
[codex:713015] 0008f9: SLOAD
[codex:713015] 0008fa: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
[codex:713015] 00091b: AND
[codex:713015] 00091c: SWAP1
[codex:713015] 00091d: SSTORE
[codex:713015] 00091e: DUP1
[codex:713015] 00091f: MLOAD
[codex:713015] 000920: SWAP4
[codex:713015] 000921: DUP5
[codex:713015] 000922: MSTORE
[codex:713015] 000923: SWAP1
[codex:713015]
[codex:713015] thinking
[codex:713015] **Investigating SSTORE context and line referencing**
[codex:713015] exec
[codex:713015] /bin/bash -lc 'nl -ba /tmp/codex-multi-4yerr9fx/BYTECODE_BUNDLE.txt | head -n 20' in /tmp/codex-multi-4yerr9fx succeeded in 6ms:
[codex:713015] 1 Runtime bytecode bundle for best-effort auditing.
[codex:713015] 2 Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:713015] 3
[codex:713015] 4 FILE: runtime_bytecode.hex
[codex:713015] 5 0x608060405234801561001057600080fd5b506004361061016c5760003560e01c8063c133163c116100cd578063eeaf04b111610081578063f0ba326111610066578063f0ba32611461032c578063f31fad0014610365578063fa461e331461037857600080fd5b8063eeaf04b1146102f1578063eebe93781461031957600080fd5b8063ca04108f116100b2578063ca04108f146102b8578063cc9fb041146102cb578063d4fae269146102de57600080fd5b8063c133163c14610231578063c587533e1461027f57600080fd5b806375ddbe8b11610124578063820a885911610109578063820a8859146101f85780638e85abd61461020b578063ac07c9701461021e57600080fd5b806375ddbe8b146101d25780637b48a5bc146101e557600080fd5b806338088cbb1161015557806338088cbb146101995780635b1d3b20146101ac5780636518aab3146101bf57600080fd5b806302d889101461017157806337bd827d14610186575b600080fd5b61018461017f366004612358565b61038b565b005b6101846101943660046123ca565b6106d6565b6101846101a73660046122c0565b61084e565b6101846101ba3660046122dd565b610958565b6101846101cd3660046122dd565b610bba565b6101846101e0366004612358565b610d72565b6101846101f33660046122c0565b611008565b610184610206366004612358565b61110f565b6101846102193660046122c0565b6113ce565b61018461022c36600461240c565b6114d5565b61026a61023f3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61026a61028d3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6101846102c63660046122c0565b61175e565b6101846102d93660046122c0565b611861565b6101846102ec366004612358565b611964565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610276565b61018461032736600461239e565b611b74565b61026a61033a3660046122c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6101846103733660046122c0565b611b9a565b6101846103863660046124cd565b611c9c565b3360009081526001602052604090205460ff16610409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b8360008461042e73ffffffffffffffffffffffffffffffffffffffff82168487611e26565b6000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561047757600080fd5b505afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af91906125cc565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526dffffffffffffffffffffffffffff93841695509190921692508391908516906370a082319060240160206040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056c9190612611565b61057691906127bf565b93506000610586856103e5612782565b905060006105948383612782565b90506000826105a5866103e8612782565b6105af919061272f565b905060006105bd8284612747565b905089811015610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff891663022c0d9f60008330825b6040519080825280601f01601f191660200182016040528015610675576020820181803683370190505b506040518563ffffffff1660e01b815260040161069594939291906126d7565b600060405180830381600087803b1580156106af57600080fd5b505af11580156106c3573d6000803e3d6000fd5b5050505050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061070b57503360009081526002602052604090205460ff165b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f674a3565443900000000000000000000000000000000000000000000000000006044820152606401610400565b600054819073ffffffffffffffffffffffffffffffffffffffff808316911614806107c1575073ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205460ff165b610827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f36316f49467300000000000000000000000000000000000000000000000000006044820152606401610400565b61084873ffffffffffffffffffffffffffffffffffffffff85168385611e26565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527fe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d9065091015b60405180910390a150565b3360009081526001602052604090205460ff166109d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8088166020830152881691810191909152606081018590528790600090608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012083830190925273ffffffffffffffffffffffffffffffffffffffff8b81168452908301829052909250600090841663128acb083083610a7e8b611eff565b8987604051602001610ab89190815173ffffffffffffffffffffffffffffffffffffffff1681526020918201519181019190915260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610ae7959493929190612690565b6040805180830381600087803b158015610b0057600080fd5b505af1158015610b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3891906124a9565b50905085610b458261283b565b1015610bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f35744438445000000000000000000000000000000000000000000000000000006044820152606401610400565b5050505050505050505050565b3360009081526001602052604090205460ff16610c33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b6040805173ffffffffffffffffffffffffffffffffffffffff88811660208084018290528983168486015260608085018a905285518086039091018152608085018087528151919092012060c0850190955290815260a090920183905289929190600090841663128acb08306001610caa8b611eff565b8987604051602001610ce49190815173ffffffffffffffffffffffffffffffffffffffff1681526020918201519181019190915260400190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610d13959493929190612690565b6040805180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6491906124a9565b9150508581610b459061283b565b3360009081526001602052604090205460ff16610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b60008490506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610e3957600080fd5b505afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7191906125cc565b506dffffffffffffffffffffffffffff91821693501690506000610e97866103e5612782565b90506000610ea58383612782565b9050600082610eb6866103e8612782565b610ec0919061272f565b90506000610ece8284612747565b905087811015610f3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b89610f5c73ffffffffffffffffffffffffffffffffffffffff82168d8c611e26565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f60008430825b6040519080825280601f01601f191660200182016040528015610fa8576020820181803683370190505b506040518563ffffffff1660e01b8152600401610fc894939291906126d7565b600060405180830381600087803b158015610fe257600080fd5b505af1158015610ff6573d6000803e3d6000fd5b50505050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558251938452908301527fe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5910161094d565b3360009081526001602052604090205460ff16611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b836000846111ad73ffffffffffffffffffffffffffffffffffffffff82168487611e26565b6000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e91906125cc565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526dffffffffffffffffffffffffffff93841695509190921692508291908516906370a082319060240160206040518083038186803b1580156112b357600080fd5b505afa1580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb9190612611565b6112f591906127bf565b93506000611305856103e5612782565b905060006113138483612782565b9050600082611324856103e8612782565b61132e919061272f565b9050600061133c8284612747565b9050898110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff891663022c0d9f826000308161064b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526003602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558251938452908301527f8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9910161094d565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061150a57503360009081526002602052604090205460ff165b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f674a3565443900000000000000000000000000000000000000000000000000006044820152606401610400565b600054819073ffffffffffffffffffffffffffffffffffffffff808316911614806115c0575073ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205460ff165b611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f36316f49467300000000000000000000000000000000000000000000000000006044820152606401610400565b60005b83811015611757576000858583818110611645576116456128a3565b905060200201602081019061165a91906122c0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a082319060240160206040518083038186803b1580156116c157600080fd5b505afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f99190612611565b90506117448482888886818110611712576117126128a3565b905060200201602081019061172791906122c0565b73ffffffffffffffffffffffffffffffffffffffff169190611e26565b508061174f81612802565b915050611629565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527fe1721e7850c58e663b742158d3d6ccfa99d3d7b5a8efbb0bfefffb70f3be66e5910161094d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051938452908301919091527f8bfc8adfd431e0ea67d873424a45d8156394a2eed744fcad59903299534060a9910161094d565b3360009081526001602052604090205460ff166119dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46513637566a00000000000000000000000000000000000000000000000000006044820152606401610400565b60008490506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611a2b57600080fd5b505afa158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6391906125cc565b506dffffffffffffffffffffffffffff91821693501690506000611a89866103e5612782565b90506000611a978483612782565b9050600082611aa8856103e8612782565b611ab2919061272f565b90506000611ac08284612747565b905087811015611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f766e5364303100000000000000000000000000000000000000000000000000006044820152606401610400565b89611b4e73ffffffffffffffffffffffffffffffffffffffff82168d8c611e26565b73ffffffffffffffffffffffffffffffffffffffff881663022c0d9f8360003081610f7e565b611b9673ffffffffffffffffffffffffffffffffffffffff8316333084611f31565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f7a333254684400000000000000000000000000000000000000000000000000006044820152606401610400565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905582519384528301527fe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d90650910161094d565b731f98431c8ad98523631ae4a59f267346ea31f9847fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546000611ce08486018661254d565b602081810151604080517fff0000000000000000000000000000000000000000000000000000000000000081850152606088901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166021820152603581019290925260558083018790528151808403909101815260759092019052805191012090915073ffffffffffffffffffffffffffffffffffffffff81163314611de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f486b3136576400000000000000000000000000000000000000000000000000006044820152606401610400565b6000808913611df25787611df4565b885b8351909150611e1a73ffffffffffffffffffffffffffffffffffffffff82163384611e26565b50505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611efa9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f8f565b505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210611f2d57600080fd5b5090565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526108489085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611e78565b6000611ff1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661209b9092919063ffffffff16565b805190915015611efa578080602001905181019061200f9190612487565b611efa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610400565b60606120aa84846000856120b4565b90505b9392505050565b606082471015612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610400565b73ffffffffffffffffffffffffffffffffffffffff85163b6121c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610400565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516121ed9190612674565b60006040518083038185875af1925050503d806000811461222a576040519150601f19603f3d011682016040523d82523d6000602084013e61222f565b606091505b509150915061223f82828661224a565b979650505050505050565b606083156122595750816120ad565b8251156122695782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610400919061271c565b80516dffffffffffffffffffffffffffff811681146122bb57600080fd5b919050565b6000602082840312156122d257600080fd5b81356120ad816128d2565b600080600080600080600060e0888a0312156122f857600080fd5b8735612303816128d2565b96506020880135612313816128d2565b95506040880135612323816128d2565b9450606088013593506080880135925060a0880135915060c0880135612348816128d2565b8091505092959891949750929550565b6000806000806080858703121561236e57600080fd5b8435612379816128d2565b93506020850135612389816128d2565b93969395505050506040820135916060013590565b600080604083850312156123b157600080fd5b82356123bc816128d2565b946020939093013593505050565b6000806000606084860312156123df57600080fd5b83356123ea816128d2565b9250602084013591506040840135612401816128d2565b809150509250925092565b60008060006040848603121561242157600080fd5b833567ffffffffffffffff8082111561243957600080fd5b818601915086601f83011261244d57600080fd5b81358181111561245c57600080fd5b8760208260051b850101111561247157600080fd5b60209283019550935050840135612401816128d2565b60006020828403121561249957600080fd5b815180151581146120ad57600080fd5b600080604083850312156124bc57600080fd5b505080516020909101519092909150565b600080600080606085870312156124e357600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561250957600080fd5b818701915087601f83011261251d57600080fd5b81358181111561252c57600080fd5b88602082850101111561253e57600080fd5b95989497505060200194505050565b60006040828403121561255f57600080fd5b6040516040810181811067ffffffffffffffff821117156125a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282356125b7816128d2565b81526020928301359281019290925250919050565b6000806000606084860312156125e157600080fd5b6125ea8461229d565b92506125f86020850161229d565b9150604084015163ffffffff8116811461240157600080fd5b60006020828403121561262357600080fd5b5051919050565b600081518084526126428160208601602086016127d6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516126868184602087016127d6565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261223f60a083018461262a565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000612712608083018461262a565b9695505050505050565b6020815260006120ad602083018461262a565b6000821982111561274257612742612874565b500190565b60008261277d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127ba576127ba612874565b500290565b6000828210156127d1576127d1612874565b500390565b60005b838110156127f15781810151838201526020016127d9565b838111156108485750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561283457612834612874565b5060010190565b60007f800000000000000000000000000000000000000000000000000000000000000082141561286d5761286d612874565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146128f457600080fd5b5056fea264697066735822122032956574c9dedf8a502aec1a66f71fd2cea03abca87f4cfa89d2c47c82fc832b64736f6c63430008070033
[codex:713015]
[codex:713015] thinking
[codex:713015] **Analyzing bytecode call patterns**
[codex:713015] exec
[codex:713015] /bin/bash -lc "python - <<'PY'
[codex:713015] import re
[codex:713015] from pathlib import Path
[codex:713015]
[codex:713015] text = Path('/tmp/codex-multi-4yerr9fx/BYTECODE_BUNDLE.txt').read_text()
[codex:713015] hex_match = re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:713015] hexstr = hex_match.group(1)[2:]
[codex:713015]
[codex:713015] opcodes = {i: f'OP_{i:02x}' for i in range(256)}
[codex:713015] names = {
[codex:713015] 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:713015] 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:713015] 0x20:'SHA3',
[codex:713015] 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:713015] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:713015] 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:713015] 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:713015] 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:713015] 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:713015] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:713015] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:713015] }
[codex:713015] for k,v in names.items():
[codex:713015] opcodes[k] = v
[codex:713015]
[codex:713015] b = bytes.fromhex(hexstr)
[codex:713015] ops = []
[codex:713015] i=0
[codex:713015] while i < len(b):
[codex:713015] op = b[i]
[codex:713015] name = opcodes[op]
[codex:713015] if 0x60 <= op <= 0x7f:
[codex:713015] n = op-0x5f
[codex:713015] data = b[i+1:i+1+n]
[codex:713015] ops.append((i, name, data.hex()))
[codex:713015] i += 1+n
[codex:713015] else:
[codex:713015] ops.append((i, name, ''))
[codex:713015] i += 1
[codex:713015]
[codex:713015] call_indices = [idx for idx,(off,name,arg) in enumerate(ops) if name=='CALL']
[codex:713015] print('CALL count', len(call_indices))
[codex:713015] for idx in call_indices:
[codex:713015] start = max(0, idx-15)
[codex:713015] end = min(len(ops), idx+15)
[codex:713015] print('\\n--- CALL at offset', hex(ops[idx][0]), '---')
[codex:713015] for off,name,arg in ops[start:end]:
[codex:713015] if arg:
[codex:713015] print(f\"{off:06x}: {name} 0x{arg}\")
[codex:713015] else:
[codex:713015] print(f\"{off:06x}: {name}\")
[codex:713015] PY" in /tmp/codex-multi-4yerr9fx succeeded in 32ms:
[codex:713015] CALL count 5
[codex:713015]
[codex:713015] --- CALL at offset 0x6b2 ---
[codex:713015] 00069f: PUSH1 0x00
[codex:713015] 0006a1: DUP8
[codex:713015] 0006a2: DUP1
[codex:713015] 0006a3: EXTCODESIZE
[codex:713015] 0006a4: ISZERO
[codex:713015] 0006a5: DUP1
[codex:713015] 0006a6: ISZERO
[codex:713015] 0006a7: PUSH2 0x06af
[codex:713015] 0006aa: JUMPI
[codex:713015] 0006ab: PUSH1 0x00
[codex:713015] 0006ad: DUP1
[codex:713015] 0006ae: REVERT
[codex:713015] 0006af: JUMPDEST
[codex:713015] 0006b0: POP
[codex:713015] 0006b1: GAS
[codex:713015] 0006b2: CALL
[codex:713015] 0006b3: ISZERO
[codex:713015]
[codex:713015] thinking
[codex:713015] **Analyzing low-level call patterns and potential vulnerabilities**
[codex:713015] exec
[codex:713015] /bin/bash -lc "python - <<'PY'
[codex:713015] import re
[codex:713015] from pathlib import Path
[codex:713015]
[codex:713015] text = Path('/tmp/codex-multi-4yerr9fx/BYTECODE_BUNDLE.txt').read_text()
[codex:713015] hex_match = re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', text)
[codex:713015] hexstr = hex_match.group(1)[2:]
[codex:713015]
[codex:713015] opcodes = {i: f'OP_{i:02x}' for i in range(256)}
[codex:713015] names = {
[codex:713015] 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:713015] 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:713015] 0x20:'SHA3',
[codex:713015] 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:713015] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:713015] 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:713015] 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:713015] 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:713015] 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:713015] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:713015] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:713015] }
[codex:713015] for k,v in names.items():
[codex:713015] opcodes[k] = v
[codex:713015]
[codex:713015] b = bytes.fromhex(hexstr)
[codex:713015] ops = []
[codex:713015] i=0
[codex:713015] while i < len(b):
[codex:713015] op = b[i]
[codex:713015] name = opcodes[op]
[codex:713015] if 0x60 <= op <= 0x7f:
[codex:713015] n = op-0x5f
[codex:713015] data = b[i+1:i+1+n]
[codex:713015] ops.append((i, name, data.hex()))
[codex:713015] i += 1+n
[codex:713015] else:
[codex:713015] ops.append((i, name, ''))
[codex:713015] i += 1
[codex:713015]
[codex:713015] # print around offset 0x1c9c
[codex:713015] start_offset = 0x1c60
[codex:713015] end_offset = 0x1d60
[codex:713015] for off,name,arg in ops:
[codex:713015] if start_offset <= off <= end_offset:
[codex:713015] if arg:
[codex:713015] print(f\"{off:06x}: {name} 0x{arg}\")
[codex:713015] else:
[codex:713015] print(f\"{off:06x}: {name}\")
[codex:713015] PY" in /tmp/codex-multi-4yerr9fx succeeded in 33ms:
[codex:713015] 001c68: AND
[codex:713015] 001c69: DUP4
[codex:713015] 001c6a: OR
[codex:713015] 001c6b: SWAP1
[codex:713015] 001c6c: SSTORE
[codex:713015] 001c6d: DUP3
[codex:713015] 001c6e: MLOAD
[codex:713015] 001c6f: SWAP4
[codex:713015] 001c70: DUP5
[codex:713015] 001c71: MSTORE
[codex:713015] 001c72: DUP4
[codex:713015] 001c73: ADD
[codex:713015] 001c74: MSTORE
[codex:713015] 001c75: PUSH32 0xe62434620f54c008068249f571016a0f7df8ccc9221d147292beb68c81d90650
[codex:713015] 001c96: SWAP2
[codex:713015] 001c97: ADD
[codex:713015] 001c98: PUSH2 0x094d
[codex:713015] 001c9b: JUMP
[codex:713015] 001c9c: JUMPDEST
[codex:713015] 001c9d: PUSH20 0x1f98431c8ad98523631ae4a59f267346ea31f984
[codex:713015]
[codex:713015] thinking
[codex:713015] **Analyzing Uniswap-based contract for issues**
[codex:713015] codex
[codex:713015] {"no_findings":true,"summary":"No concrete, explainable security issues were identified from the provided runtime bytecode/disassembly alone.","findings":[]}
[codex:713015] tokens used
[codex:713015] 46,488
[codex:713015] {"no_findings":true,"summary":"No concrete, explainable security issues were identified from the provided runtime bytecode/disassembly alone.","findings":[]}
{
"codex": {
"ran_at": "2025-12-30T02:29:31.154935+00:00",
"returncode": 0
},
"summary": "No concrete, explainable security issues were identified from the provided runtime bytecode/disassembly alone.",
"raw_final": {
"summary": "No concrete, explainable security issues were identified from the provided runtime bytecode/disassembly alone.",
"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 | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xcea1b50e4b94ac7c374c4cfaa334269020af949d78bcf96417f039604d544066
call_targets:
0xd249942f6d417cbfdcb792b1229353b66c790726
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xcea1b50e4b94ac7c374c4cfaa334269020af949d78bcf96417f039604d544066",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xd249942f6d417cbfdcb792b1229353b66c790726"
],
"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"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xcea1b50e4b94ac7c374c4cfaa334269020af949d78bcf96417f039604d544066
call_targets:
0xd249942f6d417cbfdcb792b1229353b66c790726
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xcea1b50e4b94ac7c374c4cfaa334269020af949d78bcf96417f039604d544066",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xd249942f6d417cbfdcb792b1229353b66c790726"
],
"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
}
|
| 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
}
|