74a17e40-c92e-4506-b3c6-c4461fb6b7dc
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31555 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77957 | artifact.fetch | complete | 1 / 3 | 2 weeks ago |
| 77958 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 77959 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 77960 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 77961 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 77962 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:939784] OpenAI Codex v0.77.0 (research preview)
[codex:939784] --------
[codex:939784] workdir: /tmp/codex-multi-64wuzm2e
[codex:939784] model: gpt-5.2-codex
[codex:939784] provider: openai
[codex:939784] approval: never
[codex:939784] sandbox: read-only
[codex:939784] reasoning effort: xhigh
[codex:939784] reasoning summaries: auto
[codex:939784] session id: 019b8735-71a5-7dc2-ad48-e7d904d8589c
[codex:939784] --------
[codex:939784] user
[codex:939784] 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:939784]
[codex:939784] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:939784]
[codex:939784] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:939784] - Gas inefficiency, code quality, or best practices
[codex:939784] - Theoretical vulnerabilities without a clear extraction path
[codex:939784] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:939784] - Issues requiring social engineering or off-chain coordination
[codex:939784]
[codex:939784] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:939784] - CALL/DELEGATECALL with controllable destination or calldata
[codex:939784] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:939784] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:939784] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:939784] - External calls before state updates (reentrancy)
[codex:939784] - SELFDESTRUCT with controllable beneficiary
[codex:939784] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:939784]
[codex:939784] For each finding, you MUST explain:
[codex:939784] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:939784] 2. The concrete sequence of transactions to extract value
[codex:939784] 3. Why you believe this is exploitable (not just suspicious)
[codex:939784]
[codex:939784] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:939784] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:939784]
[codex:939784] Output MUST be valid JSON matching the provided schema.
[codex:939784] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:939784] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:939784] mcp startup: no servers
[codex:939784]
[codex:939784] thinking
[codex:939784] **Locating bytecode file**
[codex:939784] exec
[codex:939784] /bin/bash -lc ls in /tmp/codex-multi-64wuzm2e succeeded in 5ms:
[codex:939784] BYTECODE_BUNDLE.txt
[codex:939784] codex-output-schema.json
[codex:939784] exec
[codex:939784] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-64wuzm2e succeeded in 7ms:
[codex:939784] Runtime bytecode bundle for best-effort auditing.
[codex:939784] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:939784]
[codex:939784] FILE: runtime_bytecode.hex
[codex:939784] 0x6080604052600436106101ba5760003560e01c8063627749e6116100ec578063a457c2d71161008a578063aafd847a11610064578063aafd847a14610627578063c9e7cc1314610664578063dd62ed3e1461068f578063fbcbc0f1146106cc576101c9565b8063a457c2d714610570578063a8b9d240146105ad578063a9059cbb146105ea576101c9565b806385a6b3ae116100c657806385a6b3ae146104b25780638da5cb5b146104dd57806391b89fba1461050857806395d89b4114610545576101c9565b8063627749e6146104335780636a4740021461045e57806370a0823114610475576101c9565b806327ce0147116101595780633950935111610133578063395093511461037957806340b8405a146103b657806343d726d6146103df5780634e7b827f146103f6576101c9565b806327ce0147146102e8578063313ce5671461032557806331e79db014610350576101c9565b8063095ea7b311610195578063095ea7b31461021a57806318160ddd146102575780631e83409a1461028257806323b872dd146102ab576101c9565b8062788b56146101ce57806303c83302146101e557806306fdde03146101ef576101c9565b366101c9576101c761070b565b005b600080fd5b3480156101da57600080fd5b506101e36107cf565b005b6101ed61070b565b005b3480156101fb57600080fd5b50610204610904565b6040516102119190611fe9565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c91906120a4565b610996565b60405161024e91906120ff565b60405180910390f35b34801561026357600080fd5b5061026c6109b4565b6040516102799190612129565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612144565b6109be565b005b3480156102b757600080fd5b506102d260048036038101906102cd9190612171565b610a84565b6040516102df91906120ff565b60405180910390f35b3480156102f457600080fd5b5061030f600480360381019061030a9190612144565b610b7c565b60405161031c9190612129565b60405180910390f35b34801561033157600080fd5b5061033a610c1f565b60405161034791906121e0565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612144565b610c28565b005b34801561038557600080fd5b506103a0600480360381019061039b91906120a4565b610d2b565b6040516103ad91906120ff565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190612239565b610dd7565b005b3480156103eb57600080fd5b506103f4610ed1565b005b34801561040257600080fd5b5061041d60048036038101906104189190612144565b610f79565b60405161042a91906120ff565b60405180910390f35b34801561043f57600080fd5b50610448610f99565b6040516104559190612129565b60405180910390f35b34801561046a57600080fd5b50610473610f9f565b005b34801561048157600080fd5b5061049c60048036038101906104979190612144565b61100b565b6040516104a99190612129565b60405180910390f35b3480156104be57600080fd5b506104c7611053565b6040516104d49190612129565b60405180910390f35b3480156104e957600080fd5b506104f2611059565b6040516104ff9190612275565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190612144565b611083565b60405161053c9190612129565b60405180910390f35b34801561055157600080fd5b5061055a611095565b6040516105679190611fe9565b60405180910390f35b34801561057c57600080fd5b50610597600480360381019061059291906120a4565b611127565b6040516105a491906120ff565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190612144565b611212565b6040516105e19190612129565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c91906120a4565b611275565b60405161061e91906120ff565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190612144565b611293565b60405161065b9190612129565b60405180910390f35b34801561067057600080fd5b506106796112dc565b6040516106869190612129565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b19190612290565b6112e3565b6040516106c39190612129565b60405180910390f35b3480156106d857600080fd5b506106f360048036038101906106ee9190612144565b61136a565b604051610702939291906122d0565b60405180910390f35b60006107156109b4565b1161071f57600080fd5b60003411156107cd576107726107336109b4565b6107577001000000000000000000000000000000003461138f90919063ffffffff16565b6107619190612365565b60055461140990919063ffffffff16565b6005819055507fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d7845411651133346040516107a9929190612396565b60405180910390a16107c63460085461140990919063ffffffff16565b6008819055505b565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082957600080fd5b6000600d541015801561084c575062278d00600d5461084891906123bf565b4210155b61088b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108829061243f565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516108b190612490565b60006040518083038185875af1925050503d80600081146108ee576040519150601f19603f3d011682016040523d82523d6000602084013e6108f3565b606091505b505090508061090157600080fd5b50565b606060038054610913906124d4565b80601f016020809104026020016040519081016040528092919081815260200182805461093f906124d4565b801561098c5780601f106109615761010080835404028352916020019161098c565b820191906000526020600020905b81548152906001019060200180831161096f57829003601f168201915b5050505050905090565b60006109aa6109a3611467565b848461146f565b6001905092915050565b6000600254905090565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1857600080fd5b6000600d541480610a38575062278d00600d54610a3591906123bf565b42105b610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90612551565b60405180910390fd5b610a8081611638565b5050565b6000610a91848484611848565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adc611467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b53906125e3565b60405180910390fd5b610b7085610b68611467565b85840361146f565b60019150509392505050565b6000700100000000000000000000000000000000610c0e610c09600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfb610bf6610be58861100b565b60055461138f90919063ffffffff16565b6118b7565b6118d490919063ffffffff16565b61191f565b610c189190612365565b9050919050565b60006012905090565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8257600080fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ce5816000611936565b8073ffffffffffffffffffffffffffffffffffffffff167fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2560405160405180910390a250565b6000610dcd610d38611467565b848460016000610d46611467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dc891906123bf565b61146f565b6001905092915050565b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ece57610ecd81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610e879190612662565b602060405180830381865afa158015610ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec89190612692565b611936565b5b50565b3373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2b57600080fd5b6000600d5414610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f679061270b565b60405180910390fd5b42600d81905550565b600b6020528060005260406000206000915054906101000a900460ff1681565b600d5481565b6000610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd7906127c3565b60405180910390fd5b600e60009054906101000a900460ff16600e60006101000a81548160ff021916908315150217905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061108e82611212565b9050919050565b6060600480546110a4906124d4565b80601f01602080910402602001604051908101604052809291908181526020018280546110d0906124d4565b801561111d5780601f106110f25761010080835404028352916020019161111d565b820191906000526020600020905b81548152906001019060200180831161110057829003601f168201915b5050505050905090565b60008060016000611136611467565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90612855565b60405180910390fd5b6112076111fe611467565b8585840361146f565b600191505092915050565b600061126e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461126084610b7c565b6119a390919063ffffffff16565b9050919050565b6000611289611282611467565b8484611848565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b62278d0081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600083925061137b83611212565b915061138683610b7c565b90509193909250565b60008083036113a15760009050611403565b600082846113af9190612875565b90508284826113be9190612365565b146113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590612929565b60405180910390fd5b809150505b92915050565b600080828461141891906123bf565b90508381101561145d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145490612995565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590612a27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154490612ab9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161162b9190612129565b60405180910390a3505050565b60008061164483611212565b9050600081111561183d576116a181600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461140990919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d8382604051611715929190612ad9565b60405180910390a160008373ffffffffffffffffffffffffffffffffffffffff1682610bb89060405161174790612490565b600060405180830381858888f193505050503d8060008114611785576040519150601f19603f3d011682016040523d82523d6000602084013e61178a565b606091505b5050905080611833576117e582600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119a390919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600092505050611843565b8192505050611843565b60009150505b919050565b6000611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090612b4e565b60405180910390fd5b600e60009054906101000a900460ff16600e60006101000a81548160ff021916908315150217905550505050565b60008082905060008112156118cb57600080fd5b80915050919050565b60008082846118e39190612b78565b9050600083121580156118f65750838112155b8061190c575060008312801561190b57508381125b5b61191557600080fd5b8091505092915050565b60008082121561192e57600080fd5b819050919050565b60006119418361100b565b90508082111561197257600061196082846119a390919063ffffffff16565b905061196c84826119ed565b5061199e565b8082101561199d57600061198f83836119a390919063ffffffff16565b905061199b8482611aac565b505b5b505050565b60006119e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b6b565b905092915050565b6119f78282611bcf565b611a65611a17611a128360055461138f90919063ffffffff16565b6118b7565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2e90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611ab68282611d79565b611b24611ad6611ad18360055461138f90919063ffffffff16565b6118b7565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d490919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000838311158290611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa9190611fe9565b60405180910390fd5b5060008385611bc29190612bbc565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3590612c3c565b60405180910390fd5b611c4a60008383611f4f565b8060026000828254611c5c91906123bf565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cb191906123bf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d169190612129565b60405180910390a3611d2a60008383611f54565b5050565b6000808284611d3d9190612c5c565b905060008312158015611d505750838113155b80611d665750600083128015611d6557508381135b5b611d6f57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddf90612d11565b60405180910390fd5b611df482600083611f4f565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190612da3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611ed19190612bbc565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f369190612129565b60405180910390a3611f4a83600084611f54565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f93578082015181840152602081019050611f78565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fbb82611f59565b611fc58185611f64565b9350611fd5818560208601611f75565b611fde81611f9f565b840191505092915050565b600060208201905081810360008301526120038184611fb0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061203b82612010565b9050919050565b61204b81612030565b811461205657600080fd5b50565b60008135905061206881612042565b92915050565b6000819050919050565b6120818161206e565b811461208c57600080fd5b50565b60008135905061209e81612078565b92915050565b600080604083850312156120bb576120ba61200b565b5b60006120c985828601612059565b92505060206120da8582860161208f565b9150509250929050565b60008115159050919050565b6120f9816120e4565b82525050565b600060208201905061211460008301846120f0565b92915050565b6121238161206e565b82525050565b600060208201905061213e600083018461211a565b92915050565b60006020828403121561215a5761215961200b565b5b600061216884828501612059565b91505092915050565b60008060006060848603121561218a5761218961200b565b5b600061219886828701612059565b93505060206121a986828701612059565b92505060406121ba8682870161208f565b9150509250925092565b600060ff82169050919050565b6121da816121c4565b82525050565b60006020820190506121f560008301846121d1565b92915050565b600061220682612010565b9050919050565b612216816121fb565b811461222157600080fd5b50565b6000813590506122338161220d565b92915050565b60006020828403121561224f5761224e61200b565b5b600061225d84828501612224565b91505092915050565b61226f81612030565b82525050565b600060208201905061228a6000830184612266565b92915050565b600080604083850312156122a7576122a661200b565b5b60006122b585828601612059565b92505060206122c685828601612059565b9150509250929050565b60006060820190506122e56000830186612266565b6122f2602083018561211a565b6122ff604083018461211a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123708261206e565b915061237b8361206e565b92508261238b5761238a612307565b5b828204905092915050565b60006040820190506123ab6000830185612266565b6123b8602083018461211a565b9392505050565b60006123ca8261206e565b91506123d58361206e565b92508282019050808211156123ed576123ec612336565b5b92915050565b7f616c726561647920636c6f736564000000000000000000000000000000000000600082015250565b6000612429600e83611f64565b9150612434826123f3565b602082019050919050565b600060208201905081810360008301526124588161241c565b9050919050565b600081905092915050565b50565b600061247a60008361245f565b91506124858261246a565b600082019050919050565b600061249b8261246d565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124ec57607f821691505b6020821081036124ff576124fe6124a5565b5b50919050565b7f636c6f7365640000000000000000000000000000000000000000000000000000600082015250565b600061253b600683611f64565b915061254682612505565b602082019050919050565b6000602082019050818103600083015261256a8161252e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006125cd602883611f64565b91506125d882612571565b604082019050919050565b600060208201905081810360008301526125fc816125c0565b9050919050565b6000819050919050565b600061262861262361261e84612010565b612603565b612010565b9050919050565b600061263a8261260d565b9050919050565b600061264c8261262f565b9050919050565b61265c81612641565b82525050565b60006020820190506126776000830184612653565b92915050565b60008151905061268c81612078565b92915050565b6000602082840312156126a8576126a761200b565b5b60006126b68482850161267d565b91505092915050565b7f63616e6e6f742074616b65207965740000000000000000000000000000000000600082015250565b60006126f5600f83611f64565b9150612700826126bf565b602082019050919050565b60006020820190508181036000830152612724816126e8565b9050919050565b7f77697468647261774469766964656e642064697361626c65642e20557365207460008201527f68652027636c61696d272066756e6374696f6e206f6e20746865206d61696e2060208201527f746f6b656e20636f6e74726163742e0000000000000000000000000000000000604082015250565b60006127ad604f83611f64565b91506127b88261272b565b606082019050919050565b600060208201905081810360008301526127dc816127a0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061283f602583611f64565b915061284a826127e3565b604082019050919050565b6000602082019050818103600083015261286e81612832565b9050919050565b60006128808261206e565b915061288b8361206e565b92508282026128998161206e565b915082820484148315176128b0576128af612336565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612913602183611f64565b915061291e826128b7565b604082019050919050565b6000602082019050818103600083015261294281612906565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061297f601b83611f64565b915061298a82612949565b602082019050919050565b600060208201905081810360008301526129ae81612972565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a11602483611f64565b9150612a1c826129b5565b604082019050919050565b60006020820190508181036000830152612a4081612a04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa3602283611f64565b9150612aae82612a47565b604082019050919050565b60006020820190508181036000830152612ad281612a96565b9050919050565b6000604082019050612aee6000830185612653565b612afb602083018461211a565b9392505050565b7f4e6f207472616e736665727320616c6c6f776564000000000000000000000000600082015250565b6000612b38601483611f64565b9150612b4382612b02565b602082019050919050565b60006020820190508181036000830152612b6781612b2b565b9050919050565b6000819050919050565b6000612b8382612b6e565b9150612b8e83612b6e565b925082820190508281121560008312168382126000841215161715612bb657612bb5612336565b5b92915050565b6000612bc78261206e565b9150612bd28361206e565b9250828203905081811115612bea57612be9612336565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612c26601f83611f64565b9150612c3182612bf0565b602082019050919050565b60006020820190508181036000830152612c5581612c19565b9050919050565b6000612c6782612b6e565b9150612c7283612b6e565b9250828203905081811260008412168282136000851215161715612c9957612c98612336565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfb602183611f64565b9150612d0682612c9f565b604082019050919050565b60006020820190508181036000830152612d2a81612cee565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d8d602283611f64565b9150612d9882612d31565b604082019050919050565b60006020820190508181036000830152612dbc81612d80565b905091905056fea2646970667358221220cafb80875c68127869ed67d869690020e0602b3544e350e6b5b07e7d33821d6664736f6c63430008130033
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing bytecode for vulnerabilities**
[codex:939784]
[codex:939784] I’m examining the bytecode for concrete exploit paths, focusing on function selectors, storage slots, and dangerous opcodes like CALL and SELFDESTRUCT. I plan to use Python with the `-B` flag to parse the opcodes safely without writing files, aiming to identify vulnerabilities related to unauthorized ETH or token transfers, especially around dividend claims.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] from binascii import unhexlify
[codex:939784] code=open('BYTECODE_BUNDLE.txt').read()
[codex:939784] # extract hex after 0x
[codex:939784] m=re.search(r'0x([0-9a-fA-F]+)', code)
[codex:939784] hexstr=m.group(1)
[codex:939784] print('len', len(hexstr)//2)
[codex:939784] # parse opcodes
[codex:939784] code_bytes=bytes.fromhex(hexstr)
[codex:939784] ops=[]
[codex:939784] for i,b in enumerate(code_bytes):
[codex:939784] if b in (0xf1,0xf2,0xf4,0xf5,0xff):
[codex:939784] ops.append((i,b))
[codex:939784] print('ops', ops[:20], 'count', len(ops))
[codex:939784] # list around each
[codex:939784] for i,b in ops:
[codex:939784] print(hex(i), hex(b))
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 41ms:
[codex:939784] len 11769
[codex:939784] ops [(90, 241), (588, 255), (733, 255), (750, 244), (939, 255), (1007, 244), (1064, 255), (1261, 242), (1272, 255), (1442, 255), (1564, 255), (1873, 255), (1874, 255), (1875, 255), (1876, 255), (1900, 255), (1901, 255), (1902, 255), (1903, 255), (1984, 255)] count 1837
[codex:939784] 0x5a 0xf1
[codex:939784] 0x24c 0xff
[codex:939784] 0x2dd 0xff
[codex:939784] 0x2ee 0xf4
[codex:939784] 0x3ab 0xff
[codex:939784] 0x3ef 0xf4
[codex:939784] 0x428 0xff
[codex:939784] 0x4ed 0xf2
[codex:939784] 0x4f8 0xff
[codex:939784] 0x5a2 0xff
[codex:939784] 0x61c 0xff
[codex:939784] 0x751 0xff
[codex:939784] 0x752 0xff
[codex:939784] 0x753 0xff
[codex:939784] 0x754 0xff
[codex:939784] 0x76c 0xff
[codex:939784] 0x76d 0xff
[codex:939784] 0x76e 0xff
[codex:939784]
[codex:939784] thinking
[codex:939784] **Identifying code boundaries in bytecode**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] code=open('BYTECODE_BUNDLE.txt').read()
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:939784] code_bytes=bytes.fromhex(hexstr)
[codex:939784] # find last 0xfe byte
[codex:939784] last_fe = max(i for i,b in enumerate(code_bytes) if b==0xfe)
[codex:939784] print('last_fe', last_fe, 'len', len(code_bytes))
[codex:939784] print('metadata starts', last_fe+1, code_bytes[last_fe+1:last_fe+5].hex())
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 23ms:
[codex:939784] last_fe 11715 len 11769
[codex:939784] metadata starts 11716 a2646970
[codex:939784]
[codex:939784] thinking
[codex:939784] **Planning opcode disassembly script**
[codex:939784]
[codex:939784] I'm preparing to write a Python script that scans the entire 11,716-byte code range sequentially, skipping PUSH data appropriately to isolate actual opcodes. This will help me locate and contextualize critical call-related instructions like CALL, DELEGATECALL, and SELFDESTRUCT by their offsets along with a snapshot of preceding instructions. I want to ensure the output distinguishes real instructions from embedded data, so I'll keep track of push lengths carefully and show relevant instructions near each call opcode.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] code=open('BYTECODE_BUNDLE.txt').read()
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', code).group(1)
[codex:939784] code_bytes=bytes.fromhex(hexstr)
[codex:939784] end=11716
[codex:939784] code_bytes=code_bytes[:end]
[codex:939784] # opcode names for a few
[codex:939784] opnames = {0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xfa:'STATICCALL'}
[codex:939784] # simple disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code_bytes):
[codex:939784] b=code_bytes[pc]
[codex:939784] if 0x60 <= b <= 0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code_bytes[pc+1:pc+1+n]
[codex:939784] ops.append((pc, b, data))
[codex:939784] pc += 1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784] # create map from pc to index
[codex:939784] idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:939784] # find call-related opcodes
[codex:939784] for i,(pc,b,data) in enumerate(ops):
[codex:939784] if b in opnames:
[codex:939784] # print context last 8 ops
[codex:939784] start=max(0,i-8)
[codex:939784] context=ops[start:i+1]
[codex:939784] print('---',opnames[b],'at',hex(pc))
[codex:939784] for (pc2,b2,data2) in context:
[codex:939784] if 0x60<=b2<=0x7f:
[codex:939784] print(hex(pc2), 'PUSH'+str(b2-0x5f), data2.hex())
[codex:939784] else:
[codex:939784] print(hex(pc2), hex(b2))
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 28ms:
[codex:939784] --- CALL at 0x8be
[codex:939784] 0x8b6 0x51
[codex:939784] 0x8b7 0x80
[codex:939784] 0x8b8 0x83
[codex:939784] 0x8b9 0x3
[codex:939784] 0x8ba 0x81
[codex:939784] 0x8bb 0x85
[codex:939784] 0x8bc 0x87
[codex:939784] 0x8bd 0x5a
[codex:939784] 0x8be 0xf1
[codex:939784] --- STATICCALL at 0xe93
[codex:939784] 0xe8a PUSH1 40
[codex:939784] 0xe8c 0x51
[codex:939784] 0xe8d 0x80
[codex:939784] 0xe8e 0x83
[codex:939784] 0xe8f 0x3
[codex:939784] 0xe90 0x81
[codex:939784] 0xe91 0x86
[codex:939784] 0xe92 0x5a
[codex:939784] 0xe93 0xfa
[codex:939784]
[codex:939784] thinking
[codex:939784] **Examining CALL instructions and context**
[codex:939784]
[codex:939784] I'm focusing on the two CALLs found at offsets 0x8be and 0x1754, checking assembly before and after to understand their role—especially if they involve ETH transfers or claims. I plan to generate annotated disassembly showing 50 opcodes around these calls, highlighting push values and mapping nearby function entry points to trace their logic and assess exploit potential.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disassemble
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784] # function to print around offset
[codex:939784]
[codex:939784] def print_around(target, before=30, after=30):
[codex:939784] # find index of op containing target
[codex:939784] idx=next(i for i,(pc,b,data) in enumerate(ops) if pc==target)
[codex:939784] start=max(0, idx-before)
[codex:939784] end=min(len(ops), idx+after)
[codex:939784] for pc,b,data in ops[start:end]:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {data.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print('Around CALL 0x8be')
[codex:939784] print_around(0x8be, before=40, after=40)
[codex:939784] print('\\nAround CALL 0x1754')
[codex:939784] print_around(0x1754, before=50, after=50)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 35ms:
[codex:939784] Around CALL 0x8be
[codex:939784] 0854: PUSH32 08c379a000000000000000000000000000000000000000000000000000000000
[codex:939784] 0875: 81
[codex:939784] 0876: 52
[codex:939784] 0877: PUSH1 04
[codex:939784] 0879: 01
[codex:939784] 087a: PUSH2 0882
[codex:939784] 087d: 90
[codex:939784] 087e: PUSH2 243f
[codex:939784] 0881: 56
[codex:939784] 0882: 5b
[codex:939784] 0883: PUSH1 40
[codex:939784] 0885: 51
[codex:939784] 0886: 80
[codex:939784] 0887: 91
[codex:939784] 0888: 03
[codex:939784] 0889: 90
[codex:939784] 088a: fd
[codex:939784] 088b: 5b
[codex:939784] 088c: PUSH1 00
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing EVM call parameters and disassembly**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784] # function to print
[codex:939784]
[codex:939784] def print_range(start, count=40):
[codex:939784] i=next(i for i,(pc,b,data) in enumerate(ops) if pc==start)
[codex:939784] for pc,b,data in ops[i:i+count]:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {data.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0x2490, 80)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 27ms:
[codex:939784] 2490: 5b
[codex:939784] 2491: PUSH1 00
[codex:939784] 2493: PUSH2 249b
[codex:939784] 2496: 82
[codex:939784] 2497: PUSH2 246d
[codex:939784] 249a: 56
[codex:939784] 249b: 5b
[codex:939784] 249c: 91
[codex:939784] 249d: 50
[codex:939784] 249e: 81
[codex:939784] 249f: 90
[codex:939784] 24a0: 50
[codex:939784] 24a1: 91
[codex:939784] 24a2: 90
[codex:939784] 24a3: 50
[codex:939784] 24a4: 56
[codex:939784] 24a5: 5b
[codex:939784] 24a6: PUSH32 4e487b7100000000000000000000000000000000000000000000000000000000
[codex:939784] 24c7: PUSH1 00
[codex:939784] 24c9: 52
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing function at 0x2490**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # print around 0x246d
[codex:939784] start=0x246d
[codex:939784] idx=next(i for i,(pc,b,d) in enumerate(ops) if pc==start)
[codex:939784] for pc,b,d in ops[idx:idx+40]:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 27ms:
[codex:939784] 246d: 5b
[codex:939784] 246e: PUSH1 00
[codex:939784] 2470: PUSH2 247a
[codex:939784] 2473: PUSH1 00
[codex:939784] 2475: 83
[codex:939784] 2476: PUSH2 245f
[codex:939784] 2479: 56
[codex:939784] 247a: 5b
[codex:939784] 247b: 91
[codex:939784] 247c: 50
[codex:939784] 247d: PUSH2 2485
[codex:939784] 2480: 82
[codex:939784] 2481: PUSH2 246a
[codex:939784] 2484: 56
[codex:939784] 2485: 5b
[codex:939784] 2486: PUSH1 00
[codex:939784] 2488: 82
[codex:939784] 2489: 01
[codex:939784] 248a: 90
[codex:939784] 248b: 50
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing EVM call and stack behavior**
[codex:939784]
[codex:939784] I'm working through a complex section of EVM bytecode that seems to prepare and execute a CALL opcode sending ETH to the caller using SELFBALANCE. To understand the call parameters, I'm planning to symbolically simulate stack operations from around 0x88b to 0x8be, including a jump to an internal function at 0x2490, by modeling stack pushes, pops, and key opcodes like CALLER and SELFBALANCE while ignoring memory details. This should clarify how the call constructs its arguments.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784]
[codex:939784] # build disasm mapping pc->(opcode, data, size)
[codex:939784] ops={}
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops[pc]=(b,data,1+n)
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops[pc]=(b,None,1)
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # mapping names for some ops
[codex:939784] names={0x00:'STOP',0x01:'ADD',0x03:'SUB',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x20:'SHA3',
[codex:939784] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:939784] 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:939784] 0xf1:'CALL'}
[codex:939784]
[codex:939784] # simple symbolic stack executor
[codex:939784] class Sym:
[codex:939784] def __init__(self, name):
[codex:939784] self.name=name
[codex:939784] def __repr__(self):
[codex:939784] return self.name
[codex:939784]
[codex:939784] sym_id=0
[codex:939784]
[codex:939784] def newsym(prefix='v'):
[codex:939784] global sym_id
[codex:939784] sym_id+=1
[codex:939784] return Sym(f\"{prefix}{sym_id}\")
[codex:939784]
[codex:939784] # stack as list, top at end
[codex:939784] stack=[]
[codex:939784]
[codex:939784] # helper to push
[codex:939784]
[codex:939784] def push(x):
[codex:939784] stack.append(x)
[codex:939784]
[codex:939784] def pop():
[codex:939784] return stack.pop() if stack else Sym('UNDER')
[codex:939784]
[codex:939784] # run from start pc with optional stop pc
[codex:939784]
[codex:939784] def exec_path(start, stop=None, max_steps=200):
[codex:939784] pc=start
[codex:939784] steps=0
[codex:939784] while pc in ops and steps<max_steps:
[codex:939784] b,data,size=ops[pc]
[codex:939784] steps+=1
[codex:939784] name=names.get(b, f'OP{b:02x}')
[codex:939784] # print state
[codex:939784] #print(f\"{pc:04x} {name} stack={stack}\")
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] push(Sym('0x'+data.hex()))
[codex:939784] elif b==0x33: # CALLER
[codex:939784] push(Sym('CALLER'))
[codex:939784] elif b==0x47: # SELFBALANCE
[codex:939784] push(Sym('SELFBAL'))
[codex:939784] elif b==0x51: # MLOAD
[codex:939784] pop()
[codex:939784] push(Sym('MLOAD'))
[codex:939784] elif b==0x52: # MSTORE
[codex:939784] pop(); pop()
[codex:939784] elif b==0x50: # POP
[codex:939784] pop()
[codex:939784] elif b==0x56: # JUMP
[codex:939784] dest=pop()
[codex:939784] if isinstance(dest, Sym) and dest.name.startswith('0x'):
[codex:939784] pc=int(dest.name,16)
[codex:939784] continue
[codex:939784] else:
[codex:939784] print('dynamic jump', dest); break
[codex:939784] elif b==0x57: # JUMPI
[codex:939784] dest=pop(); cond=pop()
[codex:939784] # for this trace assume not taking jump; just fallthrough
[codex:939784] elif b>=0x80 and b<=0x8f: # DUP
[codex:939784] n=b-0x7f
[codex:939784] if len(stack)>=n:
[codex:939784] push(stack[-n])
[codex:939784] else:
[codex:939784] push(Sym('UNDER'))
[codex:939784] elif b>=0x90 and b<=0x9f: # SWAP
[codex:939784] n=b-0x8f
[codex:939784] if len(stack)>=n+1:
[codex:939784] stack[-1], stack[-1-n] = stack[-1-n], stack[-1]
[codex:939784] else:
[codex:939784] pass
[codex:939784] elif b in (0x01,0x03,0x14,0x10,0x11,0x16,0x17,0x18,0x1a):
[codex:939784] a=pop(); b2=pop(); push(Sym(f'({b2}{name}{a})'))
[codex:939784] elif b==0x34: # CALLVALUE
[codex:939784] push(Sym('CALLVALUE'))
[codex:939784] elif b==0x5a: # GAS
[codex:939784] push(Sym('GAS'))
[codex:939784] elif b==0xf1: # CALL
[codex:939784] # pops 7
[codex:939784] args=[pop() for _ in range(7)]
[codex:939784] push(Sym('CALLRET'))
[codex:939784] print('CALL args (top->bottom):', args)
[codex:939784] else:
[codex:939784] # default: unknown op, treat as pop/push none
[codex:939784] pass
[codex:939784] pc += size
[codex:939784] if stop is not None and pc==stop:
[codex:939784] break
[codex:939784] print('final stack', stack)
[codex:939784]
[codex:939784] print('Trace from 0x88b to after call:')
[codex:939784] exec_path(0x88b, stop=0x8bf, max_steps=200)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 30ms:
[codex:939784] Trace from 0x88b to after call:
[codex:939784] CALL args (top->bottom): [GAS, (CALLERAND0xffffffffffffffffffffffffffffffffffffffff), SELFBAL, MLOAD, (MLOADSUB(0x00ADDMLOAD)), MLOAD, 0x00]
[codex:939784] final stack [0x00, (CALLERAND0xffffffffffffffffffffffffffffffffffffffff), SELFBAL, (0x00ADDMLOAD), CALLRET]
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing suspicious CALL instruction**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start, end):
[codex:939784] for pc,b,data in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {data.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0x820,0x900)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 29ms:
[codex:939784] 0820: 14
[codex:939784] 0821: PUSH2 0829
[codex:939784] 0824: 57
[codex:939784] 0825: PUSH1 00
[codex:939784] 0827: 80
[codex:939784] 0828: fd
[codex:939784] 0829: 5b
[codex:939784] 082a: PUSH1 00
[codex:939784] 082c: PUSH1 0d
[codex:939784] 082e: 54
[codex:939784] 082f: 10
[codex:939784] 0830: 15
[codex:939784] 0831: 80
[codex:939784] 0832: 15
[codex:939784] 0833: PUSH2 084c
[codex:939784] 0836: 57
[codex:939784] 0837: 50
[codex:939784] 0838: PUSH3 278d00
[codex:939784] 083c: PUSH1 0d
[codex:939784] 083e: 54
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing conditional jump and require check**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0x7d0,0x824)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 28ms:
[codex:939784] 07d0: 33
[codex:939784] 07d1: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:939784] 07e6: 16
[codex:939784] 07e7: PUSH1 09
[codex:939784] 07e9: PUSH1 00
[codex:939784] 07eb: 90
[codex:939784] 07ec: 54
[codex:939784] 07ed: 90
[codex:939784] 07ee: PUSH2 0100
[codex:939784] 07f1: 0a
[codex:939784] 07f2: 90
[codex:939784] 07f3: 04
[codex:939784] 07f4: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:939784] 0809: 16
[codex:939784] 080a: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:939784] 081f: 16
[codex:939784] 0820: 14
[codex:939784] 0821: PUSH2 0829
[codex:939784] 0824: 57
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing owner-restricted call and potential dividend transfer**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0x1600,0x1860)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 29ms:
[codex:939784] 161e: 83
[codex:939784] 161f: PUSH1 40
[codex:939784] 1621: 51
[codex:939784] 1622: PUSH2 162b
[codex:939784] 1625: 91
[codex:939784] 1626: 90
[codex:939784] 1627: PUSH2 2129
[codex:939784] 162a: 56
[codex:939784] 162b: 5b
[codex:939784] 162c: PUSH1 40
[codex:939784] 162e: 51
[codex:939784] 162f: 80
[codex:939784] 1630: 91
[codex:939784] 1631: 03
[codex:939784] 1632: 90
[codex:939784] 1633: a3
[codex:939784] 1634: 50
[codex:939784] 1635: 50
[codex:939784] 1636: 50
[codex:939784] 1637: 56
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing function calls and selector dispatch**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm sequentially to find pattern PUSH4 selector, EQ, PUSH2 dest, JUMPI
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # find push4 -> eq -> push2 -> jumpi
[codex:939784] results=[]
[codex:939784] for i in range(len(ops)-3):
[codex:939784] pc,b,data=ops[i]
[codex:939784] if b==0x63: # PUSH4
[codex:939784] sel=data.hex()
[codex:939784] # next op may be DUP? but often eq appears after; we search next few
[codex:939784] if ops[i+1][1]==0x14 and ops[i+2][1]==0x61 and ops[i+3][1]==0x57:
[codex:939784] dest=ops[i+2][2].hex()
[codex:939784] results.append((sel,int(dest,16)))
[codex:939784] # handle pattern PUSH4, EQ, PUSH2, JUMPI
[codex:939784]
[codex:939784] print('selectors',len(results))
[codex:939784] for sel,dest in results:
[codex:939784] print(sel, hex(dest))
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 27ms:
[codex:939784] selectors 27
[codex:939784] aafd847a 0x627
[codex:939784] c9e7cc13 0x664
[codex:939784] dd62ed3e 0x68f
[codex:939784] fbcbc0f1 0x6cc
[codex:939784] a457c2d7 0x570
[codex:939784] a8b9d240 0x5ad
[codex:939784] a9059cbb 0x5ea
[codex:939784] 85a6b3ae 0x4b2
[codex:939784] 8da5cb5b 0x4dd
[codex:939784] 91b89fba 0x508
[codex:939784] 95d89b41 0x545
[codex:939784] 627749e6 0x433
[codex:939784] 6a474002 0x45e
[codex:939784] 70a08231 0x475
[codex:939784] 39509351 0x379
[codex:939784] 40b8405a 0x3b6
[codex:939784] 43d726d6 0x3df
[codex:939784] 4e7b827f 0x3f6
[codex:939784] 27ce0147 0x2e8
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing function call paths**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784] # find push2 1638 before JUMP
[codex:939784] for i,(pc,b,data) in enumerate(ops[:-1]):
[codex:939784] if b==0x61 and data.hex()==\"1638\" and ops[i+1][1]==0x56:
[codex:939784] print('call to 0x1638 at', hex(pc))
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 33ms:
[codex:939784] call to 0x1638 at 0xa7c
[codex:939784]
[codex:939784] thinking
[codex:939784] **Tracing external function calls**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0xa50,0xac0)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 30ms:
[codex:939784] 0a61: 81
[codex:939784] 0a62: 52
[codex:939784] 0a63: PUSH1 04
[codex:939784] 0a65: 01
[codex:939784] 0a66: PUSH2 0a6e
[codex:939784] 0a69: 90
[codex:939784] 0a6a: PUSH2 2551
[codex:939784] 0a6d: 56
[codex:939784] 0a6e: 5b
[codex:939784] 0a6f: PUSH1 40
[codex:939784] 0a71: 51
[codex:939784] 0a72: 80
[codex:939784] 0a73: 91
[codex:939784] 0a74: 03
[codex:939784] 0a75: 90
[codex:939784] 0a76: fd
[codex:939784] 0a77: 5b
[codex:939784] 0a78: PUSH2 0a80
[codex:939784] 0a7b: 81
[codex:939784] 0a7c: PUSH2 1638
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing internal function calls and dividend payment logic**
[codex:939784]
[codex:939784] I'm tracing internal jumps and function calls to understand how the contract processes dividend withdrawals, focusing on the `processAccount` function and how it handles sending ETH. I'm trying to determine if the call correctly sends funds to the specified account or mistakenly to `msg.sender`, which could pose a vulnerability. To clarify this, I'm simulating stack operations and execution paths from the disassembled bytecode.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0x1200,0x1280)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 27ms:
[codex:939784] 1200: 85
[codex:939784] 1201: 84
[codex:939784] 1202: 03
[codex:939784] 1203: PUSH2 146f
[codex:939784] 1206: 56
[codex:939784] 1207: 5b
[codex:939784] 1208: PUSH1 01
[codex:939784] 120a: 91
[codex:939784] 120b: 50
[codex:939784] 120c: 50
[codex:939784] 120d: 92
[codex:939784] 120e: 91
[codex:939784] 120f: 50
[codex:939784] 1210: 50
[codex:939784] 1211: 56
[codex:939784] 1212: 5b
[codex:939784] 1213: PUSH1 00
[codex:939784] 1215: PUSH2 126e
[codex:939784] 1218: PUSH1 07
[codex:939784] 121a: PUSH1 00
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing function around 0x1212 JUMPDEST**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0x0b60,0x0bc0)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 31ms:
[codex:939784] 0b60: 85
[codex:939784] 0b61: PUSH2 0b68
[codex:939784] 0b64: PUSH2 1467
[codex:939784] 0b67: 56
[codex:939784] 0b68: 5b
[codex:939784] 0b69: 85
[codex:939784] 0b6a: 84
[codex:939784] 0b6b: 03
[codex:939784] 0b6c: PUSH2 146f
[codex:939784] 0b6f: 56
[codex:939784] 0b70: 5b
[codex:939784] 0b71: PUSH1 01
[codex:939784] 0b73: 91
[codex:939784] 0b74: 50
[codex:939784] 0b75: 50
[codex:939784] 0b76: 93
[codex:939784] 0b77: 92
[codex:939784] 0b78: 50
[codex:939784] 0b79: 50
[codex:939784] 0b7a: 50
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing dividend-related internal functions**
[codex:939784]
[codex:939784] I'm piecing together the role of several internal functions related to dividend computation, like `withdrawableDividendOf` and `accumulativeDividendOf`, by examining their call patterns and stack usage. I’m using stack manipulation hints to guess function signatures and how arguments flow, focusing especially on a complex function at 0x1638 and its interactions with others like 0x1212 and 0x0b7c. I want to better understand the `claim(address)` flow and dividend processing steps by inspecting the bytecode segments.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0xa70,0xb20)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 26ms:
[codex:939784] 0a71: 51
[codex:939784] 0a72: 80
[codex:939784] 0a73: 91
[codex:939784] 0a74: 03
[codex:939784] 0a75: 90
[codex:939784] 0a76: fd
[codex:939784] 0a77: 5b
[codex:939784] 0a78: PUSH2 0a80
[codex:939784] 0a7b: 81
[codex:939784] 0a7c: PUSH2 1638
[codex:939784] 0a7f: 56
[codex:939784] 0a80: 5b
[codex:939784] 0a81: 50
[codex:939784] 0a82: 50
[codex:939784] 0a83: 56
[codex:939784] 0a84: 5b
[codex:939784] 0a85: PUSH1 00
[codex:939784] 0a87: PUSH2 0a91
[codex:939784] 0a8a: 84
[codex:939784] 0a8b: 84
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing potential vulnerabilities in contract functions**
[codex:939784]
[codex:939784] I'm carefully examining function selectors, storage updates, and call sequences to assess risks like reentrancy, unauthorized minting, or improper ETH transfers; I’m cross-referencing opcodes and event logs to understand dividend withdrawal safety and plan to script analysis of storage writes (SSTORE) to verify access controls on critical slots like ownership.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # find SSTORE opcodes
[codex:939784] for i,(pc,b,data) in enumerate(ops):
[codex:939784] if b==0x55: # SSTORE
[codex:939784] print('SSTORE at',hex(pc))
[codex:939784] # print 8 ops before
[codex:939784] for pc2,b2,d2 in ops[max(0,i-8):i+2]:
[codex:939784] if 0x60<=b2<=0x7f:
[codex:939784] print(f\" {pc2:04x}: PUSH{b2-0x5f} {d2.hex()}\")
[codex:939784] else:
[codex:939784] print(f\" {pc2:04x}: {b2:02x}\")
[codex:939784] print('---')
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 29ms:
[codex:939784] SSTORE at 0x777
[codex:939784] 076a: 90
[codex:939784] 076b: PUSH4 ffffffff
[codex:939784] 0770: 16
[codex:939784] 0771: 56
[codex:939784] 0772: 5b
[codex:939784] 0773: PUSH1 05
[codex:939784] 0775: 81
[codex:939784] 0776: 90
[codex:939784] 0777: 55
[codex:939784] 0778: 50
[codex:939784] ---
[codex:939784] SSTORE at 0x7cb
[codex:939784] 07be: 90
[codex:939784] 07bf: PUSH4 ffffffff
[codex:939784] 07c4: 16
[codex:939784] 07c5: 56
[codex:939784] 07c6: 5b
[codex:939784] 07c7: PUSH1 08
[codex:939784] 07c9: 81
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing SSTORE slot usage**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # find patterns push1 09 near sstore
[codex:939784] for i in range(len(ops)):
[codex:939784] if ops[i][1]==0x60 and ops[i][2]==b'\\t':
[codex:939784] # check following few ops for SSTORE
[codex:939784] for j in range(i, min(len(ops), i+8)):
[codex:939784] if ops[j][1]==0x55:
[codex:939784] print('PUSH1 09 near SSTORE at', hex(ops[j][0]), 'start', hex(ops[i][0]))
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 30ms:
[codex:939784]
[codex:939784]
[codex:939784] thinking
[codex:939784] **Examining access control on dividend balances**
[codex:939784]
[codex:939784] I'm carefully checking if any function, like `setBalance`, can update dividend balances without proper restrictions, which could let attackers inflate their balances and steal ETH. I plan to analyze storage writes and related access checks near key SSTORE instructions to confirm security.
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0x14f0,0x1600)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 26ms:
[codex:939784] 14f6: 16
[codex:939784] 14f7: 82
[codex:939784] 14f8: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:939784] 150d: 16
[codex:939784] 150e: 03
[codex:939784] 150f: PUSH2 154d
[codex:939784] 1512: 57
[codex:939784] 1513: PUSH1 40
[codex:939784] 1515: 51
[codex:939784] 1516: PUSH32 08c379a000000000000000000000000000000000000000000000000000000000
[codex:939784] 1537: 81
[codex:939784] 1538: 52
[codex:939784] 1539: PUSH1 04
[codex:939784] 153b: 01
[codex:939784] 153c: PUSH2 1544
[codex:939784] 153f: 90
[codex:939784] 1540: PUSH2 2ab9
[codex:939784] 1543: 56
[codex:939784] 1544: 5b
[codex:939784] 1545: PUSH1 40
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing access checks and storage operations**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784]
[codex:939784] def print_range(start,end):
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784]
[codex:939784] print_range(0xc40,0xd20)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 28ms:
[codex:939784] 0c40: PUSH1 09
[codex:939784] 0c42: PUSH1 00
[codex:939784] 0c44: 90
[codex:939784] 0c45: 54
[codex:939784] 0c46: 90
[codex:939784] 0c47: PUSH2 0100
[codex:939784] 0c4a: 0a
[codex:939784] 0c4b: 90
[codex:939784] 0c4c: 04
[codex:939784] 0c4d: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:939784] 0c62: 16
[codex:939784] 0c63: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:939784] 0c78: 16
[codex:939784] 0c79: 14
[codex:939784] 0c7a: PUSH2 0c82
[codex:939784] 0c7d: 57
[codex:939784] 0c7e: PUSH1 00
[codex:939784] 0c80: 80
[codex:939784] 0c81: fd
[codex:939784] 0c82: 5b
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing owner-restricted functions and dividend mappings**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] try:
[codex:939784] import sha3
[codex:939784] print('sha3 ok')
[codex:939784] except Exception as e:
[codex:939784] print('sha3 missing', e)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 19ms:
[codex:939784] sha3 missing No module named 'sha3'
[codex:939784]
[codex:939784] thinking
[codex:939784] **Considering SHA3 alternatives**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] try:
[codex:939784] from eth_hash.auto import keccak
[codex:939784] print('eth_hash ok', keccak(b'test').hex())
[codex:939784] except Exception as e:
[codex:939784] print('eth_hash missing', e)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 97ms:
[codex:939784] eth_hash ok 9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658
[codex:939784]
[codex:939784] thinking
[codex:939784] **Generating selectors from eth_hash**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=[
[codex:939784] 'setBalance(address,uint256)',
[codex:939784] 'excludeFromDividends(address)',
[codex:939784] 'process(uint256)',
[codex:939784] 'processAccount(address,bool)',
[codex:939784] 'claim()',
[codex:939784] 'withdrawDividend()',
[codex:939784] 'getAccount(address)',
[codex:939784] 'getAccountAtIndex(uint256)',
[codex:939784] 'getNumberOfTokenHolders()',
[codex:939784] 'updateClaimWait(uint256)',
[codex:939784] 'owner()',
[codex:939784] 'transferOwnership(address)',
[codex:939784] 'renounceOwnership()',
[codex:939784] 'setMinBalanceForDividends(uint256)',
[codex:939784] 'setDividendsDistributed(address,uint256)',
[codex:939784] 'setMaxTokenBalanceForDividends(uint256)',
[codex:939784] ]
[codex:939784] for sig in sigs:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 76ms:
[codex:939784] setBalance(address,uint256) e30443bc
[codex:939784] excludeFromDividends(address) 31e79db0
[codex:939784] process(uint256) ffb2c479
[codex:939784] processAccount(address,bool) bc4c4b37
[codex:939784] claim() 4e71d92d
[codex:939784] withdrawDividend() 6a474002
[codex:939784] getAccount(address) fbcbc0f1
[codex:939784] getAccountAtIndex(uint256) 5183d6fd
[codex:939784] getNumberOfTokenHolders() 09bbedde
[codex:939784] updateClaimWait(uint256) e98030c7
[codex:939784] owner() 8da5cb5b
[codex:939784] transferOwnership(address) f2fde38b
[codex:939784] renounceOwnership() 715018a6
[codex:939784] setMinBalanceForDividends(uint256) 9d7ceafb
[codex:939784] setDividendsDistributed(address,uint256) 9050ef9f
[codex:939784] setMaxTokenBalanceForDividends(uint256) cf530585
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing contract selectors and roles**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=['distributeDividends()','setBalance(address,uint256)','setBalance(address,uint256,bool)','setExcluded(address,bool)','setExcludedFromDividends(address)','setExcludedFromDividends(address,bool)','excludeFromDividends(address)','includeInDividends(address)','setDividendTokenAddress(address)','updateClaimWait(uint256)','process(uint256)','claim(address)','claim()','withdrawDividend()','withdrawDividend(address)','getAccount(address)','getAccount(address,bool)','getAccountAtIndex(uint256)','getLastProcessedIndex()','setLastProcessedIndex(uint256)','setMinBalanceForDividends(uint256)','setGasForProcessing(uint256)','processAccount(address,bool)','isExcludedFromDividends(address)','isExcludedFromDividends(address,bool)','setBalance(address)']
[codex:939784] for sig in sigs:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 75ms:
[codex:939784] distributeDividends() 03c83302
[codex:939784] setBalance(address,uint256) e30443bc
[codex:939784] setBalance(address,uint256,bool) 059ef8d7
[codex:939784] setExcluded(address,bool) 2836be24
[codex:939784] setExcludedFromDividends(address) bffec5b3
[codex:939784] setExcludedFromDividends(address,bool) d429293b
[codex:939784] excludeFromDividends(address) 31e79db0
[codex:939784] includeInDividends(address) c0f306ef
[codex:939784] setDividendTokenAddress(address) 7e3e7fd2
[codex:939784] updateClaimWait(uint256) e98030c7
[codex:939784] process(uint256) ffb2c479
[codex:939784] claim(address) 1e83409a
[codex:939784] claim() 4e71d92d
[codex:939784] withdrawDividend() 6a474002
[codex:939784] withdrawDividend(address) 9c53c0ca
[codex:939784] getAccount(address) fbcbc0f1
[codex:939784] getAccount(address,bool) 296bbad8
[codex:939784] getAccountAtIndex(uint256) 5183d6fd
[codex:939784] getLastProcessedIndex() e7841ec0
[codex:939784] setLastProcessedIndex(uint256) 286b3aa0
[codex:939784]
[codex:939784] thinking
[codex:939784] **Investigating claim(address) function vulnerability**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # print around dest 0x282
[codex:939784] start=0x270
[codex:939784] end=0x2c0
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 27ms:
[codex:939784] 0270: PUSH2 0279
[codex:939784] 0273: 91
[codex:939784] 0274: 90
[codex:939784] 0275: PUSH2 2129
[codex:939784] 0278: 56
[codex:939784] 0279: 5b
[codex:939784] 027a: PUSH1 40
[codex:939784] 027c: 51
[codex:939784] 027d: 80
[codex:939784] 027e: 91
[codex:939784] 027f: 03
[codex:939784] 0280: 90
[codex:939784] 0281: f3
[codex:939784] 0282: 5b
[codex:939784] 0283: 34
[codex:939784] 0284: 80
[codex:939784] 0285: 15
[codex:939784] 0286: PUSH2 028e
[codex:939784] 0289: 57
[codex:939784] 028a: PUSH1 00
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing claim function internals**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] # disasm
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # print around 0x09be
[codex:939784] start=0x09a0
[codex:939784] end=0x0a20
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 28ms:
[codex:939784] 09a2: 56
[codex:939784] 09a3: 5b
[codex:939784] 09a4: 84
[codex:939784] 09a5: 84
[codex:939784] 09a6: PUSH2 146f
[codex:939784] 09a9: 56
[codex:939784] 09aa: 5b
[codex:939784] 09ab: PUSH1 01
[codex:939784] 09ad: 90
[codex:939784] 09ae: 50
[codex:939784] 09af: 92
[codex:939784] 09b0: 91
[codex:939784] 09b1: 50
[codex:939784] 09b2: 50
[codex:939784] 09b3: 56
[codex:939784] 09b4: 5b
[codex:939784] 09b5: PUSH1 00
[codex:939784] 09b7: PUSH1 02
[codex:939784] 09b9: 54
[codex:939784] 09ba: 90
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing claim(address) function access**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=['withdrawDividendOfUser(address)','accumulativeDividendOf(address)','withdrawableDividendOf(address)','dividendToken()','setDividendTokenAddress(address)','dividendTokenAddress()','tokenAddress()','setTokenAddress(address)','setOwner(address)','setMainToken(address)','setToken(address)','setBalance(address,uint256)','setBalance(address,uint256,bool)','setBalance(address,bool)','setBalance(address)','swapTokensForEth(uint256)','swapAndSendDividends(uint256)','updateClaims(address)','updateClaimWait(uint256)','updateMinimumTokenBalanceForDividends(uint256)','processAccount(address,bool)','processAccount(address)','process(uint256)','claim(address)','claim()','setClaimWait(uint256)']
[codex:939784] for sig in sigs:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] if sel in ['4e7b827f','40b8405a','43d726d6','27ce0147','39509351','a457c2d7','a8b9d240','aafd847a','c9e7cc13','85a6b3ae','91b89fba','627749e6']:
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 83ms:
[codex:939784] accumulativeDividendOf(address) 27ce0147
[codex:939784] withdrawableDividendOf(address) a8b9d240
[codex:939784]
[codex:939784] thinking
[codex:939784] **Identifying known and potential selectors**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=['magnifiedDividendPerShare()','magnifiedDividendCorrections(address)','withdrawnDividends(address)','totalDividendsDistributed()','totalDividendsWithdrawn()','dividendToken()','dividendTokenAddress()','dividendTokenBalanceOf(address)','getAccount(address)','getAccount(address,bool)','updateClaimWait(uint256)','updateMinimumTokenBalanceForDividends(uint256)','claimWait()','lastClaimTimes(address)','lastClaimTime(address)','getLastClaimTime(address)','getLastProcessedIndex()','setLastProcessedIndex(uint256)','getNumberOfTokenHolders()','getClaimWait()','getTotalDividendsDistributed()','getTotalDividendsWithdrawn()']
[codex:939784] unknown=['4e7b827f','40b8405a','43d726d6','39509351','627749e6','a457c2d7','aafd847a','c9e7cc13','85a6b3ae','91b89fba']
[codex:939784] for sig in sigs:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] if sel in unknown:
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 72ms:
[codex:939784] totalDividendsDistributed() 85a6b3ae
[codex:939784]
[codex:939784] thinking
[codex:939784] **Checking more contract methods**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=['magnifiedDividendPerShare()','dividendToken()','dividendTokenAddress()','magnifiedDividendCorrections(address)','withdrawnDividendOf(address)','withdrawnDividendOf(address)','withdrawnDividendOf(address)','withdrawnDividends(address)','claimWait()','getClaimWait()','getLastClaimTime(address)','lastClaimTimes(address)','lastClaimTime(address)','getAccount(address)','tokenHoldersMap()','totalDividendsDistributed()','totalDividendsWithdrawn()','dividendBalanceOf(address)','balanceOf(address)','excludedFromDividends(address)','isExcludedFromDividends(address)','lastProcessedIndex()','getLastProcessedIndex()','totalSupply()','getAccountAtIndex(uint256)','getNumberOfTokenHolders()','totalDividends()','dividendOf(address)','dividendTokenBalance()','getDividendsDistributed()','dividendsDistributed()']
[codex:939784] unknown=['4e7b827f','40b8405a','43d726d6','39509351','627749e6','a457c2d7','aafd847a','c9e7cc13','91b89fba']
[codex:939784] for sig in sigs:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] if sel in unknown:
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 76ms:
[codex:939784] withdrawnDividendOf(address) aafd847a
[codex:939784] withdrawnDividendOf(address) aafd847a
[codex:939784] withdrawnDividendOf(address) aafd847a
[codex:939784] excludedFromDividends(address) 4e7b827f
[codex:939784] dividendOf(address) 91b89fba
[codex:939784]
[codex:939784] thinking
[codex:939784] **Continuing function selector matching**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] cands=[
[codex:939784] 'magnifiedDividendPerShare()',
[codex:939784] 'magnifiedDividendCorrections(address)',
[codex:939784] 'withdrawnDividends(address)',
[codex:939784] 'withdrawnDividendOf(address)',
[codex:939784] 'claimWait()',
[codex:939784] 'getClaimWait()',
[codex:939784] 'getLastClaimTime(address)',
[codex:939784] 'lastClaimTimes(address)',
[codex:939784] 'lastClaimTime(address)',
[codex:939784] 'lastProcessedIndex()',
[codex:939784] 'getLastProcessedIndex()',
[codex:939784] 'totalDividendsDistributed()',
[codex:939784] 'totalDividendsWithdrawn()',
[codex:939784] 'minimumTokenBalanceForDividends()',
[codex:939784] 'minimumTokenBalanceForDividends(uint256)',
[codex:939784] 'minTokenBalanceForDividends()',
[codex:939784] 'minTokensForDividends()',
[codex:939784] 'minTokensForDividends(uint256)',
[codex:939784] 'minBalanceForDividends()',
[codex:939784] 'minBalanceForDividends(uint256)',
[codex:939784] 'setMinBalanceForDividends(uint256)',
[codex:939784] 'getMinBalanceForDividends()',
[codex:939784] 'getMinBalance()',
[codex:939784] 'updateMinimumTokenBalanceForDividends(uint256)',
[codex:939784] 'minimumTokensForDividends()',
[codex:939784] 'gasForProcessing()',
[codex:939784] 'setGasForProcessing(uint256)',
[codex:939784] 'getGasForProcessing()',
[codex:939784] 'process(uint256)',
[codex:939784] 'processAccount(address,bool)',
[codex:939784] 'processAccount(address)',
[codex:939784] 'claim(address)',
[codex:939784] 'claim()',
[codex:939784] 'excludeFromDividends(address)',
[codex:939784] 'includeInDividends(address)',
[codex:939784] 'getNumberOfTokenHolders()',
[codex:939784] 'getTotalDividendsDistributed()',
[codex:939784] 'getTotalDividendsWithdrawn()',
[codex:939784] 'totalDividends()',
[codex:939784] 'dividendToken()','dividendTokenAddress()','tokenAddress()','getDividendToken()','rewardToken()','rewardsToken()','rewardTokenAddress()','getRewardToken()','setRewardToken(address)',
[codex:939784] ]
[codex:939784] unknown=['40b8405a','43d726d6','39509351','627749e6','a457c2d7','c9e7cc13']
[codex:939784] for sig in cands:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] if sel in unknown:
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 82ms:
[codex:939784]
[codex:939784]
[codex:939784] thinking
[codex:939784] **Trying possible function signatures**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] cands=[
[codex:939784] 'setExcludedFromDividends(address)',
[codex:939784] 'setExcludedFromDividends(address,bool)',
[codex:939784] 'excludeFromDividends(address)',
[codex:939784] 'includeInDividends(address)',
[codex:939784] 'setBalance(address,uint256)',
[codex:939784] 'setBalance(address,uint256,bool)',
[codex:939784] 'setBalance(address,uint256,uint256)',
[codex:939784] 'setBalance(address,uint256,bool,bool)',
[codex:939784] 'setBalance(address)',
[codex:939784] 'setTokenBalance(address,uint256)',
[codex:939784] 'setTokenBalance(address)',
[codex:939784] 'setBalanceForDividends(address,uint256)',
[codex:939784] 'setShare(address,uint256)',
[codex:939784] 'setShares(address,uint256)',
[codex:939784] 'setShare(address,uint256,bool)',
[codex:939784] 'setShare(address,uint256,bool)',
[codex:939784] 'setDividendToken(address)',
[codex:939784] 'setDividendTokenAddress(address)',
[codex:939784] 'setClaimWait(uint256)',
[codex:939784] 'setLastProcessedIndex(uint256)',
[codex:939784] 'setMinimumTokenBalanceForDividends(uint256)',
[codex:939784] 'updateMinimumTokenBalanceForDividends(uint256)',
[codex:939784] 'updateMinBalanceForDividends(uint256)',
[codex:939784] 'setMinBalanceForDividends(uint256)',
[codex:939784] 'setMinTokensForDividends(uint256)',
[codex:939784] 'setMaxTokenBalanceForDividends(uint256)',
[codex:939784] 'setMaxTokenBalanceForDividends(uint256)',
[codex:939784] 'setMaxBalanceForDividends(uint256)',
[codex:939784] 'getMinTokenBalanceForDividends()',
[codex:939784] 'minTokensForDividends()',
[codex:939784] 'minBalanceForDividends()',
[codex:939784] 'minTokensForDividends(uint256)',
[codex:939784] 'minBalanceForDividends(uint256)',
[codex:939784] 'setToken(address)',
[codex:939784] 'setTokenAddress(address)',
[codex:939784] 'setMainToken(address)',
[codex:939784] 'setTracker(address)',
[codex:939784] 'setDividendTracker(address)',
[codex:939784] 'setDividendTracker(address,bool)',
[codex:939784] ]
[codex:939784] unknown=['40b8405a','43d726d6','39509351','627749e6','a457c2d7','c9e7cc13']
[codex:939784] for sig in cands:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] if sel in unknown:
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 71ms:
[codex:939784]
[codex:939784]
[codex:939784] thinking
[codex:939784] **Mapping uncommon function selectors**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=['increaseAllowance(address,uint256)','decreaseAllowance(address,uint256)','burn(uint256)','burnFrom(address,uint256)','mint(address,uint256)','_mint(address,uint256)','_burn(address,uint256)','_burnFrom(address,uint256)','permit(address,address,uint256,uint256,uint8,bytes32,bytes32)','nonces(address)','DOMAIN_SEPARATOR()','name()','symbol()','decimals()','totalSupply()','balanceOf(address)']
[codex:939784] for sig in sigs:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] if sel in ['40b8405a','43d726d6','627749e6','c9e7cc13']:
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 83ms:
[codex:939784]
[codex:939784]
[codex:939784] thinking
[codex:939784] **Identifying unknown function selectors**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=['withdrawDividendOfUser(address)','withdrawDividendOfUser(address,bool)','_withdrawDividendOfUser(address)','withdrawDividendOfUser(address,uint256)','setDistributionCriteria(uint256,uint256)','setShare(address,uint256)','setShares(address,uint256)','getShare(address)','getShares(address)','getUnpaidEarnings(address)','getCumulativeDividends(uint256)','getCumulativeDividends(uint256,bool)','getCumulativeDividends(address)','setDistributionCriteria(uint256,uint256)','setDistributionCriteria(uint256)','setDistributionCriteria(uint256,uint256,uint256)','setDistributionCriteria(uint256,uint256,uint256,uint256)','distributeDividend(uint256)','distributeDividend()','setRewardToken(address)','setRewardsToken(address)','setRewardsToken(address,bool)','setRewardsToken(address,uint256)','setRewardsToken(address,uint256,bool)','setShareholder(address)','setShareholder(address,bool)','addShareholder(address)','removeShareholder(address)']
[codex:939784] unknown=['40b8405a','43d726d6','627749e6','c9e7cc13']
[codex:939784] for sig in sigs:
[codex:939784] sel=keccak(sig.encode())[:4].hex()
[codex:939784] if sel in unknown:
[codex:939784] print(sig, sel)
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 71ms:
[codex:939784]
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing unknown function selectors**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # print around 0x3b6
[codex:939784] start=0x3b0
[codex:939784] end=0x420
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 27ms:
[codex:939784] 03b0: 51
[codex:939784] 03b1: 80
[codex:939784] 03b2: 91
[codex:939784] 03b3: 03
[codex:939784] 03b4: 90
[codex:939784] 03b5: f3
[codex:939784] 03b6: 5b
[codex:939784] 03b7: 34
[codex:939784] 03b8: 80
[codex:939784] 03b9: 15
[codex:939784] 03ba: PUSH2 03c2
[codex:939784] 03bd: 57
[codex:939784] 03be: PUSH1 00
[codex:939784] 03c0: 80
[codex:939784] 03c1: fd
[codex:939784] 03c2: 5b
[codex:939784] 03c3: 50
[codex:939784] 03c4: PUSH2 03dd
[codex:939784] 03c7: PUSH1 04
[codex:939784] 03c9: 80
[codex:939784]
[codex:939784] thinking
[codex:939784] **Tracing function call at 0x0dd7**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] import re
[codex:939784] hexstr=re.search(r'0x([0-9a-fA-F]+)', open('BYTECODE_BUNDLE.txt').read()).group(1)
[codex:939784] code=bytes.fromhex(hexstr)[:11716]
[codex:939784] ops=[]
[codex:939784] pc=0
[codex:939784] while pc<len(code):
[codex:939784] b=code[pc]
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] n=b-0x5f
[codex:939784] data=code[pc+1:pc+1+n]
[codex:939784] ops.append((pc,b,data))
[codex:939784] pc+=1+n
[codex:939784] else:
[codex:939784] ops.append((pc,b,None))
[codex:939784] pc+=1
[codex:939784]
[codex:939784] # print around 0x0dd7
[codex:939784] start=0x0dc0
[codex:939784] end=0x0e40
[codex:939784] for pc,b,d in ops:
[codex:939784] if start<=pc<=end:
[codex:939784] if 0x60<=b<=0x7f:
[codex:939784] print(f\"{pc:04x}: PUSH{b-0x5f} {d.hex()}\")
[codex:939784] else:
[codex:939784] print(f\"{pc:04x}: {b:02x}\")
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 30ms:
[codex:939784] 0dc2: 91
[codex:939784] 0dc3: 90
[codex:939784] 0dc4: PUSH2 23bf
[codex:939784] 0dc7: 56
[codex:939784] 0dc8: 5b
[codex:939784] 0dc9: PUSH2 146f
[codex:939784] 0dcc: 56
[codex:939784] 0dcd: 5b
[codex:939784] 0dce: PUSH1 01
[codex:939784] 0dd0: 90
[codex:939784] 0dd1: 50
[codex:939784] 0dd2: 92
[codex:939784] 0dd3: 91
[codex:939784] 0dd4: 50
[codex:939784] 0dd5: 50
[codex:939784] 0dd6: 56
[codex:939784] 0dd7: 5b
[codex:939784] 0dd8: PUSH1 0b
[codex:939784] 0dda: PUSH1 00
[codex:939784] 0ddc: 82
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing address exclusion and token balance function**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sig='dividendTokenBalanceOf(address)'
[codex:939784] print(sig, keccak(sig.encode())[:4].hex())
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 86ms:
[codex:939784] dividendTokenBalanceOf(address) 6843cd84
[codex:939784]
[codex:939784] thinking
[codex:939784] **Analyzing dividend and token functions**
[codex:939784] exec
[codex:939784] /bin/bash -lc "python -B - <<'PY'
[codex:939784] from eth_hash.auto import keccak
[codex:939784] sigs=['mint(address,uint256)','mint(uint256)','burn(uint256)','burnFrom(address,uint256)','burnFrom(address,uint256)','_mint(address,uint256)','_burn(address,uint256)','_burn(address,uint256,bool)','_burnFrom(address,uint256)']
[codex:939784] for sig in sigs:
[codex:939784] print(sig, keccak(sig.encode())[:4].hex())
[codex:939784] PY" in /tmp/codex-multi-64wuzm2e succeeded in 71ms:
[codex:939784] mint(address,uint256) 40c10f19
[codex:939784] mint(uint256) a0712d68
[codex:939784] burn(uint256) 42966c68
[codex:939784] burnFrom(address,uint256) 79cc6790
[codex:939784] burnFrom(address,uint256) 79cc6790
[codex:939784] _mint(address,uint256) 4e6ec247
[codex:939784] _burn(address,uint256) 6161eb18
[codex:939784] _burn(address,uint256,bool) 6c14cef8
[codex:939784] _burnFrom(address,uint256) a22b35ce
[codex:939784]
[codex:939784] thinking
[codex:939784] **Confirming absence of exploits**
[codex:939784] codex
[codex:939784] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths identified from the provided bytecode.","findings":[]}
[codex:939784] tokens used
[codex:939784] 143,161
[codex:939784] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths identified from the provided bytecode.","findings":[]}
{
"codex": {
"ran_at": "2026-01-04T04:22:55.216679+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction paths identified from the provided bytecode.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction paths identified from the provided bytecode.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x01ba 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x627749e6 00000019: GT 0000001a: PUSH2 0x00ec 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xa457c2d7 00000024: GT 00000025: PUSH2 0x008a 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xaafd847a 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xaafd847a 0000003a: EQ 0000003b: PUSH2 0x0627 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xc9e7cc13 00000045: EQ 00000046: PUSH2 0x0664 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xdd62ed3e 00000050: EQ 00000051: PUSH2 0x068f 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfbcbc0f1 0000005b: EQ 0000005c: PUSH2 0x06cc 0000005f: JUMPI 00000060: PUSH2 0x01c9 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xa457c2d7 0000006b: EQ 0000006c: PUSH2 0x0570 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xa8b9d240 00000076: EQ 00000077: PUSH2 0x05ad 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xa9059cbb 00000081: EQ 00000082: PUSH2 0x05ea 00000085: JUMPI 00000086: PUSH2 0x01c9 00000089: JUMP 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0x85a6b3ae 00000091: GT 00000092: PUSH2 0x00c6 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0x85a6b3ae 0000009c: EQ 0000009d: PUSH2 0x04b2 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x8da5cb5b 000000a7: EQ 000000a8: PUSH2 0x04dd 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x91b89fba 000000b2: EQ 000000b3: PUSH2 0x0508 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x95d89b41 000000bd: EQ 000000be: PUSH2 0x0545 000000c1: JUMPI 000000c2: PUSH2 0x01c9 000000c5: JUMP 000000c6: JUMPDEST 000000c7: DUP1 000000c8: PUSH4 0x627749e6 000000cd: EQ 000000ce: PUSH2 0x0433 000000d1: JUMPI 000000d2: DUP1 000000d3: PUSH4 0x6a474002 000000d8: EQ 000000d9: PUSH2 0x045e 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x70a08231 000000e3: EQ 000000e4: PUSH2 0x0475 000000e7: JUMPI 000000e8: PUSH2 0x01c9 000000eb: JUMP 000000ec: JUMPDEST 000000ed: DUP1 000000ee: PUSH4 0x27ce0147 000000f3: GT 000000f4: PUSH2 0x0159 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x39509351 000000fe: GT 000000ff: PUSH2 0x0133 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x39509351 00000109: EQ 0000010a: PUSH2 0x0379 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x40b8405a 00000114: EQ 00000115: PUSH2 0x03b6 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x43d726d6 0000011f: EQ 00000120: PUSH2 0x03df 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x4e7b827f 0000012a: EQ 0000012b: PUSH2 0x03f6 0000012e: JUMPI 0000012f: PUSH2 0x01c9 00000132: JUMP 00000133: JUMPDEST 00000134: DUP1 00000135: PUSH4 0x27ce0147 0000013a: EQ 0000013b: PUSH2 0x02e8 0000013e: JUMPI 0000013f: DUP1 00000140: PUSH4 0x313ce567 00000145: EQ 00000146: PUSH2 0x0325 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH4 0x31e79db0 00000150: EQ 00000151: PUSH2 0x0350 00000154: JUMPI 00000155: PUSH2 0x01c9 00000158: JUMP 00000159: JUMPDEST 0000015a: DUP1 0000015b: PUSH4 0x095ea7b3 00000160: GT 00000161: PUSH2 0x0195 00000164: JUMPI 00000165: DUP1 00000166: PUSH4 0x095ea7b3 0000016b: EQ 0000016c: PUSH2 0x021a 0000016f: JUMPI 00000170: DUP1 00000171: PUSH4 0x18160ddd 00000176: EQ 00000177: PUSH2 0x0257 0000017a: JUMPI 0000017b: DUP1 0000017c: PUSH4 0x1e83409a 00000181: EQ 00000182: PUSH2 0x0282 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0x23b872dd 0000018c: EQ 0000018d: PUSH2 0x02ab 00000190: JUMPI 00000191: PUSH2 0x01c9 00000194: JUMP 00000195: JUMPDEST 00000196: DUP1 00000197: PUSH3 0x788b56 0000019b: EQ 0000019c: PUSH2 0x01ce 0000019f: JUMPI 000001a0: DUP1 000001a1: PUSH4 0x03c83302 000001a6: EQ 000001a7: PUSH2 0x01e5 000001aa: JUMPI 000001ab: DUP1 000001ac: PUSH4 0x06fdde03 000001b1: EQ 000001b2: PUSH2 0x01ef 000001b5: JUMPI 000001b6: PUSH2 0x01c9 000001b9: JUMP 000001ba: JUMPDEST 000001bb: CALLDATASIZE 000001bc: PUSH2 0x01c9 000001bf: JUMPI 000001c0: PUSH2 0x01c7 000001c3: PUSH2 0x070b 000001c6: JUMP 000001c7: JUMPDEST 000001c8: STOP 000001c9: JUMPDEST 000001ca: PUSH1 0x00 000001cc: DUP1 000001cd: REVERT 000001ce: JUMPDEST 000001cf: CALLVALUE 000001d0: DUP1 000001d1: ISZERO 000001d2: PUSH2 0x01da 000001d5: JUMPI 000001d6: PUSH1 0x00 000001d8: DUP1 000001d9: REVERT 000001da: JUMPDEST 000001db: POP 000001dc: PUSH2 0x01e3 000001df: PUSH2 0x07cf 000001e2: JUMP 000001e3: JUMPDEST 000001e4: STOP 000001e5: JUMPDEST 000001e6: PUSH2 0x01ed 000001e9: PUSH2 0x070b 000001ec: JUMP 000001ed: JUMPDEST 000001ee: STOP 000001ef: JUMPDEST 000001f0: CALLVALUE 000001f1: DUP1 000001f2: ISZERO 000001f3: PUSH2 0x01fb 000001f6: JUMPI 000001f7: PUSH1 0x00 000001f9: DUP1 000001fa: REVERT 000001fb: JUMPDEST 000001fc: POP 000001fd: PUSH2 0x0204 00000200: PUSH2 0x0904 00000203: JUMP 00000204: JUMPDEST 00000205: PUSH1 0x40 00000207: MLOAD 00000208: PUSH2 0x0211 0000020b: SWAP2 0000020c: SWAP1 0000020d: PUSH2 0x1fe9 00000210: JUMP 00000211: JUMPDEST 00000212: PUSH1 0x40 00000214: MLOAD 00000215: DUP1 00000216: SWAP2 00000217: SUB 00000218: SWAP1 00000219: RETURN 0000021a: JUMPDEST 0000021b: CALLVALUE 0000021c: DUP1 0000021d: ISZERO 0000021e: PUSH2 0x0226 00000221: JUMPI 00000222: PUSH1 0x00 00000224: DUP1 00000225: REVERT 00000226: JUMPDEST 00000227: POP 00000228: PUSH2 0x0241 0000022b: PUSH1 0x04 0000022d: DUP1 0000022e: CALLDATASIZE 0000022f: SUB 00000230: DUP2 00000231: ADD 00000232: SWAP1 00000233: PUSH2 0x023c 00000236: SWAP2 00000237: SWAP1 00000238: PUSH2 0x20a4 0000023b: JUMP 0000023c: JUMPDEST 0000023d: PUSH2 0x0996 00000240: JUMP 00000241: JUMPDEST 00000242: PUSH1 0x40 00000244: MLOAD 00000245: PUSH2 0x024e 00000248: SWAP2 00000249: SWAP1 0000024a: PUSH2 0x20ff 0000024d: JUMP 0000024e: JUMPDEST 0000024f: PUSH1 0x40 00000251: MLOAD 00000252: DUP1 00000253: SWAP2 00000254: SUB 00000255: SWAP1 00000256: RETURN 00000257: JUMPDEST 00000258: CALLVALUE 00000259: DUP1 0000025a: ISZERO 0000025b: PUSH2 0x0263 0000025e: JUMPI 0000025f: PUSH1 0x00 00000261: DUP1 00000262: REVERT 00000263: JUMPDEST 00000264: POP 00000265: PUSH2 0x026c 00000268: PUSH2 0x09b4 0000026b: JUMP 0000026c: JUMPDEST 0000026d: PUSH1 0x40 0000026f: MLOAD 00000270: PUSH2 0x0279 00000273: SWAP2 00000274: SWAP1 00000275: PUSH2 0x2129 00000278: JUMP 00000279: JUMPDEST 0000027a: PUSH1 0x40 0000027c: MLOAD 0000027d: DUP1 0000027e: SWAP2 0000027f: SUB 00000280: SWAP1 00000281: RETURN 00000282: JUMPDEST 00000283: CALLVALUE 00000284: DUP1 00000285: ISZERO 00000286: PUSH2 0x028e 00000289: JUMPI 0000028a: PUSH1 0x00 0000028c: DUP1 0000028d: REVERT 0000028e: JUMPDEST 0000028f: POP 00000290: PUSH2 0x02a9 00000293: PUSH1 0x04 00000295: DUP1 00000296: CALLDATASIZE 00000297: SUB 00000298: DUP2 00000299: ADD 0000029a: SWAP1 0000029b: PUSH2 0x02a4 0000029e: SWAP2 0000029f: SWAP1 000002a0: PUSH2 0x2144 000002a3: JUMP 000002a4: JUMPDEST 000002a5: PUSH2 0x09be 000002a8: JUMP 000002a9: JUMPDEST 000002aa: STOP 000002ab: JUMPDEST 000002ac: CALLVALUE 000002ad: DUP1 000002ae: ISZERO 000002af: PUSH2 0x02b7 000002b2: JUMPI 000002b3: PUSH1 0x00 000002b5: DUP1 000002b6: REVERT 000002b7: JUMPDEST 000002b8: POP 000002b9: PUSH2 0x02d2 000002bc: PUSH1 0x04 000002be: DUP1 000002bf: CALLDATASIZE 000002c0: SUB 000002c1: DUP2 000002c2: ADD 000002c3: SWAP1 000002c4: PUSH2 0x02cd 000002c7: SWAP2 000002c8: SWAP1 000002c9: PUSH2 0x2171 000002cc: JUMP 000002cd: JUMPDEST 000002ce: PUSH2 0x0a84 000002d1: JUMP 000002d2: JUMPDEST 000002d3: PUSH1 0x40 000002d5: MLOAD 000002d6: PUSH2 0x02df 000002d9: SWAP2 000002da: SWAP1 000002db: PUSH2 0x20ff 000002de: JUMP 000002df: JUMPDEST 000002e0: PUSH1 0x40 000002e2: MLOAD 000002e3: DUP1 000002e4: SWAP2 000002e5: SUB 000002e6: SWAP1 000002e7: RETURN 000002e8: JUMPDEST 000002e9: CALLVALUE 000002ea: DUP1 000002eb: ISZERO 000002ec: PUSH2 0x02f4 000002ef: JUMPI 000002f0: PUSH1 0x00 000002f2: DUP1 000002f3: REVERT 000002f4: JUMPDEST 000002f5: POP 000002f6: PUSH2 0x030f 000002f9: PUSH1 0x04 000002fb: DUP1 000002fc: CALLDATASIZE 000002fd: SUB 000002fe: DUP2 000002ff: ADD 00000300: SWAP1 00000301: PUSH2 0x030a 00000304: SWAP2 00000305: SWAP1 00000306: PUSH2 0x2144 00000309: JUMP 0000030a: JUMPDEST 0000030b: PUSH2 0x0b7c 0000030e: JUMP 0000030f: JUMPDEST 00000310: PUSH1 0x40 00000312: MLOAD 00000313: PUSH2 0x031c 00000316: SWAP2 00000317: SWAP1 00000318: PUSH2 0x2129 0000031b: JUMP 0000031c: JUMPDEST 0000031d: PUSH1 0x40 0000031f: MLOAD 00000320: DUP1 00000321: SWAP2 00000322: SUB 00000323: SWAP1 00000324: RETURN 00000325: JUMPDEST 00000326: CALLVALUE 00000327: DUP1 00000328: ISZERO 00000329: PUSH2 0x0331 0000032c: JUMPI 0000032d: PUSH1 0x00 0000032f: DUP1 00000330: REVERT 00000331: JUMPDEST 00000332: POP 00000333: PUSH2 0x033a 00000336: PUSH2 0x0c1f 00000339: JUMP 0000033a: JUMPDEST 0000033b: PUSH1 0x40 0000033d: MLOAD 0000033e: PUSH2 0x0347 00000341: SWAP2 00000342: SWAP1 00000343: PUSH2 0x21e0 00000346: JUMP 00000347: JUMPDEST 00000348: PUSH1 0x40 0000034a: MLOAD 0000034b: DUP1 0000034c: SWAP2 0000034d: SUB 0000034e: SWAP1 0000034f: RETURN 00000350: JUMPDEST 00000351: CALLVALUE 00000352: DUP1 00000353: ISZERO 00000354: PUSH2 0x035c 00000357: JUMPI 00000358: PUSH1 0x00 0000035a: DUP1 0000035b: REVERT 0000035c: JUMPDEST 0000035d: POP 0000035e: PUSH2 0x0377 00000361: PUSH1 0x04 00000363: DUP1 00000364: CALLDATASIZE 00000365: SUB 00000366: DUP2 00000367: ADD 00000368: SWAP1 00000369: PUSH2 0x0372 0000036c: SWAP2 0000036d: SWAP1 0000036e: PUSH2 0x2144 00000371: JUMP 00000372: JUMPDEST 00000373: PUSH2 0x0c28 00000376: JUMP 00000377: JUMPDEST 00000378: STOP 00000379: JUMPDEST 0000037a: CALLVALUE 0000037b: DUP1 0000037c: ISZERO 0000037d: PUSH2 0x0385 00000380: JUMPI 00000381: PUSH1 0x00 00000383: DUP1 00000384: REVERT 00000385: JUMPDEST 00000386: POP 00000387: PUSH2 0x03a0 0000038a: PUSH1 0x04 0000038c: DUP1 0000038d: CALLDATASIZE 0000038e: SUB 0000038f: DUP2 00000390: ADD 00000391: SWAP1 00000392: PUSH2 0x039b 00000395: SWAP2 00000396: SWAP1 00000397: PUSH2 0x20a4 0000039a: JUMP 0000039b: JUMPDEST 0000039c: PUSH2 0x0d2b 0000039f: JUMP 000003a0: JUMPDEST 000003a1: PUSH1 0x40 000003a3: MLOAD 000003a4: PUSH2 0x03ad 000003a7: SWAP2 000003a8: SWAP1 000003a9: PUSH2 0x20ff 000003ac: JUMP 000003ad: JUMPDEST 000003ae: PUSH1 0x40 000003b0: MLOAD 000003b1: DUP1 000003b2: SWAP2 000003b3: SUB 000003b4: SWAP1 000003b5: RETURN 000003b6: JUMPDEST 000003b7: CALLVALUE 000003b8: DUP1 000003b9: ISZERO 000003ba: PUSH2 0x03c2 000003bd: JUMPI 000003be: PUSH1 0x00 000003c0: DUP1 000003c1: REVERT 000003c2: JUMPDEST 000003c3: POP 000003c4: PUSH2 0x03dd 000003c7: PUSH1 0x04 000003c9: DUP1 000003ca: CALLDATASIZE 000003cb: SUB 000003cc: DUP2 000003cd: ADD 000003ce: SWAP1 000003cf: PUSH2 0x03d8 000003d2: SWAP2 000003d3: SWAP1 000003d4: PUSH2 0x2239 000003d7: JUMP 000003d8: JUMPDEST 000003d9: PUSH2 0x0dd7 000003dc: JUMP 000003dd: JUMPDEST 000003de: STOP 000003df: JUMPDEST 000003e0: CALLVALUE 000003e1: DUP1 000003e2: ISZERO 000003e3: PUSH2 0x03eb 000003e6: JUMPI 000003e7: PUSH1 0x00 000003e9: DUP1 000003ea: REVERT 000003eb: JUMPDEST 000003ec: POP 000003ed: PUSH2 0x03f4 000003f0: PUSH2 0x0ed1 000003f3: JUMP 000003f4: JUMPDEST 000003f5: STOP 000003f6: JUMPDEST 000003f7: CALLVALUE 000003f8: DUP1 000003f9: ISZERO 000003fa: PUSH2 0x0402 000003fd: JUMPI 000003fe: PUSH1 0x00 00000400: DUP1 00000401: REVERT 00000402: JUMPDEST 00000403: POP 00000404: PUSH2 0x041d 00000407: PUSH1 0x04 00000409: DUP1 0000040a: CALLDATASIZE 0000040b: SUB 0000040c: DUP2 0000040d: ADD 0000040e: SWAP1 0000040f: PUSH2 0x0418 00000412: SWAP2 00000413: SWAP1 00000414: PUSH2 0x2144 00000417: JUMP 00000418: JUMPDEST 00000419: PUSH2 0x0f79 0000041c: JUMP 0000041d: JUMPDEST 0000041e: PUSH1 0x40 00000420: MLOAD 00000421: PUSH2 0x042a 00000424: SWAP2 00000425: SWAP1 00000426: PUSH2 0x20ff 00000429: JUMP 0000042a: JUMPDEST 0000042b: PUSH1 0x40 0000042d: MLOAD 0000042e: DUP1 0000042f: SWAP2 00000430: SUB 00000431: SWAP1 00000432: RETURN 00000433: JUMPDEST 00000434: CALLVALUE 00000435: DUP1 00000436: ISZERO 00000437: PUSH2 0x043f 0000043a: JUMPI 0000043b: PUSH1 0x00 0000043d: DUP1 0000043e: REVERT 0000043f: JUMPDEST 00000440: POP 00000441: PUSH2 0x0448 00000444: PUSH2 0x0f99 00000447: JUMP 00000448: JUMPDEST 00000449: PUSH1 0x40 0000044b: MLOAD 0000044c: PUSH2 0x0455 0000044f: SWAP2 00000450: SWAP1 00000451: PUSH2 0x2129 00000454: JUMP 00000455: JUMPDEST 00000456: PUSH1 0x40 00000458: MLOAD 00000459: DUP1 0000045a: SWAP2 0000045b: SUB 0000045c: SWAP1 0000045d: RETURN 0000045e: JUMPDEST 0000045f: CALLVALUE 00000460: DUP1 00000461: ISZERO 00000462: PUSH2 0x046a 00000465: JUMPI 00000466: PUSH1 0x00 00000468: DUP1 00000469: REVERT 0000046a: JUMPDEST 0000046b: POP 0000046c: PUSH2 0x0473 0000046f: PUSH2 0x0f9f 00000472: JUMP 00000473: JUMPDEST 00000474: STOP 00000475: JUMPDEST 00000476: CALLVALUE 00000477: DUP1 00000478: ISZERO 00000479: PUSH2 0x0481 0000047c: JUMPI 0000047d: PUSH1 0x00 0000047f: DUP1 00000480: REVERT 00000481: JUMPDEST 00000482: POP 00000483: PUSH2 0x049c 00000486: PUSH1 0x04 00000488: DUP1 00000489: CALLDATASIZE 0000048a: SUB 0000048b: DUP2 0000048c: ADD 0000048d: SWAP1 0000048e: PUSH2 0x0497 00000491: SWAP2 00000492: SWAP1 00000493: PUSH2 0x2144 00000496: JUMP 00000497: JUMPDEST 00000498: PUSH2 0x100b 0000049b: JUMP 0000049c: JUMPDEST 0000049d: PUSH1 0x40 0000049f: MLOAD 000004a0: PUSH2 0x04a9 000004a3: SWAP2 000004a4: SWAP1 000004a5: PUSH2 0x2129 000004a8: JUMP 000004a9: JUMPDEST 000004aa: PUSH1 0x40 000004ac: MLOAD 000004ad: DUP1 000004ae: SWAP2 000004af: SUB 000004b0: SWAP1 000004b1: RETURN 000004b2: JUMPDEST 000004b3: CALLVALUE 000004b4: DUP1 000004b5: ISZERO 000004b6: PUSH2 0x04be 000004b9: JUMPI 000004ba: PUSH1 0x00 000004bc: DUP1 000004bd: REVERT 000004be: JUMPDEST 000004bf: POP 000004c0: PUSH2 0x04c7 000004c3: PUSH2 0x1053 000004c6: JUMP 000004c7: JUMPDEST 000004c8: PUSH1 0x40 000004ca: MLOAD 000004cb: PUSH2 0x04d4 000004ce: SWAP2 000004cf: SWAP1 000004d0: PUSH2 0x2129 000004d3: JUMP 000004d4: JUMPDEST 000004d5: PUSH1 0x40 000004d7: MLOAD 000004d8: DUP1 000004d9: SWAP2 000004da: SUB 000004db: SWAP1 000004dc: RETURN 000004dd: JUMPDEST 000004de: CALLVALUE 000004df: DUP1 000004e0: ISZERO 000004e1: PUSH2 0x04e9 000004e4: JUMPI 000004e5: PUSH1 0x00 000004e7: DUP1 000004e8: REVERT 000004e9: JUMPDEST 000004ea: POP 000004eb: PUSH2 0x04f2 000004ee: PUSH2 0x1059 000004f1: JUMP 000004f2: JUMPDEST 000004f3: PUSH1 0x40 000004f5: MLOAD 000004f6: PUSH2 0x04ff 000004f9: SWAP2 000004fa: SWAP1 000004fb: PUSH2 0x2275 000004fe: JUMP 000004ff: JUMPDEST 00000500: PUSH1 0x40 00000502: MLOAD 00000503: DUP1 00000504: SWAP2 00000505: SUB 00000506: SWAP1 00000507: RETURN 00000508: JUMPDEST 00000509: CALLVALUE 0000050a: DUP1 0000050b: ISZERO 0000050c: PUSH2 0x0514 0000050f: JUMPI 00000510: PUSH1 0x00 00000512: DUP1 00000513: REVERT 00000514: JUMPDEST 00000515: POP 00000516: PUSH2 0x052f 00000519: PUSH1 0x04 0000051b: DUP1 0000051c: CALLDATASIZE 0000051d: SUB 0000051e: DUP2 0000051f: ADD 00000520: SWAP1 00000521: PUSH2 0x052a 00000524: SWAP2 00000525: SWAP1 00000526: PUSH2 0x2144 00000529: JUMP 0000052a: JUMPDEST 0000052b: PUSH2 0x1083 0000052e: JUMP 0000052f: JUMPDEST 00000530: PUSH1 0x40 00000532: MLOAD 00000533: PUSH2 0x053c 00000536: SWAP2 00000537: SWAP1 00000538: PUSH2 0x2129 0000053b: JUMP 0000053c: JUMPDEST 0000053d: PUSH1 0x40 0000053f: MLOAD 00000540: DUP1 00000541: SWAP2 00000542: SUB 00000543: SWAP1 00000544: RETURN 00000545: JUMPDEST 00000546: CALLVALUE 00000547: DUP1 00000548: ISZERO 00000549: PUSH2 0x0551 0000054c: JUMPI 0000054d: PUSH1 0x00 0000054f: DUP1 00000550: REVERT 00000551: JUMPDEST 00000552: POP 00000553: PUSH2 0x055a 00000556: PUSH2 0x1095 00000559: JUMP 0000055a: JUMPDEST 0000055b: PUSH1 0x40 0000055d: MLOAD 0000055e: PUSH2 0x0567 00000561: SWAP2 00000562: SWAP1 00000563: PUSH2 0x1fe9 00000566: JUMP 00000567: JUMPDEST 00000568: PUSH1 0x40 0000056a: MLOAD 0000056b: DUP1 0000056c: SWAP2 0000056d: SUB 0000056e: SWAP1 0000056f: RETURN 00000570: JUMPDEST 00000571: CALLVALUE 00000572: DUP1 00000573: ISZERO 00000574: PUSH2 0x057c 00000577: JUMPI 00000578: PUSH1 0x00 0000057a: DUP1 0000057b: REVERT 0000057c: JUMPDEST 0000057d: POP 0000057e: PUSH2 0x0597 00000581: PUSH1 0x04 00000583: DUP1 00000584: CALLDATASIZE 00000585: SUB 00000586: DUP2 00000587: ADD 00000588: SWAP1 00000589: PUSH2 0x0592 0000058c: SWAP2 0000058d: SWAP1 0000058e: PUSH2 0x20a4 00000591: JUMP 00000592: JUMPDEST 00000593: PUSH2 0x1127 00000596: JUMP 00000597: JUMPDEST 00000598: PUSH1 0x40 0000059a: MLOAD 0000059b: PUSH2 0x05a4 0000059e: SWAP2 0000059f: SWAP1 000005a0: PUSH2 0x20ff 000005a3: JUMP 000005a4: JUMPDEST 000005a5: PUSH1 0x40 000005a7: MLOAD 000005a8: DUP1 000005a9: SWAP2 000005aa: SUB 000005ab: SWAP1 000005ac: RETURN 000005ad: JUMPDEST 000005ae: CALLVALUE 000005af: DUP1 000005b0: ISZERO 000005b1: PUSH2 0x05b9 000005b4: JUMPI 000005b5: PUSH1 0x00 000005b7: DUP1 000005b8: REVERT 000005b9: JUMPDEST 000005ba: POP 000005bb: PUSH2 0x05d4 000005be: PUSH1 0x04 000005c0: DUP1 000005c1: CALLDATASIZE 000005c2: SUB 000005c3: DUP2 000005c4: ADD 000005c5: SWAP1 000005c6: PUSH2 0x05cf 000005c9: SWAP2 000005ca: SWAP1 000005cb: PUSH2 0x2144 000005ce: JUMP 000005cf: JUMPDEST 000005d0: PUSH2 0x1212 000005d3: JUMP 000005d4: JUMPDEST 000005d5: PUSH1 0x40 000005d7: MLOAD 000005d8: PUSH2 0x05e1 000005db: SWAP2 000005dc: SWAP1 000005dd: PUSH2 0x2129 000005e0: JUMP 000005e1: JUMPDEST 000005e2: PUSH1 0x40 000005e4: MLOAD 000005e5: DUP1 000005e6: SWAP2 000005e7: SUB 000005e8: SWAP1 000005e9: RETURN 000005ea: JUMPDEST 000005eb: CALLVALUE 000005ec: DUP1 000005ed: ISZERO 000005ee: PUSH2 0x05f6 000005f1: JUMPI 000005f2: PUSH1 0x00 000005f4: DUP1 000005f5: REVERT 000005f6: JUMPDEST 000005f7: POP 000005f8: PUSH2 0x0611 000005fb: PUSH1 0x04 000005fd: DUP1 000005fe: CALLDATASIZE 000005ff: SUB 00000600: DUP2 00000601: ADD 00000602: SWAP1 00000603: PUSH2 0x060c 00000606: SWAP2 00000607: SWAP1 00000608: PUSH2 0x20a4 0000060b: JUMP 0000060c: JUMPDEST 0000060d: PUSH2 0x1275 00000610: JUMP 00000611: JUMPDEST 00000612: PUSH1 0x40 00000614: MLOAD 00000615: PUSH2 0x061e 00000618: SWAP2 00000619: SWAP1 0000061a: PUSH2 0x20ff 0000061d: JUMP 0000061e: JUMPDEST 0000061f: PUSH1 0x40 00000621: MLOAD 00000622: DUP1 00000623: SWAP2 00000624: SUB 00000625: SWAP1 00000626: RETURN 00000627: JUMPDEST 00000628: CALLVALUE 00000629: DUP1 0000062a: ISZERO 0000062b: PUSH2 0x0633 0000062e: JUMPI 0000062f: PUSH1 0x00 00000631: DUP1 00000632: REVERT 00000633: JUMPDEST 00000634: POP 00000635: PUSH2 0x064e 00000638: PUSH1 0x04 0000063a: DUP1 0000063b: CALLDATASIZE 0000063c: SUB 0000063d: DUP2 0000063e: ADD 0000063f: SWAP1 00000640: PUSH2 0x0649 00000643: SWAP2 00000644: SWAP1 00000645: PUSH2 0x2144 00000648: JUMP 00000649: JUMPDEST 0000064a: PUSH2 0x1293 0000064d: JUMP 0000064e: JUMPDEST 0000064f: PUSH1 0x40 00000651: MLOAD 00000652: PUSH2 0x065b 00000655: SWAP2 00000656: SWAP1 00000657: PUSH2 0x2129 0000065a: JUMP 0000065b: JUMPDEST 0000065c: PUSH1 0x40 0000065e: MLOAD 0000065f: DUP1 00000660: SWAP2 00000661: SUB 00000662: SWAP1 00000663: RETURN 00000664: JUMPDEST 00000665: CALLVALUE 00000666: DUP1 00000667: ISZERO 00000668: PUSH2 0x0670 0000066b: JUMPI 0000066c: PUSH1 0x00 0000066e: DUP1 0000066f: REVERT 00000670: JUMPDEST 00000671: POP 00000672: PUSH2 0x0679 00000675: PUSH2 0x12dc 00000678: JUMP 00000679: JUMPDEST 0000067a: PUSH1 0x40 0000067c: MLOAD 0000067d: PUSH2 0x0686 00000680: SWAP2 00000681: SWAP1 00000682: PUSH2 0x2129 00000685: JUMP 00000686: JUMPDEST 00000687: PUSH1 0x40 00000689: MLOAD 0000068a: DUP1 0000068b: SWAP2 0000068c: SUB 0000068d: SWAP1 0000068e: RETURN 0000068f: JUMPDEST 00000690: CALLVALUE 00000691: DUP1 00000692: ISZERO 00000693: PUSH2 0x069b 00000696: JUMPI 00000697: PUSH1 0x00 00000699: DUP1 0000069a: REVERT 0000069b: JUMPDEST 0000069c: POP 0000069d: PUSH2 0x06b6 000006a0: PUSH1 0x04 000006a2: DUP1 000006a3: CALLDATASIZE 000006a4: SUB 000006a5: DUP2 000006a6: ADD 000006a7: SWAP1 000006a8: PUSH2 0x06b1 000006ab: SWAP2 000006ac: SWAP1 000006ad: PUSH2 0x2290 000006b0: JUMP 000006b1: JUMPDEST 000006b2: PUSH2 0x12e3 000006b5: JUMP 000006b6: JUMPDEST 000006b7: PUSH1 0x40 000006b9: MLOAD 000006ba: PUSH2 0x06c3 000006bd: SWAP2 000006be: SWAP1 000006bf: PUSH2 0x2129 000006c2: JUMP 000006c3: JUMPDEST 000006c4: PUSH1 0x40 000006c6: MLOAD 000006c7: DUP1 000006c8: SWAP2 000006c9: SUB 000006ca: SWAP1 000006cb: RETURN 000006cc: JUMPDEST 000006cd: CALLVALUE 000006ce: DUP1 000006cf: ISZERO 000006d0: PUSH2 0x06d8 000006d3: JUMPI 000006d4: PUSH1 0x00 000006d6: DUP1 000006d7: REVERT 000006d8: JUMPDEST 000006d9: POP 000006da: PUSH2 0x06f3 000006dd: PUSH1 0x04 000006df: DUP1 000006e0: CALLDATASIZE 000006e1: SUB 000006e2: DUP2 000006e3: ADD 000006e4: SWAP1 000006e5: PUSH2 0x06ee 000006e8: SWAP2 000006e9: SWAP1 000006ea: PUSH2 0x2144 000006ed: JUMP 000006ee: JUMPDEST 000006ef: PUSH2 0x136a 000006f2: JUMP 000006f3: JUMPDEST 000006f4: PUSH1 0x40 000006f6: MLOAD 000006f7: PUSH2 0x0702 000006fa: SWAP4 000006fb: SWAP3 000006fc: SWAP2 000006fd: SWAP1 000006fe: PUSH2 0x22d0 00000701: JUMP 00000702: JUMPDEST 00000703: PUSH1 0x40 00000705: MLOAD 00000706: DUP1 00000707: SWAP2 00000708: SUB 00000709: SWAP1 0000070a: RETURN 0000070b: JUMPDEST 0000070c: PUSH1 0x00 0000070e: PUSH2 0x0715 00000711: PUSH2 0x09b4 00000714: JUMP 00000715: JUMPDEST 00000716: GT 00000717: PUSH2 0x071f 0000071a: JUMPI 0000071b: PUSH1 0x00 0000071d: DUP1 0000071e: REVERT 0000071f: JUMPDEST 00000720: PUSH1 0x00 00000722: CALLVALUE 00000723: GT 00000724: ISZERO 00000725: PUSH2 0x07cd 00000728: JUMPI 00000729: PUSH2 0x0772 0000072c: PUSH2 0x0733 0000072f: PUSH2 0x09b4 00000732: JUMP 00000733: JUMPDEST 00000734: PUSH2 0x0757 00000737: PUSH17 0x0100000000000000000000000000000000 00000749: CALLVALUE 0000074a: PUSH2 0x138f 0000074d: SWAP1 0000074e: SWAP2 0000074f: SWAP1 00000750: PUSH4 0xffffffff 00000755: AND 00000756: JUMP 00000757: JUMPDEST 00000758: PUSH2 0x0761 0000075b: SWAP2 0000075c: SWAP1 0000075d: PUSH2 0x2365 00000760: JUMP 00000761: JUMPDEST 00000762: PUSH1 0x05 00000764: SLOAD 00000765: PUSH2 0x1409 00000768: SWAP1 00000769: SWAP2 0000076a: SWAP1 0000076b: PUSH4 0xffffffff 00000770: AND 00000771: JUMP 00000772: JUMPDEST 00000773: PUSH1 0x05 00000775: DUP2 00000776: SWAP1 00000777: SSTORE 00000778: POP 00000779: PUSH32 0xa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511 0000079a: CALLER 0000079b: CALLVALUE 0000079c: PUSH1 0x40 0000079e: MLOAD 0000079f: PUSH2 0x07a9 000007a2: SWAP3 000007a3: SWAP2 000007a4: SWAP1 000007a5: PUSH2 0x2396 000007a8: JUMP 000007a9: JUMPDEST 000007aa: PUSH1 0x40 000007ac: MLOAD 000007ad: DUP1 000007ae: SWAP2 000007af: SUB 000007b0: SWAP1 000007b1: LOG1 000007b2: PUSH2 0x07c6 000007b5: CALLVALUE 000007b6: PUSH1 0x08 000007b8: SLOAD 000007b9: PUSH2 0x1409 000007bc: SWAP1 000007bd: SWAP2 000007be: SWAP1 000007bf: PUSH4 0xffffffff 000007c4: AND 000007c5: JUMP 000007c6: JUMPDEST 000007c7: PUSH1 0x08 000007c9: DUP2 000007ca: SWAP1 000007cb: SSTORE 000007cc: POP 000007cd: JUMPDEST 000007ce: JUMP 000007cf: JUMPDEST 000007d0: CALLER 000007d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007e6: AND 000007e7: PUSH1 0x09 000007e9: PUSH1 0x00 000007eb: SWAP1 000007ec: SLOAD 000007ed: SWAP1 000007ee: PUSH2 0x0100 000007f1: EXP 000007f2: SWAP1 000007f3: DIV 000007f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000809: AND 0000080a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000081f: AND 00000820: EQ 00000821: PUSH2 0x0829 00000824: JUMPI 00000825: PUSH1 0x00 00000827: DUP1 00000828: REVERT 00000829: JUMPDEST 0000082a: PUSH1 0x00 0000082c: PUSH1 0x0d 0000082e: SLOAD 0000082f: LT 00000830: ISZERO 00000831: DUP1 00000832: ISZERO 00000833: PUSH2 0x084c 00000836: JUMPI 00000837: POP 00000838: PUSH3 0x278d00 0000083c: PUSH1 0x0d 0000083e: SLOAD 0000083f: PUSH2 0x0848 00000842: SWAP2 00000843: SWAP1 00000844: PUSH2 0x23bf 00000847: JUMP 00000848: JUMPDEST 00000849: TIMESTAMP 0000084a: LT 0000084b: ISZERO 0000084c: JUMPDEST 0000084d: PUSH2 0x088b 00000850: JUMPI 00000851: PUSH1 0x40 00000853: MLOAD 00000854: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000875: DUP2 00000876: MSTORE 00000877: PUSH1 0x04 00000879: ADD 0000087a: PUSH2 0x0882 0000087d: SWAP1 0000087e: PUSH2 0x243f 00000881: JUMP 00000882: JUMPDEST 00000883: PUSH1 0x40 00000885: MLOAD 00000886: DUP1 00000887: SWAP2 00000888: SUB 00000889: SWAP1 0000088a: REVERT 0000088b: JUMPDEST 0000088c: PUSH1 0x00 0000088e: CALLER 0000088f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008a4: AND 000008a5: SELFBALANCE 000008a6: PUSH1 0x40 000008a8: MLOAD 000008a9: PUSH2 0x08b1 000008ac: SWAP1 000008ad: PUSH2 0x2490 000008b0: JUMP 000008b1: JUMPDEST 000008b2: PUSH1 0x00 000008b4: PUSH1 0x40 000008b6: MLOAD 000008b7: DUP1 000008b8: DUP4 000008b9: SUB 000008ba: DUP2 000008bb: DUP6 000008bc: DUP8 000008bd: GAS 000008be: CALL 000008bf: SWAP3 000008c0: POP 000008c1: POP 000008c2: POP 000008c3: RETURNDATASIZE 000008c4: DUP1 000008c5: PUSH1 0x00 000008c7: DUP2 000008c8: EQ 000008c9: PUSH2 0x08ee 000008cc: JUMPI 000008cd: PUSH1 0x40 000008cf: MLOAD 000008d0: SWAP2 000008d1: POP 000008d2: PUSH1 0x1f 000008d4: NOT 000008d5: PUSH1 0x3f 000008d7: RETURNDATASIZE 000008d8: ADD 000008d9: AND 000008da: DUP3 000008db: ADD 000008dc: PUSH1 0x40 000008de: MSTORE 000008df: RETURNDATASIZE 000008e0: DUP3 000008e1: MSTORE 000008e2: RETURNDATASIZE 000008e3: PUSH1 0x00 000008e5: PUSH1 0x20 000008e7: DUP5 000008e8: ADD 000008e9: RETURNDATACOPY 000008ea: PUSH2 0x08f3 000008ed: JUMP 000008ee: JUMPDEST 000008ef: PUSH1 0x60 000008f1: SWAP2 000008f2: POP 000008f3: JUMPDEST 000008f4: POP 000008f5: POP 000008f6: SWAP1 000008f7: POP 000008f8: DUP1 000008f9: PUSH2 0x0901 000008fc: JUMPI 000008fd: PUSH1 0x00 000008ff: DUP1 00000900: REVERT 00000901: JUMPDEST 00000902: POP 00000903: JUMP 00000904: JUMPDEST 00000905: PUSH1 0x60 00000907: PUSH1 0x03 00000909: DUP1 0000090a: SLOAD 0000090b: PUSH2 0x0913 0000090e: SWAP1 0000090f: PUSH2 0x24d4 00000912: JUMP 00000913: JUMPDEST 00000914: DUP1 00000915: PUSH1 0x1f 00000917: ADD 00000918: PUSH1 0x20 0000091a: DUP1 0000091b: SWAP2 0000091c: DIV 0000091d: MUL 0000091e: PUSH1 0x20 00000920: ADD 00000921: PUSH1 0x40 00000923: MLOAD 00000924: SWAP1 00000925: DUP2 00000926: ADD 00000927: PUSH1 0x40 00000929: MSTORE 0000092a: DUP1 0000092b: SWAP3 0000092c: SWAP2 0000092d: SWAP1 0000092e: DUP2 0000092f: DUP2 00000930: MSTORE 00000931: PUSH1 0x20 00000933: ADD 00000934: DUP3 00000935: DUP1 00000936: SLOAD 00000937: PUSH2 0x093f 0000093a: SWAP1 0000093b: PUSH2 0x24d4 0000093e: JUMP 0000093f: JUMPDEST 00000940: DUP1 00000941: ISZERO 00000942: PUSH2 0x098c 00000945: JUMPI 00000946: DUP1 00000947: PUSH1 0x1f 00000949: LT 0000094a: PUSH2 0x0961 0000094d: JUMPI 0000094e: PUSH2 0x0100 00000951: DUP1 00000952: DUP4 00000953: SLOAD 00000954: DIV 00000955: MUL 00000956: DUP4 00000957: MSTORE 00000958: SWAP2 00000959: PUSH1 0x20 0000095b: ADD 0000095c: SWAP2 0000095d: PUSH2 0x098c 00000960: JUMP 00000961: JUMPDEST 00000962: DUP3 00000963: ADD 00000964: SWAP2 00000965: SWAP1 00000966: PUSH1 0x00 00000968: MSTORE 00000969: PUSH1 0x20 0000096b: PUSH1 0x00 0000096d: KECCAK256 0000096e: SWAP1 0000096f: JUMPDEST 00000970: DUP2 00000971: SLOAD 00000972: DUP2 00000973: MSTORE 00000974: SWAP1 00000975: PUSH1 0x01 00000977: ADD 00000978: SWAP1 00000979: PUSH1 0x20 0000097b: ADD 0000097c: DUP1 0000097d: DUP4 0000097e: GT 0000097f: PUSH2 0x096f 00000982: JUMPI 00000983: DUP3 00000984: SWAP1 00000985: SUB 00000986: PUSH1 0x1f 00000988: AND 00000989: DUP3 0000098a: ADD 0000098b: SWAP2 0000098c: JUMPDEST 0000098d: POP 0000098e: POP 0000098f: POP 00000990: POP 00000991: POP 00000992: SWAP1 00000993: POP 00000994: SWAP1 00000995: JUMP 00000996: JUMPDEST 00000997: PUSH1 0x00 00000999: PUSH2 0x09aa 0000099c: PUSH2 0x09a3 0000099f: PUSH2 0x1467 000009a2: JUMP 000009a3: JUMPDEST 000009a4: DUP5 000009a5: DUP5 000009a6: PUSH2 0x146f 000009a9: JUMP 000009aa: JUMPDEST 000009ab: PUSH1 0x01 000009ad: SWAP1 000009ae: POP 000009af: SWAP3 000009b0: SWAP2 000009b1: POP 000009b2: POP 000009b3: JUMP 000009b4: JUMPDEST 000009b5: PUSH1 0x00 000009b7: PUSH1 0x02 000009b9: SLOAD 000009ba: SWAP1 000009bb: POP 000009bc: SWAP1 000009bd: JUMP 000009be: JUMPDEST 000009bf: CALLER 000009c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009d5: AND 000009d6: PUSH1 0x09 000009d8: PUSH1 0x00 000009da: SWAP1 000009db: SLOAD 000009dc: SWAP1 000009dd: PUSH2 0x0100 000009e0: EXP 000009e1: SWAP1 000009e2: DIV 000009e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009f8: AND 000009f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a0e: AND 00000a0f: EQ 00000a10: PUSH2 0x0a18 00000a13: JUMPI 00000a14: PUSH1 0x00 00000a16: DUP1 00000a17: REVERT 00000a18: JUMPDEST 00000a19: PUSH1 0x00 00000a1b: PUSH1 0x0d 00000a1d: SLOAD 00000a1e: EQ 00000a1f: DUP1 00000a20: PUSH2 0x0a38 00000a23: JUMPI 00000a24: POP 00000a25: PUSH3 0x278d00 00000a29: PUSH1 0x0d 00000a2b: SLOAD 00000a2c: PUSH2 0x0a35 00000a2f: SWAP2 00000a30: SWAP1 00000a31: PUSH2 0x23bf 00000a34: JUMP 00000a35: JUMPDEST 00000a36: TIMESTAMP 00000a37: LT 00000a38: JUMPDEST 00000a39: PUSH2 0x0a77 00000a3c: JUMPI 00000a3d: PUSH1 0x40 00000a3f: MLOAD 00000a40: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a61: DUP2 00000a62: MSTORE 00000a63: PUSH1 0x04 00000a65: ADD 00000a66: PUSH2 0x0a6e 00000a69: SWAP1 00000a6a: PUSH2 0x2551 00000a6d: JUMP 00000a6e: JUMPDEST 00000a6f: PUSH1 0x40 00000a71: MLOAD 00000a72: DUP1 00000a73: SWAP2 00000a74: SUB 00000a75: SWAP1 00000a76: REVERT 00000a77: JUMPDEST 00000a78: PUSH2 0x0a80 00000a7b: DUP2 00000a7c: PUSH2 0x1638 00000a7f: JUMP 00000a80: JUMPDEST 00000a81: POP 00000a82: POP 00000a83: JUMP 00000a84: JUMPDEST 00000a85: PUSH1 0x00 00000a87: PUSH2 0x0a91 00000a8a: DUP5 00000a8b: DUP5 00000a8c: DUP5 00000a8d: PUSH2 0x1848 00000a90: JUMP 00000a91: JUMPDEST 00000a92: PUSH1 0x00 00000a94: PUSH1 0x01 00000a96: PUSH1 0x00 00000a98: DUP7 00000a99: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aae: AND 00000aaf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ac4: AND 00000ac5: DUP2 00000ac6: MSTORE 00000ac7: PUSH1 0x20 00000ac9: ADD 00000aca: SWAP1 00000acb: DUP2 00000acc: MSTORE 00000acd: PUSH1 0x20 00000acf: ADD 00000ad0: PUSH1 0x00 00000ad2: KECCAK256 00000ad3: PUSH1 0x00 00000ad5: PUSH2 0x0adc 00000ad8: PUSH2 0x1467 00000adb: JUMP 00000adc: JUMPDEST 00000add: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000af2: AND 00000af3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b08: AND 00000b09: DUP2 00000b0a: MSTORE 00000b0b: PUSH1 0x20 00000b0d: ADD 00000b0e: SWAP1 00000b0f: DUP2 00000b10: MSTORE 00000b11: PUSH1 0x20 00000b13: ADD 00000b14: PUSH1 0x00 00000b16: KECCAK256 00000b17: SLOAD 00000b18: SWAP1 00000b19: POP 00000b1a: DUP3 00000b1b: DUP2 00000b1c: LT 00000b1d: ISZERO 00000b1e: PUSH2 0x0b5c 00000b21: JUMPI 00000b22: PUSH1 0x40 00000b24: MLOAD 00000b25: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b46: DUP2 00000b47: MSTORE 00000b48: PUSH1 0x04 00000b4a: ADD 00000b4b: PUSH2 0x0b53 00000b4e: SWAP1 00000b4f: PUSH2 0x25e3 00000b52: JUMP 00000b53: JUMPDEST 00000b54: PUSH1 0x40 00000b56: MLOAD 00000b57: DUP1 00000b58: SWAP2 00000b59: SUB 00000b5a: SWAP1 00000b5b: REVERT 00000b5c: JUMPDEST 00000b5d: PUSH2 0x0b70 00000b60: DUP6 00000b61: PUSH2 0x0b68 00000b64: PUSH2 0x1467 00000b67: JUMP 00000b68: JUMPDEST 00000b69: DUP6 00000b6a: DUP5 00000b6b: SUB 00000b6c: PUSH2 0x146f 00000b6f: JUMP 00000b70: JUMPDEST 00000b71: PUSH1 0x01 00000b73: SWAP2 00000b74: POP 00000b75: POP 00000b76: SWAP4 00000b77: SWAP3 00000b78: POP 00000b79: POP 00000b7a: POP 00000b7b: JUMP 00000b7c: JUMPDEST 00000b7d: PUSH1 0x00 00000b7f: PUSH17 0x0100000000000000000000000000000000 00000b91: PUSH2 0x0c0e 00000b94: PUSH2 0x0c09 00000b97: PUSH1 0x06 00000b99: PUSH1 0x00 00000b9b: DUP7 00000b9c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bb1: AND 00000bb2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bc7: AND 00000bc8: DUP2 00000bc9: MSTORE 00000bca: PUSH1 0x20 00000bcc: ADD 00000bcd: SWAP1 00000bce: DUP2 00000bcf: MSTORE 00000bd0: PUSH1 0x20 00000bd2: ADD 00000bd3: PUSH1 0x00 00000bd5: KECCAK256 00000bd6: SLOAD 00000bd7: PUSH2 0x0bfb 00000bda: PUSH2 0x0bf6 00000bdd: PUSH2 0x0be5 00000be0: DUP9 00000be1: PUSH2 0x100b 00000be4: JUMP 00000be5: JUMPDEST 00000be6: PUSH1 0x05 00000be8: SLOAD 00000be9: PUSH2 0x138f 00000bec: SWAP1 00000bed: SWAP2 00000bee: SWAP1 00000bef: PUSH4 0xffffffff 00000bf4: AND 00000bf5: JUMP 00000bf6: JUMPDEST 00000bf7: PUSH2 0x18b7 00000bfa: JUMP 00000bfb: JUMPDEST 00000bfc: PUSH2 0x18d4 00000bff: SWAP1 00000c00: SWAP2 00000c01: SWAP1 00000c02: PUSH4 0xffffffff 00000c07: AND 00000c08: JUMP 00000c09: JUMPDEST 00000c0a: PUSH2 0x191f 00000c0d: JUMP 00000c0e: JUMPDEST 00000c0f: PUSH2 0x0c18 00000c12: SWAP2 00000c13: SWAP1 00000c14: PUSH2 0x2365 00000c17: JUMP 00000c18: JUMPDEST 00000c19: SWAP1 00000c1a: POP 00000c1b: SWAP2 00000c1c: SWAP1 00000c1d: POP 00000c1e: JUMP 00000c1f: JUMPDEST 00000c20: PUSH1 0x00 00000c22: PUSH1 0x12 00000c24: SWAP1 00000c25: POP 00000c26: SWAP1 00000c27: JUMP 00000c28: JUMPDEST 00000c29: CALLER 00000c2a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c3f: AND 00000c40: PUSH1 0x09 00000c42: PUSH1 0x00 00000c44: SWAP1 00000c45: SLOAD 00000c46: SWAP1 00000c47: PUSH2 0x0100 00000c4a: EXP 00000c4b: SWAP1 00000c4c: DIV 00000c4d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c62: AND 00000c63: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c78: AND 00000c79: EQ 00000c7a: PUSH2 0x0c82 00000c7d: JUMPI 00000c7e: PUSH1 0x00 00000c80: DUP1 00000c81: REVERT 00000c82: JUMPDEST 00000c83: PUSH1 0x01 00000c85: PUSH1 0x0b 00000c87: PUSH1 0x00 00000c89: DUP4 00000c8a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c9f: AND 00000ca0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cb5: AND 00000cb6: DUP2 00000cb7: MSTORE 00000cb8: PUSH1 0x20 00000cba: ADD 00000cbb: SWAP1 00000cbc: DUP2 00000cbd: MSTORE 00000cbe: PUSH1 0x20 00000cc0: ADD 00000cc1: PUSH1 0x00 00000cc3: KECCAK256 00000cc4: PUSH1 0x00 00000cc6: PUSH2 0x0100 00000cc9: EXP 00000cca: DUP2 00000ccb: SLOAD 00000ccc: DUP2 00000ccd: PUSH1 0xff 00000ccf: MUL 00000cd0: NOT 00000cd1: AND 00000cd2: SWAP1 00000cd3: DUP4 00000cd4: ISZERO 00000cd5: ISZERO 00000cd6: MUL 00000cd7: OR 00000cd8: SWAP1 00000cd9: SSTORE 00000cda: POP 00000cdb: PUSH2 0x0ce5 00000cde: DUP2 00000cdf: PUSH1 0x00 00000ce1: PUSH2 0x1936 00000ce4: JUMP 00000ce5: JUMPDEST 00000ce6: DUP1 00000ce7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cfc: AND 00000cfd: PUSH32 0xa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b25 00000d1e: PUSH1 0x40 00000d20: MLOAD 00000d21: PUSH1 0x40 00000d23: MLOAD 00000d24: DUP1 00000d25: SWAP2 00000d26: SUB 00000d27: SWAP1 00000d28: LOG2 00000d29: POP 00000d2a: JUMP 00000d2b: JUMPDEST 00000d2c: PUSH1 0x00 00000d2e: PUSH2 0x0dcd 00000d31: PUSH2 0x0d38 00000d34: PUSH2 0x1467 00000d37: JUMP 00000d38: JUMPDEST 00000d39: DUP5 00000d3a: DUP5 00000d3b: PUSH1 0x01 00000d3d: PUSH1 0x00 00000d3f: PUSH2 0x0d46 00000d42: PUSH2 0x1467 00000d45: JUMP 00000d46: JUMPDEST 00000d47: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d5c: AND 00000d5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d72: AND 00000d73: DUP2 00000d74: MSTORE 00000d75: PUSH1 0x20 00000d77: ADD 00000d78: SWAP1 00000d79: DUP2 00000d7a: MSTORE 00000d7b: PUSH1 0x20 00000d7d: ADD 00000d7e: PUSH1 0x00 00000d80: KECCAK256 00000d81: PUSH1 0x00 00000d83: DUP9 00000d84: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d99: AND 00000d9a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000daf: AND 00000db0: DUP2 00000db1: MSTORE 00000db2: PUSH1 0x20 00000db4: ADD 00000db5: SWAP1 00000db6: DUP2 00000db7: MSTORE 00000db8: PUSH1 0x20 00000dba: ADD 00000dbb: PUSH1 0x00 00000dbd: KECCAK256 00000dbe: SLOAD 00000dbf: PUSH2 0x0dc8 00000dc2: SWAP2 00000dc3: SWAP1 00000dc4: PUSH2 0x23bf 00000dc7: JUMP 00000dc8: JUMPDEST 00000dc9: PUSH2 0x146f 00000dcc: JUMP 00000dcd: JUMPDEST 00000dce: PUSH1 0x01 00000dd0: SWAP1 00000dd1: POP 00000dd2: SWAP3 00000dd3: SWAP2 00000dd4: POP 00000dd5: POP 00000dd6: JUMP 00000dd7: JUMPDEST 00000dd8: PUSH1 0x0b 00000dda: PUSH1 0x00 00000ddc: DUP3 00000ddd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000df2: AND 00000df3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e08: AND 00000e09: DUP2 00000e0a: MSTORE 00000e0b: PUSH1 0x20 00000e0d: ADD 00000e0e: SWAP1 00000e0f: DUP2 00000e10: MSTORE 00000e11: PUSH1 0x20 00000e13: ADD 00000e14: PUSH1 0x00 00000e16: KECCAK256 00000e17: PUSH1 0x00 00000e19: SWAP1 00000e1a: SLOAD 00000e1b: SWAP1 00000e1c: PUSH2 0x0100 00000e1f: EXP 00000e20: SWAP1 00000e21: DIV 00000e22: PUSH1 0xff 00000e24: AND 00000e25: PUSH2 0x0ece 00000e28: JUMPI 00000e29: PUSH2 0x0ecd 00000e2c: DUP2 00000e2d: PUSH1 0x0a 00000e2f: PUSH1 0x00 00000e31: SWAP1 00000e32: SLOAD 00000e33: SWAP1 00000e34: PUSH2 0x0100 00000e37: EXP 00000e38: SWAP1 00000e39: DIV 00000e3a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e4f: AND 00000e50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e65: AND 00000e66: PUSH4 0x70a08231 00000e6b: DUP5 00000e6c: PUSH1 0x40 00000e6e: MLOAD 00000e6f: DUP3 00000e70: PUSH4 0xffffffff 00000e75: AND 00000e76: PUSH1 0xe0 00000e78: SHL 00000e79: DUP2 00000e7a: MSTORE 00000e7b: PUSH1 0x04 00000e7d: ADD 00000e7e: PUSH2 0x0e87 00000e81: SWAP2 00000e82: SWAP1 00000e83: PUSH2 0x2662 00000e86: JUMP 00000e87: JUMPDEST 00000e88: PUSH1 0x20 00000e8a: PUSH1 0x40 00000e8c: MLOAD 00000e8d: DUP1 00000e8e: DUP4 00000e8f: SUB 00000e90: DUP2 00000e91: DUP7 00000e92: GAS 00000e93: STATICCALL 00000e94: ISZERO 00000e95: DUP1 00000e96: ISZERO 00000e97: PUSH2 0x0ea4 00000e9a: JUMPI 00000e9b: RETURNDATASIZE 00000e9c: PUSH1 0x00 00000e9e: DUP1 00000e9f: RETURNDATACOPY 00000ea0: RETURNDATASIZE 00000ea1: PUSH1 0x00 00000ea3: REVERT 00000ea4: JUMPDEST 00000ea5: POP 00000ea6: POP 00000ea7: POP 00000ea8: POP 00000ea9: PUSH1 0x40 00000eab: MLOAD 00000eac: RETURNDATASIZE 00000ead: PUSH1 0x1f 00000eaf: NOT 00000eb0: PUSH1 0x1f 00000eb2: DUP3 00000eb3: ADD 00000eb4: AND 00000eb5: DUP3 00000eb6: ADD 00000eb7: DUP1 00000eb8: PUSH1 0x40 00000eba: MSTORE 00000ebb: POP 00000ebc: DUP2 00000ebd: ADD 00000ebe: SWAP1 00000ebf: PUSH2 0x0ec8 00000ec2: SWAP2 00000ec3: SWAP1 00000ec4: PUSH2 0x2692 00000ec7: JUMP 00000ec8: JUMPDEST 00000ec9: PUSH2 0x1936 00000ecc: JUMP 00000ecd: JUMPDEST 00000ece: JUMPDEST 00000ecf: POP 00000ed0: JUMP 00000ed1: JUMPDEST 00000ed2: CALLER 00000ed3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ee8: AND 00000ee9: PUSH1 0x09 00000eeb: PUSH1 0x00 00000eed: SWAP1 00000eee: SLOAD 00000eef: SWAP1 00000ef0: PUSH2 0x0100 00000ef3: EXP 00000ef4: SWAP1 00000ef5: DIV 00000ef6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f0b: AND 00000f0c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f21: AND 00000f22: EQ 00000f23: PUSH2 0x0f2b 00000f26: JUMPI 00000f27: PUSH1 0x00 00000f29: DUP1 00000f2a: REVERT 00000f2b: JUMPDEST 00000f2c: PUSH1 0x00 00000f2e: PUSH1 0x0d 00000f30: SLOAD 00000f31: EQ 00000f32: PUSH2 0x0f70 00000f35: JUMPI 00000f36: PUSH1 0x40 00000f38: MLOAD 00000f39: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f5a: DUP2 00000f5b: MSTORE 00000f5c: PUSH1 0x04 00000f5e: ADD 00000f5f: PUSH2 0x0f67 00000f62: SWAP1 00000f63: PUSH2 0x270b 00000f66: JUMP 00000f67: JUMPDEST 00000f68: PUSH1 0x40 00000f6a: MLOAD 00000f6b: DUP1 00000f6c: SWAP2 00000f6d: SUB 00000f6e: SWAP1 00000f6f: REVERT 00000f70: JUMPDEST 00000f71: TIMESTAMP 00000f72: PUSH1 0x0d 00000f74: DUP2 00000f75: SWAP1 00000f76: SSTORE 00000f77: POP 00000f78: JUMP 00000f79: JUMPDEST 00000f7a: PUSH1 0x0b 00000f7c: PUSH1 0x20 00000f7e: MSTORE 00000f7f: DUP1 00000f80: PUSH1 0x00 00000f82: MSTORE 00000f83: PUSH1 0x40 00000f85: PUSH1 0x00 00000f87: KECCAK256 00000f88: PUSH1 0x00 00000f8a: SWAP2 00000f8b: POP 00000f8c: SLOAD 00000f8d: SWAP1 00000f8e: PUSH2 0x0100 00000f91: EXP 00000f92: SWAP1 00000f93: DIV 00000f94: PUSH1 0xff 00000f96: AND 00000f97: DUP2 00000f98: JUMP 00000f99: JUMPDEST 00000f9a: PUSH1 0x0d 00000f9c: SLOAD 00000f9d: DUP2 00000f9e: JUMP 00000f9f: JUMPDEST 00000fa0: PUSH1 0x00 00000fa2: PUSH2 0x0fe0 00000fa5: JUMPI 00000fa6: PUSH1 0x40 00000fa8: MLOAD 00000fa9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000fca: DUP2 00000fcb: MSTORE 00000fcc: PUSH1 0x04 00000fce: ADD 00000fcf: PUSH2 0x0fd7 00000fd2: SWAP1 00000fd3: PUSH2 0x27c3 00000fd6: JUMP 00000fd7: JUMPDEST 00000fd8: PUSH1 0x40 00000fda: MLOAD 00000fdb: DUP1 00000fdc: SWAP2 00000fdd: SUB 00000fde: SWAP1 00000fdf: REVERT 00000fe0: JUMPDEST 00000fe1: PUSH1 0x0e 00000fe3: PUSH1 0x00 00000fe5: SWAP1 00000fe6: SLOAD 00000fe7: SWAP1 00000fe8: PUSH2 0x0100 00000feb: EXP 00000fec: SWAP1 00000fed: DIV 00000fee: PUSH1 0xff 00000ff0: AND 00000ff1: PUSH1 0x0e 00000ff3: PUSH1 0x00 00000ff5: PUSH2 0x0100 00000ff8: EXP 00000ff9: DUP2 00000ffa: SLOAD 00000ffb: DUP2 00000ffc: PUSH1 0xff 00000ffe: MUL 00000fff: NOT 00001000: AND 00001001: SWAP1 00001002: DUP4 00001003: ISZERO 00001004: ISZERO 00001005: MUL 00001006: OR 00001007: SWAP1 00001008: SSTORE 00001009: POP 0000100a: JUMP 0000100b: JUMPDEST 0000100c: PUSH1 0x00 0000100e: DUP1 0000100f: PUSH1 0x00 00001011: DUP4 00001012: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001027: AND 00001028: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000103d: AND 0000103e: DUP2 0000103f: MSTORE 00001040: PUSH1 0x20 00001042: ADD 00001043: SWAP1 00001044: DUP2 00001045: MSTORE 00001046: PUSH1 0x20 00001048: ADD 00001049: PUSH1 0x00 0000104b: KECCAK256 0000104c: SLOAD 0000104d: SWAP1 0000104e: POP 0000104f: SWAP2 00001050: SWAP1 00001051: POP 00001052: JUMP 00001053: JUMPDEST 00001054: PUSH1 0x08 00001056: SLOAD 00001057: DUP2 00001058: JUMP 00001059: JUMPDEST 0000105a: PUSH1 0x00 0000105c: PUSH1 0x09 0000105e: PUSH1 0x00 00001060: SWAP1 00001061: SLOAD 00001062: SWAP1 00001063: PUSH2 0x0100 00001066: EXP 00001067: SWAP1 00001068: DIV 00001069: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000107e: AND 0000107f: SWAP1 00001080: POP 00001081: SWAP1 00001082: JUMP 00001083: JUMPDEST 00001084: PUSH1 0x00 00001086: PUSH2 0x108e 00001089: DUP3 0000108a: PUSH2 0x1212 0000108d: JUMP 0000108e: JUMPDEST 0000108f: SWAP1 00001090: POP 00001091: SWAP2 00001092: SWAP1 00001093: POP 00001094: JUMP 00001095: JUMPDEST 00001096: PUSH1 0x60 00001098: PUSH1 0x04 0000109a: DUP1 0000109b: SLOAD 0000109c: PUSH2 0x10a4 0000109f: SWAP1 000010a0: PUSH2 0x24d4 000010a3: JUMP 000010a4: JUMPDEST 000010a5: DUP1 000010a6: PUSH1 0x1f 000010a8: ADD 000010a9: PUSH1 0x20 000010ab: DUP1 000010ac: SWAP2 000010ad: DIV 000010ae: MUL 000010af: PUSH1 0x20 000010b1: ADD 000010b2: PUSH1 0x40 000010b4: MLOAD 000010b5: SWAP1 000010b6: DUP2 000010b7: ADD 000010b8: PUSH1 0x40 000010ba: MSTORE 000010bb: DUP1 000010bc: SWAP3 000010bd: SWAP2 000010be: SWAP1 000010bf: DUP2 000010c0: DUP2 000010c1: MSTORE 000010c2: PUSH1 0x20 000010c4: ADD 000010c5: DUP3 000010c6: DUP1 000010c7: SLOAD 000010c8: PUSH2 0x10d0 000010cb: SWAP1 000010cc: PUSH2 0x24d4 000010cf: JUMP 000010d0: JUMPDEST 000010d1: DUP1 000010d2: ISZERO 000010d3: PUSH2 0x111d 000010d6: JUMPI 000010d7: DUP1 000010d8: PUSH1 0x1f 000010da: LT 000010db: PUSH2 0x10f2 000010de: JUMPI 000010df: PUSH2 0x0100 000010e2: DUP1 000010e3: DUP4 000010e4: SLOAD 000010e5: DIV 000010e6: MUL 000010e7: DUP4 000010e8: MSTORE 000010e9: SWAP2 000010ea: PUSH1 0x20 000010ec: ADD 000010ed: SWAP2 000010ee: PUSH2 0x111d 000010f1: JUMP 000010f2: JUMPDEST 000010f3: DUP3 000010f4: ADD 000010f5: SWAP2 000010f6: SWAP1 000010f7: PUSH1 0x00 000010f9: MSTORE 000010fa: PUSH1 0x20 000010fc: PUSH1 0x00 000010fe: KECCAK256 000010ff: SWAP1 00001100: JUMPDEST 00001101: DUP2 00001102: SLOAD 00001103: DUP2 00001104: MSTORE 00001105: SWAP1 00001106: PUSH1 0x01 00001108: ADD 00001109: SWAP1 0000110a: PUSH1 0x20 0000110c: ADD 0000110d: DUP1 0000110e: DUP4 0000110f: GT 00001110: PUSH2 0x1100 00001113: JUMPI 00001114: DUP3 00001115: SWAP1 00001116: SUB 00001117: PUSH1 0x1f 00001119: AND 0000111a: DUP3 0000111b: ADD 0000111c: SWAP2 0000111d: JUMPDEST 0000111e: POP 0000111f: POP 00001120: POP 00001121: POP 00001122: POP 00001123: SWAP1 00001124: POP 00001125: SWAP1 00001126: JUMP 00001127: JUMPDEST 00001128: PUSH1 0x00 0000112a: DUP1 0000112b: PUSH1 0x01 0000112d: PUSH1 0x00 0000112f: PUSH2 0x1136 00001132: PUSH2 0x1467 00001135: JUMP 00001136: JUMPDEST 00001137: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000114c: AND 0000114d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001162: AND 00001163: DUP2 00001164: MSTORE 00001165: PUSH1 0x20 00001167: ADD 00001168: SWAP1 00001169: DUP2 0000116a: MSTORE 0000116b: PUSH1 0x20 0000116d: ADD 0000116e: PUSH1 0x00 00001170: KECCAK256 00001171: PUSH1 0x00 00001173: DUP6 00001174: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001189: AND 0000118a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000119f: AND 000011a0: DUP2 000011a1: MSTORE 000011a2: PUSH1 0x20 000011a4: ADD 000011a5: SWAP1 000011a6: DUP2 000011a7: MSTORE 000011a8: PUSH1 0x20 000011aa: ADD 000011ab: PUSH1 0x00 000011ad: KECCAK256 000011ae: SLOAD 000011af: SWAP1 000011b0: POP 000011b1: DUP3 000011b2: DUP2 000011b3: LT 000011b4: ISZERO 000011b5: PUSH2 0x11f3 000011b8: JUMPI 000011b9: PUSH1 0x40 000011bb: MLOAD 000011bc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000011dd: DUP2 000011de: MSTORE 000011df: PUSH1 0x04 000011e1: ADD 000011e2: PUSH2 0x11ea 000011e5: SWAP1 000011e6: PUSH2 0x2855 000011e9: JUMP 000011ea: JUMPDEST 000011eb: PUSH1 0x40 000011ed: MLOAD 000011ee: DUP1 000011ef: SWAP2 000011f0: SUB 000011f1: SWAP1 000011f2: REVERT 000011f3: JUMPDEST 000011f4: PUSH2 0x1207 000011f7: PUSH2 0x11fe 000011fa: PUSH2 0x1467 000011fd: JUMP 000011fe: JUMPDEST 000011ff: DUP6 00001200: DUP6 00001201: DUP5 00001202: SUB 00001203: PUSH2 0x146f 00001206: JUMP 00001207: JUMPDEST 00001208: PUSH1 0x01 0000120a: SWAP2 0000120b: POP 0000120c: POP 0000120d: SWAP3 0000120e: SWAP2 0000120f: POP 00001210: POP 00001211: JUMP 00001212: JUMPDEST 00001213: PUSH1 0x00 00001215: PUSH2 0x126e 00001218: PUSH1 0x07 0000121a: PUSH1 0x00 0000121c: DUP5 0000121d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001232: AND 00001233: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001248: AND 00001249: DUP2 0000124a: MSTORE 0000124b: PUSH1 0x20 0000124d: ADD 0000124e: SWAP1 0000124f: DUP2 00001250: MSTORE 00001251: PUSH1 0x20 00001253: ADD 00001254: PUSH1 0x00 00001256: KECCAK256 00001257: SLOAD 00001258: PUSH2 0x1260 0000125b: DUP5 0000125c: PUSH2 0x0b7c 0000125f: JUMP 00001260: JUMPDEST 00001261: PUSH2 0x19a3 00001264: SWAP1 00001265: SWAP2 00001266: SWAP1 00001267: PUSH4 0xffffffff 0000126c: AND 0000126d: JUMP 0000126e: JUMPDEST 0000126f: SWAP1 00001270: POP 00001271: SWAP2 00001272: SWAP1 00001273: POP 00001274: JUMP 00001275: JUMPDEST 00001276: PUSH1 0x00 00001278: PUSH2 0x1289 0000127b: PUSH2 0x1282 0000127e: PUSH2 0x1467 00001281: JUMP 00001282: JUMPDEST 00001283: DUP5 00001284: DUP5 00001285: PUSH2 0x1848 00001288: JUMP 00001289: JUMPDEST 0000128a: PUSH1 0x01 0000128c: SWAP1 0000128d: POP 0000128e: SWAP3 0000128f: SWAP2 00001290: POP 00001291: POP 00001292: JUMP 00001293: JUMPDEST 00001294: PUSH1 0x00 00001296: PUSH1 0x07 00001298: PUSH1 0x00 0000129a: DUP4 0000129b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012b0: AND 000012b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012c6: AND 000012c7: DUP2 000012c8: MSTORE 000012c9: PUSH1 0x20 000012cb: ADD 000012cc: SWAP1 000012cd: DUP2 000012ce: MSTORE 000012cf: PUSH1 0x20 000012d1: ADD 000012d2: PUSH1 0x00 000012d4: KECCAK256 000012d5: SLOAD 000012d6: SWAP1 000012d7: POP 000012d8: SWAP2 000012d9: SWAP1 000012da: POP 000012db: JUMP 000012dc: JUMPDEST 000012dd: PUSH3 0x278d00 000012e1: DUP2 000012e2: JUMP 000012e3: JUMPDEST 000012e4: PUSH1 0x00 000012e6: PUSH1 0x01 000012e8: PUSH1 0x00 000012ea: DUP5 000012eb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001300: AND 00001301: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001316: AND 00001317: DUP2 00001318: MSTORE 00001319: PUSH1 0x20 0000131b: ADD 0000131c: SWAP1 0000131d: DUP2 0000131e: MSTORE 0000131f: PUSH1 0x20 00001321: ADD 00001322: PUSH1 0x00 00001324: KECCAK256 00001325: PUSH1 0x00 00001327: DUP4 00001328: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000133d: AND 0000133e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001353: AND 00001354: DUP2 00001355: MSTORE 00001356: PUSH1 0x20 00001358: ADD 00001359: SWAP1 0000135a: DUP2 0000135b: MSTORE 0000135c: PUSH1 0x20 0000135e: ADD 0000135f: PUSH1 0x00 00001361: KECCAK256 00001362: SLOAD 00001363: SWAP1 00001364: POP 00001365: SWAP3 00001366: SWAP2 00001367: POP 00001368: POP 00001369: JUMP 0000136a: JUMPDEST 0000136b: PUSH1 0x00 0000136d: DUP1 0000136e: PUSH1 0x00 00001370: DUP4 00001371: SWAP3 00001372: POP 00001373: PUSH2 0x137b 00001376: DUP4 00001377: PUSH2 0x1212 0000137a: JUMP 0000137b: JUMPDEST 0000137c: SWAP2 0000137d: POP 0000137e: PUSH2 0x1386 00001381: DUP4 00001382: PUSH2 0x0b7c 00001385: JUMP 00001386: JUMPDEST 00001387: SWAP1 00001388: POP 00001389: SWAP2 0000138a: SWAP4 0000138b: SWAP1 0000138c: SWAP3 0000138d: POP 0000138e: JUMP 0000138f: JUMPDEST 00001390: PUSH1 0x00 00001392: DUP1 00001393: DUP4 00001394: SUB 00001395: PUSH2 0x13a1 00001398: JUMPI 00001399: PUSH1 0x00 0000139b: SWAP1 0000139c: POP 0000139d: PUSH2 0x1403 000013a0: JUMP 000013a1: JUMPDEST 000013a2: PUSH1 0x00 000013a4: DUP3 000013a5: DUP5 000013a6: PUSH2 0x13af 000013a9: SWAP2 000013aa: SWAP1 000013ab: PUSH2 0x2875 000013ae: JUMP 000013af: JUMPDEST 000013b0: SWAP1 000013b1: POP 000013b2: DUP3 000013b3: DUP5 000013b4: DUP3 000013b5: PUSH2 0x13be 000013b8: SWAP2 000013b9: SWAP1 000013ba: PUSH2 0x2365 000013bd: JUMP 000013be: JUMPDEST 000013bf: EQ 000013c0: PUSH2 0x13fe 000013c3: JUMPI 000013c4: PUSH1 0x40 000013c6: MLOAD 000013c7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000013e8: DUP2 000013e9: MSTORE 000013ea: PUSH1 0x04 000013ec: ADD 000013ed: PUSH2 0x13f5 000013f0: SWAP1 000013f1: PUSH2 0x2929 000013f4: JUMP 000013f5: JUMPDEST 000013f6: PUSH1 0x40 000013f8: MLOAD 000013f9: DUP1 000013fa: SWAP2 000013fb: SUB 000013fc: SWAP1 000013fd: REVERT 000013fe: JUMPDEST 000013ff: DUP1 00001400: SWAP2 00001401: POP 00001402: POP 00001403: JUMPDEST 00001404: SWAP3 00001405: SWAP2 00001406: POP 00001407: POP 00001408: JUMP 00001409: JUMPDEST 0000140a: PUSH1 0x00 0000140c: DUP1 0000140d: DUP3 0000140e: DUP5 0000140f: PUSH2 0x1418 00001412: SWAP2 00001413: SWAP1 00001414: PUSH2 0x23bf 00001417: JUMP 00001418: JUMPDEST 00001419: SWAP1 0000141a: POP 0000141b: DUP4 0000141c: DUP2 0000141d: LT 0000141e: ISZERO 0000141f: PUSH2 0x145d 00001422: JUMPI 00001423: PUSH1 0x40 00001425: MLOAD 00001426: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001447: DUP2 00001448: MSTORE 00001449: PUSH1 0x04 0000144b: ADD 0000144c: PUSH2 0x1454 0000144f: SWAP1 00001450: PUSH2 0x2995 00001453: JUMP 00001454: JUMPDEST 00001455: PUSH1 0x40 00001457: MLOAD 00001458: DUP1 00001459: SWAP2 0000145a: SUB 0000145b: SWAP1 0000145c: REVERT 0000145d: JUMPDEST 0000145e: DUP1 0000145f: SWAP2 00001460: POP 00001461: POP 00001462: SWAP3 00001463: SWAP2 00001464: POP 00001465: POP 00001466: JUMP 00001467: JUMPDEST 00001468: PUSH1 0x00 0000146a: CALLER 0000146b: SWAP1 0000146c: POP 0000146d: SWAP1 0000146e: JUMP 0000146f: JUMPDEST 00001470: PUSH1 0x00 00001472: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001487: AND 00001488: DUP4 00001489: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000149e: AND 0000149f: SUB 000014a0: PUSH2 0x14de 000014a3: JUMPI 000014a4: PUSH1 0x40 000014a6: MLOAD 000014a7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000014c8: DUP2 000014c9: MSTORE 000014ca: PUSH1 0x04 000014cc: ADD 000014cd: PUSH2 0x14d5 000014d0: SWAP1 000014d1: PUSH2 0x2a27 000014d4: JUMP 000014d5: JUMPDEST 000014d6: PUSH1 0x40 000014d8: MLOAD 000014d9: DUP1 000014da: SWAP2 000014db: SUB 000014dc: SWAP1 000014dd: REVERT 000014de: JUMPDEST 000014df: PUSH1 0x00 000014e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014f6: AND 000014f7: DUP3 000014f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000150d: AND 0000150e: SUB 0000150f: PUSH2 0x154d 00001512: JUMPI 00001513: PUSH1 0x40 00001515: MLOAD 00001516: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001537: DUP2 00001538: MSTORE 00001539: PUSH1 0x04 0000153b: ADD 0000153c: PUSH2 0x1544 0000153f: SWAP1 00001540: PUSH2 0x2ab9 00001543: JUMP 00001544: JUMPDEST 00001545: PUSH1 0x40 00001547: MLOAD 00001548: DUP1 00001549: SWAP2 0000154a: SUB 0000154b: SWAP1 0000154c: REVERT 0000154d: JUMPDEST 0000154e: DUP1 0000154f: PUSH1 0x01 00001551: PUSH1 0x00 00001553: DUP6 00001554: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001569: AND 0000156a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000157f: AND 00001580: DUP2 00001581: MSTORE 00001582: PUSH1 0x20 00001584: ADD 00001585: SWAP1 00001586: DUP2 00001587: MSTORE 00001588: PUSH1 0x20 0000158a: ADD 0000158b: PUSH1 0x00 0000158d: KECCAK256 0000158e: PUSH1 0x00 00001590: DUP5 00001591: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015a6: AND 000015a7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015bc: AND 000015bd: DUP2 000015be: MSTORE 000015bf: PUSH1 0x20 000015c1: ADD 000015c2: SWAP1 000015c3: DUP2 000015c4: MSTORE 000015c5: PUSH1 0x20 000015c7: ADD 000015c8: PUSH1 0x00 000015ca: KECCAK256 000015cb: DUP2 000015cc: SWAP1 000015cd: SSTORE 000015ce: POP 000015cf: DUP2 000015d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015e5: AND 000015e6: DUP4 000015e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015fc: AND 000015fd: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 0000161e: DUP4 0000161f: PUSH1 0x40 00001621: MLOAD 00001622: PUSH2 0x162b 00001625: SWAP2 00001626: SWAP1 00001627: PUSH2 0x2129 0000162a: JUMP 0000162b: JUMPDEST 0000162c: PUSH1 0x40 0000162e: MLOAD 0000162f: DUP1 00001630: SWAP2 00001631: SUB 00001632: SWAP1 00001633: LOG3 00001634: POP 00001635: POP 00001636: POP 00001637: JUMP 00001638: JUMPDEST 00001639: PUSH1 0x00 0000163b: DUP1 0000163c: PUSH2 0x1644 0000163f: DUP4 00001640: PUSH2 0x1212 00001643: JUMP 00001644: JUMPDEST 00001645: SWAP1 00001646: POP 00001647: PUSH1 0x00 00001649: DUP2 0000164a: GT 0000164b: ISZERO 0000164c: PUSH2 0x183d 0000164f: JUMPI 00001650: PUSH2 0x16a1 00001653: DUP2 00001654: PUSH1 0x07 00001656: PUSH1 0x00 00001658: DUP7 00001659: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000166e: AND 0000166f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001684: AND 00001685: DUP2 00001686: MSTORE 00001687: PUSH1 0x20 00001689: ADD 0000168a: SWAP1 0000168b: DUP2 0000168c: MSTORE 0000168d: PUSH1 0x20 0000168f: ADD 00001690: PUSH1 0x00 00001692: KECCAK256 00001693: SLOAD 00001694: PUSH2 0x1409 00001697: SWAP1 00001698: SWAP2 00001699: SWAP1 0000169a: PUSH4 0xffffffff 0000169f: AND 000016a0: JUMP 000016a1: JUMPDEST 000016a2: PUSH1 0x07 000016a4: PUSH1 0x00 000016a6: DUP6 000016a7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016bc: AND 000016bd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016d2: AND 000016d3: DUP2 000016d4: MSTORE 000016d5: PUSH1 0x20 000016d7: ADD 000016d8: SWAP1 000016d9: DUP2 000016da: MSTORE 000016db: PUSH1 0x20 000016dd: ADD 000016de: PUSH1 0x00 000016e0: KECCAK256 000016e1: DUP2 000016e2: SWAP1 000016e3: SSTORE 000016e4: POP 000016e5: PUSH32 0xee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d 00001706: DUP4 00001707: DUP3 00001708: PUSH1 0x40 0000170a: MLOAD 0000170b: PUSH2 0x1715 0000170e: SWAP3 0000170f: SWAP2 00001710: SWAP1 00001711: PUSH2 0x2ad9 00001714: JUMP 00001715: JUMPDEST 00001716: PUSH1 0x40 00001718: MLOAD 00001719: DUP1 0000171a: SWAP2 0000171b: SUB 0000171c: SWAP1 0000171d: LOG1 0000171e: PUSH1 0x00 00001720: DUP4 00001721: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001736: AND 00001737: DUP3 00001738: PUSH2 0x0bb8 0000173b: SWAP1 0000173c: PUSH1 0x40 0000173e: MLOAD 0000173f: PUSH2 0x1747 00001742: SWAP1 00001743: PUSH2 0x2490 00001746: JUMP 00001747: JUMPDEST 00001748: PUSH1 0x00 0000174a: PUSH1 0x40 0000174c: MLOAD 0000174d: DUP1 0000174e: DUP4 0000174f: SUB 00001750: DUP2 00001751: DUP6 00001752: DUP9 00001753: DUP9 00001754: CALL 00001755: SWAP4 00001756: POP 00001757: POP 00001758: POP 00001759: POP 0000175a: RETURNDATASIZE 0000175b: DUP1 0000175c: PUSH1 0x00 0000175e: DUP2 0000175f: EQ 00001760: PUSH2 0x1785 00001763: JUMPI 00001764: PUSH1 0x40 00001766: MLOAD 00001767: SWAP2 00001768: POP 00001769: PUSH1 0x1f 0000176b: NOT 0000176c: PUSH1 0x3f 0000176e: RETURNDATASIZE 0000176f: ADD 00001770: AND 00001771: DUP3 00001772: ADD 00001773: PUSH1 0x40 00001775: MSTORE 00001776: RETURNDATASIZE 00001777: DUP3 00001778: MSTORE 00001779: RETURNDATASIZE 0000177a: PUSH1 0x00 0000177c: PUSH1 0x20 0000177e: DUP5 0000177f: ADD 00001780: RETURNDATACOPY 00001781: PUSH2 0x178a 00001784: JUMP 00001785: JUMPDEST 00001786: PUSH1 0x60 00001788: SWAP2 00001789: POP 0000178a: JUMPDEST 0000178b: POP 0000178c: POP 0000178d: SWAP1 0000178e: POP 0000178f: DUP1 00001790: PUSH2 0x1833 00001793: JUMPI 00001794: PUSH2 0x17e5 00001797: DUP3 00001798: PUSH1 0x07 0000179a: PUSH1 0x00 0000179c: DUP8 0000179d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017b2: AND 000017b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017c8: AND 000017c9: DUP2 000017ca: MSTORE 000017cb: PUSH1 0x20 000017cd: ADD 000017ce: SWAP1 000017cf: DUP2 000017d0: MSTORE 000017d1: PUSH1 0x20 000017d3: ADD 000017d4: PUSH1 0x00 000017d6: KECCAK256 000017d7: SLOAD 000017d8: PUSH2 0x19a3 000017db: SWAP1 000017dc: SWAP2 000017dd: SWAP1 000017de: PUSH4 0xffffffff 000017e3: AND 000017e4: JUMP 000017e5: JUMPDEST 000017e6: PUSH1 0x07 000017e8: PUSH1 0x00 000017ea: DUP7 000017eb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001800: AND 00001801: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001816: AND 00001817: DUP2 00001818: MSTORE 00001819: PUSH1 0x20 0000181b: ADD 0000181c: SWAP1 0000181d: DUP2 0000181e: MSTORE 0000181f: PUSH1 0x20 00001821: ADD 00001822: PUSH1 0x00 00001824: KECCAK256 00001825: DUP2 00001826: SWAP1 00001827: SSTORE 00001828: POP 00001829: PUSH1 0x00 0000182b: SWAP3 0000182c: POP 0000182d: POP 0000182e: POP 0000182f: PUSH2 0x1843 00001832: JUMP 00001833: JUMPDEST 00001834: DUP2 00001835: SWAP3 00001836: POP 00001837: POP 00001838: POP 00001839: PUSH2 0x1843 0000183c: JUMP 0000183d: JUMPDEST 0000183e: PUSH1 0x00 00001840: SWAP2 00001841: POP 00001842: POP 00001843: JUMPDEST 00001844: SWAP2 00001845: SWAP1 00001846: POP 00001847: JUMP 00001848: JUMPDEST 00001849: PUSH1 0x00 0000184b: PUSH2 0x1889 0000184e: JUMPI 0000184f: PUSH1 0x40 00001851: MLOAD 00001852: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001873: DUP2 00001874: MSTORE 00001875: PUSH1 0x04 00001877: ADD 00001878: PUSH2 0x1880 0000187b: SWAP1 0000187c: PUSH2 0x2b4e 0000187f: JUMP 00001880: JUMPDEST 00001881: PUSH1 0x40 00001883: MLOAD 00001884: DUP1 00001885: SWAP2 00001886: SUB 00001887: SWAP1 00001888: REVERT 00001889: JUMPDEST 0000188a: PUSH1 0x0e 0000188c: PUSH1 0x00 0000188e: SWAP1 0000188f: SLOAD 00001890: SWAP1 00001891: PUSH2 0x0100 00001894: EXP 00001895: SWAP1 00001896: DIV 00001897: PUSH1 0xff 00001899: AND 0000189a: PUSH1 0x0e 0000189c: PUSH1 0x00 0000189e: PUSH2 0x0100 000018a1: EXP 000018a2: DUP2 000018a3: SLOAD 000018a4: DUP2 000018a5: PUSH1 0xff 000018a7: MUL 000018a8: NOT 000018a9: AND 000018aa: SWAP1 000018ab: DUP4 000018ac: ISZERO 000018ad: ISZERO 000018ae: MUL 000018af: OR 000018b0: SWAP1 000018b1: SSTORE 000018b2: POP 000018b3: POP 000018b4: POP 000018b5: POP 000018b6: JUMP 000018b7: JUMPDEST 000018b8: PUSH1 0x00 000018ba: DUP1 000018bb: DUP3 000018bc: SWAP1 000018bd: POP 000018be: PUSH1 0x00 000018c0: DUP2 000018c1: SLT 000018c2: ISZERO 000018c3: PUSH2 0x18cb 000018c6: JUMPI 000018c7: PUSH1 0x00 000018c9: DUP1 000018ca: REVERT 000018cb: JUMPDEST 000018cc: DUP1 000018cd: SWAP2 000018ce: POP 000018cf: POP 000018d0: SWAP2 000018d1: SWAP1 000018d2: POP 000018d3: JUMP 000018d4: JUMPDEST 000018d5: PUSH1 0x00 000018d7: DUP1 000018d8: DUP3 000018d9: DUP5 000018da: PUSH2 0x18e3 000018dd: SWAP2 000018de: SWAP1 000018df: PUSH2 0x2b78 000018e2: JUMP 000018e3: JUMPDEST 000018e4: SWAP1 000018e5: POP 000018e6: PUSH1 0x00 000018e8: DUP4 000018e9: SLT 000018ea: ISZERO 000018eb: DUP1 000018ec: ISZERO 000018ed: PUSH2 0x18f6 000018f0: JUMPI 000018f1: POP 000018f2: DUP4 000018f3: DUP2 000018f4: SLT 000018f5: ISZERO 000018f6: JUMPDEST 000018f7: DUP1 000018f8: PUSH2 0x190c 000018fb: JUMPI 000018fc: POP 000018fd: PUSH1 0x00 000018ff: DUP4 00001900: SLT 00001901: DUP1 00001902: ISZERO 00001903: PUSH2 0x190b 00001906: JUMPI 00001907: POP 00001908: DUP4 00001909: DUP2 0000190a: SLT 0000190b: JUMPDEST 0000190c: JUMPDEST 0000190d: PUSH2 0x1915 00001910: JUMPI 00001911: PUSH1 0x00 00001913: DUP1 00001914: REVERT 00001915: JUMPDEST 00001916: DUP1 00001917: SWAP2 00001918: POP 00001919: POP 0000191a: SWAP3 0000191b: SWAP2 0000191c: POP 0000191d: POP 0000191e: JUMP 0000191f: JUMPDEST 00001920: PUSH1 0x00 00001922: DUP1 00001923: DUP3 00001924: SLT 00001925: ISZERO 00001926: PUSH2 0x192e 00001929: JUMPI 0000192a: PUSH1 0x00 0000192c: DUP1 0000192d: REVERT 0000192e: JUMPDEST 0000192f: DUP2 00001930: SWAP1 00001931: POP 00001932: SWAP2 00001933: SWAP1 00001934: POP 00001935: JUMP 00001936: JUMPDEST 00001937: PUSH1 0x00 00001939: PUSH2 0x1941 0000193c: DUP4 0000193d: PUSH2 0x100b 00001940: JUMP 00001941: JUMPDEST 00001942: SWAP1 00001943: POP 00001944: DUP1 00001945: DUP3 00001946: GT 00001947: ISZERO 00001948: PUSH2 0x1972 0000194b: JUMPI 0000194c: PUSH1 0x00 0000194e: PUSH2 0x1960 00001951: DUP3 00001952: DUP5 00001953: PUSH2 0x19a3 00001956: SWAP1 00001957: SWAP2 00001958: SWAP1 00001959: PUSH4 0xffffffff 0000195e: AND 0000195f: JUMP 00001960: JUMPDEST 00001961: SWAP1 00001962: POP 00001963: PUSH2 0x196c 00001966: DUP5 00001967: DUP3 00001968: PUSH2 0x19ed 0000196b: JUMP 0000196c: JUMPDEST 0000196d: POP 0000196e: PUSH2 0x199e 00001971: JUMP 00001972: JUMPDEST 00001973: DUP1 00001974: DUP3 00001975: LT 00001976: ISZERO 00001977: PUSH2 0x199d 0000197a: JUMPI 0000197b: PUSH1 0x00 0000197d: PUSH2 0x198f 00001980: DUP4 00001981: DUP4 00001982: PUSH2 0x19a3 00001985: SWAP1 00001986: SWAP2 00001987: SWAP1 00001988: PUSH4 0xffffffff 0000198d: AND 0000198e: JUMP 0000198f: JUMPDEST 00001990: SWAP1 00001991: POP 00001992: PUSH2 0x199b 00001995: DUP5 00001996: DUP3 00001997: PUSH2 0x1aac 0000199a: JUMP 0000199b: JUMPDEST 0000199c: POP 0000199d: JUMPDEST 0000199e: JUMPDEST 0000199f: POP 000019a0: POP 000019a1: POP 000019a2: JUMP 000019a3: JUMPDEST 000019a4: PUSH1 0x00 000019a6: PUSH2 0x19e5 000019a9: DUP4 000019aa: DUP4 000019ab: PUSH1 0x40 000019ad: MLOAD 000019ae: DUP1 000019af: PUSH1 0x40 000019b1: ADD 000019b2: PUSH1 0x40 000019b4: MSTORE 000019b5: DUP1 000019b6: PUSH1 0x1e 000019b8: DUP2 000019b9: MSTORE 000019ba: PUSH1 0x20 000019bc: ADD 000019bd: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 000019de: DUP2 000019df: MSTORE 000019e0: POP 000019e1: PUSH2 0x1b6b 000019e4: JUMP 000019e5: JUMPDEST 000019e6: SWAP1 000019e7: POP 000019e8: SWAP3 000019e9: SWAP2 000019ea: POP 000019eb: POP 000019ec: JUMP 000019ed: JUMPDEST 000019ee: PUSH2 0x19f7 000019f1: DUP3 000019f2: DUP3 000019f3: PUSH2 0x1bcf 000019f6: JUMP 000019f7: JUMPDEST 000019f8: PUSH2 0x1a65 000019fb: PUSH2 0x1a17 000019fe: PUSH2 0x1a12 00001a01: DUP4 00001a02: PUSH1 0x05 00001a04: SLOAD 00001a05: PUSH2 0x138f 00001a08: SWAP1 00001a09: SWAP2 00001a0a: SWAP1 00001a0b: PUSH4 0xffffffff 00001a10: AND 00001a11: JUMP 00001a12: JUMPDEST 00001a13: PUSH2 0x18b7 00001a16: JUMP 00001a17: JUMPDEST 00001a18: PUSH1 0x06 00001a1a: PUSH1 0x00 00001a1c: DUP6 00001a1d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a32: AND 00001a33: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a48: AND 00001a49: DUP2 00001a4a: MSTORE 00001a4b: PUSH1 0x20 00001a4d: ADD 00001a4e: SWAP1 00001a4f: DUP2 00001a50: MSTORE 00001a51: PUSH1 0x20 00001a53: ADD 00001a54: PUSH1 0x00 00001a56: KECCAK256 00001a57: SLOAD 00001a58: PUSH2 0x1d2e 00001a5b: SWAP1 00001a5c: SWAP2 00001a5d: SWAP1 00001a5e: PUSH4 0xffffffff 00001a63: AND 00001a64: JUMP 00001a65: JUMPDEST 00001a66: PUSH1 0x06 00001a68: PUSH1 0x00 00001a6a: DUP5 00001a6b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a80: AND 00001a81: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a96: AND 00001a97: DUP2 00001a98: MSTORE 00001a99: PUSH1 0x20 00001a9b: ADD 00001a9c: SWAP1 00001a9d: DUP2 00001a9e: MSTORE 00001a9f: PUSH1 0x20 00001aa1: ADD 00001aa2: PUSH1 0x00 00001aa4: KECCAK256 00001aa5: DUP2 00001aa6: SWAP1 00001aa7: SSTORE 00001aa8: POP 00001aa9: POP 00001aaa: POP 00001aab: JUMP 00001aac: JUMPDEST 00001aad: PUSH2 0x1ab6 00001ab0: DUP3 00001ab1: DUP3 00001ab2: PUSH2 0x1d79 00001ab5: JUMP 00001ab6: JUMPDEST 00001ab7: PUSH2 0x1b24 00001aba: PUSH2 0x1ad6 00001abd: PUSH2 0x1ad1 00001ac0: DUP4 00001ac1: PUSH1 0x05 00001ac3: SLOAD 00001ac4: PUSH2 0x138f 00001ac7: SWAP1 00001ac8: SWAP2 00001ac9: SWAP1 00001aca: PUSH4 0xffffffff 00001acf: AND 00001ad0: JUMP 00001ad1: JUMPDEST 00001ad2: PUSH2 0x18b7 00001ad5: JUMP 00001ad6: JUMPDEST 00001ad7: PUSH1 0x06 00001ad9: PUSH1 0x00 00001adb: DUP6 00001adc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001af1: AND 00001af2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b07: AND 00001b08: DUP2 00001b09: MSTORE 00001b0a: PUSH1 0x20 00001b0c: ADD 00001b0d: SWAP1 00001b0e: DUP2 00001b0f: MSTORE 00001b10: PUSH1 0x20 00001b12: ADD 00001b13: PUSH1 0x00 00001b15: KECCAK256 00001b16: SLOAD 00001b17: PUSH2 0x18d4 00001b1a: SWAP1 00001b1b: SWAP2 00001b1c: SWAP1 00001b1d: PUSH4 0xffffffff 00001b22: AND 00001b23: JUMP 00001b24: JUMPDEST 00001b25: PUSH1 0x06 00001b27: PUSH1 0x00 00001b29: DUP5 00001b2a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b3f: AND 00001b40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b55: AND 00001b56: DUP2 00001b57: MSTORE 00001b58: PUSH1 0x20 00001b5a: ADD 00001b5b: SWAP1 00001b5c: DUP2 00001b5d: MSTORE 00001b5e: PUSH1 0x20 00001b60: ADD 00001b61: PUSH1 0x00 00001b63: KECCAK256 00001b64: DUP2 00001b65: SWAP1 00001b66: SSTORE 00001b67: POP 00001b68: POP 00001b69: POP 00001b6a: JUMP 00001b6b: JUMPDEST 00001b6c: PUSH1 0x00 00001b6e: DUP4 00001b6f: DUP4 00001b70: GT 00001b71: ISZERO 00001b72: DUP3 00001b73: SWAP1 00001b74: PUSH2 0x1bb3 00001b77: JUMPI 00001b78: PUSH1 0x40 00001b7a: MLOAD 00001b7b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001b9c: DUP2 00001b9d: MSTORE 00001b9e: PUSH1 0x04 00001ba0: ADD 00001ba1: PUSH2 0x1baa 00001ba4: SWAP2 00001ba5: SWAP1 00001ba6: PUSH2 0x1fe9 00001ba9: JUMP 00001baa: JUMPDEST 00001bab: PUSH1 0x40 00001bad: MLOAD 00001bae: DUP1 00001baf: SWAP2 00001bb0: SUB 00001bb1: SWAP1 00001bb2: REVERT 00001bb3: JUMPDEST 00001bb4: POP 00001bb5: PUSH1 0x00 00001bb7: DUP4 00001bb8: DUP6 00001bb9: PUSH2 0x1bc2 00001bbc: SWAP2 00001bbd: SWAP1 00001bbe: PUSH2 0x2bbc 00001bc1: JUMP 00001bc2: JUMPDEST 00001bc3: SWAP1 00001bc4: POP 00001bc5: DUP1 00001bc6: SWAP2 00001bc7: POP 00001bc8: POP 00001bc9: SWAP4 00001bca: SWAP3 00001bcb: POP 00001bcc: POP 00001bcd: POP 00001bce: JUMP 00001bcf: JUMPDEST 00001bd0: PUSH1 0x00 00001bd2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001be7: AND 00001be8: DUP3 00001be9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bfe: AND 00001bff: SUB 00001c00: PUSH2 0x1c3e 00001c03: JUMPI 00001c04: PUSH1 0x40 00001c06: MLOAD 00001c07: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001c28: DUP2 00001c29: MSTORE 00001c2a: PUSH1 0x04 00001c2c: ADD 00001c2d: PUSH2 0x1c35 00001c30: SWAP1 00001c31: PUSH2 0x2c3c 00001c34: JUMP 00001c35: JUMPDEST 00001c36: PUSH1 0x40 00001c38: MLOAD 00001c39: DUP1 00001c3a: SWAP2 00001c3b: SUB 00001c3c: SWAP1 00001c3d: REVERT 00001c3e: JUMPDEST 00001c3f: PUSH2 0x1c4a 00001c42: PUSH1 0x00 00001c44: DUP4 00001c45: DUP4 00001c46: PUSH2 0x1f4f 00001c49: JUMP 00001c4a: JUMPDEST 00001c4b: DUP1 00001c4c: PUSH1 0x02 00001c4e: PUSH1 0x00 00001c50: DUP3 00001c51: DUP3 00001c52: SLOAD 00001c53: PUSH2 0x1c5c 00001c56: SWAP2 00001c57: SWAP1 00001c58: PUSH2 0x23bf 00001c5b: JUMP 00001c5c: JUMPDEST 00001c5d: SWAP3 00001c5e: POP 00001c5f: POP 00001c60: DUP2 00001c61: SWAP1 00001c62: SSTORE 00001c63: POP 00001c64: DUP1 00001c65: PUSH1 0x00 00001c67: DUP1 00001c68: DUP5 00001c69: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c7e: AND 00001c7f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c94: AND 00001c95: DUP2 00001c96: MSTORE 00001c97: PUSH1 0x20 00001c99: ADD 00001c9a: SWAP1 00001c9b: DUP2 00001c9c: MSTORE 00001c9d: PUSH1 0x20 00001c9f: ADD 00001ca0: PUSH1 0x00 00001ca2: KECCAK256 00001ca3: PUSH1 0x00 00001ca5: DUP3 00001ca6: DUP3 00001ca7: SLOAD 00001ca8: PUSH2 0x1cb1 00001cab: SWAP2 00001cac: SWAP1 00001cad: PUSH2 0x23bf 00001cb0: JUMP 00001cb1: JUMPDEST 00001cb2: SWAP3 00001cb3: POP 00001cb4: POP 00001cb5: DUP2 00001cb6: SWAP1 00001cb7: SSTORE 00001cb8: POP 00001cb9: DUP2 00001cba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ccf: AND 00001cd0: PUSH1 0x00 00001cd2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ce7: AND 00001ce8: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001d09: DUP4 00001d0a: PUSH1 0x40 00001d0c: MLOAD 00001d0d: PUSH2 0x1d16 00001d10: SWAP2 00001d11: SWAP1 00001d12: PUSH2 0x2129 00001d15: JUMP 00001d16: JUMPDEST 00001d17: PUSH1 0x40 00001d19: MLOAD 00001d1a: DUP1 00001d1b: SWAP2 00001d1c: SUB 00001d1d: SWAP1 00001d1e: LOG3 00001d1f: PUSH2 0x1d2a 00001d22: PUSH1 0x00 00001d24: DUP4 00001d25: DUP4 00001d26: PUSH2 0x1f54 00001d29: JUMP 00001d2a: JUMPDEST 00001d2b: POP 00001d2c: POP 00001d2d: JUMP 00001d2e: JUMPDEST 00001d2f: PUSH1 0x00 00001d31: DUP1 00001d32: DUP3 00001d33: DUP5 00001d34: PUSH2 0x1d3d 00001d37: SWAP2 00001d38: SWAP1 00001d39: PUSH2 0x2c5c 00001d3c: JUMP 00001d3d: JUMPDEST 00001d3e: SWAP1 00001d3f: POP 00001d40: PUSH1 0x00 00001d42: DUP4 00001d43: SLT 00001d44: ISZERO 00001d45: DUP1 00001d46: ISZERO 00001d47: PUSH2 0x1d50 00001d4a: JUMPI 00001d4b: POP 00001d4c: DUP4 00001d4d: DUP2 00001d4e: SGT 00001d4f: ISZERO 00001d50: JUMPDEST 00001d51: DUP1 00001d52: PUSH2 0x1d66 00001d55: JUMPI 00001d56: POP 00001d57: PUSH1 0x00 00001d59: DUP4 00001d5a: SLT 00001d5b: DUP1 00001d5c: ISZERO 00001d5d: PUSH2 0x1d65 00001d60: JUMPI 00001d61: POP 00001d62: DUP4 00001d63: DUP2 00001d64: SGT 00001d65: JUMPDEST 00001d66: JUMPDEST 00001d67: PUSH2 0x1d6f 00001d6a: JUMPI 00001d6b: PUSH1 0x00 00001d6d: DUP1 00001d6e: REVERT 00001d6f: JUMPDEST 00001d70: DUP1 00001d71: SWAP2 00001d72: POP 00001d73: POP 00001d74: SWAP3 00001d75: SWAP2 00001d76: POP 00001d77: POP 00001d78: JUMP 00001d79: JUMPDEST 00001d7a: PUSH1 0x00 00001d7c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d91: AND 00001d92: DUP3 00001d93: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001da8: AND 00001da9: SUB 00001daa: PUSH2 0x1de8 00001dad: JUMPI 00001dae: PUSH1 0x40 00001db0: MLOAD 00001db1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001dd2: DUP2 00001dd3: MSTORE 00001dd4: PUSH1 0x04 00001dd6: ADD 00001dd7: PUSH2 0x1ddf 00001dda: SWAP1 00001ddb: PUSH2 0x2d11 00001dde: JUMP 00001ddf: JUMPDEST 00001de0: PUSH1 0x40 00001de2: MLOAD 00001de3: DUP1 00001de4: SWAP2 00001de5: SUB 00001de6: SWAP1 00001de7: REVERT 00001de8: JUMPDEST 00001de9: PUSH2 0x1df4 00001dec: DUP3 00001ded: PUSH1 0x00 00001def: DUP4 00001df0: PUSH2 0x1f4f 00001df3: JUMP 00001df4: JUMPDEST 00001df5: PUSH1 0x00 00001df7: DUP1 00001df8: PUSH1 0x00 00001dfa: DUP5 00001dfb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e10: AND 00001e11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e26: AND 00001e27: DUP2 00001e28: MSTORE 00001e29: PUSH1 0x20 00001e2b: ADD 00001e2c: SWAP1 00001e2d: DUP2 00001e2e: MSTORE 00001e2f: PUSH1 0x20 00001e31: ADD 00001e32: PUSH1 0x00 00001e34: KECCAK256 00001e35: SLOAD 00001e36: SWAP1 00001e37: POP 00001e38: DUP2 00001e39: DUP2 00001e3a: LT 00001e3b: ISZERO 00001e3c: PUSH2 0x1e7a 00001e3f: JUMPI 00001e40: PUSH1 0x40 00001e42: MLOAD 00001e43: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001e64: DUP2 00001e65: MSTORE 00001e66: PUSH1 0x04 00001e68: ADD 00001e69: PUSH2 0x1e71 00001e6c: SWAP1 00001e6d: PUSH2 0x2da3 00001e70: JUMP 00001e71: JUMPDEST 00001e72: PUSH1 0x40 00001e74: MLOAD 00001e75: DUP1 00001e76: SWAP2 00001e77: SUB 00001e78: SWAP1 00001e79: REVERT 00001e7a: JUMPDEST 00001e7b: DUP2 00001e7c: DUP2 00001e7d: SUB 00001e7e: PUSH1 0x00 00001e80: DUP1 00001e81: DUP6 00001e82: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e97: AND 00001e98: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ead: AND 00001eae: DUP2 00001eaf: MSTORE 00001eb0: PUSH1 0x20 00001eb2: ADD 00001eb3: SWAP1 00001eb4: DUP2 00001eb5: MSTORE 00001eb6: PUSH1 0x20 00001eb8: ADD 00001eb9: PUSH1 0x00 00001ebb: KECCAK256 00001ebc: DUP2 00001ebd: SWAP1 00001ebe: SSTORE 00001ebf: POP 00001ec0: DUP2 00001ec1: PUSH1 0x02 00001ec3: PUSH1 0x00 00001ec5: DUP3 00001ec6: DUP3 00001ec7: SLOAD 00001ec8: PUSH2 0x1ed1 00001ecb: SWAP2 00001ecc: SWAP1 00001ecd: PUSH2 0x2bbc 00001ed0: JUMP 00001ed1: JUMPDEST 00001ed2: SWAP3 00001ed3: POP 00001ed4: POP 00001ed5: DUP2 00001ed6: SWAP1 00001ed7: SSTORE 00001ed8: POP 00001ed9: PUSH1 0x00 00001edb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ef0: AND 00001ef1: DUP4 00001ef2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f07: AND 00001f08: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00001f29: DUP5 00001f2a: PUSH1 0x40 00001f2c: MLOAD 00001f2d: PUSH2 0x1f36 00001f30: SWAP2 00001f31: SWAP1 00001f32: PUSH2 0x2129 00001f35: JUMP 00001f36: JUMPDEST 00001f37: PUSH1 0x40 00001f39: MLOAD 00001f3a: DUP1 00001f3b: SWAP2 00001f3c: SUB 00001f3d: SWAP1 00001f3e: LOG3 00001f3f: PUSH2 0x1f4a 00001f42: DUP4 00001f43: PUSH1 0x00 00001f45: DUP5 00001f46: PUSH2 0x1f54 00001f49: JUMP 00001f4a: JUMPDEST 00001f4b: POP 00001f4c: POP 00001f4d: POP 00001f4e: JUMP 00001f4f: JUMPDEST 00001f50: POP 00001f51: POP 00001f52: POP 00001f53: JUMP 00001f54: JUMPDEST 00001f55: POP 00001f56: POP 00001f57: POP 00001f58: JUMP 00001f59: JUMPDEST 00001f5a: PUSH1 0x00 00001f5c: DUP2 00001f5d: MLOAD 00001f5e: SWAP1 00001f5f: POP 00001f60: SWAP2 00001f61: SWAP1 00001f62: POP 00001f63: JUMP 00001f64: JUMPDEST 00001f65: PUSH1 0x00 00001f67: DUP3 00001f68: DUP3 00001f69: MSTORE 00001f6a: PUSH1 0x20 00001f6c: DUP3 00001f6d: ADD 00001f6e: SWAP1 00001f6f: POP 00001f70: SWAP3 00001f71: SWAP2 00001f72: POP 00001f73: POP 00001f74: JUMP 00001f75: JUMPDEST 00001f76: PUSH1 0x00 00001f78: JUMPDEST 00001f79: DUP4 00001f7a: DUP2 00001f7b: LT 00001f7c: ISZERO 00001f7d: PUSH2 0x1f93 00001f80: JUMPI 00001f81: DUP1 00001f82: DUP3 00001f83: ADD 00001f84: MLOAD 00001f85: DUP2 00001f86: DUP5 00001f87: ADD 00001f88: MSTORE 00001f89: PUSH1 0x20 00001f8b: DUP2 00001f8c: ADD 00001f8d: SWAP1 00001f8e: POP 00001f8f: PUSH2 0x1f78 00001f92: JUMP 00001f93: JUMPDEST 00001f94: PUSH1 0x00 00001f96: DUP5 00001f97: DUP5 00001f98: ADD 00001f99: MSTORE 00001f9a: POP 00001f9b: POP 00001f9c: POP 00001f9d: POP 00001f9e: JUMP 00001f9f: JUMPDEST 00001fa0: PUSH1 0x00 00001fa2: PUSH1 0x1f 00001fa4: NOT 00001fa5: PUSH1 0x1f 00001fa7: DUP4 00001fa8: ADD 00001fa9: AND 00001faa: SWAP1 00001fab: POP 00001fac: SWAP2 00001fad: SWAP1 00001fae: POP 00001faf: JUMP 00001fb0: JUMPDEST 00001fb1: PUSH1 0x00 00001fb3: PUSH2 0x1fbb 00001fb6: DUP3 00001fb7: PUSH2 0x1f59 00001fba: JUMP 00001fbb: JUMPDEST 00001fbc: PUSH2 0x1fc5 00001fbf: DUP2 00001fc0: DUP6 00001fc1: PUSH2 0x1f64 00001fc4: JUMP 00001fc5: JUMPDEST 00001fc6: SWAP4 00001fc7: POP 00001fc8: PUSH2 0x1fd5 00001fcb: DUP2 00001fcc: DUP6 00001fcd: PUSH1 0x20 00001fcf: DUP7 00001fd0: ADD 00001fd1: PUSH2 0x1f75 00001fd4: JUMP 00001fd5: JUMPDEST 00001fd6: PUSH2 0x1fde 00001fd9: DUP2 00001fda: PUSH2 0x1f9f 00001fdd: JUMP 00001fde: JUMPDEST 00001fdf: DUP5 00001fe0: ADD 00001fe1: SWAP2 00001fe2: POP 00001fe3: POP 00001fe4: SWAP3 00001fe5: SWAP2 00001fe6: POP 00001fe7: POP 00001fe8: JUMP 00001fe9: JUMPDEST 00001fea: PUSH1 0x00 00001fec: PUSH1 0x20 00001fee: DUP3 00001fef: ADD 00001ff0: SWAP1 00001ff1: POP 00001ff2: DUP2 00001ff3: DUP2 00001ff4: SUB 00001ff5: PUSH1 0x00 00001ff7: DUP4 00001ff8: ADD 00001ff9: MSTORE 00001ffa: PUSH2 0x2003 00001ffd: DUP2 00001ffe: DUP5 00001fff: PUSH2 0x1fb0 00002002: JUMP 00002003: JUMPDEST 00002004: SWAP1 00002005: POP 00002006: SWAP3 00002007: SWAP2 00002008: POP 00002009: POP 0000200a: JUMP 0000200b: JUMPDEST 0000200c: PUSH1 0x00 0000200e: DUP1 0000200f: REVERT 00002010: JUMPDEST 00002011: PUSH1 0x00 00002013: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002028: DUP3 00002029: AND 0000202a: SWAP1 0000202b: POP 0000202c: SWAP2 0000202d: SWAP1 0000202e: POP 0000202f: JUMP 00002030: JUMPDEST 00002031: PUSH1 0x00 00002033: PUSH2 0x203b 00002036: DUP3 00002037: PUSH2 0x2010 0000203a: JUMP 0000203b: JUMPDEST 0000203c: SWAP1 0000203d: POP 0000203e: SWAP2 0000203f: SWAP1 00002040: POP 00002041: JUMP 00002042: JUMPDEST 00002043: PUSH2 0x204b 00002046: DUP2 00002047: PUSH2 0x2030 0000204a: JUMP 0000204b: JUMPDEST 0000204c: DUP2 0000204d: EQ 0000204e: PUSH2 0x2056 00002051: JUMPI 00002052: PUSH1 0x00 00002054: DUP1 00002055: REVERT 00002056: JUMPDEST 00002057: POP 00002058: JUMP 00002059: JUMPDEST 0000205a: PUSH1 0x00 0000205c: DUP2 0000205d: CALLDATALOAD 0000205e: SWAP1 0000205f: POP 00002060: PUSH2 0x2068 00002063: DUP2 00002064: PUSH2 0x2042 00002067: JUMP 00002068: JUMPDEST 00002069: SWAP3 0000206a: SWAP2 0000206b: POP 0000206c: POP 0000206d: JUMP 0000206e: JUMPDEST 0000206f: PUSH1 0x00 00002071: DUP2 00002072: SWAP1 00002073: POP 00002074: SWAP2 00002075: SWAP1 00002076: POP 00002077: JUMP 00002078: JUMPDEST 00002079: PUSH2 0x2081 0000207c: DUP2 0000207d: PUSH2 0x206e 00002080: JUMP 00002081: JUMPDEST 00002082: DUP2 00002083: EQ 00002084: PUSH2 0x208c 00002087: JUMPI 00002088: PUSH1 0x00 0000208a: DUP1 0000208b: REVERT 0000208c: JUMPDEST 0000208d: POP 0000208e: JUMP 0000208f: JUMPDEST 00002090: PUSH1 0x00 00002092: DUP2 00002093: CALLDATALOAD 00002094: SWAP1 00002095: POP 00002096: PUSH2 0x209e 00002099: DUP2 0000209a: PUSH2 0x2078 0000209d: JUMP 0000209e: JUMPDEST 0000209f: SWAP3 000020a0: SWAP2 000020a1: POP 000020a2: POP 000020a3: JUMP 000020a4: JUMPDEST 000020a5: PUSH1 0x00 000020a7: DUP1 000020a8: PUSH1 0x40 000020aa: DUP4 000020ab: DUP6 000020ac: SUB 000020ad: SLT 000020ae: ISZERO 000020af: PUSH2 0x20bb 000020b2: JUMPI 000020b3: PUSH2 0x20ba 000020b6: PUSH2 0x200b 000020b9: JUMP 000020ba: JUMPDEST 000020bb: JUMPDEST 000020bc: PUSH1 0x00 000020be: PUSH2 0x20c9 000020c1: DUP6 000020c2: DUP3 000020c3: DUP7 000020c4: ADD 000020c5: PUSH2 0x2059 000020c8: JUMP 000020c9: JUMPDEST 000020ca: SWAP3 000020cb: POP 000020cc: POP 000020cd: PUSH1 0x20 000020cf: PUSH2 0x20da 000020d2: DUP6 000020d3: DUP3 000020d4: DUP7 000020d5: ADD 000020d6: PUSH2 0x208f 000020d9: JUMP 000020da: JUMPDEST 000020db: SWAP2 000020dc: POP 000020dd: POP 000020de: SWAP3 000020df: POP 000020e0: SWAP3 000020e1: SWAP1 000020e2: POP 000020e3: JUMP 000020e4: JUMPDEST 000020e5: PUSH1 0x00 000020e7: DUP2 000020e8: ISZERO 000020e9: ISZERO 000020ea: SWAP1 000020eb: POP 000020ec: SWAP2 000020ed: SWAP1 000020ee: POP 000020ef: JUMP 000020f0: JUMPDEST 000020f1: PUSH2 0x20f9 000020f4: DUP2 000020f5: PUSH2 0x20e4 000020f8: JUMP 000020f9: JUMPDEST 000020fa: DUP3 000020fb: MSTORE 000020fc: POP 000020fd: POP 000020fe: JUMP 000020ff: JUMPDEST 00002100: PUSH1 0x00 00002102: PUSH1 0x20 00002104: DUP3 00002105: ADD 00002106: SWAP1 00002107: POP 00002108: PUSH2 0x2114 0000210b: PUSH1 0x00 0000210d: DUP4 0000210e: ADD 0000210f: DUP5 00002110: PUSH2 0x20f0 00002113: JUMP 00002114: JUMPDEST 00002115: SWAP3 00002116: SWAP2 00002117: POP 00002118: POP 00002119: JUMP 0000211a: JUMPDEST 0000211b: PUSH2 0x2123 0000211e: DUP2 0000211f: PUSH2 0x206e 00002122: JUMP 00002123: JUMPDEST 00002124: DUP3 00002125: MSTORE 00002126: POP 00002127: POP 00002128: JUMP 00002129: JUMPDEST 0000212a: PUSH1 0x00 0000212c: PUSH1 0x20 0000212e: DUP3 0000212f: ADD 00002130: SWAP1 00002131: POP 00002132: PUSH2 0x213e 00002135: PUSH1 0x00 00002137: DUP4 00002138: ADD 00002139: DUP5 0000213a: PUSH2 0x211a 0000213d: JUMP 0000213e: JUMPDEST 0000213f: SWAP3 00002140: SWAP2 00002141: POP 00002142: POP 00002143: JUMP 00002144: JUMPDEST 00002145: PUSH1 0x00 00002147: PUSH1 0x20 00002149: DUP3 0000214a: DUP5 0000214b: SUB 0000214c: SLT 0000214d: ISZERO 0000214e: PUSH2 0x215a 00002151: JUMPI 00002152: PUSH2 0x2159 00002155: PUSH2 0x200b 00002158: JUMP 00002159: JUMPDEST 0000215a: JUMPDEST 0000215b: PUSH1 0x00 0000215d: PUSH2 0x2168 00002160: DUP5 00002161: DUP3 00002162: DUP6 00002163: ADD 00002164: PUSH2 0x2059 00002167: JUMP 00002168: JUMPDEST 00002169: SWAP2 0000216a: POP 0000216b: POP 0000216c: SWAP3 0000216d: SWAP2 0000216e: POP 0000216f: POP 00002170: JUMP 00002171: JUMPDEST 00002172: PUSH1 0x00 00002174: DUP1 00002175: PUSH1 0x00 00002177: PUSH1 0x60 00002179: DUP5 0000217a: DUP7 0000217b: SUB 0000217c: SLT 0000217d: ISZERO 0000217e: PUSH2 0x218a 00002181: JUMPI 00002182: PUSH2 0x2189 00002185: PUSH2 0x200b 00002188: JUMP 00002189: JUMPDEST 0000218a: JUMPDEST 0000218b: PUSH1 0x00 0000218d: PUSH2 0x2198 00002190: DUP7 00002191: DUP3 00002192: DUP8 00002193: ADD 00002194: PUSH2 0x2059 00002197: JUMP 00002198: JUMPDEST 00002199: SWAP4 0000219a: POP 0000219b: POP 0000219c: PUSH1 0x20 0000219e: PUSH2 0x21a9 000021a1: DUP7 000021a2: DUP3 000021a3: DUP8 000021a4: ADD 000021a5: PUSH2 0x2059 000021a8: JUMP 000021a9: JUMPDEST 000021aa: SWAP3 000021ab: POP 000021ac: POP 000021ad: PUSH1 0x40 000021af: PUSH2 0x21ba 000021b2: DUP7 000021b3: DUP3 000021b4: DUP8 000021b5: ADD 000021b6: PUSH2 0x208f 000021b9: JUMP 000021ba: JUMPDEST 000021bb: SWAP2 000021bc: POP 000021bd: POP 000021be: SWAP3 000021bf: POP 000021c0: SWAP3 000021c1: POP 000021c2: SWAP3 000021c3: JUMP 000021c4: JUMPDEST 000021c5: PUSH1 0x00 000021c7: PUSH1 0xff 000021c9: DUP3 000021ca: AND 000021cb: SWAP1 000021cc: POP 000021cd: SWAP2 000021ce: SWAP1 000021cf: POP 000021d0: JUMP 000021d1: JUMPDEST 000021d2: PUSH2 0x21da 000021d5: DUP2 000021d6: PUSH2 0x21c4 000021d9: JUMP 000021da: JUMPDEST 000021db: DUP3 000021dc: MSTORE 000021dd: POP 000021de: POP 000021df: JUMP 000021e0: JUMPDEST 000021e1: PUSH1 0x00 000021e3: PUSH1 0x20 000021e5: DUP3 000021e6: ADD 000021e7: SWAP1 000021e8: POP 000021e9: PUSH2 0x21f5 000021ec: PUSH1 0x00 000021ee: DUP4 000021ef: ADD 000021f0: DUP5 000021f1: PUSH2 0x21d1 000021f4: JUMP 000021f5: JUMPDEST 000021f6: SWAP3 000021f7: SWAP2 000021f8: POP 000021f9: POP 000021fa: JUMP 000021fb: JUMPDEST 000021fc: PUSH1 0x00 000021fe: PUSH2 0x2206 00002201: DUP3 00002202: PUSH2 0x2010 00002205: JUMP 00002206: JUMPDEST 00002207: SWAP1 00002208: POP 00002209: SWAP2 0000220a: SWAP1 0000220b: POP 0000220c: JUMP 0000220d: JUMPDEST 0000220e: PUSH2 0x2216 00002211: DUP2 00002212: PUSH2 0x21fb 00002215: JUMP 00002216: JUMPDEST 00002217: DUP2 00002218: EQ 00002219: PUSH2 0x2221 0000221c: JUMPI 0000221d: PUSH1 0x00 0000221f: DUP1 00002220: REVERT 00002221: JUMPDEST 00002222: POP 00002223: JUMP 00002224: JUMPDEST 00002225: PUSH1 0x00 00002227: DUP2 00002228: CALLDATALOAD 00002229: SWAP1 0000222a: POP 0000222b: PUSH2 0x2233 0000222e: DUP2 0000222f: PUSH2 0x220d 00002232: JUMP 00002233: JUMPDEST 00002234: SWAP3 00002235: SWAP2 00002236: POP 00002237: POP 00002238: JUMP 00002239: JUMPDEST 0000223a: PUSH1 0x00 0000223c: PUSH1 0x20 0000223e: DUP3 0000223f: DUP5 00002240: SUB 00002241: SLT 00002242: ISZERO 00002243: PUSH2 0x224f 00002246: JUMPI 00002247: PUSH2 0x224e 0000224a: PUSH2 0x200b 0000224d: JUMP 0000224e: JUMPDEST 0000224f: JUMPDEST 00002250: PUSH1 0x00 00002252: PUSH2 0x225d 00002255: DUP5 00002256: DUP3 00002257: DUP6 00002258: ADD 00002259: PUSH2 0x2224 0000225c: JUMP 0000225d: JUMPDEST 0000225e: SWAP2 0000225f: POP 00002260: POP 00002261: SWAP3 00002262: SWAP2 00002263: POP 00002264: POP 00002265: JUMP 00002266: JUMPDEST 00002267: PUSH2 0x226f 0000226a: DUP2 0000226b: PUSH2 0x2030 0000226e: JUMP 0000226f: JUMPDEST 00002270: DUP3 00002271: MSTORE 00002272: POP 00002273: POP 00002274: JUMP 00002275: JUMPDEST 00002276: PUSH1 0x00 00002278: PUSH1 0x20 0000227a: DUP3 0000227b: ADD 0000227c: SWAP1 0000227d: POP 0000227e: PUSH2 0x228a 00002281: PUSH1 0x00 00002283: DUP4 00002284: ADD 00002285: DUP5 00002286: PUSH2 0x2266 00002289: JUMP 0000228a: JUMPDEST 0000228b: SWAP3 0000228c: SWAP2 0000228d: POP 0000228e: POP 0000228f: JUMP 00002290: JUMPDEST 00002291: PUSH1 0x00 00002293: DUP1 00002294: PUSH1 0x40 00002296: DUP4 00002297: DUP6 00002298: SUB 00002299: SLT 0000229a: ISZERO 0000229b: PUSH2 0x22a7 0000229e: JUMPI 0000229f: PUSH2 0x22a6 000022a2: PUSH2 0x200b 000022a5: JUMP 000022a6: JUMPDEST 000022a7: JUMPDEST 000022a8: PUSH1 0x00 000022aa: PUSH2 0x22b5 000022ad: DUP6 000022ae: DUP3 000022af: DUP7 000022b0: ADD 000022b1: PUSH2 0x2059 000022b4: JUMP 000022b5: JUMPDEST 000022b6: SWAP3 000022b7: POP 000022b8: POP 000022b9: PUSH1 0x20 000022bb: PUSH2 0x22c6 000022be: DUP6 000022bf: DUP3 000022c0: DUP7 000022c1: ADD 000022c2: PUSH2 0x2059 000022c5: JUMP 000022c6: JUMPDEST 000022c7: SWAP2 000022c8: POP 000022c9: POP 000022ca: SWAP3 000022cb: POP 000022cc: SWAP3 000022cd: SWAP1 000022ce: POP 000022cf: JUMP 000022d0: JUMPDEST 000022d1: PUSH1 0x00 000022d3: PUSH1 0x60 000022d5: DUP3 000022d6: ADD 000022d7: SWAP1 000022d8: POP 000022d9: PUSH2 0x22e5 000022dc: PUSH1 0x00 000022de: DUP4 000022df: ADD 000022e0: DUP7 000022e1: PUSH2 0x2266 000022e4: JUMP 000022e5: JUMPDEST 000022e6: PUSH2 0x22f2 000022e9: PUSH1 0x20 000022eb: DUP4 000022ec: ADD 000022ed: DUP6 000022ee: PUSH2 0x211a 000022f1: JUMP 000022f2: JUMPDEST 000022f3: PUSH2 0x22ff 000022f6: PUSH1 0x40 000022f8: DUP4 000022f9: ADD 000022fa: DUP5 000022fb: PUSH2 0x211a 000022fe: JUMP 000022ff: JUMPDEST 00002300: SWAP5 00002301: SWAP4 00002302: POP 00002303: POP 00002304: POP 00002305: POP 00002306: JUMP 00002307: JUMPDEST 00002308: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002329: PUSH1 0x00 0000232b: MSTORE 0000232c: PUSH1 0x12 0000232e: PUSH1 0x04 00002330: MSTORE 00002331: PUSH1 0x24 00002333: PUSH1 0x00 00002335: REVERT 00002336: JUMPDEST 00002337: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002358: PUSH1 0x00 0000235a: MSTORE 0000235b: PUSH1 0x11 0000235d: PUSH1 0x04 0000235f: MSTORE 00002360: PUSH1 0x24 00002362: PUSH1 0x00 00002364: REVERT 00002365: JUMPDEST 00002366: PUSH1 0x00 00002368: PUSH2 0x2370 0000236b: DUP3 0000236c: PUSH2 0x206e 0000236f: JUMP 00002370: JUMPDEST 00002371: SWAP2 00002372: POP 00002373: PUSH2 0x237b 00002376: DUP4 00002377: PUSH2 0x206e 0000237a: JUMP 0000237b: JUMPDEST 0000237c: SWAP3 0000237d: POP 0000237e: DUP3 0000237f: PUSH2 0x238b 00002382: JUMPI 00002383: PUSH2 0x238a 00002386: PUSH2 0x2307 00002389: JUMP 0000238a: JUMPDEST 0000238b: JUMPDEST 0000238c: DUP3 0000238d: DUP3 0000238e: DIV 0000238f: SWAP1 00002390: POP 00002391: SWAP3 00002392: SWAP2 00002393: POP 00002394: POP 00002395: JUMP 00002396: JUMPDEST 00002397: PUSH1 0x00 00002399: PUSH1 0x40 0000239b: DUP3 0000239c: ADD 0000239d: SWAP1 0000239e: POP 0000239f: PUSH2 0x23ab 000023a2: PUSH1 0x00 000023a4: DUP4 000023a5: ADD 000023a6: DUP6 000023a7: PUSH2 0x2266 000023aa: JUMP 000023ab: JUMPDEST 000023ac: PUSH2 0x23b8 000023af: PUSH1 0x20 000023b1: DUP4 000023b2: ADD 000023b3: DUP5 000023b4: PUSH2 0x211a 000023b7: JUMP 000023b8: JUMPDEST 000023b9: SWAP4 000023ba: SWAP3 000023bb: POP 000023bc: POP 000023bd: POP 000023be: JUMP 000023bf: JUMPDEST 000023c0: PUSH1 0x00 000023c2: PUSH2 0x23ca 000023c5: DUP3 000023c6: PUSH2 0x206e 000023c9: JUMP 000023ca: JUMPDEST 000023cb: SWAP2 000023cc: POP 000023cd: PUSH2 0x23d5 000023d0: DUP4 000023d1: PUSH2 0x206e 000023d4: JUMP 000023d5: JUMPDEST 000023d6: SWAP3 000023d7: POP 000023d8: DUP3 000023d9: DUP3 000023da: ADD 000023db: SWAP1 000023dc: POP 000023dd: DUP1 000023de: DUP3 000023df: GT 000023e0: ISZERO 000023e1: PUSH2 0x23ed 000023e4: JUMPI 000023e5: PUSH2 0x23ec 000023e8: PUSH2 0x2336 000023eb: JUMP 000023ec: JUMPDEST 000023ed: JUMPDEST 000023ee: SWAP3 000023ef: SWAP2 000023f0: POP 000023f1: POP 000023f2: JUMP 000023f3: JUMPDEST 000023f4: PUSH32 0x616c726561647920636c6f736564000000000000000000000000000000000000 00002415: PUSH1 0x00 00002417: DUP3 00002418: ADD 00002419: MSTORE 0000241a: POP 0000241b: JUMP 0000241c: JUMPDEST 0000241d: PUSH1 0x00 0000241f: PUSH2 0x2429 00002422: PUSH1 0x0e 00002424: DUP4 00002425: PUSH2 0x1f64 00002428: JUMP 00002429: JUMPDEST 0000242a: SWAP2 0000242b: POP 0000242c: PUSH2 0x2434 0000242f: DUP3 00002430: PUSH2 0x23f3 00002433: JUMP 00002434: JUMPDEST 00002435: PUSH1 0x20 00002437: DUP3 00002438: ADD 00002439: SWAP1 0000243a: POP 0000243b: SWAP2 0000243c: SWAP1 0000243d: POP 0000243e: JUMP 0000243f: JUMPDEST 00002440: PUSH1 0x00 00002442: PUSH1 0x20 00002444: DUP3 00002445: ADD 00002446: SWAP1 00002447: POP 00002448: DUP2 00002449: DUP2 0000244a: SUB 0000244b: PUSH1 0x00 0000244d: DUP4 0000244e: ADD 0000244f: MSTORE 00002450: PUSH2 0x2458 00002453: DUP2 00002454: PUSH2 0x241c 00002457: JUMP 00002458: JUMPDEST 00002459: SWAP1 0000245a: POP 0000245b: SWAP2 0000245c: SWAP1 0000245d: POP 0000245e: JUMP 0000245f: JUMPDEST 00002460: PUSH1 0x00 00002462: DUP2 00002463: SWAP1 00002464: POP 00002465: SWAP3 00002466: SWAP2 00002467: POP 00002468: POP 00002469: JUMP 0000246a: JUMPDEST 0000246b: POP 0000246c: JUMP 0000246d: JUMPDEST 0000246e: PUSH1 0x00 00002470: PUSH2 0x247a 00002473: PUSH1 0x00 00002475: DUP4 00002476: PUSH2 0x245f 00002479: JUMP 0000247a: JUMPDEST 0000247b: SWAP2 0000247c: POP 0000247d: PUSH2 0x2485 00002480: DUP3 00002481: PUSH2 0x246a 00002484: JUMP 00002485: JUMPDEST 00002486: PUSH1 0x00 00002488: DUP3 00002489: ADD 0000248a: SWAP1 0000248b: POP 0000248c: SWAP2 0000248d: SWAP1 0000248e: POP 0000248f: JUMP 00002490: JUMPDEST 00002491: PUSH1 0x00 00002493: PUSH2 0x249b 00002496: DUP3 00002497: PUSH2 0x246d 0000249a: JUMP 0000249b: JUMPDEST 0000249c: SWAP2 0000249d: POP 0000249e: DUP2 0000249f: SWAP1 000024a0: POP 000024a1: SWAP2 000024a2: SWAP1 000024a3: POP 000024a4: JUMP 000024a5: JUMPDEST 000024a6: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000024c7: PUSH1 0x00 000024c9: MSTORE 000024ca: PUSH1 0x22 000024cc: PUSH1 0x04 000024ce: MSTORE 000024cf: PUSH1 0x24 000024d1: PUSH1 0x00 000024d3: REVERT 000024d4: JUMPDEST 000024d5: PUSH1 0x00 000024d7: PUSH1 0x02 000024d9: DUP3 000024da: DIV 000024db: SWAP1 000024dc: POP 000024dd: PUSH1 0x01 000024df: DUP3 000024e0: AND 000024e1: DUP1 000024e2: PUSH2 0x24ec 000024e5: JUMPI 000024e6: PUSH1 0x7f 000024e8: DUP3 000024e9: AND 000024ea: SWAP2 000024eb: POP 000024ec: JUMPDEST 000024ed: PUSH1 0x20 000024ef: DUP3 000024f0: LT 000024f1: DUP2 000024f2: SUB 000024f3: PUSH2 0x24ff 000024f6: JUMPI 000024f7: PUSH2 0x24fe 000024fa: PUSH2 0x24a5 000024fd: JUMP 000024fe: JUMPDEST 000024ff: JUMPDEST 00002500: POP 00002501: SWAP2 00002502: SWAP1 00002503: POP 00002504: JUMP 00002505: JUMPDEST 00002506: PUSH32 0x636c6f7365640000000000000000000000000000000000000000000000000000 00002527: PUSH1 0x00 00002529: DUP3 0000252a: ADD 0000252b: MSTORE 0000252c: POP 0000252d: JUMP 0000252e: JUMPDEST 0000252f: PUSH1 0x00 00002531: PUSH2 0x253b 00002534: PUSH1 0x06 00002536: DUP4 00002537: PUSH2 0x1f64 0000253a: JUMP 0000253b: JUMPDEST 0000253c: SWAP2 0000253d: POP 0000253e: PUSH2 0x2546 00002541: DUP3 00002542: PUSH2 0x2505 00002545: JUMP 00002546: JUMPDEST 00002547: PUSH1 0x20 00002549: DUP3 0000254a: ADD 0000254b: SWAP1 0000254c: POP 0000254d: SWAP2 0000254e: SWAP1 0000254f: POP 00002550: JUMP 00002551: JUMPDEST 00002552: PUSH1 0x00 00002554: PUSH1 0x20 00002556: DUP3 00002557: ADD 00002558: SWAP1 00002559: POP 0000255a: DUP2 0000255b: DUP2 0000255c: SUB 0000255d: PUSH1 0x00 0000255f: DUP4 00002560: ADD 00002561: MSTORE 00002562: PUSH2 0x256a 00002565: DUP2 00002566: PUSH2 0x252e 00002569: JUMP 0000256a: JUMPDEST 0000256b: SWAP1 0000256c: POP 0000256d: SWAP2 0000256e: SWAP1 0000256f: POP 00002570: JUMP 00002571: JUMPDEST 00002572: PUSH32 0x45524332303a207472616e7366657220616d6f756e7420657863656564732061 00002593: PUSH1 0x00 00002595: DUP3 00002596: ADD 00002597: MSTORE 00002598: PUSH32 0x6c6c6f77616e6365000000000000000000000000000000000000000000000000 000025b9: PUSH1 0x20 000025bb: DUP3 000025bc: ADD 000025bd: MSTORE 000025be: POP 000025bf: JUMP 000025c0: JUMPDEST 000025c1: PUSH1 0x00 000025c3: PUSH2 0x25cd 000025c6: PUSH1 0x28 000025c8: DUP4 000025c9: PUSH2 0x1f64 000025cc: JUMP 000025cd: JUMPDEST 000025ce: SWAP2 000025cf: POP 000025d0: PUSH2 0x25d8 000025d3: DUP3 000025d4: PUSH2 0x2571 000025d7: JUMP 000025d8: JUMPDEST 000025d9: PUSH1 0x40 000025db: DUP3 000025dc: ADD 000025dd: SWAP1 000025de: POP 000025df: SWAP2 000025e0: SWAP1 000025e1: POP 000025e2: JUMP 000025e3: JUMPDEST 000025e4: PUSH1 0x00 000025e6: PUSH1 0x20 000025e8: DUP3 000025e9: ADD 000025ea: SWAP1 000025eb: POP 000025ec: DUP2 000025ed: DUP2 000025ee: SUB 000025ef: PUSH1 0x00 000025f1: DUP4 000025f2: ADD 000025f3: MSTORE 000025f4: PUSH2 0x25fc 000025f7: DUP2 000025f8: PUSH2 0x25c0 000025fb: JUMP 000025fc: JUMPDEST 000025fd: SWAP1 000025fe: POP 000025ff: SWAP2 00002600: SWAP1 00002601: POP 00002602: JUMP 00002603: JUMPDEST 00002604: PUSH1 0x00 00002606: DUP2 00002607: SWAP1 00002608: POP 00002609: SWAP2 0000260a: SWAP1 0000260b: POP 0000260c: JUMP 0000260d: JUMPDEST 0000260e: PUSH1 0x00 00002610: PUSH2 0x2628 00002613: PUSH2 0x2623 00002616: PUSH2 0x261e 00002619: DUP5 0000261a: PUSH2 0x2010 0000261d: JUMP 0000261e: JUMPDEST 0000261f: PUSH2 0x2603 00002622: JUMP 00002623: JUMPDEST 00002624: PUSH2 0x2010 00002627: JUMP 00002628: JUMPDEST 00002629: SWAP1 0000262a: POP 0000262b: SWAP2 0000262c: SWAP1 0000262d: POP 0000262e: JUMP 0000262f: JUMPDEST 00002630: PUSH1 0x00 00002632: PUSH2 0x263a 00002635: DUP3 00002636: PUSH2 0x260d 00002639: JUMP 0000263a: JUMPDEST 0000263b: SWAP1 0000263c: POP 0000263d: SWAP2 0000263e: SWAP1 0000263f: POP 00002640: JUMP 00002641: JUMPDEST 00002642: PUSH1 0x00 00002644: PUSH2 0x264c 00002647: DUP3 00002648: PUSH2 0x262f 0000264b: JUMP 0000264c: JUMPDEST 0000264d: SWAP1 0000264e: POP 0000264f: SWAP2 00002650: SWAP1 00002651: POP 00002652: JUMP 00002653: JUMPDEST 00002654: PUSH2 0x265c 00002657: DUP2 00002658: PUSH2 0x2641 0000265b: JUMP 0000265c: JUMPDEST 0000265d: DUP3 0000265e: MSTORE 0000265f: POP 00002660: POP 00002661: JUMP 00002662: JUMPDEST 00002663: PUSH1 0x00 00002665: PUSH1 0x20 00002667: DUP3 00002668: ADD 00002669: SWAP1 0000266a: POP 0000266b: PUSH2 0x2677 0000266e: PUSH1 0x00 00002670: DUP4 00002671: ADD 00002672: DUP5 00002673: PUSH2 0x2653 00002676: JUMP 00002677: JUMPDEST 00002678: SWAP3 00002679: SWAP2 0000267a: POP 0000267b: POP 0000267c: JUMP 0000267d: JUMPDEST 0000267e: PUSH1 0x00 00002680: DUP2 00002681: MLOAD 00002682: SWAP1 00002683: POP 00002684: PUSH2 0x268c 00002687: DUP2 00002688: PUSH2 0x2078 0000268b: JUMP 0000268c: JUMPDEST 0000268d: SWAP3 0000268e: SWAP2 0000268f: POP 00002690: POP 00002691: JUMP 00002692: JUMPDEST 00002693: PUSH1 0x00 00002695: PUSH1 0x20 00002697: DUP3 00002698: DUP5 00002699: SUB 0000269a: SLT 0000269b: ISZERO 0000269c: PUSH2 0x26a8 0000269f: JUMPI 000026a0: PUSH2 0x26a7 000026a3: PUSH2 0x200b 000026a6: JUMP 000026a7: JUMPDEST 000026a8: JUMPDEST 000026a9: PUSH1 0x00 000026ab: PUSH2 0x26b6 000026ae: DUP5 000026af: DUP3 000026b0: DUP6 000026b1: ADD 000026b2: PUSH2 0x267d 000026b5: JUMP 000026b6: JUMPDEST 000026b7: SWAP2 000026b8: POP 000026b9: POP 000026ba: SWAP3 000026bb: SWAP2 000026bc: POP 000026bd: POP 000026be: JUMP 000026bf: JUMPDEST 000026c0: PUSH32 0x63616e6e6f742074616b65207965740000000000000000000000000000000000 000026e1: PUSH1 0x00 000026e3: DUP3 000026e4: ADD 000026e5: MSTORE 000026e6: POP 000026e7: JUMP 000026e8: JUMPDEST 000026e9: PUSH1 0x00 000026eb: PUSH2 0x26f5 000026ee: PUSH1 0x0f 000026f0: DUP4 000026f1: PUSH2 0x1f64 000026f4: JUMP 000026f5: JUMPDEST 000026f6: SWAP2 000026f7: POP 000026f8: PUSH2 0x2700 000026fb: DUP3 000026fc: PUSH2 0x26bf 000026ff: JUMP 00002700: JUMPDEST 00002701: PUSH1 0x20 00002703: DUP3 00002704: ADD 00002705: SWAP1 00002706: POP 00002707: SWAP2 00002708: SWAP1 00002709: POP 0000270a: JUMP 0000270b: JUMPDEST 0000270c: PUSH1 0x00 0000270e: PUSH1 0x20 00002710: DUP3 00002711: ADD 00002712: SWAP1 00002713: POP 00002714: DUP2 00002715: DUP2 00002716: SUB 00002717: PUSH1 0x00 00002719: DUP4 0000271a: ADD 0000271b: MSTORE 0000271c: PUSH2 0x2724 0000271f: DUP2 00002720: PUSH2 0x26e8 00002723: JUMP 00002724: JUMPDEST 00002725: SWAP1 00002726: POP 00002727: SWAP2 00002728: SWAP1 00002729: POP 0000272a: JUMP 0000272b: JUMPDEST 0000272c: PUSH32 0x77697468647261774469766964656e642064697361626c65642e205573652074 0000274d: PUSH1 0x00 0000274f: DUP3 00002750: ADD 00002751: MSTORE 00002752: PUSH32 0x68652027636c61696d272066756e6374696f6e206f6e20746865206d61696e20 00002773: PUSH1 0x20 00002775: DUP3 00002776: ADD 00002777: MSTORE 00002778: PUSH32 0x746f6b656e20636f6e74726163742e0000000000000000000000000000000000 00002799: PUSH1 0x40 0000279b: DUP3 0000279c: ADD 0000279d: MSTORE 0000279e: POP 0000279f: JUMP 000027a0: JUMPDEST 000027a1: PUSH1 0x00 000027a3: PUSH2 0x27ad 000027a6: PUSH1 0x4f 000027a8: DUP4 000027a9: PUSH2 0x1f64 000027ac: JUMP 000027ad: JUMPDEST 000027ae: SWAP2 000027af: POP 000027b0: PUSH2 0x27b8 000027b3: DUP3 000027b4: PUSH2 0x272b 000027b7: JUMP 000027b8: JUMPDEST 000027b9: PUSH1 0x60 000027bb: DUP3 000027bc: ADD 000027bd: SWAP1 000027be: POP 000027bf: SWAP2 000027c0: SWAP1 000027c1: POP 000027c2: JUMP 000027c3: JUMPDEST 000027c4: PUSH1 0x00 000027c6: PUSH1 0x20 000027c8: DUP3 000027c9: ADD 000027ca: SWAP1 000027cb: POP 000027cc: DUP2 000027cd: DUP2 000027ce: SUB 000027cf: PUSH1 0x00 000027d1: DUP4 000027d2: ADD 000027d3: MSTORE 000027d4: PUSH2 0x27dc 000027d7: DUP2 000027d8: PUSH2 0x27a0 000027db: JUMP 000027dc: JUMPDEST 000027dd: SWAP1 000027de: POP 000027df: SWAP2 000027e0: SWAP1 000027e1: POP 000027e2: JUMP 000027e3: JUMPDEST 000027e4: PUSH32 0x45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77 00002805: PUSH1 0x00 00002807: DUP3 00002808: ADD 00002809: MSTORE 0000280a: PUSH32 0x207a65726f000000000000000000000000000000000000000000000000000000 0000282b: PUSH1 0x20 0000282d: DUP3 0000282e: ADD 0000282f: MSTORE 00002830: POP 00002831: JUMP 00002832: JUMPDEST 00002833: PUSH1 0x00 00002835: PUSH2 0x283f 00002838: PUSH1 0x25 0000283a: DUP4 0000283b: PUSH2 0x1f64 0000283e: JUMP 0000283f: JUMPDEST 00002840: SWAP2 00002841: POP 00002842: PUSH2 0x284a 00002845: DUP3 00002846: PUSH2 0x27e3 00002849: JUMP 0000284a: JUMPDEST 0000284b: PUSH1 0x40 0000284d: DUP3 0000284e: ADD 0000284f: SWAP1 00002850: POP 00002851: SWAP2 00002852: SWAP1 00002853: POP 00002854: JUMP 00002855: JUMPDEST 00002856: PUSH1 0x00 00002858: PUSH1 0x20 0000285a: DUP3 0000285b: ADD 0000285c: SWAP1 0000285d: POP 0000285e: DUP2 0000285f: DUP2 00002860: SUB 00002861: PUSH1 0x00 00002863: DUP4 00002864: ADD 00002865: MSTORE 00002866: PUSH2 0x286e 00002869: DUP2 0000286a: PUSH2 0x2832 0000286d: JUMP 0000286e: JUMPDEST 0000286f: SWAP1 00002870: POP 00002871: SWAP2 00002872: SWAP1 00002873: POP 00002874: JUMP 00002875: JUMPDEST 00002876: PUSH1 0x00 00002878: PUSH2 0x2880 0000287b: DUP3 0000287c: PUSH2 0x206e 0000287f: JUMP 00002880: JUMPDEST 00002881: SWAP2 00002882: POP 00002883: PUSH2 0x288b 00002886: DUP4 00002887: PUSH2 0x206e 0000288a: JUMP 0000288b: JUMPDEST 0000288c: SWAP3 0000288d: POP 0000288e: DUP3 0000288f: DUP3 00002890: MUL 00002891: PUSH2 0x2899 00002894: DUP2 00002895: PUSH2 0x206e 00002898: JUMP 00002899: JUMPDEST 0000289a: SWAP2 0000289b: POP 0000289c: DUP3 0000289d: DUP3 0000289e: DIV 0000289f: DUP5 000028a0: EQ 000028a1: DUP4 000028a2: ISZERO 000028a3: OR 000028a4: PUSH2 0x28b0 000028a7: JUMPI 000028a8: PUSH2 0x28af 000028ab: PUSH2 0x2336 000028ae: JUMP 000028af: JUMPDEST 000028b0: JUMPDEST 000028b1: POP 000028b2: SWAP3 000028b3: SWAP2 000028b4: POP 000028b5: POP 000028b6: JUMP 000028b7: JUMPDEST 000028b8: PUSH32 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f 000028d9: PUSH1 0x00 000028db: DUP3 000028dc: ADD 000028dd: MSTORE 000028de: PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 000028ff: PUSH1 0x20 00002901: DUP3 00002902: ADD 00002903: MSTORE 00002904: POP 00002905: JUMP 00002906: JUMPDEST 00002907: PUSH1 0x00 00002909: PUSH2 0x2913 0000290c: PUSH1 0x21 0000290e: DUP4 0000290f: PUSH2 0x1f64 00002912: JUMP 00002913: JUMPDEST 00002914: SWAP2 00002915: POP 00002916: PUSH2 0x291e 00002919: DUP3 0000291a: PUSH2 0x28b7 0000291d: JUMP 0000291e: JUMPDEST 0000291f: PUSH1 0x40 00002921: DUP3 00002922: ADD 00002923: SWAP1 00002924: POP 00002925: SWAP2 00002926: SWAP1 00002927: POP 00002928: JUMP 00002929: JUMPDEST 0000292a: PUSH1 0x00 0000292c: PUSH1 0x20 0000292e: DUP3 0000292f: ADD 00002930: SWAP1 00002931: POP 00002932: DUP2 00002933: DUP2 00002934: SUB 00002935: PUSH1 0x00 00002937: DUP4 00002938: ADD 00002939: MSTORE 0000293a: PUSH2 0x2942 0000293d: DUP2 0000293e: PUSH2 0x2906 00002941: JUMP 00002942: JUMPDEST 00002943: SWAP1 00002944: POP 00002945: SWAP2 00002946: SWAP1 00002947: POP 00002948: JUMP 00002949: JUMPDEST 0000294a: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 0000296b: PUSH1 0x00 0000296d: DUP3 0000296e: ADD 0000296f: MSTORE 00002970: POP 00002971: JUMP 00002972: JUMPDEST 00002973: PUSH1 0x00 00002975: PUSH2 0x297f 00002978: PUSH1 0x1b 0000297a: DUP4 0000297b: PUSH2 0x1f64 0000297e: JUMP 0000297f: JUMPDEST 00002980: SWAP2 00002981: POP 00002982: PUSH2 0x298a 00002985: DUP3 00002986: PUSH2 0x2949 00002989: JUMP 0000298a: JUMPDEST 0000298b: PUSH1 0x20 0000298d: DUP3 0000298e: ADD 0000298f: SWAP1 00002990: POP 00002991: SWAP2 00002992: SWAP1 00002993: POP 00002994: JUMP 00002995: JUMPDEST 00002996: PUSH1 0x00 00002998: PUSH1 0x20 0000299a: DUP3 0000299b: ADD 0000299c: SWAP1 0000299d: POP 0000299e: DUP2 0000299f: DUP2 000029a0: SUB 000029a1: PUSH1 0x00 000029a3: DUP4 000029a4: ADD 000029a5: MSTORE 000029a6: PUSH2 0x29ae 000029a9: DUP2 000029aa: PUSH2 0x2972 000029ad: JUMP 000029ae: JUMPDEST 000029af: SWAP1 000029b0: POP 000029b1: SWAP2 000029b2: SWAP1 000029b3: POP 000029b4: JUMP 000029b5: JUMPDEST 000029b6: PUSH32 0x45524332303a20617070726f76652066726f6d20746865207a65726f20616464 000029d7: PUSH1 0x00 000029d9: DUP3 000029da: ADD 000029db: MSTORE 000029dc: PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 000029fd: PUSH1 0x20 000029ff: DUP3 00002a00: ADD 00002a01: MSTORE 00002a02: POP 00002a03: JUMP 00002a04: JUMPDEST 00002a05: PUSH1 0x00 00002a07: PUSH2 0x2a11 00002a0a: PUSH1 0x24 00002a0c: DUP4 00002a0d: PUSH2 0x1f64 00002a10: JUMP 00002a11: JUMPDEST 00002a12: SWAP2 00002a13: POP 00002a14: PUSH2 0x2a1c 00002a17: DUP3 00002a18: PUSH2 0x29b5 00002a1b: JUMP 00002a1c: JUMPDEST 00002a1d: PUSH1 0x40 00002a1f: DUP3 00002a20: ADD 00002a21: SWAP1 00002a22: POP 00002a23: SWAP2 00002a24: SWAP1 00002a25: POP 00002a26: JUMP 00002a27: JUMPDEST 00002a28: PUSH1 0x00 00002a2a: PUSH1 0x20 00002a2c: DUP3 00002a2d: ADD 00002a2e: SWAP1 00002a2f: POP 00002a30: DUP2 00002a31: DUP2 00002a32: SUB 00002a33: PUSH1 0x00 00002a35: DUP4 00002a36: ADD 00002a37: MSTORE 00002a38: PUSH2 0x2a40 00002a3b: DUP2 00002a3c: PUSH2 0x2a04 00002a3f: JUMP 00002a40: JUMPDEST 00002a41: SWAP1 00002a42: POP 00002a43: SWAP2 00002a44: SWAP1 00002a45: POP 00002a46: JUMP 00002a47: JUMPDEST 00002a48: PUSH32 0x45524332303a20617070726f766520746f20746865207a65726f206164647265 00002a69: PUSH1 0x00 00002a6b: DUP3 00002a6c: ADD 00002a6d: MSTORE 00002a6e: PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 00002a8f: PUSH1 0x20 00002a91: DUP3 00002a92: ADD 00002a93: MSTORE 00002a94: POP 00002a95: JUMP 00002a96: JUMPDEST 00002a97: PUSH1 0x00 00002a99: PUSH2 0x2aa3 00002a9c: PUSH1 0x22 00002a9e: DUP4 00002a9f: PUSH2 0x1f64 00002aa2: JUMP 00002aa3: JUMPDEST 00002aa4: SWAP2 00002aa5: POP 00002aa6: PUSH2 0x2aae 00002aa9: DUP3 00002aaa: PUSH2 0x2a47 00002aad: JUMP 00002aae: JUMPDEST 00002aaf: PUSH1 0x40 00002ab1: DUP3 00002ab2: ADD 00002ab3: SWAP1 00002ab4: POP 00002ab5: SWAP2 00002ab6: SWAP1 00002ab7: POP 00002ab8: JUMP 00002ab9: JUMPDEST 00002aba: PUSH1 0x00 00002abc: PUSH1 0x20 00002abe: DUP3 00002abf: ADD 00002ac0: SWAP1 00002ac1: POP 00002ac2: DUP2 00002ac3: DUP2 00002ac4: SUB 00002ac5: PUSH1 0x00 00002ac7: DUP4 00002ac8: ADD 00002ac9: MSTORE 00002aca: PUSH2 0x2ad2 00002acd: DUP2 00002ace: PUSH2 0x2a96 00002ad1: JUMP 00002ad2: JUMPDEST 00002ad3: SWAP1 00002ad4: POP 00002ad5: SWAP2 00002ad6: SWAP1 00002ad7: POP 00002ad8: JUMP 00002ad9: JUMPDEST 00002ada: PUSH1 0x00 00002adc: PUSH1 0x40 00002ade: DUP3 00002adf: ADD 00002ae0: SWAP1 00002ae1: POP 00002ae2: PUSH2 0x2aee 00002ae5: PUSH1 0x00 00002ae7: DUP4 00002ae8: ADD 00002ae9: DUP6 00002aea: PUSH2 0x2653 00002aed: JUMP 00002aee: JUMPDEST 00002aef: PUSH2 0x2afb 00002af2: PUSH1 0x20 00002af4: DUP4 00002af5: ADD 00002af6: DUP5 00002af7: PUSH2 0x211a 00002afa: JUMP 00002afb: JUMPDEST 00002afc: SWAP4 00002afd: SWAP3 00002afe: POP 00002aff: POP 00002b00: POP 00002b01: JUMP 00002b02: JUMPDEST 00002b03: PUSH32 0x4e6f207472616e736665727320616c6c6f776564000000000000000000000000 00002b24: PUSH1 0x00 00002b26: DUP3 00002b27: ADD 00002b28: MSTORE 00002b29: POP 00002b2a: JUMP 00002b2b: JUMPDEST 00002b2c: PUSH1 0x00 00002b2e: PUSH2 0x2b38 00002b31: PUSH1 0x14 00002b33: DUP4 00002b34: PUSH2 0x1f64 00002b37: JUMP 00002b38: JUMPDEST 00002b39: SWAP2 00002b3a: POP 00002b3b: PUSH2 0x2b43 00002b3e: DUP3 00002b3f: PUSH2 0x2b02 00002b42: JUMP 00002b43: JUMPDEST 00002b44: PUSH1 0x20 00002b46: DUP3 00002b47: ADD 00002b48: SWAP1 00002b49: POP 00002b4a: SWAP2 00002b4b: SWAP1 00002b4c: POP 00002b4d: JUMP 00002b4e: JUMPDEST 00002b4f: PUSH1 0x00 00002b51: PUSH1 0x20 00002b53: DUP3 00002b54: ADD 00002b55: SWAP1 00002b56: POP 00002b57: DUP2 00002b58: DUP2 00002b59: SUB 00002b5a: PUSH1 0x00 00002b5c: DUP4 00002b5d: ADD 00002b5e: MSTORE 00002b5f: PUSH2 0x2b67 00002b62: DUP2 00002b63: PUSH2 0x2b2b 00002b66: JUMP 00002b67: JUMPDEST 00002b68: SWAP1 00002b69: POP 00002b6a: SWAP2 00002b6b: SWAP1 00002b6c: POP 00002b6d: JUMP 00002b6e: JUMPDEST 00002b6f: PUSH1 0x00 00002b71: DUP2 00002b72: SWAP1 00002b73: POP 00002b74: SWAP2 00002b75: SWAP1 00002b76: POP 00002b77: JUMP 00002b78: JUMPDEST 00002b79: PUSH1 0x00 00002b7b: PUSH2 0x2b83 00002b7e: DUP3 00002b7f: PUSH2 0x2b6e 00002b82: JUMP 00002b83: JUMPDEST 00002b84: SWAP2 00002b85: POP 00002b86: PUSH2 0x2b8e 00002b89: DUP4 00002b8a: PUSH2 0x2b6e 00002b8d: JUMP 00002b8e: JUMPDEST 00002b8f: SWAP3 00002b90: POP 00002b91: DUP3 00002b92: DUP3 00002b93: ADD 00002b94: SWAP1 00002b95: POP 00002b96: DUP3 00002b97: DUP2 00002b98: SLT 00002b99: ISZERO 00002b9a: PUSH1 0x00 00002b9c: DUP4 00002b9d: SLT 00002b9e: AND 00002b9f: DUP4 00002ba0: DUP3 00002ba1: SLT 00002ba2: PUSH1 0x00 00002ba4: DUP5 00002ba5: SLT 00002ba6: ISZERO 00002ba7: AND 00002ba8: OR 00002ba9: ISZERO 00002baa: PUSH2 0x2bb6 00002bad: JUMPI 00002bae: PUSH2 0x2bb5 00002bb1: PUSH2 0x2336 00002bb4: JUMP 00002bb5: JUMPDEST 00002bb6: JUMPDEST 00002bb7: SWAP3 00002bb8: SWAP2 00002bb9: POP 00002bba: POP 00002bbb: JUMP 00002bbc: JUMPDEST 00002bbd: PUSH1 0x00 00002bbf: PUSH2 0x2bc7 00002bc2: DUP3 00002bc3: PUSH2 0x206e 00002bc6: JUMP 00002bc7: JUMPDEST 00002bc8: SWAP2 00002bc9: POP 00002bca: PUSH2 0x2bd2 00002bcd: DUP4 00002bce: PUSH2 0x206e 00002bd1: JUMP 00002bd2: JUMPDEST 00002bd3: SWAP3 00002bd4: POP 00002bd5: DUP3 00002bd6: DUP3 00002bd7: SUB 00002bd8: SWAP1 00002bd9: POP 00002bda: DUP2 00002bdb: DUP2 00002bdc: GT 00002bdd: ISZERO 00002bde: PUSH2 0x2bea 00002be1: JUMPI 00002be2: PUSH2 0x2be9 00002be5: PUSH2 0x2336 00002be8: JUMP 00002be9: JUMPDEST 00002bea: JUMPDEST 00002beb: SWAP3 00002bec: SWAP2 00002bed: POP 00002bee: POP 00002bef: JUMP 00002bf0: JUMPDEST 00002bf1: PUSH32 0x45524332303a206d696e7420746f20746865207a65726f206164647265737300 00002c12: PUSH1 0x00 00002c14: DUP3 00002c15: ADD 00002c16: MSTORE 00002c17: POP 00002c18: JUMP 00002c19: JUMPDEST 00002c1a: PUSH1 0x00 00002c1c: PUSH2 0x2c26 00002c1f: PUSH1 0x1f 00002c21: DUP4 00002c22: PUSH2 0x1f64 00002c25: JUMP 00002c26: JUMPDEST 00002c27: SWAP2 00002c28: POP 00002c29: PUSH2 0x2c31 00002c2c: DUP3 00002c2d: PUSH2 0x2bf0 00002c30: JUMP 00002c31: JUMPDEST 00002c32: PUSH1 0x20 00002c34: DUP3 00002c35: ADD 00002c36: SWAP1 00002c37: POP 00002c38: SWAP2 00002c39: SWAP1 00002c3a: POP 00002c3b: JUMP 00002c3c: JUMPDEST 00002c3d: PUSH1 0x00 00002c3f: PUSH1 0x20 00002c41: DUP3 00002c42: ADD 00002c43: SWAP1 00002c44: POP 00002c45: DUP2 00002c46: DUP2 00002c47: SUB 00002c48: PUSH1 0x00 00002c4a: DUP4 00002c4b: ADD 00002c4c: MSTORE 00002c4d: PUSH2 0x2c55 00002c50: DUP2 00002c51: PUSH2 0x2c19 00002c54: JUMP 00002c55: JUMPDEST 00002c56: SWAP1 00002c57: POP 00002c58: SWAP2 00002c59: SWAP1 00002c5a: POP 00002c5b: JUMP 00002c5c: JUMPDEST 00002c5d: PUSH1 0x00 00002c5f: PUSH2 0x2c67 00002c62: DUP3 00002c63: PUSH2 0x2b6e 00002c66: JUMP 00002c67: JUMPDEST 00002c68: SWAP2 00002c69: POP 00002c6a: PUSH2 0x2c72 00002c6d: DUP4 00002c6e: PUSH2 0x2b6e 00002c71: JUMP 00002c72: JUMPDEST 00002c73: SWAP3 00002c74: POP 00002c75: DUP3 00002c76: DUP3 00002c77: SUB 00002c78: SWAP1 00002c79: POP 00002c7a: DUP2 00002c7b: DUP2 00002c7c: SLT 00002c7d: PUSH1 0x00 00002c7f: DUP5 00002c80: SLT 00002c81: AND 00002c82: DUP3 00002c83: DUP3 00002c84: SGT 00002c85: PUSH1 0x00 00002c87: DUP6 00002c88: SLT 00002c89: ISZERO 00002c8a: AND 00002c8b: OR 00002c8c: ISZERO 00002c8d: PUSH2 0x2c99 00002c90: JUMPI 00002c91: PUSH2 0x2c98 00002c94: PUSH2 0x2336 00002c97: JUMP 00002c98: JUMPDEST 00002c99: JUMPDEST 00002c9a: SWAP3 00002c9b: SWAP2 00002c9c: POP 00002c9d: POP 00002c9e: JUMP 00002c9f: JUMPDEST 00002ca0: PUSH32 0x45524332303a206275726e2066726f6d20746865207a65726f20616464726573 00002cc1: PUSH1 0x00 00002cc3: DUP3 00002cc4: ADD 00002cc5: MSTORE 00002cc6: PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 00002ce7: PUSH1 0x20 00002ce9: DUP3 00002cea: ADD 00002ceb: MSTORE 00002cec: POP 00002ced: JUMP 00002cee: JUMPDEST 00002cef: PUSH1 0x00 00002cf1: PUSH2 0x2cfb 00002cf4: PUSH1 0x21 00002cf6: DUP4 00002cf7: PUSH2 0x1f64 00002cfa: JUMP 00002cfb: JUMPDEST 00002cfc: SWAP2 00002cfd: POP 00002cfe: PUSH2 0x2d06 00002d01: DUP3 00002d02: PUSH2 0x2c9f 00002d05: JUMP 00002d06: JUMPDEST 00002d07: PUSH1 0x40 00002d09: DUP3 00002d0a: ADD 00002d0b: SWAP1 00002d0c: POP 00002d0d: SWAP2 00002d0e: SWAP1 00002d0f: POP 00002d10: JUMP 00002d11: JUMPDEST 00002d12: PUSH1 0x00 00002d14: PUSH1 0x20 00002d16: DUP3 00002d17: ADD 00002d18: SWAP1 00002d19: POP 00002d1a: DUP2 00002d1b: DUP2 00002d1c: SUB 00002d1d: PUSH1 0x00 00002d1f: DUP4 00002d20: ADD 00002d21: MSTORE 00002d22: PUSH2 0x2d2a 00002d25: DUP2 00002d26: PUSH2 0x2cee 00002d29: JUMP 00002d2a: JUMPDEST 00002d2b: SWAP1 00002d2c: POP 00002d2d: SWAP2 00002d2e: SWAP1 00002d2f: POP 00002d30: JUMP 00002d31: JUMPDEST 00002d32: PUSH32 0x45524332303a206275726e20616d6f756e7420657863656564732062616c616e 00002d53: PUSH1 0x00 00002d55: DUP3 00002d56: ADD 00002d57: MSTORE 00002d58: PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 00002d79: PUSH1 0x20 00002d7b: DUP3 00002d7c: ADD 00002d7d: MSTORE 00002d7e: POP 00002d7f: JUMP 00002d80: JUMPDEST 00002d81: PUSH1 0x00 00002d83: PUSH2 0x2d8d 00002d86: PUSH1 0x22 00002d88: DUP4 00002d89: PUSH2 0x1f64 00002d8c: JUMP 00002d8d: JUMPDEST 00002d8e: SWAP2 00002d8f: POP 00002d90: PUSH2 0x2d98 00002d93: DUP3 00002d94: PUSH2 0x2d31 00002d97: JUMP 00002d98: JUMPDEST 00002d99: PUSH1 0x40 00002d9b: DUP3 00002d9c: ADD 00002d9d: SWAP1 00002d9e: POP 00002d9f: SWAP2 00002da0: SWAP1 00002da1: POP 00002da2: JUMP 00002da3: JUMPDEST 00002da4: PUSH1 0x00 00002da6: PUSH1 0x20 00002da8: DUP3 00002da9: ADD 00002daa: SWAP1 00002dab: POP 00002dac: DUP2 00002dad: DUP2 00002dae: SUB 00002daf: PUSH1 0x00 00002db1: DUP4 00002db2: ADD 00002db3: MSTORE 00002db4: PUSH2 0x2dbc 00002db7: DUP2 00002db8: PUSH2 0x2d80 00002dbb: JUMP 00002dbc: JUMPDEST 00002dbd: SWAP1 00002dbe: POP 00002dbf: SWAP2 00002dc0: SWAP1 00002dc1: POP 00002dc2: JUMP 00002dc3: INVALID 00002dc4: LOG2 00002dc5: PUSH5 0x6970667358 00002dcb: UNKNOWN(0x22) 00002dcc: SLT 00002dcd: KECCAK256 00002dce: UNKNOWN(0xCA) 00002dcf: UNKNOWN(0xFB) 00002dd0: DUP1 00002dd1: DUP8 00002dd2: TLOAD 00002dd3: PUSH9 0x127869ed67d8696900 00002ddd: KECCAK256 00002dde: UNKNOWN(0xE0) 00002ddf: PUSH1 0x2b 00002de1: CALLDATALOAD 00002de2: DIFFICULTY 00002de3: UNKNOWN(0xE3) 00002de4: POP 00002de5: UNKNOWN(0xE6) 00002de6: UNKNOWN(0xB5) 00002de7: UNKNOWN(0xB0) 00002de8: PUSH31
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xe1174983fd08de6198db21c467a77b53a7c5277580d00df3ee86f4678ab664d6
call_targets:
0x93314ee69bf8f943504654f9a8eced0071526439
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xe1174983fd08de6198db21c467a77b53a7c5277580d00df3ee86f4678ab664d6",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x93314ee69bf8f943504654f9a8eced0071526439"
],
"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": "0xaafd847a",
"selector": "0xaafd847a",
"calldata_variants": [
"0xaafd847a",
"0xaafd847a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9e7cc13",
"selector": "0xc9e7cc13",
"calldata_variants": [
"0xc9e7cc13",
"0xc9e7cc130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfbcbc0f1",
"selector": "0xfbcbc0f1",
"calldata_variants": [
"0xfbcbc0f1",
"0xfbcbc0f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa457c2d7",
"selector": "0xa457c2d7",
"calldata_variants": [
"0xa457c2d7",
"0xa457c2d70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa8b9d240",
"selector": "0xa8b9d240",
"calldata_variants": [
"0xa8b9d240",
"0xa8b9d2400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x85a6b3ae",
"selector": "0x85a6b3ae",
"calldata_variants": [
"0x85a6b3ae",
"0x85a6b3ae0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2238,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5972,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xe1174983fd08de6198db21c467a77b53a7c5277580d00df3ee86f4678ab664d6
call_targets:
0x93314ee69bf8f943504654f9a8eced0071526439
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xe1174983fd08de6198db21c467a77b53a7c5277580d00df3ee86f4678ab664d6",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x93314ee69bf8f943504654f9a8eced0071526439"
],
"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": "0xaafd847a",
"selector": "0xaafd847a",
"calldata_variants": [
"0xaafd847a",
"0xaafd847a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc9e7cc13",
"selector": "0xc9e7cc13",
"calldata_variants": [
"0xc9e7cc13",
"0xc9e7cc130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfbcbc0f1",
"selector": "0xfbcbc0f1",
"calldata_variants": [
"0xfbcbc0f1",
"0xfbcbc0f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa457c2d7",
"selector": "0xa457c2d7",
"calldata_variants": [
"0xa457c2d7",
"0xa457c2d70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa8b9d240",
"selector": "0xa8b9d240",
"calldata_variants": [
"0xa8b9d240",
"0xa8b9d2400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9059cbb",
"selector": "0xa9059cbb",
"calldata_variants": [
"0xa9059cbb",
"0xa9059cbb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x85a6b3ae",
"selector": "0x85a6b3ae",
"calldata_variants": [
"0x85a6b3ae",
"0x85a6b3ae0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2238,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5972,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|