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

Analysis Run

74a17e40-c92e-4506-b3c6-c4461fb6b7dc

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 4:22 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable value-extraction paths identified from the provided bytecode.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_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
view
trace_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": []
}