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

Analysis Run

12d861ef-8f42-4779-a04a-8d1399b51333

complete
Chain ID
1
Address
Block Number
Created
Sun, Dec 28, 2025 3:29 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
Authorization based on tx.origin
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30319 report.consolidate complete 1 / 1 3 months ago
74098 artifact.fetch complete 1 / 3 1 week ago
74099 tool.cast_disasm complete 1 / 3 1 week ago
74100 analysis.bundle complete 1 / 3 1 week ago
74101 capability.graph complete 1 / 3 1 week ago
74102 detector.run complete 1 / 3 1 week ago
74103 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Found 1 issue: swap minimums can fall back to spot/short TWAP, enabling oracle manipulation against the public buy functions.
View stderr
[codex:1046197] OpenAI Codex v0.77.0 (research preview)
[codex:1046197] --------
[codex:1046197] workdir: /tmp/codex-multi-t2vdkoqo
[codex:1046197] model: gpt-5.2-codex
[codex:1046197] provider: openai
[codex:1046197] approval: never
[codex:1046197] sandbox: read-only
[codex:1046197] reasoning effort: xhigh
[codex:1046197] reasoning summaries: auto
[codex:1046197] session id: 019b658d-6f23-7912-aebb-332448d8b2ee
[codex:1046197] --------
[codex:1046197] user
[codex:1046197] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1046197] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1046197] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1046197] 
[codex:1046197] Scope rules:
[codex:1046197] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1046197] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1046197] 
[codex:1046197] Output MUST be valid JSON matching the provided schema.
[codex:1046197] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1046197] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1046197] 
[codex:1046197] Output constraints (IMPORTANT):
[codex:1046197] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1046197] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1046197] mcp startup: no servers
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Reading AUDIT_BUNDLE.txt**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc ls in /tmp/codex-multi-t2vdkoqo succeeded in 5ms:
[codex:1046197] AUDIT_BUNDLE.txt
[codex:1046197] codex-output-schema.json
[codex:1046197] contracts
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1046197] 
[codex:1046197] ================================================================================
[codex:1046197] FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: MIT
[codex:1046197] // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
[codex:1046197] 
[codex:1046197] pragma solidity ^0.8.20;
[codex:1046197] 
[codex:1046197] import {Context} from "../utils/Context.sol";
[codex:1046197] 
[codex:1046197] /**
[codex:1046197]  * @dev Contract module which provides a basic access control mechanism, where
[codex:1046197]  * there is an account (an owner) that can be granted exclusive access to
[codex:1046197]  * specific functions.
[codex:1046197]  *
[codex:1046197]  * The initial owner is set to the address provided by the deployer. This can
[codex:1046197]  * later be changed with {transferOwnership}.
[codex:1046197]  *
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Preparing to analyze AUDIT_BUNDLE.txt**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197]     error ERC20InvalidReceiver(address receiver);
[codex:1046197] 
[codex:1046197]     /**
[codex:1046197]      * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
[codex:1046197]      * @param spender Address that may be allowed to operate on tokens without being their owner.
[codex:1046197]      * @param allowance Amount of tokens a `spender` is allowed to operate with.
[codex:1046197]      * @param needed Minimum amount required to perform a transfer.
[codex:1046197]      */
[codex:1046197]     error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
[codex:1046197] 
[codex:1046197]     /**
[codex:1046197]      * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
[codex:1046197]      * @param approver Address initiating an approval operation.
[codex:1046197]      */
[codex:1046197]     error ERC20InvalidApprover(address approver);
[codex:1046197] 
[codex:1046197]     /**
[codex:1046197]      * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
[codex:1046197]      * @param spender Address that may be allowed to operate on tokens without being their owner.
[codex:1046197]      */
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Searching for first-party contracts**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc 'rg "FILE: contracts/" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-t2vdkoqo succeeded in 7ms:
[codex:1046197] 4:FILE: contracts/@openzeppelin/contracts/access/Ownable.sol
[codex:1046197] 108:FILE: contracts/@openzeppelin/contracts/access/Ownable2Step.sol
[codex:1046197] 171:FILE: contracts/@openzeppelin/contracts/interfaces/draft-IERC6093.sol
[codex:1046197] 336:FILE: contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol
[codex:1046197] 656:FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:1046197] 739:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
[codex:1046197] 769:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol
[codex:1046197] 863:FILE: contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
[codex:1046197] 985:FILE: contracts/@openzeppelin/contracts/utils/Address.sol
[codex:1046197] 1148:FILE: contracts/@openzeppelin/contracts/utils/Context.sol
[codex:1046197] 1180:FILE: contracts/@openzeppelin/contracts/utils/Create2.sol
[codex:1046197] 1280:FILE: contracts/@openzeppelin/contracts/utils/ReentrancyGuard.sol
[codex:1046197] 1368:FILE: contracts/@openzeppelin/contracts/utils/math/Math.sol
[codex:1046197] 1787:FILE: contracts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol
[codex:1046197] 1815:FILE: contracts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol
[codex:1046197] 1840:FILE: contracts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol
[codex:1046197] 1947:FILE: contracts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol
[codex:1046197] 1991:FILE: contracts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol
[codex:1046197] 2116:FILE: contracts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol
[codex:1046197] 2155:FILE: contracts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Clarifying scope and reading strategy**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '2594,3431p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197] FILE: contracts/contracts/DragonBuyAndBurn.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: UNLICENSED
[codex:1046197] pragma solidity 0.8.20;
[codex:1046197] 
[codex:1046197] // UniSwap
[codex:1046197] import "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol";
[codex:1046197] import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol";
[codex:1046197] 
[codex:1046197] // OpenZeppelins
[codex:1046197] import "@openzeppelin/contracts/access/Ownable2Step.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/math/Math.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/Context.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
[codex:1046197] 
[codex:1046197] // Library
[codex:1046197] import "./lib/Constants.sol";
[codex:1046197] import "./lib/interfaces/IWETH.sol";
[codex:1046197] import "./lib/interfaces/INonfungiblePositionManager.sol";
[codex:1046197] import "./lib/uniswap/PoolAddress.sol";
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Continuing to read from line 3432**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '3432,4363p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197] FILE: contracts/contracts/DragonX.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: UNLICENSED
[codex:1046197] pragma solidity 0.8.20;
[codex:1046197] 
[codex:1046197] // OpenZeppelin
[codex:1046197] import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
[codex:1046197] import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/Address.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/Create2.sol";
[codex:1046197] import "@openzeppelin/contracts/access/Ownable2Step.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
[codex:1046197] 
[codex:1046197] // Library
[codex:1046197] import "./lib/DragonStake.sol";
[codex:1046197] import "./lib/Constants.sol";
[codex:1046197] import "./lib/Types.sol";
[codex:1046197] import "./lib/interfaces/ITitanX.sol";
[codex:1046197] 
[codex:1046197] /**
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Continuing from specific line**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '4364,4831p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197] FILE: contracts/contracts/TitanBuy.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: UNLICENSED
[codex:1046197] pragma solidity 0.8.20;
[codex:1046197] 
[codex:1046197] // UniSwap
[codex:1046197] import "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol";
[codex:1046197] import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol";
[codex:1046197] 
[codex:1046197] // OpenZeppelins
[codex:1046197] import "@openzeppelin/contracts/access/Ownable2Step.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/math/Math.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/Context.sol";
[codex:1046197] import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
[codex:1046197] 
[codex:1046197] // Library
[codex:1046197] import "./lib/Constants.sol";
[codex:1046197] import "./lib/interfaces/IWETH.sol";
[codex:1046197] import "./lib/uniswap/PoolAddress.sol";
[codex:1046197] import "./lib/uniswap/Oracle.sol";
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Continuing audit bundle review**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '4832,5115p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 5ms:
[codex:1046197] FILE: contracts/contracts/lib/Constants.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: UNLICENSED
[codex:1046197] pragma solidity 0.8.20;
[codex:1046197] 
[codex:1046197] /* Common */
[codex:1046197] uint256 constant BASIS = 10_000;
[codex:1046197] uint256 constant SECONDS_IN_DAY = 86400;
[codex:1046197] uint256 constant SCALING_FACTOR_1e3 = 1e3;
[codex:1046197] uint256 constant SCALING_FACTOR_1e6 = 1e6;
[codex:1046197] uint256 constant SCALING_FACTOR_1e7 = 1e7;
[codex:1046197] uint256 constant SCALING_FACTOR_1e11 = 1e11;
[codex:1046197] uint256 constant SCALING_FACTOR_1e18 = 1e18;
[codex:1046197] 
[codex:1046197] /* TitanX staking */
[codex:1046197] uint256 constant TITANX_MAX_STAKE_PER_WALLET = 1000;
[codex:1046197] uint256 constant TITANX_MIN_STAKE_LENGTH = 28;
[codex:1046197] uint256 constant TITANX_MAX_STAKE_LENGTH = 3500;
[codex:1046197] 
[codex:1046197] /* TitanX Stake Longer Pays Better bonus */
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Continuing from line 5116**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '5116,5904p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197] FILE: contracts/contracts/lib/Types.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: UNLICENSED
[codex:1046197] pragma solidity 0.8.20;
[codex:1046197] 
[codex:1046197] /**
[codex:1046197]  * A simple enum to indicate of the initial liquidity for DragonX / TitanX pool has been minted
[codex:1046197]  */
[codex:1046197] enum InitialLiquidityMinted {
[codex:1046197]     No,
[codex:1046197]     Yes
[codex:1046197] }
[codex:1046197] 
[codex:1046197] ================================================================================
[codex:1046197] FILE: contracts/contracts/lib/interfaces/INonfungiblePositionManager.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: UNLICENSED
[codex:1046197] pragma solidity 0.8.20;
[codex:1046197] 
[codex:1046197] /**
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Needing more code context**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "sed -n '5905,6600p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197] FILE: contracts/contracts/mocks/BuildOnDragonX.sol
[codex:1046197] ================================================================================
[codex:1046197] // SPDX-License-Identifier: UNLICENSED
[codex:1046197] pragma solidity 0.8.20;
[codex:1046197] 
[codex:1046197] // Library
[codex:1046197] import "../DragonX.sol";
[codex:1046197] import "../lib/interfaces/ITitanX.sol";
[codex:1046197] import "../lib/Constants.sol";
[codex:1046197] 
[codex:1046197] // Simulating a protocol which contributes to the TitanX vault
[codex:1046197] contract BuildOnDragonX {
[codex:1046197]     function sendToDragonVault(address dragonAddress) external {
[codex:1046197]         DragonX dragonX = DragonX(payable(dragonAddress));
[codex:1046197]         ITitanX titanX = ITitanX(TITANX_ADDRESS);
[codex:1046197] 
[codex:1046197]         // Transfer TitanX hold by this contract to DragonX
[codex:1046197]         titanX.transfer(dragonAddress, titanX.balanceOf(address(this)));
[codex:1046197] 
[codex:1046197]         // Update the DragonX vault
[codex:1046197] 
[codex:1046197] 
[codex:1046197] 
[codex:1046197] 
[codex:1046197] 
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Summarizing security audit findings**
[codex:1046197] 
[codex:1046197] I've finished reviewing the entire contract bundle, focusing on common vulnerability types like reentrancy, access control, upgradeability, oracle manipulation, and accounting issues. I analyzed key contracts such as DragonX, DragonBuyAndBurn, TitanBuy, and DragonStake, weighing potential exploit scenarios and permission checks in detail, including subtle interactions with external calls and token transfers. Several possible risks emerged, like fallback reentrancy, oracle slippage fallback to spot price, and unrestricted calls on some functions, but overall many protections and design choices mitigate severe exploits. I'm carefully balancing what might be intended behaviors versus potential attack vectors.
[codex:1046197] thinking
[codex:1046197] **Evaluating reentrancy and economic risks**
[codex:1046197] 
[codex:1046197] I’m exploring how reentrancy could affect functions beyond claim, like stake or mint, especially via fallback calls from external addresses controlled by the owner. While claim uses nonReentrant, other functions don’t, raising possible state consistency risks during reentrant calls. I’m also examining oracle manipulation risks from TWAP fallback to spot prices in newly created pools, which could enable sandwich attacks on public buy functions. Additionally, I’m considering potential DoS via unrestricted creation of new stake instances and economic implications of permissionless staking and external calls lacking reentrancy guards. Overall, I’m weighing if these represent exploitable vulnerabilities or intended contract behavior.
[codex:1046197] thinking
[codex:1046197] **Reviewing external calls and access controls**
[codex:1046197] 
[codex:1046197] I’m analyzing potential reentrancy in external calls like TitanX.endStake and incentive fee sends, confirming use of safe token transfers and nonReentrant guards. I’m also checking access controls on key functions and ownership assignments from Create2 deploy, along with risks from owner-upgradable addresses and tx.origin usage. Most patterns seem safe or intentionally designed, with low-risk issues like reliance on tx.origin and possible oracle manipulation still noted but not exploited. Overall, I’m concluding no critical vulnerabilities but staying thorough on state updates and call order in complex flows.
[codex:1046197] thinking
[codex:1046197] **Evaluating token allowance and staking controls**
[codex:1046197] 
[codex:1046197] I’m reviewing token allowance patterns, owner-only functions, and staking flow permissions, focusing on minting, burning, and stake instance deployment. I see potential economic risks from open staking calls and some DoS risks if stake instances accumulate too much, but no direct exploit. I’m also checking oracle slippage logic and external ETH sends to ensure state consistency and prevent reentrancy issues, concluding design choices mostly limit attack surface despite minor anti-patterns.
[codex:1046197] thinking
[codex:1046197] **Highlighting oracle manipulation risks and import oversight**
[codex:1046197] 
[codex:1046197] I’m outlining how reliance on TWAP from the same pools used for trading creates a manipulation risk—especially early on when observation history is short—since fallback to spot price allows MEV-style attacks. I also noticed missing SafeERC20 imports in some contracts even though they use its functions, which might cause compile issues but isn’t a direct security flaw. Overall, I’m flagging a medium-risk oracle vulnerability alongside these observations.
[codex:1046197] thinking
[codex:1046197] **Summarizing MEV exploitation risk and planning annotation**
[codex:1046197] 
[codex:1046197] I’m confirming the medium-severity oracle manipulation risk where MEV actors can exploit short TWAP windows in permissionless buy functions to drain WETH from the contract. I’m considering combining findings for both buy contracts in one report and looking into line numbers for precise file annotations to provide helpful evidence.
[codex:1046197] exec
[codex:1046197] /bin/bash -lc 'rg -n "buyTitanX|calculateMinimumTitanAmount|getTitanQuoteForEth" contracts/contracts/TitanBuy.sol' in /tmp/codex-multi-t2vdkoqo succeeded in 8ms:
[codex:1046197] 196:    function buyTitanX() external nonReentrant returns (uint256 amountOut) {
[codex:1046197] 237:        uint256 amountOutMinimum = calculateMinimumTitanAmount(amountIn);
[codex:1046197] 285:     * @dev Calculates the incentive fee for executing the buyTitanX function.
[codex:1046197] 289:     * @notice Used to determine the incentive fee for running the buyTitanX function.
[codex:1046197] 371:    function getTitanQuoteForEth(
[codex:1046197] 424:    function calculateMinimumTitanAmount(
[codex:1046197] 428:        uint256 expectedTitanAmount = getTitanQuoteForEth(amountIn);
[codex:1046197] 438:     * @dev Determines the WETH amount available for the next call to buyTitanX.
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Identifying DragonBuyAndBurn methods**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc 'rg -n "buyAndBurnDragonX|calculateMinimumDragonAmount|getTitanQuoteForEth|getDragonQuoteForTitan" contracts/contracts/DragonBuyAndBurn.sol' in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197] 246:    function buyAndBurnDragonX()
[codex:1046197] 299:        uint256 amountOutMinimum = calculateMinimumDragonAmount(amountIn);
[codex:1046197] 449:     * @dev Calculates the incentive fee for executing the buyAndBurnDragonX function.
[codex:1046197] 453:     * @notice Used to determine the incentive fee for running the buyAndBurnDragonX function.
[codex:1046197] 544:    function getTitanQuoteForEth(
[codex:1046197] 601:    function getDragonQuoteForTitan(
[codex:1046197] 648:     * @dev Determines the WETH amount available for the next call to buyAndBurnDragonX.
[codex:1046197] 681:    function calculateMinimumDragonAmount(
[codex:1046197] 688:        uint256 expectedTitanAmount = getTitanQuoteForEth(amountIn);
[codex:1046197] 695:        uint256 expectedDragonAmount = getDragonQuoteForTitan(
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Documenting oracle fallback logic**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "nl -ba contracts/contracts/DragonBuyAndBurn.sol | sed -n '520,720p'" in /tmp/codex-multi-t2vdkoqo succeeded in 5ms:
[codex:1046197]    520	     */
[codex:1046197]    521	    function setDragonPriceTwa(uint32 mins) external onlyOwner {
[codex:1046197]    522	        require(mins >= 5 && mins <= 60, "5m-1h only");
[codex:1046197]    523	        _dragonPriceTwa = mins;
[codex:1046197]    524	    }
[codex:1046197]    525	
[codex:1046197]    526	    // -----------------------------------------
[codex:1046197]    527	    // Public functions
[codex:1046197]    528	    // -----------------------------------------
[codex:1046197]    529	    /**
[codex:1046197]    530	     * Get a quote for TitanX for a given amount of ETH
[codex:1046197]    531	     * @notice Uses Time-Weighted Average Price (TWAP) and falls back to the pool price if TWAP is not available.
[codex:1046197]    532	     * @param baseAmount The amount of ETH for which the TitanX quote is needed.
[codex:1046197]    533	     * @return quote The amount of TitanX.
[codex:1046197]    534	     * @dev This function computes the TWAP of TitanX in ETH using the Uniswap V3 pool for TitanX/WETH and the Oracle Library.
[codex:1046197]    535	     *      Steps to compute the TWAP:
[codex:1046197]    536	     *        1. Compute the pool address with the PoolAddress library using the Uniswap factory address,
[codex:1046197]    537	     *           the addresses of WETH9 and TitanX, and the fee tier.
[codex:1046197]    538	     *        2. Determine the period for the TWAP calculation, limited by the oldest available observation from the Oracle.
[codex:1046197]    539	     *        3. If `secondsAgo` is zero, use the current price from the pool; otherwise, consult the Oracle Library
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Adding TitanBuy snippet**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "nl -ba contracts/contracts/TitanBuy.sol | sed -n '340,460p'" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197]    340	        require(secs >= 60 && secs <= 43200, "1m-12h only");
[codex:1046197]    341	        interval = secs;
[codex:1046197]    342	    }
[codex:1046197]    343	
[codex:1046197]    344	    /**
[codex:1046197]    345	     * @notice set the TWA value used when calculting the TitanX price. Only callable by owner address.
[codex:1046197]    346	     * @param mins TWA in minutes
[codex:1046197]    347	     */
[codex:1046197]    348	    function setTitanPriceTwa(uint32 mins) external onlyOwner {
[codex:1046197]    349	        require(mins >= 5 && mins <= 60, "5m-1h only");
[codex:1046197]    350	        _titanPriceTwa = mins;
[codex:1046197]    351	    }
[codex:1046197]    352	
[codex:1046197]    353	    // -----------------------------------------
[codex:1046197]    354	    // Public functions
[codex:1046197]    355	    // -----------------------------------------
[codex:1046197]    356	    /**
[codex:1046197]    357	     * Get a quote for TitanX for a given amount of ETH
[codex:1046197]    358	     * @notice Uses Time-Weighted Average Price (TWAP) and falls back to the pool price if TWAP is not available.
[codex:1046197]    359	     * @param baseAmount The amount of ETH for which the TitanX quote is needed.
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Locating calculateMinimum usage in buyTitanX**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "nl -ba contracts/contracts/TitanBuy.sol | sed -n '170,260p'" in /tmp/codex-multi-t2vdkoqo succeeded in 6ms:
[codex:1046197]    170	
[codex:1046197]    171	    // -----------------------------------------
[codex:1046197]    172	    // External functions
[codex:1046197]    173	    // -----------------------------------------
[codex:1046197]    174	    /**
[codex:1046197]    175	     * @notice Executes a swap of WETH for TitanX tokens, applies incentive fees, and updates relevant contracts and state.
[codex:1046197]    176	     * @dev This function:
[codex:1046197]    177	     *      1. Checks for valid DragonX address.
[codex:1046197]    178	     *      2. Ensures the caller is not a contract to prevent bot interactions.
[codex:1046197]    179	     *      3. Enforces a cooldown period between successive calls.
[codex:1046197]    180	     *      4. Calculates the WETH amount to be used for the swap based on the contract's WETH balance and cap per swap.
[codex:1046197]    181	     *      5. Deducts an incentive fee from the WETH amount.
[codex:1046197]    182	     *      6. Approves the swap router to spend WETH.
[codex:1046197]    183	     *      7. Calculates the minimum amount of TitanX to be received in the swap, accounting for slippage.
[codex:1046197]    184	     *      8. Performs the swap via the swap router.
[codex:1046197]    185	     *      9. Transfers the bought TitanX tokens to the DragonX contract.
[codex:1046197]    186	     *      10. Updates the DragonX vault.
[codex:1046197]    187	     *      11. Updates state variables tracking WETH used and TitanX bought.
[codex:1046197]    188	     *      12. Sends the incentive fee to the message sender.
[codex:1046197]    189	     *      13. Emits a `TitanBought` event.
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Updating buyAndBurnDragonX lines**
[codex:1046197] exec
[codex:1046197] /bin/bash -lc "nl -ba contracts/contracts/DragonBuyAndBurn.sol | sed -n '230,340p'" in /tmp/codex-multi-t2vdkoqo succeeded in 5ms:
[codex:1046197]    230	    // External functions
[codex:1046197]    231	    // -----------------------------------------
[codex:1046197]    232	    /**
[codex:1046197]    233	     * Buy and Burn DragonX Tokens
[codex:1046197]    234	     * @notice Buys DragonX tokens using WETH and then burns them to manage the token's supply and value.
[codex:1046197]    235	     * @dev This function swaps WETH for DragonX tokens using a swap router, then burns the DragonX tokens.
[codex:1046197]    236	     *      It includes security checks to prevent abuse (e.g., reentrancy, bot interactions, cooldown periods).
[codex:1046197]    237	     *      The function also handles an incentive fee for the caller.
[codex:1046197]    238	     * @return amountOut The amount of DragonX tokens bought and burned.
[codex:1046197]    239	     * @custom:revert InvalidDragonAddress if the DragonX address is not set.
[codex:1046197]    240	     * @custom:revert InvalidCaller if the function is called by a smart contract (to prevent bot interactions).
[codex:1046197]    241	     * @custom:revert CooldownPeriodActive if the function is called again before the cooldown period has elapsed.
[codex:1046197]    242	     * @custom:revert NoWethToBuyAndBurnDragon if there is no WETH available for the transaction after deducting the incentive fee.
[codex:1046197]    243	     *
[codex:1046197]    244	     * Emits a BoughtAndBurned event after successfully buying and burning DragonX tokens.
[codex:1046197]    245	     */
[codex:1046197]    246	    function buyAndBurnDragonX()
[codex:1046197]    247	        external
[codex:1046197]    248	        nonReentrant
[codex:1046197]    249	        returns (uint256 amountOut)
[codex:1046197] 
[codex:1046197] thinking
[codex:1046197] **Summarizing vulnerability findings**
[codex:1046197] codex
[codex:1046197] {"no_findings":false,"summary":"Found 1 issue: swap minimums can fall back to spot/short TWAP, enabling oracle manipulation against the public buy functions.","findings":[{"severity":"medium","category":"oracle","title":"TWAP can collapse to spot price, enabling price manipulation around buy/burn swaps","exploit_scenario":"An attacker can manipulate the WETH/TitanX and/or DragonX/TitanX Uniswap V3 pools (especially when observation history is short) so `secondsAgo` becomes 0 or very small, causing the contracts to use spot/short-TWAP prices for `amountOutMinimum`. The attacker then calls `buyTitanX()` or `buyAndBurnDragonX()` in the same block, allowing the swap to execute at an unfavorable price and extracting value via a back-run, draining WETH from the contracts over time.","recommendation":"Require a minimum TWAP window and revert if `oldestObservation` is below the configured window instead of falling back to spot price. Consider enforcing a longer minimum TWAP, delaying public buy calls until sufficient observations exist, or using an independent oracle (e.g., Chainlink) for min-out calculations.","evidence":"Both buy functions derive `amountOutMinimum` from `getTitanQuoteForEth`/`getDragonQuoteForTitan`, which cap the TWAP window by `oldestObservation` and fall back to `pool.slot0()` (spot price) when `secondsAgo == 0`, making the min-out manipulable when the pool has limited observations.","locations":["contracts/contracts/TitanBuy.sol:196","contracts/contracts/TitanBuy.sol:371","contracts/contracts/TitanBuy.sol:389","contracts/contracts/DragonBuyAndBurn.sol:246","contracts/contracts/DragonBuyAndBurn.sol:544","contracts/contracts/DragonBuyAndBurn.sol:623"]}]}
[codex:1046197] tokens used
[codex:1046197] 81,617
[codex:1046197] {"no_findings":false,"summary":"Found 1 issue: swap minimums can fall back to spot/short TWAP, enabling oracle manipulation against the public buy functions.","findings":[{"severity":"medium","category":"oracle","title":"TWAP can collapse to spot price, enabling price manipulation around buy/burn swaps","exploit_scenario":"An attacker can manipulate the WETH/TitanX and/or DragonX/TitanX Uniswap V3 pools (especially when observation history is short) so `secondsAgo` becomes 0 or very small, causing the contracts to use spot/short-TWAP prices for `amountOutMinimum`. The attacker then calls `buyTitanX()` or `buyAndBurnDragonX()` in the same block, allowing the swap to execute at an unfavorable price and extracting value via a back-run, draining WETH from the contracts over time.","recommendation":"Require a minimum TWAP window and revert if `oldestObservation` is below the configured window instead of falling back to spot price. Consider enforcing a longer minimum TWAP, delaying public buy calls until sufficient observations exist, or using an independent oracle (e.g., Chainlink) for min-out calculations.","evidence":"Both buy functions derive `amountOutMinimum` from `getTitanQuoteForEth`/`getDragonQuoteForTitan`, which cap the TWAP window by `oldestObservation` and fall back to `pool.slot0()` (spot price) when `secondsAgo == 0`, making the min-out manipulable when the pool has limited observations.","locations":["contracts/contracts/TitanBuy.sol:196","contracts/contracts/TitanBuy.sol:371","contracts/contracts/TitanBuy.sol:389","contracts/contracts/DragonBuyAndBurn.sol:246","contracts/contracts/DragonBuyAndBurn.sol:544","contracts/contracts/DragonBuyAndBurn.sol:623"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-28T15:29:44.645497+00:00",
        "returncode": 0
    },
    "summary": "Found 1 issue: swap minimums can fall back to spot/short TWAP, enabling oracle manipulation against the public buy functions.",
    "raw_final": {
        "summary": "Found 1 issue: swap minimums can fall back to spot/short TWAP, enabling oracle manipulation against the public buy functions.",
        "findings": [
            {
                "title": "TWAP can collapse to spot price, enabling price manipulation around buy/burn swaps",
                "category": "oracle",
                "evidence": "Both buy functions derive `amountOutMinimum` from `getTitanQuoteForEth`/`getDragonQuoteForTitan`, which cap the TWAP window by `oldestObservation` and fall back to `pool.slot0()` (spot price) when `secondsAgo == 0`, making the min-out manipulable when the pool has limited observations.",
                "severity": "medium",
                "locations": [
                    "contracts/contracts/TitanBuy.sol:196",
                    "contracts/contracts/TitanBuy.sol:371",
                    "contracts/contracts/TitanBuy.sol:389",
                    "contracts/contracts/DragonBuyAndBurn.sol:246",
                    "contracts/contracts/DragonBuyAndBurn.sol:544",
                    "contracts/contracts/DragonBuyAndBurn.sol:623"
                ],
                "recommendation": "Require a minimum TWAP window and revert if `oldestObservation` is below the configured window instead of falling back to spot price. Consider enforcing a longer minimum TWAP, delaying public buy calls until sufficient observations exist, or using an independent oracle (e.g., Chainlink) for min-out calculations.",
                "exploit_scenario": "An attacker can manipulate the WETH/TitanX and/or DragonX/TitanX Uniswap V3 pools (especially when observation history is short) so `secondsAgo` becomes 0 or very small, causing the contracts to use spot/short-TWAP prices for `amountOutMinimum`. The attacker then calls `buyTitanX()` or `buyAndBurnDragonX()` in the same block, allowing the swap to execute at an unfavorable price and extracting value via a back-run, draining WETH from the contracts over time."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
16
EXT*/BALANCE
5
Total opcodes
5828
Flags
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 0x0184
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8c14a5d6
00000019: GT
0000001a: PUSH2 0x00d6
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xbc7576d3
00000024: GT
00000025: PUSH2 0x007f
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xe30c3978
0000002f: GT
00000030: PUSH2 0x0059
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xe30c3978
0000003a: EQ
0000003b: PUSH2 0x04aa
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xf0fa55a9
00000045: EQ
00000046: PUSH2 0x04c8
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2fde38b
00000050: EQ
00000051: PUSH2 0x04e8
00000054: JUMPI
00000055: PUSH2 0x020f
00000058: JUMP
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0xbc7576d3
00000060: EQ
00000061: PUSH2 0x045f
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0xc9ae5e0a
0000006b: EQ
0000006c: PUSH2 0x047f
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0xcce0d6fb
00000076: EQ
00000077: PUSH2 0x0494
0000007a: JUMPI
0000007b: PUSH2 0x020f
0000007e: JUMP
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0xa2b6eef0
00000086: GT
00000087: PUSH2 0x00b0
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0xa2b6eef0
00000091: EQ
00000092: PUSH2 0x040a
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xaf97d3bd
0000009c: EQ
0000009d: PUSH2 0x041f
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0xb35ec4fa
000000a7: EQ
000000a8: PUSH2 0x043f
000000ab: JUMPI
000000ac: PUSH2 0x020f
000000af: JUMP
000000b0: JUMPDEST
000000b1: DUP1
000000b2: PUSH4 0x8c14a5d6
000000b7: EQ
000000b8: PUSH2 0x03a2
000000bb: JUMPI
000000bc: DUP1
000000bd: PUSH4 0x8da5cb5b
000000c2: EQ
000000c3: PUSH2 0x03c2
000000c6: JUMPI
000000c7: DUP1
000000c8: PUSH4 0x947a36fb
000000cd: EQ
000000ce: PUSH2 0x03f4
000000d1: JUMPI
000000d2: PUSH2 0x020f
000000d5: JUMP
000000d6: JUMPDEST
000000d7: DUP1
000000d8: PUSH4 0x49f7e6c6
000000dd: GT
000000de: PUSH2 0x0138
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0x715018a6
000000e8: GT
000000e9: PUSH2 0x0112
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0x715018a6
000000f3: EQ
000000f4: PUSH2 0x0362
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0x79ba5097
000000fe: EQ
000000ff: PUSH2 0x0377
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0x81210531
00000109: EQ
0000010a: PUSH2 0x038c
0000010d: JUMPI
0000010e: PUSH2 0x020f
00000111: JUMP
00000112: JUMPDEST
00000113: DUP1
00000114: PUSH4 0x49f7e6c6
00000119: EQ
0000011a: PUSH2 0x0317
0000011d: JUMPI
0000011e: DUP1
0000011f: PUSH4 0x612b91cc
00000124: EQ
00000125: PUSH2 0x032d
00000128: JUMPI
00000129: DUP1
0000012a: PUSH4 0x658a3b3c
0000012f: EQ
00000130: PUSH2 0x0342
00000133: JUMPI
00000134: PUSH2 0x020f
00000137: JUMP
00000138: JUMPDEST
00000139: DUP1
0000013a: PUSH4 0x217d9332
0000013f: GT
00000140: PUSH2 0x0169
00000143: JUMPI
00000144: DUP1
00000145: PUSH4 0x217d9332
0000014a: EQ
0000014b: PUSH2 0x02cb
0000014e: JUMPI
0000014f: DUP1
00000150: PUSH4 0x2e3d4400
00000155: EQ
00000156: PUSH2 0x02e1
00000159: JUMPI
0000015a: DUP1
0000015b: PUSH4 0x3e032a3b
00000160: EQ
00000161: PUSH2 0x0301
00000164: JUMPI
00000165: PUSH2 0x020f
00000168: JUMP
00000169: JUMPDEST
0000016a: DUP1
0000016b: PUSH4 0x098dada5
00000170: EQ
00000171: PUSH2 0x0283
00000174: JUMPI
00000175: DUP1
00000176: PUSH4 0x187cc30e
0000017b: EQ
0000017c: PUSH2 0x02a3
0000017f: JUMPI
00000180: PUSH2 0x020f
00000183: JUMP
00000184: JUMPDEST
00000185: CALLDATASIZE
00000186: PUSH2 0x020f
00000189: JUMPI
0000018a: CALLER
0000018b: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000001a0: EQ
000001a1: PUSH2 0x020d
000001a4: JUMPI
000001a5: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000001ba: PUSH1 0x01
000001bc: PUSH1 0x01
000001be: PUSH1 0xa0
000001c0: SHL
000001c1: SUB
000001c2: AND
000001c3: PUSH4 0xd0e30db0
000001c8: CALLVALUE
000001c9: PUSH1 0x40
000001cb: MLOAD
000001cc: DUP3
000001cd: PUSH4 0xffffffff
000001d2: AND
000001d3: PUSH1 0xe0
000001d5: SHL
000001d6: DUP2
000001d7: MSTORE
000001d8: PUSH1 0x04
000001da: ADD
000001db: PUSH1 0x00
000001dd: PUSH1 0x40
000001df: MLOAD
000001e0: DUP1
000001e1: DUP4
000001e2: SUB
000001e3: DUP2
000001e4: DUP6
000001e5: DUP9
000001e6: DUP1
000001e7: EXTCODESIZE
000001e8: ISZERO
000001e9: DUP1
000001ea: ISZERO
000001eb: PUSH2 0x01f3
000001ee: JUMPI
000001ef: PUSH1 0x00
000001f1: DUP1
000001f2: REVERT
000001f3: JUMPDEST
000001f4: POP
000001f5: GAS
000001f6: CALL
000001f7: ISZERO
000001f8: DUP1
000001f9: ISZERO
000001fa: PUSH2 0x0207
000001fd: JUMPI
000001fe: RETURNDATASIZE
000001ff: PUSH1 0x00
00000201: DUP1
00000202: RETURNDATACOPY
00000203: RETURNDATASIZE
00000204: PUSH1 0x00
00000206: REVERT
00000207: JUMPDEST
00000208: POP
00000209: POP
0000020a: POP
0000020b: POP
0000020c: POP
0000020d: JUMPDEST
0000020e: STOP
0000020f: JUMPDEST
00000210: CALLVALUE
00000211: DUP1
00000212: ISZERO
00000213: PUSH2 0x021b
00000216: JUMPI
00000217: PUSH1 0x00
00000219: DUP1
0000021a: REVERT
0000021b: JUMPDEST
0000021c: POP
0000021d: PUSH1 0x40
0000021f: MLOAD
00000220: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000241: DUP2
00000242: MSTORE
00000243: PUSH1 0x20
00000245: PUSH1 0x04
00000247: DUP3
00000248: ADD
00000249: MSTORE
0000024a: PUSH1 0x12
0000024c: PUSH1 0x24
0000024e: DUP3
0000024f: ADD
00000250: MSTORE
00000251: PUSH32 0x46616c6c6261636b207472696767657265640000000000000000000000000000
00000272: PUSH1 0x44
00000274: DUP3
00000275: ADD
00000276: MSTORE
00000277: PUSH1 0x64
00000279: ADD
0000027a: JUMPDEST
0000027b: PUSH1 0x40
0000027d: MLOAD
0000027e: DUP1
0000027f: SWAP2
00000280: SUB
00000281: SWAP1
00000282: REVERT
00000283: JUMPDEST
00000284: CALLVALUE
00000285: DUP1
00000286: ISZERO
00000287: PUSH2 0x028f
0000028a: JUMPI
0000028b: PUSH1 0x00
0000028d: DUP1
0000028e: REVERT
0000028f: JUMPDEST
00000290: POP
00000291: PUSH2 0x020d
00000294: PUSH2 0x029e
00000297: CALLDATASIZE
00000298: PUSH1 0x04
0000029a: PUSH2 0x2373
0000029d: JUMP
0000029e: JUMPDEST
0000029f: PUSH2 0x0508
000002a2: JUMP
000002a3: JUMPDEST
000002a4: CALLVALUE
000002a5: DUP1
000002a6: ISZERO
000002a7: PUSH2 0x02af
000002aa: JUMPI
000002ab: PUSH1 0x00
000002ad: DUP1
000002ae: REVERT
000002af: JUMPDEST
000002b0: POP
000002b1: PUSH2 0x02b8
000002b4: PUSH2 0x0515
000002b7: JUMP
000002b8: JUMPDEST
000002b9: PUSH1 0x40
000002bb: MLOAD
000002bc: SWAP1
000002bd: DUP2
000002be: MSTORE
000002bf: PUSH1 0x20
000002c1: ADD
000002c2: JUMPDEST
000002c3: PUSH1 0x40
000002c5: MLOAD
000002c6: DUP1
000002c7: SWAP2
000002c8: SUB
000002c9: SWAP1
000002ca: RETURN
000002cb: JUMPDEST
000002cc: CALLVALUE
000002cd: DUP1
000002ce: ISZERO
000002cf: PUSH2 0x02d7
000002d2: JUMPI
000002d3: PUSH1 0x00
000002d5: DUP1
000002d6: REVERT
000002d7: JUMPDEST
000002d8: POP
000002d9: PUSH2 0x02b8
000002dc: PUSH1 0x06
000002de: SLOAD
000002df: DUP2
000002e0: JUMP
000002e1: JUMPDEST
000002e2: CALLVALUE
000002e3: DUP1
000002e4: ISZERO
000002e5: PUSH2 0x02ed
000002e8: JUMPI
000002e9: PUSH1 0x00
000002eb: DUP1
000002ec: REVERT
000002ed: JUMPDEST
000002ee: POP
000002ef: PUSH2 0x02b8
000002f2: PUSH2 0x02fc
000002f5: CALLDATASIZE
000002f6: PUSH1 0x04
000002f8: PUSH2 0x2373
000002fb: JUMP
000002fc: JUMPDEST
000002fd: PUSH2 0x09de
00000300: JUMP
00000301: JUMPDEST
00000302: CALLVALUE
00000303: DUP1
00000304: ISZERO
00000305: PUSH2 0x030d
00000308: JUMPI
00000309: PUSH1 0x00
0000030b: DUP1
0000030c: REVERT
0000030d: JUMPDEST
0000030e: POP
0000030f: PUSH2 0x02b8
00000312: PUSH1 0x04
00000314: SLOAD
00000315: DUP2
00000316: JUMP
00000317: JUMPDEST
00000318: CALLVALUE
00000319: DUP1
0000031a: ISZERO
0000031b: PUSH2 0x0323
0000031e: JUMPI
0000031f: PUSH1 0x00
00000321: DUP1
00000322: REVERT
00000323: JUMPDEST
00000324: POP
00000325: PUSH2 0x02b8
00000328: PUSH1 0x08
0000032a: SLOAD
0000032b: DUP2
0000032c: JUMP
0000032d: JUMPDEST
0000032e: CALLVALUE
0000032f: DUP1
00000330: ISZERO
00000331: PUSH2 0x0339
00000334: JUMPI
00000335: PUSH1 0x00
00000337: DUP1
00000338: REVERT
00000339: JUMPDEST
0000033a: POP
0000033b: PUSH2 0x02b8
0000033e: PUSH2 0x0b55
00000341: JUMP
00000342: JUMPDEST
00000343: CALLVALUE
00000344: DUP1
00000345: ISZERO
00000346: PUSH2 0x034e
00000349: JUMPI
0000034a: PUSH1 0x00
0000034c: DUP1
0000034d: REVERT
0000034e: JUMPDEST
0000034f: POP
00000350: PUSH2 0x020d
00000353: PUSH2 0x035d
00000356: CALLDATASIZE
00000357: PUSH1 0x04
00000359: PUSH2 0x23a1
0000035c: JUMP
0000035d: JUMPDEST
0000035e: PUSH2 0x0be9
00000361: JUMP
00000362: JUMPDEST
00000363: CALLVALUE
00000364: DUP1
00000365: ISZERO
00000366: PUSH2 0x036e
00000369: JUMPI
0000036a: PUSH1 0x00
0000036c: DUP1
0000036d: REVERT
0000036e: JUMPDEST
0000036f: POP
00000370: PUSH2 0x020d
00000373: PUSH2 0x0c6b
00000376: JUMP
00000377: JUMPDEST
00000378: CALLVALUE
00000379: DUP1
0000037a: ISZERO
0000037b: PUSH2 0x0383
0000037e: JUMPI
0000037f: PUSH1 0x00
00000381: DUP1
00000382: REVERT
00000383: JUMPDEST
00000384: POP
00000385: PUSH2 0x020d
00000388: PUSH2 0x0c7f
0000038b: JUMP
0000038c: JUMPDEST
0000038d: CALLVALUE
0000038e: DUP1
0000038f: ISZERO
00000390: PUSH2 0x0398
00000393: JUMPI
00000394: PUSH1 0x00
00000396: DUP1
00000397: REVERT
00000398: JUMPDEST
00000399: POP
0000039a: PUSH2 0x02b8
0000039d: PUSH1 0x07
0000039f: SLOAD
000003a0: DUP2
000003a1: JUMP
000003a2: JUMPDEST
000003a3: CALLVALUE
000003a4: DUP1
000003a5: ISZERO
000003a6: PUSH2 0x03ae
000003a9: JUMPI
000003aa: PUSH1 0x00
000003ac: DUP1
000003ad: REVERT
000003ae: JUMPDEST
000003af: POP
000003b0: PUSH2 0x020d
000003b3: PUSH2 0x03bd
000003b6: CALLDATASIZE
000003b7: PUSH1 0x04
000003b9: PUSH2 0x23d0
000003bc: JUMP
000003bd: JUMPDEST
000003be: PUSH2 0x0cdc
000003c1: JUMP
000003c2: JUMPDEST
000003c3: CALLVALUE
000003c4: DUP1
000003c5: ISZERO
000003c6: PUSH2 0x03ce
000003c9: JUMPI
000003ca: PUSH1 0x00
000003cc: DUP1
000003cd: REVERT
000003ce: JUMPDEST
000003cf: POP
000003d0: PUSH1 0x00
000003d2: SLOAD
000003d3: PUSH1 0x01
000003d5: PUSH1 0x01
000003d7: PUSH1 0xa0
000003d9: SHL
000003da: SUB
000003db: AND
000003dc: JUMPDEST
000003dd: PUSH1 0x40
000003df: MLOAD
000003e0: PUSH1 0x01
000003e2: PUSH1 0x01
000003e4: PUSH1 0xa0
000003e6: SHL
000003e7: SUB
000003e8: SWAP1
000003e9: SWAP2
000003ea: AND
000003eb: DUP2
000003ec: MSTORE
000003ed: PUSH1 0x20
000003ef: ADD
000003f0: PUSH2 0x02c2
000003f3: JUMP
000003f4: JUMPDEST
000003f5: CALLVALUE
000003f6: DUP1
000003f7: ISZERO
000003f8: PUSH2 0x0400
000003fb: JUMPI
000003fc: PUSH1 0x00
000003fe: DUP1
000003ff: REVERT
00000400: JUMPDEST
00000401: POP
00000402: PUSH2 0x02b8
00000405: PUSH1 0x09
00000407: SLOAD
00000408: DUP2
00000409: JUMP
0000040a: JUMPDEST
0000040b: CALLVALUE
0000040c: DUP1
0000040d: ISZERO
0000040e: PUSH2 0x0416
00000411: JUMPI
00000412: PUSH1 0x00
00000414: DUP1
00000415: REVERT
00000416: JUMPDEST
00000417: POP
00000418: PUSH2 0x02b8
0000041b: PUSH2 0x0d9f
0000041e: JUMP
0000041f: JUMPDEST
00000420: CALLVALUE
00000421: DUP1
00000422: ISZERO
00000423: PUSH2 0x042b
00000426: JUMPI
00000427: PUSH1 0x00
00000429: DUP1
0000042a: REVERT
0000042b: JUMPDEST
0000042c: POP
0000042d: PUSH2 0x02b8
00000430: PUSH2 0x043a
00000433: CALLDATASIZE
00000434: PUSH1 0x04
00000436: PUSH2 0x2373
00000439: JUMP
0000043a: JUMPDEST
0000043b: PUSH2 0x0e47
0000043e: JUMP
0000043f: JUMPDEST
00000440: CALLVALUE
00000441: DUP1
00000442: ISZERO
00000443: PUSH2 0x044b
00000446: JUMPI
00000447: PUSH1 0x00
00000449: DUP1
0000044a: REVERT
0000044b: JUMPDEST
0000044c: POP
0000044d: PUSH1 0x03
0000044f: SLOAD
00000450: PUSH2 0x03dc
00000453: SWAP1
00000454: PUSH1 0x01
00000456: PUSH1 0x01
00000458: PUSH1 0xa0
0000045a: SHL
0000045b: SUB
0000045c: AND
0000045d: DUP2
0000045e: JUMP
0000045f: JUMPDEST
00000460: CALLVALUE
00000461: DUP1
00000462: ISZERO
00000463: PUSH2 0x046b
00000466: JUMPI
00000467: PUSH1 0x00
00000469: DUP1
0000046a: REVERT
0000046b: JUMPDEST
0000046c: POP
0000046d: PUSH2 0x020d
00000470: PUSH2 0x047a
00000473: CALLDATASIZE
00000474: PUSH1 0x04
00000476: PUSH2 0x2373
00000479: JUMP
0000047a: JUMPDEST
0000047b: PUSH2 0x0e84
0000047e: JUMP
0000047f: JUMPDEST
00000480: CALLVALUE
00000481: DUP1
00000482: ISZERO
00000483: PUSH2 0x048b
00000486: JUMPI
00000487: PUSH1 0x00
00000489: DUP1
0000048a: REVERT
0000048b: JUMPDEST
0000048c: POP
0000048d: PUSH2 0x02b8
00000490: PUSH2 0x0f0a
00000493: JUMP
00000494: JUMPDEST
00000495: CALLVALUE
00000496: DUP1
00000497: ISZERO
00000498: PUSH2 0x04a0
0000049b: JUMPI
0000049c: PUSH1 0x00
0000049e: DUP1
0000049f: REVERT
000004a0: JUMPDEST
000004a1: POP
000004a2: PUSH2 0x02b8
000004a5: PUSH1 0x05
000004a7: SLOAD
000004a8: DUP2
000004a9: JUMP
000004aa: JUMPDEST
000004ab: CALLVALUE
000004ac: DUP1
000004ad: ISZERO
000004ae: PUSH2 0x04b6
000004b1: JUMPI
000004b2: PUSH1 0x00
000004b4: DUP1
000004b5: REVERT
000004b6: JUMPDEST
000004b7: POP
000004b8: PUSH1 0x01
000004ba: SLOAD
000004bb: PUSH1 0x01
000004bd: PUSH1 0x01
000004bf: PUSH1 0xa0
000004c1: SHL
000004c2: SUB
000004c3: AND
000004c4: PUSH2 0x03dc
000004c7: JUMP
000004c8: JUMPDEST
000004c9: CALLVALUE
000004ca: DUP1
000004cb: ISZERO
000004cc: PUSH2 0x04d4
000004cf: JUMPI
000004d0: PUSH1 0x00
000004d2: DUP1
000004d3: REVERT
000004d4: JUMPDEST
000004d5: POP
000004d6: PUSH2 0x020d
000004d9: PUSH2 0x04e3
000004dc: CALLDATASIZE
000004dd: PUSH1 0x04
000004df: PUSH2 0x2373
000004e2: JUMP
000004e3: JUMPDEST
000004e4: PUSH2 0x0f36
000004e7: JUMP
000004e8: JUMPDEST
000004e9: CALLVALUE
000004ea: DUP1
000004eb: ISZERO
000004ec: PUSH2 0x04f4
000004ef: JUMPI
000004f0: PUSH1 0x00
000004f2: DUP1
000004f3: REVERT
000004f4: JUMPDEST
000004f5: POP
000004f6: PUSH2 0x020d
000004f9: PUSH2 0x0503
000004fc: CALLDATASIZE
000004fd: PUSH1 0x04
000004ff: PUSH2 0x23a1
00000502: JUMP
00000503: JUMPDEST
00000504: PUSH2 0x0fbb
00000507: JUMP
00000508: JUMPDEST
00000509: PUSH2 0x0510
0000050c: PUSH2 0x1044
0000050f: JUMP
00000510: JUMPDEST
00000511: PUSH1 0x07
00000513: SSTORE
00000514: JUMP
00000515: JUMPDEST
00000516: PUSH1 0x00
00000518: PUSH2 0x051f
0000051b: PUSH2 0x108a
0000051e: JUMP
0000051f: JUMPDEST
00000520: PUSH1 0x03
00000522: SLOAD
00000523: PUSH1 0x01
00000525: PUSH1 0x01
00000527: PUSH1 0xa0
00000529: SHL
0000052a: SUB
0000052b: AND
0000052c: DUP1
0000052d: PUSH2 0x0562
00000530: JUMPI
00000531: PUSH1 0x40
00000533: MLOAD
00000534: PUSH32 0x90a3742300000000000000000000000000000000000000000000000000000000
00000555: DUP2
00000556: MSTORE
00000557: PUSH1 0x04
00000559: ADD
0000055a: PUSH1 0x40
0000055c: MLOAD
0000055d: DUP1
0000055e: SWAP2
0000055f: SUB
00000560: SWAP1
00000561: REVERT
00000562: JUMPDEST
00000563: CALLER
00000564: ORIGIN
00000565: EQ
00000566: PUSH2 0x059b
00000569: JUMPI
0000056a: PUSH1 0x40
0000056c: MLOAD
0000056d: PUSH32 0x48f5c3ed00000000000000000000000000000000000000000000000000000000
0000058e: DUP2
0000058f: MSTORE
00000590: PUSH1 0x04
00000592: ADD
00000593: PUSH1 0x40
00000595: MLOAD
00000596: DUP1
00000597: SWAP2
00000598: SUB
00000599: SWAP1
0000059a: REVERT
0000059b: JUMPDEST
0000059c: PUSH1 0x09
0000059e: SLOAD
0000059f: PUSH1 0x08
000005a1: SLOAD
000005a2: PUSH2 0x05ab
000005a5: SWAP1
000005a6: TIMESTAMP
000005a7: PUSH2 0x241c
000005aa: JUMP
000005ab: JUMPDEST
000005ac: GT
000005ad: PUSH2 0x05e2
000005b0: JUMPI
000005b1: PUSH1 0x40
000005b3: MLOAD
000005b4: PUSH32 0x998d019b00000000000000000000000000000000000000000000000000000000
000005d5: DUP2
000005d6: MSTORE
000005d7: PUSH1 0x04
000005d9: ADD
000005da: PUSH1 0x40
000005dc: MLOAD
000005dd: DUP1
000005de: SWAP2
000005df: SUB
000005e0: SWAP1
000005e1: REVERT
000005e2: JUMPDEST
000005e3: TIMESTAMP
000005e4: PUSH1 0x08
000005e6: SSTORE
000005e7: PUSH1 0x40
000005e9: MLOAD
000005ea: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
0000060b: DUP2
0000060c: MSTORE
0000060d: ADDRESS
0000060e: PUSH1 0x04
00000610: DUP3
00000611: ADD
00000612: MSTORE
00000613: PUSH20 0xe592427a0aece92de3edee1f18e0157c05861564
00000628: SWAP1
00000629: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
0000063e: SWAP1
0000063f: PUSH1 0x00
00000641: SWAP1
00000642: DUP3
00000643: SWAP1
00000644: PUSH4 0x70a08231
00000649: SWAP1
0000064a: PUSH1 0x24
0000064c: ADD
0000064d: PUSH1 0x20
0000064f: PUSH1 0x40
00000651: MLOAD
00000652: DUP1
00000653: DUP4
00000654: SUB
00000655: DUP2
00000656: DUP7
00000657: GAS
00000658: STATICCALL
00000659: ISZERO
0000065a: DUP1
0000065b: ISZERO
0000065c: PUSH2 0x0669
0000065f: JUMPI
00000660: RETURNDATASIZE
00000661: PUSH1 0x00
00000663: DUP1
00000664: RETURNDATACOPY
00000665: RETURNDATASIZE
00000666: PUSH1 0x00
00000668: REVERT
00000669: JUMPDEST
0000066a: POP
0000066b: POP
0000066c: POP
0000066d: POP
0000066e: PUSH1 0x40
00000670: MLOAD
00000671: RETURNDATASIZE
00000672: PUSH1 0x1f
00000674: NOT
00000675: PUSH1 0x1f
00000677: DUP3
00000678: ADD
00000679: AND
0000067a: DUP3
0000067b: ADD
0000067c: DUP1
0000067d: PUSH1 0x40
0000067f: MSTORE
00000680: POP
00000681: DUP2
00000682: ADD
00000683: SWAP1
00000684: PUSH2 0x068d
00000687: SWAP2
00000688: SWAP1
00000689: PUSH2 0x242f
0000068c: JUMP
0000068d: JUMPDEST
0000068e: PUSH1 0x07
00000690: SLOAD
00000691: SWAP1
00000692: SWAP2
00000693: POP
00000694: DUP1
00000695: DUP3
00000696: GT
00000697: ISZERO
00000698: PUSH2 0x069f
0000069b: JUMPI
0000069c: DUP1
0000069d: SWAP2
0000069e: POP
0000069f: JUMPDEST
000006a0: PUSH1 0x00
000006a2: PUSH2 0x2710
000006a5: PUSH2 0x06b0
000006a8: PUSH2 0x012c
000006ab: DUP6
000006ac: PUSH2 0x2448
000006af: JUMP
000006b0: JUMPDEST
000006b1: PUSH2 0x06ba
000006b4: SWAP2
000006b5: SWAP1
000006b6: PUSH2 0x248e
000006b9: JUMP
000006ba: JUMPDEST
000006bb: PUSH1 0x40
000006bd: MLOAD
000006be: PUSH32 0x2e1a7d4d00000000000000000000000000000000000000000000000000000000
000006df: DUP2
000006e0: MSTORE
000006e1: PUSH1 0x04
000006e3: DUP2
000006e4: ADD
000006e5: DUP3
000006e6: SWAP1
000006e7: MSTORE
000006e8: SWAP1
000006e9: SWAP2
000006ea: POP
000006eb: PUSH1 0x01
000006ed: PUSH1 0x01
000006ef: PUSH1 0xa0
000006f1: SHL
000006f2: SUB
000006f3: DUP6
000006f4: AND
000006f5: SWAP1
000006f6: PUSH4 0x2e1a7d4d
000006fb: SWAP1
000006fc: PUSH1 0x24
000006fe: ADD
000006ff: PUSH1 0x00
00000701: PUSH1 0x40
00000703: MLOAD
00000704: DUP1
00000705: DUP4
00000706: SUB
00000707: DUP2
00000708: PUSH1 0x00
0000070a: DUP8
0000070b: DUP1
0000070c: EXTCODESIZE
0000070d: ISZERO
0000070e: DUP1
0000070f: ISZERO
00000710: PUSH2 0x0718
00000713: JUMPI
00000714: PUSH1 0x00
00000716: DUP1
00000717: REVERT
00000718: JUMPDEST
00000719: POP
0000071a: GAS
0000071b: CALL
0000071c: ISZERO
0000071d: DUP1
0000071e: ISZERO
0000071f: PUSH2 0x072c
00000722: JUMPI
00000723: RETURNDATASIZE
00000724: PUSH1 0x00
00000726: DUP1
00000727: RETURNDATACOPY
00000728: RETURNDATASIZE
00000729: PUSH1 0x00
0000072b: REVERT
0000072c: JUMPDEST
0000072d: POP
0000072e: POP
0000072f: POP
00000730: POP
00000731: DUP1
00000732: DUP4
00000733: PUSH2 0x073c
00000736: SWAP2
00000737: SWAP1
00000738: PUSH2 0x241c
0000073b: JUMP
0000073c: JUMPDEST
0000073d: SWAP3
0000073e: POP
0000073f: DUP3
00000740: PUSH1 0x00
00000742: SUB
00000743: PUSH2 0x0778
00000746: JUMPI
00000747: PUSH1 0x40
00000749: MLOAD
0000074a: PUSH32 0x05ab636500000000000000000000000000000000000000000000000000000000
0000076b: DUP2
0000076c: MSTORE
0000076d: PUSH1 0x04
0000076f: ADD
00000770: PUSH1 0x40
00000772: MLOAD
00000773: DUP1
00000774: SWAP2
00000775: SUB
00000776: SWAP1
00000777: REVERT
00000778: JUMPDEST
00000779: PUSH2 0x078c
0000077c: PUSH1 0x01
0000077e: PUSH1 0x01
00000780: PUSH1 0xa0
00000782: SHL
00000783: SUB
00000784: DUP6
00000785: AND
00000786: DUP7
00000787: DUP6
00000788: PUSH2 0x10cb
0000078b: JUMP
0000078c: JUMPDEST
0000078d: PUSH1 0x00
0000078f: PUSH2 0x0797
00000792: DUP5
00000793: PUSH2 0x0e47
00000796: JUMP
00000797: JUMPDEST
00000798: PUSH1 0x40
0000079a: DUP1
0000079b: MLOAD
0000079c: PUSH2 0x0100
0000079f: DUP2
000007a0: ADD
000007a1: DUP3
000007a2: MSTORE
000007a3: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000007b8: DUP2
000007b9: MSTORE
000007ba: PUSH20 0xf19308f923582a6f7c465e5ce7a9dc1bec6665b1
000007cf: PUSH1 0x20
000007d1: DUP3
000007d2: ADD
000007d3: MSTORE
000007d4: PUSH2 0x2710
000007d7: SWAP2
000007d8: DUP2
000007d9: ADD
000007da: SWAP2
000007db: SWAP1
000007dc: SWAP2
000007dd: MSTORE
000007de: ADDRESS
000007df: PUSH1 0x60
000007e1: DUP3
000007e2: ADD
000007e3: MSTORE
000007e4: SWAP1
000007e5: SWAP2
000007e6: POP
000007e7: PUSH1 0x00
000007e9: SWAP1
000007ea: PUSH1 0x80
000007ec: DUP2
000007ed: ADD
000007ee: PUSH2 0x07f8
000007f1: TIMESTAMP
000007f2: PUSH1 0x01
000007f4: PUSH2 0x24a2
000007f7: JUMP
000007f8: JUMPDEST
000007f9: DUP2
000007fa: MSTORE
000007fb: PUSH1 0x20
000007fd: DUP1
000007fe: DUP3
000007ff: ADD
00000800: DUP9
00000801: SWAP1
00000802: MSTORE
00000803: PUSH1 0x40
00000805: DUP1
00000806: DUP4
00000807: ADD
00000808: DUP7
00000809: SWAP1
0000080a: MSTORE
0000080b: PUSH1 0x00
0000080d: PUSH1 0x60
0000080f: SWAP4
00000810: DUP5
00000811: ADD
00000812: MSTORE
00000813: DUP1
00000814: MLOAD
00000815: PUSH32 0x414bf38900000000000000000000000000000000000000000000000000000000
00000836: DUP2
00000837: MSTORE
00000838: DUP5
00000839: MLOAD
0000083a: PUSH1 0x01
0000083c: PUSH1 0x01
0000083e: PUSH1 0xa0
00000840: SHL
00000841: SUB
00000842: SWAP1
00000843: DUP2
00000844: AND
00000845: PUSH1 0x04
00000847: DUP4
00000848: ADD
00000849: MSTORE
0000084a: SWAP3
0000084b: DUP6
0000084c: ADD
0000084d: MLOAD
0000084e: DUP4
0000084f: AND
00000850: PUSH1 0x24
00000852: DUP3
00000853: ADD
00000854: MSTORE
00000855: SWAP1
00000856: DUP5
00000857: ADD
00000858: MLOAD
00000859: PUSH3 0xffffff
0000085d: AND
0000085e: PUSH1 0x44
00000860: DUP3
00000861: ADD
00000862: MSTORE
00000863: SWAP2
00000864: DUP4
00000865: ADD
00000866: MLOAD
00000867: DUP2
00000868: AND
00000869: PUSH1 0x64
0000086b: DUP4
0000086c: ADD
0000086d: MSTORE
0000086e: PUSH1 0x80
00000870: DUP4
00000871: ADD
00000872: MLOAD
00000873: PUSH1 0x84
00000875: DUP4
00000876: ADD
00000877: MSTORE
00000878: PUSH1 0xa0
0000087a: DUP4
0000087b: ADD
0000087c: MLOAD
0000087d: PUSH1 0xa4
0000087f: DUP4
00000880: ADD
00000881: MSTORE
00000882: PUSH1 0xc0
00000884: DUP4
00000885: ADD
00000886: MLOAD
00000887: PUSH1 0xc4
00000889: DUP4
0000088a: ADD
0000088b: MSTORE
0000088c: PUSH1 0xe0
0000088e: DUP4
0000088f: ADD
00000890: MLOAD
00000891: DUP2
00000892: AND
00000893: PUSH1 0xe4
00000895: DUP4
00000896: ADD
00000897: MSTORE
00000898: SWAP2
00000899: SWAP3
0000089a: POP
0000089b: SWAP1
0000089c: DUP9
0000089d: AND
0000089e: SWAP1
0000089f: PUSH4 0x414bf389
000008a4: SWAP1
000008a5: PUSH2 0x0104
000008a8: ADD
000008a9: PUSH1 0x20
000008ab: PUSH1 0x40
000008ad: MLOAD
000008ae: DUP1
000008af: DUP4
000008b0: SUB
000008b1: DUP2
000008b2: PUSH1 0x00
000008b4: DUP8
000008b5: GAS
000008b6: CALL
000008b7: ISZERO
000008b8: DUP1
000008b9: ISZERO
000008ba: PUSH2 0x08c7
000008bd: JUMPI
000008be: RETURNDATASIZE
000008bf: PUSH1 0x00
000008c1: DUP1
000008c2: RETURNDATACOPY
000008c3: RETURNDATASIZE
000008c4: PUSH1 0x00
000008c6: REVERT
000008c7: JUMPDEST
000008c8: POP
000008c9: POP
000008ca: POP
000008cb: POP
000008cc: PUSH1 0x40
000008ce: MLOAD
000008cf: RETURNDATASIZE
000008d0: PUSH1 0x1f
000008d2: NOT
000008d3: PUSH1 0x1f
000008d5: DUP3
000008d6: ADD
000008d7: AND
000008d8: DUP3
000008d9: ADD
000008da: DUP1
000008db: PUSH1 0x40
000008dd: MSTORE
000008de: POP
000008df: DUP2
000008e0: ADD
000008e1: SWAP1
000008e2: PUSH2 0x08eb
000008e5: SWAP2
000008e6: SWAP1
000008e7: PUSH2 0x242f
000008ea: JUMP
000008eb: JUMPDEST
000008ec: SWAP9
000008ed: POP
000008ee: PUSH2 0x090c
000008f1: PUSH20 0xf19308f923582a6f7c465e5ce7a9dc1bec6665b1
00000906: DUP10
00000907: DUP12
00000908: PUSH2 0x1174
0000090b: JUMP
0000090c: JUMPDEST
0000090d: DUP8
0000090e: PUSH1 0x01
00000910: PUSH1 0x01
00000912: PUSH1 0xa0
00000914: SHL
00000915: SUB
00000916: AND
00000917: PUSH4 0x7196e841
0000091c: PUSH1 0x40
0000091e: MLOAD
0000091f: DUP2
00000920: PUSH4 0xffffffff
00000925: AND
00000926: PUSH1 0xe0
00000928: SHL
00000929: DUP2
0000092a: MSTORE
0000092b: PUSH1 0x04
0000092d: ADD
0000092e: PUSH1 0x00
00000930: PUSH1 0x40
00000932: MLOAD
00000933: DUP1
00000934: DUP4
00000935: SUB
00000936: DUP2
00000937: PUSH1 0x00
00000939: DUP8
0000093a: DUP1
0000093b: EXTCODESIZE
0000093c: ISZERO
0000093d: DUP1
0000093e: ISZERO
0000093f: PUSH2 0x0947
00000942: JUMPI
00000943: PUSH1 0x00
00000945: DUP1
00000946: REVERT
00000947: JUMPDEST
00000948: POP
00000949: GAS
0000094a: CALL
0000094b: ISZERO
0000094c: DUP1
0000094d: ISZERO
0000094e: PUSH2 0x095b
00000951: JUMPI
00000952: RETURNDATASIZE
00000953: PUSH1 0x00
00000955: DUP1
00000956: RETURNDATACOPY
00000957: RETURNDATASIZE
00000958: PUSH1 0x00
0000095a: REVERT
0000095b: JUMPDEST
0000095c: POP
0000095d: POP
0000095e: POP
0000095f: POP
00000960: DUP5
00000961: PUSH1 0x05
00000963: PUSH1 0x00
00000965: DUP3
00000966: DUP3
00000967: SLOAD
00000968: PUSH2 0x0971
0000096b: SWAP2
0000096c: SWAP1
0000096d: PUSH2 0x24a2
00000970: JUMP
00000971: JUMPDEST
00000972: SWAP3
00000973: POP
00000974: POP
00000975: DUP2
00000976: SWAP1
00000977: SSTORE
00000978: POP
00000979: DUP9
0000097a: PUSH1 0x06
0000097c: PUSH1 0x00
0000097e: DUP3
0000097f: DUP3
00000980: SLOAD
00000981: PUSH2 0x098a
00000984: SWAP2
00000985: SWAP1
00000986: PUSH2 0x24a2
00000989: JUMP
0000098a: JUMPDEST
0000098b: SWAP1
0000098c: SWAP2
0000098d: SSTORE
0000098e: POP
0000098f: PUSH2 0x099a
00000992: SWAP1
00000993: POP
00000994: CALLER
00000995: DUP5
00000996: PUSH2 0x11ed
00000999: JUMP
0000099a: JUMPDEST
0000099b: PUSH1 0x40
0000099d: MLOAD
0000099e: CALLER
0000099f: SWAP1
000009a0: DUP11
000009a1: SWAP1
000009a2: DUP8
000009a3: SWAP1
000009a4: PUSH32 0x2f93a68dc35b09b9752c6b31e27bb7a7bafc4c49611843b94b8189cb328399af
000009c5: SWAP1
000009c6: PUSH1 0x00
000009c8: SWAP1
000009c9: LOG4
000009ca: POP
000009cb: POP
000009cc: POP
000009cd: POP
000009ce: POP
000009cf: POP
000009d0: POP
000009d1: POP
000009d2: PUSH2 0x09db
000009d5: PUSH1 0x01
000009d7: PUSH1 0x02
000009d9: SSTORE
000009da: JUMP
000009db: JUMPDEST
000009dc: SWAP1
000009dd: JUMP
000009de: JUMPDEST
000009df: PUSH1 0x00
000009e1: DUP1
000009e2: PUSH2 0x0a33
000009e5: PUSH20 0x1f98431c8ad98523631ae4a59f267346ea31f984
000009fa: PUSH2 0x0a2e
000009fd: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000a12: PUSH20 0xf19308f923582a6f7c465e5ce7a9dc1bec6665b1
00000a27: PUSH2 0x2710
00000a2a: PUSH2 0x12b6
00000a2d: JUMP
00000a2e: JUMPDEST
00000a2f: PUSH2 0x132d
00000a32: JUMP
00000a33: JUMPDEST
00000a34: PUSH1 0x0a
00000a36: SLOAD
00000a37: SWAP1
00000a38: SWAP2
00000a39: POP
00000a3a: PUSH1 0x00
00000a3c: SWAP1
00000a3d: PUSH2 0x0a4d
00000a40: SWAP1
00000a41: PUSH4 0xffffffff
00000a46: AND
00000a47: PUSH1 0x3c
00000a49: PUSH2 0x24b5
00000a4c: JUMP
00000a4d: JUMPDEST
00000a4e: SWAP1
00000a4f: POP
00000a50: PUSH1 0x00
00000a52: PUSH2 0x0a5a
00000a55: DUP4
00000a56: PUSH2 0x145f
00000a59: JUMP
00000a5a: JUMPDEST
00000a5b: SWAP1
00000a5c: POP
00000a5d: DUP2
00000a5e: PUSH4 0xffffffff
00000a63: AND
00000a64: DUP2
00000a65: PUSH4 0xffffffff
00000a6a: AND
00000a6b: LT
00000a6c: ISZERO
00000a6d: PUSH2 0x0a74
00000a70: JUMPI
00000a71: DUP1
00000a72: SWAP2
00000a73: POP
00000a74: JUMPDEST
00000a75: PUSH1 0x00
00000a77: DUP3
00000a78: PUSH4 0xffffffff
00000a7d: AND
00000a7e: PUSH1 0x00
00000a80: SUB
00000a81: PUSH2 0x0afb
00000a84: JUMPI
00000a85: PUSH1 0x00
00000a87: DUP5
00000a88: SWAP1
00000a89: POP
00000a8a: DUP1
00000a8b: PUSH1 0x01
00000a8d: PUSH1 0x01
00000a8f: PUSH1 0xa0
00000a91: SHL
00000a92: SUB
00000a93: AND
00000a94: PUSH4 0x3850c7bd
00000a99: PUSH1 0x40
00000a9b: MLOAD
00000a9c: DUP2
00000a9d: PUSH4 0xffffffff
00000aa2: AND
00000aa3: PUSH1 0xe0
00000aa5: SHL
00000aa6: DUP2
00000aa7: MSTORE
00000aa8: PUSH1 0x04
00000aaa: ADD
00000aab: PUSH1 0xe0
00000aad: PUSH1 0x40
00000aaf: MLOAD
00000ab0: DUP1
00000ab1: DUP4
00000ab2: SUB
00000ab3: DUP2
00000ab4: DUP7
00000ab5: GAS
00000ab6: STATICCALL
00000ab7: ISZERO
00000ab8: DUP1
00000ab9: ISZERO
00000aba: PUSH2 0x0ac7
00000abd: JUMPI
00000abe: RETURNDATASIZE
00000abf: PUSH1 0x00
00000ac1: DUP1
00000ac2: RETURNDATACOPY
00000ac3: RETURNDATASIZE
00000ac4: PUSH1 0x00
00000ac6: REVERT
00000ac7: JUMPDEST
00000ac8: POP
00000ac9: POP
00000aca: POP
00000acb: POP
00000acc: PUSH1 0x40
00000ace: MLOAD
00000acf: RETURNDATASIZE
00000ad0: PUSH1 0x1f
00000ad2: NOT
00000ad3: PUSH1 0x1f
00000ad5: DUP3
00000ad6: ADD
00000ad7: AND
00000ad8: DUP3
00000ad9: ADD
00000ada: DUP1
00000adb: PUSH1 0x40
00000add: MSTORE
00000ade: POP
00000adf: DUP2
00000ae0: ADD
00000ae1: SWAP1
00000ae2: PUSH2 0x0aeb
00000ae5: SWAP2
00000ae6: SWAP1
00000ae7: PUSH2 0x2504
00000aea: JUMP
00000aeb: JUMPDEST
00000aec: POP
00000aed: SWAP5
00000aee: SWAP7
00000aef: POP
00000af0: PUSH2 0x0b17
00000af3: SWAP6
00000af4: POP
00000af5: POP
00000af6: POP
00000af7: POP
00000af8: POP
00000af9: POP
00000afa: JUMP
00000afb: JUMPDEST
00000afc: PUSH1 0x00
00000afe: PUSH2 0x0b07
00000b01: DUP6
00000b02: DUP6
00000b03: PUSH2 0x167e
00000b06: JUMP
00000b07: JUMPDEST
00000b08: POP
00000b09: SWAP1
00000b0a: POP
00000b0b: PUSH2 0x0b13
00000b0e: DUP2
00000b0f: PUSH2 0x1922
00000b12: JUMP
00000b13: JUMPDEST
00000b14: SWAP2
00000b15: POP
00000b16: POP
00000b17: JUMPDEST
00000b18: PUSH2 0x0b4b
00000b1b: DUP2
00000b1c: DUP8
00000b1d: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000b32: PUSH20 0xf19308f923582a6f7c465e5ce7a9dc1bec6665b1
00000b47: PUSH2 0x1db7
00000b4a: JUMP
00000b4b: JUMPDEST
00000b4c: SWAP7
00000b4d: SWAP6
00000b4e: POP
00000b4f: POP
00000b50: POP
00000b51: POP
00000b52: POP
00000b53: POP
00000b54: JUMP
00000b55: JUMPDEST
00000b56: PUSH1 0x40
00000b58: MLOAD
00000b59: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00000b7a: DUP2
00000b7b: MSTORE
00000b7c: ADDRESS
00000b7d: PUSH1 0x04
00000b7f: DUP3
00000b80: ADD
00000b81: MSTORE
00000b82: PUSH1 0x00
00000b84: SWAP1
00000b85: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000b9a: SWAP1
00000b9b: PUSH4 0x70a08231
00000ba0: SWAP1
00000ba1: PUSH1 0x24
00000ba3: ADD
00000ba4: PUSH1 0x20
00000ba6: PUSH1 0x40
00000ba8: MLOAD
00000ba9: DUP1
00000baa: DUP4
00000bab: SUB
00000bac: DUP2
00000bad: DUP7
00000bae: GAS
00000baf: STATICCALL
00000bb0: ISZERO
00000bb1: DUP1
00000bb2: ISZERO
00000bb3: PUSH2 0x0bc0
00000bb6: JUMPI
00000bb7: RETURNDATASIZE
00000bb8: PUSH1 0x00
00000bba: DUP1
00000bbb: RETURNDATACOPY
00000bbc: RETURNDATASIZE
00000bbd: PUSH1 0x00
00000bbf: REVERT
00000bc0: JUMPDEST
00000bc1: POP
00000bc2: POP
00000bc3: POP
00000bc4: POP
00000bc5: PUSH1 0x40
00000bc7: MLOAD
00000bc8: RETURNDATASIZE
00000bc9: PUSH1 0x1f
00000bcb: NOT
00000bcc: PUSH1 0x1f
00000bce: DUP3
00000bcf: ADD
00000bd0: AND
00000bd1: DUP3
00000bd2: ADD
00000bd3: DUP1
00000bd4: PUSH1 0x40
00000bd6: MSTORE
00000bd7: POP
00000bd8: DUP2
00000bd9: ADD
00000bda: SWAP1
00000bdb: PUSH2 0x0be4
00000bde: SWAP2
00000bdf: SWAP1
00000be0: PUSH2 0x242f
00000be3: JUMP
00000be4: JUMPDEST
00000be5: SWAP1
00000be6: POP
00000be7: SWAP1
00000be8: JUMP
00000be9: JUMPDEST
00000bea: PUSH2 0x0bf1
00000bed: PUSH2 0x1044
00000bf0: JUMP
00000bf1: JUMPDEST
00000bf2: PUSH1 0x01
00000bf4: PUSH1 0x01
00000bf6: PUSH1 0xa0
00000bf8: SHL
00000bf9: SUB
00000bfa: DUP2
00000bfb: AND
00000bfc: PUSH2 0x0c31
00000bff: JUMPI
00000c00: PUSH1 0x40
00000c02: MLOAD
00000c03: PUSH32 0x90a3742300000000000000000000000000000000000000000000000000000000
00000c24: DUP2
00000c25: MSTORE
00000c26: PUSH1 0x04
00000c28: ADD
00000c29: PUSH1 0x40
00000c2b: MLOAD
00000c2c: DUP1
00000c2d: SWAP2
00000c2e: SUB
00000c2f: SWAP1
00000c30: REVERT
00000c31: JUMPDEST
00000c32: PUSH1 0x03
00000c34: DUP1
00000c35: SLOAD
00000c36: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000c57: AND
00000c58: PUSH1 0x01
00000c5a: PUSH1 0x01
00000c5c: PUSH1 0xa0
00000c5e: SHL
00000c5f: SUB
00000c60: SWAP3
00000c61: SWAP1
00000c62: SWAP3
00000c63: AND
00000c64: SWAP2
00000c65: SWAP1
00000c66: SWAP2
00000c67: OR
00000c68: SWAP1
00000c69: SSTORE
00000c6a: JUMP
00000c6b: JUMPDEST
00000c6c: PUSH2 0x0c73
00000c6f: PUSH2 0x1044
00000c72: JUMP
00000c73: JUMPDEST
00000c74: PUSH2 0x0c7d
00000c77: PUSH1 0x00
00000c79: PUSH2 0x1ed5
00000c7c: JUMP
00000c7d: JUMPDEST
00000c7e: JUMP
00000c7f: JUMPDEST
00000c80: PUSH1 0x01
00000c82: SLOAD
00000c83: CALLER
00000c84: SWAP1
00000c85: PUSH1 0x01
00000c87: PUSH1 0x01
00000c89: PUSH1 0xa0
00000c8b: SHL
00000c8c: SUB
00000c8d: AND
00000c8e: DUP2
00000c8f: EQ
00000c90: PUSH2 0x0cd0
00000c93: JUMPI
00000c94: PUSH1 0x40
00000c96: MLOAD
00000c97: PUSH32 0x118cdaa700000000000000000000000000000000000000000000000000000000
00000cb8: DUP2
00000cb9: MSTORE
00000cba: PUSH1 0x01
00000cbc: PUSH1 0x01
00000cbe: PUSH1 0xa0
00000cc0: SHL
00000cc1: SUB
00000cc2: DUP3
00000cc3: AND
00000cc4: PUSH1 0x04
00000cc6: DUP3
00000cc7: ADD
00000cc8: MSTORE
00000cc9: PUSH1 0x24
00000ccb: ADD
00000ccc: PUSH2 0x027a
00000ccf: JUMP
00000cd0: JUMPDEST
00000cd1: PUSH2 0x0cd9
00000cd4: DUP2
00000cd5: PUSH2 0x1ed5
00000cd8: JUMP
00000cd9: JUMPDEST
00000cda: POP
00000cdb: JUMP
00000cdc: JUMPDEST
00000cdd: PUSH2 0x0ce4
00000ce0: PUSH2 0x1044
00000ce3: JUMP
00000ce4: JUMPDEST
00000ce5: PUSH1 0x05
00000ce7: DUP2
00000ce8: PUSH4 0xffffffff
00000ced: AND
00000cee: LT
00000cef: ISZERO
00000cf0: DUP1
00000cf1: ISZERO
00000cf2: PUSH2 0x0d02
00000cf5: JUMPI
00000cf6: POP
00000cf7: PUSH1 0x3c
00000cf9: DUP2
00000cfa: PUSH4 0xffffffff
00000cff: AND
00000d00: GT
00000d01: ISZERO
00000d02: JUMPDEST
00000d03: PUSH2 0x0d68
00000d06: JUMPI
00000d07: PUSH1 0x40
00000d09: MLOAD
00000d0a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000d2b: DUP2
00000d2c: MSTORE
00000d2d: PUSH1 0x20
00000d2f: PUSH1 0x04
00000d31: DUP3
00000d32: ADD
00000d33: MSTORE
00000d34: PUSH1 0x0a
00000d36: PUSH1 0x24
00000d38: DUP3
00000d39: ADD
00000d3a: MSTORE
00000d3b: PUSH32 0x356d2d3168206f6e6c7900000000000000000000000000000000000000000000
00000d5c: PUSH1 0x44
00000d5e: DUP3
00000d5f: ADD
00000d60: MSTORE
00000d61: PUSH1 0x64
00000d63: ADD
00000d64: PUSH2 0x027a
00000d67: JUMP
00000d68: JUMPDEST
00000d69: PUSH1 0x0a
00000d6b: DUP1
00000d6c: SLOAD
00000d6d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
00000d8e: AND
00000d8f: PUSH4 0xffffffff
00000d94: SWAP3
00000d95: SWAP1
00000d96: SWAP3
00000d97: AND
00000d98: SWAP2
00000d99: SWAP1
00000d9a: SWAP2
00000d9b: OR
00000d9c: SWAP1
00000d9d: SSTORE
00000d9e: JUMP
00000d9f: JUMPDEST
00000da0: PUSH1 0x07
00000da2: SLOAD
00000da3: PUSH1 0x40
00000da5: MLOAD
00000da6: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000
00000dc7: DUP2
00000dc8: MSTORE
00000dc9: ADDRESS
00000dca: PUSH1 0x04
00000dcc: DUP3
00000dcd: ADD
00000dce: MSTORE
00000dcf: PUSH1 0x00
00000dd1: SWAP2
00000dd2: SWAP1
00000dd3: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000de8: SWAP1
00000de9: DUP2
00000dea: SWAP1
00000deb: PUSH4 0x70a08231
00000df0: SWAP1
00000df1: PUSH1 0x24
00000df3: ADD
00000df4: PUSH1 0x20
00000df6: PUSH1 0x40
00000df8: MLOAD
00000df9: DUP1
00000dfa: DUP4
00000dfb: SUB
00000dfc: DUP2
00000dfd: DUP7
00000dfe: GAS
00000dff: STATICCALL
00000e00: ISZERO
00000e01: DUP1
00000e02: ISZERO
00000e03: PUSH2 0x0e10
00000e06: JUMPI
00000e07: RETURNDATASIZE
00000e08: PUSH1 0x00
00000e0a: DUP1
00000e0b: RETURNDATACOPY
00000e0c: RETURNDATASIZE
00000e0d: PUSH1 0x00
00000e0f: REVERT
00000e10: JUMPDEST
00000e11: POP
00000e12: POP
00000e13: POP
00000e14: POP
00000e15: PUSH1 0x40
00000e17: MLOAD
00000e18: RETURNDATASIZE
00000e19: PUSH1 0x1f
00000e1b: NOT
00000e1c: PUSH1 0x1f
00000e1e: DUP3
00000e1f: ADD
00000e20: AND
00000e21: DUP3
00000e22: ADD
00000e23: DUP1
00000e24: PUSH1 0x40
00000e26: MSTORE
00000e27: POP
00000e28: DUP2
00000e29: ADD
00000e2a: SWAP1
00000e2b: PUSH2 0x0e34
00000e2e: SWAP2
00000e2f: SWAP1
00000e30: PUSH2 0x242f
00000e33: JUMP
00000e34: JUMPDEST
00000e35: SWAP3
00000e36: POP
00000e37: DUP2
00000e38: DUP4
00000e39: GT
00000e3a: ISZERO
00000e3b: PUSH2 0x0e42
00000e3e: JUMPI
00000e3f: DUP2
00000e40: SWAP3
00000e41: POP
00000e42: JUMPDEST
00000e43: POP
00000e44: POP
00000e45: SWAP1
00000e46: JUMP
00000e47: JUMPDEST
00000e48: PUSH1 0x00
00000e4a: DUP1
00000e4b: PUSH2 0x0e53
00000e4e: DUP4
00000e4f: PUSH2 0x09de
00000e52: JUMP
00000e53: JUMPDEST
00000e54: SWAP1
00000e55: POP
00000e56: PUSH1 0x00
00000e58: PUSH1 0x64
00000e5a: PUSH1 0x04
00000e5c: SLOAD
00000e5d: PUSH1 0x64
00000e5f: PUSH2 0x0e68
00000e62: SWAP2
00000e63: SWAP1
00000e64: PUSH2 0x241c
00000e67: JUMP
00000e68: JUMPDEST
00000e69: PUSH2 0x0e72
00000e6c: SWAP1
00000e6d: DUP5
00000e6e: PUSH2 0x2448
00000e71: JUMP
00000e72: JUMPDEST
00000e73: PUSH2 0x0e7c
00000e76: SWAP2
00000e77: SWAP1
00000e78: PUSH2 0x248e
00000e7b: JUMP
00000e7c: JUMPDEST
00000e7d: SWAP5
00000e7e: SWAP4
00000e7f: POP
00000e80: POP
00000e81: POP
00000e82: POP
00000e83: JUMP
00000e84: JUMPDEST
00000e85: PUSH2 0x0e8c
00000e88: PUSH2 0x1044
00000e8b: JUMP
00000e8c: JUMPDEST
00000e8d: PUSH1 0x3c
00000e8f: DUP2
00000e90: LT
00000e91: ISZERO
00000e92: DUP1
00000e93: ISZERO
00000e94: PUSH2 0x0e9f
00000e97: JUMPI
00000e98: POP
00000e99: PUSH2 0xa8c0
00000e9c: DUP2
00000e9d: GT
00000e9e: ISZERO
00000e9f: JUMPDEST
00000ea0: PUSH2 0x0f05
00000ea3: JUMPI
00000ea4: PUSH1 0x40
00000ea6: MLOAD
00000ea7: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000ec8: DUP2
00000ec9: MSTORE
00000eca: PUSH1 0x20
00000ecc: PUSH1 0x04
00000ece: DUP3
00000ecf: ADD
00000ed0: MSTORE
00000ed1: PUSH1 0x0b
00000ed3: PUSH1 0x24
00000ed5: DUP3
00000ed6: ADD
00000ed7: MSTORE
00000ed8: PUSH32 0x316d2d313268206f6e6c79000000000000000000000000000000000000000000
00000ef9: PUSH1 0x44
00000efb: DUP3
00000efc: ADD
00000efd: MSTORE
00000efe: PUSH1 0x64
00000f00: ADD
00000f01: PUSH2 0x027a
00000f04: JUMP
00000f05: JUMPDEST
00000f06: PUSH1 0x09
00000f08: SSTORE
00000f09: JUMP
00000f0a: JUMPDEST
00000f0b: PUSH1 0x00
00000f0d: DUP1
00000f0e: PUSH2 0x0f15
00000f11: PUSH2 0x0d9f
00000f14: JUMP
00000f15: JUMPDEST
00000f16: SWAP1
00000f17: POP
00000f18: PUSH2 0x2710
00000f1b: PUSH2 0x0f26
00000f1e: PUSH2 0x012c
00000f21: DUP4
00000f22: PUSH2 0x2448
00000f25: JUMP
00000f26: JUMPDEST
00000f27: PUSH2 0x0f30
00000f2a: SWAP2
00000f2b: SWAP1
00000f2c: PUSH2 0x248e
00000f2f: JUMP
00000f30: JUMPDEST
00000f31: SWAP2
00000f32: POP
00000f33: POP
00000f34: SWAP1
00000f35: JUMP
00000f36: JUMPDEST
00000f37: PUSH2 0x0f3e
00000f3a: PUSH2 0x1044
00000f3d: JUMP
00000f3e: JUMPDEST
00000f3f: PUSH1 0x05
00000f41: DUP2
00000f42: LT
00000f43: ISZERO
00000f44: DUP1
00000f45: ISZERO
00000f46: PUSH2 0x0f50
00000f49: JUMPI
00000f4a: POP
00000f4b: PUSH1 0x0f
00000f4d: DUP2
00000f4e: GT
00000f4f: ISZERO
00000f50: JUMPDEST
00000f51: PUSH2 0x0fb6
00000f54: JUMPI
00000f55: PUSH1 0x40
00000f57: MLOAD
00000f58: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000f79: DUP2
00000f7a: MSTORE
00000f7b: PUSH1 0x20
00000f7d: PUSH1 0x04
00000f7f: DUP3
00000f80: ADD
00000f81: MSTORE
00000f82: PUSH1 0x0a
00000f84: PUSH1 0x24
00000f86: DUP3
00000f87: ADD
00000f88: MSTORE
00000f89: PUSH32 0x352d313525206f6e6c7900000000000000000000000000000000000000000000
00000faa: PUSH1 0x44
00000fac: DUP3
00000fad: ADD
00000fae: MSTORE
00000faf: PUSH1 0x64
00000fb1: ADD
00000fb2: PUSH2 0x027a
00000fb5: JUMP
00000fb6: JUMPDEST
00000fb7: PUSH1 0x04
00000fb9: SSTORE
00000fba: JUMP
00000fbb: JUMPDEST
00000fbc: PUSH2 0x0fc3
00000fbf: PUSH2 0x1044
00000fc2: JUMP
00000fc3: JUMPDEST
00000fc4: PUSH1 0x01
00000fc6: DUP1
00000fc7: SLOAD
00000fc8: PUSH1 0x01
00000fca: PUSH1 0x01
00000fcc: PUSH1 0xa0
00000fce: SHL
00000fcf: SUB
00000fd0: DUP4
00000fd1: AND
00000fd2: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000ff3: SWAP1
00000ff4: SWAP2
00000ff5: AND
00000ff6: DUP2
00000ff7: OR
00000ff8: SWAP1
00000ff9: SWAP2
00000ffa: SSTORE
00000ffb: PUSH2 0x100c
00000ffe: PUSH1 0x00
00001000: SLOAD
00001001: PUSH1 0x01
00001003: PUSH1 0x01
00001005: PUSH1 0xa0
00001007: SHL
00001008: SUB
00001009: AND
0000100a: SWAP1
0000100b: JUMP
0000100c: JUMPDEST
0000100d: PUSH1 0x01
0000100f: PUSH1 0x01
00001011: PUSH1 0xa0
00001013: SHL
00001014: SUB
00001015: AND
00001016: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
00001037: PUSH1 0x40
00001039: MLOAD
0000103a: PUSH1 0x40
0000103c: MLOAD
0000103d: DUP1
0000103e: SWAP2
0000103f: SUB
00001040: SWAP1
00001041: LOG3
00001042: POP
00001043: JUMP
00001044: JUMPDEST
00001045: PUSH1 0x00
00001047: SLOAD
00001048: PUSH1 0x01
0000104a: PUSH1 0x01
0000104c: PUSH1 0xa0
0000104e: SHL
0000104f: SUB
00001050: AND
00001051: CALLER
00001052: EQ
00001053: PUSH2 0x0c7d
00001056: JUMPI
00001057: PUSH1 0x40
00001059: MLOAD
0000105a: PUSH32 0x118cdaa700000000000000000000000000000000000000000000000000000000
0000107b: DUP2
0000107c: MSTORE
0000107d: CALLER
0000107e: PUSH1 0x04
00001080: DUP3
00001081: ADD
00001082: MSTORE
00001083: PUSH1 0x24
00001085: ADD
00001086: PUSH2 0x027a
00001089: JUMP
0000108a: JUMPDEST
0000108b: PUSH1 0x02
0000108d: DUP1
0000108e: SLOAD
0000108f: SUB
00001090: PUSH2 0x10c5
00001093: JUMPI
00001094: PUSH1 0x40
00001096: MLOAD
00001097: PUSH32 0x3ee5aeb500000000000000000000000000000000000000000000000000000000
000010b8: DUP2
000010b9: MSTORE
000010ba: PUSH1 0x04
000010bc: ADD
000010bd: PUSH1 0x40
000010bf: MLOAD
000010c0: DUP1
000010c1: SWAP2
000010c2: SUB
000010c3: SWAP1
000010c4: REVERT
000010c5: JUMPDEST
000010c6: PUSH1 0x02
000010c8: DUP1
000010c9: SSTORE
000010ca: JUMP
000010cb: JUMPDEST
000010cc: PUSH1 0x40
000010ce: MLOAD
000010cf: PUSH32 0xdd62ed3e00000000000000000000000000000000000000000000000000000000
000010f0: DUP2
000010f1: MSTORE
000010f2: ADDRESS
000010f3: PUSH1 0x04
000010f5: DUP3
000010f6: ADD
000010f7: MSTORE
000010f8: PUSH1 0x01
000010fa: PUSH1 0x01
000010fc: PUSH1 0xa0
000010fe: SHL
000010ff: SUB
00001100: DUP4
00001101: DUP2
00001102: AND
00001103: PUSH1 0x24
00001105: DUP4
00001106: ADD
00001107: MSTORE
00001108: PUSH1 0x00
0000110a: SWAP2
0000110b: SWAP1
0000110c: DUP6
0000110d: AND
0000110e: SWAP1
0000110f: PUSH4 0xdd62ed3e
00001114: SWAP1
00001115: PUSH1 0x44
00001117: ADD
00001118: PUSH1 0x20
0000111a: PUSH1 0x40
0000111c: MLOAD
0000111d: DUP1
0000111e: DUP4
0000111f: SUB
00001120: DUP2
00001121: DUP7
00001122: GAS
00001123: STATICCALL
00001124: ISZERO
00001125: DUP1
00001126: ISZERO
00001127: PUSH2 0x1134
0000112a: JUMPI
0000112b: RETURNDATASIZE
0000112c: PUSH1 0x00
0000112e: DUP1
0000112f: RETURNDATACOPY
00001130: RETURNDATASIZE
00001131: PUSH1 0x00
00001133: REVERT
00001134: JUMPDEST
00001135: POP
00001136: POP
00001137: POP
00001138: POP
00001139: PUSH1 0x40
0000113b: MLOAD
0000113c: RETURNDATASIZE
0000113d: PUSH1 0x1f
0000113f: NOT
00001140: PUSH1 0x1f
00001142: DUP3
00001143: ADD
00001144: AND
00001145: DUP3
00001146: ADD
00001147: DUP1
00001148: PUSH1 0x40
0000114a: MSTORE
0000114b: POP
0000114c: DUP2
0000114d: ADD
0000114e: SWAP1
0000114f: PUSH2 0x1158
00001152: SWAP2
00001153: SWAP1
00001154: PUSH2 0x242f
00001157: JUMP
00001158: JUMPDEST
00001159: SWAP1
0000115a: POP
0000115b: PUSH2 0x116e
0000115e: DUP5
0000115f: DUP5
00001160: PUSH2 0x1169
00001163: DUP6
00001164: DUP6
00001165: PUSH2 0x24a2
00001168: JUMP
00001169: JUMPDEST
0000116a: PUSH2 0x1f06
0000116d: JUMP
0000116e: JUMPDEST
0000116f: POP
00001170: POP
00001171: POP
00001172: POP
00001173: JUMP
00001174: JUMPDEST
00001175: PUSH1 0x40
00001177: MLOAD
00001178: PUSH1 0x01
0000117a: PUSH1 0x01
0000117c: PUSH1 0xa0
0000117e: SHL
0000117f: SUB
00001180: DUP4
00001181: DUP2
00001182: AND
00001183: PUSH1 0x24
00001185: DUP4
00001186: ADD
00001187: MSTORE
00001188: PUSH1 0x44
0000118a: DUP3
0000118b: ADD
0000118c: DUP4
0000118d: SWAP1
0000118e: MSTORE
0000118f: PUSH2 0x11e8
00001192: SWAP2
00001193: DUP6
00001194: SWAP2
00001195: DUP3
00001196: AND
00001197: SWAP1
00001198: PUSH4 0xa9059cbb
0000119d: SWAP1
0000119e: PUSH1 0x64
000011a0: ADD
000011a1: JUMPDEST
000011a2: PUSH1 0x40
000011a4: MLOAD
000011a5: PUSH1 0x20
000011a7: DUP2
000011a8: DUP4
000011a9: SUB
000011aa: SUB
000011ab: DUP2
000011ac: MSTORE
000011ad: SWAP1
000011ae: PUSH1 0x40
000011b0: MSTORE
000011b1: SWAP2
000011b2: POP
000011b3: PUSH1 0xe0
000011b5: SHL
000011b6: PUSH1 0x20
000011b8: DUP3
000011b9: ADD
000011ba: DUP1
000011bb: MLOAD
000011bc: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
000011d9: DUP4
000011da: DUP2
000011db: DUP4
000011dc: AND
000011dd: OR
000011de: DUP4
000011df: MSTORE
000011e0: POP
000011e1: POP
000011e2: POP
000011e3: POP
000011e4: PUSH2 0x1fc0
000011e7: JUMP
000011e8: JUMPDEST
000011e9: POP
000011ea: POP
000011eb: POP
000011ec: JUMP
000011ed: JUMPDEST
000011ee: DUP1
000011ef: SELFBALANCE
000011f0: LT
000011f1: ISZERO
000011f2: PUSH2 0x1229
000011f5: JUMPI
000011f6: PUSH1 0x40
000011f8: MLOAD
000011f9: PUSH32 0xcd78605900000000000000000000000000000000000000000000000000000000
0000121a: DUP2
0000121b: MSTORE
0000121c: ADDRESS
0000121d: PUSH1 0x04
0000121f: DUP3
00001220: ADD
00001221: MSTORE
00001222: PUSH1 0x24
00001224: ADD
00001225: PUSH2 0x027a
00001228: JUMP
00001229: JUMPDEST
0000122a: PUSH1 0x00
0000122c: DUP3
0000122d: PUSH1 0x01
0000122f: PUSH1 0x01
00001231: PUSH1 0xa0
00001233: SHL
00001234: SUB
00001235: AND
00001236: DUP3
00001237: PUSH1 0x40
00001239: MLOAD
0000123a: PUSH1 0x00
0000123c: PUSH1 0x40
0000123e: MLOAD
0000123f: DUP1
00001240: DUP4
00001241: SUB
00001242: DUP2
00001243: DUP6
00001244: DUP8
00001245: GAS
00001246: CALL
00001247: SWAP3
00001248: POP
00001249: POP
0000124a: POP
0000124b: RETURNDATASIZE
0000124c: DUP1
0000124d: PUSH1 0x00
0000124f: DUP2
00001250: EQ
00001251: PUSH2 0x1276
00001254: JUMPI
00001255: PUSH1 0x40
00001257: MLOAD
00001258: SWAP2
00001259: POP
0000125a: PUSH1 0x1f
0000125c: NOT
0000125d: PUSH1 0x3f
0000125f: RETURNDATASIZE
00001260: ADD
00001261: AND
00001262: DUP3
00001263: ADD
00001264: PUSH1 0x40
00001266: MSTORE
00001267: RETURNDATASIZE
00001268: DUP3
00001269: MSTORE
0000126a: RETURNDATASIZE
0000126b: PUSH1 0x00
0000126d: PUSH1 0x20
0000126f: DUP5
00001270: ADD
00001271: RETURNDATACOPY
00001272: PUSH2 0x127b
00001275: JUMP
00001276: JUMPDEST
00001277: PUSH1 0x60
00001279: SWAP2
0000127a: POP
0000127b: JUMPDEST
0000127c: POP
0000127d: POP
0000127e: SWAP1
0000127f: POP
00001280: DUP1
00001281: PUSH2 0x11e8
00001284: JUMPI
00001285: PUSH1 0x40
00001287: MLOAD
00001288: PUSH32 0x1425ea4200000000000000000000000000000000000000000000000000000000
000012a9: DUP2
000012aa: MSTORE
000012ab: PUSH1 0x04
000012ad: ADD
000012ae: PUSH1 0x40
000012b0: MLOAD
000012b1: DUP1
000012b2: SWAP2
000012b3: SUB
000012b4: SWAP1
000012b5: REVERT
000012b6: JUMPDEST
000012b7: PUSH1 0x40
000012b9: DUP1
000012ba: MLOAD
000012bb: PUSH1 0x60
000012bd: DUP2
000012be: ADD
000012bf: DUP3
000012c0: MSTORE
000012c1: PUSH1 0x00
000012c3: DUP1
000012c4: DUP3
000012c5: MSTORE
000012c6: PUSH1 0x20
000012c8: DUP3
000012c9: ADD
000012ca: DUP2
000012cb: SWAP1
000012cc: MSTORE
000012cd: SWAP2
000012ce: DUP2
000012cf: ADD
000012d0: SWAP2
000012d1: SWAP1
000012d2: SWAP2
000012d3: MSTORE
000012d4: DUP3
000012d5: PUSH1 0x01
000012d7: PUSH1 0x01
000012d9: PUSH1 0xa0
000012db: SHL
000012dc: SUB
000012dd: AND
000012de: DUP5
000012df: PUSH1 0x01
000012e1: PUSH1 0x01
000012e3: PUSH1 0xa0
000012e5: SHL
000012e6: SUB
000012e7: AND
000012e8: GT
000012e9: ISZERO
000012ea: PUSH2 0x12f1
000012ed: JUMPI
000012ee: SWAP2
000012ef: SWAP3
000012f0: SWAP2
000012f1: JUMPDEST
000012f2: PUSH1 0x40
000012f4: MLOAD
000012f5: DUP1
000012f6: PUSH1 0x60
000012f8: ADD
000012f9: PUSH1 0x40
000012fb: MSTORE
000012fc: DUP1
000012fd: DUP6
000012fe: PUSH1 0x01
00001300: PUSH1 0x01
00001302: PUSH1 0xa0
00001304: SHL
00001305: SUB
00001306: AND
00001307: DUP2
00001308: MSTORE
00001309: PUSH1 0x20
0000130b: ADD
0000130c: DUP5
0000130d: PUSH1 0x01
0000130f: PUSH1 0x01
00001311: PUSH1 0xa0
00001313: SHL
00001314: SUB
00001315: AND
00001316: DUP2
00001317: MSTORE
00001318: PUSH1 0x20
0000131a: ADD
0000131b: DUP4
0000131c: PUSH3 0xffffff
00001320: AND
00001321: DUP2
00001322: MSTORE
00001323: POP
00001324: SWAP1
00001325: POP
00001326: JUMPDEST
00001327: SWAP4
00001328: SWAP3
00001329: POP
0000132a: POP
0000132b: POP
0000132c: JUMP
0000132d: JUMPDEST
0000132e: PUSH1 0x00
00001330: DUP2
00001331: PUSH1 0x20
00001333: ADD
00001334: MLOAD
00001335: PUSH1 0x01
00001337: PUSH1 0x01
00001339: PUSH1 0xa0
0000133b: SHL
0000133c: SUB
0000133d: AND
0000133e: DUP3
0000133f: PUSH1 0x00
00001341: ADD
00001342: MLOAD
00001343: PUSH1 0x01
00001345: PUSH1 0x01
00001347: PUSH1 0xa0
00001349: SHL
0000134a: SUB
0000134b: AND
0000134c: LT
0000134d: PUSH2 0x1355
00001350: JUMPI
00001351: PUSH1 0x00
00001353: DUP1
00001354: REVERT
00001355: JUMPDEST
00001356: DUP2
00001357: MLOAD
00001358: PUSH1 0x20
0000135a: DUP1
0000135b: DUP5
0000135c: ADD
0000135d: MLOAD
0000135e: PUSH1 0x40
00001360: DUP1
00001361: DUP7
00001362: ADD
00001363: MLOAD
00001364: DUP2
00001365: MLOAD
00001366: PUSH1 0x01
00001368: PUSH1 0x01
0000136a: PUSH1 0xa0
0000136c: SHL
0000136d: SUB
0000136e: SWAP6
0000136f: DUP7
00001370: AND
00001371: DUP2
00001372: DUP7
00001373: ADD
00001374: MSTORE
00001375: SWAP5
00001376: SWAP1
00001377: SWAP3
00001378: AND
00001379: DUP5
0000137a: DUP3
0000137b: ADD
0000137c: MSTORE
0000137d: PUSH3 0xffffff
00001381: SWAP1
00001382: SWAP2
00001383: AND
00001384: PUSH1 0x60
00001386: DUP1
00001387: DUP6
00001388: ADD
00001389: SWAP2
0000138a: SWAP1
0000138b: SWAP2
0000138c: MSTORE
0000138d: DUP2
0000138e: MLOAD
0000138f: DUP1
00001390: DUP6
00001391: SUB
00001392: DUP3
00001393: ADD
00001394: DUP2
00001395: MSTORE
00001396: PUSH1 0x80
00001398: DUP6
00001399: ADD
0000139a: SWAP1
0000139b: SWAP3
0000139c: MSTORE
0000139d: DUP2
0000139e: MLOAD
0000139f: SWAP2
000013a0: SWAP1
000013a1: SWAP3
000013a2: ADD
000013a3: KECCAK256
000013a4: PUSH32 0xff00000000000000000000000000000000000000000000000000000000000000
000013c5: PUSH1 0xa0
000013c7: DUP5
000013c8: ADD
000013c9: MSTORE
000013ca: SWAP1
000013cb: DUP6
000013cc: SWAP1
000013cd: SHL
000013ce: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000
000013ef: AND
000013f0: PUSH1 0xa1
000013f2: DUP4
000013f3: ADD
000013f4: MSTORE
000013f5: PUSH1 0xb5
000013f7: DUP3
000013f8: ADD
000013f9: MSTORE
000013fa: PUSH32 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54
0000141b: PUSH1 0xd5
0000141d: DUP3
0000141e: ADD
0000141f: MSTORE
00001420: PUSH1 0xf5
00001422: ADD
00001423: PUSH1 0x40
00001425: DUP1
00001426: MLOAD
00001427: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001448: DUP2
00001449: DUP5
0000144a: SUB
0000144b: ADD
0000144c: DUP2
0000144d: MSTORE
0000144e: SWAP2
0000144f: SWAP1
00001450: MSTORE
00001451: DUP1
00001452: MLOAD
00001453: PUSH1 0x20
00001455: SWAP1
00001456: SWAP2
00001457: ADD
00001458: KECCAK256
00001459: SWAP4
0000145a: SWAP3
0000145b: POP
0000145c: POP
0000145d: POP
0000145e: JUMP
0000145f: JUMPDEST
00001460: PUSH1 0x00
00001462: DUP1
00001463: PUSH1 0x00
00001465: DUP4
00001466: PUSH1 0x01
00001468: PUSH1 0x01
0000146a: PUSH1 0xa0
0000146c: SHL
0000146d: SUB
0000146e: AND
0000146f: PUSH4 0x3850c7bd
00001474: PUSH1 0x40
00001476: MLOAD
00001477: DUP2
00001478: PUSH4 0xffffffff
0000147d: AND
0000147e: PUSH1 0xe0
00001480: SHL
00001481: DUP2
00001482: MSTORE
00001483: PUSH1 0x04
00001485: ADD
00001486: PUSH1 0xe0
00001488: PUSH1 0x40
0000148a: MLOAD
0000148b: DUP1
0000148c: DUP4
0000148d: SUB
0000148e: DUP2
0000148f: DUP7
00001490: GAS
00001491: STATICCALL
00001492: ISZERO
00001493: DUP1
00001494: ISZERO
00001495: PUSH2 0x14a2
00001498: JUMPI
00001499: RETURNDATASIZE
0000149a: PUSH1 0x00
0000149c: DUP1
0000149d: RETURNDATACOPY
0000149e: RETURNDATASIZE
0000149f: PUSH1 0x00
000014a1: REVERT
000014a2: JUMPDEST
000014a3: POP
000014a4: POP
000014a5: POP
000014a6: POP
000014a7: PUSH1 0x40
000014a9: MLOAD
000014aa: RETURNDATASIZE
000014ab: PUSH1 0x1f
000014ad: NOT
000014ae: PUSH1 0x1f
000014b0: DUP3
000014b1: ADD
000014b2: AND
000014b3: DUP3
000014b4: ADD
000014b5: DUP1
000014b6: PUSH1 0x40
000014b8: MSTORE
000014b9: POP
000014ba: DUP2
000014bb: ADD
000014bc: SWAP1
000014bd: PUSH2 0x14c6
000014c0: SWAP2
000014c1: SWAP1
000014c2: PUSH2 0x2504
000014c5: JUMP
000014c6: JUMPDEST
000014c7: POP
000014c8: POP
000014c9: POP
000014ca: SWAP4
000014cb: POP
000014cc: SWAP4
000014cd: POP
000014ce: POP
000014cf: POP
000014d0: PUSH1 0x00
000014d2: DUP2
000014d3: PUSH2 0xffff
000014d6: AND
000014d7: GT
000014d8: PUSH2 0x153d
000014db: JUMPI
000014dc: PUSH1 0x40
000014de: MLOAD
000014df: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001500: DUP2
00001501: MSTORE
00001502: PUSH1 0x20
00001504: PUSH1 0x04
00001506: DUP3
00001507: ADD
00001508: MSTORE
00001509: PUSH1 0x02
0000150b: PUSH1 0x24
0000150d: DUP3
0000150e: ADD
0000150f: MSTORE
00001510: PUSH32 0x4e49000000000000000000000000000000000000000000000000000000000000
00001531: PUSH1 0x44
00001533: DUP3
00001534: ADD
00001535: MSTORE
00001536: PUSH1 0x64
00001538: ADD
00001539: PUSH2 0x027a
0000153c: JUMP
0000153d: JUMPDEST
0000153e: PUSH1 0x00
00001540: DUP1
00001541: PUSH1 0x01
00001543: PUSH1 0x01
00001545: PUSH1 0xa0
00001547: SHL
00001548: SUB
00001549: DUP7
0000154a: AND
0000154b: PUSH4 0x252c09d7
00001550: DUP5
00001551: PUSH2 0x155b
00001554: DUP8
00001555: PUSH1 0x01
00001557: PUSH2 0x259e
0000155a: JUMP
0000155b: JUMPDEST
0000155c: PUSH2 0x1565
0000155f: SWAP2
00001560: SWAP1
00001561: PUSH2 0x25c0
00001564: JUMP
00001565: JUMPDEST
00001566: PUSH1 0x40
00001568: MLOAD
00001569: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
0000158a: PUSH1 0xe0
0000158c: DUP5
0000158d: SWAP1
0000158e: SHL
0000158f: AND
00001590: DUP2
00001591: MSTORE
00001592: PUSH2 0xffff
00001595: SWAP1
00001596: SWAP2
00001597: AND
00001598: PUSH1 0x04
0000159a: DUP3
0000159b: ADD
0000159c: MSTORE
0000159d: PUSH1 0x24
0000159f: ADD
000015a0: PUSH1 0x80
000015a2: PUSH1 0x40
000015a4: MLOAD
000015a5: DUP1
000015a6: DUP4
000015a7: SUB
000015a8: DUP2
000015a9: DUP7
000015aa: GAS
000015ab: STATICCALL
000015ac: ISZERO
000015ad: DUP1
000015ae: ISZERO
000015af: PUSH2 0x15bc
000015b2: JUMPI
000015b3: RETURNDATASIZE
000015b4: PUSH1 0x00
000015b6: DUP1
000015b7: RETURNDATACOPY
000015b8: RETURNDATASIZE
000015b9: PUSH1 0x00
000015bb: REVERT
000015bc: JUMPDEST
000015bd: POP
000015be: POP
000015bf: POP
000015c0: POP
000015c1: PUSH1 0x40
000015c3: MLOAD
000015c4: RETURNDATASIZE
000015c5: PUSH1 0x1f
000015c7: NOT
000015c8: PUSH1 0x1f
000015ca: DUP3
000015cb: ADD
000015cc: AND
000015cd: DUP3
000015ce: ADD
000015cf: DUP1
000015d0: PUSH1 0x40
000015d2: MSTORE
000015d3: POP
000015d4: DUP2
000015d5: ADD
000015d6: SWAP1
000015d7: PUSH2 0x15e0
000015da: SWAP2
000015db: SWAP1
000015dc: PUSH2 0x25f3
000015df: JUMP
000015e0: JUMPDEST
000015e1: SWAP4
000015e2: POP
000015e3: POP
000015e4: POP
000015e5: SWAP2
000015e6: POP
000015e7: DUP1
000015e8: PUSH2 0x1674
000015eb: JUMPI
000015ec: PUSH1 0x40
000015ee: MLOAD
000015ef: PUSH32 0x252c09d700000000000000000000000000000000000000000000000000000000
00001610: DUP2
00001611: MSTORE
00001612: PUSH1 0x00
00001614: PUSH1 0x04
00001616: DUP3
00001617: ADD
00001618: MSTORE
00001619: PUSH1 0x01
0000161b: PUSH1 0x01
0000161d: PUSH1 0xa0
0000161f: SHL
00001620: SUB
00001621: DUP8
00001622: AND
00001623: SWAP1
00001624: PUSH4 0x252c09d7
00001629: SWAP1
0000162a: PUSH1 0x24
0000162c: ADD
0000162d: PUSH1 0x80
0000162f: PUSH1 0x40
00001631: MLOAD
00001632: DUP1
00001633: DUP4
00001634: SUB
00001635: DUP2
00001636: DUP7
00001637: GAS
00001638: STATICCALL
00001639: ISZERO
0000163a: DUP1
0000163b: ISZERO
0000163c: PUSH2 0x1649
0000163f: JUMPI
00001640: RETURNDATASIZE
00001641: PUSH1 0x00
00001643: DUP1
00001644: RETURNDATACOPY
00001645: RETURNDATASIZE
00001646: PUSH1 0x00
00001648: REVERT
00001649: JUMPDEST
0000164a: POP
0000164b: POP
0000164c: POP
0000164d: POP
0000164e: PUSH1 0x40
00001650: MLOAD
00001651: RETURNDATASIZE
00001652: PUSH1 0x1f
00001654: NOT
00001655: PUSH1 0x1f
00001657: DUP3
00001658: ADD
00001659: AND
0000165a: DUP3
0000165b: ADD
0000165c: DUP1
0000165d: PUSH1 0x40
0000165f: MSTORE
00001660: POP
00001661: DUP2
00001662: ADD
00001663: SWAP1
00001664: PUSH2 0x166d
00001667: SWAP2
00001668: SWAP1
00001669: PUSH2 0x25f3
0000166c: JUMP
0000166d: JUMPDEST
0000166e: POP
0000166f: SWAP2
00001670: SWAP4
00001671: POP
00001672: POP
00001673: POP
00001674: JUMPDEST
00001675: PUSH2 0x0b4b
00001678: DUP3
00001679: TIMESTAMP
0000167a: PUSH2 0x264b
0000167d: JUMP
0000167e: JUMPDEST
0000167f: PUSH1 0x00
00001681: DUP1
00001682: DUP3
00001683: PUSH4 0xffffffff
00001688: AND
00001689: PUSH1 0x00
0000168b: SUB
0000168c: PUSH2 0x16f1
0000168f: JUMPI
00001690: PUSH1 0x40
00001692: MLOAD
00001693: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000016b4: DUP2
000016b5: MSTORE
000016b6: PUSH1 0x20
000016b8: PUSH1 0x04
000016ba: DUP3
000016bb: ADD
000016bc: MSTORE
000016bd: PUSH1 0x02
000016bf: PUSH1 0x24
000016c1: DUP3
000016c2: ADD
000016c3: MSTORE
000016c4: PUSH32 0x4250000000000000000000000000000000000000000000000000000000000000
000016e5: PUSH1 0x44
000016e7: DUP3
000016e8: ADD
000016e9: MSTORE
000016ea: PUSH1 0x64
000016ec: ADD
000016ed: PUSH2 0x027a
000016f0: JUMP
000016f1: JUMPDEST
000016f2: PUSH1 0x40
000016f4: DUP1
000016f5: MLOAD
000016f6: PUSH1 0x02
000016f8: DUP1
000016f9: DUP3
000016fa: MSTORE
000016fb: PUSH1 0x60
000016fd: DUP3
000016fe: ADD
000016ff: DUP4
00001700: MSTORE
00001701: PUSH1 0x00
00001703: SWAP3
00001704: PUSH1 0x20
00001706: DUP4
00001707: ADD
00001708: SWAP1
00001709: DUP1
0000170a: CALLDATASIZE
0000170b: DUP4
0000170c: CALLDATACOPY
0000170d: ADD
0000170e: SWAP1
0000170f: POP
00001710: POP
00001711: SWAP1
00001712: POP
00001713: DUP4
00001714: DUP2
00001715: PUSH1 0x00
00001717: DUP2
00001718: MLOAD
00001719: DUP2
0000171a: LT
0000171b: PUSH2 0x1726
0000171e: JUMPI
0000171f: PUSH2 0x1726
00001722: PUSH2 0x2697
00001725: JUMP
00001726: JUMPDEST
00001727: PUSH1 0x20
00001729: MUL
0000172a: PUSH1 0x20
0000172c: ADD
0000172d: ADD
0000172e: SWAP1
0000172f: PUSH4 0xffffffff
00001734: AND
00001735: SWAP1
00001736: DUP2
00001737: PUSH4 0xffffffff
0000173c: AND
0000173d: DUP2
0000173e: MSTORE
0000173f: POP
00001740: POP
00001741: PUSH1 0x00
00001743: DUP2
00001744: PUSH1 0x01
00001746: DUP2
00001747: MLOAD
00001748: DUP2
00001749: LT
0000174a: PUSH2 0x1755
0000174d: JUMPI
0000174e: PUSH2 0x1755
00001751: PUSH2 0x2697
00001754: JUMP
00001755: JUMPDEST
00001756: PUSH1 0x20
00001758: MUL
00001759: PUSH1 0x20
0000175b: ADD
0000175c: ADD
0000175d: SWAP1
0000175e: PUSH4 0xffffffff
00001763: AND
00001764: SWAP1
00001765: DUP2
00001766: PUSH4 0xffffffff
0000176b: AND
0000176c: DUP2
0000176d: MSTORE
0000176e: POP
0000176f: POP
00001770: PUSH1 0x00
00001772: DUP1
00001773: DUP7
00001774: PUSH1 0x01
00001776: PUSH1 0x01
00001778: PUSH1 0xa0
0000177a: SHL
0000177b: SUB
0000177c: AND
0000177d: PUSH4 0x883bdbfd
00001782: DUP5
00001783: PUSH1 0x40
00001785: MLOAD
00001786: DUP3
00001787: PUSH4 0xffffffff
0000178c: AND
0000178d: PUSH1 0xe0
0000178f: SHL
00001790: DUP2
00001791: MSTORE
00001792: PUSH1 0x04
00001794: ADD
00001795: PUSH2 0x179e
00001798: SWAP2
00001799: SWAP1
0000179a: PUSH2 0x26c6
0000179d: JUMP
0000179e: JUMPDEST
0000179f: PUSH1 0x00
000017a1: PUSH1 0x40
000017a3: MLOAD
000017a4: DUP1
000017a5: DUP4
000017a6: SUB
000017a7: DUP2
000017a8: DUP7
000017a9: GAS
000017aa: STATICCALL
000017ab: ISZERO
000017ac: DUP1
000017ad: ISZERO
000017ae: PUSH2 0x17bb
000017b1: JUMPI
000017b2: RETURNDATASIZE
000017b3: PUSH1 0x00
000017b5: DUP1
000017b6: RETURNDATACOPY
000017b7: RETURNDATASIZE
000017b8: PUSH1 0x00
000017ba: REVERT
000017bb: JUMPDEST
000017bc: POP
000017bd: POP
000017be: POP
000017bf: POP
000017c0: PUSH1 0x40
000017c2: MLOAD
000017c3: RETURNDATASIZE
000017c4: PUSH1 0x00
000017c6: DUP3
000017c7: RETURNDATACOPY
000017c8: PUSH1 0x1f
000017ca: RETURNDATASIZE
000017cb: SWAP1
000017cc: DUP2
000017cd: ADD
000017ce: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000017ef: AND
000017f0: DUP3
000017f1: ADD
000017f2: PUSH1 0x40
000017f4: MSTORE
000017f5: PUSH2 0x1801
000017f8: SWAP2
000017f9: SWAP1
000017fa: DUP2
000017fb: ADD
000017fc: SWAP1
000017fd: PUSH2 0x27f7
00001800: JUMP
00001801: JUMPDEST
00001802: SWAP2
00001803: POP
00001804: SWAP2
00001805: POP
00001806: PUSH1 0x00
00001808: DUP3
00001809: PUSH1 0x00
0000180b: DUP2
0000180c: MLOAD
0000180d: DUP2
0000180e: LT
0000180f: PUSH2 0x181a
00001812: JUMPI
00001813: PUSH2 0x181a
00001816: PUSH2 0x2697
00001819: JUMP
0000181a: JUMPDEST
0000181b: PUSH1 0x20
0000181d: MUL
0000181e: PUSH1 0x20
00001820: ADD
00001821: ADD
00001822: MLOAD
00001823: DUP4
00001824: PUSH1 0x01
00001826: DUP2
00001827: MLOAD
00001828: DUP2
00001829: LT
0000182a: PUSH2 0x1835
0000182d: JUMPI
0000182e: PUSH2 0x1835
00001831: PUSH2 0x2697
00001834: JUMP
00001835: JUMPDEST
00001836: PUSH1 0x20
00001838: MUL
00001839: PUSH1 0x20
0000183b: ADD
0000183c: ADD
0000183d: MLOAD
0000183e: PUSH2 0x1847
00001841: SWAP2
00001842: SWAP1
00001843: PUSH2 0x28ba
00001846: JUMP
00001847: JUMPDEST
00001848: SWAP1
00001849: POP
0000184a: PUSH1 0x00
0000184c: DUP3
0000184d: PUSH1 0x00
0000184f: DUP2
00001850: MLOAD
00001851: DUP2
00001852: LT
00001853: PUSH2 0x185e
00001856: JUMPI
00001857: PUSH2 0x185e
0000185a: PUSH2 0x2697
0000185d: JUMP
0000185e: JUMPDEST
0000185f: PUSH1 0x20
00001861: MUL
00001862: PUSH1 0x20
00001864: ADD
00001865: ADD
00001866: MLOAD
00001867: DUP4
00001868: PUSH1 0x01
0000186a: DUP2
0000186b: MLOAD
0000186c: DUP2
0000186d: LT
0000186e: PUSH2 0x1879
00001871: JUMPI
00001872: PUSH2 0x1879
00001875: PUSH2 0x2697
00001878: JUMP
00001879: JUMPDEST
0000187a: PUSH1 0x20
0000187c: MUL
0000187d: PUSH1 0x20
0000187f: ADD
00001880: ADD
00001881: MLOAD
00001882: PUSH2 0x188b
00001885: SWAP2
00001886: SWAP1
00001887: PUSH2 0x28ff
0000188a: JUMP
0000188b: JUMPDEST
0000188c: SWAP1
0000188d: POP
0000188e: PUSH4 0xffffffff
00001893: DUP9
00001894: AND
00001895: PUSH2 0x189e
00001898: DUP2
00001899: DUP5
0000189a: PUSH2 0x291f
0000189d: JUMP
0000189e: JUMPDEST
0000189f: SWAP8
000018a0: POP
000018a1: PUSH1 0x00
000018a3: DUP4
000018a4: PUSH1 0x06
000018a6: SIGNEXTEND
000018a7: SLT
000018a8: DUP1
000018a9: ISZERO
000018aa: PUSH2 0x18be
000018ad: JUMPI
000018ae: POP
000018af: PUSH2 0x18b8
000018b2: DUP2
000018b3: DUP5
000018b4: PUSH2 0x2993
000018b7: JUMP
000018b8: JUMPDEST
000018b9: PUSH1 0x06
000018bb: SIGNEXTEND
000018bc: ISZERO
000018bd: ISZERO
000018be: JUMPDEST
000018bf: ISZERO
000018c0: PUSH2 0x18d1
000018c3: JUMPI
000018c4: DUP8
000018c5: PUSH2 0x18cd
000018c8: DUP2
000018c9: PUSH2 0x29b5
000018cc: JUMP
000018cd: JUMPDEST
000018ce: SWAP9
000018cf: POP
000018d0: POP
000018d1: JUMPDEST
000018d2: PUSH4 0xffffffff
000018d7: DUP10
000018d8: AND
000018d9: PUSH24 0xffffffffffffffffffffffffffffffffffffffff00000000
000018f2: PUSH1 0x20
000018f4: DUP5
000018f5: SWAP1
000018f6: SHL
000018f7: AND
000018f8: PUSH2 0x1908
000018fb: PUSH1 0x01
000018fd: PUSH1 0x01
000018ff: PUSH1 0xa0
00001901: SHL
00001902: SUB
00001903: DUP4
00001904: PUSH2 0x2a12
00001907: JUMP
00001908: JUMPDEST
00001909: PUSH2 0x1912
0000190c: SWAP2
0000190d: SWAP1
0000190e: PUSH2 0x2a55
00001911: JUMP
00001912: JUMPDEST
00001913: SWAP8
00001914: POP
00001915: POP
00001916: POP
00001917: POP
00001918: POP
00001919: POP
0000191a: POP
0000191b: POP
0000191c: SWAP3
0000191d: POP
0000191e: SWAP3
0000191f: SWAP1
00001920: POP
00001921: JUMP
00001922: JUMPDEST
00001923: PUSH1 0x00
00001925: DUP1
00001926: PUSH1 0x00
00001928: DUP4
00001929: PUSH1 0x02
0000192b: SIGNEXTEND
0000192c: SLT
0000192d: PUSH2 0x1939
00001930: JUMPI
00001931: DUP3
00001932: PUSH1 0x02
00001934: SIGNEXTEND
00001935: PUSH2 0x1946
00001938: JUMP
00001939: JUMPDEST
0000193a: DUP3
0000193b: PUSH1 0x02
0000193d: SIGNEXTEND
0000193e: PUSH2 0x1946
00001941: SWAP1
00001942: PUSH2 0x2a8c
00001945: JUMP
00001946: JUMPDEST
00001947: SWAP1
00001948: POP
00001949: PUSH2 0x1971
0000194c: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618
0000196d: PUSH2 0x2ac4
00001970: JUMP
00001971: JUMPDEST
00001972: PUSH1 0x02
00001974: SIGNEXTEND
00001975: DUP2
00001976: GT
00001977: ISZERO
00001978: PUSH2 0x19dd
0000197b: JUMPI
0000197c: PUSH1 0x40
0000197e: MLOAD
0000197f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000019a0: DUP2
000019a1: MSTORE
000019a2: PUSH1 0x20
000019a4: PUSH1 0x04
000019a6: DUP3
000019a7: ADD
000019a8: MSTORE
000019a9: PUSH1 0x01
000019ab: PUSH1 0x24
000019ad: DUP3
000019ae: ADD
000019af: MSTORE
000019b0: PUSH32 0x5400000000000000000000000000000000000000000000000000000000000000
000019d1: PUSH1 0x44
000019d3: DUP3
000019d4: ADD
000019d5: MSTORE
000019d6: PUSH1 0x64
000019d8: ADD
000019d9: PUSH2 0x027a
000019dc: JUMP
000019dd: JUMPDEST
000019de: PUSH1 0x00
000019e0: DUP2
000019e1: PUSH1 0x01
000019e3: AND
000019e4: PUSH1 0x00
000019e6: SUB
000019e7: PUSH2 0x1a01
000019ea: JUMPI
000019eb: PUSH17 0x0100000000000000000000000000000000
000019fd: PUSH2 0x1a13
00001a00: JUMP
00001a01: JUMPDEST
00001a02: PUSH16 0xfffcb933bd6fad37aa2d162d1a594001
00001a13: JUMPDEST
00001a14: PUSH17 0xffffffffffffffffffffffffffffffffff
00001a26: AND
00001a27: SWAP1
00001a28: POP
00001a29: PUSH1 0x02
00001a2b: DUP3
00001a2c: AND
00001a2d: ISZERO
00001a2e: PUSH2 0x1a52
00001a31: JUMPI
00001a32: PUSH1 0x80
00001a34: PUSH2 0x1a4d
00001a37: DUP3
00001a38: PUSH16 0xfff97272373d413259a46990580e213a
00001a49: PUSH2 0x2448
00001a4c: JUMP
00001a4d: JUMPDEST
00001a4e: SWAP1
00001a4f: SHR
00001a50: SWAP1
00001a51: POP
00001a52: JUMPDEST
00001a53: PUSH1 0x04
00001a55: DUP3
00001a56: AND
00001a57: ISZERO
00001a58: PUSH2 0x1a7c
00001a5b: JUMPI
00001a5c: PUSH1 0x80
00001a5e: PUSH2 0x1a77
00001a61: DUP3
00001a62: PUSH16 0xfff2e50f5f656932ef12357cf3c7fdcc
00001a73: PUSH2 0x2448
00001a76: JUMP
00001a77: JUMPDEST
00001a78: SWAP1
00001a79: SHR
00001a7a: SWAP1
00001a7b: POP
00001a7c: JUMPDEST
00001a7d: PUSH1 0x08
00001a7f: DUP3
00001a80: AND
00001a81: ISZERO
00001a82: PUSH2 0x1aa6
00001a85: JUMPI
00001a86: PUSH1 0x80
00001a88: PUSH2 0x1aa1
00001a8b: DUP3
00001a8c: PUSH16 0xffe5caca7e10e4e61c3624eaa0941cd0
00001a9d: PUSH2 0x2448
00001aa0: JUMP
00001aa1: JUMPDEST
00001aa2: SWAP1
00001aa3: SHR
00001aa4: SWAP1
00001aa5: POP
00001aa6: JUMPDEST
00001aa7: PUSH1 0x10
00001aa9: DUP3
00001aaa: AND
00001aab: ISZERO
00001aac: PUSH2 0x1ad0
00001aaf: JUMPI
00001ab0: PUSH1 0x80
00001ab2: PUSH2 0x1acb
00001ab5: DUP3
00001ab6: PUSH16 0xffcb9843d60f6159c9db58835c926644
00001ac7: PUSH2 0x2448
00001aca: JUMP
00001acb: JUMPDEST
00001acc: SWAP1
00001acd: SHR
00001ace: SWAP1
00001acf: POP
00001ad0: JUMPDEST
00001ad1: PUSH1 0x20
00001ad3: DUP3
00001ad4: AND
00001ad5: ISZERO
00001ad6: PUSH2 0x1afa
00001ad9: JUMPI
00001ada: PUSH1 0x80
00001adc: PUSH2 0x1af5
00001adf: DUP3
00001ae0: PUSH16 0xff973b41fa98c081472e6896dfb254c0
00001af1: PUSH2 0x2448
00001af4: JUMP
00001af5: JUMPDEST
00001af6: SWAP1
00001af7: SHR
00001af8: SWAP1
00001af9: POP
00001afa: JUMPDEST
00001afb: PUSH1 0x40
00001afd: DUP3
00001afe: AND
00001aff: ISZERO
00001b00: PUSH2 0x1b24
00001b03: JUMPI
00001b04: PUSH1 0x80
00001b06: PUSH2 0x1b1f
00001b09: DUP3
00001b0a: PUSH16 0xff2ea16466c96a3843ec78b326b52861
00001b1b: PUSH2 0x2448
00001b1e: JUMP
00001b1f: JUMPDEST
00001b20: SWAP1
00001b21: SHR
00001b22: SWAP1
00001b23: POP
00001b24: JUMPDEST
00001b25: PUSH1 0x80
00001b27: DUP3
00001b28: AND
00001b29: ISZERO
00001b2a: PUSH2 0x1b4e
00001b2d: JUMPI
00001b2e: PUSH1 0x80
00001b30: PUSH2 0x1b49
00001b33: DUP3
00001b34: PUSH16 0xfe5dee046a99a2a811c461f1969c3053
00001b45: PUSH2 0x2448
00001b48: JUMP
00001b49: JUMPDEST
00001b4a: SWAP1
00001b4b: SHR
00001b4c: SWAP1
00001b4d: POP
00001b4e: JUMPDEST
00001b4f: PUSH2 0x0100
00001b52: DUP3
00001b53: AND
00001b54: ISZERO
00001b55: PUSH2 0x1b79
00001b58: JUMPI
00001b59: PUSH1 0x80
00001b5b: PUSH2 0x1b74
00001b5e: DUP3
00001b5f: PUSH16 0xfcbe86c7900a88aedcffc83b479aa3a4
00001b70: PUSH2 0x2448
00001b73: JUMP
00001b74: JUMPDEST
00001b75: SWAP1
00001b76: SHR
00001b77: SWAP1
00001b78: POP
00001b79: JUMPDEST
00001b7a: PUSH2 0x0200
00001b7d: DUP3
00001b7e: AND
00001b7f: ISZERO
00001b80: PUSH2 0x1ba4
00001b83: JUMPI
00001b84: PUSH1 0x80
00001b86: PUSH2 0x1b9f
00001b89: DUP3
00001b8a: PUSH16 0xf987a7253ac413176f2b074cf7815e54
00001b9b: PUSH2 0x2448
00001b9e: JUMP
00001b9f: JUMPDEST
00001ba0: SWAP1
00001ba1: SHR
00001ba2: SWAP1
00001ba3: POP
00001ba4: JUMPDEST
00001ba5: PUSH2 0x0400
00001ba8: DUP3
00001ba9: AND
00001baa: ISZERO
00001bab: PUSH2 0x1bcf
00001bae: JUMPI
00001baf: PUSH1 0x80
00001bb1: PUSH2 0x1bca
00001bb4: DUP3
00001bb5: PUSH16 0xf3392b0822b70005940c7a398e4b70f3
00001bc6: PUSH2 0x2448
00001bc9: JUMP
00001bca: JUMPDEST
00001bcb: SWAP1
00001bcc: SHR
00001bcd: SWAP1
00001bce: POP
00001bcf: JUMPDEST
00001bd0: PUSH2 0x0800
00001bd3: DUP3
00001bd4: AND
00001bd5: ISZERO
00001bd6: PUSH2 0x1bfa
00001bd9: JUMPI
00001bda: PUSH1 0x80
00001bdc: PUSH2 0x1bf5
00001bdf: DUP3
00001be0: PUSH16 0xe7159475a2c29b7443b29c7fa6e889d9
00001bf1: PUSH2 0x2448
00001bf4: JUMP
00001bf5: JUMPDEST
00001bf6: SWAP1
00001bf7: SHR
00001bf8: SWAP1
00001bf9: POP
00001bfa: JUMPDEST
00001bfb: PUSH2 0x1000
00001bfe: DUP3
00001bff: AND
00001c00: ISZERO
00001c01: PUSH2 0x1c25
00001c04: JUMPI
00001c05: PUSH1 0x80
00001c07: PUSH2 0x1c20
00001c0a: DUP3
00001c0b: PUSH16 0xd097f3bdfd2022b8845ad8f792aa5825
00001c1c: PUSH2 0x2448
00001c1f: JUMP
00001c20: JUMPDEST
00001c21: SWAP1
00001c22: SHR
00001c23: SWAP1
00001c24: POP
00001c25: JUMPDEST
00001c26: PUSH2 0x2000
00001c29: DUP3
00001c2a: AND
00001c2b: ISZERO
00001c2c: PUSH2 0x1c50
00001c2f: JUMPI
00001c30: PUSH1 0x80
00001c32: PUSH2 0x1c4b
00001c35: DUP3
00001c36: PUSH16 0xa9f746462d870fdf8a65dc1f90e061e5
00001c47: PUSH2 0x2448
00001c4a: JUMP
00001c4b: JUMPDEST
00001c4c: SWAP1
00001c4d: SHR
00001c4e: SWAP1
00001c4f: POP
00001c50: JUMPDEST
00001c51: PUSH2 0x4000
00001c54: DUP3
00001c55: AND
00001c56: ISZERO
00001c57: PUSH2 0x1c7b
00001c5a: JUMPI
00001c5b: PUSH1 0x80
00001c5d: PUSH2 0x1c76
00001c60: DUP3
00001c61: PUSH16 0x70d869a156d2a1b890bb3df62baf32f7
00001c72: PUSH2 0x2448
00001c75: JUMP
00001c76: JUMPDEST
00001c77: SWAP1
00001c78: SHR
00001c79: SWAP1
00001c7a: POP
00001c7b: JUMPDEST
00001c7c: PUSH2 0x8000
00001c7f: DUP3
00001c80: AND
00001c81: ISZERO
00001c82: PUSH2 0x1ca6
00001c85: JUMPI
00001c86: PUSH1 0x80
00001c88: PUSH2 0x1ca1
00001c8b: DUP3
00001c8c: PUSH16 0x31be135f97d08fd981231505542fcfa6
00001c9d: PUSH2 0x2448
00001ca0: JUMP
00001ca1: JUMPDEST
00001ca2: SWAP1
00001ca3: SHR
00001ca4: SWAP1
00001ca5: POP
00001ca6: JUMPDEST
00001ca7: PUSH3 0x010000
00001cab: DUP3
00001cac: AND
00001cad: ISZERO
00001cae: PUSH2 0x1cd2
00001cb1: JUMPI
00001cb2: PUSH1 0x80
00001cb4: PUSH2 0x1ccd
00001cb7: DUP3
00001cb8: PUSH16 0x09aa508b5b7a84e1c677de54f3e99bc9
00001cc9: PUSH2 0x2448
00001ccc: JUMP
00001ccd: JUMPDEST
00001cce: SWAP1
00001ccf: SHR
00001cd0: SWAP1
00001cd1: POP
00001cd2: JUMPDEST
00001cd3: PUSH3 0x020000
00001cd7: DUP3
00001cd8: AND
00001cd9: ISZERO
00001cda: PUSH2 0x1cfd
00001cdd: JUMPI
00001cde: PUSH1 0x80
00001ce0: PUSH2 0x1cf8
00001ce3: DUP3
00001ce4: PUSH15 0x5d6af8dedb81196699c329225ee604
00001cf4: PUSH2 0x2448
00001cf7: JUMP
00001cf8: JUMPDEST
00001cf9: SWAP1
00001cfa: SHR
00001cfb: SWAP1
00001cfc: POP
00001cfd: JUMPDEST
00001cfe: PUSH3 0x040000
00001d02: DUP3
00001d03: AND
00001d04: ISZERO
00001d05: PUSH2 0x1d27
00001d08: JUMPI
00001d09: PUSH1 0x80
00001d0b: PUSH2 0x1d22
00001d0e: DUP3
00001d0f: PUSH14 0x2216e584f5fa1ea926041bedfe98
00001d1e: PUSH2 0x2448
00001d21: JUMP
00001d22: JUMPDEST
00001d23: SWAP1
00001d24: SHR
00001d25: SWAP1
00001d26: POP
00001d27: JUMPDEST
00001d28: PUSH3 0x080000
00001d2c: DUP3
00001d2d: AND
00001d2e: ISZERO
00001d2f: PUSH2 0x1d4f
00001d32: JUMPI
00001d33: PUSH1 0x80
00001d35: PUSH2 0x1d4a
00001d38: DUP3
00001d39: PUSH12 0x048a170391f7dc42444e8fa2
00001d46: PUSH2 0x2448
00001d49: JUMP
00001d4a: JUMPDEST
00001d4b: SWAP1
00001d4c: SHR
00001d4d: SWAP1
00001d4e: POP
00001d4f: JUMPDEST
00001d50: PUSH1 0x00
00001d52: DUP5
00001d53: PUSH1 0x02
00001d55: SIGNEXTEND
00001d56: SGT
00001d57: ISZERO
00001d58: PUSH2 0x1d88
00001d5b: JUMPI
00001d5c: PUSH2 0x1d85
00001d5f: DUP2
00001d60: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001d81: PUSH2 0x248e
00001d84: JUMP
00001d85: JUMPDEST
00001d86: SWAP1
00001d87: POP
00001d88: JUMPDEST
00001d89: PUSH2 0x1d97
00001d8c: PUSH5 0x0100000000
00001d92: DUP3
00001d93: PUSH2 0x2b02
00001d96: JUMP
00001d97: JUMPDEST
00001d98: ISZERO
00001d99: PUSH2 0x1da3
00001d9c: JUMPI
00001d9d: PUSH1 0x01
00001d9f: PUSH2 0x1da6
00001da2: JUMP
00001da3: JUMPDEST
00001da4: PUSH1 0x00
00001da6: JUMPDEST
00001da7: PUSH2 0x0e7c
00001daa: SWAP1
00001dab: PUSH1 0xff
00001dad: AND
00001dae: PUSH1 0x20
00001db0: DUP4
00001db1: SWAP1
00001db2: SHR
00001db3: PUSH2 0x24a2
00001db6: JUMP
00001db7: JUMPDEST
00001db8: PUSH1 0x00
00001dba: PUSH16 0xffffffffffffffffffffffffffffffff
00001dcb: PUSH1 0x01
00001dcd: PUSH1 0x01
00001dcf: PUSH1 0xa0
00001dd1: SHL
00001dd2: SUB
00001dd3: DUP7
00001dd4: AND
00001dd5: GT
00001dd6: PUSH2 0x1e5e
00001dd9: JUMPI
00001dda: PUSH1 0x00
00001ddc: PUSH2 0x1dee
00001ddf: PUSH1 0x01
00001de1: PUSH1 0x01
00001de3: PUSH1 0xa0
00001de5: SHL
00001de6: SUB
00001de7: DUP8
00001de8: AND
00001de9: DUP1
00001dea: PUSH2 0x2448
00001ded: JUMP
00001dee: JUMPDEST
00001def: SWAP1
00001df0: POP
00001df1: DUP3
00001df2: PUSH1 0x01
00001df4: PUSH1 0x01
00001df6: PUSH1 0xa0
00001df8: SHL
00001df9: SUB
00001dfa: AND
00001dfb: DUP5
00001dfc: PUSH1 0x01
00001dfe: PUSH1 0x01
00001e00: PUSH1 0xa0
00001e02: SHL
00001e03: SUB
00001e04: AND
00001e05: LT
00001e06: PUSH2 0x1e32
00001e09: JUMPI
00001e0a: PUSH2 0x1e2d
00001e0d: PUSH25 0x01000000000000000000000000000000000000000000000000
00001e27: DUP7
00001e28: DUP4
00001e29: PUSH2 0x203c
00001e2c: JUMP
00001e2d: JUMPDEST
00001e2e: PUSH2 0x1e56
00001e31: JUMP
00001e32: JUMPDEST
00001e33: PUSH2 0x1e56
00001e36: DUP2
00001e37: DUP7
00001e38: PUSH25 0x01000000000000000000000000000000000000000000000000
00001e52: PUSH2 0x203c
00001e55: JUMP
00001e56: JUMPDEST
00001e57: SWAP2
00001e58: POP
00001e59: POP
00001e5a: PUSH2 0x0e7c
00001e5d: JUMP
00001e5e: JUMPDEST
00001e5f: PUSH1 0x00
00001e61: PUSH2 0x1e7d
00001e64: PUSH1 0x01
00001e66: PUSH1 0x01
00001e68: PUSH1 0xa0
00001e6a: SHL
00001e6b: SUB
00001e6c: DUP8
00001e6d: AND
00001e6e: DUP1
00001e6f: PUSH9 0x010000000000000000
00001e79: PUSH2 0x203c
00001e7c: JUMP
00001e7d: JUMPDEST
00001e7e: SWAP1
00001e7f: POP
00001e80: DUP3
00001e81: PUSH1 0x01
00001e83: PUSH1 0x01
00001e85: PUSH1 0xa0
00001e87: SHL
00001e88: SUB
00001e89: AND
00001e8a: DUP5
00001e8b: PUSH1 0x01
00001e8d: PUSH1 0x01
00001e8f: PUSH1 0xa0
00001e91: SHL
00001e92: SUB
00001e93: AND
00001e94: LT
00001e95: PUSH2 0x1eb9
00001e98: JUMPI
00001e99: PUSH2 0x1eb4
00001e9c: PUSH17 0x0100000000000000000000000000000000
00001eae: DUP7
00001eaf: DUP4
00001eb0: PUSH2 0x203c
00001eb3: JUMP
00001eb4: JUMPDEST
00001eb5: PUSH2 0x0b4b
00001eb8: JUMP
00001eb9: JUMPDEST
00001eba: PUSH2 0x0b4b
00001ebd: DUP2
00001ebe: DUP7
00001ebf: PUSH17 0x0100000000000000000000000000000000
00001ed1: PUSH2 0x203c
00001ed4: JUMP
00001ed5: JUMPDEST
00001ed6: PUSH1 0x01
00001ed8: DUP1
00001ed9: SLOAD
00001eda: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00001efb: AND
00001efc: SWAP1
00001efd: SSTORE
00001efe: PUSH2 0x0cd9
00001f01: DUP2
00001f02: PUSH2 0x2137
00001f05: JUMP
00001f06: JUMPDEST
00001f07: PUSH1 0x40
00001f09: DUP1
00001f0a: MLOAD
00001f0b: PUSH1 0x01
00001f0d: PUSH1 0x01
00001f0f: PUSH1 0xa0
00001f11: SHL
00001f12: SUB
00001f13: DUP5
00001f14: AND
00001f15: PUSH1 0x24
00001f17: DUP3
00001f18: ADD
00001f19: MSTORE
00001f1a: PUSH1 0x44
00001f1c: DUP1
00001f1d: DUP3
00001f1e: ADD
00001f1f: DUP5
00001f20: SWAP1
00001f21: MSTORE
00001f22: DUP3
00001f23: MLOAD
00001f24: DUP1
00001f25: DUP4
00001f26: SUB
00001f27: SWAP1
00001f28: SWAP2
00001f29: ADD
00001f2a: DUP2
00001f2b: MSTORE
00001f2c: PUSH1 0x64
00001f2e: SWAP1
00001f2f: SWAP2
00001f30: ADD
00001f31: SWAP1
00001f32: SWAP2
00001f33: MSTORE
00001f34: PUSH1 0x20
00001f36: DUP2
00001f37: ADD
00001f38: DUP1
00001f39: MLOAD
00001f3a: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001f57: AND
00001f58: PUSH32 0x095ea7b300000000000000000000000000000000000000000000000000000000
00001f79: OR
00001f7a: SWAP1
00001f7b: MSTORE
00001f7c: PUSH2 0x1f85
00001f7f: DUP5
00001f80: DUP3
00001f81: PUSH2 0x219f
00001f84: JUMP
00001f85: JUMPDEST
00001f86: PUSH2 0x116e
00001f89: JUMPI
00001f8a: PUSH1 0x40
00001f8c: MLOAD
00001f8d: PUSH1 0x01
00001f8f: PUSH1 0x01
00001f91: PUSH1 0xa0
00001f93: SHL
00001f94: SUB
00001f95: DUP5
00001f96: DUP2
00001f97: AND
00001f98: PUSH1 0x24
00001f9a: DUP4
00001f9b: ADD
00001f9c: MSTORE
00001f9d: PUSH1 0x00
00001f9f: PUSH1 0x44
00001fa1: DUP4
00001fa2: ADD
00001fa3: MSTORE
00001fa4: PUSH2 0x1fba
00001fa7: SWAP2
00001fa8: DUP7
00001fa9: SWAP2
00001faa: DUP3
00001fab: AND
00001fac: SWAP1
00001fad: PUSH4 0x095ea7b3
00001fb2: SWAP1
00001fb3: PUSH1 0x64
00001fb5: ADD
00001fb6: PUSH2 0x11a1
00001fb9: JUMP
00001fba: JUMPDEST
00001fbb: PUSH2 0x116e
00001fbe: DUP5
00001fbf: DUP3
00001fc0: JUMPDEST
00001fc1: PUSH1 0x00
00001fc3: PUSH2 0x1fd5
00001fc6: PUSH1 0x01
00001fc8: PUSH1 0x01
00001fca: PUSH1 0xa0
00001fcc: SHL
00001fcd: SUB
00001fce: DUP5
00001fcf: AND
00001fd0: DUP4
00001fd1: PUSH2 0x2249
00001fd4: JUMP
00001fd5: JUMPDEST
00001fd6: SWAP1
00001fd7: POP
00001fd8: DUP1
00001fd9: MLOAD
00001fda: PUSH1 0x00
00001fdc: EQ
00001fdd: ISZERO
00001fde: DUP1
00001fdf: ISZERO
00001fe0: PUSH2 0x1ffa
00001fe3: JUMPI
00001fe4: POP
00001fe5: DUP1
00001fe6: DUP1
00001fe7: PUSH1 0x20
00001fe9: ADD
00001fea: SWAP1
00001feb: MLOAD
00001fec: DUP2
00001fed: ADD
00001fee: SWAP1
00001fef: PUSH2 0x1ff8
00001ff2: SWAP2
00001ff3: SWAP1
00001ff4: PUSH2 0x2b16
00001ff7: JUMP
00001ff8: JUMPDEST
00001ff9: ISZERO
00001ffa: JUMPDEST
00001ffb: ISZERO
00001ffc: PUSH2 0x11e8
00001fff: JUMPI
00002000: PUSH1 0x40
00002002: MLOAD
00002003: PUSH32 0x5274afe700000000000000000000000000000000000000000000000000000000
00002024: DUP2
00002025: MSTORE
00002026: PUSH1 0x01
00002028: PUSH1 0x01
0000202a: PUSH1 0xa0
0000202c: SHL
0000202d: SUB
0000202e: DUP5
0000202f: AND
00002030: PUSH1 0x04
00002032: DUP3
00002033: ADD
00002034: MSTORE
00002035: PUSH1 0x24
00002037: ADD
00002038: PUSH2 0x027a
0000203b: JUMP
0000203c: JUMPDEST
0000203d: PUSH1 0x00
0000203f: DUP4
00002040: DUP4
00002041: MUL
00002042: DUP2
00002043: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002064: DUP6
00002065: DUP8
00002066: MULMOD
00002067: DUP3
00002068: DUP2
00002069: LT
0000206a: DUP4
0000206b: DUP3
0000206c: SUB
0000206d: SUB
0000206e: SWAP2
0000206f: POP
00002070: POP
00002071: DUP1
00002072: PUSH1 0x00
00002074: SUB
00002075: PUSH2 0x2091
00002078: JUMPI
00002079: DUP4
0000207a: DUP3
0000207b: DUP2
0000207c: PUSH2 0x2087
0000207f: JUMPI
00002080: PUSH2 0x2087
00002083: PUSH2 0x245f
00002086: JUMP
00002087: JUMPDEST
00002088: DIV
00002089: SWAP3
0000208a: POP
0000208b: POP
0000208c: POP
0000208d: PUSH2 0x1326
00002090: JUMP
00002091: JUMPDEST
00002092: DUP1
00002093: DUP5
00002094: GT
00002095: PUSH2 0x20ca
00002098: JUMPI
00002099: PUSH1 0x40
0000209b: MLOAD
0000209c: PUSH32 0x227bc15300000000000000000000000000000000000000000000000000000000
000020bd: DUP2
000020be: MSTORE
000020bf: PUSH1 0x04
000020c1: ADD
000020c2: PUSH1 0x40
000020c4: MLOAD
000020c5: DUP1
000020c6: SWAP2
000020c7: SUB
000020c8: SWAP1
000020c9: REVERT
000020ca: JUMPDEST
000020cb: PUSH1 0x00
000020cd: DUP5
000020ce: DUP7
000020cf: DUP9
000020d0: MULMOD
000020d1: PUSH1 0x00
000020d3: DUP7
000020d4: DUP2
000020d5: SUB
000020d6: DUP8
000020d7: AND
000020d8: SWAP7
000020d9: DUP8
000020da: SWAP1
000020db: DIV
000020dc: SWAP7
000020dd: PUSH1 0x02
000020df: PUSH1 0x03
000020e1: DUP10
000020e2: MUL
000020e3: DUP2
000020e4: XOR
000020e5: DUP1
000020e6: DUP11
000020e7: MUL
000020e8: DUP3
000020e9: SUB
000020ea: MUL
000020eb: DUP1
000020ec: DUP11
000020ed: MUL
000020ee: DUP3
000020ef: SUB
000020f0: MUL
000020f1: DUP1
000020f2: DUP11
000020f3: MUL
000020f4: DUP3
000020f5: SUB
000020f6: MUL
000020f7: DUP1
000020f8: DUP11
000020f9: MUL
000020fa: DUP3
000020fb: SUB
000020fc: MUL
000020fd: DUP1
000020fe: DUP11
000020ff: MUL
00002100: DUP3
00002101: SUB
00002102: MUL
00002103: DUP1
00002104: DUP11
00002105: MUL
00002106: SWAP1
00002107: SWAP2
00002108: SUB
00002109: MUL
0000210a: SWAP2
0000210b: DUP2
0000210c: SWAP1
0000210d: SUB
0000210e: DUP2
0000210f: SWAP1
00002110: DIV
00002111: PUSH1 0x01
00002113: ADD
00002114: DUP7
00002115: DUP5
00002116: GT
00002117: SWAP1
00002118: SWAP6
00002119: SUB
0000211a: SWAP5
0000211b: SWAP1
0000211c: SWAP5
0000211d: MUL
0000211e: SWAP2
0000211f: SWAP1
00002120: SWAP5
00002121: SUB
00002122: SWAP3
00002123: SWAP1
00002124: SWAP3
00002125: DIV
00002126: SWAP2
00002127: SWAP1
00002128: SWAP2
00002129: OR
0000212a: SWAP2
0000212b: SWAP1
0000212c: SWAP2
0000212d: MUL
0000212e: SWAP2
0000212f: POP
00002130: POP
00002131: SWAP4
00002132: SWAP3
00002133: POP
00002134: POP
00002135: POP
00002136: JUMP
00002137: JUMPDEST
00002138: PUSH1 0x00
0000213a: DUP1
0000213b: SLOAD
0000213c: PUSH1 0x01
0000213e: PUSH1 0x01
00002140: PUSH1 0xa0
00002142: SHL
00002143: SUB
00002144: DUP4
00002145: DUP2
00002146: AND
00002147: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00002168: DUP4
00002169: AND
0000216a: DUP2
0000216b: OR
0000216c: DUP5
0000216d: SSTORE
0000216e: PUSH1 0x40
00002170: MLOAD
00002171: SWAP2
00002172: SWAP1
00002173: SWAP3
00002174: AND
00002175: SWAP3
00002176: DUP4
00002177: SWAP2
00002178: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00002199: SWAP2
0000219a: SWAP1
0000219b: LOG3
0000219c: POP
0000219d: POP
0000219e: JUMP
0000219f: JUMPDEST
000021a0: PUSH1 0x00
000021a2: DUP1
000021a3: PUSH1 0x00
000021a5: DUP5
000021a6: PUSH1 0x01
000021a8: PUSH1 0x01
000021aa: PUSH1 0xa0
000021ac: SHL
000021ad: SUB
000021ae: AND
000021af: DUP5
000021b0: PUSH1 0x40
000021b2: MLOAD
000021b3: PUSH2 0x21bc
000021b6: SWAP2
000021b7: SWAP1
000021b8: PUSH2 0x2b31
000021bb: JUMP
000021bc: JUMPDEST
000021bd: PUSH1 0x00
000021bf: PUSH1 0x40
000021c1: MLOAD
000021c2: DUP1
000021c3: DUP4
000021c4: SUB
000021c5: DUP2
000021c6: PUSH1 0x00
000021c8: DUP7
000021c9: GAS
000021ca: CALL
000021cb: SWAP2
000021cc: POP
000021cd: POP
000021ce: RETURNDATASIZE
000021cf: DUP1
000021d0: PUSH1 0x00
000021d2: DUP2
000021d3: EQ
000021d4: PUSH2 0x21f9
000021d7: JUMPI
000021d8: PUSH1 0x40
000021da: MLOAD
000021db: SWAP2
000021dc: POP
000021dd: PUSH1 0x1f
000021df: NOT
000021e0: PUSH1 0x3f
000021e2: RETURNDATASIZE
000021e3: ADD
000021e4: AND
000021e5: DUP3
000021e6: ADD
000021e7: PUSH1 0x40
000021e9: MSTORE
000021ea: RETURNDATASIZE
000021eb: DUP3
000021ec: MSTORE
000021ed: RETURNDATASIZE
000021ee: PUSH1 0x00
000021f0: PUSH1 0x20
000021f2: DUP5
000021f3: ADD
000021f4: RETURNDATACOPY
000021f5: PUSH2 0x21fe
000021f8: JUMP
000021f9: JUMPDEST
000021fa: PUSH1 0x60
000021fc: SWAP2
000021fd: POP
000021fe: JUMPDEST
000021ff: POP
00002200: SWAP2
00002201: POP
00002202: SWAP2
00002203: POP
00002204: DUP2
00002205: DUP1
00002206: ISZERO
00002207: PUSH2 0x2228
0000220a: JUMPI
0000220b: POP
0000220c: DUP1
0000220d: MLOAD
0000220e: ISZERO
0000220f: DUP1
00002210: PUSH2 0x2228
00002213: JUMPI
00002214: POP
00002215: DUP1
00002216: DUP1
00002217: PUSH1 0x20
00002219: ADD
0000221a: SWAP1
0000221b: MLOAD
0000221c: DUP2
0000221d: ADD
0000221e: SWAP1
0000221f: PUSH2 0x2228
00002222: SWAP2
00002223: SWAP1
00002224: PUSH2 0x2b16
00002227: JUMP
00002228: JUMPDEST
00002229: DUP1
0000222a: ISZERO
0000222b: PUSH2 0x223e
0000222e: JUMPI
0000222f: POP
00002230: PUSH1 0x00
00002232: DUP6
00002233: PUSH1 0x01
00002235: PUSH1 0x01
00002237: PUSH1 0xa0
00002239: SHL
0000223a: SUB
0000223b: AND
0000223c: EXTCODESIZE
0000223d: GT
0000223e: JUMPDEST
0000223f: SWAP3
00002240: POP
00002241: POP
00002242: POP
00002243: JUMPDEST
00002244: SWAP3
00002245: SWAP2
00002246: POP
00002247: POP
00002248: JUMP
00002249: JUMPDEST
0000224a: PUSH1 0x60
0000224c: PUSH2 0x1326
0000224f: DUP4
00002250: DUP4
00002251: PUSH1 0x00
00002253: DUP5
00002254: PUSH1 0x00
00002256: DUP1
00002257: DUP6
00002258: PUSH1 0x01
0000225a: PUSH1 0x01
0000225c: PUSH1 0xa0
0000225e: SHL
0000225f: SUB
00002260: AND
00002261: DUP5
00002262: DUP7
00002263: PUSH1 0x40
00002265: MLOAD
00002266: PUSH2 0x226f
00002269: SWAP2
0000226a: SWAP1
0000226b: PUSH2 0x2b31
0000226e: JUMP
0000226f: JUMPDEST
00002270: PUSH1 0x00
00002272: PUSH1 0x40
00002274: MLOAD
00002275: DUP1
00002276: DUP4
00002277: SUB
00002278: DUP2
00002279: DUP6
0000227a: DUP8
0000227b: GAS
0000227c: CALL
0000227d: SWAP3
0000227e: POP
0000227f: POP
00002280: POP
00002281: RETURNDATASIZE
00002282: DUP1
00002283: PUSH1 0x00
00002285: DUP2
00002286: EQ
00002287: PUSH2 0x22ac
0000228a: JUMPI
0000228b: PUSH1 0x40
0000228d: MLOAD
0000228e: SWAP2
0000228f: POP
00002290: PUSH1 0x1f
00002292: NOT
00002293: PUSH1 0x3f
00002295: RETURNDATASIZE
00002296: ADD
00002297: AND
00002298: DUP3
00002299: ADD
0000229a: PUSH1 0x40
0000229c: MSTORE
0000229d: RETURNDATASIZE
0000229e: DUP3
0000229f: MSTORE
000022a0: RETURNDATASIZE
000022a1: PUSH1 0x00
000022a3: PUSH1 0x20
000022a5: DUP5
000022a6: ADD
000022a7: RETURNDATACOPY
000022a8: PUSH2 0x22b1
000022ab: JUMP
000022ac: JUMPDEST
000022ad: PUSH1 0x60
000022af: SWAP2
000022b0: POP
000022b1: JUMPDEST
000022b2: POP
000022b3: SWAP2
000022b4: POP
000022b5: SWAP2
000022b6: POP
000022b7: PUSH2 0x0b4b
000022ba: DUP7
000022bb: DUP4
000022bc: DUP4
000022bd: PUSH1 0x60
000022bf: DUP3
000022c0: PUSH2 0x22d1
000022c3: JUMPI
000022c4: PUSH2 0x22cc
000022c7: DUP3
000022c8: PUSH2 0x2331
000022cb: JUMP
000022cc: JUMPDEST
000022cd: PUSH2 0x1326
000022d0: JUMP
000022d1: JUMPDEST
000022d2: DUP2
000022d3: MLOAD
000022d4: ISZERO
000022d5: DUP1
000022d6: ISZERO
000022d7: PUSH2 0x22e8
000022da: JUMPI
000022db: POP
000022dc: PUSH1 0x01
000022de: PUSH1 0x01
000022e0: PUSH1 0xa0
000022e2: SHL
000022e3: SUB
000022e4: DUP5
000022e5: AND
000022e6: EXTCODESIZE
000022e7: ISZERO
000022e8: JUMPDEST
000022e9: ISZERO
000022ea: PUSH2 0x232a
000022ed: JUMPI
000022ee: PUSH1 0x40
000022f0: MLOAD
000022f1: PUSH32 0x9996b31500000000000000000000000000000000000000000000000000000000
00002312: DUP2
00002313: MSTORE
00002314: PUSH1 0x01
00002316: PUSH1 0x01
00002318: PUSH1 0xa0
0000231a: SHL
0000231b: SUB
0000231c: DUP6
0000231d: AND
0000231e: PUSH1 0x04
00002320: DUP3
00002321: ADD
00002322: MSTORE
00002323: PUSH1 0x24
00002325: ADD
00002326: PUSH2 0x027a
00002329: JUMP
0000232a: JUMPDEST
0000232b: POP
0000232c: DUP1
0000232d: PUSH2 0x1326
00002330: JUMP
00002331: JUMPDEST
00002332: DUP1
00002333: MLOAD
00002334: ISZERO
00002335: PUSH2 0x2341
00002338: JUMPI
00002339: DUP1
0000233a: MLOAD
0000233b: DUP1
0000233c: DUP3
0000233d: PUSH1 0x20
0000233f: ADD
00002340: REVERT
00002341: JUMPDEST
00002342: PUSH1 0x40
00002344: MLOAD
00002345: PUSH32 0x1425ea4200000000000000000000000000000000000000000000000000000000
00002366: DUP2
00002367: MSTORE
00002368: PUSH1 0x04
0000236a: ADD
0000236b: PUSH1 0x40
0000236d: MLOAD
0000236e: DUP1
0000236f: SWAP2
00002370: SUB
00002371: SWAP1
00002372: REVERT
00002373: JUMPDEST
00002374: PUSH1 0x00
00002376: PUSH1 0x20
00002378: DUP3
00002379: DUP5
0000237a: SUB
0000237b: SLT
0000237c: ISZERO
0000237d: PUSH2 0x2385
00002380: JUMPI
00002381: PUSH1 0x00
00002383: DUP1
00002384: REVERT
00002385: JUMPDEST
00002386: POP
00002387: CALLDATALOAD
00002388: SWAP2
00002389: SWAP1
0000238a: POP
0000238b: JUMP
0000238c: JUMPDEST
0000238d: PUSH1 0x01
0000238f: PUSH1 0x01
00002391: PUSH1 0xa0
00002393: SHL
00002394: SUB
00002395: DUP2
00002396: AND
00002397: DUP2
00002398: EQ
00002399: PUSH2 0x0cd9
0000239c: JUMPI
0000239d: PUSH1 0x00
0000239f: DUP1
000023a0: REVERT
000023a1: JUMPDEST
000023a2: PUSH1 0x00
000023a4: PUSH1 0x20
000023a6: DUP3
000023a7: DUP5
000023a8: SUB
000023a9: SLT
000023aa: ISZERO
000023ab: PUSH2 0x23b3
000023ae: JUMPI
000023af: PUSH1 0x00
000023b1: DUP1
000023b2: REVERT
000023b3: JUMPDEST
000023b4: DUP2
000023b5: CALLDATALOAD
000023b6: PUSH2 0x1326
000023b9: DUP2
000023ba: PUSH2 0x238c
000023bd: JUMP
000023be: JUMPDEST
000023bf: PUSH4 0xffffffff
000023c4: DUP2
000023c5: AND
000023c6: DUP2
000023c7: EQ
000023c8: PUSH2 0x0cd9
000023cb: JUMPI
000023cc: PUSH1 0x00
000023ce: DUP1
000023cf: REVERT
000023d0: JUMPDEST
000023d1: PUSH1 0x00
000023d3: PUSH1 0x20
000023d5: DUP3
000023d6: DUP5
000023d7: SUB
000023d8: SLT
000023d9: ISZERO
000023da: PUSH2 0x23e2
000023dd: JUMPI
000023de: PUSH1 0x00
000023e0: DUP1
000023e1: REVERT
000023e2: JUMPDEST
000023e3: DUP2
000023e4: CALLDATALOAD
000023e5: PUSH2 0x1326
000023e8: DUP2
000023e9: PUSH2 0x23be
000023ec: JUMP
000023ed: JUMPDEST
000023ee: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000240f: PUSH1 0x00
00002411: MSTORE
00002412: PUSH1 0x11
00002414: PUSH1 0x04
00002416: MSTORE
00002417: PUSH1 0x24
00002419: PUSH1 0x00
0000241b: REVERT
0000241c: JUMPDEST
0000241d: DUP2
0000241e: DUP2
0000241f: SUB
00002420: DUP2
00002421: DUP2
00002422: GT
00002423: ISZERO
00002424: PUSH2 0x2243
00002427: JUMPI
00002428: PUSH2 0x2243
0000242b: PUSH2 0x23ed
0000242e: JUMP
0000242f: JUMPDEST
00002430: PUSH1 0x00
00002432: PUSH1 0x20
00002434: DUP3
00002435: DUP5
00002436: SUB
00002437: SLT
00002438: ISZERO
00002439: PUSH2 0x2441
0000243c: JUMPI
0000243d: PUSH1 0x00
0000243f: DUP1
00002440: REVERT
00002441: JUMPDEST
00002442: POP
00002443: MLOAD
00002444: SWAP2
00002445: SWAP1
00002446: POP
00002447: JUMP
00002448: JUMPDEST
00002449: DUP1
0000244a: DUP3
0000244b: MUL
0000244c: DUP2
0000244d: ISZERO
0000244e: DUP3
0000244f: DUP3
00002450: DIV
00002451: DUP5
00002452: EQ
00002453: OR
00002454: PUSH2 0x2243
00002457: JUMPI
00002458: PUSH2 0x2243
0000245b: PUSH2 0x23ed
0000245e: JUMP
0000245f: JUMPDEST
00002460: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00002481: PUSH1 0x00
00002483: MSTORE
00002484: PUSH1 0x12
00002486: PUSH1 0x04
00002488: MSTORE
00002489: PUSH1 0x24
0000248b: PUSH1 0x00
0000248d: REVERT
0000248e: JUMPDEST
0000248f: PUSH1 0x00
00002491: DUP3
00002492: PUSH2 0x249d
00002495: JUMPI
00002496: PUSH2 0x249d
00002499: PUSH2 0x245f
0000249c: JUMP
0000249d: JUMPDEST
0000249e: POP
0000249f: DIV
000024a0: SWAP1
000024a1: JUMP
000024a2: JUMPDEST
000024a3: DUP1
000024a4: DUP3
000024a5: ADD
000024a6: DUP1
000024a7: DUP3
000024a8: GT
000024a9: ISZERO
000024aa: PUSH2 0x2243
000024ad: JUMPI
000024ae: PUSH2 0x2243
000024b1: PUSH2 0x23ed
000024b4: JUMP
000024b5: JUMPDEST
000024b6: PUSH4 0xffffffff
000024bb: DUP2
000024bc: DUP2
000024bd: AND
000024be: DUP4
000024bf: DUP3
000024c0: AND
000024c1: MUL
000024c2: DUP1
000024c3: DUP3
000024c4: AND
000024c5: SWAP2
000024c6: SWAP1
000024c7: DUP3
000024c8: DUP2
000024c9: EQ
000024ca: PUSH2 0x24d5
000024cd: JUMPI
000024ce: PUSH2 0x24d5
000024d1: PUSH2 0x23ed
000024d4: JUMP
000024d5: JUMPDEST
000024d6: POP
000024d7: POP
000024d8: SWAP3
000024d9: SWAP2
000024da: POP
000024db: POP
000024dc: JUMP
000024dd: JUMPDEST
000024de: DUP1
000024df: MLOAD
000024e0: PUSH2 0xffff
000024e3: DUP2
000024e4: AND
000024e5: DUP2
000024e6: EQ
000024e7: PUSH2 0x24ef
000024ea: JUMPI
000024eb: PUSH1 0x00
000024ed: DUP1
000024ee: REVERT
000024ef: JUMPDEST
000024f0: SWAP2
000024f1: SWAP1
000024f2: POP
000024f3: JUMP
000024f4: JUMPDEST
000024f5: DUP1
000024f6: MLOAD
000024f7: DUP1
000024f8: ISZERO
000024f9: ISZERO
000024fa: DUP2
000024fb: EQ
000024fc: PUSH2 0x24ef
000024ff: JUMPI
00002500: PUSH1 0x00
00002502: DUP1
00002503: REVERT
00002504: JUMPDEST
00002505: PUSH1 0x00
00002507: DUP1
00002508: PUSH1 0x00
0000250a: DUP1
0000250b: PUSH1 0x00
0000250d: DUP1
0000250e: PUSH1 0x00
00002510: PUSH1 0xe0
00002512: DUP9
00002513: DUP11
00002514: SUB
00002515: SLT
00002516: ISZERO
00002517: PUSH2 0x251f
0000251a: JUMPI
0000251b: PUSH1 0x00
0000251d: DUP1
0000251e: REVERT
0000251f: JUMPDEST
00002520: DUP8
00002521: MLOAD
00002522: PUSH2 0x252a
00002525: DUP2
00002526: PUSH2 0x238c
00002529: JUMP
0000252a: JUMPDEST
0000252b: DUP1
0000252c: SWAP8
0000252d: POP
0000252e: POP
0000252f: PUSH1 0x20
00002531: DUP9
00002532: ADD
00002533: MLOAD
00002534: DUP1
00002535: PUSH1 0x02
00002537: SIGNEXTEND
00002538: DUP2
00002539: EQ
0000253a: PUSH2 0x2542
0000253d: JUMPI
0000253e: PUSH1 0x00
00002540: DUP1
00002541: REVERT
00002542: JUMPDEST
00002543: SWAP6
00002544: POP
00002545: PUSH2 0x2550
00002548: PUSH1 0x40
0000254a: DUP10
0000254b: ADD
0000254c: PUSH2 0x24dd
0000254f: JUMP
00002550: JUMPDEST
00002551: SWAP5
00002552: POP
00002553: PUSH2 0x255e
00002556: PUSH1 0x60
00002558: DUP10
00002559: ADD
0000255a: PUSH2 0x24dd
0000255d: JUMP
0000255e: JUMPDEST
0000255f: SWAP4
00002560: POP
00002561: PUSH2 0x256c
00002564: PUSH1 0x80
00002566: DUP10
00002567: ADD
00002568: PUSH2 0x24dd
0000256b: JUMP
0000256c: JUMPDEST
0000256d: SWAP3
0000256e: POP
0000256f: PUSH1 0xa0
00002571: DUP9
00002572: ADD
00002573: MLOAD
00002574: PUSH1 0xff
00002576: DUP2
00002577: AND
00002578: DUP2
00002579: EQ
0000257a: PUSH2 0x2582
0000257d: JUMPI
0000257e: PUSH1 0x00
00002580: DUP1
00002581: REVERT
00002582: JUMPDEST
00002583: SWAP2
00002584: POP
00002585: PUSH2 0x2590
00002588: PUSH1 0xc0
0000258a: DUP10
0000258b: ADD
0000258c: PUSH2 0x24f4
0000258f: JUMP
00002590: JUMPDEST
00002591: SWAP1
00002592: POP
00002593: SWAP3
00002594: SWAP6
00002595: SWAP9
00002596: SWAP2
00002597: SWAP5
00002598: SWAP8
00002599: POP
0000259a: SWAP3
0000259b: SWAP6
0000259c: POP
0000259d: JUMP
0000259e: JUMPDEST
0000259f: PUSH2 0xffff
000025a2: DUP2
000025a3: DUP2
000025a4: AND
000025a5: DUP4
000025a6: DUP3
000025a7: AND
000025a8: ADD
000025a9: SWAP1
000025aa: DUP1
000025ab: DUP3
000025ac: GT
000025ad: ISZERO
000025ae: PUSH2 0x25b9
000025b1: JUMPI
000025b2: PUSH2 0x25b9
000025b5: PUSH2 0x23ed
000025b8: JUMP
000025b9: JUMPDEST
000025ba: POP
000025bb: SWAP3
000025bc: SWAP2
000025bd: POP
000025be: POP
000025bf: JUMP
000025c0: JUMPDEST
000025c1: PUSH1 0x00
000025c3: PUSH2 0xffff
000025c6: DUP1
000025c7: DUP5
000025c8: AND
000025c9: DUP1
000025ca: PUSH2 0x25d5
000025cd: JUMPI
000025ce: PUSH2 0x25d5
000025d1: PUSH2 0x245f
000025d4: JUMP
000025d5: JUMPDEST
000025d6: SWAP3
000025d7: AND
000025d8: SWAP2
000025d9: SWAP1
000025da: SWAP2
000025db: MOD
000025dc: SWAP3
000025dd: SWAP2
000025de: POP
000025df: POP
000025e0: JUMP
000025e1: JUMPDEST
000025e2: DUP1
000025e3: MLOAD
000025e4: PUSH1 0x06
000025e6: DUP2
000025e7: SWAP1
000025e8: SIGNEXTEND
000025e9: DUP2
000025ea: EQ
000025eb: PUSH2 0x24ef
000025ee: JUMPI
000025ef: PUSH1 0x00
000025f1: DUP1
000025f2: REVERT
000025f3: JUMPDEST
000025f4: PUSH1 0x00
000025f6: DUP1
000025f7: PUSH1 0x00
000025f9: DUP1
000025fa: PUSH1 0x80
000025fc: DUP6
000025fd: DUP8
000025fe: SUB
000025ff: SLT
00002600: ISZERO
00002601: PUSH2 0x2609
00002604: JUMPI
00002605: PUSH1 0x00
00002607: DUP1
00002608: REVERT
00002609: JUMPDEST
0000260a: DUP5
0000260b: MLOAD
0000260c: PUSH2 0x2614
0000260f: DUP2
00002610: PUSH2 0x23be
00002613: JUMP
00002614: JUMPDEST
00002615: SWAP4
00002616: POP
00002617: PUSH2 0x2622
0000261a: PUSH1 0x20
0000261c: DUP7
0000261d: ADD
0000261e: PUSH2 0x25e1
00002621: JUMP
00002622: JUMPDEST
00002623: SWAP3
00002624: POP
00002625: PUSH1 0x40
00002627: DUP6
00002628: ADD
00002629: MLOAD
0000262a: PUSH2 0x2632
0000262d: DUP2
0000262e: PUSH2 0x238c
00002631: JUMP
00002632: JUMPDEST
00002633: SWAP2
00002634: POP
00002635: PUSH2 0x2640
00002638: PUSH1 0x60
0000263a: DUP7
0000263b: ADD
0000263c: PUSH2 0x24f4
0000263f: JUMP
00002640: JUMPDEST
00002641: SWAP1
00002642: POP
00002643: SWAP3
00002644: SWAP6
00002645: SWAP2
00002646: SWAP5
00002647: POP
00002648: SWAP3
00002649: POP
0000264a: JUMP
0000264b: JUMPDEST
0000264c: PUSH4 0xffffffff
00002651: DUP3
00002652: DUP2
00002653: AND
00002654: DUP3
00002655: DUP3
00002656: AND
00002657: SUB
00002658: SWAP1
00002659: DUP1
0000265a: DUP3
0000265b: GT
0000265c: ISZERO
0000265d: PUSH2 0x25b9
00002660: JUMPI
00002661: PUSH2 0x25b9
00002664: PUSH2 0x23ed
00002667: JUMP
00002668: JUMPDEST
00002669: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
0000268a: PUSH1 0x00
0000268c: MSTORE
0000268d: PUSH1 0x41
0000268f: PUSH1 0x04
00002691: MSTORE
00002692: PUSH1 0x24
00002694: PUSH1 0x00
00002696: REVERT
00002697: JUMPDEST
00002698: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000026b9: PUSH1 0x00
000026bb: MSTORE
000026bc: PUSH1 0x32
000026be: PUSH1 0x04
000026c0: MSTORE
000026c1: PUSH1 0x24
000026c3: PUSH1 0x00
000026c5: REVERT
000026c6: JUMPDEST
000026c7: PUSH1 0x20
000026c9: DUP1
000026ca: DUP3
000026cb: MSTORE
000026cc: DUP3
000026cd: MLOAD
000026ce: DUP3
000026cf: DUP3
000026d0: ADD
000026d1: DUP2
000026d2: SWAP1
000026d3: MSTORE
000026d4: PUSH1 0x00
000026d6: SWAP2
000026d7: SWAP1
000026d8: DUP5
000026d9: DUP3
000026da: ADD
000026db: SWAP1
000026dc: PUSH1 0x40
000026de: DUP6
000026df: ADD
000026e0: SWAP1
000026e1: DUP5
000026e2: JUMPDEST
000026e3: DUP2
000026e4: DUP2
000026e5: LT
000026e6: ISZERO
000026e7: PUSH2 0x2704
000026ea: JUMPI
000026eb: DUP4
000026ec: MLOAD
000026ed: PUSH4 0xffffffff
000026f2: AND
000026f3: DUP4
000026f4: MSTORE
000026f5: SWAP3
000026f6: DUP5
000026f7: ADD
000026f8: SWAP3
000026f9: SWAP2
000026fa: DUP5
000026fb: ADD
000026fc: SWAP2
000026fd: PUSH1 0x01
000026ff: ADD
00002700: PUSH2 0x26e2
00002703: JUMP
00002704: JUMPDEST
00002705: POP
00002706: SWAP1
00002707: SWAP7
00002708: SWAP6
00002709: POP
0000270a: POP
0000270b: POP
0000270c: POP
0000270d: POP
0000270e: POP
0000270f: JUMP
00002710: JUMPDEST
00002711: PUSH1 0x40
00002713: MLOAD
00002714: PUSH1 0x1f
00002716: DUP3
00002717: ADD
00002718: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00002739: AND
0000273a: DUP2
0000273b: ADD
0000273c: PUSH8 0xffffffffffffffff
00002745: DUP2
00002746: GT
00002747: DUP3
00002748: DUP3
00002749: LT
0000274a: OR
0000274b: ISZERO
0000274c: PUSH2 0x2757
0000274f: JUMPI
00002750: PUSH2 0x2757
00002753: PUSH2 0x2668
00002756: JUMP
00002757: JUMPDEST
00002758: PUSH1 0x40
0000275a: MSTORE
0000275b: SWAP2
0000275c: SWAP1
0000275d: POP
0000275e: JUMP
0000275f: JUMPDEST
00002760: PUSH1 0x00
00002762: PUSH8 0xffffffffffffffff
0000276b: DUP3
0000276c: GT
0000276d: ISZERO
0000276e: PUSH2 0x2779
00002771: JUMPI
00002772: PUSH2 0x2779
00002775: PUSH2 0x2668
00002778: JUMP
00002779: JUMPDEST
0000277a: POP
0000277b: PUSH1 0x05
0000277d: SHL
0000277e: PUSH1 0x20
00002780: ADD
00002781: SWAP1
00002782: JUMP
00002783: JUMPDEST
00002784: PUSH1 0x00
00002786: DUP3
00002787: PUSH1 0x1f
00002789: DUP4
0000278a: ADD
0000278b: SLT
0000278c: PUSH2 0x2794
0000278f: JUMPI
00002790: PUSH1 0x00
00002792: DUP1
00002793: REVERT
00002794: JUMPDEST
00002795: DUP2
00002796: MLOAD
00002797: PUSH1 0x20
00002799: PUSH2 0x27a9
0000279c: PUSH2 0x27a4
0000279f: DUP4
000027a0: PUSH2 0x275f
000027a3: JUMP
000027a4: JUMPDEST
000027a5: PUSH2 0x2710
000027a8: JUMP
000027a9: JUMPDEST
000027aa: DUP3
000027ab: DUP2
000027ac: MSTORE
000027ad: PUSH1 0x05
000027af: SWAP3
000027b0: SWAP1
000027b1: SWAP3
000027b2: SHL
000027b3: DUP5
000027b4: ADD
000027b5: DUP2
000027b6: ADD
000027b7: SWAP2
000027b8: DUP2
000027b9: DUP2
000027ba: ADD
000027bb: SWAP1
000027bc: DUP7
000027bd: DUP5
000027be: GT
000027bf: ISZERO
000027c0: PUSH2 0x27c8
000027c3: JUMPI
000027c4: PUSH1 0x00
000027c6: DUP1
000027c7: REVERT
000027c8: JUMPDEST
000027c9: DUP3
000027ca: DUP7
000027cb: ADD
000027cc: JUMPDEST
000027cd: DUP5
000027ce: DUP2
000027cf: LT
000027d0: ISZERO
000027d1: PUSH2 0x27ec
000027d4: JUMPI
000027d5: DUP1
000027d6: MLOAD
000027d7: PUSH2 0x27df
000027da: DUP2
000027db: PUSH2 0x238c
000027de: JUMP
000027df: JUMPDEST
000027e0: DUP4
000027e1: MSTORE
000027e2: SWAP2
000027e3: DUP4
000027e4: ADD
000027e5: SWAP2
000027e6: DUP4
000027e7: ADD
000027e8: PUSH2 0x27cc
000027eb: JUMP
000027ec: JUMPDEST
000027ed: POP
000027ee: SWAP7
000027ef: SWAP6
000027f0: POP
000027f1: POP
000027f2: POP
000027f3: POP
000027f4: POP
000027f5: POP
000027f6: JUMP
000027f7: JUMPDEST
000027f8: PUSH1 0x00
000027fa: DUP1
000027fb: PUSH1 0x40
000027fd: DUP4
000027fe: DUP6
000027ff: SUB
00002800: SLT
00002801: ISZERO
00002802: PUSH2 0x280a
00002805: JUMPI
00002806: PUSH1 0x00
00002808: DUP1
00002809: REVERT
0000280a: JUMPDEST
0000280b: DUP3
0000280c: MLOAD
0000280d: PUSH8 0xffffffffffffffff
00002816: DUP1
00002817: DUP3
00002818: GT
00002819: ISZERO
0000281a: PUSH2 0x2822
0000281d: JUMPI
0000281e: PUSH1 0x00
00002820: DUP1
00002821: REVERT
00002822: JUMPDEST
00002823: DUP2
00002824: DUP6
00002825: ADD
00002826: SWAP2
00002827: POP
00002828: DUP6
00002829: PUSH1 0x1f
0000282b: DUP4
0000282c: ADD
0000282d: SLT
0000282e: PUSH2 0x2836
00002831: JUMPI
00002832: PUSH1 0x00
00002834: DUP1
00002835: REVERT
00002836: JUMPDEST
00002837: DUP2
00002838: MLOAD
00002839: PUSH1 0x20
0000283b: PUSH2 0x2846
0000283e: PUSH2 0x27a4
00002841: DUP4
00002842: PUSH2 0x275f
00002845: JUMP
00002846: JUMPDEST
00002847: DUP3
00002848: DUP2
00002849: MSTORE
0000284a: PUSH1 0x05
0000284c: SWAP3
0000284d: SWAP1
0000284e: SWAP3
0000284f: SHL
00002850: DUP5
00002851: ADD
00002852: DUP2
00002853: ADD
00002854: SWAP2
00002855: DUP2
00002856: DUP2
00002857: ADD
00002858: SWAP1
00002859: DUP10
0000285a: DUP5
0000285b: GT
0000285c: ISZERO
0000285d: PUSH2 0x2865
00002860: JUMPI
00002861: PUSH1 0x00
00002863: DUP1
00002864: REVERT
00002865: JUMPDEST
00002866: SWAP5
00002867: DUP3
00002868: ADD
00002869: SWAP5
0000286a: JUMPDEST
0000286b: DUP4
0000286c: DUP7
0000286d: LT
0000286e: ISZERO
0000286f: PUSH2 0x288a
00002872: JUMPI
00002873: PUSH2 0x287b
00002876: DUP7
00002877: PUSH2 0x25e1
0000287a: JUMP
0000287b: JUMPDEST
0000287c: DUP3
0000287d: MSTORE
0000287e: SWAP5
0000287f: DUP3
00002880: ADD
00002881: SWAP5
00002882: SWAP1
00002883: DUP3
00002884: ADD
00002885: SWAP1
00002886: PUSH2 0x286a
00002889: JUMP
0000288a: JUMPDEST
0000288b: SWAP2
0000288c: DUP9
0000288d: ADD
0000288e: MLOAD
0000288f: SWAP2
00002890: SWAP7
00002891: POP
00002892: SWAP1
00002893: SWAP4
00002894: POP
00002895: POP
00002896: POP
00002897: DUP1
00002898: DUP3
00002899: GT
0000289a: ISZERO
0000289b: PUSH2 0x28a3
0000289e: JUMPI
0000289f: PUSH1 0x00
000028a1: DUP1
000028a2: REVERT
000028a3: JUMPDEST
000028a4: POP
000028a5: PUSH2 0x28b0
000028a8: DUP6
000028a9: DUP3
000028aa: DUP7
000028ab: ADD
000028ac: PUSH2 0x2783
000028af: JUMP
000028b0: JUMPDEST
000028b1: SWAP2
000028b2: POP
000028b3: POP
000028b4: SWAP3
000028b5: POP
000028b6: SWAP3
000028b7: SWAP1
000028b8: POP
000028b9: JUMP
000028ba: JUMPDEST
000028bb: PUSH1 0x06
000028bd: DUP3
000028be: DUP2
000028bf: SIGNEXTEND
000028c0: SWAP1
000028c1: DUP3
000028c2: SWAP1
000028c3: SIGNEXTEND
000028c4: SUB
000028c5: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000
000028e6: DUP2
000028e7: SLT
000028e8: PUSH7 0x7fffffffffffff
000028f0: DUP3
000028f1: SGT
000028f2: OR
000028f3: ISZERO
000028f4: PUSH2 0x2243
000028f7: JUMPI
000028f8: PUSH2 0x2243
000028fb: PUSH2 0x23ed
000028fe: JUMP
000028ff: JUMPDEST
00002900: PUSH1 0x01
00002902: PUSH1 0x01
00002904: PUSH1 0xa0
00002906: SHL
00002907: SUB
00002908: DUP3
00002909: DUP2
0000290a: AND
0000290b: DUP3
0000290c: DUP3
0000290d: AND
0000290e: SUB
0000290f: SWAP1
00002910: DUP1
00002911: DUP3
00002912: GT
00002913: ISZERO
00002914: PUSH2 0x25b9
00002917: JUMPI
00002918: PUSH2 0x25b9
0000291b: PUSH2 0x23ed
0000291e: JUMP
0000291f: JUMPDEST
00002920: PUSH1 0x00
00002922: DUP2
00002923: PUSH1 0x06
00002925: SIGNEXTEND
00002926: DUP4
00002927: PUSH1 0x06
00002929: SIGNEXTEND
0000292a: DUP1
0000292b: PUSH2 0x2936
0000292e: JUMPI
0000292f: PUSH2 0x2936
00002932: PUSH2 0x245f
00002935: JUMP
00002936: JUMPDEST
00002937: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002958: DUP2
00002959: EQ
0000295a: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000
0000297b: DUP4
0000297c: EQ
0000297d: AND
0000297e: ISZERO
0000297f: PUSH2 0x298a
00002982: JUMPI
00002983: PUSH2 0x298a
00002986: PUSH2 0x23ed
00002989: JUMP
0000298a: JUMPDEST
0000298b: SWAP1
0000298c: SDIV
0000298d: SWAP4
0000298e: SWAP3
0000298f: POP
00002990: POP
00002991: POP
00002992: JUMP
00002993: JUMPDEST
00002994: PUSH1 0x00
00002996: DUP3
00002997: PUSH1 0x06
00002999: SIGNEXTEND
0000299a: DUP1
0000299b: PUSH2 0x29a6
0000299e: JUMPI
0000299f: PUSH2 0x29a6
000029a2: PUSH2 0x245f
000029a5: JUMP
000029a6: JUMPDEST
000029a7: DUP1
000029a8: DUP4
000029a9: PUSH1 0x06
000029ab: SIGNEXTEND
000029ac: SMOD
000029ad: SWAP2
000029ae: POP
000029af: POP
000029b0: SWAP3
000029b1: SWAP2
000029b2: POP
000029b3: POP
000029b4: JUMP
000029b5: JUMPDEST
000029b6: PUSH1 0x00
000029b8: DUP2
000029b9: PUSH1 0x02
000029bb: SIGNEXTEND
000029bc: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000
000029dd: DUP2
000029de: SUB
000029df: PUSH2 0x29ea
000029e2: JUMPI
000029e3: PUSH2 0x29ea
000029e6: PUSH2 0x23ed
000029e9: JUMP
000029ea: JUMPDEST
000029eb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00002a0c: ADD
00002a0d: SWAP3
00002a0e: SWAP2
00002a0f: POP
00002a10: POP
00002a11: JUMP
00002a12: JUMPDEST
00002a13: PUSH24 0xffffffffffffffffffffffffffffffffffffffffffffffff
00002a2c: DUP3
00002a2d: DUP2
00002a2e: AND
00002a2f: DUP3
00002a30: DUP3
00002a31: AND
00002a32: DUP2
00002a33: DUP2
00002a34: MUL
00002a35: DUP4
00002a36: AND
00002a37: SWAP3
00002a38: SWAP2
00002a39: DUP2
00002a3a: ISZERO
00002a3b: DUP3
00002a3c: DUP6
00002a3d: DIV
00002a3e: DUP3
00002a3f: EQ
00002a40: OR
00002a41: PUSH2 0x2a4c
00002a44: JUMPI
00002a45: PUSH2 0x2a4c
00002a48: PUSH2 0x23ed
00002a4b: JUMP
00002a4c: JUMPDEST
00002a4d: POP
00002a4e: POP
00002a4f: POP
00002a50: SWAP3
00002a51: SWAP2
00002a52: POP
00002a53: POP
00002a54: JUMP
00002a55: JUMPDEST
00002a56: PUSH1 0x00
00002a58: PUSH24 0xffffffffffffffffffffffffffffffffffffffffffffffff
00002a71: DUP1
00002a72: DUP5
00002a73: AND
00002a74: DUP1
00002a75: PUSH2 0x2a80
00002a78: JUMPI
00002a79: PUSH2 0x2a80
00002a7c: PUSH2 0x245f
00002a7f: JUMP
00002a80: JUMPDEST
00002a81: SWAP3
00002a82: AND
00002a83: SWAP2
00002a84: SWAP1
00002a85: SWAP2
00002a86: DIV
00002a87: SWAP3
00002a88: SWAP2
00002a89: POP
00002a8a: POP
00002a8b: JUMP
00002a8c: JUMPDEST
00002a8d: PUSH1 0x00
00002a8f: PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000
00002ab0: DUP3
00002ab1: SUB
00002ab2: PUSH2 0x2abd
00002ab5: JUMPI
00002ab6: PUSH2 0x2abd
00002ab9: PUSH2 0x23ed
00002abc: JUMP
00002abd: JUMPDEST
00002abe: POP
00002abf: PUSH1 0x00
00002ac1: SUB
00002ac2: SWAP1
00002ac3: JUMP
00002ac4: JUMPDEST
00002ac5: PUSH1 0x00
00002ac7: DUP2
00002ac8: PUSH1 0x02
00002aca: SIGNEXTEND
00002acb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000
00002aec: DUP2
00002aed: SUB
00002aee: PUSH2 0x2af9
00002af1: JUMPI
00002af2: PUSH2 0x2af9
00002af5: PUSH2 0x23ed
00002af8: JUMP
00002af9: JUMPDEST
00002afa: PUSH1 0x00
00002afc: SUB
00002afd: SWAP3
00002afe: SWAP2
00002aff: POP
00002b00: POP
00002b01: JUMP
00002b02: JUMPDEST
00002b03: PUSH1 0x00
00002b05: DUP3
00002b06: PUSH2 0x2b11
00002b09: JUMPI
00002b0a: PUSH2 0x2b11
00002b0d: PUSH2 0x245f
00002b10: JUMP
00002b11: JUMPDEST
00002b12: POP
00002b13: MOD
00002b14: SWAP1
00002b15: JUMP
00002b16: JUMPDEST
00002b17: PUSH1 0x00
00002b19: PUSH1 0x20
00002b1b: DUP3
00002b1c: DUP5
00002b1d: SUB
00002b1e: SLT
00002b1f: ISZERO
00002b20: PUSH2 0x2b28
00002b23: JUMPI
00002b24: PUSH1 0x00
00002b26: DUP1
00002b27: REVERT
00002b28: JUMPDEST
00002b29: PUSH2 0x1326
00002b2c: DUP3
00002b2d: PUSH2 0x24f4
00002b30: JUMP
00002b31: JUMPDEST
00002b32: PUSH1 0x00
00002b34: DUP3
00002b35: MLOAD
00002b36: PUSH1 0x00
00002b38: JUMPDEST
00002b39: DUP2
00002b3a: DUP2
00002b3b: LT
00002b3c: ISZERO
00002b3d: PUSH2 0x2b52
00002b40: JUMPI
00002b41: PUSH1 0x20
00002b43: DUP2
00002b44: DUP7
00002b45: ADD
00002b46: DUP2
00002b47: ADD
00002b48: MLOAD
00002b49: DUP6
00002b4a: DUP4
00002b4b: ADD
00002b4c: MSTORE
00002b4d: ADD
00002b4e: PUSH2 0x2b38
00002b51: JUMP
00002b52: JUMPDEST
00002b53: POP
00002b54: PUSH1 0x00
00002b56: SWAP3
00002b57: ADD
00002b58: SWAP2
00002b59: DUP3
00002b5a: MSTORE
00002b5b: POP
00002b5c: SWAP2
00002b5d: SWAP1
00002b5e: POP
00002b5f: JUMP
00002b60: INVALID
00002b61: LOG1
00002b62: PUSH5 0x736f6c6343
00002b68: STOP
00002b69: ADDMOD
00002b6a: EQ
00002b6b: STOP
00002b6c: EXP

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xe30c3978",
            "selector": "0xe30c3978",
            "calldata_variants": [
                "0xe30c3978",
                "0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf0fa55a9",
            "selector": "0xf0fa55a9",
            "calldata_variants": [
                "0xf0fa55a9",
                "0xf0fa55a90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc7576d3",
            "selector": "0xbc7576d3",
            "calldata_variants": [
                "0xbc7576d3",
                "0xbc7576d30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc9ae5e0a",
            "selector": "0xc9ae5e0a",
            "calldata_variants": [
                "0xc9ae5e0a",
                "0xc9ae5e0a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcce0d6fb",
            "selector": "0xcce0d6fb",
            "calldata_variants": [
                "0xcce0d6fb",
                "0xcce0d6fb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa2b6eef0",
            "selector": "0xa2b6eef0",
            "calldata_variants": [
                "0xa2b6eef0",
                "0xa2b6eef00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaf97d3bd",
            "selector": "0xaf97d3bd",
            "calldata_variants": [
                "0xaf97d3bd",
                "0xaf97d3bd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 416,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1381,
            "type": "tx_origin_used"
        },
        {
            "pc": 394,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 1380,
            "type": "tx_origin_used"
        }
    ]
}
medium oracle codex TWAP can collapse to spot price, enabling price manipulation around buy/burn swaps 75 no
view
evidence_json
{
    "evidence": "Both buy functions derive `amountOutMinimum` from `getTitanQuoteForEth`/`getDragonQuoteForTitan`, which cap the TWAP window by `oldestObservation` and fall back to `pool.slot0()` (spot price) when `secondsAgo == 0`, making the min-out manipulable when the pool has limited observations.",
    "locations": [
        "contracts/contracts/TitanBuy.sol:196",
        "contracts/contracts/TitanBuy.sol:371",
        "contracts/contracts/TitanBuy.sol:389",
        "contracts/contracts/DragonBuyAndBurn.sol:246",
        "contracts/contracts/DragonBuyAndBurn.sol:544",
        "contracts/contracts/DragonBuyAndBurn.sol:623"
    ],
    "recommendation": "Require a minimum TWAP window and revert if `oldestObservation` is below the configured window instead of falling back to spot price. Consider enforcing a longer minimum TWAP, delaying public buy calls until sufficient observations exist, or using an independent oracle (e.g., Chainlink) for min-out calculations.",
    "exploit_scenario": "An attacker can manipulate the WETH/TitanX and/or DragonX/TitanX Uniswap V3 pools (especially when observation history is short) so `secondsAgo` becomes 0 or very small, causing the contracts to use spot/short-TWAP prices for `amountOutMinimum`. The attacker then calls `buyTitanX()` or `buyAndBurnDragonX()` in the same block, allowing the swap to execute at an unfavorable price and extracting value via a back-run, draining WETH from the contracts over time."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x4cfb349b44ca52c9ce8905757635319efa2ffca0da96b4fafbe27730f7badaeb
call_targets: 0x9217622b957411ac4a5608a9a0689c8a256344d1
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x4cfb349b44ca52c9ce8905757635319efa2ffca0da96b4fafbe27730f7badaeb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9217622b957411ac4a5608a9a0689c8a256344d1"
    ],
    "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": "0xe30c3978",
            "selector": "0xe30c3978",
            "calldata_variants": [
                "0xe30c3978",
                "0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf0fa55a9",
            "selector": "0xf0fa55a9",
            "calldata_variants": [
                "0xf0fa55a9",
                "0xf0fa55a90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc7576d3",
            "selector": "0xbc7576d3",
            "calldata_variants": [
                "0xbc7576d3",
                "0xbc7576d30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc9ae5e0a",
            "selector": "0xc9ae5e0a",
            "calldata_variants": [
                "0xc9ae5e0a",
                "0xc9ae5e0a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcce0d6fb",
            "selector": "0xcce0d6fb",
            "calldata_variants": [
                "0xcce0d6fb",
                "0xcce0d6fb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa2b6eef0",
            "selector": "0xa2b6eef0",
            "calldata_variants": [
                "0xa2b6eef0",
                "0xa2b6eef00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaf97d3bd",
            "selector": "0xaf97d3bd",
            "calldata_variants": [
                "0xaf97d3bd",
                "0xaf97d3bd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 502,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1819,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2230,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 7,
    "guards_detected": [
        {
            "pc": 416,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1381,
            "type": "tx_origin_used"
        },
        {
            "pc": 394,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 1380,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 7
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x4cfb349b44ca52c9ce8905757635319efa2ffca0da96b4fafbe27730f7badaeb
call_targets: 0x9217622b957411ac4a5608a9a0689c8a256344d1
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x4cfb349b44ca52c9ce8905757635319efa2ffca0da96b4fafbe27730f7badaeb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9217622b957411ac4a5608a9a0689c8a256344d1"
    ],
    "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": "0xe30c3978",
            "selector": "0xe30c3978",
            "calldata_variants": [
                "0xe30c3978",
                "0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf0fa55a9",
            "selector": "0xf0fa55a9",
            "calldata_variants": [
                "0xf0fa55a9",
                "0xf0fa55a90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc7576d3",
            "selector": "0xbc7576d3",
            "calldata_variants": [
                "0xbc7576d3",
                "0xbc7576d30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc9ae5e0a",
            "selector": "0xc9ae5e0a",
            "calldata_variants": [
                "0xc9ae5e0a",
                "0xc9ae5e0a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcce0d6fb",
            "selector": "0xcce0d6fb",
            "calldata_variants": [
                "0xcce0d6fb",
                "0xcce0d6fb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa2b6eef0",
            "selector": "0xa2b6eef0",
            "calldata_variants": [
                "0xa2b6eef0",
                "0xa2b6eef00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xaf97d3bd",
            "selector": "0xaf97d3bd",
            "calldata_variants": [
                "0xaf97d3bd",
                "0xaf97d3bd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 502,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1819,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2230,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 7,
    "guards_detected": [
        {
            "pc": 416,
            "type": "msg_sender_eq_const",
            "value": 1.0970776880180083e+48
        },
        {
            "pc": 1381,
            "type": "tx_origin_used"
        },
        {
            "pc": 394,
            "type": "msg_sender_eq_const",
            "value": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
        },
        {
            "pc": 1380,
            "type": "tx_origin_used"
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 5
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 16
}