5dbbf612-9fb9-4a8b-aea8-c0e0b8265b5b
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 |
|---|---|---|---|---|
| 31752 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 95935 | artifact.fetch | complete | 1 / 3 | 2 weeks ago |
| 95936 | tool.cast_disasm | complete | 1 / 3 | 2 weeks ago |
| 95937 | analysis.bundle | complete | 1 / 3 | 2 weeks ago |
| 95938 | capability.graph | complete | 1 / 3 | 2 weeks ago |
| 95939 | detector.run | complete | 1 / 3 | 2 weeks ago |
| 95940 | validation.fork | complete | 1 / 3 | 2 weeks ago |
No slither job recorded yet.
[codex:341867] OpenAI Codex v0.77.0 (research preview)
[codex:341867] --------
[codex:341867] workdir: /tmp/codex-multi-gnof1eax
[codex:341867] model: gpt-5.2-codex
[codex:341867] provider: openai
[codex:341867] approval: never
[codex:341867] sandbox: read-only
[codex:341867] reasoning effort: xhigh
[codex:341867] reasoning summaries: auto
[codex:341867] session id: 019b8fd6-a5b2-7c70-8d77-248009a71dc1
[codex:341867] --------
[codex:341867] user
[codex:341867] 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:341867]
[codex:341867] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:341867]
[codex:341867] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:341867] - Gas inefficiency, code quality, or best practices
[codex:341867] - Theoretical vulnerabilities without a clear extraction path
[codex:341867] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:341867] - Issues requiring social engineering or off-chain coordination
[codex:341867]
[codex:341867] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:341867] - CALL/DELEGATECALL with controllable destination or calldata
[codex:341867] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:341867] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:341867] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:341867] - External calls before state updates (reentrancy)
[codex:341867] - SELFDESTRUCT with controllable beneficiary
[codex:341867] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:341867]
[codex:341867] For each finding, you MUST explain:
[codex:341867] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:341867] 2. The concrete sequence of transactions to extract value
[codex:341867] 3. Why you believe this is exploitable (not just suspicious)
[codex:341867]
[codex:341867] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:341867] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:341867]
[codex:341867] Output MUST be valid JSON matching the provided schema.
[codex:341867] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:341867] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:341867] mcp startup: no servers
[codex:341867]
[codex:341867] thinking
[codex:341867] **Planning to read BYTECODE_BUNDLE.txt**
[codex:341867] exec
[codex:341867] /bin/bash -lc ls in /tmp/codex-multi-gnof1eax succeeded in 6ms:
[codex:341867] BYTECODE_BUNDLE.txt
[codex:341867] codex-output-schema.json
[codex:341867]
[codex:341867] thinking
[codex:341867] **Reading file**
[codex:341867] exec
[codex:341867] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-gnof1eax succeeded in 5ms:
[codex:341867] Runtime bytecode bundle for best-effort auditing.
[codex:341867] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:341867]
[codex:341867] FILE: runtime_bytecode.hex
[codex:341867] 0x6080604052600436106101ab576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062dc41e6146101b057806303a896a1146101ed57806304fdc5621461022a5780630525ed66146102675780630992b119146102a457806309cc1440146102e15780631920427b1461031e5780632762dd8c1461035c57806331da41651461039957806344ee8753146103d6578063488571521461040157806352ddbfc11461042c578063583b7676146104695780635cb9a150146104945780635e929e6a146104d15780635f0280ba1461050e578063715018a61461054b578063741bef1a146105625780637ae2b5c71461058d5780638da5cb5b146105ca578063977a5e64146105f557806399114d8414610632578063a354ca441461066f578063abf410e5146106ac578063b2016bd4146106d7578063b281932214610702578063b54790d81461073f578063c99125941461076a578063db2f90ae146107a7578063dbc162de146107d0578063ee733bb7146107fb578063f08499a114610838578063f2494eaf14610863578063f2fde38b146108a0575b600080fd5b3480156101bc57600080fd5b506101d760048036036101d29190810190612da3565b6108c9565b6040516101e4919061321c565b60405180910390f35b3480156101f957600080fd5b50610214600480360361020f9190810190612da3565b6108e5565b60405161022191906132fe565b60405180910390f35b34801561023657600080fd5b50610251600480360361024c9190810190612da3565b61090a565b60405161025e919061321c565b60405180910390f35b34801561027357600080fd5b5061028e60048036036102899190810190612da3565b6109d7565b60405161029b91906132fe565b60405180910390f35b3480156102b057600080fd5b506102cb60048036036102c69190810190612fc4565b6109ef565b6040516102d891906132fe565b60405180910390f35b3480156102ed57600080fd5b5061030860048036036103039190810190612da3565b610a21565b604051610315919061321c565b60405180910390f35b34801561032a57600080fd5b5061034560048036036103409190810190612da3565b610a34565b604051610353929190613319565b60405180910390f35b34801561036857600080fd5b50610383600480360361037e9190810190612da3565b610a78565b60405161039091906132fe565b60405180910390f35b3480156103a557600080fd5b506103c060048036036103bb9190810190612da3565b610c0b565b6040516103cd919061321c565b60405180910390f35b3480156103e257600080fd5b506103eb610c2d565b6040516103f891906132fe565b60405180910390f35b34801561040d57600080fd5b50610416610c32565b60405161042391906132fe565b60405180910390f35b34801561043857600080fd5b50610453600480360361044e9190810190612fc4565b610c37565b60405161046091906132fe565b60405180910390f35b34801561047557600080fd5b5061047e610c69565b60405161048b91906132fe565b60405180910390f35b3480156104a057600080fd5b506104bb60048036036104b69190810190612f5f565b610c6f565b6040516104c891906132fe565b60405180910390f35b3480156104dd57600080fd5b506104f860048036036104f39190810190612da3565b610cb4565b60405161050591906132fe565b60405180910390f35b34801561051a57600080fd5b5061053560048036036105309190810190612e31565b610cca565b604051610542919061321c565b60405180910390f35b34801561055757600080fd5b50610560610f0e565b005b34801561056e57600080fd5b50610577611013565b6040516105849190613288565b60405180910390f35b34801561059957600080fd5b506105b460048036036105af9190810190612fc4565b611039565b6040516105c191906132fe565b60405180910390f35b3480156105d657600080fd5b506105df611052565b6040516105ec9190613178565b60405180910390f35b34801561060157600080fd5b5061061c60048036036106179190810190612df5565b611078565b604051610629919061321c565b60405180910390f35b34801561063e57600080fd5b5061065960048036036106549190810190612ea8565b6111d1565b60405161066691906132fe565b60405180910390f35b34801561067b57600080fd5b5061069660048036036106919190810190612da3565b61137c565b6040516106a391906132e3565b60405180910390f35b3480156106b857600080fd5b506106c1611525565b6040516106ce9190613252565b60405180910390f35b3480156106e357600080fd5b506106ec61154a565b6040516106f9919061326d565b60405180910390f35b34801561070e57600080fd5b5061072960048036036107249190810190612da3565b611570565b604051610736919061321c565b60405180910390f35b34801561074b57600080fd5b5061075461158d565b60405161076191906132fe565b60405180910390f35b34801561077657600080fd5b50610791600480360361078c9190810190612da3565b611593565b60405161079e91906132fe565b60405180910390f35b3480156107b357600080fd5b506107ce60048036036107c99190810190612ea8565b61175d565b005b3480156107dc57600080fd5b506107e56117ed565b6040516107f2919061326d565b60405180910390f35b34801561080757600080fd5b50610822600480360361081d9190810190612da3565b611813565b60405161082f919061321c565b60405180910390f35b34801561084457600080fd5b5061084d61188a565b60405161085a91906132fe565b60405180910390f35b34801561086f57600080fd5b5061088a60048036036108859190810190612da3565b611892565b60405161089791906132fe565b60405180910390f35b3480156108ac57600080fd5b506108c760048036036108c29190810190612d28565b6118d7565b005b60006108d482611593565b6108dd83610cb4565b109050919050565b6000600860008360001916600019168152602001908152602001600020549050919050565b6000610914612baf565b61091d8361193f565b90506109298382611b17565b151561093857600091506109d1565b61094c833383600001518460200151611baf565b151561095757600080fd5b610965838260200151611d0e565b151561097057600080fd5b61097983611f4a565b151561098457600080fd5b82600019167f6c55695f76744f2886f83cccde28ea951d8a6f689fe34413db04416110af850f8260000151836020015184604001516040516109c893929190613342565b60405180910390a25b50919050565b60086020528060005260406000206000915090505481565b6000610a1962015180610a0b858561200990919063ffffffff16565b61202290919063ffffffff16565b905092915050565b6000610a2c82611813565b159050919050565b60066020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b6000610a82612bd1565b6000610a8d84612038565b91506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f866f736040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b4c9190810190612f0d565b73ffffffffffffffffffffffffffffffffffffffff1663d69dbf63856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610ba09190613237565b602060405180830381600087803b158015610bba57600080fd5b505af1158015610bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bf29190810190612f9b565b9050610c02818360000151610c37565b92505050919050565b6000610c16826108c9565b80610c265750610c2582611570565b5b9050919050565b601281565b600281565b6000610c61610c5262015180846121b890919063ffffffff16565b846121f090919063ffffffff16565b905092915050565b60025481565b6000610cac610c896004548461220c90919063ffffffff16565b610c9e6004548661220c90919063ffffffff16565b61200990919063ffffffff16565b905092915050565b6000610cbf82612038565b602001519050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fa9d0566040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610d5257600080fd5b505af1158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d8a9190810190612f36565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df0906132a3565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515610e595760009150610f04565b610e8784600860008a60001916600019168152602001908152602001600020546121f090919063ffffffff16565b60086000896000191660001916815260200190815260200160002081905550610eb887610eb389610a78565b6111d1565b9050806008600089600019166000191681526020019081526020016000205410158015610eea5750610ee987611813565b5b15610eff57610ef887611f4a565b9150610f04565b600191505b5095945050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f6a57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000818310611048578161104a565b825b905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611082612bd1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663079dd4b76040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061113f9190810190612ee4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a5906132c3565b60405180910390fd5b6111b784612038565b90506111c884826060015185612254565b91505092915050565b60006111db612bd1565b60006111e685612038565b91506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f866f736040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561126d57600080fd5b505af1158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112a59190810190612f0d565b73ffffffffffffffffffffffffffffffffffffffff1663d69dbf63866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016112f99190613237565b602060405180830381600087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134b9190810190612f9b565b9050816000015161135c82866109ef565b10151561136f5781604001519250611374565b600092505b505092915050565b611384612bfa565b6000806000611391612bfa565b600061139b612bfa565b6113a3612bfa565b60006113ad612bfa565b600254600a0a9850600454600a0a9750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561144357600080fd5b505af1158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061147b9190810190612dcc565b60019004965060408051908101604052808881526020016012600a0a81525095506114a58b611892565b945060408051908101604052808681526020018a81525093506114d186856123e590919063ffffffff16565b9250600660008c6000191660001916815260200190815260200160002060000154915060408051908101604052808381526020018981525090506115158184612433565b9950505050505050505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061157b826108e5565b61158583426111d1565b119050919050565b60045481565b6000806000806115a1612bfa565b60006115ab612bfa565b6115b3612bfa565b60006115bd612bfa565b6115c5612bfa565b600254600a0a9950600454600a0a9850600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116939190810190612dcc565b60019004975060408051908101604052808981526020016012600a0a81525096506116bd8c611892565b955060408051908101604052808781526020018b81525094506116e987866123e590919063ffffffff16565b9350600660008d6000191660001916815260200190815260200160002060000154925060408051908101604052808481526020018a8152509150611736828561249490919063ffffffff16565b905061174c60028261220c90919063ffffffff16565b9a5050505050505050505050919050565b600080339150309050611793600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683856124e2565b506117c583600660008760001916600019168152602001908152602001600020600001546121f090919063ffffffff16565b6006600086600019166000191681526020019081526020016000206000018190555050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff1660066000846000191660001916815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6012600a0a81565b6000806000806118a185610a78565b92506118ad85846111d1565b91506118b8856108e5565b90506118cd818361200990919063ffffffff16565b9350505050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193357600080fd5b61193c8161259d565b50565b611947612baf565b6000806000611954612bfa565b600061195e612bfa565b611966612bfa565b61196e612bfa565b6000600254600a0a9850600454600a0a9750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611a0657600080fd5b505af1158015611a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3e9190810190612dcc565b60019004965060408051908101604052808881526020016012600a0a8152509550600660008c600019166000191681526020019081526020016000206000015494506040805190810160405280868152602001898152509350611aa08b61137c565b9250611ab5868461249490919063ffffffff16565b9150611ac18484610c6f565b9050606060405190810160405280611ae46004548661220c90919063ffffffff16565b8152602001611afe6002548561220c90919063ffffffff16565b8152602001828152509950505050505050505050919050565b6000611b2c611b2584611813565b6004612699565b15611b3a5760009050611ba9565b611b4d611b4684610c0b565b6002612699565b15611b5b5760009050611ba9565b611b96611b8f600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163385602001516126f1565b6000612699565b15611ba45760009050611ba9565b600190505b92915050565b6000611be2836006600088600019166000191681526020019081526020016000206000015461200990919063ffffffff16565b60066000876000191660001916815260200190815260200160002060000181905550611c31600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685846124e2565b8015611d045750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611cb19291906131f3565b602060405180830381600087803b158015611ccb57600080fd5b505af1158015611cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d039190810190612d7a565b5b9050949350505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f866f736040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611d9657600080fd5b505af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dce9190810190612f0d565b73ffffffffffffffffffffffffffffffffffffffff1663ba20dda4856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611e229190613237565b602060405180830381600087803b158015611e3c57600080fd5b505af1158015611e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e749190810190612d51565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611eef9291906131f3565b602060405180830381600087803b158015611f0957600080fd5b505af1158015611f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f419190810190612d7a565b91505092915050565b6000611f558261285f565b15611fff57604080519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152506006600084600019166000191681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090505060019050612004565b600090505b919050565b600082821115151561201757fe5b818303905092915050565b6000818381151561202f57fe5b04905092915050565b612040612bd1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f866f736040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156120c757600080fd5b505af11580156120db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120ff9190810190612f0d565b73ffffffffffffffffffffffffffffffffffffffff1663314a522e846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016121539190613237565b602060405180830381600087803b15801561216d57600080fd5b505af1158015612181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121a59190810190612dcc565b90506121b0816129be565b915050919050565b6000808314156121cb57600090506121ea565b81830290508183828115156121dc57fe5b041415156121e657fe5b8090505b92915050565b6000818301905082811015151561220357fe5b80905092915050565b60008061221884612aa7565b82600a0a905061224b846020015161223d8660000151846121b890919063ffffffff16565b61202290919063ffffffff16565b91505092915050565b60008061226a61226386610a21565b6003612699565b1561227857600091506123dd565b6122af6122a8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685876126f1565b6001612699565b156122bd57600091506123dd565b30905060408051908101604052808581526020018473ffffffffffffffffffffffffffffffffffffffff168152506006600087600019166000191681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508273ffffffffffffffffffffffffffffffffffffffff1685600019167f195d2e7855185ac08fef1e42ab0ccf60a6c8f79ba0af23b37c220eadf42ae9ea866040516123a591906132fe565b60405180910390a36123da600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684866124e2565b91505b509392505050565b6123ed612bfa565b61242b61240b836000015185600001516121b890919063ffffffff16565b612426846020015186602001516121b890919063ffffffff16565b612abb565b905092915050565b61243b612bfa565b600080612459846020015186600001516121b890919063ffffffff16565b9150612476856020015185600001516121b890919063ffffffff16565b9050808210156124885784925061248c565b8392505b505092915050565b61249c612bfa565b6124da6124ba836020015185600001516121b890919063ffffffff16565b6124d5846000015186602001516121b890919063ffffffff16565b612abb565b905092915050565b6000803090508473ffffffffffffffffffffffffffffffffffffffff166323b872dd8583866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612541939291906131bc565b602060405180830381600087803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125939190810190612d7a565b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156125d957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008215156126e6578160048111156126ae57fe5b60ff167ff64a83c5d4d949675caf48520cc73c95b7d9a17ce71f39ba7695af5917d86eba60405160405180910390a2600190506126eb565b600090505b92915050565b600080309050828573ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161274d9190613178565b602060405180830381600087803b15801561276757600080fd5b505af115801561277b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061279f9190810190612f9b565b101580156128555750828573ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e86846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612800929190613193565b602060405180830381600087803b15801561281a57600080fd5b505af115801561282e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128529190810190612f9b565b10155b9150509392505050565b600080600060066000856000191660001916815260200190815260200160002060000154915060066000856000191660001916815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060066000866000191660001916815260200190815260200160002060000181905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129639291906131f3565b602060405180830381600087803b15801561297d57600080fd5b505af1158015612991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129b59190810190612d7a565b92505050919050565b6129c6612bd1565b6000806000807fff00000000000000000000000000000000000000000000000000000000000000600102861693507eff000000000000000000000000000000000000000000000000000000000000600102861692507dffffffffffffffffffffffffffffff000000000000000000000000000000600102861691506effffffffffffffffffffffffffffff60010286169050608060405190810160405280612a6f8660f8612b92565b8152602001612a7f8560f0612b92565b8152602001612a8f846078612b92565b81526020018260019004815250945050505050919050565b6000816020015114151515612ab857fe5b50565b612ac3612bfa565b600080838511612ad35783612ad5565b845b9150610100829060020a90049050600081141515612b10576001810190508085811515612afe57fe5b0494508084811515612b0c57fe5b0493505b60008414151515612b1d57fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84101515612b4857fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85101515612b7357fe5b6040805190810160405280868152602001858152509250505092915050565b60008160020a8360019004811515612ba657fe5b04905092915050565b6060604051908101604052806000815260200160008152602001600081525090565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b604080519081016040528060008152602001600081525090565b6000612c2082356133e6565b905092915050565b6000612c3482516133e6565b905092915050565b6000612c488251613406565b905092915050565b6000612c5c8235613412565b905092915050565b6000612c708251613412565b905092915050565b6000612c84825161341c565b905092915050565b6000612c98825161342e565b905092915050565b6000612cac8251613440565b905092915050565b600060408284031215612cc657600080fd5b612cd06040613379565b90506000612ce084828501612d00565b6000830152506020612cf484828501612d00565b60208301525092915050565b6000612d0c8235613452565b905092915050565b6000612d208251613452565b905092915050565b600060208284031215612d3a57600080fd5b6000612d4884828501612c14565b91505092915050565b600060208284031215612d6357600080fd5b6000612d7184828501612c28565b91505092915050565b600060208284031215612d8c57600080fd5b6000612d9a84828501612c3c565b91505092915050565b600060208284031215612db557600080fd5b6000612dc384828501612c50565b91505092915050565b600060208284031215612dde57600080fd5b6000612dec84828501612c64565b91505092915050565b60008060408385031215612e0857600080fd5b6000612e1685828601612c50565b9250506020612e2785828601612c14565b9150509250929050565b600080600080600060a08688031215612e4957600080fd5b6000612e5788828901612c50565b9550506020612e6888828901612c14565b9450506040612e7988828901612c14565b9350506060612e8a88828901612d00565b9250506080612e9b88828901612c14565b9150509295509295909350565b60008060408385031215612ebb57600080fd5b6000612ec985828601612c50565b9250506020612eda85828601612d00565b9150509250929050565b600060208284031215612ef657600080fd5b6000612f0484828501612c78565b91505092915050565b600060208284031215612f1f57600080fd5b6000612f2d84828501612c8c565b91505092915050565b600060208284031215612f4857600080fd5b6000612f5684828501612ca0565b91505092915050565b60008060808385031215612f7257600080fd5b6000612f8085828601612cb4565b9250506040612f9185828601612cb4565b9150509250929050565b600060208284031215612fad57600080fd5b6000612fbb84828501612d14565b91505092915050565b60008060408385031215612fd757600080fd5b6000612fe585828601612d00565b9250506020612ff685828601612d00565b9150509250929050565b613009816133a6565b82525050565b613018816133c6565b82525050565b613027816133d2565b82525050565b6130368161345c565b82525050565b6130458161346e565b82525050565b61305481613480565b82525050565b6000605182527f6d6f6469666965723a2053656e646572206e6f742052657061796d656e74526f60208301527f75746572202d206f6e6c792052657061796d656e74526f757465722063616e2060408301527f63616c6c2074686973206d6574686f642e0000000000000000000000000000006060830152608082019050919050565b6000603682527f4f6e6c7920446562744b65726e656c2063616e2063616c6c207468652072656760208301527f69737465725465726d5374617274206d6574686f642e000000000000000000006040830152606082019050919050565b6040820160008201516131506000850182613169565b5060208201516131636020850182613169565b50505050565b613172816133dc565b82525050565b600060208201905061318d6000830184613000565b92915050565b60006040820190506131a86000830185613000565b6131b56020830184613000565b9392505050565b60006060820190506131d16000830186613000565b6131de6020830185613000565b6131eb6040830184613169565b949350505050565b60006040820190506132086000830185613000565b6132156020830184613169565b9392505050565b6000602082019050613231600083018461300f565b92915050565b600060208201905061324c600083018461301e565b92915050565b6000602082019050613267600083018461302d565b92915050565b6000602082019050613282600083018461303c565b92915050565b600060208201905061329d600083018461304b565b92915050565b600060208201905081810360008301526132bc8161305a565b9050919050565b600060208201905081810360008301526132dc816130dd565b9050919050565b60006040820190506132f8600083018461313a565b92915050565b60006020820190506133136000830184613169565b92915050565b600060408201905061332e6000830185613169565b61333b6020830184613000565b9392505050565b60006060820190506133576000830186613169565b6133646020830185613169565b6133716040830184613169565b949350505050565b6000604051905081810181811067ffffffffffffffff8211171561339c57600080fd5b8060405250919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000613427826133a6565b9050919050565b6000613439826133a6565b9050919050565b600061344b826133a6565b9050919050565b6000819050919050565b6000613467826133a6565b9050919050565b6000613479826133a6565b9050919050565b600061348b826133a6565b90509190505600a265627a7a72305820bc214674dd0f3d575d17ab31554a4b711441f7101c3233e9b94802f28a9a43d96c6578706572696d656e74616cf50037
[codex:341867]
[codex:341867] thinking
[codex:341867] **Conducting high-level bytecode security analysis**
[codex:341867]
[codex:341867] I'm examining the raw hex bytecode for typical smart contract functions and potential exploits, focusing on transfer-related calls, ownership controls, and suspicious CALL operations carrying value. Since only bytecode is available, I'll cautiously parse function selectors and attempt to disassemble the code using Python to detect any unguarded ways to transfer tokens or ether. If no clear exploit path emerges, I plan to report no findings.
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867]
[codex:341867] path=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt')
[codex:341867] text=path.read_text()
[codex:341867] # extract hex string after '0x'
[codex:341867] m=re.search(r'0x([0-9a-fA-F]+)', text)
[codex:341867] if not m:
[codex:341867] raise SystemExit('no hex')
[codex:341867] hexstr=m.group(1)
[codex:341867] print('len hex', len(hexstr))
[codex:341867] # disassemble
[codex:341867] opcodes = {
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] # build disassembly list with pc
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] print('instructions', len(instrs))
[codex:341867] # show last few
[codex:341867] print('last', instrs[-5:])
[codex:341867] # find all SELFDESTRUCT / DELEGATECALL / CALL
[codex:341867] special={'CALL','DELEGATECALL','SELFDESTRUCT'}
[codex:341867] idx=[(i,pc,name,data) for i,(pc,name,data) in enumerate(instrs) if name in special]
[codex:341867] print('special count', {n:sum(1 for _,_,n,_ in idx if n==n2) for n2 in special})
[codex:341867] print('first 10 special', idx[:10])
[codex:341867]
[codex:341867] # find dispatch jumpdest list? we can find JUMPDESTs and get nearby selectors in dispatcher
[codex:341867] # also gather function selector table from beginning: pattern PUSH4 <sel> EQ PUSH2 <dest> JUMPI
[codex:341867] sels=[]
[codex:341867] for i in range(len(instrs)-4):
[codex:341867] pc,name,data=instrs[i]
[codex:341867] if name=='PUSH4' and instrs[i+1][1]=='EQ' and instrs[i+2][1]=='PUSH2' and instrs[i+3][1]=='JUMPI':
[codex:341867] sel=instrs[i][2]
[codex:341867] dest=int(instrs[i+2][2],16)
[codex:341867] sels.append((sel,dest))
[codex:341867]
[codex:341867] print('selectors', len(sels))
[codex:341867] print(sels[:10])
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 88ms:
[codex:341867] len hex 27032
[codex:341867] instructions 7758
[codex:341867] last [(13498, 'NUMBER', None), (13499, 'OP_d9', None), (13500, 'PUSH13', '6578706572696d656e74616cf5'), (13514, 'STOP', None), (13515, 'CALLDATACOPY', None)]
[codex:341867] special count {13: 19}
[codex:341867] first 10 special [(1796, 2839, 'CALL', None), (1881, 3005, 'CALL', None), (2116, 3413, 'CALL', None), (2515, 4362, 'CALL', None), (2673, 4720, 'CALL', None), (2758, 4886, 'CALL', None), (2922, 5190, 'CALL', None), (3236, 5726, 'CALL', None), (3753, 6665, 'CALL', None), (4177, 7374, 'CALL', None)]
[codex:341867] selectors 33
[codex:341867] [('03a896a1', 493), ('04fdc562', 554), ('0525ed66', 615), ('0992b119', 676), ('09cc1440', 737), ('1920427b', 798), ('2762dd8c', 860), ('31da4165', 921), ('44ee8753', 982), ('48857152', 1025)]
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing disassembly and call patterns**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867]
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes = {
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] from collections import Counter
[codex:341867] c=Counter(name for _,name,_ in instrs)
[codex:341867] print({k:c[k] for k in ['CALL','DELEGATECALL','SELFDESTRUCT','CALLCODE']})
[codex:341867]
[codex:341867] # list delegatecall positions
[codex:341867] for pc,name,data in instrs:
[codex:341867] if name in ('DELEGATECALL','SELFDESTRUCT'):
[codex:341867] print(name, pc)
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 42ms:
[codex:341867] {'CALL': 19, 'DELEGATECALL': 0, 'SELFDESTRUCT': 0, 'CALLCODE': 1}
[codex:341867]
[codex:341867] thinking
[codex:341867] **Inspecting CALLCODE usage for risks**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes = {
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] # locate CALLCODE
[codex:341867] idx=[i for i,(pc,name,data) in enumerate(instrs) if name=='CALLCODE']
[codex:341867] print(idx)
[codex:341867] for i in idx:
[codex:341867] start=max(0,i-10)
[codex:341867] end=min(len(instrs), i+10)
[codex:341867] for j in range(start,end):
[codex:341867] pc,name,data=instrs[j]
[codex:341867] if data is None:
[codex:341867] print(f\"{pc:04x}: {name}\")
[codex:341867] else:
[codex:341867] print(f\"{pc:04x}: {name} {data}\")
[codex:341867] print('---')
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 34ms:
[codex:341867] [7750]
[codex:341867] 3492: STOP
[codex:341867] 3493: LOG2
[codex:341867] 3494: PUSH6 627a7a723058
[codex:341867] 349b: SHA3
[codex:341867] 349c: OP_bc
[codex:341867] 349d: OP_21
[codex:341867] 349e: CHAINID
[codex:341867] 349f: PUSH21 dd0f3d575d17ab31554a4b711441f7101c3233e9b9
[codex:341867] 34b5: BASEFEE
[codex:341867] 34b6: MUL
[codex:341867] 34b7: CALLCODE
[codex:341867] 34b8: DUP11
[codex:341867] 34b9: SWAP11
[codex:341867] 34ba: NUMBER
[codex:341867] 34bb: OP_d9
[codex:341867] 34bc: PUSH13 6578706572696d656e74616cf5
[codex:341867] 34ca: STOP
[codex:341867] 34cb: CALLDATACOPY
[codex:341867] ---
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing CALL and access control patterns**
[codex:341867]
[codex:341867] I’m examining the contract’s CALL instructions to see if any send ETH, focusing on CALLVALUE parameters and stack usage. I’m also identifying functions by their selectors to guess contract roles, suspecting it’s a TermsContract in the Dharma protocol. Next, I’m investigating potential access controls by parsing function entries for CALLER vs SLOAD checks to detect security-critical permissions. This means dissecting the dispatch table and inspecting function start opcodes to understand if key functions validate msg.sender properly.
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes = {
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] # find selectors
[codex:341867] sels=[]
[codex:341867] for i in range(len(instrs)-4):
[codex:341867] pc,name,data=instrs[i]
[codex:341867] if name=='PUSH4' and instrs[i+1][1]=='EQ' and instrs[i+2][1]=='PUSH2' and instrs[i+3][1]=='JUMPI':
[codex:341867] sel=instrs[i][2]
[codex:341867] dest=int(instrs[i+2][2],16)
[codex:341867] sels.append((sel,dest))
[codex:341867]
[codex:341867] print('selectors:')
[codex:341867] for sel,dest in sels:
[codex:341867] print(sel, f\"0x{dest:04x}\")
[codex:341867]
[codex:341867] # create map from dest to selector
[codex:341867] selmap={dest:sel for sel,dest in sels}
[codex:341867]
[codex:341867] # function entry info: show first ~12 instructions of each function
[codex:341867] for dest in sorted(selmap):
[codex:341867] idx=None
[codex:341867] # find instruction index for dest
[codex:341867] for i,(pc,name,data) in enumerate(instrs):
[codex:341867] if pc==dest:
[codex:341867] idx=i
[codex:341867] break
[codex:341867] if idx is None:
[codex:341867] continue
[codex:341867] print(f\"\\nfunc {selmap[dest]} at 0x{dest:04x}\")
[codex:341867] for j in range(idx, min(len(instrs), idx+12)):
[codex:341867] pc,name,data=instrs[j]
[codex:341867] if data is None:
[codex:341867] print(f\" {pc:04x}: {name}\")
[codex:341867] else:
[codex:341867] print(f\" {pc:04x}: {name} {data}\")
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 45ms:
[codex:341867] selectors:
[codex:341867] 03a896a1 0x01ed
[codex:341867] 04fdc562 0x022a
[codex:341867] 0525ed66 0x0267
[codex:341867] 0992b119 0x02a4
[codex:341867] 09cc1440 0x02e1
[codex:341867] 1920427b 0x031e
[codex:341867] 2762dd8c 0x035c
[codex:341867] 31da4165 0x0399
[codex:341867] 44ee8753 0x03d6
[codex:341867] 48857152 0x0401
[codex:341867] 52ddbfc1 0x042c
[codex:341867] 583b7676 0x0469
[codex:341867] 5cb9a150 0x0494
[codex:341867] 5e929e6a 0x04d1
[codex:341867] 5f0280ba 0x050e
[codex:341867] 715018a6 0x054b
[codex:341867] 741bef1a 0x0562
[codex:341867] 7ae2b5c7 0x058d
[codex:341867] 8da5cb5b 0x05ca
[codex:341867]
[codex:341867] thinking
[codex:341867] **Mapping CALL instructions to functions**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes={
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] # find PUSH4 selectors used for external calls
[codex:341867] selectors_of_interest={'a9059cbb','23b872dd','70a08231','dd62ed3e','2f866f73','d69dbf63','ba20dda4','314a522e','079dd4b7','6fa9d056','357de26a','195d2e78','f8df3114','8be0079c'}
[codex:341867]
[codex:341867] for i,(pc,name,data) in enumerate(instrs):
[codex:341867] if name=='PUSH4' and data in selectors_of_interest:
[codex:341867] print(f\"{pc:04x}: PUSH4 {data}\")
[codex:341867] for j in range(i-4,i+6):
[codex:341867] if 0<=j<len(instrs):
[codex:341867] p,n,d=instrs[j]
[codex:341867] if d is None:
[codex:341867] print(f\" {p:04x}: {n}\")
[codex:341867] else:
[codex:341867] print(f\" {p:04x}: {n} {d}\")
[codex:341867] print('---')
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 38ms:
[codex:341867] 0ac8: PUSH4 2f866f73
[codex:341867] 0a9c: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341867] 0ab1: AND
[codex:341867] 0ab2: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341867] 0ac7: AND
[codex:341867] 0ac8: PUSH4 2f866f73
[codex:341867] 0acd: PUSH1 40
[codex:341867] 0acf: MLOAD
[codex:341867] 0ad0: DUP2
[codex:341867] 0ad1: PUSH4 ffffffff
[codex:341867] 0ad6: AND
[codex:341867] ---
[codex:341867] 0b63: PUSH4 d69dbf63
[codex:341867] 0b4b: JUMP
[codex:341867] 0b4c: JUMPDEST
[codex:341867] 0b4d: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341867] 0b62: AND
[codex:341867] 0b63: PUSH4 d69dbf63
[codex:341867] 0b68: DUP6
[codex:341867] 0b69: PUSH1 40
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing ERC20 transfer calls for vulnerabilities**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes={
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] # build map pc->index
[codex:341867] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(instrs)}
[codex:341867]
[codex:341867] # function to show window around a pc
[codex:341867]
[codex:341867] def show(pc,window=40):
[codex:341867] i=pc_to_idx[pc]
[codex:341867] for j in range(max(0,i-window), min(len(instrs), i+window)):
[codex:341867] p,n,d=instrs[j]
[codex:341867] if d is None:
[codex:341867] print(f\"{p:04x}: {n}\")
[codex:341867] else:
[codex:341867] print(f\"{p:04x}: {n} {d}\")
[codex:341867]
[codex:341867] # show around 0x1c72
[codex:341867] print('--- around 0x1c72 ---')
[codex:341867] show(0x1c72,window=30)
[codex:341867]
[codex:341867] print('\\n--- around 0x1eb0 ---')
[codex:341867] show(0x1eb0,window=30)
[codex:341867]
[codex:341867] print('\\n--- around 0x2924 ---')
[codex:341867] show(0x2924,window=30)
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 36ms:
[codex:341867] --- around 0x1c72 ---
[codex:341867] 1c0e: SWAP1
[codex:341867] 1c0f: PUSH2 0100
[codex:341867] 1c12: EXP
[codex:341867] 1c13: SWAP1
[codex:341867] 1c14: DIV
[codex:341867] 1c15: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:341867] 1c2a: AND
[codex:341867] 1c2b: DUP6
[codex:341867] 1c2c: DUP5
[codex:341867] 1c2d: PUSH2 24e2
[codex:341867] 1c30: JUMP
[codex:341867] 1c31: JUMPDEST
[codex:341867] 1c32: DUP1
[codex:341867] 1c33: ISZERO
[codex:341867] 1c34: PUSH2 1d04
[codex:341867] 1c37: JUMPI
[codex:341867] 1c38: POP
[codex:341867] 1c39: PUSH1 03
[codex:341867] 1c3b: PUSH1 00
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing storage patterns and access control**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] # extract ascii strings length>=6
[codex:341867] strings=[]
[codex:341867] current=b''
[codex:341867] for byte in b:
[codex:341867] if 32<=byte<=126:
[codex:341867] current+=bytes([byte])
[codex:341867] else:
[codex:341867] if len(current)>=6:
[codex:341867] strings.append(current.decode('ascii', errors='ignore'))
[codex:341867] current=b''
[codex:341867] if len(current)>=6:
[codex:341867] strings.append(current.decode('ascii', errors='ignore'))
[codex:341867]
[codex:341867] for s in strings:
[codex:341867] if 'Router' in s or 'Debt' in s or 'register' in s or 'term' in s or 'Repayment' in s:
[codex:341867] print(s)
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 30ms:
[codex:341867] modifier: Sender not RepaymentRo`
[codex:341867] uter - only RepaymentRouter can `@
[codex:341867] Only DebtKernel can call the reg`
[codex:341867]
[codex:341867] thinking
[codex:341867] **Inspecting string outputs**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] # extract ascii strings length>=4
[codex:341867] strings=[]
[codex:341867] current=b''
[codex:341867] for byte in b:
[codex:341867] if 32<=byte<=126:
[codex:341867] current+=bytes([byte])
[codex:341867] else:
[codex:341867] if len(current)>=4:
[codex:341867] strings.append(current.decode('ascii', errors='ignore'))
[codex:341867] current=b''
[codex:341867] if len(current)>=4:
[codex:341867] strings.append(current.decode('ascii', errors='ignore'))
[codex:341867]
[codex:341867] for s in strings:
[codex:341867] print(s)
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 39ms:
[codex:341867] `@R`
[codex:341867] cX;vv
[codex:341867] V[`@Qa
[codex:341867] V[`@Q
[codex:341867] V[`@Qa
[codex:341867] V[`@Q
[codex:341867] V[`@Qa
[codex:341867] V[`@Q
[codex:341867] V[`@Qa
[codex:341867] V[`@Q
[codex:341867] V[`@Qa
[codex:341867] V[`@Q
[codex:341867] !V[`@Qa
[codex:341867] V[`@Q
[codex:341867] 4V[`@Qa
[codex:341867] V[`@Q
[codex:341867] xV[`@Qa
[codex:341867] V[`@Q
[codex:341867] V[`@Qa
[codex:341867] V[`@Q
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing CALL instructions for ETH transfers**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes={
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] # list CALLs with context
[codex:341867] call_indices=[i for i,(pc,name,_) in enumerate(instrs) if name=='CALL']
[codex:341867] print('CALL count', len(call_indices))
[codex:341867] for i in call_indices:
[codex:341867] pc,name,_=instrs[i]
[codex:341867] print(f\"\\nCALL at {pc:04x}\")
[codex:341867] for j in range(i-8,i+6):
[codex:341867] if 0<=j<len(instrs):
[codex:341867] p,n,d=instrs[j]
[codex:341867] if d is None:
[codex:341867] print(f\" {p:04x}: {n}\")
[codex:341867] else:
[codex:341867] print(f\" {p:04x}: {n} {d}\")
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 39ms:
[codex:341867] CALL count 19
[codex:341867]
[codex:341867] CALL at 0b17
[codex:341867] 0b0c: PUSH2 0b14
[codex:341867] 0b0f: JUMPI
[codex:341867] 0b10: PUSH1 00
[codex:341867] 0b12: DUP1
[codex:341867] 0b13: REVERT
[codex:341867] 0b14: JUMPDEST
[codex:341867] 0b15: POP
[codex:341867] 0b16: GAS
[codex:341867] 0b17: CALL
[codex:341867] 0b18: ISZERO
[codex:341867] 0b19: DUP1
[codex:341867] 0b1a: ISZERO
[codex:341867] 0b1b: PUSH2 0b28
[codex:341867] 0b1e: JUMPI
[codex:341867]
[codex:341867] CALL at 0bbd
[codex:341867] 0bb2: PUSH2 0bba
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing CALL instructions and value argument**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes={
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(instrs)}
[codex:341867]
[codex:341867] # show window for a few call sites
[codex:341867] call_pcs=[0x1cce,0x1f0c,0x2980]
[codex:341867] for call_pc in call_pcs:
[codex:341867] i=pc_to_idx[call_pc]
[codex:341867] print(f\"\\nContext for CALL at {call_pc:04x}\")
[codex:341867] for j in range(i-25,i+5):
[codex:341867] if 0<=j<len(instrs):
[codex:341867] p,n,d=instrs[j]
[codex:341867] if d is None:
[codex:341867] print(f\" {p:04x}: {n}\")
[codex:341867] else:
[codex:341867] print(f\" {p:04x}: {n} {d}\")
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 37ms:
[codex:341867]
[codex:341867] Context for CALL at 1cce
[codex:341867] 1cad: PUSH2 31f3
[codex:341867] 1cb0: JUMP
[codex:341867] 1cb1: JUMPDEST
[codex:341867] 1cb2: PUSH1 20
[codex:341867] 1cb4: PUSH1 40
[codex:341867] 1cb6: MLOAD
[codex:341867] 1cb7: DUP1
[codex:341867] 1cb8: DUP4
[codex:341867] 1cb9: SUB
[codex:341867] 1cba: DUP2
[codex:341867] 1cbb: PUSH1 00
[codex:341867] 1cbd: DUP8
[codex:341867] 1cbe: DUP1
[codex:341867] 1cbf: EXTCODESIZE
[codex:341867] 1cc0: ISZERO
[codex:341867] 1cc1: DUP1
[codex:341867] 1cc2: ISZERO
[codex:341867] 1cc3: PUSH2 1ccb
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing CALL stack and SSTORE usage**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes={
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] # find SSTORE positions
[codex:341867] sstore=[pc for pc,name,_ in instrs if name=='SSTORE']
[codex:341867] print('SSTORE count', len(sstore))
[codex:341867] print('first few', [hex(p) for p in sstore[:10]])
[codex:341867]
[codex:341867] # print context around each sstore
[codex:341867] for pc in sstore:
[codex:341867] print(f\"\\nSSTORE at {pc:04x}\")
[codex:341867] # show 10 instructions before
[codex:341867] for p,n,d in instrs[instrs.index((pc,'SSTORE',None))-10:instrs.index((pc,'SSTORE',None))+5]:
[codex:341867] if d is None:
[codex:341867] print(f\" {p:04x}: {n}\")
[codex:341867] else:
[codex:341867] print(f\" {p:04x}: {n} {d}\")
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 38ms:
[codex:341867] SSTORE count 10
[codex:341867] first few ['0xea5', '0x1010', '0x17e6', '0x1c03', '0x1fac', '0x1ff2', '0x2310', '0x2356', '0x2695', '0x28e9']
[codex:341867]
[codex:341867] SSTORE at 0ea5
[codex:341867] 0e99: ADD
[codex:341867] 0e9a: SWAP1
[codex:341867] 0e9b: DUP2
[codex:341867] 0e9c: MSTORE
[codex:341867] 0e9d: PUSH1 20
[codex:341867] 0e9f: ADD
[codex:341867] 0ea0: PUSH1 00
[codex:341867] 0ea2: SHA3
[codex:341867] 0ea3: DUP2
[codex:341867] 0ea4: SWAP1
[codex:341867] 0ea5: SSTORE
[codex:341867] 0ea6: POP
[codex:341867] 0ea7: PUSH2 0eb8
[codex:341867] 0eaa: DUP8
[codex:341867] 0eab: PUSH2 0eb3
[codex:341867]
[codex:341867]
[codex:341867] thinking
[codex:341867] **Analyzing SSTORE usage and ownership functions**
[codex:341867] exec
[codex:341867] /bin/bash -lc "python - <<'PY'
[codex:341867] import re
[codex:341867] from pathlib import Path
[codex:341867] text=Path('/tmp/codex-multi-gnof1eax/BYTECODE_BUNDLE.txt').read_text()
[codex:341867] hexstr=re.search(r'0x([0-9a-fA-F]+)', text).group(1)
[codex:341867]
[codex:341867] b=bytes.fromhex(hexstr)
[codex:341867]
[codex:341867] opcodes={
[codex:341867] 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:341867] 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:341867] 0x20:'SHA3',
[codex:341867] 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:341867] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:341867] 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:341867] 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:341867] 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:341867] 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:341867] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:341867] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:341867] }
[codex:341867]
[codex:341867] pc=0
[codex:341867] instrs=[]
[codex:341867] while pc<len(b):
[codex:341867] op=b[pc]
[codex:341867] name=opcodes.get(op, f'OP_{op:02x}')
[codex:341867] if 0x60<=op<=0x7f:
[codex:341867] n=op-0x5f
[codex:341867] data=b[pc+1:pc+1+n]
[codex:341867] instrs.append((pc,name,data.hex()))
[codex:341867] pc+=1+n
[codex:341867] else:
[codex:341867] instrs.append((pc,name,None))
[codex:341867] pc+=1
[codex:341867]
[codex:341867] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(instrs)}
[codex:341867]
[codex:341867] for pc in [0x0f0e,0x18d7]:
[codex:341867] if pc not in pc_to_idx:
[codex:341867] continue
[codex:341867] i=pc_to_idx[pc]
[codex:341867] print(f\"\\nDisasm around 0x{pc:04x}\")
[codex:341867] for j in range(i-10,i+30):
[codex:341867] if 0<=j<len(instrs):
[codex:341867] p,n,d=instrs[j]
[codex:341867] if d is None:
[codex:341867] print(f\" {p:04x}: {n}\")
[codex:341867] else:
[codex:341867] print(f\" {p:04x}: {n} {d}\")
[codex:341867] PY" in /tmp/codex-multi-gnof1eax succeeded in 36ms:
[codex:341867]
[codex:341867] Disasm around 0x0f0e
[codex:341867] 0f04: JUMPDEST
[codex:341867] 0f05: POP
[codex:341867] 0f06: SWAP6
[codex:341867] 0f07: SWAP5
[codex:341867] 0f08: POP
[codex:341867] 0f09: POP
[codex:341867] 0f0a: POP
[codex:341867] 0f0b: POP
[codex:341867] 0f0c: POP
[codex:341867] 0f0d: JUMP
[codex:341867] 0f0e: JUMPDEST
[codex:341867] 0f0f: PUSH1 07
[codex:341867] 0f11: PUSH1 00
[codex:341867] 0f13: SWAP1
[codex:341867] 0f14: SLOAD
[codex:341867] 0f15: SWAP1
[codex:341867] 0f16: PUSH2 0100
[codex:341867] 0f19: EXP
[codex:341867]
[codex:341867] thinking
[codex:341867] **Confirming no exploitable paths found**
[codex:341867]
[codex:341867] I'm reviewing the bytecode's access controls and state changes, confirming owner or router restrictions everywhere. No payable fallback or unrestricted storage writes appear. Following all checks, I’ll produce a JSON stating no findings and summarizing that no exploitable value-extraction paths were identified.
[codex:341867] codex
[codex:341867] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode; external calls and state-changing paths appear gated by ownership/router checks, and there is no delegatecall/selfdestruct or obvious unrestricted value transfer.","findings":[]}
[codex:341867] tokens used
[codex:341867] 78,853
[codex:341867] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode; external calls and state-changing paths appear gated by ownership/router checks, and there is no delegatecall/selfdestruct or obvious unrestricted value transfer.","findings":[]}
{
"codex": {
"ran_at": "2026-01-05T20:32:59.634811+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode; external calls and state-changing paths appear gated by ownership/router checks, and there is no delegatecall/selfdestruct or obvious unrestricted value transfer.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode; external calls and state-changing paths appear gated by ownership/router checks, and there is no delegatecall/selfdestruct or obvious unrestricted value transfer.",
"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 0x01ab 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000002e: SWAP1 0000002f: DIV 00000030: PUSH4 0xffffffff 00000035: AND 00000036: DUP1 00000037: PUSH3 0xdc41e6 0000003b: EQ 0000003c: PUSH2 0x01b0 0000003f: JUMPI 00000040: DUP1 00000041: PUSH4 0x03a896a1 00000046: EQ 00000047: PUSH2 0x01ed 0000004a: JUMPI 0000004b: DUP1 0000004c: PUSH4 0x04fdc562 00000051: EQ 00000052: PUSH2 0x022a 00000055: JUMPI 00000056: DUP1 00000057: PUSH4 0x0525ed66 0000005c: EQ 0000005d: PUSH2 0x0267 00000060: JUMPI 00000061: DUP1 00000062: PUSH4 0x0992b119 00000067: EQ 00000068: PUSH2 0x02a4 0000006b: JUMPI 0000006c: DUP1 0000006d: PUSH4 0x09cc1440 00000072: EQ 00000073: PUSH2 0x02e1 00000076: JUMPI 00000077: DUP1 00000078: PUSH4 0x1920427b 0000007d: EQ 0000007e: PUSH2 0x031e 00000081: JUMPI 00000082: DUP1 00000083: PUSH4 0x2762dd8c 00000088: EQ 00000089: PUSH2 0x035c 0000008c: JUMPI 0000008d: DUP1 0000008e: PUSH4 0x31da4165 00000093: EQ 00000094: PUSH2 0x0399 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0x44ee8753 0000009e: EQ 0000009f: PUSH2 0x03d6 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0x48857152 000000a9: EQ 000000aa: PUSH2 0x0401 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0x52ddbfc1 000000b4: EQ 000000b5: PUSH2 0x042c 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0x583b7676 000000bf: EQ 000000c0: PUSH2 0x0469 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0x5cb9a150 000000ca: EQ 000000cb: PUSH2 0x0494 000000ce: JUMPI 000000cf: DUP1 000000d0: PUSH4 0x5e929e6a 000000d5: EQ 000000d6: PUSH2 0x04d1 000000d9: JUMPI 000000da: DUP1 000000db: PUSH4 0x5f0280ba 000000e0: EQ 000000e1: PUSH2 0x050e 000000e4: JUMPI 000000e5: DUP1 000000e6: PUSH4 0x715018a6 000000eb: EQ 000000ec: PUSH2 0x054b 000000ef: JUMPI 000000f0: DUP1 000000f1: PUSH4 0x741bef1a 000000f6: EQ 000000f7: PUSH2 0x0562 000000fa: JUMPI 000000fb: DUP1 000000fc: PUSH4 0x7ae2b5c7 00000101: EQ 00000102: PUSH2 0x058d 00000105: JUMPI 00000106: DUP1 00000107: PUSH4 0x8da5cb5b 0000010c: EQ 0000010d: PUSH2 0x05ca 00000110: JUMPI 00000111: DUP1 00000112: PUSH4 0x977a5e64 00000117: EQ 00000118: PUSH2 0x05f5 0000011b: JUMPI 0000011c: DUP1 0000011d: PUSH4 0x99114d84 00000122: EQ 00000123: PUSH2 0x0632 00000126: JUMPI 00000127: DUP1 00000128: PUSH4 0xa354ca44 0000012d: EQ 0000012e: PUSH2 0x066f 00000131: JUMPI 00000132: DUP1 00000133: PUSH4 0xabf410e5 00000138: EQ 00000139: PUSH2 0x06ac 0000013c: JUMPI 0000013d: DUP1 0000013e: PUSH4 0xb2016bd4 00000143: EQ 00000144: PUSH2 0x06d7 00000147: JUMPI 00000148: DUP1 00000149: PUSH4 0xb2819322 0000014e: EQ 0000014f: PUSH2 0x0702 00000152: JUMPI 00000153: DUP1 00000154: PUSH4 0xb54790d8 00000159: EQ 0000015a: PUSH2 0x073f 0000015d: JUMPI 0000015e: DUP1 0000015f: PUSH4 0xc9912594 00000164: EQ 00000165: PUSH2 0x076a 00000168: JUMPI 00000169: DUP1 0000016a: PUSH4 0xdb2f90ae 0000016f: EQ 00000170: PUSH2 0x07a7 00000173: JUMPI 00000174: DUP1 00000175: PUSH4 0xdbc162de 0000017a: EQ 0000017b: PUSH2 0x07d0 0000017e: JUMPI 0000017f: DUP1 00000180: PUSH4 0xee733bb7 00000185: EQ 00000186: PUSH2 0x07fb 00000189: JUMPI 0000018a: DUP1 0000018b: PUSH4 0xf08499a1 00000190: EQ 00000191: PUSH2 0x0838 00000194: JUMPI 00000195: DUP1 00000196: PUSH4 0xf2494eaf 0000019b: EQ 0000019c: PUSH2 0x0863 0000019f: JUMPI 000001a0: DUP1 000001a1: PUSH4 0xf2fde38b 000001a6: EQ 000001a7: PUSH2 0x08a0 000001aa: JUMPI 000001ab: JUMPDEST 000001ac: PUSH1 0x00 000001ae: DUP1 000001af: REVERT 000001b0: JUMPDEST 000001b1: CALLVALUE 000001b2: DUP1 000001b3: ISZERO 000001b4: PUSH2 0x01bc 000001b7: JUMPI 000001b8: PUSH1 0x00 000001ba: DUP1 000001bb: REVERT 000001bc: JUMPDEST 000001bd: POP 000001be: PUSH2 0x01d7 000001c1: PUSH1 0x04 000001c3: DUP1 000001c4: CALLDATASIZE 000001c5: SUB 000001c6: PUSH2 0x01d2 000001c9: SWAP2 000001ca: SWAP1 000001cb: DUP2 000001cc: ADD 000001cd: SWAP1 000001ce: PUSH2 0x2da3 000001d1: JUMP 000001d2: JUMPDEST 000001d3: PUSH2 0x08c9 000001d6: JUMP 000001d7: JUMPDEST 000001d8: PUSH1 0x40 000001da: MLOAD 000001db: PUSH2 0x01e4 000001de: SWAP2 000001df: SWAP1 000001e0: PUSH2 0x321c 000001e3: JUMP 000001e4: JUMPDEST 000001e5: PUSH1 0x40 000001e7: MLOAD 000001e8: DUP1 000001e9: SWAP2 000001ea: SUB 000001eb: SWAP1 000001ec: RETURN 000001ed: JUMPDEST 000001ee: CALLVALUE 000001ef: DUP1 000001f0: ISZERO 000001f1: PUSH2 0x01f9 000001f4: JUMPI 000001f5: PUSH1 0x00 000001f7: DUP1 000001f8: REVERT 000001f9: JUMPDEST 000001fa: POP 000001fb: PUSH2 0x0214 000001fe: PUSH1 0x04 00000200: DUP1 00000201: CALLDATASIZE 00000202: SUB 00000203: PUSH2 0x020f 00000206: SWAP2 00000207: SWAP1 00000208: DUP2 00000209: ADD 0000020a: SWAP1 0000020b: PUSH2 0x2da3 0000020e: JUMP 0000020f: JUMPDEST 00000210: PUSH2 0x08e5 00000213: JUMP 00000214: JUMPDEST 00000215: PUSH1 0x40 00000217: MLOAD 00000218: PUSH2 0x0221 0000021b: SWAP2 0000021c: SWAP1 0000021d: PUSH2 0x32fe 00000220: JUMP 00000221: JUMPDEST 00000222: PUSH1 0x40 00000224: MLOAD 00000225: DUP1 00000226: SWAP2 00000227: SUB 00000228: SWAP1 00000229: RETURN 0000022a: JUMPDEST 0000022b: CALLVALUE 0000022c: DUP1 0000022d: ISZERO 0000022e: PUSH2 0x0236 00000231: JUMPI 00000232: PUSH1 0x00 00000234: DUP1 00000235: REVERT 00000236: JUMPDEST 00000237: POP 00000238: PUSH2 0x0251 0000023b: PUSH1 0x04 0000023d: DUP1 0000023e: CALLDATASIZE 0000023f: SUB 00000240: PUSH2 0x024c 00000243: SWAP2 00000244: SWAP1 00000245: DUP2 00000246: ADD 00000247: SWAP1 00000248: PUSH2 0x2da3 0000024b: JUMP 0000024c: JUMPDEST 0000024d: PUSH2 0x090a 00000250: JUMP 00000251: JUMPDEST 00000252: PUSH1 0x40 00000254: MLOAD 00000255: PUSH2 0x025e 00000258: SWAP2 00000259: SWAP1 0000025a: PUSH2 0x321c 0000025d: JUMP 0000025e: JUMPDEST 0000025f: PUSH1 0x40 00000261: MLOAD 00000262: DUP1 00000263: SWAP2 00000264: SUB 00000265: SWAP1 00000266: RETURN 00000267: JUMPDEST 00000268: CALLVALUE 00000269: DUP1 0000026a: ISZERO 0000026b: PUSH2 0x0273 0000026e: JUMPI 0000026f: PUSH1 0x00 00000271: DUP1 00000272: REVERT 00000273: JUMPDEST 00000274: POP 00000275: PUSH2 0x028e 00000278: PUSH1 0x04 0000027a: DUP1 0000027b: CALLDATASIZE 0000027c: SUB 0000027d: PUSH2 0x0289 00000280: SWAP2 00000281: SWAP1 00000282: DUP2 00000283: ADD 00000284: SWAP1 00000285: PUSH2 0x2da3 00000288: JUMP 00000289: JUMPDEST 0000028a: PUSH2 0x09d7 0000028d: JUMP 0000028e: JUMPDEST 0000028f: PUSH1 0x40 00000291: MLOAD 00000292: PUSH2 0x029b 00000295: SWAP2 00000296: SWAP1 00000297: PUSH2 0x32fe 0000029a: JUMP 0000029b: JUMPDEST 0000029c: PUSH1 0x40 0000029e: MLOAD 0000029f: DUP1 000002a0: SWAP2 000002a1: SUB 000002a2: SWAP1 000002a3: RETURN 000002a4: JUMPDEST 000002a5: CALLVALUE 000002a6: DUP1 000002a7: ISZERO 000002a8: PUSH2 0x02b0 000002ab: JUMPI 000002ac: PUSH1 0x00 000002ae: DUP1 000002af: REVERT 000002b0: JUMPDEST 000002b1: POP 000002b2: PUSH2 0x02cb 000002b5: PUSH1 0x04 000002b7: DUP1 000002b8: CALLDATASIZE 000002b9: SUB 000002ba: PUSH2 0x02c6 000002bd: SWAP2 000002be: SWAP1 000002bf: DUP2 000002c0: ADD 000002c1: SWAP1 000002c2: PUSH2 0x2fc4 000002c5: JUMP 000002c6: JUMPDEST 000002c7: PUSH2 0x09ef 000002ca: JUMP 000002cb: JUMPDEST 000002cc: PUSH1 0x40 000002ce: MLOAD 000002cf: PUSH2 0x02d8 000002d2: SWAP2 000002d3: SWAP1 000002d4: PUSH2 0x32fe 000002d7: JUMP 000002d8: JUMPDEST 000002d9: PUSH1 0x40 000002db: MLOAD 000002dc: DUP1 000002dd: SWAP2 000002de: SUB 000002df: SWAP1 000002e0: RETURN 000002e1: JUMPDEST 000002e2: CALLVALUE 000002e3: DUP1 000002e4: ISZERO 000002e5: PUSH2 0x02ed 000002e8: JUMPI 000002e9: PUSH1 0x00 000002eb: DUP1 000002ec: REVERT 000002ed: JUMPDEST 000002ee: POP 000002ef: PUSH2 0x0308 000002f2: PUSH1 0x04 000002f4: DUP1 000002f5: CALLDATASIZE 000002f6: SUB 000002f7: PUSH2 0x0303 000002fa: SWAP2 000002fb: SWAP1 000002fc: DUP2 000002fd: ADD 000002fe: SWAP1 000002ff: PUSH2 0x2da3 00000302: JUMP 00000303: JUMPDEST 00000304: PUSH2 0x0a21 00000307: JUMP 00000308: JUMPDEST 00000309: PUSH1 0x40 0000030b: MLOAD 0000030c: PUSH2 0x0315 0000030f: SWAP2 00000310: SWAP1 00000311: PUSH2 0x321c 00000314: JUMP 00000315: JUMPDEST 00000316: PUSH1 0x40 00000318: MLOAD 00000319: DUP1 0000031a: SWAP2 0000031b: SUB 0000031c: SWAP1 0000031d: RETURN 0000031e: JUMPDEST 0000031f: CALLVALUE 00000320: DUP1 00000321: ISZERO 00000322: PUSH2 0x032a 00000325: JUMPI 00000326: PUSH1 0x00 00000328: DUP1 00000329: REVERT 0000032a: JUMPDEST 0000032b: POP 0000032c: PUSH2 0x0345 0000032f: PUSH1 0x04 00000331: DUP1 00000332: CALLDATASIZE 00000333: SUB 00000334: PUSH2 0x0340 00000337: SWAP2 00000338: SWAP1 00000339: DUP2 0000033a: ADD 0000033b: SWAP1 0000033c: PUSH2 0x2da3 0000033f: JUMP 00000340: JUMPDEST 00000341: PUSH2 0x0a34 00000344: JUMP 00000345: JUMPDEST 00000346: PUSH1 0x40 00000348: MLOAD 00000349: PUSH2 0x0353 0000034c: SWAP3 0000034d: SWAP2 0000034e: SWAP1 0000034f: PUSH2 0x3319 00000352: JUMP 00000353: JUMPDEST 00000354: PUSH1 0x40 00000356: MLOAD 00000357: DUP1 00000358: SWAP2 00000359: SUB 0000035a: SWAP1 0000035b: RETURN 0000035c: JUMPDEST 0000035d: CALLVALUE 0000035e: DUP1 0000035f: ISZERO 00000360: PUSH2 0x0368 00000363: JUMPI 00000364: PUSH1 0x00 00000366: DUP1 00000367: REVERT 00000368: JUMPDEST 00000369: POP 0000036a: PUSH2 0x0383 0000036d: PUSH1 0x04 0000036f: DUP1 00000370: CALLDATASIZE 00000371: SUB 00000372: PUSH2 0x037e 00000375: SWAP2 00000376: SWAP1 00000377: DUP2 00000378: ADD 00000379: SWAP1 0000037a: PUSH2 0x2da3 0000037d: JUMP 0000037e: JUMPDEST 0000037f: PUSH2 0x0a78 00000382: JUMP 00000383: JUMPDEST 00000384: PUSH1 0x40 00000386: MLOAD 00000387: PUSH2 0x0390 0000038a: SWAP2 0000038b: SWAP1 0000038c: PUSH2 0x32fe 0000038f: JUMP 00000390: JUMPDEST 00000391: PUSH1 0x40 00000393: MLOAD 00000394: DUP1 00000395: SWAP2 00000396: SUB 00000397: SWAP1 00000398: RETURN 00000399: JUMPDEST 0000039a: CALLVALUE 0000039b: DUP1 0000039c: ISZERO 0000039d: PUSH2 0x03a5 000003a0: JUMPI 000003a1: PUSH1 0x00 000003a3: DUP1 000003a4: REVERT 000003a5: JUMPDEST 000003a6: POP 000003a7: PUSH2 0x03c0 000003aa: PUSH1 0x04 000003ac: DUP1 000003ad: CALLDATASIZE 000003ae: SUB 000003af: PUSH2 0x03bb 000003b2: SWAP2 000003b3: SWAP1 000003b4: DUP2 000003b5: ADD 000003b6: SWAP1 000003b7: PUSH2 0x2da3 000003ba: JUMP 000003bb: JUMPDEST 000003bc: PUSH2 0x0c0b 000003bf: JUMP 000003c0: JUMPDEST 000003c1: PUSH1 0x40 000003c3: MLOAD 000003c4: PUSH2 0x03cd 000003c7: SWAP2 000003c8: SWAP1 000003c9: PUSH2 0x321c 000003cc: JUMP 000003cd: JUMPDEST 000003ce: PUSH1 0x40 000003d0: MLOAD 000003d1: DUP1 000003d2: SWAP2 000003d3: SUB 000003d4: SWAP1 000003d5: RETURN 000003d6: JUMPDEST 000003d7: CALLVALUE 000003d8: DUP1 000003d9: ISZERO 000003da: PUSH2 0x03e2 000003dd: JUMPI 000003de: PUSH1 0x00 000003e0: DUP1 000003e1: REVERT 000003e2: JUMPDEST 000003e3: POP 000003e4: PUSH2 0x03eb 000003e7: PUSH2 0x0c2d 000003ea: JUMP 000003eb: JUMPDEST 000003ec: PUSH1 0x40 000003ee: MLOAD 000003ef: PUSH2 0x03f8 000003f2: SWAP2 000003f3: SWAP1 000003f4: PUSH2 0x32fe 000003f7: JUMP 000003f8: JUMPDEST 000003f9: PUSH1 0x40 000003fb: MLOAD 000003fc: DUP1 000003fd: SWAP2 000003fe: SUB 000003ff: SWAP1 00000400: RETURN 00000401: JUMPDEST 00000402: CALLVALUE 00000403: DUP1 00000404: ISZERO 00000405: PUSH2 0x040d 00000408: JUMPI 00000409: PUSH1 0x00 0000040b: DUP1 0000040c: REVERT 0000040d: JUMPDEST 0000040e: POP 0000040f: PUSH2 0x0416 00000412: PUSH2 0x0c32 00000415: JUMP 00000416: JUMPDEST 00000417: PUSH1 0x40 00000419: MLOAD 0000041a: PUSH2 0x0423 0000041d: SWAP2 0000041e: SWAP1 0000041f: PUSH2 0x32fe 00000422: JUMP 00000423: JUMPDEST 00000424: PUSH1 0x40 00000426: MLOAD 00000427: DUP1 00000428: SWAP2 00000429: SUB 0000042a: SWAP1 0000042b: RETURN 0000042c: JUMPDEST 0000042d: CALLVALUE 0000042e: DUP1 0000042f: ISZERO 00000430: PUSH2 0x0438 00000433: JUMPI 00000434: PUSH1 0x00 00000436: DUP1 00000437: REVERT 00000438: JUMPDEST 00000439: POP 0000043a: PUSH2 0x0453 0000043d: PUSH1 0x04 0000043f: DUP1 00000440: CALLDATASIZE 00000441: SUB 00000442: PUSH2 0x044e 00000445: SWAP2 00000446: SWAP1 00000447: DUP2 00000448: ADD 00000449: SWAP1 0000044a: PUSH2 0x2fc4 0000044d: JUMP 0000044e: JUMPDEST 0000044f: PUSH2 0x0c37 00000452: JUMP 00000453: JUMPDEST 00000454: PUSH1 0x40 00000456: MLOAD 00000457: PUSH2 0x0460 0000045a: SWAP2 0000045b: SWAP1 0000045c: PUSH2 0x32fe 0000045f: JUMP 00000460: JUMPDEST 00000461: PUSH1 0x40 00000463: MLOAD 00000464: DUP1 00000465: SWAP2 00000466: SUB 00000467: SWAP1 00000468: RETURN 00000469: JUMPDEST 0000046a: CALLVALUE 0000046b: DUP1 0000046c: ISZERO 0000046d: PUSH2 0x0475 00000470: JUMPI 00000471: PUSH1 0x00 00000473: DUP1 00000474: REVERT 00000475: JUMPDEST 00000476: POP 00000477: PUSH2 0x047e 0000047a: PUSH2 0x0c69 0000047d: JUMP 0000047e: JUMPDEST 0000047f: PUSH1 0x40 00000481: MLOAD 00000482: PUSH2 0x048b 00000485: SWAP2 00000486: SWAP1 00000487: PUSH2 0x32fe 0000048a: JUMP 0000048b: JUMPDEST 0000048c: PUSH1 0x40 0000048e: MLOAD 0000048f: DUP1 00000490: SWAP2 00000491: SUB 00000492: SWAP1 00000493: RETURN 00000494: JUMPDEST 00000495: CALLVALUE 00000496: DUP1 00000497: ISZERO 00000498: PUSH2 0x04a0 0000049b: JUMPI 0000049c: PUSH1 0x00 0000049e: DUP1 0000049f: REVERT 000004a0: JUMPDEST 000004a1: POP 000004a2: PUSH2 0x04bb 000004a5: PUSH1 0x04 000004a7: DUP1 000004a8: CALLDATASIZE 000004a9: SUB 000004aa: PUSH2 0x04b6 000004ad: SWAP2 000004ae: SWAP1 000004af: DUP2 000004b0: ADD 000004b1: SWAP1 000004b2: PUSH2 0x2f5f 000004b5: JUMP 000004b6: JUMPDEST 000004b7: PUSH2 0x0c6f 000004ba: JUMP 000004bb: JUMPDEST 000004bc: PUSH1 0x40 000004be: MLOAD 000004bf: PUSH2 0x04c8 000004c2: SWAP2 000004c3: SWAP1 000004c4: PUSH2 0x32fe 000004c7: JUMP 000004c8: JUMPDEST 000004c9: PUSH1 0x40 000004cb: MLOAD 000004cc: DUP1 000004cd: SWAP2 000004ce: SUB 000004cf: SWAP1 000004d0: RETURN 000004d1: JUMPDEST 000004d2: CALLVALUE 000004d3: DUP1 000004d4: ISZERO 000004d5: PUSH2 0x04dd 000004d8: JUMPI 000004d9: PUSH1 0x00 000004db: DUP1 000004dc: REVERT 000004dd: JUMPDEST 000004de: POP 000004df: PUSH2 0x04f8 000004e2: PUSH1 0x04 000004e4: DUP1 000004e5: CALLDATASIZE 000004e6: SUB 000004e7: PUSH2 0x04f3 000004ea: SWAP2 000004eb: SWAP1 000004ec: DUP2 000004ed: ADD 000004ee: SWAP1 000004ef: PUSH2 0x2da3 000004f2: JUMP 000004f3: JUMPDEST 000004f4: PUSH2 0x0cb4 000004f7: JUMP 000004f8: JUMPDEST 000004f9: PUSH1 0x40 000004fb: MLOAD 000004fc: PUSH2 0x0505 000004ff: SWAP2 00000500: SWAP1 00000501: PUSH2 0x32fe 00000504: JUMP 00000505: JUMPDEST 00000506: PUSH1 0x40 00000508: MLOAD 00000509: DUP1 0000050a: SWAP2 0000050b: SUB 0000050c: SWAP1 0000050d: RETURN 0000050e: JUMPDEST 0000050f: CALLVALUE 00000510: DUP1 00000511: ISZERO 00000512: PUSH2 0x051a 00000515: JUMPI 00000516: PUSH1 0x00 00000518: DUP1 00000519: REVERT 0000051a: JUMPDEST 0000051b: POP 0000051c: PUSH2 0x0535 0000051f: PUSH1 0x04 00000521: DUP1 00000522: CALLDATASIZE 00000523: SUB 00000524: PUSH2 0x0530 00000527: SWAP2 00000528: SWAP1 00000529: DUP2 0000052a: ADD 0000052b: SWAP1 0000052c: PUSH2 0x2e31 0000052f: JUMP 00000530: JUMPDEST 00000531: PUSH2 0x0cca 00000534: JUMP 00000535: JUMPDEST 00000536: PUSH1 0x40 00000538: MLOAD 00000539: PUSH2 0x0542 0000053c: SWAP2 0000053d: SWAP1 0000053e: PUSH2 0x321c 00000541: JUMP 00000542: JUMPDEST 00000543: PUSH1 0x40 00000545: MLOAD 00000546: DUP1 00000547: SWAP2 00000548: SUB 00000549: SWAP1 0000054a: RETURN 0000054b: JUMPDEST 0000054c: CALLVALUE 0000054d: DUP1 0000054e: ISZERO 0000054f: PUSH2 0x0557 00000552: JUMPI 00000553: PUSH1 0x00 00000555: DUP1 00000556: REVERT 00000557: JUMPDEST 00000558: POP 00000559: PUSH2 0x0560 0000055c: PUSH2 0x0f0e 0000055f: JUMP 00000560: JUMPDEST 00000561: STOP 00000562: JUMPDEST 00000563: CALLVALUE 00000564: DUP1 00000565: ISZERO 00000566: PUSH2 0x056e 00000569: JUMPI 0000056a: PUSH1 0x00 0000056c: DUP1 0000056d: REVERT 0000056e: JUMPDEST 0000056f: POP 00000570: PUSH2 0x0577 00000573: PUSH2 0x1013 00000576: JUMP 00000577: JUMPDEST 00000578: PUSH1 0x40 0000057a: MLOAD 0000057b: PUSH2 0x0584 0000057e: SWAP2 0000057f: SWAP1 00000580: PUSH2 0x3288 00000583: JUMP 00000584: JUMPDEST 00000585: PUSH1 0x40 00000587: MLOAD 00000588: DUP1 00000589: SWAP2 0000058a: SUB 0000058b: SWAP1 0000058c: RETURN 0000058d: JUMPDEST 0000058e: CALLVALUE 0000058f: DUP1 00000590: ISZERO 00000591: PUSH2 0x0599 00000594: JUMPI 00000595: PUSH1 0x00 00000597: DUP1 00000598: REVERT 00000599: JUMPDEST 0000059a: POP 0000059b: PUSH2 0x05b4 0000059e: PUSH1 0x04 000005a0: DUP1 000005a1: CALLDATASIZE 000005a2: SUB 000005a3: PUSH2 0x05af 000005a6: SWAP2 000005a7: SWAP1 000005a8: DUP2 000005a9: ADD 000005aa: SWAP1 000005ab: PUSH2 0x2fc4 000005ae: JUMP 000005af: JUMPDEST 000005b0: PUSH2 0x1039 000005b3: JUMP 000005b4: JUMPDEST 000005b5: PUSH1 0x40 000005b7: MLOAD 000005b8: PUSH2 0x05c1 000005bb: SWAP2 000005bc: SWAP1 000005bd: PUSH2 0x32fe 000005c0: JUMP 000005c1: JUMPDEST 000005c2: PUSH1 0x40 000005c4: MLOAD 000005c5: DUP1 000005c6: SWAP2 000005c7: SUB 000005c8: SWAP1 000005c9: RETURN 000005ca: JUMPDEST 000005cb: CALLVALUE 000005cc: DUP1 000005cd: ISZERO 000005ce: PUSH2 0x05d6 000005d1: JUMPI 000005d2: PUSH1 0x00 000005d4: DUP1 000005d5: REVERT 000005d6: JUMPDEST 000005d7: POP 000005d8: PUSH2 0x05df 000005db: PUSH2 0x1052 000005de: JUMP 000005df: JUMPDEST 000005e0: PUSH1 0x40 000005e2: MLOAD 000005e3: PUSH2 0x05ec 000005e6: SWAP2 000005e7: SWAP1 000005e8: PUSH2 0x3178 000005eb: JUMP 000005ec: JUMPDEST 000005ed: PUSH1 0x40 000005ef: MLOAD 000005f0: DUP1 000005f1: SWAP2 000005f2: SUB 000005f3: SWAP1 000005f4: RETURN 000005f5: JUMPDEST 000005f6: CALLVALUE 000005f7: DUP1 000005f8: ISZERO 000005f9: PUSH2 0x0601 000005fc: JUMPI 000005fd: PUSH1 0x00 000005ff: DUP1 00000600: REVERT 00000601: JUMPDEST 00000602: POP 00000603: PUSH2 0x061c 00000606: PUSH1 0x04 00000608: DUP1 00000609: CALLDATASIZE 0000060a: SUB 0000060b: PUSH2 0x0617 0000060e: SWAP2 0000060f: SWAP1 00000610: DUP2 00000611: ADD 00000612: SWAP1 00000613: PUSH2 0x2df5 00000616: JUMP 00000617: JUMPDEST 00000618: PUSH2 0x1078 0000061b: JUMP 0000061c: JUMPDEST 0000061d: PUSH1 0x40 0000061f: MLOAD 00000620: PUSH2 0x0629 00000623: SWAP2 00000624: SWAP1 00000625: PUSH2 0x321c 00000628: JUMP 00000629: JUMPDEST 0000062a: PUSH1 0x40 0000062c: MLOAD 0000062d: DUP1 0000062e: SWAP2 0000062f: SUB 00000630: SWAP1 00000631: RETURN 00000632: JUMPDEST 00000633: CALLVALUE 00000634: DUP1 00000635: ISZERO 00000636: PUSH2 0x063e 00000639: JUMPI 0000063a: PUSH1 0x00 0000063c: DUP1 0000063d: REVERT 0000063e: JUMPDEST 0000063f: POP 00000640: PUSH2 0x0659 00000643: PUSH1 0x04 00000645: DUP1 00000646: CALLDATASIZE 00000647: SUB 00000648: PUSH2 0x0654 0000064b: SWAP2 0000064c: SWAP1 0000064d: DUP2 0000064e: ADD 0000064f: SWAP1 00000650: PUSH2 0x2ea8 00000653: JUMP 00000654: JUMPDEST 00000655: PUSH2 0x11d1 00000658: JUMP 00000659: JUMPDEST 0000065a: PUSH1 0x40 0000065c: MLOAD 0000065d: PUSH2 0x0666 00000660: SWAP2 00000661: SWAP1 00000662: PUSH2 0x32fe 00000665: JUMP 00000666: JUMPDEST 00000667: PUSH1 0x40 00000669: MLOAD 0000066a: DUP1 0000066b: SWAP2 0000066c: SUB 0000066d: SWAP1 0000066e: RETURN 0000066f: JUMPDEST 00000670: CALLVALUE 00000671: DUP1 00000672: ISZERO 00000673: PUSH2 0x067b 00000676: JUMPI 00000677: PUSH1 0x00 00000679: DUP1 0000067a: REVERT 0000067b: JUMPDEST 0000067c: POP 0000067d: PUSH2 0x0696 00000680: PUSH1 0x04 00000682: DUP1 00000683: CALLDATASIZE 00000684: SUB 00000685: PUSH2 0x0691 00000688: SWAP2 00000689: SWAP1 0000068a: DUP2 0000068b: ADD 0000068c: SWAP1 0000068d: PUSH2 0x2da3 00000690: JUMP 00000691: JUMPDEST 00000692: PUSH2 0x137c 00000695: JUMP 00000696: JUMPDEST 00000697: PUSH1 0x40 00000699: MLOAD 0000069a: PUSH2 0x06a3 0000069d: SWAP2 0000069e: SWAP1 0000069f: PUSH2 0x32e3 000006a2: JUMP 000006a3: JUMPDEST 000006a4: PUSH1 0x40 000006a6: MLOAD 000006a7: DUP1 000006a8: SWAP2 000006a9: SUB 000006aa: SWAP1 000006ab: RETURN 000006ac: JUMPDEST 000006ad: CALLVALUE 000006ae: DUP1 000006af: ISZERO 000006b0: PUSH2 0x06b8 000006b3: JUMPI 000006b4: PUSH1 0x00 000006b6: DUP1 000006b7: REVERT 000006b8: JUMPDEST 000006b9: POP 000006ba: PUSH2 0x06c1 000006bd: PUSH2 0x1525 000006c0: JUMP 000006c1: JUMPDEST 000006c2: PUSH1 0x40 000006c4: MLOAD 000006c5: PUSH2 0x06ce 000006c8: SWAP2 000006c9: SWAP1 000006ca: PUSH2 0x3252 000006cd: JUMP 000006ce: JUMPDEST 000006cf: PUSH1 0x40 000006d1: MLOAD 000006d2: DUP1 000006d3: SWAP2 000006d4: SUB 000006d5: SWAP1 000006d6: RETURN 000006d7: JUMPDEST 000006d8: CALLVALUE 000006d9: DUP1 000006da: ISZERO 000006db: PUSH2 0x06e3 000006de: JUMPI 000006df: PUSH1 0x00 000006e1: DUP1 000006e2: REVERT 000006e3: JUMPDEST 000006e4: POP 000006e5: PUSH2 0x06ec 000006e8: PUSH2 0x154a 000006eb: JUMP 000006ec: JUMPDEST 000006ed: PUSH1 0x40 000006ef: MLOAD 000006f0: PUSH2 0x06f9 000006f3: SWAP2 000006f4: SWAP1 000006f5: PUSH2 0x326d 000006f8: JUMP 000006f9: JUMPDEST 000006fa: PUSH1 0x40 000006fc: MLOAD 000006fd: DUP1 000006fe: SWAP2 000006ff: SUB 00000700: SWAP1 00000701: RETURN 00000702: JUMPDEST 00000703: CALLVALUE 00000704: DUP1 00000705: ISZERO 00000706: PUSH2 0x070e 00000709: JUMPI 0000070a: PUSH1 0x00 0000070c: DUP1 0000070d: REVERT 0000070e: JUMPDEST 0000070f: POP 00000710: PUSH2 0x0729 00000713: PUSH1 0x04 00000715: DUP1 00000716: CALLDATASIZE 00000717: SUB 00000718: PUSH2 0x0724 0000071b: SWAP2 0000071c: SWAP1 0000071d: DUP2 0000071e: ADD 0000071f: SWAP1 00000720: PUSH2 0x2da3 00000723: JUMP 00000724: JUMPDEST 00000725: PUSH2 0x1570 00000728: JUMP 00000729: JUMPDEST 0000072a: PUSH1 0x40 0000072c: MLOAD 0000072d: PUSH2 0x0736 00000730: SWAP2 00000731: SWAP1 00000732: PUSH2 0x321c 00000735: JUMP 00000736: JUMPDEST 00000737: PUSH1 0x40 00000739: MLOAD 0000073a: DUP1 0000073b: SWAP2 0000073c: SUB 0000073d: SWAP1 0000073e: RETURN 0000073f: JUMPDEST 00000740: CALLVALUE 00000741: DUP1 00000742: ISZERO 00000743: PUSH2 0x074b 00000746: JUMPI 00000747: PUSH1 0x00 00000749: DUP1 0000074a: REVERT 0000074b: JUMPDEST 0000074c: POP 0000074d: PUSH2 0x0754 00000750: PUSH2 0x158d 00000753: JUMP 00000754: JUMPDEST 00000755: PUSH1 0x40 00000757: MLOAD 00000758: PUSH2 0x0761 0000075b: SWAP2 0000075c: SWAP1 0000075d: PUSH2 0x32fe 00000760: JUMP 00000761: JUMPDEST 00000762: PUSH1 0x40 00000764: MLOAD 00000765: DUP1 00000766: SWAP2 00000767: SUB 00000768: SWAP1 00000769: RETURN 0000076a: JUMPDEST 0000076b: CALLVALUE 0000076c: DUP1 0000076d: ISZERO 0000076e: PUSH2 0x0776 00000771: JUMPI 00000772: PUSH1 0x00 00000774: DUP1 00000775: REVERT 00000776: JUMPDEST 00000777: POP 00000778: PUSH2 0x0791 0000077b: PUSH1 0x04 0000077d: DUP1 0000077e: CALLDATASIZE 0000077f: SUB 00000780: PUSH2 0x078c 00000783: SWAP2 00000784: SWAP1 00000785: DUP2 00000786: ADD 00000787: SWAP1 00000788: PUSH2 0x2da3 0000078b: JUMP 0000078c: JUMPDEST 0000078d: PUSH2 0x1593 00000790: JUMP 00000791: JUMPDEST 00000792: PUSH1 0x40 00000794: MLOAD 00000795: PUSH2 0x079e 00000798: SWAP2 00000799: SWAP1 0000079a: PUSH2 0x32fe 0000079d: JUMP 0000079e: JUMPDEST 0000079f: PUSH1 0x40 000007a1: MLOAD 000007a2: DUP1 000007a3: SWAP2 000007a4: SUB 000007a5: SWAP1 000007a6: RETURN 000007a7: JUMPDEST 000007a8: CALLVALUE 000007a9: DUP1 000007aa: ISZERO 000007ab: PUSH2 0x07b3 000007ae: JUMPI 000007af: PUSH1 0x00 000007b1: DUP1 000007b2: REVERT 000007b3: JUMPDEST 000007b4: POP 000007b5: PUSH2 0x07ce 000007b8: PUSH1 0x04 000007ba: DUP1 000007bb: CALLDATASIZE 000007bc: SUB 000007bd: PUSH2 0x07c9 000007c0: SWAP2 000007c1: SWAP1 000007c2: DUP2 000007c3: ADD 000007c4: SWAP1 000007c5: PUSH2 0x2ea8 000007c8: JUMP 000007c9: JUMPDEST 000007ca: PUSH2 0x175d 000007cd: JUMP 000007ce: JUMPDEST 000007cf: STOP 000007d0: JUMPDEST 000007d1: CALLVALUE 000007d2: DUP1 000007d3: ISZERO 000007d4: PUSH2 0x07dc 000007d7: JUMPI 000007d8: PUSH1 0x00 000007da: DUP1 000007db: REVERT 000007dc: JUMPDEST 000007dd: POP 000007de: PUSH2 0x07e5 000007e1: PUSH2 0x17ed 000007e4: JUMP 000007e5: JUMPDEST 000007e6: PUSH1 0x40 000007e8: MLOAD 000007e9: PUSH2 0x07f2 000007ec: SWAP2 000007ed: SWAP1 000007ee: PUSH2 0x326d 000007f1: JUMP 000007f2: JUMPDEST 000007f3: PUSH1 0x40 000007f5: MLOAD 000007f6: DUP1 000007f7: SWAP2 000007f8: SUB 000007f9: SWAP1 000007fa: RETURN 000007fb: JUMPDEST 000007fc: CALLVALUE 000007fd: DUP1 000007fe: ISZERO 000007ff: PUSH2 0x0807 00000802: JUMPI 00000803: PUSH1 0x00 00000805: DUP1 00000806: REVERT 00000807: JUMPDEST 00000808: POP 00000809: PUSH2 0x0822 0000080c: PUSH1 0x04 0000080e: DUP1 0000080f: CALLDATASIZE 00000810: SUB 00000811: PUSH2 0x081d 00000814: SWAP2 00000815: SWAP1 00000816: DUP2 00000817: ADD 00000818: SWAP1 00000819: PUSH2 0x2da3 0000081c: JUMP 0000081d: JUMPDEST 0000081e: PUSH2 0x1813 00000821: JUMP 00000822: JUMPDEST 00000823: PUSH1 0x40 00000825: MLOAD 00000826: PUSH2 0x082f 00000829: SWAP2 0000082a: SWAP1 0000082b: PUSH2 0x321c 0000082e: JUMP 0000082f: JUMPDEST 00000830: PUSH1 0x40 00000832: MLOAD 00000833: DUP1 00000834: SWAP2 00000835: SUB 00000836: SWAP1 00000837: RETURN 00000838: JUMPDEST 00000839: CALLVALUE 0000083a: DUP1 0000083b: ISZERO 0000083c: PUSH2 0x0844 0000083f: JUMPI 00000840: PUSH1 0x00 00000842: DUP1 00000843: REVERT 00000844: JUMPDEST 00000845: POP 00000846: PUSH2 0x084d 00000849: PUSH2 0x188a 0000084c: JUMP 0000084d: JUMPDEST 0000084e: PUSH1 0x40 00000850: MLOAD 00000851: PUSH2 0x085a 00000854: SWAP2 00000855: SWAP1 00000856: PUSH2 0x32fe 00000859: JUMP 0000085a: JUMPDEST 0000085b: PUSH1 0x40 0000085d: MLOAD 0000085e: DUP1 0000085f: SWAP2 00000860: SUB 00000861: SWAP1 00000862: RETURN 00000863: JUMPDEST 00000864: CALLVALUE 00000865: DUP1 00000866: ISZERO 00000867: PUSH2 0x086f 0000086a: JUMPI 0000086b: PUSH1 0x00 0000086d: DUP1 0000086e: REVERT 0000086f: JUMPDEST 00000870: POP 00000871: PUSH2 0x088a 00000874: PUSH1 0x04 00000876: DUP1 00000877: CALLDATASIZE 00000878: SUB 00000879: PUSH2 0x0885 0000087c: SWAP2 0000087d: SWAP1 0000087e: DUP2 0000087f: ADD 00000880: SWAP1 00000881: PUSH2 0x2da3 00000884: JUMP 00000885: JUMPDEST 00000886: PUSH2 0x1892 00000889: JUMP 0000088a: JUMPDEST 0000088b: PUSH1 0x40 0000088d: MLOAD 0000088e: PUSH2 0x0897 00000891: SWAP2 00000892: SWAP1 00000893: PUSH2 0x32fe 00000896: JUMP 00000897: JUMPDEST 00000898: PUSH1 0x40 0000089a: MLOAD 0000089b: DUP1 0000089c: SWAP2 0000089d: SUB 0000089e: SWAP1 0000089f: RETURN 000008a0: JUMPDEST 000008a1: CALLVALUE 000008a2: DUP1 000008a3: ISZERO 000008a4: PUSH2 0x08ac 000008a7: JUMPI 000008a8: PUSH1 0x00 000008aa: DUP1 000008ab: REVERT 000008ac: JUMPDEST 000008ad: POP 000008ae: PUSH2 0x08c7 000008b1: PUSH1 0x04 000008b3: DUP1 000008b4: CALLDATASIZE 000008b5: SUB 000008b6: PUSH2 0x08c2 000008b9: SWAP2 000008ba: SWAP1 000008bb: DUP2 000008bc: ADD 000008bd: SWAP1 000008be: PUSH2 0x2d28 000008c1: JUMP 000008c2: JUMPDEST 000008c3: PUSH2 0x18d7 000008c6: JUMP 000008c7: JUMPDEST 000008c8: STOP 000008c9: JUMPDEST 000008ca: PUSH1 0x00 000008cc: PUSH2 0x08d4 000008cf: DUP3 000008d0: PUSH2 0x1593 000008d3: JUMP 000008d4: JUMPDEST 000008d5: PUSH2 0x08dd 000008d8: DUP4 000008d9: PUSH2 0x0cb4 000008dc: JUMP 000008dd: JUMPDEST 000008de: LT 000008df: SWAP1 000008e0: POP 000008e1: SWAP2 000008e2: SWAP1 000008e3: POP 000008e4: JUMP 000008e5: JUMPDEST 000008e6: PUSH1 0x00 000008e8: PUSH1 0x08 000008ea: PUSH1 0x00 000008ec: DUP4 000008ed: PUSH1 0x00 000008ef: NOT 000008f0: AND 000008f1: PUSH1 0x00 000008f3: NOT 000008f4: AND 000008f5: DUP2 000008f6: MSTORE 000008f7: PUSH1 0x20 000008f9: ADD 000008fa: SWAP1 000008fb: DUP2 000008fc: MSTORE 000008fd: PUSH1 0x20 000008ff: ADD 00000900: PUSH1 0x00 00000902: KECCAK256 00000903: SLOAD 00000904: SWAP1 00000905: POP 00000906: SWAP2 00000907: SWAP1 00000908: POP 00000909: JUMP 0000090a: JUMPDEST 0000090b: PUSH1 0x00 0000090d: PUSH2 0x0914 00000910: PUSH2 0x2baf 00000913: JUMP 00000914: JUMPDEST 00000915: PUSH2 0x091d 00000918: DUP4 00000919: PUSH2 0x193f 0000091c: JUMP 0000091d: JUMPDEST 0000091e: SWAP1 0000091f: POP 00000920: PUSH2 0x0929 00000923: DUP4 00000924: DUP3 00000925: PUSH2 0x1b17 00000928: JUMP 00000929: JUMPDEST 0000092a: ISZERO 0000092b: ISZERO 0000092c: PUSH2 0x0938 0000092f: JUMPI 00000930: PUSH1 0x00 00000932: SWAP2 00000933: POP 00000934: PUSH2 0x09d1 00000937: JUMP 00000938: JUMPDEST 00000939: PUSH2 0x094c 0000093c: DUP4 0000093d: CALLER 0000093e: DUP4 0000093f: PUSH1 0x00 00000941: ADD 00000942: MLOAD 00000943: DUP5 00000944: PUSH1 0x20 00000946: ADD 00000947: MLOAD 00000948: PUSH2 0x1baf 0000094b: JUMP 0000094c: JUMPDEST 0000094d: ISZERO 0000094e: ISZERO 0000094f: PUSH2 0x0957 00000952: JUMPI 00000953: PUSH1 0x00 00000955: DUP1 00000956: REVERT 00000957: JUMPDEST 00000958: PUSH2 0x0965 0000095b: DUP4 0000095c: DUP3 0000095d: PUSH1 0x20 0000095f: ADD 00000960: MLOAD 00000961: PUSH2 0x1d0e 00000964: JUMP 00000965: JUMPDEST 00000966: ISZERO 00000967: ISZERO 00000968: PUSH2 0x0970 0000096b: JUMPI 0000096c: PUSH1 0x00 0000096e: DUP1 0000096f: REVERT 00000970: JUMPDEST 00000971: PUSH2 0x0979 00000974: DUP4 00000975: PUSH2 0x1f4a 00000978: JUMP 00000979: JUMPDEST 0000097a: ISZERO 0000097b: ISZERO 0000097c: PUSH2 0x0984 0000097f: JUMPI 00000980: PUSH1 0x00 00000982: DUP1 00000983: REVERT 00000984: JUMPDEST 00000985: DUP3 00000986: PUSH1 0x00 00000988: NOT 00000989: AND 0000098a: PUSH32 0x6c55695f76744f2886f83cccde28ea951d8a6f689fe34413db04416110af850f 000009ab: DUP3 000009ac: PUSH1 0x00 000009ae: ADD 000009af: MLOAD 000009b0: DUP4 000009b1: PUSH1 0x20 000009b3: ADD 000009b4: MLOAD 000009b5: DUP5 000009b6: PUSH1 0x40 000009b8: ADD 000009b9: MLOAD 000009ba: PUSH1 0x40 000009bc: MLOAD 000009bd: PUSH2 0x09c8 000009c0: SWAP4 000009c1: SWAP3 000009c2: SWAP2 000009c3: SWAP1 000009c4: PUSH2 0x3342 000009c7: JUMP 000009c8: JUMPDEST 000009c9: PUSH1 0x40 000009cb: MLOAD 000009cc: DUP1 000009cd: SWAP2 000009ce: SUB 000009cf: SWAP1 000009d0: LOG2 000009d1: JUMPDEST 000009d2: POP 000009d3: SWAP2 000009d4: SWAP1 000009d5: POP 000009d6: JUMP 000009d7: JUMPDEST 000009d8: PUSH1 0x08 000009da: PUSH1 0x20 000009dc: MSTORE 000009dd: DUP1 000009de: PUSH1 0x00 000009e0: MSTORE 000009e1: PUSH1 0x40 000009e3: PUSH1 0x00 000009e5: KECCAK256 000009e6: PUSH1 0x00 000009e8: SWAP2 000009e9: POP 000009ea: SWAP1 000009eb: POP 000009ec: SLOAD 000009ed: DUP2 000009ee: JUMP 000009ef: JUMPDEST 000009f0: PUSH1 0x00 000009f2: PUSH2 0x0a19 000009f5: PUSH3 0x015180 000009f9: PUSH2 0x0a0b 000009fc: DUP6 000009fd: DUP6 000009fe: PUSH2 0x2009 00000a01: SWAP1 00000a02: SWAP2 00000a03: SWAP1 00000a04: PUSH4 0xffffffff 00000a09: AND 00000a0a: JUMP 00000a0b: JUMPDEST 00000a0c: PUSH2 0x2022 00000a0f: SWAP1 00000a10: SWAP2 00000a11: SWAP1 00000a12: PUSH4 0xffffffff 00000a17: AND 00000a18: JUMP 00000a19: JUMPDEST 00000a1a: SWAP1 00000a1b: POP 00000a1c: SWAP3 00000a1d: SWAP2 00000a1e: POP 00000a1f: POP 00000a20: JUMP 00000a21: JUMPDEST 00000a22: PUSH1 0x00 00000a24: PUSH2 0x0a2c 00000a27: DUP3 00000a28: PUSH2 0x1813 00000a2b: JUMP 00000a2c: JUMPDEST 00000a2d: ISZERO 00000a2e: SWAP1 00000a2f: POP 00000a30: SWAP2 00000a31: SWAP1 00000a32: POP 00000a33: JUMP 00000a34: JUMPDEST 00000a35: PUSH1 0x06 00000a37: PUSH1 0x20 00000a39: MSTORE 00000a3a: DUP1 00000a3b: PUSH1 0x00 00000a3d: MSTORE 00000a3e: PUSH1 0x40 00000a40: PUSH1 0x00 00000a42: KECCAK256 00000a43: PUSH1 0x00 00000a45: SWAP2 00000a46: POP 00000a47: SWAP1 00000a48: POP 00000a49: DUP1 00000a4a: PUSH1 0x00 00000a4c: ADD 00000a4d: SLOAD 00000a4e: SWAP1 00000a4f: DUP1 00000a50: PUSH1 0x01 00000a52: ADD 00000a53: PUSH1 0x00 00000a55: SWAP1 00000a56: SLOAD 00000a57: SWAP1 00000a58: PUSH2 0x0100 00000a5b: EXP 00000a5c: SWAP1 00000a5d: DIV 00000a5e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a73: AND 00000a74: SWAP1 00000a75: POP 00000a76: DUP3 00000a77: JUMP 00000a78: JUMPDEST 00000a79: PUSH1 0x00 00000a7b: PUSH2 0x0a82 00000a7e: PUSH2 0x2bd1 00000a81: JUMP 00000a82: JUMPDEST 00000a83: PUSH1 0x00 00000a85: PUSH2 0x0a8d 00000a88: DUP5 00000a89: PUSH2 0x2038 00000a8c: JUMP 00000a8d: JUMPDEST 00000a8e: SWAP2 00000a8f: POP 00000a90: PUSH1 0x00 00000a92: DUP1 00000a93: SWAP1 00000a94: SLOAD 00000a95: SWAP1 00000a96: PUSH2 0x0100 00000a99: EXP 00000a9a: SWAP1 00000a9b: DIV 00000a9c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ab1: AND 00000ab2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ac7: AND 00000ac8: PUSH4 0x2f866f73 00000acd: PUSH1 0x40 00000acf: MLOAD 00000ad0: DUP2 00000ad1: PUSH4 0xffffffff 00000ad6: AND 00000ad7: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000af5: MUL 00000af6: DUP2 00000af7: MSTORE 00000af8: PUSH1 0x04 00000afa: ADD 00000afb: PUSH1 0x20 00000afd: PUSH1 0x40 00000aff: MLOAD 00000b00: DUP1 00000b01: DUP4 00000b02: SUB 00000b03: DUP2 00000b04: PUSH1 0x00 00000b06: DUP8 00000b07: DUP1 00000b08: EXTCODESIZE 00000b09: ISZERO 00000b0a: DUP1 00000b0b: ISZERO 00000b0c: PUSH2 0x0b14 00000b0f: JUMPI 00000b10: PUSH1 0x00 00000b12: DUP1 00000b13: REVERT 00000b14: JUMPDEST 00000b15: POP 00000b16: GAS 00000b17: CALL 00000b18: ISZERO 00000b19: DUP1 00000b1a: ISZERO 00000b1b: PUSH2 0x0b28 00000b1e: JUMPI 00000b1f: RETURNDATASIZE 00000b20: PUSH1 0x00 00000b22: DUP1 00000b23: RETURNDATACOPY 00000b24: RETURNDATASIZE 00000b25: PUSH1 0x00 00000b27: REVERT 00000b28: JUMPDEST 00000b29: POP 00000b2a: POP 00000b2b: POP 00000b2c: POP 00000b2d: PUSH1 0x40 00000b2f: MLOAD 00000b30: RETURNDATASIZE 00000b31: PUSH1 0x1f 00000b33: NOT 00000b34: PUSH1 0x1f 00000b36: DUP3 00000b37: ADD 00000b38: AND 00000b39: DUP3 00000b3a: ADD 00000b3b: DUP1 00000b3c: PUSH1 0x40 00000b3e: MSTORE 00000b3f: POP 00000b40: PUSH2 0x0b4c 00000b43: SWAP2 00000b44: SWAP1 00000b45: DUP2 00000b46: ADD 00000b47: SWAP1 00000b48: PUSH2 0x2f0d 00000b4b: JUMP 00000b4c: JUMPDEST 00000b4d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b62: AND 00000b63: PUSH4 0xd69dbf63 00000b68: DUP6 00000b69: PUSH1 0x40 00000b6b: MLOAD 00000b6c: DUP3 00000b6d: PUSH4 0xffffffff 00000b72: AND 00000b73: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000b91: MUL 00000b92: DUP2 00000b93: MSTORE 00000b94: PUSH1 0x04 00000b96: ADD 00000b97: PUSH2 0x0ba0 00000b9a: SWAP2 00000b9b: SWAP1 00000b9c: PUSH2 0x3237 00000b9f: JUMP 00000ba0: JUMPDEST 00000ba1: PUSH1 0x20 00000ba3: PUSH1 0x40 00000ba5: MLOAD 00000ba6: DUP1 00000ba7: DUP4 00000ba8: SUB 00000ba9: DUP2 00000baa: PUSH1 0x00 00000bac: DUP8 00000bad: DUP1 00000bae: EXTCODESIZE 00000baf: ISZERO 00000bb0: DUP1 00000bb1: ISZERO 00000bb2: PUSH2 0x0bba 00000bb5: JUMPI 00000bb6: PUSH1 0x00 00000bb8: DUP1 00000bb9: REVERT 00000bba: JUMPDEST 00000bbb: POP 00000bbc: GAS 00000bbd: CALL 00000bbe: ISZERO 00000bbf: DUP1 00000bc0: ISZERO 00000bc1: PUSH2 0x0bce 00000bc4: JUMPI 00000bc5: RETURNDATASIZE 00000bc6: PUSH1 0x00 00000bc8: DUP1 00000bc9: RETURNDATACOPY 00000bca: RETURNDATASIZE 00000bcb: PUSH1 0x00 00000bcd: REVERT 00000bce: JUMPDEST 00000bcf: POP 00000bd0: POP 00000bd1: POP 00000bd2: POP 00000bd3: PUSH1 0x40 00000bd5: MLOAD 00000bd6: RETURNDATASIZE 00000bd7: PUSH1 0x1f 00000bd9: NOT 00000bda: PUSH1 0x1f 00000bdc: DUP3 00000bdd: ADD 00000bde: AND 00000bdf: DUP3 00000be0: ADD 00000be1: DUP1 00000be2: PUSH1 0x40 00000be4: MSTORE 00000be5: POP 00000be6: PUSH2 0x0bf2 00000be9: SWAP2 00000bea: SWAP1 00000beb: DUP2 00000bec: ADD 00000bed: SWAP1 00000bee: PUSH2 0x2f9b 00000bf1: JUMP 00000bf2: JUMPDEST 00000bf3: SWAP1 00000bf4: POP 00000bf5: PUSH2 0x0c02 00000bf8: DUP2 00000bf9: DUP4 00000bfa: PUSH1 0x00 00000bfc: ADD 00000bfd: MLOAD 00000bfe: PUSH2 0x0c37 00000c01: JUMP 00000c02: JUMPDEST 00000c03: SWAP3 00000c04: POP 00000c05: POP 00000c06: POP 00000c07: SWAP2 00000c08: SWAP1 00000c09: POP 00000c0a: JUMP 00000c0b: JUMPDEST 00000c0c: PUSH1 0x00 00000c0e: PUSH2 0x0c16 00000c11: DUP3 00000c12: PUSH2 0x08c9 00000c15: JUMP 00000c16: JUMPDEST 00000c17: DUP1 00000c18: PUSH2 0x0c26 00000c1b: JUMPI 00000c1c: POP 00000c1d: PUSH2 0x0c25 00000c20: DUP3 00000c21: PUSH2 0x1570 00000c24: JUMP 00000c25: JUMPDEST 00000c26: JUMPDEST 00000c27: SWAP1 00000c28: POP 00000c29: SWAP2 00000c2a: SWAP1 00000c2b: POP 00000c2c: JUMP 00000c2d: JUMPDEST 00000c2e: PUSH1 0x12 00000c30: DUP2 00000c31: JUMP 00000c32: JUMPDEST 00000c33: PUSH1 0x02 00000c35: DUP2 00000c36: JUMP 00000c37: JUMPDEST 00000c38: PUSH1 0x00 00000c3a: PUSH2 0x0c61 00000c3d: PUSH2 0x0c52 00000c40: PUSH3 0x015180 00000c44: DUP5 00000c45: PUSH2 0x21b8 00000c48: SWAP1 00000c49: SWAP2 00000c4a: SWAP1 00000c4b: PUSH4 0xffffffff 00000c50: AND 00000c51: JUMP 00000c52: JUMPDEST 00000c53: DUP5 00000c54: PUSH2 0x21f0 00000c57: SWAP1 00000c58: SWAP2 00000c59: SWAP1 00000c5a: PUSH4 0xffffffff 00000c5f: AND 00000c60: JUMP 00000c61: JUMPDEST 00000c62: SWAP1 00000c63: POP 00000c64: SWAP3 00000c65: SWAP2 00000c66: POP 00000c67: POP 00000c68: JUMP 00000c69: JUMPDEST 00000c6a: PUSH1 0x02 00000c6c: SLOAD 00000c6d: DUP2 00000c6e: JUMP 00000c6f: JUMPDEST 00000c70: PUSH1 0x00 00000c72: PUSH2 0x0cac 00000c75: PUSH2 0x0c89 00000c78: PUSH1 0x04 00000c7a: SLOAD 00000c7b: DUP5 00000c7c: PUSH2 0x220c 00000c7f: SWAP1 00000c80: SWAP2 00000c81: SWAP1 00000c82: PUSH4 0xffffffff 00000c87: AND 00000c88: JUMP 00000c89: JUMPDEST 00000c8a: PUSH2 0x0c9e 00000c8d: PUSH1 0x04 00000c8f: SLOAD 00000c90: DUP7 00000c91: PUSH2 0x220c 00000c94: SWAP1 00000c95: SWAP2 00000c96: SWAP1 00000c97: PUSH4 0xffffffff 00000c9c: AND 00000c9d: JUMP 00000c9e: JUMPDEST 00000c9f: PUSH2 0x2009 00000ca2: SWAP1 00000ca3: SWAP2 00000ca4: SWAP1 00000ca5: PUSH4 0xffffffff 00000caa: AND 00000cab: JUMP 00000cac: JUMPDEST 00000cad: SWAP1 00000cae: POP 00000caf: SWAP3 00000cb0: SWAP2 00000cb1: POP 00000cb2: POP 00000cb3: JUMP 00000cb4: JUMPDEST 00000cb5: PUSH1 0x00 00000cb7: PUSH2 0x0cbf 00000cba: DUP3 00000cbb: PUSH2 0x2038 00000cbe: JUMP 00000cbf: JUMPDEST 00000cc0: PUSH1 0x20 00000cc2: ADD 00000cc3: MLOAD 00000cc4: SWAP1 00000cc5: POP 00000cc6: SWAP2 00000cc7: SWAP1 00000cc8: POP 00000cc9: JUMP 00000cca: JUMPDEST 00000ccb: PUSH1 0x00 00000ccd: DUP1 00000cce: PUSH1 0x00 00000cd0: DUP1 00000cd1: SWAP1 00000cd2: SLOAD 00000cd3: SWAP1 00000cd4: PUSH2 0x0100 00000cd7: EXP 00000cd8: SWAP1 00000cd9: DIV 00000cda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cef: AND 00000cf0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d05: AND 00000d06: PUSH4 0x6fa9d056 00000d0b: PUSH1 0x40 00000d0d: MLOAD 00000d0e: DUP2 00000d0f: PUSH4 0xffffffff 00000d14: AND 00000d15: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000d33: MUL 00000d34: DUP2 00000d35: MSTORE 00000d36: PUSH1 0x04 00000d38: ADD 00000d39: PUSH1 0x20 00000d3b: PUSH1 0x40 00000d3d: MLOAD 00000d3e: DUP1 00000d3f: DUP4 00000d40: SUB 00000d41: DUP2 00000d42: PUSH1 0x00 00000d44: DUP8 00000d45: DUP1 00000d46: EXTCODESIZE 00000d47: ISZERO 00000d48: DUP1 00000d49: ISZERO 00000d4a: PUSH2 0x0d52 00000d4d: JUMPI 00000d4e: PUSH1 0x00 00000d50: DUP1 00000d51: REVERT 00000d52: JUMPDEST 00000d53: POP 00000d54: GAS 00000d55: CALL 00000d56: ISZERO 00000d57: DUP1 00000d58: ISZERO 00000d59: PUSH2 0x0d66 00000d5c: JUMPI 00000d5d: RETURNDATASIZE 00000d5e: PUSH1 0x00 00000d60: DUP1 00000d61: RETURNDATACOPY 00000d62: RETURNDATASIZE 00000d63: PUSH1 0x00 00000d65: REVERT 00000d66: JUMPDEST 00000d67: POP 00000d68: POP 00000d69: POP 00000d6a: POP 00000d6b: PUSH1 0x40 00000d6d: MLOAD 00000d6e: RETURNDATASIZE 00000d6f: PUSH1 0x1f 00000d71: NOT 00000d72: PUSH1 0x1f 00000d74: DUP3 00000d75: ADD 00000d76: AND 00000d77: DUP3 00000d78: ADD 00000d79: DUP1 00000d7a: PUSH1 0x40 00000d7c: MSTORE 00000d7d: POP 00000d7e: PUSH2 0x0d8a 00000d81: SWAP2 00000d82: SWAP1 00000d83: DUP2 00000d84: ADD 00000d85: SWAP1 00000d86: PUSH2 0x2f36 00000d89: JUMP 00000d8a: JUMPDEST 00000d8b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000da0: AND 00000da1: CALLER 00000da2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000db7: AND 00000db8: EQ 00000db9: ISZERO 00000dba: ISZERO 00000dbb: PUSH2 0x0df9 00000dbe: JUMPI 00000dbf: PUSH1 0x40 00000dc1: MLOAD 00000dc2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000de3: DUP2 00000de4: MSTORE 00000de5: PUSH1 0x04 00000de7: ADD 00000de8: PUSH2 0x0df0 00000deb: SWAP1 00000dec: PUSH2 0x32a3 00000def: JUMP 00000df0: JUMPDEST 00000df1: PUSH1 0x40 00000df3: MLOAD 00000df4: DUP1 00000df5: SWAP2 00000df6: SUB 00000df7: SWAP1 00000df8: REVERT 00000df9: JUMPDEST 00000dfa: PUSH1 0x01 00000dfc: PUSH1 0x00 00000dfe: SWAP1 00000dff: SLOAD 00000e00: SWAP1 00000e01: PUSH2 0x0100 00000e04: EXP 00000e05: SWAP1 00000e06: DIV 00000e07: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e1c: AND 00000e1d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e32: AND 00000e33: DUP4 00000e34: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e49: AND 00000e4a: EQ 00000e4b: ISZERO 00000e4c: ISZERO 00000e4d: PUSH2 0x0e59 00000e50: JUMPI 00000e51: PUSH1 0x00 00000e53: SWAP2 00000e54: POP 00000e55: PUSH2 0x0f04 00000e58: JUMP 00000e59: JUMPDEST 00000e5a: PUSH2 0x0e87 00000e5d: DUP5 00000e5e: PUSH1 0x08 00000e60: PUSH1 0x00 00000e62: DUP11 00000e63: PUSH1 0x00 00000e65: NOT 00000e66: AND 00000e67: PUSH1 0x00 00000e69: NOT 00000e6a: AND 00000e6b: DUP2 00000e6c: MSTORE 00000e6d: PUSH1 0x20 00000e6f: ADD 00000e70: SWAP1 00000e71: DUP2 00000e72: MSTORE 00000e73: PUSH1 0x20 00000e75: ADD 00000e76: PUSH1 0x00 00000e78: KECCAK256 00000e79: SLOAD 00000e7a: PUSH2 0x21f0 00000e7d: SWAP1 00000e7e: SWAP2 00000e7f: SWAP1 00000e80: PUSH4 0xffffffff 00000e85: AND 00000e86: JUMP 00000e87: JUMPDEST 00000e88: PUSH1 0x08 00000e8a: PUSH1 0x00 00000e8c: DUP10 00000e8d: PUSH1 0x00 00000e8f: NOT 00000e90: AND 00000e91: PUSH1 0x00 00000e93: NOT 00000e94: AND 00000e95: DUP2 00000e96: MSTORE 00000e97: PUSH1 0x20 00000e99: ADD 00000e9a: SWAP1 00000e9b: DUP2 00000e9c: MSTORE 00000e9d: PUSH1 0x20 00000e9f: ADD 00000ea0: PUSH1 0x00 00000ea2: KECCAK256 00000ea3: DUP2 00000ea4: SWAP1 00000ea5: SSTORE 00000ea6: POP 00000ea7: PUSH2 0x0eb8 00000eaa: DUP8 00000eab: PUSH2 0x0eb3 00000eae: DUP10 00000eaf: PUSH2 0x0a78 00000eb2: JUMP 00000eb3: JUMPDEST 00000eb4: PUSH2 0x11d1 00000eb7: JUMP 00000eb8: JUMPDEST 00000eb9: SWAP1 00000eba: POP 00000ebb: DUP1 00000ebc: PUSH1 0x08 00000ebe: PUSH1 0x00 00000ec0: DUP10 00000ec1: PUSH1 0x00 00000ec3: NOT 00000ec4: AND 00000ec5: PUSH1 0x00 00000ec7: NOT 00000ec8: AND 00000ec9: DUP2 00000eca: MSTORE 00000ecb: PUSH1 0x20 00000ecd: ADD 00000ece: SWAP1 00000ecf: DUP2 00000ed0: MSTORE 00000ed1: PUSH1 0x20 00000ed3: ADD 00000ed4: PUSH1 0x00 00000ed6: KECCAK256 00000ed7: SLOAD 00000ed8: LT 00000ed9: ISZERO 00000eda: DUP1 00000edb: ISZERO 00000edc: PUSH2 0x0eea 00000edf: JUMPI 00000ee0: POP 00000ee1: PUSH2 0x0ee9 00000ee4: DUP8 00000ee5: PUSH2 0x1813 00000ee8: JUMP 00000ee9: JUMPDEST 00000eea: JUMPDEST 00000eeb: ISZERO 00000eec: PUSH2 0x0eff 00000eef: JUMPI 00000ef0: PUSH2 0x0ef8 00000ef3: DUP8 00000ef4: PUSH2 0x1f4a 00000ef7: JUMP 00000ef8: JUMPDEST 00000ef9: SWAP2 00000efa: POP 00000efb: PUSH2 0x0f04 00000efe: JUMP 00000eff: JUMPDEST 00000f00: PUSH1 0x01 00000f02: SWAP2 00000f03: POP 00000f04: JUMPDEST 00000f05: POP 00000f06: SWAP6 00000f07: SWAP5 00000f08: POP 00000f09: POP 00000f0a: POP 00000f0b: POP 00000f0c: POP 00000f0d: JUMP 00000f0e: JUMPDEST 00000f0f: PUSH1 0x07 00000f11: PUSH1 0x00 00000f13: SWAP1 00000f14: SLOAD 00000f15: SWAP1 00000f16: PUSH2 0x0100 00000f19: EXP 00000f1a: SWAP1 00000f1b: DIV 00000f1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f31: AND 00000f32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f47: AND 00000f48: CALLER 00000f49: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f5e: AND 00000f5f: EQ 00000f60: ISZERO 00000f61: ISZERO 00000f62: PUSH2 0x0f6a 00000f65: JUMPI 00000f66: PUSH1 0x00 00000f68: DUP1 00000f69: REVERT 00000f6a: JUMPDEST 00000f6b: PUSH1 0x07 00000f6d: PUSH1 0x00 00000f6f: SWAP1 00000f70: SLOAD 00000f71: SWAP1 00000f72: PUSH2 0x0100 00000f75: EXP 00000f76: SWAP1 00000f77: DIV 00000f78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f8d: AND 00000f8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fa3: AND 00000fa4: PUSH32 0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820 00000fc5: PUSH1 0x40 00000fc7: MLOAD 00000fc8: PUSH1 0x40 00000fca: MLOAD 00000fcb: DUP1 00000fcc: SWAP2 00000fcd: SUB 00000fce: SWAP1 00000fcf: LOG2 00000fd0: PUSH1 0x00 00000fd2: PUSH1 0x07 00000fd4: PUSH1 0x00 00000fd6: PUSH2 0x0100 00000fd9: EXP 00000fda: DUP2 00000fdb: SLOAD 00000fdc: DUP2 00000fdd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ff2: MUL 00000ff3: NOT 00000ff4: AND 00000ff5: SWAP1 00000ff6: DUP4 00000ff7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000100c: AND 0000100d: MUL 0000100e: OR 0000100f: SWAP1 00001010: SSTORE 00001011: POP 00001012: JUMP 00001013: JUMPDEST 00001014: PUSH1 0x05 00001016: PUSH1 0x00 00001018: SWAP1 00001019: SLOAD 0000101a: SWAP1 0000101b: PUSH2 0x0100 0000101e: EXP 0000101f: SWAP1 00001020: DIV 00001021: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001036: AND 00001037: DUP2 00001038: JUMP 00001039: JUMPDEST 0000103a: PUSH1 0x00 0000103c: DUP2 0000103d: DUP4 0000103e: LT 0000103f: PUSH2 0x1048 00001042: JUMPI 00001043: DUP2 00001044: PUSH2 0x104a 00001047: JUMP 00001048: JUMPDEST 00001049: DUP3 0000104a: JUMPDEST 0000104b: SWAP1 0000104c: POP 0000104d: SWAP3 0000104e: SWAP2 0000104f: POP 00001050: POP 00001051: JUMP 00001052: JUMPDEST 00001053: PUSH1 0x07 00001055: PUSH1 0x00 00001057: SWAP1 00001058: SLOAD 00001059: SWAP1 0000105a: PUSH2 0x0100 0000105d: EXP 0000105e: SWAP1 0000105f: DIV 00001060: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001075: AND 00001076: DUP2 00001077: JUMP 00001078: JUMPDEST 00001079: PUSH1 0x00 0000107b: PUSH2 0x1082 0000107e: PUSH2 0x2bd1 00001081: JUMP 00001082: JUMPDEST 00001083: PUSH1 0x00 00001085: DUP1 00001086: SWAP1 00001087: SLOAD 00001088: SWAP1 00001089: PUSH2 0x0100 0000108c: EXP 0000108d: SWAP1 0000108e: DIV 0000108f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010a4: AND 000010a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010ba: AND 000010bb: PUSH4 0x079dd4b7 000010c0: PUSH1 0x40 000010c2: MLOAD 000010c3: DUP2 000010c4: PUSH4 0xffffffff 000010c9: AND 000010ca: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000010e8: MUL 000010e9: DUP2 000010ea: MSTORE 000010eb: PUSH1 0x04 000010ed: ADD 000010ee: PUSH1 0x20 000010f0: PUSH1 0x40 000010f2: MLOAD 000010f3: DUP1 000010f4: DUP4 000010f5: SUB 000010f6: DUP2 000010f7: PUSH1 0x00 000010f9: DUP8 000010fa: DUP1 000010fb: EXTCODESIZE 000010fc: ISZERO 000010fd: DUP1 000010fe: ISZERO 000010ff: PUSH2 0x1107 00001102: JUMPI 00001103: PUSH1 0x00 00001105: DUP1 00001106: REVERT 00001107: JUMPDEST 00001108: POP 00001109: GAS 0000110a: CALL 0000110b: ISZERO 0000110c: DUP1 0000110d: ISZERO 0000110e: PUSH2 0x111b 00001111: JUMPI 00001112: RETURNDATASIZE 00001113: PUSH1 0x00 00001115: DUP1 00001116: RETURNDATACOPY 00001117: RETURNDATASIZE 00001118: PUSH1 0x00 0000111a: REVERT 0000111b: JUMPDEST 0000111c: POP 0000111d: POP 0000111e: POP 0000111f: POP 00001120: PUSH1 0x40 00001122: MLOAD 00001123: RETURNDATASIZE 00001124: PUSH1 0x1f 00001126: NOT 00001127: PUSH1 0x1f 00001129: DUP3 0000112a: ADD 0000112b: AND 0000112c: DUP3 0000112d: ADD 0000112e: DUP1 0000112f: PUSH1 0x40 00001131: MSTORE 00001132: POP 00001133: PUSH2 0x113f 00001136: SWAP2 00001137: SWAP1 00001138: DUP2 00001139: ADD 0000113a: SWAP1 0000113b: PUSH2 0x2ee4 0000113e: JUMP 0000113f: JUMPDEST 00001140: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001155: AND 00001156: CALLER 00001157: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000116c: AND 0000116d: EQ 0000116e: ISZERO 0000116f: ISZERO 00001170: PUSH2 0x11ae 00001173: JUMPI 00001174: PUSH1 0x40 00001176: MLOAD 00001177: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001198: DUP2 00001199: MSTORE 0000119a: PUSH1 0x04 0000119c: ADD 0000119d: PUSH2 0x11a5 000011a0: SWAP1 000011a1: PUSH2 0x32c3 000011a4: JUMP 000011a5: JUMPDEST 000011a6: PUSH1 0x40 000011a8: MLOAD 000011a9: DUP1 000011aa: SWAP2 000011ab: SUB 000011ac: SWAP1 000011ad: REVERT 000011ae: JUMPDEST 000011af: PUSH2 0x11b7 000011b2: DUP5 000011b3: PUSH2 0x2038 000011b6: JUMP 000011b7: JUMPDEST 000011b8: SWAP1 000011b9: POP 000011ba: PUSH2 0x11c8 000011bd: DUP5 000011be: DUP3 000011bf: PUSH1 0x60 000011c1: ADD 000011c2: MLOAD 000011c3: DUP6 000011c4: PUSH2 0x2254 000011c7: JUMP 000011c8: JUMPDEST 000011c9: SWAP2 000011ca: POP 000011cb: POP 000011cc: SWAP3 000011cd: SWAP2 000011ce: POP 000011cf: POP 000011d0: JUMP 000011d1: JUMPDEST 000011d2: PUSH1 0x00 000011d4: PUSH2 0x11db 000011d7: PUSH2 0x2bd1 000011da: JUMP 000011db: JUMPDEST 000011dc: PUSH1 0x00 000011de: PUSH2 0x11e6 000011e1: DUP6 000011e2: PUSH2 0x2038 000011e5: JUMP 000011e6: JUMPDEST 000011e7: SWAP2 000011e8: POP 000011e9: PUSH1 0x00 000011eb: DUP1 000011ec: SWAP1 000011ed: SLOAD 000011ee: SWAP1 000011ef: PUSH2 0x0100 000011f2: EXP 000011f3: SWAP1 000011f4: DIV 000011f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000120a: AND 0000120b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001220: AND 00001221: PUSH4 0x2f866f73 00001226: PUSH1 0x40 00001228: MLOAD 00001229: DUP2 0000122a: PUSH4 0xffffffff 0000122f: AND 00001230: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000124e: MUL 0000124f: DUP2 00001250: MSTORE 00001251: PUSH1 0x04 00001253: ADD 00001254: PUSH1 0x20 00001256: PUSH1 0x40 00001258: MLOAD 00001259: DUP1 0000125a: DUP4 0000125b: SUB 0000125c: DUP2 0000125d: PUSH1 0x00 0000125f: DUP8 00001260: DUP1 00001261: EXTCODESIZE 00001262: ISZERO 00001263: DUP1 00001264: ISZERO 00001265: PUSH2 0x126d 00001268: JUMPI 00001269: PUSH1 0x00 0000126b: DUP1 0000126c: REVERT 0000126d: JUMPDEST 0000126e: POP 0000126f: GAS 00001270: CALL 00001271: ISZERO 00001272: DUP1 00001273: ISZERO 00001274: PUSH2 0x1281 00001277: JUMPI 00001278: RETURNDATASIZE 00001279: PUSH1 0x00 0000127b: DUP1 0000127c: RETURNDATACOPY 0000127d: RETURNDATASIZE 0000127e: PUSH1 0x00 00001280: REVERT 00001281: JUMPDEST 00001282: POP 00001283: POP 00001284: POP 00001285: POP 00001286: PUSH1 0x40 00001288: MLOAD 00001289: RETURNDATASIZE 0000128a: PUSH1 0x1f 0000128c: NOT 0000128d: PUSH1 0x1f 0000128f: DUP3 00001290: ADD 00001291: AND 00001292: DUP3 00001293: ADD 00001294: DUP1 00001295: PUSH1 0x40 00001297: MSTORE 00001298: POP 00001299: PUSH2 0x12a5 0000129c: SWAP2 0000129d: SWAP1 0000129e: DUP2 0000129f: ADD 000012a0: SWAP1 000012a1: PUSH2 0x2f0d 000012a4: JUMP 000012a5: JUMPDEST 000012a6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012bb: AND 000012bc: PUSH4 0xd69dbf63 000012c1: DUP7 000012c2: PUSH1 0x40 000012c4: MLOAD 000012c5: DUP3 000012c6: PUSH4 0xffffffff 000012cb: AND 000012cc: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000012ea: MUL 000012eb: DUP2 000012ec: MSTORE 000012ed: PUSH1 0x04 000012ef: ADD 000012f0: PUSH2 0x12f9 000012f3: SWAP2 000012f4: SWAP1 000012f5: PUSH2 0x3237 000012f8: JUMP 000012f9: JUMPDEST 000012fa: PUSH1 0x20 000012fc: PUSH1 0x40 000012fe: MLOAD 000012ff: DUP1 00001300: DUP4 00001301: SUB 00001302: DUP2 00001303: PUSH1 0x00 00001305: DUP8 00001306: DUP1 00001307: EXTCODESIZE 00001308: ISZERO 00001309: DUP1 0000130a: ISZERO 0000130b: PUSH2 0x1313 0000130e: JUMPI 0000130f: PUSH1 0x00 00001311: DUP1 00001312: REVERT 00001313: JUMPDEST 00001314: POP 00001315: GAS 00001316: CALL 00001317: ISZERO 00001318: DUP1 00001319: ISZERO 0000131a: PUSH2 0x1327 0000131d: JUMPI 0000131e: RETURNDATASIZE 0000131f: PUSH1 0x00 00001321: DUP1 00001322: RETURNDATACOPY 00001323: RETURNDATASIZE 00001324: PUSH1 0x00 00001326: REVERT 00001327: JUMPDEST 00001328: POP 00001329: POP 0000132a: POP 0000132b: POP 0000132c: PUSH1 0x40 0000132e: MLOAD 0000132f: RETURNDATASIZE 00001330: PUSH1 0x1f 00001332: NOT 00001333: PUSH1 0x1f 00001335: DUP3 00001336: ADD 00001337: AND 00001338: DUP3 00001339: ADD 0000133a: DUP1 0000133b: PUSH1 0x40 0000133d: MSTORE 0000133e: POP 0000133f: PUSH2 0x134b 00001342: SWAP2 00001343: SWAP1 00001344: DUP2 00001345: ADD 00001346: SWAP1 00001347: PUSH2 0x2f9b 0000134a: JUMP 0000134b: JUMPDEST 0000134c: SWAP1 0000134d: POP 0000134e: DUP2 0000134f: PUSH1 0x00 00001351: ADD 00001352: MLOAD 00001353: PUSH2 0x135c 00001356: DUP3 00001357: DUP7 00001358: PUSH2 0x09ef 0000135b: JUMP 0000135c: JUMPDEST 0000135d: LT 0000135e: ISZERO 0000135f: ISZERO 00001360: PUSH2 0x136f 00001363: JUMPI 00001364: DUP2 00001365: PUSH1 0x40 00001367: ADD 00001368: MLOAD 00001369: SWAP3 0000136a: POP 0000136b: PUSH2 0x1374 0000136e: JUMP 0000136f: JUMPDEST 00001370: PUSH1 0x00 00001372: SWAP3 00001373: POP 00001374: JUMPDEST 00001375: POP 00001376: POP 00001377: SWAP3 00001378: SWAP2 00001379: POP 0000137a: POP 0000137b: JUMP 0000137c: JUMPDEST 0000137d: PUSH2 0x1384 00001380: PUSH2 0x2bfa 00001383: JUMP 00001384: JUMPDEST 00001385: PUSH1 0x00 00001387: DUP1 00001388: PUSH1 0x00 0000138a: PUSH2 0x1391 0000138d: PUSH2 0x2bfa 00001390: JUMP 00001391: JUMPDEST 00001392: PUSH1 0x00 00001394: PUSH2 0x139b 00001397: PUSH2 0x2bfa 0000139a: JUMP 0000139b: JUMPDEST 0000139c: PUSH2 0x13a3 0000139f: PUSH2 0x2bfa 000013a2: JUMP 000013a3: JUMPDEST 000013a4: PUSH1 0x00 000013a6: PUSH2 0x13ad 000013a9: PUSH2 0x2bfa 000013ac: JUMP 000013ad: JUMPDEST 000013ae: PUSH1 0x02 000013b0: SLOAD 000013b1: PUSH1 0x0a 000013b3: EXP 000013b4: SWAP9 000013b5: POP 000013b6: PUSH1 0x04 000013b8: SLOAD 000013b9: PUSH1 0x0a 000013bb: EXP 000013bc: SWAP8 000013bd: POP 000013be: PUSH1 0x05 000013c0: PUSH1 0x00 000013c2: SWAP1 000013c3: SLOAD 000013c4: SWAP1 000013c5: PUSH2 0x0100 000013c8: EXP 000013c9: SWAP1 000013ca: DIV 000013cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013e0: AND 000013e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013f6: AND 000013f7: PUSH4 0x57de26a4 000013fc: PUSH1 0x40 000013fe: MLOAD 000013ff: DUP2 00001400: PUSH4 0xffffffff 00001405: AND 00001406: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001424: MUL 00001425: DUP2 00001426: MSTORE 00001427: PUSH1 0x04 00001429: ADD 0000142a: PUSH1 0x20 0000142c: PUSH1 0x40 0000142e: MLOAD 0000142f: DUP1 00001430: DUP4 00001431: SUB 00001432: DUP2 00001433: PUSH1 0x00 00001435: DUP8 00001436: DUP1 00001437: EXTCODESIZE 00001438: ISZERO 00001439: DUP1 0000143a: ISZERO 0000143b: PUSH2 0x1443 0000143e: JUMPI 0000143f: PUSH1 0x00 00001441: DUP1 00001442: REVERT 00001443: JUMPDEST 00001444: POP 00001445: GAS 00001446: CALL 00001447: ISZERO 00001448: DUP1 00001449: ISZERO 0000144a: PUSH2 0x1457 0000144d: JUMPI 0000144e: RETURNDATASIZE 0000144f: PUSH1 0x00 00001451: DUP1 00001452: RETURNDATACOPY 00001453: RETURNDATASIZE 00001454: PUSH1 0x00 00001456: REVERT 00001457: JUMPDEST 00001458: POP 00001459: POP 0000145a: POP 0000145b: POP 0000145c: PUSH1 0x40 0000145e: MLOAD 0000145f: RETURNDATASIZE 00001460: PUSH1 0x1f 00001462: NOT 00001463: PUSH1 0x1f 00001465: DUP3 00001466: ADD 00001467: AND 00001468: DUP3 00001469: ADD 0000146a: DUP1 0000146b: PUSH1 0x40 0000146d: MSTORE 0000146e: POP 0000146f: PUSH2 0x147b 00001472: SWAP2 00001473: SWAP1 00001474: DUP2 00001475: ADD 00001476: SWAP1 00001477: PUSH2 0x2dcc 0000147a: JUMP 0000147b: JUMPDEST 0000147c: PUSH1 0x01 0000147e: SWAP1 0000147f: DIV 00001480: SWAP7 00001481: POP 00001482: PUSH1 0x40 00001484: DUP1 00001485: MLOAD 00001486: SWAP1 00001487: DUP2 00001488: ADD 00001489: PUSH1 0x40 0000148b: MSTORE 0000148c: DUP1 0000148d: DUP9 0000148e: DUP2 0000148f: MSTORE 00001490: PUSH1 0x20 00001492: ADD 00001493: PUSH1 0x12 00001495: PUSH1 0x0a 00001497: EXP 00001498: DUP2 00001499: MSTORE 0000149a: POP 0000149b: SWAP6 0000149c: POP 0000149d: PUSH2 0x14a5 000014a0: DUP12 000014a1: PUSH2 0x1892 000014a4: JUMP 000014a5: JUMPDEST 000014a6: SWAP5 000014a7: POP 000014a8: PUSH1 0x40 000014aa: DUP1 000014ab: MLOAD 000014ac: SWAP1 000014ad: DUP2 000014ae: ADD 000014af: PUSH1 0x40 000014b1: MSTORE 000014b2: DUP1 000014b3: DUP7 000014b4: DUP2 000014b5: MSTORE 000014b6: PUSH1 0x20 000014b8: ADD 000014b9: DUP11 000014ba: DUP2 000014bb: MSTORE 000014bc: POP 000014bd: SWAP4 000014be: POP 000014bf: PUSH2 0x14d1 000014c2: DUP7 000014c3: DUP6 000014c4: PUSH2 0x23e5 000014c7: SWAP1 000014c8: SWAP2 000014c9: SWAP1 000014ca: PUSH4 0xffffffff 000014cf: AND 000014d0: JUMP 000014d1: JUMPDEST 000014d2: SWAP3 000014d3: POP 000014d4: PUSH1 0x06 000014d6: PUSH1 0x00 000014d8: DUP13 000014d9: PUSH1 0x00 000014db: NOT 000014dc: AND 000014dd: PUSH1 0x00 000014df: NOT 000014e0: AND 000014e1: DUP2 000014e2: MSTORE 000014e3: PUSH1 0x20 000014e5: ADD 000014e6: SWAP1 000014e7: DUP2 000014e8: MSTORE 000014e9: PUSH1 0x20 000014eb: ADD 000014ec: PUSH1 0x00 000014ee: KECCAK256 000014ef: PUSH1 0x00 000014f1: ADD 000014f2: SLOAD 000014f3: SWAP2 000014f4: POP 000014f5: PUSH1 0x40 000014f7: DUP1 000014f8: MLOAD 000014f9: SWAP1 000014fa: DUP2 000014fb: ADD 000014fc: PUSH1 0x40 000014fe: MSTORE 000014ff: DUP1 00001500: DUP4 00001501: DUP2 00001502: MSTORE 00001503: PUSH1 0x20 00001505: ADD 00001506: DUP10 00001507: DUP2 00001508: MSTORE 00001509: POP 0000150a: SWAP1 0000150b: POP 0000150c: PUSH2 0x1515 0000150f: DUP2 00001510: DUP5 00001511: PUSH2 0x2433 00001514: JUMP 00001515: JUMPDEST 00001516: SWAP10 00001517: POP 00001518: POP 00001519: POP 0000151a: POP 0000151b: POP 0000151c: POP 0000151d: POP 0000151e: POP 0000151f: POP 00001520: POP 00001521: SWAP2 00001522: SWAP1 00001523: POP 00001524: JUMP 00001525: JUMPDEST 00001526: PUSH1 0x00 00001528: DUP1 00001529: SWAP1 0000152a: SLOAD 0000152b: SWAP1 0000152c: PUSH2 0x0100 0000152f: EXP 00001530: SWAP1 00001531: DIV 00001532: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001547: AND 00001548: DUP2 00001549: JUMP 0000154a: JUMPDEST 0000154b: PUSH1 0x03 0000154d: PUSH1 0x00 0000154f: SWAP1 00001550: SLOAD 00001551: SWAP1 00001552: PUSH2 0x0100 00001555: EXP 00001556: SWAP1 00001557: DIV 00001558: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000156d: AND 0000156e: DUP2 0000156f: JUMP 00001570: JUMPDEST 00001571: PUSH1 0x00 00001573: PUSH2 0x157b 00001576: DUP3 00001577: PUSH2 0x08e5 0000157a: JUMP 0000157b: JUMPDEST 0000157c: PUSH2 0x1585 0000157f: DUP4 00001580: TIMESTAMP 00001581: PUSH2 0x11d1 00001584: JUMP 00001585: JUMPDEST 00001586: GT 00001587: SWAP1 00001588: POP 00001589: SWAP2 0000158a: SWAP1 0000158b: POP 0000158c: JUMP 0000158d: JUMPDEST 0000158e: PUSH1 0x04 00001590: SLOAD 00001591: DUP2 00001592: JUMP 00001593: JUMPDEST 00001594: PUSH1 0x00 00001596: DUP1 00001597: PUSH1 0x00 00001599: DUP1 0000159a: PUSH2 0x15a1 0000159d: PUSH2 0x2bfa 000015a0: JUMP 000015a1: JUMPDEST 000015a2: PUSH1 0x00 000015a4: PUSH2 0x15ab 000015a7: PUSH2 0x2bfa 000015aa: JUMP 000015ab: JUMPDEST 000015ac: PUSH2 0x15b3 000015af: PUSH2 0x2bfa 000015b2: JUMP 000015b3: JUMPDEST 000015b4: PUSH1 0x00 000015b6: PUSH2 0x15bd 000015b9: PUSH2 0x2bfa 000015bc: JUMP 000015bd: JUMPDEST 000015be: PUSH2 0x15c5 000015c1: PUSH2 0x2bfa 000015c4: JUMP 000015c5: JUMPDEST 000015c6: PUSH1 0x02 000015c8: SLOAD 000015c9: PUSH1 0x0a 000015cb: EXP 000015cc: SWAP10 000015cd: POP 000015ce: PUSH1 0x04 000015d0: SLOAD 000015d1: PUSH1 0x0a 000015d3: EXP 000015d4: SWAP9 000015d5: POP 000015d6: PUSH1 0x05 000015d8: PUSH1 0x00 000015da: SWAP1 000015db: SLOAD 000015dc: SWAP1 000015dd: PUSH2 0x0100 000015e0: EXP 000015e1: SWAP1 000015e2: DIV 000015e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015f8: AND 000015f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000160e: AND 0000160f: PUSH4 0x57de26a4 00001614: PUSH1 0x40 00001616: MLOAD 00001617: DUP2 00001618: PUSH4 0xffffffff 0000161d: AND 0000161e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000163c: MUL 0000163d: DUP2 0000163e: MSTORE 0000163f: PUSH1 0x04 00001641: ADD 00001642: PUSH1 0x20 00001644: PUSH1 0x40 00001646: MLOAD 00001647: DUP1 00001648: DUP4 00001649: SUB 0000164a: DUP2 0000164b: PUSH1 0x00 0000164d: DUP8 0000164e: DUP1 0000164f: EXTCODESIZE 00001650: ISZERO 00001651: DUP1 00001652: ISZERO 00001653: PUSH2 0x165b 00001656: JUMPI 00001657: PUSH1 0x00 00001659: DUP1 0000165a: REVERT 0000165b: JUMPDEST 0000165c: POP 0000165d: GAS 0000165e: CALL 0000165f: ISZERO 00001660: DUP1 00001661: ISZERO 00001662: PUSH2 0x166f 00001665: JUMPI 00001666: RETURNDATASIZE 00001667: PUSH1 0x00 00001669: DUP1 0000166a: RETURNDATACOPY 0000166b: RETURNDATASIZE 0000166c: PUSH1 0x00 0000166e: REVERT 0000166f: JUMPDEST 00001670: POP 00001671: POP 00001672: POP 00001673: POP 00001674: PUSH1 0x40 00001676: MLOAD 00001677: RETURNDATASIZE 00001678: PUSH1 0x1f 0000167a: NOT 0000167b: PUSH1 0x1f 0000167d: DUP3 0000167e: ADD 0000167f: AND 00001680: DUP3 00001681: ADD 00001682: DUP1 00001683: PUSH1 0x40 00001685: MSTORE 00001686: POP 00001687: PUSH2 0x1693 0000168a: SWAP2 0000168b: SWAP1 0000168c: DUP2 0000168d: ADD 0000168e: SWAP1 0000168f: PUSH2 0x2dcc 00001692: JUMP 00001693: JUMPDEST 00001694: PUSH1 0x01 00001696: SWAP1 00001697: DIV 00001698: SWAP8 00001699: POP 0000169a: PUSH1 0x40 0000169c: DUP1 0000169d: MLOAD 0000169e: SWAP1 0000169f: DUP2 000016a0: ADD 000016a1: PUSH1 0x40 000016a3: MSTORE 000016a4: DUP1 000016a5: DUP10 000016a6: DUP2 000016a7: MSTORE 000016a8: PUSH1 0x20 000016aa: ADD 000016ab: PUSH1 0x12 000016ad: PUSH1 0x0a 000016af: EXP 000016b0: DUP2 000016b1: MSTORE 000016b2: POP 000016b3: SWAP7 000016b4: POP 000016b5: PUSH2 0x16bd 000016b8: DUP13 000016b9: PUSH2 0x1892 000016bc: JUMP 000016bd: JUMPDEST 000016be: SWAP6 000016bf: POP 000016c0: PUSH1 0x40 000016c2: DUP1 000016c3: MLOAD 000016c4: SWAP1 000016c5: DUP2 000016c6: ADD 000016c7: PUSH1 0x40 000016c9: MSTORE 000016ca: DUP1 000016cb: DUP8 000016cc: DUP2 000016cd: MSTORE 000016ce: PUSH1 0x20 000016d0: ADD 000016d1: DUP12 000016d2: DUP2 000016d3: MSTORE 000016d4: POP 000016d5: SWAP5 000016d6: POP 000016d7: PUSH2 0x16e9 000016da: DUP8 000016db: DUP7 000016dc: PUSH2 0x23e5 000016df: SWAP1 000016e0: SWAP2 000016e1: SWAP1 000016e2: PUSH4 0xffffffff 000016e7: AND 000016e8: JUMP 000016e9: JUMPDEST 000016ea: SWAP4 000016eb: POP 000016ec: PUSH1 0x06 000016ee: PUSH1 0x00 000016f0: DUP14 000016f1: PUSH1 0x00 000016f3: NOT 000016f4: AND 000016f5: PUSH1 0x00 000016f7: NOT 000016f8: AND 000016f9: DUP2 000016fa: MSTORE 000016fb: PUSH1 0x20 000016fd: ADD 000016fe: SWAP1 000016ff: DUP2 00001700: MSTORE 00001701: PUSH1 0x20 00001703: ADD 00001704: PUSH1 0x00 00001706: KECCAK256 00001707: PUSH1 0x00 00001709: ADD 0000170a: SLOAD 0000170b: SWAP3 0000170c: POP 0000170d: PUSH1 0x40 0000170f: DUP1 00001710: MLOAD 00001711: SWAP1 00001712: DUP2 00001713: ADD 00001714: PUSH1 0x40 00001716: MSTORE 00001717: DUP1 00001718: DUP5 00001719: DUP2 0000171a: MSTORE 0000171b: PUSH1 0x20 0000171d: ADD 0000171e: DUP11 0000171f: DUP2 00001720: MSTORE 00001721: POP 00001722: SWAP2 00001723: POP 00001724: PUSH2 0x1736 00001727: DUP3 00001728: DUP6 00001729: PUSH2 0x2494 0000172c: SWAP1 0000172d: SWAP2 0000172e: SWAP1 0000172f: PUSH4 0xffffffff 00001734: AND 00001735: JUMP 00001736: JUMPDEST 00001737: SWAP1 00001738: POP 00001739: PUSH2 0x174c 0000173c: PUSH1 0x02 0000173e: DUP3 0000173f: PUSH2 0x220c 00001742: SWAP1 00001743: SWAP2 00001744: SWAP1 00001745: PUSH4 0xffffffff 0000174a: AND 0000174b: JUMP 0000174c: JUMPDEST 0000174d: SWAP11 0000174e: POP 0000174f: POP 00001750: POP 00001751: POP 00001752: POP 00001753: POP 00001754: POP 00001755: POP 00001756: POP 00001757: POP 00001758: POP 00001759: SWAP2 0000175a: SWAP1 0000175b: POP 0000175c: JUMP 0000175d: JUMPDEST 0000175e: PUSH1 0x00 00001760: DUP1 00001761: CALLER 00001762: SWAP2 00001763: POP 00001764: ADDRESS 00001765: SWAP1 00001766: POP 00001767: PUSH2 0x1793 0000176a: PUSH1 0x03 0000176c: PUSH1 0x00 0000176e: SWAP1 0000176f: SLOAD 00001770: SWAP1 00001771: PUSH2 0x0100 00001774: EXP 00001775: SWAP1 00001776: DIV 00001777: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000178c: AND 0000178d: DUP4 0000178e: DUP6 0000178f: PUSH2 0x24e2 00001792: JUMP 00001793: JUMPDEST 00001794: POP 00001795: PUSH2 0x17c5 00001798: DUP4 00001799: PUSH1 0x06 0000179b: PUSH1 0x00 0000179d: DUP8 0000179e: PUSH1 0x00 000017a0: NOT 000017a1: AND 000017a2: PUSH1 0x00 000017a4: NOT 000017a5: AND 000017a6: DUP2 000017a7: MSTORE 000017a8: PUSH1 0x20 000017aa: ADD 000017ab: SWAP1 000017ac: DUP2 000017ad: MSTORE 000017ae: PUSH1 0x20 000017b0: ADD 000017b1: PUSH1 0x00 000017b3: KECCAK256 000017b4: PUSH1 0x00 000017b6: ADD 000017b7: SLOAD 000017b8: PUSH2 0x21f0 000017bb: SWAP1 000017bc: SWAP2 000017bd: SWAP1 000017be: PUSH4 0xffffffff 000017c3: AND 000017c4: JUMP 000017c5: JUMPDEST 000017c6: PUSH1 0x06 000017c8: PUSH1 0x00 000017ca: DUP7 000017cb: PUSH1 0x00 000017cd: NOT 000017ce: AND 000017cf: PUSH1 0x00 000017d1: NOT 000017d2: AND 000017d3: DUP2 000017d4: MSTORE 000017d5: PUSH1 0x20 000017d7: ADD 000017d8: SWAP1 000017d9: DUP2 000017da: MSTORE 000017db: PUSH1 0x20 000017dd: ADD 000017de: PUSH1 0x00 000017e0: KECCAK256 000017e1: PUSH1 0x00 000017e3: ADD 000017e4: DUP2 000017e5: SWAP1 000017e6: SSTORE 000017e7: POP 000017e8: POP 000017e9: POP 000017ea: POP 000017eb: POP 000017ec: JUMP 000017ed: JUMPDEST 000017ee: PUSH1 0x01 000017f0: PUSH1 0x00 000017f2: SWAP1 000017f3: SLOAD 000017f4: SWAP1 000017f5: PUSH2 0x0100 000017f8: EXP 000017f9: SWAP1 000017fa: DIV 000017fb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001810: AND 00001811: DUP2 00001812: JUMP 00001813: JUMPDEST 00001814: PUSH1 0x00 00001816: DUP1 00001817: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000182c: AND 0000182d: PUSH1 0x06 0000182f: PUSH1 0x00 00001831: DUP5 00001832: PUSH1 0x00 00001834: NOT 00001835: AND 00001836: PUSH1 0x00 00001838: NOT 00001839: AND 0000183a: DUP2 0000183b: MSTORE 0000183c: PUSH1 0x20 0000183e: ADD 0000183f: SWAP1 00001840: DUP2 00001841: MSTORE 00001842: PUSH1 0x20 00001844: ADD 00001845: PUSH1 0x00 00001847: KECCAK256 00001848: PUSH1 0x01 0000184a: ADD 0000184b: PUSH1 0x00 0000184d: SWAP1 0000184e: SLOAD 0000184f: SWAP1 00001850: PUSH2 0x0100 00001853: EXP 00001854: SWAP1 00001855: DIV 00001856: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000186b: AND 0000186c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001881: AND 00001882: EQ 00001883: ISZERO 00001884: SWAP1 00001885: POP 00001886: SWAP2 00001887: SWAP1 00001888: POP 00001889: JUMP 0000188a: JUMPDEST 0000188b: PUSH1 0x12 0000188d: PUSH1 0x0a 0000188f: EXP 00001890: DUP2 00001891: JUMP 00001892: JUMPDEST 00001893: PUSH1 0x00 00001895: DUP1 00001896: PUSH1 0x00 00001898: DUP1 00001899: PUSH2 0x18a1 0000189c: DUP6 0000189d: PUSH2 0x0a78 000018a0: JUMP 000018a1: JUMPDEST 000018a2: SWAP3 000018a3: POP 000018a4: PUSH2 0x18ad 000018a7: DUP6 000018a8: DUP5 000018a9: PUSH2 0x11d1 000018ac: JUMP 000018ad: JUMPDEST 000018ae: SWAP2 000018af: POP 000018b0: PUSH2 0x18b8 000018b3: DUP6 000018b4: PUSH2 0x08e5 000018b7: JUMP 000018b8: JUMPDEST 000018b9: SWAP1 000018ba: POP 000018bb: PUSH2 0x18cd 000018be: DUP2 000018bf: DUP4 000018c0: PUSH2 0x2009 000018c3: SWAP1 000018c4: SWAP2 000018c5: SWAP1 000018c6: PUSH4 0xffffffff 000018cb: AND 000018cc: JUMP 000018cd: JUMPDEST 000018ce: SWAP4 000018cf: POP 000018d0: POP 000018d1: POP 000018d2: POP 000018d3: SWAP2 000018d4: SWAP1 000018d5: POP 000018d6: JUMP 000018d7: JUMPDEST 000018d8: PUSH1 0x07 000018da: PUSH1 0x00 000018dc: SWAP1 000018dd: SLOAD 000018de: SWAP1 000018df: PUSH2 0x0100 000018e2: EXP 000018e3: SWAP1 000018e4: DIV 000018e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018fa: AND 000018fb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001910: AND 00001911: CALLER 00001912: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001927: AND 00001928: EQ 00001929: ISZERO 0000192a: ISZERO 0000192b: PUSH2 0x1933 0000192e: JUMPI 0000192f: PUSH1 0x00 00001931: DUP1 00001932: REVERT 00001933: JUMPDEST 00001934: PUSH2 0x193c 00001937: DUP2 00001938: PUSH2 0x259d 0000193b: JUMP 0000193c: JUMPDEST 0000193d: POP 0000193e: JUMP 0000193f: JUMPDEST 00001940: PUSH2 0x1947 00001943: PUSH2 0x2baf 00001946: JUMP 00001947: JUMPDEST 00001948: PUSH1 0x00 0000194a: DUP1 0000194b: PUSH1 0x00 0000194d: PUSH2 0x1954 00001950: PUSH2 0x2bfa 00001953: JUMP 00001954: JUMPDEST 00001955: PUSH1 0x00 00001957: PUSH2 0x195e 0000195a: PUSH2 0x2bfa 0000195d: JUMP 0000195e: JUMPDEST 0000195f: PUSH2 0x1966 00001962: PUSH2 0x2bfa 00001965: JUMP 00001966: JUMPDEST 00001967: PUSH2 0x196e 0000196a: PUSH2 0x2bfa 0000196d: JUMP 0000196e: JUMPDEST 0000196f: PUSH1 0x00 00001971: PUSH1 0x02 00001973: SLOAD 00001974: PUSH1 0x0a 00001976: EXP 00001977: SWAP9 00001978: POP 00001979: PUSH1 0x04 0000197b: SLOAD 0000197c: PUSH1 0x0a 0000197e: EXP 0000197f: SWAP8 00001980: POP 00001981: PUSH1 0x05 00001983: PUSH1 0x00 00001985: SWAP1 00001986: SLOAD 00001987: SWAP1 00001988: PUSH2 0x0100 0000198b: EXP 0000198c: SWAP1 0000198d: DIV 0000198e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019a3: AND 000019a4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019b9: AND 000019ba: PUSH4 0x57de26a4 000019bf: PUSH1 0x40 000019c1: MLOAD 000019c2: DUP2 000019c3: PUSH4 0xffffffff 000019c8: AND 000019c9: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000019e7: MUL 000019e8: DUP2 000019e9: MSTORE 000019ea: PUSH1 0x04 000019ec: ADD 000019ed: PUSH1 0x20 000019ef: PUSH1 0x40 000019f1: MLOAD 000019f2: DUP1 000019f3: DUP4 000019f4: SUB 000019f5: DUP2 000019f6: PUSH1 0x00 000019f8: DUP8 000019f9: DUP1 000019fa: EXTCODESIZE 000019fb: ISZERO 000019fc: DUP1 000019fd: ISZERO 000019fe: PUSH2 0x1a06 00001a01: JUMPI 00001a02: PUSH1 0x00 00001a04: DUP1 00001a05: REVERT 00001a06: JUMPDEST 00001a07: POP 00001a08: GAS 00001a09: CALL 00001a0a: ISZERO 00001a0b: DUP1 00001a0c: ISZERO 00001a0d: PUSH2 0x1a1a 00001a10: JUMPI 00001a11: RETURNDATASIZE 00001a12: PUSH1 0x00 00001a14: DUP1 00001a15: RETURNDATACOPY 00001a16: RETURNDATASIZE 00001a17: PUSH1 0x00 00001a19: REVERT 00001a1a: JUMPDEST 00001a1b: POP 00001a1c: POP 00001a1d: POP 00001a1e: POP 00001a1f: PUSH1 0x40 00001a21: MLOAD 00001a22: RETURNDATASIZE 00001a23: PUSH1 0x1f 00001a25: NOT 00001a26: PUSH1 0x1f 00001a28: DUP3 00001a29: ADD 00001a2a: AND 00001a2b: DUP3 00001a2c: ADD 00001a2d: DUP1 00001a2e: PUSH1 0x40 00001a30: MSTORE 00001a31: POP 00001a32: PUSH2 0x1a3e 00001a35: SWAP2 00001a36: SWAP1 00001a37: DUP2 00001a38: ADD 00001a39: SWAP1 00001a3a: PUSH2 0x2dcc 00001a3d: JUMP 00001a3e: JUMPDEST 00001a3f: PUSH1 0x01 00001a41: SWAP1 00001a42: DIV 00001a43: SWAP7 00001a44: POP 00001a45: PUSH1 0x40 00001a47: DUP1 00001a48: MLOAD 00001a49: SWAP1 00001a4a: DUP2 00001a4b: ADD 00001a4c: PUSH1 0x40 00001a4e: MSTORE 00001a4f: DUP1 00001a50: DUP9 00001a51: DUP2 00001a52: MSTORE 00001a53: PUSH1 0x20 00001a55: ADD 00001a56: PUSH1 0x12 00001a58: PUSH1 0x0a 00001a5a: EXP 00001a5b: DUP2 00001a5c: MSTORE 00001a5d: POP 00001a5e: SWAP6 00001a5f: POP 00001a60: PUSH1 0x06 00001a62: PUSH1 0x00 00001a64: DUP13 00001a65: PUSH1 0x00 00001a67: NOT 00001a68: AND 00001a69: PUSH1 0x00 00001a6b: NOT 00001a6c: AND 00001a6d: DUP2 00001a6e: MSTORE 00001a6f: PUSH1 0x20 00001a71: ADD 00001a72: SWAP1 00001a73: DUP2 00001a74: MSTORE 00001a75: PUSH1 0x20 00001a77: ADD 00001a78: PUSH1 0x00 00001a7a: KECCAK256 00001a7b: PUSH1 0x00 00001a7d: ADD 00001a7e: SLOAD 00001a7f: SWAP5 00001a80: POP 00001a81: PUSH1 0x40 00001a83: DUP1 00001a84: MLOAD 00001a85: SWAP1 00001a86: DUP2 00001a87: ADD 00001a88: PUSH1 0x40 00001a8a: MSTORE 00001a8b: DUP1 00001a8c: DUP7 00001a8d: DUP2 00001a8e: MSTORE 00001a8f: PUSH1 0x20 00001a91: ADD 00001a92: DUP10 00001a93: DUP2 00001a94: MSTORE 00001a95: POP 00001a96: SWAP4 00001a97: POP 00001a98: PUSH2 0x1aa0 00001a9b: DUP12 00001a9c: PUSH2 0x137c 00001a9f: JUMP 00001aa0: JUMPDEST 00001aa1: SWAP3 00001aa2: POP 00001aa3: PUSH2 0x1ab5 00001aa6: DUP7 00001aa7: DUP5 00001aa8: PUSH2 0x2494 00001aab: SWAP1 00001aac: SWAP2 00001aad: SWAP1 00001aae: PUSH4 0xffffffff 00001ab3: AND 00001ab4: JUMP 00001ab5: JUMPDEST 00001ab6: SWAP2 00001ab7: POP 00001ab8: PUSH2 0x1ac1 00001abb: DUP5 00001abc: DUP5 00001abd: PUSH2 0x0c6f 00001ac0: JUMP 00001ac1: JUMPDEST 00001ac2: SWAP1 00001ac3: POP 00001ac4: PUSH1 0x60 00001ac6: PUSH1 0x40 00001ac8: MLOAD 00001ac9: SWAP1 00001aca: DUP2 00001acb: ADD 00001acc: PUSH1 0x40 00001ace: MSTORE 00001acf: DUP1 00001ad0: PUSH2 0x1ae4 00001ad3: PUSH1 0x04 00001ad5: SLOAD 00001ad6: DUP7 00001ad7: PUSH2 0x220c 00001ada: SWAP1 00001adb: SWAP2 00001adc: SWAP1 00001add: PUSH4 0xffffffff 00001ae2: AND 00001ae3: JUMP 00001ae4: JUMPDEST 00001ae5: DUP2 00001ae6: MSTORE 00001ae7: PUSH1 0x20 00001ae9: ADD 00001aea: PUSH2 0x1afe 00001aed: PUSH1 0x02 00001aef: SLOAD 00001af0: DUP6 00001af1: PUSH2 0x220c 00001af4: SWAP1 00001af5: SWAP2 00001af6: SWAP1 00001af7: PUSH4 0xffffffff 00001afc: AND 00001afd: JUMP 00001afe: JUMPDEST 00001aff: DUP2 00001b00: MSTORE 00001b01: PUSH1 0x20 00001b03: ADD 00001b04: DUP3 00001b05: DUP2 00001b06: MSTORE 00001b07: POP 00001b08: SWAP10 00001b09: POP 00001b0a: POP 00001b0b: POP 00001b0c: POP 00001b0d: POP 00001b0e: POP 00001b0f: POP 00001b10: POP 00001b11: POP 00001b12: POP 00001b13: SWAP2 00001b14: SWAP1 00001b15: POP 00001b16: JUMP 00001b17: JUMPDEST 00001b18: PUSH1 0x00 00001b1a: PUSH2 0x1b2c 00001b1d: PUSH2 0x1b25 00001b20: DUP5 00001b21: PUSH2 0x1813 00001b24: JUMP 00001b25: JUMPDEST 00001b26: PUSH1 0x04 00001b28: PUSH2 0x2699 00001b2b: JUMP 00001b2c: JUMPDEST 00001b2d: ISZERO 00001b2e: PUSH2 0x1b3a 00001b31: JUMPI 00001b32: PUSH1 0x00 00001b34: SWAP1 00001b35: POP 00001b36: PUSH2 0x1ba9 00001b39: JUMP 00001b3a: JUMPDEST 00001b3b: PUSH2 0x1b4d 00001b3e: PUSH2 0x1b46 00001b41: DUP5 00001b42: PUSH2 0x0c0b 00001b45: JUMP 00001b46: JUMPDEST 00001b47: PUSH1 0x02 00001b49: PUSH2 0x2699 00001b4c: JUMP 00001b4d: JUMPDEST 00001b4e: ISZERO 00001b4f: PUSH2 0x1b5b 00001b52: JUMPI 00001b53: PUSH1 0x00 00001b55: SWAP1 00001b56: POP 00001b57: PUSH2 0x1ba9 00001b5a: JUMP 00001b5b: JUMPDEST 00001b5c: PUSH2 0x1b96 00001b5f: PUSH2 0x1b8f 00001b62: PUSH1 0x01 00001b64: PUSH1 0x00 00001b66: SWAP1 00001b67: SLOAD 00001b68: SWAP1 00001b69: PUSH2 0x0100 00001b6c: EXP 00001b6d: SWAP1 00001b6e: DIV 00001b6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b84: AND 00001b85: CALLER 00001b86: DUP6 00001b87: PUSH1 0x20 00001b89: ADD 00001b8a: MLOAD 00001b8b: PUSH2 0x26f1 00001b8e: JUMP 00001b8f: JUMPDEST 00001b90: PUSH1 0x00 00001b92: PUSH2 0x2699 00001b95: JUMP 00001b96: JUMPDEST 00001b97: ISZERO 00001b98: PUSH2 0x1ba4 00001b9b: JUMPI 00001b9c: PUSH1 0x00 00001b9e: SWAP1 00001b9f: POP 00001ba0: PUSH2 0x1ba9 00001ba3: JUMP 00001ba4: JUMPDEST 00001ba5: PUSH1 0x01 00001ba7: SWAP1 00001ba8: POP 00001ba9: JUMPDEST 00001baa: SWAP3 00001bab: SWAP2 00001bac: POP 00001bad: POP 00001bae: JUMP 00001baf: JUMPDEST 00001bb0: PUSH1 0x00 00001bb2: PUSH2 0x1be2 00001bb5: DUP4 00001bb6: PUSH1 0x06 00001bb8: PUSH1 0x00 00001bba: DUP9 00001bbb: PUSH1 0x00 00001bbd: NOT 00001bbe: AND 00001bbf: PUSH1 0x00 00001bc1: NOT 00001bc2: AND 00001bc3: DUP2 00001bc4: MSTORE 00001bc5: PUSH1 0x20 00001bc7: ADD 00001bc8: SWAP1 00001bc9: DUP2 00001bca: MSTORE 00001bcb: PUSH1 0x20 00001bcd: ADD 00001bce: PUSH1 0x00 00001bd0: KECCAK256 00001bd1: PUSH1 0x00 00001bd3: ADD 00001bd4: SLOAD 00001bd5: PUSH2 0x2009 00001bd8: SWAP1 00001bd9: SWAP2 00001bda: SWAP1 00001bdb: PUSH4 0xffffffff 00001be0: AND 00001be1: JUMP 00001be2: JUMPDEST 00001be3: PUSH1 0x06 00001be5: PUSH1 0x00 00001be7: DUP8 00001be8: PUSH1 0x00 00001bea: NOT 00001beb: AND 00001bec: PUSH1 0x00 00001bee: NOT 00001bef: AND 00001bf0: DUP2 00001bf1: MSTORE 00001bf2: PUSH1 0x20 00001bf4: ADD 00001bf5: SWAP1 00001bf6: DUP2 00001bf7: MSTORE 00001bf8: PUSH1 0x20 00001bfa: ADD 00001bfb: PUSH1 0x00 00001bfd: KECCAK256 00001bfe: PUSH1 0x00 00001c00: ADD 00001c01: DUP2 00001c02: SWAP1 00001c03: SSTORE 00001c04: POP 00001c05: PUSH2 0x1c31 00001c08: PUSH1 0x01 00001c0a: PUSH1 0x00 00001c0c: SWAP1 00001c0d: SLOAD 00001c0e: SWAP1 00001c0f: PUSH2 0x0100 00001c12: EXP 00001c13: SWAP1 00001c14: DIV 00001c15: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c2a: AND 00001c2b: DUP6 00001c2c: DUP5 00001c2d: PUSH2 0x24e2 00001c30: JUMP 00001c31: JUMPDEST 00001c32: DUP1 00001c33: ISZERO 00001c34: PUSH2 0x1d04 00001c37: JUMPI 00001c38: POP 00001c39: PUSH1 0x03 00001c3b: PUSH1 0x00 00001c3d: SWAP1 00001c3e: SLOAD 00001c3f: SWAP1 00001c40: PUSH2 0x0100 00001c43: EXP 00001c44: SWAP1 00001c45: DIV 00001c46: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c5b: AND 00001c5c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c71: AND 00001c72: PUSH4 0xa9059cbb 00001c77: DUP6 00001c78: DUP6 00001c79: PUSH1 0x40 00001c7b: MLOAD 00001c7c: DUP4 00001c7d: PUSH4 0xffffffff 00001c82: AND 00001c83: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001ca1: MUL 00001ca2: DUP2 00001ca3: MSTORE 00001ca4: PUSH1 0x04 00001ca6: ADD 00001ca7: PUSH2 0x1cb1 00001caa: SWAP3 00001cab: SWAP2 00001cac: SWAP1 00001cad: PUSH2 0x31f3 00001cb0: JUMP 00001cb1: JUMPDEST 00001cb2: PUSH1 0x20 00001cb4: PUSH1 0x40 00001cb6: MLOAD 00001cb7: DUP1 00001cb8: DUP4 00001cb9: SUB 00001cba: DUP2 00001cbb: PUSH1 0x00 00001cbd: DUP8 00001cbe: DUP1 00001cbf: EXTCODESIZE 00001cc0: ISZERO 00001cc1: DUP1 00001cc2: ISZERO 00001cc3: PUSH2 0x1ccb 00001cc6: JUMPI 00001cc7: PUSH1 0x00 00001cc9: DUP1 00001cca: REVERT 00001ccb: JUMPDEST 00001ccc: POP 00001ccd: GAS 00001cce: CALL 00001ccf: ISZERO 00001cd0: DUP1 00001cd1: ISZERO 00001cd2: PUSH2 0x1cdf 00001cd5: JUMPI 00001cd6: RETURNDATASIZE 00001cd7: PUSH1 0x00 00001cd9: DUP1 00001cda: RETURNDATACOPY 00001cdb: RETURNDATASIZE 00001cdc: PUSH1 0x00 00001cde: REVERT 00001cdf: JUMPDEST 00001ce0: POP 00001ce1: POP 00001ce2: POP 00001ce3: POP 00001ce4: PUSH1 0x40 00001ce6: MLOAD 00001ce7: RETURNDATASIZE 00001ce8: PUSH1 0x1f 00001cea: NOT 00001ceb: PUSH1 0x1f 00001ced: DUP3 00001cee: ADD 00001cef: AND 00001cf0: DUP3 00001cf1: ADD 00001cf2: DUP1 00001cf3: PUSH1 0x40 00001cf5: MSTORE 00001cf6: POP 00001cf7: PUSH2 0x1d03 00001cfa: SWAP2 00001cfb: SWAP1 00001cfc: DUP2 00001cfd: ADD 00001cfe: SWAP1 00001cff: PUSH2 0x2d7a 00001d02: JUMP 00001d03: JUMPDEST 00001d04: JUMPDEST 00001d05: SWAP1 00001d06: POP 00001d07: SWAP5 00001d08: SWAP4 00001d09: POP 00001d0a: POP 00001d0b: POP 00001d0c: POP 00001d0d: JUMP 00001d0e: JUMPDEST 00001d0f: PUSH1 0x00 00001d11: DUP1 00001d12: PUSH1 0x00 00001d14: DUP1 00001d15: SWAP1 00001d16: SLOAD 00001d17: SWAP1 00001d18: PUSH2 0x0100 00001d1b: EXP 00001d1c: SWAP1 00001d1d: DIV 00001d1e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d33: AND 00001d34: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d49: AND 00001d4a: PUSH4 0x2f866f73 00001d4f: PUSH1 0x40 00001d51: MLOAD 00001d52: DUP2 00001d53: PUSH4 0xffffffff 00001d58: AND 00001d59: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001d77: MUL 00001d78: DUP2 00001d79: MSTORE 00001d7a: PUSH1 0x04 00001d7c: ADD 00001d7d: PUSH1 0x20 00001d7f: PUSH1 0x40 00001d81: MLOAD 00001d82: DUP1 00001d83: DUP4 00001d84: SUB 00001d85: DUP2 00001d86: PUSH1 0x00 00001d88: DUP8 00001d89: DUP1 00001d8a: EXTCODESIZE 00001d8b: ISZERO 00001d8c: DUP1 00001d8d: ISZERO 00001d8e: PUSH2 0x1d96 00001d91: JUMPI 00001d92: PUSH1 0x00 00001d94: DUP1 00001d95: REVERT 00001d96: JUMPDEST 00001d97: POP 00001d98: GAS 00001d99: CALL 00001d9a: ISZERO 00001d9b: DUP1 00001d9c: ISZERO 00001d9d: PUSH2 0x1daa 00001da0: JUMPI 00001da1: RETURNDATASIZE 00001da2: PUSH1 0x00 00001da4: DUP1 00001da5: RETURNDATACOPY 00001da6: RETURNDATASIZE 00001da7: PUSH1 0x00 00001da9: REVERT 00001daa: JUMPDEST 00001dab: POP 00001dac: POP 00001dad: POP 00001dae: POP 00001daf: PUSH1 0x40 00001db1: MLOAD 00001db2: RETURNDATASIZE 00001db3: PUSH1 0x1f 00001db5: NOT 00001db6: PUSH1 0x1f 00001db8: DUP3 00001db9: ADD 00001dba: AND 00001dbb: DUP3 00001dbc: ADD 00001dbd: DUP1 00001dbe: PUSH1 0x40 00001dc0: MSTORE 00001dc1: POP 00001dc2: PUSH2 0x1dce 00001dc5: SWAP2 00001dc6: SWAP1 00001dc7: DUP2 00001dc8: ADD 00001dc9: SWAP1 00001dca: PUSH2 0x2f0d 00001dcd: JUMP 00001dce: JUMPDEST 00001dcf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001de4: AND 00001de5: PUSH4 0xba20dda4 00001dea: DUP6 00001deb: PUSH1 0x40 00001ded: MLOAD 00001dee: DUP3 00001def: PUSH4 0xffffffff 00001df4: AND 00001df5: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001e13: MUL 00001e14: DUP2 00001e15: MSTORE 00001e16: PUSH1 0x04 00001e18: ADD 00001e19: PUSH2 0x1e22 00001e1c: SWAP2 00001e1d: SWAP1 00001e1e: PUSH2 0x3237 00001e21: JUMP 00001e22: JUMPDEST 00001e23: PUSH1 0x20 00001e25: PUSH1 0x40 00001e27: MLOAD 00001e28: DUP1 00001e29: DUP4 00001e2a: SUB 00001e2b: DUP2 00001e2c: PUSH1 0x00 00001e2e: DUP8 00001e2f: DUP1 00001e30: EXTCODESIZE 00001e31: ISZERO 00001e32: DUP1 00001e33: ISZERO 00001e34: PUSH2 0x1e3c 00001e37: JUMPI 00001e38: PUSH1 0x00 00001e3a: DUP1 00001e3b: REVERT 00001e3c: JUMPDEST 00001e3d: POP 00001e3e: GAS 00001e3f: CALL 00001e40: ISZERO 00001e41: DUP1 00001e42: ISZERO 00001e43: PUSH2 0x1e50 00001e46: JUMPI 00001e47: RETURNDATASIZE 00001e48: PUSH1 0x00 00001e4a: DUP1 00001e4b: RETURNDATACOPY 00001e4c: RETURNDATASIZE 00001e4d: PUSH1 0x00 00001e4f: REVERT 00001e50: JUMPDEST 00001e51: POP 00001e52: POP 00001e53: POP 00001e54: POP 00001e55: PUSH1 0x40 00001e57: MLOAD 00001e58: RETURNDATASIZE 00001e59: PUSH1 0x1f 00001e5b: NOT 00001e5c: PUSH1 0x1f 00001e5e: DUP3 00001e5f: ADD 00001e60: AND 00001e61: DUP3 00001e62: ADD 00001e63: DUP1 00001e64: PUSH1 0x40 00001e66: MSTORE 00001e67: POP 00001e68: PUSH2 0x1e74 00001e6b: SWAP2 00001e6c: SWAP1 00001e6d: DUP2 00001e6e: ADD 00001e6f: SWAP1 00001e70: PUSH2 0x2d51 00001e73: JUMP 00001e74: JUMPDEST 00001e75: SWAP1 00001e76: POP 00001e77: PUSH1 0x01 00001e79: PUSH1 0x00 00001e7b: SWAP1 00001e7c: SLOAD 00001e7d: SWAP1 00001e7e: PUSH2 0x0100 00001e81: EXP 00001e82: SWAP1 00001e83: DIV 00001e84: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e99: AND 00001e9a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001eaf: AND 00001eb0: PUSH4 0xa9059cbb 00001eb5: DUP3 00001eb6: DUP6 00001eb7: PUSH1 0x40 00001eb9: MLOAD 00001eba: DUP4 00001ebb: PUSH4 0xffffffff 00001ec0: AND 00001ec1: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00001edf: MUL 00001ee0: DUP2 00001ee1: MSTORE 00001ee2: PUSH1 0x04 00001ee4: ADD 00001ee5: PUSH2 0x1eef 00001ee8: SWAP3 00001ee9: SWAP2 00001eea: SWAP1 00001eeb: PUSH2 0x31f3 00001eee: JUMP 00001eef: JUMPDEST 00001ef0: PUSH1 0x20 00001ef2: PUSH1 0x40 00001ef4: MLOAD 00001ef5: DUP1 00001ef6: DUP4 00001ef7: SUB 00001ef8: DUP2 00001ef9: PUSH1 0x00 00001efb: DUP8 00001efc: DUP1 00001efd: EXTCODESIZE 00001efe: ISZERO 00001eff: DUP1 00001f00: ISZERO 00001f01: PUSH2 0x1f09 00001f04: JUMPI 00001f05: PUSH1 0x00 00001f07: DUP1 00001f08: REVERT 00001f09: JUMPDEST 00001f0a: POP 00001f0b: GAS 00001f0c: CALL 00001f0d: ISZERO 00001f0e: DUP1 00001f0f: ISZERO 00001f10: PUSH2 0x1f1d 00001f13: JUMPI 00001f14: RETURNDATASIZE 00001f15: PUSH1 0x00 00001f17: DUP1 00001f18: RETURNDATACOPY 00001f19: RETURNDATASIZE 00001f1a: PUSH1 0x00 00001f1c: REVERT 00001f1d: JUMPDEST 00001f1e: POP 00001f1f: POP 00001f20: POP 00001f21: POP 00001f22: PUSH1 0x40 00001f24: MLOAD 00001f25: RETURNDATASIZE 00001f26: PUSH1 0x1f 00001f28: NOT 00001f29: PUSH1 0x1f 00001f2b: DUP3 00001f2c: ADD 00001f2d: AND 00001f2e: DUP3 00001f2f: ADD 00001f30: DUP1 00001f31: PUSH1 0x40 00001f33: MSTORE 00001f34: POP 00001f35: PUSH2 0x1f41 00001f38: SWAP2 00001f39: SWAP1 00001f3a: DUP2 00001f3b: ADD 00001f3c: SWAP1 00001f3d: PUSH2 0x2d7a 00001f40: JUMP 00001f41: JUMPDEST 00001f42: SWAP2 00001f43: POP 00001f44: POP 00001f45: SWAP3 00001f46: SWAP2 00001f47: POP 00001f48: POP 00001f49: JUMP 00001f4a: JUMPDEST 00001f4b: PUSH1 0x00 00001f4d: PUSH2 0x1f55 00001f50: DUP3 00001f51: PUSH2 0x285f 00001f54: JUMP 00001f55: JUMPDEST 00001f56: ISZERO 00001f57: PUSH2 0x1fff 00001f5a: JUMPI 00001f5b: PUSH1 0x40 00001f5d: DUP1 00001f5e: MLOAD 00001f5f: SWAP1 00001f60: DUP2 00001f61: ADD 00001f62: PUSH1 0x40 00001f64: MSTORE 00001f65: DUP1 00001f66: PUSH1 0x00 00001f68: DUP2 00001f69: MSTORE 00001f6a: PUSH1 0x20 00001f6c: ADD 00001f6d: PUSH1 0x00 00001f6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f84: AND 00001f85: DUP2 00001f86: MSTORE 00001f87: POP 00001f88: PUSH1 0x06 00001f8a: PUSH1 0x00 00001f8c: DUP5 00001f8d: PUSH1 0x00 00001f8f: NOT 00001f90: AND 00001f91: PUSH1 0x00 00001f93: NOT 00001f94: AND 00001f95: DUP2 00001f96: MSTORE 00001f97: PUSH1 0x20 00001f99: ADD 00001f9a: SWAP1 00001f9b: DUP2 00001f9c: MSTORE 00001f9d: PUSH1 0x20 00001f9f: ADD 00001fa0: PUSH1 0x00 00001fa2: KECCAK256 00001fa3: PUSH1 0x00 00001fa5: DUP3 00001fa6: ADD 00001fa7: MLOAD 00001fa8: DUP2 00001fa9: PUSH1 0x00 00001fab: ADD 00001fac: SSTORE 00001fad: PUSH1 0x20 00001faf: DUP3 00001fb0: ADD 00001fb1: MLOAD 00001fb2: DUP2 00001fb3: PUSH1 0x01 00001fb5: ADD 00001fb6: PUSH1 0x00 00001fb8: PUSH2 0x0100 00001fbb: EXP 00001fbc: DUP2 00001fbd: SLOAD 00001fbe: DUP2 00001fbf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fd4: MUL 00001fd5: NOT 00001fd6: AND 00001fd7: SWAP1 00001fd8: DUP4 00001fd9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fee: AND 00001fef: MUL 00001ff0: OR 00001ff1: SWAP1 00001ff2: SSTORE 00001ff3: POP 00001ff4: SWAP1 00001ff5: POP 00001ff6: POP 00001ff7: PUSH1 0x01 00001ff9: SWAP1 00001ffa: POP 00001ffb: PUSH2 0x2004 00001ffe: JUMP 00001fff: JUMPDEST 00002000: PUSH1 0x00 00002002: SWAP1 00002003: POP 00002004: JUMPDEST 00002005: SWAP2 00002006: SWAP1 00002007: POP 00002008: JUMP 00002009: JUMPDEST 0000200a: PUSH1 0x00 0000200c: DUP3 0000200d: DUP3 0000200e: GT 0000200f: ISZERO 00002010: ISZERO 00002011: ISZERO 00002012: PUSH2 0x2017 00002015: JUMPI 00002016: INVALID 00002017: JUMPDEST 00002018: DUP2 00002019: DUP4 0000201a: SUB 0000201b: SWAP1 0000201c: POP 0000201d: SWAP3 0000201e: SWAP2 0000201f: POP 00002020: POP 00002021: JUMP 00002022: JUMPDEST 00002023: PUSH1 0x00 00002025: DUP2 00002026: DUP4 00002027: DUP2 00002028: ISZERO 00002029: ISZERO 0000202a: PUSH2 0x202f 0000202d: JUMPI 0000202e: INVALID 0000202f: JUMPDEST 00002030: DIV 00002031: SWAP1 00002032: POP 00002033: SWAP3 00002034: SWAP2 00002035: POP 00002036: POP 00002037: JUMP 00002038: JUMPDEST 00002039: PUSH2 0x2040 0000203c: PUSH2 0x2bd1 0000203f: JUMP 00002040: JUMPDEST 00002041: PUSH1 0x00 00002043: DUP1 00002044: PUSH1 0x00 00002046: SWAP1 00002047: SLOAD 00002048: SWAP1 00002049: PUSH2 0x0100 0000204c: EXP 0000204d: SWAP1 0000204e: DIV 0000204f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002064: AND 00002065: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000207a: AND 0000207b: PUSH4 0x2f866f73 00002080: PUSH1 0x40 00002082: MLOAD 00002083: DUP2 00002084: PUSH4 0xffffffff 00002089: AND 0000208a: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000020a8: MUL 000020a9: DUP2 000020aa: MSTORE 000020ab: PUSH1 0x04 000020ad: ADD 000020ae: PUSH1 0x20 000020b0: PUSH1 0x40 000020b2: MLOAD 000020b3: DUP1 000020b4: DUP4 000020b5: SUB 000020b6: DUP2 000020b7: PUSH1 0x00 000020b9: DUP8 000020ba: DUP1 000020bb: EXTCODESIZE 000020bc: ISZERO 000020bd: DUP1 000020be: ISZERO 000020bf: PUSH2 0x20c7 000020c2: JUMPI 000020c3: PUSH1 0x00 000020c5: DUP1 000020c6: REVERT 000020c7: JUMPDEST 000020c8: POP 000020c9: GAS 000020ca: CALL 000020cb: ISZERO 000020cc: DUP1 000020cd: ISZERO 000020ce: PUSH2 0x20db 000020d1: JUMPI 000020d2: RETURNDATASIZE 000020d3: PUSH1 0x00 000020d5: DUP1 000020d6: RETURNDATACOPY 000020d7: RETURNDATASIZE 000020d8: PUSH1 0x00 000020da: REVERT 000020db: JUMPDEST 000020dc: POP 000020dd: POP 000020de: POP 000020df: POP 000020e0: PUSH1 0x40 000020e2: MLOAD 000020e3: RETURNDATASIZE 000020e4: PUSH1 0x1f 000020e6: NOT 000020e7: PUSH1 0x1f 000020e9: DUP3 000020ea: ADD 000020eb: AND 000020ec: DUP3 000020ed: ADD 000020ee: DUP1 000020ef: PUSH1 0x40 000020f1: MSTORE 000020f2: POP 000020f3: PUSH2 0x20ff 000020f6: SWAP2 000020f7: SWAP1 000020f8: DUP2 000020f9: ADD 000020fa: SWAP1 000020fb: PUSH2 0x2f0d 000020fe: JUMP 000020ff: JUMPDEST 00002100: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002115: AND 00002116: PUSH4 0x314a522e 0000211b: DUP5 0000211c: PUSH1 0x40 0000211e: MLOAD 0000211f: DUP3 00002120: PUSH4 0xffffffff 00002125: AND 00002126: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00002144: MUL 00002145: DUP2 00002146: MSTORE 00002147: PUSH1 0x04 00002149: ADD 0000214a: PUSH2 0x2153 0000214d: SWAP2 0000214e: SWAP1 0000214f: PUSH2 0x3237 00002152: JUMP 00002153: JUMPDEST 00002154: PUSH1 0x20 00002156: PUSH1 0x40 00002158: MLOAD 00002159: DUP1 0000215a: DUP4 0000215b: SUB 0000215c: DUP2 0000215d: PUSH1 0x00 0000215f: DUP8 00002160: DUP1 00002161: EXTCODESIZE 00002162: ISZERO 00002163: DUP1 00002164: ISZERO 00002165: PUSH2 0x216d 00002168: JUMPI 00002169: PUSH1 0x00 0000216b: DUP1 0000216c: REVERT 0000216d: JUMPDEST 0000216e: POP 0000216f: GAS 00002170: CALL 00002171: ISZERO 00002172: DUP1 00002173: ISZERO 00002174: PUSH2 0x2181 00002177: JUMPI 00002178: RETURNDATASIZE 00002179: PUSH1 0x00 0000217b: DUP1 0000217c: RETURNDATACOPY 0000217d: RETURNDATASIZE 0000217e: PUSH1 0x00 00002180: REVERT 00002181: JUMPDEST 00002182: POP 00002183: POP 00002184: POP 00002185: POP 00002186: PUSH1 0x40 00002188: MLOAD 00002189: RETURNDATASIZE 0000218a: PUSH1 0x1f 0000218c: NOT 0000218d: PUSH1 0x1f 0000218f: DUP3 00002190: ADD 00002191: AND 00002192: DUP3 00002193: ADD 00002194: DUP1 00002195: PUSH1 0x40 00002197: MSTORE 00002198: POP 00002199: PUSH2 0x21a5 0000219c: SWAP2 0000219d: SWAP1 0000219e: DUP2 0000219f: ADD 000021a0: SWAP1 000021a1: PUSH2 0x2dcc 000021a4: JUMP 000021a5: JUMPDEST 000021a6: SWAP1 000021a7: POP 000021a8: PUSH2 0x21b0 000021ab: DUP2 000021ac: PUSH2 0x29be 000021af: JUMP 000021b0: JUMPDEST 000021b1: SWAP2 000021b2: POP 000021b3: POP 000021b4: SWAP2 000021b5: SWAP1 000021b6: POP 000021b7: JUMP 000021b8: JUMPDEST 000021b9: PUSH1 0x00 000021bb: DUP1 000021bc: DUP4 000021bd: EQ 000021be: ISZERO 000021bf: PUSH2 0x21cb 000021c2: JUMPI 000021c3: PUSH1 0x00 000021c5: SWAP1 000021c6: POP 000021c7: PUSH2 0x21ea 000021ca: JUMP 000021cb: JUMPDEST 000021cc: DUP2 000021cd: DUP4 000021ce: MUL 000021cf: SWAP1 000021d0: POP 000021d1: DUP2 000021d2: DUP4 000021d3: DUP3 000021d4: DUP2 000021d5: ISZERO 000021d6: ISZERO 000021d7: PUSH2 0x21dc 000021da: JUMPI 000021db: INVALID 000021dc: JUMPDEST 000021dd: DIV 000021de: EQ 000021df: ISZERO 000021e0: ISZERO 000021e1: PUSH2 0x21e6 000021e4: JUMPI 000021e5: INVALID 000021e6: JUMPDEST 000021e7: DUP1 000021e8: SWAP1 000021e9: POP 000021ea: JUMPDEST 000021eb: SWAP3 000021ec: SWAP2 000021ed: POP 000021ee: POP 000021ef: JUMP 000021f0: JUMPDEST 000021f1: PUSH1 0x00 000021f3: DUP2 000021f4: DUP4 000021f5: ADD 000021f6: SWAP1 000021f7: POP 000021f8: DUP3 000021f9: DUP2 000021fa: LT 000021fb: ISZERO 000021fc: ISZERO 000021fd: ISZERO 000021fe: PUSH2 0x2203 00002201: JUMPI 00002202: INVALID 00002203: JUMPDEST 00002204: DUP1 00002205: SWAP1 00002206: POP 00002207: SWAP3 00002208: SWAP2 00002209: POP 0000220a: POP 0000220b: JUMP 0000220c: JUMPDEST 0000220d: PUSH1 0x00 0000220f: DUP1 00002210: PUSH2 0x2218 00002213: DUP5 00002214: PUSH2 0x2aa7 00002217: JUMP 00002218: JUMPDEST 00002219: DUP3 0000221a: PUSH1 0x0a 0000221c: EXP 0000221d: SWAP1 0000221e: POP 0000221f: PUSH2 0x224b 00002222: DUP5 00002223: PUSH1 0x20 00002225: ADD 00002226: MLOAD 00002227: PUSH2 0x223d 0000222a: DUP7 0000222b: PUSH1 0x00 0000222d: ADD 0000222e: MLOAD 0000222f: DUP5 00002230: PUSH2 0x21b8 00002233: SWAP1 00002234: SWAP2 00002235: SWAP1 00002236: PUSH4 0xffffffff 0000223b: AND 0000223c: JUMP 0000223d: JUMPDEST 0000223e: PUSH2 0x2022 00002241: SWAP1 00002242: SWAP2 00002243: SWAP1 00002244: PUSH4 0xffffffff 00002249: AND 0000224a: JUMP 0000224b: JUMPDEST 0000224c: SWAP2 0000224d: POP 0000224e: POP 0000224f: SWAP3 00002250: SWAP2 00002251: POP 00002252: POP 00002253: JUMP 00002254: JUMPDEST 00002255: PUSH1 0x00 00002257: DUP1 00002258: PUSH2 0x226a 0000225b: PUSH2 0x2263 0000225e: DUP7 0000225f: PUSH2 0x0a21 00002262: JUMP 00002263: JUMPDEST 00002264: PUSH1 0x03 00002266: PUSH2 0x2699 00002269: JUMP 0000226a: JUMPDEST 0000226b: ISZERO 0000226c: PUSH2 0x2278 0000226f: JUMPI 00002270: PUSH1 0x00 00002272: SWAP2 00002273: POP 00002274: PUSH2 0x23dd 00002277: JUMP 00002278: JUMPDEST 00002279: PUSH2 0x22af 0000227c: PUSH2 0x22a8 0000227f: PUSH1 0x03 00002281: PUSH1 0x00 00002283: SWAP1 00002284: SLOAD 00002285: SWAP1 00002286: PUSH2 0x0100 00002289: EXP 0000228a: SWAP1 0000228b: DIV 0000228c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022a1: AND 000022a2: DUP6 000022a3: DUP8 000022a4: PUSH2 0x26f1 000022a7: JUMP 000022a8: JUMPDEST 000022a9: PUSH1 0x01 000022ab: PUSH2 0x2699 000022ae: JUMP 000022af: JUMPDEST 000022b0: ISZERO 000022b1: PUSH2 0x22bd 000022b4: JUMPI 000022b5: PUSH1 0x00 000022b7: SWAP2 000022b8: POP 000022b9: PUSH2 0x23dd 000022bc: JUMP 000022bd: JUMPDEST 000022be: ADDRESS 000022bf: SWAP1 000022c0: POP 000022c1: PUSH1 0x40 000022c3: DUP1 000022c4: MLOAD 000022c5: SWAP1 000022c6: DUP2 000022c7: ADD 000022c8: PUSH1 0x40 000022ca: MSTORE 000022cb: DUP1 000022cc: DUP6 000022cd: DUP2 000022ce: MSTORE 000022cf: PUSH1 0x20 000022d1: ADD 000022d2: DUP5 000022d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022e8: AND 000022e9: DUP2 000022ea: MSTORE 000022eb: POP 000022ec: PUSH1 0x06 000022ee: PUSH1 0x00 000022f0: DUP8 000022f1: PUSH1 0x00 000022f3: NOT 000022f4: AND 000022f5: PUSH1 0x00 000022f7: NOT 000022f8: AND 000022f9: DUP2 000022fa: MSTORE 000022fb: PUSH1 0x20 000022fd: ADD 000022fe: SWAP1 000022ff: DUP2 00002300: MSTORE 00002301: PUSH1 0x20 00002303: ADD 00002304: PUSH1 0x00 00002306: KECCAK256 00002307: PUSH1 0x00 00002309: DUP3 0000230a: ADD 0000230b: MLOAD 0000230c: DUP2 0000230d: PUSH1 0x00 0000230f: ADD 00002310: SSTORE 00002311: PUSH1 0x20 00002313: DUP3 00002314: ADD 00002315: MLOAD 00002316: DUP2 00002317: PUSH1 0x01 00002319: ADD 0000231a: PUSH1 0x00 0000231c: PUSH2 0x0100 0000231f: EXP 00002320: DUP2 00002321: SLOAD 00002322: DUP2 00002323: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002338: MUL 00002339: NOT 0000233a: AND 0000233b: SWAP1 0000233c: DUP4 0000233d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002352: AND 00002353: MUL 00002354: OR 00002355: SWAP1 00002356: SSTORE 00002357: POP 00002358: SWAP1 00002359: POP 0000235a: POP 0000235b: DUP3 0000235c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002371: AND 00002372: DUP6 00002373: PUSH1 0x00 00002375: NOT 00002376: AND 00002377: PUSH32 0x195d2e7855185ac08fef1e42ab0ccf60a6c8f79ba0af23b37c220eadf42ae9ea 00002398: DUP7 00002399: PUSH1 0x40 0000239b: MLOAD 0000239c: PUSH2 0x23a5 0000239f: SWAP2 000023a0: SWAP1 000023a1: PUSH2 0x32fe 000023a4: JUMP 000023a5: JUMPDEST 000023a6: PUSH1 0x40 000023a8: MLOAD 000023a9: DUP1 000023aa: SWAP2 000023ab: SUB 000023ac: SWAP1 000023ad: LOG3 000023ae: PUSH2 0x23da 000023b1: PUSH1 0x03 000023b3: PUSH1 0x00 000023b5: SWAP1 000023b6: SLOAD 000023b7: SWAP1 000023b8: PUSH2 0x0100 000023bb: EXP 000023bc: SWAP1 000023bd: DIV 000023be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023d3: AND 000023d4: DUP5 000023d5: DUP7 000023d6: PUSH2 0x24e2 000023d9: JUMP 000023da: JUMPDEST 000023db: SWAP2 000023dc: POP 000023dd: JUMPDEST 000023de: POP 000023df: SWAP4 000023e0: SWAP3 000023e1: POP 000023e2: POP 000023e3: POP 000023e4: JUMP 000023e5: JUMPDEST 000023e6: PUSH2 0x23ed 000023e9: PUSH2 0x2bfa 000023ec: JUMP 000023ed: JUMPDEST 000023ee: PUSH2 0x242b 000023f1: PUSH2 0x240b 000023f4: DUP4 000023f5: PUSH1 0x00 000023f7: ADD 000023f8: MLOAD 000023f9: DUP6 000023fa: PUSH1 0x00 000023fc: ADD 000023fd: MLOAD 000023fe: PUSH2 0x21b8 00002401: SWAP1 00002402: SWAP2 00002403: SWAP1 00002404: PUSH4 0xffffffff 00002409: AND 0000240a: JUMP 0000240b: JUMPDEST 0000240c: PUSH2 0x2426 0000240f: DUP5 00002410: PUSH1 0x20 00002412: ADD 00002413: MLOAD 00002414: DUP7 00002415: PUSH1 0x20 00002417: ADD 00002418: MLOAD 00002419: PUSH2 0x21b8 0000241c: SWAP1 0000241d: SWAP2 0000241e: SWAP1 0000241f: PUSH4 0xffffffff 00002424: AND 00002425: JUMP 00002426: JUMPDEST 00002427: PUSH2 0x2abb 0000242a: JUMP 0000242b: JUMPDEST 0000242c: SWAP1 0000242d: POP 0000242e: SWAP3 0000242f: SWAP2 00002430: POP 00002431: POP 00002432: JUMP 00002433: JUMPDEST 00002434: PUSH2 0x243b 00002437: PUSH2 0x2bfa 0000243a: JUMP 0000243b: JUMPDEST 0000243c: PUSH1 0x00 0000243e: DUP1 0000243f: PUSH2 0x2459 00002442: DUP5 00002443: PUSH1 0x20 00002445: ADD 00002446: MLOAD 00002447: DUP7 00002448: PUSH1 0x00 0000244a: ADD 0000244b: MLOAD 0000244c: PUSH2 0x21b8 0000244f: SWAP1 00002450: SWAP2 00002451: SWAP1 00002452: PUSH4 0xffffffff 00002457: AND 00002458: JUMP 00002459: JUMPDEST 0000245a: SWAP2 0000245b: POP 0000245c: PUSH2 0x2476 0000245f: DUP6 00002460: PUSH1 0x20 00002462: ADD 00002463: MLOAD 00002464: DUP6 00002465: PUSH1 0x00 00002467: ADD 00002468: MLOAD 00002469: PUSH2 0x21b8 0000246c: SWAP1 0000246d: SWAP2 0000246e: SWAP1 0000246f: PUSH4 0xffffffff 00002474: AND 00002475: JUMP 00002476: JUMPDEST 00002477: SWAP1 00002478: POP 00002479: DUP1 0000247a: DUP3 0000247b: LT 0000247c: ISZERO 0000247d: PUSH2 0x2488 00002480: JUMPI 00002481: DUP5 00002482: SWAP3 00002483: POP 00002484: PUSH2 0x248c 00002487: JUMP 00002488: JUMPDEST 00002489: DUP4 0000248a: SWAP3 0000248b: POP 0000248c: JUMPDEST 0000248d: POP 0000248e: POP 0000248f: SWAP3 00002490: SWAP2 00002491: POP 00002492: POP 00002493: JUMP 00002494: JUMPDEST 00002495: PUSH2 0x249c 00002498: PUSH2 0x2bfa 0000249b: JUMP 0000249c: JUMPDEST 0000249d: PUSH2 0x24da 000024a0: PUSH2 0x24ba 000024a3: DUP4 000024a4: PUSH1 0x20 000024a6: ADD 000024a7: MLOAD 000024a8: DUP6 000024a9: PUSH1 0x00 000024ab: ADD 000024ac: MLOAD 000024ad: PUSH2 0x21b8 000024b0: SWAP1 000024b1: SWAP2 000024b2: SWAP1 000024b3: PUSH4 0xffffffff 000024b8: AND 000024b9: JUMP 000024ba: JUMPDEST 000024bb: PUSH2 0x24d5 000024be: DUP5 000024bf: PUSH1 0x00 000024c1: ADD 000024c2: MLOAD 000024c3: DUP7 000024c4: PUSH1 0x20 000024c6: ADD 000024c7: MLOAD 000024c8: PUSH2 0x21b8 000024cb: SWAP1 000024cc: SWAP2 000024cd: SWAP1 000024ce: PUSH4 0xffffffff 000024d3: AND 000024d4: JUMP 000024d5: JUMPDEST 000024d6: PUSH2 0x2abb 000024d9: JUMP 000024da: JUMPDEST 000024db: SWAP1 000024dc: POP 000024dd: SWAP3 000024de: SWAP2 000024df: POP 000024e0: POP 000024e1: JUMP 000024e2: JUMPDEST 000024e3: PUSH1 0x00 000024e5: DUP1 000024e6: ADDRESS 000024e7: SWAP1 000024e8: POP 000024e9: DUP5 000024ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024ff: AND 00002500: PUSH4 0x23b872dd 00002505: DUP6 00002506: DUP4 00002507: DUP7 00002508: PUSH1 0x40 0000250a: MLOAD 0000250b: DUP5 0000250c: PUSH4 0xffffffff 00002511: AND 00002512: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00002530: MUL 00002531: DUP2 00002532: MSTORE 00002533: PUSH1 0x04 00002535: ADD 00002536: PUSH2 0x2541 00002539: SWAP4 0000253a: SWAP3 0000253b: SWAP2 0000253c: SWAP1 0000253d: PUSH2 0x31bc 00002540: JUMP 00002541: JUMPDEST 00002542: PUSH1 0x20 00002544: PUSH1 0x40 00002546: MLOAD 00002547: DUP1 00002548: DUP4 00002549: SUB 0000254a: DUP2 0000254b: PUSH1 0x00 0000254d: DUP8 0000254e: DUP1 0000254f: EXTCODESIZE 00002550: ISZERO 00002551: DUP1 00002552: ISZERO 00002553: PUSH2 0x255b 00002556: JUMPI 00002557: PUSH1 0x00 00002559: DUP1 0000255a: REVERT 0000255b: JUMPDEST 0000255c: POP 0000255d: GAS 0000255e: CALL 0000255f: ISZERO 00002560: DUP1 00002561: ISZERO 00002562: PUSH2 0x256f 00002565: JUMPI 00002566: RETURNDATASIZE 00002567: PUSH1 0x00 00002569: DUP1 0000256a: RETURNDATACOPY 0000256b: RETURNDATASIZE 0000256c: PUSH1 0x00 0000256e: REVERT 0000256f: JUMPDEST 00002570: POP 00002571: POP 00002572: POP 00002573: POP 00002574: PUSH1 0x40 00002576: MLOAD 00002577: RETURNDATASIZE 00002578: PUSH1 0x1f 0000257a: NOT 0000257b: PUSH1 0x1f 0000257d: DUP3 0000257e: ADD 0000257f: AND 00002580: DUP3 00002581: ADD 00002582: DUP1 00002583: PUSH1 0x40 00002585: MSTORE 00002586: POP 00002587: PUSH2 0x2593 0000258a: SWAP2 0000258b: SWAP1 0000258c: DUP2 0000258d: ADD 0000258e: SWAP1 0000258f: PUSH2 0x2d7a 00002592: JUMP 00002593: JUMPDEST 00002594: SWAP2 00002595: POP 00002596: POP 00002597: SWAP4 00002598: SWAP3 00002599: POP 0000259a: POP 0000259b: POP 0000259c: JUMP 0000259d: JUMPDEST 0000259e: PUSH1 0x00 000025a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025b5: AND 000025b6: DUP2 000025b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025cc: AND 000025cd: EQ 000025ce: ISZERO 000025cf: ISZERO 000025d0: ISZERO 000025d1: PUSH2 0x25d9 000025d4: JUMPI 000025d5: PUSH1 0x00 000025d7: DUP1 000025d8: REVERT 000025d9: JUMPDEST 000025da: DUP1 000025db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025f0: AND 000025f1: PUSH1 0x07 000025f3: PUSH1 0x00 000025f5: SWAP1 000025f6: SLOAD 000025f7: SWAP1 000025f8: PUSH2 0x0100 000025fb: EXP 000025fc: SWAP1 000025fd: DIV 000025fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002613: AND 00002614: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002629: AND 0000262a: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 0000264b: PUSH1 0x40 0000264d: MLOAD 0000264e: PUSH1 0x40 00002650: MLOAD 00002651: DUP1 00002652: SWAP2 00002653: SUB 00002654: SWAP1 00002655: LOG3 00002656: DUP1 00002657: PUSH1 0x07 00002659: PUSH1 0x00 0000265b: PUSH2 0x0100 0000265e: EXP 0000265f: DUP2 00002660: SLOAD 00002661: DUP2 00002662: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002677: MUL 00002678: NOT 00002679: AND 0000267a: SWAP1 0000267b: DUP4 0000267c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002691: AND 00002692: MUL 00002693: OR 00002694: SWAP1 00002695: SSTORE 00002696: POP 00002697: POP 00002698: JUMP 00002699: JUMPDEST 0000269a: PUSH1 0x00 0000269c: DUP3 0000269d: ISZERO 0000269e: ISZERO 0000269f: PUSH2 0x26e6 000026a2: JUMPI 000026a3: DUP2 000026a4: PUSH1 0x04 000026a6: DUP2 000026a7: GT 000026a8: ISZERO 000026a9: PUSH2 0x26ae 000026ac: JUMPI 000026ad: INVALID 000026ae: JUMPDEST 000026af: PUSH1 0xff 000026b1: AND 000026b2: PUSH32 0xf64a83c5d4d949675caf48520cc73c95b7d9a17ce71f39ba7695af5917d86eba 000026d3: PUSH1 0x40 000026d5: MLOAD 000026d6: PUSH1 0x40 000026d8: MLOAD 000026d9: DUP1 000026da: SWAP2 000026db: SUB 000026dc: SWAP1 000026dd: LOG2 000026de: PUSH1 0x01 000026e0: SWAP1 000026e1: POP 000026e2: PUSH2 0x26eb 000026e5: JUMP 000026e6: JUMPDEST 000026e7: PUSH1 0x00 000026e9: SWAP1 000026ea: POP 000026eb: JUMPDEST 000026ec: SWAP3 000026ed: SWAP2 000026ee: POP 000026ef: POP 000026f0: JUMP 000026f1: JUMPDEST 000026f2: PUSH1 0x00 000026f4: DUP1 000026f5: ADDRESS 000026f6: SWAP1 000026f7: POP 000026f8: DUP3 000026f9: DUP6 000026fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000270f: AND 00002710: PUSH4 0x70a08231 00002715: DUP7 00002716: PUSH1 0x40 00002718: MLOAD 00002719: DUP3 0000271a: PUSH4 0xffffffff 0000271f: AND 00002720: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000273e: MUL 0000273f: DUP2 00002740: MSTORE 00002741: PUSH1 0x04 00002743: ADD 00002744: PUSH2 0x274d 00002747: SWAP2 00002748: SWAP1 00002749: PUSH2 0x3178 0000274c: JUMP 0000274d: JUMPDEST 0000274e: PUSH1 0x20 00002750: PUSH1 0x40 00002752: MLOAD 00002753: DUP1 00002754: DUP4 00002755: SUB 00002756: DUP2 00002757: PUSH1 0x00 00002759: DUP8 0000275a: DUP1 0000275b: EXTCODESIZE 0000275c: ISZERO 0000275d: DUP1 0000275e: ISZERO 0000275f: PUSH2 0x2767 00002762: JUMPI 00002763: PUSH1 0x00 00002765: DUP1 00002766: REVERT 00002767: JUMPDEST 00002768: POP 00002769: GAS 0000276a: CALL 0000276b: ISZERO 0000276c: DUP1 0000276d: ISZERO 0000276e: PUSH2 0x277b 00002771: JUMPI 00002772: RETURNDATASIZE 00002773: PUSH1 0x00 00002775: DUP1 00002776: RETURNDATACOPY 00002777: RETURNDATASIZE 00002778: PUSH1 0x00 0000277a: REVERT 0000277b: JUMPDEST 0000277c: POP 0000277d: POP 0000277e: POP 0000277f: POP 00002780: PUSH1 0x40 00002782: MLOAD 00002783: RETURNDATASIZE 00002784: PUSH1 0x1f 00002786: NOT 00002787: PUSH1 0x1f 00002789: DUP3 0000278a: ADD 0000278b: AND 0000278c: DUP3 0000278d: ADD 0000278e: DUP1 0000278f: PUSH1 0x40 00002791: MSTORE 00002792: POP 00002793: PUSH2 0x279f 00002796: SWAP2 00002797: SWAP1 00002798: DUP2 00002799: ADD 0000279a: SWAP1 0000279b: PUSH2 0x2f9b 0000279e: JUMP 0000279f: JUMPDEST 000027a0: LT 000027a1: ISZERO 000027a2: DUP1 000027a3: ISZERO 000027a4: PUSH2 0x2855 000027a7: JUMPI 000027a8: POP 000027a9: DUP3 000027aa: DUP6 000027ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000027c0: AND 000027c1: PUSH4 0xdd62ed3e 000027c6: DUP7 000027c7: DUP5 000027c8: PUSH1 0x40 000027ca: MLOAD 000027cb: DUP4 000027cc: PUSH4 0xffffffff 000027d1: AND 000027d2: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 000027f0: MUL 000027f1: DUP2 000027f2: MSTORE 000027f3: PUSH1 0x04 000027f5: ADD 000027f6: PUSH2 0x2800 000027f9: SWAP3 000027fa: SWAP2 000027fb: SWAP1 000027fc: PUSH2 0x3193 000027ff: JUMP 00002800: JUMPDEST 00002801: PUSH1 0x20 00002803: PUSH1 0x40 00002805: MLOAD 00002806: DUP1 00002807: DUP4 00002808: SUB 00002809: DUP2 0000280a: PUSH1 0x00 0000280c: DUP8 0000280d: DUP1 0000280e: EXTCODESIZE 0000280f: ISZERO 00002810: DUP1 00002811: ISZERO 00002812: PUSH2 0x281a 00002815: JUMPI 00002816: PUSH1 0x00 00002818: DUP1 00002819: REVERT 0000281a: JUMPDEST 0000281b: POP 0000281c: GAS 0000281d: CALL 0000281e: ISZERO 0000281f: DUP1 00002820: ISZERO 00002821: PUSH2 0x282e 00002824: JUMPI 00002825: RETURNDATASIZE 00002826: PUSH1 0x00 00002828: DUP1 00002829: RETURNDATACOPY 0000282a: RETURNDATASIZE 0000282b: PUSH1 0x00 0000282d: REVERT 0000282e: JUMPDEST 0000282f: POP 00002830: POP 00002831: POP 00002832: POP 00002833: PUSH1 0x40 00002835: MLOAD 00002836: RETURNDATASIZE 00002837: PUSH1 0x1f 00002839: NOT 0000283a: PUSH1 0x1f 0000283c: DUP3 0000283d: ADD 0000283e: AND 0000283f: DUP3 00002840: ADD 00002841: DUP1 00002842: PUSH1 0x40 00002844: MSTORE 00002845: POP 00002846: PUSH2 0x2852 00002849: SWAP2 0000284a: SWAP1 0000284b: DUP2 0000284c: ADD 0000284d: SWAP1 0000284e: PUSH2 0x2f9b 00002851: JUMP 00002852: JUMPDEST 00002853: LT 00002854: ISZERO 00002855: JUMPDEST 00002856: SWAP2 00002857: POP 00002858: POP 00002859: SWAP4 0000285a: SWAP3 0000285b: POP 0000285c: POP 0000285d: POP 0000285e: JUMP 0000285f: JUMPDEST 00002860: PUSH1 0x00 00002862: DUP1 00002863: PUSH1 0x00 00002865: PUSH1 0x06 00002867: PUSH1 0x00 00002869: DUP6 0000286a: PUSH1 0x00 0000286c: NOT 0000286d: AND 0000286e: PUSH1 0x00 00002870: NOT 00002871: AND 00002872: DUP2 00002873: MSTORE 00002874: PUSH1 0x20 00002876: ADD 00002877: SWAP1 00002878: DUP2 00002879: MSTORE 0000287a: PUSH1 0x20 0000287c: ADD 0000287d: PUSH1 0x00 0000287f: KECCAK256 00002880: PUSH1 0x00 00002882: ADD 00002883: SLOAD 00002884: SWAP2 00002885: POP 00002886: PUSH1 0x06 00002888: PUSH1 0x00 0000288a: DUP6 0000288b: PUSH1 0x00 0000288d: NOT 0000288e: AND 0000288f: PUSH1 0x00 00002891: NOT 00002892: AND 00002893: DUP2 00002894: MSTORE 00002895: PUSH1 0x20 00002897: ADD 00002898: SWAP1 00002899: DUP2 0000289a: MSTORE 0000289b: PUSH1 0x20 0000289d: ADD 0000289e: PUSH1 0x00 000028a0: KECCAK256 000028a1: PUSH1 0x01 000028a3: ADD 000028a4: PUSH1 0x00 000028a6: SWAP1 000028a7: SLOAD 000028a8: SWAP1 000028a9: PUSH2 0x0100 000028ac: EXP 000028ad: SWAP1 000028ae: DIV 000028af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000028c4: AND 000028c5: SWAP1 000028c6: POP 000028c7: PUSH1 0x00 000028c9: PUSH1 0x06 000028cb: PUSH1 0x00 000028cd: DUP7 000028ce: PUSH1 0x00 000028d0: NOT 000028d1: AND 000028d2: PUSH1 0x00 000028d4: NOT 000028d5: AND 000028d6: DUP2 000028d7: MSTORE 000028d8: PUSH1 0x20 000028da: ADD 000028db: SWAP1 000028dc: DUP2 000028dd: MSTORE 000028de: PUSH1 0x20 000028e0: ADD 000028e1: PUSH1 0x00 000028e3: KECCAK256 000028e4: PUSH1 0x00 000028e6: ADD 000028e7: DUP2 000028e8: SWAP1 000028e9: SSTORE 000028ea: POP 000028eb: PUSH1 0x03 000028ed: PUSH1 0x00 000028ef: SWAP1 000028f0: SLOAD 000028f1: SWAP1 000028f2: PUSH2 0x0100 000028f5: EXP 000028f6: SWAP1 000028f7: DIV 000028f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000290d: AND 0000290e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002923: AND 00002924: PUSH4 0xa9059cbb 00002929: DUP3 0000292a: DUP5 0000292b: PUSH1 0x40 0000292d: MLOAD 0000292e: DUP4 0000292f: PUSH4 0xffffffff 00002934: AND 00002935: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00002953: MUL 00002954: DUP2 00002955: MSTORE 00002956: PUSH1 0x04 00002958: ADD 00002959: PUSH2 0x2963 0000295c: SWAP3 0000295d: SWAP2 0000295e: SWAP1 0000295f: PUSH2 0x31f3 00002962: JUMP 00002963: JUMPDEST 00002964: PUSH1 0x20 00002966: PUSH1 0x40 00002968: MLOAD 00002969: DUP1 0000296a: DUP4 0000296b: SUB 0000296c: DUP2 0000296d: PUSH1 0x00 0000296f: DUP8 00002970: DUP1 00002971: EXTCODESIZE 00002972: ISZERO 00002973: DUP1 00002974: ISZERO 00002975: PUSH2 0x297d 00002978: JUMPI 00002979: PUSH1 0x00 0000297b: DUP1 0000297c: REVERT 0000297d: JUMPDEST 0000297e: POP 0000297f: GAS 00002980: CALL 00002981: ISZERO 00002982: DUP1 00002983: ISZERO 00002984: PUSH2 0x2991 00002987: JUMPI 00002988: RETURNDATASIZE 00002989: PUSH1 0x00 0000298b: DUP1 0000298c: RETURNDATACOPY 0000298d: RETURNDATASIZE 0000298e: PUSH1 0x00 00002990: REVERT 00002991: JUMPDEST 00002992: POP 00002993: POP 00002994: POP 00002995: POP 00002996: PUSH1 0x40 00002998: MLOAD 00002999: RETURNDATASIZE 0000299a: PUSH1 0x1f 0000299c: NOT 0000299d: PUSH1 0x1f 0000299f: DUP3 000029a0: ADD 000029a1: AND 000029a2: DUP3 000029a3: ADD 000029a4: DUP1 000029a5: PUSH1 0x40 000029a7: MSTORE 000029a8: POP 000029a9: PUSH2 0x29b5 000029ac: SWAP2 000029ad: SWAP1 000029ae: DUP2 000029af: ADD 000029b0: SWAP1 000029b1: PUSH2 0x2d7a 000029b4: JUMP 000029b5: JUMPDEST 000029b6: SWAP3 000029b7: POP 000029b8: POP 000029b9: POP 000029ba: SWAP2 000029bb: SWAP1 000029bc: POP 000029bd: JUMP 000029be: JUMPDEST 000029bf: PUSH2 0x29c6 000029c2: PUSH2 0x2bd1 000029c5: JUMP 000029c6: JUMPDEST 000029c7: PUSH1 0x00 000029c9: DUP1 000029ca: PUSH1 0x00 000029cc: DUP1 000029cd: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000 000029ee: PUSH1 0x01 000029f0: MUL 000029f1: DUP7 000029f2: AND 000029f3: SWAP4 000029f4: POP 000029f5: PUSH31 0xff000000000000000000000000000000000000000000000000000000000000 00002a15: PUSH1 0x01 00002a17: MUL 00002a18: DUP7 00002a19: AND 00002a1a: SWAP3 00002a1b: POP 00002a1c: PUSH30 0xffffffffffffffffffffffffffffff000000000000000000000000000000 00002a3b: PUSH1 0x01 00002a3d: MUL 00002a3e: DUP7 00002a3f: AND 00002a40: SWAP2 00002a41: POP 00002a42: PUSH15 0xffffffffffffffffffffffffffffff 00002a52: PUSH1 0x01 00002a54: MUL 00002a55: DUP7 00002a56: AND 00002a57: SWAP1 00002a58: POP 00002a59: PUSH1 0x80 00002a5b: PUSH1 0x40 00002a5d: MLOAD 00002a5e: SWAP1 00002a5f: DUP2 00002a60: ADD 00002a61: PUSH1 0x40 00002a63: MSTORE 00002a64: DUP1 00002a65: PUSH2 0x2a6f 00002a68: DUP7 00002a69: PUSH1 0xf8 00002a6b: PUSH2 0x2b92 00002a6e: JUMP 00002a6f: JUMPDEST 00002a70: DUP2 00002a71: MSTORE 00002a72: PUSH1 0x20 00002a74: ADD 00002a75: PUSH2 0x2a7f 00002a78: DUP6 00002a79: PUSH1 0xf0 00002a7b: PUSH2 0x2b92 00002a7e: JUMP 00002a7f: JUMPDEST 00002a80: DUP2 00002a81: MSTORE 00002a82: PUSH1 0x20 00002a84: ADD 00002a85: PUSH2 0x2a8f 00002a88: DUP5 00002a89: PUSH1 0x78 00002a8b: PUSH2 0x2b92 00002a8e: JUMP 00002a8f: JUMPDEST 00002a90: DUP2 00002a91: MSTORE 00002a92: PUSH1 0x20 00002a94: ADD 00002a95: DUP3 00002a96: PUSH1 0x01 00002a98: SWAP1 00002a99: DIV 00002a9a: DUP2 00002a9b: MSTORE 00002a9c: POP 00002a9d: SWAP5 00002a9e: POP 00002a9f: POP 00002aa0: POP 00002aa1: POP 00002aa2: POP 00002aa3: SWAP2 00002aa4: SWAP1 00002aa5: POP 00002aa6: JUMP 00002aa7: JUMPDEST 00002aa8: PUSH1 0x00 00002aaa: DUP2 00002aab: PUSH1 0x20 00002aad: ADD 00002aae: MLOAD 00002aaf: EQ 00002ab0: ISZERO 00002ab1: ISZERO 00002ab2: ISZERO 00002ab3: PUSH2 0x2ab8 00002ab6: JUMPI 00002ab7: INVALID 00002ab8: JUMPDEST 00002ab9: POP 00002aba: JUMP 00002abb: JUMPDEST 00002abc: PUSH2 0x2ac3 00002abf: PUSH2 0x2bfa 00002ac2: JUMP 00002ac3: JUMPDEST 00002ac4: PUSH1 0x00 00002ac6: DUP1 00002ac7: DUP4 00002ac8: DUP6 00002ac9: GT 00002aca: PUSH2 0x2ad3 00002acd: JUMPI 00002ace: DUP4 00002acf: PUSH2 0x2ad5 00002ad2: JUMP 00002ad3: JUMPDEST 00002ad4: DUP5 00002ad5: JUMPDEST 00002ad6: SWAP2 00002ad7: POP 00002ad8: PUSH2 0x0100 00002adb: DUP3 00002adc: SWAP1 00002add: PUSH1 0x02 00002adf: EXP 00002ae0: SWAP1 00002ae1: DIV 00002ae2: SWAP1 00002ae3: POP 00002ae4: PUSH1 0x00 00002ae6: DUP2 00002ae7: EQ 00002ae8: ISZERO 00002ae9: ISZERO 00002aea: PUSH2 0x2b10 00002aed: JUMPI 00002aee: PUSH1 0x01 00002af0: DUP2 00002af1: ADD 00002af2: SWAP1 00002af3: POP 00002af4: DUP1 00002af5: DUP6 00002af6: DUP2 00002af7: ISZERO 00002af8: ISZERO 00002af9: PUSH2 0x2afe 00002afc: JUMPI 00002afd: INVALID 00002afe: JUMPDEST 00002aff: DIV 00002b00: SWAP5 00002b01: POP 00002b02: DUP1 00002b03: DUP5 00002b04: DUP2 00002b05: ISZERO 00002b06: ISZERO 00002b07: PUSH2 0x2b0c 00002b0a: JUMPI 00002b0b: INVALID 00002b0c: JUMPDEST 00002b0d: DIV 00002b0e: SWAP4 00002b0f: POP 00002b10: JUMPDEST 00002b11: PUSH1 0x00 00002b13: DUP5 00002b14: EQ 00002b15: ISZERO 00002b16: ISZERO 00002b17: ISZERO 00002b18: PUSH2 0x2b1d 00002b1b: JUMPI 00002b1c: INVALID 00002b1d: JUMPDEST 00002b1e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002b3f: DUP5 00002b40: LT 00002b41: ISZERO 00002b42: ISZERO 00002b43: PUSH2 0x2b48 00002b46: JUMPI 00002b47: INVALID 00002b48: JUMPDEST 00002b49: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002b6a: DUP6 00002b6b: LT 00002b6c: ISZERO 00002b6d: ISZERO 00002b6e: PUSH2 0x2b73 00002b71: JUMPI 00002b72: INVALID 00002b73: JUMPDEST 00002b74: PUSH1 0x40 00002b76: DUP1 00002b77: MLOAD 00002b78: SWAP1 00002b79: DUP2 00002b7a: ADD 00002b7b: PUSH1 0x40 00002b7d: MSTORE 00002b7e: DUP1 00002b7f: DUP7 00002b80: DUP2 00002b81: MSTORE 00002b82: PUSH1 0x20 00002b84: ADD 00002b85: DUP6 00002b86: DUP2 00002b87: MSTORE 00002b88: POP 00002b89: SWAP3 00002b8a: POP 00002b8b: POP 00002b8c: POP 00002b8d: SWAP3 00002b8e: SWAP2 00002b8f: POP 00002b90: POP 00002b91: JUMP 00002b92: JUMPDEST 00002b93: PUSH1 0x00 00002b95: DUP2 00002b96: PUSH1 0x02 00002b98: EXP 00002b99: DUP4 00002b9a: PUSH1 0x01 00002b9c: SWAP1 00002b9d: DIV 00002b9e: DUP2 00002b9f: ISZERO 00002ba0: ISZERO 00002ba1: PUSH2 0x2ba6 00002ba4: JUMPI 00002ba5: INVALID 00002ba6: JUMPDEST 00002ba7: DIV 00002ba8: SWAP1 00002ba9: POP 00002baa: SWAP3 00002bab: SWAP2 00002bac: POP 00002bad: POP 00002bae: JUMP 00002baf: JUMPDEST 00002bb0: PUSH1 0x60 00002bb2: PUSH1 0x40 00002bb4: MLOAD 00002bb5: SWAP1 00002bb6: DUP2 00002bb7: ADD 00002bb8: PUSH1 0x40 00002bba: MSTORE 00002bbb: DUP1 00002bbc: PUSH1 0x00 00002bbe: DUP2 00002bbf: MSTORE 00002bc0: PUSH1 0x20 00002bc2: ADD 00002bc3: PUSH1 0x00 00002bc5: DUP2 00002bc6: MSTORE 00002bc7: PUSH1 0x20 00002bc9: ADD 00002bca: PUSH1 0x00 00002bcc: DUP2 00002bcd: MSTORE 00002bce: POP 00002bcf: SWAP1 00002bd0: JUMP 00002bd1: JUMPDEST 00002bd2: PUSH1 0x80 00002bd4: PUSH1 0x40 00002bd6: MLOAD 00002bd7: SWAP1 00002bd8: DUP2 00002bd9: ADD 00002bda: PUSH1 0x40 00002bdc: MSTORE 00002bdd: DUP1 00002bde: PUSH1 0x00 00002be0: DUP2 00002be1: MSTORE 00002be2: PUSH1 0x20 00002be4: ADD 00002be5: PUSH1 0x00 00002be7: DUP2 00002be8: MSTORE 00002be9: PUSH1 0x20 00002beb: ADD 00002bec: PUSH1 0x00 00002bee: DUP2 00002bef: MSTORE 00002bf0: PUSH1 0x20 00002bf2: ADD 00002bf3: PUSH1 0x00 00002bf5: DUP2 00002bf6: MSTORE 00002bf7: POP 00002bf8: SWAP1 00002bf9: JUMP 00002bfa: JUMPDEST 00002bfb: PUSH1 0x40 00002bfd: DUP1 00002bfe: MLOAD 00002bff: SWAP1 00002c00: DUP2 00002c01: ADD 00002c02: PUSH1 0x40 00002c04: MSTORE 00002c05: DUP1 00002c06: PUSH1 0x00 00002c08: DUP2 00002c09: MSTORE 00002c0a: PUSH1 0x20 00002c0c: ADD 00002c0d: PUSH1 0x00 00002c0f: DUP2 00002c10: MSTORE 00002c11: POP 00002c12: SWAP1 00002c13: JUMP 00002c14: JUMPDEST 00002c15: PUSH1 0x00 00002c17: PUSH2 0x2c20 00002c1a: DUP3 00002c1b: CALLDATALOAD 00002c1c: PUSH2 0x33e6 00002c1f: JUMP 00002c20: JUMPDEST 00002c21: SWAP1 00002c22: POP 00002c23: SWAP3 00002c24: SWAP2 00002c25: POP 00002c26: POP 00002c27: JUMP 00002c28: JUMPDEST 00002c29: PUSH1 0x00 00002c2b: PUSH2 0x2c34 00002c2e: DUP3 00002c2f: MLOAD 00002c30: PUSH2 0x33e6 00002c33: JUMP 00002c34: JUMPDEST 00002c35: SWAP1 00002c36: POP 00002c37: SWAP3 00002c38: SWAP2 00002c39: POP 00002c3a: POP 00002c3b: JUMP 00002c3c: JUMPDEST 00002c3d: PUSH1 0x00 00002c3f: PUSH2 0x2c48 00002c42: DUP3 00002c43: MLOAD 00002c44: PUSH2 0x3406 00002c47: JUMP 00002c48: JUMPDEST 00002c49: SWAP1 00002c4a: POP 00002c4b: SWAP3 00002c4c: SWAP2 00002c4d: POP 00002c4e: POP 00002c4f: JUMP 00002c50: JUMPDEST 00002c51: PUSH1 0x00 00002c53: PUSH2 0x2c5c 00002c56: DUP3 00002c57: CALLDATALOAD 00002c58: PUSH2 0x3412 00002c5b: JUMP 00002c5c: JUMPDEST 00002c5d: SWAP1 00002c5e: POP 00002c5f: SWAP3 00002c60: SWAP2 00002c61: POP 00002c62: POP 00002c63: JUMP 00002c64: JUMPDEST 00002c65: PUSH1 0x00 00002c67: PUSH2 0x2c70 00002c6a: DUP3 00002c6b: MLOAD 00002c6c: PUSH2 0x3412 00002c6f: JUMP 00002c70: JUMPDEST 00002c71: SWAP1 00002c72: POP 00002c73: SWAP3 00002c74: SWAP2 00002c75: POP 00002c76: POP 00002c77: JUMP 00002c78: JUMPDEST 00002c79: PUSH1 0x00 00002c7b: PUSH2 0x2c84 00002c7e: DUP3 00002c7f: MLOAD 00002c80: PUSH2 0x341c 00002c83: JUMP 00002c84: JUMPDEST 00002c85: SWAP1 00002c86: POP 00002c87: SWAP3 00002c88: SWAP2 00002c89: POP 00002c8a: POP 00002c8b: JUMP 00002c8c: JUMPDEST 00002c8d: PUSH1 0x00 00002c8f: PUSH2 0x2c98 00002c92: DUP3 00002c93: MLOAD 00002c94: PUSH2 0x342e 00002c97: JUMP 00002c98: JUMPDEST 00002c99: SWAP1 00002c9a: POP 00002c9b: SWAP3 00002c9c: SWAP2 00002c9d: POP 00002c9e: POP 00002c9f: JUMP 00002ca0: JUMPDEST 00002ca1: PUSH1 0x00 00002ca3: PUSH2 0x2cac 00002ca6: DUP3 00002ca7: MLOAD 00002ca8: PUSH2 0x3440 00002cab: JUMP 00002cac: JUMPDEST 00002cad: SWAP1 00002cae: POP 00002caf: SWAP3 00002cb0: SWAP2 00002cb1: POP 00002cb2: POP 00002cb3: JUMP 00002cb4: JUMPDEST 00002cb5: PUSH1 0x00 00002cb7: PUSH1 0x40 00002cb9: DUP3 00002cba: DUP5 00002cbb: SUB 00002cbc: SLT 00002cbd: ISZERO 00002cbe: PUSH2 0x2cc6 00002cc1: JUMPI 00002cc2: PUSH1 0x00 00002cc4: DUP1 00002cc5: REVERT 00002cc6: JUMPDEST 00002cc7: PUSH2 0x2cd0 00002cca: PUSH1 0x40 00002ccc: PUSH2 0x3379 00002ccf: JUMP 00002cd0: JUMPDEST 00002cd1: SWAP1 00002cd2: POP 00002cd3: PUSH1 0x00 00002cd5: PUSH2 0x2ce0 00002cd8: DUP5 00002cd9: DUP3 00002cda: DUP6 00002cdb: ADD 00002cdc: PUSH2 0x2d00 00002cdf: JUMP 00002ce0: JUMPDEST 00002ce1: PUSH1 0x00 00002ce3: DUP4 00002ce4: ADD 00002ce5: MSTORE 00002ce6: POP 00002ce7: PUSH1 0x20 00002ce9: PUSH2 0x2cf4 00002cec: DUP5 00002ced: DUP3 00002cee: DUP6 00002cef: ADD 00002cf0: PUSH2 0x2d00 00002cf3: JUMP 00002cf4: JUMPDEST 00002cf5: PUSH1 0x20 00002cf7: DUP4 00002cf8: ADD 00002cf9: MSTORE 00002cfa: POP 00002cfb: SWAP3 00002cfc: SWAP2 00002cfd: POP 00002cfe: POP 00002cff: JUMP 00002d00: JUMPDEST 00002d01: PUSH1 0x00 00002d03: PUSH2 0x2d0c 00002d06: DUP3 00002d07: CALLDATALOAD 00002d08: PUSH2 0x3452 00002d0b: JUMP 00002d0c: JUMPDEST 00002d0d: SWAP1 00002d0e: POP 00002d0f: SWAP3 00002d10: SWAP2 00002d11: POP 00002d12: POP 00002d13: JUMP 00002d14: JUMPDEST 00002d15: PUSH1 0x00 00002d17: PUSH2 0x2d20 00002d1a: DUP3 00002d1b: MLOAD 00002d1c: PUSH2 0x3452 00002d1f: JUMP 00002d20: JUMPDEST 00002d21: SWAP1 00002d22: POP 00002d23: SWAP3 00002d24: SWAP2 00002d25: POP 00002d26: POP 00002d27: JUMP 00002d28: JUMPDEST 00002d29: PUSH1 0x00 00002d2b: PUSH1 0x20 00002d2d: DUP3 00002d2e: DUP5 00002d2f: SUB 00002d30: SLT 00002d31: ISZERO 00002d32: PUSH2 0x2d3a 00002d35: JUMPI 00002d36: PUSH1 0x00 00002d38: DUP1 00002d39: REVERT 00002d3a: JUMPDEST 00002d3b: PUSH1 0x00 00002d3d: PUSH2 0x2d48 00002d40: DUP5 00002d41: DUP3 00002d42: DUP6 00002d43: ADD 00002d44: PUSH2 0x2c14 00002d47: JUMP 00002d48: JUMPDEST 00002d49: SWAP2 00002d4a: POP 00002d4b: POP 00002d4c: SWAP3 00002d4d: SWAP2 00002d4e: POP 00002d4f: POP 00002d50: JUMP 00002d51: JUMPDEST 00002d52: PUSH1 0x00 00002d54: PUSH1 0x20 00002d56: DUP3 00002d57: DUP5 00002d58: SUB 00002d59: SLT 00002d5a: ISZERO 00002d5b: PUSH2 0x2d63 00002d5e: JUMPI 00002d5f: PUSH1 0x00 00002d61: DUP1 00002d62: REVERT 00002d63: JUMPDEST 00002d64: PUSH1 0x00 00002d66: PUSH2 0x2d71 00002d69: DUP5 00002d6a: DUP3 00002d6b: DUP6 00002d6c: ADD 00002d6d: PUSH2 0x2c28 00002d70: JUMP 00002d71: JUMPDEST 00002d72: SWAP2 00002d73: POP 00002d74: POP 00002d75: SWAP3 00002d76: SWAP2 00002d77: POP 00002d78: POP 00002d79: JUMP 00002d7a: JUMPDEST 00002d7b: PUSH1 0x00 00002d7d: PUSH1 0x20 00002d7f: DUP3 00002d80: DUP5 00002d81: SUB 00002d82: SLT 00002d83: ISZERO 00002d84: PUSH2 0x2d8c 00002d87: JUMPI 00002d88: PUSH1 0x00 00002d8a: DUP1 00002d8b: REVERT 00002d8c: JUMPDEST 00002d8d: PUSH1 0x00 00002d8f: PUSH2 0x2d9a 00002d92: DUP5 00002d93: DUP3 00002d94: DUP6 00002d95: ADD 00002d96: PUSH2 0x2c3c 00002d99: JUMP 00002d9a: JUMPDEST 00002d9b: SWAP2 00002d9c: POP 00002d9d: POP 00002d9e: SWAP3 00002d9f: SWAP2 00002da0: POP 00002da1: POP 00002da2: JUMP 00002da3: JUMPDEST 00002da4: PUSH1 0x00 00002da6: PUSH1 0x20 00002da8: DUP3 00002da9: DUP5 00002daa: SUB 00002dab: SLT 00002dac: ISZERO 00002dad: PUSH2 0x2db5 00002db0: JUMPI 00002db1: PUSH1 0x00 00002db3: DUP1 00002db4: REVERT 00002db5: JUMPDEST 00002db6: PUSH1 0x00 00002db8: PUSH2 0x2dc3 00002dbb: DUP5 00002dbc: DUP3 00002dbd: DUP6 00002dbe: ADD 00002dbf: PUSH2 0x2c50 00002dc2: JUMP 00002dc3: JUMPDEST 00002dc4: SWAP2 00002dc5: POP 00002dc6: POP 00002dc7: SWAP3 00002dc8: SWAP2 00002dc9: POP 00002dca: POP 00002dcb: JUMP 00002dcc: JUMPDEST 00002dcd: PUSH1 0x00 00002dcf: PUSH1 0x20 00002dd1: DUP3 00002dd2: DUP5 00002dd3: SUB 00002dd4: SLT 00002dd5: ISZERO 00002dd6: PUSH2 0x2dde 00002dd9: JUMPI 00002dda: PUSH1 0x00 00002ddc: DUP1 00002ddd: REVERT 00002dde: JUMPDEST 00002ddf: PUSH1 0x00 00002de1: PUSH2 0x2dec 00002de4: DUP5 00002de5: DUP3 00002de6: DUP6 00002de7: ADD 00002de8: PUSH2 0x2c64 00002deb: JUMP 00002dec: JUMPDEST 00002ded: SWAP2 00002dee: POP 00002def: POP 00002df0: SWAP3 00002df1: SWAP2 00002df2: POP 00002df3: POP 00002df4: JUMP 00002df5: JUMPDEST 00002df6: PUSH1 0x00 00002df8: DUP1 00002df9: PUSH1 0x40 00002dfb: DUP4 00002dfc: DUP6 00002dfd: SUB 00002dfe: SLT 00002dff: ISZERO 00002e00: PUSH2 0x2e08 00002e03: JUMPI 00002e04: PUSH1 0x00 00002e06: DUP1 00002e07: REVERT 00002e08: JUMPDEST 00002e09: PUSH1 0x00 00002e0b: PUSH2 0x2e16 00002e0e: DUP6 00002e0f: DUP3 00002e10: DUP7 00002e11: ADD 00002e12: PUSH2 0x2c50 00002e15: JUMP 00002e16: JUMPDEST 00002e17: SWAP3 00002e18: POP 00002e19: POP 00002e1a: PUSH1 0x20 00002e1c: PUSH2 0x2e27 00002e1f: DUP6 00002e20: DUP3 00002e21: DUP7 00002e22: ADD 00002e23: PUSH2 0x2c14 00002e26: JUMP 00002e27: JUMPDEST 00002e28: SWAP2 00002e29: POP 00002e2a: POP 00002e2b: SWAP3 00002e2c: POP 00002e2d: SWAP3 00002e2e: SWAP1 00002e2f: POP 00002e30: JUMP 00002e31: JUMPDEST 00002e32: PUSH1 0x00 00002e34: DUP1 00002e35: PUSH1 0x00 00002e37: DUP1 00002e38: PUSH1 0x00 00002e3a: PUSH1 0xa0 00002e3c: DUP7 00002e3d: DUP9 00002e3e: SUB 00002e3f: SLT 00002e40: ISZERO 00002e41: PUSH2 0x2e49 00002e44: JUMPI 00002e45: PUSH1 0x00 00002e47: DUP1 00002e48: REVERT 00002e49: JUMPDEST 00002e4a: PUSH1 0x00 00002e4c: PUSH2 0x2e57 00002e4f: DUP9 00002e50: DUP3 00002e51: DUP10 00002e52: ADD 00002e53: PUSH2 0x2c50 00002e56: JUMP 00002e57: JUMPDEST 00002e58: SWAP6 00002e59: POP 00002e5a: POP 00002e5b: PUSH1 0x20 00002e5d: PUSH2 0x2e68 00002e60: DUP9 00002e61: DUP3 00002e62: DUP10 00002e63: ADD 00002e64: PUSH2 0x2c14 00002e67: JUMP 00002e68: JUMPDEST 00002e69: SWAP5 00002e6a: POP 00002e6b: POP 00002e6c: PUSH1 0x40 00002e6e: PUSH2 0x2e79 00002e71: DUP9 00002e72: DUP3 00002e73: DUP10 00002e74: ADD 00002e75: PUSH2 0x2c14 00002e78: JUMP 00002e79: JUMPDEST 00002e7a: SWAP4 00002e7b: POP 00002e7c: POP 00002e7d: PUSH1 0x60 00002e7f: PUSH2 0x2e8a 00002e82: DUP9 00002e83: DUP3 00002e84: DUP10 00002e85: ADD 00002e86: PUSH2 0x2d00 00002e89: JUMP 00002e8a: JUMPDEST 00002e8b: SWAP3 00002e8c: POP 00002e8d: POP 00002e8e: PUSH1 0x80 00002e90: PUSH2 0x2e9b 00002e93: DUP9 00002e94: DUP3 00002e95: DUP10 00002e96: ADD 00002e97: PUSH2 0x2c14 00002e9a: JUMP 00002e9b: JUMPDEST 00002e9c: SWAP2 00002e9d: POP 00002e9e: POP 00002e9f: SWAP3 00002ea0: SWAP6 00002ea1: POP 00002ea2: SWAP3 00002ea3: SWAP6 00002ea4: SWAP1 00002ea5: SWAP4 00002ea6: POP 00002ea7: JUMP 00002ea8: JUMPDEST 00002ea9: PUSH1 0x00 00002eab: DUP1 00002eac: PUSH1 0x40 00002eae: DUP4 00002eaf: DUP6 00002eb0: SUB 00002eb1: SLT 00002eb2: ISZERO 00002eb3: PUSH2 0x2ebb 00002eb6: JUMPI 00002eb7: PUSH1 0x00 00002eb9: DUP1 00002eba: REVERT 00002ebb: JUMPDEST 00002ebc: PUSH1 0x00 00002ebe: PUSH2 0x2ec9 00002ec1: DUP6 00002ec2: DUP3 00002ec3: DUP7 00002ec4: ADD 00002ec5: PUSH2 0x2c50 00002ec8: JUMP 00002ec9: JUMPDEST 00002eca: SWAP3 00002ecb: POP 00002ecc: POP 00002ecd: PUSH1 0x20 00002ecf: PUSH2 0x2eda 00002ed2: DUP6 00002ed3: DUP3 00002ed4: DUP7 00002ed5: ADD 00002ed6: PUSH2 0x2d00 00002ed9: JUMP 00002eda: JUMPDEST 00002edb: SWAP2 00002edc: POP 00002edd: POP 00002ede: SWAP3 00002edf: POP 00002ee0: SWAP3 00002ee1: SWAP1 00002ee2: POP 00002ee3: JUMP 00002ee4: JUMPDEST 00002ee5: PUSH1 0x00 00002ee7: PUSH1 0x20 00002ee9: DUP3 00002eea: DUP5 00002eeb: SUB 00002eec: SLT 00002eed: ISZERO 00002eee: PUSH2 0x2ef6 00002ef1: JUMPI 00002ef2: PUSH1 0x00 00002ef4: DUP1 00002ef5: REVERT 00002ef6: JUMPDEST 00002ef7: PUSH1 0x00 00002ef9: PUSH2 0x2f04 00002efc: DUP5 00002efd: DUP3 00002efe: DUP6 00002eff: ADD 00002f00: PUSH2 0x2c78 00002f03: JUMP 00002f04: JUMPDEST 00002f05: SWAP2 00002f06: POP 00002f07: POP 00002f08: SWAP3 00002f09: SWAP2 00002f0a: POP 00002f0b: POP 00002f0c: JUMP 00002f0d: JUMPDEST 00002f0e: PUSH1 0x00 00002f10: PUSH1 0x20 00002f12: DUP3 00002f13: DUP5 00002f14: SUB 00002f15: SLT 00002f16: ISZERO 00002f17: PUSH2 0x2f1f 00002f1a: JUMPI 00002f1b: PUSH1 0x00 00002f1d: DUP1 00002f1e: REVERT 00002f1f: JUMPDEST 00002f20: PUSH1 0x00 00002f22: PUSH2 0x2f2d 00002f25: DUP5 00002f26: DUP3 00002f27: DUP6 00002f28: ADD 00002f29: PUSH2 0x2c8c 00002f2c: JUMP 00002f2d: JUMPDEST 00002f2e: SWAP2 00002f2f: POP 00002f30: POP 00002f31: SWAP3 00002f32: SWAP2 00002f33: POP 00002f34: POP 00002f35: JUMP 00002f36: JUMPDEST 00002f37: PUSH1 0x00 00002f39: PUSH1 0x20 00002f3b: DUP3 00002f3c: DUP5 00002f3d: SUB 00002f3e: SLT 00002f3f: ISZERO 00002f40: PUSH2 0x2f48 00002f43: JUMPI 00002f44: PUSH1 0x00 00002f46: DUP1 00002f47: REVERT 00002f48: JUMPDEST 00002f49: PUSH1 0x00 00002f4b: PUSH2 0x2f56 00002f4e: DUP5 00002f4f: DUP3 00002f50: DUP6 00002f51: ADD 00002f52: PUSH2 0x2ca0 00002f55: JUMP 00002f56: JUMPDEST 00002f57: SWAP2 00002f58: POP 00002f59: POP 00002f5a: SWAP3 00002f5b: SWAP2 00002f5c: POP 00002f5d: POP 00002f5e: JUMP 00002f5f: JUMPDEST 00002f60: PUSH1 0x00 00002f62: DUP1 00002f63: PUSH1 0x80 00002f65: DUP4 00002f66: DUP6 00002f67: SUB 00002f68: SLT 00002f69: ISZERO 00002f6a: PUSH2 0x2f72 00002f6d: JUMPI 00002f6e: PUSH1 0x00 00002f70: DUP1 00002f71: REVERT 00002f72: JUMPDEST 00002f73: PUSH1 0x00 00002f75: PUSH2 0x2f80 00002f78: DUP6 00002f79: DUP3 00002f7a: DUP7 00002f7b: ADD 00002f7c: PUSH2 0x2cb4 00002f7f: JUMP 00002f80: JUMPDEST 00002f81: SWAP3 00002f82: POP 00002f83: POP 00002f84: PUSH1 0x40 00002f86: PUSH2 0x2f91 00002f89: DUP6 00002f8a: DUP3 00002f8b: DUP7 00002f8c: ADD 00002f8d: PUSH2 0x2cb4 00002f90: JUMP 00002f91: JUMPDEST 00002f92: SWAP2 00002f93: POP 00002f94: POP 00002f95: SWAP3 00002f96: POP 00002f97: SWAP3 00002f98: SWAP1 00002f99: POP 00002f9a: JUMP 00002f9b: JUMPDEST 00002f9c: PUSH1 0x00 00002f9e: PUSH1 0x20 00002fa0: DUP3 00002fa1: DUP5 00002fa2: SUB 00002fa3: SLT 00002fa4: ISZERO 00002fa5: PUSH2 0x2fad 00002fa8: JUMPI 00002fa9: PUSH1 0x00 00002fab: DUP1 00002fac: REVERT 00002fad: JUMPDEST 00002fae: PUSH1 0x00 00002fb0: PUSH2 0x2fbb 00002fb3: DUP5 00002fb4: DUP3 00002fb5: DUP6 00002fb6: ADD 00002fb7: PUSH2 0x2d14 00002fba: JUMP 00002fbb: JUMPDEST 00002fbc: SWAP2 00002fbd: POP 00002fbe: POP 00002fbf: SWAP3 00002fc0: SWAP2 00002fc1: POP 00002fc2: POP 00002fc3: JUMP 00002fc4: JUMPDEST 00002fc5: PUSH1 0x00 00002fc7: DUP1 00002fc8: PUSH1 0x40 00002fca: DUP4 00002fcb: DUP6 00002fcc: SUB 00002fcd: SLT 00002fce: ISZERO 00002fcf: PUSH2 0x2fd7 00002fd2: JUMPI 00002fd3: PUSH1 0x00 00002fd5: DUP1 00002fd6: REVERT 00002fd7: JUMPDEST 00002fd8: PUSH1 0x00 00002fda: PUSH2 0x2fe5 00002fdd: DUP6 00002fde: DUP3 00002fdf: DUP7 00002fe0: ADD 00002fe1: PUSH2 0x2d00 00002fe4: JUMP 00002fe5: JUMPDEST 00002fe6: SWAP3 00002fe7: POP 00002fe8: POP 00002fe9: PUSH1 0x20 00002feb: PUSH2 0x2ff6 00002fee: DUP6 00002fef: DUP3 00002ff0: DUP7 00002ff1: ADD 00002ff2: PUSH2 0x2d00 00002ff5: JUMP 00002ff6: JUMPDEST 00002ff7: SWAP2 00002ff8: POP 00002ff9: POP 00002ffa: SWAP3 00002ffb: POP 00002ffc: SWAP3 00002ffd: SWAP1 00002ffe: POP 00002fff: JUMP 00003000: JUMPDEST 00003001: PUSH2 0x3009 00003004: DUP2 00003005: PUSH2 0x33a6 00003008: JUMP 00003009: JUMPDEST 0000300a: DUP3 0000300b: MSTORE 0000300c: POP 0000300d: POP 0000300e: JUMP 0000300f: JUMPDEST 00003010: PUSH2 0x3018 00003013: DUP2 00003014: PUSH2 0x33c6 00003017: JUMP 00003018: JUMPDEST 00003019: DUP3 0000301a: MSTORE 0000301b: POP 0000301c: POP 0000301d: JUMP 0000301e: JUMPDEST 0000301f: PUSH2 0x3027 00003022: DUP2 00003023: PUSH2 0x33d2 00003026: JUMP 00003027: JUMPDEST 00003028: DUP3 00003029: MSTORE 0000302a: POP 0000302b: POP 0000302c: JUMP 0000302d: JUMPDEST 0000302e: PUSH2 0x3036 00003031: DUP2 00003032: PUSH2 0x345c 00003035: JUMP 00003036: JUMPDEST 00003037: DUP3 00003038: MSTORE 00003039: POP 0000303a: POP 0000303b: JUMP 0000303c: JUMPDEST 0000303d: PUSH2 0x3045 00003040: DUP2 00003041: PUSH2 0x346e 00003044: JUMP 00003045: JUMPDEST 00003046: DUP3 00003047: MSTORE 00003048: POP 00003049: POP 0000304a: JUMP 0000304b: JUMPDEST 0000304c: PUSH2 0x3054 0000304f: DUP2 00003050: PUSH2 0x3480 00003053: JUMP 00003054: JUMPDEST 00003055: DUP3 00003056: MSTORE 00003057: POP 00003058: POP 00003059: JUMP 0000305a: JUMPDEST 0000305b: PUSH1 0x00 0000305d: PUSH1 0x51 0000305f: DUP3 00003060: MSTORE 00003061: PUSH32 0x6d6f6469666965723a2053656e646572206e6f742052657061796d656e74526f 00003082: PUSH1 0x20 00003084: DUP4 00003085: ADD 00003086: MSTORE 00003087: PUSH32 0x75746572202d206f6e6c792052657061796d656e74526f757465722063616e20 000030a8: PUSH1 0x40 000030aa: DUP4 000030ab: ADD 000030ac: MSTORE 000030ad: PUSH32 0x63616c6c2074686973206d6574686f642e000000000000000000000000000000 000030ce: PUSH1 0x60 000030d0: DUP4 000030d1: ADD 000030d2: MSTORE 000030d3: PUSH1 0x80 000030d5: DUP3 000030d6: ADD 000030d7: SWAP1 000030d8: POP 000030d9: SWAP2 000030da: SWAP1 000030db: POP 000030dc: JUMP 000030dd: JUMPDEST 000030de: PUSH1 0x00 000030e0: PUSH1 0x36 000030e2: DUP3 000030e3: MSTORE 000030e4: PUSH32 0x4f6e6c7920446562744b65726e656c2063616e2063616c6c2074686520726567 00003105: PUSH1 0x20 00003107: DUP4 00003108: ADD 00003109: MSTORE 0000310a: PUSH32 0x69737465725465726d5374617274206d6574686f642e00000000000000000000 0000312b: PUSH1 0x40 0000312d: DUP4 0000312e: ADD 0000312f: MSTORE 00003130: PUSH1 0x60 00003132: DUP3 00003133: ADD 00003134: SWAP1 00003135: POP 00003136: SWAP2 00003137: SWAP1 00003138: POP 00003139: JUMP 0000313a: JUMPDEST 0000313b: PUSH1 0x40 0000313d: DUP3 0000313e: ADD 0000313f: PUSH1 0x00 00003141: DUP3 00003142: ADD 00003143: MLOAD 00003144: PUSH2 0x3150 00003147: PUSH1 0x00 00003149: DUP6 0000314a: ADD 0000314b: DUP3 0000314c: PUSH2 0x3169 0000314f: JUMP 00003150: JUMPDEST 00003151: POP 00003152: PUSH1 0x20 00003154: DUP3 00003155: ADD 00003156: MLOAD 00003157: PUSH2 0x3163 0000315a: PUSH1 0x20 0000315c: DUP6 0000315d: ADD 0000315e: DUP3 0000315f: PUSH2 0x3169 00003162: JUMP 00003163: JUMPDEST 00003164: POP 00003165: POP 00003166: POP 00003167: POP 00003168: JUMP 00003169: JUMPDEST 0000316a: PUSH2 0x3172 0000316d: DUP2 0000316e: PUSH2 0x33dc 00003171: JUMP 00003172: JUMPDEST 00003173: DUP3 00003174: MSTORE 00003175: POP 00003176: POP 00003177: JUMP 00003178: JUMPDEST 00003179: PUSH1 0x00 0000317b: PUSH1 0x20 0000317d: DUP3 0000317e: ADD 0000317f: SWAP1 00003180: POP 00003181: PUSH2 0x318d 00003184: PUSH1 0x00 00003186: DUP4 00003187: ADD 00003188: DUP5 00003189: PUSH2 0x3000 0000318c: JUMP 0000318d: JUMPDEST 0000318e: SWAP3 0000318f: SWAP2 00003190: POP 00003191: POP 00003192: JUMP 00003193: JUMPDEST 00003194: PUSH1 0x00 00003196: PUSH1 0x40 00003198: DUP3 00003199: ADD 0000319a: SWAP1 0000319b: POP 0000319c: PUSH2 0x31a8 0000319f: PUSH1 0x00 000031a1: DUP4 000031a2: ADD 000031a3: DUP6 000031a4: PUSH2 0x3000 000031a7: JUMP 000031a8: JUMPDEST 000031a9: PUSH2 0x31b5 000031ac: PUSH1 0x20 000031ae: DUP4 000031af: ADD 000031b0: DUP5 000031b1: PUSH2 0x3000 000031b4: JUMP 000031b5: JUMPDEST 000031b6: SWAP4 000031b7: SWAP3 000031b8: POP 000031b9: POP 000031ba: POP 000031bb: JUMP 000031bc: JUMPDEST 000031bd: PUSH1 0x00 000031bf: PUSH1 0x60 000031c1: DUP3 000031c2: ADD 000031c3: SWAP1 000031c4: POP 000031c5: PUSH2 0x31d1 000031c8: PUSH1 0x00 000031ca: DUP4 000031cb: ADD 000031cc: DUP7 000031cd: PUSH2 0x3000 000031d0: JUMP 000031d1: JUMPDEST 000031d2: PUSH2 0x31de 000031d5: PUSH1 0x20 000031d7: DUP4 000031d8: ADD 000031d9: DUP6 000031da: PUSH2 0x3000 000031dd: JUMP 000031de: JUMPDEST 000031df: PUSH2 0x31eb 000031e2: PUSH1 0x40 000031e4: DUP4 000031e5: ADD 000031e6: DUP5 000031e7: PUSH2 0x3169 000031ea: JUMP 000031eb: JUMPDEST 000031ec: SWAP5 000031ed: SWAP4 000031ee: POP 000031ef: POP 000031f0: POP 000031f1: POP 000031f2: JUMP 000031f3: JUMPDEST 000031f4: PUSH1 0x00 000031f6: PUSH1 0x40 000031f8: DUP3 000031f9: ADD 000031fa: SWAP1 000031fb: POP 000031fc: PUSH2 0x3208 000031ff: PUSH1 0x00 00003201: DUP4 00003202: ADD 00003203: DUP6 00003204: PUSH2 0x3000 00003207: JUMP 00003208: JUMPDEST 00003209: PUSH2 0x3215 0000320c: PUSH1 0x20 0000320e: DUP4 0000320f: ADD 00003210: DUP5 00003211: PUSH2 0x3169 00003214: JUMP 00003215: JUMPDEST 00003216: SWAP4 00003217: SWAP3 00003218: POP 00003219: POP 0000321a: POP 0000321b: JUMP 0000321c: JUMPDEST 0000321d: PUSH1 0x00 0000321f: PUSH1 0x20 00003221: DUP3 00003222: ADD 00003223: SWAP1 00003224: POP 00003225: PUSH2 0x3231 00003228: PUSH1 0x00 0000322a: DUP4 0000322b: ADD 0000322c: DUP5 0000322d: PUSH2 0x300f 00003230: JUMP 00003231: JUMPDEST 00003232: SWAP3 00003233: SWAP2 00003234: POP 00003235: POP 00003236: JUMP 00003237: JUMPDEST 00003238: PUSH1 0x00 0000323a: PUSH1 0x20 0000323c: DUP3 0000323d: ADD 0000323e: SWAP1 0000323f: POP 00003240: PUSH2 0x324c 00003243: PUSH1 0x00 00003245: DUP4 00003246: ADD 00003247: DUP5 00003248: PUSH2 0x301e 0000324b: JUMP 0000324c: JUMPDEST 0000324d: SWAP3 0000324e: SWAP2 0000324f: POP 00003250: POP 00003251: JUMP 00003252: JUMPDEST 00003253: PUSH1 0x00 00003255: PUSH1 0x20 00003257: DUP3 00003258: ADD 00003259: SWAP1 0000325a: POP 0000325b: PUSH2 0x3267 0000325e: PUSH1 0x00 00003260: DUP4 00003261: ADD 00003262: DUP5 00003263: PUSH2 0x302d 00003266: JUMP 00003267: JUMPDEST 00003268: SWAP3 00003269: SWAP2 0000326a: POP 0000326b: POP 0000326c: JUMP 0000326d: JUMPDEST 0000326e: PUSH1 0x00 00003270: PUSH1 0x20 00003272: DUP3 00003273: ADD 00003274: SWAP1 00003275: POP 00003276: PUSH2 0x3282 00003279: PUSH1 0x00 0000327b: DUP4 0000327c: ADD 0000327d: DUP5 0000327e: PUSH2 0x303c 00003281: JUMP 00003282: JUMPDEST 00003283: SWAP3 00003284: SWAP2 00003285: POP 00003286: POP 00003287: JUMP 00003288: JUMPDEST 00003289: PUSH1 0x00 0000328b: PUSH1 0x20 0000328d: DUP3 0000328e: ADD 0000328f: SWAP1 00003290: POP 00003291: PUSH2 0x329d 00003294: PUSH1 0x00 00003296: DUP4 00003297: ADD 00003298: DUP5 00003299: PUSH2 0x304b 0000329c: JUMP 0000329d: JUMPDEST 0000329e: SWAP3 0000329f: SWAP2 000032a0: POP 000032a1: POP 000032a2: JUMP 000032a3: JUMPDEST 000032a4: PUSH1 0x00 000032a6: PUSH1 0x20 000032a8: DUP3 000032a9: ADD 000032aa: SWAP1 000032ab: POP 000032ac: DUP2 000032ad: DUP2 000032ae: SUB 000032af: PUSH1 0x00 000032b1: DUP4 000032b2: ADD 000032b3: MSTORE 000032b4: PUSH2 0x32bc 000032b7: DUP2 000032b8: PUSH2 0x305a 000032bb: JUMP 000032bc: JUMPDEST 000032bd: SWAP1 000032be: POP 000032bf: SWAP2 000032c0: SWAP1 000032c1: POP 000032c2: JUMP 000032c3: JUMPDEST 000032c4: PUSH1 0x00 000032c6: PUSH1 0x20 000032c8: DUP3 000032c9: ADD 000032ca: SWAP1 000032cb: POP 000032cc: DUP2 000032cd: DUP2 000032ce: SUB 000032cf: PUSH1 0x00 000032d1: DUP4 000032d2: ADD 000032d3: MSTORE 000032d4: PUSH2 0x32dc 000032d7: DUP2 000032d8: PUSH2 0x30dd 000032db: JUMP 000032dc: JUMPDEST 000032dd: SWAP1 000032de: POP 000032df: SWAP2 000032e0: SWAP1 000032e1: POP 000032e2: JUMP 000032e3: JUMPDEST 000032e4: PUSH1 0x00 000032e6: PUSH1 0x40 000032e8: DUP3 000032e9: ADD 000032ea: SWAP1 000032eb: POP 000032ec: PUSH2 0x32f8 000032ef: PUSH1 0x00 000032f1: DUP4 000032f2: ADD 000032f3: DUP5 000032f4: PUSH2 0x313a 000032f7: JUMP 000032f8: JUMPDEST 000032f9: SWAP3 000032fa: SWAP2 000032fb: POP 000032fc: POP 000032fd: JUMP 000032fe: JUMPDEST 000032ff: PUSH1 0x00 00003301: PUSH1 0x20 00003303: DUP3 00003304: ADD 00003305: SWAP1 00003306: POP 00003307: PUSH2 0x3313 0000330a: PUSH1 0x00 0000330c: DUP4 0000330d: ADD 0000330e: DUP5 0000330f: PUSH2 0x3169 00003312: JUMP 00003313: JUMPDEST 00003314: SWAP3 00003315: SWAP2 00003316: POP 00003317: POP 00003318: JUMP 00003319: JUMPDEST 0000331a: PUSH1 0x00 0000331c: PUSH1 0x40 0000331e: DUP3 0000331f: ADD 00003320: SWAP1 00003321: POP 00003322: PUSH2 0x332e 00003325: PUSH1 0x00 00003327: DUP4 00003328: ADD 00003329: DUP6 0000332a: PUSH2 0x3169 0000332d: JUMP 0000332e: JUMPDEST 0000332f: PUSH2 0x333b 00003332: PUSH1 0x20 00003334: DUP4 00003335: ADD 00003336: DUP5 00003337: PUSH2 0x3000 0000333a: JUMP 0000333b: JUMPDEST 0000333c: SWAP4 0000333d: SWAP3 0000333e: POP 0000333f: POP 00003340: POP 00003341: JUMP 00003342: JUMPDEST 00003343: PUSH1 0x00 00003345: PUSH1 0x60 00003347: DUP3 00003348: ADD 00003349: SWAP1 0000334a: POP 0000334b: PUSH2 0x3357 0000334e: PUSH1 0x00 00003350: DUP4 00003351: ADD 00003352: DUP7 00003353: PUSH2 0x3169 00003356: JUMP 00003357: JUMPDEST 00003358: PUSH2 0x3364 0000335b: PUSH1 0x20 0000335d: DUP4 0000335e: ADD 0000335f: DUP6 00003360: PUSH2 0x3169 00003363: JUMP 00003364: JUMPDEST 00003365: PUSH2 0x3371 00003368: PUSH1 0x40 0000336a: DUP4 0000336b: ADD 0000336c: DUP5 0000336d: PUSH2 0x3169 00003370: JUMP 00003371: JUMPDEST 00003372: SWAP5 00003373: SWAP4 00003374: POP 00003375: POP 00003376: POP 00003377: POP 00003378: JUMP 00003379: JUMPDEST 0000337a: PUSH1 0x00 0000337c: PUSH1 0x40 0000337e: MLOAD 0000337f: SWAP1 00003380: POP 00003381: DUP2 00003382: DUP2 00003383: ADD 00003384: DUP2 00003385: DUP2 00003386: LT 00003387: PUSH8 0xffffffffffffffff 00003390: DUP3 00003391: GT 00003392: OR 00003393: ISZERO 00003394: PUSH2 0x339c 00003397: JUMPI 00003398: PUSH1 0x00 0000339a: DUP1 0000339b: REVERT 0000339c: JUMPDEST 0000339d: DUP1 0000339e: PUSH1 0x40 000033a0: MSTORE 000033a1: POP 000033a2: SWAP2 000033a3: SWAP1 000033a4: POP 000033a5: JUMP 000033a6: JUMPDEST 000033a7: PUSH1 0x00 000033a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000033be: DUP3 000033bf: AND 000033c0: SWAP1 000033c1: POP 000033c2: SWAP2 000033c3: SWAP1 000033c4: POP 000033c5: JUMP 000033c6: JUMPDEST 000033c7: PUSH1 0x00 000033c9: DUP2 000033ca: ISZERO 000033cb: ISZERO 000033cc: SWAP1 000033cd: POP 000033ce: SWAP2 000033cf: SWAP1 000033d0: POP 000033d1: JUMP 000033d2: JUMPDEST 000033d3: PUSH1 0x00 000033d5: DUP2 000033d6: SWAP1 000033d7: POP 000033d8: SWAP2 000033d9: SWAP1 000033da: POP 000033db: JUMP 000033dc: JUMPDEST 000033dd: PUSH1 0x00 000033df: DUP2 000033e0: SWAP1 000033e1: POP 000033e2: SWAP2 000033e3: SWAP1 000033e4: POP 000033e5: JUMP 000033e6: JUMPDEST 000033e7: PUSH1 0x00 000033e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000033fe: DUP3 000033ff: AND 00003400: SWAP1 00003401: POP 00003402: SWAP2 00003403: SWAP1 00003404: POP 00003405: JUMP 00003406: JUMPDEST 00003407: PUSH1 0x00 00003409: DUP2 0000340a: ISZERO 0000340b: ISZERO 0000340c: SWAP1 0000340d: POP 0000340e: SWAP2 0000340f: SWAP1 00003410: POP 00003411: JUMP 00003412: JUMPDEST 00003413: PUSH1 0x00 00003415: DUP2 00003416: SWAP1 00003417: POP 00003418: SWAP2 00003419: SWAP1 0000341a: POP 0000341b: JUMP 0000341c: JUMPDEST 0000341d: PUSH1 0x00 0000341f: PUSH2 0x3427 00003422: DUP3 00003423: PUSH2 0x33a6 00003426: JUMP 00003427: JUMPDEST 00003428: SWAP1 00003429: POP 0000342a: SWAP2 0000342b: SWAP1 0000342c: POP 0000342d: JUMP 0000342e: JUMPDEST 0000342f: PUSH1 0x00 00003431: PUSH2 0x3439 00003434: DUP3 00003435: PUSH2 0x33a6 00003438: JUMP 00003439: JUMPDEST 0000343a: SWAP1 0000343b: POP 0000343c: SWAP2 0000343d: SWAP1 0000343e: POP 0000343f: JUMP 00003440: JUMPDEST 00003441: PUSH1 0x00 00003443: PUSH2 0x344b 00003446: DUP3 00003447: PUSH2 0x33a6 0000344a: JUMP 0000344b: JUMPDEST 0000344c: SWAP1 0000344d: POP 0000344e: SWAP2 0000344f: SWAP1 00003450: POP 00003451: JUMP 00003452: JUMPDEST 00003453: PUSH1 0x00 00003455: DUP2 00003456: SWAP1 00003457: POP 00003458: SWAP2 00003459: SWAP1 0000345a: POP 0000345b: JUMP 0000345c: JUMPDEST 0000345d: PUSH1 0x00 0000345f: PUSH2 0x3467 00003462: DUP3 00003463: PUSH2 0x33a6 00003466: JUMP 00003467: JUMPDEST 00003468: SWAP1 00003469: POP 0000346a: SWAP2 0000346b: SWAP1 0000346c: POP 0000346d: JUMP 0000346e: JUMPDEST 0000346f: PUSH1 0x00 00003471: PUSH2 0x3479 00003474: DUP3 00003475: PUSH2 0x33a6 00003478: JUMP 00003479: JUMPDEST 0000347a: SWAP1 0000347b: POP 0000347c: SWAP2 0000347d: SWAP1 0000347e: POP 0000347f: JUMP 00003480: JUMPDEST 00003481: PUSH1 0x00 00003483: PUSH2 0x348b 00003486: DUP3 00003487: PUSH2 0x33a6 0000348a: JUMP 0000348b: JUMPDEST 0000348c: SWAP1 0000348d: POP 0000348e: SWAP2 0000348f: SWAP1 00003490: POP 00003491: JUMP 00003492: STOP 00003493: LOG2 00003494: PUSH6 0x627a7a723058 0000349b: KECCAK256 0000349c: UNKNOWN(0xBC) 0000349d: UNKNOWN(0x21) 0000349e: CHAINID 0000349f: PUSH21 0xdd0f3d575d17ab31554a4b711441f7101c3233e9b9 000034b5: BASEFEE 000034b6: MUL 000034b7: CALLCODE 000034b8: DUP11 000034b9: SWAP11 000034ba: NUMBER 000034bb: UNKNOWN(0xD9) 000034bc: PUSH13 0x6578706572696d656e74616cf5 000034ca: STOP 000034cb: CALLDATACOPY
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x94598ba2e331c8a2c23fc9fea7cf9317f180d74cd7f7b271cff559db4d0a23f0
call_targets:
0x391a12ab01e6a4f8c3d2e7eca8af931bec704f15
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x94598ba2e331c8a2c23fc9fea7cf9317f180d74cd7f7b271cff559db4d0a23f0",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x391a12ab01e6a4f8c3d2e7eca8af931bec704f15"
],
"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": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x03a896a1",
"selector": "0x03a896a1",
"calldata_variants": [
"0x03a896a1",
"0x03a896a10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x04fdc562",
"selector": "0x04fdc562",
"calldata_variants": [
"0x04fdc562",
"0x04fdc5620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0525ed66",
"selector": "0x0525ed66",
"calldata_variants": [
"0x0525ed66",
"0x0525ed660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0992b119",
"selector": "0x0992b119",
"calldata_variants": [
"0x0992b119",
"0x0992b1190000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x09cc1440",
"selector": "0x09cc1440",
"calldata_variants": [
"0x09cc1440",
"0x09cc14400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1920427b",
"selector": "0x1920427b",
"calldata_variants": [
"0x1920427b",
"0x1920427b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2762dd8c",
"selector": "0x2762dd8c",
"calldata_variants": [
"0x2762dd8c",
"0x2762dd8c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2839,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3005,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3413,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 20,
"guards_detected": [
{
"pc": 3489,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3912,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4438,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6417,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 20
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x94598ba2e331c8a2c23fc9fea7cf9317f180d74cd7f7b271cff559db4d0a23f0
call_targets:
0x391a12ab01e6a4f8c3d2e7eca8af931bec704f15
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x94598ba2e331c8a2c23fc9fea7cf9317f180d74cd7f7b271cff559db4d0a23f0",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x391a12ab01e6a4f8c3d2e7eca8af931bec704f15"
],
"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": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x03a896a1",
"selector": "0x03a896a1",
"calldata_variants": [
"0x03a896a1",
"0x03a896a10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x04fdc562",
"selector": "0x04fdc562",
"calldata_variants": [
"0x04fdc562",
"0x04fdc5620000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0525ed66",
"selector": "0x0525ed66",
"calldata_variants": [
"0x0525ed66",
"0x0525ed660000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0992b119",
"selector": "0x0992b119",
"calldata_variants": [
"0x0992b119",
"0x0992b1190000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x09cc1440",
"selector": "0x09cc1440",
"calldata_variants": [
"0x09cc1440",
"0x09cc14400000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1920427b",
"selector": "0x1920427b",
"calldata_variants": [
"0x1920427b",
"0x1920427b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2762dd8c",
"selector": "0x2762dd8c",
"calldata_variants": [
"0x2762dd8c",
"0x2762dd8c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2839,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3005,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3413,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 20,
"guards_detected": [
{
"pc": 3489,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3912,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4438,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6417,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 19
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 20
}
|