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

Analysis Run

6078e8b1-e34f-40d7-bbae-b7e41ea66eea

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

What survived the funnel

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

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

Processing Jobs

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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

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

Opcode Heuristics

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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_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
view
trace_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
view
trace_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
view
trace_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
view
evidence_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
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 15
}