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

Analysis Run

9669f033-142c-498f-a5e9-51ea916b6a54

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 6:48 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
Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain
crit 0 high 0 direct contract
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
31318 report.consolidate complete 1 / 1 3 months ago
110906 artifact.fetch complete 1 / 3 1 week ago
110907 tool.cast_disasm complete 1 / 3 1 week ago
110908 analysis.bundle complete 1 / 3 1 week ago
110909 capability.graph complete 1 / 3 1 week ago
110910 detector.run complete 1 / 3 1 week ago
110911 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.
View stderr
[codex:485441] OpenAI Codex v0.77.0 (research preview)
[codex:485441] --------
[codex:485441] workdir: /tmp/codex-multi-948ldl5w
[codex:485441] model: gpt-5.2-codex
[codex:485441] provider: openai
[codex:485441] approval: never
[codex:485441] sandbox: read-only
[codex:485441] reasoning effort: xhigh
[codex:485441] reasoning summaries: auto
[codex:485441] session id: 019b8002-f45e-73a0-8b97-3e28ddbd6d17
[codex:485441] --------
[codex:485441] user
[codex:485441] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:485441] 
[codex:485441] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:485441] 
[codex:485441] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:485441] - Gas inefficiency, code quality, naming, or best practices
[codex:485441] - Theoretical vulnerabilities without a clear extraction path
[codex:485441] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:485441] - Front-running unless it enables theft beyond MEV
[codex:485441] - DoS, griefing, or issues that don't result in attacker profit
[codex:485441] - Missing events, view function issues, or informational findings
[codex:485441] 
[codex:485441] HIGH-VALUE PATTERNS TO HUNT:
[codex:485441] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:485441] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:485441] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:485441] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:485441] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:485441] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:485441] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:485441] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:485441] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:485441] 
[codex:485441] For each finding, you MUST provide:
[codex:485441] 1. Exact file and line numbers of vulnerable code
[codex:485441] 2. Step-by-step exploit transaction sequence
[codex:485441] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:485441] 
[codex:485441] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:485441] 
[codex:485441] Output MUST be valid JSON matching the provided schema.
[codex:485441] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:485441] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:485441] mcp startup: no servers
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Preparing to explore project files**
[codex:485441] exec
[codex:485441] /bin/bash -lc ls in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] AUDIT_BUNDLE.txt
[codex:485441] codex-output-schema.json
[codex:485441] contracts
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Reading AUDIT_BUNDLE.txt**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:485441] 
[codex:485441] ================================================================================
[codex:485441] FILE: contracts/AdditionalMath.sol
[codex:485441] ================================================================================
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441] 
[codex:485441] pragma solidity ^0.7.0;
[codex:485441] 
[codex:485441] 
[codex:485441] import "./SafeMath.sol";
[codex:485441] 
[codex:485441] 
[codex:485441] /**
[codex:485441] * @notice Additional math operations
[codex:485441] */
[codex:485441] library AdditionalMath {
[codex:485441]     using SafeMath for uint256;
[codex:485441] 
[codex:485441]     function max16(uint16 a, uint16 b) internal pure returns (uint16) {
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Searching for exploit patterns**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "function|withdraw|claim|refund|mint|burn|transfer" contracts' in /tmp/codex-multi-948ldl5w succeeded in 9ms:
[codex:485441] contracts/SafeERC20.sol:19:    function safeTransfer(IERC20 token, address to, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:20:        require(token.transfer(to, value));
[codex:485441] contracts/SafeERC20.sol:23:    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:24:        require(token.transferFrom(from, to, value));
[codex:485441] contracts/SafeERC20.sol:27:    function safeApprove(IERC20 token, address spender, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:35:    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
[codex:485441] contracts/SafeERC20.sol:40:    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
[codex:485441] contracts/IERC20.sol:11:    function transfer(address to, uint256 value) external returns (bool);
[codex:485441] contracts/IERC20.sol:13:    function approve(address spender, uint256 value) external returns (bool);
[codex:485441] contracts/IERC20.sol:15:    function transferFrom(address from, address to, uint256 value) external returns (bool);
[codex:485441] contracts/IERC20.sol:17:    function totalSupply() external view returns (uint256);
[codex:485441] contracts/IERC20.sol:19:    function balanceOf(address who) external view returns (uint256);
[codex:485441] contracts/IERC20.sol:21:    function allowance(address owner, address spender) external view returns (uint256);
[codex:485441] contracts/Math.sol:14:    function max(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:485441] contracts/Math.sol:21:    function min(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:485441] contracts/Math.sol:30:    function average(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:485441] contracts/Bits.sol:18:    function toggleBit(uint256 self, uint8 index) internal pure returns (uint256) {
[codex:485441] contracts/Bits.sol:25:    function bit(uint256 self, uint8 index) internal pure returns (uint8) {
[codex:485441] contracts/Bits.sol:34:    function bitSet(uint256 self, uint8 index) internal pure returns (bool) {
[codex:485441] contracts/WorkLock.sol:27:    event Claimed(address indexed sender, uint256 claimedTokens);
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing contract functions for reentrancy and authorization**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,220p' contracts/Upgradeable.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441] 
[codex:485441] pragma solidity ^0.7.0;
[codex:485441] 
[codex:485441] 
[codex:485441] import "./Ownable.sol";
[codex:485441] 
[codex:485441] 
[codex:485441] /**
[codex:485441] * @notice Base contract for upgradeable contract
[codex:485441] * @dev Inherited contract should implement verifyState(address) method by checking storage variables
[codex:485441] * (see verifyState(address) in Dispatcher). Also contract should implement finishUpgrade(address)
[codex:485441] * if it is using constructor parameters by coping this parameters to the dispatcher storage
[codex:485441] */
[codex:485441] abstract contract Upgradeable is Ownable {
[codex:485441] 
[codex:485441]     event StateVerified(address indexed testTarget, address sender);
[codex:485441]     event UpgradeFinished(address indexed target, address sender);
[codex:485441] 
[codex:485441]     /**
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Investigating delegatecall usage**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "delegateGet" contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 1593:    function delegateGetStakerInfo(address _target, bytes32 _staker)
[codex:485441] 1596:        bytes32 memoryAddress = delegateGetData(_target, this.stakerInfo.selector, 1, _staker, 0);
[codex:485441] 1605:    function delegateGetSubStakeInfo(address _target, bytes32 _staker, uint256 _index)
[codex:485441] 1608:        bytes32 memoryAddress = delegateGetData(
[codex:485441] 1618:    function delegateGetPastDowntime(address _target, bytes32 _staker, uint256 _index)
[codex:485441] 1621:        bytes32 memoryAddress = delegateGetData(
[codex:485441] 1631:        require(address(delegateGet(_testTarget, this.policyManager.selector)) == address(policyManager));
[codex:485441] 1632:        require(address(delegateGet(_testTarget, this.adjudicator.selector)) == address(adjudicator));
[codex:485441] 1633:        require(address(delegateGet(_testTarget, this.workLock.selector)) == address(workLock));
[codex:485441] 1634:        require(delegateGet(_testTarget, this.lockedPerPeriod.selector,
[codex:485441] 1636:        require(address(delegateGet(_testTarget, this.stakerFromWorker.selector, bytes32(0))) ==
[codex:485441] 1639:        require(delegateGet(_testTarget, this.getStakersLength.selector) == stakers.length);
[codex:485441] 1644:        require(address(uint160(delegateGet(_testTarget, this.stakers.selector, 0))) == stakerAddress);
[codex:485441] 1647:        StakerInfo memory infoToCheck = delegateGetStakerInfo(_testTarget, staker);
[codex:485441] 1658:        require(delegateGet(_testTarget, this.getPastDowntimeLength.selector, staker) ==
[codex:485441] 1662:            Downtime memory downtimeToCheck = delegateGetPastDowntime(_testTarget, staker, i);
[codex:485441] 1667:        require(delegateGet(_testTarget, this.getSubStakesLength.selector, staker) == info.subStakes.length);
[codex:485441] 1670:            SubStakeInfo memory subStakeInfoToCheck = delegateGetSubStakeInfo(_testTarget, staker, i);
[codex:485441] 1679:        require(delegateGet(_testTarget, this.totalStakedForAt.selector, staker, bytes32(block.number)) ==
[codex:485441] 1681:        require(delegateGet(_testTarget, this.totalStakedAt.selector, bytes32(block.number)) ==
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Inspecting StakingEscrow for issues**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1040,1140p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441]         require(uint32(lastPeriod - currentPeriod) + _periods >= minLockedPeriods);
[codex:485441]         emit Locked(msg.sender, subStake.lockedValue, lastPeriod + 1, _periods);
[codex:485441]         emit Prolonged(msg.sender, subStake.lockedValue, lastPeriod, _periods);
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Merge two sub-stakes into one if their last periods are equal
[codex:485441]     * @dev It's possible that both sub-stakes will be active after this transaction.
[codex:485441]     * But only one of them will be active until next call `commitToNextPeriod` (in the next period)
[codex:485441]     * @param _index1 Index of the first sub-stake
[codex:485441]     * @param _index2 Index of the second sub-stake
[codex:485441]     */
[codex:485441]     function mergeStake(uint256 _index1, uint256 _index2) external onlyStaker {
[codex:485441]         require(_index1 != _index2); // must be different sub-stakes
[codex:485441] 
[codex:485441]         StakerInfo storage info = stakerInfo[msg.sender];
[codex:485441]         SubStakeInfo storage subStake1 = info.subStakes[_index1];
[codex:485441]         SubStakeInfo storage subStake2 = info.subStakes[_index2];
[codex:485441]         uint16 currentPeriod = getCurrentPeriod();
[codex:485441] 
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing deposit and withdrawal functions**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '700,860p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441]                 uint256 value =  _values[j];
[codex:485441]                 uint16 periods = _periods[j];
[codex:485441]                 require(value >= minAllowableLockedTokens && periods >= minLockedPeriods);
[codex:485441]                 info.value = info.value.add(value);
[codex:485441]                 info.subStakes.push(SubStakeInfo(nextPeriod, 0, periods, uint128(value)));
[codex:485441]                 sumValue = sumValue.add(value);
[codex:485441]                 emit Deposited(staker, value, periods);
[codex:485441]                 emit Locked(staker, value, nextPeriod, periods);
[codex:485441]             }
[codex:485441]             require(info.value <= maxAllowableLockedTokens);
[codex:485441]             info.history.addSnapshot(info.value);
[codex:485441] 
[codex:485441]             if (_lockReStakeUntilPeriod >= nextPeriod) {
[codex:485441]                 forceLockReStake(staker, info, _lockReStakeUntilPeriod);
[codex:485441]             }
[codex:485441]         }
[codex:485441]         require(j == subStakesLength);
[codex:485441]         uint256 lastGlobalBalance = uint256(balanceHistory.lastValue());
[codex:485441]         balanceHistory.addSnapshot(lastGlobalBalance + sumValue);
[codex:485441]         token.safeTransferFrom(msg.sender, address(this), sumValue);
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing potential reentrancy and access control issues**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '430,520p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441]     */
[codex:485441]     function getWorkerFromStaker(address _staker) external view returns (address) {
[codex:485441]         return stakerInfo[_staker].worker;
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Get work that completed by the staker
[codex:485441]     */
[codex:485441]     function getCompletedWork(address _staker) external view returns (uint256) {
[codex:485441]         return stakerInfo[_staker].completedWork;
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Find index of downtime structure that includes specified period
[codex:485441]     * @dev If specified period is outside all downtime periods, the length of the array will be returned
[codex:485441]     * @param _staker Staker
[codex:485441]     * @param _period Specified period number
[codex:485441]     */
[codex:485441]     function findIndexOfPastDowntime(address _staker, uint16 _period) external view returns (uint256 index) {
[codex:485441]         StakerInfo storage info = stakerInfo[_staker];
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Verifying workLock restrictions**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "depositFromWorkLock" -n contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 564:    function depositFromWorkLock(
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '548,620p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441]             emit ReStakeSet(_staker, true);
[codex:485441]         }
[codex:485441]         // lock `reStake` parameter if it's not locked or locked for too short duration
[codex:485441]         if (_lockReStakeUntilPeriod > _info.lockReStakeUntilPeriod) {
[codex:485441]             _info.lockReStakeUntilPeriod = _lockReStakeUntilPeriod;
[codex:485441]             emit ReStakeLocked(_staker, _lockReStakeUntilPeriod);
[codex:485441]         }
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Deposit tokens and lock `reStake` parameter from WorkLock contract
[codex:485441]     * @param _staker Staker address
[codex:485441]     * @param _value Amount of tokens to deposit
[codex:485441]     * @param _periods Amount of periods during which tokens will be locked
[codex:485441]     * and number of period after which `reStake` can be changed
[codex:485441]     */
[codex:485441]     function depositFromWorkLock(
[codex:485441]         address _staker,
[codex:485441]         uint256 _value,
[codex:485441]         uint16 _periods
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Investigating depositFromWorkLock restriction**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,120p' contracts/NuCypherToken.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441] 
[codex:485441] pragma solidity ^0.7.0;
[codex:485441] 
[codex:485441] 
[codex:485441] import "./ERC20.sol";
[codex:485441] import "./ERC20Detailed.sol";
[codex:485441] 
[codex:485441] 
[codex:485441] /**
[codex:485441] * @title NuCypher token
[codex:485441] * @notice ERC20 token
[codex:485441] * @dev Optional approveAndCall() functionality to notify a contract if an approve() has occurred.
[codex:485441] */
[codex:485441] contract NuCypherToken is ERC20, ERC20Detailed('NuCypher', 'NU', 18) {
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Set amount of tokens
[codex:485441]     * @param _totalSupplyOfTokens Total number of tokens
[codex:485441]     */
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Investigating potential reentrancy in WorkLock**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,220p' contracts/WorkLock.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441] 
[codex:485441] pragma solidity ^0.7.0;
[codex:485441] 
[codex:485441] 
[codex:485441] import "./SafeMath.sol";
[codex:485441] import "./SafeERC20.sol";
[codex:485441] import "./Address.sol";
[codex:485441] import "./Ownable.sol";
[codex:485441] import "./NuCypherToken.sol";
[codex:485441] import "./StakingEscrow.sol";
[codex:485441] import "./AdditionalMath.sol";
[codex:485441] 
[codex:485441] 
[codex:485441] /**
[codex:485441] * @notice The WorkLock distribution contract
[codex:485441] */
[codex:485441] contract WorkLock is Ownable {
[codex:485441]     using SafeERC20 for NuCypherToken;
[codex:485441]     using SafeMath for uint256;
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing potential reentrancy and access checks**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "modifier onlyStaker" -n contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 214:    modifier onlyStaker()
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '200,240p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441]         )
[codex:485441]     {
[codex:485441]         // constant `1` in the expression `_minLockedPeriods > 1` uses to simplify the `lock` method
[codex:485441]         require(_minLockedPeriods > 1 && _maxAllowableLockedTokens != 0);
[codex:485441]         minLockedPeriods = _minLockedPeriods;
[codex:485441]         minAllowableLockedTokens = _minAllowableLockedTokens;
[codex:485441]         maxAllowableLockedTokens = _maxAllowableLockedTokens;
[codex:485441]         minWorkerPeriods = _minWorkerPeriods;
[codex:485441]         isTestContract = _isTestContract;
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @dev Checks the existence of a staker in the contract
[codex:485441]     */
[codex:485441]     modifier onlyStaker()
[codex:485441]     {
[codex:485441]         StakerInfo storage info = stakerInfo[msg.sender];
[codex:485441]         require(info.value > 0 || info.nextCommittedPeriod != 0);
[codex:485441]         _;
[codex:485441]     }
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing potential staking attack vectors**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '140,260p' contracts/Issuer.sol" in /tmp/codex-multi-948ldl5w succeeded in 7ms:
[codex:485441]     function getCurrentPeriod() public view returns (uint16) {
[codex:485441]         return uint16(block.timestamp / secondsPerPeriod);
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Initialize reserved tokens for reward
[codex:485441]     */
[codex:485441]     function initialize(uint256 _reservedReward, address _sourceOfFunds) external onlyOwner {
[codex:485441]         require(currentMintingPeriod == 0);
[codex:485441]         // Reserved reward must be sufficient for at least one period of the first phase
[codex:485441]         require(firstPhaseMaxIssuance <= _reservedReward);
[codex:485441]         currentMintingPeriod = getCurrentPeriod();
[codex:485441]         currentPeriodSupply = totalSupply - uint128(_reservedReward);
[codex:485441]         previousPeriodSupply = currentPeriodSupply;
[codex:485441]         token.safeTransferFrom(_sourceOfFunds, address(this), _reservedReward);
[codex:485441]         emit Initialized(_reservedReward);
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Function to mint tokens for one period.
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing potential mint exploit**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1160,1305p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441]             }
[codex:485441]             subStake.periods--;
[codex:485441]             if (subStake.periods == 0) {
[codex:485441]                 subStake.lastPeriod = _nextPeriod;
[codex:485441]             }
[codex:485441]         }
[codex:485441]     }
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Mint tokens for previous periods if staker locked their tokens and made a commitment
[codex:485441]     */
[codex:485441]     function mint() external onlyStaker {
[codex:485441]         // save last committed period to the storage if both periods will be empty after minting
[codex:485441]         // because we won't be able to calculate last committed period
[codex:485441]         // see getLastCommittedPeriod(address)
[codex:485441]         StakerInfo storage info = stakerInfo[msg.sender];
[codex:485441]         uint16 previousPeriod = getCurrentPeriod() - 1;
[codex:485441]         if (info.nextCommittedPeriod <= previousPeriod && info.nextCommittedPeriod != 0) {
[codex:485441]             info.lastCommittedPeriod = info.nextCommittedPeriod;
[codex:485441]         }
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Assessing potential staking exploits**
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "initialize" contracts/StakingEscrow.sol' in /tmp/codex-multi-948ldl5w exited 1 in 6ms:
[codex:485441] 
[codex:485441] 
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing potential underflow and refund issues**
[codex:485441] thinking
[codex:485441] **Evaluating refund calculation edge cases and access control**
[codex:485441] 
[codex:485441] I’m working through whether the refund math can underflow or break given certain inputs, and if anyone can call forceRefund to affect others’ deposits without real profit. The formulas seem designed to avoid underflows, and refunds match deposits, so no clear exploit emerges, but I’m curious if missing input checks or access controls could cause unexpected behavior.
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "interface PolicyManager|PolicyManagerInterface|AdjudicatorInterface" contracts' in /tmp/codex-multi-948ldl5w succeeded in 9ms:
[codex:485441] contracts/StakingEscrow.sol:17:interface PolicyManagerInterface {
[codex:485441] contracts/StakingEscrow.sol:28:interface AdjudicatorInterface {
[codex:485441] contracts/StakingEscrow.sol:144:    PolicyManagerInterface public policyManager;
[codex:485441] contracts/StakingEscrow.sol:145:    AdjudicatorInterface public adjudicator;
[codex:485441] contracts/StakingEscrow.sol:225:    function setPolicyManager(PolicyManagerInterface _policyManager) external onlyOwner {
[codex:485441] contracts/StakingEscrow.sol:236:    function setAdjudicator(AdjudicatorInterface _adjudicator) external onlyOwner {
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing upgrade-time delegatecall risks**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1580,1705p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] 
[codex:485441]     function totalStakedAt(uint256 _blockNumber) public view override returns (uint256){
[codex:485441]         return balanceHistory.getValueAt(_blockNumber);
[codex:485441]     }
[codex:485441] 
[codex:485441]     function supportsHistory() external pure override returns (bool){
[codex:485441]         return true;
[codex:485441]     }
[codex:485441] 
[codex:485441]     //------------------------Upgradeable------------------------
[codex:485441]     /**
[codex:485441]     * @dev Get StakerInfo structure by delegatecall
[codex:485441]     */
[codex:485441]     function delegateGetStakerInfo(address _target, bytes32 _staker)
[codex:485441]         internal returns (StakerInfo memory result)
[codex:485441]     {
[codex:485441]         bytes32 memoryAddress = delegateGetData(_target, this.stakerInfo.selector, 1, _staker, 0);
[codex:485441]         assembly {
[codex:485441]             result := memoryAddress
[codex:485441]         }
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing upgrade function vulnerabilities**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,60p' contracts/StakingEscrow.sol" in /tmp/codex-multi-948ldl5w succeeded in 5ms:
[codex:485441] // SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441] 
[codex:485441] pragma solidity ^0.7.0;
[codex:485441] 
[codex:485441] 
[codex:485441] import "./IERC900History.sol";
[codex:485441] import "./Issuer.sol";
[codex:485441] import "./Bits.sol";
[codex:485441] import "./Snapshot.sol";
[codex:485441] import "./SafeMath.sol";
[codex:485441] import "./SafeERC20.sol";
[codex:485441] 
[codex:485441] 
[codex:485441] /**
[codex:485441] * @notice PolicyManager interface
[codex:485441] */
[codex:485441] interface PolicyManagerInterface {
[codex:485441]     function register(address _node, uint16 _period) external;
[codex:485441]     function updateFee(address _node, uint16 _period) external;
[codex:485441]     function escrow() external view returns (address);
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing upgradeable pattern and delegatecall risks**
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '1,120p' contracts/Ownable.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] // SPDX-License-Identifier: MIT
[codex:485441] 
[codex:485441] pragma solidity ^0.7.0;
[codex:485441] 
[codex:485441] 
[codex:485441] /**
[codex:485441]  * @title Ownable
[codex:485441]  * @dev The Ownable contract has an owner address, and provides basic authorization control
[codex:485441]  * functions, this simplifies the implementation of "user permissions".
[codex:485441]  */
[codex:485441] abstract contract Ownable {
[codex:485441]     address private _owner;
[codex:485441] 
[codex:485441]     event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
[codex:485441] 
[codex:485441]     /**
[codex:485441]      * @dev The Ownable constructor sets the original `owner` of the contract to the sender
[codex:485441]      * account.
[codex:485441]      */
[codex:485441]     constructor () {
[codex:485441] 
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing delegatecall upgrade vulnerability**
[codex:485441] thinking
[codex:485441] **Reviewing numeric edge cases and access controls**
[codex:485441] 
[codex:485441] I'm inspecting potential underflow or division-by-zero issues in math and bidding functions, confirming protections seem in place. I’m also checking for access control gaps on verifyState and finishUpgrade, noting delegatecall remains the main suspect while these functions appear safe but could disrupt contract state during upgrades.
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg -n "verifyState" -n contracts/Issuer.sol' in /tmp/codex-multi-948ldl5w succeeded in 8ms:
[codex:485441] 240:    /// @dev the `onlyWhileUpgrading` modifier works through a call to the parent `verifyState`
[codex:485441] 241:    function verifyState(address _testTarget) public override virtual {
[codex:485441] 242:        super.verifyState(_testTarget);
[codex:485441] exec
[codex:485441] /bin/bash -lc "sed -n '232,260p' contracts/Issuer.sol" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441] 
[codex:485441]     /**
[codex:485441]     * @notice Returns the number of tokens that can be minted
[codex:485441]     */
[codex:485441]     function getReservedReward() public view returns (uint256) {
[codex:485441]         return totalSupply - currentPeriodSupply;
[codex:485441]     }
[codex:485441] 
[codex:485441]     /// @dev the `onlyWhileUpgrading` modifier works through a call to the parent `verifyState`
[codex:485441]     function verifyState(address _testTarget) public override virtual {
[codex:485441]         super.verifyState(_testTarget);
[codex:485441]         require(uint16(delegateGet(_testTarget, this.currentMintingPeriod.selector)) == currentMintingPeriod);
[codex:485441]         require(uint128(delegateGet(_testTarget, this.previousPeriodSupply.selector)) == previousPeriodSupply);
[codex:485441]         require(uint128(delegateGet(_testTarget, this.currentPeriodSupply.selector)) == currentPeriodSupply);
[codex:485441]     }
[codex:485441] 
[codex:485441] }
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing potential upgradeability exploit**
[codex:485441] exec
[codex:485441] /bin/bash -lc "nl -ba contracts/Upgradeable.sol | sed -n '1,200p'" in /tmp/codex-multi-948ldl5w succeeded in 7ms:
[codex:485441]      1	// SPDX-License-Identifier: AGPL-3.0-or-later
[codex:485441]      2	
[codex:485441]      3	pragma solidity ^0.7.0;
[codex:485441]      4	
[codex:485441]      5	
[codex:485441]      6	import "./Ownable.sol";
[codex:485441]      7	
[codex:485441]      8	
[codex:485441]      9	/**
[codex:485441]     10	* @notice Base contract for upgradeable contract
[codex:485441]     11	* @dev Inherited contract should implement verifyState(address) method by checking storage variables
[codex:485441]     12	* (see verifyState(address) in Dispatcher). Also contract should implement finishUpgrade(address)
[codex:485441]     13	* if it is using constructor parameters by coping this parameters to the dispatcher storage
[codex:485441]     14	*/
[codex:485441]     15	abstract contract Upgradeable is Ownable {
[codex:485441]     16	
[codex:485441]     17	    event StateVerified(address indexed testTarget, address sender);
[codex:485441]     18	    event UpgradeFinished(address indexed target, address sender);
[codex:485441]     19	
[codex:485441]     20	    /**
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Adding line numbers to verifyState**
[codex:485441] exec
[codex:485441] /bin/bash -lc "nl -ba contracts/StakingEscrow.sol | sed -n '1580,1685p'" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441]   1580	
[codex:485441]   1581	    function totalStakedAt(uint256 _blockNumber) public view override returns (uint256){
[codex:485441]   1582	        return balanceHistory.getValueAt(_blockNumber);
[codex:485441]   1583	    }
[codex:485441]   1584	
[codex:485441]   1585	    function supportsHistory() external pure override returns (bool){
[codex:485441]   1586	        return true;
[codex:485441]   1587	    }
[codex:485441]   1588	
[codex:485441]   1589	    //------------------------Upgradeable------------------------
[codex:485441]   1590	    /**
[codex:485441]   1591	    * @dev Get StakerInfo structure by delegatecall
[codex:485441]   1592	    */
[codex:485441]   1593	    function delegateGetStakerInfo(address _target, bytes32 _staker)
[codex:485441]   1594	        internal returns (StakerInfo memory result)
[codex:485441]   1595	    {
[codex:485441]   1596	        bytes32 memoryAddress = delegateGetData(_target, this.stakerInfo.selector, 1, _staker, 0);
[codex:485441]   1597	        assembly {
[codex:485441]   1598	            result := memoryAddress
[codex:485441]   1599	        }
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Reviewing relevant code lines for verification**
[codex:485441] exec
[codex:485441] /bin/bash -lc "nl -ba contracts/Issuer.sol | sed -n '228,260p'" in /tmp/codex-multi-948ldl5w succeeded in 6ms:
[codex:485441]    228	        token.safeTransferFrom(msg.sender, address(this), _value);
[codex:485441]    229	        unMint(_value);
[codex:485441]    230	        emit Donated(msg.sender, _value);
[codex:485441]    231	    }
[codex:485441]    232	
[codex:485441]    233	    /**
[codex:485441]    234	    * @notice Returns the number of tokens that can be minted
[codex:485441]    235	    */
[codex:485441]    236	    function getReservedReward() public view returns (uint256) {
[codex:485441]    237	        return totalSupply - currentPeriodSupply;
[codex:485441]    238	    }
[codex:485441]    239	
[codex:485441]    240	    /// @dev the `onlyWhileUpgrading` modifier works through a call to the parent `verifyState`
[codex:485441]    241	    function verifyState(address _testTarget) public override virtual {
[codex:485441]    242	        super.verifyState(_testTarget);
[codex:485441]    243	        require(uint16(delegateGet(_testTarget, this.currentMintingPeriod.selector)) == currentMintingPeriod);
[codex:485441]    244	        require(uint128(delegateGet(_testTarget, this.previousPeriodSupply.selector)) == previousPeriodSupply);
[codex:485441]    245	        require(uint128(delegateGet(_testTarget, this.currentPeriodSupply.selector)) == currentPeriodSupply);
[codex:485441]    246	    }
[codex:485441]    247	
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing delegatecall exploit scenario**
[codex:485441] 
[codex:485441] I'm outlining a potential exploit involving delegatecall in upgradeable contracts, focusing on how a malicious contract set as a target during an upgrade window could run arbitrary code to drain tokens while passing state checks by returning expected values; this relies on assumptions about upgrade atomicity and the upgrade process, which I can't fully verify without dispatcher code, but the scenario highlights risks if verifyState can be called during an upgrade phase by attackers.
[codex:485441] exec
[codex:485441] /bin/bash -lc 'rg --files contracts' in /tmp/codex-multi-948ldl5w succeeded in 9ms:
[codex:485441] contracts/WorkLock.sol
[codex:485441] contracts/NuCypherToken.sol
[codex:485441] contracts/Address.sol
[codex:485441] contracts/Upgradeable.sol
[codex:485441] contracts/SafeMath.sol
[codex:485441] contracts/AdditionalMath.sol
[codex:485441] contracts/IERC900History.sol
[codex:485441] contracts/Ownable.sol
[codex:485441] contracts/StakingEscrow.sol
[codex:485441] contracts/SafeERC20.sol
[codex:485441] contracts/IERC20.sol
[codex:485441] contracts/Math.sol
[codex:485441] contracts/Bits.sol
[codex:485441] contracts/Snapshot.sol
[codex:485441] contracts/Issuer.sol
[codex:485441] contracts/ERC20Detailed.sol
[codex:485441] contracts/ERC20.sol
[codex:485441] 
[codex:485441] thinking
[codex:485441] **Analyzing upgradeability delegatecall risk**
[codex:485441] codex
[codex:485441] {"no_findings":false,"summary":"Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.","findings":[{"severity":"critical","category":"upgradeability","title":"Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain","exploit_scenario":"1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker’s contract, executing the token transfer in the proxy’s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer).","recommendation":"Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.","evidence":"`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy’s context during upgrades.","locations":["contracts/Upgradeable.sol:62","contracts/Upgradeable.sol:83","contracts/Upgradeable.sol:101","contracts/StakingEscrow.sol:1628","contracts/StakingEscrow.sol:1631"]}]}
[codex:485441] tokens used
[codex:485441] 95,517
[codex:485441] {"no_findings":false,"summary":"Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.","findings":[{"severity":"critical","category":"upgradeability","title":"Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain","exploit_scenario":"1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker’s contract, executing the token transfer in the proxy’s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer).","recommendation":"Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.","evidence":"`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy’s context during upgrades.","locations":["contracts/Upgradeable.sol:62","contracts/Upgradeable.sol:83","contracts/Upgradeable.sol:101","contracts/StakingEscrow.sol:1628","contracts/StakingEscrow.sol:1631"]}]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T18:48:32.446931+00:00",
        "returncode": 0
    },
    "summary": "Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.",
    "raw_final": {
        "summary": "Found an upgrade-window delegatecall gadget that allows arbitrary code execution and token drain during upgrades.",
        "findings": [
            {
                "title": "Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain",
                "category": "upgradeability",
                "evidence": "`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy\u2019s context during upgrades.",
                "severity": "critical",
                "locations": [
                    "contracts/Upgradeable.sol:62",
                    "contracts/Upgradeable.sol:83",
                    "contracts/Upgradeable.sol:101",
                    "contracts/StakingEscrow.sol:1628",
                    "contracts/StakingEscrow.sol:1631"
                ],
                "recommendation": "Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.",
                "exploit_scenario": "1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker\u2019s contract, executing the token transfer in the proxy\u2019s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer)."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
9
EXT*/BALANCE
8
Total opcodes
5776
Flags
heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x021a
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x87a15dc9
00000019: GT
0000001a: PUSH2 0x0123
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xb15cf964
00000024: GT
00000025: PUSH2 0x00ab
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xe1fe7d23
0000002f: GT
00000030: PUSH2 0x006f
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xe1fe7d23
0000003a: EQ
0000003b: PUSH2 0x068b
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe2fdcc17
00000045: EQ
00000046: PUSH2 0x06b5
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2fde38b
00000050: EQ
00000051: PUSH2 0x06ca
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xfc0c546a
0000005b: EQ
0000005c: PUSH2 0x06fd
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0xfc0e74d1
00000066: EQ
00000067: PUSH2 0x0712
0000006a: JUMPI
0000006b: PUSH2 0x021a
0000006e: JUMP
0000006f: JUMPDEST
00000070: DUP1
00000071: PUSH4 0xb15cf964
00000076: EQ
00000077: PUSH2 0x0590
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0xbc859f44
00000081: EQ
00000082: PUSH2 0x05a5
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xbe7ff580
0000008c: EQ
0000008d: PUSH2 0x05cf
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0xcbce49ed
00000097: EQ
00000098: PUSH2 0x05e4
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0xcff29dfd
000000a2: EQ
000000a3: PUSH2 0x0661
000000a6: JUMPI
000000a7: PUSH2 0x021a
000000aa: JUMP
000000ab: JUMPDEST
000000ac: DUP1
000000ad: PUSH4 0x8da5cb5b
000000b2: GT
000000b3: PUSH2 0x00f2
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x8da5cb5b
000000bd: EQ
000000be: PUSH2 0x04f6
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x8f32d59b
000000c8: EQ
000000c9: PUSH2 0x0527
000000cc: JUMPI
000000cd: DUP1
000000ce: PUSH4 0x9435c887
000000d3: EQ
000000d4: PUSH2 0x053c
000000d7: JUMPI
000000d8: DUP1
000000d9: PUSH4 0x9b51ac85
000000de: EQ
000000df: PUSH2 0x0551
000000e2: JUMPI
000000e3: DUP1
000000e4: PUSH4 0xa4c89322
000000e9: EQ
000000ea: PUSH2 0x0566
000000ed: JUMPI
000000ee: PUSH2 0x021a
000000f1: JUMP
000000f2: JUMPDEST
000000f3: DUP1
000000f4: PUSH4 0x87a15dc9
000000f9: EQ
000000fa: PUSH2 0x048e
000000fd: JUMPI
000000fe: DUP1
000000ff: PUSH4 0x88657c7a
00000104: EQ
00000105: PUSH2 0x04a3
00000108: JUMPI
00000109: DUP1
0000010a: PUSH4 0x897db45c
0000010f: EQ
00000110: PUSH2 0x04cc
00000113: JUMPI
00000114: DUP1
00000115: PUSH4 0x8cab6c4f
0000011a: EQ
0000011b: PUSH2 0x04e1
0000011e: JUMPI
0000011f: PUSH2 0x021a
00000122: JUMP
00000123: JUMPDEST
00000124: DUP1
00000125: PUSH4 0x5bf997f5
0000012a: GT
0000012b: PUSH2 0x01a6
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0x715018a6
00000135: GT
00000136: PUSH2 0x0175
00000139: JUMPI
0000013a: DUP1
0000013b: PUSH4 0x715018a6
00000140: EQ
00000141: PUSH2 0x03f0
00000144: JUMPI
00000145: DUP1
00000146: PUSH4 0x72f96040
0000014b: EQ
0000014c: PUSH2 0x0405
0000014f: JUMPI
00000150: DUP1
00000151: PUSH4 0x7824407f
00000156: EQ
00000157: PUSH2 0x0438
0000015a: JUMPI
0000015b: DUP1
0000015c: PUSH4 0x7f4fad69
00000161: EQ
00000162: PUSH2 0x044d
00000165: JUMPI
00000166: DUP1
00000167: PUSH4 0x87865033
0000016c: EQ
0000016d: PUSH2 0x0462
00000170: JUMPI
00000171: PUSH2 0x021a
00000174: JUMP
00000175: JUMPDEST
00000176: DUP1
00000177: PUSH4 0x5bf997f5
0000017c: EQ
0000017d: PUSH2 0x0381
00000180: JUMPI
00000181: DUP1
00000182: PUSH4 0x617e677e
00000187: EQ
00000188: PUSH2 0x0396
0000018b: JUMPI
0000018c: DUP1
0000018d: PUSH4 0x66ade78e
00000192: EQ
00000193: PUSH2 0x03ab
00000196: JUMPI
00000197: DUP1
00000198: PUSH4 0x6fb653a2
0000019d: EQ
0000019e: PUSH2 0x03db
000001a1: JUMPI
000001a2: PUSH2 0x021a
000001a5: JUMP
000001a6: JUMPDEST
000001a7: DUP1
000001a8: PUSH4 0x1f45002c
000001ad: GT
000001ae: PUSH2 0x01ed
000001b1: JUMPI
000001b2: DUP1
000001b3: PUSH4 0x1f45002c
000001b8: EQ
000001b9: PUSH2 0x02ad
000001bc: JUMPI
000001bd: DUP1
000001be: PUSH4 0x4e71d92d
000001c3: EQ
000001c4: PUSH2 0x030f
000001c7: JUMPI
000001c8: DUP1
000001c9: PUSH4 0x4f1910a1
000001ce: EQ
000001cf: PUSH2 0x0324
000001d2: JUMPI
000001d3: DUP1
000001d4: PUSH4 0x5707bee5
000001d9: EQ
000001da: PUSH2 0x0339
000001dd: JUMPI
000001de: DUP1
000001df: PUSH4 0x590e1ae3
000001e4: EQ
000001e5: PUSH2 0x036c
000001e8: JUMPI
000001e9: PUSH2 0x021a
000001ec: JUMP
000001ed: JUMPDEST
000001ee: DUP1
000001ef: PUSH4 0x0594851c
000001f4: EQ
000001f5: PUSH2 0x021f
000001f8: JUMPI
000001f9: DUP1
000001fa: PUSH4 0x124a1f4f
000001ff: EQ
00000200: PUSH2 0x0264
00000203: JUMPI
00000204: DUP1
00000205: PUSH4 0x1998aeef
0000020a: EQ
0000020b: PUSH2 0x028e
0000020e: JUMPI
0000020f: DUP1
00000210: PUSH4 0x1bb89762
00000215: EQ
00000216: PUSH2 0x0298
00000219: JUMPI
0000021a: JUMPDEST
0000021b: PUSH1 0x00
0000021d: DUP1
0000021e: REVERT
0000021f: JUMPDEST
00000220: CALLVALUE
00000221: DUP1
00000222: ISZERO
00000223: PUSH2 0x022b
00000226: JUMPI
00000227: PUSH1 0x00
00000229: DUP1
0000022a: REVERT
0000022b: JUMPDEST
0000022c: POP
0000022d: PUSH2 0x0252
00000230: PUSH1 0x04
00000232: DUP1
00000233: CALLDATASIZE
00000234: SUB
00000235: PUSH1 0x20
00000237: DUP2
00000238: LT
00000239: ISZERO
0000023a: PUSH2 0x0242
0000023d: JUMPI
0000023e: PUSH1 0x00
00000240: DUP1
00000241: REVERT
00000242: JUMPDEST
00000243: POP
00000244: CALLDATALOAD
00000245: PUSH1 0x01
00000247: PUSH1 0x01
00000249: PUSH1 0xa0
0000024b: SHL
0000024c: SUB
0000024d: AND
0000024e: PUSH2 0x0727
00000251: JUMP
00000252: JUMPDEST
00000253: PUSH1 0x40
00000255: DUP1
00000256: MLOAD
00000257: SWAP2
00000258: DUP3
00000259: MSTORE
0000025a: MLOAD
0000025b: SWAP1
0000025c: DUP2
0000025d: SWAP1
0000025e: SUB
0000025f: PUSH1 0x20
00000261: ADD
00000262: SWAP1
00000263: RETURN
00000264: JUMPDEST
00000265: CALLVALUE
00000266: DUP1
00000267: ISZERO
00000268: PUSH2 0x0270
0000026b: JUMPI
0000026c: PUSH1 0x00
0000026e: DUP1
0000026f: REVERT
00000270: JUMPDEST
00000271: POP
00000272: PUSH2 0x0252
00000275: PUSH1 0x04
00000277: DUP1
00000278: CALLDATASIZE
00000279: SUB
0000027a: PUSH1 0x20
0000027c: DUP2
0000027d: LT
0000027e: ISZERO
0000027f: PUSH2 0x0287
00000282: JUMPI
00000283: PUSH1 0x00
00000285: DUP1
00000286: REVERT
00000287: JUMPDEST
00000288: POP
00000289: CALLDATALOAD
0000028a: PUSH2 0x0810
0000028d: JUMP
0000028e: JUMPDEST
0000028f: PUSH2 0x0296
00000292: PUSH2 0x0823
00000295: JUMP
00000296: JUMPDEST
00000297: STOP
00000298: JUMPDEST
00000299: CALLVALUE
0000029a: DUP1
0000029b: ISZERO
0000029c: PUSH2 0x02a4
0000029f: JUMPI
000002a0: PUSH1 0x00
000002a2: DUP1
000002a3: REVERT
000002a4: JUMPDEST
000002a5: POP
000002a6: PUSH2 0x0252
000002a9: PUSH2 0x0ac3
000002ac: JUMP
000002ad: JUMPDEST
000002ae: CALLVALUE
000002af: DUP1
000002b0: ISZERO
000002b1: PUSH2 0x02b9
000002b4: JUMPI
000002b5: PUSH1 0x00
000002b7: DUP1
000002b8: REVERT
000002b9: JUMPDEST
000002ba: POP
000002bb: PUSH2 0x02e0
000002be: PUSH1 0x04
000002c0: DUP1
000002c1: CALLDATASIZE
000002c2: SUB
000002c3: PUSH1 0x20
000002c5: DUP2
000002c6: LT
000002c7: ISZERO
000002c8: PUSH2 0x02d0
000002cb: JUMPI
000002cc: PUSH1 0x00
000002ce: DUP1
000002cf: REVERT
000002d0: JUMPDEST
000002d1: POP
000002d2: CALLDATALOAD
000002d3: PUSH1 0x01
000002d5: PUSH1 0x01
000002d7: PUSH1 0xa0
000002d9: SHL
000002da: SUB
000002db: AND
000002dc: PUSH2 0x0ac9
000002df: JUMP
000002e0: JUMPDEST
000002e1: PUSH1 0x40
000002e3: DUP1
000002e4: MLOAD
000002e5: SWAP5
000002e6: DUP6
000002e7: MSTORE
000002e8: PUSH1 0x20
000002ea: DUP6
000002eb: ADD
000002ec: SWAP4
000002ed: SWAP1
000002ee: SWAP4
000002ef: MSTORE
000002f0: SWAP1
000002f1: ISZERO
000002f2: ISZERO
000002f3: DUP4
000002f4: DUP4
000002f5: ADD
000002f6: MSTORE
000002f7: PUSH1 0x01
000002f9: PUSH1 0x01
000002fb: PUSH1 0x80
000002fd: SHL
000002fe: SUB
000002ff: AND
00000300: PUSH1 0x60
00000302: DUP4
00000303: ADD
00000304: MSTORE
00000305: MLOAD
00000306: SWAP1
00000307: DUP2
00000308: SWAP1
00000309: SUB
0000030a: PUSH1 0x80
0000030c: ADD
0000030d: SWAP1
0000030e: RETURN
0000030f: JUMPDEST
00000310: CALLVALUE
00000311: DUP1
00000312: ISZERO
00000313: PUSH2 0x031b
00000316: JUMPI
00000317: PUSH1 0x00
00000319: DUP1
0000031a: REVERT
0000031b: JUMPDEST
0000031c: POP
0000031d: PUSH2 0x0252
00000320: PUSH2 0x0afd
00000323: JUMP
00000324: JUMPDEST
00000325: CALLVALUE
00000326: DUP1
00000327: ISZERO
00000328: PUSH2 0x0330
0000032b: JUMPI
0000032c: PUSH1 0x00
0000032e: DUP1
0000032f: REVERT
00000330: JUMPDEST
00000331: POP
00000332: PUSH2 0x0252
00000335: PUSH2 0x0e5b
00000338: JUMP
00000339: JUMPDEST
0000033a: CALLVALUE
0000033b: DUP1
0000033c: ISZERO
0000033d: PUSH2 0x0345
00000340: JUMPI
00000341: PUSH1 0x00
00000343: DUP1
00000344: REVERT
00000345: JUMPDEST
00000346: POP
00000347: PUSH2 0x0252
0000034a: PUSH1 0x04
0000034c: DUP1
0000034d: CALLDATASIZE
0000034e: SUB
0000034f: PUSH1 0x20
00000351: DUP2
00000352: LT
00000353: ISZERO
00000354: PUSH2 0x035c
00000357: JUMPI
00000358: PUSH1 0x00
0000035a: DUP1
0000035b: REVERT
0000035c: JUMPDEST
0000035d: POP
0000035e: CALLDATALOAD
0000035f: PUSH1 0x01
00000361: PUSH1 0x01
00000363: PUSH1 0xa0
00000365: SHL
00000366: SUB
00000367: AND
00000368: PUSH2 0x0e7f
0000036b: JUMP
0000036c: JUMPDEST
0000036d: CALLVALUE
0000036e: DUP1
0000036f: ISZERO
00000370: PUSH2 0x0378
00000373: JUMPI
00000374: PUSH1 0x00
00000376: DUP1
00000377: REVERT
00000378: JUMPDEST
00000379: POP
0000037a: PUSH2 0x0252
0000037d: PUSH2 0x0e91
00000380: JUMP
00000381: JUMPDEST
00000382: CALLVALUE
00000383: DUP1
00000384: ISZERO
00000385: PUSH2 0x038d
00000388: JUMPI
00000389: PUSH1 0x00
0000038b: DUP1
0000038c: REVERT
0000038d: JUMPDEST
0000038e: POP
0000038f: PUSH2 0x0252
00000392: PUSH2 0x105a
00000395: JUMP
00000396: JUMPDEST
00000397: CALLVALUE
00000398: DUP1
00000399: ISZERO
0000039a: PUSH2 0x03a2
0000039d: JUMPI
0000039e: PUSH1 0x00
000003a0: DUP1
000003a1: REVERT
000003a2: JUMPDEST
000003a3: POP
000003a4: PUSH2 0x0252
000003a7: PUSH2 0x107e
000003aa: JUMP
000003ab: JUMPDEST
000003ac: CALLVALUE
000003ad: DUP1
000003ae: ISZERO
000003af: PUSH2 0x03b7
000003b2: JUMPI
000003b3: PUSH1 0x00
000003b5: DUP1
000003b6: REVERT
000003b7: JUMPDEST
000003b8: POP
000003b9: PUSH2 0x0252
000003bc: PUSH1 0x04
000003be: DUP1
000003bf: CALLDATASIZE
000003c0: SUB
000003c1: PUSH1 0x40
000003c3: DUP2
000003c4: LT
000003c5: ISZERO
000003c6: PUSH2 0x03ce
000003c9: JUMPI
000003ca: PUSH1 0x00
000003cc: DUP1
000003cd: REVERT
000003ce: JUMPDEST
000003cf: POP
000003d0: DUP1
000003d1: CALLDATALOAD
000003d2: SWAP1
000003d3: PUSH1 0x20
000003d5: ADD
000003d6: CALLDATALOAD
000003d7: PUSH2 0x1084
000003da: JUMP
000003db: JUMPDEST
000003dc: CALLVALUE
000003dd: DUP1
000003de: ISZERO
000003df: PUSH2 0x03e7
000003e2: JUMPI
000003e3: PUSH1 0x00
000003e5: DUP1
000003e6: REVERT
000003e7: JUMPDEST
000003e8: POP
000003e9: PUSH2 0x0252
000003ec: PUSH2 0x1197
000003ef: JUMP
000003f0: JUMPDEST
000003f1: CALLVALUE
000003f2: DUP1
000003f3: ISZERO
000003f4: PUSH2 0x03fc
000003f7: JUMPI
000003f8: PUSH1 0x00
000003fa: DUP1
000003fb: REVERT
000003fc: JUMPDEST
000003fd: POP
000003fe: PUSH2 0x0296
00000401: PUSH2 0x11bb
00000404: JUMP
00000405: JUMPDEST
00000406: CALLVALUE
00000407: DUP1
00000408: ISZERO
00000409: PUSH2 0x0411
0000040c: JUMPI
0000040d: PUSH1 0x00
0000040f: DUP1
00000410: REVERT
00000411: JUMPDEST
00000412: POP
00000413: PUSH2 0x0252
00000416: PUSH1 0x04
00000418: DUP1
00000419: CALLDATASIZE
0000041a: SUB
0000041b: PUSH1 0x20
0000041d: DUP2
0000041e: LT
0000041f: ISZERO
00000420: PUSH2 0x0428
00000423: JUMPI
00000424: PUSH1 0x00
00000426: DUP1
00000427: REVERT
00000428: JUMPDEST
00000429: POP
0000042a: CALLDATALOAD
0000042b: PUSH1 0x01
0000042d: PUSH1 0x01
0000042f: PUSH1 0xa0
00000431: SHL
00000432: SUB
00000433: AND
00000434: PUSH2 0x1216
00000437: JUMP
00000438: JUMPDEST
00000439: CALLVALUE
0000043a: DUP1
0000043b: ISZERO
0000043c: PUSH2 0x0444
0000043f: JUMPI
00000440: PUSH1 0x00
00000442: DUP1
00000443: REVERT
00000444: JUMPDEST
00000445: POP
00000446: PUSH2 0x0252
00000449: PUSH2 0x132b
0000044c: JUMP
0000044d: JUMPDEST
0000044e: CALLVALUE
0000044f: DUP1
00000450: ISZERO
00000451: PUSH2 0x0459
00000454: JUMPI
00000455: PUSH1 0x00
00000457: DUP1
00000458: REVERT
00000459: JUMPDEST
0000045a: POP
0000045b: PUSH2 0x0252
0000045e: PUSH2 0x1331
00000461: JUMP
00000462: JUMPDEST
00000463: CALLVALUE
00000464: DUP1
00000465: ISZERO
00000466: PUSH2 0x046e
00000469: JUMPI
0000046a: PUSH1 0x00
0000046c: DUP1
0000046d: REVERT
0000046e: JUMPDEST
0000046f: POP
00000470: PUSH2 0x0477
00000473: PUSH2 0x1337
00000476: JUMP
00000477: JUMPDEST
00000478: PUSH1 0x40
0000047a: DUP1
0000047b: MLOAD
0000047c: PUSH2 0xffff
0000047f: SWAP1
00000480: SWAP3
00000481: AND
00000482: DUP3
00000483: MSTORE
00000484: MLOAD
00000485: SWAP1
00000486: DUP2
00000487: SWAP1
00000488: SUB
00000489: PUSH1 0x20
0000048b: ADD
0000048c: SWAP1
0000048d: RETURN
0000048e: JUMPDEST
0000048f: CALLVALUE
00000490: DUP1
00000491: ISZERO
00000492: PUSH2 0x049a
00000495: JUMPI
00000496: PUSH1 0x00
00000498: DUP1
00000499: REVERT
0000049a: JUMPDEST
0000049b: POP
0000049c: PUSH2 0x0296
0000049f: PUSH2 0x133c
000004a2: JUMP
000004a3: JUMPDEST
000004a4: CALLVALUE
000004a5: DUP1
000004a6: ISZERO
000004a7: PUSH2 0x04af
000004aa: JUMPI
000004ab: PUSH1 0x00
000004ad: DUP1
000004ae: REVERT
000004af: JUMPDEST
000004b0: POP
000004b1: PUSH2 0x04b8
000004b4: PUSH2 0x13f1
000004b7: JUMP
000004b8: JUMPDEST
000004b9: PUSH1 0x40
000004bb: DUP1
000004bc: MLOAD
000004bd: SWAP2
000004be: ISZERO
000004bf: ISZERO
000004c0: DUP3
000004c1: MSTORE
000004c2: MLOAD
000004c3: SWAP1
000004c4: DUP2
000004c5: SWAP1
000004c6: SUB
000004c7: PUSH1 0x20
000004c9: ADD
000004ca: SWAP1
000004cb: RETURN
000004cc: JUMPDEST
000004cd: CALLVALUE
000004ce: DUP1
000004cf: ISZERO
000004d0: PUSH2 0x04d8
000004d3: JUMPI
000004d4: PUSH1 0x00
000004d6: DUP1
000004d7: REVERT
000004d8: JUMPDEST
000004d9: POP
000004da: PUSH2 0x0252
000004dd: PUSH2 0x140d
000004e0: JUMP
000004e1: JUMPDEST
000004e2: CALLVALUE
000004e3: DUP1
000004e4: ISZERO
000004e5: PUSH2 0x04ed
000004e8: JUMPI
000004e9: PUSH1 0x00
000004eb: DUP1
000004ec: REVERT
000004ed: JUMPDEST
000004ee: POP
000004ef: PUSH2 0x0252
000004f2: PUSH2 0x1413
000004f5: JUMP
000004f6: JUMPDEST
000004f7: CALLVALUE
000004f8: DUP1
000004f9: ISZERO
000004fa: PUSH2 0x0502
000004fd: JUMPI
000004fe: PUSH1 0x00
00000500: DUP1
00000501: REVERT
00000502: JUMPDEST
00000503: POP
00000504: PUSH2 0x050b
00000507: PUSH2 0x1437
0000050a: JUMP
0000050b: JUMPDEST
0000050c: PUSH1 0x40
0000050e: DUP1
0000050f: MLOAD
00000510: PUSH1 0x01
00000512: PUSH1 0x01
00000514: PUSH1 0xa0
00000516: SHL
00000517: SUB
00000518: SWAP1
00000519: SWAP3
0000051a: AND
0000051b: DUP3
0000051c: MSTORE
0000051d: MLOAD
0000051e: SWAP1
0000051f: DUP2
00000520: SWAP1
00000521: SUB
00000522: PUSH1 0x20
00000524: ADD
00000525: SWAP1
00000526: RETURN
00000527: JUMPDEST
00000528: CALLVALUE
00000529: DUP1
0000052a: ISZERO
0000052b: PUSH2 0x0533
0000052e: JUMPI
0000052f: PUSH1 0x00
00000531: DUP1
00000532: REVERT
00000533: JUMPDEST
00000534: POP
00000535: PUSH2 0x04b8
00000538: PUSH2 0x1446
0000053b: JUMP
0000053c: JUMPDEST
0000053d: CALLVALUE
0000053e: DUP1
0000053f: ISZERO
00000540: PUSH2 0x0548
00000543: JUMPI
00000544: PUSH1 0x00
00000546: DUP1
00000547: REVERT
00000548: JUMPDEST
00000549: POP
0000054a: PUSH2 0x0296
0000054d: PUSH2 0x1457
00000550: JUMP
00000551: JUMPDEST
00000552: CALLVALUE
00000553: DUP1
00000554: ISZERO
00000555: PUSH2 0x055d
00000558: JUMPI
00000559: PUSH1 0x00
0000055b: DUP1
0000055c: REVERT
0000055d: JUMPDEST
0000055e: POP
0000055f: PUSH2 0x0252
00000562: PUSH2 0x16ec
00000565: JUMP
00000566: JUMPDEST
00000567: CALLVALUE
00000568: DUP1
00000569: ISZERO
0000056a: PUSH2 0x0572
0000056d: JUMPI
0000056e: PUSH1 0x00
00000570: DUP1
00000571: REVERT
00000572: JUMPDEST
00000573: POP
00000574: PUSH2 0x0252
00000577: PUSH1 0x04
00000579: DUP1
0000057a: CALLDATASIZE
0000057b: SUB
0000057c: PUSH1 0x20
0000057e: DUP2
0000057f: LT
00000580: ISZERO
00000581: PUSH2 0x0589
00000584: JUMPI
00000585: PUSH1 0x00
00000587: DUP1
00000588: REVERT
00000589: JUMPDEST
0000058a: POP
0000058b: CALLDATALOAD
0000058c: PUSH2 0x16f2
0000058f: JUMP
00000590: JUMPDEST
00000591: CALLVALUE
00000592: DUP1
00000593: ISZERO
00000594: PUSH2 0x059c
00000597: JUMPI
00000598: PUSH1 0x00
0000059a: DUP1
0000059b: REVERT
0000059c: JUMPDEST
0000059d: POP
0000059e: PUSH2 0x0252
000005a1: PUSH2 0x17d1
000005a4: JUMP
000005a5: JUMPDEST
000005a6: CALLVALUE
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05b1
000005ac: JUMPI
000005ad: PUSH1 0x00
000005af: DUP1
000005b0: REVERT
000005b1: JUMPDEST
000005b2: POP
000005b3: PUSH2 0x0252
000005b6: PUSH1 0x04
000005b8: DUP1
000005b9: CALLDATASIZE
000005ba: SUB
000005bb: PUSH1 0x20
000005bd: DUP2
000005be: LT
000005bf: ISZERO
000005c0: PUSH2 0x05c8
000005c3: JUMPI
000005c4: PUSH1 0x00
000005c6: DUP1
000005c7: REVERT
000005c8: JUMPDEST
000005c9: POP
000005ca: CALLDATALOAD
000005cb: PUSH2 0x17d7
000005ce: JUMP
000005cf: JUMPDEST
000005d0: CALLVALUE
000005d1: DUP1
000005d2: ISZERO
000005d3: PUSH2 0x05db
000005d6: JUMPI
000005d7: PUSH1 0x00
000005d9: DUP1
000005da: REVERT
000005db: JUMPDEST
000005dc: POP
000005dd: PUSH2 0x0477
000005e0: PUSH2 0x1a62
000005e3: JUMP
000005e4: JUMPDEST
000005e5: CALLVALUE
000005e6: DUP1
000005e7: ISZERO
000005e8: PUSH2 0x05f0
000005eb: JUMPI
000005ec: PUSH1 0x00
000005ee: DUP1
000005ef: REVERT
000005f0: JUMPDEST
000005f1: POP
000005f2: PUSH2 0x0296
000005f5: PUSH1 0x04
000005f7: DUP1
000005f8: CALLDATASIZE
000005f9: SUB
000005fa: PUSH1 0x20
000005fc: DUP2
000005fd: LT
000005fe: ISZERO
000005ff: PUSH2 0x0607
00000602: JUMPI
00000603: PUSH1 0x00
00000605: DUP1
00000606: REVERT
00000607: JUMPDEST
00000608: DUP2
00000609: ADD
0000060a: SWAP1
0000060b: PUSH1 0x20
0000060d: DUP2
0000060e: ADD
0000060f: DUP2
00000610: CALLDATALOAD
00000611: PUSH5 0x0100000000
00000617: DUP2
00000618: GT
00000619: ISZERO
0000061a: PUSH2 0x0622
0000061d: JUMPI
0000061e: PUSH1 0x00
00000620: DUP1
00000621: REVERT
00000622: JUMPDEST
00000623: DUP3
00000624: ADD
00000625: DUP4
00000626: PUSH1 0x20
00000628: DUP3
00000629: ADD
0000062a: GT
0000062b: ISZERO
0000062c: PUSH2 0x0634
0000062f: JUMPI
00000630: PUSH1 0x00
00000632: DUP1
00000633: REVERT
00000634: JUMPDEST
00000635: DUP1
00000636: CALLDATALOAD
00000637: SWAP1
00000638: PUSH1 0x20
0000063a: ADD
0000063b: SWAP2
0000063c: DUP5
0000063d: PUSH1 0x20
0000063f: DUP4
00000640: MUL
00000641: DUP5
00000642: ADD
00000643: GT
00000644: PUSH5 0x0100000000
0000064a: DUP4
0000064b: GT
0000064c: OR
0000064d: ISZERO
0000064e: PUSH2 0x0656
00000651: JUMPI
00000652: PUSH1 0x00
00000654: DUP1
00000655: REVERT
00000656: JUMPDEST
00000657: POP
00000658: SWAP1
00000659: SWAP3
0000065a: POP
0000065b: SWAP1
0000065c: POP
0000065d: PUSH2 0x1a86
00000660: JUMP
00000661: JUMPDEST
00000662: CALLVALUE
00000663: DUP1
00000664: ISZERO
00000665: PUSH2 0x066d
00000668: JUMPI
00000669: PUSH1 0x00
0000066b: DUP1
0000066c: REVERT
0000066d: JUMPDEST
0000066e: POP
0000066f: PUSH2 0x050b
00000672: PUSH1 0x04
00000674: DUP1
00000675: CALLDATASIZE
00000676: SUB
00000677: PUSH1 0x20
00000679: DUP2
0000067a: LT
0000067b: ISZERO
0000067c: PUSH2 0x0684
0000067f: JUMPI
00000680: PUSH1 0x00
00000682: DUP1
00000683: REVERT
00000684: JUMPDEST
00000685: POP
00000686: CALLDATALOAD
00000687: PUSH2 0x2005
0000068a: JUMP
0000068b: JUMPDEST
0000068c: CALLVALUE
0000068d: DUP1
0000068e: ISZERO
0000068f: PUSH2 0x0697
00000692: JUMPI
00000693: PUSH1 0x00
00000695: DUP1
00000696: REVERT
00000697: JUMPDEST
00000698: POP
00000699: PUSH2 0x0296
0000069c: PUSH1 0x04
0000069e: DUP1
0000069f: CALLDATASIZE
000006a0: SUB
000006a1: PUSH1 0x20
000006a3: DUP2
000006a4: LT
000006a5: ISZERO
000006a6: PUSH2 0x06ae
000006a9: JUMPI
000006aa: PUSH1 0x00
000006ac: DUP1
000006ad: REVERT
000006ae: JUMPDEST
000006af: POP
000006b0: CALLDATALOAD
000006b1: PUSH2 0x202c
000006b4: JUMP
000006b5: JUMPDEST
000006b6: CALLVALUE
000006b7: DUP1
000006b8: ISZERO
000006b9: PUSH2 0x06c1
000006bc: JUMPI
000006bd: PUSH1 0x00
000006bf: DUP1
000006c0: REVERT
000006c1: JUMPDEST
000006c2: POP
000006c3: PUSH2 0x050b
000006c6: PUSH2 0x20e2
000006c9: JUMP
000006ca: JUMPDEST
000006cb: CALLVALUE
000006cc: DUP1
000006cd: ISZERO
000006ce: PUSH2 0x06d6
000006d1: JUMPI
000006d2: PUSH1 0x00
000006d4: DUP1
000006d5: REVERT
000006d6: JUMPDEST
000006d7: POP
000006d8: PUSH2 0x0296
000006db: PUSH1 0x04
000006dd: DUP1
000006de: CALLDATASIZE
000006df: SUB
000006e0: PUSH1 0x20
000006e2: DUP2
000006e3: LT
000006e4: ISZERO
000006e5: PUSH2 0x06ed
000006e8: JUMPI
000006e9: PUSH1 0x00
000006eb: DUP1
000006ec: REVERT
000006ed: JUMPDEST
000006ee: POP
000006ef: CALLDATALOAD
000006f0: PUSH1 0x01
000006f2: PUSH1 0x01
000006f4: PUSH1 0xa0
000006f6: SHL
000006f7: SUB
000006f8: AND
000006f9: PUSH2 0x2106
000006fc: JUMP
000006fd: JUMPDEST
000006fe: CALLVALUE
000006ff: DUP1
00000700: ISZERO
00000701: PUSH2 0x0709
00000704: JUMPI
00000705: PUSH1 0x00
00000707: DUP1
00000708: REVERT
00000709: JUMPDEST
0000070a: POP
0000070b: PUSH2 0x050b
0000070e: PUSH2 0x2123
00000711: JUMP
00000712: JUMPDEST
00000713: CALLVALUE
00000714: DUP1
00000715: ISZERO
00000716: PUSH2 0x071e
00000719: JUMPI
0000071a: PUSH1 0x00
0000071c: DUP1
0000071d: REVERT
0000071e: JUMPDEST
0000071f: POP
00000720: PUSH2 0x0296
00000723: PUSH2 0x2147
00000726: JUMP
00000727: JUMPDEST
00000728: PUSH1 0x01
0000072a: PUSH1 0x01
0000072c: PUSH1 0xa0
0000072e: SHL
0000072f: SUB
00000730: DUP1
00000731: DUP3
00000732: AND
00000733: PUSH1 0x00
00000735: DUP2
00000736: DUP2
00000737: MSTORE
00000738: PUSH1 0x06
0000073a: PUSH1 0x20
0000073c: SWAP1
0000073d: DUP2
0000073e: MSTORE
0000073f: PUSH1 0x40
00000741: DUP1
00000742: DUP4
00000743: KECCAK256
00000744: PUSH1 0x01
00000746: DUP2
00000747: ADD
00000748: SLOAD
00000749: DUP3
0000074a: MLOAD
0000074b: PUSH4 0xd094adbf
00000750: PUSH1 0xe0
00000752: SHL
00000753: DUP2
00000754: MSTORE
00000755: PUSH1 0x04
00000757: DUP2
00000758: ADD
00000759: SWAP7
0000075a: SWAP1
0000075b: SWAP7
0000075c: MSTORE
0000075d: SWAP2
0000075e: MLOAD
0000075f: SWAP4
00000760: SWAP6
00000761: SWAP1
00000762: SWAP5
00000763: DUP7
00000764: SWAP5
00000765: PUSH2 0x07e0
00000768: SWAP5
00000769: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2
0000078a: SWAP1
0000078b: SWAP4
0000078c: AND
0000078d: SWAP3
0000078e: PUSH4 0xd094adbf
00000793: SWAP3
00000794: PUSH1 0x24
00000796: DUP1
00000797: DUP3
00000798: ADD
00000799: SWAP4
0000079a: SWAP2
0000079b: DUP3
0000079c: SWAP1
0000079d: SUB
0000079e: ADD
0000079f: DUP2
000007a0: DUP7
000007a1: DUP1
000007a2: EXTCODESIZE
000007a3: ISZERO
000007a4: DUP1
000007a5: ISZERO
000007a6: PUSH2 0x07ae
000007a9: JUMPI
000007aa: PUSH1 0x00
000007ac: DUP1
000007ad: REVERT
000007ae: JUMPDEST
000007af: POP
000007b0: GAS
000007b1: STATICCALL
000007b2: ISZERO
000007b3: DUP1
000007b4: ISZERO
000007b5: PUSH2 0x07c2
000007b8: JUMPI
000007b9: RETURNDATASIZE
000007ba: PUSH1 0x00
000007bc: DUP1
000007bd: RETURNDATACOPY
000007be: RETURNDATASIZE
000007bf: PUSH1 0x00
000007c1: REVERT
000007c2: JUMPDEST
000007c3: POP
000007c4: POP
000007c5: POP
000007c6: POP
000007c7: PUSH1 0x40
000007c9: MLOAD
000007ca: RETURNDATASIZE
000007cb: PUSH1 0x20
000007cd: DUP2
000007ce: LT
000007cf: ISZERO
000007d0: PUSH2 0x07d8
000007d3: JUMPI
000007d4: PUSH1 0x00
000007d6: DUP1
000007d7: REVERT
000007d8: JUMPDEST
000007d9: POP
000007da: MLOAD
000007db: SWAP1
000007dc: PUSH2 0x21a6
000007df: JUMP
000007e0: JUMPDEST
000007e1: SWAP1
000007e2: POP
000007e3: PUSH1 0x00
000007e5: PUSH2 0x07f1
000007e8: DUP4
000007e9: PUSH1 0x00
000007eb: ADD
000007ec: SLOAD
000007ed: PUSH2 0x0810
000007f0: JUMP
000007f1: JUMPDEST
000007f2: SWAP1
000007f3: POP
000007f4: DUP2
000007f5: DUP2
000007f6: GT
000007f7: PUSH2 0x0806
000007fa: JUMPI
000007fb: PUSH1 0x00
000007fd: SWAP4
000007fe: POP
000007ff: POP
00000800: POP
00000801: POP
00000802: PUSH2 0x080b
00000805: JUMP
00000806: JUMPDEST
00000807: SUB
00000808: SWAP2
00000809: POP
0000080a: POP
0000080b: JUMPDEST
0000080c: SWAP2
0000080d: SWAP1
0000080e: POP
0000080f: JUMP
00000810: JUMPDEST
00000811: PUSH1 0x00
00000813: PUSH2 0x081d
00000816: DUP3
00000817: PUSH1 0x00
00000819: PUSH2 0x21bb
0000081c: JUMP
0000081d: JUMPDEST
0000081e: SWAP3
0000081f: SWAP2
00000820: POP
00000821: POP
00000822: JUMP
00000823: JUMPDEST
00000824: PUSH1 0x02
00000826: SLOAD
00000827: TIMESTAMP
00000828: LT
00000829: ISZERO
0000082a: PUSH2 0x087a
0000082d: JUMPI
0000082e: PUSH1 0x40
00000830: DUP1
00000831: MLOAD
00000832: PUSH3 0x461bcd
00000836: PUSH1 0xe5
00000838: SHL
00000839: DUP2
0000083a: MSTORE
0000083b: PUSH1 0x20
0000083d: PUSH1 0x04
0000083f: DUP3
00000840: ADD
00000841: MSTORE
00000842: PUSH1 0x17
00000844: PUSH1 0x24
00000846: DUP3
00000847: ADD
00000848: MSTORE
00000849: PUSH32 0x42696464696e67206973206e6f74206f70656e20796574000000000000000000
0000086a: PUSH1 0x44
0000086c: DUP3
0000086d: ADD
0000086e: MSTORE
0000086f: SWAP1
00000870: MLOAD
00000871: SWAP1
00000872: DUP2
00000873: SWAP1
00000874: SUB
00000875: PUSH1 0x64
00000877: ADD
00000878: SWAP1
00000879: REVERT
0000087a: JUMPDEST
0000087b: PUSH1 0x03
0000087d: SLOAD
0000087e: TIMESTAMP
0000087f: LT
00000880: PUSH2 0x08d0
00000883: JUMPI
00000884: PUSH1 0x40
00000886: DUP1
00000887: MLOAD
00000888: PUSH3 0x461bcd
0000088c: PUSH1 0xe5
0000088e: SHL
0000088f: DUP2
00000890: MSTORE
00000891: PUSH1 0x20
00000893: PUSH1 0x04
00000895: DUP3
00000896: ADD
00000897: MSTORE
00000898: PUSH1 0x1b
0000089a: PUSH1 0x24
0000089c: DUP3
0000089d: ADD
0000089e: MSTORE
0000089f: PUSH32 0x42696464696e6720697320616c72656164792066696e69736865640000000000
000008c0: PUSH1 0x44
000008c2: DUP3
000008c3: ADD
000008c4: MSTORE
000008c5: SWAP1
000008c6: MLOAD
000008c7: SWAP1
000008c8: DUP2
000008c9: SWAP1
000008ca: SUB
000008cb: PUSH1 0x64
000008cd: ADD
000008ce: SWAP1
000008cf: REVERT
000008d0: JUMPDEST
000008d1: CALLER
000008d2: PUSH1 0x00
000008d4: SWAP1
000008d5: DUP2
000008d6: MSTORE
000008d7: PUSH1 0x06
000008d9: PUSH1 0x20
000008db: MSTORE
000008dc: PUSH1 0x40
000008de: SWAP1
000008df: KECCAK256
000008e0: DUP1
000008e1: SLOAD
000008e2: PUSH2 0x0a6b
000008e5: JUMPI
000008e6: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
00000907: CALLVALUE
00000908: LT
00000909: ISZERO
0000090a: PUSH2 0x095a
0000090d: JUMPI
0000090e: PUSH1 0x40
00000910: DUP1
00000911: MLOAD
00000912: PUSH3 0x461bcd
00000916: PUSH1 0xe5
00000918: SHL
00000919: DUP2
0000091a: MSTORE
0000091b: PUSH1 0x20
0000091d: PUSH1 0x04
0000091f: DUP3
00000920: ADD
00000921: MSTORE
00000922: PUSH1 0x1c
00000924: PUSH1 0x24
00000926: DUP3
00000927: ADD
00000928: MSTORE
00000929: PUSH32 0x426964206d757374206265206174206c65617374206d696e696d756d00000000
0000094a: PUSH1 0x44
0000094c: DUP3
0000094d: ADD
0000094e: MSTORE
0000094f: SWAP1
00000950: MLOAD
00000951: SWAP1
00000952: DUP2
00000953: SWAP1
00000954: SUB
00000955: PUSH1 0x64
00000957: ADD
00000958: SWAP1
00000959: REVERT
0000095a: JUMPDEST
0000095b: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
0000097c: PUSH1 0x01
0000097e: SLOAD
0000097f: DUP2
00000980: PUSH2 0x0985
00000983: JUMPI
00000984: INVALID
00000985: JUMPDEST
00000986: DIV
00000987: PUSH1 0x08
00000989: DUP1
0000098a: SLOAD
0000098b: SWAP1
0000098c: POP
0000098d: LT
0000098e: PUSH2 0x09c8
00000991: JUMPI
00000992: PUSH1 0x40
00000994: MLOAD
00000995: PUSH3 0x461bcd
00000999: PUSH1 0xe5
0000099b: SHL
0000099c: DUP2
0000099d: MSTORE
0000099e: PUSH1 0x04
000009a0: ADD
000009a1: DUP1
000009a2: DUP1
000009a3: PUSH1 0x20
000009a5: ADD
000009a6: DUP3
000009a7: DUP2
000009a8: SUB
000009a9: DUP3
000009aa: MSTORE
000009ab: PUSH1 0x22
000009ad: DUP2
000009ae: MSTORE
000009af: PUSH1 0x20
000009b1: ADD
000009b2: DUP1
000009b3: PUSH2 0x28b5
000009b6: PUSH1 0x22
000009b8: SWAP2
000009b9: CODECOPY
000009ba: PUSH1 0x40
000009bc: ADD
000009bd: SWAP2
000009be: POP
000009bf: POP
000009c0: PUSH1 0x40
000009c2: MLOAD
000009c3: DUP1
000009c4: SWAP2
000009c5: SUB
000009c6: SWAP1
000009c7: REVERT
000009c8: JUMPDEST
000009c9: PUSH1 0x08
000009cb: DUP1
000009cc: SLOAD
000009cd: PUSH1 0x02
000009cf: DUP4
000009d0: ADD
000009d1: DUP1
000009d2: SLOAD
000009d3: PUSH1 0x01
000009d5: PUSH1 0x01
000009d7: PUSH1 0x80
000009d9: SHL
000009da: SUB
000009db: SWAP1
000009dc: SWAP3
000009dd: AND
000009de: PUSH2 0x0100
000009e1: MUL
000009e2: PUSH2 0x0100
000009e5: PUSH1 0x01
000009e7: PUSH1 0x88
000009e9: SHL
000009ea: SUB
000009eb: NOT
000009ec: SWAP1
000009ed: SWAP3
000009ee: AND
000009ef: SWAP2
000009f0: SWAP1
000009f1: SWAP2
000009f2: OR
000009f3: SWAP1
000009f4: SSTORE
000009f5: DUP1
000009f6: SLOAD
000009f7: PUSH1 0x01
000009f9: DUP2
000009fa: ADD
000009fb: DUP3
000009fc: SSTORE
000009fd: PUSH1 0x00
000009ff: SWAP2
00000a00: SWAP1
00000a01: SWAP2
00000a02: MSTORE
00000a03: PUSH32 0xf3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3
00000a24: ADD
00000a25: DUP1
00000a26: SLOAD
00000a27: PUSH1 0x01
00000a29: PUSH1 0x01
00000a2b: PUSH1 0xa0
00000a2d: SHL
00000a2e: SUB
00000a2f: NOT
00000a30: AND
00000a31: CALLER
00000a32: OR
00000a33: SWAP1
00000a34: SSTORE
00000a35: PUSH1 0x05
00000a37: SLOAD
00000a38: PUSH2 0x0a63
00000a3b: SWAP1
00000a3c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
00000a5d: CALLVALUE
00000a5e: SUB
00000a5f: PUSH2 0x22ee
00000a62: JUMP
00000a63: JUMPDEST
00000a64: PUSH1 0x05
00000a66: SSTORE
00000a67: PUSH2 0x0a7c
00000a6a: JUMP
00000a6b: JUMPDEST
00000a6c: PUSH1 0x05
00000a6e: SLOAD
00000a6f: PUSH2 0x0a78
00000a72: SWAP1
00000a73: CALLVALUE
00000a74: PUSH2 0x22ee
00000a77: JUMP
00000a78: JUMPDEST
00000a79: PUSH1 0x05
00000a7b: SSTORE
00000a7c: JUMPDEST
00000a7d: DUP1
00000a7e: SLOAD
00000a7f: PUSH2 0x0a88
00000a82: SWAP1
00000a83: CALLVALUE
00000a84: PUSH2 0x22ee
00000a87: JUMP
00000a88: JUMPDEST
00000a89: DUP2
00000a8a: SSTORE
00000a8b: PUSH1 0x40
00000a8d: DUP1
00000a8e: MLOAD
00000a8f: CALLVALUE
00000a90: DUP2
00000a91: MSTORE
00000a92: SWAP1
00000a93: MLOAD
00000a94: CALLER
00000a95: SWAP2
00000a96: PUSH32 0xe684a55f31b79eca403df938249029212a5925ec6be8012e099b45bc1019e5d2
00000ab7: SWAP2
00000ab8: SWAP1
00000ab9: DUP2
00000aba: SWAP1
00000abb: SUB
00000abc: PUSH1 0x20
00000abe: ADD
00000abf: SWAP1
00000ac0: LOG2
00000ac1: POP
00000ac2: JUMP
00000ac3: JUMPDEST
00000ac4: PUSH1 0x08
00000ac6: SLOAD
00000ac7: SWAP1
00000ac8: JUMP
00000ac9: JUMPDEST
00000aca: PUSH1 0x06
00000acc: PUSH1 0x20
00000ace: MSTORE
00000acf: PUSH1 0x00
00000ad1: SWAP1
00000ad2: DUP2
00000ad3: MSTORE
00000ad4: PUSH1 0x40
00000ad6: SWAP1
00000ad7: KECCAK256
00000ad8: DUP1
00000ad9: SLOAD
00000ada: PUSH1 0x01
00000adc: DUP3
00000add: ADD
00000ade: SLOAD
00000adf: PUSH1 0x02
00000ae1: SWAP1
00000ae2: SWAP3
00000ae3: ADD
00000ae4: SLOAD
00000ae5: SWAP1
00000ae6: SWAP2
00000ae7: SWAP1
00000ae8: PUSH1 0xff
00000aea: DUP2
00000aeb: AND
00000aec: SWAP1
00000aed: PUSH2 0x0100
00000af0: SWAP1
00000af1: DIV
00000af2: PUSH1 0x01
00000af4: PUSH1 0x01
00000af6: PUSH1 0x80
00000af8: SHL
00000af9: SUB
00000afa: AND
00000afb: DUP5
00000afc: JUMP
00000afd: JUMPDEST
00000afe: PUSH1 0x00
00000b00: PUSH2 0x0b07
00000b03: PUSH2 0x13f1
00000b06: JUMP
00000b07: JUMPDEST
00000b08: PUSH2 0x0b42
00000b0b: JUMPI
00000b0c: PUSH1 0x40
00000b0e: MLOAD
00000b0f: PUSH3 0x461bcd
00000b13: PUSH1 0xe5
00000b15: SHL
00000b16: DUP2
00000b17: MSTORE
00000b18: PUSH1 0x04
00000b1a: ADD
00000b1b: DUP1
00000b1c: DUP1
00000b1d: PUSH1 0x20
00000b1f: ADD
00000b20: DUP3
00000b21: DUP2
00000b22: SUB
00000b23: DUP3
00000b24: MSTORE
00000b25: PUSH1 0x21
00000b27: DUP2
00000b28: MSTORE
00000b29: PUSH1 0x20
00000b2b: ADD
00000b2c: DUP1
00000b2d: PUSH2 0x281f
00000b30: PUSH1 0x21
00000b32: SWAP2
00000b33: CODECOPY
00000b34: PUSH1 0x40
00000b36: ADD
00000b37: SWAP2
00000b38: POP
00000b39: POP
00000b3a: PUSH1 0x40
00000b3c: MLOAD
00000b3d: DUP1
00000b3e: SWAP2
00000b3f: SUB
00000b40: SWAP1
00000b41: REVERT
00000b42: JUMPDEST
00000b43: CALLER
00000b44: PUSH1 0x00
00000b46: SWAP1
00000b47: DUP2
00000b48: MSTORE
00000b49: PUSH1 0x06
00000b4b: PUSH1 0x20
00000b4d: MSTORE
00000b4e: PUSH1 0x40
00000b50: SWAP1
00000b51: KECCAK256
00000b52: PUSH1 0x02
00000b54: DUP2
00000b55: ADD
00000b56: SLOAD
00000b57: PUSH1 0xff
00000b59: AND
00000b5a: ISZERO
00000b5b: PUSH2 0x0bab
00000b5e: JUMPI
00000b5f: PUSH1 0x40
00000b61: DUP1
00000b62: MLOAD
00000b63: PUSH3 0x461bcd
00000b67: PUSH1 0xe5
00000b69: SHL
00000b6a: DUP2
00000b6b: MSTORE
00000b6c: PUSH1 0x20
00000b6e: PUSH1 0x04
00000b70: DUP3
00000b71: ADD
00000b72: MSTORE
00000b73: PUSH1 0x1a
00000b75: PUSH1 0x24
00000b77: DUP3
00000b78: ADD
00000b79: MSTORE
00000b7a: PUSH32 0x546f6b656e732061726520616c726561647920636c61696d6564000000000000
00000b9b: PUSH1 0x44
00000b9d: DUP3
00000b9e: ADD
00000b9f: MSTORE
00000ba0: SWAP1
00000ba1: MLOAD
00000ba2: SWAP1
00000ba3: DUP2
00000ba4: SWAP1
00000ba5: SUB
00000ba6: PUSH1 0x64
00000ba8: ADD
00000ba9: SWAP1
00000baa: REVERT
00000bab: JUMPDEST
00000bac: DUP1
00000bad: SLOAD
00000bae: PUSH2 0x0bb6
00000bb1: SWAP1
00000bb2: PUSH2 0x16f2
00000bb5: JUMP
00000bb6: JUMPDEST
00000bb7: SWAP2
00000bb8: POP
00000bb9: PUSH1 0x00
00000bbb: DUP3
00000bbc: GT
00000bbd: PUSH2 0x0c00
00000bc0: JUMPI
00000bc1: PUSH1 0x40
00000bc3: DUP1
00000bc4: MLOAD
00000bc5: PUSH3 0x461bcd
00000bc9: PUSH1 0xe5
00000bcb: SHL
00000bcc: DUP2
00000bcd: MSTORE
00000bce: PUSH1 0x20
00000bd0: PUSH1 0x04
00000bd2: DUP3
00000bd3: ADD
00000bd4: MSTORE
00000bd5: PUSH1 0x10
00000bd7: PUSH1 0x24
00000bd9: DUP3
00000bda: ADD
00000bdb: MSTORE
00000bdc: PUSH16 0x4e6f7468696e6720746f20636c61696d
00000bed: PUSH1 0x80
00000bef: SHL
00000bf0: PUSH1 0x44
00000bf2: DUP3
00000bf3: ADD
00000bf4: MSTORE
00000bf5: SWAP1
00000bf6: MLOAD
00000bf7: SWAP1
00000bf8: DUP2
00000bf9: SWAP1
00000bfa: SUB
00000bfb: PUSH1 0x64
00000bfd: ADD
00000bfe: SWAP1
00000bff: REVERT
00000c00: JUMPDEST
00000c01: PUSH1 0x02
00000c03: DUP2
00000c04: ADD
00000c05: DUP1
00000c06: SLOAD
00000c07: PUSH1 0xff
00000c09: NOT
00000c0a: AND
00000c0b: PUSH1 0x01
00000c0d: OR
00000c0e: SWAP1
00000c0f: SSTORE
00000c10: PUSH1 0x40
00000c12: DUP1
00000c13: MLOAD
00000c14: PUSH4 0x095ea7b3
00000c19: PUSH1 0xe0
00000c1b: SHL
00000c1c: DUP2
00000c1d: MSTORE
00000c1e: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2
00000c3f: PUSH1 0x01
00000c41: PUSH1 0x01
00000c43: PUSH1 0xa0
00000c45: SHL
00000c46: SUB
00000c47: SWAP1
00000c48: DUP2
00000c49: AND
00000c4a: PUSH1 0x04
00000c4c: DUP4
00000c4d: ADD
00000c4e: MSTORE
00000c4f: PUSH1 0x24
00000c51: DUP3
00000c52: ADD
00000c53: DUP6
00000c54: SWAP1
00000c55: MSTORE
00000c56: SWAP2
00000c57: MLOAD
00000c58: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc
00000c79: SWAP3
00000c7a: SWAP1
00000c7b: SWAP3
00000c7c: AND
00000c7d: SWAP2
00000c7e: PUSH4 0x095ea7b3
00000c83: SWAP2
00000c84: PUSH1 0x44
00000c86: DUP1
00000c87: DUP3
00000c88: ADD
00000c89: SWAP3
00000c8a: PUSH1 0x20
00000c8c: SWAP3
00000c8d: SWAP1
00000c8e: SWAP2
00000c8f: SWAP1
00000c90: DUP3
00000c91: SWAP1
00000c92: SUB
00000c93: ADD
00000c94: DUP2
00000c95: PUSH1 0x00
00000c97: DUP8
00000c98: DUP1
00000c99: EXTCODESIZE
00000c9a: ISZERO
00000c9b: DUP1
00000c9c: ISZERO
00000c9d: PUSH2 0x0ca5
00000ca0: JUMPI
00000ca1: PUSH1 0x00
00000ca3: DUP1
00000ca4: REVERT
00000ca5: JUMPDEST
00000ca6: POP
00000ca7: GAS
00000ca8: CALL
00000ca9: ISZERO
00000caa: DUP1
00000cab: ISZERO
00000cac: PUSH2 0x0cb9
00000caf: JUMPI
00000cb0: RETURNDATASIZE
00000cb1: PUSH1 0x00
00000cb3: DUP1
00000cb4: RETURNDATACOPY
00000cb5: RETURNDATASIZE
00000cb6: PUSH1 0x00
00000cb8: REVERT
00000cb9: JUMPDEST
00000cba: POP
00000cbb: POP
00000cbc: POP
00000cbd: POP
00000cbe: PUSH1 0x40
00000cc0: MLOAD
00000cc1: RETURNDATASIZE
00000cc2: PUSH1 0x20
00000cc4: DUP2
00000cc5: LT
00000cc6: ISZERO
00000cc7: PUSH2 0x0ccf
00000cca: JUMPI
00000ccb: PUSH1 0x00
00000ccd: DUP1
00000cce: REVERT
00000ccf: JUMPDEST
00000cd0: POP
00000cd1: POP
00000cd2: PUSH1 0x40
00000cd4: DUP1
00000cd5: MLOAD
00000cd6: PUSH4 0x0b8f81e1
00000cdb: PUSH1 0xe1
00000cdd: SHL
00000cde: DUP2
00000cdf: MSTORE
00000ce0: CALLER
00000ce1: PUSH1 0x04
00000ce3: DUP3
00000ce4: ADD
00000ce5: MSTORE
00000ce6: PUSH1 0x24
00000ce8: DUP2
00000ce9: ADD
00000cea: DUP5
00000ceb: SWAP1
00000cec: MSTORE
00000ced: PUSH2 0xffff
00000cf0: PUSH32 0x00000000000000000000000000000000000000000000000000000000000000b4
00000d11: AND
00000d12: PUSH1 0x44
00000d14: DUP3
00000d15: ADD
00000d16: MSTORE
00000d17: SWAP1
00000d18: MLOAD
00000d19: PUSH1 0x01
00000d1b: PUSH1 0x01
00000d1d: PUSH1 0xa0
00000d1f: SHL
00000d20: SUB
00000d21: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2
00000d42: AND
00000d43: SWAP2
00000d44: PUSH4 0x171f03c2
00000d49: SWAP2
00000d4a: PUSH1 0x64
00000d4c: DUP1
00000d4d: DUP4
00000d4e: ADD
00000d4f: SWAP3
00000d50: PUSH1 0x00
00000d52: SWAP3
00000d53: SWAP2
00000d54: SWAP1
00000d55: DUP3
00000d56: SWAP1
00000d57: SUB
00000d58: ADD
00000d59: DUP2
00000d5a: DUP4
00000d5b: DUP8
00000d5c: DUP1
00000d5d: EXTCODESIZE
00000d5e: ISZERO
00000d5f: DUP1
00000d60: ISZERO
00000d61: PUSH2 0x0d69
00000d64: JUMPI
00000d65: PUSH1 0x00
00000d67: DUP1
00000d68: REVERT
00000d69: JUMPDEST
00000d6a: POP
00000d6b: GAS
00000d6c: CALL
00000d6d: ISZERO
00000d6e: DUP1
00000d6f: ISZERO
00000d70: PUSH2 0x0d7d
00000d73: JUMPI
00000d74: RETURNDATASIZE
00000d75: PUSH1 0x00
00000d77: DUP1
00000d78: RETURNDATACOPY
00000d79: RETURNDATASIZE
00000d7a: PUSH1 0x00
00000d7c: REVERT
00000d7d: JUMPDEST
00000d7e: POP
00000d7f: POP
00000d80: PUSH1 0x40
00000d82: DUP1
00000d83: MLOAD
00000d84: PUSH4 0x12796b75
00000d89: PUSH1 0xe2
00000d8b: SHL
00000d8c: DUP2
00000d8d: MSTORE
00000d8e: CALLER
00000d8f: PUSH1 0x04
00000d91: DUP3
00000d92: ADD
00000d93: MSTORE
00000d94: PUSH1 0x01
00000d96: PUSH1 0x24
00000d98: DUP3
00000d99: ADD
00000d9a: MSTORE
00000d9b: SWAP1
00000d9c: MLOAD
00000d9d: PUSH1 0x01
00000d9f: PUSH1 0x01
00000da1: PUSH1 0xa0
00000da3: SHL
00000da4: SUB
00000da5: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2
00000dc6: AND
00000dc7: SWAP4
00000dc8: POP
00000dc9: PUSH4 0x49e5add4
00000dce: SWAP3
00000dcf: POP
00000dd0: PUSH1 0x44
00000dd2: DUP1
00000dd3: DUP4
00000dd4: ADD
00000dd5: SWAP3
00000dd6: PUSH1 0x20
00000dd8: SWAP3
00000dd9: SWAP2
00000dda: SWAP1
00000ddb: DUP3
00000ddc: SWAP1
00000ddd: SUB
00000dde: ADD
00000ddf: DUP2
00000de0: PUSH1 0x00
00000de2: DUP8
00000de3: DUP1
00000de4: EXTCODESIZE
00000de5: ISZERO
00000de6: DUP1
00000de7: ISZERO
00000de8: PUSH2 0x0df0
00000deb: JUMPI
00000dec: PUSH1 0x00
00000dee: DUP1
00000def: REVERT
00000df0: JUMPDEST
00000df1: POP
00000df2: GAS
00000df3: CALL
00000df4: ISZERO
00000df5: DUP1
00000df6: ISZERO
00000df7: PUSH2 0x0e04
00000dfa: JUMPI
00000dfb: RETURNDATASIZE
00000dfc: PUSH1 0x00
00000dfe: DUP1
00000dff: RETURNDATACOPY
00000e00: RETURNDATASIZE
00000e01: PUSH1 0x00
00000e03: REVERT
00000e04: JUMPDEST
00000e05: POP
00000e06: POP
00000e07: POP
00000e08: POP
00000e09: PUSH1 0x40
00000e0b: MLOAD
00000e0c: RETURNDATASIZE
00000e0d: PUSH1 0x20
00000e0f: DUP2
00000e10: LT
00000e11: ISZERO
00000e12: PUSH2 0x0e1a
00000e15: JUMPI
00000e16: PUSH1 0x00
00000e18: DUP1
00000e19: REVERT
00000e1a: JUMPDEST
00000e1b: POP
00000e1c: MLOAD
00000e1d: PUSH1 0x01
00000e1f: DUP3
00000e20: ADD
00000e21: SSTORE
00000e22: PUSH1 0x40
00000e24: DUP1
00000e25: MLOAD
00000e26: DUP4
00000e27: DUP2
00000e28: MSTORE
00000e29: SWAP1
00000e2a: MLOAD
00000e2b: CALLER
00000e2c: SWAP2
00000e2d: PUSH32 0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a
00000e4e: SWAP2
00000e4f: SWAP1
00000e50: DUP2
00000e51: SWAP1
00000e52: SUB
00000e53: PUSH1 0x20
00000e55: ADD
00000e56: SWAP1
00000e57: LOG2
00000e58: POP
00000e59: SWAP1
00000e5a: JUMP
00000e5b: JUMPDEST
00000e5c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
00000e7d: DUP2
00000e7e: JUMP
00000e7f: JUMPDEST
00000e80: PUSH1 0x07
00000e82: PUSH1 0x20
00000e84: MSTORE
00000e85: PUSH1 0x00
00000e87: SWAP1
00000e88: DUP2
00000e89: MSTORE
00000e8a: PUSH1 0x40
00000e8c: SWAP1
00000e8d: KECCAK256
00000e8e: SLOAD
00000e8f: DUP2
00000e90: JUMP
00000e91: JUMPDEST
00000e92: CALLER
00000e93: PUSH1 0x00
00000e95: SWAP1
00000e96: DUP2
00000e97: MSTORE
00000e98: PUSH1 0x06
00000e9a: PUSH1 0x20
00000e9c: MSTORE
00000e9d: PUSH1 0x40
00000e9f: DUP2
00000ea0: KECCAK256
00000ea1: PUSH1 0x02
00000ea3: DUP2
00000ea4: ADD
00000ea5: SLOAD
00000ea6: PUSH1 0xff
00000ea8: AND
00000ea9: PUSH2 0x0ee3
00000eac: JUMPI
00000ead: PUSH1 0x40
00000eaf: MLOAD
00000eb0: PUSH3 0x461bcd
00000eb4: PUSH1 0xe5
00000eb6: SHL
00000eb7: DUP2
00000eb8: MSTORE
00000eb9: PUSH1 0x04
00000ebb: ADD
00000ebc: DUP1
00000ebd: DUP1
00000ebe: PUSH1 0x20
00000ec0: ADD
00000ec1: DUP3
00000ec2: DUP2
00000ec3: SUB
00000ec4: DUP3
00000ec5: MSTORE
00000ec6: PUSH1 0x24
00000ec8: DUP2
00000ec9: MSTORE
00000eca: PUSH1 0x20
00000ecc: ADD
00000ecd: DUP1
00000ece: PUSH2 0x279c
00000ed1: PUSH1 0x24
00000ed3: SWAP2
00000ed4: CODECOPY
00000ed5: PUSH1 0x40
00000ed7: ADD
00000ed8: SWAP2
00000ed9: POP
00000eda: POP
00000edb: PUSH1 0x40
00000edd: MLOAD
00000ede: DUP1
00000edf: SWAP2
00000ee0: SUB
00000ee1: SWAP1
00000ee2: REVERT
00000ee3: JUMPDEST
00000ee4: PUSH2 0x0eec
00000ee7: CALLER
00000ee8: PUSH2 0x1216
00000eeb: JUMP
00000eec: JUMPDEST
00000eed: SWAP2
00000eee: POP
00000eef: PUSH1 0x00
00000ef1: DUP3
00000ef2: GT
00000ef3: PUSH2 0x0f2d
00000ef6: JUMPI
00000ef7: PUSH1 0x40
00000ef9: MLOAD
00000efa: PUSH3 0x461bcd
00000efe: PUSH1 0xe5
00000f00: SHL
00000f01: DUP2
00000f02: MSTORE
00000f03: PUSH1 0x04
00000f05: ADD
00000f06: DUP1
00000f07: DUP1
00000f08: PUSH1 0x20
00000f0a: ADD
00000f0b: DUP3
00000f0c: DUP2
00000f0d: SUB
00000f0e: DUP3
00000f0f: MSTORE
00000f10: PUSH1 0x41
00000f12: DUP2
00000f13: MSTORE
00000f14: PUSH1 0x20
00000f16: ADD
00000f17: DUP1
00000f18: PUSH2 0x2840
00000f1b: PUSH1 0x41
00000f1d: SWAP2
00000f1e: CODECOPY
00000f1f: PUSH1 0x60
00000f21: ADD
00000f22: SWAP2
00000f23: POP
00000f24: POP
00000f25: PUSH1 0x40
00000f27: MLOAD
00000f28: DUP1
00000f29: SWAP2
00000f2a: SUB
00000f2b: SWAP1
00000f2c: REVERT
00000f2d: JUMPDEST
00000f2e: DUP1
00000f2f: SLOAD
00000f30: DUP3
00000f31: EQ
00000f32: ISZERO
00000f33: PUSH2 0x0fdd
00000f36: JUMPI
00000f37: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2
00000f58: PUSH1 0x01
00000f5a: PUSH1 0x01
00000f5c: PUSH1 0xa0
00000f5e: SHL
00000f5f: SUB
00000f60: AND
00000f61: PUSH4 0x49e5add4
00000f66: CALLER
00000f67: PUSH1 0x00
00000f69: PUSH1 0x40
00000f6b: MLOAD
00000f6c: DUP4
00000f6d: PUSH4 0xffffffff
00000f72: AND
00000f73: PUSH1 0xe0
00000f75: SHL
00000f76: DUP2
00000f77: MSTORE
00000f78: PUSH1 0x04
00000f7a: ADD
00000f7b: DUP1
00000f7c: DUP4
00000f7d: PUSH1 0x01
00000f7f: PUSH1 0x01
00000f81: PUSH1 0xa0
00000f83: SHL
00000f84: SUB
00000f85: AND
00000f86: DUP2
00000f87: MSTORE
00000f88: PUSH1 0x20
00000f8a: ADD
00000f8b: DUP3
00000f8c: ISZERO
00000f8d: ISZERO
00000f8e: DUP2
00000f8f: MSTORE
00000f90: PUSH1 0x20
00000f92: ADD
00000f93: SWAP3
00000f94: POP
00000f95: POP
00000f96: POP
00000f97: PUSH1 0x20
00000f99: PUSH1 0x40
00000f9b: MLOAD
00000f9c: DUP1
00000f9d: DUP4
00000f9e: SUB
00000f9f: DUP2
00000fa0: PUSH1 0x00
00000fa2: DUP8
00000fa3: DUP1
00000fa4: EXTCODESIZE
00000fa5: ISZERO
00000fa6: DUP1
00000fa7: ISZERO
00000fa8: PUSH2 0x0fb0
00000fab: JUMPI
00000fac: PUSH1 0x00
00000fae: DUP1
00000faf: REVERT
00000fb0: JUMPDEST
00000fb1: POP
00000fb2: GAS
00000fb3: CALL
00000fb4: ISZERO
00000fb5: DUP1
00000fb6: ISZERO
00000fb7: PUSH2 0x0fc4
00000fba: JUMPI
00000fbb: RETURNDATASIZE
00000fbc: PUSH1 0x00
00000fbe: DUP1
00000fbf: RETURNDATACOPY
00000fc0: RETURNDATASIZE
00000fc1: PUSH1 0x00
00000fc3: REVERT
00000fc4: JUMPDEST
00000fc5: POP
00000fc6: POP
00000fc7: POP
00000fc8: POP
00000fc9: PUSH1 0x40
00000fcb: MLOAD
00000fcc: RETURNDATASIZE
00000fcd: PUSH1 0x20
00000fcf: DUP2
00000fd0: LT
00000fd1: ISZERO
00000fd2: PUSH2 0x0fda
00000fd5: JUMPI
00000fd6: PUSH1 0x00
00000fd8: DUP1
00000fd9: REVERT
00000fda: JUMPDEST
00000fdb: POP
00000fdc: POP
00000fdd: JUMPDEST
00000fde: DUP1
00000fdf: SLOAD
00000fe0: PUSH2 0x0fe9
00000fe3: SWAP1
00000fe4: DUP4
00000fe5: PUSH2 0x21a6
00000fe8: JUMP
00000fe9: JUMPDEST
00000fea: DUP1
00000feb: DUP3
00000fec: SSTORE
00000fed: PUSH1 0x00
00000fef: SWAP1
00000ff0: PUSH2 0x0ffa
00000ff3: SWAP1
00000ff4: DUP5
00000ff5: SWAP1
00000ff6: PUSH2 0x21bb
00000ff9: JUMP
00000ffa: JUMPDEST
00000ffb: PUSH1 0x01
00000ffd: DUP4
00000ffe: ADD
00000fff: SLOAD
00001000: SWAP1
00001001: SWAP2
00001002: POP
00001003: PUSH2 0x100c
00001006: SWAP1
00001007: DUP3
00001008: PUSH2 0x22ee
0000100b: JUMP
0000100c: JUMPDEST
0000100d: PUSH1 0x01
0000100f: DUP4
00001010: ADD
00001011: SSTORE
00001012: PUSH1 0x40
00001014: DUP1
00001015: MLOAD
00001016: DUP5
00001017: DUP2
00001018: MSTORE
00001019: PUSH1 0x20
0000101b: DUP2
0000101c: ADD
0000101d: DUP4
0000101e: SWAP1
0000101f: MSTORE
00001020: DUP2
00001021: MLOAD
00001022: CALLER
00001023: SWAP3
00001024: PUSH32 0x73f04af9dcc582a923ec15d3eea990fe34adabfff2879e28d44572e01a54abb6
00001045: SWAP3
00001046: DUP3
00001047: SWAP1
00001048: SUB
00001049: ADD
0000104a: SWAP1
0000104b: LOG2
0000104c: PUSH2 0x1055
0000104f: CALLER
00001050: DUP5
00001051: PUSH2 0x2307
00001054: JUMP
00001055: JUMPDEST
00001056: POP
00001057: POP
00001058: SWAP1
00001059: JUMP
0000105a: JUMPDEST
0000105b: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000320
0000107c: DUP2
0000107d: JUMP
0000107e: JUMPDEST
0000107f: PUSH1 0x04
00001081: SLOAD
00001082: DUP2
00001083: JUMP
00001084: JUMPDEST
00001085: PUSH1 0x08
00001087: SLOAD
00001088: PUSH1 0x05
0000108a: SLOAD
0000108b: PUSH1 0x00
0000108d: SWAP2
0000108e: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
000010af: MUL
000010b0: SWAP1
000010b1: PUSH2 0x10c9
000010b4: JUMPI
000010b5: PUSH2 0x10c1
000010b8: DUP5
000010b9: DUP3
000010ba: PUSH1 0x01
000010bc: SLOAD
000010bd: PUSH2 0x23f1
000010c0: JUMP
000010c1: JUMPDEST
000010c2: SWAP2
000010c3: POP
000010c4: POP
000010c5: PUSH2 0x081d
000010c8: JUMP
000010c9: JUMPDEST
000010ca: PUSH1 0x08
000010cc: SLOAD
000010cd: PUSH1 0x00
000010cf: SWAP1
000010d0: DUP2
000010d1: SWAP1
000010d2: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
000010f3: MUL
000010f4: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
00001115: DUP7
00001116: GT
00001117: ISZERO
00001118: PUSH2 0x117a
0000111b: JUMPI
0000111c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000113d: DUP7
0000113e: SUB
0000113f: SWAP2
00001140: POP
00001141: PUSH1 0x00
00001143: DUP2
00001144: PUSH1 0x01
00001146: SLOAD
00001147: SUB
00001148: SWAP1
00001149: POP
0000114a: PUSH2 0x1156
0000114d: DUP4
0000114e: DUP3
0000114f: PUSH1 0x05
00001151: SLOAD
00001152: PUSH2 0x243d
00001155: JUMP
00001156: JUMPDEST
00001157: SWAP4
00001158: POP
00001159: DUP4
0000115a: DUP9
0000115b: GT
0000115c: PUSH2 0x1178
0000115f: JUMPI
00001160: PUSH2 0x116c
00001163: DUP9
00001164: PUSH1 0x05
00001166: SLOAD
00001167: DUP4
00001168: PUSH2 0x23f1
0000116b: JUMP
0000116c: JUMPDEST
0000116d: SWAP6
0000116e: POP
0000116f: POP
00001170: POP
00001171: POP
00001172: POP
00001173: POP
00001174: PUSH2 0x081d
00001177: JUMP
00001178: JUMPDEST
00001179: POP
0000117a: JUMPDEST
0000117b: DUP3
0000117c: DUP8
0000117d: SUB
0000117e: SWAP7
0000117f: POP
00001180: PUSH2 0x118a
00001183: DUP8
00001184: DUP6
00001185: DUP4
00001186: PUSH2 0x23f1
00001189: JUMP
0000118a: JUMPDEST
0000118b: SWAP1
0000118c: SWAP2
0000118d: ADD
0000118e: SWAP7
0000118f: SWAP6
00001190: POP
00001191: POP
00001192: POP
00001193: POP
00001194: POP
00001195: POP
00001196: JUMP
00001197: JUMPDEST
00001198: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000
000011b9: DUP2
000011ba: JUMP
000011bb: JUMPDEST
000011bc: PUSH2 0x11c3
000011bf: PUSH2 0x1446
000011c2: JUMP
000011c3: JUMPDEST
000011c4: PUSH2 0x11cc
000011c7: JUMPI
000011c8: PUSH1 0x00
000011ca: DUP1
000011cb: REVERT
000011cc: JUMPDEST
000011cd: PUSH1 0x00
000011cf: DUP1
000011d0: SLOAD
000011d1: PUSH1 0x40
000011d3: MLOAD
000011d4: PUSH1 0x01
000011d6: PUSH1 0x01
000011d8: PUSH1 0xa0
000011da: SHL
000011db: SUB
000011dc: SWAP1
000011dd: SWAP2
000011de: AND
000011df: SWAP1
000011e0: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00001201: SWAP1
00001202: DUP4
00001203: SWAP1
00001204: LOG3
00001205: PUSH1 0x00
00001207: DUP1
00001208: SLOAD
00001209: PUSH1 0x01
0000120b: PUSH1 0x01
0000120d: PUSH1 0xa0
0000120f: SHL
00001210: SUB
00001211: NOT
00001212: AND
00001213: SWAP1
00001214: SSTORE
00001215: JUMP
00001216: JUMPDEST
00001217: PUSH1 0x01
00001219: PUSH1 0x01
0000121b: PUSH1 0xa0
0000121d: SHL
0000121e: SUB
0000121f: DUP2
00001220: AND
00001221: PUSH1 0x00
00001223: SWAP1
00001224: DUP2
00001225: MSTORE
00001226: PUSH1 0x06
00001228: PUSH1 0x20
0000122a: MSTORE
0000122b: PUSH1 0x40
0000122d: DUP2
0000122e: KECCAK256
0000122f: DUP1
00001230: SLOAD
00001231: PUSH2 0x123e
00001234: JUMPI
00001235: PUSH1 0x00
00001237: SWAP2
00001238: POP
00001239: POP
0000123a: PUSH2 0x080b
0000123d: JUMP
0000123e: JUMPDEST
0000123f: PUSH1 0x00
00001241: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2
00001262: PUSH1 0x01
00001264: PUSH1 0x01
00001266: PUSH1 0xa0
00001268: SHL
00001269: SUB
0000126a: AND
0000126b: PUSH4 0xd094adbf
00001270: DUP6
00001271: PUSH1 0x40
00001273: MLOAD
00001274: DUP3
00001275: PUSH4 0xffffffff
0000127a: AND
0000127b: PUSH1 0xe0
0000127d: SHL
0000127e: DUP2
0000127f: MSTORE
00001280: PUSH1 0x04
00001282: ADD
00001283: DUP1
00001284: DUP3
00001285: PUSH1 0x01
00001287: PUSH1 0x01
00001289: PUSH1 0xa0
0000128b: SHL
0000128c: SUB
0000128d: AND
0000128e: DUP2
0000128f: MSTORE
00001290: PUSH1 0x20
00001292: ADD
00001293: SWAP2
00001294: POP
00001295: POP
00001296: PUSH1 0x20
00001298: PUSH1 0x40
0000129a: MLOAD
0000129b: DUP1
0000129c: DUP4
0000129d: SUB
0000129e: DUP2
0000129f: DUP7
000012a0: DUP1
000012a1: EXTCODESIZE
000012a2: ISZERO
000012a3: DUP1
000012a4: ISZERO
000012a5: PUSH2 0x12ad
000012a8: JUMPI
000012a9: PUSH1 0x00
000012ab: DUP1
000012ac: REVERT
000012ad: JUMPDEST
000012ae: POP
000012af: GAS
000012b0: STATICCALL
000012b1: ISZERO
000012b2: DUP1
000012b3: ISZERO
000012b4: PUSH2 0x12c1
000012b7: JUMPI
000012b8: RETURNDATASIZE
000012b9: PUSH1 0x00
000012bb: DUP1
000012bc: RETURNDATACOPY
000012bd: RETURNDATASIZE
000012be: PUSH1 0x00
000012c0: REVERT
000012c1: JUMPDEST
000012c2: POP
000012c3: POP
000012c4: POP
000012c5: POP
000012c6: PUSH1 0x40
000012c8: MLOAD
000012c9: RETURNDATASIZE
000012ca: PUSH1 0x20
000012cc: DUP2
000012cd: LT
000012ce: ISZERO
000012cf: PUSH2 0x12d7
000012d2: JUMPI
000012d3: PUSH1 0x00
000012d5: DUP1
000012d6: REVERT
000012d7: JUMPDEST
000012d8: POP
000012d9: MLOAD
000012da: PUSH1 0x01
000012dc: DUP4
000012dd: ADD
000012de: SLOAD
000012df: SWAP1
000012e0: SWAP2
000012e1: POP
000012e2: PUSH1 0x00
000012e4: SWAP1
000012e5: PUSH2 0x12ef
000012e8: SWAP1
000012e9: DUP4
000012ea: SWAP1
000012eb: PUSH2 0x21a6
000012ee: JUMP
000012ef: JUMPDEST
000012f0: SWAP1
000012f1: POP
000012f2: DUP1
000012f3: PUSH2 0x1302
000012f6: JUMPI
000012f7: PUSH1 0x00
000012f9: SWAP4
000012fa: POP
000012fb: POP
000012fc: POP
000012fd: POP
000012fe: PUSH2 0x080b
00001301: JUMP
00001302: JUMPDEST
00001303: PUSH1 0x00
00001305: PUSH2 0x1312
00001308: DUP3
00001309: DUP6
0000130a: PUSH1 0x00
0000130c: ADD
0000130d: SLOAD
0000130e: PUSH2 0x1084
00001311: JUMP
00001312: JUMPDEST
00001313: DUP5
00001314: SLOAD
00001315: SWAP1
00001316: SWAP2
00001317: POP
00001318: DUP2
00001319: GT
0000131a: ISZERO
0000131b: PUSH2 0x1322
0000131e: JUMPI
0000131f: POP
00001320: DUP3
00001321: SLOAD
00001322: JUMPDEST
00001323: SWAP6
00001324: SWAP5
00001325: POP
00001326: POP
00001327: POP
00001328: POP
00001329: POP
0000132a: JUMP
0000132b: JUMPDEST
0000132c: PUSH1 0x01
0000132e: SLOAD
0000132f: DUP2
00001330: JUMP
00001331: JUMPDEST
00001332: PUSH1 0x02
00001334: SLOAD
00001335: DUP2
00001336: JUMP
00001337: JUMPDEST
00001338: PUSH1 0x64
0000133a: DUP2
0000133b: JUMP
0000133c: JUMPDEST
0000133d: CALLER
0000133e: PUSH1 0x00
00001340: SWAP1
00001341: DUP2
00001342: MSTORE
00001343: PUSH1 0x07
00001345: PUSH1 0x20
00001347: MSTORE
00001348: PUSH1 0x40
0000134a: SWAP1
0000134b: KECCAK256
0000134c: SLOAD
0000134d: DUP1
0000134e: PUSH2 0x139e
00001351: JUMPI
00001352: PUSH1 0x40
00001354: DUP1
00001355: MLOAD
00001356: PUSH3 0x461bcd
0000135a: PUSH1 0xe5
0000135c: SHL
0000135d: DUP2
0000135e: MSTORE
0000135f: PUSH1 0x20
00001361: PUSH1 0x04
00001363: DUP3
00001364: ADD
00001365: MSTORE
00001366: PUSH1 0x18
00001368: PUSH1 0x24
0000136a: DUP3
0000136b: ADD
0000136c: MSTORE
0000136d: PUSH32 0x5468657265206973206e6f20636f6d70656e736174696f6e0000000000000000
0000138e: PUSH1 0x44
00001390: DUP3
00001391: ADD
00001392: MSTORE
00001393: SWAP1
00001394: MLOAD
00001395: SWAP1
00001396: DUP2
00001397: SWAP1
00001398: SUB
00001399: PUSH1 0x64
0000139b: ADD
0000139c: SWAP1
0000139d: REVERT
0000139e: JUMPDEST
0000139f: CALLER
000013a0: PUSH1 0x00
000013a2: DUP2
000013a3: DUP2
000013a4: MSTORE
000013a5: PUSH1 0x07
000013a7: PUSH1 0x20
000013a9: MSTORE
000013aa: PUSH1 0x40
000013ac: DUP2
000013ad: KECCAK256
000013ae: SSTORE
000013af: PUSH2 0x13b8
000013b2: SWAP1
000013b3: DUP3
000013b4: PUSH2 0x2307
000013b7: JUMP
000013b8: JUMPDEST
000013b9: PUSH1 0x40
000013bb: DUP1
000013bc: MLOAD
000013bd: DUP3
000013be: DUP2
000013bf: MSTORE
000013c0: SWAP1
000013c1: MLOAD
000013c2: CALLER
000013c3: SWAP2
000013c4: PUSH32 0x1480b15e3eab83a9b923578ffe330e3dce94536007ec9c0b48a5dfbde8c49181
000013e5: SWAP2
000013e6: SWAP1
000013e7: DUP2
000013e8: SWAP1
000013e9: SUB
000013ea: PUSH1 0x20
000013ec: ADD
000013ed: SWAP1
000013ee: LOG2
000013ef: POP
000013f0: JUMP
000013f1: JUMPDEST
000013f2: PUSH1 0x00
000013f4: PUSH1 0x04
000013f6: SLOAD
000013f7: TIMESTAMP
000013f8: LT
000013f9: ISZERO
000013fa: DUP1
000013fb: ISZERO
000013fc: PUSH2 0x1408
000013ff: JUMPI
00001400: POP
00001401: PUSH1 0x08
00001403: SLOAD
00001404: PUSH1 0x09
00001406: SLOAD
00001407: EQ
00001408: JUMPDEST
00001409: SWAP1
0000140a: POP
0000140b: SWAP1
0000140c: JUMP
0000140d: JUMPDEST
0000140e: PUSH1 0x03
00001410: SLOAD
00001411: DUP2
00001412: JUMP
00001413: JUMPDEST
00001414: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
00001435: DUP2
00001436: JUMP
00001437: JUMPDEST
00001438: PUSH1 0x00
0000143a: SLOAD
0000143b: PUSH1 0x01
0000143d: PUSH1 0x01
0000143f: PUSH1 0xa0
00001441: SHL
00001442: SUB
00001443: AND
00001444: SWAP1
00001445: JUMP
00001446: JUMPDEST
00001447: PUSH1 0x00
00001449: SLOAD
0000144a: PUSH1 0x01
0000144c: PUSH1 0x01
0000144e: PUSH1 0xa0
00001450: SHL
00001451: SUB
00001452: AND
00001453: CALLER
00001454: EQ
00001455: SWAP1
00001456: JUMP
00001457: JUMPDEST
00001458: PUSH1 0x04
0000145a: SLOAD
0000145b: TIMESTAMP
0000145c: LT
0000145d: PUSH2 0x1497
00001460: JUMPI
00001461: PUSH1 0x40
00001463: MLOAD
00001464: PUSH3 0x461bcd
00001468: PUSH1 0xe5
0000146a: SHL
0000146b: DUP2
0000146c: MSTORE
0000146d: PUSH1 0x04
0000146f: ADD
00001470: DUP1
00001471: DUP1
00001472: PUSH1 0x20
00001474: ADD
00001475: DUP3
00001476: DUP2
00001477: SUB
00001478: DUP3
00001479: MSTORE
0000147a: PUSH1 0x34
0000147c: DUP2
0000147d: MSTORE
0000147e: PUSH1 0x20
00001480: ADD
00001481: DUP1
00001482: PUSH2 0x2881
00001485: PUSH1 0x34
00001487: SWAP2
00001488: CODECOPY
00001489: PUSH1 0x40
0000148b: ADD
0000148c: SWAP2
0000148d: POP
0000148e: POP
0000148f: PUSH1 0x40
00001491: MLOAD
00001492: DUP1
00001493: SWAP2
00001494: SUB
00001495: SWAP1
00001496: REVERT
00001497: JUMPDEST
00001498: CALLER
00001499: PUSH1 0x00
0000149b: SWAP1
0000149c: DUP2
0000149d: MSTORE
0000149e: PUSH1 0x06
000014a0: PUSH1 0x20
000014a2: MSTORE
000014a3: PUSH1 0x40
000014a5: SWAP1
000014a6: KECCAK256
000014a7: DUP1
000014a8: SLOAD
000014a9: PUSH2 0x14ec
000014ac: JUMPI
000014ad: PUSH1 0x40
000014af: DUP1
000014b0: MLOAD
000014b1: PUSH3 0x461bcd
000014b5: PUSH1 0xe5
000014b7: SHL
000014b8: DUP2
000014b9: MSTORE
000014ba: PUSH1 0x20
000014bc: PUSH1 0x04
000014be: DUP3
000014bf: ADD
000014c0: MSTORE
000014c1: PUSH1 0x10
000014c3: PUSH1 0x24
000014c5: DUP3
000014c6: ADD
000014c7: MSTORE
000014c8: PUSH16 0x139bc8189a59081d1bc818d85b98d95b
000014d9: PUSH1 0x82
000014db: SHL
000014dc: PUSH1 0x44
000014de: DUP3
000014df: ADD
000014e0: MSTORE
000014e1: SWAP1
000014e2: MLOAD
000014e3: SWAP1
000014e4: DUP2
000014e5: SWAP1
000014e6: SUB
000014e7: PUSH1 0x64
000014e9: ADD
000014ea: SWAP1
000014eb: REVERT
000014ec: JUMPDEST
000014ed: PUSH1 0x02
000014ef: DUP2
000014f0: ADD
000014f1: SLOAD
000014f2: PUSH1 0xff
000014f4: AND
000014f5: ISZERO
000014f6: PUSH2 0x1546
000014f9: JUMPI
000014fa: PUSH1 0x40
000014fc: DUP1
000014fd: MLOAD
000014fe: PUSH3 0x461bcd
00001502: PUSH1 0xe5
00001504: SHL
00001505: DUP2
00001506: MSTORE
00001507: PUSH1 0x20
00001509: PUSH1 0x04
0000150b: DUP3
0000150c: ADD
0000150d: MSTORE
0000150e: PUSH1 0x1a
00001510: PUSH1 0x24
00001512: DUP3
00001513: ADD
00001514: MSTORE
00001515: PUSH32 0x546f6b656e732061726520616c726561647920636c61696d6564000000000000
00001536: PUSH1 0x44
00001538: DUP3
00001539: ADD
0000153a: MSTORE
0000153b: SWAP1
0000153c: MLOAD
0000153d: SWAP1
0000153e: DUP2
0000153f: SWAP1
00001540: SUB
00001541: PUSH1 0x64
00001543: ADD
00001544: SWAP1
00001545: REVERT
00001546: JUMPDEST
00001547: DUP1
00001548: SLOAD
00001549: PUSH1 0x00
0000154b: DUP3
0000154c: SSTORE
0000154d: PUSH1 0x08
0000154f: SLOAD
00001550: PUSH1 0x02
00001552: DUP4
00001553: ADD
00001554: SLOAD
00001555: PUSH1 0x00
00001557: NOT
00001558: SWAP1
00001559: SWAP2
0000155a: ADD
0000155b: SWAP1
0000155c: PUSH2 0x0100
0000155f: SWAP1
00001560: DIV
00001561: PUSH1 0x01
00001563: PUSH1 0x01
00001565: PUSH1 0x80
00001567: SHL
00001568: SUB
00001569: AND
0000156a: DUP2
0000156b: EQ
0000156c: PUSH2 0x161f
0000156f: JUMPI
00001570: PUSH1 0x00
00001572: PUSH1 0x08
00001574: DUP3
00001575: DUP2
00001576: SLOAD
00001577: DUP2
00001578: LT
00001579: PUSH2 0x157e
0000157c: JUMPI
0000157d: INVALID
0000157e: JUMPDEST
0000157f: PUSH1 0x00
00001581: SWAP2
00001582: DUP3
00001583: MSTORE
00001584: PUSH1 0x20
00001586: SWAP1
00001587: SWAP2
00001588: KECCAK256
00001589: ADD
0000158a: SLOAD
0000158b: PUSH1 0x02
0000158d: DUP6
0000158e: ADD
0000158f: SLOAD
00001590: PUSH1 0x08
00001592: DUP1
00001593: SLOAD
00001594: PUSH1 0x01
00001596: PUSH1 0x01
00001598: PUSH1 0xa0
0000159a: SHL
0000159b: SUB
0000159c: SWAP1
0000159d: SWAP4
0000159e: AND
0000159f: SWAP4
000015a0: POP
000015a1: DUP4
000015a2: SWAP3
000015a3: SWAP1
000015a4: SWAP2
000015a5: PUSH2 0x0100
000015a8: SWAP1
000015a9: DIV
000015aa: PUSH1 0x01
000015ac: PUSH1 0x01
000015ae: PUSH1 0x80
000015b0: SHL
000015b1: SUB
000015b2: AND
000015b3: SWAP1
000015b4: DUP2
000015b5: LT
000015b6: PUSH2 0x15bb
000015b9: JUMPI
000015ba: INVALID
000015bb: JUMPDEST
000015bc: PUSH1 0x00
000015be: SWAP2
000015bf: DUP3
000015c0: MSTORE
000015c1: PUSH1 0x20
000015c3: DUP1
000015c4: DUP4
000015c5: KECCAK256
000015c6: SWAP2
000015c7: SWAP1
000015c8: SWAP2
000015c9: ADD
000015ca: DUP1
000015cb: SLOAD
000015cc: PUSH1 0x01
000015ce: PUSH1 0x01
000015d0: PUSH1 0xa0
000015d2: SHL
000015d3: SUB
000015d4: NOT
000015d5: AND
000015d6: PUSH1 0x01
000015d8: PUSH1 0x01
000015da: PUSH1 0xa0
000015dc: SHL
000015dd: SUB
000015de: SWAP5
000015df: DUP6
000015e0: AND
000015e1: OR
000015e2: SWAP1
000015e3: SSTORE
000015e4: PUSH1 0x02
000015e6: DUP8
000015e7: DUP2
000015e8: ADD
000015e9: SLOAD
000015ea: SWAP5
000015eb: SWAP1
000015ec: SWAP4
000015ed: AND
000015ee: DUP3
000015ef: MSTORE
000015f0: PUSH1 0x06
000015f2: SWAP1
000015f3: MSTORE
000015f4: PUSH1 0x40
000015f6: SWAP1
000015f7: KECCAK256
000015f8: ADD
000015f9: DUP1
000015fa: SLOAD
000015fb: PUSH2 0x0100
000015fe: PUSH1 0x01
00001600: PUSH1 0x88
00001602: SHL
00001603: SUB
00001604: NOT
00001605: AND
00001606: PUSH2 0x0100
00001609: SWAP3
0000160a: DUP4
0000160b: SWAP1
0000160c: DIV
0000160d: PUSH1 0x01
0000160f: PUSH1 0x01
00001611: PUSH1 0x80
00001613: SHL
00001614: SUB
00001615: AND
00001616: SWAP1
00001617: SWAP3
00001618: MUL
00001619: SWAP2
0000161a: SWAP1
0000161b: SWAP2
0000161c: OR
0000161d: SWAP1
0000161e: SSTORE
0000161f: JUMPDEST
00001620: PUSH1 0x08
00001622: DUP1
00001623: SLOAD
00001624: DUP1
00001625: PUSH2 0x162a
00001628: JUMPI
00001629: INVALID
0000162a: JUMPDEST
0000162b: PUSH1 0x00
0000162d: DUP3
0000162e: DUP2
0000162f: MSTORE
00001630: PUSH1 0x20
00001632: SWAP1
00001633: KECCAK256
00001634: DUP2
00001635: ADD
00001636: PUSH1 0x00
00001638: NOT
00001639: SWAP1
0000163a: DUP2
0000163b: ADD
0000163c: DUP1
0000163d: SLOAD
0000163e: PUSH1 0x01
00001640: PUSH1 0x01
00001642: PUSH1 0xa0
00001644: SHL
00001645: SUB
00001646: NOT
00001647: AND
00001648: SWAP1
00001649: SSTORE
0000164a: ADD
0000164b: SWAP1
0000164c: SSTORE
0000164d: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000166e: DUP3
0000166f: GT
00001670: ISZERO
00001671: PUSH2 0x16a7
00001674: JUMPI
00001675: PUSH1 0x05
00001677: SLOAD
00001678: PUSH2 0x16a3
0000167b: SWAP1
0000167c: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000169d: DUP5
0000169e: SUB
0000169f: PUSH2 0x21a6
000016a2: JUMP
000016a3: JUMPDEST
000016a4: PUSH1 0x05
000016a6: SSTORE
000016a7: JUMPDEST
000016a8: PUSH2 0x16b1
000016ab: CALLER
000016ac: DUP4
000016ad: PUSH2 0x2307
000016b0: JUMP
000016b1: JUMPDEST
000016b2: PUSH1 0x40
000016b4: DUP1
000016b5: MLOAD
000016b6: DUP4
000016b7: DUP2
000016b8: MSTORE
000016b9: SWAP1
000016ba: MLOAD
000016bb: CALLER
000016bc: SWAP2
000016bd: PUSH32 0xf3a6ef5718c05d9183af076f5753197b68b04552a763c34796637d6134bdd0f2
000016de: SWAP2
000016df: SWAP1
000016e0: DUP2
000016e1: SWAP1
000016e2: SUB
000016e3: PUSH1 0x20
000016e5: ADD
000016e6: SWAP1
000016e7: LOG2
000016e8: POP
000016e9: POP
000016ea: POP
000016eb: JUMP
000016ec: JUMPDEST
000016ed: PUSH1 0x05
000016ef: SLOAD
000016f0: DUP2
000016f1: JUMP
000016f2: JUMPDEST
000016f3: PUSH1 0x00
000016f5: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
00001716: DUP3
00001717: LT
00001718: ISZERO
00001719: PUSH2 0x1724
0000171c: JUMPI
0000171d: POP
0000171e: PUSH1 0x00
00001720: PUSH2 0x080b
00001723: JUMP
00001724: JUMPDEST
00001725: PUSH1 0x05
00001727: SLOAD
00001728: PUSH2 0x1740
0000172b: JUMPI
0000172c: PUSH1 0x08
0000172e: SLOAD
0000172f: PUSH1 0x01
00001731: SLOAD
00001732: DUP2
00001733: PUSH2 0x1738
00001736: JUMPI
00001737: INVALID
00001738: JUMPDEST
00001739: DIV
0000173a: SWAP1
0000173b: POP
0000173c: PUSH2 0x080b
0000173f: JUMP
00001740: JUMPDEST
00001741: PUSH1 0x08
00001743: SLOAD
00001744: PUSH1 0x01
00001746: SLOAD
00001747: PUSH1 0x05
00001749: SLOAD
0000174a: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000176b: DUP6
0000176c: SUB
0000176d: SWAP3
0000176e: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
0000178f: MUL
00001790: SWAP1
00001791: SWAP2
00001792: SUB
00001793: SWAP1
00001794: PUSH2 0x17a7
00001797: SWAP1
00001798: PUSH2 0x17a1
0000179b: DUP5
0000179c: DUP5
0000179d: PUSH2 0x2477
000017a0: JUMP
000017a1: JUMPDEST
000017a2: SWAP1
000017a3: PUSH2 0x249e
000017a6: JUMP
000017a7: JUMPDEST
000017a8: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
000017c9: ADD
000017ca: SWAP5
000017cb: SWAP4
000017cc: POP
000017cd: POP
000017ce: POP
000017cf: POP
000017d0: JUMP
000017d1: JUMPDEST
000017d2: PUSH1 0x09
000017d4: SLOAD
000017d5: DUP2
000017d6: JUMP
000017d7: JUMPDEST
000017d8: PUSH1 0x00
000017da: PUSH1 0x04
000017dc: SLOAD
000017dd: TIMESTAMP
000017de: LT
000017df: ISZERO
000017e0: PUSH2 0x181a
000017e3: JUMPI
000017e4: PUSH1 0x40
000017e6: MLOAD
000017e7: PUSH3 0x461bcd
000017eb: PUSH1 0xe5
000017ed: SHL
000017ee: DUP2
000017ef: MSTORE
000017f0: PUSH1 0x04
000017f2: ADD
000017f3: DUP1
000017f4: DUP1
000017f5: PUSH1 0x20
000017f7: ADD
000017f8: DUP3
000017f9: DUP2
000017fa: SUB
000017fb: DUP3
000017fc: MSTORE
000017fd: PUSH1 0x34
000017ff: DUP2
00001800: MSTORE
00001801: PUSH1 0x20
00001803: ADD
00001804: DUP1
00001805: PUSH2 0x2900
00001808: PUSH1 0x34
0000180a: SWAP2
0000180b: CODECOPY
0000180c: PUSH1 0x40
0000180e: ADD
0000180f: SWAP2
00001810: POP
00001811: POP
00001812: PUSH1 0x40
00001814: MLOAD
00001815: DUP1
00001816: SWAP2
00001817: SUB
00001818: SWAP1
00001819: REVERT
0000181a: JUMPDEST
0000181b: PUSH1 0x08
0000181d: SLOAD
0000181e: PUSH1 0x09
00001820: SLOAD
00001821: EQ
00001822: ISZERO
00001823: PUSH2 0x185d
00001826: JUMPI
00001827: PUSH1 0x40
00001829: MLOAD
0000182a: PUSH3 0x461bcd
0000182e: PUSH1 0xe5
00001830: SHL
00001831: DUP2
00001832: MSTORE
00001833: PUSH1 0x04
00001835: ADD
00001836: DUP1
00001837: DUP1
00001838: PUSH1 0x20
0000183a: ADD
0000183b: DUP3
0000183c: DUP2
0000183d: SUB
0000183e: DUP3
0000183f: MSTORE
00001840: PUSH1 0x21
00001842: DUP2
00001843: MSTORE
00001844: PUSH1 0x20
00001846: ADD
00001847: DUP1
00001848: PUSH2 0x2727
0000184b: PUSH1 0x21
0000184d: SWAP2
0000184e: CODECOPY
0000184f: PUSH1 0x40
00001851: ADD
00001852: SWAP2
00001853: POP
00001854: POP
00001855: PUSH1 0x40
00001857: MLOAD
00001858: DUP1
00001859: SWAP2
0000185a: SUB
0000185b: SWAP1
0000185c: REVERT
0000185d: JUMPDEST
0000185e: PUSH1 0x09
00001860: SLOAD
00001861: PUSH1 0x05
00001863: SLOAD
00001864: PUSH2 0x18e5
00001867: JUMPI
00001868: PUSH1 0x08
0000186a: SLOAD
0000186b: PUSH1 0x01
0000186d: SLOAD
0000186e: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000
0000188f: SWAP2
00001890: SWAP1
00001891: DUP2
00001892: PUSH2 0x1897
00001895: JUMPI
00001896: INVALID
00001897: JUMPDEST
00001898: DIV
00001899: GT
0000189a: ISZERO
0000189b: PUSH2 0x18e0
0000189e: JUMPI
0000189f: PUSH1 0x40
000018a1: DUP1
000018a2: MLOAD
000018a3: PUSH3 0x461bcd
000018a7: PUSH1 0xe5
000018a9: SHL
000018aa: DUP2
000018ab: MSTORE
000018ac: PUSH1 0x20
000018ae: PUSH1 0x04
000018b0: DUP3
000018b1: ADD
000018b2: MSTORE
000018b3: PUSH1 0x12
000018b5: PUSH1 0x24
000018b7: DUP3
000018b8: ADD
000018b9: MSTORE
000018ba: PUSH18 0x4e6f7420656e6f7567682062696464657273
000018cd: PUSH1 0x70
000018cf: SHL
000018d0: PUSH1 0x44
000018d2: DUP3
000018d3: ADD
000018d4: MSTORE
000018d5: SWAP1
000018d6: MLOAD
000018d7: SWAP1
000018d8: DUP2
000018d9: SWAP1
000018da: SUB
000018db: PUSH1 0x64
000018dd: ADD
000018de: SWAP1
000018df: REVERT
000018e0: JUMPDEST
000018e1: POP
000018e2: PUSH1 0x08
000018e4: SLOAD
000018e5: JUMPDEST
000018e6: PUSH1 0x08
000018e8: SLOAD
000018e9: PUSH1 0x01
000018eb: SLOAD
000018ec: PUSH1 0x05
000018ee: SLOAD
000018ef: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
00001910: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000
00001931: DUP2
00001932: SWAP1
00001933: SUB
00001934: SWAP4
00001935: MUL
00001936: SWAP1
00001937: SWAP2
00001938: SUB
00001939: SWAP1
0000193a: PUSH1 0x00
0000193c: SWAP1
0000193d: PUSH2 0x194d
00001940: SWAP1
00001941: DUP4
00001942: SWAP1
00001943: PUSH2 0x17a1
00001946: SWAP1
00001947: DUP7
00001948: SWAP1
00001949: PUSH2 0x2477
0000194c: JUMP
0000194d: JUMPDEST
0000194e: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000196f: ADD
00001970: SWAP1
00001971: POP
00001972: JUMPDEST
00001973: PUSH1 0x08
00001975: SLOAD
00001976: DUP5
00001977: LT
00001978: DUP1
00001979: ISZERO
0000197a: PUSH2 0x1982
0000197d: JUMPI
0000197e: POP
0000197f: DUP6
00001980: GAS
00001981: GT
00001982: JUMPDEST
00001983: ISZERO
00001984: PUSH2 0x1a08
00001987: JUMPI
00001988: PUSH1 0x00
0000198a: PUSH1 0x08
0000198c: DUP6
0000198d: DUP2
0000198e: SLOAD
0000198f: DUP2
00001990: LT
00001991: PUSH2 0x1996
00001994: JUMPI
00001995: INVALID
00001996: JUMPDEST
00001997: PUSH1 0x00
00001999: SWAP2
0000199a: DUP3
0000199b: MSTORE
0000199c: PUSH1 0x20
0000199e: DUP1
0000199f: DUP4
000019a0: KECCAK256
000019a1: SWAP1
000019a2: SWAP2
000019a3: ADD
000019a4: SLOAD
000019a5: PUSH1 0x01
000019a7: PUSH1 0x01
000019a9: PUSH1 0xa0
000019ab: SHL
000019ac: SUB
000019ad: AND
000019ae: DUP1
000019af: DUP4
000019b0: MSTORE
000019b1: PUSH1 0x06
000019b3: SWAP1
000019b4: SWAP2
000019b5: MSTORE
000019b6: PUSH1 0x40
000019b8: SWAP1
000019b9: SWAP2
000019ba: KECCAK256
000019bb: SLOAD
000019bc: SWAP1
000019bd: SWAP2
000019be: POP
000019bf: DUP3
000019c0: LT
000019c1: ISZERO
000019c2: PUSH2 0x19fc
000019c5: JUMPI
000019c6: PUSH1 0x40
000019c8: MLOAD
000019c9: PUSH3 0x461bcd
000019cd: PUSH1 0xe5
000019cf: SHL
000019d0: DUP2
000019d1: MSTORE
000019d2: PUSH1 0x04
000019d4: ADD
000019d5: DUP1
000019d6: DUP1
000019d7: PUSH1 0x20
000019d9: ADD
000019da: DUP3
000019db: DUP2
000019dc: SUB
000019dd: DUP3
000019de: MSTORE
000019df: PUSH1 0x25
000019e1: DUP2
000019e2: MSTORE
000019e3: PUSH1 0x20
000019e5: ADD
000019e6: DUP1
000019e7: PUSH2 0x27c0
000019ea: PUSH1 0x25
000019ec: SWAP2
000019ed: CODECOPY
000019ee: PUSH1 0x40
000019f0: ADD
000019f1: SWAP2
000019f2: POP
000019f3: POP
000019f4: PUSH1 0x40
000019f6: MLOAD
000019f7: DUP1
000019f8: SWAP2
000019f9: SUB
000019fa: SWAP1
000019fb: REVERT
000019fc: JUMPDEST
000019fd: POP
000019fe: PUSH1 0x01
00001a00: SWAP1
00001a01: SWAP4
00001a02: ADD
00001a03: SWAP3
00001a04: PUSH2 0x1972
00001a07: JUMP
00001a08: JUMPDEST
00001a09: PUSH1 0x09
00001a0b: SLOAD
00001a0c: DUP5
00001a0d: EQ
00001a0e: PUSH2 0x1a55
00001a11: JUMPI
00001a12: PUSH1 0x09
00001a14: SLOAD
00001a15: PUSH1 0x40
00001a17: DUP1
00001a18: MLOAD
00001a19: SWAP2
00001a1a: DUP3
00001a1b: MSTORE
00001a1c: PUSH1 0x20
00001a1e: DUP3
00001a1f: ADD
00001a20: DUP7
00001a21: SWAP1
00001a22: MSTORE
00001a23: DUP1
00001a24: MLOAD
00001a25: CALLER
00001a26: SWAP3
00001a27: PUSH32 0x97d5ad02b58968c48057bb16e90b9468ec753e30169bf00692b7ba02b47b090e
00001a48: SWAP3
00001a49: SWAP1
00001a4a: DUP3
00001a4b: SWAP1
00001a4c: SUB
00001a4d: ADD
00001a4e: SWAP1
00001a4f: LOG2
00001a50: PUSH1 0x09
00001a52: DUP5
00001a53: SWAP1
00001a54: SSTORE
00001a55: JUMPDEST
00001a56: POP
00001a57: POP
00001a58: PUSH1 0x09
00001a5a: SLOAD
00001a5b: SWAP5
00001a5c: SWAP4
00001a5d: POP
00001a5e: POP
00001a5f: POP
00001a60: POP
00001a61: JUMP
00001a62: JUMPDEST
00001a63: PUSH32 0x00000000000000000000000000000000000000000000000000000000000000b4
00001a84: DUP2
00001a85: JUMP
00001a86: JUMPDEST
00001a87: PUSH1 0x04
00001a89: SLOAD
00001a8a: TIMESTAMP
00001a8b: LT
00001a8c: ISZERO
00001a8d: PUSH2 0x1ac7
00001a90: JUMPI
00001a91: PUSH1 0x40
00001a93: MLOAD
00001a94: PUSH3 0x461bcd
00001a98: PUSH1 0xe5
00001a9a: SHL
00001a9b: DUP2
00001a9c: MSTORE
00001a9d: PUSH1 0x04
00001a9f: ADD
00001aa0: DUP1
00001aa1: DUP1
00001aa2: PUSH1 0x20
00001aa4: ADD
00001aa5: DUP3
00001aa6: DUP2
00001aa7: SUB
00001aa8: DUP3
00001aa9: MSTORE
00001aaa: PUSH1 0x34
00001aac: DUP2
00001aad: MSTORE
00001aae: PUSH1 0x20
00001ab0: ADD
00001ab1: DUP1
00001ab2: PUSH2 0x2900
00001ab5: PUSH1 0x34
00001ab7: SWAP2
00001ab8: CODECOPY
00001ab9: PUSH1 0x40
00001abb: ADD
00001abc: SWAP2
00001abd: POP
00001abe: POP
00001abf: PUSH1 0x40
00001ac1: MLOAD
00001ac2: DUP1
00001ac3: SWAP2
00001ac4: SUB
00001ac5: SWAP1
00001ac6: REVERT
00001ac7: JUMPDEST
00001ac8: PUSH1 0x08
00001aca: SLOAD
00001acb: PUSH1 0x09
00001acd: SLOAD
00001ace: EQ
00001acf: ISZERO
00001ad0: PUSH2 0x1b0a
00001ad3: JUMPI
00001ad4: PUSH1 0x40
00001ad6: MLOAD
00001ad7: PUSH3 0x461bcd
00001adb: PUSH1 0xe5
00001add: SHL
00001ade: DUP2
00001adf: MSTORE
00001ae0: PUSH1 0x04
00001ae2: ADD
00001ae3: DUP1
00001ae4: DUP1
00001ae5: PUSH1 0x20
00001ae7: ADD
00001ae8: DUP3
00001ae9: DUP2
00001aea: SUB
00001aeb: DUP3
00001aec: MSTORE
00001aed: PUSH1 0x21
00001aef: DUP2
00001af0: MSTORE
00001af1: PUSH1 0x20
00001af3: ADD
00001af4: DUP1
00001af5: PUSH2 0x2727
00001af8: PUSH1 0x21
00001afa: SWAP2
00001afb: CODECOPY
00001afc: PUSH1 0x40
00001afe: ADD
00001aff: SWAP2
00001b00: POP
00001b01: POP
00001b02: PUSH1 0x40
00001b04: MLOAD
00001b05: DUP1
00001b06: SWAP2
00001b07: SUB
00001b08: SWAP1
00001b09: REVERT
00001b0a: JUMPDEST
00001b0b: DUP1
00001b0c: DUP1
00001b0d: PUSH2 0x1b47
00001b10: JUMPI
00001b11: PUSH1 0x40
00001b13: MLOAD
00001b14: PUSH3 0x461bcd
00001b18: PUSH1 0xe5
00001b1a: SHL
00001b1b: DUP2
00001b1c: MSTORE
00001b1d: PUSH1 0x04
00001b1f: ADD
00001b20: DUP1
00001b21: DUP1
00001b22: PUSH1 0x20
00001b24: ADD
00001b25: DUP3
00001b26: DUP2
00001b27: SUB
00001b28: DUP3
00001b29: MSTORE
00001b2a: PUSH1 0x28
00001b2c: DUP2
00001b2d: MSTORE
00001b2e: PUSH1 0x20
00001b30: ADD
00001b31: DUP1
00001b32: PUSH2 0x2774
00001b35: PUSH1 0x28
00001b37: SWAP2
00001b38: CODECOPY
00001b39: PUSH1 0x40
00001b3b: ADD
00001b3c: SWAP2
00001b3d: POP
00001b3e: POP
00001b3f: PUSH1 0x40
00001b41: MLOAD
00001b42: DUP1
00001b43: SWAP2
00001b44: SUB
00001b45: SWAP1
00001b46: REVERT
00001b47: JUMPDEST
00001b48: PUSH1 0x01
00001b4a: SLOAD
00001b4b: PUSH1 0x00
00001b4d: SWAP1
00001b4e: PUSH2 0x1b77
00001b51: SWAP1
00001b52: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000
00001b73: PUSH2 0x24c0
00001b76: JUMP
00001b77: JUMPDEST
00001b78: PUSH1 0x08
00001b7a: SLOAD
00001b7b: SWAP1
00001b7c: SWAP2
00001b7d: POP
00001b7e: DUP2
00001b7f: GT
00001b80: ISZERO
00001b81: PUSH2 0x1b93
00001b84: JUMPI
00001b85: PUSH2 0x1b8c
00001b88: PUSH2 0x24df
00001b8b: JUMP
00001b8c: JUMPDEST
00001b8d: POP
00001b8e: POP
00001b8f: PUSH2 0x2001
00001b92: JUMP
00001b93: JUMPDEST
00001b94: PUSH1 0x00
00001b96: DUP5
00001b97: DUP5
00001b98: PUSH1 0x00
00001b9a: DUP2
00001b9b: DUP2
00001b9c: LT
00001b9d: PUSH2 0x1ba2
00001ba0: JUMPI
00001ba1: INVALID
00001ba2: JUMPDEST
00001ba3: PUSH1 0x20
00001ba5: SWAP1
00001ba6: DUP2
00001ba7: MUL
00001ba8: SWAP3
00001ba9: SWAP1
00001baa: SWAP3
00001bab: ADD
00001bac: CALLDATALOAD
00001bad: PUSH1 0x01
00001baf: PUSH1 0x01
00001bb1: PUSH1 0xa0
00001bb3: SHL
00001bb4: SUB
00001bb5: AND
00001bb6: PUSH1 0x00
00001bb8: DUP2
00001bb9: DUP2
00001bba: MSTORE
00001bbb: PUSH1 0x06
00001bbd: SWAP1
00001bbe: SWAP4
00001bbf: MSTORE
00001bc0: PUSH1 0x40
00001bc2: SWAP1
00001bc3: SWAP3
00001bc4: KECCAK256
00001bc5: SLOAD
00001bc6: SWAP2
00001bc7: SWAP3
00001bc8: POP
00001bc9: DUP2
00001bca: SWAP1
00001bcb: POP
00001bcc: PUSH1 0x01
00001bce: JUMPDEST
00001bcf: DUP6
00001bd0: DUP2
00001bd1: LT
00001bd2: ISZERO
00001bd3: PUSH2 0x1c80
00001bd6: JUMPI
00001bd7: PUSH1 0x00
00001bd9: DUP9
00001bda: DUP9
00001bdb: DUP4
00001bdc: DUP2
00001bdd: DUP2
00001bde: LT
00001bdf: PUSH2 0x1be4
00001be2: JUMPI
00001be3: INVALID
00001be4: JUMPDEST
00001be5: PUSH1 0x01
00001be7: PUSH1 0x01
00001be9: PUSH1 0xa0
00001beb: SHL
00001bec: SUB
00001bed: PUSH1 0x20
00001bef: SWAP2
00001bf0: DUP3
00001bf1: MUL
00001bf2: SWAP4
00001bf3: SWAP1
00001bf4: SWAP4
00001bf5: ADD
00001bf6: CALLDATALOAD
00001bf7: DUP4
00001bf8: AND
00001bf9: PUSH1 0x00
00001bfb: DUP2
00001bfc: DUP2
00001bfd: MSTORE
00001bfe: PUSH1 0x06
00001c00: SWAP1
00001c01: SWAP3
00001c02: MSTORE
00001c03: PUSH1 0x40
00001c05: SWAP1
00001c06: SWAP2
00001c07: KECCAK256
00001c08: SLOAD
00001c09: SWAP1
00001c0a: SWAP4
00001c0b: POP
00001c0c: SWAP2
00001c0d: DUP8
00001c0e: AND
00001c0f: DUP4
00001c10: GT
00001c11: SWAP1
00001c12: POP
00001c13: DUP1
00001c14: ISZERO
00001c15: PUSH2 0x1c1e
00001c18: JUMPI
00001c19: POP
00001c1a: PUSH1 0x00
00001c1c: DUP2
00001c1d: GT
00001c1e: JUMPDEST
00001c1f: PUSH2 0x1c59
00001c22: JUMPI
00001c23: PUSH1 0x40
00001c25: MLOAD
00001c26: PUSH3 0x461bcd
00001c2a: PUSH1 0xe5
00001c2c: SHL
00001c2d: DUP2
00001c2e: MSTORE
00001c2f: PUSH1 0x04
00001c31: ADD
00001c32: DUP1
00001c33: DUP1
00001c34: PUSH1 0x20
00001c36: ADD
00001c37: DUP3
00001c38: DUP2
00001c39: SUB
00001c3a: DUP3
00001c3b: MSTORE
00001c3c: PUSH1 0x2c
00001c3e: DUP2
00001c3f: MSTORE
00001c40: PUSH1 0x20
00001c42: ADD
00001c43: DUP1
00001c44: PUSH2 0x2748
00001c47: PUSH1 0x2c
00001c49: SWAP2
00001c4a: CODECOPY
00001c4b: PUSH1 0x40
00001c4d: ADD
00001c4e: SWAP2
00001c4f: POP
00001c50: POP
00001c51: PUSH1 0x40
00001c53: MLOAD
00001c54: DUP1
00001c55: SWAP2
00001c56: SUB
00001c57: SWAP1
00001c58: REVERT
00001c59: JUMPDEST
00001c5a: DUP1
00001c5b: DUP6
00001c5c: GT
00001c5d: ISZERO
00001c5e: PUSH2 0x1c69
00001c61: JUMPI
00001c62: DUP1
00001c63: SWAP5
00001c64: POP
00001c65: PUSH2 0x1c75
00001c68: JUMP
00001c69: JUMPDEST
00001c6a: DUP1
00001c6b: DUP5
00001c6c: LT
00001c6d: ISZERO
00001c6e: PUSH2 0x1c75
00001c71: JUMPI
00001c72: DUP1
00001c73: SWAP4
00001c74: POP
00001c75: JUMPDEST
00001c76: POP
00001c77: SWAP4
00001c78: POP
00001c79: PUSH1 0x01
00001c7b: ADD
00001c7c: PUSH2 0x1bce
00001c7f: JUMP
00001c80: JUMPDEST
00001c81: POP
00001c82: PUSH1 0x60
00001c84: DUP6
00001c85: PUSH8 0xffffffffffffffff
00001c8e: DUP2
00001c8f: GT
00001c90: DUP1
00001c91: ISZERO
00001c92: PUSH2 0x1c9a
00001c95: JUMPI
00001c96: PUSH1 0x00
00001c98: DUP1
00001c99: REVERT
00001c9a: JUMPDEST
00001c9b: POP
00001c9c: PUSH1 0x40
00001c9e: MLOAD
00001c9f: SWAP1
00001ca0: DUP1
00001ca1: DUP3
00001ca2: MSTORE
00001ca3: DUP1
00001ca4: PUSH1 0x20
00001ca6: MUL
00001ca7: PUSH1 0x20
00001ca9: ADD
00001caa: DUP3
00001cab: ADD
00001cac: PUSH1 0x40
00001cae: MSTORE
00001caf: DUP1
00001cb0: ISZERO
00001cb1: PUSH2 0x1cc4
00001cb4: JUMPI
00001cb5: DUP2
00001cb6: PUSH1 0x20
00001cb8: ADD
00001cb9: PUSH1 0x20
00001cbb: DUP3
00001cbc: MUL
00001cbd: DUP1
00001cbe: CALLDATASIZE
00001cbf: DUP4
00001cc0: CALLDATACOPY
00001cc1: ADD
00001cc2: SWAP1
00001cc3: POP
00001cc4: JUMPDEST
00001cc5: POP
00001cc6: SWAP1
00001cc7: POP
00001cc8: DUP2
00001cc9: DUP4
00001cca: EQ
00001ccb: PUSH2 0x1d81
00001cce: JUMPI
00001ccf: PUSH1 0x00
00001cd1: JUMPDEST
00001cd2: DUP7
00001cd3: DUP2
00001cd4: LT
00001cd5: ISZERO
00001cd6: PUSH2 0x1d7f
00001cd9: JUMPI
00001cda: PUSH1 0x00
00001cdc: DUP10
00001cdd: DUP10
00001cde: DUP4
00001cdf: DUP2
00001ce0: DUP2
00001ce1: LT
00001ce2: PUSH2 0x1ce7
00001ce5: JUMPI
00001ce6: INVALID
00001ce7: JUMPDEST
00001ce8: SWAP1
00001ce9: POP
00001cea: PUSH1 0x20
00001cec: MUL
00001ced: ADD
00001cee: CALLDATALOAD
00001cef: PUSH1 0x01
00001cf1: PUSH1 0x01
00001cf3: PUSH1 0xa0
00001cf5: SHL
00001cf6: SUB
00001cf7: AND
00001cf8: SWAP1
00001cf9: POP
00001cfa: PUSH1 0x00
00001cfc: PUSH1 0x06
00001cfe: PUSH1 0x00
00001d00: DUP4
00001d01: PUSH1 0x01
00001d03: PUSH1 0x01
00001d05: PUSH1 0xa0
00001d07: SHL
00001d08: SUB
00001d09: AND
00001d0a: PUSH1 0x01
00001d0c: PUSH1 0x01
00001d0e: PUSH1 0xa0
00001d10: SHL
00001d11: SUB
00001d12: AND
00001d13: DUP2
00001d14: MSTORE
00001d15: PUSH1 0x20
00001d17: ADD
00001d18: SWAP1
00001d19: DUP2
00001d1a: MSTORE
00001d1b: PUSH1 0x20
00001d1d: ADD
00001d1e: PUSH1 0x00
00001d20: KECCAK256
00001d21: SWAP1
00001d22: POP
00001d23: DUP6
00001d24: DUP2
00001d25: PUSH1 0x00
00001d27: ADD
00001d28: SLOAD
00001d29: GT
00001d2a: ISZERO
00001d2b: PUSH2 0x1d75
00001d2e: JUMPI
00001d2f: DUP6
00001d30: DUP2
00001d31: PUSH1 0x00
00001d33: ADD
00001d34: SLOAD
00001d35: SUB
00001d36: DUP5
00001d37: DUP5
00001d38: DUP2
00001d39: MLOAD
00001d3a: DUP2
00001d3b: LT
00001d3c: PUSH2 0x1d41
00001d3f: JUMPI
00001d40: INVALID
00001d41: JUMPDEST
00001d42: PUSH1 0x20
00001d44: SWAP1
00001d45: DUP2
00001d46: MUL
00001d47: SWAP2
00001d48: SWAP1
00001d49: SWAP2
00001d4a: ADD
00001d4b: ADD
00001d4c: MSTORE
00001d4d: DUP6
00001d4e: DUP2
00001d4f: SSTORE
00001d50: DUP4
00001d51: MLOAD
00001d52: DUP5
00001d53: SWAP1
00001d54: DUP5
00001d55: SWAP1
00001d56: DUP2
00001d57: LT
00001d58: PUSH2 0x1d5d
00001d5b: JUMPI
00001d5c: INVALID
00001d5d: JUMPDEST
00001d5e: PUSH1 0x20
00001d60: MUL
00001d61: PUSH1 0x20
00001d63: ADD
00001d64: ADD
00001d65: MLOAD
00001d66: PUSH1 0x05
00001d68: PUSH1 0x00
00001d6a: DUP3
00001d6b: DUP3
00001d6c: SLOAD
00001d6d: SUB
00001d6e: SWAP3
00001d6f: POP
00001d70: POP
00001d71: DUP2
00001d72: SWAP1
00001d73: SSTORE
00001d74: POP
00001d75: JUMPDEST
00001d76: POP
00001d77: POP
00001d78: PUSH1 0x01
00001d7a: ADD
00001d7b: PUSH2 0x1cd1
00001d7e: JUMP
00001d7f: JUMPDEST
00001d80: POP
00001d81: JUMPDEST
00001d82: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000
00001da3: PUSH2 0x1dab
00001da6: DUP5
00001da7: PUSH2 0x16f2
00001daa: JUMP
00001dab: JUMPDEST
00001dac: GT
00001dad: PUSH2 0x1de7
00001db0: JUMPI
00001db1: PUSH1 0x40
00001db3: MLOAD
00001db4: PUSH3 0x461bcd
00001db8: PUSH1 0xe5
00001dba: SHL
00001dbb: DUP2
00001dbc: MSTORE
00001dbd: PUSH1 0x04
00001dbf: ADD
00001dc0: DUP1
00001dc1: DUP1
00001dc2: PUSH1 0x20
00001dc4: ADD
00001dc5: DUP3
00001dc6: DUP2
00001dc7: SUB
00001dc8: DUP3
00001dc9: MSTORE
00001dca: PUSH1 0x29
00001dcc: DUP2
00001dcd: MSTORE
00001dce: PUSH1 0x20
00001dd0: ADD
00001dd1: DUP1
00001dd2: PUSH2 0x28d7
00001dd5: PUSH1 0x29
00001dd7: SWAP2
00001dd8: CODECOPY
00001dd9: PUSH1 0x40
00001ddb: ADD
00001ddc: SWAP2
00001ddd: POP
00001dde: POP
00001ddf: PUSH1 0x40
00001de1: MLOAD
00001de2: DUP1
00001de3: SWAP2
00001de4: SUB
00001de5: SWAP1
00001de6: REVERT
00001de7: JUMPDEST
00001de8: PUSH1 0x08
00001dea: SLOAD
00001deb: PUSH1 0x01
00001ded: SLOAD
00001dee: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
00001e0f: PUSH32 0x00000000000000000000000000000000000000000018d0bf423c03d8de000000
00001e30: DUP2
00001e31: SWAP1
00001e32: SUB
00001e33: SWAP3
00001e34: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
00001e55: DUP8
00001e56: SUB
00001e57: SWAP3
00001e58: SWAP2
00001e59: MUL
00001e5a: SWAP1
00001e5b: SUB
00001e5c: PUSH1 0x00
00001e5e: PUSH2 0x1e9a
00001e61: PUSH2 0x1e6a
00001e64: DUP6
00001e65: DUP13
00001e66: PUSH2 0x2477
00001e69: JUMP
00001e6a: JUMPDEST
00001e6b: DUP4
00001e6c: SUB
00001e6d: PUSH2 0x1e94
00001e70: PUSH2 0x1e84
00001e73: PUSH1 0x05
00001e75: SLOAD
00001e76: DUP9
00001e77: PUSH2 0x2477
00001e7a: SWAP1
00001e7b: SWAP2
00001e7c: SWAP1
00001e7d: PUSH4 0xffffffff
00001e82: AND
00001e83: JUMP
00001e84: JUMPDEST
00001e85: PUSH2 0x1e8e
00001e88: DUP8
00001e89: DUP8
00001e8a: PUSH2 0x2477
00001e8d: JUMP
00001e8e: JUMPDEST
00001e8f: SWAP1
00001e90: PUSH2 0x21a6
00001e93: JUMP
00001e94: JUMPDEST
00001e95: SWAP1
00001e96: PUSH2 0x24c0
00001e99: JUMP
00001e9a: JUMPDEST
00001e9b: SWAP1
00001e9c: POP
00001e9d: PUSH1 0x00
00001e9f: PUSH2 0x1ea8
00001ea2: DUP9
00001ea3: DUP4
00001ea4: PUSH2 0x21a6
00001ea7: JUMP
00001ea8: JUMPDEST
00001ea9: PUSH1 0x05
00001eab: DUP1
00001eac: SLOAD
00001ead: DUP14
00001eae: DUP6
00001eaf: MUL
00001eb0: SWAP1
00001eb1: SUB
00001eb2: SWAP1
00001eb3: SSTORE
00001eb4: SWAP1
00001eb5: POP
00001eb6: PUSH1 0x00
00001eb8: JUMPDEST
00001eb9: DUP12
00001eba: DUP2
00001ebb: LT
00001ebc: ISZERO
00001ebd: PUSH2 0x1f33
00001ec0: JUMPI
00001ec1: PUSH1 0x00
00001ec3: DUP15
00001ec4: DUP15
00001ec5: DUP4
00001ec6: DUP2
00001ec7: DUP2
00001ec8: LT
00001ec9: PUSH2 0x1ece
00001ecc: JUMPI
00001ecd: INVALID
00001ece: JUMPDEST
00001ecf: SWAP1
00001ed0: POP
00001ed1: PUSH1 0x20
00001ed3: MUL
00001ed4: ADD
00001ed5: CALLDATALOAD
00001ed6: PUSH1 0x01
00001ed8: PUSH1 0x01
00001eda: PUSH1 0xa0
00001edc: SHL
00001edd: SUB
00001ede: AND
00001edf: SWAP1
00001ee0: POP
00001ee1: PUSH1 0x00
00001ee3: PUSH1 0x06
00001ee5: PUSH1 0x00
00001ee7: DUP4
00001ee8: PUSH1 0x01
00001eea: PUSH1 0x01
00001eec: PUSH1 0xa0
00001eee: SHL
00001eef: SUB
00001ef0: AND
00001ef1: PUSH1 0x01
00001ef3: PUSH1 0x01
00001ef5: PUSH1 0xa0
00001ef7: SHL
00001ef8: SUB
00001ef9: AND
00001efa: DUP2
00001efb: MSTORE
00001efc: PUSH1 0x20
00001efe: ADD
00001eff: SWAP1
00001f00: DUP2
00001f01: MSTORE
00001f02: PUSH1 0x20
00001f04: ADD
00001f05: PUSH1 0x00
00001f07: KECCAK256
00001f08: SWAP1
00001f09: POP
00001f0a: DUP5
00001f0b: DUP10
00001f0c: DUP5
00001f0d: DUP2
00001f0e: MLOAD
00001f0f: DUP2
00001f10: LT
00001f11: PUSH2 0x1f16
00001f14: JUMPI
00001f15: INVALID
00001f16: JUMPDEST
00001f17: PUSH1 0x20
00001f19: SWAP1
00001f1a: DUP2
00001f1b: MUL
00001f1c: SWAP2
00001f1d: SWAP1
00001f1e: SWAP2
00001f1f: ADD
00001f20: ADD
00001f21: DUP1
00001f22: MLOAD
00001f23: SWAP1
00001f24: SWAP2
00001f25: ADD
00001f26: SWAP1
00001f27: MSTORE
00001f28: DUP4
00001f29: SWAP1
00001f2a: SSTORE
00001f2b: POP
00001f2c: PUSH1 0x01
00001f2e: ADD
00001f2f: PUSH2 0x1eb8
00001f32: JUMP
00001f33: JUMPDEST
00001f34: POP
00001f35: PUSH1 0x00
00001f37: PUSH1 0x09
00001f39: DUP2
00001f3a: SWAP1
00001f3b: SSTORE
00001f3c: JUMPDEST
00001f3d: DUP12
00001f3e: DUP2
00001f3f: LT
00001f40: ISZERO
00001f41: PUSH2 0x1ff4
00001f44: JUMPI
00001f45: PUSH1 0x00
00001f47: DUP15
00001f48: DUP15
00001f49: DUP4
00001f4a: DUP2
00001f4b: DUP2
00001f4c: LT
00001f4d: PUSH2 0x1f52
00001f50: JUMPI
00001f51: INVALID
00001f52: JUMPDEST
00001f53: SWAP1
00001f54: POP
00001f55: PUSH1 0x20
00001f57: MUL
00001f58: ADD
00001f59: CALLDATALOAD
00001f5a: PUSH1 0x01
00001f5c: PUSH1 0x01
00001f5e: PUSH1 0xa0
00001f60: SHL
00001f61: SUB
00001f62: AND
00001f63: SWAP1
00001f64: POP
00001f65: DUP8
00001f66: DUP3
00001f67: DUP2
00001f68: MLOAD
00001f69: DUP2
00001f6a: LT
00001f6b: PUSH2 0x1f70
00001f6e: JUMPI
00001f6f: INVALID
00001f70: JUMPDEST
00001f71: PUSH1 0x20
00001f73: SWAP1
00001f74: DUP2
00001f75: MUL
00001f76: SWAP2
00001f77: SWAP1
00001f78: SWAP2
00001f79: ADD
00001f7a: DUP2
00001f7b: ADD
00001f7c: MLOAD
00001f7d: PUSH1 0x01
00001f7f: PUSH1 0x01
00001f81: PUSH1 0xa0
00001f83: SHL
00001f84: SUB
00001f85: DUP4
00001f86: AND
00001f87: PUSH1 0x00
00001f89: DUP2
00001f8a: DUP2
00001f8b: MSTORE
00001f8c: PUSH1 0x07
00001f8e: SWAP1
00001f8f: SWAP4
00001f90: MSTORE
00001f91: PUSH1 0x40
00001f93: SWAP1
00001f94: SWAP3
00001f95: KECCAK256
00001f96: DUP1
00001f97: SLOAD
00001f98: SWAP1
00001f99: SWAP2
00001f9a: ADD
00001f9b: SWAP1
00001f9c: SSTORE
00001f9d: DUP9
00001f9e: MLOAD
00001f9f: CALLER
00001fa0: SWAP1
00001fa1: PUSH32 0x2887b6da4c721c91735aada87ddc427d4ef240ef9b54e759ef10c0792b409373
00001fc2: SWAP1
00001fc3: DUP12
00001fc4: SWAP1
00001fc5: DUP7
00001fc6: SWAP1
00001fc7: DUP2
00001fc8: LT
00001fc9: PUSH2 0x1fce
00001fcc: JUMPI
00001fcd: INVALID
00001fce: JUMPDEST
00001fcf: PUSH1 0x20
00001fd1: MUL
00001fd2: PUSH1 0x20
00001fd4: ADD
00001fd5: ADD
00001fd6: MLOAD
00001fd7: PUSH1 0x40
00001fd9: MLOAD
00001fda: DUP1
00001fdb: DUP3
00001fdc: DUP2
00001fdd: MSTORE
00001fde: PUSH1 0x20
00001fe0: ADD
00001fe1: SWAP2
00001fe2: POP
00001fe3: POP
00001fe4: PUSH1 0x40
00001fe6: MLOAD
00001fe7: DUP1
00001fe8: SWAP2
00001fe9: SUB
00001fea: SWAP1
00001feb: LOG3
00001fec: POP
00001fed: PUSH1 0x01
00001fef: ADD
00001ff0: PUSH2 0x1f3c
00001ff3: JUMP
00001ff4: JUMPDEST
00001ff5: POP
00001ff6: POP
00001ff7: POP
00001ff8: POP
00001ff9: POP
00001ffa: POP
00001ffb: POP
00001ffc: POP
00001ffd: POP
00001ffe: POP
00001fff: POP
00002000: POP
00002001: JUMPDEST
00002002: POP
00002003: POP
00002004: JUMP
00002005: JUMPDEST
00002006: PUSH1 0x08
00002008: DUP2
00002009: DUP2
0000200a: SLOAD
0000200b: DUP2
0000200c: LT
0000200d: PUSH2 0x2012
00002010: JUMPI
00002011: INVALID
00002012: JUMPDEST
00002013: PUSH1 0x00
00002015: SWAP2
00002016: DUP3
00002017: MSTORE
00002018: PUSH1 0x20
0000201a: SWAP1
0000201b: SWAP2
0000201c: KECCAK256
0000201d: ADD
0000201e: SLOAD
0000201f: PUSH1 0x01
00002021: PUSH1 0x01
00002023: PUSH1 0xa0
00002025: SHL
00002026: SUB
00002027: AND
00002028: SWAP1
00002029: POP
0000202a: DUP2
0000202b: JUMP
0000202c: JUMPDEST
0000202d: PUSH1 0x03
0000202f: SLOAD
00002030: TIMESTAMP
00002031: LT
00002032: PUSH2 0x206c
00002035: JUMPI
00002036: PUSH1 0x40
00002038: MLOAD
00002039: PUSH3 0x461bcd
0000203d: PUSH1 0xe5
0000203f: SHL
00002040: DUP2
00002041: MSTORE
00002042: PUSH1 0x04
00002044: ADD
00002045: DUP1
00002046: DUP1
00002047: PUSH1 0x20
00002049: ADD
0000204a: DUP3
0000204b: DUP2
0000204c: SUB
0000204d: DUP3
0000204e: MSTORE
0000204f: PUSH1 0x2e
00002051: DUP2
00002052: MSTORE
00002053: PUSH1 0x20
00002055: ADD
00002056: DUP1
00002057: PUSH2 0x26f9
0000205a: PUSH1 0x2e
0000205c: SWAP2
0000205d: CODECOPY
0000205e: PUSH1 0x40
00002060: ADD
00002061: SWAP2
00002062: POP
00002063: POP
00002064: PUSH1 0x40
00002066: MLOAD
00002067: DUP1
00002068: SWAP2
00002069: SUB
0000206a: SWAP1
0000206b: REVERT
0000206c: JUMPDEST
0000206d: PUSH2 0x20a1
00002070: PUSH1 0x01
00002072: PUSH1 0x01
00002074: PUSH1 0xa0
00002076: SHL
00002077: SUB
00002078: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc
00002099: AND
0000209a: CALLER
0000209b: ADDRESS
0000209c: DUP5
0000209d: PUSH2 0x255b
000020a0: JUMP
000020a1: JUMPDEST
000020a2: PUSH1 0x01
000020a4: DUP1
000020a5: SLOAD
000020a6: DUP3
000020a7: ADD
000020a8: SWAP1
000020a9: SSTORE
000020aa: PUSH1 0x40
000020ac: DUP1
000020ad: MLOAD
000020ae: DUP3
000020af: DUP2
000020b0: MSTORE
000020b1: SWAP1
000020b2: MLOAD
000020b3: CALLER
000020b4: SWAP2
000020b5: PUSH32 0x2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4
000020d6: SWAP2
000020d7: SWAP1
000020d8: DUP2
000020d9: SWAP1
000020da: SUB
000020db: PUSH1 0x20
000020dd: ADD
000020de: SWAP1
000020df: LOG2
000020e0: POP
000020e1: JUMP
000020e2: JUMPDEST
000020e3: PUSH32 0x000000000000000000000000bbd3c0c794f40c4f993b03f65343acc6fcfcb2e2
00002104: DUP2
00002105: JUMP
00002106: JUMPDEST
00002107: PUSH2 0x210e
0000210a: PUSH2 0x1446
0000210d: JUMP
0000210e: JUMPDEST
0000210f: PUSH2 0x2117
00002112: JUMPI
00002113: PUSH1 0x00
00002115: DUP1
00002116: REVERT
00002117: JUMPDEST
00002118: PUSH2 0x2120
0000211b: DUP2
0000211c: PUSH2 0x25fe
0000211f: JUMP
00002120: JUMPDEST
00002121: POP
00002122: JUMP
00002123: JUMPDEST
00002124: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc
00002145: DUP2
00002146: JUMP
00002147: JUMPDEST
00002148: PUSH2 0x214f
0000214b: PUSH2 0x1446
0000214e: JUMP
0000214f: JUMPDEST
00002150: PUSH2 0x2158
00002153: JUMPI
00002154: PUSH1 0x00
00002156: DUP1
00002157: REVERT
00002158: JUMPDEST
00002159: PUSH2 0x2160
0000215c: PUSH2 0x13f1
0000215f: JUMP
00002160: JUMPDEST
00002161: ISZERO
00002162: PUSH2 0x219c
00002165: JUMPI
00002166: PUSH1 0x40
00002168: MLOAD
00002169: PUSH3 0x461bcd
0000216d: PUSH1 0xe5
0000216f: SHL
00002170: DUP2
00002171: MSTORE
00002172: PUSH1 0x04
00002174: ADD
00002175: DUP1
00002176: DUP1
00002177: PUSH1 0x20
00002179: ADD
0000217a: DUP3
0000217b: DUP2
0000217c: SUB
0000217d: DUP3
0000217e: MSTORE
0000217f: PUSH1 0x21
00002181: DUP2
00002182: MSTORE
00002183: PUSH1 0x20
00002185: ADD
00002186: DUP1
00002187: PUSH2 0x2934
0000218a: PUSH1 0x21
0000218c: SWAP2
0000218d: CODECOPY
0000218e: PUSH1 0x40
00002190: ADD
00002191: SWAP2
00002192: POP
00002193: POP
00002194: PUSH1 0x40
00002196: MLOAD
00002197: DUP1
00002198: SWAP2
00002199: SUB
0000219a: SWAP1
0000219b: REVERT
0000219c: JUMPDEST
0000219d: PUSH2 0x21a4
000021a0: PUSH2 0x24df
000021a3: JUMP
000021a4: JUMPDEST
000021a5: JUMP
000021a6: JUMPDEST
000021a7: PUSH1 0x00
000021a9: DUP3
000021aa: DUP3
000021ab: GT
000021ac: ISZERO
000021ad: PUSH2 0x21b5
000021b0: JUMPI
000021b1: PUSH1 0x00
000021b3: DUP1
000021b4: REVERT
000021b5: JUMPDEST
000021b6: POP
000021b7: SWAP1
000021b8: SUB
000021b9: SWAP1
000021ba: JUMP
000021bb: JUMPDEST
000021bc: PUSH1 0x08
000021be: SLOAD
000021bf: PUSH1 0x05
000021c1: SLOAD
000021c2: PUSH1 0x00
000021c4: SWAP2
000021c5: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
000021e6: MUL
000021e7: SWAP1
000021e8: PUSH2 0x21f8
000021eb: JUMPI
000021ec: PUSH2 0x10c1
000021ef: DUP5
000021f0: PUSH1 0x01
000021f2: SLOAD
000021f3: DUP4
000021f4: PUSH2 0x243d
000021f7: JUMP
000021f8: JUMPDEST
000021f9: PUSH1 0x00
000021fb: DUP1
000021fc: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000221d: DUP6
0000221e: DUP8
0000221f: ADD
00002220: GT
00002221: PUSH2 0x222c
00002224: JUMPI
00002225: DUP6
00002226: SWAP2
00002227: POP
00002228: PUSH2 0x2286
0000222b: JUMP
0000222c: JUMPDEST
0000222d: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000224e: DUP6
0000224f: LT
00002250: PUSH2 0x225a
00002253: JUMPI
00002254: POP
00002255: DUP5
00002256: PUSH2 0x2286
00002259: JUMP
0000225a: JUMPDEST
0000225b: POP
0000225c: POP
0000225d: PUSH32 0x0000000000000000000000000000000000000000000000004563918244f40000
0000227e: DUP5
0000227f: DUP5
00002280: ADD
00002281: SUB
00002282: DUP1
00002283: DUP6
00002284: SUB
00002285: SWAP1
00002286: JUMPDEST
00002287: PUSH1 0x08
00002289: SLOAD
0000228a: PUSH32 0x00000000000000000000000000000000000000000000032d26d12e980b600000
000022ab: MUL
000022ac: PUSH1 0x00
000022ae: DUP4
000022af: ISZERO
000022b0: PUSH2 0x22c1
000022b3: JUMPI
000022b4: PUSH2 0x22be
000022b7: DUP5
000022b8: DUP4
000022b9: DUP8
000022ba: PUSH2 0x243d
000022bd: JUMP
000022be: JUMPDEST
000022bf: SWAP1
000022c0: POP
000022c1: JUMPDEST
000022c2: DUP3
000022c3: ISZERO
000022c4: PUSH2 0x22e3
000022c7: JUMPI
000022c8: PUSH1 0x00
000022ca: DUP3
000022cb: PUSH1 0x01
000022cd: SLOAD
000022ce: SUB
000022cf: SWAP1
000022d0: POP
000022d1: PUSH2 0x22dd
000022d4: DUP5
000022d5: DUP3
000022d6: PUSH1 0x05
000022d8: SLOAD
000022d9: PUSH2 0x243d
000022dc: JUMP
000022dd: JUMPDEST
000022de: DUP3
000022df: ADD
000022e0: SWAP2
000022e1: POP
000022e2: POP
000022e3: JUMPDEST
000022e4: SWAP8
000022e5: SWAP7
000022e6: POP
000022e7: POP
000022e8: POP
000022e9: POP
000022ea: POP
000022eb: POP
000022ec: POP
000022ed: JUMP
000022ee: JUMPDEST
000022ef: PUSH1 0x00
000022f1: DUP3
000022f2: DUP3
000022f3: ADD
000022f4: DUP4
000022f5: DUP2
000022f6: LT
000022f7: ISZERO
000022f8: PUSH2 0x2300
000022fb: JUMPI
000022fc: PUSH1 0x00
000022fe: DUP1
000022ff: REVERT
00002300: JUMPDEST
00002301: SWAP4
00002302: SWAP3
00002303: POP
00002304: POP
00002305: POP
00002306: JUMP
00002307: JUMPDEST
00002308: DUP1
00002309: SELFBALANCE
0000230a: LT
0000230b: ISZERO
0000230c: PUSH2 0x235c
0000230f: JUMPI
00002310: PUSH1 0x40
00002312: DUP1
00002313: MLOAD
00002314: PUSH3 0x461bcd
00002318: PUSH1 0xe5
0000231a: SHL
0000231b: DUP2
0000231c: MSTORE
0000231d: PUSH1 0x20
0000231f: PUSH1 0x04
00002321: DUP3
00002322: ADD
00002323: MSTORE
00002324: PUSH1 0x1d
00002326: PUSH1 0x24
00002328: DUP3
00002329: ADD
0000232a: MSTORE
0000232b: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e6365000000
0000234c: PUSH1 0x44
0000234e: DUP3
0000234f: ADD
00002350: MSTORE
00002351: SWAP1
00002352: MLOAD
00002353: SWAP1
00002354: DUP2
00002355: SWAP1
00002356: SUB
00002357: PUSH1 0x64
00002359: ADD
0000235a: SWAP1
0000235b: REVERT
0000235c: JUMPDEST
0000235d: PUSH1 0x40
0000235f: MLOAD
00002360: PUSH1 0x00
00002362: SWAP1
00002363: PUSH1 0x01
00002365: PUSH1 0x01
00002367: PUSH1 0xa0
00002369: SHL
0000236a: SUB
0000236b: DUP5
0000236c: AND
0000236d: SWAP1
0000236e: DUP4
0000236f: SWAP1
00002370: DUP4
00002371: DUP2
00002372: DUP2
00002373: DUP2
00002374: DUP6
00002375: DUP8
00002376: GAS
00002377: CALL
00002378: SWAP3
00002379: POP
0000237a: POP
0000237b: POP
0000237c: RETURNDATASIZE
0000237d: DUP1
0000237e: PUSH1 0x00
00002380: DUP2
00002381: EQ
00002382: PUSH2 0x23a7
00002385: JUMPI
00002386: PUSH1 0x40
00002388: MLOAD
00002389: SWAP2
0000238a: POP
0000238b: PUSH1 0x1f
0000238d: NOT
0000238e: PUSH1 0x3f
00002390: RETURNDATASIZE
00002391: ADD
00002392: AND
00002393: DUP3
00002394: ADD
00002395: PUSH1 0x40
00002397: MSTORE
00002398: RETURNDATASIZE
00002399: DUP3
0000239a: MSTORE
0000239b: RETURNDATASIZE
0000239c: PUSH1 0x00
0000239e: PUSH1 0x20
000023a0: DUP5
000023a1: ADD
000023a2: RETURNDATACOPY
000023a3: PUSH2 0x23ac
000023a6: JUMP
000023a7: JUMPDEST
000023a8: PUSH1 0x60
000023aa: SWAP2
000023ab: POP
000023ac: JUMPDEST
000023ad: POP
000023ae: POP
000023af: SWAP1
000023b0: POP
000023b1: DUP1
000023b2: PUSH2 0x23ec
000023b5: JUMPI
000023b6: PUSH1 0x40
000023b8: MLOAD
000023b9: PUSH3 0x461bcd
000023bd: PUSH1 0xe5
000023bf: SHL
000023c0: DUP2
000023c1: MSTORE
000023c2: PUSH1 0x04
000023c4: ADD
000023c5: DUP1
000023c6: DUP1
000023c7: PUSH1 0x20
000023c9: ADD
000023ca: DUP3
000023cb: DUP2
000023cc: SUB
000023cd: DUP3
000023ce: MSTORE
000023cf: PUSH1 0x3a
000023d1: DUP2
000023d2: MSTORE
000023d3: PUSH1 0x20
000023d5: ADD
000023d6: DUP1
000023d7: PUSH2 0x27e5
000023da: PUSH1 0x3a
000023dc: SWAP2
000023dd: CODECOPY
000023de: PUSH1 0x40
000023e0: ADD
000023e1: SWAP2
000023e2: POP
000023e3: POP
000023e4: PUSH1 0x40
000023e6: MLOAD
000023e7: DUP1
000023e8: SWAP2
000023e9: SUB
000023ea: SWAP1
000023eb: REVERT
000023ec: JUMPDEST
000023ed: POP
000023ee: POP
000023ef: POP
000023f0: JUMP
000023f1: JUMPDEST
000023f2: PUSH1 0x00
000023f4: PUSH2 0x2435
000023f7: PUSH2 0x2401
000023fa: DUP4
000023fb: PUSH1 0x64
000023fd: PUSH2 0x2477
00002400: JUMP
00002401: JUMPDEST
00002402: PUSH2 0x17a1
00002405: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000320
00002426: PUSH2 0x242f
00002429: DUP9
0000242a: DUP9
0000242b: PUSH2 0x2477
0000242e: JUMP
0000242f: JUMPDEST
00002430: SWAP1
00002431: PUSH2 0x2477
00002434: JUMP
00002435: JUMPDEST
00002436: SWAP5
00002437: SWAP4
00002438: POP
00002439: POP
0000243a: POP
0000243b: POP
0000243c: JUMP
0000243d: JUMPDEST
0000243e: PUSH1 0x00
00002440: PUSH2 0x2435
00002443: PUSH2 0x246c
00002446: DUP4
00002447: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000320
00002468: PUSH2 0x2477
0000246b: JUMP
0000246c: JUMPDEST
0000246d: PUSH2 0x1e94
00002470: PUSH1 0x64
00002472: PUSH2 0x242f
00002475: DUP9
00002476: DUP9
00002477: JUMPDEST
00002478: PUSH1 0x00
0000247a: DUP3
0000247b: PUSH2 0x2486
0000247e: JUMPI
0000247f: POP
00002480: PUSH1 0x00
00002482: PUSH2 0x081d
00002485: JUMP
00002486: JUMPDEST
00002487: DUP3
00002488: DUP3
00002489: MUL
0000248a: DUP3
0000248b: DUP5
0000248c: DUP3
0000248d: DUP2
0000248e: PUSH2 0x2493
00002491: JUMPI
00002492: INVALID
00002493: JUMPDEST
00002494: DIV
00002495: EQ
00002496: PUSH2 0x2300
00002499: JUMPI
0000249a: PUSH1 0x00
0000249c: DUP1
0000249d: REVERT
0000249e: JUMPDEST
0000249f: PUSH1 0x00
000024a1: DUP1
000024a2: DUP3
000024a3: GT
000024a4: PUSH2 0x24ac
000024a7: JUMPI
000024a8: PUSH1 0x00
000024aa: DUP1
000024ab: REVERT
000024ac: JUMPDEST
000024ad: PUSH1 0x00
000024af: DUP3
000024b0: DUP5
000024b1: DUP2
000024b2: PUSH2 0x24b7
000024b5: JUMPI
000024b6: INVALID
000024b7: JUMPDEST
000024b8: DIV
000024b9: SWAP5
000024ba: SWAP4
000024bb: POP
000024bc: POP
000024bd: POP
000024be: POP
000024bf: JUMP
000024c0: JUMPDEST
000024c1: PUSH1 0x00
000024c3: DUP2
000024c4: PUSH1 0x01
000024c6: PUSH2 0x24cf
000024c9: DUP6
000024ca: DUP4
000024cb: PUSH2 0x22ee
000024ce: JUMP
000024cf: JUMPDEST
000024d0: SUB
000024d1: DUP2
000024d2: PUSH2 0x24d7
000024d5: JUMPI
000024d6: INVALID
000024d7: JUMPDEST
000024d8: DIV
000024d9: SWAP4
000024da: SWAP3
000024db: POP
000024dc: POP
000024dd: POP
000024de: JUMP
000024df: JUMPDEST
000024e0: PUSH1 0x00
000024e2: PUSH1 0x02
000024e4: DUP2
000024e5: SWAP1
000024e6: SSTORE
000024e7: PUSH1 0x03
000024e9: SSTORE
000024ea: PUSH1 0x00
000024ec: NOT
000024ed: PUSH1 0x04
000024ef: SSTORE
000024f0: PUSH2 0x252e
000024f3: PUSH2 0x24fa
000024f6: PUSH2 0x1437
000024f9: JUMP
000024fa: JUMPDEST
000024fb: PUSH1 0x01
000024fd: SLOAD
000024fe: PUSH1 0x01
00002500: PUSH1 0x01
00002502: PUSH1 0xa0
00002504: SHL
00002505: SUB
00002506: PUSH32 0x0000000000000000000000004fe83213d56308330ec302a8bd641f1d0113a4cc
00002527: AND
00002528: SWAP2
00002529: SWAP1
0000252a: PUSH2 0x266c
0000252d: JUMP
0000252e: JUMPDEST
0000252f: PUSH1 0x40
00002531: MLOAD
00002532: CALLER
00002533: SWAP1
00002534: PUSH32 0x28b4c24cb1012c094cd2f59f98e89d791973295f8fda6eaa118022d6d318960a
00002555: SWAP1
00002556: PUSH1 0x00
00002558: SWAP1
00002559: LOG2
0000255a: JUMP
0000255b: JUMPDEST
0000255c: DUP4
0000255d: PUSH1 0x01
0000255f: PUSH1 0x01
00002561: PUSH1 0xa0
00002563: SHL
00002564: SUB
00002565: AND
00002566: PUSH4 0x23b872dd
0000256b: DUP5
0000256c: DUP5
0000256d: DUP5
0000256e: PUSH1 0x40
00002570: MLOAD
00002571: DUP5
00002572: PUSH4 0xffffffff
00002577: AND
00002578: PUSH1 0xe0
0000257a: SHL
0000257b: DUP2
0000257c: MSTORE
0000257d: PUSH1 0x04
0000257f: ADD
00002580: DUP1
00002581: DUP5
00002582: PUSH1 0x01
00002584: PUSH1 0x01
00002586: PUSH1 0xa0
00002588: SHL
00002589: SUB
0000258a: AND
0000258b: DUP2
0000258c: MSTORE
0000258d: PUSH1 0x20
0000258f: ADD
00002590: DUP4
00002591: PUSH1 0x01
00002593: PUSH1 0x01
00002595: PUSH1 0xa0
00002597: SHL
00002598: SUB
00002599: AND
0000259a: DUP2
0000259b: MSTORE
0000259c: PUSH1 0x20
0000259e: ADD
0000259f: DUP3
000025a0: DUP2
000025a1: MSTORE
000025a2: PUSH1 0x20
000025a4: ADD
000025a5: SWAP4
000025a6: POP
000025a7: POP
000025a8: POP
000025a9: POP
000025aa: PUSH1 0x20
000025ac: PUSH1 0x40
000025ae: MLOAD
000025af: DUP1
000025b0: DUP4
000025b1: SUB
000025b2: DUP2
000025b3: PUSH1 0x00
000025b5: DUP8
000025b6: DUP1
000025b7: EXTCODESIZE
000025b8: ISZERO
000025b9: DUP1
000025ba: ISZERO
000025bb: PUSH2 0x25c3
000025be: JUMPI
000025bf: PUSH1 0x00
000025c1: DUP1
000025c2: REVERT
000025c3: JUMPDEST
000025c4: POP
000025c5: GAS
000025c6: CALL
000025c7: ISZERO
000025c8: DUP1
000025c9: ISZERO
000025ca: PUSH2 0x25d7
000025cd: JUMPI
000025ce: RETURNDATASIZE
000025cf: PUSH1 0x00
000025d1: DUP1
000025d2: RETURNDATACOPY
000025d3: RETURNDATASIZE
000025d4: PUSH1 0x00
000025d6: REVERT
000025d7: JUMPDEST
000025d8: POP
000025d9: POP
000025da: POP
000025db: POP
000025dc: PUSH1 0x40
000025de: MLOAD
000025df: RETURNDATASIZE
000025e0: PUSH1 0x20
000025e2: DUP2
000025e3: LT
000025e4: ISZERO
000025e5: PUSH2 0x25ed
000025e8: JUMPI
000025e9: PUSH1 0x00
000025eb: DUP1
000025ec: REVERT
000025ed: JUMPDEST
000025ee: POP
000025ef: MLOAD
000025f0: PUSH2 0x25f8
000025f3: JUMPI
000025f4: PUSH1 0x00
000025f6: DUP1
000025f7: REVERT
000025f8: JUMPDEST
000025f9: POP
000025fa: POP
000025fb: POP
000025fc: POP
000025fd: JUMP
000025fe: JUMPDEST
000025ff: PUSH1 0x01
00002601: PUSH1 0x01
00002603: PUSH1 0xa0
00002605: SHL
00002606: SUB
00002607: DUP2
00002608: AND
00002609: PUSH2 0x2611
0000260c: JUMPI
0000260d: PUSH1 0x00
0000260f: DUP1
00002610: REVERT
00002611: JUMPDEST
00002612: PUSH1 0x00
00002614: DUP1
00002615: SLOAD
00002616: PUSH1 0x40
00002618: MLOAD
00002619: PUSH1 0x01
0000261b: PUSH1 0x01
0000261d: PUSH1 0xa0
0000261f: SHL
00002620: SUB
00002621: DUP1
00002622: DUP6
00002623: AND
00002624: SWAP4
00002625: SWAP3
00002626: AND
00002627: SWAP2
00002628: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00002649: SWAP2
0000264a: LOG3
0000264b: PUSH1 0x00
0000264d: DUP1
0000264e: SLOAD
0000264f: PUSH1 0x01
00002651: PUSH1 0x01
00002653: PUSH1 0xa0
00002655: SHL
00002656: SUB
00002657: NOT
00002658: AND
00002659: PUSH1 0x01
0000265b: PUSH1 0x01
0000265d: PUSH1 0xa0
0000265f: SHL
00002660: SUB
00002661: SWAP3
00002662: SWAP1
00002663: SWAP3
00002664: AND
00002665: SWAP2
00002666: SWAP1
00002667: SWAP2
00002668: OR
00002669: SWAP1
0000266a: SSTORE
0000266b: JUMP
0000266c: JUMPDEST
0000266d: DUP3
0000266e: PUSH1 0x01
00002670: PUSH1 0x01
00002672: PUSH1 0xa0
00002674: SHL
00002675: SUB
00002676: AND
00002677: PUSH4 0xa9059cbb
0000267c: DUP4
0000267d: DUP4
0000267e: PUSH1 0x40
00002680: MLOAD
00002681: DUP4
00002682: PUSH4 0xffffffff
00002687: AND
00002688: PUSH1 0xe0
0000268a: SHL
0000268b: DUP2
0000268c: MSTORE
0000268d: PUSH1 0x04
0000268f: ADD
00002690: DUP1
00002691: DUP4
00002692: PUSH1 0x01
00002694: PUSH1 0x01
00002696: PUSH1 0xa0
00002698: SHL
00002699: SUB
0000269a: AND
0000269b: DUP2
0000269c: MSTORE
0000269d: PUSH1 0x20
0000269f: ADD
000026a0: DUP3
000026a1: DUP2
000026a2: MSTORE
000026a3: PUSH1 0x20
000026a5: ADD
000026a6: SWAP3
000026a7: POP
000026a8: POP
000026a9: POP
000026aa: PUSH1 0x20
000026ac: PUSH1 0x40
000026ae: MLOAD
000026af: DUP1
000026b0: DUP4
000026b1: SUB
000026b2: DUP2
000026b3: PUSH1 0x00
000026b5: DUP8
000026b6: DUP1
000026b7: EXTCODESIZE
000026b8: ISZERO
000026b9: DUP1
000026ba: ISZERO
000026bb: PUSH2 0x26c3
000026be: JUMPI
000026bf: PUSH1 0x00
000026c1: DUP1
000026c2: REVERT
000026c3: JUMPDEST
000026c4: POP
000026c5: GAS
000026c6: CALL
000026c7: ISZERO
000026c8: DUP1
000026c9: ISZERO
000026ca: PUSH2 0x26d7
000026cd: JUMPI
000026ce: RETURNDATASIZE
000026cf: PUSH1 0x00
000026d1: DUP1
000026d2: RETURNDATACOPY
000026d3: RETURNDATASIZE
000026d4: PUSH1 0x00
000026d6: REVERT
000026d7: JUMPDEST
000026d8: POP
000026d9: POP
000026da: POP
000026db: POP
000026dc: PUSH1 0x40
000026de: MLOAD
000026df: RETURNDATASIZE
000026e0: PUSH1 0x20
000026e2: DUP2
000026e3: LT
000026e4: ISZERO
000026e5: PUSH2 0x26ed
000026e8: JUMPI
000026e9: PUSH1 0x00
000026eb: DUP1
000026ec: REVERT
000026ed: JUMPDEST
000026ee: POP
000026ef: MLOAD
000026f0: PUSH2 0x23ec
000026f3: JUMPI
000026f4: PUSH1 0x00
000026f6: DUP1
000026f7: REVERT
000026f8: INVALID
000026f9: NUMBER
000026fa: PUSH2 0x6e27
000026fd: PUSH21 0x206465706f736974206d6f726520746f6b656e7320
00002713: PUSH2 0x6674
00002716: PUSH6 0x7220656e6420
0000271d: PUSH16 0x662062696464696e6742696464657273
0000272e: KECCAK256
0000272f: PUSH9 0x61766520616c726561
00002739: PUSH5 0x7920626565
0000273f: PUSH15 0x20636865636b656441646472657373
0000274f: PUSH6 0x73206d757374
00002756: KECCAK256
00002757: PUSH3 0x652061
0000275b: PUSH15 0x206172726179206f6620756e697175
0000276b: PUSH6 0x206269646465
00002772: PUSH19 0x734d757374206265206174206c65617374206f
00002786: PUSH15 0x652062696464657220666f72206120
00002796: PUSH19 0x6566756e64546f6b656e73206d757374206265
000027aa: KECCAK256
000027ab: PUSH4 0x6c61696d
000027b0: PUSH6 0x64206265666f
000027b7: PUSH19 0x6520726566756e644269642069732067726561
000027cb: PUSH21 0x6572207468616e206d617820616c6c6f7761626c65
000027e1: KECCAK256
000027e2: PUSH3 0x696441
000027e6: PUSH5 0x6472657373
000027ec: GASPRICE
000027ed: KECCAK256
000027ee: PUSH22 0x6e61626c6520746f2073656e642076616c75652c2072
00002805: PUSH6 0x63697069656e
0000280c: PUSH21 0x206d61792068617665207265766572746564436c61
00002822: PUSH10 0x6d696e6720686173206e
0000282d: PUSH16 0x74206265656e20656e61626c65642079
0000283e: PUSH6 0x744e6f746869
00002845: PUSH15 0x6720746f20726566756e643a207468
00002855: PUSH6 0x726520697320
0000285c: PUSH15 0x6f2045544820746f20726566756e64
0000286c: KECCAK256
0000286d: PUSH16 0x72206e6f20636f6d706c657465642077
0000287e: PUSH16 0x726b43616e63656c6c6174696f6e2061
0000288f: PUSH13 0x6c6f776564206f6e6c79206475
0000289d: PUSH19 0x696e672063616e63656c6c6174696f6e207769
000028b1: PUSH15 0x646f774e6f7420656e6f7567682074
000028c1: PUSH16 0x6b656e7320666f72206d6f7265206269
000028d2: PUSH5 0x6465727341
000028d8: PUSH21 0x206c65617374206f6e65206f662062696464657273
000028ee: KECCAK256
000028ef: PUSH9 0x617320616c6c6f7761
000028f9: PUSH3 0x6c6520
000028fd: PUSH3 0x69644f
00002901: PUSH17 0x65726174696f6e20697320616c6c6f7765
00002913: PUSH5 0x207768656e
00002919: KECCAK256
0000291a: PUSH4 0x616e6365
0000291f: PUSH13 0x6c6174696f6e20706861736520
0000292d: PUSH10 0x73206f766572436c6169
00002938: PUSH14 0x696e672068617320616c72656164
00002947: PUSH26 0x206265656e20656e61626c6564a26469706673582212209391d2
00002962: UNKNOWN(0xED)
00002963: UNKNOWN(0xB4)
00002964: UNKNOWN(0x2D)
00002965: RETURNDATASIZE
00002966: UNKNOWN(0xB3)
00002967: UNKNOWN(0xDB)
00002968: PUSH18 0x331f2d28e571cf258e989bdbfbfe3593d481
0000297b: PUSH20

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability codex Public verifyState delegates to attacker-controlled target during upgrades, enabling arbitrary code execution and token drain 90 no
view
evidence_json
{
    "evidence": "`verifyState` is public and accepts an attacker-controlled `_testTarget`, and `delegateGetData` uses `delegatecall` to that target, executing arbitrary code in the proxy\u2019s context during upgrades.",
    "locations": [
        "contracts/Upgradeable.sol:62",
        "contracts/Upgradeable.sol:83",
        "contracts/Upgradeable.sol:101",
        "contracts/StakingEscrow.sol:1628",
        "contracts/StakingEscrow.sol:1631"
    ],
    "recommendation": "Restrict `verifyState` (and any upgrade validation hooks) to a trusted upgrader (e.g., owner/dispatcher), and avoid `delegatecall` to attacker-supplied targets. Use `staticcall` to a pre-approved target address or perform upgrade/verification atomically so no third party can call these functions during the upgrade window.",
    "exploit_scenario": "1) Owner initiates an upgrade so `isUpgrade == UPGRADE_TRUE` (upgrade window is open).\n2) Attacker deploys a malicious contract implementing the getter selectors used by `StakingEscrow.verifyState` (e.g., `policyManager()`, `adjudicator()`, `workLock()`, etc.). Each getter executes a side effect like `token.transfer(attacker, token.balanceOf(address(this)))` and then returns the correct stored value so checks pass.\n3) Attacker calls `StakingEscrow.verifyState(maliciousTarget)` on the proxy. `delegateGetData` uses `delegatecall` into the attacker\u2019s contract, executing the token transfer in the proxy\u2019s context. Because the malicious getters return expected values, `verifyState` completes successfully and the token drain is not reverted.\nProfit potential: full NU token balance held by `StakingEscrow` (order of magnitude: total staked NU + reserved rewards held by the escrow/issuer)."
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c
call_targets: 0xe9778e69a961e64d3cdbb34cf6778281d34667c2
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xe9778e69a961e64d3cdbb34cf6778281d34667c2"
    ],
    "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": "0xe1fe7d23",
            "selector": "0xe1fe7d23",
            "calldata_variants": [
                "0xe1fe7d23",
                "0xe1fe7d230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2fdcc17",
            "selector": "0xe2fdcc17",
            "calldata_variants": [
                "0xe2fdcc17",
                "0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0c546a",
            "selector": "0xfc0c546a",
            "calldata_variants": [
                "0xfc0c546a",
                "0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0e74d1",
            "selector": "0xfc0e74d1",
            "calldata_variants": [
                "0xfc0e74d1",
                "0xfc0e74d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb15cf964",
            "selector": "0xb15cf964",
            "calldata_variants": [
                "0xb15cf964",
                "0xb15cf9640000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc859f44",
            "selector": "0xbc859f44",
            "calldata_variants": [
                "0xbc859f44",
                "0xbc859f440000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbe7ff580",
            "selector": "0xbe7ff580",
            "calldata_variants": [
                "0xbe7ff580",
                "0xbe7ff5800000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3240,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3436,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3571,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 7,
    "guards_detected": [],
    "untrusted_call_count": 7
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c
call_targets: 0xe9778e69a961e64d3cdbb34cf6778281d34667c2
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x49f40752ad9a61cd9497fa596c0bc0bff8e61ee7f1e714bea2f686b22a0a4d9c",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xe9778e69a961e64d3cdbb34cf6778281d34667c2"
    ],
    "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": "0xe1fe7d23",
            "selector": "0xe1fe7d23",
            "calldata_variants": [
                "0xe1fe7d23",
                "0xe1fe7d230000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2fdcc17",
            "selector": "0xe2fdcc17",
            "calldata_variants": [
                "0xe2fdcc17",
                "0xe2fdcc170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0c546a",
            "selector": "0xfc0c546a",
            "calldata_variants": [
                "0xfc0c546a",
                "0xfc0c546a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc0e74d1",
            "selector": "0xfc0e74d1",
            "calldata_variants": [
                "0xfc0e74d1",
                "0xfc0e74d10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb15cf964",
            "selector": "0xb15cf964",
            "calldata_variants": [
                "0xb15cf964",
                "0xb15cf9640000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc859f44",
            "selector": "0xbc859f44",
            "calldata_variants": [
                "0xbc859f44",
                "0xbc859f440000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbe7ff580",
            "selector": "0xbe7ff580",
            "calldata_variants": [
                "0xbe7ff580",
                "0xbe7ff5800000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3240,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3436,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3571,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 7,
    "guards_detected": []
}
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": 8
}