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

Analysis Run

4ea3389e-4ea3-4963-b780-690e0ce1b56a

failed
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 3:06 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
ETH value transfer possible
crit 0 high 0 proxy context implementation known
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30386 report.consolidate complete 1 / 1 3 months ago
74500 artifact.fetch failed 1 / 3 1 week ago
74501 tool.cast_disasm complete 1 / 3 1 week ago
74502 analysis.bundle complete 1 / 3 1 week ago
74503 capability.graph complete 1 / 3 1 week ago
74504 detector.run complete 1 / 3 1 week ago
74505 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: yes
Verified Source: yes

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
3
No findings?
no
Summary
Found 3 issues: a state-regression path in rewards prefetch/earmark that can trigger repeated treasury transfers, a staking snapshot inconsistency that undercounts delegate rewards, and missing initializer locks on upgradeable implementations.
View stderr
[codex:804845] OpenAI Codex v0.77.0 (research preview)
[codex:804845] --------
[codex:804845] workdir: /tmp/codex-multi-02qgutoy
[codex:804845] model: gpt-5.2-codex
[codex:804845] provider: openai
[codex:804845] approval: never
[codex:804845] sandbox: read-only
[codex:804845] reasoning effort: xhigh
[codex:804845] reasoning summaries: auto
[codex:804845] session id: 019b680a-22f0-7fd2-a548-fcbbc02f0160
[codex:804845] --------
[codex:804845] user
[codex:804845] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:804845] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:804845] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:804845] 
[codex:804845] Scope rules:
[codex:804845] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:804845] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:804845] 
[codex:804845] Output MUST be valid JSON matching the provided schema.
[codex:804845] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:804845] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:804845] 
[codex:804845] Output constraints (IMPORTANT):
[codex:804845] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:804845] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:804845] mcp startup: no servers
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Preparing to read audit file**
[codex:804845] exec
[codex:804845] /bin/bash -lc ls in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845] AUDIT_BUNDLE.txt
[codex:804845] codex-output-schema.json
[codex:804845] contracts
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Reading AUDIT_BUNDLE.txt**
[codex:804845] exec
[codex:804845] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:804845] 
[codex:804845] ================================================================================
[codex:804845] FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:804845] ================================================================================
[codex:804845] // SPDX-License-Identifier: MIT
[codex:804845] // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
[codex:804845] 
[codex:804845] pragma solidity ^0.8.0;
[codex:804845] 
[codex:804845] /**
[codex:804845]  * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:804845]  */
[codex:804845] interface IERC20 {
[codex:804845]     /**
[codex:804845]      * @dev Emitted when `value` tokens are moved from one account (`from`) to
[codex:804845]      * another (`to`).
[codex:804845]      *
[codex:804845]      * Note that `value` may be zero.
[codex:804845]      */
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Planning full audit bundle reading**
[codex:804845] 
[codex:804845] I need to read the entire AUDIT_BUNDLE.txt since initial cat output is truncated by tool limits. To ensure complete coverage, I'll split the file into manageable segments and parse each part sequentially, focusing first on first-party contracts under contracts/contracts and governance like Staking. I'll use line counts and file boundary markers to guide this process carefully.
[codex:804845] exec
[codex:804845] /bin/bash -lc 'rg -n "''^FILE:" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-02qgutoy succeeded in 8ms:
[codex:804845] 4:FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:804845] 90:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol
[codex:804845] 154:FILE: contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
[codex:804845] 274:FILE: contracts/@openzeppelin/contracts/utils/Address.sol
[codex:804845] 522:FILE: contracts/@openzeppelin/contracts/utils/StorageSlot.sol
[codex:804845] 614:FILE: contracts/@openzeppelin/contracts/utils/math/Math.sol
[codex:804845] 963:FILE: contracts/@openzeppelin/contracts/utils/structs/BitMaps.sol
[codex:804845] 1022:FILE: contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol
[codex:804845] 1286:FILE: contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol
[codex:804845] 1378:FILE: contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol
[codex:804845] 1477:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol
[codex:804845] 1646:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol
[codex:804845] 1869:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol
[codex:804845] 1910:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol
[codex:804845] 1984:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol
[codex:804845] 2030:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol
[codex:804845] 2059:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol
[codex:804845] 2408:FILE: contracts/contracts/governance/Staking.sol
[codex:804845] 2924:FILE: contracts/contracts/treasury/GovernorRewards.sol
[codex:804845] 3421:FILE: contracts/contracts/treasury/Treasury.sol
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Planning full file reading strategy**
[codex:804845] exec
[codex:804845] /bin/bash -lc 'wc -l AUDIT_BUNDLE.txt' in /tmp/codex-multi-02qgutoy succeeded in 5ms:
[codex:804845] 3491 AUDIT_BUNDLE.txt
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Reading file in segments**
[codex:804845] exec
[codex:804845] /bin/bash -lc "sed -n '1,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:804845] 
[codex:804845] ================================================================================
[codex:804845] FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:804845] ================================================================================
[codex:804845] // SPDX-License-Identifier: MIT
[codex:804845] // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
[codex:804845] 
[codex:804845] pragma solidity ^0.8.0;
[codex:804845] 
[codex:804845] /**
[codex:804845]  * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:804845]  */
[codex:804845] interface IERC20 {
[codex:804845]     /**
[codex:804845]      * @dev Emitted when `value` tokens are moved from one account (`from`) to
[codex:804845]      * another (`to`).
[codex:804845]      *
[codex:804845]      * Note that `value` may be zero.
[codex:804845]      */
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Continuing file review**
[codex:804845] exec
[codex:804845] /bin/bash -lc "sed -n '801,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-02qgutoy succeeded in 5ms:
[codex:804845]             result = (result + a / result) >> 1;
[codex:804845]             return min(result, a / result);
[codex:804845]         }
[codex:804845]     }
[codex:804845] 
[codex:804845]     /**
[codex:804845]      * @notice Calculates sqrt(a), following the selected rounding direction.
[codex:804845]      */
[codex:804845]     function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
[codex:804845]         unchecked {
[codex:804845]             uint256 result = sqrt(a);
[codex:804845]             return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
[codex:804845]         }
[codex:804845]     }
[codex:804845] 
[codex:804845]     /**
[codex:804845]      * @dev Return the log in base 2, rounded down, of a positive value.
[codex:804845]      * Returns 0 if given 0.
[codex:804845]      */
[codex:804845]     function log2(uint256 value) internal pure returns (uint256) {
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Continuing to review lines 1601-2407**
[codex:804845] exec
[codex:804845] /bin/bash -lc "sed -n '1601,2407p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-02qgutoy succeeded in 5ms:
[codex:804845]         _initializing = false;
[codex:804845]         emit Initialized(version);
[codex:804845]     }
[codex:804845] 
[codex:804845]     /**
[codex:804845]      * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the
[codex:804845]      * {initializer} and {reinitializer} modifiers, directly or indirectly.
[codex:804845]      */
[codex:804845]     modifier onlyInitializing() {
[codex:804845]         require(_initializing, "Initializable: contract is not initializing");
[codex:804845]         _;
[codex:804845]     }
[codex:804845] 
[codex:804845]     /**
[codex:804845]      * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.
[codex:804845]      * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized
[codex:804845]      * to any version. It is recommended to use this to lock implementation contracts that are designed to be called
[codex:804845]      * through proxies.
[codex:804845]      *
[codex:804845]      * Emits an {Initialized} event the first time it is successfully executed.
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Requesting additional content segments**
[codex:804845] exec
[codex:804845] /bin/bash -lc "sed -n '2408,2923p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-02qgutoy succeeded in 7ms:
[codex:804845] FILE: contracts/contracts/governance/Staking.sol
[codex:804845] ================================================================================
[codex:804845] // SPDX-License-Identifier: UNLICENSED
[codex:804845] pragma solidity ^0.8.7;
[codex:804845] pragma abicoder v2;
[codex:804845] 
[codex:804845] // OpenZeppelin v4
[codex:804845] import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
[codex:804845] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:804845] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:804845] 
[codex:804845] /**
[codex:804845]  * @title Snapshot
[codex:804845]  * @author Railgun Contributors
[codex:804845]  * @notice Governance contract for railgun, handles staking, voting power, and snapshotting
[codex:804845]  * @dev Snapshots cannot be taken during interval 0
[codex:804845]  * wait till interval 1 before utilizing snapshots
[codex:804845]  */
[codex:804845] contract Staking {
[codex:804845]   using SafeERC20 for IERC20;
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Continuing to review GovernorRewards and Treasury sections**
[codex:804845] exec
[codex:804845] /bin/bash -lc "sed -n '2924,3420p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-02qgutoy succeeded in 5ms:
[codex:804845] FILE: contracts/contracts/treasury/GovernorRewards.sol
[codex:804845] ================================================================================
[codex:804845] // SPDX-License-Identifier: UNLICENSED
[codex:804845] pragma solidity ^0.8.7;
[codex:804845] pragma abicoder v2;
[codex:804845] 
[codex:804845] // OpenZeppelin v4
[codex:804845] import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:804845] import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
[codex:804845] import { Treasury } from "../treasury/Treasury.sol";
[codex:804845] import { Staking } from "../governance/Staking.sol";
[codex:804845] import { StorageSlot } from "@openzeppelin/contracts/utils/StorageSlot.sol";
[codex:804845] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:804845] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:804845] import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
[codex:804845] import { BitMaps } from "@openzeppelin/contracts/utils/structs/BitMaps.sol";
[codex:804845] 
[codex:804845] /**
[codex:804845]  * @title GovernorRewards
[codex:804845]  * @author Railgun Contributors
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Switching focus to Treasury**
[codex:804845] exec
[codex:804845] /bin/bash -lc "sed -n '3421,3491p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845] FILE: contracts/contracts/treasury/Treasury.sol
[codex:804845] ================================================================================
[codex:804845] // SPDX-License-Identifier: UNLICENSED
[codex:804845] pragma solidity ^0.8.7;
[codex:804845] pragma abicoder v2;
[codex:804845] 
[codex:804845] // OpenZeppelin v4
[codex:804845] import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:804845] import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:804845] import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:804845] import { AccessControlUpgradeable } from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
[codex:804845] 
[codex:804845] /**
[codex:804845]  * @title Treasury
[codex:804845]  * @author Railgun Contributors
[codex:804845]  * @notice Stores treasury funds for Railgun
[codex:804845]  */
[codex:804845] contract Treasury is Initializable, AccessControlUpgradeable {
[codex:804845]   using SafeERC20 for IERC20;
[codex:804845] 
[codex:804845] 
[codex:804845] 
[codex:804845] 
[codex:804845] 
[codex:804845] 
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Analyzing potential contract vulnerabilities**
[codex:804845] 
[codex:804845] I’m carefully auditing staking, GovernorRewards, and treasury contracts for reentrancy, access control, upgrade risks, and accounting issues. I’m tracing token callbacks, initializer risks, and interval recalculations that might allow double token transfers or reward inflation. There’s a lot to unpack here about state updates before external calls, unchecked interval adjustments, and how public functions can be exploited. Let’s explore these nuanced patterns to understand any subtle attack vectors.
[codex:804845] thinking
[codex:804845] **Examining implications of public interval manipulation**
[codex:804845] 
[codex:804845] I’m digging into how anyone can call prefetchGlobalSnapshots and earmark to roll back and advance intervals, causing repeated token transfers from treasury to GovernorRewards without owner control. This could accelerate distributions or enable claim front-running by third parties, though direct theft seems unlikely. The interplay of interval reset, claimed bitmaps, and public access is definitely worth unpacking for potential system impacts.
[codex:804845] thinking
[codex:804845] **Analyzing snapshot timing and voting power consistency**
[codex:804845] 
[codex:804845] I'm parsing how snapshots capture voting power for delegates, especially around stake unlocking where delegate snapshots might not update immediately. This can cause historical snapshots to reflect slightly stale or current voting power, which affects reward calculations. The snapshot search logic returns the first snapshot at or after the queried interval, indicating snapshots represent voting power at interval starts, taken before any interval actions. This might be intentional but raises questions about precise reward accounting for evolving voting power within intervals.
[codex:804845] thinking
[codex:804845] **Examining reward distribution edge cases and potential griefing**
[codex:804845] 
[codex:804845] I'm reflecting on how re-earmarking enabled by rewinding snapshot intervals can cause tokens to move repeatedly from treasury to GovernorRewards for intervals already claimed, locking funds and potentially causing unfair reward accounting. The lack of delegate snapshot on unlock leads to undercounted delegates’ rewards for intervals with mid-interval power changes, a correctness issue but not directly exploitable. The permissionless functions combined with interval rollback enable scenarios where attackers can disrupt expected reward flows, creating denial-of-service by locking tokens in GovernorRewards that can’t be claimed.
[codex:804845] thinking
[codex:804845] **Identifying upgradeability and token accounting concerns**
[codex:804845] 
[codex:804845] I’m analyzing upgradeable contracts lacking initializer locks, which could let someone initialize implementations directly and gain roles there, a known but important issue. Also, token staking may misaccount when fee-on-transfer tokens are used, risking insolvency if fewer tokens arrive than credited. Beyond that, repeated earmark calls combined with interval rewinding can cause treasury tokens to be moved into GovernorRewards in unexpected ways, risking stuck funds though not directly exploitable for theft. Overall, these findings highlight important upgrade and token flow considerations in the system.
[codex:804845] thinking
[codex:804845] **Analyzing snapshot logic and upgradeability risks**
[codex:804845] 
[codex:804845] I’m confirming that snapshot handling generally assumes state changes happen only at snapshot points, which holds except for delegate voting power updates on unlock where snapshots are missed, causing undercounted rewards and a griefing possibility. Also, upgradeability risks persist due to missing initializer locks on implementation contracts, and repeated snapshot rewinding can disrupt treasury-to-rewards flow. I’m preparing to locate relevant code lines for a clear report.
[codex:804845] exec
[codex:804845] /bin/bash -lc 'ls contracts/contracts' in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845] governance
[codex:804845] treasury
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Inspecting staking contract lines**
[codex:804845] exec
[codex:804845] /bin/bash -lc "nl -ba contracts/contracts/governance/Staking.sol | sed -n '140,260p'" in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845]    140	    if (globalsSnapshots.length > 0) {
[codex:804845]    141	      // If a snapshot exists return the interval it was taken
[codex:804845]    142	      return globalsSnapshots[globalsSnapshots.length - 1].interval;
[codex:804845]    143	    } else {
[codex:804845]    144	      // Else default to 0
[codex:804845]    145	      return 0;
[codex:804845]    146	    }
[codex:804845]    147	  }
[codex:804845]    148	
[codex:804845]    149	  /**
[codex:804845]    150	   * @notice Returns interval of latest account snapshot
[codex:804845]    151	   * @param _account - account to get latest snapshot of
[codex:804845]    152	   * @return Latest account snapshot interval
[codex:804845]    153	   */
[codex:804845]    154	
[codex:804845]    155	  function latestAccountSnapshotInterval(address _account) public view returns (uint256) {
[codex:804845]    156	    if (accountSnapshots[_account].length > 0) {
[codex:804845]    157	      // If a snapshot exists return the interval it was taken
[codex:804845]    158	      return accountSnapshots[_account][accountSnapshots[_account].length - 1].interval;
[codex:804845]    159	    } else {
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Examining code around lines 310-380**
[codex:804845] exec
[codex:804845] /bin/bash -lc "nl -ba contracts/contracts/governance/Staking.sol | sed -n '300,420p'" in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845]    300	        low = mid + 1;
[codex:804845]    301	      }
[codex:804845]    302	    }
[codex:804845]    303	
[codex:804845]    304	    // At this point `low` is the exclusive upper bound. Find the inclusive upper bounds and set to index
[codex:804845]    305	    if (low > 0 && globalsSnapshots[low - 1].interval == _interval) {
[codex:804845]    306	      return globalsSnapshots[low - 1];
[codex:804845]    307	    } else {
[codex:804845]    308	      index = low;
[codex:804845]    309	    }
[codex:804845]    310	
[codex:804845]    311	    // If index is equal to snapshot array length, then no update was made after the requested
[codex:804845]    312	    // snapshot interval. This means the latest value is the right one.
[codex:804845]    313	    if (index == globalsSnapshots.length) {
[codex:804845]    314	      return GlobalsSnapshot(_interval, totalVotingPower(), totalStaked);
[codex:804845]    315	    } else {
[codex:804845]    316	      return globalsSnapshots[index];
[codex:804845]    317	    }
[codex:804845]    318	  }
[codex:804845]    319	
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Gathering lines for unlock and claim**
[codex:804845] exec
[codex:804845] /bin/bash -lc "nl -ba contracts/contracts/governance/Staking.sol | sed -n '420,520p'" in /tmp/codex-multi-02qgutoy succeeded in 5ms:
[codex:804845]    420	    } else return accountSnapshotAtSearch(_account, _interval);
[codex:804845]    421	  }
[codex:804845]    422	
[codex:804845]    423	  /**
[codex:804845]    424	   * @notice Stake tokens
[codex:804845]    425	   * @dev This contract should be approve()'d for _amount
[codex:804845]    426	   * @param _amount - Amount to stake
[codex:804845]    427	   * @return stake ID
[codex:804845]    428	   */
[codex:804845]    429	
[codex:804845]    430	  function stake(uint256 _amount) public returns (uint256) {
[codex:804845]    431	    // Check if amount is not 0
[codex:804845]    432	    require(_amount > 0, "Staking: Amount not set");
[codex:804845]    433	
[codex:804845]    434	    // Check if snapshot needs to be taken
[codex:804845]    435	    snapshot(msg.sender);
[codex:804845]    436	
[codex:804845]    437	    // Get stakeID
[codex:804845]    438	    uint256 stakeID = stakes[msg.sender].length;
[codex:804845]    439	
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Unlocking code section for GovernorRewards prefetch**
[codex:804845] exec
[codex:804845] /bin/bash -lc "nl -ba contracts/contracts/treasury/GovernorRewards.sol | sed -n '140,280p'" in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845]    140	  }
[codex:804845]    141	
[codex:804845]    142	  /**
[codex:804845]    143	   * @notice Gets interval at time
[codex:804845]    144	   * @param _time - time to get interval of
[codex:804845]    145	   * @return interval
[codex:804845]    146	   */
[codex:804845]    147	  function intervalAtTime(uint256 _time) public view returns (uint256) {
[codex:804845]    148	    require(
[codex:804845]    149	      _time >= STAKING_DEPLOY_TIME,
[codex:804845]    150	      "GovernorRewards: Requested time is before contract was deployed"
[codex:804845]    151	    );
[codex:804845]    152	    return (_time - STAKING_DEPLOY_TIME) / DISTRIBUTION_INTERVAL;
[codex:804845]    153	  }
[codex:804845]    154	
[codex:804845]    155	  /**
[codex:804845]    156	   * @notice Converts distribution interval to staking interval
[codex:804845]    157	   * @param _distributionInterval - distribution interval to get staking interval of
[codex:804845]    158	   * @return staking interval
[codex:804845]    159	   */
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Preparing to add lines around earmark and prefetch**
[codex:804845] exec
[codex:804845] /bin/bash -lc "nl -ba contracts/contracts/treasury/GovernorRewards.sol | sed -n '280,440p'" in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845]    280	
[codex:804845]    281	    require(_hints.length == length, "GovernorRewards: Incorrect number of hints given");
[codex:804845]    282	
[codex:804845]    283	    // Create snapshots array
[codex:804845]    284	    uint256[] memory snapshots = new uint256[](length);
[codex:804845]    285	
[codex:804845]    286	    // Loop through each requested snapshot and retrieve voting power
[codex:804845]    287	    for (uint256 i = 0; i < length; i += 1) {
[codex:804845]    288	      snapshots[i] = staking
[codex:804845]    289	        .accountSnapshotAt(
[codex:804845]    290	          _account,
[codex:804845]    291	          distributionIntervalToStakingInterval(_startingInterval + i),
[codex:804845]    292	          _hints[i]
[codex:804845]    293	        )
[codex:804845]    294	        .votingPower;
[codex:804845]    295	    }
[codex:804845]    296	
[codex:804845]    297	    // Return voting power
[codex:804845]    298	    return snapshots;
[codex:804845]    299	  }
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Searching initialization lines in key modules**
[codex:804845] exec
[codex:804845] /bin/bash -lc "nl -ba contracts/contracts/treasury/GovernorRewards.sol | sed -n '40,120p'" in /tmp/codex-multi-02qgutoy succeeded in 5ms:
[codex:804845]     40	  uint256 public STAKING_DEPLOY_TIME;
[codex:804845]     41	
[codex:804845]     42	  // Distribution interval, calculated at initialization time
[codex:804845]     43	  // solhint-disable-next-line var-name-mixedcase
[codex:804845]     44	  uint256 public DISTRIBUTION_INTERVAL;
[codex:804845]     45	
[codex:804845]     46	  // Number of basis points that equal 100%
[codex:804845]     47	  uint256 public constant BASIS_POINTS = 10000;
[codex:804845]     48	
[codex:804845]     49	  // Basis points to distribute each interval
[codex:804845]     50	  uint256 public intervalBP;
[codex:804845]     51	
[codex:804845]     52	  // Fee distribution claimed
[codex:804845]     53	  event Claim(
[codex:804845]     54	    IERC20 token,
[codex:804845]     55	    address account,
[codex:804845]     56	    uint256 amount,
[codex:804845]     57	    uint256 startInterval,
[codex:804845]     58	    uint256 endInterval
[codex:804845]     59	  );
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Checking constructor and initializers**
[codex:804845] exec
[codex:804845] /bin/bash -lc "nl -ba contracts/contracts/treasury/Treasury.sol | sed -n '1,140p'" in /tmp/codex-multi-02qgutoy succeeded in 6ms:
[codex:804845]      1	// SPDX-License-Identifier: UNLICENSED
[codex:804845]      2	pragma solidity ^0.8.7;
[codex:804845]      3	pragma abicoder v2;
[codex:804845]      4	
[codex:804845]      5	// OpenZeppelin v4
[codex:804845]      6	import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:804845]      7	import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:804845]      8	import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
[codex:804845]      9	import { AccessControlUpgradeable } from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
[codex:804845]     10	
[codex:804845]     11	/**
[codex:804845]     12	 * @title Treasury
[codex:804845]     13	 * @author Railgun Contributors
[codex:804845]     14	 * @notice Stores treasury funds for Railgun
[codex:804845]     15	 */
[codex:804845]     16	contract Treasury is Initializable, AccessControlUpgradeable {
[codex:804845]     17	  using SafeERC20 for IERC20;
[codex:804845]     18	
[codex:804845]     19	  bytes32 public constant TRANSFER_ROLE = keccak256("TRANSFER_ROLE");
[codex:804845]     20	
[codex:804845] 
[codex:804845] thinking
[codex:804845] **Summarizing vulnerability analysis and report drafting**
[codex:804845] 
[codex:804845] I’m compiling and clarifying several potential issues: a medium-severity state regression that enables repeated earmarking exploiting permissionless functions, a low-severity delegate snapshot omission causing stale voting power snapshots, and a low-severity upgradeability risk from uninitialized implementation contracts. I’m organizing detailed exploit scenarios, recommended mitigations, evidence locations, and categories to produce a precise JSON vulnerability report matching the required schema.
[codex:804845] codex
[codex:804845] {"no_findings":false,"summary":"Found 3 issues: a state-regression path in rewards prefetch/earmark that can trigger repeated treasury transfers, a staking snapshot inconsistency that undercounts delegate rewards, and missing initializer locks on upgradeable implementations.","findings":[{"severity":"medium","category":"access_control","title":"Prefetch can rewind interval pointers, enabling repeated earmarks and extra treasury transfers","exploit_scenario":"Any caller can call `prefetchGlobalSnapshots` with a small `_endingInterval` to set `nextSnapshotPreCalcInterval` backwards, then call `earmark` to rewind `nextEarmarkInterval`, and finally prefetch forward and earmark again. This re-earmarks previously processed intervals and transfers additional tokens from the Treasury into GovernorRewards, potentially locking funds for already-claimed intervals or forcing premature redistribution.","recommendation":"Enforce monotonic progression for `nextSnapshotPreCalcInterval` and `nextEarmarkInterval` (e.g., require `_startingInterval == nextSnapshotPreCalcInterval` and `_endingInterval >= nextSnapshotPreCalcInterval`, and revert if `_calcFromInterval > _calcToInterval`). Consider restricting prefetch/earmark to an authorized keeper or owner if public access is not intended, and avoid overwriting earmarks for already-processed intervals.","evidence":"`prefetchGlobalSnapshots` allows `_startingInterval <= nextSnapshotPreCalcInterval` and unconditionally sets `nextSnapshotPreCalcInterval = _endingInterval + 1`; `earmark` then uses these pointers and always updates `nextEarmarkInterval` even when the range is inverted.","locations":["contracts/contracts/treasury/GovernorRewards.sol:305","contracts/contracts/treasury/GovernorRewards.sol:339","contracts/contracts/treasury/GovernorRewards.sol:351","contracts/contracts/treasury/GovernorRewards.sol:377"]},{"severity":"low","category":"other","title":"Unlocking a delegated stake does not snapshot the delegate, skewing reward snapshots","exploit_scenario":"If a user unlocks a stake delegated to another address, the delegate’s voting power is reduced without taking a snapshot for the delegate. For the interval where the unlock happens, `accountSnapshotAt` can return the reduced voting power for the entire interval, underpaying the delegate’s rewards. A delegator can time unlocks late in an interval to grief a delegate’s rewards for that interval.","recommendation":"Snapshot the delegate before reducing voting power in `unlock` (similar to `delegate`), or otherwise ensure any voting power change records a snapshot for both source and destination accounts.","evidence":"`unlock` calls `snapshot(msg.sender)` only, then calls `moveVotingPower(stakes[msg.sender][_stakeID].delegate, address(0), ...)` without snapshotting the delegate.","locations":["contracts/contracts/governance/Staking.sol:463","contracts/contracts/governance/Staking.sol:467","contracts/contracts/governance/Staking.sol:472"]},{"severity":"low","category":"upgradeability","title":"Upgradeable implementations lack initializer lock","exploit_scenario":"Because the upgradeable contracts do not disable initializers in a constructor, anyone can call the initializer on the implementation contract and gain ownership/roles there. If assets are mistakenly sent to the implementation (or a proxy is left uninitialized), those privileges can be abused to move funds or reconfigure the implementation instance.","recommendation":"Add a constructor that calls `_disableInitializers()` to each upgradeable implementation, and ensure proxies are initialized immediately on deployment.","evidence":"Upgradeable contracts expose external `initializer` functions but do not lock initializers in a constructor.","locations":["contracts/contracts/treasury/GovernorRewards.sol:92","contracts/contracts/treasury/Treasury.sol:25"]}]}
[codex:804845] tokens used
[codex:804845] 84,484
[codex:804845] {"no_findings":false,"summary":"Found 3 issues: a state-regression path in rewards prefetch/earmark that can trigger repeated treasury transfers, a staking snapshot inconsistency that undercounts delegate rewards, and missing initializer locks on upgradeable implementations.","findings":[{"severity":"medium","category":"access_control","title":"Prefetch can rewind interval pointers, enabling repeated earmarks and extra treasury transfers","exploit_scenario":"Any caller can call `prefetchGlobalSnapshots` with a small `_endingInterval` to set `nextSnapshotPreCalcInterval` backwards, then call `earmark` to rewind `nextEarmarkInterval`, and finally prefetch forward and earmark again. This re-earmarks previously processed intervals and transfers additional tokens from the Treasury into GovernorRewards, potentially locking funds for already-claimed intervals or forcing premature redistribution.","recommendation":"Enforce monotonic progression for `nextSnapshotPreCalcInterval` and `nextEarmarkInterval` (e.g., require `_startingInterval == nextSnapshotPreCalcInterval` and `_endingInterval >= nextSnapshotPreCalcInterval`, and revert if `_calcFromInterval > _calcToInterval`). Consider restricting prefetch/earmark to an authorized keeper or owner if public access is not intended, and avoid overwriting earmarks for already-processed intervals.","evidence":"`prefetchGlobalSnapshots` allows `_startingInterval <= nextSnapshotPreCalcInterval` and unconditionally sets `nextSnapshotPreCalcInterval = _endingInterval + 1`; `earmark` then uses these pointers and always updates `nextEarmarkInterval` even when the range is inverted.","locations":["contracts/contracts/treasury/GovernorRewards.sol:305","contracts/contracts/treasury/GovernorRewards.sol:339","contracts/contracts/treasury/GovernorRewards.sol:351","contracts/contracts/treasury/GovernorRewards.sol:377"]},{"severity":"low","category":"other","title":"Unlocking a delegated stake does not snapshot the delegate, skewing reward snapshots","exploit_scenario":"If a user unlocks a stake delegated to another address, the delegate’s voting power is reduced without taking a snapshot for the delegate. For the interval where the unlock happens, `accountSnapshotAt` can return the reduced voting power for the entire interval, underpaying the delegate’s rewards. A delegator can time unlocks late in an interval to grief a delegate’s rewards for that interval.","recommendation":"Snapshot the delegate before reducing voting power in `unlock` (similar to `delegate`), or otherwise ensure any voting power change records a snapshot for both source and destination accounts.","evidence":"`unlock` calls `snapshot(msg.sender)` only, then calls `moveVotingPower(stakes[msg.sender][_stakeID].delegate, address(0), ...)` without snapshotting the delegate.","locations":["contracts/contracts/governance/Staking.sol:463","contracts/contracts/governance/Staking.sol:467","contracts/contracts/governance/Staking.sol:472"]},{"severity":"low","category":"upgradeability","title":"Upgradeable implementations lack initializer lock","exploit_scenario":"Because the upgradeable contracts do not disable initializers in a constructor, anyone can call the initializer on the implementation contract and gain ownership/roles there. If assets are mistakenly sent to the implementation (or a proxy is left uninitialized), those privileges can be abused to move funds or reconfigure the implementation instance.","recommendation":"Add a constructor that calls `_disableInitializers()` to each upgradeable implementation, and ensure proxies are initialized immediately on deployment.","evidence":"Upgradeable contracts expose external `initializer` functions but do not lock initializers in a constructor.","locations":["contracts/contracts/treasury/GovernorRewards.sol:92","contracts/contracts/treasury/Treasury.sol:25"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T03:06:22.007871+00:00",
        "returncode": 0
    },
    "summary": "Found 3 issues: a state-regression path in rewards prefetch/earmark that can trigger repeated treasury transfers, a staking snapshot inconsistency that undercounts delegate rewards, and missing initializer locks on upgradeable implementations.",
    "raw_final": {
        "summary": "Found 3 issues: a state-regression path in rewards prefetch/earmark that can trigger repeated treasury transfers, a staking snapshot inconsistency that undercounts delegate rewards, and missing initializer locks on upgradeable implementations.",
        "findings": [
            {
                "title": "Prefetch can rewind interval pointers, enabling repeated earmarks and extra treasury transfers",
                "category": "access_control",
                "evidence": "`prefetchGlobalSnapshots` allows `_startingInterval <= nextSnapshotPreCalcInterval` and unconditionally sets `nextSnapshotPreCalcInterval = _endingInterval + 1`; `earmark` then uses these pointers and always updates `nextEarmarkInterval` even when the range is inverted.",
                "severity": "medium",
                "locations": [
                    "contracts/contracts/treasury/GovernorRewards.sol:305",
                    "contracts/contracts/treasury/GovernorRewards.sol:339",
                    "contracts/contracts/treasury/GovernorRewards.sol:351",
                    "contracts/contracts/treasury/GovernorRewards.sol:377"
                ],
                "recommendation": "Enforce monotonic progression for `nextSnapshotPreCalcInterval` and `nextEarmarkInterval` (e.g., require `_startingInterval == nextSnapshotPreCalcInterval` and `_endingInterval >= nextSnapshotPreCalcInterval`, and revert if `_calcFromInterval > _calcToInterval`). Consider restricting prefetch/earmark to an authorized keeper or owner if public access is not intended, and avoid overwriting earmarks for already-processed intervals.",
                "exploit_scenario": "Any caller can call `prefetchGlobalSnapshots` with a small `_endingInterval` to set `nextSnapshotPreCalcInterval` backwards, then call `earmark` to rewind `nextEarmarkInterval`, and finally prefetch forward and earmark again. This re-earmarks previously processed intervals and transfers additional tokens from the Treasury into GovernorRewards, potentially locking funds for already-claimed intervals or forcing premature redistribution."
            },
            {
                "title": "Unlocking a delegated stake does not snapshot the delegate, skewing reward snapshots",
                "category": "other",
                "evidence": "`unlock` calls `snapshot(msg.sender)` only, then calls `moveVotingPower(stakes[msg.sender][_stakeID].delegate, address(0), ...)` without snapshotting the delegate.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/governance/Staking.sol:463",
                    "contracts/contracts/governance/Staking.sol:467",
                    "contracts/contracts/governance/Staking.sol:472"
                ],
                "recommendation": "Snapshot the delegate before reducing voting power in `unlock` (similar to `delegate`), or otherwise ensure any voting power change records a snapshot for both source and destination accounts.",
                "exploit_scenario": "If a user unlocks a stake delegated to another address, the delegate\u2019s voting power is reduced without taking a snapshot for the delegate. For the interval where the unlock happens, `accountSnapshotAt` can return the reduced voting power for the entire interval, underpaying the delegate\u2019s rewards. A delegator can time unlocks late in an interval to grief a delegate\u2019s rewards for that interval."
            },
            {
                "title": "Upgradeable implementations lack initializer lock",
                "category": "upgradeability",
                "evidence": "Upgradeable contracts expose external `initializer` functions but do not lock initializers in a constructor.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/treasury/GovernorRewards.sol:92",
                    "contracts/contracts/treasury/Treasury.sol:25"
                ],
                "recommendation": "Add a constructor that calls `_disableInitializers()` to each upgradeable implementation, and ensure proxies are initialized immediately on deployment.",
                "exploit_scenario": "Because the upgradeable contracts do not disable initializers in a constructor, anyone can call the initializer on the implementation contract and gain ownership/roles there. If assets are mistakenly sent to the implementation (or a proxy is left uninitialized), those privileges can be abused to move funds or reconfigure the implementation instance."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
7
EXT*/BALANCE
3
Total opcodes
5409
Flags
No heuristic flags raised.
View cast disassembly output
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 0x020b
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x6cefafaa
00000026: GT
00000027: PUSH2 0x012a
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0xbc3fea74
00000031: GT
00000032: PUSH2 0x00bd
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xe4860339
0000003c: GT
0000003d: PUSH2 0x008c
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xf2fde38b
00000047: GT
00000048: PUSH2 0x0071
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xf2fde38b
00000052: EQ
00000053: PUSH2 0x046e
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xf6cb3cd8
0000005d: EQ
0000005e: PUSH2 0x0481
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xfc6436f5
00000068: EQ
00000069: PUSH2 0x0494
0000006c: JUMPI
0000006d: PUSH1 0x00
0000006f: DUP1
00000070: REVERT
00000071: JUMPDEST
00000072: DUP1
00000073: PUSH4 0xe4860339
00000078: EQ
00000079: PUSH2 0x0438
0000007c: JUMPI
0000007d: DUP1
0000007e: PUSH4 0xe8d8c9ac
00000083: EQ
00000084: PUSH2 0x045b
00000087: JUMPI
00000088: PUSH1 0x00
0000008a: DUP1
0000008b: REVERT
0000008c: JUMPDEST
0000008d: DUP1
0000008e: PUSH4 0xbc3fea74
00000093: EQ
00000094: PUSH2 0x0400
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0xc4271eb6
0000009e: EQ
0000009f: PUSH2 0x0413
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xdc7c9a1f
000000a9: EQ
000000aa: PUSH2 0x041c
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xe1f1c4a7
000000b4: EQ
000000b5: PUSH2 0x042f
000000b8: JUMPI
000000b9: PUSH1 0x00
000000bb: DUP1
000000bc: REVERT
000000bd: JUMPDEST
000000be: DUP1
000000bf: PUSH4 0x95e50e4c
000000c4: GT
000000c5: PUSH2 0x00f9
000000c8: JUMPI
000000c9: DUP1
000000ca: PUSH4 0x95e50e4c
000000cf: EQ
000000d0: PUSH2 0x03b1
000000d3: JUMPI
000000d4: DUP1
000000d5: PUSH4 0x9beb549c
000000da: EQ
000000db: PUSH2 0x03ba
000000de: JUMPI
000000df: DUP1
000000e0: PUSH4 0x9eb0725e
000000e5: EQ
000000e6: PUSH2 0x03da
000000e9: JUMPI
000000ea: DUP1
000000eb: PUSH4 0xa6667ffc
000000f0: EQ
000000f1: PUSH2 0x03ed
000000f4: JUMPI
000000f5: PUSH1 0x00
000000f7: DUP1
000000f8: REVERT
000000f9: JUMPDEST
000000fa: DUP1
000000fb: PUSH4 0x6cefafaa
00000100: EQ
00000101: PUSH2 0x0372
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0x715018a6
0000010b: EQ
0000010c: PUSH2 0x0385
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x7a7736d3
00000116: EQ
00000117: PUSH2 0x038d
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0x8da5cb5b
00000121: EQ
00000122: PUSH2 0x03a0
00000125: JUMPI
00000126: PUSH1 0x00
00000128: DUP1
00000129: REVERT
0000012a: JUMPDEST
0000012b: DUP1
0000012c: PUSH4 0x36465e82
00000131: GT
00000132: PUSH2 0x01a2
00000135: JUMPI
00000136: DUP1
00000137: PUSH4 0x61d027b3
0000013c: GT
0000013d: PUSH2 0x0171
00000140: JUMPI
00000141: DUP1
00000142: PUSH4 0x61d027b3
00000147: EQ
00000148: PUSH2 0x0306
0000014b: JUMPI
0000014c: DUP1
0000014d: PUSH4 0x66dd5ce8
00000152: EQ
00000153: PUSH2 0x0319
00000156: JUMPI
00000157: DUP1
00000158: PUSH4 0x6c3824ef
0000015d: EQ
0000015e: PUSH2 0x032c
00000161: JUMPI
00000162: DUP1
00000163: PUSH4 0x6ccee549
00000168: EQ
00000169: PUSH2 0x033f
0000016c: JUMPI
0000016d: PUSH1 0x00
0000016f: DUP1
00000170: REVERT
00000171: JUMPDEST
00000172: DUP1
00000173: PUSH4 0x36465e82
00000178: EQ
00000179: PUSH2 0x02ac
0000017c: JUMPI
0000017d: DUP1
0000017e: PUSH4 0x413c65e5
00000183: EQ
00000184: PUSH2 0x02b5
00000187: JUMPI
00000188: DUP1
00000189: PUSH4 0x4ae05c7d
0000018e: EQ
0000018f: PUSH2 0x02c8
00000192: JUMPI
00000193: DUP1
00000194: PUSH4 0x4cf088d9
00000199: EQ
0000019a: PUSH2 0x02db
0000019d: JUMPI
0000019e: PUSH1 0x00
000001a0: DUP1
000001a1: REVERT
000001a2: JUMPDEST
000001a3: DUP1
000001a4: PUSH4 0x09a4a7d1
000001a9: GT
000001aa: PUSH2 0x01de
000001ad: JUMPI
000001ae: DUP1
000001af: PUSH4 0x09a4a7d1
000001b4: EQ
000001b5: PUSH2 0x0251
000001b8: JUMPI
000001b9: DUP1
000001ba: PUSH4 0x26aad31a
000001bf: EQ
000001c0: PUSH2 0x0271
000001c3: JUMPI
000001c4: DUP1
000001c5: PUSH4 0x286b3f46
000001ca: EQ
000001cb: PUSH2 0x0291
000001ce: JUMPI
000001cf: DUP1
000001d0: PUSH4 0x363487bc
000001d5: EQ
000001d6: PUSH2 0x02a4
000001d9: JUMPI
000001da: PUSH1 0x00
000001dc: DUP1
000001dd: REVERT
000001de: JUMPDEST
000001df: DUP1
000001e0: PUSH4 0x011de7aa
000001e5: EQ
000001e6: PUSH2 0x0210
000001e9: JUMPI
000001ea: DUP1
000001eb: PUSH4 0x0804a4ee
000001f0: EQ
000001f1: PUSH2 0x0236
000001f4: JUMPI
000001f5: DUP1
000001f6: PUSH4 0x087dceb0
000001fb: EQ
000001fc: PUSH2 0x0240
000001ff: JUMPI
00000200: DUP1
00000201: PUSH4 0x08b26b75
00000206: EQ
00000207: PUSH2 0x0248
0000020a: JUMPI
0000020b: JUMPDEST
0000020c: PUSH1 0x00
0000020e: DUP1
0000020f: REVERT
00000210: JUMPDEST
00000211: PUSH2 0x0223
00000214: PUSH2 0x021e
00000217: CALLDATASIZE
00000218: PUSH1 0x04
0000021a: PUSH2 0x1cf8
0000021d: JUMP
0000021e: JUMPDEST
0000021f: PUSH2 0x04bf
00000222: JUMP
00000223: JUMPDEST
00000224: PUSH1 0x40
00000226: MLOAD
00000227: SWAP1
00000228: DUP2
00000229: MSTORE
0000022a: PUSH1 0x20
0000022c: ADD
0000022d: JUMPDEST
0000022e: PUSH1 0x40
00000230: MLOAD
00000231: DUP1
00000232: SWAP2
00000233: SUB
00000234: SWAP1
00000235: RETURN
00000236: JUMPDEST
00000237: PUSH2 0x023e
0000023a: PUSH2 0x055e
0000023d: JUMP
0000023e: JUMPDEST
0000023f: STOP
00000240: JUMPDEST
00000241: PUSH2 0x0223
00000244: PUSH1 0x0e
00000246: DUP2
00000247: JUMP
00000248: JUMPDEST
00000249: PUSH2 0x0223
0000024c: PUSH1 0x68
0000024e: SLOAD
0000024f: DUP2
00000250: JUMP
00000251: JUMPDEST
00000252: PUSH2 0x0223
00000255: PUSH2 0x025f
00000258: CALLDATASIZE
00000259: PUSH1 0x04
0000025b: PUSH2 0x1cf8
0000025e: JUMP
0000025f: JUMPDEST
00000260: PUSH1 0x6f
00000262: PUSH1 0x20
00000264: MSTORE
00000265: PUSH1 0x00
00000267: SWAP1
00000268: DUP2
00000269: MSTORE
0000026a: PUSH1 0x40
0000026c: SWAP1
0000026d: KECCAK256
0000026e: SLOAD
0000026f: DUP2
00000270: JUMP
00000271: JUMPDEST
00000272: PUSH2 0x0284
00000275: PUSH2 0x027f
00000278: CALLDATASIZE
00000279: PUSH1 0x04
0000027b: PUSH2 0x1d80
0000027e: JUMP
0000027f: JUMPDEST
00000280: PUSH2 0x05ea
00000283: JUMP
00000284: JUMPDEST
00000285: PUSH1 0x40
00000287: MLOAD
00000288: PUSH2 0x022d
0000028b: SWAP2
0000028c: SWAP1
0000028d: PUSH2 0x1e2b
00000290: JUMP
00000291: JUMPDEST
00000292: PUSH2 0x0284
00000295: PUSH2 0x029f
00000298: CALLDATASIZE
00000299: PUSH1 0x04
0000029b: PUSH2 0x1e6f
0000029e: JUMP
0000029f: JUMPDEST
000002a0: PUSH2 0x08c1
000002a3: JUMP
000002a4: JUMPDEST
000002a5: PUSH2 0x0223
000002a8: PUSH2 0x0aa7
000002ab: JUMP
000002ac: JUMPDEST
000002ad: PUSH2 0x0223
000002b0: PUSH1 0x6e
000002b2: SLOAD
000002b3: DUP2
000002b4: JUMP
000002b5: JUMPDEST
000002b6: PUSH2 0x0223
000002b9: PUSH2 0x02c3
000002bc: CALLDATASIZE
000002bd: PUSH1 0x04
000002bf: PUSH2 0x1cf8
000002c2: JUMP
000002c3: JUMPDEST
000002c4: PUSH2 0x0ab7
000002c7: JUMP
000002c8: JUMPDEST
000002c9: PUSH2 0x023e
000002cc: PUSH2 0x02d6
000002cf: CALLDATASIZE
000002d0: PUSH1 0x04
000002d2: PUSH2 0x1ed9
000002d5: JUMP
000002d6: JUMPDEST
000002d7: PUSH2 0x0ac4
000002da: JUMP
000002db: JUMPDEST
000002dc: PUSH1 0x65
000002de: SLOAD
000002df: PUSH2 0x02ee
000002e2: SWAP1
000002e3: PUSH1 0x01
000002e5: PUSH1 0x01
000002e7: PUSH1 0xa0
000002e9: SHL
000002ea: SUB
000002eb: AND
000002ec: DUP2
000002ed: JUMP
000002ee: JUMPDEST
000002ef: PUSH1 0x40
000002f1: MLOAD
000002f2: PUSH1 0x01
000002f4: PUSH1 0x01
000002f6: PUSH1 0xa0
000002f8: SHL
000002f9: SUB
000002fa: SWAP1
000002fb: SWAP2
000002fc: AND
000002fd: DUP2
000002fe: MSTORE
000002ff: PUSH1 0x20
00000301: ADD
00000302: PUSH2 0x022d
00000305: JUMP
00000306: JUMPDEST
00000307: PUSH1 0x66
00000309: SLOAD
0000030a: PUSH2 0x02ee
0000030d: SWAP1
0000030e: PUSH1 0x01
00000310: PUSH1 0x01
00000312: PUSH1 0xa0
00000314: SHL
00000315: SUB
00000316: AND
00000317: DUP2
00000318: JUMP
00000319: JUMPDEST
0000031a: PUSH2 0x023e
0000031d: PUSH2 0x0327
00000320: CALLDATASIZE
00000321: PUSH1 0x04
00000323: PUSH2 0x1cf8
00000326: JUMP
00000327: JUMPDEST
00000328: PUSH2 0x0b90
0000032b: JUMP
0000032c: JUMPDEST
0000032d: PUSH2 0x023e
00000330: PUSH2 0x033a
00000333: CALLDATASIZE
00000334: PUSH1 0x04
00000336: PUSH2 0x1ed9
00000339: JUMP
0000033a: JUMPDEST
0000033b: PUSH2 0x0b9d
0000033e: JUMP
0000033f: JUMPDEST
00000340: PUSH2 0x0362
00000343: PUSH2 0x034d
00000346: CALLDATASIZE
00000347: PUSH1 0x04
00000349: PUSH2 0x1cf8
0000034c: JUMP
0000034d: JUMPDEST
0000034e: PUSH1 0x70
00000350: PUSH1 0x20
00000352: MSTORE
00000353: PUSH1 0x00
00000355: SWAP1
00000356: DUP2
00000357: MSTORE
00000358: PUSH1 0x40
0000035a: SWAP1
0000035b: KECCAK256
0000035c: SLOAD
0000035d: PUSH1 0xff
0000035f: AND
00000360: DUP2
00000361: JUMP
00000362: JUMPDEST
00000363: PUSH1 0x40
00000365: MLOAD
00000366: SWAP1
00000367: ISZERO
00000368: ISZERO
00000369: DUP2
0000036a: MSTORE
0000036b: PUSH1 0x20
0000036d: ADD
0000036e: PUSH2 0x022d
00000371: JUMP
00000372: JUMPDEST
00000373: PUSH2 0x023e
00000376: PUSH2 0x0380
00000379: CALLDATASIZE
0000037a: PUSH1 0x04
0000037c: PUSH2 0x1cf8
0000037f: JUMP
00000380: JUMPDEST
00000381: PUSH2 0x0c17
00000384: JUMP
00000385: JUMPDEST
00000386: PUSH2 0x023e
00000389: PUSH2 0x0c3a
0000038c: JUMP
0000038d: JUMPDEST
0000038e: PUSH2 0x023e
00000391: PUSH2 0x039b
00000394: CALLDATASIZE
00000395: PUSH1 0x04
00000397: PUSH2 0x1f1b
0000039a: JUMP
0000039b: JUMPDEST
0000039c: PUSH2 0x0c4e
0000039f: JUMP
000003a0: JUMPDEST
000003a1: PUSH1 0x33
000003a3: SLOAD
000003a4: PUSH1 0x01
000003a6: PUSH1 0x01
000003a8: PUSH1 0xa0
000003aa: SHL
000003ab: SUB
000003ac: AND
000003ad: PUSH2 0x02ee
000003b0: JUMP
000003b1: JUMPDEST
000003b2: PUSH2 0x0223
000003b5: PUSH1 0x69
000003b7: SLOAD
000003b8: DUP2
000003b9: JUMP
000003ba: JUMPDEST
000003bb: PUSH2 0x0223
000003be: PUSH2 0x03c8
000003c1: CALLDATASIZE
000003c2: PUSH1 0x04
000003c4: PUSH2 0x1fb3
000003c7: JUMP
000003c8: JUMPDEST
000003c9: PUSH1 0x6d
000003cb: PUSH1 0x20
000003cd: MSTORE
000003ce: PUSH1 0x00
000003d0: SWAP1
000003d1: DUP2
000003d2: MSTORE
000003d3: PUSH1 0x40
000003d5: SWAP1
000003d6: KECCAK256
000003d7: SLOAD
000003d8: DUP2
000003d9: JUMP
000003da: JUMPDEST
000003db: PUSH2 0x023e
000003de: PUSH2 0x03e8
000003e1: CALLDATASIZE
000003e2: PUSH1 0x04
000003e4: PUSH2 0x1fd7
000003e7: JUMP
000003e8: JUMPDEST
000003e9: PUSH2 0x0f0e
000003ec: JUMP
000003ed: JUMPDEST
000003ee: PUSH2 0x0284
000003f1: PUSH2 0x03fb
000003f4: CALLDATASIZE
000003f5: PUSH1 0x04
000003f7: PUSH2 0x202d
000003fa: JUMP
000003fb: JUMPDEST
000003fc: PUSH2 0x11a0
000003ff: JUMP
00000400: JUMPDEST
00000401: PUSH2 0x023e
00000404: PUSH2 0x040e
00000407: CALLDATASIZE
00000408: PUSH1 0x04
0000040a: PUSH2 0x2080
0000040d: JUMP
0000040e: JUMPDEST
0000040f: PUSH2 0x1360
00000412: JUMP
00000413: JUMPDEST
00000414: PUSH2 0x0223
00000417: PUSH1 0x67
00000419: SLOAD
0000041a: DUP2
0000041b: JUMP
0000041c: JUMPDEST
0000041d: PUSH2 0x023e
00000420: PUSH2 0x042a
00000423: CALLDATASIZE
00000424: PUSH1 0x04
00000426: PUSH2 0x1cf8
00000429: JUMP
0000042a: JUMPDEST
0000042b: PUSH2 0x1537
0000042e: JUMP
0000042f: JUMPDEST
00000430: PUSH2 0x0223
00000433: PUSH2 0x2710
00000436: DUP2
00000437: JUMP
00000438: JUMPDEST
00000439: PUSH2 0x0362
0000043c: PUSH2 0x0446
0000043f: CALLDATASIZE
00000440: PUSH1 0x04
00000442: PUSH2 0x1fb3
00000445: JUMP
00000446: JUMPDEST
00000447: PUSH1 0x6c
00000449: PUSH1 0x20
0000044b: MSTORE
0000044c: PUSH1 0x00
0000044e: SWAP1
0000044f: DUP2
00000450: MSTORE
00000451: PUSH1 0x40
00000453: SWAP1
00000454: KECCAK256
00000455: SLOAD
00000456: PUSH1 0xff
00000458: AND
00000459: DUP2
0000045a: JUMP
0000045b: JUMPDEST
0000045c: PUSH2 0x023e
0000045f: PUSH2 0x0469
00000462: CALLDATASIZE
00000463: PUSH1 0x04
00000465: PUSH2 0x1fb3
00000468: JUMP
00000469: JUMPDEST
0000046a: PUSH2 0x1557
0000046d: JUMP
0000046e: JUMPDEST
0000046f: PUSH2 0x023e
00000472: PUSH2 0x047c
00000475: CALLDATASIZE
00000476: PUSH1 0x04
00000478: PUSH2 0x1fb3
0000047b: JUMP
0000047c: JUMPDEST
0000047d: PUSH2 0x17d1
00000480: JUMP
00000481: JUMPDEST
00000482: PUSH2 0x0362
00000485: PUSH2 0x048f
00000488: CALLDATASIZE
00000489: PUSH1 0x04
0000048b: PUSH2 0x2103
0000048e: JUMP
0000048f: JUMPDEST
00000490: PUSH2 0x185e
00000493: JUMP
00000494: JUMPDEST
00000495: PUSH2 0x0223
00000498: PUSH2 0x04a2
0000049b: CALLDATASIZE
0000049c: PUSH1 0x04
0000049e: PUSH2 0x2144
000004a1: JUMP
000004a2: JUMPDEST
000004a3: PUSH1 0x6b
000004a5: PUSH1 0x20
000004a7: SWAP1
000004a8: DUP2
000004a9: MSTORE
000004aa: PUSH1 0x00
000004ac: SWAP3
000004ad: DUP4
000004ae: MSTORE
000004af: PUSH1 0x40
000004b1: DUP1
000004b2: DUP5
000004b3: KECCAK256
000004b4: SWAP1
000004b5: SWAP2
000004b6: MSTORE
000004b7: SWAP1
000004b8: DUP3
000004b9: MSTORE
000004ba: SWAP1
000004bb: KECCAK256
000004bc: SLOAD
000004bd: DUP2
000004be: JUMP
000004bf: JUMPDEST
000004c0: PUSH1 0x00
000004c2: PUSH1 0x67
000004c4: SLOAD
000004c5: DUP3
000004c6: LT
000004c7: ISZERO
000004c8: PUSH2 0x053e
000004cb: JUMPI
000004cc: PUSH1 0x40
000004ce: MLOAD
000004cf: PUSH3 0x461bcd
000004d3: PUSH1 0xe5
000004d5: SHL
000004d6: DUP2
000004d7: MSTORE
000004d8: PUSH1 0x20
000004da: PUSH1 0x04
000004dc: DUP3
000004dd: ADD
000004de: MSTORE
000004df: PUSH1 0x3f
000004e1: PUSH1 0x24
000004e3: DUP3
000004e4: ADD
000004e5: MSTORE
000004e6: PUSH32 0x476f7665726e6f72526577617264733a205265717565737465642074696d6520
00000507: PUSH1 0x44
00000509: DUP3
0000050a: ADD
0000050b: MSTORE
0000050c: PUSH32 0x6973206265666f726520636f6e747261637420776173206465706c6f79656400
0000052d: PUSH1 0x64
0000052f: DUP3
00000530: ADD
00000531: MSTORE
00000532: PUSH1 0x84
00000534: ADD
00000535: JUMPDEST
00000536: PUSH1 0x40
00000538: MLOAD
00000539: DUP1
0000053a: SWAP2
0000053b: SUB
0000053c: SWAP1
0000053d: REVERT
0000053e: JUMPDEST
0000053f: PUSH1 0x68
00000541: SLOAD
00000542: PUSH1 0x67
00000544: SLOAD
00000545: PUSH2 0x054e
00000548: SWAP1
00000549: DUP5
0000054a: PUSH2 0x2186
0000054d: JUMP
0000054e: JUMPDEST
0000054f: PUSH2 0x0558
00000552: SWAP2
00000553: SWAP1
00000554: PUSH2 0x2199
00000557: JUMP
00000558: JUMPDEST
00000559: SWAP3
0000055a: SWAP2
0000055b: POP
0000055c: POP
0000055d: JUMP
0000055e: JUMPDEST
0000055f: PUSH32 0x8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa0248711450
00000580: DUP1
00000581: SLOAD
00000582: PUSH1 0xff
00000584: NOT
00000585: AND
00000586: PUSH1 0x01
00000588: OR
00000589: SWAP1
0000058a: SSTORE
0000058b: CALLER
0000058c: PUSH1 0x00
0000058e: SWAP1
0000058f: DUP2
00000590: MSTORE
00000591: PUSH1 0x70
00000593: PUSH1 0x20
00000595: MSTORE
00000596: PUSH1 0x40
00000598: SWAP1
00000599: KECCAK256
0000059a: SLOAD
0000059b: DUP1
0000059c: PUSH2 0x05e7
0000059f: JUMPI
000005a0: PUSH1 0x40
000005a2: MLOAD
000005a3: PUSH3 0x461bcd
000005a7: PUSH1 0xe5
000005a9: SHL
000005aa: DUP2
000005ab: MSTORE
000005ac: PUSH1 0x20
000005ae: PUSH1 0x04
000005b0: DUP3
000005b1: ADD
000005b2: MSTORE
000005b3: PUSH1 0x1c
000005b5: PUSH1 0x24
000005b7: DUP3
000005b8: ADD
000005b9: MSTORE
000005ba: PUSH32 0x5261696c67756e4c6f6769633a20556e7361666520766563746f727300000000
000005db: PUSH1 0x44
000005dd: DUP3
000005de: ADD
000005df: MSTORE
000005e0: PUSH1 0x64
000005e2: ADD
000005e3: PUSH2 0x0535
000005e6: JUMP
000005e7: JUMPDEST
000005e8: POP
000005e9: JUMP
000005ea: JUMPDEST
000005eb: PUSH1 0x60
000005ed: PUSH1 0x00
000005ef: PUSH2 0x05fb
000005f2: DUP8
000005f3: DUP8
000005f4: DUP11
000005f5: DUP9
000005f6: DUP9
000005f7: PUSH2 0x08c1
000005fa: JUMP
000005fb: JUMPDEST
000005fc: SWAP1
000005fd: POP
000005fe: PUSH1 0x00
00000600: DUP10
00000601: PUSH8 0xffffffffffffffff
0000060a: DUP2
0000060b: GT
0000060c: ISZERO
0000060d: PUSH2 0x0618
00000610: JUMPI
00000611: PUSH2 0x0618
00000614: PUSH2 0x21bb
00000617: JUMP
00000618: JUMPDEST
00000619: PUSH1 0x40
0000061b: MLOAD
0000061c: SWAP1
0000061d: DUP1
0000061e: DUP3
0000061f: MSTORE
00000620: DUP1
00000621: PUSH1 0x20
00000623: MUL
00000624: PUSH1 0x20
00000626: ADD
00000627: DUP3
00000628: ADD
00000629: PUSH1 0x40
0000062b: MSTORE
0000062c: DUP1
0000062d: ISZERO
0000062e: PUSH2 0x0641
00000631: JUMPI
00000632: DUP2
00000633: PUSH1 0x20
00000635: ADD
00000636: PUSH1 0x20
00000638: DUP3
00000639: MUL
0000063a: DUP1
0000063b: CALLDATASIZE
0000063c: DUP4
0000063d: CALLDATACOPY
0000063e: ADD
0000063f: SWAP1
00000640: POP
00000641: JUMPDEST
00000642: POP
00000643: SWAP1
00000644: POP
00000645: PUSH1 0x00
00000647: JUMPDEST
00000648: DUP11
00000649: DUP2
0000064a: LT
0000064b: ISZERO
0000064c: PUSH2 0x08b2
0000064f: JUMPI
00000650: PUSH1 0x6d
00000652: PUSH1 0x00
00000654: DUP14
00000655: DUP14
00000656: DUP5
00000657: DUP2
00000658: DUP2
00000659: LT
0000065a: PUSH2 0x0665
0000065d: JUMPI
0000065e: PUSH2 0x0665
00000661: PUSH2 0x21d1
00000664: JUMP
00000665: JUMPDEST
00000666: SWAP1
00000667: POP
00000668: PUSH1 0x20
0000066a: MUL
0000066b: ADD
0000066c: PUSH1 0x20
0000066e: DUP2
0000066f: ADD
00000670: SWAP1
00000671: PUSH2 0x067a
00000674: SWAP2
00000675: SWAP1
00000676: PUSH2 0x1fb3
00000679: JUMP
0000067a: JUMPDEST
0000067b: PUSH1 0x01
0000067d: PUSH1 0x01
0000067f: PUSH1 0xa0
00000681: SHL
00000682: SUB
00000683: AND
00000684: PUSH1 0x01
00000686: PUSH1 0x01
00000688: PUSH1 0xa0
0000068a: SHL
0000068b: SUB
0000068c: AND
0000068d: DUP2
0000068e: MSTORE
0000068f: PUSH1 0x20
00000691: ADD
00000692: SWAP1
00000693: DUP2
00000694: MSTORE
00000695: PUSH1 0x20
00000697: ADD
00000698: PUSH1 0x00
0000069a: KECCAK256
0000069b: SLOAD
0000069c: DUP9
0000069d: LT
0000069e: PUSH2 0x070f
000006a1: JUMPI
000006a2: PUSH1 0x40
000006a4: MLOAD
000006a5: PUSH3 0x461bcd
000006a9: PUSH1 0xe5
000006ab: SHL
000006ac: DUP2
000006ad: MSTORE
000006ae: PUSH1 0x20
000006b0: PUSH1 0x04
000006b2: DUP3
000006b3: ADD
000006b4: MSTORE
000006b5: PUSH1 0x3e
000006b7: PUSH1 0x24
000006b9: DUP3
000006ba: ADD
000006bb: MSTORE
000006bc: PUSH32 0x476f7665726e6f72526577617264733a20547269656420746f20636c61696d20
000006dd: PUSH1 0x44
000006df: DUP3
000006e0: ADD
000006e1: MSTORE
000006e2: PUSH32 0x6265796f6e64206c617374206561726d61726b656420696e74657276616c0000
00000703: PUSH1 0x64
00000705: DUP3
00000706: ADD
00000707: MSTORE
00000708: PUSH1 0x84
0000070a: ADD
0000070b: PUSH2 0x0535
0000070e: JUMP
0000070f: JUMPDEST
00000710: PUSH1 0x01
00000712: PUSH1 0x01
00000714: PUSH1 0xa0
00000716: SHL
00000717: SUB
00000718: DUP11
00000719: AND
0000071a: PUSH1 0x00
0000071c: SWAP1
0000071d: DUP2
0000071e: MSTORE
0000071f: PUSH1 0x6a
00000721: PUSH1 0x20
00000723: MSTORE
00000724: PUSH1 0x40
00000726: DUP2
00000727: KECCAK256
00000728: DUP2
00000729: DUP15
0000072a: DUP15
0000072b: DUP6
0000072c: DUP2
0000072d: DUP2
0000072e: LT
0000072f: PUSH2 0x073a
00000732: JUMPI
00000733: PUSH2 0x073a
00000736: PUSH2 0x21d1
00000739: JUMP
0000073a: JUMPDEST
0000073b: SWAP1
0000073c: POP
0000073d: PUSH1 0x20
0000073f: MUL
00000740: ADD
00000741: PUSH1 0x20
00000743: DUP2
00000744: ADD
00000745: SWAP1
00000746: PUSH2 0x074f
00000749: SWAP2
0000074a: SWAP1
0000074b: PUSH2 0x1fb3
0000074e: JUMP
0000074f: JUMPDEST
00000750: PUSH1 0x01
00000752: PUSH1 0x01
00000754: PUSH1 0xa0
00000756: SHL
00000757: SUB
00000758: AND
00000759: PUSH1 0x01
0000075b: PUSH1 0x01
0000075d: PUSH1 0xa0
0000075f: SHL
00000760: SUB
00000761: AND
00000762: DUP2
00000763: MSTORE
00000764: PUSH1 0x20
00000766: ADD
00000767: SWAP1
00000768: DUP2
00000769: MSTORE
0000076a: PUSH1 0x20
0000076c: ADD
0000076d: PUSH1 0x00
0000076f: KECCAK256
00000770: SWAP1
00000771: POP
00000772: PUSH1 0x00
00000774: PUSH1 0x6b
00000776: PUSH1 0x00
00000778: DUP16
00000779: DUP16
0000077a: DUP7
0000077b: DUP2
0000077c: DUP2
0000077d: LT
0000077e: PUSH2 0x0789
00000781: JUMPI
00000782: PUSH2 0x0789
00000785: PUSH2 0x21d1
00000788: JUMP
00000789: JUMPDEST
0000078a: SWAP1
0000078b: POP
0000078c: PUSH1 0x20
0000078e: MUL
0000078f: ADD
00000790: PUSH1 0x20
00000792: DUP2
00000793: ADD
00000794: SWAP1
00000795: PUSH2 0x079e
00000798: SWAP2
00000799: SWAP1
0000079a: PUSH2 0x1fb3
0000079d: JUMP
0000079e: JUMPDEST
0000079f: PUSH1 0x01
000007a1: PUSH1 0x01
000007a3: PUSH1 0xa0
000007a5: SHL
000007a6: SUB
000007a7: AND
000007a8: DUP2
000007a9: MSTORE
000007aa: PUSH1 0x20
000007ac: DUP2
000007ad: ADD
000007ae: SWAP2
000007af: SWAP1
000007b0: SWAP2
000007b1: MSTORE
000007b2: PUSH1 0x40
000007b4: ADD
000007b5: PUSH1 0x00
000007b7: SWAP1
000007b8: DUP2
000007b9: KECCAK256
000007ba: SWAP2
000007bb: POP
000007bc: DUP12
000007bd: JUMPDEST
000007be: DUP12
000007bf: DUP2
000007c0: GT
000007c1: PUSH2 0x087b
000007c4: JUMPI
000007c5: PUSH1 0x00
000007c7: DUP2
000007c8: DUP2
000007c9: MSTORE
000007ca: PUSH1 0x6f
000007cc: PUSH1 0x20
000007ce: MSTORE
000007cf: PUSH1 0x40
000007d1: SWAP1
000007d2: KECCAK256
000007d3: SLOAD
000007d4: ISZERO
000007d5: PUSH2 0x0869
000007d8: JUMPI
000007d9: DUP9
000007da: ISZERO
000007db: DUP1
000007dc: PUSH2 0x07fe
000007df: JUMPI
000007e0: POP
000007e1: PUSH1 0x08
000007e3: DUP2
000007e4: SWAP1
000007e5: SHR
000007e6: PUSH1 0x00
000007e8: SWAP1
000007e9: DUP2
000007ea: MSTORE
000007eb: PUSH1 0x20
000007ed: DUP6
000007ee: SWAP1
000007ef: MSTORE
000007f0: PUSH1 0x40
000007f2: SWAP1
000007f3: KECCAK256
000007f4: SLOAD
000007f5: PUSH1 0x01
000007f7: PUSH1 0xff
000007f9: DUP4
000007fa: AND
000007fb: SHL
000007fc: AND
000007fd: ISZERO
000007fe: JUMPDEST
000007ff: ISZERO
00000800: PUSH2 0x0869
00000803: JUMPI
00000804: PUSH1 0x00
00000806: DUP2
00000807: DUP2
00000808: MSTORE
00000809: PUSH1 0x6f
0000080b: PUSH1 0x20
0000080d: MSTORE
0000080e: PUSH1 0x40
00000810: SWAP1
00000811: KECCAK256
00000812: SLOAD
00000813: DUP8
00000814: PUSH2 0x081d
00000817: DUP16
00000818: DUP5
00000819: PUSH2 0x2186
0000081c: JUMP
0000081d: JUMPDEST
0000081e: DUP2
0000081f: MLOAD
00000820: DUP2
00000821: LT
00000822: PUSH2 0x082d
00000825: JUMPI
00000826: PUSH2 0x082d
00000829: PUSH2 0x21d1
0000082c: JUMP
0000082d: JUMPDEST
0000082e: PUSH1 0x20
00000830: MUL
00000831: PUSH1 0x20
00000833: ADD
00000834: ADD
00000835: MLOAD
00000836: DUP5
00000837: PUSH1 0x00
00000839: DUP5
0000083a: DUP2
0000083b: MSTORE
0000083c: PUSH1 0x20
0000083e: ADD
0000083f: SWAP1
00000840: DUP2
00000841: MSTORE
00000842: PUSH1 0x20
00000844: ADD
00000845: PUSH1 0x00
00000847: KECCAK256
00000848: SLOAD
00000849: PUSH2 0x0852
0000084c: SWAP2
0000084d: SWAP1
0000084e: PUSH2 0x21e7
00000851: JUMP
00000852: JUMPDEST
00000853: PUSH2 0x085c
00000856: SWAP2
00000857: SWAP1
00000858: PUSH2 0x2199
0000085b: JUMP
0000085c: JUMPDEST
0000085d: PUSH2 0x0866
00000860: SWAP1
00000861: DUP4
00000862: PUSH2 0x21fe
00000865: JUMP
00000866: JUMPDEST
00000867: SWAP2
00000868: POP
00000869: JUMPDEST
0000086a: PUSH2 0x0874
0000086d: PUSH1 0x01
0000086f: DUP3
00000870: PUSH2 0x21fe
00000873: JUMP
00000874: JUMPDEST
00000875: SWAP1
00000876: POP
00000877: PUSH2 0x07bd
0000087a: JUMP
0000087b: JUMPDEST
0000087c: POP
0000087d: DUP1
0000087e: DUP6
0000087f: DUP6
00000880: DUP2
00000881: MLOAD
00000882: DUP2
00000883: LT
00000884: PUSH2 0x088f
00000887: JUMPI
00000888: PUSH2 0x088f
0000088b: PUSH2 0x21d1
0000088e: JUMP
0000088f: JUMPDEST
00000890: PUSH1 0x20
00000892: MUL
00000893: PUSH1 0x20
00000895: ADD
00000896: ADD
00000897: DUP2
00000898: DUP2
00000899: MSTORE
0000089a: POP
0000089b: POP
0000089c: POP
0000089d: POP
0000089e: POP
0000089f: PUSH1 0x01
000008a1: DUP2
000008a2: PUSH2 0x08ab
000008a5: SWAP2
000008a6: SWAP1
000008a7: PUSH2 0x21fe
000008aa: JUMP
000008ab: JUMPDEST
000008ac: SWAP1
000008ad: POP
000008ae: PUSH2 0x0647
000008b1: JUMP
000008b2: JUMPDEST
000008b3: POP
000008b4: SWAP11
000008b5: SWAP10
000008b6: POP
000008b7: POP
000008b8: POP
000008b9: POP
000008ba: POP
000008bb: POP
000008bc: POP
000008bd: POP
000008be: POP
000008bf: POP
000008c0: JUMP
000008c1: JUMPDEST
000008c2: PUSH1 0x60
000008c4: PUSH1 0x00
000008c6: PUSH2 0x08cf
000008c9: DUP8
000008ca: DUP8
000008cb: PUSH2 0x2186
000008ce: JUMP
000008cf: JUMPDEST
000008d0: PUSH2 0x08da
000008d3: SWAP1
000008d4: PUSH1 0x01
000008d6: PUSH2 0x21fe
000008d9: JUMP
000008da: JUMPDEST
000008db: SWAP1
000008dc: POP
000008dd: DUP3
000008de: DUP2
000008df: EQ
000008e0: PUSH2 0x0951
000008e3: JUMPI
000008e4: PUSH1 0x40
000008e6: MLOAD
000008e7: PUSH3 0x461bcd
000008eb: PUSH1 0xe5
000008ed: SHL
000008ee: DUP2
000008ef: MSTORE
000008f0: PUSH1 0x20
000008f2: PUSH1 0x04
000008f4: DUP3
000008f5: ADD
000008f6: MSTORE
000008f7: PUSH1 0x30
000008f9: PUSH1 0x24
000008fb: DUP3
000008fc: ADD
000008fd: MSTORE
000008fe: PUSH32 0x476f7665726e6f72526577617264733a20496e636f7272656374206e756d6265
0000091f: PUSH1 0x44
00000921: DUP3
00000922: ADD
00000923: MSTORE
00000924: PUSH32 0x72206f662068696e747320676976656e00000000000000000000000000000000
00000945: PUSH1 0x64
00000947: DUP3
00000948: ADD
00000949: MSTORE
0000094a: PUSH1 0x84
0000094c: ADD
0000094d: PUSH2 0x0535
00000950: JUMP
00000951: JUMPDEST
00000952: PUSH1 0x00
00000954: DUP2
00000955: PUSH8 0xffffffffffffffff
0000095e: DUP2
0000095f: GT
00000960: ISZERO
00000961: PUSH2 0x096c
00000964: JUMPI
00000965: PUSH2 0x096c
00000968: PUSH2 0x21bb
0000096b: JUMP
0000096c: JUMPDEST
0000096d: PUSH1 0x40
0000096f: MLOAD
00000970: SWAP1
00000971: DUP1
00000972: DUP3
00000973: MSTORE
00000974: DUP1
00000975: PUSH1 0x20
00000977: MUL
00000978: PUSH1 0x20
0000097a: ADD
0000097b: DUP3
0000097c: ADD
0000097d: PUSH1 0x40
0000097f: MSTORE
00000980: DUP1
00000981: ISZERO
00000982: PUSH2 0x0995
00000985: JUMPI
00000986: DUP2
00000987: PUSH1 0x20
00000989: ADD
0000098a: PUSH1 0x20
0000098c: DUP3
0000098d: MUL
0000098e: DUP1
0000098f: CALLDATASIZE
00000990: DUP4
00000991: CALLDATACOPY
00000992: ADD
00000993: SWAP1
00000994: POP
00000995: JUMPDEST
00000996: POP
00000997: SWAP1
00000998: POP
00000999: PUSH1 0x00
0000099b: JUMPDEST
0000099c: DUP3
0000099d: DUP2
0000099e: LT
0000099f: ISZERO
000009a0: PUSH2 0x0a9b
000009a3: JUMPI
000009a4: PUSH1 0x65
000009a6: SLOAD
000009a7: PUSH1 0x01
000009a9: PUSH1 0x01
000009ab: PUSH1 0xa0
000009ad: SHL
000009ae: SUB
000009af: AND
000009b0: PUSH4 0x08d465e6
000009b5: DUP9
000009b6: PUSH2 0x09c2
000009b9: PUSH2 0x02c3
000009bc: DUP6
000009bd: DUP15
000009be: PUSH2 0x21fe
000009c1: JUMP
000009c2: JUMPDEST
000009c3: DUP10
000009c4: DUP10
000009c5: DUP7
000009c6: DUP2
000009c7: DUP2
000009c8: LT
000009c9: PUSH2 0x09d4
000009cc: JUMPI
000009cd: PUSH2 0x09d4
000009d0: PUSH2 0x21d1
000009d3: JUMP
000009d4: JUMPDEST
000009d5: PUSH1 0x40
000009d7: MLOAD
000009d8: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000009f9: PUSH1 0xe0
000009fb: DUP9
000009fc: SWAP1
000009fd: SHL
000009fe: AND
000009ff: DUP2
00000a00: MSTORE
00000a01: PUSH1 0x01
00000a03: PUSH1 0x01
00000a05: PUSH1 0xa0
00000a07: SHL
00000a08: SUB
00000a09: SWAP1
00000a0a: SWAP6
00000a0b: AND
00000a0c: PUSH1 0x04
00000a0e: DUP7
00000a0f: ADD
00000a10: MSTORE
00000a11: PUSH1 0x24
00000a13: DUP6
00000a14: ADD
00000a15: SWAP4
00000a16: SWAP1
00000a17: SWAP4
00000a18: MSTORE
00000a19: POP
00000a1a: PUSH1 0x20
00000a1c: SWAP1
00000a1d: SWAP2
00000a1e: MUL
00000a1f: ADD
00000a20: CALLDATALOAD
00000a21: PUSH1 0x44
00000a23: DUP3
00000a24: ADD
00000a25: MSTORE
00000a26: PUSH1 0x64
00000a28: ADD
00000a29: PUSH1 0x40
00000a2b: DUP1
00000a2c: MLOAD
00000a2d: DUP1
00000a2e: DUP4
00000a2f: SUB
00000a30: DUP2
00000a31: DUP7
00000a32: GAS
00000a33: STATICCALL
00000a34: ISZERO
00000a35: DUP1
00000a36: ISZERO
00000a37: PUSH2 0x0a44
00000a3a: JUMPI
00000a3b: RETURNDATASIZE
00000a3c: PUSH1 0x00
00000a3e: DUP1
00000a3f: RETURNDATACOPY
00000a40: RETURNDATASIZE
00000a41: PUSH1 0x00
00000a43: REVERT
00000a44: JUMPDEST
00000a45: POP
00000a46: POP
00000a47: POP
00000a48: POP
00000a49: PUSH1 0x40
00000a4b: MLOAD
00000a4c: RETURNDATASIZE
00000a4d: PUSH1 0x1f
00000a4f: NOT
00000a50: PUSH1 0x1f
00000a52: DUP3
00000a53: ADD
00000a54: AND
00000a55: DUP3
00000a56: ADD
00000a57: DUP1
00000a58: PUSH1 0x40
00000a5a: MSTORE
00000a5b: POP
00000a5c: DUP2
00000a5d: ADD
00000a5e: SWAP1
00000a5f: PUSH2 0x0a68
00000a62: SWAP2
00000a63: SWAP1
00000a64: PUSH2 0x2211
00000a67: JUMP
00000a68: JUMPDEST
00000a69: PUSH1 0x20
00000a6b: ADD
00000a6c: MLOAD
00000a6d: DUP3
00000a6e: DUP3
00000a6f: DUP2
00000a70: MLOAD
00000a71: DUP2
00000a72: LT
00000a73: PUSH2 0x0a7e
00000a76: JUMPI
00000a77: PUSH2 0x0a7e
00000a7a: PUSH2 0x21d1
00000a7d: JUMP
00000a7e: JUMPDEST
00000a7f: PUSH1 0x20
00000a81: SWAP1
00000a82: DUP2
00000a83: MUL
00000a84: SWAP2
00000a85: SWAP1
00000a86: SWAP2
00000a87: ADD
00000a88: ADD
00000a89: MSTORE
00000a8a: PUSH2 0x0a94
00000a8d: PUSH1 0x01
00000a8f: DUP3
00000a90: PUSH2 0x21fe
00000a93: JUMP
00000a94: JUMPDEST
00000a95: SWAP1
00000a96: POP
00000a97: PUSH2 0x099b
00000a9a: JUMP
00000a9b: JUMPDEST
00000a9c: POP
00000a9d: SWAP8
00000a9e: SWAP7
00000a9f: POP
00000aa0: POP
00000aa1: POP
00000aa2: POP
00000aa3: POP
00000aa4: POP
00000aa5: POP
00000aa6: JUMP
00000aa7: JUMPDEST
00000aa8: PUSH1 0x00
00000aaa: PUSH2 0x0ab2
00000aad: TIMESTAMP
00000aae: PUSH2 0x04bf
00000ab1: JUMP
00000ab2: JUMPDEST
00000ab3: SWAP1
00000ab4: POP
00000ab5: SWAP1
00000ab6: JUMP
00000ab7: JUMPDEST
00000ab8: PUSH1 0x00
00000aba: PUSH2 0x0558
00000abd: PUSH1 0x0e
00000abf: DUP4
00000ac0: PUSH2 0x21e7
00000ac3: JUMP
00000ac4: JUMPDEST
00000ac5: PUSH2 0x0acc
00000ac8: PUSH2 0x18a1
00000acb: JUMP
00000acc: JUMPDEST
00000acd: PUSH1 0x00
00000acf: JUMPDEST
00000ad0: DUP2
00000ad1: DUP2
00000ad2: LT
00000ad3: ISZERO
00000ad4: PUSH2 0x0b8b
00000ad7: JUMPI
00000ad8: PUSH1 0x01
00000ada: PUSH1 0x6c
00000adc: PUSH1 0x00
00000ade: DUP6
00000adf: DUP6
00000ae0: DUP6
00000ae1: DUP2
00000ae2: DUP2
00000ae3: LT
00000ae4: PUSH2 0x0aef
00000ae7: JUMPI
00000ae8: PUSH2 0x0aef
00000aeb: PUSH2 0x21d1
00000aee: JUMP
00000aef: JUMPDEST
00000af0: SWAP1
00000af1: POP
00000af2: PUSH1 0x20
00000af4: MUL
00000af5: ADD
00000af6: PUSH1 0x20
00000af8: DUP2
00000af9: ADD
00000afa: SWAP1
00000afb: PUSH2 0x0b04
00000afe: SWAP2
00000aff: SWAP1
00000b00: PUSH2 0x1fb3
00000b03: JUMP
00000b04: JUMPDEST
00000b05: PUSH1 0x01
00000b07: PUSH1 0x01
00000b09: PUSH1 0xa0
00000b0b: SHL
00000b0c: SUB
00000b0d: AND
00000b0e: DUP2
00000b0f: MSTORE
00000b10: PUSH1 0x20
00000b12: DUP2
00000b13: ADD
00000b14: SWAP2
00000b15: SWAP1
00000b16: SWAP2
00000b17: MSTORE
00000b18: PUSH1 0x40
00000b1a: ADD
00000b1b: PUSH1 0x00
00000b1d: KECCAK256
00000b1e: DUP1
00000b1f: SLOAD
00000b20: PUSH1 0xff
00000b22: NOT
00000b23: AND
00000b24: SWAP2
00000b25: ISZERO
00000b26: ISZERO
00000b27: SWAP2
00000b28: SWAP1
00000b29: SWAP2
00000b2a: OR
00000b2b: SWAP1
00000b2c: SSTORE
00000b2d: PUSH2 0x0b34
00000b30: PUSH2 0x0aa7
00000b33: JUMP
00000b34: JUMPDEST
00000b35: PUSH1 0x6d
00000b37: PUSH1 0x00
00000b39: DUP6
00000b3a: DUP6
00000b3b: DUP6
00000b3c: DUP2
00000b3d: DUP2
00000b3e: LT
00000b3f: PUSH2 0x0b4a
00000b42: JUMPI
00000b43: PUSH2 0x0b4a
00000b46: PUSH2 0x21d1
00000b49: JUMP
00000b4a: JUMPDEST
00000b4b: SWAP1
00000b4c: POP
00000b4d: PUSH1 0x20
00000b4f: MUL
00000b50: ADD
00000b51: PUSH1 0x20
00000b53: DUP2
00000b54: ADD
00000b55: SWAP1
00000b56: PUSH2 0x0b5f
00000b59: SWAP2
00000b5a: SWAP1
00000b5b: PUSH2 0x1fb3
00000b5e: JUMP
00000b5f: JUMPDEST
00000b60: PUSH1 0x01
00000b62: PUSH1 0x01
00000b64: PUSH1 0xa0
00000b66: SHL
00000b67: SUB
00000b68: AND
00000b69: DUP2
00000b6a: MSTORE
00000b6b: PUSH1 0x20
00000b6d: DUP2
00000b6e: ADD
00000b6f: SWAP2
00000b70: SWAP1
00000b71: SWAP2
00000b72: MSTORE
00000b73: PUSH1 0x40
00000b75: ADD
00000b76: PUSH1 0x00
00000b78: KECCAK256
00000b79: SSTORE
00000b7a: PUSH2 0x0b84
00000b7d: PUSH1 0x01
00000b7f: DUP3
00000b80: PUSH2 0x21fe
00000b83: JUMP
00000b84: JUMPDEST
00000b85: SWAP1
00000b86: POP
00000b87: PUSH2 0x0acf
00000b8a: JUMP
00000b8b: JUMPDEST
00000b8c: POP
00000b8d: POP
00000b8e: POP
00000b8f: JUMP
00000b90: JUMPDEST
00000b91: PUSH2 0x0b98
00000b94: PUSH2 0x18a1
00000b97: JUMP
00000b98: JUMPDEST
00000b99: PUSH1 0x69
00000b9b: SSTORE
00000b9c: JUMP
00000b9d: JUMPDEST
00000b9e: PUSH2 0x0ba5
00000ba1: PUSH2 0x18a1
00000ba4: JUMP
00000ba5: JUMPDEST
00000ba6: PUSH1 0x00
00000ba8: JUMPDEST
00000ba9: DUP2
00000baa: DUP2
00000bab: LT
00000bac: ISZERO
00000bad: PUSH2 0x0b8b
00000bb0: JUMPI
00000bb1: PUSH1 0x00
00000bb3: PUSH1 0x6c
00000bb5: PUSH1 0x00
00000bb7: DUP6
00000bb8: DUP6
00000bb9: DUP6
00000bba: DUP2
00000bbb: DUP2
00000bbc: LT
00000bbd: PUSH2 0x0bc8
00000bc0: JUMPI
00000bc1: PUSH2 0x0bc8
00000bc4: PUSH2 0x21d1
00000bc7: JUMP
00000bc8: JUMPDEST
00000bc9: SWAP1
00000bca: POP
00000bcb: PUSH1 0x20
00000bcd: MUL
00000bce: ADD
00000bcf: PUSH1 0x20
00000bd1: DUP2
00000bd2: ADD
00000bd3: SWAP1
00000bd4: PUSH2 0x0bdd
00000bd7: SWAP2
00000bd8: SWAP1
00000bd9: PUSH2 0x1fb3
00000bdc: JUMP
00000bdd: JUMPDEST
00000bde: PUSH1 0x01
00000be0: PUSH1 0x01
00000be2: PUSH1 0xa0
00000be4: SHL
00000be5: SUB
00000be6: AND
00000be7: DUP2
00000be8: MSTORE
00000be9: PUSH1 0x20
00000beb: DUP2
00000bec: ADD
00000bed: SWAP2
00000bee: SWAP1
00000bef: SWAP2
00000bf0: MSTORE
00000bf1: PUSH1 0x40
00000bf3: ADD
00000bf4: PUSH1 0x00
00000bf6: KECCAK256
00000bf7: DUP1
00000bf8: SLOAD
00000bf9: PUSH1 0xff
00000bfb: NOT
00000bfc: AND
00000bfd: SWAP2
00000bfe: ISZERO
00000bff: ISZERO
00000c00: SWAP2
00000c01: SWAP1
00000c02: SWAP2
00000c03: OR
00000c04: SWAP1
00000c05: SSTORE
00000c06: PUSH2 0x0c10
00000c09: PUSH1 0x01
00000c0b: DUP3
00000c0c: PUSH2 0x21fe
00000c0f: JUMP
00000c10: JUMPDEST
00000c11: SWAP1
00000c12: POP
00000c13: PUSH2 0x0ba8
00000c16: JUMP
00000c17: JUMPDEST
00000c18: PUSH2 0x0c1f
00000c1b: PUSH2 0x18a1
00000c1e: JUMP
00000c1f: JUMPDEST
00000c20: PUSH1 0x00
00000c22: SWAP1
00000c23: DUP2
00000c24: MSTORE
00000c25: PUSH1 0x70
00000c27: PUSH1 0x20
00000c29: MSTORE
00000c2a: PUSH1 0x40
00000c2c: SWAP1
00000c2d: KECCAK256
00000c2e: DUP1
00000c2f: SLOAD
00000c30: PUSH1 0xff
00000c32: NOT
00000c33: AND
00000c34: PUSH1 0x01
00000c36: OR
00000c37: SWAP1
00000c38: SSTORE
00000c39: JUMP
00000c3a: JUMPDEST
00000c3b: PUSH2 0x0c42
00000c3e: PUSH2 0x18a1
00000c41: JUMP
00000c42: JUMPDEST
00000c43: PUSH2 0x0c4c
00000c46: PUSH1 0x00
00000c48: PUSH2 0x18fb
00000c4b: JUMP
00000c4c: JUMPDEST
00000c4d: JUMP
00000c4e: JUMPDEST
00000c4f: PUSH1 0x00
00000c51: PUSH2 0x0c61
00000c54: DUP9
00000c55: DUP9
00000c56: DUP9
00000c57: DUP9
00000c58: DUP9
00000c59: DUP9
00000c5a: DUP9
00000c5b: PUSH1 0x01
00000c5d: PUSH2 0x05ea
00000c60: JUMP
00000c61: JUMPDEST
00000c62: SWAP1
00000c63: POP
00000c64: PUSH1 0x00
00000c66: DUP1
00000c67: JUMPDEST
00000c68: DUP9
00000c69: DUP2
00000c6a: LT
00000c6b: ISZERO
00000c6c: PUSH2 0x0def
00000c6f: JUMPI
00000c70: DUP2
00000c71: PUSH1 0x01
00000c73: PUSH1 0x01
00000c75: PUSH1 0xa0
00000c77: SHL
00000c78: SUB
00000c79: AND
00000c7a: DUP11
00000c7b: DUP11
00000c7c: DUP4
00000c7d: DUP2
00000c7e: DUP2
00000c7f: LT
00000c80: PUSH2 0x0c8b
00000c83: JUMPI
00000c84: PUSH2 0x0c8b
00000c87: PUSH2 0x21d1
00000c8a: JUMP
00000c8b: JUMPDEST
00000c8c: SWAP1
00000c8d: POP
00000c8e: PUSH1 0x20
00000c90: MUL
00000c91: ADD
00000c92: PUSH1 0x20
00000c94: DUP2
00000c95: ADD
00000c96: SWAP1
00000c97: PUSH2 0x0ca0
00000c9a: SWAP2
00000c9b: SWAP1
00000c9c: PUSH2 0x1fb3
00000c9f: JUMP
00000ca0: JUMPDEST
00000ca1: PUSH1 0x01
00000ca3: PUSH1 0x01
00000ca5: PUSH1 0xa0
00000ca7: SHL
00000ca8: SUB
00000ca9: AND
00000caa: GT
00000cab: PUSH2 0x0d1c
00000cae: JUMPI
00000caf: PUSH1 0x40
00000cb1: MLOAD
00000cb2: PUSH3 0x461bcd
00000cb6: PUSH1 0xe5
00000cb8: SHL
00000cb9: DUP2
00000cba: MSTORE
00000cbb: PUSH1 0x20
00000cbd: PUSH1 0x04
00000cbf: DUP3
00000cc0: ADD
00000cc1: MSTORE
00000cc2: PUSH1 0x39
00000cc4: PUSH1 0x24
00000cc6: DUP3
00000cc7: ADD
00000cc8: MSTORE
00000cc9: PUSH32 0x476f7665726e6f72526577617264733a204475706c696361746520746f6b656e
00000cea: PUSH1 0x44
00000cec: DUP3
00000ced: ADD
00000cee: MSTORE
00000cef: PUSH32 0x206f7220746f6b656e73206172656e2774206f72646572656400000000000000
00000d10: PUSH1 0x64
00000d12: DUP3
00000d13: ADD
00000d14: MSTORE
00000d15: PUSH1 0x84
00000d17: ADD
00000d18: PUSH2 0x0535
00000d1b: JUMP
00000d1c: JUMPDEST
00000d1d: PUSH1 0x01
00000d1f: PUSH1 0x01
00000d21: PUSH1 0xa0
00000d23: SHL
00000d24: SUB
00000d25: DUP9
00000d26: AND
00000d27: PUSH1 0x00
00000d29: SWAP1
00000d2a: DUP2
00000d2b: MSTORE
00000d2c: PUSH1 0x6a
00000d2e: PUSH1 0x20
00000d30: MSTORE
00000d31: PUSH1 0x40
00000d33: DUP2
00000d34: KECCAK256
00000d35: DUP2
00000d36: DUP13
00000d37: DUP13
00000d38: DUP6
00000d39: DUP2
00000d3a: DUP2
00000d3b: LT
00000d3c: PUSH2 0x0d47
00000d3f: JUMPI
00000d40: PUSH2 0x0d47
00000d43: PUSH2 0x21d1
00000d46: JUMP
00000d47: JUMPDEST
00000d48: SWAP1
00000d49: POP
00000d4a: PUSH1 0x20
00000d4c: MUL
00000d4d: ADD
00000d4e: PUSH1 0x20
00000d50: DUP2
00000d51: ADD
00000d52: SWAP1
00000d53: PUSH2 0x0d5c
00000d56: SWAP2
00000d57: SWAP1
00000d58: PUSH2 0x1fb3
00000d5b: JUMP
00000d5c: JUMPDEST
00000d5d: PUSH1 0x01
00000d5f: PUSH1 0x01
00000d61: PUSH1 0xa0
00000d63: SHL
00000d64: SUB
00000d65: AND
00000d66: DUP2
00000d67: MSTORE
00000d68: PUSH1 0x20
00000d6a: DUP2
00000d6b: ADD
00000d6c: SWAP2
00000d6d: SWAP1
00000d6e: SWAP2
00000d6f: MSTORE
00000d70: PUSH1 0x40
00000d72: ADD
00000d73: PUSH1 0x00
00000d75: KECCAK256
00000d76: SWAP1
00000d77: POP
00000d78: DUP8
00000d79: JUMPDEST
00000d7a: DUP8
00000d7b: DUP2
00000d7c: GT
00000d7d: PUSH2 0x0db1
00000d80: JUMPI
00000d81: PUSH1 0x08
00000d83: DUP2
00000d84: SWAP1
00000d85: SHR
00000d86: PUSH1 0x00
00000d88: SWAP1
00000d89: DUP2
00000d8a: MSTORE
00000d8b: PUSH1 0x20
00000d8d: DUP4
00000d8e: SWAP1
00000d8f: MSTORE
00000d90: PUSH1 0x40
00000d92: SWAP1
00000d93: KECCAK256
00000d94: DUP1
00000d95: SLOAD
00000d96: PUSH1 0x01
00000d98: PUSH1 0xff
00000d9a: DUP5
00000d9b: AND
00000d9c: SHL
00000d9d: OR
00000d9e: SWAP1
00000d9f: SSTORE
00000da0: PUSH2 0x0daa
00000da3: PUSH1 0x01
00000da5: DUP3
00000da6: PUSH2 0x21fe
00000da9: JUMP
00000daa: JUMPDEST
00000dab: SWAP1
00000dac: POP
00000dad: PUSH2 0x0d79
00000db0: JUMP
00000db1: JUMPDEST
00000db2: POP
00000db3: DUP11
00000db4: DUP11
00000db5: DUP4
00000db6: DUP2
00000db7: DUP2
00000db8: LT
00000db9: PUSH2 0x0dc4
00000dbc: JUMPI
00000dbd: PUSH2 0x0dc4
00000dc0: PUSH2 0x21d1
00000dc3: JUMP
00000dc4: JUMPDEST
00000dc5: SWAP1
00000dc6: POP
00000dc7: PUSH1 0x20
00000dc9: MUL
00000dca: ADD
00000dcb: PUSH1 0x20
00000dcd: DUP2
00000dce: ADD
00000dcf: SWAP1
00000dd0: PUSH2 0x0dd9
00000dd3: SWAP2
00000dd4: SWAP1
00000dd5: PUSH2 0x1fb3
00000dd8: JUMP
00000dd9: JUMPDEST
00000dda: SWAP3
00000ddb: POP
00000ddc: PUSH2 0x0de8
00000ddf: SWAP1
00000de0: POP
00000de1: PUSH1 0x01
00000de3: DUP3
00000de4: PUSH2 0x21fe
00000de7: JUMP
00000de8: JUMPDEST
00000de9: SWAP1
00000dea: POP
00000deb: PUSH2 0x0c67
00000dee: JUMP
00000def: JUMPDEST
00000df0: POP
00000df1: PUSH1 0x00
00000df3: JUMPDEST
00000df4: DUP9
00000df5: DUP2
00000df6: LT
00000df7: ISZERO
00000df8: PUSH2 0x0f02
00000dfb: JUMPI
00000dfc: PUSH2 0x0e50
00000dff: DUP9
00000e00: DUP5
00000e01: DUP4
00000e02: DUP2
00000e03: MLOAD
00000e04: DUP2
00000e05: LT
00000e06: PUSH2 0x0e11
00000e09: JUMPI
00000e0a: PUSH2 0x0e11
00000e0d: PUSH2 0x21d1
00000e10: JUMP
00000e11: JUMPDEST
00000e12: PUSH1 0x20
00000e14: MUL
00000e15: PUSH1 0x20
00000e17: ADD
00000e18: ADD
00000e19: MLOAD
00000e1a: DUP13
00000e1b: DUP13
00000e1c: DUP6
00000e1d: DUP2
00000e1e: DUP2
00000e1f: LT
00000e20: PUSH2 0x0e2b
00000e23: JUMPI
00000e24: PUSH2 0x0e2b
00000e27: PUSH2 0x21d1
00000e2a: JUMP
00000e2b: JUMPDEST
00000e2c: SWAP1
00000e2d: POP
00000e2e: PUSH1 0x20
00000e30: MUL
00000e31: ADD
00000e32: PUSH1 0x20
00000e34: DUP2
00000e35: ADD
00000e36: SWAP1
00000e37: PUSH2 0x0e40
00000e3a: SWAP2
00000e3b: SWAP1
00000e3c: PUSH2 0x1fb3
00000e3f: JUMP
00000e40: JUMPDEST
00000e41: PUSH1 0x01
00000e43: PUSH1 0x01
00000e45: PUSH1 0xa0
00000e47: SHL
00000e48: SUB
00000e49: AND
00000e4a: SWAP2
00000e4b: SWAP1
00000e4c: PUSH2 0x1965
00000e4f: JUMP
00000e50: JUMPDEST
00000e51: PUSH32 0x9137e112a187039f8a3291c0a66fce97153d25ec42036e82360d5d0106d19a6e
00000e72: DUP11
00000e73: DUP11
00000e74: DUP4
00000e75: DUP2
00000e76: DUP2
00000e77: LT
00000e78: PUSH2 0x0e83
00000e7b: JUMPI
00000e7c: PUSH2 0x0e83
00000e7f: PUSH2 0x21d1
00000e82: JUMP
00000e83: JUMPDEST
00000e84: SWAP1
00000e85: POP
00000e86: PUSH1 0x20
00000e88: MUL
00000e89: ADD
00000e8a: PUSH1 0x20
00000e8c: DUP2
00000e8d: ADD
00000e8e: SWAP1
00000e8f: PUSH2 0x0e98
00000e92: SWAP2
00000e93: SWAP1
00000e94: PUSH2 0x1fb3
00000e97: JUMP
00000e98: JUMPDEST
00000e99: DUP10
00000e9a: DUP6
00000e9b: DUP5
00000e9c: DUP2
00000e9d: MLOAD
00000e9e: DUP2
00000e9f: LT
00000ea0: PUSH2 0x0eab
00000ea3: JUMPI
00000ea4: PUSH2 0x0eab
00000ea7: PUSH2 0x21d1
00000eaa: JUMP
00000eab: JUMPDEST
00000eac: PUSH1 0x20
00000eae: SWAP1
00000eaf: DUP2
00000eb0: MUL
00000eb1: SWAP2
00000eb2: SWAP1
00000eb3: SWAP2
00000eb4: ADD
00000eb5: DUP2
00000eb6: ADD
00000eb7: MLOAD
00000eb8: PUSH1 0x40
00000eba: DUP1
00000ebb: MLOAD
00000ebc: PUSH1 0x01
00000ebe: PUSH1 0x01
00000ec0: PUSH1 0xa0
00000ec2: SHL
00000ec3: SUB
00000ec4: SWAP6
00000ec5: DUP7
00000ec6: AND
00000ec7: DUP2
00000ec8: MSTORE
00000ec9: SWAP5
00000eca: SWAP1
00000ecb: SWAP4
00000ecc: AND
00000ecd: SWAP2
00000ece: DUP5
00000ecf: ADD
00000ed0: SWAP2
00000ed1: SWAP1
00000ed2: SWAP2
00000ed3: MSTORE
00000ed4: SWAP1
00000ed5: DUP3
00000ed6: ADD
00000ed7: MSTORE
00000ed8: PUSH1 0x60
00000eda: DUP2
00000edb: ADD
00000edc: DUP10
00000edd: SWAP1
00000ede: MSTORE
00000edf: PUSH1 0x80
00000ee1: DUP2
00000ee2: ADD
00000ee3: DUP9
00000ee4: SWAP1
00000ee5: MSTORE
00000ee6: PUSH1 0xa0
00000ee8: ADD
00000ee9: PUSH1 0x40
00000eeb: MLOAD
00000eec: DUP1
00000eed: SWAP2
00000eee: SUB
00000eef: SWAP1
00000ef0: LOG1
00000ef1: PUSH2 0x0efb
00000ef4: PUSH1 0x01
00000ef6: DUP3
00000ef7: PUSH2 0x21fe
00000efa: JUMP
00000efb: JUMPDEST
00000efc: SWAP1
00000efd: POP
00000efe: PUSH2 0x0df3
00000f01: JUMP
00000f02: JUMPDEST
00000f03: POP
00000f04: POP
00000f05: POP
00000f06: POP
00000f07: POP
00000f08: POP
00000f09: POP
00000f0a: POP
00000f0b: POP
00000f0c: POP
00000f0d: JUMP
00000f0e: JUMPDEST
00000f0f: PUSH1 0x00
00000f11: SLOAD
00000f12: PUSH2 0x0100
00000f15: SWAP1
00000f16: DIV
00000f17: PUSH1 0xff
00000f19: AND
00000f1a: ISZERO
00000f1b: DUP1
00000f1c: DUP1
00000f1d: ISZERO
00000f1e: PUSH2 0x0f2e
00000f21: JUMPI
00000f22: POP
00000f23: PUSH1 0x00
00000f25: SLOAD
00000f26: PUSH1 0x01
00000f28: PUSH1 0xff
00000f2a: SWAP1
00000f2b: SWAP2
00000f2c: AND
00000f2d: LT
00000f2e: JUMPDEST
00000f2f: DUP1
00000f30: PUSH2 0x0f48
00000f33: JUMPI
00000f34: POP
00000f35: ADDRESS
00000f36: EXTCODESIZE
00000f37: ISZERO
00000f38: DUP1
00000f39: ISZERO
00000f3a: PUSH2 0x0f48
00000f3d: JUMPI
00000f3e: POP
00000f3f: PUSH1 0x00
00000f41: SLOAD
00000f42: PUSH1 0xff
00000f44: AND
00000f45: PUSH1 0x01
00000f47: EQ
00000f48: JUMPDEST
00000f49: PUSH2 0x0fba
00000f4c: JUMPI
00000f4d: PUSH1 0x40
00000f4f: MLOAD
00000f50: PUSH3 0x461bcd
00000f54: PUSH1 0xe5
00000f56: SHL
00000f57: DUP2
00000f58: MSTORE
00000f59: PUSH1 0x20
00000f5b: PUSH1 0x04
00000f5d: DUP3
00000f5e: ADD
00000f5f: MSTORE
00000f60: PUSH1 0x2e
00000f62: PUSH1 0x24
00000f64: DUP3
00000f65: ADD
00000f66: MSTORE
00000f67: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00000f88: PUSH1 0x44
00000f8a: DUP3
00000f8b: ADD
00000f8c: MSTORE
00000f8d: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
00000fae: PUSH1 0x64
00000fb0: DUP3
00000fb1: ADD
00000fb2: MSTORE
00000fb3: PUSH1 0x84
00000fb5: ADD
00000fb6: PUSH2 0x0535
00000fb9: JUMP
00000fba: JUMPDEST
00000fbb: PUSH1 0x00
00000fbd: DUP1
00000fbe: SLOAD
00000fbf: PUSH1 0xff
00000fc1: NOT
00000fc2: AND
00000fc3: PUSH1 0x01
00000fc5: OR
00000fc6: SWAP1
00000fc7: SSTORE
00000fc8: DUP1
00000fc9: ISZERO
00000fca: PUSH2 0x0fdd
00000fcd: JUMPI
00000fce: PUSH1 0x00
00000fd0: DUP1
00000fd1: SLOAD
00000fd2: PUSH2 0xff00
00000fd5: NOT
00000fd6: AND
00000fd7: PUSH2 0x0100
00000fda: OR
00000fdb: SWAP1
00000fdc: SSTORE
00000fdd: JUMPDEST
00000fde: PUSH2 0x0fe5
00000fe1: PUSH2 0x19e5
00000fe4: JUMP
00000fe5: JUMPDEST
00000fe6: PUSH2 0x0fee
00000fe9: CALLER
00000fea: PUSH2 0x17d1
00000fed: JUMP
00000fee: JUMPDEST
00000fef: PUSH1 0x66
00000ff1: DUP1
00000ff2: SLOAD
00000ff3: PUSH1 0x01
00000ff5: PUSH1 0x01
00000ff7: PUSH1 0xa0
00000ff9: SHL
00000ffa: SUB
00000ffb: DUP1
00000ffc: DUP9
00000ffd: AND
00000ffe: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
0000101f: SWAP3
00001020: DUP4
00001021: AND
00001022: OR
00001023: SWAP1
00001024: SWAP3
00001025: SSTORE
00001026: PUSH1 0x65
00001028: DUP1
00001029: SLOAD
0000102a: SWAP3
0000102b: DUP10
0000102c: AND
0000102d: SWAP3
0000102e: SWAP1
0000102f: SWAP2
00001030: AND
00001031: DUP3
00001032: OR
00001033: SWAP1
00001034: SSTORE
00001035: PUSH1 0x40
00001037: DUP1
00001038: MLOAD
00001039: PUSH32 0x90d92e7600000000000000000000000000000000000000000000000000000000
0000105a: DUP2
0000105b: MSTORE
0000105c: SWAP1
0000105d: MLOAD
0000105e: PUSH4 0x90d92e76
00001063: SWAP2
00001064: PUSH1 0x04
00001066: DUP1
00001067: DUP3
00001068: ADD
00001069: SWAP3
0000106a: PUSH1 0x20
0000106c: SWAP3
0000106d: SWAP1
0000106e: SWAP2
0000106f: SWAP1
00001070: DUP3
00001071: SWAP1
00001072: SUB
00001073: ADD
00001074: DUP2
00001075: DUP7
00001076: GAS
00001077: STATICCALL
00001078: ISZERO
00001079: DUP1
0000107a: ISZERO
0000107b: PUSH2 0x1088
0000107e: JUMPI
0000107f: RETURNDATASIZE
00001080: PUSH1 0x00
00001082: DUP1
00001083: RETURNDATACOPY
00001084: RETURNDATASIZE
00001085: PUSH1 0x00
00001087: REVERT
00001088: JUMPDEST
00001089: POP
0000108a: POP
0000108b: POP
0000108c: POP
0000108d: PUSH1 0x40
0000108f: MLOAD
00001090: RETURNDATASIZE
00001091: PUSH1 0x1f
00001093: NOT
00001094: PUSH1 0x1f
00001096: DUP3
00001097: ADD
00001098: AND
00001099: DUP3
0000109a: ADD
0000109b: DUP1
0000109c: PUSH1 0x40
0000109e: MSTORE
0000109f: POP
000010a0: DUP2
000010a1: ADD
000010a2: SWAP1
000010a3: PUSH2 0x10ac
000010a6: SWAP2
000010a7: SWAP1
000010a8: PUSH2 0x226e
000010ab: JUMP
000010ac: JUMPDEST
000010ad: PUSH1 0x67
000010af: SSTORE
000010b0: PUSH1 0x65
000010b2: SLOAD
000010b3: PUSH1 0x40
000010b5: DUP1
000010b6: MLOAD
000010b7: PUSH32 0x6d2beef100000000000000000000000000000000000000000000000000000000
000010d8: DUP2
000010d9: MSTORE
000010da: SWAP1
000010db: MLOAD
000010dc: PUSH1 0x0e
000010de: SWAP3
000010df: PUSH1 0x01
000010e1: PUSH1 0x01
000010e3: PUSH1 0xa0
000010e5: SHL
000010e6: SUB
000010e7: AND
000010e8: SWAP2
000010e9: PUSH4 0x6d2beef1
000010ee: SWAP2
000010ef: PUSH1 0x04
000010f1: DUP1
000010f2: DUP4
000010f3: ADD
000010f4: SWAP3
000010f5: PUSH1 0x20
000010f7: SWAP3
000010f8: SWAP2
000010f9: SWAP1
000010fa: DUP3
000010fb: SWAP1
000010fc: SUB
000010fd: ADD
000010fe: DUP2
000010ff: DUP7
00001100: GAS
00001101: STATICCALL
00001102: ISZERO
00001103: DUP1
00001104: ISZERO
00001105: PUSH2 0x1112
00001108: JUMPI
00001109: RETURNDATASIZE
0000110a: PUSH1 0x00
0000110c: DUP1
0000110d: RETURNDATACOPY
0000110e: RETURNDATASIZE
0000110f: PUSH1 0x00
00001111: REVERT
00001112: JUMPDEST
00001113: POP
00001114: POP
00001115: POP
00001116: POP
00001117: PUSH1 0x40
00001119: MLOAD
0000111a: RETURNDATASIZE
0000111b: PUSH1 0x1f
0000111d: NOT
0000111e: PUSH1 0x1f
00001120: DUP3
00001121: ADD
00001122: AND
00001123: DUP3
00001124: ADD
00001125: DUP1
00001126: PUSH1 0x40
00001128: MSTORE
00001129: POP
0000112a: DUP2
0000112b: ADD
0000112c: SWAP1
0000112d: PUSH2 0x1136
00001130: SWAP2
00001131: SWAP1
00001132: PUSH2 0x226e
00001135: JUMP
00001136: JUMPDEST
00001137: PUSH2 0x1140
0000113a: SWAP2
0000113b: SWAP1
0000113c: PUSH2 0x21e7
0000113f: JUMP
00001140: JUMPDEST
00001141: PUSH1 0x68
00001143: SSTORE
00001144: PUSH1 0x6e
00001146: DUP5
00001147: SWAP1
00001148: SSTORE
00001149: PUSH2 0x1152
0000114c: DUP4
0000114d: DUP4
0000114e: PUSH2 0x0ac4
00001151: JUMP
00001152: JUMPDEST
00001153: DUP1
00001154: ISZERO
00001155: PUSH2 0x1198
00001158: JUMPI
00001159: PUSH1 0x00
0000115b: DUP1
0000115c: SLOAD
0000115d: PUSH2 0xff00
00001160: NOT
00001161: AND
00001162: SWAP1
00001163: SSTORE
00001164: PUSH1 0x40
00001166: MLOAD
00001167: PUSH1 0x01
00001169: DUP2
0000116a: MSTORE
0000116b: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
0000118c: SWAP1
0000118d: PUSH1 0x20
0000118f: ADD
00001190: PUSH1 0x40
00001192: MLOAD
00001193: DUP1
00001194: SWAP2
00001195: SUB
00001196: SWAP1
00001197: LOG1
00001198: JUMPDEST
00001199: POP
0000119a: POP
0000119b: POP
0000119c: POP
0000119d: POP
0000119e: POP
0000119f: JUMP
000011a0: JUMPDEST
000011a1: PUSH1 0x60
000011a3: PUSH1 0x00
000011a5: PUSH2 0x11ae
000011a8: DUP7
000011a9: DUP7
000011aa: PUSH2 0x2186
000011ad: JUMP
000011ae: JUMPDEST
000011af: PUSH2 0x11b9
000011b2: SWAP1
000011b3: PUSH1 0x01
000011b5: PUSH2 0x21fe
000011b8: JUMP
000011b9: JUMPDEST
000011ba: SWAP1
000011bb: POP
000011bc: DUP3
000011bd: DUP2
000011be: EQ
000011bf: PUSH2 0x1230
000011c2: JUMPI
000011c3: PUSH1 0x40
000011c5: MLOAD
000011c6: PUSH3 0x461bcd
000011ca: PUSH1 0xe5
000011cc: SHL
000011cd: DUP2
000011ce: MSTORE
000011cf: PUSH1 0x20
000011d1: PUSH1 0x04
000011d3: DUP3
000011d4: ADD
000011d5: MSTORE
000011d6: PUSH1 0x30
000011d8: PUSH1 0x24
000011da: DUP3
000011db: ADD
000011dc: MSTORE
000011dd: PUSH32 0x476f7665726e6f72526577617264733a20496e636f7272656374206e756d6265
000011fe: PUSH1 0x44
00001200: DUP3
00001201: ADD
00001202: MSTORE
00001203: PUSH32 0x72206f662068696e747320676976656e00000000000000000000000000000000
00001224: PUSH1 0x64
00001226: DUP3
00001227: ADD
00001228: MSTORE
00001229: PUSH1 0x84
0000122b: ADD
0000122c: PUSH2 0x0535
0000122f: JUMP
00001230: JUMPDEST
00001231: PUSH1 0x00
00001233: DUP2
00001234: PUSH8 0xffffffffffffffff
0000123d: DUP2
0000123e: GT
0000123f: ISZERO
00001240: PUSH2 0x124b
00001243: JUMPI
00001244: PUSH2 0x124b
00001247: PUSH2 0x21bb
0000124a: JUMP
0000124b: JUMPDEST
0000124c: PUSH1 0x40
0000124e: MLOAD
0000124f: SWAP1
00001250: DUP1
00001251: DUP3
00001252: MSTORE
00001253: DUP1
00001254: PUSH1 0x20
00001256: MUL
00001257: PUSH1 0x20
00001259: ADD
0000125a: DUP3
0000125b: ADD
0000125c: PUSH1 0x40
0000125e: MSTORE
0000125f: DUP1
00001260: ISZERO
00001261: PUSH2 0x1274
00001264: JUMPI
00001265: DUP2
00001266: PUSH1 0x20
00001268: ADD
00001269: PUSH1 0x20
0000126b: DUP3
0000126c: MUL
0000126d: DUP1
0000126e: CALLDATASIZE
0000126f: DUP4
00001270: CALLDATACOPY
00001271: ADD
00001272: SWAP1
00001273: POP
00001274: JUMPDEST
00001275: POP
00001276: SWAP1
00001277: POP
00001278: PUSH1 0x00
0000127a: JUMPDEST
0000127b: DUP3
0000127c: DUP2
0000127d: LT
0000127e: ISZERO
0000127f: PUSH2 0x1353
00001282: JUMPI
00001283: PUSH1 0x65
00001285: SLOAD
00001286: PUSH1 0x01
00001288: PUSH1 0x01
0000128a: PUSH1 0xa0
0000128c: SHL
0000128d: SUB
0000128e: AND
0000128f: PUSH4 0x681c637a
00001294: PUSH2 0x12a0
00001297: PUSH2 0x02c3
0000129a: DUP5
0000129b: DUP13
0000129c: PUSH2 0x21fe
0000129f: JUMP
000012a0: JUMPDEST
000012a1: DUP9
000012a2: DUP9
000012a3: DUP6
000012a4: DUP2
000012a5: DUP2
000012a6: LT
000012a7: PUSH2 0x12b2
000012aa: JUMPI
000012ab: PUSH2 0x12b2
000012ae: PUSH2 0x21d1
000012b1: JUMP
000012b2: JUMPDEST
000012b3: SWAP1
000012b4: POP
000012b5: PUSH1 0x20
000012b7: MUL
000012b8: ADD
000012b9: CALLDATALOAD
000012ba: PUSH1 0x40
000012bc: MLOAD
000012bd: DUP4
000012be: PUSH4 0xffffffff
000012c3: AND
000012c4: PUSH1 0xe0
000012c6: SHL
000012c7: DUP2
000012c8: MSTORE
000012c9: PUSH1 0x04
000012cb: ADD
000012cc: PUSH2 0x12df
000012cf: SWAP3
000012d0: SWAP2
000012d1: SWAP1
000012d2: SWAP2
000012d3: DUP3
000012d4: MSTORE
000012d5: PUSH1 0x20
000012d7: DUP3
000012d8: ADD
000012d9: MSTORE
000012da: PUSH1 0x40
000012dc: ADD
000012dd: SWAP1
000012de: JUMP
000012df: JUMPDEST
000012e0: PUSH1 0x60
000012e2: PUSH1 0x40
000012e4: MLOAD
000012e5: DUP1
000012e6: DUP4
000012e7: SUB
000012e8: DUP2
000012e9: DUP7
000012ea: GAS
000012eb: STATICCALL
000012ec: ISZERO
000012ed: DUP1
000012ee: ISZERO
000012ef: PUSH2 0x12fc
000012f2: JUMPI
000012f3: RETURNDATASIZE
000012f4: PUSH1 0x00
000012f6: DUP1
000012f7: RETURNDATACOPY
000012f8: RETURNDATASIZE
000012f9: PUSH1 0x00
000012fb: REVERT
000012fc: JUMPDEST
000012fd: POP
000012fe: POP
000012ff: POP
00001300: POP
00001301: PUSH1 0x40
00001303: MLOAD
00001304: RETURNDATASIZE
00001305: PUSH1 0x1f
00001307: NOT
00001308: PUSH1 0x1f
0000130a: DUP3
0000130b: ADD
0000130c: AND
0000130d: DUP3
0000130e: ADD
0000130f: DUP1
00001310: PUSH1 0x40
00001312: MSTORE
00001313: POP
00001314: DUP2
00001315: ADD
00001316: SWAP1
00001317: PUSH2 0x1320
0000131a: SWAP2
0000131b: SWAP1
0000131c: PUSH2 0x2287
0000131f: JUMP
00001320: JUMPDEST
00001321: PUSH1 0x20
00001323: ADD
00001324: MLOAD
00001325: DUP3
00001326: DUP3
00001327: DUP2
00001328: MLOAD
00001329: DUP2
0000132a: LT
0000132b: PUSH2 0x1336
0000132e: JUMPI
0000132f: PUSH2 0x1336
00001332: PUSH2 0x21d1
00001335: JUMP
00001336: JUMPDEST
00001337: PUSH1 0x20
00001339: SWAP1
0000133a: DUP2
0000133b: MUL
0000133c: SWAP2
0000133d: SWAP1
0000133e: SWAP2
0000133f: ADD
00001340: ADD
00001341: MSTORE
00001342: PUSH2 0x134c
00001345: PUSH1 0x01
00001347: DUP3
00001348: PUSH2 0x21fe
0000134b: JUMP
0000134c: JUMPDEST
0000134d: SWAP1
0000134e: POP
0000134f: PUSH2 0x127a
00001352: JUMP
00001353: JUMPDEST
00001354: POP
00001355: SWAP2
00001356: POP
00001357: POP
00001358: JUMPDEST
00001359: SWAP5
0000135a: SWAP4
0000135b: POP
0000135c: POP
0000135d: POP
0000135e: POP
0000135f: JUMP
00001360: JUMPDEST
00001361: PUSH1 0x00
00001363: PUSH2 0x136c
00001366: DUP8
00001367: DUP8
00001368: PUSH2 0x2186
0000136b: JUMP
0000136c: JUMPDEST
0000136d: PUSH2 0x1377
00001370: SWAP1
00001371: PUSH1 0x01
00001373: PUSH2 0x21fe
00001376: JUMP
00001377: JUMPDEST
00001378: SWAP1
00001379: POP
0000137a: PUSH1 0x6e
0000137c: SLOAD
0000137d: DUP8
0000137e: GT
0000137f: ISZERO
00001380: PUSH2 0x13f1
00001383: JUMPI
00001384: PUSH1 0x40
00001386: MLOAD
00001387: PUSH3 0x461bcd
0000138b: PUSH1 0xe5
0000138d: SHL
0000138e: DUP2
0000138f: MSTORE
00001390: PUSH1 0x20
00001392: PUSH1 0x04
00001394: DUP3
00001395: ADD
00001396: MSTORE
00001397: PUSH1 0x2b
00001399: PUSH1 0x24
0000139b: DUP3
0000139c: ADD
0000139d: MSTORE
0000139e: PUSH32 0x476f7665726e6f72526577617264733a205374617274696e6720696e74657276
000013bf: PUSH1 0x44
000013c1: DUP3
000013c2: ADD
000013c3: MSTORE
000013c4: PUSH32 0x616c20746f6f206c617465000000000000000000000000000000000000000000
000013e5: PUSH1 0x64
000013e7: DUP3
000013e8: ADD
000013e9: MSTORE
000013ea: PUSH1 0x84
000013ec: ADD
000013ed: PUSH2 0x0535
000013f0: JUMP
000013f1: JUMPDEST
000013f2: PUSH2 0x13f9
000013f5: PUSH2 0x0aa7
000013f8: JUMP
000013f9: JUMPDEST
000013fa: DUP7
000013fb: GT
000013fc: ISZERO
000013fd: PUSH2 0x146e
00001400: JUMPI
00001401: PUSH1 0x40
00001403: MLOAD
00001404: PUSH3 0x461bcd
00001408: PUSH1 0xe5
0000140a: SHL
0000140b: DUP2
0000140c: MSTORE
0000140d: PUSH1 0x20
0000140f: PUSH1 0x04
00001411: DUP3
00001412: ADD
00001413: MSTORE
00001414: PUSH1 0x30
00001416: PUSH1 0x24
00001418: DUP3
00001419: ADD
0000141a: MSTORE
0000141b: PUSH32 0x476f7665726e6f72526577617264733a2043616e277420707265666574636820
0000143c: PUSH1 0x44
0000143e: DUP3
0000143f: ADD
00001440: MSTORE
00001441: PUSH32 0x66757475726520696e74657276616c7300000000000000000000000000000000
00001462: PUSH1 0x64
00001464: DUP3
00001465: ADD
00001466: MSTORE
00001467: PUSH1 0x84
00001469: ADD
0000146a: PUSH2 0x0535
0000146d: JUMP
0000146e: JUMPDEST
0000146f: PUSH1 0x00
00001471: PUSH2 0x147c
00001474: DUP9
00001475: DUP9
00001476: DUP9
00001477: DUP9
00001478: PUSH2 0x11a0
0000147b: JUMP
0000147c: JUMPDEST
0000147d: SWAP1
0000147e: POP
0000147f: PUSH1 0x00
00001481: JUMPDEST
00001482: DUP3
00001483: DUP2
00001484: LT
00001485: ISZERO
00001486: PUSH2 0x14d6
00001489: JUMPI
0000148a: DUP2
0000148b: DUP2
0000148c: DUP2
0000148d: MLOAD
0000148e: DUP2
0000148f: LT
00001490: PUSH2 0x149b
00001493: JUMPI
00001494: PUSH2 0x149b
00001497: PUSH2 0x21d1
0000149a: JUMP
0000149b: JUMPDEST
0000149c: PUSH1 0x20
0000149e: MUL
0000149f: PUSH1 0x20
000014a1: ADD
000014a2: ADD
000014a3: MLOAD
000014a4: PUSH1 0x6f
000014a6: PUSH1 0x00
000014a8: DUP4
000014a9: DUP13
000014aa: PUSH2 0x14b3
000014ad: SWAP2
000014ae: SWAP1
000014af: PUSH2 0x21fe
000014b2: JUMP
000014b3: JUMPDEST
000014b4: DUP2
000014b5: MSTORE
000014b6: PUSH1 0x20
000014b8: DUP2
000014b9: ADD
000014ba: SWAP2
000014bb: SWAP1
000014bc: SWAP2
000014bd: MSTORE
000014be: PUSH1 0x40
000014c0: ADD
000014c1: PUSH1 0x00
000014c3: KECCAK256
000014c4: SSTORE
000014c5: PUSH2 0x14cf
000014c8: PUSH1 0x01
000014ca: DUP3
000014cb: PUSH2 0x21fe
000014ce: JUMP
000014cf: JUMPDEST
000014d0: SWAP1
000014d1: POP
000014d2: PUSH2 0x1481
000014d5: JUMP
000014d6: JUMPDEST
000014d7: POP
000014d8: PUSH2 0x14e2
000014db: DUP8
000014dc: PUSH1 0x01
000014de: PUSH2 0x21fe
000014e1: JUMP
000014e2: JUMPDEST
000014e3: PUSH1 0x6e
000014e5: SSTORE
000014e6: PUSH1 0x00
000014e8: JUMPDEST
000014e9: DUP4
000014ea: DUP2
000014eb: LT
000014ec: ISZERO
000014ed: PUSH2 0x152c
000014f0: JUMPI
000014f1: PUSH2 0x151a
000014f4: DUP6
000014f5: DUP6
000014f6: DUP4
000014f7: DUP2
000014f8: DUP2
000014f9: LT
000014fa: PUSH2 0x1505
000014fd: JUMPI
000014fe: PUSH2 0x1505
00001501: PUSH2 0x21d1
00001504: JUMP
00001505: JUMPDEST
00001506: SWAP1
00001507: POP
00001508: PUSH1 0x20
0000150a: MUL
0000150b: ADD
0000150c: PUSH1 0x20
0000150e: DUP2
0000150f: ADD
00001510: SWAP1
00001511: PUSH2 0x0469
00001514: SWAP2
00001515: SWAP1
00001516: PUSH2 0x1fb3
00001519: JUMP
0000151a: JUMPDEST
0000151b: PUSH2 0x1525
0000151e: PUSH1 0x01
00001520: DUP3
00001521: PUSH2 0x21fe
00001524: JUMP
00001525: JUMPDEST
00001526: SWAP1
00001527: POP
00001528: PUSH2 0x14e8
0000152b: JUMP
0000152c: JUMPDEST
0000152d: POP
0000152e: POP
0000152f: POP
00001530: POP
00001531: POP
00001532: POP
00001533: POP
00001534: POP
00001535: POP
00001536: JUMP
00001537: JUMPDEST
00001538: PUSH2 0x153f
0000153b: PUSH2 0x18a1
0000153e: JUMP
0000153f: JUMPDEST
00001540: PUSH1 0x00
00001542: SWAP1
00001543: DUP2
00001544: MSTORE
00001545: PUSH1 0x70
00001547: PUSH1 0x20
00001549: MSTORE
0000154a: PUSH1 0x40
0000154c: SWAP1
0000154d: KECCAK256
0000154e: DUP1
0000154f: SLOAD
00001550: PUSH1 0xff
00001552: NOT
00001553: AND
00001554: SWAP1
00001555: SSTORE
00001556: JUMP
00001557: JUMPDEST
00001558: PUSH1 0x01
0000155a: PUSH1 0x01
0000155c: PUSH1 0xa0
0000155e: SHL
0000155f: SUB
00001560: DUP2
00001561: AND
00001562: PUSH1 0x00
00001564: SWAP1
00001565: DUP2
00001566: MSTORE
00001567: PUSH1 0x6c
00001569: PUSH1 0x20
0000156b: MSTORE
0000156c: PUSH1 0x40
0000156e: SWAP1
0000156f: KECCAK256
00001570: SLOAD
00001571: PUSH1 0xff
00001573: AND
00001574: PUSH2 0x15e5
00001577: JUMPI
00001578: PUSH1 0x40
0000157a: MLOAD
0000157b: PUSH3 0x461bcd
0000157f: PUSH1 0xe5
00001581: SHL
00001582: DUP2
00001583: MSTORE
00001584: PUSH1 0x20
00001586: PUSH1 0x04
00001588: DUP3
00001589: ADD
0000158a: MSTORE
0000158b: PUSH1 0x32
0000158d: PUSH1 0x24
0000158f: DUP3
00001590: ADD
00001591: MSTORE
00001592: PUSH32 0x476f7665726e6f72526577617264733a20546f6b656e206973206e6f74206f6e
000015b3: PUSH1 0x44
000015b5: DUP3
000015b6: ADD
000015b7: MSTORE
000015b8: PUSH32 0x20646973747269627574696f6e206c6973740000000000000000000000000000
000015d9: PUSH1 0x64
000015db: DUP3
000015dc: ADD
000015dd: MSTORE
000015de: PUSH1 0x84
000015e0: ADD
000015e1: PUSH2 0x0535
000015e4: JUMP
000015e5: JUMPDEST
000015e6: PUSH1 0x01
000015e8: PUSH1 0x01
000015ea: PUSH1 0xa0
000015ec: SHL
000015ed: SUB
000015ee: DUP2
000015ef: AND
000015f0: PUSH1 0x00
000015f2: SWAP1
000015f3: DUP2
000015f4: MSTORE
000015f5: PUSH1 0x6d
000015f7: PUSH1 0x20
000015f9: MSTORE
000015fa: PUSH1 0x40
000015fc: DUP2
000015fd: KECCAK256
000015fe: SLOAD
000015ff: PUSH1 0x6e
00001601: SLOAD
00001602: SWAP1
00001603: SWAP2
00001604: SWAP1
00001605: PUSH2 0x1610
00001608: SWAP1
00001609: PUSH1 0x01
0000160b: SWAP1
0000160c: PUSH2 0x2186
0000160f: JUMP
00001610: JUMPDEST
00001611: PUSH1 0x66
00001613: SLOAD
00001614: PUSH1 0x40
00001616: MLOAD
00001617: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00001638: DUP2
00001639: MSTORE
0000163a: PUSH1 0x01
0000163c: PUSH1 0x01
0000163e: PUSH1 0xa0
00001640: SHL
00001641: SUB
00001642: SWAP2
00001643: DUP3
00001644: AND
00001645: PUSH1 0x04
00001647: DUP3
00001648: ADD
00001649: MSTORE
0000164a: SWAP2
0000164b: SWAP3
0000164c: POP
0000164d: PUSH1 0x00
0000164f: SWAP2
00001650: SWAP1
00001651: DUP6
00001652: AND
00001653: SWAP1
00001654: PUSH4 0x70a08231
00001659: SWAP1
0000165a: PUSH1 0x24
0000165c: ADD
0000165d: PUSH1 0x20
0000165f: PUSH1 0x40
00001661: MLOAD
00001662: DUP1
00001663: DUP4
00001664: SUB
00001665: DUP2
00001666: DUP7
00001667: GAS
00001668: STATICCALL
00001669: ISZERO
0000166a: DUP1
0000166b: ISZERO
0000166c: PUSH2 0x1679
0000166f: JUMPI
00001670: RETURNDATASIZE
00001671: PUSH1 0x00
00001673: DUP1
00001674: RETURNDATACOPY
00001675: RETURNDATASIZE
00001676: PUSH1 0x00
00001678: REVERT
00001679: JUMPDEST
0000167a: POP
0000167b: POP
0000167c: POP
0000167d: POP
0000167e: PUSH1 0x40
00001680: MLOAD
00001681: RETURNDATASIZE
00001682: PUSH1 0x1f
00001684: NOT
00001685: PUSH1 0x1f
00001687: DUP3
00001688: ADD
00001689: AND
0000168a: DUP3
0000168b: ADD
0000168c: DUP1
0000168d: PUSH1 0x40
0000168f: MSTORE
00001690: POP
00001691: DUP2
00001692: ADD
00001693: SWAP1
00001694: PUSH2 0x169d
00001697: SWAP2
00001698: SWAP1
00001699: PUSH2 0x226e
0000169c: JUMP
0000169d: JUMPDEST
0000169e: SWAP1
0000169f: POP
000016a0: PUSH1 0x00
000016a2: DUP4
000016a3: JUMPDEST
000016a4: DUP4
000016a5: DUP2
000016a6: GT
000016a7: PUSH2 0x172f
000016aa: JUMPI
000016ab: PUSH1 0x00
000016ad: DUP2
000016ae: DUP2
000016af: MSTORE
000016b0: PUSH1 0x6f
000016b2: PUSH1 0x20
000016b4: MSTORE
000016b5: PUSH1 0x40
000016b7: SWAP1
000016b8: KECCAK256
000016b9: SLOAD
000016ba: ISZERO
000016bb: PUSH2 0x171d
000016be: JUMPI
000016bf: PUSH1 0x00
000016c1: PUSH2 0x2710
000016c4: PUSH1 0x69
000016c6: SLOAD
000016c7: DUP6
000016c8: PUSH2 0x16d1
000016cb: SWAP2
000016cc: SWAP1
000016cd: PUSH2 0x21e7
000016d0: JUMP
000016d1: JUMPDEST
000016d2: PUSH2 0x16db
000016d5: SWAP2
000016d6: SWAP1
000016d7: PUSH2 0x2199
000016da: JUMP
000016db: JUMPDEST
000016dc: PUSH1 0x01
000016de: PUSH1 0x01
000016e0: PUSH1 0xa0
000016e2: SHL
000016e3: SUB
000016e4: DUP9
000016e5: AND
000016e6: PUSH1 0x00
000016e8: SWAP1
000016e9: DUP2
000016ea: MSTORE
000016eb: PUSH1 0x6b
000016ed: PUSH1 0x20
000016ef: SWAP1
000016f0: DUP2
000016f1: MSTORE
000016f2: PUSH1 0x40
000016f4: DUP1
000016f5: DUP4
000016f6: KECCAK256
000016f7: DUP7
000016f8: DUP5
000016f9: MSTORE
000016fa: SWAP1
000016fb: SWAP2
000016fc: MSTORE
000016fd: SWAP1
000016fe: KECCAK256
000016ff: DUP2
00001700: SWAP1
00001701: SSTORE
00001702: SWAP1
00001703: POP
00001704: PUSH2 0x170d
00001707: DUP2
00001708: DUP5
00001709: PUSH2 0x21fe
0000170c: JUMP
0000170d: JUMPDEST
0000170e: SWAP3
0000170f: POP
00001710: PUSH2 0x1719
00001713: DUP2
00001714: DUP6
00001715: PUSH2 0x2186
00001718: JUMP
00001719: JUMPDEST
0000171a: SWAP4
0000171b: POP
0000171c: POP
0000171d: JUMPDEST
0000171e: DUP1
0000171f: PUSH2 0x1727
00001722: DUP2
00001723: PUSH2 0x22f1
00001726: JUMP
00001727: JUMPDEST
00001728: SWAP2
00001729: POP
0000172a: POP
0000172b: PUSH2 0x16a3
0000172e: JUMP
0000172f: JUMPDEST
00001730: POP
00001731: PUSH2 0x173b
00001734: DUP4
00001735: PUSH1 0x01
00001737: PUSH2 0x21fe
0000173a: JUMP
0000173b: JUMPDEST
0000173c: PUSH1 0x01
0000173e: PUSH1 0x01
00001740: PUSH1 0xa0
00001742: SHL
00001743: SUB
00001744: DUP7
00001745: DUP2
00001746: AND
00001747: PUSH1 0x00
00001749: DUP2
0000174a: DUP2
0000174b: MSTORE
0000174c: PUSH1 0x6d
0000174e: PUSH1 0x20
00001750: MSTORE
00001751: PUSH1 0x40
00001753: SWAP1
00001754: DUP2
00001755: SWAP1
00001756: KECCAK256
00001757: SWAP4
00001758: SWAP1
00001759: SWAP4
0000175a: SSTORE
0000175b: PUSH1 0x66
0000175d: SLOAD
0000175e: SWAP3
0000175f: MLOAD
00001760: PUSH32 0x9db5dbe400000000000000000000000000000000000000000000000000000000
00001781: DUP2
00001782: MSTORE
00001783: PUSH1 0x04
00001785: DUP2
00001786: ADD
00001787: SWAP2
00001788: SWAP1
00001789: SWAP2
0000178a: MSTORE
0000178b: ADDRESS
0000178c: PUSH1 0x24
0000178e: DUP3
0000178f: ADD
00001790: MSTORE
00001791: PUSH1 0x44
00001793: DUP2
00001794: ADD
00001795: DUP5
00001796: SWAP1
00001797: MSTORE
00001798: SWAP2
00001799: AND
0000179a: SWAP1
0000179b: PUSH4 0x9db5dbe4
000017a0: SWAP1
000017a1: PUSH1 0x64
000017a3: ADD
000017a4: PUSH1 0x00
000017a6: PUSH1 0x40
000017a8: MLOAD
000017a9: DUP1
000017aa: DUP4
000017ab: SUB
000017ac: DUP2
000017ad: PUSH1 0x00
000017af: DUP8
000017b0: DUP1
000017b1: EXTCODESIZE
000017b2: ISZERO
000017b3: DUP1
000017b4: ISZERO
000017b5: PUSH2 0x17bd
000017b8: JUMPI
000017b9: PUSH1 0x00
000017bb: DUP1
000017bc: REVERT
000017bd: JUMPDEST
000017be: POP
000017bf: GAS
000017c0: CALL
000017c1: ISZERO
000017c2: DUP1
000017c3: ISZERO
000017c4: PUSH2 0x152c
000017c7: JUMPI
000017c8: RETURNDATASIZE
000017c9: PUSH1 0x00
000017cb: DUP1
000017cc: RETURNDATACOPY
000017cd: RETURNDATASIZE
000017ce: PUSH1 0x00
000017d0: REVERT
000017d1: JUMPDEST
000017d2: PUSH2 0x17d9
000017d5: PUSH2 0x18a1
000017d8: JUMP
000017d9: JUMPDEST
000017da: PUSH1 0x01
000017dc: PUSH1 0x01
000017de: PUSH1 0xa0
000017e0: SHL
000017e1: SUB
000017e2: DUP2
000017e3: AND
000017e4: PUSH2 0x1855
000017e7: JUMPI
000017e8: PUSH1 0x40
000017ea: MLOAD
000017eb: PUSH3 0x461bcd
000017ef: PUSH1 0xe5
000017f1: SHL
000017f2: DUP2
000017f3: MSTORE
000017f4: PUSH1 0x20
000017f6: PUSH1 0x04
000017f8: DUP3
000017f9: ADD
000017fa: MSTORE
000017fb: PUSH1 0x26
000017fd: PUSH1 0x24
000017ff: DUP3
00001800: ADD
00001801: MSTORE
00001802: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00001823: PUSH1 0x44
00001825: DUP3
00001826: ADD
00001827: MSTORE
00001828: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000
00001849: PUSH1 0x64
0000184b: DUP3
0000184c: ADD
0000184d: MSTORE
0000184e: PUSH1 0x84
00001850: ADD
00001851: PUSH2 0x0535
00001854: JUMP
00001855: JUMPDEST
00001856: PUSH2 0x05e7
00001859: DUP2
0000185a: PUSH2 0x18fb
0000185d: JUMP
0000185e: JUMPDEST
0000185f: PUSH1 0x01
00001861: PUSH1 0x01
00001863: PUSH1 0xa0
00001865: SHL
00001866: SUB
00001867: DUP4
00001868: DUP2
00001869: AND
0000186a: PUSH1 0x00
0000186c: SWAP1
0000186d: DUP2
0000186e: MSTORE
0000186f: PUSH1 0x6a
00001871: PUSH1 0x20
00001873: SWAP1
00001874: DUP2
00001875: MSTORE
00001876: PUSH1 0x40
00001878: DUP1
00001879: DUP4
0000187a: KECCAK256
0000187b: SWAP4
0000187c: DUP7
0000187d: AND
0000187e: DUP4
0000187f: MSTORE
00001880: SWAP3
00001881: DUP2
00001882: MSTORE
00001883: DUP3
00001884: DUP3
00001885: KECCAK256
00001886: PUSH1 0x08
00001888: DUP6
00001889: SWAP1
0000188a: SHR
0000188b: DUP4
0000188c: MSTORE
0000188d: SWAP1
0000188e: MSTORE
0000188f: SWAP1
00001890: DUP2
00001891: KECCAK256
00001892: SLOAD
00001893: PUSH1 0x01
00001895: PUSH1 0xff
00001897: DUP5
00001898: AND
00001899: SHL
0000189a: AND
0000189b: ISZERO
0000189c: ISZERO
0000189d: PUSH2 0x1358
000018a0: JUMP
000018a1: JUMPDEST
000018a2: PUSH1 0x33
000018a4: SLOAD
000018a5: PUSH1 0x01
000018a7: PUSH1 0x01
000018a9: PUSH1 0xa0
000018ab: SHL
000018ac: SUB
000018ad: AND
000018ae: CALLER
000018af: EQ
000018b0: PUSH2 0x0c4c
000018b3: JUMPI
000018b4: PUSH1 0x40
000018b6: MLOAD
000018b7: PUSH3 0x461bcd
000018bb: PUSH1 0xe5
000018bd: SHL
000018be: DUP2
000018bf: MSTORE
000018c0: PUSH1 0x20
000018c2: PUSH1 0x04
000018c4: DUP3
000018c5: ADD
000018c6: DUP2
000018c7: SWAP1
000018c8: MSTORE
000018c9: PUSH1 0x24
000018cb: DUP3
000018cc: ADD
000018cd: MSTORE
000018ce: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
000018ef: PUSH1 0x44
000018f1: DUP3
000018f2: ADD
000018f3: MSTORE
000018f4: PUSH1 0x64
000018f6: ADD
000018f7: PUSH2 0x0535
000018fa: JUMP
000018fb: JUMPDEST
000018fc: PUSH1 0x33
000018fe: DUP1
000018ff: SLOAD
00001900: PUSH1 0x01
00001902: PUSH1 0x01
00001904: PUSH1 0xa0
00001906: SHL
00001907: SUB
00001908: DUP4
00001909: DUP2
0000190a: AND
0000190b: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
0000192c: DUP4
0000192d: AND
0000192e: DUP2
0000192f: OR
00001930: SWAP1
00001931: SWAP4
00001932: SSTORE
00001933: PUSH1 0x40
00001935: MLOAD
00001936: SWAP2
00001937: AND
00001938: SWAP2
00001939: SWAP1
0000193a: DUP3
0000193b: SWAP1
0000193c: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
0000195d: SWAP1
0000195e: PUSH1 0x00
00001960: SWAP1
00001961: LOG3
00001962: POP
00001963: POP
00001964: JUMP
00001965: JUMPDEST
00001966: PUSH1 0x40
00001968: DUP1
00001969: MLOAD
0000196a: PUSH1 0x01
0000196c: PUSH1 0x01
0000196e: PUSH1 0xa0
00001970: SHL
00001971: SUB
00001972: DUP5
00001973: AND
00001974: PUSH1 0x24
00001976: DUP3
00001977: ADD
00001978: MSTORE
00001979: PUSH1 0x44
0000197b: DUP1
0000197c: DUP3
0000197d: ADD
0000197e: DUP5
0000197f: SWAP1
00001980: MSTORE
00001981: DUP3
00001982: MLOAD
00001983: DUP1
00001984: DUP4
00001985: SUB
00001986: SWAP1
00001987: SWAP2
00001988: ADD
00001989: DUP2
0000198a: MSTORE
0000198b: PUSH1 0x64
0000198d: SWAP1
0000198e: SWAP2
0000198f: ADD
00001990: SWAP1
00001991: SWAP2
00001992: MSTORE
00001993: PUSH1 0x20
00001995: DUP2
00001996: ADD
00001997: DUP1
00001998: MLOAD
00001999: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000019b6: AND
000019b7: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
000019d8: OR
000019d9: SWAP1
000019da: MSTORE
000019db: PUSH2 0x0b8b
000019de: SWAP1
000019df: DUP5
000019e0: SWAP1
000019e1: PUSH2 0x1a6a
000019e4: JUMP
000019e5: JUMPDEST
000019e6: PUSH1 0x00
000019e8: SLOAD
000019e9: PUSH2 0x0100
000019ec: SWAP1
000019ed: DIV
000019ee: PUSH1 0xff
000019f0: AND
000019f1: PUSH2 0x1a62
000019f4: JUMPI
000019f5: PUSH1 0x40
000019f7: MLOAD
000019f8: PUSH3 0x461bcd
000019fc: PUSH1 0xe5
000019fe: SHL
000019ff: DUP2
00001a00: MSTORE
00001a01: PUSH1 0x20
00001a03: PUSH1 0x04
00001a05: DUP3
00001a06: ADD
00001a07: MSTORE
00001a08: PUSH1 0x2b
00001a0a: PUSH1 0x24
00001a0c: DUP3
00001a0d: ADD
00001a0e: MSTORE
00001a0f: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00001a30: PUSH1 0x44
00001a32: DUP3
00001a33: ADD
00001a34: MSTORE
00001a35: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00001a56: PUSH1 0x64
00001a58: DUP3
00001a59: ADD
00001a5a: MSTORE
00001a5b: PUSH1 0x84
00001a5d: ADD
00001a5e: PUSH2 0x0535
00001a61: JUMP
00001a62: JUMPDEST
00001a63: PUSH2 0x0c4c
00001a66: PUSH2 0x1b4f
00001a69: JUMP
00001a6a: JUMPDEST
00001a6b: PUSH1 0x00
00001a6d: PUSH2 0x1abf
00001a70: DUP3
00001a71: PUSH1 0x40
00001a73: MLOAD
00001a74: DUP1
00001a75: PUSH1 0x40
00001a77: ADD
00001a78: PUSH1 0x40
00001a7a: MSTORE
00001a7b: DUP1
00001a7c: PUSH1 0x20
00001a7e: DUP2
00001a7f: MSTORE
00001a80: PUSH1 0x20
00001a82: ADD
00001a83: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00001aa4: DUP2
00001aa5: MSTORE
00001aa6: POP
00001aa7: DUP6
00001aa8: PUSH1 0x01
00001aaa: PUSH1 0x01
00001aac: PUSH1 0xa0
00001aae: SHL
00001aaf: SUB
00001ab0: AND
00001ab1: PUSH2 0x1bd5
00001ab4: SWAP1
00001ab5: SWAP3
00001ab6: SWAP2
00001ab7: SWAP1
00001ab8: PUSH4 0xffffffff
00001abd: AND
00001abe: JUMP
00001abf: JUMPDEST
00001ac0: DUP1
00001ac1: MLOAD
00001ac2: SWAP1
00001ac3: SWAP2
00001ac4: POP
00001ac5: ISZERO
00001ac6: PUSH2 0x0b8b
00001ac9: JUMPI
00001aca: DUP1
00001acb: DUP1
00001acc: PUSH1 0x20
00001ace: ADD
00001acf: SWAP1
00001ad0: MLOAD
00001ad1: DUP2
00001ad2: ADD
00001ad3: SWAP1
00001ad4: PUSH2 0x1add
00001ad7: SWAP2
00001ad8: SWAP1
00001ad9: PUSH2 0x230a
00001adc: JUMP
00001add: JUMPDEST
00001ade: PUSH2 0x0b8b
00001ae1: JUMPI
00001ae2: PUSH1 0x40
00001ae4: MLOAD
00001ae5: PUSH3 0x461bcd
00001ae9: PUSH1 0xe5
00001aeb: SHL
00001aec: DUP2
00001aed: MSTORE
00001aee: PUSH1 0x20
00001af0: PUSH1 0x04
00001af2: DUP3
00001af3: ADD
00001af4: MSTORE
00001af5: PUSH1 0x2a
00001af7: PUSH1 0x24
00001af9: DUP3
00001afa: ADD
00001afb: MSTORE
00001afc: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00001b1d: PUSH1 0x44
00001b1f: DUP3
00001b20: ADD
00001b21: MSTORE
00001b22: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
00001b43: PUSH1 0x64
00001b45: DUP3
00001b46: ADD
00001b47: MSTORE
00001b48: PUSH1 0x84
00001b4a: ADD
00001b4b: PUSH2 0x0535
00001b4e: JUMP
00001b4f: JUMPDEST
00001b50: PUSH1 0x00
00001b52: SLOAD
00001b53: PUSH2 0x0100
00001b56: SWAP1
00001b57: DIV
00001b58: PUSH1 0xff
00001b5a: AND
00001b5b: PUSH2 0x1bcc
00001b5e: JUMPI
00001b5f: PUSH1 0x40
00001b61: MLOAD
00001b62: PUSH3 0x461bcd
00001b66: PUSH1 0xe5
00001b68: SHL
00001b69: DUP2
00001b6a: MSTORE
00001b6b: PUSH1 0x20
00001b6d: PUSH1 0x04
00001b6f: DUP3
00001b70: ADD
00001b71: MSTORE
00001b72: PUSH1 0x2b
00001b74: PUSH1 0x24
00001b76: DUP3
00001b77: ADD
00001b78: MSTORE
00001b79: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069
00001b9a: PUSH1 0x44
00001b9c: DUP3
00001b9d: ADD
00001b9e: MSTORE
00001b9f: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000
00001bc0: PUSH1 0x64
00001bc2: DUP3
00001bc3: ADD
00001bc4: MSTORE
00001bc5: PUSH1 0x84
00001bc7: ADD
00001bc8: PUSH2 0x0535
00001bcb: JUMP
00001bcc: JUMPDEST
00001bcd: PUSH2 0x0c4c
00001bd0: CALLER
00001bd1: PUSH2 0x18fb
00001bd4: JUMP
00001bd5: JUMPDEST
00001bd6: PUSH1 0x60
00001bd8: PUSH2 0x1358
00001bdb: DUP5
00001bdc: DUP5
00001bdd: PUSH1 0x00
00001bdf: DUP6
00001be0: DUP6
00001be1: PUSH1 0x00
00001be3: DUP1
00001be4: DUP7
00001be5: PUSH1 0x01
00001be7: PUSH1 0x01
00001be9: PUSH1 0xa0
00001beb: SHL
00001bec: SUB
00001bed: AND
00001bee: DUP6
00001bef: DUP8
00001bf0: PUSH1 0x40
00001bf2: MLOAD
00001bf3: PUSH2 0x1bfc
00001bf6: SWAP2
00001bf7: SWAP1
00001bf8: PUSH2 0x234b
00001bfb: JUMP
00001bfc: JUMPDEST
00001bfd: PUSH1 0x00
00001bff: PUSH1 0x40
00001c01: MLOAD
00001c02: DUP1
00001c03: DUP4
00001c04: SUB
00001c05: DUP2
00001c06: DUP6
00001c07: DUP8
00001c08: GAS
00001c09: CALL
00001c0a: SWAP3
00001c0b: POP
00001c0c: POP
00001c0d: POP
00001c0e: RETURNDATASIZE
00001c0f: DUP1
00001c10: PUSH1 0x00
00001c12: DUP2
00001c13: EQ
00001c14: PUSH2 0x1c39
00001c17: JUMPI
00001c18: PUSH1 0x40
00001c1a: MLOAD
00001c1b: SWAP2
00001c1c: POP
00001c1d: PUSH1 0x1f
00001c1f: NOT
00001c20: PUSH1 0x3f
00001c22: RETURNDATASIZE
00001c23: ADD
00001c24: AND
00001c25: DUP3
00001c26: ADD
00001c27: PUSH1 0x40
00001c29: MSTORE
00001c2a: RETURNDATASIZE
00001c2b: DUP3
00001c2c: MSTORE
00001c2d: RETURNDATASIZE
00001c2e: PUSH1 0x00
00001c30: PUSH1 0x20
00001c32: DUP5
00001c33: ADD
00001c34: RETURNDATACOPY
00001c35: PUSH2 0x1c3e
00001c38: JUMP
00001c39: JUMPDEST
00001c3a: PUSH1 0x60
00001c3c: SWAP2
00001c3d: POP
00001c3e: JUMPDEST
00001c3f: POP
00001c40: SWAP2
00001c41: POP
00001c42: SWAP2
00001c43: POP
00001c44: PUSH2 0x1c4f
00001c47: DUP8
00001c48: DUP4
00001c49: DUP4
00001c4a: DUP8
00001c4b: PUSH2 0x1c5a
00001c4e: JUMP
00001c4f: JUMPDEST
00001c50: SWAP8
00001c51: SWAP7
00001c52: POP
00001c53: POP
00001c54: POP
00001c55: POP
00001c56: POP
00001c57: POP
00001c58: POP
00001c59: JUMP
00001c5a: JUMPDEST
00001c5b: PUSH1 0x60
00001c5d: DUP4
00001c5e: ISZERO
00001c5f: PUSH2 0x1cc9
00001c62: JUMPI
00001c63: DUP3
00001c64: MLOAD
00001c65: PUSH1 0x00
00001c67: SUB
00001c68: PUSH2 0x1cc2
00001c6b: JUMPI
00001c6c: PUSH1 0x01
00001c6e: PUSH1 0x01
00001c70: PUSH1 0xa0
00001c72: SHL
00001c73: SUB
00001c74: DUP6
00001c75: AND
00001c76: EXTCODESIZE
00001c77: PUSH2 0x1cc2
00001c7a: JUMPI
00001c7b: PUSH1 0x40
00001c7d: MLOAD
00001c7e: PUSH3 0x461bcd
00001c82: PUSH1 0xe5
00001c84: SHL
00001c85: DUP2
00001c86: MSTORE
00001c87: PUSH1 0x20
00001c89: PUSH1 0x04
00001c8b: DUP3
00001c8c: ADD
00001c8d: MSTORE
00001c8e: PUSH1 0x1d
00001c90: PUSH1 0x24
00001c92: DUP3
00001c93: ADD
00001c94: MSTORE
00001c95: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00001cb6: PUSH1 0x44
00001cb8: DUP3
00001cb9: ADD
00001cba: MSTORE
00001cbb: PUSH1 0x64
00001cbd: ADD
00001cbe: PUSH2 0x0535
00001cc1: JUMP
00001cc2: JUMPDEST
00001cc3: POP
00001cc4: DUP2
00001cc5: PUSH2 0x1358
00001cc8: JUMP
00001cc9: JUMPDEST
00001cca: PUSH2 0x1358
00001ccd: DUP4
00001cce: DUP4
00001ccf: DUP2
00001cd0: MLOAD
00001cd1: ISZERO
00001cd2: PUSH2 0x1cde
00001cd5: JUMPI
00001cd6: DUP2
00001cd7: MLOAD
00001cd8: DUP1
00001cd9: DUP4
00001cda: PUSH1 0x20
00001cdc: ADD
00001cdd: REVERT
00001cde: JUMPDEST
00001cdf: DUP1
00001ce0: PUSH1 0x40
00001ce2: MLOAD
00001ce3: PUSH3 0x461bcd
00001ce7: PUSH1 0xe5
00001ce9: SHL
00001cea: DUP2
00001ceb: MSTORE
00001cec: PUSH1 0x04
00001cee: ADD
00001cef: PUSH2 0x0535
00001cf2: SWAP2
00001cf3: SWAP1
00001cf4: PUSH2 0x2367
00001cf7: JUMP
00001cf8: JUMPDEST
00001cf9: PUSH1 0x00
00001cfb: PUSH1 0x20
00001cfd: DUP3
00001cfe: DUP5
00001cff: SUB
00001d00: SLT
00001d01: ISZERO
00001d02: PUSH2 0x1d0a
00001d05: JUMPI
00001d06: PUSH1 0x00
00001d08: DUP1
00001d09: REVERT
00001d0a: JUMPDEST
00001d0b: POP
00001d0c: CALLDATALOAD
00001d0d: SWAP2
00001d0e: SWAP1
00001d0f: POP
00001d10: JUMP
00001d11: JUMPDEST
00001d12: PUSH1 0x00
00001d14: DUP1
00001d15: DUP4
00001d16: PUSH1 0x1f
00001d18: DUP5
00001d19: ADD
00001d1a: SLT
00001d1b: PUSH2 0x1d23
00001d1e: JUMPI
00001d1f: PUSH1 0x00
00001d21: DUP1
00001d22: REVERT
00001d23: JUMPDEST
00001d24: POP
00001d25: DUP2
00001d26: CALLDATALOAD
00001d27: PUSH8 0xffffffffffffffff
00001d30: DUP2
00001d31: GT
00001d32: ISZERO
00001d33: PUSH2 0x1d3b
00001d36: JUMPI
00001d37: PUSH1 0x00
00001d39: DUP1
00001d3a: REVERT
00001d3b: JUMPDEST
00001d3c: PUSH1 0x20
00001d3e: DUP4
00001d3f: ADD
00001d40: SWAP2
00001d41: POP
00001d42: DUP4
00001d43: PUSH1 0x20
00001d45: DUP3
00001d46: PUSH1 0x05
00001d48: SHL
00001d49: DUP6
00001d4a: ADD
00001d4b: ADD
00001d4c: GT
00001d4d: ISZERO
00001d4e: PUSH2 0x1d56
00001d51: JUMPI
00001d52: PUSH1 0x00
00001d54: DUP1
00001d55: REVERT
00001d56: JUMPDEST
00001d57: SWAP3
00001d58: POP
00001d59: SWAP3
00001d5a: SWAP1
00001d5b: POP
00001d5c: JUMP
00001d5d: JUMPDEST
00001d5e: PUSH1 0x01
00001d60: PUSH1 0x01
00001d62: PUSH1 0xa0
00001d64: SHL
00001d65: SUB
00001d66: DUP2
00001d67: AND
00001d68: DUP2
00001d69: EQ
00001d6a: PUSH2 0x05e7
00001d6d: JUMPI
00001d6e: PUSH1 0x00
00001d70: DUP1
00001d71: REVERT
00001d72: JUMPDEST
00001d73: DUP1
00001d74: ISZERO
00001d75: ISZERO
00001d76: DUP2
00001d77: EQ
00001d78: PUSH2 0x05e7
00001d7b: JUMPI
00001d7c: PUSH1 0x00
00001d7e: DUP1
00001d7f: REVERT
00001d80: JUMPDEST
00001d81: PUSH1 0x00
00001d83: DUP1
00001d84: PUSH1 0x00
00001d86: DUP1
00001d87: PUSH1 0x00
00001d89: DUP1
00001d8a: PUSH1 0x00
00001d8c: DUP1
00001d8d: PUSH1 0xc0
00001d8f: DUP10
00001d90: DUP12
00001d91: SUB
00001d92: SLT
00001d93: ISZERO
00001d94: PUSH2 0x1d9c
00001d97: JUMPI
00001d98: PUSH1 0x00
00001d9a: DUP1
00001d9b: REVERT
00001d9c: JUMPDEST
00001d9d: DUP9
00001d9e: CALLDATALOAD
00001d9f: PUSH8 0xffffffffffffffff
00001da8: DUP1
00001da9: DUP3
00001daa: GT
00001dab: ISZERO
00001dac: PUSH2 0x1db4
00001daf: JUMPI
00001db0: PUSH1 0x00
00001db2: DUP1
00001db3: REVERT
00001db4: JUMPDEST
00001db5: PUSH2 0x1dc0
00001db8: DUP13
00001db9: DUP4
00001dba: DUP14
00001dbb: ADD
00001dbc: PUSH2 0x1d11
00001dbf: JUMP
00001dc0: JUMPDEST
00001dc1: SWAP1
00001dc2: SWAP11
00001dc3: POP
00001dc4: SWAP9
00001dc5: POP
00001dc6: PUSH1 0x20
00001dc8: DUP12
00001dc9: ADD
00001dca: CALLDATALOAD
00001dcb: SWAP2
00001dcc: POP
00001dcd: PUSH2 0x1dd5
00001dd0: DUP3
00001dd1: PUSH2 0x1d5d
00001dd4: JUMP
00001dd5: JUMPDEST
00001dd6: SWAP1
00001dd7: SWAP7
00001dd8: POP
00001dd9: PUSH1 0x40
00001ddb: DUP11
00001ddc: ADD
00001ddd: CALLDATALOAD
00001dde: SWAP6
00001ddf: POP
00001de0: PUSH1 0x60
00001de2: DUP11
00001de3: ADD
00001de4: CALLDATALOAD
00001de5: SWAP5
00001de6: POP
00001de7: PUSH1 0x80
00001de9: DUP11
00001dea: ADD
00001deb: CALLDATALOAD
00001dec: SWAP1
00001ded: DUP1
00001dee: DUP3
00001def: GT
00001df0: ISZERO
00001df1: PUSH2 0x1df9
00001df4: JUMPI
00001df5: PUSH1 0x00
00001df7: DUP1
00001df8: REVERT
00001df9: JUMPDEST
00001dfa: POP
00001dfb: PUSH2 0x1e06
00001dfe: DUP12
00001dff: DUP3
00001e00: DUP13
00001e01: ADD
00001e02: PUSH2 0x1d11
00001e05: JUMP
00001e06: JUMPDEST
00001e07: SWAP1
00001e08: SWAP5
00001e09: POP
00001e0a: SWAP3
00001e0b: POP
00001e0c: POP
00001e0d: PUSH1 0xa0
00001e0f: DUP10
00001e10: ADD
00001e11: CALLDATALOAD
00001e12: PUSH2 0x1e1a
00001e15: DUP2
00001e16: PUSH2 0x1d72
00001e19: JUMP
00001e1a: JUMPDEST
00001e1b: DUP1
00001e1c: SWAP2
00001e1d: POP
00001e1e: POP
00001e1f: SWAP3
00001e20: SWAP6
00001e21: SWAP9
00001e22: POP
00001e23: SWAP3
00001e24: SWAP6
00001e25: SWAP9
00001e26: SWAP1
00001e27: SWAP4
00001e28: SWAP7
00001e29: POP
00001e2a: JUMP
00001e2b: JUMPDEST
00001e2c: PUSH1 0x20
00001e2e: DUP1
00001e2f: DUP3
00001e30: MSTORE
00001e31: DUP3
00001e32: MLOAD
00001e33: DUP3
00001e34: DUP3
00001e35: ADD
00001e36: DUP2
00001e37: SWAP1
00001e38: MSTORE
00001e39: PUSH1 0x00
00001e3b: SWAP2
00001e3c: SWAP1
00001e3d: DUP5
00001e3e: DUP3
00001e3f: ADD
00001e40: SWAP1
00001e41: PUSH1 0x40
00001e43: DUP6
00001e44: ADD
00001e45: SWAP1
00001e46: DUP5
00001e47: JUMPDEST
00001e48: DUP2
00001e49: DUP2
00001e4a: LT
00001e4b: ISZERO
00001e4c: PUSH2 0x1e63
00001e4f: JUMPI
00001e50: DUP4
00001e51: MLOAD
00001e52: DUP4
00001e53: MSTORE
00001e54: SWAP3
00001e55: DUP5
00001e56: ADD
00001e57: SWAP3
00001e58: SWAP2
00001e59: DUP5
00001e5a: ADD
00001e5b: SWAP2
00001e5c: PUSH1 0x01
00001e5e: ADD
00001e5f: PUSH2 0x1e47
00001e62: JUMP
00001e63: JUMPDEST
00001e64: POP
00001e65: SWAP1
00001e66: SWAP7
00001e67: SWAP6
00001e68: POP
00001e69: POP
00001e6a: POP
00001e6b: POP
00001e6c: POP
00001e6d: POP
00001e6e: JUMP
00001e6f: JUMPDEST
00001e70: PUSH1 0x00
00001e72: DUP1
00001e73: PUSH1 0x00
00001e75: DUP1
00001e76: PUSH1 0x00
00001e78: PUSH1 0x80
00001e7a: DUP7
00001e7b: DUP9
00001e7c: SUB
00001e7d: SLT
00001e7e: ISZERO
00001e7f: PUSH2 0x1e87
00001e82: JUMPI
00001e83: PUSH1 0x00
00001e85: DUP1
00001e86: REVERT
00001e87: JUMPDEST
00001e88: DUP6
00001e89: CALLDATALOAD
00001e8a: SWAP5
00001e8b: POP
00001e8c: PUSH1 0x20
00001e8e: DUP7
00001e8f: ADD
00001e90: CALLDATALOAD
00001e91: SWAP4
00001e92: POP
00001e93: PUSH1 0x40
00001e95: DUP7
00001e96: ADD
00001e97: CALLDATALOAD
00001e98: PUSH2 0x1ea0
00001e9b: DUP2
00001e9c: PUSH2 0x1d5d
00001e9f: JUMP
00001ea0: JUMPDEST
00001ea1: SWAP3
00001ea2: POP
00001ea3: PUSH1 0x60
00001ea5: DUP7
00001ea6: ADD
00001ea7: CALLDATALOAD
00001ea8: PUSH8 0xffffffffffffffff
00001eb1: DUP2
00001eb2: GT
00001eb3: ISZERO
00001eb4: PUSH2 0x1ebc
00001eb7: JUMPI
00001eb8: PUSH1 0x00
00001eba: DUP1
00001ebb: REVERT
00001ebc: JUMPDEST
00001ebd: PUSH2 0x1ec8
00001ec0: DUP9
00001ec1: DUP3
00001ec2: DUP10
00001ec3: ADD
00001ec4: PUSH2 0x1d11
00001ec7: JUMP
00001ec8: JUMPDEST
00001ec9: SWAP7
00001eca: SWAP10
00001ecb: SWAP6
00001ecc: SWAP9
00001ecd: POP
00001ece: SWAP4
00001ecf: SWAP7
00001ed0: POP
00001ed1: SWAP3
00001ed2: SWAP5
00001ed3: SWAP4
00001ed4: SWAP3
00001ed5: POP
00001ed6: POP
00001ed7: POP
00001ed8: JUMP
00001ed9: JUMPDEST
00001eda: PUSH1 0x00
00001edc: DUP1
00001edd: PUSH1 0x20
00001edf: DUP4
00001ee0: DUP6
00001ee1: SUB
00001ee2: SLT
00001ee3: ISZERO
00001ee4: PUSH2 0x1eec
00001ee7: JUMPI
00001ee8: PUSH1 0x00
00001eea: DUP1
00001eeb: REVERT
00001eec: JUMPDEST
00001eed: DUP3
00001eee: CALLDATALOAD
00001eef: PUSH8 0xffffffffffffffff
00001ef8: DUP2
00001ef9: GT
00001efa: ISZERO
00001efb: PUSH2 0x1f03
00001efe: JUMPI
00001eff: PUSH1 0x00
00001f01: DUP1
00001f02: REVERT
00001f03: JUMPDEST
00001f04: PUSH2 0x1f0f
00001f07: DUP6
00001f08: DUP3
00001f09: DUP7
00001f0a: ADD
00001f0b: PUSH2 0x1d11
00001f0e: JUMP
00001f0f: JUMPDEST
00001f10: SWAP1
00001f11: SWAP7
00001f12: SWAP1
00001f13: SWAP6
00001f14: POP
00001f15: SWAP4
00001f16: POP
00001f17: POP
00001f18: POP
00001f19: POP
00001f1a: JUMP
00001f1b: JUMPDEST
00001f1c: PUSH1 0x00
00001f1e: DUP1
00001f1f: PUSH1 0x00
00001f21: DUP1
00001f22: PUSH1 0x00
00001f24: DUP1
00001f25: PUSH1 0x00
00001f27: PUSH1 0xa0
00001f29: DUP9
00001f2a: DUP11
00001f2b: SUB
00001f2c: SLT
00001f2d: ISZERO
00001f2e: PUSH2 0x1f36
00001f31: JUMPI
00001f32: PUSH1 0x00
00001f34: DUP1
00001f35: REVERT
00001f36: JUMPDEST
00001f37: DUP8
00001f38: CALLDATALOAD
00001f39: PUSH8 0xffffffffffffffff
00001f42: DUP1
00001f43: DUP3
00001f44: GT
00001f45: ISZERO
00001f46: PUSH2 0x1f4e
00001f49: JUMPI
00001f4a: PUSH1 0x00
00001f4c: DUP1
00001f4d: REVERT
00001f4e: JUMPDEST
00001f4f: PUSH2 0x1f5a
00001f52: DUP12
00001f53: DUP4
00001f54: DUP13
00001f55: ADD
00001f56: PUSH2 0x1d11
00001f59: JUMP
00001f5a: JUMPDEST
00001f5b: SWAP1
00001f5c: SWAP10
00001f5d: POP
00001f5e: SWAP8
00001f5f: POP
00001f60: PUSH1 0x20
00001f62: DUP11
00001f63: ADD
00001f64: CALLDATALOAD
00001f65: SWAP2
00001f66: POP
00001f67: PUSH2 0x1f6f
00001f6a: DUP3
00001f6b: PUSH2 0x1d5d
00001f6e: JUMP
00001f6f: JUMPDEST
00001f70: SWAP1
00001f71: SWAP6
00001f72: POP
00001f73: PUSH1 0x40
00001f75: DUP10
00001f76: ADD
00001f77: CALLDATALOAD
00001f78: SWAP5
00001f79: POP
00001f7a: PUSH1 0x60
00001f7c: DUP10
00001f7d: ADD
00001f7e: CALLDATALOAD
00001f7f: SWAP4
00001f80: POP
00001f81: PUSH1 0x80
00001f83: DUP10
00001f84: ADD
00001f85: CALLDATALOAD
00001f86: SWAP1
00001f87: DUP1
00001f88: DUP3
00001f89: GT
00001f8a: ISZERO
00001f8b: PUSH2 0x1f93
00001f8e: JUMPI
00001f8f: PUSH1 0x00
00001f91: DUP1
00001f92: REVERT
00001f93: JUMPDEST
00001f94: POP
00001f95: PUSH2 0x1fa0
00001f98: DUP11
00001f99: DUP3
00001f9a: DUP12
00001f9b: ADD
00001f9c: PUSH2 0x1d11
00001f9f: JUMP
00001fa0: JUMPDEST
00001fa1: SWAP9
00001fa2: SWAP12
00001fa3: SWAP8
00001fa4: SWAP11
00001fa5: POP
00001fa6: SWAP6
00001fa7: SWAP9
00001fa8: POP
00001fa9: SWAP4
00001faa: SWAP7
00001fab: SWAP3
00001fac: SWAP6
00001fad: SWAP3
00001fae: SWAP4
00001faf: POP
00001fb0: POP
00001fb1: POP
00001fb2: JUMP
00001fb3: JUMPDEST
00001fb4: PUSH1 0x00
00001fb6: PUSH1 0x20
00001fb8: DUP3
00001fb9: DUP5
00001fba: SUB
00001fbb: SLT
00001fbc: ISZERO
00001fbd: PUSH2 0x1fc5
00001fc0: JUMPI
00001fc1: PUSH1 0x00
00001fc3: DUP1
00001fc4: REVERT
00001fc5: JUMPDEST
00001fc6: DUP2
00001fc7: CALLDATALOAD
00001fc8: PUSH2 0x1fd0
00001fcb: DUP2
00001fcc: PUSH2 0x1d5d
00001fcf: JUMP
00001fd0: JUMPDEST
00001fd1: SWAP4
00001fd2: SWAP3
00001fd3: POP
00001fd4: POP
00001fd5: POP
00001fd6: JUMP
00001fd7: JUMPDEST
00001fd8: PUSH1 0x00
00001fda: DUP1
00001fdb: PUSH1 0x00
00001fdd: DUP1
00001fde: PUSH1 0x00
00001fe0: PUSH1 0x80
00001fe2: DUP7
00001fe3: DUP9
00001fe4: SUB
00001fe5: SLT
00001fe6: ISZERO
00001fe7: PUSH2 0x1fef
00001fea: JUMPI
00001feb: PUSH1 0x00
00001fed: DUP1
00001fee: REVERT
00001fef: JUMPDEST
00001ff0: DUP6
00001ff1: CALLDATALOAD
00001ff2: PUSH2 0x1ffa
00001ff5: DUP2
00001ff6: PUSH2 0x1d5d
00001ff9: JUMP
00001ffa: JUMPDEST
00001ffb: SWAP5
00001ffc: POP
00001ffd: PUSH1 0x20
00001fff: DUP7
00002000: ADD
00002001: CALLDATALOAD
00002002: PUSH2 0x200a
00002005: DUP2
00002006: PUSH2 0x1d5d
00002009: JUMP
0000200a: JUMPDEST
0000200b: SWAP4
0000200c: POP
0000200d: PUSH1 0x40
0000200f: DUP7
00002010: ADD
00002011: CALLDATALOAD
00002012: SWAP3
00002013: POP
00002014: PUSH1 0x60
00002016: DUP7
00002017: ADD
00002018: CALLDATALOAD
00002019: PUSH8 0xffffffffffffffff
00002022: DUP2
00002023: GT
00002024: ISZERO
00002025: PUSH2 0x1ebc
00002028: JUMPI
00002029: PUSH1 0x00
0000202b: DUP1
0000202c: REVERT
0000202d: JUMPDEST
0000202e: PUSH1 0x00
00002030: DUP1
00002031: PUSH1 0x00
00002033: DUP1
00002034: PUSH1 0x60
00002036: DUP6
00002037: DUP8
00002038: SUB
00002039: SLT
0000203a: ISZERO
0000203b: PUSH2 0x2043
0000203e: JUMPI
0000203f: PUSH1 0x00
00002041: DUP1
00002042: REVERT
00002043: JUMPDEST
00002044: DUP5
00002045: CALLDATALOAD
00002046: SWAP4
00002047: POP
00002048: PUSH1 0x20
0000204a: DUP6
0000204b: ADD
0000204c: CALLDATALOAD
0000204d: SWAP3
0000204e: POP
0000204f: PUSH1 0x40
00002051: DUP6
00002052: ADD
00002053: CALLDATALOAD
00002054: PUSH8 0xffffffffffffffff
0000205d: DUP2
0000205e: GT
0000205f: ISZERO
00002060: PUSH2 0x2068
00002063: JUMPI
00002064: PUSH1 0x00
00002066: DUP1
00002067: REVERT
00002068: JUMPDEST
00002069: PUSH2 0x2074
0000206c: DUP8
0000206d: DUP3
0000206e: DUP9
0000206f: ADD
00002070: PUSH2 0x1d11
00002073: JUMP
00002074: JUMPDEST
00002075: SWAP6
00002076: SWAP9
00002077: SWAP5
00002078: SWAP8
00002079: POP
0000207a: SWAP6
0000207b: POP
0000207c: POP
0000207d: POP
0000207e: POP
0000207f: JUMP
00002080: JUMPDEST
00002081: PUSH1 0x00
00002083: DUP1
00002084: PUSH1 0x00
00002086: DUP1
00002087: PUSH1 0x00
00002089: DUP1
0000208a: PUSH1 0x80
0000208c: DUP8
0000208d: DUP10
0000208e: SUB
0000208f: SLT
00002090: ISZERO
00002091: PUSH2 0x2099
00002094: JUMPI
00002095: PUSH1 0x00
00002097: DUP1
00002098: REVERT
00002099: JUMPDEST
0000209a: DUP7
0000209b: CALLDATALOAD
0000209c: SWAP6
0000209d: POP
0000209e: PUSH1 0x20
000020a0: DUP8
000020a1: ADD
000020a2: CALLDATALOAD
000020a3: SWAP5
000020a4: POP
000020a5: PUSH1 0x40
000020a7: DUP8
000020a8: ADD
000020a9: CALLDATALOAD
000020aa: PUSH8 0xffffffffffffffff
000020b3: DUP1
000020b4: DUP3
000020b5: GT
000020b6: ISZERO
000020b7: PUSH2 0x20bf
000020ba: JUMPI
000020bb: PUSH1 0x00
000020bd: DUP1
000020be: REVERT
000020bf: JUMPDEST
000020c0: PUSH2 0x20cb
000020c3: DUP11
000020c4: DUP4
000020c5: DUP12
000020c6: ADD
000020c7: PUSH2 0x1d11
000020ca: JUMP
000020cb: JUMPDEST
000020cc: SWAP1
000020cd: SWAP7
000020ce: POP
000020cf: SWAP5
000020d0: POP
000020d1: PUSH1 0x60
000020d3: DUP10
000020d4: ADD
000020d5: CALLDATALOAD
000020d6: SWAP2
000020d7: POP
000020d8: DUP1
000020d9: DUP3
000020da: GT
000020db: ISZERO
000020dc: PUSH2 0x20e4
000020df: JUMPI
000020e0: PUSH1 0x00
000020e2: DUP1
000020e3: REVERT
000020e4: JUMPDEST
000020e5: POP
000020e6: PUSH2 0x20f1
000020e9: DUP10
000020ea: DUP3
000020eb: DUP11
000020ec: ADD
000020ed: PUSH2 0x1d11
000020f0: JUMP
000020f1: JUMPDEST
000020f2: SWAP8
000020f3: SWAP11
000020f4: SWAP7
000020f5: SWAP10
000020f6: POP
000020f7: SWAP5
000020f8: SWAP8
000020f9: POP
000020fa: SWAP3
000020fb: SWAP6
000020fc: SWAP4
000020fd: SWAP5
000020fe: SWAP3
000020ff: POP
00002100: POP
00002101: POP
00002102: JUMP
00002103: JUMPDEST
00002104: PUSH1 0x00
00002106: DUP1
00002107: PUSH1 0x00
00002109: PUSH1 0x60
0000210b: DUP5
0000210c: DUP7
0000210d: SUB
0000210e: SLT
0000210f: ISZERO
00002110: PUSH2 0x2118
00002113: JUMPI
00002114: PUSH1 0x00
00002116: DUP1
00002117: REVERT
00002118: JUMPDEST
00002119: DUP4
0000211a: CALLDATALOAD
0000211b: PUSH2 0x2123
0000211e: DUP2
0000211f: PUSH2 0x1d5d
00002122: JUMP
00002123: JUMPDEST
00002124: SWAP3
00002125: POP
00002126: PUSH1 0x20
00002128: DUP5
00002129: ADD
0000212a: CALLDATALOAD
0000212b: PUSH2 0x2133
0000212e: DUP2
0000212f: PUSH2 0x1d5d
00002132: JUMP
00002133: JUMPDEST
00002134: SWAP3
00002135: SWAP6
00002136: SWAP3
00002137: SWAP5
00002138: POP
00002139: POP
0000213a: POP
0000213b: PUSH1 0x40
0000213d: SWAP2
0000213e: SWAP1
0000213f: SWAP2
00002140: ADD
00002141: CALLDATALOAD
00002142: SWAP1
00002143: JUMP
00002144: JUMPDEST
00002145: PUSH1 0x00
00002147: DUP1
00002148: PUSH1 0x40
0000214a: DUP4
0000214b: DUP6
0000214c: SUB
0000214d: SLT
0000214e: ISZERO
0000214f: PUSH2 0x2157
00002152: JUMPI
00002153: PUSH1 0x00
00002155: DUP1
00002156: REVERT
00002157: JUMPDEST
00002158: DUP3
00002159: CALLDATALOAD
0000215a: PUSH2 0x2162
0000215d: DUP2
0000215e: PUSH2 0x1d5d
00002161: JUMP
00002162: JUMPDEST
00002163: SWAP5
00002164: PUSH1 0x20
00002166: SWAP4
00002167: SWAP1
00002168: SWAP4
00002169: ADD
0000216a: CALLDATALOAD
0000216b: SWAP4
0000216c: POP
0000216d: POP
0000216e: POP
0000216f: JUMP
00002170: JUMPDEST
00002171: PUSH4 0x4e487b71
00002176: PUSH1 0xe0
00002178: SHL
00002179: PUSH1 0x00
0000217b: MSTORE
0000217c: PUSH1 0x11
0000217e: PUSH1 0x04
00002180: MSTORE
00002181: PUSH1 0x24
00002183: PUSH1 0x00
00002185: REVERT
00002186: JUMPDEST
00002187: DUP2
00002188: DUP2
00002189: SUB
0000218a: DUP2
0000218b: DUP2
0000218c: GT
0000218d: ISZERO
0000218e: PUSH2 0x0558
00002191: JUMPI
00002192: PUSH2 0x0558
00002195: PUSH2 0x2170
00002198: JUMP
00002199: JUMPDEST
0000219a: PUSH1 0x00
0000219c: DUP3
0000219d: PUSH2 0x21b6
000021a0: JUMPI
000021a1: PUSH4 0x4e487b71
000021a6: PUSH1 0xe0
000021a8: SHL
000021a9: PUSH1 0x00
000021ab: MSTORE
000021ac: PUSH1 0x12
000021ae: PUSH1 0x04
000021b0: MSTORE
000021b1: PUSH1 0x24
000021b3: PUSH1 0x00
000021b5: REVERT
000021b6: JUMPDEST
000021b7: POP
000021b8: DIV
000021b9: SWAP1
000021ba: JUMP
000021bb: JUMPDEST
000021bc: PUSH4 0x4e487b71
000021c1: PUSH1 0xe0
000021c3: SHL
000021c4: PUSH1 0x00
000021c6: MSTORE
000021c7: PUSH1 0x41
000021c9: PUSH1 0x04
000021cb: MSTORE
000021cc: PUSH1 0x24
000021ce: PUSH1 0x00
000021d0: REVERT
000021d1: JUMPDEST
000021d2: PUSH4 0x4e487b71
000021d7: PUSH1 0xe0
000021d9: SHL
000021da: PUSH1 0x00
000021dc: MSTORE
000021dd: PUSH1 0x32
000021df: PUSH1 0x04
000021e1: MSTORE
000021e2: PUSH1 0x24
000021e4: PUSH1 0x00
000021e6: REVERT
000021e7: JUMPDEST
000021e8: DUP1
000021e9: DUP3
000021ea: MUL
000021eb: DUP2
000021ec: ISZERO
000021ed: DUP3
000021ee: DUP3
000021ef: DIV
000021f0: DUP5
000021f1: EQ
000021f2: OR
000021f3: PUSH2 0x0558
000021f6: JUMPI
000021f7: PUSH2 0x0558
000021fa: PUSH2 0x2170
000021fd: JUMP
000021fe: JUMPDEST
000021ff: DUP1
00002200: DUP3
00002201: ADD
00002202: DUP1
00002203: DUP3
00002204: GT
00002205: ISZERO
00002206: PUSH2 0x0558
00002209: JUMPI
0000220a: PUSH2 0x0558
0000220d: PUSH2 0x2170
00002210: JUMP
00002211: JUMPDEST
00002212: PUSH1 0x00
00002214: PUSH1 0x40
00002216: DUP3
00002217: DUP5
00002218: SUB
00002219: SLT
0000221a: ISZERO
0000221b: PUSH2 0x2223
0000221e: JUMPI
0000221f: PUSH1 0x00
00002221: DUP1
00002222: REVERT
00002223: JUMPDEST
00002224: PUSH1 0x40
00002226: MLOAD
00002227: PUSH1 0x40
00002229: DUP2
0000222a: ADD
0000222b: DUP2
0000222c: DUP2
0000222d: LT
0000222e: PUSH8 0xffffffffffffffff
00002237: DUP3
00002238: GT
00002239: OR
0000223a: ISZERO
0000223b: PUSH2 0x2254
0000223e: JUMPI
0000223f: PUSH4 0x4e487b71
00002244: PUSH1 0xe0
00002246: SHL
00002247: PUSH1 0x00
00002249: MSTORE
0000224a: PUSH1 0x41
0000224c: PUSH1 0x04
0000224e: MSTORE
0000224f: PUSH1 0x24
00002251: PUSH1 0x00
00002253: REVERT
00002254: JUMPDEST
00002255: PUSH1 0x40
00002257: MSTORE
00002258: DUP3
00002259: MLOAD
0000225a: DUP2
0000225b: MSTORE
0000225c: PUSH1 0x20
0000225e: SWAP3
0000225f: DUP4
00002260: ADD
00002261: MLOAD
00002262: SWAP3
00002263: DUP2
00002264: ADD
00002265: SWAP3
00002266: SWAP1
00002267: SWAP3
00002268: MSTORE
00002269: POP
0000226a: SWAP2
0000226b: SWAP1
0000226c: POP
0000226d: JUMP
0000226e: JUMPDEST
0000226f: PUSH1 0x00
00002271: PUSH1 0x20
00002273: DUP3
00002274: DUP5
00002275: SUB
00002276: SLT
00002277: ISZERO
00002278: PUSH2 0x2280
0000227b: JUMPI
0000227c: PUSH1 0x00
0000227e: DUP1
0000227f: REVERT
00002280: JUMPDEST
00002281: POP
00002282: MLOAD
00002283: SWAP2
00002284: SWAP1
00002285: POP
00002286: JUMP
00002287: JUMPDEST
00002288: PUSH1 0x00
0000228a: PUSH1 0x60
0000228c: DUP3
0000228d: DUP5
0000228e: SUB
0000228f: SLT
00002290: ISZERO
00002291: PUSH2 0x2299
00002294: JUMPI
00002295: PUSH1 0x00
00002297: DUP1
00002298: REVERT
00002299: JUMPDEST
0000229a: PUSH1 0x40
0000229c: MLOAD
0000229d: PUSH1 0x60
0000229f: DUP2
000022a0: ADD
000022a1: DUP2
000022a2: DUP2
000022a3: LT
000022a4: PUSH8 0xffffffffffffffff
000022ad: DUP3
000022ae: GT
000022af: OR
000022b0: ISZERO
000022b1: PUSH2 0x22ca
000022b4: JUMPI
000022b5: PUSH4 0x4e487b71
000022ba: PUSH1 0xe0
000022bc: SHL
000022bd: PUSH1 0x00
000022bf: MSTORE
000022c0: PUSH1 0x41
000022c2: PUSH1 0x04
000022c4: MSTORE
000022c5: PUSH1 0x24
000022c7: PUSH1 0x00
000022c9: REVERT
000022ca: JUMPDEST
000022cb: DUP1
000022cc: PUSH1 0x40
000022ce: MSTORE
000022cf: POP
000022d0: DUP3
000022d1: MLOAD
000022d2: DUP2
000022d3: MSTORE
000022d4: PUSH1 0x20
000022d6: DUP4
000022d7: ADD
000022d8: MLOAD
000022d9: PUSH1 0x20
000022db: DUP3
000022dc: ADD
000022dd: MSTORE
000022de: PUSH1 0x40
000022e0: DUP4
000022e1: ADD
000022e2: MLOAD
000022e3: PUSH1 0x40
000022e5: DUP3
000022e6: ADD
000022e7: MSTORE
000022e8: DUP1
000022e9: SWAP2
000022ea: POP
000022eb: POP
000022ec: SWAP3
000022ed: SWAP2
000022ee: POP
000022ef: POP
000022f0: JUMP
000022f1: JUMPDEST
000022f2: PUSH1 0x00
000022f4: PUSH1 0x01
000022f6: DUP3
000022f7: ADD
000022f8: PUSH2 0x2303
000022fb: JUMPI
000022fc: PUSH2 0x2303
000022ff: PUSH2 0x2170
00002302: JUMP
00002303: JUMPDEST
00002304: POP
00002305: PUSH1 0x01
00002307: ADD
00002308: SWAP1
00002309: JUMP
0000230a: JUMPDEST
0000230b: PUSH1 0x00
0000230d: PUSH1 0x20
0000230f: DUP3
00002310: DUP5
00002311: SUB
00002312: SLT
00002313: ISZERO
00002314: PUSH2 0x231c
00002317: JUMPI
00002318: PUSH1 0x00
0000231a: DUP1
0000231b: REVERT
0000231c: JUMPDEST
0000231d: DUP2
0000231e: MLOAD
0000231f: PUSH2 0x1fd0
00002322: DUP2
00002323: PUSH2 0x1d72
00002326: JUMP
00002327: JUMPDEST
00002328: PUSH1 0x00
0000232a: JUMPDEST
0000232b: DUP4
0000232c: DUP2
0000232d: LT
0000232e: ISZERO
0000232f: PUSH2 0x2342
00002332: JUMPI
00002333: DUP2
00002334: DUP2
00002335: ADD
00002336: MLOAD
00002337: DUP4
00002338: DUP3
00002339: ADD
0000233a: MSTORE
0000233b: PUSH1 0x20
0000233d: ADD
0000233e: PUSH2 0x232a
00002341: JUMP
00002342: JUMPDEST
00002343: POP
00002344: POP
00002345: PUSH1 0x00
00002347: SWAP2
00002348: ADD
00002349: MSTORE
0000234a: JUMP
0000234b: JUMPDEST
0000234c: PUSH1 0x00
0000234e: DUP3
0000234f: MLOAD
00002350: PUSH2 0x235d
00002353: DUP2
00002354: DUP5
00002355: PUSH1 0x20
00002357: DUP8
00002358: ADD
00002359: PUSH2 0x2327
0000235c: JUMP
0000235d: JUMPDEST
0000235e: SWAP2
0000235f: SWAP1
00002360: SWAP2
00002361: ADD
00002362: SWAP3
00002363: SWAP2
00002364: POP
00002365: POP
00002366: JUMP
00002367: JUMPDEST
00002368: PUSH1 0x20
0000236a: DUP2
0000236b: MSTORE
0000236c: PUSH1 0x00
0000236e: DUP3
0000236f: MLOAD
00002370: DUP1
00002371: PUSH1 0x20
00002373: DUP5
00002374: ADD
00002375: MSTORE
00002376: PUSH2 0x2386
00002379: DUP2
0000237a: PUSH1 0x40
0000237c: DUP6
0000237d: ADD
0000237e: PUSH1 0x20
00002380: DUP8
00002381: ADD
00002382: PUSH2 0x2327
00002385: JUMP
00002386: JUMPDEST
00002387: PUSH1 0x1f
00002389: ADD
0000238a: PUSH1 0x1f
0000238c: NOT
0000238d: AND
0000238e: SWAP2
0000238f: SWAP1
00002390: SWAP2
00002391: ADD
00002392: PUSH1 0x40
00002394: ADD
00002395: SWAP3
00002396: SWAP2
00002397: POP
00002398: POP
00002399: JUMP
0000239a: INVALID
0000239b: LOG2
0000239c: PUSH5 0x6970667358
000023a2: UNKNOWN(0x22)
000023a3: SLT
000023a4: KECCAK256
000023a5: UNKNOWN(0xE0)
000023a6: UNKNOWN(0xF9)
000023a7: BYTE
000023a8: UNKNOWN(0xCA)
000023a9: DUP3
000023aa: UNKNOWN(0xAD)
000023ab: UNKNOWN(0xA9)
000023ac: UNKNOWN(0xC7)
000023ad: LOG3
000023ae: REVERT
000023af: UNKNOWN(0xC3)
000023b0: UNKNOWN(0xB7)
000023b1: CALLDATALOAD
000023b2: MUL
000023b3: EQ
000023b4: UNKNOWN(0xE0)
000023b5: DUP5
000023b6: MUL
000023b7: LOG2
000023b8: BYTE
000023b9: PUSH16 0xd024b93b35b88afd3a1e1d64736f6c63
000023ca: NUMBER
000023cb: STOP
000023cc: ADDMOD
000023cd: GT
000023ce: STOP
000023cf: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xfd3b34146b608c6a8dbb28b69a127fab903917e1a74e603addf94506fe0338af
call_targets: 0xaf51cd5f71ed88d6d1f65b575f1a8ce3a78ec42b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xfd3b34146b608c6a8dbb28b69a127fab903917e1a74e603addf94506fe0338af",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xaf51cd5f71ed88d6d1f65b575f1a8ce3a78ec42b"
    ],
    "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": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf6cb3cd8",
            "selector": "0xf6cb3cd8",
            "calldata_variants": [
                "0xf6cb3cd8",
                "0xf6cb3cd80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc6436f5",
            "selector": "0xfc6436f5",
            "calldata_variants": [
                "0xfc6436f5",
                "0xfc6436f50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe4860339",
            "selector": "0xe4860339",
            "calldata_variants": [
                "0xe4860339",
                "0xe48603390000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8d8c9ac",
            "selector": "0xe8d8c9ac",
            "calldata_variants": [
                "0xe8d8c9ac",
                "0xe8d8c9ac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc3fea74",
            "selector": "0xbc3fea74",
            "calldata_variants": [
                "0xbc3fea74",
                "0xbc3fea740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4271eb6",
            "selector": "0xc4271eb6",
            "calldata_variants": [
                "0xc4271eb6",
                "0xc4271eb60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdc7c9a1f",
            "selector": "0xdc7c9a1f",
            "calldata_variants": [
                "0xdc7c9a1f",
                "0xdc7c9a1f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 6080,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7177,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": []
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xfd3b34146b608c6a8dbb28b69a127fab903917e1a74e603addf94506fe0338af
call_targets: 0xaf51cd5f71ed88d6d1f65b575f1a8ce3a78ec42b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xfd3b34146b608c6a8dbb28b69a127fab903917e1a74e603addf94506fe0338af",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xaf51cd5f71ed88d6d1f65b575f1a8ce3a78ec42b"
    ],
    "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": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf6cb3cd8",
            "selector": "0xf6cb3cd8",
            "calldata_variants": [
                "0xf6cb3cd8",
                "0xf6cb3cd80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc6436f5",
            "selector": "0xfc6436f5",
            "calldata_variants": [
                "0xfc6436f5",
                "0xfc6436f50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe4860339",
            "selector": "0xe4860339",
            "calldata_variants": [
                "0xe4860339",
                "0xe48603390000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe8d8c9ac",
            "selector": "0xe8d8c9ac",
            "calldata_variants": [
                "0xe8d8c9ac",
                "0xe8d8c9ac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc3fea74",
            "selector": "0xbc3fea74",
            "calldata_variants": [
                "0xbc3fea74",
                "0xbc3fea740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4271eb6",
            "selector": "0xc4271eb6",
            "calldata_variants": [
                "0xc4271eb6",
                "0xc4271eb60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdc7c9a1f",
            "selector": "0xdc7c9a1f",
            "calldata_variants": [
                "0xdc7c9a1f",
                "0xdc7c9a1f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 6080,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7177,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [],
    "untrusted_call_count": 2
}
medium access_control codex Prefetch can rewind interval pointers, enabling repeated earmarks and extra treasury transfers 75 no
view
evidence_json
{
    "evidence": "`prefetchGlobalSnapshots` allows `_startingInterval <= nextSnapshotPreCalcInterval` and unconditionally sets `nextSnapshotPreCalcInterval = _endingInterval + 1`; `earmark` then uses these pointers and always updates `nextEarmarkInterval` even when the range is inverted.",
    "locations": [
        "contracts/contracts/treasury/GovernorRewards.sol:305",
        "contracts/contracts/treasury/GovernorRewards.sol:339",
        "contracts/contracts/treasury/GovernorRewards.sol:351",
        "contracts/contracts/treasury/GovernorRewards.sol:377"
    ],
    "recommendation": "Enforce monotonic progression for `nextSnapshotPreCalcInterval` and `nextEarmarkInterval` (e.g., require `_startingInterval == nextSnapshotPreCalcInterval` and `_endingInterval >= nextSnapshotPreCalcInterval`, and revert if `_calcFromInterval > _calcToInterval`). Consider restricting prefetch/earmark to an authorized keeper or owner if public access is not intended, and avoid overwriting earmarks for already-processed intervals.",
    "exploit_scenario": "Any caller can call `prefetchGlobalSnapshots` with a small `_endingInterval` to set `nextSnapshotPreCalcInterval` backwards, then call `earmark` to rewind `nextEarmarkInterval`, and finally prefetch forward and earmark again. This re-earmarks previously processed intervals and transfers additional tokens from the Treasury into GovernorRewards, potentially locking funds for already-claimed intervals or forcing premature redistribution."
}
low other codex Unlocking a delegated stake does not snapshot the delegate, skewing reward snapshots 65 no
view
evidence_json
{
    "evidence": "`unlock` calls `snapshot(msg.sender)` only, then calls `moveVotingPower(stakes[msg.sender][_stakeID].delegate, address(0), ...)` without snapshotting the delegate.",
    "locations": [
        "contracts/contracts/governance/Staking.sol:463",
        "contracts/contracts/governance/Staking.sol:467",
        "contracts/contracts/governance/Staking.sol:472"
    ],
    "recommendation": "Snapshot the delegate before reducing voting power in `unlock` (similar to `delegate`), or otherwise ensure any voting power change records a snapshot for both source and destination accounts.",
    "exploit_scenario": "If a user unlocks a stake delegated to another address, the delegate\u2019s voting power is reduced without taking a snapshot for the delegate. For the interval where the unlock happens, `accountSnapshotAt` can return the reduced voting power for the entire interval, underpaying the delegate\u2019s rewards. A delegator can time unlocks late in an interval to grief a delegate\u2019s rewards for that interval."
}
low upgradeability codex Upgradeable implementations lack initializer lock 65 no
view
evidence_json
{
    "evidence": "Upgradeable contracts expose external `initializer` functions but do not lock initializers in a constructor.",
    "locations": [
        "contracts/contracts/treasury/GovernorRewards.sol:92",
        "contracts/contracts/treasury/Treasury.sol:25"
    ],
    "recommendation": "Add a constructor that calls `_disableInitializers()` to each upgradeable implementation, and ensure proxies are initialized immediately on deployment.",
    "exploit_scenario": "Because the upgradeable contracts do not disable initializers in a constructor, anyone can call the initializer on the implementation contract and gain ownership/roles there. If assets are mistakenly sent to the implementation (or a proxy is left uninitialized), those privileges can be abused to move funds or reconfigure the implementation instance."
}