6ff90cd5-b2c0-415e-a1e0-33b8a1e58361
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_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 |
viewtrace_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"
}
]
}
|