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

Analysis Run

b7d05de1-6621-40c5-ac41-867be4e9149a

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 1, 2026 3:54 PM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Present
Best current signal
Unprotected initializer allows attacker to seize signer set and drain funds if uninitialized
crit 0 high 0 proxy context implementation known
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31070 report.consolidate complete 1 / 1 3 months ago
76234 artifact.fetch complete 1 / 3 1 week ago
76235 tool.cast_disasm complete 1 / 3 1 week ago
76236 analysis.bundle complete 1 / 3 1 week ago
76237 capability.graph complete 1 / 3 1 week ago
76238 detector.run complete 1 / 3 1 week ago
76239 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
The runtime exposes an unprotected initializer; if the contract is still uninitialized, an attacker can set themselves as signers and then execute ETH/ERC20 transfers to drain funds.
View stderr
[codex:1057338] OpenAI Codex v0.77.0 (research preview)
[codex:1057338] --------
[codex:1057338] workdir: /tmp/codex-multi-ij94vfwy
[codex:1057338] model: gpt-5.2-codex
[codex:1057338] provider: openai
[codex:1057338] approval: never
[codex:1057338] sandbox: read-only
[codex:1057338] reasoning effort: xhigh
[codex:1057338] reasoning summaries: auto
[codex:1057338] session id: 019b7a3c-8397-7003-8f72-5065ba094897
[codex:1057338] --------
[codex:1057338] user
[codex:1057338] 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:1057338] 
[codex:1057338] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1057338] 
[codex:1057338] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1057338] - Gas inefficiency, code quality, or best practices
[codex:1057338] - Theoretical vulnerabilities without a clear extraction path
[codex:1057338] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1057338] - Issues requiring social engineering or off-chain coordination
[codex:1057338] 
[codex:1057338] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1057338] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1057338] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1057338] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1057338] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1057338] - External calls before state updates (reentrancy)
[codex:1057338] - SELFDESTRUCT with controllable beneficiary
[codex:1057338] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1057338] 
[codex:1057338] For each finding, you MUST explain:
[codex:1057338] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1057338] 2. The concrete sequence of transactions to extract value
[codex:1057338] 3. Why you believe this is exploitable (not just suspicious)
[codex:1057338] 
[codex:1057338] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1057338] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1057338] 
[codex:1057338] Output MUST be valid JSON matching the provided schema.
[codex:1057338] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1057338] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1057338] mcp startup: no servers
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Checking for relevant skills and files**
[codex:1057338] exec
[codex:1057338] /bin/bash -lc ls in /tmp/codex-multi-ij94vfwy succeeded in 5ms:
[codex:1057338] BYTECODE_BUNDLE.txt
[codex:1057338] codex-output-schema.json
[codex:1057338] exec
[codex:1057338] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-ij94vfwy succeeded in 6ms:
[codex:1057338] Runtime bytecode bundle for best-effort auditing.
[codex:1057338] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1057338] 
[codex:1057338] FILE: runtime_bytecode.hex
[codex:1057338] 0x60806040526004361061007f5760003560e01c8063abe3219c1161004e578063abe3219c146101e1578063c6044c461461020c578063ca34837b14610235578063fc0f392d1461025e576100c9565b8063158ef93e14610113578063722769911461013e578063736c0d5b146101675780637df73e27146101a4576100c9565b366100c95760003411156100c7577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f033346040516100be929190610f19565b60405180910390a15b005b6000341115610111577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f033346000366040516101089493929190610fa2565b60405180910390a15b005b34801561011f57600080fd5b50610128610275565b6040516101359190610ffd565b60405180910390f35b34801561014a57600080fd5b50610165600480360381019061016091906110a1565b610286565b005b34801561017357600080fd5b5061018e60048036038101906101899190611138565b610329565b60405161019b9190610ffd565b60405180910390f35b3480156101b057600080fd5b506101cb60048036038101906101c69190611138565b610349565b6040516101d89190610ffd565b60405180910390f35b3480156101ed57600080fd5b506101f661039e565b6040516102039190610ffd565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e91906111c5565b6103b1565b005b34801561024157600080fd5b5061025c60048036038101906102579190611268565b6105a3565b005b34801561026a57600080fd5b5061027361073f565b005b60018054906101000a900460ff1681565b61028f33610349565b6102ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c59061137b565b60405180910390fd5b60006102d86107da565b868686866040516020016102f095949392919061147e565b60405160208183030381529060405280519060200120905061031486828486610817565b5050610321848787610bd6565b505050505050565b60006020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600160009054906101000a900460ff1681565b60018054906101000a900460ff16156103ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f690611525565b60405180910390fd5b60058282905014610445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043c90611591565b60405180910390fd5b60005b828290508160ff16101561058457600073ffffffffffffffffffffffffffffffffffffffff1683838360ff16818110610484576104836115b1565b5b90506020020160208101906104999190611138565b73ffffffffffffffffffffffffffffffffffffffff1614156104f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e79061162c565b60405180910390fd5b600160008085858560ff1681811061050b5761050a6115b1565b5b90506020020160208101906105209190611138565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061057c90611688565b915050610448565b5060018060016101000a81548160ff0219169083151502179055505050565b6105ac33610349565b6105eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e29061137b565b60405180910390fd5b60006105f5610d0c565b878787878760405160200161060f969594939291906116e2565b60405160208183030381529060405280519060200120905060008061063689848688610817565b809250819350505060008973ffffffffffffffffffffffffffffffffffffffff1689898960405161066892919061173b565b60006040518083038185875af1925050503d80600081146106a5576040519150601f19603f3d011682016040523d82523d6000602084013e6106aa565b606091505b50509050806106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e5906117a0565b60405180910390fd5b7f41c66bdacda1c924feabe80d3771ca4928b814ee4ebf1ddc230b10eaa2966dc1338484878e8e8e8e60405161072b9897969594939291906117d9565b60405180910390a150505050505050505050565b61074833610349565b610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077e9061137b565b60405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a91157336040516107d09190611851565b60405180910390a1565b60606040518060400160405280600581526020017f4552433230000000000000000000000000000000000000000000000000000000815250905090565b6000806002801461085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610854906118b8565b60405180910390fd5b60006108cf8686600060028110610877576108766115b1565b5b60200281019061088791906118e7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610d49565b9050600061094387876001600281106108eb576108ea6115b1565b5b6020028101906108fb91906118e7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610d49565b9050600160009054906101000a900460ff161580610966575061096588610349565b5b6109a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099c90611996565b60405180910390fd5b428510156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90611a02565b60405180910390fd5b6109f182610349565b610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a279061162c565b60405180910390fd5b610a3981610349565b610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f9061162c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade90611a94565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90611b26565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc90611bb8565b60405180910390fd5b818193509350505094509492505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610c08929190611bd8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c569190611c3d565b6000604051808303816000865af19150503d8060008114610c93576040519150601f19603f3d011682016040523d82523d6000602084013e610c98565b606091505b5091509150818015610cc65750600081511480610cc5575080806020019051810190610cc49190611c80565b5b5b610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90611d1f565b60405180910390fd5b5050505050565b60606040518060400160405280600581526020017f4554484552000000000000000000000000000000000000000000000000000000815250905090565b60006041825114610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8690611d8b565b60405180910390fd5b6000806000602085015192506040850151915060ff6041860151169050601b8160ff161015610dc857601b81610dc59190611dab565b90505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c1115610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2590611e54565b60405180910390fd5b60018682858560405160008152602001604052604051610e519493929190611e83565b6020604051602081039080840390855afa158015610e73573d6000803e3d6000fd5b50505060206040510351935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610eb382610e88565b9050919050565b610ec381610ea8565b82525050565b6000819050919050565b610edc81610ec9565b82525050565b600082825260208201905092915050565b50565b6000610f03600083610ee2565b9150610f0e82610ef3565b600082019050919050565b6000606082019050610f2e6000830185610eba565b610f3b6020830184610ed3565b8181036040830152610f4c81610ef6565b90509392505050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610f818385610ee2565b9350610f8e838584610f55565b610f9783610f64565b840190509392505050565b6000606082019050610fb76000830187610eba565b610fc46020830186610ed3565b8181036040830152610fd7818486610f75565b905095945050505050565b60008115159050919050565b610ff781610fe2565b82525050565b60006020820190506110126000830184610fee565b92915050565b600080fd5b600080fd5b61102b81610ea8565b811461103657600080fd5b50565b60008135905061104881611022565b92915050565b61105781610ec9565b811461106257600080fd5b50565b6000813590506110748161104e565b92915050565b600080fd5b60008190508260206002028201111561109b5761109a61107a565b5b92915050565b600080600080600060a086880312156110bd576110bc611018565b5b60006110cb88828901611039565b95505060206110dc88828901611065565b94505060406110ed88828901611039565b93505060606110fe88828901611065565b925050608086013567ffffffffffffffff81111561111f5761111e61101d565b5b61112b8882890161107f565b9150509295509295909350565b60006020828403121561114e5761114d611018565b5b600061115c84828501611039565b91505092915050565b600080fd5b600080fd5b60008083601f84011261118557611184611165565b5b8235905067ffffffffffffffff8111156111a2576111a161116a565b5b6020830191508360208202830111156111be576111bd61107a565b5b9250929050565b600080602083850312156111dc576111db611018565b5b600083013567ffffffffffffffff8111156111fa576111f961101d565b5b6112068582860161116f565b92509250509250929050565b60008083601f84011261122857611227611165565b5b8235905067ffffffffffffffff8111156112455761124461116a565b5b6020830191508360018202830111156112615761126061107a565b5b9250929050565b60008060008060008060a0878903121561128557611284611018565b5b600061129389828a01611039565b96505060206112a489828a01611065565b955050604087013567ffffffffffffffff8111156112c5576112c461101d565b5b6112d189828a01611212565b945094505060606112e489828a01611065565b925050608087013567ffffffffffffffff8111156113055761130461101d565b5b61131189828a0161107f565b9150509295509295509295565b600082825260208201905092915050565b7f4e6f6e2d7369676e657220696e206f6e6c795369676e6572206d6574686f6400600082015250565b6000611365601f8361131e565b91506113708261132f565b602082019050919050565b6000602082019050818103600083015261139481611358565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156113cf5780820151818401526020810190506113b4565b838111156113de576000848401525b50505050565b60006113ef8261139b565b6113f981856113a6565b93506114098185602086016113b1565b80840191505092915050565b60008160601b9050919050565b600061142d82611415565b9050919050565b600061143f82611422565b9050919050565b61145761145282610ea8565b611434565b82525050565b6000819050919050565b61147861147382610ec9565b61145d565b82525050565b600061148a82886113e4565b91506114968287611446565b6014820191506114a68286611467565b6020820191506114b68285611446565b6014820191506114c68284611467565b6020820191508190509695505050505050565b7f436f6e747261637420616c726561647920696e697469616c697a656400000000600082015250565b600061150f601c8361131e565b915061151a826114d9565b602082019050919050565b6000602082019050818103600083015261153e81611502565b9050919050565b7f496e76616c6964206e756d626572206f66207369676e65727300000000000000600082015250565b600061157b60198361131e565b915061158682611545565b602082019050919050565b600060208201905081810360008301526115aa8161156e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c6964207369676e6572000000000000000000000000000000000000600082015250565b6000611616600e8361131e565b9150611621826115e0565b602082019050919050565b6000602082019050818103600083015261164581611609565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff82169050919050565b60006116938261167b565b915060ff8214156116a7576116a661164c565b5b600182019050919050565b600081905092915050565b60006116c983856116b2565b93506116d6838584610f55565b82840190509392505050565b60006116ee82896113e4565b91506116fa8288611446565b60148201915061170a8287611467565b60208201915061171b8285876116bd565b91506117278284611467565b602082019150819050979650505050505050565b60006117488284866116bd565b91508190509392505050565b7f43616c6c20657865637574696f6e206661696c65640000000000000000000000600082015250565b600061178a60158361131e565b915061179582611754565b602082019050919050565b600060208201905081810360008301526117b98161177d565b9050919050565b6000819050919050565b6117d3816117c0565b82525050565b600060e0820190506117ee600083018b610eba565b6117fb602083018a610eba565b6118086040830189610eba565b61181560608301886117ca565b6118226080830187610eba565b61182f60a0830186610ed3565b81810360c0830152611842818486610f75565b90509998505050505050505050565b60006020820190506118666000830184610eba565b92915050565b7f7369676e6174757265206e656564203200000000000000000000000000000000600082015250565b60006118a260108361131e565b91506118ad8261186c565b602082019050919050565b600060208201905081810360008301526118d181611895565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112611904576119036118d8565b5b80840192508235915067ffffffffffffffff821115611926576119256118dd565b5b602083019250600182023603831315611942576119416118e2565b5b509250929050565b7f45787465726e616c207472616e7366657220696e2073616665206d6f64650000600082015250565b6000611980601e8361131e565b915061198b8261194a565b602082019050919050565b600060208201905081810360008301526119af81611973565b9050919050565b7f5472616e73616374696f6e206578706972656400000000000000000000000000600082015250565b60006119ec60138361131e565b91506119f7826119b6565b602082019050919050565b60006020820190508181036000830152611a1b816119df565b9050919050565b7f66697273745369676e65722073686f756c64206e6f7420626520657175616c2060008201527f746f207365636f6e645369676e65720000000000000000000000000000000000602082015250565b6000611a7e602f8361131e565b9150611a8982611a22565b604082019050919050565b60006020820190508181036000830152611aad81611a71565b9050919050565b7f66697273745369676e65722073686f756c64206e6f7420626520657175616c2060008201527f746f206d73672e73656e64657200000000000000000000000000000000000000602082015250565b6000611b10602d8361131e565b9150611b1b82611ab4565b604082019050919050565b60006020820190508181036000830152611b3f81611b03565b9050919050565b7f7365636f6e645369676e65722073686f756c64206e6f7420626520657175616c60008201527f20746f206d73672e73656e646572000000000000000000000000000000000000602082015250565b6000611ba2602e8361131e565b9150611bad82611b46565b604082019050919050565b60006020820190508181036000830152611bd181611b95565b9050919050565b6000604082019050611bed6000830185610eba565b611bfa6020830184610ed3565b9392505050565b600081519050919050565b6000611c1782611c01565b611c2181856116b2565b9350611c318185602086016113b1565b80840191505092915050565b6000611c498284611c0c565b915081905092915050565b611c5d81610fe2565b8114611c6857600080fd5b50565b600081519050611c7a81611c54565b92915050565b600060208284031215611c9657611c95611018565b5b6000611ca484828501611c6b565b91505092915050565b7f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260008201527f616e73666572206661696c656400000000000000000000000000000000000000602082015250565b6000611d09602d8361131e565b9150611d1482611cad565b604082019050919050565b60006020820190508181036000830152611d3881611cfc565b9050919050565b7f496e76616c6964207369676e6174757265202d2077726f6e67206c656e677468600082015250565b6000611d7560208361131e565b9150611d8082611d3f565b602082019050919050565b60006020820190508181036000830152611da481611d68565b9050919050565b6000611db68261167b565b9150611dc18361167b565b92508260ff03821115611dd757611dd661164c565b5b828201905092915050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e3e60228361131e565b9150611e4982611de2565b604082019050919050565b60006020820190508181036000830152611e6d81611e31565b9050919050565b611e7d8161167b565b82525050565b6000608082019050611e9860008301876117ca565b611ea56020830186611e74565b611eb260408301856117ca565b611ebf60608301846117ca565b9594505050505056fea2646970667358221220e5f02471cb504d4202a33beec6b0f39443b2e6a9c8d1d25b67b9dfe53ca596b264736f6c634300080a0033
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing bytecode for exploits**
[codex:1057338] 
[codex:1057338] I’m carefully dissecting this multi-signature wallet bytecode, mapping function selectors and key strings to understand its behavior and security checks. I’m aiming to identify any concrete exploit paths like unprotected withdrawals or flawed signature verifications by simulating disassembly and storage decoding, all without external tools or network access.
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import sys
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].strip()
[codex:1057338] # extract hex after 0x
[codex:1057338] import re
[codex:1057338] m=re.search(r'0x[0-9a-fA-F]+', hexdata)
[codex:1057338] if not m:
[codex:1057338]     print('no hex')
[codex:1057338]     sys.exit(1)
[codex:1057338] code=m.group(0)[2:]
[codex:1057338] # opcode map
[codex:1057338] opcodes={
[codex:1057338] 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:1057338] 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:1057338] 0x20:'SHA3',
[codex:1057338] 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:1057338] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057338] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057338] }
[codex:1057338] # disassemble
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] # We'll print jumps with offsets and opcodes, plus push data.
[codex:1057338] # To keep output manageable, limit to first 600 bytes? but we need entire.
[codex:1057338] # We'll generate to file? print all with offsets.
[codex:1057338] 
[codex:1057338] for i in range(len(b)):
[codex:1057338]     pass
[codex:1057338] 
[codex:1057338] i=0
[codex:1057338] lines=[]
[codex:1057338] while i<len(b):
[codex:1057338]     op=b[i]
[codex:1057338]     name=opcodes.get(op,'UNKNOWN')
[codex:1057338]     if 0x60 <= op <= 0x7f:
[codex:1057338]         n=op-0x5f
[codex:1057338]         data=b[i+1:i+1+n]
[codex:1057338]         lines.append(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:1057338]         i+=1+n
[codex:1057338]     else:
[codex:1057338]         lines.append(f\"{i:04x}: {name}\")
[codex:1057338]         i+=1
[codex:1057338] 
[codex:1057338] # print to stdout some lines around interesting functions maybe? For now print all.
[codex:1057338] for line in lines:
[codex:1057338]     print(line)
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 30ms:
[codex:1057338] 0000: PUSH1 0x80
[codex:1057338] 0002: PUSH1 0x40
[codex:1057338] 0004: MSTORE
[codex:1057338] 0005: PUSH1 0x04
[codex:1057338] 0007: CALLDATASIZE
[codex:1057338] 0008: LT
[codex:1057338] 0009: PUSH2 0x007f
[codex:1057338] 000c: JUMPI
[codex:1057338] 000d: PUSH1 0x00
[codex:1057338] 000f: CALLDATALOAD
[codex:1057338] 0010: PUSH1 0xe0
[codex:1057338] 0012: SHR
[codex:1057338] 0013: DUP1
[codex:1057338] 0014: PUSH4 0xabe3219c
[codex:1057338] 0019: GT
[codex:1057338] 001a: PUSH2 0x004e
[codex:1057338] 001d: JUMPI
[codex:1057338] 001e: DUP1
[codex:1057338] 001f: PUSH4 0xabe3219c
[codex:1057338] 0024: EQ
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing storage and initialization functions**
[codex:1057338] 
[codex:1057338] I'm carefully dissecting the bytecode to understand how mappings like address-to-bool and initialization state are stored in slots 0 and 1. I’m inspecting key functions for signer management and contract initialization to see if access controls or checks might be missing that could lead to exploitation, especially around uninitialized state scenarios or duplicate signer prevention. This feels intricate, but I want to be sure about any concrete exploit paths related to these low-level details.
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] from collections import deque
[codex:1057338] # parse bytecode
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].strip()
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] code_bytes=bytes.fromhex(code)
[codex:1057338] # disassemble into list of (pc, op, arg)
[codex:1057338] opnames={
[codex:1057338] 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:1057338] 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:1057338] 0x20:'SHA3',
[codex:1057338] 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:1057338] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057338] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057338] }
[codex:1057338] 
[codex:1057338] # build list
[codex:1057338] ops=[]
[codex:1057338] i=0
[codex:1057338] while i<len(code_bytes):
[codex:1057338]     op=code_bytes[i]
[codex:1057338]     name=opnames.get(op,'UNKNOWN')
[codex:1057338]     if 0x60 <= op <= 0x7f:
[codex:1057338]         n=op-0x5f
[codex:1057338]         data=code_bytes[i+1:i+1+n]
[codex:1057338]         ops.append((i,name,data))
[codex:1057338]         i+=1+n
[codex:1057338]     else:
[codex:1057338]         ops.append((i,name,None))
[codex:1057338]         i+=1
[codex:1057338] 
[codex:1057338] # extract region around pc 0x0349 to 0x039d
[codex:1057338] region=[op for op in ops if 0x0349 <= op[0] <= 0x039d]
[codex:1057338] # simple symbolic stack simulation
[codex:1057338] stack=['addr']  # initial parameter
[codex:1057338] 
[codex:1057338] # helper
[codex:1057338] sym_id=0
[codex:1057338] def sym(name):
[codex:1057338]     global sym_id
[codex:1057338]     sym_id+=1
[codex:1057338]     return f\"{name}{sym_id}\"
[codex:1057338] 
[codex:1057338] for pc,name,data in region:
[codex:1057338]     # print before
[codex:1057338]     print(f\"{pc:04x}: {name} {data.hex() if data else ''} | stack: {stack}\")
[codex:1057338]     # execute minimal operations
[codex:1057338]     if name.startswith('PUSH'):
[codex:1057338]         stack.append('0x'+data.hex())
[codex:1057338]     elif name.startswith('DUP'):
[codex:1057338]         n=int(name[3:])
[codex:1057338]         stack.append(stack[-n])
[codex:1057338]     elif name.startswith('SWAP'):
[codex:1057338]         n=int(name[4:])
[codex:1057338]         stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
[codex:1057338]     elif name=='POP':
[codex:1057338]         stack.pop()
[codex:1057338]     elif name in ('AND','OR','XOR','ADD','SUB','MUL','DIV','EQ','LT','GT','ISZERO'):
[codex:1057338]         b=stack.pop(); a=stack.pop();
[codex:1057338]         stack.append(f\"({a} {name} {b})\")
[codex:1057338]     elif name in ('MSTORE','SLOAD','SHA3'):
[codex:1057338]         # pop necessary
[codex:1057338]         if name=='MSTORE':
[codex:1057338]             val=stack.pop(); off=stack.pop();
[codex:1057338]             # ignore mem
[codex:1057338]         elif name=='SLOAD':
[codex:1057338]             key=stack.pop(); stack.append(f\"SLOAD[{key}]\")
[codex:1057338]         elif name=='SHA3':
[codex:1057338]             sz=stack.pop(); off=stack.pop();
[codex:1057338]             stack.append(f\"keccak({off},{sz})\")
[codex:1057338]     elif name=='JUMP':
[codex:1057338]         pass
[codex:1057338]     else:
[codex:1057338]         # for other ops, just pop appropriate? ignore
[codex:1057338]         pass
[codex:1057338] 
[codex:1057338] print('final stack', stack)
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 32ms:
[codex:1057338] 0349: JUMPDEST  | stack: ['addr']
[codex:1057338] 034a: PUSH1 00 | stack: ['addr']
[codex:1057338] 034c: DUP1  | stack: ['addr', '0x00']
[codex:1057338] 034d: PUSH1 00 | stack: ['addr', '0x00', '0x00']
[codex:1057338] 034f: DUP4  | stack: ['addr', '0x00', '0x00', '0x00']
[codex:1057338] 0350: PUSH20 ffffffffffffffffffffffffffffffffffffffff | stack: ['addr', '0x00', '0x00', '0x00', 'addr']
[codex:1057338] 0365: AND  | stack: ['addr', '0x00', '0x00', '0x00', 'addr', '0xffffffffffffffffffffffffffffffffffffffff']
[codex:1057338] 0366: PUSH20 ffffffffffffffffffffffffffffffffffffffff | stack: ['addr', '0x00', '0x00', '0x00', '(addr AND 0xffffffffffffffffffffffffffffffffffffffff)']
[codex:1057338] 037b: AND  | stack: ['addr', '0x00', '0x00', '0x00', '(addr AND 0xffffffffffffffffffffffffffffffffffffffff)', '0xffffffffffffffffffffffffffffffffffffffff']
[codex:1057338] 037c: DUP2  | stack: ['addr', '0x00', '0x00', '0x00', '((addr AND 0xffffffffffffffffffffffffffffffffffffffff) AND 0xffffffffffffffffffffffffffffffffffffffff)']
[codex:1057338] 037d: MSTORE  | stack: ['addr', '0x00', '0x00', '0x00', '((addr AND 0xffffffffffffffffffffffffffffffffffffffff) AND 0xffffffffffffffffffffffffffffffffffffffff)', '0x00']
[codex:1057338] 037e: PUSH1 20 | stack: ['addr', '0x00', '0x00', '0x00']
[codex:1057338] 0380: ADD  | stack: ['addr', '0x00', '0x00', '0x00', '0x20']
[codex:1057338] 0381: SWAP1  | stack: ['addr', '0x00', '0x00', '(0x00 ADD 0x20)']
[codex:1057338] 0382: DUP2  | stack: ['addr', '0x00', '(0x00 ADD 0x20)', '0x00']
[codex:1057338] 0383: MSTORE  | stack: ['addr', '0x00', '(0x00 ADD 0x20)', '0x00', '(0x00 ADD 0x20)']
[codex:1057338] 0384: PUSH1 20 | stack: ['addr', '0x00', '(0x00 ADD 0x20)']
[codex:1057338] 0386: ADD  | stack: ['addr', '0x00', '(0x00 ADD 0x20)', '0x20']
[codex:1057338] 0387: PUSH1 00 | stack: ['addr', '0x00', '((0x00 ADD 0x20) ADD 0x20)']
[codex:1057338] 0389: SHA3  | stack: ['addr', '0x00', '((0x00 ADD 0x20) ADD 0x20)', '0x00']
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing stack operations and function calling conventions**
[codex:1057338] 
[codex:1057338] I'm carefully simulating the function at 0x0349, trying to understand its stack usage and how it checks if an address is a signer. The call pattern involves pushing a return destination and caller address before jumping, so the stack has more items than initially assumed. I’m stepping through the instructions manually to clarify memory stores and verify the boolean return and jump behavior. This will help me better grasp the function's logic and expected inputs.
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] from collections import deque
[codex:1057338] # parse bytecode
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1].strip()
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] code_bytes=bytes.fromhex(code)
[codex:1057338] # op map
[codex:1057338] opnames={
[codex:1057338] 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:1057338] 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:1057338] 0x20:'SHA3',
[codex:1057338] 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:1057338] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057338] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057338] }
[codex:1057338] # disassemble
[codex:1057338] ops=[]
[codex:1057338] i=0
[codex:1057338] while i<len(code_bytes):
[codex:1057338]     op=code_bytes[i]
[codex:1057338]     name=opnames.get(op,'UNKNOWN')
[codex:1057338]     if 0x60<=op<=0x7f:
[codex:1057338]         n=op-0x5f
[codex:1057338]         data=code_bytes[i+1:i+1+n]
[codex:1057338]         ops.append((i,name,data))
[codex:1057338]         i+=1+n
[codex:1057338]     else:
[codex:1057338]         ops.append((i,name,None))
[codex:1057338]         i+=1
[codex:1057338] 
[codex:1057338] region=[op for op in ops if 0x0349 <= op[0] <= 0x039d]
[codex:1057338] # stack bottom -> top
[codex:1057338] stack=['ret','addr']
[codex:1057338] 
[codex:1057338] def pop():
[codex:1057338]     return stack.pop()
[codex:1057338] 
[codex:1057338] def push(x):
[codex:1057338]     stack.append(x)
[codex:1057338] 
[codex:1057338] for pc,name,data in region:
[codex:1057338]     print(f\"{pc:04x}: {name} {data.hex() if data else ''} | stack: {stack}\")
[codex:1057338]     if name.startswith('PUSH'):
[codex:1057338]         push('0x'+data.hex())
[codex:1057338]     elif name.startswith('DUP'):
[codex:1057338]         n=int(name[3:])
[codex:1057338]         push(stack[-n])
[codex:1057338]     elif name.startswith('SWAP'):
[codex:1057338]         n=int(name[4:])
[codex:1057338]         stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
[codex:1057338]     elif name=='POP':
[codex:1057338]         pop()
[codex:1057338]     elif name in ('AND','OR','XOR','ADD','SUB','MUL','DIV','EQ','LT','GT','ISZERO'):
[codex:1057338]         b=pop(); a=pop(); push(f\"({a} {name} {b})\")
[codex:1057338]     elif name=='MSTORE':
[codex:1057338]         val=pop(); off=pop();
[codex:1057338]         # ignore
[codex:1057338]     elif name=='SLOAD':
[codex:1057338]         key=pop(); push(f\"SLOAD[{key}]\")
[codex:1057338]     elif name=='SHA3':
[codex:1057338]         sz=pop(); off=pop(); push(f\"keccak({off},{sz})\")
[codex:1057338]     elif name=='JUMP':
[codex:1057338]         pass
[codex:1057338] 
[codex:1057338] print('final stack', stack)
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 30ms:
[codex:1057338] 0349: JUMPDEST  | stack: ['ret', 'addr']
[codex:1057338] 034a: PUSH1 00 | stack: ['ret', 'addr']
[codex:1057338] 034c: DUP1  | stack: ['ret', 'addr', '0x00']
[codex:1057338] 034d: PUSH1 00 | stack: ['ret', 'addr', '0x00', '0x00']
[codex:1057338] 034f: DUP4  | stack: ['ret', 'addr', '0x00', '0x00', '0x00']
[codex:1057338] 0350: PUSH20 ffffffffffffffffffffffffffffffffffffffff | stack: ['ret', 'addr', '0x00', '0x00', '0x00', 'addr']
[codex:1057338] 0365: AND  | stack: ['ret', 'addr', '0x00', '0x00', '0x00', 'addr', '0xffffffffffffffffffffffffffffffffffffffff']
[codex:1057338] 0366: PUSH20 ffffffffffffffffffffffffffffffffffffffff | stack: ['ret', 'addr', '0x00', '0x00', '0x00', '(addr AND 0xffffffffffffffffffffffffffffffffffffffff)']
[codex:1057338] 037b: AND  | stack: ['ret', 'addr', '0x00', '0x00', '0x00', '(addr AND 0xffffffffffffffffffffffffffffffffffffffff)', '0xffffffffffffffffffffffffffffffffffffffff']
[codex:1057338] 037c: DUP2  | stack: ['ret', 'addr', '0x00', '0x00', '0x00', '((addr AND 0xffffffffffffffffffffffffffffffffffffffff) AND 0xffffffffffffffffffffffffffffffffffffffff)']
[codex:1057338] 037d: MSTORE  | stack: ['ret', 'addr', '0x00', '0x00', '0x00', '((addr AND 0xffffffffffffffffffffffffffffffffffffffff) AND 0xffffffffffffffffffffffffffffffffffffffff)', '0x00']
[codex:1057338] 037e: PUSH1 20 | stack: ['ret', 'addr', '0x00', '0x00', '0x00']
[codex:1057338] 0380: ADD  | stack: ['ret', 'addr', '0x00', '0x00', '0x00', '0x20']
[codex:1057338] 0381: SWAP1  | stack: ['ret', 'addr', '0x00', '0x00', '(0x00 ADD 0x20)']
[codex:1057338] 0382: DUP2  | stack: ['ret', 'addr', '0x00', '(0x00 ADD 0x20)', '0x00']
[codex:1057338] 0383: MSTORE  | stack: ['ret', 'addr', '0x00', '(0x00 ADD 0x20)', '0x00', '(0x00 ADD 0x20)']
[codex:1057338] 0384: PUSH1 20 | stack: ['ret', 'addr', '0x00', '(0x00 ADD 0x20)']
[codex:1057338] 0386: ADD  | stack: ['ret', 'addr', '0x00', '(0x00 ADD 0x20)', '0x20']
[codex:1057338] 0387: PUSH1 00 | stack: ['ret', 'addr', '0x00', '((0x00 ADD 0x20) ADD 0x20)']
[codex:1057338] 0389: SHA3  | stack: ['ret', 'addr', '0x00', '((0x00 ADD 0x20) ADD 0x20)', '0x00']
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing call and signature verification logic**
[codex:1057338] 
[codex:1057338] I'm focusing on how external calls, signature parsing, and verification work—especially around the execute function and signature checks—to see if common multisig vulnerabilities like replay or reentrancy might be present. There's a lot to unpack in the control flow and signature handling, so I'll keep mapping functions and their behaviors to identify potential weak points.
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] # find SSTORE positions
[codex:1057338] positions=[]
[codex:1057338] for i,op in enumerate(b):
[codex:1057338]     if op==0x55:
[codex:1057338]         positions.append(i)
[codex:1057338] print('SSTORE positions:', [hex(p) for p in positions])
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 24ms:
[codex:1057338] SSTORE positions: ['0x570', '0x59e', '0x7a0', '0xf8c', '0x16d4']
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing SSTORE operations in contract**
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] # disassemble small window around 0xf8c
[codex:1057338] start=0xf50; end=0xfa5
[codex:1057338] opnames={
[codex:1057338] 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:1057338] 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:1057338] 0x20:'SHA3',
[codex:1057338] 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:1057338] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 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:1057338] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1057338] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1057338] }
[codex:1057338] 
[codex:1057338] i=start
[codex:1057338] while i<end:
[codex:1057338]     op=b[i]
[codex:1057338]     name=opnames.get(op,'UNKNOWN')
[codex:1057338]     if 0x60<=op<=0x7f:
[codex:1057338]         n=op-0x5f
[codex:1057338]         data=b[i+1:i+1+n]
[codex:1057338]         print(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:1057338]         i+=1+n
[codex:1057338]     else:
[codex:1057338]         print(f\"{i:04x}: {name}\")
[codex:1057338]         i+=1
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 30ms:
[codex:1057338] 0f50: SWAP3
[codex:1057338] 0f51: POP
[codex:1057338] 0f52: POP
[codex:1057338] 0f53: POP
[codex:1057338] 0f54: JUMP
[codex:1057338] 0f55: JUMPDEST
[codex:1057338] 0f56: DUP3
[codex:1057338] 0f57: DUP2
[codex:1057338] 0f58: DUP4
[codex:1057338] 0f59: CALLDATACOPY
[codex:1057338] 0f5a: PUSH1 0x00
[codex:1057338] 0f5c: DUP4
[codex:1057338] 0f5d: DUP4
[codex:1057338] 0f5e: ADD
[codex:1057338] 0f5f: MSTORE
[codex:1057338] 0f60: POP
[codex:1057338] 0f61: POP
[codex:1057338] 0f62: POP
[codex:1057338] 0f63: JUMP
[codex:1057338] 0f64: JUMPDEST
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Verifying SSTORE instruction location**
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] # print op at 0xf8c
[codex:1057338] print(hex(b[0xf8c]))
[codex:1057338] # print short around 0xf80 to 0xf90
[codex:1057338] opnames={
[codex:1057338] 0x55:'SSTORE',0x5b:'JUMPDEST',0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1057338] 0x54:'SLOAD',0x52:'MSTORE',0x50:'POP',0x57:'JUMPI',0x56:'JUMP',0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x90:'SWAP1',0x91:'SWAP2',0x15:'ISZERO',0x16:'AND',0x14:'EQ',0x01:'ADD',0x03:'SUB',0x20:'SHA3',0xf1:'CALL',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x10:'LT',0x11:'GT',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x2:'MUL',0xfd:'REVERT',0xf3:'RETURN'
[codex:1057338] }
[codex:1057338] 
[codex:1057338] # Print each instruction from 0xf80 to 0xf95
[codex:1057338] # We'll do simple decode for push op lengths
[codex:1057338] 
[codex:1057338] i=0xf80
[codex:1057338] while i<=0xf95:
[codex:1057338]     op=b[i]
[codex:1057338]     name=opnames.get(op, f'op{op:02x}')
[codex:1057338]     if 0x60<=op<=0x7f:
[codex:1057338]         n=op-0x5f
[codex:1057338]         data=b[i+1:i+1+n]
[codex:1057338]         print(f\"{i:04x}: {name} 0x{data.hex()}\")
[codex:1057338]         i+=1+n
[codex:1057338]     else:
[codex:1057338]         print(f\"{i:04x}: {name}\")
[codex:1057338]         i+=1
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 24ms:
[codex:1057338] 0x55
[codex:1057338] 0f80: JUMP
[codex:1057338] 0f81: JUMPDEST
[codex:1057338] 0f82: op93
[codex:1057338] 0f83: POP
[codex:1057338] 0f84: PUSH2 0x0f8e
[codex:1057338] 0f87: DUP4
[codex:1057338] 0f88: op85
[codex:1057338] 0f89: DUP5
[codex:1057338] 0f8a: PUSH2 0x0f55
[codex:1057338] 0f8d: JUMP
[codex:1057338] 0f8e: JUMPDEST
[codex:1057338] 0f8f: PUSH2 0x0f97
[codex:1057338] 0f92: DUP4
[codex:1057338] 0f93: PUSH2 0x0f64
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Clarifying SSTORE opcode positions**
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] # disassemble and list SSTORE positions
[codex:1057338] positions=[]
[codex:1057338] i=0
[codex:1057338] while i<len(b):
[codex:1057338]     op=b[i]
[codex:1057338]     if op==0x55:
[codex:1057338]         positions.append(i)
[codex:1057338]     if 0x60 <= op <= 0x7f:
[codex:1057338]         i+=1+(op-0x5f)
[codex:1057338]     else:
[codex:1057338]         i+=1
[codex:1057338] print('SSTORE op positions:', [hex(p) for p in positions])
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 27ms:
[codex:1057338] SSTORE op positions: ['0x570', '0x59e', '0x7a0']
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing replay vulnerabilities and signer logic**
[codex:1057338] 
[codex:1057338] I’m examining the contract’s lack of on-chain nonce tracking, which means signed transactions could be replayed multiple times unless off-chain nonces or expiration times prevent it. I’m also trying to understand how the signature verification involves msg.sender and multiple signers, suggesting a multi-signer threshold where the caller must be distinct from signers in the transaction, limiting replay exploitation to insiders. Finally, I’m checking for reentrancy risks, safe mode toggling, and missing protections like selfdestruct or delegatecall.
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] # disassemble and list DELEGATECALL positions
[codex:1057338] positions=[]
[codex:1057338] ops=[]
[codex:1057338] # proper disassembly
[codex:1057338] 
[codex:1057338] i=0
[codex:1057338] while i<len(b):
[codex:1057338]     op=b[i]
[codex:1057338]     if op==0xf4:
[codex:1057338]         positions.append(i)
[codex:1057338]     if 0x60<=op<=0x7f:
[codex:1057338]         i+=1+(op-0x5f)
[codex:1057338]     else:
[codex:1057338]         i+=1
[codex:1057338] print('DELEGATECALL positions:', [hex(p) for p in positions])
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 25ms:
[codex:1057338] DELEGATECALL positions: []
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing signature verification and function decoding**
[codex:1057338] 
[codex:1057338] I'm investigating how this contract verifies signatures by reconstructing its transaction hash using various encoding functions. I'm piecing together ABI decoding details and trying to identify function selectors by approximating keccak256 hashes offline since the usual Python hashlib sha3_256 differs from Ethereum’s Keccak. This will help clarify potential replay or signature vulnerabilities.
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] try:
[codex:1057338]     import sha3
[codex:1057338]     print('sha3 module present')
[codex:1057338] except Exception as e:
[codex:1057338]     print('sha3 module missing', e)
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 17ms:
[codex:1057338] sha3 module missing No module named 'sha3'
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing smart contract initialization and signer verification**
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] # find ORIGIN opcodes 0x32
[codex:1057338] positions=[]
[codex:1057338] i=0
[codex:1057338] while i<len(b):
[codex:1057338]     op=b[i]
[codex:1057338]     if op==0x32:
[codex:1057338]         positions.append(i)
[codex:1057338]     if 0x60<=op<=0x7f:
[codex:1057338]         i+=1+(op-0x5f)
[codex:1057338]     else:
[codex:1057338]         i+=1
[codex:1057338] print('ORIGIN positions:', [hex(p) for p in positions])
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 30ms:
[codex:1057338] ORIGIN positions: []
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Identifying unprotected initializer vulnerability**
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] positions=[]
[codex:1057338] i=0
[codex:1057338] while i<len(b):
[codex:1057338]     op=b[i]
[codex:1057338]     if op==0x30:
[codex:1057338]         positions.append(i)
[codex:1057338]     if 0x60<=op<=0x7f:
[codex:1057338]         i+=1+(op-0x5f)
[codex:1057338]     else:
[codex:1057338]         i+=1
[codex:1057338] print('ADDRESS positions:', [hex(p) for p in positions])
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 26ms:
[codex:1057338] ADDRESS positions: []
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Analyzing contract initialization and access control**
[codex:1057338] exec
[codex:1057338] /bin/bash -lc "python3 - <<'PY'
[codex:1057338] import re
[codex:1057338] hexdata=open('BYTECODE_BUNDLE.txt').read().split('FILE: runtime_bytecode.hex')[1]
[codex:1057338] code=re.search(r'0x[0-9a-fA-F]+', hexdata).group(0)[2:]
[codex:1057338] b=bytes.fromhex(code)
[codex:1057338] positions=[]
[codex:1057338] i=0
[codex:1057338] while i<len(b):
[codex:1057338]     op=b[i]
[codex:1057338]     if op==0xff:
[codex:1057338]         positions.append(i)
[codex:1057338]     if 0x60<=op<=0x7f:
[codex:1057338]         i+=1+(op-0x5f)
[codex:1057338]     else:
[codex:1057338]         i+=1
[codex:1057338] print('SELFDESTRUCT positions:', [hex(p) for p in positions])
[codex:1057338] PY" in /tmp/codex-multi-ij94vfwy succeeded in 24ms:
[codex:1057338] SELFDESTRUCT positions: []
[codex:1057338] 
[codex:1057338] thinking
[codex:1057338] **Preparing detailed vulnerability report**
[codex:1057338] 
[codex:1057338] I'm assembling a precise JSON report describing the critical unprotected initializer vulnerability that allows anyone to set the signer list when uninitialized, detailing the bytecode offsets, concrete exploit steps, and recommendations to mitigate the risk.
[codex:1057338] codex
[codex:1057338] {"no_findings":false,"summary":"The runtime exposes an unprotected initializer; if the contract is still uninitialized, an attacker can set themselves as signers and then execute ETH/ERC20 transfers to drain funds.","findings":[{"severity":"critical","category":"access_control","title":"Unprotected initializer allows attacker to seize signer set and drain funds if uninitialized","exploit_scenario":"1) Call the initializer (selector 0xc6044c46) while the init flag is unset (slot1 low byte = 0) and supply 5 attacker-controlled signer addresses (the init routine enforces a signer count of 5). This writes the signer mapping and flips the init flag. 2) As one of those signers, submit a transfer execution (e.g., selector 0xca34837b for ETH or 0x72276991 for ERC20) with signatures produced by the attacker-controlled signers, sending assets to attacker addresses. Since the signer list is now attacker-owned, the onlySigner gate passes and the transfer executes.","recommendation":"Restrict initialization with an access-control check (e.g., deployer/admin) or move initialization into a constructor; if using proxies/clones, ensure initialization is atomic at deployment and cannot be called by arbitrary accounts.","evidence":"Initializer entry (0x03b1, selector 0xc6044c46) only checks an init flag via SLOAD/AND and has no CALLER/isSigner check before writing state; signer mapping is written via SSTORE at 0x0570 and the init flag is set at 0x059e. Transfer functions are gated only by the signer mapping (e.g., 0x05a3 and 0x0286 start with CALLER -> 0x0349), so owning the signer list gives full control.","locations":["BYTECODE_BUNDLE.txt"]}]}
[codex:1057338] tokens used
[codex:1057338] 92,989
[codex:1057338] {"no_findings":false,"summary":"The runtime exposes an unprotected initializer; if the contract is still uninitialized, an attacker can set themselves as signers and then execute ETH/ERC20 transfers to drain funds.","findings":[{"severity":"critical","category":"access_control","title":"Unprotected initializer allows attacker to seize signer set and drain funds if uninitialized","exploit_scenario":"1) Call the initializer (selector 0xc6044c46) while the init flag is unset (slot1 low byte = 0) and supply 5 attacker-controlled signer addresses (the init routine enforces a signer count of 5). This writes the signer mapping and flips the init flag. 2) As one of those signers, submit a transfer execution (e.g., selector 0xca34837b for ETH or 0x72276991 for ERC20) with signatures produced by the attacker-controlled signers, sending assets to attacker addresses. Since the signer list is now attacker-owned, the onlySigner gate passes and the transfer executes.","recommendation":"Restrict initialization with an access-control check (e.g., deployer/admin) or move initialization into a constructor; if using proxies/clones, ensure initialization is atomic at deployment and cannot be called by arbitrary accounts.","evidence":"Initializer entry (0x03b1, selector 0xc6044c46) only checks an init flag via SLOAD/AND and has no CALLER/isSigner check before writing state; signer mapping is written via SSTORE at 0x0570 and the init flag is set at 0x059e. Transfer functions are gated only by the signer mapping (e.g., 0x05a3 and 0x0286 start with CALLER -> 0x0349), so owning the signer list gives full control.","locations":["BYTECODE_BUNDLE.txt"]}]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-01T15:54:49.075055+00:00",
        "returncode": 0
    },
    "summary": "The runtime exposes an unprotected initializer; if the contract is still uninitialized, an attacker can set themselves as signers and then execute ETH/ERC20 transfers to drain funds.",
    "raw_final": {
        "summary": "The runtime exposes an unprotected initializer; if the contract is still uninitialized, an attacker can set themselves as signers and then execute ETH/ERC20 transfers to drain funds.",
        "findings": [
            {
                "title": "Unprotected initializer allows attacker to seize signer set and drain funds if uninitialized",
                "category": "access_control",
                "evidence": "Initializer entry (0x03b1, selector 0xc6044c46) only checks an init flag via SLOAD/AND and has no CALLER/isSigner check before writing state; signer mapping is written via SSTORE at 0x0570 and the init flag is set at 0x059e. Transfer functions are gated only by the signer mapping (e.g., 0x05a3 and 0x0286 start with CALLER -> 0x0349), so owning the signer list gives full control.",
                "severity": "critical",
                "locations": [
                    "BYTECODE_BUNDLE.txt"
                ],
                "recommendation": "Restrict initialization with an access-control check (e.g., deployer/admin) or move initialization into a constructor; if using proxies/clones, ensure initialization is atomic at deployment and cannot be called by arbitrary accounts.",
                "exploit_scenario": "1) Call the initializer (selector 0xc6044c46) while the init flag is unset (slot1 low byte = 0) and supply 5 attacker-controlled signer addresses (the init routine enforces a signer count of 5). This writes the signer mapping and flips the init flag. 2) As one of those signers, submit a transfer execution (e.g., selector 0xca34837b for ETH or 0x72276991 for ERC20) with signatures produced by the attacker-controlled signers, sending assets to attacker addresses. Since the signer list is now attacker-owned, the onlySigner gate passes and the transfer executes."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical access_control codex Unprotected initializer allows attacker to seize signer set and drain funds if uninitialized 90 no
view
evidence_json
{
    "evidence": "Initializer entry (0x03b1, selector 0xc6044c46) only checks an init flag via SLOAD/AND and has no CALLER/isSigner check before writing state; signer mapping is written via SSTORE at 0x0570 and the init flag is set at 0x059e. Transfer functions are gated only by the signer mapping (e.g., 0x05a3 and 0x0286 start with CALLER -> 0x0349), so owning the signer list gives full control.",
    "locations": [
        "BYTECODE_BUNDLE.txt"
    ],
    "recommendation": "Restrict initialization with an access-control check (e.g., deployer/admin) or move initialization into a constructor; if using proxies/clones, ensure initialization is atomic at deployment and cannot be called by arbitrary accounts.",
    "exploit_scenario": "1) Call the initializer (selector 0xc6044c46) while the init flag is unset (slot1 low byte = 0) and supply 5 attacker-controlled signer addresses (the init routine enforces a signer count of 5). This writes the signer mapping and flips the init flag. 2) As one of those signers, submit a transfer execution (e.g., selector 0xca34837b for ETH or 0x72276991 for ERC20) with signatures produced by the attacker-controlled signers, sending assets to attacker addresses. Since the signer list is now attacker-owned, the onlySigner gate passes and the transfer executes."
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_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
view
trace_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
view
trace_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
view
evidence_json
{
    "notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
    "create_count": 1,
    "create2_count": 0
}