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

Analysis Run

019c0ea9-f016-739a-ad4f-c89570e9c08b

failed
Chain ID
1
Address
Block Number
Created
Fri, Jan 30, 2026 11:29 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
42266 artifact.fetch complete 1 / 3 2 months ago
42267 proxy.resolve complete 1 / 3 2 months ago
42268 tool.cast_disasm complete 1 / 3 2 months ago
42269 analysis.bundle complete 1 / 3 2 months ago
42270 capability.graph complete 1 / 3 2 months ago
42271 detector.run complete 1 / 3 2 months ago
42272 validation.fork complete 1 / 3 2 months ago
42488 report.consolidate complete 1 / 6 2 months ago
42489 tool.slither failed 2 / 2 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither
Status
failed 500 Server Error: Internal Server Error for url: https://tripwire.topgun.bot/internal/jobs/42489/complete
Attempts
2 / 2
Findings
0
Solc
View stderr
Traceback (most recent call last):
  File "/var/www/tripwire/worker/worker.py", line 199, in main
    laravel_client.complete_job(job_id, payload if payload else None)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/laravel_client.py", line 27, in complete_job
    return self._post(f"/internal/jobs/{job_id}/complete", payload=payload)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/laravel_client.py", line 17, in _post
    response.raise_for_status()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/requests/models.py", line 1026, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: https://tripwire.topgun.bot/internal/jobs/42489/complete

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Found an asset-limit bypass via the mint path and an upgradeability deployment footgun around initialization.
View stdout
{"no_findings":false,"summary":"Found an asset-limit bypass via the mint path and an upgradeability deployment footgun around initialization.","findings":[{"severity":"medium","category":"other","title":"Asset limit can be bypassed via mint()","exploit_scenario":"If the system relies on assetLimit to cap TVL, the owner/supervisor can call mint() to create shares beyond the limit because maxMint is not overridden. Any flow that uses mint instead of deposit will ignore the cap, defeating exposure controls.","recommendation":"Override maxMint to enforce the same cap as maxDeposit (e.g., derive maxShares from remaining asset capacity), or add an explicit assetLimit check in mint using previewMint().","evidence":"deposit() enforces maxDeposit (assetLimit) while mint() delegates to super.mint without any assetLimit check; maxMint remains the ERC4626 default (unlimited).","locations":["src/Vault.sol:56","src/Vault.sol:72","src/Vault.sol:118"]},{"severity":"medium","category":"upgradeability","title":"Proxy can be seized if initialize is not called during deployment","exploit_scenario":"Because initialize() is external and only protected by the initializer modifier, a proxy deployed without immediate initialization can be claimed by any attacker who sets themselves as owner and configures depositToken, then pauses or drains via privileged calls.","recommendation":"Ensure proxy deployments perform initialization atomically (constructor calldata or factory). Consider adding deployment tooling checks to prevent uninitialized proxies.","evidence":"constructor disables initializers on the implementation, while initialize() remains externally callable on the proxy and sets owner/depositToken.","locations":["src/Vault.sol:26","src/Vault.sol:30"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-vzqvigz8
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0fa8-4478-7e01-9379-2c10fb754d51
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
exec
/bin/bash -lc ls in /tmp/codex-vzqvigz8 succeeded in 7ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
node_modules
src
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-vzqvigz8 succeeded in 6ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: src/Vault.sol
================================================================================
// SPDX-License-Identifier: SEE LICENSE IN LICENSE
pragma solidity ^0.8.21;

import {ERC4626} from "solady/src/tokens/ERC4626.sol";
import {Ownable} from "solady/src/auth/Ownable.sol";
import {ReentrancyGuard} from "solady/src/utils/ReentrancyGuard.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {PausableUpgradeable} from "@openzeppelin-upgradeable/utils/PausableUpgradeable.sol";
import {Initializable} from "@openzeppelin-upgradeable/proxy/utils/Initializable.sol";
import "./interfaces/Errors.sol";
import "./interfaces/IVault.sol";

contract Vault is ERC4626, Initializable, Ownable, PausableUpgradeable, ReentrancyGuard {
    IERC20 public depositToken;
exec
/bin/bash -lc 'nl -ba src/Vault.sol' in /tmp/codex-vzqvigz8 succeeded in 5ms:
     1	// SPDX-License-Identifier: SEE LICENSE IN LICENSE
     2	pragma solidity ^0.8.21;
     3	
     4	import {ERC4626} from "solady/src/tokens/ERC4626.sol";
     5	import {Ownable} from "solady/src/auth/Ownable.sol";
     6	import {ReentrancyGuard} from "solady/src/utils/ReentrancyGuard.sol";
     7	import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
     8	import {PausableUpgradeable} from "@openzeppelin-upgradeable/utils/PausableUpgradeable.sol";
     9	import {Initializable} from "@openzeppelin-upgradeable/proxy/utils/Initializable.sol";
    10	import "./interfaces/Errors.sol";
    11	import "./interfaces/IVault.sol";
    12	
    13	contract Vault is ERC4626, Initializable, Ownable, PausableUpgradeable, ReentrancyGuard {
    14	    IERC20 public depositToken;
    15	    uint256 public assetLimit;
    16	    IVault.AssetType public assetType;
    17	
    18	    uint8 private _decimals;
    19	    string private nameStr;
    20	    string private symbolStr;
exec
/bin/bash -lc 'rg -n "DepositMoreThanMax" -S .' in /tmp/codex-vzqvigz8 succeeded in 36ms:
./node_modules/solady/src/tokens/ERC4626.sol:28:    error DepositMoreThanMax();
./node_modules/solady/src/tokens/ERC4626.sol:377:        if (assets > maxDeposit(to)) _revert(0xb3c61a83); // `DepositMoreThanMax()`.
./AUDIT_BUNDLE.txt:71:        if (assets > maxDeposit(depositor)) revert DepositMoreThanMax();
./src/Vault.sol:65:        if (assets > maxDeposit(depositor)) revert DepositMoreThanMax();
exec
/bin/bash -lc 'rg -n "function mint" node_modules/solady/src/tokens/ERC4626.sol -n -S' in /tmp/codex-vzqvigz8 succeeded in 8ms:
393:    function mint(uint256 shares, address to) public virtual returns (uint256 assets) {
exec
/bin/bash -lc "sed -n '360,430p' node_modules/solady/src/tokens/ERC4626.sol" in /tmp/codex-vzqvigz8 succeeded in 5ms:

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                 DEPOSIT / WITHDRAWAL LOGIC                 */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Mints `shares` Vault shares to `to` by depositing exactly `assets`
    /// of underlying tokens.
    ///
    /// - MUST emit the {Deposit} event.
    /// - MAY support an additional flow in which the underlying tokens are owned by the Vault
    ///   contract before the deposit execution, and are accounted for during deposit.
    /// - MUST revert if all of `assets` cannot be deposited, such as due to deposit limit,
    ///   slippage, insufficient approval, etc.
    ///
    /// Note: Most implementations will require pre-approval of the Vault with the
    /// Vault's underlying `asset` token.
    function deposit(uint256 assets, address to) public virtual returns (uint256 shares) {
        if (assets > maxDeposit(to)) _revert(0xb3c61a83); // `DepositMoreThanMax()`.
        shares = previewDeposit(assets);
        _deposit(msg.sender, to, assets, shares);
exec
/bin/bash -lc 'rg -n "function maxMint" -n node_modules/solady/src/tokens/ERC4626.sol' in /tmp/codex-vzqvigz8 succeeded in 7ms:
337:    function maxMint(address to) public view virtual returns (uint256 maxShares) {
exec
/bin/bash -lc "sed -n '320,350p' node_modules/solady/src/tokens/ERC4626.sol" in /tmp/codex-vzqvigz8 succeeded in 6ms:
    /// @dev Returns the maximum amount of the underlying asset that can be deposited
    /// into the Vault for `to`, via a deposit call.
    ///
    /// - MUST return a limited value if `to` is subject to some deposit limit.
    /// - MUST return `2**256-1` if there is no maximum limit.
    /// - MUST NOT revert.
    function maxDeposit(address to) public view virtual returns (uint256 maxAssets) {
        to = to; // Silence unused variable warning.
        maxAssets = type(uint256).max;
    }

    /// @dev Returns the maximum amount of the Vault shares that can be minter for `to`,
    /// via a mint call.
    ///
    /// - MUST return a limited value if `to` is subject to some mint limit.
    /// - MUST return `2**256-1` if there is no maximum limit.
    /// - MUST NOT revert.
    function maxMint(address to) public view virtual returns (uint256 maxShares) {
        to = to; // Silence unused variable warning.
        maxShares = type(uint256).max;
exec
/bin/bash -lc 'rg -n "previewWithdraw|convertToShares" -n node_modules/solady/src/tokens/ERC4626.sol' in /tmp/codex-vzqvigz8 succeeded in 6ms:
167:    function convertToShares(uint256 assets) public view virtual returns (uint256 shares) {
217:    /// Note: Any unfavorable discrepancy between `convertToShares` and `previewDeposit` SHOULD
221:        shares = convertToShares(assets);
257:    ///   return the same or fewer shares as `previewWithdraw` if call in the same transaction.
263:    /// Note: Any unfavorable discrepancy between `convertToShares` and `previewWithdraw` SHOULD
266:    function previewWithdraw(uint256 assets) public view virtual returns (uint256 shares) {
415:        shares = previewWithdraw(assets);
exec
/bin/bash -lc "sed -n '150,190p' node_modules/solady/src/tokens/ERC4626.sol" in /tmp/codex-vzqvigz8 succeeded in 6ms:
    /// - MUST be inclusive of any fees that are charged against assets in the Vault.
    /// - MUST NOT revert.
    function totalAssets() public view virtual returns (uint256 assets) {
        assets = SafeTransferLib.balanceOf(asset(), address(this));
    }

    /// @dev Returns the amount of shares that the Vault will exchange for the amount of
    /// assets provided, in an ideal scenario where all conditions are met.
    ///
    /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
    /// - MUST NOT show any variations depending on the caller.
    /// - MUST NOT reflect slippage or other on-chain conditions, during the actual exchange.
    /// - MUST NOT revert.
    ///
    /// Note: This calculation MAY NOT reflect the "per-user" price-per-share, and instead
    /// should reflect the "average-user's" price-per-share, i.e. what the average user should
    /// expect to see when exchanging to and from.
    function convertToShares(uint256 assets) public view virtual returns (uint256 shares) {
        if (!_useVirtualShares()) {
            uint256 supply = totalSupply();
exec
/bin/bash -lc "sed -n '250,280p' node_modules/solady/src/tokens/ERC4626.sol" in /tmp/codex-vzqvigz8 succeeded in 7ms:
    }

    /// @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal
    /// at the current block, given the current on-chain conditions.
    ///
    /// - MUST return as close to and no fewer than the exact amount of Vault shares that
    ///   will be burned in a withdraw call in the same transaction, i.e. withdraw should
    ///   return the same or fewer shares as `previewWithdraw` if call in the same transaction.
    /// - MUST NOT account for withdrawal limits like those returned from `maxWithdraw` and should
    ///   always act as if the withdrawal will be accepted, regardless of share balance, etc.
    /// - MUST be inclusive of withdrawal fees. Integrators should be aware of this.
    /// - MUST not revert.
    ///
    /// Note: Any unfavorable discrepancy between `convertToShares` and `previewWithdraw` SHOULD
    /// be considered slippage in share price or some other type of condition,
    /// meaning the depositor will lose assets by depositing.
    function previewWithdraw(uint256 assets) public view virtual returns (uint256 shares) {
        if (!_useVirtualShares()) {
            uint256 supply = totalSupply();
            return _eitherIsZero(assets, supply)
exec
/bin/bash -lc "sed -n '210,235p' node_modules/solady/src/tokens/ERC4626.sol" in /tmp/codex-vzqvigz8 succeeded in 8ms:
    ///   will be minted in a deposit call in the same transaction, i.e. deposit should
    ///   return the same or more shares as `previewDeposit` if call in the same transaction.
    /// - MUST NOT account for deposit limits like those returned from `maxDeposit` and should
    ///   always act as if the deposit will be accepted, regardless of approvals, etc.
    /// - MUST be inclusive of deposit fees. Integrators should be aware of this.
    /// - MUST not revert.
    ///
    /// Note: Any unfavorable discrepancy between `convertToShares` and `previewDeposit` SHOULD
    /// be considered slippage in share price or some other type of condition, meaning
    /// the depositor will lose assets by depositing.
    function previewDeposit(uint256 assets) public view virtual returns (uint256 shares) {
        shares = convertToShares(assets);
    }

    /// @dev Allows an on-chain or off-chain user to simulate the effects of their mint
    /// at the current block, given current on-chain conditions.
    ///
    /// - MUST return as close to and no fewer than the exact amount of assets that
    ///   will be deposited in a mint call in the same transaction, i.e. mint should
    ///   return the same or fewer assets as `previewMint` if called in the same transaction.
codex
{"no_findings":false,"summary":"Found an asset-limit bypass via the mint path and an upgradeability deployment footgun around initialization.","findings":[{"severity":"medium","category":"other","title":"Asset limit can be bypassed via mint()","exploit_scenario":"If the system relies on assetLimit to cap TVL, the owner/supervisor can call mint() to create shares beyond the limit because maxMint is not overridden. Any flow that uses mint instead of deposit will ignore the cap, defeating exposure controls.","recommendation":"Override maxMint to enforce the same cap as maxDeposit (e.g., derive maxShares from remaining asset capacity), or add an explicit assetLimit check in mint using previewMint().","evidence":"deposit() enforces maxDeposit (assetLimit) while mint() delegates to super.mint without any assetLimit check; maxMint remains the ERC4626 default (unlimited).","locations":["src/Vault.sol:56","src/Vault.sol:72","src/Vault.sol:118"]},{"severity":"medium","category":"upgradeability","title":"Proxy can be seized if initialize is not called during deployment","exploit_scenario":"Because initialize() is external and only protected by the initializer modifier, a proxy deployed without immediate initialization can be claimed by any attacker who sets themselves as owner and configures depositToken, then pauses or drains via privileged calls.","recommendation":"Ensure proxy deployments perform initialization atomically (constructor calldata or factory). Consider adding deployment tooling checks to prevent uninitialized proxies.","evidence":"constructor disables initializers on the implementation, while initialize() remains externally callable on the proxy and sets owner/depositToken.","locations":["src/Vault.sol:26","src/Vault.sol:30"]}]}
tokens used
17,812
Metadata
{
    "codex": {
        "ran_at": "2026-01-30T16:09:54.018608+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 17,
        "import_count": 20,
        "first_party_contracts_count": 5
    },
    "summary": "Found an asset-limit bypass via the mint path and an upgradeability deployment footgun around initialization.",
    "raw_final": {
        "summary": "Found an asset-limit bypass via the mint path and an upgradeability deployment footgun around initialization.",
        "findings": [
            {
                "title": "Asset limit can be bypassed via mint()",
                "category": "other",
                "evidence": "deposit() enforces maxDeposit (assetLimit) while mint() delegates to super.mint without any assetLimit check; maxMint remains the ERC4626 default (unlimited).",
                "severity": "medium",
                "locations": [
                    "src/Vault.sol:56",
                    "src/Vault.sol:72",
                    "src/Vault.sol:118"
                ],
                "recommendation": "Override maxMint to enforce the same cap as maxDeposit (e.g., derive maxShares from remaining asset capacity), or add an explicit assetLimit check in mint using previewMint().",
                "exploit_scenario": "If the system relies on assetLimit to cap TVL, the owner/supervisor can call mint() to create shares beyond the limit because maxMint is not overridden. Any flow that uses mint instead of deposit will ignore the cap, defeating exposure controls."
            },
            {
                "title": "Proxy can be seized if initialize is not called during deployment",
                "category": "upgradeability",
                "evidence": "constructor disables initializers on the implementation, while initialize() remains externally callable on the proxy and sets owner/depositToken.",
                "severity": "medium",
                "locations": [
                    "src/Vault.sol:26",
                    "src/Vault.sol:30"
                ],
                "recommendation": "Ensure proxy deployments perform initialization atomically (constructor calldata or factory). Consider adding deployment tooling checks to prevent uninitialized proxies.",
                "exploit_scenario": "Because initialize() is external and only protected by the initializer modifier, a proxy deployed without immediate initialization can be claimed by any attacker who sets themselves as owner and configures depositToken, then pauses or drains via privileged calls."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
5
EXT*/BALANCE
1
Total opcodes
3686
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: ISZERO
0000000a: PUSH2 0x0012
0000000d: JUMPI
0000000e: PUSH1 0x00
00000010: DUP1
00000011: REVERT
00000012: JUMPDEST
00000013: PUSH1 0x00
00000015: CALLDATALOAD
00000016: PUSH1 0xe0
00000018: SHR
00000019: DUP1
0000001a: PUSH4 0x01e1d114
0000001f: EQ
00000020: PUSH2 0x1876
00000023: JUMPI
00000024: DUP1
00000025: PUSH4 0x02329a29
0000002a: EQ
0000002b: PUSH2 0x1728
0000002e: JUMPI
0000002f: DUP1
00000030: PUSH4 0x06fdde03
00000035: EQ
00000036: PUSH2 0x170c
00000039: JUMPI
0000003a: DUP1
0000003b: PUSH4 0x07a2d13a
00000040: EQ
00000041: PUSH2 0x136a
00000044: JUMPI
00000045: DUP1
00000046: PUSH4 0x095ea7b3
0000004b: EQ
0000004c: PUSH2 0x169e
0000004f: JUMPI
00000050: DUP1
00000051: PUSH4 0x0a28a477
00000056: EQ
00000057: PUSH2 0x1680
0000005a: JUMPI
0000005b: DUP1
0000005c: PUSH4 0x18160ddd
00000061: EQ
00000062: PUSH2 0x165a
00000065: JUMPI
00000066: DUP1
00000067: PUSH4 0x22da98e7
0000006c: EQ
0000006d: PUSH2 0x163c
00000070: JUMPI
00000071: DUP1
00000072: PUSH4 0x23b872dd
00000077: EQ
00000078: PUSH2 0x1557
0000007b: JUMPI
0000007c: DUP1
0000007d: PUSH4 0x25692962
00000082: EQ
00000083: PUSH2 0x150b
00000086: JUMPI
00000087: DUP1
00000088: PUSH4 0x27ea6f2b
0000008d: EQ
0000008e: PUSH2 0x14ea
00000091: JUMPI
00000092: DUP1
00000093: PUSH4 0x313ce567
00000098: EQ
00000099: PUSH2 0x148e
0000009c: JUMPI
0000009d: DUP1
0000009e: PUSH4 0x3644e515
000000a3: EQ
000000a4: PUSH2 0x1405
000000a7: JUMPI
000000a8: DUP1
000000a9: PUSH4 0x38d52e0f
000000ae: EQ
000000af: PUSH2 0x05e2
000000b2: JUMPI
000000b3: DUP1
000000b4: PUSH4 0x3fe3347a
000000b9: EQ
000000ba: PUSH2 0x13ac
000000bd: JUMPI
000000be: DUP1
000000bf: PUSH4 0x402d267d
000000c4: EQ
000000c5: PUSH2 0x1388
000000c8: JUMPI
000000c9: DUP1
000000ca: PUSH4 0x4cdad506
000000cf: EQ
000000d0: PUSH2 0x136a
000000d3: JUMPI
000000d4: DUP1
000000d5: PUSH4 0x54d1f13d
000000da: EQ
000000db: PUSH2 0x1322
000000de: JUMPI
000000df: DUP1
000000e0: PUSH4 0x5c975abb
000000e5: EQ
000000e6: PUSH2 0x12e0
000000e9: JUMPI
000000ea: DUP1
000000eb: PUSH4 0x6e553f65
000000f0: EQ
000000f1: PUSH2 0x1247
000000f4: JUMPI
000000f5: DUP1
000000f6: PUSH4 0x70a08231
000000fb: EQ
000000fc: PUSH2 0x03c6
000000ff: JUMPI
00000100: DUP1
00000101: PUSH4 0x715018a6
00000106: EQ
00000107: PUSH2 0x11e6
0000010a: JUMPI
0000010b: DUP1
0000010c: PUSH4 0x7ecebe00
00000111: EQ
00000112: PUSH2 0x11b3
00000115: JUMPI
00000116: DUP1
00000117: PUSH4 0x8420ce99
0000011c: EQ
0000011d: PUSH2 0x09f2
00000120: JUMPI
00000121: DUP1
00000122: PUSH4 0x8da5cb5b
00000127: EQ
00000128: PUSH2 0x099f
0000012b: JUMPI
0000012c: DUP1
0000012d: PUSH4 0x94bf804d
00000132: EQ
00000133: PUSH2 0x0947
00000136: JUMPI
00000137: DUP1
00000138: PUSH4 0x95d89b41
0000013d: EQ
0000013e: PUSH2 0x0846
00000141: JUMPI
00000142: DUP1
00000143: PUSH4 0xa9059cbb
00000148: EQ
00000149: PUSH2 0x07b8
0000014c: JUMPI
0000014d: DUP1
0000014e: PUSH4 0xb3d7f6b9
00000153: EQ
00000154: PUSH2 0x079a
00000157: JUMPI
00000158: DUP1
00000159: PUSH4 0xb460af94
0000015e: EQ
0000015f: PUSH2 0x0717
00000162: JUMPI
00000163: DUP1
00000164: PUSH4 0xba087652
00000169: EQ
0000016a: PUSH2 0x065a
0000016d: JUMPI
0000016e: DUP1
0000016f: PUSH4 0xc63d75b6
00000174: EQ
00000175: PUSH2 0x0616
00000178: JUMPI
00000179: DUP1
0000017a: PUSH4 0xc6e6f592
0000017f: EQ
00000180: PUSH2 0x0361
00000183: JUMPI
00000184: DUP1
00000185: PUSH4 0xc89039c5
0000018a: EQ
0000018b: PUSH2 0x05e2
0000018e: JUMPI
0000018f: DUP1
00000190: PUSH4 0xce96cb77
00000195: EQ
00000196: PUSH2 0x05af
00000199: JUMPI
0000019a: DUP1
0000019b: PUSH4 0xd505accf
000001a0: EQ
000001a1: PUSH2 0x03f9
000001a4: JUMPI
000001a5: DUP1
000001a6: PUSH4 0xd905777e
000001ab: EQ
000001ac: PUSH2 0x03c6
000001af: JUMPI
000001b0: DUP1
000001b1: PUSH4 0xdd62ed3e
000001b6: EQ
000001b7: PUSH2 0x0387
000001ba: JUMPI
000001bb: DUP1
000001bc: PUSH4 0xef8b30f7
000001c1: EQ
000001c2: PUSH2 0x0361
000001c5: JUMPI
000001c6: DUP1
000001c7: PUSH4 0xf04e283e
000001cc: EQ
000001cd: PUSH2 0x02b7
000001d0: JUMPI
000001d1: DUP1
000001d2: PUSH4 0xf2fde38b
000001d7: EQ
000001d8: PUSH2 0x0222
000001db: JUMPI
000001dc: PUSH4 0xfee81cf4
000001e1: EQ
000001e2: PUSH2 0x01ea
000001e5: JUMPI
000001e6: PUSH1 0x00
000001e8: DUP1
000001e9: REVERT
000001ea: JUMPDEST
000001eb: CALLVALUE
000001ec: PUSH2 0x021d
000001ef: JUMPI
000001f0: PUSH1 0x20
000001f2: PUSH1 0x03
000001f4: NOT
000001f5: CALLDATASIZE
000001f6: ADD
000001f7: SLT
000001f8: PUSH2 0x021d
000001fb: JUMPI
000001fc: PUSH2 0x0203
000001ff: PUSH2 0x18f7
00000202: JUMP
00000203: JUMPDEST
00000204: PUSH4 0x389a75e1
00000209: PUSH1 0x0c
0000020b: MSTORE
0000020c: PUSH1 0x00
0000020e: MSTORE
0000020f: PUSH1 0x20
00000211: DUP1
00000212: PUSH1 0x0c
00000214: KECCAK256
00000215: SLOAD
00000216: PUSH1 0x40
00000218: MLOAD
00000219: SWAP1
0000021a: DUP2
0000021b: MSTORE
0000021c: RETURN
0000021d: JUMPDEST
0000021e: PUSH1 0x00
00000220: DUP1
00000221: REVERT
00000222: JUMPDEST
00000223: PUSH1 0x20
00000225: PUSH1 0x03
00000227: NOT
00000228: CALLDATASIZE
00000229: ADD
0000022a: SLT
0000022b: PUSH2 0x021d
0000022e: JUMPI
0000022f: PUSH2 0x0236
00000232: PUSH2 0x18f7
00000235: JUMP
00000236: JUMPDEST
00000237: PUSH2 0x023e
0000023a: PUSH2 0x1c91
0000023d: JUMP
0000023e: JUMPDEST
0000023f: DUP1
00000240: PUSH1 0x60
00000242: SHL
00000243: ISZERO
00000244: PUSH2 0x02a9
00000247: JUMPI
00000248: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000025d: AND
0000025e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927
0000027f: DUP2
00000280: DUP2
00000281: SLOAD
00000282: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000002a3: PUSH1 0x00
000002a5: DUP1
000002a6: LOG3
000002a7: SSTORE
000002a8: STOP
000002a9: JUMPDEST
000002aa: PUSH4 0x7448fbae
000002af: PUSH1 0x00
000002b1: MSTORE
000002b2: PUSH1 0x04
000002b4: PUSH1 0x1c
000002b6: REVERT
000002b7: JUMPDEST
000002b8: PUSH1 0x20
000002ba: PUSH1 0x03
000002bc: NOT
000002bd: CALLDATASIZE
000002be: ADD
000002bf: SLT
000002c0: PUSH2 0x021d
000002c3: JUMPI
000002c4: PUSH2 0x02cb
000002c7: PUSH2 0x18f7
000002ca: JUMP
000002cb: JUMPDEST
000002cc: PUSH2 0x02d3
000002cf: PUSH2 0x1c91
000002d2: JUMP
000002d3: JUMPDEST
000002d4: PUSH4 0x389a75e1
000002d9: PUSH1 0x0c
000002db: MSTORE
000002dc: DUP1
000002dd: PUSH1 0x00
000002df: MSTORE
000002e0: PUSH1 0x20
000002e2: PUSH1 0x0c
000002e4: KECCAK256
000002e5: SWAP1
000002e6: DUP2
000002e7: SLOAD
000002e8: TIMESTAMP
000002e9: GT
000002ea: PUSH2 0x0353
000002ed: JUMPI
000002ee: PUSH1 0x00
000002f0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000305: SWAP3
00000306: SSTORE
00000307: AND
00000308: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927
00000329: DUP2
0000032a: DUP2
0000032b: SLOAD
0000032c: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
0000034d: PUSH1 0x00
0000034f: DUP1
00000350: LOG3
00000351: SSTORE
00000352: STOP
00000353: JUMPDEST
00000354: PUSH4 0x6f5e8818
00000359: PUSH1 0x00
0000035b: MSTORE
0000035c: PUSH1 0x04
0000035e: PUSH1 0x1c
00000360: REVERT
00000361: JUMPDEST
00000362: CALLVALUE
00000363: PUSH2 0x021d
00000366: JUMPI
00000367: PUSH1 0x20
00000369: PUSH1 0x03
0000036b: NOT
0000036c: CALLDATASIZE
0000036d: ADD
0000036e: SLT
0000036f: PUSH2 0x021d
00000372: JUMPI
00000373: PUSH1 0x20
00000375: PUSH2 0x037f
00000378: PUSH1 0x04
0000037a: CALLDATALOAD
0000037b: PUSH2 0x1c65
0000037e: JUMP
0000037f: JUMPDEST
00000380: PUSH1 0x40
00000382: MLOAD
00000383: SWAP1
00000384: DUP2
00000385: MSTORE
00000386: RETURN
00000387: JUMPDEST
00000388: CALLVALUE
00000389: PUSH2 0x021d
0000038c: JUMPI
0000038d: PUSH1 0x40
0000038f: PUSH1 0x03
00000391: NOT
00000392: CALLDATASIZE
00000393: ADD
00000394: SLT
00000395: PUSH2 0x021d
00000398: JUMPI
00000399: PUSH2 0x03a0
0000039c: PUSH2 0x18f7
0000039f: JUMP
000003a0: JUMPDEST
000003a1: PUSH2 0x03a8
000003a4: PUSH2 0x191a
000003a7: JUMP
000003a8: JUMPDEST
000003a9: PUSH1 0x20
000003ab: MSTORE
000003ac: PUSH4 0x7f5e9f20
000003b1: PUSH1 0x0c
000003b3: MSTORE
000003b4: PUSH1 0x00
000003b6: MSTORE
000003b7: PUSH1 0x20
000003b9: PUSH1 0x34
000003bb: PUSH1 0x0c
000003bd: KECCAK256
000003be: SLOAD
000003bf: PUSH1 0x40
000003c1: MLOAD
000003c2: SWAP1
000003c3: DUP2
000003c4: MSTORE
000003c5: RETURN
000003c6: JUMPDEST
000003c7: CALLVALUE
000003c8: PUSH2 0x021d
000003cb: JUMPI
000003cc: PUSH1 0x20
000003ce: PUSH1 0x03
000003d0: NOT
000003d1: CALLDATASIZE
000003d2: ADD
000003d3: SLT
000003d4: PUSH2 0x021d
000003d7: JUMPI
000003d8: PUSH2 0x03df
000003db: PUSH2 0x18f7
000003de: JUMP
000003df: JUMPDEST
000003e0: PUSH4 0x87a211a2
000003e5: PUSH1 0x0c
000003e7: MSTORE
000003e8: PUSH1 0x00
000003ea: MSTORE
000003eb: PUSH1 0x20
000003ed: DUP1
000003ee: PUSH1 0x0c
000003f0: KECCAK256
000003f1: SLOAD
000003f2: PUSH1 0x40
000003f4: MLOAD
000003f5: SWAP1
000003f6: DUP2
000003f7: MSTORE
000003f8: RETURN
000003f9: JUMPDEST
000003fa: CALLVALUE
000003fb: PUSH2 0x021d
000003fe: JUMPI
000003ff: PUSH1 0xe0
00000401: PUSH1 0x03
00000403: NOT
00000404: CALLDATASIZE
00000405: ADD
00000406: SLT
00000407: PUSH2 0x021d
0000040a: JUMPI
0000040b: PUSH2 0x0412
0000040e: PUSH2 0x18f7
00000411: JUMP
00000412: JUMPDEST
00000413: PUSH2 0x041a
00000416: PUSH2 0x191a
00000419: JUMP
0000041a: JUMPDEST
0000041b: PUSH1 0x44
0000041d: CALLDATALOAD
0000041e: PUSH1 0x64
00000420: CALLDATALOAD
00000421: SWAP1
00000422: PUSH1 0x84
00000424: CALLDATALOAD
00000425: SWAP4
00000426: PUSH1 0xff
00000428: DUP6
00000429: AND
0000042a: DUP6
0000042b: SUB
0000042c: PUSH2 0x021d
0000042f: JUMPI
00000430: PUSH2 0x0437
00000433: PUSH2 0x1ace
00000436: JUMP
00000437: JUMPDEST
00000438: SWAP2
00000439: DUP3
0000043a: MLOAD
0000043b: PUSH1 0x20
0000043d: DUP1
0000043e: SWAP5
0000043f: ADD
00000440: KECCAK256
00000441: SWAP2
00000442: DUP5
00000443: TIMESTAMP
00000444: GT
00000445: PUSH2 0x05a1
00000448: JUMPI
00000449: PUSH1 0x40
0000044b: MLOAD
0000044c: SWAP1
0000044d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000462: DUP1
00000463: SWAP2
00000464: AND
00000465: SWAP7
00000466: AND
00000467: SWAP7
00000468: PUSH6 0x383775081901
0000046f: PUSH1 0x0e
00000471: MSTORE
00000472: DUP7
00000473: PUSH1 0x00
00000475: MSTORE
00000476: PUSH1 0xc0
00000478: DUP6
00000479: PUSH1 0x0c
0000047b: KECCAK256
0000047c: SWAP3
0000047d: DUP4
0000047e: SLOAD
0000047f: SWAP8
00000480: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f
000004a1: DUP3
000004a2: MSTORE
000004a3: DUP8
000004a4: DUP3
000004a5: ADD
000004a6: SWAP7
000004a7: DUP8
000004a8: MSTORE
000004a9: DUP9
000004aa: PUSH1 0x40
000004ac: DUP4
000004ad: ADD
000004ae: SWAP8
000004af: PUSH32 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6
000004d0: DUP10
000004d1: MSTORE
000004d2: DUP13
000004d3: PUSH1 0x60
000004d5: DUP6
000004d6: ADD
000004d7: SWAP10
000004d8: CHAINID
000004d9: DUP12
000004da: MSTORE
000004db: DUP14
000004dc: PUSH1 0x80
000004de: DUP8
000004df: ADD
000004e0: SWAP4
000004e1: ADDRESS
000004e2: DUP6
000004e3: MSTORE
000004e4: PUSH1 0xa0
000004e6: DUP9
000004e7: KECCAK256
000004e8: PUSH1 0x2e
000004ea: MSTORE
000004eb: PUSH32 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9
0000050c: DUP9
0000050d: MSTORE
0000050e: MSTORE
0000050f: MSTORE
00000510: DUP8
00000511: DUP10
00000512: MSTORE
00000513: MSTORE
00000514: PUSH1 0xa0
00000516: DUP3
00000517: ADD
00000518: MSTORE
00000519: KECCAK256
0000051a: PUSH1 0x4e
0000051c: MSTORE
0000051d: PUSH1 0x42
0000051f: PUSH1 0x2c
00000521: KECCAK256
00000522: PUSH1 0x00
00000524: MSTORE
00000525: PUSH1 0xff
00000527: AND
00000528: DUP5
00000529: MSTORE
0000052a: PUSH1 0xa4
0000052c: CALLDATALOAD
0000052d: PUSH1 0x40
0000052f: MSTORE
00000530: PUSH1 0xc4
00000532: CALLDATALOAD
00000533: PUSH1 0x60
00000535: MSTORE
00000536: DUP4
00000537: DUP1
00000538: PUSH1 0x80
0000053a: PUSH1 0x00
0000053c: PUSH1 0x01
0000053e: GAS
0000053f: STATICCALL
00000540: DUP7
00000541: RETURNDATASIZE
00000542: MLOAD
00000543: SUB
00000544: PUSH2 0x0593
00000547: JUMPI
00000548: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
00000569: SWAP6
0000056a: ADD
0000056b: SWAP1
0000056c: SSTORE
0000056d: DUP6
0000056e: PUSH24 0x7f5e9f200000000000000000000000000000000000000000
00000587: OR
00000588: PUSH1 0x40
0000058a: MSTORE
0000058b: PUSH1 0x34
0000058d: PUSH1 0x2c
0000058f: KECCAK256
00000590: SSTORE
00000591: LOG3
00000592: STOP
00000593: JUMPDEST
00000594: PUSH4 0xddafbaef
00000599: PUSH1 0x00
0000059b: MSTORE
0000059c: PUSH1 0x04
0000059e: PUSH1 0x1c
000005a0: REVERT
000005a1: JUMPDEST
000005a2: PUSH4 0x1a15a3cc
000005a7: PUSH1 0x00
000005a9: MSTORE
000005aa: PUSH1 0x04
000005ac: PUSH1 0x1c
000005ae: REVERT
000005af: JUMPDEST
000005b0: CALLVALUE
000005b1: PUSH2 0x021d
000005b4: JUMPI
000005b5: PUSH1 0x20
000005b7: PUSH1 0x03
000005b9: NOT
000005ba: CALLDATASIZE
000005bb: ADD
000005bc: SLT
000005bd: PUSH2 0x021d
000005c0: JUMPI
000005c1: PUSH2 0x05c8
000005c4: PUSH2 0x18f7
000005c7: JUMP
000005c8: JUMPDEST
000005c9: PUSH4 0x87a211a2
000005ce: PUSH1 0x0c
000005d0: MSTORE
000005d1: PUSH1 0x00
000005d3: MSTORE
000005d4: PUSH1 0x20
000005d6: PUSH2 0x037f
000005d9: DUP2
000005da: PUSH1 0x0c
000005dc: KECCAK256
000005dd: SLOAD
000005de: PUSH2 0x1bb3
000005e1: JUMP
000005e2: JUMPDEST
000005e3: CALLVALUE
000005e4: PUSH2 0x021d
000005e7: JUMPI
000005e8: PUSH1 0x00
000005ea: PUSH1 0x03
000005ec: NOT
000005ed: CALLDATASIZE
000005ee: ADD
000005ef: SLT
000005f0: PUSH2 0x021d
000005f3: JUMPI
000005f4: PUSH1 0x20
000005f6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000060b: PUSH1 0x00
0000060d: SLOAD
0000060e: AND
0000060f: PUSH1 0x40
00000611: MLOAD
00000612: SWAP1
00000613: DUP2
00000614: MSTORE
00000615: RETURN
00000616: JUMPDEST
00000617: CALLVALUE
00000618: PUSH2 0x021d
0000061b: JUMPI
0000061c: PUSH1 0x20
0000061e: PUSH1 0x03
00000620: NOT
00000621: CALLDATASIZE
00000622: ADD
00000623: SLT
00000624: PUSH2 0x021d
00000627: JUMPI
00000628: PUSH2 0x062f
0000062b: PUSH2 0x18f7
0000062e: JUMP
0000062f: JUMPDEST
00000630: POP
00000631: PUSH1 0x20
00000633: PUSH1 0x40
00000635: MLOAD
00000636: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000657: DUP2
00000658: MSTORE
00000659: RETURN
0000065a: JUMPDEST
0000065b: CALLVALUE
0000065c: PUSH2 0x021d
0000065f: JUMPI
00000660: PUSH2 0x0668
00000663: CALLDATASIZE
00000664: PUSH2 0x19f3
00000667: JUMP
00000668: JUMPDEST
00000669: SWAP1
0000066a: PUSH2 0x0671
0000066d: PUSH2 0x1c91
00000670: JUMP
00000671: JUMPDEST
00000672: PUSH9 0x929eee149b4bd21268
0000067c: SWAP1
0000067d: ADDRESS
0000067e: DUP3
0000067f: SLOAD
00000680: EQ
00000681: PUSH2 0x0709
00000684: JUMPI
00000685: ADDRESS
00000686: DUP3
00000687: SSTORE
00000688: PUSH2 0x068f
0000068b: PUSH2 0x1db6
0000068e: JUMP
0000068f: JUMPDEST
00000690: DUP4
00000691: ISZERO
00000692: PUSH2 0x06df
00000695: JUMPI
00000696: PUSH4 0x87a211a2
0000069b: PUSH1 0x0c
0000069d: MSTORE
0000069e: DUP3
0000069f: PUSH1 0x00
000006a1: MSTORE
000006a2: PUSH1 0x20
000006a4: PUSH1 0x0c
000006a6: KECCAK256
000006a7: SLOAD
000006a8: DUP5
000006a9: GT
000006aa: PUSH2 0x06d1
000006ad: JUMPI
000006ae: DUP4
000006af: PUSH2 0x06c6
000006b2: SWAP2
000006b3: PUSH2 0x06bd
000006b6: PUSH1 0x20
000006b8: SWAP7
000006b9: PUSH2 0x1bb3
000006bc: JUMP
000006bd: JUMPDEST
000006be: SWAP5
000006bf: DUP6
000006c0: SWAP2
000006c1: CALLER
000006c2: PUSH2 0x1f75
000006c5: JUMP
000006c6: JUMPDEST
000006c7: CODESIZE
000006c8: SWAP1
000006c9: SSTORE
000006ca: PUSH1 0x40
000006cc: MLOAD
000006cd: SWAP1
000006ce: DUP2
000006cf: MSTORE
000006d0: RETURN
000006d1: JUMPDEST
000006d2: PUSH4 0x4656425a
000006d7: PUSH1 0x00
000006d9: MSTORE
000006da: PUSH1 0x04
000006dc: PUSH1 0x1c
000006de: REVERT
000006df: JUMPDEST
000006e0: PUSH1 0x04
000006e2: PUSH1 0x40
000006e4: MLOAD
000006e5: PUSH32 0x1f2a200500000000000000000000000000000000000000000000000000000000
00000706: DUP2
00000707: MSTORE
00000708: REVERT
00000709: JUMPDEST
0000070a: PUSH4 0xab143c06
0000070f: PUSH1 0x00
00000711: MSTORE
00000712: PUSH1 0x04
00000714: PUSH1 0x1c
00000716: REVERT
00000717: JUMPDEST
00000718: CALLVALUE
00000719: PUSH2 0x021d
0000071c: JUMPI
0000071d: PUSH2 0x0725
00000720: CALLDATASIZE
00000721: PUSH2 0x19f3
00000724: JUMP
00000725: JUMPDEST
00000726: SWAP1
00000727: SWAP2
00000728: PUSH2 0x072f
0000072b: PUSH2 0x1c91
0000072e: JUMP
0000072f: JUMPDEST
00000730: PUSH2 0x0737
00000733: PUSH2 0x1db6
00000736: JUMP
00000737: JUMPDEST
00000738: PUSH9 0x929eee149b4bd21268
00000742: SWAP1
00000743: ADDRESS
00000744: DUP3
00000745: SLOAD
00000746: EQ
00000747: PUSH2 0x0709
0000074a: JUMPI
0000074b: ADDRESS
0000074c: DUP3
0000074d: SSTORE
0000074e: DUP1
0000074f: ISZERO
00000750: PUSH2 0x06df
00000753: JUMPI
00000754: PUSH4 0x87a211a2
00000759: PUSH1 0x0c
0000075b: MSTORE
0000075c: DUP3
0000075d: PUSH1 0x00
0000075f: MSTORE
00000760: PUSH2 0x076d
00000763: PUSH1 0x20
00000765: PUSH1 0x0c
00000767: KECCAK256
00000768: SLOAD
00000769: PUSH2 0x1bb3
0000076c: JUMP
0000076d: JUMPDEST
0000076e: DUP2
0000076f: GT
00000770: PUSH2 0x078c
00000773: JUMPI
00000774: PUSH1 0x20
00000776: SWAP4
00000777: DUP2
00000778: PUSH2 0x0783
0000077b: PUSH2 0x06c6
0000077e: SWAP4
0000077f: PUSH2 0x1be2
00000782: JUMP
00000783: JUMPDEST
00000784: SWAP5
00000785: DUP6
00000786: SWAP3
00000787: CALLER
00000788: PUSH2 0x1f75
0000078b: JUMP
0000078c: JUMPDEST
0000078d: PUSH4 0x936941fc
00000792: PUSH1 0x00
00000794: MSTORE
00000795: PUSH1 0x04
00000797: PUSH1 0x1c
00000799: REVERT
0000079a: JUMPDEST
0000079b: CALLVALUE
0000079c: PUSH2 0x021d
0000079f: JUMPI
000007a0: PUSH1 0x20
000007a2: PUSH1 0x03
000007a4: NOT
000007a5: CALLDATASIZE
000007a6: ADD
000007a7: SLT
000007a8: PUSH2 0x021d
000007ab: JUMPI
000007ac: PUSH1 0x20
000007ae: PUSH2 0x037f
000007b1: PUSH1 0x04
000007b3: CALLDATALOAD
000007b4: PUSH2 0x1c39
000007b7: JUMP
000007b8: JUMPDEST
000007b9: CALLVALUE
000007ba: PUSH2 0x021d
000007bd: JUMPI
000007be: PUSH1 0x40
000007c0: PUSH1 0x03
000007c2: NOT
000007c3: CALLDATASIZE
000007c4: ADD
000007c5: SLT
000007c6: PUSH2 0x021d
000007c9: JUMPI
000007ca: PUSH2 0x07d1
000007cd: PUSH2 0x18f7
000007d0: JUMP
000007d1: JUMPDEST
000007d2: PUSH1 0x24
000007d4: CALLDATALOAD
000007d5: PUSH4 0x87a211a2
000007da: PUSH1 0x0c
000007dc: MSTORE
000007dd: CALLER
000007de: PUSH1 0x00
000007e0: MSTORE
000007e1: PUSH1 0x20
000007e3: SWAP2
000007e4: DUP3
000007e5: PUSH1 0x0c
000007e7: KECCAK256
000007e8: DUP1
000007e9: SLOAD
000007ea: DUP1
000007eb: DUP5
000007ec: GT
000007ed: PUSH2 0x0838
000007f0: JUMPI
000007f1: DUP4
000007f2: SWAP1
000007f3: SUB
000007f4: SWAP1
000007f5: SSTORE
000007f6: PUSH1 0x00
000007f8: MSTORE
000007f9: DUP2
000007fa: PUSH1 0x0c
000007fc: KECCAK256
000007fd: DUP2
000007fe: DUP2
000007ff: SLOAD
00000800: ADD
00000801: SWAP1
00000802: SSTORE
00000803: DUP2
00000804: MSTORE
00000805: PUSH1 0x0c
00000807: MLOAD
00000808: PUSH1 0x60
0000080a: SHR
0000080b: CALLER
0000080c: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0000082d: DUP4
0000082e: DUP1
0000082f: LOG3
00000830: PUSH1 0x40
00000832: MLOAD
00000833: PUSH1 0x01
00000835: DUP2
00000836: MSTORE
00000837: RETURN
00000838: JUMPDEST
00000839: PUSH4 0xf4d678b8
0000083e: PUSH1 0x00
00000840: MSTORE
00000841: PUSH1 0x04
00000843: PUSH1 0x1c
00000845: REVERT
00000846: JUMPDEST
00000847: CALLVALUE
00000848: PUSH2 0x021d
0000084b: JUMPI
0000084c: PUSH1 0x00
0000084e: PUSH1 0x03
00000850: NOT
00000851: CALLDATASIZE
00000852: ADD
00000853: SLT
00000854: PUSH2 0x021d
00000857: JUMPI
00000858: PUSH1 0x40
0000085a: MLOAD
0000085b: PUSH1 0x00
0000085d: PUSH1 0x04
0000085f: SLOAD
00000860: PUSH2 0x0868
00000863: DUP2
00000864: PUSH2 0x1a7b
00000867: JUMP
00000868: JUMPDEST
00000869: DUP1
0000086a: DUP5
0000086b: MSTORE
0000086c: SWAP1
0000086d: PUSH1 0x20
0000086f: SWAP1
00000870: PUSH1 0x01
00000872: SWAP1
00000873: DUP2
00000874: DUP2
00000875: AND
00000876: SWAP1
00000877: DUP2
00000878: ISZERO
00000879: PUSH2 0x08ff
0000087c: JUMPI
0000087d: POP
0000087e: PUSH1 0x01
00000880: EQ
00000881: PUSH2 0x08a5
00000884: JUMPI
00000885: JUMPDEST
00000886: PUSH2 0x08a1
00000889: DUP6
0000088a: PUSH2 0x0895
0000088d: DUP2
0000088e: DUP8
0000088f: SUB
00000890: DUP3
00000891: PUSH2 0x193d
00000894: JUMP
00000895: JUMPDEST
00000896: PUSH1 0x40
00000898: MLOAD
00000899: SWAP2
0000089a: DUP3
0000089b: SWAP2
0000089c: DUP3
0000089d: PUSH2 0x1891
000008a0: JUMP
000008a1: JUMPDEST
000008a2: SUB
000008a3: SWAP1
000008a4: RETURN
000008a5: JUMPDEST
000008a6: PUSH1 0x04
000008a8: PUSH1 0x00
000008aa: SWAP1
000008ab: DUP2
000008ac: MSTORE
000008ad: SWAP4
000008ae: POP
000008af: PUSH32 0x8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b
000008d0: JUMPDEST
000008d1: DUP4
000008d2: DUP6
000008d3: LT
000008d4: PUSH2 0x08ec
000008d7: JUMPI
000008d8: POP
000008d9: POP
000008da: POP
000008db: POP
000008dc: DUP2
000008dd: ADD
000008de: PUSH1 0x20
000008e0: ADD
000008e1: PUSH2 0x0895
000008e4: DUP3
000008e5: PUSH2 0x08a1
000008e8: PUSH2 0x0885
000008eb: JUMP
000008ec: JUMPDEST
000008ed: DUP1
000008ee: SLOAD
000008ef: DUP7
000008f0: DUP7
000008f1: ADD
000008f2: DUP5
000008f3: ADD
000008f4: MSTORE
000008f5: SWAP4
000008f6: DUP3
000008f7: ADD
000008f8: SWAP4
000008f9: DUP2
000008fa: ADD
000008fb: PUSH2 0x08d0
000008fe: JUMP
000008ff: JUMPDEST
00000900: DUP7
00000901: SWAP6
00000902: POP
00000903: PUSH2 0x08a1
00000906: SWAP7
00000907: SWAP4
00000908: POP
00000909: PUSH1 0x20
0000090b: SWAP3
0000090c: POP
0000090d: PUSH2 0x0895
00000910: SWAP5
00000911: SWAP2
00000912: POP
00000913: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000934: AND
00000935: DUP3
00000936: DUP5
00000937: ADD
00000938: MSTORE
00000939: ISZERO
0000093a: ISZERO
0000093b: PUSH1 0x05
0000093d: SHL
0000093e: DUP3
0000093f: ADD
00000940: ADD
00000941: SWAP3
00000942: SWAP4
00000943: PUSH2 0x0885
00000946: JUMP
00000947: JUMPDEST
00000948: CALLVALUE
00000949: PUSH2 0x021d
0000094c: JUMPI
0000094d: PUSH1 0x40
0000094f: PUSH1 0x03
00000951: NOT
00000952: CALLDATASIZE
00000953: ADD
00000954: SLT
00000955: PUSH2 0x021d
00000958: JUMPI
00000959: PUSH1 0x04
0000095b: CALLDATALOAD
0000095c: PUSH2 0x0963
0000095f: PUSH2 0x191a
00000962: JUMP
00000963: JUMPDEST
00000964: PUSH2 0x096b
00000967: PUSH2 0x1c91
0000096a: JUMP
0000096b: JUMPDEST
0000096c: PUSH2 0x0973
0000096f: PUSH2 0x1db6
00000972: JUMP
00000973: JUMPDEST
00000974: PUSH9 0x929eee149b4bd21268
0000097e: ADDRESS
0000097f: DUP2
00000980: SLOAD
00000981: EQ
00000982: PUSH2 0x0709
00000985: JUMPI
00000986: PUSH2 0x06c6
00000989: PUSH1 0x20
0000098b: SWAP4
0000098c: ADDRESS
0000098d: DUP4
0000098e: SSTORE
0000098f: PUSH2 0x0997
00000992: DUP2
00000993: PUSH2 0x1c39
00000996: JUMP
00000997: JUMPDEST
00000998: DUP1
00000999: SWAP5
0000099a: CALLER
0000099b: PUSH2 0x1e0b
0000099e: JUMP
0000099f: JUMPDEST
000009a0: CALLVALUE
000009a1: PUSH2 0x021d
000009a4: JUMPI
000009a5: PUSH1 0x00
000009a7: PUSH1 0x03
000009a9: NOT
000009aa: CALLDATASIZE
000009ab: ADD
000009ac: SLT
000009ad: PUSH2 0x021d
000009b0: JUMPI
000009b1: PUSH1 0x20
000009b3: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927
000009d4: SLOAD
000009d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009ea: PUSH1 0x40
000009ec: MLOAD
000009ed: SWAP2
000009ee: AND
000009ef: DUP2
000009f0: MSTORE
000009f1: RETURN
000009f2: JUMPDEST
000009f3: CALLVALUE
000009f4: PUSH2 0x021d
000009f7: JUMPI
000009f8: PUSH1 0xa0
000009fa: PUSH1 0x03
000009fc: NOT
000009fd: CALLDATASIZE
000009fe: ADD
000009ff: SLT
00000a00: PUSH2 0x021d
00000a03: JUMPI
00000a04: PUSH2 0x0a0b
00000a07: PUSH2 0x18f7
00000a0a: JUMP
00000a0b: JUMPDEST
00000a0c: PUSH1 0x24
00000a0e: CALLDATALOAD
00000a0f: SWAP1
00000a10: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a25: DUP1
00000a26: DUP4
00000a27: AND
00000a28: DUP4
00000a29: SUB
00000a2a: PUSH2 0x021d
00000a2d: JUMPI
00000a2e: PUSH1 0x44
00000a30: CALLDATALOAD
00000a31: PUSH8 0xffffffffffffffff
00000a3a: DUP2
00000a3b: GT
00000a3c: PUSH2 0x021d
00000a3f: JUMPI
00000a40: PUSH2 0x0a4d
00000a43: SWAP1
00000a44: CALLDATASIZE
00000a45: SWAP1
00000a46: PUSH1 0x04
00000a48: ADD
00000a49: PUSH2 0x197e
00000a4c: JUMP
00000a4d: JUMPDEST
00000a4e: SWAP3
00000a4f: PUSH1 0x64
00000a51: CALLDATALOAD
00000a52: PUSH8 0xffffffffffffffff
00000a5b: DUP2
00000a5c: GT
00000a5d: PUSH2 0x021d
00000a60: JUMPI
00000a61: PUSH2 0x0a6e
00000a64: SWAP1
00000a65: CALLDATASIZE
00000a66: SWAP1
00000a67: PUSH1 0x04
00000a69: ADD
00000a6a: PUSH2 0x197e
00000a6d: JUMP
00000a6e: JUMPDEST
00000a6f: PUSH1 0x05
00000a71: PUSH1 0x84
00000a73: CALLDATALOAD
00000a74: LT
00000a75: ISZERO
00000a76: PUSH2 0x021d
00000a79: JUMPI
00000a7a: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00000a9b: SLOAD
00000a9c: SWAP4
00000a9d: PUSH8 0xffffffffffffffff
00000aa6: DUP6
00000aa7: AND
00000aa8: DUP1
00000aa9: ISZERO
00000aaa: SWAP1
00000aab: DUP2
00000aac: PUSH2 0x11a3
00000aaf: JUMPI
00000ab0: JUMPDEST
00000ab1: PUSH1 0x01
00000ab3: EQ
00000ab4: SWAP1
00000ab5: DUP2
00000ab6: PUSH2 0x1199
00000ab9: JUMPI
00000aba: JUMPDEST
00000abb: ISZERO
00000abc: SWAP1
00000abd: DUP2
00000abe: PUSH2 0x1190
00000ac1: JUMPI
00000ac2: JUMPDEST
00000ac3: POP
00000ac4: PUSH2 0x1166
00000ac7: JUMPI
00000ac8: PUSH1 0x01
00000aca: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
00000aeb: DUP7
00000aec: AND
00000aed: OR
00000aee: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00000b0f: SSTORE
00000b10: PUSH1 0xff
00000b12: DUP6
00000b13: PUSH1 0x40
00000b15: SHR
00000b16: AND
00000b17: ISZERO
00000b18: PUSH2 0x1111
00000b1b: JUMPI
00000b1c: JUMPDEST
00000b1d: PUSH1 0x84
00000b1f: CALLDATALOAD
00000b20: ISZERO
00000b21: PUSH2 0x10e7
00000b24: JUMPI
00000b25: DUP4
00000b26: AND
00000b27: DUP1
00000b28: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927
00000b49: SSTORE
00000b4a: PUSH1 0x00
00000b4c: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000b6d: DUP2
00000b6e: DUP1
00000b6f: LOG3
00000b70: PUSH2 0x0b77
00000b73: PUSH2 0x1f1c
00000b76: JUMP
00000b77: JUMPDEST
00000b78: PUSH2 0x0b7f
00000b7b: PUSH2 0x1f1c
00000b7e: JUMP
00000b7f: JUMPDEST
00000b80: PUSH32 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300
00000ba1: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00000bc2: DUP2
00000bc3: SLOAD
00000bc4: AND
00000bc5: SWAP1
00000bc6: SSTORE
00000bc7: DUP3
00000bc8: DUP3
00000bc9: AND
00000bca: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
00000beb: PUSH1 0x00
00000bed: SLOAD
00000bee: AND
00000bef: OR
00000bf0: PUSH1 0x00
00000bf2: SSTORE
00000bf3: DUP5
00000bf4: MLOAD
00000bf5: PUSH8 0xffffffffffffffff
00000bfe: DUP2
00000bff: GT
00000c00: PUSH2 0x0f45
00000c03: JUMPI
00000c04: DUP1
00000c05: PUSH1 0x03
00000c07: SWAP7
00000c08: PUSH2 0x0c11
00000c0b: DUP9
00000c0c: SLOAD
00000c0d: PUSH2 0x1a7b
00000c10: JUMP
00000c11: JUMPDEST
00000c12: PUSH1 0x1f
00000c14: DUP2
00000c15: GT
00000c16: PUSH2 0x103b
00000c19: JUMPI
00000c1a: JUMPDEST
00000c1b: POP
00000c1c: PUSH1 0x20
00000c1e: SWAP1
00000c1f: PUSH1 0x1f
00000c21: DUP4
00000c22: GT
00000c23: PUSH1 0x01
00000c25: EQ
00000c26: PUSH2 0x0f7f
00000c29: JUMPI
00000c2a: PUSH1 0x00
00000c2c: SWAP3
00000c2d: PUSH2 0x0f74
00000c30: JUMPI
00000c31: JUMPDEST
00000c32: POP
00000c33: POP
00000c34: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000c55: DUP3
00000c56: PUSH1 0x01
00000c58: SHL
00000c59: SWAP3
00000c5a: DUP9
00000c5b: SHL
00000c5c: SHR
00000c5d: NOT
00000c5e: AND
00000c5f: OR
00000c60: DUP6
00000c61: SSTORE
00000c62: JUMPDEST
00000c63: DUP1
00000c64: MLOAD
00000c65: SWAP1
00000c66: PUSH8 0xffffffffffffffff
00000c6f: DUP3
00000c70: GT
00000c71: PUSH2 0x0f45
00000c74: JUMPI
00000c75: PUSH2 0x0c7f
00000c78: PUSH1 0x04
00000c7a: SLOAD
00000c7b: PUSH2 0x1a7b
00000c7e: JUMP
00000c7f: JUMPDEST
00000c80: PUSH1 0x1f
00000c82: DUP2
00000c83: GT
00000c84: PUSH2 0x0ee0
00000c87: JUMPI
00000c88: JUMPDEST
00000c89: POP
00000c8a: PUSH1 0x20
00000c8c: SWAP1
00000c8d: PUSH1 0x1f
00000c8f: DUP4
00000c90: GT
00000c91: PUSH1 0x01
00000c93: EQ
00000c94: PUSH2 0x0e0d
00000c97: JUMPI
00000c98: SWAP4
00000c99: PUSH1 0x00
00000c9b: SWAP4
00000c9c: PUSH1 0xff
00000c9e: SWAP8
00000c9f: DUP5
00000ca0: PUSH1 0x04
00000ca2: SWAP6
00000ca3: PUSH1 0x1c
00000ca5: SWAP6
00000ca6: PUSH1 0x20
00000ca8: SWAP10
00000ca9: DUP10
00000caa: SWAP4
00000cab: PUSH2 0x0de2
00000cae: JUMPI
00000caf: JUMPDEST
00000cb0: POP
00000cb1: POP
00000cb2: DUP1
00000cb3: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000cd4: SWAP2
00000cd5: PUSH1 0x01
00000cd7: SHL
00000cd8: SWAP4
00000cd9: SHL
00000cda: SHR
00000cdb: NOT
00000cdc: AND
00000cdd: OR
00000cde: DUP5
00000cdf: SSTORE
00000ce0: JUMPDEST
00000ce1: PUSH4 0x313ce567
00000ce6: DUP6
00000ce7: MSTORE
00000ce8: AND
00000ce9: GAS
00000cea: STATICCALL
00000ceb: PUSH1 0x00
00000ced: MLOAD
00000cee: PUSH2 0x0100
00000cf1: DUP2
00000cf2: LT
00000cf3: PUSH1 0x1f
00000cf5: RETURNDATASIZE
00000cf6: GT
00000cf7: AND
00000cf8: SWAP1
00000cf9: SWAP2
00000cfa: AND
00000cfb: SWAP1
00000cfc: DUP2
00000cfd: ISZERO
00000cfe: PUSH2 0x0dd9
00000d01: JUMPI
00000d02: MUL
00000d03: JUMPDEST
00000d04: PUSH1 0x02
00000d06: SLOAD
00000d07: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000
00000d28: PUSH2 0xff00
00000d2b: DUP6
00000d2c: PUSH1 0x84
00000d2e: CALLDATALOAD
00000d2f: AND
00000d30: SWAP4
00000d31: PUSH1 0x08
00000d33: SHL
00000d34: AND
00000d35: SWAP2
00000d36: AND
00000d37: OR
00000d38: OR
00000d39: PUSH1 0x02
00000d3b: SSTORE
00000d3c: PUSH1 0x40
00000d3e: SHR
00000d3f: AND
00000d40: ISZERO
00000d41: PUSH2 0x0d46
00000d44: JUMPI
00000d45: STOP
00000d46: JUMPDEST
00000d47: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
00000d68: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00000d89: SLOAD
00000d8a: AND
00000d8b: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00000dac: SSTORE
00000dad: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2
00000dce: PUSH1 0x20
00000dd0: PUSH1 0x40
00000dd2: MLOAD
00000dd3: PUSH1 0x01
00000dd5: DUP2
00000dd6: MSTORE
00000dd7: LOG1
00000dd8: STOP
00000dd9: JUMPDEST
00000dda: POP
00000ddb: POP
00000ddc: PUSH1 0x12
00000dde: PUSH2 0x0d03
00000de1: JUMP
00000de2: JUMPDEST
00000de3: ADD
00000de4: MLOAD
00000de5: SWAP2
00000de6: POP
00000de7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000e08: DUP13
00000e09: PUSH2 0x0caf
00000e0c: JUMP
00000e0d: JUMPDEST
00000e0e: SWAP1
00000e0f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00000e30: DUP4
00000e31: AND
00000e32: SWAP2
00000e33: PUSH1 0x04
00000e35: PUSH1 0x00
00000e37: MSTORE
00000e38: PUSH32 0x8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b
00000e59: SWAP3
00000e5a: PUSH1 0x00
00000e5c: JUMPDEST
00000e5d: DUP2
00000e5e: DUP2
00000e5f: LT
00000e60: PUSH2 0x0ec8
00000e63: JUMPI
00000e64: POP
00000e65: DUP5
00000e66: PUSH1 0x1c
00000e68: SWAP5
00000e69: PUSH1 0xff
00000e6b: SWAP11
00000e6c: PUSH1 0x20
00000e6e: SWAP10
00000e6f: SWAP6
00000e70: PUSH1 0x00
00000e72: SWAP10
00000e73: SWAP6
00000e74: DUP5
00000e75: PUSH1 0x04
00000e77: SWAP11
00000e78: PUSH1 0x01
00000e7a: SWAP8
00000e7b: LT
00000e7c: PUSH2 0x0e8f
00000e7f: JUMPI
00000e80: JUMPDEST
00000e81: POP
00000e82: POP
00000e83: POP
00000e84: POP
00000e85: POP
00000e86: DUP2
00000e87: SHL
00000e88: ADD
00000e89: DUP5
00000e8a: SSTORE
00000e8b: PUSH2 0x0ce0
00000e8e: JUMP
00000e8f: JUMPDEST
00000e90: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000eb1: SWAP3
00000eb2: PUSH1 0xf8
00000eb4: SWAP3
00000eb5: ADD
00000eb6: MLOAD
00000eb7: SWAP4
00000eb8: SHL
00000eb9: AND
00000eba: SHR
00000ebb: NOT
00000ebc: AND
00000ebd: SWAP1
00000ebe: SSTORE
00000ebf: DUP11
00000ec0: DUP1
00000ec1: DUP1
00000ec2: DUP1
00000ec3: DUP5
00000ec4: PUSH2 0x0e80
00000ec7: JUMP
00000ec8: JUMPDEST
00000ec9: SWAP3
00000eca: SWAP4
00000ecb: PUSH1 0x20
00000ecd: PUSH1 0x01
00000ecf: DUP2
00000ed0: SWAP3
00000ed1: DUP8
00000ed2: DUP7
00000ed3: ADD
00000ed4: MLOAD
00000ed5: DUP2
00000ed6: SSTORE
00000ed7: ADD
00000ed8: SWAP6
00000ed9: ADD
00000eda: SWAP4
00000edb: ADD
00000edc: PUSH2 0x0e5c
00000edf: JUMP
00000ee0: JUMPDEST
00000ee1: PUSH1 0x04
00000ee3: PUSH1 0x00
00000ee5: MSTORE
00000ee6: PUSH32 0x8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b
00000f07: PUSH1 0x1f
00000f09: DUP5
00000f0a: ADD
00000f0b: PUSH1 0x05
00000f0d: SHR
00000f0e: DUP2
00000f0f: ADD
00000f10: SWAP2
00000f11: PUSH1 0x20
00000f13: DUP6
00000f14: LT
00000f15: PUSH2 0x0f3b
00000f18: JUMPI
00000f19: JUMPDEST
00000f1a: PUSH1 0x1f
00000f1c: ADD
00000f1d: PUSH1 0x05
00000f1f: SHR
00000f20: ADD
00000f21: SWAP1
00000f22: JUMPDEST
00000f23: DUP2
00000f24: DUP2
00000f25: LT
00000f26: PUSH2 0x0f2f
00000f29: JUMPI
00000f2a: POP
00000f2b: PUSH2 0x0c88
00000f2e: JUMP
00000f2f: JUMPDEST
00000f30: PUSH1 0x00
00000f32: DUP2
00000f33: SSTORE
00000f34: PUSH1 0x01
00000f36: ADD
00000f37: PUSH2 0x0f22
00000f3a: JUMP
00000f3b: JUMPDEST
00000f3c: SWAP1
00000f3d: SWAP2
00000f3e: POP
00000f3f: DUP2
00000f40: SWAP1
00000f41: PUSH2 0x0f19
00000f44: JUMP
00000f45: JUMPDEST
00000f46: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00000f67: PUSH1 0x00
00000f69: MSTORE
00000f6a: PUSH1 0x41
00000f6c: PUSH1 0x04
00000f6e: MSTORE
00000f6f: PUSH1 0x24
00000f71: PUSH1 0x00
00000f73: REVERT
00000f74: JUMPDEST
00000f75: ADD
00000f76: MLOAD
00000f77: SWAP1
00000f78: POP
00000f79: DUP8
00000f7a: DUP1
00000f7b: PUSH2 0x0c31
00000f7e: JUMP
00000f7f: JUMPDEST
00000f80: PUSH1 0x00
00000f82: DUP10
00000f83: DUP2
00000f84: MSTORE
00000f85: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b
00000fa6: SWAP4
00000fa7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00000fc8: AND
00000fc9: SWAP1
00000fca: JUMPDEST
00000fcb: DUP2
00000fcc: DUP2
00000fcd: LT
00000fce: PUSH2 0x1023
00000fd1: JUMPI
00000fd2: POP
00000fd3: SWAP1
00000fd4: DUP5
00000fd5: PUSH1 0x01
00000fd7: SWAP6
00000fd8: SWAP5
00000fd9: SWAP4
00000fda: SWAP3
00000fdb: LT
00000fdc: PUSH2 0x0fed
00000fdf: JUMPI
00000fe0: JUMPDEST
00000fe1: POP
00000fe2: POP
00000fe3: POP
00000fe4: DUP2
00000fe5: SHL
00000fe6: ADD
00000fe7: DUP6
00000fe8: SSTORE
00000fe9: PUSH2 0x0c62
00000fec: JUMP
00000fed: JUMPDEST
00000fee: ADD
00000fef: MLOAD
00000ff0: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001011: PUSH1 0xf8
00001013: DUP5
00001014: DUP12
00001015: SHL
00001016: AND
00001017: SHR
00001018: NOT
00001019: AND
0000101a: SWAP1
0000101b: SSTORE
0000101c: DUP8
0000101d: DUP1
0000101e: DUP1
0000101f: PUSH2 0x0fe0
00001022: JUMP
00001023: JUMPDEST
00001024: SWAP3
00001025: SWAP4
00001026: PUSH1 0x20
00001028: PUSH1 0x01
0000102a: DUP2
0000102b: SWAP3
0000102c: DUP8
0000102d: DUP7
0000102e: ADD
0000102f: MLOAD
00001030: DUP2
00001031: SSTORE
00001032: ADD
00001033: SWAP6
00001034: ADD
00001035: SWAP4
00001036: ADD
00001037: PUSH2 0x0fca
0000103a: JUMP
0000103b: JUMPDEST
0000103c: SWAP1
0000103d: SWAP2
0000103e: POP
0000103f: DUP8
00001040: PUSH1 0x00
00001042: MSTORE
00001043: PUSH1 0x1f
00001045: DUP4
00001046: ADD
00001047: PUSH1 0x05
00001049: SHR
0000104a: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b
0000106b: ADD
0000106c: SWAP1
0000106d: PUSH1 0x20
0000106f: DUP5
00001070: LT
00001071: PUSH2 0x10bf
00001074: JUMPI
00001075: JUMPDEST
00001076: SWAP1
00001077: PUSH1 0x1f
00001079: DUP5
0000107a: SWAP4
0000107b: SWAP3
0000107c: ADD
0000107d: PUSH1 0x05
0000107f: SHR
00001080: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b
000010a1: ADD
000010a2: SWAP1
000010a3: JUMPDEST
000010a4: DUP2
000010a5: DUP2
000010a6: LT
000010a7: PUSH2 0x10b0
000010aa: JUMPI
000010ab: POP
000010ac: PUSH2 0x0c1a
000010af: JUMP
000010b0: JUMPDEST
000010b1: PUSH1 0x00
000010b3: DUP2
000010b4: SSTORE
000010b5: DUP5
000010b6: SWAP4
000010b7: POP
000010b8: PUSH1 0x01
000010ba: ADD
000010bb: PUSH2 0x10a3
000010be: JUMP
000010bf: JUMPDEST
000010c0: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b
000010e1: SWAP2
000010e2: POP
000010e3: PUSH2 0x1075
000010e6: JUMP
000010e7: JUMPDEST
000010e8: PUSH1 0x04
000010ea: PUSH1 0x40
000010ec: MLOAD
000010ed: PUSH32 0x3f9f188e00000000000000000000000000000000000000000000000000000000
0000110e: DUP2
0000110f: MSTORE
00001110: REVERT
00001111: JUMPDEST
00001112: PUSH9 0x010000000000000001
0000111c: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
0000113d: DUP7
0000113e: AND
0000113f: OR
00001140: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00001161: SSTORE
00001162: PUSH2 0x0b1c
00001165: JUMP
00001166: JUMPDEST
00001167: PUSH1 0x04
00001169: PUSH1 0x40
0000116b: MLOAD
0000116c: PUSH32 0xf92ee8a900000000000000000000000000000000000000000000000000000000
0000118d: DUP2
0000118e: MSTORE
0000118f: REVERT
00001190: JUMPDEST
00001191: SWAP1
00001192: POP
00001193: ISZERO
00001194: DUP8
00001195: PUSH2 0x0ac2
00001198: JUMP
00001199: JUMPDEST
0000119a: ADDRESS
0000119b: EXTCODESIZE
0000119c: ISZERO
0000119d: SWAP2
0000119e: POP
0000119f: PUSH2 0x0aba
000011a2: JUMP
000011a3: JUMPDEST
000011a4: PUSH1 0x40
000011a6: DUP8
000011a7: SWAP1
000011a8: SHR
000011a9: PUSH1 0xff
000011ab: AND
000011ac: ISZERO
000011ad: SWAP2
000011ae: POP
000011af: PUSH2 0x0ab0
000011b2: JUMP
000011b3: JUMPDEST
000011b4: CALLVALUE
000011b5: PUSH2 0x021d
000011b8: JUMPI
000011b9: PUSH1 0x20
000011bb: PUSH1 0x03
000011bd: NOT
000011be: CALLDATASIZE
000011bf: ADD
000011c0: SLT
000011c1: PUSH2 0x021d
000011c4: JUMPI
000011c5: PUSH2 0x11cc
000011c8: PUSH2 0x18f7
000011cb: JUMP
000011cc: JUMPDEST
000011cd: PUSH4 0x38377508
000011d2: PUSH1 0x0c
000011d4: MSTORE
000011d5: PUSH1 0x00
000011d7: MSTORE
000011d8: PUSH1 0x20
000011da: DUP1
000011db: PUSH1 0x0c
000011dd: KECCAK256
000011de: SLOAD
000011df: PUSH1 0x40
000011e1: MLOAD
000011e2: SWAP1
000011e3: DUP2
000011e4: MSTORE
000011e5: RETURN
000011e6: JUMPDEST
000011e7: PUSH1 0x00
000011e9: PUSH1 0x03
000011eb: NOT
000011ec: CALLDATASIZE
000011ed: ADD
000011ee: SLT
000011ef: PUSH2 0x021d
000011f2: JUMPI
000011f3: PUSH2 0x11fa
000011f6: PUSH2 0x1c91
000011f9: JUMP
000011fa: JUMPDEST
000011fb: PUSH1 0x00
000011fd: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927
0000121e: DUP2
0000121f: DUP2
00001220: SLOAD
00001221: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00001242: DUP3
00001243: DUP1
00001244: LOG3
00001245: SSTORE
00001246: STOP
00001247: JUMPDEST
00001248: CALLVALUE
00001249: PUSH2 0x021d
0000124c: JUMPI
0000124d: PUSH1 0x40
0000124f: PUSH1 0x03
00001251: NOT
00001252: CALLDATASIZE
00001253: ADD
00001254: SLT
00001255: PUSH2 0x021d
00001258: JUMPI
00001259: PUSH1 0x04
0000125b: CALLDATALOAD
0000125c: PUSH2 0x1263
0000125f: PUSH2 0x191a
00001262: JUMP
00001263: JUMPDEST
00001264: SWAP1
00001265: PUSH2 0x126c
00001268: PUSH2 0x1c91
0000126b: JUMP
0000126c: JUMPDEST
0000126d: PUSH2 0x1274
00001270: PUSH2 0x1db6
00001273: JUMP
00001274: JUMPDEST
00001275: PUSH9 0x929eee149b4bd21268
0000127f: ADDRESS
00001280: DUP2
00001281: SLOAD
00001282: EQ
00001283: PUSH2 0x0709
00001286: JUMPI
00001287: ADDRESS
00001288: DUP2
00001289: SSTORE
0000128a: DUP2
0000128b: ISZERO
0000128c: PUSH2 0x06df
0000128f: JUMPI
00001290: PUSH2 0x1297
00001293: PUSH2 0x1c0e
00001296: JUMP
00001297: JUMPDEST
00001298: DUP3
00001299: GT
0000129a: PUSH2 0x12b6
0000129d: JUMPI
0000129e: PUSH2 0x06c6
000012a1: PUSH1 0x20
000012a3: SWAP4
000012a4: PUSH2 0x12ac
000012a7: DUP5
000012a8: PUSH2 0x1c65
000012ab: JUMP
000012ac: JUMPDEST
000012ad: SWAP4
000012ae: DUP5
000012af: SWAP2
000012b0: CALLER
000012b1: SWAP1
000012b2: PUSH2 0x1e0b
000012b5: JUMP
000012b6: JUMPDEST
000012b7: PUSH1 0x04
000012b9: PUSH1 0x40
000012bb: MLOAD
000012bc: PUSH32 0xb3c61a8300000000000000000000000000000000000000000000000000000000
000012dd: DUP2
000012de: MSTORE
000012df: REVERT
000012e0: JUMPDEST
000012e1: CALLVALUE
000012e2: PUSH2 0x021d
000012e5: JUMPI
000012e6: PUSH1 0x00
000012e8: PUSH1 0x03
000012ea: NOT
000012eb: CALLDATASIZE
000012ec: ADD
000012ed: SLT
000012ee: PUSH2 0x021d
000012f1: JUMPI
000012f2: PUSH1 0x20
000012f4: PUSH1 0xff
000012f6: PUSH32 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300
00001317: SLOAD
00001318: AND
00001319: PUSH1 0x40
0000131b: MLOAD
0000131c: SWAP1
0000131d: ISZERO
0000131e: ISZERO
0000131f: DUP2
00001320: MSTORE
00001321: RETURN
00001322: JUMPDEST
00001323: PUSH1 0x00
00001325: PUSH1 0x03
00001327: NOT
00001328: CALLDATASIZE
00001329: ADD
0000132a: SLT
0000132b: PUSH2 0x021d
0000132e: JUMPI
0000132f: PUSH4 0x389a75e1
00001334: PUSH1 0x0c
00001336: MSTORE
00001337: CALLER
00001338: PUSH1 0x00
0000133a: MSTORE
0000133b: PUSH1 0x00
0000133d: PUSH1 0x20
0000133f: PUSH1 0x0c
00001341: KECCAK256
00001342: SSTORE
00001343: CALLER
00001344: PUSH32 0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92
00001365: PUSH1 0x00
00001367: DUP1
00001368: LOG2
00001369: STOP
0000136a: JUMPDEST
0000136b: CALLVALUE
0000136c: PUSH2 0x021d
0000136f: JUMPI
00001370: PUSH1 0x20
00001372: PUSH1 0x03
00001374: NOT
00001375: CALLDATASIZE
00001376: ADD
00001377: SLT
00001378: PUSH2 0x021d
0000137b: JUMPI
0000137c: PUSH1 0x20
0000137e: PUSH2 0x037f
00001381: PUSH1 0x04
00001383: CALLDATALOAD
00001384: PUSH2 0x1bb3
00001387: JUMP
00001388: JUMPDEST
00001389: CALLVALUE
0000138a: PUSH2 0x021d
0000138d: JUMPI
0000138e: PUSH1 0x20
00001390: PUSH1 0x03
00001392: NOT
00001393: CALLDATASIZE
00001394: ADD
00001395: SLT
00001396: PUSH2 0x021d
00001399: JUMPI
0000139a: PUSH2 0x13a1
0000139d: PUSH2 0x18f7
000013a0: JUMP
000013a1: JUMPDEST
000013a2: POP
000013a3: PUSH1 0x20
000013a5: PUSH2 0x037f
000013a8: PUSH2 0x1c0e
000013ab: JUMP
000013ac: JUMPDEST
000013ad: CALLVALUE
000013ae: PUSH2 0x021d
000013b1: JUMPI
000013b2: PUSH1 0x00
000013b4: PUSH1 0x03
000013b6: NOT
000013b7: CALLDATASIZE
000013b8: ADD
000013b9: SLT
000013ba: PUSH2 0x021d
000013bd: JUMPI
000013be: PUSH1 0xff
000013c0: PUSH1 0x02
000013c2: SLOAD
000013c3: AND
000013c4: PUSH1 0x40
000013c6: MLOAD
000013c7: PUSH1 0x05
000013c9: DUP3
000013ca: LT
000013cb: ISZERO
000013cc: PUSH2 0x13d6
000013cf: JUMPI
000013d0: PUSH1 0x20
000013d2: SWAP2
000013d3: DUP2
000013d4: MSTORE
000013d5: RETURN
000013d6: JUMPDEST
000013d7: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000013f8: PUSH1 0x00
000013fa: MSTORE
000013fb: PUSH1 0x21
000013fd: PUSH1 0x04
000013ff: MSTORE
00001400: PUSH1 0x24
00001402: PUSH1 0x00
00001404: REVERT
00001405: JUMPDEST
00001406: CALLVALUE
00001407: PUSH2 0x021d
0000140a: JUMPI
0000140b: PUSH1 0x00
0000140d: PUSH1 0x03
0000140f: NOT
00001410: CALLDATASIZE
00001411: ADD
00001412: SLT
00001413: PUSH2 0x021d
00001416: JUMPI
00001417: PUSH1 0x20
00001419: PUSH1 0xa0
0000141b: PUSH2 0x1422
0000141e: PUSH2 0x1ace
00001421: JUMP
00001422: JUMPDEST
00001423: DUP3
00001424: DUP2
00001425: MLOAD
00001426: SWAP2
00001427: ADD
00001428: KECCAK256
00001429: PUSH1 0x40
0000142b: MLOAD
0000142c: SWAP1
0000142d: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f
0000144e: DUP3
0000144f: MSTORE
00001450: DUP4
00001451: DUP3
00001452: ADD
00001453: MSTORE
00001454: PUSH32 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6
00001475: PUSH1 0x40
00001477: DUP3
00001478: ADD
00001479: MSTORE
0000147a: CHAINID
0000147b: PUSH1 0x60
0000147d: DUP3
0000147e: ADD
0000147f: MSTORE
00001480: ADDRESS
00001481: PUSH1 0x80
00001483: DUP3
00001484: ADD
00001485: MSTORE
00001486: KECCAK256
00001487: PUSH1 0x40
00001489: MLOAD
0000148a: SWAP1
0000148b: DUP2
0000148c: MSTORE
0000148d: RETURN
0000148e: JUMPDEST
0000148f: CALLVALUE
00001490: PUSH2 0x021d
00001493: JUMPI
00001494: PUSH1 0x00
00001496: PUSH1 0x03
00001498: NOT
00001499: CALLDATASIZE
0000149a: ADD
0000149b: SLT
0000149c: PUSH2 0x021d
0000149f: JUMPI
000014a0: PUSH1 0xff
000014a2: PUSH1 0x02
000014a4: SLOAD
000014a5: PUSH1 0x08
000014a7: SHR
000014a8: AND
000014a9: PUSH1 0xff
000014ab: DUP2
000014ac: GT
000014ad: PUSH2 0x14bb
000014b0: JUMPI
000014b1: PUSH1 0x20
000014b3: SWAP1
000014b4: PUSH1 0x40
000014b6: MLOAD
000014b7: SWAP1
000014b8: DUP2
000014b9: MSTORE
000014ba: RETURN
000014bb: JUMPDEST
000014bc: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
000014dd: PUSH1 0x00
000014df: MSTORE
000014e0: PUSH1 0x11
000014e2: PUSH1 0x04
000014e4: MSTORE
000014e5: PUSH1 0x24
000014e7: PUSH1 0x00
000014e9: REVERT
000014ea: JUMPDEST
000014eb: CALLVALUE
000014ec: PUSH2 0x021d
000014ef: JUMPI
000014f0: PUSH1 0x20
000014f2: PUSH1 0x03
000014f4: NOT
000014f5: CALLDATASIZE
000014f6: ADD
000014f7: SLT
000014f8: PUSH2 0x021d
000014fb: JUMPI
000014fc: PUSH2 0x1503
000014ff: PUSH2 0x1c91
00001502: JUMP
00001503: JUMPDEST
00001504: PUSH1 0x04
00001506: CALLDATALOAD
00001507: PUSH1 0x01
00001509: SSTORE
0000150a: STOP
0000150b: JUMPDEST
0000150c: PUSH1 0x00
0000150e: PUSH1 0x03
00001510: NOT
00001511: CALLDATASIZE
00001512: ADD
00001513: SLT
00001514: PUSH2 0x021d
00001517: JUMPI
00001518: PUSH4 0x389a75e1
0000151d: PUSH1 0x0c
0000151f: MSTORE
00001520: CALLER
00001521: PUSH1 0x00
00001523: MSTORE
00001524: PUSH3 0x02a300
00001528: TIMESTAMP
00001529: ADD
0000152a: PUSH1 0x20
0000152c: PUSH1 0x0c
0000152e: KECCAK256
0000152f: SSTORE
00001530: CALLER
00001531: PUSH32 0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d
00001552: PUSH1 0x00
00001554: DUP1
00001555: LOG2
00001556: STOP
00001557: JUMPDEST
00001558: CALLVALUE
00001559: PUSH2 0x021d
0000155c: JUMPI
0000155d: PUSH1 0x60
0000155f: PUSH1 0x03
00001561: NOT
00001562: CALLDATASIZE
00001563: ADD
00001564: SLT
00001565: PUSH2 0x021d
00001568: JUMPI
00001569: PUSH2 0x1570
0000156c: PUSH2 0x18f7
0000156f: JUMP
00001570: JUMPDEST
00001571: PUSH2 0x1578
00001574: PUSH2 0x191a
00001577: JUMP
00001578: JUMPDEST
00001579: SWAP1
0000157a: PUSH1 0x44
0000157c: CALLDATALOAD
0000157d: SWAP2
0000157e: DUP2
0000157f: PUSH1 0x60
00001581: SHL
00001582: PUSH1 0x20
00001584: SWAP4
00001585: CALLER
00001586: DUP6
00001587: MSTORE
00001588: PUSH1 0x0c
0000158a: SWAP2
0000158b: PUSH4 0x7f5e9f20
00001590: DUP2
00001591: OR
00001592: DUP4
00001593: MSTORE
00001594: PUSH1 0x34
00001596: DUP4
00001597: KECCAK256
00001598: SWAP1
00001599: DUP2
0000159a: SLOAD
0000159b: SWAP2
0000159c: PUSH1 0x01
0000159e: DUP4
0000159f: ADD
000015a0: PUSH2 0x1617
000015a3: JUMPI
000015a4: JUMPDEST
000015a5: POP
000015a6: PUSH4 0x87a211a2
000015ab: OR
000015ac: DUP4
000015ad: MSTORE
000015ae: POP
000015af: DUP5
000015b0: DUP3
000015b1: KECCAK256
000015b2: DUP1
000015b3: SLOAD
000015b4: SWAP4
000015b5: SWAP1
000015b6: DUP5
000015b7: DUP4
000015b8: GT
000015b9: PUSH2 0x0838
000015bc: JUMPI
000015bd: DUP3
000015be: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015d3: SWAP6
000015d4: SUB
000015d5: SWAP1
000015d6: SSTORE
000015d7: PUSH1 0x00
000015d9: MSTORE
000015da: DUP5
000015db: DUP3
000015dc: KECCAK256
000015dd: DUP2
000015de: DUP2
000015df: SLOAD
000015e0: ADD
000015e1: SWAP1
000015e2: SSTORE
000015e3: DUP5
000015e4: MSTORE
000015e5: MLOAD
000015e6: PUSH1 0x60
000015e8: SHR
000015e9: SWAP2
000015ea: AND
000015eb: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0000160c: DUP4
0000160d: DUP1
0000160e: LOG3
0000160f: PUSH1 0x40
00001611: MLOAD
00001612: PUSH1 0x01
00001614: DUP2
00001615: MSTORE
00001616: RETURN
00001617: JUMPDEST
00001618: DUP3
00001619: DUP5
0000161a: GT
0000161b: PUSH2 0x162e
0000161e: JUMPI
0000161f: DUP4
00001620: PUSH4 0x87a211a2
00001625: SWAP4
00001626: SUB
00001627: SWAP1
00001628: SSTORE
00001629: DUP8
0000162a: PUSH2 0x15a4
0000162d: JUMP
0000162e: JUMPDEST
0000162f: PUSH4 0x13be252b
00001634: PUSH1 0x00
00001636: MSTORE
00001637: PUSH1 0x04
00001639: PUSH1 0x1c
0000163b: REVERT
0000163c: JUMPDEST
0000163d: CALLVALUE
0000163e: PUSH2 0x021d
00001641: JUMPI
00001642: PUSH1 0x00
00001644: PUSH1 0x03
00001646: NOT
00001647: CALLDATASIZE
00001648: ADD
00001649: SLT
0000164a: PUSH2 0x021d
0000164d: JUMPI
0000164e: PUSH1 0x20
00001650: PUSH1 0x01
00001652: SLOAD
00001653: PUSH1 0x40
00001655: MLOAD
00001656: SWAP1
00001657: DUP2
00001658: MSTORE
00001659: RETURN
0000165a: JUMPDEST
0000165b: CALLVALUE
0000165c: PUSH2 0x021d
0000165f: JUMPI
00001660: PUSH1 0x00
00001662: PUSH1 0x03
00001664: NOT
00001665: CALLDATASIZE
00001666: ADD
00001667: SLT
00001668: PUSH2 0x021d
0000166b: JUMPI
0000166c: PUSH1 0x20
0000166e: PUSH9 0x05345cdf77eb68f44c
00001678: SLOAD
00001679: PUSH1 0x40
0000167b: MLOAD
0000167c: SWAP1
0000167d: DUP2
0000167e: MSTORE
0000167f: RETURN
00001680: JUMPDEST
00001681: CALLVALUE
00001682: PUSH2 0x021d
00001685: JUMPI
00001686: PUSH1 0x20
00001688: PUSH1 0x03
0000168a: NOT
0000168b: CALLDATASIZE
0000168c: ADD
0000168d: SLT
0000168e: PUSH2 0x021d
00001691: JUMPI
00001692: PUSH1 0x20
00001694: PUSH2 0x037f
00001697: PUSH1 0x04
00001699: CALLDATALOAD
0000169a: PUSH2 0x1be2
0000169d: JUMP
0000169e: JUMPDEST
0000169f: CALLVALUE
000016a0: PUSH2 0x021d
000016a3: JUMPI
000016a4: PUSH1 0x40
000016a6: PUSH1 0x03
000016a8: NOT
000016a9: CALLDATASIZE
000016aa: ADD
000016ab: SLT
000016ac: PUSH2 0x021d
000016af: JUMPI
000016b0: PUSH2 0x16b7
000016b3: PUSH2 0x18f7
000016b6: JUMP
000016b7: JUMPDEST
000016b8: PUSH1 0x24
000016ba: CALLDATALOAD
000016bb: SWAP1
000016bc: PUSH1 0x20
000016be: MSTORE
000016bf: PUSH4 0x7f5e9f20
000016c4: PUSH1 0x0c
000016c6: MSTORE
000016c7: CALLER
000016c8: PUSH1 0x00
000016ca: MSTORE
000016cb: DUP1
000016cc: PUSH1 0x34
000016ce: PUSH1 0x0c
000016d0: KECCAK256
000016d1: SSTORE
000016d2: PUSH1 0x00
000016d4: MSTORE
000016d5: PUSH1 0x2c
000016d7: MLOAD
000016d8: PUSH1 0x60
000016da: SHR
000016db: CALLER
000016dc: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
000016fd: PUSH1 0x20
000016ff: PUSH1 0x00
00001701: LOG3
00001702: PUSH1 0x20
00001704: PUSH1 0x40
00001706: MLOAD
00001707: PUSH1 0x01
00001709: DUP2
0000170a: MSTORE
0000170b: RETURN
0000170c: JUMPDEST
0000170d: CALLVALUE
0000170e: PUSH2 0x021d
00001711: JUMPI
00001712: PUSH1 0x00
00001714: PUSH1 0x03
00001716: NOT
00001717: CALLDATASIZE
00001718: ADD
00001719: SLT
0000171a: PUSH2 0x021d
0000171d: JUMPI
0000171e: PUSH2 0x08a1
00001721: PUSH2 0x0895
00001724: PUSH2 0x1ace
00001727: JUMP
00001728: JUMPDEST
00001729: CALLVALUE
0000172a: PUSH2 0x021d
0000172d: JUMPI
0000172e: PUSH1 0x20
00001730: PUSH1 0x03
00001732: NOT
00001733: CALLDATASIZE
00001734: ADD
00001735: SLT
00001736: PUSH2 0x021d
00001739: JUMPI
0000173a: PUSH1 0x04
0000173c: CALLDATALOAD
0000173d: DUP1
0000173e: ISZERO
0000173f: ISZERO
00001740: DUP2
00001741: SUB
00001742: PUSH2 0x021d
00001745: JUMPI
00001746: PUSH2 0x174d
00001749: PUSH2 0x1c91
0000174c: JUMP
0000174d: JUMPDEST
0000174e: ISZERO
0000174f: PUSH2 0x17d0
00001752: JUMPI
00001753: PUSH2 0x175a
00001756: PUSH2 0x1db6
00001759: JUMP
0000175a: JUMPDEST
0000175b: PUSH32 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300
0000177c: PUSH1 0x01
0000177e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
0000179f: DUP3
000017a0: SLOAD
000017a1: AND
000017a2: OR
000017a3: SWAP1
000017a4: SSTORE
000017a5: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258
000017c6: PUSH1 0x20
000017c8: PUSH1 0x40
000017ca: MLOAD
000017cb: CALLER
000017cc: DUP2
000017cd: MSTORE
000017ce: LOG1
000017cf: STOP
000017d0: JUMPDEST
000017d1: PUSH32 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300
000017f2: DUP1
000017f3: SLOAD
000017f4: PUSH1 0xff
000017f6: DUP2
000017f7: AND
000017f8: ISZERO
000017f9: PUSH2 0x184c
000017fc: JUMPI
000017fd: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
0000181e: AND
0000181f: SWAP1
00001820: SSTORE
00001821: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa
00001842: PUSH1 0x20
00001844: PUSH1 0x40
00001846: MLOAD
00001847: CALLER
00001848: DUP2
00001849: MSTORE
0000184a: LOG1
0000184b: STOP
0000184c: JUMPDEST
0000184d: PUSH1 0x04
0000184f: PUSH1 0x40
00001851: MLOAD
00001852: PUSH32 0x8dfc202b00000000000000000000000000000000000000000000000000000000
00001873: DUP2
00001874: MSTORE
00001875: REVERT
00001876: JUMPDEST
00001877: CALLVALUE
00001878: PUSH2 0x021d
0000187b: JUMPI
0000187c: PUSH1 0x00
0000187e: PUSH1 0x03
00001880: NOT
00001881: CALLDATASIZE
00001882: ADD
00001883: SLT
00001884: PUSH2 0x021d
00001887: JUMPI
00001888: PUSH1 0x20
0000188a: PUSH2 0x037f
0000188d: PUSH2 0x1a35
00001890: JUMP
00001891: JUMPDEST
00001892: PUSH1 0x20
00001894: DUP1
00001895: DUP3
00001896: MSTORE
00001897: DUP3
00001898: MLOAD
00001899: DUP2
0000189a: DUP4
0000189b: ADD
0000189c: DUP2
0000189d: SWAP1
0000189e: MSTORE
0000189f: SWAP4
000018a0: SWAP3
000018a1: PUSH1 0x00
000018a3: JUMPDEST
000018a4: DUP6
000018a5: DUP2
000018a6: LT
000018a7: PUSH2 0x18e3
000018aa: JUMPI
000018ab: POP
000018ac: POP
000018ad: POP
000018ae: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000018cf: PUSH1 0x1f
000018d1: DUP5
000018d2: PUSH1 0x00
000018d4: PUSH1 0x40
000018d6: DUP1
000018d7: SWAP7
000018d8: SWAP8
000018d9: DUP7
000018da: ADD
000018db: ADD
000018dc: MSTORE
000018dd: ADD
000018de: AND
000018df: ADD
000018e0: ADD
000018e1: SWAP1
000018e2: JUMP
000018e3: JUMPDEST
000018e4: DUP2
000018e5: DUP2
000018e6: ADD
000018e7: DUP4
000018e8: ADD
000018e9: MLOAD
000018ea: DUP5
000018eb: DUP3
000018ec: ADD
000018ed: PUSH1 0x40
000018ef: ADD
000018f0: MSTORE
000018f1: DUP3
000018f2: ADD
000018f3: PUSH2 0x18a3
000018f6: JUMP
000018f7: JUMPDEST
000018f8: PUSH1 0x04
000018fa: CALLDATALOAD
000018fb: SWAP1
000018fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001911: DUP3
00001912: AND
00001913: DUP3
00001914: SUB
00001915: PUSH2 0x021d
00001918: JUMPI
00001919: JUMP
0000191a: JUMPDEST
0000191b: PUSH1 0x24
0000191d: CALLDATALOAD
0000191e: SWAP1
0000191f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001934: DUP3
00001935: AND
00001936: DUP3
00001937: SUB
00001938: PUSH2 0x021d
0000193b: JUMPI
0000193c: JUMP
0000193d: JUMPDEST
0000193e: SWAP1
0000193f: PUSH1 0x1f
00001941: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00001962: SWAP2
00001963: ADD
00001964: AND
00001965: DUP2
00001966: ADD
00001967: SWAP1
00001968: DUP2
00001969: LT
0000196a: PUSH8 0xffffffffffffffff
00001973: DUP3
00001974: GT
00001975: OR
00001976: PUSH2 0x0f45
00001979: JUMPI
0000197a: PUSH1 0x40
0000197c: MSTORE
0000197d: JUMP
0000197e: JUMPDEST
0000197f: DUP2
00001980: PUSH1 0x1f
00001982: DUP3
00001983: ADD
00001984: SLT
00001985: ISZERO
00001986: PUSH2 0x021d
00001989: JUMPI
0000198a: DUP1
0000198b: CALLDATALOAD
0000198c: SWAP1
0000198d: PUSH8 0xffffffffffffffff
00001996: DUP3
00001997: GT
00001998: PUSH2 0x0f45
0000199b: JUMPI
0000199c: PUSH1 0x40
0000199e: MLOAD
0000199f: SWAP3
000019a0: PUSH2 0x19d1
000019a3: PUSH1 0x20
000019a5: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
000019c6: PUSH1 0x1f
000019c8: DUP7
000019c9: ADD
000019ca: AND
000019cb: ADD
000019cc: DUP6
000019cd: PUSH2 0x193d
000019d0: JUMP
000019d1: JUMPDEST
000019d2: DUP3
000019d3: DUP5
000019d4: MSTORE
000019d5: PUSH1 0x20
000019d7: DUP4
000019d8: DUP4
000019d9: ADD
000019da: ADD
000019db: GT
000019dc: PUSH2 0x021d
000019df: JUMPI
000019e0: DUP2
000019e1: PUSH1 0x00
000019e3: SWAP3
000019e4: PUSH1 0x20
000019e6: DUP1
000019e7: SWAP4
000019e8: ADD
000019e9: DUP4
000019ea: DUP7
000019eb: ADD
000019ec: CALLDATACOPY
000019ed: DUP4
000019ee: ADD
000019ef: ADD
000019f0: MSTORE
000019f1: SWAP1
000019f2: JUMP
000019f3: JUMPDEST
000019f4: PUSH1 0x03
000019f6: NOT
000019f7: PUSH1 0x60
000019f9: SWAP2
000019fa: ADD
000019fb: SLT
000019fc: PUSH2 0x021d
000019ff: JUMPI
00001a00: PUSH1 0x04
00001a02: CALLDATALOAD
00001a03: SWAP1
00001a04: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a19: SWAP1
00001a1a: PUSH1 0x24
00001a1c: CALLDATALOAD
00001a1d: DUP3
00001a1e: DUP2
00001a1f: AND
00001a20: DUP2
00001a21: SUB
00001a22: PUSH2 0x021d
00001a25: JUMPI
00001a26: SWAP2
00001a27: PUSH1 0x44
00001a29: CALLDATALOAD
00001a2a: SWAP1
00001a2b: DUP2
00001a2c: AND
00001a2d: DUP2
00001a2e: SUB
00001a2f: PUSH2 0x021d
00001a32: JUMPI
00001a33: SWAP1
00001a34: JUMP
00001a35: JUMPDEST
00001a36: PUSH1 0x20
00001a38: DUP1
00001a39: PUSH1 0x24
00001a3b: PUSH1 0x10
00001a3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a52: PUSH1 0x00
00001a54: SLOAD
00001a55: AND
00001a56: ADDRESS
00001a57: PUSH1 0x14
00001a59: MSTORE
00001a5a: PUSH16 0x70a08231000000000000000000000000
00001a6b: PUSH1 0x00
00001a6d: MSTORE
00001a6e: GAS
00001a6f: STATICCALL
00001a70: PUSH1 0x1f
00001a72: RETURNDATASIZE
00001a73: GT
00001a74: AND
00001a75: PUSH1 0x20
00001a77: MLOAD
00001a78: MUL
00001a79: SWAP1
00001a7a: JUMP
00001a7b: JUMPDEST
00001a7c: SWAP1
00001a7d: PUSH1 0x01
00001a7f: DUP3
00001a80: DUP2
00001a81: SHR
00001a82: SWAP3
00001a83: AND
00001a84: DUP1
00001a85: ISZERO
00001a86: PUSH2 0x1ac4
00001a89: JUMPI
00001a8a: JUMPDEST
00001a8b: PUSH1 0x20
00001a8d: DUP4
00001a8e: LT
00001a8f: EQ
00001a90: PUSH2 0x1a95
00001a93: JUMPI
00001a94: JUMP
00001a95: JUMPDEST
00001a96: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00001ab7: PUSH1 0x00
00001ab9: MSTORE
00001aba: PUSH1 0x22
00001abc: PUSH1 0x04
00001abe: MSTORE
00001abf: PUSH1 0x24
00001ac1: PUSH1 0x00
00001ac3: REVERT
00001ac4: JUMPDEST
00001ac5: SWAP2
00001ac6: PUSH1 0x7f
00001ac8: AND
00001ac9: SWAP2
00001aca: PUSH2 0x1a8a
00001acd: JUMP
00001ace: JUMPDEST
00001acf: PUSH1 0x40
00001ad1: MLOAD
00001ad2: SWAP1
00001ad3: PUSH1 0x00
00001ad5: DUP3
00001ad6: PUSH1 0x03
00001ad8: SLOAD
00001ad9: SWAP2
00001ada: PUSH2 0x1ae2
00001add: DUP4
00001ade: PUSH2 0x1a7b
00001ae1: JUMP
00001ae2: JUMPDEST
00001ae3: DUP1
00001ae4: DUP4
00001ae5: MSTORE
00001ae6: SWAP3
00001ae7: PUSH1 0x20
00001ae9: SWAP1
00001aea: PUSH1 0x01
00001aec: SWAP1
00001aed: DUP2
00001aee: DUP2
00001aef: AND
00001af0: SWAP1
00001af1: DUP2
00001af2: ISZERO
00001af3: PUSH2 0x1b70
00001af6: JUMPI
00001af7: POP
00001af8: PUSH1 0x01
00001afa: EQ
00001afb: PUSH2 0x1b0f
00001afe: JUMPI
00001aff: JUMPDEST
00001b00: POP
00001b01: POP
00001b02: PUSH2 0x1b0d
00001b05: SWAP3
00001b06: POP
00001b07: SUB
00001b08: DUP4
00001b09: PUSH2 0x193d
00001b0c: JUMP
00001b0d: JUMPDEST
00001b0e: JUMP
00001b0f: JUMPDEST
00001b10: SWAP2
00001b11: POP
00001b12: SWAP3
00001b13: PUSH1 0x03
00001b15: PUSH1 0x00
00001b17: MSTORE
00001b18: PUSH32 0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b
00001b39: SWAP4
00001b3a: PUSH1 0x00
00001b3c: SWAP3
00001b3d: JUMPDEST
00001b3e: DUP3
00001b3f: DUP5
00001b40: LT
00001b41: PUSH2 0x1b58
00001b44: JUMPI
00001b45: POP
00001b46: PUSH2 0x1b0d
00001b49: SWAP5
00001b4a: POP
00001b4b: POP
00001b4c: POP
00001b4d: DUP2
00001b4e: ADD
00001b4f: PUSH1 0x20
00001b51: ADD
00001b52: CODESIZE
00001b53: DUP1
00001b54: PUSH2 0x1aff
00001b57: JUMP
00001b58: JUMPDEST
00001b59: DUP6
00001b5a: SLOAD
00001b5b: DUP9
00001b5c: DUP6
00001b5d: ADD
00001b5e: DUP4
00001b5f: ADD
00001b60: MSTORE
00001b61: SWAP5
00001b62: DUP6
00001b63: ADD
00001b64: SWAP5
00001b65: DUP8
00001b66: SWAP5
00001b67: POP
00001b68: SWAP3
00001b69: DUP2
00001b6a: ADD
00001b6b: SWAP3
00001b6c: PUSH2 0x1b3d
00001b6f: JUMP
00001b70: JUMPDEST
00001b71: SWAP1
00001b72: POP
00001b73: PUSH1 0x20
00001b75: SWAP4
00001b76: POP
00001b77: PUSH2 0x1b0d
00001b7a: SWAP6
00001b7b: SWAP3
00001b7c: POP
00001b7d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
00001b9e: SWAP2
00001b9f: POP
00001ba0: AND
00001ba1: DUP3
00001ba2: DUP5
00001ba3: ADD
00001ba4: MSTORE
00001ba5: ISZERO
00001ba6: ISZERO
00001ba7: PUSH1 0x05
00001ba9: SHL
00001baa: DUP3
00001bab: ADD
00001bac: ADD
00001bad: CODESIZE
00001bae: DUP1
00001baf: PUSH2 0x1aff
00001bb2: JUMP
00001bb3: JUMPDEST
00001bb4: PUSH2 0x1bbb
00001bb7: PUSH2 0x1a35
00001bba: JUMP
00001bbb: JUMPDEST
00001bbc: SWAP1
00001bbd: PUSH1 0x01
00001bbf: DUP3
00001bc0: ADD
00001bc1: DUP1
00001bc2: SWAP3
00001bc3: GT
00001bc4: PUSH2 0x14bb
00001bc7: JUMPI
00001bc8: PUSH2 0x1bdf
00001bcb: SWAP2
00001bcc: PUSH1 0x01
00001bce: PUSH9 0x05345cdf77eb68f44c
00001bd8: SLOAD
00001bd9: ADD
00001bda: SWAP2
00001bdb: PUSH2 0x1cc9
00001bde: JUMP
00001bdf: JUMPDEST
00001be0: SWAP1
00001be1: JUMP
00001be2: JUMPDEST
00001be3: PUSH9 0x05345cdf77eb68f44c
00001bed: SLOAD
00001bee: SWAP1
00001bef: PUSH1 0x01
00001bf1: DUP3
00001bf2: ADD
00001bf3: DUP1
00001bf4: SWAP3
00001bf5: GT
00001bf6: PUSH2 0x14bb
00001bf9: JUMPI
00001bfa: PUSH2 0x1bdf
00001bfd: SWAP2
00001bfe: PUSH1 0x01
00001c00: PUSH2 0x1c07
00001c03: PUSH2 0x1a35
00001c06: JUMP
00001c07: JUMPDEST
00001c08: ADD
00001c09: SWAP2
00001c0a: PUSH2 0x1d85
00001c0d: JUMP
00001c0e: JUMPDEST
00001c0f: PUSH1 0x01
00001c11: SLOAD
00001c12: PUSH2 0x1c19
00001c15: PUSH2 0x1a35
00001c18: JUMP
00001c19: JUMPDEST
00001c1a: DUP2
00001c1b: GT
00001c1c: PUSH2 0x1c25
00001c1f: JUMPI
00001c20: POP
00001c21: PUSH1 0x00
00001c23: SWAP1
00001c24: JUMP
00001c25: JUMPDEST
00001c26: PUSH2 0x1c2d
00001c29: PUSH2 0x1a35
00001c2c: JUMP
00001c2d: JUMPDEST
00001c2e: DUP2
00001c2f: SUB
00001c30: SWAP1
00001c31: DUP2
00001c32: GT
00001c33: PUSH2 0x14bb
00001c36: JUMPI
00001c37: SWAP1
00001c38: JUMP
00001c39: JUMPDEST
00001c3a: PUSH2 0x1c41
00001c3d: PUSH2 0x1a35
00001c40: JUMP
00001c41: JUMPDEST
00001c42: SWAP1
00001c43: PUSH1 0x01
00001c45: DUP3
00001c46: ADD
00001c47: DUP1
00001c48: SWAP3
00001c49: GT
00001c4a: PUSH2 0x14bb
00001c4d: JUMPI
00001c4e: PUSH2 0x1bdf
00001c51: SWAP2
00001c52: PUSH1 0x01
00001c54: PUSH9 0x05345cdf77eb68f44c
00001c5e: SLOAD
00001c5f: ADD
00001c60: SWAP2
00001c61: PUSH2 0x1d85
00001c64: JUMP
00001c65: JUMPDEST
00001c66: PUSH9 0x05345cdf77eb68f44c
00001c70: SLOAD
00001c71: SWAP1
00001c72: PUSH1 0x01
00001c74: DUP3
00001c75: ADD
00001c76: DUP1
00001c77: SWAP3
00001c78: GT
00001c79: PUSH2 0x14bb
00001c7c: JUMPI
00001c7d: PUSH2 0x1bdf
00001c80: SWAP2
00001c81: PUSH1 0x01
00001c83: PUSH2 0x1c8a
00001c86: PUSH2 0x1a35
00001c89: JUMP
00001c8a: JUMPDEST
00001c8b: ADD
00001c8c: SWAP2
00001c8d: PUSH2 0x1cc9
00001c90: JUMP
00001c91: JUMPDEST
00001c92: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927
00001cb3: SLOAD
00001cb4: CALLER
00001cb5: SUB
00001cb6: PUSH2 0x1cbb
00001cb9: JUMPI
00001cba: JUMP
00001cbb: JUMPDEST
00001cbc: PUSH4 0x82b42900
00001cc1: PUSH1 0x00
00001cc3: MSTORE
00001cc4: PUSH1 0x04
00001cc6: PUSH1 0x1c
00001cc8: REVERT
00001cc9: JUMPDEST
00001cca: SWAP1
00001ccb: PUSH1 0x00
00001ccd: SWAP2
00001cce: DUP2
00001ccf: DUP2
00001cd0: MUL
00001cd1: SWAP2
00001cd2: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00001cf3: DUP2
00001cf4: DUP4
00001cf5: MULMOD
00001cf6: SWAP2
00001cf7: DUP4
00001cf8: DUP4
00001cf9: LT
00001cfa: DUP5
00001cfb: ADD
00001cfc: DUP1
00001cfd: DUP5
00001cfe: SUB
00001cff: SWAP4
00001d00: EQ
00001d01: PUSH2 0x1d69
00001d04: JUMPI
00001d05: DUP3
00001d06: DUP7
00001d07: GT
00001d08: ISZERO
00001d09: PUSH2 0x1d5c
00001d0c: JUMPI
00001d0d: SWAP1
00001d0e: DUP6
00001d0f: SWAP2
00001d10: MULMOD
00001d11: SWAP2
00001d12: PUSH1 0x01
00001d14: DUP6
00001d15: DUP6
00001d16: SUB
00001d17: DUP7
00001d18: AND
00001d19: DUP1
00001d1a: SWAP7
00001d1b: DIV
00001d1c: PUSH1 0x02
00001d1e: DUP2
00001d1f: PUSH1 0x03
00001d21: MUL
00001d22: DUP2
00001d23: XOR
00001d24: DUP1
00001d25: DUP4
00001d26: MUL
00001d27: DUP3
00001d28: SUB
00001d29: MUL
00001d2a: DUP1
00001d2b: DUP4
00001d2c: MUL
00001d2d: DUP3
00001d2e: SUB
00001d2f: MUL
00001d30: DUP1
00001d31: DUP4
00001d32: MUL
00001d33: DUP3
00001d34: SUB
00001d35: MUL
00001d36: DUP1
00001d37: DUP4
00001d38: MUL
00001d39: DUP3
00001d3a: SUB
00001d3b: MUL
00001d3c: DUP1
00001d3d: DUP4
00001d3e: MUL
00001d3f: DUP3
00001d40: SUB
00001d41: MUL
00001d42: DUP1
00001d43: SWAP3
00001d44: MUL
00001d45: SWAP1
00001d46: SUB
00001d47: MUL
00001d48: SWAP6
00001d49: DUP1
00001d4a: DUP1
00001d4b: DUP7
00001d4c: DUP6
00001d4d: SUB
00001d4e: DIV
00001d4f: SWAP7
00001d50: SUB
00001d51: DIV
00001d52: ADD
00001d53: SWAP3
00001d54: GT
00001d55: SWAP1
00001d56: SUB
00001d57: MUL
00001d58: OR
00001d59: MUL
00001d5a: SWAP1
00001d5b: JUMP
00001d5c: JUMPDEST
00001d5d: PUSH4 0xae47f702
00001d62: DUP6
00001d63: MSTORE
00001d64: PUSH1 0x04
00001d66: PUSH1 0x1c
00001d68: REVERT
00001d69: JUMPDEST
00001d6a: POP
00001d6b: POP
00001d6c: POP
00001d6d: SWAP1
00001d6e: DUP3
00001d6f: ISZERO
00001d70: PUSH2 0x1d78
00001d73: JUMPI
00001d74: POP
00001d75: DIV
00001d76: SWAP1
00001d77: JUMP
00001d78: JUMPDEST
00001d79: PUSH4 0xae47f702
00001d7e: SWAP1
00001d7f: MSTORE
00001d80: PUSH1 0x04
00001d82: PUSH1 0x1c
00001d84: REVERT
00001d85: JUMPDEST
00001d86: SWAP3
00001d87: SWAP2
00001d88: SWAP1
00001d89: PUSH2 0x1d93
00001d8c: DUP3
00001d8d: DUP3
00001d8e: DUP7
00001d8f: PUSH2 0x1cc9
00001d92: JUMP
00001d93: JUMPDEST
00001d94: SWAP4
00001d95: MULMOD
00001d96: PUSH2 0x1d9b
00001d99: JUMPI
00001d9a: JUMP
00001d9b: JUMPDEST
00001d9c: SWAP1
00001d9d: PUSH1 0x01
00001d9f: ADD
00001da0: SWAP1
00001da1: DUP2
00001da2: ISZERO
00001da3: PUSH2 0x1da8
00001da6: JUMPI
00001da7: JUMP
00001da8: JUMPDEST
00001da9: PUSH4 0xae47f702
00001dae: PUSH1 0x00
00001db0: MSTORE
00001db1: PUSH1 0x04
00001db3: PUSH1 0x1c
00001db5: REVERT
00001db6: JUMPDEST
00001db7: PUSH1 0xff
00001db9: PUSH32 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300
00001dda: SLOAD
00001ddb: AND
00001ddc: PUSH2 0x1de1
00001ddf: JUMPI
00001de0: JUMP
00001de1: JUMPDEST
00001de2: PUSH1 0x04
00001de4: PUSH1 0x40
00001de6: MLOAD
00001de7: PUSH32 0xd93c066500000000000000000000000000000000000000000000000000000000
00001e08: DUP2
00001e09: MSTORE
00001e0a: REVERT
00001e0b: JUMPDEST
00001e0c: SWAP1
00001e0d: SWAP3
00001e0e: SWAP2
00001e0f: SWAP3
00001e10: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e25: SWAP4
00001e26: PUSH1 0x00
00001e28: SWAP4
00001e29: DUP6
00001e2a: DUP6
00001e2b: SLOAD
00001e2c: AND
00001e2d: PUSH1 0x20
00001e2f: DUP7
00001e30: PUSH1 0x64
00001e32: PUSH1 0x1c
00001e34: DUP3
00001e35: PUSH1 0x40
00001e37: MLOAD
00001e38: SWAP6
00001e39: DUP9
00001e3a: PUSH1 0x60
00001e3c: MSTORE
00001e3d: ADDRESS
00001e3e: PUSH1 0x40
00001e40: MSTORE
00001e41: DUP11
00001e42: PUSH1 0x60
00001e44: SHL
00001e45: PUSH1 0x2c
00001e47: MSTORE
00001e48: PUSH16 0x23b872dd000000000000000000000000
00001e59: PUSH1 0x0c
00001e5b: MSTORE
00001e5c: GAS
00001e5d: CALL
00001e5e: RETURNDATASIZE
00001e5f: ISZERO
00001e60: PUSH1 0x01
00001e62: DUP9
00001e63: MLOAD
00001e64: EQ
00001e65: OR
00001e66: AND
00001e67: ISZERO
00001e68: PUSH2 0x1f0f
00001e6b: JUMPI
00001e6c: DUP6
00001e6d: PUSH1 0x60
00001e6f: MSTORE
00001e70: PUSH1 0x40
00001e72: MSTORE
00001e73: PUSH9 0x05345cdf77eb68f44c
00001e7d: DUP1
00001e7e: SLOAD
00001e7f: SWAP1
00001e80: DUP3
00001e81: DUP3
00001e82: ADD
00001e83: SWAP2
00001e84: DUP3
00001e85: LT
00001e86: PUSH2 0x1f02
00001e89: JUMPI
00001e8a: SWAP2
00001e8b: PUSH32 0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7
00001eac: SWAP6
00001ead: SWAP4
00001eae: SWAP2
00001eaf: PUSH1 0x40
00001eb1: SWAP6
00001eb2: SWAP4
00001eb3: SSTORE
00001eb4: PUSH4 0x87a211a2
00001eb9: PUSH1 0x0c
00001ebb: MSTORE
00001ebc: DUP3
00001ebd: DUP8
00001ebe: MSTORE
00001ebf: PUSH1 0x20
00001ec1: PUSH1 0x0c
00001ec3: KECCAK256
00001ec4: DUP2
00001ec5: DUP2
00001ec6: SLOAD
00001ec7: ADD
00001ec8: SWAP1
00001ec9: SSTORE
00001eca: PUSH1 0x20
00001ecc: MSTORE
00001ecd: PUSH1 0x0c
00001ecf: MLOAD
00001ed0: PUSH1 0x60
00001ed2: SHR
00001ed3: DUP7
00001ed4: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00001ef5: PUSH1 0x20
00001ef7: DUP1
00001ef8: LOG3
00001ef9: DUP6
00001efa: MSTORE
00001efb: DUP6
00001efc: AND
00001efd: SWAP5
00001efe: AND
00001eff: SWAP3
00001f00: LOG3
00001f01: JUMP
00001f02: JUMPDEST
00001f03: PUSH4 0xe5cfe957
00001f08: DUP8
00001f09: MSTORE
00001f0a: PUSH1 0x04
00001f0c: PUSH1 0x1c
00001f0e: REVERT
00001f0f: JUMPDEST
00001f10: PUSH4 0x7939f424
00001f15: DUP7
00001f16: MSTORE
00001f17: PUSH1 0x04
00001f19: PUSH1 0x1c
00001f1b: REVERT
00001f1c: JUMPDEST
00001f1d: PUSH1 0xff
00001f1f: PUSH32 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
00001f40: SLOAD
00001f41: PUSH1 0x40
00001f43: SHR
00001f44: AND
00001f45: ISZERO
00001f46: PUSH2 0x1f4b
00001f49: JUMPI
00001f4a: JUMP
00001f4b: JUMPDEST
00001f4c: PUSH1 0x04
00001f4e: PUSH1 0x40
00001f50: MLOAD
00001f51: PUSH32 0xd7e6bcf800000000000000000000000000000000000000000000000000000000
00001f72: DUP2
00001f73: MSTORE
00001f74: REVERT
00001f75: JUMPDEST
00001f76: SWAP1
00001f77: SWAP4
00001f78: SWAP3
00001f79: SWAP2
00001f7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f8f: SWAP4
00001f90: DUP5
00001f91: DUP3
00001f92: AND
00001f93: SWAP4
00001f94: DUP5
00001f95: DUP7
00001f96: DUP6
00001f97: AND
00001f98: SUB
00001f99: PUSH2 0x2084
00001f9c: JUMPI
00001f9d: JUMPDEST
00001f9e: PUSH4 0x87a211a2
00001fa3: PUSH1 0x0c
00001fa5: MSTORE
00001fa6: PUSH1 0x00
00001fa8: SWAP5
00001fa9: DUP4
00001faa: DUP7
00001fab: MSTORE
00001fac: PUSH1 0x20
00001fae: PUSH1 0x0c
00001fb0: KECCAK256
00001fb1: DUP1
00001fb2: SLOAD
00001fb3: DUP1
00001fb4: DUP6
00001fb5: GT
00001fb6: PUSH2 0x2077
00001fb9: JUMPI
00001fba: SWAP1
00001fbb: DUP5
00001fbc: DUP9
00001fbd: SWAP4
00001fbe: SWAP3
00001fbf: SUB
00001fc0: SWAP1
00001fc1: SSTORE
00001fc2: PUSH9 0x05345cdf77eb68f44c
00001fcc: DUP5
00001fcd: DUP2
00001fce: SLOAD
00001fcf: SUB
00001fd0: SWAP1
00001fd1: SSTORE
00001fd2: DUP4
00001fd3: DUP3
00001fd4: MSTORE
00001fd5: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00001ff6: PUSH1 0x20
00001ff8: DUP4
00001ff9: LOG3
00001ffa: PUSH1 0x20
00001ffc: DUP6
00001ffd: PUSH1 0x44
00001fff: PUSH1 0x10
00002001: DUP3
00002002: DUP11
00002003: DUP2
00002004: SLOAD
00002005: AND
00002006: DUP13
00002007: PUSH1 0x14
00002009: MSTORE
0000200a: DUP7
0000200b: PUSH1 0x34
0000200d: MSTORE
0000200e: PUSH16 0xa9059cbb000000000000000000000000
0000201f: DUP3
00002020: MSTORE
00002021: GAS
00002022: CALL
00002023: RETURNDATASIZE
00002024: ISZERO
00002025: PUSH1 0x01
00002027: DUP8
00002028: MLOAD
00002029: EQ
0000202a: OR
0000202b: AND
0000202c: ISZERO
0000202d: PUSH2 0x206a
00002030: JUMPI
00002031: PUSH1 0x34
00002033: DUP6
00002034: SWAP1
00002035: MSTORE
00002036: DUP5
00002037: MSTORE
00002038: PUSH1 0x20
0000203a: MSTORE
0000203b: DUP4
0000203c: AND
0000203d: SWAP4
0000203e: DUP4
0000203f: AND
00002040: SWAP3
00002041: AND
00002042: SWAP1
00002043: PUSH32 0xfbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db
00002064: SWAP1
00002065: PUSH1 0x40
00002067: SWAP1
00002068: LOG4
00002069: JUMP
0000206a: JUMPDEST
0000206b: PUSH4 0x90b8ec18
00002070: DUP6
00002071: MSTORE
00002072: PUSH1 0x04
00002074: PUSH1 0x1c
00002076: REVERT
00002077: JUMPDEST
00002078: PUSH4 0xf4d678b8
0000207d: DUP9
0000207e: MSTORE
0000207f: PUSH1 0x04
00002081: PUSH1 0x1c
00002083: REVERT
00002084: JUMPDEST
00002085: DUP4
00002086: PUSH1 0x20
00002088: MSTORE
00002089: PUSH4 0x7f5e9f20
0000208e: PUSH1 0x0c
00002090: MSTORE
00002091: DUP3
00002092: PUSH1 0x00
00002094: MSTORE
00002095: PUSH1 0x34
00002097: PUSH1 0x0c
00002099: KECCAK256
0000209a: DUP1
0000209b: SLOAD
0000209c: PUSH1 0x01
0000209e: DUP2
0000209f: ADD
000020a0: PUSH2 0x20ab
000020a3: JUMPI
000020a4: JUMPDEST
000020a5: POP
000020a6: POP
000020a7: PUSH2 0x1f9d
000020aa: JUMP
000020ab: JUMPDEST
000020ac: DUP1
000020ad: DUP5
000020ae: GT
000020af: PUSH2 0x162e
000020b2: JUMPI
000020b3: DUP4
000020b4: SWAP1
000020b5: SUB
000020b6: SWAP1
000020b7: SSTORE
000020b8: CODESIZE
000020b9: DUP1
000020ba: PUSH2 0x20a4
000020bd: JUMP
000020be: INVALID
000020bf: LOG2
000020c0: PUSH5 0x6970667358
000020c6: UNKNOWN(0x22)
000020c7: SLT
000020c8: KECCAK256
000020c9: SIGNEXTEND
000020ca: PUSH14 0x26a05b96f4fdfa621edb59c61f5b
000020d9: UNKNOWN(0xD6)
000020da: PUSH8 0xf62f5cf1c83470a4
000020e3: DUP7
000020e4: PUSH29

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x92cd7b7ad9b34a743cc589907956d226e1c928db8abb101a6d81effb9f9a391b
call_targets: 0x46c64c1630f320b890d765e7c6f901574924b0c7
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x92cd7b7ad9b34a743cc589907956d226e1c928db8abb101a6d81effb9f9a391b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x46c64c1630f320b890d765e7c6f901574924b0c7"
    ],
    "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": "0x01e1d114",
            "selector": "0x01e1d114",
            "calldata_variants": [
                "0x01e1d114",
                "0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x02329a29",
            "selector": "0x02329a29",
            "calldata_variants": [
                "0x02329a29",
                "0x02329a290000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x07a2d13a",
            "selector": "0x07a2d13a",
            "calldata_variants": [
                "0x07a2d13a",
                "0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a28a477",
            "selector": "0x0a28a477",
            "calldata_variants": [
                "0x0a28a477",
                "0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22da98e7",
            "selector": "0x22da98e7",
            "calldata_variants": [
                "0x22da98e7",
                "0x22da98e70000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 7773,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "constant",
            "target_expression_category": "computed"
        },
        {
            "pc": 8226,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": []
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x92cd7b7ad9b34a743cc589907956d226e1c928db8abb101a6d81effb9f9a391b
call_targets: 0x46c64c1630f320b890d765e7c6f901574924b0c7
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x92cd7b7ad9b34a743cc589907956d226e1c928db8abb101a6d81effb9f9a391b",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x46c64c1630f320b890d765e7c6f901574924b0c7"
    ],
    "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": "0x01e1d114",
            "selector": "0x01e1d114",
            "calldata_variants": [
                "0x01e1d114",
                "0x01e1d1140000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x02329a29",
            "selector": "0x02329a29",
            "calldata_variants": [
                "0x02329a29",
                "0x02329a290000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x07a2d13a",
            "selector": "0x07a2d13a",
            "calldata_variants": [
                "0x07a2d13a",
                "0x07a2d13a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0a28a477",
            "selector": "0x0a28a477",
            "calldata_variants": [
                "0x0a28a477",
                "0x0a28a4770000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22da98e7",
            "selector": "0x22da98e7",
            "calldata_variants": [
                "0x22da98e7",
                "0x22da98e70000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 7773,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "constant",
            "target_expression_category": "computed"
        },
        {
            "pc": 8226,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [],
    "untrusted_call_count": 2
}
medium other codex Asset limit can be bypassed via mint() 75 no
view
evidence_json
{
    "evidence": "deposit() enforces maxDeposit (assetLimit) while mint() delegates to super.mint without any assetLimit check; maxMint remains the ERC4626 default (unlimited).",
    "locations": [
        "src/Vault.sol:56",
        "src/Vault.sol:72",
        "src/Vault.sol:118"
    ],
    "recommendation": "Override maxMint to enforce the same cap as maxDeposit (e.g., derive maxShares from remaining asset capacity), or add an explicit assetLimit check in mint using previewMint().",
    "exploit_scenario": "If the system relies on assetLimit to cap TVL, the owner/supervisor can call mint() to create shares beyond the limit because maxMint is not overridden. Any flow that uses mint instead of deposit will ignore the cap, defeating exposure controls."
}
medium upgradeability codex Proxy can be seized if initialize is not called during deployment 75 no
view
evidence_json
{
    "evidence": "constructor disables initializers on the implementation, while initialize() remains externally callable on the proxy and sets owner/depositToken.",
    "locations": [
        "src/Vault.sol:26",
        "src/Vault.sol:30"
    ],
    "recommendation": "Ensure proxy deployments perform initialization atomically (constructor calldata or factory). Consider adding deployment tooling checks to prevent uninitialized proxies.",
    "exploit_scenario": "Because initialize() is external and only protected by the initializer modifier, a proxy deployed without immediate initialization can be claimed by any attacker who sets themselves as owner and configures depositToken, then pauses or drains via privileged calls."
}