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

Analysis Run

255dad02-bda3-4c93-9044-1ca2dfacc23f

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 6:52 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves
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
31589 report.consolidate complete 1 / 1 3 months ago
78161 artifact.fetch complete 1 / 3 1 week ago
78162 tool.cast_disasm complete 1 / 3 1 week ago
78163 analysis.bundle complete 1 / 3 1 week ago
78164 capability.graph complete 1 / 3 1 week ago
78165 detector.run complete 1 / 3 1 week ago
78166 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
One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.
View stderr
[codex:488289] OpenAI Codex v0.77.0 (research preview)
[codex:488289] --------
[codex:488289] workdir: /tmp/codex-multi-vpee2ghi
[codex:488289] model: gpt-5.2-codex
[codex:488289] provider: openai
[codex:488289] approval: never
[codex:488289] sandbox: read-only
[codex:488289] reasoning effort: xhigh
[codex:488289] reasoning summaries: auto
[codex:488289] session id: 019b87c2-d91a-7580-b591-be7aaff1fa96
[codex:488289] --------
[codex:488289] user
[codex:488289] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:488289] 
[codex:488289] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:488289] 
[codex:488289] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:488289] - Gas inefficiency, code quality, naming, or best practices
[codex:488289] - Theoretical vulnerabilities without a clear extraction path
[codex:488289] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:488289] - Front-running unless it enables theft beyond MEV
[codex:488289] - DoS, griefing, or issues that don't result in attacker profit
[codex:488289] - Missing events, view function issues, or informational findings
[codex:488289] 
[codex:488289] HIGH-VALUE PATTERNS TO HUNT:
[codex:488289] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:488289] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:488289] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:488289] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:488289] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:488289] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:488289] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:488289] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:488289] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:488289] 
[codex:488289] For each finding, you MUST provide:
[codex:488289] 1. Exact file and line numbers of vulnerable code
[codex:488289] 2. Step-by-step exploit transaction sequence
[codex:488289] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:488289] 
[codex:488289] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:488289] 
[codex:488289] Output MUST be valid JSON matching the provided schema.
[codex:488289] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:488289] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:488289] mcp startup: no servers
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Preparing to read AUDIT_BUNDLE file**
[codex:488289] exec
[codex:488289] /bin/bash -lc ls in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] AUDIT_BUNDLE.txt
[codex:488289] codex-output-schema.json
[codex:488289] contracts
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Reading AUDIT_BUNDLE file**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:488289] 
[codex:488289] ================================================================================
[codex:488289] FILE: contracts/openzeppelin-solidity/contracts/GSN/Context.sol
[codex:488289] ================================================================================
[codex:488289] pragma solidity ^0.5.0;
[codex:488289] 
[codex:488289] /*
[codex:488289]  * @dev Provides information about the current execution context, including the
[codex:488289]  * sender of the transaction and its data. While these are generally available
[codex:488289]  * via msg.sender and msg.data, they should not be accessed in such a direct
[codex:488289]  * manner, since when dealing with GSN meta-transactions the account sending and
[codex:488289]  * paying for execution may not be the actual sender (as far as an application
[codex:488289]  * is concerned).
[codex:488289]  *
[codex:488289]  * This contract is only required for intermediate, library-like contracts.
[codex:488289]  */
[codex:488289] contract Context {
[codex:488289]     // Empty internal constructor, to prevent people from mistakenly deploying
[codex:488289]     // an instance of this contract, which should be used via inheritance.
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Searching smart contract functions**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "withdraw|transfer|mint|burn|initialize|init|upgrade|deposit|claim|redeem|unstake|withdrawal|withdraws|exit|release" contracts -S' in /tmp/codex-multi-vpee2ghi succeeded in 13ms:
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:16:    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:19:     * @dev Initializes the contract setting the deployer as the initial owner.
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:23:        emit OwnershipTransferred(address(0), _owner);
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:56:        emit OwnershipTransferred(_owner, address(0));
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:61:     * @dev Transfers ownership of the contract to a new account (`newOwner`).
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:64:    function transferOwnership(address newOwner) public onlyOwner {
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:65:        _transferOwnership(newOwner);
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:69:     * @dev Transfers ownership of the contract to a new account (`newOwner`).
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:71:    function _transferOwnership(address newOwner) internal {
[codex:488289] contracts/openzeppelin-solidity/contracts/ownership/Ownable.sol:73:        emit OwnershipTransferred(_owner, newOwner);
[codex:488289] contracts/solidity/contracts/Authorizations.sol:24:/// the recipient of delegated authority must call `claimDelegatedAuthority`,
[codex:488289] contracts/solidity/contracts/Authorizations.sol:62:    // Registry contract with a list of approved operator contracts and upgraders.
[codex:488289] contracts/solidity/contracts/Authorizations.sol:115:    /// and recognizes the claimant, this relationship will be recorded in
[codex:488289] contracts/solidity/contracts/Authorizations.sol:116:    /// `delegatedAuthority`. Later, the claimant can slash, seize, place locks etc.
[codex:488289] contracts/solidity/contracts/Authorizations.sol:120:    function claimDelegatedAuthority(
[codex:488289] contracts/solidity/contracts/Authorizations.sol:125:            "Unrecognized claimant"
[codex:488289] contracts/solidity/contracts/KeepToken.sol:3:import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] contracts/solidity/contracts/KeepToken.sol:11:/// @dev Standard ERC20Burnable token
[codex:488289] contracts/solidity/contracts/KeepToken.sol:12:contract KeepToken is ERC20Burnable, ERC20Detailed {
[codex:488289] contracts/solidity/contracts/KeepToken.sol:16:    uint256 public constant INITIAL_SUPPLY = 10**27; // 1 billion tokens, 18 decimal places.
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Auditing key contracts for exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,220p' contracts/solidity/contracts/ManagedGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 10ms:
[codex:488289] pragma solidity ^0.5.4;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "./TokenGrant.sol";
[codex:488289] 
[codex:488289] /// @title ManagedGrant
[codex:488289] /// @notice A managed grant acts as the grantee towards the token grant contract,
[codex:488289] /// proxying instructions from the actual grantee.
[codex:488289] /// The address used by the actual grantee
[codex:488289] /// to issue instructions and withdraw tokens
[codex:488289] /// can be reassigned with the consent of the grant manager.
[codex:488289] contract ManagedGrant {
[codex:488289]     using SafeERC20 for ERC20Burnable;
[codex:488289] 
[codex:488289]     ERC20Burnable public token;
[codex:488289]     TokenGrant public tokenGrant;
[codex:488289]     address public grantManager;
[codex:488289]     uint256 public grantId;
[codex:488289]     address public grantee;
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Checking recoverStake authorization**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '240,520p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]             _start,
[codex:488289]             _start.add(_cliffDuration),
[codex:488289]             0, 0,
[codex:488289]             GrantStakingPolicy(_stakingPolicy)
[codex:488289]         );
[codex:488289] 
[codex:488289]         // Maintain a record to make it easier to query grants by grant manager.
[codex:488289]         grantIndices[_from].push(id);
[codex:488289] 
[codex:488289]         // Maintain a record to make it easier to query grants by grantee.
[codex:488289]         grantIndices[_grantee].push(id);
[codex:488289] 
[codex:488289]         token.safeTransferFrom(_from, address(this), _amount);
[codex:488289] 
[codex:488289]         // Maintain a record of the unlocked amount
[codex:488289]         balances[_grantee] = balances[_grantee].add(_amount);
[codex:488289]         emit TokenGrantCreated(id);
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Withdraws Token grant amount to grantee.
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Continuing process**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '520,840p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]         grants[grantId].staked = grants[grantId].staked.sub(returned);
[codex:488289] 
[codex:488289]         delete grantStakes[_operator];
[codex:488289]     }
[codex:488289] }
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Checking access control on recoverStake**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,220p' contracts/solidity/contracts/TokenGrantStake.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "./TokenStaking.sol";
[codex:488289] import "./TokenSender.sol";
[codex:488289] import "./utils/BytesLib.sol";
[codex:488289] 
[codex:488289] /// @dev Interface of sender contract for approveAndCall pattern.
[codex:488289] interface tokenSender {
[codex:488289]     function approveAndCall(address _spender, uint256 _value, bytes calldata _extraData) external;
[codex:488289] }
[codex:488289] 
[codex:488289] contract TokenGrantStake {
[codex:488289]     using SafeMath for uint256;
[codex:488289]     using BytesLib for bytes;
[codex:488289] 
[codex:488289]     ERC20Burnable token;
[codex:488289]     TokenStaking tokenStaking;
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing access control and potential exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,240p' contracts/solidity/contracts/TokenStakingEscrow.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] /**
[codex:488289] ▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓    ▓▓▓▓▓▓▓▀    ▐▓▓▓▓▓▓    ▐▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀      ▐▓▓▓▓▓▓▄▄▄▄         ▓▓▓▓▓▓▄▄▄▄         ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▓▓▓▓▓▓▓▀        ▐▓▓▓▓▓▓▓▓▓▓         ▓▓▓▓▓▓▓▓▓▓▌        ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄       ▐▓▓▓▓▓▓▀▀▀▀         ▓▓▓▓▓▓▀▀▀▀         ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀
[codex:488289]   ▓▓▓▓▓▓   ▀▓▓▓▓▓▓▄     ▐▓▓▓▓▓▓     ▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓
[codex:488289] 
[codex:488289]                            Trust math, not hardware.
[codex:488289] */
[codex:488289] 
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/ownership/Ownable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] 
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Continuing withdrawal function review**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '240,520p' contracts/solidity/contracts/TokenStakingEscrow.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289]         // It is not possible for the escrow to determine the number of tokens
[codex:488289]         // it should return to the grantee of a revoked grant given different
[codex:488289]         // possible staking contracts and staking policies.
[codex:488289]         //
[codex:488289]         // If the entire grant unlocked before it's been reverted, escrow
[codex:488289]         // lets to withdraw the entire deposited amount.
[codex:488289]         if (getAmountRevoked(deposit.grantId) == 0) {
[codex:488289]             (
[codex:488289]                 uint256 duration,
[codex:488289]                 uint256 start,
[codex:488289]                 uint256 cliff
[codex:488289]             ) = getUnlockingSchedule(deposit.grantId);
[codex:488289] 
[codex:488289]             uint256 unlocked = now.getUnlockedAmount(
[codex:488289]                 deposit.amount,
[codex:488289]                 duration,
[codex:488289]                 start,
[codex:488289]                 cliff
[codex:488289]             );
[codex:488289] 
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing potential withdrawal exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '600,760p' contracts/solidity/contracts/KeepRandomBeaconOperator.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]     function groupProfitFee() public view returns(uint256) {
[codex:488289]         return groupMemberBaseReward.mul(groupSize);
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Checks if the specified account has enough active stake to become
[codex:488289]     /// network operator and that this contract has been authorized for potential
[codex:488289]     /// slashing.
[codex:488289]     ///
[codex:488289]     /// Having the required minimum of active stake makes the operator eligible
[codex:488289]     /// to join the network. If the active stake is not currently undelegating,
[codex:488289]     /// operator is also eligible for work selection.
[codex:488289]     ///
[codex:488289]     /// @param staker Staker's address
[codex:488289]     /// @return True if has enough active stake to participate in the network,
[codex:488289]     /// false otherwise.
[codex:488289]     function hasMinimumStake(address staker) public view returns(bool) {
[codex:488289]         return stakingContract.hasMinimumStake(staker, address(this));
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Checks if group with the given public key is registered.
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing withdrawGroupMemberRewards flow**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,260p' contracts/solidity/contracts/TokenStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] /**
[codex:488289] ▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓    ▓▓▓▓▓▓▓▀    ▐▓▓▓▓▓▓    ▐▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀      ▐▓▓▓▓▓▓▄▄▄▄         ▓▓▓▓▓▓▄▄▄▄         ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▓▓▓▓▓▓▓▀        ▐▓▓▓▓▓▓▓▓▓▓         ▓▓▓▓▓▓▓▓▓▓▌        ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄       ▐▓▓▓▓▓▓▀▀▀▀         ▓▓▓▓▓▓▀▀▀▀         ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀
[codex:488289]   ▓▓▓▓▓▓   ▀▓▓▓▓▓▓▄     ▐▓▓▓▓▓▓     ▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓
[codex:488289] 
[codex:488289]                            Trust math, not hardware.
[codex:488289] */
[codex:488289] 
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "./StakeDelegatable.sol";
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Searching for stake recovery functions**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '260,520p' contracts/solidity/contracts/TokenStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]             // but we also reset stake initialization time counter.
[codex:488289]             operators[_operator].packedParams = topUps.instantComplete(
[codex:488289]                 _value, _operator, operatorParams, escrow
[codex:488289]             );
[codex:488289]         } else {
[codex:488289]             // If the stake is initialized, we do NOT add tokens immediately.
[codex:488289]             // We initiate the top-up and will add tokens to the stake only
[codex:488289]             // after the initialization period for a top-up passes.
[codex:488289]             topUps.initiate(_value, _operator, operatorParams, escrow);
[codex:488289]         }
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Commits pending top-up for the provided operator. If the top-up
[codex:488289]     /// did not pass the initialization period, the function fails.
[codex:488289]     /// @param _operator The operator with a pending top-up that is getting
[codex:488289]     /// committed.
[codex:488289]     function commitTopUp(address _operator) public {
[codex:488289]         operators[_operator].packedParams = topUps.commit(
[codex:488289]             _operator,
[codex:488289]             operators[_operator].packedParams,
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '520,760p' contracts/solidity/contracts/TokenStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] 
[codex:488289]     /// @notice Seize provided token amount from every member in the misbehaved
[codex:488289]     /// operators array. The tattletale is rewarded with 5% of the total seized
[codex:488289]     /// amount scaled by the reward adjustment parameter and the rest 95% is burned.
[codex:488289]     /// @param amountToSeize Token amount to seize from every misbehaved operator.
[codex:488289]     /// @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.
[codex:488289]     /// @param tattletale Address to receive the 5% reward.
[codex:488289]     /// @param misbehavedOperators Array of addresses to seize the tokens from.
[codex:488289]     function seize(
[codex:488289]         uint256 amountToSeize,
[codex:488289]         uint256 rewardMultiplier,
[codex:488289]         address tattletale,
[codex:488289]         address[] memory misbehavedOperators
[codex:488289]     ) public onlyApprovedOperatorContract(msg.sender) {
[codex:488289]         uint256 totalAmountToBurn;
[codex:488289]         address authoritySource = getAuthoritySource(msg.sender);
[codex:488289]         for (uint i = 0; i < misbehavedOperators.length; i++) {
[codex:488289]             address operator = misbehavedOperators[i];
[codex:488289]             require(authorizations[authoritySource][operator], "Not authorized");
[codex:488289] 
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing access control and potential exploits**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '280,380p' contracts/solidity/contracts/libraries/operator/Groups.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]         uint256 seed
[codex:488289]     ) public returns(uint256) {
[codex:488289]         expireOldGroups(self);
[codex:488289] 
[codex:488289]         require(numberOfGroups(self) > 0, "No active groups");
[codex:488289] 
[codex:488289]         uint256 selectedGroup = seed % numberOfGroups(self);
[codex:488289]         return shiftByTerminatedGroups(self, shiftByExpiredGroups(self, selectedGroup));
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Evaluates the shift of selected group index based on the number of
[codex:488289]     /// expired groups.
[codex:488289]     function shiftByExpiredGroups(
[codex:488289]         Storage storage self,
[codex:488289]         uint256 selectedIndex
[codex:488289]     ) internal view returns(uint256) {
[codex:488289]         return self.expiredGroupOffset.add(selectedIndex);
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Evaluates the shift of selected group index based on the number of
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing reentrancy concerns and withdrawal logic**
[codex:488289] exec
[codex:488289] /bin/bash -lc "rg -n \"initialize|initializer|init\\(\" contracts/solidity -S" in /tmp/codex-multi-vpee2ghi succeeded in 9ms:
[codex:488289] contracts/solidity/contracts/utils/BytesLib.sol:58:                // Initialize a copy counter to the start of the _preBytes data,
[codex:488289] contracts/solidity/contracts/GasPriceOracle.sol:57:    /// @notice Initialize the gas price update. Change is finalized after
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:258:        if (!_isInitialized(operatorParams)) {
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:259:            // If the stake is not yet initialized, we add tokens immediately
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:265:            // If the stake is initialized, we do NOT add tokens immediately.
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:299:            !_isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:300:            "Initialized stake"
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:415:            _isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:494:                _isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:542:                _isInitialized(operatorParams),
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:600:        // - have the stake initialized
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:607:            _isInitialized(operatorParams) &&
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:639:            _isInitialized(operatorParams) &&
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:669:    /// @notice Is the operator with the given params initialized
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:670:    function _isInitialized(uint256 _operatorParams)
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:31:    /// @notice Performs top-up in one step when stake is not yet initialized by
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:34:    /// @dev This function should be called only for not yet initialized stake.
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:50:        // Stake is not yet initialized so we don't need to check if the
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:76:    /// initialized stake.
[codex:488289] contracts/solidity/contracts/libraries/staking/TopUps.sol:90:        // Stake is initialized, the operator is still active so we need
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Examining authorization patterns**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/Authorizations.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] /**
[codex:488289] ▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓    ▓▓▓▓▓▓▓▀    ▐▓▓▓▓▓▓    ▐▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀      ▐▓▓▓▓▓▓▄▄▄▄         ▓▓▓▓▓▓▄▄▄▄         ▐▓▓▓▓▓▌   ▐▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▓▓▓▓▓▓▓▀        ▐▓▓▓▓▓▓▓▓▓▓         ▓▓▓▓▓▓▓▓▓▓▌        ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:488289]   ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄       ▐▓▓▓▓▓▓▀▀▀▀         ▓▓▓▓▓▓▀▀▀▀         ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀
[codex:488289]   ▓▓▓▓▓▓   ▀▓▓▓▓▓▓▄     ▐▓▓▓▓▓▓     ▓▓▓▓▓   ▓▓▓▓▓▓     ▓▓▓▓▓   ▐▓▓▓▓▓▌
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓
[codex:488289] ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  ▓▓▓▓▓▓▓▓▓▓
[codex:488289] 
[codex:488289]                            Trust math, not hardware.
[codex:488289] */
[codex:488289] 
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "./KeepRegistry.sol";
[codex:488289] 
[codex:488289] /// @title AuthorityDelegator
[codex:488289] /// @notice An operator contract can delegate authority to other operator
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Investigating potential access control issue**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "__isRecognized" contracts/solidity -S' in /tmp/codex-multi-vpee2ghi succeeded in 9ms:
[codex:488289] contracts/solidity/contracts/Authorizations.sol:26:/// The staking contract calls `delegator.__isRecognized(recipient)`
[codex:488289] contracts/solidity/contracts/Authorizations.sol:36:    function __isRecognized(address delegatedAuthorityRecipient) external returns (bool);
[codex:488289] contracts/solidity/contracts/Authorizations.sol:124:            AuthorityDelegator(delegatedAuthoritySource).__isRecognized(msg.sender),
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing potential reentrancy and reward duplication issues**
[codex:488289] 
[codex:488289] I'm digging into withdrawal logic that uses low-level calls allowing external contract code execution before state changes, which might enable reentrancy and repeated withdrawals. Also, I'm checking group formation to see if duplicated members could lead to double rewards—a possible profit vector. This involves tracing calls through TokenStakingEscrow and KeepRandomBeaconOperator contracts.
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "createGroup|registerGroup|groupMembers" contracts/solidity/contracts/libraries/operator/Groups.sol' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] 47:        mapping (bytes => address[]) groupMembers;
[codex:488289] 90:        self.groupMembers[groupPubKey] = members;
[codex:488289] 98:            self.groupMembers[groupPubKey][memberArrayPosition] = self.groupMembers[groupPubKey][self.groupMembers[groupPubKey].length - 1];
[codex:488289] 99:            self.groupMembers[groupPubKey].length--;
[codex:488289] 136:        return self.groupMembers[groupPubKey][memberIndex];
[codex:488289] 336:        for (uint i = 0; i < self.groupMembers[groupPublicKey].length; i++) {
[codex:488289] 337:            if (operator == self.groupMembers[groupPublicKey][i]) {
[codex:488289] 349:        return self.groupMembers[groupPubKey];
[codex:488289] 358:        return self.groupMembers[groupPubKey];
[codex:488289] 396:        self.stakingContract.seize(minimumStake, 100, msg.sender, self.groupMembers[groupPubKey]);
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Opening Groups.sol top**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/operator/Groups.sol" in /tmp/codex-multi-vpee2ghi succeeded in 7ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "../../utils/BytesLib.sol";
[codex:488289] import "../../utils/PercentUtils.sol";
[codex:488289] import "../../cryptography/AltBn128.sol";
[codex:488289] import "../../cryptography/BLS.sol";
[codex:488289] import "../../TokenStaking.sol";
[codex:488289] 
[codex:488289] 
[codex:488289] library Groups {
[codex:488289]     using SafeMath for uint256;
[codex:488289]     using PercentUtils for uint256;
[codex:488289]     using BytesLib for bytes;
[codex:488289] 
[codex:488289]     // The index of a group is flagged with the most significant bit set,
[codex:488289]     // to distinguish the group `0` from null.
[codex:488289]     // The flag is toggled with bitwise XOR (`^`)
[codex:488289]     // which keeps all other bits intact but flips the flag bit.
[codex:488289]     // The flag should be set before writing to `groupIndices`,
[codex:488289]     // and unset after reading from `groupIndices`
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Checking group selection method**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "group selection|groupSelection|selectGroup|selectGroup" contracts/solidity/contracts/KeepRandomBeaconOperator.sol' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] 69:    GroupSelection.Storage groupSelection;
[codex:488289] 114:    /// @dev Gas required to submit DKG result. Excludes initiation of group selection.
[codex:488289] 117:    /// @dev Gas required to trigger DKG (starting group selection).
[codex:488289] 118:    uint256 public groupSelectionGasEstimate = 200000;
[codex:488289] 128:    /// @dev Seed value used for the genesis group selection.
[codex:488289] 132:    /// @dev Service contract that triggered current group selection.
[codex:488289] 133:    ServiceContract internal groupSelectionStarterContract;
[codex:488289] 145:    /// @notice Triggers group selection if there are no active groups.
[codex:488289] 154:        groupSelection.finish();
[codex:488289] 155:        // Set latest added service contract as a group selection starter to receive any DKG fee surplus.
[codex:488289] 156:        groupSelectionStarterContract = ServiceContract(serviceContracts[serviceContracts.length.sub(1)]);
[codex:488289] 184:        // There are 78 blocks to submit group selection tickets. To minimize
[codex:488289] 206:        groupSelection.ticketSubmissionTimeout = 6 * 11 + 12;
[codex:488289] 208:        groupSelection.groupSize = groupSize;
[codex:488289] 237:        uint256 groupSelectionStartFee = groupSelectionGasEstimate.mul(gasPriceCeiling);
[codex:488289] 239:        groupSelectionStarterContract = ServiceContract(msg.sender);
[codex:488289] 240:        startGroupSelection(_newEntry, msg.value.sub(groupSelectionStartFee));
[codex:488289] 242:        // reimbursing a submitter that triggered group selection
[codex:488289] 243:        (bool success, ) = stakingContract.beneficiaryOf(submitter).call.value(groupSelectionStartFee)("");
[codex:488289] 255:        // If previous group selection failed and there is reimbursement left
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Searching for GroupSelection library**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "library GroupSelection|GroupSelection" contracts/solidity/contracts -S' in /tmp/codex-multi-vpee2ghi succeeded in 8ms:
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:25:import "./libraries/operator/GroupSelection.sol";
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:47:    using GroupSelection for GroupSelection.Storage;
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:59:    event GroupSelectionStarted(uint256 newEntry);
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:69:    GroupSelection.Storage groupSelection;
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:157:        startGroupSelection(_genesisGroupSeed, msg.value);
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:240:        startGroupSelection(_newEntry, msg.value.sub(groupSelectionStartFee));
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:247:    function startGroupSelection(uint256 _newEntry, uint256 _payment) internal {
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:253:        require(isGroupSelectionPossible(), "Group selection in progress");
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:265:        emit GroupSelectionStarted(_newEntry);
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:272:    function isGroupSelectionPossible() public view returns (bool) {
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:26:library GroupSelection {
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:5:import "./GroupSelection.sol";
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:10:    using GroupSelection for GroupSelection.Storage;
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,220p' contracts/solidity/contracts/libraries/operator/GroupSelection.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "../../utils/BytesLib.sol";
[codex:488289] 
[codex:488289] /// @title Group Selection
[codex:488289] /// @notice The group selection protocol is an interactive method of selecting
[codex:488289] /// candidate group from the set of all stakers given a pseudorandom seed value.
[codex:488289] ///
[codex:488289] /// The protocol produces a representative result, where each staker's profit is
[codex:488289] /// proportional to the number of tokens they have staked. Produced candidate
[codex:488289] /// groups are of constant size.
[codex:488289] ///
[codex:488289] /// Group selection protocol accepts seed as an input - a pseudorandom value
[codex:488289] /// used to construct candidate tickets. Each candidate group member can
[codex:488289] /// submit their tickets. The maximum number of tickets one can submit depends
[codex:488289] /// on their staking weight - relation of the minimum stake to the candidate's
[codex:488289] /// stake.
[codex:488289] ///
[codex:488289] /// There is a certain timeout, expressed in blocks, when tickets can be
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Reviewing candidate map usage**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '220,520p' contracts/solidity/contracts/libraries/operator/GroupSelection.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]         uint256[] memory ordered = getTicketValueOrderedIndices(
[codex:488289]             self,
[codex:488289]             previousTicketIndex
[codex:488289]         );
[codex:488289] 
[codex:488289]         // any ticket goes when the tickets array size is lower than the group size
[codex:488289]         if (self.tickets.length < self.groupSize) {
[codex:488289]             // no tickets
[codex:488289]             if (self.tickets.length == 0) {
[codex:488289]                 self.tickets.push(newTicketValue);
[codex:488289]             // higher than the current highest
[codex:488289]             } else if (newTicketValue > self.tickets[self.tail]) {
[codex:488289]                 self.tickets.push(newTicketValue);
[codex:488289]                 uint256 oldTail = self.tail;
[codex:488289]                 self.tail = self.tickets.length-1;
[codex:488289]                 previousTicketIndex[self.tail] = oldTail;
[codex:488289]             // lower than the current lowest
[codex:488289]             } else if (newTicketValue < self.tickets[ordered[0]]) {
[codex:488289]                 self.tickets.push(newTicketValue);
[codex:488289]                 // last element points to itself
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing potential duplicates in group selection**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "duplicate|unique" contracts/solidity/contracts -S' in /tmp/codex-multi-vpee2ghi succeeded in 9ms:
[codex:488289] contracts/solidity/contracts/KeepRandomBeaconOperator.sol:294:    ///   has to be unique for all tickets submitted by the given staker for the
[codex:488289] contracts/solidity/contracts/TokenStakingEscrow.sol:34:/// can deposit. This contract works with an assumption that operator is unique
[codex:488289] contracts/solidity/contracts/TokenStakingEscrow.sol:388:        // This contract works with an assumption that operator is unique.
[codex:488289] contracts/solidity/contracts/libraries/staking/LockUtils.sol:9:    /// @notice The LockSet is like an array of unique `uint256`s,
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:33:    /// block. Every signature supporting the result has to be from a unique
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:44:    /// signature. Indices have to be unique.
[codex:488289] contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol:96:            require(!usedMemberIndices[memberIndex - 1], "Duplicate member index");
[codex:488289] contracts/solidity/contracts/libraries/operator/Groups.sol:39:        // Duplicated constant from operator contract to avoid extra call.
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:113:    ///   has to be unique for all tickets submitted by the given staker for the
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:152:    /// has to be unique for all tickets submitted by the given staker for the
[codex:488289] contracts/solidity/contracts/libraries/operator/GroupSelection.sol:168:            revert("Duplicate ticket");
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing potential duplicate stakers in GroupSelection**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "setGroupMembers" contracts/solidity/contracts/KeepRandomBeaconOperator.sol' in /tmp/codex-multi-vpee2ghi succeeded in 7ms:
[codex:488289] 349:        groups.setGroupMembers(groupPubKey, members, misbehaved);
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '300,380p' contracts/solidity/contracts/KeepRandomBeaconOperator.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]         groupSelection.submitTicket(ticket, stakingWeight);
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Gets the timeout in blocks after which group candidate ticket
[codex:488289]     /// submission is finished.
[codex:488289]     function ticketSubmissionTimeout() public view returns (uint256) {
[codex:488289]         return groupSelection.ticketSubmissionTimeout;
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Gets the submitted group candidate tickets so far.
[codex:488289]     function submittedTickets() public view returns (uint64[] memory) {
[codex:488289]         return groupSelection.tickets;
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Gets selected participants in ascending order of their tickets.
[codex:488289]     function selectedParticipants() public view returns (address[] memory) {
[codex:488289]         return groupSelection.selectedParticipants();
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Submits result of DKG protocol. It is on-chain part of phase 14 of
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Inspecting duplicate handling in DKGResultVerification**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/operator/DKGResultVerification.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/cryptography/ECDSA.sol";
[codex:488289] import "../../utils/BytesLib.sol";
[codex:488289] import "./GroupSelection.sol";
[codex:488289] 
[codex:488289] library DKGResultVerification {
[codex:488289]     using BytesLib for bytes;
[codex:488289]     using ECDSA for bytes32;
[codex:488289]     using GroupSelection for GroupSelection.Storage;
[codex:488289] 
[codex:488289]     struct Storage {
[codex:488289]         // Time in blocks after which DKG result is complete and ready to be
[codex:488289]         // published by clients.
[codex:488289]         uint256 timeDKG;
[codex:488289] 
[codex:488289]         // Time in blocks after which the next group member is eligible
[codex:488289]         // to submit DKG result.
[codex:488289]         uint256 resultPublicationBlockStep;
[codex:488289] 
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing duplicate member implications**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/staking/GrantStaking.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "../../TokenGrant.sol";
[codex:488289] import "../../TokenStakingEscrow.sol";
[codex:488289] import "../..//utils/BytesLib.sol";
[codex:488289] import "../RolesLookup.sol";
[codex:488289] 
[codex:488289] /// @notice TokenStaking contract library allowing to capture the details of
[codex:488289] /// delegated grants and offering functions allowing to check grantee
[codex:488289] /// authentication for stake delegation management.
[codex:488289] library GrantStaking {
[codex:488289]     using BytesLib for bytes;
[codex:488289]     using RolesLookup for address payable;
[codex:488289] 
[codex:488289]     /// @dev Grant ID is flagged with the most significant bit set, to
[codex:488289]     /// distinguish the grant ID `0` from default (null) value. The flag is
[codex:488289]     /// toggled with bitwise XOR (`^`) which keeps all other bits intact but
[codex:488289]     /// flips the flag bit. The flag should be set before writing to
[codex:488289]     /// `operatorToGrant`, and unset after reading from `operatorToGrant`
[codex:488289]     /// before using the value.
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Checking RolesLookup usage**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/RolesLookup.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "../utils/AddressArrayUtils.sol";
[codex:488289] import "../StakeDelegatable.sol";
[codex:488289] import "../TokenGrant.sol";
[codex:488289] import "../ManagedGrant.sol";
[codex:488289] 
[codex:488289] /// @title Roles Lookup
[codex:488289] /// @notice Library facilitating lookup of roles in stake delegation setup.
[codex:488289] library RolesLookup {
[codex:488289]     using AddressArrayUtils for address[];
[codex:488289] 
[codex:488289]     /// @notice Returns true if the tokenOwner delegated tokens to operator
[codex:488289]     /// using the provided stakeDelegatable contract. Othwerwise, returns false.
[codex:488289]     /// This function works only for the case when tokenOwner own those tokens
[codex:488289]     /// and those are not tokens from a grant.
[codex:488289]     function isTokenOwnerForOperator(
[codex:488289]         address tokenOwner,
[codex:488289]         address operator,
[codex:488289]         StakeDelegatable stakeDelegatable
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing potential underflow and reentrancy risks**
[codex:488289] 
[codex:488289] I'm carefully tracing how TokenGrantStake's amount variable might underflow due to unchecked subtraction when extra tokens are sent, considering how only authorized calls trigger returnTokens and whether this leads to exploitable states. Also, I'm checking for possible reentrancy vulnerabilities in token transfers and reimbursement calls, especially involving KeepToken and beneficiary payments.
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '200,460p' contracts/solidity/contracts/KeepRandomBeaconOperator.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289]         // the candidate not yet submitted to determine if continuing with
[codex:488289]         // ticket submission still makes sense.
[codex:488289]         //
[codex:488289]         // After 66 blocks, there is a 12 blocks mining lag allowing all
[codex:488289]         // outstanding ticket submissions to have a higher chance of being
[codex:488289]         // mined before the deadline.
[codex:488289]         groupSelection.ticketSubmissionTimeout = 6 * 11 + 12;
[codex:488289] 
[codex:488289]         groupSelection.groupSize = groupSize;
[codex:488289] 
[codex:488289]         dkgResultVerification.timeDKG = 5*(1+5) + 2*(1+10) + 20;
[codex:488289]         dkgResultVerification.resultPublicationBlockStep = resultPublicationBlockStep;
[codex:488289]         dkgResultVerification.groupSize = groupSize;
[codex:488289]         dkgResultVerification.signatureThreshold = groupThreshold + (groupSize - groupThreshold) / 2;
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Adds service contract
[codex:488289]     /// @param serviceContract Address of the service contract.
[codex:488289]     function addServiceContract(address serviceContract) public {
[codex:488289]         require(
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing potential reentrancy and withdrawal risks**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/TokenSender.sol" in /tmp/codex-multi-vpee2ghi succeeded in 7ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] /// @dev Interface of sender contract for approveAndCall pattern.
[codex:488289] interface TokenSender {
[codex:488289]     function approveAndCall(address _spender, uint256 _value, bytes calldata _extraData) external;
[codex:488289] }
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Investigating TokenSender usage**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/KeepToken.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";
[codex:488289] 
[codex:488289] 
[codex:488289] /// @dev Interface of recipient contract for approveAndCall pattern.
[codex:488289] interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external; }
[codex:488289] 
[codex:488289] /// @title KEEP Token
[codex:488289] /// @dev Standard ERC20Burnable token
[codex:488289] contract KeepToken is ERC20Burnable, ERC20Detailed {
[codex:488289]     string public constant NAME = "KEEP Token";
[codex:488289]     string public constant SYMBOL = "KEEP";
[codex:488289]     uint8 public constant DECIMALS = 18; // The number of digits after the decimal place when displaying token values on-screen.
[codex:488289]     uint256 public constant INITIAL_SUPPLY = 10**27; // 1 billion tokens, 18 decimal places.
[codex:488289] 
[codex:488289]     /// @dev Gives msg.sender all of existing tokens.
[codex:488289]     constructor() public ERC20Detailed(NAME, SYMBOL, DECIMALS) {
[codex:488289]         _mint(msg.sender, INITIAL_SUPPLY);
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing unauthorized staking risks**
[codex:488289] exec
[codex:488289] /bin/bash -lc 'rg -n "getGrantStakeDetails" -n contracts/solidity/contracts/TokenGrant.sol' in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289] 190:    function getGrantStakeDetails(address operator) public view returns (uint256 grantId, uint256 amount, address stakingContract) {
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '160,220p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289]         address policy
[codex:488289]     ) {
[codex:488289]         return (
[codex:488289]             grants[_id].grantManager,
[codex:488289]             grants[_id].duration,
[codex:488289]             grants[_id].start,
[codex:488289]             grants[_id].cliff,
[codex:488289]             address(grants[_id].stakingPolicy)
[codex:488289]         );
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Gets grant ids of the specified address.
[codex:488289]     /// @param _granteeOrGrantManager The address to query.
[codex:488289]     /// @return An uint256 array of grant IDs.
[codex:488289]     function getGrants(address _granteeOrGrantManager) public view returns (uint256[] memory) {
[codex:488289]         return grantIndices[_granteeOrGrantManager];
[codex:488289]     }
[codex:488289] 
[codex:488289]     /// @notice Gets operator addresses of the specified grantee address.
[codex:488289]     /// @param grantee The grantee address.
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing security in receiveApproval method**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '220,360p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289]              _extraData,
[codex:488289]              (address, address, uint256, uint256, uint256, bool, address)
[codex:488289]         );
[codex:488289] 
[codex:488289]         require(_grantee != address(0), "Grantee address can't be zero.");
[codex:488289]         require(
[codex:488289]             _cliffDuration <= _duration,
[codex:488289]             "Unlocking cliff duration must be less or equal total unlocking duration."
[codex:488289]         );
[codex:488289] 
[codex:488289]         require(_stakingPolicy != address(0), "Staking policy can't be zero.");
[codex:488289] 
[codex:488289]         uint256 id = numGrants++;
[codex:488289]         grants[id] = Grant(
[codex:488289]             _grantManager,
[codex:488289]             _grantee,
[codex:488289]             0, 0, 0,
[codex:488289]             _revocable,
[codex:488289]             _amount,
[codex:488289]             _duration,
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing receiveApproval vulnerability**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,200p' contracts/solidity/contracts/libraries/grant/UnlockingSchedule.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] 
[codex:488289] library UnlockingSchedule {
[codex:488289]     using SafeMath for uint256;
[codex:488289] 
[codex:488289]     function getUnlockedAmount(
[codex:488289]         uint256 _now,
[codex:488289]         uint256 grantedAmount,
[codex:488289]         uint256 duration,
[codex:488289]         uint256 start,
[codex:488289]         uint256 cliff
[codex:488289]     ) internal pure returns (uint256) {
[codex:488289]         bool cliffNotReached = _now < cliff;
[codex:488289]         if (cliffNotReached) { return 0; }
[codex:488289] 
[codex:488289]         uint256 timeElapsed = _now.sub(start);
[codex:488289] 
[codex:488289]         bool unlockingPeriodFinished = timeElapsed >= duration;
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing token grant vulnerability**
[codex:488289] exec
[codex:488289] /bin/bash -lc "sed -n '1,120p' contracts/solidity/contracts/TokenGrant.sol" in /tmp/codex-multi-vpee2ghi succeeded in 5ms:
[codex:488289] pragma solidity 0.5.17;
[codex:488289] 
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol";
[codex:488289] import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol";
[codex:488289] import "openzeppelin-solidity/contracts/math/SafeMath.sol";
[codex:488289] import "./libraries/grant/UnlockingSchedule.sol";
[codex:488289] import "./utils/BytesLib.sol";
[codex:488289] import "./utils/AddressArrayUtils.sol";
[codex:488289] import "./TokenStaking.sol";
[codex:488289] import "./TokenGrantStake.sol";
[codex:488289] import "./GrantStakingPolicy.sol";
[codex:488289] 
[codex:488289] 
[codex:488289] /// @title TokenGrant
[codex:488289] /// @notice A token grant contract for a specified standard ERC20Burnable token.
[codex:488289] /// Has additional functionality to stake delegate/undelegate token grants.
[codex:488289] /// Tokens are granted to the grantee via unlocking scheme and can be
[codex:488289] /// withdrawn gradually based on the unlocking schedule cliff and unlocking duration.
[codex:488289] /// Optionally grant can be revoked by the token grant manager.
[codex:488289] contract TokenGrant {
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Identifying security risks in token grant logic**
[codex:488289] exec
[codex:488289] /bin/bash -lc "rg -n \"receiveApproval\\(\" contracts/solidity/contracts -S" in /tmp/codex-multi-vpee2ghi succeeded in 10ms:
[codex:488289] contracts/solidity/contracts/KeepToken.sol:8:interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external; }
[codex:488289] contracts/solidity/contracts/KeepToken.sol:32:            spender.receiveApproval(msg.sender, _value, address(this), _extraData);
[codex:488289] contracts/solidity/contracts/TokenStaking.sol:148:    function receiveApproval(
[codex:488289] contracts/solidity/contracts/TokenStakingEscrow.sol:108:    function receiveApproval(
[codex:488289] contracts/solidity/contracts/TokenGrant.sol:210:    function receiveApproval(address _from, uint256 _amount, address _token, bytes memory _extraData) public {
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Analyzing security risk in TokenGrant contract**
[codex:488289] exec
[codex:488289] /bin/bash -lc "nl -ba contracts/solidity/contracts/TokenGrant.sol | sed -n '200,280p'" in /tmp/codex-multi-vpee2ghi succeeded in 6ms:
[codex:488289]    200	    /// @param _token Token contract address.
[codex:488289]    201	    /// @param _extraData This byte array must have the following values ABI encoded:
[codex:488289]    202	    /// grantManager (address) Address of the grant manager.
[codex:488289]    203	    /// grantee (address) Address of the grantee.
[codex:488289]    204	    /// duration (uint256) Duration in seconds of the unlocking period.
[codex:488289]    205	    /// start (uint256) Timestamp at which unlocking will start.
[codex:488289]    206	    /// cliffDuration (uint256) Duration in seconds of the cliff;
[codex:488289]    207	    ///               no tokens will be unlocked until the time `start + cliff`.
[codex:488289]    208	    /// revocable (bool) Whether the token grant is revocable or not (1 or 0).
[codex:488289]    209	    /// stakingPolicy (address) Address of the staking policy for the grant.
[codex:488289]    210	    function receiveApproval(address _from, uint256 _amount, address _token, bytes memory _extraData) public {
[codex:488289]    211	        require(ERC20Burnable(_token) == token, "Token contract must be the same one linked to this contract.");
[codex:488289]    212	        require(_amount <= token.balanceOf(_from), "Sender must have enough amount.");
[codex:488289]    213	        (address _grantManager,
[codex:488289]    214	         address _grantee,
[codex:488289]    215	         uint256 _duration,
[codex:488289]    216	         uint256 _start,
[codex:488289]    217	         uint256 _cliffDuration,
[codex:488289]    218	         bool _revocable,
[codex:488289]    219	         address _stakingPolicy) = abi.decode(
[codex:488289] 
[codex:488289] thinking
[codex:488289] **Preparing detailed vulnerability report**
[codex:488289] codex
[codex:488289] {"no_findings":false,"summary":"One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.","findings":[{"severity":"critical","category":"access_control","title":"Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves","exploit_scenario":"1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim’s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant.","recommendation":"Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.","evidence":"`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder’s allowance and assign themselves as grantee.","locations":["contracts/solidity/contracts/TokenGrant.sol:210","contracts/solidity/contracts/TokenGrant.sol:252"]}]}
[codex:488289] tokens used
[codex:488289] 85,976
[codex:488289] {"no_findings":false,"summary":"One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.","findings":[{"severity":"critical","category":"access_control","title":"Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves","exploit_scenario":"1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim’s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant.","recommendation":"Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.","evidence":"`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder’s allowance and assign themselves as grantee.","locations":["contracts/solidity/contracts/TokenGrant.sol:210","contracts/solidity/contracts/TokenGrant.sol:252"]}]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-04T06:52:56.375781+00:00",
        "returncode": 0
    },
    "summary": "One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.",
    "raw_final": {
        "summary": "One direct token-theft vector via an unprotected approve-and-call entrypoint in TokenGrant.",
        "findings": [
            {
                "title": "Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves",
                "category": "access_control",
                "evidence": "`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder\u2019s allowance and assign themselves as grantee.",
                "severity": "critical",
                "locations": [
                    "contracts/solidity/contracts/TokenGrant.sol:210",
                    "contracts/solidity/contracts/TokenGrant.sol:252"
                ],
                "recommendation": "Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.",
                "exploit_scenario": "1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim\u2019s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
19
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
22
EXT*/BALANCE
33
Total opcodes
11910
Flags
delegatecall_present heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0266
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x7d7d7dd9
00000019: GT
0000001a: PUSH2 0x0144
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xc300d058
00000024: GT
00000025: PUSH2 0x00b6
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xd12f5e69
0000002f: GT
00000030: PUSH2 0x007a
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xd12f5e69
0000003a: EQ
0000003b: PUSH2 0x0c78
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe1f4d632
00000045: EQ
00000046: PUSH2 0x0d29
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xe581ff74
00000050: EQ
00000051: PUSH2 0x0d3e
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xeb9488d3
0000005b: EQ
0000005c: PUSH2 0x0df6
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0xef7c8f9c
00000066: EQ
00000067: PUSH2 0x0e0b
0000006a: JUMPI
0000006b: DUP1
0000006c: PUSH4 0xfdd18b13
00000071: EQ
00000072: PUSH2 0x0e35
00000075: JUMPI
00000076: PUSH2 0x0266
00000079: JUMP
0000007a: JUMPDEST
0000007b: DUP1
0000007c: PUSH4 0xc300d058
00000081: EQ
00000082: PUSH2 0x0bf8
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xc4438946
0000008c: EQ
0000008d: PUSH2 0x0c0d
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0xc45751cd
00000097: EQ
00000098: PUSH2 0x0c22
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0xc96e71fb
000000a2: EQ
000000a3: PUSH2 0x0c37
000000a6: JUMPI
000000a7: DUP1
000000a8: PUSH4 0xc98622fb
000000ad: EQ
000000ae: PUSH2 0x0c63
000000b1: JUMPI
000000b2: PUSH2 0x0266
000000b5: JUMP
000000b6: JUMPDEST
000000b7: DUP1
000000b8: PUSH4 0x9dabee44
000000bd: GT
000000be: PUSH2 0x0108
000000c1: JUMPI
000000c2: DUP1
000000c3: PUSH4 0x9dabee44
000000c8: EQ
000000c9: PUSH2 0x0a4f
000000cc: JUMPI
000000cd: DUP1
000000ce: PUSH4 0xa7f0b3de
000000d3: EQ
000000d4: PUSH2 0x0b00
000000d7: JUMPI
000000d8: DUP1
000000d9: PUSH4 0xac374f4b
000000de: EQ
000000df: PUSH2 0x0b08
000000e2: JUMPI
000000e3: DUP1
000000e4: PUSH4 0xb1c77c8f
000000e9: EQ
000000ea: PUSH2 0x0bb9
000000ed: JUMPI
000000ee: DUP1
000000ef: PUSH4 0xb99f0c43
000000f4: EQ
000000f5: PUSH2 0x0bce
000000f8: JUMPI
000000f9: DUP1
000000fa: PUSH4 0xbf952496
000000ff: EQ
00000100: PUSH2 0x0be3
00000103: JUMPI
00000104: PUSH2 0x0266
00000107: JUMP
00000108: JUMPDEST
00000109: DUP1
0000010a: PUSH4 0x7d7d7dd9
0000010f: EQ
00000110: PUSH2 0x0926
00000113: JUMPI
00000114: DUP1
00000115: PUSH4 0x885c0204
0000011a: EQ
0000011b: PUSH2 0x093b
0000011e: JUMPI
0000011f: DUP1
00000120: PUSH4 0x8a3a3da8
00000125: EQ
00000126: PUSH2 0x0965
00000129: JUMPI
0000012a: DUP1
0000012b: PUSH4 0x8e9e56a5
00000130: EQ
00000131: PUSH2 0x098f
00000134: JUMPI
00000135: DUP1
00000136: PUSH4 0x9b3d270a
0000013b: EQ
0000013c: PUSH2 0x09a4
0000013f: JUMPI
00000140: PUSH2 0x0266
00000143: JUMP
00000144: JUMPDEST
00000145: DUP1
00000146: PUSH4 0x5c1c0710
0000014b: GT
0000014c: PUSH2 0x01dd
0000014f: JUMPI
00000150: DUP1
00000151: PUSH4 0x6dcc64f8
00000156: GT
00000157: PUSH2 0x01a1
0000015a: JUMPI
0000015b: DUP1
0000015c: PUSH4 0x6dcc64f8
00000161: EQ
00000162: PUSH2 0x065b
00000165: JUMPI
00000166: DUP1
00000167: PUSH4 0x6e5636e4
0000016c: EQ
0000016d: PUSH2 0x0670
00000170: JUMPI
00000171: DUP1
00000172: PUSH4 0x7031b7ff
00000177: EQ
00000178: PUSH2 0x0685
0000017b: JUMPI
0000017c: DUP1
0000017d: PUSH4 0x73f1daab
00000182: EQ
00000183: PUSH2 0x069a
00000186: JUMPI
00000187: DUP1
00000188: PUSH4 0x7760c6c7
0000018d: EQ
0000018e: PUSH2 0x08de
00000191: JUMPI
00000192: DUP1
00000193: PUSH4 0x79f9fb7e
00000198: EQ
00000199: PUSH2 0x0911
0000019c: JUMPI
0000019d: PUSH2 0x0266
000001a0: JUMP
000001a1: JUMPDEST
000001a2: DUP1
000001a3: PUSH4 0x5c1c0710
000001a8: EQ
000001a9: PUSH2 0x054a
000001ac: JUMPI
000001ad: DUP1
000001ae: PUSH4 0x5ec60d61
000001b3: EQ
000001b4: PUSH2 0x057d
000001b7: JUMPI
000001b8: DUP1
000001b9: PUSH4 0x618c2656
000001be: EQ
000001bf: PUSH2 0x05a7
000001c2: JUMPI
000001c3: DUP1
000001c4: PUSH4 0x6262d54e
000001c9: EQ
000001ca: PUSH2 0x0631
000001cd: JUMPI
000001ce: DUP1
000001cf: PUSH4 0x63b635ea
000001d4: EQ
000001d5: PUSH2 0x0646
000001d8: JUMPI
000001d9: PUSH2 0x0266
000001dc: JUMP
000001dd: JUMPDEST
000001de: DUP1
000001df: PUSH4 0x24f17313
000001e4: GT
000001e5: PUSH2 0x022f
000001e8: JUMPI
000001e9: DUP1
000001ea: PUSH4 0x24f17313
000001ef: EQ
000001f0: PUSH2 0x03e8
000001f3: JUMPI
000001f4: DUP1
000001f5: PUSH4 0x2d6f8f31
000001fa: EQ
000001fb: PUSH2 0x03fd
000001fe: JUMPI
000001ff: DUP1
00000200: PUSH4 0x36c85717
00000205: EQ
00000206: PUSH2 0x04ae
00000209: JUMPI
0000020a: DUP1
0000020b: PUSH4 0x376f7a11
00000210: EQ
00000211: PUSH2 0x04c3
00000214: JUMPI
00000215: DUP1
00000216: PUSH4 0x3926c28e
0000021b: EQ
0000021c: PUSH2 0x04fc
0000021f: JUMPI
00000220: DUP1
00000221: PUSH4 0x517471a9
00000226: EQ
00000227: PUSH2 0x0535
0000022a: JUMPI
0000022b: PUSH2 0x0266
0000022e: JUMP
0000022f: JUMPDEST
00000230: DUP1
00000231: PUSH3 0x3bf87e
00000235: EQ
00000236: PUSH2 0x026b
00000239: JUMPI
0000023a: DUP1
0000023b: PUSH4 0x0b19991f
00000240: EQ
00000241: PUSH2 0x0292
00000244: JUMPI
00000245: DUP1
00000246: PUSH4 0x1c524ac2
0000024b: EQ
0000024c: PUSH2 0x02f7
0000024f: JUMPI
00000250: DUP1
00000251: PUSH4 0x1ed74070
00000256: EQ
00000257: PUSH2 0x03bc
0000025a: JUMPI
0000025b: DUP1
0000025c: PUSH4 0x21a8f86c
00000261: EQ
00000262: PUSH2 0x03d3
00000265: JUMPI
00000266: JUMPDEST
00000267: PUSH1 0x00
00000269: DUP1
0000026a: REVERT
0000026b: JUMPDEST
0000026c: CALLVALUE
0000026d: DUP1
0000026e: ISZERO
0000026f: PUSH2 0x0277
00000272: JUMPI
00000273: PUSH1 0x00
00000275: DUP1
00000276: REVERT
00000277: JUMPDEST
00000278: POP
00000279: PUSH2 0x0280
0000027c: PUSH2 0x0e4a
0000027f: JUMP
00000280: JUMPDEST
00000281: PUSH1 0x40
00000283: DUP1
00000284: MLOAD
00000285: SWAP2
00000286: DUP3
00000287: MSTORE
00000288: MLOAD
00000289: SWAP1
0000028a: DUP2
0000028b: SWAP1
0000028c: SUB
0000028d: PUSH1 0x20
0000028f: ADD
00000290: SWAP1
00000291: RETURN
00000292: JUMPDEST
00000293: CALLVALUE
00000294: DUP1
00000295: ISZERO
00000296: PUSH2 0x029e
00000299: JUMPI
0000029a: PUSH1 0x00
0000029c: DUP1
0000029d: REVERT
0000029e: JUMPDEST
0000029f: POP
000002a0: PUSH2 0x02a7
000002a3: PUSH2 0x0e50
000002a6: JUMP
000002a7: JUMPDEST
000002a8: PUSH1 0x40
000002aa: DUP1
000002ab: MLOAD
000002ac: PUSH1 0x20
000002ae: DUP1
000002af: DUP3
000002b0: MSTORE
000002b1: DUP4
000002b2: MLOAD
000002b3: DUP2
000002b4: DUP4
000002b5: ADD
000002b6: MSTORE
000002b7: DUP4
000002b8: MLOAD
000002b9: SWAP2
000002ba: SWAP3
000002bb: DUP4
000002bc: SWAP3
000002bd: SWAP1
000002be: DUP4
000002bf: ADD
000002c0: SWAP2
000002c1: DUP6
000002c2: DUP2
000002c3: ADD
000002c4: SWAP2
000002c5: MUL
000002c6: DUP1
000002c7: DUP4
000002c8: DUP4
000002c9: PUSH1 0x00
000002cb: JUMPDEST
000002cc: DUP4
000002cd: DUP2
000002ce: LT
000002cf: ISZERO
000002d0: PUSH2 0x02e3
000002d3: JUMPI
000002d4: DUP2
000002d5: DUP2
000002d6: ADD
000002d7: MLOAD
000002d8: DUP4
000002d9: DUP3
000002da: ADD
000002db: MSTORE
000002dc: PUSH1 0x20
000002de: ADD
000002df: PUSH2 0x02cb
000002e2: JUMP
000002e3: JUMPDEST
000002e4: POP
000002e5: POP
000002e6: POP
000002e7: POP
000002e8: SWAP1
000002e9: POP
000002ea: ADD
000002eb: SWAP3
000002ec: POP
000002ed: POP
000002ee: POP
000002ef: PUSH1 0x40
000002f1: MLOAD
000002f2: DUP1
000002f3: SWAP2
000002f4: SUB
000002f5: SWAP1
000002f6: RETURN
000002f7: JUMPDEST
000002f8: CALLVALUE
000002f9: DUP1
000002fa: ISZERO
000002fb: PUSH2 0x0303
000002fe: JUMPI
000002ff: PUSH1 0x00
00000301: DUP1
00000302: REVERT
00000303: JUMPDEST
00000304: POP
00000305: PUSH2 0x03a8
00000308: PUSH1 0x04
0000030a: DUP1
0000030b: CALLDATASIZE
0000030c: SUB
0000030d: PUSH1 0x20
0000030f: DUP2
00000310: LT
00000311: ISZERO
00000312: PUSH2 0x031a
00000315: JUMPI
00000316: PUSH1 0x00
00000318: DUP1
00000319: REVERT
0000031a: JUMPDEST
0000031b: DUP2
0000031c: ADD
0000031d: SWAP1
0000031e: PUSH1 0x20
00000320: DUP2
00000321: ADD
00000322: DUP2
00000323: CALLDATALOAD
00000324: PUSH1 0x01
00000326: PUSH1 0x20
00000328: SHL
00000329: DUP2
0000032a: GT
0000032b: ISZERO
0000032c: PUSH2 0x0334
0000032f: JUMPI
00000330: PUSH1 0x00
00000332: DUP1
00000333: REVERT
00000334: JUMPDEST
00000335: DUP3
00000336: ADD
00000337: DUP4
00000338: PUSH1 0x20
0000033a: DUP3
0000033b: ADD
0000033c: GT
0000033d: ISZERO
0000033e: PUSH2 0x0346
00000341: JUMPI
00000342: PUSH1 0x00
00000344: DUP1
00000345: REVERT
00000346: JUMPDEST
00000347: DUP1
00000348: CALLDATALOAD
00000349: SWAP1
0000034a: PUSH1 0x20
0000034c: ADD
0000034d: SWAP2
0000034e: DUP5
0000034f: PUSH1 0x01
00000351: DUP4
00000352: MUL
00000353: DUP5
00000354: ADD
00000355: GT
00000356: PUSH1 0x01
00000358: PUSH1 0x20
0000035a: SHL
0000035b: DUP4
0000035c: GT
0000035d: OR
0000035e: ISZERO
0000035f: PUSH2 0x0367
00000362: JUMPI
00000363: PUSH1 0x00
00000365: DUP1
00000366: REVERT
00000367: JUMPDEST
00000368: SWAP2
00000369: SWAP1
0000036a: DUP1
0000036b: DUP1
0000036c: PUSH1 0x1f
0000036e: ADD
0000036f: PUSH1 0x20
00000371: DUP1
00000372: SWAP2
00000373: DIV
00000374: MUL
00000375: PUSH1 0x20
00000377: ADD
00000378: PUSH1 0x40
0000037a: MLOAD
0000037b: SWAP1
0000037c: DUP2
0000037d: ADD
0000037e: PUSH1 0x40
00000380: MSTORE
00000381: DUP1
00000382: SWAP4
00000383: SWAP3
00000384: SWAP2
00000385: SWAP1
00000386: DUP2
00000387: DUP2
00000388: MSTORE
00000389: PUSH1 0x20
0000038b: ADD
0000038c: DUP4
0000038d: DUP4
0000038e: DUP1
0000038f: DUP3
00000390: DUP5
00000391: CALLDATACOPY
00000392: PUSH1 0x00
00000394: SWAP3
00000395: ADD
00000396: SWAP2
00000397: SWAP1
00000398: SWAP2
00000399: MSTORE
0000039a: POP
0000039b: SWAP3
0000039c: SWAP6
0000039d: POP
0000039e: PUSH2 0x0f71
000003a1: SWAP5
000003a2: POP
000003a3: POP
000003a4: POP
000003a5: POP
000003a6: POP
000003a7: JUMP
000003a8: JUMPDEST
000003a9: PUSH1 0x40
000003ab: DUP1
000003ac: MLOAD
000003ad: SWAP2
000003ae: ISZERO
000003af: ISZERO
000003b0: DUP3
000003b1: MSTORE
000003b2: MLOAD
000003b3: SWAP1
000003b4: DUP2
000003b5: SWAP1
000003b6: SUB
000003b7: PUSH1 0x20
000003b9: ADD
000003ba: SWAP1
000003bb: RETURN
000003bc: JUMPDEST
000003bd: CALLVALUE
000003be: DUP1
000003bf: ISZERO
000003c0: PUSH2 0x03c8
000003c3: JUMPI
000003c4: PUSH1 0x00
000003c6: DUP1
000003c7: REVERT
000003c8: JUMPDEST
000003c9: POP
000003ca: PUSH2 0x03d1
000003cd: PUSH2 0x0f8a
000003d0: JUMP
000003d1: JUMPDEST
000003d2: STOP
000003d3: JUMPDEST
000003d4: CALLVALUE
000003d5: DUP1
000003d6: ISZERO
000003d7: PUSH2 0x03df
000003da: JUMPI
000003db: PUSH1 0x00
000003dd: DUP1
000003de: REVERT
000003df: JUMPDEST
000003e0: POP
000003e1: PUSH2 0x03a8
000003e4: PUSH2 0x1152
000003e7: JUMP
000003e8: JUMPDEST
000003e9: CALLVALUE
000003ea: DUP1
000003eb: ISZERO
000003ec: PUSH2 0x03f4
000003ef: JUMPI
000003f0: PUSH1 0x00
000003f2: DUP1
000003f3: REVERT
000003f4: JUMPDEST
000003f5: POP
000003f6: PUSH2 0x0280
000003f9: PUSH2 0x1181
000003fc: JUMP
000003fd: JUMPDEST
000003fe: CALLVALUE
000003ff: DUP1
00000400: ISZERO
00000401: PUSH2 0x0409
00000404: JUMPI
00000405: PUSH1 0x00
00000407: DUP1
00000408: REVERT
00000409: JUMPDEST
0000040a: POP
0000040b: PUSH2 0x03a8
0000040e: PUSH1 0x04
00000410: DUP1
00000411: CALLDATASIZE
00000412: SUB
00000413: PUSH1 0x20
00000415: DUP2
00000416: LT
00000417: ISZERO
00000418: PUSH2 0x0420
0000041b: JUMPI
0000041c: PUSH1 0x00
0000041e: DUP1
0000041f: REVERT
00000420: JUMPDEST
00000421: DUP2
00000422: ADD
00000423: SWAP1
00000424: PUSH1 0x20
00000426: DUP2
00000427: ADD
00000428: DUP2
00000429: CALLDATALOAD
0000042a: PUSH1 0x01
0000042c: PUSH1 0x20
0000042e: SHL
0000042f: DUP2
00000430: GT
00000431: ISZERO
00000432: PUSH2 0x043a
00000435: JUMPI
00000436: PUSH1 0x00
00000438: DUP1
00000439: REVERT
0000043a: JUMPDEST
0000043b: DUP3
0000043c: ADD
0000043d: DUP4
0000043e: PUSH1 0x20
00000440: DUP3
00000441: ADD
00000442: GT
00000443: ISZERO
00000444: PUSH2 0x044c
00000447: JUMPI
00000448: PUSH1 0x00
0000044a: DUP1
0000044b: REVERT
0000044c: JUMPDEST
0000044d: DUP1
0000044e: CALLDATALOAD
0000044f: SWAP1
00000450: PUSH1 0x20
00000452: ADD
00000453: SWAP2
00000454: DUP5
00000455: PUSH1 0x01
00000457: DUP4
00000458: MUL
00000459: DUP5
0000045a: ADD
0000045b: GT
0000045c: PUSH1 0x01
0000045e: PUSH1 0x20
00000460: SHL
00000461: DUP4
00000462: GT
00000463: OR
00000464: ISZERO
00000465: PUSH2 0x046d
00000468: JUMPI
00000469: PUSH1 0x00
0000046b: DUP1
0000046c: REVERT
0000046d: JUMPDEST
0000046e: SWAP2
0000046f: SWAP1
00000470: DUP1
00000471: DUP1
00000472: PUSH1 0x1f
00000474: ADD
00000475: PUSH1 0x20
00000477: DUP1
00000478: SWAP2
00000479: DIV
0000047a: MUL
0000047b: PUSH1 0x20
0000047d: ADD
0000047e: PUSH1 0x40
00000480: MLOAD
00000481: SWAP1
00000482: DUP2
00000483: ADD
00000484: PUSH1 0x40
00000486: MSTORE
00000487: DUP1
00000488: SWAP4
00000489: SWAP3
0000048a: SWAP2
0000048b: SWAP1
0000048c: DUP2
0000048d: DUP2
0000048e: MSTORE
0000048f: PUSH1 0x20
00000491: ADD
00000492: DUP4
00000493: DUP4
00000494: DUP1
00000495: DUP3
00000496: DUP5
00000497: CALLDATACOPY
00000498: PUSH1 0x00
0000049a: SWAP3
0000049b: ADD
0000049c: SWAP2
0000049d: SWAP1
0000049e: SWAP2
0000049f: MSTORE
000004a0: POP
000004a1: SWAP3
000004a2: SWAP6
000004a3: POP
000004a4: PUSH2 0x1187
000004a7: SWAP5
000004a8: POP
000004a9: POP
000004aa: POP
000004ab: POP
000004ac: POP
000004ad: JUMP
000004ae: JUMPDEST
000004af: CALLVALUE
000004b0: DUP1
000004b1: ISZERO
000004b2: PUSH2 0x04ba
000004b5: JUMPI
000004b6: PUSH1 0x00
000004b8: DUP1
000004b9: REVERT
000004ba: JUMPDEST
000004bb: POP
000004bc: PUSH2 0x0280
000004bf: PUSH2 0x1276
000004c2: JUMP
000004c3: JUMPDEST
000004c4: CALLVALUE
000004c5: DUP1
000004c6: ISZERO
000004c7: PUSH2 0x04cf
000004ca: JUMPI
000004cb: PUSH1 0x00
000004cd: DUP1
000004ce: REVERT
000004cf: JUMPDEST
000004d0: POP
000004d1: PUSH2 0x03a8
000004d4: PUSH1 0x04
000004d6: DUP1
000004d7: CALLDATASIZE
000004d8: SUB
000004d9: PUSH1 0x40
000004db: DUP2
000004dc: LT
000004dd: ISZERO
000004de: PUSH2 0x04e6
000004e1: JUMPI
000004e2: PUSH1 0x00
000004e4: DUP1
000004e5: REVERT
000004e6: JUMPDEST
000004e7: POP
000004e8: PUSH1 0x01
000004ea: PUSH1 0x01
000004ec: PUSH1 0xa0
000004ee: SHL
000004ef: SUB
000004f0: DUP2
000004f1: CALLDATALOAD
000004f2: AND
000004f3: SWAP1
000004f4: PUSH1 0x20
000004f6: ADD
000004f7: CALLDATALOAD
000004f8: PUSH2 0x127c
000004fb: JUMP
000004fc: JUMPDEST
000004fd: CALLVALUE
000004fe: DUP1
000004ff: ISZERO
00000500: PUSH2 0x0508
00000503: JUMPI
00000504: PUSH1 0x00
00000506: DUP1
00000507: REVERT
00000508: JUMPDEST
00000509: POP
0000050a: PUSH2 0x03d1
0000050d: PUSH1 0x04
0000050f: DUP1
00000510: CALLDATASIZE
00000511: SUB
00000512: PUSH1 0x40
00000514: DUP2
00000515: LT
00000516: ISZERO
00000517: PUSH2 0x051f
0000051a: JUMPI
0000051b: PUSH1 0x00
0000051d: DUP1
0000051e: REVERT
0000051f: JUMPDEST
00000520: POP
00000521: PUSH1 0x01
00000523: PUSH1 0x01
00000525: PUSH1 0xa0
00000527: SHL
00000528: SUB
00000529: DUP2
0000052a: CALLDATALOAD
0000052b: AND
0000052c: SWAP1
0000052d: PUSH1 0x20
0000052f: ADD
00000530: CALLDATALOAD
00000531: PUSH2 0x131b
00000534: JUMP
00000535: JUMPDEST
00000536: CALLVALUE
00000537: DUP1
00000538: ISZERO
00000539: PUSH2 0x0541
0000053c: JUMPI
0000053d: PUSH1 0x00
0000053f: DUP1
00000540: REVERT
00000541: JUMPDEST
00000542: POP
00000543: PUSH2 0x0280
00000546: PUSH2 0x15bb
00000549: JUMP
0000054a: JUMPDEST
0000054b: CALLVALUE
0000054c: DUP1
0000054d: ISZERO
0000054e: PUSH2 0x0556
00000551: JUMPI
00000552: PUSH1 0x00
00000554: DUP1
00000555: REVERT
00000556: JUMPDEST
00000557: POP
00000558: PUSH2 0x03a8
0000055b: PUSH1 0x04
0000055d: DUP1
0000055e: CALLDATASIZE
0000055f: SUB
00000560: PUSH1 0x20
00000562: DUP2
00000563: LT
00000564: ISZERO
00000565: PUSH2 0x056d
00000568: JUMPI
00000569: PUSH1 0x00
0000056b: DUP1
0000056c: REVERT
0000056d: JUMPDEST
0000056e: POP
0000056f: CALLDATALOAD
00000570: PUSH1 0x01
00000572: PUSH1 0x01
00000574: PUSH1 0xa0
00000576: SHL
00000577: SUB
00000578: AND
00000579: PUSH2 0x15d9
0000057c: JUMP
0000057d: JUMPDEST
0000057e: CALLVALUE
0000057f: DUP1
00000580: ISZERO
00000581: PUSH2 0x0589
00000584: JUMPI
00000585: PUSH1 0x00
00000587: DUP1
00000588: REVERT
00000589: JUMPDEST
0000058a: POP
0000058b: PUSH2 0x0280
0000058e: PUSH1 0x04
00000590: DUP1
00000591: CALLDATASIZE
00000592: SUB
00000593: PUSH1 0x20
00000595: DUP2
00000596: LT
00000597: ISZERO
00000598: PUSH2 0x05a0
0000059b: JUMPI
0000059c: PUSH1 0x00
0000059e: DUP1
0000059f: REVERT
000005a0: JUMPDEST
000005a1: POP
000005a2: CALLDATALOAD
000005a3: PUSH2 0x1643
000005a6: JUMP
000005a7: JUMPDEST
000005a8: CALLVALUE
000005a9: DUP1
000005aa: ISZERO
000005ab: PUSH2 0x05b3
000005ae: JUMPI
000005af: PUSH1 0x00
000005b1: DUP1
000005b2: REVERT
000005b3: JUMPDEST
000005b4: POP
000005b5: PUSH2 0x05bc
000005b8: PUSH2 0x169f
000005bb: JUMP
000005bc: JUMPDEST
000005bd: PUSH1 0x40
000005bf: DUP1
000005c0: MLOAD
000005c1: PUSH1 0x20
000005c3: DUP1
000005c4: DUP3
000005c5: MSTORE
000005c6: DUP4
000005c7: MLOAD
000005c8: DUP2
000005c9: DUP4
000005ca: ADD
000005cb: MSTORE
000005cc: DUP4
000005cd: MLOAD
000005ce: SWAP2
000005cf: SWAP3
000005d0: DUP4
000005d1: SWAP3
000005d2: SWAP1
000005d3: DUP4
000005d4: ADD
000005d5: SWAP2
000005d6: DUP6
000005d7: ADD
000005d8: SWAP1
000005d9: DUP1
000005da: DUP4
000005db: DUP4
000005dc: PUSH1 0x00
000005de: JUMPDEST
000005df: DUP4
000005e0: DUP2
000005e1: LT
000005e2: ISZERO
000005e3: PUSH2 0x05f6
000005e6: JUMPI
000005e7: DUP2
000005e8: DUP2
000005e9: ADD
000005ea: MLOAD
000005eb: DUP4
000005ec: DUP3
000005ed: ADD
000005ee: MSTORE
000005ef: PUSH1 0x20
000005f1: ADD
000005f2: PUSH2 0x05de
000005f5: JUMP
000005f6: JUMPDEST
000005f7: POP
000005f8: POP
000005f9: POP
000005fa: POP
000005fb: SWAP1
000005fc: POP
000005fd: SWAP1
000005fe: DUP2
000005ff: ADD
00000600: SWAP1
00000601: PUSH1 0x1f
00000603: AND
00000604: DUP1
00000605: ISZERO
00000606: PUSH2 0x0623
00000609: JUMPI
0000060a: DUP1
0000060b: DUP3
0000060c: SUB
0000060d: DUP1
0000060e: MLOAD
0000060f: PUSH1 0x01
00000611: DUP4
00000612: PUSH1 0x20
00000614: SUB
00000615: PUSH2 0x0100
00000618: EXP
00000619: SUB
0000061a: NOT
0000061b: AND
0000061c: DUP2
0000061d: MSTORE
0000061e: PUSH1 0x20
00000620: ADD
00000621: SWAP2
00000622: POP
00000623: JUMPDEST
00000624: POP
00000625: SWAP3
00000626: POP
00000627: POP
00000628: POP
00000629: PUSH1 0x40
0000062b: MLOAD
0000062c: DUP1
0000062d: SWAP2
0000062e: SUB
0000062f: SWAP1
00000630: RETURN
00000631: JUMPDEST
00000632: CALLVALUE
00000633: DUP1
00000634: ISZERO
00000635: PUSH2 0x063d
00000638: JUMPI
00000639: PUSH1 0x00
0000063b: DUP1
0000063c: REVERT
0000063d: JUMPDEST
0000063e: POP
0000063f: PUSH2 0x02a7
00000642: PUSH2 0x172d
00000645: JUMP
00000646: JUMPDEST
00000647: CALLVALUE
00000648: DUP1
00000649: ISZERO
0000064a: PUSH2 0x0652
0000064d: JUMPI
0000064e: PUSH1 0x00
00000650: DUP1
00000651: REVERT
00000652: JUMPDEST
00000653: POP
00000654: PUSH2 0x0280
00000657: PUSH2 0x17bc
0000065a: JUMP
0000065b: JUMPDEST
0000065c: CALLVALUE
0000065d: DUP1
0000065e: ISZERO
0000065f: PUSH2 0x0667
00000662: JUMPI
00000663: PUSH1 0x00
00000665: DUP1
00000666: REVERT
00000667: JUMPDEST
00000668: POP
00000669: PUSH2 0x0280
0000066c: PUSH2 0x17c2
0000066f: JUMP
00000670: JUMPDEST
00000671: CALLVALUE
00000672: DUP1
00000673: ISZERO
00000674: PUSH2 0x067c
00000677: JUMPI
00000678: PUSH1 0x00
0000067a: DUP1
0000067b: REVERT
0000067c: JUMPDEST
0000067d: POP
0000067e: PUSH2 0x03a8
00000681: PUSH2 0x17c8
00000684: JUMP
00000685: JUMPDEST
00000686: CALLVALUE
00000687: DUP1
00000688: ISZERO
00000689: PUSH2 0x0691
0000068c: JUMPI
0000068d: PUSH1 0x00
0000068f: DUP1
00000690: REVERT
00000691: JUMPDEST
00000692: POP
00000693: PUSH2 0x0280
00000696: PUSH2 0x17d0
00000699: JUMP
0000069a: JUMPDEST
0000069b: CALLVALUE
0000069c: DUP1
0000069d: ISZERO
0000069e: PUSH2 0x06a6
000006a1: JUMPI
000006a2: PUSH1 0x00
000006a4: DUP1
000006a5: REVERT
000006a6: JUMPDEST
000006a7: POP
000006a8: PUSH2 0x03d1
000006ab: PUSH1 0x04
000006ad: DUP1
000006ae: CALLDATASIZE
000006af: SUB
000006b0: PUSH1 0xa0
000006b2: DUP2
000006b3: LT
000006b4: ISZERO
000006b5: PUSH2 0x06bd
000006b8: JUMPI
000006b9: PUSH1 0x00
000006bb: DUP1
000006bc: REVERT
000006bd: JUMPDEST
000006be: DUP2
000006bf: CALLDATALOAD
000006c0: SWAP2
000006c1: SWAP1
000006c2: DUP2
000006c3: ADD
000006c4: SWAP1
000006c5: PUSH1 0x40
000006c7: DUP2
000006c8: ADD
000006c9: PUSH1 0x20
000006cb: DUP3
000006cc: ADD
000006cd: CALLDATALOAD
000006ce: PUSH1 0x01
000006d0: PUSH1 0x20
000006d2: SHL
000006d3: DUP2
000006d4: GT
000006d5: ISZERO
000006d6: PUSH2 0x06de
000006d9: JUMPI
000006da: PUSH1 0x00
000006dc: DUP1
000006dd: REVERT
000006de: JUMPDEST
000006df: DUP3
000006e0: ADD
000006e1: DUP4
000006e2: PUSH1 0x20
000006e4: DUP3
000006e5: ADD
000006e6: GT
000006e7: ISZERO
000006e8: PUSH2 0x06f0
000006eb: JUMPI
000006ec: PUSH1 0x00
000006ee: DUP1
000006ef: REVERT
000006f0: JUMPDEST
000006f1: DUP1
000006f2: CALLDATALOAD
000006f3: SWAP1
000006f4: PUSH1 0x20
000006f6: ADD
000006f7: SWAP2
000006f8: DUP5
000006f9: PUSH1 0x01
000006fb: DUP4
000006fc: MUL
000006fd: DUP5
000006fe: ADD
000006ff: GT
00000700: PUSH1 0x01
00000702: PUSH1 0x20
00000704: SHL
00000705: DUP4
00000706: GT
00000707: OR
00000708: ISZERO
00000709: PUSH2 0x0711
0000070c: JUMPI
0000070d: PUSH1 0x00
0000070f: DUP1
00000710: REVERT
00000711: JUMPDEST
00000712: SWAP2
00000713: SWAP1
00000714: DUP1
00000715: DUP1
00000716: PUSH1 0x1f
00000718: ADD
00000719: PUSH1 0x20
0000071b: DUP1
0000071c: SWAP2
0000071d: DIV
0000071e: MUL
0000071f: PUSH1 0x20
00000721: ADD
00000722: PUSH1 0x40
00000724: MLOAD
00000725: SWAP1
00000726: DUP2
00000727: ADD
00000728: PUSH1 0x40
0000072a: MSTORE
0000072b: DUP1
0000072c: SWAP4
0000072d: SWAP3
0000072e: SWAP2
0000072f: SWAP1
00000730: DUP2
00000731: DUP2
00000732: MSTORE
00000733: PUSH1 0x20
00000735: ADD
00000736: DUP4
00000737: DUP4
00000738: DUP1
00000739: DUP3
0000073a: DUP5
0000073b: CALLDATACOPY
0000073c: PUSH1 0x00
0000073e: SWAP3
0000073f: ADD
00000740: SWAP2
00000741: SWAP1
00000742: SWAP2
00000743: MSTORE
00000744: POP
00000745: SWAP3
00000746: SWAP6
00000747: SWAP5
00000748: SWAP4
00000749: PUSH1 0x20
0000074b: DUP2
0000074c: ADD
0000074d: SWAP4
0000074e: POP
0000074f: CALLDATALOAD
00000750: SWAP2
00000751: POP
00000752: POP
00000753: PUSH1 0x01
00000755: PUSH1 0x20
00000757: SHL
00000758: DUP2
00000759: GT
0000075a: ISZERO
0000075b: PUSH2 0x0763
0000075e: JUMPI
0000075f: PUSH1 0x00
00000761: DUP1
00000762: REVERT
00000763: JUMPDEST
00000764: DUP3
00000765: ADD
00000766: DUP4
00000767: PUSH1 0x20
00000769: DUP3
0000076a: ADD
0000076b: GT
0000076c: ISZERO
0000076d: PUSH2 0x0775
00000770: JUMPI
00000771: PUSH1 0x00
00000773: DUP1
00000774: REVERT
00000775: JUMPDEST
00000776: DUP1
00000777: CALLDATALOAD
00000778: SWAP1
00000779: PUSH1 0x20
0000077b: ADD
0000077c: SWAP2
0000077d: DUP5
0000077e: PUSH1 0x01
00000780: DUP4
00000781: MUL
00000782: DUP5
00000783: ADD
00000784: GT
00000785: PUSH1 0x01
00000787: PUSH1 0x20
00000789: SHL
0000078a: DUP4
0000078b: GT
0000078c: OR
0000078d: ISZERO
0000078e: PUSH2 0x0796
00000791: JUMPI
00000792: PUSH1 0x00
00000794: DUP1
00000795: REVERT
00000796: JUMPDEST
00000797: SWAP2
00000798: SWAP1
00000799: DUP1
0000079a: DUP1
0000079b: PUSH1 0x1f
0000079d: ADD
0000079e: PUSH1 0x20
000007a0: DUP1
000007a1: SWAP2
000007a2: DIV
000007a3: MUL
000007a4: PUSH1 0x20
000007a6: ADD
000007a7: PUSH1 0x40
000007a9: MLOAD
000007aa: SWAP1
000007ab: DUP2
000007ac: ADD
000007ad: PUSH1 0x40
000007af: MSTORE
000007b0: DUP1
000007b1: SWAP4
000007b2: SWAP3
000007b3: SWAP2
000007b4: SWAP1
000007b5: DUP2
000007b6: DUP2
000007b7: MSTORE
000007b8: PUSH1 0x20
000007ba: ADD
000007bb: DUP4
000007bc: DUP4
000007bd: DUP1
000007be: DUP3
000007bf: DUP5
000007c0: CALLDATACOPY
000007c1: PUSH1 0x00
000007c3: SWAP3
000007c4: ADD
000007c5: SWAP2
000007c6: SWAP1
000007c7: SWAP2
000007c8: MSTORE
000007c9: POP
000007ca: SWAP3
000007cb: SWAP6
000007cc: SWAP5
000007cd: SWAP4
000007ce: PUSH1 0x20
000007d0: DUP2
000007d1: ADD
000007d2: SWAP4
000007d3: POP
000007d4: CALLDATALOAD
000007d5: SWAP2
000007d6: POP
000007d7: POP
000007d8: PUSH1 0x01
000007da: PUSH1 0x20
000007dc: SHL
000007dd: DUP2
000007de: GT
000007df: ISZERO
000007e0: PUSH2 0x07e8
000007e3: JUMPI
000007e4: PUSH1 0x00
000007e6: DUP1
000007e7: REVERT
000007e8: JUMPDEST
000007e9: DUP3
000007ea: ADD
000007eb: DUP4
000007ec: PUSH1 0x20
000007ee: DUP3
000007ef: ADD
000007f0: GT
000007f1: ISZERO
000007f2: PUSH2 0x07fa
000007f5: JUMPI
000007f6: PUSH1 0x00
000007f8: DUP1
000007f9: REVERT
000007fa: JUMPDEST
000007fb: DUP1
000007fc: CALLDATALOAD
000007fd: SWAP1
000007fe: PUSH1 0x20
00000800: ADD
00000801: SWAP2
00000802: DUP5
00000803: PUSH1 0x01
00000805: DUP4
00000806: MUL
00000807: DUP5
00000808: ADD
00000809: GT
0000080a: PUSH1 0x01
0000080c: PUSH1 0x20
0000080e: SHL
0000080f: DUP4
00000810: GT
00000811: OR
00000812: ISZERO
00000813: PUSH2 0x081b
00000816: JUMPI
00000817: PUSH1 0x00
00000819: DUP1
0000081a: REVERT
0000081b: JUMPDEST
0000081c: SWAP2
0000081d: SWAP1
0000081e: DUP1
0000081f: DUP1
00000820: PUSH1 0x1f
00000822: ADD
00000823: PUSH1 0x20
00000825: DUP1
00000826: SWAP2
00000827: DIV
00000828: MUL
00000829: PUSH1 0x20
0000082b: ADD
0000082c: PUSH1 0x40
0000082e: MLOAD
0000082f: SWAP1
00000830: DUP2
00000831: ADD
00000832: PUSH1 0x40
00000834: MSTORE
00000835: DUP1
00000836: SWAP4
00000837: SWAP3
00000838: SWAP2
00000839: SWAP1
0000083a: DUP2
0000083b: DUP2
0000083c: MSTORE
0000083d: PUSH1 0x20
0000083f: ADD
00000840: DUP4
00000841: DUP4
00000842: DUP1
00000843: DUP3
00000844: DUP5
00000845: CALLDATACOPY
00000846: PUSH1 0x00
00000848: SWAP3
00000849: ADD
0000084a: SWAP2
0000084b: SWAP1
0000084c: SWAP2
0000084d: MSTORE
0000084e: POP
0000084f: SWAP3
00000850: SWAP6
00000851: SWAP5
00000852: SWAP4
00000853: PUSH1 0x20
00000855: DUP2
00000856: ADD
00000857: SWAP4
00000858: POP
00000859: CALLDATALOAD
0000085a: SWAP2
0000085b: POP
0000085c: POP
0000085d: PUSH1 0x01
0000085f: PUSH1 0x20
00000861: SHL
00000862: DUP2
00000863: GT
00000864: ISZERO
00000865: PUSH2 0x086d
00000868: JUMPI
00000869: PUSH1 0x00
0000086b: DUP1
0000086c: REVERT
0000086d: JUMPDEST
0000086e: DUP3
0000086f: ADD
00000870: DUP4
00000871: PUSH1 0x20
00000873: DUP3
00000874: ADD
00000875: GT
00000876: ISZERO
00000877: PUSH2 0x087f
0000087a: JUMPI
0000087b: PUSH1 0x00
0000087d: DUP1
0000087e: REVERT
0000087f: JUMPDEST
00000880: DUP1
00000881: CALLDATALOAD
00000882: SWAP1
00000883: PUSH1 0x20
00000885: ADD
00000886: SWAP2
00000887: DUP5
00000888: PUSH1 0x20
0000088a: DUP4
0000088b: MUL
0000088c: DUP5
0000088d: ADD
0000088e: GT
0000088f: PUSH1 0x01
00000891: PUSH1 0x20
00000893: SHL
00000894: DUP4
00000895: GT
00000896: OR
00000897: ISZERO
00000898: PUSH2 0x08a0
0000089b: JUMPI
0000089c: PUSH1 0x00
0000089e: DUP1
0000089f: REVERT
000008a0: JUMPDEST
000008a1: SWAP2
000008a2: SWAP1
000008a3: DUP1
000008a4: DUP1
000008a5: PUSH1 0x20
000008a7: MUL
000008a8: PUSH1 0x20
000008aa: ADD
000008ab: PUSH1 0x40
000008ad: MLOAD
000008ae: SWAP1
000008af: DUP2
000008b0: ADD
000008b1: PUSH1 0x40
000008b3: MSTORE
000008b4: DUP1
000008b5: SWAP4
000008b6: SWAP3
000008b7: SWAP2
000008b8: SWAP1
000008b9: DUP2
000008ba: DUP2
000008bb: MSTORE
000008bc: PUSH1 0x20
000008be: ADD
000008bf: DUP4
000008c0: DUP4
000008c1: PUSH1 0x20
000008c3: MUL
000008c4: DUP1
000008c5: DUP3
000008c6: DUP5
000008c7: CALLDATACOPY
000008c8: PUSH1 0x00
000008ca: SWAP3
000008cb: ADD
000008cc: SWAP2
000008cd: SWAP1
000008ce: SWAP2
000008cf: MSTORE
000008d0: POP
000008d1: SWAP3
000008d2: SWAP6
000008d3: POP
000008d4: PUSH2 0x17d6
000008d7: SWAP5
000008d8: POP
000008d9: POP
000008da: POP
000008db: POP
000008dc: POP
000008dd: JUMP
000008de: JUMPDEST
000008df: CALLVALUE
000008e0: DUP1
000008e1: ISZERO
000008e2: PUSH2 0x08ea
000008e5: JUMPI
000008e6: PUSH1 0x00
000008e8: DUP1
000008e9: REVERT
000008ea: JUMPDEST
000008eb: POP
000008ec: PUSH2 0x03d1
000008ef: PUSH1 0x04
000008f1: DUP1
000008f2: CALLDATASIZE
000008f3: SUB
000008f4: PUSH1 0x20
000008f6: DUP2
000008f7: LT
000008f8: ISZERO
000008f9: PUSH2 0x0901
000008fc: JUMPI
000008fd: PUSH1 0x00
000008ff: DUP1
00000900: REVERT
00000901: JUMPDEST
00000902: POP
00000903: CALLDATALOAD
00000904: PUSH1 0x01
00000906: PUSH1 0x01
00000908: PUSH1 0xa0
0000090a: SHL
0000090b: SUB
0000090c: AND
0000090d: PUSH2 0x1e61
00000910: JUMP
00000911: JUMPDEST
00000912: CALLVALUE
00000913: DUP1
00000914: ISZERO
00000915: PUSH2 0x091d
00000918: JUMPI
00000919: PUSH1 0x00
0000091b: DUP1
0000091c: REVERT
0000091d: JUMPDEST
0000091e: POP
0000091f: PUSH2 0x0280
00000922: PUSH2 0x1f75
00000925: JUMP
00000926: JUMPDEST
00000927: CALLVALUE
00000928: DUP1
00000929: ISZERO
0000092a: PUSH2 0x0932
0000092d: JUMPI
0000092e: PUSH1 0x00
00000930: DUP1
00000931: REVERT
00000932: JUMPDEST
00000933: POP
00000934: PUSH2 0x0280
00000937: PUSH2 0x1f7b
0000093a: JUMP
0000093b: JUMPDEST
0000093c: CALLVALUE
0000093d: DUP1
0000093e: ISZERO
0000093f: PUSH2 0x0947
00000942: JUMPI
00000943: PUSH1 0x00
00000945: DUP1
00000946: REVERT
00000947: JUMPDEST
00000948: POP
00000949: PUSH2 0x03a8
0000094c: PUSH1 0x04
0000094e: DUP1
0000094f: CALLDATASIZE
00000950: SUB
00000951: PUSH1 0x20
00000953: DUP2
00000954: LT
00000955: ISZERO
00000956: PUSH2 0x095e
00000959: JUMPI
0000095a: PUSH1 0x00
0000095c: DUP1
0000095d: REVERT
0000095e: JUMPDEST
0000095f: POP
00000960: CALLDATALOAD
00000961: PUSH2 0x1f81
00000964: JUMP
00000965: JUMPDEST
00000966: CALLVALUE
00000967: DUP1
00000968: ISZERO
00000969: PUSH2 0x0971
0000096c: JUMPI
0000096d: PUSH1 0x00
0000096f: DUP1
00000970: REVERT
00000971: JUMPDEST
00000972: POP
00000973: PUSH2 0x03d1
00000976: PUSH1 0x04
00000978: DUP1
00000979: CALLDATASIZE
0000097a: SUB
0000097b: PUSH1 0x20
0000097d: DUP2
0000097e: LT
0000097f: ISZERO
00000980: PUSH2 0x0988
00000983: JUMPI
00000984: PUSH1 0x00
00000986: DUP1
00000987: REVERT
00000988: JUMPDEST
00000989: POP
0000098a: CALLDATALOAD
0000098b: PUSH2 0x1f94
0000098e: JUMP
0000098f: JUMPDEST
00000990: CALLVALUE
00000991: DUP1
00000992: ISZERO
00000993: PUSH2 0x099b
00000996: JUMPI
00000997: PUSH1 0x00
00000999: DUP1
0000099a: REVERT
0000099b: JUMPDEST
0000099c: POP
0000099d: PUSH2 0x0280
000009a0: PUSH2 0x20a1
000009a3: JUMP
000009a4: JUMPDEST
000009a5: PUSH2 0x03d1
000009a8: PUSH1 0x04
000009aa: DUP1
000009ab: CALLDATASIZE
000009ac: SUB
000009ad: PUSH1 0x40
000009af: DUP2
000009b0: LT
000009b1: ISZERO
000009b2: PUSH2 0x09ba
000009b5: JUMPI
000009b6: PUSH1 0x00
000009b8: DUP1
000009b9: REVERT
000009ba: JUMPDEST
000009bb: DUP2
000009bc: CALLDATALOAD
000009bd: SWAP2
000009be: SWAP1
000009bf: DUP2
000009c0: ADD
000009c1: SWAP1
000009c2: PUSH1 0x40
000009c4: DUP2
000009c5: ADD
000009c6: PUSH1 0x20
000009c8: DUP3
000009c9: ADD
000009ca: CALLDATALOAD
000009cb: PUSH1 0x01
000009cd: PUSH1 0x20
000009cf: SHL
000009d0: DUP2
000009d1: GT
000009d2: ISZERO
000009d3: PUSH2 0x09db
000009d6: JUMPI
000009d7: PUSH1 0x00
000009d9: DUP1
000009da: REVERT
000009db: JUMPDEST
000009dc: DUP3
000009dd: ADD
000009de: DUP4
000009df: PUSH1 0x20
000009e1: DUP3
000009e2: ADD
000009e3: GT
000009e4: ISZERO
000009e5: PUSH2 0x09ed
000009e8: JUMPI
000009e9: PUSH1 0x00
000009eb: DUP1
000009ec: REVERT
000009ed: JUMPDEST
000009ee: DUP1
000009ef: CALLDATALOAD
000009f0: SWAP1
000009f1: PUSH1 0x20
000009f3: ADD
000009f4: SWAP2
000009f5: DUP5
000009f6: PUSH1 0x01
000009f8: DUP4
000009f9: MUL
000009fa: DUP5
000009fb: ADD
000009fc: GT
000009fd: PUSH1 0x01
000009ff: PUSH1 0x20
00000a01: SHL
00000a02: DUP4
00000a03: GT
00000a04: OR
00000a05: ISZERO
00000a06: PUSH2 0x0a0e
00000a09: JUMPI
00000a0a: PUSH1 0x00
00000a0c: DUP1
00000a0d: REVERT
00000a0e: JUMPDEST
00000a0f: SWAP2
00000a10: SWAP1
00000a11: DUP1
00000a12: DUP1
00000a13: PUSH1 0x1f
00000a15: ADD
00000a16: PUSH1 0x20
00000a18: DUP1
00000a19: SWAP2
00000a1a: DIV
00000a1b: MUL
00000a1c: PUSH1 0x20
00000a1e: ADD
00000a1f: PUSH1 0x40
00000a21: MLOAD
00000a22: SWAP1
00000a23: DUP2
00000a24: ADD
00000a25: PUSH1 0x40
00000a27: MSTORE
00000a28: DUP1
00000a29: SWAP4
00000a2a: SWAP3
00000a2b: SWAP2
00000a2c: SWAP1
00000a2d: DUP2
00000a2e: DUP2
00000a2f: MSTORE
00000a30: PUSH1 0x20
00000a32: ADD
00000a33: DUP4
00000a34: DUP4
00000a35: DUP1
00000a36: DUP3
00000a37: DUP5
00000a38: CALLDATACOPY
00000a39: PUSH1 0x00
00000a3b: SWAP3
00000a3c: ADD
00000a3d: SWAP2
00000a3e: SWAP1
00000a3f: SWAP2
00000a40: MSTORE
00000a41: POP
00000a42: SWAP3
00000a43: SWAP6
00000a44: POP
00000a45: PUSH2 0x20a7
00000a48: SWAP5
00000a49: POP
00000a4a: POP
00000a4b: POP
00000a4c: POP
00000a4d: POP
00000a4e: JUMP
00000a4f: JUMPDEST
00000a50: CALLVALUE
00000a51: DUP1
00000a52: ISZERO
00000a53: PUSH2 0x0a5b
00000a56: JUMPI
00000a57: PUSH1 0x00
00000a59: DUP1
00000a5a: REVERT
00000a5b: JUMPDEST
00000a5c: POP
00000a5d: PUSH2 0x0280
00000a60: PUSH1 0x04
00000a62: DUP1
00000a63: CALLDATASIZE
00000a64: SUB
00000a65: PUSH1 0x20
00000a67: DUP2
00000a68: LT
00000a69: ISZERO
00000a6a: PUSH2 0x0a72
00000a6d: JUMPI
00000a6e: PUSH1 0x00
00000a70: DUP1
00000a71: REVERT
00000a72: JUMPDEST
00000a73: DUP2
00000a74: ADD
00000a75: SWAP1
00000a76: PUSH1 0x20
00000a78: DUP2
00000a79: ADD
00000a7a: DUP2
00000a7b: CALLDATALOAD
00000a7c: PUSH1 0x01
00000a7e: PUSH1 0x20
00000a80: SHL
00000a81: DUP2
00000a82: GT
00000a83: ISZERO
00000a84: PUSH2 0x0a8c
00000a87: JUMPI
00000a88: PUSH1 0x00
00000a8a: DUP1
00000a8b: REVERT
00000a8c: JUMPDEST
00000a8d: DUP3
00000a8e: ADD
00000a8f: DUP4
00000a90: PUSH1 0x20
00000a92: DUP3
00000a93: ADD
00000a94: GT
00000a95: ISZERO
00000a96: PUSH2 0x0a9e
00000a99: JUMPI
00000a9a: PUSH1 0x00
00000a9c: DUP1
00000a9d: REVERT
00000a9e: JUMPDEST
00000a9f: DUP1
00000aa0: CALLDATALOAD
00000aa1: SWAP1
00000aa2: PUSH1 0x20
00000aa4: ADD
00000aa5: SWAP2
00000aa6: DUP5
00000aa7: PUSH1 0x01
00000aa9: DUP4
00000aaa: MUL
00000aab: DUP5
00000aac: ADD
00000aad: GT
00000aae: PUSH1 0x01
00000ab0: PUSH1 0x20
00000ab2: SHL
00000ab3: DUP4
00000ab4: GT
00000ab5: OR
00000ab6: ISZERO
00000ab7: PUSH2 0x0abf
00000aba: JUMPI
00000abb: PUSH1 0x00
00000abd: DUP1
00000abe: REVERT
00000abf: JUMPDEST
00000ac0: SWAP2
00000ac1: SWAP1
00000ac2: DUP1
00000ac3: DUP1
00000ac4: PUSH1 0x1f
00000ac6: ADD
00000ac7: PUSH1 0x20
00000ac9: DUP1
00000aca: SWAP2
00000acb: DIV
00000acc: MUL
00000acd: PUSH1 0x20
00000acf: ADD
00000ad0: PUSH1 0x40
00000ad2: MLOAD
00000ad3: SWAP1
00000ad4: DUP2
00000ad5: ADD
00000ad6: PUSH1 0x40
00000ad8: MSTORE
00000ad9: DUP1
00000ada: SWAP4
00000adb: SWAP3
00000adc: SWAP2
00000add: SWAP1
00000ade: DUP2
00000adf: DUP2
00000ae0: MSTORE
00000ae1: PUSH1 0x20
00000ae3: ADD
00000ae4: DUP4
00000ae5: DUP4
00000ae6: DUP1
00000ae7: DUP3
00000ae8: DUP5
00000ae9: CALLDATACOPY
00000aea: PUSH1 0x00
00000aec: SWAP3
00000aed: ADD
00000aee: SWAP2
00000aef: SWAP1
00000af0: SWAP2
00000af1: MSTORE
00000af2: POP
00000af3: SWAP3
00000af4: SWAP6
00000af5: POP
00000af6: PUSH2 0x2204
00000af9: SWAP5
00000afa: POP
00000afb: POP
00000afc: POP
00000afd: POP
00000afe: POP
00000aff: JUMP
00000b00: JUMPDEST
00000b01: PUSH2 0x03d1
00000b04: PUSH2 0x226f
00000b07: JUMP
00000b08: JUMPDEST
00000b09: CALLVALUE
00000b0a: DUP1
00000b0b: ISZERO
00000b0c: PUSH2 0x0b14
00000b0f: JUMPI
00000b10: PUSH1 0x00
00000b12: DUP1
00000b13: REVERT
00000b14: JUMPDEST
00000b15: POP
00000b16: PUSH2 0x03d1
00000b19: PUSH1 0x04
00000b1b: DUP1
00000b1c: CALLDATASIZE
00000b1d: SUB
00000b1e: PUSH1 0x20
00000b20: DUP2
00000b21: LT
00000b22: ISZERO
00000b23: PUSH2 0x0b2b
00000b26: JUMPI
00000b27: PUSH1 0x00
00000b29: DUP1
00000b2a: REVERT
00000b2b: JUMPDEST
00000b2c: DUP2
00000b2d: ADD
00000b2e: SWAP1
00000b2f: PUSH1 0x20
00000b31: DUP2
00000b32: ADD
00000b33: DUP2
00000b34: CALLDATALOAD
00000b35: PUSH1 0x01
00000b37: PUSH1 0x20
00000b39: SHL
00000b3a: DUP2
00000b3b: GT
00000b3c: ISZERO
00000b3d: PUSH2 0x0b45
00000b40: JUMPI
00000b41: PUSH1 0x00
00000b43: DUP1
00000b44: REVERT
00000b45: JUMPDEST
00000b46: DUP3
00000b47: ADD
00000b48: DUP4
00000b49: PUSH1 0x20
00000b4b: DUP3
00000b4c: ADD
00000b4d: GT
00000b4e: ISZERO
00000b4f: PUSH2 0x0b57
00000b52: JUMPI
00000b53: PUSH1 0x00
00000b55: DUP1
00000b56: REVERT
00000b57: JUMPDEST
00000b58: DUP1
00000b59: CALLDATALOAD
00000b5a: SWAP1
00000b5b: PUSH1 0x20
00000b5d: ADD
00000b5e: SWAP2
00000b5f: DUP5
00000b60: PUSH1 0x01
00000b62: DUP4
00000b63: MUL
00000b64: DUP5
00000b65: ADD
00000b66: GT
00000b67: PUSH1 0x01
00000b69: PUSH1 0x20
00000b6b: SHL
00000b6c: DUP4
00000b6d: GT
00000b6e: OR
00000b6f: ISZERO
00000b70: PUSH2 0x0b78
00000b73: JUMPI
00000b74: PUSH1 0x00
00000b76: DUP1
00000b77: REVERT
00000b78: JUMPDEST
00000b79: SWAP2
00000b7a: SWAP1
00000b7b: DUP1
00000b7c: DUP1
00000b7d: PUSH1 0x1f
00000b7f: ADD
00000b80: PUSH1 0x20
00000b82: DUP1
00000b83: SWAP2
00000b84: DIV
00000b85: MUL
00000b86: PUSH1 0x20
00000b88: ADD
00000b89: PUSH1 0x40
00000b8b: MLOAD
00000b8c: SWAP1
00000b8d: DUP2
00000b8e: ADD
00000b8f: PUSH1 0x40
00000b91: MSTORE
00000b92: DUP1
00000b93: SWAP4
00000b94: SWAP3
00000b95: SWAP2
00000b96: SWAP1
00000b97: DUP2
00000b98: DUP2
00000b99: MSTORE
00000b9a: PUSH1 0x20
00000b9c: ADD
00000b9d: DUP4
00000b9e: DUP4
00000b9f: DUP1
00000ba0: DUP3
00000ba1: DUP5
00000ba2: CALLDATACOPY
00000ba3: PUSH1 0x00
00000ba5: SWAP3
00000ba6: ADD
00000ba7: SWAP2
00000ba8: SWAP1
00000ba9: SWAP2
00000baa: MSTORE
00000bab: POP
00000bac: SWAP3
00000bad: SWAP6
00000bae: POP
00000baf: PUSH2 0x2407
00000bb2: SWAP5
00000bb3: POP
00000bb4: POP
00000bb5: POP
00000bb6: POP
00000bb7: POP
00000bb8: JUMP
00000bb9: JUMPDEST
00000bba: CALLVALUE
00000bbb: DUP1
00000bbc: ISZERO
00000bbd: PUSH2 0x0bc5
00000bc0: JUMPI
00000bc1: PUSH1 0x00
00000bc3: DUP1
00000bc4: REVERT
00000bc5: JUMPDEST
00000bc6: POP
00000bc7: PUSH2 0x0280
00000bca: PUSH2 0x2aac
00000bcd: JUMP
00000bce: JUMPDEST
00000bcf: CALLVALUE
00000bd0: DUP1
00000bd1: ISZERO
00000bd2: PUSH2 0x0bda
00000bd5: JUMPI
00000bd6: PUSH1 0x00
00000bd8: DUP1
00000bd9: REVERT
00000bda: JUMPDEST
00000bdb: POP
00000bdc: PUSH2 0x0280
00000bdf: PUSH2 0x2ab2
00000be2: JUMP
00000be3: JUMPDEST
00000be4: CALLVALUE
00000be5: DUP1
00000be6: ISZERO
00000be7: PUSH2 0x0bef
00000bea: JUMPI
00000beb: PUSH1 0x00
00000bed: DUP1
00000bee: REVERT
00000bef: JUMPDEST
00000bf0: POP
00000bf1: PUSH2 0x0280
00000bf4: PUSH2 0x2ab8
00000bf7: JUMP
00000bf8: JUMPDEST
00000bf9: CALLVALUE
00000bfa: DUP1
00000bfb: ISZERO
00000bfc: PUSH2 0x0c04
00000bff: JUMPI
00000c00: PUSH1 0x00
00000c02: DUP1
00000c03: REVERT
00000c04: JUMPDEST
00000c05: POP
00000c06: PUSH2 0x0280
00000c09: PUSH2 0x2ac4
00000c0c: JUMP
00000c0d: JUMPDEST
00000c0e: CALLVALUE
00000c0f: DUP1
00000c10: ISZERO
00000c11: PUSH2 0x0c19
00000c14: JUMPI
00000c15: PUSH1 0x00
00000c17: DUP1
00000c18: REVERT
00000c19: JUMPDEST
00000c1a: POP
00000c1b: PUSH2 0x0280
00000c1e: PUSH2 0x2aef
00000c21: JUMP
00000c22: JUMPDEST
00000c23: CALLVALUE
00000c24: DUP1
00000c25: ISZERO
00000c26: PUSH2 0x0c2e
00000c29: JUMPI
00000c2a: PUSH1 0x00
00000c2c: DUP1
00000c2d: REVERT
00000c2e: JUMPDEST
00000c2f: POP
00000c30: PUSH2 0x03d1
00000c33: PUSH2 0x2b08
00000c36: JUMP
00000c37: JUMPDEST
00000c38: PUSH2 0x03d1
00000c3b: PUSH1 0x04
00000c3d: DUP1
00000c3e: CALLDATASIZE
00000c3f: SUB
00000c40: PUSH1 0x40
00000c42: DUP2
00000c43: LT
00000c44: ISZERO
00000c45: PUSH2 0x0c4d
00000c48: JUMPI
00000c49: PUSH1 0x00
00000c4b: DUP1
00000c4c: REVERT
00000c4d: JUMPDEST
00000c4e: POP
00000c4f: DUP1
00000c50: CALLDATALOAD
00000c51: SWAP1
00000c52: PUSH1 0x20
00000c54: ADD
00000c55: CALLDATALOAD
00000c56: PUSH1 0x01
00000c58: PUSH1 0x01
00000c5a: PUSH1 0xa0
00000c5c: SHL
00000c5d: SUB
00000c5e: AND
00000c5f: PUSH2 0x2b87
00000c62: JUMP
00000c63: JUMPDEST
00000c64: CALLVALUE
00000c65: DUP1
00000c66: ISZERO
00000c67: PUSH2 0x0c6f
00000c6a: JUMPI
00000c6b: PUSH1 0x00
00000c6d: DUP1
00000c6e: REVERT
00000c6f: JUMPDEST
00000c70: POP
00000c71: PUSH2 0x0280
00000c74: PUSH2 0x2d95
00000c77: JUMP
00000c78: JUMPDEST
00000c79: CALLVALUE
00000c7a: DUP1
00000c7b: ISZERO
00000c7c: PUSH2 0x0c84
00000c7f: JUMPI
00000c80: PUSH1 0x00
00000c82: DUP1
00000c83: REVERT
00000c84: JUMPDEST
00000c85: POP
00000c86: PUSH2 0x02a7
00000c89: PUSH1 0x04
00000c8b: DUP1
00000c8c: CALLDATASIZE
00000c8d: SUB
00000c8e: PUSH1 0x20
00000c90: DUP2
00000c91: LT
00000c92: ISZERO
00000c93: PUSH2 0x0c9b
00000c96: JUMPI
00000c97: PUSH1 0x00
00000c99: DUP1
00000c9a: REVERT
00000c9b: JUMPDEST
00000c9c: DUP2
00000c9d: ADD
00000c9e: SWAP1
00000c9f: PUSH1 0x20
00000ca1: DUP2
00000ca2: ADD
00000ca3: DUP2
00000ca4: CALLDATALOAD
00000ca5: PUSH1 0x01
00000ca7: PUSH1 0x20
00000ca9: SHL
00000caa: DUP2
00000cab: GT
00000cac: ISZERO
00000cad: PUSH2 0x0cb5
00000cb0: JUMPI
00000cb1: PUSH1 0x00
00000cb3: DUP1
00000cb4: REVERT
00000cb5: JUMPDEST
00000cb6: DUP3
00000cb7: ADD
00000cb8: DUP4
00000cb9: PUSH1 0x20
00000cbb: DUP3
00000cbc: ADD
00000cbd: GT
00000cbe: ISZERO
00000cbf: PUSH2 0x0cc7
00000cc2: JUMPI
00000cc3: PUSH1 0x00
00000cc5: DUP1
00000cc6: REVERT
00000cc7: JUMPDEST
00000cc8: DUP1
00000cc9: CALLDATALOAD
00000cca: SWAP1
00000ccb: PUSH1 0x20
00000ccd: ADD
00000cce: SWAP2
00000ccf: DUP5
00000cd0: PUSH1 0x01
00000cd2: DUP4
00000cd3: MUL
00000cd4: DUP5
00000cd5: ADD
00000cd6: GT
00000cd7: PUSH1 0x01
00000cd9: PUSH1 0x20
00000cdb: SHL
00000cdc: DUP4
00000cdd: GT
00000cde: OR
00000cdf: ISZERO
00000ce0: PUSH2 0x0ce8
00000ce3: JUMPI
00000ce4: PUSH1 0x00
00000ce6: DUP1
00000ce7: REVERT
00000ce8: JUMPDEST
00000ce9: SWAP2
00000cea: SWAP1
00000ceb: DUP1
00000cec: DUP1
00000ced: PUSH1 0x1f
00000cef: ADD
00000cf0: PUSH1 0x20
00000cf2: DUP1
00000cf3: SWAP2
00000cf4: DIV
00000cf5: MUL
00000cf6: PUSH1 0x20
00000cf8: ADD
00000cf9: PUSH1 0x40
00000cfb: MLOAD
00000cfc: SWAP1
00000cfd: DUP2
00000cfe: ADD
00000cff: PUSH1 0x40
00000d01: MSTORE
00000d02: DUP1
00000d03: SWAP4
00000d04: SWAP3
00000d05: SWAP2
00000d06: SWAP1
00000d07: DUP2
00000d08: DUP2
00000d09: MSTORE
00000d0a: PUSH1 0x20
00000d0c: ADD
00000d0d: DUP4
00000d0e: DUP4
00000d0f: DUP1
00000d10: DUP3
00000d11: DUP5
00000d12: CALLDATACOPY
00000d13: PUSH1 0x00
00000d15: SWAP3
00000d16: ADD
00000d17: SWAP2
00000d18: SWAP1
00000d19: SWAP2
00000d1a: MSTORE
00000d1b: POP
00000d1c: SWAP3
00000d1d: SWAP6
00000d1e: POP
00000d1f: PUSH2 0x2d9b
00000d22: SWAP5
00000d23: POP
00000d24: POP
00000d25: POP
00000d26: POP
00000d27: POP
00000d28: JUMP
00000d29: JUMPDEST
00000d2a: CALLVALUE
00000d2b: DUP1
00000d2c: ISZERO
00000d2d: PUSH2 0x0d35
00000d30: JUMPI
00000d31: PUSH1 0x00
00000d33: DUP1
00000d34: REVERT
00000d35: JUMPDEST
00000d36: POP
00000d37: PUSH2 0x0280
00000d3a: PUSH2 0x2f27
00000d3d: JUMP
00000d3e: JUMPDEST
00000d3f: CALLVALUE
00000d40: DUP1
00000d41: ISZERO
00000d42: PUSH2 0x0d4a
00000d45: JUMPI
00000d46: PUSH1 0x00
00000d48: DUP1
00000d49: REVERT
00000d4a: JUMPDEST
00000d4b: POP
00000d4c: PUSH2 0x03d1
00000d4f: PUSH1 0x04
00000d51: DUP1
00000d52: CALLDATASIZE
00000d53: SUB
00000d54: PUSH1 0x40
00000d56: DUP2
00000d57: LT
00000d58: ISZERO
00000d59: PUSH2 0x0d61
00000d5c: JUMPI
00000d5d: PUSH1 0x00
00000d5f: DUP1
00000d60: REVERT
00000d61: JUMPDEST
00000d62: DUP2
00000d63: CALLDATALOAD
00000d64: SWAP2
00000d65: SWAP1
00000d66: DUP2
00000d67: ADD
00000d68: SWAP1
00000d69: PUSH1 0x40
00000d6b: DUP2
00000d6c: ADD
00000d6d: PUSH1 0x20
00000d6f: DUP3
00000d70: ADD
00000d71: CALLDATALOAD
00000d72: PUSH1 0x01
00000d74: PUSH1 0x20
00000d76: SHL
00000d77: DUP2
00000d78: GT
00000d79: ISZERO
00000d7a: PUSH2 0x0d82
00000d7d: JUMPI
00000d7e: PUSH1 0x00
00000d80: DUP1
00000d81: REVERT
00000d82: JUMPDEST
00000d83: DUP3
00000d84: ADD
00000d85: DUP4
00000d86: PUSH1 0x20
00000d88: DUP3
00000d89: ADD
00000d8a: GT
00000d8b: ISZERO
00000d8c: PUSH2 0x0d94
00000d8f: JUMPI
00000d90: PUSH1 0x00
00000d92: DUP1
00000d93: REVERT
00000d94: JUMPDEST
00000d95: DUP1
00000d96: CALLDATALOAD
00000d97: SWAP1
00000d98: PUSH1 0x20
00000d9a: ADD
00000d9b: SWAP2
00000d9c: DUP5
00000d9d: PUSH1 0x01
00000d9f: DUP4
00000da0: MUL
00000da1: DUP5
00000da2: ADD
00000da3: GT
00000da4: PUSH1 0x01
00000da6: PUSH1 0x20
00000da8: SHL
00000da9: DUP4
00000daa: GT
00000dab: OR
00000dac: ISZERO
00000dad: PUSH2 0x0db5
00000db0: JUMPI
00000db1: PUSH1 0x00
00000db3: DUP1
00000db4: REVERT
00000db5: JUMPDEST
00000db6: SWAP2
00000db7: SWAP1
00000db8: DUP1
00000db9: DUP1
00000dba: PUSH1 0x1f
00000dbc: ADD
00000dbd: PUSH1 0x20
00000dbf: DUP1
00000dc0: SWAP2
00000dc1: DIV
00000dc2: MUL
00000dc3: PUSH1 0x20
00000dc5: ADD
00000dc6: PUSH1 0x40
00000dc8: MLOAD
00000dc9: SWAP1
00000dca: DUP2
00000dcb: ADD
00000dcc: PUSH1 0x40
00000dce: MSTORE
00000dcf: DUP1
00000dd0: SWAP4
00000dd1: SWAP3
00000dd2: SWAP2
00000dd3: SWAP1
00000dd4: DUP2
00000dd5: DUP2
00000dd6: MSTORE
00000dd7: PUSH1 0x20
00000dd9: ADD
00000dda: DUP4
00000ddb: DUP4
00000ddc: DUP1
00000ddd: DUP3
00000dde: DUP5
00000ddf: CALLDATACOPY
00000de0: PUSH1 0x00
00000de2: SWAP3
00000de3: ADD
00000de4: SWAP2
00000de5: SWAP1
00000de6: SWAP2
00000de7: MSTORE
00000de8: POP
00000de9: SWAP3
00000dea: SWAP6
00000deb: POP
00000dec: PUSH2 0x2f2d
00000def: SWAP5
00000df0: POP
00000df1: POP
00000df2: POP
00000df3: POP
00000df4: POP
00000df5: JUMP
00000df6: JUMPDEST
00000df7: CALLVALUE
00000df8: DUP1
00000df9: ISZERO
00000dfa: PUSH2 0x0e02
00000dfd: JUMPI
00000dfe: PUSH1 0x00
00000e00: DUP1
00000e01: REVERT
00000e02: JUMPDEST
00000e03: POP
00000e04: PUSH2 0x0280
00000e07: PUSH2 0x30c3
00000e0a: JUMP
00000e0b: JUMPDEST
00000e0c: CALLVALUE
00000e0d: DUP1
00000e0e: ISZERO
00000e0f: PUSH2 0x0e17
00000e12: JUMPI
00000e13: PUSH1 0x00
00000e15: DUP1
00000e16: REVERT
00000e17: JUMPDEST
00000e18: POP
00000e19: PUSH2 0x05bc
00000e1c: PUSH1 0x04
00000e1e: DUP1
00000e1f: CALLDATASIZE
00000e20: SUB
00000e21: PUSH1 0x20
00000e23: DUP2
00000e24: LT
00000e25: ISZERO
00000e26: PUSH2 0x0e2e
00000e29: JUMPI
00000e2a: PUSH1 0x00
00000e2c: DUP1
00000e2d: REVERT
00000e2e: JUMPDEST
00000e2f: POP
00000e30: CALLDATALOAD
00000e31: PUSH2 0x30c9
00000e34: JUMP
00000e35: JUMPDEST
00000e36: CALLVALUE
00000e37: DUP1
00000e38: ISZERO
00000e39: PUSH2 0x0e41
00000e3c: JUMPI
00000e3d: PUSH1 0x00
00000e3f: DUP1
00000e40: REVERT
00000e41: JUMPDEST
00000e42: POP
00000e43: PUSH2 0x0280
00000e46: PUSH2 0x30dc
00000e49: JUMP
00000e4a: JUMPDEST
00000e4b: PUSH1 0x24
00000e4d: SLOAD
00000e4e: DUP2
00000e4f: JUMP
00000e50: JUMPDEST
00000e51: PUSH1 0x60
00000e53: PUSH1 0x01
00000e55: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17
00000e6a: PUSH4 0xa3c6b2b3
00000e6f: SWAP1
00000e70: SWAP2
00000e71: PUSH1 0x40
00000e73: MLOAD
00000e74: DUP3
00000e75: PUSH4 0xffffffff
00000e7a: AND
00000e7b: PUSH1 0xe0
00000e7d: SHL
00000e7e: DUP2
00000e7f: MSTORE
00000e80: PUSH1 0x04
00000e82: ADD
00000e83: DUP1
00000e84: DUP3
00000e85: DUP2
00000e86: MSTORE
00000e87: PUSH1 0x20
00000e89: ADD
00000e8a: SWAP2
00000e8b: POP
00000e8c: POP
00000e8d: PUSH1 0x00
00000e8f: PUSH1 0x40
00000e91: MLOAD
00000e92: DUP1
00000e93: DUP4
00000e94: SUB
00000e95: DUP2
00000e96: DUP7
00000e97: DUP1
00000e98: EXTCODESIZE
00000e99: ISZERO
00000e9a: DUP1
00000e9b: ISZERO
00000e9c: PUSH2 0x0ea4
00000e9f: JUMPI
00000ea0: PUSH1 0x00
00000ea2: DUP1
00000ea3: REVERT
00000ea4: JUMPDEST
00000ea5: POP
00000ea6: GAS
00000ea7: DELEGATECALL
00000ea8: ISZERO
00000ea9: DUP1
00000eaa: ISZERO
00000eab: PUSH2 0x0eb8
00000eae: JUMPI
00000eaf: RETURNDATASIZE
00000eb0: PUSH1 0x00
00000eb2: DUP1
00000eb3: RETURNDATACOPY
00000eb4: RETURNDATASIZE
00000eb5: PUSH1 0x00
00000eb7: REVERT
00000eb8: JUMPDEST
00000eb9: POP
00000eba: POP
00000ebb: POP
00000ebc: POP
00000ebd: PUSH1 0x40
00000ebf: MLOAD
00000ec0: RETURNDATASIZE
00000ec1: PUSH1 0x00
00000ec3: DUP3
00000ec4: RETURNDATACOPY
00000ec5: PUSH1 0x1f
00000ec7: RETURNDATASIZE
00000ec8: SWAP1
00000ec9: DUP2
00000eca: ADD
00000ecb: PUSH1 0x1f
00000ecd: NOT
00000ece: AND
00000ecf: DUP3
00000ed0: ADD
00000ed1: PUSH1 0x40
00000ed3: MSTORE
00000ed4: PUSH1 0x20
00000ed6: DUP2
00000ed7: LT
00000ed8: ISZERO
00000ed9: PUSH2 0x0ee1
00000edc: JUMPI
00000edd: PUSH1 0x00
00000edf: DUP1
00000ee0: REVERT
00000ee1: JUMPDEST
00000ee2: DUP2
00000ee3: ADD
00000ee4: SWAP1
00000ee5: DUP1
00000ee6: DUP1
00000ee7: MLOAD
00000ee8: PUSH1 0x40
00000eea: MLOAD
00000eeb: SWAP4
00000eec: SWAP3
00000eed: SWAP2
00000eee: SWAP1
00000eef: DUP5
00000ef0: PUSH1 0x01
00000ef2: PUSH1 0x20
00000ef4: SHL
00000ef5: DUP3
00000ef6: GT
00000ef7: ISZERO
00000ef8: PUSH2 0x0f00
00000efb: JUMPI
00000efc: PUSH1 0x00
00000efe: DUP1
00000eff: REVERT
00000f00: JUMPDEST
00000f01: SWAP1
00000f02: DUP4
00000f03: ADD
00000f04: SWAP1
00000f05: PUSH1 0x20
00000f07: DUP3
00000f08: ADD
00000f09: DUP6
00000f0a: DUP2
00000f0b: GT
00000f0c: ISZERO
00000f0d: PUSH2 0x0f15
00000f10: JUMPI
00000f11: PUSH1 0x00
00000f13: DUP1
00000f14: REVERT
00000f15: JUMPDEST
00000f16: DUP3
00000f17: MLOAD
00000f18: DUP7
00000f19: PUSH1 0x20
00000f1b: DUP3
00000f1c: MUL
00000f1d: DUP4
00000f1e: ADD
00000f1f: GT
00000f20: PUSH1 0x01
00000f22: PUSH1 0x20
00000f24: SHL
00000f25: DUP3
00000f26: GT
00000f27: OR
00000f28: ISZERO
00000f29: PUSH2 0x0f31
00000f2c: JUMPI
00000f2d: PUSH1 0x00
00000f2f: DUP1
00000f30: REVERT
00000f31: JUMPDEST
00000f32: DUP3
00000f33: MSTORE
00000f34: POP
00000f35: DUP2
00000f36: MLOAD
00000f37: PUSH1 0x20
00000f39: SWAP2
00000f3a: DUP3
00000f3b: ADD
00000f3c: SWAP3
00000f3d: DUP3
00000f3e: ADD
00000f3f: SWAP2
00000f40: MUL
00000f41: DUP1
00000f42: DUP4
00000f43: DUP4
00000f44: PUSH1 0x00
00000f46: JUMPDEST
00000f47: DUP4
00000f48: DUP2
00000f49: LT
00000f4a: ISZERO
00000f4b: PUSH2 0x0f5e
00000f4e: JUMPI
00000f4f: DUP2
00000f50: DUP2
00000f51: ADD
00000f52: MLOAD
00000f53: DUP4
00000f54: DUP3
00000f55: ADD
00000f56: MSTORE
00000f57: PUSH1 0x20
00000f59: ADD
00000f5a: PUSH2 0x0f46
00000f5d: JUMP
00000f5e: JUMPDEST
00000f5f: POP
00000f60: POP
00000f61: POP
00000f62: POP
00000f63: SWAP1
00000f64: POP
00000f65: ADD
00000f66: PUSH1 0x40
00000f68: MSTORE
00000f69: POP
00000f6a: POP
00000f6b: POP
00000f6c: SWAP1
00000f6d: POP
00000f6e: JUMPDEST
00000f6f: SWAP1
00000f70: JUMP
00000f71: JUMPDEST
00000f72: PUSH1 0x00
00000f74: PUSH2 0x0f84
00000f77: PUSH1 0x0b
00000f79: DUP4
00000f7a: PUSH4 0xffffffff
00000f7f: PUSH2 0x30e2
00000f82: AND
00000f83: JUMP
00000f84: JUMPDEST
00000f85: SWAP3
00000f86: SWAP2
00000f87: POP
00000f88: POP
00000f89: JUMP
00000f8a: JUMPDEST
00000f8b: PUSH2 0x0f92
00000f8e: PUSH2 0x3152
00000f91: JUMP
00000f92: JUMPDEST
00000f93: PUSH2 0x0fdc
00000f96: JUMPI
00000f97: PUSH1 0x40
00000f99: DUP1
00000f9a: MLOAD
00000f9b: PUSH3 0x461bcd
00000f9f: PUSH1 0xe5
00000fa1: SHL
00000fa2: DUP2
00000fa3: MSTORE
00000fa4: PUSH1 0x20
00000fa6: PUSH1 0x04
00000fa8: DUP3
00000fa9: ADD
00000faa: MSTORE
00000fab: PUSH1 0x16
00000fad: PUSH1 0x24
00000faf: DUP3
00000fb0: ADD
00000fb1: MSTORE
00000fb2: PUSH22 0x115b9d1c9e48191a59081b9bdd081d1a5b59481bdd5d
00000fc9: PUSH1 0x52
00000fcb: SHL
00000fcc: PUSH1 0x44
00000fce: DUP3
00000fcf: ADD
00000fd0: MSTORE
00000fd1: SWAP1
00000fd2: MLOAD
00000fd3: SWAP1
00000fd4: DUP2
00000fd5: SWAP1
00000fd6: SUB
00000fd7: PUSH1 0x64
00000fd9: ADD
00000fda: SWAP1
00000fdb: REVERT
00000fdc: JUMPDEST
00000fdd: PUSH1 0x0b
00000fdf: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
00000ff4: PUSH4 0xa2494002
00000ff9: SWAP1
00000ffa: SWAP2
00000ffb: PUSH1 0x2a
00000ffd: SLOAD
00000ffe: PUSH1 0x1f
00001000: SLOAD
00001001: PUSH1 0x40
00001003: MLOAD
00001004: DUP5
00001005: PUSH4 0xffffffff
0000100a: AND
0000100b: PUSH1 0xe0
0000100d: SHL
0000100e: DUP2
0000100f: MSTORE
00001010: PUSH1 0x04
00001012: ADD
00001013: DUP1
00001014: DUP5
00001015: DUP2
00001016: MSTORE
00001017: PUSH1 0x20
00001019: ADD
0000101a: DUP4
0000101b: DUP2
0000101c: MSTORE
0000101d: PUSH1 0x20
0000101f: ADD
00001020: DUP3
00001021: DUP2
00001022: MSTORE
00001023: PUSH1 0x20
00001025: ADD
00001026: SWAP4
00001027: POP
00001028: POP
00001029: POP
0000102a: POP
0000102b: PUSH1 0x00
0000102d: PUSH1 0x40
0000102f: MLOAD
00001030: DUP1
00001031: DUP4
00001032: SUB
00001033: DUP2
00001034: DUP7
00001035: DUP1
00001036: EXTCODESIZE
00001037: ISZERO
00001038: DUP1
00001039: ISZERO
0000103a: PUSH2 0x1042
0000103d: JUMPI
0000103e: PUSH1 0x00
00001040: DUP1
00001041: REVERT
00001042: JUMPDEST
00001043: POP
00001044: GAS
00001045: DELEGATECALL
00001046: ISZERO
00001047: DUP1
00001048: ISZERO
00001049: PUSH2 0x1056
0000104c: JUMPI
0000104d: RETURNDATASIZE
0000104e: PUSH1 0x00
00001050: DUP1
00001051: RETURNDATACOPY
00001052: RETURNDATASIZE
00001053: PUSH1 0x00
00001055: REVERT
00001056: JUMPDEST
00001057: POP
00001058: POP
00001059: POP
0000105a: POP
0000105b: PUSH1 0x00
0000105d: PUSH1 0x29
0000105f: DUP2
00001060: SWAP1
00001061: SSTORE
00001062: POP
00001063: PUSH1 0x00
00001065: PUSH2 0x106c
00001068: PUSH2 0x2ab8
0000106b: JUMP
0000106c: JUMPDEST
0000106d: GT
0000106e: ISZERO
0000106f: PUSH2 0x1124
00001072: JUMPI
00001073: PUSH1 0x28
00001075: SLOAD
00001076: PUSH1 0x2b
00001078: DUP1
00001079: SLOAD
0000107a: PUSH1 0x40
0000107c: DUP1
0000107d: MLOAD
0000107e: PUSH1 0x20
00001080: PUSH1 0x1f
00001082: PUSH1 0x02
00001084: PUSH1 0x00
00001086: NOT
00001087: PUSH2 0x0100
0000108a: PUSH1 0x01
0000108c: DUP9
0000108d: AND
0000108e: ISZERO
0000108f: MUL
00001090: ADD
00001091: SWAP1
00001092: SWAP6
00001093: AND
00001094: SWAP5
00001095: SWAP1
00001096: SWAP5
00001097: DIV
00001098: SWAP4
00001099: DUP5
0000109a: ADD
0000109b: DUP2
0000109c: SWAP1
0000109d: DIV
0000109e: DUP2
0000109f: MUL
000010a0: DUP3
000010a1: ADD
000010a2: DUP2
000010a3: ADD
000010a4: SWAP1
000010a5: SWAP3
000010a6: MSTORE
000010a7: DUP3
000010a8: DUP2
000010a9: MSTORE
000010aa: PUSH2 0x1124
000010ad: SWAP5
000010ae: SWAP4
000010af: SWAP1
000010b0: SWAP3
000010b1: SWAP1
000010b2: SWAP2
000010b3: DUP4
000010b4: ADD
000010b5: DUP3
000010b6: DUP3
000010b7: DUP1
000010b8: ISZERO
000010b9: PUSH2 0x1103
000010bc: JUMPI
000010bd: DUP1
000010be: PUSH1 0x1f
000010c0: LT
000010c1: PUSH2 0x10d8
000010c4: JUMPI
000010c5: PUSH2 0x0100
000010c8: DUP1
000010c9: DUP4
000010ca: SLOAD
000010cb: DIV
000010cc: MUL
000010cd: DUP4
000010ce: MSTORE
000010cf: SWAP2
000010d0: PUSH1 0x20
000010d2: ADD
000010d3: SWAP2
000010d4: PUSH2 0x1103
000010d7: JUMP
000010d8: JUMPDEST
000010d9: DUP3
000010da: ADD
000010db: SWAP2
000010dc: SWAP1
000010dd: PUSH1 0x00
000010df: MSTORE
000010e0: PUSH1 0x20
000010e2: PUSH1 0x00
000010e4: KECCAK256
000010e5: SWAP1
000010e6: JUMPDEST
000010e7: DUP2
000010e8: SLOAD
000010e9: DUP2
000010ea: MSTORE
000010eb: SWAP1
000010ec: PUSH1 0x01
000010ee: ADD
000010ef: SWAP1
000010f0: PUSH1 0x20
000010f2: ADD
000010f3: DUP1
000010f4: DUP4
000010f5: GT
000010f6: PUSH2 0x10e6
000010f9: JUMPI
000010fa: DUP3
000010fb: SWAP1
000010fc: SUB
000010fd: PUSH1 0x1f
000010ff: AND
00001100: DUP3
00001101: ADD
00001102: SWAP2
00001103: JUMPDEST
00001104: POP
00001105: POP
00001106: PUSH1 0x2e
00001108: SLOAD
00001109: PUSH1 0x2c
0000110b: SLOAD
0000110c: PUSH1 0x2d
0000110e: SLOAD
0000110f: PUSH1 0x01
00001111: PUSH1 0x01
00001113: PUSH1 0xa0
00001115: SHL
00001116: SUB
00001117: SWAP1
00001118: SWAP3
00001119: AND
0000111a: SWAP5
0000111b: POP
0000111c: SWAP3
0000111d: POP
0000111e: SWAP1
0000111f: POP
00001120: PUSH2 0x316f
00001123: JUMP
00001124: JUMPDEST
00001125: PUSH1 0x2a
00001127: SLOAD
00001128: PUSH1 0x40
0000112a: MLOAD
0000112b: PUSH32 0x6675fe3ae219641aa4ec9e58867bd7af88bf03caf819d8858f3ddf4cc635eed2
0000114c: SWAP1
0000114d: PUSH1 0x00
0000114f: SWAP1
00001150: LOG2
00001151: JUMP
00001152: JUMPDEST
00001153: PUSH1 0x06
00001155: SLOAD
00001156: PUSH1 0x00
00001158: SWAP1
00001159: PUSH1 0xff
0000115b: AND
0000115c: PUSH2 0x1167
0000115f: JUMPI
00001160: POP
00001161: PUSH1 0x01
00001163: PUSH2 0x0f6e
00001166: JUMP
00001167: JUMPDEST
00001168: POP
00001169: PUSH1 0x21
0000116b: SLOAD
0000116c: PUSH1 0x1f
0000116e: SLOAD
0000116f: PUSH1 0x15
00001171: SLOAD
00001172: PUSH1 0x04
00001174: SLOAD
00001175: PUSH1 0x05
00001177: SLOAD
00001178: ADD
00001179: ADD
0000117a: SWAP2
0000117b: MUL
0000117c: ADD
0000117d: NUMBER
0000117e: GT
0000117f: SWAP1
00001180: JUMP
00001181: JUMPDEST
00001182: PUSH1 0x25
00001184: SLOAD
00001185: DUP2
00001186: JUMP
00001187: JUMPDEST
00001188: PUSH1 0x40
0000118a: DUP1
0000118b: MLOAD
0000118c: PUSH4 0x664d9be1
00001191: PUSH1 0xe1
00001193: SHL
00001194: DUP2
00001195: MSTORE
00001196: PUSH1 0x0b
00001198: PUSH1 0x04
0000119a: DUP3
0000119b: ADD
0000119c: DUP2
0000119d: DUP2
0000119e: MSTORE
0000119f: PUSH1 0x24
000011a1: DUP4
000011a2: ADD
000011a3: SWAP4
000011a4: DUP5
000011a5: MSTORE
000011a6: DUP5
000011a7: MLOAD
000011a8: PUSH1 0x44
000011aa: DUP5
000011ab: ADD
000011ac: MSTORE
000011ad: DUP5
000011ae: MLOAD
000011af: PUSH1 0x00
000011b1: SWAP5
000011b2: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
000011c7: SWAP5
000011c8: PUSH4 0xcc9b37c2
000011cd: SWAP5
000011ce: SWAP4
000011cf: DUP9
000011d0: SWAP4
000011d1: SWAP1
000011d2: SWAP3
000011d3: SWAP2
000011d4: PUSH1 0x64
000011d6: ADD
000011d7: SWAP1
000011d8: PUSH1 0x20
000011da: DUP6
000011db: ADD
000011dc: SWAP1
000011dd: DUP1
000011de: DUP4
000011df: DUP4
000011e0: DUP13
000011e1: JUMPDEST
000011e2: DUP4
000011e3: DUP2
000011e4: LT
000011e5: ISZERO
000011e6: PUSH2 0x11f9
000011e9: JUMPI
000011ea: DUP2
000011eb: DUP2
000011ec: ADD
000011ed: MLOAD
000011ee: DUP4
000011ef: DUP3
000011f0: ADD
000011f1: MSTORE
000011f2: PUSH1 0x20
000011f4: ADD
000011f5: PUSH2 0x11e1
000011f8: JUMP
000011f9: JUMPDEST
000011fa: POP
000011fb: POP
000011fc: POP
000011fd: POP
000011fe: SWAP1
000011ff: POP
00001200: SWAP1
00001201: DUP2
00001202: ADD
00001203: SWAP1
00001204: PUSH1 0x1f
00001206: AND
00001207: DUP1
00001208: ISZERO
00001209: PUSH2 0x1226
0000120c: JUMPI
0000120d: DUP1
0000120e: DUP3
0000120f: SUB
00001210: DUP1
00001211: MLOAD
00001212: PUSH1 0x01
00001214: DUP4
00001215: PUSH1 0x20
00001217: SUB
00001218: PUSH2 0x0100
0000121b: EXP
0000121c: SUB
0000121d: NOT
0000121e: AND
0000121f: DUP2
00001220: MSTORE
00001221: PUSH1 0x20
00001223: ADD
00001224: SWAP2
00001225: POP
00001226: JUMPDEST
00001227: POP
00001228: SWAP4
00001229: POP
0000122a: POP
0000122b: POP
0000122c: POP
0000122d: PUSH1 0x20
0000122f: PUSH1 0x40
00001231: MLOAD
00001232: DUP1
00001233: DUP4
00001234: SUB
00001235: DUP2
00001236: DUP7
00001237: DUP1
00001238: EXTCODESIZE
00001239: ISZERO
0000123a: DUP1
0000123b: ISZERO
0000123c: PUSH2 0x1244
0000123f: JUMPI
00001240: PUSH1 0x00
00001242: DUP1
00001243: REVERT
00001244: JUMPDEST
00001245: POP
00001246: GAS
00001247: DELEGATECALL
00001248: ISZERO
00001249: DUP1
0000124a: ISZERO
0000124b: PUSH2 0x1258
0000124e: JUMPI
0000124f: RETURNDATASIZE
00001250: PUSH1 0x00
00001252: DUP1
00001253: RETURNDATACOPY
00001254: RETURNDATASIZE
00001255: PUSH1 0x00
00001257: REVERT
00001258: JUMPDEST
00001259: POP
0000125a: POP
0000125b: POP
0000125c: POP
0000125d: PUSH1 0x40
0000125f: MLOAD
00001260: RETURNDATASIZE
00001261: PUSH1 0x20
00001263: DUP2
00001264: LT
00001265: ISZERO
00001266: PUSH2 0x126e
00001269: JUMPI
0000126a: PUSH1 0x00
0000126c: DUP1
0000126d: REVERT
0000126e: JUMPDEST
0000126f: POP
00001270: MLOAD
00001271: SWAP3
00001272: SWAP2
00001273: POP
00001274: POP
00001275: JUMP
00001276: JUMPDEST
00001277: PUSH1 0x21
00001279: SLOAD
0000127a: DUP2
0000127b: JUMP
0000127c: JUMPDEST
0000127d: PUSH1 0x40
0000127f: DUP1
00001280: MLOAD
00001281: PUSH4 0x251be5d1
00001286: PUSH1 0xe1
00001288: SHL
00001289: DUP2
0000128a: MSTORE
0000128b: PUSH1 0x0b
0000128d: PUSH1 0x04
0000128f: DUP3
00001290: ADD
00001291: MSTORE
00001292: PUSH1 0x01
00001294: PUSH1 0x01
00001296: PUSH1 0xa0
00001298: SHL
00001299: SUB
0000129a: DUP5
0000129b: AND
0000129c: PUSH1 0x24
0000129e: DUP3
0000129f: ADD
000012a0: MSTORE
000012a1: PUSH1 0x44
000012a3: DUP2
000012a4: ADD
000012a5: DUP4
000012a6: SWAP1
000012a7: MSTORE
000012a8: SWAP1
000012a9: MLOAD
000012aa: PUSH1 0x00
000012ac: SWAP2
000012ad: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
000012c2: SWAP2
000012c3: PUSH4 0x4a37cba2
000012c8: SWAP2
000012c9: PUSH1 0x64
000012cb: DUP1
000012cc: DUP3
000012cd: ADD
000012ce: SWAP3
000012cf: PUSH1 0x20
000012d1: SWAP3
000012d2: SWAP1
000012d3: SWAP2
000012d4: SWAP1
000012d5: DUP3
000012d6: SWAP1
000012d7: SUB
000012d8: ADD
000012d9: DUP2
000012da: DUP7
000012db: DUP1
000012dc: EXTCODESIZE
000012dd: ISZERO
000012de: DUP1
000012df: ISZERO
000012e0: PUSH2 0x12e8
000012e3: JUMPI
000012e4: PUSH1 0x00
000012e6: DUP1
000012e7: REVERT
000012e8: JUMPDEST
000012e9: POP
000012ea: GAS
000012eb: DELEGATECALL
000012ec: ISZERO
000012ed: DUP1
000012ee: ISZERO
000012ef: PUSH2 0x12fc
000012f2: JUMPI
000012f3: RETURNDATASIZE
000012f4: PUSH1 0x00
000012f6: DUP1
000012f7: RETURNDATACOPY
000012f8: RETURNDATASIZE
000012f9: PUSH1 0x00
000012fb: REVERT
000012fc: JUMPDEST
000012fd: POP
000012fe: POP
000012ff: POP
00001300: POP
00001301: PUSH1 0x40
00001303: MLOAD
00001304: RETURNDATASIZE
00001305: PUSH1 0x20
00001307: DUP2
00001308: LT
00001309: ISZERO
0000130a: PUSH2 0x1312
0000130d: JUMPI
0000130e: PUSH1 0x00
00001310: DUP1
00001311: REVERT
00001312: JUMPDEST
00001313: POP
00001314: MLOAD
00001315: SWAP4
00001316: SWAP3
00001317: POP
00001318: POP
00001319: POP
0000131a: JUMP
0000131b: JUMPDEST
0000131c: PUSH1 0x00
0000131e: DUP1
0000131f: SLOAD
00001320: PUSH1 0x01
00001322: ADD
00001323: DUP1
00001324: DUP3
00001325: SSTORE
00001326: PUSH1 0x40
00001328: DUP1
00001329: MLOAD
0000132a: PUSH4 0x19818cd3
0000132f: PUSH1 0xe0
00001331: SHL
00001332: DUP2
00001333: MSTORE
00001334: PUSH1 0x0b
00001336: PUSH1 0x04
00001338: DUP3
00001339: ADD
0000133a: MSTORE
0000133b: PUSH1 0x01
0000133d: PUSH1 0x01
0000133f: PUSH1 0xa0
00001341: SHL
00001342: SUB
00001343: DUP7
00001344: AND
00001345: PUSH1 0x24
00001347: DUP3
00001348: ADD
00001349: MSTORE
0000134a: PUSH1 0x44
0000134c: DUP2
0000134d: ADD
0000134e: DUP6
0000134f: SWAP1
00001350: MSTORE
00001351: SWAP1
00001352: MLOAD
00001353: SWAP2
00001354: SWAP3
00001355: SWAP2
00001356: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
0000136b: SWAP2
0000136c: PUSH4 0x19818cd3
00001371: SWAP2
00001372: PUSH1 0x64
00001374: DUP1
00001375: DUP4
00001376: ADD
00001377: SWAP3
00001378: PUSH1 0x20
0000137a: SWAP3
0000137b: SWAP2
0000137c: SWAP1
0000137d: DUP3
0000137e: SWAP1
0000137f: SUB
00001380: ADD
00001381: DUP2
00001382: DUP7
00001383: DUP1
00001384: EXTCODESIZE
00001385: ISZERO
00001386: DUP1
00001387: ISZERO
00001388: PUSH2 0x1390
0000138b: JUMPI
0000138c: PUSH1 0x00
0000138e: DUP1
0000138f: REVERT
00001390: JUMPDEST
00001391: POP
00001392: GAS
00001393: DELEGATECALL
00001394: ISZERO
00001395: DUP1
00001396: ISZERO
00001397: PUSH2 0x13a4
0000139a: JUMPI
0000139b: RETURNDATASIZE
0000139c: PUSH1 0x00
0000139e: DUP1
0000139f: RETURNDATACOPY
000013a0: RETURNDATASIZE
000013a1: PUSH1 0x00
000013a3: REVERT
000013a4: JUMPDEST
000013a5: POP
000013a6: POP
000013a7: POP
000013a8: POP
000013a9: PUSH1 0x40
000013ab: MLOAD
000013ac: RETURNDATASIZE
000013ad: PUSH1 0x20
000013af: DUP2
000013b0: LT
000013b1: ISZERO
000013b2: PUSH2 0x13ba
000013b5: JUMPI
000013b6: PUSH1 0x00
000013b8: DUP1
000013b9: REVERT
000013ba: JUMPDEST
000013bb: POP
000013bc: MLOAD
000013bd: PUSH1 0x1b
000013bf: SLOAD
000013c0: PUSH1 0x40
000013c2: DUP1
000013c3: MLOAD
000013c4: PUSH4 0xba7bffd3
000013c9: PUSH1 0xe0
000013cb: SHL
000013cc: DUP2
000013cd: MSTORE
000013ce: PUSH1 0x01
000013d0: PUSH1 0x01
000013d2: PUSH1 0xa0
000013d4: SHL
000013d5: SUB
000013d6: DUP9
000013d7: DUP2
000013d8: AND
000013d9: PUSH1 0x04
000013db: DUP4
000013dc: ADD
000013dd: MSTORE
000013de: SWAP2
000013df: MLOAD
000013e0: SWAP4
000013e1: SWAP5
000013e2: POP
000013e3: PUSH1 0x00
000013e5: SWAP4
000013e6: SWAP2
000013e7: SWAP1
000013e8: SWAP3
000013e9: AND
000013ea: SWAP2
000013eb: PUSH4 0xba7bffd3
000013f0: SWAP2
000013f1: PUSH1 0x24
000013f3: DUP1
000013f4: DUP4
000013f5: ADD
000013f6: SWAP3
000013f7: PUSH1 0x20
000013f9: SWAP3
000013fa: SWAP2
000013fb: SWAP1
000013fc: DUP3
000013fd: SWAP1
000013fe: SUB
000013ff: ADD
00001400: DUP2
00001401: DUP7
00001402: DUP1
00001403: EXTCODESIZE
00001404: ISZERO
00001405: DUP1
00001406: ISZERO
00001407: PUSH2 0x140f
0000140a: JUMPI
0000140b: PUSH1 0x00
0000140d: DUP1
0000140e: REVERT
0000140f: JUMPDEST
00001410: POP
00001411: GAS
00001412: STATICCALL
00001413: ISZERO
00001414: DUP1
00001415: ISZERO
00001416: PUSH2 0x1423
00001419: JUMPI
0000141a: RETURNDATASIZE
0000141b: PUSH1 0x00
0000141d: DUP1
0000141e: RETURNDATACOPY
0000141f: RETURNDATASIZE
00001420: PUSH1 0x00
00001422: REVERT
00001423: JUMPDEST
00001424: POP
00001425: POP
00001426: POP
00001427: POP
00001428: PUSH1 0x40
0000142a: MLOAD
0000142b: RETURNDATASIZE
0000142c: PUSH1 0x20
0000142e: DUP2
0000142f: LT
00001430: ISZERO
00001431: PUSH2 0x1439
00001434: JUMPI
00001435: PUSH1 0x00
00001437: DUP1
00001438: REVERT
00001439: JUMPDEST
0000143a: POP
0000143b: MLOAD
0000143c: PUSH1 0x40
0000143e: MLOAD
0000143f: PUSH1 0x01
00001441: PUSH1 0x01
00001443: PUSH1 0xa0
00001445: SHL
00001446: SUB
00001447: SWAP1
00001448: SWAP2
00001449: AND
0000144a: SWAP1
0000144b: DUP4
0000144c: SWAP1
0000144d: PUSH1 0x00
0000144f: DUP2
00001450: DUP2
00001451: DUP2
00001452: DUP6
00001453: DUP8
00001454: GAS
00001455: CALL
00001456: SWAP3
00001457: POP
00001458: POP
00001459: POP
0000145a: RETURNDATASIZE
0000145b: DUP1
0000145c: PUSH1 0x00
0000145e: DUP2
0000145f: EQ
00001460: PUSH2 0x1485
00001463: JUMPI
00001464: PUSH1 0x40
00001466: MLOAD
00001467: SWAP2
00001468: POP
00001469: PUSH1 0x1f
0000146b: NOT
0000146c: PUSH1 0x3f
0000146e: RETURNDATASIZE
0000146f: ADD
00001470: AND
00001471: DUP3
00001472: ADD
00001473: PUSH1 0x40
00001475: MSTORE
00001476: RETURNDATASIZE
00001477: DUP3
00001478: MSTORE
00001479: RETURNDATASIZE
0000147a: PUSH1 0x00
0000147c: PUSH1 0x20
0000147e: DUP5
0000147f: ADD
00001480: RETURNDATACOPY
00001481: PUSH2 0x148a
00001484: JUMP
00001485: JUMPDEST
00001486: PUSH1 0x60
00001488: SWAP2
00001489: POP
0000148a: JUMPDEST
0000148b: POP
0000148c: POP
0000148d: SWAP1
0000148e: POP
0000148f: DUP1
00001490: ISZERO
00001491: PUSH2 0x155e
00001494: JUMPI
00001495: PUSH1 0x1b
00001497: SLOAD
00001498: PUSH1 0x40
0000149a: DUP1
0000149b: MLOAD
0000149c: PUSH4 0xba7bffd3
000014a1: PUSH1 0xe0
000014a3: SHL
000014a4: DUP2
000014a5: MSTORE
000014a6: PUSH1 0x01
000014a8: PUSH1 0x01
000014aa: PUSH1 0xa0
000014ac: SHL
000014ad: SUB
000014ae: DUP9
000014af: DUP2
000014b0: AND
000014b1: PUSH1 0x04
000014b3: DUP4
000014b4: ADD
000014b5: MSTORE
000014b6: SWAP2
000014b7: MLOAD
000014b8: SWAP2
000014b9: SWAP1
000014ba: SWAP3
000014bb: AND
000014bc: SWAP2
000014bd: PUSH4 0xba7bffd3
000014c2: SWAP2
000014c3: PUSH1 0x24
000014c5: DUP1
000014c6: DUP4
000014c7: ADD
000014c8: SWAP3
000014c9: PUSH1 0x20
000014cb: SWAP3
000014cc: SWAP2
000014cd: SWAP1
000014ce: DUP3
000014cf: SWAP1
000014d0: SUB
000014d1: ADD
000014d2: DUP2
000014d3: DUP7
000014d4: DUP1
000014d5: EXTCODESIZE
000014d6: ISZERO
000014d7: DUP1
000014d8: ISZERO
000014d9: PUSH2 0x14e1
000014dc: JUMPI
000014dd: PUSH1 0x00
000014df: DUP1
000014e0: REVERT
000014e1: JUMPDEST
000014e2: POP
000014e3: GAS
000014e4: STATICCALL
000014e5: ISZERO
000014e6: DUP1
000014e7: ISZERO
000014e8: PUSH2 0x14f5
000014eb: JUMPI
000014ec: RETURNDATASIZE
000014ed: PUSH1 0x00
000014ef: DUP1
000014f0: RETURNDATACOPY
000014f1: RETURNDATASIZE
000014f2: PUSH1 0x00
000014f4: REVERT
000014f5: JUMPDEST
000014f6: POP
000014f7: POP
000014f8: POP
000014f9: POP
000014fa: PUSH1 0x40
000014fc: MLOAD
000014fd: RETURNDATASIZE
000014fe: PUSH1 0x20
00001500: DUP2
00001501: LT
00001502: ISZERO
00001503: PUSH2 0x150b
00001506: JUMPI
00001507: PUSH1 0x00
00001509: DUP1
0000150a: REVERT
0000150b: JUMPDEST
0000150c: POP
0000150d: MLOAD
0000150e: PUSH1 0x40
00001510: DUP1
00001511: MLOAD
00001512: PUSH1 0x01
00001514: PUSH1 0x01
00001516: PUSH1 0xa0
00001518: SHL
00001519: SUB
0000151a: DUP9
0000151b: DUP2
0000151c: AND
0000151d: DUP3
0000151e: MSTORE
0000151f: PUSH1 0x20
00001521: DUP3
00001522: ADD
00001523: DUP7
00001524: SWAP1
00001525: MSTORE
00001526: DUP2
00001527: DUP4
00001528: ADD
00001529: DUP9
0000152a: SWAP1
0000152b: MSTORE
0000152c: SWAP2
0000152d: MLOAD
0000152e: SWAP2
0000152f: SWAP1
00001530: SWAP3
00001531: AND
00001532: SWAP2
00001533: PUSH32 0xd2d1d8bb9db82c3480418ddcddf25a021102ad139edec2a62b274595d408a88d
00001554: SWAP2
00001555: SWAP1
00001556: DUP2
00001557: SWAP1
00001558: SUB
00001559: PUSH1 0x60
0000155b: ADD
0000155c: SWAP1
0000155d: LOG2
0000155e: JUMPDEST
0000155f: POP
00001560: POP
00001561: PUSH1 0x00
00001563: SLOAD
00001564: DUP2
00001565: EQ
00001566: PUSH2 0x15b6
00001569: JUMPI
0000156a: PUSH1 0x40
0000156c: DUP1
0000156d: MLOAD
0000156e: PUSH3 0x461bcd
00001572: PUSH1 0xe5
00001574: SHL
00001575: DUP2
00001576: MSTORE
00001577: PUSH1 0x20
00001579: PUSH1 0x04
0000157b: DUP3
0000157c: ADD
0000157d: MSTORE
0000157e: PUSH1 0x1f
00001580: PUSH1 0x24
00001582: DUP3
00001583: ADD
00001584: MSTORE
00001585: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00
000015a6: PUSH1 0x44
000015a8: DUP3
000015a9: ADD
000015aa: MSTORE
000015ab: SWAP1
000015ac: MLOAD
000015ad: SWAP1
000015ae: DUP2
000015af: SWAP1
000015b0: SUB
000015b1: PUSH1 0x64
000015b3: ADD
000015b4: SWAP1
000015b5: REVERT
000015b6: JUMPDEST
000015b7: POP
000015b8: POP
000015b9: POP
000015ba: JUMP
000015bb: JUMPDEST
000015bc: PUSH1 0x00
000015be: PUSH2 0x15d4
000015c1: PUSH1 0x1e
000015c3: SLOAD
000015c4: PUSH1 0x23
000015c6: SLOAD
000015c7: PUSH2 0x33ab
000015ca: SWAP1
000015cb: SWAP2
000015cc: SWAP1
000015cd: PUSH4 0xffffffff
000015d2: AND
000015d3: JUMP
000015d4: JUMPDEST
000015d5: SWAP1
000015d6: POP
000015d7: SWAP1
000015d8: JUMP
000015d9: JUMPDEST
000015da: PUSH1 0x1b
000015dc: SLOAD
000015dd: PUSH1 0x40
000015df: DUP1
000015e0: MLOAD
000015e1: PUSH3 0x4298fb
000015e5: PUSH1 0xe6
000015e7: SHL
000015e8: DUP2
000015e9: MSTORE
000015ea: PUSH1 0x01
000015ec: PUSH1 0x01
000015ee: PUSH1 0xa0
000015f0: SHL
000015f1: SUB
000015f2: DUP5
000015f3: DUP2
000015f4: AND
000015f5: PUSH1 0x04
000015f7: DUP4
000015f8: ADD
000015f9: MSTORE
000015fa: ADDRESS
000015fb: PUSH1 0x24
000015fd: DUP4
000015fe: ADD
000015ff: MSTORE
00001600: SWAP2
00001601: MLOAD
00001602: PUSH1 0x00
00001604: SWAP4
00001605: SWAP3
00001606: SWAP1
00001607: SWAP3
00001608: AND
00001609: SWAP2
0000160a: PUSH4 0x10a63ec0
0000160f: SWAP2
00001610: PUSH1 0x44
00001612: DUP1
00001613: DUP3
00001614: ADD
00001615: SWAP3
00001616: PUSH1 0x20
00001618: SWAP3
00001619: SWAP1
0000161a: SWAP2
0000161b: SWAP1
0000161c: DUP3
0000161d: SWAP1
0000161e: SUB
0000161f: ADD
00001620: DUP2
00001621: DUP7
00001622: DUP1
00001623: EXTCODESIZE
00001624: ISZERO
00001625: DUP1
00001626: ISZERO
00001627: PUSH2 0x162f
0000162a: JUMPI
0000162b: PUSH1 0x00
0000162d: DUP1
0000162e: REVERT
0000162f: JUMPDEST
00001630: POP
00001631: GAS
00001632: STATICCALL
00001633: ISZERO
00001634: DUP1
00001635: ISZERO
00001636: PUSH2 0x1258
00001639: JUMPI
0000163a: RETURNDATASIZE
0000163b: PUSH1 0x00
0000163d: DUP1
0000163e: RETURNDATACOPY
0000163f: RETURNDATASIZE
00001640: PUSH1 0x00
00001642: REVERT
00001643: JUMPDEST
00001644: PUSH1 0x00
00001646: PUSH1 0x0b
00001648: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
0000165d: PUSH4 0x4732bd3b
00001662: SWAP1
00001663: SWAP2
00001664: DUP5
00001665: PUSH1 0x40
00001667: MLOAD
00001668: DUP4
00001669: PUSH4 0xffffffff
0000166e: AND
0000166f: PUSH1 0xe0
00001671: SHL
00001672: DUP2
00001673: MSTORE
00001674: PUSH1 0x04
00001676: ADD
00001677: DUP1
00001678: DUP4
00001679: DUP2
0000167a: MSTORE
0000167b: PUSH1 0x20
0000167d: ADD
0000167e: DUP3
0000167f: DUP2
00001680: MSTORE
00001681: PUSH1 0x20
00001683: ADD
00001684: SWAP3
00001685: POP
00001686: POP
00001687: POP
00001688: PUSH1 0x20
0000168a: PUSH1 0x40
0000168c: MLOAD
0000168d: DUP1
0000168e: DUP4
0000168f: SUB
00001690: DUP2
00001691: DUP7
00001692: DUP1
00001693: EXTCODESIZE
00001694: ISZERO
00001695: DUP1
00001696: ISZERO
00001697: PUSH2 0x1244
0000169a: JUMPI
0000169b: PUSH1 0x00
0000169d: DUP1
0000169e: REVERT
0000169f: JUMPDEST
000016a0: PUSH1 0x2b
000016a2: DUP1
000016a3: SLOAD
000016a4: PUSH1 0x40
000016a6: DUP1
000016a7: MLOAD
000016a8: PUSH1 0x20
000016aa: PUSH1 0x02
000016ac: PUSH1 0x01
000016ae: DUP6
000016af: AND
000016b0: ISZERO
000016b1: PUSH2 0x0100
000016b4: MUL
000016b5: PUSH1 0x00
000016b7: NOT
000016b8: ADD
000016b9: SWAP1
000016ba: SWAP5
000016bb: AND
000016bc: SWAP4
000016bd: SWAP1
000016be: SWAP4
000016bf: DIV
000016c0: PUSH1 0x1f
000016c2: DUP2
000016c3: ADD
000016c4: DUP5
000016c5: SWAP1
000016c6: DIV
000016c7: DUP5
000016c8: MUL
000016c9: DUP3
000016ca: ADD
000016cb: DUP5
000016cc: ADD
000016cd: SWAP1
000016ce: SWAP3
000016cf: MSTORE
000016d0: DUP2
000016d1: DUP2
000016d2: MSTORE
000016d3: SWAP3
000016d4: SWAP2
000016d5: DUP4
000016d6: ADD
000016d7: DUP3
000016d8: DUP3
000016d9: DUP1
000016da: ISZERO
000016db: PUSH2 0x1725
000016de: JUMPI
000016df: DUP1
000016e0: PUSH1 0x1f
000016e2: LT
000016e3: PUSH2 0x16fa
000016e6: JUMPI
000016e7: PUSH2 0x0100
000016ea: DUP1
000016eb: DUP4
000016ec: SLOAD
000016ed: DIV
000016ee: MUL
000016ef: DUP4
000016f0: MSTORE
000016f1: SWAP2
000016f2: PUSH1 0x20
000016f4: ADD
000016f5: SWAP2
000016f6: PUSH2 0x1725
000016f9: JUMP
000016fa: JUMPDEST
000016fb: DUP3
000016fc: ADD
000016fd: SWAP2
000016fe: SWAP1
000016ff: PUSH1 0x00
00001701: MSTORE
00001702: PUSH1 0x20
00001704: PUSH1 0x00
00001706: KECCAK256
00001707: SWAP1
00001708: JUMPDEST
00001709: DUP2
0000170a: SLOAD
0000170b: DUP2
0000170c: MSTORE
0000170d: SWAP1
0000170e: PUSH1 0x01
00001710: ADD
00001711: SWAP1
00001712: PUSH1 0x20
00001714: ADD
00001715: DUP1
00001716: DUP4
00001717: GT
00001718: PUSH2 0x1708
0000171b: JUMPI
0000171c: DUP3
0000171d: SWAP1
0000171e: SUB
0000171f: PUSH1 0x1f
00001721: AND
00001722: DUP3
00001723: ADD
00001724: SWAP2
00001725: JUMPDEST
00001726: POP
00001727: POP
00001728: POP
00001729: POP
0000172a: POP
0000172b: DUP2
0000172c: JUMP
0000172d: JUMPDEST
0000172e: PUSH1 0x60
00001730: PUSH1 0x01
00001732: PUSH1 0x00
00001734: ADD
00001735: DUP1
00001736: SLOAD
00001737: DUP1
00001738: PUSH1 0x20
0000173a: MUL
0000173b: PUSH1 0x20
0000173d: ADD
0000173e: PUSH1 0x40
00001740: MLOAD
00001741: SWAP1
00001742: DUP2
00001743: ADD
00001744: PUSH1 0x40
00001746: MSTORE
00001747: DUP1
00001748: SWAP3
00001749: SWAP2
0000174a: SWAP1
0000174b: DUP2
0000174c: DUP2
0000174d: MSTORE
0000174e: PUSH1 0x20
00001750: ADD
00001751: DUP3
00001752: DUP1
00001753: SLOAD
00001754: DUP1
00001755: ISZERO
00001756: PUSH2 0x17b2
00001759: JUMPI
0000175a: PUSH1 0x20
0000175c: MUL
0000175d: DUP3
0000175e: ADD
0000175f: SWAP2
00001760: SWAP1
00001761: PUSH1 0x00
00001763: MSTORE
00001764: PUSH1 0x20
00001766: PUSH1 0x00
00001768: KECCAK256
00001769: SWAP1
0000176a: PUSH1 0x00
0000176c: SWAP1
0000176d: JUMPDEST
0000176e: DUP3
0000176f: DUP3
00001770: SWAP1
00001771: SLOAD
00001772: SWAP1
00001773: PUSH2 0x0100
00001776: EXP
00001777: SWAP1
00001778: DIV
00001779: PUSH8 0xffffffffffffffff
00001782: AND
00001783: PUSH8 0xffffffffffffffff
0000178c: AND
0000178d: DUP2
0000178e: MSTORE
0000178f: PUSH1 0x20
00001791: ADD
00001792: SWAP1
00001793: PUSH1 0x08
00001795: ADD
00001796: SWAP1
00001797: PUSH1 0x20
00001799: DUP3
0000179a: PUSH1 0x07
0000179c: ADD
0000179d: DIV
0000179e: SWAP3
0000179f: DUP4
000017a0: ADD
000017a1: SWAP3
000017a2: PUSH1 0x01
000017a4: SUB
000017a5: DUP3
000017a6: MUL
000017a7: SWAP2
000017a8: POP
000017a9: DUP1
000017aa: DUP5
000017ab: GT
000017ac: PUSH2 0x176d
000017af: JUMPI
000017b0: SWAP1
000017b1: POP
000017b2: JUMPDEST
000017b3: POP
000017b4: POP
000017b5: POP
000017b6: POP
000017b7: POP
000017b8: SWAP1
000017b9: POP
000017ba: SWAP1
000017bb: JUMP
000017bc: JUMPDEST
000017bd: PUSH1 0x1f
000017bf: SLOAD
000017c0: DUP2
000017c1: JUMP
000017c2: JUMPDEST
000017c3: PUSH1 0x20
000017c5: SLOAD
000017c6: DUP2
000017c7: JUMP
000017c8: JUMPDEST
000017c9: PUSH1 0x29
000017cb: SLOAD
000017cc: ISZERO
000017cd: ISZERO
000017ce: SWAP1
000017cf: JUMP
000017d0: JUMPDEST
000017d1: PUSH1 0x2a
000017d3: SLOAD
000017d4: DUP2
000017d5: JUMP
000017d6: JUMPDEST
000017d7: PUSH1 0x00
000017d9: DUP1
000017da: SLOAD
000017db: PUSH1 0x01
000017dd: ADD
000017de: SWAP1
000017df: DUP2
000017e0: SWAP1
000017e1: SSTORE
000017e2: PUSH1 0x60
000017e4: PUSH2 0x17eb
000017e7: PUSH2 0x0e50
000017ea: JUMP
000017eb: JUMPDEST
000017ec: SWAP1
000017ed: POP
000017ee: PUSH1 0x15
000017f0: PUSH20 0xaac423edc4e3ee9ef81517e8093d52737165b71f
00001805: PUSH4 0xda0a1689
0000180a: SWAP1
0000180b: SWAP2
0000180c: DUP10
0000180d: DUP10
0000180e: DUP10
0000180f: DUP10
00001810: DUP10
00001811: DUP9
00001812: PUSH1 0x01
00001814: PUSH1 0x03
00001816: ADD
00001817: SLOAD
00001818: PUSH1 0x01
0000181a: PUSH1 0x04
0000181c: ADD
0000181d: SLOAD
0000181e: ADD
0000181f: PUSH1 0x40
00001821: MLOAD
00001822: DUP10
00001823: PUSH4 0xffffffff
00001828: AND
00001829: PUSH1 0xe0
0000182b: SHL
0000182c: DUP2
0000182d: MSTORE
0000182e: PUSH1 0x04
00001830: ADD
00001831: DUP1
00001832: DUP10
00001833: DUP2
00001834: MSTORE
00001835: PUSH1 0x20
00001837: ADD
00001838: DUP9
00001839: DUP2
0000183a: MSTORE
0000183b: PUSH1 0x20
0000183d: ADD
0000183e: DUP1
0000183f: PUSH1 0x20
00001841: ADD
00001842: DUP1
00001843: PUSH1 0x20
00001845: ADD
00001846: DUP1
00001847: PUSH1 0x20
00001849: ADD
0000184a: DUP1
0000184b: PUSH1 0x20
0000184d: ADD
0000184e: DUP1
0000184f: PUSH1 0x20
00001851: ADD
00001852: DUP8
00001853: DUP2
00001854: MSTORE
00001855: PUSH1 0x20
00001857: ADD
00001858: DUP7
00001859: DUP2
0000185a: SUB
0000185b: DUP7
0000185c: MSTORE
0000185d: DUP13
0000185e: DUP2
0000185f: DUP2
00001860: MLOAD
00001861: DUP2
00001862: MSTORE
00001863: PUSH1 0x20
00001865: ADD
00001866: SWAP2
00001867: POP
00001868: DUP1
00001869: MLOAD
0000186a: SWAP1
0000186b: PUSH1 0x20
0000186d: ADD
0000186e: SWAP1
0000186f: DUP1
00001870: DUP4
00001871: DUP4
00001872: PUSH1 0x00
00001874: JUMPDEST
00001875: DUP4
00001876: DUP2
00001877: LT
00001878: ISZERO
00001879: PUSH2 0x188c
0000187c: JUMPI
0000187d: DUP2
0000187e: DUP2
0000187f: ADD
00001880: MLOAD
00001881: DUP4
00001882: DUP3
00001883: ADD
00001884: MSTORE
00001885: PUSH1 0x20
00001887: ADD
00001888: PUSH2 0x1874
0000188b: JUMP
0000188c: JUMPDEST
0000188d: POP
0000188e: POP
0000188f: POP
00001890: POP
00001891: SWAP1
00001892: POP
00001893: SWAP1
00001894: DUP2
00001895: ADD
00001896: SWAP1
00001897: PUSH1 0x1f
00001899: AND
0000189a: DUP1
0000189b: ISZERO
0000189c: PUSH2 0x18b9
0000189f: JUMPI
000018a0: DUP1
000018a1: DUP3
000018a2: SUB
000018a3: DUP1
000018a4: MLOAD
000018a5: PUSH1 0x01
000018a7: DUP4
000018a8: PUSH1 0x20
000018aa: SUB
000018ab: PUSH2 0x0100
000018ae: EXP
000018af: SUB
000018b0: NOT
000018b1: AND
000018b2: DUP2
000018b3: MSTORE
000018b4: PUSH1 0x20
000018b6: ADD
000018b7: SWAP2
000018b8: POP
000018b9: JUMPDEST
000018ba: POP
000018bb: DUP7
000018bc: DUP2
000018bd: SUB
000018be: DUP6
000018bf: MSTORE
000018c0: DUP12
000018c1: MLOAD
000018c2: DUP2
000018c3: MSTORE
000018c4: DUP12
000018c5: MLOAD
000018c6: PUSH1 0x20
000018c8: SWAP2
000018c9: DUP3
000018ca: ADD
000018cb: SWAP2
000018cc: DUP14
000018cd: ADD
000018ce: SWAP1
000018cf: DUP1
000018d0: DUP4
000018d1: DUP4
000018d2: PUSH1 0x00
000018d4: JUMPDEST
000018d5: DUP4
000018d6: DUP2
000018d7: LT
000018d8: ISZERO
000018d9: PUSH2 0x18ec
000018dc: JUMPI
000018dd: DUP2
000018de: DUP2
000018df: ADD
000018e0: MLOAD
000018e1: DUP4
000018e2: DUP3
000018e3: ADD
000018e4: MSTORE
000018e5: PUSH1 0x20
000018e7: ADD
000018e8: PUSH2 0x18d4
000018eb: JUMP
000018ec: JUMPDEST
000018ed: POP
000018ee: POP
000018ef: POP
000018f0: POP
000018f1: SWAP1
000018f2: POP
000018f3: SWAP1
000018f4: DUP2
000018f5: ADD
000018f6: SWAP1
000018f7: PUSH1 0x1f
000018f9: AND
000018fa: DUP1
000018fb: ISZERO
000018fc: PUSH2 0x1919
000018ff: JUMPI
00001900: DUP1
00001901: DUP3
00001902: SUB
00001903: DUP1
00001904: MLOAD
00001905: PUSH1 0x01
00001907: DUP4
00001908: PUSH1 0x20
0000190a: SUB
0000190b: PUSH2 0x0100
0000190e: EXP
0000190f: SUB
00001910: NOT
00001911: AND
00001912: DUP2
00001913: MSTORE
00001914: PUSH1 0x20
00001916: ADD
00001917: SWAP2
00001918: POP
00001919: JUMPDEST
0000191a: POP
0000191b: DUP7
0000191c: DUP2
0000191d: SUB
0000191e: DUP5
0000191f: MSTORE
00001920: DUP11
00001921: MLOAD
00001922: DUP2
00001923: MSTORE
00001924: DUP11
00001925: MLOAD
00001926: PUSH1 0x20
00001928: SWAP2
00001929: DUP3
0000192a: ADD
0000192b: SWAP2
0000192c: DUP13
0000192d: ADD
0000192e: SWAP1
0000192f: DUP1
00001930: DUP4
00001931: DUP4
00001932: PUSH1 0x00
00001934: JUMPDEST
00001935: DUP4
00001936: DUP2
00001937: LT
00001938: ISZERO
00001939: PUSH2 0x194c
0000193c: JUMPI
0000193d: DUP2
0000193e: DUP2
0000193f: ADD
00001940: MLOAD
00001941: DUP4
00001942: DUP3
00001943: ADD
00001944: MSTORE
00001945: PUSH1 0x20
00001947: ADD
00001948: PUSH2 0x1934
0000194b: JUMP
0000194c: JUMPDEST
0000194d: POP
0000194e: POP
0000194f: POP
00001950: POP
00001951: SWAP1
00001952: POP
00001953: SWAP1
00001954: DUP2
00001955: ADD
00001956: SWAP1
00001957: PUSH1 0x1f
00001959: AND
0000195a: DUP1
0000195b: ISZERO
0000195c: PUSH2 0x1979
0000195f: JUMPI
00001960: DUP1
00001961: DUP3
00001962: SUB
00001963: DUP1
00001964: MLOAD
00001965: PUSH1 0x01
00001967: DUP4
00001968: PUSH1 0x20
0000196a: SUB
0000196b: PUSH2 0x0100
0000196e: EXP
0000196f: SUB
00001970: NOT
00001971: AND
00001972: DUP2
00001973: MSTORE
00001974: PUSH1 0x20
00001976: ADD
00001977: SWAP2
00001978: POP
00001979: JUMPDEST
0000197a: POP
0000197b: DUP7
0000197c: DUP2
0000197d: SUB
0000197e: DUP4
0000197f: MSTORE
00001980: DUP10
00001981: MLOAD
00001982: DUP2
00001983: MSTORE
00001984: DUP10
00001985: MLOAD
00001986: PUSH1 0x20
00001988: SWAP2
00001989: DUP3
0000198a: ADD
0000198b: SWAP2
0000198c: DUP1
0000198d: DUP13
0000198e: ADD
0000198f: SWAP2
00001990: MUL
00001991: DUP1
00001992: DUP4
00001993: DUP4
00001994: PUSH1 0x00
00001996: JUMPDEST
00001997: DUP4
00001998: DUP2
00001999: LT
0000199a: ISZERO
0000199b: PUSH2 0x19ae
0000199e: JUMPI
0000199f: DUP2
000019a0: DUP2
000019a1: ADD
000019a2: MLOAD
000019a3: DUP4
000019a4: DUP3
000019a5: ADD
000019a6: MSTORE
000019a7: PUSH1 0x20
000019a9: ADD
000019aa: PUSH2 0x1996
000019ad: JUMP
000019ae: JUMPDEST
000019af: POP
000019b0: POP
000019b1: POP
000019b2: POP
000019b3: SWAP1
000019b4: POP
000019b5: ADD
000019b6: DUP7
000019b7: DUP2
000019b8: SUB
000019b9: DUP3
000019ba: MSTORE
000019bb: DUP9
000019bc: DUP2
000019bd: DUP2
000019be: MLOAD
000019bf: DUP2
000019c0: MSTORE
000019c1: PUSH1 0x20
000019c3: ADD
000019c4: SWAP2
000019c5: POP
000019c6: DUP1
000019c7: MLOAD
000019c8: SWAP1
000019c9: PUSH1 0x20
000019cb: ADD
000019cc: SWAP1
000019cd: PUSH1 0x20
000019cf: MUL
000019d0: DUP1
000019d1: DUP4
000019d2: DUP4
000019d3: PUSH1 0x00
000019d5: JUMPDEST
000019d6: DUP4
000019d7: DUP2
000019d8: LT
000019d9: ISZERO
000019da: PUSH2 0x19ed
000019dd: JUMPI
000019de: DUP2
000019df: DUP2
000019e0: ADD
000019e1: MLOAD
000019e2: DUP4
000019e3: DUP3
000019e4: ADD
000019e5: MSTORE
000019e6: PUSH1 0x20
000019e8: ADD
000019e9: PUSH2 0x19d5
000019ec: JUMP
000019ed: JUMPDEST
000019ee: POP
000019ef: POP
000019f0: POP
000019f1: POP
000019f2: SWAP1
000019f3: POP
000019f4: ADD
000019f5: SWAP14
000019f6: POP
000019f7: POP
000019f8: POP
000019f9: POP
000019fa: POP
000019fb: POP
000019fc: POP
000019fd: POP
000019fe: POP
000019ff: POP
00001a00: POP
00001a01: POP
00001a02: POP
00001a03: POP
00001a04: PUSH1 0x00
00001a06: PUSH1 0x40
00001a08: MLOAD
00001a09: DUP1
00001a0a: DUP4
00001a0b: SUB
00001a0c: DUP2
00001a0d: DUP7
00001a0e: DUP1
00001a0f: EXTCODESIZE
00001a10: ISZERO
00001a11: DUP1
00001a12: ISZERO
00001a13: PUSH2 0x1a1b
00001a16: JUMPI
00001a17: PUSH1 0x00
00001a19: DUP1
00001a1a: REVERT
00001a1b: JUMPDEST
00001a1c: POP
00001a1d: GAS
00001a1e: DELEGATECALL
00001a1f: ISZERO
00001a20: DUP1
00001a21: ISZERO
00001a22: PUSH2 0x1a2f
00001a25: JUMPI
00001a26: RETURNDATASIZE
00001a27: PUSH1 0x00
00001a29: DUP1
00001a2a: RETURNDATACOPY
00001a2b: RETURNDATASIZE
00001a2c: PUSH1 0x00
00001a2e: REVERT
00001a2f: JUMPDEST
00001a30: POP
00001a31: POP
00001a32: POP
00001a33: POP
00001a34: PUSH1 0x0b
00001a36: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
00001a4b: PUSH4 0xe130bd67
00001a50: SWAP1
00001a51: SWAP2
00001a52: DUP9
00001a53: DUP5
00001a54: DUP10
00001a55: PUSH1 0x40
00001a57: MLOAD
00001a58: DUP6
00001a59: PUSH4 0xffffffff
00001a5e: AND
00001a5f: PUSH1 0xe0
00001a61: SHL
00001a62: DUP2
00001a63: MSTORE
00001a64: PUSH1 0x04
00001a66: ADD
00001a67: DUP1
00001a68: DUP6
00001a69: DUP2
00001a6a: MSTORE
00001a6b: PUSH1 0x20
00001a6d: ADD
00001a6e: DUP1
00001a6f: PUSH1 0x20
00001a71: ADD
00001a72: DUP1
00001a73: PUSH1 0x20
00001a75: ADD
00001a76: DUP1
00001a77: PUSH1 0x20
00001a79: ADD
00001a7a: DUP5
00001a7b: DUP2
00001a7c: SUB
00001a7d: DUP5
00001a7e: MSTORE
00001a7f: DUP8
00001a80: DUP2
00001a81: DUP2
00001a82: MLOAD
00001a83: DUP2
00001a84: MSTORE
00001a85: PUSH1 0x20
00001a87: ADD
00001a88: SWAP2
00001a89: POP
00001a8a: DUP1
00001a8b: MLOAD
00001a8c: SWAP1
00001a8d: PUSH1 0x20
00001a8f: ADD
00001a90: SWAP1
00001a91: DUP1
00001a92: DUP4
00001a93: DUP4
00001a94: PUSH1 0x00
00001a96: JUMPDEST
00001a97: DUP4
00001a98: DUP2
00001a99: LT
00001a9a: ISZERO
00001a9b: PUSH2 0x1aae
00001a9e: JUMPI
00001a9f: DUP2
00001aa0: DUP2
00001aa1: ADD
00001aa2: MLOAD
00001aa3: DUP4
00001aa4: DUP3
00001aa5: ADD
00001aa6: MSTORE
00001aa7: PUSH1 0x20
00001aa9: ADD
00001aaa: PUSH2 0x1a96
00001aad: JUMP
00001aae: JUMPDEST
00001aaf: POP
00001ab0: POP
00001ab1: POP
00001ab2: POP
00001ab3: SWAP1
00001ab4: POP
00001ab5: SWAP1
00001ab6: DUP2
00001ab7: ADD
00001ab8: SWAP1
00001ab9: PUSH1 0x1f
00001abb: AND
00001abc: DUP1
00001abd: ISZERO
00001abe: PUSH2 0x1adb
00001ac1: JUMPI
00001ac2: DUP1
00001ac3: DUP3
00001ac4: SUB
00001ac5: DUP1
00001ac6: MLOAD
00001ac7: PUSH1 0x01
00001ac9: DUP4
00001aca: PUSH1 0x20
00001acc: SUB
00001acd: PUSH2 0x0100
00001ad0: EXP
00001ad1: SUB
00001ad2: NOT
00001ad3: AND
00001ad4: DUP2
00001ad5: MSTORE
00001ad6: PUSH1 0x20
00001ad8: ADD
00001ad9: SWAP2
00001ada: POP
00001adb: JUMPDEST
00001adc: POP
00001add: DUP5
00001ade: DUP2
00001adf: SUB
00001ae0: DUP4
00001ae1: MSTORE
00001ae2: DUP7
00001ae3: MLOAD
00001ae4: DUP2
00001ae5: MSTORE
00001ae6: DUP7
00001ae7: MLOAD
00001ae8: PUSH1 0x20
00001aea: SWAP2
00001aeb: DUP3
00001aec: ADD
00001aed: SWAP2
00001aee: DUP1
00001aef: DUP10
00001af0: ADD
00001af1: SWAP2
00001af2: MUL
00001af3: DUP1
00001af4: DUP4
00001af5: DUP4
00001af6: PUSH1 0x00
00001af8: JUMPDEST
00001af9: DUP4
00001afa: DUP2
00001afb: LT
00001afc: ISZERO
00001afd: PUSH2 0x1b10
00001b00: JUMPI
00001b01: DUP2
00001b02: DUP2
00001b03: ADD
00001b04: MLOAD
00001b05: DUP4
00001b06: DUP3
00001b07: ADD
00001b08: MSTORE
00001b09: PUSH1 0x20
00001b0b: ADD
00001b0c: PUSH2 0x1af8
00001b0f: JUMP
00001b10: JUMPDEST
00001b11: POP
00001b12: POP
00001b13: POP
00001b14: POP
00001b15: SWAP1
00001b16: POP
00001b17: ADD
00001b18: DUP5
00001b19: DUP2
00001b1a: SUB
00001b1b: DUP3
00001b1c: MSTORE
00001b1d: DUP6
00001b1e: DUP2
00001b1f: DUP2
00001b20: MLOAD
00001b21: DUP2
00001b22: MSTORE
00001b23: PUSH1 0x20
00001b25: ADD
00001b26: SWAP2
00001b27: POP
00001b28: DUP1
00001b29: MLOAD
00001b2a: SWAP1
00001b2b: PUSH1 0x20
00001b2d: ADD
00001b2e: SWAP1
00001b2f: DUP1
00001b30: DUP4
00001b31: DUP4
00001b32: PUSH1 0x00
00001b34: JUMPDEST
00001b35: DUP4
00001b36: DUP2
00001b37: LT
00001b38: ISZERO
00001b39: PUSH2 0x1b4c
00001b3c: JUMPI
00001b3d: DUP2
00001b3e: DUP2
00001b3f: ADD
00001b40: MLOAD
00001b41: DUP4
00001b42: DUP3
00001b43: ADD
00001b44: MSTORE
00001b45: PUSH1 0x20
00001b47: ADD
00001b48: PUSH2 0x1b34
00001b4b: JUMP
00001b4c: JUMPDEST
00001b4d: POP
00001b4e: POP
00001b4f: POP
00001b50: POP
00001b51: SWAP1
00001b52: POP
00001b53: SWAP1
00001b54: DUP2
00001b55: ADD
00001b56: SWAP1
00001b57: PUSH1 0x1f
00001b59: AND
00001b5a: DUP1
00001b5b: ISZERO
00001b5c: PUSH2 0x1b79
00001b5f: JUMPI
00001b60: DUP1
00001b61: DUP3
00001b62: SUB
00001b63: DUP1
00001b64: MLOAD
00001b65: PUSH1 0x01
00001b67: DUP4
00001b68: PUSH1 0x20
00001b6a: SUB
00001b6b: PUSH2 0x0100
00001b6e: EXP
00001b6f: SUB
00001b70: NOT
00001b71: AND
00001b72: DUP2
00001b73: MSTORE
00001b74: PUSH1 0x20
00001b76: ADD
00001b77: SWAP2
00001b78: POP
00001b79: JUMPDEST
00001b7a: POP
00001b7b: SWAP8
00001b7c: POP
00001b7d: POP
00001b7e: POP
00001b7f: POP
00001b80: POP
00001b81: POP
00001b82: POP
00001b83: POP
00001b84: PUSH1 0x00
00001b86: PUSH1 0x40
00001b88: MLOAD
00001b89: DUP1
00001b8a: DUP4
00001b8b: SUB
00001b8c: DUP2
00001b8d: DUP7
00001b8e: DUP1
00001b8f: EXTCODESIZE
00001b90: ISZERO
00001b91: DUP1
00001b92: ISZERO
00001b93: PUSH2 0x1b9b
00001b96: JUMPI
00001b97: PUSH1 0x00
00001b99: DUP1
00001b9a: REVERT
00001b9b: JUMPDEST
00001b9c: POP
00001b9d: GAS
00001b9e: DELEGATECALL
00001b9f: ISZERO
00001ba0: DUP1
00001ba1: ISZERO
00001ba2: PUSH2 0x1baf
00001ba5: JUMPI
00001ba6: RETURNDATASIZE
00001ba7: PUSH1 0x00
00001ba9: DUP1
00001baa: RETURNDATACOPY
00001bab: RETURNDATASIZE
00001bac: PUSH1 0x00
00001bae: REVERT
00001baf: JUMPDEST
00001bb0: POP
00001bb1: POP
00001bb2: PUSH1 0x40
00001bb4: DUP1
00001bb5: MLOAD
00001bb6: PUSH4 0x250d2afd
00001bbb: PUSH1 0xe1
00001bbd: SHL
00001bbe: DUP2
00001bbf: MSTORE
00001bc0: PUSH1 0x0b
00001bc2: PUSH1 0x04
00001bc4: DUP3
00001bc5: ADD
00001bc6: DUP2
00001bc7: DUP2
00001bc8: MSTORE
00001bc9: PUSH1 0x24
00001bcb: DUP4
00001bcc: ADD
00001bcd: SWAP4
00001bce: DUP5
00001bcf: MSTORE
00001bd0: DUP12
00001bd1: MLOAD
00001bd2: PUSH1 0x44
00001bd4: DUP5
00001bd5: ADD
00001bd6: MSTORE
00001bd7: DUP12
00001bd8: MLOAD
00001bd9: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
00001bee: SWAP7
00001bef: POP
00001bf0: PUSH4 0x4a1a55fa
00001bf5: SWAP6
00001bf6: POP
00001bf7: SWAP2
00001bf8: SWAP4
00001bf9: DUP13
00001bfa: SWAP4
00001bfb: SWAP2
00001bfc: SWAP3
00001bfd: SWAP1
00001bfe: SWAP2
00001bff: PUSH1 0x64
00001c01: ADD
00001c02: SWAP1
00001c03: PUSH1 0x20
00001c05: DUP6
00001c06: ADD
00001c07: SWAP1
00001c08: DUP1
00001c09: DUP4
00001c0a: DUP4
00001c0b: PUSH1 0x00
00001c0d: JUMPDEST
00001c0e: DUP4
00001c0f: DUP2
00001c10: LT
00001c11: ISZERO
00001c12: PUSH2 0x1c25
00001c15: JUMPI
00001c16: DUP2
00001c17: DUP2
00001c18: ADD
00001c19: MLOAD
00001c1a: DUP4
00001c1b: DUP3
00001c1c: ADD
00001c1d: MSTORE
00001c1e: PUSH1 0x20
00001c20: ADD
00001c21: PUSH2 0x1c0d
00001c24: JUMP
00001c25: JUMPDEST
00001c26: POP
00001c27: POP
00001c28: POP
00001c29: POP
00001c2a: SWAP1
00001c2b: POP
00001c2c: SWAP1
00001c2d: DUP2
00001c2e: ADD
00001c2f: SWAP1
00001c30: PUSH1 0x1f
00001c32: AND
00001c33: DUP1
00001c34: ISZERO
00001c35: PUSH2 0x1c52
00001c38: JUMPI
00001c39: DUP1
00001c3a: DUP3
00001c3b: SUB
00001c3c: DUP1
00001c3d: MLOAD
00001c3e: PUSH1 0x01
00001c40: DUP4
00001c41: PUSH1 0x20
00001c43: SUB
00001c44: PUSH2 0x0100
00001c47: EXP
00001c48: SUB
00001c49: NOT
00001c4a: AND
00001c4b: DUP2
00001c4c: MSTORE
00001c4d: PUSH1 0x20
00001c4f: ADD
00001c50: SWAP2
00001c51: POP
00001c52: JUMPDEST
00001c53: POP
00001c54: SWAP4
00001c55: POP
00001c56: POP
00001c57: POP
00001c58: POP
00001c59: PUSH1 0x00
00001c5b: PUSH1 0x40
00001c5d: MLOAD
00001c5e: DUP1
00001c5f: DUP4
00001c60: SUB
00001c61: DUP2
00001c62: DUP7
00001c63: DUP1
00001c64: EXTCODESIZE
00001c65: ISZERO
00001c66: DUP1
00001c67: ISZERO
00001c68: PUSH2 0x1c70
00001c6b: JUMPI
00001c6c: PUSH1 0x00
00001c6e: DUP1
00001c6f: REVERT
00001c70: JUMPDEST
00001c71: POP
00001c72: GAS
00001c73: DELEGATECALL
00001c74: ISZERO
00001c75: DUP1
00001c76: ISZERO
00001c77: PUSH2 0x1c84
00001c7a: JUMPI
00001c7b: RETURNDATASIZE
00001c7c: PUSH1 0x00
00001c7e: DUP1
00001c7f: RETURNDATACOPY
00001c80: RETURNDATASIZE
00001c81: PUSH1 0x00
00001c83: REVERT
00001c84: JUMPDEST
00001c85: POP
00001c86: POP
00001c87: POP
00001c88: POP
00001c89: PUSH2 0x1c90
00001c8c: PUSH2 0x340b
00001c8f: JUMP
00001c90: JUMPDEST
00001c91: PUSH32 0xd1d71346ed0f1479c55b14e7c48b084207a7e1bcd9abe4f22d425ec23a518a1f
00001cb2: DUP8
00001cb3: DUP8
00001cb4: DUP8
00001cb5: PUSH1 0x40
00001cb7: MLOAD
00001cb8: DUP1
00001cb9: DUP5
00001cba: DUP2
00001cbb: MSTORE
00001cbc: PUSH1 0x20
00001cbe: ADD
00001cbf: DUP1
00001cc0: PUSH1 0x20
00001cc2: ADD
00001cc3: DUP1
00001cc4: PUSH1 0x20
00001cc6: ADD
00001cc7: DUP4
00001cc8: DUP2
00001cc9: SUB
00001cca: DUP4
00001ccb: MSTORE
00001ccc: DUP6
00001ccd: DUP2
00001cce: DUP2
00001ccf: MLOAD
00001cd0: DUP2
00001cd1: MSTORE
00001cd2: PUSH1 0x20
00001cd4: ADD
00001cd5: SWAP2
00001cd6: POP
00001cd7: DUP1
00001cd8: MLOAD
00001cd9: SWAP1
00001cda: PUSH1 0x20
00001cdc: ADD
00001cdd: SWAP1
00001cde: DUP1
00001cdf: DUP4
00001ce0: DUP4
00001ce1: PUSH1 0x00
00001ce3: JUMPDEST
00001ce4: DUP4
00001ce5: DUP2
00001ce6: LT
00001ce7: ISZERO
00001ce8: PUSH2 0x1cfb
00001ceb: JUMPI
00001cec: DUP2
00001ced: DUP2
00001cee: ADD
00001cef: MLOAD
00001cf0: DUP4
00001cf1: DUP3
00001cf2: ADD
00001cf3: MSTORE
00001cf4: PUSH1 0x20
00001cf6: ADD
00001cf7: PUSH2 0x1ce3
00001cfa: JUMP
00001cfb: JUMPDEST
00001cfc: POP
00001cfd: POP
00001cfe: POP
00001cff: POP
00001d00: SWAP1
00001d01: POP
00001d02: SWAP1
00001d03: DUP2
00001d04: ADD
00001d05: SWAP1
00001d06: PUSH1 0x1f
00001d08: AND
00001d09: DUP1
00001d0a: ISZERO
00001d0b: PUSH2 0x1d28
00001d0e: JUMPI
00001d0f: DUP1
00001d10: DUP3
00001d11: SUB
00001d12: DUP1
00001d13: MLOAD
00001d14: PUSH1 0x01
00001d16: DUP4
00001d17: PUSH1 0x20
00001d19: SUB
00001d1a: PUSH2 0x0100
00001d1d: EXP
00001d1e: SUB
00001d1f: NOT
00001d20: AND
00001d21: DUP2
00001d22: MSTORE
00001d23: PUSH1 0x20
00001d25: ADD
00001d26: SWAP2
00001d27: POP
00001d28: JUMPDEST
00001d29: POP
00001d2a: DUP4
00001d2b: DUP2
00001d2c: SUB
00001d2d: DUP3
00001d2e: MSTORE
00001d2f: DUP5
00001d30: MLOAD
00001d31: DUP2
00001d32: MSTORE
00001d33: DUP5
00001d34: MLOAD
00001d35: PUSH1 0x20
00001d37: SWAP2
00001d38: DUP3
00001d39: ADD
00001d3a: SWAP2
00001d3b: DUP7
00001d3c: ADD
00001d3d: SWAP1
00001d3e: DUP1
00001d3f: DUP4
00001d40: DUP4
00001d41: PUSH1 0x00
00001d43: JUMPDEST
00001d44: DUP4
00001d45: DUP2
00001d46: LT
00001d47: ISZERO
00001d48: PUSH2 0x1d5b
00001d4b: JUMPI
00001d4c: DUP2
00001d4d: DUP2
00001d4e: ADD
00001d4f: MLOAD
00001d50: DUP4
00001d51: DUP3
00001d52: ADD
00001d53: MSTORE
00001d54: PUSH1 0x20
00001d56: ADD
00001d57: PUSH2 0x1d43
00001d5a: JUMP
00001d5b: JUMPDEST
00001d5c: POP
00001d5d: POP
00001d5e: POP
00001d5f: POP
00001d60: SWAP1
00001d61: POP
00001d62: SWAP1
00001d63: DUP2
00001d64: ADD
00001d65: SWAP1
00001d66: PUSH1 0x1f
00001d68: AND
00001d69: DUP1
00001d6a: ISZERO
00001d6b: PUSH2 0x1d88
00001d6e: JUMPI
00001d6f: DUP1
00001d70: DUP3
00001d71: SUB
00001d72: DUP1
00001d73: MLOAD
00001d74: PUSH1 0x01
00001d76: DUP4
00001d77: PUSH1 0x20
00001d79: SUB
00001d7a: PUSH2 0x0100
00001d7d: EXP
00001d7e: SUB
00001d7f: NOT
00001d80: AND
00001d81: DUP2
00001d82: MSTORE
00001d83: PUSH1 0x20
00001d85: ADD
00001d86: SWAP2
00001d87: POP
00001d88: JUMPDEST
00001d89: POP
00001d8a: SWAP6
00001d8b: POP
00001d8c: POP
00001d8d: POP
00001d8e: POP
00001d8f: POP
00001d90: POP
00001d91: PUSH1 0x40
00001d93: MLOAD
00001d94: DUP1
00001d95: SWAP2
00001d96: SUB
00001d97: SWAP1
00001d98: LOG1
00001d99: PUSH1 0x40
00001d9b: DUP1
00001d9c: MLOAD
00001d9d: PUSH4 0x292c56eb
00001da2: PUSH1 0xe2
00001da4: SHL
00001da5: DUP2
00001da6: MSTORE
00001da7: PUSH1 0x01
00001da9: PUSH1 0x04
00001dab: DUP3
00001dac: ADD
00001dad: MSTORE
00001dae: SWAP1
00001daf: MLOAD
00001db0: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17
00001dc5: SWAP2
00001dc6: PUSH4 0xa4b15bac
00001dcb: SWAP2
00001dcc: PUSH1 0x24
00001dce: DUP1
00001dcf: DUP4
00001dd0: ADD
00001dd1: SWAP3
00001dd2: PUSH1 0x00
00001dd4: SWAP3
00001dd5: SWAP2
00001dd6: SWAP1
00001dd7: DUP3
00001dd8: SWAP1
00001dd9: SUB
00001dda: ADD
00001ddb: DUP2
00001ddc: DUP7
00001ddd: DUP1
00001dde: EXTCODESIZE
00001ddf: ISZERO
00001de0: DUP1
00001de1: ISZERO
00001de2: PUSH2 0x1dea
00001de5: JUMPI
00001de6: PUSH1 0x00
00001de8: DUP1
00001de9: REVERT
00001dea: JUMPDEST
00001deb: POP
00001dec: GAS
00001ded: DELEGATECALL
00001dee: ISZERO
00001def: DUP1
00001df0: ISZERO
00001df1: PUSH2 0x1dfe
00001df4: JUMPI
00001df5: RETURNDATASIZE
00001df6: PUSH1 0x00
00001df8: DUP1
00001df9: RETURNDATACOPY
00001dfa: RETURNDATASIZE
00001dfb: PUSH1 0x00
00001dfd: REVERT
00001dfe: JUMPDEST
00001dff: POP
00001e00: POP
00001e01: POP
00001e02: POP
00001e03: POP
00001e04: PUSH1 0x00
00001e06: SLOAD
00001e07: DUP2
00001e08: EQ
00001e09: PUSH2 0x1e59
00001e0c: JUMPI
00001e0d: PUSH1 0x40
00001e0f: DUP1
00001e10: MLOAD
00001e11: PUSH3 0x461bcd
00001e15: PUSH1 0xe5
00001e17: SHL
00001e18: DUP2
00001e19: MSTORE
00001e1a: PUSH1 0x20
00001e1c: PUSH1 0x04
00001e1e: DUP3
00001e1f: ADD
00001e20: MSTORE
00001e21: PUSH1 0x1f
00001e23: PUSH1 0x24
00001e25: DUP3
00001e26: ADD
00001e27: MSTORE
00001e28: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00
00001e49: PUSH1 0x44
00001e4b: DUP3
00001e4c: ADD
00001e4d: MSTORE
00001e4e: SWAP1
00001e4f: MLOAD
00001e50: SWAP1
00001e51: DUP2
00001e52: SWAP1
00001e53: SUB
00001e54: PUSH1 0x64
00001e56: ADD
00001e57: SWAP1
00001e58: REVERT
00001e59: JUMPDEST
00001e5a: POP
00001e5b: POP
00001e5c: POP
00001e5d: POP
00001e5e: POP
00001e5f: POP
00001e60: JUMP
00001e61: JUMPDEST
00001e62: PUSH1 0x1a
00001e64: SLOAD
00001e65: PUSH1 0x40
00001e67: DUP1
00001e68: MLOAD
00001e69: PUSH4 0x6557eccf
00001e6e: PUSH1 0xe0
00001e70: SHL
00001e71: DUP2
00001e72: MSTORE
00001e73: ADDRESS
00001e74: PUSH1 0x04
00001e76: DUP3
00001e77: ADD
00001e78: MSTORE
00001e79: SWAP1
00001e7a: MLOAD
00001e7b: CALLER
00001e7c: SWAP3
00001e7d: PUSH1 0x01
00001e7f: PUSH1 0x01
00001e81: PUSH1 0xa0
00001e83: SHL
00001e84: SUB
00001e85: AND
00001e86: SWAP2
00001e87: PUSH4 0x6557eccf
00001e8c: SWAP2
00001e8d: PUSH1 0x24
00001e8f: DUP1
00001e90: DUP4
00001e91: ADD
00001e92: SWAP3
00001e93: PUSH1 0x20
00001e95: SWAP3
00001e96: SWAP2
00001e97: SWAP1
00001e98: DUP3
00001e99: SWAP1
00001e9a: SUB
00001e9b: ADD
00001e9c: DUP2
00001e9d: DUP7
00001e9e: DUP1
00001e9f: EXTCODESIZE
00001ea0: ISZERO
00001ea1: DUP1
00001ea2: ISZERO
00001ea3: PUSH2 0x1eab
00001ea6: JUMPI
00001ea7: PUSH1 0x00
00001ea9: DUP1
00001eaa: REVERT
00001eab: JUMPDEST
00001eac: POP
00001ead: GAS
00001eae: STATICCALL
00001eaf: ISZERO
00001eb0: DUP1
00001eb1: ISZERO
00001eb2: PUSH2 0x1ebf
00001eb5: JUMPI
00001eb6: RETURNDATASIZE
00001eb7: PUSH1 0x00
00001eb9: DUP1
00001eba: RETURNDATACOPY
00001ebb: RETURNDATASIZE
00001ebc: PUSH1 0x00
00001ebe: REVERT
00001ebf: JUMPDEST
00001ec0: POP
00001ec1: POP
00001ec2: POP
00001ec3: POP
00001ec4: PUSH1 0x40
00001ec6: MLOAD
00001ec7: RETURNDATASIZE
00001ec8: PUSH1 0x20
00001eca: DUP2
00001ecb: LT
00001ecc: ISZERO
00001ecd: PUSH2 0x1ed5
00001ed0: JUMPI
00001ed1: PUSH1 0x00
00001ed3: DUP1
00001ed4: REVERT
00001ed5: JUMPDEST
00001ed6: POP
00001ed7: MLOAD
00001ed8: PUSH1 0x01
00001eda: PUSH1 0x01
00001edc: PUSH1 0xa0
00001ede: SHL
00001edf: SUB
00001ee0: AND
00001ee1: EQ
00001ee2: PUSH2 0x1f23
00001ee5: JUMPI
00001ee6: PUSH1 0x40
00001ee8: DUP1
00001ee9: MLOAD
00001eea: PUSH3 0x461bcd
00001eee: PUSH1 0xe5
00001ef0: SHL
00001ef1: DUP2
00001ef2: MSTORE
00001ef3: PUSH1 0x20
00001ef5: PUSH1 0x04
00001ef7: DUP3
00001ef8: ADD
00001ef9: MSTORE
00001efa: PUSH1 0x0e
00001efc: PUSH1 0x24
00001efe: DUP3
00001eff: ADD
00001f00: MSTORE
00001f01: PUSH14 0x139bdd08185d5d1a1bdc9a5e9959
00001f10: PUSH1 0x92
00001f12: SHL
00001f13: PUSH1 0x44
00001f15: DUP3
00001f16: ADD
00001f17: MSTORE
00001f18: SWAP1
00001f19: MLOAD
00001f1a: SWAP1
00001f1b: DUP2
00001f1c: SWAP1
00001f1d: SUB
00001f1e: PUSH1 0x64
00001f20: ADD
00001f21: SWAP1
00001f22: REVERT
00001f23: JUMPDEST
00001f24: PUSH1 0x19
00001f26: DUP1
00001f27: SLOAD
00001f28: PUSH1 0x01
00001f2a: DUP2
00001f2b: ADD
00001f2c: DUP3
00001f2d: SSTORE
00001f2e: PUSH1 0x00
00001f30: SWAP2
00001f31: SWAP1
00001f32: SWAP2
00001f33: MSTORE
00001f34: PUSH32 0x944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695
00001f55: ADD
00001f56: DUP1
00001f57: SLOAD
00001f58: PUSH1 0x01
00001f5a: PUSH1 0x01
00001f5c: PUSH1 0xa0
00001f5e: SHL
00001f5f: SUB
00001f60: NOT
00001f61: AND
00001f62: PUSH1 0x01
00001f64: PUSH1 0x01
00001f66: PUSH1 0xa0
00001f68: SHL
00001f69: SUB
00001f6a: SWAP3
00001f6b: SWAP1
00001f6c: SWAP3
00001f6d: AND
00001f6e: SWAP2
00001f6f: SWAP1
00001f70: SWAP2
00001f71: OR
00001f72: SWAP1
00001f73: SSTORE
00001f74: JUMP
00001f75: JUMPDEST
00001f76: PUSH1 0x23
00001f78: SLOAD
00001f79: DUP2
00001f7a: JUMP
00001f7b: JUMPDEST
00001f7c: PUSH1 0x1d
00001f7e: SLOAD
00001f7f: DUP2
00001f80: JUMP
00001f81: JUMPDEST
00001f82: PUSH1 0x00
00001f84: PUSH2 0x0f84
00001f87: PUSH1 0x0b
00001f89: DUP4
00001f8a: PUSH4 0xffffffff
00001f8f: PUSH2 0x35f9
00001f92: AND
00001f93: JUMP
00001f94: JUMPDEST
00001f95: PUSH1 0x07
00001f97: SLOAD
00001f98: PUSH1 0x1b
00001f9a: SLOAD
00001f9b: PUSH1 0x40
00001f9d: DUP1
00001f9e: MLOAD
00001f9f: PUSH4 0xafff33ef
00001fa4: PUSH1 0xe0
00001fa6: SHL
00001fa7: DUP2
00001fa8: MSTORE
00001fa9: CALLER
00001faa: PUSH1 0x04
00001fac: DUP3
00001fad: ADD
00001fae: MSTORE
00001faf: ADDRESS
00001fb0: PUSH1 0x24
00001fb2: DUP3
00001fb3: ADD
00001fb4: MSTORE
00001fb5: SWAP1
00001fb6: MLOAD
00001fb7: PUSH1 0x00
00001fb9: SWAP4
00001fba: PUSH2 0x2029
00001fbd: SWAP4
00001fbe: SWAP1
00001fbf: SWAP3
00001fc0: PUSH1 0x01
00001fc2: PUSH1 0x01
00001fc4: PUSH1 0xa0
00001fc6: SHL
00001fc7: SUB
00001fc8: SWAP1
00001fc9: SWAP2
00001fca: AND
00001fcb: SWAP2
00001fcc: PUSH4 0xafff33ef
00001fd1: SWAP2
00001fd2: PUSH1 0x44
00001fd4: DUP1
00001fd5: DUP3
00001fd6: ADD
00001fd7: SWAP3
00001fd8: PUSH1 0x20
00001fda: SWAP3
00001fdb: SWAP1
00001fdc: SWAP2
00001fdd: SWAP1
00001fde: DUP3
00001fdf: SWAP1
00001fe0: SUB
00001fe1: ADD
00001fe2: DUP2
00001fe3: DUP7
00001fe4: DUP1
00001fe5: EXTCODESIZE
00001fe6: ISZERO
00001fe7: DUP1
00001fe8: ISZERO
00001fe9: PUSH2 0x1ff1
00001fec: JUMPI
00001fed: PUSH1 0x00
00001fef: DUP1
00001ff0: REVERT
00001ff1: JUMPDEST
00001ff2: POP
00001ff3: GAS
00001ff4: STATICCALL
00001ff5: ISZERO
00001ff6: DUP1
00001ff7: ISZERO
00001ff8: PUSH2 0x2005
00001ffb: JUMPI
00001ffc: RETURNDATASIZE
00001ffd: PUSH1 0x00
00001fff: DUP1
00002000: RETURNDATACOPY
00002001: RETURNDATASIZE
00002002: PUSH1 0x00
00002004: REVERT
00002005: JUMPDEST
00002006: POP
00002007: POP
00002008: POP
00002009: POP
0000200a: PUSH1 0x40
0000200c: MLOAD
0000200d: RETURNDATASIZE
0000200e: PUSH1 0x20
00002010: DUP2
00002011: LT
00002012: ISZERO
00002013: PUSH2 0x201b
00002016: JUMPI
00002017: PUSH1 0x00
00002019: DUP1
0000201a: REVERT
0000201b: JUMPDEST
0000201c: POP
0000201d: MLOAD
0000201e: SWAP1
0000201f: PUSH4 0xffffffff
00002024: PUSH2 0x3628
00002027: AND
00002028: JUMP
00002029: JUMPDEST
0000202a: PUSH1 0x40
0000202c: DUP1
0000202d: MLOAD
0000202e: PUSH4 0x3edbb527
00002033: PUSH1 0xe2
00002035: SHL
00002036: DUP2
00002037: MSTORE
00002038: PUSH1 0x01
0000203a: PUSH1 0x04
0000203c: DUP3
0000203d: ADD
0000203e: MSTORE
0000203f: PUSH1 0x24
00002041: DUP2
00002042: ADD
00002043: DUP6
00002044: SWAP1
00002045: MSTORE
00002046: PUSH1 0x44
00002048: DUP2
00002049: ADD
0000204a: DUP4
0000204b: SWAP1
0000204c: MSTORE
0000204d: SWAP1
0000204e: MLOAD
0000204f: SWAP2
00002050: SWAP3
00002051: POP
00002052: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17
00002067: SWAP2
00002068: PUSH4 0xfb6ed49c
0000206d: SWAP2
0000206e: PUSH1 0x64
00002070: DUP1
00002071: DUP3
00002072: ADD
00002073: SWAP3
00002074: PUSH1 0x00
00002076: SWAP3
00002077: SWAP1
00002078: SWAP2
00002079: SWAP1
0000207a: DUP3
0000207b: SWAP1
0000207c: SUB
0000207d: ADD
0000207e: DUP2
0000207f: DUP7
00002080: DUP1
00002081: EXTCODESIZE
00002082: ISZERO
00002083: DUP1
00002084: ISZERO
00002085: PUSH2 0x208d
00002088: JUMPI
00002089: PUSH1 0x00
0000208b: DUP1
0000208c: REVERT
0000208d: JUMPDEST
0000208e: POP
0000208f: GAS
00002090: DELEGATECALL
00002091: ISZERO
00002092: DUP1
00002093: ISZERO
00002094: PUSH2 0x1e59
00002097: JUMPI
00002098: RETURNDATASIZE
00002099: PUSH1 0x00
0000209b: DUP1
0000209c: RETURNDATACOPY
0000209d: RETURNDATASIZE
0000209e: PUSH1 0x00
000020a0: REVERT
000020a1: JUMPDEST
000020a2: PUSH1 0x29
000020a4: SLOAD
000020a5: DUP2
000020a6: JUMP
000020a7: JUMPDEST
000020a8: PUSH2 0x2114
000020ab: CALLER
000020ac: PUSH1 0x19
000020ae: DUP1
000020af: SLOAD
000020b0: DUP1
000020b1: PUSH1 0x20
000020b3: MUL
000020b4: PUSH1 0x20
000020b6: ADD
000020b7: PUSH1 0x40
000020b9: MLOAD
000020ba: SWAP1
000020bb: DUP2
000020bc: ADD
000020bd: PUSH1 0x40
000020bf: MSTORE
000020c0: DUP1
000020c1: SWAP3
000020c2: SWAP2
000020c3: SWAP1
000020c4: DUP2
000020c5: DUP2
000020c6: MSTORE
000020c7: PUSH1 0x20
000020c9: ADD
000020ca: DUP3
000020cb: DUP1
000020cc: SLOAD
000020cd: DUP1
000020ce: ISZERO
000020cf: PUSH2 0x2101
000020d2: JUMPI
000020d3: PUSH1 0x20
000020d5: MUL
000020d6: DUP3
000020d7: ADD
000020d8: SWAP2
000020d9: SWAP1
000020da: PUSH1 0x00
000020dc: MSTORE
000020dd: PUSH1 0x20
000020df: PUSH1 0x00
000020e1: KECCAK256
000020e2: SWAP1
000020e3: JUMPDEST
000020e4: DUP2
000020e5: SLOAD
000020e6: PUSH1 0x01
000020e8: PUSH1 0x01
000020ea: PUSH1 0xa0
000020ec: SHL
000020ed: SUB
000020ee: AND
000020ef: DUP2
000020f0: MSTORE
000020f1: PUSH1 0x01
000020f3: SWAP1
000020f4: SWAP2
000020f5: ADD
000020f6: SWAP1
000020f7: PUSH1 0x20
000020f9: ADD
000020fa: DUP1
000020fb: DUP4
000020fc: GT
000020fd: PUSH2 0x20e3
00002100: JUMPI
00002101: JUMPDEST
00002102: POP
00002103: POP
00002104: POP
00002105: POP
00002106: POP
00002107: PUSH2 0x366a
0000210a: SWAP1
0000210b: SWAP2
0000210c: SWAP1
0000210d: PUSH4 0xffffffff
00002112: AND
00002113: JUMP
00002114: JUMPDEST
00002115: PUSH2 0x2165
00002118: JUMPI
00002119: PUSH1 0x40
0000211b: DUP1
0000211c: MLOAD
0000211d: PUSH3 0x461bcd
00002121: PUSH1 0xe5
00002123: SHL
00002124: DUP2
00002125: MSTORE
00002126: PUSH1 0x20
00002128: PUSH1 0x04
0000212a: DUP3
0000212b: ADD
0000212c: DUP2
0000212d: SWAP1
0000212e: MSTORE
0000212f: PUSH1 0x24
00002131: DUP3
00002132: ADD
00002133: MSTORE
00002134: PUSH32 0x43616c6c6572206973206e6f742061207365727669636520636f6e7472616374
00002155: PUSH1 0x44
00002157: DUP3
00002158: ADD
00002159: MSTORE
0000215a: SWAP1
0000215b: MLOAD
0000215c: SWAP1
0000215d: DUP2
0000215e: SWAP1
0000215f: SUB
00002160: PUSH1 0x64
00002162: ADD
00002163: SWAP1
00002164: REVERT
00002165: JUMPDEST
00002166: PUSH1 0x00
00002168: PUSH2 0x2186
0000216b: PUSH2 0x2172
0000216e: PUSH2 0x15bb
00002171: JUMP
00002172: JUMPDEST
00002173: PUSH2 0x217a
00002176: PUSH2 0x2aef
00002179: JUMP
0000217a: JUMPDEST
0000217b: SWAP1
0000217c: PUSH4 0xffffffff
00002181: PUSH2 0x36c0
00002184: AND
00002185: JUMP
00002186: JUMPDEST
00002187: SWAP1
00002188: POP
00002189: DUP1
0000218a: CALLVALUE
0000218b: LT
0000218c: ISZERO
0000218d: PUSH2 0x21dd
00002190: JUMPI
00002191: PUSH1 0x40
00002193: DUP1
00002194: MLOAD
00002195: PUSH3 0x461bcd
00002199: PUSH1 0xe5
0000219b: SHL
0000219c: DUP2
0000219d: MSTORE
0000219e: PUSH1 0x20
000021a0: PUSH1 0x04
000021a2: DUP3
000021a3: ADD
000021a4: MSTORE
000021a5: PUSH1 0x1a
000021a7: PUSH1 0x24
000021a9: DUP3
000021aa: ADD
000021ab: MSTORE
000021ac: PUSH32 0x496e73756666696369656e74206e657720656e74727920666565000000000000
000021cd: PUSH1 0x44
000021cf: DUP3
000021d0: ADD
000021d1: MSTORE
000021d2: SWAP1
000021d3: MLOAD
000021d4: SWAP1
000021d5: DUP2
000021d6: SWAP1
000021d7: SUB
000021d8: PUSH1 0x64
000021da: ADD
000021db: SWAP1
000021dc: REVERT
000021dd: JUMPDEST
000021de: PUSH1 0x00
000021e0: PUSH2 0x21ef
000021e3: CALLVALUE
000021e4: DUP4
000021e5: PUSH4 0xffffffff
000021ea: PUSH2 0x371a
000021ed: AND
000021ee: JUMP
000021ef: JUMPDEST
000021f0: SWAP1
000021f1: POP
000021f2: PUSH2 0x21fe
000021f5: DUP5
000021f6: DUP5
000021f7: CALLER
000021f8: DUP6
000021f9: DUP6
000021fa: PUSH2 0x316f
000021fd: JUMP
000021fe: JUMPDEST
000021ff: POP
00002200: POP
00002201: POP
00002202: POP
00002203: JUMP
00002204: JUMPDEST
00002205: PUSH1 0x00
00002207: PUSH1 0x0b
00002209: PUSH1 0x06
0000220b: ADD
0000220c: DUP3
0000220d: PUSH1 0x40
0000220f: MLOAD
00002210: DUP1
00002211: DUP3
00002212: DUP1
00002213: MLOAD
00002214: SWAP1
00002215: PUSH1 0x20
00002217: ADD
00002218: SWAP1
00002219: DUP1
0000221a: DUP4
0000221b: DUP4
0000221c: JUMPDEST
0000221d: PUSH1 0x20
0000221f: DUP4
00002220: LT
00002221: PUSH2 0x223b
00002224: JUMPI
00002225: DUP1
00002226: MLOAD
00002227: DUP3
00002228: MSTORE
00002229: PUSH1 0x1f
0000222b: NOT
0000222c: SWAP1
0000222d: SWAP3
0000222e: ADD
0000222f: SWAP2
00002230: PUSH1 0x20
00002232: SWAP2
00002233: DUP3
00002234: ADD
00002235: SWAP2
00002236: ADD
00002237: PUSH2 0x221c
0000223a: JUMP
0000223b: JUMPDEST
0000223c: MLOAD
0000223d: DUP2
0000223e: MLOAD
0000223f: PUSH1 0x20
00002241: SWAP4
00002242: DUP5
00002243: SUB
00002244: PUSH2 0x0100
00002247: EXP
00002248: PUSH1 0x00
0000224a: NOT
0000224b: ADD
0000224c: DUP1
0000224d: NOT
0000224e: SWAP1
0000224f: SWAP3
00002250: AND
00002251: SWAP2
00002252: AND
00002253: OR
00002254: SWAP1
00002255: MSTORE
00002256: SWAP3
00002257: ADD
00002258: SWAP5
00002259: DUP6
0000225a: MSTORE
0000225b: POP
0000225c: PUSH1 0x40
0000225e: MLOAD
0000225f: SWAP4
00002260: DUP5
00002261: SWAP1
00002262: SUB
00002263: ADD
00002264: SWAP1
00002265: SWAP3
00002266: KECCAK256
00002267: SLOAD
00002268: SWAP5
00002269: SWAP4
0000226a: POP
0000226b: POP
0000226c: POP
0000226d: POP
0000226e: JUMP
0000226f: JUMPDEST
00002270: PUSH1 0x40
00002272: DUP1
00002273: MLOAD
00002274: PUSH1 0x01
00002276: PUSH3 0x0f258b
0000227a: PUSH1 0xe0
0000227c: SHL
0000227d: SUB
0000227e: NOT
0000227f: DUP2
00002280: MSTORE
00002281: PUSH1 0x0b
00002283: PUSH1 0x04
00002285: DUP3
00002286: ADD
00002287: MSTORE
00002288: SWAP1
00002289: MLOAD
0000228a: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
0000229f: SWAP2
000022a0: PUSH4 0xfff0da75
000022a5: SWAP2
000022a6: PUSH1 0x24
000022a8: DUP1
000022a9: DUP4
000022aa: ADD
000022ab: SWAP3
000022ac: PUSH1 0x00
000022ae: SWAP3
000022af: SWAP2
000022b0: SWAP1
000022b1: DUP3
000022b2: SWAP1
000022b3: SUB
000022b4: ADD
000022b5: DUP2
000022b6: DUP7
000022b7: DUP1
000022b8: EXTCODESIZE
000022b9: ISZERO
000022ba: DUP1
000022bb: ISZERO
000022bc: PUSH2 0x22c4
000022bf: JUMPI
000022c0: PUSH1 0x00
000022c2: DUP1
000022c3: REVERT
000022c4: JUMPDEST
000022c5: POP
000022c6: GAS
000022c7: DELEGATECALL
000022c8: ISZERO
000022c9: DUP1
000022ca: ISZERO
000022cb: PUSH2 0x22d8
000022ce: JUMPI
000022cf: RETURNDATASIZE
000022d0: PUSH1 0x00
000022d2: DUP1
000022d3: RETURNDATACOPY
000022d4: RETURNDATASIZE
000022d5: PUSH1 0x00
000022d7: REVERT
000022d8: JUMPDEST
000022d9: POP
000022da: POP
000022db: POP
000022dc: POP
000022dd: PUSH2 0x22e4
000022e0: PUSH2 0x2ab8
000022e3: JUMP
000022e4: JUMPDEST
000022e5: ISZERO
000022e6: PUSH2 0x2325
000022e9: JUMPI
000022ea: PUSH1 0x40
000022ec: DUP1
000022ed: MLOAD
000022ee: PUSH3 0x461bcd
000022f2: PUSH1 0xe5
000022f4: SHL
000022f5: DUP2
000022f6: MSTORE
000022f7: PUSH1 0x20
000022f9: PUSH1 0x04
000022fb: DUP3
000022fc: ADD
000022fd: MSTORE
000022fe: PUSH1 0x0c
00002300: PUSH1 0x24
00002302: DUP3
00002303: ADD
00002304: MSTORE
00002305: PUSH12 0x11dc9bdd5c1cc8195e1a5cdd
00002312: PUSH1 0xa2
00002314: SHL
00002315: PUSH1 0x44
00002317: DUP3
00002318: ADD
00002319: MSTORE
0000231a: SWAP1
0000231b: MLOAD
0000231c: SWAP1
0000231d: DUP2
0000231e: SWAP1
0000231f: SUB
00002320: PUSH1 0x64
00002322: ADD
00002323: SWAP1
00002324: REVERT
00002325: JUMPDEST
00002326: PUSH1 0x40
00002328: DUP1
00002329: MLOAD
0000232a: PUSH4 0x292c56eb
0000232f: PUSH1 0xe2
00002331: SHL
00002332: DUP2
00002333: MSTORE
00002334: PUSH1 0x01
00002336: PUSH1 0x04
00002338: DUP3
00002339: ADD
0000233a: MSTORE
0000233b: SWAP1
0000233c: MLOAD
0000233d: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17
00002352: SWAP2
00002353: PUSH4 0xa4b15bac
00002358: SWAP2
00002359: PUSH1 0x24
0000235b: DUP1
0000235c: DUP4
0000235d: ADD
0000235e: SWAP3
0000235f: PUSH1 0x00
00002361: SWAP3
00002362: SWAP2
00002363: SWAP1
00002364: DUP3
00002365: SWAP1
00002366: SUB
00002367: ADD
00002368: DUP2
00002369: DUP7
0000236a: DUP1
0000236b: EXTCODESIZE
0000236c: ISZERO
0000236d: DUP1
0000236e: ISZERO
0000236f: PUSH2 0x2377
00002372: JUMPI
00002373: PUSH1 0x00
00002375: DUP1
00002376: REVERT
00002377: JUMPDEST
00002378: POP
00002379: GAS
0000237a: DELEGATECALL
0000237b: ISZERO
0000237c: DUP1
0000237d: ISZERO
0000237e: PUSH2 0x238b
00002381: JUMPI
00002382: RETURNDATASIZE
00002383: PUSH1 0x00
00002385: DUP1
00002386: RETURNDATACOPY
00002387: RETURNDATASIZE
00002388: PUSH1 0x00
0000238a: REVERT
0000238b: JUMPDEST
0000238c: POP
0000238d: POP
0000238e: PUSH1 0x19
00002390: DUP1
00002391: SLOAD
00002392: SWAP1
00002393: SWAP3
00002394: POP
00002395: PUSH2 0x23a6
00002398: SWAP2
00002399: POP
0000239a: PUSH1 0x01
0000239c: PUSH4 0xffffffff
000023a1: PUSH2 0x371a
000023a4: AND
000023a5: JUMP
000023a6: JUMPDEST
000023a7: DUP2
000023a8: SLOAD
000023a9: DUP2
000023aa: LT
000023ab: PUSH2 0x23b0
000023ae: JUMPI
000023af: INVALID
000023b0: JUMPDEST
000023b1: PUSH1 0x00
000023b3: SWAP2
000023b4: DUP3
000023b5: MSTORE
000023b6: PUSH1 0x20
000023b8: SWAP1
000023b9: SWAP2
000023ba: KECCAK256
000023bb: ADD
000023bc: SLOAD
000023bd: PUSH1 0x27
000023bf: DUP1
000023c0: SLOAD
000023c1: PUSH1 0x01
000023c3: PUSH1 0x01
000023c5: PUSH1 0xa0
000023c7: SHL
000023c8: SUB
000023c9: NOT
000023ca: AND
000023cb: PUSH1 0x01
000023cd: PUSH1 0x01
000023cf: PUSH1 0xa0
000023d1: SHL
000023d2: SUB
000023d3: SWAP1
000023d4: SWAP3
000023d5: AND
000023d6: SWAP2
000023d7: SWAP1
000023d8: SWAP2
000023d9: OR
000023da: SWAP1
000023db: SSTORE
000023dc: PUSH2 0x2405
000023df: PUSH32 0x4574c8c75d6e88acd28f7e467dac97b5c60c3838d9dad993900bdf402152228e
00002400: CALLVALUE
00002401: PUSH2 0x375c
00002404: JUMP
00002405: JUMPDEST
00002406: JUMP
00002407: JUMPDEST
00002408: PUSH1 0x00
0000240a: DUP1
0000240b: SLOAD
0000240c: PUSH1 0x01
0000240e: ADD
0000240f: SWAP1
00002410: DUP2
00002411: SWAP1
00002412: SSTORE
00002413: PUSH2 0x241a
00002416: PUSH2 0x17c8
00002419: JUMP
0000241a: JUMPDEST
0000241b: PUSH2 0x2461
0000241e: JUMPI
0000241f: PUSH1 0x40
00002421: DUP1
00002422: MLOAD
00002423: PUSH3 0x461bcd
00002427: PUSH1 0xe5
00002429: SHL
0000242a: DUP2
0000242b: MSTORE
0000242c: PUSH1 0x20
0000242e: PUSH1 0x04
00002430: DUP3
00002431: ADD
00002432: MSTORE
00002433: PUSH1 0x13
00002435: PUSH1 0x24
00002437: DUP3
00002438: ADD
00002439: MSTORE
0000243a: PUSH19 0x115b9d1c9e481dd85cc81cdd589b5a5d1d1959
0000244e: PUSH1 0x6a
00002450: SHL
00002451: PUSH1 0x44
00002453: DUP3
00002454: ADD
00002455: MSTORE
00002456: SWAP1
00002457: MLOAD
00002458: SWAP1
00002459: DUP2
0000245a: SWAP1
0000245b: SUB
0000245c: PUSH1 0x64
0000245e: ADD
0000245f: SWAP1
00002460: REVERT
00002461: JUMPDEST
00002462: PUSH2 0x2469
00002465: PUSH2 0x3152
00002468: JUMP
00002469: JUMPDEST
0000246a: ISZERO
0000246b: PUSH2 0x24ad
0000246e: JUMPI
0000246f: PUSH1 0x40
00002471: DUP1
00002472: MLOAD
00002473: PUSH3 0x461bcd
00002477: PUSH1 0xe5
00002479: SHL
0000247a: DUP2
0000247b: MSTORE
0000247c: PUSH1 0x20
0000247e: PUSH1 0x04
00002480: DUP3
00002481: ADD
00002482: MSTORE
00002483: PUSH1 0x0f
00002485: PUSH1 0x24
00002487: DUP3
00002488: ADD
00002489: MSTORE
0000248a: PUSH15 0x115b9d1c9e481d1a5b5959081bdd5d
0000249a: PUSH1 0x8a
0000249c: SHL
0000249d: PUSH1 0x44
0000249f: DUP3
000024a0: ADD
000024a1: MSTORE
000024a2: SWAP1
000024a3: MLOAD
000024a4: SWAP1
000024a5: DUP2
000024a6: SWAP1
000024a7: SUB
000024a8: PUSH1 0x64
000024aa: ADD
000024ab: SWAP1
000024ac: REVERT
000024ad: JUMPDEST
000024ae: PUSH1 0x60
000024b0: PUSH2 0x24c5
000024b3: PUSH1 0x2a
000024b5: SLOAD
000024b6: PUSH1 0x0b
000024b8: PUSH2 0x39af
000024bb: SWAP1
000024bc: SWAP2
000024bd: SWAP1
000024be: PUSH4 0xffffffff
000024c3: AND
000024c4: JUMP
000024c5: JUMPDEST
000024c6: SWAP1
000024c7: POP
000024c8: PUSH20 0xa10ad2570ea7b93d19fdae6bd7189ff4929bc747
000024dd: PUSH4 0xde8f50a1
000024e2: DUP3
000024e3: PUSH1 0x2b
000024e5: DUP7
000024e6: PUSH1 0x40
000024e8: MLOAD
000024e9: DUP5
000024ea: PUSH4 0xffffffff
000024ef: AND
000024f0: PUSH1 0xe0
000024f2: SHL
000024f3: DUP2
000024f4: MSTORE
000024f5: PUSH1 0x04
000024f7: ADD
000024f8: DUP1
000024f9: DUP1
000024fa: PUSH1 0x20
000024fc: ADD
000024fd: DUP1
000024fe: PUSH1 0x20
00002500: ADD
00002501: DUP1
00002502: PUSH1 0x20
00002504: ADD
00002505: DUP5
00002506: DUP2
00002507: SUB
00002508: DUP5
00002509: MSTORE
0000250a: DUP8
0000250b: DUP2
0000250c: DUP2
0000250d: MLOAD
0000250e: DUP2
0000250f: MSTORE
00002510: PUSH1 0x20
00002512: ADD
00002513: SWAP2
00002514: POP
00002515: DUP1
00002516: MLOAD
00002517: SWAP1
00002518: PUSH1 0x20
0000251a: ADD
0000251b: SWAP1
0000251c: DUP1
0000251d: DUP4
0000251e: DUP4
0000251f: PUSH1 0x00
00002521: JUMPDEST
00002522: DUP4
00002523: DUP2
00002524: LT
00002525: ISZERO
00002526: PUSH2 0x2539
00002529: JUMPI
0000252a: DUP2
0000252b: DUP2
0000252c: ADD
0000252d: MLOAD
0000252e: DUP4
0000252f: DUP3
00002530: ADD
00002531: MSTORE
00002532: PUSH1 0x20
00002534: ADD
00002535: PUSH2 0x2521
00002538: JUMP
00002539: JUMPDEST
0000253a: POP
0000253b: POP
0000253c: POP
0000253d: POP
0000253e: SWAP1
0000253f: POP
00002540: SWAP1
00002541: DUP2
00002542: ADD
00002543: SWAP1
00002544: PUSH1 0x1f
00002546: AND
00002547: DUP1
00002548: ISZERO
00002549: PUSH2 0x2566
0000254c: JUMPI
0000254d: DUP1
0000254e: DUP3
0000254f: SUB
00002550: DUP1
00002551: MLOAD
00002552: PUSH1 0x01
00002554: DUP4
00002555: PUSH1 0x20
00002557: SUB
00002558: PUSH2 0x0100
0000255b: EXP
0000255c: SUB
0000255d: NOT
0000255e: AND
0000255f: DUP2
00002560: MSTORE
00002561: PUSH1 0x20
00002563: ADD
00002564: SWAP2
00002565: POP
00002566: JUMPDEST
00002567: POP
00002568: DUP5
00002569: DUP2
0000256a: SUB
0000256b: DUP4
0000256c: MSTORE
0000256d: DUP7
0000256e: SLOAD
0000256f: PUSH1 0x02
00002571: PUSH1 0x00
00002573: NOT
00002574: PUSH2 0x0100
00002577: PUSH1 0x01
00002579: DUP5
0000257a: AND
0000257b: ISZERO
0000257c: MUL
0000257d: ADD
0000257e: SWAP1
0000257f: SWAP2
00002580: AND
00002581: DIV
00002582: DUP1
00002583: DUP3
00002584: MSTORE
00002585: PUSH1 0x20
00002587: SWAP1
00002588: SWAP2
00002589: ADD
0000258a: SWAP1
0000258b: DUP8
0000258c: SWAP1
0000258d: DUP1
0000258e: ISZERO
0000258f: PUSH2 0x25d9
00002592: JUMPI
00002593: DUP1
00002594: PUSH1 0x1f
00002596: LT
00002597: PUSH2 0x25ae
0000259a: JUMPI
0000259b: PUSH2 0x0100
0000259e: DUP1
0000259f: DUP4
000025a0: SLOAD
000025a1: DIV
000025a2: MUL
000025a3: DUP4
000025a4: MSTORE
000025a5: SWAP2
000025a6: PUSH1 0x20
000025a8: ADD
000025a9: SWAP2
000025aa: PUSH2 0x25d9
000025ad: JUMP
000025ae: JUMPDEST
000025af: DUP3
000025b0: ADD
000025b1: SWAP2
000025b2: SWAP1
000025b3: PUSH1 0x00
000025b5: MSTORE
000025b6: PUSH1 0x20
000025b8: PUSH1 0x00
000025ba: KECCAK256
000025bb: SWAP1
000025bc: JUMPDEST
000025bd: DUP2
000025be: SLOAD
000025bf: DUP2
000025c0: MSTORE
000025c1: SWAP1
000025c2: PUSH1 0x01
000025c4: ADD
000025c5: SWAP1
000025c6: PUSH1 0x20
000025c8: ADD
000025c9: DUP1
000025ca: DUP4
000025cb: GT
000025cc: PUSH2 0x25bc
000025cf: JUMPI
000025d0: DUP3
000025d1: SWAP1
000025d2: SUB
000025d3: PUSH1 0x1f
000025d5: AND
000025d6: DUP3
000025d7: ADD
000025d8: SWAP2
000025d9: JUMPDEST
000025da: POP
000025db: POP
000025dc: DUP5
000025dd: DUP2
000025de: SUB
000025df: DUP3
000025e0: MSTORE
000025e1: DUP6
000025e2: MLOAD
000025e3: DUP2
000025e4: MSTORE
000025e5: DUP6
000025e6: MLOAD
000025e7: PUSH1 0x20
000025e9: SWAP2
000025ea: DUP3
000025eb: ADD
000025ec: SWAP2
000025ed: DUP8
000025ee: ADD
000025ef: SWAP1
000025f0: DUP1
000025f1: DUP4
000025f2: DUP4
000025f3: PUSH1 0x00
000025f5: JUMPDEST
000025f6: DUP4
000025f7: DUP2
000025f8: LT
000025f9: ISZERO
000025fa: PUSH2 0x260d
000025fd: JUMPI
000025fe: DUP2
000025ff: DUP2
00002600: ADD
00002601: MLOAD
00002602: DUP4
00002603: DUP3
00002604: ADD
00002605: MSTORE
00002606: PUSH1 0x20
00002608: ADD
00002609: PUSH2 0x25f5
0000260c: JUMP
0000260d: JUMPDEST
0000260e: POP
0000260f: POP
00002610: POP
00002611: POP
00002612: SWAP1
00002613: POP
00002614: SWAP1
00002615: DUP2
00002616: ADD
00002617: SWAP1
00002618: PUSH1 0x1f
0000261a: AND
0000261b: DUP1
0000261c: ISZERO
0000261d: PUSH2 0x263a
00002620: JUMPI
00002621: DUP1
00002622: DUP3
00002623: SUB
00002624: DUP1
00002625: MLOAD
00002626: PUSH1 0x01
00002628: DUP4
00002629: PUSH1 0x20
0000262b: SUB
0000262c: PUSH2 0x0100
0000262f: EXP
00002630: SUB
00002631: NOT
00002632: AND
00002633: DUP2
00002634: MSTORE
00002635: PUSH1 0x20
00002637: ADD
00002638: SWAP2
00002639: POP
0000263a: JUMPDEST
0000263b: POP
0000263c: SWAP7
0000263d: POP
0000263e: POP
0000263f: POP
00002640: POP
00002641: POP
00002642: POP
00002643: POP
00002644: PUSH1 0x20
00002646: PUSH1 0x40
00002648: MLOAD
00002649: DUP1
0000264a: DUP4
0000264b: SUB
0000264c: DUP2
0000264d: DUP7
0000264e: DUP1
0000264f: EXTCODESIZE
00002650: ISZERO
00002651: DUP1
00002652: ISZERO
00002653: PUSH2 0x265b
00002656: JUMPI
00002657: PUSH1 0x00
00002659: DUP1
0000265a: REVERT
0000265b: JUMPDEST
0000265c: POP
0000265d: GAS
0000265e: DELEGATECALL
0000265f: ISZERO
00002660: DUP1
00002661: ISZERO
00002662: PUSH2 0x266f
00002665: JUMPI
00002666: RETURNDATASIZE
00002667: PUSH1 0x00
00002669: DUP1
0000266a: RETURNDATACOPY
0000266b: RETURNDATASIZE
0000266c: PUSH1 0x00
0000266e: REVERT
0000266f: JUMPDEST
00002670: POP
00002671: POP
00002672: POP
00002673: POP
00002674: PUSH1 0x40
00002676: MLOAD
00002677: RETURNDATASIZE
00002678: PUSH1 0x20
0000267a: DUP2
0000267b: LT
0000267c: ISZERO
0000267d: PUSH2 0x2685
00002680: JUMPI
00002681: PUSH1 0x00
00002683: DUP1
00002684: REVERT
00002685: JUMPDEST
00002686: POP
00002687: MLOAD
00002688: PUSH2 0x26cc
0000268b: JUMPI
0000268c: PUSH1 0x40
0000268e: DUP1
0000268f: MLOAD
00002690: PUSH3 0x461bcd
00002694: PUSH1 0xe5
00002696: SHL
00002697: DUP2
00002698: MSTORE
00002699: PUSH1 0x20
0000269b: PUSH1 0x04
0000269d: DUP3
0000269e: ADD
0000269f: MSTORE
000026a0: PUSH1 0x11
000026a2: PUSH1 0x24
000026a4: DUP3
000026a5: ADD
000026a6: MSTORE
000026a7: PUSH17 0x496e76616c6964207369676e6174757265
000026b9: PUSH1 0x78
000026bb: SHL
000026bc: PUSH1 0x44
000026be: DUP3
000026bf: ADD
000026c0: MSTORE
000026c1: SWAP1
000026c2: MLOAD
000026c3: SWAP1
000026c4: DUP2
000026c5: SWAP1
000026c6: SUB
000026c7: PUSH1 0x64
000026c9: ADD
000026ca: SWAP1
000026cb: REVERT
000026cc: JUMPDEST
000026cd: PUSH1 0x40
000026cf: MLOAD
000026d0: PUSH32 0x8711cae111460cf9bde0d890f0dc09abcb8851e39bf020f406e53e86394cdbd7
000026f1: SWAP1
000026f2: PUSH1 0x00
000026f4: SWAP1
000026f5: LOG1
000026f6: PUSH1 0x2e
000026f8: SLOAD
000026f9: PUSH1 0x25
000026fb: SLOAD
000026fc: PUSH1 0x01
000026fe: PUSH1 0x01
00002700: PUSH1 0xa0
00002702: SHL
00002703: SUB
00002704: SWAP1
00002705: SWAP2
00002706: AND
00002707: SWAP1
00002708: PUSH2 0x2719
0000270b: SWAP1
0000270c: PUSH2 0x9c40
0000270f: PUSH4 0xffffffff
00002714: PUSH2 0x36c0
00002717: AND
00002718: JUMP
00002719: JUMPDEST
0000271a: PUSH1 0x28
0000271c: SLOAD
0000271d: PUSH1 0x40
0000271f: MLOAD
00002720: PUSH1 0x24
00002722: DUP2
00002723: ADD
00002724: DUP3
00002725: DUP2
00002726: MSTORE
00002727: CALLER
00002728: PUSH1 0x64
0000272a: DUP4
0000272b: ADD
0000272c: DUP2
0000272d: SWAP1
0000272e: MSTORE
0000272f: PUSH1 0x60
00002731: PUSH1 0x44
00002733: DUP5
00002734: ADD
00002735: SWAP1
00002736: DUP2
00002737: MSTORE
00002738: DUP10
00002739: MLOAD
0000273a: PUSH1 0x84
0000273c: DUP6
0000273d: ADD
0000273e: MSTORE
0000273f: DUP10
00002740: MLOAD
00002741: DUP11
00002742: SWAP5
00002743: SWAP3
00002744: SWAP4
00002745: SWAP3
00002746: PUSH1 0xa4
00002748: ADD
00002749: SWAP1
0000274a: PUSH1 0x20
0000274c: DUP7
0000274d: ADD
0000274e: SWAP1
0000274f: DUP1
00002750: DUP4
00002751: DUP4
00002752: PUSH1 0x00
00002754: JUMPDEST
00002755: DUP4
00002756: DUP2
00002757: LT
00002758: ISZERO
00002759: PUSH2 0x276c
0000275c: JUMPI
0000275d: DUP2
0000275e: DUP2
0000275f: ADD
00002760: MLOAD
00002761: DUP4
00002762: DUP3
00002763: ADD
00002764: MSTORE
00002765: PUSH1 0x20
00002767: ADD
00002768: PUSH2 0x2754
0000276b: JUMP
0000276c: JUMPDEST
0000276d: POP
0000276e: POP
0000276f: POP
00002770: POP
00002771: SWAP1
00002772: POP
00002773: SWAP1
00002774: DUP2
00002775: ADD
00002776: SWAP1
00002777: PUSH1 0x1f
00002779: AND
0000277a: DUP1
0000277b: ISZERO
0000277c: PUSH2 0x2799
0000277f: JUMPI
00002780: DUP1
00002781: DUP3
00002782: SUB
00002783: DUP1
00002784: MLOAD
00002785: PUSH1 0x01
00002787: DUP4
00002788: PUSH1 0x20
0000278a: SUB
0000278b: PUSH2 0x0100
0000278e: EXP
0000278f: SUB
00002790: NOT
00002791: AND
00002792: DUP2
00002793: MSTORE
00002794: PUSH1 0x20
00002796: ADD
00002797: SWAP2
00002798: POP
00002799: JUMPDEST
0000279a: POP
0000279b: PUSH1 0x40
0000279d: DUP1
0000279e: MLOAD
0000279f: PUSH1 0x1f
000027a1: NOT
000027a2: DUP2
000027a3: DUP5
000027a4: SUB
000027a5: ADD
000027a6: DUP2
000027a7: MSTORE
000027a8: SWAP2
000027a9: DUP2
000027aa: MSTORE
000027ab: PUSH1 0x20
000027ad: DUP3
000027ae: ADD
000027af: DUP1
000027b0: MLOAD
000027b1: PUSH1 0x01
000027b3: PUSH1 0x01
000027b5: PUSH1 0xe0
000027b7: SHL
000027b8: SUB
000027b9: AND
000027ba: PUSH4 0xef7284e3
000027bf: PUSH1 0xe0
000027c1: SHL
000027c2: OR
000027c3: DUP2
000027c4: MSTORE
000027c5: SWAP1
000027c6: MLOAD
000027c7: DUP3
000027c8: MLOAD
000027c9: SWAP3
000027ca: SWAP8
000027cb: POP
000027cc: SWAP6
000027cd: POP
000027ce: DUP6
000027cf: SWAP5
000027d0: POP
000027d1: SWAP3
000027d2: POP
000027d3: SWAP1
000027d4: POP
000027d5: DUP1
000027d6: DUP4
000027d7: DUP4
000027d8: JUMPDEST
000027d9: PUSH1 0x20
000027db: DUP4
000027dc: LT
000027dd: PUSH2 0x27f7
000027e0: JUMPI
000027e1: DUP1
000027e2: MLOAD
000027e3: DUP3
000027e4: MSTORE
000027e5: PUSH1 0x1f
000027e7: NOT
000027e8: SWAP1
000027e9: SWAP3
000027ea: ADD
000027eb: SWAP2
000027ec: PUSH1 0x20
000027ee: SWAP2
000027ef: DUP3
000027f0: ADD
000027f1: SWAP2
000027f2: ADD
000027f3: PUSH2 0x27d8
000027f6: JUMP
000027f7: JUMPDEST
000027f8: PUSH1 0x01
000027fa: DUP4
000027fb: PUSH1 0x20
000027fd: SUB
000027fe: PUSH2 0x0100
00002801: EXP
00002802: SUB
00002803: DUP1
00002804: NOT
00002805: DUP3
00002806: MLOAD
00002807: AND
00002808: DUP2
00002809: DUP5
0000280a: MLOAD
0000280b: AND
0000280c: DUP1
0000280d: DUP3
0000280e: OR
0000280f: DUP6
00002810: MSTORE
00002811: POP
00002812: POP
00002813: POP
00002814: POP
00002815: POP
00002816: POP
00002817: SWAP1
00002818: POP
00002819: ADD
0000281a: SWAP2
0000281b: POP
0000281c: POP
0000281d: PUSH1 0x00
0000281f: PUSH1 0x40
00002821: MLOAD
00002822: DUP1
00002823: DUP4
00002824: SUB
00002825: DUP2
00002826: PUSH1 0x00
00002828: DUP8
00002829: DUP8
0000282a: CALL
0000282b: SWAP3
0000282c: POP
0000282d: POP
0000282e: POP
0000282f: RETURNDATASIZE
00002830: DUP1
00002831: PUSH1 0x00
00002833: DUP2
00002834: EQ
00002835: PUSH2 0x285a
00002838: JUMPI
00002839: PUSH1 0x40
0000283b: MLOAD
0000283c: SWAP2
0000283d: POP
0000283e: PUSH1 0x1f
00002840: NOT
00002841: PUSH1 0x3f
00002843: RETURNDATASIZE
00002844: ADD
00002845: AND
00002846: DUP3
00002847: ADD
00002848: PUSH1 0x40
0000284a: MSTORE
0000284b: RETURNDATASIZE
0000284c: DUP3
0000284d: MSTORE
0000284e: RETURNDATASIZE
0000284f: PUSH1 0x00
00002851: PUSH1 0x20
00002853: DUP5
00002854: ADD
00002855: RETURNDATACOPY
00002856: PUSH2 0x285f
00002859: JUMP
0000285a: JUMPDEST
0000285b: PUSH1 0x60
0000285d: SWAP2
0000285e: POP
0000285f: JUMPDEST
00002860: POP
00002861: POP
00002862: PUSH1 0x2d
00002864: SLOAD
00002865: ISZERO
00002866: SWAP1
00002867: POP
00002868: PUSH2 0x287b
0000286b: JUMPI
0000286c: DUP3
0000286d: MLOAD
0000286e: PUSH1 0x20
00002870: DUP5
00002871: ADD
00002872: KECCAK256
00002873: PUSH2 0x287b
00002876: SWAP1
00002877: PUSH2 0x3a60
0000287a: JUMP
0000287b: JUMPDEST
0000287c: PUSH1 0x00
0000287e: DUP1
0000287f: PUSH1 0x00
00002881: PUSH2 0x2888
00002884: PUSH2 0x3da4
00002887: JUMP
00002888: JUMPDEST
00002889: SWAP2
0000288a: SWAP5
0000288b: POP
0000288c: SWAP3
0000288d: POP
0000288e: SWAP1
0000288f: POP
00002890: PUSH2 0x28a1
00002893: PUSH1 0x0b
00002895: DUP6
00002896: DUP6
00002897: PUSH4 0xffffffff
0000289c: PUSH2 0x3f27
0000289f: AND
000028a0: JUMP
000028a1: JUMPDEST
000028a2: PUSH1 0x1b
000028a4: SLOAD
000028a5: PUSH1 0x40
000028a7: DUP1
000028a8: MLOAD
000028a9: PUSH4 0xba7bffd3
000028ae: PUSH1 0xe0
000028b0: SHL
000028b1: DUP2
000028b2: MSTORE
000028b3: CALLER
000028b4: PUSH1 0x04
000028b6: DUP3
000028b7: ADD
000028b8: MSTORE
000028b9: SWAP1
000028ba: MLOAD
000028bb: PUSH1 0x01
000028bd: PUSH1 0x01
000028bf: PUSH1 0xa0
000028c1: SHL
000028c2: SUB
000028c3: SWAP1
000028c4: SWAP3
000028c5: AND
000028c6: SWAP2
000028c7: PUSH4 0xba7bffd3
000028cc: SWAP2
000028cd: PUSH1 0x24
000028cf: DUP1
000028d0: DUP3
000028d1: ADD
000028d2: SWAP3
000028d3: PUSH1 0x20
000028d5: SWAP3
000028d6: SWAP1
000028d7: SWAP2
000028d8: SWAP1
000028d9: DUP3
000028da: SWAP1
000028db: SUB
000028dc: ADD
000028dd: DUP2
000028de: DUP7
000028df: DUP1
000028e0: EXTCODESIZE
000028e1: ISZERO
000028e2: DUP1
000028e3: ISZERO
000028e4: PUSH2 0x28ec
000028e7: JUMPI
000028e8: PUSH1 0x00
000028ea: DUP1
000028eb: REVERT
000028ec: JUMPDEST
000028ed: POP
000028ee: GAS
000028ef: STATICCALL
000028f0: ISZERO
000028f1: DUP1
000028f2: ISZERO
000028f3: PUSH2 0x2900
000028f6: JUMPI
000028f7: RETURNDATASIZE
000028f8: PUSH1 0x00
000028fa: DUP1
000028fb: RETURNDATACOPY
000028fc: RETURNDATASIZE
000028fd: PUSH1 0x00
000028ff: REVERT
00002900: JUMPDEST
00002901: POP
00002902: POP
00002903: POP
00002904: POP
00002905: PUSH1 0x40
00002907: MLOAD
00002908: RETURNDATASIZE
00002909: PUSH1 0x20
0000290b: DUP2
0000290c: LT
0000290d: ISZERO
0000290e: PUSH2 0x2916
00002911: JUMPI
00002912: PUSH1 0x00
00002914: DUP1
00002915: REVERT
00002916: JUMPDEST
00002917: POP
00002918: MLOAD
00002919: PUSH1 0x40
0000291b: MLOAD
0000291c: PUSH1 0x01
0000291e: PUSH1 0x01
00002920: PUSH1 0xa0
00002922: SHL
00002923: SUB
00002924: SWAP1
00002925: SWAP2
00002926: AND
00002927: SWAP1
00002928: DUP4
00002929: SWAP1
0000292a: PUSH1 0x00
0000292c: DUP2
0000292d: DUP2
0000292e: DUP2
0000292f: DUP6
00002930: DUP8
00002931: GAS
00002932: CALL
00002933: SWAP3
00002934: POP
00002935: POP
00002936: POP
00002937: RETURNDATASIZE
00002938: DUP1
00002939: PUSH1 0x00
0000293b: DUP2
0000293c: EQ
0000293d: PUSH2 0x2962
00002940: JUMPI
00002941: PUSH1 0x40
00002943: MLOAD
00002944: SWAP2
00002945: POP
00002946: PUSH1 0x1f
00002948: NOT
00002949: PUSH1 0x3f
0000294b: RETURNDATASIZE
0000294c: ADD
0000294d: AND
0000294e: DUP3
0000294f: ADD
00002950: PUSH1 0x40
00002952: MSTORE
00002953: RETURNDATASIZE
00002954: DUP3
00002955: MSTORE
00002956: RETURNDATASIZE
00002957: PUSH1 0x00
00002959: PUSH1 0x20
0000295b: DUP5
0000295c: ADD
0000295d: RETURNDATACOPY
0000295e: PUSH2 0x2967
00002961: JUMP
00002962: JUMPDEST
00002963: PUSH1 0x60
00002965: SWAP2
00002966: POP
00002967: JUMPDEST
00002968: POP
00002969: POP
0000296a: DUP2
0000296b: ISZERO
0000296c: SWAP1
0000296d: POP
0000296e: PUSH2 0x2a46
00002971: JUMPI
00002972: PUSH1 0x2e
00002974: SLOAD
00002975: PUSH1 0x40
00002977: DUP1
00002978: MLOAD
00002979: PUSH1 0x04
0000297b: DUP2
0000297c: MSTORE
0000297d: PUSH1 0x24
0000297f: DUP2
00002980: ADD
00002981: DUP3
00002982: MSTORE
00002983: PUSH1 0x20
00002985: DUP2
00002986: ADD
00002987: DUP1
00002988: MLOAD
00002989: PUSH1 0x01
0000298b: PUSH1 0x01
0000298d: PUSH1 0xe0
0000298f: SHL
00002990: SUB
00002991: AND
00002992: PUSH4 0x08f40b77
00002997: PUSH1 0xe1
00002999: SHL
0000299a: OR
0000299b: DUP2
0000299c: MSTORE
0000299d: SWAP2
0000299e: MLOAD
0000299f: DUP2
000029a0: MLOAD
000029a1: PUSH1 0x01
000029a3: PUSH1 0x01
000029a5: PUSH1 0xa0
000029a7: SHL
000029a8: SUB
000029a9: SWAP1
000029aa: SWAP5
000029ab: AND
000029ac: SWAP4
000029ad: PUSH2 0x88b8
000029b0: SWAP4
000029b1: DUP7
000029b2: SWAP4
000029b3: SWAP3
000029b4: SWAP2
000029b5: DUP3
000029b6: SWAP2
000029b7: SWAP1
000029b8: DUP1
000029b9: DUP4
000029ba: DUP4
000029bb: JUMPDEST
000029bc: PUSH1 0x20
000029be: DUP4
000029bf: LT
000029c0: PUSH2 0x29da
000029c3: JUMPI
000029c4: DUP1
000029c5: MLOAD
000029c6: DUP3
000029c7: MSTORE
000029c8: PUSH1 0x1f
000029ca: NOT
000029cb: SWAP1
000029cc: SWAP3
000029cd: ADD
000029ce: SWAP2
000029cf: PUSH1 0x20
000029d1: SWAP2
000029d2: DUP3
000029d3: ADD
000029d4: SWAP2
000029d5: ADD
000029d6: PUSH2 0x29bb
000029d9: JUMP
000029da: JUMPDEST
000029db: PUSH1 0x01
000029dd: DUP4
000029de: PUSH1 0x20
000029e0: SUB
000029e1: PUSH2 0x0100
000029e4: EXP
000029e5: SUB
000029e6: DUP1
000029e7: NOT
000029e8: DUP3
000029e9: MLOAD
000029ea: AND
000029eb: DUP2
000029ec: DUP5
000029ed: MLOAD
000029ee: AND
000029ef: DUP1
000029f0: DUP3
000029f1: OR
000029f2: DUP6
000029f3: MSTORE
000029f4: POP
000029f5: POP
000029f6: POP
000029f7: POP
000029f8: POP
000029f9: POP
000029fa: SWAP1
000029fb: POP
000029fc: ADD
000029fd: SWAP2
000029fe: POP
000029ff: POP
00002a00: PUSH1 0x00
00002a02: PUSH1 0x40
00002a04: MLOAD
00002a05: DUP1
00002a06: DUP4
00002a07: SUB
00002a08: DUP2
00002a09: DUP6
00002a0a: DUP9
00002a0b: DUP9
00002a0c: CALL
00002a0d: SWAP4
00002a0e: POP
00002a0f: POP
00002a10: POP
00002a11: POP
00002a12: RETURNDATASIZE
00002a13: DUP1
00002a14: PUSH1 0x00
00002a16: DUP2
00002a17: EQ
00002a18: PUSH2 0x2a3d
00002a1b: JUMPI
00002a1c: PUSH1 0x40
00002a1e: MLOAD
00002a1f: SWAP2
00002a20: POP
00002a21: PUSH1 0x1f
00002a23: NOT
00002a24: PUSH1 0x3f
00002a26: RETURNDATASIZE
00002a27: ADD
00002a28: AND
00002a29: DUP3
00002a2a: ADD
00002a2b: PUSH1 0x40
00002a2d: MSTORE
00002a2e: RETURNDATASIZE
00002a2f: DUP3
00002a30: MSTORE
00002a31: RETURNDATASIZE
00002a32: PUSH1 0x00
00002a34: PUSH1 0x20
00002a36: DUP5
00002a37: ADD
00002a38: RETURNDATACOPY
00002a39: PUSH2 0x2a42
00002a3c: JUMP
00002a3d: JUMPDEST
00002a3e: PUSH1 0x60
00002a40: SWAP2
00002a41: POP
00002a42: JUMPDEST
00002a43: POP
00002a44: POP
00002a45: POP
00002a46: JUMPDEST
00002a47: PUSH1 0x00
00002a49: PUSH1 0x29
00002a4b: DUP2
00002a4c: SWAP1
00002a4d: SSTORE
00002a4e: POP
00002a4f: POP
00002a50: POP
00002a51: POP
00002a52: POP
00002a53: PUSH1 0x00
00002a55: SLOAD
00002a56: DUP2
00002a57: EQ
00002a58: PUSH2 0x2aa8
00002a5b: JUMPI
00002a5c: PUSH1 0x40
00002a5e: DUP1
00002a5f: MLOAD
00002a60: PUSH3 0x461bcd
00002a64: PUSH1 0xe5
00002a66: SHL
00002a67: DUP2
00002a68: MSTORE
00002a69: PUSH1 0x20
00002a6b: PUSH1 0x04
00002a6d: DUP3
00002a6e: ADD
00002a6f: MSTORE
00002a70: PUSH1 0x1f
00002a72: PUSH1 0x24
00002a74: DUP3
00002a75: ADD
00002a76: MSTORE
00002a77: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00
00002a98: PUSH1 0x44
00002a9a: DUP3
00002a9b: ADD
00002a9c: MSTORE
00002a9d: SWAP1
00002a9e: MLOAD
00002a9f: SWAP1
00002aa0: DUP2
00002aa1: SWAP1
00002aa2: SUB
00002aa3: PUSH1 0x64
00002aa5: ADD
00002aa6: SWAP1
00002aa7: REVERT
00002aa8: JUMPDEST
00002aa9: POP
00002aaa: POP
00002aab: JUMP
00002aac: JUMPDEST
00002aad: PUSH1 0x26
00002aaf: SLOAD
00002ab0: DUP2
00002ab1: JUMP
00002ab2: JUMPDEST
00002ab3: PUSH1 0x22
00002ab5: SLOAD
00002ab6: DUP2
00002ab7: JUMP
00002ab8: JUMPDEST
00002ab9: PUSH1 0x00
00002abb: PUSH2 0x15d4
00002abe: PUSH1 0x0b
00002ac0: PUSH2 0x3ffe
00002ac3: JUMP
00002ac4: JUMPDEST
00002ac5: PUSH1 0x00
00002ac7: PUSH2 0x15d4
00002aca: PUSH1 0x1e
00002acc: SLOAD
00002acd: PUSH2 0x2ae3
00002ad0: PUSH1 0x25
00002ad2: SLOAD
00002ad3: PUSH1 0x24
00002ad5: SLOAD
00002ad6: PUSH2 0x36c0
00002ad9: SWAP1
00002ada: SWAP2
00002adb: SWAP1
00002adc: PUSH4 0xffffffff
00002ae1: AND
00002ae2: JUMP
00002ae3: JUMPDEST
00002ae4: SWAP1
00002ae5: PUSH4 0xffffffff
00002aea: PUSH2 0x33ab
00002aed: AND
00002aee: JUMP
00002aef: JUMPDEST
00002af0: PUSH1 0x00
00002af2: PUSH2 0x15d4
00002af5: PUSH1 0x1f
00002af7: SLOAD
00002af8: PUSH1 0x1d
00002afa: SLOAD
00002afb: PUSH2 0x33ab
00002afe: SWAP1
00002aff: SWAP2
00002b00: SWAP1
00002b01: PUSH4 0xffffffff
00002b06: AND
00002b07: JUMP
00002b08: JUMPDEST
00002b09: PUSH1 0x1c
00002b0b: PUSH1 0x00
00002b0d: SWAP1
00002b0e: SLOAD
00002b0f: SWAP1
00002b10: PUSH2 0x0100
00002b13: EXP
00002b14: SWAP1
00002b15: DIV
00002b16: PUSH1 0x01
00002b18: PUSH1 0x01
00002b1a: PUSH1 0xa0
00002b1c: SHL
00002b1d: SUB
00002b1e: AND
00002b1f: PUSH1 0x01
00002b21: PUSH1 0x01
00002b23: PUSH1 0xa0
00002b25: SHL
00002b26: SUB
00002b27: AND
00002b28: PUSH4 0xfe173b97
00002b2d: PUSH1 0x40
00002b2f: MLOAD
00002b30: DUP2
00002b31: PUSH4 0xffffffff
00002b36: AND
00002b37: PUSH1 0xe0
00002b39: SHL
00002b3a: DUP2
00002b3b: MSTORE
00002b3c: PUSH1 0x04
00002b3e: ADD
00002b3f: PUSH1 0x20
00002b41: PUSH1 0x40
00002b43: MLOAD
00002b44: DUP1
00002b45: DUP4
00002b46: SUB
00002b47: DUP2
00002b48: DUP7
00002b49: DUP1
00002b4a: EXTCODESIZE
00002b4b: ISZERO
00002b4c: DUP1
00002b4d: ISZERO
00002b4e: PUSH2 0x2b56
00002b51: JUMPI
00002b52: PUSH1 0x00
00002b54: DUP1
00002b55: REVERT
00002b56: JUMPDEST
00002b57: POP
00002b58: GAS
00002b59: STATICCALL
00002b5a: ISZERO
00002b5b: DUP1
00002b5c: ISZERO
00002b5d: PUSH2 0x2b6a
00002b60: JUMPI
00002b61: RETURNDATASIZE
00002b62: PUSH1 0x00
00002b64: DUP1
00002b65: RETURNDATACOPY
00002b66: RETURNDATASIZE
00002b67: PUSH1 0x00
00002b69: REVERT
00002b6a: JUMPDEST
00002b6b: POP
00002b6c: POP
00002b6d: POP
00002b6e: POP
00002b6f: PUSH1 0x40
00002b71: MLOAD
00002b72: RETURNDATASIZE
00002b73: PUSH1 0x20
00002b75: DUP2
00002b76: LT
00002b77: ISZERO
00002b78: PUSH2 0x2b80
00002b7b: JUMPI
00002b7c: PUSH1 0x00
00002b7e: DUP1
00002b7f: REVERT
00002b80: JUMPDEST
00002b81: POP
00002b82: MLOAD
00002b83: PUSH1 0x1e
00002b85: SSTORE
00002b86: JUMP
00002b87: JUMPDEST
00002b88: PUSH2 0x2bf2
00002b8b: CALLER
00002b8c: PUSH1 0x19
00002b8e: DUP1
00002b8f: SLOAD
00002b90: DUP1
00002b91: PUSH1 0x20
00002b93: MUL
00002b94: PUSH1 0x20
00002b96: ADD
00002b97: PUSH1 0x40
00002b99: MLOAD
00002b9a: SWAP1
00002b9b: DUP2
00002b9c: ADD
00002b9d: PUSH1 0x40
00002b9f: MSTORE
00002ba0: DUP1
00002ba1: SWAP3
00002ba2: SWAP2
00002ba3: SWAP1
00002ba4: DUP2
00002ba5: DUP2
00002ba6: MSTORE
00002ba7: PUSH1 0x20
00002ba9: ADD
00002baa: DUP3
00002bab: DUP1
00002bac: SLOAD
00002bad: DUP1
00002bae: ISZERO
00002baf: PUSH2 0x2101
00002bb2: JUMPI
00002bb3: PUSH1 0x20
00002bb5: MUL
00002bb6: DUP3
00002bb7: ADD
00002bb8: SWAP2
00002bb9: SWAP1
00002bba: PUSH1 0x00
00002bbc: MSTORE
00002bbd: PUSH1 0x20
00002bbf: PUSH1 0x00
00002bc1: KECCAK256
00002bc2: SWAP1
00002bc3: DUP2
00002bc4: SLOAD
00002bc5: PUSH1 0x01
00002bc7: PUSH1 0x01
00002bc9: PUSH1 0xa0
00002bcb: SHL
00002bcc: SUB
00002bcd: AND
00002bce: DUP2
00002bcf: MSTORE
00002bd0: PUSH1 0x01
00002bd2: SWAP1
00002bd3: SWAP2
00002bd4: ADD
00002bd5: SWAP1
00002bd6: PUSH1 0x20
00002bd8: ADD
00002bd9: DUP1
00002bda: DUP4
00002bdb: GT
00002bdc: PUSH2 0x20e3
00002bdf: JUMPI
00002be0: POP
00002be1: POP
00002be2: POP
00002be3: POP
00002be4: POP
00002be5: PUSH2 0x366a
00002be8: SWAP1
00002be9: SWAP2
00002bea: SWAP1
00002beb: PUSH4 0xffffffff
00002bf0: AND
00002bf1: JUMP
00002bf2: JUMPDEST
00002bf3: PUSH2 0x2c43
00002bf6: JUMPI
00002bf7: PUSH1 0x40
00002bf9: DUP1
00002bfa: MLOAD
00002bfb: PUSH3 0x461bcd
00002bff: PUSH1 0xe5
00002c01: SHL
00002c02: DUP2
00002c03: MSTORE
00002c04: PUSH1 0x20
00002c06: PUSH1 0x04
00002c08: DUP3
00002c09: ADD
00002c0a: DUP2
00002c0b: SWAP1
00002c0c: MSTORE
00002c0d: PUSH1 0x24
00002c0f: DUP3
00002c10: ADD
00002c11: MSTORE
00002c12: PUSH32 0x43616c6c6572206973206e6f742061207365727669636520636f6e7472616374
00002c33: PUSH1 0x44
00002c35: DUP3
00002c36: ADD
00002c37: MSTORE
00002c38: SWAP1
00002c39: MLOAD
00002c3a: SWAP1
00002c3b: DUP2
00002c3c: SWAP1
00002c3d: SUB
00002c3e: PUSH1 0x64
00002c40: ADD
00002c41: SWAP1
00002c42: REVERT
00002c43: JUMPDEST
00002c44: PUSH1 0x00
00002c46: PUSH2 0x2c5c
00002c49: PUSH1 0x1e
00002c4b: SLOAD
00002c4c: PUSH1 0x25
00002c4e: SLOAD
00002c4f: PUSH2 0x33ab
00002c52: SWAP1
00002c53: SWAP2
00002c54: SWAP1
00002c55: PUSH4 0xffffffff
00002c5a: AND
00002c5b: JUMP
00002c5c: JUMPDEST
00002c5d: PUSH1 0x27
00002c5f: DUP1
00002c60: SLOAD
00002c61: PUSH1 0x01
00002c63: PUSH1 0x01
00002c65: PUSH1 0xa0
00002c67: SHL
00002c68: SUB
00002c69: NOT
00002c6a: AND
00002c6b: CALLER
00002c6c: OR
00002c6d: SWAP1
00002c6e: SSTORE
00002c6f: SWAP1
00002c70: POP
00002c71: PUSH2 0x2c89
00002c74: DUP4
00002c75: PUSH2 0x2c84
00002c78: CALLVALUE
00002c79: DUP5
00002c7a: PUSH4 0xffffffff
00002c7f: PUSH2 0x371a
00002c82: AND
00002c83: JUMP
00002c84: JUMPDEST
00002c85: PUSH2 0x375c
00002c88: JUMP
00002c89: JUMPDEST
00002c8a: PUSH1 0x1b
00002c8c: SLOAD
00002c8d: PUSH1 0x40
00002c8f: DUP1
00002c90: MLOAD
00002c91: PUSH4 0xba7bffd3
00002c96: PUSH1 0xe0
00002c98: SHL
00002c99: DUP2
00002c9a: MSTORE
00002c9b: PUSH1 0x01
00002c9d: PUSH1 0x01
00002c9f: PUSH1 0xa0
00002ca1: SHL
00002ca2: SUB
00002ca3: DUP6
00002ca4: DUP2
00002ca5: AND
00002ca6: PUSH1 0x04
00002ca8: DUP4
00002ca9: ADD
00002caa: MSTORE
00002cab: SWAP2
00002cac: MLOAD
00002cad: PUSH1 0x00
00002caf: SWAP4
00002cb0: SWAP3
00002cb1: SWAP1
00002cb2: SWAP3
00002cb3: AND
00002cb4: SWAP2
00002cb5: PUSH4 0xba7bffd3
00002cba: SWAP2
00002cbb: PUSH1 0x24
00002cbd: DUP1
00002cbe: DUP3
00002cbf: ADD
00002cc0: SWAP3
00002cc1: PUSH1 0x20
00002cc3: SWAP3
00002cc4: SWAP1
00002cc5: SWAP2
00002cc6: SWAP1
00002cc7: DUP3
00002cc8: SWAP1
00002cc9: SUB
00002cca: ADD
00002ccb: DUP2
00002ccc: DUP7
00002ccd: DUP1
00002cce: EXTCODESIZE
00002ccf: ISZERO
00002cd0: DUP1
00002cd1: ISZERO
00002cd2: PUSH2 0x2cda
00002cd5: JUMPI
00002cd6: PUSH1 0x00
00002cd8: DUP1
00002cd9: REVERT
00002cda: JUMPDEST
00002cdb: POP
00002cdc: GAS
00002cdd: STATICCALL
00002cde: ISZERO
00002cdf: DUP1
00002ce0: ISZERO
00002ce1: PUSH2 0x2cee
00002ce4: JUMPI
00002ce5: RETURNDATASIZE
00002ce6: PUSH1 0x00
00002ce8: DUP1
00002ce9: RETURNDATACOPY
00002cea: RETURNDATASIZE
00002ceb: PUSH1 0x00
00002ced: REVERT
00002cee: JUMPDEST
00002cef: POP
00002cf0: POP
00002cf1: POP
00002cf2: POP
00002cf3: PUSH1 0x40
00002cf5: MLOAD
00002cf6: RETURNDATASIZE
00002cf7: PUSH1 0x20
00002cf9: DUP2
00002cfa: LT
00002cfb: ISZERO
00002cfc: PUSH2 0x2d04
00002cff: JUMPI
00002d00: PUSH1 0x00
00002d02: DUP1
00002d03: REVERT
00002d04: JUMPDEST
00002d05: POP
00002d06: MLOAD
00002d07: PUSH1 0x40
00002d09: MLOAD
00002d0a: PUSH1 0x01
00002d0c: PUSH1 0x01
00002d0e: PUSH1 0xa0
00002d10: SHL
00002d11: SUB
00002d12: SWAP1
00002d13: SWAP2
00002d14: AND
00002d15: SWAP1
00002d16: DUP4
00002d17: SWAP1
00002d18: PUSH1 0x00
00002d1a: DUP2
00002d1b: DUP2
00002d1c: DUP2
00002d1d: DUP6
00002d1e: DUP8
00002d1f: GAS
00002d20: CALL
00002d21: SWAP3
00002d22: POP
00002d23: POP
00002d24: POP
00002d25: RETURNDATASIZE
00002d26: DUP1
00002d27: PUSH1 0x00
00002d29: DUP2
00002d2a: EQ
00002d2b: PUSH2 0x2d50
00002d2e: JUMPI
00002d2f: PUSH1 0x40
00002d31: MLOAD
00002d32: SWAP2
00002d33: POP
00002d34: PUSH1 0x1f
00002d36: NOT
00002d37: PUSH1 0x3f
00002d39: RETURNDATASIZE
00002d3a: ADD
00002d3b: AND
00002d3c: DUP3
00002d3d: ADD
00002d3e: PUSH1 0x40
00002d40: MSTORE
00002d41: RETURNDATASIZE
00002d42: DUP3
00002d43: MSTORE
00002d44: RETURNDATASIZE
00002d45: PUSH1 0x00
00002d47: PUSH1 0x20
00002d49: DUP5
00002d4a: ADD
00002d4b: RETURNDATACOPY
00002d4c: PUSH2 0x2d55
00002d4f: JUMP
00002d50: JUMPDEST
00002d51: PUSH1 0x60
00002d53: SWAP2
00002d54: POP
00002d55: JUMPDEST
00002d56: POP
00002d57: POP
00002d58: SWAP1
00002d59: POP
00002d5a: DUP1
00002d5b: PUSH2 0x21fe
00002d5e: JUMPI
00002d5f: PUSH1 0x40
00002d61: MLOAD
00002d62: PUSH3 0x461bcd
00002d66: PUSH1 0xe5
00002d68: SHL
00002d69: DUP2
00002d6a: MSTORE
00002d6b: PUSH1 0x04
00002d6d: ADD
00002d6e: DUP1
00002d6f: DUP1
00002d70: PUSH1 0x20
00002d72: ADD
00002d73: DUP3
00002d74: DUP2
00002d75: SUB
00002d76: DUP3
00002d77: MSTORE
00002d78: PUSH1 0x24
00002d7a: DUP2
00002d7b: MSTORE
00002d7c: PUSH1 0x20
00002d7e: ADD
00002d7f: DUP1
00002d80: PUSH2 0x41f2
00002d83: PUSH1 0x24
00002d85: SWAP2
00002d86: CODECOPY
00002d87: PUSH1 0x40
00002d89: ADD
00002d8a: SWAP2
00002d8b: POP
00002d8c: POP
00002d8d: PUSH1 0x40
00002d8f: MLOAD
00002d90: DUP1
00002d91: SWAP2
00002d92: SUB
00002d93: SWAP1
00002d94: REVERT
00002d95: JUMPDEST
00002d96: PUSH1 0x04
00002d98: SLOAD
00002d99: SWAP1
00002d9a: JUMP
00002d9b: JUMPDEST
00002d9c: PUSH1 0x40
00002d9e: DUP1
00002d9f: MLOAD
00002da0: PUSH4 0xdc262703
00002da5: PUSH1 0xe0
00002da7: SHL
00002da8: DUP2
00002da9: MSTORE
00002daa: PUSH1 0x0b
00002dac: PUSH1 0x04
00002dae: DUP3
00002daf: ADD
00002db0: DUP2
00002db1: DUP2
00002db2: MSTORE
00002db3: PUSH1 0x24
00002db5: DUP4
00002db6: ADD
00002db7: SWAP4
00002db8: DUP5
00002db9: MSTORE
00002dba: DUP5
00002dbb: MLOAD
00002dbc: PUSH1 0x44
00002dbe: DUP5
00002dbf: ADD
00002dc0: MSTORE
00002dc1: DUP5
00002dc2: MLOAD
00002dc3: PUSH1 0x60
00002dc5: SWAP5
00002dc6: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
00002ddb: SWAP5
00002ddc: PUSH4 0xdc262703
00002de1: SWAP5
00002de2: SWAP4
00002de3: DUP9
00002de4: SWAP4
00002de5: SWAP1
00002de6: SWAP3
00002de7: SWAP2
00002de8: PUSH1 0x64
00002dea: ADD
00002deb: SWAP1
00002dec: PUSH1 0x20
00002dee: DUP6
00002def: ADD
00002df0: SWAP1
00002df1: DUP1
00002df2: DUP4
00002df3: DUP4
00002df4: PUSH1 0x00
00002df6: JUMPDEST
00002df7: DUP4
00002df8: DUP2
00002df9: LT
00002dfa: ISZERO
00002dfb: PUSH2 0x2e0e
00002dfe: JUMPI
00002dff: DUP2
00002e00: DUP2
00002e01: ADD
00002e02: MLOAD
00002e03: DUP4
00002e04: DUP3
00002e05: ADD
00002e06: MSTORE
00002e07: PUSH1 0x20
00002e09: ADD
00002e0a: PUSH2 0x2df6
00002e0d: JUMP
00002e0e: JUMPDEST
00002e0f: POP
00002e10: POP
00002e11: POP
00002e12: POP
00002e13: SWAP1
00002e14: POP
00002e15: SWAP1
00002e16: DUP2
00002e17: ADD
00002e18: SWAP1
00002e19: PUSH1 0x1f
00002e1b: AND
00002e1c: DUP1
00002e1d: ISZERO
00002e1e: PUSH2 0x2e3b
00002e21: JUMPI
00002e22: DUP1
00002e23: DUP3
00002e24: SUB
00002e25: DUP1
00002e26: MLOAD
00002e27: PUSH1 0x01
00002e29: DUP4
00002e2a: PUSH1 0x20
00002e2c: SUB
00002e2d: PUSH2 0x0100
00002e30: EXP
00002e31: SUB
00002e32: NOT
00002e33: AND
00002e34: DUP2
00002e35: MSTORE
00002e36: PUSH1 0x20
00002e38: ADD
00002e39: SWAP2
00002e3a: POP
00002e3b: JUMPDEST
00002e3c: POP
00002e3d: SWAP4
00002e3e: POP
00002e3f: POP
00002e40: POP
00002e41: POP
00002e42: PUSH1 0x00
00002e44: PUSH1 0x40
00002e46: MLOAD
00002e47: DUP1
00002e48: DUP4
00002e49: SUB
00002e4a: DUP2
00002e4b: DUP7
00002e4c: DUP1
00002e4d: EXTCODESIZE
00002e4e: ISZERO
00002e4f: DUP1
00002e50: ISZERO
00002e51: PUSH2 0x2e59
00002e54: JUMPI
00002e55: PUSH1 0x00
00002e57: DUP1
00002e58: REVERT
00002e59: JUMPDEST
00002e5a: POP
00002e5b: GAS
00002e5c: DELEGATECALL
00002e5d: ISZERO
00002e5e: DUP1
00002e5f: ISZERO
00002e60: PUSH2 0x2e6d
00002e63: JUMPI
00002e64: RETURNDATASIZE
00002e65: PUSH1 0x00
00002e67: DUP1
00002e68: RETURNDATACOPY
00002e69: RETURNDATASIZE
00002e6a: PUSH1 0x00
00002e6c: REVERT
00002e6d: JUMPDEST
00002e6e: POP
00002e6f: POP
00002e70: POP
00002e71: POP
00002e72: PUSH1 0x40
00002e74: MLOAD
00002e75: RETURNDATASIZE
00002e76: PUSH1 0x00
00002e78: DUP3
00002e79: RETURNDATACOPY
00002e7a: PUSH1 0x1f
00002e7c: RETURNDATASIZE
00002e7d: SWAP1
00002e7e: DUP2
00002e7f: ADD
00002e80: PUSH1 0x1f
00002e82: NOT
00002e83: AND
00002e84: DUP3
00002e85: ADD
00002e86: PUSH1 0x40
00002e88: MSTORE
00002e89: PUSH1 0x20
00002e8b: DUP2
00002e8c: LT
00002e8d: ISZERO
00002e8e: PUSH2 0x2e96
00002e91: JUMPI
00002e92: PUSH1 0x00
00002e94: DUP1
00002e95: REVERT
00002e96: JUMPDEST
00002e97: DUP2
00002e98: ADD
00002e99: SWAP1
00002e9a: DUP1
00002e9b: DUP1
00002e9c: MLOAD
00002e9d: PUSH1 0x40
00002e9f: MLOAD
00002ea0: SWAP4
00002ea1: SWAP3
00002ea2: SWAP2
00002ea3: SWAP1
00002ea4: DUP5
00002ea5: PUSH1 0x01
00002ea7: PUSH1 0x20
00002ea9: SHL
00002eaa: DUP3
00002eab: GT
00002eac: ISZERO
00002ead: PUSH2 0x2eb5
00002eb0: JUMPI
00002eb1: PUSH1 0x00
00002eb3: DUP1
00002eb4: REVERT
00002eb5: JUMPDEST
00002eb6: SWAP1
00002eb7: DUP4
00002eb8: ADD
00002eb9: SWAP1
00002eba: PUSH1 0x20
00002ebc: DUP3
00002ebd: ADD
00002ebe: DUP6
00002ebf: DUP2
00002ec0: GT
00002ec1: ISZERO
00002ec2: PUSH2 0x2eca
00002ec5: JUMPI
00002ec6: PUSH1 0x00
00002ec8: DUP1
00002ec9: REVERT
00002eca: JUMPDEST
00002ecb: DUP3
00002ecc: MLOAD
00002ecd: DUP7
00002ece: PUSH1 0x20
00002ed0: DUP3
00002ed1: MUL
00002ed2: DUP4
00002ed3: ADD
00002ed4: GT
00002ed5: PUSH1 0x01
00002ed7: PUSH1 0x20
00002ed9: SHL
00002eda: DUP3
00002edb: GT
00002edc: OR
00002edd: ISZERO
00002ede: PUSH2 0x2ee6
00002ee1: JUMPI
00002ee2: PUSH1 0x00
00002ee4: DUP1
00002ee5: REVERT
00002ee6: JUMPDEST
00002ee7: DUP3
00002ee8: MSTORE
00002ee9: POP
00002eea: DUP2
00002eeb: MLOAD
00002eec: PUSH1 0x20
00002eee: SWAP2
00002eef: DUP3
00002ef0: ADD
00002ef1: SWAP3
00002ef2: DUP3
00002ef3: ADD
00002ef4: SWAP2
00002ef5: MUL
00002ef6: DUP1
00002ef7: DUP4
00002ef8: DUP4
00002ef9: PUSH1 0x00
00002efb: JUMPDEST
00002efc: DUP4
00002efd: DUP2
00002efe: LT
00002eff: ISZERO
00002f00: PUSH2 0x2f13
00002f03: JUMPI
00002f04: DUP2
00002f05: DUP2
00002f06: ADD
00002f07: MLOAD
00002f08: DUP4
00002f09: DUP3
00002f0a: ADD
00002f0b: MSTORE
00002f0c: PUSH1 0x20
00002f0e: ADD
00002f0f: PUSH2 0x2efb
00002f12: JUMP
00002f13: JUMPDEST
00002f14: POP
00002f15: POP
00002f16: POP
00002f17: POP
00002f18: SWAP1
00002f19: POP
00002f1a: ADD
00002f1b: PUSH1 0x40
00002f1d: MSTORE
00002f1e: POP
00002f1f: POP
00002f20: POP
00002f21: SWAP1
00002f22: POP
00002f23: SWAP2
00002f24: SWAP1
00002f25: POP
00002f26: JUMP
00002f27: JUMPDEST
00002f28: PUSH1 0x1e
00002f2a: SLOAD
00002f2b: DUP2
00002f2c: JUMP
00002f2d: JUMPDEST
00002f2e: PUSH1 0x0b
00002f30: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
00002f45: PUSH4 0x20bc2866
00002f4a: SWAP1
00002f4b: SWAP2
00002f4c: DUP5
00002f4d: DUP5
00002f4e: PUSH1 0x1b
00002f50: PUSH1 0x00
00002f52: SWAP1
00002f53: SLOAD
00002f54: SWAP1
00002f55: PUSH2 0x0100
00002f58: EXP
00002f59: SWAP1
00002f5a: DIV
00002f5b: PUSH1 0x01
00002f5d: PUSH1 0x01
00002f5f: PUSH1 0xa0
00002f61: SHL
00002f62: SUB
00002f63: AND
00002f64: PUSH1 0x01
00002f66: PUSH1 0x01
00002f68: PUSH1 0xa0
00002f6a: SHL
00002f6b: SUB
00002f6c: AND
00002f6d: PUSH4 0xec5ffac2
00002f72: PUSH1 0x40
00002f74: MLOAD
00002f75: DUP2
00002f76: PUSH4 0xffffffff
00002f7b: AND
00002f7c: PUSH1 0xe0
00002f7e: SHL
00002f7f: DUP2
00002f80: MSTORE
00002f81: PUSH1 0x04
00002f83: ADD
00002f84: PUSH1 0x20
00002f86: PUSH1 0x40
00002f88: MLOAD
00002f89: DUP1
00002f8a: DUP4
00002f8b: SUB
00002f8c: DUP2
00002f8d: DUP7
00002f8e: DUP1
00002f8f: EXTCODESIZE
00002f90: ISZERO
00002f91: DUP1
00002f92: ISZERO
00002f93: PUSH2 0x2f9b
00002f96: JUMPI
00002f97: PUSH1 0x00
00002f99: DUP1
00002f9a: REVERT
00002f9b: JUMPDEST
00002f9c: POP
00002f9d: GAS
00002f9e: STATICCALL
00002f9f: ISZERO
00002fa0: DUP1
00002fa1: ISZERO
00002fa2: PUSH2 0x2faf
00002fa5: JUMPI
00002fa6: RETURNDATASIZE
00002fa7: PUSH1 0x00
00002fa9: DUP1
00002faa: RETURNDATACOPY
00002fab: RETURNDATASIZE
00002fac: PUSH1 0x00
00002fae: REVERT
00002faf: JUMPDEST
00002fb0: POP
00002fb1: POP
00002fb2: POP
00002fb3: POP
00002fb4: PUSH1 0x40
00002fb6: MLOAD
00002fb7: RETURNDATASIZE
00002fb8: PUSH1 0x20
00002fba: DUP2
00002fbb: LT
00002fbc: ISZERO
00002fbd: PUSH2 0x2fc5
00002fc0: JUMPI
00002fc1: PUSH1 0x00
00002fc3: DUP1
00002fc4: REVERT
00002fc5: JUMPDEST
00002fc6: POP
00002fc7: MLOAD
00002fc8: PUSH1 0x40
00002fca: MLOAD
00002fcb: PUSH1 0x01
00002fcd: PUSH1 0x01
00002fcf: PUSH1 0xe0
00002fd1: SHL
00002fd2: SUB
00002fd3: NOT
00002fd4: PUSH1 0xe0
00002fd6: DUP8
00002fd7: SWAP1
00002fd8: SHL
00002fd9: AND
00002fda: DUP2
00002fdb: MSTORE
00002fdc: PUSH1 0x04
00002fde: DUP2
00002fdf: ADD
00002fe0: DUP6
00002fe1: DUP2
00002fe2: MSTORE
00002fe3: PUSH1 0x24
00002fe5: DUP3
00002fe6: ADD
00002fe7: DUP6
00002fe8: SWAP1
00002fe9: MSTORE
00002fea: PUSH1 0x64
00002fec: DUP3
00002fed: ADD
00002fee: DUP4
00002fef: SWAP1
00002ff0: MSTORE
00002ff1: PUSH1 0x80
00002ff3: PUSH1 0x44
00002ff5: DUP4
00002ff6: ADD
00002ff7: SWAP1
00002ff8: DUP2
00002ff9: MSTORE
00002ffa: DUP5
00002ffb: MLOAD
00002ffc: PUSH1 0x84
00002ffe: DUP5
00002fff: ADD
00003000: MSTORE
00003001: DUP5
00003002: MLOAD
00003003: SWAP2
00003004: SWAP3
00003005: SWAP1
00003006: SWAP2
00003007: PUSH1 0xa4
00003009: SWAP1
0000300a: SWAP2
0000300b: ADD
0000300c: SWAP1
0000300d: PUSH1 0x20
0000300f: DUP7
00003010: ADD
00003011: SWAP1
00003012: DUP1
00003013: DUP4
00003014: DUP4
00003015: PUSH1 0x00
00003017: JUMPDEST
00003018: DUP4
00003019: DUP2
0000301a: LT
0000301b: ISZERO
0000301c: PUSH2 0x302f
0000301f: JUMPI
00003020: DUP2
00003021: DUP2
00003022: ADD
00003023: MLOAD
00003024: DUP4
00003025: DUP3
00003026: ADD
00003027: MSTORE
00003028: PUSH1 0x20
0000302a: ADD
0000302b: PUSH2 0x3017
0000302e: JUMP
0000302f: JUMPDEST
00003030: POP
00003031: POP
00003032: POP
00003033: POP
00003034: SWAP1
00003035: POP
00003036: SWAP1
00003037: DUP2
00003038: ADD
00003039: SWAP1
0000303a: PUSH1 0x1f
0000303c: AND
0000303d: DUP1
0000303e: ISZERO
0000303f: PUSH2 0x305c
00003042: JUMPI
00003043: DUP1
00003044: DUP3
00003045: SUB
00003046: DUP1
00003047: MLOAD
00003048: PUSH1 0x01
0000304a: DUP4
0000304b: PUSH1 0x20
0000304d: SUB
0000304e: PUSH2 0x0100
00003051: EXP
00003052: SUB
00003053: NOT
00003054: AND
00003055: DUP2
00003056: MSTORE
00003057: PUSH1 0x20
00003059: ADD
0000305a: SWAP2
0000305b: POP
0000305c: JUMPDEST
0000305d: POP
0000305e: SWAP6
0000305f: POP
00003060: POP
00003061: POP
00003062: POP
00003063: POP
00003064: POP
00003065: PUSH1 0x00
00003067: PUSH1 0x40
00003069: MLOAD
0000306a: DUP1
0000306b: DUP4
0000306c: SUB
0000306d: DUP2
0000306e: DUP7
0000306f: DUP1
00003070: EXTCODESIZE
00003071: ISZERO
00003072: DUP1
00003073: ISZERO
00003074: PUSH2 0x307c
00003077: JUMPI
00003078: PUSH1 0x00
0000307a: DUP1
0000307b: REVERT
0000307c: JUMPDEST
0000307d: POP
0000307e: GAS
0000307f: DELEGATECALL
00003080: ISZERO
00003081: DUP1
00003082: ISZERO
00003083: PUSH2 0x3090
00003086: JUMPI
00003087: RETURNDATASIZE
00003088: PUSH1 0x00
0000308a: DUP1
0000308b: RETURNDATACOPY
0000308c: RETURNDATASIZE
0000308d: PUSH1 0x00
0000308f: REVERT
00003090: JUMPDEST
00003091: POP
00003092: POP
00003093: PUSH1 0x40
00003095: MLOAD
00003096: DUP5
00003097: SWAP3
00003098: POP
00003099: PUSH32 0x6124f28ae7240a98a8ad3410bcd1f3bb0a113fc9834d5bd16426f9e1bd698fde
000030ba: SWAP2
000030bb: POP
000030bc: PUSH1 0x00
000030be: SWAP1
000030bf: LOG2
000030c0: POP
000030c1: POP
000030c2: JUMP
000030c3: JUMPDEST
000030c4: PUSH1 0x13
000030c6: SLOAD
000030c7: SWAP1
000030c8: JUMP
000030c9: JUMPDEST
000030ca: PUSH1 0x60
000030cc: PUSH2 0x0f84
000030cf: PUSH1 0x0b
000030d1: DUP4
000030d2: PUSH4 0xffffffff
000030d7: PUSH2 0x39af
000030da: AND
000030db: JUMP
000030dc: JUMPDEST
000030dd: PUSH1 0x0e
000030df: SLOAD
000030e0: SWAP1
000030e1: JUMP
000030e2: JUMPDEST
000030e3: PUSH1 0x00
000030e5: DUP1
000030e6: DUP4
000030e7: PUSH1 0x02
000030e9: ADD
000030ea: DUP4
000030eb: PUSH1 0x40
000030ed: MLOAD
000030ee: DUP1
000030ef: DUP3
000030f0: DUP1
000030f1: MLOAD
000030f2: SWAP1
000030f3: PUSH1 0x20
000030f5: ADD
000030f6: SWAP1
000030f7: DUP1
000030f8: DUP4
000030f9: DUP4
000030fa: JUMPDEST
000030fb: PUSH1 0x20
000030fd: DUP4
000030fe: LT
000030ff: PUSH2 0x3119
00003102: JUMPI
00003103: DUP1
00003104: MLOAD
00003105: DUP3
00003106: MSTORE
00003107: PUSH1 0x1f
00003109: NOT
0000310a: SWAP1
0000310b: SWAP3
0000310c: ADD
0000310d: SWAP2
0000310e: PUSH1 0x20
00003110: SWAP2
00003111: DUP3
00003112: ADD
00003113: SWAP2
00003114: ADD
00003115: PUSH2 0x30fa
00003118: JUMP
00003119: JUMPDEST
0000311a: MLOAD
0000311b: DUP2
0000311c: MLOAD
0000311d: PUSH1 0x20
0000311f: SWAP4
00003120: DUP5
00003121: SUB
00003122: PUSH2 0x0100
00003125: EXP
00003126: PUSH1 0x00
00003128: NOT
00003129: ADD
0000312a: DUP1
0000312b: NOT
0000312c: SWAP1
0000312d: SWAP3
0000312e: AND
0000312f: SWAP2
00003130: AND
00003131: OR
00003132: SWAP1
00003133: MSTORE
00003134: SWAP3
00003135: ADD
00003136: SWAP5
00003137: DUP6
00003138: MSTORE
00003139: POP
0000313a: PUSH1 0x40
0000313c: MLOAD
0000313d: SWAP4
0000313e: DUP5
0000313f: SWAP1
00003140: SUB
00003141: ADD
00003142: SWAP1
00003143: SWAP3
00003144: KECCAK256
00003145: SLOAD
00003146: SWAP3
00003147: SWAP1
00003148: SWAP3
00003149: GT
0000314a: SWAP6
0000314b: SWAP5
0000314c: POP
0000314d: POP
0000314e: POP
0000314f: POP
00003150: POP
00003151: JUMP
00003152: JUMPDEST
00003153: PUSH1 0x00
00003155: PUSH1 0x29
00003157: SLOAD
00003158: PUSH1 0x00
0000315a: EQ
0000315b: ISZERO
0000315c: DUP1
0000315d: ISZERO
0000315e: PUSH2 0x15d4
00003161: JUMPI
00003162: POP
00003163: POP
00003164: PUSH1 0x22
00003166: SLOAD
00003167: PUSH1 0x29
00003169: SLOAD
0000316a: ADD
0000316b: NUMBER
0000316c: GT
0000316d: SWAP1
0000316e: JUMP
0000316f: JUMPDEST
00003170: PUSH2 0x3177
00003173: PUSH2 0x17c8
00003176: JUMP
00003177: JUMPDEST
00003178: ISZERO
00003179: PUSH2 0x31ba
0000317c: JUMPI
0000317d: PUSH1 0x40
0000317f: DUP1
00003180: MLOAD
00003181: PUSH3 0x461bcd
00003185: PUSH1 0xe5
00003187: SHL
00003188: DUP2
00003189: MSTORE
0000318a: PUSH1 0x20
0000318c: PUSH1 0x04
0000318e: DUP3
0000318f: ADD
00003190: MSTORE
00003191: PUSH1 0x0e
00003193: PUSH1 0x24
00003195: DUP3
00003196: ADD
00003197: MSTORE
00003198: PUSH14 0x426561636f6e2069732062757379
000031a7: PUSH1 0x90
000031a9: SHL
000031aa: PUSH1 0x44
000031ac: DUP3
000031ad: ADD
000031ae: MSTORE
000031af: SWAP1
000031b0: MLOAD
000031b1: SWAP1
000031b2: DUP2
000031b3: SWAP1
000031b4: SUB
000031b5: PUSH1 0x64
000031b7: ADD
000031b8: SWAP1
000031b9: REVERT
000031ba: JUMPDEST
000031bb: DUP4
000031bc: MLOAD
000031bd: PUSH1 0x20
000031bf: DUP1
000031c0: DUP7
000031c1: ADD
000031c2: SWAP2
000031c3: SWAP1
000031c4: SWAP2
000031c5: KECCAK256
000031c6: PUSH1 0x40
000031c8: DUP1
000031c9: MLOAD
000031ca: PUSH4 0x1bf6b567
000031cf: PUSH1 0xe1
000031d1: SHL
000031d2: DUP2
000031d3: MSTORE
000031d4: PUSH1 0x0b
000031d6: PUSH1 0x04
000031d8: DUP3
000031d9: ADD
000031da: MSTORE
000031db: PUSH1 0x24
000031dd: DUP2
000031de: ADD
000031df: SWAP3
000031e0: SWAP1
000031e1: SWAP3
000031e2: MSTORE
000031e3: MLOAD
000031e4: PUSH1 0x00
000031e6: SWAP3
000031e7: PUSH20 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
000031fc: SWAP3
000031fd: PUSH4 0x37ed6ace
00003202: SWAP3
00003203: PUSH1 0x44
00003205: DUP1
00003206: DUP4
00003207: ADD
00003208: SWAP4
00003209: SWAP3
0000320a: DUP3
0000320b: SWAP1
0000320c: SUB
0000320d: ADD
0000320e: DUP2
0000320f: DUP7
00003210: DUP1
00003211: EXTCODESIZE
00003212: ISZERO
00003213: DUP1
00003214: ISZERO
00003215: PUSH2 0x321d
00003218: JUMPI
00003219: PUSH1 0x00
0000321b: DUP1
0000321c: REVERT
0000321d: JUMPDEST
0000321e: POP
0000321f: GAS
00003220: DELEGATECALL
00003221: ISZERO
00003222: DUP1
00003223: ISZERO
00003224: PUSH2 0x3231
00003227: JUMPI
00003228: RETURNDATASIZE
00003229: PUSH1 0x00
0000322b: DUP1
0000322c: RETURNDATACOPY
0000322d: RETURNDATASIZE
0000322e: PUSH1 0x00
00003230: REVERT
00003231: JUMPDEST
00003232: POP
00003233: POP
00003234: POP
00003235: POP
00003236: PUSH1 0x40
00003238: MLOAD
00003239: RETURNDATASIZE
0000323a: PUSH1 0x20
0000323c: DUP2
0000323d: LT
0000323e: ISZERO
0000323f: PUSH2 0x3247
00003242: JUMPI
00003243: PUSH1 0x00
00003245: DUP1
00003246: REVERT
00003247: JUMPDEST
00003248: POP
00003249: MLOAD
0000324a: PUSH1 0x28
0000324c: DUP8
0000324d: SWAP1
0000324e: SSTORE
0000324f: NUMBER
00003250: PUSH1 0x29
00003252: SSTORE
00003253: PUSH1 0x2c
00003255: DUP5
00003256: SWAP1
00003257: SSTORE
00003258: PUSH1 0x2d
0000325a: DUP4
0000325b: SWAP1
0000325c: SSTORE
0000325d: PUSH1 0x2a
0000325f: DUP2
00003260: SWAP1
00003261: SSTORE
00003262: DUP6
00003263: MLOAD
00003264: SWAP1
00003265: SWAP2
00003266: POP
00003267: PUSH2 0x3277
0000326a: SWAP1
0000326b: PUSH1 0x2b
0000326d: SWAP1
0000326e: PUSH1 0x20
00003270: DUP9
00003271: ADD
00003272: SWAP1
00003273: PUSH2 0x4138
00003276: JUMP
00003277: JUMPDEST
00003278: POP
00003279: PUSH1 0x2e
0000327b: DUP1
0000327c: SLOAD
0000327d: PUSH1 0x01
0000327f: PUSH1 0x01
00003281: PUSH1 0xa0
00003283: SHL
00003284: SUB
00003285: NOT
00003286: AND
00003287: PUSH1 0x01
00003289: PUSH1 0x01
0000328b: PUSH1 0xa0
0000328d: SHL
0000328e: SUB
0000328f: DUP7
00003290: AND
00003291: OR
00003292: SWAP1
00003293: SSTORE
00003294: PUSH1 0x60
00003296: PUSH2 0x32a0
00003299: PUSH1 0x0b
0000329b: DUP4
0000329c: PUSH2 0x39af
0000329f: JUMP
000032a0: JUMPDEST
000032a1: SWAP1
000032a2: POP
000032a3: PUSH32 0xf3a8bf09e4f9146a48f9b91226985ac8d83d971beb4fc9ffdc569790e85a97e4
000032c4: DUP7
000032c5: DUP3
000032c6: PUSH1 0x40
000032c8: MLOAD
000032c9: DUP1
000032ca: DUP1
000032cb: PUSH1 0x20
000032cd: ADD
000032ce: DUP1
000032cf: PUSH1 0x20
000032d1: ADD
000032d2: DUP4
000032d3: DUP2
000032d4: SUB
000032d5: DUP4
000032d6: MSTORE
000032d7: DUP6
000032d8: DUP2
000032d9: DUP2
000032da: MLOAD
000032db: DUP2
000032dc: MSTORE
000032dd: PUSH1 0x20
000032df: ADD
000032e0: SWAP2
000032e1: POP
000032e2: DUP1
000032e3: MLOAD
000032e4: SWAP1
000032e5: PUSH1 0x20
000032e7: ADD
000032e8: SWAP1
000032e9: DUP1
000032ea: DUP4
000032eb: DUP4
000032ec: PUSH1 0x00
000032ee: JUMPDEST
000032ef: DUP4
000032f0: DUP2
000032f1: LT
000032f2: ISZERO
000032f3: PUSH2 0x3306
000032f6: JUMPI
000032f7: DUP2
000032f8: DUP2
000032f9: ADD
000032fa: MLOAD
000032fb: DUP4
000032fc: DUP3
000032fd: ADD
000032fe: MSTORE
000032ff: PUSH1 0x20
00003301: ADD
00003302: PUSH2 0x32ee
00003305: JUMP
00003306: JUMPDEST
00003307: POP
00003308: POP
00003309: POP
0000330a: POP
0000330b: SWAP1
0000330c: POP
0000330d: SWAP1
0000330e: DUP2
0000330f: ADD
00003310: SWAP1
00003311: PUSH1 0x1f
00003313: AND
00003314: DUP1
00003315: ISZERO
00003316: PUSH2 0x3333
00003319: JUMPI
0000331a: DUP1
0000331b: DUP3
0000331c: SUB
0000331d: DUP1
0000331e: MLOAD
0000331f: PUSH1 0x01
00003321: DUP4
00003322: PUSH1 0x20
00003324: SUB
00003325: PUSH2 0x0100
00003328: EXP
00003329: SUB
0000332a: NOT
0000332b: AND
0000332c: DUP2
0000332d: MSTORE
0000332e: PUSH1 0x20
00003330: ADD
00003331: SWAP2
00003332: POP
00003333: JUMPDEST
00003334: POP
00003335: DUP4
00003336: DUP2
00003337: SUB
00003338: DUP3
00003339: MSTORE
0000333a: DUP5
0000333b: MLOAD
0000333c: DUP2
0000333d: MSTORE
0000333e: DUP5
0000333f: MLOAD
00003340: PUSH1 0x20
00003342: SWAP2
00003343: DUP3
00003344: ADD
00003345: SWAP2
00003346: DUP7
00003347: ADD
00003348: SWAP1
00003349: DUP1
0000334a: DUP4
0000334b: DUP4
0000334c: PUSH1 0x00
0000334e: JUMPDEST
0000334f: DUP4
00003350: DUP2
00003351: LT
00003352: ISZERO
00003353: PUSH2 0x3366
00003356: JUMPI
00003357: DUP2
00003358: DUP2
00003359: ADD
0000335a: MLOAD
0000335b: DUP4
0000335c: DUP3
0000335d: ADD
0000335e: MSTORE
0000335f: PUSH1 0x20
00003361: ADD
00003362: PUSH2 0x334e
00003365: JUMP
00003366: JUMPDEST
00003367: POP
00003368: POP
00003369: POP
0000336a: POP
0000336b: SWAP1
0000336c: POP
0000336d: SWAP1
0000336e: DUP2
0000336f: ADD
00003370: SWAP1
00003371: PUSH1 0x1f
00003373: AND
00003374: DUP1
00003375: ISZERO
00003376: PUSH2 0x3393
00003379: JUMPI
0000337a: DUP1
0000337b: DUP3
0000337c: SUB
0000337d: DUP1
0000337e: MLOAD
0000337f: PUSH1 0x01
00003381: DUP4
00003382: PUSH1 0x20
00003384: SUB
00003385: PUSH2 0x0100
00003388: EXP
00003389: SUB
0000338a: NOT
0000338b: AND
0000338c: DUP2
0000338d: MSTORE
0000338e: PUSH1 0x20
00003390: ADD
00003391: SWAP2
00003392: POP
00003393: JUMPDEST
00003394: POP
00003395: SWAP5
00003396: POP
00003397: POP
00003398: POP
00003399: POP
0000339a: POP
0000339b: PUSH1 0x40
0000339d: MLOAD
0000339e: DUP1
0000339f: SWAP2
000033a0: SUB
000033a1: SWAP1
000033a2: LOG1
000033a3: POP
000033a4: POP
000033a5: POP
000033a6: POP
000033a7: POP
000033a8: POP
000033a9: POP
000033aa: JUMP
000033ab: JUMPDEST
000033ac: PUSH1 0x00
000033ae: DUP3
000033af: PUSH2 0x33ba
000033b2: JUMPI
000033b3: POP
000033b4: PUSH1 0x00
000033b6: PUSH2 0x0f84
000033b9: JUMP
000033ba: JUMPDEST
000033bb: DUP3
000033bc: DUP3
000033bd: MUL
000033be: DUP3
000033bf: DUP5
000033c0: DUP3
000033c1: DUP2
000033c2: PUSH2 0x33c7
000033c5: JUMPI
000033c6: INVALID
000033c7: JUMPDEST
000033c8: DIV
000033c9: EQ
000033ca: PUSH2 0x3404
000033cd: JUMPI
000033ce: PUSH1 0x40
000033d0: MLOAD
000033d1: PUSH3 0x461bcd
000033d5: PUSH1 0xe5
000033d7: SHL
000033d8: DUP2
000033d9: MSTORE
000033da: PUSH1 0x04
000033dc: ADD
000033dd: DUP1
000033de: DUP1
000033df: PUSH1 0x20
000033e1: ADD
000033e2: DUP3
000033e3: DUP2
000033e4: SUB
000033e5: DUP3
000033e6: MSTORE
000033e7: PUSH1 0x21
000033e9: DUP2
000033ea: MSTORE
000033eb: PUSH1 0x20
000033ed: ADD
000033ee: DUP1
000033ef: PUSH2 0x41d1
000033f2: PUSH1 0x21
000033f4: SWAP2
000033f5: CODECOPY
000033f6: PUSH1 0x40
000033f8: ADD
000033f9: SWAP2
000033fa: POP
000033fb: POP
000033fc: PUSH1 0x40
000033fe: MLOAD
000033ff: DUP1
00003400: SWAP2
00003401: SUB
00003402: SWAP1
00003403: REVERT
00003404: JUMPDEST
00003405: SWAP4
00003406: SWAP3
00003407: POP
00003408: POP
00003409: POP
0000340a: JUMP
0000340b: JUMPDEST
0000340c: PUSH1 0x1e
0000340e: SLOAD
0000340f: GASPRICE
00003410: ISZERO
00003411: DUP1
00003412: ISZERO
00003413: SWAP1
00003414: PUSH2 0x341e
00003417: JUMPI
00003418: POP
00003419: PUSH1 0x1e
0000341b: SLOAD
0000341c: GASPRICE
0000341d: LT
0000341e: JUMPDEST
0000341f: ISZERO
00003420: PUSH2 0x3426
00003423: JUMPI
00003424: POP
00003425: GASPRICE
00003426: JUMPDEST
00003427: PUSH1 0x24
00003429: SLOAD
0000342a: PUSH1 0x00
0000342c: SWAP1
0000342d: PUSH2 0x343c
00003430: SWAP1
00003431: DUP4
00003432: PUSH4 0xffffffff
00003437: PUSH2 0x33ab
0000343a: AND
0000343b: JUMP
0000343c: JUMPDEST
0000343d: PUSH1 0x1b
0000343f: SLOAD
00003440: PUSH1 0x40
00003442: DUP1
00003443: MLOAD
00003444: PUSH4 0xba7bffd3
00003449: PUSH1 0xe0
0000344b: SHL
0000344c: DUP2
0000344d: MSTORE
0000344e: CALLER
0000344f: PUSH1 0x04
00003451: DUP3
00003452: ADD
00003453: MSTORE
00003454: SWAP1
00003455: MLOAD
00003456: SWAP3
00003457: SWAP4
00003458: POP
00003459: PUSH1 0x00
0000345b: SWAP3
0000345c: PUSH1 0x01
0000345e: PUSH1 0x01
00003460: PUSH1 0xa0
00003462: SHL
00003463: SUB
00003464: SWAP1
00003465: SWAP3
00003466: AND
00003467: SWAP2
00003468: PUSH4 0xba7bffd3
0000346d: SWAP2
0000346e: PUSH1 0x24
00003470: DUP1
00003471: DUP3
00003472: ADD
00003473: SWAP3
00003474: PUSH1 0x20
00003476: SWAP3
00003477: SWAP1
00003478: SWAP2
00003479: SWAP1
0000347a: DUP3
0000347b: SWAP1
0000347c: SUB
0000347d: ADD
0000347e: DUP2
0000347f: DUP7
00003480: DUP1
00003481: EXTCODESIZE
00003482: ISZERO
00003483: DUP1
00003484: ISZERO
00003485: PUSH2 0x348d
00003488: JUMPI
00003489: PUSH1 0x00
0000348b: DUP1
0000348c: REVERT
0000348d: JUMPDEST
0000348e: POP
0000348f: GAS
00003490: STATICCALL
00003491: ISZERO
00003492: DUP1
00003493: ISZERO
00003494: PUSH2 0x34a1
00003497: JUMPI
00003498: RETURNDATASIZE
00003499: PUSH1 0x00
0000349b: DUP1
0000349c: RETURNDATACOPY
0000349d: RETURNDATASIZE
0000349e: PUSH1 0x00
000034a0: REVERT
000034a1: JUMPDEST
000034a2: POP
000034a3: POP
000034a4: POP
000034a5: POP
000034a6: PUSH1 0x40
000034a8: MLOAD
000034a9: RETURNDATASIZE
000034aa: PUSH1 0x20
000034ac: DUP2
000034ad: LT
000034ae: ISZERO
000034af: PUSH2 0x34b7
000034b2: JUMPI
000034b3: PUSH1 0x00
000034b5: DUP1
000034b6: REVERT
000034b7: JUMPDEST
000034b8: POP
000034b9: MLOAD
000034ba: PUSH1 0x26
000034bc: SLOAD
000034bd: SWAP1
000034be: SWAP2
000034bf: POP
000034c0: DUP3
000034c1: LT
000034c2: ISZERO
000034c3: PUSH2 0x35a4
000034c6: JUMPI
000034c7: PUSH1 0x26
000034c9: SLOAD
000034ca: PUSH1 0x00
000034cc: SWAP1
000034cd: PUSH2 0x34dc
000034d0: SWAP1
000034d1: DUP5
000034d2: PUSH4 0xffffffff
000034d7: PUSH2 0x371a
000034da: AND
000034db: JUMP
000034dc: JUMPDEST
000034dd: PUSH1 0x00
000034df: PUSH1 0x26
000034e1: DUP2
000034e2: SWAP1
000034e3: SSTORE
000034e4: PUSH1 0x40
000034e6: MLOAD
000034e7: SWAP2
000034e8: SWAP3
000034e9: POP
000034ea: PUSH1 0x01
000034ec: PUSH1 0x01
000034ee: PUSH1 0xa0
000034f0: SHL
000034f1: SUB
000034f2: DUP5
000034f3: AND
000034f4: SWAP2
000034f5: DUP6
000034f6: SWAP2
000034f7: DUP2
000034f8: DUP2
000034f9: DUP2
000034fa: DUP6
000034fb: DUP8
000034fc: GAS
000034fd: CALL
000034fe: SWAP3
000034ff: POP
00003500: POP
00003501: POP
00003502: RETURNDATASIZE
00003503: DUP1
00003504: PUSH1 0x00
00003506: DUP2
00003507: EQ
00003508: PUSH2 0x352d
0000350b: JUMPI
0000350c: PUSH1 0x40
0000350e: MLOAD
0000350f: SWAP2
00003510: POP
00003511: PUSH1 0x1f
00003513: NOT
00003514: PUSH1 0x3f
00003516: RETURNDATASIZE
00003517: ADD
00003518: AND
00003519: DUP3
0000351a: ADD
0000351b: PUSH1 0x40
0000351d: MSTORE
0000351e: RETURNDATASIZE
0000351f: DUP3
00003520: MSTORE
00003521: RETURNDATASIZE
00003522: PUSH1 0x00
00003524: PUSH1 0x20
00003526: DUP5
00003527: ADD
00003528: RETURNDATACOPY
00003529: PUSH2 0x3532
0000352c: JUMP
0000352d: JUMPDEST
0000352e: PUSH1 0x60
00003530: SWAP2
00003531: POP
00003532: JUMPDEST
00003533: POP
00003534: POP
00003535: POP
00003536: PUSH1 0x27
00003538: PUSH1 0x00
0000353a: SWAP1
0000353b: SLOAD
0000353c: SWAP1
0000353d: PUSH2 0x0100
00003540: EXP
00003541: SWAP1
00003542: DIV
00003543: PUSH1 0x01
00003545: PUSH1 0x01
00003547: PUSH1 0xa0
00003549: SHL
0000354a: SUB
0000354b: AND
0000354c: PUSH1 0x01
0000354e: PUSH1 0x01
00003550: PUSH1 0xa0
00003552: SHL
00003553: SUB
00003554: AND
00003555: PUSH4 0x4611b648
0000355a: DUP3
0000355b: PUSH1 0x40
0000355d: MLOAD
0000355e: DUP3
0000355f: PUSH4 0xffffffff
00003564: AND
00003565: PUSH1 0xe0
00003567: SHL
00003568: DUP2
00003569: MSTORE
0000356a: PUSH1 0x04
0000356c: ADD
0000356d: PUSH1 0x00
0000356f: PUSH1 0x40
00003571: MLOAD
00003572: DUP1
00003573: DUP4
00003574: SUB
00003575: DUP2
00003576: DUP6
00003577: DUP9
00003578: DUP1
00003579: EXTCODESIZE
0000357a: ISZERO
0000357b: DUP1
0000357c: ISZERO
0000357d: PUSH2 0x3585
00003580: JUMPI
00003581: PUSH1 0x00
00003583: DUP1
00003584: REVERT
00003585: JUMPDEST
00003586: POP
00003587: GAS
00003588: CALL
00003589: ISZERO
0000358a: DUP1
0000358b: ISZERO
0000358c: PUSH2 0x3599
0000358f: JUMPI
00003590: RETURNDATASIZE
00003591: PUSH1 0x00
00003593: DUP1
00003594: RETURNDATACOPY
00003595: RETURNDATASIZE
00003596: PUSH1 0x00
00003598: REVERT
00003599: JUMPDEST
0000359a: POP
0000359b: POP
0000359c: POP
0000359d: POP
0000359e: POP
0000359f: POP
000035a0: PUSH2 0x15b6
000035a3: JUMP
000035a4: JUMPDEST
000035a5: PUSH1 0x26
000035a7: DUP1
000035a8: SLOAD
000035a9: PUSH1 0x00
000035ab: SWAP2
000035ac: DUP3
000035ad: SWAP1
000035ae: SSTORE
000035af: PUSH1 0x40
000035b1: MLOAD
000035b2: SWAP1
000035b3: SWAP4
000035b4: POP
000035b5: PUSH1 0x01
000035b7: PUSH1 0x01
000035b9: PUSH1 0xa0
000035bb: SHL
000035bc: SUB
000035bd: DUP4
000035be: AND
000035bf: SWAP2
000035c0: DUP5
000035c1: SWAP2
000035c2: SWAP1
000035c3: DUP2
000035c4: DUP2
000035c5: DUP2
000035c6: DUP6
000035c7: DUP8
000035c8: GAS
000035c9: CALL
000035ca: SWAP3
000035cb: POP
000035cc: POP
000035cd: POP
000035ce: RETURNDATASIZE
000035cf: DUP1
000035d0: PUSH1 0x00
000035d2: DUP2
000035d3: EQ
000035d4: PUSH2 0x1e59
000035d7: JUMPI
000035d8: PUSH1 0x40
000035da: MLOAD
000035db: SWAP2
000035dc: POP
000035dd: PUSH1 0x1f
000035df: NOT
000035e0: PUSH1 0x3f
000035e2: RETURNDATASIZE
000035e3: ADD
000035e4: AND
000035e5: DUP3
000035e6: ADD
000035e7: PUSH1 0x40
000035e9: MSTORE
000035ea: RETURNDATASIZE
000035eb: DUP3
000035ec: MSTORE
000035ed: RETURNDATASIZE
000035ee: PUSH1 0x00
000035f0: PUSH1 0x20
000035f2: DUP5
000035f3: ADD
000035f4: RETURNDATACOPY
000035f5: PUSH2 0x1e59
000035f8: JUMP
000035f9: JUMPDEST
000035fa: PUSH1 0x00
000035fc: DUP3
000035fd: PUSH1 0x03
000035ff: ADD
00003600: DUP3
00003601: DUP2
00003602: SLOAD
00003603: DUP2
00003604: LT
00003605: PUSH2 0x360a
00003608: JUMPI
00003609: INVALID
0000360a: JUMPDEST
0000360b: PUSH1 0x00
0000360d: SWAP2
0000360e: DUP3
0000360f: MSTORE
00003610: PUSH1 0x20
00003612: SWAP1
00003613: SWAP2
00003614: KECCAK256
00003615: PUSH1 0x03
00003617: SWAP1
00003618: SWAP2
00003619: MUL
0000361a: ADD
0000361b: PUSH1 0x02
0000361d: ADD
0000361e: SLOAD
0000361f: PUSH1 0xff
00003621: AND
00003622: SWAP4
00003623: SWAP3
00003624: POP
00003625: POP
00003626: POP
00003627: JUMP
00003628: JUMPDEST
00003629: PUSH1 0x00
0000362b: PUSH2 0x3404
0000362e: DUP4
0000362f: DUP4
00003630: PUSH1 0x40
00003632: MLOAD
00003633: DUP1
00003634: PUSH1 0x40
00003636: ADD
00003637: PUSH1 0x40
00003639: MSTORE
0000363a: DUP1
0000363b: PUSH1 0x1a
0000363d: DUP2
0000363e: MSTORE
0000363f: PUSH1 0x20
00003641: ADD
00003642: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00003663: DUP2
00003664: MSTORE
00003665: POP
00003666: PUSH2 0x4025
00003669: JUMP
0000366a: JUMPDEST
0000366b: PUSH1 0x00
0000366d: DUP1
0000366e: JUMPDEST
0000366f: DUP4
00003670: MLOAD
00003671: DUP2
00003672: LT
00003673: ISZERO
00003674: PUSH2 0x36b6
00003677: JUMPI
00003678: DUP4
00003679: DUP2
0000367a: DUP2
0000367b: MLOAD
0000367c: DUP2
0000367d: LT
0000367e: PUSH2 0x3683
00003681: JUMPI
00003682: INVALID
00003683: JUMPDEST
00003684: PUSH1 0x20
00003686: MUL
00003687: PUSH1 0x20
00003689: ADD
0000368a: ADD
0000368b: MLOAD
0000368c: PUSH1 0x01
0000368e: PUSH1 0x01
00003690: PUSH1 0xa0
00003692: SHL
00003693: SUB
00003694: AND
00003695: DUP4
00003696: PUSH1 0x01
00003698: PUSH1 0x01
0000369a: PUSH1 0xa0
0000369c: SHL
0000369d: SUB
0000369e: AND
0000369f: EQ
000036a0: ISZERO
000036a1: PUSH2 0x36ae
000036a4: JUMPI
000036a5: PUSH1 0x01
000036a7: SWAP2
000036a8: POP
000036a9: POP
000036aa: PUSH2 0x0f84
000036ad: JUMP
000036ae: JUMPDEST
000036af: PUSH1 0x01
000036b1: ADD
000036b2: PUSH2 0x366e
000036b5: JUMP
000036b6: JUMPDEST
000036b7: POP
000036b8: PUSH1 0x00
000036ba: SWAP4
000036bb: SWAP3
000036bc: POP
000036bd: POP
000036be: POP
000036bf: JUMP
000036c0: JUMPDEST
000036c1: PUSH1 0x00
000036c3: DUP3
000036c4: DUP3
000036c5: ADD
000036c6: DUP4
000036c7: DUP2
000036c8: LT
000036c9: ISZERO
000036ca: PUSH2 0x3404
000036cd: JUMPI
000036ce: PUSH1 0x40
000036d0: DUP1
000036d1: MLOAD
000036d2: PUSH3 0x461bcd
000036d6: PUSH1 0xe5
000036d8: SHL
000036d9: DUP2
000036da: MSTORE
000036db: PUSH1 0x20
000036dd: PUSH1 0x04
000036df: DUP3
000036e0: ADD
000036e1: MSTORE
000036e2: PUSH1 0x1b
000036e4: PUSH1 0x24
000036e6: DUP3
000036e7: ADD
000036e8: MSTORE
000036e9: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
0000370a: PUSH1 0x44
0000370c: DUP3
0000370d: ADD
0000370e: MSTORE
0000370f: SWAP1
00003710: MLOAD
00003711: SWAP1
00003712: DUP2
00003713: SWAP1
00003714: SUB
00003715: PUSH1 0x64
00003717: ADD
00003718: SWAP1
00003719: REVERT
0000371a: JUMPDEST
0000371b: PUSH1 0x00
0000371d: PUSH2 0x3404
00003720: DUP4
00003721: DUP4
00003722: PUSH1 0x40
00003724: MLOAD
00003725: DUP1
00003726: PUSH1 0x40
00003728: ADD
00003729: PUSH1 0x40
0000372b: MSTORE
0000372c: DUP1
0000372d: PUSH1 0x1e
0000372f: DUP2
00003730: MSTORE
00003731: PUSH1 0x20
00003733: ADD
00003734: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
00003755: DUP2
00003756: MSTORE
00003757: POP
00003758: PUSH2 0x40c7
0000375b: JUMP
0000375c: JUMPDEST
0000375d: PUSH1 0x24
0000375f: SLOAD
00003760: PUSH1 0x1e
00003762: SLOAD
00003763: PUSH2 0x3771
00003766: SWAP2
00003767: PUSH4 0xffffffff
0000376c: PUSH2 0x33ab
0000376f: AND
00003770: JUMP
00003771: JUMPDEST
00003772: DUP2
00003773: LT
00003774: ISZERO
00003775: PUSH2 0x37bc
00003778: JUMPI
00003779: PUSH1 0x40
0000377b: DUP1
0000377c: MLOAD
0000377d: PUSH3 0x461bcd
00003781: PUSH1 0xe5
00003783: SHL
00003784: DUP2
00003785: MSTORE
00003786: PUSH1 0x20
00003788: PUSH1 0x04
0000378a: DUP3
0000378b: ADD
0000378c: MSTORE
0000378d: PUSH1 0x14
0000378f: PUSH1 0x24
00003791: DUP3
00003792: ADD
00003793: MSTORE
00003794: PUSH20 0x496e73756666696369656e7420444b4720666565
000037a9: PUSH1 0x60
000037ab: SHL
000037ac: PUSH1 0x44
000037ae: DUP3
000037af: ADD
000037b0: MSTORE
000037b1: SWAP1
000037b2: MLOAD
000037b3: SWAP1
000037b4: DUP2
000037b5: SWAP1
000037b6: SUB
000037b7: PUSH1 0x64
000037b9: ADD
000037ba: SWAP1
000037bb: REVERT
000037bc: JUMPDEST
000037bd: PUSH2 0x37c4
000037c0: PUSH2 0x1152
000037c3: JUMP
000037c4: JUMPDEST
000037c5: PUSH2 0x3815
000037c8: JUMPI
000037c9: PUSH1 0x40
000037cb: DUP1
000037cc: MLOAD
000037cd: PUSH3 0x461bcd
000037d1: PUSH1 0xe5
000037d3: SHL
000037d4: DUP2
000037d5: MSTORE
000037d6: PUSH1 0x20
000037d8: PUSH1 0x04
000037da: DUP3
000037db: ADD
000037dc: MSTORE
000037dd: PUSH1 0x1b
000037df: PUSH1 0x24
000037e1: DUP3
000037e2: ADD
000037e3: MSTORE
000037e4: PUSH32 0x47726f75702073656c656374696f6e20696e2070726f67726573730000000000
00003805: PUSH1 0x44
00003807: DUP3
00003808: ADD
00003809: MSTORE
0000380a: SWAP1
0000380b: MLOAD
0000380c: SWAP1
0000380d: DUP2
0000380e: SWAP1
0000380f: SUB
00003810: PUSH1 0x64
00003812: ADD
00003813: SWAP1
00003814: REVERT
00003815: JUMPDEST
00003816: PUSH1 0x26
00003818: SLOAD
00003819: ISZERO
0000381a: PUSH2 0x3887
0000381d: JUMPI
0000381e: PUSH1 0x26
00003820: DUP1
00003821: SLOAD
00003822: PUSH1 0x00
00003824: SWAP2
00003825: DUP3
00003826: SWAP1
00003827: SSTORE
00003828: PUSH1 0x27
0000382a: SLOAD
0000382b: PUSH1 0x40
0000382d: DUP1
0000382e: MLOAD
0000382f: PUSH4 0x08c236c9
00003834: PUSH1 0xe3
00003836: SHL
00003837: DUP2
00003838: MSTORE
00003839: SWAP1
0000383a: MLOAD
0000383b: SWAP3
0000383c: SWAP4
0000383d: PUSH1 0x01
0000383f: PUSH1 0x01
00003841: PUSH1 0xa0
00003843: SHL
00003844: SUB
00003845: SWAP1
00003846: SWAP3
00003847: AND
00003848: SWAP3
00003849: PUSH4 0x4611b648
0000384e: SWAP3
0000384f: DUP6
00003850: SWAP3
00003851: PUSH1 0x04
00003853: DUP1
00003854: DUP3
00003855: ADD
00003856: SWAP4
00003857: SWAP2
00003858: DUP3
00003859: SWAP1
0000385a: SUB
0000385b: ADD
0000385c: DUP2
0000385d: DUP6
0000385e: DUP9
0000385f: DUP1
00003860: EXTCODESIZE
00003861: ISZERO
00003862: DUP1
00003863: ISZERO
00003864: PUSH2 0x386c
00003867: JUMPI
00003868: PUSH1 0x00
0000386a: DUP1
0000386b: REVERT
0000386c: JUMPDEST
0000386d: POP
0000386e: GAS
0000386f: CALL
00003870: ISZERO
00003871: DUP1
00003872: ISZERO
00003873: PUSH2 0x3880
00003876: JUMPI
00003877: RETURNDATASIZE
00003878: PUSH1 0x00
0000387a: DUP1
0000387b: RETURNDATACOPY
0000387c: RETURNDATASIZE
0000387d: PUSH1 0x00
0000387f: REVERT
00003880: JUMPDEST
00003881: POP
00003882: POP
00003883: POP
00003884: POP
00003885: POP
00003886: POP
00003887: JUMPDEST
00003888: PUSH1 0x1b
0000388a: PUSH1 0x00
0000388c: SWAP1
0000388d: SLOAD
0000388e: SWAP1
0000388f: PUSH2 0x0100
00003892: EXP
00003893: SWAP1
00003894: DIV
00003895: PUSH1 0x01
00003897: PUSH1 0x01
00003899: PUSH1 0xa0
0000389b: SHL
0000389c: SUB
0000389d: AND
0000389e: PUSH1 0x01
000038a0: PUSH1 0x01
000038a2: PUSH1 0xa0
000038a4: SHL
000038a5: SUB
000038a6: AND
000038a7: PUSH4 0xec5ffac2
000038ac: PUSH1 0x40
000038ae: MLOAD
000038af: DUP2
000038b0: PUSH4 0xffffffff
000038b5: AND
000038b6: PUSH1 0xe0
000038b8: SHL
000038b9: DUP2
000038ba: MSTORE
000038bb: PUSH1 0x04
000038bd: ADD
000038be: PUSH1 0x20
000038c0: PUSH1 0x40
000038c2: MLOAD
000038c3: DUP1
000038c4: DUP4
000038c5: SUB
000038c6: DUP2
000038c7: DUP7
000038c8: DUP1
000038c9: EXTCODESIZE
000038ca: ISZERO
000038cb: DUP1
000038cc: ISZERO
000038cd: PUSH2 0x38d5
000038d0: JUMPI
000038d1: PUSH1 0x00
000038d3: DUP1
000038d4: REVERT
000038d5: JUMPDEST
000038d6: POP
000038d7: GAS
000038d8: STATICCALL
000038d9: ISZERO
000038da: DUP1
000038db: ISZERO
000038dc: PUSH2 0x38e9
000038df: JUMPI
000038e0: RETURNDATASIZE
000038e1: PUSH1 0x00
000038e3: DUP1
000038e4: RETURNDATACOPY
000038e5: RETURNDATASIZE
000038e6: PUSH1 0x00
000038e8: REVERT
000038e9: JUMPDEST
000038ea: POP
000038eb: POP
000038ec: POP
000038ed: POP
000038ee: PUSH1 0x40
000038f0: MLOAD
000038f1: RETURNDATASIZE
000038f2: PUSH1 0x20
000038f4: DUP2
000038f5: LT
000038f6: ISZERO
000038f7: PUSH2 0x38ff
000038fa: JUMPI
000038fb: PUSH1 0x00
000038fd: DUP1
000038fe: REVERT
000038ff: JUMPDEST
00003900: POP
00003901: MLOAD
00003902: PUSH1 0x07
00003904: SSTORE
00003905: PUSH1 0x40
00003907: DUP1
00003908: MLOAD
00003909: PUSH4 0x52f9b3b9
0000390e: PUSH1 0xe0
00003910: SHL
00003911: DUP2
00003912: MSTORE
00003913: PUSH1 0x01
00003915: PUSH1 0x04
00003917: DUP3
00003918: ADD
00003919: MSTORE
0000391a: PUSH1 0x24
0000391c: DUP2
0000391d: ADD
0000391e: DUP5
0000391f: SWAP1
00003920: MSTORE
00003921: SWAP1
00003922: MLOAD
00003923: PUSH20 0xf94d0d0471ae14b6310d94fa4f95e5fc9f3ffc17
00003938: SWAP2
00003939: PUSH4 0x52f9b3b9
0000393e: SWAP2
0000393f: PUSH1 0x44
00003941: DUP1
00003942: DUP4
00003943: ADD
00003944: SWAP3
00003945: PUSH1 0x00
00003947: SWAP3
00003948: SWAP2
00003949: SWAP1
0000394a: DUP3
0000394b: SWAP1
0000394c: SUB
0000394d: ADD
0000394e: DUP2
0000394f: DUP7
00003950: DUP1
00003951: EXTCODESIZE
00003952: ISZERO
00003953: DUP1
00003954: ISZERO
00003955: PUSH2 0x395d
00003958: JUMPI
00003959: PUSH1 0x00
0000395b: DUP1
0000395c: REVERT
0000395d: JUMPDEST
0000395e: POP
0000395f: GAS
00003960: DELEGATECALL
00003961: ISZERO
00003962: DUP1
00003963: ISZERO
00003964: PUSH2 0x3971
00003967: JUMPI
00003968: RETURNDATASIZE
00003969: PUSH1 0x00
0000396b: DUP1
0000396c: RETURNDATACOPY
0000396d: RETURNDATASIZE
0000396e: PUSH1 0x00
00003970: REVERT
00003971: JUMPDEST
00003972: POP
00003973: POP
00003974: PUSH1 0x40
00003976: DUP1
00003977: MLOAD
00003978: DUP6
00003979: DUP2
0000397a: MSTORE
0000397b: SWAP1
0000397c: MLOAD
0000397d: PUSH32 0x0769b89b6dbd96af3cdebccc7b68ce1e4ae748abc3e6b19a73b8b58460c57a94
0000399e: SWAP4
0000399f: POP
000039a0: SWAP1
000039a1: DUP2
000039a2: SWAP1
000039a3: SUB
000039a4: PUSH1 0x20
000039a6: ADD
000039a7: SWAP2
000039a8: POP
000039a9: LOG1
000039aa: PUSH1 0x26
000039ac: SSTORE
000039ad: POP
000039ae: JUMP
000039af: JUMPDEST
000039b0: PUSH1 0x60
000039b2: DUP3
000039b3: PUSH1 0x03
000039b5: ADD
000039b6: DUP3
000039b7: DUP2
000039b8: SLOAD
000039b9: DUP2
000039ba: LT
000039bb: PUSH2 0x39c0
000039be: JUMPI
000039bf: INVALID
000039c0: JUMPDEST
000039c1: PUSH1 0x00
000039c3: SWAP2
000039c4: DUP3
000039c5: MSTORE
000039c6: PUSH1 0x20
000039c8: SWAP2
000039c9: DUP3
000039ca: SWAP1
000039cb: KECCAK256
000039cc: PUSH1 0x03
000039ce: SWAP1
000039cf: SWAP2
000039d0: MUL
000039d1: ADD
000039d2: DUP1
000039d3: SLOAD
000039d4: PUSH1 0x40
000039d6: DUP1
000039d7: MLOAD
000039d8: PUSH1 0x1f
000039da: PUSH1 0x02
000039dc: PUSH1 0x00
000039de: NOT
000039df: PUSH2 0x0100
000039e2: PUSH1 0x01
000039e4: DUP8
000039e5: AND
000039e6: ISZERO
000039e7: MUL
000039e8: ADD
000039e9: SWAP1
000039ea: SWAP5
000039eb: AND
000039ec: SWAP4
000039ed: SWAP1
000039ee: SWAP4
000039ef: DIV
000039f0: SWAP3
000039f1: DUP4
000039f2: ADD
000039f3: DUP6
000039f4: SWAP1
000039f5: DIV
000039f6: DUP6
000039f7: MUL
000039f8: DUP2
000039f9: ADD
000039fa: DUP6
000039fb: ADD
000039fc: SWAP1
000039fd: SWAP2
000039fe: MSTORE
000039ff: DUP2
00003a00: DUP2
00003a01: MSTORE
00003a02: SWAP3
00003a03: DUP4
00003a04: ADD
00003a05: DUP3
00003a06: DUP3
00003a07: DUP1
00003a08: ISZERO
00003a09: PUSH2 0x3a53
00003a0c: JUMPI
00003a0d: DUP1
00003a0e: PUSH1 0x1f
00003a10: LT
00003a11: PUSH2 0x3a28
00003a14: JUMPI
00003a15: PUSH2 0x0100
00003a18: DUP1
00003a19: DUP4
00003a1a: SLOAD
00003a1b: DIV
00003a1c: MUL
00003a1d: DUP4
00003a1e: MSTORE
00003a1f: SWAP2
00003a20: PUSH1 0x20
00003a22: ADD
00003a23: SWAP2
00003a24: PUSH2 0x3a53
00003a27: JUMP
00003a28: JUMPDEST
00003a29: DUP3
00003a2a: ADD
00003a2b: SWAP2
00003a2c: SWAP1
00003a2d: PUSH1 0x00
00003a2f: MSTORE
00003a30: PUSH1 0x20
00003a32: PUSH1 0x00
00003a34: KECCAK256
00003a35: SWAP1
00003a36: JUMPDEST
00003a37: DUP2
00003a38: SLOAD
00003a39: DUP2
00003a3a: MSTORE
00003a3b: SWAP1
00003a3c: PUSH1 0x01
00003a3e: ADD
00003a3f: SWAP1
00003a40: PUSH1 0x20
00003a42: ADD
00003a43: DUP1
00003a44: DUP4
00003a45: GT
00003a46: PUSH2 0x3a36
00003a49: JUMPI
00003a4a: DUP3
00003a4b: SWAP1
00003a4c: SUB
00003a4d: PUSH1 0x1f
00003a4f: AND
00003a50: DUP3
00003a51: ADD
00003a52: SWAP2
00003a53: JUMPDEST
00003a54: POP
00003a55: POP
00003a56: POP
00003a57: POP
00003a58: POP
00003a59: SWAP1
00003a5a: POP
00003a5b: SWAP3
00003a5c: SWAP2
00003a5d: POP
00003a5e: POP
00003a5f: JUMP
00003a60: JUMPDEST
00003a61: PUSH1 0x00
00003a63: PUSH2 0x3a79
00003a66: PUSH1 0x1e
00003a68: SLOAD
00003a69: PUSH1 0x2d
00003a6b: SLOAD
00003a6c: PUSH2 0x3628
00003a6f: SWAP1
00003a70: SWAP2
00003a71: SWAP1
00003a72: PUSH4 0xffffffff
00003a77: AND
00003a78: JUMP
00003a79: JUMPDEST
00003a7a: SWAP1
00003a7b: POP
00003a7c: PUSH3 0x1e8480
00003a80: DUP2
00003a81: GT
00003a82: PUSH2 0x3a8b
00003a85: JUMPI
00003a86: DUP1
00003a87: PUSH2 0x3a90
00003a8a: JUMP
00003a8b: JUMPDEST
00003a8c: PUSH3 0x1e8480
00003a90: JUMPDEST
00003a91: PUSH1 0x2e
00003a93: SLOAD
00003a94: PUSH1 0x28
00003a96: SLOAD
00003a97: PUSH1 0x40
00003a99: DUP1
00003a9a: MLOAD
00003a9b: PUSH1 0x24
00003a9d: DUP1
00003a9e: DUP3
00003a9f: ADD
00003aa0: SWAP4
00003aa1: SWAP1
00003aa2: SWAP4
00003aa3: MSTORE
00003aa4: DUP2
00003aa5: MLOAD
00003aa6: DUP1
00003aa7: DUP3
00003aa8: SUB
00003aa9: SWAP1
00003aaa: SWAP4
00003aab: ADD
00003aac: DUP4
00003aad: MSTORE
00003aae: PUSH1 0x44
00003ab0: ADD
00003ab1: DUP2
00003ab2: MSTORE
00003ab3: PUSH1 0x20
00003ab5: DUP3
00003ab6: ADD
00003ab7: DUP1
00003ab8: MLOAD
00003ab9: PUSH1 0x01
00003abb: PUSH1 0x01
00003abd: PUSH1 0xe0
00003abf: SHL
00003ac0: SUB
00003ac1: AND
00003ac2: PUSH4 0x03f6a739
00003ac7: PUSH1 0xe2
00003ac9: SHL
00003aca: OR
00003acb: DUP2
00003acc: MSTORE
00003acd: SWAP1
00003ace: MLOAD
00003acf: DUP3
00003ad0: MLOAD
00003ad1: SWAP5
00003ad2: SWAP6
00003ad3: POP
00003ad4: PUSH1 0x60
00003ad6: SWAP5
00003ad7: PUSH1 0x01
00003ad9: PUSH1 0x01
00003adb: PUSH1 0xa0
00003add: SHL
00003ade: SUB
00003adf: SWAP1
00003ae0: SWAP5
00003ae1: AND
00003ae2: SWAP4
00003ae3: PUSH2 0x9c40
00003ae6: SWAP4
00003ae7: SWAP3
00003ae8: DUP3
00003ae9: SWAP2
00003aea: DUP1
00003aeb: DUP4
00003aec: DUP4
00003aed: JUMPDEST
00003aee: PUSH1 0x20
00003af0: DUP4
00003af1: LT
00003af2: PUSH2 0x3b0c
00003af5: JUMPI
00003af6: DUP1
00003af7: MLOAD
00003af8: DUP3
00003af9: MSTORE
00003afa: PUSH1 0x1f
00003afc: NOT
00003afd: SWAP1
00003afe: SWAP3
00003aff: ADD
00003b00: SWAP2
00003b01: PUSH1 0x20
00003b03: SWAP2
00003b04: DUP3
00003b05: ADD
00003b06: SWAP2
00003b07: ADD
00003b08: PUSH2 0x3aed
00003b0b: JUMP
00003b0c: JUMPDEST
00003b0d: PUSH1 0x01
00003b0f: DUP4
00003b10: PUSH1 0x20
00003b12: SUB
00003b13: PUSH2 0x0100
00003b16: EXP
00003b17: SUB
00003b18: DUP1
00003b19: NOT
00003b1a: DUP3
00003b1b: MLOAD
00003b1c: AND
00003b1d: DUP2
00003b1e: DUP5
00003b1f: MLOAD
00003b20: AND
00003b21: DUP1
00003b22: DUP3
00003b23: OR
00003b24: DUP6
00003b25: MSTORE
00003b26: POP
00003b27: POP
00003b28: POP
00003b29: POP
00003b2a: POP
00003b2b: POP
00003b2c: SWAP1
00003b2d: POP
00003b2e: ADD
00003b2f: SWAP2
00003b30: POP
00003b31: POP
00003b32: PUSH1 0x00
00003b34: PUSH1 0x40
00003b36: MLOAD
00003b37: DUP1
00003b38: DUP4
00003b39: SUB
00003b3a: DUP2
00003b3b: PUSH1 0x00
00003b3d: DUP8
00003b3e: DUP8
00003b3f: CALL
00003b40: SWAP3
00003b41: POP
00003b42: POP
00003b43: POP
00003b44: RETURNDATASIZE
00003b45: DUP1
00003b46: PUSH1 0x00
00003b48: DUP2
00003b49: EQ
00003b4a: PUSH2 0x3b6f
00003b4d: JUMPI
00003b4e: PUSH1 0x40
00003b50: MLOAD
00003b51: SWAP2
00003b52: POP
00003b53: PUSH1 0x1f
00003b55: NOT
00003b56: PUSH1 0x3f
00003b58: RETURNDATASIZE
00003b59: ADD
00003b5a: AND
00003b5b: DUP3
00003b5c: ADD
00003b5d: PUSH1 0x40
00003b5f: MSTORE
00003b60: RETURNDATASIZE
00003b61: DUP3
00003b62: MSTORE
00003b63: RETURNDATASIZE
00003b64: PUSH1 0x00
00003b66: PUSH1 0x20
00003b68: DUP5
00003b69: ADD
00003b6a: RETURNDATACOPY
00003b6b: PUSH2 0x3b74
00003b6e: JUMP
00003b6f: JUMPDEST
00003b70: PUSH1 0x60
00003b72: SWAP2
00003b73: POP
00003b74: JUMPDEST
00003b75: POP
00003b76: SWAP2
00003b77: POP
00003b78: PUSH1 0x00
00003b7a: SWAP1
00003b7b: POP
00003b7c: GAS
00003b7d: PUSH1 0x2e
00003b7f: SLOAD
00003b80: PUSH1 0x28
00003b82: SLOAD
00003b83: PUSH1 0x40
00003b85: DUP1
00003b86: MLOAD
00003b87: PUSH1 0x24
00003b89: DUP2
00003b8a: ADD
00003b8b: SWAP3
00003b8c: SWAP1
00003b8d: SWAP3
00003b8e: MSTORE
00003b8f: PUSH1 0x44
00003b91: DUP1
00003b92: DUP4
00003b93: ADD
00003b94: DUP10
00003b95: SWAP1
00003b96: MSTORE
00003b97: DUP2
00003b98: MLOAD
00003b99: DUP1
00003b9a: DUP5
00003b9b: SUB
00003b9c: SWAP1
00003b9d: SWAP2
00003b9e: ADD
00003b9f: DUP2
00003ba0: MSTORE
00003ba1: PUSH1 0x64
00003ba3: SWAP1
00003ba4: SWAP3
00003ba5: ADD
00003ba6: DUP2
00003ba7: MSTORE
00003ba8: PUSH1 0x20
00003baa: DUP3
00003bab: ADD
00003bac: DUP1
00003bad: MLOAD
00003bae: PUSH1 0x01
00003bb0: PUSH1 0x01
00003bb2: PUSH1 0xe0
00003bb4: SHL
00003bb5: SUB
00003bb6: AND
00003bb7: PUSH4 0xfc3fcec7
00003bbc: PUSH1 0xe0
00003bbe: SHL
00003bbf: OR
00003bc0: DUP2
00003bc1: MSTORE
00003bc2: SWAP1
00003bc3: MLOAD
00003bc4: DUP3
00003bc5: MLOAD
00003bc6: SWAP5
00003bc7: SWAP6
00003bc8: POP
00003bc9: PUSH1 0x01
00003bcb: PUSH1 0x01
00003bcd: PUSH1 0xa0
00003bcf: SHL
00003bd0: SUB
00003bd1: SWAP1
00003bd2: SWAP4
00003bd3: AND
00003bd4: SWAP4
00003bd5: DUP8
00003bd6: SWAP4
00003bd7: SWAP2
00003bd8: DUP3
00003bd9: SWAP2
00003bda: DUP1
00003bdb: DUP4
00003bdc: DUP4
00003bdd: JUMPDEST
00003bde: PUSH1 0x20
00003be0: DUP4
00003be1: LT
00003be2: PUSH2 0x3bfc
00003be5: JUMPI
00003be6: DUP1
00003be7: MLOAD
00003be8: DUP3
00003be9: MSTORE
00003bea: PUSH1 0x1f
00003bec: NOT
00003bed: SWAP1
00003bee: SWAP3
00003bef: ADD
00003bf0: SWAP2
00003bf1: PUSH1 0x20
00003bf3: SWAP2
00003bf4: DUP3
00003bf5: ADD
00003bf6: SWAP2
00003bf7: ADD
00003bf8: PUSH2 0x3bdd
00003bfb: JUMP
00003bfc: JUMPDEST
00003bfd: PUSH1 0x01
00003bff: DUP4
00003c00: PUSH1 0x20
00003c02: SUB
00003c03: PUSH2 0x0100
00003c06: EXP
00003c07: SUB
00003c08: DUP1
00003c09: NOT
00003c0a: DUP3
00003c0b: MLOAD
00003c0c: AND
00003c0d: DUP2
00003c0e: DUP5
00003c0f: MLOAD
00003c10: AND
00003c11: DUP1
00003c12: DUP3
00003c13: OR
00003c14: DUP6
00003c15: MSTORE
00003c16: POP
00003c17: POP
00003c18: POP
00003c19: POP
00003c1a: POP
00003c1b: POP
00003c1c: SWAP1
00003c1d: POP
00003c1e: ADD
00003c1f: SWAP2
00003c20: POP
00003c21: POP
00003c22: PUSH1 0x00
00003c24: PUSH1 0x40
00003c26: MLOAD
00003c27: DUP1
00003c28: DUP4
00003c29: SUB
00003c2a: DUP2
00003c2b: PUSH1 0x00
00003c2d: DUP8
00003c2e: DUP8
00003c2f: CALL
00003c30: SWAP3
00003c31: POP
00003c32: POP
00003c33: POP
00003c34: RETURNDATASIZE
00003c35: DUP1
00003c36: PUSH1 0x00
00003c38: DUP2
00003c39: EQ
00003c3a: PUSH2 0x3c5f
00003c3d: JUMPI
00003c3e: PUSH1 0x40
00003c40: MLOAD
00003c41: SWAP2
00003c42: POP
00003c43: PUSH1 0x1f
00003c45: NOT
00003c46: PUSH1 0x3f
00003c48: RETURNDATASIZE
00003c49: ADD
00003c4a: AND
00003c4b: DUP3
00003c4c: ADD
00003c4d: PUSH1 0x40
00003c4f: MSTORE
00003c50: RETURNDATASIZE
00003c51: DUP3
00003c52: MSTORE
00003c53: RETURNDATASIZE
00003c54: PUSH1 0x00
00003c56: PUSH1 0x20
00003c58: DUP5
00003c59: ADD
00003c5a: RETURNDATACOPY
00003c5b: PUSH2 0x3c64
00003c5e: JUMP
00003c5f: JUMPDEST
00003c60: PUSH1 0x60
00003c62: SWAP2
00003c63: POP
00003c64: JUMPDEST
00003c65: POP
00003c66: POP
00003c67: POP
00003c68: PUSH1 0x00
00003c6a: GAS
00003c6b: SWAP1
00003c6c: POP
00003c6d: PUSH1 0x00
00003c6f: PUSH2 0x3c7e
00003c72: DUP4
00003c73: DUP4
00003c74: PUSH4 0xffffffff
00003c79: PUSH2 0x371a
00003c7c: AND
00003c7d: JUMP
00003c7e: JUMPDEST
00003c7f: SWAP1
00003c80: POP
00003c81: PUSH20 0x9b4e397a79ed197d5f8a835613a4326903faa3d2
00003c96: PUSH4 0x46a50089
00003c9b: PUSH1 0x1b
00003c9d: PUSH1 0x00
00003c9f: SWAP1
00003ca0: SLOAD
00003ca1: SWAP1
00003ca2: PUSH2 0x0100
00003ca5: EXP
00003ca6: SWAP1
00003ca7: DIV
00003ca8: PUSH1 0x01
00003caa: PUSH1 0x01
00003cac: PUSH1 0xa0
00003cae: SHL
00003caf: SUB
00003cb0: AND
00003cb1: PUSH1 0x1e
00003cb3: SLOAD
00003cb4: DUP9
00003cb5: DUP6
00003cb6: PUSH1 0x2d
00003cb8: SLOAD
00003cb9: DUP11
00003cba: PUSH1 0x40
00003cbc: MLOAD
00003cbd: DUP8
00003cbe: PUSH4 0xffffffff
00003cc3: AND
00003cc4: PUSH1 0xe0
00003cc6: SHL
00003cc7: DUP2
00003cc8: MSTORE
00003cc9: PUSH1 0x04
00003ccb: ADD
00003ccc: DUP1
00003ccd: DUP8
00003cce: PUSH1 0x01
00003cd0: PUSH1 0x01
00003cd2: PUSH1 0xa0
00003cd4: SHL
00003cd5: SUB
00003cd6: AND
00003cd7: PUSH1 0x01
00003cd9: PUSH1 0x01
00003cdb: PUSH1 0xa0
00003cdd: SHL
00003cde: SUB
00003cdf: AND
00003ce0: DUP2
00003ce1: MSTORE
00003ce2: PUSH1 0x20
00003ce4: ADD
00003ce5: DUP7
00003ce6: DUP2
00003ce7: MSTORE
00003ce8: PUSH1 0x20
00003cea: ADD
00003ceb: DUP6
00003cec: DUP2
00003ced: MSTORE
00003cee: PUSH1 0x20
00003cf0: ADD
00003cf1: DUP5
00003cf2: DUP2
00003cf3: MSTORE
00003cf4: PUSH1 0x20
00003cf6: ADD
00003cf7: DUP4
00003cf8: DUP2
00003cf9: MSTORE
00003cfa: PUSH1 0x20
00003cfc: ADD
00003cfd: DUP1
00003cfe: PUSH1 0x20
00003d00: ADD
00003d01: DUP3
00003d02: DUP2
00003d03: SUB
00003d04: DUP3
00003d05: MSTORE
00003d06: DUP4
00003d07: DUP2
00003d08: DUP2
00003d09: MLOAD
00003d0a: DUP2
00003d0b: MSTORE
00003d0c: PUSH1 0x20
00003d0e: ADD
00003d0f: SWAP2
00003d10: POP
00003d11: DUP1
00003d12: MLOAD
00003d13: SWAP1
00003d14: PUSH1 0x20
00003d16: ADD
00003d17: SWAP1
00003d18: DUP1
00003d19: DUP4
00003d1a: DUP4
00003d1b: PUSH1 0x00
00003d1d: JUMPDEST
00003d1e: DUP4
00003d1f: DUP2
00003d20: LT
00003d21: ISZERO
00003d22: PUSH2 0x3d35
00003d25: JUMPI
00003d26: DUP2
00003d27: DUP2
00003d28: ADD
00003d29: MLOAD
00003d2a: DUP4
00003d2b: DUP3
00003d2c: ADD
00003d2d: MSTORE
00003d2e: PUSH1 0x20
00003d30: ADD
00003d31: PUSH2 0x3d1d
00003d34: JUMP
00003d35: JUMPDEST
00003d36: POP
00003d37: POP
00003d38: POP
00003d39: POP
00003d3a: SWAP1
00003d3b: POP
00003d3c: SWAP1
00003d3d: DUP2
00003d3e: ADD
00003d3f: SWAP1
00003d40: PUSH1 0x1f
00003d42: AND
00003d43: DUP1
00003d44: ISZERO
00003d45: PUSH2 0x3d62
00003d48: JUMPI
00003d49: DUP1
00003d4a: DUP3
00003d4b: SUB
00003d4c: DUP1
00003d4d: MLOAD
00003d4e: PUSH1 0x01
00003d50: DUP4
00003d51: PUSH1 0x20
00003d53: SUB
00003d54: PUSH2 0x0100
00003d57: EXP
00003d58: SUB
00003d59: NOT
00003d5a: AND
00003d5b: DUP2
00003d5c: MSTORE
00003d5d: PUSH1 0x20
00003d5f: ADD
00003d60: SWAP2
00003d61: POP
00003d62: JUMPDEST
00003d63: POP
00003d64: SWAP8
00003d65: POP
00003d66: POP
00003d67: POP
00003d68: POP
00003d69: POP
00003d6a: POP
00003d6b: POP
00003d6c: POP
00003d6d: PUSH1 0x00
00003d6f: PUSH1 0x40
00003d71: MLOAD
00003d72: DUP1
00003d73: DUP4
00003d74: SUB
00003d75: DUP2
00003d76: DUP7
00003d77: DUP1
00003d78: EXTCODESIZE
00003d79: ISZERO
00003d7a: DUP1
00003d7b: ISZERO
00003d7c: PUSH2 0x3d84
00003d7f: JUMPI
00003d80: PUSH1 0x00
00003d82: DUP1
00003d83: REVERT
00003d84: JUMPDEST
00003d85: POP
00003d86: GAS
00003d87: DELEGATECALL
00003d88: ISZERO
00003d89: DUP1
00003d8a: ISZERO
00003d8b: PUSH2 0x3d98
00003d8e: JUMPI
00003d8f: RETURNDATASIZE
00003d90: PUSH1 0x00
00003d92: DUP1
00003d93: RETURNDATACOPY
00003d94: RETURNDATASIZE
00003d95: PUSH1 0x00
00003d97: REVERT
00003d98: JUMPDEST
00003d99: POP
00003d9a: POP
00003d9b: POP
00003d9c: POP
00003d9d: POP
00003d9e: POP
00003d9f: POP
00003da0: POP
00003da1: POP
00003da2: POP
00003da3: JUMP
00003da4: JUMPDEST
00003da5: PUSH1 0x00
00003da7: DUP1
00003da8: PUSH1 0x00
00003daa: DUP1
00003dab: PUSH7 0x2386f26fc10000
00003db3: SWAP1
00003db4: POP
00003db5: PUSH1 0x00
00003db7: PUSH20 0xc08dcc93130ab30987dd7fe64e011402bbe5fda6
00003dcc: PUSH4 0x8dfa4363
00003dd1: PUSH1 0x29
00003dd3: SLOAD
00003dd4: PUSH1 0x22
00003dd6: SLOAD
00003dd7: PUSH1 0x40
00003dd9: MLOAD
00003dda: DUP4
00003ddb: PUSH4 0xffffffff
00003de0: AND
00003de1: PUSH1 0xe0
00003de3: SHL
00003de4: DUP2
00003de5: MSTORE
00003de6: PUSH1 0x04
00003de8: ADD
00003de9: DUP1
00003dea: DUP4
00003deb: DUP2
00003dec: MSTORE
00003ded: PUSH1 0x20
00003def: ADD
00003df0: DUP3
00003df1: DUP2
00003df2: MSTORE
00003df3: PUSH1 0x20
00003df5: ADD
00003df6: SWAP3
00003df7: POP
00003df8: POP
00003df9: POP
00003dfa: PUSH1 0x20
00003dfc: PUSH1 0x40
00003dfe: MLOAD
00003dff: DUP1
00003e00: DUP4
00003e01: SUB
00003e02: DUP2
00003e03: DUP7
00003e04: DUP1
00003e05: EXTCODESIZE
00003e06: ISZERO
00003e07: DUP1
00003e08: ISZERO
00003e09: PUSH2 0x3e11
00003e0c: JUMPI
00003e0d: PUSH1 0x00
00003e0f: DUP1
00003e10: REVERT
00003e11: JUMPDEST
00003e12: POP
00003e13: GAS
00003e14: DELEGATECALL
00003e15: ISZERO
00003e16: DUP1
00003e17: ISZERO
00003e18: PUSH2 0x3e25
00003e1b: JUMPI
00003e1c: RETURNDATASIZE
00003e1d: PUSH1 0x00
00003e1f: DUP1
00003e20: RETURNDATACOPY
00003e21: RETURNDATASIZE
00003e22: PUSH1 0x00
00003e24: REVERT
00003e25: JUMPDEST
00003e26: POP
00003e27: POP
00003e28: POP
00003e29: POP
00003e2a: PUSH1 0x40
00003e2c: MLOAD
00003e2d: RETURNDATASIZE
00003e2e: PUSH1 0x20
00003e30: DUP2
00003e31: LT
00003e32: ISZERO
00003e33: PUSH2 0x3e3b
00003e36: JUMPI
00003e37: PUSH1 0x00
00003e39: DUP1
00003e3a: REVERT
00003e3b: JUMPDEST
00003e3c: POP
00003e3d: MLOAD
00003e3e: PUSH1 0x1d
00003e40: SLOAD
00003e41: SWAP1
00003e42: SWAP2
00003e43: POP
00003e44: PUSH2 0x3e65
00003e47: SWAP1
00003e48: DUP4
00003e49: SWAP1
00003e4a: PUSH2 0x3e59
00003e4d: SWAP1
00003e4e: DUP5
00003e4f: PUSH4 0xffffffff
00003e54: PUSH2 0x33ab
00003e57: AND
00003e58: JUMP
00003e59: JUMPDEST
00003e5a: SWAP1
00003e5b: PUSH4 0xffffffff
00003e60: PUSH2 0x3628
00003e63: AND
00003e64: JUMP
00003e65: JUMPDEST
00003e66: SWAP5
00003e67: POP
00003e68: PUSH1 0x00
00003e6a: PUSH2 0x3e8b
00003e6d: PUSH2 0x3e7c
00003e70: DUP5
00003e71: DUP5
00003e72: PUSH4 0xffffffff
00003e77: PUSH2 0x371a
00003e7a: AND
00003e7b: JUMP
00003e7c: JUMPDEST
00003e7d: PUSH1 0x1d
00003e7f: SLOAD
00003e80: SWAP1
00003e81: PUSH4 0xffffffff
00003e86: PUSH2 0x33ab
00003e89: AND
00003e8a: JUMP
00003e8b: JUMPDEST
00003e8c: SWAP1
00003e8d: POP
00003e8e: PUSH1 0x00
00003e90: PUSH2 0x3eb9
00003e93: DUP5
00003e94: PUSH2 0x3e59
00003e97: PUSH1 0x05
00003e99: PUSH2 0x3ead
00003e9c: PUSH1 0x1f
00003e9e: SLOAD
00003e9f: DUP8
00003ea0: PUSH2 0x33ab
00003ea3: SWAP1
00003ea4: SWAP2
00003ea5: SWAP1
00003ea6: PUSH4 0xffffffff
00003eab: AND
00003eac: JUMP
00003ead: JUMPDEST
00003eae: SWAP1
00003eaf: PUSH4 0xffffffff
00003eb4: PUSH2 0x4121
00003eb7: AND
00003eb8: JUMP
00003eb9: JUMPDEST
00003eba: SWAP1
00003ebb: POP
00003ebc: PUSH1 0x00
00003ebe: PUSH2 0x3ed7
00003ec1: PUSH2 0x3ec8
00003ec4: PUSH2 0x2aef
00003ec7: JUMP
00003ec8: JUMPDEST
00003ec9: PUSH1 0x2c
00003ecb: SLOAD
00003ecc: SWAP1
00003ecd: PUSH4 0xffffffff
00003ed2: PUSH2 0x371a
00003ed5: AND
00003ed6: JUMP
00003ed7: JUMPDEST
00003ed8: SWAP1
00003ed9: POP
00003eda: PUSH2 0x3ee9
00003edd: DUP2
00003ede: DUP4
00003edf: PUSH4 0xffffffff
00003ee4: PUSH2 0x36c0
00003ee7: AND
00003ee8: JUMP
00003ee9: JUMPDEST
00003eea: SWAP7
00003eeb: POP
00003eec: PUSH2 0x3f1b
00003eef: DUP3
00003ef0: PUSH2 0x3f0f
00003ef3: PUSH2 0x3f07
00003ef6: PUSH1 0x1f
00003ef8: SLOAD
00003ef9: DUP13
00003efa: PUSH2 0x33ab
00003efd: SWAP1
00003efe: SWAP2
00003eff: SWAP1
00003f00: PUSH4 0xffffffff
00003f05: AND
00003f06: JUMP
00003f07: JUMPDEST
00003f08: PUSH2 0x3f0f
00003f0b: PUSH2 0x2aef
00003f0e: JUMP
00003f0f: JUMPDEST
00003f10: SWAP1
00003f11: PUSH4 0xffffffff
00003f16: PUSH2 0x371a
00003f19: AND
00003f1a: JUMP
00003f1b: JUMPDEST
00003f1c: SWAP6
00003f1d: POP
00003f1e: POP
00003f1f: POP
00003f20: POP
00003f21: POP
00003f22: POP
00003f23: SWAP1
00003f24: SWAP2
00003f25: SWAP3
00003f26: JUMP
00003f27: JUMPDEST
00003f28: PUSH2 0x3f94
00003f2b: DUP2
00003f2c: DUP5
00003f2d: PUSH1 0x06
00003f2f: ADD
00003f30: DUP5
00003f31: PUSH1 0x40
00003f33: MLOAD
00003f34: DUP1
00003f35: DUP3
00003f36: DUP1
00003f37: MLOAD
00003f38: SWAP1
00003f39: PUSH1 0x20
00003f3b: ADD
00003f3c: SWAP1
00003f3d: DUP1
00003f3e: DUP4
00003f3f: DUP4
00003f40: JUMPDEST
00003f41: PUSH1 0x20
00003f43: DUP4
00003f44: LT
00003f45: PUSH2 0x3f5f
00003f48: JUMPI
00003f49: DUP1
00003f4a: MLOAD
00003f4b: DUP3
00003f4c: MSTORE
00003f4d: PUSH1 0x1f
00003f4f: NOT
00003f50: SWAP1
00003f51: SWAP3
00003f52: ADD
00003f53: SWAP2
00003f54: PUSH1 0x20
00003f56: SWAP2
00003f57: DUP3
00003f58: ADD
00003f59: SWAP2
00003f5a: ADD
00003f5b: PUSH2 0x3f40
00003f5e: JUMP
00003f5f: JUMPDEST
00003f60: MLOAD
00003f61: DUP2
00003f62: MLOAD
00003f63: PUSH1 0x20
00003f65: SWAP4
00003f66: DUP5
00003f67: SUB
00003f68: PUSH2 0x0100
00003f6b: EXP
00003f6c: PUSH1 0x00
00003f6e: NOT
00003f6f: ADD
00003f70: DUP1
00003f71: NOT
00003f72: SWAP1
00003f73: SWAP3
00003f74: AND
00003f75: SWAP2
00003f76: AND
00003f77: OR
00003f78: SWAP1
00003f79: MSTORE
00003f7a: SWAP3
00003f7b: ADD
00003f7c: SWAP5
00003f7d: DUP6
00003f7e: MSTORE
00003f7f: POP
00003f80: PUSH1 0x40
00003f82: MLOAD
00003f83: SWAP4
00003f84: DUP5
00003f85: SWAP1
00003f86: SUB
00003f87: ADD
00003f88: SWAP1
00003f89: SWAP3
00003f8a: KECCAK256
00003f8b: SLOAD
00003f8c: SWAP3
00003f8d: SWAP2
00003f8e: POP
00003f8f: POP
00003f90: PUSH2 0x36c0
00003f93: JUMP
00003f94: JUMPDEST
00003f95: DUP4
00003f96: PUSH1 0x06
00003f98: ADD
00003f99: DUP4
00003f9a: PUSH1 0x40
00003f9c: MLOAD
00003f9d: DUP1
00003f9e: DUP3
00003f9f: DUP1
00003fa0: MLOAD
00003fa1: SWAP1
00003fa2: PUSH1 0x20
00003fa4: ADD
00003fa5: SWAP1
00003fa6: DUP1
00003fa7: DUP4
00003fa8: DUP4
00003fa9: JUMPDEST
00003faa: PUSH1 0x20
00003fac: DUP4
00003fad: LT
00003fae: PUSH2 0x3fc8
00003fb1: JUMPI
00003fb2: DUP1
00003fb3: MLOAD
00003fb4: DUP3
00003fb5: MSTORE
00003fb6: PUSH1 0x1f
00003fb8: NOT
00003fb9: SWAP1
00003fba: SWAP3
00003fbb: ADD
00003fbc: SWAP2
00003fbd: PUSH1 0x20
00003fbf: SWAP2
00003fc0: DUP3
00003fc1: ADD
00003fc2: SWAP2
00003fc3: ADD
00003fc4: PUSH2 0x3fa9
00003fc7: JUMP
00003fc8: JUMPDEST
00003fc9: MLOAD
00003fca: DUP2
00003fcb: MLOAD
00003fcc: PUSH1 0x20
00003fce: SWAP4
00003fcf: DUP5
00003fd0: SUB
00003fd1: PUSH2 0x0100
00003fd4: EXP
00003fd5: PUSH1 0x00
00003fd7: NOT
00003fd8: ADD
00003fd9: DUP1
00003fda: NOT
00003fdb: SWAP1
00003fdc: SWAP3
00003fdd: AND
00003fde: SWAP2
00003fdf: AND
00003fe0: OR
00003fe1: SWAP1
00003fe2: MSTORE
00003fe3: SWAP3
00003fe4: ADD
00003fe5: SWAP5
00003fe6: DUP6
00003fe7: MSTORE
00003fe8: POP
00003fe9: PUSH1 0x40
00003feb: MLOAD
00003fec: SWAP4
00003fed: DUP5
00003fee: SWAP1
00003fef: SUB
00003ff0: ADD
00003ff1: SWAP1
00003ff2: SWAP3
00003ff3: KECCAK256
00003ff4: SWAP3
00003ff5: SWAP1
00003ff6: SWAP3
00003ff7: SSTORE
00003ff8: POP
00003ff9: POP
00003ffa: POP
00003ffb: POP
00003ffc: POP
00003ffd: JUMP
00003ffe: JUMPDEST
00003fff: PUSH1 0x04
00004001: DUP2
00004002: ADD
00004003: SLOAD
00004004: PUSH1 0x08
00004006: DUP3
00004007: ADD
00004008: SLOAD
00004009: PUSH1 0x03
0000400b: DUP4
0000400c: ADD
0000400d: SLOAD
0000400e: PUSH1 0x00
00004010: SWAP3
00004011: PUSH2 0x0f84
00004014: SWAP3
00004015: SWAP1
00004016: SWAP2
00004017: PUSH2 0x3f0f
0000401a: SWAP2
0000401b: PUSH4 0xffffffff
00004020: PUSH2 0x371a
00004023: AND
00004024: JUMP
00004025: JUMPDEST
00004026: PUSH1 0x00
00004028: DUP2
00004029: DUP4
0000402a: PUSH2 0x40b1
0000402d: JUMPI
0000402e: PUSH1 0x40
00004030: MLOAD
00004031: PUSH3 0x461bcd
00004035: PUSH1 0xe5
00004037: SHL
00004038: DUP2
00004039: MSTORE
0000403a: PUSH1 0x04
0000403c: ADD
0000403d: DUP1
0000403e: DUP1
0000403f: PUSH1 0x20
00004041: ADD
00004042: DUP3
00004043: DUP2
00004044: SUB
00004045: DUP3
00004046: MSTORE
00004047: DUP4
00004048: DUP2
00004049: DUP2
0000404a: MLOAD
0000404b: DUP2
0000404c: MSTORE
0000404d: PUSH1 0x20
0000404f: ADD
00004050: SWAP2
00004051: POP
00004052: DUP1
00004053: MLOAD
00004054: SWAP1
00004055: PUSH1 0x20
00004057: ADD
00004058: SWAP1
00004059: DUP1
0000405a: DUP4
0000405b: DUP4
0000405c: PUSH1 0x00
0000405e: JUMPDEST
0000405f: DUP4
00004060: DUP2
00004061: LT
00004062: ISZERO
00004063: PUSH2 0x4076
00004066: JUMPI
00004067: DUP2
00004068: DUP2
00004069: ADD
0000406a: MLOAD
0000406b: DUP4
0000406c: DUP3
0000406d: ADD
0000406e: MSTORE
0000406f: PUSH1 0x20
00004071: ADD
00004072: PUSH2 0x405e
00004075: JUMP
00004076: JUMPDEST
00004077: POP
00004078: POP
00004079: POP
0000407a: POP
0000407b: SWAP1
0000407c: POP
0000407d: SWAP1
0000407e: DUP2
0000407f: ADD
00004080: SWAP1
00004081: PUSH1 0x1f
00004083: AND
00004084: DUP1
00004085: ISZERO
00004086: PUSH2 0x40a3
00004089: JUMPI
0000408a: DUP1
0000408b: DUP3
0000408c: SUB
0000408d: DUP1
0000408e: MLOAD
0000408f: PUSH1 0x01
00004091: DUP4
00004092: PUSH1 0x20
00004094: SUB
00004095: PUSH2 0x0100
00004098: EXP
00004099: SUB
0000409a: NOT
0000409b: AND
0000409c: DUP2
0000409d: MSTORE
0000409e: PUSH1 0x20
000040a0: ADD
000040a1: SWAP2
000040a2: POP
000040a3: JUMPDEST
000040a4: POP
000040a5: SWAP3
000040a6: POP
000040a7: POP
000040a8: POP
000040a9: PUSH1 0x40
000040ab: MLOAD
000040ac: DUP1
000040ad: SWAP2
000040ae: SUB
000040af: SWAP1
000040b0: REVERT
000040b1: JUMPDEST
000040b2: POP
000040b3: PUSH1 0x00
000040b5: DUP4
000040b6: DUP6
000040b7: DUP2
000040b8: PUSH2 0x40bd
000040bb: JUMPI
000040bc: INVALID
000040bd: JUMPDEST
000040be: DIV
000040bf: SWAP6
000040c0: SWAP5
000040c1: POP
000040c2: POP
000040c3: POP
000040c4: POP
000040c5: POP
000040c6: JUMP
000040c7: JUMPDEST
000040c8: PUSH1 0x00
000040ca: DUP2
000040cb: DUP5
000040cc: DUP5
000040cd: GT
000040ce: ISZERO
000040cf: PUSH2 0x4119
000040d2: JUMPI
000040d3: PUSH1 0x40
000040d5: MLOAD
000040d6: PUSH3 0x461bcd
000040da: PUSH1 0xe5
000040dc: SHL
000040dd: DUP2
000040de: MSTORE
000040df: PUSH1 0x20
000040e1: PUSH1 0x04
000040e3: DUP3
000040e4: ADD
000040e5: DUP2
000040e6: DUP2
000040e7: MSTORE
000040e8: DUP4
000040e9: MLOAD
000040ea: PUSH1 0x24
000040ec: DUP5
000040ed: ADD
000040ee: MSTORE
000040ef: DUP4
000040f0: MLOAD
000040f1: SWAP1
000040f2: SWAP3
000040f3: DUP4
000040f4: SWAP3
000040f5: PUSH1 0x44
000040f7: SWAP1
000040f8: SWAP2
000040f9: ADD
000040fa: SWAP2
000040fb: SWAP1
000040fc: DUP6
000040fd: ADD
000040fe: SWAP1
000040ff: DUP1
00004100: DUP4
00004101: DUP4
00004102: PUSH1 0x00
00004104: DUP4
00004105: ISZERO
00004106: PUSH2 0x4076
00004109: JUMPI
0000410a: DUP2
0000410b: DUP2
0000410c: ADD
0000410d: MLOAD
0000410e: DUP4
0000410f: DUP3
00004110: ADD
00004111: MSTORE
00004112: PUSH1 0x20
00004114: ADD
00004115: PUSH2 0x405e
00004118: JUMP
00004119: JUMPDEST
0000411a: POP
0000411b: POP
0000411c: POP
0000411d: SWAP1
0000411e: SUB
0000411f: SWAP1
00004120: JUMP
00004121: JUMPDEST
00004122: PUSH1 0x00
00004124: PUSH2 0x3404
00004127: PUSH1 0x64
00004129: PUSH2 0x3e59
0000412c: DUP6
0000412d: DUP6
0000412e: PUSH4 0xffffffff
00004133: PUSH2 0x33ab
00004136: AND
00004137: JUMP
00004138: JUMPDEST
00004139: DUP3
0000413a: DUP1
0000413b: SLOAD
0000413c: PUSH1 0x01
0000413e: DUP2
0000413f: PUSH1 0x01
00004141: AND
00004142: ISZERO
00004143: PUSH2 0x0100
00004146: MUL
00004147: SUB
00004148: AND
00004149: PUSH1 0x02
0000414b: SWAP1
0000414c: DIV
0000414d: SWAP1
0000414e: PUSH1 0x00
00004150: MSTORE
00004151: PUSH1 0x20
00004153: PUSH1 0x00
00004155: KECCAK256
00004156: SWAP1
00004157: PUSH1 0x1f
00004159: ADD
0000415a: PUSH1 0x20
0000415c: SWAP1
0000415d: DIV
0000415e: DUP2
0000415f: ADD
00004160: SWAP3
00004161: DUP3
00004162: PUSH1 0x1f
00004164: LT
00004165: PUSH2 0x4179
00004168: JUMPI
00004169: DUP1
0000416a: MLOAD
0000416b: PUSH1 0xff
0000416d: NOT
0000416e: AND
0000416f: DUP4
00004170: DUP1
00004171: ADD
00004172: OR
00004173: DUP6
00004174: SSTORE
00004175: PUSH2 0x41a6
00004178: JUMP
00004179: JUMPDEST
0000417a: DUP3
0000417b: DUP1
0000417c: ADD
0000417d: PUSH1 0x01
0000417f: ADD
00004180: DUP6
00004181: SSTORE
00004182: DUP3
00004183: ISZERO
00004184: PUSH2 0x41a6
00004187: JUMPI
00004188: SWAP2
00004189: DUP3
0000418a: ADD
0000418b: JUMPDEST
0000418c: DUP3
0000418d: DUP2
0000418e: GT
0000418f: ISZERO
00004190: PUSH2 0x41a6
00004193: JUMPI
00004194: DUP3
00004195: MLOAD
00004196: DUP3
00004197: SSTORE
00004198: SWAP2
00004199: PUSH1 0x20
0000419b: ADD
0000419c: SWAP2
0000419d: SWAP1
0000419e: PUSH1 0x01
000041a0: ADD
000041a1: SWAP1
000041a2: PUSH2 0x418b
000041a5: JUMP
000041a6: JUMPDEST
000041a7: POP
000041a8: PUSH2 0x41b2
000041ab: SWAP3
000041ac: SWAP2
000041ad: POP
000041ae: PUSH2 0x41b6
000041b1: JUMP
000041b2: JUMPDEST
000041b3: POP
000041b4: SWAP1
000041b5: JUMP
000041b6: JUMPDEST
000041b7: PUSH2 0x0f6e
000041ba: SWAP2
000041bb: SWAP1
000041bc: JUMPDEST
000041bd: DUP1
000041be: DUP3
000041bf: GT
000041c0: ISZERO
000041c1: PUSH2 0x41b2
000041c4: JUMPI
000041c5: PUSH1 0x00
000041c7: DUP2
000041c8: SSTORE
000041c9: PUSH1 0x01
000041cb: ADD
000041cc: PUSH2 0x41bc
000041cf: JUMP
000041d0: INVALID
000041d1: MSTORE8
000041d2: PUSH2 0x6665
000041d5: UNKNOWN(0x4D)
000041d6: PUSH2 0x7468
000041d9: GASPRICE
000041da: KECCAK256
000041db: PUSH14 0x756c7469706c69636174696f6e20
000041ea: PUSH16 0x766572666c6f7747726f75702073656c
000041fb: PUSH6 0x6374696f6e20
00004202: PUSH19 0x65696d62757273656d656e74206661696c6564
00004216: LOG2
00004217: PUSH6 0x627a7a723158
0000421e: KECCAK256
0000421f: PUSH27 0x629fb1f01059c4affbe2beac32ada102cc0c255c006aa13f47d4a6
0000423b: UNKNOWN(0xEE)
0000423c: SIGNEXTEND
0000423d: RETURN
0000423e: UNKNOWN(0x0C)
0000423f: PUSH5 0x736f6c6343
00004245: STOP
00004246: SDIV
00004247: GT
00004248: STOP
00004249: ORIGIN

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical access_control codex Unrestricted TokenGrant.receiveApproval lets anyone drain approved holders by creating grants to themselves 90 no
view
evidence_json
{
    "evidence": "`receiveApproval` accepts arbitrary `_from` and performs `safeTransferFrom` without checking `msg.sender == token`, allowing any caller to spend any holder\u2019s allowance and assign themselves as grantee.",
    "locations": [
        "contracts/solidity/contracts/TokenGrant.sol:210",
        "contracts/solidity/contracts/TokenGrant.sol:252"
    ],
    "recommendation": "Restrict `receiveApproval` to calls coming only from the token contract (e.g., `require(msg.sender == address(token))`) and/or verify that `_from == msg.sender` when not called via `approveAndCall`. This matches the `TokenStakingEscrow.receiveApproval` pattern.",
    "exploit_scenario": "1) Find a victim address that has a nonzero ERC20 allowance set for the TokenGrant contract. 2) Call `TokenGrant.receiveApproval(victim, amount, KEEP, extraData)` where `extraData` encodes `grantManager=attacker`, `grantee=attacker`, `duration=0`, `start=0`, `cliffDuration=0`, `revocable=false`, `stakingPolicy=attackerNonZero`. 3) The contract pulls `amount` from the victim via `safeTransferFrom` and creates a new grant for the attacker. 4) Read `numGrants` (new grant id is `numGrants-1`) and call `TokenGrant.withdraw(grantId)` to transfer the full amount to the attacker since the schedule unlocks immediately. Profit: up to the victim\u2019s approved allowance (or full balance if allowance is unlimited), i.e., the full amount pulled into the grant."
}
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xd12f5e69",
            "selector": "0xd12f5e69",
            "calldata_variants": [
                "0xd12f5e69",
                "0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe1f4d632",
            "selector": "0xe1f4d632",
            "calldata_variants": [
                "0xe1f4d632",
                "0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe581ff74",
            "selector": "0xe581ff74",
            "calldata_variants": [
                "0xe581ff74",
                "0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb9488d3",
            "selector": "0xeb9488d3",
            "calldata_variants": [
                "0xeb9488d3",
                "0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xef7c8f9c",
            "selector": "0xef7c8f9c",
            "calldata_variants": [
                "0xef7c8f9c",
                "0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdd18b13",
            "selector": "0xfdd18b13",
            "calldata_variants": [
                "0xfdd18b13",
                "0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc300d058",
            "selector": "0xc300d058",
            "calldata_variants": [
                "0xc300d058",
                "0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4438946",
            "selector": "0xc4438946",
            "calldata_variants": [
                "0xc4438946",
                "0xc44389460000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 16969,
            "type": "tx_origin_used"
        }
    ]
}
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_id: 0xc76af3beee414cf5bdf9ddaec8f562d77cae6d1cb5a7d820da2d416ce7659824
call_targets: 0xeec3e1799f908e7d1f367c71d6f2abce5f63239b
target_varies: no
classification: constant_target
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 2,
    "trace_id": "0xc76af3beee414cf5bdf9ddaec8f562d77cae6d1cb5a7d820da2d416ce7659824",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xeec3e1799f908e7d1f367c71d6f2abce5f63239b"
    ],
    "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": "0xd12f5e69",
            "selector": "0xd12f5e69",
            "calldata_variants": [
                "0xd12f5e69",
                "0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe1f4d632",
            "selector": "0xe1f4d632",
            "calldata_variants": [
                "0xe1f4d632",
                "0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe581ff74",
            "selector": "0xe581ff74",
            "calldata_variants": [
                "0xe581ff74",
                "0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb9488d3",
            "selector": "0xeb9488d3",
            "calldata_variants": [
                "0xeb9488d3",
                "0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xef7c8f9c",
            "selector": "0xef7c8f9c",
            "calldata_variants": [
                "0xef7c8f9c",
                "0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdd18b13",
            "selector": "0xfdd18b13",
            "calldata_variants": [
                "0xfdd18b13",
                "0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc300d058",
            "selector": "0xc300d058",
            "calldata_variants": [
                "0xc300d058",
                "0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4438946",
            "selector": "0xc4438946",
            "calldata_variants": [
                "0xc4438946",
                "0xc44389460000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3751,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 4165,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 4679,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [
        {
            "pc": 16969,
            "type": "tx_origin_used"
        }
    ],
    "delegatecall_count": 19,
    "untrusted_delegatecall_count": 19
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144
call_targets: 0xdf708431162ba247ddae362d2c919e0fbafcf9de
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xdf708431162ba247ddae362d2c919e0fbafcf9de"
    ],
    "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": "0xd12f5e69",
            "selector": "0xd12f5e69",
            "calldata_variants": [
                "0xd12f5e69",
                "0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe1f4d632",
            "selector": "0xe1f4d632",
            "calldata_variants": [
                "0xe1f4d632",
                "0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe581ff74",
            "selector": "0xe581ff74",
            "calldata_variants": [
                "0xe581ff74",
                "0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb9488d3",
            "selector": "0xeb9488d3",
            "calldata_variants": [
                "0xeb9488d3",
                "0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xef7c8f9c",
            "selector": "0xef7c8f9c",
            "calldata_variants": [
                "0xef7c8f9c",
                "0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdd18b13",
            "selector": "0xfdd18b13",
            "calldata_variants": [
                "0xfdd18b13",
                "0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc300d058",
            "selector": "0xc300d058",
            "calldata_variants": [
                "0xc300d058",
                "0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4438946",
            "selector": "0xc4438946",
            "calldata_variants": [
                "0xc4438946",
                "0xc44389460000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5205,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 10282,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 10546,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 11,
    "guards_detected": [
        {
            "pc": 16969,
            "type": "tx_origin_used"
        }
    ]
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 19
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144
call_targets: 0xdf708431162ba247ddae362d2c919e0fbafcf9de
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x9eef8f594ebbcbf525bc926ab10a0fe9cf86cb010edab3b184a9a77d40c68144",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xdf708431162ba247ddae362d2c919e0fbafcf9de"
    ],
    "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": "0xd12f5e69",
            "selector": "0xd12f5e69",
            "calldata_variants": [
                "0xd12f5e69",
                "0xd12f5e690000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe1f4d632",
            "selector": "0xe1f4d632",
            "calldata_variants": [
                "0xe1f4d632",
                "0xe1f4d6320000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe581ff74",
            "selector": "0xe581ff74",
            "calldata_variants": [
                "0xe581ff74",
                "0xe581ff740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xeb9488d3",
            "selector": "0xeb9488d3",
            "calldata_variants": [
                "0xeb9488d3",
                "0xeb9488d30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xef7c8f9c",
            "selector": "0xef7c8f9c",
            "calldata_variants": [
                "0xef7c8f9c",
                "0xef7c8f9c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfdd18b13",
            "selector": "0xfdd18b13",
            "calldata_variants": [
                "0xfdd18b13",
                "0xfdd18b130000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc300d058",
            "selector": "0xc300d058",
            "calldata_variants": [
                "0xc300d058",
                "0xc300d0580000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc4438946",
            "selector": "0xc4438946",
            "calldata_variants": [
                "0xc4438946",
                "0xc44389460000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5205,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 10282,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 10546,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 11,
    "guards_detected": [
        {
            "pc": 16969,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 11
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 22
}
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": 33
}