1d8ee4e7-546b-49b6-a785-21b6dbd061e5
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 |
|---|---|---|---|---|
| 30731 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 75382 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 75383 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 75384 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 75385 | capability.graph | complete | 1 / 3 | 1 week ago |
| 75386 | detector.run | complete | 1 / 3 | 1 week ago |
| 75387 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:516611] OpenAI Codex v0.77.0 (research preview)
[codex:516611] --------
[codex:516611] workdir: /tmp/codex-multi-6_j7klpi
[codex:516611] model: gpt-5.2-codex
[codex:516611] provider: openai
[codex:516611] approval: never
[codex:516611] sandbox: read-only
[codex:516611] reasoning effort: xhigh
[codex:516611] reasoning summaries: auto
[codex:516611] session id: 019b70ac-ce5c-7ea0-b53d-f26f5eb25603
[codex:516611] --------
[codex:516611] user
[codex:516611] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:516611] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:516611] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:516611]
[codex:516611] Scope rules:
[codex:516611] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:516611] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:516611]
[codex:516611] Output MUST be valid JSON matching the provided schema.
[codex:516611] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:516611] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:516611]
[codex:516611] Output constraints (IMPORTANT):
[codex:516611] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:516611] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:516611] mcp startup: no servers
[codex:516611]
[codex:516611] thinking
[codex:516611] **Preparing to read instructions**
[codex:516611] exec
[codex:516611] /bin/bash -lc ls in /tmp/codex-multi-6_j7klpi succeeded in 5ms:
[codex:516611] AUDIT_BUNDLE.txt
[codex:516611] codex-output-schema.json
[codex:516611] contracts
[codex:516611] exec
[codex:516611] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-6_j7klpi succeeded in 5ms:
[codex:516611] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:516611]
[codex:516611] ================================================================================
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol
[codex:516611] ================================================================================
[codex:516611] // SPDX-License-Identifier: MIT
[codex:516611] import "./openzeppelin/math/SafeMath.sol";
[codex:516611] import "./openzeppelin/token/ERC20/IERC20.sol";
[codex:516611] import "./openzeppelin/token/ERC20/SafeERC20.sol";
[codex:516611] import "./openzeppelin/access/Ownable.sol";
[codex:516611] import "./openzeppelin/utils/Address.sol";
[codex:516611]
[codex:516611] pragma solidity ^0.7.1;
[codex:516611]
[codex:516611] contract LockUpPool is Initializable, OwnableUpgradeSafe {
[codex:516611] using Address for address;
[codex:516611] using SafeMath for uint256;
[codex:516611] using SafeERC20 for IERC20;
[codex:516611]
[codex:516611] // NOTE: didn't use actual constant variable just in case we may chage it on upgrades
[codex:516611]
[codex:516611] thinking
[codex:516611] **Verifying complete AUDIT_BUNDLE content**
[codex:516611] exec
[codex:516611] /bin/bash -lc 'rg "''^FILE:" AUDIT_BUNDLE.txt' in /tmp/codex-multi-6_j7klpi succeeded in 10ms:
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/GSN/Context.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/Initializable.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/access/AccessControl.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/access/Ownable.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/math/Math.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/math/SafeMath.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/presets/ERC20PresetMinterPauser.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/ERC20.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/ERC20Burnable.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/ERC20Pausable.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/IERC20.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/SafeERC20.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/utils/Address.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/utils/EnumerableSet.sol
[codex:516611] FILE: contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/utils/Pausable.sol
[codex:516611]
[codex:516611] thinking
[codex:516611] **Verifying complete WRNRewardPool contract**
[codex:516611] exec
[codex:516611] /bin/bash -lc 'rg --files' in /tmp/codex-multi-6_j7klpi succeeded in 9ms:
[codex:516611] codex-output-schema.json
[codex:516611] AUDIT_BUNDLE.txt
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/math/SafeMath.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/math/Math.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/Initializable.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/access/AccessControl.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/access/Ownable.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/presets/ERC20PresetMinterPauser.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/ERC20Burnable.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/SafeERC20.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/ERC20Pausable.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/IERC20.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/token/ERC20/ERC20.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/utils/Pausable.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/utils/EnumerableSet.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/utils/Address.sol
[codex:516611] contracts/Users/seb/repo/hunt/neverlose/contract/contracts/openzeppelin/GSN/Context.sol
[codex:516611]
[codex:516611] thinking
[codex:516611] **Preparing to read contract files thoroughly**
[codex:516611] exec
[codex:516611] /bin/bash -lc "sed -n '1,260p' contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol" in /tmp/codex-multi-6_j7klpi succeeded in 7ms:
[codex:516611] // SPDX-License-Identifier: MIT
[codex:516611] import './openzeppelin/math/Math.sol';
[codex:516611] import './openzeppelin/presets/ERC20PresetMinterPauser.sol';
[codex:516611] import './LockUpPool.sol';
[codex:516611]
[codex:516611] pragma solidity ^0.7.1;
[codex:516611]
[codex:516611] contract WRNRewardPool is LockUpPool {
[codex:516611] using SafeMath for uint256;
[codex:516611] using SafeERC20 for ERC20PresetMinterPauserUpgradeSafe;
[codex:516611]
[codex:516611] ERC20PresetMinterPauserUpgradeSafe public WRNToken; // WRN Reward Token
[codex:516611]
[codex:516611] // NOTE: didn't use actual constant variable just in case we may chage it on upgrades
[codex:516611] uint256 public REWARD_START_BLOCK;
[codex:516611] uint256 public REWARD_END_BLOCK;
[codex:516611] uint256 public REWARD_EARLY_BONUS_END_BLOCK;
[codex:516611] uint256 public REWARD_PER_BLOCK;
[codex:516611] uint256 public REWARD_EARLY_BONUS_BOOST;
[codex:516611]
[codex:516611]
[codex:516611]
[codex:516611]
[codex:516611]
[codex:516611] thinking
[codex:516611] **Reviewing LockUpPool and WRNRewardPool vulnerabilities**
[codex:516611]
[codex:516611] I’m analyzing these contracts for upgradeability patterns, reentrancy risks, access control, and other typical vulnerabilities. There’s a tricky reentrancy scenario in `exit` due to calls to `claimBonus` before state updates, which could lead to double withdrawals if a malicious token or ERC777-style hooks exist. The `initialize` functions being public without proper access checks raise ownership takeover risks if not initialized correctly. Also, division by zero errors may occur in reward calculations if multipliers are zero, potentially causing denial-of-service. Overall, I’m weighing these findings considering ownership privileges and typical usage patterns.
[codex:516611] thinking
[codex:516611] **Examining multiplier zero and reentrancy impacts**
[codex:516611]
[codex:516611] I’m exploring how setting all pool multipliers to zero causes `claimWRN` to revert and block user exits, creating a denial-of-service risk controlled by the owner. I’m also diving into how reentrancy in `exit` combined with external token transfers might allow double withdrawals when multiple lockups exist, along with how first reward updates can skip initial rewards due to `lastRewardBlock` logic. These interplays between state updates, external calls, and access control look critical to understand thoroughly!
[codex:516611] thinking
[codex:516611] **Analyzing reentrancy effects and accounting risks**
[codex:516611]
[codex:516611] I’m reasoning through how reentrant calls within `exit` could let users withdraw one lockup’s tokens twice by manipulating totals, effectively bypassing lockup timing on other positions, especially if tokens support hooks like ERC777. The interplay between state updates and external calls here creates a subtle vulnerability with potentially early access to locked funds. I’m also considering misconfigurations and owner actions that cause division-by-zero errors and fund locking due to multiplier settings or pool additions.
[codex:516611] thinking
[codex:516611] **Reviewing arithmetic and reentrancy details with upgradeable patterns**
[codex:516611]
[codex:516611] I'm examining unchecked arithmetic on uint40 counters that could underflow without revert, leading to corrupted stats if reentrancy occurs, and how `exit` updates bonus debts and user totals correctly despite external calls. The analysis covers the risks from reentrancy triggered by token transfer hooks (like ERC777), suggesting a need for reentrancy guards or state updates before external calls, plus confirming that reward claims still work in emergency mode and that multiplier zero can cause division errors locking funds.
[codex:516611] exec
[codex:516611] /bin/bash -lc "nl -ba contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol | sed -n '90,210p'" in /tmp/codex-multi-6_j7klpi succeeded in 7ms:
[codex:516611] 90
[codex:516611] 91 PENALTY_RATE = 10;
[codex:516611] 92 PLATFORM_FEE_RATE = 3;
[codex:516611] 93 SECONDS_IN_MONTH = 2592000;
[codex:516611] 94
[codex:516611] 95 fundAddress = address(0x82CA6d313BffE56E9096b16633dfD414148D66b1);
[codex:516611] 96 }
[codex:516611] 97
[codex:516611] 98 modifier _checkPoolExists(address tokenAddress) {
[codex:516611] 99 require(tokenStats[tokenAddress].maxLockUpLimit > 0, 'POOL_NOT_FOUND');
[codex:516611] 100 _;
[codex:516611] 101 }
[codex:516611] 102
[codex:516611] 103 modifier _checkEmergencyMode() {
[codex:516611] 104 require(!emergencyMode, 'NOT_ALLOWED_IN_EMERGENCY');
[codex:516611] 105 _;
[codex:516611] 106 }
[codex:516611] 107
[codex:516611] 108 // NOTE: This should have been an internal function, but it's defined as public for unit tests
[codex:516611] 109 // Should be called on WRNRewardPool#addLockUpRewardPool
[codex:516611]
[codex:516611] thinking
[codex:516611] **Continuing reading for transfer**
[codex:516611] exec
[codex:516611] /bin/bash -lc "nl -ba contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol | sed -n '210,320p'" in /tmp/codex-multi-6_j7klpi succeeded in 7ms:
[codex:516611] 210 fee = lockUp.amount.mul(PLATFORM_FEE_RATE).div(100);
[codex:516611] 211 // revert(string(abi.encodePacked(penalty, '+', fee)));
[codex:516611] 212 } else if (force) {
[codex:516611] 213 revert('MUST_NOT_BE_FORCED');
[codex:516611] 214 }
[codex:516611] 215
[codex:516611] 216 uint256 refundAmount = lockUp.amount.sub(penalty).sub(fee);
[codex:516611] 217
[codex:516611] 218 // Update lockUp
[codex:516611] 219 lockUp.exitedAt = block.timestamp;
[codex:516611] 220
[codex:516611] 221 // Update token stats
[codex:516611] 222 TokenStats storage tokenStat = tokenStats[tokenAddress];
[codex:516611] 223 tokenStat.totalLockUp = tokenStat.totalLockUp.sub(lockUp.amount);
[codex:516611] 224 tokenStat.effectiveTotalLockUp = tokenStat.effectiveTotalLockUp.sub(lockUp.effectiveAmount);
[codex:516611] 225 tokenStat.totalPenalty = tokenStat.totalPenalty.add(penalty);
[codex:516611] 226
[codex:516611] 227 tokenStat.activeLockUpCount = tokenStat.activeLockUpCount - 1;
[codex:516611] 228 if (penalty > 0) {
[codex:516611] 229 tokenStat.brokenCount = tokenStat.brokenCount + 1;
[codex:516611]
[codex:516611] thinking
[codex:516611] **Adding line number references**
[codex:516611] exec
[codex:516611] /bin/bash -lc "nl -ba contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol | sed -n '150,270p'" in /tmp/codex-multi-6_j7klpi succeeded in 6ms:
[codex:516611] 150 );
[codex:516611] 151 } else { // After bonus period (from > REWARD_EARLY_BONUS_END_BLOCK)
[codex:516611] 152 return to.sub(from).mul(REWARD_PER_BLOCK);
[codex:516611] 153 }
[codex:516611] 154 }
[codex:516611] 155
[codex:516611] 156 // Update all pools
[codex:516611] 157 // NOTE: This could fail with out-of-gas if too many tokens are added
[codex:516611] 158 function updateAllPools() public {
[codex:516611] 159 uint256 length = pools.length;
[codex:516611] 160 for (uint256 pid = 0; pid < length; ++pid) {
[codex:516611] 161 updatePool(pools[pid]);
[codex:516611] 162 }
[codex:516611] 163 }
[codex:516611] 164
[codex:516611] 165 function updatePool(address tokenAddress) public _checkPoolExists(tokenAddress) {
[codex:516611] 166 WRNStats storage wrnStat = wrnStats[tokenAddress];
[codex:516611] 167 if (block.number <= wrnStat.lastRewardBlock) {
[codex:516611] 168 return;
[codex:516611] 169 }
[codex:516611]
[codex:516611] thinking
[codex:516611] **Identifying claimWRN usage locations**
[codex:516611] exec
[codex:516611] /bin/bash -lc "nl -ba contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol | sed -n '90,140p'" in /tmp/codex-multi-6_j7klpi succeeded in 6ms:
[codex:516611] 90 function updatePoolMultiplier(address tokenAddress, uint256 multiplier, bool shouldUpdate) external onlyOwner {
[codex:516611] 91 require(multiplier >= 0, 'INVALID_MULTIPLIER');
[codex:516611] 92
[codex:516611] 93 if(shouldUpdate) {
[codex:516611] 94 // NOTE: This could fail with out-of-gas if too many tokens are added.
[codex:516611] 95 // If this fails, the owner MUST update all pools manually
[codex:516611] 96 updateAllPools();
[codex:516611] 97 } else if (wrnStats[tokenAddress].multiplier > multiplier) {
[codex:516611] 98 // Decreasing multiplier shouldn't be allowed without `updateAllPools` calls because
[codex:516611] 99 // users can temporarily withdraw a bigger WRN reward than they actually have
[codex:516611] 100 // (caused by smaller `totalMultiplier` => bigger `accWRNPerShare`)
[codex:516611] 101
[codex:516611] 102 revert('UPDATE_ALL_REQUIRED');
[codex:516611] 103 }
[codex:516611] 104
[codex:516611] 105 totalMultiplier = totalMultiplier - wrnStats[tokenAddress].multiplier + multiplier;
[codex:516611] 106 wrnStats[tokenAddress].multiplier = multiplier;
[codex:516611] 107 }
[codex:516611] 108
[codex:516611] 109 function _updateDebt(address tokenAddress, address account) private {
[codex:516611]
[codex:516611] thinking
[codex:516611] **Compiling audit findings and recommendations**
[codex:516611] codex
[codex:516611] {"no_findings":false,"summary":"Found 2 issues: a reentrancy window in `exit` that can double-withdraw and bypass lockup timing via token callbacks, and a division-by-zero footgun in WRN reward accounting that can lock user exits if totalMultiplier is zero.","findings":[{"severity":"medium","category":"reentrancy","title":"Reentrant exit can double-withdraw a lockup via claimBonus external transfer","exploit_scenario":"A user deposits from a contract and the underlying token implements ERC777-style hooks (or a malicious ERC20 that calls the recipient). When `exit` is called, it first invokes `claimBonus`, which transfers tokens to `msg.sender`. The token callback reenters `exit` for the same `lockUpId` before `lockUp.exitedAt` is set. The second `exit` succeeds and updates balances; when control returns, the original `exit` continues and transfers the refund again. With multiple lockups (so totals don’t underflow), the attacker effectively withdraws more than the single lockup amount, bypassing the time lock on other deposits and corrupting accounting.","recommendation":"Apply `nonReentrant` to `exit`/`claimBonus` and/or update lockup state before any external transfer. A safer pattern is to compute bonus/refund amounts, update `lockUp.exitedAt` and totals first, then perform token transfers, or use an internal bonus-claim routine that does not transfer during `exit`.","evidence":"`exit` calls `claimBonus` before setting `lockUp.exitedAt` or updating totals, and `claimBonus` performs an external `safeTransfer` to `msg.sender`.","locations":["contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:194","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:201","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:266"]},{"severity":"low","category":"math","title":"Division by zero in WRN reward math can block exits if totalMultiplier is zero","exploit_scenario":"If all pool multipliers are set to 0 (or a pool is added via `addLockUpPool` without setting a multiplier), `totalMultiplier` becomes 0. Any call to `claimWRN` will revert due to division by zero in `_getAccWRNTillNow`. Because `claimWRN` is invoked at the start of `doLockUp` and `exit`, users cannot deposit or withdraw, effectively locking funds until multipliers are fixed.","recommendation":"Guard against `totalMultiplier == 0` by returning 0 rewards, or enforce `multiplier > 0` and prevent configuration that sets `totalMultiplier` to zero. Consider skipping `claimWRN` when rewards are disabled so exits remain possible.","evidence":"`_getAccWRNTillNow` divides by `totalMultiplier` without a zero check; `claimWRN` is called unconditionally in `doLockUp` and `exit`.","locations":["contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:187","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:114","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:215"]}]}
[codex:516611] tokens used
[codex:516611] 44,088
[codex:516611] {"no_findings":false,"summary":"Found 2 issues: a reentrancy window in `exit` that can double-withdraw and bypass lockup timing via token callbacks, and a division-by-zero footgun in WRN reward accounting that can lock user exits if totalMultiplier is zero.","findings":[{"severity":"medium","category":"reentrancy","title":"Reentrant exit can double-withdraw a lockup via claimBonus external transfer","exploit_scenario":"A user deposits from a contract and the underlying token implements ERC777-style hooks (or a malicious ERC20 that calls the recipient). When `exit` is called, it first invokes `claimBonus`, which transfers tokens to `msg.sender`. The token callback reenters `exit` for the same `lockUpId` before `lockUp.exitedAt` is set. The second `exit` succeeds and updates balances; when control returns, the original `exit` continues and transfers the refund again. With multiple lockups (so totals don’t underflow), the attacker effectively withdraws more than the single lockup amount, bypassing the time lock on other deposits and corrupting accounting.","recommendation":"Apply `nonReentrant` to `exit`/`claimBonus` and/or update lockup state before any external transfer. A safer pattern is to compute bonus/refund amounts, update `lockUp.exitedAt` and totals first, then perform token transfers, or use an internal bonus-claim routine that does not transfer during `exit`.","evidence":"`exit` calls `claimBonus` before setting `lockUp.exitedAt` or updating totals, and `claimBonus` performs an external `safeTransfer` to `msg.sender`.","locations":["contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:194","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:201","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:266"]},{"severity":"low","category":"math","title":"Division by zero in WRN reward math can block exits if totalMultiplier is zero","exploit_scenario":"If all pool multipliers are set to 0 (or a pool is added via `addLockUpPool` without setting a multiplier), `totalMultiplier` becomes 0. Any call to `claimWRN` will revert due to division by zero in `_getAccWRNTillNow`. Because `claimWRN` is invoked at the start of `doLockUp` and `exit`, users cannot deposit or withdraw, effectively locking funds until multipliers are fixed.","recommendation":"Guard against `totalMultiplier == 0` by returning 0 rewards, or enforce `multiplier > 0` and prevent configuration that sets `totalMultiplier` to zero. Consider skipping `claimWRN` when rewards are disabled so exits remain possible.","evidence":"`_getAccWRNTillNow` divides by `totalMultiplier` without a zero check; `claimWRN` is called unconditionally in `doLockUp` and `exit`.","locations":["contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:187","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:114","contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:215"]}]}
{
"codex": {
"ran_at": "2025-12-30T19:18:31.522625+00:00",
"returncode": 0
},
"summary": "Found 2 issues: a reentrancy window in `exit` that can double-withdraw and bypass lockup timing via token callbacks, and a division-by-zero footgun in WRN reward accounting that can lock user exits if totalMultiplier is zero.",
"raw_final": {
"summary": "Found 2 issues: a reentrancy window in `exit` that can double-withdraw and bypass lockup timing via token callbacks, and a division-by-zero footgun in WRN reward accounting that can lock user exits if totalMultiplier is zero.",
"findings": [
{
"title": "Reentrant exit can double-withdraw a lockup via claimBonus external transfer",
"category": "reentrancy",
"evidence": "`exit` calls `claimBonus` before setting `lockUp.exitedAt` or updating totals, and `claimBonus` performs an external `safeTransfer` to `msg.sender`.",
"severity": "medium",
"locations": [
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:194",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:201",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:266"
],
"recommendation": "Apply `nonReentrant` to `exit`/`claimBonus` and/or update lockup state before any external transfer. A safer pattern is to compute bonus/refund amounts, update `lockUp.exitedAt` and totals first, then perform token transfers, or use an internal bonus-claim routine that does not transfer during `exit`.",
"exploit_scenario": "A user deposits from a contract and the underlying token implements ERC777-style hooks (or a malicious ERC20 that calls the recipient). When `exit` is called, it first invokes `claimBonus`, which transfers tokens to `msg.sender`. The token callback reenters `exit` for the same `lockUpId` before `lockUp.exitedAt` is set. The second `exit` succeeds and updates balances; when control returns, the original `exit` continues and transfers the refund again. With multiple lockups (so totals don\u2019t underflow), the attacker effectively withdraws more than the single lockup amount, bypassing the time lock on other deposits and corrupting accounting."
},
{
"title": "Division by zero in WRN reward math can block exits if totalMultiplier is zero",
"category": "math",
"evidence": "`_getAccWRNTillNow` divides by `totalMultiplier` without a zero check; `claimWRN` is called unconditionally in `doLockUp` and `exit`.",
"severity": "low",
"locations": [
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:187",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:114",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:215"
],
"recommendation": "Guard against `totalMultiplier == 0` by returning 0 rewards, or enforce `multiplier > 0` and prevent configuration that sets `totalMultiplier` to zero. Consider skipping `claimWRN` when rewards are disabled so exits remain possible.",
"exploit_scenario": "If all pool multipliers are set to 0 (or a pool is added via `addLockUpPool` without setting a multiplier), `totalMultiplier` becomes 0. Any call to `claimWRN` will revert due to division by zero in `_getAccWRNTillNow`. Because `claimWRN` is invoked at the start of `doLockUp` and `exit`, users cannot deposit or withdraw, effectively locking funds until multipliers are fixed."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x02c8 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x85dc3004 00000026: GT 00000027: PUSH2 0x017b 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xe2be30c3 00000031: GT 00000032: PUSH2 0x00d8 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xf344dcce 0000003c: GT 0000003d: PUSH2 0x008c 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xf42d989c 00000047: GT 00000048: PUSH2 0x0071 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xf42d989c 00000052: EQ 00000053: PUSH2 0x082f 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xf525cb68 0000005d: EQ 0000005e: PUSH2 0x0837 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xfebb97cd 00000068: EQ 00000069: PUSH2 0x083f 0000006c: JUMPI 0000006d: PUSH2 0x02c8 00000070: JUMP 00000071: JUMPDEST 00000072: DUP1 00000073: PUSH4 0xf344dcce 00000078: EQ 00000079: PUSH2 0x07c6 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0xf39e3c53 00000083: EQ 00000084: PUSH2 0x07ce 00000087: JUMPI 00000088: PUSH2 0x02c8 0000008b: JUMP 0000008c: JUMPDEST 0000008d: DUP1 0000008e: PUSH4 0xec12a5e1 00000093: GT 00000094: PUSH2 0x00bd 00000097: JUMPI 00000098: DUP1 00000099: PUSH4 0xec12a5e1 0000009e: EQ 0000009f: PUSH2 0x0712 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0xece80528 000000a9: EQ 000000aa: PUSH2 0x071a 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0xf2fde38b 000000b4: EQ 000000b5: PUSH2 0x07a0 000000b8: JUMPI 000000b9: PUSH2 0x02c8 000000bc: JUMP 000000bd: JUMPDEST 000000be: DUP1 000000bf: PUSH4 0xe2be30c3 000000c4: EQ 000000c5: PUSH2 0x06de 000000c8: JUMPI 000000c9: DUP1 000000ca: PUSH4 0xe82bef29 000000cf: EQ 000000d0: PUSH2 0x070a 000000d3: JUMPI 000000d4: PUSH2 0x02c8 000000d7: JUMP 000000d8: JUMPDEST 000000d9: DUP1 000000da: PUSH4 0xac4afa38 000000df: GT 000000e0: PUSH2 0x012f 000000e3: JUMPI 000000e4: DUP1 000000e5: PUSH4 0xbe32b3f8 000000ea: GT 000000eb: PUSH2 0x0114 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0xbe32b3f8 000000f5: EQ 000000f6: PUSH2 0x0691 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0xcd74a00e 00000100: EQ 00000101: PUSH2 0x06b0 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0xd79fb125 0000010b: EQ 0000010c: PUSH2 0x06b8 0000010f: JUMPI 00000110: PUSH2 0x02c8 00000113: JUMP 00000114: JUMPDEST 00000115: DUP1 00000116: PUSH4 0xac4afa38 0000011b: EQ 0000011c: PUSH2 0x066c 0000011f: JUMPI 00000120: DUP1 00000121: PUSH4 0xb9ec7d74 00000126: EQ 00000127: PUSH2 0x0689 0000012a: JUMPI 0000012b: PUSH2 0x02c8 0000012e: JUMP 0000012f: JUMPDEST 00000130: DUP1 00000131: PUSH4 0x975532dc 00000136: GT 00000137: PUSH2 0x0160 0000013a: JUMPI 0000013b: DUP1 0000013c: PUSH4 0x975532dc 00000141: EQ 00000142: PUSH2 0x05fa 00000145: JUMPI 00000146: DUP1 00000147: PUSH4 0xa9df60a6 0000014c: EQ 0000014d: PUSH2 0x0602 00000150: JUMPI 00000151: DUP1 00000152: PUSH4 0xaa28dce1 00000157: EQ 00000158: PUSH2 0x0628 0000015b: JUMPI 0000015c: PUSH2 0x02c8 0000015f: JUMP 00000160: JUMPDEST 00000161: DUP1 00000162: PUSH4 0x85dc3004 00000167: EQ 00000168: PUSH2 0x05b0 0000016b: JUMPI 0000016c: DUP1 0000016d: PUSH4 0x8da5cb5b 00000172: EQ 00000173: PUSH2 0x05d6 00000176: JUMPI 00000177: PUSH2 0x02c8 0000017a: JUMP 0000017b: JUMPDEST 0000017c: DUP1 0000017d: PUSH4 0x64cdba23 00000182: GT 00000183: PUSH2 0x0229 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0x7621651b 0000018d: GT 0000018e: PUSH2 0x01dd 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0x7b46c54f 00000198: GT 00000199: PUSH2 0x01c2 0000019c: JUMPI 0000019d: DUP1 0000019e: PUSH4 0x7b46c54f 000001a3: EQ 000001a4: PUSH2 0x0556 000001a7: JUMPI 000001a8: DUP1 000001a9: PUSH4 0x7fb09e19 000001ae: EQ 000001af: PUSH2 0x057c 000001b2: JUMPI 000001b3: DUP1 000001b4: PUSH4 0x8129fc1c 000001b9: EQ 000001ba: PUSH2 0x05a8 000001bd: JUMPI 000001be: PUSH2 0x02c8 000001c1: JUMP 000001c2: JUMPDEST 000001c3: DUP1 000001c4: PUSH4 0x7621651b 000001c9: EQ 000001ca: PUSH2 0x051c 000001cd: JUMPI 000001ce: DUP1 000001cf: PUSH4 0x7884d98e 000001d4: EQ 000001d5: PUSH2 0x054e 000001d8: JUMPI 000001d9: PUSH2 0x02c8 000001dc: JUMP 000001dd: JUMPDEST 000001de: DUP1 000001df: PUSH4 0x6b6da869 000001e4: GT 000001e5: PUSH2 0x020e 000001e8: JUMPI 000001e9: DUP1 000001ea: PUSH4 0x6b6da869 000001ef: EQ 000001f0: PUSH2 0x04d6 000001f3: JUMPI 000001f4: DUP1 000001f5: PUSH4 0x6c28dd47 000001fa: EQ 000001fb: PUSH2 0x050c 000001fe: JUMPI 000001ff: DUP1 00000200: PUSH4 0x715018a6 00000205: EQ 00000206: PUSH2 0x0514 00000209: JUMPI 0000020a: PUSH2 0x02c8 0000020d: JUMP 0000020e: JUMPDEST 0000020f: DUP1 00000210: PUSH4 0x64cdba23 00000215: EQ 00000216: PUSH2 0x045b 00000219: JUMPI 0000021a: DUP1 0000021b: PUSH4 0x6a38c851 00000220: EQ 00000221: PUSH2 0x048f 00000224: JUMPI 00000225: PUSH2 0x02c8 00000228: JUMP 00000229: JUMPDEST 0000022a: DUP1 0000022b: PUSH4 0x27855b13 00000230: GT 00000231: PUSH2 0x0280 00000234: JUMPI 00000235: DUP1 00000236: PUSH4 0x34fe9824 0000023b: GT 0000023c: PUSH2 0x0265 0000023f: JUMPI 00000240: DUP1 00000241: PUSH4 0x34fe9824 00000246: EQ 00000247: PUSH2 0x03c9 0000024a: JUMPI 0000024b: DUP1 0000024c: PUSH4 0x3652364d 00000251: EQ 00000252: PUSH2 0x03ef 00000255: JUMPI 00000256: DUP1 00000257: PUSH4 0x4ec81af1 0000025c: EQ 0000025d: PUSH2 0x0423 00000260: JUMPI 00000261: PUSH2 0x02c8 00000264: JUMP 00000265: JUMPDEST 00000266: DUP1 00000267: PUSH4 0x27855b13 0000026c: EQ 0000026d: PUSH2 0x03b9 00000270: JUMPI 00000271: DUP1 00000272: PUSH4 0x2930fa49 00000277: EQ 00000278: PUSH2 0x03c1 0000027b: JUMPI 0000027c: PUSH2 0x02c8 0000027f: JUMP 00000280: JUMPDEST 00000281: DUP1 00000282: PUSH4 0x0e4dc3df 00000287: GT 00000288: PUSH2 0x02b1 0000028b: JUMPI 0000028c: DUP1 0000028d: PUSH4 0x0e4dc3df 00000292: EQ 00000293: PUSH2 0x0303 00000296: JUMPI 00000297: DUP1 00000298: PUSH4 0x0e99f5e6 0000029d: EQ 0000029e: PUSH2 0x032b 000002a1: JUMPI 000002a2: DUP1 000002a3: PUSH4 0x17f121cd 000002a8: EQ 000002a9: PUSH2 0x0351 000002ac: JUMPI 000002ad: PUSH2 0x02c8 000002b0: JUMP 000002b1: JUMPDEST 000002b2: DUP1 000002b3: PUSH4 0x0905f560 000002b8: EQ 000002b9: PUSH2 0x02cd 000002bc: JUMPI 000002bd: DUP1 000002be: PUSH4 0x0ad08b86 000002c3: EQ 000002c4: PUSH2 0x02e9 000002c7: JUMPI 000002c8: JUMPDEST 000002c9: PUSH1 0x00 000002cb: DUP1 000002cc: REVERT 000002cd: JUMPDEST 000002ce: PUSH2 0x02d5 000002d1: PUSH2 0x0879 000002d4: JUMP 000002d5: JUMPDEST 000002d6: PUSH1 0x40 000002d8: DUP1 000002d9: MLOAD 000002da: SWAP2 000002db: ISZERO 000002dc: ISZERO 000002dd: DUP3 000002de: MSTORE 000002df: MLOAD 000002e0: SWAP1 000002e1: DUP2 000002e2: SWAP1 000002e3: SUB 000002e4: PUSH1 0x20 000002e6: ADD 000002e7: SWAP1 000002e8: RETURN 000002e9: JUMPDEST 000002ea: PUSH2 0x02f1 000002ed: PUSH2 0x0882 000002f0: JUMP 000002f1: JUMPDEST 000002f2: PUSH1 0x40 000002f4: DUP1 000002f5: MLOAD 000002f6: SWAP2 000002f7: DUP3 000002f8: MSTORE 000002f9: MLOAD 000002fa: SWAP1 000002fb: DUP2 000002fc: SWAP1 000002fd: SUB 000002fe: PUSH1 0x20 00000300: ADD 00000301: SWAP1 00000302: RETURN 00000303: JUMPDEST 00000304: PUSH2 0x0329 00000307: PUSH1 0x04 00000309: DUP1 0000030a: CALLDATASIZE 0000030b: SUB 0000030c: PUSH1 0x20 0000030e: DUP2 0000030f: LT 00000310: ISZERO 00000311: PUSH2 0x0319 00000314: JUMPI 00000315: PUSH1 0x00 00000317: DUP1 00000318: REVERT 00000319: JUMPDEST 0000031a: POP 0000031b: CALLDATALOAD 0000031c: PUSH1 0x01 0000031e: PUSH1 0x01 00000320: PUSH1 0xa0 00000322: SHL 00000323: SUB 00000324: AND 00000325: PUSH2 0x0888 00000328: JUMP 00000329: JUMPDEST 0000032a: STOP 0000032b: JUMPDEST 0000032c: PUSH2 0x0329 0000032f: PUSH1 0x04 00000331: DUP1 00000332: CALLDATASIZE 00000333: SUB 00000334: PUSH1 0x20 00000336: DUP2 00000337: LT 00000338: ISZERO 00000339: PUSH2 0x0341 0000033c: JUMPI 0000033d: PUSH1 0x00 0000033f: DUP1 00000340: REVERT 00000341: JUMPDEST 00000342: POP 00000343: CALLDATALOAD 00000344: PUSH1 0x01 00000346: PUSH1 0x01 00000348: PUSH1 0xa0 0000034a: SHL 0000034b: SUB 0000034c: AND 0000034d: PUSH2 0x089d 00000350: JUMP 00000351: JUMPDEST 00000352: PUSH2 0x037f 00000355: PUSH1 0x04 00000357: DUP1 00000358: CALLDATASIZE 00000359: SUB 0000035a: PUSH1 0x40 0000035c: DUP2 0000035d: LT 0000035e: ISZERO 0000035f: PUSH2 0x0367 00000362: JUMPI 00000363: PUSH1 0x00 00000365: DUP1 00000366: REVERT 00000367: JUMPDEST 00000368: POP 00000369: PUSH1 0x01 0000036b: PUSH1 0x01 0000036d: PUSH1 0xa0 0000036f: SHL 00000370: SUB 00000371: DUP2 00000372: CALLDATALOAD 00000373: DUP2 00000374: AND 00000375: SWAP2 00000376: PUSH1 0x20 00000378: ADD 00000379: CALLDATALOAD 0000037a: AND 0000037b: PUSH2 0x0a0d 0000037e: JUMP 0000037f: JUMPDEST 00000380: PUSH1 0x40 00000382: DUP1 00000383: MLOAD 00000384: SWAP7 00000385: DUP8 00000386: MSTORE 00000387: PUSH1 0x20 00000389: DUP8 0000038a: ADD 0000038b: SWAP6 0000038c: SWAP1 0000038d: SWAP6 0000038e: MSTORE 0000038f: DUP6 00000390: DUP6 00000391: ADD 00000392: SWAP4 00000393: SWAP1 00000394: SWAP4 00000395: MSTORE 00000396: PUSH1 0x60 00000398: DUP6 00000399: ADD 0000039a: SWAP2 0000039b: SWAP1 0000039c: SWAP2 0000039d: MSTORE 0000039e: PUSH1 0x80 000003a0: DUP5 000003a1: ADD 000003a2: MSTORE 000003a3: PUSH5 0xffffffffff 000003a9: AND 000003aa: PUSH1 0xa0 000003ac: DUP4 000003ad: ADD 000003ae: MSTORE 000003af: MLOAD 000003b0: SWAP1 000003b1: DUP2 000003b2: SWAP1 000003b3: SUB 000003b4: PUSH1 0xc0 000003b6: ADD 000003b7: SWAP1 000003b8: RETURN 000003b9: JUMPDEST 000003ba: PUSH2 0x02f1 000003bd: PUSH2 0x0a54 000003c0: JUMP 000003c1: JUMPDEST 000003c2: PUSH2 0x02f1 000003c5: PUSH2 0x0a5a 000003c8: JUMP 000003c9: JUMPDEST 000003ca: PUSH2 0x0329 000003cd: PUSH1 0x04 000003cf: DUP1 000003d0: CALLDATASIZE 000003d1: SUB 000003d2: PUSH1 0x20 000003d4: DUP2 000003d5: LT 000003d6: ISZERO 000003d7: PUSH2 0x03df 000003da: JUMPI 000003db: PUSH1 0x00 000003dd: DUP1 000003de: REVERT 000003df: JUMPDEST 000003e0: POP 000003e1: CALLDATALOAD 000003e2: PUSH1 0x01 000003e4: PUSH1 0x01 000003e6: PUSH1 0xa0 000003e8: SHL 000003e9: SUB 000003ea: AND 000003eb: PUSH2 0x0a60 000003ee: JUMP 000003ef: JUMPDEST 000003f0: PUSH2 0x0329 000003f3: PUSH1 0x04 000003f5: DUP1 000003f6: CALLDATASIZE 000003f7: SUB 000003f8: PUSH1 0x60 000003fa: DUP2 000003fb: LT 000003fc: ISZERO 000003fd: PUSH2 0x0405 00000400: JUMPI 00000401: PUSH1 0x00 00000403: DUP1 00000404: REVERT 00000405: JUMPDEST 00000406: POP 00000407: PUSH1 0x01 00000409: PUSH1 0x01 0000040b: PUSH1 0xa0 0000040d: SHL 0000040e: SUB 0000040f: DUP2 00000410: CALLDATALOAD 00000411: AND 00000412: SWAP1 00000413: PUSH1 0x20 00000415: DUP2 00000416: ADD 00000417: CALLDATALOAD 00000418: SWAP1 00000419: PUSH1 0x40 0000041b: ADD 0000041c: CALLDATALOAD 0000041d: ISZERO 0000041e: ISZERO 0000041f: PUSH2 0x0b1f 00000422: JUMP 00000423: JUMPDEST 00000424: PUSH2 0x0329 00000427: PUSH1 0x04 00000429: DUP1 0000042a: CALLDATASIZE 0000042b: SUB 0000042c: PUSH1 0x80 0000042e: DUP2 0000042f: LT 00000430: ISZERO 00000431: PUSH2 0x0439 00000434: JUMPI 00000435: PUSH1 0x00 00000437: DUP1 00000438: REVERT 00000439: JUMPDEST 0000043a: POP 0000043b: PUSH1 0x01 0000043d: PUSH1 0x01 0000043f: PUSH1 0xa0 00000441: SHL 00000442: SUB 00000443: DUP2 00000444: CALLDATALOAD 00000445: AND 00000446: SWAP1 00000447: PUSH1 0x20 00000449: DUP2 0000044a: ADD 0000044b: CALLDATALOAD 0000044c: SWAP1 0000044d: PUSH1 0x40 0000044f: DUP2 00000450: ADD 00000451: CALLDATALOAD 00000452: SWAP1 00000453: PUSH1 0x60 00000455: ADD 00000456: CALLDATALOAD 00000457: PUSH2 0x0c34 0000045a: JUMP 0000045b: JUMPDEST 0000045c: PUSH2 0x0329 0000045f: PUSH1 0x04 00000461: DUP1 00000462: CALLDATASIZE 00000463: SUB 00000464: PUSH1 0x60 00000466: DUP2 00000467: LT 00000468: ISZERO 00000469: PUSH2 0x0471 0000046c: JUMPI 0000046d: PUSH1 0x00 0000046f: DUP1 00000470: REVERT 00000471: JUMPDEST 00000472: POP 00000473: PUSH1 0x01 00000475: PUSH1 0x01 00000477: PUSH1 0xa0 00000479: SHL 0000047a: SUB 0000047b: DUP2 0000047c: CALLDATALOAD 0000047d: AND 0000047e: SWAP1 0000047f: PUSH1 0x20 00000481: DUP2 00000482: ADD 00000483: CALLDATALOAD 00000484: SWAP1 00000485: PUSH1 0x40 00000487: ADD 00000488: CALLDATALOAD 00000489: ISZERO 0000048a: ISZERO 0000048b: PUSH2 0x0d85 0000048e: JUMP 0000048f: JUMPDEST 00000490: PUSH2 0x04bd 00000493: PUSH1 0x04 00000495: DUP1 00000496: CALLDATASIZE 00000497: SUB 00000498: PUSH1 0x40 0000049a: DUP2 0000049b: LT 0000049c: ISZERO 0000049d: PUSH2 0x04a5 000004a0: JUMPI 000004a1: PUSH1 0x00 000004a3: DUP1 000004a4: REVERT 000004a5: JUMPDEST 000004a6: POP 000004a7: PUSH1 0x01 000004a9: PUSH1 0x01 000004ab: PUSH1 0xa0 000004ad: SHL 000004ae: SUB 000004af: DUP2 000004b0: CALLDATALOAD 000004b1: DUP2 000004b2: AND 000004b3: SWAP2 000004b4: PUSH1 0x20 000004b6: ADD 000004b7: CALLDATALOAD 000004b8: AND 000004b9: PUSH2 0x0da8 000004bc: JUMP 000004bd: JUMPDEST 000004be: PUSH1 0x40 000004c0: DUP1 000004c1: MLOAD 000004c2: SWAP3 000004c3: DUP4 000004c4: MSTORE 000004c5: PUSH1 0x20 000004c7: DUP4 000004c8: ADD 000004c9: SWAP2 000004ca: SWAP1 000004cb: SWAP2 000004cc: MSTORE 000004cd: DUP1 000004ce: MLOAD 000004cf: SWAP2 000004d0: DUP3 000004d1: SWAP1 000004d2: SUB 000004d3: ADD 000004d4: SWAP1 000004d5: RETURN 000004d6: JUMPDEST 000004d7: PUSH2 0x02f1 000004da: PUSH1 0x04 000004dc: DUP1 000004dd: CALLDATASIZE 000004de: SUB 000004df: PUSH1 0x60 000004e1: DUP2 000004e2: LT 000004e3: ISZERO 000004e4: PUSH2 0x04ec 000004e7: JUMPI 000004e8: PUSH1 0x00 000004ea: DUP1 000004eb: REVERT 000004ec: JUMPDEST 000004ed: POP 000004ee: PUSH1 0x01 000004f0: PUSH1 0x01 000004f2: PUSH1 0xa0 000004f4: SHL 000004f5: SUB 000004f6: DUP2 000004f7: CALLDATALOAD 000004f8: DUP2 000004f9: AND 000004fa: SWAP2 000004fb: PUSH1 0x20 000004fd: DUP2 000004fe: ADD 000004ff: CALLDATALOAD 00000500: SWAP1 00000501: SWAP2 00000502: AND 00000503: SWAP1 00000504: PUSH1 0x40 00000506: ADD 00000507: CALLDATALOAD 00000508: PUSH2 0x0dcc 0000050b: JUMP 0000050c: JUMPDEST 0000050d: PUSH2 0x02f1 00000510: PUSH2 0x0e3d 00000513: JUMP 00000514: JUMPDEST 00000515: PUSH2 0x0329 00000518: PUSH2 0x0e43 0000051b: JUMP 0000051c: JUMPDEST 0000051d: PUSH2 0x0329 00000520: PUSH1 0x04 00000522: DUP1 00000523: CALLDATASIZE 00000524: SUB 00000525: PUSH1 0x60 00000527: DUP2 00000528: LT 00000529: ISZERO 0000052a: PUSH2 0x0532 0000052d: JUMPI 0000052e: PUSH1 0x00 00000530: DUP1 00000531: REVERT 00000532: JUMPDEST 00000533: POP 00000534: PUSH1 0x01 00000536: PUSH1 0x01 00000538: PUSH1 0xa0 0000053a: SHL 0000053b: SUB 0000053c: DUP2 0000053d: CALLDATALOAD 0000053e: AND 0000053f: SWAP1 00000540: PUSH1 0x20 00000542: DUP2 00000543: ADD 00000544: CALLDATALOAD 00000545: SWAP1 00000546: PUSH1 0x40 00000548: ADD 00000549: CALLDATALOAD 0000054a: PUSH2 0x0ef7 0000054d: JUMP 0000054e: JUMPDEST 0000054f: PUSH2 0x02f1 00000552: PUSH2 0x0f0b 00000555: JUMP 00000556: JUMPDEST 00000557: PUSH2 0x0329 0000055a: PUSH1 0x04 0000055c: DUP1 0000055d: CALLDATASIZE 0000055e: SUB 0000055f: PUSH1 0x20 00000561: DUP2 00000562: LT 00000563: ISZERO 00000564: PUSH2 0x056c 00000567: JUMPI 00000568: PUSH1 0x00 0000056a: DUP1 0000056b: REVERT 0000056c: JUMPDEST 0000056d: POP 0000056e: CALLDATALOAD 0000056f: PUSH1 0x01 00000571: PUSH1 0x01 00000573: PUSH1 0xa0 00000575: SHL 00000576: SUB 00000577: AND 00000578: PUSH2 0x0f11 0000057b: JUMP 0000057c: JUMPDEST 0000057d: PUSH2 0x0329 00000580: PUSH1 0x04 00000582: DUP1 00000583: CALLDATASIZE 00000584: SUB 00000585: PUSH1 0x40 00000587: DUP2 00000588: LT 00000589: ISZERO 0000058a: PUSH2 0x0592 0000058d: JUMPI 0000058e: PUSH1 0x00 00000590: DUP1 00000591: REVERT 00000592: JUMPDEST 00000593: POP 00000594: PUSH1 0x01 00000596: PUSH1 0x01 00000598: PUSH1 0xa0 0000059a: SHL 0000059b: SUB 0000059c: DUP2 0000059d: CALLDATALOAD 0000059e: AND 0000059f: SWAP1 000005a0: PUSH1 0x20 000005a2: ADD 000005a3: CALLDATALOAD 000005a4: PUSH2 0x1170 000005a7: JUMP 000005a8: JUMPDEST 000005a9: PUSH2 0x0329 000005ac: PUSH2 0x1254 000005af: JUMP 000005b0: JUMPDEST 000005b1: PUSH2 0x0329 000005b4: PUSH1 0x04 000005b6: DUP1 000005b7: CALLDATASIZE 000005b8: SUB 000005b9: PUSH1 0x20 000005bb: DUP2 000005bc: LT 000005bd: ISZERO 000005be: PUSH2 0x05c6 000005c1: JUMPI 000005c2: PUSH1 0x00 000005c4: DUP1 000005c5: REVERT 000005c6: JUMPDEST 000005c7: POP 000005c8: CALLDATALOAD 000005c9: PUSH1 0x01 000005cb: PUSH1 0x01 000005cd: PUSH1 0xa0 000005cf: SHL 000005d0: SUB 000005d1: AND 000005d2: PUSH2 0x1334 000005d5: JUMP 000005d6: JUMPDEST 000005d7: PUSH2 0x05de 000005da: PUSH2 0x13c0 000005dd: JUMP 000005de: JUMPDEST 000005df: PUSH1 0x40 000005e1: DUP1 000005e2: MLOAD 000005e3: PUSH1 0x01 000005e5: PUSH1 0x01 000005e7: PUSH1 0xa0 000005e9: SHL 000005ea: SUB 000005eb: SWAP1 000005ec: SWAP3 000005ed: AND 000005ee: DUP3 000005ef: MSTORE 000005f0: MLOAD 000005f1: SWAP1 000005f2: DUP2 000005f3: SWAP1 000005f4: SUB 000005f5: PUSH1 0x20 000005f7: ADD 000005f8: SWAP1 000005f9: RETURN 000005fa: JUMPDEST 000005fb: PUSH2 0x02f1 000005fe: PUSH2 0x13cf 00000601: JUMP 00000602: JUMPDEST 00000603: PUSH2 0x02f1 00000606: PUSH1 0x04 00000608: DUP1 00000609: CALLDATASIZE 0000060a: SUB 0000060b: PUSH1 0x20 0000060d: DUP2 0000060e: LT 0000060f: ISZERO 00000610: PUSH2 0x0618 00000613: JUMPI 00000614: PUSH1 0x00 00000616: DUP1 00000617: REVERT 00000618: JUMPDEST 00000619: POP 0000061a: CALLDATALOAD 0000061b: PUSH1 0x01 0000061d: PUSH1 0x01 0000061f: PUSH1 0xa0 00000621: SHL 00000622: SUB 00000623: AND 00000624: PUSH2 0x13d5 00000627: JUMP 00000628: JUMPDEST 00000629: PUSH2 0x064e 0000062c: PUSH1 0x04 0000062e: DUP1 0000062f: CALLDATASIZE 00000630: SUB 00000631: PUSH1 0x20 00000633: DUP2 00000634: LT 00000635: ISZERO 00000636: PUSH2 0x063e 00000639: JUMPI 0000063a: PUSH1 0x00 0000063c: DUP1 0000063d: REVERT 0000063e: JUMPDEST 0000063f: POP 00000640: CALLDATALOAD 00000641: PUSH1 0x01 00000643: PUSH1 0x01 00000645: PUSH1 0xa0 00000647: SHL 00000648: SUB 00000649: AND 0000064a: PUSH2 0x1439 0000064d: JUMP 0000064e: JUMPDEST 0000064f: PUSH1 0x40 00000651: DUP1 00000652: MLOAD 00000653: SWAP4 00000654: DUP5 00000655: MSTORE 00000656: PUSH1 0x20 00000658: DUP5 00000659: ADD 0000065a: SWAP3 0000065b: SWAP1 0000065c: SWAP3 0000065d: MSTORE 0000065e: DUP3 0000065f: DUP3 00000660: ADD 00000661: MSTORE 00000662: MLOAD 00000663: SWAP1 00000664: DUP2 00000665: SWAP1 00000666: SUB 00000667: PUSH1 0x60 00000669: ADD 0000066a: SWAP1 0000066b: RETURN 0000066c: JUMPDEST 0000066d: PUSH2 0x05de 00000670: PUSH1 0x04 00000672: DUP1 00000673: CALLDATASIZE 00000674: SUB 00000675: PUSH1 0x20 00000677: DUP2 00000678: LT 00000679: ISZERO 0000067a: PUSH2 0x0682 0000067d: JUMPI 0000067e: PUSH1 0x00 00000680: DUP1 00000681: REVERT 00000682: JUMPDEST 00000683: POP 00000684: CALLDATALOAD 00000685: PUSH2 0x145a 00000688: JUMP 00000689: JUMPDEST 0000068a: PUSH2 0x0329 0000068d: PUSH2 0x1481 00000690: JUMP 00000691: JUMPDEST 00000692: PUSH2 0x0329 00000695: PUSH1 0x04 00000697: DUP1 00000698: CALLDATASIZE 00000699: SUB 0000069a: PUSH1 0x20 0000069c: DUP2 0000069d: LT 0000069e: ISZERO 0000069f: PUSH2 0x06a7 000006a2: JUMPI 000006a3: PUSH1 0x00 000006a5: DUP1 000006a6: REVERT 000006a7: JUMPDEST 000006a8: POP 000006a9: CALLDATALOAD 000006aa: ISZERO 000006ab: ISZERO 000006ac: PUSH2 0x14c1 000006af: JUMP 000006b0: JUMPDEST 000006b1: PUSH2 0x02f1 000006b4: PUSH2 0x153e 000006b7: JUMP 000006b8: JUMPDEST 000006b9: PUSH2 0x02f1 000006bc: PUSH1 0x04 000006be: DUP1 000006bf: CALLDATASIZE 000006c0: SUB 000006c1: PUSH1 0x20 000006c3: DUP2 000006c4: LT 000006c5: ISZERO 000006c6: PUSH2 0x06ce 000006c9: JUMPI 000006ca: PUSH1 0x00 000006cc: DUP1 000006cd: REVERT 000006ce: JUMPDEST 000006cf: POP 000006d0: CALLDATALOAD 000006d1: PUSH1 0x01 000006d3: PUSH1 0x01 000006d5: PUSH1 0xa0 000006d7: SHL 000006d8: SUB 000006d9: AND 000006da: PUSH2 0x1544 000006dd: JUMP 000006de: JUMPDEST 000006df: PUSH2 0x0329 000006e2: PUSH1 0x04 000006e4: DUP1 000006e5: CALLDATASIZE 000006e6: SUB 000006e7: PUSH1 0x40 000006e9: DUP2 000006ea: LT 000006eb: ISZERO 000006ec: PUSH2 0x06f4 000006ef: JUMPI 000006f0: PUSH1 0x00 000006f2: DUP1 000006f3: REVERT 000006f4: JUMPDEST 000006f5: POP 000006f6: PUSH1 0x01 000006f8: PUSH1 0x01 000006fa: PUSH1 0xa0 000006fc: SHL 000006fd: SUB 000006fe: DUP2 000006ff: CALLDATALOAD 00000700: AND 00000701: SWAP1 00000702: PUSH1 0x20 00000704: ADD 00000705: CALLDATALOAD 00000706: PUSH2 0x162b 00000709: JUMP 0000070a: JUMPDEST 0000070b: PUSH2 0x05de 0000070e: PUSH2 0x1814 00000711: JUMP 00000712: JUMPDEST 00000713: PUSH2 0x02f1 00000716: PUSH2 0x1823 00000719: JUMP 0000071a: JUMPDEST 0000071b: PUSH2 0x0740 0000071e: PUSH1 0x04 00000720: DUP1 00000721: CALLDATASIZE 00000722: SUB 00000723: PUSH1 0x20 00000725: DUP2 00000726: LT 00000727: ISZERO 00000728: PUSH2 0x0730 0000072b: JUMPI 0000072c: PUSH1 0x00 0000072e: DUP1 0000072f: REVERT 00000730: JUMPDEST 00000731: POP 00000732: CALLDATALOAD 00000733: PUSH1 0x01 00000735: PUSH1 0x01 00000737: PUSH1 0xa0 00000739: SHL 0000073a: SUB 0000073b: AND 0000073c: PUSH2 0x1829 0000073f: JUMP 00000740: JUMPDEST 00000741: PUSH1 0x40 00000743: DUP1 00000744: MLOAD 00000745: SWAP11 00000746: DUP12 00000747: MSTORE 00000748: PUSH1 0x20 0000074a: DUP12 0000074b: ADD 0000074c: SWAP10 0000074d: SWAP1 0000074e: SWAP10 0000074f: MSTORE 00000750: DUP10 00000751: DUP10 00000752: ADD 00000753: SWAP8 00000754: SWAP1 00000755: SWAP8 00000756: MSTORE 00000757: PUSH1 0x60 00000759: DUP10 0000075a: ADD 0000075b: SWAP6 0000075c: SWAP1 0000075d: SWAP6 0000075e: MSTORE 0000075f: PUSH1 0x80 00000761: DUP9 00000762: ADD 00000763: SWAP4 00000764: SWAP1 00000765: SWAP4 00000766: MSTORE 00000767: PUSH1 0xa0 00000769: DUP8 0000076a: ADD 0000076b: SWAP2 0000076c: SWAP1 0000076d: SWAP2 0000076e: MSTORE 0000076f: PUSH5 0xffffffffff 00000775: SWAP1 00000776: DUP2 00000777: AND 00000778: PUSH1 0xc0 0000077a: DUP8 0000077b: ADD 0000077c: MSTORE 0000077d: SWAP1 0000077e: DUP2 0000077f: AND 00000780: PUSH1 0xe0 00000782: DUP7 00000783: ADD 00000784: MSTORE 00000785: SWAP1 00000786: DUP2 00000787: AND 00000788: PUSH2 0x0100 0000078b: DUP6 0000078c: ADD 0000078d: MSTORE 0000078e: AND 0000078f: PUSH2 0x0120 00000792: DUP4 00000793: ADD 00000794: MSTORE 00000795: MLOAD 00000796: SWAP1 00000797: DUP2 00000798: SWAP1 00000799: SUB 0000079a: PUSH2 0x0140 0000079d: ADD 0000079e: SWAP1 0000079f: RETURN 000007a0: JUMPDEST 000007a1: PUSH2 0x0329 000007a4: PUSH1 0x04 000007a6: DUP1 000007a7: CALLDATASIZE 000007a8: SUB 000007a9: PUSH1 0x20 000007ab: DUP2 000007ac: LT 000007ad: ISZERO 000007ae: PUSH2 0x07b6 000007b1: JUMPI 000007b2: PUSH1 0x00 000007b4: DUP1 000007b5: REVERT 000007b6: JUMPDEST 000007b7: POP 000007b8: CALLDATALOAD 000007b9: PUSH1 0x01 000007bb: PUSH1 0x01 000007bd: PUSH1 0xa0 000007bf: SHL 000007c0: SUB 000007c1: AND 000007c2: PUSH2 0x18a1 000007c5: JUMP 000007c6: JUMPDEST 000007c7: PUSH2 0x02f1 000007ca: PUSH2 0x19ac 000007cd: JUMP 000007ce: JUMPDEST 000007cf: PUSH2 0x0804 000007d2: PUSH1 0x04 000007d4: DUP1 000007d5: CALLDATASIZE 000007d6: SUB 000007d7: PUSH1 0x60 000007d9: DUP2 000007da: LT 000007db: ISZERO 000007dc: PUSH2 0x07e4 000007df: JUMPI 000007e0: PUSH1 0x00 000007e2: DUP1 000007e3: REVERT 000007e4: JUMPDEST 000007e5: POP 000007e6: PUSH1 0x01 000007e8: PUSH1 0x01 000007ea: PUSH1 0xa0 000007ec: SHL 000007ed: SUB 000007ee: DUP2 000007ef: CALLDATALOAD 000007f0: DUP2 000007f1: AND 000007f2: SWAP2 000007f3: PUSH1 0x20 000007f5: DUP2 000007f6: ADD 000007f7: CALLDATALOAD 000007f8: SWAP1 000007f9: SWAP2 000007fa: AND 000007fb: SWAP1 000007fc: PUSH1 0x40 000007fe: ADD 000007ff: CALLDATALOAD 00000800: PUSH2 0x19b2 00000803: JUMP 00000804: JUMPDEST 00000805: PUSH1 0x40 00000807: DUP1 00000808: MLOAD 00000809: SWAP6 0000080a: DUP7 0000080b: MSTORE 0000080c: PUSH1 0x20 0000080e: DUP7 0000080f: ADD 00000810: SWAP5 00000811: SWAP1 00000812: SWAP5 00000813: MSTORE 00000814: DUP5 00000815: DUP5 00000816: ADD 00000817: SWAP3 00000818: SWAP1 00000819: SWAP3 0000081a: MSTORE 0000081b: PUSH1 0x60 0000081d: DUP5 0000081e: ADD 0000081f: MSTORE 00000820: PUSH1 0x80 00000822: DUP4 00000823: ADD 00000824: MSTORE 00000825: MLOAD 00000826: SWAP1 00000827: DUP2 00000828: SWAP1 00000829: SUB 0000082a: PUSH1 0xa0 0000082c: ADD 0000082d: SWAP1 0000082e: RETURN 0000082f: JUMPDEST 00000830: PUSH2 0x05de 00000833: PUSH2 0x1a2e 00000836: JUMP 00000837: JUMPDEST 00000838: PUSH2 0x02f1 0000083b: PUSH2 0x1a3d 0000083e: JUMP 0000083f: JUMPDEST 00000840: PUSH2 0x0329 00000843: PUSH1 0x04 00000845: DUP1 00000846: CALLDATASIZE 00000847: SUB 00000848: PUSH1 0x80 0000084a: DUP2 0000084b: LT 0000084c: ISZERO 0000084d: PUSH2 0x0855 00000850: JUMPI 00000851: PUSH1 0x00 00000853: DUP1 00000854: REVERT 00000855: JUMPDEST 00000856: POP 00000857: PUSH1 0x01 00000859: PUSH1 0x01 0000085b: PUSH1 0xa0 0000085d: SHL 0000085e: SUB 0000085f: DUP2 00000860: CALLDATALOAD 00000861: AND 00000862: SWAP1 00000863: PUSH1 0x20 00000865: DUP2 00000866: ADD 00000867: CALLDATALOAD 00000868: SWAP1 00000869: PUSH1 0x40 0000086b: DUP2 0000086c: ADD 0000086d: CALLDATALOAD 0000086e: SWAP1 0000086f: PUSH1 0x60 00000871: ADD 00000872: CALLDATALOAD 00000873: ISZERO 00000874: ISZERO 00000875: PUSH2 0x1a43 00000878: JUMP 00000879: JUMPDEST 0000087a: PUSH1 0x9a 0000087c: SLOAD 0000087d: PUSH1 0xff 0000087f: AND 00000880: DUP2 00000881: JUMP 00000882: JUMPDEST 00000883: PUSH1 0x97 00000885: SLOAD 00000886: DUP2 00000887: JUMP 00000888: JUMPDEST 00000889: PUSH2 0x0891 0000088c: DUP2 0000088d: PUSH2 0x0a60 00000890: JUMP 00000891: JUMPDEST 00000892: PUSH2 0x089a 00000895: DUP2 00000896: PUSH2 0x089d 00000899: JUMP 0000089a: JUMPDEST 0000089b: POP 0000089c: JUMP 0000089d: JUMPDEST 0000089e: PUSH1 0x01 000008a0: PUSH1 0x01 000008a2: PUSH1 0xa0 000008a4: SHL 000008a5: SUB 000008a6: DUP2 000008a7: AND 000008a8: PUSH1 0x00 000008aa: SWAP1 000008ab: DUP2 000008ac: MSTORE 000008ad: PUSH1 0x9b 000008af: PUSH1 0x20 000008b1: MSTORE 000008b2: PUSH1 0x40 000008b4: SWAP1 000008b5: KECCAK256 000008b6: SLOAD 000008b7: DUP2 000008b8: SWAP1 000008b9: PUSH2 0x08fa 000008bc: JUMPI 000008bd: PUSH1 0x40 000008bf: DUP1 000008c0: MLOAD 000008c1: PUSH3 0x461bcd 000008c5: PUSH1 0xe5 000008c7: SHL 000008c8: DUP2 000008c9: MSTORE 000008ca: PUSH1 0x20 000008cc: PUSH1 0x04 000008ce: DUP3 000008cf: ADD 000008d0: MSTORE 000008d1: PUSH1 0x0e 000008d3: PUSH1 0x24 000008d5: DUP3 000008d6: ADD 000008d7: MSTORE 000008d8: PUSH14 0x1413d3d317d393d517d193d55391 000008e7: PUSH1 0x92 000008e9: SHL 000008ea: PUSH1 0x44 000008ec: DUP3 000008ed: ADD 000008ee: MSTORE 000008ef: SWAP1 000008f0: MLOAD 000008f1: SWAP1 000008f2: DUP2 000008f3: SWAP1 000008f4: SUB 000008f5: PUSH1 0x64 000008f7: ADD 000008f8: SWAP1 000008f9: REVERT 000008fa: JUMPDEST 000008fb: PUSH1 0x9a 000008fd: SLOAD 000008fe: PUSH1 0xff 00000900: AND 00000901: ISZERO 00000902: PUSH2 0x0952 00000905: JUMPI 00000906: PUSH1 0x40 00000908: DUP1 00000909: MLOAD 0000090a: PUSH3 0x461bcd 0000090e: PUSH1 0xe5 00000910: SHL 00000911: DUP2 00000912: MSTORE 00000913: PUSH1 0x20 00000915: PUSH1 0x04 00000917: DUP3 00000918: ADD 00000919: MSTORE 0000091a: PUSH1 0x18 0000091c: PUSH1 0x24 0000091e: DUP3 0000091f: ADD 00000920: MSTORE 00000921: PUSH32 0x4e4f545f414c4c4f5745445f494e5f454d455247454e43590000000000000000 00000942: PUSH1 0x44 00000944: DUP3 00000945: ADD 00000946: MSTORE 00000947: SWAP1 00000948: MLOAD 00000949: SWAP1 0000094a: DUP2 0000094b: SWAP1 0000094c: SUB 0000094d: PUSH1 0x64 0000094f: ADD 00000950: SWAP1 00000951: REVERT 00000952: JUMPDEST 00000953: PUSH1 0x00 00000955: PUSH2 0x095d 00000958: DUP4 00000959: PUSH2 0x13d5 0000095c: JUMP 0000095d: JUMPDEST 0000095e: SWAP1 0000095f: POP 00000960: DUP1 00000961: PUSH2 0x096a 00000964: JUMPI 00000965: POP 00000966: PUSH2 0x0a09 00000969: JUMP 0000096a: JUMPDEST 0000096b: PUSH1 0x01 0000096d: PUSH1 0x01 0000096f: PUSH1 0xa0 00000971: SHL 00000972: SUB 00000973: DUP4 00000974: AND 00000975: PUSH1 0x00 00000977: SWAP1 00000978: DUP2 00000979: MSTORE 0000097a: PUSH1 0x9d 0000097c: PUSH1 0x20 0000097e: SWAP1 0000097f: DUP2 00000980: MSTORE 00000981: PUSH1 0x40 00000983: DUP1 00000984: DUP4 00000985: KECCAK256 00000986: CALLER 00000987: DUP5 00000988: MSTORE 00000989: SWAP1 0000098a: SWAP2 0000098b: MSTORE 0000098c: SWAP1 0000098d: KECCAK256 0000098e: PUSH1 0x03 00000990: DUP2 00000991: ADD 00000992: SLOAD 00000993: PUSH2 0x099c 00000996: SWAP1 00000997: DUP4 00000998: PUSH2 0x1b2c 0000099b: JUMP 0000099c: JUMPDEST 0000099d: PUSH1 0x03 0000099f: DUP3 000009a0: ADD 000009a1: SSTORE 000009a2: PUSH2 0x09ab 000009a5: DUP5 000009a6: CALLER 000009a7: PUSH2 0x1b8f 000009aa: JUMP 000009ab: JUMPDEST 000009ac: PUSH2 0x09bf 000009af: PUSH1 0x01 000009b1: PUSH1 0x01 000009b3: PUSH1 0xa0 000009b5: SHL 000009b6: SUB 000009b7: DUP6 000009b8: AND 000009b9: CALLER 000009ba: DUP5 000009bb: PUSH2 0x1c0f 000009be: JUMP 000009bf: JUMPDEST 000009c0: PUSH1 0x40 000009c2: DUP1 000009c3: MLOAD 000009c4: DUP4 000009c5: DUP2 000009c6: MSTORE 000009c7: TIMESTAMP 000009c8: PUSH1 0x20 000009ca: DUP3 000009cb: ADD 000009cc: MSTORE 000009cd: DUP2 000009ce: MLOAD 000009cf: CALLER 000009d0: SWAP3 000009d1: PUSH1 0x01 000009d3: PUSH1 0x01 000009d5: PUSH1 0xa0 000009d7: SHL 000009d8: SUB 000009d9: DUP9 000009da: AND 000009db: SWAP3 000009dc: PUSH32 0xd5eeb1722f31a8860bc267994791dfaa8cd4a69618a5657894ef35b5ee6a1910 000009fd: SWAP3 000009fe: SWAP1 000009ff: DUP2 00000a00: SWAP1 00000a01: SUB 00000a02: SWAP1 00000a03: SWAP2 00000a04: ADD 00000a05: SWAP1 00000a06: LOG3 00000a07: POP 00000a08: POP 00000a09: JUMPDEST 00000a0a: POP 00000a0b: POP 00000a0c: JUMP 00000a0d: JUMPDEST 00000a0e: PUSH1 0x9d 00000a10: PUSH1 0x20 00000a12: SWAP1 00000a13: DUP2 00000a14: MSTORE 00000a15: PUSH1 0x00 00000a17: SWAP3 00000a18: DUP4 00000a19: MSTORE 00000a1a: PUSH1 0x40 00000a1c: DUP1 00000a1d: DUP5 00000a1e: KECCAK256 00000a1f: SWAP1 00000a20: SWAP2 00000a21: MSTORE 00000a22: SWAP1 00000a23: DUP3 00000a24: MSTORE 00000a25: SWAP1 00000a26: KECCAK256 00000a27: DUP1 00000a28: SLOAD 00000a29: PUSH1 0x01 00000a2b: DUP3 00000a2c: ADD 00000a2d: SLOAD 00000a2e: PUSH1 0x02 00000a30: DUP4 00000a31: ADD 00000a32: SLOAD 00000a33: PUSH1 0x03 00000a35: DUP5 00000a36: ADD 00000a37: SLOAD 00000a38: PUSH1 0x04 00000a3a: DUP6 00000a3b: ADD 00000a3c: SLOAD 00000a3d: PUSH1 0x05 00000a3f: SWAP1 00000a40: SWAP6 00000a41: ADD 00000a42: SLOAD 00000a43: SWAP4 00000a44: SWAP5 00000a45: SWAP3 00000a46: SWAP4 00000a47: SWAP2 00000a48: SWAP3 00000a49: SWAP1 00000a4a: SWAP2 00000a4b: PUSH5 0xffffffffff 00000a51: AND 00000a52: DUP7 00000a53: JUMP 00000a54: JUMPDEST 00000a55: PUSH1 0x99 00000a57: SLOAD 00000a58: DUP2 00000a59: JUMP 00000a5a: JUMPDEST 00000a5b: PUSH1 0x98 00000a5d: SLOAD 00000a5e: DUP2 00000a5f: JUMP 00000a60: JUMPDEST 00000a61: PUSH2 0x0a69 00000a64: DUP2 00000a65: PUSH2 0x0f11 00000a68: JUMP 00000a69: JUMPDEST 00000a6a: PUSH1 0x00 00000a6c: PUSH2 0x0a74 00000a6f: DUP3 00000a70: PUSH2 0x1544 00000a73: JUMP 00000a74: JUMPDEST 00000a75: SWAP1 00000a76: POP 00000a77: DUP1 00000a78: PUSH2 0x0a81 00000a7b: JUMPI 00000a7c: POP 00000a7d: PUSH2 0x089a 00000a80: JUMP 00000a81: JUMPDEST 00000a82: PUSH1 0x01 00000a84: PUSH1 0x01 00000a86: PUSH1 0xa0 00000a88: SHL 00000a89: SUB 00000a8a: DUP3 00000a8b: AND 00000a8c: PUSH1 0x00 00000a8e: SWAP1 00000a8f: DUP2 00000a90: MSTORE 00000a91: PUSH1 0xd9 00000a93: PUSH1 0x20 00000a95: SWAP1 00000a96: DUP2 00000a97: MSTORE 00000a98: PUSH1 0x40 00000a9a: DUP1 00000a9b: DUP4 00000a9c: KECCAK256 00000a9d: CALLER 00000a9e: DUP5 00000a9f: MSTORE 00000aa0: SWAP1 00000aa1: SWAP2 00000aa2: MSTORE 00000aa3: SWAP1 00000aa4: KECCAK256 00000aa5: DUP1 00000aa6: SLOAD 00000aa7: PUSH2 0x0ab0 00000aaa: SWAP1 00000aab: DUP4 00000aac: PUSH2 0x1b2c 00000aaf: JUMP 00000ab0: JUMPDEST 00000ab1: DUP2 00000ab2: SSTORE 00000ab3: PUSH2 0x0abc 00000ab6: DUP4 00000ab7: CALLER 00000ab8: PUSH2 0x1c8f 00000abb: JUMP 00000abc: JUMPDEST 00000abd: PUSH1 0xd1 00000abf: SLOAD 00000ac0: PUSH2 0x0ad3 00000ac3: SWAP1 00000ac4: PUSH1 0x01 00000ac6: PUSH1 0x01 00000ac8: PUSH1 0xa0 00000aca: SHL 00000acb: SUB 00000acc: AND 00000acd: CALLER 00000ace: DUP5 00000acf: PUSH2 0x1c0f 00000ad2: JUMP 00000ad3: JUMPDEST 00000ad4: PUSH1 0x40 00000ad6: DUP1 00000ad7: MLOAD 00000ad8: DUP4 00000ad9: DUP2 00000ada: MSTORE 00000adb: TIMESTAMP 00000adc: PUSH1 0x20 00000ade: DUP3 00000adf: ADD 00000ae0: MSTORE 00000ae1: DUP2 00000ae2: MLOAD 00000ae3: CALLER 00000ae4: SWAP3 00000ae5: PUSH1 0x01 00000ae7: PUSH1 0x01 00000ae9: PUSH1 0xa0 00000aeb: SHL 00000aec: SUB 00000aed: DUP8 00000aee: AND 00000aef: SWAP3 00000af0: PUSH32 0x3a8217b8543a68a24a3237f554f6bde895eea533bb07a2fa7bd68ce790fd80fb 00000b11: SWAP3 00000b12: SWAP1 00000b13: DUP2 00000b14: SWAP1 00000b15: SUB 00000b16: SWAP1 00000b17: SWAP2 00000b18: ADD 00000b19: SWAP1 00000b1a: LOG3 00000b1b: POP 00000b1c: POP 00000b1d: POP 00000b1e: JUMP 00000b1f: JUMPDEST 00000b20: PUSH2 0x0b27 00000b23: PUSH2 0x1d11 00000b26: JUMP 00000b27: JUMPDEST 00000b28: PUSH1 0x65 00000b2a: SLOAD 00000b2b: PUSH1 0x01 00000b2d: PUSH1 0x01 00000b2f: PUSH1 0xa0 00000b31: SHL 00000b32: SUB 00000b33: SWAP1 00000b34: DUP2 00000b35: AND 00000b36: SWAP2 00000b37: AND 00000b38: EQ 00000b39: PUSH2 0x0b89 00000b3c: JUMPI 00000b3d: PUSH1 0x40 00000b3f: DUP1 00000b40: MLOAD 00000b41: PUSH3 0x461bcd 00000b45: PUSH1 0xe5 00000b47: SHL 00000b48: DUP2 00000b49: MSTORE 00000b4a: PUSH1 0x20 00000b4c: PUSH1 0x04 00000b4e: DUP3 00000b4f: ADD 00000b50: DUP2 00000b51: SWAP1 00000b52: MSTORE 00000b53: PUSH1 0x24 00000b55: DUP3 00000b56: ADD 00000b57: MSTORE 00000b58: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00000b79: PUSH1 0x44 00000b7b: DUP3 00000b7c: ADD 00000b7d: MSTORE 00000b7e: SWAP1 00000b7f: MLOAD 00000b80: SWAP1 00000b81: DUP2 00000b82: SWAP1 00000b83: SUB 00000b84: PUSH1 0x64 00000b86: ADD 00000b87: SWAP1 00000b88: REVERT 00000b89: JUMPDEST 00000b8a: DUP1 00000b8b: ISZERO 00000b8c: PUSH2 0x0b9c 00000b8f: JUMPI 00000b90: PUSH2 0x0b97 00000b93: PUSH2 0x1481 00000b96: JUMP 00000b97: JUMPDEST 00000b98: PUSH2 0x0c09 00000b9b: JUMP 00000b9c: JUMPDEST 00000b9d: PUSH1 0x01 00000b9f: PUSH1 0x01 00000ba1: PUSH1 0xa0 00000ba3: SHL 00000ba4: SUB 00000ba5: DUP4 00000ba6: AND 00000ba7: PUSH1 0x00 00000ba9: SWAP1 00000baa: DUP2 00000bab: MSTORE 00000bac: PUSH1 0xd8 00000bae: PUSH1 0x20 00000bb0: MSTORE 00000bb1: PUSH1 0x40 00000bb3: SWAP1 00000bb4: KECCAK256 00000bb5: SLOAD 00000bb6: DUP3 00000bb7: LT 00000bb8: ISZERO 00000bb9: PUSH2 0x0c09 00000bbc: JUMPI 00000bbd: PUSH1 0x40 00000bbf: DUP1 00000bc0: MLOAD 00000bc1: PUSH3 0x461bcd 00000bc5: PUSH1 0xe5 00000bc7: SHL 00000bc8: DUP2 00000bc9: MSTORE 00000bca: PUSH1 0x20 00000bcc: PUSH1 0x04 00000bce: DUP3 00000bcf: ADD 00000bd0: MSTORE 00000bd1: PUSH1 0x13 00000bd3: PUSH1 0x24 00000bd5: DUP3 00000bd6: ADD 00000bd7: MSTORE 00000bd8: PUSH32 0x5550444154455f414c4c5f524551554952454400000000000000000000000000 00000bf9: PUSH1 0x44 00000bfb: DUP3 00000bfc: ADD 00000bfd: MSTORE 00000bfe: SWAP1 00000bff: MLOAD 00000c00: SWAP1 00000c01: DUP2 00000c02: SWAP1 00000c03: SUB 00000c04: PUSH1 0x64 00000c06: ADD 00000c07: SWAP1 00000c08: REVERT 00000c09: JUMPDEST 00000c0a: POP 00000c0b: PUSH1 0x01 00000c0d: PUSH1 0x01 00000c0f: PUSH1 0xa0 00000c11: SHL 00000c12: SUB 00000c13: SWAP1 00000c14: SWAP2 00000c15: AND 00000c16: PUSH1 0x00 00000c18: SWAP1 00000c19: DUP2 00000c1a: MSTORE 00000c1b: PUSH1 0xd8 00000c1d: PUSH1 0x20 00000c1f: MSTORE 00000c20: PUSH1 0x40 00000c22: SWAP1 00000c23: KECCAK256 00000c24: DUP1 00000c25: SLOAD 00000c26: PUSH1 0xd7 00000c28: DUP1 00000c29: SLOAD 00000c2a: SWAP2 00000c2b: SWAP1 00000c2c: SWAP2 00000c2d: SUB 00000c2e: DUP4 00000c2f: ADD 00000c30: SWAP1 00000c31: SSTORE 00000c32: SSTORE 00000c33: JUMP 00000c34: JUMPDEST 00000c35: PUSH1 0x00 00000c37: SLOAD 00000c38: PUSH2 0x0100 00000c3b: SWAP1 00000c3c: DIV 00000c3d: PUSH1 0xff 00000c3f: AND 00000c40: DUP1 00000c41: PUSH2 0x0c4d 00000c44: JUMPI 00000c45: POP 00000c46: PUSH2 0x0c4d 00000c49: PUSH2 0x1d15 00000c4c: JUMP 00000c4d: JUMPDEST 00000c4e: DUP1 00000c4f: PUSH2 0x0c5b 00000c52: JUMPI 00000c53: POP 00000c54: PUSH1 0x00 00000c56: SLOAD 00000c57: PUSH1 0xff 00000c59: AND 00000c5a: ISZERO 00000c5b: JUMPDEST 00000c5c: PUSH2 0x0c96 00000c5f: JUMPI 00000c60: PUSH1 0x40 00000c62: MLOAD 00000c63: PUSH3 0x461bcd 00000c67: PUSH1 0xe5 00000c69: SHL 00000c6a: DUP2 00000c6b: MSTORE 00000c6c: PUSH1 0x04 00000c6e: ADD 00000c6f: DUP1 00000c70: DUP1 00000c71: PUSH1 0x20 00000c73: ADD 00000c74: DUP3 00000c75: DUP2 00000c76: SUB 00000c77: DUP3 00000c78: MSTORE 00000c79: PUSH1 0x2e 00000c7b: DUP2 00000c7c: MSTORE 00000c7d: PUSH1 0x20 00000c7f: ADD 00000c80: DUP1 00000c81: PUSH2 0x2e3d 00000c84: PUSH1 0x2e 00000c86: SWAP2 00000c87: CODECOPY 00000c88: PUSH1 0x40 00000c8a: ADD 00000c8b: SWAP2 00000c8c: POP 00000c8d: POP 00000c8e: PUSH1 0x40 00000c90: MLOAD 00000c91: DUP1 00000c92: SWAP2 00000c93: SUB 00000c94: SWAP1 00000c95: REVERT 00000c96: JUMPDEST 00000c97: PUSH1 0x00 00000c99: SLOAD 00000c9a: PUSH2 0x0100 00000c9d: SWAP1 00000c9e: DIV 00000c9f: PUSH1 0xff 00000ca1: AND 00000ca2: ISZERO 00000ca3: DUP1 00000ca4: ISZERO 00000ca5: PUSH2 0x0cc1 00000ca8: JUMPI 00000ca9: PUSH1 0x00 00000cab: DUP1 00000cac: SLOAD 00000cad: PUSH1 0xff 00000caf: NOT 00000cb0: PUSH2 0xff00 00000cb3: NOT 00000cb4: SWAP1 00000cb5: SWAP2 00000cb6: AND 00000cb7: PUSH2 0x0100 00000cba: OR 00000cbb: AND 00000cbc: PUSH1 0x01 00000cbe: OR 00000cbf: SWAP1 00000cc0: SSTORE 00000cc1: JUMPDEST 00000cc2: DUP3 00000cc3: DUP3 00000cc4: GT 00000cc5: ISZERO 00000cc6: PUSH2 0x0d16 00000cc9: JUMPI 00000cca: PUSH1 0x40 00000ccc: DUP1 00000ccd: MLOAD 00000cce: PUSH3 0x461bcd 00000cd2: PUSH1 0xe5 00000cd4: SHL 00000cd5: DUP2 00000cd6: MSTORE 00000cd7: PUSH1 0x20 00000cd9: PUSH1 0x04 00000cdb: DUP3 00000cdc: ADD 00000cdd: MSTORE 00000cde: PUSH1 0x0d 00000ce0: PUSH1 0x24 00000ce2: DUP3 00000ce3: ADD 00000ce4: MSTORE 00000ce5: PUSH32 0x494e56414c49445f504152414d00000000000000000000000000000000000000 00000d06: PUSH1 0x44 00000d08: DUP3 00000d09: ADD 00000d0a: MSTORE 00000d0b: SWAP1 00000d0c: MLOAD 00000d0d: SWAP1 00000d0e: DUP2 00000d0f: SWAP1 00000d10: SUB 00000d11: PUSH1 0x64 00000d13: ADD 00000d14: SWAP1 00000d15: REVERT 00000d16: JUMPDEST 00000d17: PUSH2 0x0d1e 00000d1a: PUSH2 0x1254 00000d1d: JUMP 00000d1e: JUMPDEST 00000d1f: PUSH1 0xd1 00000d21: DUP1 00000d22: SLOAD 00000d23: PUSH1 0x01 00000d25: PUSH1 0x01 00000d27: PUSH1 0xa0 00000d29: SHL 00000d2a: SUB 00000d2b: NOT 00000d2c: AND 00000d2d: PUSH1 0x01 00000d2f: PUSH1 0x01 00000d31: PUSH1 0xa0 00000d33: SHL 00000d34: SUB 00000d35: DUP8 00000d36: AND 00000d37: OR 00000d38: SWAP1 00000d39: SSTORE 00000d3a: PUSH1 0xd2 00000d3c: DUP5 00000d3d: SWAP1 00000d3e: SSTORE 00000d3f: PUSH8 0x016345785d8a0000 00000d48: PUSH1 0xd5 00000d4a: SSTORE 00000d4b: PUSH2 0x0d54 00000d4e: DUP5 00000d4f: DUP5 00000d50: PUSH2 0x1b2c 00000d53: JUMP 00000d54: JUMPDEST 00000d55: PUSH1 0xd3 00000d57: SSTORE 00000d58: PUSH1 0xd2 00000d5a: SLOAD 00000d5b: PUSH2 0x0d64 00000d5e: SWAP1 00000d5f: DUP4 00000d60: PUSH2 0x1b2c 00000d63: JUMP 00000d64: JUMPDEST 00000d65: PUSH1 0xd4 00000d67: SSTORE 00000d68: PUSH1 0x05 00000d6a: PUSH1 0xd6 00000d6c: SSTORE 00000d6d: DUP1 00000d6e: ISZERO 00000d6f: PUSH2 0x0d7e 00000d72: JUMPI 00000d73: PUSH1 0x00 00000d75: DUP1 00000d76: SLOAD 00000d77: PUSH2 0xff00 00000d7a: NOT 00000d7b: AND 00000d7c: SWAP1 00000d7d: SSTORE 00000d7e: JUMPDEST 00000d7f: POP 00000d80: POP 00000d81: POP 00000d82: POP 00000d83: POP 00000d84: JUMP 00000d85: JUMPDEST 00000d86: PUSH2 0x0d8e 00000d89: DUP4 00000d8a: PUSH2 0x0a60 00000d8d: JUMP 00000d8e: JUMPDEST 00000d8f: PUSH2 0x0d99 00000d92: DUP4 00000d93: DUP4 00000d94: DUP4 00000d95: PUSH2 0x1d1b 00000d98: JUMP 00000d99: JUMPDEST 00000d9a: PUSH2 0x0da3 00000d9d: DUP4 00000d9e: CALLER 00000d9f: PUSH2 0x1c8f 00000da2: JUMP 00000da3: JUMPDEST 00000da4: POP 00000da5: POP 00000da6: POP 00000da7: JUMP 00000da8: JUMPDEST 00000da9: PUSH1 0xd9 00000dab: PUSH1 0x20 00000dad: SWAP1 00000dae: DUP2 00000daf: MSTORE 00000db0: PUSH1 0x00 00000db2: SWAP3 00000db3: DUP4 00000db4: MSTORE 00000db5: PUSH1 0x40 00000db7: DUP1 00000db8: DUP5 00000db9: KECCAK256 00000dba: SWAP1 00000dbb: SWAP2 00000dbc: MSTORE 00000dbd: SWAP1 00000dbe: DUP3 00000dbf: MSTORE 00000dc0: SWAP1 00000dc1: KECCAK256 00000dc2: DUP1 00000dc3: SLOAD 00000dc4: PUSH1 0x01 00000dc6: SWAP1 00000dc7: SWAP2 00000dc8: ADD 00000dc9: SLOAD 00000dca: DUP3 00000dcb: JUMP 00000dcc: JUMPDEST 00000dcd: PUSH1 0x01 00000dcf: PUSH1 0x01 00000dd1: PUSH1 0xa0 00000dd3: SHL 00000dd4: SUB 00000dd5: DUP1 00000dd6: DUP5 00000dd7: AND 00000dd8: PUSH1 0x00 00000dda: SWAP1 00000ddb: DUP2 00000ddc: MSTORE 00000ddd: PUSH1 0x9d 00000ddf: PUSH1 0x20 00000de1: SWAP1 00000de2: DUP2 00000de3: MSTORE 00000de4: PUSH1 0x40 00000de6: DUP1 00000de7: DUP4 00000de8: KECCAK256 00000de9: SWAP4 00000dea: DUP7 00000deb: AND 00000dec: DUP4 00000ded: MSTORE 00000dee: SWAP3 00000def: SWAP1 00000df0: MSTORE 00000df1: SWAP1 00000df2: DUP2 00000df3: KECCAK256 00000df4: PUSH1 0x06 00000df6: ADD 00000df7: DUP1 00000df8: SLOAD 00000df9: DUP3 00000dfa: SWAP2 00000dfb: SWAP1 00000dfc: DUP5 00000dfd: SWAP1 00000dfe: DUP2 00000dff: LT 00000e00: PUSH2 0x0e05 00000e03: JUMPI 00000e04: INVALID 00000e05: JUMPDEST 00000e06: SWAP1 00000e07: PUSH1 0x00 00000e09: MSTORE 00000e0a: PUSH1 0x20 00000e0c: PUSH1 0x00 00000e0e: KECCAK256 00000e0f: SWAP1 00000e10: PUSH1 0x05 00000e12: MUL 00000e13: ADD 00000e14: SWAP1 00000e15: POP 00000e16: PUSH2 0x0e34 00000e19: PUSH1 0x99 00000e1b: SLOAD 00000e1c: DUP3 00000e1d: PUSH1 0x00 00000e1f: ADD 00000e20: SLOAD 00000e21: MUL 00000e22: DUP3 00000e23: PUSH1 0x01 00000e25: ADD 00000e26: SLOAD 00000e27: PUSH2 0x2217 00000e2a: SWAP1 00000e2b: SWAP2 00000e2c: SWAP1 00000e2d: PUSH4 0xffffffff 00000e32: AND 00000e33: JUMP 00000e34: JUMPDEST 00000e35: SWAP6 00000e36: SWAP5 00000e37: POP 00000e38: POP 00000e39: POP 00000e3a: POP 00000e3b: POP 00000e3c: JUMP 00000e3d: JUMPDEST 00000e3e: PUSH1 0xd3 00000e40: SLOAD 00000e41: DUP2 00000e42: JUMP 00000e43: JUMPDEST 00000e44: PUSH2 0x0e4b 00000e47: PUSH2 0x1d11 00000e4a: JUMP 00000e4b: JUMPDEST 00000e4c: PUSH1 0x65 00000e4e: SLOAD 00000e4f: PUSH1 0x01 00000e51: PUSH1 0x01 00000e53: PUSH1 0xa0 00000e55: SHL 00000e56: SUB 00000e57: SWAP1 00000e58: DUP2 00000e59: AND 00000e5a: SWAP2 00000e5b: AND 00000e5c: EQ 00000e5d: PUSH2 0x0ead 00000e60: JUMPI 00000e61: PUSH1 0x40 00000e63: DUP1 00000e64: MLOAD 00000e65: PUSH3 0x461bcd 00000e69: PUSH1 0xe5 00000e6b: SHL 00000e6c: DUP2 00000e6d: MSTORE 00000e6e: PUSH1 0x20 00000e70: PUSH1 0x04 00000e72: DUP3 00000e73: ADD 00000e74: DUP2 00000e75: SWAP1 00000e76: MSTORE 00000e77: PUSH1 0x24 00000e79: DUP3 00000e7a: ADD 00000e7b: MSTORE 00000e7c: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00000e9d: PUSH1 0x44 00000e9f: DUP3 00000ea0: ADD 00000ea1: MSTORE 00000ea2: SWAP1 00000ea3: MLOAD 00000ea4: SWAP1 00000ea5: DUP2 00000ea6: SWAP1 00000ea7: SUB 00000ea8: PUSH1 0x64 00000eaa: ADD 00000eab: SWAP1 00000eac: REVERT 00000ead: JUMPDEST 00000eae: PUSH1 0x65 00000eb0: SLOAD 00000eb1: PUSH1 0x40 00000eb3: MLOAD 00000eb4: PUSH1 0x00 00000eb6: SWAP2 00000eb7: PUSH1 0x01 00000eb9: PUSH1 0x01 00000ebb: PUSH1 0xa0 00000ebd: SHL 00000ebe: SUB 00000ebf: AND 00000ec0: SWAP1 00000ec1: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000ee2: SWAP1 00000ee3: DUP4 00000ee4: SWAP1 00000ee5: LOG3 00000ee6: PUSH1 0x65 00000ee8: DUP1 00000ee9: SLOAD 00000eea: PUSH1 0x01 00000eec: PUSH1 0x01 00000eee: PUSH1 0xa0 00000ef0: SHL 00000ef1: SUB 00000ef2: NOT 00000ef3: AND 00000ef4: SWAP1 00000ef5: SSTORE 00000ef6: JUMP 00000ef7: JUMPDEST 00000ef8: PUSH2 0x0f00 00000efb: DUP4 00000efc: PUSH2 0x0a60 00000eff: JUMP 00000f00: JUMPDEST 00000f01: PUSH2 0x0d99 00000f04: DUP4 00000f05: DUP4 00000f06: DUP4 00000f07: PUSH2 0x2259 00000f0a: JUMP 00000f0b: JUMPDEST 00000f0c: PUSH1 0xd2 00000f0e: SLOAD 00000f0f: DUP2 00000f10: JUMP 00000f11: JUMPDEST 00000f12: PUSH1 0x01 00000f14: PUSH1 0x01 00000f16: PUSH1 0xa0 00000f18: SHL 00000f19: SUB 00000f1a: DUP2 00000f1b: AND 00000f1c: PUSH1 0x00 00000f1e: SWAP1 00000f1f: DUP2 00000f20: MSTORE 00000f21: PUSH1 0x9b 00000f23: PUSH1 0x20 00000f25: MSTORE 00000f26: PUSH1 0x40 00000f28: SWAP1 00000f29: KECCAK256 00000f2a: SLOAD 00000f2b: DUP2 00000f2c: SWAP1 00000f2d: PUSH2 0x0f6e 00000f30: JUMPI 00000f31: PUSH1 0x40 00000f33: DUP1 00000f34: MLOAD 00000f35: PUSH3 0x461bcd 00000f39: PUSH1 0xe5 00000f3b: SHL 00000f3c: DUP2 00000f3d: MSTORE 00000f3e: PUSH1 0x20 00000f40: PUSH1 0x04 00000f42: DUP3 00000f43: ADD 00000f44: MSTORE 00000f45: PUSH1 0x0e 00000f47: PUSH1 0x24 00000f49: DUP3 00000f4a: ADD 00000f4b: MSTORE 00000f4c: PUSH14 0x1413d3d317d393d517d193d55391 00000f5b: PUSH1 0x92 00000f5d: SHL 00000f5e: PUSH1 0x44 00000f60: DUP3 00000f61: ADD 00000f62: MSTORE 00000f63: SWAP1 00000f64: MLOAD 00000f65: SWAP1 00000f66: DUP2 00000f67: SWAP1 00000f68: SUB 00000f69: PUSH1 0x64 00000f6b: ADD 00000f6c: SWAP1 00000f6d: REVERT 00000f6e: JUMPDEST 00000f6f: PUSH1 0x01 00000f71: PUSH1 0x01 00000f73: PUSH1 0xa0 00000f75: SHL 00000f76: SUB 00000f77: DUP3 00000f78: AND 00000f79: PUSH1 0x00 00000f7b: SWAP1 00000f7c: DUP2 00000f7d: MSTORE 00000f7e: PUSH1 0xd8 00000f80: PUSH1 0x20 00000f82: MSTORE 00000f83: PUSH1 0x40 00000f85: SWAP1 00000f86: KECCAK256 00000f87: PUSH1 0x02 00000f89: DUP2 00000f8a: ADD 00000f8b: SLOAD 00000f8c: NUMBER 00000f8d: GT 00000f8e: PUSH2 0x0f97 00000f91: JUMPI 00000f92: POP 00000f93: PUSH2 0x0a09 00000f96: JUMP 00000f97: JUMPDEST 00000f98: PUSH1 0x01 00000f9a: PUSH1 0x01 00000f9c: PUSH1 0xa0 00000f9e: SHL 00000f9f: SUB 00000fa0: DUP4 00000fa1: AND 00000fa2: PUSH1 0x00 00000fa4: SWAP1 00000fa5: DUP2 00000fa6: MSTORE 00000fa7: PUSH1 0x9b 00000fa9: PUSH1 0x20 00000fab: MSTORE 00000fac: PUSH1 0x40 00000fae: DUP2 00000faf: KECCAK256 00000fb0: SWAP1 00000fb1: PUSH2 0x0fb9 00000fb4: DUP6 00000fb5: PUSH2 0x2654 00000fb8: JUMP 00000fb9: JUMPDEST 00000fba: SWAP1 00000fbb: POP 00000fbc: DUP3 00000fbd: PUSH1 0x02 00000fbf: ADD 00000fc0: SLOAD 00000fc1: PUSH1 0x00 00000fc3: EQ 00000fc4: ISZERO 00000fc5: DUP1 00000fc6: ISZERO 00000fc7: PUSH2 0x0fd4 00000fca: JUMPI 00000fcb: POP 00000fcc: PUSH1 0x00 00000fce: DUP3 00000fcf: PUSH1 0x02 00000fd1: ADD 00000fd2: SLOAD 00000fd3: GT 00000fd4: JUMPDEST 00000fd5: DUP1 00000fd6: ISZERO 00000fd7: PUSH2 0x0fe0 00000fda: JUMPI 00000fdb: POP 00000fdc: PUSH1 0x00 00000fde: DUP2 00000fdf: GT 00000fe0: JUMPDEST 00000fe1: ISZERO 00000fe2: PUSH2 0x1163 00000fe5: JUMPI 00000fe6: PUSH1 0xd1 00000fe8: SLOAD 00000fe9: PUSH1 0x9e 00000feb: SLOAD 00000fec: PUSH1 0x01 00000fee: PUSH1 0x01 00000ff0: PUSH1 0xa0 00000ff2: SHL 00000ff3: SUB 00000ff4: SWAP2 00000ff5: DUP3 00000ff6: AND 00000ff7: SWAP2 00000ff8: PUSH4 0x40c10f19 00000ffd: SWAP2 00000ffe: AND 00000fff: PUSH2 0x1009 00001002: DUP5 00001003: PUSH1 0x09 00001005: PUSH2 0x2696 00001008: JUMP 00001009: JUMPDEST 0000100a: PUSH1 0x40 0000100c: MLOAD 0000100d: DUP4 0000100e: PUSH4 0xffffffff 00001013: AND 00001014: PUSH1 0xe0 00001016: SHL 00001017: DUP2 00001018: MSTORE 00001019: PUSH1 0x04 0000101b: ADD 0000101c: DUP1 0000101d: DUP4 0000101e: PUSH1 0x01 00001020: PUSH1 0x01 00001022: PUSH1 0xa0 00001024: SHL 00001025: SUB 00001026: AND 00001027: DUP2 00001028: MSTORE 00001029: PUSH1 0x20 0000102b: ADD 0000102c: DUP3 0000102d: DUP2 0000102e: MSTORE 0000102f: PUSH1 0x20 00001031: ADD 00001032: SWAP3 00001033: POP 00001034: POP 00001035: POP 00001036: PUSH1 0x00 00001038: PUSH1 0x40 0000103a: MLOAD 0000103b: DUP1 0000103c: DUP4 0000103d: SUB 0000103e: DUP2 0000103f: PUSH1 0x00 00001041: DUP8 00001042: DUP1 00001043: EXTCODESIZE 00001044: ISZERO 00001045: DUP1 00001046: ISZERO 00001047: PUSH2 0x104f 0000104a: JUMPI 0000104b: PUSH1 0x00 0000104d: DUP1 0000104e: REVERT 0000104f: JUMPDEST 00001050: POP 00001051: GAS 00001052: CALL 00001053: ISZERO 00001054: DUP1 00001055: ISZERO 00001056: PUSH2 0x1063 00001059: JUMPI 0000105a: RETURNDATASIZE 0000105b: PUSH1 0x00 0000105d: DUP1 0000105e: RETURNDATACOPY 0000105f: RETURNDATASIZE 00001060: PUSH1 0x00 00001062: REVERT 00001063: JUMPDEST 00001064: POP 00001065: POP 00001066: PUSH1 0xd1 00001068: SLOAD 00001069: PUSH1 0x40 0000106b: DUP1 0000106c: MLOAD 0000106d: PUSH32 0x40c10f1900000000000000000000000000000000000000000000000000000000 0000108e: DUP2 0000108f: MSTORE 00001090: ADDRESS 00001091: PUSH1 0x04 00001093: DUP3 00001094: ADD 00001095: MSTORE 00001096: PUSH1 0x24 00001098: DUP2 00001099: ADD 0000109a: DUP7 0000109b: SWAP1 0000109c: MSTORE 0000109d: SWAP1 0000109e: MLOAD 0000109f: PUSH1 0x01 000010a1: PUSH1 0x01 000010a3: PUSH1 0xa0 000010a5: SHL 000010a6: SUB 000010a7: SWAP1 000010a8: SWAP3 000010a9: AND 000010aa: SWAP4 000010ab: POP 000010ac: PUSH4 0x40c10f19 000010b1: SWAP3 000010b2: POP 000010b3: PUSH1 0x44 000010b5: DUP1 000010b6: DUP3 000010b7: ADD 000010b8: SWAP3 000010b9: PUSH1 0x00 000010bb: SWAP3 000010bc: SWAP1 000010bd: SWAP2 000010be: SWAP1 000010bf: DUP3 000010c0: SWAP1 000010c1: SUB 000010c2: ADD 000010c3: DUP2 000010c4: DUP4 000010c5: DUP8 000010c6: DUP1 000010c7: EXTCODESIZE 000010c8: ISZERO 000010c9: DUP1 000010ca: ISZERO 000010cb: PUSH2 0x10d3 000010ce: JUMPI 000010cf: PUSH1 0x00 000010d1: DUP1 000010d2: REVERT 000010d3: JUMPDEST 000010d4: POP 000010d5: GAS 000010d6: CALL 000010d7: ISZERO 000010d8: DUP1 000010d9: ISZERO 000010da: PUSH2 0x10e7 000010dd: JUMPI 000010de: RETURNDATASIZE 000010df: PUSH1 0x00 000010e1: DUP1 000010e2: RETURNDATACOPY 000010e3: RETURNDATASIZE 000010e4: PUSH1 0x00 000010e6: REVERT 000010e7: JUMPDEST 000010e8: POP 000010e9: POP 000010ea: POP 000010eb: PUSH1 0x02 000010ed: DUP4 000010ee: ADD 000010ef: SLOAD 000010f0: PUSH2 0x111b 000010f3: SWAP2 000010f4: POP 000010f5: PUSH2 0x1110 000010f8: SWAP1 000010f9: PUSH2 0x110a 000010fc: DUP5 000010fd: PUSH8 0x0de0b6b3a7640000 00001106: PUSH2 0x26d8 00001109: JUMP 0000110a: JUMPDEST 0000110b: SWAP1 0000110c: PUSH2 0x2696 0000110f: JUMP 00001110: JUMPDEST 00001111: PUSH1 0x01 00001113: DUP6 00001114: ADD 00001115: SLOAD 00001116: SWAP1 00001117: PUSH2 0x1b2c 0000111a: JUMP 0000111b: JUMPDEST 0000111c: PUSH1 0x01 0000111e: DUP5 0000111f: ADD 00001120: SSTORE 00001121: PUSH1 0x40 00001123: DUP1 00001124: MLOAD 00001125: DUP3 00001126: DUP2 00001127: MSTORE 00001128: TIMESTAMP 00001129: PUSH1 0x20 0000112b: DUP3 0000112c: ADD 0000112d: MSTORE 0000112e: DUP2 0000112f: MLOAD 00001130: PUSH1 0x01 00001132: PUSH1 0x01 00001134: PUSH1 0xa0 00001136: SHL 00001137: SUB 00001138: DUP9 00001139: AND 0000113a: SWAP3 0000113b: PUSH32 0x67c5ec4e3f0d3ce4fdaa7d69c15fc05062c881c6f042f24be9acedc9886a32bd 0000115c: SWAP3 0000115d: DUP3 0000115e: SWAP1 0000115f: SUB 00001160: ADD 00001161: SWAP1 00001162: LOG2 00001163: JUMPDEST 00001164: POP 00001165: POP 00001166: NUMBER 00001167: PUSH1 0x02 00001169: SWAP1 0000116a: SWAP2 0000116b: ADD 0000116c: SSTORE 0000116d: POP 0000116e: POP 0000116f: JUMP 00001170: JUMPDEST 00001171: PUSH2 0x1178 00001174: PUSH2 0x1d11 00001177: JUMP 00001178: JUMPDEST 00001179: PUSH1 0x65 0000117b: SLOAD 0000117c: PUSH1 0x01 0000117e: PUSH1 0x01 00001180: PUSH1 0xa0 00001182: SHL 00001183: SUB 00001184: SWAP1 00001185: DUP2 00001186: AND 00001187: SWAP2 00001188: AND 00001189: EQ 0000118a: PUSH2 0x11da 0000118d: JUMPI 0000118e: PUSH1 0x40 00001190: DUP1 00001191: MLOAD 00001192: PUSH3 0x461bcd 00001196: PUSH1 0xe5 00001198: SHL 00001199: DUP2 0000119a: MSTORE 0000119b: PUSH1 0x20 0000119d: PUSH1 0x04 0000119f: DUP3 000011a0: ADD 000011a1: DUP2 000011a2: SWAP1 000011a3: MSTORE 000011a4: PUSH1 0x24 000011a6: DUP3 000011a7: ADD 000011a8: MSTORE 000011a9: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 000011ca: PUSH1 0x44 000011cc: DUP3 000011cd: ADD 000011ce: MSTORE 000011cf: SWAP1 000011d0: MLOAD 000011d1: SWAP1 000011d2: DUP2 000011d3: SWAP1 000011d4: SUB 000011d5: PUSH1 0x64 000011d7: ADD 000011d8: SWAP1 000011d9: REVERT 000011da: JUMPDEST 000011db: PUSH1 0x01 000011dd: PUSH1 0x01 000011df: PUSH1 0xa0 000011e1: SHL 000011e2: SUB 000011e3: DUP3 000011e4: AND 000011e5: PUSH1 0x00 000011e7: SWAP1 000011e8: DUP2 000011e9: MSTORE 000011ea: PUSH1 0x9b 000011ec: PUSH1 0x20 000011ee: MSTORE 000011ef: PUSH1 0x40 000011f1: SWAP1 000011f2: KECCAK256 000011f3: SLOAD 000011f4: DUP3 000011f5: SWAP1 000011f6: PUSH2 0x1237 000011f9: JUMPI 000011fa: PUSH1 0x40 000011fc: DUP1 000011fd: MLOAD 000011fe: PUSH3 0x461bcd 00001202: PUSH1 0xe5 00001204: SHL 00001205: DUP2 00001206: MSTORE 00001207: PUSH1 0x20 00001209: PUSH1 0x04 0000120b: DUP3 0000120c: ADD 0000120d: MSTORE 0000120e: PUSH1 0x0e 00001210: PUSH1 0x24 00001212: DUP3 00001213: ADD 00001214: MSTORE 00001215: PUSH14 0x1413d3d317d393d517d193d55391 00001224: PUSH1 0x92 00001226: SHL 00001227: PUSH1 0x44 00001229: DUP3 0000122a: ADD 0000122b: MSTORE 0000122c: SWAP1 0000122d: MLOAD 0000122e: SWAP1 0000122f: DUP2 00001230: SWAP1 00001231: SUB 00001232: PUSH1 0x64 00001234: ADD 00001235: SWAP1 00001236: REVERT 00001237: JUMPDEST 00001238: POP 00001239: PUSH1 0x01 0000123b: PUSH1 0x01 0000123d: PUSH1 0xa0 0000123f: SHL 00001240: SUB 00001241: SWAP1 00001242: SWAP2 00001243: AND 00001244: PUSH1 0x00 00001246: SWAP1 00001247: DUP2 00001248: MSTORE 00001249: PUSH1 0x9b 0000124b: PUSH1 0x20 0000124d: MSTORE 0000124e: PUSH1 0x40 00001250: SWAP1 00001251: KECCAK256 00001252: SSTORE 00001253: JUMP 00001254: JUMPDEST 00001255: PUSH1 0x00 00001257: SLOAD 00001258: PUSH2 0x0100 0000125b: SWAP1 0000125c: DIV 0000125d: PUSH1 0xff 0000125f: AND 00001260: DUP1 00001261: PUSH2 0x126d 00001264: JUMPI 00001265: POP 00001266: PUSH2 0x126d 00001269: PUSH2 0x1d15 0000126c: JUMP 0000126d: JUMPDEST 0000126e: DUP1 0000126f: PUSH2 0x127b 00001272: JUMPI 00001273: POP 00001274: PUSH1 0x00 00001276: SLOAD 00001277: PUSH1 0xff 00001279: AND 0000127a: ISZERO 0000127b: JUMPDEST 0000127c: PUSH2 0x12b6 0000127f: JUMPI 00001280: PUSH1 0x40 00001282: MLOAD 00001283: PUSH3 0x461bcd 00001287: PUSH1 0xe5 00001289: SHL 0000128a: DUP2 0000128b: MSTORE 0000128c: PUSH1 0x04 0000128e: ADD 0000128f: DUP1 00001290: DUP1 00001291: PUSH1 0x20 00001293: ADD 00001294: DUP3 00001295: DUP2 00001296: SUB 00001297: DUP3 00001298: MSTORE 00001299: PUSH1 0x2e 0000129b: DUP2 0000129c: MSTORE 0000129d: PUSH1 0x20 0000129f: ADD 000012a0: DUP1 000012a1: PUSH2 0x2e3d 000012a4: PUSH1 0x2e 000012a6: SWAP2 000012a7: CODECOPY 000012a8: PUSH1 0x40 000012aa: ADD 000012ab: SWAP2 000012ac: POP 000012ad: POP 000012ae: PUSH1 0x40 000012b0: MLOAD 000012b1: DUP1 000012b2: SWAP2 000012b3: SUB 000012b4: SWAP1 000012b5: REVERT 000012b6: JUMPDEST 000012b7: PUSH1 0x00 000012b9: SLOAD 000012ba: PUSH2 0x0100 000012bd: SWAP1 000012be: DIV 000012bf: PUSH1 0xff 000012c1: AND 000012c2: ISZERO 000012c3: DUP1 000012c4: ISZERO 000012c5: PUSH2 0x12e1 000012c8: JUMPI 000012c9: PUSH1 0x00 000012cb: DUP1 000012cc: SLOAD 000012cd: PUSH1 0xff 000012cf: NOT 000012d0: PUSH2 0xff00 000012d3: NOT 000012d4: SWAP1 000012d5: SWAP2 000012d6: AND 000012d7: PUSH2 0x0100 000012da: OR 000012db: AND 000012dc: PUSH1 0x01 000012de: OR 000012df: SWAP1 000012e0: SSTORE 000012e1: JUMPDEST 000012e2: PUSH2 0x12e9 000012e5: PUSH2 0x2731 000012e8: JUMP 000012e9: JUMPDEST 000012ea: PUSH1 0x0a 000012ec: PUSH1 0x97 000012ee: SSTORE 000012ef: PUSH1 0x03 000012f1: PUSH1 0x98 000012f3: SSTORE 000012f4: PUSH3 0x278d00 000012f8: PUSH1 0x99 000012fa: SSTORE 000012fb: PUSH1 0x9e 000012fd: DUP1 000012fe: SLOAD 000012ff: PUSH1 0x01 00001301: PUSH1 0x01 00001303: PUSH1 0xa0 00001305: SHL 00001306: SUB 00001307: NOT 00001308: AND 00001309: PUSH20 0x82ca6d313bffe56e9096b16633dfd414148d66b1 0000131e: OR 0000131f: SWAP1 00001320: SSTORE 00001321: DUP1 00001322: ISZERO 00001323: PUSH2 0x089a 00001326: JUMPI 00001327: PUSH1 0x00 00001329: DUP1 0000132a: SLOAD 0000132b: PUSH2 0xff00 0000132e: NOT 0000132f: AND 00001330: SWAP1 00001331: SSTORE 00001332: POP 00001333: JUMP 00001334: JUMPDEST 00001335: PUSH2 0x133c 00001338: PUSH2 0x1d11 0000133b: JUMP 0000133c: JUMPDEST 0000133d: PUSH1 0x65 0000133f: SLOAD 00001340: PUSH1 0x01 00001342: PUSH1 0x01 00001344: PUSH1 0xa0 00001346: SHL 00001347: SUB 00001348: SWAP1 00001349: DUP2 0000134a: AND 0000134b: SWAP2 0000134c: AND 0000134d: EQ 0000134e: PUSH2 0x139e 00001351: JUMPI 00001352: PUSH1 0x40 00001354: DUP1 00001355: MLOAD 00001356: PUSH3 0x461bcd 0000135a: PUSH1 0xe5 0000135c: SHL 0000135d: DUP2 0000135e: MSTORE 0000135f: PUSH1 0x20 00001361: PUSH1 0x04 00001363: DUP3 00001364: ADD 00001365: DUP2 00001366: SWAP1 00001367: MSTORE 00001368: PUSH1 0x24 0000136a: DUP3 0000136b: ADD 0000136c: MSTORE 0000136d: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0000138e: PUSH1 0x44 00001390: DUP3 00001391: ADD 00001392: MSTORE 00001393: SWAP1 00001394: MLOAD 00001395: SWAP1 00001396: DUP2 00001397: SWAP1 00001398: SUB 00001399: PUSH1 0x64 0000139b: ADD 0000139c: SWAP1 0000139d: REVERT 0000139e: JUMPDEST 0000139f: PUSH1 0x9e 000013a1: DUP1 000013a2: SLOAD 000013a3: PUSH1 0x01 000013a5: PUSH1 0x01 000013a7: PUSH1 0xa0 000013a9: SHL 000013aa: SUB 000013ab: NOT 000013ac: AND 000013ad: PUSH1 0x01 000013af: PUSH1 0x01 000013b1: PUSH1 0xa0 000013b3: SHL 000013b4: SUB 000013b5: SWAP3 000013b6: SWAP1 000013b7: SWAP3 000013b8: AND 000013b9: SWAP2 000013ba: SWAP1 000013bb: SWAP2 000013bc: OR 000013bd: SWAP1 000013be: SSTORE 000013bf: JUMP 000013c0: JUMPDEST 000013c1: PUSH1 0x65 000013c3: SLOAD 000013c4: PUSH1 0x01 000013c6: PUSH1 0x01 000013c8: PUSH1 0xa0 000013ca: SHL 000013cb: SUB 000013cc: AND 000013cd: SWAP1 000013ce: JUMP 000013cf: JUMPDEST 000013d0: PUSH1 0xd5 000013d2: SLOAD 000013d3: DUP2 000013d4: JUMP 000013d5: JUMPDEST 000013d6: PUSH1 0x01 000013d8: PUSH1 0x01 000013da: PUSH1 0xa0 000013dc: SHL 000013dd: SUB 000013de: DUP2 000013df: AND 000013e0: PUSH1 0x00 000013e2: SWAP1 000013e3: DUP2 000013e4: MSTORE 000013e5: PUSH1 0x9b 000013e7: PUSH1 0x20 000013e9: SWAP1 000013ea: DUP2 000013eb: MSTORE 000013ec: PUSH1 0x40 000013ee: DUP1 000013ef: DUP4 000013f0: KECCAK256 000013f1: PUSH1 0x9d 000013f3: DUP4 000013f4: MSTORE 000013f5: DUP2 000013f6: DUP5 000013f7: KECCAK256 000013f8: CALLER 000013f9: DUP6 000013fa: MSTORE 000013fb: SWAP1 000013fc: SWAP3 000013fd: MSTORE 000013fe: DUP3 000013ff: KECCAK256 00001400: PUSH1 0x04 00001402: DUP2 00001403: ADD 00001404: SLOAD 00001405: PUSH1 0x03 00001407: DUP4 00001408: ADD 00001409: SLOAD 0000140a: PUSH1 0x01 0000140c: DUP4 0000140d: ADD 0000140e: SLOAD 0000140f: PUSH2 0x1431 00001412: SWAP3 00001413: SWAP2 00001414: PUSH2 0x142b 00001417: SWAP2 00001418: PUSH8 0x0de0b6b3a7640000 00001421: SWAP2 00001422: PUSH2 0x110a 00001425: SWAP2 00001426: SWAP1 00001427: PUSH2 0x26d8 0000142a: JUMP 0000142b: JUMPDEST 0000142c: SWAP1 0000142d: PUSH2 0x2217 00001430: JUMP 00001431: JUMPDEST 00001432: SWAP5 00001433: SWAP4 00001434: POP 00001435: POP 00001436: POP 00001437: POP 00001438: JUMP 00001439: JUMPDEST 0000143a: PUSH1 0xd8 0000143c: PUSH1 0x20 0000143e: MSTORE 0000143f: PUSH1 0x00 00001441: SWAP1 00001442: DUP2 00001443: MSTORE 00001444: PUSH1 0x40 00001446: SWAP1 00001447: KECCAK256 00001448: DUP1 00001449: SLOAD 0000144a: PUSH1 0x01 0000144c: DUP3 0000144d: ADD 0000144e: SLOAD 0000144f: PUSH1 0x02 00001451: SWAP1 00001452: SWAP3 00001453: ADD 00001454: SLOAD 00001455: SWAP1 00001456: SWAP2 00001457: SWAP1 00001458: DUP4 00001459: JUMP 0000145a: JUMPDEST 0000145b: PUSH1 0x9c 0000145d: DUP2 0000145e: DUP2 0000145f: SLOAD 00001460: DUP2 00001461: LT 00001462: PUSH2 0x1467 00001465: JUMPI 00001466: INVALID 00001467: JUMPDEST 00001468: PUSH1 0x00 0000146a: SWAP2 0000146b: DUP3 0000146c: MSTORE 0000146d: PUSH1 0x20 0000146f: SWAP1 00001470: SWAP2 00001471: KECCAK256 00001472: ADD 00001473: SLOAD 00001474: PUSH1 0x01 00001476: PUSH1 0x01 00001478: PUSH1 0xa0 0000147a: SHL 0000147b: SUB 0000147c: AND 0000147d: SWAP1 0000147e: POP 0000147f: DUP2 00001480: JUMP 00001481: JUMPDEST 00001482: PUSH1 0x9c 00001484: SLOAD 00001485: PUSH1 0x00 00001487: JUMPDEST 00001488: DUP2 00001489: DUP2 0000148a: LT 0000148b: ISZERO 0000148c: PUSH2 0x0a09 0000148f: JUMPI 00001490: PUSH2 0x14b9 00001493: PUSH1 0x9c 00001495: DUP3 00001496: DUP2 00001497: SLOAD 00001498: DUP2 00001499: LT 0000149a: PUSH2 0x149f 0000149d: JUMPI 0000149e: INVALID 0000149f: JUMPDEST 000014a0: PUSH1 0x00 000014a2: SWAP2 000014a3: DUP3 000014a4: MSTORE 000014a5: PUSH1 0x20 000014a7: SWAP1 000014a8: SWAP2 000014a9: KECCAK256 000014aa: ADD 000014ab: SLOAD 000014ac: PUSH1 0x01 000014ae: PUSH1 0x01 000014b0: PUSH1 0xa0 000014b2: SHL 000014b3: SUB 000014b4: AND 000014b5: PUSH2 0x0f11 000014b8: JUMP 000014b9: JUMPDEST 000014ba: PUSH1 0x01 000014bc: ADD 000014bd: PUSH2 0x1487 000014c0: JUMP 000014c1: JUMPDEST 000014c2: PUSH2 0x14c9 000014c5: PUSH2 0x1d11 000014c8: JUMP 000014c9: JUMPDEST 000014ca: PUSH1 0x65 000014cc: SLOAD 000014cd: PUSH1 0x01 000014cf: PUSH1 0x01 000014d1: PUSH1 0xa0 000014d3: SHL 000014d4: SUB 000014d5: SWAP1 000014d6: DUP2 000014d7: AND 000014d8: SWAP2 000014d9: AND 000014da: EQ 000014db: PUSH2 0x152b 000014de: JUMPI 000014df: PUSH1 0x40 000014e1: DUP1 000014e2: MLOAD 000014e3: PUSH3 0x461bcd 000014e7: PUSH1 0xe5 000014e9: SHL 000014ea: DUP2 000014eb: MSTORE 000014ec: PUSH1 0x20 000014ee: PUSH1 0x04 000014f0: DUP3 000014f1: ADD 000014f2: DUP2 000014f3: SWAP1 000014f4: MSTORE 000014f5: PUSH1 0x24 000014f7: DUP3 000014f8: ADD 000014f9: MSTORE 000014fa: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0000151b: PUSH1 0x44 0000151d: DUP3 0000151e: ADD 0000151f: MSTORE 00001520: SWAP1 00001521: MLOAD 00001522: SWAP1 00001523: DUP2 00001524: SWAP1 00001525: SUB 00001526: PUSH1 0x64 00001528: ADD 00001529: SWAP1 0000152a: REVERT 0000152b: JUMPDEST 0000152c: PUSH1 0x9a 0000152e: DUP1 0000152f: SLOAD 00001530: PUSH1 0xff 00001532: NOT 00001533: AND 00001534: SWAP2 00001535: ISZERO 00001536: ISZERO 00001537: SWAP2 00001538: SWAP1 00001539: SWAP2 0000153a: OR 0000153b: SWAP1 0000153c: SSTORE 0000153d: JUMP 0000153e: JUMPDEST 0000153f: PUSH1 0xd6 00001541: SLOAD 00001542: DUP2 00001543: JUMP 00001544: JUMPDEST 00001545: PUSH1 0x01 00001547: PUSH1 0x01 00001549: PUSH1 0xa0 0000154b: SHL 0000154c: SUB 0000154d: DUP2 0000154e: AND 0000154f: PUSH1 0x00 00001551: SWAP1 00001552: DUP2 00001553: MSTORE 00001554: PUSH1 0x9b 00001556: PUSH1 0x20 00001558: SWAP1 00001559: DUP2 0000155a: MSTORE 0000155b: PUSH1 0x40 0000155d: DUP1 0000155e: DUP4 0000155f: KECCAK256 00001560: PUSH1 0xd8 00001562: DUP4 00001563: MSTORE 00001564: DUP2 00001565: DUP5 00001566: KECCAK256 00001567: PUSH1 0xd9 00001569: DUP5 0000156a: MSTORE 0000156b: DUP3 0000156c: DUP6 0000156d: KECCAK256 0000156e: CALLER 0000156f: DUP7 00001570: MSTORE 00001571: SWAP1 00001572: SWAP4 00001573: MSTORE 00001574: SWAP1 00001575: DUP4 00001576: KECCAK256 00001577: PUSH1 0x01 00001579: DUP4 0000157a: ADD 0000157b: SLOAD 0000157c: PUSH1 0x02 0000157e: DUP5 0000157f: ADD 00001580: SLOAD 00001581: SWAP3 00001582: SWAP4 00001583: SWAP3 00001584: NUMBER 00001585: GT 00001586: DUP1 00001587: ISZERO 00001588: PUSH2 0x1594 0000158b: JUMPI 0000158c: POP 0000158d: PUSH1 0x02 0000158f: DUP5 00001590: ADD 00001591: SLOAD 00001592: ISZERO 00001593: ISZERO 00001594: JUMPDEST 00001595: ISZERO 00001596: PUSH2 0x15d7 00001599: JUMPI 0000159a: PUSH1 0x00 0000159c: PUSH2 0x15a4 0000159f: DUP8 000015a0: PUSH2 0x2654 000015a3: JUMP 000015a4: JUMPDEST 000015a5: SWAP1 000015a6: POP 000015a7: PUSH2 0x15d3 000015aa: PUSH2 0x15cc 000015ad: DUP7 000015ae: PUSH1 0x02 000015b0: ADD 000015b1: SLOAD 000015b2: PUSH2 0x110a 000015b5: PUSH8 0x0de0b6b3a7640000 000015be: DUP6 000015bf: PUSH2 0x26d8 000015c2: SWAP1 000015c3: SWAP2 000015c4: SWAP1 000015c5: PUSH4 0xffffffff 000015ca: AND 000015cb: JUMP 000015cc: JUMPDEST 000015cd: DUP4 000015ce: SWAP1 000015cf: PUSH2 0x1b2c 000015d2: JUMP 000015d3: JUMPDEST 000015d4: SWAP2 000015d5: POP 000015d6: POP 000015d7: JUMPDEST 000015d8: PUSH1 0x01 000015da: DUP1 000015db: DUP4 000015dc: ADD 000015dd: SLOAD 000015de: PUSH1 0x01 000015e0: PUSH1 0x01 000015e2: PUSH1 0xa0 000015e4: SHL 000015e5: SUB 000015e6: DUP9 000015e7: AND 000015e8: PUSH1 0x00 000015ea: SWAP1 000015eb: DUP2 000015ec: MSTORE 000015ed: PUSH1 0x9d 000015ef: PUSH1 0x20 000015f1: SWAP1 000015f2: DUP2 000015f3: MSTORE 000015f4: PUSH1 0x40 000015f6: DUP1 000015f7: DUP4 000015f8: KECCAK256 000015f9: CALLER 000015fa: DUP5 000015fb: MSTORE 000015fc: SWAP1 000015fd: SWAP2 000015fe: MSTORE 000015ff: SWAP1 00001600: KECCAK256 00001601: SWAP1 00001602: SWAP2 00001603: ADD 00001604: SLOAD 00001605: PUSH2 0x1621 00001608: SWAP2 00001609: SWAP1 0000160a: PUSH2 0x142b 0000160d: SWAP1 0000160e: PUSH8 0x0de0b6b3a7640000 00001617: SWAP1 00001618: PUSH2 0x110a 0000161b: SWAP1 0000161c: DUP7 0000161d: PUSH2 0x26d8 00001620: JUMP 00001621: JUMPDEST 00001622: SWAP7 00001623: SWAP6 00001624: POP 00001625: POP 00001626: POP 00001627: POP 00001628: POP 00001629: POP 0000162a: JUMP 0000162b: JUMPDEST 0000162c: PUSH2 0x1633 0000162f: PUSH2 0x1d11 00001632: JUMP 00001633: JUMPDEST 00001634: PUSH1 0x65 00001636: SLOAD 00001637: PUSH1 0x01 00001639: PUSH1 0x01 0000163b: PUSH1 0xa0 0000163d: SHL 0000163e: SUB 0000163f: SWAP1 00001640: DUP2 00001641: AND 00001642: SWAP2 00001643: AND 00001644: EQ 00001645: PUSH2 0x1695 00001648: JUMPI 00001649: PUSH1 0x40 0000164b: DUP1 0000164c: MLOAD 0000164d: PUSH3 0x461bcd 00001651: PUSH1 0xe5 00001653: SHL 00001654: DUP2 00001655: MSTORE 00001656: PUSH1 0x20 00001658: PUSH1 0x04 0000165a: DUP3 0000165b: ADD 0000165c: DUP2 0000165d: SWAP1 0000165e: MSTORE 0000165f: PUSH1 0x24 00001661: DUP3 00001662: ADD 00001663: MSTORE 00001664: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001685: PUSH1 0x44 00001687: DUP3 00001688: ADD 00001689: MSTORE 0000168a: SWAP1 0000168b: MLOAD 0000168c: SWAP1 0000168d: DUP2 0000168e: SWAP1 0000168f: SUB 00001690: PUSH1 0x64 00001692: ADD 00001693: SWAP1 00001694: REVERT 00001695: JUMPDEST 00001696: PUSH2 0x16a7 00001699: DUP3 0000169a: PUSH1 0x01 0000169c: PUSH1 0x01 0000169e: PUSH1 0xa0 000016a0: SHL 000016a1: SUB 000016a2: AND 000016a3: PUSH2 0x27e2 000016a6: JUMP 000016a7: JUMPDEST 000016a8: PUSH2 0x16f8 000016ab: JUMPI 000016ac: PUSH1 0x40 000016ae: DUP1 000016af: MLOAD 000016b0: PUSH3 0x461bcd 000016b4: PUSH1 0xe5 000016b6: SHL 000016b7: DUP2 000016b8: MSTORE 000016b9: PUSH1 0x20 000016bb: PUSH1 0x04 000016bd: DUP3 000016be: ADD 000016bf: MSTORE 000016c0: PUSH1 0x0d 000016c2: PUSH1 0x24 000016c4: DUP3 000016c5: ADD 000016c6: MSTORE 000016c7: PUSH32 0x494e56414c49445f544f4b454e00000000000000000000000000000000000000 000016e8: PUSH1 0x44 000016ea: DUP3 000016eb: ADD 000016ec: MSTORE 000016ed: SWAP1 000016ee: MLOAD 000016ef: SWAP1 000016f0: DUP2 000016f1: SWAP1 000016f2: SUB 000016f3: PUSH1 0x64 000016f5: ADD 000016f6: SWAP1 000016f7: REVERT 000016f8: JUMPDEST 000016f9: PUSH1 0x01 000016fb: PUSH1 0x01 000016fd: PUSH1 0xa0 000016ff: SHL 00001700: SUB 00001701: DUP3 00001702: AND 00001703: PUSH1 0x00 00001705: SWAP1 00001706: DUP2 00001707: MSTORE 00001708: PUSH1 0x9b 0000170a: PUSH1 0x20 0000170c: MSTORE 0000170d: PUSH1 0x40 0000170f: SWAP1 00001710: KECCAK256 00001711: SLOAD 00001712: ISZERO 00001713: PUSH2 0x1763 00001716: JUMPI 00001717: PUSH1 0x40 00001719: DUP1 0000171a: MLOAD 0000171b: PUSH3 0x461bcd 0000171f: PUSH1 0xe5 00001721: SHL 00001722: DUP2 00001723: MSTORE 00001724: PUSH1 0x20 00001726: PUSH1 0x04 00001728: DUP3 00001729: ADD 0000172a: MSTORE 0000172b: PUSH1 0x13 0000172d: PUSH1 0x24 0000172f: DUP3 00001730: ADD 00001731: MSTORE 00001732: PUSH32 0x504f4f4c5f414c52454144595f45584953545300000000000000000000000000 00001753: PUSH1 0x44 00001755: DUP3 00001756: ADD 00001757: MSTORE 00001758: SWAP1 00001759: MLOAD 0000175a: SWAP1 0000175b: DUP2 0000175c: SWAP1 0000175d: SUB 0000175e: PUSH1 0x64 00001760: ADD 00001761: SWAP1 00001762: REVERT 00001763: JUMPDEST 00001764: PUSH1 0x00 00001766: DUP2 00001767: GT 00001768: PUSH2 0x17b8 0000176b: JUMPI 0000176c: PUSH1 0x40 0000176e: DUP1 0000176f: MLOAD 00001770: PUSH3 0x461bcd 00001774: PUSH1 0xe5 00001776: SHL 00001777: DUP2 00001778: MSTORE 00001779: PUSH1 0x20 0000177b: PUSH1 0x04 0000177d: DUP3 0000177e: ADD 0000177f: MSTORE 00001780: PUSH1 0x0d 00001782: PUSH1 0x24 00001784: DUP3 00001785: ADD 00001786: MSTORE 00001787: PUSH32 0x494e56414c49445f4c494d495400000000000000000000000000000000000000 000017a8: PUSH1 0x44 000017aa: DUP3 000017ab: ADD 000017ac: MSTORE 000017ad: SWAP1 000017ae: MLOAD 000017af: SWAP1 000017b0: DUP2 000017b1: SWAP1 000017b2: SUB 000017b3: PUSH1 0x64 000017b5: ADD 000017b6: SWAP1 000017b7: REVERT 000017b8: JUMPDEST 000017b9: PUSH1 0x9c 000017bb: DUP1 000017bc: SLOAD 000017bd: PUSH1 0x01 000017bf: DUP2 000017c0: ADD 000017c1: SWAP1 000017c2: SWAP2 000017c3: SSTORE 000017c4: PUSH32 0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c 000017e5: ADD 000017e6: DUP1 000017e7: SLOAD 000017e8: PUSH1 0x01 000017ea: PUSH1 0x01 000017ec: PUSH1 0xa0 000017ee: SHL 000017ef: SUB 000017f0: SWAP1 000017f1: SWAP4 000017f2: AND 000017f3: PUSH1 0x01 000017f5: PUSH1 0x01 000017f7: PUSH1 0xa0 000017f9: SHL 000017fa: SUB 000017fb: NOT 000017fc: SWAP1 000017fd: SWAP4 000017fe: AND 000017ff: DUP4 00001800: OR 00001801: SWAP1 00001802: SSTORE 00001803: PUSH1 0x00 00001805: SWAP2 00001806: DUP3 00001807: MSTORE 00001808: PUSH1 0x9b 0000180a: PUSH1 0x20 0000180c: MSTORE 0000180d: PUSH1 0x40 0000180f: SWAP1 00001810: SWAP2 00001811: KECCAK256 00001812: SSTORE 00001813: JUMP 00001814: JUMPDEST 00001815: PUSH1 0x9e 00001817: SLOAD 00001818: PUSH1 0x01 0000181a: PUSH1 0x01 0000181c: PUSH1 0xa0 0000181e: SHL 0000181f: SUB 00001820: AND 00001821: DUP2 00001822: JUMP 00001823: JUMPDEST 00001824: PUSH1 0xd4 00001826: SLOAD 00001827: DUP2 00001828: JUMP 00001829: JUMPDEST 0000182a: PUSH1 0x9b 0000182c: PUSH1 0x20 0000182e: MSTORE 0000182f: PUSH1 0x00 00001831: SWAP1 00001832: DUP2 00001833: MSTORE 00001834: PUSH1 0x40 00001836: SWAP1 00001837: KECCAK256 00001838: DUP1 00001839: SLOAD 0000183a: PUSH1 0x01 0000183c: DUP3 0000183d: ADD 0000183e: SLOAD 0000183f: PUSH1 0x02 00001841: DUP4 00001842: ADD 00001843: SLOAD 00001844: PUSH1 0x03 00001846: DUP5 00001847: ADD 00001848: SLOAD 00001849: PUSH1 0x04 0000184b: DUP6 0000184c: ADD 0000184d: SLOAD 0000184e: PUSH1 0x05 00001850: DUP7 00001851: ADD 00001852: SLOAD 00001853: PUSH1 0x06 00001855: SWAP1 00001856: SWAP7 00001857: ADD 00001858: SLOAD 00001859: SWAP5 0000185a: SWAP6 0000185b: SWAP4 0000185c: SWAP5 0000185d: SWAP3 0000185e: SWAP4 0000185f: SWAP2 00001860: SWAP3 00001861: SWAP1 00001862: SWAP2 00001863: SWAP1 00001864: PUSH5 0xffffffffff 0000186a: DUP1 0000186b: DUP3 0000186c: AND 0000186d: SWAP2 0000186e: PUSH6 0x010000000000 00001875: DUP2 00001876: DIV 00001877: DUP3 00001878: AND 00001879: SWAP2 0000187a: PUSH11 0x0100000000000000000000 00001886: DUP3 00001887: DIV 00001888: DUP2 00001889: AND 0000188a: SWAP2 0000188b: PUSH16 0x01000000000000000000000000000000 0000189c: SWAP1 0000189d: DIV 0000189e: AND 0000189f: DUP11 000018a0: JUMP 000018a1: JUMPDEST 000018a2: PUSH2 0x18a9 000018a5: PUSH2 0x1d11 000018a8: JUMP 000018a9: JUMPDEST 000018aa: PUSH1 0x65 000018ac: SLOAD 000018ad: PUSH1 0x01 000018af: PUSH1 0x01 000018b1: PUSH1 0xa0 000018b3: SHL 000018b4: SUB 000018b5: SWAP1 000018b6: DUP2 000018b7: AND 000018b8: SWAP2 000018b9: AND 000018ba: EQ 000018bb: PUSH2 0x190b 000018be: JUMPI 000018bf: PUSH1 0x40 000018c1: DUP1 000018c2: MLOAD 000018c3: PUSH3 0x461bcd 000018c7: PUSH1 0xe5 000018c9: SHL 000018ca: DUP2 000018cb: MSTORE 000018cc: PUSH1 0x20 000018ce: PUSH1 0x04 000018d0: DUP3 000018d1: ADD 000018d2: DUP2 000018d3: SWAP1 000018d4: MSTORE 000018d5: PUSH1 0x24 000018d7: DUP3 000018d8: ADD 000018d9: MSTORE 000018da: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 000018fb: PUSH1 0x44 000018fd: DUP3 000018fe: ADD 000018ff: MSTORE 00001900: SWAP1 00001901: MLOAD 00001902: SWAP1 00001903: DUP2 00001904: SWAP1 00001905: SUB 00001906: PUSH1 0x64 00001908: ADD 00001909: SWAP1 0000190a: REVERT 0000190b: JUMPDEST 0000190c: PUSH1 0x01 0000190e: PUSH1 0x01 00001910: PUSH1 0xa0 00001912: SHL 00001913: SUB 00001914: DUP2 00001915: AND 00001916: PUSH2 0x1950 00001919: JUMPI 0000191a: PUSH1 0x40 0000191c: MLOAD 0000191d: PUSH3 0x461bcd 00001921: PUSH1 0xe5 00001923: SHL 00001924: DUP2 00001925: MSTORE 00001926: PUSH1 0x04 00001928: ADD 00001929: DUP1 0000192a: DUP1 0000192b: PUSH1 0x20 0000192d: ADD 0000192e: DUP3 0000192f: DUP2 00001930: SUB 00001931: DUP3 00001932: MSTORE 00001933: PUSH1 0x26 00001935: DUP2 00001936: MSTORE 00001937: PUSH1 0x20 00001939: ADD 0000193a: DUP1 0000193b: PUSH2 0x2df6 0000193e: PUSH1 0x26 00001940: SWAP2 00001941: CODECOPY 00001942: PUSH1 0x40 00001944: ADD 00001945: SWAP2 00001946: POP 00001947: POP 00001948: PUSH1 0x40 0000194a: MLOAD 0000194b: DUP1 0000194c: SWAP2 0000194d: SUB 0000194e: SWAP1 0000194f: REVERT 00001950: JUMPDEST 00001951: PUSH1 0x65 00001953: SLOAD 00001954: PUSH1 0x40 00001956: MLOAD 00001957: PUSH1 0x01 00001959: PUSH1 0x01 0000195b: PUSH1 0xa0 0000195d: SHL 0000195e: SUB 0000195f: DUP1 00001960: DUP5 00001961: AND 00001962: SWAP3 00001963: AND 00001964: SWAP1 00001965: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001986: SWAP1 00001987: PUSH1 0x00 00001989: SWAP1 0000198a: LOG3 0000198b: PUSH1 0x65 0000198d: DUP1 0000198e: SLOAD 0000198f: PUSH1 0x01 00001991: PUSH1 0x01 00001993: PUSH1 0xa0 00001995: SHL 00001996: SUB 00001997: NOT 00001998: AND 00001999: PUSH1 0x01 0000199b: PUSH1 0x01 0000199d: PUSH1 0xa0 0000199f: SHL 000019a0: SUB 000019a1: SWAP3 000019a2: SWAP1 000019a3: SWAP3 000019a4: AND 000019a5: SWAP2 000019a6: SWAP1 000019a7: SWAP2 000019a8: OR 000019a9: SWAP1 000019aa: SSTORE 000019ab: JUMP 000019ac: JUMPDEST 000019ad: PUSH1 0xd7 000019af: SLOAD 000019b0: DUP2 000019b1: JUMP 000019b2: JUMPDEST 000019b3: PUSH1 0x01 000019b5: PUSH1 0x01 000019b7: PUSH1 0xa0 000019b9: SHL 000019ba: SUB 000019bb: DUP1 000019bc: DUP5 000019bd: AND 000019be: PUSH1 0x00 000019c0: SWAP1 000019c1: DUP2 000019c2: MSTORE 000019c3: PUSH1 0x9d 000019c5: PUSH1 0x20 000019c7: SWAP1 000019c8: DUP2 000019c9: MSTORE 000019ca: PUSH1 0x40 000019cc: DUP1 000019cd: DUP4 000019ce: KECCAK256 000019cf: SWAP4 000019d0: DUP7 000019d1: AND 000019d2: DUP4 000019d3: MSTORE 000019d4: SWAP3 000019d5: SWAP1 000019d6: MSTORE 000019d7: SWAP1 000019d8: DUP2 000019d9: KECCAK256 000019da: PUSH1 0x06 000019dc: ADD 000019dd: DUP1 000019de: SLOAD 000019df: DUP3 000019e0: SWAP2 000019e1: DUP3 000019e2: SWAP2 000019e3: DUP3 000019e4: SWAP2 000019e5: DUP3 000019e6: SWAP2 000019e7: DUP3 000019e8: SWAP2 000019e9: SWAP1 000019ea: DUP9 000019eb: SWAP1 000019ec: DUP2 000019ed: LT 000019ee: PUSH2 0x19f3 000019f1: JUMPI 000019f2: INVALID 000019f3: JUMPDEST 000019f4: PUSH1 0x00 000019f6: SWAP2 000019f7: DUP3 000019f8: MSTORE 000019f9: PUSH1 0x20 000019fb: SWAP1 000019fc: SWAP2 000019fd: KECCAK256 000019fe: PUSH1 0x05 00001a00: SWAP1 00001a01: SWAP2 00001a02: MUL 00001a03: ADD 00001a04: DUP1 00001a05: SLOAD 00001a06: PUSH1 0x01 00001a08: DUP3 00001a09: ADD 00001a0a: SLOAD 00001a0b: PUSH1 0x02 00001a0d: DUP4 00001a0e: ADD 00001a0f: SLOAD 00001a10: PUSH1 0x03 00001a12: DUP5 00001a13: ADD 00001a14: SLOAD 00001a15: PUSH1 0x04 00001a17: SWAP1 00001a18: SWAP5 00001a19: ADD 00001a1a: SLOAD 00001a1b: SWAP3 00001a1c: SWAP14 00001a1d: SWAP2 00001a1e: SWAP13 00001a1f: POP 00001a20: SWAP11 00001a21: POP 00001a22: SWAP2 00001a23: SWAP9 00001a24: POP 00001a25: SWAP7 00001a26: POP 00001a27: SWAP5 00001a28: POP 00001a29: POP 00001a2a: POP 00001a2b: POP 00001a2c: POP 00001a2d: JUMP 00001a2e: JUMPDEST 00001a2f: PUSH1 0xd1 00001a31: SLOAD 00001a32: PUSH1 0x01 00001a34: PUSH1 0x01 00001a36: PUSH1 0xa0 00001a38: SHL 00001a39: SUB 00001a3a: AND 00001a3b: DUP2 00001a3c: JUMP 00001a3d: JUMPDEST 00001a3e: PUSH1 0x9c 00001a40: SLOAD 00001a41: SWAP1 00001a42: JUMP 00001a43: JUMPDEST 00001a44: PUSH2 0x1a4b 00001a47: PUSH2 0x1d11 00001a4a: JUMP 00001a4b: JUMPDEST 00001a4c: PUSH1 0x65 00001a4e: SLOAD 00001a4f: PUSH1 0x01 00001a51: PUSH1 0x01 00001a53: PUSH1 0xa0 00001a55: SHL 00001a56: SUB 00001a57: SWAP1 00001a58: DUP2 00001a59: AND 00001a5a: SWAP2 00001a5b: AND 00001a5c: EQ 00001a5d: PUSH2 0x1aad 00001a60: JUMPI 00001a61: PUSH1 0x40 00001a63: DUP1 00001a64: MLOAD 00001a65: PUSH3 0x461bcd 00001a69: PUSH1 0xe5 00001a6b: SHL 00001a6c: DUP2 00001a6d: MSTORE 00001a6e: PUSH1 0x20 00001a70: PUSH1 0x04 00001a72: DUP3 00001a73: ADD 00001a74: DUP2 00001a75: SWAP1 00001a76: MSTORE 00001a77: PUSH1 0x24 00001a79: DUP3 00001a7a: ADD 00001a7b: MSTORE 00001a7c: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001a9d: PUSH1 0x44 00001a9f: DUP3 00001aa0: ADD 00001aa1: MSTORE 00001aa2: SWAP1 00001aa3: MLOAD 00001aa4: SWAP1 00001aa5: DUP2 00001aa6: SWAP1 00001aa7: SUB 00001aa8: PUSH1 0x64 00001aaa: ADD 00001aab: SWAP1 00001aac: REVERT 00001aad: JUMPDEST 00001aae: DUP1 00001aaf: ISZERO 00001ab0: PUSH2 0x1abb 00001ab3: JUMPI 00001ab4: PUSH2 0x1abb 00001ab7: PUSH2 0x1481 00001aba: JUMP 00001abb: JUMPDEST 00001abc: PUSH2 0x1ac5 00001abf: DUP5 00001ac0: DUP4 00001ac1: PUSH2 0x162b 00001ac4: JUMP 00001ac5: JUMPDEST 00001ac6: PUSH1 0x01 00001ac8: PUSH1 0x01 00001aca: PUSH1 0xa0 00001acc: SHL 00001acd: SUB 00001ace: DUP5 00001acf: AND 00001ad0: PUSH1 0x00 00001ad2: DUP2 00001ad3: DUP2 00001ad4: MSTORE 00001ad5: PUSH1 0xd8 00001ad7: PUSH1 0x20 00001ad9: SWAP1 00001ada: DUP2 00001adb: MSTORE 00001adc: PUSH1 0x40 00001ade: SWAP2 00001adf: DUP3 00001ae0: SWAP1 00001ae1: KECCAK256 00001ae2: DUP7 00001ae3: SWAP1 00001ae4: SSTORE 00001ae5: PUSH1 0xd7 00001ae7: DUP1 00001ae8: SLOAD 00001ae9: DUP8 00001aea: ADD 00001aeb: SWAP1 00001aec: SSTORE 00001aed: DUP2 00001aee: MLOAD 00001aef: DUP7 00001af0: DUP2 00001af1: MSTORE 00001af2: TIMESTAMP 00001af3: SWAP2 00001af4: DUP2 00001af5: ADD 00001af6: SWAP2 00001af7: SWAP1 00001af8: SWAP2 00001af9: MSTORE 00001afa: DUP2 00001afb: MLOAD 00001afc: PUSH32 0x09f4ecfc148afa46d7c66093530f34af617875df3897405026a6f13425a67709 00001b1d: SWAP3 00001b1e: SWAP2 00001b1f: DUP2 00001b20: SWAP1 00001b21: SUB 00001b22: SWAP1 00001b23: SWAP2 00001b24: ADD 00001b25: SWAP1 00001b26: LOG2 00001b27: POP 00001b28: POP 00001b29: POP 00001b2a: POP 00001b2b: JUMP 00001b2c: JUMPDEST 00001b2d: PUSH1 0x00 00001b2f: DUP3 00001b30: DUP3 00001b31: ADD 00001b32: DUP4 00001b33: DUP2 00001b34: LT 00001b35: ISZERO 00001b36: PUSH2 0x1b86 00001b39: JUMPI 00001b3a: PUSH1 0x40 00001b3c: DUP1 00001b3d: MLOAD 00001b3e: PUSH3 0x461bcd 00001b42: PUSH1 0xe5 00001b44: SHL 00001b45: DUP2 00001b46: MSTORE 00001b47: PUSH1 0x20 00001b49: PUSH1 0x04 00001b4b: DUP3 00001b4c: ADD 00001b4d: MSTORE 00001b4e: PUSH1 0x1b 00001b50: PUSH1 0x24 00001b52: DUP3 00001b53: ADD 00001b54: MSTORE 00001b55: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00001b76: PUSH1 0x44 00001b78: DUP3 00001b79: ADD 00001b7a: MSTORE 00001b7b: SWAP1 00001b7c: MLOAD 00001b7d: SWAP1 00001b7e: DUP2 00001b7f: SWAP1 00001b80: SUB 00001b81: PUSH1 0x64 00001b83: ADD 00001b84: SWAP1 00001b85: REVERT 00001b86: JUMPDEST 00001b87: SWAP1 00001b88: POP 00001b89: JUMPDEST 00001b8a: SWAP3 00001b8b: SWAP2 00001b8c: POP 00001b8d: POP 00001b8e: JUMP 00001b8f: JUMPDEST 00001b90: PUSH1 0x01 00001b92: PUSH1 0x01 00001b94: PUSH1 0xa0 00001b96: SHL 00001b97: SUB 00001b98: DUP1 00001b99: DUP4 00001b9a: AND 00001b9b: PUSH1 0x00 00001b9d: DUP2 00001b9e: DUP2 00001b9f: MSTORE 00001ba0: PUSH1 0x9d 00001ba2: PUSH1 0x20 00001ba4: SWAP1 00001ba5: DUP2 00001ba6: MSTORE 00001ba7: PUSH1 0x40 00001ba9: DUP1 00001baa: DUP4 00001bab: KECCAK256 00001bac: SWAP5 00001bad: DUP7 00001bae: AND 00001baf: DUP4 00001bb0: MSTORE 00001bb1: SWAP4 00001bb2: DUP2 00001bb3: MSTORE 00001bb4: DUP4 00001bb5: DUP3 00001bb6: KECCAK256 00001bb7: PUSH1 0x01 00001bb9: ADD 00001bba: SLOAD 00001bbb: SWAP3 00001bbc: DUP3 00001bbd: MSTORE 00001bbe: PUSH1 0x9b 00001bc0: SWAP1 00001bc1: MSTORE 00001bc2: SWAP2 00001bc3: SWAP1 00001bc4: SWAP2 00001bc5: KECCAK256 00001bc6: PUSH1 0x03 00001bc8: ADD 00001bc9: SLOAD 00001bca: PUSH2 0x1be0 00001bcd: SWAP2 00001bce: PUSH8 0x0de0b6b3a7640000 00001bd7: SWAP2 00001bd8: PUSH2 0x110a 00001bdb: SWAP2 00001bdc: PUSH2 0x26d8 00001bdf: JUMP 00001be0: JUMPDEST 00001be1: PUSH1 0x01 00001be3: PUSH1 0x01 00001be5: PUSH1 0xa0 00001be7: SHL 00001be8: SUB 00001be9: SWAP3 00001bea: DUP4 00001beb: AND 00001bec: PUSH1 0x00 00001bee: SWAP1 00001bef: DUP2 00001bf0: MSTORE 00001bf1: PUSH1 0x9d 00001bf3: PUSH1 0x20 00001bf5: SWAP1 00001bf6: DUP2 00001bf7: MSTORE 00001bf8: PUSH1 0x40 00001bfa: DUP1 00001bfb: DUP4 00001bfc: KECCAK256 00001bfd: SWAP5 00001bfe: SWAP1 00001bff: SWAP6 00001c00: AND 00001c01: DUP3 00001c02: MSTORE 00001c03: SWAP3 00001c04: SWAP1 00001c05: SWAP3 00001c06: MSTORE 00001c07: SWAP2 00001c08: SWAP1 00001c09: KECCAK256 00001c0a: PUSH1 0x04 00001c0c: ADD 00001c0d: SSTORE 00001c0e: JUMP 00001c0f: JUMPDEST 00001c10: PUSH1 0x40 00001c12: DUP1 00001c13: MLOAD 00001c14: PUSH1 0x01 00001c16: PUSH1 0x01 00001c18: PUSH1 0xa0 00001c1a: SHL 00001c1b: SUB 00001c1c: DUP5 00001c1d: AND 00001c1e: PUSH1 0x24 00001c20: DUP3 00001c21: ADD 00001c22: MSTORE 00001c23: PUSH1 0x44 00001c25: DUP1 00001c26: DUP3 00001c27: ADD 00001c28: DUP5 00001c29: SWAP1 00001c2a: MSTORE 00001c2b: DUP3 00001c2c: MLOAD 00001c2d: DUP1 00001c2e: DUP4 00001c2f: SUB 00001c30: SWAP1 00001c31: SWAP2 00001c32: ADD 00001c33: DUP2 00001c34: MSTORE 00001c35: PUSH1 0x64 00001c37: SWAP1 00001c38: SWAP2 00001c39: ADD 00001c3a: SWAP1 00001c3b: SWAP2 00001c3c: MSTORE 00001c3d: PUSH1 0x20 00001c3f: DUP2 00001c40: ADD 00001c41: DUP1 00001c42: MLOAD 00001c43: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001c60: AND 00001c61: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001c82: OR 00001c83: SWAP1 00001c84: MSTORE 00001c85: PUSH2 0x0da3 00001c88: SWAP1 00001c89: DUP5 00001c8a: SWAP1 00001c8b: PUSH2 0x281b 00001c8e: JUMP 00001c8f: JUMPDEST 00001c90: PUSH1 0x01 00001c92: PUSH1 0x01 00001c94: PUSH1 0xa0 00001c96: SHL 00001c97: SUB 00001c98: DUP1 00001c99: DUP4 00001c9a: AND 00001c9b: PUSH1 0x00 00001c9d: DUP2 00001c9e: DUP2 00001c9f: MSTORE 00001ca0: PUSH1 0x9d 00001ca2: PUSH1 0x20 00001ca4: SWAP1 00001ca5: DUP2 00001ca6: MSTORE 00001ca7: PUSH1 0x40 00001ca9: DUP1 00001caa: DUP4 00001cab: KECCAK256 00001cac: SWAP5 00001cad: DUP7 00001cae: AND 00001caf: DUP4 00001cb0: MSTORE 00001cb1: SWAP4 00001cb2: DUP2 00001cb3: MSTORE 00001cb4: DUP4 00001cb5: DUP3 00001cb6: KECCAK256 00001cb7: PUSH1 0x01 00001cb9: SWAP1 00001cba: DUP2 00001cbb: ADD 00001cbc: SLOAD 00001cbd: SWAP4 00001cbe: DUP4 00001cbf: MSTORE 00001cc0: PUSH1 0xd8 00001cc2: SWAP1 00001cc3: SWAP2 00001cc4: MSTORE 00001cc5: SWAP3 00001cc6: SWAP1 00001cc7: KECCAK256 00001cc8: SWAP1 00001cc9: SWAP2 00001cca: ADD 00001ccb: SLOAD 00001ccc: PUSH2 0x1ce2 00001ccf: SWAP2 00001cd0: PUSH8 0x0de0b6b3a7640000 00001cd9: SWAP2 00001cda: PUSH2 0x110a 00001cdd: SWAP2 00001cde: PUSH2 0x26d8 00001ce1: JUMP 00001ce2: JUMPDEST 00001ce3: PUSH1 0x01 00001ce5: PUSH1 0x01 00001ce7: PUSH1 0xa0 00001ce9: SHL 00001cea: SUB 00001ceb: SWAP3 00001cec: DUP4 00001ced: AND 00001cee: PUSH1 0x00 00001cf0: SWAP1 00001cf1: DUP2 00001cf2: MSTORE 00001cf3: PUSH1 0xd9 00001cf5: PUSH1 0x20 00001cf7: SWAP1 00001cf8: DUP2 00001cf9: MSTORE 00001cfa: PUSH1 0x40 00001cfc: DUP1 00001cfd: DUP4 00001cfe: KECCAK256 00001cff: SWAP5 00001d00: SWAP1 00001d01: SWAP6 00001d02: AND 00001d03: DUP3 00001d04: MSTORE 00001d05: SWAP3 00001d06: SWAP1 00001d07: SWAP3 00001d08: MSTORE 00001d09: SWAP2 00001d0a: SWAP1 00001d0b: KECCAK256 00001d0c: PUSH1 0x01 00001d0e: ADD 00001d0f: SSTORE 00001d10: JUMP 00001d11: JUMPDEST 00001d12: CALLER 00001d13: SWAP1 00001d14: JUMP 00001d15: JUMPDEST 00001d16: ADDRESS 00001d17: EXTCODESIZE 00001d18: ISZERO 00001d19: SWAP1 00001d1a: JUMP 00001d1b: JUMPDEST 00001d1c: PUSH1 0x01 00001d1e: PUSH1 0x01 00001d20: PUSH1 0xa0 00001d22: SHL 00001d23: SUB 00001d24: DUP4 00001d25: AND 00001d26: PUSH1 0x00 00001d28: SWAP1 00001d29: DUP2 00001d2a: MSTORE 00001d2b: PUSH1 0x9b 00001d2d: PUSH1 0x20 00001d2f: MSTORE 00001d30: PUSH1 0x40 00001d32: SWAP1 00001d33: KECCAK256 00001d34: SLOAD 00001d35: DUP4 00001d36: SWAP1 00001d37: PUSH2 0x1d78 00001d3a: JUMPI 00001d3b: PUSH1 0x40 00001d3d: DUP1 00001d3e: MLOAD 00001d3f: PUSH3 0x461bcd 00001d43: PUSH1 0xe5 00001d45: SHL 00001d46: DUP2 00001d47: MSTORE 00001d48: PUSH1 0x20 00001d4a: PUSH1 0x04 00001d4c: DUP3 00001d4d: ADD 00001d4e: MSTORE 00001d4f: PUSH1 0x0e 00001d51: PUSH1 0x24 00001d53: DUP3 00001d54: ADD 00001d55: MSTORE 00001d56: PUSH14 0x1413d3d317d393d517d193d55391 00001d65: PUSH1 0x92 00001d67: SHL 00001d68: PUSH1 0x44 00001d6a: DUP3 00001d6b: ADD 00001d6c: MSTORE 00001d6d: SWAP1 00001d6e: MLOAD 00001d6f: SWAP1 00001d70: DUP2 00001d71: SWAP1 00001d72: SUB 00001d73: PUSH1 0x64 00001d75: ADD 00001d76: SWAP1 00001d77: REVERT 00001d78: JUMPDEST 00001d79: PUSH1 0x9a 00001d7b: SLOAD 00001d7c: PUSH1 0xff 00001d7e: AND 00001d7f: ISZERO 00001d80: PUSH2 0x1dd0 00001d83: JUMPI 00001d84: PUSH1 0x40 00001d86: DUP1 00001d87: MLOAD 00001d88: PUSH3 0x461bcd 00001d8c: PUSH1 0xe5 00001d8e: SHL 00001d8f: DUP2 00001d90: MSTORE 00001d91: PUSH1 0x20 00001d93: PUSH1 0x04 00001d95: DUP3 00001d96: ADD 00001d97: MSTORE 00001d98: PUSH1 0x18 00001d9a: PUSH1 0x24 00001d9c: DUP3 00001d9d: ADD 00001d9e: MSTORE 00001d9f: PUSH32 0x4e4f545f414c4c4f5745445f494e5f454d455247454e43590000000000000000 00001dc0: PUSH1 0x44 00001dc2: DUP3 00001dc3: ADD 00001dc4: MSTORE 00001dc5: SWAP1 00001dc6: MLOAD 00001dc7: SWAP1 00001dc8: DUP2 00001dc9: SWAP1 00001dca: SUB 00001dcb: PUSH1 0x64 00001dcd: ADD 00001dce: SWAP1 00001dcf: REVERT 00001dd0: JUMPDEST 00001dd1: PUSH1 0x01 00001dd3: PUSH1 0x01 00001dd5: PUSH1 0xa0 00001dd7: SHL 00001dd8: SUB 00001dd9: DUP5 00001dda: AND 00001ddb: PUSH1 0x00 00001ddd: SWAP1 00001dde: DUP2 00001ddf: MSTORE 00001de0: PUSH1 0x9d 00001de2: PUSH1 0x20 00001de4: SWAP1 00001de5: DUP2 00001de6: MSTORE 00001de7: PUSH1 0x40 00001de9: DUP1 00001dea: DUP4 00001deb: KECCAK256 00001dec: CALLER 00001ded: DUP5 00001dee: MSTORE 00001def: SWAP1 00001df0: SWAP2 00001df1: MSTORE 00001df2: DUP2 00001df3: KECCAK256 00001df4: PUSH1 0x06 00001df6: DUP2 00001df7: ADD 00001df8: DUP1 00001df9: SLOAD 00001dfa: SWAP2 00001dfb: SWAP3 00001dfc: SWAP2 00001dfd: DUP7 00001dfe: SWAP1 00001dff: DUP2 00001e00: LT 00001e01: PUSH2 0x1e06 00001e04: JUMPI 00001e05: INVALID 00001e06: JUMPDEST 00001e07: SWAP1 00001e08: PUSH1 0x00 00001e0a: MSTORE 00001e0b: PUSH1 0x20 00001e0d: PUSH1 0x00 00001e0f: KECCAK256 00001e10: SWAP1 00001e11: PUSH1 0x05 00001e13: MUL 00001e14: ADD 00001e15: SWAP1 00001e16: POP 00001e17: DUP1 00001e18: PUSH1 0x04 00001e1a: ADD 00001e1b: SLOAD 00001e1c: PUSH1 0x00 00001e1e: EQ 00001e1f: PUSH2 0x1e6f 00001e22: JUMPI 00001e23: PUSH1 0x40 00001e25: DUP1 00001e26: MLOAD 00001e27: PUSH3 0x461bcd 00001e2b: PUSH1 0xe5 00001e2d: SHL 00001e2e: DUP2 00001e2f: MSTORE 00001e30: PUSH1 0x20 00001e32: PUSH1 0x04 00001e34: DUP3 00001e35: ADD 00001e36: MSTORE 00001e37: PUSH1 0x0e 00001e39: PUSH1 0x24 00001e3b: DUP3 00001e3c: ADD 00001e3d: MSTORE 00001e3e: PUSH32 0x414c52454144595f455849544544000000000000000000000000000000000000 00001e5f: PUSH1 0x44 00001e61: DUP3 00001e62: ADD 00001e63: MSTORE 00001e64: SWAP1 00001e65: MLOAD 00001e66: SWAP1 00001e67: DUP2 00001e68: SWAP1 00001e69: SUB 00001e6a: PUSH1 0x64 00001e6c: ADD 00001e6d: SWAP1 00001e6e: REVERT 00001e6f: JUMPDEST 00001e70: DUP4 00001e71: DUP1 00001e72: PUSH2 0x1e7f 00001e75: JUMPI 00001e76: POP 00001e77: DUP1 00001e78: PUSH1 0x01 00001e7a: ADD 00001e7b: SLOAD 00001e7c: TIMESTAMP 00001e7d: LT 00001e7e: ISZERO 00001e7f: JUMPDEST 00001e80: PUSH2 0x1ed0 00001e83: JUMPI 00001e84: PUSH1 0x40 00001e86: DUP1 00001e87: MLOAD 00001e88: PUSH3 0x461bcd 00001e8c: PUSH1 0xe5 00001e8e: SHL 00001e8f: DUP2 00001e90: MSTORE 00001e91: PUSH1 0x20 00001e93: PUSH1 0x04 00001e95: DUP3 00001e96: ADD 00001e97: MSTORE 00001e98: PUSH1 0x0e 00001e9a: PUSH1 0x24 00001e9c: DUP3 00001e9d: ADD 00001e9e: MSTORE 00001e9f: PUSH32 0x4d5553545f42455f464f52434544000000000000000000000000000000000000 00001ec0: PUSH1 0x44 00001ec2: DUP3 00001ec3: ADD 00001ec4: MSTORE 00001ec5: SWAP1 00001ec6: MLOAD 00001ec7: SWAP1 00001ec8: DUP2 00001ec9: SWAP1 00001eca: SUB 00001ecb: PUSH1 0x64 00001ecd: ADD 00001ece: SWAP1 00001ecf: REVERT 00001ed0: JUMPDEST 00001ed1: PUSH2 0x1ed9 00001ed4: DUP7 00001ed5: PUSH2 0x089d 00001ed8: JUMP 00001ed9: JUMPDEST 00001eda: PUSH1 0x00 00001edc: DUP1 00001edd: DUP6 00001ede: DUP1 00001edf: ISZERO 00001ee0: PUSH2 0x1eec 00001ee3: JUMPI 00001ee4: POP 00001ee5: DUP3 00001ee6: PUSH1 0x01 00001ee8: ADD 00001ee9: SLOAD 00001eea: TIMESTAMP 00001eeb: LT 00001eec: JUMPDEST 00001eed: ISZERO 00001eee: PUSH2 0x1f36 00001ef1: JUMPI 00001ef2: PUSH2 0x1f0f 00001ef5: PUSH1 0x64 00001ef7: PUSH2 0x110a 00001efa: PUSH1 0x97 00001efc: SLOAD 00001efd: DUP7 00001efe: PUSH1 0x02 00001f00: ADD 00001f01: SLOAD 00001f02: PUSH2 0x26d8 00001f05: SWAP1 00001f06: SWAP2 00001f07: SWAP1 00001f08: PUSH4 0xffffffff 00001f0d: AND 00001f0e: JUMP 00001f0f: JUMPDEST 00001f10: SWAP2 00001f11: POP 00001f12: PUSH2 0x1f2f 00001f15: PUSH1 0x64 00001f17: PUSH2 0x110a 00001f1a: PUSH1 0x98 00001f1c: SLOAD 00001f1d: DUP7 00001f1e: PUSH1 0x02 00001f20: ADD 00001f21: SLOAD 00001f22: PUSH2 0x26d8 00001f25: SWAP1 00001f26: SWAP2 00001f27: SWAP1 00001f28: PUSH4 0xffffffff 00001f2d: AND 00001f2e: JUMP 00001f2f: JUMPDEST 00001f30: SWAP1 00001f31: POP 00001f32: PUSH2 0x1f89 00001f35: JUMP 00001f36: JUMPDEST 00001f37: DUP6 00001f38: ISZERO 00001f39: PUSH2 0x1f89 00001f3c: JUMPI 00001f3d: PUSH1 0x40 00001f3f: DUP1 00001f40: MLOAD 00001f41: PUSH3 0x461bcd 00001f45: PUSH1 0xe5 00001f47: SHL 00001f48: DUP2 00001f49: MSTORE 00001f4a: PUSH1 0x20 00001f4c: PUSH1 0x04 00001f4e: DUP3 00001f4f: ADD 00001f50: MSTORE 00001f51: PUSH1 0x12 00001f53: PUSH1 0x24 00001f55: DUP3 00001f56: ADD 00001f57: MSTORE 00001f58: PUSH32 0x4d5553545f4e4f545f42455f464f524345440000000000000000000000000000 00001f79: PUSH1 0x44 00001f7b: DUP3 00001f7c: ADD 00001f7d: MSTORE 00001f7e: SWAP1 00001f7f: MLOAD 00001f80: SWAP1 00001f81: DUP2 00001f82: SWAP1 00001f83: SUB 00001f84: PUSH1 0x64 00001f86: ADD 00001f87: SWAP1 00001f88: REVERT 00001f89: JUMPDEST 00001f8a: PUSH1 0x00 00001f8c: PUSH2 0x1fa6 00001f8f: DUP3 00001f90: PUSH2 0x142b 00001f93: DUP6 00001f94: DUP8 00001f95: PUSH1 0x02 00001f97: ADD 00001f98: SLOAD 00001f99: PUSH2 0x2217 00001f9c: SWAP1 00001f9d: SWAP2 00001f9e: SWAP1 00001f9f: PUSH4 0xffffffff 00001fa4: AND 00001fa5: JUMP 00001fa6: JUMPDEST 00001fa7: TIMESTAMP 00001fa8: PUSH1 0x04 00001faa: DUP7 00001fab: ADD 00001fac: SSTORE 00001fad: PUSH1 0x01 00001faf: PUSH1 0x01 00001fb1: PUSH1 0xa0 00001fb3: SHL 00001fb4: SUB 00001fb5: DUP11 00001fb6: AND 00001fb7: PUSH1 0x00 00001fb9: SWAP1 00001fba: DUP2 00001fbb: MSTORE 00001fbc: PUSH1 0x9b 00001fbe: PUSH1 0x20 00001fc0: MSTORE 00001fc1: PUSH1 0x40 00001fc3: SWAP1 00001fc4: KECCAK256 00001fc5: PUSH1 0x02 00001fc7: DUP7 00001fc8: ADD 00001fc9: SLOAD 00001fca: PUSH1 0x01 00001fcc: DUP3 00001fcd: ADD 00001fce: SLOAD 00001fcf: SWAP3 00001fd0: SWAP4 00001fd1: POP 00001fd2: SWAP1 00001fd3: SWAP2 00001fd4: PUSH2 0x1fdc 00001fd7: SWAP2 00001fd8: PUSH2 0x2217 00001fdb: JUMP 00001fdc: JUMPDEST 00001fdd: PUSH1 0x01 00001fdf: DUP3 00001fe0: ADD 00001fe1: SSTORE 00001fe2: PUSH1 0x03 00001fe4: DUP6 00001fe5: ADD 00001fe6: SLOAD 00001fe7: PUSH1 0x02 00001fe9: DUP3 00001fea: ADD 00001feb: SLOAD 00001fec: PUSH2 0x1ff4 00001fef: SWAP2 00001ff0: PUSH2 0x2217 00001ff3: JUMP 00001ff4: JUMPDEST 00001ff5: PUSH1 0x02 00001ff7: DUP3 00001ff8: ADD 00001ff9: SSTORE 00001ffa: PUSH1 0x04 00001ffc: DUP2 00001ffd: ADD 00001ffe: SLOAD 00001fff: PUSH2 0x2008 00002002: SWAP1 00002003: DUP6 00002004: PUSH2 0x1b2c 00002007: JUMP 00002008: JUMPDEST 00002009: PUSH1 0x04 0000200b: DUP3 0000200c: ADD 0000200d: SSTORE 0000200e: PUSH1 0x06 00002010: DUP2 00002011: ADD 00002012: DUP1 00002013: SLOAD 00002014: PUSH1 0x00 00002016: NOT 00002017: PUSH5 0xffffffffff 0000201d: PUSH6 0x010000000000 00002024: DUP1 00002025: DUP5 00002026: DIV 00002027: DUP3 00002028: AND 00002029: SWAP3 0000202a: SWAP1 0000202b: SWAP3 0000202c: ADD 0000202d: AND 0000202e: MUL 0000202f: PUSH10 0xffffffffff0000000000 0000203a: NOT 0000203b: SWAP1 0000203c: SWAP2 0000203d: AND 0000203e: OR 0000203f: SWAP1 00002040: SSTORE 00002041: DUP4 00002042: ISZERO 00002043: PUSH2 0x209c 00002046: JUMPI 00002047: PUSH1 0x06 00002049: DUP2 0000204a: ADD 0000204b: DUP1 0000204c: SLOAD 0000204d: PUSH1 0x01 0000204f: PUSH5 0xffffffffff 00002055: PUSH16 0x01000000000000000000000000000000 00002066: DUP1 00002067: DUP5 00002068: DIV 00002069: DUP3 0000206a: AND 0000206b: SWAP3 0000206c: SWAP1 0000206d: SWAP3 0000206e: ADD 0000206f: AND 00002070: MUL 00002071: PUSH32 0xffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff 00002092: SWAP1 00002093: SWAP2 00002094: AND 00002095: OR 00002096: SWAP1 00002097: SSTORE 00002098: PUSH2 0x20e9 0000209b: JUMP 0000209c: JUMPDEST 0000209d: PUSH1 0x06 0000209f: DUP2 000020a0: ADD 000020a1: DUP1 000020a2: SLOAD 000020a3: PUSH1 0x01 000020a5: PUSH5 0xffffffffff 000020ab: PUSH11 0x0100000000000000000000 000020b7: DUP1 000020b8: DUP5 000020b9: DIV 000020ba: DUP3 000020bb: AND 000020bc: SWAP3 000020bd: SWAP1 000020be: SWAP3 000020bf: ADD 000020c0: AND 000020c1: MUL 000020c2: PUSH32 0xffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff 000020e3: SWAP1 000020e4: SWAP2 000020e5: AND 000020e6: OR 000020e7: SWAP1 000020e8: SSTORE 000020e9: JUMPDEST 000020ea: PUSH1 0x02 000020ec: DUP6 000020ed: ADD 000020ee: SLOAD 000020ef: DUP7 000020f0: SLOAD 000020f1: PUSH2 0x20f9 000020f4: SWAP2 000020f5: PUSH2 0x2217 000020f8: JUMP 000020f9: JUMPDEST 000020fa: DUP7 000020fb: SSTORE 000020fc: PUSH1 0x03 000020fe: DUP6 000020ff: ADD 00002100: SLOAD 00002101: PUSH1 0x01 00002103: DUP8 00002104: ADD 00002105: SLOAD 00002106: PUSH2 0x210e 00002109: SWAP2 0000210a: PUSH2 0x2217 0000210d: JUMP 0000210e: JUMPDEST 0000210f: PUSH1 0x01 00002111: DUP8 00002112: ADD 00002113: SSTORE 00002114: PUSH2 0x211d 00002117: DUP11 00002118: CALLER 00002119: PUSH2 0x1b8f 0000211c: JUMP 0000211d: JUMPDEST 0000211e: PUSH1 0x00 00002120: DUP5 00002121: GT 00002122: DUP1 00002123: ISZERO 00002124: PUSH2 0x2131 00002127: JUMPI 00002128: POP 00002129: PUSH1 0x00 0000212b: DUP2 0000212c: PUSH1 0x02 0000212e: ADD 0000212f: SLOAD 00002130: GT 00002131: JUMPDEST 00002132: ISZERO 00002133: PUSH2 0x2166 00002136: JUMPI 00002137: PUSH1 0x02 00002139: DUP2 0000213a: ADD 0000213b: SLOAD 0000213c: PUSH2 0x2160 0000213f: SWAP1 00002140: PUSH2 0x2155 00002143: SWAP1 00002144: PUSH2 0x110a 00002147: DUP8 00002148: PUSH8 0x0de0b6b3a7640000 00002151: PUSH2 0x26d8 00002154: JUMP 00002155: JUMPDEST 00002156: PUSH1 0x03 00002158: DUP4 00002159: ADD 0000215a: SLOAD 0000215b: SWAP1 0000215c: PUSH2 0x1b2c 0000215f: JUMP 00002160: JUMPDEST 00002161: PUSH1 0x03 00002163: DUP3 00002164: ADD 00002165: SSTORE 00002166: JUMPDEST 00002167: DUP10 00002168: PUSH2 0x217b 0000216b: PUSH1 0x01 0000216d: PUSH1 0x01 0000216f: PUSH1 0xa0 00002171: SHL 00002172: SUB 00002173: DUP3 00002174: AND 00002175: CALLER 00002176: DUP6 00002177: PUSH2 0x1c0f 0000217a: JUMP 0000217b: JUMPDEST 0000217c: DUP4 0000217d: ISZERO 0000217e: PUSH2 0x219b 00002181: JUMPI 00002182: PUSH1 0x9e 00002184: SLOAD 00002185: PUSH2 0x219b 00002188: SWAP1 00002189: PUSH1 0x01 0000218b: PUSH1 0x01 0000218d: PUSH1 0xa0 0000218f: SHL 00002190: SUB 00002191: DUP4 00002192: DUP2 00002193: AND 00002194: SWAP2 00002195: AND 00002196: DUP7 00002197: PUSH2 0x1c0f 0000219a: JUMP 0000219b: JUMPDEST 0000219c: PUSH1 0x02 0000219e: DUP7 0000219f: ADD 000021a0: SLOAD 000021a1: DUP8 000021a2: SLOAD 000021a3: DUP8 000021a4: SLOAD 000021a5: PUSH1 0x40 000021a7: DUP1 000021a8: MLOAD 000021a9: SWAP4 000021aa: DUP5 000021ab: MSTORE 000021ac: PUSH1 0x20 000021ae: DUP5 000021af: ADD 000021b0: DUP8 000021b1: SWAP1 000021b2: MSTORE 000021b3: DUP4 000021b4: DUP2 000021b5: ADD 000021b6: DUP10 000021b7: SWAP1 000021b8: MSTORE 000021b9: PUSH1 0x60 000021bb: DUP5 000021bc: ADD 000021bd: DUP9 000021be: SWAP1 000021bf: MSTORE 000021c0: PUSH1 0x80 000021c2: DUP5 000021c3: ADD 000021c4: SWAP3 000021c5: SWAP1 000021c6: SWAP3 000021c7: MSTORE 000021c8: PUSH1 0xa0 000021ca: DUP4 000021cb: ADD 000021cc: MSTORE 000021cd: TIMESTAMP 000021ce: PUSH1 0xc0 000021d0: DUP4 000021d1: ADD 000021d2: MSTORE 000021d3: MLOAD 000021d4: CALLER 000021d5: SWAP2 000021d6: PUSH1 0x01 000021d8: PUSH1 0x01 000021da: PUSH1 0xa0 000021dc: SHL 000021dd: SUB 000021de: DUP15 000021df: AND 000021e0: SWAP2 000021e1: PUSH32 0x2307620f84836a4cfc6aaccd2426db79fd0b2a502534c24c1447f6574640cda5 00002202: SWAP2 00002203: DUP2 00002204: SWAP1 00002205: SUB 00002206: PUSH1 0xe0 00002208: ADD 00002209: SWAP1 0000220a: LOG3 0000220b: POP 0000220c: POP 0000220d: POP 0000220e: POP 0000220f: POP 00002210: POP 00002211: POP 00002212: POP 00002213: POP 00002214: POP 00002215: POP 00002216: JUMP 00002217: JUMPDEST 00002218: PUSH1 0x00 0000221a: PUSH2 0x1b86 0000221d: DUP4 0000221e: DUP4 0000221f: PUSH1 0x40 00002221: MLOAD 00002222: DUP1 00002223: PUSH1 0x40 00002225: ADD 00002226: PUSH1 0x40 00002228: MSTORE 00002229: DUP1 0000222a: PUSH1 0x1e 0000222c: DUP2 0000222d: MSTORE 0000222e: PUSH1 0x20 00002230: ADD 00002231: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00002252: DUP2 00002253: MSTORE 00002254: POP 00002255: PUSH2 0x29d9 00002258: JUMP 00002259: JUMPDEST 0000225a: PUSH1 0x01 0000225c: PUSH1 0x01 0000225e: PUSH1 0xa0 00002260: SHL 00002261: SUB 00002262: DUP4 00002263: AND 00002264: PUSH1 0x00 00002266: SWAP1 00002267: DUP2 00002268: MSTORE 00002269: PUSH1 0x9b 0000226b: PUSH1 0x20 0000226d: MSTORE 0000226e: PUSH1 0x40 00002270: SWAP1 00002271: KECCAK256 00002272: SLOAD 00002273: DUP4 00002274: SWAP1 00002275: PUSH2 0x22b6 00002278: JUMPI 00002279: PUSH1 0x40 0000227b: DUP1 0000227c: MLOAD 0000227d: PUSH3 0x461bcd 00002281: PUSH1 0xe5 00002283: SHL 00002284: DUP2 00002285: MSTORE 00002286: PUSH1 0x20 00002288: PUSH1 0x04 0000228a: DUP3 0000228b: ADD 0000228c: MSTORE 0000228d: PUSH1 0x0e 0000228f: PUSH1 0x24 00002291: DUP3 00002292: ADD 00002293: MSTORE 00002294: PUSH14 0x1413d3d317d393d517d193d55391 000022a3: PUSH1 0x92 000022a5: SHL 000022a6: PUSH1 0x44 000022a8: DUP3 000022a9: ADD 000022aa: MSTORE 000022ab: SWAP1 000022ac: MLOAD 000022ad: SWAP1 000022ae: DUP2 000022af: SWAP1 000022b0: SUB 000022b1: PUSH1 0x64 000022b3: ADD 000022b4: SWAP1 000022b5: REVERT 000022b6: JUMPDEST 000022b7: PUSH1 0x9a 000022b9: SLOAD 000022ba: PUSH1 0xff 000022bc: AND 000022bd: ISZERO 000022be: PUSH2 0x230e 000022c1: JUMPI 000022c2: PUSH1 0x40 000022c4: DUP1 000022c5: MLOAD 000022c6: PUSH3 0x461bcd 000022ca: PUSH1 0xe5 000022cc: SHL 000022cd: DUP2 000022ce: MSTORE 000022cf: PUSH1 0x20 000022d1: PUSH1 0x04 000022d3: DUP3 000022d4: ADD 000022d5: MSTORE 000022d6: PUSH1 0x18 000022d8: PUSH1 0x24 000022da: DUP3 000022db: ADD 000022dc: MSTORE 000022dd: PUSH32 0x4e4f545f414c4c4f5745445f494e5f454d455247454e43590000000000000000 000022fe: PUSH1 0x44 00002300: DUP3 00002301: ADD 00002302: MSTORE 00002303: SWAP1 00002304: MLOAD 00002305: SWAP1 00002306: DUP2 00002307: SWAP1 00002308: SUB 00002309: PUSH1 0x64 0000230b: ADD 0000230c: SWAP1 0000230d: REVERT 0000230e: JUMPDEST 0000230f: PUSH1 0x00 00002311: DUP4 00002312: GT 00002313: PUSH2 0x2363 00002316: JUMPI 00002317: PUSH1 0x40 00002319: DUP1 0000231a: MLOAD 0000231b: PUSH3 0x461bcd 0000231f: PUSH1 0xe5 00002321: SHL 00002322: DUP2 00002323: MSTORE 00002324: PUSH1 0x20 00002326: PUSH1 0x04 00002328: DUP3 00002329: ADD 0000232a: MSTORE 0000232b: PUSH1 0x0e 0000232d: PUSH1 0x24 0000232f: DUP3 00002330: ADD 00002331: MSTORE 00002332: PUSH32 0x494e56414c49445f414d4f554e54000000000000000000000000000000000000 00002353: PUSH1 0x44 00002355: DUP3 00002356: ADD 00002357: MSTORE 00002358: SWAP1 00002359: MLOAD 0000235a: SWAP1 0000235b: DUP2 0000235c: SWAP1 0000235d: SUB 0000235e: PUSH1 0x64 00002360: ADD 00002361: SWAP1 00002362: REVERT 00002363: JUMPDEST 00002364: PUSH1 0x03 00002366: DUP3 00002367: LT 00002368: ISZERO 00002369: DUP1 0000236a: ISZERO 0000236b: PUSH2 0x2375 0000236e: JUMPI 0000236f: POP 00002370: PUSH1 0x78 00002372: DUP3 00002373: GT 00002374: ISZERO 00002375: JUMPDEST 00002376: PUSH2 0x23c6 00002379: JUMPI 0000237a: PUSH1 0x40 0000237c: DUP1 0000237d: MLOAD 0000237e: PUSH3 0x461bcd 00002382: PUSH1 0xe5 00002384: SHL 00002385: DUP2 00002386: MSTORE 00002387: PUSH1 0x20 00002389: PUSH1 0x04 0000238b: DUP3 0000238c: ADD 0000238d: MSTORE 0000238e: PUSH1 0x10 00002390: PUSH1 0x24 00002392: DUP3 00002393: ADD 00002394: MSTORE 00002395: PUSH32 0x494e56414c49445f4455524154494f4e00000000000000000000000000000000 000023b6: PUSH1 0x44 000023b8: DUP3 000023b9: ADD 000023ba: MSTORE 000023bb: SWAP1 000023bc: MLOAD 000023bd: SWAP1 000023be: DUP2 000023bf: SWAP1 000023c0: SUB 000023c1: PUSH1 0x64 000023c3: ADD 000023c4: SWAP1 000023c5: REVERT 000023c6: JUMPDEST 000023c7: PUSH1 0x01 000023c9: PUSH1 0x01 000023cb: PUSH1 0xa0 000023cd: SHL 000023ce: SUB 000023cf: DUP5 000023d0: AND 000023d1: PUSH1 0x00 000023d3: DUP2 000023d4: DUP2 000023d5: MSTORE 000023d6: PUSH1 0x9d 000023d8: PUSH1 0x20 000023da: SWAP1 000023db: DUP2 000023dc: MSTORE 000023dd: PUSH1 0x40 000023df: DUP1 000023e0: DUP4 000023e1: KECCAK256 000023e2: CALLER 000023e3: DUP5 000023e4: MSTORE 000023e5: DUP3 000023e6: MSTORE 000023e7: DUP1 000023e8: DUP4 000023e9: KECCAK256 000023ea: SWAP4 000023eb: DUP4 000023ec: MSTORE 000023ed: PUSH1 0x9b 000023ef: SWAP1 000023f0: SWAP2 000023f1: MSTORE 000023f2: SWAP1 000023f3: KECCAK256 000023f4: DUP2 000023f5: SLOAD 000023f6: DUP2 000023f7: SLOAD 000023f8: DUP8 000023f9: SWAP4 000023fa: SWAP3 000023fb: SWAP2 000023fc: DUP8 000023fd: ADD 000023fe: GT 000023ff: ISZERO 00002400: PUSH2 0x2450 00002403: JUMPI 00002404: PUSH1 0x40 00002406: DUP1 00002407: MLOAD 00002408: PUSH3 0x461bcd 0000240c: PUSH1 0xe5 0000240e: SHL 0000240f: DUP2 00002410: MSTORE 00002411: PUSH1 0x20 00002413: PUSH1 0x04 00002415: DUP3 00002416: ADD 00002417: MSTORE 00002418: PUSH1 0x12 0000241a: PUSH1 0x24 0000241c: DUP3 0000241d: ADD 0000241e: MSTORE 0000241f: PUSH32 0x4d41585f4c494d49545f45584345454445440000000000000000000000000000 00002440: PUSH1 0x44 00002442: DUP3 00002443: ADD 00002444: MSTORE 00002445: SWAP1 00002446: MLOAD 00002447: SWAP1 00002448: DUP2 00002449: SWAP1 0000244a: SUB 0000244b: PUSH1 0x64 0000244d: ADD 0000244e: SWAP1 0000244f: REVERT 00002450: JUMPDEST 00002451: PUSH2 0x2465 00002454: PUSH1 0x01 00002456: PUSH1 0x01 00002458: PUSH1 0xa0 0000245a: SHL 0000245b: SUB 0000245c: DUP5 0000245d: AND 0000245e: CALLER 0000245f: ADDRESS 00002460: DUP10 00002461: PUSH2 0x2a70 00002464: JUMP 00002465: JUMPDEST 00002466: PUSH2 0x246e 00002469: DUP8 0000246a: PUSH2 0x089d 0000246d: JUMP 0000246e: JUMPDEST 0000246f: PUSH1 0x00 00002471: PUSH2 0x2483 00002474: PUSH2 0x247c 00002477: DUP8 00002478: PUSH2 0x2af8 0000247b: JUMP 0000247c: JUMPDEST 0000247d: DUP9 0000247e: SWAP1 0000247f: PUSH2 0x26d8 00002482: JUMP 00002483: JUMPDEST 00002484: SWAP1 00002485: POP 00002486: DUP3 00002487: PUSH1 0x06 00002489: ADD 0000248a: PUSH1 0x40 0000248c: MLOAD 0000248d: DUP1 0000248e: PUSH1 0xa0 00002490: ADD 00002491: PUSH1 0x40 00002493: MSTORE 00002494: DUP1 00002495: DUP9 00002496: DUP2 00002497: MSTORE 00002498: PUSH1 0x20 0000249a: ADD 0000249b: PUSH2 0x24b1 0000249e: PUSH1 0x99 000024a0: SLOAD 000024a1: DUP11 000024a2: MUL 000024a3: TIMESTAMP 000024a4: PUSH2 0x1b2c 000024a7: SWAP1 000024a8: SWAP2 000024a9: SWAP1 000024aa: PUSH4 0xffffffff 000024af: AND 000024b0: JUMP 000024b1: JUMPDEST 000024b2: DUP2 000024b3: MSTORE 000024b4: PUSH1 0x20 000024b6: DUP1 000024b7: DUP3 000024b8: ADD 000024b9: DUP12 000024ba: SWAP1 000024bb: MSTORE 000024bc: PUSH1 0x40 000024be: DUP1 000024bf: DUP4 000024c0: ADD 000024c1: DUP7 000024c2: SWAP1 000024c3: MSTORE 000024c4: PUSH1 0x00 000024c6: PUSH1 0x60 000024c8: SWAP4 000024c9: DUP5 000024ca: ADD 000024cb: DUP2 000024cc: SWAP1 000024cd: MSTORE 000024ce: DUP6 000024cf: SLOAD 000024d0: PUSH1 0x01 000024d2: DUP2 000024d3: DUP2 000024d4: ADD 000024d5: DUP9 000024d6: SSTORE 000024d7: SWAP7 000024d8: DUP3 000024d9: MSTORE 000024da: SWAP1 000024db: DUP4 000024dc: SWAP1 000024dd: KECCAK256 000024de: DUP6 000024df: MLOAD 000024e0: PUSH1 0x05 000024e2: SWAP1 000024e3: SWAP3 000024e4: MUL 000024e5: ADD 000024e6: SWAP1 000024e7: DUP2 000024e8: SSTORE 000024e9: SWAP2 000024ea: DUP5 000024eb: ADD 000024ec: MLOAD 000024ed: SWAP5 000024ee: DUP3 000024ef: ADD 000024f0: SWAP5 000024f1: SWAP1 000024f2: SWAP5 000024f3: SSTORE 000024f4: SWAP3 000024f5: DUP3 000024f6: ADD 000024f7: MLOAD 000024f8: PUSH1 0x02 000024fa: DUP5 000024fb: ADD 000024fc: SSTORE 000024fd: DUP2 000024fe: ADD 000024ff: MLOAD 00002500: PUSH1 0x03 00002502: DUP4 00002503: ADD 00002504: SSTORE 00002505: PUSH1 0x80 00002507: ADD 00002508: MLOAD 00002509: PUSH1 0x04 0000250b: SWAP1 0000250c: SWAP2 0000250d: ADD 0000250e: SSTORE 0000250f: DUP3 00002510: SLOAD 00002511: PUSH2 0x251a 00002514: SWAP1 00002515: DUP9 00002516: PUSH2 0x1b2c 00002519: JUMP 0000251a: JUMPDEST 0000251b: DUP4 0000251c: SSTORE 0000251d: PUSH1 0x02 0000251f: DUP4 00002520: ADD 00002521: SLOAD 00002522: PUSH2 0x252b 00002525: SWAP1 00002526: DUP9 00002527: PUSH2 0x1b2c 0000252a: JUMP 0000252b: JUMPDEST 0000252c: PUSH1 0x02 0000252e: DUP5 0000252f: ADD 00002530: SSTORE 00002531: PUSH1 0x01 00002533: DUP4 00002534: ADD 00002535: SLOAD 00002536: PUSH2 0x253f 00002539: SWAP1 0000253a: DUP3 0000253b: PUSH2 0x1b2c 0000253e: JUMP 0000253f: JUMPDEST 00002540: PUSH1 0x01 00002542: DUP1 00002543: DUP6 00002544: ADD 00002545: SWAP2 00002546: SWAP1 00002547: SWAP2 00002548: SSTORE 00002549: PUSH1 0x05 0000254b: DUP5 0000254c: ADD 0000254d: DUP1 0000254e: SLOAD 0000254f: PUSH5 0xffffffffff 00002555: DUP1 00002556: DUP3 00002557: AND 00002558: DUP5 00002559: ADD 0000255a: AND 0000255b: PUSH5 0xffffffffff 00002561: NOT 00002562: SWAP1 00002563: SWAP2 00002564: AND 00002565: OR 00002566: SWAP1 00002567: SSTORE 00002568: DUP3 00002569: ADD 0000256a: SLOAD 0000256b: PUSH2 0x2574 0000256e: SWAP1 0000256f: DUP9 00002570: PUSH2 0x1b2c 00002573: JUMP 00002574: JUMPDEST 00002575: PUSH1 0x01 00002577: DUP4 00002578: ADD 00002579: SSTORE 0000257a: PUSH1 0x05 0000257c: DUP3 0000257d: ADD 0000257e: SLOAD 0000257f: PUSH2 0x2588 00002582: SWAP1 00002583: DUP9 00002584: PUSH2 0x1b2c 00002587: JUMP 00002588: JUMPDEST 00002589: PUSH1 0x05 0000258b: DUP4 0000258c: ADD 0000258d: SSTORE 0000258e: PUSH1 0x06 00002590: DUP3 00002591: ADD 00002592: DUP1 00002593: SLOAD 00002594: PUSH6 0x010000000000 0000259b: PUSH5 0xffffffffff 000025a1: DUP1 000025a2: DUP4 000025a3: AND 000025a4: PUSH1 0x01 000025a6: SWAP1 000025a7: DUP2 000025a8: ADD 000025a9: DUP3 000025aa: AND 000025ab: PUSH5 0xffffffffff 000025b1: NOT 000025b2: SWAP1 000025b3: SWAP5 000025b4: AND 000025b5: SWAP4 000025b6: SWAP1 000025b7: SWAP4 000025b8: OR 000025b9: DUP3 000025ba: DUP2 000025bb: DIV 000025bc: DUP3 000025bd: AND 000025be: SWAP1 000025bf: SWAP4 000025c0: ADD 000025c1: AND 000025c2: MUL 000025c3: PUSH10 0xffffffffff0000000000 000025ce: NOT 000025cf: SWAP1 000025d0: SWAP2 000025d1: AND 000025d2: OR 000025d3: SWAP1 000025d4: SSTORE 000025d5: PUSH1 0x02 000025d7: DUP3 000025d8: ADD 000025d9: SLOAD 000025da: PUSH2 0x25e3 000025dd: SWAP1 000025de: DUP3 000025df: PUSH2 0x1b2c 000025e2: JUMP 000025e3: JUMPDEST 000025e4: PUSH1 0x02 000025e6: DUP4 000025e7: ADD 000025e8: SSTORE 000025e9: PUSH2 0x25f2 000025ec: DUP9 000025ed: CALLER 000025ee: PUSH2 0x1b8f 000025f1: JUMP 000025f2: JUMPDEST 000025f3: PUSH1 0x01 000025f5: DUP3 000025f6: ADD 000025f7: SLOAD 000025f8: PUSH1 0x40 000025fa: DUP1 000025fb: MLOAD 000025fc: DUP10 000025fd: DUP2 000025fe: MSTORE 000025ff: PUSH1 0x20 00002601: DUP2 00002602: ADD 00002603: SWAP3 00002604: SWAP1 00002605: SWAP3 00002606: MSTORE 00002607: DUP2 00002608: DUP2 00002609: ADD 0000260a: DUP9 0000260b: SWAP1 0000260c: MSTORE 0000260d: TIMESTAMP 0000260e: PUSH1 0x60 00002610: DUP4 00002611: ADD 00002612: MSTORE 00002613: MLOAD 00002614: CALLER 00002615: SWAP2 00002616: PUSH1 0x01 00002618: PUSH1 0x01 0000261a: PUSH1 0xa0 0000261c: SHL 0000261d: SUB 0000261e: DUP12 0000261f: AND 00002620: SWAP2 00002621: PUSH32 0xadfc2e4057350132d546d5412da81ae54c03dff8a9abb9ab2385d848b3ab5b35 00002642: SWAP2 00002643: DUP2 00002644: SWAP1 00002645: SUB 00002646: PUSH1 0x80 00002648: ADD 00002649: SWAP1 0000264a: LOG3 0000264b: POP 0000264c: POP 0000264d: POP 0000264e: POP 0000264f: POP 00002650: POP 00002651: POP 00002652: POP 00002653: JUMP 00002654: JUMPDEST 00002655: PUSH1 0x01 00002657: PUSH1 0x01 00002659: PUSH1 0xa0 0000265b: SHL 0000265c: SUB 0000265d: DUP2 0000265e: AND 0000265f: PUSH1 0x00 00002661: SWAP1 00002662: DUP2 00002663: MSTORE 00002664: PUSH1 0xd8 00002666: PUSH1 0x20 00002668: MSTORE 00002669: PUSH1 0x40 0000266b: DUP2 0000266c: KECCAK256 0000266d: PUSH1 0xd7 0000266f: SLOAD 00002670: DUP2 00002671: SLOAD 00002672: PUSH1 0x02 00002674: DUP4 00002675: ADD 00002676: SLOAD 00002677: PUSH2 0x268f 0000267a: SWAP3 0000267b: SWAP2 0000267c: PUSH2 0x110a 0000267f: SWAP2 00002680: PUSH2 0x2689 00002683: SWAP1 00002684: NUMBER 00002685: PUSH2 0x2b1a 00002688: JUMP 00002689: JUMPDEST 0000268a: SWAP1 0000268b: PUSH2 0x26d8 0000268e: JUMP 0000268f: JUMPDEST 00002690: SWAP4 00002691: SWAP3 00002692: POP 00002693: POP 00002694: POP 00002695: JUMP 00002696: JUMPDEST 00002697: PUSH1 0x00 00002699: PUSH2 0x1b86 0000269c: DUP4 0000269d: DUP4 0000269e: PUSH1 0x40 000026a0: MLOAD 000026a1: DUP1 000026a2: PUSH1 0x40 000026a4: ADD 000026a5: PUSH1 0x40 000026a7: MSTORE 000026a8: DUP1 000026a9: PUSH1 0x1a 000026ab: DUP2 000026ac: MSTORE 000026ad: PUSH1 0x20 000026af: ADD 000026b0: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 000026d1: DUP2 000026d2: MSTORE 000026d3: POP 000026d4: PUSH2 0x2bf7 000026d7: JUMP 000026d8: JUMPDEST 000026d9: PUSH1 0x00 000026db: DUP3 000026dc: PUSH2 0x26e7 000026df: JUMPI 000026e0: POP 000026e1: PUSH1 0x00 000026e3: PUSH2 0x1b89 000026e6: JUMP 000026e7: JUMPDEST 000026e8: DUP3 000026e9: DUP3 000026ea: MUL 000026eb: DUP3 000026ec: DUP5 000026ed: DUP3 000026ee: DUP2 000026ef: PUSH2 0x26f4 000026f2: JUMPI 000026f3: INVALID 000026f4: JUMPDEST 000026f5: DIV 000026f6: EQ 000026f7: PUSH2 0x1b86 000026fa: JUMPI 000026fb: PUSH1 0x40 000026fd: MLOAD 000026fe: PUSH3 0x461bcd 00002702: PUSH1 0xe5 00002704: SHL 00002705: DUP2 00002706: MSTORE 00002707: PUSH1 0x04 00002709: ADD 0000270a: DUP1 0000270b: DUP1 0000270c: PUSH1 0x20 0000270e: ADD 0000270f: DUP3 00002710: DUP2 00002711: SUB 00002712: DUP3 00002713: MSTORE 00002714: PUSH1 0x21 00002716: DUP2 00002717: MSTORE 00002718: PUSH1 0x20 0000271a: ADD 0000271b: DUP1 0000271c: PUSH2 0x2e1c 0000271f: PUSH1 0x21 00002721: SWAP2 00002722: CODECOPY 00002723: PUSH1 0x40 00002725: ADD 00002726: SWAP2 00002727: POP 00002728: POP 00002729: PUSH1 0x40 0000272b: MLOAD 0000272c: DUP1 0000272d: SWAP2 0000272e: SUB 0000272f: SWAP1 00002730: REVERT 00002731: JUMPDEST 00002732: PUSH1 0x00 00002734: SLOAD 00002735: PUSH2 0x0100 00002738: SWAP1 00002739: DIV 0000273a: PUSH1 0xff 0000273c: AND 0000273d: DUP1 0000273e: PUSH2 0x274a 00002741: JUMPI 00002742: POP 00002743: PUSH2 0x274a 00002746: PUSH2 0x1d15 00002749: JUMP 0000274a: JUMPDEST 0000274b: DUP1 0000274c: PUSH2 0x2758 0000274f: JUMPI 00002750: POP 00002751: PUSH1 0x00 00002753: SLOAD 00002754: PUSH1 0xff 00002756: AND 00002757: ISZERO 00002758: JUMPDEST 00002759: PUSH2 0x2793 0000275c: JUMPI 0000275d: PUSH1 0x40 0000275f: MLOAD 00002760: PUSH3 0x461bcd 00002764: PUSH1 0xe5 00002766: SHL 00002767: DUP2 00002768: MSTORE 00002769: PUSH1 0x04 0000276b: ADD 0000276c: DUP1 0000276d: DUP1 0000276e: PUSH1 0x20 00002770: ADD 00002771: DUP3 00002772: DUP2 00002773: SUB 00002774: DUP3 00002775: MSTORE 00002776: PUSH1 0x2e 00002778: DUP2 00002779: MSTORE 0000277a: PUSH1 0x20 0000277c: ADD 0000277d: DUP1 0000277e: PUSH2 0x2e3d 00002781: PUSH1 0x2e 00002783: SWAP2 00002784: CODECOPY 00002785: PUSH1 0x40 00002787: ADD 00002788: SWAP2 00002789: POP 0000278a: POP 0000278b: PUSH1 0x40 0000278d: MLOAD 0000278e: DUP1 0000278f: SWAP2 00002790: SUB 00002791: SWAP1 00002792: REVERT 00002793: JUMPDEST 00002794: PUSH1 0x00 00002796: SLOAD 00002797: PUSH2 0x0100 0000279a: SWAP1 0000279b: DIV 0000279c: PUSH1 0xff 0000279e: AND 0000279f: ISZERO 000027a0: DUP1 000027a1: ISZERO 000027a2: PUSH2 0x27be 000027a5: JUMPI 000027a6: PUSH1 0x00 000027a8: DUP1 000027a9: SLOAD 000027aa: PUSH1 0xff 000027ac: NOT 000027ad: PUSH2 0xff00 000027b0: NOT 000027b1: SWAP1 000027b2: SWAP2 000027b3: AND 000027b4: PUSH2 0x0100 000027b7: OR 000027b8: AND 000027b9: PUSH1 0x01 000027bb: OR 000027bc: SWAP1 000027bd: SSTORE 000027be: JUMPDEST 000027bf: PUSH2 0x27c6 000027c2: PUSH2 0x2c5c 000027c5: JUMP 000027c6: JUMPDEST 000027c7: PUSH2 0x27ce 000027ca: PUSH2 0x2cfc 000027cd: JUMP 000027ce: JUMPDEST 000027cf: DUP1 000027d0: ISZERO 000027d1: PUSH2 0x089a 000027d4: JUMPI 000027d5: PUSH1 0x00 000027d7: DUP1 000027d8: SLOAD 000027d9: PUSH2 0xff00 000027dc: NOT 000027dd: AND 000027de: SWAP1 000027df: SSTORE 000027e0: POP 000027e1: JUMP 000027e2: JUMPDEST 000027e3: PUSH1 0x00 000027e5: DUP2 000027e6: EXTCODEHASH 000027e7: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 00002808: DUP2 00002809: DUP2 0000280a: EQ 0000280b: DUP1 0000280c: ISZERO 0000280d: SWAP1 0000280e: PUSH2 0x1431 00002811: JUMPI 00002812: POP 00002813: POP 00002814: ISZERO 00002815: ISZERO 00002816: SWAP3 00002817: SWAP2 00002818: POP 00002819: POP 0000281a: JUMP 0000281b: JUMPDEST 0000281c: PUSH2 0x282d 0000281f: DUP3 00002820: PUSH1 0x01 00002822: PUSH1 0x01 00002824: PUSH1 0xa0 00002826: SHL 00002827: SUB 00002828: AND 00002829: PUSH2 0x27e2 0000282c: JUMP 0000282d: JUMPDEST 0000282e: PUSH2 0x287e 00002831: JUMPI 00002832: PUSH1 0x40 00002834: DUP1 00002835: MLOAD 00002836: PUSH3 0x461bcd 0000283a: PUSH1 0xe5 0000283c: SHL 0000283d: DUP2 0000283e: MSTORE 0000283f: PUSH1 0x20 00002841: PUSH1 0x04 00002843: DUP3 00002844: ADD 00002845: MSTORE 00002846: PUSH1 0x1f 00002848: PUSH1 0x24 0000284a: DUP3 0000284b: ADD 0000284c: MSTORE 0000284d: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400 0000286e: PUSH1 0x44 00002870: DUP3 00002871: ADD 00002872: MSTORE 00002873: SWAP1 00002874: MLOAD 00002875: SWAP1 00002876: DUP2 00002877: SWAP1 00002878: SUB 00002879: PUSH1 0x64 0000287b: ADD 0000287c: SWAP1 0000287d: REVERT 0000287e: JUMPDEST 0000287f: PUSH1 0x00 00002881: PUSH1 0x60 00002883: DUP4 00002884: PUSH1 0x01 00002886: PUSH1 0x01 00002888: PUSH1 0xa0 0000288a: SHL 0000288b: SUB 0000288c: AND 0000288d: DUP4 0000288e: PUSH1 0x40 00002890: MLOAD 00002891: DUP1 00002892: DUP3 00002893: DUP1 00002894: MLOAD 00002895: SWAP1 00002896: PUSH1 0x20 00002898: ADD 00002899: SWAP1 0000289a: DUP1 0000289b: DUP4 0000289c: DUP4 0000289d: JUMPDEST 0000289e: PUSH1 0x20 000028a0: DUP4 000028a1: LT 000028a2: PUSH2 0x28bc 000028a5: JUMPI 000028a6: DUP1 000028a7: MLOAD 000028a8: DUP3 000028a9: MSTORE 000028aa: PUSH1 0x1f 000028ac: NOT 000028ad: SWAP1 000028ae: SWAP3 000028af: ADD 000028b0: SWAP2 000028b1: PUSH1 0x20 000028b3: SWAP2 000028b4: DUP3 000028b5: ADD 000028b6: SWAP2 000028b7: ADD 000028b8: PUSH2 0x289d 000028bb: JUMP 000028bc: JUMPDEST 000028bd: PUSH1 0x01 000028bf: DUP4 000028c0: PUSH1 0x20 000028c2: SUB 000028c3: PUSH2 0x0100 000028c6: EXP 000028c7: SUB 000028c8: DUP1 000028c9: NOT 000028ca: DUP3 000028cb: MLOAD 000028cc: AND 000028cd: DUP2 000028ce: DUP5 000028cf: MLOAD 000028d0: AND 000028d1: DUP1 000028d2: DUP3 000028d3: OR 000028d4: DUP6 000028d5: MSTORE 000028d6: POP 000028d7: POP 000028d8: POP 000028d9: POP 000028da: POP 000028db: POP 000028dc: SWAP1 000028dd: POP 000028de: ADD 000028df: SWAP2 000028e0: POP 000028e1: POP 000028e2: PUSH1 0x00 000028e4: PUSH1 0x40 000028e6: MLOAD 000028e7: DUP1 000028e8: DUP4 000028e9: SUB 000028ea: DUP2 000028eb: PUSH1 0x00 000028ed: DUP7 000028ee: GAS 000028ef: CALL 000028f0: SWAP2 000028f1: POP 000028f2: POP 000028f3: RETURNDATASIZE 000028f4: DUP1 000028f5: PUSH1 0x00 000028f7: DUP2 000028f8: EQ 000028f9: PUSH2 0x291e 000028fc: JUMPI 000028fd: PUSH1 0x40 000028ff: MLOAD 00002900: SWAP2 00002901: POP 00002902: PUSH1 0x1f 00002904: NOT 00002905: PUSH1 0x3f 00002907: RETURNDATASIZE 00002908: ADD 00002909: AND 0000290a: DUP3 0000290b: ADD 0000290c: PUSH1 0x40 0000290e: MSTORE 0000290f: RETURNDATASIZE 00002910: DUP3 00002911: MSTORE 00002912: RETURNDATASIZE 00002913: PUSH1 0x00 00002915: PUSH1 0x20 00002917: DUP5 00002918: ADD 00002919: RETURNDATACOPY 0000291a: PUSH2 0x2923 0000291d: JUMP 0000291e: JUMPDEST 0000291f: PUSH1 0x60 00002921: SWAP2 00002922: POP 00002923: JUMPDEST 00002924: POP 00002925: SWAP2 00002926: POP 00002927: SWAP2 00002928: POP 00002929: DUP2 0000292a: PUSH2 0x297a 0000292d: JUMPI 0000292e: PUSH1 0x40 00002930: DUP1 00002931: MLOAD 00002932: PUSH3 0x461bcd 00002936: PUSH1 0xe5 00002938: SHL 00002939: DUP2 0000293a: MSTORE 0000293b: PUSH1 0x20 0000293d: PUSH1 0x04 0000293f: DUP3 00002940: ADD 00002941: DUP2 00002942: SWAP1 00002943: MSTORE 00002944: PUSH1 0x24 00002946: DUP3 00002947: ADD 00002948: MSTORE 00002949: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 0000296a: PUSH1 0x44 0000296c: DUP3 0000296d: ADD 0000296e: MSTORE 0000296f: SWAP1 00002970: MLOAD 00002971: SWAP1 00002972: DUP2 00002973: SWAP1 00002974: SUB 00002975: PUSH1 0x64 00002977: ADD 00002978: SWAP1 00002979: REVERT 0000297a: JUMPDEST 0000297b: DUP1 0000297c: MLOAD 0000297d: ISZERO 0000297e: PUSH2 0x29d3 00002981: JUMPI 00002982: DUP1 00002983: DUP1 00002984: PUSH1 0x20 00002986: ADD 00002987: SWAP1 00002988: MLOAD 00002989: PUSH1 0x20 0000298b: DUP2 0000298c: LT 0000298d: ISZERO 0000298e: PUSH2 0x2996 00002991: JUMPI 00002992: PUSH1 0x00 00002994: DUP1 00002995: REVERT 00002996: JUMPDEST 00002997: POP 00002998: MLOAD 00002999: PUSH2 0x29d3 0000299c: JUMPI 0000299d: PUSH1 0x40 0000299f: MLOAD 000029a0: PUSH3 0x461bcd 000029a4: PUSH1 0xe5 000029a6: SHL 000029a7: DUP2 000029a8: MSTORE 000029a9: PUSH1 0x04 000029ab: ADD 000029ac: DUP1 000029ad: DUP1 000029ae: PUSH1 0x20 000029b0: ADD 000029b1: DUP3 000029b2: DUP2 000029b3: SUB 000029b4: DUP3 000029b5: MSTORE 000029b6: PUSH1 0x2a 000029b8: DUP2 000029b9: MSTORE 000029ba: PUSH1 0x20 000029bc: ADD 000029bd: DUP1 000029be: PUSH2 0x2e6b 000029c1: PUSH1 0x2a 000029c3: SWAP2 000029c4: CODECOPY 000029c5: PUSH1 0x40 000029c7: ADD 000029c8: SWAP2 000029c9: POP 000029ca: POP 000029cb: PUSH1 0x40 000029cd: MLOAD 000029ce: DUP1 000029cf: SWAP2 000029d0: SUB 000029d1: SWAP1 000029d2: REVERT 000029d3: JUMPDEST 000029d4: POP 000029d5: POP 000029d6: POP 000029d7: POP 000029d8: JUMP 000029d9: JUMPDEST 000029da: PUSH1 0x00 000029dc: DUP2 000029dd: DUP5 000029de: DUP5 000029df: GT 000029e0: ISZERO 000029e1: PUSH2 0x2a68 000029e4: JUMPI 000029e5: PUSH1 0x40 000029e7: MLOAD 000029e8: PUSH3 0x461bcd 000029ec: PUSH1 0xe5 000029ee: SHL 000029ef: DUP2 000029f0: MSTORE 000029f1: PUSH1 0x04 000029f3: ADD 000029f4: DUP1 000029f5: DUP1 000029f6: PUSH1 0x20 000029f8: ADD 000029f9: DUP3 000029fa: DUP2 000029fb: SUB 000029fc: DUP3 000029fd: MSTORE 000029fe: DUP4 000029ff: DUP2 00002a00: DUP2 00002a01: MLOAD 00002a02: DUP2 00002a03: MSTORE 00002a04: PUSH1 0x20 00002a06: ADD 00002a07: SWAP2 00002a08: POP 00002a09: DUP1 00002a0a: MLOAD 00002a0b: SWAP1 00002a0c: PUSH1 0x20 00002a0e: ADD 00002a0f: SWAP1 00002a10: DUP1 00002a11: DUP4 00002a12: DUP4 00002a13: PUSH1 0x00 00002a15: JUMPDEST 00002a16: DUP4 00002a17: DUP2 00002a18: LT 00002a19: ISZERO 00002a1a: PUSH2 0x2a2d 00002a1d: JUMPI 00002a1e: DUP2 00002a1f: DUP2 00002a20: ADD 00002a21: MLOAD 00002a22: DUP4 00002a23: DUP3 00002a24: ADD 00002a25: MSTORE 00002a26: PUSH1 0x20 00002a28: ADD 00002a29: PUSH2 0x2a15 00002a2c: JUMP 00002a2d: JUMPDEST 00002a2e: POP 00002a2f: POP 00002a30: POP 00002a31: POP 00002a32: SWAP1 00002a33: POP 00002a34: SWAP1 00002a35: DUP2 00002a36: ADD 00002a37: SWAP1 00002a38: PUSH1 0x1f 00002a3a: AND 00002a3b: DUP1 00002a3c: ISZERO 00002a3d: PUSH2 0x2a5a 00002a40: JUMPI 00002a41: DUP1 00002a42: DUP3 00002a43: SUB 00002a44: DUP1 00002a45: MLOAD 00002a46: PUSH1 0x01 00002a48: DUP4 00002a49: PUSH1 0x20 00002a4b: SUB 00002a4c: PUSH2 0x0100 00002a4f: EXP 00002a50: SUB 00002a51: NOT 00002a52: AND 00002a53: DUP2 00002a54: MSTORE 00002a55: PUSH1 0x20 00002a57: ADD 00002a58: SWAP2 00002a59: POP 00002a5a: JUMPDEST 00002a5b: POP 00002a5c: SWAP3 00002a5d: POP 00002a5e: POP 00002a5f: POP 00002a60: PUSH1 0x40 00002a62: MLOAD 00002a63: DUP1 00002a64: SWAP2 00002a65: SUB 00002a66: SWAP1 00002a67: REVERT 00002a68: JUMPDEST 00002a69: POP 00002a6a: POP 00002a6b: POP 00002a6c: SWAP1 00002a6d: SUB 00002a6e: SWAP1 00002a6f: JUMP 00002a70: JUMPDEST 00002a71: PUSH1 0x40 00002a73: DUP1 00002a74: MLOAD 00002a75: PUSH1 0x01 00002a77: PUSH1 0x01 00002a79: PUSH1 0xa0 00002a7b: SHL 00002a7c: SUB 00002a7d: DUP1 00002a7e: DUP7 00002a7f: AND 00002a80: PUSH1 0x24 00002a82: DUP4 00002a83: ADD 00002a84: MSTORE 00002a85: DUP5 00002a86: AND 00002a87: PUSH1 0x44 00002a89: DUP3 00002a8a: ADD 00002a8b: MSTORE 00002a8c: PUSH1 0x64 00002a8e: DUP1 00002a8f: DUP3 00002a90: ADD 00002a91: DUP5 00002a92: SWAP1 00002a93: MSTORE 00002a94: DUP3 00002a95: MLOAD 00002a96: DUP1 00002a97: DUP4 00002a98: SUB 00002a99: SWAP1 00002a9a: SWAP2 00002a9b: ADD 00002a9c: DUP2 00002a9d: MSTORE 00002a9e: PUSH1 0x84 00002aa0: SWAP1 00002aa1: SWAP2 00002aa2: ADD 00002aa3: SWAP1 00002aa4: SWAP2 00002aa5: MSTORE 00002aa6: PUSH1 0x20 00002aa8: DUP2 00002aa9: ADD 00002aaa: DUP1 00002aab: MLOAD 00002aac: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002ac9: AND 00002aca: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00002aeb: OR 00002aec: SWAP1 00002aed: MSTORE 00002aee: PUSH2 0x29d3 00002af1: SWAP1 00002af2: DUP6 00002af3: SWAP1 00002af4: PUSH2 0x281b 00002af7: JUMP 00002af8: JUMPDEST 00002af9: PUSH1 0x00 00002afb: DUP1 00002afc: PUSH2 0x2b06 00002aff: DUP4 00002b00: PUSH1 0x03 00002b02: PUSH2 0x2696 00002b05: JUMP 00002b06: JUMPDEST 00002b07: SWAP1 00002b08: POP 00002b09: PUSH1 0x28 00002b0b: DUP2 00002b0c: GT 00002b0d: ISZERO 00002b0e: PUSH2 0x1b89 00002b11: JUMPI 00002b12: POP 00002b13: PUSH1 0x28 00002b15: SWAP3 00002b16: SWAP2 00002b17: POP 00002b18: POP 00002b19: JUMP 00002b1a: JUMPDEST 00002b1b: PUSH1 0x00 00002b1d: PUSH1 0xd2 00002b1f: SLOAD 00002b20: DUP3 00002b21: LT 00002b22: DUP1 00002b23: PUSH2 0x2b2d 00002b26: JUMPI 00002b27: POP 00002b28: PUSH1 0xd3 00002b2a: SLOAD 00002b2b: DUP4 00002b2c: GT 00002b2d: JUMPDEST 00002b2e: ISZERO 00002b2f: PUSH2 0x2b3a 00002b32: JUMPI 00002b33: POP 00002b34: PUSH1 0x00 00002b36: PUSH2 0x1b89 00002b39: JUMP 00002b3a: JUMPDEST 00002b3b: PUSH1 0xd2 00002b3d: SLOAD 00002b3e: DUP4 00002b3f: LT 00002b40: ISZERO 00002b41: PUSH2 0x2b4a 00002b44: JUMPI 00002b45: PUSH1 0xd2 00002b47: SLOAD 00002b48: SWAP3 00002b49: POP 00002b4a: JUMPDEST 00002b4b: PUSH1 0xd3 00002b4d: SLOAD 00002b4e: DUP3 00002b4f: GT 00002b50: ISZERO 00002b51: PUSH2 0x2b5a 00002b54: JUMPI 00002b55: PUSH1 0xd3 00002b57: SLOAD 00002b58: SWAP2 00002b59: POP 00002b5a: JUMPDEST 00002b5b: PUSH1 0xd4 00002b5d: SLOAD 00002b5e: DUP3 00002b5f: GT 00002b60: PUSH2 0x2b89 00002b63: JUMPI 00002b64: PUSH2 0x2b82 00002b67: PUSH1 0xd5 00002b69: SLOAD 00002b6a: PUSH2 0x2689 00002b6d: PUSH1 0xd6 00002b6f: SLOAD 00002b70: PUSH2 0x2689 00002b73: DUP8 00002b74: DUP8 00002b75: PUSH2 0x2217 00002b78: SWAP1 00002b79: SWAP2 00002b7a: SWAP1 00002b7b: PUSH4 0xffffffff 00002b80: AND 00002b81: JUMP 00002b82: JUMPDEST 00002b83: SWAP1 00002b84: POP 00002b85: PUSH2 0x1b89 00002b88: JUMP 00002b89: JUMPDEST 00002b8a: PUSH1 0xd4 00002b8c: SLOAD 00002b8d: DUP4 00002b8e: GT 00002b8f: ISZERO 00002b90: DUP1 00002b91: ISZERO 00002b92: PUSH2 0x2b9c 00002b95: JUMPI 00002b96: POP 00002b97: PUSH1 0xd4 00002b99: SLOAD 00002b9a: DUP3 00002b9b: GT 00002b9c: JUMPDEST 00002b9d: ISZERO 00002b9e: PUSH2 0x2be6 00002ba1: JUMPI 00002ba2: PUSH2 0x2b82 00002ba5: PUSH2 0x2bbf 00002ba8: PUSH1 0xd5 00002baa: SLOAD 00002bab: PUSH2 0x2689 00002bae: PUSH1 0xd4 00002bb0: SLOAD 00002bb1: DUP7 00002bb2: PUSH2 0x2217 00002bb5: SWAP1 00002bb6: SWAP2 00002bb7: SWAP1 00002bb8: PUSH4 0xffffffff 00002bbd: AND 00002bbe: JUMP 00002bbf: JUMPDEST 00002bc0: PUSH2 0x2be0 00002bc3: PUSH1 0xd5 00002bc5: SLOAD 00002bc6: PUSH2 0x2689 00002bc9: PUSH1 0xd6 00002bcb: SLOAD 00002bcc: PUSH2 0x2689 00002bcf: DUP10 00002bd0: PUSH1 0xd4 00002bd2: SLOAD 00002bd3: PUSH2 0x2217 00002bd6: SWAP1 00002bd7: SWAP2 00002bd8: SWAP1 00002bd9: PUSH4 0xffffffff 00002bde: AND 00002bdf: JUMP 00002be0: JUMPDEST 00002be1: SWAP1 00002be2: PUSH2 0x1b2c 00002be5: JUMP 00002be6: JUMPDEST 00002be7: PUSH1 0xd5 00002be9: SLOAD 00002bea: PUSH2 0x2b82 00002bed: SWAP1 00002bee: PUSH2 0x2689 00002bf1: DUP5 00002bf2: DUP7 00002bf3: PUSH2 0x2217 00002bf6: JUMP 00002bf7: JUMPDEST 00002bf8: PUSH1 0x00 00002bfa: DUP2 00002bfb: DUP4 00002bfc: PUSH2 0x2c46 00002bff: JUMPI 00002c00: PUSH1 0x40 00002c02: MLOAD 00002c03: PUSH3 0x461bcd 00002c07: PUSH1 0xe5 00002c09: SHL 00002c0a: DUP2 00002c0b: MSTORE 00002c0c: PUSH1 0x20 00002c0e: PUSH1 0x04 00002c10: DUP3 00002c11: ADD 00002c12: DUP2 00002c13: DUP2 00002c14: MSTORE 00002c15: DUP4 00002c16: MLOAD 00002c17: PUSH1 0x24 00002c19: DUP5 00002c1a: ADD 00002c1b: MSTORE 00002c1c: DUP4 00002c1d: MLOAD 00002c1e: SWAP1 00002c1f: SWAP3 00002c20: DUP4 00002c21: SWAP3 00002c22: PUSH1 0x44 00002c24: SWAP1 00002c25: SWAP2 00002c26: ADD 00002c27: SWAP2 00002c28: SWAP1 00002c29: DUP6 00002c2a: ADD 00002c2b: SWAP1 00002c2c: DUP1 00002c2d: DUP4 00002c2e: DUP4 00002c2f: PUSH1 0x00 00002c31: DUP4 00002c32: ISZERO 00002c33: PUSH2 0x2a2d 00002c36: JUMPI 00002c37: DUP2 00002c38: DUP2 00002c39: ADD 00002c3a: MLOAD 00002c3b: DUP4 00002c3c: DUP3 00002c3d: ADD 00002c3e: MSTORE 00002c3f: PUSH1 0x20 00002c41: ADD 00002c42: PUSH2 0x2a15 00002c45: JUMP 00002c46: JUMPDEST 00002c47: POP 00002c48: PUSH1 0x00 00002c4a: DUP4 00002c4b: DUP6 00002c4c: DUP2 00002c4d: PUSH2 0x2c52 00002c50: JUMPI 00002c51: INVALID 00002c52: JUMPDEST 00002c53: DIV 00002c54: SWAP6 00002c55: SWAP5 00002c56: POP 00002c57: POP 00002c58: POP 00002c59: POP 00002c5a: POP 00002c5b: JUMP 00002c5c: JUMPDEST 00002c5d: PUSH1 0x00 00002c5f: SLOAD 00002c60: PUSH2 0x0100 00002c63: SWAP1 00002c64: DIV 00002c65: PUSH1 0xff 00002c67: AND 00002c68: DUP1 00002c69: PUSH2 0x2c75 00002c6c: JUMPI 00002c6d: POP 00002c6e: PUSH2 0x2c75 00002c71: PUSH2 0x1d15 00002c74: JUMP 00002c75: JUMPDEST 00002c76: DUP1 00002c77: PUSH2 0x2c83 00002c7a: JUMPI 00002c7b: POP 00002c7c: PUSH1 0x00 00002c7e: SLOAD 00002c7f: PUSH1 0xff 00002c81: AND 00002c82: ISZERO 00002c83: JUMPDEST 00002c84: PUSH2 0x2cbe 00002c87: JUMPI 00002c88: PUSH1 0x40 00002c8a: MLOAD 00002c8b: PUSH3 0x461bcd 00002c8f: PUSH1 0xe5 00002c91: SHL 00002c92: DUP2 00002c93: MSTORE 00002c94: PUSH1 0x04 00002c96: ADD 00002c97: DUP1 00002c98: DUP1 00002c99: PUSH1 0x20 00002c9b: ADD 00002c9c: DUP3 00002c9d: DUP2 00002c9e: SUB 00002c9f: DUP3 00002ca0: MSTORE 00002ca1: PUSH1 0x2e 00002ca3: DUP2 00002ca4: MSTORE 00002ca5: PUSH1 0x20 00002ca7: ADD 00002ca8: DUP1 00002ca9: PUSH2 0x2e3d 00002cac: PUSH1 0x2e 00002cae: SWAP2 00002caf: CODECOPY 00002cb0: PUSH1 0x40 00002cb2: ADD 00002cb3: SWAP2 00002cb4: POP 00002cb5: POP 00002cb6: PUSH1 0x40 00002cb8: MLOAD 00002cb9: DUP1 00002cba: SWAP2 00002cbb: SUB 00002cbc: SWAP1 00002cbd: REVERT 00002cbe: JUMPDEST 00002cbf: PUSH1 0x00 00002cc1: SLOAD 00002cc2: PUSH2 0x0100 00002cc5: SWAP1 00002cc6: DIV 00002cc7: PUSH1 0xff 00002cc9: AND 00002cca: ISZERO 00002ccb: DUP1 00002ccc: ISZERO 00002ccd: PUSH2 0x27ce 00002cd0: JUMPI 00002cd1: PUSH1 0x00 00002cd3: DUP1 00002cd4: SLOAD 00002cd5: PUSH1 0xff 00002cd7: NOT 00002cd8: PUSH2 0xff00 00002cdb: NOT 00002cdc: SWAP1 00002cdd: SWAP2 00002cde: AND 00002cdf: PUSH2 0x0100 00002ce2: OR 00002ce3: AND 00002ce4: PUSH1 0x01 00002ce6: OR 00002ce7: SWAP1 00002ce8: SSTORE 00002ce9: DUP1 00002cea: ISZERO 00002ceb: PUSH2 0x089a 00002cee: JUMPI 00002cef: PUSH1 0x00 00002cf1: DUP1 00002cf2: SLOAD 00002cf3: PUSH2 0xff00 00002cf6: NOT 00002cf7: AND 00002cf8: SWAP1 00002cf9: SSTORE 00002cfa: POP 00002cfb: JUMP 00002cfc: JUMPDEST 00002cfd: PUSH1 0x00 00002cff: SLOAD 00002d00: PUSH2 0x0100 00002d03: SWAP1 00002d04: DIV 00002d05: PUSH1 0xff 00002d07: AND 00002d08: DUP1 00002d09: PUSH2 0x2d15 00002d0c: JUMPI 00002d0d: POP 00002d0e: PUSH2 0x2d15 00002d11: PUSH2 0x1d15 00002d14: JUMP 00002d15: JUMPDEST 00002d16: DUP1 00002d17: PUSH2 0x2d23 00002d1a: JUMPI 00002d1b: POP 00002d1c: PUSH1 0x00 00002d1e: SLOAD 00002d1f: PUSH1 0xff 00002d21: AND 00002d22: ISZERO 00002d23: JUMPDEST 00002d24: PUSH2 0x2d5e 00002d27: JUMPI 00002d28: PUSH1 0x40 00002d2a: MLOAD 00002d2b: PUSH3 0x461bcd 00002d2f: PUSH1 0xe5 00002d31: SHL 00002d32: DUP2 00002d33: MSTORE 00002d34: PUSH1 0x04 00002d36: ADD 00002d37: DUP1 00002d38: DUP1 00002d39: PUSH1 0x20 00002d3b: ADD 00002d3c: DUP3 00002d3d: DUP2 00002d3e: SUB 00002d3f: DUP3 00002d40: MSTORE 00002d41: PUSH1 0x2e 00002d43: DUP2 00002d44: MSTORE 00002d45: PUSH1 0x20 00002d47: ADD 00002d48: DUP1 00002d49: PUSH2 0x2e3d 00002d4c: PUSH1 0x2e 00002d4e: SWAP2 00002d4f: CODECOPY 00002d50: PUSH1 0x40 00002d52: ADD 00002d53: SWAP2 00002d54: POP 00002d55: POP 00002d56: PUSH1 0x40 00002d58: MLOAD 00002d59: DUP1 00002d5a: SWAP2 00002d5b: SUB 00002d5c: SWAP1 00002d5d: REVERT 00002d5e: JUMPDEST 00002d5f: PUSH1 0x00 00002d61: SLOAD 00002d62: PUSH2 0x0100 00002d65: SWAP1 00002d66: DIV 00002d67: PUSH1 0xff 00002d69: AND 00002d6a: ISZERO 00002d6b: DUP1 00002d6c: ISZERO 00002d6d: PUSH2 0x2d89 00002d70: JUMPI 00002d71: PUSH1 0x00 00002d73: DUP1 00002d74: SLOAD 00002d75: PUSH1 0xff 00002d77: NOT 00002d78: PUSH2 0xff00 00002d7b: NOT 00002d7c: SWAP1 00002d7d: SWAP2 00002d7e: AND 00002d7f: PUSH2 0x0100 00002d82: OR 00002d83: AND 00002d84: PUSH1 0x01 00002d86: OR 00002d87: SWAP1 00002d88: SSTORE 00002d89: JUMPDEST 00002d8a: PUSH1 0x00 00002d8c: PUSH2 0x2d93 00002d8f: PUSH2 0x1d11 00002d92: JUMP 00002d93: JUMPDEST 00002d94: PUSH1 0x65 00002d96: DUP1 00002d97: SLOAD 00002d98: PUSH1 0x01 00002d9a: PUSH1 0x01 00002d9c: PUSH1 0xa0 00002d9e: SHL 00002d9f: SUB 00002da0: NOT 00002da1: AND 00002da2: PUSH1 0x01 00002da4: PUSH1 0x01 00002da6: PUSH1 0xa0 00002da8: SHL 00002da9: SUB 00002daa: DUP4 00002dab: AND 00002dac: SWAP1 00002dad: DUP2 00002dae: OR 00002daf: SWAP1 00002db0: SWAP2 00002db1: SSTORE 00002db2: PUSH1 0x40 00002db4: MLOAD 00002db5: SWAP2 00002db6: SWAP3 00002db7: POP 00002db8: SWAP1 00002db9: PUSH1 0x00 00002dbb: SWAP1 00002dbc: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00002ddd: SWAP1 00002dde: DUP3 00002ddf: SWAP1 00002de0: LOG3 00002de1: POP 00002de2: DUP1 00002de3: ISZERO 00002de4: PUSH2 0x089a 00002de7: JUMPI 00002de8: PUSH1 0x00 00002dea: DUP1 00002deb: SLOAD 00002dec: PUSH2 0xff00 00002def: NOT 00002df0: AND 00002df1: SWAP1 00002df2: SSTORE 00002df3: POP 00002df4: JUMP 00002df5: INVALID 00002df6: UNKNOWN(0x4F) 00002df7: PUSH24 0x6e61626c653a206e6577206f776e65722069732074686520 00002e10: PUSH27 0x65726f2061646472657373536166654d6174683a206d756c746970 00002e2c: PUSH13 0x69636174696f6e206f76657266 00002e3a: PUSH13 0x6f77436f6e747261637420696e 00002e48: PUSH20 0x74616e63652068617320616c7265616479206265 00002e5d: PUSH6 0x6e20696e6974 00002e64: PUSH10 0x616c697a656453616665 00002e6f: GASLIMIT 00002e70: MSTORE 00002e71: NUMBER 00002e72: ORIGIN 00002e73: ADDRESS 00002e74: GASPRICE 00002e75: KECCAK256 00002e76: GASLIMIT 00002e77: MSTORE 00002e78: NUMBER 00002e79: ORIGIN 00002e7a: ADDRESS 00002e7b: KECCAK256 00002e7c: PUSH16 0x7065726174696f6e20646964206e6f74 00002e8d: KECCAK256 00002e8e: PUSH20 0x756363656564a2646970667358221220dee13a29 00002ea3: UNKNOWN(0xCF) 00002ea4: UNKNOWN(0x2C) 00002ea5: COINBASE 00002ea6: SWAP10 00002ea7: UNKNOWN(0xE3) 00002ea8: SGT 00002ea9: UNKNOWN(0xE3) 00002eaa: INVALID 00002eab: MSTORE8 00002eac: UNKNOWN(0xB8) 00002ead: UNKNOWN(0xFB) 00002eae: UNKNOWN(0xDB) 00002eaf: SWAP14 00002eb0: SWAP5 00002eb1: UNKNOWN(0x4C) 00002eb2: BLOBHASH 00002eb3: UNKNOWN(0xAB) 00002eb4: UNKNOWN(0xF7) 00002eb5: BLOCKHASH 00002eb6: UNKNOWN(0xCA) 00002eb7: UNKNOWN(0xD3) 00002eb8: EXP 00002eb9: UNKNOWN(0xEE) 00002eba: UNKNOWN(0xEF) 00002ebb: UNKNOWN(0xBB) 00002ebc: UNKNOWN(0x23) 00002ebd: UNKNOWN(0xCA) 00002ebe: UNKNOWN(0xE2) 00002ebf: PUSH5 0x736f6c6343 00002ec5: STOP 00002ec6: SMOD 00002ec7: ADD 00002ec8: STOP 00002ec9: CALLER
| 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": "0xf42d989c",
"selector": "0xf42d989c",
"calldata_variants": [
"0xf42d989c",
"0xf42d989c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf525cb68",
"selector": "0xf525cb68",
"calldata_variants": [
"0xf525cb68",
"0xf525cb680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfebb97cd",
"selector": "0xfebb97cd",
"calldata_variants": [
"0xfebb97cd",
"0xfebb97cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf344dcce",
"selector": "0xf344dcce",
"calldata_variants": [
"0xf344dcce",
"0xf344dcce0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf39e3c53",
"selector": "0xf39e3c53",
"calldata_variants": [
"0xf39e3c53",
"0xf39e3c530000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec12a5e1",
"selector": "0xec12a5e1",
"calldata_variants": [
"0xec12a5e1",
"0xec12a5e10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xece80528",
"selector": "0xece80528",
"calldata_variants": [
"0xece80528",
"0xece805280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 11890,
"type": "tx_origin_used"
},
{
"pc": 11897,
"type": "tx_origin_used"
}
]
}
|
| medium | reentrancy | codex | Reentrant exit can double-withdraw a lockup via claimBonus external transfer | 75 | no | — |
viewevidence_json{
"evidence": "`exit` calls `claimBonus` before setting `lockUp.exitedAt` or updating totals, and `claimBonus` performs an external `safeTransfer` to `msg.sender`.",
"locations": [
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:194",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:201",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/LockUpPool.sol:266"
],
"recommendation": "Apply `nonReentrant` to `exit`/`claimBonus` and/or update lockup state before any external transfer. A safer pattern is to compute bonus/refund amounts, update `lockUp.exitedAt` and totals first, then perform token transfers, or use an internal bonus-claim routine that does not transfer during `exit`.",
"exploit_scenario": "A user deposits from a contract and the underlying token implements ERC777-style hooks (or a malicious ERC20 that calls the recipient). When `exit` is called, it first invokes `claimBonus`, which transfers tokens to `msg.sender`. The token callback reenters `exit` for the same `lockUpId` before `lockUp.exitedAt` is set. The second `exit` succeeds and updates balances; when control returns, the original `exit` continues and transfers the refund again. With multiple lockups (so totals don\u2019t underflow), the attacker effectively withdraws more than the single lockup amount, bypassing the time lock on other deposits and corrupting accounting."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x630b6ba6e4206c3d96cbd3a4467a7c46622bc1472e4a7a87fe947e2260f9c743
call_targets:
0x65c0dfbb89a35e3e514e0b02eca34ac2e3bbf7ef
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x630b6ba6e4206c3d96cbd3a4467a7c46622bc1472e4a7a87fe947e2260f9c743",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x65c0dfbb89a35e3e514e0b02eca34ac2e3bbf7ef"
],
"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": "0xf42d989c",
"selector": "0xf42d989c",
"calldata_variants": [
"0xf42d989c",
"0xf42d989c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf525cb68",
"selector": "0xf525cb68",
"calldata_variants": [
"0xf525cb68",
"0xf525cb680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfebb97cd",
"selector": "0xfebb97cd",
"calldata_variants": [
"0xfebb97cd",
"0xfebb97cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf344dcce",
"selector": "0xf344dcce",
"calldata_variants": [
"0xf344dcce",
"0xf344dcce0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf39e3c53",
"selector": "0xf39e3c53",
"calldata_variants": [
"0xf39e3c53",
"0xf39e3c530000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec12a5e1",
"selector": "0xec12a5e1",
"calldata_variants": [
"0xec12a5e1",
"0xec12a5e10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xece80528",
"selector": "0xece80528",
"calldata_variants": [
"0xece80528",
"0xece805280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4178,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4310,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10479,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [
{
"pc": 11890,
"type": "tx_origin_used"
},
{
"pc": 11897,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 3
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x630b6ba6e4206c3d96cbd3a4467a7c46622bc1472e4a7a87fe947e2260f9c743
call_targets:
0x65c0dfbb89a35e3e514e0b02eca34ac2e3bbf7ef
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x630b6ba6e4206c3d96cbd3a4467a7c46622bc1472e4a7a87fe947e2260f9c743",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x65c0dfbb89a35e3e514e0b02eca34ac2e3bbf7ef"
],
"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": "0xf42d989c",
"selector": "0xf42d989c",
"calldata_variants": [
"0xf42d989c",
"0xf42d989c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf525cb68",
"selector": "0xf525cb68",
"calldata_variants": [
"0xf525cb68",
"0xf525cb680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfebb97cd",
"selector": "0xfebb97cd",
"calldata_variants": [
"0xfebb97cd",
"0xfebb97cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf344dcce",
"selector": "0xf344dcce",
"calldata_variants": [
"0xf344dcce",
"0xf344dcce0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf39e3c53",
"selector": "0xf39e3c53",
"calldata_variants": [
"0xf39e3c53",
"0xf39e3c530000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec12a5e1",
"selector": "0xec12a5e1",
"calldata_variants": [
"0xec12a5e1",
"0xec12a5e10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xece80528",
"selector": "0xece80528",
"calldata_variants": [
"0xece80528",
"0xece805280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4178,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4310,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10479,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": [
{
"pc": 11890,
"type": "tx_origin_used"
},
{
"pc": 11897,
"type": "tx_origin_used"
}
]
}
|
| low | math | codex | Division by zero in WRN reward math can block exits if totalMultiplier is zero | 65 | no | — |
viewevidence_json{
"evidence": "`_getAccWRNTillNow` divides by `totalMultiplier` without a zero check; `claimWRN` is called unconditionally in `doLockUp` and `exit`.",
"locations": [
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:187",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:114",
"contracts/Users/seb/repo/hunt/neverlose/contract/contracts/WRNRewardPool.sol:215"
],
"recommendation": "Guard against `totalMultiplier == 0` by returning 0 rewards, or enforce `multiplier > 0` and prevent configuration that sets `totalMultiplier` to zero. Consider skipping `claimWRN` when rewards are disabled so exits remain possible.",
"exploit_scenario": "If all pool multipliers are set to 0 (or a pool is added via `addLockUpPool` without setting a multiplier), `totalMultiplier` becomes 0. Any call to `claimWRN` will revert due to division by zero in `_getAccWRNTillNow`. Because `claimWRN` is invoked at the start of `doLockUp` and `exit`, users cannot deposit or withdraw, effectively locking funds until multipliers are fixed."
}
|