a386b194-baf5-428b-9962-3a89e8adeeb2
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| 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 |
No slither job recorded yet.
[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"]}]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 16
}
|