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

Analysis Run

a386b194-baf5-428b-9962-3a89e8adeeb2

complete
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 8:59 PM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Untrusted CALL target/value reachable
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
30765 report.consolidate complete 1 / 1 3 months ago
75586 artifact.fetch complete 1 / 3 1 week ago
75587 tool.cast_disasm complete 1 / 3 1 week ago
75588 analysis.bundle complete 1 / 3 1 week ago
75589 capability.graph complete 1 / 3 1 week ago
75590 detector.run complete 1 / 3 1 week ago
75591 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
4
No findings?
no
Summary
Found 4 issues: 1 medium oracle-manipulation risk and 3 low-severity issues (initial oracle update DoS, reinitialization risk, burn parameter mismatch).
View stderr
[codex:1423233] OpenAI Codex v0.77.0 (research preview)
[codex:1423233] --------
[codex:1423233] workdir: /tmp/codex-multi-92znz63g
[codex:1423233] model: gpt-5.2-codex
[codex:1423233] provider: openai
[codex:1423233] approval: never
[codex:1423233] sandbox: read-only
[codex:1423233] reasoning effort: xhigh
[codex:1423233] reasoning summaries: auto
[codex:1423233] session id: 019b7107-8fdc-7f03-880c-669f22d5a66d
[codex:1423233] --------
[codex:1423233] user
[codex:1423233] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1423233] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1423233] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1423233] 
[codex:1423233] Scope rules:
[codex:1423233] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1423233] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1423233] 
[codex:1423233] Output MUST be valid JSON matching the provided schema.
[codex:1423233] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1423233] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1423233] 
[codex:1423233] Output constraints (IMPORTANT):
[codex:1423233] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1423233] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1423233] mcp startup: no servers
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Preparing to audit with file inspection**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc ls in /tmp/codex-multi-92znz63g succeeded in 5ms:
[codex:1423233] AUDIT_BUNDLE.txt
[codex:1423233] codex-output-schema.json
[codex:1423233] contracts
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Reading audit bundle file**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-92znz63g succeeded in 6ms:
[codex:1423233] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1423233] 
[codex:1423233] ================================================================================
[codex:1423233] FILE: contracts/lib/solmate/src/utils/ReentrancyGuard.sol
[codex:1423233] ================================================================================
[codex:1423233] // SPDX-License-Identifier: AGPL-3.0-only
[codex:1423233] pragma solidity >=0.8.0;
[codex:1423233] 
[codex:1423233] /// @notice Gas optimized reentrancy protection for smart contracts.
[codex:1423233] /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ReentrancyGuard.sol)
[codex:1423233] /// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol)
[codex:1423233] abstract contract ReentrancyGuard {
[codex:1423233]     uint256 private locked = 1;
[codex:1423233] 
[codex:1423233]     modifier nonReentrant() virtual {
[codex:1423233]         require(locked == 1, "REENTRANCY");
[codex:1423233] 
[codex:1423233]         locked = 2;
[codex:1423233] 
[codex:1423233]         _;
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Ensuring complete file reading**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc 'rg -n "''^FILE:" AUDIT_BUNDLE.txt' in /tmp/codex-multi-92znz63g succeeded in 6ms:
[codex:1423233] 4:FILE: contracts/lib/solmate/src/utils/ReentrancyGuard.sol
[codex:1423233] 27:FILE: contracts/src/interfaces/IBundlesToken.sol
[codex:1423233] 49:FILE: contracts/src/swap/Oracle.sol
[codex:1423233] 130:FILE: contracts/src/swap/OraclePair.sol
[codex:1423233] 502:FILE: contracts/src/swap/interfaces/IBase.sol
[codex:1423233] 515:FILE: contracts/src/swap/interfaces/IERC20.sol
[codex:1423233] 552:FILE: contracts/src/swap/interfaces/IOracle.sol
[codex:1423233] 568:FILE: contracts/src/swap/interfaces/IOraclePair.sol
[codex:1423233] 591:FILE: contracts/src/swap/interfaces/ISwapFactory.sol
[codex:1423233] 639:FILE: contracts/src/swap/interfaces/pair/IPairActions.sol
[codex:1423233] 690:FILE: contracts/src/swap/interfaces/pair/IPairDerivedState.sol
[codex:1423233] 725:FILE: contracts/src/swap/interfaces/pair/IPairEvents.sol
[codex:1423233] 772:FILE: contracts/src/swap/interfaces/pair/IPairState.sol
[codex:1423233] 804:FILE: contracts/src/swap/libraries/TransferHelper.sol
[codex:1423233] 853:FILE: contracts/src/swap/libraries/UQ112x112.sol
[codex:1423233] 878:FILE: contracts/src/swap/libraries/fixedpoint/Babylonian.sol
[codex:1423233] 934:FILE: contracts/src/swap/libraries/fixedpoint/BitMath.sol
[codex:1423233] 1023:FILE: contracts/src/swap/libraries/fixedpoint/FixedPoint.sol
[codex:1423233] 1215:FILE: contracts/src/swap/libraries/fixedpoint/FullMath.sol
[codex:1423233] 1274:FILE: contracts/src/swap/libraries/math.sol
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Inspecting missing interfaces**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc "sed -n '585,750p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-92znz63g succeeded in 5ms:
[codex:1423233]     /// @notice Average token0 price depending on the Oracle's period
[codex:1423233]     /// @return uint token0 Average price
[codex:1423233]     function price1CumulativeLast() external view returns (uint256);
[codex:1423233] }
[codex:1423233] 
[codex:1423233] ================================================================================
[codex:1423233] FILE: contracts/src/swap/interfaces/ISwapFactory.sol
[codex:1423233] ================================================================================
[codex:1423233] // SPDX-License-Identifier: MIT
[codex:1423233] pragma solidity ^0.8.10;
[codex:1423233] 
[codex:1423233] interface ISwapFactory {
[codex:1423233]     event PairCreated(
[codex:1423233]         address indexed token0,
[codex:1423233]         address indexed token1,
[codex:1423233]         address pair,
[codex:1423233]         uint16 fee,
[codex:1423233]         uint256 allPairsLength
[codex:1423233]     );
[codex:1423233] 
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Checking for remaining file content**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc "sed -n '750,920p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-92znz63g succeeded in 5ms:
[codex:1423233]     /// @param sender The address that initiated the swap call
[codex:1423233]     /// @param amount0In Amount of token0 sent to the pair
[codex:1423233]     /// @param amount1In Amount of token1 sent to the pair
[codex:1423233]     /// @param amount0Out Amount of token0 going out of the pair
[codex:1423233]     /// @param amount1Out Amount of token1 going out of the pair
[codex:1423233]     /// @param to Address to transfer the swapped amount
[codex:1423233]     event Swap(
[codex:1423233]         address indexed sender,
[codex:1423233]         uint256 amount0In,
[codex:1423233]         uint256 amount1In,
[codex:1423233]         uint256 amount0Out,
[codex:1423233]         uint256 amount1Out,
[codex:1423233]         address indexed to
[codex:1423233]     );
[codex:1423233] 
[codex:1423233]     /// @notice Emitted by the pool for any call to Sync function
[codex:1423233]     /// @param reserve0 reserve0 updated from the pair
[codex:1423233]     /// @param reserve1 reserve1 updated from the pair
[codex:1423233]     event Sync(uint112 reserve0, uint112 reserve1);
[codex:1423233] }
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Preparing to continue reading from line 920**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc "sed -n '920,1320p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-92znz63g succeeded in 5ms:
[codex:1423233]         }
[codex:1423233]         r = (r + x / r) >> 1;
[codex:1423233]         r = (r + x / r) >> 1;
[codex:1423233]         r = (r + x / r) >> 1;
[codex:1423233]         r = (r + x / r) >> 1;
[codex:1423233]         r = (r + x / r) >> 1;
[codex:1423233]         r = (r + x / r) >> 1;
[codex:1423233]         r = (r + x / r) >> 1; // Seven iterations should be enough
[codex:1423233]         uint256 r1 = x / r;
[codex:1423233]         return (r < r1 ? r : r1);
[codex:1423233]     }
[codex:1423233] }
[codex:1423233] 
[codex:1423233] ================================================================================
[codex:1423233] FILE: contracts/src/swap/libraries/fixedpoint/BitMath.sol
[codex:1423233] ================================================================================
[codex:1423233] // SPDX-License-Identifier: GPL-3.0-or-later
[codex:1423233] pragma solidity ^0.8.0;
[codex:1423233] 
[codex:1423233] library BitMath {
[codex:1423233] 
[codex:1423233] 
[codex:1423233] 
[codex:1423233] 
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Identifying potential security and logic issues in OraclePair contract**
[codex:1423233] thinking
[codex:1423233] **Examining dividend and fee mechanics alongside update and mint logic**
[codex:1423233] 
[codex:1423233] I’m analyzing how dividend updates, fee calculations, and swap invariants interplay, especially focusing on conditions that might cause division by zero or rounding issues. The interactions between protocolTokenReserve, balance tracking, and external calls like burning tokens seem carefully handled, though subtle corner cases with token behaviors or zero liquidity states could cause reverts or temporary unavailability. Let’s explore how these design choices might affect usage and robustness.
[codex:1423233] thinking
[codex:1423233] **Identifying subtle underflows, oracle timing, and swap edge cases**
[codex:1423233] 
[codex:1423233] I'm reviewing underflow risks on liquidity calculations and protocolTokenReserve, nuances in dividend updates, and how swapping to the contract itself may affect input/output token accounting. There's also a nuanced oracle initialization issue where the first price update uses a very short interval, allowing potential price manipulation if the oracle is trusted too soon. These details reveal tricky edge cases worth exploring further!
[codex:1423233] thinking
[codex:1423233] **Analyzing oracle timing, fee config, and function signature consistency**
[codex:1423233] 
[codex:1423233] I'm carefully evaluating the oracle’s price update timing and its manipulation risks, config weaknesses around fee validation, and a subtle but important mismatch in parameter naming between interface and implementation for the burn function that could cause integration errors despite matching ABI order. These nuances could impact how safely contracts interact and behave in edge cases.
[codex:1423233] thinking
[codex:1423233] **Examining interface mismatch and dividend rounding impact**
[codex:1423233] 
[codex:1423233] I'm focusing on the critical inconsistency between the burn function’s parameter order in the implementation versus its interface, which could cause users or integrators to burn incorrect positions or amounts, potentially locking funds unintentionally. I’m also analyzing how dividend rounding might cause small protocol fees to become unclaimable, leading to trapped tokens in the contract.
[codex:1423233] exec
[codex:1423233] /bin/bash -lc 'nl -ba contracts/src/swap/Oracle.sol' in /tmp/codex-multi-92znz63g succeeded in 5ms:
[codex:1423233]      1	// SPDX-License-Identifier: MIT
[codex:1423233]      2	pragma solidity ^0.8.10;
[codex:1423233]      3	
[codex:1423233]      4	import "./libraries/fixedpoint/FixedPoint.sol";
[codex:1423233]      5	
[codex:1423233]      6	error InvalidToken();
[codex:1423233]      7	
[codex:1423233]      8	/// @title Oracle for Pair
[codex:1423233]      9	/// @notice Fixed window oracle that recomputes the average price for the entire period once every period
[codex:1423233]     10	contract Oracle {
[codex:1423233]     11	    using FixedPoint for *;
[codex:1423233]     12	
[codex:1423233]     13	    uint256 public constant PERIOD = 1 hours;
[codex:1423233]     14	
[codex:1423233]     15	    address public token1;
[codex:1423233]     16	    address public pair;
[codex:1423233]     17	
[codex:1423233]     18	    uint256 public price1CumulativeLast;
[codex:1423233]     19	    uint32 public blockTimestampLast;
[codex:1423233]     20	    FixedPoint.uq112x112 public price1Average;
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Annotating Oracle update lines**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc 'nl -ba contracts/src/swap/OraclePair.sol' in /tmp/codex-multi-92znz63g succeeded in 5ms:
[codex:1423233]      1	// SPDX-License-Identifier: BUSL-1.1
[codex:1423233]      2	pragma solidity ^0.8.10;
[codex:1423233]      3	
[codex:1423233]      4	import "../interfaces/IBundlesToken.sol";
[codex:1423233]      5	import "./interfaces/IERC20.sol";
[codex:1423233]      6	import "./interfaces/ISwapFactory.sol";
[codex:1423233]      7	import "./interfaces/IOraclePair.sol";
[codex:1423233]      8	import "./interfaces/IOracle.sol";
[codex:1423233]      9	import "./libraries/math.sol";
[codex:1423233]     10	import "./libraries/UQ112x112.sol";
[codex:1423233]     11	import "./libraries/TransferHelper.sol";
[codex:1423233]     12	import "./utils/PairErrors.sol";
[codex:1423233]     13	import "@solmate/utils/ReentrancyGuard.sol";
[codex:1423233]     14	
[codex:1423233]     15	/// @title Core contract for Pairs with protocol token
[codex:1423233]     16	/// @notice Low-level contract to mint/burn/swap and claim
[codex:1423233]     17	contract OraclePair is IOraclePair, ReentrancyGuard, Math {
[codex:1423233]     18	    using UQ112x112 for uint224;
[codex:1423233]     19	
[codex:1423233]     20	    /// @inheritdoc IPairState
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Checking IPairActions for mismatches**
[codex:1423233] exec
[codex:1423233] /bin/bash -lc 'nl -ba contracts/src/swap/interfaces/pair/IPairActions.sol' in /tmp/codex-multi-92znz63g succeeded in 5ms:
[codex:1423233]      1	// SPDX-License-Identifier: MIT
[codex:1423233]      2	pragma solidity ^0.8.10;
[codex:1423233]      3	
[codex:1423233]      4	interface IPairActions {
[codex:1423233]      5	    /// @notice Mint liquidity for a specific position
[codex:1423233]      6	    /// @dev Low-level function. Should be called from another contract which performs all necessary checks
[codex:1423233]      7	    /// @param to The address to mint liquidity
[codex:1423233]      8	    /// @param positionId The ID to store the position to allow multiple positions for a single address
[codex:1423233]      9	    /// @return liquidity Minted liquidity
[codex:1423233]     10	    function mint(address to, uint256 positionId)
[codex:1423233]     11	        external
[codex:1423233]     12	        returns (uint256 liquidity);
[codex:1423233]     13	
[codex:1423233]     14	    /// @notice Burn liquidity from a specific position
[codex:1423233]     15	    /// @dev Low-level function. Should be called from another contract which performs all necessary checks
[codex:1423233]     16	    /// @param to The address to return the liquidity to
[codex:1423233]     17	    /// @param positionId The ID of the position to burn liquidity from
[codex:1423233]     18	    /// @param liquidity Liquidity amount to be burned
[codex:1423233]     19	    /// @return amount0 The token0 amount received from the liquidity burn
[codex:1423233]     20	    /// @return amount1 The token1 amount received from the liquidity burn
[codex:1423233] 
[codex:1423233] 
[codex:1423233] thinking
[codex:1423233] **Analyzing security audit findings and parameter mismatches**
[codex:1423233] 
[codex:1423233] I'll organize exploitable vulnerabilities focused on oracle manipulation, reinitialization, and parameter mislabeling, weighing severity and real impact. This includes division-by-zero DoS on oracle update, short-window price manipulation, factory reinitialization risks, and a parameter order mismatch causing potential integration bugs, all summarized for a JSON report output.
[codex:1423233] thinking
[codex:1423233] **Preparing detailed audit findings JSON**
[codex:1423233] 
[codex:1423233] I'll assemble a comprehensive JSON report summarizing four issues—one medium-risk oracle manipulation and three low-risk problems including oracle DoS, pair reinitialization, and burn parameter mismatch—with clear descriptions, recommendations, and precise source code locations.
[codex:1423233] codex
[codex:1423233] {"no_findings":false,"summary":"Found 4 issues: 1 medium oracle-manipulation risk and 3 low-severity issues (initial oracle update DoS, reinitialization risk, burn parameter mismatch).","findings":[{"severity":"medium","category":"oracle","title":"First oracle update ignores PERIOD, enabling short-window price manipulation","exploit_scenario":"After initial liquidity creates the oracle, an attacker can manipulate the pool price for a brief window and trigger the first update via a swap. Because firstUpdateCall bypasses the PERIOD requirement, the oracle average is computed over that short interval, which can be abused by any downstream logic relying on the oracle (e.g., valuations or liquidations).","recommendation":"Require timeElapsed >= PERIOD even on the first update, or make the first call only set price1CumulativeLast/blockTimestampLast and wait a full period before publishing price1Average.","evidence":"Oracle.update updates price1Average when timeElapsed >= PERIOD || firstUpdateCall, so the first update can be computed over an arbitrary short interval.","locations":["contracts/src/swap/Oracle.sol:45"]},{"severity":"low","category":"oracle","title":"Oracle update can divide by zero on first call in the same block as creation","exploit_scenario":"If the oracle is created and the first swap/update happens in the same block, blockTimestamp == blockTimestampLast and timeElapsed == 0. firstUpdateCall is true, so the division by timeElapsed reverts, causing the swap to fail and creating a one-block DoS for the first swap.","recommendation":"Guard against timeElapsed == 0 before dividing (e.g., return early or only update timestamps) to avoid a revert on same-block first update.","evidence":"timeElapsed is computed from blockTimestamp - blockTimestampLast and used as a divisor without a >0 check when firstUpdateCall is true.","locations":["contracts/src/swap/Oracle.sol:43","contracts/src/swap/Oracle.sol:48"]},{"severity":"low","category":"access_control","title":"Pair can be reinitialized by factory after deployment","exploit_scenario":"initialize lacks a one-time guard; the factory can call it again to change token0/token1/fee for an existing pool. If the factory is compromised or upgradeable, an attacker could break pool accounting or disable swaps (e.g., set fee==10 without oracle), potentially trapping liquidity.","recommendation":"Add an initialized flag (or require token0 == address(0)) to enforce single-use initialization.","evidence":"initialize only checks msg.sender == factory and then overwrites token0/token1/fee without any initialization guard.","locations":["contracts/src/swap/OraclePair.sol:82"]},{"severity":"low","category":"other","title":"Burn parameter order inconsistent between interface/documentation and implementation","exploit_scenario":"Integrators following the interface may call burn(to, liquidity, positionId), but OraclePair interprets the second argument as positionId and the third as liquidity. This can lead to burns targeting the wrong position or reverting, causing failed withdrawals or stuck liquidity.","recommendation":"Align parameter order/names across interface and implementation (or update docs and callers) to avoid mismatched arguments.","evidence":"IPairActions.burn declares (address to, uint256 liquidity, uint256 positionId) while OraclePair.burn is (address to, uint256 positionId, uint256 liquidity).","locations":["contracts/src/swap/interfaces/pair/IPairActions.sol:21","contracts/src/swap/OraclePair.sol:132"]}]}
[codex:1423233] tokens used
[codex:1423233] 48,612
[codex:1423233] {"no_findings":false,"summary":"Found 4 issues: 1 medium oracle-manipulation risk and 3 low-severity issues (initial oracle update DoS, reinitialization risk, burn parameter mismatch).","findings":[{"severity":"medium","category":"oracle","title":"First oracle update ignores PERIOD, enabling short-window price manipulation","exploit_scenario":"After initial liquidity creates the oracle, an attacker can manipulate the pool price for a brief window and trigger the first update via a swap. Because firstUpdateCall bypasses the PERIOD requirement, the oracle average is computed over that short interval, which can be abused by any downstream logic relying on the oracle (e.g., valuations or liquidations).","recommendation":"Require timeElapsed >= PERIOD even on the first update, or make the first call only set price1CumulativeLast/blockTimestampLast and wait a full period before publishing price1Average.","evidence":"Oracle.update updates price1Average when timeElapsed >= PERIOD || firstUpdateCall, so the first update can be computed over an arbitrary short interval.","locations":["contracts/src/swap/Oracle.sol:45"]},{"severity":"low","category":"oracle","title":"Oracle update can divide by zero on first call in the same block as creation","exploit_scenario":"If the oracle is created and the first swap/update happens in the same block, blockTimestamp == blockTimestampLast and timeElapsed == 0. firstUpdateCall is true, so the division by timeElapsed reverts, causing the swap to fail and creating a one-block DoS for the first swap.","recommendation":"Guard against timeElapsed == 0 before dividing (e.g., return early or only update timestamps) to avoid a revert on same-block first update.","evidence":"timeElapsed is computed from blockTimestamp - blockTimestampLast and used as a divisor without a >0 check when firstUpdateCall is true.","locations":["contracts/src/swap/Oracle.sol:43","contracts/src/swap/Oracle.sol:48"]},{"severity":"low","category":"access_control","title":"Pair can be reinitialized by factory after deployment","exploit_scenario":"initialize lacks a one-time guard; the factory can call it again to change token0/token1/fee for an existing pool. If the factory is compromised or upgradeable, an attacker could break pool accounting or disable swaps (e.g., set fee==10 without oracle), potentially trapping liquidity.","recommendation":"Add an initialized flag (or require token0 == address(0)) to enforce single-use initialization.","evidence":"initialize only checks msg.sender == factory and then overwrites token0/token1/fee without any initialization guard.","locations":["contracts/src/swap/OraclePair.sol:82"]},{"severity":"low","category":"other","title":"Burn parameter order inconsistent between interface/documentation and implementation","exploit_scenario":"Integrators following the interface may call burn(to, liquidity, positionId), but OraclePair interprets the second argument as positionId and the third as liquidity. This can lead to burns targeting the wrong position or reverting, causing failed withdrawals or stuck liquidity.","recommendation":"Align parameter order/names across interface and implementation (or update docs and callers) to avoid mismatched arguments.","evidence":"IPairActions.burn declares (address to, uint256 liquidity, uint256 positionId) while OraclePair.burn is (address to, uint256 positionId, uint256 liquidity).","locations":["contracts/src/swap/interfaces/pair/IPairActions.sol:21","contracts/src/swap/OraclePair.sol:132"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T20:59:03.110434+00:00",
        "returncode": 0
    },
    "summary": "Found 4 issues: 1 medium oracle-manipulation risk and 3 low-severity issues (initial oracle update DoS, reinitialization risk, burn parameter mismatch).",
    "raw_final": {
        "summary": "Found 4 issues: 1 medium oracle-manipulation risk and 3 low-severity issues (initial oracle update DoS, reinitialization risk, burn parameter mismatch).",
        "findings": [
            {
                "title": "First oracle update ignores PERIOD, enabling short-window price manipulation",
                "category": "oracle",
                "evidence": "Oracle.update updates price1Average when timeElapsed >= PERIOD || firstUpdateCall, so the first update can be computed over an arbitrary short interval.",
                "severity": "medium",
                "locations": [
                    "contracts/src/swap/Oracle.sol:45"
                ],
                "recommendation": "Require timeElapsed >= PERIOD even on the first update, or make the first call only set price1CumulativeLast/blockTimestampLast and wait a full period before publishing price1Average.",
                "exploit_scenario": "After initial liquidity creates the oracle, an attacker can manipulate the pool price for a brief window and trigger the first update via a swap. Because firstUpdateCall bypasses the PERIOD requirement, the oracle average is computed over that short interval, which can be abused by any downstream logic relying on the oracle (e.g., valuations or liquidations)."
            },
            {
                "title": "Oracle update can divide by zero on first call in the same block as creation",
                "category": "oracle",
                "evidence": "timeElapsed is computed from blockTimestamp - blockTimestampLast and used as a divisor without a >0 check when firstUpdateCall is true.",
                "severity": "low",
                "locations": [
                    "contracts/src/swap/Oracle.sol:43",
                    "contracts/src/swap/Oracle.sol:48"
                ],
                "recommendation": "Guard against timeElapsed == 0 before dividing (e.g., return early or only update timestamps) to avoid a revert on same-block first update.",
                "exploit_scenario": "If the oracle is created and the first swap/update happens in the same block, blockTimestamp == blockTimestampLast and timeElapsed == 0. firstUpdateCall is true, so the division by timeElapsed reverts, causing the swap to fail and creating a one-block DoS for the first swap."
            },
            {
                "title": "Pair can be reinitialized by factory after deployment",
                "category": "access_control",
                "evidence": "initialize only checks msg.sender == factory and then overwrites token0/token1/fee without any initialization guard.",
                "severity": "low",
                "locations": [
                    "contracts/src/swap/OraclePair.sol:82"
                ],
                "recommendation": "Add an initialized flag (or require token0 == address(0)) to enforce single-use initialization.",
                "exploit_scenario": "initialize lacks a one-time guard; the factory can call it again to change token0/token1/fee for an existing pool. If the factory is compromised or upgradeable, an attacker could break pool accounting or disable swaps (e.g., set fee==10 without oracle), potentially trapping liquidity."
            },
            {
                "title": "Burn parameter order inconsistent between interface/documentation and implementation",
                "category": "other",
                "evidence": "IPairActions.burn declares (address to, uint256 liquidity, uint256 positionId) while OraclePair.burn is (address to, uint256 positionId, uint256 liquidity).",
                "severity": "low",
                "locations": [
                    "contracts/src/swap/interfaces/pair/IPairActions.sol:21",
                    "contracts/src/swap/OraclePair.sol:132"
                ],
                "recommendation": "Align parameter order/names across interface and implementation (or update docs and callers) to avoid mismatched arguments.",
                "exploit_scenario": "Integrators following the interface may call burn(to, liquidity, positionId), but OraclePair interprets the second argument as positionId and the third as liquidity. This can lead to burns targeting the wrong position or reverting, causing failed withdrawals or stuck liquidity."
            }
        ],
        "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
3
Total opcodes
6210
Flags
create_opcodes_present call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH3 0x000010
0000000c: JUMPI
0000000d: PUSH0
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH3 0x000134
0000001a: JUMPI
0000001b: PUSH0
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0xb1b9a7c5
00000026: GT
00000027: PUSH3 0x0000b7
0000002b: JUMPI
0000002c: DUP1
0000002d: PUSH4 0xddca3f43
00000032: GT
00000033: PUSH3 0x000077
00000037: JUMPI
00000038: DUP1
00000039: PUSH4 0xddca3f43
0000003e: EQ
0000003f: PUSH3 0x000324
00000043: JUMPI
00000044: DUP1
00000045: PUSH4 0xe0483c35
0000004a: EQ
0000004b: PUSH3 0x00034e
0000004f: JUMPI
00000050: DUP1
00000051: PUSH4 0xe680ea2c
00000056: EQ
00000057: PUSH3 0x000358
0000005b: JUMPI
0000005c: DUP1
0000005d: PUSH4 0xf5298aca
00000062: EQ
00000063: PUSH3 0x00036f
00000067: JUMPI
00000068: DUP1
00000069: PUSH4 0xfff6cae9
0000006e: EQ
0000006f: PUSH3 0x00039c
00000073: JUMPI
00000074: PUSH0
00000075: DUP1
00000076: REVERT
00000077: JUMPDEST
00000078: DUP1
00000079: PUSH4 0xb1b9a7c5
0000007e: EQ
0000007f: PUSH3 0x000251
00000083: JUMPI
00000084: DUP1
00000085: PUSH4 0xbc25cf77
0000008a: EQ
0000008b: PUSH3 0x000265
0000008f: JUMPI
00000090: DUP1
00000091: PUSH4 0xc1be6677
00000096: EQ
00000097: PUSH3 0x00027c
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0xc45a0155
000000a2: EQ
000000a3: PUSH3 0x0002e8
000000a7: JUMPI
000000a8: DUP1
000000a9: PUSH4 0xd21220a7
000000ae: EQ
000000af: PUSH3 0x000310
000000b3: JUMPI
000000b4: PUSH0
000000b5: DUP1
000000b6: REVERT
000000b7: JUMPDEST
000000b8: DUP1
000000b9: PUSH4 0x40c10f19
000000be: GT
000000bf: PUSH3 0x000103
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0x40c10f19
000000ca: EQ
000000cb: PUSH3 0x0001e9
000000cf: JUMPI
000000d0: DUP1
000000d1: PUSH4 0x5247ab05
000000d6: EQ
000000d7: PUSH3 0x000200
000000db: JUMPI
000000dc: DUP1
000000dd: PUSH4 0x5a3d5493
000000e2: EQ
000000e3: PUSH3 0x000217
000000e7: JUMPI
000000e8: DUP1
000000e9: PUSH4 0x6d9a640a
000000ee: EQ
000000ef: PUSH3 0x000221
000000f3: JUMPI
000000f4: DUP1
000000f5: PUSH4 0x7ebef529
000000fa: EQ
000000fb: PUSH3 0x00023a
000000ff: JUMPI
00000100: PUSH0
00000101: DUP1
00000102: REVERT
00000103: JUMPDEST
00000104: DUP1
00000105: PUSH4 0x0902f1ac
0000010a: EQ
0000010b: PUSH3 0x000138
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x0dfe1681
00000116: EQ
00000117: PUSH3 0x000173
0000011b: JUMPI
0000011c: DUP1
0000011d: PUSH4 0x18160ddd
00000122: EQ
00000123: PUSH3 0x0001a0
00000127: JUMPI
00000128: DUP1
00000129: PUSH4 0x1f9d4db2
0000012e: EQ
0000012f: PUSH3 0x0001b9
00000133: JUMPI
00000134: JUMPDEST
00000135: PUSH0
00000136: DUP1
00000137: REVERT
00000138: JUMPDEST
00000139: PUSH3 0x000142
0000013d: PUSH3 0x0003a6
00000141: JUMP
00000142: JUMPDEST
00000143: PUSH1 0x40
00000145: DUP1
00000146: MLOAD
00000147: PUSH1 0x01
00000149: PUSH1 0x01
0000014b: PUSH1 0x70
0000014d: SHL
0000014e: SUB
0000014f: SWAP5
00000150: DUP6
00000151: AND
00000152: DUP2
00000153: MSTORE
00000154: SWAP4
00000155: SWAP1
00000156: SWAP3
00000157: AND
00000158: PUSH1 0x20
0000015a: DUP5
0000015b: ADD
0000015c: MSTORE
0000015d: PUSH4 0xffffffff
00000162: AND
00000163: SWAP1
00000164: DUP3
00000165: ADD
00000166: MSTORE
00000167: PUSH1 0x60
00000169: ADD
0000016a: JUMPDEST
0000016b: PUSH1 0x40
0000016d: MLOAD
0000016e: DUP1
0000016f: SWAP2
00000170: SUB
00000171: SWAP1
00000172: RETURN
00000173: JUMPDEST
00000174: PUSH1 0x01
00000176: SLOAD
00000177: PUSH3 0x000187
0000017b: SWAP1
0000017c: PUSH1 0x01
0000017e: PUSH1 0x01
00000180: PUSH1 0xa0
00000182: SHL
00000183: SUB
00000184: AND
00000185: DUP2
00000186: JUMP
00000187: JUMPDEST
00000188: PUSH1 0x40
0000018a: MLOAD
0000018b: PUSH1 0x01
0000018d: PUSH1 0x01
0000018f: PUSH1 0xa0
00000191: SHL
00000192: SUB
00000193: SWAP1
00000194: SWAP2
00000195: AND
00000196: DUP2
00000197: MSTORE
00000198: PUSH1 0x20
0000019a: ADD
0000019b: PUSH3 0x00016a
0000019f: JUMP
000001a0: JUMPDEST
000001a1: PUSH3 0x0001aa
000001a5: PUSH1 0x03
000001a7: SLOAD
000001a8: DUP2
000001a9: JUMP
000001aa: JUMPDEST
000001ab: PUSH1 0x40
000001ad: MLOAD
000001ae: SWAP1
000001af: DUP2
000001b0: MSTORE
000001b1: PUSH1 0x20
000001b3: ADD
000001b4: PUSH3 0x00016a
000001b8: JUMP
000001b9: JUMPDEST
000001ba: PUSH3 0x0001d0
000001be: PUSH3 0x0001ca
000001c2: CALLDATASIZE
000001c3: PUSH1 0x04
000001c5: PUSH3 0x001c5e
000001c9: JUMP
000001ca: JUMPDEST
000001cb: PUSH3 0x0003d0
000001cf: JUMP
000001d0: JUMPDEST
000001d1: PUSH1 0x40
000001d3: MLOAD
000001d4: PUSH1 0x01
000001d6: PUSH1 0x01
000001d8: PUSH1 0x80
000001da: SHL
000001db: SUB
000001dc: SWAP1
000001dd: SWAP2
000001de: AND
000001df: DUP2
000001e0: MSTORE
000001e1: PUSH1 0x20
000001e3: ADD
000001e4: PUSH3 0x00016a
000001e8: JUMP
000001e9: JUMPDEST
000001ea: PUSH3 0x0001aa
000001ee: PUSH3 0x0001fa
000001f2: CALLDATASIZE
000001f3: PUSH1 0x04
000001f5: PUSH3 0x001c5e
000001f9: JUMP
000001fa: JUMPDEST
000001fb: PUSH3 0x000403
000001ff: JUMP
00000200: JUMPDEST
00000201: PUSH3 0x0001aa
00000205: PUSH3 0x000211
00000209: CALLDATASIZE
0000020a: PUSH1 0x04
0000020c: PUSH3 0x001c5e
00000210: JUMP
00000211: JUMPDEST
00000212: PUSH3 0x000810
00000216: JUMP
00000217: JUMPDEST
00000218: PUSH3 0x0001aa
0000021c: PUSH1 0x05
0000021e: SLOAD
0000021f: DUP2
00000220: JUMP
00000221: JUMPDEST
00000222: PUSH3 0x000238
00000226: PUSH3 0x000232
0000022a: CALLDATASIZE
0000022b: PUSH1 0x04
0000022d: PUSH3 0x001c89
00000231: JUMP
00000232: JUMPDEST
00000233: PUSH3 0x00098d
00000237: JUMP
00000238: JUMPDEST
00000239: STOP
0000023a: JUMPDEST
0000023b: PUSH3 0x000238
0000023f: PUSH3 0x00024b
00000243: CALLDATASIZE
00000244: PUSH1 0x04
00000246: PUSH3 0x001cbe
0000024a: JUMP
0000024b: JUMPDEST
0000024c: PUSH3 0x000edf
00000250: JUMP
00000251: JUMPDEST
00000252: PUSH1 0x06
00000254: SLOAD
00000255: PUSH3 0x000187
00000259: SWAP1
0000025a: PUSH1 0x01
0000025c: PUSH1 0x01
0000025e: PUSH1 0xa0
00000260: SHL
00000261: SUB
00000262: AND
00000263: DUP2
00000264: JUMP
00000265: JUMPDEST
00000266: PUSH3 0x000238
0000026a: PUSH3 0x000276
0000026e: CALLDATASIZE
0000026f: PUSH1 0x04
00000271: PUSH3 0x001d0e
00000275: JUMP
00000276: JUMPDEST
00000277: PUSH3 0x000f6f
0000027b: JUMP
0000027c: JUMPDEST
0000027d: PUSH3 0x0002c2
00000281: PUSH3 0x00028d
00000285: CALLDATASIZE
00000286: PUSH1 0x04
00000288: PUSH3 0x001c5e
0000028c: JUMP
0000028d: JUMPDEST
0000028e: PUSH1 0x09
00000290: PUSH1 0x20
00000292: SWAP1
00000293: DUP2
00000294: MSTORE
00000295: PUSH0
00000296: SWAP3
00000297: DUP4
00000298: MSTORE
00000299: PUSH1 0x40
0000029b: DUP1
0000029c: DUP5
0000029d: KECCAK256
0000029e: SWAP1
0000029f: SWAP2
000002a0: MSTORE
000002a1: SWAP1
000002a2: DUP3
000002a3: MSTORE
000002a4: SWAP1
000002a5: KECCAK256
000002a6: DUP1
000002a7: SLOAD
000002a8: PUSH1 0x01
000002aa: DUP3
000002ab: ADD
000002ac: SLOAD
000002ad: PUSH1 0x02
000002af: SWAP1
000002b0: SWAP3
000002b1: ADD
000002b2: SLOAD
000002b3: PUSH1 0x01
000002b5: PUSH1 0x01
000002b7: PUSH1 0x80
000002b9: SHL
000002ba: SUB
000002bb: SWAP1
000002bc: SWAP2
000002bd: AND
000002be: SWAP2
000002bf: SWAP1
000002c0: DUP4
000002c1: JUMP
000002c2: JUMPDEST
000002c3: PUSH1 0x40
000002c5: DUP1
000002c6: MLOAD
000002c7: PUSH1 0x01
000002c9: PUSH1 0x01
000002cb: PUSH1 0x80
000002cd: SHL
000002ce: SUB
000002cf: SWAP1
000002d0: SWAP5
000002d1: AND
000002d2: DUP5
000002d3: MSTORE
000002d4: PUSH1 0x20
000002d6: DUP5
000002d7: ADD
000002d8: SWAP3
000002d9: SWAP1
000002da: SWAP3
000002db: MSTORE
000002dc: SWAP1
000002dd: DUP3
000002de: ADD
000002df: MSTORE
000002e0: PUSH1 0x60
000002e2: ADD
000002e3: PUSH3 0x00016a
000002e7: JUMP
000002e8: JUMPDEST
000002e9: PUSH3 0x000187
000002ed: PUSH32 0x000000000000000000000000acff9eee0a5522000e7141b77107359a6462e8d2
0000030e: DUP2
0000030f: JUMP
00000310: JUMPDEST
00000311: PUSH1 0x02
00000313: SLOAD
00000314: PUSH3 0x000187
00000318: SWAP1
00000319: PUSH1 0x01
0000031b: PUSH1 0x01
0000031d: PUSH1 0xa0
0000031f: SHL
00000320: SUB
00000321: AND
00000322: DUP2
00000323: JUMP
00000324: JUMPDEST
00000325: PUSH1 0x02
00000327: SLOAD
00000328: PUSH3 0x00033a
0000032c: SWAP1
0000032d: PUSH1 0x01
0000032f: PUSH1 0xa0
00000331: SHL
00000332: SWAP1
00000333: DIV
00000334: PUSH2 0xffff
00000337: AND
00000338: DUP2
00000339: JUMP
0000033a: JUMPDEST
0000033b: PUSH1 0x40
0000033d: MLOAD
0000033e: PUSH2 0xffff
00000341: SWAP1
00000342: SWAP2
00000343: AND
00000344: DUP2
00000345: MSTORE
00000346: PUSH1 0x20
00000348: ADD
00000349: PUSH3 0x00016a
0000034d: JUMP
0000034e: JUMPDEST
0000034f: PUSH3 0x0001aa
00000353: PUSH1 0x04
00000355: SLOAD
00000356: DUP2
00000357: JUMP
00000358: JUMPDEST
00000359: PUSH3 0x0001aa
0000035d: PUSH3 0x000369
00000361: CALLDATASIZE
00000362: PUSH1 0x04
00000364: PUSH3 0x001c5e
00000368: JUMP
00000369: JUMPDEST
0000036a: PUSH3 0x0010db
0000036e: JUMP
0000036f: JUMPDEST
00000370: PUSH3 0x000386
00000374: PUSH3 0x000380
00000378: CALLDATASIZE
00000379: PUSH1 0x04
0000037b: PUSH3 0x001d2a
0000037f: JUMP
00000380: JUMPDEST
00000381: PUSH3 0x00112d
00000385: JUMP
00000386: JUMPDEST
00000387: PUSH1 0x40
00000389: DUP1
0000038a: MLOAD
0000038b: SWAP3
0000038c: DUP4
0000038d: MSTORE
0000038e: PUSH1 0x20
00000390: DUP4
00000391: ADD
00000392: SWAP2
00000393: SWAP1
00000394: SWAP2
00000395: MSTORE
00000396: ADD
00000397: PUSH3 0x00016a
0000039b: JUMP
0000039c: JUMPDEST
0000039d: PUSH3 0x000238
000003a1: PUSH3 0x001610
000003a5: JUMP
000003a6: JUMPDEST
000003a7: PUSH1 0x07
000003a9: SLOAD
000003aa: PUSH1 0x01
000003ac: PUSH1 0x01
000003ae: PUSH1 0x70
000003b0: SHL
000003b1: SUB
000003b2: DUP1
000003b3: DUP3
000003b4: AND
000003b5: SWAP3
000003b6: PUSH1 0x01
000003b8: PUSH1 0x70
000003ba: SHL
000003bb: DUP4
000003bc: DIV
000003bd: SWAP1
000003be: SWAP2
000003bf: AND
000003c0: SWAP2
000003c1: PUSH1 0x01
000003c3: PUSH1 0xe0
000003c5: SHL
000003c6: SWAP1
000003c7: DIV
000003c8: PUSH4 0xffffffff
000003cd: AND
000003ce: SWAP1
000003cf: JUMP
000003d0: JUMPDEST
000003d1: PUSH1 0x01
000003d3: PUSH1 0x01
000003d5: PUSH1 0xa0
000003d7: SHL
000003d8: SUB
000003d9: DUP3
000003da: AND
000003db: PUSH0
000003dc: SWAP1
000003dd: DUP2
000003de: MSTORE
000003df: PUSH1 0x09
000003e1: PUSH1 0x20
000003e3: SWAP1
000003e4: DUP2
000003e5: MSTORE
000003e6: PUSH1 0x40
000003e8: DUP1
000003e9: DUP4
000003ea: KECCAK256
000003eb: DUP5
000003ec: DUP5
000003ed: MSTORE
000003ee: SWAP1
000003ef: SWAP2
000003f0: MSTORE
000003f1: SWAP1
000003f2: KECCAK256
000003f3: SLOAD
000003f4: PUSH1 0x01
000003f6: PUSH1 0x01
000003f8: PUSH1 0x80
000003fa: SHL
000003fb: SUB
000003fc: AND
000003fd: JUMPDEST
000003fe: SWAP3
000003ff: SWAP2
00000400: POP
00000401: POP
00000402: JUMP
00000403: JUMPDEST
00000404: PUSH0
00000405: DUP1
00000406: SLOAD
00000407: PUSH1 0x01
00000409: EQ
0000040a: PUSH3 0x000431
0000040e: JUMPI
0000040f: PUSH1 0x40
00000411: MLOAD
00000412: PUSH3 0x461bcd
00000416: PUSH1 0xe5
00000418: SHL
00000419: DUP2
0000041a: MSTORE
0000041b: PUSH1 0x04
0000041d: ADD
0000041e: PUSH3 0x000428
00000422: SWAP1
00000423: PUSH3 0x001d5d
00000427: JUMP
00000428: JUMPDEST
00000429: PUSH1 0x40
0000042b: MLOAD
0000042c: DUP1
0000042d: SWAP2
0000042e: SUB
0000042f: SWAP1
00000430: REVERT
00000431: JUMPDEST
00000432: PUSH1 0x02
00000434: PUSH0
00000435: SWAP1
00000436: DUP2
00000437: SSTORE
00000438: PUSH1 0x01
0000043a: PUSH1 0x01
0000043c: PUSH1 0xa0
0000043e: SHL
0000043f: SUB
00000440: DUP5
00000441: AND
00000442: DUP2
00000443: MSTORE
00000444: PUSH1 0x09
00000446: PUSH1 0x20
00000448: SWAP1
00000449: DUP2
0000044a: MSTORE
0000044b: PUSH1 0x40
0000044d: DUP1
0000044e: DUP4
0000044f: KECCAK256
00000450: DUP6
00000451: DUP5
00000452: MSTORE
00000453: SWAP1
00000454: SWAP2
00000455: MSTORE
00000456: SWAP1
00000457: KECCAK256
00000458: SLOAD
00000459: DUP4
0000045a: SWAP1
0000045b: DUP4
0000045c: SWAP1
0000045d: PUSH1 0x01
0000045f: PUSH1 0x01
00000461: PUSH1 0x80
00000463: SHL
00000464: SUB
00000465: AND
00000466: ISZERO
00000467: PUSH3 0x0004f1
0000046b: JUMPI
0000046c: PUSH0
0000046d: PUSH3 0x00047b
00000471: DUP4
00000472: DUP4
00000473: PUSH1 0x08
00000475: SLOAD
00000476: PUSH3 0x00174c
0000047a: JUMP
0000047b: JUMPDEST
0000047c: SWAP1
0000047d: POP
0000047e: DUP1
0000047f: ISZERO
00000480: PUSH3 0x0004ea
00000484: JUMPI
00000485: PUSH1 0x01
00000487: PUSH1 0x01
00000489: PUSH1 0xa0
0000048b: SHL
0000048c: SUB
0000048d: DUP4
0000048e: AND
0000048f: PUSH0
00000490: SWAP1
00000491: DUP2
00000492: MSTORE
00000493: PUSH1 0x09
00000495: PUSH1 0x20
00000497: SWAP1
00000498: DUP2
00000499: MSTORE
0000049a: PUSH1 0x40
0000049c: DUP1
0000049d: DUP4
0000049e: KECCAK256
0000049f: DUP6
000004a0: DUP5
000004a1: MSTORE
000004a2: SWAP1
000004a3: SWAP2
000004a4: MSTORE
000004a5: DUP2
000004a6: KECCAK256
000004a7: PUSH1 0x01
000004a9: ADD
000004aa: DUP1
000004ab: SLOAD
000004ac: DUP4
000004ad: SWAP3
000004ae: SWAP1
000004af: PUSH3 0x0004bb
000004b3: SWAP1
000004b4: DUP5
000004b5: SWAP1
000004b6: PUSH3 0x001d95
000004ba: JUMP
000004bb: JUMPDEST
000004bc: SWAP1
000004bd: SWAP2
000004be: SSTORE
000004bf: POP
000004c0: POP
000004c1: PUSH1 0x08
000004c3: SLOAD
000004c4: PUSH1 0x01
000004c6: PUSH1 0x01
000004c8: PUSH1 0xa0
000004ca: SHL
000004cb: SUB
000004cc: DUP5
000004cd: AND
000004ce: PUSH0
000004cf: SWAP1
000004d0: DUP2
000004d1: MSTORE
000004d2: PUSH1 0x09
000004d4: PUSH1 0x20
000004d6: SWAP1
000004d7: DUP2
000004d8: MSTORE
000004d9: PUSH1 0x40
000004db: DUP1
000004dc: DUP4
000004dd: KECCAK256
000004de: DUP7
000004df: DUP5
000004e0: MSTORE
000004e1: SWAP1
000004e2: SWAP2
000004e3: MSTORE
000004e4: SWAP1
000004e5: KECCAK256
000004e6: PUSH1 0x02
000004e8: ADD
000004e9: SSTORE
000004ea: JUMPDEST
000004eb: POP
000004ec: PUSH3 0x00051b
000004f0: JUMP
000004f1: JUMPDEST
000004f2: PUSH1 0x08
000004f4: SLOAD
000004f5: PUSH1 0x01
000004f7: PUSH1 0x01
000004f9: PUSH1 0xa0
000004fb: SHL
000004fc: SUB
000004fd: DUP4
000004fe: AND
000004ff: PUSH0
00000500: SWAP1
00000501: DUP2
00000502: MSTORE
00000503: PUSH1 0x09
00000505: PUSH1 0x20
00000507: SWAP1
00000508: DUP2
00000509: MSTORE
0000050a: PUSH1 0x40
0000050c: DUP1
0000050d: DUP4
0000050e: KECCAK256
0000050f: DUP6
00000510: DUP5
00000511: MSTORE
00000512: SWAP1
00000513: SWAP2
00000514: MSTORE
00000515: SWAP1
00000516: KECCAK256
00000517: PUSH1 0x02
00000519: ADD
0000051a: SSTORE
0000051b: JUMPDEST
0000051c: PUSH0
0000051d: DUP1
0000051e: PUSH3 0x000527
00000522: PUSH3 0x0003a6
00000526: JUMP
00000527: JUMPDEST
00000528: POP
00000529: PUSH1 0x04
0000052b: DUP1
0000052c: SLOAD
0000052d: PUSH1 0x01
0000052f: SLOAD
00000530: PUSH1 0x40
00000532: MLOAD
00000533: PUSH4 0x70a08231
00000538: PUSH1 0xe0
0000053a: SHL
0000053b: DUP2
0000053c: MSTORE
0000053d: ADDRESS
0000053e: SWAP4
0000053f: DUP2
00000540: ADD
00000541: SWAP4
00000542: SWAP1
00000543: SWAP4
00000544: MSTORE
00000545: SWAP4
00000546: SWAP6
00000547: POP
00000548: SWAP2
00000549: SWAP4
0000054a: POP
0000054b: PUSH0
0000054c: SWAP3
0000054d: PUSH1 0x01
0000054f: PUSH1 0x01
00000551: PUSH1 0xa0
00000553: SHL
00000554: SUB
00000555: AND
00000556: SWAP1
00000557: PUSH4 0x70a08231
0000055c: SWAP1
0000055d: PUSH1 0x24
0000055f: ADD
00000560: PUSH1 0x20
00000562: PUSH1 0x40
00000564: MLOAD
00000565: DUP1
00000566: DUP4
00000567: SUB
00000568: DUP2
00000569: DUP7
0000056a: GAS
0000056b: STATICCALL
0000056c: ISZERO
0000056d: DUP1
0000056e: ISZERO
0000056f: PUSH3 0x00057b
00000573: JUMPI
00000574: RETURNDATASIZE
00000575: PUSH0
00000576: DUP1
00000577: RETURNDATACOPY
00000578: RETURNDATASIZE
00000579: PUSH0
0000057a: REVERT
0000057b: JUMPDEST
0000057c: POP
0000057d: POP
0000057e: POP
0000057f: POP
00000580: PUSH1 0x40
00000582: MLOAD
00000583: RETURNDATASIZE
00000584: PUSH1 0x1f
00000586: NOT
00000587: PUSH1 0x1f
00000589: DUP3
0000058a: ADD
0000058b: AND
0000058c: DUP3
0000058d: ADD
0000058e: DUP1
0000058f: PUSH1 0x40
00000591: MSTORE
00000592: POP
00000593: DUP2
00000594: ADD
00000595: SWAP1
00000596: PUSH3 0x0005a1
0000059a: SWAP2
0000059b: SWAP1
0000059c: PUSH3 0x001dab
000005a0: JUMP
000005a1: JUMPDEST
000005a2: PUSH3 0x0005ad
000005a6: SWAP2
000005a7: SWAP1
000005a8: PUSH3 0x001dc3
000005ac: JUMP
000005ad: JUMPDEST
000005ae: PUSH1 0x02
000005b0: SLOAD
000005b1: PUSH1 0x40
000005b3: MLOAD
000005b4: PUSH4 0x70a08231
000005b9: PUSH1 0xe0
000005bb: SHL
000005bc: DUP2
000005bd: MSTORE
000005be: ADDRESS
000005bf: PUSH1 0x04
000005c1: DUP3
000005c2: ADD
000005c3: MSTORE
000005c4: SWAP2
000005c5: SWAP3
000005c6: POP
000005c7: PUSH0
000005c8: SWAP2
000005c9: PUSH1 0x01
000005cb: PUSH1 0x01
000005cd: PUSH1 0xa0
000005cf: SHL
000005d0: SUB
000005d1: SWAP1
000005d2: SWAP2
000005d3: AND
000005d4: SWAP1
000005d5: PUSH4 0x70a08231
000005da: SWAP1
000005db: PUSH1 0x24
000005dd: ADD
000005de: PUSH1 0x20
000005e0: PUSH1 0x40
000005e2: MLOAD
000005e3: DUP1
000005e4: DUP4
000005e5: SUB
000005e6: DUP2
000005e7: DUP7
000005e8: GAS
000005e9: STATICCALL
000005ea: ISZERO
000005eb: DUP1
000005ec: ISZERO
000005ed: PUSH3 0x0005f9
000005f1: JUMPI
000005f2: RETURNDATASIZE
000005f3: PUSH0
000005f4: DUP1
000005f5: RETURNDATACOPY
000005f6: RETURNDATASIZE
000005f7: PUSH0
000005f8: REVERT
000005f9: JUMPDEST
000005fa: POP
000005fb: POP
000005fc: POP
000005fd: POP
000005fe: PUSH1 0x40
00000600: MLOAD
00000601: RETURNDATASIZE
00000602: PUSH1 0x1f
00000604: NOT
00000605: PUSH1 0x1f
00000607: DUP3
00000608: ADD
00000609: AND
0000060a: DUP3
0000060b: ADD
0000060c: DUP1
0000060d: PUSH1 0x40
0000060f: MSTORE
00000610: POP
00000611: DUP2
00000612: ADD
00000613: SWAP1
00000614: PUSH3 0x00061f
00000618: SWAP2
00000619: SWAP1
0000061a: PUSH3 0x001dab
0000061e: JUMP
0000061f: JUMPDEST
00000620: SWAP1
00000621: POP
00000622: PUSH0
00000623: PUSH3 0x000637
00000627: PUSH1 0x01
00000629: PUSH1 0x01
0000062b: PUSH1 0x70
0000062d: SHL
0000062e: SUB
0000062f: DUP7
00000630: AND
00000631: DUP5
00000632: PUSH3 0x001dc3
00000636: JUMP
00000637: JUMPDEST
00000638: SWAP1
00000639: POP
0000063a: PUSH0
0000063b: PUSH3 0x00064f
0000063f: PUSH1 0x01
00000641: PUSH1 0x01
00000643: PUSH1 0x70
00000645: SHL
00000646: SUB
00000647: DUP7
00000648: AND
00000649: DUP5
0000064a: PUSH3 0x001dc3
0000064e: JUMP
0000064f: JUMPDEST
00000650: PUSH1 0x03
00000652: SLOAD
00000653: SWAP1
00000654: SWAP2
00000655: POP
00000656: PUSH0
00000657: SWAP1
00000658: DUP1
00000659: DUP3
0000065a: SUB
0000065b: PUSH3 0x000692
0000065f: JUMPI
00000660: PUSH2 0x03e8
00000663: PUSH3 0x000678
00000667: PUSH3 0x000672
0000066b: DUP6
0000066c: DUP8
0000066d: PUSH3 0x001dd9
00000671: JUMP
00000672: JUMPDEST
00000673: PUSH3 0x0017d2
00000677: JUMP
00000678: JUMPDEST
00000679: PUSH3 0x000684
0000067d: SWAP2
0000067e: SWAP1
0000067f: PUSH3 0x001dc3
00000683: JUMP
00000684: JUMPDEST
00000685: PUSH2 0x03e8
00000688: PUSH1 0x03
0000068a: SSTORE
0000068b: SWAP2
0000068c: POP
0000068d: PUSH3 0x0006eb
00000691: JUMP
00000692: JUMPDEST
00000693: PUSH3 0x0006e8
00000697: DUP9
00000698: PUSH1 0x01
0000069a: PUSH1 0x01
0000069c: PUSH1 0x70
0000069e: SHL
0000069f: SUB
000006a0: AND
000006a1: PUSH1 0x03
000006a3: SLOAD
000006a4: DUP7
000006a5: PUSH3 0x0006b0
000006a9: SWAP2
000006aa: SWAP1
000006ab: PUSH3 0x001dd9
000006af: JUMP
000006b0: JUMPDEST
000006b1: PUSH3 0x0006bc
000006b5: SWAP2
000006b6: SWAP1
000006b7: PUSH3 0x001e07
000006bb: JUMP
000006bc: JUMPDEST
000006bd: DUP9
000006be: PUSH1 0x01
000006c0: PUSH1 0x01
000006c2: PUSH1 0x70
000006c4: SHL
000006c5: SUB
000006c6: AND
000006c7: PUSH1 0x03
000006c9: SLOAD
000006ca: DUP7
000006cb: PUSH3 0x0006d6
000006cf: SWAP2
000006d0: SWAP1
000006d1: PUSH3 0x001dd9
000006d5: JUMP
000006d6: JUMPDEST
000006d7: PUSH3 0x0006e2
000006db: SWAP2
000006dc: SWAP1
000006dd: PUSH3 0x001e07
000006e1: JUMP
000006e2: JUMPDEST
000006e3: PUSH3 0x00184e
000006e7: JUMP
000006e8: JUMPDEST
000006e9: SWAP2
000006ea: POP
000006eb: JUMPDEST
000006ec: DUP2
000006ed: PUSH0
000006ee: SUB
000006ef: PUSH3 0x00070c
000006f3: JUMPI
000006f4: PUSH1 0x40
000006f6: MLOAD
000006f7: PUSH4 0x3489be75
000006fc: PUSH1 0xe2
000006fe: SHL
000006ff: DUP2
00000700: MSTORE
00000701: PUSH1 0x04
00000703: ADD
00000704: PUSH1 0x40
00000706: MLOAD
00000707: DUP1
00000708: SWAP2
00000709: SUB
0000070a: SWAP1
0000070b: REVERT
0000070c: JUMPDEST
0000070d: PUSH1 0x01
0000070f: PUSH1 0x01
00000711: PUSH1 0xa0
00000713: SHL
00000714: SUB
00000715: DUP14
00000716: AND
00000717: PUSH0
00000718: SWAP1
00000719: DUP2
0000071a: MSTORE
0000071b: PUSH1 0x09
0000071d: PUSH1 0x20
0000071f: SWAP1
00000720: DUP2
00000721: MSTORE
00000722: PUSH1 0x40
00000724: DUP1
00000725: DUP4
00000726: KECCAK256
00000727: DUP16
00000728: DUP5
00000729: MSTORE
0000072a: SWAP1
0000072b: SWAP2
0000072c: MSTORE
0000072d: DUP2
0000072e: KECCAK256
0000072f: DUP1
00000730: SLOAD
00000731: DUP5
00000732: SWAP3
00000733: SWAP1
00000734: PUSH3 0x000749
00000738: SWAP1
00000739: DUP5
0000073a: SWAP1
0000073b: PUSH1 0x01
0000073d: PUSH1 0x01
0000073f: PUSH1 0x80
00000741: SHL
00000742: SUB
00000743: AND
00000744: PUSH3 0x001e1d
00000748: JUMP
00000749: JUMPDEST
0000074a: SWAP3
0000074b: POP
0000074c: PUSH2 0x0100
0000074f: EXP
00000750: DUP2
00000751: SLOAD
00000752: DUP2
00000753: PUSH1 0x01
00000755: PUSH1 0x01
00000757: PUSH1 0x80
00000759: SHL
0000075a: SUB
0000075b: MUL
0000075c: NOT
0000075d: AND
0000075e: SWAP1
0000075f: DUP4
00000760: PUSH1 0x01
00000762: PUSH1 0x01
00000764: PUSH1 0x80
00000766: SHL
00000767: SUB
00000768: AND
00000769: MUL
0000076a: OR
0000076b: SWAP1
0000076c: SSTORE
0000076d: POP
0000076e: DUP2
0000076f: PUSH1 0x03
00000771: SLOAD
00000772: PUSH3 0x00077d
00000776: SWAP2
00000777: SWAP1
00000778: PUSH3 0x001d95
0000077c: JUMP
0000077d: JUMPDEST
0000077e: PUSH1 0x03
00000780: SSTORE
00000781: PUSH3 0x00078e
00000785: DUP7
00000786: DUP7
00000787: DUP11
00000788: DUP11
00000789: PUSH3 0x001867
0000078d: JUMP
0000078e: JUMPDEST
0000078f: DUP1
00000790: PUSH0
00000791: SUB
00000792: PUSH3 0x0007b6
00000796: JUMPI
00000797: PUSH1 0x02
00000799: SLOAD
0000079a: PUSH1 0x01
0000079c: PUSH1 0xa0
0000079e: SHL
0000079f: SWAP1
000007a0: DIV
000007a1: PUSH2 0xffff
000007a4: AND
000007a5: PUSH1 0x0a
000007a7: SUB
000007a8: PUSH3 0x0007b6
000007ac: JUMPI
000007ad: PUSH3 0x0007b6
000007b1: PUSH3 0x0019e7
000007b5: JUMP
000007b6: JUMPDEST
000007b7: PUSH1 0x40
000007b9: DUP1
000007ba: MLOAD
000007bb: DUP6
000007bc: DUP2
000007bd: MSTORE
000007be: PUSH1 0x20
000007c0: DUP2
000007c1: ADD
000007c2: DUP6
000007c3: SWAP1
000007c4: MSTORE
000007c5: PUSH1 0x01
000007c7: PUSH1 0x01
000007c9: PUSH1 0xa0
000007cb: SHL
000007cc: SUB
000007cd: DUP16
000007ce: AND
000007cf: SWAP2
000007d0: PUSH32 0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f
000007f1: SWAP2
000007f2: ADD
000007f3: PUSH1 0x40
000007f5: MLOAD
000007f6: DUP1
000007f7: SWAP2
000007f8: SUB
000007f9: SWAP1
000007fa: LOG2
000007fb: POP
000007fc: SWAP9
000007fd: POP
000007fe: POP
000007ff: POP
00000800: POP
00000801: POP
00000802: POP
00000803: POP
00000804: JUMPDEST
00000805: POP
00000806: POP
00000807: PUSH1 0x01
00000809: PUSH0
0000080a: SSTORE
0000080b: SWAP3
0000080c: SWAP2
0000080d: POP
0000080e: POP
0000080f: JUMP
00000810: JUMPDEST
00000811: PUSH0
00000812: DUP1
00000813: SLOAD
00000814: PUSH1 0x01
00000816: EQ
00000817: PUSH3 0x000835
0000081b: JUMPI
0000081c: PUSH1 0x40
0000081e: MLOAD
0000081f: PUSH3 0x461bcd
00000823: PUSH1 0xe5
00000825: SHL
00000826: DUP2
00000827: MSTORE
00000828: PUSH1 0x04
0000082a: ADD
0000082b: PUSH3 0x000428
0000082f: SWAP1
00000830: PUSH3 0x001d5d
00000834: JUMP
00000835: JUMPDEST
00000836: PUSH1 0x02
00000838: PUSH0
00000839: SWAP1
0000083a: DUP2
0000083b: SSTORE
0000083c: CALLER
0000083d: DUP1
0000083e: DUP3
0000083f: MSTORE
00000840: PUSH1 0x09
00000842: PUSH1 0x20
00000844: SWAP1
00000845: DUP2
00000846: MSTORE
00000847: PUSH1 0x40
00000849: DUP1
0000084a: DUP5
0000084b: KECCAK256
0000084c: DUP7
0000084d: DUP6
0000084e: MSTORE
0000084f: SWAP1
00000850: SWAP2
00000851: MSTORE
00000852: SWAP1
00000853: SWAP2
00000854: KECCAK256
00000855: SLOAD
00000856: DUP4
00000857: SWAP1
00000858: PUSH1 0x01
0000085a: PUSH1 0x01
0000085c: PUSH1 0x80
0000085e: SHL
0000085f: SUB
00000860: AND
00000861: ISZERO
00000862: PUSH3 0x0008ec
00000866: JUMPI
00000867: PUSH0
00000868: PUSH3 0x000876
0000086c: DUP4
0000086d: DUP4
0000086e: PUSH1 0x08
00000870: SLOAD
00000871: PUSH3 0x00174c
00000875: JUMP
00000876: JUMPDEST
00000877: SWAP1
00000878: POP
00000879: DUP1
0000087a: ISZERO
0000087b: PUSH3 0x0008e5
0000087f: JUMPI
00000880: PUSH1 0x01
00000882: PUSH1 0x01
00000884: PUSH1 0xa0
00000886: SHL
00000887: SUB
00000888: DUP4
00000889: AND
0000088a: PUSH0
0000088b: SWAP1
0000088c: DUP2
0000088d: MSTORE
0000088e: PUSH1 0x09
00000890: PUSH1 0x20
00000892: SWAP1
00000893: DUP2
00000894: MSTORE
00000895: PUSH1 0x40
00000897: DUP1
00000898: DUP4
00000899: KECCAK256
0000089a: DUP6
0000089b: DUP5
0000089c: MSTORE
0000089d: SWAP1
0000089e: SWAP2
0000089f: MSTORE
000008a0: DUP2
000008a1: KECCAK256
000008a2: PUSH1 0x01
000008a4: ADD
000008a5: DUP1
000008a6: SLOAD
000008a7: DUP4
000008a8: SWAP3
000008a9: SWAP1
000008aa: PUSH3 0x0008b6
000008ae: SWAP1
000008af: DUP5
000008b0: SWAP1
000008b1: PUSH3 0x001d95
000008b5: JUMP
000008b6: JUMPDEST
000008b7: SWAP1
000008b8: SWAP2
000008b9: SSTORE
000008ba: POP
000008bb: POP
000008bc: PUSH1 0x08
000008be: SLOAD
000008bf: PUSH1 0x01
000008c1: PUSH1 0x01
000008c3: PUSH1 0xa0
000008c5: SHL
000008c6: SUB
000008c7: DUP5
000008c8: AND
000008c9: PUSH0
000008ca: SWAP1
000008cb: DUP2
000008cc: MSTORE
000008cd: PUSH1 0x09
000008cf: PUSH1 0x20
000008d1: SWAP1
000008d2: DUP2
000008d3: MSTORE
000008d4: PUSH1 0x40
000008d6: DUP1
000008d7: DUP4
000008d8: KECCAK256
000008d9: DUP7
000008da: DUP5
000008db: MSTORE
000008dc: SWAP1
000008dd: SWAP2
000008de: MSTORE
000008df: SWAP1
000008e0: KECCAK256
000008e1: PUSH1 0x02
000008e3: ADD
000008e4: SSTORE
000008e5: JUMPDEST
000008e6: POP
000008e7: PUSH3 0x000916
000008eb: JUMP
000008ec: JUMPDEST
000008ed: PUSH1 0x08
000008ef: SLOAD
000008f0: PUSH1 0x01
000008f2: PUSH1 0x01
000008f4: PUSH1 0xa0
000008f6: SHL
000008f7: SUB
000008f8: DUP4
000008f9: AND
000008fa: PUSH0
000008fb: SWAP1
000008fc: DUP2
000008fd: MSTORE
000008fe: PUSH1 0x09
00000900: PUSH1 0x20
00000902: SWAP1
00000903: DUP2
00000904: MSTORE
00000905: PUSH1 0x40
00000907: DUP1
00000908: DUP4
00000909: KECCAK256
0000090a: DUP6
0000090b: DUP5
0000090c: MSTORE
0000090d: SWAP1
0000090e: SWAP2
0000090f: MSTORE
00000910: SWAP1
00000911: KECCAK256
00000912: PUSH1 0x02
00000914: ADD
00000915: SSTORE
00000916: JUMPDEST
00000917: CALLER
00000918: PUSH0
00000919: SWAP1
0000091a: DUP2
0000091b: MSTORE
0000091c: PUSH1 0x09
0000091e: PUSH1 0x20
00000920: SWAP1
00000921: DUP2
00000922: MSTORE
00000923: PUSH1 0x40
00000925: DUP1
00000926: DUP4
00000927: KECCAK256
00000928: DUP8
00000929: DUP5
0000092a: MSTORE
0000092b: SWAP1
0000092c: SWAP2
0000092d: MSTORE
0000092e: SWAP1
0000092f: KECCAK256
00000930: PUSH1 0x01
00000932: ADD
00000933: SLOAD
00000934: SWAP3
00000935: POP
00000936: DUP3
00000937: ISZERO
00000938: PUSH3 0x000804
0000093c: JUMPI
0000093d: CALLER
0000093e: PUSH0
0000093f: SWAP1
00000940: DUP2
00000941: MSTORE
00000942: PUSH1 0x09
00000944: PUSH1 0x20
00000946: SWAP1
00000947: DUP2
00000948: MSTORE
00000949: PUSH1 0x40
0000094b: DUP1
0000094c: DUP4
0000094d: KECCAK256
0000094e: DUP8
0000094f: DUP5
00000950: MSTORE
00000951: SWAP1
00000952: SWAP2
00000953: MSTORE
00000954: DUP2
00000955: KECCAK256
00000956: PUSH1 0x01
00000958: ADD
00000959: DUP2
0000095a: SWAP1
0000095b: SSTORE
0000095c: PUSH1 0x04
0000095e: DUP1
0000095f: SLOAD
00000960: DUP6
00000961: SWAP3
00000962: SWAP1
00000963: PUSH3 0x00096f
00000967: SWAP1
00000968: DUP5
00000969: SWAP1
0000096a: PUSH3 0x001dc3
0000096e: JUMP
0000096f: JUMPDEST
00000970: SWAP1
00000971: SWAP2
00000972: SSTORE
00000973: POP
00000974: POP
00000975: PUSH1 0x01
00000977: SLOAD
00000978: PUSH3 0x000804
0000097c: SWAP1
0000097d: PUSH1 0x01
0000097f: PUSH1 0x01
00000981: PUSH1 0xa0
00000983: SHL
00000984: SUB
00000985: AND
00000986: DUP7
00000987: DUP6
00000988: PUSH3 0x001a79
0000098c: JUMP
0000098d: JUMPDEST
0000098e: PUSH0
0000098f: SLOAD
00000990: PUSH1 0x01
00000992: EQ
00000993: PUSH3 0x0009b1
00000997: JUMPI
00000998: PUSH1 0x40
0000099a: MLOAD
0000099b: PUSH3 0x461bcd
0000099f: PUSH1 0xe5
000009a1: SHL
000009a2: DUP2
000009a3: MSTORE
000009a4: PUSH1 0x04
000009a6: ADD
000009a7: PUSH3 0x000428
000009ab: SWAP1
000009ac: PUSH3 0x001d5d
000009b0: JUMP
000009b1: JUMPDEST
000009b2: PUSH1 0x02
000009b4: PUSH0
000009b5: SSTORE
000009b6: DUP3
000009b7: ISZERO
000009b8: DUP1
000009b9: ISZERO
000009ba: PUSH3 0x0009c2
000009be: JUMPI
000009bf: POP
000009c0: DUP2
000009c1: ISZERO
000009c2: JUMPDEST
000009c3: ISZERO
000009c4: PUSH3 0x0009e1
000009c8: JUMPI
000009c9: PUSH1 0x40
000009cb: MLOAD
000009cc: PUSH4 0x42301c23
000009d1: PUSH1 0xe0
000009d3: SHL
000009d4: DUP2
000009d5: MSTORE
000009d6: PUSH1 0x04
000009d8: ADD
000009d9: PUSH1 0x40
000009db: MLOAD
000009dc: DUP1
000009dd: SWAP2
000009de: SUB
000009df: SWAP1
000009e0: REVERT
000009e1: JUMPDEST
000009e2: PUSH0
000009e3: DUP1
000009e4: PUSH3 0x0009ed
000009e8: PUSH3 0x0003a6
000009ec: JUMP
000009ed: JUMPDEST
000009ee: POP
000009ef: SWAP2
000009f0: POP
000009f1: SWAP2
000009f2: POP
000009f3: DUP2
000009f4: PUSH1 0x01
000009f6: PUSH1 0x01
000009f8: PUSH1 0x70
000009fa: SHL
000009fb: SUB
000009fc: AND
000009fd: DUP6
000009fe: LT
000009ff: ISZERO
00000a00: DUP1
00000a01: PUSH3 0x000a14
00000a05: JUMPI
00000a06: POP
00000a07: DUP1
00000a08: PUSH1 0x01
00000a0a: PUSH1 0x01
00000a0c: PUSH1 0x70
00000a0e: SHL
00000a0f: SUB
00000a10: AND
00000a11: DUP5
00000a12: LT
00000a13: ISZERO
00000a14: JUMPDEST
00000a15: ISZERO
00000a16: PUSH3 0x000a33
00000a1a: JUMPI
00000a1b: PUSH1 0x40
00000a1d: MLOAD
00000a1e: PUSH4 0xbb55fd27
00000a23: PUSH1 0xe0
00000a25: SHL
00000a26: DUP2
00000a27: MSTORE
00000a28: PUSH1 0x04
00000a2a: ADD
00000a2b: PUSH1 0x40
00000a2d: MLOAD
00000a2e: DUP1
00000a2f: SWAP2
00000a30: SUB
00000a31: SWAP1
00000a32: REVERT
00000a33: JUMPDEST
00000a34: PUSH1 0x01
00000a36: SLOAD
00000a37: PUSH1 0x02
00000a39: SLOAD
00000a3a: PUSH0
00000a3b: SWAP2
00000a3c: DUP3
00000a3d: SWAP2
00000a3e: PUSH1 0x01
00000a40: PUSH1 0x01
00000a42: PUSH1 0xa0
00000a44: SHL
00000a45: SUB
00000a46: SWAP2
00000a47: DUP3
00000a48: AND
00000a49: SWAP2
00000a4a: SWAP1
00000a4b: DUP2
00000a4c: AND
00000a4d: SWAP1
00000a4e: DUP8
00000a4f: AND
00000a50: DUP3
00000a51: EQ
00000a52: DUP1
00000a53: PUSH3 0x000a6e
00000a57: JUMPI
00000a58: POP
00000a59: DUP1
00000a5a: PUSH1 0x01
00000a5c: PUSH1 0x01
00000a5e: PUSH1 0xa0
00000a60: SHL
00000a61: SUB
00000a62: AND
00000a63: DUP8
00000a64: PUSH1 0x01
00000a66: PUSH1 0x01
00000a68: PUSH1 0xa0
00000a6a: SHL
00000a6b: SUB
00000a6c: AND
00000a6d: EQ
00000a6e: JUMPDEST
00000a6f: ISZERO
00000a70: PUSH3 0x000a8d
00000a74: JUMPI
00000a75: PUSH1 0x40
00000a77: MLOAD
00000a78: PUSH4 0x1e4ec46b
00000a7d: PUSH1 0xe0
00000a7f: SHL
00000a80: DUP2
00000a81: MSTORE
00000a82: PUSH1 0x04
00000a84: ADD
00000a85: PUSH1 0x40
00000a87: MLOAD
00000a88: DUP1
00000a89: SWAP2
00000a8a: SUB
00000a8b: SWAP1
00000a8c: REVERT
00000a8d: JUMPDEST
00000a8e: DUP9
00000a8f: ISZERO
00000a90: PUSH3 0x000aa1
00000a94: JUMPI
00000a95: PUSH3 0x000aa1
00000a99: DUP3
00000a9a: DUP9
00000a9b: DUP12
00000a9c: PUSH3 0x001a79
00000aa0: JUMP
00000aa1: JUMPDEST
00000aa2: DUP8
00000aa3: ISZERO
00000aa4: PUSH3 0x000ab5
00000aa8: JUMPI
00000aa9: PUSH3 0x000ab5
00000aad: DUP2
00000aae: DUP9
00000aaf: DUP11
00000ab0: PUSH3 0x001a79
00000ab4: JUMP
00000ab5: JUMPDEST
00000ab6: PUSH1 0x04
00000ab8: DUP1
00000ab9: SLOAD
00000aba: PUSH1 0x40
00000abc: MLOAD
00000abd: PUSH4 0x70a08231
00000ac2: PUSH1 0xe0
00000ac4: SHL
00000ac5: DUP2
00000ac6: MSTORE
00000ac7: ADDRESS
00000ac8: SWAP3
00000ac9: DUP2
00000aca: ADD
00000acb: SWAP3
00000acc: SWAP1
00000acd: SWAP3
00000ace: MSTORE
00000acf: SWAP1
00000ad0: PUSH1 0x01
00000ad2: PUSH1 0x01
00000ad4: PUSH1 0xa0
00000ad6: SHL
00000ad7: SUB
00000ad8: DUP5
00000ad9: AND
00000ada: SWAP1
00000adb: PUSH4 0x70a08231
00000ae0: SWAP1
00000ae1: PUSH1 0x24
00000ae3: ADD
00000ae4: PUSH1 0x20
00000ae6: PUSH1 0x40
00000ae8: MLOAD
00000ae9: DUP1
00000aea: DUP4
00000aeb: SUB
00000aec: DUP2
00000aed: DUP7
00000aee: GAS
00000aef: STATICCALL
00000af0: ISZERO
00000af1: DUP1
00000af2: ISZERO
00000af3: PUSH3 0x000aff
00000af7: JUMPI
00000af8: RETURNDATASIZE
00000af9: PUSH0
00000afa: DUP1
00000afb: RETURNDATACOPY
00000afc: RETURNDATASIZE
00000afd: PUSH0
00000afe: REVERT
00000aff: JUMPDEST
00000b00: POP
00000b01: POP
00000b02: POP
00000b03: POP
00000b04: PUSH1 0x40
00000b06: MLOAD
00000b07: RETURNDATASIZE
00000b08: PUSH1 0x1f
00000b0a: NOT
00000b0b: PUSH1 0x1f
00000b0d: DUP3
00000b0e: ADD
00000b0f: AND
00000b10: DUP3
00000b11: ADD
00000b12: DUP1
00000b13: PUSH1 0x40
00000b15: MSTORE
00000b16: POP
00000b17: DUP2
00000b18: ADD
00000b19: SWAP1
00000b1a: PUSH3 0x000b25
00000b1e: SWAP2
00000b1f: SWAP1
00000b20: PUSH3 0x001dab
00000b24: JUMP
00000b25: JUMPDEST
00000b26: PUSH3 0x000b31
00000b2a: SWAP2
00000b2b: SWAP1
00000b2c: PUSH3 0x001dc3
00000b30: JUMP
00000b31: JUMPDEST
00000b32: PUSH1 0x40
00000b34: MLOAD
00000b35: PUSH4 0x70a08231
00000b3a: PUSH1 0xe0
00000b3c: SHL
00000b3d: DUP2
00000b3e: MSTORE
00000b3f: ADDRESS
00000b40: PUSH1 0x04
00000b42: DUP3
00000b43: ADD
00000b44: MSTORE
00000b45: SWAP1
00000b46: SWAP5
00000b47: POP
00000b48: PUSH1 0x01
00000b4a: PUSH1 0x01
00000b4c: PUSH1 0xa0
00000b4e: SHL
00000b4f: SUB
00000b50: DUP3
00000b51: AND
00000b52: SWAP1
00000b53: PUSH4 0x70a08231
00000b58: SWAP1
00000b59: PUSH1 0x24
00000b5b: ADD
00000b5c: PUSH1 0x20
00000b5e: PUSH1 0x40
00000b60: MLOAD
00000b61: DUP1
00000b62: DUP4
00000b63: SUB
00000b64: DUP2
00000b65: DUP7
00000b66: GAS
00000b67: STATICCALL
00000b68: ISZERO
00000b69: DUP1
00000b6a: ISZERO
00000b6b: PUSH3 0x000b77
00000b6f: JUMPI
00000b70: RETURNDATASIZE
00000b71: PUSH0
00000b72: DUP1
00000b73: RETURNDATACOPY
00000b74: RETURNDATASIZE
00000b75: PUSH0
00000b76: REVERT
00000b77: JUMPDEST
00000b78: POP
00000b79: POP
00000b7a: POP
00000b7b: POP
00000b7c: PUSH1 0x40
00000b7e: MLOAD
00000b7f: RETURNDATASIZE
00000b80: PUSH1 0x1f
00000b82: NOT
00000b83: PUSH1 0x1f
00000b85: DUP3
00000b86: ADD
00000b87: AND
00000b88: DUP3
00000b89: ADD
00000b8a: DUP1
00000b8b: PUSH1 0x40
00000b8d: MSTORE
00000b8e: POP
00000b8f: DUP2
00000b90: ADD
00000b91: SWAP1
00000b92: PUSH3 0x000b9d
00000b96: SWAP2
00000b97: SWAP1
00000b98: PUSH3 0x001dab
00000b9c: JUMP
00000b9d: JUMPDEST
00000b9e: SWAP3
00000b9f: POP
00000ba0: PUSH0
00000ba1: SWAP1
00000ba2: POP
00000ba3: PUSH3 0x000bb7
00000ba7: DUP10
00000ba8: PUSH1 0x01
00000baa: PUSH1 0x01
00000bac: PUSH1 0x70
00000bae: SHL
00000baf: SUB
00000bb0: DUP9
00000bb1: AND
00000bb2: PUSH3 0x001dc3
00000bb6: JUMP
00000bb7: JUMPDEST
00000bb8: DUP5
00000bb9: GT
00000bba: PUSH3 0x000bc5
00000bbe: JUMPI
00000bbf: PUSH0
00000bc0: PUSH3 0x000be6
00000bc4: JUMP
00000bc5: JUMPDEST
00000bc6: PUSH3 0x000bda
00000bca: DUP10
00000bcb: PUSH1 0x01
00000bcd: PUSH1 0x01
00000bcf: PUSH1 0x70
00000bd1: SHL
00000bd2: SUB
00000bd3: DUP9
00000bd4: AND
00000bd5: PUSH3 0x001dc3
00000bd9: JUMP
00000bda: JUMPDEST
00000bdb: PUSH3 0x000be6
00000bdf: SWAP1
00000be0: DUP6
00000be1: PUSH3 0x001dc3
00000be5: JUMP
00000be6: JUMPDEST
00000be7: SWAP1
00000be8: POP
00000be9: PUSH0
00000bea: PUSH3 0x000bfe
00000bee: DUP10
00000bef: PUSH1 0x01
00000bf1: PUSH1 0x01
00000bf3: PUSH1 0x70
00000bf5: SHL
00000bf6: SUB
00000bf7: DUP9
00000bf8: AND
00000bf9: PUSH3 0x001dc3
00000bfd: JUMP
00000bfe: JUMPDEST
00000bff: DUP5
00000c00: GT
00000c01: PUSH3 0x000c0c
00000c05: JUMPI
00000c06: PUSH0
00000c07: PUSH3 0x000c2d
00000c0b: JUMP
00000c0c: JUMPDEST
00000c0d: PUSH3 0x000c21
00000c11: DUP10
00000c12: PUSH1 0x01
00000c14: PUSH1 0x01
00000c16: PUSH1 0x70
00000c18: SHL
00000c19: SUB
00000c1a: DUP9
00000c1b: AND
00000c1c: PUSH3 0x001dc3
00000c20: JUMP
00000c21: JUMPDEST
00000c22: PUSH3 0x000c2d
00000c26: SWAP1
00000c27: DUP6
00000c28: PUSH3 0x001dc3
00000c2c: JUMP
00000c2d: JUMPDEST
00000c2e: SWAP1
00000c2f: POP
00000c30: DUP2
00000c31: ISZERO
00000c32: DUP1
00000c33: ISZERO
00000c34: PUSH3 0x000c3c
00000c38: JUMPI
00000c39: POP
00000c3a: DUP1
00000c3b: ISZERO
00000c3c: JUMPDEST
00000c3d: ISZERO
00000c3e: PUSH3 0x000c5b
00000c42: JUMPI
00000c43: PUSH1 0x40
00000c45: MLOAD
00000c46: PUSH4 0x098fb561
00000c4b: PUSH1 0xe0
00000c4d: SHL
00000c4e: DUP2
00000c4f: MSTORE
00000c50: PUSH1 0x04
00000c52: ADD
00000c53: PUSH1 0x40
00000c55: MLOAD
00000c56: DUP1
00000c57: SWAP2
00000c58: SUB
00000c59: SWAP1
00000c5a: REVERT
00000c5b: JUMPDEST
00000c5c: PUSH1 0x40
00000c5e: DUP1
00000c5f: MLOAD
00000c60: DUP4
00000c61: DUP2
00000c62: MSTORE
00000c63: PUSH1 0x20
00000c65: DUP2
00000c66: ADD
00000c67: DUP4
00000c68: SWAP1
00000c69: MSTORE
00000c6a: SWAP1
00000c6b: DUP2
00000c6c: ADD
00000c6d: DUP12
00000c6e: SWAP1
00000c6f: MSTORE
00000c70: PUSH1 0x60
00000c72: DUP2
00000c73: ADD
00000c74: DUP11
00000c75: SWAP1
00000c76: MSTORE
00000c77: PUSH1 0x01
00000c79: PUSH1 0x01
00000c7b: PUSH1 0xa0
00000c7d: SHL
00000c7e: SUB
00000c7f: DUP10
00000c80: AND
00000c81: SWAP1
00000c82: CALLER
00000c83: SWAP1
00000c84: PUSH32 0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822
00000ca5: SWAP1
00000ca6: PUSH1 0x80
00000ca8: ADD
00000ca9: PUSH1 0x40
00000cab: MLOAD
00000cac: DUP1
00000cad: SWAP2
00000cae: SUB
00000caf: SWAP1
00000cb0: LOG3
00000cb1: PUSH1 0x02
00000cb3: SLOAD
00000cb4: PUSH0
00000cb5: SWAP1
00000cb6: PUSH2 0x03e8
00000cb9: SWAP1
00000cba: PUSH3 0x000cd0
00000cbe: SWAP1
00000cbf: PUSH1 0x01
00000cc1: PUSH1 0xa0
00000cc3: SHL
00000cc4: SWAP1
00000cc5: DIV
00000cc6: PUSH2 0xffff
00000cc9: AND
00000cca: DUP14
00000ccb: PUSH3 0x001dd9
00000ccf: JUMP
00000cd0: JUMPDEST
00000cd1: PUSH3 0x000cdc
00000cd5: SWAP2
00000cd6: SWAP1
00000cd7: PUSH3 0x001e07
00000cdb: JUMP
00000cdc: JUMPDEST
00000cdd: PUSH1 0x02
00000cdf: SLOAD
00000ce0: PUSH3 0x000cf8
00000ce4: SWAP1
00000ce5: PUSH1 0x01
00000ce7: PUSH1 0xa0
00000ce9: SHL
00000cea: SWAP1
00000ceb: DIV
00000cec: PUSH2 0xffff
00000cef: AND
00000cf0: PUSH2 0x03e8
00000cf3: PUSH3 0x001d95
00000cf7: JUMP
00000cf8: JUMPDEST
00000cf9: PUSH1 0x02
00000cfb: SLOAD
00000cfc: PUSH3 0x000d12
00000d00: SWAP1
00000d01: PUSH1 0x01
00000d03: PUSH1 0xa0
00000d05: SHL
00000d06: SWAP1
00000d07: DIV
00000d08: PUSH2 0xffff
00000d0b: AND
00000d0c: DUP7
00000d0d: PUSH3 0x001dd9
00000d11: JUMP
00000d12: JUMPDEST
00000d13: PUSH3 0x000d1e
00000d17: SWAP2
00000d18: SWAP1
00000d19: PUSH3 0x001e07
00000d1d: JUMP
00000d1e: JUMPDEST
00000d1f: PUSH3 0x000d2a
00000d23: SWAP2
00000d24: SWAP1
00000d25: PUSH3 0x001d95
00000d29: JUMP
00000d2a: JUMPDEST
00000d2b: SWAP1
00000d2c: POP
00000d2d: PUSH2 0x03e8
00000d30: DUP2
00000d31: LT
00000d32: ISZERO
00000d33: PUSH3 0x000d50
00000d37: JUMPI
00000d38: PUSH1 0x40
00000d3a: MLOAD
00000d3b: PUSH4 0xf570cd77
00000d40: PUSH1 0xe0
00000d42: SHL
00000d43: DUP2
00000d44: MSTORE
00000d45: PUSH1 0x04
00000d47: ADD
00000d48: PUSH1 0x40
00000d4a: MLOAD
00000d4b: DUP1
00000d4c: SWAP2
00000d4d: SUB
00000d4e: SWAP1
00000d4f: REVERT
00000d50: JUMPDEST
00000d51: PUSH3 0x000d5c
00000d55: DUP2
00000d56: DUP8
00000d57: PUSH3 0x001dc3
00000d5b: JUMP
00000d5c: JUMPDEST
00000d5d: SWAP6
00000d5e: POP
00000d5f: PUSH3 0x000d76
00000d63: PUSH1 0x01
00000d65: PUSH1 0x01
00000d67: PUSH1 0x70
00000d69: SHL
00000d6a: SUB
00000d6b: DUP1
00000d6c: DUP10
00000d6d: AND
00000d6e: SWAP1
00000d6f: DUP11
00000d70: AND
00000d71: PUSH3 0x001dd9
00000d75: JUMP
00000d76: JUMPDEST
00000d77: PUSH3 0x000d82
00000d7b: DUP7
00000d7c: DUP9
00000d7d: PUSH3 0x001dd9
00000d81: JUMP
00000d82: JUMPDEST
00000d83: LT
00000d84: ISZERO
00000d85: PUSH3 0x000da2
00000d89: JUMPI
00000d8a: PUSH1 0x40
00000d8c: MLOAD
00000d8d: PUSH4 0xa932492f
00000d92: PUSH1 0xe0
00000d94: SHL
00000d95: DUP2
00000d96: MSTORE
00000d97: PUSH1 0x04
00000d99: ADD
00000d9a: PUSH1 0x40
00000d9c: MLOAD
00000d9d: DUP1
00000d9e: SWAP2
00000d9f: SUB
00000da0: SWAP1
00000da1: REVERT
00000da2: JUMPDEST
00000da3: PUSH3 0x000db0
00000da7: DUP7
00000da8: DUP7
00000da9: DUP11
00000daa: DUP11
00000dab: PUSH3 0x001867
00000daf: JUMP
00000db0: JUMPDEST
00000db1: PUSH1 0x02
00000db3: SLOAD
00000db4: PUSH1 0x01
00000db6: PUSH1 0xa0
00000db8: SHL
00000db9: SWAP1
00000dba: DIV
00000dbb: PUSH2 0xffff
00000dbe: AND
00000dbf: PUSH1 0x0a
00000dc1: SUB
00000dc2: PUSH3 0x000e3b
00000dc6: JUMPI
00000dc7: PUSH1 0x06
00000dc9: SLOAD
00000dca: PUSH1 0x05
00000dcc: SLOAD
00000dcd: PUSH1 0x07
00000dcf: SLOAD
00000dd0: PUSH1 0x40
00000dd2: MLOAD
00000dd3: PUSH4 0xcebab53d
00000dd8: PUSH1 0xe0
00000dda: SHL
00000ddb: DUP2
00000ddc: MSTORE
00000ddd: PUSH1 0x04
00000ddf: DUP2
00000de0: ADD
00000de1: SWAP3
00000de2: SWAP1
00000de3: SWAP3
00000de4: MSTORE
00000de5: PUSH1 0x01
00000de7: PUSH1 0xe0
00000de9: SHL
00000dea: SWAP1
00000deb: DIV
00000dec: PUSH4 0xffffffff
00000df1: AND
00000df2: PUSH1 0x24
00000df4: DUP3
00000df5: ADD
00000df6: MSTORE
00000df7: PUSH1 0x01
00000df9: PUSH1 0x01
00000dfb: PUSH1 0xa0
00000dfd: SHL
00000dfe: SUB
00000dff: SWAP1
00000e00: SWAP2
00000e01: AND
00000e02: SWAP1
00000e03: PUSH4 0xcebab53d
00000e08: SWAP1
00000e09: PUSH1 0x44
00000e0b: ADD
00000e0c: PUSH0
00000e0d: PUSH1 0x40
00000e0f: MLOAD
00000e10: DUP1
00000e11: DUP4
00000e12: SUB
00000e13: DUP2
00000e14: PUSH0
00000e15: DUP8
00000e16: DUP1
00000e17: EXTCODESIZE
00000e18: ISZERO
00000e19: DUP1
00000e1a: ISZERO
00000e1b: PUSH3 0x000e23
00000e1f: JUMPI
00000e20: PUSH0
00000e21: DUP1
00000e22: REVERT
00000e23: JUMPDEST
00000e24: POP
00000e25: GAS
00000e26: CALL
00000e27: ISZERO
00000e28: DUP1
00000e29: ISZERO
00000e2a: PUSH3 0x000e36
00000e2e: JUMPI
00000e2f: RETURNDATASIZE
00000e30: PUSH0
00000e31: DUP1
00000e32: RETURNDATACOPY
00000e33: RETURNDATASIZE
00000e34: PUSH0
00000e35: REVERT
00000e36: JUMPDEST
00000e37: POP
00000e38: POP
00000e39: POP
00000e3a: POP
00000e3b: JUMPDEST
00000e3c: PUSH0
00000e3d: PUSH2 0x2710
00000e40: PUSH3 0x000e4d
00000e44: DUP4
00000e45: PUSH2 0x2134
00000e48: PUSH3 0x001dd9
00000e4c: JUMP
00000e4d: JUMPDEST
00000e4e: PUSH3 0x000e59
00000e52: SWAP2
00000e53: SWAP1
00000e54: PUSH3 0x001e07
00000e58: JUMP
00000e59: JUMPDEST
00000e5a: SWAP1
00000e5b: POP
00000e5c: PUSH0
00000e5d: PUSH3 0x000e68
00000e61: DUP3
00000e62: DUP5
00000e63: PUSH3 0x001dc3
00000e67: JUMP
00000e68: JUMPDEST
00000e69: SWAP1
00000e6a: POP
00000e6b: PUSH3 0x000e75
00000e6f: DUP3
00000e70: PUSH3 0x001baf
00000e74: JUMP
00000e75: JUMPDEST
00000e76: PUSH1 0x40
00000e78: MLOAD
00000e79: PUSH4 0x0852cd8d
00000e7e: PUSH1 0xe3
00000e80: SHL
00000e81: DUP2
00000e82: MSTORE
00000e83: PUSH1 0x04
00000e85: DUP2
00000e86: ADD
00000e87: DUP3
00000e88: SWAP1
00000e89: MSTORE
00000e8a: PUSH1 0x01
00000e8c: PUSH1 0x01
00000e8e: PUSH1 0xa0
00000e90: SHL
00000e91: SUB
00000e92: DUP8
00000e93: AND
00000e94: SWAP1
00000e95: PUSH4 0x42966c68
00000e9a: SWAP1
00000e9b: PUSH1 0x24
00000e9d: ADD
00000e9e: PUSH0
00000e9f: PUSH1 0x40
00000ea1: MLOAD
00000ea2: DUP1
00000ea3: DUP4
00000ea4: SUB
00000ea5: DUP2
00000ea6: PUSH0
00000ea7: DUP8
00000ea8: DUP1
00000ea9: EXTCODESIZE
00000eaa: ISZERO
00000eab: DUP1
00000eac: ISZERO
00000ead: PUSH3 0x000eb5
00000eb1: JUMPI
00000eb2: PUSH0
00000eb3: DUP1
00000eb4: REVERT
00000eb5: JUMPDEST
00000eb6: POP
00000eb7: GAS
00000eb8: CALL
00000eb9: ISZERO
00000eba: DUP1
00000ebb: ISZERO
00000ebc: PUSH3 0x000ec8
00000ec0: JUMPI
00000ec1: RETURNDATASIZE
00000ec2: PUSH0
00000ec3: DUP1
00000ec4: RETURNDATACOPY
00000ec5: RETURNDATASIZE
00000ec6: PUSH0
00000ec7: REVERT
00000ec8: JUMPDEST
00000ec9: POP
00000eca: POP
00000ecb: PUSH1 0x01
00000ecd: PUSH0
00000ece: SSTORE
00000ecf: POP
00000ed0: POP
00000ed1: POP
00000ed2: POP
00000ed3: POP
00000ed4: POP
00000ed5: POP
00000ed6: POP
00000ed7: POP
00000ed8: POP
00000ed9: POP
00000eda: POP
00000edb: POP
00000edc: POP
00000edd: POP
00000ede: JUMP
00000edf: JUMPDEST
00000ee0: CALLER
00000ee1: PUSH1 0x01
00000ee3: PUSH1 0x01
00000ee5: PUSH1 0xa0
00000ee7: SHL
00000ee8: SUB
00000ee9: PUSH32 0x000000000000000000000000acff9eee0a5522000e7141b77107359a6462e8d2
00000f0a: AND
00000f0b: EQ
00000f0c: PUSH3 0x000f28
00000f10: JUMPI
00000f11: PUSH1 0x40
00000f13: MLOAD
00000f14: PUSH3 0x555477
00000f18: PUSH1 0xe2
00000f1a: SHL
00000f1b: DUP2
00000f1c: MSTORE
00000f1d: PUSH1 0x04
00000f1f: ADD
00000f20: PUSH1 0x40
00000f22: MLOAD
00000f23: DUP1
00000f24: SWAP2
00000f25: SUB
00000f26: SWAP1
00000f27: REVERT
00000f28: JUMPDEST
00000f29: PUSH1 0x01
00000f2b: DUP1
00000f2c: SLOAD
00000f2d: PUSH1 0x01
00000f2f: PUSH1 0x01
00000f31: PUSH1 0xa0
00000f33: SHL
00000f34: SUB
00000f35: SWAP5
00000f36: DUP6
00000f37: AND
00000f38: PUSH1 0x01
00000f3a: PUSH1 0x01
00000f3c: PUSH1 0xa0
00000f3e: SHL
00000f3f: SUB
00000f40: NOT
00000f41: SWAP1
00000f42: SWAP2
00000f43: AND
00000f44: OR
00000f45: SWAP1
00000f46: SSTORE
00000f47: PUSH1 0x02
00000f49: DUP1
00000f4a: SLOAD
00000f4b: PUSH2 0xffff
00000f4e: SWAP1
00000f4f: SWAP3
00000f50: AND
00000f51: PUSH1 0x01
00000f53: PUSH1 0xa0
00000f55: SHL
00000f56: MUL
00000f57: PUSH1 0x01
00000f59: PUSH1 0x01
00000f5b: PUSH1 0xb0
00000f5d: SHL
00000f5e: SUB
00000f5f: NOT
00000f60: SWAP1
00000f61: SWAP3
00000f62: AND
00000f63: SWAP3
00000f64: SWAP1
00000f65: SWAP4
00000f66: AND
00000f67: SWAP2
00000f68: SWAP1
00000f69: SWAP2
00000f6a: OR
00000f6b: OR
00000f6c: SWAP1
00000f6d: SSTORE
00000f6e: JUMP
00000f6f: JUMPDEST
00000f70: PUSH0
00000f71: SLOAD
00000f72: PUSH1 0x01
00000f74: EQ
00000f75: PUSH3 0x000f93
00000f79: JUMPI
00000f7a: PUSH1 0x40
00000f7c: MLOAD
00000f7d: PUSH3 0x461bcd
00000f81: PUSH1 0xe5
00000f83: SHL
00000f84: DUP2
00000f85: MSTORE
00000f86: PUSH1 0x04
00000f88: ADD
00000f89: PUSH3 0x000428
00000f8d: SWAP1
00000f8e: PUSH3 0x001d5d
00000f92: JUMP
00000f93: JUMPDEST
00000f94: PUSH1 0x02
00000f96: PUSH0
00000f97: DUP2
00000f98: SWAP1
00000f99: SSTORE
00000f9a: PUSH1 0x01
00000f9c: SLOAD
00000f9d: SWAP1
00000f9e: SLOAD
00000f9f: PUSH1 0x04
00000fa1: DUP1
00000fa2: SLOAD
00000fa3: PUSH1 0x07
00000fa5: SLOAD
00000fa6: PUSH1 0x40
00000fa8: MLOAD
00000fa9: PUSH4 0x70a08231
00000fae: PUSH1 0xe0
00000fb0: SHL
00000fb1: DUP2
00000fb2: MSTORE
00000fb3: ADDRESS
00000fb4: SWAP4
00000fb5: DUP2
00000fb6: ADD
00000fb7: SWAP4
00000fb8: SWAP1
00000fb9: SWAP4
00000fba: MSTORE
00000fbb: PUSH1 0x01
00000fbd: PUSH1 0x01
00000fbf: PUSH1 0xa0
00000fc1: SHL
00000fc2: SUB
00000fc3: SWAP5
00000fc4: DUP6
00000fc5: AND
00000fc6: SWAP5
00000fc7: SWAP1
00000fc8: SWAP4
00000fc9: AND
00000fca: SWAP3
00000fcb: PUSH3 0x00104c
00000fcf: SWAP3
00000fd0: DUP6
00000fd1: SWAP3
00000fd2: DUP8
00000fd3: SWAP3
00000fd4: SWAP1
00000fd5: SWAP2
00000fd6: PUSH1 0x01
00000fd8: PUSH1 0x01
00000fda: PUSH1 0x70
00000fdc: SHL
00000fdd: SUB
00000fde: SWAP1
00000fdf: SWAP2
00000fe0: AND
00000fe1: SWAP1
00000fe2: DUP5
00000fe3: SWAP1
00000fe4: PUSH4 0x70a08231
00000fe9: SWAP1
00000fea: PUSH1 0x24
00000fec: ADD
00000fed: PUSH1 0x20
00000fef: PUSH1 0x40
00000ff1: MLOAD
00000ff2: DUP1
00000ff3: DUP4
00000ff4: SUB
00000ff5: DUP2
00000ff6: DUP7
00000ff7: GAS
00000ff8: STATICCALL
00000ff9: ISZERO
00000ffa: DUP1
00000ffb: ISZERO
00000ffc: PUSH3 0x001008
00001000: JUMPI
00001001: RETURNDATASIZE
00001002: PUSH0
00001003: DUP1
00001004: RETURNDATACOPY
00001005: RETURNDATASIZE
00001006: PUSH0
00001007: REVERT
00001008: JUMPDEST
00001009: POP
0000100a: POP
0000100b: POP
0000100c: POP
0000100d: PUSH1 0x40
0000100f: MLOAD
00001010: RETURNDATASIZE
00001011: PUSH1 0x1f
00001013: NOT
00001014: PUSH1 0x1f
00001016: DUP3
00001017: ADD
00001018: AND
00001019: DUP3
0000101a: ADD
0000101b: DUP1
0000101c: PUSH1 0x40
0000101e: MSTORE
0000101f: POP
00001020: DUP2
00001021: ADD
00001022: SWAP1
00001023: PUSH3 0x00102e
00001027: SWAP2
00001028: SWAP1
00001029: PUSH3 0x001dab
0000102d: JUMP
0000102e: JUMPDEST
0000102f: PUSH3 0x00103a
00001033: SWAP2
00001034: SWAP1
00001035: PUSH3 0x001dc3
00001039: JUMP
0000103a: JUMPDEST
0000103b: PUSH3 0x001046
0000103f: SWAP2
00001040: SWAP1
00001041: PUSH3 0x001dc3
00001045: JUMP
00001046: JUMPDEST
00001047: PUSH3 0x001a79
0000104b: JUMP
0000104c: JUMPDEST
0000104d: PUSH1 0x07
0000104f: SLOAD
00001050: PUSH1 0x40
00001052: MLOAD
00001053: PUSH4 0x70a08231
00001058: PUSH1 0xe0
0000105a: SHL
0000105b: DUP2
0000105c: MSTORE
0000105d: ADDRESS
0000105e: PUSH1 0x04
00001060: DUP3
00001061: ADD
00001062: MSTORE
00001063: PUSH3 0x0010d2
00001067: SWAP2
00001068: DUP4
00001069: SWAP2
0000106a: DUP7
0000106b: SWAP2
0000106c: PUSH1 0x01
0000106e: PUSH1 0x70
00001070: SHL
00001071: SWAP1
00001072: DIV
00001073: PUSH1 0x01
00001075: PUSH1 0x01
00001077: PUSH1 0x70
00001079: SHL
0000107a: SUB
0000107b: AND
0000107c: SWAP1
0000107d: PUSH1 0x01
0000107f: PUSH1 0x01
00001081: PUSH1 0xa0
00001083: SHL
00001084: SUB
00001085: DUP5
00001086: AND
00001087: SWAP1
00001088: PUSH4 0x70a08231
0000108d: SWAP1
0000108e: PUSH1 0x24
00001090: ADD
00001091: PUSH1 0x20
00001093: PUSH1 0x40
00001095: MLOAD
00001096: DUP1
00001097: DUP4
00001098: SUB
00001099: DUP2
0000109a: DUP7
0000109b: GAS
0000109c: STATICCALL
0000109d: ISZERO
0000109e: DUP1
0000109f: ISZERO
000010a0: PUSH3 0x0010ac
000010a4: JUMPI
000010a5: RETURNDATASIZE
000010a6: PUSH0
000010a7: DUP1
000010a8: RETURNDATACOPY
000010a9: RETURNDATASIZE
000010aa: PUSH0
000010ab: REVERT
000010ac: JUMPDEST
000010ad: POP
000010ae: POP
000010af: POP
000010b0: POP
000010b1: PUSH1 0x40
000010b3: MLOAD
000010b4: RETURNDATASIZE
000010b5: PUSH1 0x1f
000010b7: NOT
000010b8: PUSH1 0x1f
000010ba: DUP3
000010bb: ADD
000010bc: AND
000010bd: DUP3
000010be: ADD
000010bf: DUP1
000010c0: PUSH1 0x40
000010c2: MSTORE
000010c3: POP
000010c4: DUP2
000010c5: ADD
000010c6: SWAP1
000010c7: PUSH3 0x00103a
000010cb: SWAP2
000010cc: SWAP1
000010cd: PUSH3 0x001dab
000010d1: JUMP
000010d2: JUMPDEST
000010d3: POP
000010d4: POP
000010d5: PUSH1 0x01
000010d7: PUSH0
000010d8: SSTORE
000010d9: POP
000010da: JUMP
000010db: JUMPDEST
000010dc: PUSH1 0x08
000010de: SLOAD
000010df: PUSH0
000010e0: SWAP1
000010e1: DUP2
000010e2: PUSH3 0x0010ee
000010e6: DUP6
000010e7: DUP6
000010e8: DUP5
000010e9: PUSH3 0x00174c
000010ed: JUMP
000010ee: JUMPDEST
000010ef: PUSH1 0x01
000010f1: PUSH1 0x01
000010f3: PUSH1 0xa0
000010f5: SHL
000010f6: SUB
000010f7: DUP7
000010f8: AND
000010f9: PUSH0
000010fa: SWAP1
000010fb: DUP2
000010fc: MSTORE
000010fd: PUSH1 0x09
000010ff: PUSH1 0x20
00001101: SWAP1
00001102: DUP2
00001103: MSTORE
00001104: PUSH1 0x40
00001106: DUP1
00001107: DUP4
00001108: KECCAK256
00001109: DUP9
0000110a: DUP5
0000110b: MSTORE
0000110c: SWAP1
0000110d: SWAP2
0000110e: MSTORE
0000110f: SWAP1
00001110: KECCAK256
00001111: PUSH1 0x01
00001113: ADD
00001114: SLOAD
00001115: SWAP1
00001116: SWAP2
00001117: POP
00001118: PUSH3 0x001124
0000111c: SWAP1
0000111d: DUP3
0000111e: SWAP1
0000111f: PUSH3 0x001d95
00001123: JUMP
00001124: JUMPDEST
00001125: SWAP6
00001126: SWAP5
00001127: POP
00001128: POP
00001129: POP
0000112a: POP
0000112b: POP
0000112c: JUMP
0000112d: JUMPDEST
0000112e: PUSH0
0000112f: DUP1
00001130: PUSH0
00001131: SLOAD
00001132: PUSH1 0x01
00001134: EQ
00001135: PUSH3 0x001153
00001139: JUMPI
0000113a: PUSH1 0x40
0000113c: MLOAD
0000113d: PUSH3 0x461bcd
00001141: PUSH1 0xe5
00001143: SHL
00001144: DUP2
00001145: MSTORE
00001146: PUSH1 0x04
00001148: ADD
00001149: PUSH3 0x000428
0000114d: SWAP1
0000114e: PUSH3 0x001d5d
00001152: JUMP
00001153: JUMPDEST
00001154: PUSH1 0x02
00001156: PUSH0
00001157: SWAP1
00001158: DUP2
00001159: SSTORE
0000115a: CALLER
0000115b: DUP1
0000115c: DUP3
0000115d: MSTORE
0000115e: PUSH1 0x09
00001160: PUSH1 0x20
00001162: SWAP1
00001163: DUP2
00001164: MSTORE
00001165: PUSH1 0x40
00001167: DUP1
00001168: DUP5
00001169: KECCAK256
0000116a: DUP9
0000116b: DUP6
0000116c: MSTORE
0000116d: SWAP1
0000116e: SWAP2
0000116f: MSTORE
00001170: SWAP1
00001171: SWAP2
00001172: KECCAK256
00001173: SLOAD
00001174: DUP6
00001175: SWAP1
00001176: PUSH1 0x01
00001178: PUSH1 0x01
0000117a: PUSH1 0x80
0000117c: SHL
0000117d: SUB
0000117e: AND
0000117f: ISZERO
00001180: PUSH3 0x00120a
00001184: JUMPI
00001185: PUSH0
00001186: PUSH3 0x001194
0000118a: DUP4
0000118b: DUP4
0000118c: PUSH1 0x08
0000118e: SLOAD
0000118f: PUSH3 0x00174c
00001193: JUMP
00001194: JUMPDEST
00001195: SWAP1
00001196: POP
00001197: DUP1
00001198: ISZERO
00001199: PUSH3 0x001203
0000119d: JUMPI
0000119e: PUSH1 0x01
000011a0: PUSH1 0x01
000011a2: PUSH1 0xa0
000011a4: SHL
000011a5: SUB
000011a6: DUP4
000011a7: AND
000011a8: PUSH0
000011a9: SWAP1
000011aa: DUP2
000011ab: MSTORE
000011ac: PUSH1 0x09
000011ae: PUSH1 0x20
000011b0: SWAP1
000011b1: DUP2
000011b2: MSTORE
000011b3: PUSH1 0x40
000011b5: DUP1
000011b6: DUP4
000011b7: KECCAK256
000011b8: DUP6
000011b9: DUP5
000011ba: MSTORE
000011bb: SWAP1
000011bc: SWAP2
000011bd: MSTORE
000011be: DUP2
000011bf: KECCAK256
000011c0: PUSH1 0x01
000011c2: ADD
000011c3: DUP1
000011c4: SLOAD
000011c5: DUP4
000011c6: SWAP3
000011c7: SWAP1
000011c8: PUSH3 0x0011d4
000011cc: SWAP1
000011cd: DUP5
000011ce: SWAP1
000011cf: PUSH3 0x001d95
000011d3: JUMP
000011d4: JUMPDEST
000011d5: SWAP1
000011d6: SWAP2
000011d7: SSTORE
000011d8: POP
000011d9: POP
000011da: PUSH1 0x08
000011dc: SLOAD
000011dd: PUSH1 0x01
000011df: PUSH1 0x01
000011e1: PUSH1 0xa0
000011e3: SHL
000011e4: SUB
000011e5: DUP5
000011e6: AND
000011e7: PUSH0
000011e8: SWAP1
000011e9: DUP2
000011ea: MSTORE
000011eb: PUSH1 0x09
000011ed: PUSH1 0x20
000011ef: SWAP1
000011f0: DUP2
000011f1: MSTORE
000011f2: PUSH1 0x40
000011f4: DUP1
000011f5: DUP4
000011f6: KECCAK256
000011f7: DUP7
000011f8: DUP5
000011f9: MSTORE
000011fa: SWAP1
000011fb: SWAP2
000011fc: MSTORE
000011fd: SWAP1
000011fe: KECCAK256
000011ff: PUSH1 0x02
00001201: ADD
00001202: SSTORE
00001203: JUMPDEST
00001204: POP
00001205: PUSH3 0x001234
00001209: JUMP
0000120a: JUMPDEST
0000120b: PUSH1 0x08
0000120d: SLOAD
0000120e: PUSH1 0x01
00001210: PUSH1 0x01
00001212: PUSH1 0xa0
00001214: SHL
00001215: SUB
00001216: DUP4
00001217: AND
00001218: PUSH0
00001219: SWAP1
0000121a: DUP2
0000121b: MSTORE
0000121c: PUSH1 0x09
0000121e: PUSH1 0x20
00001220: SWAP1
00001221: DUP2
00001222: MSTORE
00001223: PUSH1 0x40
00001225: DUP1
00001226: DUP4
00001227: KECCAK256
00001228: DUP6
00001229: DUP5
0000122a: MSTORE
0000122b: SWAP1
0000122c: SWAP2
0000122d: MSTORE
0000122e: SWAP1
0000122f: KECCAK256
00001230: PUSH1 0x02
00001232: ADD
00001233: SSTORE
00001234: JUMPDEST
00001235: PUSH0
00001236: DUP1
00001237: PUSH3 0x001240
0000123b: PUSH3 0x0003a6
0000123f: JUMP
00001240: JUMPDEST
00001241: POP
00001242: PUSH1 0x04
00001244: DUP1
00001245: SLOAD
00001246: PUSH1 0x01
00001248: SLOAD
00001249: PUSH1 0x40
0000124b: MLOAD
0000124c: PUSH4 0x70a08231
00001251: PUSH1 0xe0
00001253: SHL
00001254: DUP2
00001255: MSTORE
00001256: ADDRESS
00001257: SWAP4
00001258: DUP2
00001259: ADD
0000125a: SWAP4
0000125b: SWAP1
0000125c: SWAP4
0000125d: MSTORE
0000125e: SWAP4
0000125f: SWAP6
00001260: POP
00001261: SWAP2
00001262: SWAP4
00001263: POP
00001264: PUSH0
00001265: SWAP3
00001266: PUSH1 0x01
00001268: PUSH1 0x01
0000126a: PUSH1 0xa0
0000126c: SHL
0000126d: SUB
0000126e: AND
0000126f: SWAP1
00001270: PUSH4 0x70a08231
00001275: SWAP1
00001276: PUSH1 0x24
00001278: ADD
00001279: PUSH1 0x20
0000127b: PUSH1 0x40
0000127d: MLOAD
0000127e: DUP1
0000127f: DUP4
00001280: SUB
00001281: DUP2
00001282: DUP7
00001283: GAS
00001284: STATICCALL
00001285: ISZERO
00001286: DUP1
00001287: ISZERO
00001288: PUSH3 0x001294
0000128c: JUMPI
0000128d: RETURNDATASIZE
0000128e: PUSH0
0000128f: DUP1
00001290: RETURNDATACOPY
00001291: RETURNDATASIZE
00001292: PUSH0
00001293: REVERT
00001294: JUMPDEST
00001295: POP
00001296: POP
00001297: POP
00001298: POP
00001299: PUSH1 0x40
0000129b: MLOAD
0000129c: RETURNDATASIZE
0000129d: PUSH1 0x1f
0000129f: NOT
000012a0: PUSH1 0x1f
000012a2: DUP3
000012a3: ADD
000012a4: AND
000012a5: DUP3
000012a6: ADD
000012a7: DUP1
000012a8: PUSH1 0x40
000012aa: MSTORE
000012ab: POP
000012ac: DUP2
000012ad: ADD
000012ae: SWAP1
000012af: PUSH3 0x0012ba
000012b3: SWAP2
000012b4: SWAP1
000012b5: PUSH3 0x001dab
000012b9: JUMP
000012ba: JUMPDEST
000012bb: PUSH3 0x0012c6
000012bf: SWAP2
000012c0: SWAP1
000012c1: PUSH3 0x001dc3
000012c5: JUMP
000012c6: JUMPDEST
000012c7: PUSH1 0x02
000012c9: SLOAD
000012ca: PUSH1 0x40
000012cc: MLOAD
000012cd: PUSH4 0x70a08231
000012d2: PUSH1 0xe0
000012d4: SHL
000012d5: DUP2
000012d6: MSTORE
000012d7: ADDRESS
000012d8: PUSH1 0x04
000012da: DUP3
000012db: ADD
000012dc: MSTORE
000012dd: SWAP2
000012de: SWAP3
000012df: POP
000012e0: PUSH0
000012e1: SWAP2
000012e2: PUSH1 0x01
000012e4: PUSH1 0x01
000012e6: PUSH1 0xa0
000012e8: SHL
000012e9: SUB
000012ea: SWAP1
000012eb: SWAP2
000012ec: AND
000012ed: SWAP1
000012ee: PUSH4 0x70a08231
000012f3: SWAP1
000012f4: PUSH1 0x24
000012f6: ADD
000012f7: PUSH1 0x20
000012f9: PUSH1 0x40
000012fb: MLOAD
000012fc: DUP1
000012fd: DUP4
000012fe: SUB
000012ff: DUP2
00001300: DUP7
00001301: GAS
00001302: STATICCALL
00001303: ISZERO
00001304: DUP1
00001305: ISZERO
00001306: PUSH3 0x001312
0000130a: JUMPI
0000130b: RETURNDATASIZE
0000130c: PUSH0
0000130d: DUP1
0000130e: RETURNDATACOPY
0000130f: RETURNDATASIZE
00001310: PUSH0
00001311: REVERT
00001312: JUMPDEST
00001313: POP
00001314: POP
00001315: POP
00001316: POP
00001317: PUSH1 0x40
00001319: MLOAD
0000131a: RETURNDATASIZE
0000131b: PUSH1 0x1f
0000131d: NOT
0000131e: PUSH1 0x1f
00001320: DUP3
00001321: ADD
00001322: AND
00001323: DUP3
00001324: ADD
00001325: DUP1
00001326: PUSH1 0x40
00001328: MSTORE
00001329: POP
0000132a: DUP2
0000132b: ADD
0000132c: SWAP1
0000132d: PUSH3 0x001338
00001331: SWAP2
00001332: SWAP1
00001333: PUSH3 0x001dab
00001337: JUMP
00001338: JUMPDEST
00001339: CALLER
0000133a: PUSH0
0000133b: SWAP1
0000133c: DUP2
0000133d: MSTORE
0000133e: PUSH1 0x09
00001340: PUSH1 0x20
00001342: SWAP1
00001343: DUP2
00001344: MSTORE
00001345: PUSH1 0x40
00001347: DUP1
00001348: DUP4
00001349: KECCAK256
0000134a: DUP15
0000134b: DUP5
0000134c: MSTORE
0000134d: SWAP1
0000134e: SWAP2
0000134f: MSTORE
00001350: SWAP1
00001351: KECCAK256
00001352: SLOAD
00001353: SWAP1
00001354: SWAP2
00001355: POP
00001356: PUSH1 0x01
00001358: PUSH1 0x01
0000135a: PUSH1 0x80
0000135c: SHL
0000135d: SUB
0000135e: AND
0000135f: DUP10
00001360: GT
00001361: ISZERO
00001362: PUSH3 0x00137f
00001366: JUMPI
00001367: PUSH1 0x40
00001369: MLOAD
0000136a: PUSH4 0xbb55fd27
0000136f: PUSH1 0xe0
00001371: SHL
00001372: DUP2
00001373: MSTORE
00001374: PUSH1 0x04
00001376: ADD
00001377: PUSH1 0x40
00001379: MLOAD
0000137a: DUP1
0000137b: SWAP2
0000137c: SUB
0000137d: SWAP1
0000137e: REVERT
0000137f: JUMPDEST
00001380: CALLER
00001381: PUSH0
00001382: SWAP1
00001383: DUP2
00001384: MSTORE
00001385: PUSH1 0x09
00001387: PUSH1 0x20
00001389: SWAP1
0000138a: DUP2
0000138b: MSTORE
0000138c: PUSH1 0x40
0000138e: DUP1
0000138f: DUP4
00001390: KECCAK256
00001391: DUP14
00001392: DUP5
00001393: MSTORE
00001394: SWAP1
00001395: SWAP2
00001396: MSTORE
00001397: DUP2
00001398: KECCAK256
00001399: DUP1
0000139a: SLOAD
0000139b: DUP12
0000139c: SWAP3
0000139d: SWAP1
0000139e: PUSH3 0x0013b3
000013a2: SWAP1
000013a3: DUP5
000013a4: SWAP1
000013a5: PUSH1 0x01
000013a7: PUSH1 0x01
000013a9: PUSH1 0x80
000013ab: SHL
000013ac: SUB
000013ad: AND
000013ae: PUSH3 0x001e47
000013b2: JUMP
000013b3: JUMPDEST
000013b4: SWAP3
000013b5: POP
000013b6: PUSH2 0x0100
000013b9: EXP
000013ba: DUP2
000013bb: SLOAD
000013bc: DUP2
000013bd: PUSH1 0x01
000013bf: PUSH1 0x01
000013c1: PUSH1 0x80
000013c3: SHL
000013c4: SUB
000013c5: MUL
000013c6: NOT
000013c7: AND
000013c8: SWAP1
000013c9: DUP4
000013ca: PUSH1 0x01
000013cc: PUSH1 0x01
000013ce: PUSH1 0x80
000013d0: SHL
000013d1: SUB
000013d2: AND
000013d3: MUL
000013d4: OR
000013d5: SWAP1
000013d6: SSTORE
000013d7: POP
000013d8: DUP9
000013d9: PUSH0
000013da: SUB
000013db: PUSH3 0x0013f8
000013df: JUMPI
000013e0: PUSH1 0x40
000013e2: MLOAD
000013e3: PUSH4 0xbb55fd27
000013e8: PUSH1 0xe0
000013ea: SHL
000013eb: DUP2
000013ec: MSTORE
000013ed: PUSH1 0x04
000013ef: ADD
000013f0: PUSH1 0x40
000013f2: MLOAD
000013f3: DUP1
000013f4: SWAP2
000013f5: SUB
000013f6: SWAP1
000013f7: REVERT
000013f8: JUMPDEST
000013f9: PUSH1 0x03
000013fb: SLOAD
000013fc: PUSH0
000013fd: DUP2
000013fe: PUSH3 0x001409
00001402: DUP6
00001403: DUP14
00001404: PUSH3 0x001dd9
00001408: JUMP
00001409: JUMPDEST
0000140a: PUSH3 0x001415
0000140e: SWAP2
0000140f: SWAP1
00001410: PUSH3 0x001e07
00001414: JUMP
00001415: JUMPDEST
00001416: SWAP1
00001417: POP
00001418: PUSH0
00001419: DUP3
0000141a: PUSH3 0x001425
0000141e: DUP6
0000141f: DUP15
00001420: PUSH3 0x001dd9
00001424: JUMP
00001425: JUMPDEST
00001426: PUSH3 0x001431
0000142a: SWAP2
0000142b: SWAP1
0000142c: PUSH3 0x001e07
00001430: JUMP
00001431: JUMPDEST
00001432: SWAP1
00001433: POP
00001434: DUP12
00001435: PUSH1 0x03
00001437: SLOAD
00001438: PUSH3 0x001443
0000143c: SWAP2
0000143d: SWAP1
0000143e: PUSH3 0x001dc3
00001442: JUMP
00001443: JUMPDEST
00001444: PUSH1 0x03
00001446: SSTORE
00001447: DUP2
00001448: ISZERO
00001449: DUP1
0000144a: PUSH3 0x001452
0000144e: JUMPI
0000144f: POP
00001450: DUP1
00001451: ISZERO
00001452: JUMPDEST
00001453: ISZERO
00001454: PUSH3 0x001471
00001458: JUMPI
00001459: PUSH1 0x40
0000145b: MLOAD
0000145c: PUSH4 0x749383ad
00001461: PUSH1 0xe0
00001463: SHL
00001464: DUP2
00001465: MSTORE
00001466: PUSH1 0x04
00001468: ADD
00001469: PUSH1 0x40
0000146b: MLOAD
0000146c: DUP1
0000146d: SWAP2
0000146e: SUB
0000146f: SWAP1
00001470: REVERT
00001471: JUMPDEST
00001472: PUSH1 0x01
00001474: SLOAD
00001475: PUSH3 0x00148a
00001479: SWAP1
0000147a: PUSH1 0x01
0000147c: PUSH1 0x01
0000147e: PUSH1 0xa0
00001480: SHL
00001481: SUB
00001482: AND
00001483: DUP16
00001484: DUP5
00001485: PUSH3 0x001a79
00001489: JUMP
0000148a: JUMPDEST
0000148b: PUSH1 0x02
0000148d: SLOAD
0000148e: PUSH3 0x0014a3
00001492: SWAP1
00001493: PUSH1 0x01
00001495: PUSH1 0x01
00001497: PUSH1 0xa0
00001499: SHL
0000149a: SUB
0000149b: AND
0000149c: DUP16
0000149d: DUP4
0000149e: PUSH3 0x001a79
000014a2: JUMP
000014a3: JUMPDEST
000014a4: PUSH1 0x04
000014a6: DUP1
000014a7: SLOAD
000014a8: PUSH1 0x01
000014aa: SLOAD
000014ab: PUSH1 0x40
000014ad: MLOAD
000014ae: PUSH4 0x70a08231
000014b3: PUSH1 0xe0
000014b5: SHL
000014b6: DUP2
000014b7: MSTORE
000014b8: ADDRESS
000014b9: SWAP4
000014ba: DUP2
000014bb: ADD
000014bc: SWAP4
000014bd: SWAP1
000014be: SWAP4
000014bf: MSTORE
000014c0: SWAP1
000014c1: SWAP2
000014c2: PUSH1 0x01
000014c4: PUSH1 0x01
000014c6: PUSH1 0xa0
000014c8: SHL
000014c9: SUB
000014ca: SWAP1
000014cb: SWAP2
000014cc: AND
000014cd: SWAP1
000014ce: PUSH4 0x70a08231
000014d3: SWAP1
000014d4: PUSH1 0x24
000014d6: ADD
000014d7: PUSH1 0x20
000014d9: PUSH1 0x40
000014db: MLOAD
000014dc: DUP1
000014dd: DUP4
000014de: SUB
000014df: DUP2
000014e0: DUP7
000014e1: GAS
000014e2: STATICCALL
000014e3: ISZERO
000014e4: DUP1
000014e5: ISZERO
000014e6: PUSH3 0x0014f2
000014ea: JUMPI
000014eb: RETURNDATASIZE
000014ec: PUSH0
000014ed: DUP1
000014ee: RETURNDATACOPY
000014ef: RETURNDATASIZE
000014f0: PUSH0
000014f1: REVERT
000014f2: JUMPDEST
000014f3: POP
000014f4: POP
000014f5: POP
000014f6: POP
000014f7: PUSH1 0x40
000014f9: MLOAD
000014fa: RETURNDATASIZE
000014fb: PUSH1 0x1f
000014fd: NOT
000014fe: PUSH1 0x1f
00001500: DUP3
00001501: ADD
00001502: AND
00001503: DUP3
00001504: ADD
00001505: DUP1
00001506: PUSH1 0x40
00001508: MSTORE
00001509: POP
0000150a: DUP2
0000150b: ADD
0000150c: SWAP1
0000150d: PUSH3 0x001518
00001511: SWAP2
00001512: SWAP1
00001513: PUSH3 0x001dab
00001517: JUMP
00001518: JUMPDEST
00001519: PUSH3 0x001524
0000151d: SWAP2
0000151e: SWAP1
0000151f: PUSH3 0x001dc3
00001523: JUMP
00001524: JUMPDEST
00001525: PUSH1 0x02
00001527: SLOAD
00001528: PUSH1 0x40
0000152a: MLOAD
0000152b: PUSH4 0x70a08231
00001530: PUSH1 0xe0
00001532: SHL
00001533: DUP2
00001534: MSTORE
00001535: ADDRESS
00001536: PUSH1 0x04
00001538: DUP3
00001539: ADD
0000153a: MSTORE
0000153b: SWAP2
0000153c: SWAP7
0000153d: POP
0000153e: PUSH1 0x01
00001540: PUSH1 0x01
00001542: PUSH1 0xa0
00001544: SHL
00001545: SUB
00001546: AND
00001547: SWAP1
00001548: PUSH4 0x70a08231
0000154d: SWAP1
0000154e: PUSH1 0x24
00001550: ADD
00001551: PUSH1 0x20
00001553: PUSH1 0x40
00001555: MLOAD
00001556: DUP1
00001557: DUP4
00001558: SUB
00001559: DUP2
0000155a: DUP7
0000155b: GAS
0000155c: STATICCALL
0000155d: ISZERO
0000155e: DUP1
0000155f: ISZERO
00001560: PUSH3 0x00156c
00001564: JUMPI
00001565: RETURNDATASIZE
00001566: PUSH0
00001567: DUP1
00001568: RETURNDATACOPY
00001569: RETURNDATASIZE
0000156a: PUSH0
0000156b: REVERT
0000156c: JUMPDEST
0000156d: POP
0000156e: POP
0000156f: POP
00001570: POP
00001571: PUSH1 0x40
00001573: MLOAD
00001574: RETURNDATASIZE
00001575: PUSH1 0x1f
00001577: NOT
00001578: PUSH1 0x1f
0000157a: DUP3
0000157b: ADD
0000157c: AND
0000157d: DUP3
0000157e: ADD
0000157f: DUP1
00001580: PUSH1 0x40
00001582: MSTORE
00001583: POP
00001584: DUP2
00001585: ADD
00001586: SWAP1
00001587: PUSH3 0x001592
0000158b: SWAP2
0000158c: SWAP1
0000158d: PUSH3 0x001dab
00001591: JUMP
00001592: JUMPDEST
00001593: SWAP4
00001594: POP
00001595: PUSH3 0x0015a2
00001599: DUP6
0000159a: DUP6
0000159b: DUP10
0000159c: DUP10
0000159d: PUSH3 0x001867
000015a1: JUMP
000015a2: JUMPDEST
000015a3: DUP14
000015a4: PUSH1 0x01
000015a6: PUSH1 0x01
000015a8: PUSH1 0xa0
000015aa: SHL
000015ab: SUB
000015ac: AND
000015ad: CALLER
000015ae: PUSH1 0x01
000015b0: PUSH1 0x01
000015b2: PUSH1 0xa0
000015b4: SHL
000015b5: SUB
000015b6: AND
000015b7: PUSH32 0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496
000015d8: DUP5
000015d9: DUP5
000015da: PUSH1 0x40
000015dc: MLOAD
000015dd: PUSH3 0x0015f1
000015e1: SWAP3
000015e2: SWAP2
000015e3: SWAP1
000015e4: SWAP2
000015e5: DUP3
000015e6: MSTORE
000015e7: PUSH1 0x20
000015e9: DUP3
000015ea: ADD
000015eb: MSTORE
000015ec: PUSH1 0x40
000015ee: ADD
000015ef: SWAP1
000015f0: JUMP
000015f1: JUMPDEST
000015f2: PUSH1 0x40
000015f4: MLOAD
000015f5: DUP1
000015f6: SWAP2
000015f7: SUB
000015f8: SWAP1
000015f9: LOG3
000015fa: PUSH1 0x01
000015fc: PUSH0
000015fd: SSTORE
000015fe: SWAP1
000015ff: SWAP14
00001600: SWAP1
00001601: SWAP13
00001602: POP
00001603: SWAP11
00001604: POP
00001605: POP
00001606: POP
00001607: POP
00001608: POP
00001609: POP
0000160a: POP
0000160b: POP
0000160c: POP
0000160d: POP
0000160e: POP
0000160f: JUMP
00001610: JUMPDEST
00001611: PUSH0
00001612: SLOAD
00001613: PUSH1 0x01
00001615: EQ
00001616: PUSH3 0x001634
0000161a: JUMPI
0000161b: PUSH1 0x40
0000161d: MLOAD
0000161e: PUSH3 0x461bcd
00001622: PUSH1 0xe5
00001624: SHL
00001625: DUP2
00001626: MSTORE
00001627: PUSH1 0x04
00001629: ADD
0000162a: PUSH3 0x000428
0000162e: SWAP1
0000162f: PUSH3 0x001d5d
00001633: JUMP
00001634: JUMPDEST
00001635: PUSH1 0x02
00001637: PUSH0
00001638: SSTORE
00001639: PUSH1 0x04
0000163b: DUP1
0000163c: SLOAD
0000163d: PUSH1 0x01
0000163f: SLOAD
00001640: PUSH1 0x40
00001642: MLOAD
00001643: PUSH4 0x70a08231
00001648: PUSH1 0xe0
0000164a: SHL
0000164b: DUP2
0000164c: MSTORE
0000164d: ADDRESS
0000164e: SWAP4
0000164f: DUP2
00001650: ADD
00001651: SWAP4
00001652: SWAP1
00001653: SWAP4
00001654: MSTORE
00001655: PUSH3 0x001746
00001659: SWAP3
0000165a: PUSH1 0x01
0000165c: PUSH1 0x01
0000165e: PUSH1 0xa0
00001660: SHL
00001661: SUB
00001662: SWAP1
00001663: SWAP2
00001664: AND
00001665: SWAP1
00001666: PUSH4 0x70a08231
0000166b: SWAP1
0000166c: PUSH1 0x24
0000166e: ADD
0000166f: PUSH1 0x20
00001671: PUSH1 0x40
00001673: MLOAD
00001674: DUP1
00001675: DUP4
00001676: SUB
00001677: DUP2
00001678: DUP7
00001679: GAS
0000167a: STATICCALL
0000167b: ISZERO
0000167c: DUP1
0000167d: ISZERO
0000167e: PUSH3 0x00168a
00001682: JUMPI
00001683: RETURNDATASIZE
00001684: PUSH0
00001685: DUP1
00001686: RETURNDATACOPY
00001687: RETURNDATASIZE
00001688: PUSH0
00001689: REVERT
0000168a: JUMPDEST
0000168b: POP
0000168c: POP
0000168d: POP
0000168e: POP
0000168f: PUSH1 0x40
00001691: MLOAD
00001692: RETURNDATASIZE
00001693: PUSH1 0x1f
00001695: NOT
00001696: PUSH1 0x1f
00001698: DUP3
00001699: ADD
0000169a: AND
0000169b: DUP3
0000169c: ADD
0000169d: DUP1
0000169e: PUSH1 0x40
000016a0: MSTORE
000016a1: POP
000016a2: DUP2
000016a3: ADD
000016a4: SWAP1
000016a5: PUSH3 0x0016b0
000016a9: SWAP2
000016aa: SWAP1
000016ab: PUSH3 0x001dab
000016af: JUMP
000016b0: JUMPDEST
000016b1: PUSH3 0x0016bc
000016b5: SWAP2
000016b6: SWAP1
000016b7: PUSH3 0x001dc3
000016bb: JUMP
000016bc: JUMPDEST
000016bd: PUSH1 0x02
000016bf: SLOAD
000016c0: PUSH1 0x40
000016c2: MLOAD
000016c3: PUSH4 0x70a08231
000016c8: PUSH1 0xe0
000016ca: SHL
000016cb: DUP2
000016cc: MSTORE
000016cd: ADDRESS
000016ce: PUSH1 0x04
000016d0: DUP3
000016d1: ADD
000016d2: MSTORE
000016d3: PUSH1 0x01
000016d5: PUSH1 0x01
000016d7: PUSH1 0xa0
000016d9: SHL
000016da: SUB
000016db: SWAP1
000016dc: SWAP2
000016dd: AND
000016de: SWAP1
000016df: PUSH4 0x70a08231
000016e4: SWAP1
000016e5: PUSH1 0x24
000016e7: ADD
000016e8: PUSH1 0x20
000016ea: PUSH1 0x40
000016ec: MLOAD
000016ed: DUP1
000016ee: DUP4
000016ef: SUB
000016f0: DUP2
000016f1: DUP7
000016f2: GAS
000016f3: STATICCALL
000016f4: ISZERO
000016f5: DUP1
000016f6: ISZERO
000016f7: PUSH3 0x001703
000016fb: JUMPI
000016fc: RETURNDATASIZE
000016fd: PUSH0
000016fe: DUP1
000016ff: RETURNDATACOPY
00001700: RETURNDATASIZE
00001701: PUSH0
00001702: REVERT
00001703: JUMPDEST
00001704: POP
00001705: POP
00001706: POP
00001707: POP
00001708: PUSH1 0x40
0000170a: MLOAD
0000170b: RETURNDATASIZE
0000170c: PUSH1 0x1f
0000170e: NOT
0000170f: PUSH1 0x1f
00001711: DUP3
00001712: ADD
00001713: AND
00001714: DUP3
00001715: ADD
00001716: DUP1
00001717: PUSH1 0x40
00001719: MSTORE
0000171a: POP
0000171b: DUP2
0000171c: ADD
0000171d: SWAP1
0000171e: PUSH3 0x001729
00001722: SWAP2
00001723: SWAP1
00001724: PUSH3 0x001dab
00001728: JUMP
00001729: JUMPDEST
0000172a: PUSH1 0x07
0000172c: SLOAD
0000172d: PUSH1 0x01
0000172f: PUSH1 0x01
00001731: PUSH1 0x70
00001733: SHL
00001734: SUB
00001735: DUP1
00001736: DUP3
00001737: AND
00001738: SWAP2
00001739: PUSH1 0x01
0000173b: PUSH1 0x70
0000173d: SHL
0000173e: SWAP1
0000173f: DIV
00001740: AND
00001741: PUSH3 0x001867
00001745: JUMP
00001746: JUMPDEST
00001747: PUSH1 0x01
00001749: PUSH0
0000174a: SSTORE
0000174b: JUMP
0000174c: JUMPDEST
0000174d: PUSH1 0x01
0000174f: PUSH1 0x01
00001751: PUSH1 0xa0
00001753: SHL
00001754: SUB
00001755: DUP4
00001756: AND
00001757: PUSH0
00001758: SWAP1
00001759: DUP2
0000175a: MSTORE
0000175b: PUSH1 0x09
0000175d: PUSH1 0x20
0000175f: SWAP1
00001760: DUP2
00001761: MSTORE
00001762: PUSH1 0x40
00001764: DUP1
00001765: DUP4
00001766: KECCAK256
00001767: DUP6
00001768: DUP5
00001769: MSTORE
0000176a: SWAP1
0000176b: SWAP2
0000176c: MSTORE
0000176d: DUP2
0000176e: KECCAK256
0000176f: PUSH1 0x02
00001771: ADD
00001772: SLOAD
00001773: DUP2
00001774: SWAP1
00001775: PUSH3 0x001780
00001779: SWAP1
0000177a: DUP5
0000177b: PUSH3 0x001dc3
0000177f: JUMP
00001780: JUMPDEST
00001781: PUSH1 0x01
00001783: PUSH1 0x01
00001785: PUSH1 0xa0
00001787: SHL
00001788: SUB
00001789: DUP7
0000178a: AND
0000178b: PUSH0
0000178c: SWAP1
0000178d: DUP2
0000178e: MSTORE
0000178f: PUSH1 0x09
00001791: PUSH1 0x20
00001793: SWAP1
00001794: DUP2
00001795: MSTORE
00001796: PUSH1 0x40
00001798: DUP1
00001799: DUP4
0000179a: KECCAK256
0000179b: DUP9
0000179c: DUP5
0000179d: MSTORE
0000179e: SWAP1
0000179f: SWAP2
000017a0: MSTORE
000017a1: SWAP1
000017a2: KECCAK256
000017a3: SLOAD
000017a4: SWAP1
000017a5: SWAP2
000017a6: POP
000017a7: PUSH8 0x0de0b6b3a7640000
000017b0: SWAP1
000017b1: PUSH3 0x0017c6
000017b5: SWAP1
000017b6: DUP4
000017b7: SWAP1
000017b8: PUSH1 0x01
000017ba: PUSH1 0x01
000017bc: PUSH1 0x80
000017be: SHL
000017bf: SUB
000017c0: AND
000017c1: PUSH3 0x001dd9
000017c5: JUMP
000017c6: JUMPDEST
000017c7: PUSH3 0x001124
000017cb: SWAP2
000017cc: SWAP1
000017cd: PUSH3 0x001e07
000017d1: JUMP
000017d2: JUMPDEST
000017d3: PUSH0
000017d4: PUSH1 0x03
000017d6: DUP3
000017d7: GT
000017d8: ISZERO
000017d9: PUSH3 0x00183e
000017dd: JUMPI
000017de: POP
000017df: DUP1
000017e0: PUSH0
000017e1: PUSH3 0x0017ed
000017e5: PUSH1 0x02
000017e7: DUP4
000017e8: PUSH3 0x001e07
000017ec: JUMP
000017ed: JUMPDEST
000017ee: PUSH3 0x0017fa
000017f2: SWAP1
000017f3: PUSH1 0x01
000017f5: PUSH3 0x001d95
000017f9: JUMP
000017fa: JUMPDEST
000017fb: SWAP1
000017fc: POP
000017fd: JUMPDEST
000017fe: DUP2
000017ff: DUP2
00001800: LT
00001801: ISZERO
00001802: PUSH3 0x001838
00001806: JUMPI
00001807: SWAP1
00001808: POP
00001809: DUP1
0000180a: PUSH1 0x02
0000180c: DUP2
0000180d: PUSH3 0x001818
00001811: DUP2
00001812: DUP7
00001813: PUSH3 0x001e07
00001817: JUMP
00001818: JUMPDEST
00001819: PUSH3 0x001824
0000181d: SWAP2
0000181e: SWAP1
0000181f: PUSH3 0x001d95
00001823: JUMP
00001824: JUMPDEST
00001825: PUSH3 0x001830
00001829: SWAP2
0000182a: SWAP1
0000182b: PUSH3 0x001e07
0000182f: JUMP
00001830: JUMPDEST
00001831: SWAP1
00001832: POP
00001833: PUSH3 0x0017fd
00001837: JUMP
00001838: JUMPDEST
00001839: POP
0000183a: SWAP2
0000183b: SWAP1
0000183c: POP
0000183d: JUMP
0000183e: JUMPDEST
0000183f: DUP2
00001840: ISZERO
00001841: PUSH3 0x001849
00001845: JUMPI
00001846: POP
00001847: PUSH1 0x01
00001849: JUMPDEST
0000184a: SWAP2
0000184b: SWAP1
0000184c: POP
0000184d: JUMP
0000184e: JUMPDEST
0000184f: PUSH0
00001850: DUP2
00001851: DUP4
00001852: LT
00001853: PUSH3 0x00185e
00001857: JUMPI
00001858: DUP2
00001859: PUSH3 0x001860
0000185d: JUMP
0000185e: JUMPDEST
0000185f: DUP3
00001860: JUMPDEST
00001861: SWAP4
00001862: SWAP3
00001863: POP
00001864: POP
00001865: POP
00001866: JUMP
00001867: JUMPDEST
00001868: PUSH1 0x01
0000186a: PUSH1 0x01
0000186c: PUSH1 0x70
0000186e: SHL
0000186f: SUB
00001870: DUP5
00001871: GT
00001872: DUP1
00001873: PUSH3 0x001883
00001877: JUMPI
00001878: POP
00001879: PUSH1 0x01
0000187b: PUSH1 0x01
0000187d: PUSH1 0x70
0000187f: SHL
00001880: SUB
00001881: DUP4
00001882: GT
00001883: JUMPDEST
00001884: ISZERO
00001885: PUSH3 0x0018a2
00001889: JUMPI
0000188a: PUSH1 0x40
0000188c: MLOAD
0000188d: PUSH4 0x89560ca1
00001892: PUSH1 0xe0
00001894: SHL
00001895: DUP2
00001896: MSTORE
00001897: PUSH1 0x04
00001899: ADD
0000189a: PUSH1 0x40
0000189c: MLOAD
0000189d: DUP1
0000189e: SWAP2
0000189f: SUB
000018a0: SWAP1
000018a1: REVERT
000018a2: JUMPDEST
000018a3: PUSH0
000018a4: PUSH3 0x0018b4
000018a8: PUSH5 0x0100000000
000018ae: TIMESTAMP
000018af: PUSH3 0x001e6a
000018b3: JUMP
000018b4: JUMPDEST
000018b5: PUSH1 0x07
000018b7: SLOAD
000018b8: SWAP1
000018b9: SWAP2
000018ba: POP
000018bb: PUSH4 0xffffffff
000018c0: PUSH1 0x01
000018c2: PUSH1 0xe0
000018c4: SHL
000018c5: SWAP1
000018c6: SWAP2
000018c7: DIV
000018c8: DUP2
000018c9: AND
000018ca: DUP3
000018cb: SUB
000018cc: SWAP1
000018cd: DUP2
000018ce: AND
000018cf: ISZERO
000018d0: DUP1
000018d1: ISZERO
000018d2: SWAP1
000018d3: PUSH3 0x0018e5
000018d7: JUMPI
000018d8: POP
000018d9: PUSH1 0x01
000018db: PUSH1 0x01
000018dd: PUSH1 0x70
000018df: SHL
000018e0: SUB
000018e1: DUP5
000018e2: AND
000018e3: ISZERO
000018e4: ISZERO
000018e5: JUMPDEST
000018e6: DUP1
000018e7: ISZERO
000018e8: PUSH3 0x0018fa
000018ec: JUMPI
000018ed: POP
000018ee: PUSH1 0x01
000018f0: PUSH1 0x01
000018f2: PUSH1 0x70
000018f4: SHL
000018f5: SUB
000018f6: DUP4
000018f7: AND
000018f8: ISZERO
000018f9: ISZERO
000018fa: JUMPDEST
000018fb: ISZERO
000018fc: PUSH3 0x00194f
00001900: JUMPI
00001901: DUP1
00001902: PUSH4 0xffffffff
00001907: AND
00001908: PUSH3 0x001927
0000190c: DUP5
0000190d: PUSH3 0x001917
00001911: DUP8
00001912: PUSH3 0x001c09
00001916: JUMP
00001917: JUMPDEST
00001918: PUSH1 0x01
0000191a: PUSH1 0x01
0000191c: PUSH1 0xe0
0000191e: SHL
0000191f: SUB
00001920: AND
00001921: SWAP1
00001922: PUSH3 0x001c23
00001926: JUMP
00001927: JUMPDEST
00001928: PUSH1 0x01
0000192a: PUSH1 0x01
0000192c: PUSH1 0xe0
0000192e: SHL
0000192f: SUB
00001930: AND
00001931: PUSH3 0x00193c
00001935: SWAP2
00001936: SWAP1
00001937: PUSH3 0x001dd9
0000193b: JUMP
0000193c: JUMPDEST
0000193d: PUSH1 0x05
0000193f: SLOAD
00001940: PUSH3 0x00194b
00001944: SWAP2
00001945: SWAP1
00001946: PUSH3 0x001d95
0000194a: JUMP
0000194b: JUMPDEST
0000194c: PUSH1 0x05
0000194e: SSTORE
0000194f: JUMPDEST
00001950: PUSH1 0x07
00001952: DUP1
00001953: SLOAD
00001954: PUSH4 0xffffffff
00001959: DUP5
0000195a: AND
0000195b: PUSH1 0x01
0000195d: PUSH1 0xe0
0000195f: SHL
00001960: MUL
00001961: PUSH1 0x01
00001963: PUSH1 0x01
00001965: PUSH1 0xe0
00001967: SHL
00001968: SUB
00001969: PUSH1 0x01
0000196b: PUSH1 0x01
0000196d: PUSH1 0x70
0000196f: SHL
00001970: SUB
00001971: DUP10
00001972: DUP2
00001973: AND
00001974: PUSH1 0x01
00001976: PUSH1 0x70
00001978: SHL
00001979: SWAP1
0000197a: DUP2
0000197b: MUL
0000197c: PUSH1 0x01
0000197e: PUSH1 0x01
00001980: PUSH1 0xe0
00001982: SHL
00001983: SUB
00001984: NOT
00001985: SWAP1
00001986: SWAP6
00001987: AND
00001988: DUP13
00001989: DUP4
0000198a: AND
0000198b: OR
0000198c: SWAP5
0000198d: SWAP1
0000198e: SWAP5
0000198f: OR
00001990: SWAP2
00001991: DUP3
00001992: AND
00001993: DUP4
00001994: OR
00001995: SWAP5
00001996: DUP6
00001997: SWAP1
00001998: SSTORE
00001999: PUSH1 0x40
0000199b: DUP1
0000199c: MLOAD
0000199d: SWAP4
0000199e: DUP3
0000199f: AND
000019a0: SWAP3
000019a1: DUP3
000019a2: AND
000019a3: SWAP3
000019a4: SWAP1
000019a5: SWAP3
000019a6: OR
000019a7: DUP4
000019a8: MSTORE
000019a9: SWAP3
000019aa: SWAP1
000019ab: SWAP4
000019ac: DIV
000019ad: SWAP1
000019ae: SWAP2
000019af: AND
000019b0: PUSH1 0x20
000019b2: DUP3
000019b3: ADD
000019b4: MSTORE
000019b5: PUSH32 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1
000019d6: SWAP2
000019d7: ADD
000019d8: PUSH1 0x40
000019da: MLOAD
000019db: DUP1
000019dc: SWAP2
000019dd: SUB
000019de: SWAP1
000019df: LOG1
000019e0: POP
000019e1: POP
000019e2: POP
000019e3: POP
000019e4: POP
000019e5: POP
000019e6: JUMP
000019e7: JUMPDEST
000019e8: PUSH1 0x02
000019ea: SLOAD
000019eb: PUSH1 0x05
000019ed: SLOAD
000019ee: PUSH1 0x07
000019f0: SLOAD
000019f1: PUSH1 0x40
000019f3: MLOAD
000019f4: PUSH1 0x01
000019f6: PUSH1 0x01
000019f8: PUSH1 0xa0
000019fa: SHL
000019fb: SUB
000019fc: SWAP1
000019fd: SWAP4
000019fe: AND
000019ff: SWAP3
00001a00: PUSH1 0x01
00001a02: PUSH1 0xe0
00001a04: SHL
00001a05: SWAP1
00001a06: SWAP2
00001a07: DIV
00001a08: PUSH4 0xffffffff
00001a0d: AND
00001a0e: SWAP1
00001a0f: PUSH3 0x001a19
00001a13: SWAP1
00001a14: PUSH3 0x001c39
00001a18: JUMP
00001a19: JUMPDEST
00001a1a: PUSH1 0x01
00001a1c: PUSH1 0x01
00001a1e: PUSH1 0xa0
00001a20: SHL
00001a21: SUB
00001a22: SWAP1
00001a23: SWAP4
00001a24: AND
00001a25: DUP4
00001a26: MSTORE
00001a27: PUSH1 0x20
00001a29: DUP4
00001a2a: ADD
00001a2b: SWAP2
00001a2c: SWAP1
00001a2d: SWAP2
00001a2e: MSTORE
00001a2f: PUSH4 0xffffffff
00001a34: AND
00001a35: PUSH1 0x40
00001a37: DUP3
00001a38: ADD
00001a39: MSTORE
00001a3a: PUSH1 0x60
00001a3c: ADD
00001a3d: PUSH1 0x40
00001a3f: MLOAD
00001a40: DUP1
00001a41: SWAP2
00001a42: SUB
00001a43: SWAP1
00001a44: PUSH0
00001a45: CREATE
00001a46: DUP1
00001a47: ISZERO
00001a48: DUP1
00001a49: ISZERO
00001a4a: PUSH3 0x001a56
00001a4e: JUMPI
00001a4f: RETURNDATASIZE
00001a50: PUSH0
00001a51: DUP1
00001a52: RETURNDATACOPY
00001a53: RETURNDATASIZE
00001a54: PUSH0
00001a55: REVERT
00001a56: JUMPDEST
00001a57: POP
00001a58: PUSH1 0x06
00001a5a: DUP1
00001a5b: SLOAD
00001a5c: PUSH1 0x01
00001a5e: PUSH1 0x01
00001a60: PUSH1 0xa0
00001a62: SHL
00001a63: SUB
00001a64: NOT
00001a65: AND
00001a66: PUSH1 0x01
00001a68: PUSH1 0x01
00001a6a: PUSH1 0xa0
00001a6c: SHL
00001a6d: SUB
00001a6e: SWAP3
00001a6f: SWAP1
00001a70: SWAP3
00001a71: AND
00001a72: SWAP2
00001a73: SWAP1
00001a74: SWAP2
00001a75: OR
00001a76: SWAP1
00001a77: SSTORE
00001a78: JUMP
00001a79: JUMPDEST
00001a7a: PUSH1 0x40
00001a7c: DUP1
00001a7d: MLOAD
00001a7e: PUSH1 0x01
00001a80: PUSH1 0x01
00001a82: PUSH1 0xa0
00001a84: SHL
00001a85: SUB
00001a86: DUP5
00001a87: DUP2
00001a88: AND
00001a89: PUSH1 0x24
00001a8b: DUP4
00001a8c: ADD
00001a8d: MSTORE
00001a8e: PUSH1 0x44
00001a90: DUP1
00001a91: DUP4
00001a92: ADD
00001a93: DUP6
00001a94: SWAP1
00001a95: MSTORE
00001a96: DUP4
00001a97: MLOAD
00001a98: DUP1
00001a99: DUP5
00001a9a: SUB
00001a9b: SWAP1
00001a9c: SWAP2
00001a9d: ADD
00001a9e: DUP2
00001a9f: MSTORE
00001aa0: PUSH1 0x64
00001aa2: SWAP1
00001aa3: SWAP3
00001aa4: ADD
00001aa5: DUP4
00001aa6: MSTORE
00001aa7: PUSH1 0x20
00001aa9: DUP3
00001aaa: ADD
00001aab: DUP1
00001aac: MLOAD
00001aad: PUSH1 0x01
00001aaf: PUSH1 0x01
00001ab1: PUSH1 0xe0
00001ab3: SHL
00001ab4: SUB
00001ab5: AND
00001ab6: PUSH4 0xa9059cbb
00001abb: PUSH1 0xe0
00001abd: SHL
00001abe: OR
00001abf: SWAP1
00001ac0: MSTORE
00001ac1: SWAP2
00001ac2: MLOAD
00001ac3: PUSH0
00001ac4: SWAP3
00001ac5: DUP4
00001ac6: SWAP3
00001ac7: SWAP1
00001ac8: DUP8
00001ac9: AND
00001aca: SWAP2
00001acb: PUSH3 0x001ad6
00001acf: SWAP2
00001ad0: SWAP1
00001ad1: PUSH3 0x001e80
00001ad5: JUMP
00001ad6: JUMPDEST
00001ad7: PUSH0
00001ad8: PUSH1 0x40
00001ada: MLOAD
00001adb: DUP1
00001adc: DUP4
00001add: SUB
00001ade: DUP2
00001adf: PUSH0
00001ae0: DUP7
00001ae1: GAS
00001ae2: CALL
00001ae3: SWAP2
00001ae4: POP
00001ae5: POP
00001ae6: RETURNDATASIZE
00001ae7: DUP1
00001ae8: PUSH0
00001ae9: DUP2
00001aea: EQ
00001aeb: PUSH3 0x001b11
00001aef: JUMPI
00001af0: PUSH1 0x40
00001af2: MLOAD
00001af3: SWAP2
00001af4: POP
00001af5: PUSH1 0x1f
00001af7: NOT
00001af8: PUSH1 0x3f
00001afa: RETURNDATASIZE
00001afb: ADD
00001afc: AND
00001afd: DUP3
00001afe: ADD
00001aff: PUSH1 0x40
00001b01: MSTORE
00001b02: RETURNDATASIZE
00001b03: DUP3
00001b04: MSTORE
00001b05: RETURNDATASIZE
00001b06: PUSH0
00001b07: PUSH1 0x20
00001b09: DUP5
00001b0a: ADD
00001b0b: RETURNDATACOPY
00001b0c: PUSH3 0x001b16
00001b10: JUMP
00001b11: JUMPDEST
00001b12: PUSH1 0x60
00001b14: SWAP2
00001b15: POP
00001b16: JUMPDEST
00001b17: POP
00001b18: SWAP2
00001b19: POP
00001b1a: SWAP2
00001b1b: POP
00001b1c: DUP2
00001b1d: DUP1
00001b1e: ISZERO
00001b1f: PUSH3 0x001b44
00001b23: JUMPI
00001b24: POP
00001b25: DUP1
00001b26: MLOAD
00001b27: ISZERO
00001b28: DUP1
00001b29: PUSH3 0x001b44
00001b2d: JUMPI
00001b2e: POP
00001b2f: DUP1
00001b30: DUP1
00001b31: PUSH1 0x20
00001b33: ADD
00001b34: SWAP1
00001b35: MLOAD
00001b36: DUP2
00001b37: ADD
00001b38: SWAP1
00001b39: PUSH3 0x001b44
00001b3d: SWAP2
00001b3e: SWAP1
00001b3f: PUSH3 0x001eae
00001b43: JUMP
00001b44: JUMPDEST
00001b45: PUSH3 0x001ba8
00001b49: JUMPI
00001b4a: PUSH1 0x40
00001b4c: MLOAD
00001b4d: PUSH3 0x461bcd
00001b51: PUSH1 0xe5
00001b53: SHL
00001b54: DUP2
00001b55: MSTORE
00001b56: PUSH1 0x20
00001b58: PUSH1 0x04
00001b5a: DUP3
00001b5b: ADD
00001b5c: MSTORE
00001b5d: PUSH1 0x2d
00001b5f: PUSH1 0x24
00001b61: DUP3
00001b62: ADD
00001b63: MSTORE
00001b64: PUSH32 0x5472616e7366657248656c7065723a3a736166655472616e736665723a207472
00001b85: PUSH1 0x44
00001b87: DUP3
00001b88: ADD
00001b89: MSTORE
00001b8a: PUSH13 0x185b9cd9995c8819985a5b1959
00001b98: PUSH1 0x9a
00001b9a: SHL
00001b9b: PUSH1 0x64
00001b9d: DUP3
00001b9e: ADD
00001b9f: MSTORE
00001ba0: PUSH1 0x84
00001ba2: ADD
00001ba3: PUSH3 0x000428
00001ba7: JUMP
00001ba8: JUMPDEST
00001ba9: POP
00001baa: POP
00001bab: POP
00001bac: POP
00001bad: POP
00001bae: JUMP
00001baf: JUMPDEST
00001bb0: PUSH2 0x03e8
00001bb3: PUSH1 0x03
00001bb5: SLOAD
00001bb6: PUSH3 0x001bc1
00001bba: SWAP2
00001bbb: SWAP1
00001bbc: PUSH3 0x001dc3
00001bc0: JUMP
00001bc1: JUMPDEST
00001bc2: PUSH3 0x001bd5
00001bc6: PUSH8 0x0de0b6b3a7640000
00001bcf: DUP4
00001bd0: PUSH3 0x001dd9
00001bd4: JUMP
00001bd5: JUMPDEST
00001bd6: PUSH3 0x001be1
00001bda: SWAP2
00001bdb: SWAP1
00001bdc: PUSH3 0x001e07
00001be0: JUMP
00001be1: JUMPDEST
00001be2: PUSH1 0x08
00001be4: SLOAD
00001be5: PUSH3 0x001bf0
00001be9: SWAP2
00001bea: SWAP1
00001beb: PUSH3 0x001d95
00001bef: JUMP
00001bf0: JUMPDEST
00001bf1: PUSH1 0x08
00001bf3: SSTORE
00001bf4: PUSH1 0x04
00001bf6: SLOAD
00001bf7: PUSH3 0x001c03
00001bfb: SWAP1
00001bfc: DUP3
00001bfd: SWAP1
00001bfe: PUSH3 0x001d95
00001c02: JUMP
00001c03: JUMPDEST
00001c04: PUSH1 0x04
00001c06: SSTORE
00001c07: POP
00001c08: JUMP
00001c09: JUMPDEST
00001c0a: PUSH0
00001c0b: PUSH3 0x0003fd
00001c0f: PUSH1 0x01
00001c11: PUSH1 0x70
00001c13: SHL
00001c14: PUSH1 0x01
00001c16: PUSH1 0x01
00001c18: PUSH1 0x70
00001c1a: SHL
00001c1b: SUB
00001c1c: DUP5
00001c1d: AND
00001c1e: PUSH3 0x001ecf
00001c22: JUMP
00001c23: JUMPDEST
00001c24: PUSH0
00001c25: PUSH3 0x001860
00001c29: PUSH1 0x01
00001c2b: PUSH1 0x01
00001c2d: PUSH1 0x70
00001c2f: SHL
00001c30: SUB
00001c31: DUP4
00001c32: AND
00001c33: DUP5
00001c34: PUSH3 0x001f04
00001c38: JUMP
00001c39: JUMPDEST
00001c3a: PUSH2 0x0546
00001c3d: DUP1
00001c3e: PUSH3 0x001f2d
00001c42: DUP4
00001c43: CODECOPY
00001c44: ADD
00001c45: SWAP1
00001c46: JUMP
00001c47: JUMPDEST
00001c48: DUP1
00001c49: CALLDATALOAD
00001c4a: PUSH1 0x01
00001c4c: PUSH1 0x01
00001c4e: PUSH1 0xa0
00001c50: SHL
00001c51: SUB
00001c52: DUP2
00001c53: AND
00001c54: DUP2
00001c55: EQ
00001c56: PUSH3 0x001849
00001c5a: JUMPI
00001c5b: PUSH0
00001c5c: DUP1
00001c5d: REVERT
00001c5e: JUMPDEST
00001c5f: PUSH0
00001c60: DUP1
00001c61: PUSH1 0x40
00001c63: DUP4
00001c64: DUP6
00001c65: SUB
00001c66: SLT
00001c67: ISZERO
00001c68: PUSH3 0x001c70
00001c6c: JUMPI
00001c6d: PUSH0
00001c6e: DUP1
00001c6f: REVERT
00001c70: JUMPDEST
00001c71: PUSH3 0x001c7b
00001c75: DUP4
00001c76: PUSH3 0x001c47
00001c7a: JUMP
00001c7b: JUMPDEST
00001c7c: SWAP5
00001c7d: PUSH1 0x20
00001c7f: SWAP4
00001c80: SWAP1
00001c81: SWAP4
00001c82: ADD
00001c83: CALLDATALOAD
00001c84: SWAP4
00001c85: POP
00001c86: POP
00001c87: POP
00001c88: JUMP
00001c89: JUMPDEST
00001c8a: PUSH0
00001c8b: DUP1
00001c8c: PUSH0
00001c8d: PUSH1 0x60
00001c8f: DUP5
00001c90: DUP7
00001c91: SUB
00001c92: SLT
00001c93: ISZERO
00001c94: PUSH3 0x001c9c
00001c98: JUMPI
00001c99: PUSH0
00001c9a: DUP1
00001c9b: REVERT
00001c9c: JUMPDEST
00001c9d: DUP4
00001c9e: CALLDATALOAD
00001c9f: SWAP3
00001ca0: POP
00001ca1: PUSH1 0x20
00001ca3: DUP5
00001ca4: ADD
00001ca5: CALLDATALOAD
00001ca6: SWAP2
00001ca7: POP
00001ca8: PUSH3 0x001cb5
00001cac: PUSH1 0x40
00001cae: DUP6
00001caf: ADD
00001cb0: PUSH3 0x001c47
00001cb4: JUMP
00001cb5: JUMPDEST
00001cb6: SWAP1
00001cb7: POP
00001cb8: SWAP3
00001cb9: POP
00001cba: SWAP3
00001cbb: POP
00001cbc: SWAP3
00001cbd: JUMP
00001cbe: JUMPDEST
00001cbf: PUSH0
00001cc0: DUP1
00001cc1: PUSH0
00001cc2: PUSH1 0x60
00001cc4: DUP5
00001cc5: DUP7
00001cc6: SUB
00001cc7: SLT
00001cc8: ISZERO
00001cc9: PUSH3 0x001cd1
00001ccd: JUMPI
00001cce: PUSH0
00001ccf: DUP1
00001cd0: REVERT
00001cd1: JUMPDEST
00001cd2: PUSH3 0x001cdc
00001cd6: DUP5
00001cd7: PUSH3 0x001c47
00001cdb: JUMP
00001cdc: JUMPDEST
00001cdd: SWAP3
00001cde: POP
00001cdf: PUSH3 0x001cec
00001ce3: PUSH1 0x20
00001ce5: DUP6
00001ce6: ADD
00001ce7: PUSH3 0x001c47
00001ceb: JUMP
00001cec: JUMPDEST
00001ced: SWAP2
00001cee: POP
00001cef: PUSH1 0x40
00001cf1: DUP5
00001cf2: ADD
00001cf3: CALLDATALOAD
00001cf4: PUSH2 0xffff
00001cf7: DUP2
00001cf8: AND
00001cf9: DUP2
00001cfa: EQ
00001cfb: PUSH3 0x001d03
00001cff: JUMPI
00001d00: PUSH0
00001d01: DUP1
00001d02: REVERT
00001d03: JUMPDEST
00001d04: DUP1
00001d05: SWAP2
00001d06: POP
00001d07: POP
00001d08: SWAP3
00001d09: POP
00001d0a: SWAP3
00001d0b: POP
00001d0c: SWAP3
00001d0d: JUMP
00001d0e: JUMPDEST
00001d0f: PUSH0
00001d10: PUSH1 0x20
00001d12: DUP3
00001d13: DUP5
00001d14: SUB
00001d15: SLT
00001d16: ISZERO
00001d17: PUSH3 0x001d1f
00001d1b: JUMPI
00001d1c: PUSH0
00001d1d: DUP1
00001d1e: REVERT
00001d1f: JUMPDEST
00001d20: PUSH3 0x001860
00001d24: DUP3
00001d25: PUSH3 0x001c47
00001d29: JUMP
00001d2a: JUMPDEST
00001d2b: PUSH0
00001d2c: DUP1
00001d2d: PUSH0
00001d2e: PUSH1 0x60
00001d30: DUP5
00001d31: DUP7
00001d32: SUB
00001d33: SLT
00001d34: ISZERO
00001d35: PUSH3 0x001d3d
00001d39: JUMPI
00001d3a: PUSH0
00001d3b: DUP1
00001d3c: REVERT
00001d3d: JUMPDEST
00001d3e: PUSH3 0x001d48
00001d42: DUP5
00001d43: PUSH3 0x001c47
00001d47: JUMP
00001d48: JUMPDEST
00001d49: SWAP6
00001d4a: PUSH1 0x20
00001d4c: DUP6
00001d4d: ADD
00001d4e: CALLDATALOAD
00001d4f: SWAP6
00001d50: POP
00001d51: PUSH1 0x40
00001d53: SWAP1
00001d54: SWAP5
00001d55: ADD
00001d56: CALLDATALOAD
00001d57: SWAP4
00001d58: SWAP3
00001d59: POP
00001d5a: POP
00001d5b: POP
00001d5c: JUMP
00001d5d: JUMPDEST
00001d5e: PUSH1 0x20
00001d60: DUP1
00001d61: DUP3
00001d62: MSTORE
00001d63: PUSH1 0x0a
00001d65: SWAP1
00001d66: DUP3
00001d67: ADD
00001d68: MSTORE
00001d69: PUSH10 0x5245454e5452414e4359
00001d74: PUSH1 0xb0
00001d76: SHL
00001d77: PUSH1 0x40
00001d79: DUP3
00001d7a: ADD
00001d7b: MSTORE
00001d7c: PUSH1 0x60
00001d7e: ADD
00001d7f: SWAP1
00001d80: JUMP
00001d81: JUMPDEST
00001d82: PUSH4 0x4e487b71
00001d87: PUSH1 0xe0
00001d89: SHL
00001d8a: PUSH0
00001d8b: MSTORE
00001d8c: PUSH1 0x11
00001d8e: PUSH1 0x04
00001d90: MSTORE
00001d91: PUSH1 0x24
00001d93: PUSH0
00001d94: REVERT
00001d95: JUMPDEST
00001d96: DUP1
00001d97: DUP3
00001d98: ADD
00001d99: DUP1
00001d9a: DUP3
00001d9b: GT
00001d9c: ISZERO
00001d9d: PUSH3 0x0003fd
00001da1: JUMPI
00001da2: PUSH3 0x0003fd
00001da6: PUSH3 0x001d81
00001daa: JUMP
00001dab: JUMPDEST
00001dac: PUSH0
00001dad: PUSH1 0x20
00001daf: DUP3
00001db0: DUP5
00001db1: SUB
00001db2: SLT
00001db3: ISZERO
00001db4: PUSH3 0x001dbc
00001db8: JUMPI
00001db9: PUSH0
00001dba: DUP1
00001dbb: REVERT
00001dbc: JUMPDEST
00001dbd: POP
00001dbe: MLOAD
00001dbf: SWAP2
00001dc0: SWAP1
00001dc1: POP
00001dc2: JUMP
00001dc3: JUMPDEST
00001dc4: DUP2
00001dc5: DUP2
00001dc6: SUB
00001dc7: DUP2
00001dc8: DUP2
00001dc9: GT
00001dca: ISZERO
00001dcb: PUSH3 0x0003fd
00001dcf: JUMPI
00001dd0: PUSH3 0x0003fd
00001dd4: PUSH3 0x001d81
00001dd8: JUMP
00001dd9: JUMPDEST
00001dda: DUP1
00001ddb: DUP3
00001ddc: MUL
00001ddd: DUP2
00001dde: ISZERO
00001ddf: DUP3
00001de0: DUP3
00001de1: DIV
00001de2: DUP5
00001de3: EQ
00001de4: OR
00001de5: PUSH3 0x0003fd
00001de9: JUMPI
00001dea: PUSH3 0x0003fd
00001dee: PUSH3 0x001d81
00001df2: JUMP
00001df3: JUMPDEST
00001df4: PUSH4 0x4e487b71
00001df9: PUSH1 0xe0
00001dfb: SHL
00001dfc: PUSH0
00001dfd: MSTORE
00001dfe: PUSH1 0x12
00001e00: PUSH1 0x04
00001e02: MSTORE
00001e03: PUSH1 0x24
00001e05: PUSH0
00001e06: REVERT
00001e07: JUMPDEST
00001e08: PUSH0
00001e09: DUP3
00001e0a: PUSH3 0x001e18
00001e0e: JUMPI
00001e0f: PUSH3 0x001e18
00001e13: PUSH3 0x001df3
00001e17: JUMP
00001e18: JUMPDEST
00001e19: POP
00001e1a: DIV
00001e1b: SWAP1
00001e1c: JUMP
00001e1d: JUMPDEST
00001e1e: PUSH1 0x01
00001e20: PUSH1 0x01
00001e22: PUSH1 0x80
00001e24: SHL
00001e25: SUB
00001e26: DUP2
00001e27: DUP2
00001e28: AND
00001e29: DUP4
00001e2a: DUP3
00001e2b: AND
00001e2c: ADD
00001e2d: SWAP1
00001e2e: DUP1
00001e2f: DUP3
00001e30: GT
00001e31: ISZERO
00001e32: PUSH3 0x001e40
00001e36: JUMPI
00001e37: PUSH3 0x001e40
00001e3b: PUSH3 0x001d81
00001e3f: JUMP
00001e40: JUMPDEST
00001e41: POP
00001e42: SWAP3
00001e43: SWAP2
00001e44: POP
00001e45: POP
00001e46: JUMP
00001e47: JUMPDEST
00001e48: PUSH1 0x01
00001e4a: PUSH1 0x01
00001e4c: PUSH1 0x80
00001e4e: SHL
00001e4f: SUB
00001e50: DUP3
00001e51: DUP2
00001e52: AND
00001e53: DUP3
00001e54: DUP3
00001e55: AND
00001e56: SUB
00001e57: SWAP1
00001e58: DUP1
00001e59: DUP3
00001e5a: GT
00001e5b: ISZERO
00001e5c: PUSH3 0x001e40
00001e60: JUMPI
00001e61: PUSH3 0x001e40
00001e65: PUSH3 0x001d81
00001e69: JUMP
00001e6a: JUMPDEST
00001e6b: PUSH0
00001e6c: DUP3
00001e6d: PUSH3 0x001e7b
00001e71: JUMPI
00001e72: PUSH3 0x001e7b
00001e76: PUSH3 0x001df3
00001e7a: JUMP
00001e7b: JUMPDEST
00001e7c: POP
00001e7d: MOD
00001e7e: SWAP1
00001e7f: JUMP
00001e80: JUMPDEST
00001e81: PUSH0
00001e82: DUP3
00001e83: MLOAD
00001e84: PUSH0
00001e85: JUMPDEST
00001e86: DUP2
00001e87: DUP2
00001e88: LT
00001e89: ISZERO
00001e8a: PUSH3 0x001ea1
00001e8e: JUMPI
00001e8f: PUSH1 0x20
00001e91: DUP2
00001e92: DUP7
00001e93: ADD
00001e94: DUP2
00001e95: ADD
00001e96: MLOAD
00001e97: DUP6
00001e98: DUP4
00001e99: ADD
00001e9a: MSTORE
00001e9b: ADD
00001e9c: PUSH3 0x001e85
00001ea0: JUMP
00001ea1: JUMPDEST
00001ea2: POP
00001ea3: PUSH0
00001ea4: SWAP3
00001ea5: ADD
00001ea6: SWAP2
00001ea7: DUP3
00001ea8: MSTORE
00001ea9: POP
00001eaa: SWAP2
00001eab: SWAP1
00001eac: POP
00001ead: JUMP
00001eae: JUMPDEST
00001eaf: PUSH0
00001eb0: PUSH1 0x20
00001eb2: DUP3
00001eb3: DUP5
00001eb4: SUB
00001eb5: SLT
00001eb6: ISZERO
00001eb7: PUSH3 0x001ebf
00001ebb: JUMPI
00001ebc: PUSH0
00001ebd: DUP1
00001ebe: REVERT
00001ebf: JUMPDEST
00001ec0: DUP2
00001ec1: MLOAD
00001ec2: DUP1
00001ec3: ISZERO
00001ec4: ISZERO
00001ec5: DUP2
00001ec6: EQ
00001ec7: PUSH3 0x001860
00001ecb: JUMPI
00001ecc: PUSH0
00001ecd: DUP1
00001ece: REVERT
00001ecf: JUMPDEST
00001ed0: PUSH1 0x01
00001ed2: PUSH1 0x01
00001ed4: PUSH1 0xe0
00001ed6: SHL
00001ed7: SUB
00001ed8: DUP3
00001ed9: DUP2
00001eda: AND
00001edb: DUP3
00001edc: DUP3
00001edd: AND
00001ede: DUP2
00001edf: DUP2
00001ee0: MUL
00001ee1: DUP4
00001ee2: AND
00001ee3: SWAP3
00001ee4: SWAP2
00001ee5: DUP2
00001ee6: ISZERO
00001ee7: DUP3
00001ee8: DUP6
00001ee9: DIV
00001eea: DUP3
00001eeb: EQ
00001eec: OR
00001eed: PUSH3 0x001efb
00001ef1: JUMPI
00001ef2: PUSH3 0x001efb
00001ef6: PUSH3 0x001d81
00001efa: JUMP
00001efb: JUMPDEST
00001efc: POP
00001efd: POP
00001efe: POP
00001eff: SWAP3
00001f00: SWAP2
00001f01: POP
00001f02: POP
00001f03: JUMP
00001f04: JUMPDEST
00001f05: PUSH0
00001f06: PUSH1 0x01
00001f08: PUSH1 0x01
00001f0a: PUSH1 0xe0
00001f0c: SHL
00001f0d: SUB
00001f0e: DUP4
00001f0f: DUP2
00001f10: AND
00001f11: DUP1
00001f12: PUSH3 0x001f20
00001f16: JUMPI
00001f17: PUSH3 0x001f20
00001f1b: PUSH3 0x001df3
00001f1f: JUMP
00001f20: JUMPDEST
00001f21: SWAP3
00001f22: AND
00001f23: SWAP2
00001f24: SWAP1
00001f25: SWAP2
00001f26: DIV
00001f27: SWAP3
00001f28: SWAP2
00001f29: POP
00001f2a: POP
00001f2b: JUMP
00001f2c: INVALID
00001f2d: PUSH1 0x80
00001f2f: PUSH1 0x40
00001f31: MSTORE
00001f32: CALLVALUE
00001f33: DUP1
00001f34: ISZERO
00001f35: PUSH2 0x000f
00001f38: JUMPI
00001f39: PUSH0
00001f3a: DUP1
00001f3b: REVERT
00001f3c: JUMPDEST
00001f3d: POP
00001f3e: PUSH1 0x40
00001f40: MLOAD
00001f41: PUSH2 0x0546
00001f44: CODESIZE
00001f45: SUB
00001f46: DUP1
00001f47: PUSH2 0x0546
00001f4a: DUP4
00001f4b: CODECOPY
00001f4c: DUP2
00001f4d: ADD
00001f4e: PUSH1 0x40
00001f50: DUP2
00001f51: SWAP1
00001f52: MSTORE
00001f53: PUSH2 0x002e
00001f56: SWAP2
00001f57: PUSH2 0x0089
00001f5a: JUMP
00001f5b: JUMPDEST
00001f5c: PUSH0
00001f5d: DUP1
00001f5e: SLOAD
00001f5f: PUSH1 0x01
00001f61: PUSH1 0x01
00001f63: PUSH1 0xa0
00001f65: SHL
00001f66: SUB
00001f67: SWAP1
00001f68: SWAP5
00001f69: AND
00001f6a: PUSH1 0x01
00001f6c: PUSH1 0x01
00001f6e: PUSH1 0xa0
00001f70: SHL
00001f71: SUB
00001f72: NOT
00001f73: SWAP5
00001f74: DUP6
00001f75: AND
00001f76: OR
00001f77: SWAP1
00001f78: SSTORE
00001f79: PUSH1 0x01
00001f7b: DUP1
00001f7c: SLOAD
00001f7d: SWAP1
00001f7e: SWAP4
00001f7f: AND
00001f80: CALLER
00001f81: OR
00001f82: DUP4
00001f83: SSTORE
00001f84: PUSH1 0x02
00001f86: SWAP2
00001f87: SWAP1
00001f88: SWAP2
00001f89: SSTORE
00001f8a: PUSH1 0x03
00001f8c: DUP1
00001f8d: SLOAD
00001f8e: PUSH4 0xffffffff
00001f93: SWAP1
00001f94: SWAP3
00001f95: AND
00001f96: PUSH4 0xffffffff
00001f9b: NOT
00001f9c: SWAP1
00001f9d: SWAP3
00001f9e: AND
00001f9f: SWAP2
00001fa0: SWAP1
00001fa1: SWAP2
00001fa2: OR
00001fa3: SWAP1
00001fa4: SSTORE
00001fa5: PUSH1 0x05
00001fa7: DUP1
00001fa8: SLOAD
00001fa9: PUSH1 0xff
00001fab: NOT
00001fac: AND
00001fad: SWAP1
00001fae: SWAP2
00001faf: OR
00001fb0: SWAP1
00001fb1: SSTORE
00001fb2: PUSH2 0x00dc
00001fb5: JUMP
00001fb6: JUMPDEST
00001fb7: PUSH0
00001fb8: DUP1
00001fb9: PUSH0
00001fba: PUSH1 0x60
00001fbc: DUP5
00001fbd: DUP7
00001fbe: SUB
00001fbf: SLT
00001fc0: ISZERO
00001fc1: PUSH2 0x009b
00001fc4: JUMPI
00001fc5: PUSH0
00001fc6: DUP1
00001fc7: REVERT
00001fc8: JUMPDEST
00001fc9: DUP4
00001fca: MLOAD
00001fcb: PUSH1 0x01
00001fcd: PUSH1 0x01
00001fcf: PUSH1 0xa0
00001fd1: SHL
00001fd2: SUB
00001fd3: DUP2
00001fd4: AND
00001fd5: DUP2
00001fd6: EQ
00001fd7: PUSH2 0x00b1
00001fda: JUMPI
00001fdb: PUSH0
00001fdc: DUP1
00001fdd: REVERT
00001fde: JUMPDEST
00001fdf: PUSH1 0x20
00001fe1: DUP6
00001fe2: ADD
00001fe3: MLOAD
00001fe4: PUSH1 0x40
00001fe6: DUP7
00001fe7: ADD
00001fe8: MLOAD
00001fe9: SWAP2
00001fea: SWAP5
00001feb: POP
00001fec: SWAP3
00001fed: POP
00001fee: PUSH4 0xffffffff
00001ff3: DUP2
00001ff4: AND
00001ff5: DUP2
00001ff6: EQ
00001ff7: PUSH2 0x00d1
00001ffa: JUMPI
00001ffb: PUSH0
00001ffc: DUP1
00001ffd: REVERT
00001ffe: JUMPDEST
00001fff: DUP1
00002000: SWAP2
00002001: POP
00002002: POP
00002003: SWAP3
00002004: POP
00002005: SWAP3
00002006: POP
00002007: SWAP3
00002008: JUMP
00002009: JUMPDEST
0000200a: PUSH2 0x045d
0000200d: DUP1
0000200e: PUSH2 0x00e9
00002011: PUSH0
00002012: CODECOPY
00002013: PUSH0
00002014: RETURN
00002015: INVALID
00002016: PUSH1 0x80
00002018: PUSH1 0x40
0000201a: MSTORE
0000201b: CALLVALUE
0000201c: DUP1
0000201d: ISZERO
0000201e: PUSH2 0x000f
00002021: JUMPI
00002022: PUSH0
00002023: DUP1
00002024: REVERT
00002025: JUMPDEST
00002026: POP
00002027: PUSH1 0x04
00002029: CALLDATASIZE
0000202a: LT
0000202b: PUSH2 0x0090
0000202e: JUMPI
0000202f: PUSH0
00002030: CALLDATALOAD
00002031: PUSH1 0xe0
00002033: SHR
00002034: DUP1
00002035: PUSH4 0xb4d1d795
0000203a: GT
0000203b: PUSH2 0x0063
0000203e: JUMPI
0000203f: DUP1
00002040: PUSH4 0xb4d1d795
00002045: EQ
00002046: PUSH2 0x0119
00002049: JUMPI
0000204a: DUP1
0000204b: PUSH4 0xc5700a02
00002050: EQ
00002051: PUSH2 0x0122
00002054: JUMPI
00002055: DUP1
00002056: PUSH4 0xcebab53d
0000205b: EQ
0000205c: PUSH2 0x0147
0000205f: JUMPI
00002060: DUP1
00002061: PUSH4 0xd21220a7
00002066: EQ
00002067: PUSH2 0x015c
0000206a: JUMPI
0000206b: DUP1
0000206c: PUSH4 0xfcfedfb1
00002071: EQ
00002072: PUSH2 0x016e
00002075: JUMPI
00002076: PUSH0
00002077: DUP1
00002078: REVERT
00002079: JUMPDEST
0000207a: DUP1
0000207b: PUSH4 0x3ddac953
00002080: EQ
00002081: PUSH2 0x0094
00002084: JUMPI
00002085: DUP1
00002086: PUSH4 0x5a3d5493
0000208b: EQ
0000208c: PUSH2 0x00ba
0000208f: JUMPI
00002090: DUP1
00002091: PUSH4 0x5e6aaf2c
00002096: EQ
00002097: PUSH2 0x00c3
0000209a: JUMPI
0000209b: DUP1
0000209c: PUSH4 0xa8aa1b31
000020a1: EQ
000020a2: PUSH2 0x00ee
000020a5: JUMPI
000020a6: JUMPDEST
000020a7: PUSH0
000020a8: DUP1
000020a9: REVERT
000020aa: JUMPDEST
000020ab: PUSH2 0x00a7
000020ae: PUSH2 0x00a2
000020b1: CALLDATASIZE
000020b2: PUSH1 0x04
000020b4: PUSH2 0x0366
000020b7: JUMP
000020b8: JUMPDEST
000020b9: PUSH2 0x018b
000020bc: JUMP
000020bd: JUMPDEST
000020be: PUSH1 0x40
000020c0: MLOAD
000020c1: SWAP1
000020c2: DUP2
000020c3: MSTORE
000020c4: PUSH1 0x20
000020c6: ADD
000020c7: JUMPDEST
000020c8: PUSH1 0x40
000020ca: MLOAD
000020cb: DUP1
000020cc: SWAP2
000020cd: SUB
000020ce: SWAP1
000020cf: RETURN
000020d0: JUMPDEST
000020d1: PUSH2 0x00a7
000020d4: PUSH1 0x02
000020d6: SLOAD
000020d7: DUP2
000020d8: JUMP
000020d9: JUMPDEST
000020da: PUSH1 0x04
000020dc: SLOAD
000020dd: PUSH2 0x00d6
000020e0: SWAP1
000020e1: PUSH1 0x01
000020e3: PUSH1 0x01
000020e5: PUSH1 0xe0
000020e7: SHL
000020e8: SUB
000020e9: AND
000020ea: DUP2
000020eb: JUMP
000020ec: JUMPDEST
000020ed: PUSH1 0x40
000020ef: MLOAD
000020f0: PUSH1 0x01
000020f2: PUSH1 0x01
000020f4: PUSH1 0xe0
000020f6: SHL
000020f7: SUB
000020f8: SWAP1
000020f9: SWAP2
000020fa: AND
000020fb: DUP2
000020fc: MSTORE
000020fd: PUSH1 0x20
000020ff: ADD
00002100: PUSH2 0x00b1
00002103: JUMP
00002104: JUMPDEST
00002105: PUSH1 0x01
00002107: SLOAD
00002108: PUSH2 0x0101
0000210b: SWAP1
0000210c: PUSH1 0x01
0000210e: PUSH1 0x01
00002110: PUSH1 0xa0
00002112: SHL
00002113: SUB
00002114: AND
00002115: DUP2
00002116: JUMP
00002117: JUMPDEST
00002118: PUSH1 0x40
0000211a: MLOAD
0000211b: PUSH1 0x01
0000211d: PUSH1 0x01
0000211f: PUSH1 0xa0
00002121: SHL
00002122: SUB
00002123: SWAP1
00002124: SWAP2
00002125: AND
00002126: DUP2
00002127: MSTORE
00002128: PUSH1 0x20
0000212a: ADD
0000212b: PUSH2 0x00b1
0000212e: JUMP
0000212f: JUMPDEST
00002130: PUSH2 0x00a7
00002133: PUSH2 0x0e10
00002136: DUP2
00002137: JUMP
00002138: JUMPDEST
00002139: PUSH1 0x03
0000213b: SLOAD
0000213c: PUSH2 0x0132
0000213f: SWAP1
00002140: PUSH4 0xffffffff
00002145: AND
00002146: DUP2
00002147: JUMP
00002148: JUMPDEST
00002149: PUSH1 0x40
0000214b: MLOAD
0000214c: PUSH4 0xffffffff
00002151: SWAP1
00002152: SWAP2
00002153: AND
00002154: DUP2
00002155: MSTORE
00002156: PUSH1 0x20
00002158: ADD
00002159: PUSH2 0x00b1
0000215c: JUMP
0000215d: JUMPDEST
0000215e: PUSH2 0x015a
00002161: PUSH2 0x0155
00002164: CALLDATASIZE
00002165: PUSH1 0x04
00002167: PUSH2 0x039b
0000216a: JUMP
0000216b: JUMPDEST
0000216c: PUSH2 0x0209
0000216f: JUMP
00002170: JUMPDEST
00002171: STOP
00002172: JUMPDEST
00002173: PUSH0
00002174: SLOAD
00002175: PUSH2 0x0101
00002178: SWAP1
00002179: PUSH1 0x01
0000217b: PUSH1 0x01
0000217d: PUSH1 0xa0
0000217f: SHL
00002180: SUB
00002181: AND
00002182: DUP2
00002183: JUMP
00002184: JUMPDEST
00002185: PUSH1 0x05
00002187: SLOAD
00002188: PUSH2 0x017b
0000218b: SWAP1
0000218c: PUSH1 0xff
0000218e: AND
0000218f: DUP2
00002190: JUMP
00002191: JUMPDEST
00002192: PUSH1 0x40
00002194: MLOAD
00002195: SWAP1
00002196: ISZERO
00002197: ISZERO
00002198: DUP2
00002199: MSTORE
0000219a: PUSH1 0x20
0000219c: ADD
0000219d: PUSH2 0x00b1
000021a0: JUMP
000021a1: JUMPDEST
000021a2: PUSH0
000021a3: DUP1
000021a4: SLOAD
000021a5: PUSH1 0x01
000021a7: PUSH1 0x01
000021a9: PUSH1 0xa0
000021ab: SHL
000021ac: SUB
000021ad: SWAP1
000021ae: DUP2
000021af: AND
000021b0: SWAP1
000021b1: DUP5
000021b2: AND
000021b3: SUB
000021b4: PUSH2 0x01ea
000021b7: JUMPI
000021b8: PUSH1 0x40
000021ba: DUP1
000021bb: MLOAD
000021bc: PUSH1 0x20
000021be: DUP2
000021bf: ADD
000021c0: SWAP1
000021c1: SWAP2
000021c2: MSTORE
000021c3: PUSH1 0x04
000021c5: SLOAD
000021c6: PUSH1 0x01
000021c8: PUSH1 0x01
000021ca: PUSH1 0xe0
000021cc: SHL
000021cd: SUB
000021ce: AND
000021cf: DUP2
000021d0: MSTORE
000021d1: PUSH2 0x01cf
000021d4: SWAP1
000021d5: PUSH2 0x01c8
000021d8: SWAP1
000021d9: DUP5
000021da: PUSH2 0x02c6
000021dd: JUMP
000021de: JUMPDEST
000021df: MLOAD
000021e0: PUSH1 0x70
000021e2: SHR
000021e3: SWAP1
000021e4: JUMP
000021e5: JUMPDEST
000021e6: PUSH18 0xffffffffffffffffffffffffffffffffffff
000021f9: AND
000021fa: SWAP1
000021fb: POP
000021fc: PUSH2 0x0203
000021ff: JUMP
00002200: JUMPDEST
00002201: PUSH1 0x40
00002203: MLOAD
00002204: PUSH4 0xc1ab6dc1
00002209: PUSH1 0xe0
0000220b: SHL
0000220c: DUP2
0000220d: MSTORE
0000220e: PUSH1 0x04
00002210: ADD
00002211: PUSH1 0x40
00002213: MLOAD
00002214: DUP1
00002215: SWAP2
00002216: SUB
00002217: SWAP1
00002218: REVERT
00002219: JUMPDEST
0000221a: SWAP3
0000221b: SWAP2
0000221c: POP
0000221d: POP
0000221e: JUMP
0000221f: JUMPDEST
00002220: PUSH1 0x01
00002222: SLOAD
00002223: PUSH1 0x01
00002225: PUSH1 0x01
00002227: PUSH1 0xa0
00002229: SHL
0000222a: SUB
0000222b: AND
0000222c: CALLER
0000222d: EQ
0000222e: PUSH2 0x021f
00002231: JUMPI
00002232: PUSH0
00002233: DUP1
00002234: REVERT
00002235: JUMPDEST
00002236: PUSH1 0x03
00002238: SLOAD
00002239: PUSH4 0xffffffff
0000223e: SWAP1
0000223f: DUP2
00002240: AND
00002241: DUP3
00002242: SUB
00002243: SWAP1
00002244: PUSH2 0x0e10
00002247: SWAP1
00002248: DUP3
00002249: AND
0000224a: LT
0000224b: ISZERO
0000224c: DUP1
0000224d: PUSH2 0x0242
00002250: JUMPI
00002251: POP
00002252: PUSH1 0x05
00002254: SLOAD
00002255: PUSH1 0xff
00002257: AND
00002258: JUMPDEST
00002259: ISZERO
0000225a: PUSH2 0x02c1
0000225d: JUMPI
0000225e: PUSH1 0x40
00002260: MLOAD
00002261: DUP1
00002262: PUSH1 0x20
00002264: ADD
00002265: PUSH1 0x40
00002267: MSTORE
00002268: DUP1
00002269: DUP3
0000226a: PUSH4 0xffffffff
0000226f: AND
00002270: PUSH1 0x02
00002272: SLOAD
00002273: DUP7
00002274: SUB
00002275: DUP2
00002276: PUSH2 0x026b
00002279: JUMPI
0000227a: PUSH2 0x026b
0000227d: PUSH2 0x03d1
00002280: JUMP
00002281: JUMPDEST
00002282: DIV
00002283: PUSH1 0x01
00002285: PUSH1 0x01
00002287: PUSH1 0xe0
00002289: SHL
0000228a: SUB
0000228b: SWAP1
0000228c: DUP2
0000228d: AND
0000228e: SWAP1
0000228f: SWAP2
00002290: MSTORE
00002291: SWAP1
00002292: MLOAD
00002293: PUSH1 0x04
00002295: DUP1
00002296: SLOAD
00002297: PUSH1 0x01
00002299: PUSH1 0x01
0000229b: PUSH1 0xe0
0000229d: SHL
0000229e: SUB
0000229f: NOT
000022a0: AND
000022a1: SWAP2
000022a2: SWAP1
000022a3: SWAP3
000022a4: AND
000022a5: OR
000022a6: SWAP1
000022a7: SSTORE
000022a8: PUSH1 0x02
000022aa: DUP4
000022ab: SWAP1
000022ac: SSTORE
000022ad: PUSH1 0x03
000022af: DUP1
000022b0: SLOAD
000022b1: PUSH4 0xffffffff
000022b6: NOT
000022b7: AND
000022b8: PUSH4 0xffffffff
000022bd: DUP5
000022be: AND
000022bf: OR
000022c0: SWAP1
000022c1: SSTORE
000022c2: PUSH1 0x05
000022c4: SLOAD
000022c5: PUSH1 0xff
000022c7: AND
000022c8: ISZERO
000022c9: PUSH2 0x02c1
000022cc: JUMPI
000022cd: PUSH1 0x05
000022cf: DUP1
000022d0: SLOAD
000022d1: PUSH1 0xff
000022d3: NOT
000022d4: AND
000022d5: SWAP1
000022d6: SSTORE
000022d7: JUMPDEST
000022d8: POP
000022d9: POP
000022da: POP
000022db: JUMP
000022dc: JUMPDEST
000022dd: PUSH1 0x40
000022df: DUP1
000022e0: MLOAD
000022e1: PUSH1 0x20
000022e3: DUP2
000022e4: ADD
000022e5: SWAP1
000022e6: SWAP2
000022e7: MSTORE
000022e8: PUSH0
000022e9: DUP2
000022ea: MSTORE
000022eb: PUSH0
000022ec: DUP3
000022ed: ISZERO
000022ee: DUP1
000022ef: PUSH2 0x0301
000022f2: JUMPI
000022f3: POP
000022f4: DUP4
000022f5: MLOAD
000022f6: PUSH1 0x01
000022f8: PUSH1 0x01
000022fa: PUSH1 0xe0
000022fc: SHL
000022fd: SUB
000022fe: AND
000022ff: DUP4
00002300: PUSH2 0x02f3
00002303: DUP2
00002304: DUP4
00002305: PUSH2 0x03e5
00002308: JUMP
00002309: JUMPDEST
0000230a: SWAP3
0000230b: POP
0000230c: PUSH2 0x02ff
0000230f: SWAP1
00002310: DUP4
00002311: PUSH2 0x0408
00002314: JUMP
00002315: JUMPDEST
00002316: EQ
00002317: JUMPDEST
00002318: PUSH2 0x0351
0000231b: JUMPI
0000231c: PUSH1 0x40
0000231e: MLOAD
0000231f: PUSH3 0x461bcd
00002323: PUSH1 0xe5
00002325: SHL
00002326: DUP2
00002327: MSTORE
00002328: PUSH1 0x20
0000232a: PUSH1 0x04
0000232c: DUP3
0000232d: ADD
0000232e: MSTORE
0000232f: PUSH1 0x19
00002331: PUSH1 0x24
00002333: DUP3
00002334: ADD
00002335: MSTORE
00002336: PUSH32 0x4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000
00002357: PUSH1 0x44
00002359: DUP3
0000235a: ADD
0000235b: MSTORE
0000235c: PUSH1 0x64
0000235e: ADD
0000235f: PUSH1 0x40
00002361: MLOAD
00002362: DUP1
00002363: SWAP2
00002364: SUB
00002365: SWAP1
00002366: REVERT
00002367: JUMPDEST
00002368: PUSH1 0x40
0000236a: DUP1
0000236b: MLOAD
0000236c: PUSH1 0x20
0000236e: DUP2
0000236f: ADD
00002370: SWAP1
00002371: SWAP2
00002372: MSTORE
00002373: SWAP1
00002374: DUP2
00002375: MSTORE
00002376: SWAP4
00002377: SWAP3
00002378: POP
00002379: POP
0000237a: POP
0000237b: JUMP
0000237c: JUMPDEST
0000237d: PUSH0
0000237e: DUP1
0000237f: PUSH1 0x40
00002381: DUP4
00002382: DUP6
00002383: SUB
00002384: SLT
00002385: ISZERO
00002386: PUSH2 0x0377
00002389: JUMPI
0000238a: PUSH0
0000238b: DUP1
0000238c: REVERT
0000238d: JUMPDEST
0000238e: DUP3
0000238f: CALLDATALOAD
00002390: PUSH1 0x01
00002392: PUSH1 0x01
00002394: PUSH1 0xa0
00002396: SHL
00002397: SUB
00002398: DUP2
00002399: AND
0000239a: DUP2
0000239b: EQ
0000239c: PUSH2 0x038d
0000239f: JUMPI
000023a0: PUSH0
000023a1: DUP1
000023a2: REVERT
000023a3: JUMPDEST
000023a4: SWAP5
000023a5: PUSH1 0x20
000023a7: SWAP4
000023a8: SWAP1
000023a9: SWAP4
000023aa: ADD
000023ab: CALLDATALOAD
000023ac: SWAP4
000023ad: POP
000023ae: POP
000023af: POP
000023b0: JUMP
000023b1: JUMPDEST
000023b2: PUSH0
000023b3: DUP1
000023b4: PUSH1 0x40
000023b6: DUP4
000023b7: DUP6
000023b8: SUB
000023b9: SLT
000023ba: ISZERO
000023bb: PUSH2 0x03ac
000023be: JUMPI
000023bf: PUSH0
000023c0: DUP1
000023c1: REVERT
000023c2: JUMPDEST
000023c3: DUP3
000023c4: CALLDATALOAD
000023c5: SWAP2
000023c6: POP
000023c7: PUSH1 0x20
000023c9: DUP4
000023ca: ADD
000023cb: CALLDATALOAD
000023cc: PUSH4 0xffffffff
000023d1: DUP2
000023d2: AND
000023d3: DUP2
000023d4: EQ
000023d5: PUSH2 0x03c6
000023d8: JUMPI
000023d9: PUSH0
000023da: DUP1
000023db: REVERT
000023dc: JUMPDEST
000023dd: DUP1
000023de: SWAP2
000023df: POP
000023e0: POP
000023e1: SWAP3
000023e2: POP
000023e3: SWAP3
000023e4: SWAP1
000023e5: POP
000023e6: JUMP
000023e7: JUMPDEST
000023e8: PUSH4 0x4e487b71
000023ed: PUSH1 0xe0
000023ef: SHL
000023f0: PUSH0
000023f1: MSTORE
000023f2: PUSH1 0x12
000023f4: PUSH1 0x04
000023f6: MSTORE
000023f7: PUSH1 0x24
000023f9: PUSH0
000023fa: REVERT
000023fb: JUMPDEST
000023fc: DUP1
000023fd: DUP3
000023fe: MUL
000023ff: DUP2
00002400: ISZERO
00002401: DUP3
00002402: DUP3
00002403: DIV
00002404: DUP5
00002405: EQ
00002406: OR
00002407: PUSH2 0x0203
0000240a: JUMPI
0000240b: PUSH4 0x4e487b71
00002410: PUSH1 0xe0
00002412: SHL
00002413: PUSH0
00002414: MSTORE
00002415: PUSH1 0x11
00002417: PUSH1 0x04
00002419: MSTORE
0000241a: PUSH1 0x24
0000241c: PUSH0
0000241d: REVERT
0000241e: JUMPDEST
0000241f: PUSH0
00002420: DUP3
00002421: PUSH2 0x0422
00002424: JUMPI
00002425: PUSH4 0x4e487b71
0000242a: PUSH1 0xe0
0000242c: SHL
0000242d: PUSH0
0000242e: MSTORE
0000242f: PUSH1 0x12
00002431: PUSH1 0x04
00002433: MSTORE
00002434: PUSH1 0x24
00002436: PUSH0
00002437: REVERT
00002438: JUMPDEST
00002439: POP
0000243a: DIV
0000243b: SWAP1
0000243c: JUMP
0000243d: INVALID
0000243e: LOG2
0000243f: PUSH5 0x6970667358
00002445: UNKNOWN(0x22)
00002446: SLT
00002447: KECCAK256
00002448: BLOBHASH
00002449: DUP1
0000244a: UNKNOWN(0xD9)
0000244b: DUP15
0000244c: JUMP
0000244d: UNKNOWN(0x4D)
0000244e: PC
0000244f: UNKNOWN(0xB7)
00002450: PUSH28 0x502cf57fe33d3ef724d17ffbae48c6ee564c97d6e9dd6464736f6c63
0000246d: NUMBER
0000246e: STOP
0000246f: ADDMOD
00002470: EQ
00002471: STOP
00002472: CALLER
00002473: LOG2
00002474: PUSH5 0x6970667358
0000247a: UNKNOWN(0x22)
0000247b: SLT
0000247c: KECCAK256
0000247d: ISZERO
0000247e: SLT
0000247f: UNKNOWN(0x21)
00002480: UNKNOWN(0xC0)
00002481: PUSH15 0xbdb18e8d184cac855e4eaaa8b77c3d
00002491: UNKNOWN(0xC9)
00002492: EXTCODEHASH
00002493: UNKNOWN(0xF9)
00002494: CALLCODE
00002495: SDIV
00002496: DUP15
00002497: ADDRESS
00002498: UNKNOWN(0xCF)
00002499: CALLER
0000249a: UNKNOWN(0xD6)
0000249b: UNKNOWN(0x4F)
0000249c: INVALID
0000249d: PUSH5 0x736f6c6343
000024a3: STOP
000024a4: ADDMOD
000024a5: EQ
000024a6: STOP
000024a7: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x6ab3a892d68d179417c418e76593b82f1e158fd8dd1c7d8d2cabc3c72e96b1d4
call_targets: 0x9dd78ea2b7a92b6cb5d4a495dac34f8641070ceb
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6ab3a892d68d179417c418e76593b82f1e158fd8dd1c7d8d2cabc3c72e96b1d4",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9dd78ea2b7a92b6cb5d4a495dac34f8641070ceb"
    ],
    "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": "0xddca3f43",
            "selector": "0xddca3f43",
            "calldata_variants": [
                "0xddca3f43",
                "0xddca3f430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe0483c35",
            "selector": "0xe0483c35",
            "calldata_variants": [
                "0xe0483c35",
                "0xe0483c350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe680ea2c",
            "selector": "0xe680ea2c",
            "calldata_variants": [
                "0xe680ea2c",
                "0xe680ea2c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf5298aca",
            "selector": "0xf5298aca",
            "calldata_variants": [
                "0xf5298aca",
                "0xf5298aca0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfff6cae9",
            "selector": "0xfff6cae9",
            "calldata_variants": [
                "0xfff6cae9",
                "0xfff6cae90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1b9a7c5",
            "selector": "0xb1b9a7c5",
            "calldata_variants": [
                "0xb1b9a7c5",
                "0xb1b9a7c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc25cf77",
            "selector": "0xbc25cf77",
            "calldata_variants": [
                "0xbc25cf77",
                "0xbc25cf770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc1be6677",
            "selector": "0xc1be6677",
            "calldata_variants": [
                "0xc1be6677",
                "0xc1be66770000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3622,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3768,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6882,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [],
    "untrusted_call_count": 4
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x6ab3a892d68d179417c418e76593b82f1e158fd8dd1c7d8d2cabc3c72e96b1d4
call_targets: 0x9dd78ea2b7a92b6cb5d4a495dac34f8641070ceb
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6ab3a892d68d179417c418e76593b82f1e158fd8dd1c7d8d2cabc3c72e96b1d4",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9dd78ea2b7a92b6cb5d4a495dac34f8641070ceb"
    ],
    "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": "0xddca3f43",
            "selector": "0xddca3f43",
            "calldata_variants": [
                "0xddca3f43",
                "0xddca3f430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe0483c35",
            "selector": "0xe0483c35",
            "calldata_variants": [
                "0xe0483c35",
                "0xe0483c350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe680ea2c",
            "selector": "0xe680ea2c",
            "calldata_variants": [
                "0xe680ea2c",
                "0xe680ea2c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf5298aca",
            "selector": "0xf5298aca",
            "calldata_variants": [
                "0xf5298aca",
                "0xf5298aca0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfff6cae9",
            "selector": "0xfff6cae9",
            "calldata_variants": [
                "0xfff6cae9",
                "0xfff6cae90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1b9a7c5",
            "selector": "0xb1b9a7c5",
            "calldata_variants": [
                "0xb1b9a7c5",
                "0xb1b9a7c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc25cf77",
            "selector": "0xbc25cf77",
            "calldata_variants": [
                "0xbc25cf77",
                "0xbc25cf770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc1be6677",
            "selector": "0xc1be6677",
            "calldata_variants": [
                "0xc1be6677",
                "0xc1be66770000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3622,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3768,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 6882,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": []
}
medium other detector CREATE/CREATE2 reachable 45 no no
view
trace_id: 0x03206fbec188e98d355e10efcadf4e928cf885d583dd8ffb71e35122c5f24c2c
validation_json
{
    "sink": "CREATE",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0x03206fbec188e98d355e10efcadf4e928cf885d583dd8ffb71e35122c5f24c2c",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xddca3f43",
            "selector": "0xddca3f43",
            "calldata_variants": [
                "0xddca3f43",
                "0xddca3f430000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe0483c35",
            "selector": "0xe0483c35",
            "calldata_variants": [
                "0xe0483c35",
                "0xe0483c350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe680ea2c",
            "selector": "0xe680ea2c",
            "calldata_variants": [
                "0xe680ea2c",
                "0xe680ea2c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf5298aca",
            "selector": "0xf5298aca",
            "calldata_variants": [
                "0xf5298aca",
                "0xf5298aca0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfff6cae9",
            "selector": "0xfff6cae9",
            "calldata_variants": [
                "0xfff6cae9",
                "0xfff6cae90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb1b9a7c5",
            "selector": "0xb1b9a7c5",
            "calldata_variants": [
                "0xb1b9a7c5",
                "0xb1b9a7c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbc25cf77",
            "selector": "0xbc25cf77",
            "calldata_variants": [
                "0xbc25cf77",
                "0xbc25cf770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc1be6677",
            "selector": "0xc1be6677",
            "calldata_variants": [
                "0xc1be6677",
                "0xc1be66770000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "create_count": 1,
    "create2_count": 0
}
medium oracle codex First oracle update ignores PERIOD, enabling short-window price manipulation 75 no
view
evidence_json
{
    "evidence": "Oracle.update updates price1Average when timeElapsed >= PERIOD || firstUpdateCall, so the first update can be computed over an arbitrary short interval.",
    "locations": [
        "contracts/src/swap/Oracle.sol:45"
    ],
    "recommendation": "Require timeElapsed >= PERIOD even on the first update, or make the first call only set price1CumulativeLast/blockTimestampLast and wait a full period before publishing price1Average.",
    "exploit_scenario": "After initial liquidity creates the oracle, an attacker can manipulate the pool price for a brief window and trigger the first update via a swap. Because firstUpdateCall bypasses the PERIOD requirement, the oracle average is computed over that short interval, which can be abused by any downstream logic relying on the oracle (e.g., valuations or liquidations)."
}
low access_control codex Pair can be reinitialized by factory after deployment 65 no
view
evidence_json
{
    "evidence": "initialize only checks msg.sender == factory and then overwrites token0/token1/fee without any initialization guard.",
    "locations": [
        "contracts/src/swap/OraclePair.sol:82"
    ],
    "recommendation": "Add an initialized flag (or require token0 == address(0)) to enforce single-use initialization.",
    "exploit_scenario": "initialize lacks a one-time guard; the factory can call it again to change token0/token1/fee for an existing pool. If the factory is compromised or upgradeable, an attacker could break pool accounting or disable swaps (e.g., set fee==10 without oracle), potentially trapping liquidity."
}
low other codex Burn parameter order inconsistent between interface/documentation and implementation 65 no
view
evidence_json
{
    "evidence": "IPairActions.burn declares (address to, uint256 liquidity, uint256 positionId) while OraclePair.burn is (address to, uint256 positionId, uint256 liquidity).",
    "locations": [
        "contracts/src/swap/interfaces/pair/IPairActions.sol:21",
        "contracts/src/swap/OraclePair.sol:132"
    ],
    "recommendation": "Align parameter order/names across interface and implementation (or update docs and callers) to avoid mismatched arguments.",
    "exploit_scenario": "Integrators following the interface may call burn(to, liquidity, positionId), but OraclePair interprets the second argument as positionId and the third as liquidity. This can lead to burns targeting the wrong position or reverting, causing failed withdrawals or stuck liquidity."
}
low other cast Contract creation opcode present 60 no
view
evidence_json
{
    "notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
    "create_count": 1,
    "create2_count": 0
}
low oracle codex Oracle update can divide by zero on first call in the same block as creation 65 no
view
evidence_json
{
    "evidence": "timeElapsed is computed from blockTimestamp - blockTimestampLast and used as a divisor without a >0 check when firstUpdateCall is true.",
    "locations": [
        "contracts/src/swap/Oracle.sol:43",
        "contracts/src/swap/Oracle.sol:48"
    ],
    "recommendation": "Guard against timeElapsed == 0 before dividing (e.g., return early or only update timestamps) to avoid a revert on same-block first update.",
    "exploit_scenario": "If the oracle is created and the first swap/update happens in the same block, blockTimestamp == blockTimestampLast and timeElapsed == 0. firstUpdateCall is true, so the division by timeElapsed reverts, causing the swap to fail and creating a one-block DoS for the first swap."
}
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
}