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

Analysis Run

0f2dae3b-fa8e-4cc8-9793-fb705919c460

failed
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 7:25 PM
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
Upgradeable proxy can be taken over if not initialized atomically
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
30566 report.consolidate complete 1 / 1 3 months ago
104255 artifact.fetch failed 1 / 3 1 week ago
104256 tool.cast_disasm complete 1 / 3 1 week ago
104257 analysis.bundle complete 1 / 3 1 week ago
104258 capability.graph complete 1 / 3 1 week ago
104259 detector.run complete 1 / 3 1 week ago
104260 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
Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.
View stderr
[codex:818911] OpenAI Codex v0.77.0 (research preview)
[codex:818911] --------
[codex:818911] workdir: /tmp/codex-multi-dw11gekj
[codex:818911] model: gpt-5.2-codex
[codex:818911] provider: openai
[codex:818911] approval: never
[codex:818911] sandbox: read-only
[codex:818911] reasoning effort: xhigh
[codex:818911] reasoning summaries: auto
[codex:818911] session id: 019b6b8e-25d8-7863-a398-4effb09a57f0
[codex:818911] --------
[codex:818911] user
[codex:818911] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:818911] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:818911] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:818911] 
[codex:818911] Scope rules:
[codex:818911] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:818911] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:818911] 
[codex:818911] Output MUST be valid JSON matching the provided schema.
[codex:818911] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:818911] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:818911] 
[codex:818911] Output constraints (IMPORTANT):
[codex:818911] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:818911] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:818911] mcp startup: no servers
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Preparing to review instructions and audit file**
[codex:818911] exec
[codex:818911] /bin/bash -lc ls in /tmp/codex-multi-dw11gekj succeeded in 7ms:
[codex:818911] AUDIT_BUNDLE.txt
[codex:818911] codex-output-schema.json
[codex:818911] contracts
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:818911] 
[codex:818911] ================================================================================
[codex:818911] FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:818911] ================================================================================
[codex:818911] // SPDX-License-Identifier: MIT
[codex:818911] // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
[codex:818911] 
[codex:818911] pragma solidity ^0.8.0;
[codex:818911] 
[codex:818911] /**
[codex:818911]  * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:818911]  */
[codex:818911] interface IERC20 {
[codex:818911]     /**
[codex:818911]      * @dev Emitted when `value` tokens are moved from one account (`from`) to
[codex:818911]      * another (`to`).
[codex:818911]      *
[codex:818911]      * Note that `value` may be zero.
[codex:818911]      */
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Preparing to analyze first-party contracts**
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911]      */
[codex:818911]     function safeApprove(
[codex:818911]         IERC20 token,
[codex:818911]         address spender,
[codex:818911]         uint256 value
[codex:818911]     ) internal {
[codex:818911]         // safeApprove should only be called when setting an initial allowance,
[codex:818911]         // or when resetting it to zero. To increase and decrease it, use
[codex:818911]         // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
[codex:818911]         require(
[codex:818911]             (value == 0) || (token.allowance(address(this), spender) == 0),
[codex:818911]             "SafeERC20: approve from non-zero to non-zero allowance"
[codex:818911]         );
[codex:818911]         _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
[codex:818911]     }
[codex:818911] 
[codex:818911]     function safeIncreaseAllowance(
[codex:818911]         IERC20 token,
[codex:818911]         address spender,
[codex:818911]         uint256 value
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Continuing to identify sections**
[codex:818911] exec
[codex:818911] /bin/bash -lc 'rg -n "''^FILE: " AUDIT_BUNDLE.txt' in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] 4:FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:818911] 90:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol
[codex:818911] 154:FILE: contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
[codex:818911] 274:FILE: contracts/@openzeppelin/contracts/utils/Address.sol
[codex:818911] 522:FILE: contracts/@openzeppelin/contracts/utils/math/SafeCast.sol
[codex:818911] 1662:FILE: contracts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol
[codex:818911] 1686:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol
[codex:818911] 1902:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol
[codex:818911] 1922:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol
[codex:818911] 2091:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol
[codex:818911] 2203:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol
[codex:818911] 2426:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol
[codex:818911] 2518:FILE: contracts/contracts/Distributor.sol
[codex:818911] 2877:FILE: contracts/contracts/interfaces/ICore.sol
[codex:818911] 2901:FILE: contracts/contracts/utils/Errors.sol
[codex:818911] 2931:FILE: contracts/contracts/utils/UUPSHelper.sol
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Planning detailed file reading**
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '2400,3200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911]         bytes memory returndata,
[codex:818911]         string memory errorMessage
[codex:818911]     ) internal pure returns (bytes memory) {
[codex:818911]         if (success) {
[codex:818911]             return returndata;
[codex:818911]         } else {
[codex:818911]             _revert(returndata, errorMessage);
[codex:818911]         }
[codex:818911]     }
[codex:818911] 
[codex:818911]     function _revert(bytes memory returndata, string memory errorMessage) private pure {
[codex:818911]         // Look for revert reason and bubble it up if present
[codex:818911]         if (returndata.length > 0) {
[codex:818911]             // The easiest way to bubble the revert reason is using memory via assembly
[codex:818911]             /// @solidity memory-safe-assembly
[codex:818911]             assembly {
[codex:818911]                 let returndata_size := mload(returndata)
[codex:818911]                 revert(add(32, returndata), returndata_size)
[codex:818911]             }
[codex:818911]         } else {
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Ensuring full file reading**
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911]      *
[codex:818911]      * _Available since v3.1._
[codex:818911]      */
[codex:818911]     function functionCallWithValue(
[codex:818911]         address target,
[codex:818911]         bytes memory data,
[codex:818911]         uint256 value,
[codex:818911]         string memory errorMessage
[codex:818911]     ) internal returns (bytes memory) {
[codex:818911]         require(address(this).balance >= value, "Address: insufficient balance for call");
[codex:818911]         (bool success, bytes memory returndata) = target.call{value: value}(data);
[codex:818911]         return verifyCallResultFromTarget(target, success, returndata, errorMessage);
[codex:818911]     }
[codex:818911] 
[codex:818911]     /**
[codex:818911]      * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
[codex:818911]      * but performing a static call.
[codex:818911]      *
[codex:818911]      * _Available since v3.3._
[codex:818911]      */
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '800,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911] 
[codex:818911]     /**
[codex:818911]      * @dev Returns the downcasted uint128 from uint256, reverting on
[codex:818911]      * overflow (when the input is greater than largest uint128).
[codex:818911]      *
[codex:818911]      * Counterpart to Solidity's `uint128` operator.
[codex:818911]      *
[codex:818911]      * Requirements:
[codex:818911]      *
[codex:818911]      * - input must fit into 128 bits
[codex:818911]      *
[codex:818911]      * _Available since v2.5._
[codex:818911]      */
[codex:818911]     function toUint128(uint256 value) internal pure returns (uint128) {
[codex:818911]         require(value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits");
[codex:818911]         return uint128(value);
[codex:818911]     }
[codex:818911] 
[codex:818911]     /**
[codex:818911]      * @dev Returns the downcasted uint120 from uint256, reverting on
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '1200,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911]      * Counterpart to Solidity's `int200` operator.
[codex:818911]      *
[codex:818911]      * Requirements:
[codex:818911]      *
[codex:818911]      * - input must fit into 200 bits
[codex:818911]      *
[codex:818911]      * _Available since v4.7._
[codex:818911]      */
[codex:818911]     function toInt200(int256 value) internal pure returns (int200 downcasted) {
[codex:818911]         downcasted = int200(value);
[codex:818911]         require(downcasted == value, "SafeCast: value doesn't fit in 200 bits");
[codex:818911]     }
[codex:818911] 
[codex:818911]     /**
[codex:818911]      * @dev Returns the downcasted int192 from int256, reverting on
[codex:818911]      * overflow (when the input is less than smallest int192 or
[codex:818911]      * greater than largest int192).
[codex:818911]      *
[codex:818911]      * Counterpart to Solidity's `int192` operator.
[codex:818911]      *
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '1600,2000p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911]      * - input must fit into 24 bits
[codex:818911]      *
[codex:818911]      * _Available since v4.7._
[codex:818911]      */
[codex:818911]     function toInt24(int256 value) internal pure returns (int24 downcasted) {
[codex:818911]         downcasted = int24(value);
[codex:818911]         require(downcasted == value, "SafeCast: value doesn't fit in 24 bits");
[codex:818911]     }
[codex:818911] 
[codex:818911]     /**
[codex:818911]      * @dev Returns the downcasted int16 from int256, reverting on
[codex:818911]      * overflow (when the input is less than smallest int16 or
[codex:818911]      * greater than largest int16).
[codex:818911]      *
[codex:818911]      * Counterpart to Solidity's `int16` operator.
[codex:818911]      *
[codex:818911]      * Requirements:
[codex:818911]      *
[codex:818911]      * - input must fit into 16 bits
[codex:818911]      *
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '2000,2400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911]      *
[codex:818911]      * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a
[codex:818911]      * constructor.
[codex:818911]      *
[codex:818911]      * Emits an {Initialized} event.
[codex:818911]      */
[codex:818911]     modifier initializer() {
[codex:818911]         bool isTopLevelCall = !_initializing;
[codex:818911]         require(
[codex:818911]             (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),
[codex:818911]             "Initializable: contract is already initialized"
[codex:818911]         );
[codex:818911]         _initialized = 1;
[codex:818911]         if (isTopLevelCall) {
[codex:818911]             _initializing = true;
[codex:818911]         }
[codex:818911]         _;
[codex:818911]         if (isTopLevelCall) {
[codex:818911]             _initializing = false;
[codex:818911]             emit Initialized(1);
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '2400,2525p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911]         bytes memory returndata,
[codex:818911]         string memory errorMessage
[codex:818911]     ) internal pure returns (bytes memory) {
[codex:818911]         if (success) {
[codex:818911]             return returndata;
[codex:818911]         } else {
[codex:818911]             _revert(returndata, errorMessage);
[codex:818911]         }
[codex:818911]     }
[codex:818911] 
[codex:818911]     function _revert(bytes memory returndata, string memory errorMessage) private pure {
[codex:818911]         // Look for revert reason and bubble it up if present
[codex:818911]         if (returndata.length > 0) {
[codex:818911]             // The easiest way to bubble the revert reason is using memory via assembly
[codex:818911]             /// @solidity memory-safe-assembly
[codex:818911]             assembly {
[codex:818911]                 let returndata_size := mload(returndata)
[codex:818911]                 revert(add(32, returndata), returndata_size)
[codex:818911]             }
[codex:818911]         } else {
[codex:818911] 
[codex:818911] 
[codex:818911] 
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Analyzing contract security and upgrade patterns**
[codex:818911] 
[codex:818911] I've carefully reviewed the code focusing on security, especially around authorization using tx.origin in claims, upgradeability risks in the UUPS pattern, and dispute handling. There are subtle access control nuances and potential denial-of-service conditions, but most vulnerabilities appear low risk or typical upgradeable contract concerns. The constructor’s initializer calls seem to lock the implementation, mitigating some common initialization exploits. I'm also noting how dispute and claim functions handle reentrancy and permission checks with their intended trade-offs.
[codex:818911] thinking
[codex:818911] **Examining access control and reentrancy nuances**
[codex:818911] 
[codex:818911] I've dug into patterns around operator permissions, Merkle tree assumptions, and external calls, especially how dispute handling can open reentrancy windows due to token transfers before state changes. The use of tx.origin for claim authorization stands out as a potential low-risk access control quirk. There are also a few logic gaps like an unused flag for permissionless claiming and assumptions about non-decreasing token amounts that could cause claim reverts, but most are mitigated or tied to governance choices. Overall, this paints a complex but mostly controlled permission and external call landscape.
[codex:818911] thinking
[codex:818911] **Identifying nuanced access and upgrade risks**
[codex:818911] 
[codex:818911] I’m exploring how the use of tx.origin could let malicious contracts bypass operator restrictions to claim tokens for users, creating a low-severity access control concern that doesn’t lead to fund loss but could cause unintended claims or gas costs. I also see possible DoS from dispute deposits if fee-on-transfer tokens are used, which might block dispute resolution. Additionally, there’s an upgradeability risk if the proxy isn’t initialized properly—attackers could take control by initializing with a malicious core, which is a critical deployment consideration. These findings highlight subtle but important areas around permission logic, external token interactions, and upgrade initialization.
[codex:818911] thinking
[codex:818911] **Evaluating final audit concerns and severity**
[codex:818911] 
[codex:818911] I’m wrapping up by weighing the key issues: uninitialized proxy risk remains a serious deployment concern with potentially high impact; tx.origin use creates a low-severity access control bypass potential, and dispute token fee mechanics might cause low-severity disruptions. I’ll also gather line numbers from the Distributor contract to back these findings with concrete locations for clarity in the final report.
[codex:818911] exec
[codex:818911] /bin/bash -lc "nl -ba contracts/contracts/Distributor.sol | sed -n '80,200p'" in /tmp/codex-multi-dw11gekj succeeded in 8ms:
[codex:818911]     80	    /// @notice `Core` contract handling access control
[codex:818911]     81	    ICore public core;
[codex:818911]     82	
[codex:818911]     83	    /// @notice Address which created the dispute
[codex:818911]     84	    /// @dev Used to store if there is an ongoing dispute
[codex:818911]     85	    address public disputer;
[codex:818911]     86	
[codex:818911]     87	    /// @notice When the current tree will become valid
[codex:818911]     88	    uint48 public endOfDisputePeriod;
[codex:818911]     89	
[codex:818911]     90	    /// @notice Time after which a change in a tree becomes effective, in EPOCH_DURATION
[codex:818911]     91	    uint48 public disputePeriod;
[codex:818911]     92	
[codex:818911]     93	    /// @notice Amount to deposit to freeze the roots update
[codex:818911]     94	    uint256 public disputeAmount;
[codex:818911]     95	
[codex:818911]     96	    /// @notice Mapping user -> token -> amount to track claimed amounts
[codex:818911]     97	    mapping(address => mapping(address => Claim)) public claimed;
[codex:818911]     98	
[codex:818911]     99	    /// @notice Trusted EOAs to update the Merkle root
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Requesting line numbers for disputeTree and resolve**
[codex:818911] exec
[codex:818911] /bin/bash -lc "nl -ba contracts/contracts/Distributor.sol | sed -n '200,340p'" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911]    200	                ++i;
[codex:818911]    201	            }
[codex:818911]    202	        }
[codex:818911]    203	    }
[codex:818911]    204	
[codex:818911]    205	    /// @notice Returns the MerkleRoot that is currently live for the contract
[codex:818911]    206	    function getMerkleRoot() public view returns (bytes32) {
[codex:818911]    207	        if (block.timestamp >= endOfDisputePeriod && disputer == address(0)) return tree.merkleRoot;
[codex:818911]    208	        else return lastTree.merkleRoot;
[codex:818911]    209	    }
[codex:818911]    210	
[codex:818911]    211	    // ============================ GOVERNANCE FUNCTIONS ===========================
[codex:818911]    212	
[codex:818911]    213	    /// @notice Adds or removes EOAs which are trusted to update the Merkle root
[codex:818911]    214	    function toggleTrusted(address eoa) external onlyGovernor {
[codex:818911]    215	        uint256 trustedStatus = 1 - canUpdateMerkleRoot[eoa];
[codex:818911]    216	        canUpdateMerkleRoot[eoa] = trustedStatus;
[codex:818911]    217	        emit TrustedToggled(eoa, trustedStatus == 1);
[codex:818911]    218	    }
[codex:818911]    219	
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Analyzing UUPSHelper upgrade risks**
[codex:818911] exec
[codex:818911] /bin/bash -lc 'nl -ba contracts/contracts/utils/UUPSHelper.sol' in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911]      1	// SPDX-License-Identifier: GPL-3.0
[codex:818911]      2	
[codex:818911]      3	/*
[codex:818911]      4	                  *                                                  █                              
[codex:818911]      5	                *****                                               ▓▓▓                             
[codex:818911]      6	                  *                                               ▓▓▓▓▓▓▓                         
[codex:818911]      7	                                   *            ///.           ▓▓▓▓▓▓▓▓▓▓▓▓▓                       
[codex:818911]      8	                                 *****        ////////            ▓▓▓▓▓▓▓                          
[codex:818911]      9	                                   *       /////////////            ▓▓▓                             
[codex:818911]     10	                     ▓▓                  //////////////////          █         ▓▓                   
[codex:818911]     11	                   ▓▓  ▓▓             ///////////////////////                ▓▓   ▓▓                
[codex:818911]     12	                ▓▓       ▓▓        ////////////////////////////           ▓▓        ▓▓              
[codex:818911]     13	              ▓▓            ▓▓    /////////▓▓▓///////▓▓▓/////////       ▓▓             ▓▓            
[codex:818911]     14	           ▓▓                 ,////////////////////////////////////// ▓▓                 ▓▓         
[codex:818911]     15	        ▓▓                  //////////////////////////////////////////                     ▓▓      
[codex:818911]     16	      ▓▓                  //////////////////////▓▓▓▓/////////////////////                          
[codex:818911]     17	                       ,////////////////////////////////////////////////////                        
[codex:818911]     18	                    .//////////////////////////////////////////////////////////                     
[codex:818911]     19	                     .//////////////////////////██.,//////////////////////////█                     
[codex:818911]     20	                       .//////////////////////████..,./////////////////////██                       
[codex:818911] 
[codex:818911] thinking
[codex:818911] **Preparing audit findings for JSON output**
[codex:818911] codex
[codex:818911] {"no_findings":false,"summary":"Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.","findings":[{"severity":"high","category":"upgradeability","title":"Upgradeable proxy can be taken over if not initialized atomically","exploit_scenario":"If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state.","recommendation":"Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.","evidence":"`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.","locations":["contracts/contracts/Distributor.sol:150","contracts/contracts/Distributor.sol:156","contracts/contracts/utils/UUPSHelper.sol:53"]},{"severity":"low","category":"access_control","title":"`tx.origin` allows bypassing operator-only claim policy","exploit_scenario":"A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user’s gas) without explicit operator approval.","recommendation":"Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.","evidence":"Claim authorization uses `tx.origin` as an alternative to operator approval.","locations":["contracts/contracts/Distributor.sol:186"]},{"severity":"low","category":"other","title":"Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens","exploit_scenario":"If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely.","recommendation":"Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.","evidence":"`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.","locations":["contracts/contracts/Distributor.sol:241","contracts/contracts/Distributor.sol:254","contracts/contracts/Distributor.sol:258"]}]}
[codex:818911] tokens used
[codex:818911] 62,350
[codex:818911] {"no_findings":false,"summary":"Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.","findings":[{"severity":"high","category":"upgradeability","title":"Upgradeable proxy can be taken over if not initialized atomically","exploit_scenario":"If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state.","recommendation":"Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.","evidence":"`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.","locations":["contracts/contracts/Distributor.sol:150","contracts/contracts/Distributor.sol:156","contracts/contracts/utils/UUPSHelper.sol:53"]},{"severity":"low","category":"access_control","title":"`tx.origin` allows bypassing operator-only claim policy","exploit_scenario":"A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user’s gas) without explicit operator approval.","recommendation":"Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.","evidence":"Claim authorization uses `tx.origin` as an alternative to operator approval.","locations":["contracts/contracts/Distributor.sol:186"]},{"severity":"low","category":"other","title":"Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens","exploit_scenario":"If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely.","recommendation":"Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.","evidence":"`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.","locations":["contracts/contracts/Distributor.sol:241","contracts/contracts/Distributor.sol:254","contracts/contracts/Distributor.sol:258"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T19:25:44.908284+00:00",
        "returncode": 0
    },
    "summary": "Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.",
    "raw_final": {
        "summary": "Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.",
        "findings": [
            {
                "title": "Upgradeable proxy can be taken over if not initialized atomically",
                "category": "upgradeability",
                "evidence": "`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.",
                "severity": "high",
                "locations": [
                    "contracts/contracts/Distributor.sol:150",
                    "contracts/contracts/Distributor.sol:156",
                    "contracts/contracts/utils/UUPSHelper.sol:53"
                ],
                "recommendation": "Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.",
                "exploit_scenario": "If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state."
            },
            {
                "title": "`tx.origin` allows bypassing operator-only claim policy",
                "category": "access_control",
                "evidence": "Claim authorization uses `tx.origin` as an alternative to operator approval.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/Distributor.sol:186"
                ],
                "recommendation": "Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.",
                "exploit_scenario": "A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user\u2019s gas) without explicit operator approval."
            },
            {
                "title": "Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens",
                "category": "other",
                "evidence": "`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.",
                "severity": "low",
                "locations": [
                    "contracts/contracts/Distributor.sol:241",
                    "contracts/contracts/Distributor.sol:254",
                    "contracts/contracts/Distributor.sol:258"
                ],
                "recommendation": "Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.",
                "exploit_scenario": "If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
13
EXT*/BALANCE
5
Total opcodes
5931
Flags
delegatecall_present heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x01c2
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x5cec892a
00000019: GT
0000001a: PUSH2 0x00f7
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xbdac7ca3
00000024: GT
00000025: PUSH2 0x0095
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xd9c98087
0000002f: GT
00000030: PUSH2 0x0064
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xd9c98087
0000003a: EQ
0000003b: PUSH2 0x0626
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe57480e5
00000045: EQ
00000046: PUSH2 0x0646
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2f4eb26
00000050: EQ
00000051: PUSH2 0x0673
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfd54b228
0000005b: EQ
0000005c: PUSH2 0x06a0
0000005f: JUMPI
00000060: PUSH1 0x00
00000062: DUP1
00000063: REVERT
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0xbdac7ca3
0000006b: EQ
0000006c: PUSH2 0x0589
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xc4d66de8
00000076: EQ
00000077: PUSH2 0x05a9
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xc748d261
00000081: EQ
00000082: PUSH2 0x05c9
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xcce80e7a
0000008c: EQ
0000008d: PUSH2 0x05f6
00000090: JUMPI
00000091: PUSH1 0x00
00000093: DUP1
00000094: REVERT
00000095: JUMPDEST
00000096: DUP1
00000097: PUSH4 0x71ee95c0
0000009c: GT
0000009d: PUSH2 0x00d1
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x71ee95c0
000000a7: EQ
000000a8: PUSH2 0x0514
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x7ee84349
000000b2: EQ
000000b3: PUSH2 0x0534
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x89e1e82a
000000bd: EQ
000000be: PUSH2 0x0554
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x95788835
000000c8: EQ
000000c9: PUSH2 0x0574
000000cc: JUMPI
000000cd: PUSH1 0x00
000000cf: DUP1
000000d0: REVERT
000000d1: JUMPDEST
000000d2: DUP1
000000d3: PUSH4 0x5cec892a
000000d8: EQ
000000d9: PUSH2 0x046b
000000dc: JUMPI
000000dd: DUP1
000000de: PUSH4 0x623b9e9d
000000e3: EQ
000000e4: PUSH2 0x04a2
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x6ac56103
000000ee: EQ
000000ef: PUSH2 0x04c2
000000f2: JUMPI
000000f3: PUSH1 0x00
000000f5: DUP1
000000f6: REVERT
000000f7: JUMPDEST
000000f8: DUP1
000000f9: PUSH4 0x2a25dd41
000000fe: GT
000000ff: PUSH2 0x0164
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0x49590657
00000109: GT
0000010a: PUSH2 0x013e
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0x49590657
00000114: EQ
00000115: PUSH2 0x03da
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0x4f1ef286
0000011f: EQ
00000120: PUSH2 0x03ef
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0x52d1902d
0000012a: EQ
0000012b: PUSH2 0x0402
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0x5bf31d4d
00000135: EQ
00000136: PUSH2 0x0417
00000139: JUMPI
0000013a: PUSH1 0x00
0000013c: DUP1
0000013d: REVERT
0000013e: JUMPDEST
0000013f: DUP1
00000140: PUSH4 0x2a25dd41
00000145: EQ
00000146: PUSH2 0x037a
00000149: JUMPI
0000014a: DUP1
0000014b: PUSH4 0x3659cfe6
00000150: EQ
00000151: PUSH2 0x039a
00000154: JUMPI
00000155: DUP1
00000156: PUSH4 0x4641fdef
0000015b: EQ
0000015c: PUSH2 0x03ba
0000015f: JUMPI
00000160: PUSH1 0x00
00000162: DUP1
00000163: REVERT
00000164: JUMPDEST
00000165: DUP1
00000166: PUSH4 0x1171bda9
0000016b: GT
0000016c: PUSH2 0x01a0
0000016f: JUMPI
00000170: DUP1
00000171: PUSH4 0x1171bda9
00000176: EQ
00000177: PUSH2 0x02d5
0000017a: JUMPI
0000017b: DUP1
0000017c: PUSH4 0x14769142
00000181: EQ
00000182: PUSH2 0x02f5
00000185: JUMPI
00000186: DUP1
00000187: PUSH4 0x2637588e
0000018c: EQ
0000018d: PUSH2 0x0322
00000190: JUMPI
00000191: DUP1
00000192: PUSH4 0x28827838
00000197: EQ
00000198: PUSH2 0x035a
0000019b: JUMPI
0000019c: PUSH1 0x00
0000019e: DUP1
0000019f: REVERT
000001a0: JUMPDEST
000001a1: DUP1
000001a2: PUSH4 0x09454ba3
000001a7: EQ
000001a8: PUSH2 0x01c7
000001ab: JUMPI
000001ac: DUP1
000001ad: PUSH4 0x0c9cbf0e
000001b2: EQ
000001b3: PUSH2 0x01f0
000001b6: JUMPI
000001b7: DUP1
000001b8: PUSH4 0x0d10fca3
000001bd: EQ
000001be: PUSH2 0x02b3
000001c1: JUMPI
000001c2: JUMPDEST
000001c3: PUSH1 0x00
000001c5: DUP1
000001c6: REVERT
000001c7: JUMPDEST
000001c8: CALLVALUE
000001c9: DUP1
000001ca: ISZERO
000001cb: PUSH2 0x01d3
000001ce: JUMPI
000001cf: PUSH1 0x00
000001d1: DUP1
000001d2: REVERT
000001d3: JUMPDEST
000001d4: POP
000001d5: PUSH2 0x01dd
000001d8: PUSH1 0x6c
000001da: SLOAD
000001db: DUP2
000001dc: JUMP
000001dd: JUMPDEST
000001de: PUSH1 0x40
000001e0: MLOAD
000001e1: SWAP1
000001e2: DUP2
000001e3: MSTORE
000001e4: PUSH1 0x20
000001e6: ADD
000001e7: JUMPDEST
000001e8: PUSH1 0x40
000001ea: MLOAD
000001eb: DUP1
000001ec: SWAP2
000001ed: SUB
000001ee: SWAP1
000001ef: RETURN
000001f0: JUMPDEST
000001f1: CALLVALUE
000001f2: DUP1
000001f3: ISZERO
000001f4: PUSH2 0x01fc
000001f7: JUMPI
000001f8: PUSH1 0x00
000001fa: DUP1
000001fb: REVERT
000001fc: JUMPDEST
000001fd: POP
000001fe: PUSH2 0x0274
00000201: PUSH2 0x020b
00000204: CALLDATASIZE
00000205: PUSH1 0x04
00000207: PUSH2 0x306b
0000020a: JUMP
0000020b: JUMPDEST
0000020c: PUSH1 0x6d
0000020e: PUSH1 0x20
00000210: SWAP1
00000211: DUP2
00000212: MSTORE
00000213: PUSH1 0x00
00000215: SWAP3
00000216: DUP4
00000217: MSTORE
00000218: PUSH1 0x40
0000021a: DUP1
0000021b: DUP5
0000021c: KECCAK256
0000021d: SWAP1
0000021e: SWAP2
0000021f: MSTORE
00000220: SWAP1
00000221: DUP3
00000222: MSTORE
00000223: SWAP1
00000224: KECCAK256
00000225: DUP1
00000226: SLOAD
00000227: PUSH1 0x01
00000229: SWAP1
0000022a: SWAP2
0000022b: ADD
0000022c: SLOAD
0000022d: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff
00000248: DUP3
00000249: AND
0000024a: SWAP2
0000024b: PUSH27 0x010000000000000000000000000000000000000000000000000000
00000267: SWAP1
00000268: DIV
00000269: PUSH6 0xffffffffffff
00000270: AND
00000271: SWAP1
00000272: DUP4
00000273: JUMP
00000274: JUMPDEST
00000275: PUSH1 0x40
00000277: DUP1
00000278: MLOAD
00000279: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff
00000294: SWAP1
00000295: SWAP5
00000296: AND
00000297: DUP5
00000298: MSTORE
00000299: PUSH6 0xffffffffffff
000002a0: SWAP1
000002a1: SWAP3
000002a2: AND
000002a3: PUSH1 0x20
000002a5: DUP5
000002a6: ADD
000002a7: MSTORE
000002a8: SWAP1
000002a9: DUP3
000002aa: ADD
000002ab: MSTORE
000002ac: PUSH1 0x60
000002ae: ADD
000002af: PUSH2 0x01e7
000002b2: JUMP
000002b3: JUMPDEST
000002b4: CALLVALUE
000002b5: DUP1
000002b6: ISZERO
000002b7: PUSH2 0x02bf
000002ba: JUMPI
000002bb: PUSH1 0x00
000002bd: DUP1
000002be: REVERT
000002bf: JUMPDEST
000002c0: POP
000002c1: PUSH2 0x02d3
000002c4: PUSH2 0x02ce
000002c7: CALLDATASIZE
000002c8: PUSH1 0x04
000002ca: PUSH2 0x30a4
000002cd: JUMP
000002ce: JUMPDEST
000002cf: PUSH2 0x06bb
000002d2: JUMP
000002d3: JUMPDEST
000002d4: STOP
000002d5: JUMPDEST
000002d6: CALLVALUE
000002d7: DUP1
000002d8: ISZERO
000002d9: PUSH2 0x02e1
000002dc: JUMPI
000002dd: PUSH1 0x00
000002df: DUP1
000002e0: REVERT
000002e1: JUMPDEST
000002e2: POP
000002e3: PUSH2 0x02d3
000002e6: PUSH2 0x02f0
000002e9: CALLDATASIZE
000002ea: PUSH1 0x04
000002ec: PUSH2 0x30bd
000002ef: JUMP
000002f0: JUMPDEST
000002f1: PUSH2 0x080f
000002f4: JUMP
000002f5: JUMPDEST
000002f6: CALLVALUE
000002f7: DUP1
000002f8: ISZERO
000002f9: PUSH2 0x0301
000002fc: JUMPI
000002fd: PUSH1 0x00
000002ff: DUP1
00000300: REVERT
00000301: JUMPDEST
00000302: POP
00000303: PUSH2 0x01dd
00000306: PUSH2 0x0310
00000309: CALLDATASIZE
0000030a: PUSH1 0x04
0000030c: PUSH2 0x30fe
0000030f: JUMP
00000310: JUMPDEST
00000311: PUSH1 0x6f
00000313: PUSH1 0x20
00000315: MSTORE
00000316: PUSH1 0x00
00000318: SWAP1
00000319: DUP2
0000031a: MSTORE
0000031b: PUSH1 0x40
0000031d: SWAP1
0000031e: KECCAK256
0000031f: SLOAD
00000320: DUP2
00000321: JUMP
00000322: JUMPDEST
00000323: CALLVALUE
00000324: DUP1
00000325: ISZERO
00000326: PUSH2 0x032e
00000329: JUMPI
0000032a: PUSH1 0x00
0000032c: DUP1
0000032d: REVERT
0000032e: JUMPDEST
0000032f: POP
00000330: PUSH2 0x01dd
00000333: PUSH2 0x033d
00000336: CALLDATASIZE
00000337: PUSH1 0x04
00000339: PUSH2 0x306b
0000033c: JUMP
0000033d: JUMPDEST
0000033e: PUSH1 0x70
00000340: PUSH1 0x20
00000342: SWAP1
00000343: DUP2
00000344: MSTORE
00000345: PUSH1 0x00
00000347: SWAP3
00000348: DUP4
00000349: MSTORE
0000034a: PUSH1 0x40
0000034c: DUP1
0000034d: DUP5
0000034e: KECCAK256
0000034f: SWAP1
00000350: SWAP2
00000351: MSTORE
00000352: SWAP1
00000353: DUP3
00000354: MSTORE
00000355: SWAP1
00000356: KECCAK256
00000357: SLOAD
00000358: DUP2
00000359: JUMP
0000035a: JUMPDEST
0000035b: CALLVALUE
0000035c: DUP1
0000035d: ISZERO
0000035e: PUSH2 0x0366
00000361: JUMPI
00000362: PUSH1 0x00
00000364: DUP1
00000365: REVERT
00000366: JUMPDEST
00000367: POP
00000368: PUSH2 0x02d3
0000036b: PUSH2 0x0375
0000036e: CALLDATASIZE
0000036f: PUSH1 0x04
00000371: PUSH2 0x30fe
00000374: JUMP
00000375: JUMPDEST
00000376: PUSH2 0x0964
00000379: JUMP
0000037a: JUMPDEST
0000037b: CALLVALUE
0000037c: DUP1
0000037d: ISZERO
0000037e: PUSH2 0x0386
00000381: JUMPI
00000382: PUSH1 0x00
00000384: DUP1
00000385: REVERT
00000386: JUMPDEST
00000387: POP
00000388: PUSH2 0x02d3
0000038b: PUSH2 0x0395
0000038e: CALLDATASIZE
0000038f: PUSH1 0x04
00000391: PUSH2 0x31de
00000394: JUMP
00000395: JUMPDEST
00000396: PUSH2 0x0b02
00000399: JUMP
0000039a: JUMPDEST
0000039b: CALLVALUE
0000039c: DUP1
0000039d: ISZERO
0000039e: PUSH2 0x03a6
000003a1: JUMPI
000003a2: PUSH1 0x00
000003a4: DUP1
000003a5: REVERT
000003a6: JUMPDEST
000003a7: POP
000003a8: PUSH2 0x02d3
000003ab: PUSH2 0x03b5
000003ae: CALLDATASIZE
000003af: PUSH1 0x04
000003b1: PUSH2 0x30fe
000003b4: JUMP
000003b5: JUMPDEST
000003b6: PUSH2 0x0c33
000003b9: JUMP
000003ba: JUMPDEST
000003bb: CALLVALUE
000003bc: DUP1
000003bd: ISZERO
000003be: PUSH2 0x03c6
000003c1: JUMPI
000003c2: PUSH1 0x00
000003c4: DUP1
000003c5: REVERT
000003c6: JUMPDEST
000003c7: POP
000003c8: PUSH2 0x02d3
000003cb: PUSH2 0x03d5
000003ce: CALLDATASIZE
000003cf: PUSH1 0x04
000003d1: PUSH2 0x3227
000003d4: JUMP
000003d5: JUMPDEST
000003d6: PUSH2 0x0e3d
000003d9: JUMP
000003da: JUMPDEST
000003db: CALLVALUE
000003dc: DUP1
000003dd: ISZERO
000003de: PUSH2 0x03e6
000003e1: JUMPI
000003e2: PUSH1 0x00
000003e4: DUP1
000003e5: REVERT
000003e6: JUMPDEST
000003e7: POP
000003e8: PUSH2 0x01dd
000003eb: PUSH2 0x0f84
000003ee: JUMP
000003ef: JUMPDEST
000003f0: PUSH2 0x02d3
000003f3: PUSH2 0x03fd
000003f6: CALLDATASIZE
000003f7: PUSH1 0x04
000003f9: PUSH2 0x324f
000003fc: JUMP
000003fd: JUMPDEST
000003fe: PUSH2 0x0fe2
00000401: JUMP
00000402: JUMPDEST
00000403: CALLVALUE
00000404: DUP1
00000405: ISZERO
00000406: PUSH2 0x040e
00000409: JUMPI
0000040a: PUSH1 0x00
0000040c: DUP1
0000040d: REVERT
0000040e: JUMPDEST
0000040f: POP
00000410: PUSH2 0x01dd
00000413: PUSH2 0x11d8
00000416: JUMP
00000417: JUMPDEST
00000418: CALLVALUE
00000419: DUP1
0000041a: ISZERO
0000041b: PUSH2 0x0423
0000041e: JUMPI
0000041f: PUSH1 0x00
00000421: DUP1
00000422: REVERT
00000423: JUMPDEST
00000424: POP
00000425: PUSH1 0x6b
00000427: SLOAD
00000428: PUSH2 0x0454
0000042b: SWAP1
0000042c: PUSH27 0x010000000000000000000000000000000000000000000000000000
00000448: SWAP1
00000449: DIV
0000044a: PUSH6 0xffffffffffff
00000451: AND
00000452: DUP2
00000453: JUMP
00000454: JUMPDEST
00000455: PUSH1 0x40
00000457: MLOAD
00000458: PUSH6 0xffffffffffff
0000045f: SWAP1
00000460: SWAP2
00000461: AND
00000462: DUP2
00000463: MSTORE
00000464: PUSH1 0x20
00000466: ADD
00000467: PUSH2 0x01e7
0000046a: JUMP
0000046b: JUMPDEST
0000046c: CALLVALUE
0000046d: DUP1
0000046e: ISZERO
0000046f: PUSH2 0x0477
00000472: JUMPI
00000473: PUSH1 0x00
00000475: DUP1
00000476: REVERT
00000477: JUMPDEST
00000478: POP
00000479: PUSH1 0x6b
0000047b: SLOAD
0000047c: PUSH2 0x0454
0000047f: SWAP1
00000480: PUSH21 0x010000000000000000000000000000000000000000
00000496: SWAP1
00000497: DIV
00000498: PUSH6 0xffffffffffff
0000049f: AND
000004a0: DUP2
000004a1: JUMP
000004a2: JUMPDEST
000004a3: CALLVALUE
000004a4: DUP1
000004a5: ISZERO
000004a6: PUSH2 0x04ae
000004a9: JUMPI
000004aa: PUSH1 0x00
000004ac: DUP1
000004ad: REVERT
000004ae: JUMPDEST
000004af: POP
000004b0: PUSH2 0x02d3
000004b3: PUSH2 0x04bd
000004b6: CALLDATASIZE
000004b7: PUSH1 0x04
000004b9: PUSH2 0x30fe
000004bc: JUMP
000004bd: JUMPDEST
000004be: PUSH2 0x12c4
000004c1: JUMP
000004c2: JUMPDEST
000004c3: CALLVALUE
000004c4: DUP1
000004c5: ISZERO
000004c6: PUSH2 0x04ce
000004c9: JUMPI
000004ca: PUSH1 0x00
000004cc: DUP1
000004cd: REVERT
000004ce: JUMPDEST
000004cf: POP
000004d0: PUSH1 0x6b
000004d2: SLOAD
000004d3: PUSH2 0x04ef
000004d6: SWAP1
000004d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000004ec: AND
000004ed: DUP2
000004ee: JUMP
000004ef: JUMPDEST
000004f0: PUSH1 0x40
000004f2: MLOAD
000004f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000508: SWAP1
00000509: SWAP2
0000050a: AND
0000050b: DUP2
0000050c: MSTORE
0000050d: PUSH1 0x20
0000050f: ADD
00000510: PUSH2 0x01e7
00000513: JUMP
00000514: JUMPDEST
00000515: CALLVALUE
00000516: DUP1
00000517: ISZERO
00000518: PUSH2 0x0520
0000051b: JUMPI
0000051c: PUSH1 0x00
0000051e: DUP1
0000051f: REVERT
00000520: JUMPDEST
00000521: POP
00000522: PUSH2 0x02d3
00000525: PUSH2 0x052f
00000528: CALLDATASIZE
00000529: PUSH1 0x04
0000052b: PUSH2 0x32ff
0000052e: JUMP
0000052f: JUMPDEST
00000530: PUSH2 0x144b
00000533: JUMP
00000534: JUMPDEST
00000535: CALLVALUE
00000536: DUP1
00000537: ISZERO
00000538: PUSH2 0x0540
0000053b: JUMPI
0000053c: PUSH1 0x00
0000053e: DUP1
0000053f: REVERT
00000540: JUMPDEST
00000541: POP
00000542: PUSH2 0x02d3
00000545: PUSH2 0x054f
00000548: CALLDATASIZE
00000549: PUSH1 0x04
0000054b: PUSH2 0x30fe
0000054e: JUMP
0000054f: JUMPDEST
00000550: PUSH2 0x1894
00000553: JUMP
00000554: JUMPDEST
00000555: CALLVALUE
00000556: DUP1
00000557: ISZERO
00000558: PUSH2 0x0560
0000055b: JUMPI
0000055c: PUSH1 0x00
0000055e: DUP1
0000055f: REVERT
00000560: JUMPDEST
00000561: POP
00000562: PUSH2 0x02d3
00000565: PUSH2 0x056f
00000568: CALLDATASIZE
00000569: PUSH1 0x04
0000056b: PUSH2 0x33d1
0000056e: JUMP
0000056f: JUMPDEST
00000570: PUSH2 0x19f5
00000573: JUMP
00000574: JUMPDEST
00000575: CALLVALUE
00000576: DUP1
00000577: ISZERO
00000578: PUSH2 0x0580
0000057b: JUMPI
0000057c: PUSH1 0x00
0000057e: DUP1
0000057f: REVERT
00000580: JUMPDEST
00000581: POP
00000582: PUSH2 0x02d3
00000585: PUSH2 0x1bff
00000588: JUMP
00000589: JUMPDEST
0000058a: CALLVALUE
0000058b: DUP1
0000058c: ISZERO
0000058d: PUSH2 0x0595
00000590: JUMPI
00000591: PUSH1 0x00
00000593: DUP1
00000594: REVERT
00000595: JUMPDEST
00000596: POP
00000597: PUSH2 0x02d3
0000059a: PUSH2 0x05a4
0000059d: CALLDATASIZE
0000059e: PUSH1 0x04
000005a0: PUSH2 0x306b
000005a3: JUMP
000005a4: JUMPDEST
000005a5: PUSH2 0x1d21
000005a8: JUMP
000005a9: JUMPDEST
000005aa: CALLVALUE
000005ab: DUP1
000005ac: ISZERO
000005ad: PUSH2 0x05b5
000005b0: JUMPI
000005b1: PUSH1 0x00
000005b3: DUP1
000005b4: REVERT
000005b5: JUMPDEST
000005b6: POP
000005b7: PUSH2 0x02d3
000005ba: PUSH2 0x05c4
000005bd: CALLDATASIZE
000005be: PUSH1 0x04
000005c0: PUSH2 0x30fe
000005c3: JUMP
000005c4: JUMPDEST
000005c5: PUSH2 0x1edc
000005c8: JUMP
000005c9: JUMPDEST
000005ca: CALLVALUE
000005cb: DUP1
000005cc: ISZERO
000005cd: PUSH2 0x05d5
000005d0: JUMPI
000005d1: PUSH1 0x00
000005d3: DUP1
000005d4: REVERT
000005d5: JUMPDEST
000005d6: POP
000005d7: PUSH1 0x69
000005d9: SLOAD
000005da: PUSH2 0x04ef
000005dd: SWAP1
000005de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005f3: AND
000005f4: DUP2
000005f5: JUMP
000005f6: JUMPDEST
000005f7: CALLVALUE
000005f8: DUP1
000005f9: ISZERO
000005fa: PUSH2 0x0602
000005fd: JUMPI
000005fe: PUSH1 0x00
00000600: DUP1
00000601: REVERT
00000602: JUMPDEST
00000603: POP
00000604: PUSH1 0x67
00000606: SLOAD
00000607: PUSH1 0x68
00000609: SLOAD
0000060a: PUSH2 0x0611
0000060d: SWAP2
0000060e: SWAP1
0000060f: DUP3
00000610: JUMP
00000611: JUMPDEST
00000612: PUSH1 0x40
00000614: DUP1
00000615: MLOAD
00000616: SWAP3
00000617: DUP4
00000618: MSTORE
00000619: PUSH1 0x20
0000061b: DUP4
0000061c: ADD
0000061d: SWAP2
0000061e: SWAP1
0000061f: SWAP2
00000620: MSTORE
00000621: ADD
00000622: PUSH2 0x01e7
00000625: JUMP
00000626: JUMPDEST
00000627: CALLVALUE
00000628: DUP1
00000629: ISZERO
0000062a: PUSH2 0x0632
0000062d: JUMPI
0000062e: PUSH1 0x00
00000630: DUP1
00000631: REVERT
00000632: JUMPDEST
00000633: POP
00000634: PUSH2 0x02d3
00000637: PUSH2 0x0641
0000063a: CALLDATASIZE
0000063b: PUSH1 0x04
0000063d: PUSH2 0x33ee
00000640: JUMP
00000641: JUMPDEST
00000642: PUSH2 0x20f3
00000645: JUMP
00000646: JUMPDEST
00000647: CALLVALUE
00000648: DUP1
00000649: ISZERO
0000064a: PUSH2 0x0652
0000064d: JUMPI
0000064e: PUSH1 0x00
00000650: DUP1
00000651: REVERT
00000652: JUMPDEST
00000653: POP
00000654: PUSH2 0x01dd
00000657: PUSH2 0x0661
0000065a: CALLDATASIZE
0000065b: PUSH1 0x04
0000065d: PUSH2 0x30fe
00000660: JUMP
00000661: JUMPDEST
00000662: PUSH1 0x6e
00000664: PUSH1 0x20
00000666: MSTORE
00000667: PUSH1 0x00
00000669: SWAP1
0000066a: DUP2
0000066b: MSTORE
0000066c: PUSH1 0x40
0000066e: SWAP1
0000066f: KECCAK256
00000670: SLOAD
00000671: DUP2
00000672: JUMP
00000673: JUMPDEST
00000674: CALLVALUE
00000675: DUP1
00000676: ISZERO
00000677: PUSH2 0x067f
0000067a: JUMPI
0000067b: PUSH1 0x00
0000067d: DUP1
0000067e: REVERT
0000067f: JUMPDEST
00000680: POP
00000681: PUSH1 0x6a
00000683: SLOAD
00000684: PUSH2 0x04ef
00000687: SWAP1
00000688: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000069d: AND
0000069e: DUP2
0000069f: JUMP
000006a0: JUMPDEST
000006a1: CALLVALUE
000006a2: DUP1
000006a3: ISZERO
000006a4: PUSH2 0x06ac
000006a7: JUMPI
000006a8: PUSH1 0x00
000006aa: DUP1
000006ab: REVERT
000006ac: JUMPDEST
000006ad: POP
000006ae: PUSH1 0x65
000006b0: SLOAD
000006b1: PUSH1 0x66
000006b3: SLOAD
000006b4: PUSH2 0x0611
000006b7: SWAP2
000006b8: SWAP1
000006b9: DUP3
000006ba: JUMP
000006bb: JUMPDEST
000006bc: PUSH1 0x6a
000006be: SLOAD
000006bf: PUSH1 0x40
000006c1: MLOAD
000006c2: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
000006e3: DUP2
000006e4: MSTORE
000006e5: CALLER
000006e6: PUSH1 0x04
000006e8: DUP3
000006e9: ADD
000006ea: MSTORE
000006eb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000700: SWAP1
00000701: SWAP2
00000702: AND
00000703: SWAP1
00000704: PUSH4 0xe43581b8
00000709: SWAP1
0000070a: PUSH1 0x24
0000070c: ADD
0000070d: PUSH1 0x20
0000070f: PUSH1 0x40
00000711: MLOAD
00000712: DUP1
00000713: DUP4
00000714: SUB
00000715: DUP2
00000716: DUP7
00000717: GAS
00000718: STATICCALL
00000719: ISZERO
0000071a: DUP1
0000071b: ISZERO
0000071c: PUSH2 0x0729
0000071f: JUMPI
00000720: RETURNDATASIZE
00000721: PUSH1 0x00
00000723: DUP1
00000724: RETURNDATACOPY
00000725: RETURNDATASIZE
00000726: PUSH1 0x00
00000728: REVERT
00000729: JUMPDEST
0000072a: POP
0000072b: POP
0000072c: POP
0000072d: POP
0000072e: PUSH1 0x40
00000730: MLOAD
00000731: RETURNDATASIZE
00000732: PUSH1 0x1f
00000734: NOT
00000735: PUSH1 0x1f
00000737: DUP3
00000738: ADD
00000739: AND
0000073a: DUP3
0000073b: ADD
0000073c: DUP1
0000073d: PUSH1 0x40
0000073f: MSTORE
00000740: POP
00000741: DUP2
00000742: ADD
00000743: SWAP1
00000744: PUSH2 0x074d
00000747: SWAP2
00000748: SWAP1
00000749: PUSH2 0x3406
0000074c: JUMP
0000074d: JUMPDEST
0000074e: PUSH2 0x0783
00000751: JUMPI
00000752: PUSH1 0x40
00000754: MLOAD
00000755: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
00000776: DUP2
00000777: MSTORE
00000778: PUSH1 0x04
0000077a: ADD
0000077b: PUSH1 0x40
0000077d: MLOAD
0000077e: DUP1
0000077f: SWAP2
00000780: SUB
00000781: SWAP1
00000782: REVERT
00000783: JUMPDEST
00000784: PUSH1 0x6b
00000786: SLOAD
00000787: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000079c: AND
0000079d: ISZERO
0000079e: PUSH2 0x07d3
000007a1: JUMPI
000007a2: PUSH1 0x40
000007a4: MLOAD
000007a5: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000
000007c6: DUP2
000007c7: MSTORE
000007c8: PUSH1 0x04
000007ca: ADD
000007cb: PUSH1 0x40
000007cd: MLOAD
000007ce: DUP1
000007cf: SWAP2
000007d0: SUB
000007d1: SWAP1
000007d2: REVERT
000007d3: JUMPDEST
000007d4: PUSH1 0x6c
000007d6: DUP2
000007d7: SWAP1
000007d8: SSTORE
000007d9: PUSH1 0x40
000007db: MLOAD
000007dc: DUP2
000007dd: DUP2
000007de: MSTORE
000007df: PUSH32 0x39bb629f3d59f5eddf978050e1f5fabeca2b5d02dfc9c25e84f32e7da1069db4
00000800: SWAP1
00000801: PUSH1 0x20
00000803: ADD
00000804: JUMPDEST
00000805: PUSH1 0x40
00000807: MLOAD
00000808: DUP1
00000809: SWAP2
0000080a: SUB
0000080b: SWAP1
0000080c: LOG1
0000080d: POP
0000080e: JUMP
0000080f: JUMPDEST
00000810: PUSH1 0x6a
00000812: SLOAD
00000813: PUSH1 0x40
00000815: MLOAD
00000816: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
00000837: DUP2
00000838: MSTORE
00000839: CALLER
0000083a: PUSH1 0x04
0000083c: DUP3
0000083d: ADD
0000083e: MSTORE
0000083f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000854: SWAP1
00000855: SWAP2
00000856: AND
00000857: SWAP1
00000858: PUSH4 0xe43581b8
0000085d: SWAP1
0000085e: PUSH1 0x24
00000860: ADD
00000861: PUSH1 0x20
00000863: PUSH1 0x40
00000865: MLOAD
00000866: DUP1
00000867: DUP4
00000868: SUB
00000869: DUP2
0000086a: DUP7
0000086b: GAS
0000086c: STATICCALL
0000086d: ISZERO
0000086e: DUP1
0000086f: ISZERO
00000870: PUSH2 0x087d
00000873: JUMPI
00000874: RETURNDATASIZE
00000875: PUSH1 0x00
00000877: DUP1
00000878: RETURNDATACOPY
00000879: RETURNDATASIZE
0000087a: PUSH1 0x00
0000087c: REVERT
0000087d: JUMPDEST
0000087e: POP
0000087f: POP
00000880: POP
00000881: POP
00000882: PUSH1 0x40
00000884: MLOAD
00000885: RETURNDATASIZE
00000886: PUSH1 0x1f
00000888: NOT
00000889: PUSH1 0x1f
0000088b: DUP3
0000088c: ADD
0000088d: AND
0000088e: DUP3
0000088f: ADD
00000890: DUP1
00000891: PUSH1 0x40
00000893: MSTORE
00000894: POP
00000895: DUP2
00000896: ADD
00000897: SWAP1
00000898: PUSH2 0x08a1
0000089b: SWAP2
0000089c: SWAP1
0000089d: PUSH2 0x3406
000008a0: JUMP
000008a1: JUMPDEST
000008a2: PUSH2 0x08d7
000008a5: JUMPI
000008a6: PUSH1 0x40
000008a8: MLOAD
000008a9: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
000008ca: DUP2
000008cb: MSTORE
000008cc: PUSH1 0x04
000008ce: ADD
000008cf: PUSH1 0x40
000008d1: MLOAD
000008d2: DUP1
000008d3: SWAP2
000008d4: SUB
000008d5: SWAP1
000008d6: REVERT
000008d7: JUMPDEST
000008d8: PUSH2 0x08f8
000008db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008f0: DUP5
000008f1: AND
000008f2: DUP4
000008f3: DUP4
000008f4: PUSH2 0x2318
000008f7: JUMP
000008f8: JUMPDEST
000008f9: DUP2
000008fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000090f: AND
00000910: DUP4
00000911: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000926: AND
00000927: PUSH32 0xfff3b3844276f57024e0b42afec1a37f75db36511e43819a4f2a63ab7862b648
00000948: DUP4
00000949: PUSH1 0x40
0000094b: MLOAD
0000094c: PUSH2 0x0957
0000094f: SWAP2
00000950: DUP2
00000951: MSTORE
00000952: PUSH1 0x20
00000954: ADD
00000955: SWAP1
00000956: JUMP
00000957: JUMPDEST
00000958: PUSH1 0x40
0000095a: MLOAD
0000095b: DUP1
0000095c: SWAP2
0000095d: SUB
0000095e: SWAP1
0000095f: LOG3
00000960: POP
00000961: POP
00000962: POP
00000963: JUMP
00000964: JUMPDEST
00000965: DUP1
00000966: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000097b: DUP2
0000097c: AND
0000097d: CALLER
0000097e: EQ
0000097f: DUP1
00000980: ISZERO
00000981: SWAP1
00000982: PUSH2 0x099b
00000985: JUMPI
00000986: POP
00000987: CALLER
00000988: PUSH1 0x00
0000098a: SWAP1
0000098b: DUP2
0000098c: MSTORE
0000098d: PUSH1 0x6e
0000098f: PUSH1 0x20
00000991: MSTORE
00000992: PUSH1 0x40
00000994: SWAP1
00000995: KECCAK256
00000996: SLOAD
00000997: PUSH1 0x01
00000999: EQ
0000099a: ISZERO
0000099b: JUMPDEST
0000099c: DUP1
0000099d: ISZERO
0000099e: PUSH2 0x0a36
000009a1: JUMPI
000009a2: POP
000009a3: PUSH1 0x6a
000009a5: SLOAD
000009a6: PUSH1 0x40
000009a8: MLOAD
000009a9: PUSH32 0x521d4de900000000000000000000000000000000000000000000000000000000
000009ca: DUP2
000009cb: MSTORE
000009cc: CALLER
000009cd: PUSH1 0x04
000009cf: DUP3
000009d0: ADD
000009d1: MSTORE
000009d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009e7: SWAP1
000009e8: SWAP2
000009e9: AND
000009ea: SWAP1
000009eb: PUSH4 0x521d4de9
000009f0: SWAP1
000009f1: PUSH1 0x24
000009f3: ADD
000009f4: PUSH1 0x20
000009f6: PUSH1 0x40
000009f8: MLOAD
000009f9: DUP1
000009fa: DUP4
000009fb: SUB
000009fc: DUP2
000009fd: DUP7
000009fe: GAS
000009ff: STATICCALL
00000a00: ISZERO
00000a01: DUP1
00000a02: ISZERO
00000a03: PUSH2 0x0a10
00000a06: JUMPI
00000a07: RETURNDATASIZE
00000a08: PUSH1 0x00
00000a0a: DUP1
00000a0b: RETURNDATACOPY
00000a0c: RETURNDATASIZE
00000a0d: PUSH1 0x00
00000a0f: REVERT
00000a10: JUMPDEST
00000a11: POP
00000a12: POP
00000a13: POP
00000a14: POP
00000a15: PUSH1 0x40
00000a17: MLOAD
00000a18: RETURNDATASIZE
00000a19: PUSH1 0x1f
00000a1b: NOT
00000a1c: PUSH1 0x1f
00000a1e: DUP3
00000a1f: ADD
00000a20: AND
00000a21: DUP3
00000a22: ADD
00000a23: DUP1
00000a24: PUSH1 0x40
00000a26: MSTORE
00000a27: POP
00000a28: DUP2
00000a29: ADD
00000a2a: SWAP1
00000a2b: PUSH2 0x0a34
00000a2e: SWAP2
00000a2f: SWAP1
00000a30: PUSH2 0x3406
00000a33: JUMP
00000a34: JUMPDEST
00000a35: ISZERO
00000a36: JUMPDEST
00000a37: ISZERO
00000a38: PUSH2 0x0a6d
00000a3b: JUMPI
00000a3c: PUSH1 0x40
00000a3e: MLOAD
00000a3f: PUSH32 0xc22a648e00000000000000000000000000000000000000000000000000000000
00000a60: DUP2
00000a61: MSTORE
00000a62: PUSH1 0x04
00000a64: ADD
00000a65: PUSH1 0x40
00000a67: MLOAD
00000a68: DUP1
00000a69: SWAP2
00000a6a: SUB
00000a6b: SWAP1
00000a6c: REVERT
00000a6d: JUMPDEST
00000a6e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a83: DUP3
00000a84: AND
00000a85: PUSH1 0x00
00000a87: SWAP1
00000a88: DUP2
00000a89: MSTORE
00000a8a: PUSH1 0x6f
00000a8c: PUSH1 0x20
00000a8e: MSTORE
00000a8f: PUSH1 0x40
00000a91: SWAP1
00000a92: KECCAK256
00000a93: SLOAD
00000a94: PUSH2 0x0a9e
00000a97: DUP2
00000a98: PUSH1 0x01
00000a9a: PUSH2 0x3452
00000a9d: JUMP
00000a9e: JUMPDEST
00000a9f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ab4: DUP5
00000ab5: AND
00000ab6: PUSH1 0x00
00000ab8: DUP2
00000ab9: DUP2
00000aba: MSTORE
00000abb: PUSH1 0x6f
00000abd: PUSH1 0x20
00000abf: SWAP1
00000ac0: DUP2
00000ac1: MSTORE
00000ac2: PUSH1 0x40
00000ac4: SWAP2
00000ac5: DUP3
00000ac6: SWAP1
00000ac7: KECCAK256
00000ac8: SWAP4
00000ac9: SWAP1
00000aca: SWAP4
00000acb: SSTORE
00000acc: MLOAD
00000acd: DUP4
00000ace: ISZERO
00000acf: DUP2
00000ad0: MSTORE
00000ad1: SWAP1
00000ad2: SWAP2
00000ad3: PUSH32 0x81d714ca01079a19c106993b49b2764df6bb6abe740164ef7b77ee9c100a024a
00000af4: SWAP2
00000af5: ADD
00000af6: PUSH1 0x40
00000af8: MLOAD
00000af9: DUP1
00000afa: SWAP2
00000afb: SUB
00000afc: SWAP1
00000afd: LOG2
00000afe: POP
00000aff: POP
00000b00: POP
00000b01: JUMP
00000b02: JUMPDEST
00000b03: PUSH1 0x6b
00000b05: SLOAD
00000b06: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b1b: AND
00000b1c: ISZERO
00000b1d: PUSH2 0x0b52
00000b20: JUMPI
00000b21: PUSH1 0x40
00000b23: MLOAD
00000b24: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000
00000b45: DUP2
00000b46: MSTORE
00000b47: PUSH1 0x04
00000b49: ADD
00000b4a: PUSH1 0x40
00000b4c: MLOAD
00000b4d: DUP1
00000b4e: SWAP2
00000b4f: SUB
00000b50: SWAP1
00000b51: REVERT
00000b52: JUMPDEST
00000b53: PUSH1 0x6b
00000b55: SLOAD
00000b56: PUSH21 0x010000000000000000000000000000000000000000
00000b6c: SWAP1
00000b6d: DIV
00000b6e: PUSH6 0xffffffffffff
00000b75: AND
00000b76: TIMESTAMP
00000b77: LT
00000b78: PUSH2 0x0bad
00000b7b: JUMPI
00000b7c: PUSH1 0x40
00000b7e: MLOAD
00000b7f: PUSH32 0x1a8f039500000000000000000000000000000000000000000000000000000000
00000ba0: DUP2
00000ba1: MSTORE
00000ba2: PUSH1 0x04
00000ba4: ADD
00000ba5: PUSH1 0x40
00000ba7: MLOAD
00000ba8: DUP1
00000ba9: SWAP2
00000baa: SUB
00000bab: SWAP1
00000bac: REVERT
00000bad: JUMPDEST
00000bae: PUSH1 0x6c
00000bb0: SLOAD
00000bb1: PUSH1 0x69
00000bb3: SLOAD
00000bb4: PUSH2 0x0bd9
00000bb7: SWAP2
00000bb8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bcd: SWAP1
00000bce: SWAP2
00000bcf: AND
00000bd0: SWAP1
00000bd1: CALLER
00000bd2: SWAP1
00000bd3: ADDRESS
00000bd4: SWAP1
00000bd5: PUSH2 0x23f1
00000bd8: JUMP
00000bd9: JUMPDEST
00000bda: PUSH1 0x6b
00000bdc: DUP1
00000bdd: SLOAD
00000bde: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000bff: AND
00000c00: CALLER
00000c01: OR
00000c02: SWAP1
00000c03: SSTORE
00000c04: PUSH1 0x40
00000c06: MLOAD
00000c07: PUSH32 0x5eca00b8ed745eee61451333090bfa56aa1f2a9e696a2aebe5f1f5b6cef6f2ff
00000c28: SWAP1
00000c29: PUSH2 0x0804
00000c2c: SWAP1
00000c2d: DUP4
00000c2e: SWAP1
00000c2f: PUSH2 0x3489
00000c32: JUMP
00000c33: JUMPDEST
00000c34: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c49: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0
00000c6a: AND
00000c6b: ADDRESS
00000c6c: SUB
00000c6d: PUSH2 0x0cfd
00000c70: JUMPI
00000c71: PUSH1 0x40
00000c73: MLOAD
00000c74: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000c95: DUP2
00000c96: MSTORE
00000c97: PUSH1 0x20
00000c99: PUSH1 0x04
00000c9b: DUP3
00000c9c: ADD
00000c9d: MSTORE
00000c9e: PUSH1 0x2c
00000ca0: PUSH1 0x24
00000ca2: DUP3
00000ca3: ADD
00000ca4: MSTORE
00000ca5: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000cc6: PUSH1 0x44
00000cc8: DUP3
00000cc9: ADD
00000cca: MSTORE
00000ccb: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000
00000cec: PUSH1 0x64
00000cee: DUP3
00000cef: ADD
00000cf0: MSTORE
00000cf1: PUSH1 0x84
00000cf3: ADD
00000cf4: JUMPDEST
00000cf5: PUSH1 0x40
00000cf7: MLOAD
00000cf8: DUP1
00000cf9: SWAP2
00000cfa: SUB
00000cfb: SWAP1
00000cfc: REVERT
00000cfd: JUMPDEST
00000cfe: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0
00000d1f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d34: AND
00000d35: PUSH2 0x0d72
00000d38: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000d59: SLOAD
00000d5a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d6f: AND
00000d70: SWAP1
00000d71: JUMP
00000d72: JUMPDEST
00000d73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d88: AND
00000d89: EQ
00000d8a: PUSH2 0x0e15
00000d8d: JUMPI
00000d8e: PUSH1 0x40
00000d90: MLOAD
00000d91: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000db2: DUP2
00000db3: MSTORE
00000db4: PUSH1 0x20
00000db6: PUSH1 0x04
00000db8: DUP3
00000db9: ADD
00000dba: MSTORE
00000dbb: PUSH1 0x2c
00000dbd: PUSH1 0x24
00000dbf: DUP3
00000dc0: ADD
00000dc1: MSTORE
00000dc2: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00000de3: PUSH1 0x44
00000de5: DUP3
00000de6: ADD
00000de7: MSTORE
00000de8: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000
00000e09: PUSH1 0x64
00000e0b: DUP3
00000e0c: ADD
00000e0d: MSTORE
00000e0e: PUSH1 0x84
00000e10: ADD
00000e11: PUSH2 0x0cf4
00000e14: JUMP
00000e15: JUMPDEST
00000e16: PUSH2 0x0e1e
00000e19: DUP2
00000e1a: PUSH2 0x2455
00000e1d: JUMP
00000e1e: JUMPDEST
00000e1f: PUSH1 0x40
00000e21: DUP1
00000e22: MLOAD
00000e23: PUSH1 0x00
00000e25: DUP1
00000e26: DUP3
00000e27: MSTORE
00000e28: PUSH1 0x20
00000e2a: DUP3
00000e2b: ADD
00000e2c: SWAP1
00000e2d: SWAP3
00000e2e: MSTORE
00000e2f: PUSH2 0x0e3a
00000e32: SWAP2
00000e33: DUP4
00000e34: SWAP2
00000e35: SWAP1
00000e36: PUSH2 0x253f
00000e39: JUMP
00000e3a: JUMPDEST
00000e3b: POP
00000e3c: JUMP
00000e3d: JUMPDEST
00000e3e: PUSH1 0x6a
00000e40: SLOAD
00000e41: PUSH1 0x40
00000e43: MLOAD
00000e44: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
00000e65: DUP2
00000e66: MSTORE
00000e67: CALLER
00000e68: PUSH1 0x04
00000e6a: DUP3
00000e6b: ADD
00000e6c: MSTORE
00000e6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e82: SWAP1
00000e83: SWAP2
00000e84: AND
00000e85: SWAP1
00000e86: PUSH4 0xe43581b8
00000e8b: SWAP1
00000e8c: PUSH1 0x24
00000e8e: ADD
00000e8f: PUSH1 0x20
00000e91: PUSH1 0x40
00000e93: MLOAD
00000e94: DUP1
00000e95: DUP4
00000e96: SUB
00000e97: DUP2
00000e98: DUP7
00000e99: GAS
00000e9a: STATICCALL
00000e9b: ISZERO
00000e9c: DUP1
00000e9d: ISZERO
00000e9e: PUSH2 0x0eab
00000ea1: JUMPI
00000ea2: RETURNDATASIZE
00000ea3: PUSH1 0x00
00000ea5: DUP1
00000ea6: RETURNDATACOPY
00000ea7: RETURNDATASIZE
00000ea8: PUSH1 0x00
00000eaa: REVERT
00000eab: JUMPDEST
00000eac: POP
00000ead: POP
00000eae: POP
00000eaf: POP
00000eb0: PUSH1 0x40
00000eb2: MLOAD
00000eb3: RETURNDATASIZE
00000eb4: PUSH1 0x1f
00000eb6: NOT
00000eb7: PUSH1 0x1f
00000eb9: DUP3
00000eba: ADD
00000ebb: AND
00000ebc: DUP3
00000ebd: ADD
00000ebe: DUP1
00000ebf: PUSH1 0x40
00000ec1: MSTORE
00000ec2: POP
00000ec3: DUP2
00000ec4: ADD
00000ec5: SWAP1
00000ec6: PUSH2 0x0ecf
00000ec9: SWAP2
00000eca: SWAP1
00000ecb: PUSH2 0x3406
00000ece: JUMP
00000ecf: JUMPDEST
00000ed0: PUSH2 0x0f05
00000ed3: JUMPI
00000ed4: PUSH1 0x40
00000ed6: MLOAD
00000ed7: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
00000ef8: DUP2
00000ef9: MSTORE
00000efa: PUSH1 0x04
00000efc: ADD
00000efd: PUSH1 0x40
00000eff: MLOAD
00000f00: DUP1
00000f01: SWAP2
00000f02: SUB
00000f03: SWAP1
00000f04: REVERT
00000f05: JUMPDEST
00000f06: PUSH1 0x6b
00000f08: DUP1
00000f09: SLOAD
00000f0a: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff
00000f25: AND
00000f26: PUSH27 0x010000000000000000000000000000000000000000000000000000
00000f42: PUSH6 0xffffffffffff
00000f49: DUP5
00000f4a: AND
00000f4b: SWAP1
00000f4c: DUP2
00000f4d: MUL
00000f4e: SWAP2
00000f4f: SWAP1
00000f50: SWAP2
00000f51: OR
00000f52: SWAP1
00000f53: SWAP2
00000f54: SSTORE
00000f55: PUSH1 0x40
00000f57: MLOAD
00000f58: SWAP1
00000f59: DUP2
00000f5a: MSTORE
00000f5b: PUSH32 0xfdf22e84af74bd4ab6b9646f6370a02bc886ed6ac25882db14e4ebf4b8e3bc7e
00000f7c: SWAP1
00000f7d: PUSH1 0x20
00000f7f: ADD
00000f80: PUSH2 0x0804
00000f83: JUMP
00000f84: JUMPDEST
00000f85: PUSH1 0x6b
00000f87: SLOAD
00000f88: PUSH1 0x00
00000f8a: SWAP1
00000f8b: PUSH21 0x010000000000000000000000000000000000000000
00000fa1: SWAP1
00000fa2: DIV
00000fa3: PUSH6 0xffffffffffff
00000faa: AND
00000fab: TIMESTAMP
00000fac: LT
00000fad: DUP1
00000fae: ISZERO
00000faf: SWAP1
00000fb0: PUSH2 0x0fcf
00000fb3: JUMPI
00000fb4: POP
00000fb5: PUSH1 0x6b
00000fb7: SLOAD
00000fb8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fcd: AND
00000fce: ISZERO
00000fcf: JUMPDEST
00000fd0: ISZERO
00000fd1: PUSH2 0x0fdb
00000fd4: JUMPI
00000fd5: POP
00000fd6: PUSH1 0x65
00000fd8: SLOAD
00000fd9: SWAP1
00000fda: JUMP
00000fdb: JUMPDEST
00000fdc: POP
00000fdd: PUSH1 0x67
00000fdf: SLOAD
00000fe0: SWAP1
00000fe1: JUMP
00000fe2: JUMPDEST
00000fe3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ff8: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0
00001019: AND
0000101a: ADDRESS
0000101b: SUB
0000101c: PUSH2 0x10a7
0000101f: JUMPI
00001020: PUSH1 0x40
00001022: MLOAD
00001023: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001044: DUP2
00001045: MSTORE
00001046: PUSH1 0x20
00001048: PUSH1 0x04
0000104a: DUP3
0000104b: ADD
0000104c: MSTORE
0000104d: PUSH1 0x2c
0000104f: PUSH1 0x24
00001051: DUP3
00001052: ADD
00001053: MSTORE
00001054: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
00001075: PUSH1 0x44
00001077: DUP3
00001078: ADD
00001079: MSTORE
0000107a: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000
0000109b: PUSH1 0x64
0000109d: DUP3
0000109e: ADD
0000109f: MSTORE
000010a0: PUSH1 0x84
000010a2: ADD
000010a3: PUSH2 0x0cf4
000010a6: JUMP
000010a7: JUMPDEST
000010a8: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0
000010c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010de: AND
000010df: PUSH2 0x111c
000010e2: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00001103: SLOAD
00001104: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001119: AND
0000111a: SWAP1
0000111b: JUMP
0000111c: JUMPDEST
0000111d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001132: AND
00001133: EQ
00001134: PUSH2 0x11bf
00001137: JUMPI
00001138: PUSH1 0x40
0000113a: MLOAD
0000113b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000115c: DUP2
0000115d: MSTORE
0000115e: PUSH1 0x20
00001160: PUSH1 0x04
00001162: DUP3
00001163: ADD
00001164: MSTORE
00001165: PUSH1 0x2c
00001167: PUSH1 0x24
00001169: DUP3
0000116a: ADD
0000116b: MSTORE
0000116c: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820
0000118d: PUSH1 0x44
0000118f: DUP3
00001190: ADD
00001191: MSTORE
00001192: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000
000011b3: PUSH1 0x64
000011b5: DUP3
000011b6: ADD
000011b7: MSTORE
000011b8: PUSH1 0x84
000011ba: ADD
000011bb: PUSH2 0x0cf4
000011be: JUMP
000011bf: JUMPDEST
000011c0: PUSH2 0x11c8
000011c3: DUP3
000011c4: PUSH2 0x2455
000011c7: JUMP
000011c8: JUMPDEST
000011c9: PUSH2 0x11d4
000011cc: DUP3
000011cd: DUP3
000011ce: PUSH1 0x01
000011d0: PUSH2 0x253f
000011d3: JUMP
000011d4: JUMPDEST
000011d5: POP
000011d6: POP
000011d7: JUMP
000011d8: JUMPDEST
000011d9: PUSH1 0x00
000011db: ADDRESS
000011dc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011f1: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0
00001212: AND
00001213: EQ
00001214: PUSH2 0x129f
00001217: JUMPI
00001218: PUSH1 0x40
0000121a: MLOAD
0000121b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000123c: DUP2
0000123d: MSTORE
0000123e: PUSH1 0x20
00001240: PUSH1 0x04
00001242: DUP3
00001243: ADD
00001244: MSTORE
00001245: PUSH1 0x38
00001247: PUSH1 0x24
00001249: DUP3
0000124a: ADD
0000124b: MSTORE
0000124c: PUSH32 0x555550535570677261646561626c653a206d757374206e6f742062652063616c
0000126d: PUSH1 0x44
0000126f: DUP3
00001270: ADD
00001271: MSTORE
00001272: PUSH32 0x6c6564207468726f7567682064656c656761746563616c6c0000000000000000
00001293: PUSH1 0x64
00001295: DUP3
00001296: ADD
00001297: MSTORE
00001298: PUSH1 0x84
0000129a: ADD
0000129b: PUSH2 0x0cf4
0000129e: JUMP
0000129f: JUMPDEST
000012a0: POP
000012a1: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
000012c2: SWAP1
000012c3: JUMP
000012c4: JUMPDEST
000012c5: PUSH1 0x6a
000012c7: SLOAD
000012c8: PUSH1 0x40
000012ca: MLOAD
000012cb: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
000012ec: DUP2
000012ed: MSTORE
000012ee: CALLER
000012ef: PUSH1 0x04
000012f1: DUP3
000012f2: ADD
000012f3: MSTORE
000012f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001309: SWAP1
0000130a: SWAP2
0000130b: AND
0000130c: SWAP1
0000130d: PUSH4 0xe43581b8
00001312: SWAP1
00001313: PUSH1 0x24
00001315: ADD
00001316: PUSH1 0x20
00001318: PUSH1 0x40
0000131a: MLOAD
0000131b: DUP1
0000131c: DUP4
0000131d: SUB
0000131e: DUP2
0000131f: DUP7
00001320: GAS
00001321: STATICCALL
00001322: ISZERO
00001323: DUP1
00001324: ISZERO
00001325: PUSH2 0x1332
00001328: JUMPI
00001329: RETURNDATASIZE
0000132a: PUSH1 0x00
0000132c: DUP1
0000132d: RETURNDATACOPY
0000132e: RETURNDATASIZE
0000132f: PUSH1 0x00
00001331: REVERT
00001332: JUMPDEST
00001333: POP
00001334: POP
00001335: POP
00001336: POP
00001337: PUSH1 0x40
00001339: MLOAD
0000133a: RETURNDATASIZE
0000133b: PUSH1 0x1f
0000133d: NOT
0000133e: PUSH1 0x1f
00001340: DUP3
00001341: ADD
00001342: AND
00001343: DUP3
00001344: ADD
00001345: DUP1
00001346: PUSH1 0x40
00001348: MSTORE
00001349: POP
0000134a: DUP2
0000134b: ADD
0000134c: SWAP1
0000134d: PUSH2 0x1356
00001350: SWAP2
00001351: SWAP1
00001352: PUSH2 0x3406
00001355: JUMP
00001356: JUMPDEST
00001357: PUSH2 0x138c
0000135a: JUMPI
0000135b: PUSH1 0x40
0000135d: MLOAD
0000135e: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
0000137f: DUP2
00001380: MSTORE
00001381: PUSH1 0x04
00001383: ADD
00001384: PUSH1 0x40
00001386: MLOAD
00001387: DUP1
00001388: SWAP2
00001389: SUB
0000138a: SWAP1
0000138b: REVERT
0000138c: JUMPDEST
0000138d: PUSH1 0x6b
0000138f: SLOAD
00001390: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013a5: AND
000013a6: ISZERO
000013a7: PUSH2 0x13dc
000013aa: JUMPI
000013ab: PUSH1 0x40
000013ad: MLOAD
000013ae: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000
000013cf: DUP2
000013d0: MSTORE
000013d1: PUSH1 0x04
000013d3: ADD
000013d4: PUSH1 0x40
000013d6: MLOAD
000013d7: DUP1
000013d8: SWAP2
000013d9: SUB
000013da: SWAP1
000013db: REVERT
000013dc: JUMPDEST
000013dd: PUSH1 0x69
000013df: DUP1
000013e0: SLOAD
000013e1: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001402: AND
00001403: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001418: DUP4
00001419: AND
0000141a: SWAP1
0000141b: DUP2
0000141c: OR
0000141d: SWAP1
0000141e: SWAP2
0000141f: SSTORE
00001420: PUSH1 0x40
00001422: MLOAD
00001423: PUSH32 0x1db8d6629941dcb63d5e0c927b89c174c714e139a4b9107a49de839d755f5d74
00001444: SWAP1
00001445: PUSH1 0x00
00001447: SWAP1
00001448: LOG2
00001449: POP
0000144a: JUMP
0000144b: JUMPDEST
0000144c: DUP7
0000144d: DUP1
0000144e: ISZERO
0000144f: DUP1
00001450: PUSH2 0x1459
00001453: JUMPI
00001454: POP
00001455: DUP1
00001456: DUP7
00001457: EQ
00001458: ISZERO
00001459: JUMPDEST
0000145a: DUP1
0000145b: PUSH2 0x1464
0000145e: JUMPI
0000145f: POP
00001460: DUP1
00001461: DUP5
00001462: EQ
00001463: ISZERO
00001464: JUMPDEST
00001465: DUP1
00001466: PUSH2 0x146f
00001469: JUMPI
0000146a: POP
0000146b: DUP1
0000146c: DUP3
0000146d: EQ
0000146e: ISZERO
0000146f: JUMPDEST
00001470: ISZERO
00001471: PUSH2 0x14a6
00001474: JUMPI
00001475: PUSH1 0x40
00001477: MLOAD
00001478: PUSH32 0x1df89e8b00000000000000000000000000000000000000000000000000000000
00001499: DUP2
0000149a: MSTORE
0000149b: PUSH1 0x04
0000149d: ADD
0000149e: PUSH1 0x40
000014a0: MLOAD
000014a1: DUP1
000014a2: SWAP2
000014a3: SUB
000014a4: SWAP1
000014a5: REVERT
000014a6: JUMPDEST
000014a7: PUSH1 0x00
000014a9: JUMPDEST
000014aa: DUP2
000014ab: DUP2
000014ac: LT
000014ad: ISZERO
000014ae: PUSH2 0x1888
000014b1: JUMPI
000014b2: PUSH1 0x00
000014b4: DUP11
000014b5: DUP11
000014b6: DUP4
000014b7: DUP2
000014b8: DUP2
000014b9: LT
000014ba: PUSH2 0x14c5
000014bd: JUMPI
000014be: PUSH2 0x14c5
000014c1: PUSH2 0x34da
000014c4: JUMP
000014c5: JUMPDEST
000014c6: SWAP1
000014c7: POP
000014c8: PUSH1 0x20
000014ca: MUL
000014cb: ADD
000014cc: PUSH1 0x20
000014ce: DUP2
000014cf: ADD
000014d0: SWAP1
000014d1: PUSH2 0x14da
000014d4: SWAP2
000014d5: SWAP1
000014d6: PUSH2 0x30fe
000014d9: JUMP
000014da: JUMPDEST
000014db: SWAP1
000014dc: POP
000014dd: PUSH1 0x00
000014df: DUP10
000014e0: DUP10
000014e1: DUP5
000014e2: DUP2
000014e3: DUP2
000014e4: LT
000014e5: PUSH2 0x14f0
000014e8: JUMPI
000014e9: PUSH2 0x14f0
000014ec: PUSH2 0x34da
000014ef: JUMP
000014f0: JUMPDEST
000014f1: SWAP1
000014f2: POP
000014f3: PUSH1 0x20
000014f5: MUL
000014f6: ADD
000014f7: PUSH1 0x20
000014f9: DUP2
000014fa: ADD
000014fb: SWAP1
000014fc: PUSH2 0x1505
000014ff: SWAP2
00001500: SWAP1
00001501: PUSH2 0x30fe
00001504: JUMP
00001505: JUMPDEST
00001506: SWAP1
00001507: POP
00001508: PUSH1 0x00
0000150a: DUP9
0000150b: DUP9
0000150c: DUP6
0000150d: DUP2
0000150e: DUP2
0000150f: LT
00001510: PUSH2 0x151b
00001513: JUMPI
00001514: PUSH2 0x151b
00001517: PUSH2 0x34da
0000151a: JUMP
0000151b: JUMPDEST
0000151c: SWAP1
0000151d: POP
0000151e: PUSH1 0x20
00001520: MUL
00001521: ADD
00001522: CALLDATALOAD
00001523: SWAP1
00001524: POP
00001525: DUP3
00001526: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000153b: AND
0000153c: CALLER
0000153d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001552: AND
00001553: EQ
00001554: ISZERO
00001555: DUP1
00001556: ISZERO
00001557: PUSH2 0x1576
0000155a: JUMPI
0000155b: POP
0000155c: ORIGIN
0000155d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001572: DUP5
00001573: AND
00001574: EQ
00001575: ISZERO
00001576: JUMPDEST
00001577: DUP1
00001578: ISZERO
00001579: PUSH2 0x15b0
0000157c: JUMPI
0000157d: POP
0000157e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001593: DUP4
00001594: AND
00001595: PUSH1 0x00
00001597: SWAP1
00001598: DUP2
00001599: MSTORE
0000159a: PUSH1 0x70
0000159c: PUSH1 0x20
0000159e: SWAP1
0000159f: DUP2
000015a0: MSTORE
000015a1: PUSH1 0x40
000015a3: DUP1
000015a4: DUP4
000015a5: KECCAK256
000015a6: CALLER
000015a7: DUP5
000015a8: MSTORE
000015a9: SWAP1
000015aa: SWAP2
000015ab: MSTORE
000015ac: SWAP1
000015ad: KECCAK256
000015ae: SLOAD
000015af: ISZERO
000015b0: JUMPDEST
000015b1: ISZERO
000015b2: PUSH2 0x15e7
000015b5: JUMPI
000015b6: PUSH1 0x40
000015b8: MLOAD
000015b9: PUSH32 0x584a793800000000000000000000000000000000000000000000000000000000
000015da: DUP2
000015db: MSTORE
000015dc: PUSH1 0x04
000015de: ADD
000015df: PUSH1 0x40
000015e1: MLOAD
000015e2: DUP1
000015e3: SWAP2
000015e4: SUB
000015e5: SWAP1
000015e6: REVERT
000015e7: JUMPDEST
000015e8: PUSH1 0x40
000015ea: DUP1
000015eb: MLOAD
000015ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001601: DUP1
00001602: DUP7
00001603: AND
00001604: PUSH1 0x20
00001606: DUP4
00001607: ADD
00001608: MSTORE
00001609: DUP5
0000160a: AND
0000160b: SWAP2
0000160c: DUP2
0000160d: ADD
0000160e: SWAP2
0000160f: SWAP1
00001610: SWAP2
00001611: MSTORE
00001612: PUSH1 0x60
00001614: DUP2
00001615: ADD
00001616: DUP3
00001617: SWAP1
00001618: MSTORE
00001619: PUSH1 0x00
0000161b: SWAP1
0000161c: PUSH1 0x80
0000161e: ADD
0000161f: PUSH1 0x40
00001621: MLOAD
00001622: PUSH1 0x20
00001624: DUP2
00001625: DUP4
00001626: SUB
00001627: SUB
00001628: DUP2
00001629: MSTORE
0000162a: SWAP1
0000162b: PUSH1 0x40
0000162d: MSTORE
0000162e: DUP1
0000162f: MLOAD
00001630: SWAP1
00001631: PUSH1 0x20
00001633: ADD
00001634: KECCAK256
00001635: SWAP1
00001636: POP
00001637: PUSH2 0x1695
0000163a: DUP2
0000163b: DUP10
0000163c: DUP10
0000163d: DUP9
0000163e: DUP2
0000163f: DUP2
00001640: LT
00001641: PUSH2 0x164c
00001644: JUMPI
00001645: PUSH2 0x164c
00001648: PUSH2 0x34da
0000164b: JUMP
0000164c: JUMPDEST
0000164d: SWAP1
0000164e: POP
0000164f: PUSH1 0x20
00001651: MUL
00001652: DUP2
00001653: ADD
00001654: SWAP1
00001655: PUSH2 0x165e
00001658: SWAP2
00001659: SWAP1
0000165a: PUSH2 0x3509
0000165d: JUMP
0000165e: JUMPDEST
0000165f: DUP1
00001660: DUP1
00001661: PUSH1 0x20
00001663: MUL
00001664: PUSH1 0x20
00001666: ADD
00001667: PUSH1 0x40
00001669: MLOAD
0000166a: SWAP1
0000166b: DUP2
0000166c: ADD
0000166d: PUSH1 0x40
0000166f: MSTORE
00001670: DUP1
00001671: SWAP4
00001672: SWAP3
00001673: SWAP2
00001674: SWAP1
00001675: DUP2
00001676: DUP2
00001677: MSTORE
00001678: PUSH1 0x20
0000167a: ADD
0000167b: DUP4
0000167c: DUP4
0000167d: PUSH1 0x20
0000167f: MUL
00001680: DUP1
00001681: DUP3
00001682: DUP5
00001683: CALLDATACOPY
00001684: PUSH1 0x00
00001686: SWAP3
00001687: ADD
00001688: SWAP2
00001689: SWAP1
0000168a: SWAP2
0000168b: MSTORE
0000168c: POP
0000168d: PUSH2 0x273e
00001690: SWAP3
00001691: POP
00001692: POP
00001693: POP
00001694: JUMP
00001695: JUMPDEST
00001696: PUSH2 0x16cb
00001699: JUMPI
0000169a: PUSH1 0x40
0000169c: MLOAD
0000169d: PUSH32 0x09bde33900000000000000000000000000000000000000000000000000000000
000016be: DUP2
000016bf: MSTORE
000016c0: PUSH1 0x04
000016c2: ADD
000016c3: PUSH1 0x40
000016c5: MLOAD
000016c6: DUP1
000016c7: SWAP2
000016c8: SUB
000016c9: SWAP1
000016ca: REVERT
000016cb: JUMPDEST
000016cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016e1: DUP1
000016e2: DUP6
000016e3: AND
000016e4: PUSH1 0x00
000016e6: SWAP1
000016e7: DUP2
000016e8: MSTORE
000016e9: PUSH1 0x6d
000016eb: PUSH1 0x20
000016ed: SWAP1
000016ee: DUP2
000016ef: MSTORE
000016f0: PUSH1 0x40
000016f2: DUP1
000016f3: DUP4
000016f4: KECCAK256
000016f5: SWAP4
000016f6: DUP8
000016f7: AND
000016f8: DUP4
000016f9: MSTORE
000016fa: SWAP3
000016fb: SWAP1
000016fc: MSTORE
000016fd: SWAP1
000016fe: DUP2
000016ff: KECCAK256
00001700: SLOAD
00001701: PUSH2 0x1726
00001704: SWAP1
00001705: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff
00001720: AND
00001721: DUP5
00001722: PUSH2 0x3452
00001725: JUMP
00001726: JUMPDEST
00001727: SWAP1
00001728: POP
00001729: PUSH1 0x40
0000172b: MLOAD
0000172c: DUP1
0000172d: PUSH1 0x60
0000172f: ADD
00001730: PUSH1 0x40
00001732: MSTORE
00001733: DUP1
00001734: PUSH2 0x173c
00001737: DUP6
00001738: PUSH2 0x286a
0000173b: JUMP
0000173c: JUMPDEST
0000173d: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff
00001758: AND
00001759: DUP2
0000175a: MSTORE
0000175b: PUSH1 0x20
0000175d: ADD
0000175e: TIMESTAMP
0000175f: PUSH6 0xffffffffffff
00001766: AND
00001767: DUP2
00001768: MSTORE
00001769: PUSH1 0x20
0000176b: ADD
0000176c: PUSH2 0x1773
0000176f: PUSH2 0x0f84
00001772: JUMP
00001773: JUMPDEST
00001774: SWAP1
00001775: MSTORE
00001776: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000178b: DUP1
0000178c: DUP8
0000178d: AND
0000178e: PUSH1 0x00
00001790: SWAP1
00001791: DUP2
00001792: MSTORE
00001793: PUSH1 0x6d
00001795: PUSH1 0x20
00001797: SWAP1
00001798: DUP2
00001799: MSTORE
0000179a: PUSH1 0x40
0000179c: DUP1
0000179d: DUP4
0000179e: KECCAK256
0000179f: SWAP4
000017a0: DUP10
000017a1: AND
000017a2: DUP1
000017a3: DUP5
000017a4: MSTORE
000017a5: SWAP4
000017a6: DUP3
000017a7: MSTORE
000017a8: SWAP2
000017a9: DUP3
000017aa: SWAP1
000017ab: KECCAK256
000017ac: DUP5
000017ad: MLOAD
000017ae: SWAP2
000017af: DUP6
000017b0: ADD
000017b1: MLOAD
000017b2: PUSH6 0xffffffffffff
000017b9: AND
000017ba: PUSH27 0x010000000000000000000000000000000000000000000000000000
000017d6: MUL
000017d7: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff
000017f2: SWAP1
000017f3: SWAP3
000017f4: AND
000017f5: SWAP2
000017f6: SWAP1
000017f7: SWAP2
000017f8: OR
000017f9: DUP2
000017fa: SSTORE
000017fb: SWAP3
000017fc: ADD
000017fd: MLOAD
000017fe: PUSH1 0x01
00001800: SWAP1
00001801: SWAP3
00001802: ADD
00001803: SWAP2
00001804: SWAP1
00001805: SWAP2
00001806: SSTORE
00001807: PUSH2 0x1811
0000180a: SWAP1
0000180b: DUP7
0000180c: DUP4
0000180d: PUSH2 0x2318
00001810: JUMP
00001811: JUMPDEST
00001812: DUP4
00001813: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001828: AND
00001829: DUP6
0000182a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000183f: AND
00001840: PUSH32 0xf7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683
00001861: DUP4
00001862: PUSH1 0x40
00001864: MLOAD
00001865: PUSH2 0x1870
00001868: SWAP2
00001869: DUP2
0000186a: MSTORE
0000186b: PUSH1 0x20
0000186d: ADD
0000186e: SWAP1
0000186f: JUMP
00001870: JUMPDEST
00001871: PUSH1 0x40
00001873: MLOAD
00001874: DUP1
00001875: SWAP2
00001876: SUB
00001877: SWAP1
00001878: LOG3
00001879: DUP6
0000187a: PUSH1 0x01
0000187c: ADD
0000187d: SWAP6
0000187e: POP
0000187f: POP
00001880: POP
00001881: POP
00001882: POP
00001883: POP
00001884: PUSH2 0x14a9
00001887: JUMP
00001888: JUMPDEST
00001889: POP
0000188a: POP
0000188b: POP
0000188c: POP
0000188d: POP
0000188e: POP
0000188f: POP
00001890: POP
00001891: POP
00001892: POP
00001893: JUMP
00001894: JUMPDEST
00001895: PUSH1 0x6a
00001897: SLOAD
00001898: PUSH1 0x40
0000189a: MLOAD
0000189b: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
000018bc: DUP2
000018bd: MSTORE
000018be: CALLER
000018bf: PUSH1 0x04
000018c1: DUP3
000018c2: ADD
000018c3: MSTORE
000018c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018d9: SWAP1
000018da: SWAP2
000018db: AND
000018dc: SWAP1
000018dd: PUSH4 0xe43581b8
000018e2: SWAP1
000018e3: PUSH1 0x24
000018e5: ADD
000018e6: PUSH1 0x20
000018e8: PUSH1 0x40
000018ea: MLOAD
000018eb: DUP1
000018ec: DUP4
000018ed: SUB
000018ee: DUP2
000018ef: DUP7
000018f0: GAS
000018f1: STATICCALL
000018f2: ISZERO
000018f3: DUP1
000018f4: ISZERO
000018f5: PUSH2 0x1902
000018f8: JUMPI
000018f9: RETURNDATASIZE
000018fa: PUSH1 0x00
000018fc: DUP1
000018fd: RETURNDATACOPY
000018fe: RETURNDATASIZE
000018ff: PUSH1 0x00
00001901: REVERT
00001902: JUMPDEST
00001903: POP
00001904: POP
00001905: POP
00001906: POP
00001907: PUSH1 0x40
00001909: MLOAD
0000190a: RETURNDATASIZE
0000190b: PUSH1 0x1f
0000190d: NOT
0000190e: PUSH1 0x1f
00001910: DUP3
00001911: ADD
00001912: AND
00001913: DUP3
00001914: ADD
00001915: DUP1
00001916: PUSH1 0x40
00001918: MSTORE
00001919: POP
0000191a: DUP2
0000191b: ADD
0000191c: SWAP1
0000191d: PUSH2 0x1926
00001920: SWAP2
00001921: SWAP1
00001922: PUSH2 0x3406
00001925: JUMP
00001926: JUMPDEST
00001927: PUSH2 0x195c
0000192a: JUMPI
0000192b: PUSH1 0x40
0000192d: MLOAD
0000192e: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
0000194f: DUP2
00001950: MSTORE
00001951: PUSH1 0x04
00001953: ADD
00001954: PUSH1 0x40
00001956: MLOAD
00001957: DUP1
00001958: SWAP2
00001959: SUB
0000195a: SWAP1
0000195b: REVERT
0000195c: JUMPDEST
0000195d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001972: DUP2
00001973: AND
00001974: PUSH1 0x00
00001976: SWAP1
00001977: DUP2
00001978: MSTORE
00001979: PUSH1 0x6e
0000197b: PUSH1 0x20
0000197d: MSTORE
0000197e: PUSH1 0x40
00001980: DUP2
00001981: KECCAK256
00001982: SLOAD
00001983: PUSH2 0x198d
00001986: SWAP1
00001987: PUSH1 0x01
00001989: PUSH2 0x3452
0000198c: JUMP
0000198d: JUMPDEST
0000198e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019a3: DUP4
000019a4: AND
000019a5: PUSH1 0x00
000019a7: DUP2
000019a8: DUP2
000019a9: MSTORE
000019aa: PUSH1 0x6e
000019ac: PUSH1 0x20
000019ae: SWAP1
000019af: DUP2
000019b0: MSTORE
000019b1: PUSH1 0x40
000019b3: SWAP2
000019b4: DUP3
000019b5: SWAP1
000019b6: KECCAK256
000019b7: DUP5
000019b8: SWAP1
000019b9: SSTORE
000019ba: SWAP1
000019bb: MLOAD
000019bc: PUSH1 0x01
000019be: DUP5
000019bf: EQ
000019c0: DUP2
000019c1: MSTORE
000019c2: SWAP3
000019c3: SWAP4
000019c4: POP
000019c5: SWAP1
000019c6: SWAP2
000019c7: PUSH32 0x7628ea5f6112a16b36a8239aa208395a8e8f221688cfb3a5461faffb9700abcd
000019e8: SWAP2
000019e9: ADD
000019ea: PUSH1 0x40
000019ec: MLOAD
000019ed: DUP1
000019ee: SWAP2
000019ef: SUB
000019f0: SWAP1
000019f1: LOG2
000019f2: POP
000019f3: POP
000019f4: JUMP
000019f5: JUMPDEST
000019f6: PUSH1 0x6a
000019f8: SLOAD
000019f9: PUSH1 0x40
000019fb: MLOAD
000019fc: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
00001a1d: DUP2
00001a1e: MSTORE
00001a1f: CALLER
00001a20: PUSH1 0x04
00001a22: DUP3
00001a23: ADD
00001a24: MSTORE
00001a25: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a3a: SWAP1
00001a3b: SWAP2
00001a3c: AND
00001a3d: SWAP1
00001a3e: PUSH4 0xe43581b8
00001a43: SWAP1
00001a44: PUSH1 0x24
00001a46: ADD
00001a47: PUSH1 0x20
00001a49: PUSH1 0x40
00001a4b: MLOAD
00001a4c: DUP1
00001a4d: DUP4
00001a4e: SUB
00001a4f: DUP2
00001a50: DUP7
00001a51: GAS
00001a52: STATICCALL
00001a53: ISZERO
00001a54: DUP1
00001a55: ISZERO
00001a56: PUSH2 0x1a63
00001a59: JUMPI
00001a5a: RETURNDATASIZE
00001a5b: PUSH1 0x00
00001a5d: DUP1
00001a5e: RETURNDATACOPY
00001a5f: RETURNDATASIZE
00001a60: PUSH1 0x00
00001a62: REVERT
00001a63: JUMPDEST
00001a64: POP
00001a65: POP
00001a66: POP
00001a67: POP
00001a68: PUSH1 0x40
00001a6a: MLOAD
00001a6b: RETURNDATASIZE
00001a6c: PUSH1 0x1f
00001a6e: NOT
00001a6f: PUSH1 0x1f
00001a71: DUP3
00001a72: ADD
00001a73: AND
00001a74: DUP3
00001a75: ADD
00001a76: DUP1
00001a77: PUSH1 0x40
00001a79: MSTORE
00001a7a: POP
00001a7b: DUP2
00001a7c: ADD
00001a7d: SWAP1
00001a7e: PUSH2 0x1a87
00001a81: SWAP2
00001a82: SWAP1
00001a83: PUSH2 0x3406
00001a86: JUMP
00001a87: JUMPDEST
00001a88: PUSH2 0x1abd
00001a8b: JUMPI
00001a8c: PUSH1 0x40
00001a8e: MLOAD
00001a8f: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
00001ab0: DUP2
00001ab1: MSTORE
00001ab2: PUSH1 0x04
00001ab4: ADD
00001ab5: PUSH1 0x40
00001ab7: MLOAD
00001ab8: DUP1
00001ab9: SWAP2
00001aba: SUB
00001abb: SWAP1
00001abc: REVERT
00001abd: JUMPDEST
00001abe: PUSH1 0x6b
00001ac0: SLOAD
00001ac1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ad6: AND
00001ad7: PUSH2 0x1b0c
00001ada: JUMPI
00001adb: PUSH1 0x40
00001add: MLOAD
00001ade: PUSH32 0x9375474800000000000000000000000000000000000000000000000000000000
00001aff: DUP2
00001b00: MSTORE
00001b01: PUSH1 0x04
00001b03: ADD
00001b04: PUSH1 0x40
00001b06: MLOAD
00001b07: DUP1
00001b08: SWAP2
00001b09: SUB
00001b0a: SWAP1
00001b0b: REVERT
00001b0c: JUMPDEST
00001b0d: DUP1
00001b0e: ISZERO
00001b0f: PUSH2 0x1b4d
00001b12: JUMPI
00001b13: PUSH1 0x6b
00001b15: SLOAD
00001b16: PUSH1 0x6c
00001b18: SLOAD
00001b19: PUSH1 0x69
00001b1b: SLOAD
00001b1c: PUSH2 0x1b40
00001b1f: SWAP3
00001b20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b35: SWAP2
00001b36: DUP3
00001b37: AND
00001b38: SWAP3
00001b39: SWAP2
00001b3a: AND
00001b3b: SWAP1
00001b3c: PUSH2 0x2318
00001b3f: JUMP
00001b40: JUMPDEST
00001b41: PUSH2 0x1b48
00001b44: PUSH2 0x291a
00001b47: JUMP
00001b48: JUMPDEST
00001b49: PUSH2 0x1ba5
00001b4c: JUMP
00001b4d: JUMPDEST
00001b4e: PUSH1 0x6c
00001b50: SLOAD
00001b51: PUSH1 0x69
00001b53: SLOAD
00001b54: PUSH2 0x1b77
00001b57: SWAP2
00001b58: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b6d: SWAP1
00001b6e: SWAP2
00001b6f: AND
00001b70: SWAP1
00001b71: CALLER
00001b72: SWAP1
00001b73: PUSH2 0x2318
00001b76: JUMP
00001b77: JUMPDEST
00001b78: PUSH2 0x1b80
00001b7b: TIMESTAMP
00001b7c: PUSH2 0x29f0
00001b7f: JUMP
00001b80: JUMPDEST
00001b81: PUSH1 0x6b
00001b83: PUSH1 0x14
00001b85: PUSH2 0x0100
00001b88: EXP
00001b89: DUP2
00001b8a: SLOAD
00001b8b: DUP2
00001b8c: PUSH6 0xffffffffffff
00001b93: MUL
00001b94: NOT
00001b95: AND
00001b96: SWAP1
00001b97: DUP4
00001b98: PUSH6 0xffffffffffff
00001b9f: AND
00001ba0: MUL
00001ba1: OR
00001ba2: SWAP1
00001ba3: SSTORE
00001ba4: POP
00001ba5: JUMPDEST
00001ba6: PUSH1 0x6b
00001ba8: DUP1
00001ba9: SLOAD
00001baa: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001bcb: AND
00001bcc: SWAP1
00001bcd: SSTORE
00001bce: PUSH1 0x40
00001bd0: MLOAD
00001bd1: DUP2
00001bd2: ISZERO
00001bd3: ISZERO
00001bd4: DUP2
00001bd5: MSTORE
00001bd6: PUSH32 0x8015c5005d9ad5d85ca80d3f894f08e0159277704c54166e5cff108800fa80cd
00001bf7: SWAP1
00001bf8: PUSH1 0x20
00001bfa: ADD
00001bfb: PUSH2 0x0804
00001bfe: JUMP
00001bff: JUMPDEST
00001c00: PUSH1 0x6a
00001c02: SLOAD
00001c03: PUSH1 0x40
00001c05: MLOAD
00001c06: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
00001c27: DUP2
00001c28: MSTORE
00001c29: CALLER
00001c2a: PUSH1 0x04
00001c2c: DUP3
00001c2d: ADD
00001c2e: MSTORE
00001c2f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c44: SWAP1
00001c45: SWAP2
00001c46: AND
00001c47: SWAP1
00001c48: PUSH4 0xe43581b8
00001c4d: SWAP1
00001c4e: PUSH1 0x24
00001c50: ADD
00001c51: PUSH1 0x20
00001c53: PUSH1 0x40
00001c55: MLOAD
00001c56: DUP1
00001c57: DUP4
00001c58: SUB
00001c59: DUP2
00001c5a: DUP7
00001c5b: GAS
00001c5c: STATICCALL
00001c5d: ISZERO
00001c5e: DUP1
00001c5f: ISZERO
00001c60: PUSH2 0x1c6d
00001c63: JUMPI
00001c64: RETURNDATASIZE
00001c65: PUSH1 0x00
00001c67: DUP1
00001c68: RETURNDATACOPY
00001c69: RETURNDATASIZE
00001c6a: PUSH1 0x00
00001c6c: REVERT
00001c6d: JUMPDEST
00001c6e: POP
00001c6f: POP
00001c70: POP
00001c71: POP
00001c72: PUSH1 0x40
00001c74: MLOAD
00001c75: RETURNDATASIZE
00001c76: PUSH1 0x1f
00001c78: NOT
00001c79: PUSH1 0x1f
00001c7b: DUP3
00001c7c: ADD
00001c7d: AND
00001c7e: DUP3
00001c7f: ADD
00001c80: DUP1
00001c81: PUSH1 0x40
00001c83: MSTORE
00001c84: POP
00001c85: DUP2
00001c86: ADD
00001c87: SWAP1
00001c88: PUSH2 0x1c91
00001c8b: SWAP2
00001c8c: SWAP1
00001c8d: PUSH2 0x3406
00001c90: JUMP
00001c91: JUMPDEST
00001c92: PUSH2 0x1cc7
00001c95: JUMPI
00001c96: PUSH1 0x40
00001c98: MLOAD
00001c99: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
00001cba: DUP2
00001cbb: MSTORE
00001cbc: PUSH1 0x04
00001cbe: ADD
00001cbf: PUSH1 0x40
00001cc1: MLOAD
00001cc2: DUP1
00001cc3: SWAP2
00001cc4: SUB
00001cc5: SWAP1
00001cc6: REVERT
00001cc7: JUMPDEST
00001cc8: PUSH1 0x6b
00001cca: SLOAD
00001ccb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ce0: AND
00001ce1: ISZERO
00001ce2: PUSH2 0x1d17
00001ce5: JUMPI
00001ce6: PUSH1 0x40
00001ce8: MLOAD
00001ce9: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000
00001d0a: DUP2
00001d0b: MSTORE
00001d0c: PUSH1 0x04
00001d0e: ADD
00001d0f: PUSH1 0x40
00001d11: MLOAD
00001d12: DUP1
00001d13: SWAP2
00001d14: SUB
00001d15: SWAP1
00001d16: REVERT
00001d17: JUMPDEST
00001d18: PUSH2 0x1d1f
00001d1b: PUSH2 0x291a
00001d1e: JUMP
00001d1f: JUMPDEST
00001d20: JUMP
00001d21: JUMPDEST
00001d22: DUP2
00001d23: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d38: DUP2
00001d39: AND
00001d3a: CALLER
00001d3b: EQ
00001d3c: DUP1
00001d3d: ISZERO
00001d3e: SWAP1
00001d3f: PUSH2 0x1d58
00001d42: JUMPI
00001d43: POP
00001d44: CALLER
00001d45: PUSH1 0x00
00001d47: SWAP1
00001d48: DUP2
00001d49: MSTORE
00001d4a: PUSH1 0x6e
00001d4c: PUSH1 0x20
00001d4e: MSTORE
00001d4f: PUSH1 0x40
00001d51: SWAP1
00001d52: KECCAK256
00001d53: SLOAD
00001d54: PUSH1 0x01
00001d56: EQ
00001d57: ISZERO
00001d58: JUMPDEST
00001d59: DUP1
00001d5a: ISZERO
00001d5b: PUSH2 0x1df3
00001d5e: JUMPI
00001d5f: POP
00001d60: PUSH1 0x6a
00001d62: SLOAD
00001d63: PUSH1 0x40
00001d65: MLOAD
00001d66: PUSH32 0x521d4de900000000000000000000000000000000000000000000000000000000
00001d87: DUP2
00001d88: MSTORE
00001d89: CALLER
00001d8a: PUSH1 0x04
00001d8c: DUP3
00001d8d: ADD
00001d8e: MSTORE
00001d8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001da4: SWAP1
00001da5: SWAP2
00001da6: AND
00001da7: SWAP1
00001da8: PUSH4 0x521d4de9
00001dad: SWAP1
00001dae: PUSH1 0x24
00001db0: ADD
00001db1: PUSH1 0x20
00001db3: PUSH1 0x40
00001db5: MLOAD
00001db6: DUP1
00001db7: DUP4
00001db8: SUB
00001db9: DUP2
00001dba: DUP7
00001dbb: GAS
00001dbc: STATICCALL
00001dbd: ISZERO
00001dbe: DUP1
00001dbf: ISZERO
00001dc0: PUSH2 0x1dcd
00001dc3: JUMPI
00001dc4: RETURNDATASIZE
00001dc5: PUSH1 0x00
00001dc7: DUP1
00001dc8: RETURNDATACOPY
00001dc9: RETURNDATASIZE
00001dca: PUSH1 0x00
00001dcc: REVERT
00001dcd: JUMPDEST
00001dce: POP
00001dcf: POP
00001dd0: POP
00001dd1: POP
00001dd2: PUSH1 0x40
00001dd4: MLOAD
00001dd5: RETURNDATASIZE
00001dd6: PUSH1 0x1f
00001dd8: NOT
00001dd9: PUSH1 0x1f
00001ddb: DUP3
00001ddc: ADD
00001ddd: AND
00001dde: DUP3
00001ddf: ADD
00001de0: DUP1
00001de1: PUSH1 0x40
00001de3: MSTORE
00001de4: POP
00001de5: DUP2
00001de6: ADD
00001de7: SWAP1
00001de8: PUSH2 0x1df1
00001deb: SWAP2
00001dec: SWAP1
00001ded: PUSH2 0x3406
00001df0: JUMP
00001df1: JUMPDEST
00001df2: ISZERO
00001df3: JUMPDEST
00001df4: ISZERO
00001df5: PUSH2 0x1e2a
00001df8: JUMPI
00001df9: PUSH1 0x40
00001dfb: MLOAD
00001dfc: PUSH32 0xc22a648e00000000000000000000000000000000000000000000000000000000
00001e1d: DUP2
00001e1e: MSTORE
00001e1f: PUSH1 0x04
00001e21: ADD
00001e22: PUSH1 0x40
00001e24: MLOAD
00001e25: DUP1
00001e26: SWAP2
00001e27: SUB
00001e28: SWAP1
00001e29: REVERT
00001e2a: JUMPDEST
00001e2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e40: DUP1
00001e41: DUP5
00001e42: AND
00001e43: PUSH1 0x00
00001e45: SWAP1
00001e46: DUP2
00001e47: MSTORE
00001e48: PUSH1 0x70
00001e4a: PUSH1 0x20
00001e4c: SWAP1
00001e4d: DUP2
00001e4e: MSTORE
00001e4f: PUSH1 0x40
00001e51: DUP1
00001e52: DUP4
00001e53: KECCAK256
00001e54: SWAP4
00001e55: DUP7
00001e56: AND
00001e57: DUP4
00001e58: MSTORE
00001e59: SWAP3
00001e5a: SWAP1
00001e5b: MSTORE
00001e5c: KECCAK256
00001e5d: SLOAD
00001e5e: PUSH2 0x1e68
00001e61: DUP2
00001e62: PUSH1 0x01
00001e64: PUSH2 0x3452
00001e67: JUMP
00001e68: JUMPDEST
00001e69: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e7e: DUP6
00001e7f: DUP2
00001e80: AND
00001e81: PUSH1 0x00
00001e83: DUP2
00001e84: DUP2
00001e85: MSTORE
00001e86: PUSH1 0x70
00001e88: PUSH1 0x20
00001e8a: SWAP1
00001e8b: DUP2
00001e8c: MSTORE
00001e8d: PUSH1 0x40
00001e8f: DUP1
00001e90: DUP4
00001e91: KECCAK256
00001e92: SWAP5
00001e93: DUP10
00001e94: AND
00001e95: DUP1
00001e96: DUP5
00001e97: MSTORE
00001e98: SWAP5
00001e99: DUP3
00001e9a: MSTORE
00001e9b: SWAP2
00001e9c: DUP3
00001e9d: SWAP1
00001e9e: KECCAK256
00001e9f: SWAP5
00001ea0: SWAP1
00001ea1: SWAP5
00001ea2: SSTORE
00001ea3: MLOAD
00001ea4: DUP5
00001ea5: ISZERO
00001ea6: DUP2
00001ea7: MSTORE
00001ea8: SWAP2
00001ea9: SWAP3
00001eaa: SWAP1
00001eab: SWAP2
00001eac: PUSH32 0x42343f44c66ea1eaffa334760d3da2cb731d2a0b3b3e30423df997faa36cc95c
00001ecd: SWAP2
00001ece: ADD
00001ecf: PUSH1 0x40
00001ed1: MLOAD
00001ed2: DUP1
00001ed3: SWAP2
00001ed4: SUB
00001ed5: SWAP1
00001ed6: LOG3
00001ed7: POP
00001ed8: POP
00001ed9: POP
00001eda: POP
00001edb: JUMP
00001edc: JUMPDEST
00001edd: PUSH1 0x00
00001edf: SLOAD
00001ee0: PUSH2 0x0100
00001ee3: SWAP1
00001ee4: DIV
00001ee5: PUSH1 0xff
00001ee7: AND
00001ee8: ISZERO
00001ee9: DUP1
00001eea: DUP1
00001eeb: ISZERO
00001eec: PUSH2 0x1efc
00001eef: JUMPI
00001ef0: POP
00001ef1: PUSH1 0x00
00001ef3: SLOAD
00001ef4: PUSH1 0x01
00001ef6: PUSH1 0xff
00001ef8: SWAP1
00001ef9: SWAP2
00001efa: AND
00001efb: LT
00001efc: JUMPDEST
00001efd: DUP1
00001efe: PUSH2 0x1f16
00001f01: JUMPI
00001f02: POP
00001f03: ADDRESS
00001f04: EXTCODESIZE
00001f05: ISZERO
00001f06: DUP1
00001f07: ISZERO
00001f08: PUSH2 0x1f16
00001f0b: JUMPI
00001f0c: POP
00001f0d: PUSH1 0x00
00001f0f: SLOAD
00001f10: PUSH1 0xff
00001f12: AND
00001f13: PUSH1 0x01
00001f15: EQ
00001f16: JUMPDEST
00001f17: PUSH2 0x1fa2
00001f1a: JUMPI
00001f1b: PUSH1 0x40
00001f1d: MLOAD
00001f1e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001f3f: DUP2
00001f40: MSTORE
00001f41: PUSH1 0x20
00001f43: PUSH1 0x04
00001f45: DUP3
00001f46: ADD
00001f47: MSTORE
00001f48: PUSH1 0x2e
00001f4a: PUSH1 0x24
00001f4c: DUP3
00001f4d: ADD
00001f4e: MSTORE
00001f4f: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561
00001f70: PUSH1 0x44
00001f72: DUP3
00001f73: ADD
00001f74: MSTORE
00001f75: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000
00001f96: PUSH1 0x64
00001f98: DUP3
00001f99: ADD
00001f9a: MSTORE
00001f9b: PUSH1 0x84
00001f9d: ADD
00001f9e: PUSH2 0x0cf4
00001fa1: JUMP
00001fa2: JUMPDEST
00001fa3: PUSH1 0x00
00001fa5: DUP1
00001fa6: SLOAD
00001fa7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00001fc8: AND
00001fc9: PUSH1 0x01
00001fcb: OR
00001fcc: SWAP1
00001fcd: SSTORE
00001fce: DUP1
00001fcf: ISZERO
00001fd0: PUSH2 0x2000
00001fd3: JUMPI
00001fd4: PUSH1 0x00
00001fd6: DUP1
00001fd7: SLOAD
00001fd8: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
00001ff9: AND
00001ffa: PUSH2 0x0100
00001ffd: OR
00001ffe: SWAP1
00001fff: SSTORE
00002000: JUMPDEST
00002001: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002016: DUP3
00002017: AND
00002018: PUSH2 0x204d
0000201b: JUMPI
0000201c: PUSH1 0x40
0000201e: MLOAD
0000201f: PUSH32 0xd92e233d00000000000000000000000000000000000000000000000000000000
00002040: DUP2
00002041: MSTORE
00002042: PUSH1 0x04
00002044: ADD
00002045: PUSH1 0x40
00002047: MLOAD
00002048: DUP1
00002049: SWAP2
0000204a: SUB
0000204b: SWAP1
0000204c: REVERT
0000204d: JUMPDEST
0000204e: PUSH1 0x6a
00002050: DUP1
00002051: SLOAD
00002052: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00002073: AND
00002074: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002089: DUP5
0000208a: AND
0000208b: OR
0000208c: SWAP1
0000208d: SSTORE
0000208e: DUP1
0000208f: ISZERO
00002090: PUSH2 0x11d4
00002093: JUMPI
00002094: PUSH1 0x00
00002096: DUP1
00002097: SLOAD
00002098: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
000020b9: AND
000020ba: SWAP1
000020bb: SSTORE
000020bc: PUSH1 0x40
000020be: MLOAD
000020bf: PUSH1 0x01
000020c1: DUP2
000020c2: MSTORE
000020c3: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498
000020e4: SWAP1
000020e5: PUSH1 0x20
000020e7: ADD
000020e8: PUSH1 0x40
000020ea: MLOAD
000020eb: DUP1
000020ec: SWAP2
000020ed: SUB
000020ee: SWAP1
000020ef: LOG1
000020f0: POP
000020f1: POP
000020f2: JUMP
000020f3: JUMPDEST
000020f4: PUSH1 0x6b
000020f6: SLOAD
000020f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000210c: AND
0000210d: ISZERO
0000210e: ISZERO
0000210f: DUP1
00002110: PUSH2 0x21ef
00002113: JUMPI
00002114: POP
00002115: CALLER
00002116: PUSH1 0x00
00002118: SWAP1
00002119: DUP2
0000211a: MSTORE
0000211b: PUSH1 0x6e
0000211d: PUSH1 0x20
0000211f: MSTORE
00002120: PUSH1 0x40
00002122: SWAP1
00002123: KECCAK256
00002124: SLOAD
00002125: PUSH1 0x01
00002127: EQ
00002128: ISZERO
00002129: DUP1
0000212a: PUSH2 0x2154
0000212d: JUMPI
0000212e: POP
0000212f: PUSH1 0x6b
00002131: SLOAD
00002132: PUSH21 0x010000000000000000000000000000000000000000
00002148: SWAP1
00002149: DIV
0000214a: PUSH6 0xffffffffffff
00002151: AND
00002152: TIMESTAMP
00002153: LT
00002154: JUMPDEST
00002155: DUP1
00002156: ISZERO
00002157: PUSH2 0x21ef
0000215a: JUMPI
0000215b: POP
0000215c: PUSH1 0x6a
0000215e: SLOAD
0000215f: PUSH1 0x40
00002161: MLOAD
00002162: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
00002183: DUP2
00002184: MSTORE
00002185: CALLER
00002186: PUSH1 0x04
00002188: DUP3
00002189: ADD
0000218a: MSTORE
0000218b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000021a0: SWAP1
000021a1: SWAP2
000021a2: AND
000021a3: SWAP1
000021a4: PUSH4 0xe43581b8
000021a9: SWAP1
000021aa: PUSH1 0x24
000021ac: ADD
000021ad: PUSH1 0x20
000021af: PUSH1 0x40
000021b1: MLOAD
000021b2: DUP1
000021b3: DUP4
000021b4: SUB
000021b5: DUP2
000021b6: DUP7
000021b7: GAS
000021b8: STATICCALL
000021b9: ISZERO
000021ba: DUP1
000021bb: ISZERO
000021bc: PUSH2 0x21c9
000021bf: JUMPI
000021c0: RETURNDATASIZE
000021c1: PUSH1 0x00
000021c3: DUP1
000021c4: RETURNDATACOPY
000021c5: RETURNDATASIZE
000021c6: PUSH1 0x00
000021c8: REVERT
000021c9: JUMPDEST
000021ca: POP
000021cb: POP
000021cc: POP
000021cd: POP
000021ce: PUSH1 0x40
000021d0: MLOAD
000021d1: RETURNDATASIZE
000021d2: PUSH1 0x1f
000021d4: NOT
000021d5: PUSH1 0x1f
000021d7: DUP3
000021d8: ADD
000021d9: AND
000021da: DUP3
000021db: ADD
000021dc: DUP1
000021dd: PUSH1 0x40
000021df: MSTORE
000021e0: POP
000021e1: DUP2
000021e2: ADD
000021e3: SWAP1
000021e4: PUSH2 0x21ed
000021e7: SWAP2
000021e8: SWAP1
000021e9: PUSH2 0x3406
000021ec: JUMP
000021ed: JUMPDEST
000021ee: ISZERO
000021ef: JUMPDEST
000021f0: ISZERO
000021f1: PUSH2 0x2226
000021f4: JUMPI
000021f5: PUSH1 0x40
000021f7: MLOAD
000021f8: PUSH32 0xc22a648e00000000000000000000000000000000000000000000000000000000
00002219: DUP2
0000221a: MSTORE
0000221b: PUSH1 0x04
0000221d: ADD
0000221e: PUSH1 0x40
00002220: MLOAD
00002221: DUP1
00002222: SWAP2
00002223: SUB
00002224: SWAP1
00002225: REVERT
00002226: JUMPDEST
00002227: PUSH1 0x40
00002229: DUP1
0000222a: MLOAD
0000222b: DUP1
0000222c: DUP3
0000222d: ADD
0000222e: SWAP1
0000222f: SWAP2
00002230: MSTORE
00002231: PUSH1 0x65
00002233: DUP1
00002234: SLOAD
00002235: DUP1
00002236: DUP4
00002237: MSTORE
00002238: PUSH1 0x66
0000223a: DUP1
0000223b: SLOAD
0000223c: PUSH1 0x20
0000223e: DUP1
0000223f: DUP7
00002240: ADD
00002241: DUP3
00002242: SWAP1
00002243: MSTORE
00002244: DUP7
00002245: CALLDATALOAD
00002246: SWAP1
00002247: SWAP5
00002248: SSTORE
00002249: SWAP3
0000224a: DUP6
0000224b: ADD
0000224c: CALLDATALOAD
0000224d: SWAP1
0000224e: SSTORE
0000224f: PUSH1 0x67
00002251: SSTORE
00002252: PUSH1 0x68
00002254: SSTORE
00002255: PUSH1 0x00
00002257: PUSH2 0x225f
0000225a: TIMESTAMP
0000225b: PUSH2 0x29f0
0000225e: JUMP
0000225f: JUMPDEST
00002260: PUSH1 0x6b
00002262: DUP1
00002263: SLOAD
00002264: PUSH32 0xffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff
00002285: AND
00002286: PUSH21 0x010000000000000000000000000000000000000000
0000229c: PUSH6 0xffffffffffff
000022a3: DUP5
000022a4: AND
000022a5: SWAP1
000022a6: DUP2
000022a7: MUL
000022a8: SWAP2
000022a9: SWAP1
000022aa: SWAP2
000022ab: OR
000022ac: SWAP1
000022ad: SWAP2
000022ae: SSTORE
000022af: PUSH1 0x40
000022b1: DUP1
000022b2: MLOAD
000022b3: DUP7
000022b4: CALLDATALOAD
000022b5: DUP2
000022b6: MSTORE
000022b7: PUSH1 0x20
000022b9: DUP1
000022ba: DUP9
000022bb: ADD
000022bc: CALLDATALOAD
000022bd: SWAP1
000022be: DUP3
000022bf: ADD
000022c0: MSTORE
000022c1: SWAP1
000022c2: DUP2
000022c3: ADD
000022c4: SWAP2
000022c5: SWAP1
000022c6: SWAP2
000022c7: MSTORE
000022c8: SWAP1
000022c9: SWAP2
000022ca: POP
000022cb: PUSH32 0x23aa2e4f757a7bd974085d3e11439a843b137b30905e3ffd51b2097c34aef62e
000022ec: SWAP1
000022ed: PUSH1 0x60
000022ef: ADD
000022f0: PUSH1 0x40
000022f2: MLOAD
000022f3: DUP1
000022f4: SWAP2
000022f5: SUB
000022f6: SWAP1
000022f7: LOG1
000022f8: POP
000022f9: POP
000022fa: POP
000022fb: JUMP
000022fc: JUMPDEST
000022fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002312: AND
00002313: EXTCODESIZE
00002314: ISZERO
00002315: ISZERO
00002316: SWAP1
00002317: JUMP
00002318: JUMPDEST
00002319: PUSH1 0x40
0000231b: MLOAD
0000231c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002331: DUP4
00002332: AND
00002333: PUSH1 0x24
00002335: DUP3
00002336: ADD
00002337: MSTORE
00002338: PUSH1 0x44
0000233a: DUP2
0000233b: ADD
0000233c: DUP3
0000233d: SWAP1
0000233e: MSTORE
0000233f: PUSH2 0x23ec
00002342: SWAP1
00002343: DUP5
00002344: SWAP1
00002345: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
00002366: SWAP1
00002367: PUSH1 0x64
00002369: ADD
0000236a: JUMPDEST
0000236b: PUSH1 0x40
0000236d: DUP1
0000236e: MLOAD
0000236f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00002390: DUP2
00002391: DUP5
00002392: SUB
00002393: ADD
00002394: DUP2
00002395: MSTORE
00002396: SWAP2
00002397: SWAP1
00002398: MSTORE
00002399: PUSH1 0x20
0000239b: DUP2
0000239c: ADD
0000239d: DUP1
0000239e: MLOAD
0000239f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000023bc: AND
000023bd: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000023de: SWAP1
000023df: SWAP4
000023e0: AND
000023e1: SWAP3
000023e2: SWAP1
000023e3: SWAP3
000023e4: OR
000023e5: SWAP1
000023e6: SWAP2
000023e7: MSTORE
000023e8: PUSH2 0x2a55
000023eb: JUMP
000023ec: JUMPDEST
000023ed: POP
000023ee: POP
000023ef: POP
000023f0: JUMP
000023f1: JUMPDEST
000023f2: PUSH1 0x40
000023f4: MLOAD
000023f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000240a: DUP1
0000240b: DUP6
0000240c: AND
0000240d: PUSH1 0x24
0000240f: DUP4
00002410: ADD
00002411: MSTORE
00002412: DUP4
00002413: AND
00002414: PUSH1 0x44
00002416: DUP3
00002417: ADD
00002418: MSTORE
00002419: PUSH1 0x64
0000241b: DUP2
0000241c: ADD
0000241d: DUP3
0000241e: SWAP1
0000241f: MSTORE
00002420: PUSH2 0x244f
00002423: SWAP1
00002424: DUP6
00002425: SWAP1
00002426: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
00002447: SWAP1
00002448: PUSH1 0x84
0000244a: ADD
0000244b: PUSH2 0x236a
0000244e: JUMP
0000244f: JUMPDEST
00002450: POP
00002451: POP
00002452: POP
00002453: POP
00002454: JUMP
00002455: JUMPDEST
00002456: PUSH1 0x6a
00002458: SLOAD
00002459: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000246e: AND
0000246f: DUP1
00002470: ISZERO
00002471: DUP1
00002472: ISZERO
00002473: SWAP1
00002474: PUSH2 0x2508
00002477: JUMPI
00002478: POP
00002479: PUSH1 0x40
0000247b: MLOAD
0000247c: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000
0000249d: DUP2
0000249e: MSTORE
0000249f: CALLER
000024a0: PUSH1 0x04
000024a2: DUP3
000024a3: ADD
000024a4: MSTORE
000024a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024ba: DUP3
000024bb: AND
000024bc: SWAP1
000024bd: PUSH4 0xe43581b8
000024c2: SWAP1
000024c3: PUSH1 0x24
000024c5: ADD
000024c6: PUSH1 0x20
000024c8: PUSH1 0x40
000024ca: MLOAD
000024cb: DUP1
000024cc: DUP4
000024cd: SUB
000024ce: DUP2
000024cf: DUP7
000024d0: GAS
000024d1: STATICCALL
000024d2: ISZERO
000024d3: DUP1
000024d4: ISZERO
000024d5: PUSH2 0x24e2
000024d8: JUMPI
000024d9: RETURNDATASIZE
000024da: PUSH1 0x00
000024dc: DUP1
000024dd: RETURNDATACOPY
000024de: RETURNDATASIZE
000024df: PUSH1 0x00
000024e1: REVERT
000024e2: JUMPDEST
000024e3: POP
000024e4: POP
000024e5: POP
000024e6: POP
000024e7: PUSH1 0x40
000024e9: MLOAD
000024ea: RETURNDATASIZE
000024eb: PUSH1 0x1f
000024ed: NOT
000024ee: PUSH1 0x1f
000024f0: DUP3
000024f1: ADD
000024f2: AND
000024f3: DUP3
000024f4: ADD
000024f5: DUP1
000024f6: PUSH1 0x40
000024f8: MSTORE
000024f9: POP
000024fa: DUP2
000024fb: ADD
000024fc: SWAP1
000024fd: PUSH2 0x2506
00002500: SWAP2
00002501: SWAP1
00002502: PUSH2 0x3406
00002505: JUMP
00002506: JUMPDEST
00002507: ISZERO
00002508: JUMPDEST
00002509: ISZERO
0000250a: PUSH2 0x11d4
0000250d: JUMPI
0000250e: PUSH1 0x40
00002510: MLOAD
00002511: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000
00002532: DUP2
00002533: MSTORE
00002534: PUSH1 0x04
00002536: ADD
00002537: PUSH1 0x40
00002539: MLOAD
0000253a: DUP1
0000253b: SWAP2
0000253c: SUB
0000253d: SWAP1
0000253e: REVERT
0000253f: JUMPDEST
00002540: PUSH32 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143
00002561: SLOAD
00002562: PUSH1 0xff
00002564: AND
00002565: ISZERO
00002566: PUSH2 0x2572
00002569: JUMPI
0000256a: PUSH2 0x23ec
0000256d: DUP4
0000256e: PUSH2 0x2b61
00002571: JUMP
00002572: JUMPDEST
00002573: DUP3
00002574: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002589: AND
0000258a: PUSH4 0x52d1902d
0000258f: PUSH1 0x40
00002591: MLOAD
00002592: DUP2
00002593: PUSH4 0xffffffff
00002598: AND
00002599: PUSH1 0xe0
0000259b: SHL
0000259c: DUP2
0000259d: MSTORE
0000259e: PUSH1 0x04
000025a0: ADD
000025a1: PUSH1 0x20
000025a3: PUSH1 0x40
000025a5: MLOAD
000025a6: DUP1
000025a7: DUP4
000025a8: SUB
000025a9: DUP2
000025aa: DUP7
000025ab: GAS
000025ac: STATICCALL
000025ad: SWAP3
000025ae: POP
000025af: POP
000025b0: POP
000025b1: DUP1
000025b2: ISZERO
000025b3: PUSH2 0x25f7
000025b6: JUMPI
000025b7: POP
000025b8: PUSH1 0x40
000025ba: DUP1
000025bb: MLOAD
000025bc: PUSH1 0x1f
000025be: RETURNDATASIZE
000025bf: SWAP1
000025c0: DUP2
000025c1: ADD
000025c2: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000025e3: AND
000025e4: DUP3
000025e5: ADD
000025e6: SWAP1
000025e7: SWAP3
000025e8: MSTORE
000025e9: PUSH2 0x25f4
000025ec: SWAP2
000025ed: DUP2
000025ee: ADD
000025ef: SWAP1
000025f0: PUSH2 0x3571
000025f3: JUMP
000025f4: JUMPDEST
000025f5: PUSH1 0x01
000025f7: JUMPDEST
000025f8: PUSH2 0x2683
000025fb: JUMPI
000025fc: PUSH1 0x40
000025fe: MLOAD
000025ff: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002620: DUP2
00002621: MSTORE
00002622: PUSH1 0x20
00002624: PUSH1 0x04
00002626: DUP3
00002627: ADD
00002628: MSTORE
00002629: PUSH1 0x2e
0000262b: PUSH1 0x24
0000262d: DUP3
0000262e: ADD
0000262f: MSTORE
00002630: PUSH32 0x45524331393637557067726164653a206e657720696d706c656d656e74617469
00002651: PUSH1 0x44
00002653: DUP3
00002654: ADD
00002655: MSTORE
00002656: PUSH32 0x6f6e206973206e6f742055555053000000000000000000000000000000000000
00002677: PUSH1 0x64
00002679: DUP3
0000267a: ADD
0000267b: MSTORE
0000267c: PUSH1 0x84
0000267e: ADD
0000267f: PUSH2 0x0cf4
00002682: JUMP
00002683: JUMPDEST
00002684: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
000026a5: DUP2
000026a6: EQ
000026a7: PUSH2 0x2732
000026aa: JUMPI
000026ab: PUSH1 0x40
000026ad: MLOAD
000026ae: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000026cf: DUP2
000026d0: MSTORE
000026d1: PUSH1 0x20
000026d3: PUSH1 0x04
000026d5: DUP3
000026d6: ADD
000026d7: MSTORE
000026d8: PUSH1 0x29
000026da: PUSH1 0x24
000026dc: DUP3
000026dd: ADD
000026de: MSTORE
000026df: PUSH32 0x45524331393637557067726164653a20756e737570706f727465642070726f78
00002700: PUSH1 0x44
00002702: DUP3
00002703: ADD
00002704: MSTORE
00002705: PUSH32 0x6961626c65555549440000000000000000000000000000000000000000000000
00002726: PUSH1 0x64
00002728: DUP3
00002729: ADD
0000272a: MSTORE
0000272b: PUSH1 0x84
0000272d: ADD
0000272e: PUSH2 0x0cf4
00002731: JUMP
00002732: JUMPDEST
00002733: POP
00002734: PUSH2 0x23ec
00002737: DUP4
00002738: DUP4
00002739: DUP4
0000273a: PUSH2 0x2c6b
0000273d: JUMP
0000273e: JUMPDEST
0000273f: DUP1
00002740: MLOAD
00002741: PUSH1 0x00
00002743: SWAP1
00002744: DUP4
00002745: SWAP1
00002746: DUP3
00002747: JUMPDEST
00002748: DUP2
00002749: DUP2
0000274a: LT
0000274b: ISZERO
0000274c: PUSH2 0x2818
0000274f: JUMPI
00002750: DUP5
00002751: DUP2
00002752: DUP2
00002753: MLOAD
00002754: DUP2
00002755: LT
00002756: PUSH2 0x2761
00002759: JUMPI
0000275a: PUSH2 0x2761
0000275d: PUSH2 0x34da
00002760: JUMP
00002761: JUMPDEST
00002762: PUSH1 0x20
00002764: MUL
00002765: PUSH1 0x20
00002767: ADD
00002768: ADD
00002769: MLOAD
0000276a: DUP4
0000276b: LT
0000276c: ISZERO
0000276d: PUSH2 0x27c2
00002770: JUMPI
00002771: DUP3
00002772: DUP6
00002773: DUP3
00002774: DUP2
00002775: MLOAD
00002776: DUP2
00002777: LT
00002778: PUSH2 0x2783
0000277b: JUMPI
0000277c: PUSH2 0x2783
0000277f: PUSH2 0x34da
00002782: JUMP
00002783: JUMPDEST
00002784: PUSH1 0x20
00002786: MUL
00002787: PUSH1 0x20
00002789: ADD
0000278a: ADD
0000278b: MLOAD
0000278c: PUSH1 0x40
0000278e: MLOAD
0000278f: PUSH1 0x20
00002791: ADD
00002792: PUSH2 0x27a5
00002795: SWAP3
00002796: SWAP2
00002797: SWAP1
00002798: SWAP2
00002799: DUP3
0000279a: MSTORE
0000279b: PUSH1 0x20
0000279d: DUP3
0000279e: ADD
0000279f: MSTORE
000027a0: PUSH1 0x40
000027a2: ADD
000027a3: SWAP1
000027a4: JUMP
000027a5: JUMPDEST
000027a6: PUSH1 0x40
000027a8: MLOAD
000027a9: PUSH1 0x20
000027ab: DUP2
000027ac: DUP4
000027ad: SUB
000027ae: SUB
000027af: DUP2
000027b0: MSTORE
000027b1: SWAP1
000027b2: PUSH1 0x40
000027b4: MSTORE
000027b5: DUP1
000027b6: MLOAD
000027b7: SWAP1
000027b8: PUSH1 0x20
000027ba: ADD
000027bb: KECCAK256
000027bc: SWAP3
000027bd: POP
000027be: PUSH2 0x2810
000027c1: JUMP
000027c2: JUMPDEST
000027c3: DUP5
000027c4: DUP2
000027c5: DUP2
000027c6: MLOAD
000027c7: DUP2
000027c8: LT
000027c9: PUSH2 0x27d4
000027cc: JUMPI
000027cd: PUSH2 0x27d4
000027d0: PUSH2 0x34da
000027d3: JUMP
000027d4: JUMPDEST
000027d5: PUSH1 0x20
000027d7: MUL
000027d8: PUSH1 0x20
000027da: ADD
000027db: ADD
000027dc: MLOAD
000027dd: DUP4
000027de: PUSH1 0x40
000027e0: MLOAD
000027e1: PUSH1 0x20
000027e3: ADD
000027e4: PUSH2 0x27f7
000027e7: SWAP3
000027e8: SWAP2
000027e9: SWAP1
000027ea: SWAP2
000027eb: DUP3
000027ec: MSTORE
000027ed: PUSH1 0x20
000027ef: DUP3
000027f0: ADD
000027f1: MSTORE
000027f2: PUSH1 0x40
000027f4: ADD
000027f5: SWAP1
000027f6: JUMP
000027f7: JUMPDEST
000027f8: PUSH1 0x40
000027fa: MLOAD
000027fb: PUSH1 0x20
000027fd: DUP2
000027fe: DUP4
000027ff: SUB
00002800: SUB
00002801: DUP2
00002802: MSTORE
00002803: SWAP1
00002804: PUSH1 0x40
00002806: MSTORE
00002807: DUP1
00002808: MLOAD
00002809: SWAP1
0000280a: PUSH1 0x20
0000280c: ADD
0000280d: KECCAK256
0000280e: SWAP3
0000280f: POP
00002810: JUMPDEST
00002811: PUSH1 0x01
00002813: ADD
00002814: PUSH2 0x2747
00002817: JUMP
00002818: JUMPDEST
00002819: POP
0000281a: PUSH1 0x00
0000281c: PUSH2 0x2823
0000281f: PUSH2 0x0f84
00002822: JUMP
00002823: JUMPDEST
00002824: SWAP1
00002825: POP
00002826: DUP1
00002827: PUSH2 0x285c
0000282a: JUMPI
0000282b: PUSH1 0x40
0000282d: MLOAD
0000282e: PUSH32 0x094ad65800000000000000000000000000000000000000000000000000000000
0000284f: DUP2
00002850: MSTORE
00002851: PUSH1 0x04
00002853: ADD
00002854: PUSH1 0x40
00002856: MLOAD
00002857: DUP1
00002858: SWAP2
00002859: SUB
0000285a: SWAP1
0000285b: REVERT
0000285c: JUMPDEST
0000285d: SWAP2
0000285e: SWAP1
0000285f: SWAP2
00002860: EQ
00002861: SWAP2
00002862: POP
00002863: POP
00002864: JUMPDEST
00002865: SWAP3
00002866: SWAP2
00002867: POP
00002868: POP
00002869: JUMP
0000286a: JUMPDEST
0000286b: PUSH1 0x00
0000286d: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff
00002888: DUP3
00002889: GT
0000288a: ISZERO
0000288b: PUSH2 0x2916
0000288e: JUMPI
0000288f: PUSH1 0x40
00002891: MLOAD
00002892: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000028b3: DUP2
000028b4: MSTORE
000028b5: PUSH1 0x20
000028b7: PUSH1 0x04
000028b9: DUP3
000028ba: ADD
000028bb: MSTORE
000028bc: PUSH1 0x27
000028be: PUSH1 0x24
000028c0: DUP3
000028c1: ADD
000028c2: MSTORE
000028c3: PUSH32 0x53616665436173743a2076616c756520646f65736e27742066697420696e2032
000028e4: PUSH1 0x44
000028e6: DUP3
000028e7: ADD
000028e8: MSTORE
000028e9: PUSH32 0x3038206269747300000000000000000000000000000000000000000000000000
0000290a: PUSH1 0x64
0000290c: DUP3
0000290d: ADD
0000290e: MSTORE
0000290f: PUSH1 0x84
00002911: ADD
00002912: PUSH2 0x0cf4
00002915: JUMP
00002916: JUMPDEST
00002917: POP
00002918: SWAP1
00002919: JUMP
0000291a: JUMPDEST
0000291b: PUSH1 0x40
0000291d: DUP1
0000291e: MLOAD
0000291f: DUP1
00002920: DUP3
00002921: ADD
00002922: DUP3
00002923: MSTORE
00002924: PUSH1 0x67
00002926: SLOAD
00002927: DUP1
00002928: DUP3
00002929: MSTORE
0000292a: PUSH1 0x68
0000292c: SLOAD
0000292d: PUSH1 0x20
0000292f: DUP4
00002930: ADD
00002931: DUP2
00002932: SWAP1
00002933: MSTORE
00002934: PUSH1 0x6b
00002936: DUP1
00002937: SLOAD
00002938: PUSH32 0xffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff
00002959: AND
0000295a: SWAP1
0000295b: SSTORE
0000295c: PUSH1 0x65
0000295e: SWAP2
0000295f: SWAP1
00002960: SWAP2
00002961: SSTORE
00002962: PUSH1 0x66
00002964: SSTORE
00002965: SWAP1
00002966: MLOAD
00002967: PUSH32 0x44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee6
00002988: SWAP1
00002989: PUSH1 0x00
0000298b: SWAP1
0000298c: LOG1
0000298d: DUP1
0000298e: MLOAD
0000298f: PUSH1 0x20
00002991: DUP3
00002992: ADD
00002993: MLOAD
00002994: PUSH32 0x23aa2e4f757a7bd974085d3e11439a843b137b30905e3ffd51b2097c34aef62e
000029b5: SWAP2
000029b6: SWAP1
000029b7: PUSH2 0x0e10
000029ba: PUSH2 0x29c3
000029bd: DUP2
000029be: TIMESTAMP
000029bf: PUSH2 0x358a
000029c2: JUMP
000029c3: JUMPDEST
000029c4: PUSH2 0x29cd
000029c7: SWAP2
000029c8: SWAP1
000029c9: PUSH2 0x35d6
000029cc: JUMP
000029cd: JUMPDEST
000029ce: PUSH1 0x40
000029d0: DUP1
000029d1: MLOAD
000029d2: SWAP4
000029d3: DUP5
000029d4: MSTORE
000029d5: PUSH1 0x20
000029d7: DUP5
000029d8: ADD
000029d9: SWAP3
000029da: SWAP1
000029db: SWAP3
000029dc: MSTORE
000029dd: PUSH6 0xffffffffffff
000029e4: AND
000029e5: SWAP1
000029e6: DUP3
000029e7: ADD
000029e8: MSTORE
000029e9: PUSH1 0x60
000029eb: ADD
000029ec: PUSH2 0x0804
000029ef: JUMP
000029f0: JUMPDEST
000029f1: PUSH1 0x6b
000029f3: SLOAD
000029f4: PUSH1 0x00
000029f6: SWAP1
000029f7: PUSH2 0x0e10
000029fa: SWAP1
000029fb: PUSH27 0x010000000000000000000000000000000000000000000000000000
00002a17: SWAP1
00002a18: DIV
00002a19: PUSH6 0xffffffffffff
00002a20: AND
00002a21: DUP2
00002a22: PUSH2 0x2a2c
00002a25: PUSH1 0x01
00002a27: DUP7
00002a28: PUSH2 0x3600
00002a2b: JUMP
00002a2c: JUMPDEST
00002a2d: PUSH2 0x2a36
00002a30: SWAP2
00002a31: SWAP1
00002a32: PUSH2 0x358a
00002a35: JUMP
00002a36: JUMPDEST
00002a37: PUSH2 0x2a41
00002a3a: SWAP1
00002a3b: PUSH1 0x01
00002a3d: PUSH2 0x3626
00002a40: JUMP
00002a41: JUMPDEST
00002a42: PUSH2 0x2a4b
00002a45: SWAP2
00002a46: SWAP1
00002a47: PUSH2 0x3626
00002a4a: JUMP
00002a4b: JUMPDEST
00002a4c: PUSH2 0x2864
00002a4f: SWAP2
00002a50: SWAP1
00002a51: PUSH2 0x35d6
00002a54: JUMP
00002a55: JUMPDEST
00002a56: PUSH1 0x00
00002a58: PUSH2 0x2ab7
00002a5b: DUP3
00002a5c: PUSH1 0x40
00002a5e: MLOAD
00002a5f: DUP1
00002a60: PUSH1 0x40
00002a62: ADD
00002a63: PUSH1 0x40
00002a65: MSTORE
00002a66: DUP1
00002a67: PUSH1 0x20
00002a69: DUP2
00002a6a: MSTORE
00002a6b: PUSH1 0x20
00002a6d: ADD
00002a6e: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00002a8f: DUP2
00002a90: MSTORE
00002a91: POP
00002a92: DUP6
00002a93: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002aa8: AND
00002aa9: PUSH2 0x2c90
00002aac: SWAP1
00002aad: SWAP3
00002aae: SWAP2
00002aaf: SWAP1
00002ab0: PUSH4 0xffffffff
00002ab5: AND
00002ab6: JUMP
00002ab7: JUMPDEST
00002ab8: DUP1
00002ab9: MLOAD
00002aba: SWAP1
00002abb: SWAP2
00002abc: POP
00002abd: ISZERO
00002abe: PUSH2 0x23ec
00002ac1: JUMPI
00002ac2: DUP1
00002ac3: DUP1
00002ac4: PUSH1 0x20
00002ac6: ADD
00002ac7: SWAP1
00002ac8: MLOAD
00002ac9: DUP2
00002aca: ADD
00002acb: SWAP1
00002acc: PUSH2 0x2ad5
00002acf: SWAP2
00002ad0: SWAP1
00002ad1: PUSH2 0x3406
00002ad4: JUMP
00002ad5: JUMPDEST
00002ad6: PUSH2 0x23ec
00002ad9: JUMPI
00002ada: PUSH1 0x40
00002adc: MLOAD
00002add: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002afe: DUP2
00002aff: MSTORE
00002b00: PUSH1 0x20
00002b02: PUSH1 0x04
00002b04: DUP3
00002b05: ADD
00002b06: MSTORE
00002b07: PUSH1 0x2a
00002b09: PUSH1 0x24
00002b0b: DUP3
00002b0c: ADD
00002b0d: MSTORE
00002b0e: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00002b2f: PUSH1 0x44
00002b31: DUP3
00002b32: ADD
00002b33: MSTORE
00002b34: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
00002b55: PUSH1 0x64
00002b57: DUP3
00002b58: ADD
00002b59: MSTORE
00002b5a: PUSH1 0x84
00002b5c: ADD
00002b5d: PUSH2 0x0cf4
00002b60: JUMP
00002b61: JUMPDEST
00002b62: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b77: DUP2
00002b78: AND
00002b79: EXTCODESIZE
00002b7a: PUSH2 0x2c05
00002b7d: JUMPI
00002b7e: PUSH1 0x40
00002b80: MLOAD
00002b81: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002ba2: DUP2
00002ba3: MSTORE
00002ba4: PUSH1 0x20
00002ba6: PUSH1 0x04
00002ba8: DUP3
00002ba9: ADD
00002baa: MSTORE
00002bab: PUSH1 0x2d
00002bad: PUSH1 0x24
00002baf: DUP3
00002bb0: ADD
00002bb1: MSTORE
00002bb2: PUSH32 0x455243313936373a206e657720696d706c656d656e746174696f6e206973206e
00002bd3: PUSH1 0x44
00002bd5: DUP3
00002bd6: ADD
00002bd7: MSTORE
00002bd8: PUSH32 0x6f74206120636f6e747261637400000000000000000000000000000000000000
00002bf9: PUSH1 0x64
00002bfb: DUP3
00002bfc: ADD
00002bfd: MSTORE
00002bfe: PUSH1 0x84
00002c00: ADD
00002c01: PUSH2 0x0cf4
00002c04: JUMP
00002c05: JUMPDEST
00002c06: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00002c27: DUP1
00002c28: SLOAD
00002c29: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00002c4a: AND
00002c4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c60: SWAP3
00002c61: SWAP1
00002c62: SWAP3
00002c63: AND
00002c64: SWAP2
00002c65: SWAP1
00002c66: SWAP2
00002c67: OR
00002c68: SWAP1
00002c69: SSTORE
00002c6a: JUMP
00002c6b: JUMPDEST
00002c6c: PUSH2 0x2c74
00002c6f: DUP4
00002c70: PUSH2 0x2ca9
00002c73: JUMP
00002c74: JUMPDEST
00002c75: PUSH1 0x00
00002c77: DUP3
00002c78: MLOAD
00002c79: GT
00002c7a: DUP1
00002c7b: PUSH2 0x2c81
00002c7e: JUMPI
00002c7f: POP
00002c80: DUP1
00002c81: JUMPDEST
00002c82: ISZERO
00002c83: PUSH2 0x23ec
00002c86: JUMPI
00002c87: PUSH2 0x244f
00002c8a: DUP4
00002c8b: DUP4
00002c8c: PUSH2 0x2cf6
00002c8f: JUMP
00002c90: JUMPDEST
00002c91: PUSH1 0x60
00002c93: PUSH2 0x2c9f
00002c96: DUP5
00002c97: DUP5
00002c98: PUSH1 0x00
00002c9a: DUP6
00002c9b: PUSH2 0x2e35
00002c9e: JUMP
00002c9f: JUMPDEST
00002ca0: SWAP1
00002ca1: POP
00002ca2: JUMPDEST
00002ca3: SWAP4
00002ca4: SWAP3
00002ca5: POP
00002ca6: POP
00002ca7: POP
00002ca8: JUMP
00002ca9: JUMPDEST
00002caa: PUSH2 0x2cb2
00002cad: DUP2
00002cae: PUSH2 0x2b61
00002cb1: JUMP
00002cb2: JUMPDEST
00002cb3: PUSH1 0x40
00002cb5: MLOAD
00002cb6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ccb: DUP3
00002ccc: AND
00002ccd: SWAP1
00002cce: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
00002cef: SWAP1
00002cf0: PUSH1 0x00
00002cf2: SWAP1
00002cf3: LOG2
00002cf4: POP
00002cf5: JUMP
00002cf6: JUMPDEST
00002cf7: PUSH1 0x60
00002cf9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002d0e: DUP4
00002d0f: AND
00002d10: EXTCODESIZE
00002d11: PUSH2 0x2d9c
00002d14: JUMPI
00002d15: PUSH1 0x40
00002d17: MLOAD
00002d18: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002d39: DUP2
00002d3a: MSTORE
00002d3b: PUSH1 0x20
00002d3d: PUSH1 0x04
00002d3f: DUP3
00002d40: ADD
00002d41: MSTORE
00002d42: PUSH1 0x26
00002d44: PUSH1 0x24
00002d46: DUP3
00002d47: ADD
00002d48: MSTORE
00002d49: PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f
00002d6a: PUSH1 0x44
00002d6c: DUP3
00002d6d: ADD
00002d6e: MSTORE
00002d6f: PUSH32 0x6e74726163740000000000000000000000000000000000000000000000000000
00002d90: PUSH1 0x64
00002d92: DUP3
00002d93: ADD
00002d94: MSTORE
00002d95: PUSH1 0x84
00002d97: ADD
00002d98: PUSH2 0x0cf4
00002d9b: JUMP
00002d9c: JUMPDEST
00002d9d: PUSH1 0x00
00002d9f: DUP1
00002da0: DUP5
00002da1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002db6: AND
00002db7: DUP5
00002db8: PUSH1 0x40
00002dba: MLOAD
00002dbb: PUSH2 0x2dc4
00002dbe: SWAP2
00002dbf: SWAP1
00002dc0: PUSH2 0x3645
00002dc3: JUMP
00002dc4: JUMPDEST
00002dc5: PUSH1 0x00
00002dc7: PUSH1 0x40
00002dc9: MLOAD
00002dca: DUP1
00002dcb: DUP4
00002dcc: SUB
00002dcd: DUP2
00002dce: DUP6
00002dcf: GAS
00002dd0: DELEGATECALL
00002dd1: SWAP2
00002dd2: POP
00002dd3: POP
00002dd4: RETURNDATASIZE
00002dd5: DUP1
00002dd6: PUSH1 0x00
00002dd8: DUP2
00002dd9: EQ
00002dda: PUSH2 0x2dff
00002ddd: JUMPI
00002dde: PUSH1 0x40
00002de0: MLOAD
00002de1: SWAP2
00002de2: POP
00002de3: PUSH1 0x1f
00002de5: NOT
00002de6: PUSH1 0x3f
00002de8: RETURNDATASIZE
00002de9: ADD
00002dea: AND
00002deb: DUP3
00002dec: ADD
00002ded: PUSH1 0x40
00002def: MSTORE
00002df0: RETURNDATASIZE
00002df1: DUP3
00002df2: MSTORE
00002df3: RETURNDATASIZE
00002df4: PUSH1 0x00
00002df6: PUSH1 0x20
00002df8: DUP5
00002df9: ADD
00002dfa: RETURNDATACOPY
00002dfb: PUSH2 0x2e04
00002dfe: JUMP
00002dff: JUMPDEST
00002e00: PUSH1 0x60
00002e02: SWAP2
00002e03: POP
00002e04: JUMPDEST
00002e05: POP
00002e06: SWAP2
00002e07: POP
00002e08: SWAP2
00002e09: POP
00002e0a: PUSH2 0x2e2c
00002e0d: DUP3
00002e0e: DUP3
00002e0f: PUSH1 0x40
00002e11: MLOAD
00002e12: DUP1
00002e13: PUSH1 0x60
00002e15: ADD
00002e16: PUSH1 0x40
00002e18: MSTORE
00002e19: DUP1
00002e1a: PUSH1 0x27
00002e1c: DUP2
00002e1d: MSTORE
00002e1e: PUSH1 0x20
00002e20: ADD
00002e21: PUSH2 0x3662
00002e24: PUSH1 0x27
00002e26: SWAP2
00002e27: CODECOPY
00002e28: PUSH2 0x2f50
00002e2b: JUMP
00002e2c: JUMPDEST
00002e2d: SWAP6
00002e2e: SWAP5
00002e2f: POP
00002e30: POP
00002e31: POP
00002e32: POP
00002e33: POP
00002e34: JUMP
00002e35: JUMPDEST
00002e36: PUSH1 0x60
00002e38: DUP3
00002e39: SELFBALANCE
00002e3a: LT
00002e3b: ISZERO
00002e3c: PUSH2 0x2ec7
00002e3f: JUMPI
00002e40: PUSH1 0x40
00002e42: MLOAD
00002e43: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002e64: DUP2
00002e65: MSTORE
00002e66: PUSH1 0x20
00002e68: PUSH1 0x04
00002e6a: DUP3
00002e6b: ADD
00002e6c: MSTORE
00002e6d: PUSH1 0x26
00002e6f: PUSH1 0x24
00002e71: DUP3
00002e72: ADD
00002e73: MSTORE
00002e74: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
00002e95: PUSH1 0x44
00002e97: DUP3
00002e98: ADD
00002e99: MSTORE
00002e9a: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
00002ebb: PUSH1 0x64
00002ebd: DUP3
00002ebe: ADD
00002ebf: MSTORE
00002ec0: PUSH1 0x84
00002ec2: ADD
00002ec3: PUSH2 0x0cf4
00002ec6: JUMP
00002ec7: JUMPDEST
00002ec8: PUSH1 0x00
00002eca: DUP1
00002ecb: DUP7
00002ecc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ee1: AND
00002ee2: DUP6
00002ee3: DUP8
00002ee4: PUSH1 0x40
00002ee6: MLOAD
00002ee7: PUSH2 0x2ef0
00002eea: SWAP2
00002eeb: SWAP1
00002eec: PUSH2 0x3645
00002eef: JUMP
00002ef0: JUMPDEST
00002ef1: PUSH1 0x00
00002ef3: PUSH1 0x40
00002ef5: MLOAD
00002ef6: DUP1
00002ef7: DUP4
00002ef8: SUB
00002ef9: DUP2
00002efa: DUP6
00002efb: DUP8
00002efc: GAS
00002efd: CALL
00002efe: SWAP3
00002eff: POP
00002f00: POP
00002f01: POP
00002f02: RETURNDATASIZE
00002f03: DUP1
00002f04: PUSH1 0x00
00002f06: DUP2
00002f07: EQ
00002f08: PUSH2 0x2f2d
00002f0b: JUMPI
00002f0c: PUSH1 0x40
00002f0e: MLOAD
00002f0f: SWAP2
00002f10: POP
00002f11: PUSH1 0x1f
00002f13: NOT
00002f14: PUSH1 0x3f
00002f16: RETURNDATASIZE
00002f17: ADD
00002f18: AND
00002f19: DUP3
00002f1a: ADD
00002f1b: PUSH1 0x40
00002f1d: MSTORE
00002f1e: RETURNDATASIZE
00002f1f: DUP3
00002f20: MSTORE
00002f21: RETURNDATASIZE
00002f22: PUSH1 0x00
00002f24: PUSH1 0x20
00002f26: DUP5
00002f27: ADD
00002f28: RETURNDATACOPY
00002f29: PUSH2 0x2f32
00002f2c: JUMP
00002f2d: JUMPDEST
00002f2e: PUSH1 0x60
00002f30: SWAP2
00002f31: POP
00002f32: JUMPDEST
00002f33: POP
00002f34: SWAP2
00002f35: POP
00002f36: SWAP2
00002f37: POP
00002f38: PUSH2 0x2f43
00002f3b: DUP8
00002f3c: DUP4
00002f3d: DUP4
00002f3e: DUP8
00002f3f: PUSH2 0x2f69
00002f42: JUMP
00002f43: JUMPDEST
00002f44: SWAP3
00002f45: POP
00002f46: POP
00002f47: POP
00002f48: JUMPDEST
00002f49: SWAP5
00002f4a: SWAP4
00002f4b: POP
00002f4c: POP
00002f4d: POP
00002f4e: POP
00002f4f: JUMP
00002f50: JUMPDEST
00002f51: PUSH1 0x60
00002f53: DUP4
00002f54: ISZERO
00002f55: PUSH2 0x2f5f
00002f58: JUMPI
00002f59: POP
00002f5a: DUP2
00002f5b: PUSH2 0x2ca2
00002f5e: JUMP
00002f5f: JUMPDEST
00002f60: PUSH2 0x2ca2
00002f63: DUP4
00002f64: DUP4
00002f65: PUSH2 0x3005
00002f68: JUMP
00002f69: JUMPDEST
00002f6a: PUSH1 0x60
00002f6c: DUP4
00002f6d: ISZERO
00002f6e: PUSH2 0x2fff
00002f71: JUMPI
00002f72: DUP3
00002f73: MLOAD
00002f74: PUSH1 0x00
00002f76: SUB
00002f77: PUSH2 0x2ff8
00002f7a: JUMPI
00002f7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002f90: DUP6
00002f91: AND
00002f92: EXTCODESIZE
00002f93: PUSH2 0x2ff8
00002f96: JUMPI
00002f97: PUSH1 0x40
00002f99: MLOAD
00002f9a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00002fbb: DUP2
00002fbc: MSTORE
00002fbd: PUSH1 0x20
00002fbf: PUSH1 0x04
00002fc1: DUP3
00002fc2: ADD
00002fc3: MSTORE
00002fc4: PUSH1 0x1d
00002fc6: PUSH1 0x24
00002fc8: DUP3
00002fc9: ADD
00002fca: MSTORE
00002fcb: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00002fec: PUSH1 0x44
00002fee: DUP3
00002fef: ADD
00002ff0: MSTORE
00002ff1: PUSH1 0x64
00002ff3: ADD
00002ff4: PUSH2 0x0cf4
00002ff7: JUMP
00002ff8: JUMPDEST
00002ff9: POP
00002ffa: DUP2
00002ffb: PUSH2 0x2f48
00002ffe: JUMP
00002fff: JUMPDEST
00003000: PUSH2 0x2f48
00003003: DUP4
00003004: DUP4
00003005: JUMPDEST
00003006: DUP2
00003007: MLOAD
00003008: ISZERO
00003009: PUSH2 0x3015
0000300c: JUMPI
0000300d: DUP2
0000300e: MLOAD
0000300f: DUP1
00003010: DUP4
00003011: PUSH1 0x20
00003013: ADD
00003014: REVERT
00003015: JUMPDEST
00003016: DUP1
00003017: PUSH1 0x40
00003019: MLOAD
0000301a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000303b: DUP2
0000303c: MSTORE
0000303d: PUSH1 0x04
0000303f: ADD
00003040: PUSH2 0x0cf4
00003043: SWAP2
00003044: SWAP1
00003045: PUSH2 0x3489
00003048: JUMP
00003049: JUMPDEST
0000304a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000305f: DUP2
00003060: AND
00003061: DUP2
00003062: EQ
00003063: PUSH2 0x0e3a
00003066: JUMPI
00003067: PUSH1 0x00
00003069: DUP1
0000306a: REVERT
0000306b: JUMPDEST
0000306c: PUSH1 0x00
0000306e: DUP1
0000306f: PUSH1 0x40
00003071: DUP4
00003072: DUP6
00003073: SUB
00003074: SLT
00003075: ISZERO
00003076: PUSH2 0x307e
00003079: JUMPI
0000307a: PUSH1 0x00
0000307c: DUP1
0000307d: REVERT
0000307e: JUMPDEST
0000307f: DUP3
00003080: CALLDATALOAD
00003081: PUSH2 0x3089
00003084: DUP2
00003085: PUSH2 0x3049
00003088: JUMP
00003089: JUMPDEST
0000308a: SWAP2
0000308b: POP
0000308c: PUSH1 0x20
0000308e: DUP4
0000308f: ADD
00003090: CALLDATALOAD
00003091: PUSH2 0x3099
00003094: DUP2
00003095: PUSH2 0x3049
00003098: JUMP
00003099: JUMPDEST
0000309a: DUP1
0000309b: SWAP2
0000309c: POP
0000309d: POP
0000309e: SWAP3
0000309f: POP
000030a0: SWAP3
000030a1: SWAP1
000030a2: POP
000030a3: JUMP
000030a4: JUMPDEST
000030a5: PUSH1 0x00
000030a7: PUSH1 0x20
000030a9: DUP3
000030aa: DUP5
000030ab: SUB
000030ac: SLT
000030ad: ISZERO
000030ae: PUSH2 0x30b6
000030b1: JUMPI
000030b2: PUSH1 0x00
000030b4: DUP1
000030b5: REVERT
000030b6: JUMPDEST
000030b7: POP
000030b8: CALLDATALOAD
000030b9: SWAP2
000030ba: SWAP1
000030bb: POP
000030bc: JUMP
000030bd: JUMPDEST
000030be: PUSH1 0x00
000030c0: DUP1
000030c1: PUSH1 0x00
000030c3: PUSH1 0x60
000030c5: DUP5
000030c6: DUP7
000030c7: SUB
000030c8: SLT
000030c9: ISZERO
000030ca: PUSH2 0x30d2
000030cd: JUMPI
000030ce: PUSH1 0x00
000030d0: DUP1
000030d1: REVERT
000030d2: JUMPDEST
000030d3: DUP4
000030d4: CALLDATALOAD
000030d5: PUSH2 0x30dd
000030d8: DUP2
000030d9: PUSH2 0x3049
000030dc: JUMP
000030dd: JUMPDEST
000030de: SWAP3
000030df: POP
000030e0: PUSH1 0x20
000030e2: DUP5
000030e3: ADD
000030e4: CALLDATALOAD
000030e5: PUSH2 0x30ed
000030e8: DUP2
000030e9: PUSH2 0x3049
000030ec: JUMP
000030ed: JUMPDEST
000030ee: SWAP3
000030ef: SWAP6
000030f0: SWAP3
000030f1: SWAP5
000030f2: POP
000030f3: POP
000030f4: POP
000030f5: PUSH1 0x40
000030f7: SWAP2
000030f8: SWAP1
000030f9: SWAP2
000030fa: ADD
000030fb: CALLDATALOAD
000030fc: SWAP1
000030fd: JUMP
000030fe: JUMPDEST
000030ff: PUSH1 0x00
00003101: PUSH1 0x20
00003103: DUP3
00003104: DUP5
00003105: SUB
00003106: SLT
00003107: ISZERO
00003108: PUSH2 0x3110
0000310b: JUMPI
0000310c: PUSH1 0x00
0000310e: DUP1
0000310f: REVERT
00003110: JUMPDEST
00003111: DUP2
00003112: CALLDATALOAD
00003113: PUSH2 0x2ca2
00003116: DUP2
00003117: PUSH2 0x3049
0000311a: JUMP
0000311b: JUMPDEST
0000311c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000313d: PUSH1 0x00
0000313f: MSTORE
00003140: PUSH1 0x41
00003142: PUSH1 0x04
00003144: MSTORE
00003145: PUSH1 0x24
00003147: PUSH1 0x00
00003149: REVERT
0000314a: JUMPDEST
0000314b: PUSH1 0x00
0000314d: PUSH8 0xffffffffffffffff
00003156: DUP1
00003157: DUP5
00003158: GT
00003159: ISZERO
0000315a: PUSH2 0x3165
0000315d: JUMPI
0000315e: PUSH2 0x3165
00003161: PUSH2 0x311b
00003164: JUMP
00003165: JUMPDEST
00003166: PUSH1 0x40
00003168: MLOAD
00003169: PUSH1 0x1f
0000316b: DUP6
0000316c: ADD
0000316d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
0000318e: SWAP1
0000318f: DUP2
00003190: AND
00003191: PUSH1 0x3f
00003193: ADD
00003194: AND
00003195: DUP2
00003196: ADD
00003197: SWAP1
00003198: DUP3
00003199: DUP3
0000319a: GT
0000319b: DUP2
0000319c: DUP4
0000319d: LT
0000319e: OR
0000319f: ISZERO
000031a0: PUSH2 0x31ab
000031a3: JUMPI
000031a4: PUSH2 0x31ab
000031a7: PUSH2 0x311b
000031aa: JUMP
000031ab: JUMPDEST
000031ac: DUP2
000031ad: PUSH1 0x40
000031af: MSTORE
000031b0: DUP1
000031b1: SWAP4
000031b2: POP
000031b3: DUP6
000031b4: DUP2
000031b5: MSTORE
000031b6: DUP7
000031b7: DUP7
000031b8: DUP7
000031b9: ADD
000031ba: GT
000031bb: ISZERO
000031bc: PUSH2 0x31c4
000031bf: JUMPI
000031c0: PUSH1 0x00
000031c2: DUP1
000031c3: REVERT
000031c4: JUMPDEST
000031c5: DUP6
000031c6: DUP6
000031c7: PUSH1 0x20
000031c9: DUP4
000031ca: ADD
000031cb: CALLDATACOPY
000031cc: PUSH1 0x00
000031ce: PUSH1 0x20
000031d0: DUP8
000031d1: DUP4
000031d2: ADD
000031d3: ADD
000031d4: MSTORE
000031d5: POP
000031d6: POP
000031d7: POP
000031d8: SWAP4
000031d9: SWAP3
000031da: POP
000031db: POP
000031dc: POP
000031dd: JUMP
000031de: JUMPDEST
000031df: PUSH1 0x00
000031e1: PUSH1 0x20
000031e3: DUP3
000031e4: DUP5
000031e5: SUB
000031e6: SLT
000031e7: ISZERO
000031e8: PUSH2 0x31f0
000031eb: JUMPI
000031ec: PUSH1 0x00
000031ee: DUP1
000031ef: REVERT
000031f0: JUMPDEST
000031f1: DUP2
000031f2: CALLDATALOAD
000031f3: PUSH8 0xffffffffffffffff
000031fc: DUP2
000031fd: GT
000031fe: ISZERO
000031ff: PUSH2 0x3207
00003202: JUMPI
00003203: PUSH1 0x00
00003205: DUP1
00003206: REVERT
00003207: JUMPDEST
00003208: DUP3
00003209: ADD
0000320a: PUSH1 0x1f
0000320c: DUP2
0000320d: ADD
0000320e: DUP5
0000320f: SGT
00003210: PUSH2 0x3218
00003213: JUMPI
00003214: PUSH1 0x00
00003216: DUP1
00003217: REVERT
00003218: JUMPDEST
00003219: PUSH2 0x2f48
0000321c: DUP5
0000321d: DUP3
0000321e: CALLDATALOAD
0000321f: PUSH1 0x20
00003221: DUP5
00003222: ADD
00003223: PUSH2 0x314a
00003226: JUMP
00003227: JUMPDEST
00003228: PUSH1 0x00
0000322a: PUSH1 0x20
0000322c: DUP3
0000322d: DUP5
0000322e: SUB
0000322f: SLT
00003230: ISZERO
00003231: PUSH2 0x3239
00003234: JUMPI
00003235: PUSH1 0x00
00003237: DUP1
00003238: REVERT
00003239: JUMPDEST
0000323a: DUP2
0000323b: CALLDATALOAD
0000323c: PUSH6 0xffffffffffff
00003243: DUP2
00003244: AND
00003245: DUP2
00003246: EQ
00003247: PUSH2 0x2ca2
0000324a: JUMPI
0000324b: PUSH1 0x00
0000324d: DUP1
0000324e: REVERT
0000324f: JUMPDEST
00003250: PUSH1 0x00
00003252: DUP1
00003253: PUSH1 0x40
00003255: DUP4
00003256: DUP6
00003257: SUB
00003258: SLT
00003259: ISZERO
0000325a: PUSH2 0x3262
0000325d: JUMPI
0000325e: PUSH1 0x00
00003260: DUP1
00003261: REVERT
00003262: JUMPDEST
00003263: DUP3
00003264: CALLDATALOAD
00003265: PUSH2 0x326d
00003268: DUP2
00003269: PUSH2 0x3049
0000326c: JUMP
0000326d: JUMPDEST
0000326e: SWAP2
0000326f: POP
00003270: PUSH1 0x20
00003272: DUP4
00003273: ADD
00003274: CALLDATALOAD
00003275: PUSH8 0xffffffffffffffff
0000327e: DUP2
0000327f: GT
00003280: ISZERO
00003281: PUSH2 0x3289
00003284: JUMPI
00003285: PUSH1 0x00
00003287: DUP1
00003288: REVERT
00003289: JUMPDEST
0000328a: DUP4
0000328b: ADD
0000328c: PUSH1 0x1f
0000328e: DUP2
0000328f: ADD
00003290: DUP6
00003291: SGT
00003292: PUSH2 0x329a
00003295: JUMPI
00003296: PUSH1 0x00
00003298: DUP1
00003299: REVERT
0000329a: JUMPDEST
0000329b: PUSH2 0x32a9
0000329e: DUP6
0000329f: DUP3
000032a0: CALLDATALOAD
000032a1: PUSH1 0x20
000032a3: DUP5
000032a4: ADD
000032a5: PUSH2 0x314a
000032a8: JUMP
000032a9: JUMPDEST
000032aa: SWAP2
000032ab: POP
000032ac: POP
000032ad: SWAP3
000032ae: POP
000032af: SWAP3
000032b0: SWAP1
000032b1: POP
000032b2: JUMP
000032b3: JUMPDEST
000032b4: PUSH1 0x00
000032b6: DUP1
000032b7: DUP4
000032b8: PUSH1 0x1f
000032ba: DUP5
000032bb: ADD
000032bc: SLT
000032bd: PUSH2 0x32c5
000032c0: JUMPI
000032c1: PUSH1 0x00
000032c3: DUP1
000032c4: REVERT
000032c5: JUMPDEST
000032c6: POP
000032c7: DUP2
000032c8: CALLDATALOAD
000032c9: PUSH8 0xffffffffffffffff
000032d2: DUP2
000032d3: GT
000032d4: ISZERO
000032d5: PUSH2 0x32dd
000032d8: JUMPI
000032d9: PUSH1 0x00
000032db: DUP1
000032dc: REVERT
000032dd: JUMPDEST
000032de: PUSH1 0x20
000032e0: DUP4
000032e1: ADD
000032e2: SWAP2
000032e3: POP
000032e4: DUP4
000032e5: PUSH1 0x20
000032e7: DUP3
000032e8: PUSH1 0x05
000032ea: SHL
000032eb: DUP6
000032ec: ADD
000032ed: ADD
000032ee: GT
000032ef: ISZERO
000032f0: PUSH2 0x32f8
000032f3: JUMPI
000032f4: PUSH1 0x00
000032f6: DUP1
000032f7: REVERT
000032f8: JUMPDEST
000032f9: SWAP3
000032fa: POP
000032fb: SWAP3
000032fc: SWAP1
000032fd: POP
000032fe: JUMP
000032ff: JUMPDEST
00003300: PUSH1 0x00
00003302: DUP1
00003303: PUSH1 0x00
00003305: DUP1
00003306: PUSH1 0x00
00003308: DUP1
00003309: PUSH1 0x00
0000330b: DUP1
0000330c: PUSH1 0x80
0000330e: DUP10
0000330f: DUP12
00003310: SUB
00003311: SLT
00003312: ISZERO
00003313: PUSH2 0x331b
00003316: JUMPI
00003317: PUSH1 0x00
00003319: DUP1
0000331a: REVERT
0000331b: JUMPDEST
0000331c: DUP9
0000331d: CALLDATALOAD
0000331e: PUSH8 0xffffffffffffffff
00003327: DUP1
00003328: DUP3
00003329: GT
0000332a: ISZERO
0000332b: PUSH2 0x3333
0000332e: JUMPI
0000332f: PUSH1 0x00
00003331: DUP1
00003332: REVERT
00003333: JUMPDEST
00003334: PUSH2 0x333f
00003337: DUP13
00003338: DUP4
00003339: DUP14
0000333a: ADD
0000333b: PUSH2 0x32b3
0000333e: JUMP
0000333f: JUMPDEST
00003340: SWAP1
00003341: SWAP11
00003342: POP
00003343: SWAP9
00003344: POP
00003345: PUSH1 0x20
00003347: DUP12
00003348: ADD
00003349: CALLDATALOAD
0000334a: SWAP2
0000334b: POP
0000334c: DUP1
0000334d: DUP3
0000334e: GT
0000334f: ISZERO
00003350: PUSH2 0x3358
00003353: JUMPI
00003354: PUSH1 0x00
00003356: DUP1
00003357: REVERT
00003358: JUMPDEST
00003359: PUSH2 0x3364
0000335c: DUP13
0000335d: DUP4
0000335e: DUP14
0000335f: ADD
00003360: PUSH2 0x32b3
00003363: JUMP
00003364: JUMPDEST
00003365: SWAP1
00003366: SWAP9
00003367: POP
00003368: SWAP7
00003369: POP
0000336a: PUSH1 0x40
0000336c: DUP12
0000336d: ADD
0000336e: CALLDATALOAD
0000336f: SWAP2
00003370: POP
00003371: DUP1
00003372: DUP3
00003373: GT
00003374: ISZERO
00003375: PUSH2 0x337d
00003378: JUMPI
00003379: PUSH1 0x00
0000337b: DUP1
0000337c: REVERT
0000337d: JUMPDEST
0000337e: PUSH2 0x3389
00003381: DUP13
00003382: DUP4
00003383: DUP14
00003384: ADD
00003385: PUSH2 0x32b3
00003388: JUMP
00003389: JUMPDEST
0000338a: SWAP1
0000338b: SWAP7
0000338c: POP
0000338d: SWAP5
0000338e: POP
0000338f: PUSH1 0x60
00003391: DUP12
00003392: ADD
00003393: CALLDATALOAD
00003394: SWAP2
00003395: POP
00003396: DUP1
00003397: DUP3
00003398: GT
00003399: ISZERO
0000339a: PUSH2 0x33a2
0000339d: JUMPI
0000339e: PUSH1 0x00
000033a0: DUP1
000033a1: REVERT
000033a2: JUMPDEST
000033a3: POP
000033a4: PUSH2 0x33af
000033a7: DUP12
000033a8: DUP3
000033a9: DUP13
000033aa: ADD
000033ab: PUSH2 0x32b3
000033ae: JUMP
000033af: JUMPDEST
000033b0: SWAP10
000033b1: SWAP13
000033b2: SWAP9
000033b3: SWAP12
000033b4: POP
000033b5: SWAP7
000033b6: SWAP10
000033b7: POP
000033b8: SWAP5
000033b9: SWAP8
000033ba: SWAP4
000033bb: SWAP7
000033bc: SWAP3
000033bd: SWAP6
000033be: SWAP5
000033bf: POP
000033c0: POP
000033c1: POP
000033c2: JUMP
000033c3: JUMPDEST
000033c4: DUP1
000033c5: ISZERO
000033c6: ISZERO
000033c7: DUP2
000033c8: EQ
000033c9: PUSH2 0x0e3a
000033cc: JUMPI
000033cd: PUSH1 0x00
000033cf: DUP1
000033d0: REVERT
000033d1: JUMPDEST
000033d2: PUSH1 0x00
000033d4: PUSH1 0x20
000033d6: DUP3
000033d7: DUP5
000033d8: SUB
000033d9: SLT
000033da: ISZERO
000033db: PUSH2 0x33e3
000033de: JUMPI
000033df: PUSH1 0x00
000033e1: DUP1
000033e2: REVERT
000033e3: JUMPDEST
000033e4: DUP2
000033e5: CALLDATALOAD
000033e6: PUSH2 0x2ca2
000033e9: DUP2
000033ea: PUSH2 0x33c3
000033ed: JUMP
000033ee: JUMPDEST
000033ef: PUSH1 0x00
000033f1: PUSH1 0x40
000033f3: DUP3
000033f4: DUP5
000033f5: SUB
000033f6: SLT
000033f7: ISZERO
000033f8: PUSH2 0x3400
000033fb: JUMPI
000033fc: PUSH1 0x00
000033fe: DUP1
000033ff: REVERT
00003400: JUMPDEST
00003401: POP
00003402: SWAP2
00003403: SWAP1
00003404: POP
00003405: JUMP
00003406: JUMPDEST
00003407: PUSH1 0x00
00003409: PUSH1 0x20
0000340b: DUP3
0000340c: DUP5
0000340d: SUB
0000340e: SLT
0000340f: ISZERO
00003410: PUSH2 0x3418
00003413: JUMPI
00003414: PUSH1 0x00
00003416: DUP1
00003417: REVERT
00003418: JUMPDEST
00003419: DUP2
0000341a: MLOAD
0000341b: PUSH2 0x2ca2
0000341e: DUP2
0000341f: PUSH2 0x33c3
00003422: JUMP
00003423: JUMPDEST
00003424: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00003445: PUSH1 0x00
00003447: MSTORE
00003448: PUSH1 0x11
0000344a: PUSH1 0x04
0000344c: MSTORE
0000344d: PUSH1 0x24
0000344f: PUSH1 0x00
00003451: REVERT
00003452: JUMPDEST
00003453: DUP2
00003454: DUP2
00003455: SUB
00003456: DUP2
00003457: DUP2
00003458: GT
00003459: ISZERO
0000345a: PUSH2 0x2864
0000345d: JUMPI
0000345e: PUSH2 0x2864
00003461: PUSH2 0x3423
00003464: JUMP
00003465: JUMPDEST
00003466: PUSH1 0x00
00003468: JUMPDEST
00003469: DUP4
0000346a: DUP2
0000346b: LT
0000346c: ISZERO
0000346d: PUSH2 0x3480
00003470: JUMPI
00003471: DUP2
00003472: DUP2
00003473: ADD
00003474: MLOAD
00003475: DUP4
00003476: DUP3
00003477: ADD
00003478: MSTORE
00003479: PUSH1 0x20
0000347b: ADD
0000347c: PUSH2 0x3468
0000347f: JUMP
00003480: JUMPDEST
00003481: POP
00003482: POP
00003483: PUSH1 0x00
00003485: SWAP2
00003486: ADD
00003487: MSTORE
00003488: JUMP
00003489: JUMPDEST
0000348a: PUSH1 0x20
0000348c: DUP2
0000348d: MSTORE
0000348e: PUSH1 0x00
00003490: DUP3
00003491: MLOAD
00003492: DUP1
00003493: PUSH1 0x20
00003495: DUP5
00003496: ADD
00003497: MSTORE
00003498: PUSH2 0x34a8
0000349b: DUP2
0000349c: PUSH1 0x40
0000349e: DUP6
0000349f: ADD
000034a0: PUSH1 0x20
000034a2: DUP8
000034a3: ADD
000034a4: PUSH2 0x3465
000034a7: JUMP
000034a8: JUMPDEST
000034a9: PUSH1 0x1f
000034ab: ADD
000034ac: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000034cd: AND
000034ce: SWAP2
000034cf: SWAP1
000034d0: SWAP2
000034d1: ADD
000034d2: PUSH1 0x40
000034d4: ADD
000034d5: SWAP3
000034d6: SWAP2
000034d7: POP
000034d8: POP
000034d9: JUMP
000034da: JUMPDEST
000034db: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000034fc: PUSH1 0x00
000034fe: MSTORE
000034ff: PUSH1 0x32
00003501: PUSH1 0x04
00003503: MSTORE
00003504: PUSH1 0x24
00003506: PUSH1 0x00
00003508: REVERT
00003509: JUMPDEST
0000350a: PUSH1 0x00
0000350c: DUP1
0000350d: DUP4
0000350e: CALLDATALOAD
0000350f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1
00003530: DUP5
00003531: CALLDATASIZE
00003532: SUB
00003533: ADD
00003534: DUP2
00003535: SLT
00003536: PUSH2 0x353e
00003539: JUMPI
0000353a: PUSH1 0x00
0000353c: DUP1
0000353d: REVERT
0000353e: JUMPDEST
0000353f: DUP4
00003540: ADD
00003541: DUP1
00003542: CALLDATALOAD
00003543: SWAP2
00003544: POP
00003545: PUSH8 0xffffffffffffffff
0000354e: DUP3
0000354f: GT
00003550: ISZERO
00003551: PUSH2 0x3559
00003554: JUMPI
00003555: PUSH1 0x00
00003557: DUP1
00003558: REVERT
00003559: JUMPDEST
0000355a: PUSH1 0x20
0000355c: ADD
0000355d: SWAP2
0000355e: POP
0000355f: PUSH1 0x05
00003561: DUP2
00003562: SWAP1
00003563: SHL
00003564: CALLDATASIZE
00003565: SUB
00003566: DUP3
00003567: SGT
00003568: ISZERO
00003569: PUSH2 0x32f8
0000356c: JUMPI
0000356d: PUSH1 0x00
0000356f: DUP1
00003570: REVERT
00003571: JUMPDEST
00003572: PUSH1 0x00
00003574: PUSH1 0x20
00003576: DUP3
00003577: DUP5
00003578: SUB
00003579: SLT
0000357a: ISZERO
0000357b: PUSH2 0x3583
0000357e: JUMPI
0000357f: PUSH1 0x00
00003581: DUP1
00003582: REVERT
00003583: JUMPDEST
00003584: POP
00003585: MLOAD
00003586: SWAP2
00003587: SWAP1
00003588: POP
00003589: JUMP
0000358a: JUMPDEST
0000358b: PUSH1 0x00
0000358d: PUSH6 0xffffffffffff
00003594: DUP1
00003595: DUP5
00003596: AND
00003597: DUP1
00003598: PUSH2 0x35ca
0000359b: JUMPI
0000359c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000035bd: PUSH1 0x00
000035bf: MSTORE
000035c0: PUSH1 0x12
000035c2: PUSH1 0x04
000035c4: MSTORE
000035c5: PUSH1 0x24
000035c7: PUSH1 0x00
000035c9: REVERT
000035ca: JUMPDEST
000035cb: SWAP3
000035cc: AND
000035cd: SWAP2
000035ce: SWAP1
000035cf: SWAP2
000035d0: DIV
000035d1: SWAP3
000035d2: SWAP2
000035d3: POP
000035d4: POP
000035d5: JUMP
000035d6: JUMPDEST
000035d7: PUSH6 0xffffffffffff
000035de: DUP2
000035df: DUP2
000035e0: AND
000035e1: DUP4
000035e2: DUP3
000035e3: AND
000035e4: MUL
000035e5: DUP1
000035e6: DUP3
000035e7: AND
000035e8: SWAP2
000035e9: SWAP1
000035ea: DUP3
000035eb: DUP2
000035ec: EQ
000035ed: PUSH2 0x35f8
000035f0: JUMPI
000035f1: PUSH2 0x35f8
000035f4: PUSH2 0x3423
000035f7: JUMP
000035f8: JUMPDEST
000035f9: POP
000035fa: POP
000035fb: SWAP3
000035fc: SWAP2
000035fd: POP
000035fe: POP
000035ff: JUMP
00003600: JUMPDEST
00003601: PUSH6 0xffffffffffff
00003608: DUP3
00003609: DUP2
0000360a: AND
0000360b: DUP3
0000360c: DUP3
0000360d: AND
0000360e: SUB
0000360f: SWAP1
00003610: DUP1
00003611: DUP3
00003612: GT
00003613: ISZERO
00003614: PUSH2 0x361f
00003617: JUMPI
00003618: PUSH2 0x361f
0000361b: PUSH2 0x3423
0000361e: JUMP
0000361f: JUMPDEST
00003620: POP
00003621: SWAP3
00003622: SWAP2
00003623: POP
00003624: POP
00003625: JUMP
00003626: JUMPDEST
00003627: PUSH6 0xffffffffffff
0000362e: DUP2
0000362f: DUP2
00003630: AND
00003631: DUP4
00003632: DUP3
00003633: AND
00003634: ADD
00003635: SWAP1
00003636: DUP1
00003637: DUP3
00003638: GT
00003639: ISZERO
0000363a: PUSH2 0x361f
0000363d: JUMPI
0000363e: PUSH2 0x361f
00003641: PUSH2 0x3423
00003644: JUMP
00003645: JUMPDEST
00003646: PUSH1 0x00
00003648: DUP3
00003649: MLOAD
0000364a: PUSH2 0x3657
0000364d: DUP2
0000364e: DUP5
0000364f: PUSH1 0x20
00003651: DUP8
00003652: ADD
00003653: PUSH2 0x3465
00003656: JUMP
00003657: JUMPDEST
00003658: SWAP2
00003659: SWAP1
0000365a: SWAP2
0000365b: ADD
0000365c: SWAP3
0000365d: SWAP2
0000365e: POP
0000365f: POP
00003660: JUMP
00003661: INVALID
00003662: COINBASE
00003663: PUSH5 0x6472657373
00003669: GASPRICE
0000366a: KECCAK256
0000366b: PUSH13 0x6f772d6c6576656c2064656c65
00003679: PUSH8 0x6174652063616c6c
00003682: KECCAK256
00003683: PUSH7 0x61696c6564a264
0000368b: PUSH10 0x706673582212202f9bf6
00003696: UNKNOWN(0xD3)
00003697: INVALID
00003698: UNKNOWN(0x22)
00003699: UNKNOWN(0x22)
0000369a: PUSH27 0x1eb63193d383ee8a2a7028c6e7138310b58b6d8d202688df64736f
000036b6: PUSH13

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high upgradeability codex Upgradeable proxy can be taken over if not initialized atomically 85 no
view
evidence_json
{
    "evidence": "`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.",
    "locations": [
        "contracts/contracts/Distributor.sol:150",
        "contracts/contracts/Distributor.sol:156",
        "contracts/contracts/utils/UUPSHelper.sol:53"
    ],
    "recommendation": "Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.",
    "exploit_scenario": "If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state."
}
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_id: 0x54e3265e4eea013244fc769a0f2c53910fc364c0629b5888d26e691b431c4407
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x54e3265e4eea013244fc769a0f2c53910fc364c0629b5888d26e691b431c4407",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xd9c98087",
            "selector": "0xd9c98087",
            "calldata_variants": [
                "0xd9c98087",
                "0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe57480e5",
            "selector": "0xe57480e5",
            "calldata_variants": [
                "0xe57480e5",
                "0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2f4eb26",
            "selector": "0xf2f4eb26",
            "calldata_variants": [
                "0xf2f4eb26",
                "0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd54b228",
            "selector": "0xfd54b228",
            "calldata_variants": [
                "0xfd54b228",
                "0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbdac7ca3",
            "selector": "0xbdac7ca3",
            "calldata_variants": [
                "0xbdac7ca3",
                "0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc748d261",
            "selector": "0xc748d261",
            "calldata_variants": [
                "0xc748d261",
                "0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcce80e7a",
            "selector": "0xcce80e7a",
            "calldata_variants": [
                "0xcce80e7a",
                "0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 11728,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [
        {
            "pc": 5436,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5468,
            "type": "tx_origin_used"
        }
    ],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xd9c98087",
            "selector": "0xd9c98087",
            "calldata_variants": [
                "0xd9c98087",
                "0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe57480e5",
            "selector": "0xe57480e5",
            "calldata_variants": [
                "0xe57480e5",
                "0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2f4eb26",
            "selector": "0xf2f4eb26",
            "calldata_variants": [
                "0xf2f4eb26",
                "0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd54b228",
            "selector": "0xfd54b228",
            "calldata_variants": [
                "0xfd54b228",
                "0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbdac7ca3",
            "selector": "0xbdac7ca3",
            "calldata_variants": [
                "0xbdac7ca3",
                "0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc748d261",
            "selector": "0xc748d261",
            "calldata_variants": [
                "0xc748d261",
                "0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcce80e7a",
            "selector": "0xcce80e7a",
            "calldata_variants": [
                "0xcce80e7a",
                "0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 5436,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5468,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8
call_targets: 0x0e6590f64a82cbc838b2a087281689de1a5bc8e0
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0e6590f64a82cbc838b2a087281689de1a5bc8e0"
    ],
    "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": "0xd9c98087",
            "selector": "0xd9c98087",
            "calldata_variants": [
                "0xd9c98087",
                "0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe57480e5",
            "selector": "0xe57480e5",
            "calldata_variants": [
                "0xe57480e5",
                "0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2f4eb26",
            "selector": "0xf2f4eb26",
            "calldata_variants": [
                "0xf2f4eb26",
                "0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd54b228",
            "selector": "0xfd54b228",
            "calldata_variants": [
                "0xfd54b228",
                "0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbdac7ca3",
            "selector": "0xbdac7ca3",
            "calldata_variants": [
                "0xbdac7ca3",
                "0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc748d261",
            "selector": "0xc748d261",
            "calldata_variants": [
                "0xc748d261",
                "0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcce80e7a",
            "selector": "0xcce80e7a",
            "calldata_variants": [
                "0xcce80e7a",
                "0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 12029,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [
        {
            "pc": 5436,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5468,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 1
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8
call_targets: 0x0e6590f64a82cbc838b2a087281689de1a5bc8e0
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x0e6590f64a82cbc838b2a087281689de1a5bc8e0"
    ],
    "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": "0xd9c98087",
            "selector": "0xd9c98087",
            "calldata_variants": [
                "0xd9c98087",
                "0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe57480e5",
            "selector": "0xe57480e5",
            "calldata_variants": [
                "0xe57480e5",
                "0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2f4eb26",
            "selector": "0xf2f4eb26",
            "calldata_variants": [
                "0xf2f4eb26",
                "0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd54b228",
            "selector": "0xfd54b228",
            "calldata_variants": [
                "0xfd54b228",
                "0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbdac7ca3",
            "selector": "0xbdac7ca3",
            "calldata_variants": [
                "0xbdac7ca3",
                "0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4d66de8",
            "selector": "0xc4d66de8",
            "calldata_variants": [
                "0xc4d66de8",
                "0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc748d261",
            "selector": "0xc748d261",
            "calldata_variants": [
                "0xc748d261",
                "0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcce80e7a",
            "selector": "0xcce80e7a",
            "calldata_variants": [
                "0xcce80e7a",
                "0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 12029,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": [
        {
            "pc": 5436,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 5468,
            "type": "tx_origin_used"
        }
    ]
}
low other codex Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens 65 no
view
evidence_json
{
    "evidence": "`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.",
    "locations": [
        "contracts/contracts/Distributor.sol:241",
        "contracts/contracts/Distributor.sol:254",
        "contracts/contracts/Distributor.sol:258"
    ],
    "recommendation": "Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.",
    "exploit_scenario": "If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely."
}
low access_control codex `tx.origin` allows bypassing operator-only claim policy 65 no
view
evidence_json
{
    "evidence": "Claim authorization uses `tx.origin` as an alternative to operator approval.",
    "locations": [
        "contracts/contracts/Distributor.sol:186"
    ],
    "recommendation": "Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.",
    "exploit_scenario": "A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user\u2019s gas) without explicit operator approval."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 5
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 13
}