0d6235be-82d0-4cb1-a0c5-a679554d7f4b
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 |
|---|---|---|---|---|
| 31075 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 76264 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 76265 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 76266 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 76267 | capability.graph | complete | 1 / 3 | 1 week ago |
| 76268 | detector.run | complete | 1 / 3 | 1 week ago |
| 76269 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1057376] OpenAI Codex v0.77.0 (research preview)
[codex:1057376] --------
[codex:1057376] workdir: /tmp/codex-multi-1o_gx_p8
[codex:1057376] model: gpt-5.2-codex
[codex:1057376] provider: openai
[codex:1057376] approval: never
[codex:1057376] sandbox: read-only
[codex:1057376] reasoning effort: xhigh
[codex:1057376] reasoning summaries: auto
[codex:1057376] session id: 019b7a54-6ba1-7510-95e9-7513ae6de96b
[codex:1057376] --------
[codex:1057376] user
[codex:1057376] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1057376]
[codex:1057376] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1057376]
[codex:1057376] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1057376] - Gas inefficiency, code quality, or best practices
[codex:1057376] - Theoretical vulnerabilities without a clear extraction path
[codex:1057376] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1057376] - Issues requiring social engineering or off-chain coordination
[codex:1057376]
[codex:1057376] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1057376] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1057376] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1057376] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1057376] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1057376] - External calls before state updates (reentrancy)
[codex:1057376] - SELFDESTRUCT with controllable beneficiary
[codex:1057376] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1057376]
[codex:1057376] For each finding, you MUST explain:
[codex:1057376] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1057376] 2. The concrete sequence of transactions to extract value
[codex:1057376] 3. Why you believe this is exploitable (not just suspicious)
[codex:1057376]
[codex:1057376] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1057376] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1057376]
[codex:1057376] Output MUST be valid JSON matching the provided schema.
[codex:1057376] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1057376] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1057376] mcp startup: no servers
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Checking for instructions**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc ls in /tmp/codex-multi-1o_gx_p8 succeeded in 6ms:
[codex:1057376] BYTECODE_BUNDLE.txt
[codex:1057376] codex-output-schema.json
[codex:1057376] exec
[codex:1057376] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-1o_gx_p8 succeeded in 5ms:
[codex:1057376] Runtime bytecode bundle for best-effort auditing.
[codex:1057376] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1057376]
[codex:1057376] FILE: runtime_bytecode.hex
[codex:1057376] 0x60806040526004361061007f5760003560e01c8063abe3219c1161004e578063abe3219c146101e1578063c6044c461461020c578063ca34837b14610235578063fc0f392d1461025e576100c9565b8063158ef93e14610113578063722769911461013e578063736c0d5b146101675780637df73e27146101a4576100c9565b366100c95760003411156100c7577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f033346040516100be929190610f19565b60405180910390a15b005b6000341115610111577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f033346000366040516101089493929190610fa2565b60405180910390a15b005b34801561011f57600080fd5b50610128610275565b6040516101359190610ffd565b60405180910390f35b34801561014a57600080fd5b50610165600480360381019061016091906110a1565b610286565b005b34801561017357600080fd5b5061018e60048036038101906101899190611138565b610329565b60405161019b9190610ffd565b60405180910390f35b3480156101b057600080fd5b506101cb60048036038101906101c69190611138565b610349565b6040516101d89190610ffd565b60405180910390f35b3480156101ed57600080fd5b506101f661039e565b6040516102039190610ffd565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e91906111c5565b6103b1565b005b34801561024157600080fd5b5061025c60048036038101906102579190611268565b6105a3565b005b34801561026a57600080fd5b5061027361073f565b005b60018054906101000a900460ff1681565b61028f33610349565b6102ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c59061137b565b60405180910390fd5b60006102d86107da565b868686866040516020016102f095949392919061147e565b60405160208183030381529060405280519060200120905061031486828486610817565b5050610321848787610bd6565b505050505050565b60006020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600160009054906101000a900460ff1681565b60018054906101000a900460ff16156103ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f690611525565b60405180910390fd5b60058282905014610445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043c90611591565b60405180910390fd5b60005b828290508160ff16101561058457600073ffffffffffffffffffffffffffffffffffffffff1683838360ff16818110610484576104836115b1565b5b90506020020160208101906104999190611138565b73ffffffffffffffffffffffffffffffffffffffff1614156104f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e79061162c565b60405180910390fd5b600160008085858560ff1681811061050b5761050a6115b1565b5b90506020020160208101906105209190611138565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061057c90611688565b915050610448565b5060018060016101000a81548160ff0219169083151502179055505050565b6105ac33610349565b6105eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e29061137b565b60405180910390fd5b60006105f5610d0c565b878787878760405160200161060f969594939291906116e2565b60405160208183030381529060405280519060200120905060008061063689848688610817565b809250819350505060008973ffffffffffffffffffffffffffffffffffffffff1689898960405161066892919061173b565b60006040518083038185875af1925050503d80600081146106a5576040519150601f19603f3d011682016040523d82523d6000602084013e6106aa565b606091505b50509050806106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e5906117a0565b60405180910390fd5b7f41c66bdacda1c924feabe80d3771ca4928b814ee4ebf1ddc230b10eaa2966dc1338484878e8e8e8e60405161072b9897969594939291906117d9565b60405180910390a150505050505050505050565b61074833610349565b610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e9061137b565b60405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a91157336040516107d09190611851565b60405180910390a1565b60606040518060400160405280600581526020017f4552433230000000000000000000000000000000000000000000000000000000815250905090565b6000806002801461085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610854906118b8565b60405180910390fd5b60006108cf8686600060028110610877576108766115b1565b5b60200281019061088791906118e7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610d49565b9050600061094387876001600281106108eb576108ea6115b1565b5b6020028101906108fb91906118e7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610d49565b9050600160009054906101000a900460ff161580610966575061096588610349565b5b6109a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099c90611996565b60405180910390fd5b428510156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90611a02565b60405180910390fd5b6109f182610349565b610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a279061162c565b60405180910390fd5b610a3981610349565b610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f9061162c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade90611a94565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90611b26565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc90611bb8565b60405180910390fd5b818193509350505094509492505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610c08929190611bd8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c569190611c3d565b6000604051808303816000865af19150503d8060008114610c93576040519150601f19603f3d011682016040523d82523d6000602084013e610c98565b606091505b5091509150818015610cc65750600081511480610cc5575080806020019051810190610cc49190611c80565b5b5b610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90611d1f565b60405180910390fd5b5050505050565b60606040518060400160405280600581526020017f4554484552000000000000000000000000000000000000000000000000000000815250905090565b60006041825114610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8690611d8b565b60405180910390fd5b6000806000602085015192506040850151915060ff6041860151169050601b8160ff161015610dc857601b81610dc59190611dab565b90505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2590611e54565b60405180910390fd5b60018682858560405160008152602001604052604051610e519493929190611e83565b6020604051602081039080840390855afa158015610e73573d6000803e3d6000fd5b50505060206040510351935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610eb382610e88565b9050919050565b610ec381610ea8565b82525050565b6000819050919050565b610edc81610ec9565b82525050565b600082825260208201905092915050565b50565b6000610f03600083610ee2565b9150610f0e82610ef3565b600082019050919050565b6000606082019050610f2e6000830185610eba565b610f3b6020830184610ed3565b8181036040830152610f4c81610ef6565b90509392505050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610f818385610ee2565b9350610f8e838584610f55565b610f9783610f64565b840190509392505050565b6000606082019050610fb76000830187610eba565b610fc46020830186610ed3565b8181036040830152610fd7818486610f75565b905095945050505050565b60008115159050919050565b610ff781610fe2565b82525050565b60006020820190506110126000830184610fee565b92915050565b600080fd5b600080fd5b61102b81610ea8565b811461103657600080fd5b50565b60008135905061104881611022565b92915050565b61105781610ec9565b811461106257600080fd5b50565b6000813590506110748161104e565b92915050565b600080fd5b60008190508260206002028201111561109b5761109a61107a565b5b92915050565b600080600080600060a086880312156110bd576110bc611018565b5b60006110cb88828901611039565b95505060206110dc88828901611065565b94505060406110ed88828901611039565b93505060606110fe88828901611065565b925050608086013567ffffffffffffffff81111561111f5761111e61101d565b5b61112b8882890161107f565b9150509295509295909350565b60006020828403121561114e5761114d611018565b5b600061115c84828501611039565b91505092915050565b600080fd5b600080fd5b60008083601f84011261118557611184611165565b5b8235905067ffffffffffffffff8111156111a2576111a161116a565b5b6020830191508360208202830111156111be576111bd61107a565b5b9250929050565b600080602083850312156111dc576111db611018565b5b600083013567ffffffffffffffff8111156111fa576111f961101d565b5b6112068582860161116f565b92509250509250929050565b60008083601f84011261122857611227611165565b5b8235905067ffffffffffffffff8111156112455761124461116a565b5b6020830191508360018202830111156112615761126061107a565b5b9250929050565b60008060008060008060a0878903121561128557611284611018565b5b600061129389828a01611039565b96505060206112a489828a01611065565b955050604087013567ffffffffffffffff8111156112c5576112c461101d565b5b6112d189828a01611212565b945094505060606112e489828a01611065565b925050608087013567ffffffffffffffff8111156113055761130461101d565b5b61131189828a0161107f565b9150509295509295509295565b600082825260208201905092915050565b7f4e6f6e2d7369676e657220696e206f6e6c795369676e6572206d6574686f6400600082015250565b6000611365601f8361131e565b91506113708261132f565b602082019050919050565b6000602082019050818103600083015261139481611358565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156113cf5780820151818401526020810190506113b4565b838111156113de576000848401525b50505050565b60006113ef8261139b565b6113f981856113a6565b93506114098185602086016113b1565b80840191505092915050565b60008160601b9050919050565b600061142d82611415565b9050919050565b600061143f82611422565b9050919050565b61145761145282610ea8565b611434565b82525050565b6000819050919050565b61147861147382610ec9565b61145d565b82525050565b600061148a82886113e4565b91506114968287611446565b6014820191506114a68286611467565b6020820191506114b68285611446565b6014820191506114c68284611467565b6020820191508190509695505050505050565b7f436f6e747261637420616c726561647920696e697469616c697a656400000000600082015250565b600061150f601c8361131e565b915061151a826114d9565b602082019050919050565b6000602082019050818103600083015261153e81611502565b9050919050565b7f496e76616c6964206e756d626572206f66207369676e65727300000000000000600082015250565b600061157b60198361131e565b915061158682611545565b602082019050919050565b600060208201905081810360008301526115aa8161156e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c6964207369676e6572000000000000000000000000000000000000600082015250565b6000611616600e8361131e565b9150611621826115e0565b602082019050919050565b6000602082019050818103600083015261164581611609565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff82169050919050565b60006116938261167b565b915060ff8214156116a7576116a661164c565b5b600182019050919050565b600081905092915050565b60006116c983856116b2565b93506116d6838584610f55565b82840190509392505050565b60006116ee82896113e4565b91506116fa8288611446565b60148201915061170a8287611467565b60208201915061171b8285876116bd565b91506117278284611467565b602082019150819050979650505050505050565b60006117488284866116bd565b91508190509392505050565b7f43616c6c20657865637574696f6e206661696c65640000000000000000000000600082015250565b600061178a60158361131e565b915061179582611754565b602082019050919050565b600060208201905081810360008301526117b98161177d565b9050919050565b6000819050919050565b6117d3816117c0565b82525050565b600060e0820190506117ee600083018b610eba565b6117fb602083018a610eba565b6118086040830189610eba565b61181560608301886117ca565b6118226080830187610eba565b61182f60a0830186610ed3565b81810360c0830152611842818486610f75565b90509998505050505050505050565b60006020820190506118666000830184610eba565b92915050565b7f7369676e6174757265206e656564203200000000000000000000000000000000600082015250565b60006118a260108361131e565b91506118ad8261186c565b602082019050919050565b600060208201905081810360008301526118d181611895565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112611904576119036118d8565b5b80840192508235915067ffffffffffffffff821115611926576119256118dd565b5b602083019250600182023603831315611942576119416118e2565b5b509250929050565b7f45787465726e616c207472616e7366657220696e2073616665206d6f64650000600082015250565b6000611980601e8361131e565b915061198b8261194a565b602082019050919050565b600060208201905081810360008301526119af81611973565b9050919050565b7f5472616e73616374696f6e206578706972656400000000000000000000000000600082015250565b60006119ec60138361131e565b91506119f7826119b6565b602082019050919050565b60006020820190508181036000830152611a1b816119df565b9050919050565b7f66697273745369676e65722073686f756c64206e6f7420626520657175616c2060008201527f746f207365636f6e645369676e65720000000000000000000000000000000000602082015250565b6000611a7e602f8361131e565b9150611a8982611a22565b604082019050919050565b60006020820190508181036000830152611aad81611a71565b9050919050565b7f66697273745369676e65722073686f756c64206e6f7420626520657175616c2060008201527f746f206d73672e73656e64657200000000000000000000000000000000000000602082015250565b6000611b10602d8361131e565b9150611b1b82611ab4565b604082019050919050565b60006020820190508181036000830152611b3f81611b03565b9050919050565b7f7365636f6e645369676e65722073686f756c64206e6f7420626520657175616c60008201527f20746f206d73672e73656e646572000000000000000000000000000000000000602082015250565b6000611ba2602e8361131e565b9150611bad82611b46565b604082019050919050565b60006020820190508181036000830152611bd181611b95565b9050919050565b6000604082019050611bed6000830185610eba565b611bfa6020830184610ed3565b9392505050565b600081519050919050565b6000611c1782611c01565b611c2181856116b2565b9350611c318185602086016113b1565b80840191505092915050565b6000611c498284611c0c565b915081905092915050565b611c5d81610fe2565b8114611c6857600080fd5b50565b600081519050611c7a81611c54565b92915050565b600060208284031215611c9657611c95611018565b5b6000611ca484828501611c6b565b91505092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260008201527f616e73666572206661696c656400000000000000000000000000000000000000602082015250565b6000611d09602d8361131e565b9150611d1482611cad565b604082019050919050565b60006020820190508181036000830152611d3881611cfc565b9050919050565b7f496e76616c6964207369676e6174757265202d2077726f6e67206c656e677468600082015250565b6000611d7560208361131e565b9150611d8082611d3f565b602082019050919050565b60006020820190508181036000830152611da481611d68565b9050919050565b6000611db68261167b565b9150611dc18361167b565b92508260ff03821115611dd757611dd661164c565b5b828201905092915050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e3e60228361131e565b9150611e4982611de2565b604082019050919050565b60006020820190508181036000830152611e6d81611e31565b9050919050565b611e7d8161167b565b82525050565b6000608082019050611e9860008301876117ca565b611ea56020830186611e74565b611eb260408301856117ca565b611ebf60608301846117ca565b9594505050505056fea2646970667358221220e5f02471cb504d4202a33beec6b0f39443b2e6a9c8d1d25b67b9dfe53ca596b264736f6c634300080a0033
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Examining bytecode for multisig exploit potential**
[codex:1057376]
[codex:1057376] I’m analyzing bytecode strings and function selectors that hint at a multisig wallet, focusing on signature verification, signer checks, and external calls. I want to see if there’s a replay vulnerability or missing nonce to exploit without off-chain tricks, so I’m preparing to identify storage write patterns, like SSTORE, to verify nonce or usage tracking, potentially using Python to scan opcodes and confirm if a concrete exploit path exists.
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] # extract hex after 0x
[codex:1057376] m=re.search(r'0x[0-9a-fA-F]+',hexdata)
[codex:1057376] hexstr=m.group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # opcode lengths for push
[codex:1057376] SSTORE=0x55
[codex:1057376] # disassemble with pc
[codex:1057376] pc=0
[codex:1057376] ops=[]
[codex:1057376] while pc<len(code):
[codex:1057376] op=code[pc]
[codex:1057376] ops.append((pc,op))
[codex:1057376] pc+=1
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] pc+=op-0x5f
[codex:1057376]
[codex:1057376] # find sstore
[codex:1057376] sstores=[pc for pc,op in ops if op==SSTORE]
[codex:1057376] print('sstore count',len(sstores))
[codex:1057376] print('sstore pcs',sstores)
[codex:1057376] # find delegatecall/selfdestruct
[codex:1057376] for name,opc in [('DELEGATECALL',0xf4),('SELFDESTRUCT',0xff),('CALL',0xf1),('CALLCODE',0xf2),('STATICCALL',0xfa)]:
[codex:1057376] pcs=[pc for pc,op in ops if op==opc]
[codex:1057376] print(name,len(pcs))
[codex:1057376] print(pcs[:10])
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 41ms:
[codex:1057376] sstore count 3
[codex:1057376] sstore pcs [1392, 1438, 1952]
[codex:1057376] DELEGATECALL 0
[codex:1057376] []
[codex:1057376] SELFDESTRUCT 0
[codex:1057376] []
[codex:1057376] CALL 2
[codex:1057376] [1653, 3172]
[codex:1057376] CALLCODE 0
[codex:1057376] []
[codex:1057376] STATICCALL 1
[codex:1057376] [3682]
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Inspecting CALL and SSTORE instructions**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # simple disassembler
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] # show around call sites
[codex:1057376] call_pcs=[1653,3172]
[codex:1057376] for c in call_pcs:
[codex:1057376] print('--- around',c)
[codex:1057376] for pc,name,arg in disasm(c-40,c+40):
[codex:1057376] print(f'{pc:04x} {name} {arg}')
[codex:1057376]
[codex:1057376] print('--- around staticcall 3682')
[codex:1057376] for pc,name,arg in disasm(3682-40,3682+40):
[codex:1057376] print(f'{pc:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 24ms:
[codex:1057376] --- around 1653
[codex:1057376] 064d SELFDESTRUCT
[codex:1057376] 064e SELFDESTRUCT
[codex:1057376] 064f SELFDESTRUCT
[codex:1057376] 0650 SELFDESTRUCT
[codex:1057376] 0651 SELFDESTRUCT
[codex:1057376] 0652 SELFDESTRUCT
[codex:1057376] 0653 SELFDESTRUCT
[codex:1057376] 0654 SELFDESTRUCT
[codex:1057376] 0655 SELFDESTRUCT
[codex:1057376] 0656 SELFDESTRUCT
[codex:1057376] 0657 AND
[codex:1057376] 0658 DUP10
[codex:1057376] 0659 DUP10
[codex:1057376] 065a DUP10
[codex:1057376] 065b PUSH1 0x40
[codex:1057376] 065d MLOAD
[codex:1057376] 065e PUSH2 0x0668
[codex:1057376] 0661 SWAP3
[codex:1057376] 0662 SWAP2
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing contract call flow and signer checks**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # simple disasm function
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for pc in [1392,1438,1952]:
[codex:1057376] print('--- around sstore',pc)
[codex:1057376] for p,name,arg in disasm(pc-40,pc+40):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 24ms:
[codex:1057376] --- around sstore 1392
[codex:1057376] 0548 SELFDESTRUCT
[codex:1057376] 0549 SELFDESTRUCT
[codex:1057376] 054a SELFDESTRUCT
[codex:1057376] 054b SELFDESTRUCT
[codex:1057376] 054c AND
[codex:1057376] 054d DUP2
[codex:1057376] 054e MSTORE
[codex:1057376] 054f PUSH1 0x20
[codex:1057376] 0551 ADD
[codex:1057376] 0552 SWAP1
[codex:1057376] 0553 DUP2
[codex:1057376] 0554 MSTORE
[codex:1057376] 0555 PUSH1 0x20
[codex:1057376] 0557 ADD
[codex:1057376] 0558 PUSH1 0x00
[codex:1057376] 055a SHA3
[codex:1057376] 055b PUSH1 0x00
[codex:1057376] 055d PUSH2 0x0100
[codex:1057376] 0560 EXP
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing SSTORE usage and replay protection**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # disasm helper
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for pc,name,arg in disasm(0x0950,0x0a40):
[codex:1057376] print(f'{pc:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 24ms:
[codex:1057376] 0950 EXP
[codex:1057376] 0951 SWAP1
[codex:1057376] 0952 DIV
[codex:1057376] 0953 PUSH1 0xff
[codex:1057376] 0955 AND
[codex:1057376] 0956 ISZERO
[codex:1057376] 0957 DUP1
[codex:1057376] 0958 PUSH2 0x0966
[codex:1057376] 095b JUMPI
[codex:1057376] 095c POP
[codex:1057376] 095d PUSH2 0x0965
[codex:1057376] 0960 DUP9
[codex:1057376] 0961 PUSH2 0x0349
[codex:1057376] 0964 JUMP
[codex:1057376] 0965 JUMPDEST
[codex:1057376] 0966 JUMPDEST
[codex:1057376] 0967 PUSH2 0x09a5
[codex:1057376] 096a JUMPI
[codex:1057376] 096b PUSH1 0x40
[codex:1057376] 096d MLOAD
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing multisig contract structure and function mappings**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # simple disasm function
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] entries={
[codex:1057376] '0x158ef93e':0x0113,
[codex:1057376] '0x72276991':0x013e,
[codex:1057376] '0x736c0d5b':0x0167,
[codex:1057376] '0x7df73e27':0x01a4,
[codex:1057376] '0xabe3219c':0x01e1,
[codex:1057376] '0xc6044c46':0x020c,
[codex:1057376] '0xca34837b':0x0235,
[codex:1057376] '0xfc0f392d':0x025e,
[codex:1057376] }
[codex:1057376] for sel,pc in entries.items():
[codex:1057376] print(f'=== {sel} entry {pc:04x}')
[codex:1057376] for p,name,arg in disasm(pc, pc+120):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] print()
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 25ms:
[codex:1057376] === 0x158ef93e entry 0113
[codex:1057376] 0113 JUMPDEST
[codex:1057376] 0114 CALLVALUE
[codex:1057376] 0115 DUP1
[codex:1057376] 0116 ISZERO
[codex:1057376] 0117 PUSH2 0x011f
[codex:1057376] 011a JUMPI
[codex:1057376] 011b PUSH1 0x00
[codex:1057376] 011d DUP1
[codex:1057376] 011e REVERT
[codex:1057376] 011f JUMPDEST
[codex:1057376] 0120 POP
[codex:1057376] 0121 PUSH2 0x0128
[codex:1057376] 0124 PUSH2 0x0275
[codex:1057376] 0127 JUMP
[codex:1057376] 0128 JUMPDEST
[codex:1057376] 0129 PUSH1 0x40
[codex:1057376] 012b MLOAD
[codex:1057376] 012c PUSH2 0x0135
[codex:1057376] 012f SWAP2
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing overlapping function disassembly**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # disasm helper
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for p,name,arg in disasm(0x0380,0x0420):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 23ms:
[codex:1057376] 0380 ADD
[codex:1057376] 0381 SWAP1
[codex:1057376] 0382 DUP2
[codex:1057376] 0383 MSTORE
[codex:1057376] 0384 PUSH1 0x20
[codex:1057376] 0386 ADD
[codex:1057376] 0387 PUSH1 0x00
[codex:1057376] 0389 SHA3
[codex:1057376] 038a PUSH1 0x00
[codex:1057376] 038c SWAP1
[codex:1057376] 038d SLOAD
[codex:1057376] 038e SWAP1
[codex:1057376] 038f PUSH2 0x0100
[codex:1057376] 0392 EXP
[codex:1057376] 0393 SWAP1
[codex:1057376] 0394 DIV
[codex:1057376] 0395 PUSH1 0xff
[codex:1057376] 0397 AND
[codex:1057376] 0398 SWAP1
[codex:1057376] 0399 POP
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing multi-sig initialization and replay risks**
[codex:1057376]
[codex:1057376] I'm exploring the contract's initialization and signer verification logic, noticing it enforces exactly 5 unique signers and sets flags like `initialized` and `safeMode`. The execute function requires a caller signer plus two distinct signature signers (3-of-5), but no nonce or state updates prevent replay, potentially allowing repeated transaction execution by other signers. I’m considering whether uninitialized contracts might be vulnerable to takeover via the open `initialize` function, though I can't confirm deployment context from bytecode alone. Overall, I’m looking for a concrete exploit path but find mostly expected permission patterns and replay risks limited to signer insiders.
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # disasm helper
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for p,name,arg in disasm(0x05a3,0x07f0):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 25ms:
[codex:1057376] 05a3 JUMPDEST
[codex:1057376] 05a4 PUSH2 0x05ac
[codex:1057376] 05a7 CALLER
[codex:1057376] 05a8 PUSH2 0x0349
[codex:1057376] 05ab JUMP
[codex:1057376] 05ac JUMPDEST
[codex:1057376] 05ad PUSH2 0x05eb
[codex:1057376] 05b0 JUMPI
[codex:1057376] 05b1 PUSH1 0x40
[codex:1057376] 05b3 MLOAD
[codex:1057376] 05b4 PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1057376] 05d5 DUP2
[codex:1057376] 05d6 MSTORE
[codex:1057376] 05d7 PUSH1 0x04
[codex:1057376] 05d9 ADD
[codex:1057376] 05da PUSH2 0x05e2
[codex:1057376] 05dd SWAP1
[codex:1057376] 05de PUSH2 0x137b
[codex:1057376] 05e1 JUMP
[codex:1057376] 05e2 JUMPDEST
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing execute function and ETH transfer process**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # disasm helper
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for p,name,arg in disasm(0x0286,0x0360):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 25ms:
[codex:1057376] 0286 JUMPDEST
[codex:1057376] 0287 PUSH2 0x028f
[codex:1057376] 028a CALLER
[codex:1057376] 028b PUSH2 0x0349
[codex:1057376] 028e JUMP
[codex:1057376] 028f JUMPDEST
[codex:1057376] 0290 PUSH2 0x02ce
[codex:1057376] 0293 JUMPI
[codex:1057376] 0294 PUSH1 0x40
[codex:1057376] 0296 MLOAD
[codex:1057376] 0297 PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1057376] 02b8 DUP2
[codex:1057376] 02b9 MSTORE
[codex:1057376] 02ba PUSH1 0x04
[codex:1057376] 02bc ADD
[codex:1057376] 02bd PUSH2 0x02c5
[codex:1057376] 02c0 SWAP1
[codex:1057376] 02c1 PUSH2 0x137b
[codex:1057376] 02c4 JUMP
[codex:1057376] 02c5 JUMPDEST
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing function calls and signatures**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # disasm helper
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for p,name,arg in disasm(0x0817,0x0bd6):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 27ms:
[codex:1057376] 0817 JUMPDEST
[codex:1057376] 0818 PUSH1 0x00
[codex:1057376] 081a DUP1
[codex:1057376] 081b PUSH1 0x02
[codex:1057376] 081d DUP1
[codex:1057376] 081e EQ
[codex:1057376] 081f PUSH2 0x085d
[codex:1057376] 0822 JUMPI
[codex:1057376] 0823 PUSH1 0x40
[codex:1057376] 0825 MLOAD
[codex:1057376] 0826 PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1057376] 0847 DUP2
[codex:1057376] 0848 MSTORE
[codex:1057376] 0849 PUSH1 0x04
[codex:1057376] 084b ADD
[codex:1057376] 084c PUSH2 0x0854
[codex:1057376] 084f SWAP1
[codex:1057376] 0850 PUSH2 0x18b8
[codex:1057376] 0853 JUMP
[codex:1057376] 0854 JUMPDEST
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing signature verification logic**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # disasm helper
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for p,name,arg in disasm(0x0d49,0x0e90):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 25ms:
[codex:1057376] 0d49 JUMPDEST
[codex:1057376] 0d4a PUSH1 0x00
[codex:1057376] 0d4c PUSH1 0x41
[codex:1057376] 0d4e DUP3
[codex:1057376] 0d4f MLOAD
[codex:1057376] 0d50 EQ
[codex:1057376] 0d51 PUSH2 0x0d8f
[codex:1057376] 0d54 JUMPI
[codex:1057376] 0d55 PUSH1 0x40
[codex:1057376] 0d57 MLOAD
[codex:1057376] 0d58 PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:1057376] 0d79 DUP2
[codex:1057376] 0d7a MSTORE
[codex:1057376] 0d7b PUSH1 0x04
[codex:1057376] 0d7d ADD
[codex:1057376] 0d7e PUSH2 0x0d86
[codex:1057376] 0d81 SWAP1
[codex:1057376] 0d82 PUSH2 0x1d8b
[codex:1057376] 0d85 JUMP
[codex:1057376] 0d86 JUMPDEST
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing ECDSA recover and replay risks**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # scan for opcode 0x46 (CHAINID)
[codex:1057376] pcs=[]
[codex:1057376] pc=0
[codex:1057376] while pc<len(code):
[codex:1057376] op=code[pc]
[codex:1057376] if op==0x46:
[codex:1057376] pcs.append(pc)
[codex:1057376] pc+=1
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] pc+=op-0x5f
[codex:1057376] print('CHAINID pcs',pcs)
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 26ms:
[codex:1057376] CHAINID pcs []
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing signature domain separation**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # find opcode 0x30 ADDRESS
[codex:1057376] pcs=[]
[codex:1057376] pc=0
[codex:1057376] while pc<len(code):
[codex:1057376] op=code[pc]
[codex:1057376] if op==0x30:
[codex:1057376] pcs.append(pc)
[codex:1057376] pc+=1
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] pc+=op-0x5f
[codex:1057376] print('ADDRESS pcs',pcs[:20], 'count', len(pcs))
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 25ms:
[codex:1057376] ADDRESS pcs [] count 0
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Analyzing replay risks without address or chain ID**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc "python - <<'PY'
[codex:1057376] import re
[codex:1057376] hexdata=open('/tmp/codex-multi-1o_gx_p8/BYTECODE_BUNDLE.txt').read()
[codex:1057376] hexstr=re.search(r'0x[0-9a-fA-F]+',hexdata).group(0)[2:]
[codex:1057376] code=bytes.fromhex(hexstr)
[codex:1057376] # disasm helper
[codex:1057376] opnames={
[codex:1057376] 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:1057376] 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:1057376] 0x20:'SHA3',
[codex:1057376] 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:1057376] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057376] 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:1057376] 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',
[codex:1057376] 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:1057376] 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:1057376] 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:1057376] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057376] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057376] }
[codex:1057376]
[codex:1057376] def disasm(start,end):
[codex:1057376] pc=start
[codex:1057376] out=[]
[codex:1057376] while pc<end:
[codex:1057376] op=code[pc]
[codex:1057376] name=opnames.get(op,hex(op))
[codex:1057376] pc0=pc
[codex:1057376] pc+=1
[codex:1057376] arg=None
[codex:1057376] if 0x60<=op<=0x7f:
[codex:1057376] n=op-0x5f
[codex:1057376] arg=code[pc:pc+n]
[codex:1057376] pc+=n
[codex:1057376] if arg is None:
[codex:1057376] out.append((pc0,name,''))
[codex:1057376] else:
[codex:1057376] out.append((pc0,name,'0x'+arg.hex()))
[codex:1057376] return out
[codex:1057376]
[codex:1057376] for p,name,arg in disasm(0x0349,0x0390):
[codex:1057376] print(f'{p:04x} {name} {arg}')
[codex:1057376] PY" in /tmp/codex-multi-1o_gx_p8 succeeded in 27ms:
[codex:1057376] 0349 JUMPDEST
[codex:1057376] 034a PUSH1 0x00
[codex:1057376] 034c DUP1
[codex:1057376] 034d PUSH1 0x00
[codex:1057376] 034f DUP4
[codex:1057376] 0350 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1057376] 0365 AND
[codex:1057376] 0366 PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1057376] 037b AND
[codex:1057376] 037c DUP2
[codex:1057376] 037d MSTORE
[codex:1057376] 037e PUSH1 0x20
[codex:1057376] 0380 ADD
[codex:1057376] 0381 SWAP1
[codex:1057376] 0382 DUP2
[codex:1057376] 0383 MSTORE
[codex:1057376] 0384 PUSH1 0x20
[codex:1057376] 0386 ADD
[codex:1057376] 0387 PUSH1 0x00
[codex:1057376] 0389 SHA3
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Confirming no exploit found**
[codex:1057376] exec
[codex:1057376] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-1o_gx_p8 succeeded in 6ms:
[codex:1057376] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:1057376]
[codex:1057376] thinking
[codex:1057376] **Summarizing bytecode analysis results**
[codex:1057376]
[codex:1057376] I’m putting together a clear summary that states no concrete exploit path was found in the runtime bytecode after checking for common risky operations like delegatecall or selfdestruct. The summary will be cautious not to imply unconfirmed vulnerabilities and will present the results exactly as JSON with an empty array to show no findings.
[codex:1057376] codex
[codex:1057376] {"no_findings":true,"summary":"Reviewed full runtime bytecode bundle; external calls are gated by signer checks and signature validation, no delegatecall/selfdestruct paths, and no concrete profit-extraction sequence is provable from bytecode alone.","findings":[]}
[codex:1057376] tokens used
[codex:1057376] 77,007
[codex:1057376] {"no_findings":true,"summary":"Reviewed full runtime bytecode bundle; external calls are gated by signer checks and signature validation, no delegatecall/selfdestruct paths, and no concrete profit-extraction sequence is provable from bytecode alone.","findings":[]}
{
"codex": {
"ran_at": "2026-01-01T16:20:01.486961+00:00",
"returncode": 0
},
"summary": "Reviewed full runtime bytecode bundle; external calls are gated by signer checks and signature validation, no delegatecall/selfdestruct paths, and no concrete profit-extraction sequence is provable from bytecode alone.",
"raw_final": {
"summary": "Reviewed full runtime bytecode bundle; external calls are gated by signer checks and signature validation, no delegatecall/selfdestruct paths, and no concrete profit-extraction sequence is provable from bytecode alone.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x007f 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0xabe3219c 00000019: GT 0000001a: PUSH2 0x004e 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xabe3219c 00000024: EQ 00000025: PUSH2 0x01e1 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xc6044c46 0000002f: EQ 00000030: PUSH2 0x020c 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xca34837b 0000003a: EQ 0000003b: PUSH2 0x0235 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xfc0f392d 00000045: EQ 00000046: PUSH2 0x025e 00000049: JUMPI 0000004a: PUSH2 0x00c9 0000004d: JUMP 0000004e: JUMPDEST 0000004f: DUP1 00000050: PUSH4 0x158ef93e 00000055: EQ 00000056: PUSH2 0x0113 00000059: JUMPI 0000005a: DUP1 0000005b: PUSH4 0x72276991 00000060: EQ 00000061: PUSH2 0x013e 00000064: JUMPI 00000065: DUP1 00000066: PUSH4 0x736c0d5b 0000006b: EQ 0000006c: PUSH2 0x0167 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x7df73e27 00000076: EQ 00000077: PUSH2 0x01a4 0000007a: JUMPI 0000007b: PUSH2 0x00c9 0000007e: JUMP 0000007f: JUMPDEST 00000080: CALLDATASIZE 00000081: PUSH2 0x00c9 00000084: JUMPI 00000085: PUSH1 0x00 00000087: CALLVALUE 00000088: GT 00000089: ISZERO 0000008a: PUSH2 0x00c7 0000008d: JUMPI 0000008e: PUSH32 0x6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f0 000000af: CALLER 000000b0: CALLVALUE 000000b1: PUSH1 0x40 000000b3: MLOAD 000000b4: PUSH2 0x00be 000000b7: SWAP3 000000b8: SWAP2 000000b9: SWAP1 000000ba: PUSH2 0x0f19 000000bd: JUMP 000000be: JUMPDEST 000000bf: PUSH1 0x40 000000c1: MLOAD 000000c2: DUP1 000000c3: SWAP2 000000c4: SUB 000000c5: SWAP1 000000c6: LOG1 000000c7: JUMPDEST 000000c8: STOP 000000c9: JUMPDEST 000000ca: PUSH1 0x00 000000cc: CALLVALUE 000000cd: GT 000000ce: ISZERO 000000cf: PUSH2 0x0111 000000d2: JUMPI 000000d3: PUSH32 0x6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f0 000000f4: CALLER 000000f5: CALLVALUE 000000f6: PUSH1 0x00 000000f8: CALLDATASIZE 000000f9: PUSH1 0x40 000000fb: MLOAD 000000fc: PUSH2 0x0108 000000ff: SWAP5 00000100: SWAP4 00000101: SWAP3 00000102: SWAP2 00000103: SWAP1 00000104: PUSH2 0x0fa2 00000107: JUMP 00000108: JUMPDEST 00000109: PUSH1 0x40 0000010b: MLOAD 0000010c: DUP1 0000010d: SWAP2 0000010e: SUB 0000010f: SWAP1 00000110: LOG1 00000111: JUMPDEST 00000112: STOP 00000113: JUMPDEST 00000114: CALLVALUE 00000115: DUP1 00000116: ISZERO 00000117: PUSH2 0x011f 0000011a: JUMPI 0000011b: PUSH1 0x00 0000011d: DUP1 0000011e: REVERT 0000011f: JUMPDEST 00000120: POP 00000121: PUSH2 0x0128 00000124: PUSH2 0x0275 00000127: JUMP 00000128: JUMPDEST 00000129: PUSH1 0x40 0000012b: MLOAD 0000012c: PUSH2 0x0135 0000012f: SWAP2 00000130: SWAP1 00000131: PUSH2 0x0ffd 00000134: JUMP 00000135: JUMPDEST 00000136: PUSH1 0x40 00000138: MLOAD 00000139: DUP1 0000013a: SWAP2 0000013b: SUB 0000013c: SWAP1 0000013d: RETURN 0000013e: JUMPDEST 0000013f: CALLVALUE 00000140: DUP1 00000141: ISZERO 00000142: PUSH2 0x014a 00000145: JUMPI 00000146: PUSH1 0x00 00000148: DUP1 00000149: REVERT 0000014a: JUMPDEST 0000014b: POP 0000014c: PUSH2 0x0165 0000014f: PUSH1 0x04 00000151: DUP1 00000152: CALLDATASIZE 00000153: SUB 00000154: DUP2 00000155: ADD 00000156: SWAP1 00000157: PUSH2 0x0160 0000015a: SWAP2 0000015b: SWAP1 0000015c: PUSH2 0x10a1 0000015f: JUMP 00000160: JUMPDEST 00000161: PUSH2 0x0286 00000164: JUMP 00000165: JUMPDEST 00000166: STOP 00000167: JUMPDEST 00000168: CALLVALUE 00000169: DUP1 0000016a: ISZERO 0000016b: PUSH2 0x0173 0000016e: JUMPI 0000016f: PUSH1 0x00 00000171: DUP1 00000172: REVERT 00000173: JUMPDEST 00000174: POP 00000175: PUSH2 0x018e 00000178: PUSH1 0x04 0000017a: DUP1 0000017b: CALLDATASIZE 0000017c: SUB 0000017d: DUP2 0000017e: ADD 0000017f: SWAP1 00000180: PUSH2 0x0189 00000183: SWAP2 00000184: SWAP1 00000185: PUSH2 0x1138 00000188: JUMP 00000189: JUMPDEST 0000018a: PUSH2 0x0329 0000018d: JUMP 0000018e: JUMPDEST 0000018f: PUSH1 0x40 00000191: MLOAD 00000192: PUSH2 0x019b 00000195: SWAP2 00000196: SWAP1 00000197: PUSH2 0x0ffd 0000019a: JUMP 0000019b: JUMPDEST 0000019c: PUSH1 0x40 0000019e: MLOAD 0000019f: DUP1 000001a0: SWAP2 000001a1: SUB 000001a2: SWAP1 000001a3: RETURN 000001a4: JUMPDEST 000001a5: CALLVALUE 000001a6: DUP1 000001a7: ISZERO 000001a8: PUSH2 0x01b0 000001ab: JUMPI 000001ac: PUSH1 0x00 000001ae: DUP1 000001af: REVERT 000001b0: JUMPDEST 000001b1: POP 000001b2: PUSH2 0x01cb 000001b5: PUSH1 0x04 000001b7: DUP1 000001b8: CALLDATASIZE 000001b9: SUB 000001ba: DUP2 000001bb: ADD 000001bc: SWAP1 000001bd: PUSH2 0x01c6 000001c0: SWAP2 000001c1: SWAP1 000001c2: PUSH2 0x1138 000001c5: JUMP 000001c6: JUMPDEST 000001c7: PUSH2 0x0349 000001ca: JUMP 000001cb: JUMPDEST 000001cc: PUSH1 0x40 000001ce: MLOAD 000001cf: PUSH2 0x01d8 000001d2: SWAP2 000001d3: SWAP1 000001d4: PUSH2 0x0ffd 000001d7: JUMP 000001d8: JUMPDEST 000001d9: PUSH1 0x40 000001db: MLOAD 000001dc: DUP1 000001dd: SWAP2 000001de: SUB 000001df: SWAP1 000001e0: RETURN 000001e1: JUMPDEST 000001e2: CALLVALUE 000001e3: DUP1 000001e4: ISZERO 000001e5: PUSH2 0x01ed 000001e8: JUMPI 000001e9: PUSH1 0x00 000001eb: DUP1 000001ec: REVERT 000001ed: JUMPDEST 000001ee: POP 000001ef: PUSH2 0x01f6 000001f2: PUSH2 0x039e 000001f5: JUMP 000001f6: JUMPDEST 000001f7: PUSH1 0x40 000001f9: MLOAD 000001fa: PUSH2 0x0203 000001fd: SWAP2 000001fe: SWAP1 000001ff: PUSH2 0x0ffd 00000202: JUMP 00000203: JUMPDEST 00000204: PUSH1 0x40 00000206: MLOAD 00000207: DUP1 00000208: SWAP2 00000209: SUB 0000020a: SWAP1 0000020b: RETURN 0000020c: JUMPDEST 0000020d: CALLVALUE 0000020e: DUP1 0000020f: ISZERO 00000210: PUSH2 0x0218 00000213: JUMPI 00000214: PUSH1 0x00 00000216: DUP1 00000217: REVERT 00000218: JUMPDEST 00000219: POP 0000021a: PUSH2 0x0233 0000021d: PUSH1 0x04 0000021f: DUP1 00000220: CALLDATASIZE 00000221: SUB 00000222: DUP2 00000223: ADD 00000224: SWAP1 00000225: PUSH2 0x022e 00000228: SWAP2 00000229: SWAP1 0000022a: PUSH2 0x11c5 0000022d: JUMP 0000022e: JUMPDEST 0000022f: PUSH2 0x03b1 00000232: JUMP 00000233: JUMPDEST 00000234: STOP 00000235: JUMPDEST 00000236: CALLVALUE 00000237: DUP1 00000238: ISZERO 00000239: PUSH2 0x0241 0000023c: JUMPI 0000023d: PUSH1 0x00 0000023f: DUP1 00000240: REVERT 00000241: JUMPDEST 00000242: POP 00000243: PUSH2 0x025c 00000246: PUSH1 0x04 00000248: DUP1 00000249: CALLDATASIZE 0000024a: SUB 0000024b: DUP2 0000024c: ADD 0000024d: SWAP1 0000024e: PUSH2 0x0257 00000251: SWAP2 00000252: SWAP1 00000253: PUSH2 0x1268 00000256: JUMP 00000257: JUMPDEST 00000258: PUSH2 0x05a3 0000025b: JUMP 0000025c: JUMPDEST 0000025d: STOP 0000025e: JUMPDEST 0000025f: CALLVALUE 00000260: DUP1 00000261: ISZERO 00000262: PUSH2 0x026a 00000265: JUMPI 00000266: PUSH1 0x00 00000268: DUP1 00000269: REVERT 0000026a: JUMPDEST 0000026b: POP 0000026c: PUSH2 0x0273 0000026f: PUSH2 0x073f 00000272: JUMP 00000273: JUMPDEST 00000274: STOP 00000275: JUMPDEST 00000276: PUSH1 0x01 00000278: DUP1 00000279: SLOAD 0000027a: SWAP1 0000027b: PUSH2 0x0100 0000027e: EXP 0000027f: SWAP1 00000280: DIV 00000281: PUSH1 0xff 00000283: AND 00000284: DUP2 00000285: JUMP 00000286: JUMPDEST 00000287: PUSH2 0x028f 0000028a: CALLER 0000028b: PUSH2 0x0349 0000028e: JUMP 0000028f: JUMPDEST 00000290: PUSH2 0x02ce 00000293: JUMPI 00000294: PUSH1 0x40 00000296: MLOAD 00000297: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000002b8: DUP2 000002b9: MSTORE 000002ba: PUSH1 0x04 000002bc: ADD 000002bd: PUSH2 0x02c5 000002c0: SWAP1 000002c1: PUSH2 0x137b 000002c4: JUMP 000002c5: JUMPDEST 000002c6: PUSH1 0x40 000002c8: MLOAD 000002c9: DUP1 000002ca: SWAP2 000002cb: SUB 000002cc: SWAP1 000002cd: REVERT 000002ce: JUMPDEST 000002cf: PUSH1 0x00 000002d1: PUSH2 0x02d8 000002d4: PUSH2 0x07da 000002d7: JUMP 000002d8: JUMPDEST 000002d9: DUP7 000002da: DUP7 000002db: DUP7 000002dc: DUP7 000002dd: PUSH1 0x40 000002df: MLOAD 000002e0: PUSH1 0x20 000002e2: ADD 000002e3: PUSH2 0x02f0 000002e6: SWAP6 000002e7: SWAP5 000002e8: SWAP4 000002e9: SWAP3 000002ea: SWAP2 000002eb: SWAP1 000002ec: PUSH2 0x147e 000002ef: JUMP 000002f0: JUMPDEST 000002f1: PUSH1 0x40 000002f3: MLOAD 000002f4: PUSH1 0x20 000002f6: DUP2 000002f7: DUP4 000002f8: SUB 000002f9: SUB 000002fa: DUP2 000002fb: MSTORE 000002fc: SWAP1 000002fd: PUSH1 0x40 000002ff: MSTORE 00000300: DUP1 00000301: MLOAD 00000302: SWAP1 00000303: PUSH1 0x20 00000305: ADD 00000306: KECCAK256 00000307: SWAP1 00000308: POP 00000309: PUSH2 0x0314 0000030c: DUP7 0000030d: DUP3 0000030e: DUP5 0000030f: DUP7 00000310: PUSH2 0x0817 00000313: JUMP 00000314: JUMPDEST 00000315: POP 00000316: POP 00000317: PUSH2 0x0321 0000031a: DUP5 0000031b: DUP8 0000031c: DUP8 0000031d: PUSH2 0x0bd6 00000320: JUMP 00000321: JUMPDEST 00000322: POP 00000323: POP 00000324: POP 00000325: POP 00000326: POP 00000327: POP 00000328: JUMP 00000329: JUMPDEST 0000032a: PUSH1 0x00 0000032c: PUSH1 0x20 0000032e: MSTORE 0000032f: DUP1 00000330: PUSH1 0x00 00000332: MSTORE 00000333: PUSH1 0x40 00000335: PUSH1 0x00 00000337: KECCAK256 00000338: PUSH1 0x00 0000033a: SWAP2 0000033b: POP 0000033c: SLOAD 0000033d: SWAP1 0000033e: PUSH2 0x0100 00000341: EXP 00000342: SWAP1 00000343: DIV 00000344: PUSH1 0xff 00000346: AND 00000347: DUP2 00000348: JUMP 00000349: JUMPDEST 0000034a: PUSH1 0x00 0000034c: DUP1 0000034d: PUSH1 0x00 0000034f: DUP4 00000350: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000365: AND 00000366: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000037b: AND 0000037c: DUP2 0000037d: MSTORE 0000037e: PUSH1 0x20 00000380: ADD 00000381: SWAP1 00000382: DUP2 00000383: MSTORE 00000384: PUSH1 0x20 00000386: ADD 00000387: PUSH1 0x00 00000389: KECCAK256 0000038a: PUSH1 0x00 0000038c: SWAP1 0000038d: SLOAD 0000038e: SWAP1 0000038f: PUSH2 0x0100 00000392: EXP 00000393: SWAP1 00000394: DIV 00000395: PUSH1 0xff 00000397: AND 00000398: SWAP1 00000399: POP 0000039a: SWAP2 0000039b: SWAP1 0000039c: POP 0000039d: JUMP 0000039e: JUMPDEST 0000039f: PUSH1 0x01 000003a1: PUSH1 0x00 000003a3: SWAP1 000003a4: SLOAD 000003a5: SWAP1 000003a6: PUSH2 0x0100 000003a9: EXP 000003aa: SWAP1 000003ab: DIV 000003ac: PUSH1 0xff 000003ae: AND 000003af: DUP2 000003b0: JUMP 000003b1: JUMPDEST 000003b2: PUSH1 0x01 000003b4: DUP1 000003b5: SLOAD 000003b6: SWAP1 000003b7: PUSH2 0x0100 000003ba: EXP 000003bb: SWAP1 000003bc: DIV 000003bd: PUSH1 0xff 000003bf: AND 000003c0: ISZERO 000003c1: PUSH2 0x03ff 000003c4: JUMPI 000003c5: PUSH1 0x40 000003c7: MLOAD 000003c8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000003e9: DUP2 000003ea: MSTORE 000003eb: PUSH1 0x04 000003ed: ADD 000003ee: PUSH2 0x03f6 000003f1: SWAP1 000003f2: PUSH2 0x1525 000003f5: JUMP 000003f6: JUMPDEST 000003f7: PUSH1 0x40 000003f9: MLOAD 000003fa: DUP1 000003fb: SWAP2 000003fc: SUB 000003fd: SWAP1 000003fe: REVERT 000003ff: JUMPDEST 00000400: PUSH1 0x05 00000402: DUP3 00000403: DUP3 00000404: SWAP1 00000405: POP 00000406: EQ 00000407: PUSH2 0x0445 0000040a: JUMPI 0000040b: PUSH1 0x40 0000040d: MLOAD 0000040e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000042f: DUP2 00000430: MSTORE 00000431: PUSH1 0x04 00000433: ADD 00000434: PUSH2 0x043c 00000437: SWAP1 00000438: PUSH2 0x1591 0000043b: JUMP 0000043c: JUMPDEST 0000043d: PUSH1 0x40 0000043f: MLOAD 00000440: DUP1 00000441: SWAP2 00000442: SUB 00000443: SWAP1 00000444: REVERT 00000445: JUMPDEST 00000446: PUSH1 0x00 00000448: JUMPDEST 00000449: DUP3 0000044a: DUP3 0000044b: SWAP1 0000044c: POP 0000044d: DUP2 0000044e: PUSH1 0xff 00000450: AND 00000451: LT 00000452: ISZERO 00000453: PUSH2 0x0584 00000456: JUMPI 00000457: PUSH1 0x00 00000459: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000046e: AND 0000046f: DUP4 00000470: DUP4 00000471: DUP4 00000472: PUSH1 0xff 00000474: AND 00000475: DUP2 00000476: DUP2 00000477: LT 00000478: PUSH2 0x0484 0000047b: JUMPI 0000047c: PUSH2 0x0483 0000047f: PUSH2 0x15b1 00000482: JUMP 00000483: JUMPDEST 00000484: JUMPDEST 00000485: SWAP1 00000486: POP 00000487: PUSH1 0x20 00000489: MUL 0000048a: ADD 0000048b: PUSH1 0x20 0000048d: DUP2 0000048e: ADD 0000048f: SWAP1 00000490: PUSH2 0x0499 00000493: SWAP2 00000494: SWAP1 00000495: PUSH2 0x1138 00000498: JUMP 00000499: JUMPDEST 0000049a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004af: AND 000004b0: EQ 000004b1: ISZERO 000004b2: PUSH2 0x04f0 000004b5: JUMPI 000004b6: PUSH1 0x40 000004b8: MLOAD 000004b9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000004da: DUP2 000004db: MSTORE 000004dc: PUSH1 0x04 000004de: ADD 000004df: PUSH2 0x04e7 000004e2: SWAP1 000004e3: PUSH2 0x162c 000004e6: JUMP 000004e7: JUMPDEST 000004e8: PUSH1 0x40 000004ea: MLOAD 000004eb: DUP1 000004ec: SWAP2 000004ed: SUB 000004ee: SWAP1 000004ef: REVERT 000004f0: JUMPDEST 000004f1: PUSH1 0x01 000004f3: PUSH1 0x00 000004f5: DUP1 000004f6: DUP6 000004f7: DUP6 000004f8: DUP6 000004f9: PUSH1 0xff 000004fb: AND 000004fc: DUP2 000004fd: DUP2 000004fe: LT 000004ff: PUSH2 0x050b 00000502: JUMPI 00000503: PUSH2 0x050a 00000506: PUSH2 0x15b1 00000509: JUMP 0000050a: JUMPDEST 0000050b: JUMPDEST 0000050c: SWAP1 0000050d: POP 0000050e: PUSH1 0x20 00000510: MUL 00000511: ADD 00000512: PUSH1 0x20 00000514: DUP2 00000515: ADD 00000516: SWAP1 00000517: PUSH2 0x0520 0000051a: SWAP2 0000051b: SWAP1 0000051c: PUSH2 0x1138 0000051f: JUMP 00000520: JUMPDEST 00000521: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000536: AND 00000537: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000054c: AND 0000054d: DUP2 0000054e: MSTORE 0000054f: PUSH1 0x20 00000551: ADD 00000552: SWAP1 00000553: DUP2 00000554: MSTORE 00000555: PUSH1 0x20 00000557: ADD 00000558: PUSH1 0x00 0000055a: KECCAK256 0000055b: PUSH1 0x00 0000055d: PUSH2 0x0100 00000560: EXP 00000561: DUP2 00000562: SLOAD 00000563: DUP2 00000564: PUSH1 0xff 00000566: MUL 00000567: NOT 00000568: AND 00000569: SWAP1 0000056a: DUP4 0000056b: ISZERO 0000056c: ISZERO 0000056d: MUL 0000056e: OR 0000056f: SWAP1 00000570: SSTORE 00000571: POP 00000572: DUP1 00000573: DUP1 00000574: PUSH2 0x057c 00000577: SWAP1 00000578: PUSH2 0x1688 0000057b: JUMP 0000057c: JUMPDEST 0000057d: SWAP2 0000057e: POP 0000057f: POP 00000580: PUSH2 0x0448 00000583: JUMP 00000584: JUMPDEST 00000585: POP 00000586: PUSH1 0x01 00000588: DUP1 00000589: PUSH1 0x01 0000058b: PUSH2 0x0100 0000058e: EXP 0000058f: DUP2 00000590: SLOAD 00000591: DUP2 00000592: PUSH1 0xff 00000594: MUL 00000595: NOT 00000596: AND 00000597: SWAP1 00000598: DUP4 00000599: ISZERO 0000059a: ISZERO 0000059b: MUL 0000059c: OR 0000059d: SWAP1 0000059e: SSTORE 0000059f: POP 000005a0: POP 000005a1: POP 000005a2: JUMP 000005a3: JUMPDEST 000005a4: PUSH2 0x05ac 000005a7: CALLER 000005a8: PUSH2 0x0349 000005ab: JUMP 000005ac: JUMPDEST 000005ad: PUSH2 0x05eb 000005b0: JUMPI 000005b1: PUSH1 0x40 000005b3: MLOAD 000005b4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000005d5: DUP2 000005d6: MSTORE 000005d7: PUSH1 0x04 000005d9: ADD 000005da: PUSH2 0x05e2 000005dd: SWAP1 000005de: PUSH2 0x137b 000005e1: JUMP 000005e2: JUMPDEST 000005e3: PUSH1 0x40 000005e5: MLOAD 000005e6: DUP1 000005e7: SWAP2 000005e8: SUB 000005e9: SWAP1 000005ea: REVERT 000005eb: JUMPDEST 000005ec: PUSH1 0x00 000005ee: PUSH2 0x05f5 000005f1: PUSH2 0x0d0c 000005f4: JUMP 000005f5: JUMPDEST 000005f6: DUP8 000005f7: DUP8 000005f8: DUP8 000005f9: DUP8 000005fa: DUP8 000005fb: PUSH1 0x40 000005fd: MLOAD 000005fe: PUSH1 0x20 00000600: ADD 00000601: PUSH2 0x060f 00000604: SWAP7 00000605: SWAP6 00000606: SWAP5 00000607: SWAP4 00000608: SWAP3 00000609: SWAP2 0000060a: SWAP1 0000060b: PUSH2 0x16e2 0000060e: JUMP 0000060f: JUMPDEST 00000610: PUSH1 0x40 00000612: MLOAD 00000613: PUSH1 0x20 00000615: DUP2 00000616: DUP4 00000617: SUB 00000618: SUB 00000619: DUP2 0000061a: MSTORE 0000061b: SWAP1 0000061c: PUSH1 0x40 0000061e: MSTORE 0000061f: DUP1 00000620: MLOAD 00000621: SWAP1 00000622: PUSH1 0x20 00000624: ADD 00000625: KECCAK256 00000626: SWAP1 00000627: POP 00000628: PUSH1 0x00 0000062a: DUP1 0000062b: PUSH2 0x0636 0000062e: DUP10 0000062f: DUP5 00000630: DUP7 00000631: DUP9 00000632: PUSH2 0x0817 00000635: JUMP 00000636: JUMPDEST 00000637: DUP1 00000638: SWAP3 00000639: POP 0000063a: DUP2 0000063b: SWAP4 0000063c: POP 0000063d: POP 0000063e: POP 0000063f: PUSH1 0x00 00000641: DUP10 00000642: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000657: AND 00000658: DUP10 00000659: DUP10 0000065a: DUP10 0000065b: PUSH1 0x40 0000065d: MLOAD 0000065e: PUSH2 0x0668 00000661: SWAP3 00000662: SWAP2 00000663: SWAP1 00000664: PUSH2 0x173b 00000667: JUMP 00000668: JUMPDEST 00000669: PUSH1 0x00 0000066b: PUSH1 0x40 0000066d: MLOAD 0000066e: DUP1 0000066f: DUP4 00000670: SUB 00000671: DUP2 00000672: DUP6 00000673: DUP8 00000674: GAS 00000675: CALL 00000676: SWAP3 00000677: POP 00000678: POP 00000679: POP 0000067a: RETURNDATASIZE 0000067b: DUP1 0000067c: PUSH1 0x00 0000067e: DUP2 0000067f: EQ 00000680: PUSH2 0x06a5 00000683: JUMPI 00000684: PUSH1 0x40 00000686: MLOAD 00000687: SWAP2 00000688: POP 00000689: PUSH1 0x1f 0000068b: NOT 0000068c: PUSH1 0x3f 0000068e: RETURNDATASIZE 0000068f: ADD 00000690: AND 00000691: DUP3 00000692: ADD 00000693: PUSH1 0x40 00000695: MSTORE 00000696: RETURNDATASIZE 00000697: DUP3 00000698: MSTORE 00000699: RETURNDATASIZE 0000069a: PUSH1 0x00 0000069c: PUSH1 0x20 0000069e: DUP5 0000069f: ADD 000006a0: RETURNDATACOPY 000006a1: PUSH2 0x06aa 000006a4: JUMP 000006a5: JUMPDEST 000006a6: PUSH1 0x60 000006a8: SWAP2 000006a9: POP 000006aa: JUMPDEST 000006ab: POP 000006ac: POP 000006ad: SWAP1 000006ae: POP 000006af: DUP1 000006b0: PUSH2 0x06ee 000006b3: JUMPI 000006b4: PUSH1 0x40 000006b6: MLOAD 000006b7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006d8: DUP2 000006d9: MSTORE 000006da: PUSH1 0x04 000006dc: ADD 000006dd: PUSH2 0x06e5 000006e0: SWAP1 000006e1: PUSH2 0x17a0 000006e4: JUMP 000006e5: JUMPDEST 000006e6: PUSH1 0x40 000006e8: MLOAD 000006e9: DUP1 000006ea: SWAP2 000006eb: SUB 000006ec: SWAP1 000006ed: REVERT 000006ee: JUMPDEST 000006ef: PUSH32 0x41c66bdacda1c924feabe80d3771ca4928b814ee4ebf1ddc230b10eaa2966dc1 00000710: CALLER 00000711: DUP5 00000712: DUP5 00000713: DUP8 00000714: DUP15 00000715: DUP15 00000716: DUP15 00000717: DUP15 00000718: PUSH1 0x40 0000071a: MLOAD 0000071b: PUSH2 0x072b 0000071e: SWAP9 0000071f: SWAP8 00000720: SWAP7 00000721: SWAP6 00000722: SWAP5 00000723: SWAP4 00000724: SWAP3 00000725: SWAP2 00000726: SWAP1 00000727: PUSH2 0x17d9 0000072a: JUMP 0000072b: JUMPDEST 0000072c: PUSH1 0x40 0000072e: MLOAD 0000072f: DUP1 00000730: SWAP2 00000731: SUB 00000732: SWAP1 00000733: LOG1 00000734: POP 00000735: POP 00000736: POP 00000737: POP 00000738: POP 00000739: POP 0000073a: POP 0000073b: POP 0000073c: POP 0000073d: POP 0000073e: JUMP 0000073f: JUMPDEST 00000740: PUSH2 0x0748 00000743: CALLER 00000744: PUSH2 0x0349 00000747: JUMP 00000748: JUMPDEST 00000749: PUSH2 0x0787 0000074c: JUMPI 0000074d: PUSH1 0x40 0000074f: MLOAD 00000750: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000771: DUP2 00000772: MSTORE 00000773: PUSH1 0x04 00000775: ADD 00000776: PUSH2 0x077e 00000779: SWAP1 0000077a: PUSH2 0x137b 0000077d: JUMP 0000077e: JUMPDEST 0000077f: PUSH1 0x40 00000781: MLOAD 00000782: DUP1 00000783: SWAP2 00000784: SUB 00000785: SWAP1 00000786: REVERT 00000787: JUMPDEST 00000788: PUSH1 0x01 0000078a: DUP1 0000078b: PUSH1 0x00 0000078d: PUSH2 0x0100 00000790: EXP 00000791: DUP2 00000792: SLOAD 00000793: DUP2 00000794: PUSH1 0xff 00000796: MUL 00000797: NOT 00000798: AND 00000799: SWAP1 0000079a: DUP4 0000079b: ISZERO 0000079c: ISZERO 0000079d: MUL 0000079e: OR 0000079f: SWAP1 000007a0: SSTORE 000007a1: POP 000007a2: PUSH32 0x0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a91157 000007c3: CALLER 000007c4: PUSH1 0x40 000007c6: MLOAD 000007c7: PUSH2 0x07d0 000007ca: SWAP2 000007cb: SWAP1 000007cc: PUSH2 0x1851 000007cf: JUMP 000007d0: JUMPDEST 000007d1: PUSH1 0x40 000007d3: MLOAD 000007d4: DUP1 000007d5: SWAP2 000007d6: SUB 000007d7: SWAP1 000007d8: LOG1 000007d9: JUMP 000007da: JUMPDEST 000007db: PUSH1 0x60 000007dd: PUSH1 0x40 000007df: MLOAD 000007e0: DUP1 000007e1: PUSH1 0x40 000007e3: ADD 000007e4: PUSH1 0x40 000007e6: MSTORE 000007e7: DUP1 000007e8: PUSH1 0x05 000007ea: DUP2 000007eb: MSTORE 000007ec: PUSH1 0x20 000007ee: ADD 000007ef: PUSH32 0x4552433230000000000000000000000000000000000000000000000000000000 00000810: DUP2 00000811: MSTORE 00000812: POP 00000813: SWAP1 00000814: POP 00000815: SWAP1 00000816: JUMP 00000817: JUMPDEST 00000818: PUSH1 0x00 0000081a: DUP1 0000081b: PUSH1 0x02 0000081d: DUP1 0000081e: EQ 0000081f: PUSH2 0x085d 00000822: JUMPI 00000823: PUSH1 0x40 00000825: MLOAD 00000826: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000847: DUP2 00000848: MSTORE 00000849: PUSH1 0x04 0000084b: ADD 0000084c: PUSH2 0x0854 0000084f: SWAP1 00000850: PUSH2 0x18b8 00000853: JUMP 00000854: JUMPDEST 00000855: PUSH1 0x40 00000857: MLOAD 00000858: DUP1 00000859: SWAP2 0000085a: SUB 0000085b: SWAP1 0000085c: REVERT 0000085d: JUMPDEST 0000085e: PUSH1 0x00 00000860: PUSH2 0x08cf 00000863: DUP7 00000864: DUP7 00000865: PUSH1 0x00 00000867: PUSH1 0x02 00000869: DUP2 0000086a: LT 0000086b: PUSH2 0x0877 0000086e: JUMPI 0000086f: PUSH2 0x0876 00000872: PUSH2 0x15b1 00000875: JUMP 00000876: JUMPDEST 00000877: JUMPDEST 00000878: PUSH1 0x20 0000087a: MUL 0000087b: DUP2 0000087c: ADD 0000087d: SWAP1 0000087e: PUSH2 0x0887 00000881: SWAP2 00000882: SWAP1 00000883: PUSH2 0x18e7 00000886: JUMP 00000887: JUMPDEST 00000888: DUP1 00000889: DUP1 0000088a: PUSH1 0x1f 0000088c: ADD 0000088d: PUSH1 0x20 0000088f: DUP1 00000890: SWAP2 00000891: DIV 00000892: MUL 00000893: PUSH1 0x20 00000895: ADD 00000896: PUSH1 0x40 00000898: MLOAD 00000899: SWAP1 0000089a: DUP2 0000089b: ADD 0000089c: PUSH1 0x40 0000089e: MSTORE 0000089f: DUP1 000008a0: SWAP4 000008a1: SWAP3 000008a2: SWAP2 000008a3: SWAP1 000008a4: DUP2 000008a5: DUP2 000008a6: MSTORE 000008a7: PUSH1 0x20 000008a9: ADD 000008aa: DUP4 000008ab: DUP4 000008ac: DUP1 000008ad: DUP3 000008ae: DUP5 000008af: CALLDATACOPY 000008b0: PUSH1 0x00 000008b2: DUP2 000008b3: DUP5 000008b4: ADD 000008b5: MSTORE 000008b6: PUSH1 0x1f 000008b8: NOT 000008b9: PUSH1 0x1f 000008bb: DUP3 000008bc: ADD 000008bd: AND 000008be: SWAP1 000008bf: POP 000008c0: DUP1 000008c1: DUP4 000008c2: ADD 000008c3: SWAP3 000008c4: POP 000008c5: POP 000008c6: POP 000008c7: POP 000008c8: POP 000008c9: POP 000008ca: POP 000008cb: PUSH2 0x0d49 000008ce: JUMP 000008cf: JUMPDEST 000008d0: SWAP1 000008d1: POP 000008d2: PUSH1 0x00 000008d4: PUSH2 0x0943 000008d7: DUP8 000008d8: DUP8 000008d9: PUSH1 0x01 000008db: PUSH1 0x02 000008dd: DUP2 000008de: LT 000008df: PUSH2 0x08eb 000008e2: JUMPI 000008e3: PUSH2 0x08ea 000008e6: PUSH2 0x15b1 000008e9: JUMP 000008ea: JUMPDEST 000008eb: JUMPDEST 000008ec: PUSH1 0x20 000008ee: MUL 000008ef: DUP2 000008f0: ADD 000008f1: SWAP1 000008f2: PUSH2 0x08fb 000008f5: SWAP2 000008f6: SWAP1 000008f7: PUSH2 0x18e7 000008fa: JUMP 000008fb: JUMPDEST 000008fc: DUP1 000008fd: DUP1 000008fe: PUSH1 0x1f 00000900: ADD 00000901: PUSH1 0x20 00000903: DUP1 00000904: SWAP2 00000905: DIV 00000906: MUL 00000907: PUSH1 0x20 00000909: ADD 0000090a: PUSH1 0x40 0000090c: MLOAD 0000090d: SWAP1 0000090e: DUP2 0000090f: ADD 00000910: PUSH1 0x40 00000912: MSTORE 00000913: DUP1 00000914: SWAP4 00000915: SWAP3 00000916: SWAP2 00000917: SWAP1 00000918: DUP2 00000919: DUP2 0000091a: MSTORE 0000091b: PUSH1 0x20 0000091d: ADD 0000091e: DUP4 0000091f: DUP4 00000920: DUP1 00000921: DUP3 00000922: DUP5 00000923: CALLDATACOPY 00000924: PUSH1 0x00 00000926: DUP2 00000927: DUP5 00000928: ADD 00000929: MSTORE 0000092a: PUSH1 0x1f 0000092c: NOT 0000092d: PUSH1 0x1f 0000092f: DUP3 00000930: ADD 00000931: AND 00000932: SWAP1 00000933: POP 00000934: DUP1 00000935: DUP4 00000936: ADD 00000937: SWAP3 00000938: POP 00000939: POP 0000093a: POP 0000093b: POP 0000093c: POP 0000093d: POP 0000093e: POP 0000093f: PUSH2 0x0d49 00000942: JUMP 00000943: JUMPDEST 00000944: SWAP1 00000945: POP 00000946: PUSH1 0x01 00000948: PUSH1 0x00 0000094a: SWAP1 0000094b: SLOAD 0000094c: SWAP1 0000094d: PUSH2 0x0100 00000950: EXP 00000951: SWAP1 00000952: DIV 00000953: PUSH1 0xff 00000955: AND 00000956: ISZERO 00000957: DUP1 00000958: PUSH2 0x0966 0000095b: JUMPI 0000095c: POP 0000095d: PUSH2 0x0965 00000960: DUP9 00000961: PUSH2 0x0349 00000964: JUMP 00000965: JUMPDEST 00000966: JUMPDEST 00000967: PUSH2 0x09a5 0000096a: JUMPI 0000096b: PUSH1 0x40 0000096d: MLOAD 0000096e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000098f: DUP2 00000990: MSTORE 00000991: PUSH1 0x04 00000993: ADD 00000994: PUSH2 0x099c 00000997: SWAP1 00000998: PUSH2 0x1996 0000099b: JUMP 0000099c: JUMPDEST 0000099d: PUSH1 0x40 0000099f: MLOAD 000009a0: DUP1 000009a1: SWAP2 000009a2: SUB 000009a3: SWAP1 000009a4: REVERT 000009a5: JUMPDEST 000009a6: TIMESTAMP 000009a7: DUP6 000009a8: LT 000009a9: ISZERO 000009aa: PUSH2 0x09e8 000009ad: JUMPI 000009ae: PUSH1 0x40 000009b0: MLOAD 000009b1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009d2: DUP2 000009d3: MSTORE 000009d4: PUSH1 0x04 000009d6: ADD 000009d7: PUSH2 0x09df 000009da: SWAP1 000009db: PUSH2 0x1a02 000009de: JUMP 000009df: JUMPDEST 000009e0: PUSH1 0x40 000009e2: MLOAD 000009e3: DUP1 000009e4: SWAP2 000009e5: SUB 000009e6: SWAP1 000009e7: REVERT 000009e8: JUMPDEST 000009e9: PUSH2 0x09f1 000009ec: DUP3 000009ed: PUSH2 0x0349 000009f0: JUMP 000009f1: JUMPDEST 000009f2: PUSH2 0x0a30 000009f5: JUMPI 000009f6: PUSH1 0x40 000009f8: MLOAD 000009f9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a1a: DUP2 00000a1b: MSTORE 00000a1c: PUSH1 0x04 00000a1e: ADD 00000a1f: PUSH2 0x0a27 00000a22: SWAP1 00000a23: PUSH2 0x162c 00000a26: JUMP 00000a27: JUMPDEST 00000a28: PUSH1 0x40 00000a2a: MLOAD 00000a2b: DUP1 00000a2c: SWAP2 00000a2d: SUB 00000a2e: SWAP1 00000a2f: REVERT 00000a30: JUMPDEST 00000a31: PUSH2 0x0a39 00000a34: DUP2 00000a35: PUSH2 0x0349 00000a38: JUMP 00000a39: JUMPDEST 00000a3a: PUSH2 0x0a78 00000a3d: JUMPI 00000a3e: PUSH1 0x40 00000a40: MLOAD 00000a41: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a62: DUP2 00000a63: MSTORE 00000a64: PUSH1 0x04 00000a66: ADD 00000a67: PUSH2 0x0a6f 00000a6a: SWAP1 00000a6b: PUSH2 0x162c 00000a6e: JUMP 00000a6f: JUMPDEST 00000a70: PUSH1 0x40 00000a72: MLOAD 00000a73: DUP1 00000a74: SWAP2 00000a75: SUB 00000a76: SWAP1 00000a77: REVERT 00000a78: JUMPDEST 00000a79: DUP1 00000a7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a8f: AND 00000a90: DUP3 00000a91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aa6: AND 00000aa7: EQ 00000aa8: ISZERO 00000aa9: PUSH2 0x0ae7 00000aac: JUMPI 00000aad: PUSH1 0x40 00000aaf: MLOAD 00000ab0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ad1: DUP2 00000ad2: MSTORE 00000ad3: PUSH1 0x04 00000ad5: ADD 00000ad6: PUSH2 0x0ade 00000ad9: SWAP1 00000ada: PUSH2 0x1a94 00000add: JUMP 00000ade: JUMPDEST 00000adf: PUSH1 0x40 00000ae1: MLOAD 00000ae2: DUP1 00000ae3: SWAP2 00000ae4: SUB 00000ae5: SWAP1 00000ae6: REVERT 00000ae7: JUMPDEST 00000ae8: CALLER 00000ae9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000afe: AND 00000aff: DUP3 00000b00: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b15: AND 00000b16: EQ 00000b17: ISZERO 00000b18: PUSH2 0x0b56 00000b1b: JUMPI 00000b1c: PUSH1 0x40 00000b1e: MLOAD 00000b1f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b40: DUP2 00000b41: MSTORE 00000b42: PUSH1 0x04 00000b44: ADD 00000b45: PUSH2 0x0b4d 00000b48: SWAP1 00000b49: PUSH2 0x1b26 00000b4c: JUMP 00000b4d: JUMPDEST 00000b4e: PUSH1 0x40 00000b50: MLOAD 00000b51: DUP1 00000b52: SWAP2 00000b53: SUB 00000b54: SWAP1 00000b55: REVERT 00000b56: JUMPDEST 00000b57: CALLER 00000b58: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b6d: AND 00000b6e: DUP2 00000b6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b84: AND 00000b85: EQ 00000b86: ISZERO 00000b87: PUSH2 0x0bc5 00000b8a: JUMPI 00000b8b: PUSH1 0x40 00000b8d: MLOAD 00000b8e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000baf: DUP2 00000bb0: MSTORE 00000bb1: PUSH1 0x04 00000bb3: ADD 00000bb4: PUSH2 0x0bbc 00000bb7: SWAP1 00000bb8: PUSH2 0x1bb8 00000bbb: JUMP 00000bbc: JUMPDEST 00000bbd: PUSH1 0x40 00000bbf: MLOAD 00000bc0: DUP1 00000bc1: SWAP2 00000bc2: SUB 00000bc3: SWAP1 00000bc4: REVERT 00000bc5: JUMPDEST 00000bc6: DUP2 00000bc7: DUP2 00000bc8: SWAP4 00000bc9: POP 00000bca: SWAP4 00000bcb: POP 00000bcc: POP 00000bcd: POP 00000bce: SWAP5 00000bcf: POP 00000bd0: SWAP5 00000bd1: SWAP3 00000bd2: POP 00000bd3: POP 00000bd4: POP 00000bd5: JUMP 00000bd6: JUMPDEST 00000bd7: PUSH1 0x00 00000bd9: DUP1 00000bda: DUP5 00000bdb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bf0: AND 00000bf1: PUSH4 0xa9059cbb 00000bf6: DUP6 00000bf7: DUP6 00000bf8: PUSH1 0x40 00000bfa: MLOAD 00000bfb: PUSH1 0x24 00000bfd: ADD 00000bfe: PUSH2 0x0c08 00000c01: SWAP3 00000c02: SWAP2 00000c03: SWAP1 00000c04: PUSH2 0x1bd8 00000c07: JUMP 00000c08: JUMPDEST 00000c09: PUSH1 0x40 00000c0b: MLOAD 00000c0c: PUSH1 0x20 00000c0e: DUP2 00000c0f: DUP4 00000c10: SUB 00000c11: SUB 00000c12: DUP2 00000c13: MSTORE 00000c14: SWAP1 00000c15: PUSH1 0x40 00000c17: MSTORE 00000c18: SWAP1 00000c19: PUSH1 0xe0 00000c1b: SHL 00000c1c: PUSH1 0x20 00000c1e: DUP3 00000c1f: ADD 00000c20: DUP1 00000c21: MLOAD 00000c22: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000c3f: DUP4 00000c40: DUP2 00000c41: DUP4 00000c42: AND 00000c43: OR 00000c44: DUP4 00000c45: MSTORE 00000c46: POP 00000c47: POP 00000c48: POP 00000c49: POP 00000c4a: PUSH1 0x40 00000c4c: MLOAD 00000c4d: PUSH2 0x0c56 00000c50: SWAP2 00000c51: SWAP1 00000c52: PUSH2 0x1c3d 00000c55: JUMP 00000c56: JUMPDEST 00000c57: PUSH1 0x00 00000c59: PUSH1 0x40 00000c5b: MLOAD 00000c5c: DUP1 00000c5d: DUP4 00000c5e: SUB 00000c5f: DUP2 00000c60: PUSH1 0x00 00000c62: DUP7 00000c63: GAS 00000c64: CALL 00000c65: SWAP2 00000c66: POP 00000c67: POP 00000c68: RETURNDATASIZE 00000c69: DUP1 00000c6a: PUSH1 0x00 00000c6c: DUP2 00000c6d: EQ 00000c6e: PUSH2 0x0c93 00000c71: JUMPI 00000c72: PUSH1 0x40 00000c74: MLOAD 00000c75: SWAP2 00000c76: POP 00000c77: PUSH1 0x1f 00000c79: NOT 00000c7a: PUSH1 0x3f 00000c7c: RETURNDATASIZE 00000c7d: ADD 00000c7e: AND 00000c7f: DUP3 00000c80: ADD 00000c81: PUSH1 0x40 00000c83: MSTORE 00000c84: RETURNDATASIZE 00000c85: DUP3 00000c86: MSTORE 00000c87: RETURNDATASIZE 00000c88: PUSH1 0x00 00000c8a: PUSH1 0x20 00000c8c: DUP5 00000c8d: ADD 00000c8e: RETURNDATACOPY 00000c8f: PUSH2 0x0c98 00000c92: JUMP 00000c93: JUMPDEST 00000c94: PUSH1 0x60 00000c96: SWAP2 00000c97: POP 00000c98: JUMPDEST 00000c99: POP 00000c9a: SWAP2 00000c9b: POP 00000c9c: SWAP2 00000c9d: POP 00000c9e: DUP2 00000c9f: DUP1 00000ca0: ISZERO 00000ca1: PUSH2 0x0cc6 00000ca4: JUMPI 00000ca5: POP 00000ca6: PUSH1 0x00 00000ca8: DUP2 00000ca9: MLOAD 00000caa: EQ 00000cab: DUP1 00000cac: PUSH2 0x0cc5 00000caf: JUMPI 00000cb0: POP 00000cb1: DUP1 00000cb2: DUP1 00000cb3: PUSH1 0x20 00000cb5: ADD 00000cb6: SWAP1 00000cb7: MLOAD 00000cb8: DUP2 00000cb9: ADD 00000cba: SWAP1 00000cbb: PUSH2 0x0cc4 00000cbe: SWAP2 00000cbf: SWAP1 00000cc0: PUSH2 0x1c80 00000cc3: JUMP 00000cc4: JUMPDEST 00000cc5: JUMPDEST 00000cc6: JUMPDEST 00000cc7: PUSH2 0x0d05 00000cca: JUMPI 00000ccb: PUSH1 0x40 00000ccd: MLOAD 00000cce: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000cef: DUP2 00000cf0: MSTORE 00000cf1: PUSH1 0x04 00000cf3: ADD 00000cf4: PUSH2 0x0cfc 00000cf7: SWAP1 00000cf8: PUSH2 0x1d1f 00000cfb: JUMP 00000cfc: JUMPDEST 00000cfd: PUSH1 0x40 00000cff: MLOAD 00000d00: DUP1 00000d01: SWAP2 00000d02: SUB 00000d03: SWAP1 00000d04: REVERT 00000d05: JUMPDEST 00000d06: POP 00000d07: POP 00000d08: POP 00000d09: POP 00000d0a: POP 00000d0b: JUMP 00000d0c: JUMPDEST 00000d0d: PUSH1 0x60 00000d0f: PUSH1 0x40 00000d11: MLOAD 00000d12: DUP1 00000d13: PUSH1 0x40 00000d15: ADD 00000d16: PUSH1 0x40 00000d18: MSTORE 00000d19: DUP1 00000d1a: PUSH1 0x05 00000d1c: DUP2 00000d1d: MSTORE 00000d1e: PUSH1 0x20 00000d20: ADD 00000d21: PUSH32 0x4554484552000000000000000000000000000000000000000000000000000000 00000d42: DUP2 00000d43: MSTORE 00000d44: POP 00000d45: SWAP1 00000d46: POP 00000d47: SWAP1 00000d48: JUMP 00000d49: JUMPDEST 00000d4a: PUSH1 0x00 00000d4c: PUSH1 0x41 00000d4e: DUP3 00000d4f: MLOAD 00000d50: EQ 00000d51: PUSH2 0x0d8f 00000d54: JUMPI 00000d55: PUSH1 0x40 00000d57: MLOAD 00000d58: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000d79: DUP2 00000d7a: MSTORE 00000d7b: PUSH1 0x04 00000d7d: ADD 00000d7e: PUSH2 0x0d86 00000d81: SWAP1 00000d82: PUSH2 0x1d8b 00000d85: JUMP 00000d86: JUMPDEST 00000d87: PUSH1 0x40 00000d89: MLOAD 00000d8a: DUP1 00000d8b: SWAP2 00000d8c: SUB 00000d8d: SWAP1 00000d8e: REVERT 00000d8f: JUMPDEST 00000d90: PUSH1 0x00 00000d92: DUP1 00000d93: PUSH1 0x00 00000d95: PUSH1 0x20 00000d97: DUP6 00000d98: ADD 00000d99: MLOAD 00000d9a: SWAP3 00000d9b: POP 00000d9c: PUSH1 0x40 00000d9e: DUP6 00000d9f: ADD 00000da0: MLOAD 00000da1: SWAP2 00000da2: POP 00000da3: PUSH1 0xff 00000da5: PUSH1 0x41 00000da7: DUP7 00000da8: ADD 00000da9: MLOAD 00000daa: AND 00000dab: SWAP1 00000dac: POP 00000dad: PUSH1 0x1b 00000daf: DUP2 00000db0: PUSH1 0xff 00000db2: AND 00000db3: LT 00000db4: ISZERO 00000db5: PUSH2 0x0dc8 00000db8: JUMPI 00000db9: PUSH1 0x1b 00000dbb: DUP2 00000dbc: PUSH2 0x0dc5 00000dbf: SWAP2 00000dc0: SWAP1 00000dc1: PUSH2 0x1dab 00000dc4: JUMP 00000dc5: JUMPDEST 00000dc6: SWAP1 00000dc7: POP 00000dc8: JUMPDEST 00000dc9: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 00000dea: DUP3 00000deb: PUSH1 0x00 00000ded: SHR 00000dee: GT 00000def: ISZERO 00000df0: PUSH2 0x0e2e 00000df3: JUMPI 00000df4: PUSH1 0x40 00000df6: MLOAD 00000df7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e18: DUP2 00000e19: MSTORE 00000e1a: PUSH1 0x04 00000e1c: ADD 00000e1d: PUSH2 0x0e25 00000e20: SWAP1 00000e21: PUSH2 0x1e54 00000e24: JUMP 00000e25: JUMPDEST 00000e26: PUSH1 0x40 00000e28: MLOAD 00000e29: DUP1 00000e2a: SWAP2 00000e2b: SUB 00000e2c: SWAP1 00000e2d: REVERT 00000e2e: JUMPDEST 00000e2f: PUSH1 0x01 00000e31: DUP7 00000e32: DUP3 00000e33: DUP6 00000e34: DUP6 00000e35: PUSH1 0x40 00000e37: MLOAD 00000e38: PUSH1 0x00 00000e3a: DUP2 00000e3b: MSTORE 00000e3c: PUSH1 0x20 00000e3e: ADD 00000e3f: PUSH1 0x40 00000e41: MSTORE 00000e42: PUSH1 0x40 00000e44: MLOAD 00000e45: PUSH2 0x0e51 00000e48: SWAP5 00000e49: SWAP4 00000e4a: SWAP3 00000e4b: SWAP2 00000e4c: SWAP1 00000e4d: PUSH2 0x1e83 00000e50: JUMP 00000e51: JUMPDEST 00000e52: PUSH1 0x20 00000e54: PUSH1 0x40 00000e56: MLOAD 00000e57: PUSH1 0x20 00000e59: DUP2 00000e5a: SUB 00000e5b: SWAP1 00000e5c: DUP1 00000e5d: DUP5 00000e5e: SUB 00000e5f: SWAP1 00000e60: DUP6 00000e61: GAS 00000e62: STATICCALL 00000e63: ISZERO 00000e64: DUP1 00000e65: ISZERO 00000e66: PUSH2 0x0e73 00000e69: JUMPI 00000e6a: RETURNDATASIZE 00000e6b: PUSH1 0x00 00000e6d: DUP1 00000e6e: RETURNDATACOPY 00000e6f: RETURNDATASIZE 00000e70: PUSH1 0x00 00000e72: REVERT 00000e73: JUMPDEST 00000e74: POP 00000e75: POP 00000e76: POP 00000e77: PUSH1 0x20 00000e79: PUSH1 0x40 00000e7b: MLOAD 00000e7c: SUB 00000e7d: MLOAD 00000e7e: SWAP4 00000e7f: POP 00000e80: POP 00000e81: POP 00000e82: POP 00000e83: SWAP3 00000e84: SWAP2 00000e85: POP 00000e86: POP 00000e87: JUMP 00000e88: JUMPDEST 00000e89: PUSH1 0x00 00000e8b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ea0: DUP3 00000ea1: AND 00000ea2: SWAP1 00000ea3: POP 00000ea4: SWAP2 00000ea5: SWAP1 00000ea6: POP 00000ea7: JUMP 00000ea8: JUMPDEST 00000ea9: PUSH1 0x00 00000eab: PUSH2 0x0eb3 00000eae: DUP3 00000eaf: PUSH2 0x0e88 00000eb2: JUMP 00000eb3: JUMPDEST 00000eb4: SWAP1 00000eb5: POP 00000eb6: SWAP2 00000eb7: SWAP1 00000eb8: POP 00000eb9: JUMP 00000eba: JUMPDEST 00000ebb: PUSH2 0x0ec3 00000ebe: DUP2 00000ebf: PUSH2 0x0ea8 00000ec2: JUMP 00000ec3: JUMPDEST 00000ec4: DUP3 00000ec5: MSTORE 00000ec6: POP 00000ec7: POP 00000ec8: JUMP 00000ec9: JUMPDEST 00000eca: PUSH1 0x00 00000ecc: DUP2 00000ecd: SWAP1 00000ece: POP 00000ecf: SWAP2 00000ed0: SWAP1 00000ed1: POP 00000ed2: JUMP 00000ed3: JUMPDEST 00000ed4: PUSH2 0x0edc 00000ed7: DUP2 00000ed8: PUSH2 0x0ec9 00000edb: JUMP 00000edc: JUMPDEST 00000edd: DUP3 00000ede: MSTORE 00000edf: POP 00000ee0: POP 00000ee1: JUMP 00000ee2: JUMPDEST 00000ee3: PUSH1 0x00 00000ee5: DUP3 00000ee6: DUP3 00000ee7: MSTORE 00000ee8: PUSH1 0x20 00000eea: DUP3 00000eeb: ADD 00000eec: SWAP1 00000eed: POP 00000eee: SWAP3 00000eef: SWAP2 00000ef0: POP 00000ef1: POP 00000ef2: JUMP 00000ef3: JUMPDEST 00000ef4: POP 00000ef5: JUMP 00000ef6: JUMPDEST 00000ef7: PUSH1 0x00 00000ef9: PUSH2 0x0f03 00000efc: PUSH1 0x00 00000efe: DUP4 00000eff: PUSH2 0x0ee2 00000f02: JUMP 00000f03: JUMPDEST 00000f04: SWAP2 00000f05: POP 00000f06: PUSH2 0x0f0e 00000f09: DUP3 00000f0a: PUSH2 0x0ef3 00000f0d: JUMP 00000f0e: JUMPDEST 00000f0f: PUSH1 0x00 00000f11: DUP3 00000f12: ADD 00000f13: SWAP1 00000f14: POP 00000f15: SWAP2 00000f16: SWAP1 00000f17: POP 00000f18: JUMP 00000f19: JUMPDEST 00000f1a: PUSH1 0x00 00000f1c: PUSH1 0x60 00000f1e: DUP3 00000f1f: ADD 00000f20: SWAP1 00000f21: POP 00000f22: PUSH2 0x0f2e 00000f25: PUSH1 0x00 00000f27: DUP4 00000f28: ADD 00000f29: DUP6 00000f2a: PUSH2 0x0eba 00000f2d: JUMP 00000f2e: JUMPDEST 00000f2f: PUSH2 0x0f3b 00000f32: PUSH1 0x20 00000f34: DUP4 00000f35: ADD 00000f36: DUP5 00000f37: PUSH2 0x0ed3 00000f3a: JUMP 00000f3b: JUMPDEST 00000f3c: DUP2 00000f3d: DUP2 00000f3e: SUB 00000f3f: PUSH1 0x40 00000f41: DUP4 00000f42: ADD 00000f43: MSTORE 00000f44: PUSH2 0x0f4c 00000f47: DUP2 00000f48: PUSH2 0x0ef6 00000f4b: JUMP 00000f4c: JUMPDEST 00000f4d: SWAP1 00000f4e: POP 00000f4f: SWAP4 00000f50: SWAP3 00000f51: POP 00000f52: POP 00000f53: POP 00000f54: JUMP 00000f55: JUMPDEST 00000f56: DUP3 00000f57: DUP2 00000f58: DUP4 00000f59: CALLDATACOPY 00000f5a: PUSH1 0x00 00000f5c: DUP4 00000f5d: DUP4 00000f5e: ADD 00000f5f: MSTORE 00000f60: POP 00000f61: POP 00000f62: POP 00000f63: JUMP 00000f64: JUMPDEST 00000f65: PUSH1 0x00 00000f67: PUSH1 0x1f 00000f69: NOT 00000f6a: PUSH1 0x1f 00000f6c: DUP4 00000f6d: ADD 00000f6e: AND 00000f6f: SWAP1 00000f70: POP 00000f71: SWAP2 00000f72: SWAP1 00000f73: POP 00000f74: JUMP 00000f75: JUMPDEST 00000f76: PUSH1 0x00 00000f78: PUSH2 0x0f81 00000f7b: DUP4 00000f7c: DUP6 00000f7d: PUSH2 0x0ee2 00000f80: JUMP 00000f81: JUMPDEST 00000f82: SWAP4 00000f83: POP 00000f84: PUSH2 0x0f8e 00000f87: DUP4 00000f88: DUP6 00000f89: DUP5 00000f8a: PUSH2 0x0f55 00000f8d: JUMP 00000f8e: JUMPDEST 00000f8f: PUSH2 0x0f97 00000f92: DUP4 00000f93: PUSH2 0x0f64 00000f96: JUMP 00000f97: JUMPDEST 00000f98: DUP5 00000f99: ADD 00000f9a: SWAP1 00000f9b: POP 00000f9c: SWAP4 00000f9d: SWAP3 00000f9e: POP 00000f9f: POP 00000fa0: POP 00000fa1: JUMP 00000fa2: JUMPDEST 00000fa3: PUSH1 0x00 00000fa5: PUSH1 0x60 00000fa7: DUP3 00000fa8: ADD 00000fa9: SWAP1 00000faa: POP 00000fab: PUSH2 0x0fb7 00000fae: PUSH1 0x00 00000fb0: DUP4 00000fb1: ADD 00000fb2: DUP8 00000fb3: PUSH2 0x0eba 00000fb6: JUMP 00000fb7: JUMPDEST 00000fb8: PUSH2 0x0fc4 00000fbb: PUSH1 0x20 00000fbd: DUP4 00000fbe: ADD 00000fbf: DUP7 00000fc0: PUSH2 0x0ed3 00000fc3: JUMP 00000fc4: JUMPDEST 00000fc5: DUP2 00000fc6: DUP2 00000fc7: SUB 00000fc8: PUSH1 0x40 00000fca: DUP4 00000fcb: ADD 00000fcc: MSTORE 00000fcd: PUSH2 0x0fd7 00000fd0: DUP2 00000fd1: DUP5 00000fd2: DUP7 00000fd3: PUSH2 0x0f75 00000fd6: JUMP 00000fd7: JUMPDEST 00000fd8: SWAP1 00000fd9: POP 00000fda: SWAP6 00000fdb: SWAP5 00000fdc: POP 00000fdd: POP 00000fde: POP 00000fdf: POP 00000fe0: POP 00000fe1: JUMP 00000fe2: JUMPDEST 00000fe3: PUSH1 0x00 00000fe5: DUP2 00000fe6: ISZERO 00000fe7: ISZERO 00000fe8: SWAP1 00000fe9: POP 00000fea: SWAP2 00000feb: SWAP1 00000fec: POP 00000fed: JUMP 00000fee: JUMPDEST 00000fef: PUSH2 0x0ff7 00000ff2: DUP2 00000ff3: PUSH2 0x0fe2 00000ff6: JUMP 00000ff7: JUMPDEST 00000ff8: DUP3 00000ff9: MSTORE 00000ffa: POP 00000ffb: POP 00000ffc: JUMP 00000ffd: JUMPDEST 00000ffe: PUSH1 0x00 00001000: PUSH1 0x20 00001002: DUP3 00001003: ADD 00001004: SWAP1 00001005: POP 00001006: PUSH2 0x1012 00001009: PUSH1 0x00 0000100b: DUP4 0000100c: ADD 0000100d: DUP5 0000100e: PUSH2 0x0fee 00001011: JUMP 00001012: JUMPDEST 00001013: SWAP3 00001014: SWAP2 00001015: POP 00001016: POP 00001017: JUMP 00001018: JUMPDEST 00001019: PUSH1 0x00 0000101b: DUP1 0000101c: REVERT 0000101d: JUMPDEST 0000101e: PUSH1 0x00 00001020: DUP1 00001021: REVERT 00001022: JUMPDEST 00001023: PUSH2 0x102b 00001026: DUP2 00001027: PUSH2 0x0ea8 0000102a: JUMP 0000102b: JUMPDEST 0000102c: DUP2 0000102d: EQ 0000102e: PUSH2 0x1036 00001031: JUMPI 00001032: PUSH1 0x00 00001034: DUP1 00001035: REVERT 00001036: JUMPDEST 00001037: POP 00001038: JUMP 00001039: JUMPDEST 0000103a: PUSH1 0x00 0000103c: DUP2 0000103d: CALLDATALOAD 0000103e: SWAP1 0000103f: POP 00001040: PUSH2 0x1048 00001043: DUP2 00001044: PUSH2 0x1022 00001047: JUMP 00001048: JUMPDEST 00001049: SWAP3 0000104a: SWAP2 0000104b: POP 0000104c: POP 0000104d: JUMP 0000104e: JUMPDEST 0000104f: PUSH2 0x1057 00001052: DUP2 00001053: PUSH2 0x0ec9 00001056: JUMP 00001057: JUMPDEST 00001058: DUP2 00001059: EQ 0000105a: PUSH2 0x1062 0000105d: JUMPI 0000105e: PUSH1 0x00 00001060: DUP1 00001061: REVERT 00001062: JUMPDEST 00001063: POP 00001064: JUMP 00001065: JUMPDEST 00001066: PUSH1 0x00 00001068: DUP2 00001069: CALLDATALOAD 0000106a: SWAP1 0000106b: POP 0000106c: PUSH2 0x1074 0000106f: DUP2 00001070: PUSH2 0x104e 00001073: JUMP 00001074: JUMPDEST 00001075: SWAP3 00001076: SWAP2 00001077: POP 00001078: POP 00001079: JUMP 0000107a: JUMPDEST 0000107b: PUSH1 0x00 0000107d: DUP1 0000107e: REVERT 0000107f: JUMPDEST 00001080: PUSH1 0x00 00001082: DUP2 00001083: SWAP1 00001084: POP 00001085: DUP3 00001086: PUSH1 0x20 00001088: PUSH1 0x02 0000108a: MUL 0000108b: DUP3 0000108c: ADD 0000108d: GT 0000108e: ISZERO 0000108f: PUSH2 0x109b 00001092: JUMPI 00001093: PUSH2 0x109a 00001096: PUSH2 0x107a 00001099: JUMP 0000109a: JUMPDEST 0000109b: JUMPDEST 0000109c: SWAP3 0000109d: SWAP2 0000109e: POP 0000109f: POP 000010a0: JUMP 000010a1: JUMPDEST 000010a2: PUSH1 0x00 000010a4: DUP1 000010a5: PUSH1 0x00 000010a7: DUP1 000010a8: PUSH1 0x00 000010aa: PUSH1 0xa0 000010ac: DUP7 000010ad: DUP9 000010ae: SUB 000010af: SLT 000010b0: ISZERO 000010b1: PUSH2 0x10bd 000010b4: JUMPI 000010b5: PUSH2 0x10bc 000010b8: PUSH2 0x1018 000010bb: JUMP 000010bc: JUMPDEST 000010bd: JUMPDEST 000010be: PUSH1 0x00 000010c0: PUSH2 0x10cb 000010c3: DUP9 000010c4: DUP3 000010c5: DUP10 000010c6: ADD 000010c7: PUSH2 0x1039 000010ca: JUMP 000010cb: JUMPDEST 000010cc: SWAP6 000010cd: POP 000010ce: POP 000010cf: PUSH1 0x20 000010d1: PUSH2 0x10dc 000010d4: DUP9 000010d5: DUP3 000010d6: DUP10 000010d7: ADD 000010d8: PUSH2 0x1065 000010db: JUMP 000010dc: JUMPDEST 000010dd: SWAP5 000010de: POP 000010df: POP 000010e0: PUSH1 0x40 000010e2: PUSH2 0x10ed 000010e5: DUP9 000010e6: DUP3 000010e7: DUP10 000010e8: ADD 000010e9: PUSH2 0x1039 000010ec: JUMP 000010ed: JUMPDEST 000010ee: SWAP4 000010ef: POP 000010f0: POP 000010f1: PUSH1 0x60 000010f3: PUSH2 0x10fe 000010f6: DUP9 000010f7: DUP3 000010f8: DUP10 000010f9: ADD 000010fa: PUSH2 0x1065 000010fd: JUMP 000010fe: JUMPDEST 000010ff: SWAP3 00001100: POP 00001101: POP 00001102: PUSH1 0x80 00001104: DUP7 00001105: ADD 00001106: CALLDATALOAD 00001107: PUSH8 0xffffffffffffffff 00001110: DUP2 00001111: GT 00001112: ISZERO 00001113: PUSH2 0x111f 00001116: JUMPI 00001117: PUSH2 0x111e 0000111a: PUSH2 0x101d 0000111d: JUMP 0000111e: JUMPDEST 0000111f: JUMPDEST 00001120: PUSH2 0x112b 00001123: DUP9 00001124: DUP3 00001125: DUP10 00001126: ADD 00001127: PUSH2 0x107f 0000112a: JUMP 0000112b: JUMPDEST 0000112c: SWAP2 0000112d: POP 0000112e: POP 0000112f: SWAP3 00001130: SWAP6 00001131: POP 00001132: SWAP3 00001133: SWAP6 00001134: SWAP1 00001135: SWAP4 00001136: POP 00001137: JUMP 00001138: JUMPDEST 00001139: PUSH1 0x00 0000113b: PUSH1 0x20 0000113d: DUP3 0000113e: DUP5 0000113f: SUB 00001140: SLT 00001141: ISZERO 00001142: PUSH2 0x114e 00001145: JUMPI 00001146: PUSH2 0x114d 00001149: PUSH2 0x1018 0000114c: JUMP 0000114d: JUMPDEST 0000114e: JUMPDEST 0000114f: PUSH1 0x00 00001151: PUSH2 0x115c 00001154: DUP5 00001155: DUP3 00001156: DUP6 00001157: ADD 00001158: PUSH2 0x1039 0000115b: JUMP 0000115c: JUMPDEST 0000115d: SWAP2 0000115e: POP 0000115f: POP 00001160: SWAP3 00001161: SWAP2 00001162: POP 00001163: POP 00001164: JUMP 00001165: JUMPDEST 00001166: PUSH1 0x00 00001168: DUP1 00001169: REVERT 0000116a: JUMPDEST 0000116b: PUSH1 0x00 0000116d: DUP1 0000116e: REVERT 0000116f: JUMPDEST 00001170: PUSH1 0x00 00001172: DUP1 00001173: DUP4 00001174: PUSH1 0x1f 00001176: DUP5 00001177: ADD 00001178: SLT 00001179: PUSH2 0x1185 0000117c: JUMPI 0000117d: PUSH2 0x1184 00001180: PUSH2 0x1165 00001183: JUMP 00001184: JUMPDEST 00001185: JUMPDEST 00001186: DUP3 00001187: CALLDATALOAD 00001188: SWAP1 00001189: POP 0000118a: PUSH8 0xffffffffffffffff 00001193: DUP2 00001194: GT 00001195: ISZERO 00001196: PUSH2 0x11a2 00001199: JUMPI 0000119a: PUSH2 0x11a1 0000119d: PUSH2 0x116a 000011a0: JUMP 000011a1: JUMPDEST 000011a2: JUMPDEST 000011a3: PUSH1 0x20 000011a5: DUP4 000011a6: ADD 000011a7: SWAP2 000011a8: POP 000011a9: DUP4 000011aa: PUSH1 0x20 000011ac: DUP3 000011ad: MUL 000011ae: DUP4 000011af: ADD 000011b0: GT 000011b1: ISZERO 000011b2: PUSH2 0x11be 000011b5: JUMPI 000011b6: PUSH2 0x11bd 000011b9: PUSH2 0x107a 000011bc: JUMP 000011bd: JUMPDEST 000011be: JUMPDEST 000011bf: SWAP3 000011c0: POP 000011c1: SWAP3 000011c2: SWAP1 000011c3: POP 000011c4: JUMP 000011c5: JUMPDEST 000011c6: PUSH1 0x00 000011c8: DUP1 000011c9: PUSH1 0x20 000011cb: DUP4 000011cc: DUP6 000011cd: SUB 000011ce: SLT 000011cf: ISZERO 000011d0: PUSH2 0x11dc 000011d3: JUMPI 000011d4: PUSH2 0x11db 000011d7: PUSH2 0x1018 000011da: JUMP 000011db: JUMPDEST 000011dc: JUMPDEST 000011dd: PUSH1 0x00 000011df: DUP4 000011e0: ADD 000011e1: CALLDATALOAD 000011e2: PUSH8 0xffffffffffffffff 000011eb: DUP2 000011ec: GT 000011ed: ISZERO 000011ee: PUSH2 0x11fa 000011f1: JUMPI 000011f2: PUSH2 0x11f9 000011f5: PUSH2 0x101d 000011f8: JUMP 000011f9: JUMPDEST 000011fa: JUMPDEST 000011fb: PUSH2 0x1206 000011fe: DUP6 000011ff: DUP3 00001200: DUP7 00001201: ADD 00001202: PUSH2 0x116f 00001205: JUMP 00001206: JUMPDEST 00001207: SWAP3 00001208: POP 00001209: SWAP3 0000120a: POP 0000120b: POP 0000120c: SWAP3 0000120d: POP 0000120e: SWAP3 0000120f: SWAP1 00001210: POP 00001211: JUMP 00001212: JUMPDEST 00001213: PUSH1 0x00 00001215: DUP1 00001216: DUP4 00001217: PUSH1 0x1f 00001219: DUP5 0000121a: ADD 0000121b: SLT 0000121c: PUSH2 0x1228 0000121f: JUMPI 00001220: PUSH2 0x1227 00001223: PUSH2 0x1165 00001226: JUMP 00001227: JUMPDEST 00001228: JUMPDEST 00001229: DUP3 0000122a: CALLDATALOAD 0000122b: SWAP1 0000122c: POP 0000122d: PUSH8 0xffffffffffffffff 00001236: DUP2 00001237: GT 00001238: ISZERO 00001239: PUSH2 0x1245 0000123c: JUMPI 0000123d: PUSH2 0x1244 00001240: PUSH2 0x116a 00001243: JUMP 00001244: JUMPDEST 00001245: JUMPDEST 00001246: PUSH1 0x20 00001248: DUP4 00001249: ADD 0000124a: SWAP2 0000124b: POP 0000124c: DUP4 0000124d: PUSH1 0x01 0000124f: DUP3 00001250: MUL 00001251: DUP4 00001252: ADD 00001253: GT 00001254: ISZERO 00001255: PUSH2 0x1261 00001258: JUMPI 00001259: PUSH2 0x1260 0000125c: PUSH2 0x107a 0000125f: JUMP 00001260: JUMPDEST 00001261: JUMPDEST 00001262: SWAP3 00001263: POP 00001264: SWAP3 00001265: SWAP1 00001266: POP 00001267: JUMP 00001268: JUMPDEST 00001269: PUSH1 0x00 0000126b: DUP1 0000126c: PUSH1 0x00 0000126e: DUP1 0000126f: PUSH1 0x00 00001271: DUP1 00001272: PUSH1 0xa0 00001274: DUP8 00001275: DUP10 00001276: SUB 00001277: SLT 00001278: ISZERO 00001279: PUSH2 0x1285 0000127c: JUMPI 0000127d: PUSH2 0x1284 00001280: PUSH2 0x1018 00001283: JUMP 00001284: JUMPDEST 00001285: JUMPDEST 00001286: PUSH1 0x00 00001288: PUSH2 0x1293 0000128b: DUP10 0000128c: DUP3 0000128d: DUP11 0000128e: ADD 0000128f: PUSH2 0x1039 00001292: JUMP 00001293: JUMPDEST 00001294: SWAP7 00001295: POP 00001296: POP 00001297: PUSH1 0x20 00001299: PUSH2 0x12a4 0000129c: DUP10 0000129d: DUP3 0000129e: DUP11 0000129f: ADD 000012a0: PUSH2 0x1065 000012a3: JUMP 000012a4: JUMPDEST 000012a5: SWAP6 000012a6: POP 000012a7: POP 000012a8: PUSH1 0x40 000012aa: DUP8 000012ab: ADD 000012ac: CALLDATALOAD 000012ad: PUSH8 0xffffffffffffffff 000012b6: DUP2 000012b7: GT 000012b8: ISZERO 000012b9: PUSH2 0x12c5 000012bc: JUMPI 000012bd: PUSH2 0x12c4 000012c0: PUSH2 0x101d 000012c3: JUMP 000012c4: JUMPDEST 000012c5: JUMPDEST 000012c6: PUSH2 0x12d1 000012c9: DUP10 000012ca: DUP3 000012cb: DUP11 000012cc: ADD 000012cd: PUSH2 0x1212 000012d0: JUMP 000012d1: JUMPDEST 000012d2: SWAP5 000012d3: POP 000012d4: SWAP5 000012d5: POP 000012d6: POP 000012d7: PUSH1 0x60 000012d9: PUSH2 0x12e4 000012dc: DUP10 000012dd: DUP3 000012de: DUP11 000012df: ADD 000012e0: PUSH2 0x1065 000012e3: JUMP 000012e4: JUMPDEST 000012e5: SWAP3 000012e6: POP 000012e7: POP 000012e8: PUSH1 0x80 000012ea: DUP8 000012eb: ADD 000012ec: CALLDATALOAD 000012ed: PUSH8 0xffffffffffffffff 000012f6: DUP2 000012f7: GT 000012f8: ISZERO 000012f9: PUSH2 0x1305 000012fc: JUMPI 000012fd: PUSH2 0x1304 00001300: PUSH2 0x101d 00001303: JUMP 00001304: JUMPDEST 00001305: JUMPDEST 00001306: PUSH2 0x1311 00001309: DUP10 0000130a: DUP3 0000130b: DUP11 0000130c: ADD 0000130d: PUSH2 0x107f 00001310: JUMP 00001311: JUMPDEST 00001312: SWAP2 00001313: POP 00001314: POP 00001315: SWAP3 00001316: SWAP6 00001317: POP 00001318: SWAP3 00001319: SWAP6 0000131a: POP 0000131b: SWAP3 0000131c: SWAP6 0000131d: JUMP 0000131e: JUMPDEST 0000131f: PUSH1 0x00 00001321: DUP3 00001322: DUP3 00001323: MSTORE 00001324: PUSH1 0x20 00001326: DUP3 00001327: ADD 00001328: SWAP1 00001329: POP 0000132a: SWAP3 0000132b: SWAP2 0000132c: POP 0000132d: POP 0000132e: JUMP 0000132f: JUMPDEST 00001330: PUSH32 0x4e6f6e2d7369676e657220696e206f6e6c795369676e6572206d6574686f6400 00001351: PUSH1 0x00 00001353: DUP3 00001354: ADD 00001355: MSTORE 00001356: POP 00001357: JUMP 00001358: JUMPDEST 00001359: PUSH1 0x00 0000135b: PUSH2 0x1365 0000135e: PUSH1 0x1f 00001360: DUP4 00001361: PUSH2 0x131e 00001364: JUMP 00001365: JUMPDEST 00001366: SWAP2 00001367: POP 00001368: PUSH2 0x1370 0000136b: DUP3 0000136c: PUSH2 0x132f 0000136f: JUMP 00001370: JUMPDEST 00001371: PUSH1 0x20 00001373: DUP3 00001374: ADD 00001375: SWAP1 00001376: POP 00001377: SWAP2 00001378: SWAP1 00001379: POP 0000137a: JUMP 0000137b: JUMPDEST 0000137c: PUSH1 0x00 0000137e: PUSH1 0x20 00001380: DUP3 00001381: ADD 00001382: SWAP1 00001383: POP 00001384: DUP2 00001385: DUP2 00001386: SUB 00001387: PUSH1 0x00 00001389: DUP4 0000138a: ADD 0000138b: MSTORE 0000138c: PUSH2 0x1394 0000138f: DUP2 00001390: PUSH2 0x1358 00001393: JUMP 00001394: JUMPDEST 00001395: SWAP1 00001396: POP 00001397: SWAP2 00001398: SWAP1 00001399: POP 0000139a: JUMP 0000139b: JUMPDEST 0000139c: PUSH1 0x00 0000139e: DUP2 0000139f: MLOAD 000013a0: SWAP1 000013a1: POP 000013a2: SWAP2 000013a3: SWAP1 000013a4: POP 000013a5: JUMP 000013a6: JUMPDEST 000013a7: PUSH1 0x00 000013a9: DUP2 000013aa: SWAP1 000013ab: POP 000013ac: SWAP3 000013ad: SWAP2 000013ae: POP 000013af: POP 000013b0: JUMP 000013b1: JUMPDEST 000013b2: PUSH1 0x00 000013b4: JUMPDEST 000013b5: DUP4 000013b6: DUP2 000013b7: LT 000013b8: ISZERO 000013b9: PUSH2 0x13cf 000013bc: JUMPI 000013bd: DUP1 000013be: DUP3 000013bf: ADD 000013c0: MLOAD 000013c1: DUP2 000013c2: DUP5 000013c3: ADD 000013c4: MSTORE 000013c5: PUSH1 0x20 000013c7: DUP2 000013c8: ADD 000013c9: SWAP1 000013ca: POP 000013cb: PUSH2 0x13b4 000013ce: JUMP 000013cf: JUMPDEST 000013d0: DUP4 000013d1: DUP2 000013d2: GT 000013d3: ISZERO 000013d4: PUSH2 0x13de 000013d7: JUMPI 000013d8: PUSH1 0x00 000013da: DUP5 000013db: DUP5 000013dc: ADD 000013dd: MSTORE 000013de: JUMPDEST 000013df: POP 000013e0: POP 000013e1: POP 000013e2: POP 000013e3: JUMP 000013e4: JUMPDEST 000013e5: PUSH1 0x00 000013e7: PUSH2 0x13ef 000013ea: DUP3 000013eb: PUSH2 0x139b 000013ee: JUMP 000013ef: JUMPDEST 000013f0: PUSH2 0x13f9 000013f3: DUP2 000013f4: DUP6 000013f5: PUSH2 0x13a6 000013f8: JUMP 000013f9: JUMPDEST 000013fa: SWAP4 000013fb: POP 000013fc: PUSH2 0x1409 000013ff: DUP2 00001400: DUP6 00001401: PUSH1 0x20 00001403: DUP7 00001404: ADD 00001405: PUSH2 0x13b1 00001408: JUMP 00001409: JUMPDEST 0000140a: DUP1 0000140b: DUP5 0000140c: ADD 0000140d: SWAP2 0000140e: POP 0000140f: POP 00001410: SWAP3 00001411: SWAP2 00001412: POP 00001413: POP 00001414: JUMP 00001415: JUMPDEST 00001416: PUSH1 0x00 00001418: DUP2 00001419: PUSH1 0x60 0000141b: SHL 0000141c: SWAP1 0000141d: POP 0000141e: SWAP2 0000141f: SWAP1 00001420: POP 00001421: JUMP 00001422: JUMPDEST 00001423: PUSH1 0x00 00001425: PUSH2 0x142d 00001428: DUP3 00001429: PUSH2 0x1415 0000142c: JUMP 0000142d: JUMPDEST 0000142e: SWAP1 0000142f: POP 00001430: SWAP2 00001431: SWAP1 00001432: POP 00001433: JUMP 00001434: JUMPDEST 00001435: PUSH1 0x00 00001437: PUSH2 0x143f 0000143a: DUP3 0000143b: PUSH2 0x1422 0000143e: JUMP 0000143f: JUMPDEST 00001440: SWAP1 00001441: POP 00001442: SWAP2 00001443: SWAP1 00001444: POP 00001445: JUMP 00001446: JUMPDEST 00001447: PUSH2 0x1457 0000144a: PUSH2 0x1452 0000144d: DUP3 0000144e: PUSH2 0x0ea8 00001451: JUMP 00001452: JUMPDEST 00001453: PUSH2 0x1434 00001456: JUMP 00001457: JUMPDEST 00001458: DUP3 00001459: MSTORE 0000145a: POP 0000145b: POP 0000145c: JUMP 0000145d: JUMPDEST 0000145e: PUSH1 0x00 00001460: DUP2 00001461: SWAP1 00001462: POP 00001463: SWAP2 00001464: SWAP1 00001465: POP 00001466: JUMP 00001467: JUMPDEST 00001468: PUSH2 0x1478 0000146b: PUSH2 0x1473 0000146e: DUP3 0000146f: PUSH2 0x0ec9 00001472: JUMP 00001473: JUMPDEST 00001474: PUSH2 0x145d 00001477: JUMP 00001478: JUMPDEST 00001479: DUP3 0000147a: MSTORE 0000147b: POP 0000147c: POP 0000147d: JUMP 0000147e: JUMPDEST 0000147f: PUSH1 0x00 00001481: PUSH2 0x148a 00001484: DUP3 00001485: DUP9 00001486: PUSH2 0x13e4 00001489: JUMP 0000148a: JUMPDEST 0000148b: SWAP2 0000148c: POP 0000148d: PUSH2 0x1496 00001490: DUP3 00001491: DUP8 00001492: PUSH2 0x1446 00001495: JUMP 00001496: JUMPDEST 00001497: PUSH1 0x14 00001499: DUP3 0000149a: ADD 0000149b: SWAP2 0000149c: POP 0000149d: PUSH2 0x14a6 000014a0: DUP3 000014a1: DUP7 000014a2: PUSH2 0x1467 000014a5: JUMP 000014a6: JUMPDEST 000014a7: PUSH1 0x20 000014a9: DUP3 000014aa: ADD 000014ab: SWAP2 000014ac: POP 000014ad: PUSH2 0x14b6 000014b0: DUP3 000014b1: DUP6 000014b2: PUSH2 0x1446 000014b5: JUMP 000014b6: JUMPDEST 000014b7: PUSH1 0x14 000014b9: DUP3 000014ba: ADD 000014bb: SWAP2 000014bc: POP 000014bd: PUSH2 0x14c6 000014c0: DUP3 000014c1: DUP5 000014c2: PUSH2 0x1467 000014c5: JUMP 000014c6: JUMPDEST 000014c7: PUSH1 0x20 000014c9: DUP3 000014ca: ADD 000014cb: SWAP2 000014cc: POP 000014cd: DUP2 000014ce: SWAP1 000014cf: POP 000014d0: SWAP7 000014d1: SWAP6 000014d2: POP 000014d3: POP 000014d4: POP 000014d5: POP 000014d6: POP 000014d7: POP 000014d8: JUMP 000014d9: JUMPDEST 000014da: PUSH32 0x436f6e747261637420616c726561647920696e697469616c697a656400000000 000014fb: PUSH1 0x00 000014fd: DUP3 000014fe: ADD 000014ff: MSTORE 00001500: POP 00001501: JUMP 00001502: JUMPDEST 00001503: PUSH1 0x00 00001505: PUSH2 0x150f 00001508: PUSH1 0x1c 0000150a: DUP4 0000150b: PUSH2 0x131e 0000150e: JUMP 0000150f: JUMPDEST 00001510: SWAP2 00001511: POP 00001512: PUSH2 0x151a 00001515: DUP3 00001516: PUSH2 0x14d9 00001519: JUMP 0000151a: JUMPDEST 0000151b: PUSH1 0x20 0000151d: DUP3 0000151e: ADD 0000151f: SWAP1 00001520: POP 00001521: SWAP2 00001522: SWAP1 00001523: POP 00001524: JUMP 00001525: JUMPDEST 00001526: PUSH1 0x00 00001528: PUSH1 0x20 0000152a: DUP3 0000152b: ADD 0000152c: SWAP1 0000152d: POP 0000152e: DUP2 0000152f: DUP2 00001530: SUB 00001531: PUSH1 0x00 00001533: DUP4 00001534: ADD 00001535: MSTORE 00001536: PUSH2 0x153e 00001539: DUP2 0000153a: PUSH2 0x1502 0000153d: JUMP 0000153e: JUMPDEST 0000153f: SWAP1 00001540: POP 00001541: SWAP2 00001542: SWAP1 00001543: POP 00001544: JUMP 00001545: JUMPDEST 00001546: PUSH32 0x496e76616c6964206e756d626572206f66207369676e65727300000000000000 00001567: PUSH1 0x00 00001569: DUP3 0000156a: ADD 0000156b: MSTORE 0000156c: POP 0000156d: JUMP 0000156e: JUMPDEST 0000156f: PUSH1 0x00 00001571: PUSH2 0x157b 00001574: PUSH1 0x19 00001576: DUP4 00001577: PUSH2 0x131e 0000157a: JUMP 0000157b: JUMPDEST 0000157c: SWAP2 0000157d: POP 0000157e: PUSH2 0x1586 00001581: DUP3 00001582: PUSH2 0x1545 00001585: JUMP 00001586: JUMPDEST 00001587: PUSH1 0x20 00001589: DUP3 0000158a: ADD 0000158b: SWAP1 0000158c: POP 0000158d: SWAP2 0000158e: SWAP1 0000158f: POP 00001590: JUMP 00001591: JUMPDEST 00001592: PUSH1 0x00 00001594: PUSH1 0x20 00001596: DUP3 00001597: ADD 00001598: SWAP1 00001599: POP 0000159a: DUP2 0000159b: DUP2 0000159c: SUB 0000159d: PUSH1 0x00 0000159f: DUP4 000015a0: ADD 000015a1: MSTORE 000015a2: PUSH2 0x15aa 000015a5: DUP2 000015a6: PUSH2 0x156e 000015a9: JUMP 000015aa: JUMPDEST 000015ab: SWAP1 000015ac: POP 000015ad: SWAP2 000015ae: SWAP1 000015af: POP 000015b0: JUMP 000015b1: JUMPDEST 000015b2: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000015d3: PUSH1 0x00 000015d5: MSTORE 000015d6: PUSH1 0x32 000015d8: PUSH1 0x04 000015da: MSTORE 000015db: PUSH1 0x24 000015dd: PUSH1 0x00 000015df: REVERT 000015e0: JUMPDEST 000015e1: PUSH32 0x496e76616c6964207369676e6572000000000000000000000000000000000000 00001602: PUSH1 0x00 00001604: DUP3 00001605: ADD 00001606: MSTORE 00001607: POP 00001608: JUMP 00001609: JUMPDEST 0000160a: PUSH1 0x00 0000160c: PUSH2 0x1616 0000160f: PUSH1 0x0e 00001611: DUP4 00001612: PUSH2 0x131e 00001615: JUMP 00001616: JUMPDEST 00001617: SWAP2 00001618: POP 00001619: PUSH2 0x1621 0000161c: DUP3 0000161d: PUSH2 0x15e0 00001620: JUMP 00001621: JUMPDEST 00001622: PUSH1 0x20 00001624: DUP3 00001625: ADD 00001626: SWAP1 00001627: POP 00001628: SWAP2 00001629: SWAP1 0000162a: POP 0000162b: JUMP 0000162c: JUMPDEST 0000162d: PUSH1 0x00 0000162f: PUSH1 0x20 00001631: DUP3 00001632: ADD 00001633: SWAP1 00001634: POP 00001635: DUP2 00001636: DUP2 00001637: SUB 00001638: PUSH1 0x00 0000163a: DUP4 0000163b: ADD 0000163c: MSTORE 0000163d: PUSH2 0x1645 00001640: DUP2 00001641: PUSH2 0x1609 00001644: JUMP 00001645: JUMPDEST 00001646: SWAP1 00001647: POP 00001648: SWAP2 00001649: SWAP1 0000164a: POP 0000164b: JUMP 0000164c: JUMPDEST 0000164d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000166e: PUSH1 0x00 00001670: MSTORE 00001671: PUSH1 0x11 00001673: PUSH1 0x04 00001675: MSTORE 00001676: PUSH1 0x24 00001678: PUSH1 0x00 0000167a: REVERT 0000167b: JUMPDEST 0000167c: PUSH1 0x00 0000167e: PUSH1 0xff 00001680: DUP3 00001681: AND 00001682: SWAP1 00001683: POP 00001684: SWAP2 00001685: SWAP1 00001686: POP 00001687: JUMP 00001688: JUMPDEST 00001689: PUSH1 0x00 0000168b: PUSH2 0x1693 0000168e: DUP3 0000168f: PUSH2 0x167b 00001692: JUMP 00001693: JUMPDEST 00001694: SWAP2 00001695: POP 00001696: PUSH1 0xff 00001698: DUP3 00001699: EQ 0000169a: ISZERO 0000169b: PUSH2 0x16a7 0000169e: JUMPI 0000169f: PUSH2 0x16a6 000016a2: PUSH2 0x164c 000016a5: JUMP 000016a6: JUMPDEST 000016a7: JUMPDEST 000016a8: PUSH1 0x01 000016aa: DUP3 000016ab: ADD 000016ac: SWAP1 000016ad: POP 000016ae: SWAP2 000016af: SWAP1 000016b0: POP 000016b1: JUMP 000016b2: JUMPDEST 000016b3: PUSH1 0x00 000016b5: DUP2 000016b6: SWAP1 000016b7: POP 000016b8: SWAP3 000016b9: SWAP2 000016ba: POP 000016bb: POP 000016bc: JUMP 000016bd: JUMPDEST 000016be: PUSH1 0x00 000016c0: PUSH2 0x16c9 000016c3: DUP4 000016c4: DUP6 000016c5: PUSH2 0x16b2 000016c8: JUMP 000016c9: JUMPDEST 000016ca: SWAP4 000016cb: POP 000016cc: PUSH2 0x16d6 000016cf: DUP4 000016d0: DUP6 000016d1: DUP5 000016d2: PUSH2 0x0f55 000016d5: JUMP 000016d6: JUMPDEST 000016d7: DUP3 000016d8: DUP5 000016d9: ADD 000016da: SWAP1 000016db: POP 000016dc: SWAP4 000016dd: SWAP3 000016de: POP 000016df: POP 000016e0: POP 000016e1: JUMP 000016e2: JUMPDEST 000016e3: PUSH1 0x00 000016e5: PUSH2 0x16ee 000016e8: DUP3 000016e9: DUP10 000016ea: PUSH2 0x13e4 000016ed: JUMP 000016ee: JUMPDEST 000016ef: SWAP2 000016f0: POP 000016f1: PUSH2 0x16fa 000016f4: DUP3 000016f5: DUP9 000016f6: PUSH2 0x1446 000016f9: JUMP 000016fa: JUMPDEST 000016fb: PUSH1 0x14 000016fd: DUP3 000016fe: ADD 000016ff: SWAP2 00001700: POP 00001701: PUSH2 0x170a 00001704: DUP3 00001705: DUP8 00001706: PUSH2 0x1467 00001709: JUMP 0000170a: JUMPDEST 0000170b: PUSH1 0x20 0000170d: DUP3 0000170e: ADD 0000170f: SWAP2 00001710: POP 00001711: PUSH2 0x171b 00001714: DUP3 00001715: DUP6 00001716: DUP8 00001717: PUSH2 0x16bd 0000171a: JUMP 0000171b: JUMPDEST 0000171c: SWAP2 0000171d: POP 0000171e: PUSH2 0x1727 00001721: DUP3 00001722: DUP5 00001723: PUSH2 0x1467 00001726: JUMP 00001727: JUMPDEST 00001728: PUSH1 0x20 0000172a: DUP3 0000172b: ADD 0000172c: SWAP2 0000172d: POP 0000172e: DUP2 0000172f: SWAP1 00001730: POP 00001731: SWAP8 00001732: SWAP7 00001733: POP 00001734: POP 00001735: POP 00001736: POP 00001737: POP 00001738: POP 00001739: POP 0000173a: JUMP 0000173b: JUMPDEST 0000173c: PUSH1 0x00 0000173e: PUSH2 0x1748 00001741: DUP3 00001742: DUP5 00001743: DUP7 00001744: PUSH2 0x16bd 00001747: JUMP 00001748: JUMPDEST 00001749: SWAP2 0000174a: POP 0000174b: DUP2 0000174c: SWAP1 0000174d: POP 0000174e: SWAP4 0000174f: SWAP3 00001750: POP 00001751: POP 00001752: POP 00001753: JUMP 00001754: JUMPDEST 00001755: PUSH32 0x43616c6c20657865637574696f6e206661696c65640000000000000000000000 00001776: PUSH1 0x00 00001778: DUP3 00001779: ADD 0000177a: MSTORE 0000177b: POP 0000177c: JUMP 0000177d: JUMPDEST 0000177e: PUSH1 0x00 00001780: PUSH2 0x178a 00001783: PUSH1 0x15 00001785: DUP4 00001786: PUSH2 0x131e 00001789: JUMP 0000178a: JUMPDEST 0000178b: SWAP2 0000178c: POP 0000178d: PUSH2 0x1795 00001790: DUP3 00001791: PUSH2 0x1754 00001794: JUMP 00001795: JUMPDEST 00001796: PUSH1 0x20 00001798: DUP3 00001799: ADD 0000179a: SWAP1 0000179b: POP 0000179c: SWAP2 0000179d: SWAP1 0000179e: POP 0000179f: JUMP 000017a0: JUMPDEST 000017a1: PUSH1 0x00 000017a3: PUSH1 0x20 000017a5: DUP3 000017a6: ADD 000017a7: SWAP1 000017a8: POP 000017a9: DUP2 000017aa: DUP2 000017ab: SUB 000017ac: PUSH1 0x00 000017ae: DUP4 000017af: ADD 000017b0: MSTORE 000017b1: PUSH2 0x17b9 000017b4: DUP2 000017b5: PUSH2 0x177d 000017b8: JUMP 000017b9: JUMPDEST 000017ba: SWAP1 000017bb: POP 000017bc: SWAP2 000017bd: SWAP1 000017be: POP 000017bf: JUMP 000017c0: JUMPDEST 000017c1: PUSH1 0x00 000017c3: DUP2 000017c4: SWAP1 000017c5: POP 000017c6: SWAP2 000017c7: SWAP1 000017c8: POP 000017c9: JUMP 000017ca: JUMPDEST 000017cb: PUSH2 0x17d3 000017ce: DUP2 000017cf: PUSH2 0x17c0 000017d2: JUMP 000017d3: JUMPDEST 000017d4: DUP3 000017d5: MSTORE 000017d6: POP 000017d7: POP 000017d8: JUMP 000017d9: JUMPDEST 000017da: PUSH1 0x00 000017dc: PUSH1 0xe0 000017de: DUP3 000017df: ADD 000017e0: SWAP1 000017e1: POP 000017e2: PUSH2 0x17ee 000017e5: PUSH1 0x00 000017e7: DUP4 000017e8: ADD 000017e9: DUP12 000017ea: PUSH2 0x0eba 000017ed: JUMP 000017ee: JUMPDEST 000017ef: PUSH2 0x17fb 000017f2: PUSH1 0x20 000017f4: DUP4 000017f5: ADD 000017f6: DUP11 000017f7: PUSH2 0x0eba 000017fa: JUMP 000017fb: JUMPDEST 000017fc: PUSH2 0x1808 000017ff: PUSH1 0x40 00001801: DUP4 00001802: ADD 00001803: DUP10 00001804: PUSH2 0x0eba 00001807: JUMP 00001808: JUMPDEST 00001809: PUSH2 0x1815 0000180c: PUSH1 0x60 0000180e: DUP4 0000180f: ADD 00001810: DUP9 00001811: PUSH2 0x17ca 00001814: JUMP 00001815: JUMPDEST 00001816: PUSH2 0x1822 00001819: PUSH1 0x80 0000181b: DUP4 0000181c: ADD 0000181d: DUP8 0000181e: PUSH2 0x0eba 00001821: JUMP 00001822: JUMPDEST 00001823: PUSH2 0x182f 00001826: PUSH1 0xa0 00001828: DUP4 00001829: ADD 0000182a: DUP7 0000182b: PUSH2 0x0ed3 0000182e: JUMP 0000182f: JUMPDEST 00001830: DUP2 00001831: DUP2 00001832: SUB 00001833: PUSH1 0xc0 00001835: DUP4 00001836: ADD 00001837: MSTORE 00001838: PUSH2 0x1842 0000183b: DUP2 0000183c: DUP5 0000183d: DUP7 0000183e: PUSH2 0x0f75 00001841: JUMP 00001842: JUMPDEST 00001843: SWAP1 00001844: POP 00001845: SWAP10 00001846: SWAP9 00001847: POP 00001848: POP 00001849: POP 0000184a: POP 0000184b: POP 0000184c: POP 0000184d: POP 0000184e: POP 0000184f: POP 00001850: JUMP 00001851: JUMPDEST 00001852: PUSH1 0x00 00001854: PUSH1 0x20 00001856: DUP3 00001857: ADD 00001858: SWAP1 00001859: POP 0000185a: PUSH2 0x1866 0000185d: PUSH1 0x00 0000185f: DUP4 00001860: ADD 00001861: DUP5 00001862: PUSH2 0x0eba 00001865: JUMP 00001866: JUMPDEST 00001867: SWAP3 00001868: SWAP2 00001869: POP 0000186a: POP 0000186b: JUMP 0000186c: JUMPDEST 0000186d: PUSH32 0x7369676e6174757265206e656564203200000000000000000000000000000000 0000188e: PUSH1 0x00 00001890: DUP3 00001891: ADD 00001892: MSTORE 00001893: POP 00001894: JUMP 00001895: JUMPDEST 00001896: PUSH1 0x00 00001898: PUSH2 0x18a2 0000189b: PUSH1 0x10 0000189d: DUP4 0000189e: PUSH2 0x131e 000018a1: JUMP 000018a2: JUMPDEST 000018a3: SWAP2 000018a4: POP 000018a5: PUSH2 0x18ad 000018a8: DUP3 000018a9: PUSH2 0x186c 000018ac: JUMP 000018ad: JUMPDEST 000018ae: PUSH1 0x20 000018b0: DUP3 000018b1: ADD 000018b2: SWAP1 000018b3: POP 000018b4: SWAP2 000018b5: SWAP1 000018b6: POP 000018b7: JUMP 000018b8: JUMPDEST 000018b9: PUSH1 0x00 000018bb: PUSH1 0x20 000018bd: DUP3 000018be: ADD 000018bf: SWAP1 000018c0: POP 000018c1: DUP2 000018c2: DUP2 000018c3: SUB 000018c4: PUSH1 0x00 000018c6: DUP4 000018c7: ADD 000018c8: MSTORE 000018c9: PUSH2 0x18d1 000018cc: DUP2 000018cd: PUSH2 0x1895 000018d0: JUMP 000018d1: JUMPDEST 000018d2: SWAP1 000018d3: POP 000018d4: SWAP2 000018d5: SWAP1 000018d6: POP 000018d7: JUMP 000018d8: JUMPDEST 000018d9: PUSH1 0x00 000018db: DUP1 000018dc: REVERT 000018dd: JUMPDEST 000018de: PUSH1 0x00 000018e0: DUP1 000018e1: REVERT 000018e2: JUMPDEST 000018e3: PUSH1 0x00 000018e5: DUP1 000018e6: REVERT 000018e7: JUMPDEST 000018e8: PUSH1 0x00 000018ea: DUP1 000018eb: DUP4 000018ec: CALLDATALOAD 000018ed: PUSH1 0x01 000018ef: PUSH1 0x20 000018f1: SUB 000018f2: DUP5 000018f3: CALLDATASIZE 000018f4: SUB 000018f5: SUB 000018f6: DUP2 000018f7: SLT 000018f8: PUSH2 0x1904 000018fb: JUMPI 000018fc: PUSH2 0x1903 000018ff: PUSH2 0x18d8 00001902: JUMP 00001903: JUMPDEST 00001904: JUMPDEST 00001905: DUP1 00001906: DUP5 00001907: ADD 00001908: SWAP3 00001909: POP 0000190a: DUP3 0000190b: CALLDATALOAD 0000190c: SWAP2 0000190d: POP 0000190e: PUSH8 0xffffffffffffffff 00001917: DUP3 00001918: GT 00001919: ISZERO 0000191a: PUSH2 0x1926 0000191d: JUMPI 0000191e: PUSH2 0x1925 00001921: PUSH2 0x18dd 00001924: JUMP 00001925: JUMPDEST 00001926: JUMPDEST 00001927: PUSH1 0x20 00001929: DUP4 0000192a: ADD 0000192b: SWAP3 0000192c: POP 0000192d: PUSH1 0x01 0000192f: DUP3 00001930: MUL 00001931: CALLDATASIZE 00001932: SUB 00001933: DUP4 00001934: SGT 00001935: ISZERO 00001936: PUSH2 0x1942 00001939: JUMPI 0000193a: PUSH2 0x1941 0000193d: PUSH2 0x18e2 00001940: JUMP 00001941: JUMPDEST 00001942: JUMPDEST 00001943: POP 00001944: SWAP3 00001945: POP 00001946: SWAP3 00001947: SWAP1 00001948: POP 00001949: JUMP 0000194a: JUMPDEST 0000194b: PUSH32 0x45787465726e616c207472616e7366657220696e2073616665206d6f64650000 0000196c: PUSH1 0x00 0000196e: DUP3 0000196f: ADD 00001970: MSTORE 00001971: POP 00001972: JUMP 00001973: JUMPDEST 00001974: PUSH1 0x00 00001976: PUSH2 0x1980 00001979: PUSH1 0x1e 0000197b: DUP4 0000197c: PUSH2 0x131e 0000197f: JUMP 00001980: JUMPDEST 00001981: SWAP2 00001982: POP 00001983: PUSH2 0x198b 00001986: DUP3 00001987: PUSH2 0x194a 0000198a: JUMP 0000198b: JUMPDEST 0000198c: PUSH1 0x20 0000198e: DUP3 0000198f: ADD 00001990: SWAP1 00001991: POP 00001992: SWAP2 00001993: SWAP1 00001994: POP 00001995: JUMP 00001996: JUMPDEST 00001997: PUSH1 0x00 00001999: PUSH1 0x20 0000199b: DUP3 0000199c: ADD 0000199d: SWAP1 0000199e: POP 0000199f: DUP2 000019a0: DUP2 000019a1: SUB 000019a2: PUSH1 0x00 000019a4: DUP4 000019a5: ADD 000019a6: MSTORE 000019a7: PUSH2 0x19af 000019aa: DUP2 000019ab: PUSH2 0x1973 000019ae: JUMP 000019af: JUMPDEST 000019b0: SWAP1 000019b1: POP 000019b2: SWAP2 000019b3: SWAP1 000019b4: POP 000019b5: JUMP 000019b6: JUMPDEST 000019b7: PUSH32 0x5472616e73616374696f6e206578706972656400000000000000000000000000 000019d8: PUSH1 0x00 000019da: DUP3 000019db: ADD 000019dc: MSTORE 000019dd: POP 000019de: JUMP 000019df: JUMPDEST 000019e0: PUSH1 0x00 000019e2: PUSH2 0x19ec 000019e5: PUSH1 0x13 000019e7: DUP4 000019e8: PUSH2 0x131e 000019eb: JUMP 000019ec: JUMPDEST 000019ed: SWAP2 000019ee: POP 000019ef: PUSH2 0x19f7 000019f2: DUP3 000019f3: PUSH2 0x19b6 000019f6: JUMP 000019f7: JUMPDEST 000019f8: PUSH1 0x20 000019fa: DUP3 000019fb: ADD 000019fc: SWAP1 000019fd: POP 000019fe: SWAP2 000019ff: SWAP1 00001a00: POP 00001a01: JUMP 00001a02: JUMPDEST 00001a03: PUSH1 0x00 00001a05: PUSH1 0x20 00001a07: DUP3 00001a08: ADD 00001a09: SWAP1 00001a0a: POP 00001a0b: DUP2 00001a0c: DUP2 00001a0d: SUB 00001a0e: PUSH1 0x00 00001a10: DUP4 00001a11: ADD 00001a12: MSTORE 00001a13: PUSH2 0x1a1b 00001a16: DUP2 00001a17: PUSH2 0x19df 00001a1a: JUMP 00001a1b: JUMPDEST 00001a1c: SWAP1 00001a1d: POP 00001a1e: SWAP2 00001a1f: SWAP1 00001a20: POP 00001a21: JUMP 00001a22: JUMPDEST 00001a23: PUSH32 0x66697273745369676e65722073686f756c64206e6f7420626520657175616c20 00001a44: PUSH1 0x00 00001a46: DUP3 00001a47: ADD 00001a48: MSTORE 00001a49: PUSH32 0x746f207365636f6e645369676e65720000000000000000000000000000000000 00001a6a: PUSH1 0x20 00001a6c: DUP3 00001a6d: ADD 00001a6e: MSTORE 00001a6f: POP 00001a70: JUMP 00001a71: JUMPDEST 00001a72: PUSH1 0x00 00001a74: PUSH2 0x1a7e 00001a77: PUSH1 0x2f 00001a79: DUP4 00001a7a: PUSH2 0x131e 00001a7d: JUMP 00001a7e: JUMPDEST 00001a7f: SWAP2 00001a80: POP 00001a81: PUSH2 0x1a89 00001a84: DUP3 00001a85: PUSH2 0x1a22 00001a88: JUMP 00001a89: JUMPDEST 00001a8a: PUSH1 0x40 00001a8c: DUP3 00001a8d: ADD 00001a8e: SWAP1 00001a8f: POP 00001a90: SWAP2 00001a91: SWAP1 00001a92: POP 00001a93: JUMP 00001a94: JUMPDEST 00001a95: PUSH1 0x00 00001a97: PUSH1 0x20 00001a99: DUP3 00001a9a: ADD 00001a9b: SWAP1 00001a9c: POP 00001a9d: DUP2 00001a9e: DUP2 00001a9f: SUB 00001aa0: PUSH1 0x00 00001aa2: DUP4 00001aa3: ADD 00001aa4: MSTORE 00001aa5: PUSH2 0x1aad 00001aa8: DUP2 00001aa9: PUSH2 0x1a71 00001aac: JUMP 00001aad: JUMPDEST 00001aae: SWAP1 00001aaf: POP 00001ab0: SWAP2 00001ab1: SWAP1 00001ab2: POP 00001ab3: JUMP 00001ab4: JUMPDEST 00001ab5: PUSH32 0x66697273745369676e65722073686f756c64206e6f7420626520657175616c20 00001ad6: PUSH1 0x00 00001ad8: DUP3 00001ad9: ADD 00001ada: MSTORE 00001adb: PUSH32 0x746f206d73672e73656e64657200000000000000000000000000000000000000 00001afc: PUSH1 0x20 00001afe: DUP3 00001aff: ADD 00001b00: MSTORE 00001b01: POP 00001b02: JUMP 00001b03: JUMPDEST 00001b04: PUSH1 0x00 00001b06: PUSH2 0x1b10 00001b09: PUSH1 0x2d 00001b0b: DUP4 00001b0c: PUSH2 0x131e 00001b0f: JUMP 00001b10: JUMPDEST 00001b11: SWAP2 00001b12: POP 00001b13: PUSH2 0x1b1b 00001b16: DUP3 00001b17: PUSH2 0x1ab4 00001b1a: JUMP 00001b1b: JUMPDEST 00001b1c: PUSH1 0x40 00001b1e: DUP3 00001b1f: ADD 00001b20: SWAP1 00001b21: POP 00001b22: SWAP2 00001b23: SWAP1 00001b24: POP 00001b25: JUMP 00001b26: JUMPDEST 00001b27: PUSH1 0x00 00001b29: PUSH1 0x20 00001b2b: DUP3 00001b2c: ADD 00001b2d: SWAP1 00001b2e: POP 00001b2f: DUP2 00001b30: DUP2 00001b31: SUB 00001b32: PUSH1 0x00 00001b34: DUP4 00001b35: ADD 00001b36: MSTORE 00001b37: PUSH2 0x1b3f 00001b3a: DUP2 00001b3b: PUSH2 0x1b03 00001b3e: JUMP 00001b3f: JUMPDEST 00001b40: SWAP1 00001b41: POP 00001b42: SWAP2 00001b43: SWAP1 00001b44: POP 00001b45: JUMP 00001b46: JUMPDEST 00001b47: PUSH32 0x7365636f6e645369676e65722073686f756c64206e6f7420626520657175616c 00001b68: PUSH1 0x00 00001b6a: DUP3 00001b6b: ADD 00001b6c: MSTORE 00001b6d: PUSH32 0x20746f206d73672e73656e646572000000000000000000000000000000000000 00001b8e: PUSH1 0x20 00001b90: DUP3 00001b91: ADD 00001b92: MSTORE 00001b93: POP 00001b94: JUMP 00001b95: JUMPDEST 00001b96: PUSH1 0x00 00001b98: PUSH2 0x1ba2 00001b9b: PUSH1 0x2e 00001b9d: DUP4 00001b9e: PUSH2 0x131e 00001ba1: JUMP 00001ba2: JUMPDEST 00001ba3: SWAP2 00001ba4: POP 00001ba5: PUSH2 0x1bad 00001ba8: DUP3 00001ba9: PUSH2 0x1b46 00001bac: JUMP 00001bad: JUMPDEST 00001bae: PUSH1 0x40 00001bb0: DUP3 00001bb1: ADD 00001bb2: SWAP1 00001bb3: POP 00001bb4: SWAP2 00001bb5: SWAP1 00001bb6: POP 00001bb7: JUMP 00001bb8: JUMPDEST 00001bb9: PUSH1 0x00 00001bbb: PUSH1 0x20 00001bbd: DUP3 00001bbe: ADD 00001bbf: SWAP1 00001bc0: POP 00001bc1: DUP2 00001bc2: DUP2 00001bc3: SUB 00001bc4: PUSH1 0x00 00001bc6: DUP4 00001bc7: ADD 00001bc8: MSTORE 00001bc9: PUSH2 0x1bd1 00001bcc: DUP2 00001bcd: PUSH2 0x1b95 00001bd0: JUMP 00001bd1: JUMPDEST 00001bd2: SWAP1 00001bd3: POP 00001bd4: SWAP2 00001bd5: SWAP1 00001bd6: POP 00001bd7: JUMP 00001bd8: JUMPDEST 00001bd9: PUSH1 0x00 00001bdb: PUSH1 0x40 00001bdd: DUP3 00001bde: ADD 00001bdf: SWAP1 00001be0: POP 00001be1: PUSH2 0x1bed 00001be4: PUSH1 0x00 00001be6: DUP4 00001be7: ADD 00001be8: DUP6 00001be9: PUSH2 0x0eba 00001bec: JUMP 00001bed: JUMPDEST 00001bee: PUSH2 0x1bfa 00001bf1: PUSH1 0x20 00001bf3: DUP4 00001bf4: ADD 00001bf5: DUP5 00001bf6: PUSH2 0x0ed3 00001bf9: JUMP 00001bfa: JUMPDEST 00001bfb: SWAP4 00001bfc: SWAP3 00001bfd: POP 00001bfe: POP 00001bff: POP 00001c00: JUMP 00001c01: JUMPDEST 00001c02: PUSH1 0x00 00001c04: DUP2 00001c05: MLOAD 00001c06: SWAP1 00001c07: POP 00001c08: SWAP2 00001c09: SWAP1 00001c0a: POP 00001c0b: JUMP 00001c0c: JUMPDEST 00001c0d: PUSH1 0x00 00001c0f: PUSH2 0x1c17 00001c12: DUP3 00001c13: PUSH2 0x1c01 00001c16: JUMP 00001c17: JUMPDEST 00001c18: PUSH2 0x1c21 00001c1b: DUP2 00001c1c: DUP6 00001c1d: PUSH2 0x16b2 00001c20: JUMP 00001c21: JUMPDEST 00001c22: SWAP4 00001c23: POP 00001c24: PUSH2 0x1c31 00001c27: DUP2 00001c28: DUP6 00001c29: PUSH1 0x20 00001c2b: DUP7 00001c2c: ADD 00001c2d: PUSH2 0x13b1 00001c30: JUMP 00001c31: JUMPDEST 00001c32: DUP1 00001c33: DUP5 00001c34: ADD 00001c35: SWAP2 00001c36: POP 00001c37: POP 00001c38: SWAP3 00001c39: SWAP2 00001c3a: POP 00001c3b: POP 00001c3c: JUMP 00001c3d: JUMPDEST 00001c3e: PUSH1 0x00 00001c40: PUSH2 0x1c49 00001c43: DUP3 00001c44: DUP5 00001c45: PUSH2 0x1c0c 00001c48: JUMP 00001c49: JUMPDEST 00001c4a: SWAP2 00001c4b: POP 00001c4c: DUP2 00001c4d: SWAP1 00001c4e: POP 00001c4f: SWAP3 00001c50: SWAP2 00001c51: POP 00001c52: POP 00001c53: JUMP 00001c54: JUMPDEST 00001c55: PUSH2 0x1c5d 00001c58: DUP2 00001c59: PUSH2 0x0fe2 00001c5c: JUMP 00001c5d: JUMPDEST 00001c5e: DUP2 00001c5f: EQ 00001c60: PUSH2 0x1c68 00001c63: JUMPI 00001c64: PUSH1 0x00 00001c66: DUP1 00001c67: REVERT 00001c68: JUMPDEST 00001c69: POP 00001c6a: JUMP 00001c6b: JUMPDEST 00001c6c: PUSH1 0x00 00001c6e: DUP2 00001c6f: MLOAD 00001c70: SWAP1 00001c71: POP 00001c72: PUSH2 0x1c7a 00001c75: DUP2 00001c76: PUSH2 0x1c54 00001c79: JUMP 00001c7a: JUMPDEST 00001c7b: SWAP3 00001c7c: SWAP2 00001c7d: POP 00001c7e: POP 00001c7f: JUMP 00001c80: JUMPDEST 00001c81: PUSH1 0x00 00001c83: PUSH1 0x20 00001c85: DUP3 00001c86: DUP5 00001c87: SUB 00001c88: SLT 00001c89: ISZERO 00001c8a: PUSH2 0x1c96 00001c8d: JUMPI 00001c8e: PUSH2 0x1c95 00001c91: PUSH2 0x1018 00001c94: JUMP 00001c95: JUMPDEST 00001c96: JUMPDEST 00001c97: PUSH1 0x00 00001c99: PUSH2 0x1ca4 00001c9c: DUP5 00001c9d: DUP3 00001c9e: DUP6 00001c9f: ADD 00001ca0: PUSH2 0x1c6b 00001ca3: JUMP 00001ca4: JUMPDEST 00001ca5: SWAP2 00001ca6: POP 00001ca7: POP 00001ca8: SWAP3 00001ca9: SWAP2 00001caa: POP 00001cab: POP 00001cac: JUMP 00001cad: JUMPDEST 00001cae: PUSH32 0x5472616e7366657248656c7065723a3a736166655472616e736665723a207472 00001ccf: PUSH1 0x00 00001cd1: DUP3 00001cd2: ADD 00001cd3: MSTORE 00001cd4: PUSH32 0x616e73666572206661696c656400000000000000000000000000000000000000 00001cf5: PUSH1 0x20 00001cf7: DUP3 00001cf8: ADD 00001cf9: MSTORE 00001cfa: POP 00001cfb: JUMP 00001cfc: JUMPDEST 00001cfd: PUSH1 0x00 00001cff: PUSH2 0x1d09 00001d02: PUSH1 0x2d 00001d04: DUP4 00001d05: PUSH2 0x131e 00001d08: JUMP 00001d09: JUMPDEST 00001d0a: SWAP2 00001d0b: POP 00001d0c: PUSH2 0x1d14 00001d0f: DUP3 00001d10: PUSH2 0x1cad 00001d13: JUMP 00001d14: JUMPDEST 00001d15: PUSH1 0x40 00001d17: DUP3 00001d18: ADD 00001d19: SWAP1 00001d1a: POP 00001d1b: SWAP2 00001d1c: SWAP1 00001d1d: POP 00001d1e: JUMP 00001d1f: JUMPDEST 00001d20: PUSH1 0x00 00001d22: PUSH1 0x20 00001d24: DUP3 00001d25: ADD 00001d26: SWAP1 00001d27: POP 00001d28: DUP2 00001d29: DUP2 00001d2a: SUB 00001d2b: PUSH1 0x00 00001d2d: DUP4 00001d2e: ADD 00001d2f: MSTORE 00001d30: PUSH2 0x1d38 00001d33: DUP2 00001d34: PUSH2 0x1cfc 00001d37: JUMP 00001d38: JUMPDEST 00001d39: SWAP1 00001d3a: POP 00001d3b: SWAP2 00001d3c: SWAP1 00001d3d: POP 00001d3e: JUMP 00001d3f: JUMPDEST 00001d40: PUSH32 0x496e76616c6964207369676e6174757265202d2077726f6e67206c656e677468 00001d61: PUSH1 0x00 00001d63: DUP3 00001d64: ADD 00001d65: MSTORE 00001d66: POP 00001d67: JUMP 00001d68: JUMPDEST 00001d69: PUSH1 0x00 00001d6b: PUSH2 0x1d75 00001d6e: PUSH1 0x20 00001d70: DUP4 00001d71: PUSH2 0x131e 00001d74: JUMP 00001d75: JUMPDEST 00001d76: SWAP2 00001d77: POP 00001d78: PUSH2 0x1d80 00001d7b: DUP3 00001d7c: PUSH2 0x1d3f 00001d7f: JUMP 00001d80: JUMPDEST 00001d81: PUSH1 0x20 00001d83: DUP3 00001d84: ADD 00001d85: SWAP1 00001d86: POP 00001d87: SWAP2 00001d88: SWAP1 00001d89: POP 00001d8a: JUMP 00001d8b: JUMPDEST 00001d8c: PUSH1 0x00 00001d8e: PUSH1 0x20 00001d90: DUP3 00001d91: ADD 00001d92: SWAP1 00001d93: POP 00001d94: DUP2 00001d95: DUP2 00001d96: SUB 00001d97: PUSH1 0x00 00001d99: DUP4 00001d9a: ADD 00001d9b: MSTORE 00001d9c: PUSH2 0x1da4 00001d9f: DUP2 00001da0: PUSH2 0x1d68 00001da3: JUMP 00001da4: JUMPDEST 00001da5: SWAP1 00001da6: POP 00001da7: SWAP2 00001da8: SWAP1 00001da9: POP 00001daa: JUMP 00001dab: JUMPDEST 00001dac: PUSH1 0x00 00001dae: PUSH2 0x1db6 00001db1: DUP3 00001db2: PUSH2 0x167b 00001db5: JUMP 00001db6: JUMPDEST 00001db7: SWAP2 00001db8: POP 00001db9: PUSH2 0x1dc1 00001dbc: DUP4 00001dbd: PUSH2 0x167b 00001dc0: JUMP 00001dc1: JUMPDEST 00001dc2: SWAP3 00001dc3: POP 00001dc4: DUP3 00001dc5: PUSH1 0xff 00001dc7: SUB 00001dc8: DUP3 00001dc9: GT 00001dca: ISZERO 00001dcb: PUSH2 0x1dd7 00001dce: JUMPI 00001dcf: PUSH2 0x1dd6 00001dd2: PUSH2 0x164c 00001dd5: JUMP 00001dd6: JUMPDEST 00001dd7: JUMPDEST 00001dd8: DUP3 00001dd9: DUP3 00001dda: ADD 00001ddb: SWAP1 00001ddc: POP 00001ddd: SWAP3 00001dde: SWAP2 00001ddf: POP 00001de0: POP 00001de1: JUMP 00001de2: JUMPDEST 00001de3: PUSH32 0x45434453413a20696e76616c6964207369676e6174757265202773272076616c 00001e04: PUSH1 0x00 00001e06: DUP3 00001e07: ADD 00001e08: MSTORE 00001e09: PUSH32 0x7565000000000000000000000000000000000000000000000000000000000000 00001e2a: PUSH1 0x20 00001e2c: DUP3 00001e2d: ADD 00001e2e: MSTORE 00001e2f: POP 00001e30: JUMP 00001e31: JUMPDEST 00001e32: PUSH1 0x00 00001e34: PUSH2 0x1e3e 00001e37: PUSH1 0x22 00001e39: DUP4 00001e3a: PUSH2 0x131e 00001e3d: JUMP 00001e3e: JUMPDEST 00001e3f: SWAP2 00001e40: POP 00001e41: PUSH2 0x1e49 00001e44: DUP3 00001e45: PUSH2 0x1de2 00001e48: JUMP 00001e49: JUMPDEST 00001e4a: PUSH1 0x40 00001e4c: DUP3 00001e4d: ADD 00001e4e: SWAP1 00001e4f: POP 00001e50: SWAP2 00001e51: SWAP1 00001e52: POP 00001e53: JUMP 00001e54: JUMPDEST 00001e55: PUSH1 0x00 00001e57: PUSH1 0x20 00001e59: DUP3 00001e5a: ADD 00001e5b: SWAP1 00001e5c: POP 00001e5d: DUP2 00001e5e: DUP2 00001e5f: SUB 00001e60: PUSH1 0x00 00001e62: DUP4 00001e63: ADD 00001e64: MSTORE 00001e65: PUSH2 0x1e6d 00001e68: DUP2 00001e69: PUSH2 0x1e31 00001e6c: JUMP 00001e6d: JUMPDEST 00001e6e: SWAP1 00001e6f: POP 00001e70: SWAP2 00001e71: SWAP1 00001e72: POP 00001e73: JUMP 00001e74: JUMPDEST 00001e75: PUSH2 0x1e7d 00001e78: DUP2 00001e79: PUSH2 0x167b 00001e7c: JUMP 00001e7d: JUMPDEST 00001e7e: DUP3 00001e7f: MSTORE 00001e80: POP 00001e81: POP 00001e82: JUMP 00001e83: JUMPDEST 00001e84: PUSH1 0x00 00001e86: PUSH1 0x80 00001e88: DUP3 00001e89: ADD 00001e8a: SWAP1 00001e8b: POP 00001e8c: PUSH2 0x1e98 00001e8f: PUSH1 0x00 00001e91: DUP4 00001e92: ADD 00001e93: DUP8 00001e94: PUSH2 0x17ca 00001e97: JUMP 00001e98: JUMPDEST 00001e99: PUSH2 0x1ea5 00001e9c: PUSH1 0x20 00001e9e: DUP4 00001e9f: ADD 00001ea0: DUP7 00001ea1: PUSH2 0x1e74 00001ea4: JUMP 00001ea5: JUMPDEST 00001ea6: PUSH2 0x1eb2 00001ea9: PUSH1 0x40 00001eab: DUP4 00001eac: ADD 00001ead: DUP6 00001eae: PUSH2 0x17ca 00001eb1: JUMP 00001eb2: JUMPDEST 00001eb3: PUSH2 0x1ebf 00001eb6: PUSH1 0x60 00001eb8: DUP4 00001eb9: ADD 00001eba: DUP5 00001ebb: PUSH2 0x17ca 00001ebe: JUMP 00001ebf: JUMPDEST 00001ec0: SWAP6 00001ec1: SWAP5 00001ec2: POP 00001ec3: POP 00001ec4: POP 00001ec5: POP 00001ec6: POP 00001ec7: JUMP 00001ec8: INVALID 00001ec9: LOG2 00001eca: PUSH5 0x6970667358 00001ed0: UNKNOWN(0x22) 00001ed1: SLT 00001ed2: KECCAK256 00001ed3: UNKNOWN(0xE5) 00001ed4: CREATE 00001ed5: UNKNOWN(0x24) 00001ed6: PUSH18 0xcb504d4202a33beec6b0f39443b2e6a9c8d1 00001ee9: UNKNOWN(0xD2) 00001eea: JUMPDEST 00001eeb: PUSH8 0xb9dfe53ca596b264 00001ef4: PUSH20
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x09ad2cad57dd6e85e4a62d33293152746286c869ee34d34cc39c9e02edf21325
call_targets:
0x0d424072d658e6abd92c36f8fc16fd6479ae15a0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x09ad2cad57dd6e85e4a62d33293152746286c869ee34d34cc39c9e02edf21325",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0d424072d658e6abd92c36f8fc16fd6479ae15a0"
],
"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": "0xabe3219c",
"selector": "0xabe3219c",
"calldata_variants": [
"0xabe3219c",
"0xabe3219c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc6044c46",
"selector": "0xc6044c46",
"calldata_variants": [
"0xc6044c46",
"0xc6044c460000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xca34837b",
"selector": "0xca34837b",
"calldata_variants": [
"0xca34837b",
"0xca34837b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0f392d",
"selector": "0xfc0f392d",
"calldata_variants": [
"0xfc0f392d",
"0xfc0f392d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x158ef93e",
"selector": "0x158ef93e",
"calldata_variants": [
"0x158ef93e",
"0x158ef93e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x72276991",
"selector": "0x72276991",
"calldata_variants": [
"0x72276991",
"0x722769910000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x736c0d5b",
"selector": "0x736c0d5b",
"calldata_variants": [
"0x736c0d5b",
"0x736c0d5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7df73e27",
"selector": "0x7df73e27",
"calldata_variants": [
"0x7df73e27",
"0x7df73e270000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1653,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3172,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x09ad2cad57dd6e85e4a62d33293152746286c869ee34d34cc39c9e02edf21325
call_targets:
0x0d424072d658e6abd92c36f8fc16fd6479ae15a0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x09ad2cad57dd6e85e4a62d33293152746286c869ee34d34cc39c9e02edf21325",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0d424072d658e6abd92c36f8fc16fd6479ae15a0"
],
"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": "0xabe3219c",
"selector": "0xabe3219c",
"calldata_variants": [
"0xabe3219c",
"0xabe3219c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc6044c46",
"selector": "0xc6044c46",
"calldata_variants": [
"0xc6044c46",
"0xc6044c460000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xca34837b",
"selector": "0xca34837b",
"calldata_variants": [
"0xca34837b",
"0xca34837b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0f392d",
"selector": "0xfc0f392d",
"calldata_variants": [
"0xfc0f392d",
"0xfc0f392d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x158ef93e",
"selector": "0x158ef93e",
"calldata_variants": [
"0x158ef93e",
"0x158ef93e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x72276991",
"selector": "0x72276991",
"calldata_variants": [
"0x72276991",
"0x722769910000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x736c0d5b",
"selector": "0x736c0d5b",
"calldata_variants": [
"0x736c0d5b",
"0x736c0d5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7df73e27",
"selector": "0x7df73e27",
"calldata_variants": [
"0x7df73e27",
"0x7df73e270000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1653,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3172,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x51ee79e2df28d185f89a7621274faa2451111a457300891c72bea637efb44d39
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 16,
"trace_id": "0x51ee79e2df28d185f89a7621274faa2451111a457300891c72bea637efb44d39",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xabe3219c",
"selector": "0xabe3219c",
"calldata_variants": [
"0xabe3219c",
"0xabe3219c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc6044c46",
"selector": "0xc6044c46",
"calldata_variants": [
"0xc6044c46",
"0xc6044c460000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xca34837b",
"selector": "0xca34837b",
"calldata_variants": [
"0xca34837b",
"0xca34837b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc0f392d",
"selector": "0xfc0f392d",
"calldata_variants": [
"0xfc0f392d",
"0xfc0f392d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x158ef93e",
"selector": "0x158ef93e",
"calldata_variants": [
"0x158ef93e",
"0x158ef93e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x72276991",
"selector": "0x72276991",
"calldata_variants": [
"0x72276991",
"0x722769910000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x736c0d5b",
"selector": "0x736c0d5b",
"calldata_variants": [
"0x736c0d5b",
"0x736c0d5b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7df73e27",
"selector": "0x7df73e27",
"calldata_variants": [
"0x7df73e27",
"0x7df73e270000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 0
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 1,
"create2_count": 0
}
|