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

Analysis Run

6625d03d-07b7-460c-b8f4-4fc0c7f1ad3b

failed
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 1:20 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30293 report.consolidate complete 1 / 1 3 months ago
73942 artifact.fetch failed 1 / 3 1 week ago
73943 tool.cast_disasm complete 1 / 3 1 week ago
73944 analysis.bundle complete 1 / 3 1 week ago
73945 capability.graph complete 1 / 3 1 week ago
73946 detector.run complete 1 / 3 1 week ago
73947 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
Summary
Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.
View stderr
[codex:496142] OpenAI Codex v0.77.0 (research preview)
[codex:496142] --------
[codex:496142] workdir: /tmp/codex-multi-iwsjvaqi
[codex:496142] model: gpt-5.2-codex
[codex:496142] provider: openai
[codex:496142] approval: never
[codex:496142] sandbox: read-only
[codex:496142] reasoning effort: xhigh
[codex:496142] reasoning summaries: auto
[codex:496142] session id: 019b6512-103a-75e0-8fea-bb811427d5f3
[codex:496142] --------
[codex:496142] user
[codex:496142] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:496142] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:496142] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:496142] 
[codex:496142] Scope rules:
[codex:496142] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:496142] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:496142] 
[codex:496142] Output MUST be valid JSON matching the provided schema.
[codex:496142] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:496142] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:496142] 
[codex:496142] Output constraints (IMPORTANT):
[codex:496142] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:496142] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:496142] mcp startup: no servers
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Preparing to read AUDIT_BUNDLE.txt**
[codex:496142] exec
[codex:496142] /bin/bash -lc ls in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] AUDIT_BUNDLE.txt
[codex:496142] codex-output-schema.json
[codex:496142] contracts
[codex:496142] exec
[codex:496142] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:496142] 
[codex:496142] ================================================================================
[codex:496142] FILE: contracts/@openzeppelin/contracts/utils/SafeCast.sol
[codex:496142] ================================================================================
[codex:496142] // SPDX-License-Identifier: MIT
[codex:496142] 
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow
[codex:496142]  * checks.
[codex:496142]  *
[codex:496142]  * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
[codex:496142]  * easily result in undesired exploitation or bugs, since developers usually
[codex:496142]  * assume that overflows raise errors. `SafeCast` restores this intuition by
[codex:496142]  * reverting the transaction when such an operation overflows.
[codex:496142]  *
[codex:496142]  * Using this library instead of the unchecked operations eliminates an entire
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Planning vulnerability scan approach**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg --files contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 10ms:
[codex:496142] contracts/cache/solpp-generated-contracts/ERC1155Token.sol
[codex:496142] contracts/cache/solpp-generated-contracts/CashMarket.sol
[codex:496142] contracts/@openzeppelin/contracts/utils/SafeCast.sol
[codex:496142] contracts/cache/solpp-generated-contracts/Portfolios.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/ERC1155Base.sol
[codex:496142] contracts/cache/solpp-generated-contracts/storage/StorageSlot.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Directory.sol
[codex:496142] contracts/cache/solpp-generated-contracts/storage/PortfoliosStorage.sol
[codex:496142] contracts/cache/solpp-generated-contracts/storage/EscrowStorage.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/RiskFramework.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Common.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/MockLiquidation.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Governed.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Liquidation.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol
[codex:496142] contracts/cache/solpp-generated-contracts/Escrow.sol
[codex:496142] contracts/cache/solpp-generated-contracts/ERC1155Trade.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableUpgradeabilityProxy.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Ownable.sol
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Preparing to audit core contracts**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,220p' contracts/cache/solpp-generated-contracts/utils/Governed.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "../interface/IEscrowCallable.sol";
[codex:496142] import "../interface/IPortfoliosCallable.sol";
[codex:496142] 
[codex:496142] import "../upgradeable/Ownable.sol";
[codex:496142] import "../upgradeable/Initializable.sol";
[codex:496142] 
[codex:496142] import "./Directory.sol";
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @title Governed
[codex:496142]  * A base contract to set the contract references on each contract.
[codex:496142]  */
[codex:496142] contract Governed is OpenZeppelinUpgradesOwnable, Initializable {
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing Ownable initialization risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,240p' contracts/cache/solpp-generated-contracts/utils/Directory.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./Governed.sol";
[codex:496142] import "../upgradeable/Ownable.sol";
[codex:496142] import "../upgradeable/Initializable.sol";
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @title Directory
[codex:496142]  * Stores the addresses and the dependency map for the entire Notional system. Allows
[codex:496142]  * for the system to upgrade other contracts in the system.
[codex:496142]  */
[codex:496142] contract Directory is OpenZeppelinUpgradesOwnable, Initializable {
[codex:496142]     mapping(uint256 => address) public contracts;
[codex:496142]     event SetContract(Governed.CoreContracts name, address contractAddress);
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Assessing potential reentrancy and access control risks**
[codex:496142] 
[codex:496142] I'm reviewing key contracts focusing on reentrancy and access control, especially around upgradeable components like Directory and CashMarket. I notice `initializeDependencies` in CashMarket can be called by anyone multiple times—potentially resetting dependencies—but it may not be harmful since addresses come from Directory. Still, timing gaps before Directory is set might allow griefing by setting zero addresses. I’m shifting focus now to Escrow, which interacts with external tokens and might have more typical reentrancy risks. Let's keep digging!
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./utils/Governed.sol";
[codex:496142] import "./utils/Liquidation.sol";
[codex:496142] 
[codex:496142] import "./lib/SafeInt256.sol";
[codex:496142] import "./lib/SafeMath.sol";
[codex:496142] import "./lib/SafeUInt128.sol";
[codex:496142] import "./lib/SafeERC20.sol";
[codex:496142] 
[codex:496142] import "./interface/IERC20.sol";
[codex:496142] import "./interface/IERC777.sol";
[codex:496142] import "./interface/IERC777Recipient.sol";
[codex:496142] import "./interface/IERC1820Registry.sol";
[codex:496142] import "./interface/IAggregator.sol";
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Continuing to review external functions**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '260,640p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * @notice Evaluates whether or not a currency id is valid
[codex:496142]      * @param currency currency id
[codex:496142]      * @return true if the currency is valid
[codex:496142]      */
[codex:496142]     function isValidCurrency(uint16 currency) public override view returns (bool) {
[codex:496142]         return currency <= maxCurrencyId;
[codex:496142]     }
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * @notice Getter method for exchange rates
[codex:496142]      * @param base token address for the base currency
[codex:496142]      * @param quote token address for the quote currency
[codex:496142]      * @return ExchangeRate struct
[codex:496142]      */
[codex:496142]     function getExchangeRate(uint16 base, uint16 quote) external view returns (ExchangeRate.Rate memory) {
[codex:496142]         return exchangeRateOracles[base][quote];
[codex:496142]     }
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing reentrancy risks around token transfers**
[codex:496142] 
[codex:496142] I'm examining potential reentrancy issues in deposit and withdraw logic, focusing on external token calls after state updates. I'm considering how ERC777 hooks like `tokensToSend` and `tokensReceived` could enable reentrancy, especially since no reentrancy guard is present. The sequence of balance updates before external calls may mitigate some risks, but cross-calls during token transfers could still be problematic. I also spotted a suspicious ERC1820 registry call with `address(0)` instead of the contract's address for implementing the tokens recipient interface, which might be a bug worth investigating by checking related storage constants.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,220p' contracts/cache/solpp-generated-contracts/storage/EscrowStorage.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] import "./StorageSlot.sol";
[codex:496142] import "../utils/ExchangeRate.sol";
[codex:496142] 
[codex:496142] library EscrowStorageSlot {
[codex:496142]     bytes32 internal constant S_LIQUIDTION_DISCOUNT = 0xc59867f3ae9774eb97a98f3fbbe736c1ee23580155c8697cd969a2d1f3968653;
[codex:496142]     bytes32 internal constant S_SETTLEMENT_DISCOUNT = 0xdafe5151c63bd8d33bc03c4916ccca379c56861736a985b1918a3e0c0347707b;
[codex:496142]     bytes32 internal constant S_LIQUIDITY_TOKEN_REPO_INCENTIVE = 0x86f55df6f3f1d5533a992d6e1355f3adb2afe0c3064672910d2518432c35e770;
[codex:496142]     bytes32 internal constant S_LIQUIDITY_HAIRCUT = 0x28971522a5177c8ac90bf7d9be4d04d6bc61da2e7623c4392f5b9494ac42e4d0;
[codex:496142] 
[codex:496142]     function _liquidationDiscount() internal view returns (uint128) {
[codex:496142]         return uint128(StorageSlot._getStorageUint(S_LIQUIDTION_DISCOUNT));
[codex:496142]     }
[codex:496142] 
[codex:496142]     function _settlementDiscount() internal view returns (uint128) {
[codex:496142]         return uint128(StorageSlot._getStorageUint(S_SETTLEMENT_DISCOUNT));
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing ERC1820 registry usage in Escrow**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,240p' contracts/cache/solpp-generated-contracts/ERC1155Trade.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./utils/Common.sol";
[codex:496142] import "./utils/ERC1155Base.sol";
[codex:496142] import "./lib/SafeUInt128.sol";
[codex:496142] 
[codex:496142] import "./interface/IERC1155TokenReceiver.sol";
[codex:496142] 
[codex:496142] import "./CashMarket.sol";
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @notice Implements the ERC1155 token standard for trading OTC and batch operations over Notional markets.
[codex:496142]  */
[codex:496142] contract ERC1155Trade is ERC1155Base {
[codex:496142]     using SafeUInt128 for uint128;
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Continuing near withdraw or callback**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '240,520p' contracts/cache/solpp-generated-contracts/ERC1155Trade.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142]                     (minRate, maxRate) = abi.decode(trades[i].slippageData, (uint32, uint32));
[codex:496142]                     maxfCash = Common.MAX_UINT_128;
[codex:496142]                 } else if (trades[i].slippageData.length == 96) {
[codex:496142]                     (minRate, maxRate, maxfCash) = abi.decode(trades[i].slippageData, (uint32, uint32, uint128));
[codex:496142]                 } else {
[codex:496142]                     maxRate = Common.MAX_UINT_32;
[codex:496142]                     maxfCash = Common.MAX_UINT_128;
[codex:496142]                 }
[codex:496142] 
[codex:496142]                 // Add Liquidity always adds the specified amount of cash or it fails out.
[codex:496142]                 tradeRecord[i].currencyId = fcg.currency;
[codex:496142]                 tradeRecord[i].tradeType = Common.TradeType.AddLiquidity;
[codex:496142]                 tradeRecord[i].cash = trades[i].amount;
[codex:496142]                 fc.addLiquidityOnBehalf(account, trades[i].maturity, trades[i].amount, maxfCash, minRate, maxRate);
[codex:496142]             } else if (trades[i].tradeType == Common.TradeType.RemoveLiquidity) {
[codex:496142]                 tradeRecord[i].currencyId = fcg.currency;
[codex:496142]                 tradeRecord[i].tradeType = Common.TradeType.RemoveLiquidity;
[codex:496142]                 tradeRecord[i].cash = fc.removeLiquidityOnBehalf(account, trades[i].maturity, trades[i].amount);
[codex:496142]             }
[codex:496142]         }
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Reviewing ERC1155Trade and ERC1155Base relation**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/ERC1155Base.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "../utils/Common.sol";
[codex:496142] import "../utils/Governed.sol";
[codex:496142] 
[codex:496142] import "../interface/IERC165.sol";
[codex:496142] import "../interface/IERC1155.sol";
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @notice Base class for ERC1155 contracts. Implements balanceOf and operator methods.
[codex:496142]  */
[codex:496142] abstract contract ERC1155Base is Governed, IERC1155, IERC165 {
[codex:496142]     // bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))
[codex:496142]     bytes4 internal constant ERC1155_ACCEPTED = 0xf23a6e61;
[codex:496142]     // bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing ERC1155Trade transfer logic and potential risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./utils/Common.sol";
[codex:496142] import "./utils/Governed.sol";
[codex:496142] 
[codex:496142] import "./lib/SafeMath.sol";
[codex:496142] import "./lib/SafeInt256.sol";
[codex:496142] import "./lib/SafeUInt128.sol";
[codex:496142] import "./utils/RiskFramework.sol";
[codex:496142] 
[codex:496142] import "./interface/IRateOracle.sol";
[codex:496142] import "./interface/IPortfoliosCallable.sol";
[codex:496142] 
[codex:496142] import "./storage/PortfoliosStorage.sol";
[codex:496142] import "./CashMarket.sol";
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Inspecting external functions in Portfolios**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "external" contracts/cache/solpp-generated-contracts/Portfolios.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 82:    function initialize(address directory, address owner, uint16 numCurrencies, uint256 maxAssets) external initializer {
[codex:496142] 103:    function setHaircuts(uint128 liquidityHaircut, uint128 fCashHaircut, uint128 fCashMaxHaircut) external onlyOwner {
[codex:496142] 116:    function setNumCurrencies(uint16 numCurrencies) external override {
[codex:496142] 127:    function setMaxAssets(uint256 maxAssets) external onlyOwner {
[codex:496142] 149:    ) external onlyOwner {
[codex:496142] 192:    ) external onlyOwner {
[codex:496142] 287:     * the free collateral parameters. Generally, external developers should not need to call this function. It is used
[codex:496142] 398:    ) external override {
[codex:496142] 426:    ) external override {
[codex:496142] 475:    ) external override {
[codex:496142] 516:    ) external override {
[codex:496142] 575:     * have negative cash and counterparties need to settle against them. Generally, external developers
[codex:496142] 589:     * @notice Settle a batch of accounts. See note for `settleMaturedAssets`, external developers should not need
[codex:496142] 593:    function settleMaturedAssetsBatch(address[] calldata accounts) external override {
[codex:496142] 689:    ) external override returns (uint128) {
[codex:496142] 715:    ) external override returns (uint128, uint128) {
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Inspecting functions near line 287**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '260,420p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]      * @notice Public method for searching for a asset in an account.
[codex:496142]      * @param account account to search
[codex:496142]      * @param assetType the type of asset to search for
[codex:496142]      * @param cashGroupId the cash group id
[codex:496142]      * @param instrumentId the instrument id
[codex:496142]      * @param maturity the maturity timestamp of the asset
[codex:496142]      * @return (asset, index of asset)
[codex:496142]      */
[codex:496142]     function searchAccountAsset(
[codex:496142]         address account,
[codex:496142]         bytes1 assetType,
[codex:496142]         uint8 cashGroupId,
[codex:496142]         uint16 instrumentId,
[codex:496142]         uint32 maturity
[codex:496142]     ) public override view returns (Common.Asset memory, uint256) {
[codex:496142]         Common.Asset[] storage portfolio = _accountAssets[account];
[codex:496142]         (
[codex:496142]             bool found, uint256 index, /* uint128 */, /* bool */ 
[codex:496142]         ) = _searchAsset(portfolio, assetType, cashGroupId, instrumentId, maturity, false);
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Continuing to explore upsertAccountAssetBatch**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '420,620p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]      * @param checkFreeCollateral allows free collateral check to be skipped (BE CAREFUL WITH THIS!)
[codex:496142]      */
[codex:496142]     function upsertAccountAssetBatch(
[codex:496142]         address account,
[codex:496142]         Common.Asset[] calldata assets,
[codex:496142]         bool checkFreeCollateral
[codex:496142]     ) external override {
[codex:496142]         if (assets.length == 0) {
[codex:496142]             return;
[codex:496142]         }
[codex:496142] 
[codex:496142]         // Here we check that all the cash group ids are the same if the liquidation auction
[codex:496142]         // is not calling this function. If this is not the case then we have an issue. Cash markets
[codex:496142]         // should only ever call this function with the same cash group id for all the assets
[codex:496142]         // they submit.
[codex:496142]         uint16 id = assets[0].cashGroupId;
[codex:496142]         for (uint256 i = 1; i < assets.length; i++) {
[codex:496142]             require(assets[i].cashGroupId == id, "53");
[codex:496142]         }
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Checking external call order**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '620,980p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]         uint256 length = portfolio.length;
[codex:496142] 
[codex:496142]         // Loop through the portfolio and find the assets that have matured.
[codex:496142]         for (uint256 i; i < length; i++) {
[codex:496142]             if (portfolio[i].maturity <= blockTime) {
[codex:496142]                 Common.Asset memory asset = portfolio[i];
[codex:496142]                 // Here we are dealing with a matured asset. We get the appropriate currency for
[codex:496142]                 // the instrument. We may want to cache this somehow, but in all likelihood there
[codex:496142]                 // will not be multiple matured assets in the same cash group.
[codex:496142]                 Common.CashGroup memory fcg = cashGroups[asset.cashGroupId];
[codex:496142]                 uint16 currency = fcg.currency;
[codex:496142] 
[codex:496142]                 if (Common.isCashPayer(asset.assetType)) {
[codex:496142]                     // If the asset is a payer, we subtract from the cash balance
[codex:496142]                     settledCash[currency] = settledCash[currency].sub(asset.notional);
[codex:496142]                 } else if (Common.isCashReceiver(asset.assetType)) {
[codex:496142]                     // If the asset is a receiver, we add to the cash balance
[codex:496142]                     settledCash[currency] = settledCash[currency].add(asset.notional);
[codex:496142]                 } else if (Common.isLiquidityToken(asset.assetType)) {
[codex:496142]                     // Settling liquidity tokens is a bit more involved since we need to remove
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Investigating potential reentrancy in escrow cash unlocking**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "unlockCurrentCash" -n contracts/cache/solpp-generated-contracts/Escrow.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 638:    function unlockCurrentCash(
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '620,760p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]             cashBalances[cg.currency][G_RESERVE_ACCOUNT] = cashBalances[cg.currency][G_RESERVE_ACCOUNT]
[codex:496142]                 .add(fee);
[codex:496142]         }
[codex:496142] 
[codex:496142]         cashBalances[cg.currency][account] = cashBalances[cg.currency][account].add(value.sub(fee));
[codex:496142] 
[codex:496142]         int256 balance = cashBalances[cg.currency][msg.sender];
[codex:496142]         cashBalances[cg.currency][msg.sender] = balance.subNoNeg(value);
[codex:496142]     }
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * @notice Adds or removes collateral from the fCash market when the portfolio is trading positions
[codex:496142]      * as a result of settlement or liquidation.
[codex:496142]      * @dev skip
[codex:496142]      * @param currency the currency group of the collateral
[codex:496142]      * @param cashMarket the address of the fCash market to transfer between
[codex:496142]      * @param amount the amount to transfer
[codex:496142]      */
[codex:496142]     function unlockCurrentCash(
[codex:496142]         uint16 currency,
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Checking for security vulnerabilities**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "delegatecall" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Proxy.sol:41:      let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Proxy.sol:47:      // delegatecall returns 0 on error.
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableUpgradeabilityProxy.sol:26:      (bool success,) = _logic.delegatecall(_data);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/UpgradeabilityProxy.sol:25:      (bool success,) = _logic.delegatecall(_data);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/BaseAdminUpgradeabilityProxy.sol:89:    (bool success,) = newImplementation.delegatecall(data);
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Reviewing proxy upgrade patterns**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/upgradeable/InitializableAdminUpgradeabilityProxy.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import './BaseAdminUpgradeabilityProxy.sol';
[codex:496142] import './InitializableUpgradeabilityProxy.sol';
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @title InitializableAdminUpgradeabilityProxy
[codex:496142]  * @dev Extends from BaseAdminUpgradeabilityProxy with an initializer for 
[codex:496142]  * initializing the implementation, admin, and init data.
[codex:496142]  */
[codex:496142] contract InitializableAdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, InitializableUpgradeabilityProxy {
[codex:496142]   /**
[codex:496142]    * Contract initializer.
[codex:496142]    * @param _logic address of the initial implementation.
[codex:496142]    * @param _admin Address of the proxy administrator.
[codex:496142]    * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
[codex:496142]    * It should include the signature and the parameters of the function to be called, as described in
[codex:496142]    * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Evaluating upgradeable proxy initialization risks**
[codex:496142] 
[codex:496142] I'll consider how unprotected initialization in upgradeable proxies is typical but risky if deployment misses calling initializers, noting that it’s more a deployment concern than a direct code flaw. I’m weighing whether to treat the upgradeable folder as first-party or third-party and deciding to focus more on potential issues in the user’s own ERC1155Token code next.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/ERC1155Token.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./utils/Common.sol";
[codex:496142] import "./utils/ERC1155Base.sol";
[codex:496142] 
[codex:496142] import "./interface/IERC1155TokenReceiver.sol";
[codex:496142] 
[codex:496142] import "./CashMarket.sol";
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @notice Implements the ERC1155 token standard for transferring fCash tokens within Notional. ERC1155 ids
[codex:496142]  * encode an identifier that represents assets that are fungible with each other. For example, two fCash tokens
[codex:496142]  * that asset in the same market and mature at the same time are fungible with each other and therefore will have the
[codex:496142]  * same id. `CASH_PAYER` tokens are not transferrable because they have negative value.
[codex:496142]  */
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing potential reentrancy risks in token transfers and deposit flows**
[codex:496142] 
[codex:496142] I'm examining how ERC1155 transfers and ERC777 token deposits handle reentrancy, noting that state changes usually happen before external calls, which should help prevent double spending. Still, reentrancy via tokensReceived in Escrow might allow callbacks before deposits finalize, though balances seem safe from premature use. I'm curious whether other modules like ExchangeRate or Liquidation might present oracle or calculation vulnerabilities, so I'll explore those next.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "../lib/SafeInt256.sol";
[codex:496142] import "../lib/SafeMath.sol";
[codex:496142] import "../utils/Common.sol";
[codex:496142] import "../interface/IAggregator.sol";
[codex:496142] 
[codex:496142] import "@openzeppelin/contracts/utils/SafeCast.sol";
[codex:496142] 
[codex:496142] 
[codex:496142] library ExchangeRate {
[codex:496142]     using SafeInt256 for int256;
[codex:496142]     using SafeMath for uint256;
[codex:496142] 
[codex:496142]     /**
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Assessing oracle data risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,120p' contracts/cache/solpp-generated-contracts/interface/IAggregator.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] /** Chainlink Aggregator Price Feed Interface */
[codex:496142] interface IAggregator {
[codex:496142]   function latestAnswer() external view returns (int256);
[codex:496142]   function latestTimestamp() external view returns (uint256);
[codex:496142]   function latestRound() external view returns (uint256);
[codex:496142]   function getAnswer(uint256 roundId) external view returns (int256);
[codex:496142]   function getTimestamp(uint256 roundId) external view returns (uint256);
[codex:496142] 
[codex:496142]   event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 timestamp);
[codex:496142]   event NewRound(uint256 indexed roundId, address indexed startedBy);
[codex:496142] }
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Inspecting Liquidation.sol for oracle usage**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/Liquidation.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.4;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./Common.sol";
[codex:496142] import "./ExchangeRate.sol";
[codex:496142] 
[codex:496142] import "../lib/SafeInt256.sol";
[codex:496142] import "../lib/SafeMath.sol";
[codex:496142] import "../lib/SafeUInt128.sol";
[codex:496142] 
[codex:496142] import "../interface/IPortfoliosCallable.sol";
[codex:496142] import "../storage/EscrowStorage.sol";
[codex:496142] 
[codex:496142] import "@openzeppelin/contracts/utils/SafeCast.sol";
[codex:496142] 
[codex:496142] library Liquidation {
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Inspecting Escrow for reentrancy risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "rg -n \"safeTransfer|send\\(|call\\{value\" contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 387:        (bool success, ) = to.call{value: amount}("");
[codex:496142] 426:            SafeERC20.safeTransferFrom(IERC20(token), from, address(this), amount);
[codex:496142] 433:            SafeERC20.safeTransferFrom(IERC20(token), from, address(this), amount);
[codex:496142] 498:            IERC777(token).send(to, amount, "0x");
[codex:496142] 500:            SafeERC20.safeTransfer(IERC20(token), to, amount);
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Assessing potential contract vulnerabilities**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "ECDSA|ecrecover|signature" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 9ms:
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:6:import "./ECDSA.sol";
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:44:  function deploySigned(uint256 _salt, address _logic, address _admin, bytes memory _data, bytes memory _signature) public returns (address) {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:45:    address signer = getSigner(_salt, _logic, _admin, _data, _signature);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:46:    require(signer != address(0), "Invalid signature");
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:65:  function getSigner(uint256 _salt, address _logic, address _admin, bytes memory _data, bytes memory _signature) public view returns (address) {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:66:    bytes32 msgHash = OpenZeppelinUpgradesECDSA.toEthSignedMessageHash(
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:74:    return OpenZeppelinUpgradesECDSA.recover(msgHash, _signature);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableAdminUpgradeabilityProxy.sol:19:   * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableUpgradeabilityProxy.sol:17:   * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/BaseAdminUpgradeabilityProxy.sol:84:   * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ProxyAdmin.sol:64:   * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/UpgradeabilityProxy.sol:17:   * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:6: * @title Elliptic curve signature operations
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:8: * TODO Remove this library once solidity supports passing a signature to ecrecover.
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:11: * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/79dd498b16b957399f84b9aa7e720f98f9eb83e3/contracts/cryptography/ECDSA.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:17:library OpenZeppelinUpgradesECDSA {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:19:     * @dev Recover signer address from a message by using their signature
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:21:     * @param signature bytes signature, the signature is generated using web3.eth.sign()
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:23:    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:24:        // Check the signature length
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Checking signature validation in proxy factory**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./InitializableAdminUpgradeabilityProxy.sol";
[codex:496142] import "./ECDSA.sol";
[codex:496142] 
[codex:496142] // Renamed from ProxyFactory because of name clash with Typechain
[codex:496142] contract CreateProxyFactory {
[codex:496142]   
[codex:496142]   event ProxyCreated(address proxy);
[codex:496142] 
[codex:496142]   bytes32 private contractCodeHash;
[codex:496142] 
[codex:496142]   constructor() public {
[codex:496142]     contractCodeHash = keccak256(
[codex:496142]       type(InitializableAdminUpgradeabilityProxy).creationCode
[codex:496142]     );
[codex:496142]   }
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing potential signature and reentrancy risks**
[codex:496142] 
[codex:496142] I'm examining how CreateProxyFactory handles signatures, focusing on whether `abi.encodePacked` with dynamic `_data` could cause signature collisions or ambiguities. It seems fixed-length fields before `_data` prevent ambiguity, and the fixed address at the end helps avoid collisions there. However, I notice possible cross-chain replay risks since chain IDs aren’t incorporated, plus some concerns about unchecked external calls and reentrancy, especially involving collateral checks and functions in CashMarket and Escrow contracts. I'll drill into CashMarket functions next to understand state update orders and external interactions better.
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "takeCurrentCash|takefCash|trade" contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 27:    // This is used in _tradeCalculation to shift the ln calculation
[codex:496142] 60:        // This is the implied rate that we use to smooth the anchor rate between trades.
[codex:496142] 77:    // The maximum trade size denominated in local currency
[codex:496142] 86:    // The fee as a percentage of the cash traded given to the protocol
[codex:496142] 134:     * @notice Sets the maximum amount that can be traded in a single trade.
[codex:496142] 136:     * @param amount the max trade size
[codex:496142] 145:     * @notice Sets fee parameters for the market. Liquidity Fees are set as basis points and shift the traded
[codex:496142] 150:     * @param liquidityFee a change in the traded exchange rate paid to liquidity providers
[codex:496142] 171:     * @notice Emitted when max trade size is updated, takes effect immediately
[codex:496142] 172:     * @param maxTradeSize the new max trade size
[codex:496142] 185:     * @param account the account that performed the trade
[codex:496142] 186:     * @param maturity the maturity that this trade affects
[codex:496142] 201:     * @param account the account that performed the trade
[codex:496142] 202:     * @param maturity the maturity that this trade affects
[codex:496142] 217:     * @param account the account that performed the trade
[codex:496142] 218:     * @param maturity the maturity that this trade affects
[codex:496142] 227:     * @param account the account that performed the trade
[codex:496142] 228:     * @param maturity the maturity that this trade affects
[codex:496142] 253:     * @param maxTime after this time the trade will fail
[codex:496142] 379:        // Move the cash into the contract's cash balances account. This must happen before the trade
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Investigating trade functions for reentrancy**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '600,780p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]      * @return the amount of cash this would purchase, returns 0 if the trade will fail
[codex:496142]      */
[codex:496142]     function getfCashToCurrentCashAtTime(
[codex:496142]         uint32 maturity,
[codex:496142]         uint128 fCashAmount,
[codex:496142]         uint32 blockTime
[codex:496142]     ) public view returns (uint128) {
[codex:496142]         Market memory interimMarket = markets[maturity];
[codex:496142]         require(blockTime < maturity, "41");
[codex:496142] 
[codex:496142]         uint32 timeToMaturity = maturity - blockTime;
[codex:496142] 
[codex:496142]         ( /* market */, uint128 cash) = _tradeCalculation(interimMarket, int256(fCashAmount), timeToMaturity);
[codex:496142]         // On trade failure, we will simply return 0
[codex:496142]         uint128 fee = _calculateTransactionFee(cash, timeToMaturity);
[codex:496142]         return cash.sub(fee);
[codex:496142]     }
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * @notice Receive cash in exchange for a fCash obligation. Equivalent to borrowing
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Continuing the process**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '780,940p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]         // This will do a free collateral check before it adds to the portfolio.
[codex:496142]         Portfolios().upsertAccountAsset(msg.sender, asset, CHECK_FC);
[codex:496142] 
[codex:496142]         return cash;
[codex:496142]     }
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * @notice Used by ERC1155 contract to take fCash
[codex:496142]      * @dev skip
[codex:496142]      */
[codex:496142]     function takefCashOnBehalf(
[codex:496142]         address account,
[codex:496142]         uint32 maturity,
[codex:496142]         uint128 fCashAmount,
[codex:496142]         uint32 minImpliedRate
[codex:496142]     ) external returns (uint128) {
[codex:496142]         require(calledByERC1155Trade(), "20");
[codex:496142] 
[codex:496142]         (Common.Asset memory asset, uint128 cash) = _takefCash(
[codex:496142]             account,
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing potential reentrancy and access controls**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "initializeDependencies" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 9ms:
[codex:496142] contracts/cache/solpp-generated-contracts/CashMarket.sol:37:    function initializeDependencies() external {
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing ERC1155 transfer methods**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/Common.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.4;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "../lib/SafeMath.sol";
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @notice Contains all the structs and convenience methods for Notional contracts.
[codex:496142]  */
[codex:496142] library Common {
[codex:496142]     using SafeMath for uint256;
[codex:496142] 
[codex:496142]     bytes1 internal constant MASK_POOL = 0x01; // 0000 0001
[codex:496142]     bytes1 internal constant MASK_NET = 0x02; // 0000 0010
[codex:496142]     bytes1 internal constant MASK_ORDER = 0x04; // 0000 0100
[codex:496142]     bytes1 internal constant MASK_CASH = 0x08; // 0000 1000
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Investigating potential vulnerabilities in asset methods**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_upsertAsset|_reduceAsset|_removeAsset" contracts/cache/solpp-generated-contracts/Portfolios.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 404:        _upsertAsset(portfolio, asset, false);
[codex:496142] 445:            _upsertAsset(portfolio, assets[i], false);
[codex:496142] 486:        _reduceAsset(fromPortfolio, fromPortfolio[index], index, value);
[codex:496142] 489:        _upsertAsset(
[codex:496142] 539:        _upsertAsset(
[codex:496142] 552:        _upsertAsset(
[codex:496142] 655:                _removeAsset(portfolio, i);
[codex:496142] 780:                    _removeAsset(portfolio, i);
[codex:496142] 786:                    _reduceAsset(portfolio, portfolio[i], i, notionalToTransfer);
[codex:496142] 790:                _upsertAsset(liquidatorPortfolio, asset, false);
[codex:496142] 909:            _upsertAsset(accountStorage, state.portfolioChanges[i], true);
[codex:496142] 1013:    function _upsertAsset(
[codex:496142] 1047:                _reduceAsset(portfolio, portfolio[index], index, asset.notional);
[codex:496142] 1068:    function _reduceAsset(
[codex:496142] 1078:            _removeAsset(portfolio, index);
[codex:496142] 1086:     * @notice Removes a asset from a portfolio, used when assets are transferred by _reduceAsset
[codex:496142] 1091:    function _removeAsset(Common.Asset[] storage portfolio, uint256 index) internal {
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '980,1140p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]         uint16 instrumentId,
[codex:496142]         uint32 maturity,
[codex:496142]         bool findCounterparty
[codex:496142]     ) internal view returns (bool, uint256, uint128, bool) {
[codex:496142]         uint256 length = portfolio.length;
[codex:496142]         if (length == 0) {
[codex:496142]             return (false, length, 0, false);
[codex:496142]         }
[codex:496142] 
[codex:496142]         for (uint256 i; i < length; i++) {
[codex:496142]             Common.Asset storage t = portfolio[i];
[codex:496142]             if (t.cashGroupId != cashGroupId) continue;
[codex:496142]             if (t.instrumentId != instrumentId) continue;
[codex:496142]             if (t.maturity != maturity) continue;
[codex:496142] 
[codex:496142]             bytes1 s = t.assetType;
[codex:496142]             if (s == assetType) {
[codex:496142]                 return (true, i, t.notional, false);
[codex:496142]             } else if (findCounterparty && s == Common.makeCounterparty(assetType)) {
[codex:496142]                 return (true, i, t.notional, true);
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing off-by-one asset limit and settlement logic**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "settleLiquidityToken" -n contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 7ms:
[codex:496142] 531:    function settleLiquidityToken(
[codex:496142] 538:        (uint128 cash, uint128 fCash) = _settleLiquidityToken(tokenAmount, maturity);
[codex:496142] 558:    function _settleLiquidityToken(uint128 tokenAmount, uint32 maturity) internal returns (uint128, uint128) {
[codex:496142] 920:        (cashAmount, fCashAmount) = _settleLiquidityToken(tokensToRemove, maturity);
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '500,580p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]             CASH_GROUP,
[codex:496142]             0,
[codex:496142]             maturity,
[codex:496142]             // We mark this as a "PAYER" liquidity token so the portfolio reduces the balance
[codex:496142]             Common.makeCounterparty(Common.getLiquidityToken()),
[codex:496142]             0,
[codex:496142]             amount
[codex:496142]         );
[codex:496142] 
[codex:496142]         // This is the CASH_RECEIVER
[codex:496142]         assets[1] = Common.Asset(
[codex:496142]             CASH_GROUP,
[codex:496142]             0,
[codex:496142]             maturity,
[codex:496142]             Common.getCashReceiver(),
[codex:496142]             0,
[codex:496142]             fCashAmount
[codex:496142]         );
[codex:496142] 
[codex:496142]         emit RemoveLiquidity(account, maturity, amount, fCashAmount, cash);
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Investigating potential vulnerabilities in CashMarket**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_isValidBlock" contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 313:        _isValidBlock(maturity, maxTime);
[codex:496142] 686:        _isValidBlock(maturity, maxTime);
[codex:496142] 818:        _isValidBlock(maturity, maxTime);
[codex:496142] 1036:    function _isValidBlock(uint32 maturity, uint32 maxTime) internal view returns (bool) {
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1000,1080p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]         return ids;
[codex:496142]     }
[codex:496142] 
[codex:496142]     /*********** Internal Methods ********************/
[codex:496142] 
[codex:496142]     function _calculateTransactionFee(uint128 cash, uint32 timeToMaturity) internal view returns (uint128) {
[codex:496142]         return SafeCast.toUint128(
[codex:496142]             uint256(cash)
[codex:496142]                 .mul(G_TRANSACTION_FEE)
[codex:496142]                 .mul(timeToMaturity)
[codex:496142]                 .div(G_MATURITY_LENGTH)
[codex:496142]                 .div(Common.DECIMALS)
[codex:496142]         );
[codex:496142]     }
[codex:496142] 
[codex:496142]     function _updateMarket(uint32 maturity, int256 fCashAmount) internal returns (uint128) {
[codex:496142]         Market memory interimMarket = markets[maturity];
[codex:496142]         uint32 timeToMaturity = maturity - uint32(block.timestamp);
[codex:496142]         uint128 cash;
[codex:496142]         // Here we are selling fCash in return for cash
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Examining maturity and rateScalar checks**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "rateScalar" contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 58:        uint16 rateScalar;
[codex:496142] 123:     * @param rateScalar the sensitivity of the liquidity curve to changes
[codex:496142] 125:    function setRateFactors(uint32 rateAnchor, uint16 rateScalar) external onlyOwner {
[codex:496142] 126:        require(rateScalar > 0 && rateAnchor > 0, "14");
[codex:496142] 127:        G_RATE_SCALAR = rateScalar;
[codex:496142] 130:        emit UpdateRateFactors(rateAnchor, rateScalar);
[codex:496142] 166:     * @param rateScalar the new rate scalar
[codex:496142] 168:    event UpdateRateFactors(uint32 rateAnchor, uint16 rateScalar);
[codex:496142] 320:            // We check the rateScalar to determine if the market exists or not. The reason for this is that once we
[codex:496142] 321:            // initialize a market we will set the rateScalar and rateAnchor based on global values for the duration
[codex:496142] 323:            // determine the initial exchange rate of the market (taking into account rateScalar and rateAnchor, of course).
[codex:496142] 324:            // Governance will never allow rateScalar to be set to 0.
[codex:496142] 325:            if (market.rateScalar == 0) {
[codex:496142] 326:                market.rateScalar = G_RATE_SCALAR;
[codex:496142] 936:     *  - `rateScalar`: determines the slippage rate during trading
[codex:496142] 1223:        int256 rateScalar = int256(market.rateScalar).mul(G_MATURITY_LENGTH).div(timeToMaturity);
[codex:496142] 1224:        if (rateScalar > Common.MAX_UINT_32) return (0, false);
[codex:496142] 1228:        int256 rate = ((abdkResult - LN_1E18) / rateScalar) + market.rateAnchor;
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Reviewing market initialization and trade calculations**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_getNewRateAnchor|_getExchangeRate" -n contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142] 962:            (market.rateAnchor, success) = _getNewRateAnchor(market, timeToMaturity);
[codex:496142] 965:            (rate, success) = _getExchangeRate(market, timeToMaturity, 0);
[codex:496142] 1069:        (interimMarket.rateAnchor, success) = _getNewRateAnchor(interimMarket, timeToMaturity);
[codex:496142] 1075:        (tradeExchangeRate, success) = _getExchangeRate(interimMarket, timeToMaturity, fCashAmount);
[codex:496142] 1134:    function _getNewRateAnchor(Market memory market, uint32 timeToMaturity) internal view returns (uint32, bool) {
[codex:496142] 1155:        (uint32 exchangeRate, bool success) = _getExchangeRate(market, timeToMaturity, 0);
[codex:496142] 1198:    function _getExchangeRate(
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1120,1220p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]         interimMarket.lastImpliedRate = impliedRate;
[codex:496142] 
[codex:496142]         return (interimMarket, cash);
[codex:496142]     }
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * The rate anchor will update as the market rolls down to maturity. The calculation is:
[codex:496142]      * newAnchor = anchor - [currentImpliedRate - lastImpliedRate] * (timeToMaturity / MATURITY_SIZE)
[codex:496142]      * where:
[codex:496142]      * lastImpliedRate = (exchangeRate' - 1) * (MATURITY_SIZE / timeToMaturity')
[codex:496142]      *      (calculated when the last trade in the market was made)
[codex:496142]      * timeToMaturity = maturity - currentBlockTime
[codex:496142]      * @return the new rate anchor and a boolean that signifies success
[codex:496142]      */
[codex:496142]     function _getNewRateAnchor(Market memory market, uint32 timeToMaturity) internal view returns (uint32, bool) {
[codex:496142]         (uint32 impliedRate, bool success) = _getImpliedRate(market, timeToMaturity);
[codex:496142] 
[codex:496142]         if (!success) return (0, false);
[codex:496142] 
[codex:496142]         int256 rateDifference = int256(impliedRate)
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Evaluating potential smart contract vulnerabilities**
[codex:496142] 
[codex:496142] I've analyzed various contract behaviors, focusing on trade failure conditions, proxy patterns, ERC1155 transfer logic, ERC777 quirks, token decimals handling, and reentrancy scenarios. I'm especially exploring reentrancy risks around token transfers and withdrawal ordering, signature replay risks without domain separation, and potential issues in exchange rate use and free collateral checks. There is a lot to unpack here, so I'll keep probing these nuanced cases to pinpoint any subtle vulnerabilities.
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_validateCurrencies" -n contracts/cache/solpp-generated-contracts/Escrow.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 7ms:
[codex:496142] 702:        Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 748:        Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 828:        Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 866:        Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 965:            Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 1004:        Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 1057:    function _validateCurrencies(
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1040,1120p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 
[codex:496142]         require(accountLocalBalance < 0, "21");
[codex:496142] 
[codex:496142]         if (accountLocalBalance.neg() < reserveLocalBalance) {
[codex:496142]             cashBalances[localCurrency][account] = 0;
[codex:496142]             cashBalances[localCurrency][G_RESERVE_ACCOUNT] = reserveLocalBalance.subNoNeg(accountLocalBalance.neg());
[codex:496142]         } else {
[codex:496142]             cashBalances[localCurrency][account] = accountLocalBalance.add(reserveLocalBalance);
[codex:496142]             cashBalances[localCurrency][G_RESERVE_ACCOUNT] = 0;
[codex:496142]         }
[codex:496142]     }
[codex:496142] 
[codex:496142]     /********** Settle Cash / Liquidation *************/
[codex:496142] 
[codex:496142]     /********** Internal Methods *********************/
[codex:496142] 
[codex:496142]     /** @notice Validates currencies and returns their rate parameters object */
[codex:496142]     function _validateCurrencies(
[codex:496142]         uint16 localCurrency,
[codex:496142]         uint16 collateralCurrency
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing potential vulnerabilities and external calls**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/Initializable.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity >=0.4.24 <0.7.0;
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @title Initializable
[codex:496142]  *
[codex:496142]  * @dev Helper contract to support initializer functions. To use it, replace
[codex:496142]  * the constructor with a function that has the `initializer` modifier.
[codex:496142]  * WARNING: Unlike constructors, initializer functions must be manually
[codex:496142]  * invoked. This applies both to deploying an Initializable contract, as well
[codex:496142]  * as extending an Initializable contract via inheritance.
[codex:496142]  * WARNING: When used with inheritance, manual care must be taken to not invoke
[codex:496142]  * a parent initializer twice, or ensure that all initializers are idempotent,
[codex:496142]  * because this is not dealt with automatically as with constructors.
[codex:496142]  */
[codex:496142] contract Initializable {
[codex:496142] 
[codex:496142]   /**
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing potential vulnerabilities**
[codex:496142] exec
[codex:496142] /bin/bash -lc "rg -n \"\\.call\\{|\\.call\\(\" contracts/cache/solpp-generated-contracts" in /tmp/codex-multi-iwsjvaqi succeeded in 11ms:
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:35:      (bool success,) = proxy.call(_data);
[codex:496142] contracts/cache/solpp-generated-contracts/Escrow.sol:387:        (bool success, ) = to.call{value: amount}("");
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Address.sol:59:        (bool success, ) = recipient.call{ value: amount }("");
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Address.sol:125:        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing potential reentrancy in Escrow with ERC777 tokens**
[codex:496142] 
[codex:496142] I'm examining how Escrow interacts with ERC777 tokens, especially focusing on whether callbacks like tokensReceived could allow reentrancy attacks during withdrawals or liquidation settlement. I want to confirm if internal balances are safely updated before external calls to avoid exploitation. I'll check related functions like _settleCashBalance and liquidate to understand the full sequence of state updates and external calls.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '760,1040p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]      * @param valueToSettle the amount of collateral to transfer
[codex:496142]      * @param rateParam rate params for the liquidation library
[codex:496142]      */
[codex:496142]     function _settleCashBalance(
[codex:496142]         address payer,
[codex:496142]         uint128 valueToSettle,
[codex:496142]         Liquidation.RateParameters memory rateParam
[codex:496142]     ) internal returns (uint128, uint128, uint128) {
[codex:496142]         require(payer != msg.sender, "48");
[codex:496142]         if (valueToSettle == 0) return (0, 0, 0);
[codex:496142]         Common.FreeCollateralFactors memory fc = _freeCollateralFactors(
[codex:496142]             payer, 
[codex:496142]             rateParam.localCurrency,
[codex:496142]             rateParam.collateralCurrency
[codex:496142]         );
[codex:496142] 
[codex:496142]         int256 payerLocalBalance = cashBalances[rateParam.localCurrency][payer];
[codex:496142]         int256 payerCollateralBalance = cashBalances[rateParam.collateralCurrency][payer];
[codex:496142] 
[codex:496142]         // This cash account must have enough negative cash to settle against
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing token transfer and liquidation logic**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/ProxyAdmin.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] import "./Ownable.sol";
[codex:496142] import "./AdminUpgradeabilityProxy.sol";
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @title ProxyAdmin
[codex:496142]  * @dev This contract is the admin of a proxy, and is in charge
[codex:496142]  * of upgrading it as well as transferring it to another admin.
[codex:496142]  */
[codex:496142] contract ProxyAdmin is OpenZeppelinUpgradesOwnable {
[codex:496142]   
[codex:496142]   /**
[codex:496142]    * @dev Returns the current implementation of a proxy.
[codex:496142]    * This is needed because only the proxy admin can query it.
[codex:496142]    * @return The address of the current implementation of the proxy.
[codex:496142]    */
[codex:496142]   function getProxyImplementation(AdminUpgradeabilityProxy proxy) public view returns (address) {
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Checking Ownable upgradeable for access control**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/Ownable.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @title Ownable
[codex:496142]  * @dev The Ownable contract has an owner address, and provides basic authorization control
[codex:496142]  * functions, this simplifies the implementation of "user permissions".
[codex:496142]  *
[codex:496142]  * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/ownership/Ownable.sol
[codex:496142]  * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts
[codex:496142]  * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the
[codex:496142]  * build/artifacts folder) as well as the vanilla Ownable implementation from an openzeppelin version.
[codex:496142]  */
[codex:496142] contract OpenZeppelinUpgradesOwnable {
[codex:496142]     address internal _owner;
[codex:496142] 
[codex:496142]     event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
[codex:496142] 
[codex:496142]     /**
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing Ownable and ERC1155Trade behaviors**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,220p' contracts/cache/solpp-generated-contracts/lib/SafeInt256.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142] 
[codex:496142] 
[codex:496142] library SafeInt256 {
[codex:496142]     int256 constant private _INT256_MIN = -2**255;
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * @dev Returns the multiplication of two signed integers, reverting on
[codex:496142]      * overflow.
[codex:496142]      *
[codex:496142]      * Counterpart to Solidity's `*` operator.
[codex:496142]      *
[codex:496142]      * Requirements:
[codex:496142]      *
[codex:496142]      * - Multiplication cannot overflow.
[codex:496142]      */
[codex:496142]     function mul(int256 a, int256 b) internal pure returns (int256) {
[codex:496142]         // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing potential division by zero in trade calculation**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "tradeCashReceiver|_tradefCash|raiseCurrentCashViaCashReceiver" contracts/cache/solpp-generated-contracts/utils/Liquidation.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 678:        return _tradefCash(
[codex:496142] 719:        return _tradefCash(
[codex:496142] 731:    function _tradefCash(
[codex:496142] 754:        (uint128 shortfall, uint128 liquidatorPayment) = IPortfoliosCallable(Portfolios).raiseCurrentCashViaCashReceiver(
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Inspecting trade fCash functions**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '640,780p' contracts/cache/solpp-generated-contracts/utils/Liquidation.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]                 amountToRaise
[codex:496142]             );
[codex:496142] 
[codex:496142]             if (creditBalance) {
[codex:496142]                 balance = balance.add(amountToRaise).sub(remainder);
[codex:496142]             } else {
[codex:496142]                 // Generally we expect remainder to equal zero but this can be off by small amounts due
[codex:496142]                 // to truncation in the different calculations on the liquidity token haircuts. The upper bound on
[codex:496142]                 // amountToRaise is based on collateralCurrencyAvailable and the balance. Also note that when removing
[codex:496142]                 // liquidity tokens some amount of cash receiver is credited back to the account as well. The concern
[codex:496142]                 // here is that if this is not true then remainder could put the account into a debt that it cannot pay off.
[codex:496142]                 require(remainder <= 1, "52");
[codex:496142]                 balance = balance.sub(remainder);
[codex:496142]             }
[codex:496142]         }
[codex:496142] 
[codex:496142]         return balance;
[codex:496142]     }
[codex:496142] 
[codex:496142]     /**
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing fCash liquidation methods**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "tradeCashReceiver" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 9ms:
[codex:496142] contracts/cache/solpp-generated-contracts/CashMarket.sol:862:    function tradeCashReceiver(
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing CashMarket function usage and risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "getMarket" -n contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 941:    function getMarket(uint32 maturity) external view returns (Market memory) {
[codex:496142] 976:    function getMarketRates() external view returns (uint32[] memory) {
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '940,1008p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142]      */
[codex:496142]     function getMarket(uint32 maturity) external view returns (Market memory) {
[codex:496142]         return markets[maturity];
[codex:496142]     }
[codex:496142] 
[codex:496142]     /**
[codex:496142]      * @notice Returns the current mid exchange rate of cash to fCash. This is NOT the rate that users will be able to trade it, those
[codex:496142]      * calculations depend on trade size and you must use the `getCurrentCashTofCash` or `getfCashToCurrentCash` methods.
[codex:496142]      * @param maturity the maturity to get the rate for
[codex:496142]      * @return a tuple where the first value is the exchange rate and the second value is a boolean indicating
[codex:496142]      *  whether or not the maturity is active
[codex:496142]      */
[codex:496142]     function getRate(uint32 maturity) public view returns (uint32, bool) {
[codex:496142]         Market memory market = markets[maturity];
[codex:496142]         if (block.timestamp >= maturity) {
[codex:496142]             // The exchange rate is 1 after we hit maturity for the fCash market.
[codex:496142]             return (INSTRUMENT_PRECISION, true);
[codex:496142]         } else {
[codex:496142]             uint32 timeToMaturity = maturity - uint32(block.timestamp);
[codex:496142]             bool success;
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing contract vulnerabilities and edge cases**
[codex:496142] 
[codex:496142] I'll carefully review token deposit logic, access controls, reentrancy risks, and loop handling to identify vulnerabilities or risky edge cases—especially around ERC777 handling, external calls before state updates, and subtle bugs in array manipulation. I'll also consider oracle data freshness and permissions on dependency updates to assess possible exploit paths.
[codex:496142] thinking
[codex:496142] **Evaluating signature validation and replay concerns**
[codex:496142] 
[codex:496142] I'll examine the proxy factory’s signature handling, focusing on replay risks, signer validation, and whether the ECDSA checks properly prevent malleable or invalid signatures, especially in the absence of nonce or expiry mechanisms.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,140p' contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] 
[codex:496142] 
[codex:496142] 
[codex:496142] /**
[codex:496142]  * @title Elliptic curve signature operations
[codex:496142]  * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d
[codex:496142]  * TODO Remove this library once solidity supports passing a signature to ecrecover.
[codex:496142]  * See https://github.com/ethereum/solidity/issues/864
[codex:496142]  *
[codex:496142]  * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/79dd498b16b957399f84b9aa7e720f98f9eb83e3/contracts/cryptography/ECDSA.sol
[codex:496142]  * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts
[codex:496142]  * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the
[codex:496142]  * build/artifacts folder) as well as the vanilla implementation from an openzeppelin version.
[codex:496142]  */
[codex:496142] 
[codex:496142] library OpenZeppelinUpgradesECDSA {
[codex:496142]     /**
[codex:496142]      * @dev Recover signer address from a message by using their signature
[codex:496142]      * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.
[codex:496142] 
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing ERC777 reentrancy and accounting bug**
[codex:496142] 
[codex:496142] I'm examining how ERC777 tokens interact with escrow during liquidation and settlement, focusing on an accounting inconsistency: when liquidators pay with ERC777 tokens, the tokensReceived hook credits their internal balance, effectively giving them credit for tokens they just paid. This differs from ERC20 tokens, where no such credit occurs. That discrepancy could let liquidators exploit the system by paying tokens but still retaining internal balance, enabling potential free collateral extraction. This looks like a serious reentrancy and accounting flaw tied to ERC777 hooks during settlement.
[codex:496142] thinking
[codex:496142] **Investigating ERC777 token handling nuances**
[codex:496142] 
[codex:496142] I'm confirming that the vulnerability surfaces specifically for ERC777 tokens without transfer fees, where the tokensReceived hook improperly credits liquidators’ internal balances during settlement. This mismatch could enable free collateral extraction. I'm also exploring how tokens with both ERC777 and transfer fee flags behave during transfers, detecting complex interactions in _tokenDeposit and cash balance updates that might cause further accounting inconsistencies. To verify details, I'll retrieve exact line references for tokensReceived and _finishLiquidateSettle in the Escrow contract.
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/Escrow.sol | sed -n '430,560p'" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142]    430	        } else if (options.isERC777) {
[codex:496142]    431	            IERC777(token).operatorSend(from, address(this), amount, "0x", "0x");
[codex:496142]    432	        }else {
[codex:496142]    433	            SafeERC20.safeTransferFrom(IERC20(token), from, address(this), amount);
[codex:496142]    434	        }
[codex:496142]    435	        
[codex:496142]    436	        return amount;
[codex:496142]    437	    }
[codex:496142]    438	
[codex:496142]    439	    /**
[codex:496142]    440	     * @notice Withdraws from an account's collateral holdings back to their account. Checks if the
[codex:496142]    441	     * account has sufficient free collateral after the withdraw or else it fails.
[codex:496142]    442	     * @dev - INSUFFICIENT_BALANCE: not enough balance in account
[codex:496142]    443	     * - INVALID_CURRENCY: token address supplied is not a valid currency
[codex:496142]    444	     * - INSUFFICIENT_FREE_COLLATERAL: not enough free collateral to withdraw
[codex:496142]    445	     * @param token collateral type to withdraw
[codex:496142]    446	     * @param amount total value to withdraw
[codex:496142]    447	     */
[codex:496142]    448	    function withdraw(address token, uint128 amount) external {
[codex:496142]    449	       bool didWithdraw = _withdraw(msg.sender, msg.sender, token, amount, true);
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Extending token counter**
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/Escrow.sol | sed -n '540,620p'" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142]    540	            // We skip the free collateral check here because ERC1155.batchOperation will do the check
[codex:496142]    541	            // before it exits.
[codex:496142]    542	            _withdraw(account, withdraws[i].to, tokenAddress, amount, false);
[codex:496142]    543	        }
[codex:496142]    544	    }
[codex:496142]    545	
[codex:496142]    546	    /**
[codex:496142]    547	     * @notice Receives tokens from an ERC777 send message.
[codex:496142]    548	     * @dev skip
[codex:496142]    549	     * @param from address the tokens are being sent from (!= msg.sender)
[codex:496142]    550	     * @param amount amount
[codex:496142]    551	     */
[codex:496142]    552	    function tokensReceived(
[codex:496142]    553	        address, /*operator*/
[codex:496142]    554	        address from,
[codex:496142]    555	        address, /*to*/
[codex:496142]    556	        uint256 amount,
[codex:496142]    557	        bytes calldata, /*userData*/
[codex:496142]    558	        bytes calldata /*operatorData*/
[codex:496142]    559	    ) external override {
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Searching for function line numbers**
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/Escrow.sol | sed -n '1080,1160p'" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142]   1080	        );
[codex:496142]   1081	    }
[codex:496142]   1082	
[codex:496142]   1083	    function _finishLiquidateSettle(
[codex:496142]   1084	        uint16 currency,
[codex:496142]   1085	        int256 netAmount
[codex:496142]   1086	    ) internal {
[codex:496142]   1087	        address token = currencyIdToAddress[currency];
[codex:496142]   1088	        if (netAmount > 0) {
[codex:496142]   1089	            TokenOptions memory options = tokenOptions[token];
[codex:496142]   1090	            if (options.hasTransferFee) {
[codex:496142]   1091	                // If the token has transfer fees then we cannot use _tokenDeposit to get an accurate amount of local
[codex:496142]   1092	                // currency. The liquidator must have a sufficient balance inside the system. When transferring collateral
[codex:496142]   1093	                // internally within the system we must always check free collateral.
[codex:496142]   1094	                cashBalances[currency][msg.sender] = cashBalances[currency][msg.sender].subNoNeg(netAmount);
[codex:496142]   1095	                require(_freeCollateral(msg.sender) >= 0, "37");
[codex:496142]   1096	            } else {
[codex:496142]   1097	                _tokenDeposit(token, msg.sender, uint128(netAmount), options);
[codex:496142]   1098	            }
[codex:496142]   1099	        } else if (netAmount < 0) {
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Analyzing ERC777 liquidation double-credit vulnerability**
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol | sed -n '50,140p'" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142]     50	        // Fetches the latest answer from the chainlink oracle and buffer it by the apporpriate amount.
[codex:496142]     51	        uint256 rate = _fetchExchangeRate(er, false);
[codex:496142]     52	        uint128 absBalance = uint128(balance.abs());
[codex:496142]     53	
[codex:496142]     54	        // We are converting to ETH here so we know that it has Common.DECIMAL precision. The calculation here is:
[codex:496142]     55	        // baseDecimals * rateDecimals * Common.DECIMAL /  (rateDecimals * baseDecimals)
[codex:496142]     56	        // er.buffer is in Common.DECIMAL precision
[codex:496142]     57	        // We use uint256 to do the calculation and then cast back to int256 to avoid overflows.
[codex:496142]     58	        int256 result = int256(
[codex:496142]     59	            SafeCast.toUint128(rate
[codex:496142]     60	                .mul(absBalance)
[codex:496142]     61	                // Buffer has 18 decimal places of precision
[codex:496142]     62	                .mul(buffer ? er.buffer : Common.DECIMALS)
[codex:496142]     63	                .div(er.rateDecimals)
[codex:496142]     64	                .div(baseDecimals)
[codex:496142]     65	            )
[codex:496142]     66	        );
[codex:496142]     67	
[codex:496142]     68	        return balance > 0 ? result : result.neg();
[codex:496142]     69	    }
[codex:496142] 
[codex:496142] thinking
[codex:496142] **Summarizing audit findings**
[codex:496142] 
[codex:496142] I'm gathering the key vulnerabilities to report: a high-severity ERC777 liquidation accounting bug that allows liquidators to extract free collateral by exploiting tokensReceived credits, and a medium-severity oracle freshness issue where Chainlink rates are used without proper staleness validation, risking mispricing during outages. I'll prepare a JSON report covering these findings with scenarios, recommendations, evidence, and precise locations.
[codex:496142] codex
[codex:496142] {"no_findings":false,"summary":"Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.","findings":[{"severity":"high","category":"other","title":"ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction","exploit_scenario":"If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer’s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free.","recommendation":"During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.","evidence":"`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.","locations":["contracts/cache/solpp-generated-contracts/Escrow.sol:1083","contracts/cache/solpp-generated-contracts/Escrow.sol:430","contracts/cache/solpp-generated-contracts/Escrow.sol:552"]},{"severity":"medium","category":"oracle","title":"Chainlink price reads lack freshness/round validation","exploit_scenario":"If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update.","recommendation":"Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.","evidence":"`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.","locations":["contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"]}]}
[codex:496142] tokens used
[codex:496142] 177,715
[codex:496142] {"no_findings":false,"summary":"Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.","findings":[{"severity":"high","category":"other","title":"ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction","exploit_scenario":"If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer’s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free.","recommendation":"During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.","evidence":"`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.","locations":["contracts/cache/solpp-generated-contracts/Escrow.sol:1083","contracts/cache/solpp-generated-contracts/Escrow.sol:430","contracts/cache/solpp-generated-contracts/Escrow.sol:552"]},{"severity":"medium","category":"oracle","title":"Chainlink price reads lack freshness/round validation","exploit_scenario":"If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update.","recommendation":"Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.","evidence":"`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.","locations":["contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T13:20:01.039877+00:00",
        "returncode": 0
    },
    "summary": "Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.",
    "raw_final": {
        "summary": "Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.",
        "findings": [
            {
                "title": "ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction",
                "category": "other",
                "evidence": "`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.",
                "severity": "high",
                "locations": [
                    "contracts/cache/solpp-generated-contracts/Escrow.sol:1083",
                    "contracts/cache/solpp-generated-contracts/Escrow.sol:430",
                    "contracts/cache/solpp-generated-contracts/Escrow.sol:552"
                ],
                "recommendation": "During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.",
                "exploit_scenario": "If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer\u2019s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free."
            },
            {
                "title": "Chainlink price reads lack freshness/round validation",
                "category": "oracle",
                "evidence": "`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.",
                "severity": "medium",
                "locations": [
                    "contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"
                ],
                "recommendation": "Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.",
                "exploit_scenario": "If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
5
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
21
EXT*/BALANCE
25
Total opcodes
16343
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 0x0295
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x9fdd1f7e
00000019: GT
0000001a: PUSH2 0x015a
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xc84aae17
00000024: GT
00000025: PUSH2 0x00c1
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xe4db4250
0000002f: GT
00000030: PUSH2 0x007a
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xe4db4250
0000003a: EQ
0000003b: PUSH2 0x07d9
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xebebf742
00000045: EQ
00000046: PUSH2 0x07f9
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xee0c7a76
00000050: EQ
00000051: PUSH2 0x0819
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf2fde38b
0000005b: EQ
0000005c: PUSH2 0x0839
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0xf8c8765e
00000066: EQ
00000067: PUSH2 0x0859
0000006a: JUMPI
0000006b: DUP1
0000006c: PUSH4 0xfc3b52cb
00000071: EQ
00000072: PUSH2 0x0879
00000075: JUMPI
00000076: PUSH2 0x02b0
00000079: JUMP
0000007a: JUMPDEST
0000007b: DUP1
0000007c: PUSH4 0xc84aae17
00000081: EQ
00000082: PUSH2 0x0724
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0xc8f38dc0
0000008c: EQ
0000008d: PUSH2 0x0744
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0xdbc8a9f0
00000097: EQ
00000098: PUSH2 0x0771
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0xe0d48838
000000a2: EQ
000000a3: PUSH2 0x0786
000000a6: JUMPI
000000a7: DUP1
000000a8: PUSH4 0xe13dc218
000000ad: EQ
000000ae: PUSH2 0x07a6
000000b1: JUMPI
000000b2: DUP1
000000b3: PUSH4 0xe4a83300
000000b8: EQ
000000b9: PUSH2 0x07c6
000000bc: JUMPI
000000bd: PUSH2 0x02b0
000000c0: JUMP
000000c1: JUMPDEST
000000c2: DUP1
000000c3: PUSH4 0xad5c4648
000000c8: GT
000000c9: PUSH2 0x0113
000000cc: JUMPI
000000cd: DUP1
000000ce: PUSH4 0xad5c4648
000000d3: EQ
000000d4: PUSH2 0x067a
000000d7: JUMPI
000000d8: DUP1
000000d9: PUSH4 0xb233103c
000000de: EQ
000000df: PUSH2 0x068f
000000e2: JUMPI
000000e3: DUP1
000000e4: PUSH4 0xb3fb6564
000000e9: EQ
000000ea: PUSH2 0x06af
000000ed: JUMPI
000000ee: DUP1
000000ef: PUSH4 0xb84a7d4d
000000f4: EQ
000000f5: PUSH2 0x06cf
000000f8: JUMPI
000000f9: DUP1
000000fa: PUSH4 0xbf7dec13
000000ff: EQ
00000100: PUSH2 0x06e4
00000103: JUMPI
00000104: DUP1
00000105: PUSH4 0xbf86a66b
0000010a: EQ
0000010b: PUSH2 0x0704
0000010e: JUMPI
0000010f: PUSH2 0x02b0
00000112: JUMP
00000113: JUMPDEST
00000114: DUP1
00000115: PUSH4 0x9fdd1f7e
0000011a: EQ
0000011b: PUSH2 0x05c5
0000011e: JUMPI
0000011f: DUP1
00000120: PUSH4 0xa29b1e41
00000125: EQ
00000126: PUSH2 0x05e5
00000129: JUMPI
0000012a: DUP1
0000012b: PUSH4 0xa46858cc
00000130: EQ
00000131: PUSH2 0x0605
00000134: JUMPI
00000135: DUP1
00000136: PUSH4 0xa73fd391
0000013b: EQ
0000013c: PUSH2 0x0625
0000013f: JUMPI
00000140: DUP1
00000141: PUSH4 0xa8173894
00000146: EQ
00000147: PUSH2 0x063a
0000014a: JUMPI
0000014b: DUP1
0000014c: PUSH4 0xad12da7f
00000151: EQ
00000152: PUSH2 0x065a
00000155: JUMPI
00000156: PUSH2 0x02b0
00000159: JUMP
0000015a: JUMPDEST
0000015b: DUP1
0000015c: PUSH4 0x715018a6
00000161: GT
00000162: PUSH2 0x01fe
00000165: JUMPI
00000166: DUP1
00000167: PUSH4 0x8da5cb5b
0000016c: GT
0000016d: PUSH2 0x01b7
00000170: JUMPI
00000171: DUP1
00000172: PUSH4 0x8da5cb5b
00000177: EQ
00000178: PUSH2 0x050c
0000017b: JUMPI
0000017c: DUP1
0000017d: PUSH4 0x8f32d59b
00000182: EQ
00000183: PUSH2 0x0521
00000186: JUMPI
00000187: DUP1
00000188: PUSH4 0x97e770df
0000018d: EQ
0000018e: PUSH2 0x0543
00000191: JUMPI
00000192: DUP1
00000193: PUSH4 0x9b492fab
00000198: EQ
00000199: PUSH2 0x0570
0000019c: JUMPI
0000019d: DUP1
0000019e: PUSH4 0x9f0f5061
000001a3: EQ
000001a4: PUSH2 0x0585
000001a7: JUMPI
000001a8: DUP1
000001a9: PUSH4 0x9f1a944f
000001ae: EQ
000001af: PUSH2 0x05a5
000001b2: JUMPI
000001b3: PUSH2 0x02b0
000001b6: JUMP
000001b7: JUMPDEST
000001b8: DUP1
000001b9: PUSH4 0x715018a6
000001be: EQ
000001bf: PUSH2 0x0460
000001c2: JUMPI
000001c3: DUP1
000001c4: PUSH4 0x82c4bd3d
000001c9: EQ
000001ca: PUSH2 0x0475
000001cd: JUMPI
000001ce: DUP1
000001cf: PUSH4 0x833758f5
000001d4: EQ
000001d5: PUSH2 0x04a2
000001d8: JUMPI
000001d9: DUP1
000001da: PUSH4 0x865e6fd3
000001df: EQ
000001e0: PUSH2 0x04c2
000001e3: JUMPI
000001e4: DUP1
000001e5: PUSH4 0x86678242
000001ea: EQ
000001eb: PUSH2 0x04e2
000001ee: JUMPI
000001ef: DUP1
000001f0: PUSH4 0x88bc2ef3
000001f5: EQ
000001f6: PUSH2 0x04f7
000001f9: JUMPI
000001fa: PUSH2 0x02b0
000001fd: JUMP
000001fe: JUMPDEST
000001ff: DUP1
00000200: PUSH4 0x439370b1
00000205: GT
00000206: PUSH2 0x0250
00000209: JUMPI
0000020a: DUP1
0000020b: PUSH4 0x439370b1
00000210: EQ
00000211: PUSH2 0x039b
00000214: JUMPI
00000215: DUP1
00000216: PUSH4 0x45f3cfea
0000021b: EQ
0000021c: PUSH2 0x03a3
0000021f: JUMPI
00000220: DUP1
00000221: PUSH4 0x485cc955
00000226: EQ
00000227: PUSH2 0x03c3
0000022a: JUMPI
0000022b: DUP1
0000022c: PUSH4 0x536f732d
00000231: EQ
00000232: PUSH2 0x03e3
00000235: JUMPI
00000236: DUP1
00000237: PUSH4 0x63a900d3
0000023c: EQ
0000023d: PUSH2 0x0410
00000240: JUMPI
00000241: DUP1
00000242: PUSH4 0x6fd559e0
00000247: EQ
00000248: PUSH2 0x0440
0000024b: JUMPI
0000024c: PUSH2 0x02b0
0000024f: JUMP
00000250: JUMPDEST
00000251: DUP1
00000252: PUSH3 0x23de29
00000256: EQ
00000257: PUSH2 0x02b5
0000025a: JUMPI
0000025b: DUP1
0000025c: PUSH3 0xff1fe6
00000260: EQ
00000261: PUSH2 0x02d5
00000264: JUMPI
00000265: DUP1
00000266: PUSH4 0x08fab167
0000026b: EQ
0000026c: PUSH2 0x0300
0000026f: JUMPI
00000270: DUP1
00000271: PUSH4 0x0a3f6f35
00000276: EQ
00000277: PUSH2 0x0320
0000027a: JUMPI
0000027b: DUP1
0000027c: PUSH4 0x215b92fe
00000281: EQ
00000282: PUSH2 0x034e
00000285: JUMPI
00000286: DUP1
00000287: PUSH4 0x422c32cd
0000028c: EQ
0000028d: PUSH2 0x037b
00000290: JUMPI
00000291: PUSH2 0x02b0
00000294: JUMP
00000295: JUMPDEST
00000296: CALLDATASIZE
00000297: PUSH2 0x02b0
0000029a: JUMPI
0000029b: PUSH1 0x00
0000029d: SLOAD
0000029e: PUSH1 0x01
000002a0: PUSH1 0x01
000002a2: PUSH1 0xa0
000002a4: SHL
000002a5: SUB
000002a6: AND
000002a7: CALLER
000002a8: EQ
000002a9: PUSH2 0x02ae
000002ac: JUMPI
000002ad: INVALID
000002ae: JUMPDEST
000002af: STOP
000002b0: JUMPDEST
000002b1: PUSH1 0x00
000002b3: DUP1
000002b4: REVERT
000002b5: JUMPDEST
000002b6: CALLVALUE
000002b7: DUP1
000002b8: ISZERO
000002b9: PUSH2 0x02c1
000002bc: JUMPI
000002bd: PUSH1 0x00
000002bf: DUP1
000002c0: REVERT
000002c1: JUMPDEST
000002c2: POP
000002c3: PUSH2 0x02ae
000002c6: PUSH2 0x02d0
000002c9: CALLDATASIZE
000002ca: PUSH1 0x04
000002cc: PUSH2 0x49e0
000002cf: JUMP
000002d0: JUMPDEST
000002d1: PUSH2 0x0899
000002d4: JUMP
000002d5: JUMPDEST
000002d6: CALLVALUE
000002d7: DUP1
000002d8: ISZERO
000002d9: PUSH2 0x02e1
000002dc: JUMPI
000002dd: PUSH1 0x00
000002df: DUP1
000002e0: REVERT
000002e1: JUMPDEST
000002e2: POP
000002e3: PUSH2 0x02ea
000002e6: PUSH2 0x098d
000002e9: JUMP
000002ea: JUMPDEST
000002eb: PUSH1 0x40
000002ed: MLOAD
000002ee: PUSH2 0x02f7
000002f1: SWAP2
000002f2: SWAP1
000002f3: PUSH2 0x5d4b
000002f6: JUMP
000002f7: JUMPDEST
000002f8: PUSH1 0x40
000002fa: MLOAD
000002fb: DUP1
000002fc: SWAP2
000002fd: SUB
000002fe: SWAP1
000002ff: RETURN
00000300: JUMPDEST
00000301: CALLVALUE
00000302: DUP1
00000303: ISZERO
00000304: PUSH2 0x030c
00000307: JUMPI
00000308: PUSH1 0x00
0000030a: DUP1
0000030b: REVERT
0000030c: JUMPDEST
0000030d: POP
0000030e: PUSH2 0x02ae
00000311: PUSH2 0x031b
00000314: CALLDATASIZE
00000315: PUSH1 0x04
00000317: PUSH2 0x4cdf
0000031a: JUMP
0000031b: JUMPDEST
0000031c: PUSH2 0x099c
0000031f: JUMP
00000320: JUMPDEST
00000321: CALLVALUE
00000322: DUP1
00000323: ISZERO
00000324: PUSH2 0x032c
00000327: JUMPI
00000328: PUSH1 0x00
0000032a: DUP1
0000032b: REVERT
0000032c: JUMPDEST
0000032d: POP
0000032e: PUSH2 0x0340
00000331: PUSH2 0x033b
00000334: CALLDATASIZE
00000335: PUSH1 0x04
00000337: PUSH2 0x4931
0000033a: JUMP
0000033b: JUMPDEST
0000033c: PUSH2 0x09d0
0000033f: JUMP
00000340: JUMPDEST
00000341: PUSH1 0x40
00000343: MLOAD
00000344: PUSH2 0x02f7
00000347: SWAP3
00000348: SWAP2
00000349: SWAP1
0000034a: PUSH2 0x58bb
0000034d: JUMP
0000034e: JUMPDEST
0000034f: CALLVALUE
00000350: DUP1
00000351: ISZERO
00000352: PUSH2 0x035a
00000355: JUMPI
00000356: PUSH1 0x00
00000358: DUP1
00000359: REVERT
0000035a: JUMPDEST
0000035b: POP
0000035c: PUSH2 0x036e
0000035f: PUSH2 0x0369
00000362: CALLDATASIZE
00000363: PUSH1 0x04
00000365: PUSH2 0x4ebe
00000368: JUMP
00000369: JUMPDEST
0000036a: PUSH2 0x09ee
0000036d: JUMP
0000036e: JUMPDEST
0000036f: PUSH1 0x40
00000371: MLOAD
00000372: PUSH2 0x02f7
00000375: SWAP2
00000376: SWAP1
00000377: PUSH2 0x586c
0000037a: JUMP
0000037b: JUMPDEST
0000037c: CALLVALUE
0000037d: DUP1
0000037e: ISZERO
0000037f: PUSH2 0x0387
00000382: JUMPI
00000383: PUSH1 0x00
00000385: DUP1
00000386: REVERT
00000387: JUMPDEST
00000388: POP
00000389: PUSH2 0x02ae
0000038c: PUSH2 0x0396
0000038f: CALLDATASIZE
00000390: PUSH1 0x04
00000392: PUSH2 0x4bc1
00000395: JUMP
00000396: JUMPDEST
00000397: PUSH2 0x0ca2
0000039a: JUMP
0000039b: JUMPDEST
0000039c: PUSH2 0x02ae
0000039f: PUSH2 0x0d99
000003a2: JUMP
000003a3: JUMPDEST
000003a4: CALLVALUE
000003a5: DUP1
000003a6: ISZERO
000003a7: PUSH2 0x03af
000003aa: JUMPI
000003ab: PUSH1 0x00
000003ad: DUP1
000003ae: REVERT
000003af: JUMPDEST
000003b0: POP
000003b1: PUSH2 0x02ae
000003b4: PUSH2 0x03be
000003b7: CALLDATASIZE
000003b8: PUSH1 0x04
000003ba: PUSH2 0x4e23
000003bd: JUMP
000003be: JUMPDEST
000003bf: PUSH2 0x0da4
000003c2: JUMP
000003c3: JUMPDEST
000003c4: CALLVALUE
000003c5: DUP1
000003c6: ISZERO
000003c7: PUSH2 0x03cf
000003ca: JUMPI
000003cb: PUSH1 0x00
000003cd: DUP1
000003ce: REVERT
000003cf: JUMPDEST
000003d0: POP
000003d1: PUSH2 0x02ae
000003d4: PUSH2 0x03de
000003d7: CALLDATASIZE
000003d8: PUSH1 0x04
000003da: PUSH2 0x494d
000003dd: JUMP
000003de: JUMPDEST
000003df: PUSH2 0x0fd6
000003e2: JUMP
000003e3: JUMPDEST
000003e4: CALLVALUE
000003e5: DUP1
000003e6: ISZERO
000003e7: PUSH2 0x03ef
000003ea: JUMPI
000003eb: PUSH1 0x00
000003ed: DUP1
000003ee: REVERT
000003ef: JUMPDEST
000003f0: POP
000003f1: PUSH2 0x0403
000003f4: PUSH2 0x03fe
000003f7: CALLDATASIZE
000003f8: PUSH1 0x04
000003fa: PUSH2 0x4931
000003fd: JUMP
000003fe: JUMPDEST
000003ff: PUSH2 0x10a1
00000402: JUMP
00000403: JUMPDEST
00000404: PUSH1 0x40
00000406: MLOAD
00000407: PUSH2 0x02f7
0000040a: SWAP2
0000040b: SWAP1
0000040c: PUSH2 0x5d82
0000040f: JUMP
00000410: JUMPDEST
00000411: CALLVALUE
00000412: DUP1
00000413: ISZERO
00000414: PUSH2 0x041c
00000417: JUMPI
00000418: PUSH1 0x00
0000041a: DUP1
0000041b: REVERT
0000041c: JUMPDEST
0000041d: POP
0000041e: PUSH2 0x0430
00000421: PUSH2 0x042b
00000424: CALLDATASIZE
00000425: PUSH1 0x04
00000427: PUSH2 0x5284
0000042a: JUMP
0000042b: JUMPDEST
0000042c: PUSH2 0x10b7
0000042f: JUMP
00000430: JUMPDEST
00000431: PUSH1 0x40
00000433: MLOAD
00000434: PUSH2 0x02f7
00000437: SWAP5
00000438: SWAP4
00000439: SWAP3
0000043a: SWAP2
0000043b: SWAP1
0000043c: PUSH2 0x57ca
0000043f: JUMP
00000440: JUMPDEST
00000441: CALLVALUE
00000442: DUP1
00000443: ISZERO
00000444: PUSH2 0x044c
00000447: JUMPI
00000448: PUSH1 0x00
0000044a: DUP1
0000044b: REVERT
0000044c: JUMPDEST
0000044d: POP
0000044e: PUSH2 0x02ae
00000451: PUSH2 0x045b
00000454: CALLDATASIZE
00000455: PUSH1 0x04
00000457: PUSH2 0x5362
0000045a: JUMP
0000045b: JUMPDEST
0000045c: PUSH2 0x1105
0000045f: JUMP
00000460: JUMPDEST
00000461: CALLVALUE
00000462: DUP1
00000463: ISZERO
00000464: PUSH2 0x046c
00000467: JUMPI
00000468: PUSH1 0x00
0000046a: DUP1
0000046b: REVERT
0000046c: JUMPDEST
0000046d: POP
0000046e: PUSH2 0x02ae
00000471: PUSH2 0x1281
00000474: JUMP
00000475: JUMPDEST
00000476: CALLVALUE
00000477: DUP1
00000478: ISZERO
00000479: PUSH2 0x0481
0000047c: JUMPI
0000047d: PUSH1 0x00
0000047f: DUP1
00000480: REVERT
00000481: JUMPDEST
00000482: POP
00000483: PUSH2 0x0495
00000486: PUSH2 0x0490
00000489: CALLDATASIZE
0000048a: PUSH1 0x04
0000048c: PUSH2 0x520b
0000048f: JUMP
00000490: JUMPDEST
00000491: PUSH2 0x12dc
00000494: JUMP
00000495: JUMPDEST
00000496: PUSH1 0x40
00000498: MLOAD
00000499: PUSH2 0x02f7
0000049c: SWAP2
0000049d: SWAP1
0000049e: PUSH2 0x5575
000004a1: JUMP
000004a2: JUMPDEST
000004a3: CALLVALUE
000004a4: DUP1
000004a5: ISZERO
000004a6: PUSH2 0x04ae
000004a9: JUMPI
000004aa: PUSH1 0x00
000004ac: DUP1
000004ad: REVERT
000004ae: JUMPDEST
000004af: POP
000004b0: PUSH2 0x02ae
000004b3: PUSH2 0x04bd
000004b6: CALLDATASIZE
000004b7: PUSH1 0x04
000004b9: PUSH2 0x4e63
000004bc: JUMP
000004bd: JUMPDEST
000004be: PUSH2 0x12f7
000004c1: JUMP
000004c2: JUMPDEST
000004c3: CALLVALUE
000004c4: DUP1
000004c5: ISZERO
000004c6: PUSH2 0x04ce
000004c9: JUMPI
000004ca: PUSH1 0x00
000004cc: DUP1
000004cd: REVERT
000004ce: JUMPDEST
000004cf: POP
000004d0: PUSH2 0x02ae
000004d3: PUSH2 0x04dd
000004d6: CALLDATASIZE
000004d7: PUSH1 0x04
000004d9: PUSH2 0x5002
000004dc: JUMP
000004dd: JUMPDEST
000004de: PUSH2 0x1449
000004e1: JUMP
000004e2: JUMPDEST
000004e3: CALLVALUE
000004e4: DUP1
000004e5: ISZERO
000004e6: PUSH2 0x04ee
000004e9: JUMPI
000004ea: PUSH1 0x00
000004ec: DUP1
000004ed: REVERT
000004ee: JUMPDEST
000004ef: POP
000004f0: PUSH2 0x02ea
000004f3: PUSH2 0x14ba
000004f6: JUMP
000004f7: JUMPDEST
000004f8: CALLVALUE
000004f9: DUP1
000004fa: ISZERO
000004fb: PUSH2 0x0503
000004fe: JUMPI
000004ff: PUSH1 0x00
00000501: DUP1
00000502: REVERT
00000503: JUMPDEST
00000504: POP
00000505: PUSH2 0x0495
00000508: PUSH2 0x14c4
0000050b: JUMP
0000050c: JUMPDEST
0000050d: CALLVALUE
0000050e: DUP1
0000050f: ISZERO
00000510: PUSH2 0x0518
00000513: JUMPI
00000514: PUSH1 0x00
00000516: DUP1
00000517: REVERT
00000518: JUMPDEST
00000519: POP
0000051a: PUSH2 0x0495
0000051d: PUSH2 0x14d3
00000520: JUMP
00000521: JUMPDEST
00000522: CALLVALUE
00000523: DUP1
00000524: ISZERO
00000525: PUSH2 0x052d
00000528: JUMPI
00000529: PUSH1 0x00
0000052b: DUP1
0000052c: REVERT
0000052d: JUMPDEST
0000052e: POP
0000052f: PUSH2 0x0536
00000532: PUSH2 0x14e2
00000535: JUMP
00000536: JUMPDEST
00000537: PUSH1 0x40
00000539: MLOAD
0000053a: PUSH2 0x02f7
0000053d: SWAP2
0000053e: SWAP1
0000053f: PUSH2 0x58b0
00000542: JUMP
00000543: JUMPDEST
00000544: CALLVALUE
00000545: DUP1
00000546: ISZERO
00000547: PUSH2 0x054f
0000054a: JUMPI
0000054b: PUSH1 0x00
0000054d: DUP1
0000054e: REVERT
0000054f: JUMPDEST
00000550: POP
00000551: PUSH2 0x0563
00000554: PUSH2 0x055e
00000557: CALLDATASIZE
00000558: PUSH1 0x04
0000055a: PUSH2 0x5227
0000055d: JUMP
0000055e: JUMPDEST
0000055f: PUSH2 0x14f3
00000562: JUMP
00000563: JUMPDEST
00000564: PUSH1 0x40
00000566: MLOAD
00000567: PUSH2 0x02f7
0000056a: SWAP2
0000056b: SWAP1
0000056c: PUSH2 0x58cd
0000056f: JUMP
00000570: JUMPDEST
00000571: CALLVALUE
00000572: DUP1
00000573: ISZERO
00000574: PUSH2 0x057c
00000577: JUMPI
00000578: PUSH1 0x00
0000057a: DUP1
0000057b: REVERT
0000057c: JUMPDEST
0000057d: POP
0000057e: PUSH2 0x02ea
00000581: PUSH2 0x1510
00000584: JUMP
00000585: JUMPDEST
00000586: CALLVALUE
00000587: DUP1
00000588: ISZERO
00000589: PUSH2 0x0591
0000058c: JUMPI
0000058d: PUSH1 0x00
0000058f: DUP1
00000590: REVERT
00000591: JUMPDEST
00000592: POP
00000593: PUSH2 0x02ae
00000596: PUSH2 0x05a0
00000599: CALLDATASIZE
0000059a: PUSH1 0x04
0000059c: PUSH2 0x5182
0000059f: JUMP
000005a0: JUMPDEST
000005a1: PUSH2 0x151a
000005a4: JUMP
000005a5: JUMPDEST
000005a6: CALLVALUE
000005a7: DUP1
000005a8: ISZERO
000005a9: PUSH2 0x05b1
000005ac: JUMPI
000005ad: PUSH1 0x00
000005af: DUP1
000005b0: REVERT
000005b1: JUMPDEST
000005b2: POP
000005b3: PUSH2 0x02ae
000005b6: PUSH2 0x05c0
000005b9: CALLDATASIZE
000005ba: PUSH1 0x04
000005bc: PUSH2 0x5244
000005bf: JUMP
000005c0: JUMPDEST
000005c1: PUSH2 0x1527
000005c4: JUMP
000005c5: JUMPDEST
000005c6: CALLVALUE
000005c7: DUP1
000005c8: ISZERO
000005c9: PUSH2 0x05d1
000005cc: JUMPI
000005cd: PUSH1 0x00
000005cf: DUP1
000005d0: REVERT
000005d1: JUMPDEST
000005d2: POP
000005d3: PUSH2 0x02ae
000005d6: PUSH2 0x05e0
000005d9: CALLDATASIZE
000005da: PUSH1 0x04
000005dc: PUSH2 0x4d89
000005df: JUMP
000005e0: JUMPDEST
000005e1: PUSH2 0x15b6
000005e4: JUMP
000005e5: JUMPDEST
000005e6: CALLVALUE
000005e7: DUP1
000005e8: ISZERO
000005e9: PUSH2 0x05f1
000005ec: JUMPI
000005ed: PUSH1 0x00
000005ef: DUP1
000005f0: REVERT
000005f1: JUMPDEST
000005f2: POP
000005f3: PUSH2 0x02ae
000005f6: PUSH2 0x0600
000005f9: CALLDATASIZE
000005fa: PUSH1 0x04
000005fc: PUSH2 0x4a8e
000005ff: JUMP
00000600: JUMPDEST
00000601: PUSH2 0x1791
00000604: JUMP
00000605: JUMPDEST
00000606: CALLVALUE
00000607: DUP1
00000608: ISZERO
00000609: PUSH2 0x0611
0000060c: JUMPI
0000060d: PUSH1 0x00
0000060f: DUP1
00000610: REVERT
00000611: JUMPDEST
00000612: POP
00000613: PUSH2 0x02ae
00000616: PUSH2 0x0620
00000619: CALLDATASIZE
0000061a: PUSH1 0x04
0000061c: PUSH2 0x4d5c
0000061f: JUMP
00000620: JUMPDEST
00000621: PUSH2 0x188c
00000624: JUMP
00000625: JUMPDEST
00000626: CALLVALUE
00000627: DUP1
00000628: ISZERO
00000629: PUSH2 0x0631
0000062c: JUMPI
0000062d: PUSH1 0x00
0000062f: DUP1
00000630: REVERT
00000631: JUMPDEST
00000632: POP
00000633: PUSH2 0x02ea
00000636: PUSH2 0x1a5e
00000639: JUMP
0000063a: JUMPDEST
0000063b: CALLVALUE
0000063c: DUP1
0000063d: ISZERO
0000063e: PUSH2 0x0646
00000641: JUMPI
00000642: PUSH1 0x00
00000644: DUP1
00000645: REVERT
00000646: JUMPDEST
00000647: POP
00000648: PUSH2 0x0563
0000064b: PUSH2 0x0655
0000064e: CALLDATASIZE
0000064f: PUSH1 0x04
00000651: PUSH2 0x520b
00000654: JUMP
00000655: JUMPDEST
00000656: PUSH2 0x1a68
00000659: JUMP
0000065a: JUMPDEST
0000065b: CALLVALUE
0000065c: DUP1
0000065d: ISZERO
0000065e: PUSH2 0x0666
00000661: JUMPI
00000662: PUSH1 0x00
00000664: DUP1
00000665: REVERT
00000666: JUMPDEST
00000667: POP
00000668: PUSH2 0x02ae
0000066b: PUSH2 0x0675
0000066e: CALLDATASIZE
0000066f: PUSH1 0x04
00000671: PUSH2 0x4c75
00000674: JUMP
00000675: JUMPDEST
00000676: PUSH2 0x1a7a
00000679: JUMP
0000067a: JUMPDEST
0000067b: CALLVALUE
0000067c: DUP1
0000067d: ISZERO
0000067e: PUSH2 0x0686
00000681: JUMPI
00000682: PUSH1 0x00
00000684: DUP1
00000685: REVERT
00000686: JUMPDEST
00000687: POP
00000688: PUSH2 0x0495
0000068b: PUSH2 0x1cc5
0000068e: JUMP
0000068f: JUMPDEST
00000690: CALLVALUE
00000691: DUP1
00000692: ISZERO
00000693: PUSH2 0x069b
00000696: JUMPI
00000697: PUSH1 0x00
00000699: DUP1
0000069a: REVERT
0000069b: JUMPDEST
0000069c: POP
0000069d: PUSH2 0x02ae
000006a0: PUSH2 0x06aa
000006a3: CALLDATASIZE
000006a4: PUSH1 0x04
000006a6: PUSH2 0x4d0c
000006a9: JUMP
000006aa: JUMPDEST
000006ab: PUSH2 0x1cd4
000006ae: JUMP
000006af: JUMPDEST
000006b0: CALLVALUE
000006b1: DUP1
000006b2: ISZERO
000006b3: PUSH2 0x06bb
000006b6: JUMPI
000006b7: PUSH1 0x00
000006b9: DUP1
000006ba: REVERT
000006bb: JUMPDEST
000006bc: POP
000006bd: PUSH2 0x02ae
000006c0: PUSH2 0x06ca
000006c3: CALLDATASIZE
000006c4: PUSH1 0x04
000006c6: PUSH2 0x4cdf
000006c9: JUMP
000006ca: JUMPDEST
000006cb: PUSH2 0x1d56
000006ce: JUMP
000006cf: JUMPDEST
000006d0: CALLVALUE
000006d1: DUP1
000006d2: ISZERO
000006d3: PUSH2 0x06db
000006d6: JUMPI
000006d7: PUSH1 0x00
000006d9: DUP1
000006da: REVERT
000006db: JUMPDEST
000006dc: POP
000006dd: PUSH2 0x0495
000006e0: PUSH2 0x1d65
000006e3: JUMP
000006e4: JUMPDEST
000006e5: CALLVALUE
000006e6: DUP1
000006e7: ISZERO
000006e8: PUSH2 0x06f0
000006eb: JUMPI
000006ec: PUSH1 0x00
000006ee: DUP1
000006ef: REVERT
000006f0: JUMPDEST
000006f1: POP
000006f2: PUSH2 0x02ae
000006f5: PUSH2 0x06ff
000006f8: CALLDATASIZE
000006f9: PUSH1 0x04
000006fb: PUSH2 0x4dd3
000006fe: JUMP
000006ff: JUMPDEST
00000700: PUSH2 0x1d74
00000703: JUMP
00000704: JUMPDEST
00000705: CALLVALUE
00000706: DUP1
00000707: ISZERO
00000708: PUSH2 0x0710
0000070b: JUMPI
0000070c: PUSH1 0x00
0000070e: DUP1
0000070f: REVERT
00000710: JUMPDEST
00000711: POP
00000712: PUSH2 0x02ae
00000715: PUSH2 0x071f
00000718: CALLDATASIZE
00000719: PUSH1 0x04
0000071b: PUSH2 0x5182
0000071e: JUMP
0000071f: JUMPDEST
00000720: PUSH2 0x2123
00000723: JUMP
00000724: JUMPDEST
00000725: CALLVALUE
00000726: DUP1
00000727: ISZERO
00000728: PUSH2 0x0730
0000072b: JUMPI
0000072c: PUSH1 0x00
0000072e: DUP1
0000072f: REVERT
00000730: JUMPDEST
00000731: POP
00000732: PUSH2 0x036e
00000735: PUSH2 0x073f
00000738: CALLDATASIZE
00000739: PUSH1 0x04
0000073b: PUSH2 0x4931
0000073e: JUMP
0000073f: JUMPDEST
00000740: PUSH2 0x2150
00000743: JUMP
00000744: JUMPDEST
00000745: CALLVALUE
00000746: DUP1
00000747: ISZERO
00000748: PUSH2 0x0750
0000074b: JUMPI
0000074c: PUSH1 0x00
0000074e: DUP1
0000074f: REVERT
00000750: JUMPDEST
00000751: POP
00000752: PUSH2 0x0764
00000755: PUSH2 0x075f
00000758: CALLDATASIZE
00000759: PUSH1 0x04
0000075b: PUSH2 0x5284
0000075e: JUMP
0000075f: JUMPDEST
00000760: PUSH2 0x21ec
00000763: JUMP
00000764: JUMPDEST
00000765: PUSH1 0x40
00000767: MLOAD
00000768: PUSH2 0x02f7
0000076b: SWAP2
0000076c: SWAP1
0000076d: PUSH2 0x5d3d
00000770: JUMP
00000771: JUMPDEST
00000772: CALLVALUE
00000773: DUP1
00000774: ISZERO
00000775: PUSH2 0x077d
00000778: JUMPI
00000779: PUSH1 0x00
0000077b: DUP1
0000077c: REVERT
0000077d: JUMPDEST
0000077e: POP
0000077f: PUSH2 0x0403
00000782: PUSH2 0x2268
00000785: JUMP
00000786: JUMPDEST
00000787: CALLVALUE
00000788: DUP1
00000789: ISZERO
0000078a: PUSH2 0x0792
0000078d: JUMPI
0000078e: PUSH1 0x00
00000790: DUP1
00000791: REVERT
00000792: JUMPDEST
00000793: POP
00000794: PUSH2 0x02ae
00000797: PUSH2 0x07a1
0000079a: CALLDATASIZE
0000079b: PUSH1 0x04
0000079d: PUSH2 0x4e23
000007a0: JUMP
000007a1: JUMPDEST
000007a2: PUSH2 0x2279
000007a5: JUMP
000007a6: JUMPDEST
000007a7: CALLVALUE
000007a8: DUP1
000007a9: ISZERO
000007aa: PUSH2 0x07b2
000007ad: JUMPI
000007ae: PUSH1 0x00
000007b0: DUP1
000007b1: REVERT
000007b2: JUMPDEST
000007b3: POP
000007b4: PUSH2 0x0536
000007b7: PUSH2 0x07c1
000007ba: CALLDATASIZE
000007bb: PUSH1 0x04
000007bd: PUSH2 0x520b
000007c0: JUMP
000007c1: JUMPDEST
000007c2: PUSH2 0x24ab
000007c5: JUMP
000007c6: JUMPDEST
000007c7: PUSH2 0x02ae
000007ca: PUSH2 0x07d4
000007cd: CALLDATASIZE
000007ce: PUSH1 0x04
000007d0: PUSH2 0x4ae1
000007d3: JUMP
000007d4: JUMPDEST
000007d5: PUSH2 0x24c2
000007d8: JUMP
000007d9: JUMPDEST
000007da: CALLVALUE
000007db: DUP1
000007dc: ISZERO
000007dd: PUSH2 0x07e5
000007e0: JUMPI
000007e1: PUSH1 0x00
000007e3: DUP1
000007e4: REVERT
000007e5: JUMPDEST
000007e6: POP
000007e7: PUSH2 0x02ae
000007ea: PUSH2 0x07f4
000007ed: CALLDATASIZE
000007ee: PUSH1 0x04
000007f0: PUSH2 0x51cc
000007f3: JUMP
000007f4: JUMPDEST
000007f5: PUSH2 0x2576
000007f8: JUMP
000007f9: JUMPDEST
000007fa: CALLVALUE
000007fb: DUP1
000007fc: ISZERO
000007fd: PUSH2 0x0805
00000800: JUMPI
00000801: PUSH1 0x00
00000803: DUP1
00000804: REVERT
00000805: JUMPDEST
00000806: POP
00000807: PUSH2 0x02ae
0000080a: PUSH2 0x0814
0000080d: CALLDATASIZE
0000080e: PUSH1 0x04
00000810: PUSH2 0x4931
00000813: JUMP
00000814: JUMPDEST
00000815: PUSH2 0x25e2
00000818: JUMP
00000819: JUMPDEST
0000081a: CALLVALUE
0000081b: DUP1
0000081c: ISZERO
0000081d: PUSH2 0x0825
00000820: JUMPI
00000821: PUSH1 0x00
00000823: DUP1
00000824: REVERT
00000825: JUMPDEST
00000826: POP
00000827: PUSH2 0x02ae
0000082a: PUSH2 0x0834
0000082d: CALLDATASIZE
0000082e: PUSH1 0x04
00000830: PUSH2 0x52e1
00000833: JUMP
00000834: JUMPDEST
00000835: PUSH2 0x2649
00000838: JUMP
00000839: JUMPDEST
0000083a: CALLVALUE
0000083b: DUP1
0000083c: ISZERO
0000083d: PUSH2 0x0845
00000840: JUMPI
00000841: PUSH1 0x00
00000843: DUP1
00000844: REVERT
00000845: JUMPDEST
00000846: POP
00000847: PUSH2 0x02ae
0000084a: PUSH2 0x0854
0000084d: CALLDATASIZE
0000084e: PUSH1 0x04
00000850: PUSH2 0x4931
00000853: JUMP
00000854: JUMPDEST
00000855: PUSH2 0x27ec
00000858: JUMP
00000859: JUMPDEST
0000085a: CALLVALUE
0000085b: DUP1
0000085c: ISZERO
0000085d: PUSH2 0x0865
00000860: JUMPI
00000861: PUSH1 0x00
00000863: DUP1
00000864: REVERT
00000865: JUMPDEST
00000866: POP
00000867: PUSH2 0x02ae
0000086a: PUSH2 0x0874
0000086d: CALLDATASIZE
0000086e: PUSH1 0x04
00000870: PUSH2 0x4985
00000873: JUMP
00000874: JUMPDEST
00000875: PUSH2 0x2806
00000878: JUMP
00000879: JUMPDEST
0000087a: CALLVALUE
0000087b: DUP1
0000087c: ISZERO
0000087d: PUSH2 0x0885
00000880: JUMPI
00000881: PUSH1 0x00
00000883: DUP1
00000884: REVERT
00000885: JUMPDEST
00000886: POP
00000887: PUSH2 0x02ae
0000088a: PUSH2 0x0894
0000088d: CALLDATASIZE
0000088e: PUSH1 0x04
00000890: PUSH2 0x52a1
00000893: JUMP
00000894: JUMPDEST
00000895: PUSH2 0x29f4
00000898: JUMP
00000899: JUMPDEST
0000089a: CALLER
0000089b: PUSH1 0x00
0000089d: SWAP1
0000089e: DUP2
0000089f: MSTORE
000008a0: PUSH1 0x03
000008a2: PUSH1 0x20
000008a4: MSTORE
000008a5: PUSH1 0x40
000008a7: SWAP1
000008a8: KECCAK256
000008a9: SLOAD
000008aa: PUSH2 0xffff
000008ad: AND
000008ae: DUP1
000008af: PUSH2 0x08d3
000008b2: JUMPI
000008b3: PUSH1 0x40
000008b5: MLOAD
000008b6: PUSH3 0x461bcd
000008ba: PUSH1 0xe5
000008bc: SHL
000008bd: DUP2
000008be: MSTORE
000008bf: PUSH1 0x04
000008c1: ADD
000008c2: PUSH2 0x08ca
000008c5: SWAP1
000008c6: PUSH2 0x5aec
000008c9: JUMP
000008ca: JUMPDEST
000008cb: PUSH1 0x40
000008cd: MLOAD
000008ce: DUP1
000008cf: SWAP2
000008d0: SUB
000008d1: SWAP1
000008d2: REVERT
000008d3: JUMPDEST
000008d4: PUSH2 0x091c
000008d7: PUSH2 0x08df
000008da: DUP8
000008db: PUSH2 0x2a84
000008de: JUMP
000008df: JUMPDEST
000008e0: PUSH2 0xffff
000008e3: DUP4
000008e4: AND
000008e5: PUSH1 0x00
000008e7: SWAP1
000008e8: DUP2
000008e9: MSTORE
000008ea: PUSH1 0x06
000008ec: PUSH1 0x20
000008ee: SWAP1
000008ef: DUP2
000008f0: MSTORE
000008f1: PUSH1 0x40
000008f3: DUP1
000008f4: DUP4
000008f5: KECCAK256
000008f6: PUSH1 0x01
000008f8: PUSH1 0x01
000008fa: PUSH1 0xa0
000008fc: SHL
000008fd: SUB
000008fe: DUP15
000008ff: AND
00000900: DUP5
00000901: MSTORE
00000902: SWAP1
00000903: SWAP2
00000904: MSTORE
00000905: SWAP1
00000906: KECCAK256
00000907: SLOAD
00000908: SWAP1
00000909: PUSH1 0x01
0000090b: PUSH1 0x01
0000090d: PUSH1 0x80
0000090f: SHL
00000910: SUB
00000911: AND
00000912: PUSH4 0xffffffff
00000917: PUSH2 0x2aad
0000091a: AND
0000091b: JUMP
0000091c: JUMPDEST
0000091d: PUSH2 0xffff
00000920: DUP3
00000921: AND
00000922: PUSH1 0x00
00000924: DUP2
00000925: DUP2
00000926: MSTORE
00000927: PUSH1 0x06
00000929: PUSH1 0x20
0000092b: SWAP1
0000092c: DUP2
0000092d: MSTORE
0000092e: PUSH1 0x40
00000930: DUP1
00000931: DUP4
00000932: KECCAK256
00000933: PUSH1 0x01
00000935: PUSH1 0x01
00000937: PUSH1 0xa0
00000939: SHL
0000093a: SUB
0000093b: DUP15
0000093c: AND
0000093d: DUP5
0000093e: MSTORE
0000093f: SWAP1
00000940: SWAP2
00000941: MSTORE
00000942: SWAP1
00000943: DUP2
00000944: SWAP1
00000945: KECCAK256
00000946: SWAP3
00000947: SWAP1
00000948: SWAP3
00000949: SSTORE
0000094a: SWAP1
0000094b: MLOAD
0000094c: PUSH32 0x1ebdf9946bb1531759f2100f77d6319f8f0a70663c87f0e3c4976cf417c6ec07
0000096d: SWAP1
0000096e: PUSH2 0x097a
00000971: SWAP1
00000972: DUP12
00000973: SWAP1
00000974: DUP11
00000975: SWAP1
00000976: PUSH2 0x5853
00000979: JUMP
0000097a: JUMPDEST
0000097b: PUSH1 0x40
0000097d: MLOAD
0000097e: DUP1
0000097f: SWAP2
00000980: SUB
00000981: SWAP1
00000982: LOG2
00000983: POP
00000984: POP
00000985: POP
00000986: POP
00000987: POP
00000988: POP
00000989: POP
0000098a: POP
0000098b: POP
0000098c: JUMP
0000098d: JUMPDEST
0000098e: PUSH1 0x00
00000990: PUSH2 0x0997
00000993: PUSH2 0x2afa
00000996: JUMP
00000997: JUMPDEST
00000998: SWAP1
00000999: POP
0000099a: SWAP1
0000099b: JUMP
0000099c: JUMPDEST
0000099d: PUSH1 0x00
0000099f: PUSH2 0x09ac
000009a2: CALLER
000009a3: CALLER
000009a4: DUP6
000009a5: DUP6
000009a6: PUSH1 0x01
000009a8: PUSH2 0x2b25
000009ab: JUMP
000009ac: JUMPDEST
000009ad: SWAP1
000009ae: POP
000009af: DUP1
000009b0: PUSH2 0x09cb
000009b3: JUMPI
000009b4: PUSH1 0x40
000009b6: MLOAD
000009b7: PUSH3 0x461bcd
000009bb: PUSH1 0xe5
000009bd: SHL
000009be: DUP2
000009bf: MSTORE
000009c0: PUSH1 0x04
000009c2: ADD
000009c3: PUSH2 0x08ca
000009c6: SWAP1
000009c7: PUSH2 0x5cd1
000009ca: JUMP
000009cb: JUMPDEST
000009cc: POP
000009cd: POP
000009ce: POP
000009cf: JUMP
000009d0: JUMPDEST
000009d1: PUSH1 0x04
000009d3: PUSH1 0x20
000009d5: MSTORE
000009d6: PUSH1 0x00
000009d8: SWAP1
000009d9: DUP2
000009da: MSTORE
000009db: PUSH1 0x40
000009dd: SWAP1
000009de: KECCAK256
000009df: SLOAD
000009e0: PUSH1 0xff
000009e2: DUP1
000009e3: DUP3
000009e4: AND
000009e5: SWAP2
000009e6: PUSH2 0x0100
000009e9: SWAP1
000009ea: DIV
000009eb: AND
000009ec: DUP3
000009ed: JUMP
000009ee: JUMPDEST
000009ef: PUSH1 0x00
000009f1: SLOAD
000009f2: DUP2
000009f3: MLOAD
000009f4: PUSH1 0x60
000009f6: SWAP2
000009f7: PUSH1 0x01
000009f9: PUSH2 0xffff
000009fc: PUSH1 0x01
000009fe: PUSH1 0xa0
00000a00: SHL
00000a01: SWAP1
00000a02: SWAP3
00000a03: DIV
00000a04: DUP3
00000a05: AND
00000a06: ADD
00000a07: AND
00000a08: EQ
00000a09: PUSH2 0x0a24
00000a0c: JUMPI
00000a0d: PUSH1 0x40
00000a0f: MLOAD
00000a10: PUSH3 0x461bcd
00000a14: PUSH1 0xe5
00000a16: SHL
00000a17: DUP2
00000a18: MSTORE
00000a19: PUSH1 0x04
00000a1b: ADD
00000a1c: PUSH2 0x08ca
00000a1f: SWAP1
00000a20: PUSH2 0x5aec
00000a23: JUMP
00000a24: JUMPDEST
00000a25: PUSH1 0x60
00000a27: DUP3
00000a28: MLOAD
00000a29: PUSH1 0x40
00000a2b: MLOAD
00000a2c: SWAP1
00000a2d: DUP1
00000a2e: DUP3
00000a2f: MSTORE
00000a30: DUP1
00000a31: PUSH1 0x20
00000a33: MUL
00000a34: PUSH1 0x20
00000a36: ADD
00000a37: DUP3
00000a38: ADD
00000a39: PUSH1 0x40
00000a3b: MSTORE
00000a3c: DUP1
00000a3d: ISZERO
00000a3e: PUSH2 0x0a51
00000a41: JUMPI
00000a42: DUP2
00000a43: PUSH1 0x20
00000a45: ADD
00000a46: PUSH1 0x20
00000a48: DUP3
00000a49: MUL
00000a4a: DUP1
00000a4b: CALLDATASIZE
00000a4c: DUP4
00000a4d: CALLDATACOPY
00000a4e: ADD
00000a4f: SWAP1
00000a50: POP
00000a51: JUMPDEST
00000a52: POP
00000a53: SWAP1
00000a54: POP
00000a55: PUSH1 0x00
00000a57: DUP4
00000a58: PUSH1 0x00
00000a5a: DUP2
00000a5b: MLOAD
00000a5c: DUP2
00000a5d: LT
00000a5e: PUSH2 0x0a63
00000a61: JUMPI
00000a62: INVALID
00000a63: JUMPDEST
00000a64: PUSH1 0x20
00000a66: MUL
00000a67: PUSH1 0x20
00000a69: ADD
00000a6a: ADD
00000a6b: MLOAD
00000a6c: SLT
00000a6d: ISZERO
00000a6e: PUSH2 0x0b27
00000a71: JUMPI
00000a72: PUSH1 0x00
00000a74: DUP1
00000a75: DUP1
00000a76: MSTORE
00000a77: PUSH32 0x05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc
00000a98: PUSH1 0x20
00000a9a: MSTORE
00000a9b: PUSH32 0x45d21ede0cb86a9bc9f3a728b8ad730cd840abb3d7468e2d1713e27e21c48d2a
00000abc: SLOAD
00000abd: DUP5
00000abe: MLOAD
00000abf: PUSH1 0x01
00000ac1: PUSH1 0x01
00000ac3: PUSH1 0x80
00000ac5: SHL
00000ac6: SUB
00000ac7: SWAP1
00000ac8: SWAP2
00000ac9: AND
00000aca: SWAP2
00000acb: PUSH2 0x0b08
00000ace: SWAP2
00000acf: PUSH8 0x0de0b6b3a7640000
00000ad8: SWAP2
00000ad9: PUSH2 0x0afc
00000adc: SWAP2
00000add: DUP6
00000ade: SWAP2
00000adf: DUP10
00000ae0: SWAP2
00000ae1: PUSH2 0x0ae6
00000ae4: JUMPI
00000ae5: INVALID
00000ae6: JUMPDEST
00000ae7: PUSH1 0x20
00000ae9: MUL
00000aea: PUSH1 0x20
00000aec: ADD
00000aed: ADD
00000aee: MLOAD
00000aef: PUSH2 0x2d68
00000af2: SWAP1
00000af3: SWAP2
00000af4: SWAP1
00000af5: PUSH4 0xffffffff
00000afa: AND
00000afb: JUMP
00000afc: JUMPDEST
00000afd: SWAP1
00000afe: PUSH4 0xffffffff
00000b03: PUSH2 0x2dd3
00000b06: AND
00000b07: JUMP
00000b08: JUMPDEST
00000b09: DUP3
00000b0a: PUSH1 0x00
00000b0c: DUP2
00000b0d: MLOAD
00000b0e: DUP2
00000b0f: LT
00000b10: PUSH2 0x0b15
00000b13: JUMPI
00000b14: INVALID
00000b15: JUMPDEST
00000b16: PUSH1 0x20
00000b18: MUL
00000b19: PUSH1 0x20
00000b1b: ADD
00000b1c: ADD
00000b1d: DUP2
00000b1e: DUP2
00000b1f: MSTORE
00000b20: POP
00000b21: POP
00000b22: POP
00000b23: PUSH2 0x0b56
00000b26: JUMP
00000b27: JUMPDEST
00000b28: DUP3
00000b29: PUSH1 0x00
00000b2b: DUP2
00000b2c: MLOAD
00000b2d: DUP2
00000b2e: LT
00000b2f: PUSH2 0x0b34
00000b32: JUMPI
00000b33: INVALID
00000b34: JUMPDEST
00000b35: PUSH1 0x20
00000b37: MUL
00000b38: PUSH1 0x20
00000b3a: ADD
00000b3b: ADD
00000b3c: MLOAD
00000b3d: DUP2
00000b3e: PUSH1 0x00
00000b40: DUP2
00000b41: MLOAD
00000b42: DUP2
00000b43: LT
00000b44: PUSH2 0x0b49
00000b47: JUMPI
00000b48: INVALID
00000b49: JUMPDEST
00000b4a: PUSH1 0x20
00000b4c: MUL
00000b4d: PUSH1 0x20
00000b4f: ADD
00000b50: ADD
00000b51: DUP2
00000b52: DUP2
00000b53: MSTORE
00000b54: POP
00000b55: POP
00000b56: JUMPDEST
00000b57: PUSH1 0x01
00000b59: JUMPDEST
00000b5a: DUP4
00000b5b: MLOAD
00000b5c: DUP2
00000b5d: LT
00000b5e: ISZERO
00000b5f: PUSH2 0x0c99
00000b62: JUMPI
00000b63: DUP4
00000b64: DUP2
00000b65: DUP2
00000b66: MLOAD
00000b67: DUP2
00000b68: LT
00000b69: PUSH2 0x0b6e
00000b6c: JUMPI
00000b6d: INVALID
00000b6e: JUMPDEST
00000b6f: PUSH1 0x20
00000b71: MUL
00000b72: PUSH1 0x20
00000b74: ADD
00000b75: ADD
00000b76: MLOAD
00000b77: PUSH1 0x00
00000b79: EQ
00000b7a: ISZERO
00000b7b: PUSH2 0x0b83
00000b7e: JUMPI
00000b7f: PUSH2 0x0c91
00000b82: JUMP
00000b83: JUMPDEST
00000b84: PUSH2 0x0b8b
00000b87: PUSH2 0x4688
00000b8a: JUMP
00000b8b: JUMPDEST
00000b8c: POP
00000b8d: PUSH2 0xffff
00000b90: DUP2
00000b91: AND
00000b92: PUSH1 0x00
00000b94: DUP2
00000b95: DUP2
00000b96: MSTORE
00000b97: PUSH1 0x05
00000b99: PUSH1 0x20
00000b9b: SWAP1
00000b9c: DUP2
00000b9d: MSTORE
00000b9e: PUSH1 0x40
00000ba0: DUP1
00000ba1: DUP4
00000ba2: KECCAK256
00000ba3: DUP4
00000ba4: DUP1
00000ba5: MSTORE
00000ba6: DUP3
00000ba7: MSTORE
00000ba8: DUP1
00000ba9: DUP4
00000baa: KECCAK256
00000bab: DUP2
00000bac: MLOAD
00000bad: PUSH1 0x80
00000baf: DUP2
00000bb0: ADD
00000bb1: DUP4
00000bb2: MSTORE
00000bb3: DUP2
00000bb4: SLOAD
00000bb5: PUSH1 0x01
00000bb7: PUSH1 0x01
00000bb9: PUSH1 0xa0
00000bbb: SHL
00000bbc: SUB
00000bbd: AND
00000bbe: DUP2
00000bbf: MSTORE
00000bc0: PUSH1 0x01
00000bc2: DUP3
00000bc3: ADD
00000bc4: SLOAD
00000bc5: PUSH1 0x01
00000bc7: PUSH1 0x01
00000bc9: PUSH1 0x80
00000bcb: SHL
00000bcc: SUB
00000bcd: DUP1
00000bce: DUP3
00000bcf: AND
00000bd0: DUP4
00000bd1: DUP8
00000bd2: ADD
00000bd3: MSTORE
00000bd4: PUSH1 0x01
00000bd6: PUSH1 0x80
00000bd8: SHL
00000bd9: SWAP1
00000bda: SWAP2
00000bdb: DIV
00000bdc: PUSH1 0xff
00000bde: AND
00000bdf: ISZERO
00000be0: ISZERO
00000be1: DUP3
00000be2: DUP6
00000be3: ADD
00000be4: MSTORE
00000be5: PUSH1 0x02
00000be7: SWAP3
00000be8: DUP4
00000be9: ADD
00000bea: SLOAD
00000beb: AND
00000bec: PUSH1 0x60
00000bee: DUP3
00000bef: ADD
00000bf0: MSTORE
00000bf1: SWAP5
00000bf2: DUP5
00000bf3: MSTORE
00000bf4: SWAP1
00000bf5: SWAP2
00000bf6: MSTORE
00000bf7: DUP2
00000bf8: KECCAK256
00000bf9: SLOAD
00000bfa: DUP7
00000bfb: MLOAD
00000bfc: SWAP1
00000bfd: SWAP2
00000bfe: SWAP1
00000bff: DUP8
00000c00: SWAP1
00000c01: DUP6
00000c02: SWAP1
00000c03: DUP2
00000c04: LT
00000c05: PUSH2 0x0c0a
00000c08: JUMPI
00000c09: INVALID
00000c0a: JUMPDEST
00000c0b: PUSH1 0x20
00000c0d: MUL
00000c0e: PUSH1 0x20
00000c10: ADD
00000c11: ADD
00000c12: MLOAD
00000c13: SLT
00000c14: ISZERO
00000c15: PUSH2 0x0c55
00000c18: JUMPI
00000c19: PUSH2 0x0c38
00000c1c: DUP3
00000c1d: DUP3
00000c1e: DUP9
00000c1f: DUP7
00000c20: DUP2
00000c21: MLOAD
00000c22: DUP2
00000c23: LT
00000c24: PUSH2 0x0c29
00000c27: JUMPI
00000c28: INVALID
00000c29: JUMPDEST
00000c2a: PUSH1 0x20
00000c2c: MUL
00000c2d: PUSH1 0x20
00000c2f: ADD
00000c30: ADD
00000c31: MLOAD
00000c32: PUSH1 0x01
00000c34: PUSH2 0x2e37
00000c37: JUMP
00000c38: JUMPDEST
00000c39: DUP5
00000c3a: DUP5
00000c3b: DUP2
00000c3c: MLOAD
00000c3d: DUP2
00000c3e: LT
00000c3f: PUSH2 0x0c44
00000c42: JUMPI
00000c43: INVALID
00000c44: JUMPDEST
00000c45: PUSH1 0x20
00000c47: MUL
00000c48: PUSH1 0x20
00000c4a: ADD
00000c4b: ADD
00000c4c: DUP2
00000c4d: DUP2
00000c4e: MSTORE
00000c4f: POP
00000c50: POP
00000c51: PUSH2 0x0c8e
00000c54: JUMP
00000c55: JUMPDEST
00000c56: PUSH2 0x0c75
00000c59: DUP3
00000c5a: DUP3
00000c5b: DUP9
00000c5c: DUP7
00000c5d: DUP2
00000c5e: MLOAD
00000c5f: DUP2
00000c60: LT
00000c61: PUSH2 0x0c66
00000c64: JUMPI
00000c65: INVALID
00000c66: JUMPDEST
00000c67: PUSH1 0x20
00000c69: MUL
00000c6a: PUSH1 0x20
00000c6c: ADD
00000c6d: ADD
00000c6e: MLOAD
00000c6f: PUSH1 0x00
00000c71: PUSH2 0x2e37
00000c74: JUMP
00000c75: JUMPDEST
00000c76: DUP5
00000c77: DUP5
00000c78: DUP2
00000c79: MLOAD
00000c7a: DUP2
00000c7b: LT
00000c7c: PUSH2 0x0c81
00000c7f: JUMPI
00000c80: INVALID
00000c81: JUMPDEST
00000c82: PUSH1 0x20
00000c84: MUL
00000c85: PUSH1 0x20
00000c87: ADD
00000c88: ADD
00000c89: DUP2
00000c8a: DUP2
00000c8b: MSTORE
00000c8c: POP
00000c8d: POP
00000c8e: JUMPDEST
00000c8f: POP
00000c90: POP
00000c91: JUMPDEST
00000c92: PUSH1 0x01
00000c94: ADD
00000c95: PUSH2 0x0b59
00000c98: JUMP
00000c99: JUMPDEST
00000c9a: POP
00000c9b: SWAP1
00000c9c: POP
00000c9d: JUMPDEST
00000c9e: SWAP2
00000c9f: SWAP1
00000ca0: POP
00000ca1: JUMP
00000ca2: JUMPDEST
00000ca3: PUSH2 0x0caa
00000ca6: PUSH2 0x2efd
00000ca9: JUMP
00000caa: JUMPDEST
00000cab: PUSH2 0x0cc6
00000cae: JUMPI
00000caf: PUSH1 0x40
00000cb1: MLOAD
00000cb2: PUSH3 0x461bcd
00000cb6: PUSH1 0xe5
00000cb8: SHL
00000cb9: DUP2
00000cba: MSTORE
00000cbb: PUSH1 0x04
00000cbd: ADD
00000cbe: PUSH2 0x08ca
00000cc1: SWAP1
00000cc2: PUSH2 0x5a3a
00000cc5: JUMP
00000cc6: JUMPDEST
00000cc7: PUSH1 0x00
00000cc9: JUMPDEST
00000cca: DUP2
00000ccb: MLOAD
00000ccc: DUP2
00000ccd: LT
00000cce: ISZERO
00000ccf: PUSH2 0x09cb
00000cd2: JUMPI
00000cd3: PUSH1 0x00
00000cd5: PUSH1 0x01
00000cd7: PUSH1 0x00
00000cd9: DUP5
00000cda: DUP5
00000cdb: DUP2
00000cdc: MLOAD
00000cdd: DUP2
00000cde: LT
00000cdf: PUSH2 0x0ce4
00000ce2: JUMPI
00000ce3: INVALID
00000ce4: JUMPDEST
00000ce5: PUSH1 0x20
00000ce7: MUL
00000ce8: PUSH1 0x20
00000cea: ADD
00000ceb: ADD
00000cec: MLOAD
00000ced: PUSH1 0x20
00000cef: ADD
00000cf0: MLOAD
00000cf1: PUSH2 0xffff
00000cf4: AND
00000cf5: PUSH2 0xffff
00000cf8: AND
00000cf9: DUP2
00000cfa: MSTORE
00000cfb: PUSH1 0x20
00000cfd: ADD
00000cfe: SWAP1
00000cff: DUP2
00000d00: MSTORE
00000d01: PUSH1 0x20
00000d03: ADD
00000d04: PUSH1 0x00
00000d06: KECCAK256
00000d07: PUSH1 0x00
00000d09: SWAP1
00000d0a: SLOAD
00000d0b: SWAP1
00000d0c: PUSH2 0x0100
00000d0f: EXP
00000d10: SWAP1
00000d11: DIV
00000d12: PUSH1 0x01
00000d14: PUSH1 0x01
00000d16: PUSH1 0xa0
00000d18: SHL
00000d19: SUB
00000d1a: AND
00000d1b: SWAP1
00000d1c: POP
00000d1d: PUSH1 0x00
00000d1f: DUP4
00000d20: DUP4
00000d21: DUP2
00000d22: MLOAD
00000d23: DUP2
00000d24: LT
00000d25: PUSH2 0x0d2a
00000d28: JUMPI
00000d29: INVALID
00000d2a: JUMPDEST
00000d2b: PUSH1 0x20
00000d2d: MUL
00000d2e: PUSH1 0x20
00000d30: ADD
00000d31: ADD
00000d32: MLOAD
00000d33: PUSH1 0x40
00000d35: ADD
00000d36: MLOAD
00000d37: PUSH1 0x01
00000d39: PUSH1 0x01
00000d3b: PUSH1 0x80
00000d3d: SHL
00000d3e: SUB
00000d3f: AND
00000d40: PUSH1 0x00
00000d42: EQ
00000d43: ISZERO
00000d44: PUSH2 0x0d4e
00000d47: JUMPI
00000d48: POP
00000d49: POP
00000d4a: PUSH2 0x0d91
00000d4d: JUMP
00000d4e: JUMPDEST
00000d4f: DUP4
00000d50: DUP4
00000d51: DUP2
00000d52: MLOAD
00000d53: DUP2
00000d54: LT
00000d55: PUSH2 0x0d5a
00000d58: JUMPI
00000d59: INVALID
00000d5a: JUMPDEST
00000d5b: PUSH1 0x20
00000d5d: MUL
00000d5e: PUSH1 0x20
00000d60: ADD
00000d61: ADD
00000d62: MLOAD
00000d63: PUSH1 0x40
00000d65: ADD
00000d66: MLOAD
00000d67: SWAP1
00000d68: POP
00000d69: PUSH2 0x0d8d
00000d6c: DUP6
00000d6d: DUP6
00000d6e: DUP6
00000d6f: DUP2
00000d70: MLOAD
00000d71: DUP2
00000d72: LT
00000d73: PUSH2 0x0d78
00000d76: JUMPI
00000d77: INVALID
00000d78: JUMPDEST
00000d79: PUSH1 0x20
00000d7b: MUL
00000d7c: PUSH1 0x20
00000d7e: ADD
00000d7f: ADD
00000d80: MLOAD
00000d81: PUSH1 0x00
00000d83: ADD
00000d84: MLOAD
00000d85: DUP5
00000d86: DUP5
00000d87: PUSH1 0x00
00000d89: PUSH2 0x2b25
00000d8c: JUMP
00000d8d: JUMPDEST
00000d8e: POP
00000d8f: POP
00000d90: POP
00000d91: JUMPDEST
00000d92: PUSH1 0x01
00000d94: ADD
00000d95: PUSH2 0x0cc9
00000d98: JUMP
00000d99: JUMPDEST
00000d9a: PUSH2 0x0da2
00000d9d: CALLER
00000d9e: PUSH2 0x2f26
00000da1: JUMP
00000da2: JUMPDEST
00000da3: JUMP
00000da4: JUMPDEST
00000da5: PUSH2 0x0dac
00000da8: PUSH2 0x46af
00000dab: JUMP
00000dac: JUMPDEST
00000dad: PUSH2 0x0db4
00000db0: PUSH2 0x304a
00000db3: JUMP
00000db4: JUMPDEST
00000db5: PUSH1 0x01
00000db7: PUSH1 0x01
00000db9: PUSH1 0xa0
00000dbb: SHL
00000dbc: SUB
00000dbd: AND
00000dbe: PUSH4 0x6dab47fd
00000dc3: DUP6
00000dc4: PUSH1 0x40
00000dc6: MLOAD
00000dc7: DUP3
00000dc8: PUSH4 0xffffffff
00000dcd: AND
00000dce: PUSH1 0xe0
00000dd0: SHL
00000dd1: DUP2
00000dd2: MSTORE
00000dd3: PUSH1 0x04
00000dd5: ADD
00000dd6: PUSH2 0x0ddf
00000dd9: SWAP2
00000dda: SWAP1
00000ddb: PUSH2 0x5e67
00000dde: JUMP
00000ddf: JUMPDEST
00000de0: PUSH1 0xa0
00000de2: PUSH1 0x40
00000de4: MLOAD
00000de5: DUP1
00000de6: DUP4
00000de7: SUB
00000de8: DUP2
00000de9: DUP7
00000dea: DUP1
00000deb: EXTCODESIZE
00000dec: ISZERO
00000ded: DUP1
00000dee: ISZERO
00000def: PUSH2 0x0df7
00000df2: JUMPI
00000df3: PUSH1 0x00
00000df5: DUP1
00000df6: REVERT
00000df7: JUMPDEST
00000df8: POP
00000df9: GAS
00000dfa: STATICCALL
00000dfb: ISZERO
00000dfc: DUP1
00000dfd: ISZERO
00000dfe: PUSH2 0x0e0b
00000e01: JUMPI
00000e02: RETURNDATASIZE
00000e03: PUSH1 0x00
00000e05: DUP1
00000e06: RETURNDATACOPY
00000e07: RETURNDATASIZE
00000e08: PUSH1 0x00
00000e0a: REVERT
00000e0b: JUMPDEST
00000e0c: POP
00000e0d: POP
00000e0e: POP
00000e0f: POP
00000e10: PUSH1 0x40
00000e12: MLOAD
00000e13: RETURNDATASIZE
00000e14: PUSH1 0x1f
00000e16: NOT
00000e17: PUSH1 0x1f
00000e19: DUP3
00000e1a: ADD
00000e1b: AND
00000e1c: DUP3
00000e1d: ADD
00000e1e: DUP1
00000e1f: PUSH1 0x40
00000e21: MSTORE
00000e22: POP
00000e23: DUP2
00000e24: ADD
00000e25: SWAP1
00000e26: PUSH2 0x0e2f
00000e29: SWAP2
00000e2a: SWAP1
00000e2b: PUSH2 0x505e
00000e2e: JUMP
00000e2f: JUMPDEST
00000e30: SWAP1
00000e31: POP
00000e32: DUP1
00000e33: PUSH1 0x60
00000e35: ADD
00000e36: MLOAD
00000e37: PUSH1 0x01
00000e39: PUSH1 0x01
00000e3b: PUSH1 0xa0
00000e3d: SHL
00000e3e: SUB
00000e3f: AND
00000e40: CALLER
00000e41: PUSH1 0x01
00000e43: PUSH1 0x01
00000e45: PUSH1 0xa0
00000e47: SHL
00000e48: SUB
00000e49: AND
00000e4a: EQ
00000e4b: PUSH2 0x0e66
00000e4e: JUMPI
00000e4f: PUSH1 0x40
00000e51: MLOAD
00000e52: PUSH3 0x461bcd
00000e56: PUSH1 0xe5
00000e58: SHL
00000e59: DUP2
00000e5a: MSTORE
00000e5b: PUSH1 0x04
00000e5d: ADD
00000e5e: PUSH2 0x08ca
00000e61: SWAP1
00000e62: PUSH2 0x5a3a
00000e65: JUMP
00000e66: JUMPDEST
00000e67: PUSH1 0x01
00000e69: PUSH1 0x01
00000e6b: PUSH1 0x80
00000e6d: SHL
00000e6e: SUB
00000e6f: DUP3
00000e70: AND
00000e71: ISZERO
00000e72: PUSH2 0x0eeb
00000e75: JUMPI
00000e76: PUSH1 0x80
00000e78: DUP2
00000e79: ADD
00000e7a: MLOAD
00000e7b: PUSH2 0xffff
00000e7e: AND
00000e7f: PUSH1 0x00
00000e81: SWAP1
00000e82: DUP2
00000e83: MSTORE
00000e84: PUSH1 0x06
00000e86: PUSH1 0x20
00000e88: SWAP1
00000e89: DUP2
00000e8a: MSTORE
00000e8b: PUSH1 0x40
00000e8d: DUP1
00000e8e: DUP4
00000e8f: KECCAK256
00000e90: PUSH1 0x07
00000e92: SLOAD
00000e93: PUSH1 0x01
00000e95: PUSH1 0x01
00000e97: PUSH1 0xa0
00000e99: SHL
00000e9a: SUB
00000e9b: AND
00000e9c: DUP5
00000e9d: MSTORE
00000e9e: SWAP1
00000e9f: SWAP2
00000ea0: MSTORE
00000ea1: SWAP1
00000ea2: KECCAK256
00000ea3: SLOAD
00000ea4: PUSH2 0x0ebc
00000ea7: SWAP1
00000ea8: PUSH1 0x01
00000eaa: PUSH1 0x01
00000eac: PUSH1 0x80
00000eae: SHL
00000eaf: SUB
00000eb0: DUP5
00000eb1: AND
00000eb2: PUSH4 0xffffffff
00000eb7: PUSH2 0x2aad
00000eba: AND
00000ebb: JUMP
00000ebc: JUMPDEST
00000ebd: PUSH1 0x80
00000ebf: DUP3
00000ec0: ADD
00000ec1: MLOAD
00000ec2: PUSH2 0xffff
00000ec5: AND
00000ec6: PUSH1 0x00
00000ec8: SWAP1
00000ec9: DUP2
00000eca: MSTORE
00000ecb: PUSH1 0x06
00000ecd: PUSH1 0x20
00000ecf: SWAP1
00000ed0: DUP2
00000ed1: MSTORE
00000ed2: PUSH1 0x40
00000ed4: DUP1
00000ed5: DUP4
00000ed6: KECCAK256
00000ed7: PUSH1 0x07
00000ed9: SLOAD
00000eda: PUSH1 0x01
00000edc: PUSH1 0x01
00000ede: PUSH1 0xa0
00000ee0: SHL
00000ee1: SUB
00000ee2: AND
00000ee3: DUP5
00000ee4: MSTORE
00000ee5: SWAP1
00000ee6: SWAP2
00000ee7: MSTORE
00000ee8: SWAP1
00000ee9: KECCAK256
00000eea: SSTORE
00000eeb: JUMPDEST
00000eec: PUSH1 0x80
00000eee: DUP2
00000eef: ADD
00000ef0: MLOAD
00000ef1: PUSH2 0xffff
00000ef4: AND
00000ef5: PUSH1 0x00
00000ef7: SWAP1
00000ef8: DUP2
00000ef9: MSTORE
00000efa: PUSH1 0x06
00000efc: PUSH1 0x20
00000efe: SWAP1
00000eff: DUP2
00000f00: MSTORE
00000f01: PUSH1 0x40
00000f03: DUP1
00000f04: DUP4
00000f05: KECCAK256
00000f06: CALLER
00000f07: DUP5
00000f08: MSTORE
00000f09: SWAP1
00000f0a: SWAP2
00000f0b: MSTORE
00000f0c: SWAP1
00000f0d: KECCAK256
00000f0e: SLOAD
00000f0f: PUSH2 0x0f27
00000f12: SWAP1
00000f13: PUSH1 0x01
00000f15: PUSH1 0x01
00000f17: PUSH1 0x80
00000f19: SHL
00000f1a: SUB
00000f1b: DUP6
00000f1c: AND
00000f1d: PUSH4 0xffffffff
00000f22: PUSH2 0x2aad
00000f25: AND
00000f26: JUMP
00000f27: JUMPDEST
00000f28: PUSH1 0x80
00000f2a: DUP3
00000f2b: ADD
00000f2c: DUP1
00000f2d: MLOAD
00000f2e: PUSH2 0xffff
00000f31: SWAP1
00000f32: DUP2
00000f33: AND
00000f34: PUSH1 0x00
00000f36: SWAP1
00000f37: DUP2
00000f38: MSTORE
00000f39: PUSH1 0x06
00000f3b: PUSH1 0x20
00000f3d: DUP2
00000f3e: DUP2
00000f3f: MSTORE
00000f40: PUSH1 0x40
00000f42: DUP1
00000f43: DUP5
00000f44: KECCAK256
00000f45: CALLER
00000f46: DUP6
00000f47: MSTORE
00000f48: DUP3
00000f49: MSTORE
00000f4a: DUP1
00000f4b: DUP5
00000f4c: KECCAK256
00000f4d: SWAP7
00000f4e: SWAP1
00000f4f: SWAP7
00000f50: SSTORE
00000f51: SWAP4
00000f52: MLOAD
00000f53: SWAP1
00000f54: SWAP3
00000f55: AND
00000f56: DUP2
00000f57: MSTORE
00000f58: SWAP1
00000f59: DUP3
00000f5a: MSTORE
00000f5b: DUP3
00000f5c: DUP2
00000f5d: KECCAK256
00000f5e: PUSH1 0x01
00000f60: PUSH1 0x01
00000f62: PUSH1 0xa0
00000f64: SHL
00000f65: SUB
00000f66: DUP10
00000f67: AND
00000f68: DUP3
00000f69: MSTORE
00000f6a: SWAP1
00000f6b: SWAP2
00000f6c: MSTORE
00000f6d: KECCAK256
00000f6e: SLOAD
00000f6f: PUSH2 0x0fa0
00000f72: PUSH2 0x0f8a
00000f75: PUSH1 0x01
00000f77: PUSH1 0x01
00000f79: PUSH1 0x80
00000f7b: SHL
00000f7c: SUB
00000f7d: DUP7
00000f7e: AND
00000f7f: DUP6
00000f80: PUSH4 0xffffffff
00000f85: PUSH2 0x3082
00000f88: AND
00000f89: JUMP
00000f8a: JUMPDEST
00000f8b: DUP3
00000f8c: SWAP1
00000f8d: PUSH1 0x01
00000f8f: PUSH1 0x01
00000f91: PUSH1 0x80
00000f93: SHL
00000f94: SUB
00000f95: AND
00000f96: PUSH4 0xffffffff
00000f9b: PUSH2 0x30b3
00000f9e: AND
00000f9f: JUMP
00000fa0: JUMPDEST
00000fa1: PUSH1 0x80
00000fa3: SWAP1
00000fa4: SWAP3
00000fa5: ADD
00000fa6: MLOAD
00000fa7: PUSH2 0xffff
00000faa: AND
00000fab: PUSH1 0x00
00000fad: SWAP1
00000fae: DUP2
00000faf: MSTORE
00000fb0: PUSH1 0x06
00000fb2: PUSH1 0x20
00000fb4: SWAP1
00000fb5: DUP2
00000fb6: MSTORE
00000fb7: PUSH1 0x40
00000fb9: DUP1
00000fba: DUP4
00000fbb: KECCAK256
00000fbc: PUSH1 0x01
00000fbe: PUSH1 0x01
00000fc0: PUSH1 0xa0
00000fc2: SHL
00000fc3: SUB
00000fc4: SWAP1
00000fc5: SWAP10
00000fc6: AND
00000fc7: DUP4
00000fc8: MSTORE
00000fc9: SWAP8
00000fca: SWAP1
00000fcb: MSTORE
00000fcc: SWAP6
00000fcd: SWAP1
00000fce: SWAP6
00000fcf: KECCAK256
00000fd0: SSTORE
00000fd1: POP
00000fd2: POP
00000fd3: POP
00000fd4: POP
00000fd5: JUMP
00000fd6: JUMPDEST
00000fd7: PUSH1 0x08
00000fd9: SLOAD
00000fda: PUSH1 0x01
00000fdc: PUSH1 0xa8
00000fde: SHL
00000fdf: SWAP1
00000fe0: DIV
00000fe1: PUSH1 0xff
00000fe3: AND
00000fe4: DUP1
00000fe5: PUSH2 0x0ff1
00000fe8: JUMPI
00000fe9: POP
00000fea: PUSH2 0x0ff1
00000fed: PUSH2 0x30e3
00000ff0: JUMP
00000ff1: JUMPDEST
00000ff2: DUP1
00000ff3: PUSH2 0x1006
00000ff6: JUMPI
00000ff7: POP
00000ff8: PUSH1 0x08
00000ffa: SLOAD
00000ffb: PUSH1 0x01
00000ffd: PUSH1 0xa0
00000fff: SHL
00001000: SWAP1
00001001: DIV
00001002: PUSH1 0xff
00001004: AND
00001005: ISZERO
00001006: JUMPDEST
00001007: PUSH2 0x1022
0000100a: JUMPI
0000100b: PUSH1 0x40
0000100d: MLOAD
0000100e: PUSH3 0x461bcd
00001012: PUSH1 0xe5
00001014: SHL
00001015: DUP2
00001016: MSTORE
00001017: PUSH1 0x04
00001019: ADD
0000101a: PUSH2 0x08ca
0000101d: SWAP1
0000101e: PUSH2 0x5b24
00001021: JUMP
00001022: JUMPDEST
00001023: PUSH1 0x08
00001025: SLOAD
00001026: PUSH1 0x01
00001028: PUSH1 0xa8
0000102a: SHL
0000102b: SWAP1
0000102c: DIV
0000102d: PUSH1 0xff
0000102f: AND
00001030: ISZERO
00001031: DUP1
00001032: ISZERO
00001033: PUSH2 0x1059
00001036: JUMPI
00001037: PUSH1 0x08
00001039: DUP1
0000103a: SLOAD
0000103b: PUSH1 0xff
0000103d: PUSH1 0xa0
0000103f: SHL
00001040: NOT
00001041: PUSH1 0xff
00001043: PUSH1 0xa8
00001045: SHL
00001046: NOT
00001047: SWAP1
00001048: SWAP2
00001049: AND
0000104a: PUSH1 0x01
0000104c: PUSH1 0xa8
0000104e: SHL
0000104f: OR
00001050: AND
00001051: PUSH1 0x01
00001053: PUSH1 0xa0
00001055: SHL
00001056: OR
00001057: SWAP1
00001058: SSTORE
00001059: JUMPDEST
0000105a: PUSH1 0x08
0000105c: DUP1
0000105d: SLOAD
0000105e: PUSH1 0x01
00001060: PUSH1 0x01
00001062: PUSH1 0xa0
00001064: SHL
00001065: SUB
00001066: DUP1
00001067: DUP6
00001068: AND
00001069: PUSH1 0x01
0000106b: PUSH1 0x01
0000106d: PUSH1 0xa0
0000106f: SHL
00001070: SUB
00001071: NOT
00001072: SWAP3
00001073: DUP4
00001074: AND
00001075: OR
00001076: SWAP1
00001077: SWAP3
00001078: SSTORE
00001079: PUSH1 0x3b
0000107b: DUP1
0000107c: SLOAD
0000107d: SWAP3
0000107e: DUP7
0000107f: AND
00001080: SWAP3
00001081: SWAP1
00001082: SWAP2
00001083: AND
00001084: SWAP2
00001085: SWAP1
00001086: SWAP2
00001087: OR
00001088: SWAP1
00001089: SSTORE
0000108a: DUP1
0000108b: ISZERO
0000108c: PUSH2 0x09cb
0000108f: JUMPI
00001090: PUSH1 0x08
00001092: DUP1
00001093: SLOAD
00001094: PUSH1 0xff
00001096: PUSH1 0xa8
00001098: SHL
00001099: NOT
0000109a: AND
0000109b: SWAP1
0000109c: SSTORE
0000109d: POP
0000109e: POP
0000109f: POP
000010a0: JUMP
000010a1: JUMPDEST
000010a2: PUSH1 0x03
000010a4: PUSH1 0x20
000010a6: MSTORE
000010a7: PUSH1 0x00
000010a9: SWAP1
000010aa: DUP2
000010ab: MSTORE
000010ac: PUSH1 0x40
000010ae: SWAP1
000010af: KECCAK256
000010b0: SLOAD
000010b1: PUSH2 0xffff
000010b4: AND
000010b5: DUP2
000010b6: JUMP
000010b7: JUMPDEST
000010b8: PUSH1 0x05
000010ba: PUSH1 0x20
000010bc: SWAP1
000010bd: DUP2
000010be: MSTORE
000010bf: PUSH1 0x00
000010c1: SWAP3
000010c2: DUP4
000010c3: MSTORE
000010c4: PUSH1 0x40
000010c6: DUP1
000010c7: DUP5
000010c8: KECCAK256
000010c9: SWAP1
000010ca: SWAP2
000010cb: MSTORE
000010cc: SWAP1
000010cd: DUP3
000010ce: MSTORE
000010cf: SWAP1
000010d0: KECCAK256
000010d1: DUP1
000010d2: SLOAD
000010d3: PUSH1 0x01
000010d5: DUP3
000010d6: ADD
000010d7: SLOAD
000010d8: PUSH1 0x02
000010da: SWAP1
000010db: SWAP3
000010dc: ADD
000010dd: SLOAD
000010de: PUSH1 0x01
000010e0: PUSH1 0x01
000010e2: PUSH1 0xa0
000010e4: SHL
000010e5: SUB
000010e6: SWAP1
000010e7: SWAP2
000010e8: AND
000010e9: SWAP2
000010ea: PUSH1 0x01
000010ec: PUSH1 0x01
000010ee: PUSH1 0x80
000010f0: SHL
000010f1: SUB
000010f2: DUP1
000010f3: DUP3
000010f4: AND
000010f5: SWAP3
000010f6: PUSH1 0x01
000010f8: PUSH1 0x80
000010fa: SHL
000010fb: SWAP1
000010fc: SWAP3
000010fd: DIV
000010fe: PUSH1 0xff
00001100: AND
00001101: SWAP2
00001102: AND
00001103: DUP5
00001104: JUMP
00001105: JUMPDEST
00001106: PUSH2 0x110d
00001109: PUSH2 0x46dd
0000110c: JUMP
0000110d: JUMPDEST
0000110e: PUSH2 0x1117
00001111: DUP8
00001112: DUP8
00001113: PUSH2 0x30e9
00001116: JUMP
00001117: JUMPDEST
00001118: SWAP1
00001119: POP
0000111a: PUSH1 0x60
0000111c: DUP4
0000111d: DUP4
0000111e: SWAP1
0000111f: POP
00001120: PUSH1 0x40
00001122: MLOAD
00001123: SWAP1
00001124: DUP1
00001125: DUP3
00001126: MSTORE
00001127: DUP1
00001128: PUSH1 0x20
0000112a: MUL
0000112b: PUSH1 0x20
0000112d: ADD
0000112e: DUP3
0000112f: ADD
00001130: PUSH1 0x40
00001132: MSTORE
00001133: DUP1
00001134: ISZERO
00001135: PUSH2 0x1148
00001138: JUMPI
00001139: DUP2
0000113a: PUSH1 0x20
0000113c: ADD
0000113d: PUSH1 0x20
0000113f: DUP3
00001140: MUL
00001141: DUP1
00001142: CALLDATASIZE
00001143: DUP4
00001144: CALLDATACOPY
00001145: ADD
00001146: SWAP1
00001147: POP
00001148: JUMPDEST
00001149: POP
0000114a: SWAP1
0000114b: POP
0000114c: PUSH1 0x00
0000114e: DUP1
0000114f: PUSH1 0x00
00001151: JUMPDEST
00001152: DUP8
00001153: DUP2
00001154: LT
00001155: ISZERO
00001156: PUSH2 0x1207
00001159: JUMPI
0000115a: PUSH1 0x00
0000115c: DUP1
0000115d: PUSH2 0x11a7
00001160: DUP12
00001161: DUP12
00001162: DUP6
00001163: DUP2
00001164: DUP2
00001165: LT
00001166: PUSH2 0x116b
00001169: JUMPI
0000116a: INVALID
0000116b: JUMPDEST
0000116c: SWAP1
0000116d: POP
0000116e: PUSH1 0x20
00001170: MUL
00001171: ADD
00001172: PUSH1 0x20
00001174: DUP2
00001175: ADD
00001176: SWAP1
00001177: PUSH2 0x1180
0000117a: SWAP2
0000117b: SWAP1
0000117c: PUSH2 0x4931
0000117f: JUMP
00001180: JUMPDEST
00001181: DUP11
00001182: DUP11
00001183: DUP7
00001184: DUP2
00001185: DUP2
00001186: LT
00001187: PUSH2 0x118c
0000118a: JUMPI
0000118b: INVALID
0000118c: JUMPDEST
0000118d: SWAP1
0000118e: POP
0000118f: PUSH1 0x20
00001191: MUL
00001192: ADD
00001193: PUSH1 0x20
00001195: DUP2
00001196: ADD
00001197: SWAP1
00001198: PUSH2 0x11a1
0000119b: SWAP2
0000119c: SWAP1
0000119d: PUSH2 0x5182
000011a0: JUMP
000011a1: JUMPDEST
000011a2: DUP10
000011a3: PUSH2 0x32b1
000011a6: JUMP
000011a7: JUMPDEST
000011a8: DUP9
000011a9: DUP7
000011aa: DUP2
000011ab: MLOAD
000011ac: DUP2
000011ad: LT
000011ae: PUSH2 0x11b3
000011b1: JUMPI
000011b2: INVALID
000011b3: JUMPDEST
000011b4: PUSH1 0x01
000011b6: PUSH1 0x01
000011b8: PUSH1 0x80
000011ba: SHL
000011bb: SUB
000011bc: SWAP5
000011bd: DUP6
000011be: AND
000011bf: PUSH1 0x20
000011c1: SWAP2
000011c2: DUP3
000011c3: MUL
000011c4: SWAP3
000011c5: SWAP1
000011c6: SWAP3
000011c7: ADD
000011c8: ADD
000011c9: MSTORE
000011ca: SWAP1
000011cb: SWAP4
000011cc: POP
000011cd: SWAP2
000011ce: POP
000011cf: PUSH2 0x11e0
000011d2: SWAP1
000011d3: DUP7
000011d4: AND
000011d5: DUP3
000011d6: PUSH4 0xffffffff
000011db: PUSH2 0x3082
000011de: AND
000011df: JUMP
000011e0: JUMPDEST
000011e1: SWAP5
000011e2: POP
000011e3: PUSH2 0x11fb
000011e6: PUSH1 0x01
000011e8: PUSH1 0x01
000011ea: PUSH1 0x80
000011ec: SHL
000011ed: SUB
000011ee: DUP6
000011ef: AND
000011f0: DUP4
000011f1: PUSH4 0xffffffff
000011f6: PUSH2 0x3082
000011f9: AND
000011fa: JUMP
000011fb: JUMPDEST
000011fc: SWAP4
000011fd: POP
000011fe: POP
000011ff: POP
00001200: PUSH1 0x01
00001202: ADD
00001203: PUSH2 0x1151
00001206: JUMP
00001207: JUMPDEST
00001208: POP
00001209: PUSH2 0x121b
0000120c: DUP11
0000120d: DUP3
0000120e: PUSH1 0x01
00001210: PUSH1 0x01
00001212: PUSH1 0x80
00001214: SHL
00001215: SUB
00001216: AND
00001217: PUSH2 0x34fc
0000121a: JUMP
0000121b: JUMPDEST
0000121c: PUSH2 0x1236
0000121f: DUP10
00001220: PUSH2 0x1231
00001223: DUP5
00001224: PUSH1 0x01
00001226: PUSH1 0x01
00001228: PUSH1 0x80
0000122a: SHL
0000122b: SUB
0000122c: AND
0000122d: PUSH2 0x361b
00001230: JUMP
00001231: JUMPDEST
00001232: PUSH2 0x34fc
00001235: JUMP
00001236: JUMPDEST
00001237: PUSH32 0xcf9efc6abb6464d820bb0fc18d722b04f8372f6a2f9031945246262d7659af33
00001258: DUP11
00001259: DUP11
0000125a: DUP11
0000125b: DUP11
0000125c: DUP8
0000125d: PUSH1 0x40
0000125f: MLOAD
00001260: PUSH2 0x126d
00001263: SWAP6
00001264: SWAP5
00001265: SWAP4
00001266: SWAP3
00001267: SWAP2
00001268: SWAP1
00001269: PUSH2 0x5dfa
0000126c: JUMP
0000126d: JUMPDEST
0000126e: PUSH1 0x40
00001270: MLOAD
00001271: DUP1
00001272: SWAP2
00001273: SUB
00001274: SWAP1
00001275: LOG1
00001276: POP
00001277: POP
00001278: POP
00001279: POP
0000127a: POP
0000127b: POP
0000127c: POP
0000127d: POP
0000127e: POP
0000127f: POP
00001280: JUMP
00001281: JUMPDEST
00001282: PUSH2 0x1289
00001285: PUSH2 0x14e2
00001288: JUMP
00001289: JUMPDEST
0000128a: PUSH2 0x1292
0000128d: JUMPI
0000128e: PUSH1 0x00
00001290: DUP1
00001291: REVERT
00001292: JUMPDEST
00001293: PUSH1 0x08
00001295: SLOAD
00001296: PUSH1 0x40
00001298: MLOAD
00001299: PUSH1 0x00
0000129b: SWAP2
0000129c: PUSH1 0x01
0000129e: PUSH1 0x01
000012a0: PUSH1 0xa0
000012a2: SHL
000012a3: SUB
000012a4: AND
000012a5: SWAP1
000012a6: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000012c7: SWAP1
000012c8: DUP4
000012c9: SWAP1
000012ca: LOG3
000012cb: PUSH1 0x08
000012cd: DUP1
000012ce: SLOAD
000012cf: PUSH1 0x01
000012d1: PUSH1 0x01
000012d3: PUSH1 0xa0
000012d5: SHL
000012d6: SUB
000012d7: NOT
000012d8: AND
000012d9: SWAP1
000012da: SSTORE
000012db: JUMP
000012dc: JUMPDEST
000012dd: PUSH1 0x01
000012df: PUSH1 0x20
000012e1: MSTORE
000012e2: PUSH1 0x00
000012e4: SWAP1
000012e5: DUP2
000012e6: MSTORE
000012e7: PUSH1 0x40
000012e9: SWAP1
000012ea: KECCAK256
000012eb: SLOAD
000012ec: PUSH1 0x01
000012ee: PUSH1 0x01
000012f0: PUSH1 0xa0
000012f2: SHL
000012f3: SUB
000012f4: AND
000012f5: DUP2
000012f6: JUMP
000012f7: JUMPDEST
000012f8: PUSH2 0x12ff
000012fb: PUSH2 0x46dd
000012fe: JUMP
000012ff: JUMPDEST
00001300: PUSH2 0x1309
00001303: DUP4
00001304: DUP4
00001305: PUSH2 0x30e9
00001308: JUMP
00001309: JUMPDEST
0000130a: SWAP1
0000130b: POP
0000130c: PUSH1 0x60
0000130e: DUP6
0000130f: DUP6
00001310: SWAP1
00001311: POP
00001312: PUSH1 0x40
00001314: MLOAD
00001315: SWAP1
00001316: DUP1
00001317: DUP3
00001318: MSTORE
00001319: DUP1
0000131a: PUSH1 0x20
0000131c: MUL
0000131d: PUSH1 0x20
0000131f: ADD
00001320: DUP3
00001321: ADD
00001322: PUSH1 0x40
00001324: MSTORE
00001325: DUP1
00001326: ISZERO
00001327: PUSH2 0x133a
0000132a: JUMPI
0000132b: DUP2
0000132c: PUSH1 0x20
0000132e: ADD
0000132f: PUSH1 0x20
00001331: DUP3
00001332: MUL
00001333: DUP1
00001334: CALLDATASIZE
00001335: DUP4
00001336: CALLDATACOPY
00001337: ADD
00001338: SWAP1
00001339: POP
0000133a: JUMPDEST
0000133b: POP
0000133c: SWAP1
0000133d: POP
0000133e: PUSH1 0x00
00001340: DUP1
00001341: PUSH1 0x00
00001343: JUMPDEST
00001344: DUP8
00001345: DUP2
00001346: LT
00001347: ISZERO
00001348: PUSH2 0x13dc
0000134b: JUMPI
0000134c: PUSH1 0x00
0000134e: DUP1
0000134f: PUSH2 0x137a
00001352: DUP12
00001353: DUP12
00001354: DUP6
00001355: DUP2
00001356: DUP2
00001357: LT
00001358: PUSH2 0x135d
0000135b: JUMPI
0000135c: INVALID
0000135d: JUMPDEST
0000135e: SWAP1
0000135f: POP
00001360: PUSH1 0x20
00001362: MUL
00001363: ADD
00001364: PUSH1 0x20
00001366: DUP2
00001367: ADD
00001368: SWAP1
00001369: PUSH2 0x1372
0000136c: SWAP2
0000136d: SWAP1
0000136e: PUSH2 0x4931
00001371: JUMP
00001372: JUMPDEST
00001373: DUP9
00001374: PUSH1 0x00
00001376: PUSH2 0x3629
00001379: JUMP
0000137a: JUMPDEST
0000137b: DUP9
0000137c: DUP7
0000137d: DUP2
0000137e: MLOAD
0000137f: DUP2
00001380: LT
00001381: PUSH2 0x1386
00001384: JUMPI
00001385: INVALID
00001386: JUMPDEST
00001387: PUSH1 0x01
00001389: PUSH1 0x01
0000138b: PUSH1 0x80
0000138d: SHL
0000138e: SUB
0000138f: SWAP1
00001390: SWAP5
00001391: AND
00001392: PUSH1 0x20
00001394: SWAP5
00001395: DUP6
00001396: MUL
00001397: SWAP2
00001398: SWAP1
00001399: SWAP2
0000139a: ADD
0000139b: SWAP1
0000139c: SWAP4
0000139d: ADD
0000139e: SWAP3
0000139f: SWAP1
000013a0: SWAP3
000013a1: MSTORE
000013a2: SWAP3
000013a3: POP
000013a4: SWAP1
000013a5: POP
000013a6: PUSH2 0x13b5
000013a9: DUP6
000013aa: DUP4
000013ab: PUSH4 0xffffffff
000013b0: PUSH2 0x2aad
000013b3: AND
000013b4: JUMP
000013b5: JUMPDEST
000013b6: SWAP5
000013b7: POP
000013b8: PUSH2 0x13d0
000013bb: PUSH1 0x01
000013bd: PUSH1 0x01
000013bf: PUSH1 0x80
000013c1: SHL
000013c2: SUB
000013c3: DUP6
000013c4: AND
000013c5: DUP3
000013c6: PUSH4 0xffffffff
000013cb: PUSH2 0x3082
000013ce: AND
000013cf: JUMP
000013d0: JUMPDEST
000013d1: SWAP4
000013d2: POP
000013d3: POP
000013d4: POP
000013d5: PUSH1 0x01
000013d7: ADD
000013d8: PUSH2 0x1343
000013db: JUMP
000013dc: JUMPDEST
000013dd: POP
000013de: PUSH2 0x13e7
000013e1: DUP7
000013e2: DUP4
000013e3: PUSH2 0x34fc
000013e6: JUMP
000013e7: JUMPDEST
000013e8: PUSH2 0x13fd
000013eb: DUP6
000013ec: PUSH2 0x1231
000013ef: DUP4
000013f0: PUSH1 0x01
000013f2: PUSH1 0x01
000013f4: PUSH1 0x80
000013f6: SHL
000013f7: SUB
000013f8: AND
000013f9: PUSH2 0x361b
000013fc: JUMP
000013fd: JUMPDEST
000013fe: DUP6
000013ff: PUSH2 0xffff
00001402: AND
00001403: PUSH32 0xd54ff80ddee326c304a5c68559c228b1f3f523d660e778803b1dcc73674d80f1
00001424: DUP7
00001425: DUP11
00001426: DUP11
00001427: DUP8
00001428: PUSH1 0x40
0000142a: MLOAD
0000142b: PUSH2 0x1437
0000142e: SWAP5
0000142f: SWAP4
00001430: SWAP3
00001431: SWAP2
00001432: SWAP1
00001433: PUSH2 0x5dbf
00001436: JUMP
00001437: JUMPDEST
00001438: PUSH1 0x40
0000143a: MLOAD
0000143b: DUP1
0000143c: SWAP2
0000143d: SUB
0000143e: SWAP1
0000143f: LOG2
00001440: POP
00001441: POP
00001442: POP
00001443: POP
00001444: POP
00001445: POP
00001446: POP
00001447: POP
00001448: JUMP
00001449: JUMPDEST
0000144a: PUSH1 0x3b
0000144c: SLOAD
0000144d: PUSH1 0x01
0000144f: PUSH1 0x01
00001451: PUSH1 0xa0
00001453: SHL
00001454: SUB
00001455: AND
00001456: CALLER
00001457: EQ
00001458: PUSH2 0x1473
0000145b: JUMPI
0000145c: PUSH1 0x40
0000145e: MLOAD
0000145f: PUSH3 0x461bcd
00001463: PUSH1 0xe5
00001465: SHL
00001466: DUP2
00001467: MSTORE
00001468: PUSH1 0x04
0000146a: ADD
0000146b: PUSH2 0x08ca
0000146e: SWAP1
0000146f: PUSH2 0x5a3a
00001472: JUMP
00001473: JUMPDEST
00001474: DUP1
00001475: PUSH1 0x3c
00001477: PUSH1 0x00
00001479: DUP5
0000147a: PUSH1 0x03
0000147c: DUP2
0000147d: GT
0000147e: ISZERO
0000147f: PUSH2 0x1484
00001482: JUMPI
00001483: INVALID
00001484: JUMPDEST
00001485: DUP2
00001486: MSTORE
00001487: PUSH1 0x20
00001489: ADD
0000148a: SWAP1
0000148b: DUP2
0000148c: MSTORE
0000148d: PUSH1 0x20
0000148f: ADD
00001490: PUSH1 0x00
00001492: KECCAK256
00001493: PUSH1 0x00
00001495: PUSH2 0x0100
00001498: EXP
00001499: DUP2
0000149a: SLOAD
0000149b: DUP2
0000149c: PUSH1 0x01
0000149e: PUSH1 0x01
000014a0: PUSH1 0xa0
000014a2: SHL
000014a3: SUB
000014a4: MUL
000014a5: NOT
000014a6: AND
000014a7: SWAP1
000014a8: DUP4
000014a9: PUSH1 0x01
000014ab: PUSH1 0x01
000014ad: PUSH1 0xa0
000014af: SHL
000014b0: SUB
000014b1: AND
000014b2: MUL
000014b3: OR
000014b4: SWAP1
000014b5: SSTORE
000014b6: POP
000014b7: POP
000014b8: POP
000014b9: JUMP
000014ba: JUMPDEST
000014bb: PUSH1 0x00
000014bd: PUSH2 0x0997
000014c0: PUSH2 0x383e
000014c3: JUMP
000014c4: JUMPDEST
000014c5: PUSH1 0x3b
000014c7: SLOAD
000014c8: PUSH1 0x01
000014ca: PUSH1 0x01
000014cc: PUSH1 0xa0
000014ce: SHL
000014cf: SUB
000014d0: AND
000014d1: DUP2
000014d2: JUMP
000014d3: JUMPDEST
000014d4: PUSH1 0x08
000014d6: SLOAD
000014d7: PUSH1 0x01
000014d9: PUSH1 0x01
000014db: PUSH1 0xa0
000014dd: SHL
000014de: SUB
000014df: AND
000014e0: SWAP1
000014e1: JUMP
000014e2: JUMPDEST
000014e3: PUSH1 0x08
000014e5: SLOAD
000014e6: PUSH1 0x01
000014e8: PUSH1 0x01
000014ea: PUSH1 0xa0
000014ec: SHL
000014ed: SUB
000014ee: AND
000014ef: CALLER
000014f0: EQ
000014f1: SWAP1
000014f2: JUMP
000014f3: JUMPDEST
000014f4: PUSH1 0x06
000014f6: PUSH1 0x20
000014f8: SWAP1
000014f9: DUP2
000014fa: MSTORE
000014fb: PUSH1 0x00
000014fd: SWAP3
000014fe: DUP4
000014ff: MSTORE
00001500: PUSH1 0x40
00001502: DUP1
00001503: DUP5
00001504: KECCAK256
00001505: SWAP1
00001506: SWAP2
00001507: MSTORE
00001508: SWAP1
00001509: DUP3
0000150a: MSTORE
0000150b: SWAP1
0000150c: KECCAK256
0000150d: SLOAD
0000150e: DUP2
0000150f: JUMP
00001510: JUMPDEST
00001511: PUSH1 0x00
00001513: PUSH2 0x0997
00001516: PUSH2 0x3869
00001519: JUMP
0000151a: JUMPDEST
0000151b: PUSH2 0x1524
0000151e: CALLER
0000151f: DUP3
00001520: PUSH2 0x3894
00001523: JUMP
00001524: JUMPDEST
00001525: POP
00001526: JUMP
00001527: JUMPDEST
00001528: PUSH2 0x152f
0000152b: PUSH2 0x3a54
0000152e: JUMP
0000152f: JUMPDEST
00001530: PUSH2 0x154b
00001533: JUMPI
00001534: PUSH1 0x40
00001536: MLOAD
00001537: PUSH3 0x461bcd
0000153b: PUSH1 0xe5
0000153d: SHL
0000153e: DUP2
0000153f: MSTORE
00001540: PUSH1 0x04
00001542: ADD
00001543: PUSH2 0x08ca
00001546: SWAP1
00001547: PUSH2 0x5a3a
0000154a: JUMP
0000154b: JUMPDEST
0000154c: PUSH2 0xffff
0000154f: DUP4
00001550: AND
00001551: PUSH1 0x00
00001553: SWAP1
00001554: DUP2
00001555: MSTORE
00001556: PUSH1 0x06
00001558: PUSH1 0x20
0000155a: SWAP1
0000155b: DUP2
0000155c: MSTORE
0000155d: PUSH1 0x40
0000155f: DUP1
00001560: DUP4
00001561: KECCAK256
00001562: PUSH1 0x01
00001564: PUSH1 0x01
00001566: PUSH1 0xa0
00001568: SHL
00001569: SUB
0000156a: DUP7
0000156b: AND
0000156c: DUP5
0000156d: MSTORE
0000156e: SWAP1
0000156f: SWAP2
00001570: MSTORE
00001571: SWAP1
00001572: KECCAK256
00001573: SLOAD
00001574: PUSH2 0x1583
00001577: DUP2
00001578: DUP4
00001579: PUSH4 0xffffffff
0000157e: PUSH2 0x30b3
00001581: AND
00001582: JUMP
00001583: JUMPDEST
00001584: PUSH2 0xffff
00001587: SWAP1
00001588: SWAP5
00001589: AND
0000158a: PUSH1 0x00
0000158c: SWAP1
0000158d: DUP2
0000158e: MSTORE
0000158f: PUSH1 0x06
00001591: PUSH1 0x20
00001593: SWAP1
00001594: DUP2
00001595: MSTORE
00001596: PUSH1 0x40
00001598: DUP1
00001599: DUP4
0000159a: KECCAK256
0000159b: PUSH1 0x01
0000159d: PUSH1 0x01
0000159f: PUSH1 0xa0
000015a1: SHL
000015a2: SUB
000015a3: SWAP1
000015a4: SWAP7
000015a5: AND
000015a6: DUP4
000015a7: MSTORE
000015a8: SWAP5
000015a9: SWAP1
000015aa: MSTORE
000015ab: SWAP3
000015ac: SWAP1
000015ad: SWAP3
000015ae: KECCAK256
000015af: SWAP3
000015b0: SWAP1
000015b1: SWAP3
000015b2: SSTORE
000015b3: POP
000015b4: POP
000015b5: JUMP
000015b6: JUMPDEST
000015b7: PUSH2 0x15be
000015ba: PUSH2 0x4720
000015bd: JUMP
000015be: JUMPDEST
000015bf: PUSH2 0x15c9
000015c2: DUP5
000015c3: DUP5
000015c4: DUP5
000015c5: PUSH2 0x3a60
000015c8: JUMP
000015c9: JUMPDEST
000015ca: SWAP1
000015cb: POP
000015cc: PUSH2 0x15d4
000015cf: DUP5
000015d0: PUSH2 0x3af1
000015d3: JUMP
000015d4: JUMPDEST
000015d5: ISZERO
000015d6: PUSH2 0x15f1
000015d9: JUMPI
000015da: PUSH1 0x40
000015dc: MLOAD
000015dd: PUSH3 0x461bcd
000015e1: PUSH1 0xe5
000015e3: SHL
000015e4: DUP2
000015e5: MSTORE
000015e6: PUSH1 0x04
000015e8: ADD
000015e9: PUSH2 0x08ca
000015ec: SWAP1
000015ed: PUSH2 0x5a1e
000015f0: JUMP
000015f1: JUMPDEST
000015f2: DUP1
000015f3: MLOAD
000015f4: PUSH1 0x00
000015f6: SGT
000015f7: PUSH2 0x1612
000015fa: JUMPI
000015fb: PUSH1 0x40
000015fd: MLOAD
000015fe: PUSH3 0x461bcd
00001602: PUSH1 0xe5
00001604: SHL
00001605: DUP2
00001606: MSTORE
00001607: PUSH1 0x04
00001609: ADD
0000160a: PUSH2 0x08ca
0000160d: SWAP1
0000160e: PUSH2 0x5ab4
00001611: JUMP
00001612: JUMPDEST
00001613: PUSH2 0x161a
00001616: PUSH2 0x46dd
00001619: JUMP
0000161a: JUMPDEST
0000161b: PUSH2 0x1624
0000161e: DUP5
0000161f: DUP5
00001620: PUSH2 0x30e9
00001623: JUMP
00001624: JUMPDEST
00001625: SWAP1
00001626: POP
00001627: PUSH1 0x00
00001629: DUP1
0000162a: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e
0000163f: PUSH4 0xfcb58601
00001644: DUP9
00001645: CALLER
00001646: DUP8
00001647: PUSH1 0x00
00001649: ADD
0000164a: MLOAD
0000164b: DUP9
0000164c: PUSH1 0x20
0000164e: ADD
0000164f: MLOAD
00001650: DUP10
00001651: PUSH1 0x40
00001653: ADD
00001654: MLOAD
00001655: DUP10
00001656: PUSH2 0x165d
00001659: PUSH2 0x304a
0000165c: JUMP
0000165d: JUMPDEST
0000165e: PUSH1 0x40
00001660: MLOAD
00001661: DUP9
00001662: PUSH4 0xffffffff
00001667: AND
00001668: PUSH1 0xe0
0000166a: SHL
0000166b: DUP2
0000166c: MSTORE
0000166d: PUSH1 0x04
0000166f: ADD
00001670: PUSH2 0x167f
00001673: SWAP8
00001674: SWAP7
00001675: SWAP6
00001676: SWAP5
00001677: SWAP4
00001678: SWAP3
00001679: SWAP2
0000167a: SWAP1
0000167b: PUSH2 0x55ac
0000167e: JUMP
0000167f: JUMPDEST
00001680: PUSH1 0x40
00001682: DUP1
00001683: MLOAD
00001684: DUP1
00001685: DUP4
00001686: SUB
00001687: DUP2
00001688: DUP7
00001689: DUP1
0000168a: EXTCODESIZE
0000168b: ISZERO
0000168c: DUP1
0000168d: ISZERO
0000168e: PUSH2 0x1696
00001691: JUMPI
00001692: PUSH1 0x00
00001694: DUP1
00001695: REVERT
00001696: JUMPDEST
00001697: POP
00001698: GAS
00001699: DELEGATECALL
0000169a: ISZERO
0000169b: DUP1
0000169c: ISZERO
0000169d: PUSH2 0x16aa
000016a0: JUMPI
000016a1: RETURNDATASIZE
000016a2: PUSH1 0x00
000016a4: DUP1
000016a5: RETURNDATACOPY
000016a6: RETURNDATASIZE
000016a7: PUSH1 0x00
000016a9: REVERT
000016aa: JUMPDEST
000016ab: POP
000016ac: POP
000016ad: POP
000016ae: POP
000016af: PUSH1 0x40
000016b1: MLOAD
000016b2: RETURNDATASIZE
000016b3: PUSH1 0x1f
000016b5: NOT
000016b6: PUSH1 0x1f
000016b8: DUP3
000016b9: ADD
000016ba: AND
000016bb: DUP3
000016bc: ADD
000016bd: DUP1
000016be: PUSH1 0x40
000016c0: MSTORE
000016c1: POP
000016c2: DUP2
000016c3: ADD
000016c4: SWAP1
000016c5: PUSH2 0x16ce
000016c8: SWAP2
000016c9: SWAP1
000016ca: PUSH2 0x503a
000016cd: JUMP
000016ce: JUMPDEST
000016cf: PUSH2 0xffff
000016d2: DUP9
000016d3: AND
000016d4: PUSH1 0x00
000016d6: SWAP1
000016d7: DUP2
000016d8: MSTORE
000016d9: PUSH1 0x06
000016db: PUSH1 0x20
000016dd: SWAP1
000016de: DUP2
000016df: MSTORE
000016e0: PUSH1 0x40
000016e2: DUP1
000016e3: DUP4
000016e4: KECCAK256
000016e5: PUSH1 0x01
000016e7: PUSH1 0x01
000016e9: PUSH1 0xa0
000016eb: SHL
000016ec: SUB
000016ed: DUP14
000016ee: AND
000016ef: DUP5
000016f0: MSTORE
000016f1: SWAP1
000016f2: SWAP2
000016f3: MSTORE
000016f4: SWAP1
000016f5: KECCAK256
000016f6: SLOAD
000016f7: SWAP2
000016f8: SWAP4
000016f9: POP
000016fa: SWAP2
000016fb: POP
000016fc: PUSH2 0x1714
000016ff: DUP2
00001700: PUSH1 0x01
00001702: PUSH1 0x01
00001704: PUSH1 0x80
00001706: SHL
00001707: SUB
00001708: DUP5
00001709: AND
0000170a: PUSH4 0xffffffff
0000170f: PUSH2 0x2aad
00001712: AND
00001713: JUMP
00001714: JUMPDEST
00001715: PUSH2 0xffff
00001718: DUP9
00001719: AND
0000171a: PUSH1 0x00
0000171c: SWAP1
0000171d: DUP2
0000171e: MSTORE
0000171f: PUSH1 0x06
00001721: PUSH1 0x20
00001723: SWAP1
00001724: DUP2
00001725: MSTORE
00001726: PUSH1 0x40
00001728: DUP1
00001729: DUP4
0000172a: KECCAK256
0000172b: PUSH1 0x01
0000172d: PUSH1 0x01
0000172f: PUSH1 0xa0
00001731: SHL
00001732: SUB
00001733: DUP14
00001734: AND
00001735: DUP5
00001736: MSTORE
00001737: SWAP1
00001738: SWAP2
00001739: MSTORE
0000173a: SWAP1
0000173b: KECCAK256
0000173c: SSTORE
0000173d: PUSH2 0x174f
00001740: DUP8
00001741: PUSH1 0x01
00001743: PUSH1 0x01
00001745: PUSH1 0x80
00001747: SHL
00001748: SUB
00001749: DUP5
0000174a: AND
0000174b: PUSH2 0x34fc
0000174e: JUMP
0000174f: JUMPDEST
00001750: PUSH2 0x1759
00001753: DUP7
00001754: DUP5
00001755: PUSH2 0x34fc
00001758: JUMP
00001759: JUMPDEST
0000175a: DUP7
0000175b: PUSH2 0xffff
0000175e: AND
0000175f: PUSH32 0xc12b12caff7d3a4e7e96205e010dce0f62a6e94ad6c798378a375566da377f0b
00001780: DUP8
00001781: DUP11
00001782: DUP6
00001783: PUSH1 0x40
00001785: MLOAD
00001786: PUSH2 0x1437
00001789: SWAP4
0000178a: SWAP3
0000178b: SWAP2
0000178c: SWAP1
0000178d: PUSH2 0x5d91
00001790: JUMP
00001791: JUMPDEST
00001792: PUSH2 0x1799
00001795: PUSH2 0x3a54
00001798: JUMP
00001799: JUMPDEST
0000179a: PUSH2 0x17b5
0000179d: JUMPI
0000179e: PUSH1 0x40
000017a0: MLOAD
000017a1: PUSH3 0x461bcd
000017a5: PUSH1 0xe5
000017a7: SHL
000017a8: DUP2
000017a9: MSTORE
000017aa: PUSH1 0x04
000017ac: ADD
000017ad: PUSH2 0x08ca
000017b0: SWAP1
000017b1: PUSH2 0x5a3a
000017b4: JUMP
000017b5: JUMPDEST
000017b6: PUSH1 0x00
000017b8: SLOAD
000017b9: PUSH1 0x01
000017bb: PUSH2 0xffff
000017be: PUSH1 0x01
000017c0: PUSH1 0xa0
000017c2: SHL
000017c3: SWAP1
000017c4: SWAP3
000017c5: DIV
000017c6: DUP3
000017c7: AND
000017c8: ADD
000017c9: AND
000017ca: DUP2
000017cb: EQ
000017cc: PUSH2 0x17e7
000017cf: JUMPI
000017d0: PUSH1 0x40
000017d2: MLOAD
000017d3: PUSH3 0x461bcd
000017d7: PUSH1 0xe5
000017d9: SHL
000017da: DUP2
000017db: MSTORE
000017dc: PUSH1 0x04
000017de: ADD
000017df: PUSH2 0x08ca
000017e2: SWAP1
000017e3: PUSH2 0x5aec
000017e6: JUMP
000017e7: JUMPDEST
000017e8: PUSH1 0x00
000017ea: JUMPDEST
000017eb: DUP2
000017ec: DUP2
000017ed: LT
000017ee: ISZERO
000017ef: PUSH2 0x1886
000017f2: JUMPI
000017f3: DUP3
000017f4: DUP3
000017f5: DUP3
000017f6: DUP2
000017f7: DUP2
000017f8: LT
000017f9: PUSH2 0x17fe
000017fc: JUMPI
000017fd: INVALID
000017fe: JUMPDEST
000017ff: SWAP1
00001800: POP
00001801: PUSH1 0x20
00001803: MUL
00001804: ADD
00001805: CALLDATALOAD
00001806: PUSH1 0x00
00001808: EQ
00001809: PUSH2 0x187e
0000180c: JUMPI
0000180d: PUSH2 0x1855
00001810: DUP4
00001811: DUP4
00001812: DUP4
00001813: DUP2
00001814: DUP2
00001815: LT
00001816: PUSH2 0x181b
00001819: JUMPI
0000181a: INVALID
0000181b: JUMPDEST
0000181c: PUSH2 0xffff
0000181f: DUP6
00001820: AND
00001821: PUSH1 0x00
00001823: SWAP1
00001824: DUP2
00001825: MSTORE
00001826: PUSH1 0x06
00001828: PUSH1 0x20
0000182a: SWAP1
0000182b: DUP2
0000182c: MSTORE
0000182d: PUSH1 0x40
0000182f: DUP1
00001830: DUP4
00001831: KECCAK256
00001832: PUSH1 0x01
00001834: PUSH1 0x01
00001836: PUSH1 0xa0
00001838: SHL
00001839: SUB
0000183a: DUP13
0000183b: AND
0000183c: DUP5
0000183d: MSTORE
0000183e: DUP3
0000183f: MSTORE
00001840: SWAP1
00001841: SWAP2
00001842: KECCAK256
00001843: SLOAD
00001844: SWAP4
00001845: SWAP2
00001846: MUL
00001847: ADD
00001848: CALLDATALOAD
00001849: SWAP1
0000184a: POP
0000184b: PUSH4 0xffffffff
00001850: PUSH2 0x2aad
00001853: AND
00001854: JUMP
00001855: JUMPDEST
00001856: PUSH2 0xffff
00001859: DUP3
0000185a: AND
0000185b: PUSH1 0x00
0000185d: SWAP1
0000185e: DUP2
0000185f: MSTORE
00001860: PUSH1 0x06
00001862: PUSH1 0x20
00001864: SWAP1
00001865: DUP2
00001866: MSTORE
00001867: PUSH1 0x40
00001869: DUP1
0000186a: DUP4
0000186b: KECCAK256
0000186c: PUSH1 0x01
0000186e: PUSH1 0x01
00001870: PUSH1 0xa0
00001872: SHL
00001873: SUB
00001874: DUP10
00001875: AND
00001876: DUP5
00001877: MSTORE
00001878: SWAP1
00001879: SWAP2
0000187a: MSTORE
0000187b: SWAP1
0000187c: KECCAK256
0000187d: SSTORE
0000187e: JUMPDEST
0000187f: PUSH1 0x01
00001881: ADD
00001882: PUSH2 0x17ea
00001885: JUMP
00001886: JUMPDEST
00001887: POP
00001888: POP
00001889: POP
0000188a: POP
0000188b: JUMP
0000188c: JUMPDEST
0000188d: PUSH2 0x1894
00001890: PUSH2 0x304a
00001893: JUMP
00001894: JUMPDEST
00001895: PUSH1 0x01
00001897: PUSH1 0x01
00001899: PUSH1 0xa0
0000189b: SHL
0000189c: SUB
0000189d: AND
0000189e: PUSH4 0x265bf4cf
000018a3: DUP4
000018a4: PUSH1 0x40
000018a6: MLOAD
000018a7: DUP3
000018a8: PUSH4 0xffffffff
000018ad: AND
000018ae: PUSH1 0xe0
000018b0: SHL
000018b1: DUP2
000018b2: MSTORE
000018b3: PUSH1 0x04
000018b5: ADD
000018b6: PUSH2 0x18bf
000018b9: SWAP2
000018ba: SWAP1
000018bb: PUSH2 0x5575
000018be: JUMP
000018bf: JUMPDEST
000018c0: PUSH1 0x00
000018c2: PUSH1 0x40
000018c4: MLOAD
000018c5: DUP1
000018c6: DUP4
000018c7: SUB
000018c8: DUP2
000018c9: PUSH1 0x00
000018cb: DUP8
000018cc: DUP1
000018cd: EXTCODESIZE
000018ce: ISZERO
000018cf: DUP1
000018d0: ISZERO
000018d1: PUSH2 0x18d9
000018d4: JUMPI
000018d5: PUSH1 0x00
000018d7: DUP1
000018d8: REVERT
000018d9: JUMPDEST
000018da: POP
000018db: GAS
000018dc: CALL
000018dd: ISZERO
000018de: DUP1
000018df: ISZERO
000018e0: PUSH2 0x18ed
000018e3: JUMPI
000018e4: RETURNDATASIZE
000018e5: PUSH1 0x00
000018e7: DUP1
000018e8: RETURNDATACOPY
000018e9: RETURNDATASIZE
000018ea: PUSH1 0x00
000018ec: REVERT
000018ed: JUMPDEST
000018ee: POP
000018ef: POP
000018f0: POP
000018f1: POP
000018f2: PUSH2 0x18fa
000018f5: DUP3
000018f6: PUSH2 0x3af1
000018f9: JUMP
000018fa: JUMPDEST
000018fb: ISZERO
000018fc: PUSH2 0x1917
000018ff: JUMPI
00001900: PUSH1 0x40
00001902: MLOAD
00001903: PUSH3 0x461bcd
00001907: PUSH1 0xe5
00001909: SHL
0000190a: DUP2
0000190b: MSTORE
0000190c: PUSH1 0x04
0000190e: ADD
0000190f: PUSH2 0x08ca
00001912: SWAP1
00001913: PUSH2 0x5a1e
00001916: JUMP
00001917: JUMPDEST
00001918: PUSH2 0x1920
0000191b: DUP3
0000191c: PUSH2 0x3b52
0000191f: JUMP
00001920: JUMPDEST
00001921: PUSH2 0x193c
00001924: JUMPI
00001925: PUSH1 0x40
00001927: MLOAD
00001928: PUSH3 0x461bcd
0000192c: PUSH1 0xe5
0000192e: SHL
0000192f: DUP2
00001930: MSTORE
00001931: PUSH1 0x04
00001933: ADD
00001934: PUSH2 0x08ca
00001937: SWAP1
00001938: PUSH2 0x5a1e
0000193b: JUMP
0000193c: JUMPDEST
0000193d: PUSH2 0xffff
00001940: DUP2
00001941: AND
00001942: PUSH1 0x00
00001944: SWAP1
00001945: DUP2
00001946: MSTORE
00001947: PUSH1 0x06
00001949: PUSH1 0x20
0000194b: SWAP1
0000194c: DUP2
0000194d: MSTORE
0000194e: PUSH1 0x40
00001950: DUP1
00001951: DUP4
00001952: KECCAK256
00001953: PUSH1 0x01
00001955: PUSH1 0x01
00001957: PUSH1 0xa0
00001959: SHL
0000195a: SUB
0000195b: DUP7
0000195c: DUP2
0000195d: AND
0000195e: DUP6
0000195f: MSTORE
00001960: SWAP3
00001961: MSTORE
00001962: DUP1
00001963: DUP4
00001964: KECCAK256
00001965: SLOAD
00001966: PUSH1 0x07
00001968: SLOAD
00001969: SWAP1
0000196a: SWAP3
0000196b: AND
0000196c: DUP4
0000196d: MSTORE
0000196e: DUP3
0000196f: KECCAK256
00001970: SLOAD
00001971: SWAP1
00001972: SWAP2
00001973: DUP3
00001974: SLT
00001975: PUSH2 0x1990
00001978: JUMPI
00001979: PUSH1 0x40
0000197b: MLOAD
0000197c: PUSH3 0x461bcd
00001980: PUSH1 0xe5
00001982: SHL
00001983: DUP2
00001984: MSTORE
00001985: PUSH1 0x04
00001987: ADD
00001988: PUSH2 0x08ca
0000198b: SWAP1
0000198c: PUSH2 0x5d21
0000198f: JUMP
00001990: JUMPDEST
00001991: DUP1
00001992: PUSH2 0x199a
00001995: DUP4
00001996: PUSH2 0x361b
00001999: JUMP
0000199a: JUMPDEST
0000199b: SLT
0000199c: ISZERO
0000199d: PUSH2 0x1a10
000019a0: JUMPI
000019a1: PUSH2 0xffff
000019a4: DUP4
000019a5: AND
000019a6: PUSH1 0x00
000019a8: SWAP1
000019a9: DUP2
000019aa: MSTORE
000019ab: PUSH1 0x06
000019ad: PUSH1 0x20
000019af: SWAP1
000019b0: DUP2
000019b1: MSTORE
000019b2: PUSH1 0x40
000019b4: DUP1
000019b5: DUP4
000019b6: KECCAK256
000019b7: PUSH1 0x01
000019b9: PUSH1 0x01
000019bb: PUSH1 0xa0
000019bd: SHL
000019be: SUB
000019bf: DUP9
000019c0: AND
000019c1: DUP5
000019c2: MSTORE
000019c3: SWAP1
000019c4: SWAP2
000019c5: MSTORE
000019c6: DUP2
000019c7: KECCAK256
000019c8: SSTORE
000019c9: PUSH2 0x19e1
000019cc: PUSH2 0x19d4
000019cf: DUP4
000019d0: PUSH2 0x361b
000019d3: JUMP
000019d4: JUMPDEST
000019d5: DUP3
000019d6: SWAP1
000019d7: PUSH4 0xffffffff
000019dc: PUSH2 0x30b3
000019df: AND
000019e0: JUMP
000019e1: JUMPDEST
000019e2: PUSH2 0xffff
000019e5: DUP5
000019e6: AND
000019e7: PUSH1 0x00
000019e9: SWAP1
000019ea: DUP2
000019eb: MSTORE
000019ec: PUSH1 0x06
000019ee: PUSH1 0x20
000019f0: SWAP1
000019f1: DUP2
000019f2: MSTORE
000019f3: PUSH1 0x40
000019f5: DUP1
000019f6: DUP4
000019f7: KECCAK256
000019f8: PUSH1 0x07
000019fa: SLOAD
000019fb: PUSH1 0x01
000019fd: PUSH1 0x01
000019ff: PUSH1 0xa0
00001a01: SHL
00001a02: SUB
00001a03: AND
00001a04: DUP5
00001a05: MSTORE
00001a06: SWAP1
00001a07: SWAP2
00001a08: MSTORE
00001a09: SWAP1
00001a0a: KECCAK256
00001a0b: SSTORE
00001a0c: PUSH2 0x1886
00001a0f: JUMP
00001a10: JUMPDEST
00001a11: PUSH2 0x1a20
00001a14: DUP3
00001a15: DUP3
00001a16: PUSH4 0xffffffff
00001a1b: PUSH2 0x2aad
00001a1e: AND
00001a1f: JUMP
00001a20: JUMPDEST
00001a21: PUSH2 0xffff
00001a24: SWAP4
00001a25: SWAP1
00001a26: SWAP4
00001a27: AND
00001a28: PUSH1 0x00
00001a2a: SWAP1
00001a2b: DUP2
00001a2c: MSTORE
00001a2d: PUSH1 0x06
00001a2f: PUSH1 0x20
00001a31: SWAP1
00001a32: DUP2
00001a33: MSTORE
00001a34: PUSH1 0x40
00001a36: DUP1
00001a37: DUP4
00001a38: KECCAK256
00001a39: PUSH1 0x01
00001a3b: PUSH1 0x01
00001a3d: PUSH1 0xa0
00001a3f: SHL
00001a40: SUB
00001a41: SWAP8
00001a42: DUP9
00001a43: AND
00001a44: DUP5
00001a45: MSTORE
00001a46: SWAP1
00001a47: SWAP2
00001a48: MSTORE
00001a49: DUP1
00001a4a: DUP3
00001a4b: KECCAK256
00001a4c: SWAP5
00001a4d: SWAP1
00001a4e: SWAP5
00001a4f: SSTORE
00001a50: PUSH1 0x07
00001a52: SLOAD
00001a53: SWAP1
00001a54: SWAP5
00001a55: AND
00001a56: DUP5
00001a57: MSTORE
00001a58: POP
00001a59: POP
00001a5a: DUP2
00001a5b: KECCAK256
00001a5c: SSTORE
00001a5d: JUMP
00001a5e: JUMPDEST
00001a5f: PUSH1 0x00
00001a61: PUSH2 0x0997
00001a64: PUSH2 0x3c2d
00001a67: JUMP
00001a68: JUMPDEST
00001a69: PUSH1 0x02
00001a6b: PUSH1 0x20
00001a6d: MSTORE
00001a6e: PUSH1 0x00
00001a70: SWAP1
00001a71: DUP2
00001a72: MSTORE
00001a73: PUSH1 0x40
00001a75: SWAP1
00001a76: KECCAK256
00001a77: SLOAD
00001a78: DUP2
00001a79: JUMP
00001a7a: JUMPDEST
00001a7b: PUSH2 0x1a82
00001a7e: PUSH2 0x14e2
00001a81: JUMP
00001a82: JUMPDEST
00001a83: PUSH2 0x1a8b
00001a86: JUMPI
00001a87: PUSH1 0x00
00001a89: DUP1
00001a8a: REVERT
00001a8b: JUMPDEST
00001a8c: PUSH1 0x01
00001a8e: PUSH1 0x01
00001a90: PUSH1 0xa0
00001a92: SHL
00001a93: SUB
00001a94: DUP3
00001a95: AND
00001a96: PUSH1 0x00
00001a98: SWAP1
00001a99: DUP2
00001a9a: MSTORE
00001a9b: PUSH1 0x03
00001a9d: PUSH1 0x20
00001a9f: MSTORE
00001aa0: PUSH1 0x40
00001aa2: SWAP1
00001aa3: KECCAK256
00001aa4: SLOAD
00001aa5: PUSH2 0xffff
00001aa8: AND
00001aa9: ISZERO
00001aaa: DUP1
00001aab: ISZERO
00001aac: PUSH2 0x1ac3
00001aaf: JUMPI
00001ab0: POP
00001ab1: PUSH1 0x00
00001ab3: SLOAD
00001ab4: PUSH1 0x01
00001ab6: PUSH1 0x01
00001ab8: PUSH1 0xa0
00001aba: SHL
00001abb: SUB
00001abc: DUP4
00001abd: DUP2
00001abe: AND
00001abf: SWAP2
00001ac0: AND
00001ac1: EQ
00001ac2: ISZERO
00001ac3: JUMPDEST
00001ac4: PUSH2 0x1adf
00001ac7: JUMPI
00001ac8: PUSH1 0x40
00001aca: MLOAD
00001acb: PUSH3 0x461bcd
00001acf: PUSH1 0xe5
00001ad1: SHL
00001ad2: DUP2
00001ad3: MSTORE
00001ad4: PUSH1 0x04
00001ad6: ADD
00001ad7: PUSH2 0x08ca
00001ada: SWAP1
00001adb: PUSH2 0x5aec
00001ade: JUMP
00001adf: JUMPDEST
00001ae0: PUSH1 0x00
00001ae2: DUP1
00001ae3: SLOAD
00001ae4: PUSH1 0x01
00001ae6: PUSH2 0xffff
00001ae9: PUSH1 0x01
00001aeb: PUSH1 0xa0
00001aed: SHL
00001aee: DUP1
00001aef: DUP5
00001af0: DIV
00001af1: DUP3
00001af2: AND
00001af3: DUP4
00001af4: ADD
00001af5: DUP3
00001af6: AND
00001af7: DUP2
00001af8: MUL
00001af9: PUSH2 0xffff
00001afc: PUSH1 0xa0
00001afe: SHL
00001aff: NOT
00001b00: SWAP1
00001b01: SWAP5
00001b02: AND
00001b03: SWAP4
00001b04: SWAP1
00001b05: SWAP4
00001b06: OR
00001b07: DUP1
00001b08: DUP6
00001b09: SSTORE
00001b0a: DUP4
00001b0b: SWAP1
00001b0c: DIV
00001b0d: DUP2
00001b0e: AND
00001b0f: DUP5
00001b10: MSTORE
00001b11: PUSH1 0x20
00001b13: SWAP2
00001b14: DUP3
00001b15: MSTORE
00001b16: PUSH1 0x40
00001b18: DUP1
00001b19: DUP6
00001b1a: KECCAK256
00001b1b: DUP1
00001b1c: SLOAD
00001b1d: PUSH1 0x01
00001b1f: PUSH1 0x01
00001b21: PUSH1 0xa0
00001b23: SHL
00001b24: SUB
00001b25: DUP10
00001b26: AND
00001b27: PUSH1 0x01
00001b29: PUSH1 0x01
00001b2b: PUSH1 0xa0
00001b2d: SHL
00001b2e: SUB
00001b2f: NOT
00001b30: SWAP1
00001b31: SWAP2
00001b32: AND
00001b33: DUP2
00001b34: OR
00001b35: SWAP1
00001b36: SWAP2
00001b37: SSTORE
00001b38: DUP6
00001b39: SLOAD
00001b3a: DUP2
00001b3b: DUP8
00001b3c: MSTORE
00001b3d: PUSH1 0x03
00001b3f: DUP6
00001b40: MSTORE
00001b41: DUP3
00001b42: DUP8
00001b43: KECCAK256
00001b44: DUP1
00001b45: SLOAD
00001b46: PUSH2 0xffff
00001b49: NOT
00001b4a: AND
00001b4b: SWAP7
00001b4c: SWAP1
00001b4d: SWAP2
00001b4e: DIV
00001b4f: SWAP1
00001b50: SWAP4
00001b51: AND
00001b52: SWAP5
00001b53: SWAP1
00001b54: SWAP5
00001b55: OR
00001b56: SWAP1
00001b57: SWAP2
00001b58: SSTORE
00001b59: PUSH1 0x04
00001b5b: DUP1
00001b5c: DUP4
00001b5d: MSTORE
00001b5e: DUP2
00001b5f: DUP6
00001b60: KECCAK256
00001b61: DUP7
00001b62: MLOAD
00001b63: DUP2
00001b64: SLOAD
00001b65: DUP9
00001b66: DUP7
00001b67: ADD
00001b68: MLOAD
00001b69: ISZERO
00001b6a: ISZERO
00001b6b: PUSH2 0x0100
00001b6e: MUL
00001b6f: PUSH2 0xff00
00001b72: NOT
00001b73: SWAP3
00001b74: ISZERO
00001b75: ISZERO
00001b76: PUSH1 0xff
00001b78: NOT
00001b79: SWAP1
00001b7a: SWAP3
00001b7b: AND
00001b7c: SWAP2
00001b7d: SWAP1
00001b7e: SWAP2
00001b7f: OR
00001b80: SWAP2
00001b81: SWAP1
00001b82: SWAP2
00001b83: AND
00001b84: OR
00001b85: SWAP1
00001b86: SSTORE
00001b87: DUP2
00001b88: MLOAD
00001b89: PUSH4 0x313ce567
00001b8e: PUSH1 0xe0
00001b90: SHL
00001b91: DUP2
00001b92: MSTORE
00001b93: SWAP2
00001b94: MLOAD
00001b95: PUSH4 0x313ce567
00001b9a: SWAP4
00001b9b: DUP4
00001b9c: DUP4
00001b9d: ADD
00001b9e: SWAP4
00001b9f: SWAP1
00001ba0: SWAP3
00001ba1: SWAP1
00001ba2: DUP3
00001ba3: SWAP1
00001ba4: SUB
00001ba5: ADD
00001ba6: DUP2
00001ba7: DUP7
00001ba8: DUP1
00001ba9: EXTCODESIZE
00001baa: ISZERO
00001bab: DUP1
00001bac: ISZERO
00001bad: PUSH2 0x1bb5
00001bb0: JUMPI
00001bb1: PUSH1 0x00
00001bb3: DUP1
00001bb4: REVERT
00001bb5: JUMPDEST
00001bb6: POP
00001bb7: GAS
00001bb8: STATICCALL
00001bb9: ISZERO
00001bba: DUP1
00001bbb: ISZERO
00001bbc: PUSH2 0x1bc9
00001bbf: JUMPI
00001bc0: RETURNDATASIZE
00001bc1: PUSH1 0x00
00001bc3: DUP1
00001bc4: RETURNDATACOPY
00001bc5: RETURNDATASIZE
00001bc6: PUSH1 0x00
00001bc8: REVERT
00001bc9: JUMPDEST
00001bca: POP
00001bcb: POP
00001bcc: POP
00001bcd: POP
00001bce: PUSH1 0x40
00001bd0: MLOAD
00001bd1: RETURNDATASIZE
00001bd2: PUSH1 0x1f
00001bd4: NOT
00001bd5: PUSH1 0x1f
00001bd7: DUP3
00001bd8: ADD
00001bd9: AND
00001bda: DUP3
00001bdb: ADD
00001bdc: DUP1
00001bdd: PUSH1 0x40
00001bdf: MSTORE
00001be0: POP
00001be1: DUP2
00001be2: ADD
00001be3: SWAP1
00001be4: PUSH2 0x1bed
00001be7: SWAP2
00001be8: SWAP1
00001be9: PUSH2 0x53f4
00001bec: JUMP
00001bed: JUMPDEST
00001bee: PUSH1 0x00
00001bf0: DUP1
00001bf1: SLOAD
00001bf2: PUSH1 0x01
00001bf4: PUSH1 0xa0
00001bf6: SHL
00001bf7: SWAP1
00001bf8: DIV
00001bf9: PUSH2 0xffff
00001bfc: AND
00001bfd: DUP2
00001bfe: MSTORE
00001bff: PUSH1 0x02
00001c01: PUSH1 0x20
00001c03: MSTORE
00001c04: PUSH1 0x40
00001c06: SWAP1
00001c07: KECCAK256
00001c08: PUSH1 0xff
00001c0a: SWAP2
00001c0b: SWAP1
00001c0c: SWAP2
00001c0d: AND
00001c0e: PUSH1 0x0a
00001c10: DUP2
00001c11: SWAP1
00001c12: EXP
00001c13: SWAP1
00001c14: SWAP2
00001c15: SSTORE
00001c16: SWAP1
00001c17: POP
00001c18: PUSH2 0x1c1f
00001c1b: PUSH2 0x304a
00001c1e: JUMP
00001c1f: JUMPDEST
00001c20: PUSH1 0x01
00001c22: PUSH1 0x01
00001c24: PUSH1 0xa0
00001c26: SHL
00001c27: SUB
00001c28: AND
00001c29: PUSH4 0x1c450179
00001c2e: PUSH1 0x00
00001c30: PUSH1 0x14
00001c32: SWAP1
00001c33: SLOAD
00001c34: SWAP1
00001c35: PUSH2 0x0100
00001c38: EXP
00001c39: SWAP1
00001c3a: DIV
00001c3b: PUSH2 0xffff
00001c3e: AND
00001c3f: PUSH1 0x40
00001c41: MLOAD
00001c42: DUP3
00001c43: PUSH4 0xffffffff
00001c48: AND
00001c49: PUSH1 0xe0
00001c4b: SHL
00001c4c: DUP2
00001c4d: MSTORE
00001c4e: PUSH1 0x04
00001c50: ADD
00001c51: PUSH2 0x1c5a
00001c54: SWAP2
00001c55: SWAP1
00001c56: PUSH2 0x5d82
00001c59: JUMP
00001c5a: JUMPDEST
00001c5b: PUSH1 0x00
00001c5d: PUSH1 0x40
00001c5f: MLOAD
00001c60: DUP1
00001c61: DUP4
00001c62: SUB
00001c63: DUP2
00001c64: PUSH1 0x00
00001c66: DUP8
00001c67: DUP1
00001c68: EXTCODESIZE
00001c69: ISZERO
00001c6a: DUP1
00001c6b: ISZERO
00001c6c: PUSH2 0x1c74
00001c6f: JUMPI
00001c70: PUSH1 0x00
00001c72: DUP1
00001c73: REVERT
00001c74: JUMPDEST
00001c75: POP
00001c76: GAS
00001c77: CALL
00001c78: ISZERO
00001c79: DUP1
00001c7a: ISZERO
00001c7b: PUSH2 0x1c88
00001c7e: JUMPI
00001c7f: RETURNDATASIZE
00001c80: PUSH1 0x00
00001c82: DUP1
00001c83: RETURNDATACOPY
00001c84: RETURNDATASIZE
00001c85: PUSH1 0x00
00001c87: REVERT
00001c88: JUMPDEST
00001c89: POP
00001c8a: POP
00001c8b: PUSH1 0x40
00001c8d: MLOAD
00001c8e: PUSH1 0x01
00001c90: PUSH1 0x01
00001c92: PUSH1 0xa0
00001c94: SHL
00001c95: SUB
00001c96: DUP7
00001c97: AND
00001c98: SWAP3
00001c99: POP
00001c9a: PUSH32 0x1defcb31bdf18413d52d3220d6f23d92a6635d53c8dbb16c738b0706fe9d07b9
00001cbb: SWAP2
00001cbc: POP
00001cbd: PUSH1 0x00
00001cbf: SWAP1
00001cc0: LOG2
00001cc1: POP
00001cc2: POP
00001cc3: POP
00001cc4: JUMP
00001cc5: JUMPDEST
00001cc6: PUSH1 0x00
00001cc8: SLOAD
00001cc9: PUSH1 0x01
00001ccb: PUSH1 0x01
00001ccd: PUSH1 0xa0
00001ccf: SHL
00001cd0: SUB
00001cd1: AND
00001cd2: DUP2
00001cd3: JUMP
00001cd4: JUMPDEST
00001cd5: PUSH2 0x1cdc
00001cd8: PUSH2 0x46dd
00001cdb: JUMP
00001cdc: JUMPDEST
00001cdd: PUSH2 0x1ce6
00001ce0: DUP4
00001ce1: DUP4
00001ce2: PUSH2 0x30e9
00001ce5: JUMP
00001ce6: JUMPDEST
00001ce7: SWAP1
00001ce8: POP
00001ce9: PUSH1 0x00
00001ceb: DUP1
00001cec: PUSH1 0x00
00001cee: PUSH2 0x1cf8
00001cf1: DUP9
00001cf2: DUP6
00001cf3: DUP10
00001cf4: PUSH2 0x3629
00001cf7: JUMP
00001cf8: JUMPDEST
00001cf9: SWAP3
00001cfa: POP
00001cfb: SWAP3
00001cfc: POP
00001cfd: SWAP3
00001cfe: POP
00001cff: PUSH2 0x1d08
00001d02: DUP7
00001d03: DUP4
00001d04: PUSH2 0x34fc
00001d07: JUMP
00001d08: JUMPDEST
00001d09: PUSH2 0x1d1e
00001d0c: DUP6
00001d0d: PUSH2 0x1231
00001d10: DUP4
00001d11: PUSH1 0x01
00001d13: PUSH1 0x01
00001d15: PUSH1 0x80
00001d17: SHL
00001d18: SUB
00001d19: AND
00001d1a: PUSH2 0x361b
00001d1d: JUMP
00001d1e: JUMPDEST
00001d1f: DUP6
00001d20: PUSH2 0xffff
00001d23: AND
00001d24: PUSH32 0xc12b12caff7d3a4e7e96205e010dce0f62a6e94ad6c798378a375566da377f0b
00001d45: DUP7
00001d46: DUP11
00001d47: DUP7
00001d48: PUSH1 0x40
00001d4a: MLOAD
00001d4b: PUSH2 0x1437
00001d4e: SWAP4
00001d4f: SWAP3
00001d50: SWAP2
00001d51: SWAP1
00001d52: PUSH2 0x5d91
00001d55: JUMP
00001d56: JUMPDEST
00001d57: PUSH2 0x1d61
00001d5a: CALLER
00001d5b: DUP4
00001d5c: DUP4
00001d5d: PUSH2 0x3c58
00001d60: JUMP
00001d61: JUMPDEST
00001d62: POP
00001d63: POP
00001d64: JUMP
00001d65: JUMPDEST
00001d66: PUSH1 0x07
00001d68: SLOAD
00001d69: PUSH1 0x01
00001d6b: PUSH1 0x01
00001d6d: PUSH1 0xa0
00001d6f: SHL
00001d70: SUB
00001d71: AND
00001d72: DUP2
00001d73: JUMP
00001d74: JUMPDEST
00001d75: PUSH2 0x1d7c
00001d78: PUSH2 0x4720
00001d7b: JUMP
00001d7c: JUMPDEST
00001d7d: PUSH2 0x1d87
00001d80: DUP6
00001d81: DUP6
00001d82: DUP6
00001d83: PUSH2 0x3a60
00001d86: JUMP
00001d87: JUMPDEST
00001d88: SWAP1
00001d89: POP
00001d8a: PUSH1 0x00
00001d8c: DUP2
00001d8d: PUSH1 0x00
00001d8f: ADD
00001d90: MLOAD
00001d91: SLT
00001d92: ISZERO
00001d93: PUSH2 0x1dae
00001d96: JUMPI
00001d97: PUSH1 0x40
00001d99: MLOAD
00001d9a: PUSH3 0x461bcd
00001d9e: PUSH1 0xe5
00001da0: SHL
00001da1: DUP2
00001da2: MSTORE
00001da3: PUSH1 0x04
00001da5: ADD
00001da6: PUSH2 0x08ca
00001da9: SWAP1
00001daa: PUSH2 0x5bf0
00001dad: JUMP
00001dae: JUMPDEST
00001daf: PUSH1 0x01
00001db1: PUSH1 0x01
00001db3: PUSH1 0x80
00001db5: SHL
00001db6: SUB
00001db7: DUP3
00001db8: AND
00001db9: PUSH2 0x1dc2
00001dbc: JUMPI
00001dbd: POP
00001dbe: PUSH2 0x1886
00001dc1: JUMP
00001dc2: JUMPDEST
00001dc3: PUSH2 0xffff
00001dc6: DUP5
00001dc7: AND
00001dc8: PUSH1 0x00
00001dca: SWAP1
00001dcb: DUP2
00001dcc: MSTORE
00001dcd: PUSH1 0x06
00001dcf: PUSH1 0x20
00001dd1: SWAP1
00001dd2: DUP2
00001dd3: MSTORE
00001dd4: PUSH1 0x40
00001dd6: DUP1
00001dd7: DUP4
00001dd8: KECCAK256
00001dd9: PUSH1 0x01
00001ddb: PUSH1 0x01
00001ddd: PUSH1 0xa0
00001ddf: SHL
00001de0: SUB
00001de1: DUP10
00001de2: AND
00001de3: DUP5
00001de4: MSTORE
00001de5: SWAP1
00001de6: SWAP2
00001de7: MSTORE
00001de8: SWAP1
00001de9: KECCAK256
00001dea: SLOAD
00001deb: PUSH2 0x1dfc
00001dee: PUSH1 0x01
00001df0: PUSH1 0x01
00001df2: PUSH1 0x80
00001df4: SHL
00001df5: SUB
00001df6: DUP5
00001df7: AND
00001df8: PUSH2 0x361b
00001dfb: JUMP
00001dfc: JUMPDEST
00001dfd: DUP2
00001dfe: SGT
00001dff: ISZERO
00001e00: PUSH2 0x1e1b
00001e03: JUMPI
00001e04: PUSH1 0x40
00001e06: MLOAD
00001e07: PUSH3 0x461bcd
00001e0b: PUSH1 0xe5
00001e0d: SHL
00001e0e: DUP2
00001e0f: MSTORE
00001e10: PUSH1 0x04
00001e12: ADD
00001e13: PUSH2 0x08ca
00001e16: SWAP1
00001e17: PUSH2 0x5d21
00001e1a: JUMP
00001e1b: JUMPDEST
00001e1c: PUSH2 0x1e24
00001e1f: DUP7
00001e20: PUSH2 0x3af1
00001e23: JUMP
00001e24: JUMPDEST
00001e25: ISZERO
00001e26: PUSH2 0x1e41
00001e29: JUMPI
00001e2a: PUSH1 0x40
00001e2c: MLOAD
00001e2d: PUSH3 0x461bcd
00001e31: PUSH1 0xe5
00001e33: SHL
00001e34: DUP2
00001e35: MSTORE
00001e36: PUSH1 0x04
00001e38: ADD
00001e39: PUSH2 0x08ca
00001e3c: SWAP1
00001e3d: PUSH2 0x5a1e
00001e40: JUMP
00001e41: JUMPDEST
00001e42: PUSH1 0x00
00001e44: DUP1
00001e45: DUP6
00001e46: PUSH2 0xffff
00001e49: AND
00001e4a: DUP8
00001e4b: PUSH2 0xffff
00001e4e: AND
00001e4f: EQ
00001e50: ISZERO
00001e51: PUSH2 0x1faa
00001e54: JUMPI
00001e55: PUSH2 0x1e5d
00001e58: DUP8
00001e59: PUSH2 0x24ab
00001e5c: JUMP
00001e5d: JUMPDEST
00001e5e: PUSH2 0x1e79
00001e61: JUMPI
00001e62: PUSH1 0x40
00001e64: MLOAD
00001e65: PUSH3 0x461bcd
00001e69: PUSH1 0xe5
00001e6b: SHL
00001e6c: DUP2
00001e6d: MSTORE
00001e6e: PUSH1 0x04
00001e70: ADD
00001e71: PUSH2 0x08ca
00001e74: SWAP1
00001e75: PUSH2 0x5aec
00001e78: JUMP
00001e79: JUMPDEST
00001e7a: PUSH1 0x00
00001e7c: DUP1
00001e7d: PUSH2 0x1e84
00001e80: PUSH2 0x304a
00001e83: JUMP
00001e84: JUMPDEST
00001e85: PUSH1 0x01
00001e87: PUSH1 0x01
00001e89: PUSH1 0xa0
00001e8b: SHL
00001e8c: SUB
00001e8d: AND
00001e8e: PUSH4 0x5f1bcee9
00001e93: DUP12
00001e94: CALLER
00001e95: DUP13
00001e96: DUP12
00001e97: PUSH1 0x40
00001e99: MLOAD
00001e9a: DUP6
00001e9b: PUSH4 0xffffffff
00001ea0: AND
00001ea1: PUSH1 0xe0
00001ea3: SHL
00001ea4: DUP2
00001ea5: MSTORE
00001ea6: PUSH1 0x04
00001ea8: ADD
00001ea9: PUSH2 0x1eb5
00001eac: SWAP5
00001ead: SWAP4
00001eae: SWAP3
00001eaf: SWAP2
00001eb0: SWAP1
00001eb1: PUSH2 0x569d
00001eb4: JUMP
00001eb5: JUMPDEST
00001eb6: PUSH1 0x40
00001eb8: DUP1
00001eb9: MLOAD
00001eba: DUP1
00001ebb: DUP4
00001ebc: SUB
00001ebd: DUP2
00001ebe: PUSH1 0x00
00001ec0: DUP8
00001ec1: DUP1
00001ec2: EXTCODESIZE
00001ec3: ISZERO
00001ec4: DUP1
00001ec5: ISZERO
00001ec6: PUSH2 0x1ece
00001ec9: JUMPI
00001eca: PUSH1 0x00
00001ecc: DUP1
00001ecd: REVERT
00001ece: JUMPDEST
00001ecf: POP
00001ed0: GAS
00001ed1: CALL
00001ed2: ISZERO
00001ed3: DUP1
00001ed4: ISZERO
00001ed5: PUSH2 0x1ee2
00001ed8: JUMPI
00001ed9: RETURNDATASIZE
00001eda: PUSH1 0x00
00001edc: DUP1
00001edd: RETURNDATACOPY
00001ede: RETURNDATASIZE
00001edf: PUSH1 0x00
00001ee1: REVERT
00001ee2: JUMPDEST
00001ee3: POP
00001ee4: POP
00001ee5: POP
00001ee6: POP
00001ee7: PUSH1 0x40
00001ee9: MLOAD
00001eea: RETURNDATASIZE
00001eeb: PUSH1 0x1f
00001eed: NOT
00001eee: PUSH1 0x1f
00001ef0: DUP3
00001ef1: ADD
00001ef2: AND
00001ef3: DUP3
00001ef4: ADD
00001ef5: DUP1
00001ef6: PUSH1 0x40
00001ef8: MSTORE
00001ef9: POP
00001efa: DUP2
00001efb: ADD
00001efc: SWAP1
00001efd: PUSH2 0x1f06
00001f00: SWAP2
00001f01: SWAP1
00001f02: PUSH2 0x519e
00001f05: JUMP
00001f06: JUMPDEST
00001f07: SWAP1
00001f08: SWAP3
00001f09: POP
00001f0a: SWAP1
00001f0b: POP
00001f0c: PUSH2 0x1f24
00001f0f: PUSH1 0x01
00001f11: PUSH1 0x01
00001f13: PUSH1 0x80
00001f15: SHL
00001f16: SUB
00001f17: DUP9
00001f18: AND
00001f19: DUP4
00001f1a: PUSH4 0xffffffff
00001f1f: PUSH2 0x3db6
00001f22: AND
00001f23: JUMP
00001f24: JUMPDEST
00001f25: PUSH2 0xffff
00001f28: DUP11
00001f29: AND
00001f2a: PUSH1 0x00
00001f2c: SWAP1
00001f2d: DUP2
00001f2e: MSTORE
00001f2f: PUSH1 0x06
00001f31: PUSH1 0x20
00001f33: SWAP1
00001f34: DUP2
00001f35: MSTORE
00001f36: PUSH1 0x40
00001f38: DUP1
00001f39: DUP4
00001f3a: KECCAK256
00001f3b: PUSH1 0x01
00001f3d: PUSH1 0x01
00001f3f: PUSH1 0xa0
00001f41: SHL
00001f42: SUB
00001f43: DUP16
00001f44: AND
00001f45: DUP5
00001f46: MSTORE
00001f47: SWAP1
00001f48: SWAP2
00001f49: MSTORE
00001f4a: SWAP1
00001f4b: KECCAK256
00001f4c: SLOAD
00001f4d: SWAP1
00001f4e: SWAP4
00001f4f: POP
00001f50: PUSH2 0x1f68
00001f53: SWAP1
00001f54: PUSH1 0x01
00001f56: PUSH1 0x01
00001f58: PUSH1 0x80
00001f5a: SHL
00001f5b: SUB
00001f5c: DUP6
00001f5d: AND
00001f5e: PUSH4 0xffffffff
00001f63: PUSH2 0x2aad
00001f66: AND
00001f67: JUMP
00001f68: JUMPDEST
00001f69: PUSH2 0xffff
00001f6c: DUP11
00001f6d: AND
00001f6e: PUSH1 0x00
00001f70: SWAP1
00001f71: DUP2
00001f72: MSTORE
00001f73: PUSH1 0x06
00001f75: PUSH1 0x20
00001f77: SWAP1
00001f78: DUP2
00001f79: MSTORE
00001f7a: PUSH1 0x40
00001f7c: DUP1
00001f7d: DUP4
00001f7e: KECCAK256
00001f7f: PUSH1 0x01
00001f81: PUSH1 0x01
00001f83: PUSH1 0xa0
00001f85: SHL
00001f86: SUB
00001f87: DUP16
00001f88: AND
00001f89: DUP5
00001f8a: MSTORE
00001f8b: SWAP1
00001f8c: SWAP2
00001f8d: MSTORE
00001f8e: SWAP1
00001f8f: KECCAK256
00001f90: SSTORE
00001f91: PUSH2 0x1fa3
00001f94: DUP10
00001f95: PUSH1 0x01
00001f97: PUSH1 0x01
00001f99: PUSH1 0x80
00001f9b: SHL
00001f9c: SUB
00001f9d: DUP4
00001f9e: AND
00001f9f: PUSH2 0x34fc
00001fa2: JUMP
00001fa3: JUMPDEST
00001fa4: POP
00001fa5: POP
00001fa6: PUSH2 0x20e6
00001fa9: JUMP
00001faa: JUMPDEST
00001fab: PUSH2 0x1fb2
00001fae: PUSH2 0x46dd
00001fb1: JUMP
00001fb2: JUMPDEST
00001fb3: PUSH2 0x1fbc
00001fb6: DUP9
00001fb7: DUP9
00001fb8: PUSH2 0x30e9
00001fbb: JUMP
00001fbc: JUMPDEST
00001fbd: SWAP1
00001fbe: POP
00001fbf: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e
00001fd4: PUSH4 0x5578d0cb
00001fd9: DUP11
00001fda: CALLER
00001fdb: DUP10
00001fdc: DUP10
00001fdd: PUSH1 0x40
00001fdf: ADD
00001fe0: MLOAD
00001fe1: DUP7
00001fe2: PUSH2 0x1fe9
00001fe5: PUSH2 0x304a
00001fe8: JUMP
00001fe9: JUMPDEST
00001fea: PUSH1 0x40
00001fec: MLOAD
00001fed: DUP8
00001fee: PUSH4 0xffffffff
00001ff3: AND
00001ff4: PUSH1 0xe0
00001ff6: SHL
00001ff7: DUP2
00001ff8: MSTORE
00001ff9: PUSH1 0x04
00001ffb: ADD
00001ffc: PUSH2 0x200a
00001fff: SWAP7
00002000: SWAP6
00002001: SWAP5
00002002: SWAP4
00002003: SWAP3
00002004: SWAP2
00002005: SWAP1
00002006: PUSH2 0x55ff
00002009: JUMP
0000200a: JUMPDEST
0000200b: PUSH1 0x40
0000200d: DUP1
0000200e: MLOAD
0000200f: DUP1
00002010: DUP4
00002011: SUB
00002012: DUP2
00002013: DUP7
00002014: DUP1
00002015: EXTCODESIZE
00002016: ISZERO
00002017: DUP1
00002018: ISZERO
00002019: PUSH2 0x2021
0000201c: JUMPI
0000201d: PUSH1 0x00
0000201f: DUP1
00002020: REVERT
00002021: JUMPDEST
00002022: POP
00002023: GAS
00002024: DELEGATECALL
00002025: ISZERO
00002026: DUP1
00002027: ISZERO
00002028: PUSH2 0x2035
0000202b: JUMPI
0000202c: RETURNDATASIZE
0000202d: PUSH1 0x00
0000202f: DUP1
00002030: RETURNDATACOPY
00002031: RETURNDATASIZE
00002032: PUSH1 0x00
00002034: REVERT
00002035: JUMPDEST
00002036: POP
00002037: POP
00002038: POP
00002039: POP
0000203a: PUSH1 0x40
0000203c: MLOAD
0000203d: RETURNDATASIZE
0000203e: PUSH1 0x1f
00002040: NOT
00002041: PUSH1 0x1f
00002043: DUP3
00002044: ADD
00002045: AND
00002046: DUP3
00002047: ADD
00002048: DUP1
00002049: PUSH1 0x40
0000204b: MSTORE
0000204c: POP
0000204d: DUP2
0000204e: ADD
0000204f: SWAP1
00002050: PUSH2 0x2059
00002053: SWAP2
00002054: SWAP1
00002055: PUSH2 0x503a
00002058: JUMP
00002059: JUMPDEST
0000205a: PUSH2 0xffff
0000205d: DUP11
0000205e: AND
0000205f: PUSH1 0x00
00002061: SWAP1
00002062: DUP2
00002063: MSTORE
00002064: PUSH1 0x06
00002066: PUSH1 0x20
00002068: SWAP1
00002069: DUP2
0000206a: MSTORE
0000206b: PUSH1 0x40
0000206d: DUP1
0000206e: DUP4
0000206f: KECCAK256
00002070: PUSH1 0x01
00002072: PUSH1 0x01
00002074: PUSH1 0xa0
00002076: SHL
00002077: SUB
00002078: DUP16
00002079: AND
0000207a: DUP5
0000207b: MSTORE
0000207c: SWAP1
0000207d: SWAP2
0000207e: MSTORE
0000207f: SWAP1
00002080: KECCAK256
00002081: SLOAD
00002082: SWAP2
00002083: SWAP5
00002084: POP
00002085: SWAP3
00002086: POP
00002087: PUSH2 0x209f
0000208a: SWAP1
0000208b: PUSH1 0x01
0000208d: PUSH1 0x01
0000208f: PUSH1 0x80
00002091: SHL
00002092: SUB
00002093: DUP5
00002094: AND
00002095: PUSH4 0xffffffff
0000209a: PUSH2 0x2aad
0000209d: AND
0000209e: JUMP
0000209f: JUMPDEST
000020a0: PUSH2 0xffff
000020a3: DUP10
000020a4: AND
000020a5: PUSH1 0x00
000020a7: SWAP1
000020a8: DUP2
000020a9: MSTORE
000020aa: PUSH1 0x06
000020ac: PUSH1 0x20
000020ae: SWAP1
000020af: DUP2
000020b0: MSTORE
000020b1: PUSH1 0x40
000020b3: DUP1
000020b4: DUP4
000020b5: KECCAK256
000020b6: PUSH1 0x01
000020b8: PUSH1 0x01
000020ba: PUSH1 0xa0
000020bc: SHL
000020bd: SUB
000020be: DUP15
000020bf: AND
000020c0: DUP5
000020c1: MSTORE
000020c2: SWAP1
000020c3: SWAP2
000020c4: MSTORE
000020c5: SWAP1
000020c6: KECCAK256
000020c7: SSTORE
000020c8: PUSH2 0x20da
000020cb: DUP9
000020cc: PUSH1 0x01
000020ce: PUSH1 0x01
000020d0: PUSH1 0x80
000020d2: SHL
000020d3: SUB
000020d4: DUP5
000020d5: AND
000020d6: PUSH2 0x34fc
000020d9: JUMP
000020da: JUMPDEST
000020db: PUSH2 0x20e4
000020de: DUP8
000020df: DUP5
000020e0: PUSH2 0x34fc
000020e3: JUMP
000020e4: JUMPDEST
000020e5: POP
000020e6: JUMPDEST
000020e7: DUP8
000020e8: PUSH1 0x01
000020ea: PUSH1 0x01
000020ec: PUSH1 0xa0
000020ee: SHL
000020ef: SUB
000020f0: AND
000020f1: PUSH32 0x4d74a702a383226221d4ba46377c079c56e0da1d9f5123c90ce77b965824f3fd
00002112: DUP9
00002113: DUP9
00002114: DUP5
00002115: PUSH1 0x40
00002117: MLOAD
00002118: PUSH2 0x1437
0000211b: SWAP4
0000211c: SWAP3
0000211d: SWAP2
0000211e: SWAP1
0000211f: PUSH2 0x5e40
00002122: JUMP
00002123: JUMPDEST
00002124: PUSH2 0x212b
00002127: PUSH2 0x3a54
0000212a: JUMP
0000212b: JUMPDEST
0000212c: PUSH2 0x2147
0000212f: JUMPI
00002130: PUSH1 0x40
00002132: MLOAD
00002133: PUSH3 0x461bcd
00002137: PUSH1 0xe5
00002139: SHL
0000213a: DUP2
0000213b: MSTORE
0000213c: PUSH1 0x04
0000213e: ADD
0000213f: PUSH2 0x08ca
00002142: SWAP1
00002143: PUSH2 0x5a3a
00002146: JUMP
00002147: JUMPDEST
00002148: PUSH2 0x1524
0000214b: DUP2
0000214c: PUSH2 0x3de7
0000214f: JUMP
00002150: JUMPDEST
00002151: PUSH1 0x60
00002153: DUP1
00002154: PUSH1 0x00
00002156: PUSH1 0x14
00002158: SWAP1
00002159: SLOAD
0000215a: SWAP1
0000215b: PUSH2 0x0100
0000215e: EXP
0000215f: SWAP1
00002160: DIV
00002161: PUSH2 0xffff
00002164: AND
00002165: PUSH1 0x01
00002167: ADD
00002168: PUSH2 0xffff
0000216b: AND
0000216c: PUSH1 0x40
0000216e: MLOAD
0000216f: SWAP1
00002170: DUP1
00002171: DUP3
00002172: MSTORE
00002173: DUP1
00002174: PUSH1 0x20
00002176: MUL
00002177: PUSH1 0x20
00002179: ADD
0000217a: DUP3
0000217b: ADD
0000217c: PUSH1 0x40
0000217e: MSTORE
0000217f: DUP1
00002180: ISZERO
00002181: PUSH2 0x2194
00002184: JUMPI
00002185: DUP2
00002186: PUSH1 0x20
00002188: ADD
00002189: PUSH1 0x20
0000218b: DUP3
0000218c: MUL
0000218d: DUP1
0000218e: CALLDATASIZE
0000218f: DUP4
00002190: CALLDATACOPY
00002191: ADD
00002192: SWAP1
00002193: POP
00002194: JUMPDEST
00002195: POP
00002196: SWAP1
00002197: POP
00002198: PUSH1 0x00
0000219a: JUMPDEST
0000219b: DUP2
0000219c: MLOAD
0000219d: DUP2
0000219e: LT
0000219f: ISZERO
000021a0: PUSH2 0x0c99
000021a3: JUMPI
000021a4: PUSH2 0xffff
000021a7: DUP2
000021a8: AND
000021a9: PUSH1 0x00
000021ab: SWAP1
000021ac: DUP2
000021ad: MSTORE
000021ae: PUSH1 0x06
000021b0: PUSH1 0x20
000021b2: SWAP1
000021b3: DUP2
000021b4: MSTORE
000021b5: PUSH1 0x40
000021b7: DUP1
000021b8: DUP4
000021b9: KECCAK256
000021ba: PUSH1 0x01
000021bc: PUSH1 0x01
000021be: PUSH1 0xa0
000021c0: SHL
000021c1: SUB
000021c2: DUP9
000021c3: AND
000021c4: DUP5
000021c5: MSTORE
000021c6: SWAP1
000021c7: SWAP2
000021c8: MSTORE
000021c9: SWAP1
000021ca: KECCAK256
000021cb: SLOAD
000021cc: DUP3
000021cd: MLOAD
000021ce: DUP4
000021cf: SWAP1
000021d0: DUP4
000021d1: SWAP1
000021d2: DUP2
000021d3: LT
000021d4: PUSH2 0x21d9
000021d7: JUMPI
000021d8: INVALID
000021d9: JUMPDEST
000021da: PUSH1 0x20
000021dc: SWAP1
000021dd: DUP2
000021de: MUL
000021df: SWAP2
000021e0: SWAP1
000021e1: SWAP2
000021e2: ADD
000021e3: ADD
000021e4: MSTORE
000021e5: PUSH1 0x01
000021e7: ADD
000021e8: PUSH2 0x219a
000021eb: JUMP
000021ec: JUMPDEST
000021ed: PUSH2 0x21f4
000021f0: PUSH2 0x4688
000021f3: JUMP
000021f4: JUMPDEST
000021f5: POP
000021f6: PUSH2 0xffff
000021f9: DUP3
000021fa: DUP2
000021fb: AND
000021fc: PUSH1 0x00
000021fe: SWAP1
000021ff: DUP2
00002200: MSTORE
00002201: PUSH1 0x05
00002203: PUSH1 0x20
00002205: SWAP1
00002206: DUP2
00002207: MSTORE
00002208: PUSH1 0x40
0000220a: DUP1
0000220b: DUP4
0000220c: KECCAK256
0000220d: SWAP4
0000220e: DUP6
0000220f: AND
00002210: DUP4
00002211: MSTORE
00002212: SWAP3
00002213: DUP2
00002214: MSTORE
00002215: SWAP1
00002216: DUP3
00002217: SWAP1
00002218: KECCAK256
00002219: DUP3
0000221a: MLOAD
0000221b: PUSH1 0x80
0000221d: DUP2
0000221e: ADD
0000221f: DUP5
00002220: MSTORE
00002221: DUP2
00002222: SLOAD
00002223: PUSH1 0x01
00002225: PUSH1 0x01
00002227: PUSH1 0xa0
00002229: SHL
0000222a: SUB
0000222b: AND
0000222c: DUP2
0000222d: MSTORE
0000222e: PUSH1 0x01
00002230: DUP3
00002231: ADD
00002232: SLOAD
00002233: PUSH1 0x01
00002235: PUSH1 0x01
00002237: PUSH1 0x80
00002239: SHL
0000223a: SUB
0000223b: DUP1
0000223c: DUP3
0000223d: AND
0000223e: SWAP5
0000223f: DUP4
00002240: ADD
00002241: SWAP5
00002242: SWAP1
00002243: SWAP5
00002244: MSTORE
00002245: PUSH1 0x01
00002247: PUSH1 0x80
00002249: SHL
0000224a: SWAP1
0000224b: DIV
0000224c: PUSH1 0xff
0000224e: AND
0000224f: ISZERO
00002250: ISZERO
00002251: SWAP4
00002252: DUP2
00002253: ADD
00002254: SWAP4
00002255: SWAP1
00002256: SWAP4
00002257: MSTORE
00002258: PUSH1 0x02
0000225a: ADD
0000225b: SLOAD
0000225c: AND
0000225d: PUSH1 0x60
0000225f: DUP3
00002260: ADD
00002261: MSTORE
00002262: JUMPDEST
00002263: SWAP3
00002264: SWAP2
00002265: POP
00002266: POP
00002267: JUMP
00002268: JUMPDEST
00002269: PUSH1 0x00
0000226b: SLOAD
0000226c: PUSH1 0x01
0000226e: PUSH1 0xa0
00002270: SHL
00002271: SWAP1
00002272: DIV
00002273: PUSH2 0xffff
00002276: AND
00002277: DUP2
00002278: JUMP
00002279: JUMPDEST
0000227a: PUSH2 0x2281
0000227d: PUSH2 0x46af
00002280: JUMP
00002281: JUMPDEST
00002282: PUSH2 0x2289
00002285: PUSH2 0x304a
00002288: JUMP
00002289: JUMPDEST
0000228a: PUSH1 0x01
0000228c: PUSH1 0x01
0000228e: PUSH1 0xa0
00002290: SHL
00002291: SUB
00002292: AND
00002293: PUSH4 0x6dab47fd
00002298: DUP6
00002299: PUSH1 0x40
0000229b: MLOAD
0000229c: DUP3
0000229d: PUSH4 0xffffffff
000022a2: AND
000022a3: PUSH1 0xe0
000022a5: SHL
000022a6: DUP2
000022a7: MSTORE
000022a8: PUSH1 0x04
000022aa: ADD
000022ab: PUSH2 0x22b4
000022ae: SWAP2
000022af: SWAP1
000022b0: PUSH2 0x5e67
000022b3: JUMP
000022b4: JUMPDEST
000022b5: PUSH1 0xa0
000022b7: PUSH1 0x40
000022b9: MLOAD
000022ba: DUP1
000022bb: DUP4
000022bc: SUB
000022bd: DUP2
000022be: DUP7
000022bf: DUP1
000022c0: EXTCODESIZE
000022c1: ISZERO
000022c2: DUP1
000022c3: ISZERO
000022c4: PUSH2 0x22cc
000022c7: JUMPI
000022c8: PUSH1 0x00
000022ca: DUP1
000022cb: REVERT
000022cc: JUMPDEST
000022cd: POP
000022ce: GAS
000022cf: STATICCALL
000022d0: ISZERO
000022d1: DUP1
000022d2: ISZERO
000022d3: PUSH2 0x22e0
000022d6: JUMPI
000022d7: RETURNDATASIZE
000022d8: PUSH1 0x00
000022da: DUP1
000022db: RETURNDATACOPY
000022dc: RETURNDATASIZE
000022dd: PUSH1 0x00
000022df: REVERT
000022e0: JUMPDEST
000022e1: POP
000022e2: POP
000022e3: POP
000022e4: POP
000022e5: PUSH1 0x40
000022e7: MLOAD
000022e8: RETURNDATASIZE
000022e9: PUSH1 0x1f
000022eb: NOT
000022ec: PUSH1 0x1f
000022ee: DUP3
000022ef: ADD
000022f0: AND
000022f1: DUP3
000022f2: ADD
000022f3: DUP1
000022f4: PUSH1 0x40
000022f6: MSTORE
000022f7: POP
000022f8: DUP2
000022f9: ADD
000022fa: SWAP1
000022fb: PUSH2 0x2304
000022fe: SWAP2
000022ff: SWAP1
00002300: PUSH2 0x505e
00002303: JUMP
00002304: JUMPDEST
00002305: SWAP1
00002306: POP
00002307: DUP1
00002308: PUSH1 0x60
0000230a: ADD
0000230b: MLOAD
0000230c: PUSH1 0x01
0000230e: PUSH1 0x01
00002310: PUSH1 0xa0
00002312: SHL
00002313: SUB
00002314: AND
00002315: CALLER
00002316: PUSH1 0x01
00002318: PUSH1 0x01
0000231a: PUSH1 0xa0
0000231c: SHL
0000231d: SUB
0000231e: AND
0000231f: EQ
00002320: PUSH2 0x233b
00002323: JUMPI
00002324: PUSH1 0x40
00002326: MLOAD
00002327: PUSH3 0x461bcd
0000232b: PUSH1 0xe5
0000232d: SHL
0000232e: DUP2
0000232f: MSTORE
00002330: PUSH1 0x04
00002332: ADD
00002333: PUSH2 0x08ca
00002336: SWAP1
00002337: PUSH2 0x5a3a
0000233a: JUMP
0000233b: JUMPDEST
0000233c: PUSH1 0x01
0000233e: PUSH1 0x01
00002340: PUSH1 0x80
00002342: SHL
00002343: SUB
00002344: DUP3
00002345: AND
00002346: ISZERO
00002347: PUSH2 0x23c0
0000234a: JUMPI
0000234b: PUSH1 0x80
0000234d: DUP2
0000234e: ADD
0000234f: MLOAD
00002350: PUSH2 0xffff
00002353: AND
00002354: PUSH1 0x00
00002356: SWAP1
00002357: DUP2
00002358: MSTORE
00002359: PUSH1 0x06
0000235b: PUSH1 0x20
0000235d: SWAP1
0000235e: DUP2
0000235f: MSTORE
00002360: PUSH1 0x40
00002362: DUP1
00002363: DUP4
00002364: KECCAK256
00002365: PUSH1 0x07
00002367: SLOAD
00002368: PUSH1 0x01
0000236a: PUSH1 0x01
0000236c: PUSH1 0xa0
0000236e: SHL
0000236f: SUB
00002370: AND
00002371: DUP5
00002372: MSTORE
00002373: SWAP1
00002374: SWAP2
00002375: MSTORE
00002376: SWAP1
00002377: KECCAK256
00002378: SLOAD
00002379: PUSH2 0x2391
0000237c: SWAP1
0000237d: PUSH1 0x01
0000237f: PUSH1 0x01
00002381: PUSH1 0x80
00002383: SHL
00002384: SUB
00002385: DUP5
00002386: AND
00002387: PUSH4 0xffffffff
0000238c: PUSH2 0x2aad
0000238f: AND
00002390: JUMP
00002391: JUMPDEST
00002392: PUSH1 0x80
00002394: DUP3
00002395: ADD
00002396: MLOAD
00002397: PUSH2 0xffff
0000239a: AND
0000239b: PUSH1 0x00
0000239d: SWAP1
0000239e: DUP2
0000239f: MSTORE
000023a0: PUSH1 0x06
000023a2: PUSH1 0x20
000023a4: SWAP1
000023a5: DUP2
000023a6: MSTORE
000023a7: PUSH1 0x40
000023a9: DUP1
000023aa: DUP4
000023ab: KECCAK256
000023ac: PUSH1 0x07
000023ae: SLOAD
000023af: PUSH1 0x01
000023b1: PUSH1 0x01
000023b3: PUSH1 0xa0
000023b5: SHL
000023b6: SUB
000023b7: AND
000023b8: DUP5
000023b9: MSTORE
000023ba: SWAP1
000023bb: SWAP2
000023bc: MSTORE
000023bd: SWAP1
000023be: KECCAK256
000023bf: SSTORE
000023c0: JUMPDEST
000023c1: PUSH2 0x241d
000023c4: PUSH2 0x23dc
000023c7: PUSH1 0x01
000023c9: PUSH1 0x01
000023cb: PUSH1 0x80
000023cd: SHL
000023ce: SUB
000023cf: DUP6
000023d0: AND
000023d1: DUP5
000023d2: PUSH4 0xffffffff
000023d7: PUSH2 0x3db6
000023da: AND
000023db: JUMP
000023dc: JUMPDEST
000023dd: PUSH1 0x80
000023df: DUP4
000023e0: ADD
000023e1: MLOAD
000023e2: PUSH2 0xffff
000023e5: AND
000023e6: PUSH1 0x00
000023e8: SWAP1
000023e9: DUP2
000023ea: MSTORE
000023eb: PUSH1 0x06
000023ed: PUSH1 0x20
000023ef: SWAP1
000023f0: DUP2
000023f1: MSTORE
000023f2: PUSH1 0x40
000023f4: DUP1
000023f5: DUP4
000023f6: KECCAK256
000023f7: PUSH1 0x01
000023f9: PUSH1 0x01
000023fb: PUSH1 0xa0
000023fd: SHL
000023fe: SUB
000023ff: DUP12
00002400: AND
00002401: DUP5
00002402: MSTORE
00002403: SWAP1
00002404: SWAP2
00002405: MSTORE
00002406: SWAP1
00002407: KECCAK256
00002408: SLOAD
00002409: SWAP1
0000240a: PUSH1 0x01
0000240c: PUSH1 0x01
0000240e: PUSH1 0x80
00002410: SHL
00002411: SUB
00002412: AND
00002413: PUSH4 0xffffffff
00002418: PUSH2 0x2aad
0000241b: AND
0000241c: JUMP
0000241d: JUMPDEST
0000241e: PUSH1 0x80
00002420: DUP3
00002421: ADD
00002422: DUP1
00002423: MLOAD
00002424: PUSH2 0xffff
00002427: SWAP1
00002428: DUP2
00002429: AND
0000242a: PUSH1 0x00
0000242c: SWAP1
0000242d: DUP2
0000242e: MSTORE
0000242f: PUSH1 0x06
00002431: PUSH1 0x20
00002433: DUP2
00002434: DUP2
00002435: MSTORE
00002436: PUSH1 0x40
00002438: DUP1
00002439: DUP5
0000243a: KECCAK256
0000243b: PUSH1 0x01
0000243d: PUSH1 0x01
0000243f: PUSH1 0xa0
00002441: SHL
00002442: SUB
00002443: DUP14
00002444: AND
00002445: DUP6
00002446: MSTORE
00002447: DUP3
00002448: MSTORE
00002449: DUP1
0000244a: DUP5
0000244b: KECCAK256
0000244c: SWAP7
0000244d: SWAP1
0000244e: SWAP7
0000244f: SSTORE
00002450: SWAP4
00002451: MLOAD
00002452: SWAP1
00002453: SWAP3
00002454: AND
00002455: DUP2
00002456: MSTORE
00002457: SWAP1
00002458: DUP3
00002459: MSTORE
0000245a: DUP3
0000245b: DUP2
0000245c: KECCAK256
0000245d: CALLER
0000245e: DUP3
0000245f: MSTORE
00002460: SWAP1
00002461: SWAP2
00002462: MSTORE
00002463: KECCAK256
00002464: SLOAD
00002465: PUSH2 0x247d
00002468: DUP2
00002469: PUSH1 0x01
0000246b: PUSH1 0x01
0000246d: PUSH1 0x80
0000246f: SHL
00002470: SUB
00002471: DUP7
00002472: AND
00002473: PUSH4 0xffffffff
00002478: PUSH2 0x30b3
0000247b: AND
0000247c: JUMP
0000247d: JUMPDEST
0000247e: PUSH1 0x80
00002480: SWAP1
00002481: SWAP3
00002482: ADD
00002483: MLOAD
00002484: PUSH2 0xffff
00002487: AND
00002488: PUSH1 0x00
0000248a: SWAP1
0000248b: DUP2
0000248c: MSTORE
0000248d: PUSH1 0x06
0000248f: PUSH1 0x20
00002491: SWAP1
00002492: DUP2
00002493: MSTORE
00002494: PUSH1 0x40
00002496: DUP1
00002497: DUP4
00002498: KECCAK256
00002499: CALLER
0000249a: DUP5
0000249b: MSTORE
0000249c: SWAP1
0000249d: SWAP2
0000249e: MSTORE
0000249f: SWAP1
000024a0: KECCAK256
000024a1: SWAP2
000024a2: SWAP1
000024a3: SWAP2
000024a4: SSTORE
000024a5: POP
000024a6: POP
000024a7: POP
000024a8: POP
000024a9: POP
000024aa: JUMP
000024ab: JUMPDEST
000024ac: PUSH1 0x00
000024ae: SLOAD
000024af: PUSH1 0x01
000024b1: PUSH1 0xa0
000024b3: SHL
000024b4: SWAP1
000024b5: DIV
000024b6: PUSH2 0xffff
000024b9: SWAP1
000024ba: DUP2
000024bb: AND
000024bc: SWAP2
000024bd: AND
000024be: GT
000024bf: ISZERO
000024c0: SWAP1
000024c1: JUMP
000024c2: JUMPDEST
000024c3: PUSH2 0x24ca
000024c6: PUSH2 0x2efd
000024c9: JUMP
000024ca: JUMPDEST
000024cb: PUSH2 0x24e6
000024ce: JUMPI
000024cf: PUSH1 0x40
000024d1: MLOAD
000024d2: PUSH3 0x461bcd
000024d6: PUSH1 0xe5
000024d8: SHL
000024d9: DUP2
000024da: MSTORE
000024db: PUSH1 0x04
000024dd: ADD
000024de: PUSH2 0x08ca
000024e1: SWAP1
000024e2: PUSH2 0x5a3a
000024e5: JUMP
000024e6: JUMPDEST
000024e7: CALLVALUE
000024e8: ISZERO
000024e9: PUSH2 0x24f5
000024ec: JUMPI
000024ed: PUSH2 0x24f5
000024f0: DUP3
000024f1: PUSH2 0x2f26
000024f4: JUMP
000024f5: JUMPDEST
000024f6: PUSH1 0x00
000024f8: JUMPDEST
000024f9: DUP2
000024fa: MLOAD
000024fb: DUP2
000024fc: LT
000024fd: ISZERO
000024fe: PUSH2 0x09cb
00002501: JUMPI
00002502: PUSH1 0x00
00002504: PUSH1 0x01
00002506: PUSH1 0x00
00002508: DUP5
00002509: DUP5
0000250a: DUP2
0000250b: MLOAD
0000250c: DUP2
0000250d: LT
0000250e: PUSH2 0x2513
00002511: JUMPI
00002512: INVALID
00002513: JUMPDEST
00002514: PUSH1 0x20
00002516: MUL
00002517: PUSH1 0x20
00002519: ADD
0000251a: ADD
0000251b: MLOAD
0000251c: PUSH1 0x00
0000251e: ADD
0000251f: MLOAD
00002520: PUSH2 0xffff
00002523: AND
00002524: PUSH2 0xffff
00002527: AND
00002528: DUP2
00002529: MSTORE
0000252a: PUSH1 0x20
0000252c: ADD
0000252d: SWAP1
0000252e: DUP2
0000252f: MSTORE
00002530: PUSH1 0x20
00002532: ADD
00002533: PUSH1 0x00
00002535: KECCAK256
00002536: PUSH1 0x00
00002538: SWAP1
00002539: SLOAD
0000253a: SWAP1
0000253b: PUSH2 0x0100
0000253e: EXP
0000253f: SWAP1
00002540: DIV
00002541: PUSH1 0x01
00002543: PUSH1 0x01
00002545: PUSH1 0xa0
00002547: SHL
00002548: SUB
00002549: AND
0000254a: SWAP1
0000254b: POP
0000254c: PUSH2 0x256d
0000254f: DUP5
00002550: DUP3
00002551: DUP6
00002552: DUP6
00002553: DUP2
00002554: MLOAD
00002555: DUP2
00002556: LT
00002557: PUSH2 0x255c
0000255a: JUMPI
0000255b: INVALID
0000255c: JUMPDEST
0000255d: PUSH1 0x20
0000255f: MUL
00002560: PUSH1 0x20
00002562: ADD
00002563: ADD
00002564: MLOAD
00002565: PUSH1 0x20
00002567: ADD
00002568: MLOAD
00002569: PUSH2 0x3c58
0000256c: JUMP
0000256d: JUMPDEST
0000256e: POP
0000256f: PUSH1 0x01
00002571: ADD
00002572: PUSH2 0x24f8
00002575: JUMP
00002576: JUMPDEST
00002577: PUSH2 0x257e
0000257a: PUSH2 0x14e2
0000257d: JUMP
0000257e: JUMPDEST
0000257f: PUSH2 0x2587
00002582: JUMPI
00002583: PUSH1 0x00
00002585: DUP1
00002586: REVERT
00002587: JUMPDEST
00002588: PUSH2 0x2590
0000258b: DUP4
0000258c: PUSH2 0x3e1a
0000258f: JUMP
00002590: JUMPDEST
00002591: PUSH2 0x2599
00002594: DUP3
00002595: PUSH2 0x3e4d
00002598: JUMP
00002599: JUMPDEST
0000259a: PUSH2 0x25a2
0000259d: DUP2
0000259e: PUSH2 0x3e80
000025a1: JUMP
000025a2: JUMPDEST
000025a3: PUSH32 0x72a18338fc4bf37c8dd47612c4b9754f73b5eb75cfd2d0f74756de5387345f0d
000025c4: DUP4
000025c5: DUP4
000025c6: DUP4
000025c7: PUSH1 0x40
000025c9: MLOAD
000025ca: PUSH2 0x25d5
000025cd: SWAP4
000025ce: SWAP3
000025cf: SWAP2
000025d0: SWAP1
000025d1: PUSH2 0x5d5f
000025d4: JUMP
000025d5: JUMPDEST
000025d6: PUSH1 0x40
000025d8: MLOAD
000025d9: DUP1
000025da: SWAP2
000025db: SUB
000025dc: SWAP1
000025dd: LOG1
000025de: POP
000025df: POP
000025e0: POP
000025e1: JUMP
000025e2: JUMPDEST
000025e3: PUSH2 0x25ea
000025e6: PUSH2 0x14e2
000025e9: JUMP
000025ea: JUMPDEST
000025eb: PUSH2 0x25f3
000025ee: JUMPI
000025ef: PUSH1 0x00
000025f1: DUP1
000025f2: REVERT
000025f3: JUMPDEST
000025f4: PUSH1 0x07
000025f6: DUP1
000025f7: SLOAD
000025f8: PUSH1 0x01
000025fa: PUSH1 0x01
000025fc: PUSH1 0xa0
000025fe: SHL
000025ff: SUB
00002600: NOT
00002601: AND
00002602: PUSH1 0x01
00002604: PUSH1 0x01
00002606: PUSH1 0xa0
00002608: SHL
00002609: SUB
0000260a: DUP4
0000260b: AND
0000260c: OR
0000260d: SWAP1
0000260e: SSTORE
0000260f: PUSH1 0x40
00002611: MLOAD
00002612: PUSH32 0x70b77aa3bf7367cd8c0674c8f80aa3829d046d2171e4e151fa63ab2e0d5d8e83
00002633: SWAP1
00002634: PUSH2 0x263e
00002637: SWAP1
00002638: DUP4
00002639: SWAP1
0000263a: PUSH2 0x5575
0000263d: JUMP
0000263e: JUMPDEST
0000263f: PUSH1 0x40
00002641: MLOAD
00002642: DUP1
00002643: SWAP2
00002644: SUB
00002645: SWAP1
00002646: LOG1
00002647: POP
00002648: JUMP
00002649: JUMPDEST
0000264a: PUSH2 0x2651
0000264d: PUSH2 0x14e2
00002650: JUMP
00002651: JUMPDEST
00002652: PUSH2 0x265a
00002655: JUMPI
00002656: PUSH1 0x00
00002658: DUP1
00002659: REVERT
0000265a: JUMPDEST
0000265b: PUSH2 0x2662
0000265e: PUSH2 0x1510
00002661: JUMP
00002662: JUMPDEST
00002663: PUSH1 0x01
00002665: PUSH1 0x01
00002667: PUSH1 0x80
00002669: SHL
0000266a: SUB
0000266b: AND
0000266c: DUP4
0000266d: PUSH1 0x01
0000266f: PUSH1 0x01
00002671: PUSH1 0x80
00002673: SHL
00002674: SUB
00002675: AND
00002676: GT
00002677: PUSH2 0x2692
0000267a: JUMPI
0000267b: PUSH1 0x40
0000267d: MLOAD
0000267e: PUSH3 0x461bcd
00002682: PUSH1 0xe5
00002684: SHL
00002685: DUP2
00002686: MSTORE
00002687: PUSH1 0x04
00002689: ADD
0000268a: PUSH2 0x08ca
0000268d: SWAP1
0000268e: PUSH2 0x59ca
00002691: JUMP
00002692: JUMPDEST
00002693: PUSH1 0x40
00002695: MLOAD
00002696: DUP1
00002697: PUSH1 0x80
00002699: ADD
0000269a: PUSH1 0x40
0000269c: MSTORE
0000269d: DUP1
0000269e: DUP6
0000269f: PUSH1 0x01
000026a1: PUSH1 0x01
000026a3: PUSH1 0xa0
000026a5: SHL
000026a6: SUB
000026a7: AND
000026a8: DUP2
000026a9: MSTORE
000026aa: PUSH1 0x20
000026ac: ADD
000026ad: DUP4
000026ae: PUSH1 0x01
000026b0: PUSH1 0x01
000026b2: PUSH1 0x80
000026b4: SHL
000026b5: SUB
000026b6: AND
000026b7: DUP2
000026b8: MSTORE
000026b9: PUSH1 0x20
000026bb: ADD
000026bc: DUP3
000026bd: ISZERO
000026be: ISZERO
000026bf: DUP2
000026c0: MSTORE
000026c1: PUSH1 0x20
000026c3: ADD
000026c4: DUP5
000026c5: PUSH1 0x01
000026c7: PUSH1 0x01
000026c9: PUSH1 0x80
000026cb: SHL
000026cc: SUB
000026cd: AND
000026ce: DUP2
000026cf: MSTORE
000026d0: POP
000026d1: PUSH1 0x05
000026d3: PUSH1 0x00
000026d5: DUP9
000026d6: PUSH2 0xffff
000026d9: AND
000026da: PUSH2 0xffff
000026dd: AND
000026de: DUP2
000026df: MSTORE
000026e0: PUSH1 0x20
000026e2: ADD
000026e3: SWAP1
000026e4: DUP2
000026e5: MSTORE
000026e6: PUSH1 0x20
000026e8: ADD
000026e9: PUSH1 0x00
000026eb: KECCAK256
000026ec: PUSH1 0x00
000026ee: DUP8
000026ef: PUSH2 0xffff
000026f2: AND
000026f3: PUSH2 0xffff
000026f6: AND
000026f7: DUP2
000026f8: MSTORE
000026f9: PUSH1 0x20
000026fb: ADD
000026fc: SWAP1
000026fd: DUP2
000026fe: MSTORE
000026ff: PUSH1 0x20
00002701: ADD
00002702: PUSH1 0x00
00002704: KECCAK256
00002705: PUSH1 0x00
00002707: DUP3
00002708: ADD
00002709: MLOAD
0000270a: DUP2
0000270b: PUSH1 0x00
0000270d: ADD
0000270e: PUSH1 0x00
00002710: PUSH2 0x0100
00002713: EXP
00002714: DUP2
00002715: SLOAD
00002716: DUP2
00002717: PUSH1 0x01
00002719: PUSH1 0x01
0000271b: PUSH1 0xa0
0000271d: SHL
0000271e: SUB
0000271f: MUL
00002720: NOT
00002721: AND
00002722: SWAP1
00002723: DUP4
00002724: PUSH1 0x01
00002726: PUSH1 0x01
00002728: PUSH1 0xa0
0000272a: SHL
0000272b: SUB
0000272c: AND
0000272d: MUL
0000272e: OR
0000272f: SWAP1
00002730: SSTORE
00002731: POP
00002732: PUSH1 0x20
00002734: DUP3
00002735: ADD
00002736: MLOAD
00002737: DUP2
00002738: PUSH1 0x01
0000273a: ADD
0000273b: PUSH1 0x00
0000273d: PUSH2 0x0100
00002740: EXP
00002741: DUP2
00002742: SLOAD
00002743: DUP2
00002744: PUSH1 0x01
00002746: PUSH1 0x01
00002748: PUSH1 0x80
0000274a: SHL
0000274b: SUB
0000274c: MUL
0000274d: NOT
0000274e: AND
0000274f: SWAP1
00002750: DUP4
00002751: PUSH1 0x01
00002753: PUSH1 0x01
00002755: PUSH1 0x80
00002757: SHL
00002758: SUB
00002759: AND
0000275a: MUL
0000275b: OR
0000275c: SWAP1
0000275d: SSTORE
0000275e: POP
0000275f: PUSH1 0x40
00002761: DUP3
00002762: ADD
00002763: MLOAD
00002764: DUP2
00002765: PUSH1 0x01
00002767: ADD
00002768: PUSH1 0x10
0000276a: PUSH2 0x0100
0000276d: EXP
0000276e: DUP2
0000276f: SLOAD
00002770: DUP2
00002771: PUSH1 0xff
00002773: MUL
00002774: NOT
00002775: AND
00002776: SWAP1
00002777: DUP4
00002778: ISZERO
00002779: ISZERO
0000277a: MUL
0000277b: OR
0000277c: SWAP1
0000277d: SSTORE
0000277e: POP
0000277f: PUSH1 0x60
00002781: DUP3
00002782: ADD
00002783: MLOAD
00002784: DUP2
00002785: PUSH1 0x02
00002787: ADD
00002788: PUSH1 0x00
0000278a: PUSH2 0x0100
0000278d: EXP
0000278e: DUP2
0000278f: SLOAD
00002790: DUP2
00002791: PUSH1 0x01
00002793: PUSH1 0x01
00002795: PUSH1 0x80
00002797: SHL
00002798: SUB
00002799: MUL
0000279a: NOT
0000279b: AND
0000279c: SWAP1
0000279d: DUP4
0000279e: PUSH1 0x01
000027a0: PUSH1 0x01
000027a2: PUSH1 0x80
000027a4: SHL
000027a5: SUB
000027a6: AND
000027a7: MUL
000027a8: OR
000027a9: SWAP1
000027aa: SSTORE
000027ab: POP
000027ac: SWAP1
000027ad: POP
000027ae: POP
000027af: DUP5
000027b0: PUSH2 0xffff
000027b3: AND
000027b4: DUP7
000027b5: PUSH2 0xffff
000027b8: AND
000027b9: PUSH32 0xc19c1de154beaef66da9637a82d948550ac7a0df67fdaa7ea0f05a12d4ada3e0
000027da: PUSH1 0x40
000027dc: MLOAD
000027dd: PUSH1 0x40
000027df: MLOAD
000027e0: DUP1
000027e1: SWAP2
000027e2: SUB
000027e3: SWAP1
000027e4: LOG3
000027e5: POP
000027e6: POP
000027e7: POP
000027e8: POP
000027e9: POP
000027ea: POP
000027eb: JUMP
000027ec: JUMPDEST
000027ed: PUSH2 0x27f4
000027f0: PUSH2 0x14e2
000027f3: JUMP
000027f4: JUMPDEST
000027f5: PUSH2 0x27fd
000027f8: JUMPI
000027f9: PUSH1 0x00
000027fb: DUP1
000027fc: REVERT
000027fd: JUMPDEST
000027fe: PUSH2 0x1524
00002801: DUP2
00002802: PUSH2 0x3eb3
00002805: JUMP
00002806: JUMPDEST
00002807: PUSH1 0x08
00002809: SLOAD
0000280a: PUSH1 0x01
0000280c: PUSH1 0xa8
0000280e: SHL
0000280f: SWAP1
00002810: DIV
00002811: PUSH1 0xff
00002813: AND
00002814: DUP1
00002815: PUSH2 0x2821
00002818: JUMPI
00002819: POP
0000281a: PUSH2 0x2821
0000281d: PUSH2 0x30e3
00002820: JUMP
00002821: JUMPDEST
00002822: DUP1
00002823: PUSH2 0x2836
00002826: JUMPI
00002827: POP
00002828: PUSH1 0x08
0000282a: SLOAD
0000282b: PUSH1 0x01
0000282d: PUSH1 0xa0
0000282f: SHL
00002830: SWAP1
00002831: DIV
00002832: PUSH1 0xff
00002834: AND
00002835: ISZERO
00002836: JUMPDEST
00002837: PUSH2 0x2852
0000283a: JUMPI
0000283b: PUSH1 0x40
0000283d: MLOAD
0000283e: PUSH3 0x461bcd
00002842: PUSH1 0xe5
00002844: SHL
00002845: DUP2
00002846: MSTORE
00002847: PUSH1 0x04
00002849: ADD
0000284a: PUSH2 0x08ca
0000284d: SWAP1
0000284e: PUSH2 0x5b24
00002851: JUMP
00002852: JUMPDEST
00002853: PUSH1 0x08
00002855: SLOAD
00002856: PUSH1 0x01
00002858: PUSH1 0xa8
0000285a: SHL
0000285b: SWAP1
0000285c: DIV
0000285d: PUSH1 0xff
0000285f: AND
00002860: ISZERO
00002861: DUP1
00002862: ISZERO
00002863: PUSH2 0x2889
00002866: JUMPI
00002867: PUSH1 0x08
00002869: DUP1
0000286a: SLOAD
0000286b: PUSH1 0xff
0000286d: PUSH1 0xa0
0000286f: SHL
00002870: NOT
00002871: PUSH1 0xff
00002873: PUSH1 0xa8
00002875: SHL
00002876: NOT
00002877: SWAP1
00002878: SWAP2
00002879: AND
0000287a: PUSH1 0x01
0000287c: PUSH1 0xa8
0000287e: SHL
0000287f: OR
00002880: AND
00002881: PUSH1 0x01
00002883: PUSH1 0xa0
00002885: SHL
00002886: OR
00002887: SWAP1
00002888: SSTORE
00002889: JUMPDEST
0000288a: PUSH2 0x2893
0000288d: DUP6
0000288e: DUP6
0000288f: PUSH2 0x0fd6
00002892: JUMP
00002893: JUMPDEST
00002894: PUSH1 0x40
00002896: MLOAD
00002897: PUSH4 0x29965a1d
0000289c: PUSH1 0xe0
0000289e: SHL
0000289f: DUP2
000028a0: MSTORE
000028a1: PUSH1 0x01
000028a3: PUSH1 0x01
000028a5: PUSH1 0xa0
000028a7: SHL
000028a8: SUB
000028a9: DUP5
000028aa: AND
000028ab: SWAP1
000028ac: PUSH4 0x29965a1d
000028b1: SWAP1
000028b2: PUSH2 0x28e4
000028b5: SWAP1
000028b6: PUSH1 0x00
000028b8: SWAP1
000028b9: PUSH32 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b
000028da: SWAP1
000028db: ADDRESS
000028dc: SWAP1
000028dd: PUSH1 0x04
000028df: ADD
000028e0: PUSH2 0x5589
000028e3: JUMP
000028e4: JUMPDEST
000028e5: PUSH1 0x00
000028e7: PUSH1 0x40
000028e9: MLOAD
000028ea: DUP1
000028eb: DUP4
000028ec: SUB
000028ed: DUP2
000028ee: PUSH1 0x00
000028f0: DUP8
000028f1: DUP1
000028f2: EXTCODESIZE
000028f3: ISZERO
000028f4: DUP1
000028f5: ISZERO
000028f6: PUSH2 0x28fe
000028f9: JUMPI
000028fa: PUSH1 0x00
000028fc: DUP1
000028fd: REVERT
000028fe: JUMPDEST
000028ff: POP
00002900: GAS
00002901: CALL
00002902: ISZERO
00002903: DUP1
00002904: ISZERO
00002905: PUSH2 0x2912
00002908: JUMPI
00002909: RETURNDATASIZE
0000290a: PUSH1 0x00
0000290c: DUP1
0000290d: RETURNDATACOPY
0000290e: RETURNDATASIZE
0000290f: PUSH1 0x00
00002911: REVERT
00002912: JUMPDEST
00002913: POP
00002914: POP
00002915: PUSH1 0x00
00002917: DUP1
00002918: SLOAD
00002919: PUSH1 0x01
0000291b: PUSH1 0x01
0000291d: PUSH1 0xa0
0000291f: SHL
00002920: SUB
00002921: DUP1
00002922: DUP8
00002923: AND
00002924: PUSH1 0x01
00002926: PUSH1 0x01
00002928: PUSH1 0xa0
0000292a: SHL
0000292b: SUB
0000292c: NOT
0000292d: SWAP3
0000292e: DUP4
0000292f: AND
00002930: OR
00002931: DUP1
00002932: DUP5
00002933: SSTORE
00002934: PUSH32 0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49
00002955: DUP1
00002956: SLOAD
00002957: SWAP1
00002958: SWAP4
00002959: AND
0000295a: SWAP1
0000295b: DUP3
0000295c: AND
0000295d: SWAP1
0000295e: DUP2
0000295f: OR
00002960: SWAP1
00002961: SWAP3
00002962: SSTORE
00002963: SWAP1
00002964: DUP3
00002965: MSTORE
00002966: PUSH1 0x03
00002968: PUSH1 0x20
0000296a: SWAP1
0000296b: DUP2
0000296c: MSTORE
0000296d: PUSH1 0x40
0000296f: DUP1
00002970: DUP5
00002971: KECCAK256
00002972: DUP1
00002973: SLOAD
00002974: PUSH2 0xffff
00002977: NOT
00002978: AND
00002979: SWAP1
0000297a: SSTORE
0000297b: DUP4
0000297c: DUP1
0000297d: MSTORE
0000297e: PUSH1 0x02
00002980: SWAP1
00002981: SWAP2
00002982: MSTORE
00002983: PUSH8 0x0de0b6b3a7640000
0000298c: PUSH32 0xac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b
000029ad: SSTORE
000029ae: DUP3
000029af: SLOAD
000029b0: SWAP1
000029b1: MLOAD
000029b2: SWAP2
000029b3: AND
000029b4: SWAP4
000029b5: POP
000029b6: PUSH32 0x1defcb31bdf18413d52d3220d6f23d92a6635d53c8dbb16c738b0706fe9d07b9
000029d7: SWAP3
000029d8: POP
000029d9: LOG2
000029da: DUP1
000029db: ISZERO
000029dc: PUSH2 0x29ed
000029df: JUMPI
000029e0: PUSH1 0x08
000029e2: DUP1
000029e3: SLOAD
000029e4: PUSH1 0xff
000029e6: PUSH1 0xa8
000029e8: SHL
000029e9: NOT
000029ea: AND
000029eb: SWAP1
000029ec: SSTORE
000029ed: JUMPDEST
000029ee: POP
000029ef: POP
000029f0: POP
000029f1: POP
000029f2: POP
000029f3: JUMP
000029f4: JUMPDEST
000029f5: PUSH2 0x29fc
000029f8: PUSH2 0x46dd
000029fb: JUMP
000029fc: JUMPDEST
000029fd: PUSH2 0x2a06
00002a00: DUP6
00002a01: DUP6
00002a02: PUSH2 0x30e9
00002a05: JUMP
00002a06: JUMPDEST
00002a07: SWAP1
00002a08: POP
00002a09: PUSH1 0x00
00002a0b: DUP1
00002a0c: PUSH1 0x00
00002a0e: PUSH2 0x2a18
00002a11: DUP7
00002a12: DUP7
00002a13: DUP7
00002a14: PUSH2 0x32b1
00002a17: JUMP
00002a18: JUMPDEST
00002a19: SWAP3
00002a1a: POP
00002a1b: SWAP3
00002a1c: POP
00002a1d: SWAP3
00002a1e: POP
00002a1f: PUSH2 0x2a31
00002a22: DUP9
00002a23: DUP4
00002a24: PUSH1 0x01
00002a26: PUSH1 0x01
00002a28: PUSH1 0x80
00002a2a: SHL
00002a2b: SUB
00002a2c: AND
00002a2d: PUSH2 0x34fc
00002a30: JUMP
00002a31: JUMPDEST
00002a32: PUSH2 0x2a47
00002a35: DUP8
00002a36: PUSH2 0x1231
00002a39: DUP4
00002a3a: PUSH1 0x01
00002a3c: PUSH1 0x01
00002a3e: PUSH1 0x80
00002a40: SHL
00002a41: SUB
00002a42: AND
00002a43: PUSH2 0x361b
00002a46: JUMP
00002a47: JUMPDEST
00002a48: DUP6
00002a49: PUSH1 0x01
00002a4b: PUSH1 0x01
00002a4d: PUSH1 0xa0
00002a4f: SHL
00002a50: SUB
00002a51: AND
00002a52: PUSH32 0x4d74a702a383226221d4ba46377c079c56e0da1d9f5123c90ce77b965824f3fd
00002a73: DUP10
00002a74: DUP10
00002a75: DUP7
00002a76: PUSH1 0x40
00002a78: MLOAD
00002a79: PUSH2 0x1437
00002a7c: SWAP4
00002a7d: SWAP3
00002a7e: SWAP2
00002a7f: SWAP1
00002a80: PUSH2 0x5e40
00002a83: JUMP
00002a84: JUMPDEST
00002a85: PUSH1 0x00
00002a87: PUSH1 0x01
00002a89: PUSH1 0x80
00002a8b: SHL
00002a8c: DUP3
00002a8d: LT
00002a8e: PUSH2 0x2aa9
00002a91: JUMPI
00002a92: PUSH1 0x40
00002a94: MLOAD
00002a95: PUSH3 0x461bcd
00002a99: PUSH1 0xe5
00002a9b: SHL
00002a9c: DUP2
00002a9d: MSTORE
00002a9e: PUSH1 0x04
00002aa0: ADD
00002aa1: PUSH2 0x08ca
00002aa4: SWAP1
00002aa5: PUSH2 0x5926
00002aa8: JUMP
00002aa9: JUMPDEST
00002aaa: POP
00002aab: SWAP1
00002aac: JUMP
00002aad: JUMPDEST
00002aae: PUSH1 0x00
00002ab0: DUP3
00002ab1: DUP3
00002ab2: ADD
00002ab3: DUP2
00002ab4: DUP4
00002ab5: SLT
00002ab6: DUP1
00002ab7: ISZERO
00002ab8: SWAP1
00002ab9: PUSH2 0x2ac2
00002abc: JUMPI
00002abd: POP
00002abe: DUP4
00002abf: DUP2
00002ac0: SLT
00002ac1: ISZERO
00002ac2: JUMPDEST
00002ac3: DUP1
00002ac4: PUSH2 0x2ad7
00002ac7: JUMPI
00002ac8: POP
00002ac9: PUSH1 0x00
00002acb: DUP4
00002acc: SLT
00002acd: DUP1
00002ace: ISZERO
00002acf: PUSH2 0x2ad7
00002ad2: JUMPI
00002ad3: POP
00002ad4: DUP4
00002ad5: DUP2
00002ad6: SLT
00002ad7: JUMPDEST
00002ad8: PUSH2 0x2af3
00002adb: JUMPI
00002adc: PUSH1 0x40
00002ade: MLOAD
00002adf: PUSH3 0x461bcd
00002ae3: PUSH1 0xe5
00002ae5: SHL
00002ae6: DUP2
00002ae7: MSTORE
00002ae8: PUSH1 0x04
00002aea: ADD
00002aeb: PUSH2 0x08ca
00002aee: SWAP1
00002aef: PUSH2 0x596d
00002af2: JUMP
00002af3: JUMPDEST
00002af4: SWAP4
00002af5: SWAP3
00002af6: POP
00002af7: POP
00002af8: POP
00002af9: JUMP
00002afa: JUMPDEST
00002afb: PUSH1 0x00
00002afd: PUSH2 0x0997
00002b00: PUSH32 0x86f55df6f3f1d5533a992d6e1355f3adb2afe0c3064672910d2518432c35e770
00002b21: PUSH2 0x3f22
00002b24: JUMP
00002b25: JUMPDEST
00002b26: PUSH1 0x01
00002b28: PUSH1 0x01
00002b2a: PUSH1 0xa0
00002b2c: SHL
00002b2d: SUB
00002b2e: DUP4
00002b2f: AND
00002b30: PUSH1 0x00
00002b32: DUP2
00002b33: DUP2
00002b34: MSTORE
00002b35: PUSH1 0x03
00002b37: PUSH1 0x20
00002b39: MSTORE
00002b3a: PUSH1 0x40
00002b3c: DUP2
00002b3d: KECCAK256
00002b3e: SLOAD
00002b3f: SWAP1
00002b40: SWAP2
00002b41: PUSH2 0xffff
00002b44: SWAP1
00002b45: SWAP2
00002b46: AND
00002b47: SWAP1
00002b48: DUP3
00002b49: SWAP1
00002b4a: PUSH2 0x2b65
00002b4d: JUMPI
00002b4e: PUSH1 0x40
00002b50: MLOAD
00002b51: PUSH3 0x461bcd
00002b55: PUSH1 0xe5
00002b57: SHL
00002b58: DUP2
00002b59: MSTORE
00002b5a: PUSH1 0x04
00002b5c: ADD
00002b5d: PUSH2 0x08ca
00002b60: SWAP1
00002b61: PUSH2 0x5aec
00002b64: JUMP
00002b65: JUMPDEST
00002b66: DUP4
00002b67: ISZERO
00002b68: PUSH2 0x2bd1
00002b6b: JUMPI
00002b6c: PUSH2 0x2b73
00002b6f: PUSH2 0x304a
00002b72: JUMP
00002b73: JUMPDEST
00002b74: PUSH1 0x01
00002b76: PUSH1 0x01
00002b78: PUSH1 0xa0
00002b7a: SHL
00002b7b: SUB
00002b7c: AND
00002b7d: PUSH4 0x265bf4cf
00002b82: DUP10
00002b83: PUSH1 0x40
00002b85: MLOAD
00002b86: DUP3
00002b87: PUSH4 0xffffffff
00002b8c: AND
00002b8d: PUSH1 0xe0
00002b8f: SHL
00002b90: DUP2
00002b91: MSTORE
00002b92: PUSH1 0x04
00002b94: ADD
00002b95: PUSH2 0x2b9e
00002b98: SWAP2
00002b99: SWAP1
00002b9a: PUSH2 0x5575
00002b9d: JUMP
00002b9e: JUMPDEST
00002b9f: PUSH1 0x00
00002ba1: PUSH1 0x40
00002ba3: MLOAD
00002ba4: DUP1
00002ba5: DUP4
00002ba6: SUB
00002ba7: DUP2
00002ba8: PUSH1 0x00
00002baa: DUP8
00002bab: DUP1
00002bac: EXTCODESIZE
00002bad: ISZERO
00002bae: DUP1
00002baf: ISZERO
00002bb0: PUSH2 0x2bb8
00002bb3: JUMPI
00002bb4: PUSH1 0x00
00002bb6: DUP1
00002bb7: REVERT
00002bb8: JUMPDEST
00002bb9: POP
00002bba: GAS
00002bbb: CALL
00002bbc: ISZERO
00002bbd: DUP1
00002bbe: ISZERO
00002bbf: PUSH2 0x2bcc
00002bc2: JUMPI
00002bc3: RETURNDATASIZE
00002bc4: PUSH1 0x00
00002bc6: DUP1
00002bc7: RETURNDATACOPY
00002bc8: RETURNDATASIZE
00002bc9: PUSH1 0x00
00002bcb: REVERT
00002bcc: JUMPDEST
00002bcd: POP
00002bce: POP
00002bcf: POP
00002bd0: POP
00002bd1: JUMPDEST
00002bd2: PUSH2 0xffff
00002bd5: DUP3
00002bd6: AND
00002bd7: PUSH1 0x00
00002bd9: SWAP1
00002bda: DUP2
00002bdb: MSTORE
00002bdc: PUSH1 0x06
00002bde: PUSH1 0x20
00002be0: SWAP1
00002be1: DUP2
00002be2: MSTORE
00002be3: PUSH1 0x40
00002be5: DUP1
00002be6: DUP4
00002be7: KECCAK256
00002be8: PUSH1 0x01
00002bea: PUSH1 0x01
00002bec: PUSH1 0xa0
00002bee: SHL
00002bef: SUB
00002bf0: DUP13
00002bf1: AND
00002bf2: DUP5
00002bf3: MSTORE
00002bf4: SWAP1
00002bf5: SWAP2
00002bf6: MSTORE
00002bf7: DUP2
00002bf8: KECCAK256
00002bf9: SLOAD
00002bfa: SWAP1
00002bfb: DUP2
00002bfc: SGT
00002bfd: ISZERO
00002bfe: PUSH2 0x2c5c
00002c01: JUMPI
00002c02: DUP6
00002c03: PUSH1 0x01
00002c05: PUSH1 0x01
00002c07: PUSH1 0x80
00002c09: SHL
00002c0a: SUB
00002c0b: AND
00002c0c: DUP2
00002c0d: SLT
00002c0e: ISZERO
00002c0f: PUSH2 0x2c16
00002c12: JUMPI
00002c13: DUP1
00002c14: SWAP6
00002c15: POP
00002c16: JUMPDEST
00002c17: PUSH2 0x2c2f
00002c1a: DUP2
00002c1b: PUSH1 0x01
00002c1d: PUSH1 0x01
00002c1f: PUSH1 0x80
00002c21: SHL
00002c22: SUB
00002c23: DUP9
00002c24: AND
00002c25: PUSH4 0xffffffff
00002c2a: PUSH2 0x30b3
00002c2d: AND
00002c2e: JUMP
00002c2f: JUMPDEST
00002c30: PUSH2 0xffff
00002c33: DUP5
00002c34: AND
00002c35: PUSH1 0x00
00002c37: SWAP1
00002c38: DUP2
00002c39: MSTORE
00002c3a: PUSH1 0x06
00002c3c: PUSH1 0x20
00002c3e: SWAP1
00002c3f: DUP2
00002c40: MSTORE
00002c41: PUSH1 0x40
00002c43: DUP1
00002c44: DUP4
00002c45: KECCAK256
00002c46: PUSH1 0x01
00002c48: PUSH1 0x01
00002c4a: PUSH1 0xa0
00002c4c: SHL
00002c4d: SUB
00002c4e: DUP15
00002c4f: AND
00002c50: DUP5
00002c51: MSTORE
00002c52: SWAP1
00002c53: SWAP2
00002c54: MSTORE
00002c55: SWAP1
00002c56: KECCAK256
00002c57: SSTORE
00002c58: PUSH1 0x01
00002c5a: SWAP2
00002c5b: POP
00002c5c: JUMPDEST
00002c5d: DUP5
00002c5e: ISZERO
00002c5f: PUSH2 0x2d0c
00002c62: JUMPI
00002c63: PUSH1 0x00
00002c65: PUSH2 0x2c6c
00002c68: PUSH2 0x304a
00002c6b: JUMP
00002c6c: JUMPDEST
00002c6d: PUSH1 0x01
00002c6f: PUSH1 0x01
00002c71: PUSH1 0xa0
00002c73: SHL
00002c74: SUB
00002c75: AND
00002c76: PUSH4 0xf9a4cb1b
00002c7b: DUP12
00002c7c: PUSH1 0x40
00002c7e: MLOAD
00002c7f: DUP3
00002c80: PUSH4 0xffffffff
00002c85: AND
00002c86: PUSH1 0xe0
00002c88: SHL
00002c89: DUP2
00002c8a: MSTORE
00002c8b: PUSH1 0x04
00002c8d: ADD
00002c8e: PUSH2 0x2c97
00002c91: SWAP2
00002c92: SWAP1
00002c93: PUSH2 0x5575
00002c96: JUMP
00002c97: JUMPDEST
00002c98: PUSH1 0x20
00002c9a: PUSH1 0x40
00002c9c: MLOAD
00002c9d: DUP1
00002c9e: DUP4
00002c9f: SUB
00002ca0: DUP2
00002ca1: DUP7
00002ca2: DUP1
00002ca3: EXTCODESIZE
00002ca4: ISZERO
00002ca5: DUP1
00002ca6: ISZERO
00002ca7: PUSH2 0x2caf
00002caa: JUMPI
00002cab: PUSH1 0x00
00002cad: DUP1
00002cae: REVERT
00002caf: JUMPDEST
00002cb0: POP
00002cb1: GAS
00002cb2: STATICCALL
00002cb3: ISZERO
00002cb4: DUP1
00002cb5: ISZERO
00002cb6: PUSH2 0x2cc3
00002cb9: JUMPI
00002cba: RETURNDATASIZE
00002cbb: PUSH1 0x00
00002cbd: DUP1
00002cbe: RETURNDATACOPY
00002cbf: RETURNDATASIZE
00002cc0: PUSH1 0x00
00002cc2: REVERT
00002cc3: JUMPDEST
00002cc4: POP
00002cc5: POP
00002cc6: POP
00002cc7: POP
00002cc8: PUSH1 0x40
00002cca: MLOAD
00002ccb: RETURNDATASIZE
00002ccc: PUSH1 0x1f
00002cce: NOT
00002ccf: PUSH1 0x1f
00002cd1: DUP3
00002cd2: ADD
00002cd3: AND
00002cd4: DUP3
00002cd5: ADD
00002cd6: DUP1
00002cd7: PUSH1 0x40
00002cd9: MSTORE
00002cda: POP
00002cdb: DUP2
00002cdc: ADD
00002cdd: SWAP1
00002cde: PUSH2 0x2ce7
00002ce1: SWAP2
00002ce2: SWAP1
00002ce3: PUSH2 0x5022
00002ce6: JUMP
00002ce7: JUMPDEST
00002ce8: SWAP1
00002ce9: POP
00002cea: PUSH1 0x00
00002cec: DUP2
00002ced: SLT
00002cee: ISZERO
00002cef: PUSH2 0x2d0a
00002cf2: JUMPI
00002cf3: PUSH1 0x40
00002cf5: MLOAD
00002cf6: PUSH3 0x461bcd
00002cfa: PUSH1 0xe5
00002cfc: SHL
00002cfd: DUP2
00002cfe: MSTORE
00002cff: PUSH1 0x04
00002d01: ADD
00002d02: PUSH2 0x08ca
00002d05: SWAP1
00002d06: PUSH2 0x5bf0
00002d09: JUMP
00002d0a: JUMPDEST
00002d0b: POP
00002d0c: JUMPDEST
00002d0d: DUP2
00002d0e: ISZERO
00002d0f: PUSH2 0x2d5c
00002d12: JUMPI
00002d13: PUSH2 0x2d1d
00002d16: DUP8
00002d17: DUP10
00002d18: DUP9
00002d19: PUSH2 0x3f26
00002d1c: JUMP
00002d1d: JUMPDEST
00002d1e: DUP3
00002d1f: PUSH2 0xffff
00002d22: AND
00002d23: PUSH32 0x3a1f8a7d4c39f62327e9a798fb5c25bdd080a161bd152f56eb2e2c7d6ad69fb8
00002d44: DUP10
00002d45: DUP9
00002d46: PUSH1 0x40
00002d48: MLOAD
00002d49: PUSH2 0x2d53
00002d4c: SWAP3
00002d4d: SWAP2
00002d4e: SWAP1
00002d4f: PUSH2 0x57a8
00002d52: JUMP
00002d53: JUMPDEST
00002d54: PUSH1 0x40
00002d56: MLOAD
00002d57: DUP1
00002d58: SWAP2
00002d59: SUB
00002d5a: SWAP1
00002d5b: LOG2
00002d5c: JUMPDEST
00002d5d: POP
00002d5e: SWAP8
00002d5f: SWAP7
00002d60: POP
00002d61: POP
00002d62: POP
00002d63: POP
00002d64: POP
00002d65: POP
00002d66: POP
00002d67: JUMP
00002d68: JUMPDEST
00002d69: PUSH1 0x00
00002d6b: DUP3
00002d6c: PUSH2 0x2d77
00002d6f: JUMPI
00002d70: POP
00002d71: PUSH1 0x00
00002d73: PUSH2 0x2262
00002d76: JUMP
00002d77: JUMPDEST
00002d78: DUP3
00002d79: PUSH1 0x00
00002d7b: NOT
00002d7c: EQ
00002d7d: DUP1
00002d7e: ISZERO
00002d7f: PUSH2 0x2d8b
00002d82: JUMPI
00002d83: POP
00002d84: PUSH1 0x01
00002d86: PUSH1 0xff
00002d88: SHL
00002d89: DUP3
00002d8a: EQ
00002d8b: JUMPDEST
00002d8c: ISZERO
00002d8d: PUSH2 0x2da8
00002d90: JUMPI
00002d91: PUSH1 0x40
00002d93: MLOAD
00002d94: PUSH3 0x461bcd
00002d98: PUSH1 0xe5
00002d9a: SHL
00002d9b: DUP2
00002d9c: MSTORE
00002d9d: PUSH1 0x04
00002d9f: ADD
00002da0: PUSH2 0x08ca
00002da3: SWAP1
00002da4: PUSH2 0x5b72
00002da7: JUMP
00002da8: JUMPDEST
00002da9: DUP3
00002daa: DUP3
00002dab: MUL
00002dac: DUP3
00002dad: DUP5
00002dae: DUP3
00002daf: DUP2
00002db0: PUSH2 0x2db5
00002db3: JUMPI
00002db4: INVALID
00002db5: JUMPDEST
00002db6: SDIV
00002db7: EQ
00002db8: PUSH2 0x2af3
00002dbb: JUMPI
00002dbc: PUSH1 0x40
00002dbe: MLOAD
00002dbf: PUSH3 0x461bcd
00002dc3: PUSH1 0xe5
00002dc5: SHL
00002dc6: DUP2
00002dc7: MSTORE
00002dc8: PUSH1 0x04
00002dca: ADD
00002dcb: PUSH2 0x08ca
00002dce: SWAP1
00002dcf: PUSH2 0x5b72
00002dd2: JUMP
00002dd3: JUMPDEST
00002dd4: PUSH1 0x00
00002dd6: DUP2
00002dd7: PUSH2 0x2df2
00002dda: JUMPI
00002ddb: PUSH1 0x40
00002ddd: MLOAD
00002dde: PUSH3 0x461bcd
00002de2: PUSH1 0xe5
00002de4: SHL
00002de5: DUP2
00002de6: MSTORE
00002de7: PUSH1 0x04
00002de9: ADD
00002dea: PUSH2 0x08ca
00002ded: SWAP1
00002dee: PUSH2 0x5cec
00002df1: JUMP
00002df2: JUMPDEST
00002df3: DUP2
00002df4: PUSH1 0x00
00002df6: NOT
00002df7: EQ
00002df8: DUP1
00002df9: ISZERO
00002dfa: PUSH2 0x2e06
00002dfd: JUMPI
00002dfe: POP
00002dff: PUSH1 0x01
00002e01: PUSH1 0xff
00002e03: SHL
00002e04: DUP4
00002e05: EQ
00002e06: JUMPDEST
00002e07: ISZERO
00002e08: PUSH2 0x2e23
00002e0b: JUMPI
00002e0c: PUSH1 0x40
00002e0e: MLOAD
00002e0f: PUSH3 0x461bcd
00002e13: PUSH1 0xe5
00002e15: SHL
00002e16: DUP2
00002e17: MSTORE
00002e18: PUSH1 0x04
00002e1a: ADD
00002e1b: PUSH2 0x08ca
00002e1e: SWAP1
00002e1f: PUSH2 0x5a56
00002e22: JUMP
00002e23: JUMPDEST
00002e24: PUSH1 0x00
00002e26: DUP3
00002e27: DUP5
00002e28: DUP2
00002e29: PUSH2 0x2e2e
00002e2c: JUMPI
00002e2d: INVALID
00002e2e: JUMPDEST
00002e2f: SDIV
00002e30: SWAP5
00002e31: SWAP4
00002e32: POP
00002e33: POP
00002e34: POP
00002e35: POP
00002e36: JUMP
00002e37: JUMPDEST
00002e38: PUSH1 0x00
00002e3a: DUP1
00002e3b: PUSH2 0x2e45
00002e3e: DUP7
00002e3f: PUSH1 0x00
00002e41: PUSH2 0x3fc0
00002e44: JUMP
00002e45: JUMPDEST
00002e46: SWAP1
00002e47: POP
00002e48: PUSH1 0x00
00002e4a: PUSH2 0x2e52
00002e4d: DUP6
00002e4e: PUSH2 0x40a1
00002e51: JUMP
00002e52: JUMPDEST
00002e53: SWAP1
00002e54: POP
00002e55: PUSH1 0x00
00002e57: PUSH2 0x2ecc
00002e5a: PUSH2 0x2ec7
00002e5d: DUP9
00002e5e: PUSH2 0x2ebb
00002e61: DUP12
00002e62: PUSH1 0x20
00002e64: ADD
00002e65: MLOAD
00002e66: PUSH1 0x01
00002e68: PUSH1 0x01
00002e6a: PUSH1 0x80
00002e6c: SHL
00002e6d: SUB
00002e6e: AND
00002e6f: PUSH2 0x2ebb
00002e72: DUP11
00002e73: PUSH2 0x2e84
00002e76: JUMPI
00002e77: PUSH8 0x0de0b6b3a7640000
00002e80: PUSH2 0x2e8a
00002e83: JUMP
00002e84: JUMPDEST
00002e85: DUP14
00002e86: PUSH1 0x60
00002e88: ADD
00002e89: MLOAD
00002e8a: JUMPDEST
00002e8b: PUSH1 0x01
00002e8d: PUSH1 0x01
00002e8f: PUSH1 0x80
00002e91: SHL
00002e92: SUB
00002e93: AND
00002e94: PUSH2 0x2eaf
00002e97: DUP10
00002e98: PUSH1 0x01
00002e9a: PUSH1 0x01
00002e9c: PUSH1 0x80
00002e9e: SHL
00002e9f: SUB
00002ea0: AND
00002ea1: DUP12
00002ea2: PUSH2 0x40c2
00002ea5: SWAP1
00002ea6: SWAP2
00002ea7: SWAP1
00002ea8: PUSH4 0xffffffff
00002ead: AND
00002eae: JUMP
00002eaf: JUMPDEST
00002eb0: SWAP1
00002eb1: PUSH4 0xffffffff
00002eb6: PUSH2 0x40c2
00002eb9: AND
00002eba: JUMP
00002ebb: JUMPDEST
00002ebc: SWAP1
00002ebd: PUSH4 0xffffffff
00002ec2: PUSH2 0x40fc
00002ec5: AND
00002ec6: JUMP
00002ec7: JUMPDEST
00002ec8: PUSH2 0x2a84
00002ecb: JUMP
00002ecc: JUMPDEST
00002ecd: PUSH1 0x01
00002ecf: PUSH1 0x01
00002ed1: PUSH1 0x80
00002ed3: SHL
00002ed4: SUB
00002ed5: AND
00002ed6: SWAP1
00002ed7: POP
00002ed8: PUSH1 0x00
00002eda: DUP7
00002edb: SGT
00002edc: PUSH2 0x2eed
00002edf: JUMPI
00002ee0: PUSH2 0x2ee8
00002ee3: DUP2
00002ee4: PUSH2 0x361b
00002ee7: JUMP
00002ee8: JUMPDEST
00002ee9: PUSH2 0x2eef
00002eec: JUMP
00002eed: JUMPDEST
00002eee: DUP1
00002eef: JUMPDEST
00002ef0: SWAP4
00002ef1: POP
00002ef2: POP
00002ef3: POP
00002ef4: POP
00002ef5: JUMPDEST
00002ef6: SWAP5
00002ef7: SWAP4
00002ef8: POP
00002ef9: POP
00002efa: POP
00002efb: POP
00002efc: JUMP
00002efd: JUMPDEST
00002efe: PUSH1 0x00
00002f00: PUSH1 0x3c
00002f02: DUP2
00002f03: PUSH1 0x03
00002f05: JUMPDEST
00002f06: DUP2
00002f07: MSTORE
00002f08: PUSH1 0x20
00002f0a: DUP2
00002f0b: ADD
00002f0c: SWAP2
00002f0d: SWAP1
00002f0e: SWAP2
00002f0f: MSTORE
00002f10: PUSH1 0x40
00002f12: ADD
00002f13: PUSH1 0x00
00002f15: KECCAK256
00002f16: SLOAD
00002f17: PUSH1 0x01
00002f19: PUSH1 0x01
00002f1b: PUSH1 0xa0
00002f1d: SHL
00002f1e: SUB
00002f1f: AND
00002f20: CALLER
00002f21: EQ
00002f22: SWAP2
00002f23: SWAP1
00002f24: POP
00002f25: JUMP
00002f26: JUMPDEST
00002f27: PUSH1 0x01
00002f29: PUSH1 0x01
00002f2b: PUSH1 0x80
00002f2d: SHL
00002f2e: SUB
00002f2f: CALLVALUE
00002f30: GT
00002f31: ISZERO
00002f32: PUSH2 0x2f4d
00002f35: JUMPI
00002f36: PUSH1 0x40
00002f38: MLOAD
00002f39: PUSH3 0x461bcd
00002f3d: PUSH1 0xe5
00002f3f: SHL
00002f40: DUP2
00002f41: MSTORE
00002f42: PUSH1 0x04
00002f44: ADD
00002f45: PUSH2 0x08ca
00002f48: SWAP1
00002f49: PUSH2 0x59ae
00002f4c: JUMP
00002f4d: JUMPDEST
00002f4e: PUSH1 0x00
00002f50: DUP1
00002f51: SLOAD
00002f52: PUSH1 0x40
00002f54: DUP1
00002f55: MLOAD
00002f56: PUSH4 0x0d0e30db
00002f5b: PUSH1 0xe4
00002f5d: SHL
00002f5e: DUP2
00002f5f: MSTORE
00002f60: SWAP1
00002f61: MLOAD
00002f62: PUSH1 0x01
00002f64: PUSH1 0x01
00002f66: PUSH1 0xa0
00002f68: SHL
00002f69: SUB
00002f6a: SWAP1
00002f6b: SWAP3
00002f6c: AND
00002f6d: SWAP3
00002f6e: PUSH4 0xd0e30db0
00002f73: SWAP3
00002f74: CALLVALUE
00002f75: SWAP3
00002f76: PUSH1 0x04
00002f78: DUP1
00002f79: DUP3
00002f7a: ADD
00002f7b: SWAP4
00002f7c: SWAP3
00002f7d: SWAP2
00002f7e: DUP3
00002f7f: SWAP1
00002f80: SUB
00002f81: ADD
00002f82: DUP2
00002f83: DUP6
00002f84: DUP9
00002f85: DUP1
00002f86: EXTCODESIZE
00002f87: ISZERO
00002f88: DUP1
00002f89: ISZERO
00002f8a: PUSH2 0x2f92
00002f8d: JUMPI
00002f8e: PUSH1 0x00
00002f90: DUP1
00002f91: REVERT
00002f92: JUMPDEST
00002f93: POP
00002f94: GAS
00002f95: CALL
00002f96: ISZERO
00002f97: DUP1
00002f98: ISZERO
00002f99: PUSH2 0x2fa6
00002f9c: JUMPI
00002f9d: RETURNDATASIZE
00002f9e: PUSH1 0x00
00002fa0: DUP1
00002fa1: RETURNDATACOPY
00002fa2: RETURNDATASIZE
00002fa3: PUSH1 0x00
00002fa5: REVERT
00002fa6: JUMPDEST
00002fa7: POP
00002fa8: POP
00002fa9: POP
00002faa: POP
00002fab: PUSH1 0x01
00002fad: PUSH1 0x01
00002faf: PUSH1 0xa0
00002fb1: SHL
00002fb2: SUB
00002fb3: DUP3
00002fb4: AND
00002fb5: PUSH1 0x00
00002fb7: SWAP1
00002fb8: DUP2
00002fb9: MSTORE
00002fba: PUSH1 0x00
00002fbc: DUP1
00002fbd: MLOAD
00002fbe: PUSH1 0x20
00002fc0: PUSH2 0x5f52
00002fc3: DUP4
00002fc4: CODECOPY
00002fc5: DUP2
00002fc6: MLOAD
00002fc7: SWAP2
00002fc8: MSTORE
00002fc9: PUSH1 0x20
00002fcb: MSTORE
00002fcc: PUSH1 0x40
00002fce: SWAP1
00002fcf: KECCAK256
00002fd0: SLOAD
00002fd1: PUSH2 0x2fe4
00002fd4: SWAP2
00002fd5: POP
00002fd6: CALLVALUE
00002fd7: PUSH1 0x01
00002fd9: PUSH1 0x01
00002fdb: PUSH1 0x80
00002fdd: SHL
00002fde: SUB
00002fdf: AND
00002fe0: PUSH2 0x2aad
00002fe3: JUMP
00002fe4: JUMPDEST
00002fe5: PUSH1 0x01
00002fe7: PUSH1 0x01
00002fe9: PUSH1 0xa0
00002feb: SHL
00002fec: SUB
00002fed: DUP3
00002fee: AND
00002fef: PUSH1 0x00
00002ff1: SWAP1
00002ff2: DUP2
00002ff3: MSTORE
00002ff4: PUSH1 0x00
00002ff6: DUP1
00002ff7: MLOAD
00002ff8: PUSH1 0x20
00002ffa: PUSH2 0x5f52
00002ffd: DUP4
00002ffe: CODECOPY
00002fff: DUP2
00003000: MLOAD
00003001: SWAP2
00003002: MSTORE
00003003: PUSH1 0x20
00003005: MSTORE
00003006: PUSH1 0x40
00003008: DUP1
00003009: DUP3
0000300a: KECCAK256
0000300b: SWAP3
0000300c: SWAP1
0000300d: SWAP3
0000300e: SSTORE
0000300f: SWAP1
00003010: MLOAD
00003011: PUSH32 0x1ebdf9946bb1531759f2100f77d6319f8f0a70663c87f0e3c4976cf417c6ec07
00003032: SWAP1
00003033: PUSH2 0x303f
00003036: SWAP1
00003037: DUP5
00003038: SWAP1
00003039: CALLVALUE
0000303a: SWAP1
0000303b: PUSH2 0x5853
0000303e: JUMP
0000303f: JUMPDEST
00003040: PUSH1 0x40
00003042: MLOAD
00003043: DUP1
00003044: SWAP2
00003045: SUB
00003046: SWAP1
00003047: LOG2
00003048: POP
00003049: JUMP
0000304a: JUMPDEST
0000304b: PUSH1 0x01
0000304d: PUSH1 0x00
0000304f: MSTORE
00003050: PUSH1 0x3c
00003052: PUSH1 0x20
00003054: MSTORE
00003055: PUSH32 0xa3f0af13bbc24f9a599303045bb90dfcdb939abd7adcca60700cc08fa292f791
00003076: SLOAD
00003077: PUSH1 0x01
00003079: PUSH1 0x01
0000307b: PUSH1 0xa0
0000307d: SHL
0000307e: SUB
0000307f: AND
00003080: SWAP1
00003081: JUMP
00003082: JUMPDEST
00003083: PUSH1 0x00
00003085: DUP3
00003086: DUP3
00003087: ADD
00003088: PUSH1 0x01
0000308a: PUSH1 0x01
0000308c: PUSH1 0x80
0000308e: SHL
0000308f: SUB
00003090: DUP1
00003091: DUP6
00003092: AND
00003093: SWAP1
00003094: DUP3
00003095: AND
00003096: LT
00003097: ISZERO
00003098: PUSH2 0x2af3
0000309b: JUMPI
0000309c: PUSH1 0x40
0000309e: MLOAD
0000309f: PUSH3 0x461bcd
000030a3: PUSH1 0xe5
000030a5: SHL
000030a6: DUP2
000030a7: MSTORE
000030a8: PUSH1 0x04
000030aa: ADD
000030ab: PUSH2 0x08ca
000030ae: SWAP1
000030af: PUSH2 0x5909
000030b2: JUMP
000030b3: JUMPDEST
000030b4: PUSH1 0x00
000030b6: DUP1
000030b7: PUSH2 0x30c0
000030ba: DUP5
000030bb: DUP5
000030bc: PUSH2 0x4124
000030bf: JUMP
000030c0: JUMPDEST
000030c1: SWAP1
000030c2: POP
000030c3: PUSH1 0x00
000030c5: DUP2
000030c6: SLT
000030c7: ISZERO
000030c8: PUSH2 0x2af3
000030cb: JUMPI
000030cc: PUSH1 0x40
000030ce: MLOAD
000030cf: PUSH3 0x461bcd
000030d3: PUSH1 0xe5
000030d5: SHL
000030d6: DUP2
000030d7: MSTORE
000030d8: PUSH1 0x04
000030da: ADD
000030db: PUSH2 0x08ca
000030de: SWAP1
000030df: PUSH2 0x5cd1
000030e2: JUMP
000030e3: JUMPDEST
000030e4: ADDRESS
000030e5: EXTCODESIZE
000030e6: ISZERO
000030e7: SWAP1
000030e8: JUMP
000030e9: JUMPDEST
000030ea: PUSH2 0x30f1
000030ed: PUSH2 0x46dd
000030f0: JUMP
000030f1: JUMPDEST
000030f2: PUSH2 0x30fa
000030f5: DUP4
000030f6: PUSH2 0x24ab
000030f9: JUMP
000030fa: JUMPDEST
000030fb: PUSH2 0x3116
000030fe: JUMPI
000030ff: PUSH1 0x40
00003101: MLOAD
00003102: PUSH3 0x461bcd
00003106: PUSH1 0xe5
00003108: SHL
00003109: DUP2
0000310a: MSTORE
0000310b: PUSH1 0x04
0000310d: ADD
0000310e: PUSH2 0x08ca
00003111: SWAP1
00003112: PUSH2 0x5aec
00003115: JUMP
00003116: JUMPDEST
00003117: PUSH2 0x311f
0000311a: DUP3
0000311b: PUSH2 0x24ab
0000311e: JUMP
0000311f: JUMPDEST
00003120: PUSH2 0x313b
00003123: JUMPI
00003124: PUSH1 0x40
00003126: MLOAD
00003127: PUSH3 0x461bcd
0000312b: PUSH1 0xe5
0000312d: SHL
0000312e: DUP2
0000312f: MSTORE
00003130: PUSH1 0x04
00003132: ADD
00003133: PUSH2 0x08ca
00003136: SWAP1
00003137: PUSH2 0x5aec
0000313a: JUMP
0000313b: JUMPDEST
0000313c: DUP2
0000313d: PUSH2 0xffff
00003140: AND
00003141: DUP4
00003142: PUSH2 0xffff
00003145: AND
00003146: EQ
00003147: ISZERO
00003148: PUSH2 0x3163
0000314b: JUMPI
0000314c: PUSH1 0x40
0000314e: MLOAD
0000314f: PUSH3 0x461bcd
00003153: PUSH1 0xe5
00003155: SHL
00003156: DUP2
00003157: MSTORE
00003158: PUSH1 0x04
0000315a: ADD
0000315b: PUSH2 0x08ca
0000315e: SWAP1
0000315f: PUSH2 0x5aec
00003162: JUMP
00003163: JUMPDEST
00003164: PUSH2 0x316b
00003167: PUSH2 0x4688
0000316a: JUMP
0000316b: JUMPDEST
0000316c: POP
0000316d: PUSH2 0xffff
00003170: DUP4
00003171: AND
00003172: PUSH1 0x00
00003174: SWAP1
00003175: DUP2
00003176: MSTORE
00003177: PUSH1 0x05
00003179: PUSH1 0x20
0000317b: SWAP1
0000317c: DUP2
0000317d: MSTORE
0000317e: PUSH1 0x40
00003180: DUP1
00003181: DUP4
00003182: KECCAK256
00003183: DUP4
00003184: DUP1
00003185: MSTORE
00003186: DUP3
00003187: MSTORE
00003188: SWAP2
00003189: DUP3
0000318a: SWAP1
0000318b: KECCAK256
0000318c: DUP3
0000318d: MLOAD
0000318e: PUSH1 0x80
00003190: DUP2
00003191: ADD
00003192: DUP5
00003193: MSTORE
00003194: DUP2
00003195: SLOAD
00003196: PUSH1 0x01
00003198: PUSH1 0x01
0000319a: PUSH1 0xa0
0000319c: SHL
0000319d: SUB
0000319e: AND
0000319f: DUP2
000031a0: MSTORE
000031a1: PUSH1 0x01
000031a3: DUP3
000031a4: ADD
000031a5: SLOAD
000031a6: PUSH1 0x01
000031a8: PUSH1 0x01
000031aa: PUSH1 0x80
000031ac: SHL
000031ad: SUB
000031ae: DUP1
000031af: DUP3
000031b0: AND
000031b1: SWAP5
000031b2: DUP4
000031b3: ADD
000031b4: SWAP5
000031b5: SWAP1
000031b6: SWAP5
000031b7: MSTORE
000031b8: PUSH1 0x01
000031ba: PUSH1 0x80
000031bc: SHL
000031bd: SWAP1
000031be: DIV
000031bf: PUSH1 0xff
000031c1: AND
000031c2: ISZERO
000031c3: ISZERO
000031c4: SWAP4
000031c5: DUP2
000031c6: ADD
000031c7: SWAP4
000031c8: SWAP1
000031c9: SWAP4
000031ca: MSTORE
000031cb: PUSH1 0x02
000031cd: ADD
000031ce: SLOAD
000031cf: AND
000031d0: PUSH1 0x60
000031d2: DUP3
000031d3: ADD
000031d4: MSTORE
000031d5: PUSH2 0x31dc
000031d8: PUSH2 0x4688
000031db: JUMP
000031dc: JUMPDEST
000031dd: PUSH2 0xffff
000031e0: DUP5
000031e1: AND
000031e2: ISZERO
000031e3: PUSH2 0x3250
000031e6: JUMPI
000031e7: POP
000031e8: PUSH2 0xffff
000031eb: DUP4
000031ec: AND
000031ed: PUSH1 0x00
000031ef: SWAP1
000031f0: DUP2
000031f1: MSTORE
000031f2: PUSH1 0x05
000031f4: PUSH1 0x20
000031f6: SWAP1
000031f7: DUP2
000031f8: MSTORE
000031f9: PUSH1 0x40
000031fb: DUP1
000031fc: DUP4
000031fd: KECCAK256
000031fe: DUP4
000031ff: DUP1
00003200: MSTORE
00003201: DUP3
00003202: MSTORE
00003203: SWAP2
00003204: DUP3
00003205: SWAP1
00003206: KECCAK256
00003207: DUP3
00003208: MLOAD
00003209: PUSH1 0x80
0000320b: DUP2
0000320c: ADD
0000320d: DUP5
0000320e: MSTORE
0000320f: DUP2
00003210: SLOAD
00003211: PUSH1 0x01
00003213: PUSH1 0x01
00003215: PUSH1 0xa0
00003217: SHL
00003218: SUB
00003219: AND
0000321a: DUP2
0000321b: MSTORE
0000321c: PUSH1 0x01
0000321e: DUP3
0000321f: ADD
00003220: SLOAD
00003221: PUSH1 0x01
00003223: PUSH1 0x01
00003225: PUSH1 0x80
00003227: SHL
00003228: SUB
00003229: DUP1
0000322a: DUP3
0000322b: AND
0000322c: SWAP5
0000322d: DUP4
0000322e: ADD
0000322f: SWAP5
00003230: SWAP1
00003231: SWAP5
00003232: MSTORE
00003233: PUSH1 0x01
00003235: PUSH1 0x80
00003237: SHL
00003238: SWAP1
00003239: DIV
0000323a: PUSH1 0xff
0000323c: AND
0000323d: ISZERO
0000323e: ISZERO
0000323f: SWAP4
00003240: DUP2
00003241: ADD
00003242: SWAP4
00003243: SWAP1
00003244: SWAP4
00003245: MSTORE
00003246: PUSH1 0x02
00003248: ADD
00003249: SLOAD
0000324a: AND
0000324b: PUSH1 0x60
0000324d: DUP3
0000324e: ADD
0000324f: MSTORE
00003250: JUMPDEST
00003251: PUSH1 0x00
00003253: PUSH2 0x325d
00003256: DUP4
00003257: DUP4
00003258: DUP8
00003259: PUSH2 0x416a
0000325c: JUMP
0000325d: JUMPDEST
0000325e: PUSH1 0x40
00003260: DUP1
00003261: MLOAD
00003262: PUSH1 0xc0
00003264: DUP2
00003265: ADD
00003266: DUP3
00003267: MSTORE
00003268: SWAP2
00003269: DUP3
0000326a: MSTORE
0000326b: PUSH2 0xffff
0000326e: SWAP8
0000326f: DUP9
00003270: AND
00003271: PUSH1 0x20
00003273: DUP1
00003274: DUP5
00003275: ADD
00003276: DUP3
00003277: SWAP1
00003278: MSTORE
00003279: SWAP8
0000327a: SWAP1
0000327b: SWAP9
0000327c: AND
0000327d: DUP3
0000327e: DUP3
0000327f: ADD
00003280: DUP2
00003281: SWAP1
00003282: MSTORE
00003283: PUSH1 0x00
00003285: SWAP9
00003286: DUP10
00003287: MSTORE
00003288: PUSH1 0x02
0000328a: DUP1
0000328b: DUP10
0000328c: MSTORE
0000328d: DUP3
0000328e: DUP11
0000328f: KECCAK256
00003290: SLOAD
00003291: PUSH1 0x60
00003293: DUP6
00003294: ADD
00003295: MSTORE
00003296: SWAP1
00003297: DUP10
00003298: MSTORE
00003299: SWAP1
0000329a: SWAP7
0000329b: MSTORE
0000329c: SWAP5
0000329d: SWAP1
0000329e: SWAP6
0000329f: KECCAK256
000032a0: SLOAD
000032a1: PUSH1 0x80
000032a3: DUP6
000032a4: ADD
000032a5: MSTORE
000032a6: POP
000032a7: PUSH1 0xa0
000032a9: DUP4
000032aa: ADD
000032ab: MSTORE
000032ac: POP
000032ad: SWAP2
000032ae: SWAP1
000032af: POP
000032b0: JUMP
000032b1: JUMPDEST
000032b2: PUSH1 0x00
000032b4: DUP1
000032b5: DUP1
000032b6: PUSH1 0x01
000032b8: PUSH1 0x01
000032ba: PUSH1 0xa0
000032bc: SHL
000032bd: SUB
000032be: DUP7
000032bf: AND
000032c0: CALLER
000032c1: EQ
000032c2: ISZERO
000032c3: PUSH2 0x32de
000032c6: JUMPI
000032c7: PUSH1 0x40
000032c9: MLOAD
000032ca: PUSH3 0x461bcd
000032ce: PUSH1 0xe5
000032d0: SHL
000032d1: DUP2
000032d2: MSTORE
000032d3: PUSH1 0x04
000032d5: ADD
000032d6: PUSH2 0x08ca
000032d9: SWAP1
000032da: PUSH2 0x5a02
000032dd: JUMP
000032de: JUMPDEST
000032df: PUSH1 0x01
000032e1: PUSH1 0x01
000032e3: PUSH1 0x80
000032e5: SHL
000032e6: SUB
000032e7: DUP6
000032e8: AND
000032e9: PUSH2 0x32fa
000032ec: JUMPI
000032ed: POP
000032ee: PUSH1 0x00
000032f0: SWAP2
000032f1: POP
000032f2: DUP2
000032f3: SWAP1
000032f4: POP
000032f5: DUP1
000032f6: PUSH2 0x34f3
000032f9: JUMP
000032fa: JUMPDEST
000032fb: PUSH2 0x3302
000032fe: PUSH2 0x4720
00003301: JUMP
00003302: JUMPDEST
00003303: PUSH2 0x3315
00003306: DUP8
00003307: DUP7
00003308: PUSH1 0x20
0000330a: ADD
0000330b: MLOAD
0000330c: DUP8
0000330d: PUSH1 0x40
0000330f: ADD
00003310: MLOAD
00003311: PUSH2 0x3a60
00003314: JUMP
00003315: JUMPDEST
00003316: PUSH1 0x20
00003318: DUP1
00003319: DUP8
0000331a: ADD
0000331b: MLOAD
0000331c: PUSH2 0xffff
0000331f: SWAP1
00003320: DUP2
00003321: AND
00003322: PUSH1 0x00
00003324: SWAP1
00003325: DUP2
00003326: MSTORE
00003327: PUSH1 0x06
00003329: DUP1
0000332a: DUP5
0000332b: MSTORE
0000332c: PUSH1 0x40
0000332e: DUP1
0000332f: DUP4
00003330: KECCAK256
00003331: PUSH1 0x01
00003333: PUSH1 0x01
00003335: PUSH1 0xa0
00003337: SHL
00003338: SUB
00003339: DUP15
0000333a: AND
0000333b: DUP1
0000333c: DUP6
0000333d: MSTORE
0000333e: SWAP1
0000333f: DUP7
00003340: MSTORE
00003341: DUP2
00003342: DUP5
00003343: KECCAK256
00003344: SLOAD
00003345: DUP3
00003346: DUP14
00003347: ADD
00003348: MLOAD
00003349: SWAP1
0000334a: SWAP6
0000334b: AND
0000334c: DUP5
0000334d: MSTORE
0000334e: SWAP2
0000334f: DUP6
00003350: MSTORE
00003351: DUP1
00003352: DUP4
00003353: KECCAK256
00003354: SWAP2
00003355: DUP4
00003356: MSTORE
00003357: SWAP4
00003358: MSTORE
00003359: SWAP2
0000335a: SWAP1
0000335b: SWAP2
0000335c: KECCAK256
0000335d: SLOAD
0000335e: SWAP2
0000335f: SWAP3
00003360: POP
00003361: SWAP1
00003362: PUSH2 0x3373
00003365: PUSH1 0x01
00003367: PUSH1 0x01
00003369: PUSH1 0x80
0000336b: SHL
0000336c: SUB
0000336d: DUP10
0000336e: AND
0000336f: PUSH2 0x361b
00003372: JUMP
00003373: JUMPDEST
00003374: DUP3
00003375: SGT
00003376: ISZERO
00003377: PUSH2 0x3392
0000337a: JUMPI
0000337b: PUSH1 0x40
0000337d: MLOAD
0000337e: PUSH3 0x461bcd
00003382: PUSH1 0xe5
00003384: SHL
00003385: DUP2
00003386: MSTORE
00003387: PUSH1 0x04
00003389: ADD
0000338a: PUSH2 0x08ca
0000338d: SWAP1
0000338e: PUSH2 0x5d21
00003391: JUMP
00003392: JUMPDEST
00003393: PUSH2 0x339a
00003396: PUSH2 0x474f
00003399: JUMP
0000339a: JUMPDEST
0000339b: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e
000033b0: PUSH4 0xfe51ab13
000033b5: DUP12
000033b6: DUP5
000033b7: DUP13
000033b8: DUP9
000033b9: DUP14
000033ba: PUSH2 0x33c1
000033bd: PUSH2 0x304a
000033c0: JUMP
000033c1: JUMPDEST
000033c2: PUSH1 0x40
000033c4: MLOAD
000033c5: DUP8
000033c6: PUSH4 0xffffffff
000033cb: AND
000033cc: PUSH1 0xe0
000033ce: SHL
000033cf: DUP2
000033d0: MSTORE
000033d1: PUSH1 0x04
000033d3: ADD
000033d4: PUSH2 0x33e2
000033d7: SWAP7
000033d8: SWAP6
000033d9: SWAP5
000033da: SWAP4
000033db: SWAP3
000033dc: SWAP2
000033dd: SWAP1
000033de: PUSH2 0x574f
000033e1: JUMP
000033e2: JUMPDEST
000033e3: PUSH1 0x80
000033e5: PUSH1 0x40
000033e7: MLOAD
000033e8: DUP1
000033e9: DUP4
000033ea: SUB
000033eb: DUP2
000033ec: DUP7
000033ed: DUP1
000033ee: EXTCODESIZE
000033ef: ISZERO
000033f0: DUP1
000033f1: ISZERO
000033f2: PUSH2 0x33fa
000033f5: JUMPI
000033f6: PUSH1 0x00
000033f8: DUP1
000033f9: REVERT
000033fa: JUMPDEST
000033fb: POP
000033fc: GAS
000033fd: DELEGATECALL
000033fe: ISZERO
000033ff: DUP1
00003400: ISZERO
00003401: PUSH2 0x340e
00003404: JUMPI
00003405: RETURNDATASIZE
00003406: PUSH1 0x00
00003408: DUP1
00003409: RETURNDATACOPY
0000340a: RETURNDATASIZE
0000340b: PUSH1 0x00
0000340d: REVERT
0000340e: JUMPDEST
0000340f: POP
00003410: POP
00003411: POP
00003412: POP
00003413: PUSH1 0x40
00003415: MLOAD
00003416: RETURNDATASIZE
00003417: PUSH1 0x1f
00003419: NOT
0000341a: PUSH1 0x1f
0000341c: DUP3
0000341d: ADD
0000341e: AND
0000341f: DUP3
00003420: ADD
00003421: DUP1
00003422: PUSH1 0x40
00003424: MSTORE
00003425: POP
00003426: DUP2
00003427: ADD
00003428: SWAP1
00003429: PUSH2 0x3432
0000342c: SWAP2
0000342d: SWAP1
0000342e: PUSH2 0x512a
00003431: JUMP
00003432: JUMPDEST
00003433: SWAP1
00003434: POP
00003435: DUP1
00003436: PUSH1 0x60
00003438: ADD
00003439: MLOAD
0000343a: DUP3
0000343b: EQ
0000343c: PUSH2 0x346e
0000343f: JUMPI
00003440: PUSH1 0x60
00003442: DUP2
00003443: ADD
00003444: MLOAD
00003445: PUSH1 0x40
00003447: DUP1
00003448: DUP11
00003449: ADD
0000344a: MLOAD
0000344b: PUSH2 0xffff
0000344e: AND
0000344f: PUSH1 0x00
00003451: SWAP1
00003452: DUP2
00003453: MSTORE
00003454: PUSH1 0x06
00003456: PUSH1 0x20
00003458: SWAP1
00003459: DUP2
0000345a: MSTORE
0000345b: DUP3
0000345c: DUP3
0000345d: KECCAK256
0000345e: PUSH1 0x01
00003460: PUSH1 0x01
00003462: PUSH1 0xa0
00003464: SHL
00003465: SUB
00003466: DUP16
00003467: AND
00003468: DUP4
00003469: MSTORE
0000346a: SWAP1
0000346b: MSTORE
0000346c: KECCAK256
0000346d: SSTORE
0000346e: JUMPDEST
0000346f: PUSH1 0x20
00003471: DUP2
00003472: ADD
00003473: MLOAD
00003474: PUSH1 0x01
00003476: PUSH1 0x01
00003478: PUSH1 0x80
0000347a: SHL
0000347b: SUB
0000347c: AND
0000347d: ISZERO
0000347e: PUSH2 0x34ca
00003481: JUMPI
00003482: PUSH1 0x20
00003484: DUP2
00003485: ADD
00003486: MLOAD
00003487: PUSH2 0x34a0
0000348a: SWAP1
0000348b: DUP5
0000348c: SWAP1
0000348d: PUSH1 0x01
0000348f: PUSH1 0x01
00003491: PUSH1 0x80
00003493: SHL
00003494: SUB
00003495: AND
00003496: PUSH4 0xffffffff
0000349b: PUSH2 0x2aad
0000349e: AND
0000349f: JUMP
000034a0: JUMPDEST
000034a1: PUSH1 0x20
000034a3: DUP1
000034a4: DUP11
000034a5: ADD
000034a6: MLOAD
000034a7: PUSH2 0xffff
000034aa: AND
000034ab: PUSH1 0x00
000034ad: SWAP1
000034ae: DUP2
000034af: MSTORE
000034b0: PUSH1 0x06
000034b2: DUP3
000034b3: MSTORE
000034b4: PUSH1 0x40
000034b6: DUP1
000034b7: DUP3
000034b8: KECCAK256
000034b9: PUSH1 0x01
000034bb: PUSH1 0x01
000034bd: PUSH1 0xa0
000034bf: SHL
000034c0: SUB
000034c1: DUP16
000034c2: AND
000034c3: DUP4
000034c4: MSTORE
000034c5: SWAP1
000034c6: SWAP3
000034c7: MSTORE
000034c8: KECCAK256
000034c9: SSTORE
000034ca: JUMPDEST
000034cb: DUP1
000034cc: MLOAD
000034cd: PUSH1 0x00
000034cf: SGT
000034d0: ISZERO
000034d1: PUSH2 0x34d9
000034d4: JUMPI
000034d5: PUSH1 0x00
000034d7: DUP1
000034d8: REVERT
000034d9: JUMPDEST
000034da: DUP1
000034db: PUSH1 0x20
000034dd: ADD
000034de: MLOAD
000034df: DUP2
000034e0: PUSH1 0x00
000034e2: ADD
000034e3: MLOAD
000034e4: DUP3
000034e5: PUSH1 0x40
000034e7: ADD
000034e8: MLOAD
000034e9: SWAP7
000034ea: POP
000034eb: SWAP7
000034ec: POP
000034ed: SWAP7
000034ee: POP
000034ef: POP
000034f0: POP
000034f1: POP
000034f2: POP
000034f3: JUMPDEST
000034f4: SWAP4
000034f5: POP
000034f6: SWAP4
000034f7: POP
000034f8: SWAP4
000034f9: SWAP1
000034fa: POP
000034fb: JUMP
000034fc: JUMPDEST
000034fd: PUSH2 0xffff
00003500: DUP3
00003501: AND
00003502: PUSH1 0x00
00003504: SWAP1
00003505: DUP2
00003506: MSTORE
00003507: PUSH1 0x01
00003509: PUSH1 0x20
0000350b: MSTORE
0000350c: PUSH1 0x40
0000350e: DUP2
0000350f: KECCAK256
00003510: SLOAD
00003511: PUSH1 0x01
00003513: PUSH1 0x01
00003515: PUSH1 0xa0
00003517: SHL
00003518: SUB
00003519: AND
0000351a: SWAP1
0000351b: DUP3
0000351c: SGT
0000351d: ISZERO
0000351e: PUSH2 0x35ff
00003521: JUMPI
00003522: PUSH2 0x3529
00003525: PUSH2 0x4789
00003528: JUMP
00003529: JUMPDEST
0000352a: POP
0000352b: PUSH1 0x01
0000352d: PUSH1 0x01
0000352f: PUSH1 0xa0
00003531: SHL
00003532: SUB
00003533: DUP2
00003534: AND
00003535: PUSH1 0x00
00003537: SWAP1
00003538: DUP2
00003539: MSTORE
0000353a: PUSH1 0x04
0000353c: PUSH1 0x20
0000353e: SWAP1
0000353f: DUP2
00003540: MSTORE
00003541: PUSH1 0x40
00003543: SWAP2
00003544: DUP3
00003545: SWAP1
00003546: KECCAK256
00003547: DUP3
00003548: MLOAD
00003549: DUP1
0000354a: DUP5
0000354b: ADD
0000354c: SWAP1
0000354d: SWAP4
0000354e: MSTORE
0000354f: SLOAD
00003550: PUSH1 0xff
00003552: DUP1
00003553: DUP3
00003554: AND
00003555: ISZERO
00003556: ISZERO
00003557: DUP5
00003558: MSTORE
00003559: PUSH2 0x0100
0000355c: SWAP1
0000355d: SWAP2
0000355e: DIV
0000355f: AND
00003560: ISZERO
00003561: DUP1
00003562: ISZERO
00003563: SWAP2
00003564: DUP4
00003565: ADD
00003566: SWAP2
00003567: SWAP1
00003568: SWAP2
00003569: MSTORE
0000356a: PUSH2 0x35eb
0000356d: JUMPI
0000356e: PUSH2 0xffff
00003571: DUP5
00003572: AND
00003573: PUSH1 0x00
00003575: SWAP1
00003576: DUP2
00003577: MSTORE
00003578: PUSH1 0x06
0000357a: PUSH1 0x20
0000357c: SWAP1
0000357d: DUP2
0000357e: MSTORE
0000357f: PUSH1 0x40
00003581: DUP1
00003582: DUP4
00003583: KECCAK256
00003584: CALLER
00003585: DUP5
00003586: MSTORE
00003587: SWAP1
00003588: SWAP2
00003589: MSTORE
0000358a: SWAP1
0000358b: KECCAK256
0000358c: SLOAD
0000358d: PUSH2 0x359c
00003590: SWAP1
00003591: DUP5
00003592: PUSH4 0xffffffff
00003597: PUSH2 0x30b3
0000359a: AND
0000359b: JUMP
0000359c: JUMPDEST
0000359d: PUSH2 0xffff
000035a0: DUP6
000035a1: AND
000035a2: PUSH1 0x00
000035a4: SWAP1
000035a5: DUP2
000035a6: MSTORE
000035a7: PUSH1 0x06
000035a9: PUSH1 0x20
000035ab: SWAP1
000035ac: DUP2
000035ad: MSTORE
000035ae: PUSH1 0x40
000035b0: DUP1
000035b1: DUP4
000035b2: KECCAK256
000035b3: CALLER
000035b4: DUP1
000035b5: DUP6
000035b6: MSTORE
000035b7: SWAP3
000035b8: MSTORE
000035b9: DUP3
000035ba: KECCAK256
000035bb: SWAP3
000035bc: SWAP1
000035bd: SWAP3
000035be: SSTORE
000035bf: SWAP1
000035c0: PUSH2 0x35c8
000035c3: SWAP1
000035c4: PUSH2 0x41c1
000035c7: JUMP
000035c8: JUMPDEST
000035c9: SLT
000035ca: ISZERO
000035cb: PUSH2 0x35e6
000035ce: JUMPI
000035cf: PUSH1 0x40
000035d1: MLOAD
000035d2: PUSH3 0x461bcd
000035d6: PUSH1 0xe5
000035d8: SHL
000035d9: DUP2
000035da: MSTORE
000035db: PUSH1 0x04
000035dd: ADD
000035de: PUSH2 0x08ca
000035e1: SWAP1
000035e2: PUSH2 0x59e6
000035e5: JUMP
000035e6: JUMPDEST
000035e7: PUSH2 0x35f9
000035ea: JUMP
000035eb: JUMPDEST
000035ec: PUSH2 0x35f7
000035ef: DUP3
000035f0: CALLER
000035f1: DUP6
000035f2: DUP5
000035f3: PUSH2 0x4248
000035f6: JUMP
000035f7: JUMPDEST
000035f8: POP
000035f9: JUMPDEST
000035fa: POP
000035fb: PUSH2 0x09cb
000035fe: JUMP
000035ff: JUMPDEST
00003600: PUSH1 0x00
00003602: DUP3
00003603: SLT
00003604: ISZERO
00003605: PUSH2 0x09cb
00003608: JUMPI
00003609: PUSH2 0x09cb
0000360c: DUP2
0000360d: CALLER
0000360e: PUSH2 0x3616
00003611: DUP6
00003612: PUSH2 0x361b
00003615: JUMP
00003616: JUMPDEST
00003617: PUSH2 0x3f26
0000361a: JUMP
0000361b: JUMPDEST
0000361c: PUSH1 0x00
0000361e: PUSH2 0x2262
00003621: DUP3
00003622: PUSH1 0x00
00003624: NOT
00003625: PUSH2 0x2d68
00003628: JUMP
00003629: JUMPDEST
0000362a: PUSH1 0x00
0000362c: DUP1
0000362d: DUP1
0000362e: PUSH1 0x01
00003630: PUSH1 0x01
00003632: PUSH1 0xa0
00003634: SHL
00003635: SUB
00003636: DUP7
00003637: AND
00003638: CALLER
00003639: EQ
0000363a: ISZERO
0000363b: PUSH2 0x3656
0000363e: JUMPI
0000363f: PUSH1 0x40
00003641: MLOAD
00003642: PUSH3 0x461bcd
00003646: PUSH1 0xe5
00003648: SHL
00003649: DUP2
0000364a: MSTORE
0000364b: PUSH1 0x04
0000364d: ADD
0000364e: PUSH2 0x08ca
00003651: SWAP1
00003652: PUSH2 0x5ad0
00003655: JUMP
00003656: JUMPDEST
00003657: PUSH2 0x365e
0000365a: PUSH2 0x4720
0000365d: JUMP
0000365e: JUMPDEST
0000365f: PUSH2 0x3671
00003662: DUP8
00003663: DUP8
00003664: PUSH1 0x20
00003666: ADD
00003667: MLOAD
00003668: DUP9
00003669: PUSH1 0x40
0000366b: ADD
0000366c: MLOAD
0000366d: PUSH2 0x3a60
00003670: JUMP
00003671: JUMPDEST
00003672: SWAP1
00003673: POP
00003674: PUSH1 0x00
00003676: DUP2
00003677: PUSH1 0x00
00003679: ADD
0000367a: MLOAD
0000367b: SLT
0000367c: PUSH2 0x3697
0000367f: JUMPI
00003680: PUSH1 0x40
00003682: MLOAD
00003683: PUSH3 0x461bcd
00003687: PUSH1 0xe5
00003689: SHL
0000368a: DUP2
0000368b: MSTORE
0000368c: PUSH1 0x04
0000368e: ADD
0000368f: PUSH2 0x08ca
00003692: SWAP1
00003693: PUSH2 0x5ab4
00003696: JUMP
00003697: JUMPDEST
00003698: PUSH1 0x40
0000369a: DUP1
0000369b: DUP8
0000369c: ADD
0000369d: MLOAD
0000369e: PUSH2 0xffff
000036a1: AND
000036a2: PUSH1 0x00
000036a4: SWAP1
000036a5: DUP2
000036a6: MSTORE
000036a7: PUSH1 0x06
000036a9: PUSH1 0x20
000036ab: SWAP1
000036ac: DUP2
000036ad: MSTORE
000036ae: DUP3
000036af: DUP3
000036b0: KECCAK256
000036b1: PUSH1 0x01
000036b3: PUSH1 0x01
000036b5: PUSH1 0xa0
000036b7: SHL
000036b8: SUB
000036b9: DUP12
000036ba: AND
000036bb: DUP4
000036bc: MSTORE
000036bd: SWAP1
000036be: MSTORE
000036bf: KECCAK256
000036c0: SLOAD
000036c1: PUSH2 0x36c8
000036c4: PUSH2 0x474f
000036c7: JUMP
000036c8: JUMPDEST
000036c9: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e
000036de: PUSH4 0x9d0ad1dc
000036e3: DUP11
000036e4: DUP5
000036e5: DUP7
000036e6: DUP13
000036e7: PUSH2 0x36ee
000036ea: PUSH2 0x304a
000036ed: JUMP
000036ee: JUMPDEST
000036ef: DUP14
000036f0: PUSH1 0x40
000036f2: MLOAD
000036f3: DUP8
000036f4: PUSH4 0xffffffff
000036f9: AND
000036fa: PUSH1 0xe0
000036fc: SHL
000036fd: DUP2
000036fe: MSTORE
000036ff: PUSH1 0x04
00003701: ADD
00003702: PUSH2 0x3710
00003705: SWAP7
00003706: SWAP6
00003707: SWAP5
00003708: SWAP4
00003709: SWAP3
0000370a: SWAP2
0000370b: SWAP1
0000370c: PUSH2 0x56f6
0000370f: JUMP
00003710: JUMPDEST
00003711: PUSH1 0x80
00003713: PUSH1 0x40
00003715: MLOAD
00003716: DUP1
00003717: DUP4
00003718: SUB
00003719: DUP2
0000371a: DUP7
0000371b: DUP1
0000371c: EXTCODESIZE
0000371d: ISZERO
0000371e: DUP1
0000371f: ISZERO
00003720: PUSH2 0x3728
00003723: JUMPI
00003724: PUSH1 0x00
00003726: DUP1
00003727: REVERT
00003728: JUMPDEST
00003729: POP
0000372a: GAS
0000372b: DELEGATECALL
0000372c: ISZERO
0000372d: DUP1
0000372e: ISZERO
0000372f: PUSH2 0x373c
00003732: JUMPI
00003733: RETURNDATASIZE
00003734: PUSH1 0x00
00003736: DUP1
00003737: RETURNDATACOPY
00003738: RETURNDATASIZE
00003739: PUSH1 0x00
0000373b: REVERT
0000373c: JUMPDEST
0000373d: POP
0000373e: POP
0000373f: POP
00003740: POP
00003741: PUSH1 0x40
00003743: MLOAD
00003744: RETURNDATASIZE
00003745: PUSH1 0x1f
00003747: NOT
00003748: PUSH1 0x1f
0000374a: DUP3
0000374b: ADD
0000374c: AND
0000374d: DUP3
0000374e: ADD
0000374f: DUP1
00003750: PUSH1 0x40
00003752: MSTORE
00003753: POP
00003754: DUP2
00003755: ADD
00003756: SWAP1
00003757: PUSH2 0x3760
0000375a: SWAP2
0000375b: SWAP1
0000375c: PUSH2 0x512a
0000375f: JUMP
00003760: JUMPDEST
00003761: SWAP1
00003762: POP
00003763: DUP1
00003764: PUSH1 0x60
00003766: ADD
00003767: MLOAD
00003768: DUP3
00003769: EQ
0000376a: PUSH2 0x379c
0000376d: JUMPI
0000376e: PUSH1 0x60
00003770: DUP2
00003771: ADD
00003772: MLOAD
00003773: PUSH1 0x40
00003775: DUP1
00003776: DUP11
00003777: ADD
00003778: MLOAD
00003779: PUSH2 0xffff
0000377c: AND
0000377d: PUSH1 0x00
0000377f: SWAP1
00003780: DUP2
00003781: MSTORE
00003782: PUSH1 0x06
00003784: PUSH1 0x20
00003786: SWAP1
00003787: DUP2
00003788: MSTORE
00003789: DUP3
0000378a: DUP3
0000378b: KECCAK256
0000378c: PUSH1 0x01
0000378e: PUSH1 0x01
00003790: PUSH1 0xa0
00003792: SHL
00003793: SUB
00003794: DUP15
00003795: AND
00003796: DUP4
00003797: MSTORE
00003798: SWAP1
00003799: MSTORE
0000379a: KECCAK256
0000379b: SSTORE
0000379c: JUMPDEST
0000379d: PUSH1 0x20
0000379f: DUP2
000037a0: ADD
000037a1: MLOAD
000037a2: PUSH1 0x01
000037a4: PUSH1 0x01
000037a6: PUSH1 0x80
000037a8: SHL
000037a9: SUB
000037aa: AND
000037ab: ISZERO
000037ac: PUSH2 0x3821
000037af: JUMPI
000037b0: PUSH1 0x20
000037b2: DUP1
000037b3: DUP3
000037b4: ADD
000037b5: MLOAD
000037b6: DUP10
000037b7: DUP3
000037b8: ADD
000037b9: MLOAD
000037ba: PUSH2 0xffff
000037bd: AND
000037be: PUSH1 0x00
000037c0: SWAP1
000037c1: DUP2
000037c2: MSTORE
000037c3: PUSH1 0x06
000037c5: DUP4
000037c6: MSTORE
000037c7: PUSH1 0x40
000037c9: DUP1
000037ca: DUP3
000037cb: KECCAK256
000037cc: PUSH1 0x01
000037ce: PUSH1 0x01
000037d0: PUSH1 0xa0
000037d2: SHL
000037d3: SUB
000037d4: DUP15
000037d5: AND
000037d6: DUP4
000037d7: MSTORE
000037d8: SWAP1
000037d9: SWAP4
000037da: MSTORE
000037db: SWAP2
000037dc: SWAP1
000037dd: SWAP2
000037de: KECCAK256
000037df: SLOAD
000037e0: PUSH2 0x37f7
000037e3: SWAP2
000037e4: PUSH1 0x01
000037e6: PUSH1 0x01
000037e8: PUSH1 0x80
000037ea: SHL
000037eb: SUB
000037ec: AND
000037ed: PUSH4 0xffffffff
000037f2: PUSH2 0x2aad
000037f5: AND
000037f6: JUMP
000037f7: JUMPDEST
000037f8: PUSH1 0x20
000037fa: DUP1
000037fb: DUP11
000037fc: ADD
000037fd: MLOAD
000037fe: PUSH2 0xffff
00003801: AND
00003802: PUSH1 0x00
00003804: SWAP1
00003805: DUP2
00003806: MSTORE
00003807: PUSH1 0x06
00003809: DUP3
0000380a: MSTORE
0000380b: PUSH1 0x40
0000380d: DUP1
0000380e: DUP3
0000380f: KECCAK256
00003810: PUSH1 0x01
00003812: PUSH1 0x01
00003814: PUSH1 0xa0
00003816: SHL
00003817: SUB
00003818: DUP15
00003819: AND
0000381a: DUP4
0000381b: MSTORE
0000381c: SWAP1
0000381d: SWAP3
0000381e: MSTORE
0000381f: KECCAK256
00003820: SSTORE
00003821: JUMPDEST
00003822: PUSH1 0x20
00003824: DUP2
00003825: ADD
00003826: MLOAD
00003827: DUP2
00003828: MLOAD
00003829: PUSH1 0x40
0000382b: SWAP1
0000382c: SWAP3
0000382d: ADD
0000382e: MLOAD
0000382f: SWAP1
00003830: SWAP11
00003831: SWAP2
00003832: SWAP10
00003833: POP
00003834: SWAP8
00003835: POP
00003836: SWAP6
00003837: POP
00003838: POP
00003839: POP
0000383a: POP
0000383b: POP
0000383c: POP
0000383d: JUMP
0000383e: JUMPDEST
0000383f: PUSH1 0x00
00003841: PUSH2 0x0997
00003844: PUSH32 0xc59867f3ae9774eb97a98f3fbbe736c1ee23580155c8697cd969a2d1f3968653
00003865: PUSH2 0x3f22
00003868: JUMP
00003869: JUMPDEST
0000386a: PUSH1 0x00
0000386c: PUSH2 0x0997
0000386f: PUSH32 0xdafe5151c63bd8d33bc03c4916ccca379c56861736a985b1918a3e0c0347707b
00003890: PUSH2 0x3f22
00003893: JUMP
00003894: JUMPDEST
00003895: PUSH1 0x01
00003897: PUSH1 0x01
00003899: PUSH1 0xa0
0000389b: SHL
0000389c: SUB
0000389d: DUP3
0000389e: AND
0000389f: PUSH1 0x00
000038a1: SWAP1
000038a2: DUP2
000038a3: MSTORE
000038a4: PUSH1 0x00
000038a6: DUP1
000038a7: MLOAD
000038a8: PUSH1 0x20
000038aa: PUSH2 0x5f52
000038ad: DUP4
000038ae: CODECOPY
000038af: DUP2
000038b0: MLOAD
000038b1: SWAP2
000038b2: MSTORE
000038b3: PUSH1 0x20
000038b5: MSTORE
000038b6: PUSH1 0x40
000038b8: SWAP1
000038b9: KECCAK256
000038ba: SLOAD
000038bb: PUSH2 0x38d3
000038be: DUP2
000038bf: PUSH1 0x01
000038c1: PUSH1 0x01
000038c3: PUSH1 0x80
000038c5: SHL
000038c6: SUB
000038c7: DUP5
000038c8: AND
000038c9: PUSH4 0xffffffff
000038ce: PUSH2 0x30b3
000038d1: AND
000038d2: JUMP
000038d3: JUMPDEST
000038d4: PUSH1 0x01
000038d6: PUSH1 0x01
000038d8: PUSH1 0xa0
000038da: SHL
000038db: SUB
000038dc: DUP5
000038dd: AND
000038de: PUSH1 0x00
000038e0: SWAP1
000038e1: DUP2
000038e2: MSTORE
000038e3: PUSH1 0x00
000038e5: DUP1
000038e6: MLOAD
000038e7: PUSH1 0x20
000038e9: PUSH2 0x5f52
000038ec: DUP4
000038ed: CODECOPY
000038ee: DUP2
000038ef: MLOAD
000038f0: SWAP2
000038f1: MSTORE
000038f2: PUSH1 0x20
000038f4: MSTORE
000038f5: PUSH1 0x40
000038f7: DUP2
000038f8: KECCAK256
000038f9: SWAP2
000038fa: SWAP1
000038fb: SWAP2
000038fc: SSTORE
000038fd: PUSH2 0x3905
00003900: DUP5
00003901: PUSH2 0x41c1
00003904: JUMP
00003905: JUMPDEST
00003906: SLT
00003907: ISZERO
00003908: PUSH2 0x3923
0000390b: JUMPI
0000390c: PUSH1 0x40
0000390e: MLOAD
0000390f: PUSH3 0x461bcd
00003913: PUSH1 0xe5
00003915: SHL
00003916: DUP2
00003917: MSTORE
00003918: PUSH1 0x04
0000391a: ADD
0000391b: PUSH2 0x08ca
0000391e: SWAP1
0000391f: PUSH2 0x5bf0
00003922: JUMP
00003923: JUMPDEST
00003924: PUSH1 0x00
00003926: SLOAD
00003927: PUSH1 0x40
00003929: MLOAD
0000392a: PUSH4 0x2e1a7d4d
0000392f: PUSH1 0xe0
00003931: SHL
00003932: DUP2
00003933: MSTORE
00003934: PUSH1 0x01
00003936: PUSH1 0x01
00003938: PUSH1 0xa0
0000393a: SHL
0000393b: SUB
0000393c: SWAP1
0000393d: SWAP2
0000393e: AND
0000393f: SWAP1
00003940: PUSH4 0x2e1a7d4d
00003945: SWAP1
00003946: PUSH2 0x395c
00003949: SWAP1
0000394a: PUSH1 0x01
0000394c: PUSH1 0x01
0000394e: PUSH1 0x80
00003950: SHL
00003951: SUB
00003952: DUP7
00003953: AND
00003954: SWAP1
00003955: PUSH1 0x04
00003957: ADD
00003958: PUSH2 0x58cd
0000395b: JUMP
0000395c: JUMPDEST
0000395d: PUSH1 0x00
0000395f: PUSH1 0x40
00003961: MLOAD
00003962: DUP1
00003963: DUP4
00003964: SUB
00003965: DUP2
00003966: PUSH1 0x00
00003968: DUP8
00003969: DUP1
0000396a: EXTCODESIZE
0000396b: ISZERO
0000396c: DUP1
0000396d: ISZERO
0000396e: PUSH2 0x3976
00003971: JUMPI
00003972: PUSH1 0x00
00003974: DUP1
00003975: REVERT
00003976: JUMPDEST
00003977: POP
00003978: GAS
00003979: CALL
0000397a: ISZERO
0000397b: DUP1
0000397c: ISZERO
0000397d: PUSH2 0x398a
00003980: JUMPI
00003981: RETURNDATASIZE
00003982: PUSH1 0x00
00003984: DUP1
00003985: RETURNDATACOPY
00003986: RETURNDATASIZE
00003987: PUSH1 0x00
00003989: REVERT
0000398a: JUMPDEST
0000398b: POP
0000398c: POP
0000398d: POP
0000398e: POP
0000398f: PUSH1 0x00
00003991: DUP4
00003992: PUSH1 0x01
00003994: PUSH1 0x01
00003996: PUSH1 0xa0
00003998: SHL
00003999: SUB
0000399a: AND
0000399b: DUP4
0000399c: PUSH1 0x01
0000399e: PUSH1 0x01
000039a0: PUSH1 0x80
000039a2: SHL
000039a3: SUB
000039a4: AND
000039a5: PUSH1 0x40
000039a7: MLOAD
000039a8: PUSH2 0x39b0
000039ab: SWAP1
000039ac: PUSH2 0x5572
000039af: JUMP
000039b0: JUMPDEST
000039b1: PUSH1 0x00
000039b3: PUSH1 0x40
000039b5: MLOAD
000039b6: DUP1
000039b7: DUP4
000039b8: SUB
000039b9: DUP2
000039ba: DUP6
000039bb: DUP8
000039bc: GAS
000039bd: CALL
000039be: SWAP3
000039bf: POP
000039c0: POP
000039c1: POP
000039c2: RETURNDATASIZE
000039c3: DUP1
000039c4: PUSH1 0x00
000039c6: DUP2
000039c7: EQ
000039c8: PUSH2 0x39ed
000039cb: JUMPI
000039cc: PUSH1 0x40
000039ce: MLOAD
000039cf: SWAP2
000039d0: POP
000039d1: PUSH1 0x1f
000039d3: NOT
000039d4: PUSH1 0x3f
000039d6: RETURNDATASIZE
000039d7: ADD
000039d8: AND
000039d9: DUP3
000039da: ADD
000039db: PUSH1 0x40
000039dd: MSTORE
000039de: RETURNDATASIZE
000039df: DUP3
000039e0: MSTORE
000039e1: RETURNDATASIZE
000039e2: PUSH1 0x00
000039e4: PUSH1 0x20
000039e6: DUP5
000039e7: ADD
000039e8: RETURNDATACOPY
000039e9: PUSH2 0x39f2
000039ec: JUMP
000039ed: JUMPDEST
000039ee: PUSH1 0x60
000039f0: SWAP2
000039f1: POP
000039f2: JUMPDEST
000039f3: POP
000039f4: POP
000039f5: SWAP1
000039f6: POP
000039f7: DUP1
000039f8: PUSH2 0x3a13
000039fb: JUMPI
000039fc: PUSH1 0x40
000039fe: MLOAD
000039ff: PUSH3 0x461bcd
00003a03: PUSH1 0xe5
00003a05: SHL
00003a06: DUP2
00003a07: MSTORE
00003a08: PUSH1 0x04
00003a0a: ADD
00003a0b: PUSH2 0x08ca
00003a0e: SWAP1
00003a0f: PUSH2 0x5c0b
00003a12: JUMP
00003a13: JUMPDEST
00003a14: PUSH1 0x00
00003a16: PUSH32 0x3a1f8a7d4c39f62327e9a798fb5c25bdd080a161bd152f56eb2e2c7d6ad69fb8
00003a37: DUP6
00003a38: DUP6
00003a39: PUSH1 0x40
00003a3b: MLOAD
00003a3c: PUSH2 0x3a46
00003a3f: SWAP3
00003a40: SWAP2
00003a41: SWAP1
00003a42: PUSH2 0x57a8
00003a45: JUMP
00003a46: JUMPDEST
00003a47: PUSH1 0x40
00003a49: MLOAD
00003a4a: DUP1
00003a4b: SWAP2
00003a4c: SUB
00003a4d: SWAP1
00003a4e: LOG2
00003a4f: POP
00003a50: POP
00003a51: POP
00003a52: POP
00003a53: JUMP
00003a54: JUMPDEST
00003a55: PUSH1 0x00
00003a57: PUSH1 0x3c
00003a59: DUP2
00003a5a: PUSH1 0x01
00003a5c: PUSH2 0x2f05
00003a5f: JUMP
00003a60: JUMPDEST
00003a61: PUSH2 0x3a68
00003a64: PUSH2 0x4720
00003a67: JUMP
00003a68: JUMPDEST
00003a69: PUSH2 0x3a70
00003a6c: PUSH2 0x304a
00003a6f: JUMP
00003a70: JUMPDEST
00003a71: PUSH1 0x01
00003a73: PUSH1 0x01
00003a75: PUSH1 0xa0
00003a77: SHL
00003a78: SUB
00003a79: AND
00003a7a: PUSH4 0xeaafcd9c
00003a7f: DUP6
00003a80: DUP6
00003a81: DUP6
00003a82: PUSH1 0x40
00003a84: MLOAD
00003a85: DUP5
00003a86: PUSH4 0xffffffff
00003a8b: AND
00003a8c: PUSH1 0xe0
00003a8e: SHL
00003a8f: DUP2
00003a90: MSTORE
00003a91: PUSH1 0x04
00003a93: ADD
00003a94: PUSH2 0x3a9f
00003a97: SWAP4
00003a98: SWAP3
00003a99: SWAP2
00003a9a: SWAP1
00003a9b: PUSH2 0x582e
00003a9e: JUMP
00003a9f: JUMPDEST
00003aa0: PUSH1 0xa0
00003aa2: PUSH1 0x40
00003aa4: MLOAD
00003aa5: DUP1
00003aa6: DUP4
00003aa7: SUB
00003aa8: DUP2
00003aa9: PUSH1 0x00
00003aab: DUP8
00003aac: DUP1
00003aad: EXTCODESIZE
00003aae: ISZERO
00003aaf: DUP1
00003ab0: ISZERO
00003ab1: PUSH2 0x3ab9
00003ab4: JUMPI
00003ab5: PUSH1 0x00
00003ab7: DUP1
00003ab8: REVERT
00003ab9: JUMPDEST
00003aba: POP
00003abb: GAS
00003abc: CALL
00003abd: ISZERO
00003abe: DUP1
00003abf: ISZERO
00003ac0: PUSH2 0x3acd
00003ac3: JUMPI
00003ac4: RETURNDATASIZE
00003ac5: PUSH1 0x00
00003ac7: DUP1
00003ac8: RETURNDATACOPY
00003ac9: RETURNDATASIZE
00003aca: PUSH1 0x00
00003acc: REVERT
00003acd: JUMPDEST
00003ace: POP
00003acf: POP
00003ad0: POP
00003ad1: POP
00003ad2: PUSH1 0x40
00003ad4: MLOAD
00003ad5: RETURNDATASIZE
00003ad6: PUSH1 0x1f
00003ad8: NOT
00003ad9: PUSH1 0x1f
00003adb: DUP3
00003adc: ADD
00003add: AND
00003ade: DUP3
00003adf: ADD
00003ae0: DUP1
00003ae1: PUSH1 0x40
00003ae3: MSTORE
00003ae4: POP
00003ae5: DUP2
00003ae6: ADD
00003ae7: SWAP1
00003ae8: PUSH2 0x2ef5
00003aeb: SWAP2
00003aec: SWAP1
00003aed: PUSH2 0x50d9
00003af0: JUMP
00003af1: JUMPDEST
00003af2: PUSH1 0x00
00003af4: DUP1
00003af5: JUMPDEST
00003af6: PUSH1 0x00
00003af8: SLOAD
00003af9: PUSH1 0x01
00003afb: PUSH1 0xa0
00003afd: SHL
00003afe: SWAP1
00003aff: DIV
00003b00: PUSH2 0xffff
00003b03: AND
00003b04: DUP2
00003b05: GT
00003b06: PUSH2 0x3b49
00003b09: JUMPI
00003b0a: PUSH2 0xffff
00003b0d: DUP2
00003b0e: AND
00003b0f: PUSH1 0x00
00003b11: SWAP1
00003b12: DUP2
00003b13: MSTORE
00003b14: PUSH1 0x06
00003b16: PUSH1 0x20
00003b18: SWAP1
00003b19: DUP2
00003b1a: MSTORE
00003b1b: PUSH1 0x40
00003b1d: DUP1
00003b1e: DUP4
00003b1f: KECCAK256
00003b20: PUSH1 0x01
00003b22: PUSH1 0x01
00003b24: PUSH1 0xa0
00003b26: SHL
00003b27: SUB
00003b28: DUP8
00003b29: AND
00003b2a: DUP5
00003b2b: MSTORE
00003b2c: SWAP1
00003b2d: SWAP2
00003b2e: MSTORE
00003b2f: DUP2
00003b30: KECCAK256
00003b31: SLOAD
00003b32: SGT
00003b33: ISZERO
00003b34: PUSH2 0x3b41
00003b37: JUMPI
00003b38: PUSH1 0x01
00003b3a: SWAP2
00003b3b: POP
00003b3c: POP
00003b3d: PUSH2 0x0c9d
00003b40: JUMP
00003b41: JUMPDEST
00003b42: PUSH1 0x01
00003b44: ADD
00003b45: PUSH2 0x3af5
00003b48: JUMP
00003b49: JUMPDEST
00003b4a: POP
00003b4b: PUSH1 0x00
00003b4d: SWAP3
00003b4e: SWAP2
00003b4f: POP
00003b50: POP
00003b51: JUMP
00003b52: JUMPDEST
00003b53: PUSH1 0x00
00003b55: PUSH1 0x60
00003b57: PUSH2 0x3b5e
00003b5a: PUSH2 0x304a
00003b5d: JUMP
00003b5e: JUMPDEST
00003b5f: PUSH1 0x01
00003b61: PUSH1 0x01
00003b63: PUSH1 0xa0
00003b65: SHL
00003b66: SUB
00003b67: AND
00003b68: PUSH4 0x742978da
00003b6d: DUP5
00003b6e: PUSH1 0x40
00003b70: MLOAD
00003b71: DUP3
00003b72: PUSH4 0xffffffff
00003b77: AND
00003b78: PUSH1 0xe0
00003b7a: SHL
00003b7b: DUP2
00003b7c: MSTORE
00003b7d: PUSH1 0x04
00003b7f: ADD
00003b80: PUSH2 0x3b89
00003b83: SWAP2
00003b84: SWAP1
00003b85: PUSH2 0x5575
00003b88: JUMP
00003b89: JUMPDEST
00003b8a: PUSH1 0x00
00003b8c: PUSH1 0x40
00003b8e: MLOAD
00003b8f: DUP1
00003b90: DUP4
00003b91: SUB
00003b92: DUP2
00003b93: DUP7
00003b94: DUP1
00003b95: EXTCODESIZE
00003b96: ISZERO
00003b97: DUP1
00003b98: ISZERO
00003b99: PUSH2 0x3ba1
00003b9c: JUMPI
00003b9d: PUSH1 0x00
00003b9f: DUP1
00003ba0: REVERT
00003ba1: JUMPDEST
00003ba2: POP
00003ba3: GAS
00003ba4: STATICCALL
00003ba5: ISZERO
00003ba6: DUP1
00003ba7: ISZERO
00003ba8: PUSH2 0x3bb5
00003bab: JUMPI
00003bac: RETURNDATASIZE
00003bad: PUSH1 0x00
00003baf: DUP1
00003bb0: RETURNDATACOPY
00003bb1: RETURNDATASIZE
00003bb2: PUSH1 0x00
00003bb4: REVERT
00003bb5: JUMPDEST
00003bb6: POP
00003bb7: POP
00003bb8: POP
00003bb9: POP
00003bba: PUSH1 0x40
00003bbc: MLOAD
00003bbd: RETURNDATASIZE
00003bbe: PUSH1 0x00
00003bc0: DUP3
00003bc1: RETURNDATACOPY
00003bc2: PUSH1 0x1f
00003bc4: RETURNDATASIZE
00003bc5: SWAP1
00003bc6: DUP2
00003bc7: ADD
00003bc8: PUSH1 0x1f
00003bca: NOT
00003bcb: AND
00003bcc: DUP3
00003bcd: ADD
00003bce: PUSH1 0x40
00003bd0: MSTORE
00003bd1: PUSH2 0x3bdd
00003bd4: SWAP2
00003bd5: SWAP1
00003bd6: DUP2
00003bd7: ADD
00003bd8: SWAP1
00003bd9: PUSH2 0x4f45
00003bdc: JUMP
00003bdd: JUMPDEST
00003bde: SWAP1
00003bdf: POP
00003be0: PUSH1 0x00
00003be2: JUMPDEST
00003be3: DUP2
00003be4: MLOAD
00003be5: DUP2
00003be6: LT
00003be7: ISZERO
00003be8: PUSH2 0x3c23
00003beb: JUMPI
00003bec: PUSH2 0x3c0b
00003bef: DUP3
00003bf0: DUP3
00003bf1: DUP2
00003bf2: MLOAD
00003bf3: DUP2
00003bf4: LT
00003bf5: PUSH2 0x3bfa
00003bf8: JUMPI
00003bf9: INVALID
00003bfa: JUMPDEST
00003bfb: PUSH1 0x20
00003bfd: MUL
00003bfe: PUSH1 0x20
00003c00: ADD
00003c01: ADD
00003c02: MLOAD
00003c03: PUSH1 0x60
00003c05: ADD
00003c06: MLOAD
00003c07: PUSH2 0x4413
00003c0a: JUMP
00003c0b: JUMPDEST
00003c0c: ISZERO
00003c0d: PUSH2 0x3c1b
00003c10: JUMPI
00003c11: PUSH1 0x00
00003c13: SWAP3
00003c14: POP
00003c15: POP
00003c16: POP
00003c17: PUSH2 0x0c9d
00003c1a: JUMP
00003c1b: JUMPDEST
00003c1c: PUSH1 0x01
00003c1e: ADD
00003c1f: PUSH2 0x3be2
00003c22: JUMP
00003c23: JUMPDEST
00003c24: POP
00003c25: PUSH1 0x01
00003c27: SWAP4
00003c28: SWAP3
00003c29: POP
00003c2a: POP
00003c2b: POP
00003c2c: JUMP
00003c2d: JUMPDEST
00003c2e: PUSH1 0x00
00003c30: PUSH2 0x0997
00003c33: PUSH32 0x28971522a5177c8ac90bf7d9be4d04d6bc61da2e7623c4392f5b9494ac42e4d0
00003c54: PUSH2 0x3f22
00003c57: JUMP
00003c58: JUMPDEST
00003c59: PUSH1 0x01
00003c5b: PUSH1 0x01
00003c5d: PUSH1 0xa0
00003c5f: SHL
00003c60: SUB
00003c61: DUP3
00003c62: AND
00003c63: PUSH1 0x00
00003c65: SWAP1
00003c66: DUP2
00003c67: MSTORE
00003c68: PUSH1 0x03
00003c6a: PUSH1 0x20
00003c6c: MSTORE
00003c6d: PUSH1 0x40
00003c6f: SWAP1
00003c70: KECCAK256
00003c71: SLOAD
00003c72: PUSH2 0xffff
00003c75: AND
00003c76: DUP1
00003c77: ISZERO
00003c78: DUP1
00003c79: ISZERO
00003c7a: PUSH2 0x3c91
00003c7d: JUMPI
00003c7e: POP
00003c7f: PUSH1 0x00
00003c81: SLOAD
00003c82: PUSH1 0x01
00003c84: PUSH1 0x01
00003c86: PUSH1 0xa0
00003c88: SHL
00003c89: SUB
00003c8a: DUP5
00003c8b: DUP2
00003c8c: AND
00003c8d: SWAP2
00003c8e: AND
00003c8f: EQ
00003c90: ISZERO
00003c91: JUMPDEST
00003c92: ISZERO
00003c93: PUSH2 0x3cae
00003c96: JUMPI
00003c97: PUSH1 0x40
00003c99: MLOAD
00003c9a: PUSH3 0x461bcd
00003c9e: PUSH1 0xe5
00003ca0: SHL
00003ca1: DUP2
00003ca2: MSTORE
00003ca3: PUSH1 0x04
00003ca5: ADD
00003ca6: PUSH2 0x08ca
00003ca9: SWAP1
00003caa: PUSH2 0x5aec
00003cad: JUMP
00003cae: JUMPDEST
00003caf: PUSH2 0x3cb6
00003cb2: PUSH2 0x4789
00003cb5: JUMP
00003cb6: JUMPDEST
00003cb7: POP
00003cb8: PUSH1 0x01
00003cba: PUSH1 0x01
00003cbc: PUSH1 0xa0
00003cbe: SHL
00003cbf: SUB
00003cc0: DUP4
00003cc1: AND
00003cc2: PUSH1 0x00
00003cc4: SWAP1
00003cc5: DUP2
00003cc6: MSTORE
00003cc7: PUSH1 0x04
00003cc9: PUSH1 0x20
00003ccb: SWAP1
00003ccc: DUP2
00003ccd: MSTORE
00003cce: PUSH1 0x40
00003cd0: SWAP2
00003cd1: DUP3
00003cd2: SWAP1
00003cd3: KECCAK256
00003cd4: DUP3
00003cd5: MLOAD
00003cd6: DUP1
00003cd7: DUP5
00003cd8: ADD
00003cd9: SWAP1
00003cda: SWAP4
00003cdb: MSTORE
00003cdc: SLOAD
00003cdd: PUSH1 0xff
00003cdf: DUP1
00003ce0: DUP3
00003ce1: AND
00003ce2: ISZERO
00003ce3: ISZERO
00003ce4: DUP5
00003ce5: MSTORE
00003ce6: PUSH2 0x0100
00003ce9: SWAP1
00003cea: SWAP2
00003ceb: DIV
00003cec: AND
00003ced: ISZERO
00003cee: ISZERO
00003cef: SWAP1
00003cf0: DUP3
00003cf1: ADD
00003cf2: MSTORE
00003cf3: PUSH2 0x3cfe
00003cf6: DUP5
00003cf7: DUP7
00003cf8: DUP6
00003cf9: DUP5
00003cfa: PUSH2 0x4248
00003cfd: JUMP
00003cfe: JUMPDEST
00003cff: DUP2
00003d00: MLOAD
00003d01: SWAP1
00003d02: SWAP4
00003d03: POP
00003d04: PUSH2 0x3d71
00003d07: JUMPI
00003d08: PUSH2 0xffff
00003d0b: DUP3
00003d0c: AND
00003d0d: PUSH1 0x00
00003d0f: SWAP1
00003d10: DUP2
00003d11: MSTORE
00003d12: PUSH1 0x06
00003d14: PUSH1 0x20
00003d16: SWAP1
00003d17: DUP2
00003d18: MSTORE
00003d19: PUSH1 0x40
00003d1b: DUP1
00003d1c: DUP4
00003d1d: KECCAK256
00003d1e: PUSH1 0x01
00003d20: PUSH1 0x01
00003d22: PUSH1 0xa0
00003d24: SHL
00003d25: SUB
00003d26: DUP10
00003d27: AND
00003d28: DUP5
00003d29: MSTORE
00003d2a: SWAP1
00003d2b: SWAP2
00003d2c: MSTORE
00003d2d: SWAP1
00003d2e: KECCAK256
00003d2f: SLOAD
00003d30: PUSH2 0x3d48
00003d33: SWAP1
00003d34: PUSH1 0x01
00003d36: PUSH1 0x01
00003d38: PUSH1 0x80
00003d3a: SHL
00003d3b: SUB
00003d3c: DUP6
00003d3d: AND
00003d3e: PUSH4 0xffffffff
00003d43: PUSH2 0x2aad
00003d46: AND
00003d47: JUMP
00003d48: JUMPDEST
00003d49: PUSH2 0xffff
00003d4c: DUP4
00003d4d: AND
00003d4e: PUSH1 0x00
00003d50: SWAP1
00003d51: DUP2
00003d52: MSTORE
00003d53: PUSH1 0x06
00003d55: PUSH1 0x20
00003d57: SWAP1
00003d58: DUP2
00003d59: MSTORE
00003d5a: PUSH1 0x40
00003d5c: DUP1
00003d5d: DUP4
00003d5e: KECCAK256
00003d5f: PUSH1 0x01
00003d61: PUSH1 0x01
00003d63: PUSH1 0xa0
00003d65: SHL
00003d66: SUB
00003d67: DUP11
00003d68: AND
00003d69: DUP5
00003d6a: MSTORE
00003d6b: SWAP1
00003d6c: SWAP2
00003d6d: MSTORE
00003d6e: SWAP1
00003d6f: KECCAK256
00003d70: SSTORE
00003d71: JUMPDEST
00003d72: DUP2
00003d73: PUSH2 0xffff
00003d76: AND
00003d77: PUSH32 0x1ebdf9946bb1531759f2100f77d6319f8f0a70663c87f0e3c4976cf417c6ec07
00003d98: DUP7
00003d99: DUP6
00003d9a: PUSH1 0x40
00003d9c: MLOAD
00003d9d: PUSH2 0x3da7
00003da0: SWAP3
00003da1: SWAP2
00003da2: SWAP1
00003da3: PUSH2 0x57a8
00003da6: JUMP
00003da7: JUMPDEST
00003da8: PUSH1 0x40
00003daa: MLOAD
00003dab: DUP1
00003dac: SWAP2
00003dad: SUB
00003dae: SWAP1
00003daf: LOG2
00003db0: POP
00003db1: POP
00003db2: POP
00003db3: POP
00003db4: POP
00003db5: JUMP
00003db6: JUMPDEST
00003db7: PUSH1 0x00
00003db9: DUP2
00003dba: DUP4
00003dbb: SUB
00003dbc: PUSH1 0x01
00003dbe: PUSH1 0x01
00003dc0: PUSH1 0x80
00003dc2: SHL
00003dc3: SUB
00003dc4: DUP1
00003dc5: DUP6
00003dc6: AND
00003dc7: SWAP1
00003dc8: DUP3
00003dc9: AND
00003dca: GT
00003dcb: ISZERO
00003dcc: PUSH2 0x2af3
00003dcf: JUMPI
00003dd0: PUSH1 0x40
00003dd2: MLOAD
00003dd3: PUSH3 0x461bcd
00003dd7: PUSH1 0xe5
00003dd9: SHL
00003dda: DUP2
00003ddb: MSTORE
00003ddc: PUSH1 0x04
00003dde: ADD
00003ddf: PUSH2 0x08ca
00003de2: SWAP1
00003de3: PUSH2 0x5a97
00003de6: JUMP
00003de7: JUMPDEST
00003de8: PUSH2 0x1524
00003deb: PUSH32 0x28971522a5177c8ac90bf7d9be4d04d6bc61da2e7623c4392f5b9494ac42e4d0
00003e0c: PUSH1 0x01
00003e0e: PUSH1 0x01
00003e10: PUSH1 0x80
00003e12: SHL
00003e13: SUB
00003e14: DUP4
00003e15: AND
00003e16: PUSH2 0x441f
00003e19: JUMP
00003e1a: JUMPDEST
00003e1b: PUSH2 0x1524
00003e1e: PUSH32 0xc59867f3ae9774eb97a98f3fbbe736c1ee23580155c8697cd969a2d1f3968653
00003e3f: PUSH1 0x01
00003e41: PUSH1 0x01
00003e43: PUSH1 0x80
00003e45: SHL
00003e46: SUB
00003e47: DUP4
00003e48: AND
00003e49: PUSH2 0x441f
00003e4c: JUMP
00003e4d: JUMPDEST
00003e4e: PUSH2 0x1524
00003e51: PUSH32 0xdafe5151c63bd8d33bc03c4916ccca379c56861736a985b1918a3e0c0347707b
00003e72: PUSH1 0x01
00003e74: PUSH1 0x01
00003e76: PUSH1 0x80
00003e78: SHL
00003e79: SUB
00003e7a: DUP4
00003e7b: AND
00003e7c: PUSH2 0x441f
00003e7f: JUMP
00003e80: JUMPDEST
00003e81: PUSH2 0x1524
00003e84: PUSH32 0x86f55df6f3f1d5533a992d6e1355f3adb2afe0c3064672910d2518432c35e770
00003ea5: PUSH1 0x01
00003ea7: PUSH1 0x01
00003ea9: PUSH1 0x80
00003eab: SHL
00003eac: SUB
00003ead: DUP4
00003eae: AND
00003eaf: PUSH2 0x441f
00003eb2: JUMP
00003eb3: JUMPDEST
00003eb4: PUSH1 0x01
00003eb6: PUSH1 0x01
00003eb8: PUSH1 0xa0
00003eba: SHL
00003ebb: SUB
00003ebc: DUP2
00003ebd: AND
00003ebe: PUSH2 0x3ec6
00003ec1: JUMPI
00003ec2: PUSH1 0x00
00003ec4: DUP1
00003ec5: REVERT
00003ec6: JUMPDEST
00003ec7: PUSH1 0x08
00003ec9: SLOAD
00003eca: PUSH1 0x40
00003ecc: MLOAD
00003ecd: PUSH1 0x01
00003ecf: PUSH1 0x01
00003ed1: PUSH1 0xa0
00003ed3: SHL
00003ed4: SUB
00003ed5: DUP1
00003ed6: DUP5
00003ed7: AND
00003ed8: SWAP3
00003ed9: AND
00003eda: SWAP1
00003edb: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00003efc: SWAP1
00003efd: PUSH1 0x00
00003eff: SWAP1
00003f00: LOG3
00003f01: PUSH1 0x08
00003f03: DUP1
00003f04: SLOAD
00003f05: PUSH1 0x01
00003f07: PUSH1 0x01
00003f09: PUSH1 0xa0
00003f0b: SHL
00003f0c: SUB
00003f0d: NOT
00003f0e: AND
00003f0f: PUSH1 0x01
00003f11: PUSH1 0x01
00003f13: PUSH1 0xa0
00003f15: SHL
00003f16: SUB
00003f17: SWAP3
00003f18: SWAP1
00003f19: SWAP3
00003f1a: AND
00003f1b: SWAP2
00003f1c: SWAP1
00003f1d: SWAP2
00003f1e: OR
00003f1f: SWAP1
00003f20: SSTORE
00003f21: JUMP
00003f22: JUMPDEST
00003f23: SLOAD
00003f24: SWAP1
00003f25: JUMP
00003f26: JUMPDEST
00003f27: PUSH1 0x01
00003f29: PUSH1 0x01
00003f2b: PUSH1 0xa0
00003f2d: SHL
00003f2e: SUB
00003f2f: DUP4
00003f30: AND
00003f31: PUSH1 0x00
00003f33: SWAP1
00003f34: DUP2
00003f35: MSTORE
00003f36: PUSH1 0x04
00003f38: PUSH1 0x20
00003f3a: MSTORE
00003f3b: PUSH1 0x40
00003f3d: SWAP1
00003f3e: KECCAK256
00003f3f: SLOAD
00003f40: PUSH1 0xff
00003f42: AND
00003f43: ISZERO
00003f44: PUSH2 0x3fac
00003f47: JUMPI
00003f48: PUSH1 0x40
00003f4a: MLOAD
00003f4b: PUSH4 0x4decdde3
00003f50: PUSH1 0xe1
00003f52: SHL
00003f53: DUP2
00003f54: MSTORE
00003f55: PUSH1 0x01
00003f57: PUSH1 0x01
00003f59: PUSH1 0xa0
00003f5b: SHL
00003f5c: SUB
00003f5d: DUP5
00003f5e: AND
00003f5f: SWAP1
00003f60: PUSH4 0x9bd9bbc6
00003f65: SWAP1
00003f66: PUSH2 0x3f75
00003f69: SWAP1
00003f6a: DUP6
00003f6b: SWAP1
00003f6c: DUP6
00003f6d: SWAP1
00003f6e: PUSH1 0x04
00003f70: ADD
00003f71: PUSH2 0x57fc
00003f74: JUMP
00003f75: JUMPDEST
00003f76: PUSH1 0x00
00003f78: PUSH1 0x40
00003f7a: MLOAD
00003f7b: DUP1
00003f7c: DUP4
00003f7d: SUB
00003f7e: DUP2
00003f7f: PUSH1 0x00
00003f81: DUP8
00003f82: DUP1
00003f83: EXTCODESIZE
00003f84: ISZERO
00003f85: DUP1
00003f86: ISZERO
00003f87: PUSH2 0x3f8f
00003f8a: JUMPI
00003f8b: PUSH1 0x00
00003f8d: DUP1
00003f8e: REVERT
00003f8f: JUMPDEST
00003f90: POP
00003f91: GAS
00003f92: CALL
00003f93: ISZERO
00003f94: DUP1
00003f95: ISZERO
00003f96: PUSH2 0x3fa3
00003f99: JUMPI
00003f9a: RETURNDATASIZE
00003f9b: PUSH1 0x00
00003f9d: DUP1
00003f9e: RETURNDATACOPY
00003f9f: RETURNDATASIZE
00003fa0: PUSH1 0x00
00003fa2: REVERT
00003fa3: JUMPDEST
00003fa4: POP
00003fa5: POP
00003fa6: POP
00003fa7: POP
00003fa8: PUSH2 0x09cb
00003fab: JUMP
00003fac: JUMPDEST
00003fad: PUSH2 0x09cb
00003fb0: DUP4
00003fb1: DUP4
00003fb2: DUP4
00003fb3: PUSH1 0x01
00003fb5: PUSH1 0x01
00003fb7: PUSH1 0x80
00003fb9: SHL
00003fba: SUB
00003fbb: AND
00003fbc: PUSH2 0x4423
00003fbf: JUMP
00003fc0: JUMPDEST
00003fc1: PUSH1 0x00
00003fc3: DUP1
00003fc4: DUP4
00003fc5: PUSH1 0x00
00003fc7: ADD
00003fc8: MLOAD
00003fc9: PUSH1 0x01
00003fcb: PUSH1 0x01
00003fcd: PUSH1 0xa0
00003fcf: SHL
00003fd0: SUB
00003fd1: AND
00003fd2: PUSH4 0x50d25bcd
00003fd7: PUSH1 0x40
00003fd9: MLOAD
00003fda: DUP2
00003fdb: PUSH4 0xffffffff
00003fe0: AND
00003fe1: PUSH1 0xe0
00003fe3: SHL
00003fe4: DUP2
00003fe5: MSTORE
00003fe6: PUSH1 0x04
00003fe8: ADD
00003fe9: PUSH1 0x20
00003feb: PUSH1 0x40
00003fed: MLOAD
00003fee: DUP1
00003fef: DUP4
00003ff0: SUB
00003ff1: DUP2
00003ff2: DUP7
00003ff3: DUP1
00003ff4: EXTCODESIZE
00003ff5: ISZERO
00003ff6: DUP1
00003ff7: ISZERO
00003ff8: PUSH2 0x4000
00003ffb: JUMPI
00003ffc: PUSH1 0x00
00003ffe: DUP1
00003fff: REVERT
00004000: JUMPDEST
00004001: POP
00004002: GAS
00004003: STATICCALL
00004004: ISZERO
00004005: DUP1
00004006: ISZERO
00004007: PUSH2 0x4014
0000400a: JUMPI
0000400b: RETURNDATASIZE
0000400c: PUSH1 0x00
0000400e: DUP1
0000400f: RETURNDATACOPY
00004010: RETURNDATASIZE
00004011: PUSH1 0x00
00004013: REVERT
00004014: JUMPDEST
00004015: POP
00004016: POP
00004017: POP
00004018: POP
00004019: PUSH1 0x40
0000401b: MLOAD
0000401c: RETURNDATASIZE
0000401d: PUSH1 0x1f
0000401f: NOT
00004020: PUSH1 0x1f
00004022: DUP3
00004023: ADD
00004024: AND
00004025: DUP3
00004026: ADD
00004027: DUP1
00004028: PUSH1 0x40
0000402a: MSTORE
0000402b: POP
0000402c: DUP2
0000402d: ADD
0000402e: SWAP1
0000402f: PUSH2 0x4038
00004032: SWAP2
00004033: SWAP1
00004034: PUSH2 0x5022
00004037: JUMP
00004038: JUMPDEST
00004039: SWAP1
0000403a: POP
0000403b: PUSH1 0x00
0000403d: DUP2
0000403e: SGT
0000403f: PUSH2 0x405a
00004042: JUMPI
00004043: PUSH1 0x40
00004045: MLOAD
00004046: PUSH3 0x461bcd
0000404a: PUSH1 0xe5
0000404c: SHL
0000404d: DUP2
0000404e: MSTORE
0000404f: PUSH1 0x04
00004051: ADD
00004052: PUSH2 0x08ca
00004055: SWAP1
00004056: PUSH2 0x5b08
00004059: JUMP
0000405a: JUMPDEST
0000405b: DUP3
0000405c: DUP1
0000405d: PUSH2 0x4070
00004060: JUMPI
00004061: POP
00004062: DUP4
00004063: PUSH1 0x40
00004065: ADD
00004066: MLOAD
00004067: DUP1
00004068: ISZERO
00004069: PUSH2 0x4070
0000406c: JUMPI
0000406d: POP
0000406e: DUP3
0000406f: ISZERO
00004070: JUMPDEST
00004071: ISZERO
00004072: PUSH2 0x2af3
00004075: JUMPI
00004076: PUSH1 0x20
00004078: DUP5
00004079: ADD
0000407a: MLOAD
0000407b: PUSH2 0x4099
0000407e: SWAP1
0000407f: DUP3
00004080: SWAP1
00004081: PUSH2 0x2ebb
00004084: SWAP1
00004085: PUSH1 0x01
00004087: PUSH1 0x01
00004089: PUSH1 0x80
0000408b: SHL
0000408c: SUB
0000408d: AND
0000408e: DUP1
0000408f: PUSH4 0xffffffff
00004094: PUSH2 0x40c2
00004097: AND
00004098: JUMP
00004099: JUMPDEST
0000409a: SWAP2
0000409b: POP
0000409c: POP
0000409d: PUSH2 0x2262
000040a0: JUMP
000040a1: JUMPDEST
000040a2: PUSH1 0x00
000040a4: DUP1
000040a5: DUP3
000040a6: SLT
000040a7: ISZERO
000040a8: PUSH2 0x40bb
000040ab: JUMPI
000040ac: PUSH2 0x40b4
000040af: DUP3
000040b0: PUSH2 0x361b
000040b3: JUMP
000040b4: JUMPDEST
000040b5: SWAP1
000040b6: POP
000040b7: PUSH2 0x0c9d
000040ba: JUMP
000040bb: JUMPDEST
000040bc: POP
000040bd: DUP1
000040be: PUSH2 0x0c9d
000040c1: JUMP
000040c2: JUMPDEST
000040c3: PUSH1 0x00
000040c5: DUP3
000040c6: PUSH2 0x40d1
000040c9: JUMPI
000040ca: POP
000040cb: PUSH1 0x00
000040cd: PUSH2 0x2262
000040d0: JUMP
000040d1: JUMPDEST
000040d2: DUP3
000040d3: DUP3
000040d4: MUL
000040d5: DUP3
000040d6: DUP5
000040d7: DUP3
000040d8: DUP2
000040d9: PUSH2 0x40de
000040dc: JUMPI
000040dd: INVALID
000040de: JUMPDEST
000040df: DIV
000040e0: EQ
000040e1: PUSH2 0x2af3
000040e4: JUMPI
000040e5: PUSH1 0x40
000040e7: MLOAD
000040e8: PUSH3 0x461bcd
000040ec: PUSH1 0xe5
000040ee: SHL
000040ef: DUP2
000040f0: MSTORE
000040f1: PUSH1 0x04
000040f3: ADD
000040f4: PUSH2 0x08ca
000040f7: SWAP1
000040f8: PUSH2 0x5c26
000040fb: JUMP
000040fc: JUMPDEST
000040fd: PUSH1 0x00
000040ff: PUSH2 0x2af3
00004102: DUP4
00004103: DUP4
00004104: PUSH1 0x40
00004106: MLOAD
00004107: DUP1
00004108: PUSH1 0x40
0000410a: ADD
0000410b: PUSH1 0x40
0000410d: MSTORE
0000410e: DUP1
0000410f: PUSH1 0x03
00004111: DUP2
00004112: MSTORE
00004113: PUSH1 0x20
00004115: ADD
00004116: PUSH3 0x313131
0000411a: PUSH1 0xe8
0000411c: SHL
0000411d: DUP2
0000411e: MSTORE
0000411f: POP
00004120: PUSH2 0x4479
00004123: JUMP
00004124: JUMPDEST
00004125: PUSH1 0x00
00004127: DUP2
00004128: DUP4
00004129: SUB
0000412a: DUP2
0000412b: DUP4
0000412c: SLT
0000412d: DUP1
0000412e: ISZERO
0000412f: SWAP1
00004130: PUSH2 0x4139
00004133: JUMPI
00004134: POP
00004135: DUP4
00004136: DUP2
00004137: SGT
00004138: ISZERO
00004139: JUMPDEST
0000413a: DUP1
0000413b: PUSH2 0x414e
0000413e: JUMPI
0000413f: POP
00004140: PUSH1 0x00
00004142: DUP4
00004143: SLT
00004144: DUP1
00004145: ISZERO
00004146: PUSH2 0x414e
00004149: JUMPI
0000414a: POP
0000414b: DUP4
0000414c: DUP2
0000414d: SGT
0000414e: JUMPDEST
0000414f: PUSH2 0x2af3
00004152: JUMPI
00004153: PUSH1 0x40
00004155: MLOAD
00004156: PUSH3 0x461bcd
0000415a: PUSH1 0xe5
0000415c: SHL
0000415d: DUP2
0000415e: MSTORE
0000415f: PUSH1 0x04
00004161: ADD
00004162: PUSH2 0x08ca
00004165: SWAP1
00004166: PUSH2 0x5c43
00004169: JUMP
0000416a: JUMPDEST
0000416b: PUSH1 0x00
0000416d: DUP1
0000416e: PUSH2 0x4178
00004171: DUP6
00004172: PUSH1 0x00
00004174: PUSH2 0x3fc0
00004177: JUMP
00004178: JUMPDEST
00004179: SWAP1
0000417a: POP
0000417b: PUSH2 0xffff
0000417e: DUP4
0000417f: AND
00004180: ISZERO
00004181: PUSH2 0x2ef5
00004184: JUMPI
00004185: PUSH1 0x00
00004187: PUSH2 0x4191
0000418a: DUP6
0000418b: PUSH1 0x00
0000418d: PUSH2 0x3fc0
00004190: JUMP
00004191: JUMPDEST
00004192: SWAP1
00004193: POP
00004194: PUSH2 0x41b7
00004197: DUP2
00004198: PUSH2 0x2ebb
0000419b: DUP8
0000419c: PUSH1 0x20
0000419e: ADD
0000419f: MLOAD
000041a0: PUSH1 0x01
000041a2: PUSH1 0x01
000041a4: PUSH1 0x80
000041a6: SHL
000041a7: SUB
000041a8: AND
000041a9: DUP6
000041aa: PUSH2 0x40c2
000041ad: SWAP1
000041ae: SWAP2
000041af: SWAP1
000041b0: PUSH4 0xffffffff
000041b5: AND
000041b6: JUMP
000041b7: JUMPDEST
000041b8: SWAP7
000041b9: SWAP6
000041ba: POP
000041bb: POP
000041bc: POP
000041bd: POP
000041be: POP
000041bf: POP
000041c0: JUMP
000041c1: JUMPDEST
000041c2: PUSH1 0x00
000041c4: PUSH2 0x41cb
000041c7: PUSH2 0x304a
000041ca: JUMP
000041cb: JUMPDEST
000041cc: PUSH1 0x01
000041ce: PUSH1 0x01
000041d0: PUSH1 0xa0
000041d2: SHL
000041d3: SUB
000041d4: AND
000041d5: PUSH4 0xf83ccdae
000041da: DUP4
000041db: PUSH1 0x40
000041dd: MLOAD
000041de: DUP3
000041df: PUSH4 0xffffffff
000041e4: AND
000041e5: PUSH1 0xe0
000041e7: SHL
000041e8: DUP2
000041e9: MSTORE
000041ea: PUSH1 0x04
000041ec: ADD
000041ed: PUSH2 0x41f6
000041f0: SWAP2
000041f1: SWAP1
000041f2: PUSH2 0x5575
000041f5: JUMP
000041f6: JUMPDEST
000041f7: PUSH1 0x20
000041f9: PUSH1 0x40
000041fb: MLOAD
000041fc: DUP1
000041fd: DUP4
000041fe: SUB
000041ff: DUP2
00004200: PUSH1 0x00
00004202: DUP8
00004203: DUP1
00004204: EXTCODESIZE
00004205: ISZERO
00004206: DUP1
00004207: ISZERO
00004208: PUSH2 0x4210
0000420b: JUMPI
0000420c: PUSH1 0x00
0000420e: DUP1
0000420f: REVERT
00004210: JUMPDEST
00004211: POP
00004212: GAS
00004213: CALL
00004214: ISZERO
00004215: DUP1
00004216: ISZERO
00004217: PUSH2 0x4224
0000421a: JUMPI
0000421b: RETURNDATASIZE
0000421c: PUSH1 0x00
0000421e: DUP1
0000421f: RETURNDATACOPY
00004220: RETURNDATASIZE
00004221: PUSH1 0x00
00004223: REVERT
00004224: JUMPDEST
00004225: POP
00004226: POP
00004227: POP
00004228: POP
00004229: PUSH1 0x40
0000422b: MLOAD
0000422c: RETURNDATASIZE
0000422d: PUSH1 0x1f
0000422f: NOT
00004230: PUSH1 0x1f
00004232: DUP3
00004233: ADD
00004234: AND
00004235: DUP3
00004236: ADD
00004237: DUP1
00004238: PUSH1 0x40
0000423a: MSTORE
0000423b: POP
0000423c: DUP2
0000423d: ADD
0000423e: SWAP1
0000423f: PUSH2 0x2262
00004242: SWAP2
00004243: SWAP1
00004244: PUSH2 0x5022
00004247: JUMP
00004248: JUMPDEST
00004249: PUSH1 0x00
0000424b: DUP2
0000424c: PUSH1 0x20
0000424e: ADD
0000424f: MLOAD
00004250: ISZERO
00004251: PUSH2 0x4387
00004254: JUMPI
00004255: PUSH1 0x40
00004257: MLOAD
00004258: PUSH4 0x70a08231
0000425d: PUSH1 0xe0
0000425f: SHL
00004260: DUP2
00004261: MSTORE
00004262: PUSH1 0x00
00004264: SWAP1
00004265: PUSH1 0x01
00004267: PUSH1 0x01
00004269: PUSH1 0xa0
0000426b: SHL
0000426c: SUB
0000426d: DUP8
0000426e: AND
0000426f: SWAP1
00004270: PUSH4 0x70a08231
00004275: SWAP1
00004276: PUSH2 0x4283
00004279: SWAP1
0000427a: ADDRESS
0000427b: SWAP1
0000427c: PUSH1 0x04
0000427e: ADD
0000427f: PUSH2 0x5575
00004282: JUMP
00004283: JUMPDEST
00004284: PUSH1 0x20
00004286: PUSH1 0x40
00004288: MLOAD
00004289: DUP1
0000428a: DUP4
0000428b: SUB
0000428c: DUP2
0000428d: DUP7
0000428e: DUP1
0000428f: EXTCODESIZE
00004290: ISZERO
00004291: DUP1
00004292: ISZERO
00004293: PUSH2 0x429b
00004296: JUMPI
00004297: PUSH1 0x00
00004299: DUP1
0000429a: REVERT
0000429b: JUMPDEST
0000429c: POP
0000429d: GAS
0000429e: STATICCALL
0000429f: ISZERO
000042a0: DUP1
000042a1: ISZERO
000042a2: PUSH2 0x42af
000042a5: JUMPI
000042a6: RETURNDATASIZE
000042a7: PUSH1 0x00
000042a9: DUP1
000042aa: RETURNDATACOPY
000042ab: RETURNDATASIZE
000042ac: PUSH1 0x00
000042ae: REVERT
000042af: JUMPDEST
000042b0: POP
000042b1: POP
000042b2: POP
000042b3: POP
000042b4: PUSH1 0x40
000042b6: MLOAD
000042b7: RETURNDATASIZE
000042b8: PUSH1 0x1f
000042ba: NOT
000042bb: PUSH1 0x1f
000042bd: DUP3
000042be: ADD
000042bf: AND
000042c0: DUP3
000042c1: ADD
000042c2: DUP1
000042c3: PUSH1 0x40
000042c5: MSTORE
000042c6: POP
000042c7: DUP2
000042c8: ADD
000042c9: SWAP1
000042ca: PUSH2 0x42d3
000042cd: SWAP2
000042ce: SWAP1
000042cf: PUSH2 0x5022
000042d2: JUMP
000042d3: JUMPDEST
000042d4: SWAP1
000042d5: POP
000042d6: PUSH2 0x42ea
000042d9: DUP7
000042da: DUP7
000042db: ADDRESS
000042dc: DUP8
000042dd: PUSH1 0x01
000042df: PUSH1 0x01
000042e1: PUSH1 0x80
000042e3: SHL
000042e4: SUB
000042e5: AND
000042e6: PUSH2 0x44b0
000042e9: JUMP
000042ea: JUMPDEST
000042eb: PUSH1 0x40
000042ed: MLOAD
000042ee: PUSH4 0x70a08231
000042f3: PUSH1 0xe0
000042f5: SHL
000042f6: DUP2
000042f7: MSTORE
000042f8: PUSH1 0x00
000042fa: SWAP1
000042fb: PUSH1 0x01
000042fd: PUSH1 0x01
000042ff: PUSH1 0xa0
00004301: SHL
00004302: SUB
00004303: DUP9
00004304: AND
00004305: SWAP1
00004306: PUSH4 0x70a08231
0000430b: SWAP1
0000430c: PUSH2 0x4319
0000430f: SWAP1
00004310: ADDRESS
00004311: SWAP1
00004312: PUSH1 0x04
00004314: ADD
00004315: PUSH2 0x5575
00004318: JUMP
00004319: JUMPDEST
0000431a: PUSH1 0x20
0000431c: PUSH1 0x40
0000431e: MLOAD
0000431f: DUP1
00004320: DUP4
00004321: SUB
00004322: DUP2
00004323: DUP7
00004324: DUP1
00004325: EXTCODESIZE
00004326: ISZERO
00004327: DUP1
00004328: ISZERO
00004329: PUSH2 0x4331
0000432c: JUMPI
0000432d: PUSH1 0x00
0000432f: DUP1
00004330: REVERT
00004331: JUMPDEST
00004332: POP
00004333: GAS
00004334: STATICCALL
00004335: ISZERO
00004336: DUP1
00004337: ISZERO
00004338: PUSH2 0x4345
0000433b: JUMPI
0000433c: RETURNDATASIZE
0000433d: PUSH1 0x00
0000433f: DUP1
00004340: RETURNDATACOPY
00004341: RETURNDATASIZE
00004342: PUSH1 0x00
00004344: REVERT
00004345: JUMPDEST
00004346: POP
00004347: POP
00004348: POP
00004349: POP
0000434a: PUSH1 0x40
0000434c: MLOAD
0000434d: RETURNDATASIZE
0000434e: PUSH1 0x1f
00004350: NOT
00004351: PUSH1 0x1f
00004353: DUP3
00004354: ADD
00004355: AND
00004356: DUP3
00004357: ADD
00004358: DUP1
00004359: PUSH1 0x40
0000435b: MSTORE
0000435c: POP
0000435d: DUP2
0000435e: ADD
0000435f: SWAP1
00004360: PUSH2 0x4369
00004363: SWAP2
00004364: SWAP1
00004365: PUSH2 0x5022
00004368: JUMP
00004369: JUMPDEST
0000436a: SWAP1
0000436b: POP
0000436c: PUSH2 0x437e
0000436f: PUSH2 0x2ec7
00004372: DUP3
00004373: DUP5
00004374: PUSH4 0xffffffff
00004379: PUSH2 0x44d1
0000437c: AND
0000437d: JUMP
0000437e: JUMPDEST
0000437f: SWAP5
00004380: POP
00004381: POP
00004382: POP
00004383: PUSH2 0x440a
00004386: JUMP
00004387: JUMPDEST
00004388: DUP2
00004389: MLOAD
0000438a: ISZERO
0000438b: PUSH2 0x43f5
0000438e: JUMPI
0000438f: PUSH1 0x40
00004391: MLOAD
00004392: PUSH4 0x62ad1b83
00004397: PUSH1 0xe0
00004399: SHL
0000439a: DUP2
0000439b: MSTORE
0000439c: PUSH1 0x01
0000439e: PUSH1 0x01
000043a0: PUSH1 0xa0
000043a2: SHL
000043a3: SUB
000043a4: DUP7
000043a5: AND
000043a6: SWAP1
000043a7: PUSH4 0x62ad1b83
000043ac: SWAP1
000043ad: PUSH2 0x43be
000043b0: SWAP1
000043b1: DUP8
000043b2: SWAP1
000043b3: ADDRESS
000043b4: SWAP1
000043b5: DUP9
000043b6: SWAP1
000043b7: PUSH1 0x04
000043b9: ADD
000043ba: PUSH2 0x5652
000043bd: JUMP
000043be: JUMPDEST
000043bf: PUSH1 0x00
000043c1: PUSH1 0x40
000043c3: MLOAD
000043c4: DUP1
000043c5: DUP4
000043c6: SUB
000043c7: DUP2
000043c8: PUSH1 0x00
000043ca: DUP8
000043cb: DUP1
000043cc: EXTCODESIZE
000043cd: ISZERO
000043ce: DUP1
000043cf: ISZERO
000043d0: PUSH2 0x43d8
000043d3: JUMPI
000043d4: PUSH1 0x00
000043d6: DUP1
000043d7: REVERT
000043d8: JUMPDEST
000043d9: POP
000043da: GAS
000043db: CALL
000043dc: ISZERO
000043dd: DUP1
000043de: ISZERO
000043df: PUSH2 0x43ec
000043e2: JUMPI
000043e3: RETURNDATASIZE
000043e4: PUSH1 0x00
000043e6: DUP1
000043e7: RETURNDATACOPY
000043e8: RETURNDATASIZE
000043e9: PUSH1 0x00
000043eb: REVERT
000043ec: JUMPDEST
000043ed: POP
000043ee: POP
000043ef: POP
000043f0: POP
000043f1: PUSH2 0x440a
000043f4: JUMP
000043f5: JUMPDEST
000043f6: PUSH2 0x440a
000043f9: DUP6
000043fa: DUP6
000043fb: ADDRESS
000043fc: DUP7
000043fd: PUSH1 0x01
000043ff: PUSH1 0x01
00004401: PUSH1 0x80
00004403: SHL
00004404: SUB
00004405: AND
00004406: PUSH2 0x44b0
00004409: JUMP
0000440a: JUMPDEST
0000440b: POP
0000440c: SWAP1
0000440d: SWAP4
0000440e: SWAP3
0000440f: POP
00004410: POP
00004411: POP
00004412: JUMP
00004413: JUMPDEST
00004414: PUSH1 0x01
00004416: PUSH1 0xfd
00004418: SHL
00004419: SWAP1
0000441a: DUP2
0000441b: AND
0000441c: EQ
0000441d: SWAP1
0000441e: JUMP
0000441f: JUMPDEST
00004420: SWAP1
00004421: SSTORE
00004422: JUMP
00004423: JUMPDEST
00004424: PUSH2 0x09cb
00004427: DUP4
00004428: PUSH4 0xa9059cbb
0000442d: PUSH1 0xe0
0000442f: SHL
00004430: DUP5
00004431: DUP5
00004432: PUSH1 0x40
00004434: MLOAD
00004435: PUSH1 0x24
00004437: ADD
00004438: PUSH2 0x4442
0000443b: SWAP3
0000443c: SWAP2
0000443d: SWAP1
0000443e: PUSH2 0x5853
00004441: JUMP
00004442: JUMPDEST
00004443: PUSH1 0x40
00004445: DUP1
00004446: MLOAD
00004447: PUSH1 0x1f
00004449: NOT
0000444a: DUP2
0000444b: DUP5
0000444c: SUB
0000444d: ADD
0000444e: DUP2
0000444f: MSTORE
00004450: SWAP2
00004451: SWAP1
00004452: MSTORE
00004453: PUSH1 0x20
00004455: DUP2
00004456: ADD
00004457: DUP1
00004458: MLOAD
00004459: PUSH1 0x01
0000445b: PUSH1 0x01
0000445d: PUSH1 0xe0
0000445f: SHL
00004460: SUB
00004461: AND
00004462: PUSH1 0x01
00004464: PUSH1 0x01
00004466: PUSH1 0xe0
00004468: SHL
00004469: SUB
0000446a: NOT
0000446b: SWAP1
0000446c: SWAP4
0000446d: AND
0000446e: SWAP3
0000446f: SWAP1
00004470: SWAP3
00004471: OR
00004472: SWAP1
00004473: SWAP2
00004474: MSTORE
00004475: PUSH2 0x44f9
00004478: JUMP
00004479: JUMPDEST
0000447a: PUSH1 0x00
0000447c: DUP2
0000447d: DUP4
0000447e: PUSH2 0x449a
00004481: JUMPI
00004482: PUSH1 0x40
00004484: MLOAD
00004485: PUSH3 0x461bcd
00004489: PUSH1 0xe5
0000448b: SHL
0000448c: DUP2
0000448d: MSTORE
0000448e: PUSH1 0x04
00004490: ADD
00004491: PUSH2 0x08ca
00004494: SWAP2
00004495: SWAP1
00004496: PUSH2 0x58d6
00004499: JUMP
0000449a: JUMPDEST
0000449b: POP
0000449c: PUSH1 0x00
0000449e: DUP4
0000449f: DUP6
000044a0: DUP2
000044a1: PUSH2 0x44a6
000044a4: JUMPI
000044a5: INVALID
000044a6: JUMPDEST
000044a7: DIV
000044a8: SWAP6
000044a9: SWAP5
000044aa: POP
000044ab: POP
000044ac: POP
000044ad: POP
000044ae: POP
000044af: JUMP
000044b0: JUMPDEST
000044b1: PUSH2 0x1886
000044b4: DUP5
000044b5: PUSH4 0x23b872dd
000044ba: PUSH1 0xe0
000044bc: SHL
000044bd: DUP6
000044be: DUP6
000044bf: DUP6
000044c0: PUSH1 0x40
000044c2: MLOAD
000044c3: PUSH1 0x24
000044c5: ADD
000044c6: PUSH2 0x4442
000044c9: SWAP4
000044ca: SWAP3
000044cb: SWAP2
000044cc: SWAP1
000044cd: PUSH2 0x56d2
000044d0: JUMP
000044d1: JUMPDEST
000044d2: PUSH1 0x00
000044d4: PUSH2 0x2af3
000044d7: DUP4
000044d8: DUP4
000044d9: PUSH1 0x40
000044db: MLOAD
000044dc: DUP1
000044dd: PUSH1 0x40
000044df: ADD
000044e0: PUSH1 0x40
000044e2: MSTORE
000044e3: DUP1
000044e4: PUSH1 0x03
000044e6: DUP2
000044e7: MSTORE
000044e8: PUSH1 0x20
000044ea: ADD
000044eb: PUSH3 0x313039
000044ef: PUSH1 0xe8
000044f1: SHL
000044f2: DUP2
000044f3: MSTORE
000044f4: POP
000044f5: PUSH2 0x4588
000044f8: JUMP
000044f9: JUMPDEST
000044fa: PUSH1 0x60
000044fc: PUSH2 0x454e
000044ff: DUP3
00004500: PUSH1 0x40
00004502: MLOAD
00004503: DUP1
00004504: PUSH1 0x40
00004506: ADD
00004507: PUSH1 0x40
00004509: MSTORE
0000450a: DUP1
0000450b: PUSH1 0x20
0000450d: DUP2
0000450e: MSTORE
0000450f: PUSH1 0x20
00004511: ADD
00004512: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00004533: DUP2
00004534: MSTORE
00004535: POP
00004536: DUP6
00004537: PUSH1 0x01
00004539: PUSH1 0x01
0000453b: PUSH1 0xa0
0000453d: SHL
0000453e: SUB
0000453f: AND
00004540: PUSH2 0x45b4
00004543: SWAP1
00004544: SWAP3
00004545: SWAP2
00004546: SWAP1
00004547: PUSH4 0xffffffff
0000454c: AND
0000454d: JUMP
0000454e: JUMPDEST
0000454f: DUP1
00004550: MLOAD
00004551: SWAP1
00004552: SWAP2
00004553: POP
00004554: ISZERO
00004555: PUSH2 0x09cb
00004558: JUMPI
00004559: DUP1
0000455a: DUP1
0000455b: PUSH1 0x20
0000455d: ADD
0000455e: SWAP1
0000455f: MLOAD
00004560: DUP2
00004561: ADD
00004562: SWAP1
00004563: PUSH2 0x456c
00004566: SWAP2
00004567: SWAP1
00004568: PUSH2 0x4fe6
0000456b: JUMP
0000456c: JUMPDEST
0000456d: PUSH2 0x09cb
00004570: JUMPI
00004571: PUSH1 0x40
00004573: MLOAD
00004574: PUSH3 0x461bcd
00004578: PUSH1 0xe5
0000457a: SHL
0000457b: DUP2
0000457c: MSTORE
0000457d: PUSH1 0x04
0000457f: ADD
00004580: PUSH2 0x08ca
00004583: SWAP1
00004584: PUSH2 0x5c87
00004587: JUMP
00004588: JUMPDEST
00004589: PUSH1 0x00
0000458b: DUP2
0000458c: DUP5
0000458d: DUP5
0000458e: GT
0000458f: ISZERO
00004590: PUSH2 0x45ac
00004593: JUMPI
00004594: PUSH1 0x40
00004596: MLOAD
00004597: PUSH3 0x461bcd
0000459b: PUSH1 0xe5
0000459d: SHL
0000459e: DUP2
0000459f: MSTORE
000045a0: PUSH1 0x04
000045a2: ADD
000045a3: PUSH2 0x08ca
000045a6: SWAP2
000045a7: SWAP1
000045a8: PUSH2 0x58d6
000045ab: JUMP
000045ac: JUMPDEST
000045ad: POP
000045ae: POP
000045af: POP
000045b0: SWAP1
000045b1: SUB
000045b2: SWAP1
000045b3: JUMP
000045b4: JUMPDEST
000045b5: PUSH1 0x60
000045b7: PUSH2 0x2ef5
000045ba: DUP5
000045bb: DUP5
000045bc: PUSH1 0x00
000045be: DUP6
000045bf: PUSH1 0x60
000045c1: PUSH2 0x45c9
000045c4: DUP6
000045c5: PUSH2 0x4682
000045c8: JUMP
000045c9: JUMPDEST
000045ca: PUSH2 0x45e5
000045cd: JUMPI
000045ce: PUSH1 0x40
000045d0: MLOAD
000045d1: PUSH3 0x461bcd
000045d5: PUSH1 0xe5
000045d7: SHL
000045d8: DUP2
000045d9: MSTORE
000045da: PUSH1 0x04
000045dc: ADD
000045dd: PUSH2 0x08ca
000045e0: SWAP1
000045e1: PUSH2 0x5bb9
000045e4: JUMP
000045e5: JUMPDEST
000045e6: PUSH1 0x00
000045e8: PUSH1 0x60
000045ea: DUP7
000045eb: PUSH1 0x01
000045ed: PUSH1 0x01
000045ef: PUSH1 0xa0
000045f1: SHL
000045f2: SUB
000045f3: AND
000045f4: DUP6
000045f5: DUP8
000045f6: PUSH1 0x40
000045f8: MLOAD
000045f9: PUSH2 0x4602
000045fc: SWAP2
000045fd: SWAP1
000045fe: PUSH2 0x5556
00004601: JUMP
00004602: JUMPDEST
00004603: PUSH1 0x00
00004605: PUSH1 0x40
00004607: MLOAD
00004608: DUP1
00004609: DUP4
0000460a: SUB
0000460b: DUP2
0000460c: DUP6
0000460d: DUP8
0000460e: GAS
0000460f: CALL
00004610: SWAP3
00004611: POP
00004612: POP
00004613: POP
00004614: RETURNDATASIZE
00004615: DUP1
00004616: PUSH1 0x00
00004618: DUP2
00004619: EQ
0000461a: PUSH2 0x463f
0000461d: JUMPI
0000461e: PUSH1 0x40
00004620: MLOAD
00004621: SWAP2
00004622: POP
00004623: PUSH1 0x1f
00004625: NOT
00004626: PUSH1 0x3f
00004628: RETURNDATASIZE
00004629: ADD
0000462a: AND
0000462b: DUP3
0000462c: ADD
0000462d: PUSH1 0x40
0000462f: MSTORE
00004630: RETURNDATASIZE
00004631: DUP3
00004632: MSTORE
00004633: RETURNDATASIZE
00004634: PUSH1 0x00
00004636: PUSH1 0x20
00004638: DUP5
00004639: ADD
0000463a: RETURNDATACOPY
0000463b: PUSH2 0x4644
0000463e: JUMP
0000463f: JUMPDEST
00004640: PUSH1 0x60
00004642: SWAP2
00004643: POP
00004644: JUMPDEST
00004645: POP
00004646: SWAP2
00004647: POP
00004648: SWAP2
00004649: POP
0000464a: DUP2
0000464b: ISZERO
0000464c: PUSH2 0x4658
0000464f: JUMPI
00004650: SWAP2
00004651: POP
00004652: PUSH2 0x2ef5
00004655: SWAP1
00004656: POP
00004657: JUMP
00004658: JUMPDEST
00004659: DUP1
0000465a: MLOAD
0000465b: ISZERO
0000465c: PUSH2 0x4668
0000465f: JUMPI
00004660: DUP1
00004661: MLOAD
00004662: DUP1
00004663: DUP3
00004664: PUSH1 0x20
00004666: ADD
00004667: REVERT
00004668: JUMPDEST
00004669: DUP4
0000466a: PUSH1 0x40
0000466c: MLOAD
0000466d: PUSH3 0x461bcd
00004671: PUSH1 0xe5
00004673: SHL
00004674: DUP2
00004675: MSTORE
00004676: PUSH1 0x04
00004678: ADD
00004679: PUSH2 0x08ca
0000467c: SWAP2
0000467d: SWAP1
0000467e: PUSH2 0x58d6
00004681: JUMP
00004682: JUMPDEST
00004683: EXTCODESIZE
00004684: ISZERO
00004685: ISZERO
00004686: SWAP1
00004687: JUMP
00004688: JUMPDEST
00004689: PUSH1 0x40
0000468b: DUP1
0000468c: MLOAD
0000468d: PUSH1 0x80
0000468f: DUP2
00004690: ADD
00004691: DUP3
00004692: MSTORE
00004693: PUSH1 0x00
00004695: DUP1
00004696: DUP3
00004697: MSTORE
00004698: PUSH1 0x20
0000469a: DUP3
0000469b: ADD
0000469c: DUP2
0000469d: SWAP1
0000469e: MSTORE
0000469f: SWAP2
000046a0: DUP2
000046a1: ADD
000046a2: DUP3
000046a3: SWAP1
000046a4: MSTORE
000046a5: PUSH1 0x60
000046a7: DUP2
000046a8: ADD
000046a9: SWAP2
000046aa: SWAP1
000046ab: SWAP2
000046ac: MSTORE
000046ad: SWAP1
000046ae: JUMP
000046af: JUMPDEST
000046b0: PUSH1 0x40
000046b2: DUP1
000046b3: MLOAD
000046b4: PUSH1 0xa0
000046b6: DUP2
000046b7: ADD
000046b8: DUP3
000046b9: MSTORE
000046ba: PUSH1 0x00
000046bc: DUP1
000046bd: DUP3
000046be: MSTORE
000046bf: PUSH1 0x20
000046c1: DUP3
000046c2: ADD
000046c3: DUP2
000046c4: SWAP1
000046c5: MSTORE
000046c6: SWAP2
000046c7: DUP2
000046c8: ADD
000046c9: DUP3
000046ca: SWAP1
000046cb: MSTORE
000046cc: PUSH1 0x60
000046ce: DUP2
000046cf: ADD
000046d0: DUP3
000046d1: SWAP1
000046d2: MSTORE
000046d3: PUSH1 0x80
000046d5: DUP2
000046d6: ADD
000046d7: SWAP2
000046d8: SWAP1
000046d9: SWAP2
000046da: MSTORE
000046db: SWAP1
000046dc: JUMP
000046dd: JUMPDEST
000046de: PUSH1 0x40
000046e0: MLOAD
000046e1: DUP1
000046e2: PUSH1 0xc0
000046e4: ADD
000046e5: PUSH1 0x40
000046e7: MSTORE
000046e8: DUP1
000046e9: PUSH1 0x00
000046eb: DUP2
000046ec: MSTORE
000046ed: PUSH1 0x20
000046ef: ADD
000046f0: PUSH1 0x00
000046f2: PUSH2 0xffff
000046f5: AND
000046f6: DUP2
000046f7: MSTORE
000046f8: PUSH1 0x20
000046fa: ADD
000046fb: PUSH1 0x00
000046fd: PUSH2 0xffff
00004700: AND
00004701: DUP2
00004702: MSTORE
00004703: PUSH1 0x20
00004705: ADD
00004706: PUSH1 0x00
00004708: DUP2
00004709: MSTORE
0000470a: PUSH1 0x20
0000470c: ADD
0000470d: PUSH1 0x00
0000470f: DUP2
00004710: MSTORE
00004711: PUSH1 0x20
00004713: ADD
00004714: PUSH2 0x471b
00004717: PUSH2 0x4688
0000471a: JUMP
0000471b: JUMPDEST
0000471c: SWAP1
0000471d: MSTORE
0000471e: SWAP1
0000471f: JUMP
00004720: JUMPDEST
00004721: PUSH1 0x40
00004723: MLOAD
00004724: DUP1
00004725: PUSH1 0xa0
00004727: ADD
00004728: PUSH1 0x40
0000472a: MSTORE
0000472b: DUP1
0000472c: PUSH1 0x00
0000472e: DUP2
0000472f: MSTORE
00004730: PUSH1 0x20
00004732: ADD
00004733: PUSH1 0x00
00004735: DUP2
00004736: MSTORE
00004737: PUSH1 0x20
00004739: ADD
0000473a: PUSH1 0x00
0000473c: DUP2
0000473d: MSTORE
0000473e: PUSH1 0x20
00004740: ADD
00004741: PUSH1 0x00
00004743: DUP2
00004744: MSTORE
00004745: PUSH1 0x20
00004747: ADD
00004748: PUSH1 0x00
0000474a: DUP2
0000474b: MSTORE
0000474c: POP
0000474d: SWAP1
0000474e: JUMP
0000474f: JUMPDEST
00004750: PUSH1 0x40
00004752: MLOAD
00004753: DUP1
00004754: PUSH1 0x80
00004756: ADD
00004757: PUSH1 0x40
00004759: MSTORE
0000475a: DUP1
0000475b: PUSH1 0x00
0000475d: DUP2
0000475e: MSTORE
0000475f: PUSH1 0x20
00004761: ADD
00004762: PUSH1 0x00
00004764: PUSH1 0x01
00004766: PUSH1 0x01
00004768: PUSH1 0x80
0000476a: SHL
0000476b: SUB
0000476c: AND
0000476d: DUP2
0000476e: MSTORE
0000476f: PUSH1 0x20
00004771: ADD
00004772: PUSH1 0x00
00004774: PUSH1 0x01
00004776: PUSH1 0x01
00004778: PUSH1 0x80
0000477a: SHL
0000477b: SUB
0000477c: AND
0000477d: DUP2
0000477e: MSTORE
0000477f: PUSH1 0x20
00004781: ADD
00004782: PUSH1 0x00
00004784: DUP2
00004785: MSTORE
00004786: POP
00004787: SWAP1
00004788: JUMP
00004789: JUMPDEST
0000478a: PUSH1 0x40
0000478c: DUP1
0000478d: MLOAD
0000478e: DUP1
0000478f: DUP3
00004790: ADD
00004791: SWAP1
00004792: SWAP2
00004793: MSTORE
00004794: PUSH1 0x00
00004796: DUP1
00004797: DUP3
00004798: MSTORE
00004799: PUSH1 0x20
0000479b: DUP3
0000479c: ADD
0000479d: MSTORE
0000479e: SWAP1
0000479f: JUMP
000047a0: JUMPDEST
000047a1: PUSH1 0x00
000047a3: DUP1
000047a4: DUP4
000047a5: PUSH1 0x1f
000047a7: DUP5
000047a8: ADD
000047a9: SLT
000047aa: PUSH2 0x47b1
000047ad: JUMPI
000047ae: DUP2
000047af: DUP3
000047b0: REVERT
000047b1: JUMPDEST
000047b2: POP
000047b3: DUP2
000047b4: CALLDATALOAD
000047b5: PUSH8 0xffffffffffffffff
000047be: DUP2
000047bf: GT
000047c0: ISZERO
000047c1: PUSH2 0x47c8
000047c4: JUMPI
000047c5: DUP2
000047c6: DUP3
000047c7: REVERT
000047c8: JUMPDEST
000047c9: PUSH1 0x20
000047cb: DUP4
000047cc: ADD
000047cd: SWAP2
000047ce: POP
000047cf: DUP4
000047d0: PUSH1 0x20
000047d2: DUP1
000047d3: DUP4
000047d4: MUL
000047d5: DUP6
000047d6: ADD
000047d7: ADD
000047d8: GT
000047d9: ISZERO
000047da: PUSH2 0x47e2
000047dd: JUMPI
000047de: PUSH1 0x00
000047e0: DUP1
000047e1: REVERT
000047e2: JUMPDEST
000047e3: SWAP3
000047e4: POP
000047e5: SWAP3
000047e6: SWAP1
000047e7: POP
000047e8: JUMP
000047e9: JUMPDEST
000047ea: PUSH1 0x00
000047ec: DUP1
000047ed: DUP4
000047ee: PUSH1 0x1f
000047f0: DUP5
000047f1: ADD
000047f2: SLT
000047f3: PUSH2 0x47fa
000047f6: JUMPI
000047f7: DUP2
000047f8: DUP3
000047f9: REVERT
000047fa: JUMPDEST
000047fb: POP
000047fc: DUP2
000047fd: CALLDATALOAD
000047fe: PUSH8 0xffffffffffffffff
00004807: DUP2
00004808: GT
00004809: ISZERO
0000480a: PUSH2 0x4811
0000480d: JUMPI
0000480e: DUP2
0000480f: DUP3
00004810: REVERT
00004811: JUMPDEST
00004812: PUSH1 0x20
00004814: DUP4
00004815: ADD
00004816: SWAP2
00004817: POP
00004818: DUP4
00004819: PUSH1 0x20
0000481b: DUP3
0000481c: DUP6
0000481d: ADD
0000481e: ADD
0000481f: GT
00004820: ISZERO
00004821: PUSH2 0x47e2
00004824: JUMPI
00004825: PUSH1 0x00
00004827: DUP1
00004828: REVERT
00004829: JUMPDEST
0000482a: PUSH1 0x00
0000482c: PUSH1 0xc0
0000482e: DUP3
0000482f: DUP5
00004830: SUB
00004831: SLT
00004832: ISZERO
00004833: PUSH2 0x483a
00004836: JUMPI
00004837: DUP1
00004838: DUP2
00004839: REVERT
0000483a: JUMPDEST
0000483b: PUSH2 0x4844
0000483e: PUSH1 0xc0
00004840: PUSH2 0x5e75
00004843: JUMP
00004844: JUMPDEST
00004845: SWAP1
00004846: POP
00004847: DUP2
00004848: MLOAD
00004849: PUSH2 0x4851
0000484c: DUP2
0000484d: PUSH2 0x5f42
00004850: JUMP
00004851: JUMPDEST
00004852: DUP2
00004853: MSTORE
00004854: PUSH1 0x20
00004856: DUP3
00004857: ADD
00004858: MLOAD
00004859: PUSH2 0x4861
0000485c: DUP2
0000485d: PUSH2 0x5f20
00004860: JUMP
00004861: JUMPDEST
00004862: PUSH1 0x20
00004864: DUP3
00004865: ADD
00004866: MSTORE
00004867: PUSH1 0x40
00004869: DUP3
0000486a: ADD
0000486b: MLOAD
0000486c: PUSH2 0x4874
0000486f: DUP2
00004870: PUSH2 0x5f30
00004873: JUMP
00004874: JUMPDEST
00004875: PUSH1 0x40
00004877: DUP3
00004878: ADD
00004879: MSTORE
0000487a: PUSH1 0x60
0000487c: DUP3
0000487d: ADD
0000487e: MLOAD
0000487f: PUSH1 0x01
00004881: PUSH1 0x01
00004883: PUSH1 0xf8
00004885: SHL
00004886: SUB
00004887: NOT
00004888: DUP2
00004889: AND
0000488a: DUP2
0000488b: EQ
0000488c: PUSH2 0x4894
0000488f: JUMPI
00004890: PUSH1 0x00
00004892: DUP1
00004893: REVERT
00004894: JUMPDEST
00004895: PUSH1 0x60
00004897: DUP3
00004898: ADD
00004899: MSTORE
0000489a: PUSH1 0x80
0000489c: DUP3
0000489d: ADD
0000489e: MLOAD
0000489f: PUSH2 0x48a7
000048a2: DUP2
000048a3: PUSH2 0x5f30
000048a6: JUMP
000048a7: JUMPDEST
000048a8: PUSH1 0x80
000048aa: DUP3
000048ab: ADD
000048ac: MSTORE
000048ad: PUSH1 0xa0
000048af: DUP3
000048b0: ADD
000048b1: MLOAD
000048b2: PUSH2 0x48ba
000048b5: DUP2
000048b6: PUSH2 0x5f0b
000048b9: JUMP
000048ba: JUMPDEST
000048bb: PUSH1 0xa0
000048bd: DUP3
000048be: ADD
000048bf: MSTORE
000048c0: SWAP3
000048c1: SWAP2
000048c2: POP
000048c3: POP
000048c4: JUMP
000048c5: JUMPDEST
000048c6: PUSH1 0x00
000048c8: PUSH1 0x60
000048ca: DUP3
000048cb: DUP5
000048cc: SUB
000048cd: SLT
000048ce: ISZERO
000048cf: PUSH2 0x48d6
000048d2: JUMPI
000048d3: DUP1
000048d4: DUP2
000048d5: REVERT
000048d6: JUMPDEST
000048d7: PUSH2 0x48e0
000048da: PUSH1 0x60
000048dc: PUSH2 0x5e75
000048df: JUMP
000048e0: JUMPDEST
000048e1: SWAP1
000048e2: POP
000048e3: DUP2
000048e4: CALLDATALOAD
000048e5: PUSH2 0x48ed
000048e8: DUP2
000048e9: PUSH2 0x5ee8
000048ec: JUMP
000048ed: JUMPDEST
000048ee: DUP2
000048ef: MSTORE
000048f0: PUSH1 0x20
000048f2: DUP3
000048f3: ADD
000048f4: CALLDATALOAD
000048f5: PUSH2 0x48fd
000048f8: DUP2
000048f9: PUSH2 0x5f20
000048fc: JUMP
000048fd: JUMPDEST
000048fe: PUSH1 0x20
00004900: DUP3
00004901: ADD
00004902: MSTORE
00004903: PUSH1 0x40
00004905: DUP3
00004906: ADD
00004907: CALLDATALOAD
00004908: PUSH2 0x4910
0000490b: DUP2
0000490c: PUSH2 0x5f0b
0000490f: JUMP
00004910: JUMPDEST
00004911: PUSH1 0x40
00004913: DUP3
00004914: ADD
00004915: MSTORE
00004916: SWAP3
00004917: SWAP2
00004918: POP
00004919: POP
0000491a: JUMP
0000491b: JUMPDEST
0000491c: DUP1
0000491d: CALLDATALOAD
0000491e: PUSH2 0x2262
00004921: DUP2
00004922: PUSH2 0x5f0b
00004925: JUMP
00004926: JUMPDEST
00004927: DUP1
00004928: CALLDATALOAD
00004929: PUSH2 0x2262
0000492c: DUP2
0000492d: PUSH2 0x5f20
00004930: JUMP
00004931: JUMPDEST
00004932: PUSH1 0x00
00004934: PUSH1 0x20
00004936: DUP3
00004937: DUP5
00004938: SUB
00004939: SLT
0000493a: ISZERO
0000493b: PUSH2 0x4942
0000493e: JUMPI
0000493f: DUP1
00004940: DUP2
00004941: REVERT
00004942: JUMPDEST
00004943: DUP2
00004944: CALLDATALOAD
00004945: PUSH2 0x2af3
00004948: DUP2
00004949: PUSH2 0x5ee8
0000494c: JUMP
0000494d: JUMPDEST
0000494e: PUSH1 0x00
00004950: DUP1
00004951: PUSH1 0x40
00004953: DUP4
00004954: DUP6
00004955: SUB
00004956: SLT
00004957: ISZERO
00004958: PUSH2 0x495f
0000495b: JUMPI
0000495c: DUP1
0000495d: DUP2
0000495e: REVERT
0000495f: JUMPDEST
00004960: DUP3
00004961: CALLDATALOAD
00004962: PUSH2 0x496a
00004965: DUP2
00004966: PUSH2 0x5ee8
00004969: JUMP
0000496a: JUMPDEST
0000496b: SWAP2
0000496c: POP
0000496d: PUSH1 0x20
0000496f: DUP4
00004970: ADD
00004971: CALLDATALOAD
00004972: PUSH2 0x497a
00004975: DUP2
00004976: PUSH2 0x5ee8
00004979: JUMP
0000497a: JUMPDEST
0000497b: DUP1
0000497c: SWAP2
0000497d: POP
0000497e: POP
0000497f: SWAP3
00004980: POP
00004981: SWAP3
00004982: SWAP1
00004983: POP
00004984: JUMP
00004985: JUMPDEST
00004986: PUSH1 0x00
00004988: DUP1
00004989: PUSH1 0x00
0000498b: DUP1
0000498c: PUSH1 0x80
0000498e: DUP6
0000498f: DUP8
00004990: SUB
00004991: SLT
00004992: ISZERO
00004993: PUSH2 0x499a
00004996: JUMPI
00004997: DUP2
00004998: DUP3
00004999: REVERT
0000499a: JUMPDEST
0000499b: DUP5
0000499c: CALLDATALOAD
0000499d: PUSH2 0x49a5
000049a0: DUP2
000049a1: PUSH2 0x5ee8
000049a4: JUMP
000049a5: JUMPDEST
000049a6: SWAP4
000049a7: POP
000049a8: PUSH1 0x20
000049aa: DUP6
000049ab: ADD
000049ac: CALLDATALOAD
000049ad: PUSH2 0x49b5
000049b0: DUP2
000049b1: PUSH2 0x5ee8
000049b4: JUMP
000049b5: JUMPDEST
000049b6: SWAP3
000049b7: POP
000049b8: PUSH1 0x40
000049ba: DUP6
000049bb: ADD
000049bc: CALLDATALOAD
000049bd: PUSH2 0x49c5
000049c0: DUP2
000049c1: PUSH2 0x5ee8
000049c4: JUMP
000049c5: JUMPDEST
000049c6: SWAP2
000049c7: POP
000049c8: PUSH1 0x60
000049ca: DUP6
000049cb: ADD
000049cc: CALLDATALOAD
000049cd: PUSH2 0x49d5
000049d0: DUP2
000049d1: PUSH2 0x5ee8
000049d4: JUMP
000049d5: JUMPDEST
000049d6: SWAP4
000049d7: SWAP7
000049d8: SWAP3
000049d9: SWAP6
000049da: POP
000049db: SWAP1
000049dc: SWAP4
000049dd: POP
000049de: POP
000049df: JUMP
000049e0: JUMPDEST
000049e1: PUSH1 0x00
000049e3: DUP1
000049e4: PUSH1 0x00
000049e6: DUP1
000049e7: PUSH1 0x00
000049e9: DUP1
000049ea: PUSH1 0x00
000049ec: DUP1
000049ed: PUSH1 0xc0
000049ef: DUP10
000049f0: DUP12
000049f1: SUB
000049f2: SLT
000049f3: ISZERO
000049f4: PUSH2 0x49fb
000049f7: JUMPI
000049f8: DUP6
000049f9: DUP7
000049fa: REVERT
000049fb: JUMPDEST
000049fc: DUP9
000049fd: CALLDATALOAD
000049fe: PUSH2 0x4a06
00004a01: DUP2
00004a02: PUSH2 0x5ee8
00004a05: JUMP
00004a06: JUMPDEST
00004a07: SWAP8
00004a08: POP
00004a09: PUSH1 0x20
00004a0b: DUP10
00004a0c: ADD
00004a0d: CALLDATALOAD
00004a0e: PUSH2 0x4a16
00004a11: DUP2
00004a12: PUSH2 0x5ee8
00004a15: JUMP
00004a16: JUMPDEST
00004a17: SWAP7
00004a18: POP
00004a19: PUSH1 0x40
00004a1b: DUP10
00004a1c: ADD
00004a1d: CALLDATALOAD
00004a1e: PUSH2 0x4a26
00004a21: DUP2
00004a22: PUSH2 0x5ee8
00004a25: JUMP
00004a26: JUMPDEST
00004a27: SWAP6
00004a28: POP
00004a29: PUSH1 0x60
00004a2b: DUP10
00004a2c: ADD
00004a2d: CALLDATALOAD
00004a2e: SWAP5
00004a2f: POP
00004a30: PUSH1 0x80
00004a32: DUP10
00004a33: ADD
00004a34: CALLDATALOAD
00004a35: PUSH8 0xffffffffffffffff
00004a3e: DUP1
00004a3f: DUP3
00004a40: GT
00004a41: ISZERO
00004a42: PUSH2 0x4a49
00004a45: JUMPI
00004a46: DUP6
00004a47: DUP7
00004a48: REVERT
00004a49: JUMPDEST
00004a4a: PUSH2 0x4a55
00004a4d: DUP13
00004a4e: DUP4
00004a4f: DUP14
00004a50: ADD
00004a51: PUSH2 0x47e9
00004a54: JUMP
00004a55: JUMPDEST
00004a56: SWAP1
00004a57: SWAP7
00004a58: POP
00004a59: SWAP5
00004a5a: POP
00004a5b: PUSH1 0xa0
00004a5d: DUP12
00004a5e: ADD
00004a5f: CALLDATALOAD
00004a60: SWAP2
00004a61: POP
00004a62: DUP1
00004a63: DUP3
00004a64: GT
00004a65: ISZERO
00004a66: PUSH2 0x4a6d
00004a69: JUMPI
00004a6a: DUP4
00004a6b: DUP5
00004a6c: REVERT
00004a6d: JUMPDEST
00004a6e: POP
00004a6f: PUSH2 0x4a7a
00004a72: DUP12
00004a73: DUP3
00004a74: DUP13
00004a75: ADD
00004a76: PUSH2 0x47e9
00004a79: JUMP
00004a7a: JUMPDEST
00004a7b: SWAP10
00004a7c: SWAP13
00004a7d: SWAP9
00004a7e: SWAP12
00004a7f: POP
00004a80: SWAP7
00004a81: SWAP10
00004a82: POP
00004a83: SWAP5
00004a84: SWAP8
00004a85: SWAP4
00004a86: SWAP7
00004a87: SWAP3
00004a88: SWAP6
00004a89: SWAP5
00004a8a: POP
00004a8b: POP
00004a8c: POP
00004a8d: JUMP
00004a8e: JUMPDEST
00004a8f: PUSH1 0x00
00004a91: DUP1
00004a92: PUSH1 0x00
00004a94: PUSH1 0x40
00004a96: DUP5
00004a97: DUP7
00004a98: SUB
00004a99: SLT
00004a9a: ISZERO
00004a9b: PUSH2 0x4aa2
00004a9e: JUMPI
00004a9f: DUP1
00004aa0: DUP2
00004aa1: REVERT
00004aa2: JUMPDEST
00004aa3: DUP4
00004aa4: CALLDATALOAD
00004aa5: PUSH2 0x4aad
00004aa8: DUP2
00004aa9: PUSH2 0x5ee8
00004aac: JUMP
00004aad: JUMPDEST
00004aae: SWAP3
00004aaf: POP
00004ab0: PUSH1 0x20
00004ab2: DUP5
00004ab3: ADD
00004ab4: CALLDATALOAD
00004ab5: PUSH8 0xffffffffffffffff
00004abe: DUP2
00004abf: GT
00004ac0: ISZERO
00004ac1: PUSH2 0x4ac8
00004ac4: JUMPI
00004ac5: DUP2
00004ac6: DUP3
00004ac7: REVERT
00004ac8: JUMPDEST
00004ac9: PUSH2 0x4ad4
00004acc: DUP7
00004acd: DUP3
00004ace: DUP8
00004acf: ADD
00004ad0: PUSH2 0x47a0
00004ad3: JUMP
00004ad4: JUMPDEST
00004ad5: SWAP5
00004ad6: SWAP8
00004ad7: SWAP1
00004ad8: SWAP7
00004ad9: POP
00004ada: SWAP4
00004adb: SWAP5
00004adc: POP
00004add: POP
00004ade: POP
00004adf: POP
00004ae0: JUMP
00004ae1: JUMPDEST
00004ae2: PUSH1 0x00
00004ae4: DUP1
00004ae5: PUSH1 0x40
00004ae7: DUP1
00004ae8: DUP5
00004ae9: DUP7
00004aea: SUB
00004aeb: SLT
00004aec: ISZERO
00004aed: PUSH2 0x4af4
00004af0: JUMPI
00004af1: DUP3
00004af2: DUP4
00004af3: REVERT
00004af4: JUMPDEST
00004af5: DUP4
00004af6: CALLDATALOAD
00004af7: PUSH2 0x4aff
00004afa: DUP2
00004afb: PUSH2 0x5ee8
00004afe: JUMP
00004aff: JUMPDEST
00004b00: SWAP3
00004b01: POP
00004b02: PUSH1 0x20
00004b04: DUP5
00004b05: DUP2
00004b06: ADD
00004b07: CALLDATALOAD
00004b08: PUSH8 0xffffffffffffffff
00004b11: DUP2
00004b12: GT
00004b13: ISZERO
00004b14: PUSH2 0x4b1b
00004b17: JUMPI
00004b18: DUP4
00004b19: DUP5
00004b1a: REVERT
00004b1b: JUMPDEST
00004b1c: DUP1
00004b1d: DUP7
00004b1e: ADD
00004b1f: DUP8
00004b20: PUSH1 0x1f
00004b22: DUP3
00004b23: ADD
00004b24: SLT
00004b25: PUSH2 0x4b2c
00004b28: JUMPI
00004b29: DUP5
00004b2a: DUP6
00004b2b: REVERT
00004b2c: JUMPDEST
00004b2d: DUP1
00004b2e: CALLDATALOAD
00004b2f: SWAP2
00004b30: POP
00004b31: PUSH2 0x4b41
00004b34: PUSH2 0x4b3c
00004b37: DUP4
00004b38: PUSH2 0x5e9c
00004b3b: JUMP
00004b3c: JUMPDEST
00004b3d: PUSH2 0x5e75
00004b40: JUMP
00004b41: JUMPDEST
00004b42: DUP3
00004b43: DUP2
00004b44: MSTORE
00004b45: DUP4
00004b46: DUP2
00004b47: ADD
00004b48: SWAP1
00004b49: DUP3
00004b4a: DUP6
00004b4b: ADD
00004b4c: DUP7
00004b4d: DUP6
00004b4e: MUL
00004b4f: DUP5
00004b50: ADD
00004b51: DUP7
00004b52: ADD
00004b53: DUP12
00004b54: LT
00004b55: ISZERO
00004b56: PUSH2 0x4b5d
00004b59: JUMPI
00004b5a: DUP8
00004b5b: DUP9
00004b5c: REVERT
00004b5d: JUMPDEST
00004b5e: DUP8
00004b5f: SWAP4
00004b60: POP
00004b61: JUMPDEST
00004b62: DUP5
00004b63: DUP5
00004b64: LT
00004b65: ISZERO
00004b66: PUSH2 0x4bb0
00004b69: JUMPI
00004b6a: DUP7
00004b6b: DUP2
00004b6c: DUP13
00004b6d: SUB
00004b6e: SLT
00004b6f: ISZERO
00004b70: PUSH2 0x4b77
00004b73: JUMPI
00004b74: DUP8
00004b75: DUP9
00004b76: REVERT
00004b77: JUMPDEST
00004b78: PUSH2 0x4b80
00004b7b: DUP8
00004b7c: PUSH2 0x5e75
00004b7f: JUMP
00004b80: JUMPDEST
00004b81: PUSH2 0x4b8a
00004b84: DUP13
00004b85: DUP4
00004b86: PUSH2 0x4926
00004b89: JUMP
00004b8a: JUMPDEST
00004b8b: DUP2
00004b8c: MSTORE
00004b8d: PUSH2 0x4b98
00004b90: DUP13
00004b91: DUP9
00004b92: DUP5
00004b93: ADD
00004b94: PUSH2 0x491b
00004b97: JUMP
00004b98: JUMPDEST
00004b99: DUP2
00004b9a: DUP9
00004b9b: ADD
00004b9c: MSTORE
00004b9d: DUP4
00004b9e: MSTORE
00004b9f: PUSH1 0x01
00004ba1: SWAP4
00004ba2: SWAP1
00004ba3: SWAP4
00004ba4: ADD
00004ba5: SWAP3
00004ba6: SWAP2
00004ba7: DUP6
00004ba8: ADD
00004ba9: SWAP2
00004baa: DUP7
00004bab: ADD
00004bac: PUSH2 0x4b61
00004baf: JUMP
00004bb0: JUMPDEST
00004bb1: POP
00004bb2: DUP1
00004bb3: SWAP7
00004bb4: POP
00004bb5: POP
00004bb6: POP
00004bb7: POP
00004bb8: POP
00004bb9: POP
00004bba: POP
00004bbb: SWAP3
00004bbc: POP
00004bbd: SWAP3
00004bbe: SWAP1
00004bbf: POP
00004bc0: JUMP
00004bc1: JUMPDEST
00004bc2: PUSH1 0x00
00004bc4: DUP1
00004bc5: PUSH1 0x40
00004bc7: DUP4
00004bc8: DUP6
00004bc9: SUB
00004bca: SLT
00004bcb: ISZERO
00004bcc: PUSH2 0x4bd3
00004bcf: JUMPI
00004bd0: DUP2
00004bd1: DUP3
00004bd2: REVERT
00004bd3: JUMPDEST
00004bd4: DUP3
00004bd5: CALLDATALOAD
00004bd6: PUSH2 0x4bde
00004bd9: DUP2
00004bda: PUSH2 0x5ee8
00004bdd: JUMP
00004bde: JUMPDEST
00004bdf: SWAP2
00004be0: POP
00004be1: PUSH1 0x20
00004be3: DUP4
00004be4: DUP2
00004be5: ADD
00004be6: CALLDATALOAD
00004be7: PUSH8 0xffffffffffffffff
00004bf0: DUP2
00004bf1: GT
00004bf2: ISZERO
00004bf3: PUSH2 0x4bfa
00004bf6: JUMPI
00004bf7: DUP3
00004bf8: DUP4
00004bf9: REVERT
00004bfa: JUMPDEST
00004bfb: DUP1
00004bfc: DUP6
00004bfd: ADD
00004bfe: DUP7
00004bff: PUSH1 0x1f
00004c01: DUP3
00004c02: ADD
00004c03: SLT
00004c04: PUSH2 0x4c0b
00004c07: JUMPI
00004c08: DUP4
00004c09: DUP5
00004c0a: REVERT
00004c0b: JUMPDEST
00004c0c: DUP1
00004c0d: CALLDATALOAD
00004c0e: SWAP2
00004c0f: POP
00004c10: PUSH2 0x4c1b
00004c13: PUSH2 0x4b3c
00004c16: DUP4
00004c17: PUSH2 0x5e9c
00004c1a: JUMP
00004c1b: JUMPDEST
00004c1c: DUP3
00004c1d: DUP2
00004c1e: MSTORE
00004c1f: DUP4
00004c20: DUP2
00004c21: ADD
00004c22: SWAP1
00004c23: DUP3
00004c24: DUP6
00004c25: ADD
00004c26: PUSH1 0x60
00004c28: DUP1
00004c29: DUP7
00004c2a: MUL
00004c2b: DUP6
00004c2c: ADD
00004c2d: DUP8
00004c2e: ADD
00004c2f: DUP12
00004c30: LT
00004c31: ISZERO
00004c32: PUSH2 0x4c39
00004c35: JUMPI
00004c36: DUP8
00004c37: DUP9
00004c38: REVERT
00004c39: JUMPDEST
00004c3a: DUP8
00004c3b: SWAP5
00004c3c: POP
00004c3d: JUMPDEST
00004c3e: DUP6
00004c3f: DUP6
00004c40: LT
00004c41: ISZERO
00004c42: PUSH2 0x4c65
00004c45: JUMPI
00004c46: PUSH2 0x4c4f
00004c49: DUP12
00004c4a: DUP4
00004c4b: PUSH2 0x48c5
00004c4e: JUMP
00004c4f: JUMPDEST
00004c50: DUP5
00004c51: MSTORE
00004c52: PUSH1 0x01
00004c54: SWAP5
00004c55: SWAP1
00004c56: SWAP5
00004c57: ADD
00004c58: SWAP4
00004c59: SWAP3
00004c5a: DUP7
00004c5b: ADD
00004c5c: SWAP3
00004c5d: SWAP1
00004c5e: DUP2
00004c5f: ADD
00004c60: SWAP1
00004c61: PUSH2 0x4c3d
00004c64: JUMP
00004c65: JUMPDEST
00004c66: POP
00004c67: SWAP7
00004c68: SWAP10
00004c69: SWAP1
00004c6a: SWAP9
00004c6b: POP
00004c6c: SWAP7
00004c6d: POP
00004c6e: POP
00004c6f: POP
00004c70: POP
00004c71: POP
00004c72: POP
00004c73: POP
00004c74: JUMP
00004c75: JUMPDEST
00004c76: PUSH1 0x00
00004c78: DUP1
00004c79: DUP3
00004c7a: DUP5
00004c7b: SUB
00004c7c: PUSH1 0x60
00004c7e: DUP2
00004c7f: SLT
00004c80: ISZERO
00004c81: PUSH2 0x4c88
00004c84: JUMPI
00004c85: DUP3
00004c86: DUP4
00004c87: REVERT
00004c88: JUMPDEST
00004c89: DUP4
00004c8a: CALLDATALOAD
00004c8b: PUSH2 0x4c93
00004c8e: DUP2
00004c8f: PUSH2 0x5ee8
00004c92: JUMP
00004c93: JUMPDEST
00004c94: SWAP3
00004c95: POP
00004c96: PUSH1 0x40
00004c98: PUSH1 0x1f
00004c9a: NOT
00004c9b: DUP3
00004c9c: ADD
00004c9d: SLT
00004c9e: ISZERO
00004c9f: PUSH2 0x4ca6
00004ca2: JUMPI
00004ca3: DUP2
00004ca4: DUP3
00004ca5: REVERT
00004ca6: JUMPDEST
00004ca7: POP
00004ca8: PUSH2 0x4cb1
00004cab: PUSH1 0x40
00004cad: PUSH2 0x5e75
00004cb0: JUMP
00004cb1: JUMPDEST
00004cb2: PUSH1 0x20
00004cb4: DUP5
00004cb5: ADD
00004cb6: CALLDATALOAD
00004cb7: PUSH2 0x4cbf
00004cba: DUP2
00004cbb: PUSH2 0x5efd
00004cbe: JUMP
00004cbf: JUMPDEST
00004cc0: DUP2
00004cc1: MSTORE
00004cc2: PUSH1 0x40
00004cc4: DUP5
00004cc5: ADD
00004cc6: CALLDATALOAD
00004cc7: PUSH2 0x4ccf
00004cca: DUP2
00004ccb: PUSH2 0x5efd
00004cce: JUMP
00004ccf: JUMPDEST
00004cd0: PUSH1 0x20
00004cd2: DUP3
00004cd3: ADD
00004cd4: MSTORE
00004cd5: SWAP2
00004cd6: SWAP5
00004cd7: SWAP2
00004cd8: SWAP4
00004cd9: POP
00004cda: SWAP1
00004cdb: SWAP2
00004cdc: POP
00004cdd: POP
00004cde: JUMP
00004cdf: JUMPDEST
00004ce0: PUSH1 0x00
00004ce2: DUP1
00004ce3: PUSH1 0x40
00004ce5: DUP4
00004ce6: DUP6
00004ce7: SUB
00004ce8: SLT
00004ce9: ISZERO
00004cea: PUSH2 0x4cf1
00004ced: JUMPI
00004cee: DUP2
00004cef: DUP3
00004cf0: REVERT
00004cf1: JUMPDEST
00004cf2: DUP3
00004cf3: CALLDATALOAD
00004cf4: PUSH2 0x4cfc
00004cf7: DUP2
00004cf8: PUSH2 0x5ee8
00004cfb: JUMP
00004cfc: JUMPDEST
00004cfd: SWAP2
00004cfe: POP
00004cff: PUSH1 0x20
00004d01: DUP4
00004d02: ADD
00004d03: CALLDATALOAD
00004d04: PUSH2 0x497a
00004d07: DUP2
00004d08: PUSH2 0x5f0b
00004d0b: JUMP
00004d0c: JUMPDEST
00004d0d: PUSH1 0x00
00004d0f: DUP1
00004d10: PUSH1 0x00
00004d12: DUP1
00004d13: PUSH1 0x80
00004d15: DUP6
00004d16: DUP8
00004d17: SUB
00004d18: SLT
00004d19: ISZERO
00004d1a: PUSH2 0x4d21
00004d1d: JUMPI
00004d1e: DUP2
00004d1f: DUP3
00004d20: REVERT
00004d21: JUMPDEST
00004d22: DUP5
00004d23: CALLDATALOAD
00004d24: PUSH2 0x4d2c
00004d27: DUP2
00004d28: PUSH2 0x5ee8
00004d2b: JUMP
00004d2c: JUMPDEST
00004d2d: SWAP4
00004d2e: POP
00004d2f: PUSH1 0x20
00004d31: DUP6
00004d32: ADD
00004d33: CALLDATALOAD
00004d34: PUSH2 0x4d3c
00004d37: DUP2
00004d38: PUSH2 0x5f0b
00004d3b: JUMP
00004d3c: JUMPDEST
00004d3d: SWAP3
00004d3e: POP
00004d3f: PUSH1 0x40
00004d41: DUP6
00004d42: ADD
00004d43: CALLDATALOAD
00004d44: PUSH2 0x4d4c
00004d47: DUP2
00004d48: PUSH2 0x5f20
00004d4b: JUMP
00004d4c: JUMPDEST
00004d4d: SWAP2
00004d4e: POP
00004d4f: PUSH1 0x60
00004d51: DUP6
00004d52: ADD
00004d53: CALLDATALOAD
00004d54: PUSH2 0x49d5
00004d57: DUP2
00004d58: PUSH2 0x5f20
00004d5b: JUMP
00004d5c: JUMPDEST
00004d5d: PUSH1 0x00
00004d5f: DUP1
00004d60: PUSH1 0x40
00004d62: DUP4
00004d63: DUP6
00004d64: SUB
00004d65: SLT
00004d66: ISZERO
00004d67: PUSH2 0x4d6e
00004d6a: JUMPI
00004d6b: DUP2
00004d6c: DUP3
00004d6d: REVERT
00004d6e: JUMPDEST
00004d6f: DUP3
00004d70: CALLDATALOAD
00004d71: PUSH2 0x4d79
00004d74: DUP2
00004d75: PUSH2 0x5ee8
00004d78: JUMP
00004d79: JUMPDEST
00004d7a: SWAP2
00004d7b: POP
00004d7c: PUSH1 0x20
00004d7e: DUP4
00004d7f: ADD
00004d80: CALLDATALOAD
00004d81: PUSH2 0x497a
00004d84: DUP2
00004d85: PUSH2 0x5f20
00004d88: JUMP
00004d89: JUMPDEST
00004d8a: PUSH1 0x00
00004d8c: DUP1
00004d8d: PUSH1 0x00
00004d8f: PUSH1 0x60
00004d91: DUP5
00004d92: DUP7
00004d93: SUB
00004d94: SLT
00004d95: ISZERO
00004d96: PUSH2 0x4d9d
00004d99: JUMPI
00004d9a: DUP1
00004d9b: DUP2
00004d9c: REVERT
00004d9d: JUMPDEST
00004d9e: DUP4
00004d9f: CALLDATALOAD
00004da0: PUSH2 0x4da8
00004da3: DUP2
00004da4: PUSH2 0x5ee8
00004da7: JUMP
00004da8: JUMPDEST
00004da9: SWAP3
00004daa: POP
00004dab: PUSH1 0x20
00004dad: DUP5
00004dae: ADD
00004daf: CALLDATALOAD
00004db0: PUSH2 0x4db8
00004db3: DUP2
00004db4: PUSH2 0x5f20
00004db7: JUMP
00004db8: JUMPDEST
00004db9: SWAP2
00004dba: POP
00004dbb: PUSH1 0x40
00004dbd: DUP5
00004dbe: ADD
00004dbf: CALLDATALOAD
00004dc0: PUSH2 0x4dc8
00004dc3: DUP2
00004dc4: PUSH2 0x5f20
00004dc7: JUMP
00004dc8: JUMPDEST
00004dc9: DUP1
00004dca: SWAP2
00004dcb: POP
00004dcc: POP
00004dcd: SWAP3
00004dce: POP
00004dcf: SWAP3
00004dd0: POP
00004dd1: SWAP3
00004dd2: JUMP
00004dd3: JUMPDEST
00004dd4: PUSH1 0x00
00004dd6: DUP1
00004dd7: PUSH1 0x00
00004dd9: DUP1
00004dda: PUSH1 0x80
00004ddc: DUP6
00004ddd: DUP8
00004dde: SUB
00004ddf: SLT
00004de0: ISZERO
00004de1: PUSH2 0x4de8
00004de4: JUMPI
00004de5: DUP2
00004de6: DUP3
00004de7: REVERT
00004de8: JUMPDEST
00004de9: DUP5
00004dea: CALLDATALOAD
00004deb: PUSH2 0x4df3
00004dee: DUP2
00004def: PUSH2 0x5ee8
00004df2: JUMP
00004df3: JUMPDEST
00004df4: SWAP4
00004df5: POP
00004df6: PUSH1 0x20
00004df8: DUP6
00004df9: ADD
00004dfa: CALLDATALOAD
00004dfb: PUSH2 0x4e03
00004dfe: DUP2
00004dff: PUSH2 0x5f20
00004e02: JUMP
00004e03: JUMPDEST
00004e04: SWAP3
00004e05: POP
00004e06: PUSH1 0x40
00004e08: DUP6
00004e09: ADD
00004e0a: CALLDATALOAD
00004e0b: PUSH2 0x4e13
00004e0e: DUP2
00004e0f: PUSH2 0x5f20
00004e12: JUMP
00004e13: JUMPDEST
00004e14: SWAP2
00004e15: POP
00004e16: PUSH1 0x60
00004e18: DUP6
00004e19: ADD
00004e1a: CALLDATALOAD
00004e1b: PUSH2 0x49d5
00004e1e: DUP2
00004e1f: PUSH2 0x5f0b
00004e22: JUMP
00004e23: JUMPDEST
00004e24: PUSH1 0x00
00004e26: DUP1
00004e27: PUSH1 0x00
00004e29: DUP1
00004e2a: PUSH1 0x80
00004e2c: DUP6
00004e2d: DUP8
00004e2e: SUB
00004e2f: SLT
00004e30: ISZERO
00004e31: PUSH2 0x4e38
00004e34: JUMPI
00004e35: DUP2
00004e36: DUP3
00004e37: REVERT
00004e38: JUMPDEST
00004e39: DUP5
00004e3a: CALLDATALOAD
00004e3b: PUSH2 0x4e43
00004e3e: DUP2
00004e3f: PUSH2 0x5ee8
00004e42: JUMP
00004e43: JUMPDEST
00004e44: SWAP4
00004e45: POP
00004e46: PUSH1 0x20
00004e48: DUP6
00004e49: ADD
00004e4a: CALLDATALOAD
00004e4b: PUSH2 0x4e53
00004e4e: DUP2
00004e4f: PUSH2 0x5f42
00004e52: JUMP
00004e53: JUMPDEST
00004e54: SWAP3
00004e55: POP
00004e56: PUSH1 0x40
00004e58: DUP6
00004e59: ADD
00004e5a: CALLDATALOAD
00004e5b: PUSH2 0x4e13
00004e5e: DUP2
00004e5f: PUSH2 0x5f0b
00004e62: JUMP
00004e63: JUMPDEST
00004e64: PUSH1 0x00
00004e66: DUP1
00004e67: PUSH1 0x00
00004e69: DUP1
00004e6a: PUSH1 0x60
00004e6c: DUP6
00004e6d: DUP8
00004e6e: SUB
00004e6f: SLT
00004e70: ISZERO
00004e71: PUSH2 0x4e78
00004e74: JUMPI
00004e75: DUP2
00004e76: DUP3
00004e77: REVERT
00004e78: JUMPDEST
00004e79: DUP5
00004e7a: CALLDATALOAD
00004e7b: PUSH8 0xffffffffffffffff
00004e84: DUP2
00004e85: GT
00004e86: ISZERO
00004e87: PUSH2 0x4e8e
00004e8a: JUMPI
00004e8b: DUP3
00004e8c: DUP4
00004e8d: REVERT
00004e8e: JUMPDEST
00004e8f: PUSH2 0x4e9a
00004e92: DUP8
00004e93: DUP3
00004e94: DUP9
00004e95: ADD
00004e96: PUSH2 0x47a0
00004e99: JUMP
00004e9a: JUMPDEST
00004e9b: SWAP1
00004e9c: SWAP6
00004e9d: POP
00004e9e: SWAP4
00004e9f: POP
00004ea0: POP
00004ea1: PUSH1 0x20
00004ea3: DUP6
00004ea4: ADD
00004ea5: CALLDATALOAD
00004ea6: PUSH2 0x4eae
00004ea9: DUP2
00004eaa: PUSH2 0x5f20
00004ead: JUMP
00004eae: JUMPDEST
00004eaf: SWAP2
00004eb0: POP
00004eb1: PUSH1 0x40
00004eb3: DUP6
00004eb4: ADD
00004eb5: CALLDATALOAD
00004eb6: PUSH2 0x49d5
00004eb9: DUP2
00004eba: PUSH2 0x5f20
00004ebd: JUMP
00004ebe: JUMPDEST
00004ebf: PUSH1 0x00
00004ec1: PUSH1 0x20
00004ec3: DUP1
00004ec4: DUP4
00004ec5: DUP6
00004ec6: SUB
00004ec7: SLT
00004ec8: ISZERO
00004ec9: PUSH2 0x4ed0
00004ecc: JUMPI
00004ecd: DUP2
00004ece: DUP3
00004ecf: REVERT
00004ed0: JUMPDEST
00004ed1: DUP3
00004ed2: CALLDATALOAD
00004ed3: PUSH8 0xffffffffffffffff
00004edc: DUP2
00004edd: GT
00004ede: ISZERO
00004edf: PUSH2 0x4ee6
00004ee2: JUMPI
00004ee3: DUP3
00004ee4: DUP4
00004ee5: REVERT
00004ee6: JUMPDEST
00004ee7: DUP1
00004ee8: DUP5
00004ee9: ADD
00004eea: DUP6
00004eeb: PUSH1 0x1f
00004eed: DUP3
00004eee: ADD
00004eef: SLT
00004ef0: PUSH2 0x4ef7
00004ef3: JUMPI
00004ef4: DUP4
00004ef5: DUP5
00004ef6: REVERT
00004ef7: JUMPDEST
00004ef8: DUP1
00004ef9: CALLDATALOAD
00004efa: SWAP2
00004efb: POP
00004efc: PUSH2 0x4f07
00004eff: PUSH2 0x4b3c
00004f02: DUP4
00004f03: PUSH2 0x5e9c
00004f06: JUMP
00004f07: JUMPDEST
00004f08: DUP3
00004f09: DUP2
00004f0a: MSTORE
00004f0b: DUP4
00004f0c: DUP2
00004f0d: ADD
00004f0e: SWAP1
00004f0f: DUP3
00004f10: DUP6
00004f11: ADD
00004f12: DUP6
00004f13: DUP6
00004f14: MUL
00004f15: DUP5
00004f16: ADD
00004f17: DUP7
00004f18: ADD
00004f19: DUP10
00004f1a: LT
00004f1b: ISZERO
00004f1c: PUSH2 0x4f23
00004f1f: JUMPI
00004f20: DUP7
00004f21: DUP8
00004f22: REVERT
00004f23: JUMPDEST
00004f24: DUP7
00004f25: SWAP4
00004f26: POP
00004f27: JUMPDEST
00004f28: DUP5
00004f29: DUP5
00004f2a: LT
00004f2b: ISZERO
00004f2c: PUSH2 0x2d5c
00004f2f: JUMPI
00004f30: DUP1
00004f31: CALLDATALOAD
00004f32: DUP4
00004f33: MSTORE
00004f34: PUSH1 0x01
00004f36: SWAP4
00004f37: SWAP1
00004f38: SWAP4
00004f39: ADD
00004f3a: SWAP3
00004f3b: SWAP2
00004f3c: DUP6
00004f3d: ADD
00004f3e: SWAP2
00004f3f: DUP6
00004f40: ADD
00004f41: PUSH2 0x4f27
00004f44: JUMP
00004f45: JUMPDEST
00004f46: PUSH1 0x00
00004f48: PUSH1 0x20
00004f4a: DUP1
00004f4b: DUP4
00004f4c: DUP6
00004f4d: SUB
00004f4e: SLT
00004f4f: ISZERO
00004f50: PUSH2 0x4f57
00004f53: JUMPI
00004f54: DUP2
00004f55: DUP3
00004f56: REVERT
00004f57: JUMPDEST
00004f58: DUP3
00004f59: MLOAD
00004f5a: PUSH8 0xffffffffffffffff
00004f63: DUP2
00004f64: GT
00004f65: ISZERO
00004f66: PUSH2 0x4f6d
00004f69: JUMPI
00004f6a: DUP3
00004f6b: DUP4
00004f6c: REVERT
00004f6d: JUMPDEST
00004f6e: DUP1
00004f6f: DUP5
00004f70: ADD
00004f71: DUP6
00004f72: PUSH1 0x1f
00004f74: DUP3
00004f75: ADD
00004f76: SLT
00004f77: PUSH2 0x4f7e
00004f7a: JUMPI
00004f7b: DUP4
00004f7c: DUP5
00004f7d: REVERT
00004f7e: JUMPDEST
00004f7f: DUP1
00004f80: MLOAD
00004f81: SWAP2
00004f82: POP
00004f83: PUSH2 0x4f8e
00004f86: PUSH2 0x4b3c
00004f89: DUP4
00004f8a: PUSH2 0x5e9c
00004f8d: JUMP
00004f8e: JUMPDEST
00004f8f: DUP3
00004f90: DUP2
00004f91: MSTORE
00004f92: DUP4
00004f93: DUP2
00004f94: ADD
00004f95: SWAP1
00004f96: DUP3
00004f97: DUP6
00004f98: ADD
00004f99: PUSH1 0xc0
00004f9b: DUP1
00004f9c: DUP7
00004f9d: MUL
00004f9e: DUP6
00004f9f: ADD
00004fa0: DUP8
00004fa1: ADD
00004fa2: DUP11
00004fa3: LT
00004fa4: ISZERO
00004fa5: PUSH2 0x4fac
00004fa8: JUMPI
00004fa9: DUP8
00004faa: DUP9
00004fab: REVERT
00004fac: JUMPDEST
00004fad: DUP8
00004fae: SWAP5
00004faf: POP
00004fb0: JUMPDEST
00004fb1: DUP6
00004fb2: DUP6
00004fb3: LT
00004fb4: ISZERO
00004fb5: PUSH2 0x4fd8
00004fb8: JUMPI
00004fb9: PUSH2 0x4fc2
00004fbc: DUP11
00004fbd: DUP4
00004fbe: PUSH2 0x4829
00004fc1: JUMP
00004fc2: JUMPDEST
00004fc3: DUP5
00004fc4: MSTORE
00004fc5: PUSH1 0x01
00004fc7: SWAP5
00004fc8: SWAP1
00004fc9: SWAP5
00004fca: ADD
00004fcb: SWAP4
00004fcc: SWAP3
00004fcd: DUP7
00004fce: ADD
00004fcf: SWAP3
00004fd0: SWAP1
00004fd1: DUP2
00004fd2: ADD
00004fd3: SWAP1
00004fd4: PUSH2 0x4fb0
00004fd7: JUMP
00004fd8: JUMPDEST
00004fd9: POP
00004fda: SWAP1
00004fdb: SWAP9
00004fdc: SWAP8
00004fdd: POP
00004fde: POP
00004fdf: POP
00004fe0: POP
00004fe1: POP
00004fe2: POP
00004fe3: POP
00004fe4: POP
00004fe5: JUMP
00004fe6: JUMPDEST
00004fe7: PUSH1 0x00
00004fe9: PUSH1 0x20
00004feb: DUP3
00004fec: DUP5
00004fed: SUB
00004fee: SLT
00004fef: ISZERO
00004ff0: PUSH2 0x4ff7
00004ff3: JUMPI
00004ff4: DUP1
00004ff5: DUP2
00004ff6: REVERT
00004ff7: JUMPDEST
00004ff8: DUP2
00004ff9: MLOAD
00004ffa: PUSH2 0x2af3
00004ffd: DUP2
00004ffe: PUSH2 0x5efd
00005001: JUMP
00005002: JUMPDEST
00005003: PUSH1 0x00
00005005: DUP1
00005006: PUSH1 0x40
00005008: DUP4
00005009: DUP6
0000500a: SUB
0000500b: SLT
0000500c: ISZERO
0000500d: PUSH2 0x5014
00005010: JUMPI
00005011: DUP2
00005012: DUP3
00005013: REVERT
00005014: JUMPDEST
00005015: DUP3
00005016: CALLDATALOAD
00005017: PUSH1 0x04
00005019: DUP2
0000501a: LT
0000501b: PUSH2 0x496a
0000501e: JUMPI
0000501f: DUP3
00005020: DUP4
00005021: REVERT
00005022: JUMPDEST
00005023: PUSH1 0x00
00005025: PUSH1 0x20
00005027: DUP3
00005028: DUP5
00005029: SUB
0000502a: SLT
0000502b: ISZERO
0000502c: PUSH2 0x5033
0000502f: JUMPI
00005030: DUP1
00005031: DUP2
00005032: REVERT
00005033: JUMPDEST
00005034: POP
00005035: MLOAD
00005036: SWAP2
00005037: SWAP1
00005038: POP
00005039: JUMP
0000503a: JUMPDEST
0000503b: PUSH1 0x00
0000503d: DUP1
0000503e: PUSH1 0x40
00005040: DUP4
00005041: DUP6
00005042: SUB
00005043: SLT
00005044: ISZERO
00005045: PUSH2 0x504c
00005048: JUMPI
00005049: DUP2
0000504a: DUP3
0000504b: REVERT
0000504c: JUMPDEST
0000504d: DUP3
0000504e: MLOAD
0000504f: SWAP2
00005050: POP
00005051: PUSH1 0x20
00005053: DUP4
00005054: ADD
00005055: MLOAD
00005056: PUSH2 0x497a
00005059: DUP2
0000505a: PUSH2 0x5f0b
0000505d: JUMP
0000505e: JUMPDEST
0000505f: PUSH1 0x00
00005061: PUSH1 0xa0
00005063: DUP3
00005064: DUP5
00005065: SUB
00005066: SLT
00005067: ISZERO
00005068: PUSH2 0x506f
0000506b: JUMPI
0000506c: DUP1
0000506d: DUP2
0000506e: REVERT
0000506f: JUMPDEST
00005070: PUSH2 0x5079
00005073: PUSH1 0xa0
00005075: PUSH2 0x5e75
00005078: JUMP
00005079: JUMPDEST
0000507a: DUP3
0000507b: MLOAD
0000507c: PUSH2 0x5084
0000507f: DUP2
00005080: PUSH2 0x5f30
00005083: JUMP
00005084: JUMPDEST
00005085: DUP2
00005086: MSTORE
00005087: PUSH1 0x20
00005089: DUP4
0000508a: ADD
0000508b: MLOAD
0000508c: PUSH2 0x5094
0000508f: DUP2
00005090: PUSH2 0x5f30
00005093: JUMP
00005094: JUMPDEST
00005095: PUSH1 0x20
00005097: DUP3
00005098: ADD
00005099: MSTORE
0000509a: PUSH1 0x40
0000509c: DUP4
0000509d: ADD
0000509e: MLOAD
0000509f: PUSH2 0x50a7
000050a2: DUP2
000050a3: PUSH2 0x5f30
000050a6: JUMP
000050a7: JUMPDEST
000050a8: PUSH1 0x40
000050aa: DUP3
000050ab: ADD
000050ac: MSTORE
000050ad: PUSH1 0x60
000050af: DUP4
000050b0: ADD
000050b1: MLOAD
000050b2: PUSH2 0x50ba
000050b5: DUP2
000050b6: PUSH2 0x5ee8
000050b9: JUMP
000050ba: JUMPDEST
000050bb: PUSH1 0x60
000050bd: DUP3
000050be: ADD
000050bf: MSTORE
000050c0: PUSH1 0x80
000050c2: DUP4
000050c3: ADD
000050c4: MLOAD
000050c5: PUSH2 0x50cd
000050c8: DUP2
000050c9: PUSH2 0x5f20
000050cc: JUMP
000050cd: JUMPDEST
000050ce: PUSH1 0x80
000050d0: DUP3
000050d1: ADD
000050d2: MSTORE
000050d3: SWAP4
000050d4: SWAP3
000050d5: POP
000050d6: POP
000050d7: POP
000050d8: JUMP
000050d9: JUMPDEST
000050da: PUSH1 0x00
000050dc: PUSH1 0xa0
000050de: DUP3
000050df: DUP5
000050e0: SUB
000050e1: SLT
000050e2: ISZERO
000050e3: PUSH2 0x50ea
000050e6: JUMPI
000050e7: DUP1
000050e8: DUP2
000050e9: REVERT
000050ea: JUMPDEST
000050eb: PUSH2 0x50f4
000050ee: PUSH1 0xa0
000050f0: PUSH2 0x5e75
000050f3: JUMP
000050f4: JUMPDEST
000050f5: DUP3
000050f6: MLOAD
000050f7: DUP2
000050f8: MSTORE
000050f9: PUSH1 0x20
000050fb: DUP4
000050fc: ADD
000050fd: MLOAD
000050fe: PUSH1 0x20
00005100: DUP3
00005101: ADD
00005102: MSTORE
00005103: PUSH1 0x40
00005105: DUP4
00005106: ADD
00005107: MLOAD
00005108: PUSH1 0x40
0000510a: DUP3
0000510b: ADD
0000510c: MSTORE
0000510d: PUSH1 0x60
0000510f: DUP4
00005110: ADD
00005111: MLOAD
00005112: PUSH1 0x60
00005114: DUP3
00005115: ADD
00005116: MSTORE
00005117: PUSH1 0x80
00005119: DUP4
0000511a: ADD
0000511b: MLOAD
0000511c: PUSH1 0x80
0000511e: DUP3
0000511f: ADD
00005120: MSTORE
00005121: DUP1
00005122: SWAP2
00005123: POP
00005124: POP
00005125: SWAP3
00005126: SWAP2
00005127: POP
00005128: POP
00005129: JUMP
0000512a: JUMPDEST
0000512b: PUSH1 0x00
0000512d: PUSH1 0x80
0000512f: DUP3
00005130: DUP5
00005131: SUB
00005132: SLT
00005133: ISZERO
00005134: PUSH2 0x513b
00005137: JUMPI
00005138: DUP1
00005139: DUP2
0000513a: REVERT
0000513b: JUMPDEST
0000513c: PUSH2 0x5145
0000513f: PUSH1 0x80
00005141: PUSH2 0x5e75
00005144: JUMP
00005145: JUMPDEST
00005146: DUP3
00005147: MLOAD
00005148: DUP2
00005149: MSTORE
0000514a: PUSH1 0x20
0000514c: DUP4
0000514d: ADD
0000514e: MLOAD
0000514f: PUSH2 0x5157
00005152: DUP2
00005153: PUSH2 0x5f0b
00005156: JUMP
00005157: JUMPDEST
00005158: PUSH1 0x20
0000515a: DUP3
0000515b: ADD
0000515c: MSTORE
0000515d: PUSH1 0x40
0000515f: DUP4
00005160: ADD
00005161: MLOAD
00005162: PUSH2 0x516a
00005165: DUP2
00005166: PUSH2 0x5f0b
00005169: JUMP
0000516a: JUMPDEST
0000516b: PUSH1 0x40
0000516d: DUP3
0000516e: ADD
0000516f: MSTORE
00005170: PUSH1 0x60
00005172: SWAP3
00005173: DUP4
00005174: ADD
00005175: MLOAD
00005176: SWAP3
00005177: DUP2
00005178: ADD
00005179: SWAP3
0000517a: SWAP1
0000517b: SWAP3
0000517c: MSTORE
0000517d: POP
0000517e: SWAP2
0000517f: SWAP1
00005180: POP
00005181: JUMP
00005182: JUMPDEST
00005183: PUSH1 0x00
00005185: PUSH1 0x20
00005187: DUP3
00005188: DUP5
00005189: SUB
0000518a: SLT
0000518b: ISZERO
0000518c: PUSH2 0x5193
0000518f: JUMPI
00005190: DUP1
00005191: DUP2
00005192: REVERT
00005193: JUMPDEST
00005194: DUP2
00005195: CALLDATALOAD
00005196: PUSH2 0x2af3
00005199: DUP2
0000519a: PUSH2 0x5f0b
0000519d: JUMP
0000519e: JUMPDEST
0000519f: PUSH1 0x00
000051a1: DUP1
000051a2: PUSH1 0x40
000051a4: DUP4
000051a5: DUP6
000051a6: SUB
000051a7: SLT
000051a8: ISZERO
000051a9: PUSH2 0x51b0
000051ac: JUMPI
000051ad: DUP2
000051ae: DUP3
000051af: REVERT
000051b0: JUMPDEST
000051b1: DUP3
000051b2: MLOAD
000051b3: PUSH2 0x51bb
000051b6: DUP2
000051b7: PUSH2 0x5f0b
000051ba: JUMP
000051bb: JUMPDEST
000051bc: PUSH1 0x20
000051be: DUP5
000051bf: ADD
000051c0: MLOAD
000051c1: SWAP1
000051c2: SWAP3
000051c3: POP
000051c4: PUSH2 0x497a
000051c7: DUP2
000051c8: PUSH2 0x5f0b
000051cb: JUMP
000051cc: JUMPDEST
000051cd: PUSH1 0x00
000051cf: DUP1
000051d0: PUSH1 0x00
000051d2: PUSH1 0x60
000051d4: DUP5
000051d5: DUP7
000051d6: SUB
000051d7: SLT
000051d8: ISZERO
000051d9: PUSH2 0x51e0
000051dc: JUMPI
000051dd: DUP1
000051de: DUP2
000051df: REVERT
000051e0: JUMPDEST
000051e1: DUP4
000051e2: CALLDATALOAD
000051e3: PUSH2 0x51eb
000051e6: DUP2
000051e7: PUSH2 0x5f0b
000051ea: JUMP
000051eb: JUMPDEST
000051ec: SWAP3
000051ed: POP
000051ee: PUSH1 0x20
000051f0: DUP5
000051f1: ADD
000051f2: CALLDATALOAD
000051f3: PUSH2 0x51fb
000051f6: DUP2
000051f7: PUSH2 0x5f0b
000051fa: JUMP
000051fb: JUMPDEST
000051fc: SWAP2
000051fd: POP
000051fe: PUSH1 0x40
00005200: DUP5
00005201: ADD
00005202: CALLDATALOAD
00005203: PUSH2 0x4dc8
00005206: DUP2
00005207: PUSH2 0x5f0b
0000520a: JUMP
0000520b: JUMPDEST
0000520c: PUSH1 0x00
0000520e: PUSH1 0x20
00005210: DUP3
00005211: DUP5
00005212: SUB
00005213: SLT
00005214: ISZERO
00005215: PUSH2 0x521c
00005218: JUMPI
00005219: DUP1
0000521a: DUP2
0000521b: REVERT
0000521c: JUMPDEST
0000521d: DUP2
0000521e: CALLDATALOAD
0000521f: PUSH2 0x2af3
00005222: DUP2
00005223: PUSH2 0x5f20
00005226: JUMP
00005227: JUMPDEST
00005228: PUSH1 0x00
0000522a: DUP1
0000522b: PUSH1 0x40
0000522d: DUP4
0000522e: DUP6
0000522f: SUB
00005230: SLT
00005231: ISZERO
00005232: PUSH2 0x5239
00005235: JUMPI
00005236: DUP2
00005237: DUP3
00005238: REVERT
00005239: JUMPDEST
0000523a: DUP3
0000523b: CALLDATALOAD
0000523c: PUSH2 0x496a
0000523f: DUP2
00005240: PUSH2 0x5f20
00005243: JUMP
00005244: JUMPDEST
00005245: PUSH1 0x00
00005247: DUP1
00005248: PUSH1 0x00
0000524a: PUSH1 0x60
0000524c: DUP5
0000524d: DUP7
0000524e: SUB
0000524f: SLT
00005250: ISZERO
00005251: PUSH2 0x5258
00005254: JUMPI
00005255: DUP1
00005256: DUP2
00005257: REVERT
00005258: JUMPDEST
00005259: DUP4
0000525a: CALLDATALOAD
0000525b: PUSH2 0x5263
0000525e: DUP2
0000525f: PUSH2 0x5f20
00005262: JUMP
00005263: JUMPDEST
00005264: SWAP3
00005265: POP
00005266: PUSH1 0x20
00005268: DUP5
00005269: ADD
0000526a: CALLDATALOAD
0000526b: PUSH2 0x5273
0000526e: DUP2
0000526f: PUSH2 0x5ee8
00005272: JUMP
00005273: JUMPDEST
00005274: SWAP3
00005275: SWAP6
00005276: SWAP3
00005277: SWAP5
00005278: POP
00005279: POP
0000527a: POP
0000527b: PUSH1 0x40
0000527d: SWAP2
0000527e: SWAP1
0000527f: SWAP2
00005280: ADD
00005281: CALLDATALOAD
00005282: SWAP1
00005283: JUMP
00005284: JUMPDEST
00005285: PUSH1 0x00
00005287: DUP1
00005288: PUSH1 0x40
0000528a: DUP4
0000528b: DUP6
0000528c: SUB
0000528d: SLT
0000528e: ISZERO
0000528f: PUSH2 0x5296
00005292: JUMPI
00005293: DUP2
00005294: DUP3
00005295: REVERT
00005296: JUMPDEST
00005297: DUP3
00005298: CALLDATALOAD
00005299: PUSH2 0x4d79
0000529c: DUP2
0000529d: PUSH2 0x5f20
000052a0: JUMP
000052a1: JUMPDEST
000052a2: PUSH1 0x00
000052a4: DUP1
000052a5: PUSH1 0x00
000052a7: DUP1
000052a8: PUSH1 0x80
000052aa: DUP6
000052ab: DUP8
000052ac: SUB
000052ad: SLT
000052ae: ISZERO
000052af: PUSH2 0x52b6
000052b2: JUMPI
000052b3: DUP2
000052b4: DUP3
000052b5: REVERT
000052b6: JUMPDEST
000052b7: DUP5
000052b8: CALLDATALOAD
000052b9: PUSH2 0x52c1
000052bc: DUP2
000052bd: PUSH2 0x5f20
000052c0: JUMP
000052c1: JUMPDEST
000052c2: SWAP4
000052c3: POP
000052c4: PUSH1 0x20
000052c6: DUP6
000052c7: ADD
000052c8: CALLDATALOAD
000052c9: PUSH2 0x52d1
000052cc: DUP2
000052cd: PUSH2 0x5f20
000052d0: JUMP
000052d1: JUMPDEST
000052d2: SWAP3
000052d3: POP
000052d4: PUSH1 0x40
000052d6: DUP6
000052d7: ADD
000052d8: CALLDATALOAD
000052d9: PUSH2 0x4e13
000052dc: DUP2
000052dd: PUSH2 0x5ee8
000052e0: JUMP
000052e1: JUMPDEST
000052e2: PUSH1 0x00
000052e4: DUP1
000052e5: PUSH1 0x00
000052e7: DUP1
000052e8: PUSH1 0x00
000052ea: DUP1
000052eb: PUSH1 0xc0
000052ed: DUP8
000052ee: DUP10
000052ef: SUB
000052f0: SLT
000052f1: ISZERO
000052f2: PUSH2 0x52f9
000052f5: JUMPI
000052f6: DUP4
000052f7: DUP5
000052f8: REVERT
000052f9: JUMPDEST
000052fa: DUP7
000052fb: CALLDATALOAD
000052fc: PUSH2 0x5304
000052ff: DUP2
00005300: PUSH2 0x5f20
00005303: JUMP
00005304: JUMPDEST
00005305: SWAP6
00005306: POP
00005307: PUSH1 0x20
00005309: DUP8
0000530a: ADD
0000530b: CALLDATALOAD
0000530c: PUSH2 0x5314
0000530f: DUP2
00005310: PUSH2 0x5f20
00005313: JUMP
00005314: JUMPDEST
00005315: SWAP5
00005316: POP
00005317: PUSH1 0x40
00005319: DUP8
0000531a: ADD
0000531b: CALLDATALOAD
0000531c: PUSH2 0x5324
0000531f: DUP2
00005320: PUSH2 0x5ee8
00005323: JUMP
00005324: JUMPDEST
00005325: SWAP4
00005326: POP
00005327: PUSH1 0x60
00005329: DUP8
0000532a: ADD
0000532b: CALLDATALOAD
0000532c: PUSH2 0x5334
0000532f: DUP2
00005330: PUSH2 0x5f0b
00005333: JUMP
00005334: JUMPDEST
00005335: SWAP3
00005336: POP
00005337: PUSH1 0x80
00005339: DUP8
0000533a: ADD
0000533b: CALLDATALOAD
0000533c: PUSH2 0x5344
0000533f: DUP2
00005340: PUSH2 0x5f0b
00005343: JUMP
00005344: JUMPDEST
00005345: SWAP2
00005346: POP
00005347: PUSH1 0xa0
00005349: DUP8
0000534a: ADD
0000534b: CALLDATALOAD
0000534c: PUSH2 0x5354
0000534f: DUP2
00005350: PUSH2 0x5efd
00005353: JUMP
00005354: JUMPDEST
00005355: DUP1
00005356: SWAP2
00005357: POP
00005358: POP
00005359: SWAP3
0000535a: SWAP6
0000535b: POP
0000535c: SWAP3
0000535d: SWAP6
0000535e: POP
0000535f: SWAP3
00005360: SWAP6
00005361: JUMP
00005362: JUMPDEST
00005363: PUSH1 0x00
00005365: DUP1
00005366: PUSH1 0x00
00005368: DUP1
00005369: PUSH1 0x00
0000536b: DUP1
0000536c: PUSH1 0x80
0000536e: DUP8
0000536f: DUP10
00005370: SUB
00005371: SLT
00005372: ISZERO
00005373: PUSH2 0x537a
00005376: JUMPI
00005377: DUP4
00005378: DUP5
00005379: REVERT
0000537a: JUMPDEST
0000537b: DUP7
0000537c: CALLDATALOAD
0000537d: PUSH2 0x5385
00005380: DUP2
00005381: PUSH2 0x5f20
00005384: JUMP
00005385: JUMPDEST
00005386: SWAP6
00005387: POP
00005388: PUSH1 0x20
0000538a: DUP8
0000538b: ADD
0000538c: CALLDATALOAD
0000538d: PUSH2 0x5395
00005390: DUP2
00005391: PUSH2 0x5f20
00005394: JUMP
00005395: JUMPDEST
00005396: SWAP5
00005397: POP
00005398: PUSH1 0x40
0000539a: DUP8
0000539b: ADD
0000539c: CALLDATALOAD
0000539d: PUSH8 0xffffffffffffffff
000053a6: DUP1
000053a7: DUP3
000053a8: GT
000053a9: ISZERO
000053aa: PUSH2 0x53b1
000053ad: JUMPI
000053ae: DUP6
000053af: DUP7
000053b0: REVERT
000053b1: JUMPDEST
000053b2: PUSH2 0x53bd
000053b5: DUP11
000053b6: DUP4
000053b7: DUP12
000053b8: ADD
000053b9: PUSH2 0x47a0
000053bc: JUMP
000053bd: JUMPDEST
000053be: SWAP1
000053bf: SWAP7
000053c0: POP
000053c1: SWAP5
000053c2: POP
000053c3: PUSH1 0x60
000053c5: DUP10
000053c6: ADD
000053c7: CALLDATALOAD
000053c8: SWAP2
000053c9: POP
000053ca: DUP1
000053cb: DUP3
000053cc: GT
000053cd: ISZERO
000053ce: PUSH2 0x53d5
000053d1: JUMPI
000053d2: DUP4
000053d3: DUP5
000053d4: REVERT
000053d5: JUMPDEST
000053d6: POP
000053d7: PUSH2 0x53e2
000053da: DUP10
000053db: DUP3
000053dc: DUP11
000053dd: ADD
000053de: PUSH2 0x47a0
000053e1: JUMP
000053e2: JUMPDEST
000053e3: SWAP8
000053e4: SWAP11
000053e5: SWAP7
000053e6: SWAP10
000053e7: POP
000053e8: SWAP5
000053e9: SWAP8
000053ea: POP
000053eb: SWAP3
000053ec: SWAP6
000053ed: SWAP4
000053ee: SWAP5
000053ef: SWAP3
000053f0: POP
000053f1: POP
000053f2: POP
000053f3: JUMP
000053f4: JUMPDEST
000053f5: PUSH1 0x00
000053f7: PUSH1 0x20
000053f9: DUP3
000053fa: DUP5
000053fb: SUB
000053fc: SLT
000053fd: ISZERO
000053fe: PUSH2 0x5405
00005401: JUMPI
00005402: DUP1
00005403: DUP2
00005404: REVERT
00005405: JUMPDEST
00005406: DUP2
00005407: MLOAD
00005408: PUSH2 0x2af3
0000540b: DUP2
0000540c: PUSH2 0x5f42
0000540f: JUMP
00005410: JUMPDEST
00005411: PUSH1 0x00
00005413: DUP3
00005414: DUP5
00005415: MSTORE
00005416: PUSH1 0x20
00005418: DUP1
00005419: DUP6
0000541a: ADD
0000541b: SWAP5
0000541c: POP
0000541d: DUP3
0000541e: DUP3
0000541f: JUMPDEST
00005420: DUP6
00005421: DUP2
00005422: LT
00005423: ISZERO
00005424: PUSH2 0x544d
00005427: JUMPI
00005428: DUP2
00005429: CALLDATALOAD
0000542a: PUSH2 0x5432
0000542d: DUP2
0000542e: PUSH2 0x5ee8
00005431: JUMP
00005432: JUMPDEST
00005433: PUSH1 0x01
00005435: PUSH1 0x01
00005437: PUSH1 0xa0
00005439: SHL
0000543a: SUB
0000543b: AND
0000543c: DUP8
0000543d: MSTORE
0000543e: SWAP6
0000543f: DUP3
00005440: ADD
00005441: SWAP6
00005442: SWAP1
00005443: DUP3
00005444: ADD
00005445: SWAP1
00005446: PUSH1 0x01
00005448: ADD
00005449: PUSH2 0x541f
0000544c: JUMP
0000544d: JUMPDEST
0000544e: POP
0000544f: SWAP5
00005450: SWAP6
00005451: SWAP5
00005452: POP
00005453: POP
00005454: POP
00005455: POP
00005456: POP
00005457: JUMP
00005458: JUMPDEST
00005459: PUSH1 0x00
0000545b: DUP2
0000545c: MLOAD
0000545d: DUP1
0000545e: DUP5
0000545f: MSTORE
00005460: PUSH1 0x20
00005462: DUP1
00005463: DUP6
00005464: ADD
00005465: SWAP5
00005466: POP
00005467: DUP1
00005468: DUP5
00005469: ADD
0000546a: DUP4
0000546b: JUMPDEST
0000546c: DUP4
0000546d: DUP2
0000546e: LT
0000546f: ISZERO
00005470: PUSH2 0x544d
00005473: JUMPI
00005474: DUP2
00005475: MLOAD
00005476: PUSH1 0x01
00005478: PUSH1 0x01
0000547a: PUSH1 0x80
0000547c: SHL
0000547d: SUB
0000547e: AND
0000547f: DUP8
00005480: MSTORE
00005481: SWAP6
00005482: DUP3
00005483: ADD
00005484: SWAP6
00005485: SWAP1
00005486: DUP3
00005487: ADD
00005488: SWAP1
00005489: PUSH1 0x01
0000548b: ADD
0000548c: PUSH2 0x546b
0000548f: JUMP
00005490: JUMPDEST
00005491: PUSH1 0x02
00005493: DUP2
00005494: MSTORE
00005495: PUSH2 0x060f
00005498: PUSH1 0xf3
0000549a: SHL
0000549b: PUSH1 0x20
0000549d: DUP3
0000549e: ADD
0000549f: MSTORE
000054a0: PUSH1 0x40
000054a2: ADD
000054a3: SWAP1
000054a4: JUMP
000054a5: JUMPDEST
000054a6: DUP1
000054a7: MLOAD
000054a8: DUP3
000054a9: MSTORE
000054aa: PUSH1 0x20
000054ac: DUP2
000054ad: ADD
000054ae: MLOAD
000054af: PUSH1 0x20
000054b1: DUP4
000054b2: ADD
000054b3: MSTORE
000054b4: PUSH1 0x40
000054b6: DUP2
000054b7: ADD
000054b8: MLOAD
000054b9: PUSH1 0x40
000054bb: DUP4
000054bc: ADD
000054bd: MSTORE
000054be: PUSH1 0x60
000054c0: DUP2
000054c1: ADD
000054c2: MLOAD
000054c3: PUSH1 0x60
000054c5: DUP4
000054c6: ADD
000054c7: MSTORE
000054c8: PUSH1 0x80
000054ca: DUP2
000054cb: ADD
000054cc: MLOAD
000054cd: PUSH1 0x80
000054cf: DUP4
000054d0: ADD
000054d1: MSTORE
000054d2: POP
000054d3: POP
000054d4: JUMP
000054d5: JUMPDEST
000054d6: DUP1
000054d7: MLOAD
000054d8: DUP3
000054d9: MSTORE
000054da: PUSH1 0x20
000054dc: DUP2
000054dd: ADD
000054de: MLOAD
000054df: PUSH2 0xffff
000054e2: DUP1
000054e3: DUP3
000054e4: AND
000054e5: PUSH1 0x20
000054e7: DUP6
000054e8: ADD
000054e9: MSTORE
000054ea: DUP1
000054eb: PUSH1 0x40
000054ed: DUP5
000054ee: ADD
000054ef: MLOAD
000054f0: AND
000054f1: PUSH1 0x40
000054f3: DUP6
000054f4: ADD
000054f5: MSTORE
000054f6: POP
000054f7: POP
000054f8: PUSH1 0x60
000054fa: DUP2
000054fb: ADD
000054fc: MLOAD
000054fd: PUSH1 0x60
000054ff: DUP4
00005500: ADD
00005501: MSTORE
00005502: PUSH1 0x80
00005504: DUP2
00005505: ADD
00005506: MLOAD
00005507: PUSH1 0x80
00005509: DUP4
0000550a: ADD
0000550b: MSTORE
0000550c: PUSH1 0xa0
0000550e: DUP2
0000550f: ADD
00005510: MLOAD
00005511: PUSH2 0x09cb
00005514: PUSH1 0xa0
00005516: DUP5
00005517: ADD
00005518: DUP3
00005519: JUMPDEST
0000551a: DUP1
0000551b: MLOAD
0000551c: PUSH1 0x01
0000551e: PUSH1 0x01
00005520: PUSH1 0xa0
00005522: SHL
00005523: SUB
00005524: AND
00005525: DUP3
00005526: MSTORE
00005527: PUSH1 0x20
00005529: DUP1
0000552a: DUP3
0000552b: ADD
0000552c: MLOAD
0000552d: PUSH1 0x01
0000552f: PUSH1 0x01
00005531: PUSH1 0x80
00005533: SHL
00005534: SUB
00005535: SWAP1
00005536: DUP2
00005537: AND
00005538: SWAP2
00005539: DUP5
0000553a: ADD
0000553b: SWAP2
0000553c: SWAP1
0000553d: SWAP2
0000553e: MSTORE
0000553f: PUSH1 0x40
00005541: DUP1
00005542: DUP4
00005543: ADD
00005544: MLOAD
00005545: ISZERO
00005546: ISZERO
00005547: SWAP1
00005548: DUP5
00005549: ADD
0000554a: MSTORE
0000554b: PUSH1 0x60
0000554d: SWAP2
0000554e: DUP3
0000554f: ADD
00005550: MLOAD
00005551: AND
00005552: SWAP2
00005553: ADD
00005554: MSTORE
00005555: JUMP
00005556: JUMPDEST
00005557: PUSH1 0x00
00005559: DUP3
0000555a: MLOAD
0000555b: PUSH2 0x5568
0000555e: DUP2
0000555f: DUP5
00005560: PUSH1 0x20
00005562: DUP8
00005563: ADD
00005564: PUSH2 0x5ebc
00005567: JUMP
00005568: JUMPDEST
00005569: SWAP2
0000556a: SWAP1
0000556b: SWAP2
0000556c: ADD
0000556d: SWAP3
0000556e: SWAP2
0000556f: POP
00005570: POP
00005571: JUMP
00005572: JUMPDEST
00005573: SWAP1
00005574: JUMP
00005575: JUMPDEST
00005576: PUSH1 0x01
00005578: PUSH1 0x01
0000557a: PUSH1 0xa0
0000557c: SHL
0000557d: SUB
0000557e: SWAP2
0000557f: SWAP1
00005580: SWAP2
00005581: AND
00005582: DUP2
00005583: MSTORE
00005584: PUSH1 0x20
00005586: ADD
00005587: SWAP1
00005588: JUMP
00005589: JUMPDEST
0000558a: PUSH1 0x01
0000558c: PUSH1 0x01
0000558e: PUSH1 0xa0
00005590: SHL
00005591: SUB
00005592: SWAP4
00005593: DUP5
00005594: AND
00005595: DUP2
00005596: MSTORE
00005597: PUSH1 0x20
00005599: DUP2
0000559a: ADD
0000559b: SWAP3
0000559c: SWAP1
0000559d: SWAP3
0000559e: MSTORE
0000559f: SWAP1
000055a0: SWAP2
000055a1: AND
000055a2: PUSH1 0x40
000055a4: DUP3
000055a5: ADD
000055a6: MSTORE
000055a7: PUSH1 0x60
000055a9: ADD
000055aa: SWAP1
000055ab: JUMP
000055ac: JUMPDEST
000055ad: PUSH1 0x01
000055af: PUSH1 0x01
000055b1: PUSH1 0xa0
000055b3: SHL
000055b4: SUB
000055b5: DUP9
000055b6: DUP2
000055b7: AND
000055b8: DUP3
000055b9: MSTORE
000055ba: DUP8
000055bb: DUP2
000055bc: AND
000055bd: PUSH1 0x20
000055bf: DUP4
000055c0: ADD
000055c1: MSTORE
000055c2: PUSH1 0x40
000055c4: DUP3
000055c5: ADD
000055c6: DUP8
000055c7: SWAP1
000055c8: MSTORE
000055c9: PUSH1 0x60
000055cb: DUP3
000055cc: ADD
000055cd: DUP7
000055ce: SWAP1
000055cf: MSTORE
000055d0: PUSH1 0x80
000055d2: DUP3
000055d3: ADD
000055d4: DUP6
000055d5: SWAP1
000055d6: MSTORE
000055d7: PUSH2 0x01e0
000055da: DUP3
000055db: ADD
000055dc: SWAP1
000055dd: PUSH2 0x55e9
000055e0: PUSH1 0xa0
000055e2: DUP5
000055e3: ADD
000055e4: DUP7
000055e5: PUSH2 0x54d5
000055e8: JUMP
000055e9: JUMPDEST
000055ea: DUP1
000055eb: DUP5
000055ec: AND
000055ed: PUSH2 0x01c0
000055f0: DUP5
000055f1: ADD
000055f2: MSTORE
000055f3: POP
000055f4: SWAP9
000055f5: SWAP8
000055f6: POP
000055f7: POP
000055f8: POP
000055f9: POP
000055fa: POP
000055fb: POP
000055fc: POP
000055fd: POP
000055fe: JUMP
000055ff: JUMPDEST
00005600: PUSH1 0x01
00005602: PUSH1 0x01
00005604: PUSH1 0xa0
00005606: SHL
00005607: SUB
00005608: DUP8
00005609: DUP2
0000560a: AND
0000560b: DUP3
0000560c: MSTORE
0000560d: DUP7
0000560e: DUP2
0000560f: AND
00005610: PUSH1 0x20
00005612: DUP4
00005613: ADD
00005614: MSTORE
00005615: PUSH1 0x01
00005617: PUSH1 0x01
00005619: PUSH1 0x80
0000561b: SHL
0000561c: SUB
0000561d: DUP7
0000561e: AND
0000561f: PUSH1 0x40
00005621: DUP4
00005622: ADD
00005623: MSTORE
00005624: PUSH1 0x60
00005626: DUP3
00005627: ADD
00005628: DUP6
00005629: SWAP1
0000562a: MSTORE
0000562b: PUSH2 0x01c0
0000562e: DUP3
0000562f: ADD
00005630: SWAP1
00005631: PUSH2 0x563d
00005634: PUSH1 0x80
00005636: DUP5
00005637: ADD
00005638: DUP7
00005639: PUSH2 0x54d5
0000563c: JUMP
0000563d: JUMPDEST
0000563e: DUP1
0000563f: DUP5
00005640: AND
00005641: PUSH2 0x01a0
00005644: DUP5
00005645: ADD
00005646: MSTORE
00005647: POP
00005648: SWAP8
00005649: SWAP7
0000564a: POP
0000564b: POP
0000564c: POP
0000564d: POP
0000564e: POP
0000564f: POP
00005650: POP
00005651: JUMP
00005652: JUMPDEST
00005653: PUSH1 0x01
00005655: PUSH1 0x01
00005657: PUSH1 0xa0
00005659: SHL
0000565a: SUB
0000565b: DUP5
0000565c: DUP2
0000565d: AND
0000565e: DUP3
0000565f: MSTORE
00005660: DUP4
00005661: AND
00005662: PUSH1 0x20
00005664: DUP3
00005665: ADD
00005666: MSTORE
00005667: PUSH1 0x01
00005669: PUSH1 0x01
0000566b: PUSH1 0x80
0000566d: SHL
0000566e: SUB
0000566f: DUP3
00005670: AND
00005671: PUSH1 0x40
00005673: DUP3
00005674: ADD
00005675: MSTORE
00005676: PUSH1 0xa0
00005678: PUSH1 0x60
0000567a: DUP3
0000567b: ADD
0000567c: DUP2
0000567d: SWAP1
0000567e: MSTORE
0000567f: PUSH1 0x00
00005681: SWAP1
00005682: PUSH2 0x568c
00005685: SWAP1
00005686: DUP4
00005687: ADD
00005688: PUSH2 0x5490
0000568b: JUMP
0000568c: JUMPDEST
0000568d: DUP3
0000568e: DUP2
0000568f: SUB
00005690: PUSH1 0x80
00005692: DUP5
00005693: ADD
00005694: MSTORE
00005695: PUSH2 0x41b7
00005698: DUP2
00005699: PUSH2 0x5490
0000569c: JUMP
0000569d: JUMPDEST
0000569e: PUSH1 0x01
000056a0: PUSH1 0x01
000056a2: PUSH1 0xa0
000056a4: SHL
000056a5: SUB
000056a6: SWAP5
000056a7: DUP6
000056a8: AND
000056a9: DUP2
000056aa: MSTORE
000056ab: SWAP3
000056ac: SWAP1
000056ad: SWAP4
000056ae: AND
000056af: PUSH1 0x20
000056b1: DUP4
000056b2: ADD
000056b3: MSTORE
000056b4: PUSH2 0xffff
000056b7: AND
000056b8: PUSH1 0x40
000056ba: DUP3
000056bb: ADD
000056bc: MSTORE
000056bd: PUSH1 0x01
000056bf: PUSH1 0x01
000056c1: PUSH1 0x80
000056c3: SHL
000056c4: SUB
000056c5: SWAP1
000056c6: SWAP2
000056c7: AND
000056c8: PUSH1 0x60
000056ca: DUP3
000056cb: ADD
000056cc: MSTORE
000056cd: PUSH1 0x80
000056cf: ADD
000056d0: SWAP1
000056d1: JUMP
000056d2: JUMPDEST
000056d3: PUSH1 0x01
000056d5: PUSH1 0x01
000056d7: PUSH1 0xa0
000056d9: SHL
000056da: SUB
000056db: SWAP4
000056dc: DUP5
000056dd: AND
000056de: DUP2
000056df: MSTORE
000056e0: SWAP2
000056e1: SWAP1
000056e2: SWAP3
000056e3: AND
000056e4: PUSH1 0x20
000056e6: DUP3
000056e7: ADD
000056e8: MSTORE
000056e9: PUSH1 0x40
000056eb: DUP2
000056ec: ADD
000056ed: SWAP2
000056ee: SWAP1
000056ef: SWAP2
000056f0: MSTORE
000056f1: PUSH1 0x60
000056f3: ADD
000056f4: SWAP1
000056f5: JUMP
000056f6: JUMPDEST
000056f7: PUSH1 0x01
000056f9: PUSH1 0x01
000056fb: PUSH1 0xa0
000056fd: SHL
000056fe: SUB
000056ff: DUP8
00005700: DUP2
00005701: AND
00005702: DUP3
00005703: MSTORE
00005704: PUSH1 0x20
00005706: DUP3
00005707: ADD
00005708: DUP8
00005709: SWAP1
0000570a: MSTORE
0000570b: PUSH2 0x0240
0000570e: DUP3
0000570f: ADD
00005710: SWAP1
00005711: PUSH2 0x571d
00005714: PUSH1 0x40
00005716: DUP5
00005717: ADD
00005718: DUP9
00005719: PUSH2 0x54a5
0000571c: JUMP
0000571d: JUMPDEST
0000571e: PUSH2 0x572a
00005721: PUSH1 0xe0
00005723: DUP5
00005724: ADD
00005725: DUP8
00005726: PUSH2 0x54d5
00005729: JUMP
0000572a: JUMPDEST
0000572b: DUP1
0000572c: DUP6
0000572d: AND
0000572e: PUSH2 0x0200
00005731: DUP5
00005732: ADD
00005733: MSTORE
00005734: POP
00005735: PUSH1 0x01
00005737: PUSH1 0x01
00005739: PUSH1 0x80
0000573b: SHL
0000573c: SUB
0000573d: DUP4
0000573e: AND
0000573f: PUSH2 0x0220
00005742: DUP4
00005743: ADD
00005744: MSTORE
00005745: SWAP8
00005746: SWAP7
00005747: POP
00005748: POP
00005749: POP
0000574a: POP
0000574b: POP
0000574c: POP
0000574d: POP
0000574e: JUMP
0000574f: JUMPDEST
00005750: PUSH1 0x01
00005752: PUSH1 0x01
00005754: PUSH1 0xa0
00005756: SHL
00005757: SUB
00005758: DUP8
00005759: DUP2
0000575a: AND
0000575b: DUP3
0000575c: MSTORE
0000575d: PUSH1 0x20
0000575f: DUP3
00005760: ADD
00005761: DUP8
00005762: SWAP1
00005763: MSTORE
00005764: PUSH1 0x01
00005766: PUSH1 0x01
00005768: PUSH1 0x80
0000576a: SHL
0000576b: SUB
0000576c: DUP7
0000576d: AND
0000576e: PUSH1 0x40
00005770: DUP4
00005771: ADD
00005772: MSTORE
00005773: PUSH2 0x0240
00005776: DUP3
00005777: ADD
00005778: SWAP1
00005779: PUSH2 0x5785
0000577c: PUSH1 0x60
0000577e: DUP5
0000577f: ADD
00005780: DUP8
00005781: PUSH2 0x54a5
00005784: JUMP
00005785: JUMPDEST
00005786: PUSH2 0x5793
00005789: PUSH2 0x0100
0000578c: DUP5
0000578d: ADD
0000578e: DUP7
0000578f: PUSH2 0x54d5
00005792: JUMP
00005793: JUMPDEST
00005794: DUP1
00005795: DUP5
00005796: AND
00005797: PUSH2 0x0220
0000579a: DUP5
0000579b: ADD
0000579c: MSTORE
0000579d: POP
0000579e: SWAP8
0000579f: SWAP7
000057a0: POP
000057a1: POP
000057a2: POP
000057a3: POP
000057a4: POP
000057a5: POP
000057a6: POP
000057a7: JUMP
000057a8: JUMPDEST
000057a9: PUSH1 0x01
000057ab: PUSH1 0x01
000057ad: PUSH1 0xa0
000057af: SHL
000057b0: SUB
000057b1: SWAP3
000057b2: SWAP1
000057b3: SWAP3
000057b4: AND
000057b5: DUP3
000057b6: MSTORE
000057b7: PUSH1 0x01
000057b9: PUSH1 0x01
000057bb: PUSH1 0x80
000057bd: SHL
000057be: SUB
000057bf: AND
000057c0: PUSH1 0x20
000057c2: DUP3
000057c3: ADD
000057c4: MSTORE
000057c5: PUSH1 0x40
000057c7: ADD
000057c8: SWAP1
000057c9: JUMP
000057ca: JUMPDEST
000057cb: PUSH1 0x01
000057cd: PUSH1 0x01
000057cf: PUSH1 0xa0
000057d1: SHL
000057d2: SUB
000057d3: SWAP5
000057d4: SWAP1
000057d5: SWAP5
000057d6: AND
000057d7: DUP5
000057d8: MSTORE
000057d9: PUSH1 0x01
000057db: PUSH1 0x01
000057dd: PUSH1 0x80
000057df: SHL
000057e0: SUB
000057e1: SWAP3
000057e2: DUP4
000057e3: AND
000057e4: PUSH1 0x20
000057e6: DUP6
000057e7: ADD
000057e8: MSTORE
000057e9: SWAP1
000057ea: ISZERO
000057eb: ISZERO
000057ec: PUSH1 0x40
000057ee: DUP5
000057ef: ADD
000057f0: MSTORE
000057f1: AND
000057f2: PUSH1 0x60
000057f4: DUP3
000057f5: ADD
000057f6: MSTORE
000057f7: PUSH1 0x80
000057f9: ADD
000057fa: SWAP1
000057fb: JUMP
000057fc: JUMPDEST
000057fd: PUSH1 0x01
000057ff: PUSH1 0x01
00005801: PUSH1 0xa0
00005803: SHL
00005804: SUB
00005805: DUP4
00005806: AND
00005807: DUP2
00005808: MSTORE
00005809: PUSH1 0x01
0000580b: PUSH1 0x01
0000580d: PUSH1 0x80
0000580f: SHL
00005810: SUB
00005811: DUP3
00005812: AND
00005813: PUSH1 0x20
00005815: DUP3
00005816: ADD
00005817: MSTORE
00005818: PUSH1 0x60
0000581a: PUSH1 0x40
0000581c: DUP3
0000581d: ADD
0000581e: DUP2
0000581f: SWAP1
00005820: MSTORE
00005821: PUSH1 0x00
00005823: SWAP1
00005824: PUSH2 0x2ef5
00005827: SWAP1
00005828: DUP4
00005829: ADD
0000582a: PUSH2 0x5490
0000582d: JUMP
0000582e: JUMPDEST
0000582f: PUSH1 0x01
00005831: PUSH1 0x01
00005833: PUSH1 0xa0
00005835: SHL
00005836: SUB
00005837: SWAP4
00005838: SWAP1
00005839: SWAP4
0000583a: AND
0000583b: DUP4
0000583c: MSTORE
0000583d: PUSH2 0xffff
00005840: SWAP2
00005841: DUP3
00005842: AND
00005843: PUSH1 0x20
00005845: DUP5
00005846: ADD
00005847: MSTORE
00005848: AND
00005849: PUSH1 0x40
0000584b: DUP3
0000584c: ADD
0000584d: MSTORE
0000584e: PUSH1 0x60
00005850: ADD
00005851: SWAP1
00005852: JUMP
00005853: JUMPDEST
00005854: PUSH1 0x01
00005856: PUSH1 0x01
00005858: PUSH1 0xa0
0000585a: SHL
0000585b: SUB
0000585c: SWAP3
0000585d: SWAP1
0000585e: SWAP3
0000585f: AND
00005860: DUP3
00005861: MSTORE
00005862: PUSH1 0x20
00005864: DUP3
00005865: ADD
00005866: MSTORE
00005867: PUSH1 0x40
00005869: ADD
0000586a: SWAP1
0000586b: JUMP
0000586c: JUMPDEST
0000586d: PUSH1 0x20
0000586f: DUP1
00005870: DUP3
00005871: MSTORE
00005872: DUP3
00005873: MLOAD
00005874: DUP3
00005875: DUP3
00005876: ADD
00005877: DUP2
00005878: SWAP1
00005879: MSTORE
0000587a: PUSH1 0x00
0000587c: SWAP2
0000587d: SWAP1
0000587e: DUP5
0000587f: DUP3
00005880: ADD
00005881: SWAP1
00005882: PUSH1 0x40
00005884: DUP6
00005885: ADD
00005886: SWAP1
00005887: DUP5
00005888: JUMPDEST
00005889: DUP2
0000588a: DUP2
0000588b: LT
0000588c: ISZERO
0000588d: PUSH2 0x58a4
00005890: JUMPI
00005891: DUP4
00005892: MLOAD
00005893: DUP4
00005894: MSTORE
00005895: SWAP3
00005896: DUP5
00005897: ADD
00005898: SWAP3
00005899: SWAP2
0000589a: DUP5
0000589b: ADD
0000589c: SWAP2
0000589d: PUSH1 0x01
0000589f: ADD
000058a0: PUSH2 0x5888
000058a3: JUMP
000058a4: JUMPDEST
000058a5: POP
000058a6: SWAP1
000058a7: SWAP7
000058a8: SWAP6
000058a9: POP
000058aa: POP
000058ab: POP
000058ac: POP
000058ad: POP
000058ae: POP
000058af: JUMP
000058b0: JUMPDEST
000058b1: SWAP1
000058b2: ISZERO
000058b3: ISZERO
000058b4: DUP2
000058b5: MSTORE
000058b6: PUSH1 0x20
000058b8: ADD
000058b9: SWAP1
000058ba: JUMP
000058bb: JUMPDEST
000058bc: SWAP2
000058bd: ISZERO
000058be: ISZERO
000058bf: DUP3
000058c0: MSTORE
000058c1: ISZERO
000058c2: ISZERO
000058c3: PUSH1 0x20
000058c5: DUP3
000058c6: ADD
000058c7: MSTORE
000058c8: PUSH1 0x40
000058ca: ADD
000058cb: SWAP1
000058cc: JUMP
000058cd: JUMPDEST
000058ce: SWAP1
000058cf: DUP2
000058d0: MSTORE
000058d1: PUSH1 0x20
000058d3: ADD
000058d4: SWAP1
000058d5: JUMP
000058d6: JUMPDEST
000058d7: PUSH1 0x00
000058d9: PUSH1 0x20
000058db: DUP3
000058dc: MSTORE
000058dd: DUP3
000058de: MLOAD
000058df: DUP1
000058e0: PUSH1 0x20
000058e2: DUP5
000058e3: ADD
000058e4: MSTORE
000058e5: PUSH2 0x58f5
000058e8: DUP2
000058e9: PUSH1 0x40
000058eb: DUP6
000058ec: ADD
000058ed: PUSH1 0x20
000058ef: DUP8
000058f0: ADD
000058f1: PUSH2 0x5ebc
000058f4: JUMP
000058f5: JUMPDEST
000058f6: PUSH1 0x1f
000058f8: ADD
000058f9: PUSH1 0x1f
000058fb: NOT
000058fc: AND
000058fd: SWAP2
000058fe: SWAP1
000058ff: SWAP2
00005900: ADD
00005901: PUSH1 0x40
00005903: ADD
00005904: SWAP3
00005905: SWAP2
00005906: POP
00005907: POP
00005908: JUMP
00005909: JUMPDEST
0000590a: PUSH1 0x20
0000590c: DUP1
0000590d: DUP3
0000590e: MSTORE
0000590f: PUSH1 0x03
00005911: SWAP1
00005912: DUP3
00005913: ADD
00005914: MSTORE
00005915: PUSH3 0x0c4c0d
00005919: PUSH1 0xea
0000591b: SHL
0000591c: PUSH1 0x40
0000591e: DUP3
0000591f: ADD
00005920: MSTORE
00005921: PUSH1 0x60
00005923: ADD
00005924: SWAP1
00005925: JUMP
00005926: JUMPDEST
00005927: PUSH1 0x20
00005929: DUP1
0000592a: DUP3
0000592b: MSTORE
0000592c: PUSH1 0x27
0000592e: SWAP1
0000592f: DUP3
00005930: ADD
00005931: MSTORE
00005932: PUSH32 0x53616665436173743a2076616c756520646f65736e27742066697420696e2031
00005953: PUSH1 0x40
00005955: DUP3
00005956: ADD
00005957: MSTORE
00005958: PUSH7 0x32382062697473
00005960: PUSH1 0xc8
00005962: SHL
00005963: PUSH1 0x60
00005965: DUP3
00005966: ADD
00005967: MSTORE
00005968: PUSH1 0x80
0000596a: ADD
0000596b: SWAP1
0000596c: JUMP
0000596d: JUMPDEST
0000596e: PUSH1 0x20
00005970: DUP1
00005971: DUP3
00005972: MSTORE
00005973: PUSH1 0x21
00005975: SWAP1
00005976: DUP3
00005977: ADD
00005978: MSTORE
00005979: PUSH32 0x5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f
0000599a: PUSH1 0x40
0000599c: DUP3
0000599d: ADD
0000599e: MSTORE
0000599f: PUSH1 0x77
000059a1: PUSH1 0xf8
000059a3: SHL
000059a4: PUSH1 0x60
000059a6: DUP3
000059a7: ADD
000059a8: MSTORE
000059a9: PUSH1 0x80
000059ab: ADD
000059ac: SWAP1
000059ad: JUMP
000059ae: JUMPDEST
000059af: PUSH1 0x20
000059b1: DUP1
000059b2: DUP3
000059b3: MSTORE
000059b4: PUSH1 0x02
000059b6: SWAP1
000059b7: DUP3
000059b8: ADD
000059b9: MSTORE
000059ba: PUSH2 0x3237
000059bd: PUSH1 0xf0
000059bf: SHL
000059c0: PUSH1 0x40
000059c2: DUP3
000059c3: ADD
000059c4: MSTORE
000059c5: PUSH1 0x60
000059c7: ADD
000059c8: SWAP1
000059c9: JUMP
000059ca: JUMPDEST
000059cb: PUSH1 0x20
000059cd: DUP1
000059ce: DUP3
000059cf: MSTORE
000059d0: PUSH1 0x02
000059d2: SWAP1
000059d3: DUP3
000059d4: ADD
000059d5: MSTORE
000059d6: PUSH2 0x3439
000059d9: PUSH1 0xf0
000059db: SHL
000059dc: PUSH1 0x40
000059de: DUP3
000059df: ADD
000059e0: MSTORE
000059e1: PUSH1 0x60
000059e3: ADD
000059e4: SWAP1
000059e5: JUMP
000059e6: JUMPDEST
000059e7: PUSH1 0x20
000059e9: DUP1
000059ea: DUP3
000059eb: MSTORE
000059ec: PUSH1 0x02
000059ee: SWAP1
000059ef: DUP3
000059f0: ADD
000059f1: MSTORE
000059f2: PUSH2 0x3337
000059f5: PUSH1 0xf0
000059f7: SHL
000059f8: PUSH1 0x40
000059fa: DUP3
000059fb: ADD
000059fc: MSTORE
000059fd: PUSH1 0x60
000059ff: ADD
00005a00: SWAP1
00005a01: JUMP
00005a02: JUMPDEST
00005a03: PUSH1 0x20
00005a05: DUP1
00005a06: DUP3
00005a07: MSTORE
00005a08: PUSH1 0x02
00005a0a: SWAP1
00005a0b: DUP3
00005a0c: ADD
00005a0d: MSTORE
00005a0e: PUSH2 0x0687
00005a11: PUSH1 0xf3
00005a13: SHL
00005a14: PUSH1 0x40
00005a16: DUP3
00005a17: ADD
00005a18: MSTORE
00005a19: PUSH1 0x60
00005a1b: ADD
00005a1c: SWAP1
00005a1d: JUMP
00005a1e: JUMPDEST
00005a1f: PUSH1 0x20
00005a21: DUP1
00005a22: DUP3
00005a23: MSTORE
00005a24: PUSH1 0x02
00005a26: SWAP1
00005a27: DUP3
00005a28: ADD
00005a29: MSTORE
00005a2a: PUSH2 0x3535
00005a2d: PUSH1 0xf0
00005a2f: SHL
00005a30: PUSH1 0x40
00005a32: DUP3
00005a33: ADD
00005a34: MSTORE
00005a35: PUSH1 0x60
00005a37: ADD
00005a38: SWAP1
00005a39: JUMP
00005a3a: JUMPDEST
00005a3b: PUSH1 0x20
00005a3d: DUP1
00005a3e: DUP3
00005a3f: MSTORE
00005a40: PUSH1 0x02
00005a42: SWAP1
00005a43: DUP3
00005a44: ADD
00005a45: MSTORE
00005a46: PUSH2 0x0323
00005a49: PUSH1 0xf4
00005a4b: SHL
00005a4c: PUSH1 0x40
00005a4e: DUP3
00005a4f: ADD
00005a50: MSTORE
00005a51: PUSH1 0x60
00005a53: ADD
00005a54: SWAP1
00005a55: JUMP
00005a56: JUMPDEST
00005a57: PUSH1 0x20
00005a59: DUP1
00005a5a: DUP3
00005a5b: MSTORE
00005a5c: PUSH1 0x21
00005a5e: SWAP1
00005a5f: DUP3
00005a60: ADD
00005a61: MSTORE
00005a62: PUSH32 0x5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f
00005a83: PUSH1 0x40
00005a85: DUP3
00005a86: ADD
00005a87: MSTORE
00005a88: PUSH1 0x77
00005a8a: PUSH1 0xf8
00005a8c: SHL
00005a8d: PUSH1 0x60
00005a8f: DUP3
00005a90: ADD
00005a91: MSTORE
00005a92: PUSH1 0x80
00005a94: ADD
00005a95: SWAP1
00005a96: JUMP
00005a97: JUMPDEST
00005a98: PUSH1 0x20
00005a9a: DUP1
00005a9b: DUP3
00005a9c: MSTORE
00005a9d: PUSH1 0x03
00005a9f: SWAP1
00005aa0: DUP3
00005aa1: ADD
00005aa2: MSTORE
00005aa3: PUSH3 0x313035
00005aa7: PUSH1 0xe8
00005aa9: SHL
00005aaa: PUSH1 0x40
00005aac: DUP3
00005aad: ADD
00005aae: MSTORE
00005aaf: PUSH1 0x60
00005ab1: ADD
00005ab2: SWAP1
00005ab3: JUMP
00005ab4: JUMPDEST
00005ab5: PUSH1 0x20
00005ab7: DUP1
00005ab8: DUP3
00005ab9: MSTORE
00005aba: PUSH1 0x02
00005abc: SWAP1
00005abd: DUP3
00005abe: ADD
00005abf: MSTORE
00005ac0: PUSH2 0x1899
00005ac3: PUSH1 0xf1
00005ac5: SHL
00005ac6: PUSH1 0x40
00005ac8: DUP3
00005ac9: ADD
00005aca: MSTORE
00005acb: PUSH1 0x60
00005acd: ADD
00005ace: SWAP1
00005acf: JUMP
00005ad0: JUMPDEST
00005ad1: PUSH1 0x20
00005ad3: DUP1
00005ad4: DUP3
00005ad5: MSTORE
00005ad6: PUSH1 0x02
00005ad8: SWAP1
00005ad9: DUP3
00005ada: ADD
00005adb: MSTORE
00005adc: PUSH2 0x0343
00005adf: PUSH1 0xf4
00005ae1: SHL
00005ae2: PUSH1 0x40
00005ae4: DUP3
00005ae5: ADD
00005ae6: MSTORE
00005ae7: PUSH1 0x60
00005ae9: ADD
00005aea: SWAP1
00005aeb: JUMP
00005aec: JUMPDEST
00005aed: PUSH1 0x20
00005aef: DUP1
00005af0: DUP3
00005af1: MSTORE
00005af2: PUSH1 0x02
00005af4: SWAP1
00005af5: DUP3
00005af6: ADD
00005af7: MSTORE
00005af8: PUSH2 0x3139
00005afb: PUSH1 0xf0
00005afd: SHL
00005afe: PUSH1 0x40
00005b00: DUP3
00005b01: ADD
00005b02: MSTORE
00005b03: PUSH1 0x60
00005b05: ADD
00005b06: SWAP1
00005b07: JUMP
00005b08: JUMPDEST
00005b09: PUSH1 0x20
00005b0b: DUP1
00005b0c: DUP3
00005b0d: MSTORE
00005b0e: PUSH1 0x02
00005b10: SWAP1
00005b11: DUP3
00005b12: ADD
00005b13: MSTORE
00005b14: PUSH2 0x0647
00005b17: PUSH1 0xf3
00005b19: SHL
00005b1a: PUSH1 0x40
00005b1c: DUP3
00005b1d: ADD
00005b1e: MSTORE
00005b1f: PUSH1 0x60
00005b21: ADD
00005b22: SWAP1
00005b23: JUMP
00005b24: JUMPDEST
00005b25: PUSH1 0x20
00005b27: DUP1
00005b28: DUP3
00005b29: MSTORE
00005b2a: PUSH1 0x2e
00005b2c: SWAP1
00005b2d: DUP3
00005b2e: ADD
00005b2f: MSTORE
00005b30: PUSH32 0x436f6e747261637420696e7374616e63652068617320616c7265616479206265
00005b51: PUSH1 0x40
00005b53: DUP3
00005b54: ADD
00005b55: MSTORE
00005b56: PUSH14 0x195b881a5b9a5d1a585b1a5e9959
00005b65: PUSH1 0x92
00005b67: SHL
00005b68: PUSH1 0x60
00005b6a: DUP3
00005b6b: ADD
00005b6c: MSTORE
00005b6d: PUSH1 0x80
00005b6f: ADD
00005b70: SWAP1
00005b71: JUMP
00005b72: JUMPDEST
00005b73: PUSH1 0x20
00005b75: DUP1
00005b76: DUP3
00005b77: MSTORE
00005b78: PUSH1 0x27
00005b7a: SWAP1
00005b7b: DUP3
00005b7c: ADD
00005b7d: MSTORE
00005b7e: PUSH32 0x5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f
00005b9f: PUSH1 0x40
00005ba1: DUP3
00005ba2: ADD
00005ba3: MSTORE
00005ba4: PUSH7 0x766572666c6f77
00005bac: PUSH1 0xc8
00005bae: SHL
00005baf: PUSH1 0x60
00005bb1: DUP3
00005bb2: ADD
00005bb3: MSTORE
00005bb4: PUSH1 0x80
00005bb6: ADD
00005bb7: SWAP1
00005bb8: JUMP
00005bb9: JUMPDEST
00005bba: PUSH1 0x20
00005bbc: DUP1
00005bbd: DUP3
00005bbe: MSTORE
00005bbf: PUSH1 0x1d
00005bc1: SWAP1
00005bc2: DUP3
00005bc3: ADD
00005bc4: MSTORE
00005bc5: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00005be6: PUSH1 0x40
00005be8: DUP3
00005be9: ADD
00005bea: MSTORE
00005beb: PUSH1 0x60
00005bed: ADD
00005bee: SWAP1
00005bef: JUMP
00005bf0: JUMPDEST
00005bf1: PUSH1 0x20
00005bf3: DUP1
00005bf4: DUP3
00005bf5: MSTORE
00005bf6: PUSH1 0x01
00005bf8: SWAP1
00005bf9: DUP3
00005bfa: ADD
00005bfb: MSTORE
00005bfc: PUSH1 0x35
00005bfe: PUSH1 0xf8
00005c00: SHL
00005c01: PUSH1 0x40
00005c03: DUP3
00005c04: ADD
00005c05: MSTORE
00005c06: PUSH1 0x60
00005c08: ADD
00005c09: SWAP1
00005c0a: JUMP
00005c0b: JUMPDEST
00005c0c: PUSH1 0x20
00005c0e: DUP1
00005c0f: DUP3
00005c10: MSTORE
00005c11: PUSH1 0x01
00005c13: SWAP1
00005c14: DUP3
00005c15: ADD
00005c16: MSTORE
00005c17: PUSH1 0x39
00005c19: PUSH1 0xf8
00005c1b: SHL
00005c1c: PUSH1 0x40
00005c1e: DUP3
00005c1f: ADD
00005c20: MSTORE
00005c21: PUSH1 0x60
00005c23: ADD
00005c24: SWAP1
00005c25: JUMP
00005c26: JUMPDEST
00005c27: PUSH1 0x20
00005c29: DUP1
00005c2a: DUP3
00005c2b: MSTORE
00005c2c: PUSH1 0x03
00005c2e: SWAP1
00005c2f: DUP3
00005c30: ADD
00005c31: MSTORE
00005c32: PUSH3 0x031313
00005c36: PUSH1 0xec
00005c38: SHL
00005c39: PUSH1 0x40
00005c3b: DUP3
00005c3c: ADD
00005c3d: MSTORE
00005c3e: PUSH1 0x60
00005c40: ADD
00005c41: SWAP1
00005c42: JUMP
00005c43: JUMPDEST
00005c44: PUSH1 0x20
00005c46: DUP1
00005c47: DUP3
00005c48: MSTORE
00005c49: PUSH1 0x24
00005c4b: SWAP1
00005c4c: DUP3
00005c4d: ADD
00005c4e: MSTORE
00005c4f: PUSH32 0x5369676e6564536166654d6174683a207375627472616374696f6e206f766572
00005c70: PUSH1 0x40
00005c72: DUP3
00005c73: ADD
00005c74: MSTORE
00005c75: PUSH4 0x666c6f77
00005c7a: PUSH1 0xe0
00005c7c: SHL
00005c7d: PUSH1 0x60
00005c7f: DUP3
00005c80: ADD
00005c81: MSTORE
00005c82: PUSH1 0x80
00005c84: ADD
00005c85: SWAP1
00005c86: JUMP
00005c87: JUMPDEST
00005c88: PUSH1 0x20
00005c8a: DUP1
00005c8b: DUP3
00005c8c: MSTORE
00005c8d: PUSH1 0x2a
00005c8f: SWAP1
00005c90: DUP3
00005c91: ADD
00005c92: MSTORE
00005c93: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00005cb4: PUSH1 0x40
00005cb6: DUP3
00005cb7: ADD
00005cb8: MSTORE
00005cb9: PUSH10 0x1bdd081cdd58d8d95959
00005cc4: PUSH1 0xb2
00005cc6: SHL
00005cc7: PUSH1 0x60
00005cc9: DUP3
00005cca: ADD
00005ccb: MSTORE
00005ccc: PUSH1 0x80
00005cce: ADD
00005ccf: SWAP1
00005cd0: JUMP
00005cd1: JUMPDEST
00005cd2: PUSH1 0x20
00005cd4: DUP1
00005cd5: DUP3
00005cd6: MSTORE
00005cd7: PUSH1 0x01
00005cd9: SWAP1
00005cda: DUP3
00005cdb: ADD
00005cdc: MSTORE
00005cdd: PUSH1 0x07
00005cdf: PUSH1 0xfb
00005ce1: SHL
00005ce2: PUSH1 0x40
00005ce4: DUP3
00005ce5: ADD
00005ce6: MSTORE
00005ce7: PUSH1 0x60
00005ce9: ADD
00005cea: SWAP1
00005ceb: JUMP
00005cec: JUMPDEST
00005ced: PUSH1 0x20
00005cef: DUP1
00005cf0: DUP3
00005cf1: MSTORE
00005cf2: DUP2
00005cf3: DUP2
00005cf4: ADD
00005cf5: MSTORE
00005cf6: PUSH32 0x5369676e6564536166654d6174683a206469766973696f6e206279207a65726f
00005d17: PUSH1 0x40
00005d19: DUP3
00005d1a: ADD
00005d1b: MSTORE
00005d1c: PUSH1 0x60
00005d1e: ADD
00005d1f: SWAP1
00005d20: JUMP
00005d21: JUMPDEST
00005d22: PUSH1 0x20
00005d24: DUP1
00005d25: DUP3
00005d26: MSTORE
00005d27: PUSH1 0x02
00005d29: SWAP1
00005d2a: DUP3
00005d2b: ADD
00005d2c: MSTORE
00005d2d: PUSH2 0x3231
00005d30: PUSH1 0xf0
00005d32: SHL
00005d33: PUSH1 0x40
00005d35: DUP3
00005d36: ADD
00005d37: MSTORE
00005d38: PUSH1 0x60
00005d3a: ADD
00005d3b: SWAP1
00005d3c: JUMP
00005d3d: JUMPDEST
00005d3e: PUSH1 0x80
00005d40: DUP2
00005d41: ADD
00005d42: PUSH2 0x2262
00005d45: DUP3
00005d46: DUP5
00005d47: PUSH2 0x5519
00005d4a: JUMP
00005d4b: JUMPDEST
00005d4c: PUSH1 0x01
00005d4e: PUSH1 0x01
00005d50: PUSH1 0x80
00005d52: SHL
00005d53: SUB
00005d54: SWAP2
00005d55: SWAP1
00005d56: SWAP2
00005d57: AND
00005d58: DUP2
00005d59: MSTORE
00005d5a: PUSH1 0x20
00005d5c: ADD
00005d5d: SWAP1
00005d5e: JUMP
00005d5f: JUMPDEST
00005d60: PUSH1 0x01
00005d62: PUSH1 0x01
00005d64: PUSH1 0x80
00005d66: SHL
00005d67: SUB
00005d68: SWAP4
00005d69: DUP5
00005d6a: AND
00005d6b: DUP2
00005d6c: MSTORE
00005d6d: SWAP2
00005d6e: DUP4
00005d6f: AND
00005d70: PUSH1 0x20
00005d72: DUP4
00005d73: ADD
00005d74: MSTORE
00005d75: SWAP1
00005d76: SWAP2
00005d77: AND
00005d78: PUSH1 0x40
00005d7a: DUP3
00005d7b: ADD
00005d7c: MSTORE
00005d7d: PUSH1 0x60
00005d7f: ADD
00005d80: SWAP1
00005d81: JUMP
00005d82: JUMPDEST
00005d83: PUSH2 0xffff
00005d86: SWAP2
00005d87: SWAP1
00005d88: SWAP2
00005d89: AND
00005d8a: DUP2
00005d8b: MSTORE
00005d8c: PUSH1 0x20
00005d8e: ADD
00005d8f: SWAP1
00005d90: JUMP
00005d91: JUMPDEST
00005d92: PUSH2 0xffff
00005d95: SWAP4
00005d96: SWAP1
00005d97: SWAP4
00005d98: AND
00005d99: DUP4
00005d9a: MSTORE
00005d9b: PUSH1 0x01
00005d9d: PUSH1 0x01
00005d9f: PUSH1 0xa0
00005da1: SHL
00005da2: SUB
00005da3: SWAP2
00005da4: SWAP1
00005da5: SWAP2
00005da6: AND
00005da7: PUSH1 0x20
00005da9: DUP4
00005daa: ADD
00005dab: MSTORE
00005dac: PUSH1 0x01
00005dae: PUSH1 0x01
00005db0: PUSH1 0x80
00005db2: SHL
00005db3: SUB
00005db4: AND
00005db5: PUSH1 0x40
00005db7: DUP3
00005db8: ADD
00005db9: MSTORE
00005dba: PUSH1 0x60
00005dbc: ADD
00005dbd: SWAP1
00005dbe: JUMP
00005dbf: JUMPDEST
00005dc0: PUSH1 0x00
00005dc2: PUSH2 0xffff
00005dc5: DUP7
00005dc6: AND
00005dc7: DUP3
00005dc8: MSTORE
00005dc9: PUSH1 0x60
00005dcb: PUSH1 0x20
00005dcd: DUP4
00005dce: ADD
00005dcf: MSTORE
00005dd0: PUSH2 0x5ddd
00005dd3: PUSH1 0x60
00005dd5: DUP4
00005dd6: ADD
00005dd7: DUP6
00005dd8: DUP8
00005dd9: PUSH2 0x5410
00005ddc: JUMP
00005ddd: JUMPDEST
00005dde: DUP3
00005ddf: DUP2
00005de0: SUB
00005de1: PUSH1 0x40
00005de3: DUP5
00005de4: ADD
00005de5: MSTORE
00005de6: PUSH2 0x5def
00005de9: DUP2
00005dea: DUP6
00005deb: PUSH2 0x5458
00005dee: JUMP
00005def: JUMPDEST
00005df0: SWAP8
00005df1: SWAP7
00005df2: POP
00005df3: POP
00005df4: POP
00005df5: POP
00005df6: POP
00005df7: POP
00005df8: POP
00005df9: JUMP
00005dfa: JUMPDEST
00005dfb: PUSH1 0x00
00005dfd: PUSH2 0xffff
00005e00: DUP1
00005e01: DUP9
00005e02: AND
00005e03: DUP4
00005e04: MSTORE
00005e05: DUP1
00005e06: DUP8
00005e07: AND
00005e08: PUSH1 0x20
00005e0a: DUP5
00005e0b: ADD
00005e0c: MSTORE
00005e0d: POP
00005e0e: PUSH1 0x80
00005e10: PUSH1 0x40
00005e12: DUP4
00005e13: ADD
00005e14: MSTORE
00005e15: PUSH2 0x5e22
00005e18: PUSH1 0x80
00005e1a: DUP4
00005e1b: ADD
00005e1c: DUP6
00005e1d: DUP8
00005e1e: PUSH2 0x5410
00005e21: JUMP
00005e22: JUMPDEST
00005e23: DUP3
00005e24: DUP2
00005e25: SUB
00005e26: PUSH1 0x60
00005e28: DUP5
00005e29: ADD
00005e2a: MSTORE
00005e2b: PUSH2 0x5e34
00005e2e: DUP2
00005e2f: DUP6
00005e30: PUSH2 0x5458
00005e33: JUMP
00005e34: JUMPDEST
00005e35: SWAP9
00005e36: SWAP8
00005e37: POP
00005e38: POP
00005e39: POP
00005e3a: POP
00005e3b: POP
00005e3c: POP
00005e3d: POP
00005e3e: POP
00005e3f: JUMP
00005e40: JUMPDEST
00005e41: PUSH2 0xffff
00005e44: SWAP4
00005e45: DUP5
00005e46: AND
00005e47: DUP2
00005e48: MSTORE
00005e49: SWAP2
00005e4a: SWAP1
00005e4b: SWAP3
00005e4c: AND
00005e4d: PUSH1 0x20
00005e4f: DUP3
00005e50: ADD
00005e51: MSTORE
00005e52: PUSH1 0x01
00005e54: PUSH1 0x01
00005e56: PUSH1 0x80
00005e58: SHL
00005e59: SUB
00005e5a: SWAP1
00005e5b: SWAP2
00005e5c: AND
00005e5d: PUSH1 0x40
00005e5f: DUP3
00005e60: ADD
00005e61: MSTORE
00005e62: PUSH1 0x60
00005e64: ADD
00005e65: SWAP1
00005e66: JUMP
00005e67: JUMPDEST
00005e68: PUSH1 0xff
00005e6a: SWAP2
00005e6b: SWAP1
00005e6c: SWAP2
00005e6d: AND
00005e6e: DUP2
00005e6f: MSTORE
00005e70: PUSH1 0x20
00005e72: ADD
00005e73: SWAP1
00005e74: JUMP
00005e75: JUMPDEST
00005e76: PUSH1 0x40
00005e78: MLOAD
00005e79: DUP2
00005e7a: DUP2
00005e7b: ADD
00005e7c: PUSH8 0xffffffffffffffff
00005e85: DUP2
00005e86: GT
00005e87: DUP3
00005e88: DUP3
00005e89: LT
00005e8a: OR
00005e8b: ISZERO
00005e8c: PUSH2 0x5e94
00005e8f: JUMPI
00005e90: PUSH1 0x00
00005e92: DUP1
00005e93: REVERT
00005e94: JUMPDEST
00005e95: PUSH1 0x40
00005e97: MSTORE
00005e98: SWAP2
00005e99: SWAP1
00005e9a: POP
00005e9b: JUMP
00005e9c: JUMPDEST
00005e9d: PUSH1 0x00
00005e9f: PUSH8 0xffffffffffffffff
00005ea8: DUP3
00005ea9: GT
00005eaa: ISZERO
00005eab: PUSH2 0x5eb2
00005eae: JUMPI
00005eaf: DUP1
00005eb0: DUP2
00005eb1: REVERT
00005eb2: JUMPDEST
00005eb3: POP
00005eb4: PUSH1 0x20
00005eb6: SWAP1
00005eb7: DUP2
00005eb8: MUL
00005eb9: ADD
00005eba: SWAP1
00005ebb: JUMP
00005ebc: JUMPDEST
00005ebd: PUSH1 0x00
00005ebf: JUMPDEST
00005ec0: DUP4
00005ec1: DUP2
00005ec2: LT
00005ec3: ISZERO
00005ec4: PUSH2 0x5ed7
00005ec7: JUMPI
00005ec8: DUP2
00005ec9: DUP2
00005eca: ADD
00005ecb: MLOAD
00005ecc: DUP4
00005ecd: DUP3
00005ece: ADD
00005ecf: MSTORE
00005ed0: PUSH1 0x20
00005ed2: ADD
00005ed3: PUSH2 0x5ebf
00005ed6: JUMP
00005ed7: JUMPDEST
00005ed8: DUP4
00005ed9: DUP2
00005eda: GT
00005edb: ISZERO
00005edc: PUSH2 0x1886
00005edf: JUMPI
00005ee0: POP
00005ee1: POP
00005ee2: PUSH1 0x00
00005ee4: SWAP2
00005ee5: ADD
00005ee6: MSTORE
00005ee7: JUMP
00005ee8: JUMPDEST
00005ee9: PUSH1 0x01
00005eeb: PUSH1 0x01
00005eed: PUSH1 0xa0
00005eef: SHL
00005ef0: SUB
00005ef1: DUP2
00005ef2: AND
00005ef3: DUP2
00005ef4: EQ
00005ef5: PUSH2 0x1524
00005ef8: JUMPI
00005ef9: PUSH1 0x00
00005efb: DUP1
00005efc: REVERT
00005efd: JUMPDEST
00005efe: DUP1
00005eff: ISZERO
00005f00: ISZERO
00005f01: DUP2
00005f02: EQ
00005f03: PUSH2 0x1524
00005f06: JUMPI
00005f07: PUSH1 0x00
00005f09: DUP1
00005f0a: REVERT
00005f0b: JUMPDEST
00005f0c: PUSH1 0x01
00005f0e: PUSH1 0x01
00005f10: PUSH1 0x80
00005f12: SHL
00005f13: SUB
00005f14: DUP2
00005f15: AND
00005f16: DUP2
00005f17: EQ
00005f18: PUSH2 0x1524
00005f1b: JUMPI
00005f1c: PUSH1 0x00
00005f1e: DUP1
00005f1f: REVERT
00005f20: JUMPDEST
00005f21: PUSH2 0xffff
00005f24: DUP2
00005f25: AND
00005f26: DUP2
00005f27: EQ
00005f28: PUSH2 0x1524
00005f2b: JUMPI
00005f2c: PUSH1 0x00
00005f2e: DUP1
00005f2f: REVERT
00005f30: JUMPDEST
00005f31: PUSH4 0xffffffff
00005f36: DUP2
00005f37: AND
00005f38: DUP2
00005f39: EQ
00005f3a: PUSH2 0x1524
00005f3d: JUMPI
00005f3e: PUSH1 0x00
00005f40: DUP1
00005f41: REVERT
00005f42: JUMPDEST
00005f43: PUSH1 0xff
00005f45: DUP2
00005f46: AND
00005f47: DUP2
00005f48: EQ
00005f49: PUSH2 0x1524
00005f4c: JUMPI
00005f4d: PUSH1 0x00
00005f4f: DUP1
00005f50: REVERT
00005f51: INVALID
00005f52: SLOAD
00005f53: UNKNOWN(0xCD)
00005f54: UNKNOWN(0xD3)
00005f55: PUSH10 0xe4e8a8515e52ca72ec81
00005f60: PUSH13 0x2101831ad1f18bf44102ed1714
00005f6e: MSIZE
00005f6f: UNKNOWN(0xC9)
00005f70: UNKNOWN(0xB4)
00005f71: UNKNOWN(0xF8)
00005f72: LOG2
00005f73: PUSH5 0x6970667358
00005f79: UNKNOWN(0x22)
00005f7a: SLT
00005f7b: KECCAK256
00005f7c: DUP5
00005f7d: RETURNDATACOPY
00005f7e: UNKNOWN(0x4B)
00005f7f: UNKNOWN(0xB9)
00005f80: SAR
00005f81: UNKNOWN(0xBB)
00005f82: MSTORE
00005f83: DELEGATECALL
00005f84: UNKNOWN(0xEF)
00005f85: PUSH12 0x4a77cee4d44c7ea78329b64e
00005f92: UNKNOWN(0xE5)
00005f93: RETURNDATASIZE
00005f94: SWAP2
00005f95: MSTORE8
00005f96: UNKNOWN(0xCA)
00005f97: UNKNOWN(0xE2)
00005f98: GASPRICE
00005f99: PUSH25

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0x288bd5c8e8e5739c697ac6c93a7fc2d4e7c1099fb70d46afd9e264d84af05d5c
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x288bd5c8e8e5739c697ac6c93a7fc2d4e7c1099fb70d46afd9e264d84af05d5c",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xe4db4250",
            "selector": "0xe4db4250",
            "calldata_variants": [
                "0xe4db4250",
                "0xe4db42500000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebebf742",
            "selector": "0xebebf742",
            "calldata_variants": [
                "0xebebf742",
                "0xebebf7420000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xee0c7a76",
            "selector": "0xee0c7a76",
            "calldata_variants": [
                "0xee0c7a76",
                "0xee0c7a760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf8c8765e",
            "selector": "0xf8c8765e",
            "calldata_variants": [
                "0xf8c8765e",
                "0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc3b52cb",
            "selector": "0xfc3b52cb",
            "calldata_variants": [
                "0xfc3b52cb",
                "0xfc3b52cb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc84aae17",
            "selector": "0xc84aae17",
            "calldata_variants": [
                "0xc84aae17",
                "0xc84aae170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f38dc0",
            "selector": "0xc8f38dc0",
            "calldata_variants": [
                "0xc8f38dc0",
                "0xc8f38dc00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5785,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 8228,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 13309,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 5,
    "untrusted_delegatecall_count": 5
}
high other codex ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction 85 no
view
evidence_json
{
    "evidence": "`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.",
    "locations": [
        "contracts/cache/solpp-generated-contracts/Escrow.sol:1083",
        "contracts/cache/solpp-generated-contracts/Escrow.sol:430",
        "contracts/cache/solpp-generated-contracts/Escrow.sol:552"
    ],
    "recommendation": "During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.",
    "exploit_scenario": "If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer\u2019s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free."
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9
call_targets: 0x8a134e651432a902041643668940c9a9cd270633
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x8a134e651432a902041643668940c9a9cd270633"
    ],
    "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": "0xe4db4250",
            "selector": "0xe4db4250",
            "calldata_variants": [
                "0xe4db4250",
                "0xe4db42500000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebebf742",
            "selector": "0xebebf742",
            "calldata_variants": [
                "0xebebf742",
                "0xebebf7420000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xee0c7a76",
            "selector": "0xee0c7a76",
            "calldata_variants": [
                "0xee0c7a76",
                "0xee0c7a760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf8c8765e",
            "selector": "0xf8c8765e",
            "calldata_variants": [
                "0xf8c8765e",
                "0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc3b52cb",
            "selector": "0xfc3b52cb",
            "calldata_variants": [
                "0xfc3b52cb",
                "0xfc3b52cb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc84aae17",
            "selector": "0xc84aae17",
            "calldata_variants": [
                "0xc84aae17",
                "0xc84aae170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f38dc0",
            "selector": "0xc8f38dc0",
            "calldata_variants": [
                "0xc8f38dc0",
                "0xc8f38dc00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 6364,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7287,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7889,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 13,
    "guards_detected": [],
    "untrusted_call_count": 13
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9
call_targets: 0x8a134e651432a902041643668940c9a9cd270633
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x8a134e651432a902041643668940c9a9cd270633"
    ],
    "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": "0xe4db4250",
            "selector": "0xe4db4250",
            "calldata_variants": [
                "0xe4db4250",
                "0xe4db42500000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebebf742",
            "selector": "0xebebf742",
            "calldata_variants": [
                "0xebebf742",
                "0xebebf7420000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xee0c7a76",
            "selector": "0xee0c7a76",
            "calldata_variants": [
                "0xee0c7a76",
                "0xee0c7a760000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf8c8765e",
            "selector": "0xf8c8765e",
            "calldata_variants": [
                "0xf8c8765e",
                "0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfc3b52cb",
            "selector": "0xfc3b52cb",
            "calldata_variants": [
                "0xfc3b52cb",
                "0xfc3b52cb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc84aae17",
            "selector": "0xc84aae17",
            "calldata_variants": [
                "0xc84aae17",
                "0xc84aae170000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f38dc0",
            "selector": "0xc8f38dc0",
            "calldata_variants": [
                "0xc8f38dc0",
                "0xc8f38dc00000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 6364,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7287,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 7889,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 13,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 5
}
medium oracle codex Chainlink price reads lack freshness/round validation 75 no
view
evidence_json
{
    "evidence": "`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.",
    "locations": [
        "contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"
    ],
    "recommendation": "Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.",
    "exploit_scenario": "If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update."
}
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": 25
}
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": 21
}