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

Analysis Run

6ff90cd5-b2c0-415e-a1e0-33b8a1e58361

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 4:06 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31284 report.consolidate complete 1 / 1 3 months ago
110702 artifact.fetch complete 1 / 3 1 week ago
110703 tool.cast_disasm complete 1 / 3 1 week ago
110704 analysis.bundle complete 1 / 3 1 week ago
110705 capability.graph complete 1 / 3 1 week ago
110706 detector.run complete 1 / 3 1 week ago
110707 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 value-extraction path identified from the bytecode; the only CALL observed appears to be a gas-limited ETH send gated by holder/allowance checks, and no delegatecall/selfdestruct or unprotected upgrade patterns are present.
View stderr
[codex:578739] OpenAI Codex v0.77.0 (research preview)
[codex:578739] --------
[codex:578739] workdir: /tmp/codex-multi-9li59urj
[codex:578739] model: gpt-5.2-codex
[codex:578739] provider: openai
[codex:578739] approval: never
[codex:578739] sandbox: read-only
[codex:578739] reasoning effort: xhigh
[codex:578739] reasoning summaries: auto
[codex:578739] session id: 019b7f6d-5bfd-7b52-9225-106d037db5a4
[codex:578739] --------
[codex:578739] user
[codex:578739] 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:578739] 
[codex:578739] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:578739] 
[codex:578739] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:578739] - Gas inefficiency, code quality, or best practices
[codex:578739] - Theoretical vulnerabilities without a clear extraction path
[codex:578739] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:578739] - Issues requiring social engineering or off-chain coordination
[codex:578739] 
[codex:578739] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:578739] - CALL/DELEGATECALL with controllable destination or calldata
[codex:578739] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:578739] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:578739] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:578739] - External calls before state updates (reentrancy)
[codex:578739] - SELFDESTRUCT with controllable beneficiary
[codex:578739] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:578739] 
[codex:578739] For each finding, you MUST explain:
[codex:578739] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:578739] 2. The concrete sequence of transactions to extract value
[codex:578739] 3. Why you believe this is exploitable (not just suspicious)
[codex:578739] 
[codex:578739] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:578739] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:578739] 
[codex:578739] Output MUST be valid JSON matching the provided schema.
[codex:578739] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:578739] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:578739] mcp startup: no servers
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Preparing to read bytecode bundle**
[codex:578739] exec
[codex:578739] /bin/bash -lc ls in /tmp/codex-multi-9li59urj succeeded in 10ms:
[codex:578739] BYTECODE_BUNDLE.txt
[codex:578739] codex-output-schema.json
[codex:578739] exec
[codex:578739] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-9li59urj succeeded in 5ms:
[codex:578739] Runtime bytecode bundle for best-effort auditing.
[codex:578739] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:578739] 
[codex:578739] FILE: runtime_bytecode.hex
[codex:578739] 0x6080604052600436106101025760003560e01c8063bf0a196d11610095578063d95d5fe911610064578063d95d5fe914610316578063f215f53514610341578063f2fde38b1461037e578063f37c4bce146103a7578063f80f5dd5146103d057610109565b8063bf0a196d14610284578063c43584651461029b578063c4a5f67f146102c4578063c694d040146102ed57610109565b806375e3ae06116100d157806375e3ae06146101b45780638da5cb5b146101f1578063905f7a1c1461021c578063951a903d1461024757610109565b8063280a24311461010e5780632c2bab2f146101375780633627301e1461016257806351cff8d91461018b57610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101356004803603810190610130919061485c565b6103f9565b005b34801561014357600080fd5b5061014c610521565b6040516101599190614c29565b60405180910390f35b34801561016e57600080fd5b506101896004803603810190610184919061485c565b610680565b005b34801561019757600080fd5b506101b260048036038101906101ad919061485c565b610df7565b005b3480156101c057600080fd5b506101db60048036038101906101d69190614885565b610ed3565b6040516101e89190614c29565b60405180910390f35b3480156101fd57600080fd5b506102066110b9565b6040516102139190614b0e565b60405180910390f35b34801561022857600080fd5b506102316110e2565b60405161023e9190614c29565b60405180910390f35b34801561025357600080fd5b5061026e60048036038101906102699190614885565b611184565b60405161027b9190614c29565b60405180910390f35b34801561029057600080fd5b50610299611360565b005b3480156102a757600080fd5b506102c260048036038101906102bd91906148fd565b61152b565b005b3480156102d057600080fd5b506102eb60048036038101906102e691906148c1565b6119b6565b005b3480156102f957600080fd5b50610314600480360381019061030f9190614986565b612343565b005b34801561032257600080fd5b5061032b6124af565b6040516103389190614c29565b60405180910390f35b34801561034d57600080fd5b5061036860048036038101906103639190614885565b612551565b6040516103759190614c29565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a0919061485c565b612737565b005b3480156103b357600080fd5b506103ce60048036038101906103c9919061485c565b612889565b005b3480156103dc57600080fd5b506103f760048036038101906103f2919061485c565b61299a565b005b6104016110b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806104875750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90614b29565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a690614b29565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290614b49565b60405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070390614b29565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078f90614b49565b60405180910390fd5b60003390506000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016108969190614b0e565b60206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e691906149af565b90506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808211610987576001816109849190614c55565b91505b610a0e8385600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ac2565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a9784612cbf565b6000601754600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548385610ae89190614d36565b610af29190614cdc565b610afc9190614cab565b9050600060175460185483610b119190614cdc565b610b1b9190614cab565b90508082610b299190614d36565b915081600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b769190614c55565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060175482600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601754610d479190614d36565b610d519190614c55565b610d5b9190614cdc565b610d659190614cab565b601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610def858761322b565b505050505050565b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790614c09565b60405180910390fd5b6000339050610ecf82826136c7565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890614b89565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190614bc9565b60405180910390fd5b6110b18383600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e18565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790614b29565b60405180910390fd5b600033905061117e81614277565b91505090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990614b89565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d290614bc9565b60405180910390fd5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390614b29565b60405180910390fd5b60003390506000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156114b257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611468575b505050505090506000600190505b815181101561152657611513828281518110611505577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151846136c7565b808061151e90614da6565b9150506114c0565b505050565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90614b29565b60405180910390fd5b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90614b69565b60405180910390fd5b81600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990614b29565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590614b49565b60405180910390fd5b600033905081600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b1e9190614c55565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bac9190614c55565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611cfc84612cbf565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481118015611e415750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b8015611e8c57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612160576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611f1b9190614d36565b905060175481601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fe89190614d36565b611ff29190614cdc565b611ffc9190614cab565b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120879190614c55565b925050819055506001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da9190614d36565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505061233d565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561226a57506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561233c576001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122bb9190614d36565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612382614488565b73ffffffffffffffffffffffffffffffffffffffff16146123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90614be9565b60405180910390fd5b6123e06110b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806124665750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c90614b29565b60405180910390fd5b8060188190555050565b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490614b29565b60405180910390fd5b600033905061254b81614490565b91505090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d690614b89565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269f90614bc9565b60405180910390fd5b61272f8383600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ac2565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612776614488565b73ffffffffffffffffffffffffffffffffffffffff16146127cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c390614be9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128916110b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806129175750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294d90614b29565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6129a26110b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612a285750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5e90614b29565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b8c9190614d36565b9050601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546017548584612c979190614cdc565b612ca19190614cab565b612cab9190614c55565b612cb59190614c55565b9150509392505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4290614b29565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dce90614b49565b60405180910390fd5b60003390506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401612e769190614b0e565b60206040518083038186803b158015612e8e57600080fd5b505afa158015612ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec691906149af565b9050601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f939190614d36565b92505081905550620186a0601754612faa846146a1565b620186a084612fb99190614cdc565b612fc39190614cab565b612fcd9190614cdc565b612fd79190614cab565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131229190614c55565b92505081905550600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613439576001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600067ffffffffffffffff811115613315577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156133435781602001602082028036833780820191505090505b50601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190613396929190614776565b50601660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561362e57601660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506135ad9190614d36565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374a90614b89565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161381390614bc9565b60405180910390fd5b60006138a58383600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e18565b905080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561393157600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60008111613974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161396b90614ba9565b60405180910390fd5b6000601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613abc573d6000803e3d6000fd5b50600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550828183613c0c9190614c55565b10613cb9578260018284613c209190614c55565b613c2a9190614c55565b613c349190614d36565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3c565b6000601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613e115782600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613dcd9190614d36565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050505050565b6000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161407a576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080828461402f9190614c55565b1161404a5781836140409190614c55565b9350505050614270565b80831161405c57829350505050614270565b80821161406e57819350505050614270565b60009350505050614270565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141439190614d36565b9050601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601754858461424e9190614cdc565b6142589190614cab565b6142629190614c55565b61426c9190614c55565b9150505b9392505050565b600080600090506000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561433f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116142f5575b505050505090506000600190505b815181101561447d5761445d828281518110614392577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015186600f60008686815181106143d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e18565b836144689190614c55565b9250808061447590614da6565b91505061434d565b508192505050919050565b600033905090565b600080600090506000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561455857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161450e575b505050505090506000600190505b8151811015614696576146768282815181106145ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015186600f60008686815181106145f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ac2565b836146819190614c55565b9250808061468e90614da6565b915050614566565b508192505050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661472f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161472690614b89565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b8280548282559060005260206000209081019282156147ef579160200282015b828111156147ee5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190614796565b5b5090506147fc9190614800565b5090565b5b80821115614819576000816000905550600101614801565b5090565b60008135905061482c81614f95565b92915050565b60008135905061484181614fac565b92915050565b60008151905061485681614fac565b92915050565b60006020828403121561486e57600080fd5b600061487c8482850161481d565b91505092915050565b6000806040838503121561489857600080fd5b60006148a68582860161481d565b92505060206148b78582860161481d565b9150509250929050565b600080604083850312156148d457600080fd5b60006148e28582860161481d565b92505060206148f385828601614832565b9150509250929050565b60008060008060008060c0878903121561491657600080fd5b600061492489828a0161481d565b965050602061493589828a01614832565b955050604061494689828a0161481d565b945050606061495789828a0161481d565b935050608061496889828a01614832565b92505060a061497989828a01614832565b9150509295509295509295565b60006020828403121561499857600080fd5b60006149a684828501614832565b91505092915050565b6000602082840312156149c157600080fd5b60006149cf84828501614847565b91505092915050565b6149e181614d6a565b82525050565b60006149f4600c83614c44565b91506149ff82614e4d565b602082019050919050565b6000614a17600d83614c44565b9150614a2282614e76565b602082019050919050565b6000614a3a601483614c44565b9150614a4582614e9f565b602082019050919050565b6000614a5d600f83614c44565b9150614a6882614ec8565b602082019050919050565b6000614a80601583614c44565b9150614a8b82614ef1565b602082019050919050565b6000614aa3600e83614c44565b9150614aae82614f1a565b602082019050919050565b6000614ac6602083614c44565b9150614ad182614f43565b602082019050919050565b6000614ae9600c83614c44565b9150614af482614f6c565b602082019050919050565b614b0881614d9c565b82525050565b6000602082019050614b2360008301846149d8565b92915050565b60006020820190508181036000830152614b42816149e7565b9050919050565b60006020820190508181036000830152614b6281614a0a565b9050919050565b60006020820190508181036000830152614b8281614a2d565b9050919050565b60006020820190508181036000830152614ba281614a50565b9050919050565b60006020820190508181036000830152614bc281614a73565b9050919050565b60006020820190508181036000830152614be281614a96565b9050919050565b60006020820190508181036000830152614c0281614ab9565b9050919050565b60006020820190508181036000830152614c2281614adc565b9050919050565b6000602082019050614c3e6000830184614aff565b92915050565b600082825260208201905092915050565b6000614c6082614d9c565b9150614c6b83614d9c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ca057614c9f614def565b5b828201905092915050565b6000614cb682614d9c565b9150614cc183614d9c565b925082614cd157614cd0614e1e565b5b828204905092915050565b6000614ce782614d9c565b9150614cf283614d9c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d2b57614d2a614def565b5b828202905092915050565b6000614d4182614d9c565b9150614d4c83614d9c565b925082821015614d5f57614d5e614def565b5b828203905092915050565b6000614d7582614d7c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000614db182614d9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614de457614de3614def565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f556e696e697469616c697a656400000000000000000000000000000000000000600082015250565b7f416c726561647920696e697469616c697a65642e000000000000000000000000600082015250565b7f4e6f7420696e697469616c697a65640000000000000000000000000000000000600082015250565b7f496e73756666696369656e742062616c616e63652e0000000000000000000000600082015250565b7f496e76616c696420686f6c646572000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f74206120686f6c6465720000000000000000000000000000000000000000600082015250565b614f9e81614d6a565b8114614fa957600080fd5b50565b614fb581614d9c565b8114614fc057600080fd5b5056fea2646970667358221220cf1475b35fa40c3db925a9fad616ee7ff3f1f91dfdfe2ff46f528d08dacb163664736f6c63430008040033
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Investigating bytecode for exploit patterns**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re, binascii, textwrap
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] # extract hex after runtime_bytecode
[codex:578739] m=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p)
[codex:578739] print('found', bool(m))
[codex:578739] hexstr=m.group(1)
[codex:578739] hexstr=hexstr[2:]
[codex:578739] # remove ellipsis if truncated? ensure no non-hex
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] print('len hex', len(hexstr))
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] print('code bytes', len(code))
[codex:578739] # count opcodes
[codex:578739] from collections import Counter
[codex:578739] ops=Counter(code)
[codex:578739] for op in [0xf1,0xf2,0xf4,0xf5,0xff]:
[codex:578739]     print(hex(op), ops[op])
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 40ms:
[codex:578739] found True
[codex:578739] len hex 40946
[codex:578739] code bytes 20473
[codex:578739] 0xf1 5
[codex:578739] 0xf2 7
[codex:578739] 0xf4 3
[codex:578739] 0xf5 2
[codex:578739] 0xff 8203
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Implementing EVM disassembler**
[codex:578739] 
[codex:578739] I’m planning to build a simple EVM disassembler to parse the bytecode correctly and distinguish real opcodes like CALL, CALLCODE, DELEGATECALL, and SELFDESTRUCT from data bytes such as 0xff in PUSH instructions. I want to collect opcode offsets and inspect surrounding instructions for deeper insight. Running a Python script to extract and analyze these opcodes feels like the best next step.
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # opcode map (partial)
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] # disassemble and record call-like ops
[codex:578739] call_ops = {0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op, f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((idx-1-len(arg), op, name, arg))
[codex:578739] 
[codex:578739] # build map offset->inst index
[codex:578739] offset_to_index={off:i for i,(off,_,_,_) in enumerate(instructions)}
[codex:578739] 
[codex:578739] # print call-like instructions with context
[codex:578739] for i,(off,op,name,arg) in enumerate(instructions):
[codex:578739]     if op in call_ops:
[codex:578739]         print(f\"{name} at 0x{off:04x}\")
[codex:578739]         # print 8 instructions before and after
[codex:578739]         for j in range(max(0,i-8), min(len(instructions), i+8)):
[codex:578739]             o,op2,nm,arg2=instructions[j]
[codex:578739]             if 0x60<=op2<=0x7f:
[codex:578739]                 arg_hex=arg2.hex()
[codex:578739]                 print(f\"  0x{o:04x}: {nm} 0x{arg_hex}\")
[codex:578739]             else:
[codex:578739]                 print(f\"  0x{o:04x}: {nm}\")
[codex:578739]         print('----')
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 44ms:
[codex:578739] STATICCALL at 0x08b1
[codex:578739]   0x08a6: PUSH2 0x08ae
[codex:578739]   0x08a9: JUMPI
[codex:578739]   0x08aa: PUSH1 0x00
[codex:578739]   0x08ac: DUP1
[codex:578739]   0x08ad: REVERT
[codex:578739]   0x08ae: JUMPDEST
[codex:578739]   0x08af: POP
[codex:578739]   0x08b0: GAS
[codex:578739]   0x08b1: STATICCALL
[codex:578739]   0x08b2: ISZERO
[codex:578739]   0x08b3: DUP1
[codex:578739]   0x08b4: ISZERO
[codex:578739]   0x08b5: PUSH2 0x08c2
[codex:578739]   0x08b8: JUMPI
[codex:578739]   0x08b9: RETURNDATASIZE
[codex:578739]   0x08ba: PUSH1 0x00
[codex:578739] ----
[codex:578739] STATICCALL at 0x2e91
[codex:578739]   0x2e86: PUSH2 0x2e8e
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing discrepancy in call opcode counts**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] ops = {}
[codex:578739] for op in range(256):
[codex:578739]     ops[op]=op
[codex:578739] 
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     op=code[idx]
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append(op)
[codex:578739] 
[codex:578739] from collections import Counter
[codex:578739] cnt=Counter(instructions)
[codex:578739] for op in [0xf1,0xf2,0xf4,0xfa,0xff,0xf0,0xf5]:
[codex:578739]     print(hex(op), cnt.get(op,0))
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 32ms:
[codex:578739] 0xf1 1
[codex:578739] 0xf2 0
[codex:578739] 0xf4 0
[codex:578739] 0xfa 2
[codex:578739] 0xff 0
[codex:578739] 0xf0 0
[codex:578739] 0xf5 0
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing CALL opcode details**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble with offsets
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] # find call offset
[codex:578739] call_off=None
[codex:578739] for off,op,name,arg in instructions:
[codex:578739]     if op==0xf1:
[codex:578739]         call_off=off
[codex:578739]         break
[codex:578739] print('CALL at',hex(call_off))
[codex:578739] 
[codex:578739] # print context 60 instructions around
[codex:578739] idx_call=[i for i,(off,op,_,_) in enumerate(instructions) if off==call_off][0]
[codex:578739] start=max(0, idx_call-60)
[codex:578739] end=min(len(instructions), idx_call+10)
[codex:578739] for off,op,name,arg in instructions[start:end]:
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         print(f\"0x{off:04x}: {name} 0x{arg.hex()}\")
[codex:578739]     else:
[codex:578739]         print(f\"0x{off:04x}: {name}\")
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 43ms:
[codex:578739] CALL at 0x3aa6
[codex:578739] 0x39f8: PUSH1 0x12
[codex:578739] 0x39fa: PUSH1 0x00
[codex:578739] 0x39fc: DUP7
[codex:578739] 0x39fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:578739] 0x3a12: AND
[codex:578739] 0x3a13: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:578739] 0x3a28: AND
[codex:578739] 0x3a29: DUP2
[codex:578739] 0x3a2a: MSTORE
[codex:578739] 0x3a2b: PUSH1 0x20
[codex:578739] 0x3a2d: ADD
[codex:578739] 0x3a2e: SWAP1
[codex:578739] 0x3a2f: DUP2
[codex:578739] 0x3a30: MSTORE
[codex:578739] 0x3a31: PUSH1 0x20
[codex:578739] 0x3a33: ADD
[codex:578739] 0x3a34: PUSH1 0x00
[codex:578739] 0x3a36: SHA3
[codex:578739] 0x3a37: PUSH1 0x00
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing EVM call parameters and dispatch mapping**
[codex:578739] 
[codex:578739] I'll decode the call’s stack and calldata, interpreting PUSH2 0x08fc as the gas stipend, and I want to symbolically track call args to see if value or called address can be attacker-controlled. Next, I’ll parse the dispatcher bytecode to map function selectors to jump destinations by scanning for PUSH4 selector and PUSH2 dest JUMPI patterns. I'll write a script to automate this extraction.
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble with offsets
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] # scan first 0x200 bytes for selector dispatch patterns
[codex:578739] selectors=[]
[codex:578739] for i in range(len(instructions)-3):
[codex:578739]     off,op,name,arg = instructions[i]
[codex:578739]     if op==0x63: # PUSH4
[codex:578739]         sel = arg.hex()
[codex:578739]         # look ahead for PUSH2 dest and JUMPI within next 4 inst
[codex:578739]         for j in range(1,6):
[codex:578739]             off2,op2,name2,arg2 = instructions[i+j]
[codex:578739]             if op2==0x61: # PUSH2
[codex:578739]                 dest = int.from_bytes(arg2, 'big')
[codex:578739]                 # check next instruction after PUSH2 is JUMPI or JUMP
[codex:578739]                 off3,op3,name3,arg3 = instructions[i+j+1]
[codex:578739]                 if op3==0x57:
[codex:578739]                     selectors.append((sel, dest, off))
[codex:578739]                 break
[codex:578739] 
[codex:578739] # print unique selectors
[codex:578739] seen=set()
[codex:578739] for sel,dest,off in selectors:
[codex:578739]     if sel not in seen:
[codex:578739]         seen.add(sel)
[codex:578739]         print(f\"selector 0x{sel} -> 0x{dest:04x}\")
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 38ms:
[codex:578739] selector 0xbf0a196d -> 0x0095
[codex:578739] selector 0xd95d5fe9 -> 0x0064
[codex:578739] selector 0xf215f535 -> 0x0341
[codex:578739] selector 0xf2fde38b -> 0x037e
[codex:578739] selector 0xf37c4bce -> 0x03a7
[codex:578739] selector 0xf80f5dd5 -> 0x03d0
[codex:578739] selector 0xc4358465 -> 0x029b
[codex:578739] selector 0xc4a5f67f -> 0x02c4
[codex:578739] selector 0xc694d040 -> 0x02ed
[codex:578739] selector 0x75e3ae06 -> 0x00d1
[codex:578739] selector 0x8da5cb5b -> 0x01f1
[codex:578739] selector 0x905f7a1c -> 0x021c
[codex:578739] selector 0x951a903d -> 0x0247
[codex:578739] selector 0x280a2431 -> 0x010e
[codex:578739] selector 0x2c2bab2f -> 0x0137
[codex:578739] selector 0x3627301e -> 0x0162
[codex:578739] selector 0x51cff8d9 -> 0x018b
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing call context with symbolic tracing**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble with offsets
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] call_off=0x3aa6
[codex:578739] # find last JUMPDEST before call
[codex:578739] last_jd=None
[codex:578739] for off,op,name,arg in instructions:
[codex:578739]     if off>=call_off:
[codex:578739]         break
[codex:578739]     if op==0x5b:
[codex:578739]         last_jd=off
[codex:578739] print('last JUMPDEST before call', hex(last_jd))
[codex:578739] # print from last_jd to some after call
[codex:578739] start_idx=[i for i,(off,op,_,_) in enumerate(instructions) if off==last_jd][0]
[codex:578739] end_idx=[i for i,(off,op,_,_) in enumerate(instructions) if off==call_off][0]+15
[codex:578739] for off,op,name,arg in instructions[start_idx:end_idx]:
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         print(f\"0x{off:04x}: {name} 0x{arg.hex()}\")
[codex:578739]     else:
[codex:578739]         print(f\"0x{off:04x}: {name}\")
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 41ms:
[codex:578739] last JUMPDEST before call 0x3974
[codex:578739] 0x3974: JUMPDEST
[codex:578739] 0x3975: PUSH1 0x00
[codex:578739] 0x3977: PUSH1 0x13
[codex:578739] 0x3979: PUSH1 0x00
[codex:578739] 0x397b: DUP6
[codex:578739] 0x397c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:578739] 0x3991: AND
[codex:578739] 0x3992: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:578739] 0x39a7: AND
[codex:578739] 0x39a8: DUP2
[codex:578739] 0x39a9: MSTORE
[codex:578739] 0x39aa: PUSH1 0x20
[codex:578739] 0x39ac: ADD
[codex:578739] 0x39ad: SWAP1
[codex:578739] 0x39ae: DUP2
[codex:578739] 0x39af: MSTORE
[codex:578739] 0x39b0: PUSH1 0x20
[codex:578739] 0x39b2: ADD
[codex:578739] 0x39b3: PUSH1 0x00
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing storage slot and call argument patterns**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] # build instructions list
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] # extract block from 0x3974 to call
[codex:578739] start=0x3974
[codex:578739] end=0x3aa6
[codex:578739] block=[inst for inst in instructions if start<=inst[0]<=end]
[codex:578739] 
[codex:578739] # symbolic execution
[codex:578739] stack=[f\"S{i}\" for i in range(12)]  # 12 placeholders bottom->top
[codex:578739] 
[codex:578739] # helper
[codex:578739] 
[codex:578739] def pop(n=1):
[codex:578739]     vals=[]
[codex:578739]     for _ in range(n):
[codex:578739]         vals.append(stack.pop())
[codex:578739]     return vals
[codex:578739] 
[codex:578739] def push(val):
[codex:578739]     stack.append(val)
[codex:578739] 
[codex:578739] for off,op,name,arg in block:
[codex:578739]     if op==0x5b: # JUMPDEST
[codex:578739]         continue
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         push(f\"0x{arg.hex()}\")
[codex:578739]         continue
[codex:578739]     if 0x80<=op<=0x8f: # DUP
[codex:578739]         n=op-0x7f
[codex:578739]         push(stack[-n])
[codex:578739]         continue
[codex:578739]     if 0x90<=op<=0x9f: # SWAP
[codex:578739]         n=op-0x8f
[codex:578739]         stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
[codex:578739]         continue
[codex:578739]     # unary ops
[codex:578739]     if name in ('POP',):
[codex:578739]         pop()
[codex:578739]         continue
[codex:578739]     if name in ('ISZERO','NOT'):
[codex:578739]         a=pop()[0]
[codex:578739]         push(f\"{name}({a})\")
[codex:578739]         continue
[codex:578739]     if name in ('SLOAD','MLOAD'):
[codex:578739]         a=pop()[0]
[codex:578739]         push(f\"{name}({a})\")
[codex:578739]         continue
[codex:578739]     if name in ('SHA3',):
[codex:578739]         a=pop()[0]
[codex:578739]         push(f\"SHA3({a})\")
[codex:578739]         continue
[codex:578739]     if name in ('CALLER','ADDRESS','CALLVALUE','CALLDATASIZE','GAS'):
[codex:578739]         push(name)
[codex:578739]         continue
[codex:578739]     if name in ('AND','OR','XOR','ADD','SUB','MUL','DIV','LT','GT','EQ'):
[codex:578739]         b,a=pop(2)  # a op b? stack: ... a b
[codex:578739]         push(f\"{a}{name}{b}\")
[codex:578739]         continue
[codex:578739]     if name in ('MSTORE','MSTORE8'):
[codex:578739]         pop(2)
[codex:578739]         continue
[codex:578739]     if name in ('CALL',):
[codex:578739]         # stop before call
[codex:578739]         break
[codex:578739]     # default: ignore effects for now (could be DUP etc)
[codex:578739] 
[codex:578739] # print stack top 10
[codex:578739] print('stack size',len(stack))
[codex:578739] for i,val in enumerate(stack[-10:], start=len(stack)-10):
[codex:578739]     print(i, val)
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 36ms:
[codex:578739] stack size 29
[codex:578739] 19 0x08fcMULISZERO(0x00)
[codex:578739] 20 0x00
[codex:578739] 21 MLOAD(0x40)
[codex:578739] 22 0x00
[codex:578739] 23 MLOAD(0x40)
[codex:578739] 24 MLOAD(0x40)SUBMLOAD(0x40)
[codex:578739] 25 MLOAD(0x40)
[codex:578739] 26 0x00
[codex:578739] 27 SLOAD(SHA3(0x00))AND0xffffffffffffffffffffffffffffffffffffffff
[codex:578739] 28 0x08fcMULISZERO(0x00)
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing symbolic stack and gas calculation**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] # block from 0x3974 to 0x3aa6
[codex:578739] start=0x3974
[codex:578739] end=0x3aa6
[codex:578739] block=[inst for inst in instructions if start<=inst[0]<=end]
[codex:578739] 
[codex:578739] # symbolic stack
[codex:578739] stack=[f\"S{i}\" for i in range(15)]  # 15 placeholders
[codex:578739] 
[codex:578739] 
[codex:578739] def pop(n=1):
[codex:578739]     vals=[]
[codex:578739]     for _ in range(n):
[codex:578739]         vals.append(stack.pop())
[codex:578739]     return vals
[codex:578739] 
[codex:578739] def push(val):
[codex:578739]     stack.append(val)
[codex:578739] 
[codex:578739] for off,op,name,arg in block:
[codex:578739]     if op==0x5b:
[codex:578739]         continue
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         push(f\"0x{arg.hex()}\")
[codex:578739]         continue
[codex:578739]     if 0x80<=op<=0x8f:
[codex:578739]         n=op-0x7f
[codex:578739]         push(stack[-n])
[codex:578739]         continue
[codex:578739]     if 0x90<=op<=0x9f:
[codex:578739]         n=op-0x8f
[codex:578739]         stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
[codex:578739]         continue
[codex:578739]     if name=='POP':
[codex:578739]         pop(); continue
[codex:578739]     if name in ('ISZERO','NOT'):
[codex:578739]         a=pop()[0]; push(f\"{name}({a})\"); continue
[codex:578739]     if name in ('SLOAD','MLOAD'):
[codex:578739]         a=pop()[0]; push(f\"{name}({a})\"); continue
[codex:578739]     if name in ('SHA3',):
[codex:578739]         a=pop()[0]; push(f\"SHA3({a})\"); continue
[codex:578739]     if name in ('CALLER','ADDRESS','CALLVALUE','CALLDATASIZE','GAS'):
[codex:578739]         push(name); continue
[codex:578739]     if name in ('AND','OR','XOR','ADD','SUB','MUL','DIV','LT','GT','EQ'):
[codex:578739]         b,a=pop(2); push(f\"({a} {name} {b})\"); continue
[codex:578739]     if name in ('MSTORE','MSTORE8'):
[codex:578739]         pop(2); continue
[codex:578739]     if name in ('CALL',):
[codex:578739]         break
[codex:578739] 
[codex:578739] print('stack size',len(stack))
[codex:578739] print('top 7 (call args order top->bottom)')
[codex:578739] for i,val in enumerate(reversed(stack[-7:])):
[codex:578739]     print(i, val)
[codex:578739] # also show full top 12
[codex:578739] print('\\nTop 12 values (bottom->top):')
[codex:578739] for val in stack[-12:]:
[codex:578739]     print(val)
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 42ms:
[codex:578739] stack size 32
[codex:578739] top 7 (call args order top->bottom)
[codex:578739] 0 (0x08fc MUL ISZERO(0x00))
[codex:578739] 1 (SLOAD(SHA3(0x00)) AND 0xffffffffffffffffffffffffffffffffffffffff)
[codex:578739] 2 0x00
[codex:578739] 3 MLOAD(0x40)
[codex:578739] 4 (MLOAD(0x40) SUB MLOAD(0x40))
[codex:578739] 5 MLOAD(0x40)
[codex:578739] 6 0x00
[codex:578739] 
[codex:578739] Top 12 values (bottom->top):
[codex:578739] SLOAD(SHA3(0x00))
[codex:578739] (SLOAD(SHA3(0x00)) AND 0xffffffffffffffffffffffffffffffffffffffff)
[codex:578739] (0x08fc MUL ISZERO(0x00))
[codex:578739] 0x00
[codex:578739] MLOAD(0x40)
[codex:578739] 0x00
[codex:578739] MLOAD(0x40)
[codex:578739] (MLOAD(0x40) SUB MLOAD(0x40))
[codex:578739] MLOAD(0x40)
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Enhancing symbolic EVM simulation with memory modeling**
[codex:578739] 
[codex:578739] I'm planning to improve the symbolic simulation by modeling memory properly, especially handling MSTORE, MLOAD, and SHA3 with correct semantics. This should help me track memory contents used in computations like keccak hashes, better identify call arguments such as the 'to' address loaded from storage mappings, and accurately simulate stack states before CALL instructions. It’s a bit complex but should yield more precise symbolic evaluation results.
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] # disassemble
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] start=0x3974
[codex:578739] end=0x3aa6
[codex:578739] block=[inst for inst in instructions if start<=inst[0]<=end]
[codex:578739] 
[codex:578739] # symbolic values
[codex:578739] counter=0
[codex:578739] 
[codex:578739] def sym(name):
[codex:578739]     global counter
[codex:578739]     counter+=1
[codex:578739]     return f\"{name}{counter}\"
[codex:578739] 
[codex:578739] stack=[f\"S{i}\" for i in range(12)]
[codex:578739] mem={}
[codex:578739] 
[codex:578739] 
[codex:578739] def pop(n=1):
[codex:578739]     if n==1:
[codex:578739]         return stack.pop()
[codex:578739]     vals=[]
[codex:578739]     for _ in range(n):
[codex:578739]         vals.append(stack.pop())
[codex:578739]     return vals
[codex:578739] 
[codex:578739] def push(val):
[codex:578739]     stack.append(val)
[codex:578739] 
[codex:578739] 
[codex:578739] def simplify(expr):
[codex:578739]     return expr
[codex:578739] 
[codex:578739] for off,op,name,arg in block:
[codex:578739]     if op==0x5b:
[codex:578739]         continue
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         push(f\"0x{arg.hex()}\")
[codex:578739]         continue
[codex:578739]     if 0x80<=op<=0x8f:
[codex:578739]         n=op-0x7f
[codex:578739]         push(stack[-n]); continue
[codex:578739]     if 0x90<=op<=0x9f:
[codex:578739]         n=op-0x8f
[codex:578739]         stack[-1],stack[-1-n]=stack[-1-n],stack[-1]
[codex:578739]         continue
[codex:578739]     if name=='POP':
[codex:578739]         pop(); continue
[codex:578739]     if name in ('CALLER','ADDRESS','CALLVALUE','CALLDATASIZE','GAS'):
[codex:578739]         push(name); continue
[codex:578739]     if name in ('ISZERO','NOT'):
[codex:578739]         a=pop(); push(f\"{name}({a})\"); continue
[codex:578739]     if name in ('AND','OR','XOR','ADD','SUB','MUL','DIV','LT','GT','EQ'):
[codex:578739]         b=pop(); a=pop(); push(f\"({a} {name} {b})\"); continue
[codex:578739]     if name=='MSTORE':
[codex:578739]         offset=pop(); value=pop();
[codex:578739]         mem[offset]=value
[codex:578739]         continue
[codex:578739]     if name=='MLOAD':
[codex:578739]         offset=pop();
[codex:578739]         push(mem.get(offset, f\"MLOAD({offset})\"))
[codex:578739]         continue
[codex:578739]     if name=='SHA3':
[codex:578739]         size=pop(); offset=pop();
[codex:578739]         # attempt to resolve 0x00/0x40 mapping pattern
[codex:578739]         if size=='0x40' and offset=='0x00':
[codex:578739]             key=mem.get('0x00','mem[0x00]')
[codex:578739]             slot=mem.get('0x20','mem[0x20]')
[codex:578739]             push(f\"keccak({key},{slot})\")
[codex:578739]         else:
[codex:578739]             push(f\"SHA3({offset},{size})\")
[codex:578739]         continue
[codex:578739]     if name=='SLOAD':
[codex:578739]         slot=pop(); push(f\"SLOAD({slot})\"); continue
[codex:578739]     if name=='CALL':
[codex:578739]         break
[codex:578739] 
[codex:578739] print('stack size',len(stack))
[codex:578739] print('top 7 (gas,to,value,in_off,in_size,out_off,out_size)')
[codex:578739] # top of stack is last element
[codex:578739] args=stack[-7:]
[codex:578739] labels=['out_size','out_off','in_size','in_off','value','to','gas']
[codex:578739] # args list bottom->top for these 7? Actually stack[-7] is bottom among args, stack[-1] is gas
[codex:578739] for label,val in zip(labels,args):
[codex:578739]     print(label, val)
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 41ms:
[codex:578739] stack size 25
[codex:578739] top 7 (gas,to,value,in_off,in_size,out_off,out_size)
[codex:578739] out_size 0x00
[codex:578739] out_off MLOAD(0x40)
[codex:578739] in_size (MLOAD(0x40) SUB MLOAD(0x40))
[codex:578739] in_off MLOAD(0x40)
[codex:578739] value S11
[codex:578739] to (S10 AND 0xffffffffffffffffffffffffffffffffffffffff)
[codex:578739] gas (0x08fc MUL ISZERO(S11))
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing EVM call gas calculation**
[codex:578739] 
[codex:578739] I'm working through a tricky EVM snippet that sets the call gas based on whether a value is zero, trying to untangle the stack manipulation around ISZERO and MUL. The gas calculation looks reversed or unusual, so I'm planning to instrument the interpreter to capture stack snapshots at key points to clarify what's really going on here.
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] # disassemble
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] start=0x3974
[codex:578739] end=0x3aa6
[codex:578739] block=[inst for inst in instructions if start<=inst[0]<=end]
[codex:578739] 
[codex:578739] stack=[f\"S{i}\" for i in range(12)]
[codex:578739] mem={}
[codex:578739] 
[codex:578739] 
[codex:578739] def pop(n=1):
[codex:578739]     if n==1:
[codex:578739]         return stack.pop()
[codex:578739]     vals=[]
[codex:578739]     for _ in range(n):
[codex:578739]         vals.append(stack.pop())
[codex:578739]     return vals
[codex:578739] 
[codex:578739] def push(val):
[codex:578739]     stack.append(val)
[codex:578739] 
[codex:578739] snap_offsets={0x3a77,0x3a8e,0x3a96,0x3a9f,0x3aa5}
[codex:578739] 
[codex:578739] for off,op,name,arg in block:
[codex:578739]     if off in snap_offsets:
[codex:578739]         print(f\"\\n-- stack at 0x{off:04x} before {name} --\")
[codex:578739]         # print last 10 items
[codex:578739]         for i,val in enumerate(stack[-10:], start=len(stack)-10):
[codex:578739]             print(i, val)
[codex:578739]     if op==0x5b:
[codex:578739]         continue
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         push(f\"0x{arg.hex()}\"); continue
[codex:578739]     if 0x80<=op<=0x8f:
[codex:578739]         n=op-0x7f; push(stack[-n]); continue
[codex:578739]     if 0x90<=op<=0x9f:
[codex:578739]         n=op-0x8f; stack[-1],stack[-1-n]=stack[-1-n],stack[-1]; continue
[codex:578739]     if name=='POP':
[codex:578739]         pop(); continue
[codex:578739]     if name in ('CALLER','ADDRESS','CALLVALUE','CALLDATASIZE','GAS'):
[codex:578739]         push(name); continue
[codex:578739]     if name in ('ISZERO','NOT'):
[codex:578739]         a=pop(); push(f\"{name}({a})\"); continue
[codex:578739]     if name in ('AND','OR','XOR','ADD','SUB','MUL','DIV','LT','GT','EQ'):
[codex:578739]         b=pop(); a=pop(); push(f\"({a} {name} {b})\"); continue
[codex:578739]     if name=='MSTORE':
[codex:578739]         offset=pop(); value=pop(); mem[offset]=value; continue
[codex:578739]     if name=='MLOAD':
[codex:578739]         offset=pop(); push(mem.get(offset, f\"MLOAD({offset})\")); continue
[codex:578739]     if name=='SHA3':
[codex:578739]         size=pop(); offset=pop();
[codex:578739]         if size=='0x40' and offset=='0x00':
[codex:578739]             key=mem.get('0x00','mem[0x00]'); slot=mem.get('0x20','mem[0x20]');
[codex:578739]             push(f\"keccak({key},{slot})\")
[codex:578739]         else:
[codex:578739]             push(f\"SHA3({offset},{size})\")
[codex:578739]         continue
[codex:578739]     if name=='SLOAD':
[codex:578739]         slot=pop(); push(f\"SLOAD({slot})\"); continue
[codex:578739]     if name=='CALL':
[codex:578739]         break
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 39ms:
[codex:578739] 
[codex:578739] -- stack at 0x3a77 before DUP4 --
[codex:578739] 4 S4
[codex:578739] 5 S5
[codex:578739] 6 S6
[codex:578739] 7 S7
[codex:578739] 8 S8
[codex:578739] 9 S9
[codex:578739] 10 S10
[codex:578739] 11 S11
[codex:578739] 12 SLOAD(SHA3(((0x00 ADD 0x20) ADD 0x20),0x00))
[codex:578739] 13 SLOAD(SHA3(((0x00 ADD 0x20) ADD 0x20),0x00))
[codex:578739] 
[codex:578739] -- stack at 0x3a8e before PUSH2 --
[codex:578739] 5 S5
[codex:578739] 6 S6
[codex:578739] 7 S7
[codex:578739] 8 S8
[codex:578739] 9 S9
[codex:578739] 10 S10
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing EVM call stack and gas logic**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] # print from 0x3800 to 0x39b0
[codex:578739] for off,op,name,arg in instructions:
[codex:578739]     if 0x3800<=off<=0x39c0:
[codex:578739]         if 0x60<=op<=0x7f:
[codex:578739]             print(f\"0x{off:04x}: {name} 0x{arg.hex()}\")
[codex:578739]         else:
[codex:578739]             print(f\"0x{off:04x}: {name}\")
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 37ms:
[codex:578739] 0x3806: DUP2
[codex:578739] 0x3807: MSTORE
[codex:578739] 0x3808: PUSH1 0x04
[codex:578739] 0x380a: ADD
[codex:578739] 0x380b: PUSH2 0x3813
[codex:578739] 0x380e: SWAP1
[codex:578739] 0x380f: PUSH2 0x4bc9
[codex:578739] 0x3812: JUMP
[codex:578739] 0x3813: JUMPDEST
[codex:578739] 0x3814: PUSH1 0x40
[codex:578739] 0x3816: MLOAD
[codex:578739] 0x3817: DUP1
[codex:578739] 0x3818: SWAP2
[codex:578739] 0x3819: SUB
[codex:578739] 0x381a: SWAP1
[codex:578739] 0x381b: REVERT
[codex:578739] 0x381c: JUMPDEST
[codex:578739] 0x381d: PUSH1 0x00
[codex:578739] 0x381f: PUSH2 0x38a5
[codex:578739] 0x3822: DUP4
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing potential withdrawal function and security checks**
[codex:578739] 
[codex:578739] This is quite an involved snippet! I'm tracing a function around 0x381c that looks like it handles withdrawals or payouts by checking balances and transferring ETH. I'm curious if it properly verifies the caller against a holder address to prevent unauthorized withdrawals, and I want to check if any storage writes lack authorization that might enable exploits. To understand fully, I need to find the function entry point and do detailed stack and storage flow analysis to confirm these suspicions.
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble
[codex:578739] ops = {0x5b:'JUMPDEST'}
[codex:578739] 
[codex:578739] # get all JUMPDEST offsets
[codex:578739] jds=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     op=code[idx]
[codex:578739]     if op==0x5b:
[codex:578739]         jds.append(idx)
[codex:578739]         idx+=1
[codex:578739]         continue
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         idx += 1 + (op-0x5f)
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739] 
[codex:578739] # find last jd before 0x381c
[codex:578739] last_jd=max([jd for jd in jds if jd<0x381c])
[codex:578739] print(hex(last_jd))
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 30ms:
[codex:578739] 0x3813
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing JUMPDEST addresses near function entry**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble quickly and list JUMPDESTs between 0x3700 and 0x3820
[codex:578739] idx=0
[codex:578739] jds=[]
[codex:578739] while idx < len(code):
[codex:578739]     op=code[idx]
[codex:578739]     if op==0x5b:
[codex:578739]         if 0x3700<=idx<=0x3820:
[codex:578739]             jds.append(idx)
[codex:578739]         idx+=1
[codex:578739]         continue
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         idx+=1+(op-0x5f)
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739] 
[codex:578739] print([hex(x) for x in jds])
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 32ms:
[codex:578739] ['0x374a', '0x3753', '0x3813', '0x381c']
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Examining function boundaries in code**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] # disassemble with offsets
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] # disassemble
[codex:578739] idx=0
[codex:578739] instructions=[]
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] for off,op,name,arg in instructions:
[codex:578739]     if 0x374a<=off<=0x3825:
[codex:578739]         if 0x60<=op<=0x7f:
[codex:578739]             print(f\"0x{off:04x}: {name} 0x{arg.hex()}\")
[codex:578739]         else:
[codex:578739]             print(f\"0x{off:04x}: {name}\")
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 40ms:
[codex:578739] 0x374a: JUMPDEST
[codex:578739] 0x374b: PUSH1 0x40
[codex:578739] 0x374d: MLOAD
[codex:578739] 0x374e: DUP1
[codex:578739] 0x374f: SWAP2
[codex:578739] 0x3750: SUB
[codex:578739] 0x3751: SWAP1
[codex:578739] 0x3752: REVERT
[codex:578739] 0x3753: JUMPDEST
[codex:578739] 0x3754: PUSH1 0x0e
[codex:578739] 0x3756: PUSH1 0x00
[codex:578739] 0x3758: DUP4
[codex:578739] 0x3759: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:578739] 0x376e: AND
[codex:578739] 0x376f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:578739] 0x3784: AND
[codex:578739] 0x3785: DUP2
[codex:578739] 0x3786: MSTORE
[codex:578739] 0x3787: PUSH1 0x20
[codex:578739] 0x3789: ADD
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing access control and storage checks**
[codex:578739] exec
[codex:578739] /bin/bash -lc "python - <<'PY'
[codex:578739] import re
[codex:578739] from pathlib import Path
[codex:578739] p=Path('/tmp/codex-multi-9li59urj/BYTECODE_BUNDLE.txt').read_text()
[codex:578739] hexstr=re.search(r'runtime_bytecode.hex\\n(0x[0-9a-fA-F]+)', p).group(1)[2:]
[codex:578739] hexstr=re.sub(r'["'^0-9a-fA-F]'"', '', hexstr)
[codex:578739] code=bytes.fromhex(hexstr)
[codex:578739] 
[codex:578739] ops = {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:578739] 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:578739] 0x20:'SHA3',
[codex:578739] 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:578739] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:578739] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:578739] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:578739] 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:578739] 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:578739] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:578739] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:578739] 
[codex:578739] # disassemble
[codex:578739] instructions=[]
[codex:578739] idx=0
[codex:578739] while idx < len(code):
[codex:578739]     off=idx
[codex:578739]     op=code[idx]
[codex:578739]     name=ops.get(op,f'OP{op:02x}')
[codex:578739]     arg=b''
[codex:578739]     if 0x60<=op<=0x7f:
[codex:578739]         n=op-0x5f
[codex:578739]         arg=code[idx+1:idx+1+n]
[codex:578739]         idx+=1+n
[codex:578739]     else:
[codex:578739]         idx+=1
[codex:578739]     instructions.append((off,op,name,arg))
[codex:578739] 
[codex:578739] # find SSTORE and print 8 instructions before
[codex:578739] for i,(off,op,name,arg) in enumerate(instructions):
[codex:578739]     if op==0x55:
[codex:578739]         print(f\"SSTORE at 0x{off:04x}\")
[codex:578739]         for j in range(max(0,i-6), i+2):
[codex:578739]             o,op2,nm,arg2=instructions[j]
[codex:578739]             if 0x60<=op2<=0x7f:
[codex:578739]                 print(f\"  0x{o:04x}: {nm} 0x{arg2.hex()}\")
[codex:578739]             else:
[codex:578739]                 print(f\"  0x{o:04x}: {nm}\")
[codex:578739]         print('---')
[codex:578739] PY" in /tmp/codex-multi-9li59urj succeeded in 38ms:
[codex:578739] SSTORE at 0x051d
[codex:578739]   0x0517: DUP4
[codex:578739]   0x0518: ISZERO
[codex:578739]   0x0519: ISZERO
[codex:578739]   0x051a: MUL
[codex:578739]   0x051b: OR
[codex:578739]   0x051c: SWAP1
[codex:578739]   0x051d: SSTORE
[codex:578739]   0x051e: POP
[codex:578739] ---
[codex:578739] SSTORE at 0x096f
[codex:578739]   0x0967: PUSH1 0x20
[codex:578739]   0x0969: ADD
[codex:578739]   0x096a: PUSH1 0x00
[codex:578739]   0x096c: SHA3
[codex:578739]   0x096d: DUP2
[codex:578739]   0x096e: SWAP1
[codex:578739]   0x096f: SSTORE
[codex:578739]   0x0970: POP
[codex:578739] ---
[codex:578739] 
[codex:578739] thinking
[codex:578739] **Analyzing contract for exploitable value paths**
[codex:578739] codex
[codex:578739] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the bytecode; the only CALL observed appears to be a gas-limited ETH send gated by holder/allowance checks, and no delegatecall/selfdestruct or unprotected upgrade patterns are present.","findings":[]}
[codex:578739] tokens used
[codex:578739] 89,319
[codex:578739] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the bytecode; the only CALL observed appears to be a gas-limited ETH send gated by holder/allowance checks, and no delegatecall/selfdestruct or unprotected upgrade patterns are present.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T16:06:51.235852+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction path identified from the bytecode; the only CALL observed appears to be a gas-limited ETH send gated by holder/allowance checks, and no delegatecall/selfdestruct or unprotected upgrade patterns are present.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction path identified from the bytecode; the only CALL observed appears to be a gas-limited ETH send gated by holder/allowance checks, and no delegatecall/selfdestruct or unprotected upgrade patterns are present.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
3
EXT*/BALANCE
2
Total opcodes
8111
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0102
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0xbf0a196d
00000019: GT
0000001a: PUSH2 0x0095
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xd95d5fe9
00000024: GT
00000025: PUSH2 0x0064
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xd95d5fe9
0000002f: EQ
00000030: PUSH2 0x0316
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xf215f535
0000003a: EQ
0000003b: PUSH2 0x0341
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xf2fde38b
00000045: EQ
00000046: PUSH2 0x037e
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf37c4bce
00000050: EQ
00000051: PUSH2 0x03a7
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf80f5dd5
0000005b: EQ
0000005c: PUSH2 0x03d0
0000005f: JUMPI
00000060: PUSH2 0x0109
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xbf0a196d
0000006b: EQ
0000006c: PUSH2 0x0284
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xc4358465
00000076: EQ
00000077: PUSH2 0x029b
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xc4a5f67f
00000081: EQ
00000082: PUSH2 0x02c4
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xc694d040
0000008c: EQ
0000008d: PUSH2 0x02ed
00000090: JUMPI
00000091: PUSH2 0x0109
00000094: JUMP
00000095: JUMPDEST
00000096: DUP1
00000097: PUSH4 0x75e3ae06
0000009c: GT
0000009d: PUSH2 0x00d1
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x75e3ae06
000000a7: EQ
000000a8: PUSH2 0x01b4
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x8da5cb5b
000000b2: EQ
000000b3: PUSH2 0x01f1
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x905f7a1c
000000bd: EQ
000000be: PUSH2 0x021c
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x951a903d
000000c8: EQ
000000c9: PUSH2 0x0247
000000cc: JUMPI
000000cd: PUSH2 0x0109
000000d0: JUMP
000000d1: JUMPDEST
000000d2: DUP1
000000d3: PUSH4 0x280a2431
000000d8: EQ
000000d9: PUSH2 0x010e
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x2c2bab2f
000000e3: EQ
000000e4: PUSH2 0x0137
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x3627301e
000000ee: EQ
000000ef: PUSH2 0x0162
000000f2: JUMPI
000000f3: DUP1
000000f4: PUSH4 0x51cff8d9
000000f9: EQ
000000fa: PUSH2 0x018b
000000fd: JUMPI
000000fe: PUSH2 0x0109
00000101: JUMP
00000102: JUMPDEST
00000103: CALLDATASIZE
00000104: PUSH2 0x0109
00000107: JUMPI
00000108: STOP
00000109: JUMPDEST
0000010a: PUSH1 0x00
0000010c: DUP1
0000010d: REVERT
0000010e: JUMPDEST
0000010f: CALLVALUE
00000110: DUP1
00000111: ISZERO
00000112: PUSH2 0x011a
00000115: JUMPI
00000116: PUSH1 0x00
00000118: DUP1
00000119: REVERT
0000011a: JUMPDEST
0000011b: POP
0000011c: PUSH2 0x0135
0000011f: PUSH1 0x04
00000121: DUP1
00000122: CALLDATASIZE
00000123: SUB
00000124: DUP2
00000125: ADD
00000126: SWAP1
00000127: PUSH2 0x0130
0000012a: SWAP2
0000012b: SWAP1
0000012c: PUSH2 0x485c
0000012f: JUMP
00000130: JUMPDEST
00000131: PUSH2 0x03f9
00000134: JUMP
00000135: JUMPDEST
00000136: STOP
00000137: JUMPDEST
00000138: CALLVALUE
00000139: DUP1
0000013a: ISZERO
0000013b: PUSH2 0x0143
0000013e: JUMPI
0000013f: PUSH1 0x00
00000141: DUP1
00000142: REVERT
00000143: JUMPDEST
00000144: POP
00000145: PUSH2 0x014c
00000148: PUSH2 0x0521
0000014b: JUMP
0000014c: JUMPDEST
0000014d: PUSH1 0x40
0000014f: MLOAD
00000150: PUSH2 0x0159
00000153: SWAP2
00000154: SWAP1
00000155: PUSH2 0x4c29
00000158: JUMP
00000159: JUMPDEST
0000015a: PUSH1 0x40
0000015c: MLOAD
0000015d: DUP1
0000015e: SWAP2
0000015f: SUB
00000160: SWAP1
00000161: RETURN
00000162: JUMPDEST
00000163: CALLVALUE
00000164: DUP1
00000165: ISZERO
00000166: PUSH2 0x016e
00000169: JUMPI
0000016a: PUSH1 0x00
0000016c: DUP1
0000016d: REVERT
0000016e: JUMPDEST
0000016f: POP
00000170: PUSH2 0x0189
00000173: PUSH1 0x04
00000175: DUP1
00000176: CALLDATASIZE
00000177: SUB
00000178: DUP2
00000179: ADD
0000017a: SWAP1
0000017b: PUSH2 0x0184
0000017e: SWAP2
0000017f: SWAP1
00000180: PUSH2 0x485c
00000183: JUMP
00000184: JUMPDEST
00000185: PUSH2 0x0680
00000188: JUMP
00000189: JUMPDEST
0000018a: STOP
0000018b: JUMPDEST
0000018c: CALLVALUE
0000018d: DUP1
0000018e: ISZERO
0000018f: PUSH2 0x0197
00000192: JUMPI
00000193: PUSH1 0x00
00000195: DUP1
00000196: REVERT
00000197: JUMPDEST
00000198: POP
00000199: PUSH2 0x01b2
0000019c: PUSH1 0x04
0000019e: DUP1
0000019f: CALLDATASIZE
000001a0: SUB
000001a1: DUP2
000001a2: ADD
000001a3: SWAP1
000001a4: PUSH2 0x01ad
000001a7: SWAP2
000001a8: SWAP1
000001a9: PUSH2 0x485c
000001ac: JUMP
000001ad: JUMPDEST
000001ae: PUSH2 0x0df7
000001b1: JUMP
000001b2: JUMPDEST
000001b3: STOP
000001b4: JUMPDEST
000001b5: CALLVALUE
000001b6: DUP1
000001b7: ISZERO
000001b8: PUSH2 0x01c0
000001bb: JUMPI
000001bc: PUSH1 0x00
000001be: DUP1
000001bf: REVERT
000001c0: JUMPDEST
000001c1: POP
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 0x4885
000001d5: JUMP
000001d6: JUMPDEST
000001d7: PUSH2 0x0ed3
000001da: JUMP
000001db: JUMPDEST
000001dc: PUSH1 0x40
000001de: MLOAD
000001df: PUSH2 0x01e8
000001e2: SWAP2
000001e3: SWAP1
000001e4: PUSH2 0x4c29
000001e7: JUMP
000001e8: JUMPDEST
000001e9: PUSH1 0x40
000001eb: MLOAD
000001ec: DUP1
000001ed: SWAP2
000001ee: SUB
000001ef: SWAP1
000001f0: RETURN
000001f1: JUMPDEST
000001f2: CALLVALUE
000001f3: DUP1
000001f4: ISZERO
000001f5: PUSH2 0x01fd
000001f8: JUMPI
000001f9: PUSH1 0x00
000001fb: DUP1
000001fc: REVERT
000001fd: JUMPDEST
000001fe: POP
000001ff: PUSH2 0x0206
00000202: PUSH2 0x10b9
00000205: JUMP
00000206: JUMPDEST
00000207: PUSH1 0x40
00000209: MLOAD
0000020a: PUSH2 0x0213
0000020d: SWAP2
0000020e: SWAP1
0000020f: PUSH2 0x4b0e
00000212: JUMP
00000213: JUMPDEST
00000214: PUSH1 0x40
00000216: MLOAD
00000217: DUP1
00000218: SWAP2
00000219: SUB
0000021a: SWAP1
0000021b: RETURN
0000021c: JUMPDEST
0000021d: CALLVALUE
0000021e: DUP1
0000021f: ISZERO
00000220: PUSH2 0x0228
00000223: JUMPI
00000224: PUSH1 0x00
00000226: DUP1
00000227: REVERT
00000228: JUMPDEST
00000229: POP
0000022a: PUSH2 0x0231
0000022d: PUSH2 0x10e2
00000230: JUMP
00000231: JUMPDEST
00000232: PUSH1 0x40
00000234: MLOAD
00000235: PUSH2 0x023e
00000238: SWAP2
00000239: SWAP1
0000023a: PUSH2 0x4c29
0000023d: JUMP
0000023e: JUMPDEST
0000023f: PUSH1 0x40
00000241: MLOAD
00000242: DUP1
00000243: SWAP2
00000244: SUB
00000245: SWAP1
00000246: RETURN
00000247: JUMPDEST
00000248: CALLVALUE
00000249: DUP1
0000024a: ISZERO
0000024b: PUSH2 0x0253
0000024e: JUMPI
0000024f: PUSH1 0x00
00000251: DUP1
00000252: REVERT
00000253: JUMPDEST
00000254: POP
00000255: PUSH2 0x026e
00000258: PUSH1 0x04
0000025a: DUP1
0000025b: CALLDATASIZE
0000025c: SUB
0000025d: DUP2
0000025e: ADD
0000025f: SWAP1
00000260: PUSH2 0x0269
00000263: SWAP2
00000264: SWAP1
00000265: PUSH2 0x4885
00000268: JUMP
00000269: JUMPDEST
0000026a: PUSH2 0x1184
0000026d: JUMP
0000026e: JUMPDEST
0000026f: PUSH1 0x40
00000271: MLOAD
00000272: PUSH2 0x027b
00000275: SWAP2
00000276: SWAP1
00000277: PUSH2 0x4c29
0000027a: JUMP
0000027b: JUMPDEST
0000027c: PUSH1 0x40
0000027e: MLOAD
0000027f: DUP1
00000280: SWAP2
00000281: SUB
00000282: SWAP1
00000283: RETURN
00000284: JUMPDEST
00000285: CALLVALUE
00000286: DUP1
00000287: ISZERO
00000288: PUSH2 0x0290
0000028b: JUMPI
0000028c: PUSH1 0x00
0000028e: DUP1
0000028f: REVERT
00000290: JUMPDEST
00000291: POP
00000292: PUSH2 0x0299
00000295: PUSH2 0x1360
00000298: JUMP
00000299: JUMPDEST
0000029a: STOP
0000029b: JUMPDEST
0000029c: CALLVALUE
0000029d: DUP1
0000029e: ISZERO
0000029f: PUSH2 0x02a7
000002a2: JUMPI
000002a3: PUSH1 0x00
000002a5: DUP1
000002a6: REVERT
000002a7: JUMPDEST
000002a8: POP
000002a9: PUSH2 0x02c2
000002ac: PUSH1 0x04
000002ae: DUP1
000002af: CALLDATASIZE
000002b0: SUB
000002b1: DUP2
000002b2: ADD
000002b3: SWAP1
000002b4: PUSH2 0x02bd
000002b7: SWAP2
000002b8: SWAP1
000002b9: PUSH2 0x48fd
000002bc: JUMP
000002bd: JUMPDEST
000002be: PUSH2 0x152b
000002c1: JUMP
000002c2: JUMPDEST
000002c3: STOP
000002c4: JUMPDEST
000002c5: CALLVALUE
000002c6: DUP1
000002c7: ISZERO
000002c8: PUSH2 0x02d0
000002cb: JUMPI
000002cc: PUSH1 0x00
000002ce: DUP1
000002cf: REVERT
000002d0: JUMPDEST
000002d1: POP
000002d2: PUSH2 0x02eb
000002d5: PUSH1 0x04
000002d7: DUP1
000002d8: CALLDATASIZE
000002d9: SUB
000002da: DUP2
000002db: ADD
000002dc: SWAP1
000002dd: PUSH2 0x02e6
000002e0: SWAP2
000002e1: SWAP1
000002e2: PUSH2 0x48c1
000002e5: JUMP
000002e6: JUMPDEST
000002e7: PUSH2 0x19b6
000002ea: JUMP
000002eb: JUMPDEST
000002ec: STOP
000002ed: JUMPDEST
000002ee: CALLVALUE
000002ef: DUP1
000002f0: ISZERO
000002f1: PUSH2 0x02f9
000002f4: JUMPI
000002f5: PUSH1 0x00
000002f7: DUP1
000002f8: REVERT
000002f9: JUMPDEST
000002fa: POP
000002fb: PUSH2 0x0314
000002fe: PUSH1 0x04
00000300: DUP1
00000301: CALLDATASIZE
00000302: SUB
00000303: DUP2
00000304: ADD
00000305: SWAP1
00000306: PUSH2 0x030f
00000309: SWAP2
0000030a: SWAP1
0000030b: PUSH2 0x4986
0000030e: JUMP
0000030f: JUMPDEST
00000310: PUSH2 0x2343
00000313: JUMP
00000314: JUMPDEST
00000315: STOP
00000316: JUMPDEST
00000317: CALLVALUE
00000318: DUP1
00000319: ISZERO
0000031a: PUSH2 0x0322
0000031d: JUMPI
0000031e: PUSH1 0x00
00000320: DUP1
00000321: REVERT
00000322: JUMPDEST
00000323: POP
00000324: PUSH2 0x032b
00000327: PUSH2 0x24af
0000032a: JUMP
0000032b: JUMPDEST
0000032c: PUSH1 0x40
0000032e: MLOAD
0000032f: PUSH2 0x0338
00000332: SWAP2
00000333: SWAP1
00000334: PUSH2 0x4c29
00000337: JUMP
00000338: JUMPDEST
00000339: PUSH1 0x40
0000033b: MLOAD
0000033c: DUP1
0000033d: SWAP2
0000033e: SUB
0000033f: SWAP1
00000340: RETURN
00000341: JUMPDEST
00000342: CALLVALUE
00000343: DUP1
00000344: ISZERO
00000345: PUSH2 0x034d
00000348: JUMPI
00000349: PUSH1 0x00
0000034b: DUP1
0000034c: REVERT
0000034d: JUMPDEST
0000034e: POP
0000034f: PUSH2 0x0368
00000352: PUSH1 0x04
00000354: DUP1
00000355: CALLDATASIZE
00000356: SUB
00000357: DUP2
00000358: ADD
00000359: SWAP1
0000035a: PUSH2 0x0363
0000035d: SWAP2
0000035e: SWAP1
0000035f: PUSH2 0x4885
00000362: JUMP
00000363: JUMPDEST
00000364: PUSH2 0x2551
00000367: JUMP
00000368: JUMPDEST
00000369: PUSH1 0x40
0000036b: MLOAD
0000036c: PUSH2 0x0375
0000036f: SWAP2
00000370: SWAP1
00000371: PUSH2 0x4c29
00000374: JUMP
00000375: JUMPDEST
00000376: PUSH1 0x40
00000378: MLOAD
00000379: DUP1
0000037a: SWAP2
0000037b: SUB
0000037c: SWAP1
0000037d: RETURN
0000037e: JUMPDEST
0000037f: CALLVALUE
00000380: DUP1
00000381: ISZERO
00000382: PUSH2 0x038a
00000385: JUMPI
00000386: PUSH1 0x00
00000388: DUP1
00000389: REVERT
0000038a: JUMPDEST
0000038b: POP
0000038c: PUSH2 0x03a5
0000038f: PUSH1 0x04
00000391: DUP1
00000392: CALLDATASIZE
00000393: SUB
00000394: DUP2
00000395: ADD
00000396: SWAP1
00000397: PUSH2 0x03a0
0000039a: SWAP2
0000039b: SWAP1
0000039c: PUSH2 0x485c
0000039f: JUMP
000003a0: JUMPDEST
000003a1: PUSH2 0x2737
000003a4: JUMP
000003a5: JUMPDEST
000003a6: STOP
000003a7: JUMPDEST
000003a8: CALLVALUE
000003a9: DUP1
000003aa: ISZERO
000003ab: PUSH2 0x03b3
000003ae: JUMPI
000003af: PUSH1 0x00
000003b1: DUP1
000003b2: REVERT
000003b3: JUMPDEST
000003b4: POP
000003b5: PUSH2 0x03ce
000003b8: PUSH1 0x04
000003ba: DUP1
000003bb: CALLDATASIZE
000003bc: SUB
000003bd: DUP2
000003be: ADD
000003bf: SWAP1
000003c0: PUSH2 0x03c9
000003c3: SWAP2
000003c4: SWAP1
000003c5: PUSH2 0x485c
000003c8: JUMP
000003c9: JUMPDEST
000003ca: PUSH2 0x2889
000003cd: JUMP
000003ce: JUMPDEST
000003cf: STOP
000003d0: JUMPDEST
000003d1: CALLVALUE
000003d2: DUP1
000003d3: ISZERO
000003d4: PUSH2 0x03dc
000003d7: JUMPI
000003d8: PUSH1 0x00
000003da: DUP1
000003db: REVERT
000003dc: JUMPDEST
000003dd: POP
000003de: PUSH2 0x03f7
000003e1: PUSH1 0x04
000003e3: DUP1
000003e4: CALLDATASIZE
000003e5: SUB
000003e6: DUP2
000003e7: ADD
000003e8: SWAP1
000003e9: PUSH2 0x03f2
000003ec: SWAP2
000003ed: SWAP1
000003ee: PUSH2 0x485c
000003f1: JUMP
000003f2: JUMPDEST
000003f3: PUSH2 0x299a
000003f6: JUMP
000003f7: JUMPDEST
000003f8: STOP
000003f9: JUMPDEST
000003fa: PUSH2 0x0401
000003fd: PUSH2 0x10b9
00000400: JUMP
00000401: JUMPDEST
00000402: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000417: AND
00000418: CALLER
00000419: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000042e: AND
0000042f: EQ
00000430: DUP1
00000431: PUSH2 0x0487
00000434: JUMPI
00000435: POP
00000436: PUSH1 0x03
00000438: PUSH1 0x00
0000043a: SWAP1
0000043b: SLOAD
0000043c: SWAP1
0000043d: PUSH2 0x0100
00000440: EXP
00000441: SWAP1
00000442: DIV
00000443: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000458: AND
00000459: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000046e: AND
0000046f: CALLER
00000470: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000485: AND
00000486: EQ
00000487: JUMPDEST
00000488: PUSH2 0x04c6
0000048b: JUMPI
0000048c: PUSH1 0x40
0000048e: MLOAD
0000048f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000004b0: DUP2
000004b1: MSTORE
000004b2: PUSH1 0x04
000004b4: ADD
000004b5: PUSH2 0x04bd
000004b8: SWAP1
000004b9: PUSH2 0x4b29
000004bc: JUMP
000004bd: JUMPDEST
000004be: PUSH1 0x40
000004c0: MLOAD
000004c1: DUP1
000004c2: SWAP2
000004c3: SUB
000004c4: SWAP1
000004c5: REVERT
000004c6: JUMPDEST
000004c7: PUSH1 0x00
000004c9: PUSH1 0x02
000004cb: PUSH1 0x00
000004cd: DUP4
000004ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004e3: AND
000004e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004f9: AND
000004fa: DUP2
000004fb: MSTORE
000004fc: PUSH1 0x20
000004fe: ADD
000004ff: SWAP1
00000500: DUP2
00000501: MSTORE
00000502: PUSH1 0x20
00000504: ADD
00000505: PUSH1 0x00
00000507: KECCAK256
00000508: PUSH1 0x00
0000050a: PUSH2 0x0100
0000050d: EXP
0000050e: DUP2
0000050f: SLOAD
00000510: DUP2
00000511: PUSH1 0xff
00000513: MUL
00000514: NOT
00000515: AND
00000516: SWAP1
00000517: DUP4
00000518: ISZERO
00000519: ISZERO
0000051a: MUL
0000051b: OR
0000051c: SWAP1
0000051d: SSTORE
0000051e: POP
0000051f: POP
00000520: JUMP
00000521: JUMPDEST
00000522: PUSH1 0x00
00000524: PUSH1 0x02
00000526: PUSH1 0x00
00000528: CALLER
00000529: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000053e: AND
0000053f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000554: AND
00000555: DUP2
00000556: MSTORE
00000557: PUSH1 0x20
00000559: ADD
0000055a: SWAP1
0000055b: DUP2
0000055c: MSTORE
0000055d: PUSH1 0x20
0000055f: ADD
00000560: PUSH1 0x00
00000562: KECCAK256
00000563: PUSH1 0x00
00000565: SWAP1
00000566: SLOAD
00000567: SWAP1
00000568: PUSH2 0x0100
0000056b: EXP
0000056c: SWAP1
0000056d: DIV
0000056e: PUSH1 0xff
00000570: AND
00000571: PUSH2 0x05af
00000574: JUMPI
00000575: PUSH1 0x40
00000577: MLOAD
00000578: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000599: DUP2
0000059a: MSTORE
0000059b: PUSH1 0x04
0000059d: ADD
0000059e: PUSH2 0x05a6
000005a1: SWAP1
000005a2: PUSH2 0x4b29
000005a5: JUMP
000005a6: JUMPDEST
000005a7: PUSH1 0x40
000005a9: MLOAD
000005aa: DUP1
000005ab: SWAP2
000005ac: SUB
000005ad: SWAP1
000005ae: REVERT
000005af: JUMPDEST
000005b0: PUSH1 0x01
000005b2: PUSH1 0x00
000005b4: CALLER
000005b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005ca: AND
000005cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005e0: AND
000005e1: DUP2
000005e2: MSTORE
000005e3: PUSH1 0x20
000005e5: ADD
000005e6: SWAP1
000005e7: DUP2
000005e8: MSTORE
000005e9: PUSH1 0x20
000005eb: ADD
000005ec: PUSH1 0x00
000005ee: KECCAK256
000005ef: PUSH1 0x00
000005f1: SWAP1
000005f2: SLOAD
000005f3: SWAP1
000005f4: PUSH2 0x0100
000005f7: EXP
000005f8: SWAP1
000005f9: DIV
000005fa: PUSH1 0xff
000005fc: AND
000005fd: PUSH2 0x063b
00000600: JUMPI
00000601: PUSH1 0x40
00000603: MLOAD
00000604: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000625: DUP2
00000626: MSTORE
00000627: PUSH1 0x04
00000629: ADD
0000062a: PUSH2 0x0632
0000062d: SWAP1
0000062e: PUSH2 0x4b49
00000631: JUMP
00000632: JUMPDEST
00000633: PUSH1 0x40
00000635: MLOAD
00000636: DUP1
00000637: SWAP2
00000638: SUB
00000639: SWAP1
0000063a: REVERT
0000063b: JUMPDEST
0000063c: PUSH1 0x08
0000063e: PUSH1 0x00
00000640: CALLER
00000641: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000656: AND
00000657: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000066c: AND
0000066d: DUP2
0000066e: MSTORE
0000066f: PUSH1 0x20
00000671: ADD
00000672: SWAP1
00000673: DUP2
00000674: MSTORE
00000675: PUSH1 0x20
00000677: ADD
00000678: PUSH1 0x00
0000067a: KECCAK256
0000067b: SLOAD
0000067c: SWAP1
0000067d: POP
0000067e: SWAP1
0000067f: JUMP
00000680: JUMPDEST
00000681: PUSH1 0x02
00000683: PUSH1 0x00
00000685: CALLER
00000686: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000069b: AND
0000069c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006b1: AND
000006b2: DUP2
000006b3: MSTORE
000006b4: PUSH1 0x20
000006b6: ADD
000006b7: SWAP1
000006b8: DUP2
000006b9: MSTORE
000006ba: PUSH1 0x20
000006bc: ADD
000006bd: PUSH1 0x00
000006bf: KECCAK256
000006c0: PUSH1 0x00
000006c2: SWAP1
000006c3: SLOAD
000006c4: SWAP1
000006c5: PUSH2 0x0100
000006c8: EXP
000006c9: SWAP1
000006ca: DIV
000006cb: PUSH1 0xff
000006cd: AND
000006ce: PUSH2 0x070c
000006d1: JUMPI
000006d2: PUSH1 0x40
000006d4: MLOAD
000006d5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000006f6: DUP2
000006f7: MSTORE
000006f8: PUSH1 0x04
000006fa: ADD
000006fb: PUSH2 0x0703
000006fe: SWAP1
000006ff: PUSH2 0x4b29
00000702: JUMP
00000703: JUMPDEST
00000704: PUSH1 0x40
00000706: MLOAD
00000707: DUP1
00000708: SWAP2
00000709: SUB
0000070a: SWAP1
0000070b: REVERT
0000070c: JUMPDEST
0000070d: PUSH1 0x01
0000070f: PUSH1 0x00
00000711: CALLER
00000712: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000727: AND
00000728: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000073d: AND
0000073e: DUP2
0000073f: MSTORE
00000740: PUSH1 0x20
00000742: ADD
00000743: SWAP1
00000744: DUP2
00000745: MSTORE
00000746: PUSH1 0x20
00000748: ADD
00000749: PUSH1 0x00
0000074b: KECCAK256
0000074c: PUSH1 0x00
0000074e: SWAP1
0000074f: SLOAD
00000750: SWAP1
00000751: PUSH2 0x0100
00000754: EXP
00000755: SWAP1
00000756: DIV
00000757: PUSH1 0xff
00000759: AND
0000075a: PUSH2 0x0798
0000075d: JUMPI
0000075e: PUSH1 0x40
00000760: MLOAD
00000761: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000782: DUP2
00000783: MSTORE
00000784: PUSH1 0x04
00000786: ADD
00000787: PUSH2 0x078f
0000078a: SWAP1
0000078b: PUSH2 0x4b49
0000078e: JUMP
0000078f: JUMPDEST
00000790: PUSH1 0x40
00000792: MLOAD
00000793: DUP1
00000794: SWAP2
00000795: SUB
00000796: SWAP1
00000797: REVERT
00000798: JUMPDEST
00000799: PUSH1 0x00
0000079b: CALLER
0000079c: SWAP1
0000079d: POP
0000079e: PUSH1 0x00
000007a0: PUSH1 0x0d
000007a2: PUSH1 0x00
000007a4: DUP4
000007a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ba: AND
000007bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007d0: AND
000007d1: DUP2
000007d2: MSTORE
000007d3: PUSH1 0x20
000007d5: ADD
000007d6: SWAP1
000007d7: DUP2
000007d8: MSTORE
000007d9: PUSH1 0x20
000007db: ADD
000007dc: PUSH1 0x00
000007de: KECCAK256
000007df: PUSH1 0x00
000007e1: SWAP1
000007e2: SLOAD
000007e3: SWAP1
000007e4: PUSH2 0x0100
000007e7: EXP
000007e8: SWAP1
000007e9: DIV
000007ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007ff: AND
00000800: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000815: AND
00000816: PUSH4 0x70a08231
0000081b: PUSH1 0x09
0000081d: PUSH1 0x00
0000081f: DUP6
00000820: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000835: AND
00000836: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000084b: AND
0000084c: DUP2
0000084d: MSTORE
0000084e: PUSH1 0x20
00000850: ADD
00000851: SWAP1
00000852: DUP2
00000853: MSTORE
00000854: PUSH1 0x20
00000856: ADD
00000857: PUSH1 0x00
00000859: KECCAK256
0000085a: PUSH1 0x00
0000085c: SWAP1
0000085d: SLOAD
0000085e: SWAP1
0000085f: PUSH2 0x0100
00000862: EXP
00000863: SWAP1
00000864: DIV
00000865: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000087a: AND
0000087b: PUSH1 0x40
0000087d: MLOAD
0000087e: DUP3
0000087f: PUSH4 0xffffffff
00000884: AND
00000885: PUSH1 0xe0
00000887: SHL
00000888: DUP2
00000889: MSTORE
0000088a: PUSH1 0x04
0000088c: ADD
0000088d: PUSH2 0x0896
00000890: SWAP2
00000891: SWAP1
00000892: PUSH2 0x4b0e
00000895: JUMP
00000896: JUMPDEST
00000897: PUSH1 0x20
00000899: PUSH1 0x40
0000089b: MLOAD
0000089c: DUP1
0000089d: DUP4
0000089e: SUB
0000089f: DUP2
000008a0: DUP7
000008a1: DUP1
000008a2: EXTCODESIZE
000008a3: ISZERO
000008a4: DUP1
000008a5: ISZERO
000008a6: PUSH2 0x08ae
000008a9: JUMPI
000008aa: PUSH1 0x00
000008ac: DUP1
000008ad: REVERT
000008ae: JUMPDEST
000008af: POP
000008b0: GAS
000008b1: STATICCALL
000008b2: ISZERO
000008b3: DUP1
000008b4: ISZERO
000008b5: PUSH2 0x08c2
000008b8: JUMPI
000008b9: RETURNDATASIZE
000008ba: PUSH1 0x00
000008bc: DUP1
000008bd: RETURNDATACOPY
000008be: RETURNDATASIZE
000008bf: PUSH1 0x00
000008c1: REVERT
000008c2: JUMPDEST
000008c3: POP
000008c4: POP
000008c5: POP
000008c6: POP
000008c7: PUSH1 0x40
000008c9: MLOAD
000008ca: RETURNDATASIZE
000008cb: PUSH1 0x1f
000008cd: NOT
000008ce: PUSH1 0x1f
000008d0: DUP3
000008d1: ADD
000008d2: AND
000008d3: DUP3
000008d4: ADD
000008d5: DUP1
000008d6: PUSH1 0x40
000008d8: MSTORE
000008d9: POP
000008da: DUP2
000008db: ADD
000008dc: SWAP1
000008dd: PUSH2 0x08e6
000008e0: SWAP2
000008e1: SWAP1
000008e2: PUSH2 0x49af
000008e5: JUMP
000008e6: JUMPDEST
000008e7: SWAP1
000008e8: POP
000008e9: PUSH1 0x00
000008eb: PUSH1 0x04
000008ed: PUSH1 0x00
000008ef: DUP5
000008f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000905: AND
00000906: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000091b: AND
0000091c: DUP2
0000091d: MSTORE
0000091e: PUSH1 0x20
00000920: ADD
00000921: SWAP1
00000922: DUP2
00000923: MSTORE
00000924: PUSH1 0x20
00000926: ADD
00000927: PUSH1 0x00
00000929: KECCAK256
0000092a: SLOAD
0000092b: SWAP1
0000092c: POP
0000092d: DUP2
0000092e: PUSH1 0x04
00000930: PUSH1 0x00
00000932: DUP6
00000933: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000948: AND
00000949: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000095e: AND
0000095f: DUP2
00000960: MSTORE
00000961: PUSH1 0x20
00000963: ADD
00000964: SWAP1
00000965: DUP2
00000966: MSTORE
00000967: PUSH1 0x20
00000969: ADD
0000096a: PUSH1 0x00
0000096c: KECCAK256
0000096d: DUP2
0000096e: SWAP1
0000096f: SSTORE
00000970: POP
00000971: DUP1
00000972: DUP3
00000973: GT
00000974: PUSH2 0x0987
00000977: JUMPI
00000978: PUSH1 0x01
0000097a: DUP2
0000097b: PUSH2 0x0984
0000097e: SWAP2
0000097f: SWAP1
00000980: PUSH2 0x4c55
00000983: JUMP
00000984: JUMPDEST
00000985: SWAP2
00000986: POP
00000987: JUMPDEST
00000988: PUSH2 0x0a0e
0000098b: DUP4
0000098c: DUP6
0000098d: PUSH1 0x0f
0000098f: PUSH1 0x00
00000991: DUP8
00000992: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009a7: AND
000009a8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009bd: AND
000009be: DUP2
000009bf: MSTORE
000009c0: PUSH1 0x20
000009c2: ADD
000009c3: SWAP1
000009c4: DUP2
000009c5: MSTORE
000009c6: PUSH1 0x20
000009c8: ADD
000009c9: PUSH1 0x00
000009cb: KECCAK256
000009cc: PUSH1 0x00
000009ce: DUP9
000009cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009e4: AND
000009e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009fa: AND
000009fb: DUP2
000009fc: MSTORE
000009fd: PUSH1 0x20
000009ff: ADD
00000a00: SWAP1
00000a01: DUP2
00000a02: MSTORE
00000a03: PUSH1 0x20
00000a05: ADD
00000a06: PUSH1 0x00
00000a08: KECCAK256
00000a09: SLOAD
00000a0a: PUSH2 0x2ac2
00000a0d: JUMP
00000a0e: JUMPDEST
00000a0f: PUSH1 0x13
00000a11: PUSH1 0x00
00000a13: DUP6
00000a14: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a29: AND
00000a2a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a3f: AND
00000a40: DUP2
00000a41: MSTORE
00000a42: PUSH1 0x20
00000a44: ADD
00000a45: SWAP1
00000a46: DUP2
00000a47: MSTORE
00000a48: PUSH1 0x20
00000a4a: ADD
00000a4b: PUSH1 0x00
00000a4d: KECCAK256
00000a4e: PUSH1 0x00
00000a50: DUP7
00000a51: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a66: AND
00000a67: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a7c: AND
00000a7d: DUP2
00000a7e: MSTORE
00000a7f: PUSH1 0x20
00000a81: ADD
00000a82: SWAP1
00000a83: DUP2
00000a84: MSTORE
00000a85: PUSH1 0x20
00000a87: ADD
00000a88: PUSH1 0x00
00000a8a: KECCAK256
00000a8b: DUP2
00000a8c: SWAP1
00000a8d: SSTORE
00000a8e: POP
00000a8f: PUSH2 0x0a97
00000a92: DUP5
00000a93: PUSH2 0x2cbf
00000a96: JUMP
00000a97: JUMPDEST
00000a98: PUSH1 0x00
00000a9a: PUSH1 0x17
00000a9c: SLOAD
00000a9d: PUSH1 0x08
00000a9f: PUSH1 0x00
00000aa1: DUP7
00000aa2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ab7: AND
00000ab8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000acd: AND
00000ace: DUP2
00000acf: MSTORE
00000ad0: PUSH1 0x20
00000ad2: ADD
00000ad3: SWAP1
00000ad4: DUP2
00000ad5: MSTORE
00000ad6: PUSH1 0x20
00000ad8: ADD
00000ad9: PUSH1 0x00
00000adb: KECCAK256
00000adc: SLOAD
00000add: DUP4
00000ade: DUP6
00000adf: PUSH2 0x0ae8
00000ae2: SWAP2
00000ae3: SWAP1
00000ae4: PUSH2 0x4d36
00000ae7: JUMP
00000ae8: JUMPDEST
00000ae9: PUSH2 0x0af2
00000aec: SWAP2
00000aed: SWAP1
00000aee: PUSH2 0x4cdc
00000af1: JUMP
00000af2: JUMPDEST
00000af3: PUSH2 0x0afc
00000af6: SWAP2
00000af7: SWAP1
00000af8: PUSH2 0x4cab
00000afb: JUMP
00000afc: JUMPDEST
00000afd: SWAP1
00000afe: POP
00000aff: PUSH1 0x00
00000b01: PUSH1 0x17
00000b03: SLOAD
00000b04: PUSH1 0x18
00000b06: SLOAD
00000b07: DUP4
00000b08: PUSH2 0x0b11
00000b0b: SWAP2
00000b0c: SWAP1
00000b0d: PUSH2 0x4cdc
00000b10: JUMP
00000b11: JUMPDEST
00000b12: PUSH2 0x0b1b
00000b15: SWAP2
00000b16: SWAP1
00000b17: PUSH2 0x4cab
00000b1a: JUMP
00000b1b: JUMPDEST
00000b1c: SWAP1
00000b1d: POP
00000b1e: DUP1
00000b1f: DUP3
00000b20: PUSH2 0x0b29
00000b23: SWAP2
00000b24: SWAP1
00000b25: PUSH2 0x4d36
00000b28: JUMP
00000b29: JUMPDEST
00000b2a: SWAP2
00000b2b: POP
00000b2c: DUP2
00000b2d: PUSH1 0x05
00000b2f: PUSH1 0x00
00000b31: DUP8
00000b32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b47: AND
00000b48: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b5d: AND
00000b5e: DUP2
00000b5f: MSTORE
00000b60: PUSH1 0x20
00000b62: ADD
00000b63: SWAP1
00000b64: DUP2
00000b65: MSTORE
00000b66: PUSH1 0x20
00000b68: ADD
00000b69: PUSH1 0x00
00000b6b: KECCAK256
00000b6c: SLOAD
00000b6d: PUSH2 0x0b76
00000b70: SWAP2
00000b71: SWAP1
00000b72: PUSH2 0x4c55
00000b75: JUMP
00000b76: JUMPDEST
00000b77: PUSH1 0x05
00000b79: PUSH1 0x00
00000b7b: DUP8
00000b7c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b91: AND
00000b92: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ba7: AND
00000ba8: DUP2
00000ba9: MSTORE
00000baa: PUSH1 0x20
00000bac: ADD
00000bad: SWAP1
00000bae: DUP2
00000baf: MSTORE
00000bb0: PUSH1 0x20
00000bb2: ADD
00000bb3: PUSH1 0x00
00000bb5: KECCAK256
00000bb6: DUP2
00000bb7: SWAP1
00000bb8: SSTORE
00000bb9: POP
00000bba: PUSH1 0x05
00000bbc: PUSH1 0x00
00000bbe: DUP7
00000bbf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bd4: AND
00000bd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bea: AND
00000beb: DUP2
00000bec: MSTORE
00000bed: PUSH1 0x20
00000bef: ADD
00000bf0: SWAP1
00000bf1: DUP2
00000bf2: MSTORE
00000bf3: PUSH1 0x20
00000bf5: ADD
00000bf6: PUSH1 0x00
00000bf8: KECCAK256
00000bf9: SLOAD
00000bfa: PUSH1 0x11
00000bfc: PUSH1 0x00
00000bfe: DUP8
00000bff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c14: AND
00000c15: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c2a: AND
00000c2b: DUP2
00000c2c: MSTORE
00000c2d: PUSH1 0x20
00000c2f: ADD
00000c30: SWAP1
00000c31: DUP2
00000c32: MSTORE
00000c33: PUSH1 0x20
00000c35: ADD
00000c36: PUSH1 0x00
00000c38: KECCAK256
00000c39: PUSH1 0x00
00000c3b: DUP9
00000c3c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c51: AND
00000c52: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c67: AND
00000c68: DUP2
00000c69: MSTORE
00000c6a: PUSH1 0x20
00000c6c: ADD
00000c6d: SWAP1
00000c6e: DUP2
00000c6f: MSTORE
00000c70: PUSH1 0x20
00000c72: ADD
00000c73: PUSH1 0x00
00000c75: KECCAK256
00000c76: DUP2
00000c77: SWAP1
00000c78: SSTORE
00000c79: POP
00000c7a: PUSH1 0x17
00000c7c: SLOAD
00000c7d: DUP3
00000c7e: PUSH1 0x0f
00000c80: PUSH1 0x00
00000c82: DUP9
00000c83: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c98: AND
00000c99: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cae: AND
00000caf: DUP2
00000cb0: MSTORE
00000cb1: PUSH1 0x20
00000cb3: ADD
00000cb4: SWAP1
00000cb5: DUP2
00000cb6: MSTORE
00000cb7: PUSH1 0x20
00000cb9: ADD
00000cba: PUSH1 0x00
00000cbc: KECCAK256
00000cbd: PUSH1 0x00
00000cbf: DUP10
00000cc0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cd5: AND
00000cd6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ceb: AND
00000cec: DUP2
00000ced: MSTORE
00000cee: PUSH1 0x20
00000cf0: ADD
00000cf1: SWAP1
00000cf2: DUP2
00000cf3: MSTORE
00000cf4: PUSH1 0x20
00000cf6: ADD
00000cf7: PUSH1 0x00
00000cf9: KECCAK256
00000cfa: SLOAD
00000cfb: PUSH1 0x07
00000cfd: PUSH1 0x00
00000cff: DUP10
00000d00: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d15: AND
00000d16: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d2b: AND
00000d2c: DUP2
00000d2d: MSTORE
00000d2e: PUSH1 0x20
00000d30: ADD
00000d31: SWAP1
00000d32: DUP2
00000d33: MSTORE
00000d34: PUSH1 0x20
00000d36: ADD
00000d37: PUSH1 0x00
00000d39: KECCAK256
00000d3a: SLOAD
00000d3b: PUSH1 0x17
00000d3d: SLOAD
00000d3e: PUSH2 0x0d47
00000d41: SWAP2
00000d42: SWAP1
00000d43: PUSH2 0x4d36
00000d46: JUMP
00000d47: JUMPDEST
00000d48: PUSH2 0x0d51
00000d4b: SWAP2
00000d4c: SWAP1
00000d4d: PUSH2 0x4c55
00000d50: JUMP
00000d51: JUMPDEST
00000d52: PUSH2 0x0d5b
00000d55: SWAP2
00000d56: SWAP1
00000d57: PUSH2 0x4cdc
00000d5a: JUMP
00000d5b: JUMPDEST
00000d5c: PUSH2 0x0d65
00000d5f: SWAP2
00000d60: SWAP1
00000d61: PUSH2 0x4cab
00000d64: JUMP
00000d65: JUMPDEST
00000d66: PUSH1 0x12
00000d68: PUSH1 0x00
00000d6a: DUP8
00000d6b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d80: AND
00000d81: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d96: AND
00000d97: DUP2
00000d98: MSTORE
00000d99: PUSH1 0x20
00000d9b: ADD
00000d9c: SWAP1
00000d9d: DUP2
00000d9e: MSTORE
00000d9f: PUSH1 0x20
00000da1: ADD
00000da2: PUSH1 0x00
00000da4: KECCAK256
00000da5: PUSH1 0x00
00000da7: DUP9
00000da8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dbd: AND
00000dbe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dd3: AND
00000dd4: DUP2
00000dd5: MSTORE
00000dd6: PUSH1 0x20
00000dd8: ADD
00000dd9: SWAP1
00000dda: DUP2
00000ddb: MSTORE
00000ddc: PUSH1 0x20
00000dde: ADD
00000ddf: PUSH1 0x00
00000de1: KECCAK256
00000de2: DUP2
00000de3: SWAP1
00000de4: SSTORE
00000de5: POP
00000de6: PUSH2 0x0def
00000de9: DUP6
00000dea: DUP8
00000deb: PUSH2 0x322b
00000dee: JUMP
00000def: JUMPDEST
00000df0: POP
00000df1: POP
00000df2: POP
00000df3: POP
00000df4: POP
00000df5: POP
00000df6: JUMP
00000df7: JUMPDEST
00000df8: PUSH1 0x0e
00000dfa: PUSH1 0x00
00000dfc: DUP3
00000dfd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e12: AND
00000e13: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e28: AND
00000e29: DUP2
00000e2a: MSTORE
00000e2b: PUSH1 0x20
00000e2d: ADD
00000e2e: SWAP1
00000e2f: DUP2
00000e30: MSTORE
00000e31: PUSH1 0x20
00000e33: ADD
00000e34: PUSH1 0x00
00000e36: KECCAK256
00000e37: PUSH1 0x00
00000e39: CALLER
00000e3a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e4f: AND
00000e50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e65: AND
00000e66: DUP2
00000e67: MSTORE
00000e68: PUSH1 0x20
00000e6a: ADD
00000e6b: SWAP1
00000e6c: DUP2
00000e6d: MSTORE
00000e6e: PUSH1 0x20
00000e70: ADD
00000e71: PUSH1 0x00
00000e73: KECCAK256
00000e74: PUSH1 0x00
00000e76: SWAP1
00000e77: SLOAD
00000e78: SWAP1
00000e79: PUSH2 0x0100
00000e7c: EXP
00000e7d: SWAP1
00000e7e: DIV
00000e7f: PUSH1 0xff
00000e81: AND
00000e82: PUSH2 0x0ec0
00000e85: JUMPI
00000e86: PUSH1 0x40
00000e88: MLOAD
00000e89: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000eaa: DUP2
00000eab: MSTORE
00000eac: PUSH1 0x04
00000eae: ADD
00000eaf: PUSH2 0x0eb7
00000eb2: SWAP1
00000eb3: PUSH2 0x4c09
00000eb6: JUMP
00000eb7: JUMPDEST
00000eb8: PUSH1 0x40
00000eba: MLOAD
00000ebb: DUP1
00000ebc: SWAP2
00000ebd: SUB
00000ebe: SWAP1
00000ebf: REVERT
00000ec0: JUMPDEST
00000ec1: PUSH1 0x00
00000ec3: CALLER
00000ec4: SWAP1
00000ec5: POP
00000ec6: PUSH2 0x0ecf
00000ec9: DUP3
00000eca: DUP3
00000ecb: PUSH2 0x36c7
00000ece: JUMP
00000ecf: JUMPDEST
00000ed0: POP
00000ed1: POP
00000ed2: JUMP
00000ed3: JUMPDEST
00000ed4: PUSH1 0x00
00000ed6: PUSH1 0x01
00000ed8: PUSH1 0x00
00000eda: DUP5
00000edb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ef0: AND
00000ef1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f06: AND
00000f07: DUP2
00000f08: MSTORE
00000f09: PUSH1 0x20
00000f0b: ADD
00000f0c: SWAP1
00000f0d: DUP2
00000f0e: MSTORE
00000f0f: PUSH1 0x20
00000f11: ADD
00000f12: PUSH1 0x00
00000f14: KECCAK256
00000f15: PUSH1 0x00
00000f17: SWAP1
00000f18: SLOAD
00000f19: SWAP1
00000f1a: PUSH2 0x0100
00000f1d: EXP
00000f1e: SWAP1
00000f1f: DIV
00000f20: PUSH1 0xff
00000f22: AND
00000f23: PUSH2 0x0f61
00000f26: JUMPI
00000f27: PUSH1 0x40
00000f29: MLOAD
00000f2a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000f4b: DUP2
00000f4c: MSTORE
00000f4d: PUSH1 0x04
00000f4f: ADD
00000f50: PUSH2 0x0f58
00000f53: SWAP1
00000f54: PUSH2 0x4b89
00000f57: JUMP
00000f58: JUMPDEST
00000f59: PUSH1 0x40
00000f5b: MLOAD
00000f5c: DUP1
00000f5d: SWAP2
00000f5e: SUB
00000f5f: SWAP1
00000f60: REVERT
00000f61: JUMPDEST
00000f62: PUSH1 0x0e
00000f64: PUSH1 0x00
00000f66: DUP5
00000f67: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f7c: AND
00000f7d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f92: AND
00000f93: DUP2
00000f94: MSTORE
00000f95: PUSH1 0x20
00000f97: ADD
00000f98: SWAP1
00000f99: DUP2
00000f9a: MSTORE
00000f9b: PUSH1 0x20
00000f9d: ADD
00000f9e: PUSH1 0x00
00000fa0: KECCAK256
00000fa1: PUSH1 0x00
00000fa3: DUP4
00000fa4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fb9: AND
00000fba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fcf: AND
00000fd0: DUP2
00000fd1: MSTORE
00000fd2: PUSH1 0x20
00000fd4: ADD
00000fd5: SWAP1
00000fd6: DUP2
00000fd7: MSTORE
00000fd8: PUSH1 0x20
00000fda: ADD
00000fdb: PUSH1 0x00
00000fdd: KECCAK256
00000fde: PUSH1 0x00
00000fe0: SWAP1
00000fe1: SLOAD
00000fe2: SWAP1
00000fe3: PUSH2 0x0100
00000fe6: EXP
00000fe7: SWAP1
00000fe8: DIV
00000fe9: PUSH1 0xff
00000feb: AND
00000fec: PUSH2 0x102a
00000fef: JUMPI
00000ff0: PUSH1 0x40
00000ff2: MLOAD
00000ff3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001014: DUP2
00001015: MSTORE
00001016: PUSH1 0x04
00001018: ADD
00001019: PUSH2 0x1021
0000101c: SWAP1
0000101d: PUSH2 0x4bc9
00001020: JUMP
00001021: JUMPDEST
00001022: PUSH1 0x40
00001024: MLOAD
00001025: DUP1
00001026: SWAP2
00001027: SUB
00001028: SWAP1
00001029: REVERT
0000102a: JUMPDEST
0000102b: PUSH2 0x10b1
0000102e: DUP4
0000102f: DUP4
00001030: PUSH1 0x0f
00001032: PUSH1 0x00
00001034: DUP8
00001035: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000104a: AND
0000104b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001060: AND
00001061: DUP2
00001062: MSTORE
00001063: PUSH1 0x20
00001065: ADD
00001066: SWAP1
00001067: DUP2
00001068: MSTORE
00001069: PUSH1 0x20
0000106b: ADD
0000106c: PUSH1 0x00
0000106e: KECCAK256
0000106f: PUSH1 0x00
00001071: DUP7
00001072: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001087: AND
00001088: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000109d: AND
0000109e: DUP2
0000109f: MSTORE
000010a0: PUSH1 0x20
000010a2: ADD
000010a3: SWAP1
000010a4: DUP2
000010a5: MSTORE
000010a6: PUSH1 0x20
000010a8: ADD
000010a9: PUSH1 0x00
000010ab: KECCAK256
000010ac: SLOAD
000010ad: PUSH2 0x3e18
000010b0: JUMP
000010b1: JUMPDEST
000010b2: SWAP1
000010b3: POP
000010b4: SWAP3
000010b5: SWAP2
000010b6: POP
000010b7: POP
000010b8: JUMP
000010b9: JUMPDEST
000010ba: PUSH1 0x00
000010bc: DUP1
000010bd: PUSH1 0x00
000010bf: SWAP1
000010c0: SLOAD
000010c1: SWAP1
000010c2: PUSH2 0x0100
000010c5: EXP
000010c6: SWAP1
000010c7: DIV
000010c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010dd: AND
000010de: SWAP1
000010df: POP
000010e0: SWAP1
000010e1: JUMP
000010e2: JUMPDEST
000010e3: PUSH1 0x00
000010e5: PUSH1 0x14
000010e7: PUSH1 0x00
000010e9: CALLER
000010ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010ff: AND
00001100: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001115: AND
00001116: DUP2
00001117: MSTORE
00001118: PUSH1 0x20
0000111a: ADD
0000111b: SWAP1
0000111c: DUP2
0000111d: MSTORE
0000111e: PUSH1 0x20
00001120: ADD
00001121: PUSH1 0x00
00001123: KECCAK256
00001124: PUSH1 0x00
00001126: SWAP1
00001127: SLOAD
00001128: SWAP1
00001129: PUSH2 0x0100
0000112c: EXP
0000112d: SWAP1
0000112e: DIV
0000112f: PUSH1 0xff
00001131: AND
00001132: PUSH2 0x1170
00001135: JUMPI
00001136: PUSH1 0x40
00001138: MLOAD
00001139: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000115a: DUP2
0000115b: MSTORE
0000115c: PUSH1 0x04
0000115e: ADD
0000115f: PUSH2 0x1167
00001162: SWAP1
00001163: PUSH2 0x4b29
00001166: JUMP
00001167: JUMPDEST
00001168: PUSH1 0x40
0000116a: MLOAD
0000116b: DUP1
0000116c: SWAP2
0000116d: SUB
0000116e: SWAP1
0000116f: REVERT
00001170: JUMPDEST
00001171: PUSH1 0x00
00001173: CALLER
00001174: SWAP1
00001175: POP
00001176: PUSH2 0x117e
00001179: DUP2
0000117a: PUSH2 0x4277
0000117d: JUMP
0000117e: JUMPDEST
0000117f: SWAP2
00001180: POP
00001181: POP
00001182: SWAP1
00001183: JUMP
00001184: JUMPDEST
00001185: PUSH1 0x00
00001187: PUSH1 0x01
00001189: PUSH1 0x00
0000118b: DUP5
0000118c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011a1: AND
000011a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011b7: AND
000011b8: DUP2
000011b9: MSTORE
000011ba: PUSH1 0x20
000011bc: ADD
000011bd: SWAP1
000011be: DUP2
000011bf: MSTORE
000011c0: PUSH1 0x20
000011c2: ADD
000011c3: PUSH1 0x00
000011c5: KECCAK256
000011c6: PUSH1 0x00
000011c8: SWAP1
000011c9: SLOAD
000011ca: SWAP1
000011cb: PUSH2 0x0100
000011ce: EXP
000011cf: SWAP1
000011d0: DIV
000011d1: PUSH1 0xff
000011d3: AND
000011d4: PUSH2 0x1212
000011d7: JUMPI
000011d8: PUSH1 0x40
000011da: MLOAD
000011db: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000011fc: DUP2
000011fd: MSTORE
000011fe: PUSH1 0x04
00001200: ADD
00001201: PUSH2 0x1209
00001204: SWAP1
00001205: PUSH2 0x4b89
00001208: JUMP
00001209: JUMPDEST
0000120a: PUSH1 0x40
0000120c: MLOAD
0000120d: DUP1
0000120e: SWAP2
0000120f: SUB
00001210: SWAP1
00001211: REVERT
00001212: JUMPDEST
00001213: PUSH1 0x0e
00001215: PUSH1 0x00
00001217: DUP5
00001218: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000122d: AND
0000122e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001243: AND
00001244: DUP2
00001245: MSTORE
00001246: PUSH1 0x20
00001248: ADD
00001249: SWAP1
0000124a: DUP2
0000124b: MSTORE
0000124c: PUSH1 0x20
0000124e: ADD
0000124f: PUSH1 0x00
00001251: KECCAK256
00001252: PUSH1 0x00
00001254: DUP4
00001255: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000126a: AND
0000126b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001280: AND
00001281: DUP2
00001282: MSTORE
00001283: PUSH1 0x20
00001285: ADD
00001286: SWAP1
00001287: DUP2
00001288: MSTORE
00001289: PUSH1 0x20
0000128b: ADD
0000128c: PUSH1 0x00
0000128e: KECCAK256
0000128f: PUSH1 0x00
00001291: SWAP1
00001292: SLOAD
00001293: SWAP1
00001294: PUSH2 0x0100
00001297: EXP
00001298: SWAP1
00001299: DIV
0000129a: PUSH1 0xff
0000129c: AND
0000129d: PUSH2 0x12db
000012a0: JUMPI
000012a1: PUSH1 0x40
000012a3: MLOAD
000012a4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000012c5: DUP2
000012c6: MSTORE
000012c7: PUSH1 0x04
000012c9: ADD
000012ca: PUSH2 0x12d2
000012cd: SWAP1
000012ce: PUSH2 0x4bc9
000012d1: JUMP
000012d2: JUMPDEST
000012d3: PUSH1 0x40
000012d5: MLOAD
000012d6: DUP1
000012d7: SWAP2
000012d8: SUB
000012d9: SWAP1
000012da: REVERT
000012db: JUMPDEST
000012dc: PUSH1 0x0f
000012de: PUSH1 0x00
000012e0: DUP5
000012e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012f6: AND
000012f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000130c: AND
0000130d: DUP2
0000130e: MSTORE
0000130f: PUSH1 0x20
00001311: ADD
00001312: SWAP1
00001313: DUP2
00001314: MSTORE
00001315: PUSH1 0x20
00001317: ADD
00001318: PUSH1 0x00
0000131a: KECCAK256
0000131b: PUSH1 0x00
0000131d: DUP4
0000131e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001333: AND
00001334: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001349: AND
0000134a: DUP2
0000134b: MSTORE
0000134c: PUSH1 0x20
0000134e: ADD
0000134f: SWAP1
00001350: DUP2
00001351: MSTORE
00001352: PUSH1 0x20
00001354: ADD
00001355: PUSH1 0x00
00001357: KECCAK256
00001358: SLOAD
00001359: SWAP1
0000135a: POP
0000135b: SWAP3
0000135c: SWAP2
0000135d: POP
0000135e: POP
0000135f: JUMP
00001360: JUMPDEST
00001361: PUSH1 0x14
00001363: PUSH1 0x00
00001365: CALLER
00001366: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000137b: AND
0000137c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001391: AND
00001392: DUP2
00001393: MSTORE
00001394: PUSH1 0x20
00001396: ADD
00001397: SWAP1
00001398: DUP2
00001399: MSTORE
0000139a: PUSH1 0x20
0000139c: ADD
0000139d: PUSH1 0x00
0000139f: KECCAK256
000013a0: PUSH1 0x00
000013a2: SWAP1
000013a3: SLOAD
000013a4: SWAP1
000013a5: PUSH2 0x0100
000013a8: EXP
000013a9: SWAP1
000013aa: DIV
000013ab: PUSH1 0xff
000013ad: AND
000013ae: PUSH2 0x13ec
000013b1: JUMPI
000013b2: PUSH1 0x40
000013b4: MLOAD
000013b5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000013d6: DUP2
000013d7: MSTORE
000013d8: PUSH1 0x04
000013da: ADD
000013db: PUSH2 0x13e3
000013de: SWAP1
000013df: PUSH2 0x4b29
000013e2: JUMP
000013e3: JUMPDEST
000013e4: PUSH1 0x40
000013e6: MLOAD
000013e7: DUP1
000013e8: SWAP2
000013e9: SUB
000013ea: SWAP1
000013eb: REVERT
000013ec: JUMPDEST
000013ed: PUSH1 0x00
000013ef: CALLER
000013f0: SWAP1
000013f1: POP
000013f2: PUSH1 0x00
000013f4: PUSH1 0x16
000013f6: PUSH1 0x00
000013f8: DUP4
000013f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000140e: AND
0000140f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001424: AND
00001425: DUP2
00001426: MSTORE
00001427: PUSH1 0x20
00001429: ADD
0000142a: SWAP1
0000142b: DUP2
0000142c: MSTORE
0000142d: PUSH1 0x20
0000142f: ADD
00001430: PUSH1 0x00
00001432: KECCAK256
00001433: DUP1
00001434: SLOAD
00001435: DUP1
00001436: PUSH1 0x20
00001438: MUL
00001439: PUSH1 0x20
0000143b: ADD
0000143c: PUSH1 0x40
0000143e: MLOAD
0000143f: SWAP1
00001440: DUP2
00001441: ADD
00001442: PUSH1 0x40
00001444: MSTORE
00001445: DUP1
00001446: SWAP3
00001447: SWAP2
00001448: SWAP1
00001449: DUP2
0000144a: DUP2
0000144b: MSTORE
0000144c: PUSH1 0x20
0000144e: ADD
0000144f: DUP3
00001450: DUP1
00001451: SLOAD
00001452: DUP1
00001453: ISZERO
00001454: PUSH2 0x14b2
00001457: JUMPI
00001458: PUSH1 0x20
0000145a: MUL
0000145b: DUP3
0000145c: ADD
0000145d: SWAP2
0000145e: SWAP1
0000145f: PUSH1 0x00
00001461: MSTORE
00001462: PUSH1 0x20
00001464: PUSH1 0x00
00001466: KECCAK256
00001467: SWAP1
00001468: JUMPDEST
00001469: DUP2
0000146a: PUSH1 0x00
0000146c: SWAP1
0000146d: SLOAD
0000146e: SWAP1
0000146f: PUSH2 0x0100
00001472: EXP
00001473: SWAP1
00001474: DIV
00001475: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000148a: AND
0000148b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014a0: AND
000014a1: DUP2
000014a2: MSTORE
000014a3: PUSH1 0x20
000014a5: ADD
000014a6: SWAP1
000014a7: PUSH1 0x01
000014a9: ADD
000014aa: SWAP1
000014ab: DUP1
000014ac: DUP4
000014ad: GT
000014ae: PUSH2 0x1468
000014b1: JUMPI
000014b2: JUMPDEST
000014b3: POP
000014b4: POP
000014b5: POP
000014b6: POP
000014b7: POP
000014b8: SWAP1
000014b9: POP
000014ba: PUSH1 0x00
000014bc: PUSH1 0x01
000014be: SWAP1
000014bf: POP
000014c0: JUMPDEST
000014c1: DUP2
000014c2: MLOAD
000014c3: DUP2
000014c4: LT
000014c5: ISZERO
000014c6: PUSH2 0x1526
000014c9: JUMPI
000014ca: PUSH2 0x1513
000014cd: DUP3
000014ce: DUP3
000014cf: DUP2
000014d0: MLOAD
000014d1: DUP2
000014d2: LT
000014d3: PUSH2 0x1505
000014d6: JUMPI
000014d7: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000014f8: PUSH1 0x00
000014fa: MSTORE
000014fb: PUSH1 0x32
000014fd: PUSH1 0x04
000014ff: MSTORE
00001500: PUSH1 0x24
00001502: PUSH1 0x00
00001504: REVERT
00001505: JUMPDEST
00001506: PUSH1 0x20
00001508: MUL
00001509: PUSH1 0x20
0000150b: ADD
0000150c: ADD
0000150d: MLOAD
0000150e: DUP5
0000150f: PUSH2 0x36c7
00001512: JUMP
00001513: JUMPDEST
00001514: DUP1
00001515: DUP1
00001516: PUSH2 0x151e
00001519: SWAP1
0000151a: PUSH2 0x4da6
0000151d: JUMP
0000151e: JUMPDEST
0000151f: SWAP2
00001520: POP
00001521: POP
00001522: PUSH2 0x14c0
00001525: JUMP
00001526: JUMPDEST
00001527: POP
00001528: POP
00001529: POP
0000152a: JUMP
0000152b: JUMPDEST
0000152c: PUSH1 0x02
0000152e: PUSH1 0x00
00001530: DUP8
00001531: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001546: AND
00001547: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000155c: AND
0000155d: DUP2
0000155e: MSTORE
0000155f: PUSH1 0x20
00001561: ADD
00001562: SWAP1
00001563: DUP2
00001564: MSTORE
00001565: PUSH1 0x20
00001567: ADD
00001568: PUSH1 0x00
0000156a: KECCAK256
0000156b: PUSH1 0x00
0000156d: SWAP1
0000156e: SLOAD
0000156f: SWAP1
00001570: PUSH2 0x0100
00001573: EXP
00001574: SWAP1
00001575: DIV
00001576: PUSH1 0xff
00001578: AND
00001579: PUSH2 0x15b7
0000157c: JUMPI
0000157d: PUSH1 0x40
0000157f: MLOAD
00001580: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000015a1: DUP2
000015a2: MSTORE
000015a3: PUSH1 0x04
000015a5: ADD
000015a6: PUSH2 0x15ae
000015a9: SWAP1
000015aa: PUSH2 0x4b29
000015ad: JUMP
000015ae: JUMPDEST
000015af: PUSH1 0x40
000015b1: MLOAD
000015b2: DUP1
000015b3: SWAP2
000015b4: SUB
000015b5: SWAP1
000015b6: REVERT
000015b7: JUMPDEST
000015b8: PUSH1 0x01
000015ba: PUSH1 0x00
000015bc: DUP8
000015bd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015d2: AND
000015d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015e8: AND
000015e9: DUP2
000015ea: MSTORE
000015eb: PUSH1 0x20
000015ed: ADD
000015ee: SWAP1
000015ef: DUP2
000015f0: MSTORE
000015f1: PUSH1 0x20
000015f3: ADD
000015f4: PUSH1 0x00
000015f6: KECCAK256
000015f7: PUSH1 0x00
000015f9: SWAP1
000015fa: SLOAD
000015fb: SWAP1
000015fc: PUSH2 0x0100
000015ff: EXP
00001600: SWAP1
00001601: DIV
00001602: PUSH1 0xff
00001604: AND
00001605: ISZERO
00001606: PUSH2 0x1644
00001609: JUMPI
0000160a: PUSH1 0x40
0000160c: MLOAD
0000160d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000162e: DUP2
0000162f: MSTORE
00001630: PUSH1 0x04
00001632: ADD
00001633: PUSH2 0x163b
00001636: SWAP1
00001637: PUSH2 0x4b69
0000163a: JUMP
0000163b: JUMPDEST
0000163c: PUSH1 0x40
0000163e: MLOAD
0000163f: DUP1
00001640: SWAP2
00001641: SUB
00001642: SWAP1
00001643: REVERT
00001644: JUMPDEST
00001645: DUP2
00001646: PUSH1 0x04
00001648: PUSH1 0x00
0000164a: DUP9
0000164b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001660: AND
00001661: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001676: AND
00001677: DUP2
00001678: MSTORE
00001679: PUSH1 0x20
0000167b: ADD
0000167c: SWAP1
0000167d: DUP2
0000167e: MSTORE
0000167f: PUSH1 0x20
00001681: ADD
00001682: PUSH1 0x00
00001684: KECCAK256
00001685: DUP2
00001686: SWAP1
00001687: SSTORE
00001688: POP
00001689: DUP2
0000168a: PUSH1 0x05
0000168c: PUSH1 0x00
0000168e: DUP9
0000168f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016a4: AND
000016a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016ba: AND
000016bb: DUP2
000016bc: MSTORE
000016bd: PUSH1 0x20
000016bf: ADD
000016c0: SWAP1
000016c1: DUP2
000016c2: MSTORE
000016c3: PUSH1 0x20
000016c5: ADD
000016c6: PUSH1 0x00
000016c8: KECCAK256
000016c9: DUP2
000016ca: SWAP1
000016cb: SSTORE
000016cc: POP
000016cd: DUP2
000016ce: PUSH1 0x06
000016d0: PUSH1 0x00
000016d2: DUP9
000016d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016e8: AND
000016e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016fe: AND
000016ff: DUP2
00001700: MSTORE
00001701: PUSH1 0x20
00001703: ADD
00001704: SWAP1
00001705: DUP2
00001706: MSTORE
00001707: PUSH1 0x20
00001709: ADD
0000170a: PUSH1 0x00
0000170c: KECCAK256
0000170d: DUP2
0000170e: SWAP1
0000170f: SSTORE
00001710: POP
00001711: PUSH1 0x00
00001713: PUSH1 0x07
00001715: PUSH1 0x00
00001717: DUP9
00001718: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000172d: AND
0000172e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001743: AND
00001744: DUP2
00001745: MSTORE
00001746: PUSH1 0x20
00001748: ADD
00001749: SWAP1
0000174a: DUP2
0000174b: MSTORE
0000174c: PUSH1 0x20
0000174e: ADD
0000174f: PUSH1 0x00
00001751: KECCAK256
00001752: DUP2
00001753: SWAP1
00001754: SSTORE
00001755: POP
00001756: DUP5
00001757: PUSH1 0x08
00001759: PUSH1 0x00
0000175b: DUP9
0000175c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001771: AND
00001772: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001787: AND
00001788: DUP2
00001789: MSTORE
0000178a: PUSH1 0x20
0000178c: ADD
0000178d: SWAP1
0000178e: DUP2
0000178f: MSTORE
00001790: PUSH1 0x20
00001792: ADD
00001793: PUSH1 0x00
00001795: KECCAK256
00001796: DUP2
00001797: SWAP1
00001798: SSTORE
00001799: POP
0000179a: DUP4
0000179b: PUSH1 0x09
0000179d: PUSH1 0x00
0000179f: DUP9
000017a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017b5: AND
000017b6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017cb: AND
000017cc: DUP2
000017cd: MSTORE
000017ce: PUSH1 0x20
000017d0: ADD
000017d1: SWAP1
000017d2: DUP2
000017d3: MSTORE
000017d4: PUSH1 0x20
000017d6: ADD
000017d7: PUSH1 0x00
000017d9: KECCAK256
000017da: PUSH1 0x00
000017dc: PUSH2 0x0100
000017df: EXP
000017e0: DUP2
000017e1: SLOAD
000017e2: DUP2
000017e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017f8: MUL
000017f9: NOT
000017fa: AND
000017fb: SWAP1
000017fc: DUP4
000017fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001812: AND
00001813: MUL
00001814: OR
00001815: SWAP1
00001816: SSTORE
00001817: POP
00001818: DUP1
00001819: PUSH1 0x0a
0000181b: PUSH1 0x00
0000181d: DUP9
0000181e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001833: AND
00001834: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001849: AND
0000184a: DUP2
0000184b: MSTORE
0000184c: PUSH1 0x20
0000184e: ADD
0000184f: SWAP1
00001850: DUP2
00001851: MSTORE
00001852: PUSH1 0x20
00001854: ADD
00001855: PUSH1 0x00
00001857: KECCAK256
00001858: DUP2
00001859: SWAP1
0000185a: SSTORE
0000185b: POP
0000185c: DUP3
0000185d: PUSH1 0x0d
0000185f: PUSH1 0x00
00001861: DUP9
00001862: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001877: AND
00001878: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000188d: AND
0000188e: DUP2
0000188f: MSTORE
00001890: PUSH1 0x20
00001892: ADD
00001893: SWAP1
00001894: DUP2
00001895: MSTORE
00001896: PUSH1 0x20
00001898: ADD
00001899: PUSH1 0x00
0000189b: KECCAK256
0000189c: PUSH1 0x00
0000189e: PUSH2 0x0100
000018a1: EXP
000018a2: DUP2
000018a3: SLOAD
000018a4: DUP2
000018a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018ba: MUL
000018bb: NOT
000018bc: AND
000018bd: SWAP1
000018be: DUP4
000018bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018d4: AND
000018d5: MUL
000018d6: OR
000018d7: SWAP1
000018d8: SSTORE
000018d9: POP
000018da: DUP6
000018db: PUSH1 0x0c
000018dd: PUSH1 0x00
000018df: DUP9
000018e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018f5: AND
000018f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000190b: AND
0000190c: DUP2
0000190d: MSTORE
0000190e: PUSH1 0x20
00001910: ADD
00001911: SWAP1
00001912: DUP2
00001913: MSTORE
00001914: PUSH1 0x20
00001916: ADD
00001917: PUSH1 0x00
00001919: KECCAK256
0000191a: PUSH1 0x00
0000191c: PUSH2 0x0100
0000191f: EXP
00001920: DUP2
00001921: SLOAD
00001922: DUP2
00001923: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001938: MUL
00001939: NOT
0000193a: AND
0000193b: SWAP1
0000193c: DUP4
0000193d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001952: AND
00001953: MUL
00001954: OR
00001955: SWAP1
00001956: SSTORE
00001957: POP
00001958: PUSH1 0x01
0000195a: DUP1
0000195b: PUSH1 0x00
0000195d: DUP9
0000195e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001973: AND
00001974: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001989: AND
0000198a: DUP2
0000198b: MSTORE
0000198c: PUSH1 0x20
0000198e: ADD
0000198f: SWAP1
00001990: DUP2
00001991: MSTORE
00001992: PUSH1 0x20
00001994: ADD
00001995: PUSH1 0x00
00001997: KECCAK256
00001998: PUSH1 0x00
0000199a: PUSH2 0x0100
0000199d: EXP
0000199e: DUP2
0000199f: SLOAD
000019a0: DUP2
000019a1: PUSH1 0xff
000019a3: MUL
000019a4: NOT
000019a5: AND
000019a6: SWAP1
000019a7: DUP4
000019a8: ISZERO
000019a9: ISZERO
000019aa: MUL
000019ab: OR
000019ac: SWAP1
000019ad: SSTORE
000019ae: POP
000019af: POP
000019b0: POP
000019b1: POP
000019b2: POP
000019b3: POP
000019b4: POP
000019b5: JUMP
000019b6: JUMPDEST
000019b7: PUSH1 0x02
000019b9: PUSH1 0x00
000019bb: CALLER
000019bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019d1: AND
000019d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019e7: AND
000019e8: DUP2
000019e9: MSTORE
000019ea: PUSH1 0x20
000019ec: ADD
000019ed: SWAP1
000019ee: DUP2
000019ef: MSTORE
000019f0: PUSH1 0x20
000019f2: ADD
000019f3: PUSH1 0x00
000019f5: KECCAK256
000019f6: PUSH1 0x00
000019f8: SWAP1
000019f9: SLOAD
000019fa: SWAP1
000019fb: PUSH2 0x0100
000019fe: EXP
000019ff: SWAP1
00001a00: DIV
00001a01: PUSH1 0xff
00001a03: AND
00001a04: PUSH2 0x1a42
00001a07: JUMPI
00001a08: PUSH1 0x40
00001a0a: MLOAD
00001a0b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001a2c: DUP2
00001a2d: MSTORE
00001a2e: PUSH1 0x04
00001a30: ADD
00001a31: PUSH2 0x1a39
00001a34: SWAP1
00001a35: PUSH2 0x4b29
00001a38: JUMP
00001a39: JUMPDEST
00001a3a: PUSH1 0x40
00001a3c: MLOAD
00001a3d: DUP1
00001a3e: SWAP2
00001a3f: SUB
00001a40: SWAP1
00001a41: REVERT
00001a42: JUMPDEST
00001a43: PUSH1 0x01
00001a45: PUSH1 0x00
00001a47: CALLER
00001a48: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a5d: AND
00001a5e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a73: AND
00001a74: DUP2
00001a75: MSTORE
00001a76: PUSH1 0x20
00001a78: ADD
00001a79: SWAP1
00001a7a: DUP2
00001a7b: MSTORE
00001a7c: PUSH1 0x20
00001a7e: ADD
00001a7f: PUSH1 0x00
00001a81: KECCAK256
00001a82: PUSH1 0x00
00001a84: SWAP1
00001a85: SLOAD
00001a86: SWAP1
00001a87: PUSH2 0x0100
00001a8a: EXP
00001a8b: SWAP1
00001a8c: DIV
00001a8d: PUSH1 0xff
00001a8f: AND
00001a90: PUSH2 0x1ace
00001a93: JUMPI
00001a94: PUSH1 0x40
00001a96: MLOAD
00001a97: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001ab8: DUP2
00001ab9: MSTORE
00001aba: PUSH1 0x04
00001abc: ADD
00001abd: PUSH2 0x1ac5
00001ac0: SWAP1
00001ac1: PUSH2 0x4b49
00001ac4: JUMP
00001ac5: JUMPDEST
00001ac6: PUSH1 0x40
00001ac8: MLOAD
00001ac9: DUP1
00001aca: SWAP2
00001acb: SUB
00001acc: SWAP1
00001acd: REVERT
00001ace: JUMPDEST
00001acf: PUSH1 0x00
00001ad1: CALLER
00001ad2: SWAP1
00001ad3: POP
00001ad4: DUP2
00001ad5: PUSH1 0x0b
00001ad7: PUSH1 0x00
00001ad9: DUP4
00001ada: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001aef: AND
00001af0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b05: AND
00001b06: DUP2
00001b07: MSTORE
00001b08: PUSH1 0x20
00001b0a: ADD
00001b0b: SWAP1
00001b0c: DUP2
00001b0d: MSTORE
00001b0e: PUSH1 0x20
00001b10: ADD
00001b11: PUSH1 0x00
00001b13: KECCAK256
00001b14: SLOAD
00001b15: PUSH2 0x1b1e
00001b18: SWAP2
00001b19: SWAP1
00001b1a: PUSH2 0x4c55
00001b1d: JUMP
00001b1e: JUMPDEST
00001b1f: PUSH1 0x0b
00001b21: PUSH1 0x00
00001b23: DUP4
00001b24: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b39: AND
00001b3a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b4f: AND
00001b50: DUP2
00001b51: MSTORE
00001b52: PUSH1 0x20
00001b54: ADD
00001b55: SWAP1
00001b56: DUP2
00001b57: MSTORE
00001b58: PUSH1 0x20
00001b5a: ADD
00001b5b: PUSH1 0x00
00001b5d: KECCAK256
00001b5e: DUP2
00001b5f: SWAP1
00001b60: SSTORE
00001b61: POP
00001b62: DUP2
00001b63: PUSH1 0x06
00001b65: PUSH1 0x00
00001b67: DUP4
00001b68: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b7d: AND
00001b7e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b93: AND
00001b94: DUP2
00001b95: MSTORE
00001b96: PUSH1 0x20
00001b98: ADD
00001b99: SWAP1
00001b9a: DUP2
00001b9b: MSTORE
00001b9c: PUSH1 0x20
00001b9e: ADD
00001b9f: PUSH1 0x00
00001ba1: KECCAK256
00001ba2: SLOAD
00001ba3: PUSH2 0x1bac
00001ba6: SWAP2
00001ba7: SWAP1
00001ba8: PUSH2 0x4c55
00001bab: JUMP
00001bac: JUMPDEST
00001bad: PUSH1 0x06
00001baf: PUSH1 0x00
00001bb1: DUP4
00001bb2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bc7: AND
00001bc8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bdd: AND
00001bde: DUP2
00001bdf: MSTORE
00001be0: PUSH1 0x20
00001be2: ADD
00001be3: SWAP1
00001be4: DUP2
00001be5: MSTORE
00001be6: PUSH1 0x20
00001be8: ADD
00001be9: PUSH1 0x00
00001beb: KECCAK256
00001bec: DUP2
00001bed: SWAP1
00001bee: SSTORE
00001bef: POP
00001bf0: PUSH1 0x06
00001bf2: PUSH1 0x00
00001bf4: DUP3
00001bf5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c0a: AND
00001c0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c20: AND
00001c21: DUP2
00001c22: MSTORE
00001c23: PUSH1 0x20
00001c25: ADD
00001c26: SWAP1
00001c27: DUP2
00001c28: MSTORE
00001c29: PUSH1 0x20
00001c2b: ADD
00001c2c: PUSH1 0x00
00001c2e: KECCAK256
00001c2f: SLOAD
00001c30: PUSH1 0x05
00001c32: PUSH1 0x00
00001c34: DUP4
00001c35: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c4a: AND
00001c4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c60: AND
00001c61: DUP2
00001c62: MSTORE
00001c63: PUSH1 0x20
00001c65: ADD
00001c66: SWAP1
00001c67: DUP2
00001c68: MSTORE
00001c69: PUSH1 0x20
00001c6b: ADD
00001c6c: PUSH1 0x00
00001c6e: KECCAK256
00001c6f: DUP2
00001c70: SWAP1
00001c71: SSTORE
00001c72: POP
00001c73: PUSH1 0x00
00001c75: PUSH1 0x0f
00001c77: PUSH1 0x00
00001c79: DUP4
00001c7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c8f: AND
00001c90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ca5: AND
00001ca6: DUP2
00001ca7: MSTORE
00001ca8: PUSH1 0x20
00001caa: ADD
00001cab: SWAP1
00001cac: DUP2
00001cad: MSTORE
00001cae: PUSH1 0x20
00001cb0: ADD
00001cb1: PUSH1 0x00
00001cb3: KECCAK256
00001cb4: PUSH1 0x00
00001cb6: DUP6
00001cb7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ccc: AND
00001ccd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ce2: AND
00001ce3: DUP2
00001ce4: MSTORE
00001ce5: PUSH1 0x20
00001ce7: ADD
00001ce8: SWAP1
00001ce9: DUP2
00001cea: MSTORE
00001ceb: PUSH1 0x20
00001ced: ADD
00001cee: PUSH1 0x00
00001cf0: KECCAK256
00001cf1: SLOAD
00001cf2: SWAP1
00001cf3: POP
00001cf4: PUSH2 0x1cfc
00001cf7: DUP5
00001cf8: PUSH2 0x2cbf
00001cfb: JUMP
00001cfc: JUMPDEST
00001cfd: PUSH1 0x0f
00001cff: PUSH1 0x00
00001d01: DUP4
00001d02: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d17: AND
00001d18: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d2d: AND
00001d2e: DUP2
00001d2f: MSTORE
00001d30: PUSH1 0x20
00001d32: ADD
00001d33: SWAP1
00001d34: DUP2
00001d35: MSTORE
00001d36: PUSH1 0x20
00001d38: ADD
00001d39: PUSH1 0x00
00001d3b: KECCAK256
00001d3c: PUSH1 0x00
00001d3e: DUP6
00001d3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d54: AND
00001d55: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d6a: AND
00001d6b: DUP2
00001d6c: MSTORE
00001d6d: PUSH1 0x20
00001d6f: ADD
00001d70: SWAP1
00001d71: DUP2
00001d72: MSTORE
00001d73: PUSH1 0x20
00001d75: ADD
00001d76: PUSH1 0x00
00001d78: KECCAK256
00001d79: SLOAD
00001d7a: DUP2
00001d7b: GT
00001d7c: DUP1
00001d7d: ISZERO
00001d7e: PUSH2 0x1e41
00001d81: JUMPI
00001d82: POP
00001d83: PUSH1 0x05
00001d85: PUSH1 0x00
00001d87: DUP4
00001d88: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d9d: AND
00001d9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001db3: AND
00001db4: DUP2
00001db5: MSTORE
00001db6: PUSH1 0x20
00001db8: ADD
00001db9: SWAP1
00001dba: DUP2
00001dbb: MSTORE
00001dbc: PUSH1 0x20
00001dbe: ADD
00001dbf: PUSH1 0x00
00001dc1: KECCAK256
00001dc2: SLOAD
00001dc3: PUSH1 0x11
00001dc5: PUSH1 0x00
00001dc7: DUP5
00001dc8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ddd: AND
00001dde: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001df3: AND
00001df4: DUP2
00001df5: MSTORE
00001df6: PUSH1 0x20
00001df8: ADD
00001df9: SWAP1
00001dfa: DUP2
00001dfb: MSTORE
00001dfc: PUSH1 0x20
00001dfe: ADD
00001dff: PUSH1 0x00
00001e01: KECCAK256
00001e02: PUSH1 0x00
00001e04: DUP7
00001e05: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e1a: AND
00001e1b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e30: AND
00001e31: DUP2
00001e32: MSTORE
00001e33: PUSH1 0x20
00001e35: ADD
00001e36: SWAP1
00001e37: DUP2
00001e38: MSTORE
00001e39: PUSH1 0x20
00001e3b: ADD
00001e3c: PUSH1 0x00
00001e3e: KECCAK256
00001e3f: SLOAD
00001e40: LT
00001e41: JUMPDEST
00001e42: DUP1
00001e43: ISZERO
00001e44: PUSH2 0x1e8c
00001e47: JUMPI
00001e48: POP
00001e49: PUSH1 0x00
00001e4b: PUSH1 0x05
00001e4d: PUSH1 0x00
00001e4f: DUP5
00001e50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e65: AND
00001e66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e7b: AND
00001e7c: DUP2
00001e7d: MSTORE
00001e7e: PUSH1 0x20
00001e80: ADD
00001e81: SWAP1
00001e82: DUP2
00001e83: MSTORE
00001e84: PUSH1 0x20
00001e86: ADD
00001e87: PUSH1 0x00
00001e89: KECCAK256
00001e8a: SLOAD
00001e8b: GT
00001e8c: JUMPDEST
00001e8d: ISZERO
00001e8e: PUSH2 0x2160
00001e91: JUMPI
00001e92: PUSH1 0x00
00001e94: PUSH1 0x0f
00001e96: PUSH1 0x00
00001e98: DUP5
00001e99: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001eae: AND
00001eaf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ec4: AND
00001ec5: DUP2
00001ec6: MSTORE
00001ec7: PUSH1 0x20
00001ec9: ADD
00001eca: SWAP1
00001ecb: DUP2
00001ecc: MSTORE
00001ecd: PUSH1 0x20
00001ecf: ADD
00001ed0: PUSH1 0x00
00001ed2: KECCAK256
00001ed3: PUSH1 0x00
00001ed5: DUP7
00001ed6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001eeb: AND
00001eec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f01: AND
00001f02: DUP2
00001f03: MSTORE
00001f04: PUSH1 0x20
00001f06: ADD
00001f07: SWAP1
00001f08: DUP2
00001f09: MSTORE
00001f0a: PUSH1 0x20
00001f0c: ADD
00001f0d: PUSH1 0x00
00001f0f: KECCAK256
00001f10: SLOAD
00001f11: DUP3
00001f12: PUSH2 0x1f1b
00001f15: SWAP2
00001f16: SWAP1
00001f17: PUSH2 0x4d36
00001f1a: JUMP
00001f1b: JUMPDEST
00001f1c: SWAP1
00001f1d: POP
00001f1e: PUSH1 0x17
00001f20: SLOAD
00001f21: DUP2
00001f22: PUSH1 0x11
00001f24: PUSH1 0x00
00001f26: DUP7
00001f27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f3c: AND
00001f3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f52: AND
00001f53: DUP2
00001f54: MSTORE
00001f55: PUSH1 0x20
00001f57: ADD
00001f58: SWAP1
00001f59: DUP2
00001f5a: MSTORE
00001f5b: PUSH1 0x20
00001f5d: ADD
00001f5e: PUSH1 0x00
00001f60: KECCAK256
00001f61: PUSH1 0x00
00001f63: DUP9
00001f64: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f79: AND
00001f7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f8f: AND
00001f90: DUP2
00001f91: MSTORE
00001f92: PUSH1 0x20
00001f94: ADD
00001f95: SWAP1
00001f96: DUP2
00001f97: MSTORE
00001f98: PUSH1 0x20
00001f9a: ADD
00001f9b: PUSH1 0x00
00001f9d: KECCAK256
00001f9e: SLOAD
00001f9f: PUSH1 0x05
00001fa1: PUSH1 0x00
00001fa3: DUP8
00001fa4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fb9: AND
00001fba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fcf: AND
00001fd0: DUP2
00001fd1: MSTORE
00001fd2: PUSH1 0x20
00001fd4: ADD
00001fd5: SWAP1
00001fd6: DUP2
00001fd7: MSTORE
00001fd8: PUSH1 0x20
00001fda: ADD
00001fdb: PUSH1 0x00
00001fdd: KECCAK256
00001fde: SLOAD
00001fdf: PUSH2 0x1fe8
00001fe2: SWAP2
00001fe3: SWAP1
00001fe4: PUSH2 0x4d36
00001fe7: JUMP
00001fe8: JUMPDEST
00001fe9: PUSH2 0x1ff2
00001fec: SWAP2
00001fed: SWAP1
00001fee: PUSH2 0x4cdc
00001ff1: JUMP
00001ff2: JUMPDEST
00001ff3: PUSH2 0x1ffc
00001ff6: SWAP2
00001ff7: SWAP1
00001ff8: PUSH2 0x4cab
00001ffb: JUMP
00001ffc: JUMPDEST
00001ffd: PUSH1 0x13
00001fff: PUSH1 0x00
00002001: DUP6
00002002: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002017: AND
00002018: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000202d: AND
0000202e: DUP2
0000202f: MSTORE
00002030: PUSH1 0x20
00002032: ADD
00002033: SWAP1
00002034: DUP2
00002035: MSTORE
00002036: PUSH1 0x20
00002038: ADD
00002039: PUSH1 0x00
0000203b: KECCAK256
0000203c: PUSH1 0x00
0000203e: DUP8
0000203f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002054: AND
00002055: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000206a: AND
0000206b: DUP2
0000206c: MSTORE
0000206d: PUSH1 0x20
0000206f: ADD
00002070: SWAP1
00002071: DUP2
00002072: MSTORE
00002073: PUSH1 0x20
00002075: ADD
00002076: PUSH1 0x00
00002078: KECCAK256
00002079: PUSH1 0x00
0000207b: DUP3
0000207c: DUP3
0000207d: SLOAD
0000207e: PUSH2 0x2087
00002081: SWAP2
00002082: SWAP1
00002083: PUSH2 0x4c55
00002086: JUMP
00002087: JUMPDEST
00002088: SWAP3
00002089: POP
0000208a: POP
0000208b: DUP2
0000208c: SWAP1
0000208d: SSTORE
0000208e: POP
0000208f: PUSH1 0x01
00002091: PUSH1 0x05
00002093: PUSH1 0x00
00002095: DUP6
00002096: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020ab: AND
000020ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020c1: AND
000020c2: DUP2
000020c3: MSTORE
000020c4: PUSH1 0x20
000020c6: ADD
000020c7: SWAP1
000020c8: DUP2
000020c9: MSTORE
000020ca: PUSH1 0x20
000020cc: ADD
000020cd: PUSH1 0x00
000020cf: KECCAK256
000020d0: SLOAD
000020d1: PUSH2 0x20da
000020d4: SWAP2
000020d5: SWAP1
000020d6: PUSH2 0x4d36
000020d9: JUMP
000020da: JUMPDEST
000020db: PUSH1 0x11
000020dd: PUSH1 0x00
000020df: DUP6
000020e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020f5: AND
000020f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000210b: AND
0000210c: DUP2
0000210d: MSTORE
0000210e: PUSH1 0x20
00002110: ADD
00002111: SWAP1
00002112: DUP2
00002113: MSTORE
00002114: PUSH1 0x20
00002116: ADD
00002117: PUSH1 0x00
00002119: KECCAK256
0000211a: PUSH1 0x00
0000211c: DUP8
0000211d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002132: AND
00002133: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002148: AND
00002149: DUP2
0000214a: MSTORE
0000214b: PUSH1 0x20
0000214d: ADD
0000214e: SWAP1
0000214f: DUP2
00002150: MSTORE
00002151: PUSH1 0x20
00002153: ADD
00002154: PUSH1 0x00
00002156: KECCAK256
00002157: DUP2
00002158: SWAP1
00002159: SSTORE
0000215a: POP
0000215b: POP
0000215c: PUSH2 0x233d
0000215f: JUMP
00002160: JUMPDEST
00002161: PUSH1 0x05
00002163: PUSH1 0x00
00002165: DUP4
00002166: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000217b: AND
0000217c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002191: AND
00002192: DUP2
00002193: MSTORE
00002194: PUSH1 0x20
00002196: ADD
00002197: SWAP1
00002198: DUP2
00002199: MSTORE
0000219a: PUSH1 0x20
0000219c: ADD
0000219d: PUSH1 0x00
0000219f: KECCAK256
000021a0: SLOAD
000021a1: PUSH1 0x11
000021a3: PUSH1 0x00
000021a5: DUP5
000021a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021bb: AND
000021bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021d1: AND
000021d2: DUP2
000021d3: MSTORE
000021d4: PUSH1 0x20
000021d6: ADD
000021d7: SWAP1
000021d8: DUP2
000021d9: MSTORE
000021da: PUSH1 0x20
000021dc: ADD
000021dd: PUSH1 0x00
000021df: KECCAK256
000021e0: PUSH1 0x00
000021e2: DUP7
000021e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021f8: AND
000021f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000220e: AND
0000220f: DUP2
00002210: MSTORE
00002211: PUSH1 0x20
00002213: ADD
00002214: SWAP1
00002215: DUP2
00002216: MSTORE
00002217: PUSH1 0x20
00002219: ADD
0000221a: PUSH1 0x00
0000221c: KECCAK256
0000221d: SLOAD
0000221e: LT
0000221f: ISZERO
00002220: DUP1
00002221: ISZERO
00002222: PUSH2 0x226a
00002225: JUMPI
00002226: POP
00002227: PUSH1 0x00
00002229: PUSH1 0x05
0000222b: PUSH1 0x00
0000222d: DUP5
0000222e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002243: AND
00002244: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002259: AND
0000225a: DUP2
0000225b: MSTORE
0000225c: PUSH1 0x20
0000225e: ADD
0000225f: SWAP1
00002260: DUP2
00002261: MSTORE
00002262: PUSH1 0x20
00002264: ADD
00002265: PUSH1 0x00
00002267: KECCAK256
00002268: SLOAD
00002269: GT
0000226a: JUMPDEST
0000226b: ISZERO
0000226c: PUSH2 0x233c
0000226f: JUMPI
00002270: PUSH1 0x01
00002272: PUSH1 0x05
00002274: PUSH1 0x00
00002276: DUP5
00002277: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000228c: AND
0000228d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022a2: AND
000022a3: DUP2
000022a4: MSTORE
000022a5: PUSH1 0x20
000022a7: ADD
000022a8: SWAP1
000022a9: DUP2
000022aa: MSTORE
000022ab: PUSH1 0x20
000022ad: ADD
000022ae: PUSH1 0x00
000022b0: KECCAK256
000022b1: SLOAD
000022b2: PUSH2 0x22bb
000022b5: SWAP2
000022b6: SWAP1
000022b7: PUSH2 0x4d36
000022ba: JUMP
000022bb: JUMPDEST
000022bc: PUSH1 0x11
000022be: PUSH1 0x00
000022c0: DUP5
000022c1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022d6: AND
000022d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022ec: AND
000022ed: DUP2
000022ee: MSTORE
000022ef: PUSH1 0x20
000022f1: ADD
000022f2: SWAP1
000022f3: DUP2
000022f4: MSTORE
000022f5: PUSH1 0x20
000022f7: ADD
000022f8: PUSH1 0x00
000022fa: KECCAK256
000022fb: PUSH1 0x00
000022fd: DUP7
000022fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002313: AND
00002314: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002329: AND
0000232a: DUP2
0000232b: MSTORE
0000232c: PUSH1 0x20
0000232e: ADD
0000232f: SWAP1
00002330: DUP2
00002331: MSTORE
00002332: PUSH1 0x20
00002334: ADD
00002335: PUSH1 0x00
00002337: KECCAK256
00002338: DUP2
00002339: SWAP1
0000233a: SSTORE
0000233b: POP
0000233c: JUMPDEST
0000233d: JUMPDEST
0000233e: POP
0000233f: POP
00002340: POP
00002341: POP
00002342: JUMP
00002343: JUMPDEST
00002344: PUSH1 0x00
00002346: DUP1
00002347: SLOAD
00002348: SWAP1
00002349: PUSH2 0x0100
0000234c: EXP
0000234d: SWAP1
0000234e: DIV
0000234f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002364: AND
00002365: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000237a: AND
0000237b: PUSH2 0x2382
0000237e: PUSH2 0x4488
00002381: JUMP
00002382: JUMPDEST
00002383: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002398: AND
00002399: EQ
0000239a: PUSH2 0x23d8
0000239d: JUMPI
0000239e: PUSH1 0x40
000023a0: MLOAD
000023a1: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000023c2: DUP2
000023c3: MSTORE
000023c4: PUSH1 0x04
000023c6: ADD
000023c7: PUSH2 0x23cf
000023ca: SWAP1
000023cb: PUSH2 0x4be9
000023ce: JUMP
000023cf: JUMPDEST
000023d0: PUSH1 0x40
000023d2: MLOAD
000023d3: DUP1
000023d4: SWAP2
000023d5: SUB
000023d6: SWAP1
000023d7: REVERT
000023d8: JUMPDEST
000023d9: PUSH2 0x23e0
000023dc: PUSH2 0x10b9
000023df: JUMP
000023e0: JUMPDEST
000023e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023f6: AND
000023f7: CALLER
000023f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000240d: AND
0000240e: EQ
0000240f: DUP1
00002410: PUSH2 0x2466
00002413: JUMPI
00002414: POP
00002415: PUSH1 0x03
00002417: PUSH1 0x00
00002419: SWAP1
0000241a: SLOAD
0000241b: SWAP1
0000241c: PUSH2 0x0100
0000241f: EXP
00002420: SWAP1
00002421: DIV
00002422: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002437: AND
00002438: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000244d: AND
0000244e: CALLER
0000244f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002464: AND
00002465: EQ
00002466: JUMPDEST
00002467: PUSH2 0x24a5
0000246a: JUMPI
0000246b: PUSH1 0x40
0000246d: MLOAD
0000246e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000248f: DUP2
00002490: MSTORE
00002491: PUSH1 0x04
00002493: ADD
00002494: PUSH2 0x249c
00002497: SWAP1
00002498: PUSH2 0x4b29
0000249b: JUMP
0000249c: JUMPDEST
0000249d: PUSH1 0x40
0000249f: MLOAD
000024a0: DUP1
000024a1: SWAP2
000024a2: SUB
000024a3: SWAP1
000024a4: REVERT
000024a5: JUMPDEST
000024a6: DUP1
000024a7: PUSH1 0x18
000024a9: DUP2
000024aa: SWAP1
000024ab: SSTORE
000024ac: POP
000024ad: POP
000024ae: JUMP
000024af: JUMPDEST
000024b0: PUSH1 0x00
000024b2: PUSH1 0x14
000024b4: PUSH1 0x00
000024b6: CALLER
000024b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024cc: AND
000024cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024e2: AND
000024e3: DUP2
000024e4: MSTORE
000024e5: PUSH1 0x20
000024e7: ADD
000024e8: SWAP1
000024e9: DUP2
000024ea: MSTORE
000024eb: PUSH1 0x20
000024ed: ADD
000024ee: PUSH1 0x00
000024f0: KECCAK256
000024f1: PUSH1 0x00
000024f3: SWAP1
000024f4: SLOAD
000024f5: SWAP1
000024f6: PUSH2 0x0100
000024f9: EXP
000024fa: SWAP1
000024fb: DIV
000024fc: PUSH1 0xff
000024fe: AND
000024ff: PUSH2 0x253d
00002502: JUMPI
00002503: PUSH1 0x40
00002505: MLOAD
00002506: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002527: DUP2
00002528: MSTORE
00002529: PUSH1 0x04
0000252b: ADD
0000252c: PUSH2 0x2534
0000252f: SWAP1
00002530: PUSH2 0x4b29
00002533: JUMP
00002534: JUMPDEST
00002535: PUSH1 0x40
00002537: MLOAD
00002538: DUP1
00002539: SWAP2
0000253a: SUB
0000253b: SWAP1
0000253c: REVERT
0000253d: JUMPDEST
0000253e: PUSH1 0x00
00002540: CALLER
00002541: SWAP1
00002542: POP
00002543: PUSH2 0x254b
00002546: DUP2
00002547: PUSH2 0x4490
0000254a: JUMP
0000254b: JUMPDEST
0000254c: SWAP2
0000254d: POP
0000254e: POP
0000254f: SWAP1
00002550: JUMP
00002551: JUMPDEST
00002552: PUSH1 0x00
00002554: PUSH1 0x01
00002556: PUSH1 0x00
00002558: DUP5
00002559: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000256e: AND
0000256f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002584: AND
00002585: DUP2
00002586: MSTORE
00002587: PUSH1 0x20
00002589: ADD
0000258a: SWAP1
0000258b: DUP2
0000258c: MSTORE
0000258d: PUSH1 0x20
0000258f: ADD
00002590: PUSH1 0x00
00002592: KECCAK256
00002593: PUSH1 0x00
00002595: SWAP1
00002596: SLOAD
00002597: SWAP1
00002598: PUSH2 0x0100
0000259b: EXP
0000259c: SWAP1
0000259d: DIV
0000259e: PUSH1 0xff
000025a0: AND
000025a1: PUSH2 0x25df
000025a4: JUMPI
000025a5: PUSH1 0x40
000025a7: MLOAD
000025a8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000025c9: DUP2
000025ca: MSTORE
000025cb: PUSH1 0x04
000025cd: ADD
000025ce: PUSH2 0x25d6
000025d1: SWAP1
000025d2: PUSH2 0x4b89
000025d5: JUMP
000025d6: JUMPDEST
000025d7: PUSH1 0x40
000025d9: MLOAD
000025da: DUP1
000025db: SWAP2
000025dc: SUB
000025dd: SWAP1
000025de: REVERT
000025df: JUMPDEST
000025e0: PUSH1 0x0e
000025e2: PUSH1 0x00
000025e4: DUP5
000025e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025fa: AND
000025fb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002610: AND
00002611: DUP2
00002612: MSTORE
00002613: PUSH1 0x20
00002615: ADD
00002616: SWAP1
00002617: DUP2
00002618: MSTORE
00002619: PUSH1 0x20
0000261b: ADD
0000261c: PUSH1 0x00
0000261e: KECCAK256
0000261f: PUSH1 0x00
00002621: DUP4
00002622: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002637: AND
00002638: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000264d: AND
0000264e: DUP2
0000264f: MSTORE
00002650: PUSH1 0x20
00002652: ADD
00002653: SWAP1
00002654: DUP2
00002655: MSTORE
00002656: PUSH1 0x20
00002658: ADD
00002659: PUSH1 0x00
0000265b: KECCAK256
0000265c: PUSH1 0x00
0000265e: SWAP1
0000265f: SLOAD
00002660: SWAP1
00002661: PUSH2 0x0100
00002664: EXP
00002665: SWAP1
00002666: DIV
00002667: PUSH1 0xff
00002669: AND
0000266a: PUSH2 0x26a8
0000266d: JUMPI
0000266e: PUSH1 0x40
00002670: MLOAD
00002671: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002692: DUP2
00002693: MSTORE
00002694: PUSH1 0x04
00002696: ADD
00002697: PUSH2 0x269f
0000269a: SWAP1
0000269b: PUSH2 0x4bc9
0000269e: JUMP
0000269f: JUMPDEST
000026a0: PUSH1 0x40
000026a2: MLOAD
000026a3: DUP1
000026a4: SWAP2
000026a5: SUB
000026a6: SWAP1
000026a7: REVERT
000026a8: JUMPDEST
000026a9: PUSH2 0x272f
000026ac: DUP4
000026ad: DUP4
000026ae: PUSH1 0x0f
000026b0: PUSH1 0x00
000026b2: DUP8
000026b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026c8: AND
000026c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026de: AND
000026df: DUP2
000026e0: MSTORE
000026e1: PUSH1 0x20
000026e3: ADD
000026e4: SWAP1
000026e5: DUP2
000026e6: MSTORE
000026e7: PUSH1 0x20
000026e9: ADD
000026ea: PUSH1 0x00
000026ec: KECCAK256
000026ed: PUSH1 0x00
000026ef: DUP7
000026f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002705: AND
00002706: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000271b: AND
0000271c: DUP2
0000271d: MSTORE
0000271e: PUSH1 0x20
00002720: ADD
00002721: SWAP1
00002722: DUP2
00002723: MSTORE
00002724: PUSH1 0x20
00002726: ADD
00002727: PUSH1 0x00
00002729: KECCAK256
0000272a: SLOAD
0000272b: PUSH2 0x2ac2
0000272e: JUMP
0000272f: JUMPDEST
00002730: SWAP1
00002731: POP
00002732: SWAP3
00002733: SWAP2
00002734: POP
00002735: POP
00002736: JUMP
00002737: JUMPDEST
00002738: PUSH1 0x00
0000273a: DUP1
0000273b: SLOAD
0000273c: SWAP1
0000273d: PUSH2 0x0100
00002740: EXP
00002741: SWAP1
00002742: DIV
00002743: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002758: AND
00002759: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000276e: AND
0000276f: PUSH2 0x2776
00002772: PUSH2 0x4488
00002775: JUMP
00002776: JUMPDEST
00002777: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000278c: AND
0000278d: EQ
0000278e: PUSH2 0x27cc
00002791: JUMPI
00002792: PUSH1 0x40
00002794: MLOAD
00002795: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000027b6: DUP2
000027b7: MSTORE
000027b8: PUSH1 0x04
000027ba: ADD
000027bb: PUSH2 0x27c3
000027be: SWAP1
000027bf: PUSH2 0x4be9
000027c2: JUMP
000027c3: JUMPDEST
000027c4: PUSH1 0x40
000027c6: MLOAD
000027c7: DUP1
000027c8: SWAP2
000027c9: SUB
000027ca: SWAP1
000027cb: REVERT
000027cc: JUMPDEST
000027cd: DUP1
000027ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027e3: AND
000027e4: PUSH1 0x00
000027e6: DUP1
000027e7: SLOAD
000027e8: SWAP1
000027e9: PUSH2 0x0100
000027ec: EXP
000027ed: SWAP1
000027ee: DIV
000027ef: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002804: AND
00002805: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000281a: AND
0000281b: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
0000283c: PUSH1 0x40
0000283e: MLOAD
0000283f: PUSH1 0x40
00002841: MLOAD
00002842: DUP1
00002843: SWAP2
00002844: SUB
00002845: SWAP1
00002846: LOG3
00002847: DUP1
00002848: PUSH1 0x00
0000284a: DUP1
0000284b: PUSH2 0x0100
0000284e: EXP
0000284f: DUP2
00002850: SLOAD
00002851: DUP2
00002852: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002867: MUL
00002868: NOT
00002869: AND
0000286a: SWAP1
0000286b: DUP4
0000286c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002881: AND
00002882: MUL
00002883: OR
00002884: SWAP1
00002885: SSTORE
00002886: POP
00002887: POP
00002888: JUMP
00002889: JUMPDEST
0000288a: PUSH2 0x2891
0000288d: PUSH2 0x10b9
00002890: JUMP
00002891: JUMPDEST
00002892: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028a7: AND
000028a8: CALLER
000028a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028be: AND
000028bf: EQ
000028c0: DUP1
000028c1: PUSH2 0x2917
000028c4: JUMPI
000028c5: POP
000028c6: PUSH1 0x03
000028c8: PUSH1 0x00
000028ca: SWAP1
000028cb: SLOAD
000028cc: SWAP1
000028cd: PUSH2 0x0100
000028d0: EXP
000028d1: SWAP1
000028d2: DIV
000028d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028e8: AND
000028e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028fe: AND
000028ff: CALLER
00002900: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002915: AND
00002916: EQ
00002917: JUMPDEST
00002918: PUSH2 0x2956
0000291b: JUMPI
0000291c: PUSH1 0x40
0000291e: MLOAD
0000291f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002940: DUP2
00002941: MSTORE
00002942: PUSH1 0x04
00002944: ADD
00002945: PUSH2 0x294d
00002948: SWAP1
00002949: PUSH2 0x4b29
0000294c: JUMP
0000294d: JUMPDEST
0000294e: PUSH1 0x40
00002950: MLOAD
00002951: DUP1
00002952: SWAP2
00002953: SUB
00002954: SWAP1
00002955: REVERT
00002956: JUMPDEST
00002957: DUP1
00002958: PUSH1 0x03
0000295a: PUSH1 0x00
0000295c: PUSH2 0x0100
0000295f: EXP
00002960: DUP2
00002961: SLOAD
00002962: DUP2
00002963: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002978: MUL
00002979: NOT
0000297a: AND
0000297b: SWAP1
0000297c: DUP4
0000297d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002992: AND
00002993: MUL
00002994: OR
00002995: SWAP1
00002996: SSTORE
00002997: POP
00002998: POP
00002999: JUMP
0000299a: JUMPDEST
0000299b: PUSH2 0x29a2
0000299e: PUSH2 0x10b9
000029a1: JUMP
000029a2: JUMPDEST
000029a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029b8: AND
000029b9: CALLER
000029ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029cf: AND
000029d0: EQ
000029d1: DUP1
000029d2: PUSH2 0x2a28
000029d5: JUMPI
000029d6: POP
000029d7: PUSH1 0x03
000029d9: PUSH1 0x00
000029db: SWAP1
000029dc: SLOAD
000029dd: SWAP1
000029de: PUSH2 0x0100
000029e1: EXP
000029e2: SWAP1
000029e3: DIV
000029e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029f9: AND
000029fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a0f: AND
00002a10: CALLER
00002a11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a26: AND
00002a27: EQ
00002a28: JUMPDEST
00002a29: PUSH2 0x2a67
00002a2c: JUMPI
00002a2d: PUSH1 0x40
00002a2f: MLOAD
00002a30: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002a51: DUP2
00002a52: MSTORE
00002a53: PUSH1 0x04
00002a55: ADD
00002a56: PUSH2 0x2a5e
00002a59: SWAP1
00002a5a: PUSH2 0x4b29
00002a5d: JUMP
00002a5e: JUMPDEST
00002a5f: PUSH1 0x40
00002a61: MLOAD
00002a62: DUP1
00002a63: SWAP2
00002a64: SUB
00002a65: SWAP1
00002a66: REVERT
00002a67: JUMPDEST
00002a68: PUSH1 0x01
00002a6a: PUSH1 0x02
00002a6c: PUSH1 0x00
00002a6e: DUP4
00002a6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a84: AND
00002a85: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002a9a: AND
00002a9b: DUP2
00002a9c: MSTORE
00002a9d: PUSH1 0x20
00002a9f: ADD
00002aa0: SWAP1
00002aa1: DUP2
00002aa2: MSTORE
00002aa3: PUSH1 0x20
00002aa5: ADD
00002aa6: PUSH1 0x00
00002aa8: KECCAK256
00002aa9: PUSH1 0x00
00002aab: PUSH2 0x0100
00002aae: EXP
00002aaf: DUP2
00002ab0: SLOAD
00002ab1: DUP2
00002ab2: PUSH1 0xff
00002ab4: MUL
00002ab5: NOT
00002ab6: AND
00002ab7: SWAP1
00002ab8: DUP4
00002ab9: ISZERO
00002aba: ISZERO
00002abb: MUL
00002abc: OR
00002abd: SWAP1
00002abe: SSTORE
00002abf: POP
00002ac0: POP
00002ac1: JUMP
00002ac2: JUMPDEST
00002ac3: PUSH1 0x00
00002ac5: DUP1
00002ac6: PUSH1 0x11
00002ac8: PUSH1 0x00
00002aca: DUP7
00002acb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ae0: AND
00002ae1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002af6: AND
00002af7: DUP2
00002af8: MSTORE
00002af9: PUSH1 0x20
00002afb: ADD
00002afc: SWAP1
00002afd: DUP2
00002afe: MSTORE
00002aff: PUSH1 0x20
00002b01: ADD
00002b02: PUSH1 0x00
00002b04: KECCAK256
00002b05: PUSH1 0x00
00002b07: DUP6
00002b08: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b1d: AND
00002b1e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b33: AND
00002b34: DUP2
00002b35: MSTORE
00002b36: PUSH1 0x20
00002b38: ADD
00002b39: SWAP1
00002b3a: DUP2
00002b3b: MSTORE
00002b3c: PUSH1 0x20
00002b3e: ADD
00002b3f: PUSH1 0x00
00002b41: KECCAK256
00002b42: SLOAD
00002b43: PUSH1 0x05
00002b45: PUSH1 0x00
00002b47: DUP8
00002b48: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b5d: AND
00002b5e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b73: AND
00002b74: DUP2
00002b75: MSTORE
00002b76: PUSH1 0x20
00002b78: ADD
00002b79: SWAP1
00002b7a: DUP2
00002b7b: MSTORE
00002b7c: PUSH1 0x20
00002b7e: ADD
00002b7f: PUSH1 0x00
00002b81: KECCAK256
00002b82: SLOAD
00002b83: PUSH2 0x2b8c
00002b86: SWAP2
00002b87: SWAP1
00002b88: PUSH2 0x4d36
00002b8b: JUMP
00002b8c: JUMPDEST
00002b8d: SWAP1
00002b8e: POP
00002b8f: PUSH1 0x12
00002b91: PUSH1 0x00
00002b93: DUP7
00002b94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ba9: AND
00002baa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002bbf: AND
00002bc0: DUP2
00002bc1: MSTORE
00002bc2: PUSH1 0x20
00002bc4: ADD
00002bc5: SWAP1
00002bc6: DUP2
00002bc7: MSTORE
00002bc8: PUSH1 0x20
00002bca: ADD
00002bcb: PUSH1 0x00
00002bcd: KECCAK256
00002bce: PUSH1 0x00
00002bd0: DUP6
00002bd1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002be6: AND
00002be7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002bfc: AND
00002bfd: DUP2
00002bfe: MSTORE
00002bff: PUSH1 0x20
00002c01: ADD
00002c02: SWAP1
00002c03: DUP2
00002c04: MSTORE
00002c05: PUSH1 0x20
00002c07: ADD
00002c08: PUSH1 0x00
00002c0a: KECCAK256
00002c0b: SLOAD
00002c0c: PUSH1 0x13
00002c0e: PUSH1 0x00
00002c10: DUP8
00002c11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c26: AND
00002c27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c3c: AND
00002c3d: DUP2
00002c3e: MSTORE
00002c3f: PUSH1 0x20
00002c41: ADD
00002c42: SWAP1
00002c43: DUP2
00002c44: MSTORE
00002c45: PUSH1 0x20
00002c47: ADD
00002c48: PUSH1 0x00
00002c4a: KECCAK256
00002c4b: PUSH1 0x00
00002c4d: DUP7
00002c4e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c63: AND
00002c64: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c79: AND
00002c7a: DUP2
00002c7b: MSTORE
00002c7c: PUSH1 0x20
00002c7e: ADD
00002c7f: SWAP1
00002c80: DUP2
00002c81: MSTORE
00002c82: PUSH1 0x20
00002c84: ADD
00002c85: PUSH1 0x00
00002c87: KECCAK256
00002c88: SLOAD
00002c89: PUSH1 0x17
00002c8b: SLOAD
00002c8c: DUP6
00002c8d: DUP5
00002c8e: PUSH2 0x2c97
00002c91: SWAP2
00002c92: SWAP1
00002c93: PUSH2 0x4cdc
00002c96: JUMP
00002c97: JUMPDEST
00002c98: PUSH2 0x2ca1
00002c9b: SWAP2
00002c9c: SWAP1
00002c9d: PUSH2 0x4cab
00002ca0: JUMP
00002ca1: JUMPDEST
00002ca2: PUSH2 0x2cab
00002ca5: SWAP2
00002ca6: SWAP1
00002ca7: PUSH2 0x4c55
00002caa: JUMP
00002cab: JUMPDEST
00002cac: PUSH2 0x2cb5
00002caf: SWAP2
00002cb0: SWAP1
00002cb1: PUSH2 0x4c55
00002cb4: JUMP
00002cb5: JUMPDEST
00002cb6: SWAP2
00002cb7: POP
00002cb8: POP
00002cb9: SWAP4
00002cba: SWAP3
00002cbb: POP
00002cbc: POP
00002cbd: POP
00002cbe: JUMP
00002cbf: JUMPDEST
00002cc0: PUSH1 0x02
00002cc2: PUSH1 0x00
00002cc4: CALLER
00002cc5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002cda: AND
00002cdb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002cf0: AND
00002cf1: DUP2
00002cf2: MSTORE
00002cf3: PUSH1 0x20
00002cf5: ADD
00002cf6: SWAP1
00002cf7: DUP2
00002cf8: MSTORE
00002cf9: PUSH1 0x20
00002cfb: ADD
00002cfc: PUSH1 0x00
00002cfe: KECCAK256
00002cff: PUSH1 0x00
00002d01: SWAP1
00002d02: SLOAD
00002d03: SWAP1
00002d04: PUSH2 0x0100
00002d07: EXP
00002d08: SWAP1
00002d09: DIV
00002d0a: PUSH1 0xff
00002d0c: AND
00002d0d: PUSH2 0x2d4b
00002d10: JUMPI
00002d11: PUSH1 0x40
00002d13: MLOAD
00002d14: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002d35: DUP2
00002d36: MSTORE
00002d37: PUSH1 0x04
00002d39: ADD
00002d3a: PUSH2 0x2d42
00002d3d: SWAP1
00002d3e: PUSH2 0x4b29
00002d41: JUMP
00002d42: JUMPDEST
00002d43: PUSH1 0x40
00002d45: MLOAD
00002d46: DUP1
00002d47: SWAP2
00002d48: SUB
00002d49: SWAP1
00002d4a: REVERT
00002d4b: JUMPDEST
00002d4c: PUSH1 0x01
00002d4e: PUSH1 0x00
00002d50: CALLER
00002d51: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d66: AND
00002d67: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d7c: AND
00002d7d: DUP2
00002d7e: MSTORE
00002d7f: PUSH1 0x20
00002d81: ADD
00002d82: SWAP1
00002d83: DUP2
00002d84: MSTORE
00002d85: PUSH1 0x20
00002d87: ADD
00002d88: PUSH1 0x00
00002d8a: KECCAK256
00002d8b: PUSH1 0x00
00002d8d: SWAP1
00002d8e: SLOAD
00002d8f: SWAP1
00002d90: PUSH2 0x0100
00002d93: EXP
00002d94: SWAP1
00002d95: DIV
00002d96: PUSH1 0xff
00002d98: AND
00002d99: PUSH2 0x2dd7
00002d9c: JUMPI
00002d9d: PUSH1 0x40
00002d9f: MLOAD
00002da0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002dc1: DUP2
00002dc2: MSTORE
00002dc3: PUSH1 0x04
00002dc5: ADD
00002dc6: PUSH2 0x2dce
00002dc9: SWAP1
00002dca: PUSH2 0x4b49
00002dcd: JUMP
00002dce: JUMPDEST
00002dcf: PUSH1 0x40
00002dd1: MLOAD
00002dd2: DUP1
00002dd3: SWAP2
00002dd4: SUB
00002dd5: SWAP1
00002dd6: REVERT
00002dd7: JUMPDEST
00002dd8: PUSH1 0x00
00002dda: CALLER
00002ddb: SWAP1
00002ddc: POP
00002ddd: PUSH1 0x00
00002ddf: PUSH1 0x0c
00002de1: PUSH1 0x00
00002de3: DUP4
00002de4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002df9: AND
00002dfa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e0f: AND
00002e10: DUP2
00002e11: MSTORE
00002e12: PUSH1 0x20
00002e14: ADD
00002e15: SWAP1
00002e16: DUP2
00002e17: MSTORE
00002e18: PUSH1 0x20
00002e1a: ADD
00002e1b: PUSH1 0x00
00002e1d: KECCAK256
00002e1e: PUSH1 0x00
00002e20: SWAP1
00002e21: SLOAD
00002e22: SWAP1
00002e23: PUSH2 0x0100
00002e26: EXP
00002e27: SWAP1
00002e28: DIV
00002e29: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e3e: AND
00002e3f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002e54: AND
00002e55: PUSH4 0x70a08231
00002e5a: DUP5
00002e5b: PUSH1 0x40
00002e5d: MLOAD
00002e5e: DUP3
00002e5f: PUSH4 0xffffffff
00002e64: AND
00002e65: PUSH1 0xe0
00002e67: SHL
00002e68: DUP2
00002e69: MSTORE
00002e6a: PUSH1 0x04
00002e6c: ADD
00002e6d: PUSH2 0x2e76
00002e70: SWAP2
00002e71: SWAP1
00002e72: PUSH2 0x4b0e
00002e75: JUMP
00002e76: JUMPDEST
00002e77: PUSH1 0x20
00002e79: PUSH1 0x40
00002e7b: MLOAD
00002e7c: DUP1
00002e7d: DUP4
00002e7e: SUB
00002e7f: DUP2
00002e80: DUP7
00002e81: DUP1
00002e82: EXTCODESIZE
00002e83: ISZERO
00002e84: DUP1
00002e85: ISZERO
00002e86: PUSH2 0x2e8e
00002e89: JUMPI
00002e8a: PUSH1 0x00
00002e8c: DUP1
00002e8d: REVERT
00002e8e: JUMPDEST
00002e8f: POP
00002e90: GAS
00002e91: STATICCALL
00002e92: ISZERO
00002e93: DUP1
00002e94: ISZERO
00002e95: PUSH2 0x2ea2
00002e98: JUMPI
00002e99: RETURNDATASIZE
00002e9a: PUSH1 0x00
00002e9c: DUP1
00002e9d: RETURNDATACOPY
00002e9e: RETURNDATASIZE
00002e9f: PUSH1 0x00
00002ea1: REVERT
00002ea2: JUMPDEST
00002ea3: POP
00002ea4: POP
00002ea5: POP
00002ea6: POP
00002ea7: PUSH1 0x40
00002ea9: MLOAD
00002eaa: RETURNDATASIZE
00002eab: PUSH1 0x1f
00002ead: NOT
00002eae: PUSH1 0x1f
00002eb0: DUP3
00002eb1: ADD
00002eb2: AND
00002eb3: DUP3
00002eb4: ADD
00002eb5: DUP1
00002eb6: PUSH1 0x40
00002eb8: MSTORE
00002eb9: POP
00002eba: DUP2
00002ebb: ADD
00002ebc: SWAP1
00002ebd: PUSH2 0x2ec6
00002ec0: SWAP2
00002ec1: SWAP1
00002ec2: PUSH2 0x49af
00002ec5: JUMP
00002ec6: JUMPDEST
00002ec7: SWAP1
00002ec8: POP
00002ec9: PUSH1 0x10
00002ecb: PUSH1 0x00
00002ecd: DUP4
00002ece: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ee3: AND
00002ee4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ef9: AND
00002efa: DUP2
00002efb: MSTORE
00002efc: PUSH1 0x20
00002efe: ADD
00002eff: SWAP1
00002f00: DUP2
00002f01: MSTORE
00002f02: PUSH1 0x20
00002f04: ADD
00002f05: PUSH1 0x00
00002f07: KECCAK256
00002f08: PUSH1 0x00
00002f0a: DUP5
00002f0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f20: AND
00002f21: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f36: AND
00002f37: DUP2
00002f38: MSTORE
00002f39: PUSH1 0x20
00002f3b: ADD
00002f3c: SWAP1
00002f3d: DUP2
00002f3e: MSTORE
00002f3f: PUSH1 0x20
00002f41: ADD
00002f42: PUSH1 0x00
00002f44: KECCAK256
00002f45: SLOAD
00002f46: PUSH1 0x07
00002f48: PUSH1 0x00
00002f4a: DUP5
00002f4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f60: AND
00002f61: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f76: AND
00002f77: DUP2
00002f78: MSTORE
00002f79: PUSH1 0x20
00002f7b: ADD
00002f7c: SWAP1
00002f7d: DUP2
00002f7e: MSTORE
00002f7f: PUSH1 0x20
00002f81: ADD
00002f82: PUSH1 0x00
00002f84: KECCAK256
00002f85: PUSH1 0x00
00002f87: DUP3
00002f88: DUP3
00002f89: SLOAD
00002f8a: PUSH2 0x2f93
00002f8d: SWAP2
00002f8e: SWAP1
00002f8f: PUSH2 0x4d36
00002f92: JUMP
00002f93: JUMPDEST
00002f94: SWAP3
00002f95: POP
00002f96: POP
00002f97: DUP2
00002f98: SWAP1
00002f99: SSTORE
00002f9a: POP
00002f9b: PUSH3 0x0186a0
00002f9f: PUSH1 0x17
00002fa1: SLOAD
00002fa2: PUSH2 0x2faa
00002fa5: DUP5
00002fa6: PUSH2 0x46a1
00002fa9: JUMP
00002faa: JUMPDEST
00002fab: PUSH3 0x0186a0
00002faf: DUP5
00002fb0: PUSH2 0x2fb9
00002fb3: SWAP2
00002fb4: SWAP1
00002fb5: PUSH2 0x4cdc
00002fb8: JUMP
00002fb9: JUMPDEST
00002fba: PUSH2 0x2fc3
00002fbd: SWAP2
00002fbe: SWAP1
00002fbf: PUSH2 0x4cab
00002fc2: JUMP
00002fc3: JUMPDEST
00002fc4: PUSH2 0x2fcd
00002fc7: SWAP2
00002fc8: SWAP1
00002fc9: PUSH2 0x4cdc
00002fcc: JUMP
00002fcd: JUMPDEST
00002fce: PUSH2 0x2fd7
00002fd1: SWAP2
00002fd2: SWAP1
00002fd3: PUSH2 0x4cab
00002fd6: JUMP
00002fd7: JUMPDEST
00002fd8: PUSH1 0x0f
00002fda: PUSH1 0x00
00002fdc: DUP5
00002fdd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ff2: AND
00002ff3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003008: AND
00003009: DUP2
0000300a: MSTORE
0000300b: PUSH1 0x20
0000300d: ADD
0000300e: SWAP1
0000300f: DUP2
00003010: MSTORE
00003011: PUSH1 0x20
00003013: ADD
00003014: PUSH1 0x00
00003016: KECCAK256
00003017: PUSH1 0x00
00003019: DUP6
0000301a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000302f: AND
00003030: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003045: AND
00003046: DUP2
00003047: MSTORE
00003048: PUSH1 0x20
0000304a: ADD
0000304b: SWAP1
0000304c: DUP2
0000304d: MSTORE
0000304e: PUSH1 0x20
00003050: ADD
00003051: PUSH1 0x00
00003053: KECCAK256
00003054: DUP2
00003055: SWAP1
00003056: SSTORE
00003057: POP
00003058: PUSH1 0x0f
0000305a: PUSH1 0x00
0000305c: DUP4
0000305d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003072: AND
00003073: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003088: AND
00003089: DUP2
0000308a: MSTORE
0000308b: PUSH1 0x20
0000308d: ADD
0000308e: SWAP1
0000308f: DUP2
00003090: MSTORE
00003091: PUSH1 0x20
00003093: ADD
00003094: PUSH1 0x00
00003096: KECCAK256
00003097: PUSH1 0x00
00003099: DUP5
0000309a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030af: AND
000030b0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030c5: AND
000030c6: DUP2
000030c7: MSTORE
000030c8: PUSH1 0x20
000030ca: ADD
000030cb: SWAP1
000030cc: DUP2
000030cd: MSTORE
000030ce: PUSH1 0x20
000030d0: ADD
000030d1: PUSH1 0x00
000030d3: KECCAK256
000030d4: SLOAD
000030d5: PUSH1 0x07
000030d7: PUSH1 0x00
000030d9: DUP5
000030da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000030ef: AND
000030f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003105: AND
00003106: DUP2
00003107: MSTORE
00003108: PUSH1 0x20
0000310a: ADD
0000310b: SWAP1
0000310c: DUP2
0000310d: MSTORE
0000310e: PUSH1 0x20
00003110: ADD
00003111: PUSH1 0x00
00003113: KECCAK256
00003114: PUSH1 0x00
00003116: DUP3
00003117: DUP3
00003118: SLOAD
00003119: PUSH2 0x3122
0000311c: SWAP2
0000311d: SWAP1
0000311e: PUSH2 0x4c55
00003121: JUMP
00003122: JUMPDEST
00003123: SWAP3
00003124: POP
00003125: POP
00003126: DUP2
00003127: SWAP1
00003128: SSTORE
00003129: POP
0000312a: PUSH1 0x0f
0000312c: PUSH1 0x00
0000312e: DUP4
0000312f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003144: AND
00003145: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000315a: AND
0000315b: DUP2
0000315c: MSTORE
0000315d: PUSH1 0x20
0000315f: ADD
00003160: SWAP1
00003161: DUP2
00003162: MSTORE
00003163: PUSH1 0x20
00003165: ADD
00003166: PUSH1 0x00
00003168: KECCAK256
00003169: PUSH1 0x00
0000316b: DUP5
0000316c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003181: AND
00003182: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003197: AND
00003198: DUP2
00003199: MSTORE
0000319a: PUSH1 0x20
0000319c: ADD
0000319d: SWAP1
0000319e: DUP2
0000319f: MSTORE
000031a0: PUSH1 0x20
000031a2: ADD
000031a3: PUSH1 0x00
000031a5: KECCAK256
000031a6: SLOAD
000031a7: PUSH1 0x10
000031a9: PUSH1 0x00
000031ab: DUP5
000031ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000031c1: AND
000031c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000031d7: AND
000031d8: DUP2
000031d9: MSTORE
000031da: PUSH1 0x20
000031dc: ADD
000031dd: SWAP1
000031de: DUP2
000031df: MSTORE
000031e0: PUSH1 0x20
000031e2: ADD
000031e3: PUSH1 0x00
000031e5: KECCAK256
000031e6: PUSH1 0x00
000031e8: DUP6
000031e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000031fe: AND
000031ff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003214: AND
00003215: DUP2
00003216: MSTORE
00003217: PUSH1 0x20
00003219: ADD
0000321a: SWAP1
0000321b: DUP2
0000321c: MSTORE
0000321d: PUSH1 0x20
0000321f: ADD
00003220: PUSH1 0x00
00003222: KECCAK256
00003223: DUP2
00003224: SWAP1
00003225: SSTORE
00003226: POP
00003227: POP
00003228: POP
00003229: POP
0000322a: JUMP
0000322b: JUMPDEST
0000322c: PUSH1 0x14
0000322e: PUSH1 0x00
00003230: DUP3
00003231: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003246: AND
00003247: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000325c: AND
0000325d: DUP2
0000325e: MSTORE
0000325f: PUSH1 0x20
00003261: ADD
00003262: SWAP1
00003263: DUP2
00003264: MSTORE
00003265: PUSH1 0x20
00003267: ADD
00003268: PUSH1 0x00
0000326a: KECCAK256
0000326b: PUSH1 0x00
0000326d: SWAP1
0000326e: SLOAD
0000326f: SWAP1
00003270: PUSH2 0x0100
00003273: EXP
00003274: SWAP1
00003275: DIV
00003276: PUSH1 0xff
00003278: AND
00003279: PUSH2 0x3439
0000327c: JUMPI
0000327d: PUSH1 0x01
0000327f: PUSH1 0x14
00003281: PUSH1 0x00
00003283: DUP4
00003284: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003299: AND
0000329a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000032af: AND
000032b0: DUP2
000032b1: MSTORE
000032b2: PUSH1 0x20
000032b4: ADD
000032b5: SWAP1
000032b6: DUP2
000032b7: MSTORE
000032b8: PUSH1 0x20
000032ba: ADD
000032bb: PUSH1 0x00
000032bd: KECCAK256
000032be: PUSH1 0x00
000032c0: PUSH2 0x0100
000032c3: EXP
000032c4: DUP2
000032c5: SLOAD
000032c6: DUP2
000032c7: PUSH1 0xff
000032c9: MUL
000032ca: NOT
000032cb: AND
000032cc: SWAP1
000032cd: DUP4
000032ce: ISZERO
000032cf: ISZERO
000032d0: MUL
000032d1: OR
000032d2: SWAP1
000032d3: SSTORE
000032d4: POP
000032d5: PUSH1 0x00
000032d7: PUSH8 0xffffffffffffffff
000032e0: DUP2
000032e1: GT
000032e2: ISZERO
000032e3: PUSH2 0x3315
000032e6: JUMPI
000032e7: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003308: PUSH1 0x00
0000330a: MSTORE
0000330b: PUSH1 0x41
0000330d: PUSH1 0x04
0000330f: MSTORE
00003310: PUSH1 0x24
00003312: PUSH1 0x00
00003314: REVERT
00003315: JUMPDEST
00003316: PUSH1 0x40
00003318: MLOAD
00003319: SWAP1
0000331a: DUP1
0000331b: DUP3
0000331c: MSTORE
0000331d: DUP1
0000331e: PUSH1 0x20
00003320: MUL
00003321: PUSH1 0x20
00003323: ADD
00003324: DUP3
00003325: ADD
00003326: PUSH1 0x40
00003328: MSTORE
00003329: DUP1
0000332a: ISZERO
0000332b: PUSH2 0x3343
0000332e: JUMPI
0000332f: DUP2
00003330: PUSH1 0x20
00003332: ADD
00003333: PUSH1 0x20
00003335: DUP3
00003336: MUL
00003337: DUP1
00003338: CALLDATASIZE
00003339: DUP4
0000333a: CALLDATACOPY
0000333b: DUP1
0000333c: DUP3
0000333d: ADD
0000333e: SWAP2
0000333f: POP
00003340: POP
00003341: SWAP1
00003342: POP
00003343: JUMPDEST
00003344: POP
00003345: PUSH1 0x16
00003347: PUSH1 0x00
00003349: DUP4
0000334a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000335f: AND
00003360: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003375: AND
00003376: DUP2
00003377: MSTORE
00003378: PUSH1 0x20
0000337a: ADD
0000337b: SWAP1
0000337c: DUP2
0000337d: MSTORE
0000337e: PUSH1 0x20
00003380: ADD
00003381: PUSH1 0x00
00003383: KECCAK256
00003384: SWAP1
00003385: DUP1
00003386: MLOAD
00003387: SWAP1
00003388: PUSH1 0x20
0000338a: ADD
0000338b: SWAP1
0000338c: PUSH2 0x3396
0000338f: SWAP3
00003390: SWAP2
00003391: SWAP1
00003392: PUSH2 0x4776
00003395: JUMP
00003396: JUMPDEST
00003397: POP
00003398: PUSH1 0x16
0000339a: PUSH1 0x00
0000339c: DUP3
0000339d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000033b2: AND
000033b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000033c8: AND
000033c9: DUP2
000033ca: MSTORE
000033cb: PUSH1 0x20
000033cd: ADD
000033ce: SWAP1
000033cf: DUP2
000033d0: MSTORE
000033d1: PUSH1 0x20
000033d3: ADD
000033d4: PUSH1 0x00
000033d6: KECCAK256
000033d7: PUSH1 0x00
000033d9: SWAP1
000033da: DUP1
000033db: PUSH1 0x01
000033dd: DUP2
000033de: SLOAD
000033df: ADD
000033e0: DUP1
000033e1: DUP3
000033e2: SSTORE
000033e3: DUP1
000033e4: SWAP2
000033e5: POP
000033e6: POP
000033e7: PUSH1 0x01
000033e9: SWAP1
000033ea: SUB
000033eb: SWAP1
000033ec: PUSH1 0x00
000033ee: MSTORE
000033ef: PUSH1 0x20
000033f1: PUSH1 0x00
000033f3: KECCAK256
000033f4: ADD
000033f5: PUSH1 0x00
000033f7: SWAP1
000033f8: SWAP2
000033f9: SWAP1
000033fa: SWAP2
000033fb: SWAP1
000033fc: SWAP2
000033fd: PUSH2 0x0100
00003400: EXP
00003401: DUP2
00003402: SLOAD
00003403: DUP2
00003404: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003419: MUL
0000341a: NOT
0000341b: AND
0000341c: SWAP1
0000341d: DUP4
0000341e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003433: AND
00003434: MUL
00003435: OR
00003436: SWAP1
00003437: SSTORE
00003438: POP
00003439: JUMPDEST
0000343a: PUSH1 0x00
0000343c: PUSH1 0x15
0000343e: PUSH1 0x00
00003440: DUP4
00003441: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003456: AND
00003457: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000346c: AND
0000346d: DUP2
0000346e: MSTORE
0000346f: PUSH1 0x20
00003471: ADD
00003472: SWAP1
00003473: DUP2
00003474: MSTORE
00003475: PUSH1 0x20
00003477: ADD
00003478: PUSH1 0x00
0000347a: KECCAK256
0000347b: PUSH1 0x00
0000347d: DUP5
0000347e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003493: AND
00003494: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000034a9: AND
000034aa: DUP2
000034ab: MSTORE
000034ac: PUSH1 0x20
000034ae: ADD
000034af: SWAP1
000034b0: DUP2
000034b1: MSTORE
000034b2: PUSH1 0x20
000034b4: ADD
000034b5: PUSH1 0x00
000034b7: KECCAK256
000034b8: SLOAD
000034b9: EQ
000034ba: ISZERO
000034bb: PUSH2 0x362e
000034be: JUMPI
000034bf: PUSH1 0x16
000034c1: PUSH1 0x00
000034c3: DUP3
000034c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000034d9: AND
000034da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000034ef: AND
000034f0: DUP2
000034f1: MSTORE
000034f2: PUSH1 0x20
000034f4: ADD
000034f5: SWAP1
000034f6: DUP2
000034f7: MSTORE
000034f8: PUSH1 0x20
000034fa: ADD
000034fb: PUSH1 0x00
000034fd: KECCAK256
000034fe: DUP3
000034ff: SWAP1
00003500: DUP1
00003501: PUSH1 0x01
00003503: DUP2
00003504: SLOAD
00003505: ADD
00003506: DUP1
00003507: DUP3
00003508: SSTORE
00003509: DUP1
0000350a: SWAP2
0000350b: POP
0000350c: POP
0000350d: PUSH1 0x01
0000350f: SWAP1
00003510: SUB
00003511: SWAP1
00003512: PUSH1 0x00
00003514: MSTORE
00003515: PUSH1 0x20
00003517: PUSH1 0x00
00003519: KECCAK256
0000351a: ADD
0000351b: PUSH1 0x00
0000351d: SWAP1
0000351e: SWAP2
0000351f: SWAP1
00003520: SWAP2
00003521: SWAP1
00003522: SWAP2
00003523: PUSH2 0x0100
00003526: EXP
00003527: DUP2
00003528: SLOAD
00003529: DUP2
0000352a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000353f: MUL
00003540: NOT
00003541: AND
00003542: SWAP1
00003543: DUP4
00003544: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003559: AND
0000355a: MUL
0000355b: OR
0000355c: SWAP1
0000355d: SSTORE
0000355e: POP
0000355f: PUSH1 0x01
00003561: PUSH1 0x16
00003563: PUSH1 0x00
00003565: DUP4
00003566: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000357b: AND
0000357c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003591: AND
00003592: DUP2
00003593: MSTORE
00003594: PUSH1 0x20
00003596: ADD
00003597: SWAP1
00003598: DUP2
00003599: MSTORE
0000359a: PUSH1 0x20
0000359c: ADD
0000359d: PUSH1 0x00
0000359f: KECCAK256
000035a0: DUP1
000035a1: SLOAD
000035a2: SWAP1
000035a3: POP
000035a4: PUSH2 0x35ad
000035a7: SWAP2
000035a8: SWAP1
000035a9: PUSH2 0x4d36
000035ac: JUMP
000035ad: JUMPDEST
000035ae: PUSH1 0x15
000035b0: PUSH1 0x00
000035b2: DUP4
000035b3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000035c8: AND
000035c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000035de: AND
000035df: DUP2
000035e0: MSTORE
000035e1: PUSH1 0x20
000035e3: ADD
000035e4: SWAP1
000035e5: DUP2
000035e6: MSTORE
000035e7: PUSH1 0x20
000035e9: ADD
000035ea: PUSH1 0x00
000035ec: KECCAK256
000035ed: PUSH1 0x00
000035ef: DUP5
000035f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003605: AND
00003606: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000361b: AND
0000361c: DUP2
0000361d: MSTORE
0000361e: PUSH1 0x20
00003620: ADD
00003621: SWAP1
00003622: DUP2
00003623: MSTORE
00003624: PUSH1 0x20
00003626: ADD
00003627: PUSH1 0x00
00003629: KECCAK256
0000362a: DUP2
0000362b: SWAP1
0000362c: SSTORE
0000362d: POP
0000362e: JUMPDEST
0000362f: PUSH1 0x01
00003631: PUSH1 0x0e
00003633: PUSH1 0x00
00003635: DUP5
00003636: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000364b: AND
0000364c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003661: AND
00003662: DUP2
00003663: MSTORE
00003664: PUSH1 0x20
00003666: ADD
00003667: SWAP1
00003668: DUP2
00003669: MSTORE
0000366a: PUSH1 0x20
0000366c: ADD
0000366d: PUSH1 0x00
0000366f: KECCAK256
00003670: PUSH1 0x00
00003672: DUP4
00003673: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003688: AND
00003689: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000369e: AND
0000369f: DUP2
000036a0: MSTORE
000036a1: PUSH1 0x20
000036a3: ADD
000036a4: SWAP1
000036a5: DUP2
000036a6: MSTORE
000036a7: PUSH1 0x20
000036a9: ADD
000036aa: PUSH1 0x00
000036ac: KECCAK256
000036ad: PUSH1 0x00
000036af: PUSH2 0x0100
000036b2: EXP
000036b3: DUP2
000036b4: SLOAD
000036b5: DUP2
000036b6: PUSH1 0xff
000036b8: MUL
000036b9: NOT
000036ba: AND
000036bb: SWAP1
000036bc: DUP4
000036bd: ISZERO
000036be: ISZERO
000036bf: MUL
000036c0: OR
000036c1: SWAP1
000036c2: SSTORE
000036c3: POP
000036c4: POP
000036c5: POP
000036c6: JUMP
000036c7: JUMPDEST
000036c8: PUSH1 0x01
000036ca: PUSH1 0x00
000036cc: DUP4
000036cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000036e2: AND
000036e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000036f8: AND
000036f9: DUP2
000036fa: MSTORE
000036fb: PUSH1 0x20
000036fd: ADD
000036fe: SWAP1
000036ff: DUP2
00003700: MSTORE
00003701: PUSH1 0x20
00003703: ADD
00003704: PUSH1 0x00
00003706: KECCAK256
00003707: PUSH1 0x00
00003709: SWAP1
0000370a: SLOAD
0000370b: SWAP1
0000370c: PUSH2 0x0100
0000370f: EXP
00003710: SWAP1
00003711: DIV
00003712: PUSH1 0xff
00003714: AND
00003715: PUSH2 0x3753
00003718: JUMPI
00003719: PUSH1 0x40
0000371b: MLOAD
0000371c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000373d: DUP2
0000373e: MSTORE
0000373f: PUSH1 0x04
00003741: ADD
00003742: PUSH2 0x374a
00003745: SWAP1
00003746: PUSH2 0x4b89
00003749: JUMP
0000374a: JUMPDEST
0000374b: PUSH1 0x40
0000374d: MLOAD
0000374e: DUP1
0000374f: SWAP2
00003750: SUB
00003751: SWAP1
00003752: REVERT
00003753: JUMPDEST
00003754: PUSH1 0x0e
00003756: PUSH1 0x00
00003758: DUP4
00003759: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000376e: AND
0000376f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003784: AND
00003785: DUP2
00003786: MSTORE
00003787: PUSH1 0x20
00003789: ADD
0000378a: SWAP1
0000378b: DUP2
0000378c: MSTORE
0000378d: PUSH1 0x20
0000378f: ADD
00003790: PUSH1 0x00
00003792: KECCAK256
00003793: PUSH1 0x00
00003795: DUP3
00003796: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000037ab: AND
000037ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000037c1: AND
000037c2: DUP2
000037c3: MSTORE
000037c4: PUSH1 0x20
000037c6: ADD
000037c7: SWAP1
000037c8: DUP2
000037c9: MSTORE
000037ca: PUSH1 0x20
000037cc: ADD
000037cd: PUSH1 0x00
000037cf: KECCAK256
000037d0: PUSH1 0x00
000037d2: SWAP1
000037d3: SLOAD
000037d4: SWAP1
000037d5: PUSH2 0x0100
000037d8: EXP
000037d9: SWAP1
000037da: DIV
000037db: PUSH1 0xff
000037dd: AND
000037de: PUSH2 0x381c
000037e1: JUMPI
000037e2: PUSH1 0x40
000037e4: MLOAD
000037e5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00003806: DUP2
00003807: MSTORE
00003808: PUSH1 0x04
0000380a: ADD
0000380b: PUSH2 0x3813
0000380e: SWAP1
0000380f: PUSH2 0x4bc9
00003812: JUMP
00003813: JUMPDEST
00003814: PUSH1 0x40
00003816: MLOAD
00003817: DUP1
00003818: SWAP2
00003819: SUB
0000381a: SWAP1
0000381b: REVERT
0000381c: JUMPDEST
0000381d: PUSH1 0x00
0000381f: PUSH2 0x38a5
00003822: DUP4
00003823: DUP4
00003824: PUSH1 0x0f
00003826: PUSH1 0x00
00003828: DUP8
00003829: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000383e: AND
0000383f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003854: AND
00003855: DUP2
00003856: MSTORE
00003857: PUSH1 0x20
00003859: ADD
0000385a: SWAP1
0000385b: DUP2
0000385c: MSTORE
0000385d: PUSH1 0x20
0000385f: ADD
00003860: PUSH1 0x00
00003862: KECCAK256
00003863: PUSH1 0x00
00003865: DUP7
00003866: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000387b: AND
0000387c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003891: AND
00003892: DUP2
00003893: MSTORE
00003894: PUSH1 0x20
00003896: ADD
00003897: SWAP1
00003898: DUP2
00003899: MSTORE
0000389a: PUSH1 0x20
0000389c: ADD
0000389d: PUSH1 0x00
0000389f: KECCAK256
000038a0: SLOAD
000038a1: PUSH2 0x3e18
000038a4: JUMP
000038a5: JUMPDEST
000038a6: SWAP1
000038a7: POP
000038a8: DUP1
000038a9: PUSH1 0x0b
000038ab: PUSH1 0x00
000038ad: DUP6
000038ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000038c3: AND
000038c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000038d9: AND
000038da: DUP2
000038db: MSTORE
000038dc: PUSH1 0x20
000038de: ADD
000038df: SWAP1
000038e0: DUP2
000038e1: MSTORE
000038e2: PUSH1 0x20
000038e4: ADD
000038e5: PUSH1 0x00
000038e7: KECCAK256
000038e8: SLOAD
000038e9: LT
000038ea: ISZERO
000038eb: PUSH2 0x3931
000038ee: JUMPI
000038ef: PUSH1 0x0b
000038f1: PUSH1 0x00
000038f3: DUP5
000038f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003909: AND
0000390a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000391f: AND
00003920: DUP2
00003921: MSTORE
00003922: PUSH1 0x20
00003924: ADD
00003925: SWAP1
00003926: DUP2
00003927: MSTORE
00003928: PUSH1 0x20
0000392a: ADD
0000392b: PUSH1 0x00
0000392d: KECCAK256
0000392e: SLOAD
0000392f: SWAP1
00003930: POP
00003931: JUMPDEST
00003932: PUSH1 0x00
00003934: DUP2
00003935: GT
00003936: PUSH2 0x3974
00003939: JUMPI
0000393a: PUSH1 0x40
0000393c: MLOAD
0000393d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000395e: DUP2
0000395f: MSTORE
00003960: PUSH1 0x04
00003962: ADD
00003963: PUSH2 0x396b
00003966: SWAP1
00003967: PUSH2 0x4ba9
0000396a: JUMP
0000396b: JUMPDEST
0000396c: PUSH1 0x40
0000396e: MLOAD
0000396f: DUP1
00003970: SWAP2
00003971: SUB
00003972: SWAP1
00003973: REVERT
00003974: JUMPDEST
00003975: PUSH1 0x00
00003977: PUSH1 0x13
00003979: PUSH1 0x00
0000397b: DUP6
0000397c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003991: AND
00003992: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000039a7: AND
000039a8: DUP2
000039a9: MSTORE
000039aa: PUSH1 0x20
000039ac: ADD
000039ad: SWAP1
000039ae: DUP2
000039af: MSTORE
000039b0: PUSH1 0x20
000039b2: ADD
000039b3: PUSH1 0x00
000039b5: KECCAK256
000039b6: PUSH1 0x00
000039b8: DUP5
000039b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000039ce: AND
000039cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000039e4: AND
000039e5: DUP2
000039e6: MSTORE
000039e7: PUSH1 0x20
000039e9: ADD
000039ea: SWAP1
000039eb: DUP2
000039ec: MSTORE
000039ed: PUSH1 0x20
000039ef: ADD
000039f0: PUSH1 0x00
000039f2: KECCAK256
000039f3: SLOAD
000039f4: SWAP1
000039f5: POP
000039f6: PUSH1 0x00
000039f8: PUSH1 0x12
000039fa: PUSH1 0x00
000039fc: DUP7
000039fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003a12: AND
00003a13: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003a28: AND
00003a29: DUP2
00003a2a: MSTORE
00003a2b: PUSH1 0x20
00003a2d: ADD
00003a2e: SWAP1
00003a2f: DUP2
00003a30: MSTORE
00003a31: PUSH1 0x20
00003a33: ADD
00003a34: PUSH1 0x00
00003a36: KECCAK256
00003a37: PUSH1 0x00
00003a39: DUP6
00003a3a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003a4f: AND
00003a50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003a65: AND
00003a66: DUP2
00003a67: MSTORE
00003a68: PUSH1 0x20
00003a6a: ADD
00003a6b: SWAP1
00003a6c: DUP2
00003a6d: MSTORE
00003a6e: PUSH1 0x20
00003a70: ADD
00003a71: PUSH1 0x00
00003a73: KECCAK256
00003a74: SLOAD
00003a75: SWAP1
00003a76: POP
00003a77: DUP4
00003a78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003a8d: AND
00003a8e: PUSH2 0x08fc
00003a91: DUP5
00003a92: SWAP1
00003a93: DUP2
00003a94: ISZERO
00003a95: MUL
00003a96: SWAP1
00003a97: PUSH1 0x40
00003a99: MLOAD
00003a9a: PUSH1 0x00
00003a9c: PUSH1 0x40
00003a9e: MLOAD
00003a9f: DUP1
00003aa0: DUP4
00003aa1: SUB
00003aa2: DUP2
00003aa3: DUP6
00003aa4: DUP9
00003aa5: DUP9
00003aa6: CALL
00003aa7: SWAP4
00003aa8: POP
00003aa9: POP
00003aaa: POP
00003aab: POP
00003aac: ISZERO
00003aad: DUP1
00003aae: ISZERO
00003aaf: PUSH2 0x3abc
00003ab2: JUMPI
00003ab3: RETURNDATASIZE
00003ab4: PUSH1 0x00
00003ab6: DUP1
00003ab7: RETURNDATACOPY
00003ab8: RETURNDATASIZE
00003ab9: PUSH1 0x00
00003abb: REVERT
00003abc: JUMPDEST
00003abd: POP
00003abe: PUSH1 0x05
00003ac0: PUSH1 0x00
00003ac2: DUP7
00003ac3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003ad8: AND
00003ad9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003aee: AND
00003aef: DUP2
00003af0: MSTORE
00003af1: PUSH1 0x20
00003af3: ADD
00003af4: SWAP1
00003af5: DUP2
00003af6: MSTORE
00003af7: PUSH1 0x20
00003af9: ADD
00003afa: PUSH1 0x00
00003afc: KECCAK256
00003afd: SLOAD
00003afe: PUSH1 0x11
00003b00: PUSH1 0x00
00003b02: DUP8
00003b03: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003b18: AND
00003b19: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003b2e: AND
00003b2f: DUP2
00003b30: MSTORE
00003b31: PUSH1 0x20
00003b33: ADD
00003b34: SWAP1
00003b35: DUP2
00003b36: MSTORE
00003b37: PUSH1 0x20
00003b39: ADD
00003b3a: PUSH1 0x00
00003b3c: KECCAK256
00003b3d: PUSH1 0x00
00003b3f: DUP7
00003b40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003b55: AND
00003b56: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003b6b: AND
00003b6c: DUP2
00003b6d: MSTORE
00003b6e: PUSH1 0x20
00003b70: ADD
00003b71: SWAP1
00003b72: DUP2
00003b73: MSTORE
00003b74: PUSH1 0x20
00003b76: ADD
00003b77: PUSH1 0x00
00003b79: KECCAK256
00003b7a: DUP2
00003b7b: SWAP1
00003b7c: SSTORE
00003b7d: POP
00003b7e: PUSH1 0x00
00003b80: PUSH1 0x12
00003b82: PUSH1 0x00
00003b84: DUP8
00003b85: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003b9a: AND
00003b9b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003bb0: AND
00003bb1: DUP2
00003bb2: MSTORE
00003bb3: PUSH1 0x20
00003bb5: ADD
00003bb6: SWAP1
00003bb7: DUP2
00003bb8: MSTORE
00003bb9: PUSH1 0x20
00003bbb: ADD
00003bbc: PUSH1 0x00
00003bbe: KECCAK256
00003bbf: PUSH1 0x00
00003bc1: DUP7
00003bc2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003bd7: AND
00003bd8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003bed: AND
00003bee: DUP2
00003bef: MSTORE
00003bf0: PUSH1 0x20
00003bf2: ADD
00003bf3: SWAP1
00003bf4: DUP2
00003bf5: MSTORE
00003bf6: PUSH1 0x20
00003bf8: ADD
00003bf9: PUSH1 0x00
00003bfb: KECCAK256
00003bfc: DUP2
00003bfd: SWAP1
00003bfe: SSTORE
00003bff: POP
00003c00: DUP3
00003c01: DUP2
00003c02: DUP4
00003c03: PUSH2 0x3c0c
00003c06: SWAP2
00003c07: SWAP1
00003c08: PUSH2 0x4c55
00003c0b: JUMP
00003c0c: JUMPDEST
00003c0d: LT
00003c0e: PUSH2 0x3cb9
00003c11: JUMPI
00003c12: DUP3
00003c13: PUSH1 0x01
00003c15: DUP3
00003c16: DUP5
00003c17: PUSH2 0x3c20
00003c1a: SWAP2
00003c1b: SWAP1
00003c1c: PUSH2 0x4c55
00003c1f: JUMP
00003c20: JUMPDEST
00003c21: PUSH2 0x3c2a
00003c24: SWAP2
00003c25: SWAP1
00003c26: PUSH2 0x4c55
00003c29: JUMP
00003c2a: JUMPDEST
00003c2b: PUSH2 0x3c34
00003c2e: SWAP2
00003c2f: SWAP1
00003c30: PUSH2 0x4d36
00003c33: JUMP
00003c34: JUMPDEST
00003c35: PUSH1 0x13
00003c37: PUSH1 0x00
00003c39: DUP8
00003c3a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003c4f: AND
00003c50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003c65: AND
00003c66: DUP2
00003c67: MSTORE
00003c68: PUSH1 0x20
00003c6a: ADD
00003c6b: SWAP1
00003c6c: DUP2
00003c6d: MSTORE
00003c6e: PUSH1 0x20
00003c70: ADD
00003c71: PUSH1 0x00
00003c73: KECCAK256
00003c74: PUSH1 0x00
00003c76: DUP7
00003c77: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003c8c: AND
00003c8d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003ca2: AND
00003ca3: DUP2
00003ca4: MSTORE
00003ca5: PUSH1 0x20
00003ca7: ADD
00003ca8: SWAP1
00003ca9: DUP2
00003caa: MSTORE
00003cab: PUSH1 0x20
00003cad: ADD
00003cae: PUSH1 0x00
00003cb0: KECCAK256
00003cb1: DUP2
00003cb2: SWAP1
00003cb3: SSTORE
00003cb4: POP
00003cb5: PUSH2 0x3d3c
00003cb8: JUMP
00003cb9: JUMPDEST
00003cba: PUSH1 0x00
00003cbc: PUSH1 0x13
00003cbe: PUSH1 0x00
00003cc0: DUP8
00003cc1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003cd6: AND
00003cd7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003cec: AND
00003ced: DUP2
00003cee: MSTORE
00003cef: PUSH1 0x20
00003cf1: ADD
00003cf2: SWAP1
00003cf3: DUP2
00003cf4: MSTORE
00003cf5: PUSH1 0x20
00003cf7: ADD
00003cf8: PUSH1 0x00
00003cfa: KECCAK256
00003cfb: PUSH1 0x00
00003cfd: DUP7
00003cfe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003d13: AND
00003d14: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003d29: AND
00003d2a: DUP2
00003d2b: MSTORE
00003d2c: PUSH1 0x20
00003d2e: ADD
00003d2f: SWAP1
00003d30: DUP2
00003d31: MSTORE
00003d32: PUSH1 0x20
00003d34: ADD
00003d35: PUSH1 0x00
00003d37: KECCAK256
00003d38: DUP2
00003d39: SWAP1
00003d3a: SSTORE
00003d3b: POP
00003d3c: JUMPDEST
00003d3d: DUP3
00003d3e: PUSH1 0x0b
00003d40: PUSH1 0x00
00003d42: DUP8
00003d43: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003d58: AND
00003d59: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003d6e: AND
00003d6f: DUP2
00003d70: MSTORE
00003d71: PUSH1 0x20
00003d73: ADD
00003d74: SWAP1
00003d75: DUP2
00003d76: MSTORE
00003d77: PUSH1 0x20
00003d79: ADD
00003d7a: PUSH1 0x00
00003d7c: KECCAK256
00003d7d: SLOAD
00003d7e: LT
00003d7f: PUSH2 0x3e11
00003d82: JUMPI
00003d83: DUP3
00003d84: PUSH1 0x0b
00003d86: PUSH1 0x00
00003d88: DUP8
00003d89: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003d9e: AND
00003d9f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003db4: AND
00003db5: DUP2
00003db6: MSTORE
00003db7: PUSH1 0x20
00003db9: ADD
00003dba: SWAP1
00003dbb: DUP2
00003dbc: MSTORE
00003dbd: PUSH1 0x20
00003dbf: ADD
00003dc0: PUSH1 0x00
00003dc2: KECCAK256
00003dc3: SLOAD
00003dc4: PUSH2 0x3dcd
00003dc7: SWAP2
00003dc8: SWAP1
00003dc9: PUSH2 0x4d36
00003dcc: JUMP
00003dcd: JUMPDEST
00003dce: PUSH1 0x0b
00003dd0: PUSH1 0x00
00003dd2: DUP8
00003dd3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003de8: AND
00003de9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003dfe: AND
00003dff: DUP2
00003e00: MSTORE
00003e01: PUSH1 0x20
00003e03: ADD
00003e04: SWAP1
00003e05: DUP2
00003e06: MSTORE
00003e07: PUSH1 0x20
00003e09: ADD
00003e0a: PUSH1 0x00
00003e0c: KECCAK256
00003e0d: DUP2
00003e0e: SWAP1
00003e0f: SSTORE
00003e10: POP
00003e11: JUMPDEST
00003e12: POP
00003e13: POP
00003e14: POP
00003e15: POP
00003e16: POP
00003e17: JUMP
00003e18: JUMPDEST
00003e19: PUSH1 0x00
00003e1b: PUSH1 0x11
00003e1d: PUSH1 0x00
00003e1f: DUP6
00003e20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003e35: AND
00003e36: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003e4b: AND
00003e4c: DUP2
00003e4d: MSTORE
00003e4e: PUSH1 0x20
00003e50: ADD
00003e51: SWAP1
00003e52: DUP2
00003e53: MSTORE
00003e54: PUSH1 0x20
00003e56: ADD
00003e57: PUSH1 0x00
00003e59: KECCAK256
00003e5a: PUSH1 0x00
00003e5c: DUP5
00003e5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003e72: AND
00003e73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003e88: AND
00003e89: DUP2
00003e8a: MSTORE
00003e8b: PUSH1 0x20
00003e8d: ADD
00003e8e: SWAP1
00003e8f: DUP2
00003e90: MSTORE
00003e91: PUSH1 0x20
00003e93: ADD
00003e94: PUSH1 0x00
00003e96: KECCAK256
00003e97: SLOAD
00003e98: PUSH1 0x06
00003e9a: PUSH1 0x00
00003e9c: DUP7
00003e9d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003eb2: AND
00003eb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003ec8: AND
00003ec9: DUP2
00003eca: MSTORE
00003ecb: PUSH1 0x20
00003ecd: ADD
00003ece: SWAP1
00003ecf: DUP2
00003ed0: MSTORE
00003ed1: PUSH1 0x20
00003ed3: ADD
00003ed4: PUSH1 0x00
00003ed6: KECCAK256
00003ed7: SLOAD
00003ed8: GT
00003ed9: PUSH2 0x407a
00003edc: JUMPI
00003edd: PUSH1 0x00
00003edf: PUSH1 0x13
00003ee1: PUSH1 0x00
00003ee3: DUP7
00003ee4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003ef9: AND
00003efa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003f0f: AND
00003f10: DUP2
00003f11: MSTORE
00003f12: PUSH1 0x20
00003f14: ADD
00003f15: SWAP1
00003f16: DUP2
00003f17: MSTORE
00003f18: PUSH1 0x20
00003f1a: ADD
00003f1b: PUSH1 0x00
00003f1d: KECCAK256
00003f1e: PUSH1 0x00
00003f20: DUP6
00003f21: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003f36: AND
00003f37: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003f4c: AND
00003f4d: DUP2
00003f4e: MSTORE
00003f4f: PUSH1 0x20
00003f51: ADD
00003f52: SWAP1
00003f53: DUP2
00003f54: MSTORE
00003f55: PUSH1 0x20
00003f57: ADD
00003f58: PUSH1 0x00
00003f5a: KECCAK256
00003f5b: SLOAD
00003f5c: SWAP1
00003f5d: POP
00003f5e: PUSH1 0x00
00003f60: PUSH1 0x12
00003f62: PUSH1 0x00
00003f64: DUP8
00003f65: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003f7a: AND
00003f7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003f90: AND
00003f91: DUP2
00003f92: MSTORE
00003f93: PUSH1 0x20
00003f95: ADD
00003f96: SWAP1
00003f97: DUP2
00003f98: MSTORE
00003f99: PUSH1 0x20
00003f9b: ADD
00003f9c: PUSH1 0x00
00003f9e: KECCAK256
00003f9f: PUSH1 0x00
00003fa1: DUP7
00003fa2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003fb7: AND
00003fb8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003fcd: AND
00003fce: DUP2
00003fcf: MSTORE
00003fd0: PUSH1 0x20
00003fd2: ADD
00003fd3: SWAP1
00003fd4: DUP2
00003fd5: MSTORE
00003fd6: PUSH1 0x20
00003fd8: ADD
00003fd9: PUSH1 0x00
00003fdb: KECCAK256
00003fdc: SLOAD
00003fdd: SWAP1
00003fde: POP
00003fdf: PUSH1 0x00
00003fe1: PUSH1 0x0b
00003fe3: PUSH1 0x00
00003fe5: DUP9
00003fe6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00003ffb: AND
00003ffc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004011: AND
00004012: DUP2
00004013: MSTORE
00004014: PUSH1 0x20
00004016: ADD
00004017: SWAP1
00004018: DUP2
00004019: MSTORE
0000401a: PUSH1 0x20
0000401c: ADD
0000401d: PUSH1 0x00
0000401f: KECCAK256
00004020: SLOAD
00004021: SWAP1
00004022: POP
00004023: DUP1
00004024: DUP3
00004025: DUP5
00004026: PUSH2 0x402f
00004029: SWAP2
0000402a: SWAP1
0000402b: PUSH2 0x4c55
0000402e: JUMP
0000402f: JUMPDEST
00004030: GT
00004031: PUSH2 0x404a
00004034: JUMPI
00004035: DUP2
00004036: DUP4
00004037: PUSH2 0x4040
0000403a: SWAP2
0000403b: SWAP1
0000403c: PUSH2 0x4c55
0000403f: JUMP
00004040: JUMPDEST
00004041: SWAP4
00004042: POP
00004043: POP
00004044: POP
00004045: POP
00004046: PUSH2 0x4270
00004049: JUMP
0000404a: JUMPDEST
0000404b: DUP1
0000404c: DUP4
0000404d: GT
0000404e: PUSH2 0x405c
00004051: JUMPI
00004052: DUP3
00004053: SWAP4
00004054: POP
00004055: POP
00004056: POP
00004057: POP
00004058: PUSH2 0x4270
0000405b: JUMP
0000405c: JUMPDEST
0000405d: DUP1
0000405e: DUP3
0000405f: GT
00004060: PUSH2 0x406e
00004063: JUMPI
00004064: DUP2
00004065: SWAP4
00004066: POP
00004067: POP
00004068: POP
00004069: POP
0000406a: PUSH2 0x4270
0000406d: JUMP
0000406e: JUMPDEST
0000406f: PUSH1 0x00
00004071: SWAP4
00004072: POP
00004073: POP
00004074: POP
00004075: POP
00004076: PUSH2 0x4270
00004079: JUMP
0000407a: JUMPDEST
0000407b: PUSH1 0x00
0000407d: PUSH1 0x11
0000407f: PUSH1 0x00
00004081: DUP7
00004082: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004097: AND
00004098: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000040ad: AND
000040ae: DUP2
000040af: MSTORE
000040b0: PUSH1 0x20
000040b2: ADD
000040b3: SWAP1
000040b4: DUP2
000040b5: MSTORE
000040b6: PUSH1 0x20
000040b8: ADD
000040b9: PUSH1 0x00
000040bb: KECCAK256
000040bc: PUSH1 0x00
000040be: DUP6
000040bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000040d4: AND
000040d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000040ea: AND
000040eb: DUP2
000040ec: MSTORE
000040ed: PUSH1 0x20
000040ef: ADD
000040f0: SWAP1
000040f1: DUP2
000040f2: MSTORE
000040f3: PUSH1 0x20
000040f5: ADD
000040f6: PUSH1 0x00
000040f8: KECCAK256
000040f9: SLOAD
000040fa: PUSH1 0x06
000040fc: PUSH1 0x00
000040fe: DUP8
000040ff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004114: AND
00004115: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000412a: AND
0000412b: DUP2
0000412c: MSTORE
0000412d: PUSH1 0x20
0000412f: ADD
00004130: SWAP1
00004131: DUP2
00004132: MSTORE
00004133: PUSH1 0x20
00004135: ADD
00004136: PUSH1 0x00
00004138: KECCAK256
00004139: SLOAD
0000413a: PUSH2 0x4143
0000413d: SWAP2
0000413e: SWAP1
0000413f: PUSH2 0x4d36
00004142: JUMP
00004143: JUMPDEST
00004144: SWAP1
00004145: POP
00004146: PUSH1 0x12
00004148: PUSH1 0x00
0000414a: DUP7
0000414b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004160: AND
00004161: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004176: AND
00004177: DUP2
00004178: MSTORE
00004179: PUSH1 0x20
0000417b: ADD
0000417c: SWAP1
0000417d: DUP2
0000417e: MSTORE
0000417f: PUSH1 0x20
00004181: ADD
00004182: PUSH1 0x00
00004184: KECCAK256
00004185: PUSH1 0x00
00004187: DUP6
00004188: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000419d: AND
0000419e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000041b3: AND
000041b4: DUP2
000041b5: MSTORE
000041b6: PUSH1 0x20
000041b8: ADD
000041b9: SWAP1
000041ba: DUP2
000041bb: MSTORE
000041bc: PUSH1 0x20
000041be: ADD
000041bf: PUSH1 0x00
000041c1: KECCAK256
000041c2: SLOAD
000041c3: PUSH1 0x13
000041c5: PUSH1 0x00
000041c7: DUP8
000041c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000041dd: AND
000041de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000041f3: AND
000041f4: DUP2
000041f5: MSTORE
000041f6: PUSH1 0x20
000041f8: ADD
000041f9: SWAP1
000041fa: DUP2
000041fb: MSTORE
000041fc: PUSH1 0x20
000041fe: ADD
000041ff: PUSH1 0x00
00004201: KECCAK256
00004202: PUSH1 0x00
00004204: DUP7
00004205: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000421a: AND
0000421b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004230: AND
00004231: DUP2
00004232: MSTORE
00004233: PUSH1 0x20
00004235: ADD
00004236: SWAP1
00004237: DUP2
00004238: MSTORE
00004239: PUSH1 0x20
0000423b: ADD
0000423c: PUSH1 0x00
0000423e: KECCAK256
0000423f: SLOAD
00004240: PUSH1 0x17
00004242: SLOAD
00004243: DUP6
00004244: DUP5
00004245: PUSH2 0x424e
00004248: SWAP2
00004249: SWAP1
0000424a: PUSH2 0x4cdc
0000424d: JUMP
0000424e: JUMPDEST
0000424f: PUSH2 0x4258
00004252: SWAP2
00004253: SWAP1
00004254: PUSH2 0x4cab
00004257: JUMP
00004258: JUMPDEST
00004259: PUSH2 0x4262
0000425c: SWAP2
0000425d: SWAP1
0000425e: PUSH2 0x4c55
00004261: JUMP
00004262: JUMPDEST
00004263: PUSH2 0x426c
00004266: SWAP2
00004267: SWAP1
00004268: PUSH2 0x4c55
0000426b: JUMP
0000426c: JUMPDEST
0000426d: SWAP2
0000426e: POP
0000426f: POP
00004270: JUMPDEST
00004271: SWAP4
00004272: SWAP3
00004273: POP
00004274: POP
00004275: POP
00004276: JUMP
00004277: JUMPDEST
00004278: PUSH1 0x00
0000427a: DUP1
0000427b: PUSH1 0x00
0000427d: SWAP1
0000427e: POP
0000427f: PUSH1 0x00
00004281: PUSH1 0x16
00004283: PUSH1 0x00
00004285: DUP6
00004286: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000429b: AND
0000429c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000042b1: AND
000042b2: DUP2
000042b3: MSTORE
000042b4: PUSH1 0x20
000042b6: ADD
000042b7: SWAP1
000042b8: DUP2
000042b9: MSTORE
000042ba: PUSH1 0x20
000042bc: ADD
000042bd: PUSH1 0x00
000042bf: KECCAK256
000042c0: DUP1
000042c1: SLOAD
000042c2: DUP1
000042c3: PUSH1 0x20
000042c5: MUL
000042c6: PUSH1 0x20
000042c8: ADD
000042c9: PUSH1 0x40
000042cb: MLOAD
000042cc: SWAP1
000042cd: DUP2
000042ce: ADD
000042cf: PUSH1 0x40
000042d1: MSTORE
000042d2: DUP1
000042d3: SWAP3
000042d4: SWAP2
000042d5: SWAP1
000042d6: DUP2
000042d7: DUP2
000042d8: MSTORE
000042d9: PUSH1 0x20
000042db: ADD
000042dc: DUP3
000042dd: DUP1
000042de: SLOAD
000042df: DUP1
000042e0: ISZERO
000042e1: PUSH2 0x433f
000042e4: JUMPI
000042e5: PUSH1 0x20
000042e7: MUL
000042e8: DUP3
000042e9: ADD
000042ea: SWAP2
000042eb: SWAP1
000042ec: PUSH1 0x00
000042ee: MSTORE
000042ef: PUSH1 0x20
000042f1: PUSH1 0x00
000042f3: KECCAK256
000042f4: SWAP1
000042f5: JUMPDEST
000042f6: DUP2
000042f7: PUSH1 0x00
000042f9: SWAP1
000042fa: SLOAD
000042fb: SWAP1
000042fc: PUSH2 0x0100
000042ff: EXP
00004300: SWAP1
00004301: DIV
00004302: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004317: AND
00004318: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000432d: AND
0000432e: DUP2
0000432f: MSTORE
00004330: PUSH1 0x20
00004332: ADD
00004333: SWAP1
00004334: PUSH1 0x01
00004336: ADD
00004337: SWAP1
00004338: DUP1
00004339: DUP4
0000433a: GT
0000433b: PUSH2 0x42f5
0000433e: JUMPI
0000433f: JUMPDEST
00004340: POP
00004341: POP
00004342: POP
00004343: POP
00004344: POP
00004345: SWAP1
00004346: POP
00004347: PUSH1 0x00
00004349: PUSH1 0x01
0000434b: SWAP1
0000434c: POP
0000434d: JUMPDEST
0000434e: DUP2
0000434f: MLOAD
00004350: DUP2
00004351: LT
00004352: ISZERO
00004353: PUSH2 0x447d
00004356: JUMPI
00004357: PUSH2 0x445d
0000435a: DUP3
0000435b: DUP3
0000435c: DUP2
0000435d: MLOAD
0000435e: DUP2
0000435f: LT
00004360: PUSH2 0x4392
00004363: JUMPI
00004364: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00004385: PUSH1 0x00
00004387: MSTORE
00004388: PUSH1 0x32
0000438a: PUSH1 0x04
0000438c: MSTORE
0000438d: PUSH1 0x24
0000438f: PUSH1 0x00
00004391: REVERT
00004392: JUMPDEST
00004393: PUSH1 0x20
00004395: MUL
00004396: PUSH1 0x20
00004398: ADD
00004399: ADD
0000439a: MLOAD
0000439b: DUP7
0000439c: PUSH1 0x0f
0000439e: PUSH1 0x00
000043a0: DUP7
000043a1: DUP7
000043a2: DUP2
000043a3: MLOAD
000043a4: DUP2
000043a5: LT
000043a6: PUSH2 0x43d8
000043a9: JUMPI
000043aa: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000043cb: PUSH1 0x00
000043cd: MSTORE
000043ce: PUSH1 0x32
000043d0: PUSH1 0x04
000043d2: MSTORE
000043d3: PUSH1 0x24
000043d5: PUSH1 0x00
000043d7: REVERT
000043d8: JUMPDEST
000043d9: PUSH1 0x20
000043db: MUL
000043dc: PUSH1 0x20
000043de: ADD
000043df: ADD
000043e0: MLOAD
000043e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000043f6: AND
000043f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000440c: AND
0000440d: DUP2
0000440e: MSTORE
0000440f: PUSH1 0x20
00004411: ADD
00004412: SWAP1
00004413: DUP2
00004414: MSTORE
00004415: PUSH1 0x20
00004417: ADD
00004418: PUSH1 0x00
0000441a: KECCAK256
0000441b: PUSH1 0x00
0000441d: DUP10
0000441e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004433: AND
00004434: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004449: AND
0000444a: DUP2
0000444b: MSTORE
0000444c: PUSH1 0x20
0000444e: ADD
0000444f: SWAP1
00004450: DUP2
00004451: MSTORE
00004452: PUSH1 0x20
00004454: ADD
00004455: PUSH1 0x00
00004457: KECCAK256
00004458: SLOAD
00004459: PUSH2 0x3e18
0000445c: JUMP
0000445d: JUMPDEST
0000445e: DUP4
0000445f: PUSH2 0x4468
00004462: SWAP2
00004463: SWAP1
00004464: PUSH2 0x4c55
00004467: JUMP
00004468: JUMPDEST
00004469: SWAP3
0000446a: POP
0000446b: DUP1
0000446c: DUP1
0000446d: PUSH2 0x4475
00004470: SWAP1
00004471: PUSH2 0x4da6
00004474: JUMP
00004475: JUMPDEST
00004476: SWAP2
00004477: POP
00004478: POP
00004479: PUSH2 0x434d
0000447c: JUMP
0000447d: JUMPDEST
0000447e: POP
0000447f: DUP2
00004480: SWAP3
00004481: POP
00004482: POP
00004483: POP
00004484: SWAP2
00004485: SWAP1
00004486: POP
00004487: JUMP
00004488: JUMPDEST
00004489: PUSH1 0x00
0000448b: CALLER
0000448c: SWAP1
0000448d: POP
0000448e: SWAP1
0000448f: JUMP
00004490: JUMPDEST
00004491: PUSH1 0x00
00004493: DUP1
00004494: PUSH1 0x00
00004496: SWAP1
00004497: POP
00004498: PUSH1 0x00
0000449a: PUSH1 0x16
0000449c: PUSH1 0x00
0000449e: DUP6
0000449f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000044b4: AND
000044b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000044ca: AND
000044cb: DUP2
000044cc: MSTORE
000044cd: PUSH1 0x20
000044cf: ADD
000044d0: SWAP1
000044d1: DUP2
000044d2: MSTORE
000044d3: PUSH1 0x20
000044d5: ADD
000044d6: PUSH1 0x00
000044d8: KECCAK256
000044d9: DUP1
000044da: SLOAD
000044db: DUP1
000044dc: PUSH1 0x20
000044de: MUL
000044df: PUSH1 0x20
000044e1: ADD
000044e2: PUSH1 0x40
000044e4: MLOAD
000044e5: SWAP1
000044e6: DUP2
000044e7: ADD
000044e8: PUSH1 0x40
000044ea: MSTORE
000044eb: DUP1
000044ec: SWAP3
000044ed: SWAP2
000044ee: SWAP1
000044ef: DUP2
000044f0: DUP2
000044f1: MSTORE
000044f2: PUSH1 0x20
000044f4: ADD
000044f5: DUP3
000044f6: DUP1
000044f7: SLOAD
000044f8: DUP1
000044f9: ISZERO
000044fa: PUSH2 0x4558
000044fd: JUMPI
000044fe: PUSH1 0x20
00004500: MUL
00004501: DUP3
00004502: ADD
00004503: SWAP2
00004504: SWAP1
00004505: PUSH1 0x00
00004507: MSTORE
00004508: PUSH1 0x20
0000450a: PUSH1 0x00
0000450c: KECCAK256
0000450d: SWAP1
0000450e: JUMPDEST
0000450f: DUP2
00004510: PUSH1 0x00
00004512: SWAP1
00004513: SLOAD
00004514: SWAP1
00004515: PUSH2 0x0100
00004518: EXP
00004519: SWAP1
0000451a: DIV
0000451b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004530: AND
00004531: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004546: AND
00004547: DUP2
00004548: MSTORE
00004549: PUSH1 0x20
0000454b: ADD
0000454c: SWAP1
0000454d: PUSH1 0x01
0000454f: ADD
00004550: SWAP1
00004551: DUP1
00004552: DUP4
00004553: GT
00004554: PUSH2 0x450e
00004557: JUMPI
00004558: JUMPDEST
00004559: POP
0000455a: POP
0000455b: POP
0000455c: POP
0000455d: POP
0000455e: SWAP1
0000455f: POP
00004560: PUSH1 0x00
00004562: PUSH1 0x01
00004564: SWAP1
00004565: POP
00004566: JUMPDEST
00004567: DUP2
00004568: MLOAD
00004569: DUP2
0000456a: LT
0000456b: ISZERO
0000456c: PUSH2 0x4696
0000456f: JUMPI
00004570: PUSH2 0x4676
00004573: DUP3
00004574: DUP3
00004575: DUP2
00004576: MLOAD
00004577: DUP2
00004578: LT
00004579: PUSH2 0x45ab
0000457c: JUMPI
0000457d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000459e: PUSH1 0x00
000045a0: MSTORE
000045a1: PUSH1 0x32
000045a3: PUSH1 0x04
000045a5: MSTORE
000045a6: PUSH1 0x24
000045a8: PUSH1 0x00
000045aa: REVERT
000045ab: JUMPDEST
000045ac: PUSH1 0x20
000045ae: MUL
000045af: PUSH1 0x20
000045b1: ADD
000045b2: ADD
000045b3: MLOAD
000045b4: DUP7
000045b5: PUSH1 0x0f
000045b7: PUSH1 0x00
000045b9: DUP7
000045ba: DUP7
000045bb: DUP2
000045bc: MLOAD
000045bd: DUP2
000045be: LT
000045bf: PUSH2 0x45f1
000045c2: JUMPI
000045c3: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000045e4: PUSH1 0x00
000045e6: MSTORE
000045e7: PUSH1 0x32
000045e9: PUSH1 0x04
000045eb: MSTORE
000045ec: PUSH1 0x24
000045ee: PUSH1 0x00
000045f0: REVERT
000045f1: JUMPDEST
000045f2: PUSH1 0x20
000045f4: MUL
000045f5: PUSH1 0x20
000045f7: ADD
000045f8: ADD
000045f9: MLOAD
000045fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000460f: AND
00004610: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004625: AND
00004626: DUP2
00004627: MSTORE
00004628: PUSH1 0x20
0000462a: ADD
0000462b: SWAP1
0000462c: DUP2
0000462d: MSTORE
0000462e: PUSH1 0x20
00004630: ADD
00004631: PUSH1 0x00
00004633: KECCAK256
00004634: PUSH1 0x00
00004636: DUP10
00004637: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000464c: AND
0000464d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004662: AND
00004663: DUP2
00004664: MSTORE
00004665: PUSH1 0x20
00004667: ADD
00004668: SWAP1
00004669: DUP2
0000466a: MSTORE
0000466b: PUSH1 0x20
0000466d: ADD
0000466e: PUSH1 0x00
00004670: KECCAK256
00004671: SLOAD
00004672: PUSH2 0x2ac2
00004675: JUMP
00004676: JUMPDEST
00004677: DUP4
00004678: PUSH2 0x4681
0000467b: SWAP2
0000467c: SWAP1
0000467d: PUSH2 0x4c55
00004680: JUMP
00004681: JUMPDEST
00004682: SWAP3
00004683: POP
00004684: DUP1
00004685: DUP1
00004686: PUSH2 0x468e
00004689: SWAP1
0000468a: PUSH2 0x4da6
0000468d: JUMP
0000468e: JUMPDEST
0000468f: SWAP2
00004690: POP
00004691: POP
00004692: PUSH2 0x4566
00004695: JUMP
00004696: JUMPDEST
00004697: POP
00004698: DUP2
00004699: SWAP3
0000469a: POP
0000469b: POP
0000469c: POP
0000469d: SWAP2
0000469e: SWAP1
0000469f: POP
000046a0: JUMP
000046a1: JUMPDEST
000046a2: PUSH1 0x00
000046a4: PUSH1 0x01
000046a6: PUSH1 0x00
000046a8: DUP4
000046a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000046be: AND
000046bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000046d4: AND
000046d5: DUP2
000046d6: MSTORE
000046d7: PUSH1 0x20
000046d9: ADD
000046da: SWAP1
000046db: DUP2
000046dc: MSTORE
000046dd: PUSH1 0x20
000046df: ADD
000046e0: PUSH1 0x00
000046e2: KECCAK256
000046e3: PUSH1 0x00
000046e5: SWAP1
000046e6: SLOAD
000046e7: SWAP1
000046e8: PUSH2 0x0100
000046eb: EXP
000046ec: SWAP1
000046ed: DIV
000046ee: PUSH1 0xff
000046f0: AND
000046f1: PUSH2 0x472f
000046f4: JUMPI
000046f5: PUSH1 0x40
000046f7: MLOAD
000046f8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00004719: DUP2
0000471a: MSTORE
0000471b: PUSH1 0x04
0000471d: ADD
0000471e: PUSH2 0x4726
00004721: SWAP1
00004722: PUSH2 0x4b89
00004725: JUMP
00004726: JUMPDEST
00004727: PUSH1 0x40
00004729: MLOAD
0000472a: DUP1
0000472b: SWAP2
0000472c: SUB
0000472d: SWAP1
0000472e: REVERT
0000472f: JUMPDEST
00004730: PUSH1 0x0a
00004732: PUSH1 0x00
00004734: DUP4
00004735: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000474a: AND
0000474b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004760: AND
00004761: DUP2
00004762: MSTORE
00004763: PUSH1 0x20
00004765: ADD
00004766: SWAP1
00004767: DUP2
00004768: MSTORE
00004769: PUSH1 0x20
0000476b: ADD
0000476c: PUSH1 0x00
0000476e: KECCAK256
0000476f: SLOAD
00004770: SWAP1
00004771: POP
00004772: SWAP2
00004773: SWAP1
00004774: POP
00004775: JUMP
00004776: JUMPDEST
00004777: DUP3
00004778: DUP1
00004779: SLOAD
0000477a: DUP3
0000477b: DUP3
0000477c: SSTORE
0000477d: SWAP1
0000477e: PUSH1 0x00
00004780: MSTORE
00004781: PUSH1 0x20
00004783: PUSH1 0x00
00004785: KECCAK256
00004786: SWAP1
00004787: DUP2
00004788: ADD
00004789: SWAP3
0000478a: DUP3
0000478b: ISZERO
0000478c: PUSH2 0x47ef
0000478f: JUMPI
00004790: SWAP2
00004791: PUSH1 0x20
00004793: MUL
00004794: DUP3
00004795: ADD
00004796: JUMPDEST
00004797: DUP3
00004798: DUP2
00004799: GT
0000479a: ISZERO
0000479b: PUSH2 0x47ee
0000479e: JUMPI
0000479f: DUP3
000047a0: MLOAD
000047a1: DUP3
000047a2: PUSH1 0x00
000047a4: PUSH2 0x0100
000047a7: EXP
000047a8: DUP2
000047a9: SLOAD
000047aa: DUP2
000047ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000047c0: MUL
000047c1: NOT
000047c2: AND
000047c3: SWAP1
000047c4: DUP4
000047c5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000047da: AND
000047db: MUL
000047dc: OR
000047dd: SWAP1
000047de: SSTORE
000047df: POP
000047e0: SWAP2
000047e1: PUSH1 0x20
000047e3: ADD
000047e4: SWAP2
000047e5: SWAP1
000047e6: PUSH1 0x01
000047e8: ADD
000047e9: SWAP1
000047ea: PUSH2 0x4796
000047ed: JUMP
000047ee: JUMPDEST
000047ef: JUMPDEST
000047f0: POP
000047f1: SWAP1
000047f2: POP
000047f3: PUSH2 0x47fc
000047f6: SWAP2
000047f7: SWAP1
000047f8: PUSH2 0x4800
000047fb: JUMP
000047fc: JUMPDEST
000047fd: POP
000047fe: SWAP1
000047ff: JUMP
00004800: JUMPDEST
00004801: JUMPDEST
00004802: DUP1
00004803: DUP3
00004804: GT
00004805: ISZERO
00004806: PUSH2 0x4819
00004809: JUMPI
0000480a: PUSH1 0x00
0000480c: DUP2
0000480d: PUSH1 0x00
0000480f: SWAP1
00004810: SSTORE
00004811: POP
00004812: PUSH1 0x01
00004814: ADD
00004815: PUSH2 0x4801
00004818: JUMP
00004819: JUMPDEST
0000481a: POP
0000481b: SWAP1
0000481c: JUMP
0000481d: JUMPDEST
0000481e: PUSH1 0x00
00004820: DUP2
00004821: CALLDATALOAD
00004822: SWAP1
00004823: POP
00004824: PUSH2 0x482c
00004827: DUP2
00004828: PUSH2 0x4f95
0000482b: JUMP
0000482c: JUMPDEST
0000482d: SWAP3
0000482e: SWAP2
0000482f: POP
00004830: POP
00004831: JUMP
00004832: JUMPDEST
00004833: PUSH1 0x00
00004835: DUP2
00004836: CALLDATALOAD
00004837: SWAP1
00004838: POP
00004839: PUSH2 0x4841
0000483c: DUP2
0000483d: PUSH2 0x4fac
00004840: JUMP
00004841: JUMPDEST
00004842: SWAP3
00004843: SWAP2
00004844: POP
00004845: POP
00004846: JUMP
00004847: JUMPDEST
00004848: PUSH1 0x00
0000484a: DUP2
0000484b: MLOAD
0000484c: SWAP1
0000484d: POP
0000484e: PUSH2 0x4856
00004851: DUP2
00004852: PUSH2 0x4fac
00004855: JUMP
00004856: JUMPDEST
00004857: SWAP3
00004858: SWAP2
00004859: POP
0000485a: POP
0000485b: JUMP
0000485c: JUMPDEST
0000485d: PUSH1 0x00
0000485f: PUSH1 0x20
00004861: DUP3
00004862: DUP5
00004863: SUB
00004864: SLT
00004865: ISZERO
00004866: PUSH2 0x486e
00004869: JUMPI
0000486a: PUSH1 0x00
0000486c: DUP1
0000486d: REVERT
0000486e: JUMPDEST
0000486f: PUSH1 0x00
00004871: PUSH2 0x487c
00004874: DUP5
00004875: DUP3
00004876: DUP6
00004877: ADD
00004878: PUSH2 0x481d
0000487b: JUMP
0000487c: JUMPDEST
0000487d: SWAP2
0000487e: POP
0000487f: POP
00004880: SWAP3
00004881: SWAP2
00004882: POP
00004883: POP
00004884: JUMP
00004885: JUMPDEST
00004886: PUSH1 0x00
00004888: DUP1
00004889: PUSH1 0x40
0000488b: DUP4
0000488c: DUP6
0000488d: SUB
0000488e: SLT
0000488f: ISZERO
00004890: PUSH2 0x4898
00004893: JUMPI
00004894: PUSH1 0x00
00004896: DUP1
00004897: REVERT
00004898: JUMPDEST
00004899: PUSH1 0x00
0000489b: PUSH2 0x48a6
0000489e: DUP6
0000489f: DUP3
000048a0: DUP7
000048a1: ADD
000048a2: PUSH2 0x481d
000048a5: JUMP
000048a6: JUMPDEST
000048a7: SWAP3
000048a8: POP
000048a9: POP
000048aa: PUSH1 0x20
000048ac: PUSH2 0x48b7
000048af: DUP6
000048b0: DUP3
000048b1: DUP7
000048b2: ADD
000048b3: PUSH2 0x481d
000048b6: JUMP
000048b7: JUMPDEST
000048b8: SWAP2
000048b9: POP
000048ba: POP
000048bb: SWAP3
000048bc: POP
000048bd: SWAP3
000048be: SWAP1
000048bf: POP
000048c0: JUMP
000048c1: JUMPDEST
000048c2: PUSH1 0x00
000048c4: DUP1
000048c5: PUSH1 0x40
000048c7: DUP4
000048c8: DUP6
000048c9: SUB
000048ca: SLT
000048cb: ISZERO
000048cc: PUSH2 0x48d4
000048cf: JUMPI
000048d0: PUSH1 0x00
000048d2: DUP1
000048d3: REVERT
000048d4: JUMPDEST
000048d5: PUSH1 0x00
000048d7: PUSH2 0x48e2
000048da: DUP6
000048db: DUP3
000048dc: DUP7
000048dd: ADD
000048de: PUSH2 0x481d
000048e1: JUMP
000048e2: JUMPDEST
000048e3: SWAP3
000048e4: POP
000048e5: POP
000048e6: PUSH1 0x20
000048e8: PUSH2 0x48f3
000048eb: DUP6
000048ec: DUP3
000048ed: DUP7
000048ee: ADD
000048ef: PUSH2 0x4832
000048f2: JUMP
000048f3: JUMPDEST
000048f4: SWAP2
000048f5: POP
000048f6: POP
000048f7: SWAP3
000048f8: POP
000048f9: SWAP3
000048fa: SWAP1
000048fb: POP
000048fc: JUMP
000048fd: JUMPDEST
000048fe: PUSH1 0x00
00004900: DUP1
00004901: PUSH1 0x00
00004903: DUP1
00004904: PUSH1 0x00
00004906: DUP1
00004907: PUSH1 0xc0
00004909: DUP8
0000490a: DUP10
0000490b: SUB
0000490c: SLT
0000490d: ISZERO
0000490e: PUSH2 0x4916
00004911: JUMPI
00004912: PUSH1 0x00
00004914: DUP1
00004915: REVERT
00004916: JUMPDEST
00004917: PUSH1 0x00
00004919: PUSH2 0x4924
0000491c: DUP10
0000491d: DUP3
0000491e: DUP11
0000491f: ADD
00004920: PUSH2 0x481d
00004923: JUMP
00004924: JUMPDEST
00004925: SWAP7
00004926: POP
00004927: POP
00004928: PUSH1 0x20
0000492a: PUSH2 0x4935
0000492d: DUP10
0000492e: DUP3
0000492f: DUP11
00004930: ADD
00004931: PUSH2 0x4832
00004934: JUMP
00004935: JUMPDEST
00004936: SWAP6
00004937: POP
00004938: POP
00004939: PUSH1 0x40
0000493b: PUSH2 0x4946
0000493e: DUP10
0000493f: DUP3
00004940: DUP11
00004941: ADD
00004942: PUSH2 0x481d
00004945: JUMP
00004946: JUMPDEST
00004947: SWAP5
00004948: POP
00004949: POP
0000494a: PUSH1 0x60
0000494c: PUSH2 0x4957
0000494f: DUP10
00004950: DUP3
00004951: DUP11
00004952: ADD
00004953: PUSH2 0x481d
00004956: JUMP
00004957: JUMPDEST
00004958: SWAP4
00004959: POP
0000495a: POP
0000495b: PUSH1 0x80
0000495d: PUSH2 0x4968
00004960: DUP10
00004961: DUP3
00004962: DUP11
00004963: ADD
00004964: PUSH2 0x4832
00004967: JUMP
00004968: JUMPDEST
00004969: SWAP3
0000496a: POP
0000496b: POP
0000496c: PUSH1 0xa0
0000496e: PUSH2 0x4979
00004971: DUP10
00004972: DUP3
00004973: DUP11
00004974: ADD
00004975: PUSH2 0x4832
00004978: JUMP
00004979: JUMPDEST
0000497a: SWAP2
0000497b: POP
0000497c: POP
0000497d: SWAP3
0000497e: SWAP6
0000497f: POP
00004980: SWAP3
00004981: SWAP6
00004982: POP
00004983: SWAP3
00004984: SWAP6
00004985: JUMP
00004986: JUMPDEST
00004987: PUSH1 0x00
00004989: PUSH1 0x20
0000498b: DUP3
0000498c: DUP5
0000498d: SUB
0000498e: SLT
0000498f: ISZERO
00004990: PUSH2 0x4998
00004993: JUMPI
00004994: PUSH1 0x00
00004996: DUP1
00004997: REVERT
00004998: JUMPDEST
00004999: PUSH1 0x00
0000499b: PUSH2 0x49a6
0000499e: DUP5
0000499f: DUP3
000049a0: DUP6
000049a1: ADD
000049a2: PUSH2 0x4832
000049a5: JUMP
000049a6: JUMPDEST
000049a7: SWAP2
000049a8: POP
000049a9: POP
000049aa: SWAP3
000049ab: SWAP2
000049ac: POP
000049ad: POP
000049ae: JUMP
000049af: JUMPDEST
000049b0: PUSH1 0x00
000049b2: PUSH1 0x20
000049b4: DUP3
000049b5: DUP5
000049b6: SUB
000049b7: SLT
000049b8: ISZERO
000049b9: PUSH2 0x49c1
000049bc: JUMPI
000049bd: PUSH1 0x00
000049bf: DUP1
000049c0: REVERT
000049c1: JUMPDEST
000049c2: PUSH1 0x00
000049c4: PUSH2 0x49cf
000049c7: DUP5
000049c8: DUP3
000049c9: DUP6
000049ca: ADD
000049cb: PUSH2 0x4847
000049ce: JUMP
000049cf: JUMPDEST
000049d0: SWAP2
000049d1: POP
000049d2: POP
000049d3: SWAP3
000049d4: SWAP2
000049d5: POP
000049d6: POP
000049d7: JUMP
000049d8: JUMPDEST
000049d9: PUSH2 0x49e1
000049dc: DUP2
000049dd: PUSH2 0x4d6a
000049e0: JUMP
000049e1: JUMPDEST
000049e2: DUP3
000049e3: MSTORE
000049e4: POP
000049e5: POP
000049e6: JUMP
000049e7: JUMPDEST
000049e8: PUSH1 0x00
000049ea: PUSH2 0x49f4
000049ed: PUSH1 0x0c
000049ef: DUP4
000049f0: PUSH2 0x4c44
000049f3: JUMP
000049f4: JUMPDEST
000049f5: SWAP2
000049f6: POP
000049f7: PUSH2 0x49ff
000049fa: DUP3
000049fb: PUSH2 0x4e4d
000049fe: JUMP
000049ff: JUMPDEST
00004a00: PUSH1 0x20
00004a02: DUP3
00004a03: ADD
00004a04: SWAP1
00004a05: POP
00004a06: SWAP2
00004a07: SWAP1
00004a08: POP
00004a09: JUMP
00004a0a: JUMPDEST
00004a0b: PUSH1 0x00
00004a0d: PUSH2 0x4a17
00004a10: PUSH1 0x0d
00004a12: DUP4
00004a13: PUSH2 0x4c44
00004a16: JUMP
00004a17: JUMPDEST
00004a18: SWAP2
00004a19: POP
00004a1a: PUSH2 0x4a22
00004a1d: DUP3
00004a1e: PUSH2 0x4e76
00004a21: JUMP
00004a22: JUMPDEST
00004a23: PUSH1 0x20
00004a25: DUP3
00004a26: ADD
00004a27: SWAP1
00004a28: POP
00004a29: SWAP2
00004a2a: SWAP1
00004a2b: POP
00004a2c: JUMP
00004a2d: JUMPDEST
00004a2e: PUSH1 0x00
00004a30: PUSH2 0x4a3a
00004a33: PUSH1 0x14
00004a35: DUP4
00004a36: PUSH2 0x4c44
00004a39: JUMP
00004a3a: JUMPDEST
00004a3b: SWAP2
00004a3c: POP
00004a3d: PUSH2 0x4a45
00004a40: DUP3
00004a41: PUSH2 0x4e9f
00004a44: JUMP
00004a45: JUMPDEST
00004a46: PUSH1 0x20
00004a48: DUP3
00004a49: ADD
00004a4a: SWAP1
00004a4b: POP
00004a4c: SWAP2
00004a4d: SWAP1
00004a4e: POP
00004a4f: JUMP
00004a50: JUMPDEST
00004a51: PUSH1 0x00
00004a53: PUSH2 0x4a5d
00004a56: PUSH1 0x0f
00004a58: DUP4
00004a59: PUSH2 0x4c44
00004a5c: JUMP
00004a5d: JUMPDEST
00004a5e: SWAP2
00004a5f: POP
00004a60: PUSH2 0x4a68
00004a63: DUP3
00004a64: PUSH2 0x4ec8
00004a67: JUMP
00004a68: JUMPDEST
00004a69: PUSH1 0x20
00004a6b: DUP3
00004a6c: ADD
00004a6d: SWAP1
00004a6e: POP
00004a6f: SWAP2
00004a70: SWAP1
00004a71: POP
00004a72: JUMP
00004a73: JUMPDEST
00004a74: PUSH1 0x00
00004a76: PUSH2 0x4a80
00004a79: PUSH1 0x15
00004a7b: DUP4
00004a7c: PUSH2 0x4c44
00004a7f: JUMP
00004a80: JUMPDEST
00004a81: SWAP2
00004a82: POP
00004a83: PUSH2 0x4a8b
00004a86: DUP3
00004a87: PUSH2 0x4ef1
00004a8a: JUMP
00004a8b: JUMPDEST
00004a8c: PUSH1 0x20
00004a8e: DUP3
00004a8f: ADD
00004a90: SWAP1
00004a91: POP
00004a92: SWAP2
00004a93: SWAP1
00004a94: POP
00004a95: JUMP
00004a96: JUMPDEST
00004a97: PUSH1 0x00
00004a99: PUSH2 0x4aa3
00004a9c: PUSH1 0x0e
00004a9e: DUP4
00004a9f: PUSH2 0x4c44
00004aa2: JUMP
00004aa3: JUMPDEST
00004aa4: SWAP2
00004aa5: POP
00004aa6: PUSH2 0x4aae
00004aa9: DUP3
00004aaa: PUSH2 0x4f1a
00004aad: JUMP
00004aae: JUMPDEST
00004aaf: PUSH1 0x20
00004ab1: DUP3
00004ab2: ADD
00004ab3: SWAP1
00004ab4: POP
00004ab5: SWAP2
00004ab6: SWAP1
00004ab7: POP
00004ab8: JUMP
00004ab9: JUMPDEST
00004aba: PUSH1 0x00
00004abc: PUSH2 0x4ac6
00004abf: PUSH1 0x20
00004ac1: DUP4
00004ac2: PUSH2 0x4c44
00004ac5: JUMP
00004ac6: JUMPDEST
00004ac7: SWAP2
00004ac8: POP
00004ac9: PUSH2 0x4ad1
00004acc: DUP3
00004acd: PUSH2 0x4f43
00004ad0: JUMP
00004ad1: JUMPDEST
00004ad2: PUSH1 0x20
00004ad4: DUP3
00004ad5: ADD
00004ad6: SWAP1
00004ad7: POP
00004ad8: SWAP2
00004ad9: SWAP1
00004ada: POP
00004adb: JUMP
00004adc: JUMPDEST
00004add: PUSH1 0x00
00004adf: PUSH2 0x4ae9
00004ae2: PUSH1 0x0c
00004ae4: DUP4
00004ae5: PUSH2 0x4c44
00004ae8: JUMP
00004ae9: JUMPDEST
00004aea: SWAP2
00004aeb: POP
00004aec: PUSH2 0x4af4
00004aef: DUP3
00004af0: PUSH2 0x4f6c
00004af3: JUMP
00004af4: JUMPDEST
00004af5: PUSH1 0x20
00004af7: DUP3
00004af8: ADD
00004af9: SWAP1
00004afa: POP
00004afb: SWAP2
00004afc: SWAP1
00004afd: POP
00004afe: JUMP
00004aff: JUMPDEST
00004b00: PUSH2 0x4b08
00004b03: DUP2
00004b04: PUSH2 0x4d9c
00004b07: JUMP
00004b08: JUMPDEST
00004b09: DUP3
00004b0a: MSTORE
00004b0b: POP
00004b0c: POP
00004b0d: JUMP
00004b0e: JUMPDEST
00004b0f: PUSH1 0x00
00004b11: PUSH1 0x20
00004b13: DUP3
00004b14: ADD
00004b15: SWAP1
00004b16: POP
00004b17: PUSH2 0x4b23
00004b1a: PUSH1 0x00
00004b1c: DUP4
00004b1d: ADD
00004b1e: DUP5
00004b1f: PUSH2 0x49d8
00004b22: JUMP
00004b23: JUMPDEST
00004b24: SWAP3
00004b25: SWAP2
00004b26: POP
00004b27: POP
00004b28: JUMP
00004b29: JUMPDEST
00004b2a: PUSH1 0x00
00004b2c: PUSH1 0x20
00004b2e: DUP3
00004b2f: ADD
00004b30: SWAP1
00004b31: POP
00004b32: DUP2
00004b33: DUP2
00004b34: SUB
00004b35: PUSH1 0x00
00004b37: DUP4
00004b38: ADD
00004b39: MSTORE
00004b3a: PUSH2 0x4b42
00004b3d: DUP2
00004b3e: PUSH2 0x49e7
00004b41: JUMP
00004b42: JUMPDEST
00004b43: SWAP1
00004b44: POP
00004b45: SWAP2
00004b46: SWAP1
00004b47: POP
00004b48: JUMP
00004b49: JUMPDEST
00004b4a: PUSH1 0x00
00004b4c: PUSH1 0x20
00004b4e: DUP3
00004b4f: ADD
00004b50: SWAP1
00004b51: POP
00004b52: DUP2
00004b53: DUP2
00004b54: SUB
00004b55: PUSH1 0x00
00004b57: DUP4
00004b58: ADD
00004b59: MSTORE
00004b5a: PUSH2 0x4b62
00004b5d: DUP2
00004b5e: PUSH2 0x4a0a
00004b61: JUMP
00004b62: JUMPDEST
00004b63: SWAP1
00004b64: POP
00004b65: SWAP2
00004b66: SWAP1
00004b67: POP
00004b68: JUMP
00004b69: JUMPDEST
00004b6a: PUSH1 0x00
00004b6c: PUSH1 0x20
00004b6e: DUP3
00004b6f: ADD
00004b70: SWAP1
00004b71: POP
00004b72: DUP2
00004b73: DUP2
00004b74: SUB
00004b75: PUSH1 0x00
00004b77: DUP4
00004b78: ADD
00004b79: MSTORE
00004b7a: PUSH2 0x4b82
00004b7d: DUP2
00004b7e: PUSH2 0x4a2d
00004b81: JUMP
00004b82: JUMPDEST
00004b83: SWAP1
00004b84: POP
00004b85: SWAP2
00004b86: SWAP1
00004b87: POP
00004b88: JUMP
00004b89: JUMPDEST
00004b8a: PUSH1 0x00
00004b8c: PUSH1 0x20
00004b8e: DUP3
00004b8f: ADD
00004b90: SWAP1
00004b91: POP
00004b92: DUP2
00004b93: DUP2
00004b94: SUB
00004b95: PUSH1 0x00
00004b97: DUP4
00004b98: ADD
00004b99: MSTORE
00004b9a: PUSH2 0x4ba2
00004b9d: DUP2
00004b9e: PUSH2 0x4a50
00004ba1: JUMP
00004ba2: JUMPDEST
00004ba3: SWAP1
00004ba4: POP
00004ba5: SWAP2
00004ba6: SWAP1
00004ba7: POP
00004ba8: JUMP
00004ba9: JUMPDEST
00004baa: PUSH1 0x00
00004bac: PUSH1 0x20
00004bae: DUP3
00004baf: ADD
00004bb0: SWAP1
00004bb1: POP
00004bb2: DUP2
00004bb3: DUP2
00004bb4: SUB
00004bb5: PUSH1 0x00
00004bb7: DUP4
00004bb8: ADD
00004bb9: MSTORE
00004bba: PUSH2 0x4bc2
00004bbd: DUP2
00004bbe: PUSH2 0x4a73
00004bc1: JUMP
00004bc2: JUMPDEST
00004bc3: SWAP1
00004bc4: POP
00004bc5: SWAP2
00004bc6: SWAP1
00004bc7: POP
00004bc8: JUMP
00004bc9: JUMPDEST
00004bca: PUSH1 0x00
00004bcc: PUSH1 0x20
00004bce: DUP3
00004bcf: ADD
00004bd0: SWAP1
00004bd1: POP
00004bd2: DUP2
00004bd3: DUP2
00004bd4: SUB
00004bd5: PUSH1 0x00
00004bd7: DUP4
00004bd8: ADD
00004bd9: MSTORE
00004bda: PUSH2 0x4be2
00004bdd: DUP2
00004bde: PUSH2 0x4a96
00004be1: JUMP
00004be2: JUMPDEST
00004be3: SWAP1
00004be4: POP
00004be5: SWAP2
00004be6: SWAP1
00004be7: POP
00004be8: JUMP
00004be9: JUMPDEST
00004bea: PUSH1 0x00
00004bec: PUSH1 0x20
00004bee: DUP3
00004bef: ADD
00004bf0: SWAP1
00004bf1: POP
00004bf2: DUP2
00004bf3: DUP2
00004bf4: SUB
00004bf5: PUSH1 0x00
00004bf7: DUP4
00004bf8: ADD
00004bf9: MSTORE
00004bfa: PUSH2 0x4c02
00004bfd: DUP2
00004bfe: PUSH2 0x4ab9
00004c01: JUMP
00004c02: JUMPDEST
00004c03: SWAP1
00004c04: POP
00004c05: SWAP2
00004c06: SWAP1
00004c07: POP
00004c08: JUMP
00004c09: JUMPDEST
00004c0a: PUSH1 0x00
00004c0c: PUSH1 0x20
00004c0e: DUP3
00004c0f: ADD
00004c10: SWAP1
00004c11: POP
00004c12: DUP2
00004c13: DUP2
00004c14: SUB
00004c15: PUSH1 0x00
00004c17: DUP4
00004c18: ADD
00004c19: MSTORE
00004c1a: PUSH2 0x4c22
00004c1d: DUP2
00004c1e: PUSH2 0x4adc
00004c21: JUMP
00004c22: JUMPDEST
00004c23: SWAP1
00004c24: POP
00004c25: SWAP2
00004c26: SWAP1
00004c27: POP
00004c28: JUMP
00004c29: JUMPDEST
00004c2a: PUSH1 0x00
00004c2c: PUSH1 0x20
00004c2e: DUP3
00004c2f: ADD
00004c30: SWAP1
00004c31: POP
00004c32: PUSH2 0x4c3e
00004c35: PUSH1 0x00
00004c37: DUP4
00004c38: ADD
00004c39: DUP5
00004c3a: PUSH2 0x4aff
00004c3d: JUMP
00004c3e: JUMPDEST
00004c3f: SWAP3
00004c40: SWAP2
00004c41: POP
00004c42: POP
00004c43: JUMP
00004c44: JUMPDEST
00004c45: PUSH1 0x00
00004c47: DUP3
00004c48: DUP3
00004c49: MSTORE
00004c4a: PUSH1 0x20
00004c4c: DUP3
00004c4d: ADD
00004c4e: SWAP1
00004c4f: POP
00004c50: SWAP3
00004c51: SWAP2
00004c52: POP
00004c53: POP
00004c54: JUMP
00004c55: JUMPDEST
00004c56: PUSH1 0x00
00004c58: PUSH2 0x4c60
00004c5b: DUP3
00004c5c: PUSH2 0x4d9c
00004c5f: JUMP
00004c60: JUMPDEST
00004c61: SWAP2
00004c62: POP
00004c63: PUSH2 0x4c6b
00004c66: DUP4
00004c67: PUSH2 0x4d9c
00004c6a: JUMP
00004c6b: JUMPDEST
00004c6c: SWAP3
00004c6d: POP
00004c6e: DUP3
00004c6f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00004c90: SUB
00004c91: DUP3
00004c92: GT
00004c93: ISZERO
00004c94: PUSH2 0x4ca0
00004c97: JUMPI
00004c98: PUSH2 0x4c9f
00004c9b: PUSH2 0x4def
00004c9e: JUMP
00004c9f: JUMPDEST
00004ca0: JUMPDEST
00004ca1: DUP3
00004ca2: DUP3
00004ca3: ADD
00004ca4: SWAP1
00004ca5: POP
00004ca6: SWAP3
00004ca7: SWAP2
00004ca8: POP
00004ca9: POP
00004caa: JUMP
00004cab: JUMPDEST
00004cac: PUSH1 0x00
00004cae: PUSH2 0x4cb6
00004cb1: DUP3
00004cb2: PUSH2 0x4d9c
00004cb5: JUMP
00004cb6: JUMPDEST
00004cb7: SWAP2
00004cb8: POP
00004cb9: PUSH2 0x4cc1
00004cbc: DUP4
00004cbd: PUSH2 0x4d9c
00004cc0: JUMP
00004cc1: JUMPDEST
00004cc2: SWAP3
00004cc3: POP
00004cc4: DUP3
00004cc5: PUSH2 0x4cd1
00004cc8: JUMPI
00004cc9: PUSH2 0x4cd0
00004ccc: PUSH2 0x4e1e
00004ccf: JUMP
00004cd0: JUMPDEST
00004cd1: JUMPDEST
00004cd2: DUP3
00004cd3: DUP3
00004cd4: DIV
00004cd5: SWAP1
00004cd6: POP
00004cd7: SWAP3
00004cd8: SWAP2
00004cd9: POP
00004cda: POP
00004cdb: JUMP
00004cdc: JUMPDEST
00004cdd: PUSH1 0x00
00004cdf: PUSH2 0x4ce7
00004ce2: DUP3
00004ce3: PUSH2 0x4d9c
00004ce6: JUMP
00004ce7: JUMPDEST
00004ce8: SWAP2
00004ce9: POP
00004cea: PUSH2 0x4cf2
00004ced: DUP4
00004cee: PUSH2 0x4d9c
00004cf1: JUMP
00004cf2: JUMPDEST
00004cf3: SWAP3
00004cf4: POP
00004cf5: DUP2
00004cf6: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00004d17: DIV
00004d18: DUP4
00004d19: GT
00004d1a: DUP3
00004d1b: ISZERO
00004d1c: ISZERO
00004d1d: AND
00004d1e: ISZERO
00004d1f: PUSH2 0x4d2b
00004d22: JUMPI
00004d23: PUSH2 0x4d2a
00004d26: PUSH2 0x4def
00004d29: JUMP
00004d2a: JUMPDEST
00004d2b: JUMPDEST
00004d2c: DUP3
00004d2d: DUP3
00004d2e: MUL
00004d2f: SWAP1
00004d30: POP
00004d31: SWAP3
00004d32: SWAP2
00004d33: POP
00004d34: POP
00004d35: JUMP
00004d36: JUMPDEST
00004d37: PUSH1 0x00
00004d39: PUSH2 0x4d41
00004d3c: DUP3
00004d3d: PUSH2 0x4d9c
00004d40: JUMP
00004d41: JUMPDEST
00004d42: SWAP2
00004d43: POP
00004d44: PUSH2 0x4d4c
00004d47: DUP4
00004d48: PUSH2 0x4d9c
00004d4b: JUMP
00004d4c: JUMPDEST
00004d4d: SWAP3
00004d4e: POP
00004d4f: DUP3
00004d50: DUP3
00004d51: LT
00004d52: ISZERO
00004d53: PUSH2 0x4d5f
00004d56: JUMPI
00004d57: PUSH2 0x4d5e
00004d5a: PUSH2 0x4def
00004d5d: JUMP
00004d5e: JUMPDEST
00004d5f: JUMPDEST
00004d60: DUP3
00004d61: DUP3
00004d62: SUB
00004d63: SWAP1
00004d64: POP
00004d65: SWAP3
00004d66: SWAP2
00004d67: POP
00004d68: POP
00004d69: JUMP
00004d6a: JUMPDEST
00004d6b: PUSH1 0x00
00004d6d: PUSH2 0x4d75
00004d70: DUP3
00004d71: PUSH2 0x4d7c
00004d74: JUMP
00004d75: JUMPDEST
00004d76: SWAP1
00004d77: POP
00004d78: SWAP2
00004d79: SWAP1
00004d7a: POP
00004d7b: JUMP
00004d7c: JUMPDEST
00004d7d: PUSH1 0x00
00004d7f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00004d94: DUP3
00004d95: AND
00004d96: SWAP1
00004d97: POP
00004d98: SWAP2
00004d99: SWAP1
00004d9a: POP
00004d9b: JUMP
00004d9c: JUMPDEST
00004d9d: PUSH1 0x00
00004d9f: DUP2
00004da0: SWAP1
00004da1: POP
00004da2: SWAP2
00004da3: SWAP1
00004da4: POP
00004da5: JUMP
00004da6: JUMPDEST
00004da7: PUSH1 0x00
00004da9: PUSH2 0x4db1
00004dac: DUP3
00004dad: PUSH2 0x4d9c
00004db0: JUMP
00004db1: JUMPDEST
00004db2: SWAP2
00004db3: POP
00004db4: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00004dd5: DUP3
00004dd6: EQ
00004dd7: ISZERO
00004dd8: PUSH2 0x4de4
00004ddb: JUMPI
00004ddc: PUSH2 0x4de3
00004ddf: PUSH2 0x4def
00004de2: JUMP
00004de3: JUMPDEST
00004de4: JUMPDEST
00004de5: PUSH1 0x01
00004de7: DUP3
00004de8: ADD
00004de9: SWAP1
00004dea: POP
00004deb: SWAP2
00004dec: SWAP1
00004ded: POP
00004dee: JUMP
00004def: JUMPDEST
00004df0: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00004e11: PUSH1 0x00
00004e13: MSTORE
00004e14: PUSH1 0x11
00004e16: PUSH1 0x04
00004e18: MSTORE
00004e19: PUSH1 0x24
00004e1b: PUSH1 0x00
00004e1d: REVERT
00004e1e: JUMPDEST
00004e1f: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00004e40: PUSH1 0x00
00004e42: MSTORE
00004e43: PUSH1 0x12
00004e45: PUSH1 0x04
00004e47: MSTORE
00004e48: PUSH1 0x24
00004e4a: PUSH1 0x00
00004e4c: REVERT
00004e4d: JUMPDEST
00004e4e: PUSH32 0x556e617574686f72697a65640000000000000000000000000000000000000000
00004e6f: PUSH1 0x00
00004e71: DUP3
00004e72: ADD
00004e73: MSTORE
00004e74: POP
00004e75: JUMP
00004e76: JUMPDEST
00004e77: PUSH32 0x556e696e697469616c697a656400000000000000000000000000000000000000
00004e98: PUSH1 0x00
00004e9a: DUP3
00004e9b: ADD
00004e9c: MSTORE
00004e9d: POP
00004e9e: JUMP
00004e9f: JUMPDEST
00004ea0: PUSH32 0x416c726561647920696e697469616c697a65642e000000000000000000000000
00004ec1: PUSH1 0x00
00004ec3: DUP3
00004ec4: ADD
00004ec5: MSTORE
00004ec6: POP
00004ec7: JUMP
00004ec8: JUMPDEST
00004ec9: PUSH32 0x4e6f7420696e697469616c697a65640000000000000000000000000000000000
00004eea: PUSH1 0x00
00004eec: DUP3
00004eed: ADD
00004eee: MSTORE
00004eef: POP
00004ef0: JUMP
00004ef1: JUMPDEST
00004ef2: PUSH32 0x496e73756666696369656e742062616c616e63652e0000000000000000000000
00004f13: PUSH1 0x00
00004f15: DUP3
00004f16: ADD
00004f17: MSTORE
00004f18: POP
00004f19: JUMP
00004f1a: JUMPDEST
00004f1b: PUSH32 0x496e76616c696420686f6c646572000000000000000000000000000000000000
00004f3c: PUSH1 0x00
00004f3e: DUP3
00004f3f: ADD
00004f40: MSTORE
00004f41: POP
00004f42: JUMP
00004f43: JUMPDEST
00004f44: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00004f65: PUSH1 0x00
00004f67: DUP3
00004f68: ADD
00004f69: MSTORE
00004f6a: POP
00004f6b: JUMP
00004f6c: JUMPDEST
00004f6d: PUSH32 0x4e6f74206120686f6c6465720000000000000000000000000000000000000000
00004f8e: PUSH1 0x00
00004f90: DUP3
00004f91: ADD
00004f92: MSTORE
00004f93: POP
00004f94: JUMP
00004f95: JUMPDEST
00004f96: PUSH2 0x4f9e
00004f99: DUP2
00004f9a: PUSH2 0x4d6a
00004f9d: JUMP
00004f9e: JUMPDEST
00004f9f: DUP2
00004fa0: EQ
00004fa1: PUSH2 0x4fa9
00004fa4: JUMPI
00004fa5: PUSH1 0x00
00004fa7: DUP1
00004fa8: REVERT
00004fa9: JUMPDEST
00004faa: POP
00004fab: JUMP
00004fac: JUMPDEST
00004fad: PUSH2 0x4fb5
00004fb0: DUP2
00004fb1: PUSH2 0x4d9c
00004fb4: JUMP
00004fb5: JUMPDEST
00004fb6: DUP2
00004fb7: EQ
00004fb8: PUSH2 0x4fc0
00004fbb: JUMPI
00004fbc: PUSH1 0x00
00004fbe: DUP1
00004fbf: REVERT
00004fc0: JUMPDEST
00004fc1: POP
00004fc2: JUMP
00004fc3: INVALID
00004fc4: LOG2
00004fc5: PUSH5 0x6970667358
00004fcb: UNKNOWN(0x22)
00004fcc: SLT
00004fcd: KECCAK256
00004fce: UNKNOWN(0xCF)
00004fcf: EQ
00004fd0: PUSH22 0xb35fa40c3db925a9fad616ee7ff3f1f91dfdfe2ff46f
00004fe7: MSTORE
00004fe8: DUP14
00004fe9: ADDMOD
00004fea: UNKNOWN(0xDA)
00004feb: UNKNOWN(0xCB)
00004fec: AND
00004fed: CALLDATASIZE
00004fee: PUSH5 0x736f6c6343
00004ff4: STOP
00004ff5: ADDMOD
00004ff6: DIV
00004ff7: STOP
00004ff8: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x9da3c0b30f57df10bd63ccf40a0a84f751bbb20861509dbb83c5f0d484841011
call_targets: 0x574fc478bc45ce144105fa44d98b4b2e4bd442cb
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x9da3c0b30f57df10bd63ccf40a0a84f751bbb20861509dbb83c5f0d484841011",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x574fc478bc45ce144105fa44d98b4b2e4bd442cb"
    ],
    "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": "0xd95d5fe9",
            "selector": "0xd95d5fe9",
            "calldata_variants": [
                "0xd95d5fe9",
                "0xd95d5fe90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf215f535",
            "selector": "0xf215f535",
            "calldata_variants": [
                "0xf215f535",
                "0xf215f5350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf37c4bce",
            "selector": "0xf37c4bce",
            "calldata_variants": [
                "0xf37c4bce",
                "0xf37c4bce0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf80f5dd5",
            "selector": "0xf80f5dd5",
            "calldata_variants": [
                "0xf80f5dd5",
                "0xf80f5dd50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbf0a196d",
            "selector": "0xbf0a196d",
            "calldata_variants": [
                "0xbf0a196d",
                "0xbf0a196d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4358465",
            "selector": "0xc4358465",
            "calldata_variants": [
                "0xc4358465",
                "0xc43584650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4a5f67f",
            "selector": "0xc4a5f67f",
            "calldata_variants": [
                "0xc4a5f67f",
                "0xc4a5f67f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 15014,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [
        {
            "pc": 1048,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1135,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9207,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9294,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10408,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10495,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10681,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10768,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x9da3c0b30f57df10bd63ccf40a0a84f751bbb20861509dbb83c5f0d484841011
call_targets: 0x574fc478bc45ce144105fa44d98b4b2e4bd442cb
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x9da3c0b30f57df10bd63ccf40a0a84f751bbb20861509dbb83c5f0d484841011",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x574fc478bc45ce144105fa44d98b4b2e4bd442cb"
    ],
    "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": "0xd95d5fe9",
            "selector": "0xd95d5fe9",
            "calldata_variants": [
                "0xd95d5fe9",
                "0xd95d5fe90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf215f535",
            "selector": "0xf215f535",
            "calldata_variants": [
                "0xf215f535",
                "0xf215f5350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf37c4bce",
            "selector": "0xf37c4bce",
            "calldata_variants": [
                "0xf37c4bce",
                "0xf37c4bce0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf80f5dd5",
            "selector": "0xf80f5dd5",
            "calldata_variants": [
                "0xf80f5dd5",
                "0xf80f5dd50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbf0a196d",
            "selector": "0xbf0a196d",
            "calldata_variants": [
                "0xbf0a196d",
                "0xbf0a196d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4358465",
            "selector": "0xc4358465",
            "calldata_variants": [
                "0xc4358465",
                "0xc43584650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4a5f67f",
            "selector": "0xc4a5f67f",
            "calldata_variants": [
                "0xc4a5f67f",
                "0xc4a5f67f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 15014,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": [
        {
            "pc": 1048,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 1135,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9207,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9294,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10408,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10495,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10681,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10768,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}