111fc845-b194-436e-a7e9-7581cc8811d0
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 |
|---|---|---|---|---|
| 31632 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 111590 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 111591 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 111592 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 111593 | capability.graph | complete | 1 / 3 | 1 week ago |
| 111594 | detector.run | complete | 1 / 3 | 1 week ago |
| 111595 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:494146] OpenAI Codex v0.77.0 (research preview)
[codex:494146] --------
[codex:494146] workdir: /tmp/codex-multi-jqzcj7qn
[codex:494146] model: gpt-5.2-codex
[codex:494146] provider: openai
[codex:494146] approval: never
[codex:494146] sandbox: read-only
[codex:494146] reasoning effort: xhigh
[codex:494146] reasoning summaries: auto
[codex:494146] session id: 019b8b9a-6d07-7d91-b289-7cffd068032e
[codex:494146] --------
[codex:494146] user
[codex:494146] 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:494146]
[codex:494146] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:494146]
[codex:494146] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:494146] - Gas inefficiency, code quality, or best practices
[codex:494146] - Theoretical vulnerabilities without a clear extraction path
[codex:494146] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:494146] - Issues requiring social engineering or off-chain coordination
[codex:494146]
[codex:494146] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:494146] - CALL/DELEGATECALL with controllable destination or calldata
[codex:494146] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:494146] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:494146] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:494146] - External calls before state updates (reentrancy)
[codex:494146] - SELFDESTRUCT with controllable beneficiary
[codex:494146] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:494146]
[codex:494146] For each finding, you MUST explain:
[codex:494146] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:494146] 2. The concrete sequence of transactions to extract value
[codex:494146] 3. Why you believe this is exploitable (not just suspicious)
[codex:494146]
[codex:494146] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:494146] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:494146]
[codex:494146] Output MUST be valid JSON matching the provided schema.
[codex:494146] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:494146] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:494146] mcp startup: no servers
[codex:494146]
[codex:494146] thinking
[codex:494146] **Reading BYTECODE_BUNDLE.txt**
[codex:494146] exec
[codex:494146] /bin/bash -lc ls in /tmp/codex-multi-jqzcj7qn succeeded in 6ms:
[codex:494146] BYTECODE_BUNDLE.txt
[codex:494146] codex-output-schema.json
[codex:494146] exec
[codex:494146] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-jqzcj7qn succeeded in 6ms:
[codex:494146] Runtime bytecode bundle for best-effort auditing.
[codex:494146] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:494146]
[codex:494146] FILE: runtime_bytecode.hex
[codex:494146] 0x6080604052600436106101855760003560e01c806372963c6c116100d1578063c4d66de81161008a578063df23efd911610064578063df23efd91461092e578063e2fdcc171461096f578063f83ecf99146109b0578063fe3fbca314610a015761018c565b8063c4d66de814610802578063d2e8756114610853578063dd62ed3e146108a95761018c565b806372963c6c146105f9578063735de9f71461062457806395d89b4114610665578063a457c2d7146106f5578063a9059cbb14610766578063b2dda6b5146107d75761018c565b80632ff2e9dc1161013e57806342966c681161011857806342966c681461048757806347a1671a146104c257806356fa05df1461055357806370a08231146105945761018c565b80632ff2e9dc146103bd578063313ce567146103e857806339509351146104165761018c565b806306fdde0314610191578063095ea7b31461022157806318160ddd1461029257806323b872dd146102bd5780632e0f26251461034e5780632e4bb77c1461037c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610a66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e65780820151818401526020810190506101cb565b50505050905090810190601f1680156102135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022d57600080fd5b5061027a6004803603604081101561024457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b08565b60405180821515815260200191505060405180910390f35b34801561029e57600080fd5b506102a7610b26565b6040518082815260200191505060405180910390f35b3480156102c957600080fd5b50610336600480360360608110156102e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b30565b60405180821515815260200191505060405180910390f35b34801561035a57600080fd5b50610363610c09565b604051808260ff16815260200191505060405180910390f35b34801561038857600080fd5b50610391610c0e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103c957600080fd5b506103d2610c34565b6040518082815260200191505060405180910390f35b3480156103f457600080fd5b506103fd610c44565b604051808260ff16815260200191505060405180910390f35b34801561042257600080fd5b5061046f6004803603604081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c5b565b60405180821515815260200191505060405180910390f35b34801561049357600080fd5b506104c0600480360360208110156104aa57600080fd5b8101908080359060200190929190505050610d0e565b005b3480156104ce57600080fd5b50610551600480360360608110156104e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611320565b005b34801561055f57600080fd5b50610568611850565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105a057600080fd5b506105e3600480360360208110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611876565b6040518082815260200191505060405180910390f35b34801561060557600080fd5b5061060e6118bf565b6040518082815260200191505060405180910390f35b34801561063057600080fd5b506106396118c5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067157600080fd5b5061067a6118eb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106ba57808201518184015260208101905061069f565b50505050905090810190601f1680156106e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561070157600080fd5b5061074e6004803603604081101561071857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061198d565b60405180821515815260200191505060405180910390f35b34801561077257600080fd5b506107bf6004803603604081101561078957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a5a565b60405180821515815260200191505060405180910390f35b3480156107e357600080fd5b506107ec611a78565b6040518082815260200191505060405180910390f35b34801561080e57600080fd5b506108516004803603602081101561082557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a7e565b005b34801561085f57600080fd5b5061088c6004803603602081101561087657600080fd5b8101908080359060200190929190505050611c7c565b604051808381526020018281526020019250505060405180910390f35b3480156108b557600080fd5b50610918600480360360408110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6e565b6040518082815260200191505060405180910390f35b34801561093a57600080fd5b50610943611ff5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097b57600080fd5b5061098461201b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109bc57600080fd5b506109ff600480360360208110156109d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612041565b005b348015610a0d57600080fd5b50610a3a60048036036020811015610a2457600080fd5b81019080803590602001909291905050506121d0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060688054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610afe5780601f10610ad357610100808354040283529160200191610afe565b820191906000526020600020905b815481529060010190602001808311610ae157829003601f168201915b5050505050905090565b6000610b1c610b1561220c565b8484612214565b6001905092915050565b6000606754905090565b6000610b3d84848461240b565b610bfe84610b4961220c565b610bf985604051806060016040528060288152602001613f7160289139606660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610baf61220c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b612214565b600190509392505050565b600881565b609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860ff16600a0a629896800281565b6000606a60009054906101000a900460ff16905090565b6000610d04610c6861220c565b84610cff8560666000610c7961220c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279090919063ffffffff16565b612214565b6001905092915050565b609760019054906101000a900460ff16610d90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f574158473a207265656e7472616e742063616c6c00000000000000000000000081525060200191505060405180910390fd5b6000609760016101000a81548160ff021916908315150217905550610dbb610db661220c565b611876565b811115610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f574158473a20696e73756666696369656e742062616c616e636500000000000081525060200191505060405180910390fd5b6000610e76610e60609760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611876565b610e68610b26565b61281890919063ffffffff16565b905081811015610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526042815260200180613ee86042913960600191505060405180910390fd5b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f5c57600080fd5b505afa158015610f70573d6000803e3d6000fd5b505050506040513d6020811015610f8657600080fd5b810190808051906020019092919050505090506000610fc083610fb2848761286290919063ffffffff16565b6128e890919063ffffffff16565b905060003073ffffffffffffffffffffffffffffffffffffffff16319050600061100585610ff7848961286290919063ffffffff16565b6128e890919063ffffffff16565b90506000609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561109257600080fd5b505afa1580156110a6573d6000803e3d6000fd5b505050506040513d60208110156110bc57600080fd5b8101908080519060200190929190505050905060006110f6876110e8848b61286290919063ffffffff16565b6128e890919063ffffffff16565b905061110961110361220c565b89612932565b60008311156111615761111a61220c565b73ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561115f573d6000803e3d6000fd5b505b60008511156111805761117b61117561220c565b86612af8565b830192505b600081111561127b57609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6111cf61220c565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561122357600080fd5b505af1158015611237573d6000803e3d6000fd5b505050506040513d602081101561124d57600080fd5b81019080805190602001909291905050505061127481609e5461279090919063ffffffff16565b609e819055505b61129083609c5461279090919063ffffffff16565b609c8190555061129e61220c565b73ffffffffffffffffffffffffffffffffffffffff167f4c60206a5c1de41f3376d1d60f0949d96cb682033c90b1c2d9d9a62d4c4120c089858460405180848152602001838152602001828152602001935050505060405180910390a2505050505050506001609760016101000a81548160ff02191690831515021790555050565b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611468576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561150c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b609760009054906101000a900460ff161561158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f574158473a20616c72656164792075706772616465640000000000000000000081525060200191505060405180910390fd5b6001609760006101000a81548160ff0219169083151502179055506001609760016101000a81548160ff02191690831515021790555085609760026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083609a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000609c819055506060600267ffffffffffffffff811180156116aa57600080fd5b506040519080825280602002602001820160405280156116d95781602001602082028036833780820191505090505b509050609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061170c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ae57600080fd5b505afa1580156117c2573d6000803e3d6000fd5b505050506040513d60208110156117d857600080fd5b8101908080519060200190929190505050816001815181106117f657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080609b9080519060200190611846929190613d1e565b5050505050505050565b609960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b609e5481565b609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060698054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119835780601f1061195857610100808354040283529160200191611983565b820191906000526020600020905b81548152906001019060200180831161196657829003601f168201915b5050505050905090565b6000611a5061199a61220c565b84611a4b856040518060600160405280602581526020016140b860259139606660006119c461220c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b612214565b6001905092915050565b6000611a6e611a6761220c565b848461240b565b6001905092915050565b609c5481565b600060019054906101000a900460ff1680611a9d5750611a9c612d94565b5b80611ab3575060008054906101000a900460ff16155b611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015611b58576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611bcc6040518060400160405280601481526020017f57415820476f7665726e616e636520546f6b656e0000000000000000000000008152506040518060400160405280600481526020017f5741584700000000000000000000000000000000000000000000000000000000815250612dab565b611bd66008612ebd565b611bec82600860ff16600a0a6298968002612edb565b600860ff16600a0a6298968002611c01610b26565b14611c57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806140316027913960400191505060405180910390fd5b8015611c785760008060016101000a81548160ff0219169083151502179055505b5050565b6000806000611cc5611caf609760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611876565b611cb7610b26565b61281890919063ffffffff16565b905083811015611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526042815260200180613ee86042913960600191505060405180910390fd5b6000609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dab57600080fd5b505afa158015611dbf573d6000803e3d6000fd5b505050506040513d6020811015611dd557600080fd5b810190808051906020019092919050505090506000611e0f83611e01848961286290919063ffffffff16565b6128e890919063ffffffff16565b905060003073ffffffffffffffffffffffffffffffffffffffff16319050611e5284611e44838a61286290919063ffffffff16565b6128e890919063ffffffff16565b95506000821115611e6b57611e66826130a4565b860195505b6000609d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ef657600080fd5b505afa158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611f2057600080fd5b810190808051906020019092919050505090506000811115611f6457611f6185611f53838b61286290919063ffffffff16565b6128e890919063ffffffff16565b95505b5050505050915091565b6000606660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b609760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4552523a3a494e56414c49445f4144445245535300000000000000000000000081525060200191505060405180910390fd5b609d60009054906101000a900460ff1615612168576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f574158473a20616c72656164792075706772616465643200000000000000000081525060200191505060405180910390fd5b6001609d60006101000a81548160ff02191690831515021790555081609d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000609e819055505050565b609b81815481106121dd57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061400d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613ec66022913960400191505060405180910390fd5b80606660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613fe86025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612517576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613e816023913960400191505060405180910390fd5b6125228383836135b0565b61258e81604051806060016040528060268152602001613f2a60269139606560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262381606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279090919063ffffffff16565b606560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061277d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612742578082015181840152602081019050612727565b50505050905090810190601f16801561276f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561280e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061285a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126d0565b905092915050565b60008083141561287557600090506128e2565b600082840290508284828161288657fe5b04146128dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f506021913960400191505060405180910390fd5b809150505b92915050565b600061292a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135b5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613fc76021913960400191505060405180910390fd5b6129c4826000836135b0565b612a3081604051806060016040528060228152602001613ea460229139606560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d09092919063ffffffff16565b606560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a888160675461281890919063ffffffff16565b606781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612b69609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661367b9092919063ffffffff16565b6060609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5846000609b88426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252858181548152602001915080548015612c6857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612c1e575b50509650505050505050600060405180830381600087803b158015612c8c57600080fd5b505af1158015612ca0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612cca57600080fd5b8101908080516040519392919084640100000000821115612cea57600080fd5b83820191506020820185811115612d0057600080fd5b8251866020820283011164010000000082111715612d1d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612d54578082015181840152602081019050612d39565b50505050905001604052505050905080612d796001835161281890919063ffffffff16565b81518110612d8357fe5b602002602001015191505092915050565b6000803090506000813b9050600081149250505090565b600060019054906101000a900460ff1680612dca5750612dc9612d94565b5b80612de0575060008054906101000a900460ff16155b612e35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015612e85576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b612e8d613840565b612e97838361393e565b8015612eb85760008060016101000a81548160ff0219169083151502179055505b505050565b80606a60006101000a81548160ff021916908360ff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b612f8a600083836135b0565b612f9f8160675461279090919063ffffffff16565b606781905550612ff781606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279090919063ffffffff16565b606560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561310f57600080fd5b505afa158015613123573d6000803e3d6000fd5b505050506040513d602081101561313957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a43905609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131f057600080fd5b505afa158015613204573d6000803e3d6000fd5b505050506040513d602081101561321a57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561329257600080fd5b505afa1580156132a6573d6000803e3d6000fd5b505050506040513d60208110156132bc57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f574158473a3a5061697220646f6573206e6f742065786973742100000000000081525060200191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156133bb57600080fd5b505afa1580156133cf573d6000803e3d6000fd5b505050506040513d60608110156133e557600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060008290506000829050609a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a157600080fd5b505afa1580156134b5573d6000803e3d6000fd5b505050506040513d60208110156134cb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161061356c57613567613546888361279090919063ffffffff16565b613559848a61286290919063ffffffff16565b6128e890919063ffffffff16565b6135a4565b6135a3613582888461279090919063ffffffff16565b613595838a61286290919063ffffffff16565b6128e890919063ffffffff16565b5b95505050505050919050565b505050565b60008083118290613661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561362657808201518184015260208101905061360b565b50505050905090810190601f1680156136535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161366d57fe5b049050809150509392505050565b6000811480613749575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561370c57600080fd5b505afa158015613720573d6000803e3d6000fd5b505050506040513d602081101561373657600080fd5b8101908080519060200190929190505050145b61379e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140826036913960400191505060405180910390fd5b61383b8363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613a88565b505050565b600060019054906101000a900460ff168061385f575061385e612d94565b5b80613875575060008054906101000a900460ff16155b6138ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561391a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561393b5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061395d575061395c612d94565b5b80613973575060008054906101000a900460ff16155b6139c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f99602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015613a18576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8260689080519060200190613a2e929190613da8565b508160699080519060200190613a45929190613da8565b506012606a60006101000a81548160ff021916908360ff1602179055508015613a835760008060016101000a81548160ff0219169083151502179055505b505050565b613aa78273ffffffffffffffffffffffffffffffffffffffff16613cd3565b613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613b685780518252602082019150602081019050602083039250613b45565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613bca576040519150601f19603f3d011682016040523d82523d6000602084013e613bcf565b606091505b509150915081613c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115613ccd57808060200190516020811015613c6657600080fd5b8101908080519060200190929190505050613ccc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614058602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015613d1557506000801b8214155b92505050919050565b828054828255906000526020600020908101928215613d97579160200282015b82811115613d965782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613d3e565b5b509050613da49190613e28565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613de957805160ff1916838001178555613e17565b82800160010185558215613e17579182015b82811115613e16578251825591602001919060010190613dfb565b5b509050613e249190613e63565b5090565b5b80821115613e5f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613e29565b5090565b5b80821115613e7c576000816000905550600101613e64565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f2061646472657373574158473a20696e70757420616d6f756e74206d75737420626520657175616c206f72206c6f776572207468616e2063697263756c6174696e6720737570706c792e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373574158473a20746f74616c537570706c79206d75737420657175616c203130206d696c6c696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209807adf4b0aff78ac26aab1d7c5e9190cc10d64ef380238625e39c862364dd7464736f6c634300060c0033
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing bytecode for exploitability**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re, binascii
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] # extract runtime bytecode hex after 'FILE: runtime_bytecode.hex'
[codex:494146] # Find 0x followed by hex
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] if not m:
[codex:494146] print('not found')
[codex:494146] raise SystemExit
[codex:494146] h=m.group(1)[2:]
[codex:494146] code=bytes.fromhex(h)
[codex:494146]
[codex:494146] # Simple disassembler
[codex:494146] opcodes={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfA:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] # disassemble and find call-like opcodes
[codex:494146] call_ops={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xfa:'STATICCALL',0xff:'SELFDESTRUCT'}
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i < len(code):
[codex:494146] op=code[i]
[codex:494146] name=opcodes.get(op, f'OP{op:02x}')
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,name,data.hex()))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,name,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] # print call sites with some context (prev few ops)
[codex:494146] for idx,(off,name,data) in enumerate(ops):
[codex:494146] if name in ('CALL','CALLCODE','DELEGATECALL','STATICCALL','SELFDESTRUCT'):
[codex:494146] start=max(0,idx-6)
[codex:494146] ctx=ops[start:idx+1]
[codex:494146] print('---',off,name)
[codex:494146] for o in ctx:
[codex:494146] print(o)
[codex:494146]
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 42ms:
[codex:494146] --- 3935 STATICCALL
[codex:494146] (3928, 'PUSH1', '00')
[codex:494146] (3930, 'DUP1', None)
[codex:494146] (3931, 'REVERT', None)
[codex:494146] (3932, 'JUMPDEST', None)
[codex:494146] (3933, 'POP', None)
[codex:494146] (3934, 'GAS', None)
[codex:494146] (3935, 'STATICCALL', None)
[codex:494146] --- 4245 STATICCALL
[codex:494146] (4238, 'PUSH1', '00')
[codex:494146] (4240, 'DUP1', None)
[codex:494146] (4241, 'REVERT', None)
[codex:494146] (4242, 'JUMPDEST', None)
[codex:494146] (4243, 'POP', None)
[codex:494146] (4244, 'GAS', None)
[codex:494146] (4245, 'STATICCALL', None)
[codex:494146] --- 4425 CALL
[codex:494146] (4419, 'DUP4', None)
[codex:494146] (4420, 'SUB', None)
[codex:494146] (4421, 'DUP2', None)
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing CALL instructions in bytecode**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] # Build op list
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,name,data.hex()))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,name,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] call_offsets=[(idx,off,name) for idx,(off,name,_) in enumerate(ops) if name in ('CALL','DELEGATECALL','CALLCODE','SELFDESTRUCT')]
[codex:494146]
[codex:494146] for idx,off,name in call_offsets:
[codex:494146] print('\\n===',name,'at',off,'===')
[codex:494146] start=max(0,idx-30)
[codex:494146] end=min(len(ops),idx+1)
[codex:494146] for o in ops[start:end]:
[codex:494146] print(o)
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 63ms:
[codex:494146]
[codex:494146] === CALL at 4425 ===
[codex:494146] (4364, 'DUP4', None)
[codex:494146] (4365, 'GT', None)
[codex:494146] (4366, 'ISZERO', None)
[codex:494146] (4367, 'PUSH2', '1161')
[codex:494146] (4370, 'JUMPI', None)
[codex:494146] (4371, 'PUSH2', '111a')
[codex:494146] (4374, 'PUSH2', '220c')
[codex:494146] (4377, 'JUMP', None)
[codex:494146] (4378, 'JUMPDEST', None)
[codex:494146] (4379, 'PUSH20', 'ffffffffffffffffffffffffffffffffffffffff')
[codex:494146] (4400, 'AND', None)
[codex:494146] (4401, 'PUSH2', '08fc')
[codex:494146] (4404, 'DUP5', None)
[codex:494146] (4405, 'SWAP1', None)
[codex:494146] (4406, 'DUP2', None)
[codex:494146] (4407, 'ISZERO', None)
[codex:494146] (4408, 'MUL', None)
[codex:494146] (4409, 'SWAP1', None)
[codex:494146]
[codex:494146] thinking
[codex:494146] **Examining critical CALL instructions**
[codex:494146]
[codex:494146] I'm focusing on specific CALLs at key offsets, suspecting they involve SafeERC20 token calls with code size checks to prevent issues. I'll consider possible reentrancy risks, especially if external calls go out before state changes, but I see reentrancy guards indicated in the bytecode. I want to decode functions and storage slots to clarify upgradeability and admin control checks, and I'll check if I can use an EVM disassembler tool to help map the contract’s functions.
[codex:494146] exec
[codex:494146] /bin/bash -lc 'which evm || which hevm || which ethereumjs-asm || which disasm' in /tmp/codex-multi-jqzcj7qn exited 1 in 11ms:
[codex:494146]
[codex:494146]
[codex:494146] thinking
[codex:494146] **Planning function selector parsing**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] # Simple pattern search for PUSH4 selector, EQ, PUSH2 dest, JUMPI
[codex:494146] # We'll disassemble sequentially and track patterns.
[codex:494146]
[codex:494146] opnames={
[codex:494146] 0x14:'EQ',0x57:'JUMPI',0x63:'PUSH4',0x61:'PUSH2'
[codex:494146] }
[codex:494146]
[codex:494146] # decode op list with push data
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] selectors={}
[codex:494146] for idx in range(len(ops)-3):
[codex:494146] off,op,data = ops[idx]
[codex:494146] if op==0x63: # PUSH4
[codex:494146] sel=int.from_bytes(data,'big')
[codex:494146] # look ahead for EQ, PUSH2, JUMPI
[codex:494146] if idx+3 < len(ops):
[codex:494146] o1=ops[idx+1][1]; o2=ops[idx+2]; o3=ops[idx+3][1]
[codex:494146] if o1==0x14 and o2[1]==0x61 and o3==0x57:
[codex:494146] dest=int.from_bytes(o2[2],'big')
[codex:494146] selectors[sel]=dest
[codex:494146]
[codex:494146] # print selectors sorted by dest
[codex:494146] for sel,dest in sorted(selectors.items(), key=lambda x:x[1]):
[codex:494146] print(f\"0x{sel:08x} -> 0x{dest:04x}\")
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 34ms:
[codex:494146] 0x06fdde03 -> 0x0191
[codex:494146] 0x095ea7b3 -> 0x0221
[codex:494146] 0x18160ddd -> 0x0292
[codex:494146] 0x23b872dd -> 0x02bd
[codex:494146] 0x2e0f2625 -> 0x034e
[codex:494146] 0x2e4bb77c -> 0x037c
[codex:494146] 0x2ff2e9dc -> 0x03bd
[codex:494146] 0x313ce567 -> 0x03e8
[codex:494146] 0x39509351 -> 0x0416
[codex:494146] 0x42966c68 -> 0x0487
[codex:494146] 0x47a1671a -> 0x04c2
[codex:494146] 0x56fa05df -> 0x0553
[codex:494146] 0x70a08231 -> 0x0594
[codex:494146] 0x72963c6c -> 0x05f9
[codex:494146] 0x735de9f7 -> 0x0624
[codex:494146] 0x95d89b41 -> 0x0665
[codex:494146] 0xa457c2d7 -> 0x06f5
[codex:494146] 0xa9059cbb -> 0x0766
[codex:494146] 0xb2dda6b5 -> 0x07d7
[codex:494146] 0xc4d66de8 -> 0x0802
[codex:494146]
[codex:494146] thinking
[codex:494146] **Planning function identification strategy**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] # Disassemble
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] # mapping selectors to dest from previous script
[codex:494146] selectors={
[codex:494146] 0x06fdde03:0x0191,0x095ea7b3:0x0221,0x18160ddd:0x0292,0x23b872dd:0x02bd,0x2e0f2625:0x034e,0x2e4bb77c:0x037c,0x2ff2e9dc:0x03bd,0x313ce567:0x03e8,0x39509351:0x0416,0x42966c68:0x0487,0x47a1671a:0x04c2,0x56fa05df:0x0553,0x70a08231:0x0594,0x72963c6c:0x05f9,0x735de9f7:0x0624,0x95d89b41:0x0665,0xa457c2d7:0x06f5,0xa9059cbb:0x0766,0xb2dda6b5:0x07d7,0xc4d66de8:0x0802,0xd2e87561:0x0853,0xdd62ed3e:0x08a9,0xdf23efd9:0x092e,0xe2fdcc17:0x096f,0xf83ecf99:0x09b0,0xfe3fbca3:0x0a01
[codex:494146] }
[codex:494146]
[codex:494146] # build index from offset to ops index
[codex:494146] index_by_off={off:idx for idx,(off,_,_) in enumerate(ops)}
[codex:494146]
[codex:494146] # function to print first N ops from dest
[codex:494146]
[codex:494146] def print_ops(dest, count=80):
[codex:494146] idx=index_by_off.get(dest)
[codex:494146] if idx is None:
[codex:494146] print('no dest',dest)
[codex:494146] return
[codex:494146] print(f'-- func at 0x{dest:04x} --')
[codex:494146] for o in ops[idx:idx+count]:
[codex:494146] off,op,data=o
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] print()
[codex:494146]
[codex:494146] for sel,dest in selectors.items():
[codex:494146] print(f'selector 0x{sel:08x} -> 0x{dest:04x}')
[codex:494146] print_ops(dest,60)
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 39ms:
[codex:494146] selector 0x06fdde03 -> 0x0191
[codex:494146] -- func at 0x0191 --
[codex:494146] 0191: JUMPDEST
[codex:494146] 0192: CALLVALUE
[codex:494146] 0193: DUP1
[codex:494146] 0194: ISZERO
[codex:494146] 0195: PUSH2 019d
[codex:494146] 0198: JUMPI
[codex:494146] 0199: PUSH1 00
[codex:494146] 019b: DUP1
[codex:494146] 019c: REVERT
[codex:494146] 019d: JUMPDEST
[codex:494146] 019e: POP
[codex:494146] 019f: PUSH2 01a6
[codex:494146] 01a2: PUSH2 0a66
[codex:494146] 01a5: JUMP
[codex:494146] 01a6: JUMPDEST
[codex:494146] 01a7: PUSH1 40
[codex:494146] 01a9: MLOAD
[codex:494146] 01aa: DUP1
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing internal functions and storage writes**
[codex:494146]
[codex:494146] I’m focusing on internal function addresses to map key logic segments and identify exploit paths. Since automated tools aren’t available, I’ll manually scan for SSTORE instructions to pinpoint storage writes, then cross-reference these with caller checks to see if any public functions allow unauthorized token transfers or ownership changes. Let’s explore these low-level operations carefully!
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] # disassemble
[codex:494146] opnames={
[codex:494146] 0x55:'SSTORE',0x54:'SLOAD',0x33:'CALLER',0x32:'ORIGIN',0x14:'EQ',0x15:'ISZERO',0x57:'JUMPI',0x56:'JUMP',0x5b:'JUMPDEST',0x63:'PUSH4',0x61:'PUSH2',0x60:'PUSH1',0x73:'PUSH20',0x52:'MSTORE',0x51:'MLOAD',0x80:'DUP1',0x90:'SWAP1',0xf1:'CALL',0xf4:'DELEGATECALL'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] # collect SSTORE occurrences
[codex:494146] sstore_indices=[idx for idx,(off,op,_) in enumerate(ops) if op==0x55]
[codex:494146]
[codex:494146] for idx in sstore_indices:
[codex:494146] off,op,_=ops[idx]
[codex:494146] print('\\n=== SSTORE at',hex(off),'===')
[codex:494146] start=max(0,idx-20)
[codex:494146] end=min(len(ops),idx+6)
[codex:494146] for o in ops[start:end]:
[codex:494146] off2,op2,data2=o
[codex:494146] name=opnames.get(op2,None)
[codex:494146] if name is None:
[codex:494146] # decode generic
[codex:494146] if 0x60<=op2<=0x7f:
[codex:494146] name=f'PUSH{op2-0x5f}'
[codex:494146] else:
[codex:494146] name=f'OP{op2:02x}'
[codex:494146] if data2 is not None:
[codex:494146] print(f'{off2:04x}: {name} {data2.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off2:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 35ms:
[codex:494146]
[codex:494146] === SSTORE at 0xdaa ===
[codex:494146] 0d90: JUMPDEST
[codex:494146] 0d91: PUSH1 00
[codex:494146] 0d93: PUSH1 97
[codex:494146] 0d95: PUSH1 01
[codex:494146] 0d97: PUSH2 0100
[codex:494146] 0d9a: OP0a
[codex:494146] 0d9b: OP81
[codex:494146] 0d9c: SLOAD
[codex:494146] 0d9d: OP81
[codex:494146] 0d9e: PUSH1 ff
[codex:494146] 0da0: OP02
[codex:494146] 0da1: OP19
[codex:494146] 0da2: OP16
[codex:494146] 0da3: SWAP1
[codex:494146] 0da4: OP83
[codex:494146] 0da5: ISZERO
[codex:494146] 0da6: ISZERO
[codex:494146] 0da7: OP02
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing internal function addresses and opcodes**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] index_by_off={off:idx for idx,(off,_,_) in enumerate(ops)}
[codex:494146]
[codex:494146] funcs=[0x0a66,0x0b08,0x0b26,0x0b30,0x0c09,0x0c0e,0x0c34,0x0c44,0x0c5b,0x0d0e,0x1320,0x1850,0x1876,0x18bf,0x18c5,0x18eb,0x198d,0x1a5a,0x1a78,0x1a7e,0x1c7c,0x1f6e,0x1ff5,0x201b,0x2041,0x21d0]
[codex:494146]
[codex:494146] for dest in funcs:
[codex:494146] idx=index_by_off.get(dest)
[codex:494146] if idx is None:
[codex:494146] print('missing',hex(dest))
[codex:494146] continue
[codex:494146] print(f'\\n-- internal at 0x{dest:04x} --')
[codex:494146] for o in ops[idx:idx+120]:
[codex:494146] off,op,data=o
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 37ms:
[codex:494146]
[codex:494146] -- internal at 0x0a66 --
[codex:494146] 0a66: JUMPDEST
[codex:494146] 0a67: PUSH1 60
[codex:494146] 0a69: PUSH1 68
[codex:494146] 0a6b: DUP1
[codex:494146] 0a6c: SLOAD
[codex:494146] 0a6d: PUSH1 01
[codex:494146] 0a6f: DUP2
[codex:494146] 0a70: PUSH1 01
[codex:494146] 0a72: AND
[codex:494146] 0a73: ISZERO
[codex:494146] 0a74: PUSH2 0100
[codex:494146] 0a77: MUL
[codex:494146] 0a78: SUB
[codex:494146] 0a79: AND
[codex:494146] 0a7a: PUSH1 02
[codex:494146] 0a7c: SWAP1
[codex:494146] 0a7d: DIV
[codex:494146] 0a7e: DUP1
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing reentrancy-guarded function logic**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] start=0x0d0e
[codex:494146] end=0x1320
[codex:494146] # print opcodes between
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 40ms:
[codex:494146] 0d0e: JUMPDEST
[codex:494146] 0d0f: PUSH1 97
[codex:494146] 0d11: PUSH1 01
[codex:494146] 0d13: SWAP1
[codex:494146] 0d14: SLOAD
[codex:494146] 0d15: SWAP1
[codex:494146] 0d16: PUSH2 0100
[codex:494146] 0d19: EXP
[codex:494146] 0d1a: SWAP1
[codex:494146] 0d1b: DIV
[codex:494146] 0d1c: PUSH1 ff
[codex:494146] 0d1e: AND
[codex:494146] 0d1f: PUSH2 0d90
[codex:494146] 0d22: JUMPI
[codex:494146] 0d23: PUSH1 40
[codex:494146] 0d25: MLOAD
[codex:494146] 0d26: PUSH32 08c379a000000000000000000000000000000000000000000000000000000000
[codex:494146] 0d47: DUP2
[codex:494146] 0d48: MSTORE
[codex:494146] 0d49: PUSH1 04
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing complex functions and access controls**
[codex:494146]
[codex:494146] I'm examining the complex function at 0x0d0e, focusing on its reentrancy guard, balance checks, external token interactions, and potential ETH transfers. I'm also investigating whether key functions like the initializer or upgrader have proper access controls or if unprotected calls could lead to exploitable token or ETH drains. This involves tracing storage slots, internal calls, and checking for owner or initialization flags within the bytecode.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] start=0x1320
[codex:494146] end=0x1760
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 33ms:
[codex:494146] 1320: JUMPDEST
[codex:494146] 1321: DUP3
[codex:494146] 1322: PUSH1 00
[codex:494146] 1324: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1339: AND
[codex:494146] 133a: DUP2
[codex:494146] 133b: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1350: AND
[codex:494146] 1351: EQ
[codex:494146] 1352: ISZERO
[codex:494146] 1353: PUSH2 13c4
[codex:494146] 1356: JUMPI
[codex:494146] 1357: PUSH1 40
[codex:494146] 1359: MLOAD
[codex:494146] 135a: PUSH32 08c379a000000000000000000000000000000000000000000000000000000000
[codex:494146] 137b: DUP2
[codex:494146] 137c: MSTORE
[codex:494146] 137d: PUSH1 04
[codex:494146] 137f: ADD
[codex:494146] 1380: DUP1
[codex:494146]
[codex:494146] thinking
[codex:494146] **Continuing to explore further**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] start=0x1750
[codex:494146] end=0x1860
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 32ms:
[codex:494146] 1751: EXP
[codex:494146] 1752: SWAP1
[codex:494146] 1753: DIV
[codex:494146] 1754: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1769: AND
[codex:494146] 176a: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 177f: AND
[codex:494146] 1780: PUSH4 ad5c4648
[codex:494146] 1785: PUSH1 40
[codex:494146] 1787: MLOAD
[codex:494146] 1788: DUP2
[codex:494146] 1789: PUSH4 ffffffff
[codex:494146] 178e: AND
[codex:494146] 178f: PUSH1 e0
[codex:494146] 1791: SHL
[codex:494146] 1792: DUP2
[codex:494146] 1793: MSTORE
[codex:494146] 1794: PUSH1 04
[codex:494146] 1796: ADD
[codex:494146] 1797: PUSH1 20
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing initialization and upgrade vulnerabilities**
[codex:494146]
[codex:494146] I'm mapping out how the initialization function sets contract addresses and arrays in storage, likely related to swap paths or router setup, noting it allows anyone to call it once if uninitialized. Then I examine upgrade-related functions that set upgrade addresses without access control, which could let an attacker replace upgrade targets with malicious contracts. I explore how these slots are used in token transfer calls that might let attackers drain tokens by manipulating upgrade addresses, digging into the detailed EVM call and storage usage patterns. There's a lot here about potential misuses of upgrade mechanisms and token transfers tied to those storage slots.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] start=0x1c7c
[codex:494146] end=0x1f6e
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 40ms:
[codex:494146] 1c7c: JUMPDEST
[codex:494146] 1c7d: PUSH1 00
[codex:494146] 1c7f: DUP1
[codex:494146] 1c80: PUSH1 00
[codex:494146] 1c82: PUSH2 1cc5
[codex:494146] 1c85: PUSH2 1caf
[codex:494146] 1c88: PUSH1 97
[codex:494146] 1c8a: PUSH1 02
[codex:494146] 1c8c: SWAP1
[codex:494146] 1c8d: SLOAD
[codex:494146] 1c8e: SWAP1
[codex:494146] 1c8f: PUSH2 0100
[codex:494146] 1c92: EXP
[codex:494146] 1c93: SWAP1
[codex:494146] 1c94: DIV
[codex:494146] 1c95: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 1caa: AND
[codex:494146] 1cab: PUSH2 1876
[codex:494146] 1cae: JUMP
[codex:494146] 1caf: JUMPDEST
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing contract function behaviors**
[codex:494146]
[codex:494146] I'm carefully examining several contract functions, focusing on their storage slot uses, conditions, and operations. It seems one function calculates token upgrade amounts with no token transfers, likely a view, while another looks like an initialization setup for an ERC20 token, setting name, symbol, decimals, and flags. I’m trying to understand if initialization can be called by anyone, any safeguards, and whether token minting occurs during it. Next, I'll look inside related helper functions to clarify token minting and state setups.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] start=0x1a7e
[codex:494146] end=0x1c80
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 32ms:
[codex:494146] 1a7e: JUMPDEST
[codex:494146] 1a7f: PUSH1 00
[codex:494146] 1a81: PUSH1 01
[codex:494146] 1a83: SWAP1
[codex:494146] 1a84: SLOAD
[codex:494146] 1a85: SWAP1
[codex:494146] 1a86: PUSH2 0100
[codex:494146] 1a89: EXP
[codex:494146] 1a8a: SWAP1
[codex:494146] 1a8b: DIV
[codex:494146] 1a8c: PUSH1 ff
[codex:494146] 1a8e: AND
[codex:494146] 1a8f: DUP1
[codex:494146] 1a90: PUSH2 1a9d
[codex:494146] 1a93: JUMPI
[codex:494146] 1a94: POP
[codex:494146] 1a95: PUSH2 1a9c
[codex:494146] 1a98: PUSH2 2d94
[codex:494146] 1a9b: JUMP
[codex:494146] 1a9c: JUMPDEST
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing contract initializers**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] for start,end in [(0x2dab,0x2f50),(0x2ebd,0x2f10),(0x2edb,0x2f10)]:
[codex:494146] print(f'\\n-- {hex(start)} to {hex(end)} --')
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 35ms:
[codex:494146]
[codex:494146] -- 0x2dab to 0x2f50 --
[codex:494146] 2dab: JUMPDEST
[codex:494146] 2dac: PUSH1 00
[codex:494146] 2dae: PUSH1 01
[codex:494146] 2db0: SWAP1
[codex:494146] 2db1: SLOAD
[codex:494146] 2db2: SWAP1
[codex:494146] 2db3: PUSH2 0100
[codex:494146] 2db6: EXP
[codex:494146] 2db7: SWAP1
[codex:494146] 2db8: DIV
[codex:494146] 2db9: PUSH1 ff
[codex:494146] 2dbb: AND
[codex:494146] 2dbc: DUP1
[codex:494146] 2dbd: PUSH2 2dca
[codex:494146] 2dc0: JUMPI
[codex:494146] 2dc1: POP
[codex:494146] 2dc2: PUSH2 2dc9
[codex:494146] 2dc5: PUSH2 2d94
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing initialization and upgrade functions**
[codex:494146]
[codex:494146] I'm carefully tracing the initializer and minting logic, noting how an uninitialized contract could let anyone mint the full supply. I’m also scrutinizing upgrade-setting functions that might let an attacker hijack token upgrade addresses if not properly restricted, though the actual exploitability depends heavily on contract state and token balances.
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] start=0x2b00
[codex:494146] end=0x2d90
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 33ms:
[codex:494146] 2b00: PUSH1 00
[codex:494146] 2b02: SWAP1
[codex:494146] 2b03: SLOAD
[codex:494146] 2b04: SWAP1
[codex:494146] 2b05: PUSH2 0100
[codex:494146] 2b08: EXP
[codex:494146] 2b09: SWAP1
[codex:494146] 2b0a: DIV
[codex:494146] 2b0b: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 2b20: AND
[codex:494146] 2b21: DUP4
[codex:494146] 2b22: PUSH1 98
[codex:494146] 2b24: PUSH1 00
[codex:494146] 2b26: SWAP1
[codex:494146] 2b27: SLOAD
[codex:494146] 2b28: SWAP1
[codex:494146] 2b29: PUSH2 0100
[codex:494146] 2b2c: EXP
[codex:494146] 2b2d: SWAP1
[codex:494146] 2b2e: DIV
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing function selectors and access control**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146]
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',
[codex:494146] 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:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] ops=[]
[codex:494146] i=0
[codex:494146] while i<len(code):
[codex:494146] op=code[i]
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] ops.append((i,op,data))
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] ops.append((i,op,None))
[codex:494146] i+=1
[codex:494146]
[codex:494146] start=0x18bf
[codex:494146] end=0x18eb
[codex:494146] for off,op,data in ops:
[codex:494146] if off<start: continue
[codex:494146] if off>=end: break
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if data is not None:
[codex:494146] print(f'{off:04x}: {name} {data.hex()}')
[codex:494146] else:
[codex:494146] print(f'{off:04x}: {name}')
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 34ms:
[codex:494146] 18bf: JUMPDEST
[codex:494146] 18c0: PUSH1 9e
[codex:494146] 18c2: SLOAD
[codex:494146] 18c3: DUP2
[codex:494146] 18c4: JUMP
[codex:494146] 18c5: JUMPDEST
[codex:494146] 18c6: PUSH1 9a
[codex:494146] 18c8: PUSH1 00
[codex:494146] 18ca: SWAP1
[codex:494146] 18cb: SLOAD
[codex:494146] 18cc: SWAP1
[codex:494146] 18cd: PUSH2 0100
[codex:494146] 18d0: EXP
[codex:494146] 18d1: SWAP1
[codex:494146] 18d2: DIV
[codex:494146] 18d3: PUSH20 ffffffffffffffffffffffffffffffffffffffff
[codex:494146] 18e8: AND
[codex:494146] 18e9: DUP2
[codex:494146] 18ea: JUMP
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing potential upgrade-related exploits**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:494146] import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] # find occurrences of push2 2b69
[codex:494146] pattern=bytes.fromhex('61 2b69')
[codex:494146] for i in range(len(code)-3):
[codex:494146] if code[i:i+3]==pattern:
[codex:494146] print(hex(i))
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 31ms:
[codex:494146] 0x2afb
[codex:494146]
[codex:494146] thinking
[codex:494146] **Tracing function calls**
[codex:494146] exec
[codex:494146] /bin/bash -lc "python3 - <<'PY'
[codex:494146] import re
[codex:494146] from pathlib import Path
[codex:494146] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();import binascii
[codex:494146] m=re.search(r'FILE: runtime_bytecode\\.hex\\n(0x[0-9a-fA-F]+)', hexdata)
[codex:494146] code=bytes.fromhex(m.group(1)[2:])
[codex:494146] # disassemble around 0x2af0
[codex:494146] opnames={
[codex:494146] 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:494146] 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:494146] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:494146] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:494146] 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:494146] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:494146] 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:494146] 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:494146] 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:494146] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:494146] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xff:'SELFDESTRUCT'
[codex:494146] }
[codex:494146]
[codex:494146] # disassemble around 0x2ae0-0x2b10
[codex:494146]
[codex:494146] def disasm(start,end):
[codex:494146] i=start
[codex:494146] while i<end:
[codex:494146] op=code[i]
[codex:494146] name=opnames.get(op,f'OP{op:02x}')
[codex:494146] if 0x60 <= op <= 0x7f:
[codex:494146] n=op-0x5f
[codex:494146] data=code[i+1:i+1+n]
[codex:494146] print(f'{i:04x}: {name} {data.hex()}')
[codex:494146] i+=1+n
[codex:494146] else:
[codex:494146] print(f'{i:04x}: {name}')
[codex:494146] i+=1
[codex:494146]
[codex:494146] disasm(0x2ae0,0x2b20)
[codex:494146] PY" in /tmp/codex-multi-jqzcj7qn succeeded in 39ms:
[codex:494146] 2ae0: PUSH1 40
[codex:494146] 2ae2: MLOAD
[codex:494146] 2ae3: DUP1
[codex:494146] 2ae4: DUP3
[codex:494146] 2ae5: DUP2
[codex:494146] 2ae6: MSTORE
[codex:494146] 2ae7: PUSH1 20
[codex:494146] 2ae9: ADD
[codex:494146] 2aea: SWAP2
[codex:494146] 2aeb: POP
[codex:494146] 2aec: POP
[codex:494146] 2aed: PUSH1 40
[codex:494146] 2aef: MLOAD
[codex:494146] 2af0: DUP1
[codex:494146] 2af1: SWAP2
[codex:494146] 2af2: SUB
[codex:494146] 2af3: SWAP1
[codex:494146] 2af4: LOG3
[codex:494146] 2af5: POP
[codex:494146] 2af6: POP
[codex:494146]
[codex:494146] thinking
[codex:494146] **Analyzing bytecode for vulnerabilities**
[codex:494146]
[codex:494146] I'm confirming that the function at 0x2af8 is internal and called only during upgrades, not externally accessible. I checked for direct storage writes to ownership slots using caller data and found none. Since no exploitable paths emerged from static bytecode analysis, I'll prepare a JSON response indicating no findings, while noting the limits of bytecode-only assessment as instructed.
[codex:494146] codex
[codex:494146] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one‑time flags, and any potential issues would depend on unknown deployment state.","findings":[]}
[codex:494146] tokens used
[codex:494146] 345,542
[codex:494146] {"no_findings":true,"summary":"No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one‑time flags, and any potential issues would depend on unknown deployment state.","findings":[]}
{
"codex": {
"ran_at": "2026-01-05T00:52:51.231466+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one\u2011time flags, and any potential issues would depend on unknown deployment state.",
"raw_final": {
"summary": "No concrete, exploitable profit path identified from the provided bytecode alone; external calls appear gated by balance/one\u2011time flags, and any potential issues would depend on unknown deployment state.",
"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 0x0185 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x72963c6c 00000019: GT 0000001a: PUSH2 0x00d1 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xc4d66de8 00000024: GT 00000025: PUSH2 0x008a 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xdf23efd9 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xdf23efd9 0000003a: EQ 0000003b: PUSH2 0x092e 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe2fdcc17 00000045: EQ 00000046: PUSH2 0x096f 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf83ecf99 00000050: EQ 00000051: PUSH2 0x09b0 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfe3fbca3 0000005b: EQ 0000005c: PUSH2 0x0a01 0000005f: JUMPI 00000060: PUSH2 0x018c 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xc4d66de8 0000006b: EQ 0000006c: PUSH2 0x0802 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xd2e87561 00000076: EQ 00000077: PUSH2 0x0853 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xdd62ed3e 00000081: EQ 00000082: PUSH2 0x08a9 00000085: JUMPI 00000086: PUSH2 0x018c 00000089: JUMP 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0x72963c6c 00000091: EQ 00000092: PUSH2 0x05f9 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0x735de9f7 0000009c: EQ 0000009d: PUSH2 0x0624 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x95d89b41 000000a7: EQ 000000a8: PUSH2 0x0665 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xa457c2d7 000000b2: EQ 000000b3: PUSH2 0x06f5 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xa9059cbb 000000bd: EQ 000000be: PUSH2 0x0766 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0xb2dda6b5 000000c8: EQ 000000c9: PUSH2 0x07d7 000000cc: JUMPI 000000cd: PUSH2 0x018c 000000d0: JUMP 000000d1: JUMPDEST 000000d2: DUP1 000000d3: PUSH4 0x2ff2e9dc 000000d8: GT 000000d9: PUSH2 0x013e 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x42966c68 000000e3: GT 000000e4: PUSH2 0x0118 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x42966c68 000000ee: EQ 000000ef: PUSH2 0x0487 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x47a1671a 000000f9: EQ 000000fa: PUSH2 0x04c2 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x56fa05df 00000104: EQ 00000105: PUSH2 0x0553 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0x70a08231 0000010f: EQ 00000110: PUSH2 0x0594 00000113: JUMPI 00000114: PUSH2 0x018c 00000117: JUMP 00000118: JUMPDEST 00000119: DUP1 0000011a: PUSH4 0x2ff2e9dc 0000011f: EQ 00000120: PUSH2 0x03bd 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x313ce567 0000012a: EQ 0000012b: PUSH2 0x03e8 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0x39509351 00000135: EQ 00000136: PUSH2 0x0416 00000139: JUMPI 0000013a: PUSH2 0x018c 0000013d: JUMP 0000013e: JUMPDEST 0000013f: DUP1 00000140: PUSH4 0x06fdde03 00000145: EQ 00000146: PUSH2 0x0191 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH4 0x095ea7b3 00000150: EQ 00000151: PUSH2 0x0221 00000154: JUMPI 00000155: DUP1 00000156: PUSH4 0x18160ddd 0000015b: EQ 0000015c: PUSH2 0x0292 0000015f: JUMPI 00000160: DUP1 00000161: PUSH4 0x23b872dd 00000166: EQ 00000167: PUSH2 0x02bd 0000016a: JUMPI 0000016b: DUP1 0000016c: PUSH4 0x2e0f2625 00000171: EQ 00000172: PUSH2 0x034e 00000175: JUMPI 00000176: DUP1 00000177: PUSH4 0x2e4bb77c 0000017c: EQ 0000017d: PUSH2 0x037c 00000180: JUMPI 00000181: PUSH2 0x018c 00000184: JUMP 00000185: JUMPDEST 00000186: CALLDATASIZE 00000187: PUSH2 0x018c 0000018a: JUMPI 0000018b: STOP 0000018c: JUMPDEST 0000018d: PUSH1 0x00 0000018f: DUP1 00000190: REVERT 00000191: JUMPDEST 00000192: CALLVALUE 00000193: DUP1 00000194: ISZERO 00000195: PUSH2 0x019d 00000198: JUMPI 00000199: PUSH1 0x00 0000019b: DUP1 0000019c: REVERT 0000019d: JUMPDEST 0000019e: POP 0000019f: PUSH2 0x01a6 000001a2: PUSH2 0x0a66 000001a5: JUMP 000001a6: JUMPDEST 000001a7: PUSH1 0x40 000001a9: MLOAD 000001aa: DUP1 000001ab: DUP1 000001ac: PUSH1 0x20 000001ae: ADD 000001af: DUP3 000001b0: DUP2 000001b1: SUB 000001b2: DUP3 000001b3: MSTORE 000001b4: DUP4 000001b5: DUP2 000001b6: DUP2 000001b7: MLOAD 000001b8: DUP2 000001b9: MSTORE 000001ba: PUSH1 0x20 000001bc: ADD 000001bd: SWAP2 000001be: POP 000001bf: DUP1 000001c0: MLOAD 000001c1: SWAP1 000001c2: PUSH1 0x20 000001c4: ADD 000001c5: SWAP1 000001c6: DUP1 000001c7: DUP4 000001c8: DUP4 000001c9: PUSH1 0x00 000001cb: JUMPDEST 000001cc: DUP4 000001cd: DUP2 000001ce: LT 000001cf: ISZERO 000001d0: PUSH2 0x01e6 000001d3: JUMPI 000001d4: DUP1 000001d5: DUP3 000001d6: ADD 000001d7: MLOAD 000001d8: DUP2 000001d9: DUP5 000001da: ADD 000001db: MSTORE 000001dc: PUSH1 0x20 000001de: DUP2 000001df: ADD 000001e0: SWAP1 000001e1: POP 000001e2: PUSH2 0x01cb 000001e5: JUMP 000001e6: JUMPDEST 000001e7: POP 000001e8: POP 000001e9: POP 000001ea: POP 000001eb: SWAP1 000001ec: POP 000001ed: SWAP1 000001ee: DUP2 000001ef: ADD 000001f0: SWAP1 000001f1: PUSH1 0x1f 000001f3: AND 000001f4: DUP1 000001f5: ISZERO 000001f6: PUSH2 0x0213 000001f9: JUMPI 000001fa: DUP1 000001fb: DUP3 000001fc: SUB 000001fd: DUP1 000001fe: MLOAD 000001ff: PUSH1 0x01 00000201: DUP4 00000202: PUSH1 0x20 00000204: SUB 00000205: PUSH2 0x0100 00000208: EXP 00000209: SUB 0000020a: NOT 0000020b: AND 0000020c: DUP2 0000020d: MSTORE 0000020e: PUSH1 0x20 00000210: ADD 00000211: SWAP2 00000212: POP 00000213: JUMPDEST 00000214: POP 00000215: SWAP3 00000216: POP 00000217: POP 00000218: POP 00000219: PUSH1 0x40 0000021b: MLOAD 0000021c: DUP1 0000021d: SWAP2 0000021e: SUB 0000021f: SWAP1 00000220: RETURN 00000221: JUMPDEST 00000222: CALLVALUE 00000223: DUP1 00000224: ISZERO 00000225: PUSH2 0x022d 00000228: JUMPI 00000229: PUSH1 0x00 0000022b: DUP1 0000022c: REVERT 0000022d: JUMPDEST 0000022e: POP 0000022f: PUSH2 0x027a 00000232: PUSH1 0x04 00000234: DUP1 00000235: CALLDATASIZE 00000236: SUB 00000237: PUSH1 0x40 00000239: DUP2 0000023a: LT 0000023b: ISZERO 0000023c: PUSH2 0x0244 0000023f: JUMPI 00000240: PUSH1 0x00 00000242: DUP1 00000243: REVERT 00000244: JUMPDEST 00000245: DUP2 00000246: ADD 00000247: SWAP1 00000248: DUP1 00000249: DUP1 0000024a: CALLDATALOAD 0000024b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000260: AND 00000261: SWAP1 00000262: PUSH1 0x20 00000264: ADD 00000265: SWAP1 00000266: SWAP3 00000267: SWAP2 00000268: SWAP1 00000269: DUP1 0000026a: CALLDATALOAD 0000026b: SWAP1 0000026c: PUSH1 0x20 0000026e: ADD 0000026f: SWAP1 00000270: SWAP3 00000271: SWAP2 00000272: SWAP1 00000273: POP 00000274: POP 00000275: POP 00000276: PUSH2 0x0b08 00000279: JUMP 0000027a: JUMPDEST 0000027b: PUSH1 0x40 0000027d: MLOAD 0000027e: DUP1 0000027f: DUP3 00000280: ISZERO 00000281: ISZERO 00000282: DUP2 00000283: MSTORE 00000284: PUSH1 0x20 00000286: ADD 00000287: SWAP2 00000288: POP 00000289: POP 0000028a: PUSH1 0x40 0000028c: MLOAD 0000028d: DUP1 0000028e: SWAP2 0000028f: SUB 00000290: SWAP1 00000291: RETURN 00000292: JUMPDEST 00000293: CALLVALUE 00000294: DUP1 00000295: ISZERO 00000296: PUSH2 0x029e 00000299: JUMPI 0000029a: PUSH1 0x00 0000029c: DUP1 0000029d: REVERT 0000029e: JUMPDEST 0000029f: POP 000002a0: PUSH2 0x02a7 000002a3: PUSH2 0x0b26 000002a6: JUMP 000002a7: JUMPDEST 000002a8: PUSH1 0x40 000002aa: MLOAD 000002ab: DUP1 000002ac: DUP3 000002ad: DUP2 000002ae: MSTORE 000002af: PUSH1 0x20 000002b1: ADD 000002b2: SWAP2 000002b3: POP 000002b4: POP 000002b5: PUSH1 0x40 000002b7: MLOAD 000002b8: DUP1 000002b9: SWAP2 000002ba: SUB 000002bb: SWAP1 000002bc: RETURN 000002bd: JUMPDEST 000002be: CALLVALUE 000002bf: DUP1 000002c0: ISZERO 000002c1: PUSH2 0x02c9 000002c4: JUMPI 000002c5: PUSH1 0x00 000002c7: DUP1 000002c8: REVERT 000002c9: JUMPDEST 000002ca: POP 000002cb: PUSH2 0x0336 000002ce: PUSH1 0x04 000002d0: DUP1 000002d1: CALLDATASIZE 000002d2: SUB 000002d3: PUSH1 0x60 000002d5: DUP2 000002d6: LT 000002d7: ISZERO 000002d8: PUSH2 0x02e0 000002db: JUMPI 000002dc: PUSH1 0x00 000002de: DUP1 000002df: REVERT 000002e0: JUMPDEST 000002e1: DUP2 000002e2: ADD 000002e3: SWAP1 000002e4: DUP1 000002e5: DUP1 000002e6: CALLDATALOAD 000002e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002fc: AND 000002fd: SWAP1 000002fe: PUSH1 0x20 00000300: ADD 00000301: SWAP1 00000302: SWAP3 00000303: SWAP2 00000304: SWAP1 00000305: DUP1 00000306: CALLDATALOAD 00000307: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000031c: AND 0000031d: SWAP1 0000031e: PUSH1 0x20 00000320: ADD 00000321: SWAP1 00000322: SWAP3 00000323: SWAP2 00000324: SWAP1 00000325: DUP1 00000326: CALLDATALOAD 00000327: SWAP1 00000328: PUSH1 0x20 0000032a: ADD 0000032b: SWAP1 0000032c: SWAP3 0000032d: SWAP2 0000032e: SWAP1 0000032f: POP 00000330: POP 00000331: POP 00000332: PUSH2 0x0b30 00000335: JUMP 00000336: JUMPDEST 00000337: PUSH1 0x40 00000339: MLOAD 0000033a: DUP1 0000033b: DUP3 0000033c: ISZERO 0000033d: ISZERO 0000033e: DUP2 0000033f: MSTORE 00000340: PUSH1 0x20 00000342: ADD 00000343: SWAP2 00000344: POP 00000345: POP 00000346: PUSH1 0x40 00000348: MLOAD 00000349: DUP1 0000034a: SWAP2 0000034b: SUB 0000034c: SWAP1 0000034d: RETURN 0000034e: JUMPDEST 0000034f: CALLVALUE 00000350: DUP1 00000351: ISZERO 00000352: PUSH2 0x035a 00000355: JUMPI 00000356: PUSH1 0x00 00000358: DUP1 00000359: REVERT 0000035a: JUMPDEST 0000035b: POP 0000035c: PUSH2 0x0363 0000035f: PUSH2 0x0c09 00000362: JUMP 00000363: JUMPDEST 00000364: PUSH1 0x40 00000366: MLOAD 00000367: DUP1 00000368: DUP3 00000369: PUSH1 0xff 0000036b: AND 0000036c: DUP2 0000036d: MSTORE 0000036e: PUSH1 0x20 00000370: ADD 00000371: SWAP2 00000372: POP 00000373: POP 00000374: PUSH1 0x40 00000376: MLOAD 00000377: DUP1 00000378: SWAP2 00000379: SUB 0000037a: SWAP1 0000037b: RETURN 0000037c: JUMPDEST 0000037d: CALLVALUE 0000037e: DUP1 0000037f: ISZERO 00000380: PUSH2 0x0388 00000383: JUMPI 00000384: PUSH1 0x00 00000386: DUP1 00000387: REVERT 00000388: JUMPDEST 00000389: POP 0000038a: PUSH2 0x0391 0000038d: PUSH2 0x0c0e 00000390: JUMP 00000391: JUMPDEST 00000392: PUSH1 0x40 00000394: MLOAD 00000395: DUP1 00000396: DUP3 00000397: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003ac: AND 000003ad: DUP2 000003ae: MSTORE 000003af: PUSH1 0x20 000003b1: ADD 000003b2: SWAP2 000003b3: POP 000003b4: POP 000003b5: PUSH1 0x40 000003b7: MLOAD 000003b8: DUP1 000003b9: SWAP2 000003ba: SUB 000003bb: SWAP1 000003bc: RETURN 000003bd: JUMPDEST 000003be: CALLVALUE 000003bf: DUP1 000003c0: ISZERO 000003c1: PUSH2 0x03c9 000003c4: JUMPI 000003c5: PUSH1 0x00 000003c7: DUP1 000003c8: REVERT 000003c9: JUMPDEST 000003ca: POP 000003cb: PUSH2 0x03d2 000003ce: PUSH2 0x0c34 000003d1: JUMP 000003d2: JUMPDEST 000003d3: PUSH1 0x40 000003d5: MLOAD 000003d6: DUP1 000003d7: DUP3 000003d8: DUP2 000003d9: MSTORE 000003da: PUSH1 0x20 000003dc: ADD 000003dd: SWAP2 000003de: POP 000003df: POP 000003e0: PUSH1 0x40 000003e2: MLOAD 000003e3: DUP1 000003e4: SWAP2 000003e5: SUB 000003e6: SWAP1 000003e7: RETURN 000003e8: JUMPDEST 000003e9: CALLVALUE 000003ea: DUP1 000003eb: ISZERO 000003ec: PUSH2 0x03f4 000003ef: JUMPI 000003f0: PUSH1 0x00 000003f2: DUP1 000003f3: REVERT 000003f4: JUMPDEST 000003f5: POP 000003f6: PUSH2 0x03fd 000003f9: PUSH2 0x0c44 000003fc: JUMP 000003fd: JUMPDEST 000003fe: PUSH1 0x40 00000400: MLOAD 00000401: DUP1 00000402: DUP3 00000403: PUSH1 0xff 00000405: AND 00000406: DUP2 00000407: MSTORE 00000408: PUSH1 0x20 0000040a: ADD 0000040b: SWAP2 0000040c: POP 0000040d: POP 0000040e: PUSH1 0x40 00000410: MLOAD 00000411: DUP1 00000412: SWAP2 00000413: SUB 00000414: SWAP1 00000415: RETURN 00000416: JUMPDEST 00000417: CALLVALUE 00000418: DUP1 00000419: ISZERO 0000041a: PUSH2 0x0422 0000041d: JUMPI 0000041e: PUSH1 0x00 00000420: DUP1 00000421: REVERT 00000422: JUMPDEST 00000423: POP 00000424: PUSH2 0x046f 00000427: PUSH1 0x04 00000429: DUP1 0000042a: CALLDATASIZE 0000042b: SUB 0000042c: PUSH1 0x40 0000042e: DUP2 0000042f: LT 00000430: ISZERO 00000431: PUSH2 0x0439 00000434: JUMPI 00000435: PUSH1 0x00 00000437: DUP1 00000438: REVERT 00000439: JUMPDEST 0000043a: DUP2 0000043b: ADD 0000043c: SWAP1 0000043d: DUP1 0000043e: DUP1 0000043f: CALLDATALOAD 00000440: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000455: AND 00000456: SWAP1 00000457: PUSH1 0x20 00000459: ADD 0000045a: SWAP1 0000045b: SWAP3 0000045c: SWAP2 0000045d: SWAP1 0000045e: DUP1 0000045f: CALLDATALOAD 00000460: SWAP1 00000461: PUSH1 0x20 00000463: ADD 00000464: SWAP1 00000465: SWAP3 00000466: SWAP2 00000467: SWAP1 00000468: POP 00000469: POP 0000046a: POP 0000046b: PUSH2 0x0c5b 0000046e: JUMP 0000046f: JUMPDEST 00000470: PUSH1 0x40 00000472: MLOAD 00000473: DUP1 00000474: DUP3 00000475: ISZERO 00000476: ISZERO 00000477: DUP2 00000478: MSTORE 00000479: PUSH1 0x20 0000047b: ADD 0000047c: SWAP2 0000047d: POP 0000047e: POP 0000047f: PUSH1 0x40 00000481: MLOAD 00000482: DUP1 00000483: SWAP2 00000484: SUB 00000485: SWAP1 00000486: RETURN 00000487: JUMPDEST 00000488: CALLVALUE 00000489: DUP1 0000048a: ISZERO 0000048b: PUSH2 0x0493 0000048e: JUMPI 0000048f: PUSH1 0x00 00000491: DUP1 00000492: REVERT 00000493: JUMPDEST 00000494: POP 00000495: PUSH2 0x04c0 00000498: PUSH1 0x04 0000049a: DUP1 0000049b: CALLDATASIZE 0000049c: SUB 0000049d: PUSH1 0x20 0000049f: DUP2 000004a0: LT 000004a1: ISZERO 000004a2: PUSH2 0x04aa 000004a5: JUMPI 000004a6: PUSH1 0x00 000004a8: DUP1 000004a9: REVERT 000004aa: JUMPDEST 000004ab: DUP2 000004ac: ADD 000004ad: SWAP1 000004ae: DUP1 000004af: DUP1 000004b0: CALLDATALOAD 000004b1: SWAP1 000004b2: PUSH1 0x20 000004b4: ADD 000004b5: SWAP1 000004b6: SWAP3 000004b7: SWAP2 000004b8: SWAP1 000004b9: POP 000004ba: POP 000004bb: POP 000004bc: PUSH2 0x0d0e 000004bf: JUMP 000004c0: JUMPDEST 000004c1: STOP 000004c2: JUMPDEST 000004c3: CALLVALUE 000004c4: DUP1 000004c5: ISZERO 000004c6: PUSH2 0x04ce 000004c9: JUMPI 000004ca: PUSH1 0x00 000004cc: DUP1 000004cd: REVERT 000004ce: JUMPDEST 000004cf: POP 000004d0: PUSH2 0x0551 000004d3: PUSH1 0x04 000004d5: DUP1 000004d6: CALLDATASIZE 000004d7: SUB 000004d8: PUSH1 0x60 000004da: DUP2 000004db: LT 000004dc: ISZERO 000004dd: PUSH2 0x04e5 000004e0: JUMPI 000004e1: PUSH1 0x00 000004e3: DUP1 000004e4: REVERT 000004e5: JUMPDEST 000004e6: DUP2 000004e7: ADD 000004e8: SWAP1 000004e9: DUP1 000004ea: DUP1 000004eb: CALLDATALOAD 000004ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000501: AND 00000502: SWAP1 00000503: PUSH1 0x20 00000505: ADD 00000506: SWAP1 00000507: SWAP3 00000508: SWAP2 00000509: SWAP1 0000050a: DUP1 0000050b: CALLDATALOAD 0000050c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000521: AND 00000522: SWAP1 00000523: PUSH1 0x20 00000525: ADD 00000526: SWAP1 00000527: SWAP3 00000528: SWAP2 00000529: SWAP1 0000052a: DUP1 0000052b: CALLDATALOAD 0000052c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000541: AND 00000542: SWAP1 00000543: PUSH1 0x20 00000545: ADD 00000546: SWAP1 00000547: SWAP3 00000548: SWAP2 00000549: SWAP1 0000054a: POP 0000054b: POP 0000054c: POP 0000054d: PUSH2 0x1320 00000550: JUMP 00000551: JUMPDEST 00000552: STOP 00000553: JUMPDEST 00000554: CALLVALUE 00000555: DUP1 00000556: ISZERO 00000557: PUSH2 0x055f 0000055a: JUMPI 0000055b: PUSH1 0x00 0000055d: DUP1 0000055e: REVERT 0000055f: JUMPDEST 00000560: POP 00000561: PUSH2 0x0568 00000564: PUSH2 0x1850 00000567: JUMP 00000568: JUMPDEST 00000569: PUSH1 0x40 0000056b: MLOAD 0000056c: DUP1 0000056d: DUP3 0000056e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000583: AND 00000584: DUP2 00000585: MSTORE 00000586: PUSH1 0x20 00000588: ADD 00000589: SWAP2 0000058a: POP 0000058b: POP 0000058c: PUSH1 0x40 0000058e: MLOAD 0000058f: DUP1 00000590: SWAP2 00000591: SUB 00000592: SWAP1 00000593: RETURN 00000594: JUMPDEST 00000595: CALLVALUE 00000596: DUP1 00000597: ISZERO 00000598: PUSH2 0x05a0 0000059b: JUMPI 0000059c: PUSH1 0x00 0000059e: DUP1 0000059f: REVERT 000005a0: JUMPDEST 000005a1: POP 000005a2: PUSH2 0x05e3 000005a5: PUSH1 0x04 000005a7: DUP1 000005a8: CALLDATASIZE 000005a9: SUB 000005aa: PUSH1 0x20 000005ac: DUP2 000005ad: LT 000005ae: ISZERO 000005af: PUSH2 0x05b7 000005b2: JUMPI 000005b3: PUSH1 0x00 000005b5: DUP1 000005b6: REVERT 000005b7: JUMPDEST 000005b8: DUP2 000005b9: ADD 000005ba: SWAP1 000005bb: DUP1 000005bc: DUP1 000005bd: CALLDATALOAD 000005be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005d3: AND 000005d4: SWAP1 000005d5: PUSH1 0x20 000005d7: ADD 000005d8: SWAP1 000005d9: SWAP3 000005da: SWAP2 000005db: SWAP1 000005dc: POP 000005dd: POP 000005de: POP 000005df: PUSH2 0x1876 000005e2: JUMP 000005e3: JUMPDEST 000005e4: PUSH1 0x40 000005e6: MLOAD 000005e7: DUP1 000005e8: DUP3 000005e9: DUP2 000005ea: MSTORE 000005eb: PUSH1 0x20 000005ed: ADD 000005ee: SWAP2 000005ef: POP 000005f0: POP 000005f1: PUSH1 0x40 000005f3: MLOAD 000005f4: DUP1 000005f5: SWAP2 000005f6: SUB 000005f7: SWAP1 000005f8: RETURN 000005f9: JUMPDEST 000005fa: CALLVALUE 000005fb: DUP1 000005fc: ISZERO 000005fd: PUSH2 0x0605 00000600: JUMPI 00000601: PUSH1 0x00 00000603: DUP1 00000604: REVERT 00000605: JUMPDEST 00000606: POP 00000607: PUSH2 0x060e 0000060a: PUSH2 0x18bf 0000060d: JUMP 0000060e: JUMPDEST 0000060f: PUSH1 0x40 00000611: MLOAD 00000612: DUP1 00000613: DUP3 00000614: DUP2 00000615: MSTORE 00000616: PUSH1 0x20 00000618: ADD 00000619: SWAP2 0000061a: POP 0000061b: POP 0000061c: PUSH1 0x40 0000061e: MLOAD 0000061f: DUP1 00000620: SWAP2 00000621: SUB 00000622: SWAP1 00000623: RETURN 00000624: JUMPDEST 00000625: CALLVALUE 00000626: DUP1 00000627: ISZERO 00000628: PUSH2 0x0630 0000062b: JUMPI 0000062c: PUSH1 0x00 0000062e: DUP1 0000062f: REVERT 00000630: JUMPDEST 00000631: POP 00000632: PUSH2 0x0639 00000635: PUSH2 0x18c5 00000638: JUMP 00000639: JUMPDEST 0000063a: PUSH1 0x40 0000063c: MLOAD 0000063d: DUP1 0000063e: DUP3 0000063f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000654: AND 00000655: DUP2 00000656: MSTORE 00000657: PUSH1 0x20 00000659: ADD 0000065a: SWAP2 0000065b: POP 0000065c: POP 0000065d: PUSH1 0x40 0000065f: MLOAD 00000660: DUP1 00000661: SWAP2 00000662: SUB 00000663: SWAP1 00000664: RETURN 00000665: JUMPDEST 00000666: CALLVALUE 00000667: DUP1 00000668: ISZERO 00000669: PUSH2 0x0671 0000066c: JUMPI 0000066d: PUSH1 0x00 0000066f: DUP1 00000670: REVERT 00000671: JUMPDEST 00000672: POP 00000673: PUSH2 0x067a 00000676: PUSH2 0x18eb 00000679: JUMP 0000067a: JUMPDEST 0000067b: PUSH1 0x40 0000067d: MLOAD 0000067e: DUP1 0000067f: DUP1 00000680: PUSH1 0x20 00000682: ADD 00000683: DUP3 00000684: DUP2 00000685: SUB 00000686: DUP3 00000687: MSTORE 00000688: DUP4 00000689: DUP2 0000068a: DUP2 0000068b: MLOAD 0000068c: DUP2 0000068d: MSTORE 0000068e: PUSH1 0x20 00000690: ADD 00000691: SWAP2 00000692: POP 00000693: DUP1 00000694: MLOAD 00000695: SWAP1 00000696: PUSH1 0x20 00000698: ADD 00000699: SWAP1 0000069a: DUP1 0000069b: DUP4 0000069c: DUP4 0000069d: PUSH1 0x00 0000069f: JUMPDEST 000006a0: DUP4 000006a1: DUP2 000006a2: LT 000006a3: ISZERO 000006a4: PUSH2 0x06ba 000006a7: JUMPI 000006a8: DUP1 000006a9: DUP3 000006aa: ADD 000006ab: MLOAD 000006ac: DUP2 000006ad: DUP5 000006ae: ADD 000006af: MSTORE 000006b0: PUSH1 0x20 000006b2: DUP2 000006b3: ADD 000006b4: SWAP1 000006b5: POP 000006b6: PUSH2 0x069f 000006b9: JUMP 000006ba: JUMPDEST 000006bb: POP 000006bc: POP 000006bd: POP 000006be: POP 000006bf: SWAP1 000006c0: POP 000006c1: SWAP1 000006c2: DUP2 000006c3: ADD 000006c4: SWAP1 000006c5: PUSH1 0x1f 000006c7: AND 000006c8: DUP1 000006c9: ISZERO 000006ca: PUSH2 0x06e7 000006cd: JUMPI 000006ce: DUP1 000006cf: DUP3 000006d0: SUB 000006d1: DUP1 000006d2: MLOAD 000006d3: PUSH1 0x01 000006d5: DUP4 000006d6: PUSH1 0x20 000006d8: SUB 000006d9: PUSH2 0x0100 000006dc: EXP 000006dd: SUB 000006de: NOT 000006df: AND 000006e0: DUP2 000006e1: MSTORE 000006e2: PUSH1 0x20 000006e4: ADD 000006e5: SWAP2 000006e6: POP 000006e7: JUMPDEST 000006e8: POP 000006e9: SWAP3 000006ea: POP 000006eb: POP 000006ec: POP 000006ed: PUSH1 0x40 000006ef: MLOAD 000006f0: DUP1 000006f1: SWAP2 000006f2: SUB 000006f3: SWAP1 000006f4: RETURN 000006f5: JUMPDEST 000006f6: CALLVALUE 000006f7: DUP1 000006f8: ISZERO 000006f9: PUSH2 0x0701 000006fc: JUMPI 000006fd: PUSH1 0x00 000006ff: DUP1 00000700: REVERT 00000701: JUMPDEST 00000702: POP 00000703: PUSH2 0x074e 00000706: PUSH1 0x04 00000708: DUP1 00000709: CALLDATASIZE 0000070a: SUB 0000070b: PUSH1 0x40 0000070d: DUP2 0000070e: LT 0000070f: ISZERO 00000710: PUSH2 0x0718 00000713: JUMPI 00000714: PUSH1 0x00 00000716: DUP1 00000717: REVERT 00000718: JUMPDEST 00000719: DUP2 0000071a: ADD 0000071b: SWAP1 0000071c: DUP1 0000071d: DUP1 0000071e: CALLDATALOAD 0000071f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000734: AND 00000735: SWAP1 00000736: PUSH1 0x20 00000738: ADD 00000739: SWAP1 0000073a: SWAP3 0000073b: SWAP2 0000073c: SWAP1 0000073d: DUP1 0000073e: CALLDATALOAD 0000073f: SWAP1 00000740: PUSH1 0x20 00000742: ADD 00000743: SWAP1 00000744: SWAP3 00000745: SWAP2 00000746: SWAP1 00000747: POP 00000748: POP 00000749: POP 0000074a: PUSH2 0x198d 0000074d: JUMP 0000074e: JUMPDEST 0000074f: PUSH1 0x40 00000751: MLOAD 00000752: DUP1 00000753: DUP3 00000754: ISZERO 00000755: ISZERO 00000756: DUP2 00000757: MSTORE 00000758: PUSH1 0x20 0000075a: ADD 0000075b: SWAP2 0000075c: POP 0000075d: POP 0000075e: PUSH1 0x40 00000760: MLOAD 00000761: DUP1 00000762: SWAP2 00000763: SUB 00000764: SWAP1 00000765: RETURN 00000766: JUMPDEST 00000767: CALLVALUE 00000768: DUP1 00000769: ISZERO 0000076a: PUSH2 0x0772 0000076d: JUMPI 0000076e: PUSH1 0x00 00000770: DUP1 00000771: REVERT 00000772: JUMPDEST 00000773: POP 00000774: PUSH2 0x07bf 00000777: PUSH1 0x04 00000779: DUP1 0000077a: CALLDATASIZE 0000077b: SUB 0000077c: PUSH1 0x40 0000077e: DUP2 0000077f: LT 00000780: ISZERO 00000781: PUSH2 0x0789 00000784: JUMPI 00000785: PUSH1 0x00 00000787: DUP1 00000788: REVERT 00000789: JUMPDEST 0000078a: DUP2 0000078b: ADD 0000078c: SWAP1 0000078d: DUP1 0000078e: DUP1 0000078f: CALLDATALOAD 00000790: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007a5: AND 000007a6: SWAP1 000007a7: PUSH1 0x20 000007a9: ADD 000007aa: SWAP1 000007ab: SWAP3 000007ac: SWAP2 000007ad: SWAP1 000007ae: DUP1 000007af: CALLDATALOAD 000007b0: SWAP1 000007b1: PUSH1 0x20 000007b3: ADD 000007b4: SWAP1 000007b5: SWAP3 000007b6: SWAP2 000007b7: SWAP1 000007b8: POP 000007b9: POP 000007ba: POP 000007bb: PUSH2 0x1a5a 000007be: JUMP 000007bf: JUMPDEST 000007c0: PUSH1 0x40 000007c2: MLOAD 000007c3: DUP1 000007c4: DUP3 000007c5: ISZERO 000007c6: ISZERO 000007c7: DUP2 000007c8: MSTORE 000007c9: PUSH1 0x20 000007cb: ADD 000007cc: SWAP2 000007cd: POP 000007ce: POP 000007cf: PUSH1 0x40 000007d1: MLOAD 000007d2: DUP1 000007d3: SWAP2 000007d4: SUB 000007d5: SWAP1 000007d6: RETURN 000007d7: JUMPDEST 000007d8: CALLVALUE 000007d9: DUP1 000007da: ISZERO 000007db: PUSH2 0x07e3 000007de: JUMPI 000007df: PUSH1 0x00 000007e1: DUP1 000007e2: REVERT 000007e3: JUMPDEST 000007e4: POP 000007e5: PUSH2 0x07ec 000007e8: PUSH2 0x1a78 000007eb: JUMP 000007ec: JUMPDEST 000007ed: PUSH1 0x40 000007ef: MLOAD 000007f0: DUP1 000007f1: DUP3 000007f2: DUP2 000007f3: MSTORE 000007f4: PUSH1 0x20 000007f6: ADD 000007f7: SWAP2 000007f8: POP 000007f9: POP 000007fa: PUSH1 0x40 000007fc: MLOAD 000007fd: DUP1 000007fe: SWAP2 000007ff: SUB 00000800: SWAP1 00000801: RETURN 00000802: JUMPDEST 00000803: CALLVALUE 00000804: DUP1 00000805: ISZERO 00000806: PUSH2 0x080e 00000809: JUMPI 0000080a: PUSH1 0x00 0000080c: DUP1 0000080d: REVERT 0000080e: JUMPDEST 0000080f: POP 00000810: PUSH2 0x0851 00000813: PUSH1 0x04 00000815: DUP1 00000816: CALLDATASIZE 00000817: SUB 00000818: PUSH1 0x20 0000081a: DUP2 0000081b: LT 0000081c: ISZERO 0000081d: PUSH2 0x0825 00000820: JUMPI 00000821: PUSH1 0x00 00000823: DUP1 00000824: REVERT 00000825: JUMPDEST 00000826: DUP2 00000827: ADD 00000828: SWAP1 00000829: DUP1 0000082a: DUP1 0000082b: CALLDATALOAD 0000082c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000841: AND 00000842: SWAP1 00000843: PUSH1 0x20 00000845: ADD 00000846: SWAP1 00000847: SWAP3 00000848: SWAP2 00000849: SWAP1 0000084a: POP 0000084b: POP 0000084c: POP 0000084d: PUSH2 0x1a7e 00000850: JUMP 00000851: JUMPDEST 00000852: STOP 00000853: JUMPDEST 00000854: CALLVALUE 00000855: DUP1 00000856: ISZERO 00000857: PUSH2 0x085f 0000085a: JUMPI 0000085b: PUSH1 0x00 0000085d: DUP1 0000085e: REVERT 0000085f: JUMPDEST 00000860: POP 00000861: PUSH2 0x088c 00000864: PUSH1 0x04 00000866: DUP1 00000867: CALLDATASIZE 00000868: SUB 00000869: PUSH1 0x20 0000086b: DUP2 0000086c: LT 0000086d: ISZERO 0000086e: PUSH2 0x0876 00000871: JUMPI 00000872: PUSH1 0x00 00000874: DUP1 00000875: REVERT 00000876: JUMPDEST 00000877: DUP2 00000878: ADD 00000879: SWAP1 0000087a: DUP1 0000087b: DUP1 0000087c: CALLDATALOAD 0000087d: SWAP1 0000087e: PUSH1 0x20 00000880: ADD 00000881: SWAP1 00000882: SWAP3 00000883: SWAP2 00000884: SWAP1 00000885: POP 00000886: POP 00000887: POP 00000888: PUSH2 0x1c7c 0000088b: JUMP 0000088c: JUMPDEST 0000088d: PUSH1 0x40 0000088f: MLOAD 00000890: DUP1 00000891: DUP4 00000892: DUP2 00000893: MSTORE 00000894: PUSH1 0x20 00000896: ADD 00000897: DUP3 00000898: DUP2 00000899: MSTORE 0000089a: PUSH1 0x20 0000089c: ADD 0000089d: SWAP3 0000089e: POP 0000089f: POP 000008a0: POP 000008a1: PUSH1 0x40 000008a3: MLOAD 000008a4: DUP1 000008a5: SWAP2 000008a6: SUB 000008a7: SWAP1 000008a8: RETURN 000008a9: JUMPDEST 000008aa: CALLVALUE 000008ab: DUP1 000008ac: ISZERO 000008ad: PUSH2 0x08b5 000008b0: JUMPI 000008b1: PUSH1 0x00 000008b3: DUP1 000008b4: REVERT 000008b5: JUMPDEST 000008b6: POP 000008b7: PUSH2 0x0918 000008ba: PUSH1 0x04 000008bc: DUP1 000008bd: CALLDATASIZE 000008be: SUB 000008bf: PUSH1 0x40 000008c1: DUP2 000008c2: LT 000008c3: ISZERO 000008c4: PUSH2 0x08cc 000008c7: JUMPI 000008c8: PUSH1 0x00 000008ca: DUP1 000008cb: REVERT 000008cc: JUMPDEST 000008cd: DUP2 000008ce: ADD 000008cf: SWAP1 000008d0: DUP1 000008d1: DUP1 000008d2: CALLDATALOAD 000008d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008e8: AND 000008e9: SWAP1 000008ea: PUSH1 0x20 000008ec: ADD 000008ed: SWAP1 000008ee: SWAP3 000008ef: SWAP2 000008f0: SWAP1 000008f1: DUP1 000008f2: CALLDATALOAD 000008f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000908: AND 00000909: SWAP1 0000090a: PUSH1 0x20 0000090c: ADD 0000090d: SWAP1 0000090e: SWAP3 0000090f: SWAP2 00000910: SWAP1 00000911: POP 00000912: POP 00000913: POP 00000914: PUSH2 0x1f6e 00000917: JUMP 00000918: JUMPDEST 00000919: PUSH1 0x40 0000091b: MLOAD 0000091c: DUP1 0000091d: DUP3 0000091e: DUP2 0000091f: MSTORE 00000920: PUSH1 0x20 00000922: ADD 00000923: SWAP2 00000924: POP 00000925: POP 00000926: PUSH1 0x40 00000928: MLOAD 00000929: DUP1 0000092a: SWAP2 0000092b: SUB 0000092c: SWAP1 0000092d: RETURN 0000092e: JUMPDEST 0000092f: CALLVALUE 00000930: DUP1 00000931: ISZERO 00000932: PUSH2 0x093a 00000935: JUMPI 00000936: PUSH1 0x00 00000938: DUP1 00000939: REVERT 0000093a: JUMPDEST 0000093b: POP 0000093c: PUSH2 0x0943 0000093f: PUSH2 0x1ff5 00000942: JUMP 00000943: JUMPDEST 00000944: PUSH1 0x40 00000946: MLOAD 00000947: DUP1 00000948: DUP3 00000949: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000095e: AND 0000095f: DUP2 00000960: MSTORE 00000961: PUSH1 0x20 00000963: ADD 00000964: SWAP2 00000965: POP 00000966: POP 00000967: PUSH1 0x40 00000969: MLOAD 0000096a: DUP1 0000096b: SWAP2 0000096c: SUB 0000096d: SWAP1 0000096e: RETURN 0000096f: JUMPDEST 00000970: CALLVALUE 00000971: DUP1 00000972: ISZERO 00000973: PUSH2 0x097b 00000976: JUMPI 00000977: PUSH1 0x00 00000979: DUP1 0000097a: REVERT 0000097b: JUMPDEST 0000097c: POP 0000097d: PUSH2 0x0984 00000980: PUSH2 0x201b 00000983: JUMP 00000984: JUMPDEST 00000985: PUSH1 0x40 00000987: MLOAD 00000988: DUP1 00000989: DUP3 0000098a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000099f: AND 000009a0: DUP2 000009a1: MSTORE 000009a2: PUSH1 0x20 000009a4: ADD 000009a5: SWAP2 000009a6: POP 000009a7: POP 000009a8: PUSH1 0x40 000009aa: MLOAD 000009ab: DUP1 000009ac: SWAP2 000009ad: SUB 000009ae: SWAP1 000009af: RETURN 000009b0: JUMPDEST 000009b1: CALLVALUE 000009b2: DUP1 000009b3: ISZERO 000009b4: PUSH2 0x09bc 000009b7: JUMPI 000009b8: PUSH1 0x00 000009ba: DUP1 000009bb: REVERT 000009bc: JUMPDEST 000009bd: POP 000009be: PUSH2 0x09ff 000009c1: PUSH1 0x04 000009c3: DUP1 000009c4: CALLDATASIZE 000009c5: SUB 000009c6: PUSH1 0x20 000009c8: DUP2 000009c9: LT 000009ca: ISZERO 000009cb: PUSH2 0x09d3 000009ce: JUMPI 000009cf: PUSH1 0x00 000009d1: DUP1 000009d2: REVERT 000009d3: JUMPDEST 000009d4: DUP2 000009d5: ADD 000009d6: SWAP1 000009d7: DUP1 000009d8: DUP1 000009d9: CALLDATALOAD 000009da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009ef: AND 000009f0: SWAP1 000009f1: PUSH1 0x20 000009f3: ADD 000009f4: SWAP1 000009f5: SWAP3 000009f6: SWAP2 000009f7: SWAP1 000009f8: POP 000009f9: POP 000009fa: POP 000009fb: PUSH2 0x2041 000009fe: JUMP 000009ff: JUMPDEST 00000a00: STOP 00000a01: JUMPDEST 00000a02: CALLVALUE 00000a03: DUP1 00000a04: ISZERO 00000a05: PUSH2 0x0a0d 00000a08: JUMPI 00000a09: PUSH1 0x00 00000a0b: DUP1 00000a0c: REVERT 00000a0d: JUMPDEST 00000a0e: POP 00000a0f: PUSH2 0x0a3a 00000a12: PUSH1 0x04 00000a14: DUP1 00000a15: CALLDATASIZE 00000a16: SUB 00000a17: PUSH1 0x20 00000a19: DUP2 00000a1a: LT 00000a1b: ISZERO 00000a1c: PUSH2 0x0a24 00000a1f: JUMPI 00000a20: PUSH1 0x00 00000a22: DUP1 00000a23: REVERT 00000a24: JUMPDEST 00000a25: DUP2 00000a26: ADD 00000a27: SWAP1 00000a28: DUP1 00000a29: DUP1 00000a2a: CALLDATALOAD 00000a2b: SWAP1 00000a2c: PUSH1 0x20 00000a2e: ADD 00000a2f: SWAP1 00000a30: SWAP3 00000a31: SWAP2 00000a32: SWAP1 00000a33: POP 00000a34: POP 00000a35: POP 00000a36: PUSH2 0x21d0 00000a39: JUMP 00000a3a: JUMPDEST 00000a3b: PUSH1 0x40 00000a3d: MLOAD 00000a3e: DUP1 00000a3f: DUP3 00000a40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a55: AND 00000a56: DUP2 00000a57: MSTORE 00000a58: PUSH1 0x20 00000a5a: ADD 00000a5b: SWAP2 00000a5c: POP 00000a5d: POP 00000a5e: PUSH1 0x40 00000a60: MLOAD 00000a61: DUP1 00000a62: SWAP2 00000a63: SUB 00000a64: SWAP1 00000a65: RETURN 00000a66: JUMPDEST 00000a67: PUSH1 0x60 00000a69: PUSH1 0x68 00000a6b: DUP1 00000a6c: SLOAD 00000a6d: PUSH1 0x01 00000a6f: DUP2 00000a70: PUSH1 0x01 00000a72: AND 00000a73: ISZERO 00000a74: PUSH2 0x0100 00000a77: MUL 00000a78: SUB 00000a79: AND 00000a7a: PUSH1 0x02 00000a7c: SWAP1 00000a7d: DIV 00000a7e: DUP1 00000a7f: PUSH1 0x1f 00000a81: ADD 00000a82: PUSH1 0x20 00000a84: DUP1 00000a85: SWAP2 00000a86: DIV 00000a87: MUL 00000a88: PUSH1 0x20 00000a8a: ADD 00000a8b: PUSH1 0x40 00000a8d: MLOAD 00000a8e: SWAP1 00000a8f: DUP2 00000a90: ADD 00000a91: PUSH1 0x40 00000a93: MSTORE 00000a94: DUP1 00000a95: SWAP3 00000a96: SWAP2 00000a97: SWAP1 00000a98: DUP2 00000a99: DUP2 00000a9a: MSTORE 00000a9b: PUSH1 0x20 00000a9d: ADD 00000a9e: DUP3 00000a9f: DUP1 00000aa0: SLOAD 00000aa1: PUSH1 0x01 00000aa3: DUP2 00000aa4: PUSH1 0x01 00000aa6: AND 00000aa7: ISZERO 00000aa8: PUSH2 0x0100 00000aab: MUL 00000aac: SUB 00000aad: AND 00000aae: PUSH1 0x02 00000ab0: SWAP1 00000ab1: DIV 00000ab2: DUP1 00000ab3: ISZERO 00000ab4: PUSH2 0x0afe 00000ab7: JUMPI 00000ab8: DUP1 00000ab9: PUSH1 0x1f 00000abb: LT 00000abc: PUSH2 0x0ad3 00000abf: JUMPI 00000ac0: PUSH2 0x0100 00000ac3: DUP1 00000ac4: DUP4 00000ac5: SLOAD 00000ac6: DIV 00000ac7: MUL 00000ac8: DUP4 00000ac9: MSTORE 00000aca: SWAP2 00000acb: PUSH1 0x20 00000acd: ADD 00000ace: SWAP2 00000acf: PUSH2 0x0afe 00000ad2: JUMP 00000ad3: JUMPDEST 00000ad4: DUP3 00000ad5: ADD 00000ad6: SWAP2 00000ad7: SWAP1 00000ad8: PUSH1 0x00 00000ada: MSTORE 00000adb: PUSH1 0x20 00000add: PUSH1 0x00 00000adf: KECCAK256 00000ae0: SWAP1 00000ae1: JUMPDEST 00000ae2: DUP2 00000ae3: SLOAD 00000ae4: DUP2 00000ae5: MSTORE 00000ae6: SWAP1 00000ae7: PUSH1 0x01 00000ae9: ADD 00000aea: SWAP1 00000aeb: PUSH1 0x20 00000aed: ADD 00000aee: DUP1 00000aef: DUP4 00000af0: GT 00000af1: PUSH2 0x0ae1 00000af4: JUMPI 00000af5: DUP3 00000af6: SWAP1 00000af7: SUB 00000af8: PUSH1 0x1f 00000afa: AND 00000afb: DUP3 00000afc: ADD 00000afd: SWAP2 00000afe: JUMPDEST 00000aff: POP 00000b00: POP 00000b01: POP 00000b02: POP 00000b03: POP 00000b04: SWAP1 00000b05: POP 00000b06: SWAP1 00000b07: JUMP 00000b08: JUMPDEST 00000b09: PUSH1 0x00 00000b0b: PUSH2 0x0b1c 00000b0e: PUSH2 0x0b15 00000b11: PUSH2 0x220c 00000b14: JUMP 00000b15: JUMPDEST 00000b16: DUP5 00000b17: DUP5 00000b18: PUSH2 0x2214 00000b1b: JUMP 00000b1c: JUMPDEST 00000b1d: PUSH1 0x01 00000b1f: SWAP1 00000b20: POP 00000b21: SWAP3 00000b22: SWAP2 00000b23: POP 00000b24: POP 00000b25: JUMP 00000b26: JUMPDEST 00000b27: PUSH1 0x00 00000b29: PUSH1 0x67 00000b2b: SLOAD 00000b2c: SWAP1 00000b2d: POP 00000b2e: SWAP1 00000b2f: JUMP 00000b30: JUMPDEST 00000b31: PUSH1 0x00 00000b33: PUSH2 0x0b3d 00000b36: DUP5 00000b37: DUP5 00000b38: DUP5 00000b39: PUSH2 0x240b 00000b3c: JUMP 00000b3d: JUMPDEST 00000b3e: PUSH2 0x0bfe 00000b41: DUP5 00000b42: PUSH2 0x0b49 00000b45: PUSH2 0x220c 00000b48: JUMP 00000b49: JUMPDEST 00000b4a: PUSH2 0x0bf9 00000b4d: DUP6 00000b4e: PUSH1 0x40 00000b50: MLOAD 00000b51: DUP1 00000b52: PUSH1 0x60 00000b54: ADD 00000b55: PUSH1 0x40 00000b57: MSTORE 00000b58: DUP1 00000b59: PUSH1 0x28 00000b5b: DUP2 00000b5c: MSTORE 00000b5d: PUSH1 0x20 00000b5f: ADD 00000b60: PUSH2 0x3f71 00000b63: PUSH1 0x28 00000b65: SWAP2 00000b66: CODECOPY 00000b67: PUSH1 0x66 00000b69: PUSH1 0x00 00000b6b: DUP12 00000b6c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b81: AND 00000b82: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b97: AND 00000b98: DUP2 00000b99: MSTORE 00000b9a: PUSH1 0x20 00000b9c: ADD 00000b9d: SWAP1 00000b9e: DUP2 00000b9f: MSTORE 00000ba0: PUSH1 0x20 00000ba2: ADD 00000ba3: PUSH1 0x00 00000ba5: KECCAK256 00000ba6: PUSH1 0x00 00000ba8: PUSH2 0x0baf 00000bab: PUSH2 0x220c 00000bae: JUMP 00000baf: JUMPDEST 00000bb0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bc5: AND 00000bc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bdb: AND 00000bdc: DUP2 00000bdd: MSTORE 00000bde: PUSH1 0x20 00000be0: ADD 00000be1: SWAP1 00000be2: DUP2 00000be3: MSTORE 00000be4: PUSH1 0x20 00000be6: ADD 00000be7: PUSH1 0x00 00000be9: KECCAK256 00000bea: SLOAD 00000beb: PUSH2 0x26d0 00000bee: SWAP1 00000bef: SWAP3 00000bf0: SWAP2 00000bf1: SWAP1 00000bf2: PUSH4 0xffffffff 00000bf7: AND 00000bf8: JUMP 00000bf9: JUMPDEST 00000bfa: PUSH2 0x2214 00000bfd: JUMP 00000bfe: JUMPDEST 00000bff: PUSH1 0x01 00000c01: SWAP1 00000c02: POP 00000c03: SWAP4 00000c04: SWAP3 00000c05: POP 00000c06: POP 00000c07: POP 00000c08: JUMP 00000c09: JUMPDEST 00000c0a: PUSH1 0x08 00000c0c: DUP2 00000c0d: JUMP 00000c0e: JUMPDEST 00000c0f: PUSH1 0x9d 00000c11: PUSH1 0x01 00000c13: SWAP1 00000c14: SLOAD 00000c15: SWAP1 00000c16: PUSH2 0x0100 00000c19: EXP 00000c1a: SWAP1 00000c1b: DIV 00000c1c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c31: AND 00000c32: DUP2 00000c33: JUMP 00000c34: JUMPDEST 00000c35: PUSH1 0x08 00000c37: PUSH1 0xff 00000c39: AND 00000c3a: PUSH1 0x0a 00000c3c: EXP 00000c3d: PUSH3 0x989680 00000c41: MUL 00000c42: DUP2 00000c43: JUMP 00000c44: JUMPDEST 00000c45: PUSH1 0x00 00000c47: PUSH1 0x6a 00000c49: PUSH1 0x00 00000c4b: SWAP1 00000c4c: SLOAD 00000c4d: SWAP1 00000c4e: PUSH2 0x0100 00000c51: EXP 00000c52: SWAP1 00000c53: DIV 00000c54: PUSH1 0xff 00000c56: AND 00000c57: SWAP1 00000c58: POP 00000c59: SWAP1 00000c5a: JUMP 00000c5b: JUMPDEST 00000c5c: PUSH1 0x00 00000c5e: PUSH2 0x0d04 00000c61: PUSH2 0x0c68 00000c64: PUSH2 0x220c 00000c67: JUMP 00000c68: JUMPDEST 00000c69: DUP5 00000c6a: PUSH2 0x0cff 00000c6d: DUP6 00000c6e: PUSH1 0x66 00000c70: PUSH1 0x00 00000c72: PUSH2 0x0c79 00000c75: PUSH2 0x220c 00000c78: JUMP 00000c79: JUMPDEST 00000c7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c8f: AND 00000c90: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ca5: AND 00000ca6: DUP2 00000ca7: MSTORE 00000ca8: PUSH1 0x20 00000caa: ADD 00000cab: SWAP1 00000cac: DUP2 00000cad: MSTORE 00000cae: PUSH1 0x20 00000cb0: ADD 00000cb1: PUSH1 0x00 00000cb3: KECCAK256 00000cb4: PUSH1 0x00 00000cb6: DUP10 00000cb7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ccc: AND 00000ccd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ce2: AND 00000ce3: DUP2 00000ce4: MSTORE 00000ce5: PUSH1 0x20 00000ce7: ADD 00000ce8: SWAP1 00000ce9: DUP2 00000cea: MSTORE 00000ceb: PUSH1 0x20 00000ced: ADD 00000cee: PUSH1 0x00 00000cf0: KECCAK256 00000cf1: SLOAD 00000cf2: PUSH2 0x2790 00000cf5: SWAP1 00000cf6: SWAP2 00000cf7: SWAP1 00000cf8: PUSH4 0xffffffff 00000cfd: AND 00000cfe: JUMP 00000cff: JUMPDEST 00000d00: PUSH2 0x2214 00000d03: JUMP 00000d04: JUMPDEST 00000d05: PUSH1 0x01 00000d07: SWAP1 00000d08: POP 00000d09: SWAP3 00000d0a: SWAP2 00000d0b: POP 00000d0c: POP 00000d0d: JUMP 00000d0e: JUMPDEST 00000d0f: PUSH1 0x97 00000d11: PUSH1 0x01 00000d13: SWAP1 00000d14: SLOAD 00000d15: SWAP1 00000d16: PUSH2 0x0100 00000d19: EXP 00000d1a: SWAP1 00000d1b: DIV 00000d1c: PUSH1 0xff 00000d1e: AND 00000d1f: PUSH2 0x0d90 00000d22: JUMPI 00000d23: PUSH1 0x40 00000d25: MLOAD 00000d26: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000d47: DUP2 00000d48: MSTORE 00000d49: PUSH1 0x04 00000d4b: ADD 00000d4c: DUP1 00000d4d: DUP1 00000d4e: PUSH1 0x20 00000d50: ADD 00000d51: DUP3 00000d52: DUP2 00000d53: SUB 00000d54: DUP3 00000d55: MSTORE 00000d56: PUSH1 0x14 00000d58: DUP2 00000d59: MSTORE 00000d5a: PUSH1 0x20 00000d5c: ADD 00000d5d: DUP1 00000d5e: PUSH32 0x574158473a207265656e7472616e742063616c6c000000000000000000000000 00000d7f: DUP2 00000d80: MSTORE 00000d81: POP 00000d82: PUSH1 0x20 00000d84: ADD 00000d85: SWAP2 00000d86: POP 00000d87: POP 00000d88: PUSH1 0x40 00000d8a: MLOAD 00000d8b: DUP1 00000d8c: SWAP2 00000d8d: SUB 00000d8e: SWAP1 00000d8f: REVERT 00000d90: JUMPDEST 00000d91: PUSH1 0x00 00000d93: PUSH1 0x97 00000d95: PUSH1 0x01 00000d97: PUSH2 0x0100 00000d9a: EXP 00000d9b: DUP2 00000d9c: SLOAD 00000d9d: DUP2 00000d9e: PUSH1 0xff 00000da0: MUL 00000da1: NOT 00000da2: AND 00000da3: SWAP1 00000da4: DUP4 00000da5: ISZERO 00000da6: ISZERO 00000da7: MUL 00000da8: OR 00000da9: SWAP1 00000daa: SSTORE 00000dab: POP 00000dac: PUSH2 0x0dbb 00000daf: PUSH2 0x0db6 00000db2: PUSH2 0x220c 00000db5: JUMP 00000db6: JUMPDEST 00000db7: PUSH2 0x1876 00000dba: JUMP 00000dbb: JUMPDEST 00000dbc: DUP2 00000dbd: GT 00000dbe: ISZERO 00000dbf: PUSH2 0x0e30 00000dc2: JUMPI 00000dc3: PUSH1 0x40 00000dc5: MLOAD 00000dc6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000de7: DUP2 00000de8: MSTORE 00000de9: PUSH1 0x04 00000deb: ADD 00000dec: DUP1 00000ded: DUP1 00000dee: PUSH1 0x20 00000df0: ADD 00000df1: DUP3 00000df2: DUP2 00000df3: SUB 00000df4: DUP3 00000df5: MSTORE 00000df6: PUSH1 0x1a 00000df8: DUP2 00000df9: MSTORE 00000dfa: PUSH1 0x20 00000dfc: ADD 00000dfd: DUP1 00000dfe: PUSH32 0x574158473a20696e73756666696369656e742062616c616e6365000000000000 00000e1f: DUP2 00000e20: MSTORE 00000e21: POP 00000e22: PUSH1 0x20 00000e24: ADD 00000e25: SWAP2 00000e26: POP 00000e27: POP 00000e28: PUSH1 0x40 00000e2a: MLOAD 00000e2b: DUP1 00000e2c: SWAP2 00000e2d: SUB 00000e2e: SWAP1 00000e2f: REVERT 00000e30: JUMPDEST 00000e31: PUSH1 0x00 00000e33: PUSH2 0x0e76 00000e36: PUSH2 0x0e60 00000e39: PUSH1 0x97 00000e3b: PUSH1 0x02 00000e3d: SWAP1 00000e3e: SLOAD 00000e3f: SWAP1 00000e40: PUSH2 0x0100 00000e43: EXP 00000e44: SWAP1 00000e45: DIV 00000e46: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e5b: AND 00000e5c: PUSH2 0x1876 00000e5f: JUMP 00000e60: JUMPDEST 00000e61: PUSH2 0x0e68 00000e64: PUSH2 0x0b26 00000e67: JUMP 00000e68: JUMPDEST 00000e69: PUSH2 0x2818 00000e6c: SWAP1 00000e6d: SWAP2 00000e6e: SWAP1 00000e6f: PUSH4 0xffffffff 00000e74: AND 00000e75: JUMP 00000e76: JUMPDEST 00000e77: SWAP1 00000e78: POP 00000e79: DUP2 00000e7a: DUP2 00000e7b: LT 00000e7c: ISZERO 00000e7d: PUSH2 0x0ed1 00000e80: JUMPI 00000e81: PUSH1 0x40 00000e83: MLOAD 00000e84: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ea5: DUP2 00000ea6: MSTORE 00000ea7: PUSH1 0x04 00000ea9: ADD 00000eaa: DUP1 00000eab: DUP1 00000eac: PUSH1 0x20 00000eae: ADD 00000eaf: DUP3 00000eb0: DUP2 00000eb1: SUB 00000eb2: DUP3 00000eb3: MSTORE 00000eb4: PUSH1 0x42 00000eb6: DUP2 00000eb7: MSTORE 00000eb8: PUSH1 0x20 00000eba: ADD 00000ebb: DUP1 00000ebc: PUSH2 0x3ee8 00000ebf: PUSH1 0x42 00000ec1: SWAP2 00000ec2: CODECOPY 00000ec3: PUSH1 0x60 00000ec5: ADD 00000ec6: SWAP2 00000ec7: POP 00000ec8: POP 00000ec9: PUSH1 0x40 00000ecb: MLOAD 00000ecc: DUP1 00000ecd: SWAP2 00000ece: SUB 00000ecf: SWAP1 00000ed0: REVERT 00000ed1: JUMPDEST 00000ed2: PUSH1 0x00 00000ed4: PUSH1 0x98 00000ed6: PUSH1 0x00 00000ed8: SWAP1 00000ed9: SLOAD 00000eda: SWAP1 00000edb: PUSH2 0x0100 00000ede: EXP 00000edf: SWAP1 00000ee0: DIV 00000ee1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ef6: AND 00000ef7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f0c: AND 00000f0d: PUSH4 0x70a08231 00000f12: ADDRESS 00000f13: PUSH1 0x40 00000f15: MLOAD 00000f16: DUP3 00000f17: PUSH4 0xffffffff 00000f1c: AND 00000f1d: PUSH1 0xe0 00000f1f: SHL 00000f20: DUP2 00000f21: MSTORE 00000f22: PUSH1 0x04 00000f24: ADD 00000f25: DUP1 00000f26: DUP3 00000f27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f3c: AND 00000f3d: DUP2 00000f3e: MSTORE 00000f3f: PUSH1 0x20 00000f41: ADD 00000f42: SWAP2 00000f43: POP 00000f44: POP 00000f45: PUSH1 0x20 00000f47: PUSH1 0x40 00000f49: MLOAD 00000f4a: DUP1 00000f4b: DUP4 00000f4c: SUB 00000f4d: DUP2 00000f4e: DUP7 00000f4f: DUP1 00000f50: EXTCODESIZE 00000f51: ISZERO 00000f52: DUP1 00000f53: ISZERO 00000f54: PUSH2 0x0f5c 00000f57: JUMPI 00000f58: PUSH1 0x00 00000f5a: DUP1 00000f5b: REVERT 00000f5c: JUMPDEST 00000f5d: POP 00000f5e: GAS 00000f5f: STATICCALL 00000f60: ISZERO 00000f61: DUP1 00000f62: ISZERO 00000f63: PUSH2 0x0f70 00000f66: JUMPI 00000f67: RETURNDATASIZE 00000f68: PUSH1 0x00 00000f6a: DUP1 00000f6b: RETURNDATACOPY 00000f6c: RETURNDATASIZE 00000f6d: PUSH1 0x00 00000f6f: REVERT 00000f70: JUMPDEST 00000f71: POP 00000f72: POP 00000f73: POP 00000f74: POP 00000f75: PUSH1 0x40 00000f77: MLOAD 00000f78: RETURNDATASIZE 00000f79: PUSH1 0x20 00000f7b: DUP2 00000f7c: LT 00000f7d: ISZERO 00000f7e: PUSH2 0x0f86 00000f81: JUMPI 00000f82: PUSH1 0x00 00000f84: DUP1 00000f85: REVERT 00000f86: JUMPDEST 00000f87: DUP2 00000f88: ADD 00000f89: SWAP1 00000f8a: DUP1 00000f8b: DUP1 00000f8c: MLOAD 00000f8d: SWAP1 00000f8e: PUSH1 0x20 00000f90: ADD 00000f91: SWAP1 00000f92: SWAP3 00000f93: SWAP2 00000f94: SWAP1 00000f95: POP 00000f96: POP 00000f97: POP 00000f98: SWAP1 00000f99: POP 00000f9a: PUSH1 0x00 00000f9c: PUSH2 0x0fc0 00000f9f: DUP4 00000fa0: PUSH2 0x0fb2 00000fa3: DUP5 00000fa4: DUP8 00000fa5: PUSH2 0x2862 00000fa8: SWAP1 00000fa9: SWAP2 00000faa: SWAP1 00000fab: PUSH4 0xffffffff 00000fb0: AND 00000fb1: JUMP 00000fb2: JUMPDEST 00000fb3: PUSH2 0x28e8 00000fb6: SWAP1 00000fb7: SWAP2 00000fb8: SWAP1 00000fb9: PUSH4 0xffffffff 00000fbe: AND 00000fbf: JUMP 00000fc0: JUMPDEST 00000fc1: SWAP1 00000fc2: POP 00000fc3: PUSH1 0x00 00000fc5: ADDRESS 00000fc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fdb: AND 00000fdc: BALANCE 00000fdd: SWAP1 00000fde: POP 00000fdf: PUSH1 0x00 00000fe1: PUSH2 0x1005 00000fe4: DUP6 00000fe5: PUSH2 0x0ff7 00000fe8: DUP5 00000fe9: DUP10 00000fea: PUSH2 0x2862 00000fed: SWAP1 00000fee: SWAP2 00000fef: SWAP1 00000ff0: PUSH4 0xffffffff 00000ff5: AND 00000ff6: JUMP 00000ff7: JUMPDEST 00000ff8: PUSH2 0x28e8 00000ffb: SWAP1 00000ffc: SWAP2 00000ffd: SWAP1 00000ffe: PUSH4 0xffffffff 00001003: AND 00001004: JUMP 00001005: JUMPDEST 00001006: SWAP1 00001007: POP 00001008: PUSH1 0x00 0000100a: PUSH1 0x9d 0000100c: PUSH1 0x01 0000100e: SWAP1 0000100f: SLOAD 00001010: SWAP1 00001011: PUSH2 0x0100 00001014: EXP 00001015: SWAP1 00001016: DIV 00001017: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000102c: AND 0000102d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001042: AND 00001043: PUSH4 0x70a08231 00001048: ADDRESS 00001049: PUSH1 0x40 0000104b: MLOAD 0000104c: DUP3 0000104d: PUSH4 0xffffffff 00001052: AND 00001053: PUSH1 0xe0 00001055: SHL 00001056: DUP2 00001057: MSTORE 00001058: PUSH1 0x04 0000105a: ADD 0000105b: DUP1 0000105c: DUP3 0000105d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001072: AND 00001073: DUP2 00001074: MSTORE 00001075: PUSH1 0x20 00001077: ADD 00001078: SWAP2 00001079: POP 0000107a: POP 0000107b: PUSH1 0x20 0000107d: PUSH1 0x40 0000107f: MLOAD 00001080: DUP1 00001081: DUP4 00001082: SUB 00001083: DUP2 00001084: DUP7 00001085: DUP1 00001086: EXTCODESIZE 00001087: ISZERO 00001088: DUP1 00001089: ISZERO 0000108a: PUSH2 0x1092 0000108d: JUMPI 0000108e: PUSH1 0x00 00001090: DUP1 00001091: REVERT 00001092: JUMPDEST 00001093: POP 00001094: GAS 00001095: STATICCALL 00001096: ISZERO 00001097: DUP1 00001098: ISZERO 00001099: PUSH2 0x10a6 0000109c: JUMPI 0000109d: RETURNDATASIZE 0000109e: PUSH1 0x00 000010a0: DUP1 000010a1: RETURNDATACOPY 000010a2: RETURNDATASIZE 000010a3: PUSH1 0x00 000010a5: REVERT 000010a6: JUMPDEST 000010a7: POP 000010a8: POP 000010a9: POP 000010aa: POP 000010ab: PUSH1 0x40 000010ad: MLOAD 000010ae: RETURNDATASIZE 000010af: PUSH1 0x20 000010b1: DUP2 000010b2: LT 000010b3: ISZERO 000010b4: PUSH2 0x10bc 000010b7: JUMPI 000010b8: PUSH1 0x00 000010ba: DUP1 000010bb: REVERT 000010bc: JUMPDEST 000010bd: DUP2 000010be: ADD 000010bf: SWAP1 000010c0: DUP1 000010c1: DUP1 000010c2: MLOAD 000010c3: SWAP1 000010c4: PUSH1 0x20 000010c6: ADD 000010c7: SWAP1 000010c8: SWAP3 000010c9: SWAP2 000010ca: SWAP1 000010cb: POP 000010cc: POP 000010cd: POP 000010ce: SWAP1 000010cf: POP 000010d0: PUSH1 0x00 000010d2: PUSH2 0x10f6 000010d5: DUP8 000010d6: PUSH2 0x10e8 000010d9: DUP5 000010da: DUP12 000010db: PUSH2 0x2862 000010de: SWAP1 000010df: SWAP2 000010e0: SWAP1 000010e1: PUSH4 0xffffffff 000010e6: AND 000010e7: JUMP 000010e8: JUMPDEST 000010e9: PUSH2 0x28e8 000010ec: SWAP1 000010ed: SWAP2 000010ee: SWAP1 000010ef: PUSH4 0xffffffff 000010f4: AND 000010f5: JUMP 000010f6: JUMPDEST 000010f7: SWAP1 000010f8: POP 000010f9: PUSH2 0x1109 000010fc: PUSH2 0x1103 000010ff: PUSH2 0x220c 00001102: JUMP 00001103: JUMPDEST 00001104: DUP10 00001105: PUSH2 0x2932 00001108: JUMP 00001109: JUMPDEST 0000110a: PUSH1 0x00 0000110c: DUP4 0000110d: GT 0000110e: ISZERO 0000110f: PUSH2 0x1161 00001112: JUMPI 00001113: PUSH2 0x111a 00001116: PUSH2 0x220c 00001119: JUMP 0000111a: JUMPDEST 0000111b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001130: AND 00001131: PUSH2 0x08fc 00001134: DUP5 00001135: SWAP1 00001136: DUP2 00001137: ISZERO 00001138: MUL 00001139: SWAP1 0000113a: PUSH1 0x40 0000113c: MLOAD 0000113d: PUSH1 0x00 0000113f: PUSH1 0x40 00001141: MLOAD 00001142: DUP1 00001143: DUP4 00001144: SUB 00001145: DUP2 00001146: DUP6 00001147: DUP9 00001148: DUP9 00001149: CALL 0000114a: SWAP4 0000114b: POP 0000114c: POP 0000114d: POP 0000114e: POP 0000114f: ISZERO 00001150: DUP1 00001151: ISZERO 00001152: PUSH2 0x115f 00001155: JUMPI 00001156: RETURNDATASIZE 00001157: PUSH1 0x00 00001159: DUP1 0000115a: RETURNDATACOPY 0000115b: RETURNDATASIZE 0000115c: PUSH1 0x00 0000115e: REVERT 0000115f: JUMPDEST 00001160: POP 00001161: JUMPDEST 00001162: PUSH1 0x00 00001164: DUP6 00001165: GT 00001166: ISZERO 00001167: PUSH2 0x1180 0000116a: JUMPI 0000116b: PUSH2 0x117b 0000116e: PUSH2 0x1175 00001171: PUSH2 0x220c 00001174: JUMP 00001175: JUMPDEST 00001176: DUP7 00001177: PUSH2 0x2af8 0000117a: JUMP 0000117b: JUMPDEST 0000117c: DUP4 0000117d: ADD 0000117e: SWAP3 0000117f: POP 00001180: JUMPDEST 00001181: PUSH1 0x00 00001183: DUP2 00001184: GT 00001185: ISZERO 00001186: PUSH2 0x127b 00001189: JUMPI 0000118a: PUSH1 0x9d 0000118c: PUSH1 0x01 0000118e: SWAP1 0000118f: SLOAD 00001190: SWAP1 00001191: PUSH2 0x0100 00001194: EXP 00001195: SWAP1 00001196: DIV 00001197: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011ac: AND 000011ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011c2: AND 000011c3: PUSH4 0xa9059cbb 000011c8: PUSH2 0x11cf 000011cb: PUSH2 0x220c 000011ce: JUMP 000011cf: JUMPDEST 000011d0: DUP4 000011d1: PUSH1 0x40 000011d3: MLOAD 000011d4: DUP4 000011d5: PUSH4 0xffffffff 000011da: AND 000011db: PUSH1 0xe0 000011dd: SHL 000011de: DUP2 000011df: MSTORE 000011e0: PUSH1 0x04 000011e2: ADD 000011e3: DUP1 000011e4: DUP4 000011e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011fa: AND 000011fb: DUP2 000011fc: MSTORE 000011fd: PUSH1 0x20 000011ff: ADD 00001200: DUP3 00001201: DUP2 00001202: MSTORE 00001203: PUSH1 0x20 00001205: ADD 00001206: SWAP3 00001207: POP 00001208: POP 00001209: POP 0000120a: PUSH1 0x20 0000120c: PUSH1 0x40 0000120e: MLOAD 0000120f: DUP1 00001210: DUP4 00001211: SUB 00001212: DUP2 00001213: PUSH1 0x00 00001215: DUP8 00001216: DUP1 00001217: EXTCODESIZE 00001218: ISZERO 00001219: DUP1 0000121a: ISZERO 0000121b: PUSH2 0x1223 0000121e: JUMPI 0000121f: PUSH1 0x00 00001221: DUP1 00001222: REVERT 00001223: JUMPDEST 00001224: POP 00001225: GAS 00001226: CALL 00001227: ISZERO 00001228: DUP1 00001229: ISZERO 0000122a: PUSH2 0x1237 0000122d: JUMPI 0000122e: RETURNDATASIZE 0000122f: PUSH1 0x00 00001231: DUP1 00001232: RETURNDATACOPY 00001233: RETURNDATASIZE 00001234: PUSH1 0x00 00001236: REVERT 00001237: JUMPDEST 00001238: POP 00001239: POP 0000123a: POP 0000123b: POP 0000123c: PUSH1 0x40 0000123e: MLOAD 0000123f: RETURNDATASIZE 00001240: PUSH1 0x20 00001242: DUP2 00001243: LT 00001244: ISZERO 00001245: PUSH2 0x124d 00001248: JUMPI 00001249: PUSH1 0x00 0000124b: DUP1 0000124c: REVERT 0000124d: JUMPDEST 0000124e: DUP2 0000124f: ADD 00001250: SWAP1 00001251: DUP1 00001252: DUP1 00001253: MLOAD 00001254: SWAP1 00001255: PUSH1 0x20 00001257: ADD 00001258: SWAP1 00001259: SWAP3 0000125a: SWAP2 0000125b: SWAP1 0000125c: POP 0000125d: POP 0000125e: POP 0000125f: POP 00001260: PUSH2 0x1274 00001263: DUP2 00001264: PUSH1 0x9e 00001266: SLOAD 00001267: PUSH2 0x2790 0000126a: SWAP1 0000126b: SWAP2 0000126c: SWAP1 0000126d: PUSH4 0xffffffff 00001272: AND 00001273: JUMP 00001274: JUMPDEST 00001275: PUSH1 0x9e 00001277: DUP2 00001278: SWAP1 00001279: SSTORE 0000127a: POP 0000127b: JUMPDEST 0000127c: PUSH2 0x1290 0000127f: DUP4 00001280: PUSH1 0x9c 00001282: SLOAD 00001283: PUSH2 0x2790 00001286: SWAP1 00001287: SWAP2 00001288: SWAP1 00001289: PUSH4 0xffffffff 0000128e: AND 0000128f: JUMP 00001290: JUMPDEST 00001291: PUSH1 0x9c 00001293: DUP2 00001294: SWAP1 00001295: SSTORE 00001296: POP 00001297: PUSH2 0x129e 0000129a: PUSH2 0x220c 0000129d: JUMP 0000129e: JUMPDEST 0000129f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000012b4: AND 000012b5: PUSH32 0x4c60206a5c1de41f3376d1d60f0949d96cb682033c90b1c2d9d9a62d4c4120c0 000012d6: DUP10 000012d7: DUP6 000012d8: DUP5 000012d9: PUSH1 0x40 000012db: MLOAD 000012dc: DUP1 000012dd: DUP5 000012de: DUP2 000012df: MSTORE 000012e0: PUSH1 0x20 000012e2: ADD 000012e3: DUP4 000012e4: DUP2 000012e5: MSTORE 000012e6: PUSH1 0x20 000012e8: ADD 000012e9: DUP3 000012ea: DUP2 000012eb: MSTORE 000012ec: PUSH1 0x20 000012ee: ADD 000012ef: SWAP4 000012f0: POP 000012f1: POP 000012f2: POP 000012f3: POP 000012f4: PUSH1 0x40 000012f6: MLOAD 000012f7: DUP1 000012f8: SWAP2 000012f9: SUB 000012fa: SWAP1 000012fb: LOG2 000012fc: POP 000012fd: POP 000012fe: POP 000012ff: POP 00001300: POP 00001301: POP 00001302: POP 00001303: PUSH1 0x01 00001305: PUSH1 0x97 00001307: PUSH1 0x01 00001309: PUSH2 0x0100 0000130c: EXP 0000130d: DUP2 0000130e: SLOAD 0000130f: DUP2 00001310: PUSH1 0xff 00001312: MUL 00001313: NOT 00001314: AND 00001315: SWAP1 00001316: DUP4 00001317: ISZERO 00001318: ISZERO 00001319: MUL 0000131a: OR 0000131b: SWAP1 0000131c: SSTORE 0000131d: POP 0000131e: POP 0000131f: JUMP 00001320: JUMPDEST 00001321: DUP3 00001322: PUSH1 0x00 00001324: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001339: AND 0000133a: DUP2 0000133b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001350: AND 00001351: EQ 00001352: ISZERO 00001353: PUSH2 0x13c4 00001356: JUMPI 00001357: PUSH1 0x40 00001359: MLOAD 0000135a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000137b: DUP2 0000137c: MSTORE 0000137d: PUSH1 0x04 0000137f: ADD 00001380: DUP1 00001381: DUP1 00001382: PUSH1 0x20 00001384: ADD 00001385: DUP3 00001386: DUP2 00001387: SUB 00001388: DUP3 00001389: MSTORE 0000138a: PUSH1 0x14 0000138c: DUP2 0000138d: MSTORE 0000138e: PUSH1 0x20 00001390: ADD 00001391: DUP1 00001392: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000 000013b3: DUP2 000013b4: MSTORE 000013b5: POP 000013b6: PUSH1 0x20 000013b8: ADD 000013b9: SWAP2 000013ba: POP 000013bb: POP 000013bc: PUSH1 0x40 000013be: MLOAD 000013bf: DUP1 000013c0: SWAP2 000013c1: SUB 000013c2: SWAP1 000013c3: REVERT 000013c4: JUMPDEST 000013c5: DUP3 000013c6: PUSH1 0x00 000013c8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013dd: AND 000013de: DUP2 000013df: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013f4: AND 000013f5: EQ 000013f6: ISZERO 000013f7: PUSH2 0x1468 000013fa: JUMPI 000013fb: PUSH1 0x40 000013fd: MLOAD 000013fe: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000141f: DUP2 00001420: MSTORE 00001421: PUSH1 0x04 00001423: ADD 00001424: DUP1 00001425: DUP1 00001426: PUSH1 0x20 00001428: ADD 00001429: DUP3 0000142a: DUP2 0000142b: SUB 0000142c: DUP3 0000142d: MSTORE 0000142e: PUSH1 0x14 00001430: DUP2 00001431: MSTORE 00001432: PUSH1 0x20 00001434: ADD 00001435: DUP1 00001436: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000 00001457: DUP2 00001458: MSTORE 00001459: POP 0000145a: PUSH1 0x20 0000145c: ADD 0000145d: SWAP2 0000145e: POP 0000145f: POP 00001460: PUSH1 0x40 00001462: MLOAD 00001463: DUP1 00001464: SWAP2 00001465: SUB 00001466: SWAP1 00001467: REVERT 00001468: JUMPDEST 00001469: DUP3 0000146a: PUSH1 0x00 0000146c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001481: AND 00001482: DUP2 00001483: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001498: AND 00001499: EQ 0000149a: ISZERO 0000149b: PUSH2 0x150c 0000149e: JUMPI 0000149f: PUSH1 0x40 000014a1: MLOAD 000014a2: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000014c3: DUP2 000014c4: MSTORE 000014c5: PUSH1 0x04 000014c7: ADD 000014c8: DUP1 000014c9: DUP1 000014ca: PUSH1 0x20 000014cc: ADD 000014cd: DUP3 000014ce: DUP2 000014cf: SUB 000014d0: DUP3 000014d1: MSTORE 000014d2: PUSH1 0x14 000014d4: DUP2 000014d5: MSTORE 000014d6: PUSH1 0x20 000014d8: ADD 000014d9: DUP1 000014da: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000 000014fb: DUP2 000014fc: MSTORE 000014fd: POP 000014fe: PUSH1 0x20 00001500: ADD 00001501: SWAP2 00001502: POP 00001503: POP 00001504: PUSH1 0x40 00001506: MLOAD 00001507: DUP1 00001508: SWAP2 00001509: SUB 0000150a: SWAP1 0000150b: REVERT 0000150c: JUMPDEST 0000150d: PUSH1 0x97 0000150f: PUSH1 0x00 00001511: SWAP1 00001512: SLOAD 00001513: SWAP1 00001514: PUSH2 0x0100 00001517: EXP 00001518: SWAP1 00001519: DIV 0000151a: PUSH1 0xff 0000151c: AND 0000151d: ISZERO 0000151e: PUSH2 0x158f 00001521: JUMPI 00001522: PUSH1 0x40 00001524: MLOAD 00001525: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001546: DUP2 00001547: MSTORE 00001548: PUSH1 0x04 0000154a: ADD 0000154b: DUP1 0000154c: DUP1 0000154d: PUSH1 0x20 0000154f: ADD 00001550: DUP3 00001551: DUP2 00001552: SUB 00001553: DUP3 00001554: MSTORE 00001555: PUSH1 0x16 00001557: DUP2 00001558: MSTORE 00001559: PUSH1 0x20 0000155b: ADD 0000155c: DUP1 0000155d: PUSH32 0x574158473a20616c726561647920757067726164656400000000000000000000 0000157e: DUP2 0000157f: MSTORE 00001580: POP 00001581: PUSH1 0x20 00001583: ADD 00001584: SWAP2 00001585: POP 00001586: POP 00001587: PUSH1 0x40 00001589: MLOAD 0000158a: DUP1 0000158b: SWAP2 0000158c: SUB 0000158d: SWAP1 0000158e: REVERT 0000158f: JUMPDEST 00001590: PUSH1 0x01 00001592: PUSH1 0x97 00001594: PUSH1 0x00 00001596: PUSH2 0x0100 00001599: EXP 0000159a: DUP2 0000159b: SLOAD 0000159c: DUP2 0000159d: PUSH1 0xff 0000159f: MUL 000015a0: NOT 000015a1: AND 000015a2: SWAP1 000015a3: DUP4 000015a4: ISZERO 000015a5: ISZERO 000015a6: MUL 000015a7: OR 000015a8: SWAP1 000015a9: SSTORE 000015aa: POP 000015ab: PUSH1 0x01 000015ad: PUSH1 0x97 000015af: PUSH1 0x01 000015b1: PUSH2 0x0100 000015b4: EXP 000015b5: DUP2 000015b6: SLOAD 000015b7: DUP2 000015b8: PUSH1 0xff 000015ba: MUL 000015bb: NOT 000015bc: AND 000015bd: SWAP1 000015be: DUP4 000015bf: ISZERO 000015c0: ISZERO 000015c1: MUL 000015c2: OR 000015c3: SWAP1 000015c4: SSTORE 000015c5: POP 000015c6: DUP6 000015c7: PUSH1 0x97 000015c9: PUSH1 0x02 000015cb: PUSH2 0x0100 000015ce: EXP 000015cf: DUP2 000015d0: SLOAD 000015d1: DUP2 000015d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015e7: MUL 000015e8: NOT 000015e9: AND 000015ea: SWAP1 000015eb: DUP4 000015ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001601: AND 00001602: MUL 00001603: OR 00001604: SWAP1 00001605: SSTORE 00001606: POP 00001607: DUP5 00001608: PUSH1 0x98 0000160a: PUSH1 0x00 0000160c: PUSH2 0x0100 0000160f: EXP 00001610: DUP2 00001611: SLOAD 00001612: DUP2 00001613: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001628: MUL 00001629: NOT 0000162a: AND 0000162b: SWAP1 0000162c: DUP4 0000162d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001642: AND 00001643: MUL 00001644: OR 00001645: SWAP1 00001646: SSTORE 00001647: POP 00001648: DUP4 00001649: PUSH1 0x9a 0000164b: PUSH1 0x00 0000164d: PUSH2 0x0100 00001650: EXP 00001651: DUP2 00001652: SLOAD 00001653: DUP2 00001654: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001669: MUL 0000166a: NOT 0000166b: AND 0000166c: SWAP1 0000166d: DUP4 0000166e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001683: AND 00001684: MUL 00001685: OR 00001686: SWAP1 00001687: SSTORE 00001688: POP 00001689: PUSH1 0x00 0000168b: PUSH1 0x9c 0000168d: DUP2 0000168e: SWAP1 0000168f: SSTORE 00001690: POP 00001691: PUSH1 0x60 00001693: PUSH1 0x02 00001695: PUSH8 0xffffffffffffffff 0000169e: DUP2 0000169f: GT 000016a0: DUP1 000016a1: ISZERO 000016a2: PUSH2 0x16aa 000016a5: JUMPI 000016a6: PUSH1 0x00 000016a8: DUP1 000016a9: REVERT 000016aa: JUMPDEST 000016ab: POP 000016ac: PUSH1 0x40 000016ae: MLOAD 000016af: SWAP1 000016b0: DUP1 000016b1: DUP3 000016b2: MSTORE 000016b3: DUP1 000016b4: PUSH1 0x20 000016b6: MUL 000016b7: PUSH1 0x20 000016b9: ADD 000016ba: DUP3 000016bb: ADD 000016bc: PUSH1 0x40 000016be: MSTORE 000016bf: DUP1 000016c0: ISZERO 000016c1: PUSH2 0x16d9 000016c4: JUMPI 000016c5: DUP2 000016c6: PUSH1 0x20 000016c8: ADD 000016c9: PUSH1 0x20 000016cb: DUP3 000016cc: MUL 000016cd: DUP1 000016ce: CALLDATASIZE 000016cf: DUP4 000016d0: CALLDATACOPY 000016d1: DUP1 000016d2: DUP3 000016d3: ADD 000016d4: SWAP2 000016d5: POP 000016d6: POP 000016d7: SWAP1 000016d8: POP 000016d9: JUMPDEST 000016da: POP 000016db: SWAP1 000016dc: POP 000016dd: PUSH1 0x98 000016df: PUSH1 0x00 000016e1: SWAP1 000016e2: SLOAD 000016e3: SWAP1 000016e4: PUSH2 0x0100 000016e7: EXP 000016e8: SWAP1 000016e9: DIV 000016ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016ff: AND 00001700: DUP2 00001701: PUSH1 0x00 00001703: DUP2 00001704: MLOAD 00001705: DUP2 00001706: LT 00001707: PUSH2 0x170c 0000170a: JUMPI 0000170b: INVALID 0000170c: JUMPDEST 0000170d: PUSH1 0x20 0000170f: MUL 00001710: PUSH1 0x20 00001712: ADD 00001713: ADD 00001714: SWAP1 00001715: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000172a: AND 0000172b: SWAP1 0000172c: DUP2 0000172d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001742: AND 00001743: DUP2 00001744: MSTORE 00001745: POP 00001746: POP 00001747: PUSH1 0x9a 00001749: PUSH1 0x00 0000174b: SWAP1 0000174c: SLOAD 0000174d: SWAP1 0000174e: PUSH2 0x0100 00001751: EXP 00001752: SWAP1 00001753: DIV 00001754: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001769: AND 0000176a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000177f: AND 00001780: PUSH4 0xad5c4648 00001785: PUSH1 0x40 00001787: MLOAD 00001788: DUP2 00001789: PUSH4 0xffffffff 0000178e: AND 0000178f: PUSH1 0xe0 00001791: SHL 00001792: DUP2 00001793: MSTORE 00001794: PUSH1 0x04 00001796: ADD 00001797: PUSH1 0x20 00001799: PUSH1 0x40 0000179b: MLOAD 0000179c: DUP1 0000179d: DUP4 0000179e: SUB 0000179f: DUP2 000017a0: DUP7 000017a1: DUP1 000017a2: EXTCODESIZE 000017a3: ISZERO 000017a4: DUP1 000017a5: ISZERO 000017a6: PUSH2 0x17ae 000017a9: JUMPI 000017aa: PUSH1 0x00 000017ac: DUP1 000017ad: REVERT 000017ae: JUMPDEST 000017af: POP 000017b0: GAS 000017b1: STATICCALL 000017b2: ISZERO 000017b3: DUP1 000017b4: ISZERO 000017b5: PUSH2 0x17c2 000017b8: JUMPI 000017b9: RETURNDATASIZE 000017ba: PUSH1 0x00 000017bc: DUP1 000017bd: RETURNDATACOPY 000017be: RETURNDATASIZE 000017bf: PUSH1 0x00 000017c1: REVERT 000017c2: JUMPDEST 000017c3: POP 000017c4: POP 000017c5: POP 000017c6: POP 000017c7: PUSH1 0x40 000017c9: MLOAD 000017ca: RETURNDATASIZE 000017cb: PUSH1 0x20 000017cd: DUP2 000017ce: LT 000017cf: ISZERO 000017d0: PUSH2 0x17d8 000017d3: JUMPI 000017d4: PUSH1 0x00 000017d6: DUP1 000017d7: REVERT 000017d8: JUMPDEST 000017d9: DUP2 000017da: ADD 000017db: SWAP1 000017dc: DUP1 000017dd: DUP1 000017de: MLOAD 000017df: SWAP1 000017e0: PUSH1 0x20 000017e2: ADD 000017e3: SWAP1 000017e4: SWAP3 000017e5: SWAP2 000017e6: SWAP1 000017e7: POP 000017e8: POP 000017e9: POP 000017ea: DUP2 000017eb: PUSH1 0x01 000017ed: DUP2 000017ee: MLOAD 000017ef: DUP2 000017f0: LT 000017f1: PUSH2 0x17f6 000017f4: JUMPI 000017f5: INVALID 000017f6: JUMPDEST 000017f7: PUSH1 0x20 000017f9: MUL 000017fa: PUSH1 0x20 000017fc: ADD 000017fd: ADD 000017fe: SWAP1 000017ff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001814: AND 00001815: SWAP1 00001816: DUP2 00001817: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000182c: AND 0000182d: DUP2 0000182e: MSTORE 0000182f: POP 00001830: POP 00001831: DUP1 00001832: PUSH1 0x9b 00001834: SWAP1 00001835: DUP1 00001836: MLOAD 00001837: SWAP1 00001838: PUSH1 0x20 0000183a: ADD 0000183b: SWAP1 0000183c: PUSH2 0x1846 0000183f: SWAP3 00001840: SWAP2 00001841: SWAP1 00001842: PUSH2 0x3d1e 00001845: JUMP 00001846: JUMPDEST 00001847: POP 00001848: POP 00001849: POP 0000184a: POP 0000184b: POP 0000184c: POP 0000184d: POP 0000184e: POP 0000184f: JUMP 00001850: JUMPDEST 00001851: PUSH1 0x99 00001853: PUSH1 0x00 00001855: SWAP1 00001856: SLOAD 00001857: SWAP1 00001858: PUSH2 0x0100 0000185b: EXP 0000185c: SWAP1 0000185d: DIV 0000185e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001873: AND 00001874: DUP2 00001875: JUMP 00001876: JUMPDEST 00001877: PUSH1 0x00 00001879: PUSH1 0x65 0000187b: PUSH1 0x00 0000187d: DUP4 0000187e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001893: AND 00001894: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018a9: AND 000018aa: DUP2 000018ab: MSTORE 000018ac: PUSH1 0x20 000018ae: ADD 000018af: SWAP1 000018b0: DUP2 000018b1: MSTORE 000018b2: PUSH1 0x20 000018b4: ADD 000018b5: PUSH1 0x00 000018b7: KECCAK256 000018b8: SLOAD 000018b9: SWAP1 000018ba: POP 000018bb: SWAP2 000018bc: SWAP1 000018bd: POP 000018be: JUMP 000018bf: JUMPDEST 000018c0: PUSH1 0x9e 000018c2: SLOAD 000018c3: DUP2 000018c4: JUMP 000018c5: JUMPDEST 000018c6: PUSH1 0x9a 000018c8: PUSH1 0x00 000018ca: SWAP1 000018cb: SLOAD 000018cc: SWAP1 000018cd: PUSH2 0x0100 000018d0: EXP 000018d1: SWAP1 000018d2: DIV 000018d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018e8: AND 000018e9: DUP2 000018ea: JUMP 000018eb: JUMPDEST 000018ec: PUSH1 0x60 000018ee: PUSH1 0x69 000018f0: DUP1 000018f1: SLOAD 000018f2: PUSH1 0x01 000018f4: DUP2 000018f5: PUSH1 0x01 000018f7: AND 000018f8: ISZERO 000018f9: PUSH2 0x0100 000018fc: MUL 000018fd: SUB 000018fe: AND 000018ff: PUSH1 0x02 00001901: SWAP1 00001902: DIV 00001903: DUP1 00001904: PUSH1 0x1f 00001906: ADD 00001907: PUSH1 0x20 00001909: DUP1 0000190a: SWAP2 0000190b: DIV 0000190c: MUL 0000190d: PUSH1 0x20 0000190f: ADD 00001910: PUSH1 0x40 00001912: MLOAD 00001913: SWAP1 00001914: DUP2 00001915: ADD 00001916: PUSH1 0x40 00001918: MSTORE 00001919: DUP1 0000191a: SWAP3 0000191b: SWAP2 0000191c: SWAP1 0000191d: DUP2 0000191e: DUP2 0000191f: MSTORE 00001920: PUSH1 0x20 00001922: ADD 00001923: DUP3 00001924: DUP1 00001925: SLOAD 00001926: PUSH1 0x01 00001928: DUP2 00001929: PUSH1 0x01 0000192b: AND 0000192c: ISZERO 0000192d: PUSH2 0x0100 00001930: MUL 00001931: SUB 00001932: AND 00001933: PUSH1 0x02 00001935: SWAP1 00001936: DIV 00001937: DUP1 00001938: ISZERO 00001939: PUSH2 0x1983 0000193c: JUMPI 0000193d: DUP1 0000193e: PUSH1 0x1f 00001940: LT 00001941: PUSH2 0x1958 00001944: JUMPI 00001945: PUSH2 0x0100 00001948: DUP1 00001949: DUP4 0000194a: SLOAD 0000194b: DIV 0000194c: MUL 0000194d: DUP4 0000194e: MSTORE 0000194f: SWAP2 00001950: PUSH1 0x20 00001952: ADD 00001953: SWAP2 00001954: PUSH2 0x1983 00001957: JUMP 00001958: JUMPDEST 00001959: DUP3 0000195a: ADD 0000195b: SWAP2 0000195c: SWAP1 0000195d: PUSH1 0x00 0000195f: MSTORE 00001960: PUSH1 0x20 00001962: PUSH1 0x00 00001964: KECCAK256 00001965: SWAP1 00001966: JUMPDEST 00001967: DUP2 00001968: SLOAD 00001969: DUP2 0000196a: MSTORE 0000196b: SWAP1 0000196c: PUSH1 0x01 0000196e: ADD 0000196f: SWAP1 00001970: PUSH1 0x20 00001972: ADD 00001973: DUP1 00001974: DUP4 00001975: GT 00001976: PUSH2 0x1966 00001979: JUMPI 0000197a: DUP3 0000197b: SWAP1 0000197c: SUB 0000197d: PUSH1 0x1f 0000197f: AND 00001980: DUP3 00001981: ADD 00001982: SWAP2 00001983: JUMPDEST 00001984: POP 00001985: POP 00001986: POP 00001987: POP 00001988: POP 00001989: SWAP1 0000198a: POP 0000198b: SWAP1 0000198c: JUMP 0000198d: JUMPDEST 0000198e: PUSH1 0x00 00001990: PUSH2 0x1a50 00001993: PUSH2 0x199a 00001996: PUSH2 0x220c 00001999: JUMP 0000199a: JUMPDEST 0000199b: DUP5 0000199c: PUSH2 0x1a4b 0000199f: DUP6 000019a0: PUSH1 0x40 000019a2: MLOAD 000019a3: DUP1 000019a4: PUSH1 0x60 000019a6: ADD 000019a7: PUSH1 0x40 000019a9: MSTORE 000019aa: DUP1 000019ab: PUSH1 0x25 000019ad: DUP2 000019ae: MSTORE 000019af: PUSH1 0x20 000019b1: ADD 000019b2: PUSH2 0x40b8 000019b5: PUSH1 0x25 000019b7: SWAP2 000019b8: CODECOPY 000019b9: PUSH1 0x66 000019bb: PUSH1 0x00 000019bd: PUSH2 0x19c4 000019c0: PUSH2 0x220c 000019c3: JUMP 000019c4: JUMPDEST 000019c5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019da: AND 000019db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019f0: AND 000019f1: DUP2 000019f2: MSTORE 000019f3: PUSH1 0x20 000019f5: ADD 000019f6: SWAP1 000019f7: DUP2 000019f8: MSTORE 000019f9: PUSH1 0x20 000019fb: ADD 000019fc: PUSH1 0x00 000019fe: KECCAK256 000019ff: PUSH1 0x00 00001a01: DUP11 00001a02: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a17: AND 00001a18: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a2d: AND 00001a2e: DUP2 00001a2f: MSTORE 00001a30: PUSH1 0x20 00001a32: ADD 00001a33: SWAP1 00001a34: DUP2 00001a35: MSTORE 00001a36: PUSH1 0x20 00001a38: ADD 00001a39: PUSH1 0x00 00001a3b: KECCAK256 00001a3c: SLOAD 00001a3d: PUSH2 0x26d0 00001a40: SWAP1 00001a41: SWAP3 00001a42: SWAP2 00001a43: SWAP1 00001a44: PUSH4 0xffffffff 00001a49: AND 00001a4a: JUMP 00001a4b: JUMPDEST 00001a4c: PUSH2 0x2214 00001a4f: JUMP 00001a50: JUMPDEST 00001a51: PUSH1 0x01 00001a53: SWAP1 00001a54: POP 00001a55: SWAP3 00001a56: SWAP2 00001a57: POP 00001a58: POP 00001a59: JUMP 00001a5a: JUMPDEST 00001a5b: PUSH1 0x00 00001a5d: PUSH2 0x1a6e 00001a60: PUSH2 0x1a67 00001a63: PUSH2 0x220c 00001a66: JUMP 00001a67: JUMPDEST 00001a68: DUP5 00001a69: DUP5 00001a6a: PUSH2 0x240b 00001a6d: JUMP 00001a6e: JUMPDEST 00001a6f: PUSH1 0x01 00001a71: SWAP1 00001a72: POP 00001a73: SWAP3 00001a74: SWAP2 00001a75: POP 00001a76: POP 00001a77: JUMP 00001a78: JUMPDEST 00001a79: PUSH1 0x9c 00001a7b: SLOAD 00001a7c: DUP2 00001a7d: JUMP 00001a7e: JUMPDEST 00001a7f: PUSH1 0x00 00001a81: PUSH1 0x01 00001a83: SWAP1 00001a84: SLOAD 00001a85: SWAP1 00001a86: PUSH2 0x0100 00001a89: EXP 00001a8a: SWAP1 00001a8b: DIV 00001a8c: PUSH1 0xff 00001a8e: AND 00001a8f: DUP1 00001a90: PUSH2 0x1a9d 00001a93: JUMPI 00001a94: POP 00001a95: PUSH2 0x1a9c 00001a98: PUSH2 0x2d94 00001a9b: JUMP 00001a9c: JUMPDEST 00001a9d: JUMPDEST 00001a9e: DUP1 00001a9f: PUSH2 0x1ab3 00001aa2: JUMPI 00001aa3: POP 00001aa4: PUSH1 0x00 00001aa6: DUP1 00001aa7: SLOAD 00001aa8: SWAP1 00001aa9: PUSH2 0x0100 00001aac: EXP 00001aad: SWAP1 00001aae: DIV 00001aaf: PUSH1 0xff 00001ab1: AND 00001ab2: ISZERO 00001ab3: JUMPDEST 00001ab4: PUSH2 0x1b08 00001ab7: JUMPI 00001ab8: PUSH1 0x40 00001aba: MLOAD 00001abb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001adc: DUP2 00001add: MSTORE 00001ade: PUSH1 0x04 00001ae0: ADD 00001ae1: DUP1 00001ae2: DUP1 00001ae3: PUSH1 0x20 00001ae5: ADD 00001ae6: DUP3 00001ae7: DUP2 00001ae8: SUB 00001ae9: DUP3 00001aea: MSTORE 00001aeb: PUSH1 0x2e 00001aed: DUP2 00001aee: MSTORE 00001aef: PUSH1 0x20 00001af1: ADD 00001af2: DUP1 00001af3: PUSH2 0x3f99 00001af6: PUSH1 0x2e 00001af8: SWAP2 00001af9: CODECOPY 00001afa: PUSH1 0x40 00001afc: ADD 00001afd: SWAP2 00001afe: POP 00001aff: POP 00001b00: PUSH1 0x40 00001b02: MLOAD 00001b03: DUP1 00001b04: SWAP2 00001b05: SUB 00001b06: SWAP1 00001b07: REVERT 00001b08: JUMPDEST 00001b09: PUSH1 0x00 00001b0b: DUP1 00001b0c: PUSH1 0x01 00001b0e: SWAP1 00001b0f: SLOAD 00001b10: SWAP1 00001b11: PUSH2 0x0100 00001b14: EXP 00001b15: SWAP1 00001b16: DIV 00001b17: PUSH1 0xff 00001b19: AND 00001b1a: ISZERO 00001b1b: SWAP1 00001b1c: POP 00001b1d: DUP1 00001b1e: ISZERO 00001b1f: PUSH2 0x1b58 00001b22: JUMPI 00001b23: PUSH1 0x01 00001b25: PUSH1 0x00 00001b27: PUSH1 0x01 00001b29: PUSH2 0x0100 00001b2c: EXP 00001b2d: DUP2 00001b2e: SLOAD 00001b2f: DUP2 00001b30: PUSH1 0xff 00001b32: MUL 00001b33: NOT 00001b34: AND 00001b35: SWAP1 00001b36: DUP4 00001b37: ISZERO 00001b38: ISZERO 00001b39: MUL 00001b3a: OR 00001b3b: SWAP1 00001b3c: SSTORE 00001b3d: POP 00001b3e: PUSH1 0x01 00001b40: PUSH1 0x00 00001b42: DUP1 00001b43: PUSH2 0x0100 00001b46: EXP 00001b47: DUP2 00001b48: SLOAD 00001b49: DUP2 00001b4a: PUSH1 0xff 00001b4c: MUL 00001b4d: NOT 00001b4e: AND 00001b4f: SWAP1 00001b50: DUP4 00001b51: ISZERO 00001b52: ISZERO 00001b53: MUL 00001b54: OR 00001b55: SWAP1 00001b56: SSTORE 00001b57: POP 00001b58: JUMPDEST 00001b59: PUSH2 0x1bcc 00001b5c: PUSH1 0x40 00001b5e: MLOAD 00001b5f: DUP1 00001b60: PUSH1 0x40 00001b62: ADD 00001b63: PUSH1 0x40 00001b65: MSTORE 00001b66: DUP1 00001b67: PUSH1 0x14 00001b69: DUP2 00001b6a: MSTORE 00001b6b: PUSH1 0x20 00001b6d: ADD 00001b6e: PUSH32 0x57415820476f7665726e616e636520546f6b656e000000000000000000000000 00001b8f: DUP2 00001b90: MSTORE 00001b91: POP 00001b92: PUSH1 0x40 00001b94: MLOAD 00001b95: DUP1 00001b96: PUSH1 0x40 00001b98: ADD 00001b99: PUSH1 0x40 00001b9b: MSTORE 00001b9c: DUP1 00001b9d: PUSH1 0x04 00001b9f: DUP2 00001ba0: MSTORE 00001ba1: PUSH1 0x20 00001ba3: ADD 00001ba4: PUSH32 0x5741584700000000000000000000000000000000000000000000000000000000 00001bc5: DUP2 00001bc6: MSTORE 00001bc7: POP 00001bc8: PUSH2 0x2dab 00001bcb: JUMP 00001bcc: JUMPDEST 00001bcd: PUSH2 0x1bd6 00001bd0: PUSH1 0x08 00001bd2: PUSH2 0x2ebd 00001bd5: JUMP 00001bd6: JUMPDEST 00001bd7: PUSH2 0x1bec 00001bda: DUP3 00001bdb: PUSH1 0x08 00001bdd: PUSH1 0xff 00001bdf: AND 00001be0: PUSH1 0x0a 00001be2: EXP 00001be3: PUSH3 0x989680 00001be7: MUL 00001be8: PUSH2 0x2edb 00001beb: JUMP 00001bec: JUMPDEST 00001bed: PUSH1 0x08 00001bef: PUSH1 0xff 00001bf1: AND 00001bf2: PUSH1 0x0a 00001bf4: EXP 00001bf5: PUSH3 0x989680 00001bf9: MUL 00001bfa: PUSH2 0x1c01 00001bfd: PUSH2 0x0b26 00001c00: JUMP 00001c01: JUMPDEST 00001c02: EQ 00001c03: PUSH2 0x1c57 00001c06: JUMPI 00001c07: PUSH1 0x40 00001c09: MLOAD 00001c0a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001c2b: DUP2 00001c2c: MSTORE 00001c2d: PUSH1 0x04 00001c2f: ADD 00001c30: DUP1 00001c31: DUP1 00001c32: PUSH1 0x20 00001c34: ADD 00001c35: DUP3 00001c36: DUP2 00001c37: SUB 00001c38: DUP3 00001c39: MSTORE 00001c3a: PUSH1 0x27 00001c3c: DUP2 00001c3d: MSTORE 00001c3e: PUSH1 0x20 00001c40: ADD 00001c41: DUP1 00001c42: PUSH2 0x4031 00001c45: PUSH1 0x27 00001c47: SWAP2 00001c48: CODECOPY 00001c49: PUSH1 0x40 00001c4b: ADD 00001c4c: SWAP2 00001c4d: POP 00001c4e: POP 00001c4f: PUSH1 0x40 00001c51: MLOAD 00001c52: DUP1 00001c53: SWAP2 00001c54: SUB 00001c55: SWAP1 00001c56: REVERT 00001c57: JUMPDEST 00001c58: DUP1 00001c59: ISZERO 00001c5a: PUSH2 0x1c78 00001c5d: JUMPI 00001c5e: PUSH1 0x00 00001c60: DUP1 00001c61: PUSH1 0x01 00001c63: PUSH2 0x0100 00001c66: EXP 00001c67: DUP2 00001c68: SLOAD 00001c69: DUP2 00001c6a: PUSH1 0xff 00001c6c: MUL 00001c6d: NOT 00001c6e: AND 00001c6f: SWAP1 00001c70: DUP4 00001c71: ISZERO 00001c72: ISZERO 00001c73: MUL 00001c74: OR 00001c75: SWAP1 00001c76: SSTORE 00001c77: POP 00001c78: JUMPDEST 00001c79: POP 00001c7a: POP 00001c7b: JUMP 00001c7c: JUMPDEST 00001c7d: PUSH1 0x00 00001c7f: DUP1 00001c80: PUSH1 0x00 00001c82: PUSH2 0x1cc5 00001c85: PUSH2 0x1caf 00001c88: PUSH1 0x97 00001c8a: PUSH1 0x02 00001c8c: SWAP1 00001c8d: SLOAD 00001c8e: SWAP1 00001c8f: PUSH2 0x0100 00001c92: EXP 00001c93: SWAP1 00001c94: DIV 00001c95: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001caa: AND 00001cab: PUSH2 0x1876 00001cae: JUMP 00001caf: JUMPDEST 00001cb0: PUSH2 0x1cb7 00001cb3: PUSH2 0x0b26 00001cb6: JUMP 00001cb7: JUMPDEST 00001cb8: PUSH2 0x2818 00001cbb: SWAP1 00001cbc: SWAP2 00001cbd: SWAP1 00001cbe: PUSH4 0xffffffff 00001cc3: AND 00001cc4: JUMP 00001cc5: JUMPDEST 00001cc6: SWAP1 00001cc7: POP 00001cc8: DUP4 00001cc9: DUP2 00001cca: LT 00001ccb: ISZERO 00001ccc: PUSH2 0x1d20 00001ccf: JUMPI 00001cd0: PUSH1 0x40 00001cd2: MLOAD 00001cd3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001cf4: DUP2 00001cf5: MSTORE 00001cf6: PUSH1 0x04 00001cf8: ADD 00001cf9: DUP1 00001cfa: DUP1 00001cfb: PUSH1 0x20 00001cfd: ADD 00001cfe: DUP3 00001cff: DUP2 00001d00: SUB 00001d01: DUP3 00001d02: MSTORE 00001d03: PUSH1 0x42 00001d05: DUP2 00001d06: MSTORE 00001d07: PUSH1 0x20 00001d09: ADD 00001d0a: DUP1 00001d0b: PUSH2 0x3ee8 00001d0e: PUSH1 0x42 00001d10: SWAP2 00001d11: CODECOPY 00001d12: PUSH1 0x60 00001d14: ADD 00001d15: SWAP2 00001d16: POP 00001d17: POP 00001d18: PUSH1 0x40 00001d1a: MLOAD 00001d1b: DUP1 00001d1c: SWAP2 00001d1d: SUB 00001d1e: SWAP1 00001d1f: REVERT 00001d20: JUMPDEST 00001d21: PUSH1 0x00 00001d23: PUSH1 0x98 00001d25: PUSH1 0x00 00001d27: SWAP1 00001d28: SLOAD 00001d29: SWAP1 00001d2a: PUSH2 0x0100 00001d2d: EXP 00001d2e: SWAP1 00001d2f: DIV 00001d30: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d45: AND 00001d46: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d5b: AND 00001d5c: PUSH4 0x70a08231 00001d61: ADDRESS 00001d62: PUSH1 0x40 00001d64: MLOAD 00001d65: DUP3 00001d66: PUSH4 0xffffffff 00001d6b: AND 00001d6c: PUSH1 0xe0 00001d6e: SHL 00001d6f: DUP2 00001d70: MSTORE 00001d71: PUSH1 0x04 00001d73: ADD 00001d74: DUP1 00001d75: DUP3 00001d76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d8b: AND 00001d8c: DUP2 00001d8d: MSTORE 00001d8e: PUSH1 0x20 00001d90: ADD 00001d91: SWAP2 00001d92: POP 00001d93: POP 00001d94: PUSH1 0x20 00001d96: PUSH1 0x40 00001d98: MLOAD 00001d99: DUP1 00001d9a: DUP4 00001d9b: SUB 00001d9c: DUP2 00001d9d: DUP7 00001d9e: DUP1 00001d9f: EXTCODESIZE 00001da0: ISZERO 00001da1: DUP1 00001da2: ISZERO 00001da3: PUSH2 0x1dab 00001da6: JUMPI 00001da7: PUSH1 0x00 00001da9: DUP1 00001daa: REVERT 00001dab: JUMPDEST 00001dac: POP 00001dad: GAS 00001dae: STATICCALL 00001daf: ISZERO 00001db0: DUP1 00001db1: ISZERO 00001db2: PUSH2 0x1dbf 00001db5: JUMPI 00001db6: RETURNDATASIZE 00001db7: PUSH1 0x00 00001db9: DUP1 00001dba: RETURNDATACOPY 00001dbb: RETURNDATASIZE 00001dbc: PUSH1 0x00 00001dbe: REVERT 00001dbf: JUMPDEST 00001dc0: POP 00001dc1: POP 00001dc2: POP 00001dc3: POP 00001dc4: PUSH1 0x40 00001dc6: MLOAD 00001dc7: RETURNDATASIZE 00001dc8: PUSH1 0x20 00001dca: DUP2 00001dcb: LT 00001dcc: ISZERO 00001dcd: PUSH2 0x1dd5 00001dd0: JUMPI 00001dd1: PUSH1 0x00 00001dd3: DUP1 00001dd4: REVERT 00001dd5: JUMPDEST 00001dd6: DUP2 00001dd7: ADD 00001dd8: SWAP1 00001dd9: DUP1 00001dda: DUP1 00001ddb: MLOAD 00001ddc: SWAP1 00001ddd: PUSH1 0x20 00001ddf: ADD 00001de0: SWAP1 00001de1: SWAP3 00001de2: SWAP2 00001de3: SWAP1 00001de4: POP 00001de5: POP 00001de6: POP 00001de7: SWAP1 00001de8: POP 00001de9: PUSH1 0x00 00001deb: PUSH2 0x1e0f 00001dee: DUP4 00001def: PUSH2 0x1e01 00001df2: DUP5 00001df3: DUP10 00001df4: PUSH2 0x2862 00001df7: SWAP1 00001df8: SWAP2 00001df9: SWAP1 00001dfa: PUSH4 0xffffffff 00001dff: AND 00001e00: JUMP 00001e01: JUMPDEST 00001e02: PUSH2 0x28e8 00001e05: SWAP1 00001e06: SWAP2 00001e07: SWAP1 00001e08: PUSH4 0xffffffff 00001e0d: AND 00001e0e: JUMP 00001e0f: JUMPDEST 00001e10: SWAP1 00001e11: POP 00001e12: PUSH1 0x00 00001e14: ADDRESS 00001e15: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e2a: AND 00001e2b: BALANCE 00001e2c: SWAP1 00001e2d: POP 00001e2e: PUSH2 0x1e52 00001e31: DUP5 00001e32: PUSH2 0x1e44 00001e35: DUP4 00001e36: DUP11 00001e37: PUSH2 0x2862 00001e3a: SWAP1 00001e3b: SWAP2 00001e3c: SWAP1 00001e3d: PUSH4 0xffffffff 00001e42: AND 00001e43: JUMP 00001e44: JUMPDEST 00001e45: PUSH2 0x28e8 00001e48: SWAP1 00001e49: SWAP2 00001e4a: SWAP1 00001e4b: PUSH4 0xffffffff 00001e50: AND 00001e51: JUMP 00001e52: JUMPDEST 00001e53: SWAP6 00001e54: POP 00001e55: PUSH1 0x00 00001e57: DUP3 00001e58: GT 00001e59: ISZERO 00001e5a: PUSH2 0x1e6b 00001e5d: JUMPI 00001e5e: PUSH2 0x1e66 00001e61: DUP3 00001e62: PUSH2 0x30a4 00001e65: JUMP 00001e66: JUMPDEST 00001e67: DUP7 00001e68: ADD 00001e69: SWAP6 00001e6a: POP 00001e6b: JUMPDEST 00001e6c: PUSH1 0x00 00001e6e: PUSH1 0x9d 00001e70: PUSH1 0x01 00001e72: SWAP1 00001e73: SLOAD 00001e74: SWAP1 00001e75: PUSH2 0x0100 00001e78: EXP 00001e79: SWAP1 00001e7a: DIV 00001e7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e90: AND 00001e91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ea6: AND 00001ea7: PUSH4 0x70a08231 00001eac: ADDRESS 00001ead: PUSH1 0x40 00001eaf: MLOAD 00001eb0: DUP3 00001eb1: PUSH4 0xffffffff 00001eb6: AND 00001eb7: PUSH1 0xe0 00001eb9: SHL 00001eba: DUP2 00001ebb: MSTORE 00001ebc: PUSH1 0x04 00001ebe: ADD 00001ebf: DUP1 00001ec0: DUP3 00001ec1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ed6: AND 00001ed7: DUP2 00001ed8: MSTORE 00001ed9: PUSH1 0x20 00001edb: ADD 00001edc: SWAP2 00001edd: POP 00001ede: POP 00001edf: PUSH1 0x20 00001ee1: PUSH1 0x40 00001ee3: MLOAD 00001ee4: DUP1 00001ee5: DUP4 00001ee6: SUB 00001ee7: DUP2 00001ee8: DUP7 00001ee9: DUP1 00001eea: EXTCODESIZE 00001eeb: ISZERO 00001eec: DUP1 00001eed: ISZERO 00001eee: PUSH2 0x1ef6 00001ef1: JUMPI 00001ef2: PUSH1 0x00 00001ef4: DUP1 00001ef5: REVERT 00001ef6: JUMPDEST 00001ef7: POP 00001ef8: GAS 00001ef9: STATICCALL 00001efa: ISZERO 00001efb: DUP1 00001efc: ISZERO 00001efd: PUSH2 0x1f0a 00001f00: JUMPI 00001f01: RETURNDATASIZE 00001f02: PUSH1 0x00 00001f04: DUP1 00001f05: RETURNDATACOPY 00001f06: RETURNDATASIZE 00001f07: PUSH1 0x00 00001f09: REVERT 00001f0a: JUMPDEST 00001f0b: POP 00001f0c: POP 00001f0d: POP 00001f0e: POP 00001f0f: PUSH1 0x40 00001f11: MLOAD 00001f12: RETURNDATASIZE 00001f13: PUSH1 0x20 00001f15: DUP2 00001f16: LT 00001f17: ISZERO 00001f18: PUSH2 0x1f20 00001f1b: JUMPI 00001f1c: PUSH1 0x00 00001f1e: DUP1 00001f1f: REVERT 00001f20: JUMPDEST 00001f21: DUP2 00001f22: ADD 00001f23: SWAP1 00001f24: DUP1 00001f25: DUP1 00001f26: MLOAD 00001f27: SWAP1 00001f28: PUSH1 0x20 00001f2a: ADD 00001f2b: SWAP1 00001f2c: SWAP3 00001f2d: SWAP2 00001f2e: SWAP1 00001f2f: POP 00001f30: POP 00001f31: POP 00001f32: SWAP1 00001f33: POP 00001f34: PUSH1 0x00 00001f36: DUP2 00001f37: GT 00001f38: ISZERO 00001f39: PUSH2 0x1f64 00001f3c: JUMPI 00001f3d: PUSH2 0x1f61 00001f40: DUP6 00001f41: PUSH2 0x1f53 00001f44: DUP4 00001f45: DUP12 00001f46: PUSH2 0x2862 00001f49: SWAP1 00001f4a: SWAP2 00001f4b: SWAP1 00001f4c: PUSH4 0xffffffff 00001f51: AND 00001f52: JUMP 00001f53: JUMPDEST 00001f54: PUSH2 0x28e8 00001f57: SWAP1 00001f58: SWAP2 00001f59: SWAP1 00001f5a: PUSH4 0xffffffff 00001f5f: AND 00001f60: JUMP 00001f61: JUMPDEST 00001f62: SWAP6 00001f63: POP 00001f64: JUMPDEST 00001f65: POP 00001f66: POP 00001f67: POP 00001f68: POP 00001f69: POP 00001f6a: SWAP2 00001f6b: POP 00001f6c: SWAP2 00001f6d: JUMP 00001f6e: JUMPDEST 00001f6f: PUSH1 0x00 00001f71: PUSH1 0x66 00001f73: PUSH1 0x00 00001f75: DUP5 00001f76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f8b: AND 00001f8c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fa1: AND 00001fa2: DUP2 00001fa3: MSTORE 00001fa4: PUSH1 0x20 00001fa6: ADD 00001fa7: SWAP1 00001fa8: DUP2 00001fa9: MSTORE 00001faa: PUSH1 0x20 00001fac: ADD 00001fad: PUSH1 0x00 00001faf: KECCAK256 00001fb0: PUSH1 0x00 00001fb2: DUP4 00001fb3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fc8: AND 00001fc9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fde: AND 00001fdf: DUP2 00001fe0: MSTORE 00001fe1: PUSH1 0x20 00001fe3: ADD 00001fe4: SWAP1 00001fe5: DUP2 00001fe6: MSTORE 00001fe7: PUSH1 0x20 00001fe9: ADD 00001fea: PUSH1 0x00 00001fec: KECCAK256 00001fed: SLOAD 00001fee: SWAP1 00001fef: POP 00001ff0: SWAP3 00001ff1: SWAP2 00001ff2: POP 00001ff3: POP 00001ff4: JUMP 00001ff5: JUMPDEST 00001ff6: PUSH1 0x98 00001ff8: PUSH1 0x00 00001ffa: SWAP1 00001ffb: SLOAD 00001ffc: SWAP1 00001ffd: PUSH2 0x0100 00002000: EXP 00002001: SWAP1 00002002: DIV 00002003: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002018: AND 00002019: DUP2 0000201a: JUMP 0000201b: JUMPDEST 0000201c: PUSH1 0x97 0000201e: PUSH1 0x02 00002020: SWAP1 00002021: SLOAD 00002022: SWAP1 00002023: PUSH2 0x0100 00002026: EXP 00002027: SWAP1 00002028: DIV 00002029: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000203e: AND 0000203f: DUP2 00002040: JUMP 00002041: JUMPDEST 00002042: DUP1 00002043: PUSH1 0x00 00002045: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000205a: AND 0000205b: DUP2 0000205c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002071: AND 00002072: EQ 00002073: ISZERO 00002074: PUSH2 0x20e5 00002077: JUMPI 00002078: PUSH1 0x40 0000207a: MLOAD 0000207b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000209c: DUP2 0000209d: MSTORE 0000209e: PUSH1 0x04 000020a0: ADD 000020a1: DUP1 000020a2: DUP1 000020a3: PUSH1 0x20 000020a5: ADD 000020a6: DUP3 000020a7: DUP2 000020a8: SUB 000020a9: DUP3 000020aa: MSTORE 000020ab: PUSH1 0x14 000020ad: DUP2 000020ae: MSTORE 000020af: PUSH1 0x20 000020b1: ADD 000020b2: DUP1 000020b3: PUSH32 0x4552523a3a494e56414c49445f41444452455353000000000000000000000000 000020d4: DUP2 000020d5: MSTORE 000020d6: POP 000020d7: PUSH1 0x20 000020d9: ADD 000020da: SWAP2 000020db: POP 000020dc: POP 000020dd: PUSH1 0x40 000020df: MLOAD 000020e0: DUP1 000020e1: SWAP2 000020e2: SUB 000020e3: SWAP1 000020e4: REVERT 000020e5: JUMPDEST 000020e6: PUSH1 0x9d 000020e8: PUSH1 0x00 000020ea: SWAP1 000020eb: SLOAD 000020ec: SWAP1 000020ed: PUSH2 0x0100 000020f0: EXP 000020f1: SWAP1 000020f2: DIV 000020f3: PUSH1 0xff 000020f5: AND 000020f6: ISZERO 000020f7: PUSH2 0x2168 000020fa: JUMPI 000020fb: PUSH1 0x40 000020fd: MLOAD 000020fe: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000211f: DUP2 00002120: MSTORE 00002121: PUSH1 0x04 00002123: ADD 00002124: DUP1 00002125: DUP1 00002126: PUSH1 0x20 00002128: ADD 00002129: DUP3 0000212a: DUP2 0000212b: SUB 0000212c: DUP3 0000212d: MSTORE 0000212e: PUSH1 0x17 00002130: DUP2 00002131: MSTORE 00002132: PUSH1 0x20 00002134: ADD 00002135: DUP1 00002136: PUSH32 0x574158473a20616c726561647920757067726164656432000000000000000000 00002157: DUP2 00002158: MSTORE 00002159: POP 0000215a: PUSH1 0x20 0000215c: ADD 0000215d: SWAP2 0000215e: POP 0000215f: POP 00002160: PUSH1 0x40 00002162: MLOAD 00002163: DUP1 00002164: SWAP2 00002165: SUB 00002166: SWAP1 00002167: REVERT 00002168: JUMPDEST 00002169: PUSH1 0x01 0000216b: PUSH1 0x9d 0000216d: PUSH1 0x00 0000216f: PUSH2 0x0100 00002172: EXP 00002173: DUP2 00002174: SLOAD 00002175: DUP2 00002176: PUSH1 0xff 00002178: MUL 00002179: NOT 0000217a: AND 0000217b: SWAP1 0000217c: DUP4 0000217d: ISZERO 0000217e: ISZERO 0000217f: MUL 00002180: OR 00002181: SWAP1 00002182: SSTORE 00002183: POP 00002184: DUP2 00002185: PUSH1 0x9d 00002187: PUSH1 0x01 00002189: PUSH2 0x0100 0000218c: EXP 0000218d: DUP2 0000218e: SLOAD 0000218f: DUP2 00002190: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021a5: MUL 000021a6: NOT 000021a7: AND 000021a8: SWAP1 000021a9: DUP4 000021aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021bf: AND 000021c0: MUL 000021c1: OR 000021c2: SWAP1 000021c3: SSTORE 000021c4: POP 000021c5: PUSH1 0x00 000021c7: PUSH1 0x9e 000021c9: DUP2 000021ca: SWAP1 000021cb: SSTORE 000021cc: POP 000021cd: POP 000021ce: POP 000021cf: JUMP 000021d0: JUMPDEST 000021d1: PUSH1 0x9b 000021d3: DUP2 000021d4: DUP2 000021d5: SLOAD 000021d6: DUP2 000021d7: LT 000021d8: PUSH2 0x21dd 000021db: JUMPI 000021dc: INVALID 000021dd: JUMPDEST 000021de: SWAP1 000021df: PUSH1 0x00 000021e1: MSTORE 000021e2: PUSH1 0x20 000021e4: PUSH1 0x00 000021e6: KECCAK256 000021e7: ADD 000021e8: PUSH1 0x00 000021ea: SWAP2 000021eb: POP 000021ec: SLOAD 000021ed: SWAP1 000021ee: PUSH2 0x0100 000021f1: EXP 000021f2: SWAP1 000021f3: DIV 000021f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002209: AND 0000220a: DUP2 0000220b: JUMP 0000220c: JUMPDEST 0000220d: PUSH1 0x00 0000220f: CALLER 00002210: SWAP1 00002211: POP 00002212: SWAP1 00002213: JUMP 00002214: JUMPDEST 00002215: PUSH1 0x00 00002217: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000222c: AND 0000222d: DUP4 0000222e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002243: AND 00002244: EQ 00002245: ISZERO 00002246: PUSH2 0x229a 00002249: JUMPI 0000224a: PUSH1 0x40 0000224c: MLOAD 0000224d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000226e: DUP2 0000226f: MSTORE 00002270: PUSH1 0x04 00002272: ADD 00002273: DUP1 00002274: DUP1 00002275: PUSH1 0x20 00002277: ADD 00002278: DUP3 00002279: DUP2 0000227a: SUB 0000227b: DUP3 0000227c: MSTORE 0000227d: PUSH1 0x24 0000227f: DUP2 00002280: MSTORE 00002281: PUSH1 0x20 00002283: ADD 00002284: DUP1 00002285: PUSH2 0x400d 00002288: PUSH1 0x24 0000228a: SWAP2 0000228b: CODECOPY 0000228c: PUSH1 0x40 0000228e: ADD 0000228f: SWAP2 00002290: POP 00002291: POP 00002292: PUSH1 0x40 00002294: MLOAD 00002295: DUP1 00002296: SWAP2 00002297: SUB 00002298: SWAP1 00002299: REVERT 0000229a: JUMPDEST 0000229b: PUSH1 0x00 0000229d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022b2: AND 000022b3: DUP3 000022b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022c9: AND 000022ca: EQ 000022cb: ISZERO 000022cc: PUSH2 0x2320 000022cf: JUMPI 000022d0: PUSH1 0x40 000022d2: MLOAD 000022d3: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000022f4: DUP2 000022f5: MSTORE 000022f6: PUSH1 0x04 000022f8: ADD 000022f9: DUP1 000022fa: DUP1 000022fb: PUSH1 0x20 000022fd: ADD 000022fe: DUP3 000022ff: DUP2 00002300: SUB 00002301: DUP3 00002302: MSTORE 00002303: PUSH1 0x22 00002305: DUP2 00002306: MSTORE 00002307: PUSH1 0x20 00002309: ADD 0000230a: DUP1 0000230b: PUSH2 0x3ec6 0000230e: PUSH1 0x22 00002310: SWAP2 00002311: CODECOPY 00002312: PUSH1 0x40 00002314: ADD 00002315: SWAP2 00002316: POP 00002317: POP 00002318: PUSH1 0x40 0000231a: MLOAD 0000231b: DUP1 0000231c: SWAP2 0000231d: SUB 0000231e: SWAP1 0000231f: REVERT 00002320: JUMPDEST 00002321: DUP1 00002322: PUSH1 0x66 00002324: PUSH1 0x00 00002326: DUP6 00002327: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000233c: AND 0000233d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002352: AND 00002353: DUP2 00002354: MSTORE 00002355: PUSH1 0x20 00002357: ADD 00002358: SWAP1 00002359: DUP2 0000235a: MSTORE 0000235b: PUSH1 0x20 0000235d: ADD 0000235e: PUSH1 0x00 00002360: KECCAK256 00002361: PUSH1 0x00 00002363: DUP5 00002364: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002379: AND 0000237a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000238f: AND 00002390: DUP2 00002391: MSTORE 00002392: PUSH1 0x20 00002394: ADD 00002395: SWAP1 00002396: DUP2 00002397: MSTORE 00002398: PUSH1 0x20 0000239a: ADD 0000239b: PUSH1 0x00 0000239d: KECCAK256 0000239e: DUP2 0000239f: SWAP1 000023a0: SSTORE 000023a1: POP 000023a2: DUP2 000023a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023b8: AND 000023b9: DUP4 000023ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023cf: AND 000023d0: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 000023f1: DUP4 000023f2: PUSH1 0x40 000023f4: MLOAD 000023f5: DUP1 000023f6: DUP3 000023f7: DUP2 000023f8: MSTORE 000023f9: PUSH1 0x20 000023fb: ADD 000023fc: SWAP2 000023fd: POP 000023fe: POP 000023ff: PUSH1 0x40 00002401: MLOAD 00002402: DUP1 00002403: SWAP2 00002404: SUB 00002405: SWAP1 00002406: LOG3 00002407: POP 00002408: POP 00002409: POP 0000240a: JUMP 0000240b: JUMPDEST 0000240c: PUSH1 0x00 0000240e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002423: AND 00002424: DUP4 00002425: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000243a: AND 0000243b: EQ 0000243c: ISZERO 0000243d: PUSH2 0x2491 00002440: JUMPI 00002441: PUSH1 0x40 00002443: MLOAD 00002444: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002465: DUP2 00002466: MSTORE 00002467: PUSH1 0x04 00002469: ADD 0000246a: DUP1 0000246b: DUP1 0000246c: PUSH1 0x20 0000246e: ADD 0000246f: DUP3 00002470: DUP2 00002471: SUB 00002472: DUP3 00002473: MSTORE 00002474: PUSH1 0x25 00002476: DUP2 00002477: MSTORE 00002478: PUSH1 0x20 0000247a: ADD 0000247b: DUP1 0000247c: PUSH2 0x3fe8 0000247f: PUSH1 0x25 00002481: SWAP2 00002482: CODECOPY 00002483: PUSH1 0x40 00002485: ADD 00002486: SWAP2 00002487: POP 00002488: POP 00002489: PUSH1 0x40 0000248b: MLOAD 0000248c: DUP1 0000248d: SWAP2 0000248e: SUB 0000248f: SWAP1 00002490: REVERT 00002491: JUMPDEST 00002492: PUSH1 0x00 00002494: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024a9: AND 000024aa: DUP3 000024ab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024c0: AND 000024c1: EQ 000024c2: ISZERO 000024c3: PUSH2 0x2517 000024c6: JUMPI 000024c7: PUSH1 0x40 000024c9: MLOAD 000024ca: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000024eb: DUP2 000024ec: MSTORE 000024ed: PUSH1 0x04 000024ef: ADD 000024f0: DUP1 000024f1: DUP1 000024f2: PUSH1 0x20 000024f4: ADD 000024f5: DUP3 000024f6: DUP2 000024f7: SUB 000024f8: DUP3 000024f9: MSTORE 000024fa: PUSH1 0x23 000024fc: DUP2 000024fd: MSTORE 000024fe: PUSH1 0x20 00002500: ADD 00002501: DUP1 00002502: PUSH2 0x3e81 00002505: PUSH1 0x23 00002507: SWAP2 00002508: CODECOPY 00002509: PUSH1 0x40 0000250b: ADD 0000250c: SWAP2 0000250d: POP 0000250e: POP 0000250f: PUSH1 0x40 00002511: MLOAD 00002512: DUP1 00002513: SWAP2 00002514: SUB 00002515: SWAP1 00002516: REVERT 00002517: JUMPDEST 00002518: PUSH2 0x2522 0000251b: DUP4 0000251c: DUP4 0000251d: DUP4 0000251e: PUSH2 0x35b0 00002521: JUMP 00002522: JUMPDEST 00002523: PUSH2 0x258e 00002526: DUP2 00002527: PUSH1 0x40 00002529: MLOAD 0000252a: DUP1 0000252b: PUSH1 0x60 0000252d: ADD 0000252e: PUSH1 0x40 00002530: MSTORE 00002531: DUP1 00002532: PUSH1 0x26 00002534: DUP2 00002535: MSTORE 00002536: PUSH1 0x20 00002538: ADD 00002539: PUSH2 0x3f2a 0000253c: PUSH1 0x26 0000253e: SWAP2 0000253f: CODECOPY 00002540: PUSH1 0x65 00002542: PUSH1 0x00 00002544: DUP8 00002545: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000255a: AND 0000255b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002570: AND 00002571: DUP2 00002572: MSTORE 00002573: PUSH1 0x20 00002575: ADD 00002576: SWAP1 00002577: DUP2 00002578: MSTORE 00002579: PUSH1 0x20 0000257b: ADD 0000257c: PUSH1 0x00 0000257e: KECCAK256 0000257f: SLOAD 00002580: PUSH2 0x26d0 00002583: SWAP1 00002584: SWAP3 00002585: SWAP2 00002586: SWAP1 00002587: PUSH4 0xffffffff 0000258c: AND 0000258d: JUMP 0000258e: JUMPDEST 0000258f: PUSH1 0x65 00002591: PUSH1 0x00 00002593: DUP6 00002594: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025a9: AND 000025aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025bf: AND 000025c0: DUP2 000025c1: MSTORE 000025c2: PUSH1 0x20 000025c4: ADD 000025c5: SWAP1 000025c6: DUP2 000025c7: MSTORE 000025c8: PUSH1 0x20 000025ca: ADD 000025cb: PUSH1 0x00 000025cd: KECCAK256 000025ce: DUP2 000025cf: SWAP1 000025d0: SSTORE 000025d1: POP 000025d2: PUSH2 0x2623 000025d5: DUP2 000025d6: PUSH1 0x65 000025d8: PUSH1 0x00 000025da: DUP6 000025db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025f0: AND 000025f1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002606: AND 00002607: DUP2 00002608: MSTORE 00002609: PUSH1 0x20 0000260b: ADD 0000260c: SWAP1 0000260d: DUP2 0000260e: MSTORE 0000260f: PUSH1 0x20 00002611: ADD 00002612: PUSH1 0x00 00002614: KECCAK256 00002615: SLOAD 00002616: PUSH2 0x2790 00002619: SWAP1 0000261a: SWAP2 0000261b: SWAP1 0000261c: PUSH4 0xffffffff 00002621: AND 00002622: JUMP 00002623: JUMPDEST 00002624: PUSH1 0x65 00002626: PUSH1 0x00 00002628: DUP5 00002629: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000263e: AND 0000263f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002654: AND 00002655: DUP2 00002656: MSTORE 00002657: PUSH1 0x20 00002659: ADD 0000265a: SWAP1 0000265b: DUP2 0000265c: MSTORE 0000265d: PUSH1 0x20 0000265f: ADD 00002660: PUSH1 0x00 00002662: KECCAK256 00002663: DUP2 00002664: SWAP1 00002665: SSTORE 00002666: POP 00002667: DUP2 00002668: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000267d: AND 0000267e: DUP4 0000267f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002694: AND 00002695: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 000026b6: DUP4 000026b7: PUSH1 0x40 000026b9: MLOAD 000026ba: DUP1 000026bb: DUP3 000026bc: DUP2 000026bd: MSTORE 000026be: PUSH1 0x20 000026c0: ADD 000026c1: SWAP2 000026c2: POP 000026c3: POP 000026c4: PUSH1 0x40 000026c6: MLOAD 000026c7: DUP1 000026c8: SWAP2 000026c9: SUB 000026ca: SWAP1 000026cb: LOG3 000026cc: POP 000026cd: POP 000026ce: POP 000026cf: JUMP 000026d0: JUMPDEST 000026d1: PUSH1 0x00 000026d3: DUP4 000026d4: DUP4 000026d5: GT 000026d6: ISZERO 000026d7: DUP3 000026d8: SWAP1 000026d9: PUSH2 0x277d 000026dc: JUMPI 000026dd: PUSH1 0x40 000026df: MLOAD 000026e0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002701: DUP2 00002702: MSTORE 00002703: PUSH1 0x04 00002705: ADD 00002706: DUP1 00002707: DUP1 00002708: PUSH1 0x20 0000270a: ADD 0000270b: DUP3 0000270c: DUP2 0000270d: SUB 0000270e: DUP3 0000270f: MSTORE 00002710: DUP4 00002711: DUP2 00002712: DUP2 00002713: MLOAD 00002714: DUP2 00002715: MSTORE 00002716: PUSH1 0x20 00002718: ADD 00002719: SWAP2 0000271a: POP 0000271b: DUP1 0000271c: MLOAD 0000271d: SWAP1 0000271e: PUSH1 0x20 00002720: ADD 00002721: SWAP1 00002722: DUP1 00002723: DUP4 00002724: DUP4 00002725: PUSH1 0x00 00002727: JUMPDEST 00002728: DUP4 00002729: DUP2 0000272a: LT 0000272b: ISZERO 0000272c: PUSH2 0x2742 0000272f: JUMPI 00002730: DUP1 00002731: DUP3 00002732: ADD 00002733: MLOAD 00002734: DUP2 00002735: DUP5 00002736: ADD 00002737: MSTORE 00002738: PUSH1 0x20 0000273a: DUP2 0000273b: ADD 0000273c: SWAP1 0000273d: POP 0000273e: PUSH2 0x2727 00002741: JUMP 00002742: JUMPDEST 00002743: POP 00002744: POP 00002745: POP 00002746: POP 00002747: SWAP1 00002748: POP 00002749: SWAP1 0000274a: DUP2 0000274b: ADD 0000274c: SWAP1 0000274d: PUSH1 0x1f 0000274f: AND 00002750: DUP1 00002751: ISZERO 00002752: PUSH2 0x276f 00002755: JUMPI 00002756: DUP1 00002757: DUP3 00002758: SUB 00002759: DUP1 0000275a: MLOAD 0000275b: PUSH1 0x01 0000275d: DUP4 0000275e: PUSH1 0x20 00002760: SUB 00002761: PUSH2 0x0100 00002764: EXP 00002765: SUB 00002766: NOT 00002767: AND 00002768: DUP2 00002769: MSTORE 0000276a: PUSH1 0x20 0000276c: ADD 0000276d: SWAP2 0000276e: POP 0000276f: JUMPDEST 00002770: POP 00002771: SWAP3 00002772: POP 00002773: POP 00002774: POP 00002775: PUSH1 0x40 00002777: MLOAD 00002778: DUP1 00002779: SWAP2 0000277a: SUB 0000277b: SWAP1 0000277c: REVERT 0000277d: JUMPDEST 0000277e: POP 0000277f: PUSH1 0x00 00002781: DUP4 00002782: DUP6 00002783: SUB 00002784: SWAP1 00002785: POP 00002786: DUP1 00002787: SWAP2 00002788: POP 00002789: POP 0000278a: SWAP4 0000278b: SWAP3 0000278c: POP 0000278d: POP 0000278e: POP 0000278f: JUMP 00002790: JUMPDEST 00002791: PUSH1 0x00 00002793: DUP1 00002794: DUP3 00002795: DUP5 00002796: ADD 00002797: SWAP1 00002798: POP 00002799: DUP4 0000279a: DUP2 0000279b: LT 0000279c: ISZERO 0000279d: PUSH2 0x280e 000027a0: JUMPI 000027a1: PUSH1 0x40 000027a3: MLOAD 000027a4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000027c5: DUP2 000027c6: MSTORE 000027c7: PUSH1 0x04 000027c9: ADD 000027ca: DUP1 000027cb: DUP1 000027cc: PUSH1 0x20 000027ce: ADD 000027cf: DUP3 000027d0: DUP2 000027d1: SUB 000027d2: DUP3 000027d3: MSTORE 000027d4: PUSH1 0x1b 000027d6: DUP2 000027d7: MSTORE 000027d8: PUSH1 0x20 000027da: ADD 000027db: DUP1 000027dc: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 000027fd: DUP2 000027fe: MSTORE 000027ff: POP 00002800: PUSH1 0x20 00002802: ADD 00002803: SWAP2 00002804: POP 00002805: POP 00002806: PUSH1 0x40 00002808: MLOAD 00002809: DUP1 0000280a: SWAP2 0000280b: SUB 0000280c: SWAP1 0000280d: REVERT 0000280e: JUMPDEST 0000280f: DUP1 00002810: SWAP2 00002811: POP 00002812: POP 00002813: SWAP3 00002814: SWAP2 00002815: POP 00002816: POP 00002817: JUMP 00002818: JUMPDEST 00002819: PUSH1 0x00 0000281b: PUSH2 0x285a 0000281e: DUP4 0000281f: DUP4 00002820: PUSH1 0x40 00002822: MLOAD 00002823: DUP1 00002824: PUSH1 0x40 00002826: ADD 00002827: PUSH1 0x40 00002829: MSTORE 0000282a: DUP1 0000282b: PUSH1 0x1e 0000282d: DUP2 0000282e: MSTORE 0000282f: PUSH1 0x20 00002831: ADD 00002832: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00002853: DUP2 00002854: MSTORE 00002855: POP 00002856: PUSH2 0x26d0 00002859: JUMP 0000285a: JUMPDEST 0000285b: SWAP1 0000285c: POP 0000285d: SWAP3 0000285e: SWAP2 0000285f: POP 00002860: POP 00002861: JUMP 00002862: JUMPDEST 00002863: PUSH1 0x00 00002865: DUP1 00002866: DUP4 00002867: EQ 00002868: ISZERO 00002869: PUSH2 0x2875 0000286c: JUMPI 0000286d: PUSH1 0x00 0000286f: SWAP1 00002870: POP 00002871: PUSH2 0x28e2 00002874: JUMP 00002875: JUMPDEST 00002876: PUSH1 0x00 00002878: DUP3 00002879: DUP5 0000287a: MUL 0000287b: SWAP1 0000287c: POP 0000287d: DUP3 0000287e: DUP5 0000287f: DUP3 00002880: DUP2 00002881: PUSH2 0x2886 00002884: JUMPI 00002885: INVALID 00002886: JUMPDEST 00002887: DIV 00002888: EQ 00002889: PUSH2 0x28dd 0000288c: JUMPI 0000288d: PUSH1 0x40 0000288f: MLOAD 00002890: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000028b1: DUP2 000028b2: MSTORE 000028b3: PUSH1 0x04 000028b5: ADD 000028b6: DUP1 000028b7: DUP1 000028b8: PUSH1 0x20 000028ba: ADD 000028bb: DUP3 000028bc: DUP2 000028bd: SUB 000028be: DUP3 000028bf: MSTORE 000028c0: PUSH1 0x21 000028c2: DUP2 000028c3: MSTORE 000028c4: PUSH1 0x20 000028c6: ADD 000028c7: DUP1 000028c8: PUSH2 0x3f50 000028cb: PUSH1 0x21 000028cd: SWAP2 000028ce: CODECOPY 000028cf: PUSH1 0x40 000028d1: ADD 000028d2: SWAP2 000028d3: POP 000028d4: POP 000028d5: PUSH1 0x40 000028d7: MLOAD 000028d8: DUP1 000028d9: SWAP2 000028da: SUB 000028db: SWAP1 000028dc: REVERT 000028dd: JUMPDEST 000028de: DUP1 000028df: SWAP2 000028e0: POP 000028e1: POP 000028e2: JUMPDEST 000028e3: SWAP3 000028e4: SWAP2 000028e5: POP 000028e6: POP 000028e7: JUMP 000028e8: JUMPDEST 000028e9: PUSH1 0x00 000028eb: PUSH2 0x292a 000028ee: DUP4 000028ef: DUP4 000028f0: PUSH1 0x40 000028f2: MLOAD 000028f3: DUP1 000028f4: PUSH1 0x40 000028f6: ADD 000028f7: PUSH1 0x40 000028f9: MSTORE 000028fa: DUP1 000028fb: PUSH1 0x1a 000028fd: DUP2 000028fe: MSTORE 000028ff: PUSH1 0x20 00002901: ADD 00002902: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00002923: DUP2 00002924: MSTORE 00002925: POP 00002926: PUSH2 0x35b5 00002929: JUMP 0000292a: JUMPDEST 0000292b: SWAP1 0000292c: POP 0000292d: SWAP3 0000292e: SWAP2 0000292f: POP 00002930: POP 00002931: JUMP 00002932: JUMPDEST 00002933: PUSH1 0x00 00002935: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000294a: AND 0000294b: DUP3 0000294c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002961: AND 00002962: EQ 00002963: ISZERO 00002964: PUSH2 0x29b8 00002967: JUMPI 00002968: PUSH1 0x40 0000296a: MLOAD 0000296b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000298c: DUP2 0000298d: MSTORE 0000298e: PUSH1 0x04 00002990: ADD 00002991: DUP1 00002992: DUP1 00002993: PUSH1 0x20 00002995: ADD 00002996: DUP3 00002997: DUP2 00002998: SUB 00002999: DUP3 0000299a: MSTORE 0000299b: PUSH1 0x21 0000299d: DUP2 0000299e: MSTORE 0000299f: PUSH1 0x20 000029a1: ADD 000029a2: DUP1 000029a3: PUSH2 0x3fc7 000029a6: PUSH1 0x21 000029a8: SWAP2 000029a9: CODECOPY 000029aa: PUSH1 0x40 000029ac: ADD 000029ad: SWAP2 000029ae: POP 000029af: POP 000029b0: PUSH1 0x40 000029b2: MLOAD 000029b3: DUP1 000029b4: SWAP2 000029b5: SUB 000029b6: SWAP1 000029b7: REVERT 000029b8: JUMPDEST 000029b9: PUSH2 0x29c4 000029bc: DUP3 000029bd: PUSH1 0x00 000029bf: DUP4 000029c0: PUSH2 0x35b0 000029c3: JUMP 000029c4: JUMPDEST 000029c5: PUSH2 0x2a30 000029c8: DUP2 000029c9: PUSH1 0x40 000029cb: MLOAD 000029cc: DUP1 000029cd: PUSH1 0x60 000029cf: ADD 000029d0: PUSH1 0x40 000029d2: MSTORE 000029d3: DUP1 000029d4: PUSH1 0x22 000029d6: DUP2 000029d7: MSTORE 000029d8: PUSH1 0x20 000029da: ADD 000029db: PUSH2 0x3ea4 000029de: PUSH1 0x22 000029e0: SWAP2 000029e1: CODECOPY 000029e2: PUSH1 0x65 000029e4: PUSH1 0x00 000029e6: DUP7 000029e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000029fc: AND 000029fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002a12: AND 00002a13: DUP2 00002a14: MSTORE 00002a15: PUSH1 0x20 00002a17: ADD 00002a18: SWAP1 00002a19: DUP2 00002a1a: MSTORE 00002a1b: PUSH1 0x20 00002a1d: ADD 00002a1e: PUSH1 0x00 00002a20: KECCAK256 00002a21: SLOAD 00002a22: PUSH2 0x26d0 00002a25: SWAP1 00002a26: SWAP3 00002a27: SWAP2 00002a28: SWAP1 00002a29: PUSH4 0xffffffff 00002a2e: AND 00002a2f: JUMP 00002a30: JUMPDEST 00002a31: PUSH1 0x65 00002a33: PUSH1 0x00 00002a35: DUP5 00002a36: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002a4b: AND 00002a4c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002a61: AND 00002a62: DUP2 00002a63: MSTORE 00002a64: PUSH1 0x20 00002a66: ADD 00002a67: SWAP1 00002a68: DUP2 00002a69: MSTORE 00002a6a: PUSH1 0x20 00002a6c: ADD 00002a6d: PUSH1 0x00 00002a6f: KECCAK256 00002a70: DUP2 00002a71: SWAP1 00002a72: SSTORE 00002a73: POP 00002a74: PUSH2 0x2a88 00002a77: DUP2 00002a78: PUSH1 0x67 00002a7a: SLOAD 00002a7b: PUSH2 0x2818 00002a7e: SWAP1 00002a7f: SWAP2 00002a80: SWAP1 00002a81: PUSH4 0xffffffff 00002a86: AND 00002a87: JUMP 00002a88: JUMPDEST 00002a89: PUSH1 0x67 00002a8b: DUP2 00002a8c: SWAP1 00002a8d: SSTORE 00002a8e: POP 00002a8f: PUSH1 0x00 00002a91: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002aa6: AND 00002aa7: DUP3 00002aa8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002abd: AND 00002abe: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 00002adf: DUP4 00002ae0: PUSH1 0x40 00002ae2: MLOAD 00002ae3: DUP1 00002ae4: DUP3 00002ae5: DUP2 00002ae6: MSTORE 00002ae7: PUSH1 0x20 00002ae9: ADD 00002aea: SWAP2 00002aeb: POP 00002aec: POP 00002aed: PUSH1 0x40 00002aef: MLOAD 00002af0: DUP1 00002af1: SWAP2 00002af2: SUB 00002af3: SWAP1 00002af4: LOG3 00002af5: POP 00002af6: POP 00002af7: JUMP 00002af8: JUMPDEST 00002af9: PUSH1 0x00 00002afb: PUSH2 0x2b69 00002afe: PUSH1 0x9a 00002b00: PUSH1 0x00 00002b02: SWAP1 00002b03: SLOAD 00002b04: SWAP1 00002b05: PUSH2 0x0100 00002b08: EXP 00002b09: SWAP1 00002b0a: DIV 00002b0b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b20: AND 00002b21: DUP4 00002b22: PUSH1 0x98 00002b24: PUSH1 0x00 00002b26: SWAP1 00002b27: SLOAD 00002b28: SWAP1 00002b29: PUSH2 0x0100 00002b2c: EXP 00002b2d: SWAP1 00002b2e: DIV 00002b2f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b44: AND 00002b45: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b5a: AND 00002b5b: PUSH2 0x367b 00002b5e: SWAP1 00002b5f: SWAP3 00002b60: SWAP2 00002b61: SWAP1 00002b62: PUSH4 0xffffffff 00002b67: AND 00002b68: JUMP 00002b69: JUMPDEST 00002b6a: PUSH1 0x60 00002b6c: PUSH1 0x9a 00002b6e: PUSH1 0x00 00002b70: SWAP1 00002b71: SLOAD 00002b72: SWAP1 00002b73: PUSH2 0x0100 00002b76: EXP 00002b77: SWAP1 00002b78: DIV 00002b79: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b8e: AND 00002b8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ba4: AND 00002ba5: PUSH4 0x18cbafe5 00002baa: DUP5 00002bab: PUSH1 0x00 00002bad: PUSH1 0x9b 00002baf: DUP9 00002bb0: TIMESTAMP 00002bb1: PUSH1 0x40 00002bb3: MLOAD 00002bb4: DUP7 00002bb5: PUSH4 0xffffffff 00002bba: AND 00002bbb: PUSH1 0xe0 00002bbd: SHL 00002bbe: DUP2 00002bbf: MSTORE 00002bc0: PUSH1 0x04 00002bc2: ADD 00002bc3: DUP1 00002bc4: DUP7 00002bc5: DUP2 00002bc6: MSTORE 00002bc7: PUSH1 0x20 00002bc9: ADD 00002bca: DUP6 00002bcb: DUP2 00002bcc: MSTORE 00002bcd: PUSH1 0x20 00002bcf: ADD 00002bd0: DUP1 00002bd1: PUSH1 0x20 00002bd3: ADD 00002bd4: DUP5 00002bd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002bea: AND 00002beb: DUP2 00002bec: MSTORE 00002bed: PUSH1 0x20 00002bef: ADD 00002bf0: DUP4 00002bf1: DUP2 00002bf2: MSTORE 00002bf3: PUSH1 0x20 00002bf5: ADD 00002bf6: DUP3 00002bf7: DUP2 00002bf8: SUB 00002bf9: DUP3 00002bfa: MSTORE 00002bfb: DUP6 00002bfc: DUP2 00002bfd: DUP2 00002bfe: SLOAD 00002bff: DUP2 00002c00: MSTORE 00002c01: PUSH1 0x20 00002c03: ADD 00002c04: SWAP2 00002c05: POP 00002c06: DUP1 00002c07: SLOAD 00002c08: DUP1 00002c09: ISZERO 00002c0a: PUSH2 0x2c68 00002c0d: JUMPI 00002c0e: PUSH1 0x20 00002c10: MUL 00002c11: DUP3 00002c12: ADD 00002c13: SWAP2 00002c14: SWAP1 00002c15: PUSH1 0x00 00002c17: MSTORE 00002c18: PUSH1 0x20 00002c1a: PUSH1 0x00 00002c1c: KECCAK256 00002c1d: SWAP1 00002c1e: JUMPDEST 00002c1f: DUP2 00002c20: PUSH1 0x00 00002c22: SWAP1 00002c23: SLOAD 00002c24: SWAP1 00002c25: PUSH2 0x0100 00002c28: EXP 00002c29: SWAP1 00002c2a: DIV 00002c2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002c40: AND 00002c41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002c56: AND 00002c57: DUP2 00002c58: MSTORE 00002c59: PUSH1 0x20 00002c5b: ADD 00002c5c: SWAP1 00002c5d: PUSH1 0x01 00002c5f: ADD 00002c60: SWAP1 00002c61: DUP1 00002c62: DUP4 00002c63: GT 00002c64: PUSH2 0x2c1e 00002c67: JUMPI 00002c68: JUMPDEST 00002c69: POP 00002c6a: POP 00002c6b: SWAP7 00002c6c: POP 00002c6d: POP 00002c6e: POP 00002c6f: POP 00002c70: POP 00002c71: POP 00002c72: POP 00002c73: PUSH1 0x00 00002c75: PUSH1 0x40 00002c77: MLOAD 00002c78: DUP1 00002c79: DUP4 00002c7a: SUB 00002c7b: DUP2 00002c7c: PUSH1 0x00 00002c7e: DUP8 00002c7f: DUP1 00002c80: EXTCODESIZE 00002c81: ISZERO 00002c82: DUP1 00002c83: ISZERO 00002c84: PUSH2 0x2c8c 00002c87: JUMPI 00002c88: PUSH1 0x00 00002c8a: DUP1 00002c8b: REVERT 00002c8c: JUMPDEST 00002c8d: POP 00002c8e: GAS 00002c8f: CALL 00002c90: ISZERO 00002c91: DUP1 00002c92: ISZERO 00002c93: PUSH2 0x2ca0 00002c96: JUMPI 00002c97: RETURNDATASIZE 00002c98: PUSH1 0x00 00002c9a: DUP1 00002c9b: RETURNDATACOPY 00002c9c: RETURNDATASIZE 00002c9d: PUSH1 0x00 00002c9f: REVERT 00002ca0: JUMPDEST 00002ca1: POP 00002ca2: POP 00002ca3: POP 00002ca4: POP 00002ca5: PUSH1 0x40 00002ca7: MLOAD 00002ca8: RETURNDATASIZE 00002ca9: PUSH1 0x00 00002cab: DUP3 00002cac: RETURNDATACOPY 00002cad: RETURNDATASIZE 00002cae: PUSH1 0x1f 00002cb0: NOT 00002cb1: PUSH1 0x1f 00002cb3: DUP3 00002cb4: ADD 00002cb5: AND 00002cb6: DUP3 00002cb7: ADD 00002cb8: DUP1 00002cb9: PUSH1 0x40 00002cbb: MSTORE 00002cbc: POP 00002cbd: PUSH1 0x20 00002cbf: DUP2 00002cc0: LT 00002cc1: ISZERO 00002cc2: PUSH2 0x2cca 00002cc5: JUMPI 00002cc6: PUSH1 0x00 00002cc8: DUP1 00002cc9: REVERT 00002cca: JUMPDEST 00002ccb: DUP2 00002ccc: ADD 00002ccd: SWAP1 00002cce: DUP1 00002ccf: DUP1 00002cd0: MLOAD 00002cd1: PUSH1 0x40 00002cd3: MLOAD 00002cd4: SWAP4 00002cd5: SWAP3 00002cd6: SWAP2 00002cd7: SWAP1 00002cd8: DUP5 00002cd9: PUSH5 0x0100000000 00002cdf: DUP3 00002ce0: GT 00002ce1: ISZERO 00002ce2: PUSH2 0x2cea 00002ce5: JUMPI 00002ce6: PUSH1 0x00 00002ce8: DUP1 00002ce9: REVERT 00002cea: JUMPDEST 00002ceb: DUP4 00002cec: DUP3 00002ced: ADD 00002cee: SWAP2 00002cef: POP 00002cf0: PUSH1 0x20 00002cf2: DUP3 00002cf3: ADD 00002cf4: DUP6 00002cf5: DUP2 00002cf6: GT 00002cf7: ISZERO 00002cf8: PUSH2 0x2d00 00002cfb: JUMPI 00002cfc: PUSH1 0x00 00002cfe: DUP1 00002cff: REVERT 00002d00: JUMPDEST 00002d01: DUP3 00002d02: MLOAD 00002d03: DUP7 00002d04: PUSH1 0x20 00002d06: DUP3 00002d07: MUL 00002d08: DUP4 00002d09: ADD 00002d0a: GT 00002d0b: PUSH5 0x0100000000 00002d11: DUP3 00002d12: GT 00002d13: OR 00002d14: ISZERO 00002d15: PUSH2 0x2d1d 00002d18: JUMPI 00002d19: PUSH1 0x00 00002d1b: DUP1 00002d1c: REVERT 00002d1d: JUMPDEST 00002d1e: DUP1 00002d1f: DUP4 00002d20: MSTORE 00002d21: PUSH1 0x20 00002d23: DUP4 00002d24: ADD 00002d25: SWAP3 00002d26: POP 00002d27: POP 00002d28: POP 00002d29: SWAP1 00002d2a: DUP1 00002d2b: MLOAD 00002d2c: SWAP1 00002d2d: PUSH1 0x20 00002d2f: ADD 00002d30: SWAP1 00002d31: PUSH1 0x20 00002d33: MUL 00002d34: DUP1 00002d35: DUP4 00002d36: DUP4 00002d37: PUSH1 0x00 00002d39: JUMPDEST 00002d3a: DUP4 00002d3b: DUP2 00002d3c: LT 00002d3d: ISZERO 00002d3e: PUSH2 0x2d54 00002d41: JUMPI 00002d42: DUP1 00002d43: DUP3 00002d44: ADD 00002d45: MLOAD 00002d46: DUP2 00002d47: DUP5 00002d48: ADD 00002d49: MSTORE 00002d4a: PUSH1 0x20 00002d4c: DUP2 00002d4d: ADD 00002d4e: SWAP1 00002d4f: POP 00002d50: PUSH2 0x2d39 00002d53: JUMP 00002d54: JUMPDEST 00002d55: POP 00002d56: POP 00002d57: POP 00002d58: POP 00002d59: SWAP1 00002d5a: POP 00002d5b: ADD 00002d5c: PUSH1 0x40 00002d5e: MSTORE 00002d5f: POP 00002d60: POP 00002d61: POP 00002d62: SWAP1 00002d63: POP 00002d64: DUP1 00002d65: PUSH2 0x2d79 00002d68: PUSH1 0x01 00002d6a: DUP4 00002d6b: MLOAD 00002d6c: PUSH2 0x2818 00002d6f: SWAP1 00002d70: SWAP2 00002d71: SWAP1 00002d72: PUSH4 0xffffffff 00002d77: AND 00002d78: JUMP 00002d79: JUMPDEST 00002d7a: DUP2 00002d7b: MLOAD 00002d7c: DUP2 00002d7d: LT 00002d7e: PUSH2 0x2d83 00002d81: JUMPI 00002d82: INVALID 00002d83: JUMPDEST 00002d84: PUSH1 0x20 00002d86: MUL 00002d87: PUSH1 0x20 00002d89: ADD 00002d8a: ADD 00002d8b: MLOAD 00002d8c: SWAP2 00002d8d: POP 00002d8e: POP 00002d8f: SWAP3 00002d90: SWAP2 00002d91: POP 00002d92: POP 00002d93: JUMP 00002d94: JUMPDEST 00002d95: PUSH1 0x00 00002d97: DUP1 00002d98: ADDRESS 00002d99: SWAP1 00002d9a: POP 00002d9b: PUSH1 0x00 00002d9d: DUP2 00002d9e: EXTCODESIZE 00002d9f: SWAP1 00002da0: POP 00002da1: PUSH1 0x00 00002da3: DUP2 00002da4: EQ 00002da5: SWAP3 00002da6: POP 00002da7: POP 00002da8: POP 00002da9: SWAP1 00002daa: JUMP 00002dab: JUMPDEST 00002dac: PUSH1 0x00 00002dae: PUSH1 0x01 00002db0: SWAP1 00002db1: SLOAD 00002db2: SWAP1 00002db3: PUSH2 0x0100 00002db6: EXP 00002db7: SWAP1 00002db8: DIV 00002db9: PUSH1 0xff 00002dbb: AND 00002dbc: DUP1 00002dbd: PUSH2 0x2dca 00002dc0: JUMPI 00002dc1: POP 00002dc2: PUSH2 0x2dc9 00002dc5: PUSH2 0x2d94 00002dc8: JUMP 00002dc9: JUMPDEST 00002dca: JUMPDEST 00002dcb: DUP1 00002dcc: PUSH2 0x2de0 00002dcf: JUMPI 00002dd0: POP 00002dd1: PUSH1 0x00 00002dd3: DUP1 00002dd4: SLOAD 00002dd5: SWAP1 00002dd6: PUSH2 0x0100 00002dd9: EXP 00002dda: SWAP1 00002ddb: DIV 00002ddc: PUSH1 0xff 00002dde: AND 00002ddf: ISZERO 00002de0: JUMPDEST 00002de1: PUSH2 0x2e35 00002de4: JUMPI 00002de5: PUSH1 0x40 00002de7: MLOAD 00002de8: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002e09: DUP2 00002e0a: MSTORE 00002e0b: PUSH1 0x04 00002e0d: ADD 00002e0e: DUP1 00002e0f: DUP1 00002e10: PUSH1 0x20 00002e12: ADD 00002e13: DUP3 00002e14: DUP2 00002e15: SUB 00002e16: DUP3 00002e17: MSTORE 00002e18: PUSH1 0x2e 00002e1a: DUP2 00002e1b: MSTORE 00002e1c: PUSH1 0x20 00002e1e: ADD 00002e1f: DUP1 00002e20: PUSH2 0x3f99 00002e23: PUSH1 0x2e 00002e25: SWAP2 00002e26: CODECOPY 00002e27: PUSH1 0x40 00002e29: ADD 00002e2a: SWAP2 00002e2b: POP 00002e2c: POP 00002e2d: PUSH1 0x40 00002e2f: MLOAD 00002e30: DUP1 00002e31: SWAP2 00002e32: SUB 00002e33: SWAP1 00002e34: REVERT 00002e35: JUMPDEST 00002e36: PUSH1 0x00 00002e38: DUP1 00002e39: PUSH1 0x01 00002e3b: SWAP1 00002e3c: SLOAD 00002e3d: SWAP1 00002e3e: PUSH2 0x0100 00002e41: EXP 00002e42: SWAP1 00002e43: DIV 00002e44: PUSH1 0xff 00002e46: AND 00002e47: ISZERO 00002e48: SWAP1 00002e49: POP 00002e4a: DUP1 00002e4b: ISZERO 00002e4c: PUSH2 0x2e85 00002e4f: JUMPI 00002e50: PUSH1 0x01 00002e52: PUSH1 0x00 00002e54: PUSH1 0x01 00002e56: PUSH2 0x0100 00002e59: EXP 00002e5a: DUP2 00002e5b: SLOAD 00002e5c: DUP2 00002e5d: PUSH1 0xff 00002e5f: MUL 00002e60: NOT 00002e61: AND 00002e62: SWAP1 00002e63: DUP4 00002e64: ISZERO 00002e65: ISZERO 00002e66: MUL 00002e67: OR 00002e68: SWAP1 00002e69: SSTORE 00002e6a: POP 00002e6b: PUSH1 0x01 00002e6d: PUSH1 0x00 00002e6f: DUP1 00002e70: PUSH2 0x0100 00002e73: EXP 00002e74: DUP2 00002e75: SLOAD 00002e76: DUP2 00002e77: PUSH1 0xff 00002e79: MUL 00002e7a: NOT 00002e7b: AND 00002e7c: SWAP1 00002e7d: DUP4 00002e7e: ISZERO 00002e7f: ISZERO 00002e80: MUL 00002e81: OR 00002e82: SWAP1 00002e83: SSTORE 00002e84: POP 00002e85: JUMPDEST 00002e86: PUSH2 0x2e8d 00002e89: PUSH2 0x3840 00002e8c: JUMP 00002e8d: JUMPDEST 00002e8e: PUSH2 0x2e97 00002e91: DUP4 00002e92: DUP4 00002e93: PUSH2 0x393e 00002e96: JUMP 00002e97: JUMPDEST 00002e98: DUP1 00002e99: ISZERO 00002e9a: PUSH2 0x2eb8 00002e9d: JUMPI 00002e9e: PUSH1 0x00 00002ea0: DUP1 00002ea1: PUSH1 0x01 00002ea3: PUSH2 0x0100 00002ea6: EXP 00002ea7: DUP2 00002ea8: SLOAD 00002ea9: DUP2 00002eaa: PUSH1 0xff 00002eac: MUL 00002ead: NOT 00002eae: AND 00002eaf: SWAP1 00002eb0: DUP4 00002eb1: ISZERO 00002eb2: ISZERO 00002eb3: MUL 00002eb4: OR 00002eb5: SWAP1 00002eb6: SSTORE 00002eb7: POP 00002eb8: JUMPDEST 00002eb9: POP 00002eba: POP 00002ebb: POP 00002ebc: JUMP 00002ebd: JUMPDEST 00002ebe: DUP1 00002ebf: PUSH1 0x6a 00002ec1: PUSH1 0x00 00002ec3: PUSH2 0x0100 00002ec6: EXP 00002ec7: DUP2 00002ec8: SLOAD 00002ec9: DUP2 00002eca: PUSH1 0xff 00002ecc: MUL 00002ecd: NOT 00002ece: AND 00002ecf: SWAP1 00002ed0: DUP4 00002ed1: PUSH1 0xff 00002ed3: AND 00002ed4: MUL 00002ed5: OR 00002ed6: SWAP1 00002ed7: SSTORE 00002ed8: POP 00002ed9: POP 00002eda: JUMP 00002edb: JUMPDEST 00002edc: PUSH1 0x00 00002ede: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ef3: AND 00002ef4: DUP3 00002ef5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002f0a: AND 00002f0b: EQ 00002f0c: ISZERO 00002f0d: PUSH2 0x2f7e 00002f10: JUMPI 00002f11: PUSH1 0x40 00002f13: MLOAD 00002f14: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002f35: DUP2 00002f36: MSTORE 00002f37: PUSH1 0x04 00002f39: ADD 00002f3a: DUP1 00002f3b: DUP1 00002f3c: PUSH1 0x20 00002f3e: ADD 00002f3f: DUP3 00002f40: DUP2 00002f41: SUB 00002f42: DUP3 00002f43: MSTORE 00002f44: PUSH1 0x1f 00002f46: DUP2 00002f47: MSTORE 00002f48: PUSH1 0x20 00002f4a: ADD 00002f4b: DUP1 00002f4c: PUSH32 0x45524332303a206d696e7420746f20746865207a65726f206164647265737300 00002f6d: DUP2 00002f6e: MSTORE 00002f6f: POP 00002f70: PUSH1 0x20 00002f72: ADD 00002f73: SWAP2 00002f74: POP 00002f75: POP 00002f76: PUSH1 0x40 00002f78: MLOAD 00002f79: DUP1 00002f7a: SWAP2 00002f7b: SUB 00002f7c: SWAP1 00002f7d: REVERT 00002f7e: JUMPDEST 00002f7f: PUSH2 0x2f8a 00002f82: PUSH1 0x00 00002f84: DUP4 00002f85: DUP4 00002f86: PUSH2 0x35b0 00002f89: JUMP 00002f8a: JUMPDEST 00002f8b: PUSH2 0x2f9f 00002f8e: DUP2 00002f8f: PUSH1 0x67 00002f91: SLOAD 00002f92: PUSH2 0x2790 00002f95: SWAP1 00002f96: SWAP2 00002f97: SWAP1 00002f98: PUSH4 0xffffffff 00002f9d: AND 00002f9e: JUMP 00002f9f: JUMPDEST 00002fa0: PUSH1 0x67 00002fa2: DUP2 00002fa3: SWAP1 00002fa4: SSTORE 00002fa5: POP 00002fa6: PUSH2 0x2ff7 00002fa9: DUP2 00002faa: PUSH1 0x65 00002fac: PUSH1 0x00 00002fae: DUP6 00002faf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002fc4: AND 00002fc5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002fda: AND 00002fdb: DUP2 00002fdc: MSTORE 00002fdd: PUSH1 0x20 00002fdf: ADD 00002fe0: SWAP1 00002fe1: DUP2 00002fe2: MSTORE 00002fe3: PUSH1 0x20 00002fe5: ADD 00002fe6: PUSH1 0x00 00002fe8: KECCAK256 00002fe9: SLOAD 00002fea: PUSH2 0x2790 00002fed: SWAP1 00002fee: SWAP2 00002fef: SWAP1 00002ff0: PUSH4 0xffffffff 00002ff5: AND 00002ff6: JUMP 00002ff7: JUMPDEST 00002ff8: PUSH1 0x65 00002ffa: PUSH1 0x00 00002ffc: DUP5 00002ffd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003012: AND 00003013: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003028: AND 00003029: DUP2 0000302a: MSTORE 0000302b: PUSH1 0x20 0000302d: ADD 0000302e: SWAP1 0000302f: DUP2 00003030: MSTORE 00003031: PUSH1 0x20 00003033: ADD 00003034: PUSH1 0x00 00003036: KECCAK256 00003037: DUP2 00003038: SWAP1 00003039: SSTORE 0000303a: POP 0000303b: DUP2 0000303c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003051: AND 00003052: PUSH1 0x00 00003054: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003069: AND 0000306a: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000308b: DUP4 0000308c: PUSH1 0x40 0000308e: MLOAD 0000308f: DUP1 00003090: DUP3 00003091: DUP2 00003092: MSTORE 00003093: PUSH1 0x20 00003095: ADD 00003096: SWAP2 00003097: POP 00003098: POP 00003099: PUSH1 0x40 0000309b: MLOAD 0000309c: DUP1 0000309d: SWAP2 0000309e: SUB 0000309f: SWAP1 000030a0: LOG3 000030a1: POP 000030a2: POP 000030a3: JUMP 000030a4: JUMPDEST 000030a5: PUSH1 0x00 000030a7: DUP1 000030a8: PUSH1 0x9a 000030aa: PUSH1 0x00 000030ac: SWAP1 000030ad: SLOAD 000030ae: SWAP1 000030af: PUSH2 0x0100 000030b2: EXP 000030b3: SWAP1 000030b4: DIV 000030b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000030ca: AND 000030cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000030e0: AND 000030e1: PUSH4 0xc45a0155 000030e6: PUSH1 0x40 000030e8: MLOAD 000030e9: DUP2 000030ea: PUSH4 0xffffffff 000030ef: AND 000030f0: PUSH1 0xe0 000030f2: SHL 000030f3: DUP2 000030f4: MSTORE 000030f5: PUSH1 0x04 000030f7: ADD 000030f8: PUSH1 0x20 000030fa: PUSH1 0x40 000030fc: MLOAD 000030fd: DUP1 000030fe: DUP4 000030ff: SUB 00003100: DUP2 00003101: DUP7 00003102: DUP1 00003103: EXTCODESIZE 00003104: ISZERO 00003105: DUP1 00003106: ISZERO 00003107: PUSH2 0x310f 0000310a: JUMPI 0000310b: PUSH1 0x00 0000310d: DUP1 0000310e: REVERT 0000310f: JUMPDEST 00003110: POP 00003111: GAS 00003112: STATICCALL 00003113: ISZERO 00003114: DUP1 00003115: ISZERO 00003116: PUSH2 0x3123 00003119: JUMPI 0000311a: RETURNDATASIZE 0000311b: PUSH1 0x00 0000311d: DUP1 0000311e: RETURNDATACOPY 0000311f: RETURNDATASIZE 00003120: PUSH1 0x00 00003122: REVERT 00003123: JUMPDEST 00003124: POP 00003125: POP 00003126: POP 00003127: POP 00003128: PUSH1 0x40 0000312a: MLOAD 0000312b: RETURNDATASIZE 0000312c: PUSH1 0x20 0000312e: DUP2 0000312f: LT 00003130: ISZERO 00003131: PUSH2 0x3139 00003134: JUMPI 00003135: PUSH1 0x00 00003137: DUP1 00003138: REVERT 00003139: JUMPDEST 0000313a: DUP2 0000313b: ADD 0000313c: SWAP1 0000313d: DUP1 0000313e: DUP1 0000313f: MLOAD 00003140: SWAP1 00003141: PUSH1 0x20 00003143: ADD 00003144: SWAP1 00003145: SWAP3 00003146: SWAP2 00003147: SWAP1 00003148: POP 00003149: POP 0000314a: POP 0000314b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003160: AND 00003161: PUSH4 0xe6a43905 00003166: PUSH1 0x98 00003168: PUSH1 0x00 0000316a: SWAP1 0000316b: SLOAD 0000316c: SWAP1 0000316d: PUSH2 0x0100 00003170: EXP 00003171: SWAP1 00003172: DIV 00003173: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003188: AND 00003189: PUSH1 0x9a 0000318b: PUSH1 0x00 0000318d: SWAP1 0000318e: SLOAD 0000318f: SWAP1 00003190: PUSH2 0x0100 00003193: EXP 00003194: SWAP1 00003195: DIV 00003196: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000031ab: AND 000031ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000031c1: AND 000031c2: PUSH4 0xad5c4648 000031c7: PUSH1 0x40 000031c9: MLOAD 000031ca: DUP2 000031cb: PUSH4 0xffffffff 000031d0: AND 000031d1: PUSH1 0xe0 000031d3: SHL 000031d4: DUP2 000031d5: MSTORE 000031d6: PUSH1 0x04 000031d8: ADD 000031d9: PUSH1 0x20 000031db: PUSH1 0x40 000031dd: MLOAD 000031de: DUP1 000031df: DUP4 000031e0: SUB 000031e1: DUP2 000031e2: DUP7 000031e3: DUP1 000031e4: EXTCODESIZE 000031e5: ISZERO 000031e6: DUP1 000031e7: ISZERO 000031e8: PUSH2 0x31f0 000031eb: JUMPI 000031ec: PUSH1 0x00 000031ee: DUP1 000031ef: REVERT 000031f0: JUMPDEST 000031f1: POP 000031f2: GAS 000031f3: STATICCALL 000031f4: ISZERO 000031f5: DUP1 000031f6: ISZERO 000031f7: PUSH2 0x3204 000031fa: JUMPI 000031fb: RETURNDATASIZE 000031fc: PUSH1 0x00 000031fe: DUP1 000031ff: RETURNDATACOPY 00003200: RETURNDATASIZE 00003201: PUSH1 0x00 00003203: REVERT 00003204: JUMPDEST 00003205: POP 00003206: POP 00003207: POP 00003208: POP 00003209: PUSH1 0x40 0000320b: MLOAD 0000320c: RETURNDATASIZE 0000320d: PUSH1 0x20 0000320f: DUP2 00003210: LT 00003211: ISZERO 00003212: PUSH2 0x321a 00003215: JUMPI 00003216: PUSH1 0x00 00003218: DUP1 00003219: REVERT 0000321a: JUMPDEST 0000321b: DUP2 0000321c: ADD 0000321d: SWAP1 0000321e: DUP1 0000321f: DUP1 00003220: MLOAD 00003221: SWAP1 00003222: PUSH1 0x20 00003224: ADD 00003225: SWAP1 00003226: SWAP3 00003227: SWAP2 00003228: SWAP1 00003229: POP 0000322a: POP 0000322b: POP 0000322c: PUSH1 0x40 0000322e: MLOAD 0000322f: DUP4 00003230: PUSH4 0xffffffff 00003235: AND 00003236: PUSH1 0xe0 00003238: SHL 00003239: DUP2 0000323a: MSTORE 0000323b: PUSH1 0x04 0000323d: ADD 0000323e: DUP1 0000323f: DUP4 00003240: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003255: AND 00003256: DUP2 00003257: MSTORE 00003258: PUSH1 0x20 0000325a: ADD 0000325b: DUP3 0000325c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003271: AND 00003272: DUP2 00003273: MSTORE 00003274: PUSH1 0x20 00003276: ADD 00003277: SWAP3 00003278: POP 00003279: POP 0000327a: POP 0000327b: PUSH1 0x20 0000327d: PUSH1 0x40 0000327f: MLOAD 00003280: DUP1 00003281: DUP4 00003282: SUB 00003283: DUP2 00003284: DUP7 00003285: DUP1 00003286: EXTCODESIZE 00003287: ISZERO 00003288: DUP1 00003289: ISZERO 0000328a: PUSH2 0x3292 0000328d: JUMPI 0000328e: PUSH1 0x00 00003290: DUP1 00003291: REVERT 00003292: JUMPDEST 00003293: POP 00003294: GAS 00003295: STATICCALL 00003296: ISZERO 00003297: DUP1 00003298: ISZERO 00003299: PUSH2 0x32a6 0000329c: JUMPI 0000329d: RETURNDATASIZE 0000329e: PUSH1 0x00 000032a0: DUP1 000032a1: RETURNDATACOPY 000032a2: RETURNDATASIZE 000032a3: PUSH1 0x00 000032a5: REVERT 000032a6: JUMPDEST 000032a7: POP 000032a8: POP 000032a9: POP 000032aa: POP 000032ab: PUSH1 0x40 000032ad: MLOAD 000032ae: RETURNDATASIZE 000032af: PUSH1 0x20 000032b1: DUP2 000032b2: LT 000032b3: ISZERO 000032b4: PUSH2 0x32bc 000032b7: JUMPI 000032b8: PUSH1 0x00 000032ba: DUP1 000032bb: REVERT 000032bc: JUMPDEST 000032bd: DUP2 000032be: ADD 000032bf: SWAP1 000032c0: DUP1 000032c1: DUP1 000032c2: MLOAD 000032c3: SWAP1 000032c4: PUSH1 0x20 000032c6: ADD 000032c7: SWAP1 000032c8: SWAP3 000032c9: SWAP2 000032ca: SWAP1 000032cb: POP 000032cc: POP 000032cd: POP 000032ce: SWAP1 000032cf: POP 000032d0: PUSH1 0x00 000032d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000032e7: AND 000032e8: DUP2 000032e9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000032fe: AND 000032ff: EQ 00003300: ISZERO 00003301: PUSH2 0x3372 00003304: JUMPI 00003305: PUSH1 0x40 00003307: MLOAD 00003308: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00003329: DUP2 0000332a: MSTORE 0000332b: PUSH1 0x04 0000332d: ADD 0000332e: DUP1 0000332f: DUP1 00003330: PUSH1 0x20 00003332: ADD 00003333: DUP3 00003334: DUP2 00003335: SUB 00003336: DUP3 00003337: MSTORE 00003338: PUSH1 0x1a 0000333a: DUP2 0000333b: MSTORE 0000333c: PUSH1 0x20 0000333e: ADD 0000333f: DUP1 00003340: PUSH32 0x574158473a3a5061697220646f6573206e6f7420657869737421000000000000 00003361: DUP2 00003362: MSTORE 00003363: POP 00003364: PUSH1 0x20 00003366: ADD 00003367: SWAP2 00003368: POP 00003369: POP 0000336a: PUSH1 0x40 0000336c: MLOAD 0000336d: DUP1 0000336e: SWAP2 0000336f: SUB 00003370: SWAP1 00003371: REVERT 00003372: JUMPDEST 00003373: PUSH1 0x00 00003375: DUP1 00003376: DUP3 00003377: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000338c: AND 0000338d: PUSH4 0x0902f1ac 00003392: PUSH1 0x40 00003394: MLOAD 00003395: DUP2 00003396: PUSH4 0xffffffff 0000339b: AND 0000339c: PUSH1 0xe0 0000339e: SHL 0000339f: DUP2 000033a0: MSTORE 000033a1: PUSH1 0x04 000033a3: ADD 000033a4: PUSH1 0x60 000033a6: PUSH1 0x40 000033a8: MLOAD 000033a9: DUP1 000033aa: DUP4 000033ab: SUB 000033ac: DUP2 000033ad: DUP7 000033ae: DUP1 000033af: EXTCODESIZE 000033b0: ISZERO 000033b1: DUP1 000033b2: ISZERO 000033b3: PUSH2 0x33bb 000033b6: JUMPI 000033b7: PUSH1 0x00 000033b9: DUP1 000033ba: REVERT 000033bb: JUMPDEST 000033bc: POP 000033bd: GAS 000033be: STATICCALL 000033bf: ISZERO 000033c0: DUP1 000033c1: ISZERO 000033c2: PUSH2 0x33cf 000033c5: JUMPI 000033c6: RETURNDATASIZE 000033c7: PUSH1 0x00 000033c9: DUP1 000033ca: RETURNDATACOPY 000033cb: RETURNDATASIZE 000033cc: PUSH1 0x00 000033ce: REVERT 000033cf: JUMPDEST 000033d0: POP 000033d1: POP 000033d2: POP 000033d3: POP 000033d4: PUSH1 0x40 000033d6: MLOAD 000033d7: RETURNDATASIZE 000033d8: PUSH1 0x60 000033da: DUP2 000033db: LT 000033dc: ISZERO 000033dd: PUSH2 0x33e5 000033e0: JUMPI 000033e1: PUSH1 0x00 000033e3: DUP1 000033e4: REVERT 000033e5: JUMPDEST 000033e6: DUP2 000033e7: ADD 000033e8: SWAP1 000033e9: DUP1 000033ea: DUP1 000033eb: MLOAD 000033ec: SWAP1 000033ed: PUSH1 0x20 000033ef: ADD 000033f0: SWAP1 000033f1: SWAP3 000033f2: SWAP2 000033f3: SWAP1 000033f4: DUP1 000033f5: MLOAD 000033f6: SWAP1 000033f7: PUSH1 0x20 000033f9: ADD 000033fa: SWAP1 000033fb: SWAP3 000033fc: SWAP2 000033fd: SWAP1 000033fe: DUP1 000033ff: MLOAD 00003400: SWAP1 00003401: PUSH1 0x20 00003403: ADD 00003404: SWAP1 00003405: SWAP3 00003406: SWAP2 00003407: SWAP1 00003408: POP 00003409: POP 0000340a: POP 0000340b: POP 0000340c: PUSH14 0xffffffffffffffffffffffffffff 0000341b: AND 0000341c: SWAP2 0000341d: POP 0000341e: PUSH14 0xffffffffffffffffffffffffffff 0000342d: AND 0000342e: SWAP2 0000342f: POP 00003430: PUSH1 0x00 00003432: DUP3 00003433: SWAP1 00003434: POP 00003435: PUSH1 0x00 00003437: DUP3 00003438: SWAP1 00003439: POP 0000343a: PUSH1 0x9a 0000343c: PUSH1 0x00 0000343e: SWAP1 0000343f: SLOAD 00003440: SWAP1 00003441: PUSH2 0x0100 00003444: EXP 00003445: SWAP1 00003446: DIV 00003447: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000345c: AND 0000345d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003472: AND 00003473: PUSH4 0xad5c4648 00003478: PUSH1 0x40 0000347a: MLOAD 0000347b: DUP2 0000347c: PUSH4 0xffffffff 00003481: AND 00003482: PUSH1 0xe0 00003484: SHL 00003485: DUP2 00003486: MSTORE 00003487: PUSH1 0x04 00003489: ADD 0000348a: PUSH1 0x20 0000348c: PUSH1 0x40 0000348e: MLOAD 0000348f: DUP1 00003490: DUP4 00003491: SUB 00003492: DUP2 00003493: DUP7 00003494: DUP1 00003495: EXTCODESIZE 00003496: ISZERO 00003497: DUP1 00003498: ISZERO 00003499: PUSH2 0x34a1 0000349c: JUMPI 0000349d: PUSH1 0x00 0000349f: DUP1 000034a0: REVERT 000034a1: JUMPDEST 000034a2: POP 000034a3: GAS 000034a4: STATICCALL 000034a5: ISZERO 000034a6: DUP1 000034a7: ISZERO 000034a8: PUSH2 0x34b5 000034ab: JUMPI 000034ac: RETURNDATASIZE 000034ad: PUSH1 0x00 000034af: DUP1 000034b0: RETURNDATACOPY 000034b1: RETURNDATASIZE 000034b2: PUSH1 0x00 000034b4: REVERT 000034b5: JUMPDEST 000034b6: POP 000034b7: POP 000034b8: POP 000034b9: POP 000034ba: PUSH1 0x40 000034bc: MLOAD 000034bd: RETURNDATASIZE 000034be: PUSH1 0x20 000034c0: DUP2 000034c1: LT 000034c2: ISZERO 000034c3: PUSH2 0x34cb 000034c6: JUMPI 000034c7: PUSH1 0x00 000034c9: DUP1 000034ca: REVERT 000034cb: JUMPDEST 000034cc: DUP2 000034cd: ADD 000034ce: SWAP1 000034cf: DUP1 000034d0: DUP1 000034d1: MLOAD 000034d2: SWAP1 000034d3: PUSH1 0x20 000034d5: ADD 000034d6: SWAP1 000034d7: SWAP3 000034d8: SWAP2 000034d9: SWAP1 000034da: POP 000034db: POP 000034dc: POP 000034dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000034f2: AND 000034f3: PUSH1 0x98 000034f5: PUSH1 0x00 000034f7: SWAP1 000034f8: SLOAD 000034f9: SWAP1 000034fa: PUSH2 0x0100 000034fd: EXP 000034fe: SWAP1 000034ff: DIV 00003500: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003515: AND 00003516: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000352b: AND 0000352c: LT 0000352d: PUSH2 0x356c 00003530: JUMPI 00003531: PUSH2 0x3567 00003534: PUSH2 0x3546 00003537: DUP9 00003538: DUP4 00003539: PUSH2 0x2790 0000353c: SWAP1 0000353d: SWAP2 0000353e: SWAP1 0000353f: PUSH4 0xffffffff 00003544: AND 00003545: JUMP 00003546: JUMPDEST 00003547: PUSH2 0x3559 0000354a: DUP5 0000354b: DUP11 0000354c: PUSH2 0x2862 0000354f: SWAP1 00003550: SWAP2 00003551: SWAP1 00003552: PUSH4 0xffffffff 00003557: AND 00003558: JUMP 00003559: JUMPDEST 0000355a: PUSH2 0x28e8 0000355d: SWAP1 0000355e: SWAP2 0000355f: SWAP1 00003560: PUSH4 0xffffffff 00003565: AND 00003566: JUMP 00003567: JUMPDEST 00003568: PUSH2 0x35a4 0000356b: JUMP 0000356c: JUMPDEST 0000356d: PUSH2 0x35a3 00003570: PUSH2 0x3582 00003573: DUP9 00003574: DUP5 00003575: PUSH2 0x2790 00003578: SWAP1 00003579: SWAP2 0000357a: SWAP1 0000357b: PUSH4 0xffffffff 00003580: AND 00003581: JUMP 00003582: JUMPDEST 00003583: PUSH2 0x3595 00003586: DUP4 00003587: DUP11 00003588: PUSH2 0x2862 0000358b: SWAP1 0000358c: SWAP2 0000358d: SWAP1 0000358e: PUSH4 0xffffffff 00003593: AND 00003594: JUMP 00003595: JUMPDEST 00003596: PUSH2 0x28e8 00003599: SWAP1 0000359a: SWAP2 0000359b: SWAP1 0000359c: PUSH4 0xffffffff 000035a1: AND 000035a2: JUMP 000035a3: JUMPDEST 000035a4: JUMPDEST 000035a5: SWAP6 000035a6: POP 000035a7: POP 000035a8: POP 000035a9: POP 000035aa: POP 000035ab: POP 000035ac: SWAP2 000035ad: SWAP1 000035ae: POP 000035af: JUMP 000035b0: JUMPDEST 000035b1: POP 000035b2: POP 000035b3: POP 000035b4: JUMP 000035b5: JUMPDEST 000035b6: PUSH1 0x00 000035b8: DUP1 000035b9: DUP4 000035ba: GT 000035bb: DUP3 000035bc: SWAP1 000035bd: PUSH2 0x3661 000035c0: JUMPI 000035c1: PUSH1 0x40 000035c3: MLOAD 000035c4: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000035e5: DUP2 000035e6: MSTORE 000035e7: PUSH1 0x04 000035e9: ADD 000035ea: DUP1 000035eb: DUP1 000035ec: PUSH1 0x20 000035ee: ADD 000035ef: DUP3 000035f0: DUP2 000035f1: SUB 000035f2: DUP3 000035f3: MSTORE 000035f4: DUP4 000035f5: DUP2 000035f6: DUP2 000035f7: MLOAD 000035f8: DUP2 000035f9: MSTORE 000035fa: PUSH1 0x20 000035fc: ADD 000035fd: SWAP2 000035fe: POP 000035ff: DUP1 00003600: MLOAD 00003601: SWAP1 00003602: PUSH1 0x20 00003604: ADD 00003605: SWAP1 00003606: DUP1 00003607: DUP4 00003608: DUP4 00003609: PUSH1 0x00 0000360b: JUMPDEST 0000360c: DUP4 0000360d: DUP2 0000360e: LT 0000360f: ISZERO 00003610: PUSH2 0x3626 00003613: JUMPI 00003614: DUP1 00003615: DUP3 00003616: ADD 00003617: MLOAD 00003618: DUP2 00003619: DUP5 0000361a: ADD 0000361b: MSTORE 0000361c: PUSH1 0x20 0000361e: DUP2 0000361f: ADD 00003620: SWAP1 00003621: POP 00003622: PUSH2 0x360b 00003625: JUMP 00003626: JUMPDEST 00003627: POP 00003628: POP 00003629: POP 0000362a: POP 0000362b: SWAP1 0000362c: POP 0000362d: SWAP1 0000362e: DUP2 0000362f: ADD 00003630: SWAP1 00003631: PUSH1 0x1f 00003633: AND 00003634: DUP1 00003635: ISZERO 00003636: PUSH2 0x3653 00003639: JUMPI 0000363a: DUP1 0000363b: DUP3 0000363c: SUB 0000363d: DUP1 0000363e: MLOAD 0000363f: PUSH1 0x01 00003641: DUP4 00003642: PUSH1 0x20 00003644: SUB 00003645: PUSH2 0x0100 00003648: EXP 00003649: SUB 0000364a: NOT 0000364b: AND 0000364c: DUP2 0000364d: MSTORE 0000364e: PUSH1 0x20 00003650: ADD 00003651: SWAP2 00003652: POP 00003653: JUMPDEST 00003654: POP 00003655: SWAP3 00003656: POP 00003657: POP 00003658: POP 00003659: PUSH1 0x40 0000365b: MLOAD 0000365c: DUP1 0000365d: SWAP2 0000365e: SUB 0000365f: SWAP1 00003660: REVERT 00003661: JUMPDEST 00003662: POP 00003663: PUSH1 0x00 00003665: DUP4 00003666: DUP6 00003667: DUP2 00003668: PUSH2 0x366d 0000366b: JUMPI 0000366c: INVALID 0000366d: JUMPDEST 0000366e: DIV 0000366f: SWAP1 00003670: POP 00003671: DUP1 00003672: SWAP2 00003673: POP 00003674: POP 00003675: SWAP4 00003676: SWAP3 00003677: POP 00003678: POP 00003679: POP 0000367a: JUMP 0000367b: JUMPDEST 0000367c: PUSH1 0x00 0000367e: DUP2 0000367f: EQ 00003680: DUP1 00003681: PUSH2 0x3749 00003684: JUMPI 00003685: POP 00003686: PUSH1 0x00 00003688: DUP4 00003689: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000369e: AND 0000369f: PUSH4 0xdd62ed3e 000036a4: ADDRESS 000036a5: DUP6 000036a6: PUSH1 0x40 000036a8: MLOAD 000036a9: DUP4 000036aa: PUSH4 0xffffffff 000036af: AND 000036b0: PUSH1 0xe0 000036b2: SHL 000036b3: DUP2 000036b4: MSTORE 000036b5: PUSH1 0x04 000036b7: ADD 000036b8: DUP1 000036b9: DUP4 000036ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000036cf: AND 000036d0: DUP2 000036d1: MSTORE 000036d2: PUSH1 0x20 000036d4: ADD 000036d5: DUP3 000036d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000036eb: AND 000036ec: DUP2 000036ed: MSTORE 000036ee: PUSH1 0x20 000036f0: ADD 000036f1: SWAP3 000036f2: POP 000036f3: POP 000036f4: POP 000036f5: PUSH1 0x20 000036f7: PUSH1 0x40 000036f9: MLOAD 000036fa: DUP1 000036fb: DUP4 000036fc: SUB 000036fd: DUP2 000036fe: DUP7 000036ff: DUP1 00003700: EXTCODESIZE 00003701: ISZERO 00003702: DUP1 00003703: ISZERO 00003704: PUSH2 0x370c 00003707: JUMPI 00003708: PUSH1 0x00 0000370a: DUP1 0000370b: REVERT 0000370c: JUMPDEST 0000370d: POP 0000370e: GAS 0000370f: STATICCALL 00003710: ISZERO 00003711: DUP1 00003712: ISZERO 00003713: PUSH2 0x3720 00003716: JUMPI 00003717: RETURNDATASIZE 00003718: PUSH1 0x00 0000371a: DUP1 0000371b: RETURNDATACOPY 0000371c: RETURNDATASIZE 0000371d: PUSH1 0x00 0000371f: REVERT 00003720: JUMPDEST 00003721: POP 00003722: POP 00003723: POP 00003724: POP 00003725: PUSH1 0x40 00003727: MLOAD 00003728: RETURNDATASIZE 00003729: PUSH1 0x20 0000372b: DUP2 0000372c: LT 0000372d: ISZERO 0000372e: PUSH2 0x3736 00003731: JUMPI 00003732: PUSH1 0x00 00003734: DUP1 00003735: REVERT 00003736: JUMPDEST 00003737: DUP2 00003738: ADD 00003739: SWAP1 0000373a: DUP1 0000373b: DUP1 0000373c: MLOAD 0000373d: SWAP1 0000373e: PUSH1 0x20 00003740: ADD 00003741: SWAP1 00003742: SWAP3 00003743: SWAP2 00003744: SWAP1 00003745: POP 00003746: POP 00003747: POP 00003748: EQ 00003749: JUMPDEST 0000374a: PUSH2 0x379e 0000374d: JUMPI 0000374e: PUSH1 0x40 00003750: MLOAD 00003751: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00003772: DUP2 00003773: MSTORE 00003774: PUSH1 0x04 00003776: ADD 00003777: DUP1 00003778: DUP1 00003779: PUSH1 0x20 0000377b: ADD 0000377c: DUP3 0000377d: DUP2 0000377e: SUB 0000377f: DUP3 00003780: MSTORE 00003781: PUSH1 0x36 00003783: DUP2 00003784: MSTORE 00003785: PUSH1 0x20 00003787: ADD 00003788: DUP1 00003789: PUSH2 0x4082 0000378c: PUSH1 0x36 0000378e: SWAP2 0000378f: CODECOPY 00003790: PUSH1 0x40 00003792: ADD 00003793: SWAP2 00003794: POP 00003795: POP 00003796: PUSH1 0x40 00003798: MLOAD 00003799: DUP1 0000379a: SWAP2 0000379b: SUB 0000379c: SWAP1 0000379d: REVERT 0000379e: JUMPDEST 0000379f: PUSH2 0x383b 000037a2: DUP4 000037a3: PUSH4 0x095ea7b3 000037a8: PUSH1 0xe0 000037aa: SHL 000037ab: DUP5 000037ac: DUP5 000037ad: PUSH1 0x40 000037af: MLOAD 000037b0: PUSH1 0x24 000037b2: ADD 000037b3: DUP1 000037b4: DUP4 000037b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000037ca: AND 000037cb: DUP2 000037cc: MSTORE 000037cd: PUSH1 0x20 000037cf: ADD 000037d0: DUP3 000037d1: DUP2 000037d2: MSTORE 000037d3: PUSH1 0x20 000037d5: ADD 000037d6: SWAP3 000037d7: POP 000037d8: POP 000037d9: POP 000037da: PUSH1 0x40 000037dc: MLOAD 000037dd: PUSH1 0x20 000037df: DUP2 000037e0: DUP4 000037e1: SUB 000037e2: SUB 000037e3: DUP2 000037e4: MSTORE 000037e5: SWAP1 000037e6: PUSH1 0x40 000037e8: MSTORE 000037e9: SWAP1 000037ea: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00003807: NOT 00003808: AND 00003809: PUSH1 0x20 0000380b: DUP3 0000380c: ADD 0000380d: DUP1 0000380e: MLOAD 0000380f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000382c: DUP4 0000382d: DUP2 0000382e: DUP4 0000382f: AND 00003830: OR 00003831: DUP4 00003832: MSTORE 00003833: POP 00003834: POP 00003835: POP 00003836: POP 00003837: PUSH2 0x3a88 0000383a: JUMP 0000383b: JUMPDEST 0000383c: POP 0000383d: POP 0000383e: POP 0000383f: JUMP 00003840: JUMPDEST 00003841: PUSH1 0x00 00003843: PUSH1 0x01 00003845: SWAP1 00003846: SLOAD 00003847: SWAP1 00003848: PUSH2 0x0100 0000384b: EXP 0000384c: SWAP1 0000384d: DIV 0000384e: PUSH1 0xff 00003850: AND 00003851: DUP1 00003852: PUSH2 0x385f 00003855: JUMPI 00003856: POP 00003857: PUSH2 0x385e 0000385a: PUSH2 0x2d94 0000385d: JUMP 0000385e: JUMPDEST 0000385f: JUMPDEST 00003860: DUP1 00003861: PUSH2 0x3875 00003864: JUMPI 00003865: POP 00003866: PUSH1 0x00 00003868: DUP1 00003869: SLOAD 0000386a: SWAP1 0000386b: PUSH2 0x0100 0000386e: EXP 0000386f: SWAP1 00003870: DIV 00003871: PUSH1 0xff 00003873: AND 00003874: ISZERO 00003875: JUMPDEST 00003876: PUSH2 0x38ca 00003879: JUMPI 0000387a: PUSH1 0x40 0000387c: MLOAD 0000387d: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000389e: DUP2 0000389f: MSTORE 000038a0: PUSH1 0x04 000038a2: ADD 000038a3: DUP1 000038a4: DUP1 000038a5: PUSH1 0x20 000038a7: ADD 000038a8: DUP3 000038a9: DUP2 000038aa: SUB 000038ab: DUP3 000038ac: MSTORE 000038ad: PUSH1 0x2e 000038af: DUP2 000038b0: MSTORE 000038b1: PUSH1 0x20 000038b3: ADD 000038b4: DUP1 000038b5: PUSH2 0x3f99 000038b8: PUSH1 0x2e 000038ba: SWAP2 000038bb: CODECOPY 000038bc: PUSH1 0x40 000038be: ADD 000038bf: SWAP2 000038c0: POP 000038c1: POP 000038c2: PUSH1 0x40 000038c4: MLOAD 000038c5: DUP1 000038c6: SWAP2 000038c7: SUB 000038c8: SWAP1 000038c9: REVERT 000038ca: JUMPDEST 000038cb: PUSH1 0x00 000038cd: DUP1 000038ce: PUSH1 0x01 000038d0: SWAP1 000038d1: SLOAD 000038d2: SWAP1 000038d3: PUSH2 0x0100 000038d6: EXP 000038d7: SWAP1 000038d8: DIV 000038d9: PUSH1 0xff 000038db: AND 000038dc: ISZERO 000038dd: SWAP1 000038de: POP 000038df: DUP1 000038e0: ISZERO 000038e1: PUSH2 0x391a 000038e4: JUMPI 000038e5: PUSH1 0x01 000038e7: PUSH1 0x00 000038e9: PUSH1 0x01 000038eb: PUSH2 0x0100 000038ee: EXP 000038ef: DUP2 000038f0: SLOAD 000038f1: DUP2 000038f2: PUSH1 0xff 000038f4: MUL 000038f5: NOT 000038f6: AND 000038f7: SWAP1 000038f8: DUP4 000038f9: ISZERO 000038fa: ISZERO 000038fb: MUL 000038fc: OR 000038fd: SWAP1 000038fe: SSTORE 000038ff: POP 00003900: PUSH1 0x01 00003902: PUSH1 0x00 00003904: DUP1 00003905: PUSH2 0x0100 00003908: EXP 00003909: DUP2 0000390a: SLOAD 0000390b: DUP2 0000390c: PUSH1 0xff 0000390e: MUL 0000390f: NOT 00003910: AND 00003911: SWAP1 00003912: DUP4 00003913: ISZERO 00003914: ISZERO 00003915: MUL 00003916: OR 00003917: SWAP1 00003918: SSTORE 00003919: POP 0000391a: JUMPDEST 0000391b: DUP1 0000391c: ISZERO 0000391d: PUSH2 0x393b 00003920: JUMPI 00003921: PUSH1 0x00 00003923: DUP1 00003924: PUSH1 0x01 00003926: PUSH2 0x0100 00003929: EXP 0000392a: DUP2 0000392b: SLOAD 0000392c: DUP2 0000392d: PUSH1 0xff 0000392f: MUL 00003930: NOT 00003931: AND 00003932: SWAP1 00003933: DUP4 00003934: ISZERO 00003935: ISZERO 00003936: MUL 00003937: OR 00003938: SWAP1 00003939: SSTORE 0000393a: POP 0000393b: JUMPDEST 0000393c: POP 0000393d: JUMP 0000393e: JUMPDEST 0000393f: PUSH1 0x00 00003941: PUSH1 0x01 00003943: SWAP1 00003944: SLOAD 00003945: SWAP1 00003946: PUSH2 0x0100 00003949: EXP 0000394a: SWAP1 0000394b: DIV 0000394c: PUSH1 0xff 0000394e: AND 0000394f: DUP1 00003950: PUSH2 0x395d 00003953: JUMPI 00003954: POP 00003955: PUSH2 0x395c 00003958: PUSH2 0x2d94 0000395b: JUMP 0000395c: JUMPDEST 0000395d: JUMPDEST 0000395e: DUP1 0000395f: PUSH2 0x3973 00003962: JUMPI 00003963: POP 00003964: PUSH1 0x00 00003966: DUP1 00003967: SLOAD 00003968: SWAP1 00003969: PUSH2 0x0100 0000396c: EXP 0000396d: SWAP1 0000396e: DIV 0000396f: PUSH1 0xff 00003971: AND 00003972: ISZERO 00003973: JUMPDEST 00003974: PUSH2 0x39c8 00003977: JUMPI 00003978: PUSH1 0x40 0000397a: MLOAD 0000397b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000399c: DUP2 0000399d: MSTORE 0000399e: PUSH1 0x04 000039a0: ADD 000039a1: DUP1 000039a2: DUP1 000039a3: PUSH1 0x20 000039a5: ADD 000039a6: DUP3 000039a7: DUP2 000039a8: SUB 000039a9: DUP3 000039aa: MSTORE 000039ab: PUSH1 0x2e 000039ad: DUP2 000039ae: MSTORE 000039af: PUSH1 0x20 000039b1: ADD 000039b2: DUP1 000039b3: PUSH2 0x3f99 000039b6: PUSH1 0x2e 000039b8: SWAP2 000039b9: CODECOPY 000039ba: PUSH1 0x40 000039bc: ADD 000039bd: SWAP2 000039be: POP 000039bf: POP 000039c0: PUSH1 0x40 000039c2: MLOAD 000039c3: DUP1 000039c4: SWAP2 000039c5: SUB 000039c6: SWAP1 000039c7: REVERT 000039c8: JUMPDEST 000039c9: PUSH1 0x00 000039cb: DUP1 000039cc: PUSH1 0x01 000039ce: SWAP1 000039cf: SLOAD 000039d0: SWAP1 000039d1: PUSH2 0x0100 000039d4: EXP 000039d5: SWAP1 000039d6: DIV 000039d7: PUSH1 0xff 000039d9: AND 000039da: ISZERO 000039db: SWAP1 000039dc: POP 000039dd: DUP1 000039de: ISZERO 000039df: PUSH2 0x3a18 000039e2: JUMPI 000039e3: PUSH1 0x01 000039e5: PUSH1 0x00 000039e7: PUSH1 0x01 000039e9: PUSH2 0x0100 000039ec: EXP 000039ed: DUP2 000039ee: SLOAD 000039ef: DUP2 000039f0: PUSH1 0xff 000039f2: MUL 000039f3: NOT 000039f4: AND 000039f5: SWAP1 000039f6: DUP4 000039f7: ISZERO 000039f8: ISZERO 000039f9: MUL 000039fa: OR 000039fb: SWAP1 000039fc: SSTORE 000039fd: POP 000039fe: PUSH1 0x01 00003a00: PUSH1 0x00 00003a02: DUP1 00003a03: PUSH2 0x0100 00003a06: EXP 00003a07: DUP2 00003a08: SLOAD 00003a09: DUP2 00003a0a: PUSH1 0xff 00003a0c: MUL 00003a0d: NOT 00003a0e: AND 00003a0f: SWAP1 00003a10: DUP4 00003a11: ISZERO 00003a12: ISZERO 00003a13: MUL 00003a14: OR 00003a15: SWAP1 00003a16: SSTORE 00003a17: POP 00003a18: JUMPDEST 00003a19: DUP3 00003a1a: PUSH1 0x68 00003a1c: SWAP1 00003a1d: DUP1 00003a1e: MLOAD 00003a1f: SWAP1 00003a20: PUSH1 0x20 00003a22: ADD 00003a23: SWAP1 00003a24: PUSH2 0x3a2e 00003a27: SWAP3 00003a28: SWAP2 00003a29: SWAP1 00003a2a: PUSH2 0x3da8 00003a2d: JUMP 00003a2e: JUMPDEST 00003a2f: POP 00003a30: DUP2 00003a31: PUSH1 0x69 00003a33: SWAP1 00003a34: DUP1 00003a35: MLOAD 00003a36: SWAP1 00003a37: PUSH1 0x20 00003a39: ADD 00003a3a: SWAP1 00003a3b: PUSH2 0x3a45 00003a3e: SWAP3 00003a3f: SWAP2 00003a40: SWAP1 00003a41: PUSH2 0x3da8 00003a44: JUMP 00003a45: JUMPDEST 00003a46: POP 00003a47: PUSH1 0x12 00003a49: PUSH1 0x6a 00003a4b: PUSH1 0x00 00003a4d: PUSH2 0x0100 00003a50: EXP 00003a51: DUP2 00003a52: SLOAD 00003a53: DUP2 00003a54: PUSH1 0xff 00003a56: MUL 00003a57: NOT 00003a58: AND 00003a59: SWAP1 00003a5a: DUP4 00003a5b: PUSH1 0xff 00003a5d: AND 00003a5e: MUL 00003a5f: OR 00003a60: SWAP1 00003a61: SSTORE 00003a62: POP 00003a63: DUP1 00003a64: ISZERO 00003a65: PUSH2 0x3a83 00003a68: JUMPI 00003a69: PUSH1 0x00 00003a6b: DUP1 00003a6c: PUSH1 0x01 00003a6e: PUSH2 0x0100 00003a71: EXP 00003a72: DUP2 00003a73: SLOAD 00003a74: DUP2 00003a75: PUSH1 0xff 00003a77: MUL 00003a78: NOT 00003a79: AND 00003a7a: SWAP1 00003a7b: DUP4 00003a7c: ISZERO 00003a7d: ISZERO 00003a7e: MUL 00003a7f: OR 00003a80: SWAP1 00003a81: SSTORE 00003a82: POP 00003a83: JUMPDEST 00003a84: POP 00003a85: POP 00003a86: POP 00003a87: JUMP 00003a88: JUMPDEST 00003a89: PUSH2 0x3aa7 00003a8c: DUP3 00003a8d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003aa2: AND 00003aa3: PUSH2 0x3cd3 00003aa6: JUMP 00003aa7: JUMPDEST 00003aa8: PUSH2 0x3b19 00003aab: JUMPI 00003aac: PUSH1 0x40 00003aae: MLOAD 00003aaf: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00003ad0: DUP2 00003ad1: MSTORE 00003ad2: PUSH1 0x04 00003ad4: ADD 00003ad5: DUP1 00003ad6: DUP1 00003ad7: PUSH1 0x20 00003ad9: ADD 00003ada: DUP3 00003adb: DUP2 00003adc: SUB 00003add: DUP3 00003ade: MSTORE 00003adf: PUSH1 0x1f 00003ae1: DUP2 00003ae2: MSTORE 00003ae3: PUSH1 0x20 00003ae5: ADD 00003ae6: DUP1 00003ae7: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400 00003b08: DUP2 00003b09: MSTORE 00003b0a: POP 00003b0b: PUSH1 0x20 00003b0d: ADD 00003b0e: SWAP2 00003b0f: POP 00003b10: POP 00003b11: PUSH1 0x40 00003b13: MLOAD 00003b14: DUP1 00003b15: SWAP2 00003b16: SUB 00003b17: SWAP1 00003b18: REVERT 00003b19: JUMPDEST 00003b1a: PUSH1 0x00 00003b1c: PUSH1 0x60 00003b1e: DUP4 00003b1f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003b34: AND 00003b35: DUP4 00003b36: PUSH1 0x40 00003b38: MLOAD 00003b39: DUP1 00003b3a: DUP3 00003b3b: DUP1 00003b3c: MLOAD 00003b3d: SWAP1 00003b3e: PUSH1 0x20 00003b40: ADD 00003b41: SWAP1 00003b42: DUP1 00003b43: DUP4 00003b44: DUP4 00003b45: JUMPDEST 00003b46: PUSH1 0x20 00003b48: DUP4 00003b49: LT 00003b4a: PUSH2 0x3b68 00003b4d: JUMPI 00003b4e: DUP1 00003b4f: MLOAD 00003b50: DUP3 00003b51: MSTORE 00003b52: PUSH1 0x20 00003b54: DUP3 00003b55: ADD 00003b56: SWAP2 00003b57: POP 00003b58: PUSH1 0x20 00003b5a: DUP2 00003b5b: ADD 00003b5c: SWAP1 00003b5d: POP 00003b5e: PUSH1 0x20 00003b60: DUP4 00003b61: SUB 00003b62: SWAP3 00003b63: POP 00003b64: PUSH2 0x3b45 00003b67: JUMP 00003b68: JUMPDEST 00003b69: PUSH1 0x01 00003b6b: DUP4 00003b6c: PUSH1 0x20 00003b6e: SUB 00003b6f: PUSH2 0x0100 00003b72: EXP 00003b73: SUB 00003b74: DUP1 00003b75: NOT 00003b76: DUP3 00003b77: MLOAD 00003b78: AND 00003b79: DUP2 00003b7a: DUP5 00003b7b: MLOAD 00003b7c: AND 00003b7d: DUP1 00003b7e: DUP3 00003b7f: OR 00003b80: DUP6 00003b81: MSTORE 00003b82: POP 00003b83: POP 00003b84: POP 00003b85: POP 00003b86: POP 00003b87: POP 00003b88: SWAP1 00003b89: POP 00003b8a: ADD 00003b8b: SWAP2 00003b8c: POP 00003b8d: POP 00003b8e: PUSH1 0x00 00003b90: PUSH1 0x40 00003b92: MLOAD 00003b93: DUP1 00003b94: DUP4 00003b95: SUB 00003b96: DUP2 00003b97: PUSH1 0x00 00003b99: DUP7 00003b9a: GAS 00003b9b: CALL 00003b9c: SWAP2 00003b9d: POP 00003b9e: POP 00003b9f: RETURNDATASIZE 00003ba0: DUP1 00003ba1: PUSH1 0x00 00003ba3: DUP2 00003ba4: EQ 00003ba5: PUSH2 0x3bca 00003ba8: JUMPI 00003ba9: PUSH1 0x40 00003bab: MLOAD 00003bac: SWAP2 00003bad: POP 00003bae: PUSH1 0x1f 00003bb0: NOT 00003bb1: PUSH1 0x3f 00003bb3: RETURNDATASIZE 00003bb4: ADD 00003bb5: AND 00003bb6: DUP3 00003bb7: ADD 00003bb8: PUSH1 0x40 00003bba: MSTORE 00003bbb: RETURNDATASIZE 00003bbc: DUP3 00003bbd: MSTORE 00003bbe: RETURNDATASIZE 00003bbf: PUSH1 0x00 00003bc1: PUSH1 0x20 00003bc3: DUP5 00003bc4: ADD 00003bc5: RETURNDATACOPY 00003bc6: PUSH2 0x3bcf 00003bc9: JUMP 00003bca: JUMPDEST 00003bcb: PUSH1 0x60 00003bcd: SWAP2 00003bce: POP 00003bcf: JUMPDEST 00003bd0: POP 00003bd1: SWAP2 00003bd2: POP 00003bd3: SWAP2 00003bd4: POP 00003bd5: DUP2 00003bd6: PUSH2 0x3c47 00003bd9: JUMPI 00003bda: PUSH1 0x40 00003bdc: MLOAD 00003bdd: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00003bfe: DUP2 00003bff: MSTORE 00003c00: PUSH1 0x04 00003c02: ADD 00003c03: DUP1 00003c04: DUP1 00003c05: PUSH1 0x20 00003c07: ADD 00003c08: DUP3 00003c09: DUP2 00003c0a: SUB 00003c0b: DUP3 00003c0c: MSTORE 00003c0d: PUSH1 0x20 00003c0f: DUP2 00003c10: MSTORE 00003c11: PUSH1 0x20 00003c13: ADD 00003c14: DUP1 00003c15: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00003c36: DUP2 00003c37: MSTORE 00003c38: POP 00003c39: PUSH1 0x20 00003c3b: ADD 00003c3c: SWAP2 00003c3d: POP 00003c3e: POP 00003c3f: PUSH1 0x40 00003c41: MLOAD 00003c42: DUP1 00003c43: SWAP2 00003c44: SUB 00003c45: SWAP1 00003c46: REVERT 00003c47: JUMPDEST 00003c48: PUSH1 0x00 00003c4a: DUP2 00003c4b: MLOAD 00003c4c: GT 00003c4d: ISZERO 00003c4e: PUSH2 0x3ccd 00003c51: JUMPI 00003c52: DUP1 00003c53: DUP1 00003c54: PUSH1 0x20 00003c56: ADD 00003c57: SWAP1 00003c58: MLOAD 00003c59: PUSH1 0x20 00003c5b: DUP2 00003c5c: LT 00003c5d: ISZERO 00003c5e: PUSH2 0x3c66 00003c61: JUMPI 00003c62: PUSH1 0x00 00003c64: DUP1 00003c65: REVERT 00003c66: JUMPDEST 00003c67: DUP2 00003c68: ADD 00003c69: SWAP1 00003c6a: DUP1 00003c6b: DUP1 00003c6c: MLOAD 00003c6d: SWAP1 00003c6e: PUSH1 0x20 00003c70: ADD 00003c71: SWAP1 00003c72: SWAP3 00003c73: SWAP2 00003c74: SWAP1 00003c75: POP 00003c76: POP 00003c77: POP 00003c78: PUSH2 0x3ccc 00003c7b: JUMPI 00003c7c: PUSH1 0x40 00003c7e: MLOAD 00003c7f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00003ca0: DUP2 00003ca1: MSTORE 00003ca2: PUSH1 0x04 00003ca4: ADD 00003ca5: DUP1 00003ca6: DUP1 00003ca7: PUSH1 0x20 00003ca9: ADD 00003caa: DUP3 00003cab: DUP2 00003cac: SUB 00003cad: DUP3 00003cae: MSTORE 00003caf: PUSH1 0x2a 00003cb1: DUP2 00003cb2: MSTORE 00003cb3: PUSH1 0x20 00003cb5: ADD 00003cb6: DUP1 00003cb7: PUSH2 0x4058 00003cba: PUSH1 0x2a 00003cbc: SWAP2 00003cbd: CODECOPY 00003cbe: PUSH1 0x40 00003cc0: ADD 00003cc1: SWAP2 00003cc2: POP 00003cc3: POP 00003cc4: PUSH1 0x40 00003cc6: MLOAD 00003cc7: DUP1 00003cc8: SWAP2 00003cc9: SUB 00003cca: SWAP1 00003ccb: REVERT 00003ccc: JUMPDEST 00003ccd: JUMPDEST 00003cce: POP 00003ccf: POP 00003cd0: POP 00003cd1: POP 00003cd2: JUMP 00003cd3: JUMPDEST 00003cd4: PUSH1 0x00 00003cd6: DUP1 00003cd7: PUSH1 0x00 00003cd9: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 00003cfa: PUSH1 0x00 00003cfc: SHL 00003cfd: SWAP1 00003cfe: POP 00003cff: DUP4 00003d00: EXTCODEHASH 00003d01: SWAP2 00003d02: POP 00003d03: DUP1 00003d04: DUP3 00003d05: EQ 00003d06: ISZERO 00003d07: DUP1 00003d08: ISZERO 00003d09: PUSH2 0x3d15 00003d0c: JUMPI 00003d0d: POP 00003d0e: PUSH1 0x00 00003d10: DUP1 00003d11: SHL 00003d12: DUP3 00003d13: EQ 00003d14: ISZERO 00003d15: JUMPDEST 00003d16: SWAP3 00003d17: POP 00003d18: POP 00003d19: POP 00003d1a: SWAP2 00003d1b: SWAP1 00003d1c: POP 00003d1d: JUMP 00003d1e: JUMPDEST 00003d1f: DUP3 00003d20: DUP1 00003d21: SLOAD 00003d22: DUP3 00003d23: DUP3 00003d24: SSTORE 00003d25: SWAP1 00003d26: PUSH1 0x00 00003d28: MSTORE 00003d29: PUSH1 0x20 00003d2b: PUSH1 0x00 00003d2d: KECCAK256 00003d2e: SWAP1 00003d2f: DUP2 00003d30: ADD 00003d31: SWAP3 00003d32: DUP3 00003d33: ISZERO 00003d34: PUSH2 0x3d97 00003d37: JUMPI 00003d38: SWAP2 00003d39: PUSH1 0x20 00003d3b: MUL 00003d3c: DUP3 00003d3d: ADD 00003d3e: JUMPDEST 00003d3f: DUP3 00003d40: DUP2 00003d41: GT 00003d42: ISZERO 00003d43: PUSH2 0x3d96 00003d46: JUMPI 00003d47: DUP3 00003d48: MLOAD 00003d49: DUP3 00003d4a: PUSH1 0x00 00003d4c: PUSH2 0x0100 00003d4f: EXP 00003d50: DUP2 00003d51: SLOAD 00003d52: DUP2 00003d53: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003d68: MUL 00003d69: NOT 00003d6a: AND 00003d6b: SWAP1 00003d6c: DUP4 00003d6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003d82: AND 00003d83: MUL 00003d84: OR 00003d85: SWAP1 00003d86: SSTORE 00003d87: POP 00003d88: SWAP2 00003d89: PUSH1 0x20 00003d8b: ADD 00003d8c: SWAP2 00003d8d: SWAP1 00003d8e: PUSH1 0x01 00003d90: ADD 00003d91: SWAP1 00003d92: PUSH2 0x3d3e 00003d95: JUMP 00003d96: JUMPDEST 00003d97: JUMPDEST 00003d98: POP 00003d99: SWAP1 00003d9a: POP 00003d9b: PUSH2 0x3da4 00003d9e: SWAP2 00003d9f: SWAP1 00003da0: PUSH2 0x3e28 00003da3: JUMP 00003da4: JUMPDEST 00003da5: POP 00003da6: SWAP1 00003da7: JUMP 00003da8: JUMPDEST 00003da9: DUP3 00003daa: DUP1 00003dab: SLOAD 00003dac: PUSH1 0x01 00003dae: DUP2 00003daf: PUSH1 0x01 00003db1: AND 00003db2: ISZERO 00003db3: PUSH2 0x0100 00003db6: MUL 00003db7: SUB 00003db8: AND 00003db9: PUSH1 0x02 00003dbb: SWAP1 00003dbc: DIV 00003dbd: SWAP1 00003dbe: PUSH1 0x00 00003dc0: MSTORE 00003dc1: PUSH1 0x20 00003dc3: PUSH1 0x00 00003dc5: KECCAK256 00003dc6: SWAP1 00003dc7: PUSH1 0x1f 00003dc9: ADD 00003dca: PUSH1 0x20 00003dcc: SWAP1 00003dcd: DIV 00003dce: DUP2 00003dcf: ADD 00003dd0: SWAP3 00003dd1: DUP3 00003dd2: PUSH1 0x1f 00003dd4: LT 00003dd5: PUSH2 0x3de9 00003dd8: JUMPI 00003dd9: DUP1 00003dda: MLOAD 00003ddb: PUSH1 0xff 00003ddd: NOT 00003dde: AND 00003ddf: DUP4 00003de0: DUP1 00003de1: ADD 00003de2: OR 00003de3: DUP6 00003de4: SSTORE 00003de5: PUSH2 0x3e17 00003de8: JUMP 00003de9: JUMPDEST 00003dea: DUP3 00003deb: DUP1 00003dec: ADD 00003ded: PUSH1 0x01 00003def: ADD 00003df0: DUP6 00003df1: SSTORE 00003df2: DUP3 00003df3: ISZERO 00003df4: PUSH2 0x3e17 00003df7: JUMPI 00003df8: SWAP2 00003df9: DUP3 00003dfa: ADD 00003dfb: JUMPDEST 00003dfc: DUP3 00003dfd: DUP2 00003dfe: GT 00003dff: ISZERO 00003e00: PUSH2 0x3e16 00003e03: JUMPI 00003e04: DUP3 00003e05: MLOAD 00003e06: DUP3 00003e07: SSTORE 00003e08: SWAP2 00003e09: PUSH1 0x20 00003e0b: ADD 00003e0c: SWAP2 00003e0d: SWAP1 00003e0e: PUSH1 0x01 00003e10: ADD 00003e11: SWAP1 00003e12: PUSH2 0x3dfb 00003e15: JUMP 00003e16: JUMPDEST 00003e17: JUMPDEST 00003e18: POP 00003e19: SWAP1 00003e1a: POP 00003e1b: PUSH2 0x3e24 00003e1e: SWAP2 00003e1f: SWAP1 00003e20: PUSH2 0x3e63 00003e23: JUMP 00003e24: JUMPDEST 00003e25: POP 00003e26: SWAP1 00003e27: JUMP 00003e28: JUMPDEST 00003e29: JUMPDEST 00003e2a: DUP1 00003e2b: DUP3 00003e2c: GT 00003e2d: ISZERO 00003e2e: PUSH2 0x3e5f 00003e31: JUMPI 00003e32: PUSH1 0x00 00003e34: DUP2 00003e35: DUP2 00003e36: PUSH2 0x0100 00003e39: EXP 00003e3a: DUP2 00003e3b: SLOAD 00003e3c: SWAP1 00003e3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003e52: MUL 00003e53: NOT 00003e54: AND 00003e55: SWAP1 00003e56: SSTORE 00003e57: POP 00003e58: PUSH1 0x01 00003e5a: ADD 00003e5b: PUSH2 0x3e29 00003e5e: JUMP 00003e5f: JUMPDEST 00003e60: POP 00003e61: SWAP1 00003e62: JUMP 00003e63: JUMPDEST 00003e64: JUMPDEST 00003e65: DUP1 00003e66: DUP3 00003e67: GT 00003e68: ISZERO 00003e69: PUSH2 0x3e7c 00003e6c: JUMPI 00003e6d: PUSH1 0x00 00003e6f: DUP2 00003e70: PUSH1 0x00 00003e72: SWAP1 00003e73: SSTORE 00003e74: POP 00003e75: PUSH1 0x01 00003e77: ADD 00003e78: PUSH2 0x3e64 00003e7b: JUMP 00003e7c: JUMPDEST 00003e7d: POP 00003e7e: SWAP1 00003e7f: JUMP 00003e80: INVALID 00003e81: GASLIMIT 00003e82: MSTORE 00003e83: NUMBER 00003e84: ORIGIN 00003e85: ADDRESS 00003e86: GASPRICE 00003e87: KECCAK256 00003e88: PUSH21 0x72616e7366657220746f20746865207a65726f2061 00003e9e: PUSH5 0x6472657373 00003ea4: GASLIMIT 00003ea5: MSTORE 00003ea6: NUMBER 00003ea7: ORIGIN 00003ea8: ADDRESS 00003ea9: GASPRICE 00003eaa: KECCAK256 00003eab: PUSH3 0x75726e 00003eaf: KECCAK256 00003eb0: PUSH2 0x6d6f 00003eb3: PUSH22 0x6e7420657863656564732062616c616e636545524332 00003eca: ADDRESS 00003ecb: GASPRICE 00003ecc: KECCAK256 00003ecd: PUSH2 0x7070 00003ed0: PUSH19 0x6f766520746f20746865207a65726f20616464 00003ee4: PUSH19 0x657373574158473a20696e70757420616d6f75 00003ef8: PUSH15 0x74206d75737420626520657175616c 00003f08: KECCAK256 00003f09: PUSH16 0x72206c6f776572207468616e20636972 00003f1a: PUSH4 0x756c6174 00003f1f: PUSH10 0x6e6720737570706c792e 00003f2a: GASLIMIT 00003f2b: MSTORE 00003f2c: NUMBER 00003f2d: ORIGIN 00003f2e: ADDRESS 00003f2f: GASPRICE 00003f30: KECCAK256 00003f31: PUSH21 0x72616e7366657220616d6f756e7420657863656564 00003f47: PUSH20 0x2062616c616e6365536166654d6174683a206d75 00003f5c: PUSH13 0x7469706c69636174696f6e206f 00003f6a: PUSH23 0x6572666c6f7745524332303a207472616e736665722061 00003f82: PUSH14 0x6f756e7420657863656564732061 00003f91: PUSH13 0x6c6f77616e6365436f6e747261 00003f9f: PUSH4 0x7420696e 00003fa4: PUSH20 0x74616e63652068617320616c7265616479206265 00003fb9: PUSH6 0x6e20696e6974 00003fc0: PUSH10 0x616c697a656445524332 00003fcb: ADDRESS 00003fcc: GASPRICE 00003fcd: KECCAK256 00003fce: PUSH3 0x75726e 00003fd2: KECCAK256 00003fd3: PUSH7 0x726f6d20746865 00003fdb: KECCAK256 00003fdc: PUSH27 0x65726f206164647265737345524332303a207472616e7366657220 00003ff8: PUSH7 0x726f6d20746865 00004000: KECCAK256 00004001: PUSH27 0x65726f206164647265737345524332303a20617070726f76652066 0000401d: PUSH19 0x6f6d20746865207a65726f2061646472657373 00004031: JUMPI 00004032: COINBASE 00004033: PC 00004034: SELFBALANCE 00004035: GASPRICE 00004036: KECCAK256 00004037: PUSH21 0x6f74616c537570706c79206d75737420657175616c 0000404d: KECCAK256 0000404e: BALANCE 0000404f: ADDRESS 00004050: KECCAK256 00004051: PUSH14 0x696c6c696f6e5361666545524332 00004060: ADDRESS 00004061: GASPRICE 00004062: KECCAK256 00004063: GASLIMIT 00004064: MSTORE 00004065: NUMBER 00004066: ORIGIN 00004067: ADDRESS 00004068: KECCAK256 00004069: PUSH16 0x7065726174696f6e20646964206e6f74 0000407a: KECCAK256 0000407b: PUSH20 0x7563636565645361666545524332303a20617070 00004090: PUSH19 0x6f76652066726f6d206e6f6e2d7a65726f2074 000040a4: PUSH16 0x206e6f6e2d7a65726f20616c6c6f7761 000040b5: PUSH15 0x636545524332303a20646563726561 000040c5: PUSH20 0x656420616c6c6f77616e63652062656c6f77207a 000040da: PUSH6 0x726fa2646970 000040e1: PUSH7 0x73582212209807 000040e9: UNKNOWN(0xAD) 000040ea: DELEGATECALL 000040eb: UNKNOWN(0xB0) 000040ec: UNKNOWN(0xAF) 000040ed: UNKNOWN(0xF7) 000040ee: DUP11 000040ef: UNKNOWN(0xC2) 000040f0: PUSH11 0xab1d7c5e9190cc10d64ef3 000040fc: DUP1 000040fd: UNKNOWN(0x23) 000040fe: DUP7 000040ff: UNKNOWN(0x25) 00004100: UNKNOWN(0xE3) 00004101: SWAP13 00004102: DUP7 00004103: UNKNOWN(0x23) 00004104: PUSH5 0xdd7464736f 0000410a: PUSH13
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xdf23efd9",
"selector": "0xdf23efd9",
"calldata_variants": [
"0xdf23efd9",
"0xdf23efd90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe2fdcc17",
"selector": "0xe2fdcc17",
"calldata_variants": [
"0xe2fdcc17",
"0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf83ecf99",
"selector": "0xf83ecf99",
"calldata_variants": [
"0xf83ecf99",
"0xf83ecf990000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfe3fbca3",
"selector": "0xfe3fbca3",
"calldata_variants": [
"0xfe3fbca3",
"0xfe3fbca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd2e87561",
"selector": "0xd2e87561",
"calldata_variants": [
"0xd2e87561",
"0xd2e875610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x72963c6c",
"selector": "0x72963c6c",
"calldata_variants": [
"0x72963c6c",
"0x72963c6c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 16004,
"type": "tx_origin_used"
},
{
"pc": 16039,
"type": "tx_origin_used"
},
{
"pc": 16173,
"type": "tx_origin_used"
},
{
"pc": 16486,
"type": "tx_origin_used"
}
]
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c
call_targets:
0xaa76bccaa98d8598992b2ddfc833577af6a672e5
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xaa76bccaa98d8598992b2ddfc833577af6a672e5"
],
"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": "0xdf23efd9",
"selector": "0xdf23efd9",
"calldata_variants": [
"0xdf23efd9",
"0xdf23efd90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe2fdcc17",
"selector": "0xe2fdcc17",
"calldata_variants": [
"0xe2fdcc17",
"0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf83ecf99",
"selector": "0xf83ecf99",
"calldata_variants": [
"0xf83ecf99",
"0xf83ecf990000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfe3fbca3",
"selector": "0xfe3fbca3",
"calldata_variants": [
"0xfe3fbca3",
"0xfe3fbca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd2e87561",
"selector": "0xd2e87561",
"calldata_variants": [
"0xd2e87561",
"0xd2e875610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x72963c6c",
"selector": "0x72963c6c",
"calldata_variants": [
"0x72963c6c",
"0x72963c6c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4425,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4646,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 11407,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [
{
"pc": 16004,
"type": "tx_origin_used"
},
{
"pc": 16039,
"type": "tx_origin_used"
},
{
"pc": 16173,
"type": "tx_origin_used"
},
{
"pc": 16486,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 4
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c
call_targets:
0xaa76bccaa98d8598992b2ddfc833577af6a672e5
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x059f43278c8204d0bb73232f3fe9a8ffb322a9fb247ab47f72fef3b9e5d3783c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xaa76bccaa98d8598992b2ddfc833577af6a672e5"
],
"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": "0xdf23efd9",
"selector": "0xdf23efd9",
"calldata_variants": [
"0xdf23efd9",
"0xdf23efd90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe2fdcc17",
"selector": "0xe2fdcc17",
"calldata_variants": [
"0xe2fdcc17",
"0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf83ecf99",
"selector": "0xf83ecf99",
"calldata_variants": [
"0xf83ecf99",
"0xf83ecf990000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfe3fbca3",
"selector": "0xfe3fbca3",
"calldata_variants": [
"0xfe3fbca3",
"0xfe3fbca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd2e87561",
"selector": "0xd2e87561",
"calldata_variants": [
"0xd2e87561",
"0xd2e875610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x72963c6c",
"selector": "0x72963c6c",
"calldata_variants": [
"0x72963c6c",
"0x72963c6c0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4425,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4646,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 11407,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": [
{
"pc": 16004,
"type": "tx_origin_used"
},
{
"pc": 16039,
"type": "tx_origin_used"
},
{
"pc": 16173,
"type": "tx_origin_used"
},
{
"pc": 16486,
"type": "tx_origin_used"
}
]
}
|
| 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": 18
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 15
}
|