6078e8b1-e34f-40d7-bbae-b7e41ea66eea
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31544 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77891 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 77892 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 77893 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 77894 | capability.graph | complete | 1 / 3 | 1 week ago |
| 77895 | detector.run | complete | 1 / 3 | 1 week ago |
| 77896 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1022932] OpenAI Codex v0.77.0 (research preview)
[codex:1022932] --------
[codex:1022932] workdir: /tmp/codex-multi-7ww5ukp_
[codex:1022932] model: gpt-5.2-codex
[codex:1022932] provider: openai
[codex:1022932] approval: never
[codex:1022932] sandbox: read-only
[codex:1022932] reasoning effort: xhigh
[codex:1022932] reasoning summaries: auto
[codex:1022932] session id: 019b8710-7f02-7952-a11b-b73170e140ed
[codex:1022932] --------
[codex:1022932] user
[codex:1022932] 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:1022932]
[codex:1022932] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1022932]
[codex:1022932] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1022932] - Gas inefficiency, code quality, or best practices
[codex:1022932] - Theoretical vulnerabilities without a clear extraction path
[codex:1022932] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1022932] - Issues requiring social engineering or off-chain coordination
[codex:1022932]
[codex:1022932] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1022932] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1022932] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1022932] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1022932] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1022932] - External calls before state updates (reentrancy)
[codex:1022932] - SELFDESTRUCT with controllable beneficiary
[codex:1022932] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1022932]
[codex:1022932] For each finding, you MUST explain:
[codex:1022932] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1022932] 2. The concrete sequence of transactions to extract value
[codex:1022932] 3. Why you believe this is exploitable (not just suspicious)
[codex:1022932]
[codex:1022932] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1022932] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1022932]
[codex:1022932] Output MUST be valid JSON matching the provided schema.
[codex:1022932] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1022932] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1022932] mcp startup: no servers
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Preparing to read bytecode file**
[codex:1022932] exec
[codex:1022932] /bin/bash -lc ls in /tmp/codex-multi-7ww5ukp_ succeeded in 5ms:
[codex:1022932] BYTECODE_BUNDLE.txt
[codex:1022932] codex-output-schema.json
[codex:1022932] exec
[codex:1022932] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-7ww5ukp_ succeeded in 5ms:
[codex:1022932] Runtime bytecode bundle for best-effort auditing.
[codex:1022932] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1022932]
[codex:1022932] FILE: runtime_bytecode.hex
[codex:1022932] 0x608060405260043610610098575f3560e01c8063c4652af111610063578063c4652af114610141578063c4c1c94f1461017d578063de3a04ad146101a5578063f1784e0c146101c1578063f2fde38b146101dd578063fe4b84df146102055761009f565b805f146100a357806001146100bf5780632a31f6b4146100d55780635e4ba17c146100f15780639b252852146101195761009f565b3661009f57005b5f80fd5b6100bd60048036038101906100b89190611959565b61022d565b005b3480156100ca575f80fd5b506100d3610571565b005b6100ef60048036038101906100ea9190611ad3565b6106c9565b005b3480156100fc575f80fd5b5061011760048036038101906101129190611bf1565b6108a8565b005b348015610124575f80fd5b5061013f600480360381019061013a9190611959565b6109bb565b005b34801561014c575f80fd5b5061016760048036038101906101629190611c38565b610a8a565b6040516101749190611c72565b60405180910390f35b348015610188575f80fd5b506101a3600480360381019061019e9190611bf1565b610b23565b005b6101bf60048036038101906101ba9190611cc6565b610c36565b005b6101db60048036038101906101d69190611d2a565b61138a565b005b3480156101e8575f80fd5b5061020360048036038101906101fe9190611d68565b611598565b005b348015610210575f80fd5b5061022b60048036038101906102269190611c38565b611667565b005b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166102b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ad90611ded565b60405180910390fd5b5f63a9059cbb60e01b90505f63022c0d9f60e01b90505f8473ffffffffffffffffffffffffffffffffffffffff1673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff161061031b57600161031d565b5f5b905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168460405161035790611e38565b5f6040518083038185875af1925050503d805f8114610391576040519150601f19603f3d011682016040523d82523d5f602084013e610396565b606091505b5050505f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8673ffffffffffffffffffffffffffffffffffffffff1673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16106103fc5786610412565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b8773ffffffffffffffffffffffffffffffffffffffff1673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16106104735773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2610475565b875b604051602001610486929190611e91565b604051602081830303815290604052805190602001206040516020016104ad929190611f83565b604051602081830303815290604052805190602001205f1c90505f6104d386838561173d565b905084607c52816080528560a0525f806044607c5f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26113885a03f18061050c575f80fd5b84607c52835f811461052557600181146105325761053b565b5f6080528260a05261053b565b826080525f60a0525b503260c052608060e0525f610100525f610110525f8060a4607c5f876113885a03f180610566575f80fd5b505050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f59061200e565b60405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161064390611e38565b5f6040518083038185875af1925050503d805f811461067d576040519150601f19603f3d011682016040523d82523d5f602084013e610682565b606091505b50509050806106c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bd90612076565b60405180910390fd5b50565b734a836ef6c129a2c96cae42fa367c7d229c5ea80273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461074b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610742906120de565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016107ba92919061213e565b5f604051808303815f87803b1580156107d1575f80fd5b505af11580156107e3573d5f803e3d5ffd5b505050505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168260405161082191906121c7565b5f604051808303815f865af19150503d805f811461085a576040519150601f19603f3d011682016040523d82523d5f602084013e61085f565b606091505b50509050806108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90612227565b60405180910390fd5b505050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890611ded565b60405180910390fd5b5f5b81518110156109b7575f60015f84848151811061095357610952612245565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610933565b5050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b90611ded565b60405180910390fd5b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f806040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081523060601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152603c812091505060ff60f81b308483604051602001610b0394939291906122dd565b604051602081830303815290604052805190602001205f1c915050919050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390611ded565b60405180910390fd5b5f5b8151811015610c32576001805f848481518110610bce57610bcd612245565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610bae565b5050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690611ded565b60405180910390fd5b5f600267ffffffffffffffff811115610cdb57610cda6119af565b5b604051908082528060200260200182016040528015610d095781602001602082028036833780820191505090505b5090505f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2886040518363ffffffff1660e01b8152600401610d7092919061232a565b602060405180830381865afa158015610d8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610daf9190612365565b90505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610dff9190611c72565b602060405180830381865afa158015610e1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3e91906123a4565b90505f5b8581101561120e575f610e9c8260025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e9791906123fc565b610a8a565b905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2855f81518110610ec657610ec5612245565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508885600181518110610f1557610f14612245565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663fb3bdb41478a8885426040518663ffffffff1660e01b8152600401610fa394939291906124f5565b5f604051808303818588803b158015610fba575f80fd5b505af1158015610fcc573d5f803e3d5ffd5b50505050505f8973ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161100b9190611c72565b602060405180830381865afa158015611026573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104a91906123a4565b905089865f815181106110605761105f612245565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2866001815181106110c3576110c2612245565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f883042604051602401611117959493929190612584565b6040516020818303038152906040527f791ac947000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508273ffffffffffffffffffffffffffffffffffffffff16632a31f6b48c836040518363ffffffff1660e01b81526004016111d1929190612624565b5f604051808303815f87803b1580156111e8575f80fd5b505af11580156111fa573d5f803e3d5ffd5b505050505050508080600101915050610e42565b8060025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461125a91906123fc565b925050819055505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016112af9190611c72565b602060405180830381865afa1580156112ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ee91906123a4565b9050828110611332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113299061269c565b60405180910390fd5b808361133e91906126ba565b861061137f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113769061275d565b60405180910390fd5b505050505050505050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90611ded565b60405180910390fd5b5f600267ffffffffffffffff81111561142f5761142e6119af565b5b60405190808252806020026020018201604052801561145d5781602001602082028036833780820191505090505b50905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2815f8151811061148857611487612245565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106114d7576114d6612245565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4147848432426040518663ffffffff1660e01b815260040161156594939291906124f5565b5f604051808303818588803b15801561157c575f80fd5b505af115801561158e573d5f803e3d5ffd5b5050505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c9061200e565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790611ded565b60405180910390fd5b5f60035490505b8160035461170591906123fc565b8110156117215761171581611852565b508060010190506116f7565b508060035f82825461173391906123fc565b9250508190555050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015611788573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ac91906127be565b6dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691505f6103e58760018760ff16146117e657836117e8565b845b6117f291906127fc565b6117fc91906127fc565b90505f6103e58861180d91906127fc565b6103e860018860ff16146118215785611823565b845b61182d91906127fc565b61183791906123fc565b90508082611845919061286a565b9450505050509392505050565b5f803060601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602882015283603c825ff592505050919050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118f5826118cc565b9050919050565b611905816118eb565b811461190f575f80fd5b50565b5f81359050611920816118fc565b92915050565b5f819050919050565b61193881611926565b8114611942575f80fd5b50565b5f813590506119538161192f565b92915050565b5f806040838503121561196f5761196e6118c4565b5b5f61197c85828601611912565b925050602061198d85828601611945565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6119e58261199f565b810181811067ffffffffffffffff82111715611a0457611a036119af565b5b80604052505050565b5f611a166118bb565b9050611a2282826119dc565b919050565b5f67ffffffffffffffff821115611a4157611a406119af565b5b611a4a8261199f565b9050602081019050919050565b828183375f83830152505050565b5f611a77611a7284611a27565b611a0d565b905082815260208101848484011115611a9357611a9261199b565b5b611a9e848285611a57565b509392505050565b5f82601f830112611aba57611ab9611997565b5b8135611aca848260208601611a65565b91505092915050565b5f8060408385031215611ae957611ae86118c4565b5b5f611af685828601611912565b925050602083013567ffffffffffffffff811115611b1757611b166118c8565b5b611b2385828601611aa6565b9150509250929050565b5f67ffffffffffffffff821115611b4757611b466119af565b5b602082029050602081019050919050565b5f80fd5b5f611b6e611b6984611b2d565b611a0d565b90508083825260208201905060208402830185811115611b9157611b90611b58565b5b835b81811015611bba5780611ba68882611912565b845260208401935050602081019050611b93565b5050509392505050565b5f82601f830112611bd857611bd7611997565b5b8135611be8848260208601611b5c565b91505092915050565b5f60208284031215611c0657611c056118c4565b5b5f82013567ffffffffffffffff811115611c2357611c226118c8565b5b611c2f84828501611bc4565b91505092915050565b5f60208284031215611c4d57611c4c6118c4565b5b5f611c5a84828501611945565b91505092915050565b611c6c816118eb565b82525050565b5f602082019050611c855f830184611c63565b92915050565b5f611c95826118eb565b9050919050565b611ca581611c8b565b8114611caf575f80fd5b50565b5f81359050611cc081611c9c565b92915050565b5f805f8060808587031215611cde57611cdd6118c4565b5b5f611ceb87828801611cb2565b9450506020611cfc87828801611945565b9350506040611d0d87828801611945565b9250506060611d1e87828801611945565b91505092959194509250565b5f8060408385031215611d4057611d3f6118c4565b5b5f611d4d85828601611cb2565b9250506020611d5e85828601611945565b9150509250929050565b5f60208284031215611d7d57611d7c6118c4565b5b5f611d8a84828501611912565b91505092915050565b5f82825260208201905092915050565b7f21415554480000000000000000000000000000000000000000000000000000005f82015250565b5f611dd7600583611d93565b9150611de282611da3565b602082019050919050565b5f6020820190508181035f830152611e0481611dcb565b9050919050565b5f81905092915050565b50565b5f611e235f83611e0b565b9150611e2e82611e15565b5f82019050919050565b5f611e4282611e18565b9150819050919050565b5f8160601b9050919050565b5f611e6282611e4c565b9050919050565b5f611e7382611e58565b9050919050565b611e8b611e86826118eb565b611e69565b82525050565b5f611e9c8285611e7a565b601482019150611eac8284611e7a565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f611efa600183611ebc565b9150611f0582611ec6565b600182019050919050565b5f819050919050565b5f819050919050565b611f33611f2e82611f10565b611f19565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f611f6d602083611ebc565b9150611f7882611f39565b602082019050919050565b5f611f8d82611eee565b9150611f998285611e7a565b601482019150611fa98284611f22565b602082019150611fb882611f61565b91508190509392505050565b7f457865637574696f6e204661696c6564000000000000000000000000000000005f82015250565b5f611ff8601083611d93565b915061200382611fc4565b602082019050919050565b5f6020820190508181035f83015261202581611fec565b9050919050565b7f66000000000000000000000000000000000000000000000000000000000000005f82015250565b5f612060600183611d93565b915061206b8261202c565b602082019050919050565b5f6020820190508181035f83015261208d81612054565b9050919050565b7f4e6f7420417574686f72697a65640000000000000000000000000000000000005f82015250565b5f6120c8600e83611d93565b91506120d382612094565b602082019050919050565b5f6020820190508181035f8301526120f5816120bc565b9050919050565b5f819050919050565b5f819050919050565b5f61212861212361211e846120fc565b612105565b611926565b9050919050565b6121388161210e565b82525050565b5f6040820190506121515f830185611c63565b61215e602083018461212f565b9392505050565b5f81519050919050565b5f5b8381101561218c578082015181840152602081019050612171565b5f8484015250505050565b5f6121a182612165565b6121ab8185611e0b565b93506121bb81856020860161216f565b80840191505092915050565b5f6121d28284612197565b915081905092915050565b7f6661696c656400000000000000000000000000000000000000000000000000005f82015250565b5f612211600683611d93565b915061221c826121dd565b602082019050919050565b5f6020820190508181035f83015261223e81612205565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b6122b76122b282612272565b61229d565b82525050565b5f819050919050565b6122d76122d282611926565b6122bd565b82525050565b5f6122e882876122a6565b6001820191506122f88286611e7a565b60148201915061230882856122c6565b6020820191506123188284611f22565b60208201915081905095945050505050565b5f60408201905061233d5f830185611c63565b61234a6020830184611c63565b9392505050565b5f8151905061235f816118fc565b92915050565b5f6020828403121561237a576123796118c4565b5b5f61238784828501612351565b91505092915050565b5f8151905061239e8161192f565b92915050565b5f602082840312156123b9576123b86118c4565b5b5f6123c684828501612390565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61240682611926565b915061241183611926565b9250828201905080821115612429576124286123cf565b5b92915050565b61243881611926565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612470816118eb565b82525050565b5f6124818383612467565b60208301905092915050565b5f602082019050919050565b5f6124a38261243e565b6124ad8185612448565b93506124b883612458565b805f5b838110156124e85781516124cf8882612476565b97506124da8361248d565b9250506001810190506124bb565b5085935050505092915050565b5f6080820190506125085f83018761242f565b818103602083015261251a8186612499565b90506125296040830185611c63565b612536606083018461242f565b95945050505050565b5f819050919050565b5f60ff82169050919050565b5f61256e6125696125648461253f565b612105565b612548565b9050919050565b61257e81612554565b82525050565b5f60a0820190506125975f83018861242f565b6125a46020830187612575565b81810360408301526125b68186612499565b90506125c56060830185611c63565b6125d2608083018461242f565b9695505050505050565b5f82825260208201905092915050565b5f6125f682612165565b61260081856125dc565b935061261081856020860161216f565b6126198161199f565b840191505092915050565b5f6040820190506126375f830185611c63565b818103602083015261264981846125ec565b90509392505050565b7f436f6e7472616374204661696c656420546f204175746f7377617000000000005f82015250565b5f612686601b83611d93565b915061269182612652565b602082019050919050565b5f6020820190508181035f8301526126b38161267a565b9050919050565b5f6126c482611926565b91506126cf83611926565b92508282039050818111156126e7576126e66123cf565b5b92915050565b7f436f6e74726163742052656d6f76656420496e73756666696369656e74204c695f8201527f7175696469747900000000000000000000000000000000000000000000000000602082015250565b5f612747602783611d93565b9150612752826126ed565b604082019050919050565b5f6020820190508181035f8301526127748161273b565b9050919050565b5f6dffffffffffffffffffffffffffff82169050919050565b61279d8161277b565b81146127a7575f80fd5b50565b5f815190506127b881612794565b92915050565b5f80604083850312156127d4576127d36118c4565b5b5f6127e1858286016127aa565b92505060206127f2858286016127aa565b9150509250929050565b5f61280682611926565b915061281183611926565b925082820261281f81611926565b91508282048414831517612836576128356123cf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61287482611926565b915061287f83611926565b92508261288f5761288e61283d565b5b82820490509291505056fea26469706673582212203e01732fc6bbd2e7b04985571e90cb78446ef443290c3dfa7b227f7e66dda13f64736f6c63430008160033
[codex:1022932]
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Analyzing bytecode for exploit paths**
[codex:1022932] thinking
[codex:1022932] **Verifying access control on functions**
[codex:1022932]
[codex:1022932] I'll check each function for authorization requirements, focusing on whether any allow unauthorized users to add themselves or withdraw funds. Functions mainly require owner or authorized checks, but I'll dig deeper to see if the auth mapping can be manipulated without restriction or if any public functions enable unauthorized access.
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import binascii
[codex:1022932] from textwrap import wrap
[codex:1022932]
[codex:1022932] hexstr=open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()
[codex:1022932] # extract runtime hex
[codex:1022932] import re
[codex:1022932] m=re.search(r'0x([0-9a-fA-F]+)',hexstr)
[codex:1022932] if not m:
[codex:1022932] print('no hex')
[codex:1022932] exit()
[codex:1022932] code=m.group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] # simple disassembler
[codex:1022932] opcodes={
[codex:1022932] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1022932] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1022932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1022932] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1022932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1022932] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1022932] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1022932] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1022932] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1022932] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1022932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1022932] }
[codex:1022932]
[codex:1022932] # disassemble around function entries
[codex:1022932]
[codex:1022932] # find jumpdests and compute map
[codex:1022932]
[codex:1022932] hex_len=len(code_bytes)
[codex:1022932] # output a limited disasm with addresses and opcodes, maybe filtered for CALL/DELEGATECALL/SELFDESTRUCT/SSTORE
[codex:1022932]
[codex:1022932] for i,b in enumerate(code_bytes):
[codex:1022932] pass
[codex:1022932]
[codex:1022932] # Let's parse and print opcodes with offsets for patterns
[codex:1022932]
[codex:1022932] interesting={0xf1:'CALL',0xf4:'DELEGATECALL',0xff:'SELFDESTRUCT',0x55:'SSTORE'}
[codex:1022932]
[codex:1022932] # linear disasm
[codex:1022932] pc=0
[codex:1022932] out=[]
[codex:1022932] while pc<len(code_bytes):
[codex:1022932] op=code_bytes[pc]
[codex:1022932] name=opcodes.get(op,f'OP{op:02x}')
[codex:1022932] pc_next=pc+1
[codex:1022932] if 0x60<=op<=0x7f: # push
[codex:1022932] n=op-0x5f
[codex:1022932] data=code_bytes[pc+1:pc+1+n]
[codex:1022932] pc_next=pc+1+n
[codex:1022932] out.append((pc,name,data.hex()))
[codex:1022932] else:
[codex:1022932] out.append((pc,name,None))
[codex:1022932] pc=pc_next
[codex:1022932]
[codex:1022932] # print some surrounding context for CALL/DELEGATECALL/SELFDESTRUCT
[codex:1022932] for idx,(pc,name,data) in enumerate(out):
[codex:1022932] if name in ('CALL','DELEGATECALL','SELFDESTRUCT','CREATE2'):
[codex:1022932] # show previous few lines
[codex:1022932] start=max(0,idx-6)
[codex:1022932] end=min(len(out),idx+3)
[codex:1022932] print('----',name,'at',hex(pc))
[codex:1022932] for j in range(start,end):
[codex:1022932] p,n,d=out[j]
[codex:1022932] if d is None:
[codex:1022932] print(hex(p),n)
[codex:1022932] else:
[codex:1022932] print(hex(p),n,d)
[codex:1022932]
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 32ms:
[codex:1022932] ---- CALL at 0x363
[codex:1022932] 0x35d DUP4
[codex:1022932] 0x35e SUB
[codex:1022932] 0x35f DUP2
[codex:1022932] 0x360 DUP6
[codex:1022932] 0x361 DUP8
[codex:1022932] 0x362 GAS
[codex:1022932] 0x363 CALL
[codex:1022932] 0x364 SWAP3
[codex:1022932] 0x365 POP
[codex:1022932] ---- CALL at 0x503
[codex:1022932] 0x4e6 PUSH1 7c
[codex:1022932] 0x4e8 PUSH0
[codex:1022932] 0x4e9 PUSH20 c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
[codex:1022932] 0x4fe PUSH2 1388
[codex:1022932] 0x501 GAS
[codex:1022932] 0x502 SUB
[codex:1022932] 0x503 CALL
[codex:1022932] 0x504 DUP1
[codex:1022932] 0x505 PUSH2 050c
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Analyzing function boundaries and dispatcher parsing**
[codex:1022932]
[codex:1022932] I'm working on mapping function selectors to entry points by parsing the dispatch table and scanning for JUMPDESTs. I'll try scripts and heuristics to decode the dispatcher patterns and disassemble relevant code areas to identify CALL targets and potential security risks. This involves producing annotated disassembly focused on the dispatcher and key functions.
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] hexstr=open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',hexstr).group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] opcodes={
[codex:1022932] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1022932] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1022932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1022932] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1022932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1022932] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1022932] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1022932] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1022932] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1022932] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1022932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1022932] }
[codex:1022932]
[codex:1022932] def disasm(start,end):
[codex:1022932] pc=start
[codex:1022932] while pc<end:
[codex:1022932] op=code_bytes[pc]
[codex:1022932] name=opcodes.get(op,f'OP{op:02x}')
[codex:1022932] pc_next=pc+1
[codex:1022932] if 0x60<=op<=0x7f:
[codex:1022932] n=op-0x5f
[codex:1022932] data=code_bytes[pc+1:pc+1+n]
[codex:1022932] pc_next=pc+1+n
[codex:1022932] print(f'{pc:04x} {name} {data.hex()}')
[codex:1022932] else:
[codex:1022932] print(f'{pc:04x} {name}')
[codex:1022932] pc=pc_next
[codex:1022932]
[codex:1022932] # disasm first 0x150 bytes
[codex:1022932] print('--- dispatch ---')
[codex:1022932] disasm(0,0x180)
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 29ms:
[codex:1022932] --- dispatch ---
[codex:1022932] 0000 PUSH1 80
[codex:1022932] 0002 PUSH1 40
[codex:1022932] 0004 MSTORE
[codex:1022932] 0005 PUSH1 04
[codex:1022932] 0007 CALLDATASIZE
[codex:1022932] 0008 LT
[codex:1022932] 0009 PUSH2 0098
[codex:1022932] 000c JUMPI
[codex:1022932] 000d PUSH0
[codex:1022932] 000e CALLDATALOAD
[codex:1022932] 000f PUSH1 e0
[codex:1022932] 0011 SHR
[codex:1022932] 0012 DUP1
[codex:1022932] 0013 PUSH4 c4652af1
[codex:1022932] 0018 GT
[codex:1022932] 0019 PUSH2 0063
[codex:1022932] 001c JUMPI
[codex:1022932] 001d DUP1
[codex:1022932] 001e PUSH4 c4652af1
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Analyzing function selectors and access controls**
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()).group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] # find ORIGIN opcode 0x32
[codex:1022932] positions=[i for i,b in enumerate(code_bytes) if b==0x32]
[codex:1022932] print('ORIGIN positions',positions[:20], 'count',len(positions))
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 24ms:
[codex:1022932] ORIGIN positions [1311, 1341, 2998, 4854, 5445, 8019, 8810] count 7
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Inspecting ORIGIN usage risks**
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] hexstr=open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',hexstr).group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] opcodes={
[codex:1022932] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1022932] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1022932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1022932] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1022932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1022932] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1022932] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1022932] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1022932] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1022932] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1022932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1022932] }
[codex:1022932]
[codex:1022932] def disasm_range(center,span=40):
[codex:1022932] start=max(0,center-span)
[codex:1022932] end=min(len(code_bytes),center+span)
[codex:1022932] pc=start
[codex:1022932] while pc<end:
[codex:1022932] op=code_bytes[pc]
[codex:1022932] name=opcodes.get(op,f'OP{op:02x}')
[codex:1022932] pc_next=pc+1
[codex:1022932] if 0x60<=op<=0x7f:
[codex:1022932] n=op-0x5f
[codex:1022932] data=code_bytes[pc+1:pc+1+n]
[codex:1022932] pc_next=pc+1+n
[codex:1022932] print(f'{pc:04x} {name} {data.hex()}')
[codex:1022932] else:
[codex:1022932] print(f'{pc:04x} {name}')
[codex:1022932] pc=pc_next
[codex:1022932]
[codex:1022932] positions=[1311,1341,2998,4854,5445,8019,8810]
[codex:1022932] for pos in positions:
[codex:1022932] print('\\n-- around',hex(pos),'--')
[codex:1022932] disasm_range(pos,span=30)
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 30ms:
[codex:1022932]
[codex:1022932] -- around 0x51f --
[codex:1022932] 0501 GAS
[codex:1022932] 0502 SUB
[codex:1022932] 0503 CALL
[codex:1022932] 0504 DUP1
[codex:1022932] 0505 PUSH2 050c
[codex:1022932] 0508 JUMPI
[codex:1022932] 0509 PUSH0
[codex:1022932] 050a DUP1
[codex:1022932] 050b REVERT
[codex:1022932] 050c JUMPDEST
[codex:1022932] 050d DUP5
[codex:1022932] 050e PUSH1 7c
[codex:1022932] 0510 MSTORE
[codex:1022932] 0511 DUP4
[codex:1022932] 0512 PUSH0
[codex:1022932] 0513 DUP2
[codex:1022932] 0514 EQ
[codex:1022932] 0515 PUSH2 0525
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Analyzing Uniswap-related contract functions**
[codex:1022932]
[codex:1022932] I’m checking various function selectors and code snippets to identify how Uniswap router and pair functions like swap and removeLiquidityETHWithPermitSupportingFeeOnTransferTokens are used, and whether any token-moving function lacks authorization checks. I’m focusing on auth mapping updates, potential flashswap usage, and if unauthorized calls can manipulate auth to enable token transfers.
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()).group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] # opcodes mapping simplified
[codex:1022932] opcodes={
[codex:1022932] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1022932] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1022932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1022932] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1022932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1022932] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1022932] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1022932] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1022932] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1022932] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1022932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1022932] }
[codex:1022932]
[codex:1022932]
[codex:1022932] def disasm(start,end):
[codex:1022932] pc=start
[codex:1022932] while pc<end:
[codex:1022932] op=code_bytes[pc]
[codex:1022932] name=opcodes.get(op,f'OP{op:02x}')
[codex:1022932] pc_next=pc+1
[codex:1022932] if 0x60<=op<=0x7f:
[codex:1022932] n=op-0x5f
[codex:1022932] data=code_bytes[pc+1:pc+1+n]
[codex:1022932] pc_next=pc+1+n
[codex:1022932] print(f'{pc:04x} {name} {data.hex()}')
[codex:1022932] else:
[codex:1022932] print(f'{pc:04x} {name}')
[codex:1022932] pc=pc_next
[codex:1022932]
[codex:1022932] # disasm around 0x08a8, 0x09bb, 0x0b23, 0x0c36, 0x138a, 0x1598, 0x1667, 0x0571, 0x022d
[codex:1022932] for start in [0x022d,0x0571,0x06c9,0x08a8,0x09bb,0x0a8a,0x0b23,0x0c36,0x138a,0x1598,0x1667]:
[codex:1022932] print('\\n=== disasm from',hex(start),'===')
[codex:1022932] disasm(start, start+0x80)
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 25ms:
[codex:1022932]
[codex:1022932] === disasm from 0x22d ===
[codex:1022932] 022d JUMPDEST
[codex:1022932] 022e PUSH1 01
[codex:1022932] 0230 PUSH0
[codex:1022932] 0231 CALLER
[codex:1022932] 0232 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:1022932] 0247 AND
[codex:1022932] 0248 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:1022932] 025d AND
[codex:1022932] 025e DUP2
[codex:1022932] 025f MSTORE
[codex:1022932] 0260 PUSH1 20
[codex:1022932] 0262 ADD
[codex:1022932] 0263 SWAP1
[codex:1022932] 0264 DUP2
[codex:1022932] 0265 MSTORE
[codex:1022932] 0266 PUSH1 20
[codex:1022932] 0268 ADD
[codex:1022932] 0269 PUSH0
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Examining authorization and fallback logic for exploits**
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()).group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] # opcodes mapping minimal
[codex:1022932] opcodes={
[codex:1022932] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1022932] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1022932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1022932] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1022932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1022932] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1022932] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1022932] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1022932] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1022932] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1022932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1022932] }
[codex:1022932]
[codex:1022932] def disasm(start,end):
[codex:1022932] pc=start
[codex:1022932] while pc<end:
[codex:1022932] op=code_bytes[pc]
[codex:1022932] name=opcodes.get(op,f'OP{op:02x}')
[codex:1022932] pc_next=pc+1
[codex:1022932] if 0x60<=op<=0x7f:
[codex:1022932] n=op-0x5f
[codex:1022932] data=code_bytes[pc+1:pc+1+n]
[codex:1022932] pc_next=pc+1+n
[codex:1022932] print(f'{pc:04x} {name} {data.hex()}')
[codex:1022932] else:
[codex:1022932] print(f'{pc:04x} {name}')
[codex:1022932] pc=pc_next
[codex:1022932]
[codex:1022932] print('--- function 0x0571 ---')
[codex:1022932] disasm(0x0571,0x06c9)
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 24ms:
[codex:1022932] --- function 0x0571 ---
[codex:1022932] 0571 JUMPDEST
[codex:1022932] 0572 PUSH0
[codex:1022932] 0573 DUP1
[codex:1022932] 0574 SLOAD
[codex:1022932] 0575 SWAP1
[codex:1022932] 0576 PUSH2 0100
[codex:1022932] 0579 EXP
[codex:1022932] 057a SWAP1
[codex:1022932] 057b DIV
[codex:1022932] 057c PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:1022932] 0591 AND
[codex:1022932] 0592 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:1022932] 05a7 AND
[codex:1022932] 05a8 CALLER
[codex:1022932] 05a9 PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:1022932] 05be AND
[codex:1022932] 05bf EQ
[codex:1022932] 05c0 PUSH2 05fe
[codex:1022932] 05c3 JUMPI
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Analyzing contract functions and storage operations**
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()).group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] # disasm to list ops with pc and push data
[codex:1022932] opcodes={
[codex:1022932] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1022932] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1022932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1022932] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1022932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1022932] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1022932] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1022932] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1022932] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1022932] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1022932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1022932] }
[codex:1022932]
[codex:1022932] # disassemble full with positions
[codex:1022932] ops=[]
[codex:1022932] pc=0
[codex:1022932] while pc<len(code_bytes):
[codex:1022932] op=code_bytes[pc]
[codex:1022932] name=opcodes.get(op,f'OP{op:02x}')
[codex:1022932] pc_next=pc+1
[codex:1022932] data=None
[codex:1022932] if 0x60<=op<=0x7f:
[codex:1022932] n=op-0x5f
[codex:1022932] data=code_bytes[pc+1:pc+1+n]
[codex:1022932] pc_next=pc+1+n
[codex:1022932] ops.append((pc,op,name,data))
[codex:1022932] pc=pc_next
[codex:1022932]
[codex:1022932] # find SSTORE ops and print some context
[codex:1022932] for i,(pc,op,name,data) in enumerate(ops):
[codex:1022932] if name=='SSTORE':
[codex:1022932] print('\\nSSTORE at',hex(pc))
[codex:1022932] for j in range(max(0,i-6), min(len(ops),i+1)):
[codex:1022932] p,_,n,d=ops[j]
[codex:1022932] if d is None:
[codex:1022932] print(hex(p),n)
[codex:1022932] else:
[codex:1022932] print(hex(p),n,d.hex())
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 32ms:
[codex:1022932]
[codex:1022932] SSTORE at 0x9a9
[codex:1022932] 0x9a3 DUP4
[codex:1022932] 0x9a4 ISZERO
[codex:1022932] 0x9a5 ISZERO
[codex:1022932] 0x9a6 MUL
[codex:1022932] 0x9a7 OR
[codex:1022932] 0x9a8 SWAP1
[codex:1022932] 0x9a9 SSTORE
[codex:1022932]
[codex:1022932] SSTORE at 0xa85
[codex:1022932] 0xa7e PUSH1 20
[codex:1022932] 0xa80 ADD
[codex:1022932] 0xa81 PUSH0
[codex:1022932] 0xa82 SHA3
[codex:1022932] 0xa83 DUP2
[codex:1022932] 0xa84 SWAP1
[codex:1022932] 0xa85 SSTORE
[codex:1022932]
[codex:1022932] SSTORE at 0xc24
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Inspecting storage slots around SSTORE**
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()).group(1)
[codex:1022932] code_bytes=bytes.fromhex(code)
[codex:1022932] # opcodes mapping
[codex:1022932] opcodes={
[codex:1022932] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:1022932] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1022932] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:1022932] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1022932] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1022932] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:1022932] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:1022932] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:1022932] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:1022932] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1022932] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:1022932] }
[codex:1022932]
[codex:1022932] def disasm(start,end):
[codex:1022932] pc=start
[codex:1022932] while pc<end:
[codex:1022932] op=code_bytes[pc]
[codex:1022932] name=opcodes.get(op,f'OP{op:02x}')
[codex:1022932] pc_next=pc+1
[codex:1022932] if 0x60<=op<=0x7f:
[codex:1022932] n=op-0x5f
[codex:1022932] data=code_bytes[pc+1:pc+1+n]
[codex:1022932] pc_next=pc+1+n
[codex:1022932] print(f'{pc:04x} {name} {data.hex()}')
[codex:1022932] else:
[codex:1022932] print(f'{pc:04x} {name}')
[codex:1022932] pc=pc_next
[codex:1022932]
[codex:1022932] for sstore_pc in [0x9a9,0xa85,0xc24,0x1260,0x1663,0x1739]:
[codex:1022932] print('\\n-- around',hex(sstore_pc),'--')
[codex:1022932] disasm(sstore_pc-20, sstore_pc+20)
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 23ms:
[codex:1022932]
[codex:1022932] -- around 0x9a9 --
[codex:1022932] 0995 PUSH0
[codex:1022932] 0996 PUSH2 0100
[codex:1022932] 0999 EXP
[codex:1022932] 099a DUP2
[codex:1022932] 099b SLOAD
[codex:1022932] 099c DUP2
[codex:1022932] 099d PUSH1 ff
[codex:1022932] 099f MUL
[codex:1022932] 09a0 NOT
[codex:1022932] 09a1 AND
[codex:1022932] 09a2 SWAP1
[codex:1022932] 09a3 DUP4
[codex:1022932] 09a4 ISZERO
[codex:1022932] 09a5 ISZERO
[codex:1022932] 09a6 MUL
[codex:1022932] 09a7 OR
[codex:1022932] 09a8 SWAP1
[codex:1022932] 09a9 SSTORE
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Analyzing storage operations and authorization checks**
[codex:1022932] exec
[codex:1022932] /bin/bash -lc "python - <<'PY'
[codex:1022932] import re
[codex:1022932] code=re.search(r'0x([0-9a-fA-F]+)',open('/tmp/codex-multi-7ww5ukp_/BYTECODE_BUNDLE.txt').read()).group(1)
[codex:1022932] idx=[i for i in range(len(code)//2) if code[2*i:2*i+8]=='095ea7b3']
[codex:1022932] print('occurrences',idx)
[codex:1022932] PY" in /tmp/codex-multi-7ww5ukp_ succeeded in 25ms:
[codex:1022932] occurrences [1892]
[codex:1022932]
[codex:1022932] thinking
[codex:1022932] **Analyzing potential contract vulnerabilities**
[codex:1022932] codex
[codex:1022932] {"no_findings":true,"summary":"No concrete, exploitable profit path found in the runtime bytecode; value-moving logic appears gated by owner/auth checks or a fixed sender, and no delegatecall/selfdestruct or unprotected upgrade patterns are visible (bytecode-only analysis).","findings":[]}
[codex:1022932] tokens used
[codex:1022932] 64,539
[codex:1022932] {"no_findings":true,"summary":"No concrete, exploitable profit path found in the runtime bytecode; value-moving logic appears gated by owner/auth checks or a fixed sender, and no delegatecall/selfdestruct or unprotected upgrade patterns are visible (bytecode-only analysis).","findings":[]}
{
"codex": {
"ran_at": "2026-01-04T03:40:16.231497+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path found in the runtime bytecode; value-moving logic appears gated by owner/auth checks or a fixed sender, and no delegatecall/selfdestruct or unprotected upgrade patterns are visible (bytecode-only analysis).",
"raw_final": {
"summary": "No concrete, exploitable profit path found in the runtime bytecode; value-moving logic appears gated by owner/auth checks or a fixed sender, and no delegatecall/selfdestruct or unprotected upgrade patterns are visible (bytecode-only analysis).",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0098 0000000c: JUMPI 0000000d: PUSH0 0000000e: CALLDATALOAD 0000000f: PUSH1 0xe0 00000011: SHR 00000012: DUP1 00000013: PUSH4 0xc4652af1 00000018: GT 00000019: PUSH2 0x0063 0000001c: JUMPI 0000001d: DUP1 0000001e: PUSH4 0xc4652af1 00000023: EQ 00000024: PUSH2 0x0141 00000027: JUMPI 00000028: DUP1 00000029: PUSH4 0xc4c1c94f 0000002e: EQ 0000002f: PUSH2 0x017d 00000032: JUMPI 00000033: DUP1 00000034: PUSH4 0xde3a04ad 00000039: EQ 0000003a: PUSH2 0x01a5 0000003d: JUMPI 0000003e: DUP1 0000003f: PUSH4 0xf1784e0c 00000044: EQ 00000045: PUSH2 0x01c1 00000048: JUMPI 00000049: DUP1 0000004a: PUSH4 0xf2fde38b 0000004f: EQ 00000050: PUSH2 0x01dd 00000053: JUMPI 00000054: DUP1 00000055: PUSH4 0xfe4b84df 0000005a: EQ 0000005b: PUSH2 0x0205 0000005e: JUMPI 0000005f: PUSH2 0x009f 00000062: JUMP 00000063: JUMPDEST 00000064: DUP1 00000065: PUSH0 00000066: EQ 00000067: PUSH2 0x00a3 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH1 0x01 0000006e: EQ 0000006f: PUSH2 0x00bf 00000072: JUMPI 00000073: DUP1 00000074: PUSH4 0x2a31f6b4 00000079: EQ 0000007a: PUSH2 0x00d5 0000007d: JUMPI 0000007e: DUP1 0000007f: PUSH4 0x5e4ba17c 00000084: EQ 00000085: PUSH2 0x00f1 00000088: JUMPI 00000089: DUP1 0000008a: PUSH4 0x9b252852 0000008f: EQ 00000090: PUSH2 0x0119 00000093: JUMPI 00000094: PUSH2 0x009f 00000097: JUMP 00000098: JUMPDEST 00000099: CALLDATASIZE 0000009a: PUSH2 0x009f 0000009d: JUMPI 0000009e: STOP 0000009f: JUMPDEST 000000a0: PUSH0 000000a1: DUP1 000000a2: REVERT 000000a3: JUMPDEST 000000a4: PUSH2 0x00bd 000000a7: PUSH1 0x04 000000a9: DUP1 000000aa: CALLDATASIZE 000000ab: SUB 000000ac: DUP2 000000ad: ADD 000000ae: SWAP1 000000af: PUSH2 0x00b8 000000b2: SWAP2 000000b3: SWAP1 000000b4: PUSH2 0x1959 000000b7: JUMP 000000b8: JUMPDEST 000000b9: PUSH2 0x022d 000000bc: JUMP 000000bd: JUMPDEST 000000be: STOP 000000bf: JUMPDEST 000000c0: CALLVALUE 000000c1: DUP1 000000c2: ISZERO 000000c3: PUSH2 0x00ca 000000c6: JUMPI 000000c7: PUSH0 000000c8: DUP1 000000c9: REVERT 000000ca: JUMPDEST 000000cb: POP 000000cc: PUSH2 0x00d3 000000cf: PUSH2 0x0571 000000d2: JUMP 000000d3: JUMPDEST 000000d4: STOP 000000d5: JUMPDEST 000000d6: PUSH2 0x00ef 000000d9: PUSH1 0x04 000000db: DUP1 000000dc: CALLDATASIZE 000000dd: SUB 000000de: DUP2 000000df: ADD 000000e0: SWAP1 000000e1: PUSH2 0x00ea 000000e4: SWAP2 000000e5: SWAP1 000000e6: PUSH2 0x1ad3 000000e9: JUMP 000000ea: JUMPDEST 000000eb: PUSH2 0x06c9 000000ee: JUMP 000000ef: JUMPDEST 000000f0: STOP 000000f1: JUMPDEST 000000f2: CALLVALUE 000000f3: DUP1 000000f4: ISZERO 000000f5: PUSH2 0x00fc 000000f8: JUMPI 000000f9: PUSH0 000000fa: DUP1 000000fb: REVERT 000000fc: JUMPDEST 000000fd: POP 000000fe: PUSH2 0x0117 00000101: PUSH1 0x04 00000103: DUP1 00000104: CALLDATASIZE 00000105: SUB 00000106: DUP2 00000107: ADD 00000108: SWAP1 00000109: PUSH2 0x0112 0000010c: SWAP2 0000010d: SWAP1 0000010e: PUSH2 0x1bf1 00000111: JUMP 00000112: JUMPDEST 00000113: PUSH2 0x08a8 00000116: JUMP 00000117: JUMPDEST 00000118: STOP 00000119: JUMPDEST 0000011a: CALLVALUE 0000011b: DUP1 0000011c: ISZERO 0000011d: PUSH2 0x0124 00000120: JUMPI 00000121: PUSH0 00000122: DUP1 00000123: REVERT 00000124: JUMPDEST 00000125: POP 00000126: PUSH2 0x013f 00000129: PUSH1 0x04 0000012b: DUP1 0000012c: CALLDATASIZE 0000012d: SUB 0000012e: DUP2 0000012f: ADD 00000130: SWAP1 00000131: PUSH2 0x013a 00000134: SWAP2 00000135: SWAP1 00000136: PUSH2 0x1959 00000139: JUMP 0000013a: JUMPDEST 0000013b: PUSH2 0x09bb 0000013e: JUMP 0000013f: JUMPDEST 00000140: STOP 00000141: JUMPDEST 00000142: CALLVALUE 00000143: DUP1 00000144: ISZERO 00000145: PUSH2 0x014c 00000148: JUMPI 00000149: PUSH0 0000014a: DUP1 0000014b: REVERT 0000014c: JUMPDEST 0000014d: POP 0000014e: PUSH2 0x0167 00000151: PUSH1 0x04 00000153: DUP1 00000154: CALLDATASIZE 00000155: SUB 00000156: DUP2 00000157: ADD 00000158: SWAP1 00000159: PUSH2 0x0162 0000015c: SWAP2 0000015d: SWAP1 0000015e: PUSH2 0x1c38 00000161: JUMP 00000162: JUMPDEST 00000163: PUSH2 0x0a8a 00000166: JUMP 00000167: JUMPDEST 00000168: PUSH1 0x40 0000016a: MLOAD 0000016b: PUSH2 0x0174 0000016e: SWAP2 0000016f: SWAP1 00000170: PUSH2 0x1c72 00000173: JUMP 00000174: JUMPDEST 00000175: PUSH1 0x40 00000177: MLOAD 00000178: DUP1 00000179: SWAP2 0000017a: SUB 0000017b: SWAP1 0000017c: RETURN 0000017d: JUMPDEST 0000017e: CALLVALUE 0000017f: DUP1 00000180: ISZERO 00000181: PUSH2 0x0188 00000184: JUMPI 00000185: PUSH0 00000186: DUP1 00000187: REVERT 00000188: JUMPDEST 00000189: POP 0000018a: PUSH2 0x01a3 0000018d: PUSH1 0x04 0000018f: DUP1 00000190: CALLDATASIZE 00000191: SUB 00000192: DUP2 00000193: ADD 00000194: SWAP1 00000195: PUSH2 0x019e 00000198: SWAP2 00000199: SWAP1 0000019a: PUSH2 0x1bf1 0000019d: JUMP 0000019e: JUMPDEST 0000019f: PUSH2 0x0b23 000001a2: JUMP 000001a3: JUMPDEST 000001a4: STOP 000001a5: JUMPDEST 000001a6: PUSH2 0x01bf 000001a9: PUSH1 0x04 000001ab: DUP1 000001ac: CALLDATASIZE 000001ad: SUB 000001ae: DUP2 000001af: ADD 000001b0: SWAP1 000001b1: PUSH2 0x01ba 000001b4: SWAP2 000001b5: SWAP1 000001b6: PUSH2 0x1cc6 000001b9: JUMP 000001ba: JUMPDEST 000001bb: PUSH2 0x0c36 000001be: JUMP 000001bf: JUMPDEST 000001c0: STOP 000001c1: JUMPDEST 000001c2: PUSH2 0x01db 000001c5: PUSH1 0x04 000001c7: DUP1 000001c8: CALLDATASIZE 000001c9: SUB 000001ca: DUP2 000001cb: ADD 000001cc: SWAP1 000001cd: PUSH2 0x01d6 000001d0: SWAP2 000001d1: SWAP1 000001d2: PUSH2 0x1d2a 000001d5: JUMP 000001d6: JUMPDEST 000001d7: PUSH2 0x138a 000001da: JUMP 000001db: JUMPDEST 000001dc: STOP 000001dd: JUMPDEST 000001de: CALLVALUE 000001df: DUP1 000001e0: ISZERO 000001e1: PUSH2 0x01e8 000001e4: JUMPI 000001e5: PUSH0 000001e6: DUP1 000001e7: REVERT 000001e8: JUMPDEST 000001e9: POP 000001ea: PUSH2 0x0203 000001ed: PUSH1 0x04 000001ef: DUP1 000001f0: CALLDATASIZE 000001f1: SUB 000001f2: DUP2 000001f3: ADD 000001f4: SWAP1 000001f5: PUSH2 0x01fe 000001f8: SWAP2 000001f9: SWAP1 000001fa: PUSH2 0x1d68 000001fd: JUMP 000001fe: JUMPDEST 000001ff: PUSH2 0x1598 00000202: JUMP 00000203: JUMPDEST 00000204: STOP 00000205: JUMPDEST 00000206: CALLVALUE 00000207: DUP1 00000208: ISZERO 00000209: PUSH2 0x0210 0000020c: JUMPI 0000020d: PUSH0 0000020e: DUP1 0000020f: REVERT 00000210: JUMPDEST 00000211: POP 00000212: PUSH2 0x022b 00000215: PUSH1 0x04 00000217: DUP1 00000218: CALLDATASIZE 00000219: SUB 0000021a: DUP2 0000021b: ADD 0000021c: SWAP1 0000021d: PUSH2 0x0226 00000220: SWAP2 00000221: SWAP1 00000222: PUSH2 0x1c38 00000225: JUMP 00000226: JUMPDEST 00000227: PUSH2 0x1667 0000022a: JUMP 0000022b: JUMPDEST 0000022c: STOP 0000022d: JUMPDEST 0000022e: PUSH1 0x01 00000230: PUSH0 00000231: CALLER 00000232: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000247: AND 00000248: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000025d: AND 0000025e: DUP2 0000025f: MSTORE 00000260: PUSH1 0x20 00000262: ADD 00000263: SWAP1 00000264: DUP2 00000265: MSTORE 00000266: PUSH1 0x20 00000268: ADD 00000269: PUSH0 0000026a: KECCAK256 0000026b: PUSH0 0000026c: SWAP1 0000026d: SLOAD 0000026e: SWAP1 0000026f: PUSH2 0x0100 00000272: EXP 00000273: SWAP1 00000274: DIV 00000275: PUSH1 0xff 00000277: AND 00000278: PUSH2 0x02b6 0000027b: JUMPI 0000027c: PUSH1 0x40 0000027e: MLOAD 0000027f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000002a0: DUP2 000002a1: MSTORE 000002a2: PUSH1 0x04 000002a4: ADD 000002a5: PUSH2 0x02ad 000002a8: SWAP1 000002a9: PUSH2 0x1ded 000002ac: JUMP 000002ad: JUMPDEST 000002ae: PUSH1 0x40 000002b0: MLOAD 000002b1: DUP1 000002b2: SWAP2 000002b3: SUB 000002b4: SWAP1 000002b5: REVERT 000002b6: JUMPDEST 000002b7: PUSH0 000002b8: PUSH4 0xa9059cbb 000002bd: PUSH1 0xe0 000002bf: SHL 000002c0: SWAP1 000002c1: POP 000002c2: PUSH0 000002c3: PUSH4 0x022c0d9f 000002c8: PUSH1 0xe0 000002ca: SHL 000002cb: SWAP1 000002cc: POP 000002cd: PUSH0 000002ce: DUP5 000002cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002e4: AND 000002e5: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 000002fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000030f: AND 00000310: LT 00000311: PUSH2 0x031b 00000314: JUMPI 00000315: PUSH1 0x01 00000317: PUSH2 0x031d 0000031a: JUMP 0000031b: JUMPDEST 0000031c: PUSH0 0000031d: JUMPDEST 0000031e: SWAP1 0000031f: POP 00000320: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000335: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000034a: AND 0000034b: DUP5 0000034c: PUSH1 0x40 0000034e: MLOAD 0000034f: PUSH2 0x0357 00000352: SWAP1 00000353: PUSH2 0x1e38 00000356: JUMP 00000357: JUMPDEST 00000358: PUSH0 00000359: PUSH1 0x40 0000035b: MLOAD 0000035c: DUP1 0000035d: DUP4 0000035e: SUB 0000035f: DUP2 00000360: DUP6 00000361: DUP8 00000362: GAS 00000363: CALL 00000364: SWAP3 00000365: POP 00000366: POP 00000367: POP 00000368: RETURNDATASIZE 00000369: DUP1 0000036a: PUSH0 0000036b: DUP2 0000036c: EQ 0000036d: PUSH2 0x0391 00000370: JUMPI 00000371: PUSH1 0x40 00000373: MLOAD 00000374: SWAP2 00000375: POP 00000376: PUSH1 0x1f 00000378: NOT 00000379: PUSH1 0x3f 0000037b: RETURNDATASIZE 0000037c: ADD 0000037d: AND 0000037e: DUP3 0000037f: ADD 00000380: PUSH1 0x40 00000382: MSTORE 00000383: RETURNDATASIZE 00000384: DUP3 00000385: MSTORE 00000386: RETURNDATASIZE 00000387: PUSH0 00000388: PUSH1 0x20 0000038a: DUP5 0000038b: ADD 0000038c: RETURNDATACOPY 0000038d: PUSH2 0x0396 00000390: JUMP 00000391: JUMPDEST 00000392: PUSH1 0x60 00000394: SWAP2 00000395: POP 00000396: JUMPDEST 00000397: POP 00000398: POP 00000399: POP 0000039a: PUSH0 0000039b: PUSH20 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f 000003b0: DUP7 000003b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003c6: AND 000003c7: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 000003dc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003f1: AND 000003f2: LT 000003f3: PUSH2 0x03fc 000003f6: JUMPI 000003f7: DUP7 000003f8: PUSH2 0x0412 000003fb: JUMP 000003fc: JUMPDEST 000003fd: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000412: JUMPDEST 00000413: DUP8 00000414: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000429: AND 0000042a: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 0000043f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000454: AND 00000455: LT 00000456: PUSH2 0x0473 00000459: JUMPI 0000045a: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 0000046f: PUSH2 0x0475 00000472: JUMP 00000473: JUMPDEST 00000474: DUP8 00000475: JUMPDEST 00000476: PUSH1 0x40 00000478: MLOAD 00000479: PUSH1 0x20 0000047b: ADD 0000047c: PUSH2 0x0486 0000047f: SWAP3 00000480: SWAP2 00000481: SWAP1 00000482: PUSH2 0x1e91 00000485: JUMP 00000486: JUMPDEST 00000487: PUSH1 0x40 00000489: MLOAD 0000048a: PUSH1 0x20 0000048c: DUP2 0000048d: DUP4 0000048e: SUB 0000048f: SUB 00000490: DUP2 00000491: MSTORE 00000492: SWAP1 00000493: PUSH1 0x40 00000495: MSTORE 00000496: DUP1 00000497: MLOAD 00000498: SWAP1 00000499: PUSH1 0x20 0000049b: ADD 0000049c: KECCAK256 0000049d: PUSH1 0x40 0000049f: MLOAD 000004a0: PUSH1 0x20 000004a2: ADD 000004a3: PUSH2 0x04ad 000004a6: SWAP3 000004a7: SWAP2 000004a8: SWAP1 000004a9: PUSH2 0x1f83 000004ac: JUMP 000004ad: JUMPDEST 000004ae: PUSH1 0x40 000004b0: MLOAD 000004b1: PUSH1 0x20 000004b3: DUP2 000004b4: DUP4 000004b5: SUB 000004b6: SUB 000004b7: DUP2 000004b8: MSTORE 000004b9: SWAP1 000004ba: PUSH1 0x40 000004bc: MSTORE 000004bd: DUP1 000004be: MLOAD 000004bf: SWAP1 000004c0: PUSH1 0x20 000004c2: ADD 000004c3: KECCAK256 000004c4: PUSH0 000004c5: SHR 000004c6: SWAP1 000004c7: POP 000004c8: PUSH0 000004c9: PUSH2 0x04d3 000004cc: DUP7 000004cd: DUP4 000004ce: DUP6 000004cf: PUSH2 0x173d 000004d2: JUMP 000004d3: JUMPDEST 000004d4: SWAP1 000004d5: POP 000004d6: DUP5 000004d7: PUSH1 0x7c 000004d9: MSTORE 000004da: DUP2 000004db: PUSH1 0x80 000004dd: MSTORE 000004de: DUP6 000004df: PUSH1 0xa0 000004e1: MSTORE 000004e2: PUSH0 000004e3: DUP1 000004e4: PUSH1 0x44 000004e6: PUSH1 0x7c 000004e8: PUSH0 000004e9: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 000004fe: PUSH2 0x1388 00000501: GAS 00000502: SUB 00000503: CALL 00000504: DUP1 00000505: PUSH2 0x050c 00000508: JUMPI 00000509: PUSH0 0000050a: DUP1 0000050b: REVERT 0000050c: JUMPDEST 0000050d: DUP5 0000050e: PUSH1 0x7c 00000510: MSTORE 00000511: DUP4 00000512: PUSH0 00000513: DUP2 00000514: EQ 00000515: PUSH2 0x0525 00000518: JUMPI 00000519: PUSH1 0x01 0000051b: DUP2 0000051c: EQ 0000051d: PUSH2 0x0532 00000520: JUMPI 00000521: PUSH2 0x053b 00000524: JUMP 00000525: JUMPDEST 00000526: PUSH0 00000527: PUSH1 0x80 00000529: MSTORE 0000052a: DUP3 0000052b: PUSH1 0xa0 0000052d: MSTORE 0000052e: PUSH2 0x053b 00000531: JUMP 00000532: JUMPDEST 00000533: DUP3 00000534: PUSH1 0x80 00000536: MSTORE 00000537: PUSH0 00000538: PUSH1 0xa0 0000053a: MSTORE 0000053b: JUMPDEST 0000053c: POP 0000053d: ORIGIN 0000053e: PUSH1 0xc0 00000540: MSTORE 00000541: PUSH1 0x80 00000543: PUSH1 0xe0 00000545: MSTORE 00000546: PUSH0 00000547: PUSH2 0x0100 0000054a: MSTORE 0000054b: PUSH0 0000054c: PUSH2 0x0110 0000054f: MSTORE 00000550: PUSH0 00000551: DUP1 00000552: PUSH1 0xa4 00000554: PUSH1 0x7c 00000556: PUSH0 00000557: DUP8 00000558: PUSH2 0x1388 0000055b: GAS 0000055c: SUB 0000055d: CALL 0000055e: DUP1 0000055f: PUSH2 0x0566 00000562: JUMPI 00000563: PUSH0 00000564: DUP1 00000565: REVERT 00000566: JUMPDEST 00000567: POP 00000568: POP 00000569: POP 0000056a: POP 0000056b: POP 0000056c: POP 0000056d: POP 0000056e: POP 0000056f: POP 00000570: JUMP 00000571: JUMPDEST 00000572: PUSH0 00000573: DUP1 00000574: SLOAD 00000575: SWAP1 00000576: PUSH2 0x0100 00000579: EXP 0000057a: SWAP1 0000057b: DIV 0000057c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000591: AND 00000592: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005a7: AND 000005a8: CALLER 000005a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005be: AND 000005bf: EQ 000005c0: PUSH2 0x05fe 000005c3: JUMPI 000005c4: PUSH1 0x40 000005c6: MLOAD 000005c7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000005e8: DUP2 000005e9: MSTORE 000005ea: PUSH1 0x04 000005ec: ADD 000005ed: PUSH2 0x05f5 000005f0: SWAP1 000005f1: PUSH2 0x200e 000005f4: JUMP 000005f5: JUMPDEST 000005f6: PUSH1 0x40 000005f8: MLOAD 000005f9: DUP1 000005fa: SWAP2 000005fb: SUB 000005fc: SWAP1 000005fd: REVERT 000005fe: JUMPDEST 000005ff: PUSH0 00000600: DUP1 00000601: PUSH0 00000602: SWAP1 00000603: SLOAD 00000604: SWAP1 00000605: PUSH2 0x0100 00000608: EXP 00000609: SWAP1 0000060a: DIV 0000060b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000620: AND 00000621: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000636: AND 00000637: SELFBALANCE 00000638: PUSH1 0x40 0000063a: MLOAD 0000063b: PUSH2 0x0643 0000063e: SWAP1 0000063f: PUSH2 0x1e38 00000642: JUMP 00000643: JUMPDEST 00000644: PUSH0 00000645: PUSH1 0x40 00000647: MLOAD 00000648: DUP1 00000649: DUP4 0000064a: SUB 0000064b: DUP2 0000064c: DUP6 0000064d: DUP8 0000064e: GAS 0000064f: CALL 00000650: SWAP3 00000651: POP 00000652: POP 00000653: POP 00000654: RETURNDATASIZE 00000655: DUP1 00000656: PUSH0 00000657: DUP2 00000658: EQ 00000659: PUSH2 0x067d 0000065c: JUMPI 0000065d: PUSH1 0x40 0000065f: MLOAD 00000660: SWAP2 00000661: POP 00000662: PUSH1 0x1f 00000664: NOT 00000665: PUSH1 0x3f 00000667: RETURNDATASIZE 00000668: ADD 00000669: AND 0000066a: DUP3 0000066b: ADD 0000066c: PUSH1 0x40 0000066e: MSTORE 0000066f: RETURNDATASIZE 00000670: DUP3 00000671: MSTORE 00000672: RETURNDATASIZE 00000673: PUSH0 00000674: PUSH1 0x20 00000676: DUP5 00000677: ADD 00000678: RETURNDATACOPY 00000679: PUSH2 0x0682 0000067c: JUMP 0000067d: JUMPDEST 0000067e: PUSH1 0x60 00000680: SWAP2 00000681: POP 00000682: JUMPDEST 00000683: POP 00000684: POP 00000685: SWAP1 00000686: POP 00000687: DUP1 00000688: PUSH2 0x06c6 0000068b: JUMPI 0000068c: PUSH1 0x40 0000068e: MLOAD 0000068f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000006b0: DUP2 000006b1: MSTORE 000006b2: PUSH1 0x04 000006b4: ADD 000006b5: PUSH2 0x06bd 000006b8: SWAP1 000006b9: PUSH2 0x2076 000006bc: JUMP 000006bd: JUMPDEST 000006be: PUSH1 0x40 000006c0: MLOAD 000006c1: DUP1 000006c2: SWAP2 000006c3: SUB 000006c4: SWAP1 000006c5: REVERT 000006c6: JUMPDEST 000006c7: POP 000006c8: JUMP 000006c9: JUMPDEST 000006ca: PUSH20 0x4a836ef6c129a2c96cae42fa367c7d229c5ea802 000006df: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006f4: AND 000006f5: CALLER 000006f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000070b: AND 0000070c: EQ 0000070d: PUSH2 0x074b 00000710: JUMPI 00000711: PUSH1 0x40 00000713: MLOAD 00000714: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000735: DUP2 00000736: MSTORE 00000737: PUSH1 0x04 00000739: ADD 0000073a: PUSH2 0x0742 0000073d: SWAP1 0000073e: PUSH2 0x20de 00000741: JUMP 00000742: JUMPDEST 00000743: PUSH1 0x40 00000745: MLOAD 00000746: DUP1 00000747: SWAP2 00000748: SUB 00000749: SWAP1 0000074a: REVERT 0000074b: JUMPDEST 0000074c: DUP2 0000074d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000762: AND 00000763: PUSH4 0x095ea7b3 00000768: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d 0000077d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000079e: PUSH1 0x40 000007a0: MLOAD 000007a1: DUP4 000007a2: PUSH4 0xffffffff 000007a7: AND 000007a8: PUSH1 0xe0 000007aa: SHL 000007ab: DUP2 000007ac: MSTORE 000007ad: PUSH1 0x04 000007af: ADD 000007b0: PUSH2 0x07ba 000007b3: SWAP3 000007b4: SWAP2 000007b5: SWAP1 000007b6: PUSH2 0x213e 000007b9: JUMP 000007ba: JUMPDEST 000007bb: PUSH0 000007bc: PUSH1 0x40 000007be: MLOAD 000007bf: DUP1 000007c0: DUP4 000007c1: SUB 000007c2: DUP2 000007c3: PUSH0 000007c4: DUP8 000007c5: DUP1 000007c6: EXTCODESIZE 000007c7: ISZERO 000007c8: DUP1 000007c9: ISZERO 000007ca: PUSH2 0x07d1 000007cd: JUMPI 000007ce: PUSH0 000007cf: DUP1 000007d0: REVERT 000007d1: JUMPDEST 000007d2: POP 000007d3: GAS 000007d4: CALL 000007d5: ISZERO 000007d6: DUP1 000007d7: ISZERO 000007d8: PUSH2 0x07e3 000007db: JUMPI 000007dc: RETURNDATASIZE 000007dd: PUSH0 000007de: DUP1 000007df: RETURNDATACOPY 000007e0: RETURNDATASIZE 000007e1: PUSH0 000007e2: REVERT 000007e3: JUMPDEST 000007e4: POP 000007e5: POP 000007e6: POP 000007e7: POP 000007e8: PUSH0 000007e9: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d 000007fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000813: AND 00000814: DUP3 00000815: PUSH1 0x40 00000817: MLOAD 00000818: PUSH2 0x0821 0000081b: SWAP2 0000081c: SWAP1 0000081d: PUSH2 0x21c7 00000820: JUMP 00000821: JUMPDEST 00000822: PUSH0 00000823: PUSH1 0x40 00000825: MLOAD 00000826: DUP1 00000827: DUP4 00000828: SUB 00000829: DUP2 0000082a: PUSH0 0000082b: DUP7 0000082c: GAS 0000082d: CALL 0000082e: SWAP2 0000082f: POP 00000830: POP 00000831: RETURNDATASIZE 00000832: DUP1 00000833: PUSH0 00000834: DUP2 00000835: EQ 00000836: PUSH2 0x085a 00000839: JUMPI 0000083a: PUSH1 0x40 0000083c: MLOAD 0000083d: SWAP2 0000083e: POP 0000083f: PUSH1 0x1f 00000841: NOT 00000842: PUSH1 0x3f 00000844: RETURNDATASIZE 00000845: ADD 00000846: AND 00000847: DUP3 00000848: ADD 00000849: PUSH1 0x40 0000084b: MSTORE 0000084c: RETURNDATASIZE 0000084d: DUP3 0000084e: MSTORE 0000084f: RETURNDATASIZE 00000850: PUSH0 00000851: PUSH1 0x20 00000853: DUP5 00000854: ADD 00000855: RETURNDATACOPY 00000856: PUSH2 0x085f 00000859: JUMP 0000085a: JUMPDEST 0000085b: PUSH1 0x60 0000085d: SWAP2 0000085e: POP 0000085f: JUMPDEST 00000860: POP 00000861: POP 00000862: SWAP1 00000863: POP 00000864: DUP1 00000865: PUSH2 0x08a3 00000868: JUMPI 00000869: PUSH1 0x40 0000086b: MLOAD 0000086c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000088d: DUP2 0000088e: MSTORE 0000088f: PUSH1 0x04 00000891: ADD 00000892: PUSH2 0x089a 00000895: SWAP1 00000896: PUSH2 0x2227 00000899: JUMP 0000089a: JUMPDEST 0000089b: PUSH1 0x40 0000089d: MLOAD 0000089e: DUP1 0000089f: SWAP2 000008a0: SUB 000008a1: SWAP1 000008a2: REVERT 000008a3: JUMPDEST 000008a4: POP 000008a5: POP 000008a6: POP 000008a7: JUMP 000008a8: JUMPDEST 000008a9: PUSH1 0x01 000008ab: PUSH0 000008ac: CALLER 000008ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008c2: AND 000008c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008d8: AND 000008d9: DUP2 000008da: MSTORE 000008db: PUSH1 0x20 000008dd: ADD 000008de: SWAP1 000008df: DUP2 000008e0: MSTORE 000008e1: PUSH1 0x20 000008e3: ADD 000008e4: PUSH0 000008e5: KECCAK256 000008e6: PUSH0 000008e7: SWAP1 000008e8: SLOAD 000008e9: SWAP1 000008ea: PUSH2 0x0100 000008ed: EXP 000008ee: SWAP1 000008ef: DIV 000008f0: PUSH1 0xff 000008f2: AND 000008f3: PUSH2 0x0931 000008f6: JUMPI 000008f7: PUSH1 0x40 000008f9: MLOAD 000008fa: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000091b: DUP2 0000091c: MSTORE 0000091d: PUSH1 0x04 0000091f: ADD 00000920: PUSH2 0x0928 00000923: SWAP1 00000924: PUSH2 0x1ded 00000927: JUMP 00000928: JUMPDEST 00000929: PUSH1 0x40 0000092b: MLOAD 0000092c: DUP1 0000092d: SWAP2 0000092e: SUB 0000092f: SWAP1 00000930: REVERT 00000931: JUMPDEST 00000932: PUSH0 00000933: JUMPDEST 00000934: DUP2 00000935: MLOAD 00000936: DUP2 00000937: LT 00000938: ISZERO 00000939: PUSH2 0x09b7 0000093c: JUMPI 0000093d: PUSH0 0000093e: PUSH1 0x01 00000940: PUSH0 00000941: DUP5 00000942: DUP5 00000943: DUP2 00000944: MLOAD 00000945: DUP2 00000946: LT 00000947: PUSH2 0x0953 0000094a: JUMPI 0000094b: PUSH2 0x0952 0000094e: PUSH2 0x2245 00000951: JUMP 00000952: JUMPDEST 00000953: JUMPDEST 00000954: PUSH1 0x20 00000956: MUL 00000957: PUSH1 0x20 00000959: ADD 0000095a: ADD 0000095b: MLOAD 0000095c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000971: AND 00000972: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000987: AND 00000988: DUP2 00000989: MSTORE 0000098a: PUSH1 0x20 0000098c: ADD 0000098d: SWAP1 0000098e: DUP2 0000098f: MSTORE 00000990: PUSH1 0x20 00000992: ADD 00000993: PUSH0 00000994: KECCAK256 00000995: PUSH0 00000996: PUSH2 0x0100 00000999: EXP 0000099a: DUP2 0000099b: SLOAD 0000099c: DUP2 0000099d: PUSH1 0xff 0000099f: MUL 000009a0: NOT 000009a1: AND 000009a2: SWAP1 000009a3: DUP4 000009a4: ISZERO 000009a5: ISZERO 000009a6: MUL 000009a7: OR 000009a8: SWAP1 000009a9: SSTORE 000009aa: POP 000009ab: DUP1 000009ac: DUP1 000009ad: PUSH1 0x01 000009af: ADD 000009b0: SWAP2 000009b1: POP 000009b2: POP 000009b3: PUSH2 0x0933 000009b6: JUMP 000009b7: JUMPDEST 000009b8: POP 000009b9: POP 000009ba: JUMP 000009bb: JUMPDEST 000009bc: PUSH1 0x01 000009be: PUSH0 000009bf: CALLER 000009c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009d5: AND 000009d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009eb: AND 000009ec: DUP2 000009ed: MSTORE 000009ee: PUSH1 0x20 000009f0: ADD 000009f1: SWAP1 000009f2: DUP2 000009f3: MSTORE 000009f4: PUSH1 0x20 000009f6: ADD 000009f7: PUSH0 000009f8: KECCAK256 000009f9: PUSH0 000009fa: SWAP1 000009fb: SLOAD 000009fc: SWAP1 000009fd: PUSH2 0x0100 00000a00: EXP 00000a01: SWAP1 00000a02: DIV 00000a03: PUSH1 0xff 00000a05: AND 00000a06: PUSH2 0x0a44 00000a09: JUMPI 00000a0a: PUSH1 0x40 00000a0c: MLOAD 00000a0d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a2e: DUP2 00000a2f: MSTORE 00000a30: PUSH1 0x04 00000a32: ADD 00000a33: PUSH2 0x0a3b 00000a36: SWAP1 00000a37: PUSH2 0x1ded 00000a3a: JUMP 00000a3b: JUMPDEST 00000a3c: PUSH1 0x40 00000a3e: MLOAD 00000a3f: DUP1 00000a40: SWAP2 00000a41: SUB 00000a42: SWAP1 00000a43: REVERT 00000a44: JUMPDEST 00000a45: DUP1 00000a46: PUSH1 0x02 00000a48: PUSH0 00000a49: DUP5 00000a4a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a5f: AND 00000a60: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a75: AND 00000a76: DUP2 00000a77: MSTORE 00000a78: PUSH1 0x20 00000a7a: ADD 00000a7b: SWAP1 00000a7c: DUP2 00000a7d: MSTORE 00000a7e: PUSH1 0x20 00000a80: ADD 00000a81: PUSH0 00000a82: KECCAK256 00000a83: DUP2 00000a84: SWAP1 00000a85: SSTORE 00000a86: POP 00000a87: POP 00000a88: POP 00000a89: JUMP 00000a8a: JUMPDEST 00000a8b: PUSH0 00000a8c: DUP1 00000a8d: PUSH1 0x40 00000a8f: MLOAD 00000a90: PUSH32 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000 00000ab1: DUP2 00000ab2: MSTORE 00000ab3: ADDRESS 00000ab4: PUSH1 0x60 00000ab6: SHL 00000ab7: PUSH1 0x14 00000ab9: DUP3 00000aba: ADD 00000abb: MSTORE 00000abc: PUSH32 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000 00000add: PUSH1 0x28 00000adf: DUP3 00000ae0: ADD 00000ae1: MSTORE 00000ae2: PUSH1 0x3c 00000ae4: DUP2 00000ae5: KECCAK256 00000ae6: SWAP2 00000ae7: POP 00000ae8: POP 00000ae9: PUSH1 0xff 00000aeb: PUSH1 0xf8 00000aed: SHL 00000aee: ADDRESS 00000aef: DUP5 00000af0: DUP4 00000af1: PUSH1 0x40 00000af3: MLOAD 00000af4: PUSH1 0x20 00000af6: ADD 00000af7: PUSH2 0x0b03 00000afa: SWAP5 00000afb: SWAP4 00000afc: SWAP3 00000afd: SWAP2 00000afe: SWAP1 00000aff: PUSH2 0x22dd 00000b02: JUMP 00000b03: JUMPDEST 00000b04: PUSH1 0x40 00000b06: MLOAD 00000b07: PUSH1 0x20 00000b09: DUP2 00000b0a: DUP4 00000b0b: SUB 00000b0c: SUB 00000b0d: DUP2 00000b0e: MSTORE 00000b0f: SWAP1 00000b10: PUSH1 0x40 00000b12: MSTORE 00000b13: DUP1 00000b14: MLOAD 00000b15: SWAP1 00000b16: PUSH1 0x20 00000b18: ADD 00000b19: KECCAK256 00000b1a: PUSH0 00000b1b: SHR 00000b1c: SWAP2 00000b1d: POP 00000b1e: POP 00000b1f: SWAP2 00000b20: SWAP1 00000b21: POP 00000b22: JUMP 00000b23: JUMPDEST 00000b24: PUSH1 0x01 00000b26: PUSH0 00000b27: CALLER 00000b28: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b3d: AND 00000b3e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b53: AND 00000b54: DUP2 00000b55: MSTORE 00000b56: PUSH1 0x20 00000b58: ADD 00000b59: SWAP1 00000b5a: DUP2 00000b5b: MSTORE 00000b5c: PUSH1 0x20 00000b5e: ADD 00000b5f: PUSH0 00000b60: KECCAK256 00000b61: PUSH0 00000b62: SWAP1 00000b63: SLOAD 00000b64: SWAP1 00000b65: PUSH2 0x0100 00000b68: EXP 00000b69: SWAP1 00000b6a: DIV 00000b6b: PUSH1 0xff 00000b6d: AND 00000b6e: PUSH2 0x0bac 00000b71: JUMPI 00000b72: PUSH1 0x40 00000b74: MLOAD 00000b75: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000b96: DUP2 00000b97: MSTORE 00000b98: PUSH1 0x04 00000b9a: ADD 00000b9b: PUSH2 0x0ba3 00000b9e: SWAP1 00000b9f: PUSH2 0x1ded 00000ba2: JUMP 00000ba3: JUMPDEST 00000ba4: PUSH1 0x40 00000ba6: MLOAD 00000ba7: DUP1 00000ba8: SWAP2 00000ba9: SUB 00000baa: SWAP1 00000bab: REVERT 00000bac: JUMPDEST 00000bad: PUSH0 00000bae: JUMPDEST 00000baf: DUP2 00000bb0: MLOAD 00000bb1: DUP2 00000bb2: LT 00000bb3: ISZERO 00000bb4: PUSH2 0x0c32 00000bb7: JUMPI 00000bb8: PUSH1 0x01 00000bba: DUP1 00000bbb: PUSH0 00000bbc: DUP5 00000bbd: DUP5 00000bbe: DUP2 00000bbf: MLOAD 00000bc0: DUP2 00000bc1: LT 00000bc2: PUSH2 0x0bce 00000bc5: JUMPI 00000bc6: PUSH2 0x0bcd 00000bc9: PUSH2 0x2245 00000bcc: JUMP 00000bcd: JUMPDEST 00000bce: JUMPDEST 00000bcf: PUSH1 0x20 00000bd1: MUL 00000bd2: PUSH1 0x20 00000bd4: ADD 00000bd5: ADD 00000bd6: MLOAD 00000bd7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bec: AND 00000bed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c02: AND 00000c03: DUP2 00000c04: MSTORE 00000c05: PUSH1 0x20 00000c07: ADD 00000c08: SWAP1 00000c09: DUP2 00000c0a: MSTORE 00000c0b: PUSH1 0x20 00000c0d: ADD 00000c0e: PUSH0 00000c0f: KECCAK256 00000c10: PUSH0 00000c11: PUSH2 0x0100 00000c14: EXP 00000c15: DUP2 00000c16: SLOAD 00000c17: DUP2 00000c18: PUSH1 0xff 00000c1a: MUL 00000c1b: NOT 00000c1c: AND 00000c1d: SWAP1 00000c1e: DUP4 00000c1f: ISZERO 00000c20: ISZERO 00000c21: MUL 00000c22: OR 00000c23: SWAP1 00000c24: SSTORE 00000c25: POP 00000c26: DUP1 00000c27: DUP1 00000c28: PUSH1 0x01 00000c2a: ADD 00000c2b: SWAP2 00000c2c: POP 00000c2d: POP 00000c2e: PUSH2 0x0bae 00000c31: JUMP 00000c32: JUMPDEST 00000c33: POP 00000c34: POP 00000c35: JUMP 00000c36: JUMPDEST 00000c37: PUSH1 0x01 00000c39: PUSH0 00000c3a: CALLER 00000c3b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c50: AND 00000c51: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c66: AND 00000c67: DUP2 00000c68: MSTORE 00000c69: PUSH1 0x20 00000c6b: ADD 00000c6c: SWAP1 00000c6d: DUP2 00000c6e: MSTORE 00000c6f: PUSH1 0x20 00000c71: ADD 00000c72: PUSH0 00000c73: KECCAK256 00000c74: PUSH0 00000c75: SWAP1 00000c76: SLOAD 00000c77: SWAP1 00000c78: PUSH2 0x0100 00000c7b: EXP 00000c7c: SWAP1 00000c7d: DIV 00000c7e: PUSH1 0xff 00000c80: AND 00000c81: PUSH2 0x0cbf 00000c84: JUMPI 00000c85: PUSH1 0x40 00000c87: MLOAD 00000c88: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ca9: DUP2 00000caa: MSTORE 00000cab: PUSH1 0x04 00000cad: ADD 00000cae: PUSH2 0x0cb6 00000cb1: SWAP1 00000cb2: PUSH2 0x1ded 00000cb5: JUMP 00000cb6: JUMPDEST 00000cb7: PUSH1 0x40 00000cb9: MLOAD 00000cba: DUP1 00000cbb: SWAP2 00000cbc: SUB 00000cbd: SWAP1 00000cbe: REVERT 00000cbf: JUMPDEST 00000cc0: PUSH0 00000cc1: PUSH1 0x02 00000cc3: PUSH8 0xffffffffffffffff 00000ccc: DUP2 00000ccd: GT 00000cce: ISZERO 00000ccf: PUSH2 0x0cdb 00000cd2: JUMPI 00000cd3: PUSH2 0x0cda 00000cd6: PUSH2 0x19af 00000cd9: JUMP 00000cda: JUMPDEST 00000cdb: JUMPDEST 00000cdc: PUSH1 0x40 00000cde: MLOAD 00000cdf: SWAP1 00000ce0: DUP1 00000ce1: DUP3 00000ce2: MSTORE 00000ce3: DUP1 00000ce4: PUSH1 0x20 00000ce6: MUL 00000ce7: PUSH1 0x20 00000ce9: ADD 00000cea: DUP3 00000ceb: ADD 00000cec: PUSH1 0x40 00000cee: MSTORE 00000cef: DUP1 00000cf0: ISZERO 00000cf1: PUSH2 0x0d09 00000cf4: JUMPI 00000cf5: DUP2 00000cf6: PUSH1 0x20 00000cf8: ADD 00000cf9: PUSH1 0x20 00000cfb: DUP3 00000cfc: MUL 00000cfd: DUP1 00000cfe: CALLDATASIZE 00000cff: DUP4 00000d00: CALLDATACOPY 00000d01: DUP1 00000d02: DUP3 00000d03: ADD 00000d04: SWAP2 00000d05: POP 00000d06: POP 00000d07: SWAP1 00000d08: POP 00000d09: JUMPDEST 00000d0a: POP 00000d0b: SWAP1 00000d0c: POP 00000d0d: PUSH0 00000d0e: PUSH20 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f 00000d23: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d38: AND 00000d39: PUSH4 0xe6a43905 00000d3e: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000d53: DUP9 00000d54: PUSH1 0x40 00000d56: MLOAD 00000d57: DUP4 00000d58: PUSH4 0xffffffff 00000d5d: AND 00000d5e: PUSH1 0xe0 00000d60: SHL 00000d61: DUP2 00000d62: MSTORE 00000d63: PUSH1 0x04 00000d65: ADD 00000d66: PUSH2 0x0d70 00000d69: SWAP3 00000d6a: SWAP2 00000d6b: SWAP1 00000d6c: PUSH2 0x232a 00000d6f: JUMP 00000d70: JUMPDEST 00000d71: PUSH1 0x20 00000d73: PUSH1 0x40 00000d75: MLOAD 00000d76: DUP1 00000d77: DUP4 00000d78: SUB 00000d79: DUP2 00000d7a: DUP7 00000d7b: GAS 00000d7c: STATICCALL 00000d7d: ISZERO 00000d7e: DUP1 00000d7f: ISZERO 00000d80: PUSH2 0x0d8b 00000d83: JUMPI 00000d84: RETURNDATASIZE 00000d85: PUSH0 00000d86: DUP1 00000d87: RETURNDATACOPY 00000d88: RETURNDATASIZE 00000d89: PUSH0 00000d8a: REVERT 00000d8b: JUMPDEST 00000d8c: POP 00000d8d: POP 00000d8e: POP 00000d8f: POP 00000d90: PUSH1 0x40 00000d92: MLOAD 00000d93: RETURNDATASIZE 00000d94: PUSH1 0x1f 00000d96: NOT 00000d97: PUSH1 0x1f 00000d99: DUP3 00000d9a: ADD 00000d9b: AND 00000d9c: DUP3 00000d9d: ADD 00000d9e: DUP1 00000d9f: PUSH1 0x40 00000da1: MSTORE 00000da2: POP 00000da3: DUP2 00000da4: ADD 00000da5: SWAP1 00000da6: PUSH2 0x0daf 00000da9: SWAP2 00000daa: SWAP1 00000dab: PUSH2 0x2365 00000dae: JUMP 00000daf: JUMPDEST 00000db0: SWAP1 00000db1: POP 00000db2: PUSH0 00000db3: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000dc8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ddd: AND 00000dde: PUSH4 0x70a08231 00000de3: DUP4 00000de4: PUSH1 0x40 00000de6: MLOAD 00000de7: DUP3 00000de8: PUSH4 0xffffffff 00000ded: AND 00000dee: PUSH1 0xe0 00000df0: SHL 00000df1: DUP2 00000df2: MSTORE 00000df3: PUSH1 0x04 00000df5: ADD 00000df6: PUSH2 0x0dff 00000df9: SWAP2 00000dfa: SWAP1 00000dfb: PUSH2 0x1c72 00000dfe: JUMP 00000dff: JUMPDEST 00000e00: PUSH1 0x20 00000e02: PUSH1 0x40 00000e04: MLOAD 00000e05: DUP1 00000e06: DUP4 00000e07: SUB 00000e08: DUP2 00000e09: DUP7 00000e0a: GAS 00000e0b: STATICCALL 00000e0c: ISZERO 00000e0d: DUP1 00000e0e: ISZERO 00000e0f: PUSH2 0x0e1a 00000e12: JUMPI 00000e13: RETURNDATASIZE 00000e14: PUSH0 00000e15: DUP1 00000e16: RETURNDATACOPY 00000e17: RETURNDATASIZE 00000e18: PUSH0 00000e19: REVERT 00000e1a: JUMPDEST 00000e1b: POP 00000e1c: POP 00000e1d: POP 00000e1e: POP 00000e1f: PUSH1 0x40 00000e21: MLOAD 00000e22: RETURNDATASIZE 00000e23: PUSH1 0x1f 00000e25: NOT 00000e26: PUSH1 0x1f 00000e28: DUP3 00000e29: ADD 00000e2a: AND 00000e2b: DUP3 00000e2c: ADD 00000e2d: DUP1 00000e2e: PUSH1 0x40 00000e30: MSTORE 00000e31: POP 00000e32: DUP2 00000e33: ADD 00000e34: SWAP1 00000e35: PUSH2 0x0e3e 00000e38: SWAP2 00000e39: SWAP1 00000e3a: PUSH2 0x23a4 00000e3d: JUMP 00000e3e: JUMPDEST 00000e3f: SWAP1 00000e40: POP 00000e41: PUSH0 00000e42: JUMPDEST 00000e43: DUP6 00000e44: DUP2 00000e45: LT 00000e46: ISZERO 00000e47: PUSH2 0x120e 00000e4a: JUMPI 00000e4b: PUSH0 00000e4c: PUSH2 0x0e9c 00000e4f: DUP3 00000e50: PUSH1 0x02 00000e52: PUSH0 00000e53: DUP13 00000e54: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e69: AND 00000e6a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e7f: AND 00000e80: DUP2 00000e81: MSTORE 00000e82: PUSH1 0x20 00000e84: ADD 00000e85: SWAP1 00000e86: DUP2 00000e87: MSTORE 00000e88: PUSH1 0x20 00000e8a: ADD 00000e8b: PUSH0 00000e8c: KECCAK256 00000e8d: SLOAD 00000e8e: PUSH2 0x0e97 00000e91: SWAP2 00000e92: SWAP1 00000e93: PUSH2 0x23fc 00000e96: JUMP 00000e97: JUMPDEST 00000e98: PUSH2 0x0a8a 00000e9b: JUMP 00000e9c: JUMPDEST 00000e9d: SWAP1 00000e9e: POP 00000e9f: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00000eb4: DUP6 00000eb5: PUSH0 00000eb6: DUP2 00000eb7: MLOAD 00000eb8: DUP2 00000eb9: LT 00000eba: PUSH2 0x0ec6 00000ebd: JUMPI 00000ebe: PUSH2 0x0ec5 00000ec1: PUSH2 0x2245 00000ec4: JUMP 00000ec5: JUMPDEST 00000ec6: JUMPDEST 00000ec7: PUSH1 0x20 00000ec9: MUL 00000eca: PUSH1 0x20 00000ecc: ADD 00000ecd: ADD 00000ece: SWAP1 00000ecf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ee4: AND 00000ee5: SWAP1 00000ee6: DUP2 00000ee7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000efc: AND 00000efd: DUP2 00000efe: MSTORE 00000eff: POP 00000f00: POP 00000f01: DUP9 00000f02: DUP6 00000f03: PUSH1 0x01 00000f05: DUP2 00000f06: MLOAD 00000f07: DUP2 00000f08: LT 00000f09: PUSH2 0x0f15 00000f0c: JUMPI 00000f0d: PUSH2 0x0f14 00000f10: PUSH2 0x2245 00000f13: JUMP 00000f14: JUMPDEST 00000f15: JUMPDEST 00000f16: PUSH1 0x20 00000f18: MUL 00000f19: PUSH1 0x20 00000f1b: ADD 00000f1c: ADD 00000f1d: SWAP1 00000f1e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f33: AND 00000f34: SWAP1 00000f35: DUP2 00000f36: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f4b: AND 00000f4c: DUP2 00000f4d: MSTORE 00000f4e: POP 00000f4f: POP 00000f50: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d 00000f65: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f7a: AND 00000f7b: PUSH4 0xfb3bdb41 00000f80: SELFBALANCE 00000f81: DUP11 00000f82: DUP9 00000f83: DUP6 00000f84: TIMESTAMP 00000f85: PUSH1 0x40 00000f87: MLOAD 00000f88: DUP7 00000f89: PUSH4 0xffffffff 00000f8e: AND 00000f8f: PUSH1 0xe0 00000f91: SHL 00000f92: DUP2 00000f93: MSTORE 00000f94: PUSH1 0x04 00000f96: ADD 00000f97: PUSH2 0x0fa3 00000f9a: SWAP5 00000f9b: SWAP4 00000f9c: SWAP3 00000f9d: SWAP2 00000f9e: SWAP1 00000f9f: PUSH2 0x24f5 00000fa2: JUMP 00000fa3: JUMPDEST 00000fa4: PUSH0 00000fa5: PUSH1 0x40 00000fa7: MLOAD 00000fa8: DUP1 00000fa9: DUP4 00000faa: SUB 00000fab: DUP2 00000fac: DUP6 00000fad: DUP9 00000fae: DUP1 00000faf: EXTCODESIZE 00000fb0: ISZERO 00000fb1: DUP1 00000fb2: ISZERO 00000fb3: PUSH2 0x0fba 00000fb6: JUMPI 00000fb7: PUSH0 00000fb8: DUP1 00000fb9: REVERT 00000fba: JUMPDEST 00000fbb: POP 00000fbc: GAS 00000fbd: CALL 00000fbe: ISZERO 00000fbf: DUP1 00000fc0: ISZERO 00000fc1: PUSH2 0x0fcc 00000fc4: JUMPI 00000fc5: RETURNDATASIZE 00000fc6: PUSH0 00000fc7: DUP1 00000fc8: RETURNDATACOPY 00000fc9: RETURNDATASIZE 00000fca: PUSH0 00000fcb: REVERT 00000fcc: JUMPDEST 00000fcd: POP 00000fce: POP 00000fcf: POP 00000fd0: POP 00000fd1: POP 00000fd2: PUSH0 00000fd3: DUP10 00000fd4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fe9: AND 00000fea: PUSH4 0x70a08231 00000fef: DUP4 00000ff0: PUSH1 0x40 00000ff2: MLOAD 00000ff3: DUP3 00000ff4: PUSH4 0xffffffff 00000ff9: AND 00000ffa: PUSH1 0xe0 00000ffc: SHL 00000ffd: DUP2 00000ffe: MSTORE 00000fff: PUSH1 0x04 00001001: ADD 00001002: PUSH2 0x100b 00001005: SWAP2 00001006: SWAP1 00001007: PUSH2 0x1c72 0000100a: JUMP 0000100b: JUMPDEST 0000100c: PUSH1 0x20 0000100e: PUSH1 0x40 00001010: MLOAD 00001011: DUP1 00001012: DUP4 00001013: SUB 00001014: DUP2 00001015: DUP7 00001016: GAS 00001017: STATICCALL 00001018: ISZERO 00001019: DUP1 0000101a: ISZERO 0000101b: PUSH2 0x1026 0000101e: JUMPI 0000101f: RETURNDATASIZE 00001020: PUSH0 00001021: DUP1 00001022: RETURNDATACOPY 00001023: RETURNDATASIZE 00001024: PUSH0 00001025: REVERT 00001026: JUMPDEST 00001027: POP 00001028: POP 00001029: POP 0000102a: POP 0000102b: PUSH1 0x40 0000102d: MLOAD 0000102e: RETURNDATASIZE 0000102f: PUSH1 0x1f 00001031: NOT 00001032: PUSH1 0x1f 00001034: DUP3 00001035: ADD 00001036: AND 00001037: DUP3 00001038: ADD 00001039: DUP1 0000103a: PUSH1 0x40 0000103c: MSTORE 0000103d: POP 0000103e: DUP2 0000103f: ADD 00001040: SWAP1 00001041: PUSH2 0x104a 00001044: SWAP2 00001045: SWAP1 00001046: PUSH2 0x23a4 00001049: JUMP 0000104a: JUMPDEST 0000104b: SWAP1 0000104c: POP 0000104d: DUP10 0000104e: DUP7 0000104f: PUSH0 00001050: DUP2 00001051: MLOAD 00001052: DUP2 00001053: LT 00001054: PUSH2 0x1060 00001057: JUMPI 00001058: PUSH2 0x105f 0000105b: PUSH2 0x2245 0000105e: JUMP 0000105f: JUMPDEST 00001060: JUMPDEST 00001061: PUSH1 0x20 00001063: MUL 00001064: PUSH1 0x20 00001066: ADD 00001067: ADD 00001068: SWAP1 00001069: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000107e: AND 0000107f: SWAP1 00001080: DUP2 00001081: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001096: AND 00001097: DUP2 00001098: MSTORE 00001099: POP 0000109a: POP 0000109b: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 000010b0: DUP7 000010b1: PUSH1 0x01 000010b3: DUP2 000010b4: MLOAD 000010b5: DUP2 000010b6: LT 000010b7: PUSH2 0x10c3 000010ba: JUMPI 000010bb: PUSH2 0x10c2 000010be: PUSH2 0x2245 000010c1: JUMP 000010c2: JUMPDEST 000010c3: JUMPDEST 000010c4: PUSH1 0x20 000010c6: MUL 000010c7: PUSH1 0x20 000010c9: ADD 000010ca: ADD 000010cb: SWAP1 000010cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010e1: AND 000010e2: SWAP1 000010e3: DUP2 000010e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010f9: AND 000010fa: DUP2 000010fb: MSTORE 000010fc: POP 000010fd: POP 000010fe: PUSH0 000010ff: DUP2 00001100: PUSH0 00001101: DUP9 00001102: ADDRESS 00001103: TIMESTAMP 00001104: PUSH1 0x40 00001106: MLOAD 00001107: PUSH1 0x24 00001109: ADD 0000110a: PUSH2 0x1117 0000110d: SWAP6 0000110e: SWAP5 0000110f: SWAP4 00001110: SWAP3 00001111: SWAP2 00001112: SWAP1 00001113: PUSH2 0x2584 00001116: JUMP 00001117: JUMPDEST 00001118: PUSH1 0x40 0000111a: MLOAD 0000111b: PUSH1 0x20 0000111d: DUP2 0000111e: DUP4 0000111f: SUB 00001120: SUB 00001121: DUP2 00001122: MSTORE 00001123: SWAP1 00001124: PUSH1 0x40 00001126: MSTORE 00001127: PUSH32 0x791ac94700000000000000000000000000000000000000000000000000000000 00001148: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001165: NOT 00001166: AND 00001167: PUSH1 0x20 00001169: DUP3 0000116a: ADD 0000116b: DUP1 0000116c: MLOAD 0000116d: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000118a: DUP4 0000118b: DUP2 0000118c: DUP4 0000118d: AND 0000118e: OR 0000118f: DUP4 00001190: MSTORE 00001191: POP 00001192: POP 00001193: POP 00001194: POP 00001195: SWAP1 00001196: POP 00001197: DUP3 00001198: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011ad: AND 000011ae: PUSH4 0x2a31f6b4 000011b3: DUP13 000011b4: DUP4 000011b5: PUSH1 0x40 000011b7: MLOAD 000011b8: DUP4 000011b9: PUSH4 0xffffffff 000011be: AND 000011bf: PUSH1 0xe0 000011c1: SHL 000011c2: DUP2 000011c3: MSTORE 000011c4: PUSH1 0x04 000011c6: ADD 000011c7: PUSH2 0x11d1 000011ca: SWAP3 000011cb: SWAP2 000011cc: SWAP1 000011cd: PUSH2 0x2624 000011d0: JUMP 000011d1: JUMPDEST 000011d2: PUSH0 000011d3: PUSH1 0x40 000011d5: MLOAD 000011d6: DUP1 000011d7: DUP4 000011d8: SUB 000011d9: DUP2 000011da: PUSH0 000011db: DUP8 000011dc: DUP1 000011dd: EXTCODESIZE 000011de: ISZERO 000011df: DUP1 000011e0: ISZERO 000011e1: PUSH2 0x11e8 000011e4: JUMPI 000011e5: PUSH0 000011e6: DUP1 000011e7: REVERT 000011e8: JUMPDEST 000011e9: POP 000011ea: GAS 000011eb: CALL 000011ec: ISZERO 000011ed: DUP1 000011ee: ISZERO 000011ef: PUSH2 0x11fa 000011f2: JUMPI 000011f3: RETURNDATASIZE 000011f4: PUSH0 000011f5: DUP1 000011f6: RETURNDATACOPY 000011f7: RETURNDATASIZE 000011f8: PUSH0 000011f9: REVERT 000011fa: JUMPDEST 000011fb: POP 000011fc: POP 000011fd: POP 000011fe: POP 000011ff: POP 00001200: POP 00001201: POP 00001202: DUP1 00001203: DUP1 00001204: PUSH1 0x01 00001206: ADD 00001207: SWAP2 00001208: POP 00001209: POP 0000120a: PUSH2 0x0e42 0000120d: JUMP 0000120e: JUMPDEST 0000120f: DUP1 00001210: PUSH1 0x02 00001212: PUSH0 00001213: DUP11 00001214: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001229: AND 0000122a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000123f: AND 00001240: DUP2 00001241: MSTORE 00001242: PUSH1 0x20 00001244: ADD 00001245: SWAP1 00001246: DUP2 00001247: MSTORE 00001248: PUSH1 0x20 0000124a: ADD 0000124b: PUSH0 0000124c: KECCAK256 0000124d: PUSH0 0000124e: DUP3 0000124f: DUP3 00001250: SLOAD 00001251: PUSH2 0x125a 00001254: SWAP2 00001255: SWAP1 00001256: PUSH2 0x23fc 00001259: JUMP 0000125a: JUMPDEST 0000125b: SWAP3 0000125c: POP 0000125d: POP 0000125e: DUP2 0000125f: SWAP1 00001260: SSTORE 00001261: POP 00001262: PUSH0 00001263: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00001278: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000128d: AND 0000128e: PUSH4 0x70a08231 00001293: DUP6 00001294: PUSH1 0x40 00001296: MLOAD 00001297: DUP3 00001298: PUSH4 0xffffffff 0000129d: AND 0000129e: PUSH1 0xe0 000012a0: SHL 000012a1: DUP2 000012a2: MSTORE 000012a3: PUSH1 0x04 000012a5: ADD 000012a6: PUSH2 0x12af 000012a9: SWAP2 000012aa: SWAP1 000012ab: PUSH2 0x1c72 000012ae: JUMP 000012af: JUMPDEST 000012b0: PUSH1 0x20 000012b2: PUSH1 0x40 000012b4: MLOAD 000012b5: DUP1 000012b6: DUP4 000012b7: SUB 000012b8: DUP2 000012b9: DUP7 000012ba: GAS 000012bb: STATICCALL 000012bc: ISZERO 000012bd: DUP1 000012be: ISZERO 000012bf: PUSH2 0x12ca 000012c2: JUMPI 000012c3: RETURNDATASIZE 000012c4: PUSH0 000012c5: DUP1 000012c6: RETURNDATACOPY 000012c7: RETURNDATASIZE 000012c8: PUSH0 000012c9: REVERT 000012ca: JUMPDEST 000012cb: POP 000012cc: POP 000012cd: POP 000012ce: POP 000012cf: PUSH1 0x40 000012d1: MLOAD 000012d2: RETURNDATASIZE 000012d3: PUSH1 0x1f 000012d5: NOT 000012d6: PUSH1 0x1f 000012d8: DUP3 000012d9: ADD 000012da: AND 000012db: DUP3 000012dc: ADD 000012dd: DUP1 000012de: PUSH1 0x40 000012e0: MSTORE 000012e1: POP 000012e2: DUP2 000012e3: ADD 000012e4: SWAP1 000012e5: PUSH2 0x12ee 000012e8: SWAP2 000012e9: SWAP1 000012ea: PUSH2 0x23a4 000012ed: JUMP 000012ee: JUMPDEST 000012ef: SWAP1 000012f0: POP 000012f1: DUP3 000012f2: DUP2 000012f3: LT 000012f4: PUSH2 0x1332 000012f7: JUMPI 000012f8: PUSH1 0x40 000012fa: MLOAD 000012fb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000131c: DUP2 0000131d: MSTORE 0000131e: PUSH1 0x04 00001320: ADD 00001321: PUSH2 0x1329 00001324: SWAP1 00001325: PUSH2 0x269c 00001328: JUMP 00001329: JUMPDEST 0000132a: PUSH1 0x40 0000132c: MLOAD 0000132d: DUP1 0000132e: SWAP2 0000132f: SUB 00001330: SWAP1 00001331: REVERT 00001332: JUMPDEST 00001333: DUP1 00001334: DUP4 00001335: PUSH2 0x133e 00001338: SWAP2 00001339: SWAP1 0000133a: PUSH2 0x26ba 0000133d: JUMP 0000133e: JUMPDEST 0000133f: DUP7 00001340: LT 00001341: PUSH2 0x137f 00001344: JUMPI 00001345: PUSH1 0x40 00001347: MLOAD 00001348: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001369: DUP2 0000136a: MSTORE 0000136b: PUSH1 0x04 0000136d: ADD 0000136e: PUSH2 0x1376 00001371: SWAP1 00001372: PUSH2 0x275d 00001375: JUMP 00001376: JUMPDEST 00001377: PUSH1 0x40 00001379: MLOAD 0000137a: DUP1 0000137b: SWAP2 0000137c: SUB 0000137d: SWAP1 0000137e: REVERT 0000137f: JUMPDEST 00001380: POP 00001381: POP 00001382: POP 00001383: POP 00001384: POP 00001385: POP 00001386: POP 00001387: POP 00001388: POP 00001389: JUMP 0000138a: JUMPDEST 0000138b: PUSH1 0x01 0000138d: PUSH0 0000138e: CALLER 0000138f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013a4: AND 000013a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013ba: AND 000013bb: DUP2 000013bc: MSTORE 000013bd: PUSH1 0x20 000013bf: ADD 000013c0: SWAP1 000013c1: DUP2 000013c2: MSTORE 000013c3: PUSH1 0x20 000013c5: ADD 000013c6: PUSH0 000013c7: KECCAK256 000013c8: PUSH0 000013c9: SWAP1 000013ca: SLOAD 000013cb: SWAP1 000013cc: PUSH2 0x0100 000013cf: EXP 000013d0: SWAP1 000013d1: DIV 000013d2: PUSH1 0xff 000013d4: AND 000013d5: PUSH2 0x1413 000013d8: JUMPI 000013d9: PUSH1 0x40 000013db: MLOAD 000013dc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000013fd: DUP2 000013fe: MSTORE 000013ff: PUSH1 0x04 00001401: ADD 00001402: PUSH2 0x140a 00001405: SWAP1 00001406: PUSH2 0x1ded 00001409: JUMP 0000140a: JUMPDEST 0000140b: PUSH1 0x40 0000140d: MLOAD 0000140e: DUP1 0000140f: SWAP2 00001410: SUB 00001411: SWAP1 00001412: REVERT 00001413: JUMPDEST 00001414: PUSH0 00001415: PUSH1 0x02 00001417: PUSH8 0xffffffffffffffff 00001420: DUP2 00001421: GT 00001422: ISZERO 00001423: PUSH2 0x142f 00001426: JUMPI 00001427: PUSH2 0x142e 0000142a: PUSH2 0x19af 0000142d: JUMP 0000142e: JUMPDEST 0000142f: JUMPDEST 00001430: PUSH1 0x40 00001432: MLOAD 00001433: SWAP1 00001434: DUP1 00001435: DUP3 00001436: MSTORE 00001437: DUP1 00001438: PUSH1 0x20 0000143a: MUL 0000143b: PUSH1 0x20 0000143d: ADD 0000143e: DUP3 0000143f: ADD 00001440: PUSH1 0x40 00001442: MSTORE 00001443: DUP1 00001444: ISZERO 00001445: PUSH2 0x145d 00001448: JUMPI 00001449: DUP2 0000144a: PUSH1 0x20 0000144c: ADD 0000144d: PUSH1 0x20 0000144f: DUP3 00001450: MUL 00001451: DUP1 00001452: CALLDATASIZE 00001453: DUP4 00001454: CALLDATACOPY 00001455: DUP1 00001456: DUP3 00001457: ADD 00001458: SWAP2 00001459: POP 0000145a: POP 0000145b: SWAP1 0000145c: POP 0000145d: JUMPDEST 0000145e: POP 0000145f: SWAP1 00001460: POP 00001461: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 00001476: DUP2 00001477: PUSH0 00001478: DUP2 00001479: MLOAD 0000147a: DUP2 0000147b: LT 0000147c: PUSH2 0x1488 0000147f: JUMPI 00001480: PUSH2 0x1487 00001483: PUSH2 0x2245 00001486: JUMP 00001487: JUMPDEST 00001488: JUMPDEST 00001489: PUSH1 0x20 0000148b: MUL 0000148c: PUSH1 0x20 0000148e: ADD 0000148f: ADD 00001490: SWAP1 00001491: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014a6: AND 000014a7: SWAP1 000014a8: DUP2 000014a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014be: AND 000014bf: DUP2 000014c0: MSTORE 000014c1: POP 000014c2: POP 000014c3: DUP3 000014c4: DUP2 000014c5: PUSH1 0x01 000014c7: DUP2 000014c8: MLOAD 000014c9: DUP2 000014ca: LT 000014cb: PUSH2 0x14d7 000014ce: JUMPI 000014cf: PUSH2 0x14d6 000014d2: PUSH2 0x2245 000014d5: JUMP 000014d6: JUMPDEST 000014d7: JUMPDEST 000014d8: PUSH1 0x20 000014da: MUL 000014db: PUSH1 0x20 000014dd: ADD 000014de: ADD 000014df: SWAP1 000014e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014f5: AND 000014f6: SWAP1 000014f7: DUP2 000014f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000150d: AND 0000150e: DUP2 0000150f: MSTORE 00001510: POP 00001511: POP 00001512: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d 00001527: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000153c: AND 0000153d: PUSH4 0xfb3bdb41 00001542: SELFBALANCE 00001543: DUP5 00001544: DUP5 00001545: ORIGIN 00001546: TIMESTAMP 00001547: PUSH1 0x40 00001549: MLOAD 0000154a: DUP7 0000154b: PUSH4 0xffffffff 00001550: AND 00001551: PUSH1 0xe0 00001553: SHL 00001554: DUP2 00001555: MSTORE 00001556: PUSH1 0x04 00001558: ADD 00001559: PUSH2 0x1565 0000155c: SWAP5 0000155d: SWAP4 0000155e: SWAP3 0000155f: SWAP2 00001560: SWAP1 00001561: PUSH2 0x24f5 00001564: JUMP 00001565: JUMPDEST 00001566: PUSH0 00001567: PUSH1 0x40 00001569: MLOAD 0000156a: DUP1 0000156b: DUP4 0000156c: SUB 0000156d: DUP2 0000156e: DUP6 0000156f: DUP9 00001570: DUP1 00001571: EXTCODESIZE 00001572: ISZERO 00001573: DUP1 00001574: ISZERO 00001575: PUSH2 0x157c 00001578: JUMPI 00001579: PUSH0 0000157a: DUP1 0000157b: REVERT 0000157c: JUMPDEST 0000157d: POP 0000157e: GAS 0000157f: CALL 00001580: ISZERO 00001581: DUP1 00001582: ISZERO 00001583: PUSH2 0x158e 00001586: JUMPI 00001587: RETURNDATASIZE 00001588: PUSH0 00001589: DUP1 0000158a: RETURNDATACOPY 0000158b: RETURNDATASIZE 0000158c: PUSH0 0000158d: REVERT 0000158e: JUMPDEST 0000158f: POP 00001590: POP 00001591: POP 00001592: POP 00001593: POP 00001594: POP 00001595: POP 00001596: POP 00001597: JUMP 00001598: JUMPDEST 00001599: PUSH0 0000159a: DUP1 0000159b: SLOAD 0000159c: SWAP1 0000159d: PUSH2 0x0100 000015a0: EXP 000015a1: SWAP1 000015a2: DIV 000015a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015b8: AND 000015b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015ce: AND 000015cf: CALLER 000015d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015e5: AND 000015e6: EQ 000015e7: PUSH2 0x1625 000015ea: JUMPI 000015eb: PUSH1 0x40 000015ed: MLOAD 000015ee: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000160f: DUP2 00001610: MSTORE 00001611: PUSH1 0x04 00001613: ADD 00001614: PUSH2 0x161c 00001617: SWAP1 00001618: PUSH2 0x200e 0000161b: JUMP 0000161c: JUMPDEST 0000161d: PUSH1 0x40 0000161f: MLOAD 00001620: DUP1 00001621: SWAP2 00001622: SUB 00001623: SWAP1 00001624: REVERT 00001625: JUMPDEST 00001626: DUP1 00001627: PUSH0 00001628: DUP1 00001629: PUSH2 0x0100 0000162c: EXP 0000162d: DUP2 0000162e: SLOAD 0000162f: DUP2 00001630: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001645: MUL 00001646: NOT 00001647: AND 00001648: SWAP1 00001649: DUP4 0000164a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000165f: AND 00001660: MUL 00001661: OR 00001662: SWAP1 00001663: SSTORE 00001664: POP 00001665: POP 00001666: JUMP 00001667: JUMPDEST 00001668: PUSH1 0x01 0000166a: PUSH0 0000166b: CALLER 0000166c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001681: AND 00001682: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001697: AND 00001698: DUP2 00001699: MSTORE 0000169a: PUSH1 0x20 0000169c: ADD 0000169d: SWAP1 0000169e: DUP2 0000169f: MSTORE 000016a0: PUSH1 0x20 000016a2: ADD 000016a3: PUSH0 000016a4: KECCAK256 000016a5: PUSH0 000016a6: SWAP1 000016a7: SLOAD 000016a8: SWAP1 000016a9: PUSH2 0x0100 000016ac: EXP 000016ad: SWAP1 000016ae: DIV 000016af: PUSH1 0xff 000016b1: AND 000016b2: PUSH2 0x16f0 000016b5: JUMPI 000016b6: PUSH1 0x40 000016b8: MLOAD 000016b9: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000016da: DUP2 000016db: MSTORE 000016dc: PUSH1 0x04 000016de: ADD 000016df: PUSH2 0x16e7 000016e2: SWAP1 000016e3: PUSH2 0x1ded 000016e6: JUMP 000016e7: JUMPDEST 000016e8: PUSH1 0x40 000016ea: MLOAD 000016eb: DUP1 000016ec: SWAP2 000016ed: SUB 000016ee: SWAP1 000016ef: REVERT 000016f0: JUMPDEST 000016f1: PUSH0 000016f2: PUSH1 0x03 000016f4: SLOAD 000016f5: SWAP1 000016f6: POP 000016f7: JUMPDEST 000016f8: DUP2 000016f9: PUSH1 0x03 000016fb: SLOAD 000016fc: PUSH2 0x1705 000016ff: SWAP2 00001700: SWAP1 00001701: PUSH2 0x23fc 00001704: JUMP 00001705: JUMPDEST 00001706: DUP2 00001707: LT 00001708: ISZERO 00001709: PUSH2 0x1721 0000170c: JUMPI 0000170d: PUSH2 0x1715 00001710: DUP2 00001711: PUSH2 0x1852 00001714: JUMP 00001715: JUMPDEST 00001716: POP 00001717: DUP1 00001718: PUSH1 0x01 0000171a: ADD 0000171b: SWAP1 0000171c: POP 0000171d: PUSH2 0x16f7 00001720: JUMP 00001721: JUMPDEST 00001722: POP 00001723: DUP1 00001724: PUSH1 0x03 00001726: PUSH0 00001727: DUP3 00001728: DUP3 00001729: SLOAD 0000172a: PUSH2 0x1733 0000172d: SWAP2 0000172e: SWAP1 0000172f: PUSH2 0x23fc 00001732: JUMP 00001733: JUMPDEST 00001734: SWAP3 00001735: POP 00001736: POP 00001737: DUP2 00001738: SWAP1 00001739: SSTORE 0000173a: POP 0000173b: POP 0000173c: JUMP 0000173d: JUMPDEST 0000173e: PUSH0 0000173f: DUP1 00001740: PUSH0 00001741: DUP5 00001742: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001757: AND 00001758: PUSH4 0x0902f1ac 0000175d: PUSH1 0x40 0000175f: MLOAD 00001760: DUP2 00001761: PUSH4 0xffffffff 00001766: AND 00001767: PUSH1 0xe0 00001769: SHL 0000176a: DUP2 0000176b: MSTORE 0000176c: PUSH1 0x04 0000176e: ADD 0000176f: PUSH1 0x40 00001771: DUP1 00001772: MLOAD 00001773: DUP1 00001774: DUP4 00001775: SUB 00001776: DUP2 00001777: DUP7 00001778: GAS 00001779: STATICCALL 0000177a: ISZERO 0000177b: DUP1 0000177c: ISZERO 0000177d: PUSH2 0x1788 00001780: JUMPI 00001781: RETURNDATASIZE 00001782: PUSH0 00001783: DUP1 00001784: RETURNDATACOPY 00001785: RETURNDATASIZE 00001786: PUSH0 00001787: REVERT 00001788: JUMPDEST 00001789: POP 0000178a: POP 0000178b: POP 0000178c: POP 0000178d: PUSH1 0x40 0000178f: MLOAD 00001790: RETURNDATASIZE 00001791: PUSH1 0x1f 00001793: NOT 00001794: PUSH1 0x1f 00001796: DUP3 00001797: ADD 00001798: AND 00001799: DUP3 0000179a: ADD 0000179b: DUP1 0000179c: PUSH1 0x40 0000179e: MSTORE 0000179f: POP 000017a0: DUP2 000017a1: ADD 000017a2: SWAP1 000017a3: PUSH2 0x17ac 000017a6: SWAP2 000017a7: SWAP1 000017a8: PUSH2 0x27be 000017ab: JUMP 000017ac: JUMPDEST 000017ad: PUSH14 0xffffffffffffffffffffffffffff 000017bc: AND 000017bd: SWAP2 000017be: POP 000017bf: PUSH14 0xffffffffffffffffffffffffffff 000017ce: AND 000017cf: SWAP2 000017d0: POP 000017d1: PUSH0 000017d2: PUSH2 0x03e5 000017d5: DUP8 000017d6: PUSH1 0x01 000017d8: DUP8 000017d9: PUSH1 0xff 000017db: AND 000017dc: EQ 000017dd: PUSH2 0x17e6 000017e0: JUMPI 000017e1: DUP4 000017e2: PUSH2 0x17e8 000017e5: JUMP 000017e6: JUMPDEST 000017e7: DUP5 000017e8: JUMPDEST 000017e9: PUSH2 0x17f2 000017ec: SWAP2 000017ed: SWAP1 000017ee: PUSH2 0x27fc 000017f1: JUMP 000017f2: JUMPDEST 000017f3: PUSH2 0x17fc 000017f6: SWAP2 000017f7: SWAP1 000017f8: PUSH2 0x27fc 000017fb: JUMP 000017fc: JUMPDEST 000017fd: SWAP1 000017fe: POP 000017ff: PUSH0 00001800: PUSH2 0x03e5 00001803: DUP9 00001804: PUSH2 0x180d 00001807: SWAP2 00001808: SWAP1 00001809: PUSH2 0x27fc 0000180c: JUMP 0000180d: JUMPDEST 0000180e: PUSH2 0x03e8 00001811: PUSH1 0x01 00001813: DUP9 00001814: PUSH1 0xff 00001816: AND 00001817: EQ 00001818: PUSH2 0x1821 0000181b: JUMPI 0000181c: DUP6 0000181d: PUSH2 0x1823 00001820: JUMP 00001821: JUMPDEST 00001822: DUP5 00001823: JUMPDEST 00001824: PUSH2 0x182d 00001827: SWAP2 00001828: SWAP1 00001829: PUSH2 0x27fc 0000182c: JUMP 0000182d: JUMPDEST 0000182e: PUSH2 0x1837 00001831: SWAP2 00001832: SWAP1 00001833: PUSH2 0x23fc 00001836: JUMP 00001837: JUMPDEST 00001838: SWAP1 00001839: POP 0000183a: DUP1 0000183b: DUP3 0000183c: PUSH2 0x1845 0000183f: SWAP2 00001840: SWAP1 00001841: PUSH2 0x286a 00001844: JUMP 00001845: JUMPDEST 00001846: SWAP5 00001847: POP 00001848: POP 00001849: POP 0000184a: POP 0000184b: POP 0000184c: SWAP4 0000184d: SWAP3 0000184e: POP 0000184f: POP 00001850: POP 00001851: JUMP 00001852: JUMPDEST 00001853: PUSH0 00001854: DUP1 00001855: ADDRESS 00001856: PUSH1 0x60 00001858: SHL 00001859: SWAP1 0000185a: POP 0000185b: PUSH1 0x40 0000185d: MLOAD 0000185e: PUSH32 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000 0000187f: DUP2 00001880: MSTORE 00001881: DUP2 00001882: PUSH1 0x14 00001884: DUP3 00001885: ADD 00001886: MSTORE 00001887: PUSH32 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000 000018a8: PUSH1 0x28 000018aa: DUP3 000018ab: ADD 000018ac: MSTORE 000018ad: DUP4 000018ae: PUSH1 0x3c 000018b0: DUP3 000018b1: PUSH0 000018b2: CREATE2 000018b3: SWAP3 000018b4: POP 000018b5: POP 000018b6: POP 000018b7: SWAP2 000018b8: SWAP1 000018b9: POP 000018ba: JUMP 000018bb: JUMPDEST 000018bc: PUSH0 000018bd: PUSH1 0x40 000018bf: MLOAD 000018c0: SWAP1 000018c1: POP 000018c2: SWAP1 000018c3: JUMP 000018c4: JUMPDEST 000018c5: PUSH0 000018c6: DUP1 000018c7: REVERT 000018c8: JUMPDEST 000018c9: PUSH0 000018ca: DUP1 000018cb: REVERT 000018cc: JUMPDEST 000018cd: PUSH0 000018ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018e3: DUP3 000018e4: AND 000018e5: SWAP1 000018e6: POP 000018e7: SWAP2 000018e8: SWAP1 000018e9: POP 000018ea: JUMP 000018eb: JUMPDEST 000018ec: PUSH0 000018ed: PUSH2 0x18f5 000018f0: DUP3 000018f1: PUSH2 0x18cc 000018f4: JUMP 000018f5: JUMPDEST 000018f6: SWAP1 000018f7: POP 000018f8: SWAP2 000018f9: SWAP1 000018fa: POP 000018fb: JUMP 000018fc: JUMPDEST 000018fd: PUSH2 0x1905 00001900: DUP2 00001901: PUSH2 0x18eb 00001904: JUMP 00001905: JUMPDEST 00001906: DUP2 00001907: EQ 00001908: PUSH2 0x190f 0000190b: JUMPI 0000190c: PUSH0 0000190d: DUP1 0000190e: REVERT 0000190f: JUMPDEST 00001910: POP 00001911: JUMP 00001912: JUMPDEST 00001913: PUSH0 00001914: DUP2 00001915: CALLDATALOAD 00001916: SWAP1 00001917: POP 00001918: PUSH2 0x1920 0000191b: DUP2 0000191c: PUSH2 0x18fc 0000191f: JUMP 00001920: JUMPDEST 00001921: SWAP3 00001922: SWAP2 00001923: POP 00001924: POP 00001925: JUMP 00001926: JUMPDEST 00001927: PUSH0 00001928: DUP2 00001929: SWAP1 0000192a: POP 0000192b: SWAP2 0000192c: SWAP1 0000192d: POP 0000192e: JUMP 0000192f: JUMPDEST 00001930: PUSH2 0x1938 00001933: DUP2 00001934: PUSH2 0x1926 00001937: JUMP 00001938: JUMPDEST 00001939: DUP2 0000193a: EQ 0000193b: PUSH2 0x1942 0000193e: JUMPI 0000193f: PUSH0 00001940: DUP1 00001941: REVERT 00001942: JUMPDEST 00001943: POP 00001944: JUMP 00001945: JUMPDEST 00001946: PUSH0 00001947: DUP2 00001948: CALLDATALOAD 00001949: SWAP1 0000194a: POP 0000194b: PUSH2 0x1953 0000194e: DUP2 0000194f: PUSH2 0x192f 00001952: JUMP 00001953: JUMPDEST 00001954: SWAP3 00001955: SWAP2 00001956: POP 00001957: POP 00001958: JUMP 00001959: JUMPDEST 0000195a: PUSH0 0000195b: DUP1 0000195c: PUSH1 0x40 0000195e: DUP4 0000195f: DUP6 00001960: SUB 00001961: SLT 00001962: ISZERO 00001963: PUSH2 0x196f 00001966: JUMPI 00001967: PUSH2 0x196e 0000196a: PUSH2 0x18c4 0000196d: JUMP 0000196e: JUMPDEST 0000196f: JUMPDEST 00001970: PUSH0 00001971: PUSH2 0x197c 00001974: DUP6 00001975: DUP3 00001976: DUP7 00001977: ADD 00001978: PUSH2 0x1912 0000197b: JUMP 0000197c: JUMPDEST 0000197d: SWAP3 0000197e: POP 0000197f: POP 00001980: PUSH1 0x20 00001982: PUSH2 0x198d 00001985: DUP6 00001986: DUP3 00001987: DUP7 00001988: ADD 00001989: PUSH2 0x1945 0000198c: JUMP 0000198d: JUMPDEST 0000198e: SWAP2 0000198f: POP 00001990: POP 00001991: SWAP3 00001992: POP 00001993: SWAP3 00001994: SWAP1 00001995: POP 00001996: JUMP 00001997: JUMPDEST 00001998: PUSH0 00001999: DUP1 0000199a: REVERT 0000199b: JUMPDEST 0000199c: PUSH0 0000199d: DUP1 0000199e: REVERT 0000199f: JUMPDEST 000019a0: PUSH0 000019a1: PUSH1 0x1f 000019a3: NOT 000019a4: PUSH1 0x1f 000019a6: DUP4 000019a7: ADD 000019a8: AND 000019a9: SWAP1 000019aa: POP 000019ab: SWAP2 000019ac: SWAP1 000019ad: POP 000019ae: JUMP 000019af: JUMPDEST 000019b0: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000019d1: PUSH0 000019d2: MSTORE 000019d3: PUSH1 0x41 000019d5: PUSH1 0x04 000019d7: MSTORE 000019d8: PUSH1 0x24 000019da: PUSH0 000019db: REVERT 000019dc: JUMPDEST 000019dd: PUSH2 0x19e5 000019e0: DUP3 000019e1: PUSH2 0x199f 000019e4: JUMP 000019e5: JUMPDEST 000019e6: DUP2 000019e7: ADD 000019e8: DUP2 000019e9: DUP2 000019ea: LT 000019eb: PUSH8 0xffffffffffffffff 000019f4: DUP3 000019f5: GT 000019f6: OR 000019f7: ISZERO 000019f8: PUSH2 0x1a04 000019fb: JUMPI 000019fc: PUSH2 0x1a03 000019ff: PUSH2 0x19af 00001a02: JUMP 00001a03: JUMPDEST 00001a04: JUMPDEST 00001a05: DUP1 00001a06: PUSH1 0x40 00001a08: MSTORE 00001a09: POP 00001a0a: POP 00001a0b: POP 00001a0c: JUMP 00001a0d: JUMPDEST 00001a0e: PUSH0 00001a0f: PUSH2 0x1a16 00001a12: PUSH2 0x18bb 00001a15: JUMP 00001a16: JUMPDEST 00001a17: SWAP1 00001a18: POP 00001a19: PUSH2 0x1a22 00001a1c: DUP3 00001a1d: DUP3 00001a1e: PUSH2 0x19dc 00001a21: JUMP 00001a22: JUMPDEST 00001a23: SWAP2 00001a24: SWAP1 00001a25: POP 00001a26: JUMP 00001a27: JUMPDEST 00001a28: PUSH0 00001a29: PUSH8 0xffffffffffffffff 00001a32: DUP3 00001a33: GT 00001a34: ISZERO 00001a35: PUSH2 0x1a41 00001a38: JUMPI 00001a39: PUSH2 0x1a40 00001a3c: PUSH2 0x19af 00001a3f: JUMP 00001a40: JUMPDEST 00001a41: JUMPDEST 00001a42: PUSH2 0x1a4a 00001a45: DUP3 00001a46: PUSH2 0x199f 00001a49: JUMP 00001a4a: JUMPDEST 00001a4b: SWAP1 00001a4c: POP 00001a4d: PUSH1 0x20 00001a4f: DUP2 00001a50: ADD 00001a51: SWAP1 00001a52: POP 00001a53: SWAP2 00001a54: SWAP1 00001a55: POP 00001a56: JUMP 00001a57: JUMPDEST 00001a58: DUP3 00001a59: DUP2 00001a5a: DUP4 00001a5b: CALLDATACOPY 00001a5c: PUSH0 00001a5d: DUP4 00001a5e: DUP4 00001a5f: ADD 00001a60: MSTORE 00001a61: POP 00001a62: POP 00001a63: POP 00001a64: JUMP 00001a65: JUMPDEST 00001a66: PUSH0 00001a67: PUSH2 0x1a77 00001a6a: PUSH2 0x1a72 00001a6d: DUP5 00001a6e: PUSH2 0x1a27 00001a71: JUMP 00001a72: JUMPDEST 00001a73: PUSH2 0x1a0d 00001a76: JUMP 00001a77: JUMPDEST 00001a78: SWAP1 00001a79: POP 00001a7a: DUP3 00001a7b: DUP2 00001a7c: MSTORE 00001a7d: PUSH1 0x20 00001a7f: DUP2 00001a80: ADD 00001a81: DUP5 00001a82: DUP5 00001a83: DUP5 00001a84: ADD 00001a85: GT 00001a86: ISZERO 00001a87: PUSH2 0x1a93 00001a8a: JUMPI 00001a8b: PUSH2 0x1a92 00001a8e: PUSH2 0x199b 00001a91: JUMP 00001a92: JUMPDEST 00001a93: JUMPDEST 00001a94: PUSH2 0x1a9e 00001a97: DUP5 00001a98: DUP3 00001a99: DUP6 00001a9a: PUSH2 0x1a57 00001a9d: JUMP 00001a9e: JUMPDEST 00001a9f: POP 00001aa0: SWAP4 00001aa1: SWAP3 00001aa2: POP 00001aa3: POP 00001aa4: POP 00001aa5: JUMP 00001aa6: JUMPDEST 00001aa7: PUSH0 00001aa8: DUP3 00001aa9: PUSH1 0x1f 00001aab: DUP4 00001aac: ADD 00001aad: SLT 00001aae: PUSH2 0x1aba 00001ab1: JUMPI 00001ab2: PUSH2 0x1ab9 00001ab5: PUSH2 0x1997 00001ab8: JUMP 00001ab9: JUMPDEST 00001aba: JUMPDEST 00001abb: DUP2 00001abc: CALLDATALOAD 00001abd: PUSH2 0x1aca 00001ac0: DUP5 00001ac1: DUP3 00001ac2: PUSH1 0x20 00001ac4: DUP7 00001ac5: ADD 00001ac6: PUSH2 0x1a65 00001ac9: JUMP 00001aca: JUMPDEST 00001acb: SWAP2 00001acc: POP 00001acd: POP 00001ace: SWAP3 00001acf: SWAP2 00001ad0: POP 00001ad1: POP 00001ad2: JUMP 00001ad3: JUMPDEST 00001ad4: PUSH0 00001ad5: DUP1 00001ad6: PUSH1 0x40 00001ad8: DUP4 00001ad9: DUP6 00001ada: SUB 00001adb: SLT 00001adc: ISZERO 00001add: PUSH2 0x1ae9 00001ae0: JUMPI 00001ae1: PUSH2 0x1ae8 00001ae4: PUSH2 0x18c4 00001ae7: JUMP 00001ae8: JUMPDEST 00001ae9: JUMPDEST 00001aea: PUSH0 00001aeb: PUSH2 0x1af6 00001aee: DUP6 00001aef: DUP3 00001af0: DUP7 00001af1: ADD 00001af2: PUSH2 0x1912 00001af5: JUMP 00001af6: JUMPDEST 00001af7: SWAP3 00001af8: POP 00001af9: POP 00001afa: PUSH1 0x20 00001afc: DUP4 00001afd: ADD 00001afe: CALLDATALOAD 00001aff: PUSH8 0xffffffffffffffff 00001b08: DUP2 00001b09: GT 00001b0a: ISZERO 00001b0b: PUSH2 0x1b17 00001b0e: JUMPI 00001b0f: PUSH2 0x1b16 00001b12: PUSH2 0x18c8 00001b15: JUMP 00001b16: JUMPDEST 00001b17: JUMPDEST 00001b18: PUSH2 0x1b23 00001b1b: DUP6 00001b1c: DUP3 00001b1d: DUP7 00001b1e: ADD 00001b1f: PUSH2 0x1aa6 00001b22: JUMP 00001b23: JUMPDEST 00001b24: SWAP2 00001b25: POP 00001b26: POP 00001b27: SWAP3 00001b28: POP 00001b29: SWAP3 00001b2a: SWAP1 00001b2b: POP 00001b2c: JUMP 00001b2d: JUMPDEST 00001b2e: PUSH0 00001b2f: PUSH8 0xffffffffffffffff 00001b38: DUP3 00001b39: GT 00001b3a: ISZERO 00001b3b: PUSH2 0x1b47 00001b3e: JUMPI 00001b3f: PUSH2 0x1b46 00001b42: PUSH2 0x19af 00001b45: JUMP 00001b46: JUMPDEST 00001b47: JUMPDEST 00001b48: PUSH1 0x20 00001b4a: DUP3 00001b4b: MUL 00001b4c: SWAP1 00001b4d: POP 00001b4e: PUSH1 0x20 00001b50: DUP2 00001b51: ADD 00001b52: SWAP1 00001b53: POP 00001b54: SWAP2 00001b55: SWAP1 00001b56: POP 00001b57: JUMP 00001b58: JUMPDEST 00001b59: PUSH0 00001b5a: DUP1 00001b5b: REVERT 00001b5c: JUMPDEST 00001b5d: PUSH0 00001b5e: PUSH2 0x1b6e 00001b61: PUSH2 0x1b69 00001b64: DUP5 00001b65: PUSH2 0x1b2d 00001b68: JUMP 00001b69: JUMPDEST 00001b6a: PUSH2 0x1a0d 00001b6d: JUMP 00001b6e: JUMPDEST 00001b6f: SWAP1 00001b70: POP 00001b71: DUP1 00001b72: DUP4 00001b73: DUP3 00001b74: MSTORE 00001b75: PUSH1 0x20 00001b77: DUP3 00001b78: ADD 00001b79: SWAP1 00001b7a: POP 00001b7b: PUSH1 0x20 00001b7d: DUP5 00001b7e: MUL 00001b7f: DUP4 00001b80: ADD 00001b81: DUP6 00001b82: DUP2 00001b83: GT 00001b84: ISZERO 00001b85: PUSH2 0x1b91 00001b88: JUMPI 00001b89: PUSH2 0x1b90 00001b8c: PUSH2 0x1b58 00001b8f: JUMP 00001b90: JUMPDEST 00001b91: JUMPDEST 00001b92: DUP4 00001b93: JUMPDEST 00001b94: DUP2 00001b95: DUP2 00001b96: LT 00001b97: ISZERO 00001b98: PUSH2 0x1bba 00001b9b: JUMPI 00001b9c: DUP1 00001b9d: PUSH2 0x1ba6 00001ba0: DUP9 00001ba1: DUP3 00001ba2: PUSH2 0x1912 00001ba5: JUMP 00001ba6: JUMPDEST 00001ba7: DUP5 00001ba8: MSTORE 00001ba9: PUSH1 0x20 00001bab: DUP5 00001bac: ADD 00001bad: SWAP4 00001bae: POP 00001baf: POP 00001bb0: PUSH1 0x20 00001bb2: DUP2 00001bb3: ADD 00001bb4: SWAP1 00001bb5: POP 00001bb6: PUSH2 0x1b93 00001bb9: JUMP 00001bba: JUMPDEST 00001bbb: POP 00001bbc: POP 00001bbd: POP 00001bbe: SWAP4 00001bbf: SWAP3 00001bc0: POP 00001bc1: POP 00001bc2: POP 00001bc3: JUMP 00001bc4: JUMPDEST 00001bc5: PUSH0 00001bc6: DUP3 00001bc7: PUSH1 0x1f 00001bc9: DUP4 00001bca: ADD 00001bcb: SLT 00001bcc: PUSH2 0x1bd8 00001bcf: JUMPI 00001bd0: PUSH2 0x1bd7 00001bd3: PUSH2 0x1997 00001bd6: JUMP 00001bd7: JUMPDEST 00001bd8: JUMPDEST 00001bd9: DUP2 00001bda: CALLDATALOAD 00001bdb: PUSH2 0x1be8 00001bde: DUP5 00001bdf: DUP3 00001be0: PUSH1 0x20 00001be2: DUP7 00001be3: ADD 00001be4: PUSH2 0x1b5c 00001be7: JUMP 00001be8: JUMPDEST 00001be9: SWAP2 00001bea: POP 00001beb: POP 00001bec: SWAP3 00001bed: SWAP2 00001bee: POP 00001bef: POP 00001bf0: JUMP 00001bf1: JUMPDEST 00001bf2: PUSH0 00001bf3: PUSH1 0x20 00001bf5: DUP3 00001bf6: DUP5 00001bf7: SUB 00001bf8: SLT 00001bf9: ISZERO 00001bfa: PUSH2 0x1c06 00001bfd: JUMPI 00001bfe: PUSH2 0x1c05 00001c01: PUSH2 0x18c4 00001c04: JUMP 00001c05: JUMPDEST 00001c06: JUMPDEST 00001c07: PUSH0 00001c08: DUP3 00001c09: ADD 00001c0a: CALLDATALOAD 00001c0b: PUSH8 0xffffffffffffffff 00001c14: DUP2 00001c15: GT 00001c16: ISZERO 00001c17: PUSH2 0x1c23 00001c1a: JUMPI 00001c1b: PUSH2 0x1c22 00001c1e: PUSH2 0x18c8 00001c21: JUMP 00001c22: JUMPDEST 00001c23: JUMPDEST 00001c24: PUSH2 0x1c2f 00001c27: DUP5 00001c28: DUP3 00001c29: DUP6 00001c2a: ADD 00001c2b: PUSH2 0x1bc4 00001c2e: JUMP 00001c2f: JUMPDEST 00001c30: SWAP2 00001c31: POP 00001c32: POP 00001c33: SWAP3 00001c34: SWAP2 00001c35: POP 00001c36: POP 00001c37: JUMP 00001c38: JUMPDEST 00001c39: PUSH0 00001c3a: PUSH1 0x20 00001c3c: DUP3 00001c3d: DUP5 00001c3e: SUB 00001c3f: SLT 00001c40: ISZERO 00001c41: PUSH2 0x1c4d 00001c44: JUMPI 00001c45: PUSH2 0x1c4c 00001c48: PUSH2 0x18c4 00001c4b: JUMP 00001c4c: JUMPDEST 00001c4d: JUMPDEST 00001c4e: PUSH0 00001c4f: PUSH2 0x1c5a 00001c52: DUP5 00001c53: DUP3 00001c54: DUP6 00001c55: ADD 00001c56: PUSH2 0x1945 00001c59: JUMP 00001c5a: JUMPDEST 00001c5b: SWAP2 00001c5c: POP 00001c5d: POP 00001c5e: SWAP3 00001c5f: SWAP2 00001c60: POP 00001c61: POP 00001c62: JUMP 00001c63: JUMPDEST 00001c64: PUSH2 0x1c6c 00001c67: DUP2 00001c68: PUSH2 0x18eb 00001c6b: JUMP 00001c6c: JUMPDEST 00001c6d: DUP3 00001c6e: MSTORE 00001c6f: POP 00001c70: POP 00001c71: JUMP 00001c72: JUMPDEST 00001c73: PUSH0 00001c74: PUSH1 0x20 00001c76: DUP3 00001c77: ADD 00001c78: SWAP1 00001c79: POP 00001c7a: PUSH2 0x1c85 00001c7d: PUSH0 00001c7e: DUP4 00001c7f: ADD 00001c80: DUP5 00001c81: PUSH2 0x1c63 00001c84: JUMP 00001c85: JUMPDEST 00001c86: SWAP3 00001c87: SWAP2 00001c88: POP 00001c89: POP 00001c8a: JUMP 00001c8b: JUMPDEST 00001c8c: PUSH0 00001c8d: PUSH2 0x1c95 00001c90: DUP3 00001c91: PUSH2 0x18eb 00001c94: JUMP 00001c95: JUMPDEST 00001c96: SWAP1 00001c97: POP 00001c98: SWAP2 00001c99: SWAP1 00001c9a: POP 00001c9b: JUMP 00001c9c: JUMPDEST 00001c9d: PUSH2 0x1ca5 00001ca0: DUP2 00001ca1: PUSH2 0x1c8b 00001ca4: JUMP 00001ca5: JUMPDEST 00001ca6: DUP2 00001ca7: EQ 00001ca8: PUSH2 0x1caf 00001cab: JUMPI 00001cac: PUSH0 00001cad: DUP1 00001cae: REVERT 00001caf: JUMPDEST 00001cb0: POP 00001cb1: JUMP 00001cb2: JUMPDEST 00001cb3: PUSH0 00001cb4: DUP2 00001cb5: CALLDATALOAD 00001cb6: SWAP1 00001cb7: POP 00001cb8: PUSH2 0x1cc0 00001cbb: DUP2 00001cbc: PUSH2 0x1c9c 00001cbf: JUMP 00001cc0: JUMPDEST 00001cc1: SWAP3 00001cc2: SWAP2 00001cc3: POP 00001cc4: POP 00001cc5: JUMP 00001cc6: JUMPDEST 00001cc7: PUSH0 00001cc8: DUP1 00001cc9: PUSH0 00001cca: DUP1 00001ccb: PUSH1 0x80 00001ccd: DUP6 00001cce: DUP8 00001ccf: SUB 00001cd0: SLT 00001cd1: ISZERO 00001cd2: PUSH2 0x1cde 00001cd5: JUMPI 00001cd6: PUSH2 0x1cdd 00001cd9: PUSH2 0x18c4 00001cdc: JUMP 00001cdd: JUMPDEST 00001cde: JUMPDEST 00001cdf: PUSH0 00001ce0: PUSH2 0x1ceb 00001ce3: DUP8 00001ce4: DUP3 00001ce5: DUP9 00001ce6: ADD 00001ce7: PUSH2 0x1cb2 00001cea: JUMP 00001ceb: JUMPDEST 00001cec: SWAP5 00001ced: POP 00001cee: POP 00001cef: PUSH1 0x20 00001cf1: PUSH2 0x1cfc 00001cf4: DUP8 00001cf5: DUP3 00001cf6: DUP9 00001cf7: ADD 00001cf8: PUSH2 0x1945 00001cfb: JUMP 00001cfc: JUMPDEST 00001cfd: SWAP4 00001cfe: POP 00001cff: POP 00001d00: PUSH1 0x40 00001d02: PUSH2 0x1d0d 00001d05: DUP8 00001d06: DUP3 00001d07: DUP9 00001d08: ADD 00001d09: PUSH2 0x1945 00001d0c: JUMP 00001d0d: JUMPDEST 00001d0e: SWAP3 00001d0f: POP 00001d10: POP 00001d11: PUSH1 0x60 00001d13: PUSH2 0x1d1e 00001d16: DUP8 00001d17: DUP3 00001d18: DUP9 00001d19: ADD 00001d1a: PUSH2 0x1945 00001d1d: JUMP 00001d1e: JUMPDEST 00001d1f: SWAP2 00001d20: POP 00001d21: POP 00001d22: SWAP3 00001d23: SWAP6 00001d24: SWAP2 00001d25: SWAP5 00001d26: POP 00001d27: SWAP3 00001d28: POP 00001d29: JUMP 00001d2a: JUMPDEST 00001d2b: PUSH0 00001d2c: DUP1 00001d2d: PUSH1 0x40 00001d2f: DUP4 00001d30: DUP6 00001d31: SUB 00001d32: SLT 00001d33: ISZERO 00001d34: PUSH2 0x1d40 00001d37: JUMPI 00001d38: PUSH2 0x1d3f 00001d3b: PUSH2 0x18c4 00001d3e: JUMP 00001d3f: JUMPDEST 00001d40: JUMPDEST 00001d41: PUSH0 00001d42: PUSH2 0x1d4d 00001d45: DUP6 00001d46: DUP3 00001d47: DUP7 00001d48: ADD 00001d49: PUSH2 0x1cb2 00001d4c: JUMP 00001d4d: JUMPDEST 00001d4e: SWAP3 00001d4f: POP 00001d50: POP 00001d51: PUSH1 0x20 00001d53: PUSH2 0x1d5e 00001d56: DUP6 00001d57: DUP3 00001d58: DUP7 00001d59: ADD 00001d5a: PUSH2 0x1945 00001d5d: JUMP 00001d5e: JUMPDEST 00001d5f: SWAP2 00001d60: POP 00001d61: POP 00001d62: SWAP3 00001d63: POP 00001d64: SWAP3 00001d65: SWAP1 00001d66: POP 00001d67: JUMP 00001d68: JUMPDEST 00001d69: PUSH0 00001d6a: PUSH1 0x20 00001d6c: DUP3 00001d6d: DUP5 00001d6e: SUB 00001d6f: SLT 00001d70: ISZERO 00001d71: PUSH2 0x1d7d 00001d74: JUMPI 00001d75: PUSH2 0x1d7c 00001d78: PUSH2 0x18c4 00001d7b: JUMP 00001d7c: JUMPDEST 00001d7d: JUMPDEST 00001d7e: PUSH0 00001d7f: PUSH2 0x1d8a 00001d82: DUP5 00001d83: DUP3 00001d84: DUP6 00001d85: ADD 00001d86: PUSH2 0x1912 00001d89: JUMP 00001d8a: JUMPDEST 00001d8b: SWAP2 00001d8c: POP 00001d8d: POP 00001d8e: SWAP3 00001d8f: SWAP2 00001d90: POP 00001d91: POP 00001d92: JUMP 00001d93: JUMPDEST 00001d94: PUSH0 00001d95: DUP3 00001d96: DUP3 00001d97: MSTORE 00001d98: PUSH1 0x20 00001d9a: DUP3 00001d9b: ADD 00001d9c: SWAP1 00001d9d: POP 00001d9e: SWAP3 00001d9f: SWAP2 00001da0: POP 00001da1: POP 00001da2: JUMP 00001da3: JUMPDEST 00001da4: PUSH32 0x2141555448000000000000000000000000000000000000000000000000000000 00001dc5: PUSH0 00001dc6: DUP3 00001dc7: ADD 00001dc8: MSTORE 00001dc9: POP 00001dca: JUMP 00001dcb: JUMPDEST 00001dcc: PUSH0 00001dcd: PUSH2 0x1dd7 00001dd0: PUSH1 0x05 00001dd2: DUP4 00001dd3: PUSH2 0x1d93 00001dd6: JUMP 00001dd7: JUMPDEST 00001dd8: SWAP2 00001dd9: POP 00001dda: PUSH2 0x1de2 00001ddd: DUP3 00001dde: PUSH2 0x1da3 00001de1: JUMP 00001de2: JUMPDEST 00001de3: PUSH1 0x20 00001de5: DUP3 00001de6: ADD 00001de7: SWAP1 00001de8: POP 00001de9: SWAP2 00001dea: SWAP1 00001deb: POP 00001dec: JUMP 00001ded: JUMPDEST 00001dee: PUSH0 00001def: PUSH1 0x20 00001df1: DUP3 00001df2: ADD 00001df3: SWAP1 00001df4: POP 00001df5: DUP2 00001df6: DUP2 00001df7: SUB 00001df8: PUSH0 00001df9: DUP4 00001dfa: ADD 00001dfb: MSTORE 00001dfc: PUSH2 0x1e04 00001dff: DUP2 00001e00: PUSH2 0x1dcb 00001e03: JUMP 00001e04: JUMPDEST 00001e05: SWAP1 00001e06: POP 00001e07: SWAP2 00001e08: SWAP1 00001e09: POP 00001e0a: JUMP 00001e0b: JUMPDEST 00001e0c: PUSH0 00001e0d: DUP2 00001e0e: SWAP1 00001e0f: POP 00001e10: SWAP3 00001e11: SWAP2 00001e12: POP 00001e13: POP 00001e14: JUMP 00001e15: JUMPDEST 00001e16: POP 00001e17: JUMP 00001e18: JUMPDEST 00001e19: PUSH0 00001e1a: PUSH2 0x1e23 00001e1d: PUSH0 00001e1e: DUP4 00001e1f: PUSH2 0x1e0b 00001e22: JUMP 00001e23: JUMPDEST 00001e24: SWAP2 00001e25: POP 00001e26: PUSH2 0x1e2e 00001e29: DUP3 00001e2a: PUSH2 0x1e15 00001e2d: JUMP 00001e2e: JUMPDEST 00001e2f: PUSH0 00001e30: DUP3 00001e31: ADD 00001e32: SWAP1 00001e33: POP 00001e34: SWAP2 00001e35: SWAP1 00001e36: POP 00001e37: JUMP 00001e38: JUMPDEST 00001e39: PUSH0 00001e3a: PUSH2 0x1e42 00001e3d: DUP3 00001e3e: PUSH2 0x1e18 00001e41: JUMP 00001e42: JUMPDEST 00001e43: SWAP2 00001e44: POP 00001e45: DUP2 00001e46: SWAP1 00001e47: POP 00001e48: SWAP2 00001e49: SWAP1 00001e4a: POP 00001e4b: JUMP 00001e4c: JUMPDEST 00001e4d: PUSH0 00001e4e: DUP2 00001e4f: PUSH1 0x60 00001e51: SHL 00001e52: SWAP1 00001e53: POP 00001e54: SWAP2 00001e55: SWAP1 00001e56: POP 00001e57: JUMP 00001e58: JUMPDEST 00001e59: PUSH0 00001e5a: PUSH2 0x1e62 00001e5d: DUP3 00001e5e: PUSH2 0x1e4c 00001e61: JUMP 00001e62: JUMPDEST 00001e63: SWAP1 00001e64: POP 00001e65: SWAP2 00001e66: SWAP1 00001e67: POP 00001e68: JUMP 00001e69: JUMPDEST 00001e6a: PUSH0 00001e6b: PUSH2 0x1e73 00001e6e: DUP3 00001e6f: PUSH2 0x1e58 00001e72: JUMP 00001e73: JUMPDEST 00001e74: SWAP1 00001e75: POP 00001e76: SWAP2 00001e77: SWAP1 00001e78: POP 00001e79: JUMP 00001e7a: JUMPDEST 00001e7b: PUSH2 0x1e8b 00001e7e: PUSH2 0x1e86 00001e81: DUP3 00001e82: PUSH2 0x18eb 00001e85: JUMP 00001e86: JUMPDEST 00001e87: PUSH2 0x1e69 00001e8a: JUMP 00001e8b: JUMPDEST 00001e8c: DUP3 00001e8d: MSTORE 00001e8e: POP 00001e8f: POP 00001e90: JUMP 00001e91: JUMPDEST 00001e92: PUSH0 00001e93: PUSH2 0x1e9c 00001e96: DUP3 00001e97: DUP6 00001e98: PUSH2 0x1e7a 00001e9b: JUMP 00001e9c: JUMPDEST 00001e9d: PUSH1 0x14 00001e9f: DUP3 00001ea0: ADD 00001ea1: SWAP2 00001ea2: POP 00001ea3: PUSH2 0x1eac 00001ea6: DUP3 00001ea7: DUP5 00001ea8: PUSH2 0x1e7a 00001eab: JUMP 00001eac: JUMPDEST 00001ead: PUSH1 0x14 00001eaf: DUP3 00001eb0: ADD 00001eb1: SWAP2 00001eb2: POP 00001eb3: DUP2 00001eb4: SWAP1 00001eb5: POP 00001eb6: SWAP4 00001eb7: SWAP3 00001eb8: POP 00001eb9: POP 00001eba: POP 00001ebb: JUMP 00001ebc: JUMPDEST 00001ebd: PUSH0 00001ebe: DUP2 00001ebf: SWAP1 00001ec0: POP 00001ec1: SWAP3 00001ec2: SWAP2 00001ec3: POP 00001ec4: POP 00001ec5: JUMP 00001ec6: JUMPDEST 00001ec7: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 00001ee8: PUSH0 00001ee9: DUP3 00001eea: ADD 00001eeb: MSTORE 00001eec: POP 00001eed: JUMP 00001eee: JUMPDEST 00001eef: PUSH0 00001ef0: PUSH2 0x1efa 00001ef3: PUSH1 0x01 00001ef5: DUP4 00001ef6: PUSH2 0x1ebc 00001ef9: JUMP 00001efa: JUMPDEST 00001efb: SWAP2 00001efc: POP 00001efd: PUSH2 0x1f05 00001f00: DUP3 00001f01: PUSH2 0x1ec6 00001f04: JUMP 00001f05: JUMPDEST 00001f06: PUSH1 0x01 00001f08: DUP3 00001f09: ADD 00001f0a: SWAP1 00001f0b: POP 00001f0c: SWAP2 00001f0d: SWAP1 00001f0e: POP 00001f0f: JUMP 00001f10: JUMPDEST 00001f11: PUSH0 00001f12: DUP2 00001f13: SWAP1 00001f14: POP 00001f15: SWAP2 00001f16: SWAP1 00001f17: POP 00001f18: JUMP 00001f19: JUMPDEST 00001f1a: PUSH0 00001f1b: DUP2 00001f1c: SWAP1 00001f1d: POP 00001f1e: SWAP2 00001f1f: SWAP1 00001f20: POP 00001f21: JUMP 00001f22: JUMPDEST 00001f23: PUSH2 0x1f33 00001f26: PUSH2 0x1f2e 00001f29: DUP3 00001f2a: PUSH2 0x1f10 00001f2d: JUMP 00001f2e: JUMPDEST 00001f2f: PUSH2 0x1f19 00001f32: JUMP 00001f33: JUMPDEST 00001f34: DUP3 00001f35: MSTORE 00001f36: POP 00001f37: POP 00001f38: JUMP 00001f39: JUMPDEST 00001f3a: PUSH32 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f 00001f5b: PUSH0 00001f5c: DUP3 00001f5d: ADD 00001f5e: MSTORE 00001f5f: POP 00001f60: JUMP 00001f61: JUMPDEST 00001f62: PUSH0 00001f63: PUSH2 0x1f6d 00001f66: PUSH1 0x20 00001f68: DUP4 00001f69: PUSH2 0x1ebc 00001f6c: JUMP 00001f6d: JUMPDEST 00001f6e: SWAP2 00001f6f: POP 00001f70: PUSH2 0x1f78 00001f73: DUP3 00001f74: PUSH2 0x1f39 00001f77: JUMP 00001f78: JUMPDEST 00001f79: PUSH1 0x20 00001f7b: DUP3 00001f7c: ADD 00001f7d: SWAP1 00001f7e: POP 00001f7f: SWAP2 00001f80: SWAP1 00001f81: POP 00001f82: JUMP 00001f83: JUMPDEST 00001f84: PUSH0 00001f85: PUSH2 0x1f8d 00001f88: DUP3 00001f89: PUSH2 0x1eee 00001f8c: JUMP 00001f8d: JUMPDEST 00001f8e: SWAP2 00001f8f: POP 00001f90: PUSH2 0x1f99 00001f93: DUP3 00001f94: DUP6 00001f95: PUSH2 0x1e7a 00001f98: JUMP 00001f99: JUMPDEST 00001f9a: PUSH1 0x14 00001f9c: DUP3 00001f9d: ADD 00001f9e: SWAP2 00001f9f: POP 00001fa0: PUSH2 0x1fa9 00001fa3: DUP3 00001fa4: DUP5 00001fa5: PUSH2 0x1f22 00001fa8: JUMP 00001fa9: JUMPDEST 00001faa: PUSH1 0x20 00001fac: DUP3 00001fad: ADD 00001fae: SWAP2 00001faf: POP 00001fb0: PUSH2 0x1fb8 00001fb3: DUP3 00001fb4: PUSH2 0x1f61 00001fb7: JUMP 00001fb8: JUMPDEST 00001fb9: SWAP2 00001fba: POP 00001fbb: DUP2 00001fbc: SWAP1 00001fbd: POP 00001fbe: SWAP4 00001fbf: SWAP3 00001fc0: POP 00001fc1: POP 00001fc2: POP 00001fc3: JUMP 00001fc4: JUMPDEST 00001fc5: PUSH32 0x457865637574696f6e204661696c656400000000000000000000000000000000 00001fe6: PUSH0 00001fe7: DUP3 00001fe8: ADD 00001fe9: MSTORE 00001fea: POP 00001feb: JUMP 00001fec: JUMPDEST 00001fed: PUSH0 00001fee: PUSH2 0x1ff8 00001ff1: PUSH1 0x10 00001ff3: DUP4 00001ff4: PUSH2 0x1d93 00001ff7: JUMP 00001ff8: JUMPDEST 00001ff9: SWAP2 00001ffa: POP 00001ffb: PUSH2 0x2003 00001ffe: DUP3 00001fff: PUSH2 0x1fc4 00002002: JUMP 00002003: JUMPDEST 00002004: PUSH1 0x20 00002006: DUP3 00002007: ADD 00002008: SWAP1 00002009: POP 0000200a: SWAP2 0000200b: SWAP1 0000200c: POP 0000200d: JUMP 0000200e: JUMPDEST 0000200f: PUSH0 00002010: PUSH1 0x20 00002012: DUP3 00002013: ADD 00002014: SWAP1 00002015: POP 00002016: DUP2 00002017: DUP2 00002018: SUB 00002019: PUSH0 0000201a: DUP4 0000201b: ADD 0000201c: MSTORE 0000201d: PUSH2 0x2025 00002020: DUP2 00002021: PUSH2 0x1fec 00002024: JUMP 00002025: JUMPDEST 00002026: SWAP1 00002027: POP 00002028: SWAP2 00002029: SWAP1 0000202a: POP 0000202b: JUMP 0000202c: JUMPDEST 0000202d: PUSH32 0x6600000000000000000000000000000000000000000000000000000000000000 0000204e: PUSH0 0000204f: DUP3 00002050: ADD 00002051: MSTORE 00002052: POP 00002053: JUMP 00002054: JUMPDEST 00002055: PUSH0 00002056: PUSH2 0x2060 00002059: PUSH1 0x01 0000205b: DUP4 0000205c: PUSH2 0x1d93 0000205f: JUMP 00002060: JUMPDEST 00002061: SWAP2 00002062: POP 00002063: PUSH2 0x206b 00002066: DUP3 00002067: PUSH2 0x202c 0000206a: JUMP 0000206b: JUMPDEST 0000206c: PUSH1 0x20 0000206e: DUP3 0000206f: ADD 00002070: SWAP1 00002071: POP 00002072: SWAP2 00002073: SWAP1 00002074: POP 00002075: JUMP 00002076: JUMPDEST 00002077: PUSH0 00002078: PUSH1 0x20 0000207a: DUP3 0000207b: ADD 0000207c: SWAP1 0000207d: POP 0000207e: DUP2 0000207f: DUP2 00002080: SUB 00002081: PUSH0 00002082: DUP4 00002083: ADD 00002084: MSTORE 00002085: PUSH2 0x208d 00002088: DUP2 00002089: PUSH2 0x2054 0000208c: JUMP 0000208d: JUMPDEST 0000208e: SWAP1 0000208f: POP 00002090: SWAP2 00002091: SWAP1 00002092: POP 00002093: JUMP 00002094: JUMPDEST 00002095: PUSH32 0x4e6f7420417574686f72697a6564000000000000000000000000000000000000 000020b6: PUSH0 000020b7: DUP3 000020b8: ADD 000020b9: MSTORE 000020ba: POP 000020bb: JUMP 000020bc: JUMPDEST 000020bd: PUSH0 000020be: PUSH2 0x20c8 000020c1: PUSH1 0x0e 000020c3: DUP4 000020c4: PUSH2 0x1d93 000020c7: JUMP 000020c8: JUMPDEST 000020c9: SWAP2 000020ca: POP 000020cb: PUSH2 0x20d3 000020ce: DUP3 000020cf: PUSH2 0x2094 000020d2: JUMP 000020d3: JUMPDEST 000020d4: PUSH1 0x20 000020d6: DUP3 000020d7: ADD 000020d8: SWAP1 000020d9: POP 000020da: SWAP2 000020db: SWAP1 000020dc: POP 000020dd: JUMP 000020de: JUMPDEST 000020df: PUSH0 000020e0: PUSH1 0x20 000020e2: DUP3 000020e3: ADD 000020e4: SWAP1 000020e5: POP 000020e6: DUP2 000020e7: DUP2 000020e8: SUB 000020e9: PUSH0 000020ea: DUP4 000020eb: ADD 000020ec: MSTORE 000020ed: PUSH2 0x20f5 000020f0: DUP2 000020f1: PUSH2 0x20bc 000020f4: JUMP 000020f5: JUMPDEST 000020f6: SWAP1 000020f7: POP 000020f8: SWAP2 000020f9: SWAP1 000020fa: POP 000020fb: JUMP 000020fc: JUMPDEST 000020fd: PUSH0 000020fe: DUP2 000020ff: SWAP1 00002100: POP 00002101: SWAP2 00002102: SWAP1 00002103: POP 00002104: JUMP 00002105: JUMPDEST 00002106: PUSH0 00002107: DUP2 00002108: SWAP1 00002109: POP 0000210a: SWAP2 0000210b: SWAP1 0000210c: POP 0000210d: JUMP 0000210e: JUMPDEST 0000210f: PUSH0 00002110: PUSH2 0x2128 00002113: PUSH2 0x2123 00002116: PUSH2 0x211e 00002119: DUP5 0000211a: PUSH2 0x20fc 0000211d: JUMP 0000211e: JUMPDEST 0000211f: PUSH2 0x2105 00002122: JUMP 00002123: JUMPDEST 00002124: PUSH2 0x1926 00002127: JUMP 00002128: JUMPDEST 00002129: SWAP1 0000212a: POP 0000212b: SWAP2 0000212c: SWAP1 0000212d: POP 0000212e: JUMP 0000212f: JUMPDEST 00002130: PUSH2 0x2138 00002133: DUP2 00002134: PUSH2 0x210e 00002137: JUMP 00002138: JUMPDEST 00002139: DUP3 0000213a: MSTORE 0000213b: POP 0000213c: POP 0000213d: JUMP 0000213e: JUMPDEST 0000213f: PUSH0 00002140: PUSH1 0x40 00002142: DUP3 00002143: ADD 00002144: SWAP1 00002145: POP 00002146: PUSH2 0x2151 00002149: PUSH0 0000214a: DUP4 0000214b: ADD 0000214c: DUP6 0000214d: PUSH2 0x1c63 00002150: JUMP 00002151: JUMPDEST 00002152: PUSH2 0x215e 00002155: PUSH1 0x20 00002157: DUP4 00002158: ADD 00002159: DUP5 0000215a: PUSH2 0x212f 0000215d: JUMP 0000215e: JUMPDEST 0000215f: SWAP4 00002160: SWAP3 00002161: POP 00002162: POP 00002163: POP 00002164: JUMP 00002165: JUMPDEST 00002166: PUSH0 00002167: DUP2 00002168: MLOAD 00002169: SWAP1 0000216a: POP 0000216b: SWAP2 0000216c: SWAP1 0000216d: POP 0000216e: JUMP 0000216f: JUMPDEST 00002170: PUSH0 00002171: JUMPDEST 00002172: DUP4 00002173: DUP2 00002174: LT 00002175: ISZERO 00002176: PUSH2 0x218c 00002179: JUMPI 0000217a: DUP1 0000217b: DUP3 0000217c: ADD 0000217d: MLOAD 0000217e: DUP2 0000217f: DUP5 00002180: ADD 00002181: MSTORE 00002182: PUSH1 0x20 00002184: DUP2 00002185: ADD 00002186: SWAP1 00002187: POP 00002188: PUSH2 0x2171 0000218b: JUMP 0000218c: JUMPDEST 0000218d: PUSH0 0000218e: DUP5 0000218f: DUP5 00002190: ADD 00002191: MSTORE 00002192: POP 00002193: POP 00002194: POP 00002195: POP 00002196: JUMP 00002197: JUMPDEST 00002198: PUSH0 00002199: PUSH2 0x21a1 0000219c: DUP3 0000219d: PUSH2 0x2165 000021a0: JUMP 000021a1: JUMPDEST 000021a2: PUSH2 0x21ab 000021a5: DUP2 000021a6: DUP6 000021a7: PUSH2 0x1e0b 000021aa: JUMP 000021ab: JUMPDEST 000021ac: SWAP4 000021ad: POP 000021ae: PUSH2 0x21bb 000021b1: DUP2 000021b2: DUP6 000021b3: PUSH1 0x20 000021b5: DUP7 000021b6: ADD 000021b7: PUSH2 0x216f 000021ba: JUMP 000021bb: JUMPDEST 000021bc: DUP1 000021bd: DUP5 000021be: ADD 000021bf: SWAP2 000021c0: POP 000021c1: POP 000021c2: SWAP3 000021c3: SWAP2 000021c4: POP 000021c5: POP 000021c6: JUMP 000021c7: JUMPDEST 000021c8: PUSH0 000021c9: PUSH2 0x21d2 000021cc: DUP3 000021cd: DUP5 000021ce: PUSH2 0x2197 000021d1: JUMP 000021d2: JUMPDEST 000021d3: SWAP2 000021d4: POP 000021d5: DUP2 000021d6: SWAP1 000021d7: POP 000021d8: SWAP3 000021d9: SWAP2 000021da: POP 000021db: POP 000021dc: JUMP 000021dd: JUMPDEST 000021de: PUSH32 0x6661696c65640000000000000000000000000000000000000000000000000000 000021ff: PUSH0 00002200: DUP3 00002201: ADD 00002202: MSTORE 00002203: POP 00002204: JUMP 00002205: JUMPDEST 00002206: PUSH0 00002207: PUSH2 0x2211 0000220a: PUSH1 0x06 0000220c: DUP4 0000220d: PUSH2 0x1d93 00002210: JUMP 00002211: JUMPDEST 00002212: SWAP2 00002213: POP 00002214: PUSH2 0x221c 00002217: DUP3 00002218: PUSH2 0x21dd 0000221b: JUMP 0000221c: JUMPDEST 0000221d: PUSH1 0x20 0000221f: DUP3 00002220: ADD 00002221: SWAP1 00002222: POP 00002223: SWAP2 00002224: SWAP1 00002225: POP 00002226: JUMP 00002227: JUMPDEST 00002228: PUSH0 00002229: PUSH1 0x20 0000222b: DUP3 0000222c: ADD 0000222d: SWAP1 0000222e: POP 0000222f: DUP2 00002230: DUP2 00002231: SUB 00002232: PUSH0 00002233: DUP4 00002234: ADD 00002235: MSTORE 00002236: PUSH2 0x223e 00002239: DUP2 0000223a: PUSH2 0x2205 0000223d: JUMP 0000223e: JUMPDEST 0000223f: SWAP1 00002240: POP 00002241: SWAP2 00002242: SWAP1 00002243: POP 00002244: JUMP 00002245: JUMPDEST 00002246: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002267: PUSH0 00002268: MSTORE 00002269: PUSH1 0x32 0000226b: PUSH1 0x04 0000226d: MSTORE 0000226e: PUSH1 0x24 00002270: PUSH0 00002271: REVERT 00002272: JUMPDEST 00002273: PUSH0 00002274: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 00002295: DUP3 00002296: AND 00002297: SWAP1 00002298: POP 00002299: SWAP2 0000229a: SWAP1 0000229b: POP 0000229c: JUMP 0000229d: JUMPDEST 0000229e: PUSH0 0000229f: DUP2 000022a0: SWAP1 000022a1: POP 000022a2: SWAP2 000022a3: SWAP1 000022a4: POP 000022a5: JUMP 000022a6: JUMPDEST 000022a7: PUSH2 0x22b7 000022aa: PUSH2 0x22b2 000022ad: DUP3 000022ae: PUSH2 0x2272 000022b1: JUMP 000022b2: JUMPDEST 000022b3: PUSH2 0x229d 000022b6: JUMP 000022b7: JUMPDEST 000022b8: DUP3 000022b9: MSTORE 000022ba: POP 000022bb: POP 000022bc: JUMP 000022bd: JUMPDEST 000022be: PUSH0 000022bf: DUP2 000022c0: SWAP1 000022c1: POP 000022c2: SWAP2 000022c3: SWAP1 000022c4: POP 000022c5: JUMP 000022c6: JUMPDEST 000022c7: PUSH2 0x22d7 000022ca: PUSH2 0x22d2 000022cd: DUP3 000022ce: PUSH2 0x1926 000022d1: JUMP 000022d2: JUMPDEST 000022d3: PUSH2 0x22bd 000022d6: JUMP 000022d7: JUMPDEST 000022d8: DUP3 000022d9: MSTORE 000022da: POP 000022db: POP 000022dc: JUMP 000022dd: JUMPDEST 000022de: PUSH0 000022df: PUSH2 0x22e8 000022e2: DUP3 000022e3: DUP8 000022e4: PUSH2 0x22a6 000022e7: JUMP 000022e8: JUMPDEST 000022e9: PUSH1 0x01 000022eb: DUP3 000022ec: ADD 000022ed: SWAP2 000022ee: POP 000022ef: PUSH2 0x22f8 000022f2: DUP3 000022f3: DUP7 000022f4: PUSH2 0x1e7a 000022f7: JUMP 000022f8: JUMPDEST 000022f9: PUSH1 0x14 000022fb: DUP3 000022fc: ADD 000022fd: SWAP2 000022fe: POP 000022ff: PUSH2 0x2308 00002302: DUP3 00002303: DUP6 00002304: PUSH2 0x22c6 00002307: JUMP 00002308: JUMPDEST 00002309: PUSH1 0x20 0000230b: DUP3 0000230c: ADD 0000230d: SWAP2 0000230e: POP 0000230f: PUSH2 0x2318 00002312: DUP3 00002313: DUP5 00002314: PUSH2 0x1f22 00002317: JUMP 00002318: JUMPDEST 00002319: PUSH1 0x20 0000231b: DUP3 0000231c: ADD 0000231d: SWAP2 0000231e: POP 0000231f: DUP2 00002320: SWAP1 00002321: POP 00002322: SWAP6 00002323: SWAP5 00002324: POP 00002325: POP 00002326: POP 00002327: POP 00002328: POP 00002329: JUMP 0000232a: JUMPDEST 0000232b: PUSH0 0000232c: PUSH1 0x40 0000232e: DUP3 0000232f: ADD 00002330: SWAP1 00002331: POP 00002332: PUSH2 0x233d 00002335: PUSH0 00002336: DUP4 00002337: ADD 00002338: DUP6 00002339: PUSH2 0x1c63 0000233c: JUMP 0000233d: JUMPDEST 0000233e: PUSH2 0x234a 00002341: PUSH1 0x20 00002343: DUP4 00002344: ADD 00002345: DUP5 00002346: PUSH2 0x1c63 00002349: JUMP 0000234a: JUMPDEST 0000234b: SWAP4 0000234c: SWAP3 0000234d: POP 0000234e: POP 0000234f: POP 00002350: JUMP 00002351: JUMPDEST 00002352: PUSH0 00002353: DUP2 00002354: MLOAD 00002355: SWAP1 00002356: POP 00002357: PUSH2 0x235f 0000235a: DUP2 0000235b: PUSH2 0x18fc 0000235e: JUMP 0000235f: JUMPDEST 00002360: SWAP3 00002361: SWAP2 00002362: POP 00002363: POP 00002364: JUMP 00002365: JUMPDEST 00002366: PUSH0 00002367: PUSH1 0x20 00002369: DUP3 0000236a: DUP5 0000236b: SUB 0000236c: SLT 0000236d: ISZERO 0000236e: PUSH2 0x237a 00002371: JUMPI 00002372: PUSH2 0x2379 00002375: PUSH2 0x18c4 00002378: JUMP 00002379: JUMPDEST 0000237a: JUMPDEST 0000237b: PUSH0 0000237c: PUSH2 0x2387 0000237f: DUP5 00002380: DUP3 00002381: DUP6 00002382: ADD 00002383: PUSH2 0x2351 00002386: JUMP 00002387: JUMPDEST 00002388: SWAP2 00002389: POP 0000238a: POP 0000238b: SWAP3 0000238c: SWAP2 0000238d: POP 0000238e: POP 0000238f: JUMP 00002390: JUMPDEST 00002391: PUSH0 00002392: DUP2 00002393: MLOAD 00002394: SWAP1 00002395: POP 00002396: PUSH2 0x239e 00002399: DUP2 0000239a: PUSH2 0x192f 0000239d: JUMP 0000239e: JUMPDEST 0000239f: SWAP3 000023a0: SWAP2 000023a1: POP 000023a2: POP 000023a3: JUMP 000023a4: JUMPDEST 000023a5: PUSH0 000023a6: PUSH1 0x20 000023a8: DUP3 000023a9: DUP5 000023aa: SUB 000023ab: SLT 000023ac: ISZERO 000023ad: PUSH2 0x23b9 000023b0: JUMPI 000023b1: PUSH2 0x23b8 000023b4: PUSH2 0x18c4 000023b7: JUMP 000023b8: JUMPDEST 000023b9: JUMPDEST 000023ba: PUSH0 000023bb: PUSH2 0x23c6 000023be: DUP5 000023bf: DUP3 000023c0: DUP6 000023c1: ADD 000023c2: PUSH2 0x2390 000023c5: JUMP 000023c6: JUMPDEST 000023c7: SWAP2 000023c8: POP 000023c9: POP 000023ca: SWAP3 000023cb: SWAP2 000023cc: POP 000023cd: POP 000023ce: JUMP 000023cf: JUMPDEST 000023d0: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000023f1: PUSH0 000023f2: MSTORE 000023f3: PUSH1 0x11 000023f5: PUSH1 0x04 000023f7: MSTORE 000023f8: PUSH1 0x24 000023fa: PUSH0 000023fb: REVERT 000023fc: JUMPDEST 000023fd: PUSH0 000023fe: PUSH2 0x2406 00002401: DUP3 00002402: PUSH2 0x1926 00002405: JUMP 00002406: JUMPDEST 00002407: SWAP2 00002408: POP 00002409: PUSH2 0x2411 0000240c: DUP4 0000240d: PUSH2 0x1926 00002410: JUMP 00002411: JUMPDEST 00002412: SWAP3 00002413: POP 00002414: DUP3 00002415: DUP3 00002416: ADD 00002417: SWAP1 00002418: POP 00002419: DUP1 0000241a: DUP3 0000241b: GT 0000241c: ISZERO 0000241d: PUSH2 0x2429 00002420: JUMPI 00002421: PUSH2 0x2428 00002424: PUSH2 0x23cf 00002427: JUMP 00002428: JUMPDEST 00002429: JUMPDEST 0000242a: SWAP3 0000242b: SWAP2 0000242c: POP 0000242d: POP 0000242e: JUMP 0000242f: JUMPDEST 00002430: PUSH2 0x2438 00002433: DUP2 00002434: PUSH2 0x1926 00002437: JUMP 00002438: JUMPDEST 00002439: DUP3 0000243a: MSTORE 0000243b: POP 0000243c: POP 0000243d: JUMP 0000243e: JUMPDEST 0000243f: PUSH0 00002440: DUP2 00002441: MLOAD 00002442: SWAP1 00002443: POP 00002444: SWAP2 00002445: SWAP1 00002446: POP 00002447: JUMP 00002448: JUMPDEST 00002449: PUSH0 0000244a: DUP3 0000244b: DUP3 0000244c: MSTORE 0000244d: PUSH1 0x20 0000244f: DUP3 00002450: ADD 00002451: SWAP1 00002452: POP 00002453: SWAP3 00002454: SWAP2 00002455: POP 00002456: POP 00002457: JUMP 00002458: JUMPDEST 00002459: PUSH0 0000245a: DUP2 0000245b: SWAP1 0000245c: POP 0000245d: PUSH1 0x20 0000245f: DUP3 00002460: ADD 00002461: SWAP1 00002462: POP 00002463: SWAP2 00002464: SWAP1 00002465: POP 00002466: JUMP 00002467: JUMPDEST 00002468: PUSH2 0x2470 0000246b: DUP2 0000246c: PUSH2 0x18eb 0000246f: JUMP 00002470: JUMPDEST 00002471: DUP3 00002472: MSTORE 00002473: POP 00002474: POP 00002475: JUMP 00002476: JUMPDEST 00002477: PUSH0 00002478: PUSH2 0x2481 0000247b: DUP4 0000247c: DUP4 0000247d: PUSH2 0x2467 00002480: JUMP 00002481: JUMPDEST 00002482: PUSH1 0x20 00002484: DUP4 00002485: ADD 00002486: SWAP1 00002487: POP 00002488: SWAP3 00002489: SWAP2 0000248a: POP 0000248b: POP 0000248c: JUMP 0000248d: JUMPDEST 0000248e: PUSH0 0000248f: PUSH1 0x20 00002491: DUP3 00002492: ADD 00002493: SWAP1 00002494: POP 00002495: SWAP2 00002496: SWAP1 00002497: POP 00002498: JUMP 00002499: JUMPDEST 0000249a: PUSH0 0000249b: PUSH2 0x24a3 0000249e: DUP3 0000249f: PUSH2 0x243e 000024a2: JUMP 000024a3: JUMPDEST 000024a4: PUSH2 0x24ad 000024a7: DUP2 000024a8: DUP6 000024a9: PUSH2 0x2448 000024ac: JUMP 000024ad: JUMPDEST 000024ae: SWAP4 000024af: POP 000024b0: PUSH2 0x24b8 000024b3: DUP4 000024b4: PUSH2 0x2458 000024b7: JUMP 000024b8: JUMPDEST 000024b9: DUP1 000024ba: PUSH0 000024bb: JUMPDEST 000024bc: DUP4 000024bd: DUP2 000024be: LT 000024bf: ISZERO 000024c0: PUSH2 0x24e8 000024c3: JUMPI 000024c4: DUP2 000024c5: MLOAD 000024c6: PUSH2 0x24cf 000024c9: DUP9 000024ca: DUP3 000024cb: PUSH2 0x2476 000024ce: JUMP 000024cf: JUMPDEST 000024d0: SWAP8 000024d1: POP 000024d2: PUSH2 0x24da 000024d5: DUP4 000024d6: PUSH2 0x248d 000024d9: JUMP 000024da: JUMPDEST 000024db: SWAP3 000024dc: POP 000024dd: POP 000024de: PUSH1 0x01 000024e0: DUP2 000024e1: ADD 000024e2: SWAP1 000024e3: POP 000024e4: PUSH2 0x24bb 000024e7: JUMP 000024e8: JUMPDEST 000024e9: POP 000024ea: DUP6 000024eb: SWAP4 000024ec: POP 000024ed: POP 000024ee: POP 000024ef: POP 000024f0: SWAP3 000024f1: SWAP2 000024f2: POP 000024f3: POP 000024f4: JUMP 000024f5: JUMPDEST 000024f6: PUSH0 000024f7: PUSH1 0x80 000024f9: DUP3 000024fa: ADD 000024fb: SWAP1 000024fc: POP 000024fd: PUSH2 0x2508 00002500: PUSH0 00002501: DUP4 00002502: ADD 00002503: DUP8 00002504: PUSH2 0x242f 00002507: JUMP 00002508: JUMPDEST 00002509: DUP2 0000250a: DUP2 0000250b: SUB 0000250c: PUSH1 0x20 0000250e: DUP4 0000250f: ADD 00002510: MSTORE 00002511: PUSH2 0x251a 00002514: DUP2 00002515: DUP7 00002516: PUSH2 0x2499 00002519: JUMP 0000251a: JUMPDEST 0000251b: SWAP1 0000251c: POP 0000251d: PUSH2 0x2529 00002520: PUSH1 0x40 00002522: DUP4 00002523: ADD 00002524: DUP6 00002525: PUSH2 0x1c63 00002528: JUMP 00002529: JUMPDEST 0000252a: PUSH2 0x2536 0000252d: PUSH1 0x60 0000252f: DUP4 00002530: ADD 00002531: DUP5 00002532: PUSH2 0x242f 00002535: JUMP 00002536: JUMPDEST 00002537: SWAP6 00002538: SWAP5 00002539: POP 0000253a: POP 0000253b: POP 0000253c: POP 0000253d: POP 0000253e: JUMP 0000253f: JUMPDEST 00002540: PUSH0 00002541: DUP2 00002542: SWAP1 00002543: POP 00002544: SWAP2 00002545: SWAP1 00002546: POP 00002547: JUMP 00002548: JUMPDEST 00002549: PUSH0 0000254a: PUSH1 0xff 0000254c: DUP3 0000254d: AND 0000254e: SWAP1 0000254f: POP 00002550: SWAP2 00002551: SWAP1 00002552: POP 00002553: JUMP 00002554: JUMPDEST 00002555: PUSH0 00002556: PUSH2 0x256e 00002559: PUSH2 0x2569 0000255c: PUSH2 0x2564 0000255f: DUP5 00002560: PUSH2 0x253f 00002563: JUMP 00002564: JUMPDEST 00002565: PUSH2 0x2105 00002568: JUMP 00002569: JUMPDEST 0000256a: PUSH2 0x2548 0000256d: JUMP 0000256e: JUMPDEST 0000256f: SWAP1 00002570: POP 00002571: SWAP2 00002572: SWAP1 00002573: POP 00002574: JUMP 00002575: JUMPDEST 00002576: PUSH2 0x257e 00002579: DUP2 0000257a: PUSH2 0x2554 0000257d: JUMP 0000257e: JUMPDEST 0000257f: DUP3 00002580: MSTORE 00002581: POP 00002582: POP 00002583: JUMP 00002584: JUMPDEST 00002585: PUSH0 00002586: PUSH1 0xa0 00002588: DUP3 00002589: ADD 0000258a: SWAP1 0000258b: POP 0000258c: PUSH2 0x2597 0000258f: PUSH0 00002590: DUP4 00002591: ADD 00002592: DUP9 00002593: PUSH2 0x242f 00002596: JUMP 00002597: JUMPDEST 00002598: PUSH2 0x25a4 0000259b: PUSH1 0x20 0000259d: DUP4 0000259e: ADD 0000259f: DUP8 000025a0: PUSH2 0x2575 000025a3: JUMP 000025a4: JUMPDEST 000025a5: DUP2 000025a6: DUP2 000025a7: SUB 000025a8: PUSH1 0x40 000025aa: DUP4 000025ab: ADD 000025ac: MSTORE 000025ad: PUSH2 0x25b6 000025b0: DUP2 000025b1: DUP7 000025b2: PUSH2 0x2499 000025b5: JUMP 000025b6: JUMPDEST 000025b7: SWAP1 000025b8: POP 000025b9: PUSH2 0x25c5 000025bc: PUSH1 0x60 000025be: DUP4 000025bf: ADD 000025c0: DUP6 000025c1: PUSH2 0x1c63 000025c4: JUMP 000025c5: JUMPDEST 000025c6: PUSH2 0x25d2 000025c9: PUSH1 0x80 000025cb: DUP4 000025cc: ADD 000025cd: DUP5 000025ce: PUSH2 0x242f 000025d1: JUMP 000025d2: JUMPDEST 000025d3: SWAP7 000025d4: SWAP6 000025d5: POP 000025d6: POP 000025d7: POP 000025d8: POP 000025d9: POP 000025da: POP 000025db: JUMP 000025dc: JUMPDEST 000025dd: PUSH0 000025de: DUP3 000025df: DUP3 000025e0: MSTORE 000025e1: PUSH1 0x20 000025e3: DUP3 000025e4: ADD 000025e5: SWAP1 000025e6: POP 000025e7: SWAP3 000025e8: SWAP2 000025e9: POP 000025ea: POP 000025eb: JUMP 000025ec: JUMPDEST 000025ed: PUSH0 000025ee: PUSH2 0x25f6 000025f1: DUP3 000025f2: PUSH2 0x2165 000025f5: JUMP 000025f6: JUMPDEST 000025f7: PUSH2 0x2600 000025fa: DUP2 000025fb: DUP6 000025fc: PUSH2 0x25dc 000025ff: JUMP 00002600: JUMPDEST 00002601: SWAP4 00002602: POP 00002603: PUSH2 0x2610 00002606: DUP2 00002607: DUP6 00002608: PUSH1 0x20 0000260a: DUP7 0000260b: ADD 0000260c: PUSH2 0x216f 0000260f: JUMP 00002610: JUMPDEST 00002611: PUSH2 0x2619 00002614: DUP2 00002615: PUSH2 0x199f 00002618: JUMP 00002619: JUMPDEST 0000261a: DUP5 0000261b: ADD 0000261c: SWAP2 0000261d: POP 0000261e: POP 0000261f: SWAP3 00002620: SWAP2 00002621: POP 00002622: POP 00002623: JUMP 00002624: JUMPDEST 00002625: PUSH0 00002626: PUSH1 0x40 00002628: DUP3 00002629: ADD 0000262a: SWAP1 0000262b: POP 0000262c: PUSH2 0x2637 0000262f: PUSH0 00002630: DUP4 00002631: ADD 00002632: DUP6 00002633: PUSH2 0x1c63 00002636: JUMP 00002637: JUMPDEST 00002638: DUP2 00002639: DUP2 0000263a: SUB 0000263b: PUSH1 0x20 0000263d: DUP4 0000263e: ADD 0000263f: MSTORE 00002640: PUSH2 0x2649 00002643: DUP2 00002644: DUP5 00002645: PUSH2 0x25ec 00002648: JUMP 00002649: JUMPDEST 0000264a: SWAP1 0000264b: POP 0000264c: SWAP4 0000264d: SWAP3 0000264e: POP 0000264f: POP 00002650: POP 00002651: JUMP 00002652: JUMPDEST 00002653: PUSH32 0x436f6e7472616374204661696c656420546f204175746f737761700000000000 00002674: PUSH0 00002675: DUP3 00002676: ADD 00002677: MSTORE 00002678: POP 00002679: JUMP 0000267a: JUMPDEST 0000267b: PUSH0 0000267c: PUSH2 0x2686 0000267f: PUSH1 0x1b 00002681: DUP4 00002682: PUSH2 0x1d93 00002685: JUMP 00002686: JUMPDEST 00002687: SWAP2 00002688: POP 00002689: PUSH2 0x2691 0000268c: DUP3 0000268d: PUSH2 0x2652 00002690: JUMP 00002691: JUMPDEST 00002692: PUSH1 0x20 00002694: DUP3 00002695: ADD 00002696: SWAP1 00002697: POP 00002698: SWAP2 00002699: SWAP1 0000269a: POP 0000269b: JUMP 0000269c: JUMPDEST 0000269d: PUSH0 0000269e: PUSH1 0x20 000026a0: DUP3 000026a1: ADD 000026a2: SWAP1 000026a3: POP 000026a4: DUP2 000026a5: DUP2 000026a6: SUB 000026a7: PUSH0 000026a8: DUP4 000026a9: ADD 000026aa: MSTORE 000026ab: PUSH2 0x26b3 000026ae: DUP2 000026af: PUSH2 0x267a 000026b2: JUMP 000026b3: JUMPDEST 000026b4: SWAP1 000026b5: POP 000026b6: SWAP2 000026b7: SWAP1 000026b8: POP 000026b9: JUMP 000026ba: JUMPDEST 000026bb: PUSH0 000026bc: PUSH2 0x26c4 000026bf: DUP3 000026c0: PUSH2 0x1926 000026c3: JUMP 000026c4: JUMPDEST 000026c5: SWAP2 000026c6: POP 000026c7: PUSH2 0x26cf 000026ca: DUP4 000026cb: PUSH2 0x1926 000026ce: JUMP 000026cf: JUMPDEST 000026d0: SWAP3 000026d1: POP 000026d2: DUP3 000026d3: DUP3 000026d4: SUB 000026d5: SWAP1 000026d6: POP 000026d7: DUP2 000026d8: DUP2 000026d9: GT 000026da: ISZERO 000026db: PUSH2 0x26e7 000026de: JUMPI 000026df: PUSH2 0x26e6 000026e2: PUSH2 0x23cf 000026e5: JUMP 000026e6: JUMPDEST 000026e7: JUMPDEST 000026e8: SWAP3 000026e9: SWAP2 000026ea: POP 000026eb: POP 000026ec: JUMP 000026ed: JUMPDEST 000026ee: PUSH32 0x436f6e74726163742052656d6f76656420496e73756666696369656e74204c69 0000270f: PUSH0 00002710: DUP3 00002711: ADD 00002712: MSTORE 00002713: PUSH32 0x7175696469747900000000000000000000000000000000000000000000000000 00002734: PUSH1 0x20 00002736: DUP3 00002737: ADD 00002738: MSTORE 00002739: POP 0000273a: JUMP 0000273b: JUMPDEST 0000273c: PUSH0 0000273d: PUSH2 0x2747 00002740: PUSH1 0x27 00002742: DUP4 00002743: PUSH2 0x1d93 00002746: JUMP 00002747: JUMPDEST 00002748: SWAP2 00002749: POP 0000274a: PUSH2 0x2752 0000274d: DUP3 0000274e: PUSH2 0x26ed 00002751: JUMP 00002752: JUMPDEST 00002753: PUSH1 0x40 00002755: DUP3 00002756: ADD 00002757: SWAP1 00002758: POP 00002759: SWAP2 0000275a: SWAP1 0000275b: POP 0000275c: JUMP 0000275d: JUMPDEST 0000275e: PUSH0 0000275f: PUSH1 0x20 00002761: DUP3 00002762: ADD 00002763: SWAP1 00002764: POP 00002765: DUP2 00002766: DUP2 00002767: SUB 00002768: PUSH0 00002769: DUP4 0000276a: ADD 0000276b: MSTORE 0000276c: PUSH2 0x2774 0000276f: DUP2 00002770: PUSH2 0x273b 00002773: JUMP 00002774: JUMPDEST 00002775: SWAP1 00002776: POP 00002777: SWAP2 00002778: SWAP1 00002779: POP 0000277a: JUMP 0000277b: JUMPDEST 0000277c: PUSH0 0000277d: PUSH14 0xffffffffffffffffffffffffffff 0000278c: DUP3 0000278d: AND 0000278e: SWAP1 0000278f: POP 00002790: SWAP2 00002791: SWAP1 00002792: POP 00002793: JUMP 00002794: JUMPDEST 00002795: PUSH2 0x279d 00002798: DUP2 00002799: PUSH2 0x277b 0000279c: JUMP 0000279d: JUMPDEST 0000279e: DUP2 0000279f: EQ 000027a0: PUSH2 0x27a7 000027a3: JUMPI 000027a4: PUSH0 000027a5: DUP1 000027a6: REVERT 000027a7: JUMPDEST 000027a8: POP 000027a9: JUMP 000027aa: JUMPDEST 000027ab: PUSH0 000027ac: DUP2 000027ad: MLOAD 000027ae: SWAP1 000027af: POP 000027b0: PUSH2 0x27b8 000027b3: DUP2 000027b4: PUSH2 0x2794 000027b7: JUMP 000027b8: JUMPDEST 000027b9: SWAP3 000027ba: SWAP2 000027bb: POP 000027bc: POP 000027bd: JUMP 000027be: JUMPDEST 000027bf: PUSH0 000027c0: DUP1 000027c1: PUSH1 0x40 000027c3: DUP4 000027c4: DUP6 000027c5: SUB 000027c6: SLT 000027c7: ISZERO 000027c8: PUSH2 0x27d4 000027cb: JUMPI 000027cc: PUSH2 0x27d3 000027cf: PUSH2 0x18c4 000027d2: JUMP 000027d3: JUMPDEST 000027d4: JUMPDEST 000027d5: PUSH0 000027d6: PUSH2 0x27e1 000027d9: DUP6 000027da: DUP3 000027db: DUP7 000027dc: ADD 000027dd: PUSH2 0x27aa 000027e0: JUMP 000027e1: JUMPDEST 000027e2: SWAP3 000027e3: POP 000027e4: POP 000027e5: PUSH1 0x20 000027e7: PUSH2 0x27f2 000027ea: DUP6 000027eb: DUP3 000027ec: DUP7 000027ed: ADD 000027ee: PUSH2 0x27aa 000027f1: JUMP 000027f2: JUMPDEST 000027f3: SWAP2 000027f4: POP 000027f5: POP 000027f6: SWAP3 000027f7: POP 000027f8: SWAP3 000027f9: SWAP1 000027fa: POP 000027fb: JUMP 000027fc: JUMPDEST 000027fd: PUSH0 000027fe: PUSH2 0x2806 00002801: DUP3 00002802: PUSH2 0x1926 00002805: JUMP 00002806: JUMPDEST 00002807: SWAP2 00002808: POP 00002809: PUSH2 0x2811 0000280c: DUP4 0000280d: PUSH2 0x1926 00002810: JUMP 00002811: JUMPDEST 00002812: SWAP3 00002813: POP 00002814: DUP3 00002815: DUP3 00002816: MUL 00002817: PUSH2 0x281f 0000281a: DUP2 0000281b: PUSH2 0x1926 0000281e: JUMP 0000281f: JUMPDEST 00002820: SWAP2 00002821: POP 00002822: DUP3 00002823: DUP3 00002824: DIV 00002825: DUP5 00002826: EQ 00002827: DUP4 00002828: ISZERO 00002829: OR 0000282a: PUSH2 0x2836 0000282d: JUMPI 0000282e: PUSH2 0x2835 00002831: PUSH2 0x23cf 00002834: JUMP 00002835: JUMPDEST 00002836: JUMPDEST 00002837: POP 00002838: SWAP3 00002839: SWAP2 0000283a: POP 0000283b: POP 0000283c: JUMP 0000283d: JUMPDEST 0000283e: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000285f: PUSH0 00002860: MSTORE 00002861: PUSH1 0x12 00002863: PUSH1 0x04 00002865: MSTORE 00002866: PUSH1 0x24 00002868: PUSH0 00002869: REVERT 0000286a: JUMPDEST 0000286b: PUSH0 0000286c: PUSH2 0x2874 0000286f: DUP3 00002870: PUSH2 0x1926 00002873: JUMP 00002874: JUMPDEST 00002875: SWAP2 00002876: POP 00002877: PUSH2 0x287f 0000287a: DUP4 0000287b: PUSH2 0x1926 0000287e: JUMP 0000287f: JUMPDEST 00002880: SWAP3 00002881: POP 00002882: DUP3 00002883: PUSH2 0x288f 00002886: JUMPI 00002887: PUSH2 0x288e 0000288a: PUSH2 0x283d 0000288d: JUMP 0000288e: JUMPDEST 0000288f: JUMPDEST 00002890: DUP3 00002891: DUP3 00002892: DIV 00002893: SWAP1 00002894: POP 00002895: SWAP3 00002896: SWAP2 00002897: POP 00002898: POP 00002899: JUMP 0000289a: INVALID 0000289b: LOG2 0000289c: PUSH5 0x6970667358 000028a2: UNKNOWN(0x22) 000028a3: SLT 000028a4: KECCAK256 000028a5: RETURNDATACOPY 000028a6: ADD 000028a7: PUSH20 0x2fc6bbd2e7b04985571e90cb78446ef443290c3d 000028bc: STATICCALL 000028bd: PUSH28
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xc4652af1",
"selector": "0xc4652af1",
"calldata_variants": [
"0xc4652af1",
"0xc4652af10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4c1c94f",
"selector": "0xc4c1c94f",
"calldata_variants": [
"0xc4c1c94f",
"0xc4c1c94f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xde3a04ad",
"selector": "0xde3a04ad",
"calldata_variants": [
"0xde3a04ad",
"0xde3a04ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1784e0c",
"selector": "0xf1784e0c",
"calldata_variants": [
"0xf1784e0c",
"0xf1784e0c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfe4b84df",
"selector": "0xfe4b84df",
"calldata_variants": [
"0xfe4b84df",
"0xfe4b84df0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a31f6b4",
"selector": "0x2a31f6b4",
"calldata_variants": [
"0x2a31f6b4",
"0x2a31f6b40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5e4ba17c",
"selector": "0x5e4ba17c",
"calldata_variants": [
"0x5e4ba17c",
"0x5e4ba17c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 1341,
"type": "tx_origin_used"
},
{
"pc": 1448,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1781,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5445,
"type": "tx_origin_used"
},
{
"pc": 5583,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x0c9e553eae39efb0d9e284c8a57819ddebc91f6148a5626dafea37833fc5b2ae
call_targets:
0x4a836ef6c129a2c96cae42fa367c7d229c5ea802
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x0c9e553eae39efb0d9e284c8a57819ddebc91f6148a5626dafea37833fc5b2ae",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x4a836ef6c129a2c96cae42fa367c7d229c5ea802"
],
"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": "0xc4652af1",
"selector": "0xc4652af1",
"calldata_variants": [
"0xc4652af1",
"0xc4652af10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4c1c94f",
"selector": "0xc4c1c94f",
"calldata_variants": [
"0xc4c1c94f",
"0xc4c1c94f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xde3a04ad",
"selector": "0xde3a04ad",
"calldata_variants": [
"0xde3a04ad",
"0xde3a04ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1784e0c",
"selector": "0xf1784e0c",
"calldata_variants": [
"0xf1784e0c",
"0xf1784e0c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfe4b84df",
"selector": "0xfe4b84df",
"calldata_variants": [
"0xfe4b84df",
"0xfe4b84df0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a31f6b4",
"selector": "0x2a31f6b4",
"calldata_variants": [
"0x2a31f6b4",
"0x2a31f6b40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5e4ba17c",
"selector": "0x5e4ba17c",
"calldata_variants": [
"0x5e4ba17c",
"0x5e4ba17c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 867,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1283,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "constant_zero",
"target_expression_category": "computed"
},
{
"pc": 1615,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 9,
"guards_detected": [
{
"pc": 1341,
"type": "tx_origin_used"
},
{
"pc": 1448,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1781,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5445,
"type": "tx_origin_used"
},
{
"pc": 5583,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 8
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x0c9e553eae39efb0d9e284c8a57819ddebc91f6148a5626dafea37833fc5b2ae
call_targets:
0x4a836ef6c129a2c96cae42fa367c7d229c5ea802
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x0c9e553eae39efb0d9e284c8a57819ddebc91f6148a5626dafea37833fc5b2ae",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x4a836ef6c129a2c96cae42fa367c7d229c5ea802"
],
"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": "0xc4652af1",
"selector": "0xc4652af1",
"calldata_variants": [
"0xc4652af1",
"0xc4652af10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4c1c94f",
"selector": "0xc4c1c94f",
"calldata_variants": [
"0xc4c1c94f",
"0xc4c1c94f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xde3a04ad",
"selector": "0xde3a04ad",
"calldata_variants": [
"0xde3a04ad",
"0xde3a04ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1784e0c",
"selector": "0xf1784e0c",
"calldata_variants": [
"0xf1784e0c",
"0xf1784e0c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfe4b84df",
"selector": "0xfe4b84df",
"calldata_variants": [
"0xfe4b84df",
"0xfe4b84df0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a31f6b4",
"selector": "0x2a31f6b4",
"calldata_variants": [
"0x2a31f6b4",
"0x2a31f6b40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5e4ba17c",
"selector": "0x5e4ba17c",
"calldata_variants": [
"0x5e4ba17c",
"0x5e4ba17c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 867,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1615,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2004,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": [
{
"pc": 1341,
"type": "tx_origin_used"
},
{
"pc": 1448,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 1781,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5445,
"type": "tx_origin_used"
},
{
"pc": 5583,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xc56d79faf30b7f34a82c05f7dc3923fb6172ba2638ddb4f9e56f4a699616117c
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 18,
"trace_id": "0xc56d79faf30b7f34a82c05f7dc3923fb6172ba2638ddb4f9e56f4a699616117c",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xc4652af1",
"selector": "0xc4652af1",
"calldata_variants": [
"0xc4652af1",
"0xc4652af10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4c1c94f",
"selector": "0xc4c1c94f",
"calldata_variants": [
"0xc4c1c94f",
"0xc4c1c94f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xde3a04ad",
"selector": "0xde3a04ad",
"calldata_variants": [
"0xde3a04ad",
"0xde3a04ad0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1784e0c",
"selector": "0xf1784e0c",
"calldata_variants": [
"0xf1784e0c",
"0xf1784e0c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfe4b84df",
"selector": "0xfe4b84df",
"calldata_variants": [
"0xfe4b84df",
"0xfe4b84df0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a31f6b4",
"selector": "0x2a31f6b4",
"calldata_variants": [
"0x2a31f6b4",
"0x2a31f6b40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5e4ba17c",
"selector": "0x5e4ba17c",
"calldata_variants": [
"0x5e4ba17c",
"0x5e4ba17c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 1
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 1
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 15
}
|